<?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>87503</bug_id>
          
          <creation_ts>2012-05-25 08:16:32 -0700</creation_ts>
          <short_desc>[Gtk] Add support for the Gamepad API</short_desc>
          <delta_ts>2012-06-27 02:19:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>84863</dependson>
    
    <dependson>89566</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>abarth</cc>
    
    <cc>cgarcia</cc>
    
    <cc>code.vineet</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>633940</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-05-25 08:16:32 -0700</bug_when>
    <thetext>This bug covers adding support for the Gamepad API[1] to the Gtk port. The implementation will rely on GUdev and GIO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633949</commentid>
    <comment_count>1</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-05-25 08:23:32 -0700</bug_when>
    <thetext>Currently the implementation depends on two bugs to be resolved:
- bug #84929, the patch there will add the majority of support for compiling the gamepad module for Gtk
- bug #84863, this will add proper support for the T[] attributes in IDLs, such as &apos;axes&apos; and &apos;buttons&apos; attributes in Gamepad.idl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634118</commentid>
    <comment_count>2</comment_count>
      <attachid>144109</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-05-25 11:41:50 -0700</bug_when>
    <thetext>Created attachment 144109
WIP patch

This is just a work-in-progress patch. It currently holds all the changes that are scheduled to be reviewed in bug #84929 and landed separately and bypasses the issue covered in bug #84863 by switching the &apos;axes&apos; and &apos;buttons&apos; attributes&apos; types to sequence&lt;float&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635590</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-28 22:51:49 -0700</bug_when>
    <thetext>Attachment 144109 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/WebCore/ChangeLog&apos;, u...&quot; exit_code: 1
Source/WebCore/platform/gtk/GamepadsGtk.cpp:124:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/platform/gtk/GamepadsGtk.cpp:188:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 3 in 11 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>635594</commentid>
    <comment_count>4</comment_count>
      <attachid>144109</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-28 23:02:07 -0700</bug_when>
    <thetext>Comment on attachment 144109
WIP patch

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

&gt; Source/WebCore/Modules/gamepad/Gamepad.idl:35
&gt; -        readonly attribute float[] axes;
&gt; -        readonly attribute float[] buttons;
&gt; +        readonly attribute sequence&lt;float&gt; axes;
&gt; +        readonly attribute sequence&lt;float&gt; buttons;

Is this change correct?  We should check the spec.  Sadly, float[] and sequence&lt;float&gt; are subtly different.  I think you&apos;re right through that most attributes use sequence&lt;float&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635607</commentid>
    <comment_count>5</comment_count>
      <attachid>144109</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-28 23:21:07 -0700</bug_when>
    <thetext>Comment on attachment 144109
WIP patch

Attachment 144109 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12853137</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635714</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-05-29 01:32:58 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 144109 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144109&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/gamepad/Gamepad.idl:35
&gt; &gt; -        readonly attribute float[] axes;
&gt; &gt; -        readonly attribute float[] buttons;
&gt; &gt; +        readonly attribute sequence&lt;float&gt; axes;
&gt; &gt; +        readonly attribute sequence&lt;float&gt; buttons;
&gt; 
&gt; Is this change correct?  We should check the spec.  Sadly, float[] and sequence&lt;float&gt; are subtly different.  I think you&apos;re right through that most attributes use sequence&lt;float&gt;.

As said in comment #2, this is just a workaround as JSC doesn&apos;t support attributes with array type.

Bug #84863 is working towards proper support for T[] and sequence&lt;T&gt; types as it was outlined back in https://bugs.webkit.org/show_bug.cgi?id=80696#c67 so this bug depends on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635717</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-29 01:35:11 -0700</bug_when>
    <thetext>Ah, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635832</commentid>
    <comment_count>8</comment_count>
      <attachid>144109</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-29 03:47:49 -0700</bug_when>
    <thetext>Comment on attachment 144109
WIP patch

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

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:35
&gt; +#include &lt;linux/joystick.h&gt;

Maybe we should check this header is available in configure and add an #ifded here or simply disable gamepad if not present.

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:45
&gt; +class GUdevGamepadDevice {

This class has nothing to do with GUdev in the end, it&apos;s a linux specific implementation. Maybe we could even move this to its own file that could be shared by other ports running on linux like Qt or efl.

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:55
&gt; +    GUdevGamepadDevice(char* deviceFile);

This should be const char*

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:57
&gt; +    GInputStream* m_inputStream;

You could use GRefPtr for the input stream

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:70
&gt; +PassOwnPtr&lt;GUdevGamepadDevice&gt; GUdevGamepadDevice::create(char* deviceFile)

const char* here too

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:92
&gt; +    ioctl(fd, JSIOCGAXES, &amp;m_numberOfAxes);
&gt; +    ioctl(fd, JSIOCGBUTTONS, &amp;m_numberOfButtons);

We should probably check the return value and not fill the arrays in case of error

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:97
&gt; +    m_source = g_pollable_input_stream_create_source(G_POLLABLE_INPUT_STREAM(m_inputStream), NULL);

Use 0 instead of NULL.

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:98
&gt; +    g_source_set_callback(m_source, (GSourceFunc)readCallback, this, NULL);

Use a C++ style cast and 0 instead of NULL.

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:104
&gt; +    g_source_unref(m_source);

This is not enough to remove the source from the context. In g_source_attach() the context takes a reference of the source, and you have another one, so here the source is not destroyed. so, you should either use g_source_destroy() or return FALSE from the read callback when done.

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:108
&gt; +PassRefPtr&lt;Gamepad&gt; GUdevGamepadDevice::createGamepad(int index)

Use unsigned instead of int, since it&apos;s what Gamepad::index() expects.

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:113
&gt; +    gamepad-&gt;timestamp(monotonicallyIncreasingTime());

js_event contains a timestamp, shouldn&apos;t we use that instead?

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:120
&gt; +void GUdevGamepadDevice::updateFromInputStream()

I would call this readFromInputStream()

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:127
&gt; +    if (len &lt; 0)
&gt; +        return;

We should check whether the error is G_IO_ERROR_WOULD_BLOCK to destroy the source otherwise (or report the error somehow using g_printerr or g_warning)

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:134
&gt; +    if (len == sizeof(event)) {
&gt; +        if (event.type &amp; JS_EVENT_AXIS)
&gt; +            m_axes[event.number] = event.value / 32767.0f;
&gt; +        else if (event.type &amp; JS_EVENT_BUTTON)
&gt; +            m_buttons[event.number] = event.value / 1.0f;
&gt; +    }

This could be an early return. If we move the linux impl to its one class, this would notify such class using something like gamepadDevice-&gt;handleEvent(event);

Those numbers look like magic numbers, we could add a constant or something to give them a name. We could also add a comment to explain why that is needed or even helper functions like normalizeAxisValue() normalizeButtonValue(), for example

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:163
&gt; +    DEFINE_STATIC_LOCAL(GRegex*, sysfsPathRegex, (g_regex_new(&quot;/input[0-9]+/js[0-9]+$&quot;, (GRegexCompileFlags)0, (GRegexMatchFlags)0, 0)));
&gt; +    gboolean match = g_regex_match(sysfsPathRegex, sysfsPath, (GRegexMatchFlags)0, 0);
&gt; +    if (!match)
&gt; +        return FALSE;
&gt; +
&gt; +    return TRUE;

Instead of using a regexp with the syspath we could just check whether the device file starts with /dev/input/js, this could be just

return g_str_has_prefix(deviceFile, &quot;/dev/input/js&quot;);

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:171
&gt; +    char* deviceFile = const_cast&lt;char*&gt;(g_udev_device_get_device_file(device));

Why do you need this to be char instead of const char*?

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:184
&gt; +    static GUdevClient* gudevClient = 0;

You could use GRefPtr to make sure the client is freed

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:190
&gt; +    g_signal_connect(gudevClient, &quot;uevent&quot;, G_CALLBACK(onUEventCallback), NULL);

Use 0 instead of NULL

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:197
&gt; +            gamepadDeviceMap.set(deviceFile, GUdevGamepadDevice::create(deviceFile));

deviceFile is owned by GUdevDevice, does HashMap copy the string? Maybe we could use String or CString as the key of the HashMap

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:200
&gt; +    g_list_free_full(devicesList, g_object_unref);

This iterates the list again, you could call g_object_unref() for every item in the previous loop and here just call g_list_free()

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:211
&gt; +        RefPtr&lt;Gamepad&gt; gamepad = device-&gt;createGamepad(index);

Looking at chromium implementation, it seems that GamepadList might not be empty, they check first whether there&apos;s a Gamepad already in the array to updated it instead of creating a new one

&gt; configure.ac:1264
&gt; +   PKG_CHECK_MODULES([GIO_UNIX], [gio-unix-2.0])
&gt; +   PKG_CHECK_MODULES([GUDEV], [gudev-1.0])

We could merge these and use GAMEPAD_CFLAGS and GAMEPAD_LIBS. We should also disable gamepad if these can&apos;t be found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635932</commentid>
    <comment_count>9</comment_count>
      <attachid>144109</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-05-29 06:10:34 -0700</bug_when>
    <thetext>Comment on attachment 144109
WIP patch

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

Thanks for the review, all other comments are noted as well.

&gt;&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:35
&gt;&gt; +#include &lt;linux/joystick.h&gt;
&gt; 
&gt; Maybe we should check this header is available in configure and add an #ifded here or simply disable gamepad if not present.

The latter would be best - I can&apos;t provide support for any other OS than Linux.

&gt;&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:45
&gt;&gt; +class GUdevGamepadDevice {
&gt; 
&gt; This class has nothing to do with GUdev in the end, it&apos;s a linux specific implementation. Maybe we could even move this to its own file that could be shared by other ports running on linux like Qt or efl.

Current implementation is still GIO-specific though, so at least Qt wouldn&apos;t have any benefit from it, don&apos;t know about EFL. It still deserves a separate file.

&gt;&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:113
&gt;&gt; +    gamepad-&gt;timestamp(monotonicallyIncreasingTime());
&gt; 
&gt; js_event contains a timestamp, shouldn&apos;t we use that instead?

True, js_event&apos;s timestamp should suffice.

&gt;&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:171
&gt;&gt; +    char* deviceFile = const_cast&lt;char*&gt;(g_udev_device_get_device_file(device));
&gt; 
&gt; Why do you need this to be char instead of const char*?

The const casting is a leftover of another approach at handling GUdev devices that I forgot to remove. const char* will work.

&gt;&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:211
&gt;&gt; +        RefPtr&lt;Gamepad&gt; gamepad = device-&gt;createGamepad(index);
&gt; 
&gt; Looking at chromium implementation, it seems that GamepadList might not be empty, they check first whether there&apos;s a Gamepad already in the array to updated it instead of creating a new one

That&apos;s a better approach indeed. Along with that the GUdevGamepadDevice (to be renamed) should also support handling the connected state properly to conform to the specification (more directly to paragraph 5.1: https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#idl-def-Navigator)

&gt;&gt; configure.ac:1264
&gt;&gt; +   PKG_CHECK_MODULES([GUDEV], [gudev-1.0])
&gt; 
&gt; We could merge these and use GAMEPAD_CFLAGS and GAMEPAD_LIBS. We should also disable gamepad if these can&apos;t be found.

This would work for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635936</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-29 06:18:10 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 144109 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144109&amp;action=review
&gt; 
&gt; Thanks for the review, all other comments are noted as well.
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:45
&gt; &gt;&gt; +class GUdevGamepadDevice {
&gt; &gt; 
&gt; &gt; This class has nothing to do with GUdev in the end, it&apos;s a linux specific implementation. Maybe we could even move this to its own file that could be shared by other ports running on linux like Qt or efl.
&gt; 
&gt; Current implementation is still GIO-specific though, so at least Qt wouldn&apos;t have any benefit from it, don&apos;t know about EFL. It still deserves a separate file.

I mean creating a new calls with only linux specific things. In GamepadsGtk we would create the stream to notify the generic class when an event happens. That way the generic class doesn&apos;t need to use anything from glib/gio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636824</commentid>
    <comment_count>11</comment_count>
      <attachid>144109</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-05-29 21:37:34 -0700</bug_when>
    <thetext>Comment on attachment 144109
WIP patch

r- because it breaks EWS build (and all the next ones until I do a clean build)

  CC     Source/WebKit/gtk/tests/Programs_unittests_testdomdomwindow-testdomdomwindow.o
In file included from ./DerivedSources/webkit/webkitdom.h:131:0,
                 from ../../Source/WebKit/gtk/webkit/webkit.h:27,
                 from ../../Source/WebKit/gtk/tests/testapplicationcache.c:23:
./DerivedSources/webkit/WebKitDOMNavigator.h:215:1: error: unknown type name &apos;WebKitDOMGamepadList&apos;
make[1]: *** [Source/WebKit/gtk/tests/Programs_unittests_testapplicationcache-testapplicationcache.o] Error 1
make[1]: *** Waiting for unfinished jobs....
In file included from ./DerivedSources/webkit/webkitdom.h:131:0,
                 from ../../Source/WebKit/gtk/webkit/webkit.h:27,
                 from ../../Source/WebKit/gtk/tests/testcontextmenu.c:20:
./DerivedSources/webkit/WebKitDOMNavigator.h:215:1: error: unknown type name &apos;WebKitDOMGamepadList&apos;
make[1]: *** [Source/WebKit/gtk/tests/Programs_unittests_testcontextmenu-testcontextmenu.o] Error 1
In file included from ./DerivedSources/webkit/webkitdom.h:131:0,
                 from ../../Source/WebKit/gtk/webkit/webkit.h:27,
                 from ../../Source/WebKit/gtk/tests/testdomdocument.c:25:
./DerivedSources/webkit/WebKitDOMNavigator.h:215:1: error: unknown type name &apos;WebKitDOMGamepadList&apos;
make[1]: *** [Source/WebKit/gtk/tests/Programs_unittests_testdomdocument-testdomdocument.o] Error 1
In file included from ./DerivedSources/webkit/webkitdom.h:131:0,
                 from ../../Source/WebKit/gtk/webkit/webkit.h:27,
                 from ../../Source/WebKit/gtk/tests/testdomdomwindow.c:25:
./DerivedSources/webkit/WebKitDOMNavigator.h:215:1: error: unknown type name &apos;WebKitDOMGamepadList&apos;
make[1]: *** [Source/WebKit/gtk/tests/Programs_unittests_testdomdomwindow-testdomdomwindow.o] Error 1
make[1]: Leaving directory `/home/phil/gst/jhbuild/makes/WebKit/WebKitBuild/Release&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636830</commentid>
    <comment_count>12</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-05-29 21:43:08 -0700</bug_when>
    <thetext>Link to the build log: http://queues.webkit.org/results/12839872</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636835</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-05-29 21:48:09 -0700</bug_when>
    <thetext>I know GTK&apos;s build system sucks but OTOH it doesn&apos;t make much sense to mark this patch r? and have EWS try it without first landing at least bug 84929.

EWS should apply patch dependencies before trying to build, I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637039</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-30 02:05:19 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I know GTK&apos;s build system sucks but OTOH it doesn&apos;t make much sense to mark this patch r? and have EWS try it without first landing at least bug 84929.

Zan said this was a wip patch, and he didn&apos;t mark this patch r?, see the log

https://bugs.webkit.org/show_activity.cgi?id=87503</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637417</commentid>
    <comment_count>15</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-05-30 10:53:02 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; I know GTK&apos;s build system sucks but OTOH it doesn&apos;t make much sense to mark this patch r? and have EWS try it without first landing at least bug 84929.
&gt; 
&gt; Zan said this was a wip patch, and he didn&apos;t mark this patch r?, see the log
&gt; 
&gt; https://bugs.webkit.org/show_activity.cgi?id=87503

Maybe someone clicked on the fancy &quot;Submit for EWS analysis&quot; button then :) Anyway, no big deal...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640026</commentid>
    <comment_count>16</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-02 07:58:45 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 144109 [details])
&gt; r- because it breaks EWS build (and all the next ones until I do a clean build)
&gt; 
&gt;   CC     Source/WebKit/gtk/tests/Programs_unittests_testdomdomwindow-testdomdomwindow.o
&gt; In file included from ./DerivedSources/webkit/webkitdom.h:131:0,
&gt;                  from ../../Source/WebKit/gtk/webkit/webkit.h:27,
&gt;                  from ../../Source/WebKit/gtk/tests/testapplicationcache.c:23:
&gt; ./DerivedSources/webkit/WebKitDOMNavigator.h:215:1: error: unknown type name &apos;WebKitDOMGamepadList&apos;
&gt; make[1]: *** [Source/WebKit/gtk/tests/Programs_unittests_testapplicationcache-testapplicationcache.o] Error 1
&gt; make[1]: *** Waiting for unfinished jobs....
&gt; In file included from ./DerivedSources/webkit/webkitdom.h:131:0,
&gt;                  from ../../Source/WebKit/gtk/webkit/webkit.h:27,
&gt;                  from ../../Source/WebKit/gtk/tests/testcontextmenu.c:20:
&gt; ./DerivedSources/webkit/WebKitDOMNavigator.h:215:1: error: unknown type name &apos;WebKitDOMGamepadList&apos;
&gt; make[1]: *** [Source/WebKit/gtk/tests/Programs_unittests_testcontextmenu-testcontextmenu.o] Error 1
&gt; In file included from ./DerivedSources/webkit/webkitdom.h:131:0,
&gt;                  from ../../Source/WebKit/gtk/webkit/webkit.h:27,
&gt;                  from ../../Source/WebKit/gtk/tests/testdomdocument.c:25:
&gt; ./DerivedSources/webkit/WebKitDOMNavigator.h:215:1: error: unknown type name &apos;WebKitDOMGamepadList&apos;
&gt; make[1]: *** [Source/WebKit/gtk/tests/Programs_unittests_testdomdocument-testdomdocument.o] Error 1
&gt; In file included from ./DerivedSources/webkit/webkitdom.h:131:0,
&gt;                  from ../../Source/WebKit/gtk/webkit/webkit.h:27,
&gt;                  from ../../Source/WebKit/gtk/tests/testdomdomwindow.c:25:
&gt; ./DerivedSources/webkit/WebKitDOMNavigator.h:215:1: error: unknown type name &apos;WebKitDOMGamepadList&apos;
&gt; make[1]: *** [Source/WebKit/gtk/tests/Programs_unittests_testdomdomwindow-testdomdomwindow.o] Error 1
&gt; make[1]: Leaving directory `/home/phil/gst/jhbuild/makes/WebKit/WebKitBuild/Release&apos;

This failure occurred because of improperly handled GObject bindings for Gamepad-related stuff when building with the gamepad feature disabled. Will be fixed in next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640028</commentid>
    <comment_count>17</comment_count>
      <attachid>144109</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-02 08:15:05 -0700</bug_when>
    <thetext>Comment on attachment 144109
WIP patch

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

&gt;&gt;&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:113
&gt;&gt;&gt; +    gamepad-&gt;timestamp(monotonicallyIncreasingTime());
&gt;&gt; 
&gt;&gt; js_event contains a timestamp, shouldn&apos;t we use that instead?
&gt; 
&gt; True, js_event&apos;s timestamp should suffice.

Turns out event&apos;s timestamp is based on jiffies - it&apos;s useless as it is not indicating a time since epoch as it is required for the gamepad timestamp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640031</commentid>
    <comment_count>18</comment_count>
      <attachid>145446</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-02 09:23:21 -0700</bug_when>
    <thetext>Created attachment 145446
WIP patch

New version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640034</commentid>
    <comment_count>19</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-02 09:42:38 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Created an attachment (id=145446) [details]
&gt; WIP patch
&gt; 
&gt; New version.

The Gamepad feature is now only enabled on Linux, with bindings properly generating (apart from the lacking support for sequence&lt;T&gt;/T[] types).

The implementation now relies on a GamepadDeviceLinuxInputProvider to provide file descriptor of the device and properly read from it, and a GamepadDeviceLinuxInputProviderClient that can be updated for a joystick event. The names are long and hard to read, if we&apos;re to stick with this infrastructure they should probably be renamed to something better.

GamepadDeviceLinux class is now present as a GamepadDeviceLinuxInputProviderClient. It operates with the file descriptor of the device to get all the data when setting the device up (device name, number of axes and buttons). It can be updated for a js_event, with axis and button values now being normalized in a more plain and obvious way.

GamepadDeviceInputProviderGUdev (just realized, it again has little connection to gudev - perhaps GamepadDeviceInputProviderGIO would go better) is a GamepadDeviceLinuxInputProvider, its task being opening the device file and establishing the polling when required. It reads from the descriptor and updates the client with joystick events.

GamepadDeviceMapper is a class that assigns devices to appropriate slots. Its task is to gather all the devices at the start and handle newly-added and removed ones. Its slot count is the same as the GamepadList&apos;s length when created, filling the slots with GamepadDeviceLinux objects. Their initial state is &apos;null&apos;, meaning physical devices are not connected yet to those slots. But when such device is registered, it is given a proper slot and provided an input provider to update it. When the physical device is removed, the corresponding GamepadDeviceLinux is cleaned up and returned into the &apos;null&apos; state. This way the implementation properly handles the &apos;not-connected devices&apos;[1].

As for comment #17, the spec doesn&apos;t strictly request timestamp to be a value of (milli)seconds since epoch, so the js_event timestamp is used until that changes (if ever).

This patch is still missing some proper logging (LOG(Gamepad, ...) should be used) and handling of the possible G_IO_ERROR_WOULD_BLOCK error when reading from input stream.

[1] - https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#widl-Navigator-gamepads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640430</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-04 02:32:09 -0700</bug_when>
    <thetext>I think this could be simplified a bit. For example, a GamepadsGtk class that uses udev to register/unregister gamepads, similar to your current DeviceMapper class. The GamepadDeviceLinux class could be created with a deviceFile, so that it contains the file descriptor that would be initiliazed in the constructor. And then a class GamepadDeviceGtk that inherits from GamepadDeviceLinux that creates a GInputStream for the descriptor in the constructor. When an event is read from the stream it simply calls handleEvent() implemented in the parent class GamepadDeviceLinux. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641817</commentid>
    <comment_count>21</comment_count>
      <attachid>145856</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-05 13:00:04 -0700</bug_when>
    <thetext>Created attachment 145856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641821</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-05 13:03:46 -0700</bug_when>
    <thetext>Attachment 145856 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/WebCore/ChangeLog&apos;, u...&quot; exit_code: 1
Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 15 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>641836</commentid>
    <comment_count>23</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-05 13:17:10 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Created an attachment (id=145856) [details]
&gt; Patch

The client and provider classes are now removed. GamepadDeviceGtk inherits from GamepadDeviceLinux. The constructor of the latter takes in a String that represents the device file. If it is null we don&apos;t try to open the file but rather consider the device to be in null-state - it&apos;s just filling the slot in the device mapping class, giving room to a proper device when it is connected. If the device file is valid it is open, acquiring the file descriptor, device name and buttons and axes count.

GamepadDeviceGtk only goes on to open the input stream and attach the source to the main context when the file descriptor is valid (it is not valid in the case of an error or a null device). Perhaps this class could be moved into a file of its own.

GamepadsGtk is the renamed device-mapping class, initially filling the slots with null-state GamepadDeviceGtk objects. On initialization it also goes through the current devices and registers any joystick devices present. On registering devices, the slot with a device in null-state is filled in with a proper GamepadDeviceGtk object with according device file. On unregistering devices, the slot with the device being unregistered is filled in with a new device in null-state.

Still missing is better error-handling and logging. The code would also benefit from some comments on what is being done in specific places, just for clarity really.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642321</commentid>
    <comment_count>24</comment_count>
      <attachid>145856</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-06 03:11:12 -0700</bug_when>
    <thetext>Comment on attachment 145856
Patch

Attachment 145856 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12896835</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642340</commentid>
    <comment_count>25</comment_count>
      <attachid>145856</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-06 03:35:46 -0700</bug_when>
    <thetext>Comment on attachment 145856
Patch

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

It looks much better. Setting r- because of the memory leaks, coding style issues and other minor issues.

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:56
&gt; +    GSource* m_source;

You should use GRefPtr for the source too, g_source_destroy() removed the source from the context and marks it as destroyed, but the memory is not freed.

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:62
&gt; +    , m_inputStream(0)

This is not needd GRefPtr already initializes its internal pointer to 0

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:68
&gt; +    m_inputStream = g_unix_input_stream_new(m_fileDescriptor, TRUE);

You should adopt the reference with adoptGRef(). It&apos;s a bit weird that this clases closes the descriptor that was open by the parent class. Even if it&apos;s conveneint, I guess it would be better to pass FALSE here, close the descriptor in the parent destructor.

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:69
&gt; +    m_source = g_pollable_input_stream_create_source(G_POLLABLE_INPUT_STREAM(m_inputStream.get()), 0);

Use adoptGRef here too when m_source is changed to GRefPtr

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:71
&gt; +    g_source_attach(m_source, NULL);

Use 0 instead of NULL.

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:80
&gt; +void GamepadDeviceGtk::readFromInputStream()

Make this return a bool and return false if an error happens, that way we can cancel the source in case of errors

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:101
&gt; +    gamepadDevice-&gt;readFromInputStream();
&gt; +
&gt; +    return TRUE;

And this would be return gamepadDevice-&gt;readFromInputStream(); Or maybe we can read the stream here, since we have a pointer to the stream, and simply call gamepadDevice-&gt;updateForEvent(event);

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:119
&gt; +    Vector&lt;OwnPtr&lt;GamepadDeviceGtk&gt; &gt; m_slots;
&gt; +    HashMap&lt;String, GamepadDeviceGtk*&gt; m_deviceMap;

Why do we need both the Vector and the HashMap, isn&apos;t it enough with the HashMap

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:131
&gt; +    for (unsigned i = 0; i &lt; m_length; i++)
&gt; +        m_slots.append(GamepadDeviceGtk::create());

Why not creating the devices on demand?

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:134
&gt; +    m_gudevClient = g_udev_client_new(subsystems);

You should use adoptGRef() here too

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:137
&gt; +    GList* devicesList = g_udev_client_query_by_subsystem(m_gudevClient.get(), subsystems[0]);

You can use GOwnPtr for the list, since the items are already freed in the loop

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:139
&gt; +        GUdevDevice* device = reinterpret_cast&lt;GUdevDevice*&gt;(listItem-&gt;data);

For GObjects it&apos;s better to use the GObject cast macros, that also check the glib type. G_UDEV_DEVICE(listIem-&gt;data) in this case

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:167
&gt; +    m_slots[index] = GamepadDeviceGtk::create(deviceFile);

m_slots[index] already contains a GamepadDeviceGtk

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:192
&gt; +            m_slots[i]-&gt;updateGamepad(gamepad.get());

I think it would be clearer to add getters to GamepadDevice class and fill the Gaempad object here using those getters, similar to what chromium does.

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:205
&gt; +    String deviceFile = String(g_udev_device_get_device_file(device));

I guess g_udev_device_get_device_file() returns an UTF8 string, so you should use String::fromUTF8(). But I think it would be better to pass the returned char * to the registerDevice and unregisterDevice methods, and convert to String when accesing the HashMap.

&gt; Source/WebCore/platform/linux/GamepadDeviceLinux.cpp:39
&gt; +    : m_deviceFile(deviceFile)

Do we need to keep the deviceFile? Maybe we could use CString instead of String mor simply pass the char * and use it directly in open().

&gt; Source/WebCore/platform/linux/GamepadDeviceLinux.cpp:47
&gt; +    if (isNull())
&gt; +        return;

I still don&apos;t get why we want null devices.

&gt; Source/WebCore/platform/linux/GamepadDeviceLinux.cpp:73
&gt; +    gamepad-&gt;id(m_deviceName);
&gt; +    gamepad-&gt;timestamp(m_lastTimestamp);
&gt; +    gamepad-&gt;axes(m_numberOfAxes, m_axes.data());
&gt; +    gamepad-&gt;buttons(m_numberOfButtons, m_buttons.data());

As I said I thnk this would be clearer in the caller, adding getters for m_deviceName, m_lastTimestamp, axes and buttons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643689</commentid>
    <comment_count>26</comment_count>
      <attachid>145856</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-07 10:52:06 -0700</bug_when>
    <thetext>Comment on attachment 145856
Patch

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

&gt;&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:119
&gt;&gt; +    HashMap&lt;String, GamepadDeviceGtk*&gt; m_deviceMap;
&gt; 
&gt; Why do we need both the Vector and the HashMap, isn&apos;t it enough with the HashMap

Vector is the same size as the GamepadsList, storing OwnPtrs to gamepad devices in a specific slot. This ensures that when two devices are connected in the first two slots and the device in the first slot is removed, the second device doesn&apos;t move into the now-empty slot.

HashMap maps gamepad devices to device file names. That way it&apos;s easy to control currently-present devices.

&gt;&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:205
&gt;&gt; +    String deviceFile = String(g_udev_device_get_device_file(device));
&gt; 
&gt; I guess g_udev_device_get_device_file() returns an UTF8 string, so you should use String::fromUTF8(). But I think it would be better to pass the returned char * to the registerDevice and unregisterDevice methods, and convert to String when accesing the HashMap.

To me it seems to better to use String::fromUTF8 here and pass String around, that way the passed argument in registerDevice and unregisterDevice can be immediately checked for it&apos;s (non)presence in the HashMap.

&gt;&gt; Source/WebCore/platform/linux/GamepadDeviceLinux.cpp:47
&gt;&gt; +        return;
&gt; 
&gt; I still don&apos;t get why we want null devices.

Indeed, that&apos;s an overkill.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643695</commentid>
    <comment_count>27</comment_count>
      <attachid>146326</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-07 10:56:57 -0700</bug_when>
    <thetext>Created attachment 146326
WIP patch

Yet another WIP patch! Still missing logging and G_IO_ERROR_WOULD_BLOCK handling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644418</commentid>
    <comment_count>28</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-08 00:25:46 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 145856 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145856&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:119
&gt; &gt;&gt; +    HashMap&lt;String, GamepadDeviceGtk*&gt; m_deviceMap;
&gt; &gt; 
&gt; &gt; Why do we need both the Vector and the HashMap, isn&apos;t it enough with the HashMap
&gt; 
&gt; Vector is the same size as the GamepadsList, storing OwnPtrs to gamepad devices in a specific slot. This ensures that when two devices are connected in the first two slots and the device in the first slot is removed, the second device doesn&apos;t move into the now-empty slot.

Ah, ok, I see.

&gt; HashMap maps gamepad devices to device file names. That way it&apos;s easy to control currently-present devices.

Yes, it&apos;s the Vector what I didn&apos;t know its purpose.

&gt; &gt;&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:205
&gt; &gt;&gt; +    String deviceFile = String(g_udev_device_get_device_file(device));
&gt; &gt; 
&gt; &gt; I guess g_udev_device_get_device_file() returns an UTF8 string, so you should use String::fromUTF8(). But I think it would be better to pass the returned char * to the registerDevice and unregisterDevice methods, and convert to String when accesing the HashMap.
&gt; 
&gt; To me it seems to better to use String::fromUTF8 here and pass String around, that way the passed argument in registerDevice and unregisterDevice can be immediately checked for it&apos;s (non)presence in the HashMap.

Ok.

&gt; &gt;&gt; Source/WebCore/platform/linux/GamepadDeviceLinux.cpp:47
&gt; &gt;&gt; +        return;
&gt; &gt; 
&gt; &gt; I still don&apos;t get why we want null devices.
&gt; 
&gt; Indeed, that&apos;s an overkill.

:-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644429</commentid>
    <comment_count>29</comment_count>
      <attachid>146326</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-08 00:42:41 -0700</bug_when>
    <thetext>Comment on attachment 146326
WIP patch

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

This looks really good! I have just few more minor comments.

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:55
&gt; +    GamepadDeviceGtk(String deviceFile);
&gt; +
&gt; +    GRefPtr&lt;GInputStream&gt; m_inputStream;
&gt; +    GRefPtr&lt;GSource&gt; m_source;
&gt; +    static gboolean readCallback(GObject* pollableStream, gpointer data);

Nit: typically variables are below the methods in the class declaration.

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:62
&gt; +    if (m_fileDescriptor &lt; 0)
&gt; +        return;

I think this should be if (!m_fileDescriptor) to avoid the zero comparison. But the file descriptor is initialized to -1, so you can use if (m_fileDescriptor != -1). Open will return -1 in case of error too, so I think it&apos;s safe to check if m_fileDescriptor != -1

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:112
&gt; +    static void onUEventCallback(GUdevClient*, gchar* action, GUdevDevice*, gpointer data);
&gt; +    static gboolean isGamepadDevice(GUdevDevice*);

Same comment here, I would move these right after the destructor.

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:193
&gt; +    GamepadsGtk* deviceMapper = reinterpret_cast&lt;GamepadsGtk*&gt;(data);

Nit: deviceMapper -&gt; gamepadsGtk or gamepads

&gt; Source/WebCore/platform/linux/GamepadDeviceLinux.cpp:46
&gt; +    if (m_fileDescriptor &lt; 0)
&gt; +        return;

open return s-1 in case of error, so you could check if m_fileDescriptor == -1

&gt; Source/WebCore/platform/linux/GamepadDeviceLinux.cpp:63
&gt; +    if (m_fileDescriptor &gt;= 0)

if (m_fileDescriptor != -1)

&gt; Source/WebCore/platform/linux/GamepadDeviceLinux.cpp:94
&gt; +    // Normalize from range [0, 1] into range [0.0, 1.0]
&gt; +    return value / 1.0f;

Since value can only be 1 or 0, maybe it&apos;s more obvious to use someting like return value ? 1 : 0; instead of using a division.

&gt; Source/WebCore/platform/linux/GamepadDeviceLinux.h:68
&gt; +    Vector&lt;float&gt; m_axes;
&gt; +    float normalizeAxisValue(short value);
&gt; +
&gt; +    Vector&lt;float&gt; m_buttons;
&gt; +    float normalizeButtonValue(short value);

I would move the functions at the beginning of the private section.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644445</commentid>
    <comment_count>30</comment_count>
      <attachid>146326</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-08 01:00:33 -0700</bug_when>
    <thetext>Comment on attachment 146326
WIP patch

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

&gt;&gt; Source/WebCore/platform/linux/GamepadDeviceLinux.cpp:94
&gt;&gt; +    return value / 1.0f;
&gt; 
&gt; Since value can only be 1 or 0, maybe it&apos;s more obvious to use someting like return value ? 1 : 0; instead of using a division.

PS3 controllers actually have pressure-sensitive buttons, meaning values could actually vary in between 0 and 1, so this actually seems wrong altogether. I wonder if it&apos;s more of a driver problem though. Got to get that controller to try it out ...
See https://bugzilla.mozilla.org/show_bug.cgi?id=604039#c26</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648280</commentid>
    <comment_count>31</comment_count>
      <attachid>147369</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-13 11:27:40 -0700</bug_when>
    <thetext>Created attachment 147369
WIP patch

Another WIP patch after bug #84863 has been resolved</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648841</commentid>
    <comment_count>32</comment_count>
      <attachid>147369</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-13 23:30:14 -0700</bug_when>
    <thetext>Comment on attachment 147369
WIP patch

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

This looks pretty good to me!

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:150
&gt; +    unsigned index;
&gt; +    for (index = 0; index &lt; m_slots.size(); index++) {
&gt; +        if (!m_slots[index])
&gt; +            break;
&gt; +    }
&gt; +
&gt; +    if (index &gt;= m_slots.size())
&gt; +        return;
&gt; +
&gt; +    m_slots[index] = GamepadDeviceGtk::create(deviceFile);
&gt; +    m_deviceMap.add(deviceFile, m_slots[index].get());

Since registering the device once you have the free slot is just two lines, this could be simplified a bit registering the device inside the loop, so that you don&apos;t need to check whether the loop finished because of the break.

for (unsigned index = 0; index &lt; m_slots.size(); index++) {
    if (!m_slots[index]) {
        m_slots[index] = GamepadDeviceGtk::create(deviceFile);
        m_deviceMap.add(deviceFile, m_slots[index].get());
        break;
    }
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652477</commentid>
    <comment_count>33</comment_count>
      <attachid>148341</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-19 08:38:11 -0700</bug_when>
    <thetext>Created attachment 148341
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652495</commentid>
    <comment_count>34</comment_count>
      <attachid>148341</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-06-19 08:46:34 -0700</bug_when>
    <thetext>Comment on attachment 148341
Patch for review

Attachment 148341 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12990021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652549</commentid>
    <comment_count>35</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-19 10:10:03 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 148341 [details])
&gt; Attachment 148341 [details] did not pass gtk-ews (gtk):
&gt; Output: http://queues.webkit.org/results/12990021

The EWS is missing gudev development packages. Similar issues possible on the GTK builders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653247</commentid>
    <comment_count>36</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-19 23:39:46 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; (In reply to comment #34)
&gt; &gt; (From update of attachment 148341 [details] [details])
&gt; &gt; Attachment 148341 [details] [details] did not pass gtk-ews (gtk):
&gt; &gt; Output: http://queues.webkit.org/results/12990021
&gt; 
&gt; The EWS is missing gudev development packages. Similar issues possible on the GTK builders.

I guess we should update the jhbuild moduleset then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653251</commentid>
    <comment_count>37</comment_count>
      <attachid>148341</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-19 23:56:12 -0700</bug_when>
    <thetext>Comment on attachment 148341
Patch for review

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

Patch looks good to me, setting r- only because of the build issues. I guess we should update the jhbuild moduleset to add gudev as a dependency or make gamepad optional and only fail in configure if --enable-gamepad has been explicitly passed and gudev is not found

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:89
&gt; +    if (error)
&gt; +        return error-&gt;code == G_IO_ERROR_WOULD_BLOCK;

It&apos;s very unlikely but this could be true for an error in a different domain with the same code than would block. To be extra sure you could use:

g_error_matches(error.get(), G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:119
&gt; +    static const gchar* subsystems[] = { &quot;input&quot;, 0 };

Use char instead of gchar here.

&gt; Source/WebCore/platform/linux/GamepadDeviceLinux.h:32
&gt; +#include &lt;wtf/PassOwnPtr.h&gt;

Do you need PassOwnPtr.h here? I think it could be moved to GamepadsGtk.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653252</commentid>
    <comment_count>38</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-19 23:57:00 -0700</bug_when>
    <thetext>Does this bug still depend on #84929?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653401</commentid>
    <comment_count>39</comment_count>
      <attachid>148550</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-20 06:28:29 -0700</bug_when>
    <thetext>Created attachment 148550
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653405</commentid>
    <comment_count>40</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-20 06:30:26 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; Created an attachment (id=148550) [details]
&gt; Patch for review

EWS will complain again as I&apos;ve decided to update jhbuild.modules in a different bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656620</commentid>
    <comment_count>41</comment_count>
      <attachid>149306</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-25 09:21:34 -0700</bug_when>
    <thetext>Created attachment 149306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656638</commentid>
    <comment_count>42</comment_count>
      <attachid>149306</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-06-25 09:41:46 -0700</bug_when>
    <thetext>Comment on attachment 149306
Patch

Attachment 149306 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13097155</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656645</commentid>
    <comment_count>43</comment_count>
      <attachid>149310</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-25 09:52:22 -0700</bug_when>
    <thetext>Created attachment 149310
Patch

Previous patch somehow included modified jhbuild.modules file. This one doesn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658370</commentid>
    <comment_count>44</comment_count>
      <attachid>149310</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-26 23:14:40 -0700</bug_when>
    <thetext>Comment on attachment 149310
Patch

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

Great!

&gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:86
&gt; +    // FIXME: Properly log the error.

Are you going to fix this in a follow up patch?

&gt; Source/WebCore/platform/linux/GamepadDeviceLinux.cpp:43
&gt; +    // FIXME: Log errors when returning early.

Ditto.

&gt; Tools/Scripts/webkitperl/FeatureList.pm:217
&gt; -      define =&gt; &quot;ENABLE_GAMEPAD&quot;, default =&gt; 0, value =&gt; \$gamepadSupport },
&gt; +      define =&gt; &quot;ENABLE_GAMEPAD&quot;, default =&gt; isGtk(), value =&gt; \$gamepadSupport },

Should we change the default in configure as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658396</commentid>
    <comment_count>45</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-26 23:50:20 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; (From update of attachment 149310 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149310&amp;action=review
&gt; 
&gt; Great!
&gt; 
&gt; &gt; Source/WebCore/platform/gtk/GamepadsGtk.cpp:86
&gt; &gt; +    // FIXME: Properly log the error.
&gt; 
&gt; Are you going to fix this in a follow up patch?
&gt; 
&gt; &gt; Source/WebCore/platform/linux/GamepadDeviceLinux.cpp:43
&gt; &gt; +    // FIXME: Log errors when returning early.
&gt; 
&gt; Ditto.
&gt; 

A new logging channel should be created and these FIXMEs populated with logging calls. I&apos;ll do that in a separate bug.

&gt; &gt; Tools/Scripts/webkitperl/FeatureList.pm:217
&gt; &gt; -      define =&gt; &quot;ENABLE_GAMEPAD&quot;, default =&gt; 0, value =&gt; \$gamepadSupport },
&gt; &gt; +      define =&gt; &quot;ENABLE_GAMEPAD&quot;, default =&gt; isGtk(), value =&gt; \$gamepadSupport },
&gt; 
&gt; Should we change the default in configure as well?

I talked with Xan about that a while back and we came to conclusion that the specification is too far from being stable enough for the feature to be enabled by default in release versions. There is a runtime configuration flag for this feature though, so perhaps the feature could be enabled at build-time but then disabled by default at runtime, with the possibility to enable it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658482</commentid>
    <comment_count>46</comment_count>
      <attachid>149310</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-27 02:19:20 -0700</bug_when>
    <thetext>Comment on attachment 149310
Patch

Clearing flags on attachment: 149310

Committed r121332: &lt;http://trac.webkit.org/changeset/121332&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658483</commentid>
    <comment_count>47</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-27 02:19:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144109</attachid>
            <date>2012-05-25 11:41:50 -0700</date>
            <delta_ts>2012-06-02 09:23:15 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-87503-20120525204149.patch</filename>
            <type>text/plain</type>
            <size>18620</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzdlYjc4Zjc4NmYxZjMz
ZDZhZGIyYTQ5MzRiZDc3OTE4ZTY1MDY2Yi4uZTE1NzViOWZkMjNkNGZkOTE5ODMyYzVlMjU1MzIz
OTVmYTA5NmJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA1LTI1ICBaYW4g
RG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0d0a10gQWRkIHN1
cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9k
dWxlcy9nYW1lcGFkL0dhbWVwYWQuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvR05V
bWFrZWZpbGUuYW06CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzQXJyYXkpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChHVWRldkdhbWVwYWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R1VkZXZHYW1l
cGFkRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1VkZXZHYW1lcGFkRGV2aWNl
OjpHVWRldkdhbWVwYWREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R1VkZXZHYW1lcGFkRGV2
aWNlOjp+R1VkZXZHYW1lcGFkRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdVZGV2R2FtZXBh
ZERldmljZTo6Y3JlYXRlR2FtZXBhZCk6CisgICAgICAgIChXZWJDb3JlOjpHVWRldkdhbWVwYWRE
ZXZpY2U6OnVwZGF0ZUZyb21JbnB1dFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpHVWRldkdh
bWVwYWREZXZpY2U6OnJlYWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjppc0dhbWVwYWRE
ZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6b25VRXZlbnRDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjppbml0aWFsaXplR1VkZXZDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6c2FtcGxl
R2FtZXBhZHMpOgorCiAyMDEyLTA1LTI0ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBGaXggY3Jhc2hlcyBjYXVzZWQgYnkgYSBET01DaGFyYWN0ZXJEYXRhTW9k
aWZpZWQgZXZlbnQgb24gYSB0ZXh0IG5vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNDA2YzRjM2Rj
MTU5OWEzNTk4YTZiOWVkZTE4OTcxOTY2ZDc0Mzk3ZC4uMmM0MDFiNTYzMzg4Nzc5YjVjMGE3Yzlk
OTdjOWI0ZjdmMjQ3MDdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSArMSwxMCBAQAorMjAxMi0w
NS0yNSAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFtH
dGtdIEFkZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKwogPT0gUm9sbGVk
IG92ZXIgdG8gQ2hhbmdlTG9nLTIwMTItMDUtMjIgPT0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXgg
OTc3NWYyNGI2ZmRlMDI5MTFmZDg1NDc5M2IxNjAxZjlkNWM4OTgwYi4uYWJiZTE1OGY3ZTMyMjIy
YzY4NThjYzhmYWM2YWY2MDU2YzM4NWRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTEyLDYg
KzEyLDcgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29y
ZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtIFwKKwkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24gXAogCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtIFwKQEAgLTgyMCw2ICs4MjEsNyBAQCBEZXJpdmVkU291cmNl
cy9BTkdMRS9nbHNsYW5nX3RhYi5oOiBEZXJpdmVkU291cmNlcy9BTkdMRS9nbHNsYW5nX3RhYi5j
cHAKIAogSURMX1BBVEggOj0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtIFwK
KyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2FtZXBhZCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L2dlb2xvY2F0aW9uIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kZXhlZGRiIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0gXApAQCAtOTE1LDcgKzkxNyw5IEBAIGxpYldl
YkNvcmVfbGFfQ1BQRkxBR1MgPSBcCiAJJChDT1ZFUkFHRV9DRkxBR1MpIFwKIAkkKEVOQ0hBTlRf
Q0ZMQUdTKSBcCiAJJChHRU9DTFVFX0NGTEFHUykgXAorCSQoR0lPX1VOSVhfQ0ZMQUdTKSBcCiAJ
JChHTElCX0NGTEFHUykgXAorCSQoR1VERVZfQ0ZMQUdTKSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdT
KSBcCiAJJChMSUJTT1VQX0NGTEFHUykgXAogCSQoTElCWE1MX0NGTEFHUykgXApAQCAtOTgwLDYg
Kzk4NCw3IEBAIGxpYldlYkNvcmVHdGtfbGFfQ1BQRkxBR1MgPSBcCiAKIEVYVFJBX0RJU1QgKz0g
XAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS8qLmlkbCkgXAorCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2FtZXBhZC8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vKi5pZGwpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDZjYTczYWQwOTA4ZmU5ZDdhZDdlNGQwMjY0OTA2MTNlMmQy
NDZmNGQuLjI2Y2ZkZmZmOTc2ZWE0MzA5NjVjMGJhMzI3NTkzZjE0OWEzNjJkZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTg5LDYgKzE4OSwxMCBAQCB3ZWJjb3JlX2J1aWx0
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGbG9hdDMyQXJyYXkuaCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zsb2F0NjRBcnJheS5jcHAgXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNGbG9hdDY0QXJyYXkuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dhbWVwYWQuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2FtZXBhZC5oIFwK
KwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2FtZXBhZExpc3QuY3BwIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTR2FtZXBhZExpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dlb2xvY2F0aW9uLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dlb2xvY2F0aW9u
LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHZW9wb3NpdGlvbi5jcHAgXApAQCAtNjc2
LDYgKzY4MCw5IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9YUGF0aEdyYW1tYXIuaAogCiBkb21fYmluZGluZ19pZGxzICs9IFwKKwkkKFdlYkNv
cmUpL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2dh
bWVwYWQvR2FtZXBhZExpc3QuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvZ2FtZXBhZC9OYXZp
Z2F0b3JHYW1lcGFkLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb3Bvc2l0aW9u
LmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0
aW9uLmlkbCBcCkBAIC0xMDQ5LDYgKzEwNTYsMTIgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9XZWJLaXRGbGFncy5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyQ29udGV4dEZpbGVTeXN0
ZW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyQ29udGV4
dEZpbGVTeXN0ZW0uaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExpc3QuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExpc3QuaCBcCisJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgXApAQCAtMzEzNSw2ICszMTQ4LDcgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVt
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zsb2F0Q29udmVyc2lvbi5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GcmFjdGlvbmFsTGF5b3V0VW5pdC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9HYW1lcGFkcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IYXNo
VG9vbHMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hpc3RvZ3JhbVN1cHBvcnQuaCBcCkBAIC0zMzgw
LDYgKzMzOTQsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9FcnJvcnNHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3Jz
R3RrLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LVVJMR3RrLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0xvZ2dpbmdHdGsuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9H
YW1lcGFkLmlkbAppbmRleCBlMDBlMmRjM2Q4ODU1Y2Y4ZWYwNDU2NTMxN2YyYzc0NjAzN2IzYWEz
Li4yY2FkZTA4Y2QzMTE3ZDQ4MWZjNzE2OThkMGQ5ZTVjNmQ5MjkzY2UxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaWRsCkBAIC0zMSw4ICszMSw4IEBAIG1vZHVs
ZSBkb20gewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOwogICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBpbmRleDsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXA7Ci0gICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBmbG9hdFtdIGF4ZXM7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBm
bG9hdFtdIGJ1dHRvbnM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBzZXF1ZW5jZTxmbG9h
dD4gYXhlczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHNlcXVlbmNlPGZsb2F0PiBidXR0
b25zOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dO
VW1ha2VmaWxlLmFtCmluZGV4IGM3MDI1Mjg2ZDBmYWU3NGUyNWFlOGUyZDMxMDcyMTU3OTVhMzc4
ZjUuLmY2ZmRlYTk5MTJiZDg0YmU4ZDdmMTc2MzUwMDE3NDNiZTk1MmE0NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQpAQCAtNDI4LDcgKzQy
OCw2IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdC9XZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb25Qcml2YXRlLmgKIGVuZGlm
CiAKLQogaWYgRU5BQkxFX1dFQl9USU1JTkcKIHdlYmtpdGd0a19idWlsdF9oX2FwaSArPSBcCiAJ
JCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01QZXJmb3JtYW5j
ZS5oIFwKQEAgLTQ0Myw2ICs0NDIsMTcgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfc291cmNlcyAr
PSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTVBlcmZvcm1hbmNlVGltaW5nUHJp
dmF0ZS5oCiBlbmRpZgogCitpZiBFTkFCTEVfR0FNRVBBRAord2Via2l0Z3RrX2J1aWx0X2hfYXBp
ICs9IFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUdh
bWVwYWQuaCBcCisJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRE
T01HYW1lcGFkTGlzdC5oCit3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwKKwlEZXJp
dmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NR2FtZXBhZC5jcHAgXAorCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdC9XZWJLaXRET01HYW1lcGFkTGlzdC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtp
dC9XZWJLaXRET01HYW1lcGFkTGlzdFByaXZhdGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0
L1dlYktpdERPTUdhbWVwYWRQcml2YXRlLmgKK2VuZGlmCisKIGdkb21fY2xhc3NfbGlzdCA6PSAk
KHN1YnN0IFdlYktpdERPTSwsICQoZmlsdGVyLW91dCAlUHJpdmF0ZSwgJChiYXNlbmFtZSAkKG5v
dGRpciAkKHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMpKSkpKQogZ2RvbV9jbGFzc19saXN0
ICs9IEN1c3RvbSBFdmVudFRhcmdldCBPYmplY3QKIERlcml2ZWRTb3VyY2VzL3dlYmtpdC93ZWJr
aXRkb20uaDogJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL2dvYmplY3QtZ2VuZXJhdGUtaGVh
ZGVycy5wbCAkKFdlYkNvcmUpL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggZTViOTc0NjQ3MGJkZDg3
ZmJmODRlMzdkZDk4ZjY0NDFjODhmZTFiNC4uZTFjMjhlNmYzOGNmNzhkYjc2MDJjZjczMGU0NDU0
MDYwMjJjNWMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgK
QEAgLTMwNSw2ICszMDUsMTggQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICAg
ICAgcmV0dXJuIEpTQzo6Y29uc3RydWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBhcnJheSk7
CiAgICAgfQogCisgICAgdGVtcGxhdGU8PgorICAgIGlubGluZSBKU0M6OkpTVmFsdWUganNBcnJh
eShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgVmVjdG9yPGZsb2F0PiYgaXRlcmF0b3IpCisgICAgeworICAgICAgICBKU0M6Ok1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFycmF5OworICAgICAgICBWZWN0b3I8ZmxvYXQ+Ojpjb25zdF9pdGVy
YXRvciBlbmQgPSBpdGVyYXRvci5lbmQoKTsKKworICAgICAgICBmb3IgKFZlY3RvcjxmbG9hdD46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaXRlcmF0b3IuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQor
ICAgICAgICAgICAgYXJyYXkuYXBwZW5kKEpTQzo6anNOdW1iZXIoKml0KSk7CisKKyAgICAgICAg
cmV0dXJuIEpTQzo6Y29uc3RydWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBhcnJheSk7Cisg
ICAgfQorCiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CiAgICAgVmVjdG9yPFQ+IHRvTmF0aXZlQXJy
YXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGMw
OTkwMGRjYmRmN2MxM2I1NTRmMTI1MjVkZWQwYzdmN2VjNzA3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcApAQCAtMCwwICsxLDIx
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBaYW4gRG9iZXJzZWsgPHphbmRvYmVyc2Vr
QGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNICisgKiBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdh
bWVwYWRzLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIkdhbWVwYWRMaXN0
LmgiCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxnaW8vZ3VuaXhpbnB1dHN0cmVhbS5o
PgorI2luY2x1ZGUgPGd1ZGV2L2d1ZGV2Lmg+CisjaW5jbHVkZSA8bGludXgvam95c3RpY2suaD4K
KyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgR1VkZXZHYW1lcGFkRGV2aWNlIHsKK3B1YmxpYzoKKyAgICB+
R1VkZXZHYW1lcGFkRGV2aWNlKCk7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxHVWRldkdhbWVw
YWREZXZpY2U+IGNyZWF0ZShjaGFyKiBkZXZpY2VGaWxlKTsKKworICAgIFBhc3NSZWZQdHI8R2Ft
ZXBhZD4gY3JlYXRlR2FtZXBhZChpbnQgaW5kZXgpOworICAgIHZvaWQgdXBkYXRlRnJvbUlucHV0
U3RyZWFtKCk7CisKK3ByaXZhdGU6CisgICAgR1VkZXZHYW1lcGFkRGV2aWNlKGNoYXIqIGRldmlj
ZUZpbGUpOworCisgICAgR0lucHV0U3RyZWFtKiBtX2lucHV0U3RyZWFtOworICAgIEdTb3VyY2Uq
IG1fc291cmNlOworICAgIHN0YXRpYyBnYm9vbGVhbiByZWFkQ2FsbGJhY2soR09iamVjdCogcG9s
bGFibGVTdHJlYW0sIGdwb2ludGVyIGRhdGEpOworCisgICAgU3RyaW5nIG1fZGV2aWNlTmFtZTsK
KworICAgIHVpbnQ4X3QgbV9udW1iZXJPZkF4ZXM7CisgICAgVmVjdG9yPGZsb2F0PiBtX2F4ZXM7
CisKKyAgICB1aW50OF90IG1fbnVtYmVyT2ZCdXR0b25zOworICAgIFZlY3RvcjxmbG9hdD4gbV9i
dXR0b25zOworfTsKKworUGFzc093blB0cjxHVWRldkdhbWVwYWREZXZpY2U+IEdVZGV2R2FtZXBh
ZERldmljZTo6Y3JlYXRlKGNoYXIqIGRldmljZUZpbGUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBHVWRldkdhbWVwYWREZXZpY2UoZGV2aWNlRmlsZSkpOworfQorCitHVWRldkdhbWVwYWRE
ZXZpY2U6OkdVZGV2R2FtZXBhZERldmljZShjaGFyKiBkZXZpY2VGaWxlKQorICAgIDogbV9pbnB1
dFN0cmVhbSgwKQorICAgICwgbV9zb3VyY2UoMCkKKyAgICAsIG1fbnVtYmVyT2ZBeGVzKDApCisg
ICAgLCBtX251bWJlck9mQnV0dG9ucygwKQoreworICAgIGludCBmZCA9IG9wZW4oZGV2aWNlRmls
ZSwgT19SRE9OTFkgfCBPX05PTkJMT0NLKTsKKyAgICBpZiAoZmQgPCAwKQorICAgICAgICByZXR1
cm47CisKKyAgICBjaGFyIGRldmljZU5hbWVbMTAyNF07CisgICAgaWYgKGlvY3RsKGZkLCBKU0lP
Q0dOQU1FKHNpemVvZihkZXZpY2VOYW1lKSksIGRldmljZU5hbWUpIDwgMCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9kZXZpY2VOYW1lID0gU3RyaW5nKGRldmljZU5hbWUpLnNpbXBsaWZ5V2hp
dGVTcGFjZSgpOworCisgICAgaW9jdGwoZmQsIEpTSU9DR0FYRVMsICZtX251bWJlck9mQXhlcyk7
CisgICAgaW9jdGwoZmQsIEpTSU9DR0JVVFRPTlMsICZtX251bWJlck9mQnV0dG9ucyk7CisgICAg
bV9heGVzLmZpbGwoMC4wLCBtX251bWJlck9mQXhlcyk7CisgICAgbV9idXR0b25zLmZpbGwoMC4w
LCBtX251bWJlck9mQnV0dG9ucyk7CisKKyAgICBtX2lucHV0U3RyZWFtID0gZ191bml4X2lucHV0
X3N0cmVhbV9uZXcoZmQsIFRSVUUpOworICAgIG1fc291cmNlID0gZ19wb2xsYWJsZV9pbnB1dF9z
dHJlYW1fY3JlYXRlX3NvdXJjZShHX1BPTExBQkxFX0lOUFVUX1NUUkVBTShtX2lucHV0U3RyZWFt
KSwgTlVMTCk7CisgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrKG1fc291cmNlLCAoR1NvdXJjZUZ1
bmMpcmVhZENhbGxiYWNrLCB0aGlzLCBOVUxMKTsKKyAgICBnX3NvdXJjZV9hdHRhY2gobV9zb3Vy
Y2UsIE5VTEwpOworfQorCitHVWRldkdhbWVwYWREZXZpY2U6On5HVWRldkdhbWVwYWREZXZpY2Uo
KQoreworICAgIGdfc291cmNlX3VucmVmKG1fc291cmNlKTsKKyAgICBnX29iamVjdF91bnJlZiht
X2lucHV0U3RyZWFtKTsKK30KKworUGFzc1JlZlB0cjxHYW1lcGFkPiBHVWRldkdhbWVwYWREZXZp
Y2U6OmNyZWF0ZUdhbWVwYWQoaW50IGluZGV4KQoreworICAgIFJlZlB0cjxHYW1lcGFkPiBnYW1l
cGFkID0gR2FtZXBhZDo6Y3JlYXRlKCk7CisgICAgZ2FtZXBhZC0+aWQobV9kZXZpY2VOYW1lKTsK
KyAgICBnYW1lcGFkLT5pbmRleChpbmRleCk7CisgICAgZ2FtZXBhZC0+dGltZXN0YW1wKG1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKKyAgICBnYW1lcGFkLT5heGVzKG1fbnVtYmVyT2ZB
eGVzLCBtX2F4ZXMuZGF0YSgpKTsKKyAgICBnYW1lcGFkLT5idXR0b25zKG1fbnVtYmVyT2ZCdXR0
b25zLCBtX2J1dHRvbnMuZGF0YSgpKTsKKworICAgIHJldHVybiBnYW1lcGFkLnJlbGVhc2UoKTsK
K30KKwordm9pZCBHVWRldkdhbWVwYWREZXZpY2U6OnVwZGF0ZUZyb21JbnB1dFN0cmVhbSgpCit7
CisgICAgc3RydWN0IGpzX2V2ZW50IGV2ZW50OworICAgIGdzc2l6ZSBsZW4gPSBnX3BvbGxhYmxl
X2lucHV0X3N0cmVhbV9yZWFkX25vbmJsb2NraW5nKEdfUE9MTEFCTEVfSU5QVVRfU1RSRUFNKG1f
aW5wdXRTdHJlYW0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZldmVudCwgc2l6ZW9mKGV2ZW50KSwgTlVMTCwgTlVMTCk7CisKKyAg
ICBpZiAobGVuIDwgMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGxlbiA9PSBzaXplb2Yo
ZXZlbnQpKSB7CisgICAgICAgIGlmIChldmVudC50eXBlICYgSlNfRVZFTlRfQVhJUykKKyAgICAg
ICAgICAgIG1fYXhlc1tldmVudC5udW1iZXJdID0gZXZlbnQudmFsdWUgLyAzMjc2Ny4wZjsKKyAg
ICAgICAgZWxzZSBpZiAoZXZlbnQudHlwZSAmIEpTX0VWRU5UX0JVVFRPTikKKyAgICAgICAgICAg
IG1fYnV0dG9uc1tldmVudC5udW1iZXJdID0gZXZlbnQudmFsdWUgLyAxLjBmOworICAgIH0KK30K
KworZ2Jvb2xlYW4gR1VkZXZHYW1lcGFkRGV2aWNlOjpyZWFkQ2FsbGJhY2soR09iamVjdCogcG9s
bGFibGVTdHJlYW0sIGdwb2ludGVyIGRhdGEpCit7CisgICAgR1VkZXZHYW1lcGFkRGV2aWNlKiBn
YW1lcGFkRGV2aWNlID0gcmVpbnRlcnByZXRfY2FzdDxHVWRldkdhbWVwYWREZXZpY2UqPihkYXRh
KTsKKyAgICBnYW1lcGFkRGV2aWNlLT51cGRhdGVGcm9tSW5wdXRTdHJlYW0oKTsKKworICAgIHJl
dHVybiBUUlVFOworfQorCitzdGF0aWMgSGFzaE1hcDxnY2hhciosIE93blB0cjxHVWRldkdhbWVw
YWREZXZpY2U+ID4gZ2FtZXBhZERldmljZU1hcDsKKworCitzdGF0aWMgZ2Jvb2xlYW4gaXNHYW1l
cGFkRGV2aWNlKEdVZGV2RGV2aWNlKiBkZXZpY2UpCit7CisgICAgY29uc3QgZ2NoYXIqIGRldmlj
ZUZpbGUgPSBnX3VkZXZfZGV2aWNlX2dldF9kZXZpY2VfZmlsZShkZXZpY2UpOworICAgIGNvbnN0
IGdjaGFyKiBzeXNmc1BhdGggPSBnX3VkZXZfZGV2aWNlX2dldF9zeXNmc19wYXRoKGRldmljZSk7
CisgICAgaWYgKCFkZXZpY2VGaWxlIHx8ICFzeXNmc1BhdGgpCisgICAgICAgIHJldHVybiBGQUxT
RTsKKworICAgIGlmICghZ191ZGV2X2RldmljZV9oYXNfcHJvcGVydHkoZGV2aWNlLCAiSURfSU5Q
VVQiKSB8fCAhZ191ZGV2X2RldmljZV9oYXNfcHJvcGVydHkoZGV2aWNlLCAiSURfSU5QVVRfSk9Z
U1RJQ0siKSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChHUmVnZXgqLCBzeXNmc1BhdGhSZWdleCwgKGdfcmVnZXhfbmV3KCIvaW5wdXRbMC05XSsvanNb
MC05XSskIiwgKEdSZWdleENvbXBpbGVGbGFncykwLCAoR1JlZ2V4TWF0Y2hGbGFncykwLCAwKSkp
OworICAgIGdib29sZWFuIG1hdGNoID0gZ19yZWdleF9tYXRjaChzeXNmc1BhdGhSZWdleCwgc3lz
ZnNQYXRoLCAoR1JlZ2V4TWF0Y2hGbGFncykwLCAwKTsKKyAgICBpZiAoIW1hdGNoKQorICAgICAg
ICByZXR1cm4gRkFMU0U7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQgb25V
RXZlbnRDYWxsYmFjayhHVWRldkNsaWVudCogdWRldkNsaWVudCwgZ2NoYXIqIGFjdGlvbiwgR1Vk
ZXZEZXZpY2UqIGRldmljZSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBpZiAoIWlzR2FtZXBhZERl
dmljZShkZXZpY2UpKQorICAgICAgICByZXR1cm47CisKKyAgICBjaGFyKiBkZXZpY2VGaWxlID0g
Y29uc3RfY2FzdDxjaGFyKj4oZ191ZGV2X2RldmljZV9nZXRfZGV2aWNlX2ZpbGUoZGV2aWNlKSk7
CisKKyAgICBpZiAoIWdfc3RyY21wMChhY3Rpb24sICJhZGQiKSkgeworICAgICAgICBBU1NFUlQo
IWdhbWVwYWREZXZpY2VNYXAuY29udGFpbnMoZGV2aWNlRmlsZSkpOworICAgICAgICBnYW1lcGFk
RGV2aWNlTWFwLmFkZChkZXZpY2VGaWxlLCBHVWRldkdhbWVwYWREZXZpY2U6OmNyZWF0ZShkZXZp
Y2VGaWxlKSk7CisgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKGFjdGlvbiwgInJlbW92ZSIpKSB7
CisgICAgICAgIEFTU0VSVChnYW1lcGFkRGV2aWNlTWFwLmNvbnRhaW5zKGRldmljZUZpbGUpKTsK
KyAgICAgICAgZ2FtZXBhZERldmljZU1hcC5yZW1vdmUoZGV2aWNlRmlsZSk7CisgICAgfQorfQor
CitzdGF0aWMgdm9pZCBpbml0aWFsaXplR1VkZXZDbGllbnQoKQoreworICAgIHN0YXRpYyBHVWRl
dkNsaWVudCogZ3VkZXZDbGllbnQgPSAwOworICAgIGlmIChndWRldkNsaWVudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgc3RhdGljIGNvbnN0IGdjaGFyKiBzdWJzeXN0ZW1zW10gPSB7ICJpbnB1
dCIsIE5VTEwgfTsKKyAgICBndWRldkNsaWVudCA9IGdfdWRldl9jbGllbnRfbmV3KHN1YnN5c3Rl
bXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoZ3VkZXZDbGllbnQsICJ1ZXZlbnQiLCBHX0NBTExC
QUNLKG9uVUV2ZW50Q2FsbGJhY2spLCBOVUxMKTsKKworICAgIEdMaXN0KiBkZXZpY2VzTGlzdCA9
IGdfdWRldl9jbGllbnRfcXVlcnlfYnlfc3Vic3lzdGVtKGd1ZGV2Q2xpZW50LCBzdWJzeXN0ZW1z
WzBdKTsKKyAgICBmb3IgKEdMaXN0KiBsaXN0SXRlbSA9IGRldmljZXNMaXN0OyBsaXN0SXRlbTsg
bGlzdEl0ZW0gPSBnX2xpc3RfbmV4dChsaXN0SXRlbSkpIHsKKyAgICAgICAgR1VkZXZEZXZpY2Uq
IGRldmljZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R1VkZXZEZXZpY2UqPihsaXN0SXRlbS0+ZGF0YSk7
CisgICAgICAgIGNoYXIqIGRldmljZUZpbGUgPSBjb25zdF9jYXN0PGNoYXIqPihnX3VkZXZfZGV2
aWNlX2dldF9kZXZpY2VfZmlsZShkZXZpY2UpKTsKKyAgICAgICAgaWYgKGlzR2FtZXBhZERldmlj
ZShkZXZpY2UpKQorICAgICAgICAgICAgZ2FtZXBhZERldmljZU1hcC5zZXQoZGV2aWNlRmlsZSwg
R1VkZXZHYW1lcGFkRGV2aWNlOjpjcmVhdGUoZGV2aWNlRmlsZSkpOworICAgIH0KKworICAgIGdf
bGlzdF9mcmVlX2Z1bGwoZGV2aWNlc0xpc3QsIGdfb2JqZWN0X3VucmVmKTsKK30KKwordm9pZCBz
YW1wbGVHYW1lcGFkcyhHYW1lcGFkTGlzdCogaW50bykKK3sKKyAgICBpbml0aWFsaXplR1VkZXZD
bGllbnQoKTsKKworICAgIGludCBpbmRleCA9IDA7CisgICAgSGFzaE1hcDxnY2hhciosIE93blB0
cjxHVWRldkdhbWVwYWREZXZpY2U+ID46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGdhbWVwYWREZXZp
Y2VNYXAuZW5kKCk7CisgICAgZm9yIChIYXNoTWFwPGdjaGFyKiwgT3duUHRyPEdVZGV2R2FtZXBh
ZERldmljZT4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBnYW1lcGFkRGV2aWNlTWFwLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBHVWRldkdhbWVwYWREZXZpY2UqIGRldmljZSA9
IGl0LT5zZWNvbmQuZ2V0KCk7CisgICAgICAgIFJlZlB0cjxHYW1lcGFkPiBnYW1lcGFkID0gZGV2
aWNlLT5jcmVhdGVHYW1lcGFkKGluZGV4KTsKKyAgICAgICAgaW50by0+c2V0KGluZGV4KyssIGdh
bWVwYWQucmVsZWFzZSgpKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
R05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQppbmRleCAy
ZDVhZDBhN2E1NzMyNWZlYWM1M2NiNzQxNDRkMTgzZWM3NjcwNzcxLi45MzZjMDI5YzY0NDU3ODI3
M2Q5OGZiZTk0Y2E5NjhjYWMwNWU4NTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9H
TlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAt
ODgsOSArODgsMTEgQEAgbGlid2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05A
X0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQkEKIAkkKEZSRUVUWVBFX0xJQlMp
IFwKIAkkKEdBSUxfTElCUykgXAogCSQoR0VPQ0xVRV9MSUJTKSBcCisJJChHSU9fVU5JWF9MSUJT
KSBcCiAJJChHTElCX0xJQlMpIFwKIAkkKEdTVFJFQU1FUl9MSUJTKSBcCiAJJChHVEtfTElCUykg
XAorCSQoR1VERVZfTElCUykgXAogCSQoSlBFR19MSUJTKSBcCiAJJChMSUJTT1VQX0xJQlMpIFwK
IAkkKExJQlhNTF9MSUJTKSBcCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5k
ZXggMTA5MjZjZWRkNDdmZDY2MTE4NDlmNjNjNThiMjg1YjljMTM2MWQ0Yy4uYzBlY2FmZTAyNGVi
NTMwNTFkZDM5OWMzMjhlZmZhMDc4NTdmZmU2NyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBi
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA1LTI1ICBaYW4gRG9iZXJzZWsgIDx6
YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0d0a10gQWRkIHN1cHBvcnQgZm9yIHRo
ZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAxMi0wNS0yNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBu
b3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIC0tZW5hYmxlLWNzczMtZmxl
eGJveCBjb25maWd1cmUgb3B0aW9uIGFmdGVyIHIxMTgzMDQuCmRpZmYgLS1naXQgYS9jb25maWd1
cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggNWNhYTA5MWRiNjJjMDQ5MzM0ZDhlNDliM2Q5MzU0
YWRjY2VlZGU1ZC4uOTIwMTU0M2E1YTIzOWM4YzYxNDJjMmVlMzNlNDE2NmQxZjIwMGY1NCAxMDA2
NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMTI1OSw2ICsxMjU5
LDE2IEBAIGlmIHRlc3QgIiRlbmFibGVfd2Via2l0MiIgPSAieWVzIjsgdGhlbgogICAgQUNfU1VC
U1QoW0FUU1BJMl9MSUJTXSkKIGZpCiAKK2lmIHRlc3QgIiRlbmFibGVfZ2FtZXBhZCIgPSAieWVz
IjsgdGhlbgorICAgUEtHX0NIRUNLX01PRFVMRVMoW0dJT19VTklYXSwgW2dpby11bml4LTIuMF0p
CisgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR1VERVZdLCBbZ3VkZXYtMS4wXSkKKworICAgQUNfU1VC
U1QoR0lPX1VOSVhfQ0ZMQUdTKQorICAgQUNfU1VCU1QoR0lPX1VOSVhfTElCUykKKyAgIEFDX1NV
QlNUKEdVREVWX0NGTEFHUykKKyAgIEFDX1NVQlNUKEdVREVWX0xJQlMpCitmaQorCiAjIGNoZWNr
IGZvciBjb2RlIGNvdmVyYWdlIHN1cHBvcnQKIGlmIHRlc3QgIiRlbmFibGVfY292ZXJhZ2UiID0g
InllcyI7IHRoZW4KICAgIENPVkVSQUdFX0NGTEFHUz0iLU1EIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145446</attachid>
            <date>2012-06-02 09:23:21 -0700</date>
            <delta_ts>2012-06-05 12:59:57 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-87503-20120602182320.patch</filename>
            <type>text/plain</type>
            <size>31284</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE4YmExOWQ5MmMwMGNk
OTkyNzY2MWIyZjMyYzU0N2I0NWI1YzZlNi4uZTZkMmYwZmYyNzA4NzU1NmIwYTM1Y2FjMmJiZTFm
Zjg0YTkyZGY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTA2LTAyICBaYW4g
RG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0d0a10gQWRkIHN1
cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9k
dWxlcy9nYW1lcGFkL0dhbWVwYWQuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvR05V
bWFrZWZpbGUuYW06CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzQXJyYXkpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChHYW1lcGFkRGV2aWNlSW5wdXRQcm92aWRlckdVZGV2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdhbWVwYWREZXZpY2VJbnB1dFByb3ZpZGVyR1VkZXY6OkdhbWVwYWREZXZpY2VJbnB1dFBy
b3ZpZGVyR1VkZXYpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUlucHV0UHJvdmlk
ZXJHVWRldjo6fkdhbWVwYWREZXZpY2VJbnB1dFByb3ZpZGVyR1VkZXYpOgorICAgICAgICAoV2Vi
Q29yZTo6R2FtZXBhZERldmljZUlucHV0UHJvdmlkZXJHVWRldjo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VJbnB1dFByb3ZpZGVyR1VkZXY6OmZpbGVEZXNjcmlw
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VJbnB1dFByb3ZpZGVyR1VkZXY6
OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VJbnB1dFByb3ZpZGVyR1Vk
ZXY6OnJlYWRGcm9tSW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmlj
ZUlucHV0UHJvdmlkZXJHVWRldjo6cmVhZENhbGxiYWNrKToKKyAgICAgICAgKEdhbWVwYWREZXZp
Y2VNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZU1hcHBlcjo6bGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VNYXBwZXI6OkdhbWVwYWREZXZpY2VN
YXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZU1hcHBlcjo6fkdhbWVwYWRE
ZXZpY2VNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZU1hcHBlcjo6cmVn
aXN0ZXJEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZU1hcHBlcjo6dW5y
ZWdpc3RlckRldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTWFwcGVyOjp1
cGRhdGVHYW1lcGFkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTWFwcGVy
OjpvblVFdmVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VNYXBw
ZXI6OmlzR2FtZXBhZERldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW1wbGVHYW1lcGFkcyk6
CisgICAgICAgICogcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VMaW51
eDo6R2FtZXBhZERldmljZUxpbnV4KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VM
aW51eDo6c2V0UHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4
OjpyZW1vdmVQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTGludXg6
OnVwZGF0ZUdhbWVwYWQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4Ojp1
cGRhdGVGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTGludXg6OnNl
dHVwKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VMaW51eDo6bm9ybWFsaXplQXhp
c1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VMaW51eDo6bm9ybWFsaXpl
QnV0dG9uVmFsdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51
eC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoR2FtZXBhZERldmljZUxp
bnV4SW5wdXRQcm92aWRlckNsaWVudCk6CisgICAgICAgIChHYW1lcGFkRGV2aWNlTGludXhJbnB1
dFByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VMaW51eElucHV0UHJv
dmlkZXI6On5HYW1lcGFkRGV2aWNlTGludXhJbnB1dFByb3ZpZGVyKToKKyAgICAgICAgKEdhbWVw
YWREZXZpY2VMaW51eCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTGludXg6OmNy
ZWF0ZURldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTGludXg6OmlzTnVs
bCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTGludXg6OmNvbm5lY3RlZCk6CisK
IDIwMTItMDYtMDEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTkyMTMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggOWVkNDIyY2FlMTc3ZTZjYTU4YjQ5Yjk1ZDNkNjhmZTQyYmRhZjI3YS4uN2Y2NzA0YzFk
ZWRiMzAyNWVlZjEzYzI1YTFhYzkxOWZjYWYzMjg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDEyLTA2LTAyICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5j
b20+CisKKyAgICAgICAgW0d0a10gQWRkIHN1cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorCiAyMDEyLTA1LTMxICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJFR1JFU1NJT04ocjExNzU3Mik6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxj
aGVjay1hc3luYy1yZW1vdmUtZnJhbWUuaHRtbCBjcmFzaGVzIG9uIE1hYwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDE2NjY3NWNhMjk0ZjA5YTVmODE5MGNkMDAxMDM1ZjcxMWYxYjUzYzUuLjFjZjM4MzFjYjE2MjIy
ZDJiNzY4MjUzODM1NzliMjcwYjZhOTZiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0wNi0wMiAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAg
ICAgIFtHdGtdIEFkZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NTAzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKwogMjAx
Mi0wNi0wMSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW1F0XSBNb3ZlIHN1c3BlbnNpb24gdG8gUXRWaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGE5N2QyNGZiOGViNzM2YWRiOTI4MDdmMTMz
YTEwOGU2ZDBmOGQ1NzMuLjQ1MzUzZGQyNDE0Y2M3ODRlNzQ2MjM2MzU1ZDdhZWE5ZjM4MjU3NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMiw2ICsxMiw3IEBAIHdlYmNvcmVfY3BwZmxhZ3Mg
Kz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFO
RyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbSBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nYW1lcGFkIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
YiBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbSBcCkBA
IC02Nyw2ICs2OCw3IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAgXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZyBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYiBcCisJLUkkKHNyY2RpcikvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGludXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2sgXApAQCAtODM4LDYgKzg0MCw3IEBAIERlcml2ZWRTb3VyY2VzL0FOR0xFL2dsc2xh
bmdfdGFiLmg6IERlcml2ZWRTb3VyY2VzL0FOR0xFL2dsc2xhbmdfdGFiLmNwcAogCiBJRExfUEFU
SCA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAorICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9nYW1lcGFkIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9jYXRpb24g
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9tZWRpYXN0cmVhbSBcCkBAIC05MzIsNiArOTM1LDcgQEAgbGliV2ViQ29yZV9sYV9DUFBG
TEFHUyA9IFwKIAkkKENMVVRURVJfQ0ZMQUdTKSBcCiAJJChDT1ZFUkFHRV9DRkxBR1MpIFwKIAkk
KEVOQ0hBTlRfQ0ZMQUdTKSBcCisJJChHQU1FUEFEX0NGTEFHUykgXAogCSQoR0VPQ0xVRV9DRkxB
R1MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCkBAIC05OTgs
NiArMTAwMiw3IEBAIGxpYldlYkNvcmVHdGtfbGFfQ1BQRkxBR1MgPSBcCiAKIEVYVFJBX0RJU1Qg
Kz0gXAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS8qLmlkbCkgXAorCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2FtZXBhZC8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNk
aXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vKi5pZGwpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDlhOThiYTA4NzlhYTgyZDkyMmVmN2ZhMzcxYjU0MGIz
NDQzOGE3ZDguLjcxODBkY2RjODUzZTQ1ZTRmZTUwOTg2MDIyNTkyNzEzNGFjYmI3M2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTg5LDYgKzE4OSwxMCBAQCB3ZWJjb3JlX2J1
aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGbG9hdDMyQXJyYXku
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zsb2F0NjRBcnJheS5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNGbG9hdDY0QXJyYXkuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dhbWVwYWQuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2FtZXBhZC5o
IFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2FtZXBhZExpc3QuY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTR2FtZXBhZExpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dlb2xvY2F0aW9uLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dlb2xvY2F0
aW9uLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHZW9wb3NpdGlvbi5jcHAgXApAQCAt
Njc2LDYgKzY4MCw5IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9YUGF0aEdyYW1tYXIuaAogCiBkb21fYmluZGluZ19pZGxzICs9IFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVz
L2dhbWVwYWQvR2FtZXBhZExpc3QuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvZ2FtZXBhZC9O
YXZpZ2F0b3JHYW1lcGFkLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb3Bvc2l0
aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xv
Y2F0aW9uLmlkbCBcCkBAIC0xMDQ5LDYgKzEwNTYsMTIgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9XZWJLaXRGbGFncy5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyQ29udGV4dEZpbGVT
eXN0ZW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyQ29u
dGV4dEZpbGVTeXN0ZW0uaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVw
YWQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExpc3QuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExpc3QuaCBcCisJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgXApAQCAtMzEzOCw2ICszMTUxLDcg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lz
dGVtLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zsb2F0Q29udmVyc2lvbi5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GcmFjdGlvbmFsTGF5b3V0VW5pdC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9HYW1lcGFkcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9I
YXNoVG9vbHMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hpc3RvZ3JhbVN1cHBvcnQuaCBcCkBAIC0z
MzgzLDYgKzMzOTcsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9FcnJvcnNHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJy
b3JzR3RrLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LVVJMR3RrLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0xvZ2dpbmdHdGsuY3BwIFwKQEAgLTM0NDMsNiArMzQ1OCw4IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmggXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
YW1lcGFkL0dhbWVwYWQuaWRsCmluZGV4IGUwMGUyZGMzZDg4NTVjZjhlZjA0NTY1MzE3ZjJjNzQ2
MDM3YjNhYTMuLjJjYWRlMDhjZDMxMTdkNDgxZmM3MTY5OGQwZDllNWM2ZDkyOTNjZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5pZGwKQEAgLTMxLDggKzMxLDgg
QEAgbW9kdWxlIGRvbSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7
CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGluZGV4OwogICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIHRpbWVzdGFtcDsKLSAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0W10gYXhlczsKLSAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGZsb2F0W10gYnV0dG9uczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHNlcXVl
bmNlPGZsb2F0PiBheGVzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgc2VxdWVuY2U8Zmxv
YXQ+IGJ1dHRvbnM7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvR05VbWFrZWZpbGUuYW0KaW5kZXggYzcwMjUyODZkMGZhZTc0ZTI1YWU4ZTJkMzEwNzIx
NTc5NWEzNzhmNS4uZmEwNDU0MjAzY2I2Y2FiM2JjMTE2ODY4ZGE4ZGM2M2I5YjY3ZWNjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCkBAIC02
Niw2ICs2NiwxMCBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVk
U291cmNlcy93ZWJraXQvV2ViS2l0RE9NRmlsZUxpc3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXQvV2ViS2l0RE9NRmlsZUxpc3RQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtp
dC9XZWJLaXRET01GaWxlUHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0
RE9NR2FtZXBhZC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01HYW1lcGFk
TGlzdC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01HYW1lcGFkTGlzdFBy
aXZhdGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUdhbWVwYWRQcml2YXRl
LmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01HZW9sb2NhdGlvbi5jcHAgXAog
CURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01HZW9sb2NhdGlvblByaXZhdGUuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUhpc3RvcnkuY3BwIFwKQEAgLTI5NSw2ICsy
OTksOCBAQCB3ZWJraXRndGtfYnVpbHRfaF9hcGkgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtp
dC9XZWJLaXRET01CbG9iLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01GaWxl
LmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01GaWxlTGlzdC5oIFwKKwlEZXJp
dmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NR2FtZXBhZC5oIFwKKwlEZXJpdmVkU291cmNlcy93
ZWJraXQvV2ViS2l0RE9NR2FtZXBhZExpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dl
YktpdERPTUdlb2xvY2F0aW9uLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01I
VE1MQW5jaG9yRWxlbWVudC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NSFRN
TEFwcGxldEVsZW1lbnQuaCBcCkBAIC00MjgsNyArNDM0LDYgQEAgd2Via2l0Z3RrX2dkb21fYnVp
bHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUhUTUxQcm9w
ZXJ0aWVzQ29sbGVjdGlvblByaXZhdGUuaAogZW5kaWYKIAotCiBpZiBFTkFCTEVfV0VCX1RJTUlO
Rwogd2Via2l0Z3RrX2J1aWx0X2hfYXBpICs9IFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNv
dXJjZXMvd2Via2l0L1dlYktpdERPTVBlcmZvcm1hbmNlLmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCAxYmU2MzEwYThjODhiYmUyZmNkZGQwNGNlMGRj
ZTM1YjdhODEyZjUzLi5iNzI0NWVjZGI5OGQ1ZGFmMWIwYTM4OTM0ODYwMzBlZjcxM2ZkMTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMzAzLDYgKzMw
MywxOCBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgICAgICByZXR1cm4gSlND
Ojpjb25zdHJ1Y3RBcnJheShleGVjLCBnbG9iYWxPYmplY3QsIGFycmF5KTsKICAgICB9CiAKKyAg
ICB0ZW1wbGF0ZTw+CisgICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc0FycmF5KEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8
ZmxvYXQ+JiBpdGVyYXRvcikKKyAgICB7CisgICAgICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJyYXk7CisgICAgICAgIFZlY3RvcjxmbG9hdD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGl0
ZXJhdG9yLmVuZCgpOworCisgICAgICAgIGZvciAoVmVjdG9yPGZsb2F0Pjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBpdGVyYXRvci5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBh
cnJheS5hcHBlbmQoSlNDOjpqc051bWJlcigqaXQpKTsKKworICAgICAgICByZXR1cm4gSlNDOjpj
b25zdHJ1Y3RBcnJheShleGVjLCBnbG9iYWxPYmplY3QsIGFycmF5KTsKKyAgICB9CisKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVD4KICAgICBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiZWQzNWRlODhiNjg2ZGFm
ZjQ4MGE4ZGI1MjcxMDc5NjFhYjViNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwCkBAIC0wLDAgKzEsMjU0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIFphbiBEb2JlcnNlayA8emFuZG9iZXJzZWtAZ21haWwuY29tPgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZHMuaCIKKwor
I2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSAiR2FtZXBhZERldmljZUxpbnV4LmgiCisj
aW5jbHVkZSAiR2FtZXBhZExpc3QuaCIKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGdp
by9ndW5peGlucHV0c3RyZWFtLmg+CisjaW5jbHVkZSA8Z3VkZXYvZ3VkZXYuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBHYW1lcGFkRGV2aWNlSW5wdXRQcm92aWRlckdVZGV2IDogcHVibGljIEdhbWVw
YWREZXZpY2VMaW51eElucHV0UHJvdmlkZXIgeworcHVibGljOgorICAgIEdhbWVwYWREZXZpY2VJ
bnB1dFByb3ZpZGVyR1VkZXYoU3RyaW5nIGRldmljZUZpbGUpOworCisgICAgLy8gR2FtZXBhZERl
dmljZUxpbnV4SW5wdXRQcm92aWRlcgorICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoR2FtZXBh
ZERldmljZUxpbnV4SW5wdXRQcm92aWRlckNsaWVudCopOworICAgIHZpcnR1YWwgaW50IGZpbGVE
ZXNjcmlwdG9yKCk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CisKKyAgICB2b2lkIHJlYWRG
cm9tSW5wdXRTdHJlYW0oKTsKKworcHJpdmF0ZToKKyAgICB+R2FtZXBhZERldmljZUlucHV0UHJv
dmlkZXJHVWRldigpOworCisgICAgU3RyaW5nIG1fZGV2aWNlRmlsZTsKKyAgICBpbnQgbV9maWxl
RGVzY3JpcHRvcjsKKworICAgIEdhbWVwYWREZXZpY2VMaW51eElucHV0UHJvdmlkZXJDbGllbnQq
IG1fY2xpZW50OworCisgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IG1faW5wdXRTdHJlYW07Cisg
ICAgR1NvdXJjZSogbV9zb3VyY2U7CisgICAgc3RhdGljIGdib29sZWFuIHJlYWRDYWxsYmFjayhH
T2JqZWN0KiBwb2xsYWJsZVN0cmVhbSwgZ3BvaW50ZXIgZGF0YSk7Cit9OworCitHYW1lcGFkRGV2
aWNlSW5wdXRQcm92aWRlckdVZGV2OjpHYW1lcGFkRGV2aWNlSW5wdXRQcm92aWRlckdVZGV2KFN0
cmluZyBkZXZpY2VGaWxlKQorICAgIDogbV9jbGllbnQoMCkKKyAgICAsIG1faW5wdXRTdHJlYW0o
MCkKKyAgICAsIG1fc291cmNlKDApCit7CisgICAgbV9maWxlRGVzY3JpcHRvciA9IG9wZW4oZGV2
aWNlRmlsZS51dGY4KCkuZGF0YSgpLCBPX1JET05MWSB8IE9fTk9OQkxPQ0spOworfQorCitHYW1l
cGFkRGV2aWNlSW5wdXRQcm92aWRlckdVZGV2Ojp+R2FtZXBhZERldmljZUlucHV0UHJvdmlkZXJH
VWRldigpCit7CisgICAgZ19zb3VyY2VfZGVzdHJveShtX3NvdXJjZSk7Cit9CisKK3ZvaWQgR2Ft
ZXBhZERldmljZUlucHV0UHJvdmlkZXJHVWRldjo6c2V0Q2xpZW50KEdhbWVwYWREZXZpY2VMaW51
eElucHV0UHJvdmlkZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVudDsK
K30KKworaW50IEdhbWVwYWREZXZpY2VJbnB1dFByb3ZpZGVyR1VkZXY6OmZpbGVEZXNjcmlwdG9y
KCkKK3sKKyAgICByZXR1cm4gbV9maWxlRGVzY3JpcHRvcjsKK30KKwordm9pZCBHYW1lcGFkRGV2
aWNlSW5wdXRQcm92aWRlckdVZGV2OjpzdGFydCgpCit7CisgICAgQVNTRVJUKG1fZmlsZURlc2Ny
aXB0b3IgPj0gMCk7CisgICAgQVNTRVJUKG1fY2xpZW50KTsKKworICAgIG1faW5wdXRTdHJlYW0g
PSBnX3VuaXhfaW5wdXRfc3RyZWFtX25ldyhtX2ZpbGVEZXNjcmlwdG9yLCBUUlVFKTsKKyAgICBt
X3NvdXJjZSA9IGdfcG9sbGFibGVfaW5wdXRfc3RyZWFtX2NyZWF0ZV9zb3VyY2UoR19QT0xMQUJM
RV9JTlBVVF9TVFJFQU0obV9pbnB1dFN0cmVhbS5nZXQoKSksIDApOworICAgIGdfc291cmNlX3Nl
dF9jYWxsYmFjayhtX3NvdXJjZSwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4ocmVhZENh
bGxiYWNrKSwgdGhpcywgMCk7CisgICAgZ19zb3VyY2VfYXR0YWNoKG1fc291cmNlLCBOVUxMKTsK
K30KKwordm9pZCBHYW1lcGFkRGV2aWNlSW5wdXRQcm92aWRlckdVZGV2OjpyZWFkRnJvbUlucHV0
U3RyZWFtKCkKK3sKKyAgICBzdHJ1Y3QganNfZXZlbnQgZXZlbnQ7CisgICAgR093blB0cjxHRXJy
b3I+IGVycm9yOworICAgIGdzc2l6ZSBsZW4gPSBnX3BvbGxhYmxlX2lucHV0X3N0cmVhbV9yZWFk
X25vbmJsb2NraW5nKEdfUE9MTEFCTEVfSU5QVVRfU1RSRUFNKG1faW5wdXRTdHJlYW0uZ2V0KCkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZldmVudCwgc2l6ZW9mKGV2ZW50KSwgMCwgJmVycm9yLm91dFB0cigpKTsKKworICAgIGlm
IChlcnJvciB8fCBsZW4gIT0gc2l6ZW9mKGV2ZW50KSkgeworICAgICAgICAvLyBGSVhNRTogUHJv
cGVybHkgaGFuZGxlIEdfSU9fRVJST1JfV09VTERfQkxPQ0sKKyAgICAgICAgLy8gRklYTUU6IFBy
b3Blcmx5IGxvZyB0aGUgZXJyb3IuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Ns
aWVudC0+dXBkYXRlRm9yRXZlbnQoZXZlbnQpOworfQorCitnYm9vbGVhbiBHYW1lcGFkRGV2aWNl
SW5wdXRQcm92aWRlckdVZGV2OjpyZWFkQ2FsbGJhY2soR09iamVjdCogcG9sbGFibGVTdHJlYW0s
IGdwb2ludGVyIGRhdGEpCit7CisgICAgR2FtZXBhZERldmljZUlucHV0UHJvdmlkZXJHVWRldiog
Z2FtZXBhZERldmljZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R2FtZXBhZERldmljZUlucHV0UHJvdmlk
ZXJHVWRldio+KGRhdGEpOworICAgIGdhbWVwYWREZXZpY2UtPnJlYWRGcm9tSW5wdXRTdHJlYW0o
KTsKKworICAgIHJldHVybiBUUlVFOworfQorCitjbGFzcyBHYW1lcGFkRGV2aWNlTWFwcGVyIHsK
K3B1YmxpYzoKKyAgICBHYW1lcGFkRGV2aWNlTWFwcGVyKHVuc2lnbmVkIGxlbmd0aCk7CisKKyAg
ICB2b2lkIHJlZ2lzdGVyRGV2aWNlKFN0cmluZyBkZXZpY2VGaWxlKTsKKyAgICB2b2lkIHVucmVn
aXN0ZXJEZXZpY2UoU3RyaW5nIGRldmljZUZpbGUpOworCisgICAgdW5zaWduZWQgbGVuZ3RoKCkg
eyByZXR1cm4gbV9sZW5ndGg7IH0KKyAgICB2b2lkIHVwZGF0ZUdhbWVwYWRMaXN0KEdhbWVwYWRM
aXN0Kik7CisKK3ByaXZhdGU6CisgICAgfkdhbWVwYWREZXZpY2VNYXBwZXIoKTsKKworICAgIHVu
c2lnbmVkIG1fbGVuZ3RoOworICAgIFZlY3RvcjxPd25QdHI8R2FtZXBhZERldmljZUxpbnV4PiA+
IG1fc2xvdHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIEdhbWVwYWREZXZpY2VMaW51eCo+IG1fZGV2
aWNlTWFwOworCisgICAgR1JlZlB0cjxHVWRldkNsaWVudD4gbV9ndWRldkNsaWVudDsKKworICAg
IHN0YXRpYyB2b2lkIG9uVUV2ZW50Q2FsbGJhY2soR1VkZXZDbGllbnQqLCBnY2hhciogYWN0aW9u
LCBHVWRldkRldmljZSosIGdwb2ludGVyIGRhdGEpOworICAgIHN0YXRpYyBnYm9vbGVhbiBpc0dh
bWVwYWREZXZpY2UoR1VkZXZEZXZpY2UqKTsKK307CisKK0dhbWVwYWREZXZpY2VNYXBwZXI6Okdh
bWVwYWREZXZpY2VNYXBwZXIodW5zaWduZWQgbGVuZ3RoKQorICAgIDogbV9sZW5ndGgobGVuZ3Ro
KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKQorICAgICAg
ICBtX3Nsb3RzLmFwcGVuZChHYW1lcGFkRGV2aWNlTGludXg6OmNyZWF0ZURldmljZSgpKTsKKwor
ICAgIHN0YXRpYyBjb25zdCBnY2hhciogc3Vic3lzdGVtc1tdID0geyAiaW5wdXQiLCAwIH07Cisg
ICAgbV9ndWRldkNsaWVudCA9IGdfdWRldl9jbGllbnRfbmV3KHN1YnN5c3RlbXMpOworICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV9ndWRldkNsaWVudC5nZXQoKSwgInVldmVudCIsIEdfQ0FMTEJBQ0so
b25VRXZlbnRDYWxsYmFjayksIHRoaXMpOworCisgICAgR0xpc3QqIGRldmljZXNMaXN0ID0gZ191
ZGV2X2NsaWVudF9xdWVyeV9ieV9zdWJzeXN0ZW0obV9ndWRldkNsaWVudC5nZXQoKSwgc3Vic3lz
dGVtc1swXSk7CisgICAgZm9yIChHTGlzdCogbGlzdEl0ZW0gPSBkZXZpY2VzTGlzdDsgbGlzdEl0
ZW07IGxpc3RJdGVtID0gZ19saXN0X25leHQobGlzdEl0ZW0pKSB7CisgICAgICAgIEdVZGV2RGV2
aWNlKiBkZXZpY2UgPSByZWludGVycHJldF9jYXN0PEdVZGV2RGV2aWNlKj4obGlzdEl0ZW0tPmRh
dGEpOworICAgICAgICBTdHJpbmcgZGV2aWNlRmlsZSA9IFN0cmluZyhnX3VkZXZfZGV2aWNlX2dl
dF9kZXZpY2VfZmlsZShkZXZpY2UpKTsKKyAgICAgICAgaWYgKGlzR2FtZXBhZERldmljZShkZXZp
Y2UpKQorICAgICAgICAgICAgcmVnaXN0ZXJEZXZpY2UoZGV2aWNlRmlsZSk7CisgICAgICAgIGdf
b2JqZWN0X3VucmVmKGRldmljZSk7CisgICAgfQorCisgICAgZ19saXN0X2ZyZWUoZGV2aWNlc0xp
c3QpOworfQorCitHYW1lcGFkRGV2aWNlTWFwcGVyOjp+R2FtZXBhZERldmljZU1hcHBlcigpCit7
CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fZ3VkZXZDbGllbnQu
Z2V0KCksIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIDAsIDAsIHRoaXMpOworfQorCit2b2lk
IEdhbWVwYWREZXZpY2VNYXBwZXI6OnJlZ2lzdGVyRGV2aWNlKFN0cmluZyBkZXZpY2VGaWxlKQor
eworICAgIEFTU0VSVCghbV9kZXZpY2VNYXAuY29udGFpbnMoZGV2aWNlRmlsZSkpOworCisgICAg
dW5zaWduZWQgaW5kZXg7CisgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbV9sZW5ndGg7IGlu
ZGV4KyspIHsKKyAgICAgICAgaWYgKG1fc2xvdHNbaW5kZXhdLT5pc051bGwoKSkKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChpbmRleCA+PSBtX2xlbmd0aCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9zbG90c1tpbmRleF0tPnNldFByb3ZpZGVyKG5ldyBHYW1lcGFkRGV2
aWNlSW5wdXRQcm92aWRlckdVZGV2KGRldmljZUZpbGUpKTsKKyAgICBtX2RldmljZU1hcC5hZGQo
ZGV2aWNlRmlsZSwgbV9zbG90c1tpbmRleF0uZ2V0KCkpOworfQorCit2b2lkIEdhbWVwYWREZXZp
Y2VNYXBwZXI6OnVucmVnaXN0ZXJEZXZpY2UoU3RyaW5nIGRldmljZUZpbGUpCit7CisgICAgQVNT
RVJUKG1fZGV2aWNlTWFwLmNvbnRhaW5zKGRldmljZUZpbGUpKTsKKworICAgIEdhbWVwYWREZXZp
Y2VMaW51eCogZ2FtZXBhZERldmljZSA9IG1fZGV2aWNlTWFwLnRha2UoZGV2aWNlRmlsZSk7Cisg
ICAgZ2FtZXBhZERldmljZS0+cmVtb3ZlUHJvdmlkZXIoKTsKK30KKwordm9pZCBHYW1lcGFkRGV2
aWNlTWFwcGVyOjp1cGRhdGVHYW1lcGFkTGlzdChHYW1lcGFkTGlzdCogaW50bykKK3sKKyAgICBB
U1NFUlQobV9sZW5ndGggPT0gaW50by0+bGVuZ3RoKCkpOworCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKG1fc2xvdHNbaV0tPmNvbm5l
Y3RlZCgpKSB7CisgICAgICAgICAgICBSZWZQdHI8R2FtZXBhZD4gZ2FtZXBhZCA9IGludG8tPml0
ZW0oaSk7CisgICAgICAgICAgICBpZiAoIWdhbWVwYWQpCisgICAgICAgICAgICAgICAgZ2FtZXBh
ZCA9IEdhbWVwYWQ6OmNyZWF0ZSgpOworCisgICAgICAgICAgICBnYW1lcGFkLT5pbmRleChpKTsK
KyAgICAgICAgICAgIG1fc2xvdHNbaV0tPnVwZGF0ZUdhbWVwYWQoZ2FtZXBhZC5nZXQoKSk7Cisg
ICAgICAgICAgICBpbnRvLT5zZXQoaSwgZ2FtZXBhZCk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgaW50by0+c2V0KGksIDApOworICAgIH0KK30KKwordm9pZCBHYW1lcGFkRGV2aWNlTWFw
cGVyOjpvblVFdmVudENhbGxiYWNrKEdVZGV2Q2xpZW50KiB1ZGV2Q2xpZW50LCBnY2hhciogYWN0
aW9uLCBHVWRldkRldmljZSogZGV2aWNlLCBncG9pbnRlciBkYXRhKQoreworICAgIGlmICghaXNH
YW1lcGFkRGV2aWNlKGRldmljZSkpCisgICAgICAgIHJldHVybjsKKworICAgIEdhbWVwYWREZXZp
Y2VNYXBwZXIqIGRldmljZU1hcHBlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8R2FtZXBhZERldmljZU1h
cHBlcio+KGRhdGEpOworICAgIFN0cmluZyBkZXZpY2VGaWxlID0gU3RyaW5nKGdfdWRldl9kZXZp
Y2VfZ2V0X2RldmljZV9maWxlKGRldmljZSkpOworCisgICAgaWYgKCFnX3N0cmNtcDAoYWN0aW9u
LCAiYWRkIikpCisgICAgICAgIGRldmljZU1hcHBlci0+cmVnaXN0ZXJEZXZpY2UoZGV2aWNlRmls
ZSk7CisgICAgZWxzZSBpZiAoIWdfc3RyY21wMChhY3Rpb24sICJyZW1vdmUiKSkKKyAgICAgICAg
ZGV2aWNlTWFwcGVyLT51bnJlZ2lzdGVyRGV2aWNlKGRldmljZUZpbGUpOworfQorCitnYm9vbGVh
biBHYW1lcGFkRGV2aWNlTWFwcGVyOjppc0dhbWVwYWREZXZpY2UoR1VkZXZEZXZpY2UqIGRldmlj
ZSkKK3sKKyAgICBjb25zdCBnY2hhciogZGV2aWNlRmlsZSA9IGdfdWRldl9kZXZpY2VfZ2V0X2Rl
dmljZV9maWxlKGRldmljZSk7CisgICAgY29uc3QgZ2NoYXIqIHN5c2ZzUGF0aCA9IGdfdWRldl9k
ZXZpY2VfZ2V0X3N5c2ZzX3BhdGgoZGV2aWNlKTsKKyAgICBpZiAoIWRldmljZUZpbGUgfHwgIXN5
c2ZzUGF0aCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKCFnX3VkZXZfZGV2aWNl
X2hhc19wcm9wZXJ0eShkZXZpY2UsICJJRF9JTlBVVCIpIHx8ICFnX3VkZXZfZGV2aWNlX2hhc19w
cm9wZXJ0eShkZXZpY2UsICJJRF9JTlBVVF9KT1lTVElDSyIpKQorICAgICAgICByZXR1cm4gRkFM
U0U7CisKKyAgICByZXR1cm4gZ19zdHJfaGFzX3ByZWZpeChkZXZpY2VGaWxlLCAiL2Rldi9pbnB1
dC9qcyIpOworfQorCit2b2lkIHNhbXBsZUdhbWVwYWRzKEdhbWVwYWRMaXN0KiBpbnRvKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoR2FtZXBhZERldmljZU1hcHBlciwgZ2FtZXBhZERldmlj
ZU1hcHBlciwgKGludG8tPmxlbmd0aCgpKSk7CisgICAgZ2FtZXBhZERldmljZU1hcHBlci51cGRh
dGVHYW1lcGFkTGlzdChpbnRvKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTQzZDJiZjQzZTVlOGFk
MjQ0MjAyMDFjNzYzMGU1NWQ0OGJkYmQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcApAQCAtMCwwICsxLDEyNCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBaYW4gRG9iZXJzZWsgPHphbmRvYmVyc2VrQGdt
YWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
CisgKiBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVw
YWREZXZpY2VMaW51eC5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1l
cGFkLmgiCisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
R2FtZXBhZERldmljZUxpbnV4OjpHYW1lcGFkRGV2aWNlTGludXgoKQorICAgIDogbV9pc051bGwo
dHJ1ZSkKKyAgICAsIG1fY29ubmVjdGVkKGZhbHNlKQorICAgICwgbV9sYXN0VGltZXN0YW1wKDAp
CisgICAgLCBtX251bWJlck9mQXhlcygwKQorICAgICwgbV9udW1iZXJPZkJ1dHRvbnMoMCkKK3sK
K30KKwordm9pZCBHYW1lcGFkRGV2aWNlTGludXg6OnNldFByb3ZpZGVyKEdhbWVwYWREZXZpY2VM
aW51eElucHV0UHJvdmlkZXIqIHByb3ZpZGVyKQoreworICAgIEFTU0VSVChtX2lzTnVsbCk7CisK
KyAgICBtX3Byb3ZpZGVyID0gYWRvcHRQdHIocHJvdmlkZXIpOworICAgIG1fcHJvdmlkZXItPnNl
dENsaWVudCh0aGlzKTsKKyAgICBzZXR1cCgpOworfQorCit2b2lkIEdhbWVwYWREZXZpY2VMaW51
eDo6cmVtb3ZlUHJvdmlkZXIoKQoreworICAgIEFTU0VSVCghbV9pc051bGwpOworCisgICAgbV9w
cm92aWRlci5jbGVhcigpOworICAgIG1faXNOdWxsID0gdHJ1ZTsKKyAgICBtX2Nvbm5lY3RlZCA9
IGZhbHNlOworfQorCit2b2lkIEdhbWVwYWREZXZpY2VMaW51eDo6dXBkYXRlR2FtZXBhZChHYW1l
cGFkKiBnYW1lcGFkKQoreworICAgIGdhbWVwYWQtPmlkKG1fZGV2aWNlTmFtZSk7CisgICAgZ2Ft
ZXBhZC0+dGltZXN0YW1wKG1fbGFzdFRpbWVzdGFtcCk7CisgICAgZ2FtZXBhZC0+YXhlcyhtX251
bWJlck9mQXhlcywgbV9heGVzLmRhdGEoKSk7CisgICAgZ2FtZXBhZC0+YnV0dG9ucyhtX251bWJl
ck9mQnV0dG9ucywgbV9idXR0b25zLmRhdGEoKSk7Cit9CisKK3ZvaWQgR2FtZXBhZERldmljZUxp
bnV4Ojp1cGRhdGVGb3JFdmVudChzdHJ1Y3QganNfZXZlbnQgZXZlbnQpCit7CisgICAgaWYgKCEo
ZXZlbnQudHlwZSAmIEpTX0VWRU5UX0FYSVMgfHwgZXZlbnQudHlwZSAmIEpTX0VWRU5UX0JVVFRP
TikpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE1hcmsgdGhlIGRldmljZSBhcyBjb25uZWN0
ZWQgb25seSBpZiBpdCBpcyBub3QgeWV0IGNvbm5lY3RlZCwgdGhlIGV2ZW50IGlzIG5vdCBhbiBp
bml0aWFsaXphdGlvbgorICAgIC8vIGFuZCB0aGUgdmFsdWUgaXMgbm90IDAgKGluZGljYXRpbmcg
YSBnZW51aW5lIGludGVyYWN0aW9uIHdpdGggdGhlIGRldmljZSkuCisgICAgaWYgKCFtX2Nvbm5l
Y3RlZCAmJiAhKGV2ZW50LnR5cGUgJiBKU19FVkVOVF9JTklUKSAmJiBldmVudC52YWx1ZSkKKyAg
ICAgICAgbV9jb25uZWN0ZWQgPSB0cnVlOworCisgICAgaWYgKGV2ZW50LnR5cGUgJiBKU19FVkVO
VF9BWElTKQorICAgICAgICBtX2F4ZXNbZXZlbnQubnVtYmVyXSA9IG5vcm1hbGl6ZUF4aXNWYWx1
ZShldmVudC52YWx1ZSk7CisgICAgZWxzZSBpZiAoZXZlbnQudHlwZSAmIEpTX0VWRU5UX0JVVFRP
TikKKyAgICAgICAgbV9idXR0b25zW2V2ZW50Lm51bWJlcl0gPSBub3JtYWxpemVCdXR0b25WYWx1
ZShldmVudC52YWx1ZSk7CisKKyAgICBtX2xhc3RUaW1lc3RhbXAgPSBldmVudC50aW1lOworfQor
Cit2b2lkIEdhbWVwYWREZXZpY2VMaW51eDo6c2V0dXAoKQoreworICAgIC8vIEZJWE1FOiBMb2cg
ZXJyb3JzIHdoZW4gcmV0dXJuaW5nIGVhcmx5LgorICAgIGludCBmZCA9IG1fcHJvdmlkZXItPmZp
bGVEZXNjcmlwdG9yKCk7CisgICAgaWYgKGZkIDwgMCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Y2hhciBkZXZpY2VOYW1lWzEwMjRdOworICAgIGlmIChpb2N0bChmZCwgSlNJT0NHTkFNRShzaXpl
b2YoZGV2aWNlTmFtZSkpLCBkZXZpY2VOYW1lKSA8IDApCisgICAgICAgIHJldHVybjsKKyAgICBt
X2RldmljZU5hbWUgPSBTdHJpbmcoZGV2aWNlTmFtZSkuc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisK
KyAgICBpZiAoaW9jdGwoZmQsIEpTSU9DR0FYRVMsICZtX251bWJlck9mQXhlcykgPCAwIHx8IGlv
Y3RsKGZkLCBKU0lPQ0dCVVRUT05TLCAmbV9udW1iZXJPZkJ1dHRvbnMpIDwgMCkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fYXhlcy5maWxsKDAuMCwgbV9udW1iZXJPZkF4ZXMpOworICAgIG1fYnV0
dG9ucy5maWxsKDAuMCwgbV9udW1iZXJPZkJ1dHRvbnMpOworCisgICAgbV9pc051bGwgPSBmYWxz
ZTsKKyAgICBtX3Byb3ZpZGVyLT5zdGFydCgpOworfQorCitmbG9hdCBHYW1lcGFkRGV2aWNlTGlu
dXg6Om5vcm1hbGl6ZUF4aXNWYWx1ZShzaG9ydCB2YWx1ZSkKK3sKKyAgICAvLyBOb3JtYWxpemUg
ZnJvbSByYW5nZSBbLTMyNzY3LCAzMjc2N10gaW50byByYW5nZSBbLTEuMCwgMS4wXQorICAgIHJl
dHVybiB2YWx1ZSAvIDMyNzY3LjBmOworfQorCitmbG9hdCBHYW1lcGFkRGV2aWNlTGludXg6Om5v
cm1hbGl6ZUJ1dHRvblZhbHVlKHNob3J0IHZhbHVlKQoreworICAgIC8vIE5vcm1hbGl6ZSBmcm9t
IHJhbmdlIFswLCAxXSBpbnRvIHJhbmdlIFswLjAsIDEuMF0KKyAgICByZXR1cm4gdmFsdWUgLyAx
LjBmOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FN
RVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWRE
ZXZpY2VMaW51eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmlj
ZUxpbnV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc3ZmE3ZjhiYmY1NGNiZjVlMjg3M2E0NTI2ZjU4ZTk5MGFh
NTQ3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dh
bWVwYWREZXZpY2VMaW51eC5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICogREFNQUdFLgorICovCisKKyNp
Zm5kZWYgR2FtZXBhZERldmljZUxpbnV4X2gKKyNkZWZpbmUgR2FtZXBhZERldmljZUxpbnV4X2gK
KworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSA8bGludXgvam95c3RpY2suaD4KKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBHYW1lcGFkOworCitjbGFzcyBHYW1lcGFkRGV2aWNlTGludXhJbnB1dFByb3ZpZGVyQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9yRXZlbnQoc3RydWN0IGpzX2V2
ZW50KTsKK307CisKK2NsYXNzIEdhbWVwYWREZXZpY2VMaW51eElucHV0UHJvdmlkZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfkdhbWVwYWREZXZpY2VMaW51eElucHV0UHJvdmlkZXIoKSB7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoR2FtZXBhZERldmljZUxpbnV4SW5wdXRQcm92
aWRlckNsaWVudCopID0gMDsKKyAgICB2aXJ0dWFsIGludCBmaWxlRGVzY3JpcHRvcigpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKSA9IDA7Cit9OworCitjbGFzcyBHYW1lcGFkRGV2aWNl
TGludXggOiBwdWJsaWMgR2FtZXBhZERldmljZUxpbnV4SW5wdXRQcm92aWRlckNsaWVudCB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8R2FtZXBhZERldmljZUxpbnV4PiBjcmVhdGVE
ZXZpY2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHYW1lcGFkRGV2aWNl
TGludXgpOworICAgIH0KKworICAgIHZvaWQgc2V0UHJvdmlkZXIoR2FtZXBhZERldmljZUxpbnV4
SW5wdXRQcm92aWRlciopOworICAgIHZvaWQgcmVtb3ZlUHJvdmlkZXIoKTsKKworICAgIGJvb2wg
aXNOdWxsKCkgeyByZXR1cm4gbV9pc051bGw7IH0KKyAgICBib29sIGNvbm5lY3RlZCgpIHsgcmV0
dXJuIG1fY29ubmVjdGVkOyB9OworICAgIHZvaWQgdXBkYXRlR2FtZXBhZChHYW1lcGFkKik7CisK
KyAgICAvLyBHYW1lcGFkRGV2aWNlTGludXhJbnB1dFByb3ZpZGVyQ2xpZW50CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUZvckV2ZW50KHN0cnVjdCBqc19ldmVudCk7CisKK3ByaXZhdGU6CisgICAg
R2FtZXBhZERldmljZUxpbnV4KCk7CisKKyAgICBPd25QdHI8R2FtZXBhZERldmljZUxpbnV4SW5w
dXRQcm92aWRlcj4gbV9wcm92aWRlcjsKKworICAgIHZvaWQgc2V0dXAoKTsKKyAgICBmbG9hdCBu
b3JtYWxpemVBeGlzVmFsdWUoc2hvcnQgdmFsdWUpOworICAgIGZsb2F0IG5vcm1hbGl6ZUJ1dHRv
blZhbHVlKHNob3J0IHZhbHVlKTsKKworICAgIGJvb2wgbV9pc051bGw7CisgICAgYm9vbCBtX2Nv
bm5lY3RlZDsKKworICAgIFN0cmluZyBtX2RldmljZU5hbWU7CisgICAgdW5zaWduZWQgbG9uZyBs
b25nIG1fbGFzdFRpbWVzdGFtcDsKKyAgICB1aW50OF90IG1fbnVtYmVyT2ZBeGVzOworICAgIHVp
bnQ4X3QgbV9udW1iZXJPZkJ1dHRvbnM7CisKKyAgICBWZWN0b3I8ZmxvYXQ+IG1fYXhlczsKKyAg
ICBWZWN0b3I8ZmxvYXQ+IG1fYnV0dG9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQorCisjZW5kaWYgLy8gR2FtZXBhZERldmljZUxp
bnV4X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvU291
cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXggMmQ1YWQwYTdhNTczMjVmZWFjNTNj
Yjc0MTQ0ZDE4M2VjNzY3MDc3MS4uOWE0MzVjNThlNmIyYjBlNWMyZTBkNjIxY2Y5OGZjY2FhNTE0
Nzk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIv
U291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTg3LDYgKzg3LDcgQEAgbGlid2Vi
a2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9S
X1ZFUlNJT05AX2xhX0xJQkEKIAkkKEVOQ0hBTlRfTElCUykgXAogCSQoRlJFRVRZUEVfTElCUykg
XAogCSQoR0FJTF9MSUJTKSBcCisJJChHQU1FUEFEX0xJQlMpIFwKIAkkKEdFT0NMVUVfTElCUykg
XAogCSQoR0xJQl9MSUJTKSBcCiAJJChHU1RSRUFNRVJfTElCUykgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5h
bQppbmRleCBiYTkzZTIxOGRhN2E1MmIwYjA1ZGQ1NDBmYzk1ZmRhYjIxYmFkZWZlLi4xYzkwYjAz
MjQ2NDBjMmE3MGFiNjllOWY3MzdlZTQyMTE4OWE1ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpA
QCAtMTU4LDYgKzE1OCw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVS
U0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCCiAJJChDT1ZFUkFHRV9M
REZMQUdTKSBcCiAJJChFTkNIQU5UX0xJQlMpIFwKIAkkKEdBSUxfTElCUykgXAorCSQoR0FNRVBB
RF9MSUJTKSBcCiAJJChHRU9DTFVFX0xJQlMpIFwKIAkkKEdMSUJfTElCUykgXAogCSQoR1NUUkVB
TUVSX0xJQlMpIFwKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyOGJh
NWIwZGI0OGRkNDdhYjZjZmNlMzMxYmMzN2VkN2I4YTU4ZjVkLi5jODdlMTYyZTVjZGNmMDAxMGY2
MGE5NWQ5OWEyZTdhY2JmZWUwZGVmIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDYtMDIgIFphbiBEb2JlcnNlayAgPHphbmRvYmVy
c2VrQGdtYWlsLmNvbT4KKworICAgICAgICBbR3RrXSBBZGQgc3VwcG9ydCBmb3IgdGhlIEdhbWVw
YWQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NzUwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Y29uZmlndXJlLmFjOgorCiAyMDEyLTA1LTMxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3Bo
ZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gRW5hYmxlIENTU19JTUFHRV9TRVQg
ZmxhZwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDYyODJi
MTZkNzFiYWIxODExZDY1NGJjODMxYmFhZmM5NGY0YjYzOTIuLjc1MTUxZjYxMTQ1MmMzNmZhZTEz
NTExZWVkOWM5ZDRiNjNlMjFiZjEgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25m
aWd1cmUuYWMKQEAgLTYyOSw2ICs2MjksMTEgQEAgQUNfQVJHX0VOQUJMRShnYW1lcGFkLAogICAg
ICAgICAgICAgICBbXSxbZW5hYmxlX2dhbWVwYWQ9Im5vIl0pCiBBQ19NU0dfUkVTVUxUKFskZW5h
YmxlX2dhbWVwYWRdKQogCitpZiB0ZXN0ICIkZW5hYmxlX2dhbWVwYWQiID0gInllcyIgJiYgdGVz
dCAiJG9zX2xpbnV4IiA9IG5vOyB0aGVuCisgICBBQ19NU0dfV0FSTihbR2FtZXBhZCBzdXBwb3J0
IGlzIG9ubHkgYXZhaWxhYmxlIG9uIExpbnV4LiBEaXNhYmxpbmcgR2FtZXBhZCBzdXBwb3J0Ll0p
CisgICBlbmFibGVfZ2FtZXBhZD1ubzsKK2ZpCisKICMgY2hlY2sgd2hldGhlciB0byBidWlsZCB3
aXRoIGRhdGEgdHJhbnNmZXIgaXRlbXMgc3VwcG9ydAogQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVy
IHRvIGVuYWJsZSBIVE1MNSBkYXRhIHRyYW5zZmVyIGl0ZW1zIHN1cHBvcnRdKQogQUNfQVJHX0VO
QUJMRShkYXRhX3RyYW5zZmVyX2l0ZW1zLApAQCAtMTI0Myw2ICsxMjQ4LDEzIEBAIGlmIHRlc3Qg
IiRlbmFibGVfd2Via2l0MiIgPSAieWVzIjsgdGhlbgogICAgQUNfU1VCU1QoW0FUU1BJMl9MSUJT
XSkKIGZpCiAKK2lmIHRlc3QgIiRlbmFibGVfZ2FtZXBhZCIgPSAieWVzIjsgdGhlbgorICAgUEtH
X0NIRUNLX01PRFVMRVMoW0dBTUVQQURdLCBbZ2lvLXVuaXgtMi4wIGd1ZGV2LTEuMF0pCisKKyAg
IEFDX1NVQlNUKEdBTUVQQURfQ0ZMQUdTKQorICAgQUNfU1VCU1QoR0FNRVBBRF9MSUJTKQorZmkK
KwogIyBjaGVjayBmb3IgY29kZSBjb3ZlcmFnZSBzdXBwb3J0CiBpZiB0ZXN0ICIkZW5hYmxlX2Nv
dmVyYWdlIiA9ICJ5ZXMiOyB0aGVuCiAgICBDT1ZFUkFHRV9DRkxBR1M9Ii1NRCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145856</attachid>
            <date>2012-06-05 13:00:04 -0700</date>
            <delta_ts>2012-06-07 10:56:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87503-20120605220004.patch</filename>
            <type>text/plain</type>
            <size>29004</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRmYzdlNTJjNzgyOGY1
ZjBiM2JhMDllYzMwNzc0MGZlNmMzOTBkMS4uOWRhMjc0ZTJhOWNlOTk0YTU3YjJiMzRhNjdiOTBm
NWVhNjNhZDUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA2LTA1ICBaYW4g
RG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0d0a10gQWRkIHN1
cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9k
dWxlcy9nYW1lcGFkL0dhbWVwYWQuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvR05V
bWFrZWZpbGUuYW06CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzQXJyYXkpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChHYW1lcGFkRGV2aWNlR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZp
Y2VHdGs6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlR3RrOjpHYW1l
cGFkRGV2aWNlR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VHdGs6On5HYW1l
cGFkRGV2aWNlR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VHdGs6OnJlYWRG
cm9tSW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUd0azo6cmVh
ZENhbGxiYWNrKToKKyAgICAgICAgKEdhbWVwYWRzR3RrKToKKyAgICAgICAgKFdlYkNvcmU6Okdh
bWVwYWRzR3RrOjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNHdGs6OkdhbWVw
YWRzR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzR3RrOjp+R2FtZXBhZHNHdGspOgor
ICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNHdGs6OnJlZ2lzdGVyRGV2aWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdhbWVwYWRzR3RrOjp1bnJlZ2lzdGVyRGV2aWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdhbWVwYWRzR3RrOjp1cGRhdGVHYW1lcGFkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpH
YW1lcGFkc0d0azo6b25VRXZlbnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFk
c0d0azo6aXNHYW1lcGFkRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbXBsZUdhbWVwYWRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxp
bnV4OjpHYW1lcGFkRGV2aWNlTGludXgpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmlj
ZUxpbnV4Ojp1cGRhdGVHYW1lcGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VM
aW51eDo6dXBkYXRlRm9yRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxp
bnV4Ojpub3JtYWxpemVBeGlzVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmlj
ZUxpbnV4Ojpub3JtYWxpemVCdXR0b25WYWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vbGludXgv
R2FtZXBhZERldmljZUxpbnV4Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2FtZXBhZC9HYW1lcGFkLmlkbC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoR2FtZXBh
ZERldmljZUxpbnV4KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VMaW51eDo6aXNO
dWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VMaW51eDo6Y29ubmVjdGVkKToK
KwogMjAxMi0wNi0wNSAgQXJwaXRhIEJhaHVndW5hICA8YXJwaXRhYmFodWd1bmFAZ21haWwuY29t
PgogCiAgICAgICAgIENTUyAyLjEgZmFpbHVyZTogYm9yZGVyLWNvbmZsaWN0LWVsZW1lbnQtMDIx
YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCmluZGV4IDUyZWIxZTQyNjg1YTQ1NWZkNGE0YzhiNzNkZjNkM2RiNGM1
Nzc2ZTIuLjkwZDU5YjhlYTgzOTNiYWRiOTY4Mjk1MDg4OTgzNDVlMDhmMTM2ZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wNi0wNSAgWmFuIERvYmVyc2VrICA8emFu
ZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFtHdGtdIEFkZCBzdXBwb3J0IGZvciB0aGUg
R2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg3NTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKwogMjAxMi0wNi0wNCAgU3VkYXJzYW5hIE5hZ2luZW5pICA8
c3VkYXJzYW5hLm5hZ2luZW5pQGxpbnV4LmludGVsLmNvbT4KIAogICAgICAgICBbR1RLXSBNZW1v
cnkgbGVhayBpbiBXZWJLaXRXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDI1NzgxYWFhZjRmZmRiYWZm
ZWM0NTVkMDYwOGUxYjgxNTVlYWM4My4uOTFmZWRiOTY0OGVkMjVhMTVmODdlMTdjYTIxYWZkYWYw
NjYwMjBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA2LTA1ICBaYW4gRG9i
ZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0d0a10gQWRkIHN1cHBv
cnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorCiAyMDEyLTA2LTA1ICBBbGV4aXMgTWVu
YXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF0gRG9uJ3Qg
cHJvcGFnYXRlIHZpZXdwb3J0IHNpemUgY2hhbmdlcyBpZiB0aGUgdmlld3BvcnQgaXMgZW1wdHku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDgzNjhjNmQ0NDcyM2RjOWJiZGZkYmE1MGFkMTczOGY1
MTBjNTU2NGIuLjI2NTViYWRkY2UzNmZiZGE4M2RkNjIzN2QwMTk0YzZhOTg3MjlhMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCkBAIC0xMiw2ICsxMiw3IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORyBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbSBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nYW1lcGFkIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYiBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbSBcCkBAIC02Nyw2
ICs2OCw3IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZyBcCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYiBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbGludXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2sgXApAQCAtODM5LDYgKzg0MSw3IEBAIERlcml2ZWRTb3VyY2VzL0FOR0xFL2dsc2xhbmdfdGFi
Lmg6IERlcml2ZWRTb3VyY2VzL0FOR0xFL2dsc2xhbmdfdGFiLmNwcAogCiBJRExfUEFUSCA6PSBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAorICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9nYW1lcGFkIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9jYXRpb24gXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbSBcCkBAIC05MzMsNiArOTM2LDcgQEAgbGliV2ViQ29yZV9sYV9DUFBGTEFHUyA9
IFwKIAkkKENMVVRURVJfQ0ZMQUdTKSBcCiAJJChDT1ZFUkFHRV9DRkxBR1MpIFwKIAkkKEVOQ0hB
TlRfQ0ZMQUdTKSBcCisJJChHQU1FUEFEX0NGTEFHUykgXAogCSQoR0VPQ0xVRV9DRkxBR1MpIFwK
IAkkKEdMSUJfQ0ZMQUdTKSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCkBAIC05OTksNiArMTAw
Myw3IEBAIGxpYldlYkNvcmVHdGtfbGFfQ1BQRkxBR1MgPSBcCiAKIEVYVFJBX0RJU1QgKz0gXAog
CSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS8q
LmlkbCkgXAorCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Ft
ZXBhZC8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2VvbG9jYXRpb24vKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vKi5pZGwpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDVhYzVkZTM2MjQxZDFiODJmYzE4NTVmNzFhZTRhNmM2NWZkM2Uz
NDEuLmY3MDY2OTM5NWJiNDQ5YmYxYWJhNDUyYTEzZDdlY2MyMGIyYTUzMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTkxLDYgKzE5MSwxMCBAQCB3ZWJjb3JlX2J1aWx0X3Nv
dXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGbG9hdDMyQXJyYXkuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zsb2F0NjRBcnJheS5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNGbG9hdDY0QXJyYXkuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dhbWVwYWQuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2FtZXBhZC5oIFwKKwlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2FtZXBhZExpc3QuY3BwIFwKKwlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTR2FtZXBhZExpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dl
b2xvY2F0aW9uLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dlb2xvY2F0aW9uLmgg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHZW9wb3NpdGlvbi5jcHAgXApAQCAtNjc4LDYg
KzY4Miw5IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9YUGF0aEdyYW1tYXIuaAogCiBkb21fYmluZGluZ19pZGxzICs9IFwKKwkkKFdlYkNvcmUp
L01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2dhbWVw
YWQvR2FtZXBhZExpc3QuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0
b3JHYW1lcGFkLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb3Bvc2l0aW9uLmlk
bCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9u
LmlkbCBcCkBAIC0xMDUyLDYgKzEwNTksMTIgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9XZWJLaXRGbGFncy5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0u
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyQ29udGV4dEZp
bGVTeXN0ZW0uaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExpc3QuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgXApAQCAtMzE0MCw2ICszMTUzLDcgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zsb2F0Q29udmVyc2lvbi5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GcmFjdGlvbmFsTGF5b3V0VW5pdC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9HYW1lcGFkcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IYXNoVG9v
bHMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hpc3RvZ3JhbVN1cHBvcnQuaCBcCkBAIC0zMzg1LDYg
KzMzOTksNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9FcnJvcnNHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3Rr
LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LVVJMR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0xvZ2dpbmdHdGsuY3BwIFwKQEAgLTM0NDUsNiArMzQ2MCw4IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNl
Q2FuZGlkYXRlRGVzY3JpcHRvci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nYW1lcGFkL0dhbWVwYWQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFk
L0dhbWVwYWQuaWRsCmluZGV4IGUwMGUyZGMzZDg4NTVjZjhlZjA0NTY1MzE3ZjJjNzQ2MDM3YjNh
YTMuLjJjYWRlMDhjZDMxMTdkNDgxZmM3MTY5OGQwZDllNWM2ZDkyOTNjZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5pZGwKQEAgLTMxLDggKzMxLDggQEAgbW9k
dWxlIGRvbSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGluZGV4OwogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIHRpbWVzdGFtcDsKLSAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGZsb2F0W10gYXhlczsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGZsb2F0W10gYnV0dG9uczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHNlcXVlbmNlPGZs
b2F0PiBheGVzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgc2VxdWVuY2U8ZmxvYXQ+IGJ1
dHRvbnM7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
R05VbWFrZWZpbGUuYW0KaW5kZXggYzcwMjUyODZkMGZhZTc0ZTI1YWU4ZTJkMzEwNzIxNTc5NWEz
NzhmNS4uZmEwNDU0MjAzY2I2Y2FiM2JjMTE2ODY4ZGE4ZGM2M2I5YjY3ZWNjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCkBAIC02Niw2ICs2
NiwxMCBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNl
cy93ZWJraXQvV2ViS2l0RE9NRmlsZUxpc3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQv
V2ViS2l0RE9NRmlsZUxpc3RQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJL
aXRET01GaWxlUHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NR2Ft
ZXBhZC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01HYW1lcGFkTGlzdC5j
cHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01HYW1lcGFkTGlzdFByaXZhdGUu
aCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUdhbWVwYWRQcml2YXRlLmggXAog
CURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01HZW9sb2NhdGlvbi5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01HZW9sb2NhdGlvblByaXZhdGUuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUhpc3RvcnkuY3BwIFwKQEAgLTI5NSw2ICsyOTksOCBA
QCB3ZWJraXRndGtfYnVpbHRfaF9hcGkgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJL
aXRET01CbG9iLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01GaWxlLmggXAog
CURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01GaWxlTGlzdC5oIFwKKwlEZXJpdmVkU291
cmNlcy93ZWJraXQvV2ViS2l0RE9NR2FtZXBhZC5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQv
V2ViS2l0RE9NR2FtZXBhZExpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERP
TUdlb2xvY2F0aW9uLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01IVE1MQW5j
aG9yRWxlbWVudC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NSFRNTEFwcGxl
dEVsZW1lbnQuaCBcCkBAIC00MjgsNyArNDM0LDYgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfc291
cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUhUTUxQcm9wZXJ0aWVz
Q29sbGVjdGlvblByaXZhdGUuaAogZW5kaWYKIAotCiBpZiBFTkFCTEVfV0VCX1RJTUlORwogd2Vi
a2l0Z3RrX2J1aWx0X2hfYXBpICs9IFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMv
d2Via2l0L1dlYktpdERPTVBlcmZvcm1hbmNlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaAppbmRleCAxYmU2MzEwYThjODhiYmUyZmNkZGQwNGNlMGRjZTM1Yjdh
ODEyZjUzLi5iNzI0NWVjZGI5OGQ1ZGFmMWIwYTM4OTM0ODYwMzBlZjcxM2ZkMTAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMzAzLDYgKzMwMywxOCBA
QCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgICAgICByZXR1cm4gSlNDOjpjb25z
dHJ1Y3RBcnJheShleGVjLCBnbG9iYWxPYmplY3QsIGFycmF5KTsKICAgICB9CiAKKyAgICB0ZW1w
bGF0ZTw+CisgICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc0FycmF5KEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8ZmxvYXQ+
JiBpdGVyYXRvcikKKyAgICB7CisgICAgICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJy
YXk7CisgICAgICAgIFZlY3RvcjxmbG9hdD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGl0ZXJhdG9y
LmVuZCgpOworCisgICAgICAgIGZvciAoVmVjdG9yPGZsb2F0Pjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBpdGVyYXRvci5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBhcnJheS5h
cHBlbmQoSlNDOjpqc051bWJlcigqaXQpKTsKKworICAgICAgICByZXR1cm4gSlNDOjpjb25zdHJ1
Y3RBcnJheShleGVjLCBnbG9iYWxPYmplY3QsIGFycmF5KTsKKyAgICB9CisKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVD4KICAgICBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvR2FtZXBhZHNHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlMTlkYzU2ODUzODI4MGYzMzZmODE2
MmNkZDA0ZGI1MTc3OGQyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwCkBAIC0wLDAgKzEsMjM0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFphbiBEb2JlcnNlayA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisg
KiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZHMuaCIKKworI2lmIEVO
QUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSAiR2FtZXBhZERldmljZUxpbnV4LmgiCisjaW5jbHVk
ZSAiR2FtZXBhZExpc3QuaCIKKyNpbmNsdWRlIDxnaW8vZ3VuaXhpbnB1dHN0cmVhbS5oPgorI2lu
Y2x1ZGUgPGd1ZGV2L2d1ZGV2Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBHYW1lcGFkRGV2aWNlR3RrIDogcHVibGljIEdhbWVwYWREZXZpY2VMaW51eCB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8R2FtZXBhZERldmljZUd0az4gY3JlYXRl
KFN0cmluZyBkZXZpY2VGaWxlID0gU3RyaW5nKCkpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEdhbWVwYWREZXZpY2VHdGsoZGV2aWNlRmlsZSkpOworICAgIH0KKyAgICB+R2Ft
ZXBhZERldmljZUd0aygpOworCisgICAgdm9pZCByZWFkRnJvbUlucHV0U3RyZWFtKCk7CisKK3By
aXZhdGU6CisgICAgR2FtZXBhZERldmljZUd0ayhTdHJpbmcgZGV2aWNlRmlsZSk7CisKKyAgICBH
UmVmUHRyPEdJbnB1dFN0cmVhbT4gbV9pbnB1dFN0cmVhbTsKKyAgICBHU291cmNlKiBtX3NvdXJj
ZTsKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gcmVhZENhbGxiYWNrKEdPYmplY3QqIHBvbGxhYmxlU3Ry
ZWFtLCBncG9pbnRlciBkYXRhKTsKK307CisKK0dhbWVwYWREZXZpY2VHdGs6OkdhbWVwYWREZXZp
Y2VHdGsoU3RyaW5nIGRldmljZUZpbGUpCisgICAgOiBHYW1lcGFkRGV2aWNlTGludXgoZGV2aWNl
RmlsZSkKKyAgICAsIG1faW5wdXRTdHJlYW0oMCkKKyAgICAsIG1fc291cmNlKDApCit7CisgICAg
aWYgKG1fZmlsZURlc2NyaXB0b3IgPCAwKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lucHV0
U3RyZWFtID0gZ191bml4X2lucHV0X3N0cmVhbV9uZXcobV9maWxlRGVzY3JpcHRvciwgVFJVRSk7
CisgICAgbV9zb3VyY2UgPSBnX3BvbGxhYmxlX2lucHV0X3N0cmVhbV9jcmVhdGVfc291cmNlKEdf
UE9MTEFCTEVfSU5QVVRfU1RSRUFNKG1faW5wdXRTdHJlYW0uZ2V0KCkpLCAwKTsKKyAgICBnX3Nv
dXJjZV9zZXRfY2FsbGJhY2sobV9zb3VyY2UsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+
KHJlYWRDYWxsYmFjayksIHRoaXMsIDApOworICAgIGdfc291cmNlX2F0dGFjaChtX3NvdXJjZSwg
TlVMTCk7Cit9CisKK0dhbWVwYWREZXZpY2VHdGs6On5HYW1lcGFkRGV2aWNlR3RrKCkKK3sKKyAg
ICBpZiAobV9zb3VyY2UpCisgICAgICAgIGdfc291cmNlX2Rlc3Ryb3kobV9zb3VyY2UpOworfQor
Cit2b2lkIEdhbWVwYWREZXZpY2VHdGs6OnJlYWRGcm9tSW5wdXRTdHJlYW0oKQoreworICAgIHN0
cnVjdCBqc19ldmVudCBldmVudDsKKyAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgZ3Nz
aXplIGxlbiA9IGdfcG9sbGFibGVfaW5wdXRfc3RyZWFtX3JlYWRfbm9uYmxvY2tpbmcoR19QT0xM
QUJMRV9JTlBVVF9TVFJFQU0obV9pbnB1dFN0cmVhbS5nZXQoKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV2ZW50LCBzaXplb2Yo
ZXZlbnQpLCAwLCAmZXJyb3Iub3V0UHRyKCkpOworCisgICAgaWYgKGVycm9yIHx8IGxlbiAhPSBz
aXplb2YoZXZlbnQpKSB7CisgICAgICAgIC8vIEZJWE1FOiBQcm9wZXJseSBoYW5kbGUgR19JT19F
UlJPUl9XT1VMRF9CTE9DSworICAgICAgICAvLyBGSVhNRTogUHJvcGVybHkgbG9nIHRoZSBlcnJv
ci4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVwZGF0ZUZvckV2ZW50KGV2ZW50KTsK
K30KKworZ2Jvb2xlYW4gR2FtZXBhZERldmljZUd0azo6cmVhZENhbGxiYWNrKEdPYmplY3QqIHBv
bGxhYmxlU3RyZWFtLCBncG9pbnRlciBkYXRhKQoreworICAgIEdhbWVwYWREZXZpY2VHdGsqIGdh
bWVwYWREZXZpY2UgPSByZWludGVycHJldF9jYXN0PEdhbWVwYWREZXZpY2VHdGsqPihkYXRhKTsK
KyAgICBnYW1lcGFkRGV2aWNlLT5yZWFkRnJvbUlucHV0U3RyZWFtKCk7CisKKyAgICByZXR1cm4g
VFJVRTsKK30KKworY2xhc3MgR2FtZXBhZHNHdGsgeworcHVibGljOgorICAgIEdhbWVwYWRzR3Rr
KHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRGV2aWNlKFN0cmluZyBkZXZp
Y2VGaWxlKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJEZXZpY2UoU3RyaW5nIGRldmljZUZpbGUpOwor
CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAgICB2b2lkIHVw
ZGF0ZUdhbWVwYWRMaXN0KEdhbWVwYWRMaXN0Kik7CisKK3ByaXZhdGU6CisgICAgfkdhbWVwYWRz
R3RrKCk7CisKKyAgICB1bnNpZ25lZCBtX2xlbmd0aDsKKyAgICBWZWN0b3I8T3duUHRyPEdhbWVw
YWREZXZpY2VHdGs+ID4gbV9zbG90czsKKyAgICBIYXNoTWFwPFN0cmluZywgR2FtZXBhZERldmlj
ZUd0ayo+IG1fZGV2aWNlTWFwOworCisgICAgR1JlZlB0cjxHVWRldkNsaWVudD4gbV9ndWRldkNs
aWVudDsKKworICAgIHN0YXRpYyB2b2lkIG9uVUV2ZW50Q2FsbGJhY2soR1VkZXZDbGllbnQqLCBn
Y2hhciogYWN0aW9uLCBHVWRldkRldmljZSosIGdwb2ludGVyIGRhdGEpOworICAgIHN0YXRpYyBn
Ym9vbGVhbiBpc0dhbWVwYWREZXZpY2UoR1VkZXZEZXZpY2UqKTsKK307CisKK0dhbWVwYWRzR3Rr
OjpHYW1lcGFkc0d0ayh1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBtX2xlbmd0aChsZW5ndGgpCit7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCisgICAgICAgIG1f
c2xvdHMuYXBwZW5kKEdhbWVwYWREZXZpY2VHdGs6OmNyZWF0ZSgpKTsKKworICAgIHN0YXRpYyBj
b25zdCBnY2hhciogc3Vic3lzdGVtc1tdID0geyAiaW5wdXQiLCAwIH07CisgICAgbV9ndWRldkNs
aWVudCA9IGdfdWRldl9jbGllbnRfbmV3KHN1YnN5c3RlbXMpOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV9ndWRldkNsaWVudC5nZXQoKSwgInVldmVudCIsIEdfQ0FMTEJBQ0sob25VRXZlbnRDYWxs
YmFjayksIHRoaXMpOworCisgICAgR0xpc3QqIGRldmljZXNMaXN0ID0gZ191ZGV2X2NsaWVudF9x
dWVyeV9ieV9zdWJzeXN0ZW0obV9ndWRldkNsaWVudC5nZXQoKSwgc3Vic3lzdGVtc1swXSk7Cisg
ICAgZm9yIChHTGlzdCogbGlzdEl0ZW0gPSBkZXZpY2VzTGlzdDsgbGlzdEl0ZW07IGxpc3RJdGVt
ID0gZ19saXN0X25leHQobGlzdEl0ZW0pKSB7CisgICAgICAgIEdVZGV2RGV2aWNlKiBkZXZpY2Ug
PSByZWludGVycHJldF9jYXN0PEdVZGV2RGV2aWNlKj4obGlzdEl0ZW0tPmRhdGEpOworICAgICAg
ICBTdHJpbmcgZGV2aWNlRmlsZSA9IFN0cmluZyhnX3VkZXZfZGV2aWNlX2dldF9kZXZpY2VfZmls
ZShkZXZpY2UpKTsKKyAgICAgICAgaWYgKGlzR2FtZXBhZERldmljZShkZXZpY2UpKQorICAgICAg
ICAgICAgcmVnaXN0ZXJEZXZpY2UoZGV2aWNlRmlsZSk7CisgICAgICAgIGdfb2JqZWN0X3VucmVm
KGRldmljZSk7CisgICAgfQorCisgICAgZ19saXN0X2ZyZWUoZGV2aWNlc0xpc3QpOworfQorCitH
YW1lcGFkc0d0azo6fkdhbWVwYWRzR3RrKCkKK3sKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNj
b25uZWN0X21hdGNoZWQobV9ndWRldkNsaWVudC5nZXQoKSwgR19TSUdOQUxfTUFUQ0hfREFUQSwg
MCwgMCwgMCwgMCwgdGhpcyk7Cit9CisKK3ZvaWQgR2FtZXBhZHNHdGs6OnJlZ2lzdGVyRGV2aWNl
KFN0cmluZyBkZXZpY2VGaWxlKQoreworICAgIEFTU0VSVCghbV9kZXZpY2VNYXAuY29udGFpbnMo
ZGV2aWNlRmlsZSkpOworCisgICAgdW5zaWduZWQgaW5kZXg7CisgICAgZm9yIChpbmRleCA9IDA7
IGluZGV4IDwgbV9sZW5ndGg7IGluZGV4KyspIHsKKyAgICAgICAgaWYgKG1fc2xvdHNbaW5kZXhd
LT5pc051bGwoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChpbmRleCA+
PSBtX2xlbmd0aCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zbG90c1tpbmRleF0gPSBHYW1l
cGFkRGV2aWNlR3RrOjpjcmVhdGUoZGV2aWNlRmlsZSk7CisgICAgbV9kZXZpY2VNYXAuYWRkKGRl
dmljZUZpbGUsIG1fc2xvdHNbaW5kZXhdLmdldCgpKTsKK30KKwordm9pZCBHYW1lcGFkc0d0azo6
dW5yZWdpc3RlckRldmljZShTdHJpbmcgZGV2aWNlRmlsZSkKK3sKKyAgICBBU1NFUlQobV9kZXZp
Y2VNYXAuY29udGFpbnMoZGV2aWNlRmlsZSkpOworCisgICAgR2FtZXBhZERldmljZUd0ayogZ2Ft
ZXBhZERldmljZSA9IG1fZGV2aWNlTWFwLnRha2UoZGV2aWNlRmlsZSk7CisgICAgdW5zaWduZWQg
aW5kZXggPSBtX3Nsb3RzLmZpbmQoZ2FtZXBhZERldmljZSk7CisgICAgQVNTRVJUKGluZGV4ICE9
IG5vdEZvdW5kKTsKKyAgICBtX3Nsb3RzW2luZGV4XSA9IEdhbWVwYWREZXZpY2VHdGs6OmNyZWF0
ZSgpOworfQorCit2b2lkIEdhbWVwYWRzR3RrOjp1cGRhdGVHYW1lcGFkTGlzdChHYW1lcGFkTGlz
dCogaW50bykKK3sKKyAgICBBU1NFUlQobV9sZW5ndGggPT0gaW50by0+bGVuZ3RoKCkpOworCisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYg
KG1fc2xvdHNbaV0tPmNvbm5lY3RlZCgpKSB7CisgICAgICAgICAgICBSZWZQdHI8R2FtZXBhZD4g
Z2FtZXBhZCA9IGludG8tPml0ZW0oaSk7CisgICAgICAgICAgICBpZiAoIWdhbWVwYWQpCisgICAg
ICAgICAgICAgICAgZ2FtZXBhZCA9IEdhbWVwYWQ6OmNyZWF0ZSgpOworCisgICAgICAgICAgICBn
YW1lcGFkLT5pbmRleChpKTsKKyAgICAgICAgICAgIG1fc2xvdHNbaV0tPnVwZGF0ZUdhbWVwYWQo
Z2FtZXBhZC5nZXQoKSk7CisgICAgICAgICAgICBpbnRvLT5zZXQoaSwgZ2FtZXBhZCk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgaW50by0+c2V0KGksIDApOworICAgIH0KK30KKwordm9p
ZCBHYW1lcGFkc0d0azo6b25VRXZlbnRDYWxsYmFjayhHVWRldkNsaWVudCogdWRldkNsaWVudCwg
Z2NoYXIqIGFjdGlvbiwgR1VkZXZEZXZpY2UqIGRldmljZSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAg
ICBpZiAoIWlzR2FtZXBhZERldmljZShkZXZpY2UpKQorICAgICAgICByZXR1cm47CisKKyAgICBH
YW1lcGFkc0d0ayogZGV2aWNlTWFwcGVyID0gcmVpbnRlcnByZXRfY2FzdDxHYW1lcGFkc0d0ayo+
KGRhdGEpOworICAgIFN0cmluZyBkZXZpY2VGaWxlID0gU3RyaW5nKGdfdWRldl9kZXZpY2VfZ2V0
X2RldmljZV9maWxlKGRldmljZSkpOworCisgICAgaWYgKCFnX3N0cmNtcDAoYWN0aW9uLCAiYWRk
IikpCisgICAgICAgIGRldmljZU1hcHBlci0+cmVnaXN0ZXJEZXZpY2UoZGV2aWNlRmlsZSk7Cisg
ICAgZWxzZSBpZiAoIWdfc3RyY21wMChhY3Rpb24sICJyZW1vdmUiKSkKKyAgICAgICAgZGV2aWNl
TWFwcGVyLT51bnJlZ2lzdGVyRGV2aWNlKGRldmljZUZpbGUpOworfQorCitnYm9vbGVhbiBHYW1l
cGFkc0d0azo6aXNHYW1lcGFkRGV2aWNlKEdVZGV2RGV2aWNlKiBkZXZpY2UpCit7CisgICAgY29u
c3QgZ2NoYXIqIGRldmljZUZpbGUgPSBnX3VkZXZfZGV2aWNlX2dldF9kZXZpY2VfZmlsZShkZXZp
Y2UpOworICAgIGNvbnN0IGdjaGFyKiBzeXNmc1BhdGggPSBnX3VkZXZfZGV2aWNlX2dldF9zeXNm
c19wYXRoKGRldmljZSk7CisgICAgaWYgKCFkZXZpY2VGaWxlIHx8ICFzeXNmc1BhdGgpCisgICAg
ICAgIHJldHVybiBGQUxTRTsKKworICAgIGlmICghZ191ZGV2X2RldmljZV9oYXNfcHJvcGVydHko
ZGV2aWNlLCAiSURfSU5QVVQiKSB8fCAhZ191ZGV2X2RldmljZV9oYXNfcHJvcGVydHkoZGV2aWNl
LCAiSURfSU5QVVRfSk9ZU1RJQ0siKSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgcmV0
dXJuIGdfc3RyX2hhc19wcmVmaXgoZGV2aWNlRmlsZSwgIi9kZXYvaW5wdXQvanMiKTsKK30KKwor
dm9pZCBzYW1wbGVHYW1lcGFkcyhHYW1lcGFkTGlzdCogaW50bykKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEdhbWVwYWRzR3RrLCBnYW1lcGFkc0d0aywgKGludG8tPmxlbmd0aCgpKSk7Cisg
ICAgZ2FtZXBhZHNHdGsudXBkYXRlR2FtZXBhZExpc3QoaW50byk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTk2YWE4MTRmZWM1OWQzMWYxZDZmZTI2MjM4YWYzMjQ5MDhjNzIyMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5j
cHAKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgWmFuIERvYmVy
c2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAq
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSAorICogREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJHYW1lcGFkRGV2aWNlTGludXguaCIKKworI2lmIEVOQUJMRShHQU1FUEFE
KQorCisjaW5jbHVkZSAiR2FtZXBhZC5oIgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8
c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0dhbWVwYWREZXZpY2VMaW51eDo6R2FtZXBhZERldmljZUxpbnV4KFN0cmlu
ZyBkZXZpY2VGaWxlKQorICAgIDogbV9kZXZpY2VGaWxlKGRldmljZUZpbGUpCisgICAgLCBtX2Zp
bGVEZXNjcmlwdG9yKC0xKQorICAgICwgbV9jb25uZWN0ZWQoZmFsc2UpCisgICAgLCBtX2xhc3RU
aW1lc3RhbXAoMCkKKyAgICAsIG1fbnVtYmVyT2ZBeGVzKDApCisgICAgLCBtX251bWJlck9mQnV0
dG9ucygwKQoreworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
RklYTUU6IExvZyBlcnJvcnMgd2hlbiByZXR1cm5pbmcgZWFybHkuCisgICAgbV9maWxlRGVzY3Jp
cHRvciA9IG9wZW4oZGV2aWNlRmlsZS51dGY4KCkuZGF0YSgpLCBPX1JET05MWSB8IE9fTk9OQkxP
Q0spOworICAgIGlmIChtX2ZpbGVEZXNjcmlwdG9yIDwgMCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY2hhciBkZXZpY2VOYW1lWzEwMjRdOworICAgIGlmIChpb2N0bChtX2ZpbGVEZXNjcmlwdG9y
LCBKU0lPQ0dOQU1FKHNpemVvZihkZXZpY2VOYW1lKSksIGRldmljZU5hbWUpIDwgMCkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fZGV2aWNlTmFtZSA9IFN0cmluZyhkZXZpY2VOYW1lKS5zaW1wbGlm
eVdoaXRlU3BhY2UoKTsKKworICAgIGlmIChpb2N0bChtX2ZpbGVEZXNjcmlwdG9yLCBKU0lPQ0dB
WEVTLCAmbV9udW1iZXJPZkF4ZXMpIDwgMCB8fCBpb2N0bChtX2ZpbGVEZXNjcmlwdG9yLCBKU0lP
Q0dCVVRUT05TLCAmbV9udW1iZXJPZkJ1dHRvbnMpIDwgMCkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fYXhlcy5maWxsKDAuMCwgbV9udW1iZXJPZkF4ZXMpOworICAgIG1fYnV0dG9ucy5maWxsKDAu
MCwgbV9udW1iZXJPZkJ1dHRvbnMpOworfQorCit2b2lkIEdhbWVwYWREZXZpY2VMaW51eDo6dXBk
YXRlR2FtZXBhZChHYW1lcGFkKiBnYW1lcGFkKQoreworICAgIEFTU0VSVCghaXNOdWxsKCkpOwor
ICAgIEFTU0VSVChtX2Nvbm5lY3RlZCk7CisKKyAgICBnYW1lcGFkLT5pZChtX2RldmljZU5hbWUp
OworICAgIGdhbWVwYWQtPnRpbWVzdGFtcChtX2xhc3RUaW1lc3RhbXApOworICAgIGdhbWVwYWQt
PmF4ZXMobV9udW1iZXJPZkF4ZXMsIG1fYXhlcy5kYXRhKCkpOworICAgIGdhbWVwYWQtPmJ1dHRv
bnMobV9udW1iZXJPZkJ1dHRvbnMsIG1fYnV0dG9ucy5kYXRhKCkpOworfQorCit2b2lkIEdhbWVw
YWREZXZpY2VMaW51eDo6dXBkYXRlRm9yRXZlbnQoc3RydWN0IGpzX2V2ZW50IGV2ZW50KQorewor
ICAgIGlmICghKGV2ZW50LnR5cGUgJiBKU19FVkVOVF9BWElTIHx8IGV2ZW50LnR5cGUgJiBKU19F
VkVOVF9CVVRUT04pKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBNYXJrIHRoZSBkZXZpY2Ug
YXMgY29ubmVjdGVkIG9ubHkgaWYgaXQgaXMgbm90IHlldCBjb25uZWN0ZWQsIHRoZSBldmVudCBp
cyBub3QgYW4gaW5pdGlhbGl6YXRpb24KKyAgICAvLyBhbmQgdGhlIHZhbHVlIGlzIG5vdCAwIChp
bmRpY2F0aW5nIGEgZ2VudWluZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBkZXZpY2UpLgorICAgIGlm
ICghbV9jb25uZWN0ZWQgJiYgIShldmVudC50eXBlICYgSlNfRVZFTlRfSU5JVCkgJiYgZXZlbnQu
dmFsdWUpCisgICAgICAgIG1fY29ubmVjdGVkID0gdHJ1ZTsKKworICAgIGlmIChldmVudC50eXBl
ICYgSlNfRVZFTlRfQVhJUykKKyAgICAgICAgbV9heGVzW2V2ZW50Lm51bWJlcl0gPSBub3JtYWxp
emVBeGlzVmFsdWUoZXZlbnQudmFsdWUpOworICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUgJiBKU19F
VkVOVF9CVVRUT04pCisgICAgICAgIG1fYnV0dG9uc1tldmVudC5udW1iZXJdID0gbm9ybWFsaXpl
QnV0dG9uVmFsdWUoZXZlbnQudmFsdWUpOworCisgICAgbV9sYXN0VGltZXN0YW1wID0gZXZlbnQu
dGltZTsKK30KKworZmxvYXQgR2FtZXBhZERldmljZUxpbnV4Ojpub3JtYWxpemVBeGlzVmFsdWUo
c2hvcnQgdmFsdWUpCit7CisgICAgLy8gTm9ybWFsaXplIGZyb20gcmFuZ2UgWy0zMjc2NywgMzI3
NjddIGludG8gcmFuZ2UgWy0xLjAsIDEuMF0KKyAgICByZXR1cm4gdmFsdWUgLyAzMjc2Ny4wZjsK
K30KKworZmxvYXQgR2FtZXBhZERldmljZUxpbnV4Ojpub3JtYWxpemVCdXR0b25WYWx1ZShzaG9y
dCB2YWx1ZSkKK3sKKyAgICAvLyBOb3JtYWxpemUgZnJvbSByYW5nZSBbMCwgMV0gaW50byByYW5n
ZSBbMC4wLCAxLjBdCisgICAgcmV0dXJuIHZhbHVlIC8gMS4wZjsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2
NjgxZWIyMDZlNWJmNTZhZmZiOWJhMWUzYzMyNjE0ZWE5OWY1NzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguaApAQCAt
MCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFphbiBEb2JlcnNlayA8emFu
ZG9iZXJzZWtAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdhbWVwYWREZXZpY2VMaW51
eF9oCisjZGVmaW5lIEdhbWVwYWREZXZpY2VMaW51eF9oCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkK
KworI2luY2x1ZGUgPGxpbnV4L2pveXN0aWNrLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR2FtZXBhZDsKKworY2xhc3MgR2Ft
ZXBhZERldmljZUxpbnV4IHsKK3B1YmxpYzoKKyAgICBib29sIGlzTnVsbCgpIHsgcmV0dXJuIG1f
ZGV2aWNlRmlsZS5pc051bGwoKTsgfQorICAgIGJvb2wgY29ubmVjdGVkKCkgeyByZXR1cm4gbV9j
b25uZWN0ZWQ7IH07CisgICAgdm9pZCB1cGRhdGVHYW1lcGFkKEdhbWVwYWQqKTsKKworcHJvdGVj
dGVkOgorICAgIEdhbWVwYWREZXZpY2VMaW51eChTdHJpbmcgZGV2aWNlRmlsZSk7CisKKyAgICB2
b2lkIHVwZGF0ZUZvckV2ZW50KHN0cnVjdCBqc19ldmVudCk7CisgICAgaW50IG1fZmlsZURlc2Ny
aXB0b3I7CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fZGV2aWNlRmlsZTsKKyAgICBib29sIG1f
Y29ubmVjdGVkOworCisgICAgU3RyaW5nIG1fZGV2aWNlTmFtZTsKKyAgICB1bnNpZ25lZCBsb25n
IGxvbmcgbV9sYXN0VGltZXN0YW1wOworCisgICAgdWludDhfdCBtX251bWJlck9mQXhlczsKKyAg
ICBWZWN0b3I8ZmxvYXQ+IG1fYXhlczsKKyAgICBmbG9hdCBub3JtYWxpemVBeGlzVmFsdWUoc2hv
cnQgdmFsdWUpOworCisgICAgdWludDhfdCBtX251bWJlck9mQnV0dG9uczsKKyAgICBWZWN0b3I8
ZmxvYXQ+IG1fYnV0dG9uczsKKyAgICBmbG9hdCBub3JtYWxpemVCdXR0b25WYWx1ZShzaG9ydCB2
YWx1ZSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
R0FNRVBBRCkKKworI2VuZGlmIC8vIEdhbWVwYWREZXZpY2VMaW51eF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1h
a2VmaWxlLmFtCmluZGV4IDJkNWFkMGE3YTU3MzI1ZmVhYzUzY2I3NDE0NGQxODNlYzc2NzA3NzEu
LjlhNDM1YzU4ZTZiMmIwZTVjMmUwZDYyMWNmOThmY2NhYTUxNDc5N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dO
VW1ha2VmaWxlLmFtCkBAIC04Nyw2ICs4Nyw3IEBAIGxpYndlYmtpdGd0a19AV0VCS0lUR1RLX0FQ
SV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUJBCiAJ
JChFTkNIQU5UX0xJQlMpIFwKIAkkKEZSRUVUWVBFX0xJQlMpIFwKIAkkKEdBSUxfTElCUykgXAor
CSQoR0FNRVBBRF9MSUJTKSBcCiAJJChHRU9DTFVFX0xJQlMpIFwKIAkkKEdMSUJfTElCUykgXAog
CSQoR1NUUkVBTUVSX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggZGYzNWM4NzBjYjU1
NmUxZGRlNmJlZDY3NWNlNTgzMjYyODllYTg0My4uOGQ3ZDU4NWNhYjM3NGFjNzBjOGU3YjI4NjA0
NTA2MDljNDYyZmQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0K
KysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTE1OSw2ICsxNTksNyBAQCBs
aWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJ
X01JTk9SX1ZFUlNJT05AX2xhX0xJQgogCSQoQ09WRVJBR0VfTERGTEFHUykgXAogCSQoRU5DSEFO
VF9MSUJTKSBcCiAJJChHQUlMX0xJQlMpIFwKKwkkKEdBTUVQQURfTElCUykgXAogCSQoR0VPQ0xV
RV9MSUJTKSBcCiAJJChHTElCX0xJQlMpIFwKIAkkKEdTVFJFQU1FUl9MSUJTKSBcCmRpZmYgLS1n
aXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZmJhNWE5OWQzYzI1NzUyMmU3OTcxOThm
YzdmMzg4Njg2MGRkZGYxZC4uMDc3NDdlNzQxNjBhNzBjMDZkN2MwNzZjODliNTMwYWQxNjAwNDYz
ZCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEyLTA2LTA1ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAg
ICAgICAgW0d0a10gQWRkIHN1cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAx
Mi0wNi0wNSAgRG9uZ3dvbyBJbSAgPGR3LmltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEFkZCAn
aXNQcm90b2NvbEhhbmRsZXJSZWdpc3RlcmVkJyBhbmQgJ3VucmVnaXN0ZXJQcm90b2NvbEhhbmRs
ZXInLgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDU3OWJk
NDAxMTY0MzNmMjVkYzYzNjEwZGVlMjY2ZjcwYzY1ZmIyZWEuLmMyNzQzZDAyOTNkMjQyZWU5MmRj
YzhlMWEzMzg3NjRhNDQwNGE1OTUgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25m
aWd1cmUuYWMKQEAgLTYyOSw2ICs2MjksMTEgQEAgQUNfQVJHX0VOQUJMRShnYW1lcGFkLAogICAg
ICAgICAgICAgICBbXSxbZW5hYmxlX2dhbWVwYWQ9Im5vIl0pCiBBQ19NU0dfUkVTVUxUKFskZW5h
YmxlX2dhbWVwYWRdKQogCitpZiB0ZXN0ICIkZW5hYmxlX2dhbWVwYWQiID0gInllcyIgJiYgdGVz
dCAiJG9zX2xpbnV4IiA9IG5vOyB0aGVuCisgICBBQ19NU0dfV0FSTihbR2FtZXBhZCBzdXBwb3J0
IGlzIG9ubHkgYXZhaWxhYmxlIG9uIExpbnV4LiBEaXNhYmxpbmcgR2FtZXBhZCBzdXBwb3J0Ll0p
CisgICBlbmFibGVfZ2FtZXBhZD1ubzsKK2ZpCisKICMgY2hlY2sgd2hldGhlciB0byBidWlsZCB3
aXRoIGRhdGEgdHJhbnNmZXIgaXRlbXMgc3VwcG9ydAogQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVy
IHRvIGVuYWJsZSBIVE1MNSBkYXRhIHRyYW5zZmVyIGl0ZW1zIHN1cHBvcnRdKQogQUNfQVJHX0VO
QUJMRShkYXRhX3RyYW5zZmVyX2l0ZW1zLApAQCAtMTI0Myw2ICsxMjQ4LDEzIEBAIGlmIHRlc3Qg
IiRlbmFibGVfd2Via2l0MiIgPSAieWVzIjsgdGhlbgogICAgQUNfU1VCU1QoW0FUU1BJMl9MSUJT
XSkKIGZpCiAKK2lmIHRlc3QgIiRlbmFibGVfZ2FtZXBhZCIgPSAieWVzIjsgdGhlbgorICAgUEtH
X0NIRUNLX01PRFVMRVMoW0dBTUVQQURdLCBbZ2lvLXVuaXgtMi4wIGd1ZGV2LTEuMF0pCisKKyAg
IEFDX1NVQlNUKEdBTUVQQURfQ0ZMQUdTKQorICAgQUNfU1VCU1QoR0FNRVBBRF9MSUJTKQorZmkK
KwogIyBjaGVjayBmb3IgY29kZSBjb3ZlcmFnZSBzdXBwb3J0CiBpZiB0ZXN0ICIkZW5hYmxlX2Nv
dmVyYWdlIiA9ICJ5ZXMiOyB0aGVuCiAgICBDT1ZFUkFHRV9DRkxBR1M9Ii1NRCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146326</attachid>
            <date>2012-06-07 10:56:57 -0700</date>
            <delta_ts>2012-06-13 11:27:32 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-87503-20120607195657.patch</filename>
            <type>text/plain</type>
            <size>28844</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ4NjlkN2QwNzMxZjgz
ZTRmNDBkYWZmNmY5Y2UwNGQ0NzcwOTU3OC4uOTc2MDliOTU0ZDg3YWM0NDY3Yjc1NWU0YWY5NjE5
MWVkYmVlOTc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA2LTA3ICBaYW4g
RG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0d0a10gQWRkIHN1
cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaWRsOgorICAgICAg
ICAqIGJpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW06CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzQXJyYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChHYW1lcGFkRGV2aWNlR3RrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VHdGs6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHYW1lcGFkRGV2aWNlR3RrOjpHYW1lcGFkRGV2aWNlR3RrKToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VHdGs6On5HYW1lcGFkRGV2aWNlR3RrKToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VHdGs6OnJlYWRGcm9tSW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZXBhZERldmljZUd0azo6cmVhZENhbGxiYWNrKToKKyAgICAgICAgKEdhbWVwYWRzR3Rr
KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzR3RrOjpsZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6R2FtZXBhZHNHdGs6OkdhbWVwYWRzR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVw
YWRzR3RrOjp+R2FtZXBhZHNHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNHdGs6OnJl
Z2lzdGVyRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzR3RrOjp1bnJlZ2lzdGVy
RGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzR3RrOjp1cGRhdGVHYW1lcGFkTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6b25VRXZlbnRDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6aXNHYW1lcGFkRGV2aWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNhbXBsZUdhbWVwYWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9saW51eC9HYW1l
cGFkRGV2aWNlTGludXguY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4OjpHYW1lcGFkRGV2aWNlTGludXgpOgorICAgICAg
ICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4Ojp1cGRhdGVHYW1lcGFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdhbWVwYWREZXZpY2VMaW51eDo6dXBkYXRlRm9yRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4Ojpub3JtYWxpemVBeGlzVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4Ojpub3JtYWxpemVCdXR0b25WYWx1ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4Lmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoR2FtZXBhZERldmljZUxpbnV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VMaW51eDo6aXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRE
ZXZpY2VMaW51eDo6Y29ubmVjdGVkKToKKwogMjAxMi0wNi0wNyAgTGkgWWluICA8bGkueWluQGlu
dGVsLmNvbT4KIAogICAgICAgICBGaWxlQVBJOiBJZiB0eXBlIGNvbnNpc3RzIG9mIG5vbi1BU0NJ
SSBjaGFyYWN0ZXJzIGluIEJsb2IgY29uc3RydWN0b3IsIGl0IHNob3VsZCB0aHJvdyBhIFN5bnRh
eEVycm9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDUyZWIxZTQyNjg1YTQ1NWZkNGE0YzhiNzNkZjNk
M2RiNGM1Nzc2ZTIuLjZjYTMyZDZkODY1YjU3Y2VhZGFkN2QzMjgyMmQzMzZmNzdkYzg5NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wNi0wNyAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFtHdGtdIEFkZCBzdXBwb3J0IGZv
ciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg3NTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKwogMjAxMi0wNi0wNCAgU3VkYXJzYW5hIE5hZ2lu
ZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGxpbnV4LmludGVsLmNvbT4KIAogICAgICAgICBbR1RL
XSBNZW1vcnkgbGVhayBpbiBXZWJLaXRXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2MwZDkyMWFlNmIy
ZGQzYWM2ZDMwM2MxMzM2MGU4M2NmMzQ0MTMyZS4uZWM5YjUwODEyNDA0YWE3MGYyYjc5NGZlOGNl
NTg2NjdlZjQ3MjMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA2LTA3ICBa
YW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0d0a10gQWRk
IHN1cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorCiAyMDEyLTA2LTA3ICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBB
ZGQgQVBJIHRvIHJlZ2lzdGVyIGN1c3RvbSBVUkkgc2NoZW1lcyB0byBXZWJLaXQyIEdUSysgQVBJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGYwYzUyYWI3Y2FlYjUzMjkxNGQ5NzI2NDE5ODE0ZTlm
ZTE3ZjQ5MjAuLjI1Y2YxMjdkYzEzMGExOTMzYjI2NDZmYWE1OWQ1ZjY2YWU5OWYxZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCkBAIC0xMiw2ICsxMiw3IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORyBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbSBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nYW1lcGFkIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYiBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbSBcCkBAIC02Nyw2
ICs2OCw3IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZyBcCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYiBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbGludXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2sgXApAQCAtODQxLDYgKzg0Myw3IEBAIERlcml2ZWRTb3VyY2VzL0FOR0xFL2dsc2xhbmdfdGFi
Lmg6IERlcml2ZWRTb3VyY2VzL0FOR0xFL2dsc2xhbmdfdGFiLmNwcAogCiBJRExfUEFUSCA6PSBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAorICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9nYW1lcGFkIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9jYXRpb24gXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbSBcCkBAIC05MzUsNiArOTM4LDcgQEAgbGliV2ViQ29yZV9sYV9DUFBGTEFHUyA9
IFwKIAkkKENMVVRURVJfQ0ZMQUdTKSBcCiAJJChDT1ZFUkFHRV9DRkxBR1MpIFwKIAkkKEVOQ0hB
TlRfQ0ZMQUdTKSBcCisJJChHQU1FUEFEX0NGTEFHUykgXAogCSQoR0VPQ0xVRV9DRkxBR1MpIFwK
IAkkKEdMSUJfQ0ZMQUdTKSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCkBAIC0xMDAxLDYgKzEw
MDUsNyBAQCBsaWJXZWJDb3JlR3RrX2xhX0NQUEZMQUdTID0gXAogCiBFWFRSQV9ESVNUICs9IFwK
IAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
Ki5pZGwpIFwKKwkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dh
bWVwYWQvKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtLyouaWRsKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCBhOWM3NWUyNjAzNzJkMGMzYmFmMGNiMWYyOTJmZTUwODAzYTA1
MDZmLi5hMDlkODkwNDliMGU3NjI4MTU3ZGY3YzI3YzFkZjYyNTg2YTYxY2QyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5Miw2ICsxOTIsMTAgQEAgd2ViY29yZV9idWlsdF9z
b3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmxvYXQzMkFycmF5LmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGbG9hdDY0QXJyYXkuY3BwIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRmxvYXQ2NEFycmF5LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHYW1lcGFkLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dhbWVwYWQuaCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dhbWVwYWRMaXN0LmNwcCBcCisJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0dhbWVwYWRMaXN0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNH
ZW9sb2NhdGlvbi5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHZW9sb2NhdGlvbi5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2VvcG9zaXRpb24uY3BwIFwKQEAgLTY3Nyw2
ICs2ODEsOSBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvWFBhdGhHcmFtbWFyLmgKIAogZG9tX2JpbmRpbmdfaWRscyArPSBcCisJJChXZWJDb3Jl
KS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9nYW1l
cGFkL0dhbWVwYWRMaXN0LmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdh
dG9yR2FtZXBhZC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbi5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9wb3NpdGlvbi5p
ZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlv
bi5pZGwgXApAQCAtMTA1MCw2ICsxMDU3LDEyIEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV2ViS2l0RmxhZ3MuaCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckNvbnRleHRGaWxlU3lzdGVt
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckNvbnRleHRG
aWxlU3lzdGVtLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmNwcCBcCisJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIFwKQEAgLTMxMzksNiArMzE1Miw3IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GbG9hdENvbnZlcnNpb24uaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRnJhY3Rpb25hbExheW91dFVuaXQuaCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vR2FtZXBhZHMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSGFzaFRv
b2xzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hpc3RvZ3JhbVN1cHBvcnQuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IaXN0b2dyYW1TdXBwb3J0LmggXApAQCAtMzM4NCw2
ICszMzk4LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRXJyb3JzR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0
ay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS1VSTEd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9Mb2dnaW5nR3RrLmNwcCBcCkBAIC0zNDQ0LDYgKzM0NTksOCBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VC
UEltYWdlRGVjb2Rlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlci5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0lj
ZUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBh
ZC9HYW1lcGFkLmlkbAppbmRleCBlMDBlMmRjM2Q4ODU1Y2Y4ZWYwNDU2NTMxN2YyYzc0NjAzN2Iz
YWEzLi4yY2FkZTA4Y2QzMTE3ZDQ4MWZjNzE2OThkMGQ5ZTVjNmQ5MjkzY2UxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaWRsCkBAIC0zMSw4ICszMSw4IEBAIG1v
ZHVsZSBkb20gewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOwogICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBpbmRleDsKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXA7Ci0gICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBmbG9hdFtdIGF4ZXM7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBmbG9hdFtdIGJ1dHRvbnM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBzZXF1ZW5jZTxm
bG9hdD4gYXhlczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHNlcXVlbmNlPGZsb2F0PiBi
dXR0b25zOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGM3MDI1Mjg2ZDBmYWU3NGUyNWFlOGUyZDMxMDcyMTU3OTVh
Mzc4ZjUuLmZhMDQ1NDIwM2NiNmNhYjNiYzExNjg2OGRhOGRjNjNiOWI2N2VjY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQpAQCAtNjYsNiAr
NjYsMTAgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJj
ZXMvd2Via2l0L1dlYktpdERPTUZpbGVMaXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0
L1dlYktpdERPTUZpbGVMaXN0UHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2Vi
S2l0RE9NRmlsZVByaXZhdGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUdh
bWVwYWQuY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NR2FtZXBhZExpc3Qu
Y3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NR2FtZXBhZExpc3RQcml2YXRl
LmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01HYW1lcGFkUHJpdmF0ZS5oIFwK
IAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NR2VvbG9jYXRpb24uY3BwIFwKIAlEZXJp
dmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NR2VvbG9jYXRpb25Qcml2YXRlLmggXAogCURlcml2
ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01IaXN0b3J5LmNwcCBcCkBAIC0yOTUsNiArMjk5LDgg
QEAgd2Via2l0Z3RrX2J1aWx0X2hfYXBpICs9IFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2Vi
S2l0RE9NQmxvYi5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NRmlsZS5oIFwK
IAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NRmlsZUxpc3QuaCBcCisJRGVyaXZlZFNv
dXJjZXMvd2Via2l0L1dlYktpdERPTUdhbWVwYWQuaCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0
L1dlYktpdERPTUdhbWVwYWRMaXN0LmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRE
T01HZW9sb2NhdGlvbi5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NSFRNTEFu
Y2hvckVsZW1lbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUhUTUxBcHBs
ZXRFbGVtZW50LmggXApAQCAtNDI4LDcgKzQzNCw2IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X3Nv
dXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01IVE1MUHJvcGVydGll
c0NvbGxlY3Rpb25Qcml2YXRlLmgKIGVuZGlmCiAKLQogaWYgRU5BQkxFX1dFQl9USU1JTkcKIHdl
YmtpdGd0a19idWlsdF9oX2FwaSArPSBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2Vz
L3dlYmtpdC9XZWJLaXRET01QZXJmb3JtYW5jZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmgKaW5kZXggMWJlNjMxMGE4Yzg4YmJlMmZjZGRkMDRjZTBkY2UzNWI3
YTgxMmY1My4uYjcyNDVlY2RiOThkNWRhZjFiMGEzODkzNDg2MDMwZWY3MTNmZDEwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTMwMyw2ICszMDMsMTgg
QEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICAgICAgcmV0dXJuIEpTQzo6Y29u
c3RydWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBhcnJheSk7CiAgICAgfQogCisgICAgdGVt
cGxhdGU8PgorICAgIGlubGluZSBKU0M6OkpTVmFsdWUganNBcnJheShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPGZsb2F0
PiYgaXRlcmF0b3IpCisgICAgeworICAgICAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
cmF5OworICAgICAgICBWZWN0b3I8ZmxvYXQ+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpdGVyYXRv
ci5lbmQoKTsKKworICAgICAgICBmb3IgKFZlY3RvcjxmbG9hdD46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gaXRlcmF0b3IuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgYXJyYXku
YXBwZW5kKEpTQzo6anNOdW1iZXIoKml0KSk7CisKKyAgICAgICAgcmV0dXJuIEpTQzo6Y29uc3Ry
dWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBhcnJheSk7CisgICAgfQorCiAgICAgdGVtcGxh
dGUgPGNsYXNzIFQ+CiAgICAgVmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0dhbWVwYWRzR3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTEyMjQzZGRiNjc1Njc1MjZlYjdh
MjI1YjU2Mjk2YmUyM2UyMGMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcApAQCAtMCwwICsxLDIyMyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBaYW4gRG9iZXJzZWsgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAor
ICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWRzLmgiCisKKyNpZiBF
TkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIkdhbWVwYWREZXZpY2VMaW51eC5oIgorI2luY2x1
ZGUgIkdhbWVwYWRMaXN0LmgiCisjaW5jbHVkZSA8Z2lvL2d1bml4aW5wdXRzdHJlYW0uaD4KKyNp
bmNsdWRlIDxndWRldi9ndWRldi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgR2FtZXBhZERldmljZUd0ayA6IHB1YmxpYyBHYW1lcGFkRGV2aWNlTGludXgg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEdhbWVwYWREZXZpY2VHdGs+IGNyZWF0
ZShTdHJpbmcgZGV2aWNlRmlsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
R2FtZXBhZERldmljZUd0ayhkZXZpY2VGaWxlKSk7CisgICAgfQorICAgIH5HYW1lcGFkRGV2aWNl
R3RrKCk7CisKK3ByaXZhdGU6CisgICAgR2FtZXBhZERldmljZUd0ayhTdHJpbmcgZGV2aWNlRmls
ZSk7CisKKyAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gbV9pbnB1dFN0cmVhbTsKKyAgICBHUmVm
UHRyPEdTb3VyY2U+IG1fc291cmNlOworICAgIHN0YXRpYyBnYm9vbGVhbiByZWFkQ2FsbGJhY2so
R09iamVjdCogcG9sbGFibGVTdHJlYW0sIGdwb2ludGVyIGRhdGEpOworfTsKKworR2FtZXBhZERl
dmljZUd0azo6R2FtZXBhZERldmljZUd0ayhTdHJpbmcgZGV2aWNlRmlsZSkKKyAgICA6IEdhbWVw
YWREZXZpY2VMaW51eChkZXZpY2VGaWxlKQoreworICAgIGlmIChtX2ZpbGVEZXNjcmlwdG9yIDwg
MCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX3Vu
aXhfaW5wdXRfc3RyZWFtX25ldyhtX2ZpbGVEZXNjcmlwdG9yLCBGQUxTRSkpOworICAgIG1fc291
cmNlID0gYWRvcHRHUmVmKGdfcG9sbGFibGVfaW5wdXRfc3RyZWFtX2NyZWF0ZV9zb3VyY2UoR19Q
T0xMQUJMRV9JTlBVVF9TVFJFQU0obV9pbnB1dFN0cmVhbS5nZXQoKSksIDApKTsKKyAgICBnX3Nv
dXJjZV9zZXRfY2FsbGJhY2sobV9zb3VyY2UuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJj
ZUZ1bmM+KHJlYWRDYWxsYmFjayksIHRoaXMsIDApOworICAgIGdfc291cmNlX2F0dGFjaChtX3Nv
dXJjZS5nZXQoKSwgMCk7Cit9CisKK0dhbWVwYWREZXZpY2VHdGs6On5HYW1lcGFkRGV2aWNlR3Rr
KCkKK3sKKyAgICBpZiAobV9zb3VyY2UpCisgICAgICAgIGdfc291cmNlX2Rlc3Ryb3kobV9zb3Vy
Y2UuZ2V0KCkpOworfQorCitnYm9vbGVhbiBHYW1lcGFkRGV2aWNlR3RrOjpyZWFkQ2FsbGJhY2so
R09iamVjdCogcG9sbGFibGVTdHJlYW0sIGdwb2ludGVyIGRhdGEpCit7CisgICAgR2FtZXBhZERl
dmljZUd0ayogZ2FtZXBhZERldmljZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R2FtZXBhZERldmljZUd0
ayo+KGRhdGEpOworICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBzdHJ1Y3QganNfZXZl
bnQgZXZlbnQ7CisKKyAgICBnc3NpemUgbGVuID0gZ19wb2xsYWJsZV9pbnB1dF9zdHJlYW1fcmVh
ZF9ub25ibG9ja2luZyhHX1BPTExBQkxFX0lOUFVUX1NUUkVBTShwb2xsYWJsZVN0cmVhbSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmV2ZW50LCBzaXplb2YoZXZlbnQpLCAwLCAmZXJyb3Iub3V0UHRyKCkpOworCisgICAgaWYgKCFl
cnJvciAmJiBsZW4gPT0gc2l6ZW9mKGV2ZW50KSkKKyAgICAgICAgZ2FtZXBhZERldmljZS0+dXBk
YXRlRm9yRXZlbnQoZXZlbnQpOworCisgICAgLy8gRklYTUU6IFByb3Blcmx5IGhhbmRsZSBHX0lP
X0VSUk9SX1dPVUxEX0JMT0NLCisgICAgLy8gRklYTUU6IFByb3Blcmx5IGxvZyB0aGUgZXJyb3Iu
CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworY2xhc3MgR2FtZXBhZHNHdGsgeworcHVibGljOgor
ICAgIEdhbWVwYWRzR3RrKHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRGV2
aWNlKFN0cmluZyBkZXZpY2VGaWxlKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJEZXZpY2UoU3RyaW5n
IGRldmljZUZpbGUpOworCisgICAgdm9pZCB1cGRhdGVHYW1lcGFkTGlzdChHYW1lcGFkTGlzdCop
OworCitwcml2YXRlOgorICAgIH5HYW1lcGFkc0d0aygpOworCisgICAgVmVjdG9yPE93blB0cjxH
YW1lcGFkRGV2aWNlR3RrPiA+IG1fc2xvdHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIEdhbWVwYWRE
ZXZpY2VHdGsqPiBtX2RldmljZU1hcDsKKworICAgIEdSZWZQdHI8R1VkZXZDbGllbnQ+IG1fZ3Vk
ZXZDbGllbnQ7CisKKyAgICBzdGF0aWMgdm9pZCBvblVFdmVudENhbGxiYWNrKEdVZGV2Q2xpZW50
KiwgZ2NoYXIqIGFjdGlvbiwgR1VkZXZEZXZpY2UqLCBncG9pbnRlciBkYXRhKTsKKyAgICBzdGF0
aWMgZ2Jvb2xlYW4gaXNHYW1lcGFkRGV2aWNlKEdVZGV2RGV2aWNlKik7Cit9OworCitHYW1lcGFk
c0d0azo6R2FtZXBhZHNHdGsodW5zaWduZWQgbGVuZ3RoKQorICAgIDogbV9zbG90cyhsZW5ndGgp
Cit7CisgICAgc3RhdGljIGNvbnN0IGdjaGFyKiBzdWJzeXN0ZW1zW10gPSB7ICJpbnB1dCIsIDAg
fTsKKyAgICBtX2d1ZGV2Q2xpZW50ID0gYWRvcHRHUmVmKGdfdWRldl9jbGllbnRfbmV3KHN1YnN5
c3RlbXMpKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZ3VkZXZDbGllbnQuZ2V0KCksICJ1ZXZl
bnQiLCBHX0NBTExCQUNLKG9uVUV2ZW50Q2FsbGJhY2spLCB0aGlzKTsKKworICAgIEdPd25QdHI8
R0xpc3Q+IGRldmljZXNMaXN0KGdfdWRldl9jbGllbnRfcXVlcnlfYnlfc3Vic3lzdGVtKG1fZ3Vk
ZXZDbGllbnQuZ2V0KCksIHN1YnN5c3RlbXNbMF0pKTsKKyAgICBmb3IgKEdMaXN0KiBsaXN0SXRl
bSA9IGRldmljZXNMaXN0LmdldCgpOyBsaXN0SXRlbTsgbGlzdEl0ZW0gPSBnX2xpc3RfbmV4dChs
aXN0SXRlbSkpIHsKKyAgICAgICAgR1VkZXZEZXZpY2UqIGRldmljZSA9IEdfVURFVl9ERVZJQ0Uo
bGlzdEl0ZW0tPmRhdGEpOworICAgICAgICBTdHJpbmcgZGV2aWNlRmlsZSA9IFN0cmluZzo6ZnJv
bVVURjgoZ191ZGV2X2RldmljZV9nZXRfZGV2aWNlX2ZpbGUoZGV2aWNlKSk7CisgICAgICAgIGlm
IChpc0dhbWVwYWREZXZpY2UoZGV2aWNlKSkKKyAgICAgICAgICAgIHJlZ2lzdGVyRGV2aWNlKGRl
dmljZUZpbGUpOworICAgICAgICBnX29iamVjdF91bnJlZihkZXZpY2UpOworICAgIH0KK30KKwor
R2FtZXBhZHNHdGs6On5HYW1lcGFkc0d0aygpCit7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlz
Y29ubmVjdF9tYXRjaGVkKG1fZ3VkZXZDbGllbnQuZ2V0KCksIEdfU0lHTkFMX01BVENIX0RBVEEs
IDAsIDAsIDAsIDAsIHRoaXMpOworfQorCit2b2lkIEdhbWVwYWRzR3RrOjpyZWdpc3RlckRldmlj
ZShTdHJpbmcgZGV2aWNlRmlsZSkKK3sKKyAgICBBU1NFUlQoIW1fZGV2aWNlTWFwLmNvbnRhaW5z
KGRldmljZUZpbGUpKTsKKworICAgIHVuc2lnbmVkIGluZGV4OworICAgIGZvciAoaW5kZXggPSAw
OyBpbmRleCA8IG1fc2xvdHMuc2l6ZSgpOyBpbmRleCsrKSB7CisgICAgICAgIGlmICghbV9zbG90
c1tpbmRleF0pCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoaW5kZXggPj0g
bV9zbG90cy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2xvdHNbaW5kZXhdID0g
R2FtZXBhZERldmljZUd0azo6Y3JlYXRlKGRldmljZUZpbGUpOworICAgIG1fZGV2aWNlTWFwLmFk
ZChkZXZpY2VGaWxlLCBtX3Nsb3RzW2luZGV4XS5nZXQoKSk7Cit9CisKK3ZvaWQgR2FtZXBhZHNH
dGs6OnVucmVnaXN0ZXJEZXZpY2UoU3RyaW5nIGRldmljZUZpbGUpCit7CisgICAgQVNTRVJUKG1f
ZGV2aWNlTWFwLmNvbnRhaW5zKGRldmljZUZpbGUpKTsKKworICAgIEdhbWVwYWREZXZpY2VHdGsq
IGdhbWVwYWREZXZpY2UgPSBtX2RldmljZU1hcC50YWtlKGRldmljZUZpbGUpOworICAgIHVuc2ln
bmVkIGluZGV4ID0gbV9zbG90cy5maW5kKGdhbWVwYWREZXZpY2UpOworICAgIEFTU0VSVChpbmRl
eCAhPSBub3RGb3VuZCk7CisKKyAgICBtX3Nsb3RzW2luZGV4XS5jbGVhcigpOworfQorCit2b2lk
IEdhbWVwYWRzR3RrOjp1cGRhdGVHYW1lcGFkTGlzdChHYW1lcGFkTGlzdCogaW50bykKK3sKKyAg
ICBBU1NFUlQobV9zbG90cy5zaXplKCkgPT0gaW50by0+bGVuZ3RoKCkpOworCisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fc2xvdHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKG1f
c2xvdHNbaV0uZ2V0KCkgJiYgbV9zbG90c1tpXS0+Y29ubmVjdGVkKCkpIHsKKyAgICAgICAgICAg
IEdhbWVwYWREZXZpY2VHdGsqIGdhbWVwYWREZXZpY2UgPSBtX3Nsb3RzW2ldLmdldCgpOworICAg
ICAgICAgICAgUmVmUHRyPEdhbWVwYWQ+IGdhbWVwYWQgPSBpbnRvLT5pdGVtKGkpOworICAgICAg
ICAgICAgaWYgKCFnYW1lcGFkKQorICAgICAgICAgICAgICAgIGdhbWVwYWQgPSBHYW1lcGFkOjpj
cmVhdGUoKTsKKworICAgICAgICAgICAgZ2FtZXBhZC0+aW5kZXgoaSk7CisgICAgICAgICAgICBn
YW1lcGFkLT5pZChnYW1lcGFkRGV2aWNlLT5pZCgpKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPnRp
bWVzdGFtcChnYW1lcGFkRGV2aWNlLT50aW1lc3RhbXAoKSk7CisgICAgICAgICAgICBnYW1lcGFk
LT5heGVzKGdhbWVwYWREZXZpY2UtPmF4ZXNDb3VudCgpLCBnYW1lcGFkRGV2aWNlLT5heGVzRGF0
YSgpKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPmJ1dHRvbnMoZ2FtZXBhZERldmljZS0+YnV0dG9u
c0NvdW50KCksIGdhbWVwYWREZXZpY2UtPmJ1dHRvbnNEYXRhKCkpOworCisgICAgICAgICAgICBp
bnRvLT5zZXQoaSwgZ2FtZXBhZCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaW50by0+
c2V0KGksIDApOworICAgIH0KK30KKwordm9pZCBHYW1lcGFkc0d0azo6b25VRXZlbnRDYWxsYmFj
ayhHVWRldkNsaWVudCogdWRldkNsaWVudCwgZ2NoYXIqIGFjdGlvbiwgR1VkZXZEZXZpY2UqIGRl
dmljZSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBpZiAoIWlzR2FtZXBhZERldmljZShkZXZpY2Up
KQorICAgICAgICByZXR1cm47CisKKyAgICBHYW1lcGFkc0d0ayogZGV2aWNlTWFwcGVyID0gcmVp
bnRlcnByZXRfY2FzdDxHYW1lcGFkc0d0ayo+KGRhdGEpOworICAgIFN0cmluZyBkZXZpY2VGaWxl
ID0gU3RyaW5nOjpmcm9tVVRGOChnX3VkZXZfZGV2aWNlX2dldF9kZXZpY2VfZmlsZShkZXZpY2Up
KTsKKworICAgIGlmICghZ19zdHJjbXAwKGFjdGlvbiwgImFkZCIpKQorICAgICAgICBkZXZpY2VN
YXBwZXItPnJlZ2lzdGVyRGV2aWNlKGRldmljZUZpbGUpOworICAgIGVsc2UgaWYgKCFnX3N0cmNt
cDAoYWN0aW9uLCAicmVtb3ZlIikpCisgICAgICAgIGRldmljZU1hcHBlci0+dW5yZWdpc3RlckRl
dmljZShkZXZpY2VGaWxlKTsKK30KKworZ2Jvb2xlYW4gR2FtZXBhZHNHdGs6OmlzR2FtZXBhZERl
dmljZShHVWRldkRldmljZSogZGV2aWNlKQoreworICAgIGNvbnN0IGdjaGFyKiBkZXZpY2VGaWxl
ID0gZ191ZGV2X2RldmljZV9nZXRfZGV2aWNlX2ZpbGUoZGV2aWNlKTsKKyAgICBjb25zdCBnY2hh
ciogc3lzZnNQYXRoID0gZ191ZGV2X2RldmljZV9nZXRfc3lzZnNfcGF0aChkZXZpY2UpOworICAg
IGlmICghZGV2aWNlRmlsZSB8fCAhc3lzZnNQYXRoKQorICAgICAgICByZXR1cm4gRkFMU0U7CisK
KyAgICBpZiAoIWdfdWRldl9kZXZpY2VfaGFzX3Byb3BlcnR5KGRldmljZSwgIklEX0lOUFVUIikg
fHwgIWdfdWRldl9kZXZpY2VfaGFzX3Byb3BlcnR5KGRldmljZSwgIklEX0lOUFVUX0pPWVNUSUNL
IikpCisgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIHJldHVybiBnX3N0cl9oYXNfcHJlZml4
KGRldmljZUZpbGUsICIvZGV2L2lucHV0L2pzIik7Cit9CisKK3ZvaWQgc2FtcGxlR2FtZXBhZHMo
R2FtZXBhZExpc3QqIGludG8pCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChHYW1lcGFkc0d0
aywgZ2FtZXBhZHNHdGssIChpbnRvLT5sZW5ndGgoKSkpOworICAgIGdhbWVwYWRzR3RrLnVwZGF0
ZUdhbWVwYWRMaXN0KGludG8pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9s
aW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxNmNmZmFjMmMwOTdlNjQ0
NTM3ZjZhMTQ2Zjg2OWNiNGUxZWJhYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwCkBAIC0wLDAgKzEsOTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFp
bC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisg
KiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAor
ICogREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHYW1lcGFk
RGV2aWNlTGludXguaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSA8ZmNudGwu
aD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2FtZXBhZERldmljZUxpbnV4OjpHYW1lcGFkRGV2
aWNlTGludXgoU3RyaW5nIGRldmljZUZpbGUpCisgICAgOiBtX2ZpbGVEZXNjcmlwdG9yKC0xKQor
ICAgICwgbV9jb25uZWN0ZWQoZmFsc2UpCisgICAgLCBtX2xhc3RUaW1lc3RhbXAoMCkKK3sKKwor
ICAgIC8vIEZJWE1FOiBMb2cgZXJyb3JzIHdoZW4gcmV0dXJuaW5nIGVhcmx5LgorICAgIG1fZmls
ZURlc2NyaXB0b3IgPSBvcGVuKGRldmljZUZpbGUudXRmOCgpLmRhdGEoKSwgT19SRE9OTFkgfCBP
X05PTkJMT0NLKTsKKyAgICBpZiAobV9maWxlRGVzY3JpcHRvciA8IDApCisgICAgICAgIHJldHVy
bjsKKworICAgIGNoYXIgZGV2aWNlTmFtZVsxMDI0XTsKKyAgICBpZiAoaW9jdGwobV9maWxlRGVz
Y3JpcHRvciwgSlNJT0NHTkFNRShzaXplb2YoZGV2aWNlTmFtZSkpLCBkZXZpY2VOYW1lKSA8IDAp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2RldmljZU5hbWUgPSBTdHJpbmcoZGV2aWNlTmFtZSku
c2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisKKyAgICB1aW50OF90IG51bWJlck9mQXhlczsKKyAgICB1
aW50OF90IG51bWJlck9mQnV0dG9uczsKKyAgICBpZiAoaW9jdGwobV9maWxlRGVzY3JpcHRvciwg
SlNJT0NHQVhFUywgJm51bWJlck9mQXhlcykgPCAwIHx8IGlvY3RsKG1fZmlsZURlc2NyaXB0b3Is
IEpTSU9DR0JVVFRPTlMsICZudW1iZXJPZkJ1dHRvbnMpIDwgMCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fYXhlcy5maWxsKDAuMCwgbnVtYmVyT2ZBeGVzKTsKKyAgICBtX2J1dHRvbnMuZmlsbCgw
LjAsIG51bWJlck9mQnV0dG9ucyk7Cit9CisKK0dhbWVwYWREZXZpY2VMaW51eDo6fkdhbWVwYWRE
ZXZpY2VMaW51eCgpCit7CisgICAgaWYgKG1fZmlsZURlc2NyaXB0b3IgPj0gMCkKKyAgICAgICAg
Y2xvc2UobV9maWxlRGVzY3JpcHRvcik7Cit9CisKK3ZvaWQgR2FtZXBhZERldmljZUxpbnV4Ojp1
cGRhdGVGb3JFdmVudChzdHJ1Y3QganNfZXZlbnQgZXZlbnQpCit7CisgICAgaWYgKCEoZXZlbnQu
dHlwZSAmIEpTX0VWRU5UX0FYSVMgfHwgZXZlbnQudHlwZSAmIEpTX0VWRU5UX0JVVFRPTikpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIE1hcmsgdGhlIGRldmljZSBhcyBjb25uZWN0ZWQgb25s
eSBpZiBpdCBpcyBub3QgeWV0IGNvbm5lY3RlZCwgdGhlIGV2ZW50IGlzIG5vdCBhbiBpbml0aWFs
aXphdGlvbgorICAgIC8vIGFuZCB0aGUgdmFsdWUgaXMgbm90IDAgKGluZGljYXRpbmcgYSBnZW51
aW5lIGludGVyYWN0aW9uIHdpdGggdGhlIGRldmljZSkuCisgICAgaWYgKCFtX2Nvbm5lY3RlZCAm
JiAhKGV2ZW50LnR5cGUgJiBKU19FVkVOVF9JTklUKSAmJiBldmVudC52YWx1ZSkKKyAgICAgICAg
bV9jb25uZWN0ZWQgPSB0cnVlOworCisgICAgaWYgKGV2ZW50LnR5cGUgJiBKU19FVkVOVF9BWElT
KQorICAgICAgICBtX2F4ZXNbZXZlbnQubnVtYmVyXSA9IG5vcm1hbGl6ZUF4aXNWYWx1ZShldmVu
dC52YWx1ZSk7CisgICAgZWxzZSBpZiAoZXZlbnQudHlwZSAmIEpTX0VWRU5UX0JVVFRPTikKKyAg
ICAgICAgbV9idXR0b25zW2V2ZW50Lm51bWJlcl0gPSBub3JtYWxpemVCdXR0b25WYWx1ZShldmVu
dC52YWx1ZSk7CisKKyAgICBtX2xhc3RUaW1lc3RhbXAgPSBldmVudC50aW1lOworfQorCitmbG9h
dCBHYW1lcGFkRGV2aWNlTGludXg6Om5vcm1hbGl6ZUF4aXNWYWx1ZShzaG9ydCB2YWx1ZSkKK3sK
KyAgICAvLyBOb3JtYWxpemUgZnJvbSByYW5nZSBbLTMyNzY3LCAzMjc2N10gaW50byByYW5nZSBb
LTEuMCwgMS4wXQorICAgIHJldHVybiB2YWx1ZSAvIDMyNzY3LjBmOworfQorCitmbG9hdCBHYW1l
cGFkRGV2aWNlTGludXg6Om5vcm1hbGl6ZUJ1dHRvblZhbHVlKHNob3J0IHZhbHVlKQoreworICAg
IC8vIE5vcm1hbGl6ZSBmcm9tIHJhbmdlIFswLCAxXSBpbnRvIHJhbmdlIFswLjAsIDEuMF0KKyAg
ICByZXR1cm4gdmFsdWUgLyAxLjBmOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bGludXgvR2FtZXBhZERldmljZUxpbnV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA0OGE2MDE0NDAzZDM4MGNm
NTIyZWQxYWI4NTNmYjdjOTJhZWE4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oCkBAIC0wLDAgKzEsNzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5j
b20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICog
REFNQUdFLgorICovCisKKyNpZm5kZWYgR2FtZXBhZERldmljZUxpbnV4X2gKKyNkZWZpbmUgR2Ft
ZXBhZERldmljZUxpbnV4X2gKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSA8bGlu
dXgvam95c3RpY2suaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBHYW1lcGFkRGV2aWNlTGludXggeworcHVibGljOgorICAgIGJv
b2wgY29ubmVjdGVkKCkgeyByZXR1cm4gbV9jb25uZWN0ZWQ7IH07CisKKyAgICBTdHJpbmcgaWQo
KSB7IHJldHVybiBtX2RldmljZU5hbWU7IH0KKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGltZXN0
YW1wKCkgeyByZXR1cm4gbV9sYXN0VGltZXN0YW1wOyB9CisKKyAgICB1bnNpZ25lZCBheGVzQ291
bnQoKSB7IHJldHVybiBtX2F4ZXMuc2l6ZSgpOyB9CisgICAgZmxvYXQqIGF4ZXNEYXRhKCkgeyBy
ZXR1cm4gbV9heGVzLmRhdGEoKTsgfQorCisgICAgdW5zaWduZWQgYnV0dG9uc0NvdW50KCkgeyBy
ZXR1cm4gbV9idXR0b25zLnNpemUoKTsgfQorICAgIGZsb2F0KiBidXR0b25zRGF0YSgpIHsgcmV0
dXJuIG1fYnV0dG9ucy5kYXRhKCk7IH0KKworcHJvdGVjdGVkOgorICAgIEdhbWVwYWREZXZpY2VM
aW51eChTdHJpbmcgZGV2aWNlRmlsZSk7CisgICAgfkdhbWVwYWREZXZpY2VMaW51eCgpOworCisg
ICAgdm9pZCB1cGRhdGVGb3JFdmVudChzdHJ1Y3QganNfZXZlbnQpOworICAgIGludCBtX2ZpbGVE
ZXNjcmlwdG9yOworCitwcml2YXRlOgorICAgIGJvb2wgbV9jb25uZWN0ZWQ7CisKKyAgICBTdHJp
bmcgbV9kZXZpY2VOYW1lOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX2xhc3RUaW1lc3RhbXA7
CisKKyAgICBWZWN0b3I8ZmxvYXQ+IG1fYXhlczsKKyAgICBmbG9hdCBub3JtYWxpemVBeGlzVmFs
dWUoc2hvcnQgdmFsdWUpOworCisgICAgVmVjdG9yPGZsb2F0PiBtX2J1dHRvbnM7CisgICAgZmxv
YXQgbm9ybWFsaXplQnV0dG9uVmFsdWUoc2hvcnQgdmFsdWUpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCisKKyNlbmRpZiAvLyBHYW1l
cGFkRGV2aWNlTGludXhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZp
bGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQppbmRleCAyZDVhZDBhN2E1
NzMyNWZlYWM1M2NiNzQxNDRkMTgzZWM3NjcwNzcxLi45YTQzNWM1OGU2YjJiMGU1YzJlMGQ2MjFj
Zjk4ZmNjYWE1MTQ3OTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmls
ZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtODcsNiArODcs
NyBAQCBsaWJ3ZWJraXRndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdU
S19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCQQogCSQoRU5DSEFOVF9MSUJTKSBcCiAJJChGUkVF
VFlQRV9MSUJTKSBcCiAJJChHQUlMX0xJQlMpIFwKKwkkKEdBTUVQQURfTElCUykgXAogCSQoR0VP
Q0xVRV9MSUJTKSBcCiAJJChHTElCX0xJQlMpIFwKIAkkKEdTVFJFQU1FUl9MSUJTKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtCmluZGV4IGRmMzVjODcwY2I1NTZlMWRkZTZiZWQ2NzVjZTU4MzI2Mjg5ZWE4
NDMuLjhkN2Q1ODVjYWIzNzRhYzcwYzhlN2IyODYwNDUwNjA5YzQ2MmZkMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmFtCkBAIC0xNTksNiArMTU5LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQ
SV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUIKIAkk
KENPVkVSQUdFX0xERkxBR1MpIFwKIAkkKEVOQ0hBTlRfTElCUykgXAogCSQoR0FJTF9MSUJTKSBc
CisJJChHQU1FUEFEX0xJQlMpIFwKIAkkKEdFT0NMVUVfTElCUykgXAogCSQoR0xJQl9MSUJTKSBc
CiAJJChHU1RSRUFNRVJfTElCUykgXApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9n
CmluZGV4IDRiNDUxOGZjZjhkMDUxMmJlNGE3MzJiMTMwOTBjMjRiYjhjYzdjMDEuLjdmNTRmYjhk
NTE1YzU0M2I1NjZiZjMwYzBjOTk4OGU0YzRmZjdmNGEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZwor
KysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wNi0wNyAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFtHdGtdIEFkZCBzdXBwb3J0IGZv
ciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg3NTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBjb25maWd1cmUuYWM6CisKIDIwMTItMDYtMDYgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBUZWFjaCBnaXQgYWJvdXQgbG9jYWxpemFibGUg
Ki5zdHJpbmdzIGZpbGVzCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMK
aW5kZXggYzgzMDYwOWFhZmFiZTRjODhiZjJhOTY0MjQwZWEyZDQ0ODc1NjkxMy4uY2M4MTY3Mzk0
NGFjNjg4OThiYmQzMzVkY2EwZGIzY2NhOTFlMGQ3NyAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFj
CisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNjM0LDYgKzYzNCwxMSBAQCBBQ19BUkdfRU5BQkxFKGdh
bWVwYWQsCiAgICAgICAgICAgICAgIFtdLFtlbmFibGVfZ2FtZXBhZD0ibm8iXSkKIEFDX01TR19S
RVNVTFQoWyRlbmFibGVfZ2FtZXBhZF0pCiAKK2lmIHRlc3QgIiRlbmFibGVfZ2FtZXBhZCIgPSAi
eWVzIiAmJiB0ZXN0ICIkb3NfbGludXgiID0gbm87IHRoZW4KKyAgIEFDX01TR19XQVJOKFtHYW1l
cGFkIHN1cHBvcnQgaXMgb25seSBhdmFpbGFibGUgb24gTGludXguIERpc2FibGluZyBHYW1lcGFk
IHN1cHBvcnQuXSkKKyAgIGVuYWJsZV9nYW1lcGFkPW5vOworZmkKKwogIyBjaGVjayB3aGV0aGVy
IHRvIGJ1aWxkIHdpdGggZGF0YSB0cmFuc2ZlciBpdGVtcyBzdXBwb3J0CiBBQ19NU0dfQ0hFQ0tJ
TkcoW3doZXRoZXIgdG8gZW5hYmxlIEhUTUw1IGRhdGEgdHJhbnNmZXIgaXRlbXMgc3VwcG9ydF0p
CiBBQ19BUkdfRU5BQkxFKGRhdGFfdHJhbnNmZXJfaXRlbXMsCkBAIC0xMjQ4LDYgKzEyNTMsMTMg
QEAgaWYgdGVzdCAiJGVuYWJsZV93ZWJraXQyIiA9ICJ5ZXMiOyB0aGVuCiAgICBBQ19TVUJTVChb
QVRTUEkyX0xJQlNdKQogZmkKIAoraWYgdGVzdCAiJGVuYWJsZV9nYW1lcGFkIiA9ICJ5ZXMiOyB0
aGVuCisgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR0FNRVBBRF0sIFtnaW8tdW5peC0yLjAgZ3VkZXYt
MS4wXSkKKworICAgQUNfU1VCU1QoR0FNRVBBRF9DRkxBR1MpCisgICBBQ19TVUJTVChHQU1FUEFE
X0xJQlMpCitmaQorCiAjIGNoZWNrIGZvciBjb2RlIGNvdmVyYWdlIHN1cHBvcnQKIGlmIHRlc3Qg
IiRlbmFibGVfY292ZXJhZ2UiID0gInllcyI7IHRoZW4KICAgIENPVkVSQUdFX0NGTEFHUz0iLU1E
Igo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147369</attachid>
            <date>2012-06-13 11:27:40 -0700</date>
            <delta_ts>2012-06-19 08:37:38 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-87503-20120613202740.patch</filename>
            <type>text/plain</type>
            <size>28187</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZiYTk3MWZhM2FlODUy
OTAwMmNiOWM3NjhkOTRkNjVhOWQxYTg5Ny4uZWNmZmQ0MmFlYTliMjJkM2QwMjU3NzAxZjI0MWU3
ZDlkMzAwNzY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA2LTEzICBaYW4g
RG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0d0a10gQWRkIHN1
cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaWRsOgorICAgICAg
ICAqIGJpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW06CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzQXJyYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChHYW1lcGFkRGV2aWNlR3RrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VHdGs6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHYW1lcGFkRGV2aWNlR3RrOjpHYW1lcGFkRGV2aWNlR3RrKToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VHdGs6On5HYW1lcGFkRGV2aWNlR3RrKToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VHdGs6OnJlYWRGcm9tSW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZXBhZERldmljZUd0azo6cmVhZENhbGxiYWNrKToKKyAgICAgICAgKEdhbWVwYWRzR3Rr
KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzR3RrOjpsZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6R2FtZXBhZHNHdGs6OkdhbWVwYWRzR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVw
YWRzR3RrOjp+R2FtZXBhZHNHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNHdGs6OnJl
Z2lzdGVyRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzR3RrOjp1bnJlZ2lzdGVy
RGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzR3RrOjp1cGRhdGVHYW1lcGFkTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6b25VRXZlbnRDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6aXNHYW1lcGFkRGV2aWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNhbXBsZUdhbWVwYWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9saW51eC9HYW1l
cGFkRGV2aWNlTGludXguY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4OjpHYW1lcGFkRGV2aWNlTGludXgpOgorICAgICAg
ICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4Ojp1cGRhdGVHYW1lcGFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdhbWVwYWREZXZpY2VMaW51eDo6dXBkYXRlRm9yRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4Ojpub3JtYWxpemVBeGlzVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4Ojpub3JtYWxpemVCdXR0b25WYWx1ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4Lmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoR2FtZXBhZERldmljZUxpbnV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VMaW51eDo6aXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRE
ZXZpY2VMaW51eDo6Y29ubmVjdGVkKToKKwogMjAxMi0wNi0wOSAgVnNldm9sb2QgVmxhc292ICA8
dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBFcnJvcnMgd2hl
biBwZW5kaW5nIGNvbnNvbGUgbWVzc2FnZXMgYXJlIGF0dGFjaGVkIHRvIEphdmFTY3JpcHRTb3Vy
Y2VGcmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBjYjU4NDMyNWIyMWM3MDdhYTQyYTBlMmQyZTI2
MjEwZWRlZDI3MDcxLi5lYjE5N2NhMGFjMmIyOWM4ZmZhZTlmNGI1OTA1YjBhNzBjNmY1MzY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDYtMTMgIFphbiBEb2JlcnNl
ayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKworICAgICAgICBbR3RrXSBBZGQgc3VwcG9ydCBm
b3IgdGhlIEdhbWVwYWQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NzUwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisKIDIwMTItMDYtMTEgIEthdXN0dWJoIEF0cmF3
YWxrYXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+CiAKICAgICAgICAgW0RSVF0gTFRDOjogY291
bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoKSBjb3VsZCBiZSBtb3ZlZCB0byBJbnRlcm5hbHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggNmJmMzZlM2I1ZjJlNWQ3ZjM2ZmQwNGY1M2Y3OTJiNjJmN2Q1OTkyNi4uNjYy
MDAyMmMzMDRmZDdjNjNlMjA3Mzg5ZjVmZWYzODBiZDY4M2FiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDEyLTA2LTEzICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5j
b20+CisKKyAgICAgICAgW0d0a10gQWRkIHN1cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorCiAyMDEyLTA2LTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5A
bm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4ZWQgdmlzaWJsZSBjb250ZW50IHJlY3QgbG9z
dCBkdXJpbmcgcGFnZS1sb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDExNmYzNGJmOWI0YTBm
NWQ2ZjQ0NzJmMjYxYzZmZDk1MWY1Y2RkMzcuLjQ4ZjFiZjZmNWU2NzI2MzliYTY5NjM5ODViMDEz
MzE3YzQxODIyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMiw2ICsxMiw3IEBAIHdlYmNv
cmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2lu
Y2x1ZGUvR0xTTEFORyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUgXAogCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbSBcCisJLUkkKHNyY2RpcikvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYiBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbSBcCkBAIC02Nyw2ICs2OCw3IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZyBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYiBcCisJLUkkKHNyY2Rp
cikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2sgXApAQCAtODUwLDYgKzg1Miw3IEBAIERlcml2ZWRTb3VyY2Vz
L0FOR0xFL2dsc2xhbmdfdGFiLmg6IERlcml2ZWRTb3VyY2VzL0FOR0xFL2dsc2xhbmdfdGFiLmNw
cAogCiBJRExfUEFUSCA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAor
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nYW1lcGFkIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
Z2VvbG9jYXRpb24gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbSBcCkBAIC05NDUsNiArOTQ4LDcgQEAgbGliV2Vi
Q29yZV9sYV9DUFBGTEFHUyA9IFwKIAkkKENMVVRURVJfQ0ZMQUdTKSBcCiAJJChDT1ZFUkFHRV9D
RkxBR1MpIFwKIAkkKEVOQ0hBTlRfQ0ZMQUdTKSBcCisJJChHQU1FUEFEX0NGTEFHUykgXAogCSQo
R0VPQ0xVRV9DRkxBR1MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdT
KSBcCkBAIC0xMDExLDYgKzEwMTUsNyBAQCBsaWJXZWJDb3JlR3RrX2xhX0NQUEZMQUdTID0gXAog
CiBFWFRSQV9ESVNUICs9IFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vKi5pZGwpIFwKKwkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uLyouaWRsKSBcCiAJJChzaGVsbCBscyAk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvKi5pZGwpIFwKIAkkKHNo
ZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtLyouaWRs
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAwNWIzYTY2YmQwNTBmYmQxMTQz
NWYyZGY3YjQ5N2EzMmI0MjFjMGNhLi40NWJkNTQ4MDYwYjczYjA3MmM1NjhlYWM2ZGU4OTUyZjFl
MTdmMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5Miw2ICsxOTIsMTAg
QEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
RmxvYXQzMkFycmF5LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGbG9hdDY0QXJyYXku
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmxvYXQ2NEFycmF5LmggXAorCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHYW1lcGFkLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dhbWVwYWQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dhbWVwYWRMaXN0LmNw
cCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dhbWVwYWRMaXN0LmggXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNHZW9sb2NhdGlvbi5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHZW9sb2NhdGlvbi5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2VvcG9zaXRp
b24uY3BwIFwKQEAgLTY3NSw2ICs2NzksOSBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvWFBhdGhHcmFtbWFyLmgKIAogZG9tX2JpbmRpbmdfaWRs
cyArPSBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5pZGwgXAorCSQoV2Vi
Q29yZSkvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1
bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9wb3NpdGlvbi5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbi9O
YXZpZ2F0b3JHZW9sb2NhdGlvbi5pZGwgXApAQCAtMTA0OSw2ICsxMDU2LDEyIEBAIHdlYmNvcmVf
bW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
V2ViS2l0RmxhZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtl
ckNvbnRleHRGaWxlU3lzdGVtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2FtZXBhZC9HYW1lcGFkLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dh
bWVwYWQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmNw
cCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmggXAorCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuaCBcCiAJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIFwKQEAgLTMx
NDMsNiArMzE1Niw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN5c3RlbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GbG9hdENvbnZl
cnNpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRnJhY3Rpb25hbExheW91dFVuaXQu
aCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2FtZXBhZHMuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vSGFzaFRvb2xzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hpc3Rv
Z3JhbVN1cHBvcnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IaXN0b2dyYW1TdXBw
b3J0LmggXApAQCAtMzM4OSw2ICszNDAzLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0Vycm9yc0d0ay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2Ft
ZXBhZHNHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS1VSTEd0ay5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2dnaW5nR3RrLmNwcCBcCkBAIC0zNDQ5LDYgKzM0NjQs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
SGFuZGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9EZXByZWNh
dGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCmluZGV4IGM3MDI1Mjg2ZDBm
YWU3NGUyNWFlOGUyZDMxMDcyMTU3OTVhMzc4ZjUuLmZhMDQ1NDIwM2NiNmNhYjNiYzExNjg2OGRh
OGRjNjNiOWI2N2VjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmpl
Y3QvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9H
TlVtYWtlZmlsZS5hbQpAQCAtNjYsNiArNjYsMTAgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfc291
cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUZpbGVMaXN0LmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUZpbGVMaXN0UHJpdmF0ZS5oIFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NRmlsZVByaXZhdGUuaCBcCisJRGVyaXZlZFNv
dXJjZXMvd2Via2l0L1dlYktpdERPTUdhbWVwYWQuY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJr
aXQvV2ViS2l0RE9NR2FtZXBhZExpc3QuY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQvV2Vi
S2l0RE9NR2FtZXBhZExpc3RQcml2YXRlLmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJL
aXRET01HYW1lcGFkUHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9N
R2VvbG9jYXRpb24uY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NR2VvbG9j
YXRpb25Qcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01IaXN0b3J5
LmNwcCBcCkBAIC0yOTUsNiArMjk5LDggQEAgd2Via2l0Z3RrX2J1aWx0X2hfYXBpICs9IFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NQmxvYi5oIFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXQvV2ViS2l0RE9NRmlsZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9N
RmlsZUxpc3QuaCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUdhbWVwYWQuaCBc
CisJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUdhbWVwYWRMaXN0LmggXAogCURlcml2
ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01HZW9sb2NhdGlvbi5oIFwKIAlEZXJpdmVkU291cmNl
cy93ZWJraXQvV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
d2Via2l0L1dlYktpdERPTUhUTUxBcHBsZXRFbGVtZW50LmggXApAQCAtNDI4LDcgKzQzNCw2IEBA
IHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtp
dC9XZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb25Qcml2YXRlLmgKIGVuZGlmCiAKLQog
aWYgRU5BQkxFX1dFQl9USU1JTkcKIHdlYmtpdGd0a19idWlsdF9oX2FwaSArPSBcCiAJJCh0b3Bf
YnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01QZXJmb3JtYW5jZS5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggMWJlNjMxMGE4
Yzg4YmJlMmZjZGRkMDRjZTBkY2UzNWI3YTgxMmY1My4uYjcyNDVlY2RiOThkNWRhZjFiMGEzODkz
NDg2MDMwZWY3MTNmZDEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmgKQEAgLTMwMyw2ICszMDMsMTggQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsK
ICAgICAgICAgcmV0dXJuIEpTQzo6Y29uc3RydWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBh
cnJheSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8PgorICAgIGlubGluZSBKU0M6OkpTVmFsdWUg
anNBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgVmVjdG9yPGZsb2F0PiYgaXRlcmF0b3IpCisgICAgeworICAgICAgICBKU0M6
Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFycmF5OworICAgICAgICBWZWN0b3I8ZmxvYXQ+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBpdGVyYXRvci5lbmQoKTsKKworICAgICAgICBmb3IgKFZlY3Rvcjxm
bG9hdD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaXRlcmF0b3IuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgICAgICAgICAgYXJyYXkuYXBwZW5kKEpTQzo6anNOdW1iZXIoKml0KSk7CisKKyAg
ICAgICAgcmV0dXJuIEpTQzo6Y29uc3RydWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBhcnJh
eSk7CisgICAgfQorCiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CiAgICAgVmVjdG9yPFQ+IHRvTmF0
aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMDhmYmRiNjE5YTM5NzE1Y2Q5MWYxNDJlNTI0MDAzNjY1MGE2ODY3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcApAQCAtMCww
ICsxLDIyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBaYW4gRG9iZXJzZWsgPHphbmRv
YmVyc2VrQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICog
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUK
KyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNICisgKiBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdhbWVwYWRzLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIkdhbWVw
YWREZXZpY2VMaW51eC5oIgorI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCisjaW5jbHVkZSA8Z2lv
L2d1bml4aW5wdXRzdHJlYW0uaD4KKyNpbmNsdWRlIDxndWRldi9ndWRldi5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR2FtZXBhZERldmljZUd0ayA6IHB1
YmxpYyBHYW1lcGFkRGV2aWNlTGludXggeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRy
PEdhbWVwYWREZXZpY2VHdGs+IGNyZWF0ZShTdHJpbmcgZGV2aWNlRmlsZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgR2FtZXBhZERldmljZUd0ayhkZXZpY2VGaWxlKSk7Cisg
ICAgfQorICAgIH5HYW1lcGFkRGV2aWNlR3RrKCk7CisKK3ByaXZhdGU6CisgICAgR2FtZXBhZERl
dmljZUd0ayhTdHJpbmcgZGV2aWNlRmlsZSk7CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gcmVhZENh
bGxiYWNrKEdPYmplY3QqIHBvbGxhYmxlU3RyZWFtLCBncG9pbnRlciBkYXRhKTsKKyAgICBHUmVm
UHRyPEdJbnB1dFN0cmVhbT4gbV9pbnB1dFN0cmVhbTsKKyAgICBHUmVmUHRyPEdTb3VyY2U+IG1f
c291cmNlOworfTsKKworR2FtZXBhZERldmljZUd0azo6R2FtZXBhZERldmljZUd0ayhTdHJpbmcg
ZGV2aWNlRmlsZSkKKyAgICA6IEdhbWVwYWREZXZpY2VMaW51eChkZXZpY2VGaWxlKQoreworICAg
IGlmIChtX2ZpbGVEZXNjcmlwdG9yID09IC0xKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lu
cHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfdW5peF9pbnB1dF9zdHJlYW1fbmV3KG1fZmlsZURlc2Ny
aXB0b3IsIEZBTFNFKSk7CisgICAgbV9zb3VyY2UgPSBhZG9wdEdSZWYoZ19wb2xsYWJsZV9pbnB1
dF9zdHJlYW1fY3JlYXRlX3NvdXJjZShHX1BPTExBQkxFX0lOUFVUX1NUUkVBTShtX2lucHV0U3Ry
ZWFtLmdldCgpKSwgMCkpOworICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhtX3NvdXJjZS5nZXQo
KSwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4ocmVhZENhbGxiYWNrKSwgdGhpcywgMCk7
CisgICAgZ19zb3VyY2VfYXR0YWNoKG1fc291cmNlLmdldCgpLCAwKTsKK30KKworR2FtZXBhZERl
dmljZUd0azo6fkdhbWVwYWREZXZpY2VHdGsoKQoreworICAgIGlmIChtX3NvdXJjZSkKKyAgICAg
ICAgZ19zb3VyY2VfZGVzdHJveShtX3NvdXJjZS5nZXQoKSk7Cit9CisKK2dib29sZWFuIEdhbWVw
YWREZXZpY2VHdGs6OnJlYWRDYWxsYmFjayhHT2JqZWN0KiBwb2xsYWJsZVN0cmVhbSwgZ3BvaW50
ZXIgZGF0YSkKK3sKKyAgICBHYW1lcGFkRGV2aWNlR3RrKiBnYW1lcGFkRGV2aWNlID0gcmVpbnRl
cnByZXRfY2FzdDxHYW1lcGFkRGV2aWNlR3RrKj4oZGF0YSk7CisgICAgR093blB0cjxHRXJyb3I+
IGVycm9yOworICAgIHN0cnVjdCBqc19ldmVudCBldmVudDsKKworICAgIGdzc2l6ZSBsZW4gPSBn
X3BvbGxhYmxlX2lucHV0X3N0cmVhbV9yZWFkX25vbmJsb2NraW5nKEdfUE9MTEFCTEVfSU5QVVRf
U1RSRUFNKHBvbGxhYmxlU3RyZWFtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmZXZlbnQsIHNpemVvZihldmVudCksIDAsICZlcnJv
ci5vdXRQdHIoKSk7CisKKyAgICBpZiAoIWVycm9yICYmIGxlbiA9PSBzaXplb2YoZXZlbnQpKQor
ICAgICAgICBnYW1lcGFkRGV2aWNlLT51cGRhdGVGb3JFdmVudChldmVudCk7CisKKyAgICAvLyBG
SVhNRTogUHJvcGVybHkgaGFuZGxlIEdfSU9fRVJST1JfV09VTERfQkxPQ0sKKyAgICAvLyBGSVhN
RTogUHJvcGVybHkgbG9nIHRoZSBlcnJvci4KKworICAgIHJldHVybiBUUlVFOworfQorCitjbGFz
cyBHYW1lcGFkc0d0ayB7CitwdWJsaWM6CisgICAgR2FtZXBhZHNHdGsodW5zaWduZWQgbGVuZ3Ro
KTsKKworICAgIHZvaWQgcmVnaXN0ZXJEZXZpY2UoU3RyaW5nIGRldmljZUZpbGUpOworICAgIHZv
aWQgdW5yZWdpc3RlckRldmljZShTdHJpbmcgZGV2aWNlRmlsZSk7CisKKyAgICB2b2lkIHVwZGF0
ZUdhbWVwYWRMaXN0KEdhbWVwYWRMaXN0Kik7CisKK3ByaXZhdGU6CisgICAgfkdhbWVwYWRzR3Rr
KCk7CisgICAgc3RhdGljIHZvaWQgb25VRXZlbnRDYWxsYmFjayhHVWRldkNsaWVudCosIGdjaGFy
KiBhY3Rpb24sIEdVZGV2RGV2aWNlKiwgZ3BvaW50ZXIgZGF0YSk7CisgICAgc3RhdGljIGdib29s
ZWFuIGlzR2FtZXBhZERldmljZShHVWRldkRldmljZSopOworCisgICAgVmVjdG9yPE93blB0cjxH
YW1lcGFkRGV2aWNlR3RrPiA+IG1fc2xvdHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIEdhbWVwYWRE
ZXZpY2VHdGsqPiBtX2RldmljZU1hcDsKKworICAgIEdSZWZQdHI8R1VkZXZDbGllbnQ+IG1fZ3Vk
ZXZDbGllbnQ7Cit9OworCitHYW1lcGFkc0d0azo6R2FtZXBhZHNHdGsodW5zaWduZWQgbGVuZ3Ro
KQorICAgIDogbV9zbG90cyhsZW5ndGgpCit7CisgICAgc3RhdGljIGNvbnN0IGdjaGFyKiBzdWJz
eXN0ZW1zW10gPSB7ICJpbnB1dCIsIDAgfTsKKyAgICBtX2d1ZGV2Q2xpZW50ID0gYWRvcHRHUmVm
KGdfdWRldl9jbGllbnRfbmV3KHN1YnN5c3RlbXMpKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1f
Z3VkZXZDbGllbnQuZ2V0KCksICJ1ZXZlbnQiLCBHX0NBTExCQUNLKG9uVUV2ZW50Q2FsbGJhY2sp
LCB0aGlzKTsKKworICAgIEdPd25QdHI8R0xpc3Q+IGRldmljZXNMaXN0KGdfdWRldl9jbGllbnRf
cXVlcnlfYnlfc3Vic3lzdGVtKG1fZ3VkZXZDbGllbnQuZ2V0KCksIHN1YnN5c3RlbXNbMF0pKTsK
KyAgICBmb3IgKEdMaXN0KiBsaXN0SXRlbSA9IGRldmljZXNMaXN0LmdldCgpOyBsaXN0SXRlbTsg
bGlzdEl0ZW0gPSBnX2xpc3RfbmV4dChsaXN0SXRlbSkpIHsKKyAgICAgICAgR1VkZXZEZXZpY2Uq
IGRldmljZSA9IEdfVURFVl9ERVZJQ0UobGlzdEl0ZW0tPmRhdGEpOworICAgICAgICBTdHJpbmcg
ZGV2aWNlRmlsZSA9IFN0cmluZzo6ZnJvbVVURjgoZ191ZGV2X2RldmljZV9nZXRfZGV2aWNlX2Zp
bGUoZGV2aWNlKSk7CisgICAgICAgIGlmIChpc0dhbWVwYWREZXZpY2UoZGV2aWNlKSkKKyAgICAg
ICAgICAgIHJlZ2lzdGVyRGV2aWNlKGRldmljZUZpbGUpOworICAgICAgICBnX29iamVjdF91bnJl
ZihkZXZpY2UpOworICAgIH0KK30KKworR2FtZXBhZHNHdGs6On5HYW1lcGFkc0d0aygpCit7Cisg
ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fZ3VkZXZDbGllbnQuZ2V0
KCksIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIDAsIDAsIHRoaXMpOworfQorCit2b2lkIEdh
bWVwYWRzR3RrOjpyZWdpc3RlckRldmljZShTdHJpbmcgZGV2aWNlRmlsZSkKK3sKKyAgICBBU1NF
UlQoIW1fZGV2aWNlTWFwLmNvbnRhaW5zKGRldmljZUZpbGUpKTsKKworICAgIHVuc2lnbmVkIGlu
ZGV4OworICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fc2xvdHMuc2l6ZSgpOyBpbmRleCsr
KSB7CisgICAgICAgIGlmICghbV9zbG90c1tpbmRleF0pCisgICAgICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBpZiAoaW5kZXggPj0gbV9zbG90cy5zaXplKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fc2xvdHNbaW5kZXhdID0gR2FtZXBhZERldmljZUd0azo6Y3JlYXRlKGRldmljZUZp
bGUpOworICAgIG1fZGV2aWNlTWFwLmFkZChkZXZpY2VGaWxlLCBtX3Nsb3RzW2luZGV4XS5nZXQo
KSk7Cit9CisKK3ZvaWQgR2FtZXBhZHNHdGs6OnVucmVnaXN0ZXJEZXZpY2UoU3RyaW5nIGRldmlj
ZUZpbGUpCit7CisgICAgQVNTRVJUKG1fZGV2aWNlTWFwLmNvbnRhaW5zKGRldmljZUZpbGUpKTsK
KworICAgIEdhbWVwYWREZXZpY2VHdGsqIGdhbWVwYWREZXZpY2UgPSBtX2RldmljZU1hcC50YWtl
KGRldmljZUZpbGUpOworICAgIHVuc2lnbmVkIGluZGV4ID0gbV9zbG90cy5maW5kKGdhbWVwYWRE
ZXZpY2UpOworICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7CisKKyAgICBtX3Nsb3RzW2lu
ZGV4XS5jbGVhcigpOworfQorCit2b2lkIEdhbWVwYWRzR3RrOjp1cGRhdGVHYW1lcGFkTGlzdChH
YW1lcGFkTGlzdCogaW50bykKK3sKKyAgICBBU1NFUlQobV9zbG90cy5zaXplKCkgPT0gaW50by0+
bGVuZ3RoKCkpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2xvdHMuc2l6ZSgp
OyBpKyspIHsKKyAgICAgICAgaWYgKG1fc2xvdHNbaV0uZ2V0KCkgJiYgbV9zbG90c1tpXS0+Y29u
bmVjdGVkKCkpIHsKKyAgICAgICAgICAgIEdhbWVwYWREZXZpY2VHdGsqIGdhbWVwYWREZXZpY2Ug
PSBtX3Nsb3RzW2ldLmdldCgpOworICAgICAgICAgICAgUmVmUHRyPEdhbWVwYWQ+IGdhbWVwYWQg
PSBpbnRvLT5pdGVtKGkpOworICAgICAgICAgICAgaWYgKCFnYW1lcGFkKQorICAgICAgICAgICAg
ICAgIGdhbWVwYWQgPSBHYW1lcGFkOjpjcmVhdGUoKTsKKworICAgICAgICAgICAgZ2FtZXBhZC0+
aW5kZXgoaSk7CisgICAgICAgICAgICBnYW1lcGFkLT5pZChnYW1lcGFkRGV2aWNlLT5pZCgpKTsK
KyAgICAgICAgICAgIGdhbWVwYWQtPnRpbWVzdGFtcChnYW1lcGFkRGV2aWNlLT50aW1lc3RhbXAo
KSk7CisgICAgICAgICAgICBnYW1lcGFkLT5heGVzKGdhbWVwYWREZXZpY2UtPmF4ZXNDb3VudCgp
LCBnYW1lcGFkRGV2aWNlLT5heGVzRGF0YSgpKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPmJ1dHRv
bnMoZ2FtZXBhZERldmljZS0+YnV0dG9uc0NvdW50KCksIGdhbWVwYWREZXZpY2UtPmJ1dHRvbnNE
YXRhKCkpOworCisgICAgICAgICAgICBpbnRvLT5zZXQoaSwgZ2FtZXBhZCk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgaW50by0+c2V0KGksIDApOworICAgIH0KK30KKwordm9pZCBHYW1l
cGFkc0d0azo6b25VRXZlbnRDYWxsYmFjayhHVWRldkNsaWVudCogdWRldkNsaWVudCwgZ2NoYXIq
IGFjdGlvbiwgR1VkZXZEZXZpY2UqIGRldmljZSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBpZiAo
IWlzR2FtZXBhZERldmljZShkZXZpY2UpKQorICAgICAgICByZXR1cm47CisKKyAgICBHYW1lcGFk
c0d0ayogZ2FtZXBhZHNHdGsgPSByZWludGVycHJldF9jYXN0PEdhbWVwYWRzR3RrKj4oZGF0YSk7
CisgICAgU3RyaW5nIGRldmljZUZpbGUgPSBTdHJpbmc6OmZyb21VVEY4KGdfdWRldl9kZXZpY2Vf
Z2V0X2RldmljZV9maWxlKGRldmljZSkpOworCisgICAgaWYgKCFnX3N0cmNtcDAoYWN0aW9uLCAi
YWRkIikpCisgICAgICAgIGdhbWVwYWRzR3RrLT5yZWdpc3RlckRldmljZShkZXZpY2VGaWxlKTsK
KyAgICBlbHNlIGlmICghZ19zdHJjbXAwKGFjdGlvbiwgInJlbW92ZSIpKQorICAgICAgICBnYW1l
cGFkc0d0ay0+dW5yZWdpc3RlckRldmljZShkZXZpY2VGaWxlKTsKK30KKworZ2Jvb2xlYW4gR2Ft
ZXBhZHNHdGs6OmlzR2FtZXBhZERldmljZShHVWRldkRldmljZSogZGV2aWNlKQoreworICAgIGNv
bnN0IGdjaGFyKiBkZXZpY2VGaWxlID0gZ191ZGV2X2RldmljZV9nZXRfZGV2aWNlX2ZpbGUoZGV2
aWNlKTsKKyAgICBjb25zdCBnY2hhciogc3lzZnNQYXRoID0gZ191ZGV2X2RldmljZV9nZXRfc3lz
ZnNfcGF0aChkZXZpY2UpOworICAgIGlmICghZGV2aWNlRmlsZSB8fCAhc3lzZnNQYXRoKQorICAg
ICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoIWdfdWRldl9kZXZpY2VfaGFzX3Byb3BlcnR5
KGRldmljZSwgIklEX0lOUFVUIikgfHwgIWdfdWRldl9kZXZpY2VfaGFzX3Byb3BlcnR5KGRldmlj
ZSwgIklEX0lOUFVUX0pPWVNUSUNLIikpCisgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIHJl
dHVybiBnX3N0cl9oYXNfcHJlZml4KGRldmljZUZpbGUsICIvZGV2L2lucHV0L2pzIik7Cit9CisK
K3ZvaWQgc2FtcGxlR2FtZXBhZHMoR2FtZXBhZExpc3QqIGludG8pCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChHYW1lcGFkc0d0aywgZ2FtZXBhZHNHdGssIChpbnRvLT5sZW5ndGgoKSkpOwor
ICAgIGdhbWVwYWRzR3RrLnVwZGF0ZUdhbWVwYWRMaXN0KGludG8pOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI5MWM5NmY0NGRjN2YwNzRkZjRmY2UzMWU2Mzc1ZTM1MWEyZTU0NTEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXgu
Y3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgWmFuIERvYmVy
c2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAq
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSAorICogREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJHYW1lcGFkRGV2aWNlTGludXguaCIKKworI2lmIEVOQUJMRShHQU1FUEFE
KQorCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2FtZXBhZERl
dmljZUxpbnV4OjpHYW1lcGFkRGV2aWNlTGludXgoU3RyaW5nIGRldmljZUZpbGUpCisgICAgOiBt
X2ZpbGVEZXNjcmlwdG9yKC0xKQorICAgICwgbV9jb25uZWN0ZWQoZmFsc2UpCisgICAgLCBtX2xh
c3RUaW1lc3RhbXAoMCkKK3sKKyAgICAvLyBGSVhNRTogTG9nIGVycm9ycyB3aGVuIHJldHVybmlu
ZyBlYXJseS4KKyAgICBtX2ZpbGVEZXNjcmlwdG9yID0gb3BlbihkZXZpY2VGaWxlLnV0ZjgoKS5k
YXRhKCksIE9fUkRPTkxZIHwgT19OT05CTE9DSyk7CisgICAgaWYgKG1fZmlsZURlc2NyaXB0b3Ig
PT0gLTEpCisgICAgICAgIHJldHVybjsKKworICAgIGNoYXIgZGV2aWNlTmFtZVsxMDI0XTsKKyAg
ICBpZiAoaW9jdGwobV9maWxlRGVzY3JpcHRvciwgSlNJT0NHTkFNRShzaXplb2YoZGV2aWNlTmFt
ZSkpLCBkZXZpY2VOYW1lKSA8IDApCisgICAgICAgIHJldHVybjsKKyAgICBtX2RldmljZU5hbWUg
PSBTdHJpbmcoZGV2aWNlTmFtZSkuc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisKKyAgICB1aW50OF90
IG51bWJlck9mQXhlczsKKyAgICB1aW50OF90IG51bWJlck9mQnV0dG9uczsKKyAgICBpZiAoaW9j
dGwobV9maWxlRGVzY3JpcHRvciwgSlNJT0NHQVhFUywgJm51bWJlck9mQXhlcykgPCAwIHx8IGlv
Y3RsKG1fZmlsZURlc2NyaXB0b3IsIEpTSU9DR0JVVFRPTlMsICZudW1iZXJPZkJ1dHRvbnMpIDwg
MCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fYXhlcy5maWxsKDAuMCwgbnVtYmVyT2ZBeGVzKTsK
KyAgICBtX2J1dHRvbnMuZmlsbCgwLjAsIG51bWJlck9mQnV0dG9ucyk7Cit9CisKK0dhbWVwYWRE
ZXZpY2VMaW51eDo6fkdhbWVwYWREZXZpY2VMaW51eCgpCit7CisgICAgaWYgKG1fZmlsZURlc2Ny
aXB0b3IgIT0gLTEpCisgICAgICAgIGNsb3NlKG1fZmlsZURlc2NyaXB0b3IpOworfQorCit2b2lk
IEdhbWVwYWREZXZpY2VMaW51eDo6dXBkYXRlRm9yRXZlbnQoc3RydWN0IGpzX2V2ZW50IGV2ZW50
KQoreworICAgIGlmICghKGV2ZW50LnR5cGUgJiBKU19FVkVOVF9BWElTIHx8IGV2ZW50LnR5cGUg
JiBKU19FVkVOVF9CVVRUT04pKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBNYXJrIHRoZSBk
ZXZpY2UgYXMgY29ubmVjdGVkIG9ubHkgaWYgaXQgaXMgbm90IHlldCBjb25uZWN0ZWQsIHRoZSBl
dmVudCBpcyBub3QgYW4gaW5pdGlhbGl6YXRpb24KKyAgICAvLyBhbmQgdGhlIHZhbHVlIGlzIG5v
dCAwIChpbmRpY2F0aW5nIGEgZ2VudWluZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBkZXZpY2UpLgor
ICAgIGlmICghbV9jb25uZWN0ZWQgJiYgIShldmVudC50eXBlICYgSlNfRVZFTlRfSU5JVCkgJiYg
ZXZlbnQudmFsdWUpCisgICAgICAgIG1fY29ubmVjdGVkID0gdHJ1ZTsKKworICAgIGlmIChldmVu
dC50eXBlICYgSlNfRVZFTlRfQVhJUykKKyAgICAgICAgbV9heGVzW2V2ZW50Lm51bWJlcl0gPSBu
b3JtYWxpemVBeGlzVmFsdWUoZXZlbnQudmFsdWUpOworICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUg
JiBKU19FVkVOVF9CVVRUT04pCisgICAgICAgIG1fYnV0dG9uc1tldmVudC5udW1iZXJdID0gbm9y
bWFsaXplQnV0dG9uVmFsdWUoZXZlbnQudmFsdWUpOworCisgICAgbV9sYXN0VGltZXN0YW1wID0g
ZXZlbnQudGltZTsKK30KKworZmxvYXQgR2FtZXBhZERldmljZUxpbnV4Ojpub3JtYWxpemVBeGlz
VmFsdWUoc2hvcnQgdmFsdWUpCit7CisgICAgLy8gTm9ybWFsaXplIGZyb20gcmFuZ2UgWy0zMjc2
NywgMzI3NjddIGludG8gcmFuZ2UgWy0xLjAsIDEuMF0KKyAgICByZXR1cm4gdmFsdWUgLyAzMjc2
Ny4wZjsKK30KKworZmxvYXQgR2FtZXBhZERldmljZUxpbnV4Ojpub3JtYWxpemVCdXR0b25WYWx1
ZShzaG9ydCB2YWx1ZSkKK3sKKyAgICAvLyBOb3JtYWxpemUgZnJvbSByYW5nZSBbMCwgMV0gaW50
byByYW5nZSBbMC4wLCAxLjBdCisgICAgcmV0dXJuIHZhbHVlIC8gMS4wZjsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJiZGUxNmI1MTYzZTNiMmExMDA2YTJhODMxODhiMThhYzI1OWI0MDEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXgu
aApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFphbiBEb2JlcnNl
ayA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdhbWVwYWREZXZp
Y2VMaW51eF9oCisjZGVmaW5lIEdhbWVwYWREZXZpY2VMaW51eF9oCisKKyNpZiBFTkFCTEUoR0FN
RVBBRCkKKworI2luY2x1ZGUgPGxpbnV4L2pveXN0aWNrLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR2FtZXBhZERldmljZUxp
bnV4IHsKK3B1YmxpYzoKKyAgICBib29sIGNvbm5lY3RlZCgpIHsgcmV0dXJuIG1fY29ubmVjdGVk
OyB9OworCisgICAgU3RyaW5nIGlkKCkgeyByZXR1cm4gbV9kZXZpY2VOYW1lOyB9CisgICAgdW5z
aWduZWQgbG9uZyBsb25nIHRpbWVzdGFtcCgpIHsgcmV0dXJuIG1fbGFzdFRpbWVzdGFtcDsgfQor
CisgICAgdW5zaWduZWQgYXhlc0NvdW50KCkgeyByZXR1cm4gbV9heGVzLnNpemUoKTsgfQorICAg
IGZsb2F0KiBheGVzRGF0YSgpIHsgcmV0dXJuIG1fYXhlcy5kYXRhKCk7IH0KKworICAgIHVuc2ln
bmVkIGJ1dHRvbnNDb3VudCgpIHsgcmV0dXJuIG1fYnV0dG9ucy5zaXplKCk7IH0KKyAgICBmbG9h
dCogYnV0dG9uc0RhdGEoKSB7IHJldHVybiBtX2J1dHRvbnMuZGF0YSgpOyB9CisKK3Byb3RlY3Rl
ZDoKKyAgICBHYW1lcGFkRGV2aWNlTGludXgoU3RyaW5nIGRldmljZUZpbGUpOworICAgIH5HYW1l
cGFkRGV2aWNlTGludXgoKTsKKworICAgIHZvaWQgdXBkYXRlRm9yRXZlbnQoc3RydWN0IGpzX2V2
ZW50KTsKKyAgICBpbnQgbV9maWxlRGVzY3JpcHRvcjsKKworcHJpdmF0ZToKKyAgICBmbG9hdCBu
b3JtYWxpemVBeGlzVmFsdWUoc2hvcnQgdmFsdWUpOworICAgIGZsb2F0IG5vcm1hbGl6ZUJ1dHRv
blZhbHVlKHNob3J0IHZhbHVlKTsKKworICAgIGJvb2wgbV9jb25uZWN0ZWQ7CisgICAgU3RyaW5n
IG1fZGV2aWNlTmFtZTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9sYXN0VGltZXN0YW1wOwor
CisgICAgVmVjdG9yPGZsb2F0PiBtX2F4ZXM7CisgICAgVmVjdG9yPGZsb2F0PiBtX2J1dHRvbnM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBB
RCkKKworI2VuZGlmIC8vIEdhbWVwYWREZXZpY2VMaW51eF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDJkNWFkMGE3YTU3MzI1ZmVhYzUzY2I3NDE0NGQxODNlYzc2NzA3NzEuLjlhNDM1
YzU4ZTZiMmIwZTVjMmUwZDYyMWNmOThmY2NhYTUxNDc5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2Vm
aWxlLmFtCkBAIC04Nyw2ICs4Nyw3IEBAIGxpYndlYmtpdGd0a19AV0VCS0lUR1RLX0FQSV9NQUpP
Ul9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUJBCiAJJChFTkNI
QU5UX0xJQlMpIFwKIAkkKEZSRUVUWVBFX0xJQlMpIFwKIAkkKEdBSUxfTElCUykgXAorCSQoR0FN
RVBBRF9MSUJTKSBcCiAJJChHRU9DTFVFX0xJQlMpIFwKIAkkKEdMSUJfTElCUykgXAogCSQoR1NU
UkVBTUVSX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFt
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggMDE2ZDY4MTk3ZjZiMTlmODdk
ZmMyYzZlNWE0YzQxYWEwOWI5MGRmMS4uMTVhNjlmOTczMzlkYzFjMDQ5NTE5Yzg5ODdhZDZiZjE3
YjhkM2FmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIv
U291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTE2MCw2ICsxNjAsNyBAQCBsaWJ3ZWJr
aXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9S
X1ZFUlNJT05AX2xhX0xJQgogCSQoQ09WRVJBR0VfTERGTEFHUykgXAogCSQoRU5DSEFOVF9MSUJT
KSBcCiAJJChHQUlMX0xJQlMpIFwKKwkkKEdBTUVQQURfTElCUykgXAogCSQoR0VPQ0xVRV9MSUJT
KSBcCiAJJChHTElCX0xJQlMpIFwKIAkkKEdTVFJFQU1FUl9MSUJTKSBcCmRpZmYgLS1naXQgYS9D
aGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMjU3NWJkMWM0N2E2YzM3NjIyYTU5NzI0MWRkNTRh
NTQwZjJlOWQ5YS4uMzNkZWE1NzRhMjNmNGEzYWU4NjQwOGVkYjAzYzY4ZDZhZDMxNGRmMCAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEy
LTA2LTEzICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAg
W0d0a10gQWRkIHN1cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAxMi0wNi0x
MyAgUm9iaW4gQ2FvICA8cm9iaW4uY2FvQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBb
QmxhY2tCZXJyeV0gRW5hYmxlIE1FRElBX1NUUkVBTSBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9j
b25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggMjM2MTIzNWMxYzk0MTgwOTE5ZThkNDk0
YjA3ZDZlOTNlNDU5YTZlOS4uZDBmMTllM2MwMjYwMDVjNmZlYjVkMDQyMWQxN2VlNmVlZmI0MjE0
YSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNjUzLDYg
KzY1MywxMSBAQCBBQ19BUkdfRU5BQkxFKGdhbWVwYWQsCiAgICAgICAgICAgICAgIFtdLFtlbmFi
bGVfZ2FtZXBhZD0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfZ2FtZXBhZF0pCiAKK2lm
IHRlc3QgIiRlbmFibGVfZ2FtZXBhZCIgPSAieWVzIiAmJiB0ZXN0ICIkb3NfbGludXgiID0gbm87
IHRoZW4KKyAgIEFDX01TR19XQVJOKFtHYW1lcGFkIHN1cHBvcnQgaXMgb25seSBhdmFpbGFibGUg
b24gTGludXguIERpc2FibGluZyBHYW1lcGFkIHN1cHBvcnQuXSkKKyAgIGVuYWJsZV9nYW1lcGFk
PW5vOworZmkKKwogIyBjaGVjayB3aGV0aGVyIHRvIGJ1aWxkIHdpdGggZGF0YSB0cmFuc2ZlciBp
dGVtcyBzdXBwb3J0CiBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIEhUTUw1IGRh
dGEgdHJhbnNmZXIgaXRlbXMgc3VwcG9ydF0pCiBBQ19BUkdfRU5BQkxFKGRhdGFfdHJhbnNmZXJf
aXRlbXMsCkBAIC0xMjgwLDYgKzEyODUsMTMgQEAgaWYgdGVzdCAiJGVuYWJsZV93ZWJraXQyIiA9
ICJ5ZXMiOyB0aGVuCiAgICBBQ19TVUJTVChbQVRTUEkyX0xJQlNdKQogZmkKIAoraWYgdGVzdCAi
JGVuYWJsZV9nYW1lcGFkIiA9ICJ5ZXMiOyB0aGVuCisgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR0FN
RVBBRF0sIFtnaW8tdW5peC0yLjAgZ3VkZXYtMS4wXSkKKworICAgQUNfU1VCU1QoR0FNRVBBRF9D
RkxBR1MpCisgICBBQ19TVUJTVChHQU1FUEFEX0xJQlMpCitmaQorCiAjIGNoZWNrIGZvciBjb2Rl
IGNvdmVyYWdlIHN1cHBvcnQKIGlmIHRlc3QgIiRlbmFibGVfY292ZXJhZ2UiID0gInllcyI7IHRo
ZW4KICAgIENPVkVSQUdFX0NGTEFHUz0iLU1EIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148341</attachid>
            <date>2012-06-19 08:38:11 -0700</date>
            <delta_ts>2012-06-20 06:28:20 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>bug-87503-20120619173811.patch</filename>
            <type>text/plain</type>
            <size>31200</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVmMjA4ZTUyNzNmZWRk
MjRhZGM1NmFlMGQ3OTI0Zjc1ZTM3MjE0Yy4uOTcwYWFkNjliYzgwYTkzYTlmNmJkY2IzNTRkNTgy
ODlhOGYwODJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA2LTE5ICBaYW4g
RG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0d0a10gQWRkIHN1
cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIEdhbWVwYWQgZmVhdHVyZSBvbiB0
aGUgR1RLIHBvcnQuCisKKyAgICAgICAgVGhlIHN1cHBvcnQgaXMgYXZhaWxhYmxlIG9ubHkgb24g
TGludXgsIHdpdGggZWFjaCBnYW1lcGFkIGRldmljZSBiZWluZyBwcmVzZW50ZWQKKyAgICAgICAg
dGhyb3VnaCBhIEdhbWVwYWREZXZpY2VMaW51eCBvYmplY3QuIFRoZSBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGlzIGNsYXNzIHJlbGllcyBvbgorICAgICAgICB0aGUgTGludXgga2VybmVsIGpveXN0aWNr
IEFQSS4KKworICAgICAgICBHYW1lcGFkIGRldmljZXMgYXJlIHJlY29nbml6ZWQgdGhyb3VnaCB0
aGUgR2FtZXBhZHNHdGsgY2xhc3MsIG9mIHdoaWNoIGltcGxlbWVudGF0aW9uCisgICAgICAgIGlz
IGJhc2VkIG9uIEdVZGV2LiBUaGlzIHdheSBkZXZpY2VzIGFyZSBwcm9wZXJseSByZWdpc3RlcmVk
IG9uIGNvbm5lY3Rpb24gYXMgb2JqZWN0cyBvZgorICAgICAgICB0aGUgR2FtZXBhZERldmljZUd0
ayBjbGFzcyB3aGljaCBpbmhlcml0cyBHYW1lcGFkRGV2aWNlTGludXguIEdhbWVwYWREZXZpY2VH
dGsgcmVhZHMgdGhlCisgICAgICAgIGpveXN0aWNrIGRhdGEgdGhyb3VnaCBHSU8gcG9sbGFibGUg
c3RyZWFtcyBhbmQgdXBkYXRlcyB0aGUgZGV2aWNlIHN0YXRlIGFjY29yZGluZ2x5LiBUaGUKKyAg
ICAgICAgR2FtZXBhZHNHdGsgb2JqZWN0IGlzIHRoZW4gcG9sbGVkIGZvciBnYW1lcGFkcyBkYXRh
IHRocm91Z2ggdGhlIHNhbXBsZUdhbWVwYWRzIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVz
dHMgLSB0ZXN0cyBhbHJlYWR5IGV4aXN0IGJ1dCByZXF1aXJlIGFkZGl0aW9uYWwgdGVzdGluZyBp
bmZyYXN0cnVjdHVyZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmls
ZS5hbToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDogQWRkIHRoZSBqc0Fy
cmF5IG1ldGhvZCB0aGF0IG9wZXJhdGVzIG9uIGEgVmVjdG9yIG9mIGZsb2F0cy4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6anNBcnJheSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL0dhbWVwYWRzR3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKEdhbWVwYWREZXZpY2VHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUd0
azo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VHdGs6OkdhbWVwYWRE
ZXZpY2VHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUd0azo6fkdhbWVwYWRE
ZXZpY2VHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUd0azo6cmVhZENhbGxi
YWNrKToKKyAgICAgICAgKEdhbWVwYWRzR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRz
R3RrOjpHYW1lcGFkc0d0ayk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6fkdhbWVw
YWRzR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzR3RrOjpyZWdpc3RlckRldmljZSk6
CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6dW5yZWdpc3RlckRldmljZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6dXBkYXRlR2FtZXBhZExpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R2FtZXBhZHNHdGs6Om9uVUV2ZW50Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZXBhZHNHdGs6OmlzR2FtZXBhZERldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW1w
bGVHYW1lcGFkcyk6CisgICAgICAgICogcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVw
YWREZXZpY2VMaW51eDo6R2FtZXBhZERldmljZUxpbnV4KToKKyAgICAgICAgKFdlYkNvcmU6Okdh
bWVwYWREZXZpY2VMaW51eDo6fkdhbWVwYWREZXZpY2VMaW51eCk6CisgICAgICAgIChXZWJDb3Jl
OjpHYW1lcGFkRGV2aWNlTGludXg6OnVwZGF0ZUZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VMaW51eDo6bm9ybWFsaXplQXhpc1ZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdhbWVwYWREZXZpY2VMaW51eDo6bm9ybWFsaXplQnV0dG9uVmFsdWUpOgorICAgICAgICAq
IHBsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoR2FtZXBhZERldmljZUxpbnV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VMaW51eDo6Y29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVw
YWREZXZpY2VMaW51eDo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4
Ojp0aW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4OjpheGVz
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4OjpheGVzRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTGludXg6OmJ1dHRvbnNDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTGludXg6OmJ1dHRvbnNEYXRhKToKKwogMjAx
Mi0wNi0xOSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludHJv
ZHVjZSBFTkFCTEVfQ1NQX05FWFQgY29uZmlndXJhdGlvbiBmbGFnLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmlu
ZGV4IDZiMzhiMzdiZWNiMWJmNTgwMGU3Y2ZkZTJjNjFlZTJkMTE4ZTliZGYuLjQwZTk5OWEzY2Ri
ZTBhY2UzN2M4ZDhjNWQ0NDgyZmIxYWJlZmUyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMi0wNi0xOSAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29t
PgorCisgICAgICAgIFtHdGtdIEFkZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NTAzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBHYW1lcGFk
IGZlYXR1cmUgZGVwZW5kZW5jaWVzIGxpYnJhcmllcyB0byB0aGUgTElCQURECisgICAgICAgIGxp
c3QgZm9yIHRoZSBsaWJ3ZWJraXRndGsgbGlicmFyeS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorCiAyMDEyLTA2LTE5ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIENhbGxpbmcgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBjYXVz
ZXMgYXNzZXJ0aW9uIGZhaWx1cmU6IG1fdmVyaWZpZXIuaXNTYWZlVG9Vc2UoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDU2ODhhZTg1MTNiMThlNjU4MmFiOTJlNDE5NjExNzhiMTMxNjJjNWIuLjgwNWEwMTVlNjA2
ZTE0NmY3NGQ5MTM0NDFlYzliYjk3YmM4YjM4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxMi0wNi0xOSAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisg
ICAgICAgIFtHdGtdIEFkZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NTAzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBHYW1lcGFkIGZlYXR1
cmUgZGVwZW5kZW5jaWVzIGxpYnJhcmllcyB0byB0aGUgTElCQURECisgICAgICAgIGxpc3QgZm9y
IHRoZSBsaWJ3ZWJraXRndGsyIGxpYnJhcnkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KwogMjAxMi0wNi0xOSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IEludHJvZHVjZSBFTkFCTEVfQ1NQX05FWFQgY29uZmlndXJhdGlvbiBmbGFnLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQppbmRleCAxMzE5MTgwNjdlMDM1ODZmMTMzMDAxNDEyOGM4MDBmMDY0YmMzMWRiLi4x
MTQ4YzRhMTM4ZmI0NzY1OTg2NjgyYzA5NjI3MmNmYzBhZTY4N2M1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQpAQCAtMTIsNiArMTIsNyBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0gXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZCBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0gXApAQCAtNjcsNiArNjgsNyBAQCB3
ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy93ZWJwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2xldmVsZGIgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xp
bnV4IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbSBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrIFwKQEAgLTg1
OCw2ICs4NjAsNyBAQCBEZXJpdmVkU291cmNlcy9BTkdMRS9nbHNsYW5nX3RhYi5oOiBEZXJpdmVk
U291cmNlcy9BTkdMRS9nbHNsYW5nX3RhYi5jcHAKIAogSURMX1BBVEggOj0gXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9maWxlc3lzdGVtIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2FtZXBh
ZCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvaW5kZXhlZGRiIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0g
XApAQCAtOTUzLDYgKzk1Niw3IEBAIGxpYldlYkNvcmVfbGFfQ1BQRkxBR1MgPSBcCiAJJChDTFVU
VEVSX0NGTEFHUykgXAogCSQoQ09WRVJBR0VfQ0ZMQUdTKSBcCiAJJChFTkNIQU5UX0NGTEFHUykg
XAorCSQoR0FNRVBBRF9DRkxBR1MpIFwKIAkkKEdFT0NMVUVfQ0ZMQUdTKSBcCiAJJChHTElCX0NG
TEFHUykgXAogCSQoR1NUUkVBTUVSX0NGTEFHUykgXApAQCAtMTAxOSw2ICsxMDIzLDcgQEAgbGli
V2ViQ29yZUd0a19sYV9DUFBGTEFHUyA9IFwKIAogRVhUUkFfRElTVCArPSBcCiAJJChzaGVsbCBs
cyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtLyouaWRsKSBcCisJ
JChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkLyouaWRs
KSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS8qLmlkbCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggNDRjYmU1MTJkZjM0ZTM4MTQwZmE2Y2FjM2ExNWI5NGE1MTQxMzU2MC4uZjRjY2Rj
Y2U0OThmYTZjY2NkNmI1NmFhM2I2N2YyODA2M2FhYmFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0xOTIsNiArMTkyLDEwIEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zsb2F0MzJBcnJheS5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRmxvYXQ2NEFycmF5LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0Zsb2F0NjRBcnJheS5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2FtZXBhZC5j
cHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHYW1lcGFkLmggXAorCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNHYW1lcGFkTGlzdC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHYW1lcGFkTGlzdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2VvbG9jYXRpb24u
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2VvbG9jYXRpb24uaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0dlb3Bvc2l0aW9uLmNwcCBcCkBAIC02NzcsNiArNjgxLDkgQEAg
d2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL1hQYXRo
R3JhbW1hci5oCiAKIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9n
YW1lcGFkL0dhbWVwYWQuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFk
TGlzdC5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQu
aWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaWRsIFwK
IAkkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvcG9zaXRpb24uaWRsIFwKIAkkKFdl
YkNvcmUpL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uaWRsIFwKQEAg
LTEwNTIsNiArMTA1OSwxMiBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dlYktpdEZsYWdzLmggXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmggXAorCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2FtZXBhZC9HYW1lcGFkTGlzdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQv
TmF2aWdhdG9yR2FtZXBhZC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9O
YXZpZ2F0b3JHYW1lcGFkLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25Db250cm9sbGVyLmNwcCBcCkBAIC0zMTQ3LDYgKzMxNjAsNyBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmxvYXRDb252ZXJzaW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZyYWN0aW9uYWxMYXlvdXRVbml0LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0dhbWVwYWRzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hhc2hUb29scy5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IaXN0b2dyYW1TdXBwb3J0LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5oIFwKQEAgLTMzOTMsNiArMzQwNyw3IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V09GRkZpbGVGb3JtYXQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0
ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuaCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0tVUkxHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvTGFuZ3VhZ2VHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9nZ2lu
Z0d0ay5jcHAgXApAQCAtMzQ1Myw2ICszNDY4LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgv
R2FtZXBhZERldmljZUxpbnV4LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgv
R2FtZXBhZERldmljZUxpbnV4LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVE
ZXNjcmlwdG9yLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVt
YWtlZmlsZS5hbQppbmRleCBjNzAyNTI4NmQwZmFlNzRlMjVhZThlMmQzMTA3MjE1Nzk1YTM3OGY1
Li5mYTA0NTQyMDNjYjZjYWIzYmMxMTY4NjhkYThkYzYzYjliNjdlY2NkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KQEAgLTY2LDYgKzY2LDEw
IEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdC9XZWJLaXRET01GaWxlTGlzdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJL
aXRET01GaWxlTGlzdFByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERP
TUZpbGVQcml2YXRlLmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01HYW1lcGFk
LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUdhbWVwYWRMaXN0LmNwcCBc
CisJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUdhbWVwYWRMaXN0UHJpdmF0ZS5oIFwK
KwlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NR2FtZXBhZFByaXZhdGUuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUdlb2xvY2F0aW9uLmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvd2Via2l0L1dlYktpdERPTUdlb2xvY2F0aW9uUHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291
cmNlcy93ZWJraXQvV2ViS2l0RE9NSGlzdG9yeS5jcHAgXApAQCAtMjk1LDYgKzI5OSw4IEBAIHdl
YmtpdGd0a19idWlsdF9oX2FwaSArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERP
TUJsb2IuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUZpbGUuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUZpbGVMaXN0LmggXAorCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdC9XZWJLaXRET01HYW1lcGFkLmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJL
aXRET01HYW1lcGFkTGlzdC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NR2Vv
bG9jYXRpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUhUTUxBbmNob3JF
bGVtZW50LmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01IVE1MQXBwbGV0RWxl
bWVudC5oIFwKQEAgLTQyOCw3ICs0MzQsNiBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2Vz
ICs9IFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NSFRNTFByb3BlcnRpZXNDb2xs
ZWN0aW9uUHJpdmF0ZS5oCiBlbmRpZgogCi0KIGlmIEVOQUJMRV9XRUJfVElNSU5HCiB3ZWJraXRn
dGtfYnVpbHRfaF9hcGkgKz0gXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJr
aXQvV2ViS2l0RE9NUGVyZm9ybWFuY2UuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5oCmluZGV4IGQyNzhhODAyYWM5MjEwNTQ2MmRhMWM5MTBkOTgzOWEyNmY0ZDZj
MGIuLmI1YWQzZmIwNTkwMjZkNTc1ZWQ5NjI1NGIzZmZkMWVlYmE3YjdlMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0zMDcsNiArMzA3LDE4IEBAIGVu
dW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAgIHJldHVybiBKU0M6OmNvbnN0cnVj
dEFycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJyYXkpOwogICAgIH0KIAorICAgIHRlbXBsYXRl
PD4KKyAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpzQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGl0
ZXJhdG9yKQorICAgIHsKKyAgICAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcnJheTsK
KyAgICAgICAgVmVjdG9yPGZsb2F0Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaXRlcmF0b3IuZW5k
KCk7CisKKyAgICAgICAgZm9yIChWZWN0b3I8ZmxvYXQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGl0
ZXJhdG9yLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIGFycmF5LmFwcGVu
ZChKU0M6OmpzTnVtYmVyKCppdCkpOworCisgICAgICAgIHJldHVybiBKU0M6OmNvbnN0cnVjdEFy
cmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJyYXkpOworICAgIH0KKwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUPgogICAgIFZlY3RvcjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HYW1lcGFkc0d0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2MGYyZmUyY2M4MWY2Y2NlZTQ5ZjA1M2I1
ZGY4NzE5NDBmMGUwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HYW1lcGFkc0d0ay5jcHAKQEAgLTAsMCArMSwyMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICogREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHYW1lcGFkcy5oIgorCisjaWYgRU5BQkxF
KEdBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1lcGFkRGV2aWNlTGludXguaCIKKyNpbmNsdWRlICJH
YW1lcGFkTGlzdC5oIgorI2luY2x1ZGUgPGdpby9ndW5peGlucHV0c3RyZWFtLmg+CisjaW5jbHVk
ZSA8Z3VkZXYvZ3VkZXYuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEdhbWVwYWREZXZpY2VHdGsgOiBwdWJsaWMgR2FtZXBhZERldmljZUxpbnV4IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxHYW1lcGFkRGV2aWNlR3RrPiBjcmVhdGUoU3Ry
aW5nIGRldmljZUZpbGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdhbWVw
YWREZXZpY2VHdGsoZGV2aWNlRmlsZSkpOworICAgIH0KKyAgICB+R2FtZXBhZERldmljZUd0aygp
OworCitwcml2YXRlOgorICAgIEdhbWVwYWREZXZpY2VHdGsoU3RyaW5nIGRldmljZUZpbGUpOwor
CisgICAgc3RhdGljIGdib29sZWFuIHJlYWRDYWxsYmFjayhHT2JqZWN0KiBwb2xsYWJsZVN0cmVh
bSwgZ3BvaW50ZXIgZGF0YSk7CisgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IG1faW5wdXRTdHJl
YW07CisgICAgR1JlZlB0cjxHU291cmNlPiBtX3NvdXJjZTsKK307CisKK0dhbWVwYWREZXZpY2VH
dGs6OkdhbWVwYWREZXZpY2VHdGsoU3RyaW5nIGRldmljZUZpbGUpCisgICAgOiBHYW1lcGFkRGV2
aWNlTGludXgoZGV2aWNlRmlsZSkKK3sKKyAgICBpZiAobV9maWxlRGVzY3JpcHRvciA9PSAtMSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX3VuaXhf
aW5wdXRfc3RyZWFtX25ldyhtX2ZpbGVEZXNjcmlwdG9yLCBGQUxTRSkpOworICAgIG1fc291cmNl
ID0gYWRvcHRHUmVmKGdfcG9sbGFibGVfaW5wdXRfc3RyZWFtX2NyZWF0ZV9zb3VyY2UoR19QT0xM
QUJMRV9JTlBVVF9TVFJFQU0obV9pbnB1dFN0cmVhbS5nZXQoKSksIDApKTsKKyAgICBnX3NvdXJj
ZV9zZXRfY2FsbGJhY2sobV9zb3VyY2UuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1
bmM+KHJlYWRDYWxsYmFjayksIHRoaXMsIDApOworICAgIGdfc291cmNlX2F0dGFjaChtX3NvdXJj
ZS5nZXQoKSwgMCk7Cit9CisKK0dhbWVwYWREZXZpY2VHdGs6On5HYW1lcGFkRGV2aWNlR3RrKCkK
K3sKKyAgICBpZiAobV9zb3VyY2UpCisgICAgICAgIGdfc291cmNlX2Rlc3Ryb3kobV9zb3VyY2Uu
Z2V0KCkpOworfQorCitnYm9vbGVhbiBHYW1lcGFkRGV2aWNlR3RrOjpyZWFkQ2FsbGJhY2soR09i
amVjdCogcG9sbGFibGVTdHJlYW0sIGdwb2ludGVyIGRhdGEpCit7CisgICAgR2FtZXBhZERldmlj
ZUd0ayogZ2FtZXBhZERldmljZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R2FtZXBhZERldmljZUd0ayo+
KGRhdGEpOworICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBzdHJ1Y3QganNfZXZlbnQg
ZXZlbnQ7CisKKyAgICBnc3NpemUgbGVuID0gZ19wb2xsYWJsZV9pbnB1dF9zdHJlYW1fcmVhZF9u
b25ibG9ja2luZyhHX1BPTExBQkxFX0lOUFVUX1NUUkVBTShwb2xsYWJsZVN0cmVhbSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV2
ZW50LCBzaXplb2YoZXZlbnQpLCAwLCAmZXJyb3Iub3V0UHRyKCkpOworCisgICAgLy8gRklYTUU6
IFByb3Blcmx5IGxvZyB0aGUgZXJyb3IuCisgICAgLy8gSW4gdGhlIGNhc2Ugb2YgR19JT19FUlJP
Ul9XT1VMRF9CTE9DSyBlcnJvciByZXR1cm4gVFJVRSB0byB3YWl0IHVudGlsCisgICAgLy8gdGhl
IHNvdXJjZSBiZWNvbWVzIHJlYWRhYmxlIGFnYWluIGFuZCBGQUxTRSBvdGhlcndpc2UuCisgICAg
aWYgKGVycm9yKQorICAgICAgICByZXR1cm4gZXJyb3ItPmNvZGUgPT0gR19JT19FUlJPUl9XT1VM
RF9CTE9DSzsKKworICAgIEFTU0VSVChsZW4gPT0gc2l6ZW9mKGV2ZW50KSk7CisgICAgZ2FtZXBh
ZERldmljZS0+dXBkYXRlRm9yRXZlbnQoZXZlbnQpOworICAgIHJldHVybiBUUlVFOworfQorCitj
bGFzcyBHYW1lcGFkc0d0ayB7CitwdWJsaWM6CisgICAgR2FtZXBhZHNHdGsodW5zaWduZWQgbGVu
Z3RoKTsKKworICAgIHZvaWQgcmVnaXN0ZXJEZXZpY2UoU3RyaW5nIGRldmljZUZpbGUpOworICAg
IHZvaWQgdW5yZWdpc3RlckRldmljZShTdHJpbmcgZGV2aWNlRmlsZSk7CisKKyAgICB2b2lkIHVw
ZGF0ZUdhbWVwYWRMaXN0KEdhbWVwYWRMaXN0Kik7CisKK3ByaXZhdGU6CisgICAgfkdhbWVwYWRz
R3RrKCk7CisgICAgc3RhdGljIHZvaWQgb25VRXZlbnRDYWxsYmFjayhHVWRldkNsaWVudCosIGdj
aGFyKiBhY3Rpb24sIEdVZGV2RGV2aWNlKiwgZ3BvaW50ZXIgZGF0YSk7CisgICAgc3RhdGljIGdi
b29sZWFuIGlzR2FtZXBhZERldmljZShHVWRldkRldmljZSopOworCisgICAgVmVjdG9yPE93blB0
cjxHYW1lcGFkRGV2aWNlR3RrPiA+IG1fc2xvdHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIEdhbWVw
YWREZXZpY2VHdGsqPiBtX2RldmljZU1hcDsKKworICAgIEdSZWZQdHI8R1VkZXZDbGllbnQ+IG1f
Z3VkZXZDbGllbnQ7Cit9OworCitHYW1lcGFkc0d0azo6R2FtZXBhZHNHdGsodW5zaWduZWQgbGVu
Z3RoKQorICAgIDogbV9zbG90cyhsZW5ndGgpCit7CisgICAgc3RhdGljIGNvbnN0IGdjaGFyKiBz
dWJzeXN0ZW1zW10gPSB7ICJpbnB1dCIsIDAgfTsKKyAgICBtX2d1ZGV2Q2xpZW50ID0gYWRvcHRH
UmVmKGdfdWRldl9jbGllbnRfbmV3KHN1YnN5c3RlbXMpKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KG1fZ3VkZXZDbGllbnQuZ2V0KCksICJ1ZXZlbnQiLCBHX0NBTExCQUNLKG9uVUV2ZW50Q2FsbGJh
Y2spLCB0aGlzKTsKKworICAgIEdPd25QdHI8R0xpc3Q+IGRldmljZXNMaXN0KGdfdWRldl9jbGll
bnRfcXVlcnlfYnlfc3Vic3lzdGVtKG1fZ3VkZXZDbGllbnQuZ2V0KCksIHN1YnN5c3RlbXNbMF0p
KTsKKyAgICBmb3IgKEdMaXN0KiBsaXN0SXRlbSA9IGRldmljZXNMaXN0LmdldCgpOyBsaXN0SXRl
bTsgbGlzdEl0ZW0gPSBnX2xpc3RfbmV4dChsaXN0SXRlbSkpIHsKKyAgICAgICAgR1VkZXZEZXZp
Y2UqIGRldmljZSA9IEdfVURFVl9ERVZJQ0UobGlzdEl0ZW0tPmRhdGEpOworICAgICAgICBTdHJp
bmcgZGV2aWNlRmlsZSA9IFN0cmluZzo6ZnJvbVVURjgoZ191ZGV2X2RldmljZV9nZXRfZGV2aWNl
X2ZpbGUoZGV2aWNlKSk7CisgICAgICAgIGlmIChpc0dhbWVwYWREZXZpY2UoZGV2aWNlKSkKKyAg
ICAgICAgICAgIHJlZ2lzdGVyRGV2aWNlKGRldmljZUZpbGUpOworICAgICAgICBnX29iamVjdF91
bnJlZihkZXZpY2UpOworICAgIH0KK30KKworR2FtZXBhZHNHdGs6On5HYW1lcGFkc0d0aygpCit7
CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fZ3VkZXZDbGllbnQu
Z2V0KCksIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIDAsIDAsIHRoaXMpOworfQorCit2b2lk
IEdhbWVwYWRzR3RrOjpyZWdpc3RlckRldmljZShTdHJpbmcgZGV2aWNlRmlsZSkKK3sKKyAgICBB
U1NFUlQoIW1fZGV2aWNlTWFwLmNvbnRhaW5zKGRldmljZUZpbGUpKTsKKworICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG1fc2xvdHMuc2l6ZSgpOyBpbmRleCsrKSB7CisgICAg
ICAgIGlmICghbV9zbG90c1tpbmRleF0pIHsKKyAgICAgICAgICAgIG1fc2xvdHNbaW5kZXhdID0g
R2FtZXBhZERldmljZUd0azo6Y3JlYXRlKGRldmljZUZpbGUpOworICAgICAgICAgICAgbV9kZXZp
Y2VNYXAuYWRkKGRldmljZUZpbGUsIG1fc2xvdHNbaW5kZXhdLmdldCgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdhbWVwYWRzR3RrOjp1bnJlZ2lz
dGVyRGV2aWNlKFN0cmluZyBkZXZpY2VGaWxlKQoreworICAgIEFTU0VSVChtX2RldmljZU1hcC5j
b250YWlucyhkZXZpY2VGaWxlKSk7CisKKyAgICBHYW1lcGFkRGV2aWNlR3RrKiBnYW1lcGFkRGV2
aWNlID0gbV9kZXZpY2VNYXAudGFrZShkZXZpY2VGaWxlKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9
IG1fc2xvdHMuZmluZChnYW1lcGFkRGV2aWNlKTsKKyAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91
bmQpOworCisgICAgbV9zbG90c1tpbmRleF0uY2xlYXIoKTsKK30KKwordm9pZCBHYW1lcGFkc0d0
azo6dXBkYXRlR2FtZXBhZExpc3QoR2FtZXBhZExpc3QqIGludG8pCit7CisgICAgQVNTRVJUKG1f
c2xvdHMuc2l6ZSgpID09IGludG8tPmxlbmd0aCgpKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3Nsb3RzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChtX3Nsb3RzW2ldLmdl
dCgpICYmIG1fc2xvdHNbaV0tPmNvbm5lY3RlZCgpKSB7CisgICAgICAgICAgICBHYW1lcGFkRGV2
aWNlR3RrKiBnYW1lcGFkRGV2aWNlID0gbV9zbG90c1tpXS5nZXQoKTsKKyAgICAgICAgICAgIFJl
ZlB0cjxHYW1lcGFkPiBnYW1lcGFkID0gaW50by0+aXRlbShpKTsKKyAgICAgICAgICAgIGlmICgh
Z2FtZXBhZCkKKyAgICAgICAgICAgICAgICBnYW1lcGFkID0gR2FtZXBhZDo6Y3JlYXRlKCk7CisK
KyAgICAgICAgICAgIGdhbWVwYWQtPmluZGV4KGkpOworICAgICAgICAgICAgZ2FtZXBhZC0+aWQo
Z2FtZXBhZERldmljZS0+aWQoKSk7CisgICAgICAgICAgICBnYW1lcGFkLT50aW1lc3RhbXAoZ2Ft
ZXBhZERldmljZS0+dGltZXN0YW1wKCkpOworICAgICAgICAgICAgZ2FtZXBhZC0+YXhlcyhnYW1l
cGFkRGV2aWNlLT5heGVzQ291bnQoKSwgZ2FtZXBhZERldmljZS0+YXhlc0RhdGEoKSk7CisgICAg
ICAgICAgICBnYW1lcGFkLT5idXR0b25zKGdhbWVwYWREZXZpY2UtPmJ1dHRvbnNDb3VudCgpLCBn
YW1lcGFkRGV2aWNlLT5idXR0b25zRGF0YSgpKTsKKworICAgICAgICAgICAgaW50by0+c2V0KGks
IGdhbWVwYWQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGludG8tPnNldChpLCAwKTsK
KyAgICB9Cit9CisKK3ZvaWQgR2FtZXBhZHNHdGs6Om9uVUV2ZW50Q2FsbGJhY2soR1VkZXZDbGll
bnQqIHVkZXZDbGllbnQsIGdjaGFyKiBhY3Rpb24sIEdVZGV2RGV2aWNlKiBkZXZpY2UsIGdwb2lu
dGVyIGRhdGEpCit7CisgICAgaWYgKCFpc0dhbWVwYWREZXZpY2UoZGV2aWNlKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgR2FtZXBhZHNHdGsqIGdhbWVwYWRzR3RrID0gcmVpbnRlcnByZXRfY2Fz
dDxHYW1lcGFkc0d0ayo+KGRhdGEpOworICAgIFN0cmluZyBkZXZpY2VGaWxlID0gU3RyaW5nOjpm
cm9tVVRGOChnX3VkZXZfZGV2aWNlX2dldF9kZXZpY2VfZmlsZShkZXZpY2UpKTsKKworICAgIGlm
ICghZ19zdHJjbXAwKGFjdGlvbiwgImFkZCIpKQorICAgICAgICBnYW1lcGFkc0d0ay0+cmVnaXN0
ZXJEZXZpY2UoZGV2aWNlRmlsZSk7CisgICAgZWxzZSBpZiAoIWdfc3RyY21wMChhY3Rpb24sICJy
ZW1vdmUiKSkKKyAgICAgICAgZ2FtZXBhZHNHdGstPnVucmVnaXN0ZXJEZXZpY2UoZGV2aWNlRmls
ZSk7Cit9CisKK2dib29sZWFuIEdhbWVwYWRzR3RrOjppc0dhbWVwYWREZXZpY2UoR1VkZXZEZXZp
Y2UqIGRldmljZSkKK3sKKyAgICBjb25zdCBnY2hhciogZGV2aWNlRmlsZSA9IGdfdWRldl9kZXZp
Y2VfZ2V0X2RldmljZV9maWxlKGRldmljZSk7CisgICAgY29uc3QgZ2NoYXIqIHN5c2ZzUGF0aCA9
IGdfdWRldl9kZXZpY2VfZ2V0X3N5c2ZzX3BhdGgoZGV2aWNlKTsKKyAgICBpZiAoIWRldmljZUZp
bGUgfHwgIXN5c2ZzUGF0aCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKCFnX3Vk
ZXZfZGV2aWNlX2hhc19wcm9wZXJ0eShkZXZpY2UsICJJRF9JTlBVVCIpIHx8ICFnX3VkZXZfZGV2
aWNlX2hhc19wcm9wZXJ0eShkZXZpY2UsICJJRF9JTlBVVF9KT1lTVElDSyIpKQorICAgICAgICBy
ZXR1cm4gRkFMU0U7CisKKyAgICByZXR1cm4gZ19zdHJfaGFzX3ByZWZpeChkZXZpY2VGaWxlLCAi
L2Rldi9pbnB1dC9qcyIpOworfQorCit2b2lkIHNhbXBsZUdhbWVwYWRzKEdhbWVwYWRMaXN0KiBp
bnRvKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoR2FtZXBhZHNHdGssIGdhbWVwYWRzR3Rr
LCAoaW50by0+bGVuZ3RoKCkpKTsKKyAgICBnYW1lcGFkc0d0ay51cGRhdGVHYW1lcGFkTGlzdChp
bnRvKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdB
TUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFk
RGV2aWNlTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERl
dmljZUxpbnV4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTFjOTZmNDRkYzdmMDc0ZGY0ZmNlMzFlNjM3NWUz
NTFhMmU1NDUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlu
dXgvR2FtZXBhZERldmljZUxpbnV4LmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFphbiBEb2JlcnNlayA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisg
KiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZERldmljZUxpbnV4Lmgi
CisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8
c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0dhbWVwYWREZXZpY2VMaW51eDo6R2FtZXBhZERldmljZUxpbnV4KFN0cmlu
ZyBkZXZpY2VGaWxlKQorICAgIDogbV9maWxlRGVzY3JpcHRvcigtMSkKKyAgICAsIG1fY29ubmVj
dGVkKGZhbHNlKQorICAgICwgbV9sYXN0VGltZXN0YW1wKDApCit7CisgICAgLy8gRklYTUU6IExv
ZyBlcnJvcnMgd2hlbiByZXR1cm5pbmcgZWFybHkuCisgICAgbV9maWxlRGVzY3JpcHRvciA9IG9w
ZW4oZGV2aWNlRmlsZS51dGY4KCkuZGF0YSgpLCBPX1JET05MWSB8IE9fTk9OQkxPQ0spOworICAg
IGlmIChtX2ZpbGVEZXNjcmlwdG9yID09IC0xKQorICAgICAgICByZXR1cm47CisKKyAgICBjaGFy
IGRldmljZU5hbWVbMTAyNF07CisgICAgaWYgKGlvY3RsKG1fZmlsZURlc2NyaXB0b3IsIEpTSU9D
R05BTUUoc2l6ZW9mKGRldmljZU5hbWUpKSwgZGV2aWNlTmFtZSkgPCAwKQorICAgICAgICByZXR1
cm47CisgICAgbV9kZXZpY2VOYW1lID0gU3RyaW5nKGRldmljZU5hbWUpLnNpbXBsaWZ5V2hpdGVT
cGFjZSgpOworCisgICAgdWludDhfdCBudW1iZXJPZkF4ZXM7CisgICAgdWludDhfdCBudW1iZXJP
ZkJ1dHRvbnM7CisgICAgaWYgKGlvY3RsKG1fZmlsZURlc2NyaXB0b3IsIEpTSU9DR0FYRVMsICZu
dW1iZXJPZkF4ZXMpIDwgMCB8fCBpb2N0bChtX2ZpbGVEZXNjcmlwdG9yLCBKU0lPQ0dCVVRUT05T
LCAmbnVtYmVyT2ZCdXR0b25zKSA8IDApCisgICAgICAgIHJldHVybjsKKyAgICBtX2F4ZXMuZmls
bCgwLjAsIG51bWJlck9mQXhlcyk7CisgICAgbV9idXR0b25zLmZpbGwoMC4wLCBudW1iZXJPZkJ1
dHRvbnMpOworfQorCitHYW1lcGFkRGV2aWNlTGludXg6On5HYW1lcGFkRGV2aWNlTGludXgoKQor
eworICAgIGlmIChtX2ZpbGVEZXNjcmlwdG9yICE9IC0xKQorICAgICAgICBjbG9zZShtX2ZpbGVE
ZXNjcmlwdG9yKTsKK30KKwordm9pZCBHYW1lcGFkRGV2aWNlTGludXg6OnVwZGF0ZUZvckV2ZW50
KHN0cnVjdCBqc19ldmVudCBldmVudCkKK3sKKyAgICBpZiAoIShldmVudC50eXBlICYgSlNfRVZF
TlRfQVhJUyB8fCBldmVudC50eXBlICYgSlNfRVZFTlRfQlVUVE9OKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gTWFyayB0aGUgZGV2aWNlIGFzIGNvbm5lY3RlZCBvbmx5IGlmIGl0IGlzIG5v
dCB5ZXQgY29ubmVjdGVkLCB0aGUgZXZlbnQgaXMgbm90IGFuIGluaXRpYWxpemF0aW9uCisgICAg
Ly8gYW5kIHRoZSB2YWx1ZSBpcyBub3QgMCAoaW5kaWNhdGluZyBhIGdlbnVpbmUgaW50ZXJhY3Rp
b24gd2l0aCB0aGUgZGV2aWNlKS4KKyAgICBpZiAoIW1fY29ubmVjdGVkICYmICEoZXZlbnQudHlw
ZSAmIEpTX0VWRU5UX0lOSVQpICYmIGV2ZW50LnZhbHVlKQorICAgICAgICBtX2Nvbm5lY3RlZCA9
IHRydWU7CisKKyAgICBpZiAoZXZlbnQudHlwZSAmIEpTX0VWRU5UX0FYSVMpCisgICAgICAgIG1f
YXhlc1tldmVudC5udW1iZXJdID0gbm9ybWFsaXplQXhpc1ZhbHVlKGV2ZW50LnZhbHVlKTsKKyAg
ICBlbHNlIGlmIChldmVudC50eXBlICYgSlNfRVZFTlRfQlVUVE9OKQorICAgICAgICBtX2J1dHRv
bnNbZXZlbnQubnVtYmVyXSA9IG5vcm1hbGl6ZUJ1dHRvblZhbHVlKGV2ZW50LnZhbHVlKTsKKwor
ICAgIG1fbGFzdFRpbWVzdGFtcCA9IGV2ZW50LnRpbWU7Cit9CisKK2Zsb2F0IEdhbWVwYWREZXZp
Y2VMaW51eDo6bm9ybWFsaXplQXhpc1ZhbHVlKHNob3J0IHZhbHVlKQoreworICAgIC8vIE5vcm1h
bGl6ZSBmcm9tIHJhbmdlIFstMzI3NjcsIDMyNzY3XSBpbnRvIHJhbmdlIFstMS4wLCAxLjBdCisg
ICAgcmV0dXJuIHZhbHVlIC8gMzI3NjcuMGY7Cit9CisKK2Zsb2F0IEdhbWVwYWREZXZpY2VMaW51
eDo6bm9ybWFsaXplQnV0dG9uVmFsdWUoc2hvcnQgdmFsdWUpCit7CisgICAgLy8gTm9ybWFsaXpl
IGZyb20gcmFuZ2UgWzAsIDFdIGludG8gcmFuZ2UgWzAuMCwgMS4wXQorICAgIHJldHVybiB2YWx1
ZSAvIDEuMGY7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2Ft
ZXBhZERldmljZUxpbnV4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFk
RGV2aWNlTGludXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmRlMTZiNTE2M2UzYjJhMTAwNmEyYTgzMTg4YjE4
YWMyNTliNDAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlu
dXgvR2FtZXBhZERldmljZUxpbnV4LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBaYW4gRG9iZXJzZWsgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICog
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBHYW1lcGFkRGV2aWNlTGludXhfaAorI2RlZmluZSBHYW1lcGFkRGV2aWNlTGlu
dXhfaAorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlIDxsaW51eC9qb3lzdGljay5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEdhbWVwYWREZXZpY2VMaW51eCB7CitwdWJsaWM6CisgICAgYm9vbCBjb25uZWN0ZWQo
KSB7IHJldHVybiBtX2Nvbm5lY3RlZDsgfTsKKworICAgIFN0cmluZyBpZCgpIHsgcmV0dXJuIG1f
ZGV2aWNlTmFtZTsgfQorICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXAoKSB7IHJldHVy
biBtX2xhc3RUaW1lc3RhbXA7IH0KKworICAgIHVuc2lnbmVkIGF4ZXNDb3VudCgpIHsgcmV0dXJu
IG1fYXhlcy5zaXplKCk7IH0KKyAgICBmbG9hdCogYXhlc0RhdGEoKSB7IHJldHVybiBtX2F4ZXMu
ZGF0YSgpOyB9CisKKyAgICB1bnNpZ25lZCBidXR0b25zQ291bnQoKSB7IHJldHVybiBtX2J1dHRv
bnMuc2l6ZSgpOyB9CisgICAgZmxvYXQqIGJ1dHRvbnNEYXRhKCkgeyByZXR1cm4gbV9idXR0b25z
LmRhdGEoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgR2FtZXBhZERldmljZUxpbnV4KFN0cmluZyBk
ZXZpY2VGaWxlKTsKKyAgICB+R2FtZXBhZERldmljZUxpbnV4KCk7CisKKyAgICB2b2lkIHVwZGF0
ZUZvckV2ZW50KHN0cnVjdCBqc19ldmVudCk7CisgICAgaW50IG1fZmlsZURlc2NyaXB0b3I7CisK
K3ByaXZhdGU6CisgICAgZmxvYXQgbm9ybWFsaXplQXhpc1ZhbHVlKHNob3J0IHZhbHVlKTsKKyAg
ICBmbG9hdCBub3JtYWxpemVCdXR0b25WYWx1ZShzaG9ydCB2YWx1ZSk7CisKKyAgICBib29sIG1f
Y29ubmVjdGVkOworICAgIFN0cmluZyBtX2RldmljZU5hbWU7CisgICAgdW5zaWduZWQgbG9uZyBs
b25nIG1fbGFzdFRpbWVzdGFtcDsKKworICAgIFZlY3RvcjxmbG9hdD4gbV9heGVzOworICAgIFZl
Y3RvcjxmbG9hdD4gbV9idXR0b25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCisKKyNlbmRpZiAvLyBHYW1lcGFkRGV2aWNlTGludXhf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQppbmRleCBmMjRjN2E5NjdkMTQ5MTUzNDExZDhjMDY5
YWE0MmVkYjEyODY3YmNhLi5lM2Y3ODQ2ZTk5NTFjYzAyYmVkZGMxMzExM2U0OWJkOTM1OTBlYWRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtODcsNiArODcsNyBAQCBsaWJ3ZWJraXRn
dGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVS
U0lPTkBfbGFfTElCQQogCSQoRU5DSEFOVF9MSUJTKSBcCiAJJChGUkVFVFlQRV9MSUJTKSBcCiAJ
JChHQUlMX0xJQlMpIFwKKwkkKEdBTUVQQURfTElCUykgXAogCSQoR0VPQ0xVRV9MSUJTKSBcCiAJ
JChHTElCX0xJQlMpIFwKIAkkKEdTVFJFQU1FUl9MSUJTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDAxNmQ2ODE5N2Y2YjE5Zjg3ZGZjMmM2ZTVhNGM0MWFhMDliOTBkZjEuLjE1YTY5Zjk3MzM5
ZGMxYzA0OTUxOWM4OTg3YWQ2YmYxN2I4ZDNhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0x
NjAsNiArMTYwLDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9O
QF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUIKIAkkKENPVkVSQUdFX0xERkxB
R1MpIFwKIAkkKEVOQ0hBTlRfTElCUykgXAogCSQoR0FJTF9MSUJTKSBcCisJJChHQU1FUEFEX0xJ
QlMpIFwKIAkkKEdFT0NMVUVfTElCUykgXAogCSQoR0xJQl9MSUJTKSBcCiAJJChHU1RSRUFNRVJf
TElCUykgXApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGE5YTZmMjczNjFiMDNhNWM3NTk5MDVhNzE4ZmJjYzBiNDM3MTU5NmMuLjA1OTkxOGQ3MGM0
ODJiY2ViZWJhMGU4YzZlMmZhNDQzNzQ4Mzc4YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNi0xOSAgWmFu
IERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFtHdGtdIEFkZCBz
dXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg3NTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRW5hYmxlIHRoZSBnYW1lcGFkIHN1cHBvcnQgZm9yIHRoZSBHVEsg
cG9ydC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKwog
MjAxMi0wNi0xOSAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBbUXRdIE1vZGlmeSBIVFRQUyBwb3J0IHRvIDg0NDMgZm9yIHBlcmZvcm1hbmNlIHRlc3RzCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggOWZiYWUzZWM3NGMwMTJh
ZTNlMTBiOGI4MmU3NmRhNjhjZDFkY2YyMC4uOTg5NzMyZDJiZTNiYWI2ZTJhZjM1OWE0MjUwYzY5
ZmM1M2IxMDc1NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVM
aXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAt
MjE0LDcgKzIxNCw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxF
X0ZVTExTQ1JFRU5fQVBJIiwgZGVmYXVsdCA9PiAoaXNBcHBsZU1hY1dlYktpdCgpIHx8IGlzRWZs
KCkgfHwgaXNHdGsoKSB8fCBpc0JsYWNrQmVycnkoKSB8fCBpc1F0KCkpLCB2YWx1ZSA9PiBcJGZ1
bGxzY3JlZW5BUElTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiZ2FtZXBhZCIsIGRlc2Mg
PT4gIlRvZ2dsZSBHYW1lcGFkIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfR0FN
RVBBRCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRnYW1lcGFkU3VwcG9ydCB9LAorICAgICAg
ZGVmaW5lID0+ICJFTkFCTEVfR0FNRVBBRCIsIGRlZmF1bHQgPT4gaXNHdGsoKSwgdmFsdWUgPT4g
XCRnYW1lcGFkU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImdlb2xvY2F0aW9uIiwgZGVz
YyA9PiAiVG9nZ2xlIEdlb2xvY2F0aW9uIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfR0VPTE9DQVRJT04iLCBkZWZhdWx0ID0+IChpc0FwcGxlV2ViS2l0KCkgfHwgaXNHdGsoKSB8
fCBpc0JsYWNrQmVycnkoKSksIHZhbHVlID0+IFwkZ2VvbG9jYXRpb25TdXBwb3J0IH0sCmRpZmYg
LS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZmNhYTY4NzRjOWY4MTZhNGU0NjQ4
MmRiNWNhZjU2Nzc3MzZjOGQzZC4uNDk2ODZmMjFmM2RjZDEyYjRkNmRjYzg1ZmYwYmE4MWQ2ODIz
YWI1MiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDEyLTA2LTE5ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisK
KyAgICAgICAgW0d0a10gQWRkIHN1cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbmx5IGVuYWJsZSB0aGUgR2Ft
ZXBhZCBmZWF0dXJlIG9uIExpbnV4IGFzIHN1cHBvcnQKKyAgICAgICAgZm9yIG90aGVyIG9wZXJh
dGluZyBzeXN0ZW1zIGlzIG5vdCBwcmVzZW50LgorCisgICAgICAgIENoZWNrIGZvciB0aGUgR0lP
IFVuaXggYW5kIEdVZGV2IGRlcGVuZGVuY2llcyB3aGVuIHRoZQorICAgICAgICBHYW1lcGFkIGZl
YXR1cmUgaXMgZW5hYmxlZC4KKworICAgICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAxMi0wNi0x
OSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludHJvZHVjZSBF
TkFCTEVfQ1NQX05FWFQgY29uZmlndXJhdGlvbiBmbGFnLgpkaWZmIC0tZ2l0IGEvY29uZmlndXJl
LmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDFkYTc5NzVjNGVmMDBkMDkxNjY3NjE1OTEyNzE5MzZk
MTM4Y2Q4YTEuLmNlM2QwZTc3ZmVmZmE0ZmEyMjMzYTE5NzdjYjc3ZTg3NDQyY2M2YmMgMTAwNjQ0
Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTY1Myw2ICs2NTMsMTEg
QEAgQUNfQVJHX0VOQUJMRShnYW1lcGFkLAogICAgICAgICAgICAgICBbXSxbZW5hYmxlX2dhbWVw
YWQ9Im5vIl0pCiBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX2dhbWVwYWRdKQogCitpZiB0ZXN0ICIk
ZW5hYmxlX2dhbWVwYWQiID0gInllcyIgJiYgdGVzdCAiJG9zX2xpbnV4IiA9IG5vOyB0aGVuCisg
ICBBQ19NU0dfV0FSTihbR2FtZXBhZCBzdXBwb3J0IGlzIG9ubHkgYXZhaWxhYmxlIG9uIExpbnV4
LiBEaXNhYmxpbmcgR2FtZXBhZCBzdXBwb3J0Ll0pCisgICBlbmFibGVfZ2FtZXBhZD1ubzsKK2Zp
CisKICMgY2hlY2sgd2hldGhlciB0byBidWlsZCB3aXRoIGRhdGEgdHJhbnNmZXIgaXRlbXMgc3Vw
cG9ydAogQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBkYXRhIHRyYW5z
ZmVyIGl0ZW1zIHN1cHBvcnRdKQogQUNfQVJHX0VOQUJMRShkYXRhX3RyYW5zZmVyX2l0ZW1zLApA
QCAtMTI3Niw2ICsxMjgxLDEzIEBAIGlmIHRlc3QgIiRlbmFibGVfd2Via2l0MiIgPSAieWVzIjsg
dGhlbgogICAgQUNfU1VCU1QoW0FUU1BJMl9MSUJTXSkKIGZpCiAKK2lmIHRlc3QgIiRlbmFibGVf
Z2FtZXBhZCIgPSAieWVzIjsgdGhlbgorICAgUEtHX0NIRUNLX01PRFVMRVMoW0dBTUVQQURdLCBb
Z2lvLXVuaXgtMi4wIGd1ZGV2LTEuMF0pCisKKyAgIEFDX1NVQlNUKEdBTUVQQURfQ0ZMQUdTKQor
ICAgQUNfU1VCU1QoR0FNRVBBRF9MSUJTKQorZmkKKwogIyBjaGVjayBmb3IgY29kZSBjb3ZlcmFn
ZSBzdXBwb3J0CiBpZiB0ZXN0ICIkZW5hYmxlX2NvdmVyYWdlIiA9ICJ5ZXMiOyB0aGVuCiAgICBD
T1ZFUkFHRV9DRkxBR1M9Ii1NRCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148550</attachid>
            <date>2012-06-20 06:28:29 -0700</date>
            <delta_ts>2012-06-25 09:21:21 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>bug-87503-20120620152828.patch</filename>
            <type>text/plain</type>
            <size>32613</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk4NTdhNzBkMmY4MWIx
NDdjZjQ0NGZiMDJkZTc4MzQ2YjllMGZlZS4uOTJjNDQ0YzE0ZTg5MTExZGVjMWRjODQ0ZjdjYjNl
Y2FjMmUyMjQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA2LTIwICBaYW4g
RG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0d0a10gQWRkIHN1
cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIEdhbWVwYWQgZmVhdHVyZSBvbiB0
aGUgR1RLIHBvcnQuCisKKyAgICAgICAgVGhlIHN1cHBvcnQgaXMgYXZhaWxhYmxlIG9ubHkgb24g
TGludXgsIHdpdGggZWFjaCBnYW1lcGFkIGRldmljZSBiZWluZyBwcmVzZW50ZWQKKyAgICAgICAg
dGhyb3VnaCBhIEdhbWVwYWREZXZpY2VMaW51eCBvYmplY3QuIFRoZSBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGlzIGNsYXNzIHJlbGllcyBvbgorICAgICAgICB0aGUgTGludXgga2VybmVsIGpveXN0aWNr
IEFQSS4KKworICAgICAgICBHYW1lcGFkIGRldmljZXMgYXJlIHJlY29nbml6ZWQgdGhyb3VnaCB0
aGUgR2FtZXBhZHNHdGsgY2xhc3MsIG9mIHdoaWNoIGltcGxlbWVudGF0aW9uCisgICAgICAgIGlz
IGJhc2VkIG9uIEdVZGV2LiBUaGlzIHdheSBkZXZpY2VzIGFyZSBwcm9wZXJseSByZWdpc3RlcmVk
IG9uIGNvbm5lY3Rpb24gYXMgb2JqZWN0cyBvZgorICAgICAgICB0aGUgR2FtZXBhZERldmljZUd0
ayBjbGFzcyB3aGljaCBpbmhlcml0cyBHYW1lcGFkRGV2aWNlTGludXguIEdhbWVwYWREZXZpY2VH
dGsgcmVhZHMgdGhlCisgICAgICAgIGpveXN0aWNrIGRhdGEgdGhyb3VnaCBHSU8gcG9sbGFibGUg
c3RyZWFtcyBhbmQgdXBkYXRlcyB0aGUgZGV2aWNlIHN0YXRlIGFjY29yZGluZ2x5LiBUaGUKKyAg
ICAgICAgR2FtZXBhZHNHdGsgb2JqZWN0IGlzIHRoZW4gcG9sbGVkIGZvciBnYW1lcGFkcyBkYXRh
IHRocm91Z2ggdGhlIHNhbXBsZUdhbWVwYWRzIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVz
dHMgLSB0ZXN0cyBhbHJlYWR5IGV4aXN0IGJ1dCByZXF1aXJlIGFkZGl0aW9uYWwgdGVzdGluZyBp
bmZyYXN0cnVjdHVyZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmls
ZS5hbToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDogQWRkIHRoZSBqc0Fy
cmF5IG1ldGhvZCB0aGF0IG9wZXJhdGVzIG9uIGEgVmVjdG9yIG9mIGZsb2F0cy4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6anNBcnJheSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL0dhbWVwYWRzR3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKEdhbWVwYWREZXZpY2VHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUd0
azo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VHdGs6OkdhbWVwYWRE
ZXZpY2VHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUd0azo6fkdhbWVwYWRE
ZXZpY2VHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUd0azo6cmVhZENhbGxi
YWNrKToKKyAgICAgICAgKEdhbWVwYWRzR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRz
R3RrOjpHYW1lcGFkc0d0ayk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6fkdhbWVw
YWRzR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzR3RrOjpyZWdpc3RlckRldmljZSk6
CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6dW5yZWdpc3RlckRldmljZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6dXBkYXRlR2FtZXBhZExpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R2FtZXBhZHNHdGs6Om9uVUV2ZW50Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZXBhZHNHdGs6OmlzR2FtZXBhZERldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW1w
bGVHYW1lcGFkcyk6CisgICAgICAgICogcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVw
YWREZXZpY2VMaW51eDo6R2FtZXBhZERldmljZUxpbnV4KToKKyAgICAgICAgKFdlYkNvcmU6Okdh
bWVwYWREZXZpY2VMaW51eDo6fkdhbWVwYWREZXZpY2VMaW51eCk6CisgICAgICAgIChXZWJDb3Jl
OjpHYW1lcGFkRGV2aWNlTGludXg6OnVwZGF0ZUZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VMaW51eDo6bm9ybWFsaXplQXhpc1ZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdhbWVwYWREZXZpY2VMaW51eDo6bm9ybWFsaXplQnV0dG9uVmFsdWUpOgorICAgICAgICAq
IHBsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoR2FtZXBhZERldmljZUxpbnV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VMaW51eDo6Y29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVw
YWREZXZpY2VMaW51eDo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4
Ojp0aW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4OjpheGVz
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4OjpheGVzRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTGludXg6OmJ1dHRvbnNDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTGludXg6OmJ1dHRvbnNEYXRhKToKKwogMjAx
Mi0wNi0yMCAgQW15IE91c3RlcmhvdXQgIDxhb3VzdGVyaEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgQWRkcyBEZXZpY2VNb3Rpb25DbGllbnRNb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNjYxNzE2
ZTUxYjM4YWNhYjc2MjU4ZDVlMTM2NmQzZGZhYTdjNWFhYy4uYjY5YTVmNTU3YmY4YmU0MWM3ZDMw
YmVjMzU4ZDRjNjI3MzgwYTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEyLTA2LTIwICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAg
ICAgW0d0a10gQWRkIHN1cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIEdhbWVwYWQgZmVhdHVyZSBk
ZXBlbmRlbmNpZXMgbGlicmFyaWVzIHRvIHRoZSBMSUJBREQKKyAgICAgICAgbGlzdCBmb3IgdGhl
IGxpYndlYmtpdGd0ayBsaWJyYXJ5LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisKIDIw
MTItMDYtMTkgIENoYW5nIFdhbiBIb25nICA8am91cm1vb25AY29tcGFueTEwMC5uZXQ+CiAKICAg
ICAgICAgUmVmaW5lIHN5bmNMYXllcnNUaW1lb3V0Q2FsbGJhY2sgZm9yIEFjY2VsZXJhdGVkIENv
bXBvc2l0aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDlmNzZmOGE2ZjgyOGNmZTdjZTNhZjJhZmE2YjAxNDA3
MWZkZjQwMWMuLjY5NTVlZWY1YjU4NWE4MjI0NjY2ZjI3NTZmZDM1MDNlYjgxYjVkZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0yMCAgWmFuIERvYmVyc2VrICA8emFuZG9i
ZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFtHdGtdIEFkZCBzdXBwb3J0IGZvciB0aGUgR2Ft
ZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg3NTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHRoZSBHYW1lcGFkIGZlYXR1cmUgZGVwZW5kZW5jaWVzIGxpYnJhcmllcyB0byB0aGUgTElC
QURECisgICAgICAgIGxpc3QgZm9yIHRoZSBsaWJ3ZWJraXRndGsyIGxpYnJhcnkuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKwogMjAxMi0wNi0xOSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNo
b2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bUmVncmVzc2lvbl0gQnVpbGQgYnJlYWsg
YWZ0ZXIgcjEyMDc4NgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAxMzE5MTgwNjdlMDM1ODZmMTMz
MDAxNDEyOGM4MDBmMDY0YmMzMWRiLi4xMTQ4YzRhMTM4ZmI0NzY1OTg2NjgyYzA5NjI3MmNmYzBh
ZTY4N2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTIsNiArMTIsNyBAQCB3ZWJjb3JlX2Nw
cGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRl
L0dMU0xBTkcgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAorCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2FtZXBhZCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbiBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0gXApAQCAtNjcsNiArNjgsNyBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIgXAorCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrIFwKQEAgLTg1OCw2ICs4NjAsNyBAQCBEZXJpdmVkU291cmNlcy9BTkdM
RS9nbHNsYW5nX3RhYi5oOiBEZXJpdmVkU291cmNlcy9BTkdMRS9nbHNsYW5nX3RhYi5jcHAKIAog
SURMX1BBVEggOj0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtIFwKKyAgICAk
KFdlYkNvcmUpL01vZHVsZXMvZ2FtZXBhZCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kZXhlZGRiIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0gXApAQCAtOTUzLDYgKzk1Niw3IEBAIGxpYldlYkNvcmVf
bGFfQ1BQRkxBR1MgPSBcCiAJJChDTFVUVEVSX0NGTEFHUykgXAogCSQoQ09WRVJBR0VfQ0ZMQUdT
KSBcCiAJJChFTkNIQU5UX0NGTEFHUykgXAorCSQoR0FNRVBBRF9DRkxBR1MpIFwKIAkkKEdFT0NM
VUVfQ0ZMQUdTKSBcCiAJJChHTElCX0NGTEFHUykgXAogCSQoR1NUUkVBTUVSX0NGTEFHUykgXApA
QCAtMTAxOSw2ICsxMDIzLDcgQEAgbGliV2ViQ29yZUd0a19sYV9DUFBGTEFHUyA9IFwKIAogRVhU
UkFfRElTVCArPSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtLyouaWRsKSBcCisJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nYW1lcGFkLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNk
aXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiLyouaWRsKSBcCiAJJChzaGVsbCBs
cyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS8qLmlkbCkgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMjAyZjVlYTM3OGE3MGUxYmYwODAxMzIy
MmFiNjI2YTQ3MTZkMmZjYS4uOWY4YTE2MTZjYTAxMTYzMWIwOGYwY2E5OWE3ZWMxMTYwZTkxYzg2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xOTIsNiArMTkyLDEwIEBAIHdl
YmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zsb2F0
MzJBcnJheS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmxvYXQ2NEFycmF5LmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zsb2F0NjRBcnJheS5oIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTR2FtZXBhZC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNH
YW1lcGFkLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHYW1lcGFkTGlzdC5jcHAgXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHYW1lcGFkTGlzdC5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTR2VvbG9jYXRpb24uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
R2VvbG9jYXRpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dlb3Bvc2l0aW9uLmNw
cCBcCkBAIC02NzcsNiArNjgxLDkgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL1hQYXRoR3JhbW1hci5oCiAKIGRvbV9iaW5kaW5nX2lkbHMgKz0g
XAorCSQoV2ViQ29yZSkvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaWRsIFwKKwkkKFdlYkNvcmUp
L01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9n
YW1lcGFkL05hdmlnYXRvckdhbWVwYWQuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb24uaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvcG9zaXRpb24uaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdh
dG9yR2VvbG9jYXRpb24uaWRsIFwKQEAgLTEwNTIsNiArMTA1OSwxMiBAQCB3ZWJjb3JlX21vZHVs
ZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dlYktp
dEZsYWdzLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJDb250
ZXh0RmlsZVN5c3RlbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9X
b3JrZXJDb250ZXh0RmlsZVN5c3RlbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVw
YWQvR2FtZXBhZC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFk
LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmggXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBcCkBAIC0zMTQ5LDYg
KzMxNjIsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVTeXN0ZW0uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmxvYXRDb252ZXJzaW9u
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZyYWN0aW9uYWxMYXlvdXRVbml0LmggXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dhbWVwYWRzLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0hhc2hUb29scy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IaXN0b2dyYW1T
dXBwb3J0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5o
IFwKQEAgLTMzOTcsNiArMzQxMSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9FcnJvcnNHdGsuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRz
R3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0tVUkxHdGsuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VHdGsuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvTG9nZ2luZ0d0ay5jcHAgXApAQCAtMzQ1Nyw2ICszNDcyLDggQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQppbmRleCBjNzAyNTI4NmQwZmFlNzRl
MjVhZThlMmQzMTA3MjE1Nzk1YTM3OGY1Li5mYTA0NTQyMDNjYjZjYWIzYmMxMTY4NjhkYThkYzYz
YjliNjdlY2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dO
VW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFr
ZWZpbGUuYW0KQEAgLTY2LDYgKzY2LDEwIEBAIHdlYmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMg
Kz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01GaWxlTGlzdC5jcHAgXAogCURl
cml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01GaWxlTGlzdFByaXZhdGUuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUZpbGVQcml2YXRlLmggXAorCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdC9XZWJLaXRET01HYW1lcGFkLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dl
YktpdERPTUdhbWVwYWRMaXN0LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERP
TUdhbWVwYWRMaXN0UHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9N
R2FtZXBhZFByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUdlb2xv
Y2F0aW9uLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUdlb2xvY2F0aW9u
UHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NSGlzdG9yeS5jcHAg
XApAQCAtMjk1LDYgKzI5OSw4IEBAIHdlYmtpdGd0a19idWlsdF9oX2FwaSArPSBcCiAJRGVyaXZl
ZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUJsb2IuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0
L1dlYktpdERPTUZpbGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUZpbGVM
aXN0LmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01HYW1lcGFkLmggXAorCURl
cml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01HYW1lcGFkTGlzdC5oIFwKIAlEZXJpdmVkU291
cmNlcy93ZWJraXQvV2ViS2l0RE9NR2VvbG9jYXRpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0L1dlYktpdERPTUhUTUxBbmNob3JFbGVtZW50LmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtp
dC9XZWJLaXRET01IVE1MQXBwbGV0RWxlbWVudC5oIFwKQEAgLTQyOCw3ICs0MzQsNiBAQCB3ZWJr
aXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2Vi
S2l0RE9NSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uUHJpdmF0ZS5oCiBlbmRpZgogCi0KIGlmIEVO
QUJMRV9XRUJfVElNSU5HCiB3ZWJraXRndGtfYnVpbHRfaF9hcGkgKz0gXAogCSQodG9wX2J1aWxk
ZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NUGVyZm9ybWFuY2UuaCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IGQyNzhhODAyYWM5MjEw
NTQ2MmRhMWM5MTBkOTgzOWEyNmY0ZDZjMGIuLmI1YWQzZmIwNTkwMjZkNTc1ZWQ5NjI1NGIzZmZk
MWVlYmE3YjdlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
CkBAIC0zMDcsNiArMzA3LDE4IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAg
ICAgIHJldHVybiBKU0M6OmNvbnN0cnVjdEFycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJyYXkp
OwogICAgIH0KIAorICAgIHRlbXBsYXRlPD4KKyAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpzQXJy
YXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFZlY3RvcjxmbG9hdD4mIGl0ZXJhdG9yKQorICAgIHsKKyAgICAgICAgSlNDOjpNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcnJheTsKKyAgICAgICAgVmVjdG9yPGZsb2F0Pjo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gaXRlcmF0b3IuZW5kKCk7CisKKyAgICAgICAgZm9yIChWZWN0b3I8ZmxvYXQ+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGl0ZXJhdG9yLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
KyAgICAgICAgICAgIGFycmF5LmFwcGVuZChKU0M6OmpzTnVtYmVyKCppdCkpOworCisgICAgICAg
IHJldHVybiBKU0M6OmNvbnN0cnVjdEFycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJyYXkpOwor
ICAgIH0KKwogICAgIHRlbXBsYXRlIDxjbGFzcyBUPgogICAgIFZlY3RvcjxUPiB0b05hdGl2ZUFy
cmF5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjM5
Mzk1YmVkYmQyZGY5ZmE0NzRhMTY3NDY4MTQwNjhlNzdmOTk0ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAKQEAgLTAsMCArMSwy
MjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNl
a0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAq
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSAorICogREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJH
YW1lcGFkcy5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1lcGFkRGV2
aWNlTGludXguaCIKKyNpbmNsdWRlICJHYW1lcGFkTGlzdC5oIgorI2luY2x1ZGUgPGdpby9ndW5p
eGlucHV0c3RyZWFtLmg+CisjaW5jbHVkZSA8Z3VkZXYvZ3VkZXYuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgR2FtZXBhZERldmljZUd0ayA6IHB1YmxpYyBHYW1lcGFkRGV2aWNlTGludXggeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEdhbWVwYWREZXZpY2VHdGs+IGNyZWF0ZShTdHJpbmcg
ZGV2aWNlRmlsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgR2FtZXBhZERl
dmljZUd0ayhkZXZpY2VGaWxlKSk7CisgICAgfQorICAgIH5HYW1lcGFkRGV2aWNlR3RrKCk7CisK
K3ByaXZhdGU6CisgICAgR2FtZXBhZERldmljZUd0ayhTdHJpbmcgZGV2aWNlRmlsZSk7CisKKyAg
ICBzdGF0aWMgZ2Jvb2xlYW4gcmVhZENhbGxiYWNrKEdPYmplY3QqIHBvbGxhYmxlU3RyZWFtLCBn
cG9pbnRlciBkYXRhKTsKKyAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gbV9pbnB1dFN0cmVhbTsK
KyAgICBHUmVmUHRyPEdTb3VyY2U+IG1fc291cmNlOworfTsKKworR2FtZXBhZERldmljZUd0azo6
R2FtZXBhZERldmljZUd0ayhTdHJpbmcgZGV2aWNlRmlsZSkKKyAgICA6IEdhbWVwYWREZXZpY2VM
aW51eChkZXZpY2VGaWxlKQoreworICAgIGlmIChtX2ZpbGVEZXNjcmlwdG9yID09IC0xKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfdW5peF9pbnB1
dF9zdHJlYW1fbmV3KG1fZmlsZURlc2NyaXB0b3IsIEZBTFNFKSk7CisgICAgbV9zb3VyY2UgPSBh
ZG9wdEdSZWYoZ19wb2xsYWJsZV9pbnB1dF9zdHJlYW1fY3JlYXRlX3NvdXJjZShHX1BPTExBQkxF
X0lOUFVUX1NUUkVBTShtX2lucHV0U3RyZWFtLmdldCgpKSwgMCkpOworICAgIGdfc291cmNlX3Nl
dF9jYWxsYmFjayhtX3NvdXJjZS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4o
cmVhZENhbGxiYWNrKSwgdGhpcywgMCk7CisgICAgZ19zb3VyY2VfYXR0YWNoKG1fc291cmNlLmdl
dCgpLCAwKTsKK30KKworR2FtZXBhZERldmljZUd0azo6fkdhbWVwYWREZXZpY2VHdGsoKQorewor
ICAgIGlmIChtX3NvdXJjZSkKKyAgICAgICAgZ19zb3VyY2VfZGVzdHJveShtX3NvdXJjZS5nZXQo
KSk7Cit9CisKK2dib29sZWFuIEdhbWVwYWREZXZpY2VHdGs6OnJlYWRDYWxsYmFjayhHT2JqZWN0
KiBwb2xsYWJsZVN0cmVhbSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBHYW1lcGFkRGV2aWNlR3Rr
KiBnYW1lcGFkRGV2aWNlID0gcmVpbnRlcnByZXRfY2FzdDxHYW1lcGFkRGV2aWNlR3RrKj4oZGF0
YSk7CisgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIHN0cnVjdCBqc19ldmVudCBldmVu
dDsKKworICAgIGdzc2l6ZSBsZW4gPSBnX3BvbGxhYmxlX2lucHV0X3N0cmVhbV9yZWFkX25vbmJs
b2NraW5nKEdfUE9MTEFCTEVfSU5QVVRfU1RSRUFNKHBvbGxhYmxlU3RyZWFtKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXZlbnQs
IHNpemVvZihldmVudCksIDAsICZlcnJvci5vdXRQdHIoKSk7CisKKyAgICAvLyBGSVhNRTogUHJv
cGVybHkgbG9nIHRoZSBlcnJvci4KKyAgICAvLyBJbiB0aGUgY2FzZSBvZiBHX0lPX0VSUk9SX1dP
VUxEX0JMT0NLIGVycm9yIHJldHVybiBUUlVFIHRvIHdhaXQgdW50aWwKKyAgICAvLyB0aGUgc291
cmNlIGJlY29tZXMgcmVhZGFibGUgYWdhaW4gYW5kIEZBTFNFIG90aGVyd2lzZS4KKyAgICBpZiAo
ZXJyb3IpCisgICAgICAgIHJldHVybiBnX2Vycm9yX21hdGNoZXMoZXJyb3IuZ2V0KCksIEdfSU9f
RVJST1IsIEdfSU9fRVJST1JfV09VTERfQkxPQ0spOworCisgICAgQVNTRVJUKGxlbiA9PSBzaXpl
b2YoZXZlbnQpKTsKKyAgICBnYW1lcGFkRGV2aWNlLT51cGRhdGVGb3JFdmVudChldmVudCk7Cisg
ICAgcmV0dXJuIFRSVUU7Cit9CisKK2NsYXNzIEdhbWVwYWRzR3RrIHsKK3B1YmxpYzoKKyAgICBH
YW1lcGFkc0d0ayh1bnNpZ25lZCBsZW5ndGgpOworCisgICAgdm9pZCByZWdpc3RlckRldmljZShT
dHJpbmcgZGV2aWNlRmlsZSk7CisgICAgdm9pZCB1bnJlZ2lzdGVyRGV2aWNlKFN0cmluZyBkZXZp
Y2VGaWxlKTsKKworICAgIHZvaWQgdXBkYXRlR2FtZXBhZExpc3QoR2FtZXBhZExpc3QqKTsKKwor
cHJpdmF0ZToKKyAgICB+R2FtZXBhZHNHdGsoKTsKKyAgICBzdGF0aWMgdm9pZCBvblVFdmVudENh
bGxiYWNrKEdVZGV2Q2xpZW50KiwgZ2NoYXIqIGFjdGlvbiwgR1VkZXZEZXZpY2UqLCBncG9pbnRl
ciBkYXRhKTsKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gaXNHYW1lcGFkRGV2aWNlKEdVZGV2RGV2aWNl
Kik7CisKKyAgICBWZWN0b3I8T3duUHRyPEdhbWVwYWREZXZpY2VHdGs+ID4gbV9zbG90czsKKyAg
ICBIYXNoTWFwPFN0cmluZywgR2FtZXBhZERldmljZUd0ayo+IG1fZGV2aWNlTWFwOworCisgICAg
R1JlZlB0cjxHVWRldkNsaWVudD4gbV9ndWRldkNsaWVudDsKK307CisKK0dhbWVwYWRzR3RrOjpH
YW1lcGFkc0d0ayh1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBtX3Nsb3RzKGxlbmd0aCkKK3sKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciogc3Vic3lzdGVtc1tdID0geyAiaW5wdXQiLCAwIH07CisgICAg
bV9ndWRldkNsaWVudCA9IGFkb3B0R1JlZihnX3VkZXZfY2xpZW50X25ldyhzdWJzeXN0ZW1zKSk7
CisgICAgZ19zaWduYWxfY29ubmVjdChtX2d1ZGV2Q2xpZW50LmdldCgpLCAidWV2ZW50IiwgR19D
QUxMQkFDSyhvblVFdmVudENhbGxiYWNrKSwgdGhpcyk7CisKKyAgICBHT3duUHRyPEdMaXN0PiBk
ZXZpY2VzTGlzdChnX3VkZXZfY2xpZW50X3F1ZXJ5X2J5X3N1YnN5c3RlbShtX2d1ZGV2Q2xpZW50
LmdldCgpLCBzdWJzeXN0ZW1zWzBdKSk7CisgICAgZm9yIChHTGlzdCogbGlzdEl0ZW0gPSBkZXZp
Y2VzTGlzdC5nZXQoKTsgbGlzdEl0ZW07IGxpc3RJdGVtID0gZ19saXN0X25leHQobGlzdEl0ZW0p
KSB7CisgICAgICAgIEdVZGV2RGV2aWNlKiBkZXZpY2UgPSBHX1VERVZfREVWSUNFKGxpc3RJdGVt
LT5kYXRhKTsKKyAgICAgICAgU3RyaW5nIGRldmljZUZpbGUgPSBTdHJpbmc6OmZyb21VVEY4KGdf
dWRldl9kZXZpY2VfZ2V0X2RldmljZV9maWxlKGRldmljZSkpOworICAgICAgICBpZiAoaXNHYW1l
cGFkRGV2aWNlKGRldmljZSkpCisgICAgICAgICAgICByZWdpc3RlckRldmljZShkZXZpY2VGaWxl
KTsKKyAgICAgICAgZ19vYmplY3RfdW5yZWYoZGV2aWNlKTsKKyAgICB9Cit9CisKK0dhbWVwYWRz
R3RrOjp+R2FtZXBhZHNHdGsoKQoreworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
bWF0Y2hlZChtX2d1ZGV2Q2xpZW50LmdldCgpLCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCAw
LCAwLCB0aGlzKTsKK30KKwordm9pZCBHYW1lcGFkc0d0azo6cmVnaXN0ZXJEZXZpY2UoU3RyaW5n
IGRldmljZUZpbGUpCit7CisgICAgQVNTRVJUKCFtX2RldmljZU1hcC5jb250YWlucyhkZXZpY2VG
aWxlKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBtX3Nsb3RzLnNp
emUoKTsgaW5kZXgrKykgeworICAgICAgICBpZiAoIW1fc2xvdHNbaW5kZXhdKSB7CisgICAgICAg
ICAgICBtX3Nsb3RzW2luZGV4XSA9IEdhbWVwYWREZXZpY2VHdGs6OmNyZWF0ZShkZXZpY2VGaWxl
KTsKKyAgICAgICAgICAgIG1fZGV2aWNlTWFwLmFkZChkZXZpY2VGaWxlLCBtX3Nsb3RzW2luZGV4
XS5nZXQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBHYW1lcGFkc0d0azo6dW5yZWdpc3RlckRldmljZShTdHJpbmcgZGV2aWNlRmlsZSkKK3sKKyAg
ICBBU1NFUlQobV9kZXZpY2VNYXAuY29udGFpbnMoZGV2aWNlRmlsZSkpOworCisgICAgR2FtZXBh
ZERldmljZUd0ayogZ2FtZXBhZERldmljZSA9IG1fZGV2aWNlTWFwLnRha2UoZGV2aWNlRmlsZSk7
CisgICAgdW5zaWduZWQgaW5kZXggPSBtX3Nsb3RzLmZpbmQoZ2FtZXBhZERldmljZSk7CisgICAg
QVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKKworICAgIG1fc2xvdHNbaW5kZXhdLmNsZWFyKCk7
Cit9CisKK3ZvaWQgR2FtZXBhZHNHdGs6OnVwZGF0ZUdhbWVwYWRMaXN0KEdhbWVwYWRMaXN0KiBp
bnRvKQoreworICAgIEFTU0VSVChtX3Nsb3RzLnNpemUoKSA9PSBpbnRvLT5sZW5ndGgoKSk7CisK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zbG90cy5zaXplKCk7IGkrKykgeworICAg
ICAgICBpZiAobV9zbG90c1tpXS5nZXQoKSAmJiBtX3Nsb3RzW2ldLT5jb25uZWN0ZWQoKSkgewor
ICAgICAgICAgICAgR2FtZXBhZERldmljZUd0ayogZ2FtZXBhZERldmljZSA9IG1fc2xvdHNbaV0u
Z2V0KCk7CisgICAgICAgICAgICBSZWZQdHI8R2FtZXBhZD4gZ2FtZXBhZCA9IGludG8tPml0ZW0o
aSk7CisgICAgICAgICAgICBpZiAoIWdhbWVwYWQpCisgICAgICAgICAgICAgICAgZ2FtZXBhZCA9
IEdhbWVwYWQ6OmNyZWF0ZSgpOworCisgICAgICAgICAgICBnYW1lcGFkLT5pbmRleChpKTsKKyAg
ICAgICAgICAgIGdhbWVwYWQtPmlkKGdhbWVwYWREZXZpY2UtPmlkKCkpOworICAgICAgICAgICAg
Z2FtZXBhZC0+dGltZXN0YW1wKGdhbWVwYWREZXZpY2UtPnRpbWVzdGFtcCgpKTsKKyAgICAgICAg
ICAgIGdhbWVwYWQtPmF4ZXMoZ2FtZXBhZERldmljZS0+YXhlc0NvdW50KCksIGdhbWVwYWREZXZp
Y2UtPmF4ZXNEYXRhKCkpOworICAgICAgICAgICAgZ2FtZXBhZC0+YnV0dG9ucyhnYW1lcGFkRGV2
aWNlLT5idXR0b25zQ291bnQoKSwgZ2FtZXBhZERldmljZS0+YnV0dG9uc0RhdGEoKSk7CisKKyAg
ICAgICAgICAgIGludG8tPnNldChpLCBnYW1lcGFkKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBpbnRvLT5zZXQoaSwgMCk7CisgICAgfQorfQorCit2b2lkIEdhbWVwYWRzR3RrOjpvblVF
dmVudENhbGxiYWNrKEdVZGV2Q2xpZW50KiB1ZGV2Q2xpZW50LCBnY2hhciogYWN0aW9uLCBHVWRl
dkRldmljZSogZGV2aWNlLCBncG9pbnRlciBkYXRhKQoreworICAgIGlmICghaXNHYW1lcGFkRGV2
aWNlKGRldmljZSkpCisgICAgICAgIHJldHVybjsKKworICAgIEdhbWVwYWRzR3RrKiBnYW1lcGFk
c0d0ayA9IHJlaW50ZXJwcmV0X2Nhc3Q8R2FtZXBhZHNHdGsqPihkYXRhKTsKKyAgICBTdHJpbmcg
ZGV2aWNlRmlsZSA9IFN0cmluZzo6ZnJvbVVURjgoZ191ZGV2X2RldmljZV9nZXRfZGV2aWNlX2Zp
bGUoZGV2aWNlKSk7CisKKyAgICBpZiAoIWdfc3RyY21wMChhY3Rpb24sICJhZGQiKSkKKyAgICAg
ICAgZ2FtZXBhZHNHdGstPnJlZ2lzdGVyRGV2aWNlKGRldmljZUZpbGUpOworICAgIGVsc2UgaWYg
KCFnX3N0cmNtcDAoYWN0aW9uLCAicmVtb3ZlIikpCisgICAgICAgIGdhbWVwYWRzR3RrLT51bnJl
Z2lzdGVyRGV2aWNlKGRldmljZUZpbGUpOworfQorCitnYm9vbGVhbiBHYW1lcGFkc0d0azo6aXNH
YW1lcGFkRGV2aWNlKEdVZGV2RGV2aWNlKiBkZXZpY2UpCit7CisgICAgY29uc3QgZ2NoYXIqIGRl
dmljZUZpbGUgPSBnX3VkZXZfZGV2aWNlX2dldF9kZXZpY2VfZmlsZShkZXZpY2UpOworICAgIGNv
bnN0IGdjaGFyKiBzeXNmc1BhdGggPSBnX3VkZXZfZGV2aWNlX2dldF9zeXNmc19wYXRoKGRldmlj
ZSk7CisgICAgaWYgKCFkZXZpY2VGaWxlIHx8ICFzeXNmc1BhdGgpCisgICAgICAgIHJldHVybiBG
QUxTRTsKKworICAgIGlmICghZ191ZGV2X2RldmljZV9oYXNfcHJvcGVydHkoZGV2aWNlLCAiSURf
SU5QVVQiKSB8fCAhZ191ZGV2X2RldmljZV9oYXNfcHJvcGVydHkoZGV2aWNlLCAiSURfSU5QVVRf
Sk9ZU1RJQ0siKSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgcmV0dXJuIGdfc3RyX2hh
c19wcmVmaXgoZGV2aWNlRmlsZSwgIi9kZXYvaW5wdXQvanMiKTsKK30KKwordm9pZCBzYW1wbGVH
YW1lcGFkcyhHYW1lcGFkTGlzdCogaW50bykKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEdh
bWVwYWRzR3RrLCBnYW1lcGFkc0d0aywgKGludG8tPmxlbmd0aCgpKSk7CisgICAgZ2FtZXBhZHNH
dGsudXBkYXRlR2FtZXBhZExpc3QoaW50byk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkxYzk2ZjQ0
ZGM3ZjA3NGRmNGZjZTMxZTYzNzVlMzUxYTJlNTQ1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAKQEAgLTAsMCAr
MSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBaYW4gRG9iZXJzZWsgPHphbmRvYmVy
c2VrQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Ogor
ICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAq
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNICisgKiBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkdhbWVwYWREZXZpY2VMaW51eC5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRl
IDxmY250bC5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHYW1lcGFkRGV2aWNlTGludXg6Okdh
bWVwYWREZXZpY2VMaW51eChTdHJpbmcgZGV2aWNlRmlsZSkKKyAgICA6IG1fZmlsZURlc2NyaXB0
b3IoLTEpCisgICAgLCBtX2Nvbm5lY3RlZChmYWxzZSkKKyAgICAsIG1fbGFzdFRpbWVzdGFtcCgw
KQoreworICAgIC8vIEZJWE1FOiBMb2cgZXJyb3JzIHdoZW4gcmV0dXJuaW5nIGVhcmx5LgorICAg
IG1fZmlsZURlc2NyaXB0b3IgPSBvcGVuKGRldmljZUZpbGUudXRmOCgpLmRhdGEoKSwgT19SRE9O
TFkgfCBPX05PTkJMT0NLKTsKKyAgICBpZiAobV9maWxlRGVzY3JpcHRvciA9PSAtMSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY2hhciBkZXZpY2VOYW1lWzEwMjRdOworICAgIGlmIChpb2N0bCht
X2ZpbGVEZXNjcmlwdG9yLCBKU0lPQ0dOQU1FKHNpemVvZihkZXZpY2VOYW1lKSksIGRldmljZU5h
bWUpIDwgMCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZGV2aWNlTmFtZSA9IFN0cmluZyhkZXZp
Y2VOYW1lKS5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKKworICAgIHVpbnQ4X3QgbnVtYmVyT2ZBeGVz
OworICAgIHVpbnQ4X3QgbnVtYmVyT2ZCdXR0b25zOworICAgIGlmIChpb2N0bChtX2ZpbGVEZXNj
cmlwdG9yLCBKU0lPQ0dBWEVTLCAmbnVtYmVyT2ZBeGVzKSA8IDAgfHwgaW9jdGwobV9maWxlRGVz
Y3JpcHRvciwgSlNJT0NHQlVUVE9OUywgJm51bWJlck9mQnV0dG9ucykgPCAwKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9heGVzLmZpbGwoMC4wLCBudW1iZXJPZkF4ZXMpOworICAgIG1fYnV0dG9u
cy5maWxsKDAuMCwgbnVtYmVyT2ZCdXR0b25zKTsKK30KKworR2FtZXBhZERldmljZUxpbnV4Ojp+
R2FtZXBhZERldmljZUxpbnV4KCkKK3sKKyAgICBpZiAobV9maWxlRGVzY3JpcHRvciAhPSAtMSkK
KyAgICAgICAgY2xvc2UobV9maWxlRGVzY3JpcHRvcik7Cit9CisKK3ZvaWQgR2FtZXBhZERldmlj
ZUxpbnV4Ojp1cGRhdGVGb3JFdmVudChzdHJ1Y3QganNfZXZlbnQgZXZlbnQpCit7CisgICAgaWYg
KCEoZXZlbnQudHlwZSAmIEpTX0VWRU5UX0FYSVMgfHwgZXZlbnQudHlwZSAmIEpTX0VWRU5UX0JV
VFRPTikpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE1hcmsgdGhlIGRldmljZSBhcyBjb25u
ZWN0ZWQgb25seSBpZiBpdCBpcyBub3QgeWV0IGNvbm5lY3RlZCwgdGhlIGV2ZW50IGlzIG5vdCBh
biBpbml0aWFsaXphdGlvbgorICAgIC8vIGFuZCB0aGUgdmFsdWUgaXMgbm90IDAgKGluZGljYXRp
bmcgYSBnZW51aW5lIGludGVyYWN0aW9uIHdpdGggdGhlIGRldmljZSkuCisgICAgaWYgKCFtX2Nv
bm5lY3RlZCAmJiAhKGV2ZW50LnR5cGUgJiBKU19FVkVOVF9JTklUKSAmJiBldmVudC52YWx1ZSkK
KyAgICAgICAgbV9jb25uZWN0ZWQgPSB0cnVlOworCisgICAgaWYgKGV2ZW50LnR5cGUgJiBKU19F
VkVOVF9BWElTKQorICAgICAgICBtX2F4ZXNbZXZlbnQubnVtYmVyXSA9IG5vcm1hbGl6ZUF4aXNW
YWx1ZShldmVudC52YWx1ZSk7CisgICAgZWxzZSBpZiAoZXZlbnQudHlwZSAmIEpTX0VWRU5UX0JV
VFRPTikKKyAgICAgICAgbV9idXR0b25zW2V2ZW50Lm51bWJlcl0gPSBub3JtYWxpemVCdXR0b25W
YWx1ZShldmVudC52YWx1ZSk7CisKKyAgICBtX2xhc3RUaW1lc3RhbXAgPSBldmVudC50aW1lOwor
fQorCitmbG9hdCBHYW1lcGFkRGV2aWNlTGludXg6Om5vcm1hbGl6ZUF4aXNWYWx1ZShzaG9ydCB2
YWx1ZSkKK3sKKyAgICAvLyBOb3JtYWxpemUgZnJvbSByYW5nZSBbLTMyNzY3LCAzMjc2N10gaW50
byByYW5nZSBbLTEuMCwgMS4wXQorICAgIHJldHVybiB2YWx1ZSAvIDMyNzY3LjBmOworfQorCitm
bG9hdCBHYW1lcGFkRGV2aWNlTGludXg6Om5vcm1hbGl6ZUJ1dHRvblZhbHVlKHNob3J0IHZhbHVl
KQoreworICAgIC8vIE5vcm1hbGl6ZSBmcm9tIHJhbmdlIFswLCAxXSBpbnRvIHJhbmdlIFswLjAs
IDEuMF0KKyAgICByZXR1cm4gdmFsdWUgLyAxLjBmOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ4NWU4M2E5
Y2VjYzMzMjc2YTgwMDNkZmEwNmU1NjEzZDYzYzM3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oCkBAIC0wLDAgKzEs
NzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNl
a0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAq
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSAorICogREFNQUdFLgorICovCisKKyNpZm5kZWYgR2FtZXBhZERldmljZUxpbnV4X2gKKyNk
ZWZpbmUgR2FtZXBhZERldmljZUxpbnV4X2gKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5j
bHVkZSA8bGludXgvam95c3RpY2suaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
R2FtZXBhZERldmljZUxpbnV4IHsKK3B1YmxpYzoKKyAgICBib29sIGNvbm5lY3RlZCgpIHsgcmV0
dXJuIG1fY29ubmVjdGVkOyB9OworCisgICAgU3RyaW5nIGlkKCkgeyByZXR1cm4gbV9kZXZpY2VO
YW1lOyB9CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHRpbWVzdGFtcCgpIHsgcmV0dXJuIG1fbGFz
dFRpbWVzdGFtcDsgfQorCisgICAgdW5zaWduZWQgYXhlc0NvdW50KCkgeyByZXR1cm4gbV9heGVz
LnNpemUoKTsgfQorICAgIGZsb2F0KiBheGVzRGF0YSgpIHsgcmV0dXJuIG1fYXhlcy5kYXRhKCk7
IH0KKworICAgIHVuc2lnbmVkIGJ1dHRvbnNDb3VudCgpIHsgcmV0dXJuIG1fYnV0dG9ucy5zaXpl
KCk7IH0KKyAgICBmbG9hdCogYnV0dG9uc0RhdGEoKSB7IHJldHVybiBtX2J1dHRvbnMuZGF0YSgp
OyB9CisKK3Byb3RlY3RlZDoKKyAgICBHYW1lcGFkRGV2aWNlTGludXgoU3RyaW5nIGRldmljZUZp
bGUpOworICAgIH5HYW1lcGFkRGV2aWNlTGludXgoKTsKKworICAgIHZvaWQgdXBkYXRlRm9yRXZl
bnQoc3RydWN0IGpzX2V2ZW50KTsKKyAgICBpbnQgbV9maWxlRGVzY3JpcHRvcjsKKworcHJpdmF0
ZToKKyAgICBmbG9hdCBub3JtYWxpemVBeGlzVmFsdWUoc2hvcnQgdmFsdWUpOworICAgIGZsb2F0
IG5vcm1hbGl6ZUJ1dHRvblZhbHVlKHNob3J0IHZhbHVlKTsKKworICAgIGJvb2wgbV9jb25uZWN0
ZWQ7CisgICAgU3RyaW5nIG1fZGV2aWNlTmFtZTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9s
YXN0VGltZXN0YW1wOworCisgICAgVmVjdG9yPGZsb2F0PiBtX2F4ZXM7CisgICAgVmVjdG9yPGZs
b2F0PiBtX2J1dHRvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoR0FNRVBBRCkKKworI2VuZGlmIC8vIEdhbWVwYWREZXZpY2VMaW51eF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IGYyNGM3YTk2N2QxNDkxNTM0MTFkOGMwNjlhYTQyZWRi
MTI4NjdiY2EuLmUzZjc4NDZlOTk1MWNjMDJiZWRkYzEzMTEzZTQ5YmQ5MzU5MGVhZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC04Nyw2ICs4Nyw3IEBAIGxpYndlYmtpdGd0a19AV0VC
S0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9s
YV9MSUJBCiAJJChFTkNIQU5UX0xJQlMpIFwKIAkkKEZSRUVUWVBFX0xJQlMpIFwKIAkkKEdBSUxf
TElCUykgXAorCSQoR0FNRVBBRF9MSUJTKSBcCiAJJChHRU9DTFVFX0xJQlMpIFwKIAkkKEdMSUJf
TElCUykgXAogCSQoR1NUUkVBTUVSX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggMDE2
ZDY4MTk3ZjZiMTlmODdkZmMyYzZlNWE0YzQxYWEwOWI5MGRmMS4uMTVhNjlmOTczMzlkYzFjMDQ5
NTE5Yzg5ODdhZDZiZjE3YjhkM2FmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTE2MCw2ICsx
NjAsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJL
SVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQgogCSQoQ09WRVJBR0VfTERGTEFHUykgXAog
CSQoRU5DSEFOVF9MSUJTKSBcCiAJJChHQUlMX0xJQlMpIFwKKwkkKEdBTUVQQURfTElCUykgXAog
CSQoR0VPQ0xVRV9MSUJTKSBcCiAJJChHTElCX0xJQlMpIFwKIAkkKEdTVFJFQU1FUl9MSUJTKSBc
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjk4
MzJmNzY5NWMwOGYzZDIyNmE2ZjIzMjkyNWQ3MzU2Njc1NmVmMy4uYzFiNWQzNzJiYjE5MzNiMTkz
MDg4MTVkNzIyNDc2ZTM0NTE2YzJmNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA2LTIwICBaYW4gRG9iZXJz
ZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0d0a10gQWRkIHN1cHBvcnQg
Zm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFbmFibGUgdGhlIGdhbWVwYWQgc3VwcG9ydCBmb3IgdGhlIEdUSyBwb3J0Lgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAyMDEyLTA2
LTIwICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkIHRyaXZpYWwgcGVybWlzc2lvbnMgZml4LgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4IDlmYmFlM2VjNzRjMDEyYWUzZTEwYjhiODJlNzZkYTY4
Y2QxZGNmMjAuLjk4OTczMmQyYmUzYmFiNmUyYWYzNTlhNDI1MGM2OWZjNTNiMTA3NTcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTIxNCw3ICsyMTQsNyBAQCBt
eSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9GVUxMU0NSRUVOX0FQSSIs
IGRlZmF1bHQgPT4gKGlzQXBwbGVNYWNXZWJLaXQoKSB8fCBpc0VmbCgpIHx8IGlzR3RrKCkgfHwg
aXNCbGFja0JlcnJ5KCkgfHwgaXNRdCgpKSwgdmFsdWUgPT4gXCRmdWxsc2NyZWVuQVBJU3VwcG9y
dCB9LAogCiAgICAgeyBvcHRpb24gPT4gImdhbWVwYWQiLCBkZXNjID0+ICJUb2dnbGUgR2FtZXBh
ZCBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0dBTUVQQUQiLCBkZWZhdWx0ID0+
IDAsIHZhbHVlID0+IFwkZ2FtZXBhZFN1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxF
X0dBTUVQQUQiLCBkZWZhdWx0ID0+IGlzR3RrKCksIHZhbHVlID0+IFwkZ2FtZXBhZFN1cHBvcnQg
fSwKIAogICAgIHsgb3B0aW9uID0+ICJnZW9sb2NhdGlvbiIsIGRlc2MgPT4gIlRvZ2dsZSBHZW9s
b2NhdGlvbiBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0dFT0xPQ0FUSU9OIiwg
ZGVmYXVsdCA9PiAoaXNBcHBsZVdlYktpdCgpIHx8IGlzR3RrKCkgfHwgaXNCbGFja0JlcnJ5KCkp
LCB2YWx1ZSA9PiBcJGdlb2xvY2F0aW9uU3VwcG9ydCB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3Rr
L2poYnVpbGQubW9kdWxlcyBiL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKaW5kZXggMzMwNmQ3
NGVlNzE4M2JlYzU3NzczZmM4YjA2ZjljNDljM2NhYzllYy4uNzg1OGEwMTg0ZjMxOTQ0ODkxN2Jh
NjM1MTFiMjM5NzI1MDdjOGE2NyAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxl
cworKysgYi9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCkBAIC0xNiw2ICsxNiw3IEBACiAgICAg
ICA8ZGVwIHBhY2thZ2U9ImdsaWItbmV0d29ya2luZyIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJn
bm9tZS1pY29uLXRoZW1lIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImxpYnNvdXAiLz4KKyAgICAg
IDxkZXAgcGFja2FnZT0iZ3VkZXYiLz4KICAgICAgIDxkZXAgcGFja2FnZT0iYXQtc3BpMi1jb3Jl
Ii8+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImF0LXNwaTItYXRrIi8+CiAgICAgPC9kZXBlbmRlbmNp
ZXM+CkBAIC0zNyw2ICszOCw4IEBACiAgICAgICBocmVmPSJodHRwOi8vY2Fpcm9ncmFwaGljcy5v
cmciLz4KICAgPHJlcG9zaXRvcnkgdHlwZT0idGFyYmFsbCIgbmFtZT0iZnJlZWRlc2t0b3Aub3Jn
IgogICAgICAgaHJlZj0iaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmciLz4KKyAgPHJlcG9zaXRv
cnkgdHlwZT0idGFyYmFsbCIgbmFtZT0ia2VybmVsLm9yZyIKKyAgICAgIGhyZWY9Imh0dHA6Ly93
d3cua2VybmVsLm9yZyIvPgogCiAgIDxhdXRvdG9vbHMgaWQ9Im1ha2UiIGF1dG9nZW4tc2g9ImNv
bmZpZ3VyZSI+CiAgICAgPGJyYW5jaCByZXBvPSJmdHAuZ251Lm9yZyIKQEAgLTE4NSw2ICsxODgs
MTUgQEAKICAgICA8L2JyYW5jaD4KICAgPC9hdXRvdG9vbHM+CiAKKyAgPGF1dG90b29scyBpZD0i
Z3VkZXYiIGF1dG9nZW4tc2g9ImNvbmZpZ3VyZSIKKyAgICAgICAgICAgICBhdXRvZ2VuYXJncz0i
LS1kaXNhYmxlLWludHJvc3BlY3Rpb24iPgorICAgIDxicmFuY2ggbW9kdWxlPSJwdWIvbGludXgv
dXRpbHMva2VybmVsL2hvdHBsdWcvdWRldi0xNzUudGFyLnh6IiB2ZXJzaW9uPSIxNzUiCisgICAg
ICAgICAgICByZXBvPSJrZXJuZWwub3JnIgorICAgICAgICAgICAgaGFzaD0ic2hhMjU2OjZlN2M3
MzMwYThmN2ExZDExOGUzMzMzODk0MTM4MWZhYTAwNTc1OTkyMWNhYTI0MTUzNWQ2OTMwYmIxMjE0
MGYiCisgICAgICAgICAgICBtZDVzdW09IjEzNTk0ZWFjYzFmYjA3NmVkOTEwYmZkODgyM2ZkODM1
Ij4KKyAgICA8L2JyYW5jaD4KKyAgPC9hdXRvdG9vbHM+CisKICAgPGF1dG90b29scyBpZD0iYXQt
c3BpMi1jb3JlIiAKICAgICAgICAgICAgICBhdXRvZ2VuYXJncz0iLS1kaXNhYmxlLWludHJvc3Bl
Y3Rpb24iPgogICAgIDxicmFuY2ggbW9kdWxlPSJwdWIvR05PTUUvc291cmNlcy9hdC1zcGkyLWNv
cmUvMi4yL2F0LXNwaTItY29yZS0yLjIuMS50YXIueHoiIHZlcnNpb249IjIuMi4xIgpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDkxZjE1ZTM2YjkxNGE5ZjIyOGRlZjQ2
ZDU3MTcxYTczZDQxY2U3NDguLmU3N2ZkYmNhYzNkNGJkMTQwZjFlNGE2NzhlZGU1NTZjNWIyOTcz
ZTIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAxMi0wNi0yMCAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisg
ICAgICAgIFtHdGtdIEFkZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NTAzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT25seSBlbmFibGUgdGhlIEdhbWVw
YWQgZmVhdHVyZSBvbiBMaW51eCBhcyBzdXBwb3J0CisgICAgICAgIGZvciBvdGhlciBvcGVyYXRp
bmcgc3lzdGVtcyBpcyBub3QgcHJlc2VudC4KKworICAgICAgICBDaGVjayBmb3IgdGhlIEdJTyBV
bml4IGFuZCBHVWRldiBkZXBlbmRlbmNpZXMgd2hlbiB0aGUKKyAgICAgICAgR2FtZXBhZCBmZWF0
dXJlIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKiBjb25maWd1cmUuYWM6CisKIDIwMTItMDYtMTgg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3Ry
ZWFtZXJdIDAuMTEgdmlkZW8tc2luawpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmln
dXJlLmFjCmluZGV4IDk1OTU3YjUzOGYyMzczNmJkYmQyY2NjMWRmZmEyNWYyYmEyZjgyMmMuLmQ5
Y2FhNzUyOGM4MjVkYjVmZWZmMWVkOTQzNjJkODMzNTNmYzJjMzIgMTAwNjQ0Ci0tLSBhL2NvbmZp
Z3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTY1Myw2ICs2NTMsMTEgQEAgQUNfQVJHX0VO
QUJMRShnYW1lcGFkLAogICAgICAgICAgICAgICBbXSxbZW5hYmxlX2dhbWVwYWQ9Im5vIl0pCiBB
Q19NU0dfUkVTVUxUKFskZW5hYmxlX2dhbWVwYWRdKQogCitpZiB0ZXN0ICIkZW5hYmxlX2dhbWVw
YWQiID0gInllcyIgJiYgdGVzdCAiJG9zX2xpbnV4IiA9IG5vOyB0aGVuCisgICBBQ19NU0dfV0FS
TihbR2FtZXBhZCBzdXBwb3J0IGlzIG9ubHkgYXZhaWxhYmxlIG9uIExpbnV4LiBEaXNhYmxpbmcg
R2FtZXBhZCBzdXBwb3J0Ll0pCisgICBlbmFibGVfZ2FtZXBhZD1ubzsKK2ZpCisKICMgY2hlY2sg
d2hldGhlciB0byBidWlsZCB3aXRoIGRhdGEgdHJhbnNmZXIgaXRlbXMgc3VwcG9ydAogQUNfTVNH
X0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBkYXRhIHRyYW5zZmVyIGl0ZW1zIHN1
cHBvcnRdKQogQUNfQVJHX0VOQUJMRShkYXRhX3RyYW5zZmVyX2l0ZW1zLApAQCAtMTI3Niw2ICsx
MjgxLDEzIEBAIGlmIHRlc3QgIiRlbmFibGVfd2Via2l0MiIgPSAieWVzIjsgdGhlbgogICAgQUNf
U1VCU1QoW0FUU1BJMl9MSUJTXSkKIGZpCiAKK2lmIHRlc3QgIiRlbmFibGVfZ2FtZXBhZCIgPSAi
eWVzIjsgdGhlbgorICAgUEtHX0NIRUNLX01PRFVMRVMoW0dBTUVQQURdLCBbZ2lvLXVuaXgtMi4w
IGd1ZGV2LTEuMF0pCisKKyAgIEFDX1NVQlNUKEdBTUVQQURfQ0ZMQUdTKQorICAgQUNfU1VCU1Qo
R0FNRVBBRF9MSUJTKQorZmkKKwogIyBjaGVjayBmb3IgY29kZSBjb3ZlcmFnZSBzdXBwb3J0CiBp
ZiB0ZXN0ICIkZW5hYmxlX2NvdmVyYWdlIiA9ICJ5ZXMiOyB0aGVuCiAgICBDT1ZFUkFHRV9DRkxB
R1M9Ii1NRCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149306</attachid>
            <date>2012-06-25 09:21:34 -0700</date>
            <delta_ts>2012-06-25 09:52:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87503-20120625182133.patch</filename>
            <type>text/plain</type>
            <size>32718</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ1YWI0NjlmZDYzODY2
ODRlYmNiYWFlNjgzOGUzOTJmYWYzOWExMy4uZThhNDBhYjBlYzI0N2FhZmQ4N2U4YTQwODExYzcw
MWQwZDc5MmQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA2LTI1ICBaYW4g
RG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0d0a10gQWRkIHN1
cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIEdhbWVwYWQgZmVhdHVyZSBvbiB0
aGUgR1RLIHBvcnQuCisKKyAgICAgICAgVGhlIHN1cHBvcnQgaXMgYXZhaWxhYmxlIG9ubHkgb24g
TGludXgsIHdpdGggZWFjaCBnYW1lcGFkIGRldmljZSBiZWluZyBwcmVzZW50ZWQKKyAgICAgICAg
dGhyb3VnaCBhIEdhbWVwYWREZXZpY2VMaW51eCBvYmplY3QuIFRoZSBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGlzIGNsYXNzIHJlbGllcyBvbgorICAgICAgICB0aGUgTGludXgga2VybmVsIGpveXN0aWNr
IEFQSS4KKworICAgICAgICBHYW1lcGFkIGRldmljZXMgYXJlIHJlY29nbml6ZWQgdGhyb3VnaCB0
aGUgR2FtZXBhZHNHdGsgY2xhc3MsIG9mIHdoaWNoIGltcGxlbWVudGF0aW9uCisgICAgICAgIGlz
IGJhc2VkIG9uIEdVZGV2LiBUaGlzIHdheSBkZXZpY2VzIGFyZSBwcm9wZXJseSByZWdpc3RlcmVk
IG9uIGNvbm5lY3Rpb24gYXMgb2JqZWN0cyBvZgorICAgICAgICB0aGUgR2FtZXBhZERldmljZUd0
ayBjbGFzcyB3aGljaCBpbmhlcml0cyBHYW1lcGFkRGV2aWNlTGludXguIEdhbWVwYWREZXZpY2VH
dGsgcmVhZHMgdGhlCisgICAgICAgIGpveXN0aWNrIGRhdGEgdGhyb3VnaCBHSU8gcG9sbGFibGUg
c3RyZWFtcyBhbmQgdXBkYXRlcyB0aGUgZGV2aWNlIHN0YXRlIGFjY29yZGluZ2x5LiBUaGUKKyAg
ICAgICAgR2FtZXBhZHNHdGsgb2JqZWN0IGlzIHRoZW4gcG9sbGVkIGZvciBnYW1lcGFkcyBkYXRh
IHRocm91Z2ggdGhlIHNhbXBsZUdhbWVwYWRzIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVz
dHMgLSB0ZXN0cyBhbHJlYWR5IGV4aXN0IGJ1dCByZXF1aXJlIGFkZGl0aW9uYWwgdGVzdGluZyBp
bmZyYXN0cnVjdHVyZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmls
ZS5hbToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDogQWRkIHRoZSBqc0Fy
cmF5IG1ldGhvZCB0aGF0IG9wZXJhdGVzIG9uIGEgVmVjdG9yIG9mIGZsb2F0cy4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6anNBcnJheSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL0dhbWVwYWRzR3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKEdhbWVwYWREZXZpY2VHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUd0
azo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VHdGs6OkdhbWVwYWRE
ZXZpY2VHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUd0azo6fkdhbWVwYWRE
ZXZpY2VHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUd0azo6cmVhZENhbGxi
YWNrKToKKyAgICAgICAgKEdhbWVwYWRzR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRz
R3RrOjpHYW1lcGFkc0d0ayk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6fkdhbWVw
YWRzR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzR3RrOjpyZWdpc3RlckRldmljZSk6
CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6dW5yZWdpc3RlckRldmljZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6dXBkYXRlR2FtZXBhZExpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R2FtZXBhZHNHdGs6Om9uVUV2ZW50Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZXBhZHNHdGs6OmlzR2FtZXBhZERldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW1w
bGVHYW1lcGFkcyk6CisgICAgICAgICogcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVw
YWREZXZpY2VMaW51eDo6R2FtZXBhZERldmljZUxpbnV4KToKKyAgICAgICAgKFdlYkNvcmU6Okdh
bWVwYWREZXZpY2VMaW51eDo6fkdhbWVwYWREZXZpY2VMaW51eCk6CisgICAgICAgIChXZWJDb3Jl
OjpHYW1lcGFkRGV2aWNlTGludXg6OnVwZGF0ZUZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VMaW51eDo6bm9ybWFsaXplQXhpc1ZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdhbWVwYWREZXZpY2VMaW51eDo6bm9ybWFsaXplQnV0dG9uVmFsdWUpOgorICAgICAgICAq
IHBsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoR2FtZXBhZERldmljZUxpbnV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VMaW51eDo6Y29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVw
YWREZXZpY2VMaW51eDo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4
Ojp0aW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4OjpheGVz
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4OjpheGVzRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTGludXg6OmJ1dHRvbnNDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTGludXg6OmJ1dHRvbnNEYXRhKToKKwogMjAx
Mi0wNi0yNSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAg
ICAgICBBZGQgc3RhdGljIHF1YWxpZmllciB0byBHcmFwaGljc0NvbnRleHQzRDo6ZXh0cmFjdElt
YWdlRGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBmMjQ3OGQ1YTIzM2RhNWMwODhlMDg5YmZmYjFk
ODA5NzViNGU5ODNjLi4zZWQ2MWU5YWE0ZjRmZmE0ZWU2MWM0NGJiOWQyYjc3Yjk4MGY5NGE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDYtMjUgIFphbiBEb2JlcnNl
ayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKworICAgICAgICBbR3RrXSBBZGQgc3VwcG9ydCBm
b3IgdGhlIEdhbWVwYWQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NzUwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCB0aGUgR2FtZXBhZCBmZWF0dXJlIGRlcGVuZGVuY2llcyBsaWJyYXJpZXMg
dG8gdGhlIExJQkFERAorICAgICAgICBsaXN0IGZvciB0aGUgbGlid2Via2l0Z3RrIGxpYnJhcnku
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKwogMjAxMi0wNi0yNSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVXBk
YXRlIE5FV1MgYW5kIGNvbmZpZ3VyZS5hYyBmb3IgMS45LjQgcmVsZWFzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGQ4Yzk3NGJkYzE1YzQ4M2ExZDYxNGJjODhlMGNlMGRhMDY1NzY0YzQuLmM0Yjk0MjVlM2JkZWIy
Zjg1YWNmMTQ4ODU4YmQ0ODhkNTA1NmRjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0wNi0yNSAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAg
ICAgIFtHdGtdIEFkZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NTAzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBHYW1lcGFkIGZlYXR1cmUg
ZGVwZW5kZW5jaWVzIGxpYnJhcmllcyB0byB0aGUgTElCQURECisgICAgICAgIGxpc3QgZm9yIHRo
ZSBsaWJ3ZWJraXRndGsyIGxpYnJhcnkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKwog
MjAxMi0wNi0yNSAgWW91bmdUYWVjayBTb25nICA8eW91bmd0YWVjay5zb25nQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtXSzJdW1F0XVtFRkxdIE1vdmUgTGF5ZXJCYWNraW5nU3RvcmUgaW50byBj
b21tb24gZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGYzMjgwNzcyY2QwNGM2NjFm
OTlhMDA2NmU0YTA0ZjQ3ZWY3YjZjNDguLmVhZTBhNzEzYjIzZTc1NzQ4YzIyYmJjNTVjMzk0NmEw
NTc5MTg5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMiw2ICsxMiw3IEBAIHdlYmNvcmVf
Y3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1
ZGUvR0xTTEFORyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbSBcCisJLUkkKHNyY2RpcikvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYiBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbSBcCkBAIC02Nyw2ICs2OCw3IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZyBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYiBcCisJLUkkKHNyY2Rpcikv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2sgXApAQCAtODY2LDYgKzg2OCw3IEBAIERlcml2ZWRTb3VyY2VzL0FO
R0xFL2dsc2xhbmdfdGFiLmg6IERlcml2ZWRTb3VyY2VzL0FOR0xFL2dsc2xhbmdfdGFiLmNwcAog
CiBJRExfUEFUSCA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAorICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9nYW1lcGFkIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2Vv
bG9jYXRpb24gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbSBcCkBAIC05NjEsNiArOTY0LDcgQEAgbGliV2ViQ29y
ZV9sYV9DUFBGTEFHUyA9IFwKIAkkKENMVVRURVJfQ0ZMQUdTKSBcCiAJJChDT1ZFUkFHRV9DRkxB
R1MpIFwKIAkkKEVOQ0hBTlRfQ0ZMQUdTKSBcCisJJChHQU1FUEFEX0NGTEFHUykgXAogCSQoR0VP
Q0xVRV9DRkxBR1MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBc
CkBAIC0xMDMyLDYgKzEwMzYsNyBAQCBsaWJXZWJDb3JlR3RrX2xhX0NQUEZMQUdTID0gXAogCiBF
WFRSQV9ESVNUICs9IFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vKi5pZGwpIFwKKwkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dhbWVwYWQvKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvKi5pZGwpIFwKIAkkKHNoZWxs
IGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtLyouaWRsKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA0ODYxZjgyYWRkM2FkMTg3ZjAxM2Ux
OTZlZjFkNzEzNDE0NjcxOGQxLi4zZWQyNDc3ZDExODg3ODU5YTNjZDVlMmM1ODA2NmU2NzZhZjVi
NmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5Miw2ICsxOTIsMTAgQEAg
d2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmxv
YXQzMkFycmF5LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGbG9hdDY0QXJyYXkuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmxvYXQ2NEFycmF5LmggXAorCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNHYW1lcGFkLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dhbWVwYWQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dhbWVwYWRMaXN0LmNwcCBc
CisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dhbWVwYWRMaXN0LmggXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNHZW9sb2NhdGlvbi5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHZW9sb2NhdGlvbi5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2VvcG9zaXRpb24u
Y3BwIFwKQEAgLTY3Nyw2ICs2ODEsOSBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvWFBhdGhHcmFtbWFyLmgKIAogZG9tX2JpbmRpbmdfaWRscyAr
PSBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5pZGwgXAorCSQoV2ViQ29y
ZSkvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVz
L2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbi5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9wb3NpdGlvbi5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZp
Z2F0b3JHZW9sb2NhdGlvbi5pZGwgXApAQCAtMTA1Myw2ICsxMDYwLDEyIEBAIHdlYmNvcmVfbW9k
dWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV2Vi
S2l0RmxhZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckNv
bnRleHRGaWxlU3lzdGVtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Ft
ZXBhZC9HYW1lcGFkLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVw
YWQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmNwcCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmggXAorCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuaCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIFwKQEAgLTMxNTgs
NiArMzE3MSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN5c3RlbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GbG9hdENvbnZlcnNp
b24uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRnJhY3Rpb25hbExheW91dFVuaXQuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2FtZXBhZHMuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vSGFzaFRvb2xzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hpc3RvZ3Jh
bVN1cHBvcnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IaXN0b2dyYW1TdXBwb3J0
LmggXApAQCAtMzQwNiw2ICszNDIwLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0Vycm9yc0d0ay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBh
ZHNHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS1VSTEd0ay5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2dnaW5nR3RrLmNwcCBcCkBAIC0zNDY2LDYgKzM0ODEsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFu
ZGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9EZXByZWNhdGVk
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCmluZGV4IGM3MDI1Mjg2ZDBmYWU3
NGUyNWFlOGUyZDMxMDcyMTU3OTVhMzc4ZjUuLmZhMDQ1NDIwM2NiNmNhYjNiYzExNjg2OGRhOGRj
NjNiOWI2N2VjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
R05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVt
YWtlZmlsZS5hbQpAQCAtNjYsNiArNjYsMTAgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfc291cmNl
cyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUZpbGVMaXN0LmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUZpbGVMaXN0UHJpdmF0ZS5oIFwKIAlEZXJp
dmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NRmlsZVByaXZhdGUuaCBcCisJRGVyaXZlZFNvdXJj
ZXMvd2Via2l0L1dlYktpdERPTUdhbWVwYWQuY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQv
V2ViS2l0RE9NR2FtZXBhZExpc3QuY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0
RE9NR2FtZXBhZExpc3RQcml2YXRlLmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRE
T01HYW1lcGFkUHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NR2Vv
bG9jYXRpb24uY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NR2VvbG9jYXRp
b25Qcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01IaXN0b3J5LmNw
cCBcCkBAIC0yOTUsNiArMjk5LDggQEAgd2Via2l0Z3RrX2J1aWx0X2hfYXBpICs9IFwKIAlEZXJp
dmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NQmxvYi5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJr
aXQvV2ViS2l0RE9NRmlsZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NRmls
ZUxpc3QuaCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUdhbWVwYWQuaCBcCisJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUdhbWVwYWRMaXN0LmggXAogCURlcml2ZWRT
b3VyY2VzL3dlYmtpdC9XZWJLaXRET01HZW9sb2NhdGlvbi5oIFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXQvV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0L1dlYktpdERPTUhUTUxBcHBsZXRFbGVtZW50LmggXApAQCAtNDI4LDcgKzQzNCw2IEBAIHdl
YmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9X
ZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb25Qcml2YXRlLmgKIGVuZGlmCiAKLQogaWYg
RU5BQkxFX1dFQl9USU1JTkcKIHdlYmtpdGd0a19idWlsdF9oX2FwaSArPSBcCiAJJCh0b3BfYnVp
bGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01QZXJmb3JtYW5jZS5oIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggZDI3OGE4MDJhYzky
MTA1NDYyZGExYzkxMGQ5ODM5YTI2ZjRkNmMwYi4uYjVhZDNmYjA1OTAyNmQ1NzVlZDk2MjU0YjNm
ZmQxZWViYTdiN2UwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmgKQEAgLTMwNyw2ICszMDcsMTggQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAg
ICAgICAgcmV0dXJuIEpTQzo6Y29uc3RydWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBhcnJh
eSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8PgorICAgIGlubGluZSBKU0M6OkpTVmFsdWUganNB
cnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgVmVjdG9yPGZsb2F0PiYgaXRlcmF0b3IpCisgICAgeworICAgICAgICBKU0M6Ok1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFycmF5OworICAgICAgICBWZWN0b3I8ZmxvYXQ+Ojpjb25zdF9p
dGVyYXRvciBlbmQgPSBpdGVyYXRvci5lbmQoKTsKKworICAgICAgICBmb3IgKFZlY3RvcjxmbG9h
dD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaXRlcmF0b3IuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQorICAgICAgICAgICAgYXJyYXkuYXBwZW5kKEpTQzo6anNOdW1iZXIoKml0KSk7CisKKyAgICAg
ICAgcmV0dXJuIEpTQzo6Y29uc3RydWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBhcnJheSk7
CisgICAgfQorCiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CiAgICAgVmVjdG9yPFQ+IHRvTmF0aXZl
QXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MzkzOTViZWRiZDJkZjlmYTQ3NGExNjc0NjgxNDA2OGU3N2Y5OTRlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcApAQCAtMCwwICsx
LDIyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBaYW4gRG9iZXJzZWsgPHphbmRvYmVy
c2VrQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Ogor
ICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAq
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNICisgKiBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkdhbWVwYWRzLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIkdhbWVwYWRE
ZXZpY2VMaW51eC5oIgorI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCisjaW5jbHVkZSA8Z2lvL2d1
bml4aW5wdXRzdHJlYW0uaD4KKyNpbmNsdWRlIDxndWRldi9ndWRldi5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBHYW1lcGFkRGV2aWNlR3RrIDogcHVibGljIEdhbWVwYWREZXZpY2VMaW51eCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8R2FtZXBhZERldmljZUd0az4gY3JlYXRlKFN0cmlu
ZyBkZXZpY2VGaWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHYW1lcGFk
RGV2aWNlR3RrKGRldmljZUZpbGUpKTsKKyAgICB9CisgICAgfkdhbWVwYWREZXZpY2VHdGsoKTsK
KworcHJpdmF0ZToKKyAgICBHYW1lcGFkRGV2aWNlR3RrKFN0cmluZyBkZXZpY2VGaWxlKTsKKwor
ICAgIHN0YXRpYyBnYm9vbGVhbiByZWFkQ2FsbGJhY2soR09iamVjdCogcG9sbGFibGVTdHJlYW0s
IGdwb2ludGVyIGRhdGEpOworICAgIEdSZWZQdHI8R0lucHV0U3RyZWFtPiBtX2lucHV0U3RyZWFt
OworICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7Cit9OworCitHYW1lcGFkRGV2aWNlR3Rr
OjpHYW1lcGFkRGV2aWNlR3RrKFN0cmluZyBkZXZpY2VGaWxlKQorICAgIDogR2FtZXBhZERldmlj
ZUxpbnV4KGRldmljZUZpbGUpCit7CisgICAgaWYgKG1fZmlsZURlc2NyaXB0b3IgPT0gLTEpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ191bml4X2lu
cHV0X3N0cmVhbV9uZXcobV9maWxlRGVzY3JpcHRvciwgRkFMU0UpKTsKKyAgICBtX3NvdXJjZSA9
IGFkb3B0R1JlZihnX3BvbGxhYmxlX2lucHV0X3N0cmVhbV9jcmVhdGVfc291cmNlKEdfUE9MTEFC
TEVfSU5QVVRfU1RSRUFNKG1faW5wdXRTdHJlYW0uZ2V0KCkpLCAwKSk7CisgICAgZ19zb3VyY2Vf
c2V0X2NhbGxiYWNrKG1fc291cmNlLmdldCgpLCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5j
PihyZWFkQ2FsbGJhY2spLCB0aGlzLCAwKTsKKyAgICBnX3NvdXJjZV9hdHRhY2gobV9zb3VyY2Uu
Z2V0KCksIDApOworfQorCitHYW1lcGFkRGV2aWNlR3RrOjp+R2FtZXBhZERldmljZUd0aygpCit7
CisgICAgaWYgKG1fc291cmNlKQorICAgICAgICBnX3NvdXJjZV9kZXN0cm95KG1fc291cmNlLmdl
dCgpKTsKK30KKworZ2Jvb2xlYW4gR2FtZXBhZERldmljZUd0azo6cmVhZENhbGxiYWNrKEdPYmpl
Y3QqIHBvbGxhYmxlU3RyZWFtLCBncG9pbnRlciBkYXRhKQoreworICAgIEdhbWVwYWREZXZpY2VH
dGsqIGdhbWVwYWREZXZpY2UgPSByZWludGVycHJldF9jYXN0PEdhbWVwYWREZXZpY2VHdGsqPihk
YXRhKTsKKyAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgc3RydWN0IGpzX2V2ZW50IGV2
ZW50OworCisgICAgZ3NzaXplIGxlbiA9IGdfcG9sbGFibGVfaW5wdXRfc3RyZWFtX3JlYWRfbm9u
YmxvY2tpbmcoR19QT0xMQUJMRV9JTlBVVF9TVFJFQU0ocG9sbGFibGVTdHJlYW0pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZldmVu
dCwgc2l6ZW9mKGV2ZW50KSwgMCwgJmVycm9yLm91dFB0cigpKTsKKworICAgIC8vIEZJWE1FOiBQ
cm9wZXJseSBsb2cgdGhlIGVycm9yLgorICAgIC8vIEluIHRoZSBjYXNlIG9mIEdfSU9fRVJST1Jf
V09VTERfQkxPQ0sgZXJyb3IgcmV0dXJuIFRSVUUgdG8gd2FpdCB1bnRpbAorICAgIC8vIHRoZSBz
b3VyY2UgYmVjb21lcyByZWFkYWJsZSBhZ2FpbiBhbmQgRkFMU0Ugb3RoZXJ3aXNlLgorICAgIGlm
IChlcnJvcikKKyAgICAgICAgcmV0dXJuIGdfZXJyb3JfbWF0Y2hlcyhlcnJvci5nZXQoKSwgR19J
T19FUlJPUiwgR19JT19FUlJPUl9XT1VMRF9CTE9DSyk7CisKKyAgICBBU1NFUlQobGVuID09IHNp
emVvZihldmVudCkpOworICAgIGdhbWVwYWREZXZpY2UtPnVwZGF0ZUZvckV2ZW50KGV2ZW50KTsK
KyAgICByZXR1cm4gVFJVRTsKK30KKworY2xhc3MgR2FtZXBhZHNHdGsgeworcHVibGljOgorICAg
IEdhbWVwYWRzR3RrKHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRGV2aWNl
KFN0cmluZyBkZXZpY2VGaWxlKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJEZXZpY2UoU3RyaW5nIGRl
dmljZUZpbGUpOworCisgICAgdm9pZCB1cGRhdGVHYW1lcGFkTGlzdChHYW1lcGFkTGlzdCopOwor
Citwcml2YXRlOgorICAgIH5HYW1lcGFkc0d0aygpOworICAgIHN0YXRpYyB2b2lkIG9uVUV2ZW50
Q2FsbGJhY2soR1VkZXZDbGllbnQqLCBnY2hhciogYWN0aW9uLCBHVWRldkRldmljZSosIGdwb2lu
dGVyIGRhdGEpOworICAgIHN0YXRpYyBnYm9vbGVhbiBpc0dhbWVwYWREZXZpY2UoR1VkZXZEZXZp
Y2UqKTsKKworICAgIFZlY3RvcjxPd25QdHI8R2FtZXBhZERldmljZUd0az4gPiBtX3Nsb3RzOwor
ICAgIEhhc2hNYXA8U3RyaW5nLCBHYW1lcGFkRGV2aWNlR3RrKj4gbV9kZXZpY2VNYXA7CisKKyAg
ICBHUmVmUHRyPEdVZGV2Q2xpZW50PiBtX2d1ZGV2Q2xpZW50OworfTsKKworR2FtZXBhZHNHdGs6
OkdhbWVwYWRzR3RrKHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IG1fc2xvdHMobGVuZ3RoKQorewor
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdWJzeXN0ZW1zW10gPSB7ICJpbnB1dCIsIDAgfTsKKyAg
ICBtX2d1ZGV2Q2xpZW50ID0gYWRvcHRHUmVmKGdfdWRldl9jbGllbnRfbmV3KHN1YnN5c3RlbXMp
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZ3VkZXZDbGllbnQuZ2V0KCksICJ1ZXZlbnQiLCBH
X0NBTExCQUNLKG9uVUV2ZW50Q2FsbGJhY2spLCB0aGlzKTsKKworICAgIEdPd25QdHI8R0xpc3Q+
IGRldmljZXNMaXN0KGdfdWRldl9jbGllbnRfcXVlcnlfYnlfc3Vic3lzdGVtKG1fZ3VkZXZDbGll
bnQuZ2V0KCksIHN1YnN5c3RlbXNbMF0pKTsKKyAgICBmb3IgKEdMaXN0KiBsaXN0SXRlbSA9IGRl
dmljZXNMaXN0LmdldCgpOyBsaXN0SXRlbTsgbGlzdEl0ZW0gPSBnX2xpc3RfbmV4dChsaXN0SXRl
bSkpIHsKKyAgICAgICAgR1VkZXZEZXZpY2UqIGRldmljZSA9IEdfVURFVl9ERVZJQ0UobGlzdEl0
ZW0tPmRhdGEpOworICAgICAgICBTdHJpbmcgZGV2aWNlRmlsZSA9IFN0cmluZzo6ZnJvbVVURjgo
Z191ZGV2X2RldmljZV9nZXRfZGV2aWNlX2ZpbGUoZGV2aWNlKSk7CisgICAgICAgIGlmIChpc0dh
bWVwYWREZXZpY2UoZGV2aWNlKSkKKyAgICAgICAgICAgIHJlZ2lzdGVyRGV2aWNlKGRldmljZUZp
bGUpOworICAgICAgICBnX29iamVjdF91bnJlZihkZXZpY2UpOworICAgIH0KK30KKworR2FtZXBh
ZHNHdGs6On5HYW1lcGFkc0d0aygpCit7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9tYXRjaGVkKG1fZ3VkZXZDbGllbnQuZ2V0KCksIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAs
IDAsIDAsIHRoaXMpOworfQorCit2b2lkIEdhbWVwYWRzR3RrOjpyZWdpc3RlckRldmljZShTdHJp
bmcgZGV2aWNlRmlsZSkKK3sKKyAgICBBU1NFUlQoIW1fZGV2aWNlTWFwLmNvbnRhaW5zKGRldmlj
ZUZpbGUpKTsKKworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG1fc2xvdHMu
c2l6ZSgpOyBpbmRleCsrKSB7CisgICAgICAgIGlmICghbV9zbG90c1tpbmRleF0pIHsKKyAgICAg
ICAgICAgIG1fc2xvdHNbaW5kZXhdID0gR2FtZXBhZERldmljZUd0azo6Y3JlYXRlKGRldmljZUZp
bGUpOworICAgICAgICAgICAgbV9kZXZpY2VNYXAuYWRkKGRldmljZUZpbGUsIG1fc2xvdHNbaW5k
ZXhdLmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIEdhbWVwYWRzR3RrOjp1bnJlZ2lzdGVyRGV2aWNlKFN0cmluZyBkZXZpY2VGaWxlKQorewor
ICAgIEFTU0VSVChtX2RldmljZU1hcC5jb250YWlucyhkZXZpY2VGaWxlKSk7CisKKyAgICBHYW1l
cGFkRGV2aWNlR3RrKiBnYW1lcGFkRGV2aWNlID0gbV9kZXZpY2VNYXAudGFrZShkZXZpY2VGaWxl
KTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IG1fc2xvdHMuZmluZChnYW1lcGFkRGV2aWNlKTsKKyAg
ICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOworCisgICAgbV9zbG90c1tpbmRleF0uY2xlYXIo
KTsKK30KKwordm9pZCBHYW1lcGFkc0d0azo6dXBkYXRlR2FtZXBhZExpc3QoR2FtZXBhZExpc3Qq
IGludG8pCit7CisgICAgQVNTRVJUKG1fc2xvdHMuc2l6ZSgpID09IGludG8tPmxlbmd0aCgpKTsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Nsb3RzLnNpemUoKTsgaSsrKSB7Cisg
ICAgICAgIGlmIChtX3Nsb3RzW2ldLmdldCgpICYmIG1fc2xvdHNbaV0tPmNvbm5lY3RlZCgpKSB7
CisgICAgICAgICAgICBHYW1lcGFkRGV2aWNlR3RrKiBnYW1lcGFkRGV2aWNlID0gbV9zbG90c1tp
XS5nZXQoKTsKKyAgICAgICAgICAgIFJlZlB0cjxHYW1lcGFkPiBnYW1lcGFkID0gaW50by0+aXRl
bShpKTsKKyAgICAgICAgICAgIGlmICghZ2FtZXBhZCkKKyAgICAgICAgICAgICAgICBnYW1lcGFk
ID0gR2FtZXBhZDo6Y3JlYXRlKCk7CisKKyAgICAgICAgICAgIGdhbWVwYWQtPmluZGV4KGkpOwor
ICAgICAgICAgICAgZ2FtZXBhZC0+aWQoZ2FtZXBhZERldmljZS0+aWQoKSk7CisgICAgICAgICAg
ICBnYW1lcGFkLT50aW1lc3RhbXAoZ2FtZXBhZERldmljZS0+dGltZXN0YW1wKCkpOworICAgICAg
ICAgICAgZ2FtZXBhZC0+YXhlcyhnYW1lcGFkRGV2aWNlLT5heGVzQ291bnQoKSwgZ2FtZXBhZERl
dmljZS0+YXhlc0RhdGEoKSk7CisgICAgICAgICAgICBnYW1lcGFkLT5idXR0b25zKGdhbWVwYWRE
ZXZpY2UtPmJ1dHRvbnNDb3VudCgpLCBnYW1lcGFkRGV2aWNlLT5idXR0b25zRGF0YSgpKTsKKwor
ICAgICAgICAgICAgaW50by0+c2V0KGksIGdhbWVwYWQpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGludG8tPnNldChpLCAwKTsKKyAgICB9Cit9CisKK3ZvaWQgR2FtZXBhZHNHdGs6Om9u
VUV2ZW50Q2FsbGJhY2soR1VkZXZDbGllbnQqIHVkZXZDbGllbnQsIGdjaGFyKiBhY3Rpb24sIEdV
ZGV2RGV2aWNlKiBkZXZpY2UsIGdwb2ludGVyIGRhdGEpCit7CisgICAgaWYgKCFpc0dhbWVwYWRE
ZXZpY2UoZGV2aWNlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR2FtZXBhZHNHdGsqIGdhbWVw
YWRzR3RrID0gcmVpbnRlcnByZXRfY2FzdDxHYW1lcGFkc0d0ayo+KGRhdGEpOworICAgIFN0cmlu
ZyBkZXZpY2VGaWxlID0gU3RyaW5nOjpmcm9tVVRGOChnX3VkZXZfZGV2aWNlX2dldF9kZXZpY2Vf
ZmlsZShkZXZpY2UpKTsKKworICAgIGlmICghZ19zdHJjbXAwKGFjdGlvbiwgImFkZCIpKQorICAg
ICAgICBnYW1lcGFkc0d0ay0+cmVnaXN0ZXJEZXZpY2UoZGV2aWNlRmlsZSk7CisgICAgZWxzZSBp
ZiAoIWdfc3RyY21wMChhY3Rpb24sICJyZW1vdmUiKSkKKyAgICAgICAgZ2FtZXBhZHNHdGstPnVu
cmVnaXN0ZXJEZXZpY2UoZGV2aWNlRmlsZSk7Cit9CisKK2dib29sZWFuIEdhbWVwYWRzR3RrOjpp
c0dhbWVwYWREZXZpY2UoR1VkZXZEZXZpY2UqIGRldmljZSkKK3sKKyAgICBjb25zdCBnY2hhciog
ZGV2aWNlRmlsZSA9IGdfdWRldl9kZXZpY2VfZ2V0X2RldmljZV9maWxlKGRldmljZSk7CisgICAg
Y29uc3QgZ2NoYXIqIHN5c2ZzUGF0aCA9IGdfdWRldl9kZXZpY2VfZ2V0X3N5c2ZzX3BhdGgoZGV2
aWNlKTsKKyAgICBpZiAoIWRldmljZUZpbGUgfHwgIXN5c2ZzUGF0aCkKKyAgICAgICAgcmV0dXJu
IEZBTFNFOworCisgICAgaWYgKCFnX3VkZXZfZGV2aWNlX2hhc19wcm9wZXJ0eShkZXZpY2UsICJJ
RF9JTlBVVCIpIHx8ICFnX3VkZXZfZGV2aWNlX2hhc19wcm9wZXJ0eShkZXZpY2UsICJJRF9JTlBV
VF9KT1lTVElDSyIpKQorICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICByZXR1cm4gZ19zdHJf
aGFzX3ByZWZpeChkZXZpY2VGaWxlLCAiL2Rldi9pbnB1dC9qcyIpOworfQorCit2b2lkIHNhbXBs
ZUdhbWVwYWRzKEdhbWVwYWRMaXN0KiBpbnRvKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
R2FtZXBhZHNHdGssIGdhbWVwYWRzR3RrLCAoaW50by0+bGVuZ3RoKCkpKTsKKyAgICBnYW1lcGFk
c0d0ay51cGRhdGVHYW1lcGFkTGlzdChpbnRvKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjViYzFi
NWQ0NWU0ZGIyMWYwZmYwNTY4NDkyMzVlMDJmZmYzNmU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcApAQCAtMCww
ICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFphbiBEb2JlcnNlayA8emFuZG9i
ZXJzZWtAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6
CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQor
ICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiR2FtZXBhZERldmljZUxpbnV4LmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1
ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0dhbWVwYWREZXZpY2VMaW51eDo6R2FtZXBhZERldmljZUxpbnV4KFN0cmluZyBkZXZpY2VGaWxl
KQorICAgIDogbV9maWxlRGVzY3JpcHRvcigtMSkKKyAgICAsIG1fY29ubmVjdGVkKGZhbHNlKQor
ICAgICwgbV9sYXN0VGltZXN0YW1wKDApCit7CisgICAgLy8gRklYTUU6IExvZyBlcnJvcnMgd2hl
biByZXR1cm5pbmcgZWFybHkuCisgICAgbV9maWxlRGVzY3JpcHRvciA9IG9wZW4oZGV2aWNlRmls
ZS51dGY4KCkuZGF0YSgpLCBPX1JET05MWSB8IE9fTk9OQkxPQ0spOworICAgIGlmIChtX2ZpbGVE
ZXNjcmlwdG9yID09IC0xKQorICAgICAgICByZXR1cm47CisKKyAgICBjaGFyIGRldmljZU5hbWVb
MTAyNF07CisgICAgaWYgKGlvY3RsKG1fZmlsZURlc2NyaXB0b3IsIEpTSU9DR05BTUUoc2l6ZW9m
KGRldmljZU5hbWUpKSwgZGV2aWNlTmFtZSkgPCAwKQorICAgICAgICByZXR1cm47CisgICAgbV9k
ZXZpY2VOYW1lID0gU3RyaW5nKGRldmljZU5hbWUpLnNpbXBsaWZ5V2hpdGVTcGFjZSgpOworCisg
ICAgdWludDhfdCBudW1iZXJPZkF4ZXM7CisgICAgdWludDhfdCBudW1iZXJPZkJ1dHRvbnM7Cisg
ICAgaWYgKGlvY3RsKG1fZmlsZURlc2NyaXB0b3IsIEpTSU9DR0FYRVMsICZudW1iZXJPZkF4ZXMp
IDwgMCB8fCBpb2N0bChtX2ZpbGVEZXNjcmlwdG9yLCBKU0lPQ0dCVVRUT05TLCAmbnVtYmVyT2ZC
dXR0b25zKSA8IDApCisgICAgICAgIHJldHVybjsKKyAgICBtX2F4ZXMuZmlsbCgwLjAsIG51bWJl
ck9mQXhlcyk7CisgICAgbV9idXR0b25zLmZpbGwoMC4wLCBudW1iZXJPZkJ1dHRvbnMpOworfQor
CitHYW1lcGFkRGV2aWNlTGludXg6On5HYW1lcGFkRGV2aWNlTGludXgoKQoreworICAgIGlmICht
X2ZpbGVEZXNjcmlwdG9yICE9IC0xKQorICAgICAgICBjbG9zZShtX2ZpbGVEZXNjcmlwdG9yKTsK
K30KKwordm9pZCBHYW1lcGFkRGV2aWNlTGludXg6OnVwZGF0ZUZvckV2ZW50KHN0cnVjdCBqc19l
dmVudCBldmVudCkKK3sKKyAgICBpZiAoIShldmVudC50eXBlICYgSlNfRVZFTlRfQVhJUyB8fCBl
dmVudC50eXBlICYgSlNfRVZFTlRfQlVUVE9OKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
TWFyayB0aGUgZGV2aWNlIGFzIGNvbm5lY3RlZCBvbmx5IGlmIGl0IGlzIG5vdCB5ZXQgY29ubmVj
dGVkLCB0aGUgZXZlbnQgaXMgbm90IGFuIGluaXRpYWxpemF0aW9uCisgICAgLy8gYW5kIHRoZSB2
YWx1ZSBpcyBub3QgMCAoaW5kaWNhdGluZyBhIGdlbnVpbmUgaW50ZXJhY3Rpb24gd2l0aCB0aGUg
ZGV2aWNlKS4KKyAgICBpZiAoIW1fY29ubmVjdGVkICYmICEoZXZlbnQudHlwZSAmIEpTX0VWRU5U
X0lOSVQpICYmIGV2ZW50LnZhbHVlKQorICAgICAgICBtX2Nvbm5lY3RlZCA9IHRydWU7CisKKyAg
ICBpZiAoZXZlbnQudHlwZSAmIEpTX0VWRU5UX0FYSVMpCisgICAgICAgIG1fYXhlc1tldmVudC5u
dW1iZXJdID0gbm9ybWFsaXplQXhpc1ZhbHVlKGV2ZW50LnZhbHVlKTsKKyAgICBlbHNlIGlmIChl
dmVudC50eXBlICYgSlNfRVZFTlRfQlVUVE9OKQorICAgICAgICBtX2J1dHRvbnNbZXZlbnQubnVt
YmVyXSA9IG5vcm1hbGl6ZUJ1dHRvblZhbHVlKGV2ZW50LnZhbHVlKTsKKworICAgIG1fbGFzdFRp
bWVzdGFtcCA9IGV2ZW50LnRpbWU7Cit9CisKK2Zsb2F0IEdhbWVwYWREZXZpY2VMaW51eDo6bm9y
bWFsaXplQXhpc1ZhbHVlKHNob3J0IHZhbHVlKQoreworICAgIC8vIE5vcm1hbGl6ZSBmcm9tIHJh
bmdlIFstMzI3NjcsIDMyNzY3XSBpbnRvIHJhbmdlIFstMS4wLCAxLjBdCisgICAgcmV0dXJuIHZh
bHVlIC8gMzI3NjcuMGY7Cit9CisKK2Zsb2F0IEdhbWVwYWREZXZpY2VMaW51eDo6bm9ybWFsaXpl
QnV0dG9uVmFsdWUoc2hvcnQgdmFsdWUpCit7CisgICAgLy8gTm9ybWFsaXplIGZyb20gcmFuZ2Ug
WzAsIDFdIGludG8gcmFuZ2UgWzAuMCwgMS4wXQorICAgIHJldHVybiB2YWx1ZSAvIDEuMGY7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxp
bnV4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXgu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNDg1ZTgzYTljZWNjMzMyNzZhODAwM2RmYTA2ZTU2MTNkNjNjMzdlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERl
dmljZUxpbnV4LmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBa
YW4gRG9iZXJzZWsgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICog
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBH
YW1lcGFkRGV2aWNlTGludXhfaAorI2RlZmluZSBHYW1lcGFkRGV2aWNlTGludXhfaAorCisjaWYg
RU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlIDxsaW51eC9qb3lzdGljay5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1lcGFkRGV2aWNlTGludXggeworcHVibGljOgorICAg
IGJvb2wgY29ubmVjdGVkKCkgeyByZXR1cm4gbV9jb25uZWN0ZWQ7IH07CisKKyAgICBTdHJpbmcg
aWQoKSB7IHJldHVybiBtX2RldmljZU5hbWU7IH0KKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGlt
ZXN0YW1wKCkgeyByZXR1cm4gbV9sYXN0VGltZXN0YW1wOyB9CisKKyAgICB1bnNpZ25lZCBheGVz
Q291bnQoKSB7IHJldHVybiBtX2F4ZXMuc2l6ZSgpOyB9CisgICAgZmxvYXQqIGF4ZXNEYXRhKCkg
eyByZXR1cm4gbV9heGVzLmRhdGEoKTsgfQorCisgICAgdW5zaWduZWQgYnV0dG9uc0NvdW50KCkg
eyByZXR1cm4gbV9idXR0b25zLnNpemUoKTsgfQorICAgIGZsb2F0KiBidXR0b25zRGF0YSgpIHsg
cmV0dXJuIG1fYnV0dG9ucy5kYXRhKCk7IH0KKworcHJvdGVjdGVkOgorICAgIEdhbWVwYWREZXZp
Y2VMaW51eChTdHJpbmcgZGV2aWNlRmlsZSk7CisgICAgfkdhbWVwYWREZXZpY2VMaW51eCgpOwor
CisgICAgdm9pZCB1cGRhdGVGb3JFdmVudChzdHJ1Y3QganNfZXZlbnQpOworICAgIGludCBtX2Zp
bGVEZXNjcmlwdG9yOworCitwcml2YXRlOgorICAgIGZsb2F0IG5vcm1hbGl6ZUF4aXNWYWx1ZShz
aG9ydCB2YWx1ZSk7CisgICAgZmxvYXQgbm9ybWFsaXplQnV0dG9uVmFsdWUoc2hvcnQgdmFsdWUp
OworCisgICAgYm9vbCBtX2Nvbm5lY3RlZDsKKyAgICBTdHJpbmcgbV9kZXZpY2VOYW1lOworICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBtX2xhc3RUaW1lc3RhbXA7CisKKyAgICBWZWN0b3I8ZmxvYXQ+
IG1fYXhlczsKKyAgICBWZWN0b3I8ZmxvYXQ+IG1fYnV0dG9uczsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQorCisjZW5kaWYgLy8gR2Ft
ZXBhZERldmljZUxpbnV4X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2Vm
aWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXggMTJlZTc2NWEz
Y2QyNmE3MTFmYzVjMWMzMjk0MzE5MGQ3YTM4ODRiYy4uZGIzYWZhZGE0N2Q1YTFmNzY2ZWY1MTgy
ZTU4ZWY3M2U5MzM3NWVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZp
bGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTg3LDYgKzg3
LDcgQEAgbGlid2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRH
VEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQkEKIAkkKEVOQ0hBTlRfTElCUykgXAogCSQoRlJF
RVRZUEVfTElCUykgXAogCSQoR0FJTF9MSUJTKSBcCisJJChHQU1FUEFEX0xJQlMpIFwKIAkkKEdF
T0NMVUVfTElCUykgXAogCSQoR0xJQl9MSUJTKSBcCiAJJChHU1RSRUFNRVJfTElCUykgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQppbmRleCAwMTZkNjgxOTdmNmIxOWY4N2RmYzJjNmU1YTRjNDFhYTA5Yjkw
ZGYxLi4xNWE2OWY5NzMzOWRjMWMwNDk1MTljODk4N2FkNmJmMTdiOGQzYWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQpAQCAtMTYwLDYgKzE2MCw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19B
UElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCCiAJ
JChDT1ZFUkFHRV9MREZMQUdTKSBcCiAJJChFTkNIQU5UX0xJQlMpIFwKIAkkKEdBSUxfTElCUykg
XAorCSQoR0FNRVBBRF9MSUJTKSBcCiAJJChHRU9DTFVFX0xJQlMpIFwKIAkkKEdMSUJfTElCUykg
XAogCSQoR1NUUkVBTUVSX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBiNTYzZjhlOTE4ODA5ZWM3NjcwNjVkMzJiNjYwNWNhZDgxMTFk
OTc3Li4wNTA2YzQzYTE0MWM5MmUwYTgzZjlkOWMwODM4NzlhZTViNTZkNGZkIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDYtMjUgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKworICAg
ICAgICBbR3RrXSBBZGQgc3VwcG9ydCBmb3IgdGhlIEdhbWVwYWQgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzUwMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSB0aGUgZ2FtZXBhZCBzdXBw
b3J0IGZvciB0aGUgR1RLIHBvcnQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG06CisKIDIwMTItMDYtMjUgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21h
bm5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IFdpbjMyIGRlYnVnIGJ1aWxkCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggMGYwMzNhYzU1NDllZTVjNzk3
YmYxMjA0YTM1NjcxOTVjNDk2NWRhZC4uODg4ZGIzOGQyMjBhYjNmZjRlZjFlODIxMjEwNWExODA1
MjQ5ODBlOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0
LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjE0
LDcgKzIxNCw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0ZV
TExTQ1JFRU5fQVBJIiwgZGVmYXVsdCA9PiAoaXNBcHBsZU1hY1dlYktpdCgpIHx8IGlzRWZsKCkg
fHwgaXNHdGsoKSB8fCBpc0JsYWNrQmVycnkoKSB8fCBpc1F0KCkpLCB2YWx1ZSA9PiBcJGZ1bGxz
Y3JlZW5BUElTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiZ2FtZXBhZCIsIGRlc2MgPT4g
IlRvZ2dsZSBHYW1lcGFkIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfR0FNRVBB
RCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRnYW1lcGFkU3VwcG9ydCB9LAorICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfR0FNRVBBRCIsIGRlZmF1bHQgPT4gaXNHdGsoKSwgdmFsdWUgPT4gXCRn
YW1lcGFkU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImdlb2xvY2F0aW9uIiwgZGVzYyA9
PiAiVG9nZ2xlIEdlb2xvY2F0aW9uIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
R0VPTE9DQVRJT04iLCBkZWZhdWx0ID0+IChpc0FwcGxlV2ViS2l0KCkgfHwgaXNHdGsoKSB8fCBp
c0JsYWNrQmVycnkoKSksIHZhbHVlID0+IFwkZ2VvbG9jYXRpb25TdXBwb3J0IH0sCmRpZmYgLS1n
aXQgYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzIGIvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxl
cwppbmRleCAzMzA2ZDc0ZWU3MTgzYmVjNTc3NzNmYzhiMDZmOWM0OWMzY2FjOWVjLi43ODU4YTAx
ODRmMzE5NDQ4OTE3YmE2MzUxMWIyMzk3MjUwN2M4YTY3IDEwMDY0NAotLS0gYS9Ub29scy9ndGsv
amhidWlsZC5tb2R1bGVzCisrKyBiL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKQEAgLTE2LDYg
KzE2LDcgQEAKICAgICAgIDxkZXAgcGFja2FnZT0iZ2xpYi1uZXR3b3JraW5nIi8+CiAgICAgICA8
ZGVwIHBhY2thZ2U9Imdub21lLWljb24tdGhlbWUiLz4KICAgICAgIDxkZXAgcGFja2FnZT0ibGli
c291cCIvPgorICAgICAgPGRlcCBwYWNrYWdlPSJndWRldiIvPgogICAgICAgPGRlcCBwYWNrYWdl
PSJhdC1zcGkyLWNvcmUiLz4KICAgICAgIDxkZXAgcGFja2FnZT0iYXQtc3BpMi1hdGsiLz4KICAg
ICA8L2RlcGVuZGVuY2llcz4KQEAgLTM3LDYgKzM4LDggQEAKICAgICAgIGhyZWY9Imh0dHA6Ly9j
YWlyb2dyYXBoaWNzLm9yZyIvPgogICA8cmVwb3NpdG9yeSB0eXBlPSJ0YXJiYWxsIiBuYW1lPSJm
cmVlZGVza3RvcC5vcmciCiAgICAgICBocmVmPSJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZyIv
PgorICA8cmVwb3NpdG9yeSB0eXBlPSJ0YXJiYWxsIiBuYW1lPSJrZXJuZWwub3JnIgorICAgICAg
aHJlZj0iaHR0cDovL3d3dy5rZXJuZWwub3JnIi8+CiAKICAgPGF1dG90b29scyBpZD0ibWFrZSIg
YXV0b2dlbi1zaD0iY29uZmlndXJlIj4KICAgICA8YnJhbmNoIHJlcG89ImZ0cC5nbnUub3JnIgpA
QCAtMTg1LDYgKzE4OCwxNSBAQAogICAgIDwvYnJhbmNoPgogICA8L2F1dG90b29scz4KIAorICA8
YXV0b3Rvb2xzIGlkPSJndWRldiIgYXV0b2dlbi1zaD0iY29uZmlndXJlIgorICAgICAgICAgICAg
IGF1dG9nZW5hcmdzPSItLWRpc2FibGUtaW50cm9zcGVjdGlvbiI+CisgICAgPGJyYW5jaCBtb2R1
bGU9InB1Yi9saW51eC91dGlscy9rZXJuZWwvaG90cGx1Zy91ZGV2LTE3NS50YXIueHoiIHZlcnNp
b249IjE3NSIKKyAgICAgICAgICAgIHJlcG89Imtlcm5lbC5vcmciCisgICAgICAgICAgICBoYXNo
PSJzaGEyNTY6NmU3YzczMzBhOGY3YTFkMTE4ZTMzMzM4OTQxMzgxZmFhMDA1NzU5OTIxY2FhMjQx
NTM1ZDY5MzBiYjEyMTQwZiIKKyAgICAgICAgICAgIG1kNXN1bT0iMTM1OTRlYWNjMWZiMDc2ZWQ5
MTBiZmQ4ODIzZmQ4MzUiPgorICAgIDwvYnJhbmNoPgorICA8L2F1dG90b29scz4KKwogICA8YXV0
b3Rvb2xzIGlkPSJhdC1zcGkyLWNvcmUiIAogICAgICAgICAgICAgIGF1dG9nZW5hcmdzPSItLWRp
c2FibGUtaW50cm9zcGVjdGlvbiI+CiAgICAgPGJyYW5jaCBtb2R1bGU9InB1Yi9HTk9NRS9zb3Vy
Y2VzL2F0LXNwaTItY29yZS8yLjIvYXQtc3BpMi1jb3JlLTIuMi4xLnRhci54eiIgdmVyc2lvbj0i
Mi4yLjEiCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMDAwOTJjNmM0
ODllNDZjMTVkNTBlZTExNzA1Y2Y1Mjc1YTJjNDJmNS4uZDAwNDlhZWMxMTUwMzBjZjgwY2VlYTI3
YzhiN2VlOGE2MDdmNTgyMCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDEyLTA2LTI1ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0Bn
bWFpbC5jb20+CisKKyAgICAgICAgW0d0a10gQWRkIHN1cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbmx5IGVu
YWJsZSB0aGUgR2FtZXBhZCBmZWF0dXJlIG9uIExpbnV4IGFzIHN1cHBvcnQKKyAgICAgICAgZm9y
IG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zIGlzIG5vdCBwcmVzZW50LgorCisgICAgICAgIENoZWNr
IGZvciB0aGUgR0lPIFVuaXggYW5kIEdVZGV2IGRlcGVuZGVuY2llcyB3aGVuIHRoZQorICAgICAg
ICBHYW1lcGFkIGZlYXR1cmUgaXMgZW5hYmxlZC4KKworICAgICAgICAqIGNvbmZpZ3VyZS5hYzoK
KwogMjAxMi0wNi0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIE5FV1MgYW5kIGNvbmZpZ3VyZS5hYyBmb3Ig
MS45LjQgcmVsZWFzZQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmlu
ZGV4IGU2Y2IyMjBlMWI2YWY3NDVkZjQ3YTdiMGVjM2RiYjNjOTg5YTQ1YTMuLmU5Y2NmZmYzOWY4
MGNlODgwNWIxNzg3NWI5YzFiNWEyNzg3MWVlMGEgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYwor
KysgYi9jb25maWd1cmUuYWMKQEAgLTY1Myw2ICs2NTMsMTEgQEAgQUNfQVJHX0VOQUJMRShnYW1l
cGFkLAogICAgICAgICAgICAgICBbXSxbZW5hYmxlX2dhbWVwYWQ9Im5vIl0pCiBBQ19NU0dfUkVT
VUxUKFskZW5hYmxlX2dhbWVwYWRdKQogCitpZiB0ZXN0ICIkZW5hYmxlX2dhbWVwYWQiID0gInll
cyIgJiYgdGVzdCAiJG9zX2xpbnV4IiA9IG5vOyB0aGVuCisgICBBQ19NU0dfV0FSTihbR2FtZXBh
ZCBzdXBwb3J0IGlzIG9ubHkgYXZhaWxhYmxlIG9uIExpbnV4LiBEaXNhYmxpbmcgR2FtZXBhZCBz
dXBwb3J0Ll0pCisgICBlbmFibGVfZ2FtZXBhZD1ubzsKK2ZpCisKICMgY2hlY2sgd2hldGhlciB0
byBidWlsZCB3aXRoIGRhdGEgdHJhbnNmZXIgaXRlbXMgc3VwcG9ydAogQUNfTVNHX0NIRUNLSU5H
KFt3aGV0aGVyIHRvIGVuYWJsZSBIVE1MNSBkYXRhIHRyYW5zZmVyIGl0ZW1zIHN1cHBvcnRdKQog
QUNfQVJHX0VOQUJMRShkYXRhX3RyYW5zZmVyX2l0ZW1zLApAQCAtMTI3Niw2ICsxMjgxLDEzIEBA
IGlmIHRlc3QgIiRlbmFibGVfd2Via2l0MiIgPSAieWVzIjsgdGhlbgogICAgQUNfU1VCU1QoW0FU
U1BJMl9MSUJTXSkKIGZpCiAKK2lmIHRlc3QgIiRlbmFibGVfZ2FtZXBhZCIgPSAieWVzIjsgdGhl
bgorICAgUEtHX0NIRUNLX01PRFVMRVMoW0dBTUVQQURdLCBbZ2lvLXVuaXgtMi4wIGd1ZGV2LTEu
MF0pCisKKyAgIEFDX1NVQlNUKEdBTUVQQURfQ0ZMQUdTKQorICAgQUNfU1VCU1QoR0FNRVBBRF9M
SUJTKQorZmkKKwogIyBjaGVjayBmb3IgY29kZSBjb3ZlcmFnZSBzdXBwb3J0CiBpZiB0ZXN0ICIk
ZW5hYmxlX2NvdmVyYWdlIiA9ICJ5ZXMiOyB0aGVuCiAgICBDT1ZFUkFHRV9DRkxBR1M9Ii1NRCIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149310</attachid>
            <date>2012-06-25 09:52:22 -0700</date>
            <delta_ts>2012-06-27 02:19:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87503-20120625185221.patch</filename>
            <type>text/plain</type>
            <size>31278</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ1YWI0NjlmZDYzODY2
ODRlYmNiYWFlNjgzOGUzOTJmYWYzOWExMy4uZThhNDBhYjBlYzI0N2FhZmQ4N2U4YTQwODExYzcw
MWQwZDc5MmQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA2LTI1ICBaYW4g
RG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0d0a10gQWRkIHN1
cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIEdhbWVwYWQgZmVhdHVyZSBvbiB0
aGUgR1RLIHBvcnQuCisKKyAgICAgICAgVGhlIHN1cHBvcnQgaXMgYXZhaWxhYmxlIG9ubHkgb24g
TGludXgsIHdpdGggZWFjaCBnYW1lcGFkIGRldmljZSBiZWluZyBwcmVzZW50ZWQKKyAgICAgICAg
dGhyb3VnaCBhIEdhbWVwYWREZXZpY2VMaW51eCBvYmplY3QuIFRoZSBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGlzIGNsYXNzIHJlbGllcyBvbgorICAgICAgICB0aGUgTGludXgga2VybmVsIGpveXN0aWNr
IEFQSS4KKworICAgICAgICBHYW1lcGFkIGRldmljZXMgYXJlIHJlY29nbml6ZWQgdGhyb3VnaCB0
aGUgR2FtZXBhZHNHdGsgY2xhc3MsIG9mIHdoaWNoIGltcGxlbWVudGF0aW9uCisgICAgICAgIGlz
IGJhc2VkIG9uIEdVZGV2LiBUaGlzIHdheSBkZXZpY2VzIGFyZSBwcm9wZXJseSByZWdpc3RlcmVk
IG9uIGNvbm5lY3Rpb24gYXMgb2JqZWN0cyBvZgorICAgICAgICB0aGUgR2FtZXBhZERldmljZUd0
ayBjbGFzcyB3aGljaCBpbmhlcml0cyBHYW1lcGFkRGV2aWNlTGludXguIEdhbWVwYWREZXZpY2VH
dGsgcmVhZHMgdGhlCisgICAgICAgIGpveXN0aWNrIGRhdGEgdGhyb3VnaCBHSU8gcG9sbGFibGUg
c3RyZWFtcyBhbmQgdXBkYXRlcyB0aGUgZGV2aWNlIHN0YXRlIGFjY29yZGluZ2x5LiBUaGUKKyAg
ICAgICAgR2FtZXBhZHNHdGsgb2JqZWN0IGlzIHRoZW4gcG9sbGVkIGZvciBnYW1lcGFkcyBkYXRh
IHRocm91Z2ggdGhlIHNhbXBsZUdhbWVwYWRzIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVz
dHMgLSB0ZXN0cyBhbHJlYWR5IGV4aXN0IGJ1dCByZXF1aXJlIGFkZGl0aW9uYWwgdGVzdGluZyBp
bmZyYXN0cnVjdHVyZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmls
ZS5hbToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDogQWRkIHRoZSBqc0Fy
cmF5IG1ldGhvZCB0aGF0IG9wZXJhdGVzIG9uIGEgVmVjdG9yIG9mIGZsb2F0cy4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6anNBcnJheSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL0dhbWVwYWRzR3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKEdhbWVwYWREZXZpY2VHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUd0
azo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VHdGs6OkdhbWVwYWRE
ZXZpY2VHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUd0azo6fkdhbWVwYWRE
ZXZpY2VHdGspOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUd0azo6cmVhZENhbGxi
YWNrKToKKyAgICAgICAgKEdhbWVwYWRzR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRz
R3RrOjpHYW1lcGFkc0d0ayk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6fkdhbWVw
YWRzR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzR3RrOjpyZWdpc3RlckRldmljZSk6
CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6dW5yZWdpc3RlckRldmljZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6dXBkYXRlR2FtZXBhZExpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R2FtZXBhZHNHdGs6Om9uVUV2ZW50Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZXBhZHNHdGs6OmlzR2FtZXBhZERldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW1w
bGVHYW1lcGFkcyk6CisgICAgICAgICogcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVw
YWREZXZpY2VMaW51eDo6R2FtZXBhZERldmljZUxpbnV4KToKKyAgICAgICAgKFdlYkNvcmU6Okdh
bWVwYWREZXZpY2VMaW51eDo6fkdhbWVwYWREZXZpY2VMaW51eCk6CisgICAgICAgIChXZWJDb3Jl
OjpHYW1lcGFkRGV2aWNlTGludXg6OnVwZGF0ZUZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VMaW51eDo6bm9ybWFsaXplQXhpc1ZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdhbWVwYWREZXZpY2VMaW51eDo6bm9ybWFsaXplQnV0dG9uVmFsdWUpOgorICAgICAgICAq
IHBsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoR2FtZXBhZERldmljZUxpbnV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VMaW51eDo6Y29ubmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVw
YWREZXZpY2VMaW51eDo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4
Ojp0aW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4OjpheGVz
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4OjpheGVzRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTGludXg6OmJ1dHRvbnNDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTGludXg6OmJ1dHRvbnNEYXRhKToKKwogMjAx
Mi0wNi0yNSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAg
ICAgICBBZGQgc3RhdGljIHF1YWxpZmllciB0byBHcmFwaGljc0NvbnRleHQzRDo6ZXh0cmFjdElt
YWdlRGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBmMjQ3OGQ1YTIzM2RhNWMwODhlMDg5YmZmYjFk
ODA5NzViNGU5ODNjLi4zZWQ2MWU5YWE0ZjRmZmE0ZWU2MWM0NGJiOWQyYjc3Yjk4MGY5NGE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDYtMjUgIFphbiBEb2JlcnNl
ayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKworICAgICAgICBbR3RrXSBBZGQgc3VwcG9ydCBm
b3IgdGhlIEdhbWVwYWQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NzUwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCB0aGUgR2FtZXBhZCBmZWF0dXJlIGRlcGVuZGVuY2llcyBsaWJyYXJpZXMg
dG8gdGhlIExJQkFERAorICAgICAgICBsaXN0IGZvciB0aGUgbGlid2Via2l0Z3RrIGxpYnJhcnku
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKwogMjAxMi0wNi0yNSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVXBk
YXRlIE5FV1MgYW5kIGNvbmZpZ3VyZS5hYyBmb3IgMS45LjQgcmVsZWFzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGQ4Yzk3NGJkYzE1YzQ4M2ExZDYxNGJjODhlMGNlMGRhMDY1NzY0YzQuLmM0Yjk0MjVlM2JkZWIy
Zjg1YWNmMTQ4ODU4YmQ0ODhkNTA1NmRjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0wNi0yNSAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAg
ICAgIFtHdGtdIEFkZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NTAzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBHYW1lcGFkIGZlYXR1cmUg
ZGVwZW5kZW5jaWVzIGxpYnJhcmllcyB0byB0aGUgTElCQURECisgICAgICAgIGxpc3QgZm9yIHRo
ZSBsaWJ3ZWJraXRndGsyIGxpYnJhcnkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKwog
MjAxMi0wNi0yNSAgWW91bmdUYWVjayBTb25nICA8eW91bmd0YWVjay5zb25nQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtXSzJdW1F0XVtFRkxdIE1vdmUgTGF5ZXJCYWNraW5nU3RvcmUgaW50byBj
b21tb24gZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGYzMjgwNzcyY2QwNGM2NjFm
OTlhMDA2NmU0YTA0ZjQ3ZWY3YjZjNDguLmVhZTBhNzEzYjIzZTc1NzQ4YzIyYmJjNTVjMzk0NmEw
NTc5MTg5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMiw2ICsxMiw3IEBAIHdlYmNvcmVf
Y3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1
ZGUvR0xTTEFORyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbSBcCisJLUkkKHNyY2RpcikvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYiBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbSBcCkBAIC02Nyw2ICs2OCw3IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZyBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYiBcCisJLUkkKHNyY2Rpcikv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2sgXApAQCAtODY2LDYgKzg2OCw3IEBAIERlcml2ZWRTb3VyY2VzL0FO
R0xFL2dsc2xhbmdfdGFiLmg6IERlcml2ZWRTb3VyY2VzL0FOR0xFL2dsc2xhbmdfdGFiLmNwcAog
CiBJRExfUEFUSCA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAorICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9nYW1lcGFkIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2Vv
bG9jYXRpb24gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbSBcCkBAIC05NjEsNiArOTY0LDcgQEAgbGliV2ViQ29y
ZV9sYV9DUFBGTEFHUyA9IFwKIAkkKENMVVRURVJfQ0ZMQUdTKSBcCiAJJChDT1ZFUkFHRV9DRkxB
R1MpIFwKIAkkKEVOQ0hBTlRfQ0ZMQUdTKSBcCisJJChHQU1FUEFEX0NGTEFHUykgXAogCSQoR0VP
Q0xVRV9DRkxBR1MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBc
CkBAIC0xMDMyLDYgKzEwMzYsNyBAQCBsaWJXZWJDb3JlR3RrX2xhX0NQUEZMQUdTID0gXAogCiBF
WFRSQV9ESVNUICs9IFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vKi5pZGwpIFwKKwkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dhbWVwYWQvKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvKi5pZGwpIFwKIAkkKHNoZWxs
IGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtLyouaWRsKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA0ODYxZjgyYWRkM2FkMTg3ZjAxM2Ux
OTZlZjFkNzEzNDE0NjcxOGQxLi4zZWQyNDc3ZDExODg3ODU5YTNjZDVlMmM1ODA2NmU2NzZhZjVi
NmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5Miw2ICsxOTIsMTAgQEAg
d2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmxv
YXQzMkFycmF5LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGbG9hdDY0QXJyYXkuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmxvYXQ2NEFycmF5LmggXAorCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNHYW1lcGFkLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dhbWVwYWQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dhbWVwYWRMaXN0LmNwcCBc
CisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dhbWVwYWRMaXN0LmggXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNHZW9sb2NhdGlvbi5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHZW9sb2NhdGlvbi5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2VvcG9zaXRpb24u
Y3BwIFwKQEAgLTY3Nyw2ICs2ODEsOSBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvWFBhdGhHcmFtbWFyLmgKIAogZG9tX2JpbmRpbmdfaWRscyAr
PSBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5pZGwgXAorCSQoV2ViQ29y
ZSkvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVz
L2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbi5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9wb3NpdGlvbi5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZp
Z2F0b3JHZW9sb2NhdGlvbi5pZGwgXApAQCAtMTA1Myw2ICsxMDYwLDEyIEBAIHdlYmNvcmVfbW9k
dWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV2Vi
S2l0RmxhZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckNv
bnRleHRGaWxlU3lzdGVtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Ft
ZXBhZC9HYW1lcGFkLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVw
YWQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmNwcCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmggXAorCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuaCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIFwKQEAgLTMxNTgs
NiArMzE3MSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN5c3RlbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GbG9hdENvbnZlcnNp
b24uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRnJhY3Rpb25hbExheW91dFVuaXQuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2FtZXBhZHMuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vSGFzaFRvb2xzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hpc3RvZ3Jh
bVN1cHBvcnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IaXN0b2dyYW1TdXBwb3J0
LmggXApAQCAtMzQwNiw2ICszNDIwLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0Vycm9yc0d0ay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBh
ZHNHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS1VSTEd0ay5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2dnaW5nR3RrLmNwcCBcCkBAIC0zNDY2LDYgKzM0ODEsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFu
ZGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9EZXByZWNhdGVk
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCmluZGV4IGM3MDI1Mjg2ZDBmYWU3
NGUyNWFlOGUyZDMxMDcyMTU3OTVhMzc4ZjUuLmZhMDQ1NDIwM2NiNmNhYjNiYzExNjg2OGRhOGRj
NjNiOWI2N2VjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
R05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVt
YWtlZmlsZS5hbQpAQCAtNjYsNiArNjYsMTAgQEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfc291cmNl
cyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUZpbGVMaXN0LmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUZpbGVMaXN0UHJpdmF0ZS5oIFwKIAlEZXJp
dmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NRmlsZVByaXZhdGUuaCBcCisJRGVyaXZlZFNvdXJj
ZXMvd2Via2l0L1dlYktpdERPTUdhbWVwYWQuY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQv
V2ViS2l0RE9NR2FtZXBhZExpc3QuY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0
RE9NR2FtZXBhZExpc3RQcml2YXRlLmggXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRE
T01HYW1lcGFkUHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NR2Vv
bG9jYXRpb24uY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NR2VvbG9jYXRp
b25Qcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01IaXN0b3J5LmNw
cCBcCkBAIC0yOTUsNiArMjk5LDggQEAgd2Via2l0Z3RrX2J1aWx0X2hfYXBpICs9IFwKIAlEZXJp
dmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NQmxvYi5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJr
aXQvV2ViS2l0RE9NRmlsZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NRmls
ZUxpc3QuaCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUdhbWVwYWQuaCBcCisJ
RGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUdhbWVwYWRMaXN0LmggXAogCURlcml2ZWRT
b3VyY2VzL3dlYmtpdC9XZWJLaXRET01HZW9sb2NhdGlvbi5oIFwKIAlEZXJpdmVkU291cmNlcy93
ZWJraXQvV2ViS2l0RE9NSFRNTEFuY2hvckVsZW1lbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0L1dlYktpdERPTUhUTUxBcHBsZXRFbGVtZW50LmggXApAQCAtNDI4LDcgKzQzNCw2IEBAIHdl
YmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9X
ZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb25Qcml2YXRlLmgKIGVuZGlmCiAKLQogaWYg
RU5BQkxFX1dFQl9USU1JTkcKIHdlYmtpdGd0a19idWlsdF9oX2FwaSArPSBcCiAJJCh0b3BfYnVp
bGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01QZXJmb3JtYW5jZS5oIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggZDI3OGE4MDJhYzky
MTA1NDYyZGExYzkxMGQ5ODM5YTI2ZjRkNmMwYi4uYjVhZDNmYjA1OTAyNmQ1NzVlZDk2MjU0YjNm
ZmQxZWViYTdiN2UwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmgKQEAgLTMwNyw2ICszMDcsMTggQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAg
ICAgICAgcmV0dXJuIEpTQzo6Y29uc3RydWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBhcnJh
eSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8PgorICAgIGlubGluZSBKU0M6OkpTVmFsdWUganNB
cnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgVmVjdG9yPGZsb2F0PiYgaXRlcmF0b3IpCisgICAgeworICAgICAgICBKU0M6Ok1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFycmF5OworICAgICAgICBWZWN0b3I8ZmxvYXQ+Ojpjb25zdF9p
dGVyYXRvciBlbmQgPSBpdGVyYXRvci5lbmQoKTsKKworICAgICAgICBmb3IgKFZlY3RvcjxmbG9h
dD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaXRlcmF0b3IuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQorICAgICAgICAgICAgYXJyYXkuYXBwZW5kKEpTQzo6anNOdW1iZXIoKml0KSk7CisKKyAgICAg
ICAgcmV0dXJuIEpTQzo6Y29uc3RydWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBhcnJheSk7
CisgICAgfQorCiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CiAgICAgVmVjdG9yPFQ+IHRvTmF0aXZl
QXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MzkzOTViZWRiZDJkZjlmYTQ3NGExNjc0NjgxNDA2OGU3N2Y5OTRlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcApAQCAtMCwwICsx
LDIyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBaYW4gRG9iZXJzZWsgPHphbmRvYmVy
c2VrQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Ogor
ICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAq
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNICisgKiBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkdhbWVwYWRzLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIkdhbWVwYWRE
ZXZpY2VMaW51eC5oIgorI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCisjaW5jbHVkZSA8Z2lvL2d1
bml4aW5wdXRzdHJlYW0uaD4KKyNpbmNsdWRlIDxndWRldi9ndWRldi5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBHYW1lcGFkRGV2aWNlR3RrIDogcHVibGljIEdhbWVwYWREZXZpY2VMaW51eCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8R2FtZXBhZERldmljZUd0az4gY3JlYXRlKFN0cmlu
ZyBkZXZpY2VGaWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHYW1lcGFk
RGV2aWNlR3RrKGRldmljZUZpbGUpKTsKKyAgICB9CisgICAgfkdhbWVwYWREZXZpY2VHdGsoKTsK
KworcHJpdmF0ZToKKyAgICBHYW1lcGFkRGV2aWNlR3RrKFN0cmluZyBkZXZpY2VGaWxlKTsKKwor
ICAgIHN0YXRpYyBnYm9vbGVhbiByZWFkQ2FsbGJhY2soR09iamVjdCogcG9sbGFibGVTdHJlYW0s
IGdwb2ludGVyIGRhdGEpOworICAgIEdSZWZQdHI8R0lucHV0U3RyZWFtPiBtX2lucHV0U3RyZWFt
OworICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7Cit9OworCitHYW1lcGFkRGV2aWNlR3Rr
OjpHYW1lcGFkRGV2aWNlR3RrKFN0cmluZyBkZXZpY2VGaWxlKQorICAgIDogR2FtZXBhZERldmlj
ZUxpbnV4KGRldmljZUZpbGUpCit7CisgICAgaWYgKG1fZmlsZURlc2NyaXB0b3IgPT0gLTEpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ191bml4X2lu
cHV0X3N0cmVhbV9uZXcobV9maWxlRGVzY3JpcHRvciwgRkFMU0UpKTsKKyAgICBtX3NvdXJjZSA9
IGFkb3B0R1JlZihnX3BvbGxhYmxlX2lucHV0X3N0cmVhbV9jcmVhdGVfc291cmNlKEdfUE9MTEFC
TEVfSU5QVVRfU1RSRUFNKG1faW5wdXRTdHJlYW0uZ2V0KCkpLCAwKSk7CisgICAgZ19zb3VyY2Vf
c2V0X2NhbGxiYWNrKG1fc291cmNlLmdldCgpLCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5j
PihyZWFkQ2FsbGJhY2spLCB0aGlzLCAwKTsKKyAgICBnX3NvdXJjZV9hdHRhY2gobV9zb3VyY2Uu
Z2V0KCksIDApOworfQorCitHYW1lcGFkRGV2aWNlR3RrOjp+R2FtZXBhZERldmljZUd0aygpCit7
CisgICAgaWYgKG1fc291cmNlKQorICAgICAgICBnX3NvdXJjZV9kZXN0cm95KG1fc291cmNlLmdl
dCgpKTsKK30KKworZ2Jvb2xlYW4gR2FtZXBhZERldmljZUd0azo6cmVhZENhbGxiYWNrKEdPYmpl
Y3QqIHBvbGxhYmxlU3RyZWFtLCBncG9pbnRlciBkYXRhKQoreworICAgIEdhbWVwYWREZXZpY2VH
dGsqIGdhbWVwYWREZXZpY2UgPSByZWludGVycHJldF9jYXN0PEdhbWVwYWREZXZpY2VHdGsqPihk
YXRhKTsKKyAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgc3RydWN0IGpzX2V2ZW50IGV2
ZW50OworCisgICAgZ3NzaXplIGxlbiA9IGdfcG9sbGFibGVfaW5wdXRfc3RyZWFtX3JlYWRfbm9u
YmxvY2tpbmcoR19QT0xMQUJMRV9JTlBVVF9TVFJFQU0ocG9sbGFibGVTdHJlYW0pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZldmVu
dCwgc2l6ZW9mKGV2ZW50KSwgMCwgJmVycm9yLm91dFB0cigpKTsKKworICAgIC8vIEZJWE1FOiBQ
cm9wZXJseSBsb2cgdGhlIGVycm9yLgorICAgIC8vIEluIHRoZSBjYXNlIG9mIEdfSU9fRVJST1Jf
V09VTERfQkxPQ0sgZXJyb3IgcmV0dXJuIFRSVUUgdG8gd2FpdCB1bnRpbAorICAgIC8vIHRoZSBz
b3VyY2UgYmVjb21lcyByZWFkYWJsZSBhZ2FpbiBhbmQgRkFMU0Ugb3RoZXJ3aXNlLgorICAgIGlm
IChlcnJvcikKKyAgICAgICAgcmV0dXJuIGdfZXJyb3JfbWF0Y2hlcyhlcnJvci5nZXQoKSwgR19J
T19FUlJPUiwgR19JT19FUlJPUl9XT1VMRF9CTE9DSyk7CisKKyAgICBBU1NFUlQobGVuID09IHNp
emVvZihldmVudCkpOworICAgIGdhbWVwYWREZXZpY2UtPnVwZGF0ZUZvckV2ZW50KGV2ZW50KTsK
KyAgICByZXR1cm4gVFJVRTsKK30KKworY2xhc3MgR2FtZXBhZHNHdGsgeworcHVibGljOgorICAg
IEdhbWVwYWRzR3RrKHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRGV2aWNl
KFN0cmluZyBkZXZpY2VGaWxlKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJEZXZpY2UoU3RyaW5nIGRl
dmljZUZpbGUpOworCisgICAgdm9pZCB1cGRhdGVHYW1lcGFkTGlzdChHYW1lcGFkTGlzdCopOwor
Citwcml2YXRlOgorICAgIH5HYW1lcGFkc0d0aygpOworICAgIHN0YXRpYyB2b2lkIG9uVUV2ZW50
Q2FsbGJhY2soR1VkZXZDbGllbnQqLCBnY2hhciogYWN0aW9uLCBHVWRldkRldmljZSosIGdwb2lu
dGVyIGRhdGEpOworICAgIHN0YXRpYyBnYm9vbGVhbiBpc0dhbWVwYWREZXZpY2UoR1VkZXZEZXZp
Y2UqKTsKKworICAgIFZlY3RvcjxPd25QdHI8R2FtZXBhZERldmljZUd0az4gPiBtX3Nsb3RzOwor
ICAgIEhhc2hNYXA8U3RyaW5nLCBHYW1lcGFkRGV2aWNlR3RrKj4gbV9kZXZpY2VNYXA7CisKKyAg
ICBHUmVmUHRyPEdVZGV2Q2xpZW50PiBtX2d1ZGV2Q2xpZW50OworfTsKKworR2FtZXBhZHNHdGs6
OkdhbWVwYWRzR3RrKHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IG1fc2xvdHMobGVuZ3RoKQorewor
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdWJzeXN0ZW1zW10gPSB7ICJpbnB1dCIsIDAgfTsKKyAg
ICBtX2d1ZGV2Q2xpZW50ID0gYWRvcHRHUmVmKGdfdWRldl9jbGllbnRfbmV3KHN1YnN5c3RlbXMp
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZ3VkZXZDbGllbnQuZ2V0KCksICJ1ZXZlbnQiLCBH
X0NBTExCQUNLKG9uVUV2ZW50Q2FsbGJhY2spLCB0aGlzKTsKKworICAgIEdPd25QdHI8R0xpc3Q+
IGRldmljZXNMaXN0KGdfdWRldl9jbGllbnRfcXVlcnlfYnlfc3Vic3lzdGVtKG1fZ3VkZXZDbGll
bnQuZ2V0KCksIHN1YnN5c3RlbXNbMF0pKTsKKyAgICBmb3IgKEdMaXN0KiBsaXN0SXRlbSA9IGRl
dmljZXNMaXN0LmdldCgpOyBsaXN0SXRlbTsgbGlzdEl0ZW0gPSBnX2xpc3RfbmV4dChsaXN0SXRl
bSkpIHsKKyAgICAgICAgR1VkZXZEZXZpY2UqIGRldmljZSA9IEdfVURFVl9ERVZJQ0UobGlzdEl0
ZW0tPmRhdGEpOworICAgICAgICBTdHJpbmcgZGV2aWNlRmlsZSA9IFN0cmluZzo6ZnJvbVVURjgo
Z191ZGV2X2RldmljZV9nZXRfZGV2aWNlX2ZpbGUoZGV2aWNlKSk7CisgICAgICAgIGlmIChpc0dh
bWVwYWREZXZpY2UoZGV2aWNlKSkKKyAgICAgICAgICAgIHJlZ2lzdGVyRGV2aWNlKGRldmljZUZp
bGUpOworICAgICAgICBnX29iamVjdF91bnJlZihkZXZpY2UpOworICAgIH0KK30KKworR2FtZXBh
ZHNHdGs6On5HYW1lcGFkc0d0aygpCit7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9tYXRjaGVkKG1fZ3VkZXZDbGllbnQuZ2V0KCksIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAs
IDAsIDAsIHRoaXMpOworfQorCit2b2lkIEdhbWVwYWRzR3RrOjpyZWdpc3RlckRldmljZShTdHJp
bmcgZGV2aWNlRmlsZSkKK3sKKyAgICBBU1NFUlQoIW1fZGV2aWNlTWFwLmNvbnRhaW5zKGRldmlj
ZUZpbGUpKTsKKworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG1fc2xvdHMu
c2l6ZSgpOyBpbmRleCsrKSB7CisgICAgICAgIGlmICghbV9zbG90c1tpbmRleF0pIHsKKyAgICAg
ICAgICAgIG1fc2xvdHNbaW5kZXhdID0gR2FtZXBhZERldmljZUd0azo6Y3JlYXRlKGRldmljZUZp
bGUpOworICAgICAgICAgICAgbV9kZXZpY2VNYXAuYWRkKGRldmljZUZpbGUsIG1fc2xvdHNbaW5k
ZXhdLmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIEdhbWVwYWRzR3RrOjp1bnJlZ2lzdGVyRGV2aWNlKFN0cmluZyBkZXZpY2VGaWxlKQorewor
ICAgIEFTU0VSVChtX2RldmljZU1hcC5jb250YWlucyhkZXZpY2VGaWxlKSk7CisKKyAgICBHYW1l
cGFkRGV2aWNlR3RrKiBnYW1lcGFkRGV2aWNlID0gbV9kZXZpY2VNYXAudGFrZShkZXZpY2VGaWxl
KTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IG1fc2xvdHMuZmluZChnYW1lcGFkRGV2aWNlKTsKKyAg
ICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOworCisgICAgbV9zbG90c1tpbmRleF0uY2xlYXIo
KTsKK30KKwordm9pZCBHYW1lcGFkc0d0azo6dXBkYXRlR2FtZXBhZExpc3QoR2FtZXBhZExpc3Qq
IGludG8pCit7CisgICAgQVNTRVJUKG1fc2xvdHMuc2l6ZSgpID09IGludG8tPmxlbmd0aCgpKTsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Nsb3RzLnNpemUoKTsgaSsrKSB7Cisg
ICAgICAgIGlmIChtX3Nsb3RzW2ldLmdldCgpICYmIG1fc2xvdHNbaV0tPmNvbm5lY3RlZCgpKSB7
CisgICAgICAgICAgICBHYW1lcGFkRGV2aWNlR3RrKiBnYW1lcGFkRGV2aWNlID0gbV9zbG90c1tp
XS5nZXQoKTsKKyAgICAgICAgICAgIFJlZlB0cjxHYW1lcGFkPiBnYW1lcGFkID0gaW50by0+aXRl
bShpKTsKKyAgICAgICAgICAgIGlmICghZ2FtZXBhZCkKKyAgICAgICAgICAgICAgICBnYW1lcGFk
ID0gR2FtZXBhZDo6Y3JlYXRlKCk7CisKKyAgICAgICAgICAgIGdhbWVwYWQtPmluZGV4KGkpOwor
ICAgICAgICAgICAgZ2FtZXBhZC0+aWQoZ2FtZXBhZERldmljZS0+aWQoKSk7CisgICAgICAgICAg
ICBnYW1lcGFkLT50aW1lc3RhbXAoZ2FtZXBhZERldmljZS0+dGltZXN0YW1wKCkpOworICAgICAg
ICAgICAgZ2FtZXBhZC0+YXhlcyhnYW1lcGFkRGV2aWNlLT5heGVzQ291bnQoKSwgZ2FtZXBhZERl
dmljZS0+YXhlc0RhdGEoKSk7CisgICAgICAgICAgICBnYW1lcGFkLT5idXR0b25zKGdhbWVwYWRE
ZXZpY2UtPmJ1dHRvbnNDb3VudCgpLCBnYW1lcGFkRGV2aWNlLT5idXR0b25zRGF0YSgpKTsKKwor
ICAgICAgICAgICAgaW50by0+c2V0KGksIGdhbWVwYWQpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGludG8tPnNldChpLCAwKTsKKyAgICB9Cit9CisKK3ZvaWQgR2FtZXBhZHNHdGs6Om9u
VUV2ZW50Q2FsbGJhY2soR1VkZXZDbGllbnQqIHVkZXZDbGllbnQsIGdjaGFyKiBhY3Rpb24sIEdV
ZGV2RGV2aWNlKiBkZXZpY2UsIGdwb2ludGVyIGRhdGEpCit7CisgICAgaWYgKCFpc0dhbWVwYWRE
ZXZpY2UoZGV2aWNlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR2FtZXBhZHNHdGsqIGdhbWVw
YWRzR3RrID0gcmVpbnRlcnByZXRfY2FzdDxHYW1lcGFkc0d0ayo+KGRhdGEpOworICAgIFN0cmlu
ZyBkZXZpY2VGaWxlID0gU3RyaW5nOjpmcm9tVVRGOChnX3VkZXZfZGV2aWNlX2dldF9kZXZpY2Vf
ZmlsZShkZXZpY2UpKTsKKworICAgIGlmICghZ19zdHJjbXAwKGFjdGlvbiwgImFkZCIpKQorICAg
ICAgICBnYW1lcGFkc0d0ay0+cmVnaXN0ZXJEZXZpY2UoZGV2aWNlRmlsZSk7CisgICAgZWxzZSBp
ZiAoIWdfc3RyY21wMChhY3Rpb24sICJyZW1vdmUiKSkKKyAgICAgICAgZ2FtZXBhZHNHdGstPnVu
cmVnaXN0ZXJEZXZpY2UoZGV2aWNlRmlsZSk7Cit9CisKK2dib29sZWFuIEdhbWVwYWRzR3RrOjpp
c0dhbWVwYWREZXZpY2UoR1VkZXZEZXZpY2UqIGRldmljZSkKK3sKKyAgICBjb25zdCBnY2hhciog
ZGV2aWNlRmlsZSA9IGdfdWRldl9kZXZpY2VfZ2V0X2RldmljZV9maWxlKGRldmljZSk7CisgICAg
Y29uc3QgZ2NoYXIqIHN5c2ZzUGF0aCA9IGdfdWRldl9kZXZpY2VfZ2V0X3N5c2ZzX3BhdGgoZGV2
aWNlKTsKKyAgICBpZiAoIWRldmljZUZpbGUgfHwgIXN5c2ZzUGF0aCkKKyAgICAgICAgcmV0dXJu
IEZBTFNFOworCisgICAgaWYgKCFnX3VkZXZfZGV2aWNlX2hhc19wcm9wZXJ0eShkZXZpY2UsICJJ
RF9JTlBVVCIpIHx8ICFnX3VkZXZfZGV2aWNlX2hhc19wcm9wZXJ0eShkZXZpY2UsICJJRF9JTlBV
VF9KT1lTVElDSyIpKQorICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICByZXR1cm4gZ19zdHJf
aGFzX3ByZWZpeChkZXZpY2VGaWxlLCAiL2Rldi9pbnB1dC9qcyIpOworfQorCit2b2lkIHNhbXBs
ZUdhbWVwYWRzKEdhbWVwYWRMaXN0KiBpbnRvKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
R2FtZXBhZHNHdGssIGdhbWVwYWRzR3RrLCAoaW50by0+bGVuZ3RoKCkpKTsKKyAgICBnYW1lcGFk
c0d0ay51cGRhdGVHYW1lcGFkTGlzdChpbnRvKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjViYzFi
NWQ0NWU0ZGIyMWYwZmYwNTY4NDkyMzVlMDJmZmYzNmU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcApAQCAtMCww
ICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFphbiBEb2JlcnNlayA8emFuZG9i
ZXJzZWtAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6
CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQor
ICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiR2FtZXBhZERldmljZUxpbnV4LmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1
ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0dhbWVwYWREZXZpY2VMaW51eDo6R2FtZXBhZERldmljZUxpbnV4KFN0cmluZyBkZXZpY2VGaWxl
KQorICAgIDogbV9maWxlRGVzY3JpcHRvcigtMSkKKyAgICAsIG1fY29ubmVjdGVkKGZhbHNlKQor
ICAgICwgbV9sYXN0VGltZXN0YW1wKDApCit7CisgICAgLy8gRklYTUU6IExvZyBlcnJvcnMgd2hl
biByZXR1cm5pbmcgZWFybHkuCisgICAgbV9maWxlRGVzY3JpcHRvciA9IG9wZW4oZGV2aWNlRmls
ZS51dGY4KCkuZGF0YSgpLCBPX1JET05MWSB8IE9fTk9OQkxPQ0spOworICAgIGlmIChtX2ZpbGVE
ZXNjcmlwdG9yID09IC0xKQorICAgICAgICByZXR1cm47CisKKyAgICBjaGFyIGRldmljZU5hbWVb
MTAyNF07CisgICAgaWYgKGlvY3RsKG1fZmlsZURlc2NyaXB0b3IsIEpTSU9DR05BTUUoc2l6ZW9m
KGRldmljZU5hbWUpKSwgZGV2aWNlTmFtZSkgPCAwKQorICAgICAgICByZXR1cm47CisgICAgbV9k
ZXZpY2VOYW1lID0gU3RyaW5nKGRldmljZU5hbWUpLnNpbXBsaWZ5V2hpdGVTcGFjZSgpOworCisg
ICAgdWludDhfdCBudW1iZXJPZkF4ZXM7CisgICAgdWludDhfdCBudW1iZXJPZkJ1dHRvbnM7Cisg
ICAgaWYgKGlvY3RsKG1fZmlsZURlc2NyaXB0b3IsIEpTSU9DR0FYRVMsICZudW1iZXJPZkF4ZXMp
IDwgMCB8fCBpb2N0bChtX2ZpbGVEZXNjcmlwdG9yLCBKU0lPQ0dCVVRUT05TLCAmbnVtYmVyT2ZC
dXR0b25zKSA8IDApCisgICAgICAgIHJldHVybjsKKyAgICBtX2F4ZXMuZmlsbCgwLjAsIG51bWJl
ck9mQXhlcyk7CisgICAgbV9idXR0b25zLmZpbGwoMC4wLCBudW1iZXJPZkJ1dHRvbnMpOworfQor
CitHYW1lcGFkRGV2aWNlTGludXg6On5HYW1lcGFkRGV2aWNlTGludXgoKQoreworICAgIGlmICht
X2ZpbGVEZXNjcmlwdG9yICE9IC0xKQorICAgICAgICBjbG9zZShtX2ZpbGVEZXNjcmlwdG9yKTsK
K30KKwordm9pZCBHYW1lcGFkRGV2aWNlTGludXg6OnVwZGF0ZUZvckV2ZW50KHN0cnVjdCBqc19l
dmVudCBldmVudCkKK3sKKyAgICBpZiAoIShldmVudC50eXBlICYgSlNfRVZFTlRfQVhJUyB8fCBl
dmVudC50eXBlICYgSlNfRVZFTlRfQlVUVE9OKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
TWFyayB0aGUgZGV2aWNlIGFzIGNvbm5lY3RlZCBvbmx5IGlmIGl0IGlzIG5vdCB5ZXQgY29ubmVj
dGVkLCB0aGUgZXZlbnQgaXMgbm90IGFuIGluaXRpYWxpemF0aW9uCisgICAgLy8gYW5kIHRoZSB2
YWx1ZSBpcyBub3QgMCAoaW5kaWNhdGluZyBhIGdlbnVpbmUgaW50ZXJhY3Rpb24gd2l0aCB0aGUg
ZGV2aWNlKS4KKyAgICBpZiAoIW1fY29ubmVjdGVkICYmICEoZXZlbnQudHlwZSAmIEpTX0VWRU5U
X0lOSVQpICYmIGV2ZW50LnZhbHVlKQorICAgICAgICBtX2Nvbm5lY3RlZCA9IHRydWU7CisKKyAg
ICBpZiAoZXZlbnQudHlwZSAmIEpTX0VWRU5UX0FYSVMpCisgICAgICAgIG1fYXhlc1tldmVudC5u
dW1iZXJdID0gbm9ybWFsaXplQXhpc1ZhbHVlKGV2ZW50LnZhbHVlKTsKKyAgICBlbHNlIGlmIChl
dmVudC50eXBlICYgSlNfRVZFTlRfQlVUVE9OKQorICAgICAgICBtX2J1dHRvbnNbZXZlbnQubnVt
YmVyXSA9IG5vcm1hbGl6ZUJ1dHRvblZhbHVlKGV2ZW50LnZhbHVlKTsKKworICAgIG1fbGFzdFRp
bWVzdGFtcCA9IGV2ZW50LnRpbWU7Cit9CisKK2Zsb2F0IEdhbWVwYWREZXZpY2VMaW51eDo6bm9y
bWFsaXplQXhpc1ZhbHVlKHNob3J0IHZhbHVlKQoreworICAgIC8vIE5vcm1hbGl6ZSBmcm9tIHJh
bmdlIFstMzI3NjcsIDMyNzY3XSBpbnRvIHJhbmdlIFstMS4wLCAxLjBdCisgICAgcmV0dXJuIHZh
bHVlIC8gMzI3NjcuMGY7Cit9CisKK2Zsb2F0IEdhbWVwYWREZXZpY2VMaW51eDo6bm9ybWFsaXpl
QnV0dG9uVmFsdWUoc2hvcnQgdmFsdWUpCit7CisgICAgLy8gTm9ybWFsaXplIGZyb20gcmFuZ2Ug
WzAsIDFdIGludG8gcmFuZ2UgWzAuMCwgMS4wXQorICAgIHJldHVybiB2YWx1ZSAvIDEuMGY7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxp
bnV4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXgu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNDg1ZTgzYTljZWNjMzMyNzZhODAwM2RmYTA2ZTU2MTNkNjNjMzdlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERl
dmljZUxpbnV4LmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBa
YW4gRG9iZXJzZWsgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICog
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBH
YW1lcGFkRGV2aWNlTGludXhfaAorI2RlZmluZSBHYW1lcGFkRGV2aWNlTGludXhfaAorCisjaWYg
RU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlIDxsaW51eC9qb3lzdGljay5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1lcGFkRGV2aWNlTGludXggeworcHVibGljOgorICAg
IGJvb2wgY29ubmVjdGVkKCkgeyByZXR1cm4gbV9jb25uZWN0ZWQ7IH07CisKKyAgICBTdHJpbmcg
aWQoKSB7IHJldHVybiBtX2RldmljZU5hbWU7IH0KKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGlt
ZXN0YW1wKCkgeyByZXR1cm4gbV9sYXN0VGltZXN0YW1wOyB9CisKKyAgICB1bnNpZ25lZCBheGVz
Q291bnQoKSB7IHJldHVybiBtX2F4ZXMuc2l6ZSgpOyB9CisgICAgZmxvYXQqIGF4ZXNEYXRhKCkg
eyByZXR1cm4gbV9heGVzLmRhdGEoKTsgfQorCisgICAgdW5zaWduZWQgYnV0dG9uc0NvdW50KCkg
eyByZXR1cm4gbV9idXR0b25zLnNpemUoKTsgfQorICAgIGZsb2F0KiBidXR0b25zRGF0YSgpIHsg
cmV0dXJuIG1fYnV0dG9ucy5kYXRhKCk7IH0KKworcHJvdGVjdGVkOgorICAgIEdhbWVwYWREZXZp
Y2VMaW51eChTdHJpbmcgZGV2aWNlRmlsZSk7CisgICAgfkdhbWVwYWREZXZpY2VMaW51eCgpOwor
CisgICAgdm9pZCB1cGRhdGVGb3JFdmVudChzdHJ1Y3QganNfZXZlbnQpOworICAgIGludCBtX2Zp
bGVEZXNjcmlwdG9yOworCitwcml2YXRlOgorICAgIGZsb2F0IG5vcm1hbGl6ZUF4aXNWYWx1ZShz
aG9ydCB2YWx1ZSk7CisgICAgZmxvYXQgbm9ybWFsaXplQnV0dG9uVmFsdWUoc2hvcnQgdmFsdWUp
OworCisgICAgYm9vbCBtX2Nvbm5lY3RlZDsKKyAgICBTdHJpbmcgbV9kZXZpY2VOYW1lOworICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBtX2xhc3RUaW1lc3RhbXA7CisKKyAgICBWZWN0b3I8ZmxvYXQ+
IG1fYXhlczsKKyAgICBWZWN0b3I8ZmxvYXQ+IG1fYnV0dG9uczsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQorCisjZW5kaWYgLy8gR2Ft
ZXBhZERldmljZUxpbnV4X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2Vm
aWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXggMTJlZTc2NWEz
Y2QyNmE3MTFmYzVjMWMzMjk0MzE5MGQ3YTM4ODRiYy4uZGIzYWZhZGE0N2Q1YTFmNzY2ZWY1MTgy
ZTU4ZWY3M2U5MzM3NWVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZp
bGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTg3LDYgKzg3
LDcgQEAgbGlid2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRH
VEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQkEKIAkkKEVOQ0hBTlRfTElCUykgXAogCSQoRlJF
RVRZUEVfTElCUykgXAogCSQoR0FJTF9MSUJTKSBcCisJJChHQU1FUEFEX0xJQlMpIFwKIAkkKEdF
T0NMVUVfTElCUykgXAogCSQoR0xJQl9MSUJTKSBcCiAJJChHU1RSRUFNRVJfTElCUykgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQppbmRleCAwMTZkNjgxOTdmNmIxOWY4N2RmYzJjNmU1YTRjNDFhYTA5Yjkw
ZGYxLi4xNWE2OWY5NzMzOWRjMWMwNDk1MTljODk4N2FkNmJmMTdiOGQzYWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQpAQCAtMTYwLDYgKzE2MCw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19B
UElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCCiAJ
JChDT1ZFUkFHRV9MREZMQUdTKSBcCiAJJChFTkNIQU5UX0xJQlMpIFwKIAkkKEdBSUxfTElCUykg
XAorCSQoR0FNRVBBRF9MSUJTKSBcCiAJJChHRU9DTFVFX0xJQlMpIFwKIAkkKEdMSUJfTElCUykg
XAogCSQoR1NUUkVBTUVSX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBiNTYzZjhlOTE4ODA5ZWM3NjcwNjVkMzJiNjYwNWNhZDgxMTFk
OTc3Li4wNTA2YzQzYTE0MWM5MmUwYTgzZjlkOWMwODM4NzlhZTViNTZkNGZkIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDYtMjUgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKworICAg
ICAgICBbR3RrXSBBZGQgc3VwcG9ydCBmb3IgdGhlIEdhbWVwYWQgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzUwMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSB0aGUgZ2FtZXBhZCBzdXBw
b3J0IGZvciB0aGUgR1RLIHBvcnQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG06CisKIDIwMTItMDYtMjUgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21h
bm5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IFdpbjMyIGRlYnVnIGJ1aWxkCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggMGYwMzNhYzU1NDllZTVjNzk3
YmYxMjA0YTM1NjcxOTVjNDk2NWRhZC4uODg4ZGIzOGQyMjBhYjNmZjRlZjFlODIxMjEwNWExODA1
MjQ5ODBlOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0
LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjE0
LDcgKzIxNCw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0ZV
TExTQ1JFRU5fQVBJIiwgZGVmYXVsdCA9PiAoaXNBcHBsZU1hY1dlYktpdCgpIHx8IGlzRWZsKCkg
fHwgaXNHdGsoKSB8fCBpc0JsYWNrQmVycnkoKSB8fCBpc1F0KCkpLCB2YWx1ZSA9PiBcJGZ1bGxz
Y3JlZW5BUElTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiZ2FtZXBhZCIsIGRlc2MgPT4g
IlRvZ2dsZSBHYW1lcGFkIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfR0FNRVBB
RCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRnYW1lcGFkU3VwcG9ydCB9LAorICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfR0FNRVBBRCIsIGRlZmF1bHQgPT4gaXNHdGsoKSwgdmFsdWUgPT4gXCRn
YW1lcGFkU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImdlb2xvY2F0aW9uIiwgZGVzYyA9
PiAiVG9nZ2xlIEdlb2xvY2F0aW9uIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
R0VPTE9DQVRJT04iLCBkZWZhdWx0ID0+IChpc0FwcGxlV2ViS2l0KCkgfHwgaXNHdGsoKSB8fCBp
c0JsYWNrQmVycnkoKSksIHZhbHVlID0+IFwkZ2VvbG9jYXRpb25TdXBwb3J0IH0sCmRpZmYgLS1n
aXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMDAwOTJjNmM0ODllNDZjMTVkNTBlZTEx
NzA1Y2Y1Mjc1YTJjNDJmNS4uZDAwNDlhZWMxMTUwMzBjZjgwY2VlYTI3YzhiN2VlOGE2MDdmNTgy
MCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDEyLTA2LTI1ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAg
ICAgICAgW0d0a10gQWRkIHN1cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbmx5IGVuYWJsZSB0aGUgR2FtZXBh
ZCBmZWF0dXJlIG9uIExpbnV4IGFzIHN1cHBvcnQKKyAgICAgICAgZm9yIG90aGVyIG9wZXJhdGlu
ZyBzeXN0ZW1zIGlzIG5vdCBwcmVzZW50LgorCisgICAgICAgIENoZWNrIGZvciB0aGUgR0lPIFVu
aXggYW5kIEdVZGV2IGRlcGVuZGVuY2llcyB3aGVuIHRoZQorICAgICAgICBHYW1lcGFkIGZlYXR1
cmUgaXMgZW5hYmxlZC4KKworICAgICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAxMi0wNi0yNSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gVXBkYXRlIE5FV1MgYW5kIGNvbmZpZ3VyZS5hYyBmb3IgMS45LjQgcmVsZWFzZQpk
aWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGU2Y2IyMjBlMWI2
YWY3NDVkZjQ3YTdiMGVjM2RiYjNjOTg5YTQ1YTMuLmU5Y2NmZmYzOWY4MGNlODgwNWIxNzg3NWI5
YzFiNWEyNzg3MWVlMGEgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUu
YWMKQEAgLTY1Myw2ICs2NTMsMTEgQEAgQUNfQVJHX0VOQUJMRShnYW1lcGFkLAogICAgICAgICAg
ICAgICBbXSxbZW5hYmxlX2dhbWVwYWQ9Im5vIl0pCiBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX2dh
bWVwYWRdKQogCitpZiB0ZXN0ICIkZW5hYmxlX2dhbWVwYWQiID0gInllcyIgJiYgdGVzdCAiJG9z
X2xpbnV4IiA9IG5vOyB0aGVuCisgICBBQ19NU0dfV0FSTihbR2FtZXBhZCBzdXBwb3J0IGlzIG9u
bHkgYXZhaWxhYmxlIG9uIExpbnV4LiBEaXNhYmxpbmcgR2FtZXBhZCBzdXBwb3J0Ll0pCisgICBl
bmFibGVfZ2FtZXBhZD1ubzsKK2ZpCisKICMgY2hlY2sgd2hldGhlciB0byBidWlsZCB3aXRoIGRh
dGEgdHJhbnNmZXIgaXRlbXMgc3VwcG9ydAogQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVu
YWJsZSBIVE1MNSBkYXRhIHRyYW5zZmVyIGl0ZW1zIHN1cHBvcnRdKQogQUNfQVJHX0VOQUJMRShk
YXRhX3RyYW5zZmVyX2l0ZW1zLApAQCAtMTI3Niw2ICsxMjgxLDEzIEBAIGlmIHRlc3QgIiRlbmFi
bGVfd2Via2l0MiIgPSAieWVzIjsgdGhlbgogICAgQUNfU1VCU1QoW0FUU1BJMl9MSUJTXSkKIGZp
CiAKK2lmIHRlc3QgIiRlbmFibGVfZ2FtZXBhZCIgPSAieWVzIjsgdGhlbgorICAgUEtHX0NIRUNL
X01PRFVMRVMoW0dBTUVQQURdLCBbZ2lvLXVuaXgtMi4wIGd1ZGV2LTEuMF0pCisKKyAgIEFDX1NV
QlNUKEdBTUVQQURfQ0ZMQUdTKQorICAgQUNfU1VCU1QoR0FNRVBBRF9MSUJTKQorZmkKKwogIyBj
aGVjayBmb3IgY29kZSBjb3ZlcmFnZSBzdXBwb3J0CiBpZiB0ZXN0ICIkZW5hYmxlX2NvdmVyYWdl
IiA9ICJ5ZXMiOyB0aGVuCiAgICBDT1ZFUkFHRV9DRkxBR1M9Ii1NRCIK
</data>

          </attachment>
      

    </bug>

</bugzilla>