<?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>80691</bug_id>
          
          <creation_ts>2012-03-09 02:41:34 -0800</creation_ts>
          <short_desc>[Qt] X11 plugins need to be reworked for Qt5+WK1</short_desc>
          <delta_ts>2012-05-16 09:45:28 -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>Plug-ins</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>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>79668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fehér Zsolt">feherzs</reporter>
          <assigned_to name="Balazs Kelemen">kbalazs</assigned_to>
          <cc>hausmann</cc>
    
    <cc>kbalazs</cc>
    
    <cc>kenneth</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>574762</commentid>
    <comment_count>0</comment_count>
      <attachid>131018</attachid>
    <who name="Fehér Zsolt">feherzs</who>
    <bug_when>2012-03-09 02:41:34 -0800</bug_when>
    <thetext>Created attachment 131018
Patch Wk1

The video don&apos;t work in this patch.
Any idea why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585144</commentid>
    <comment_count>1</comment_count>
      <attachid>133229</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-03-22 05:22:32 -0700</bug_when>
    <thetext>Created attachment 133229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602965</commentid>
    <comment_count>2</comment_count>
      <attachid>133229</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-04-16 01:30:01 -0700</bug_when>
    <thetext>Comment on attachment 133229
Patch

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

Looks good in general, but I have a couple of nitpicks. I have the feeling that there&apos;s a bit more code that can be shared and that there may be ways of getting access to the things like window handles.

&gt; Source/WebCore/plugins/qt/PluginPackageQt.cpp:143
&gt; +    const QLatin1String pluginBlackList[] = {
&gt; +        QStringLiteral(&quot;skypebuttons&quot;)

Type mismatch :)

&gt; Source/WebCore/plugins/qt/PluginPackageQt.cpp:150
&gt; +    QString baseName = QFileInfo(static_cast&lt;QString&gt;(m_path)).baseName();
&gt; +    for (unsigned i = 0; i &lt; sizeof(pluginBlackList) / sizeof(QLatin1String); ++i) {
&gt; +        if (baseName == pluginBlackList[i])
&gt; +            return false;
&gt; +    }

Would it perhaps make sense to use a pattern here similar to PluginPackageWin with a dedicated isPluginBlacklisted() method? (just for clarity)

&gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:122
&gt; +#if HAVE(QT5)
&gt; +    static Display* dedicatedDisplay = 0;
&gt; +    if (!dedicatedDisplay)
&gt; +        dedicatedDisplay = XOpenDisplay(0);
&gt; +    ASSERT(dedicatedDisplay);
&gt; +    return dedicatedDisplay;
&gt; +#else

Any particular reason for a dedicated display connection? Perhaps the xcb implementation of QPlatformNativeInterface::nativeResourceForWindow could return the default display if no window pointer is passed.

&gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:133
&gt; +#if HAVE(QT5)
&gt; +    return XDefaultScreen(x11Display());
&gt; +#else
&gt; +    return QX11Info::appScreen();
&gt; +#endif

Why not always use XDefaultScreen?

The Qt4 implementation appears to cache the return value of XDefaultScreen. I think it would be good to check if recent xcb/xlib always does a round-trip or also caches, and if it does cache then I don&apos;t see any harm in simply using XDefaultScreen with all Qt versions (or we cache ourselves).

&gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:142
&gt; +#if HAVE(QT5)
&gt; +    return XDefaultRootWindow(x11Display());
&gt; +#else
&gt; +    return QX11Info::appRootWindow();
&gt; +#endif

Ditto :)

&gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:151
&gt; +#if HAVE(QT5)
&gt; +    return XDefaultDepth(x11Display(), x11Screen());
&gt; +#else
&gt; +    return static_cast&lt;QWidget*&gt;(platformPluginWidget())-&gt;x11Info().depth();
&gt; +#endif

Ditto ;)

&gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:160
&gt; +#if HAVE(QT5)
&gt; +    XSync(x11Display(), false);
&gt; +#else
&gt; +    QApplication::syncX();
&gt; +#endif

Same here, perhaps we can avoid the #ifdefs altogether...

&gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:250
&gt; +#if !HAVE(QT5)
&gt;      if (platformPluginWidget()) {
&gt;          if (focused)
&gt;              static_cast&lt;QWidget*&gt;(platformPluginWidget())-&gt;setFocus(Qt::OtherFocusReason);
&gt; -    } else {
&gt; +    } else
&gt; +#endif

Hm, I suppose you commented this out because we cannot use QWidget methods here? I recall running into a similar issue with widget visibility when removing the widgets dependency from WebCore and I just added a hook in QWebPageClient (setWidgetVisible). The same could be done for focus, to avoid regressing here.

&gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:417
&gt; +#if HAVE(QT5)
&gt; +    xEvent-&gt;xany.window = 0;
&gt; +#else

Isn&apos;t there a way to still get the window handle for ownerWidget?

&gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:954
&gt; +#if HAVE(QT5)
&gt; +    if (m_isWindowed)
&gt; +        return false;
&gt; +#else

I think the fact that we skip this branch for Qt 5 deserves a short explaining comment.

&gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:1024
&gt; +            bool found = getVisualAndColormap(depth, m_visual, m_colormap, false);

Please use /* forceARGB32 = */ false instead of just false to increase the readability of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602987</commentid>
    <comment_count>3</comment_count>
      <attachid>133229</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-04-16 01:51:34 -0700</bug_when>
    <thetext>Comment on attachment 133229
Patch

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

&gt;&gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:122
&gt;&gt; +#else
&gt; 
&gt; Any particular reason for a dedicated display connection? Perhaps the xcb implementation of QPlatformNativeInterface::nativeResourceForWindow could return the default display if no window pointer is passed.

I just checked, calling nativeResouceForWindow(&quot;display&quot;, 0) should work and return the primary display.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603033</commentid>
    <comment_count>4</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-04-16 04:18:35 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 133229 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133229&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:122
&gt; &gt;&gt; +#else
&gt; &gt; 
&gt; &gt; Any particular reason for a dedicated display connection? Perhaps the xcb implementation of QPlatformNativeInterface::nativeResourceForWindow could return the default display if no window pointer is passed.
&gt; 
&gt; I just checked, calling nativeResouceForWindow(&quot;display&quot;, 0) should work and return the primary display.

Cool. I think I should take a deeper look to these new QPlatformNativeInterface getters before continuing to work on this. Maybe there is also a way to avoid copying the frames from the server in which case the patch needs a bigger reworking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608620</commentid>
    <comment_count>5</comment_count>
      <attachid>138551</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-04-24 07:01:23 -0700</bug_when>
    <thetext>Created attachment 138551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608631</commentid>
    <comment_count>6</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-04-24 07:17:34 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 133229 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133229&amp;action=review
&gt; 
&gt; Looks good in general, but I have a couple of nitpicks. I have the feeling that there&apos;s a bit more code that can be shared and that there may be ways of getting access to the things like window handles.
&gt; 
&gt; &gt; Source/WebCore/plugins/qt/PluginPackageQt.cpp:143
&gt; &gt; +    const QLatin1String pluginBlackList[] = {
&gt; &gt; +        QStringLiteral(&quot;skypebuttons&quot;)
&gt; 
&gt; Type mismatch :)

Fixed.
 
&gt; &gt; Source/WebCore/plugins/qt/PluginPackageQt.cpp:150
&gt; &gt; +    QString baseName = QFileInfo(static_cast&lt;QString&gt;(m_path)).baseName();
&gt; &gt; +    for (unsigned i = 0; i &lt; sizeof(pluginBlackList) / sizeof(QLatin1String); ++i) {
&gt; &gt; +        if (baseName == pluginBlackList[i])
&gt; &gt; +            return false;
&gt; &gt; +    }
 
Fixed.

&gt; Would it perhaps make sense to use a pattern here similar to PluginPackageWin with a dedicated isPluginBlacklisted() method? (just for clarity)

Fixed. 

&gt; 
&gt; &gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:122
&gt; &gt; +#if HAVE(QT5)
&gt; &gt; +    static Display* dedicatedDisplay = 0;
&gt; &gt; +    if (!dedicatedDisplay)
&gt; &gt; +        dedicatedDisplay = XOpenDisplay(0);
&gt; &gt; +    ASSERT(dedicatedDisplay);
&gt; &gt; +    return dedicatedDisplay;
&gt; &gt; +#else
&gt; 
&gt; Any particular reason for a dedicated display connection? Perhaps the xcb implementation of QPlatformNativeInterface::nativeResourceForWindow could return the default display if no window pointer is passed.
&gt; 

I have changed the patch to use nativeResourceForWindow, and also added a cache for these values (and removed the ifdefs). Unfortunately it&apos;s a bit overkill. We need the top level QWindow, but for QGraphicsWidget I did not find any other way to get it other than QApplicationPrivate::windowForWidgets. This means we need to add &quot;QT+=widgets-private gui-private core-private&quot; (the latter two is necessary unless include paths are broken). I guess using a dedicated connection is not worst technically, so maybe it&apos;s better to go with that.
I can redid this part of the patch if you agree with that.

&gt; 
&gt; &gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:250
&gt; &gt; +#if !HAVE(QT5)
&gt; &gt;      if (platformPluginWidget()) {
&gt; &gt;          if (focused)
&gt; &gt;              static_cast&lt;QWidget*&gt;(platformPluginWidget())-&gt;setFocus(Qt::OtherFocusReason);
&gt; &gt; -    } else {
&gt; &gt; +    } else
&gt; &gt; +#endif
&gt; 
&gt; Hm, I suppose you commented this out because we cannot use QWidget methods here? I recall running into a similar issue with widget visibility when removing the widgets dependency from WebCore and I just added a hook in QWebPageClient (setWidgetVisible). The same could be done for focus, to avoid regressing here.

There is no need to do that now since platformPluginWidget() is always null for windowless plugins and I only implemented them. Added a comment to make it clear.

&gt; 
&gt; &gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:417
&gt; &gt; +#if HAVE(QT5)
&gt; &gt; +    xEvent-&gt;xany.window = 0;
&gt; &gt; +#else
&gt; 
&gt; Isn&apos;t there a way to still get the window handle for ownerWidget?

Fixed, but also this is not important for windowless plugins.

&gt; 
&gt; &gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:954
&gt; &gt; +#if HAVE(QT5)
&gt; &gt; +    if (m_isWindowed)
&gt; &gt; +        return false;
&gt; &gt; +#else
&gt; 
&gt; I think the fact that we skip this branch for Qt 5 deserves a short explaining comment.

Added comment.

&gt; 
&gt; &gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:1024
&gt; &gt; +            bool found = getVisualAndColormap(depth, m_visual, m_colormap, false);
&gt; 
&gt; Please use /* forceARGB32 = */ false instead of just false to increase the readability of the code.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608634</commentid>
    <comment_count>7</comment_count>
      <attachid>138551</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-24 07:18:18 -0700</bug_when>
    <thetext>Comment on attachment 138551
Patch

Attachment 138551 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12523238</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608638</commentid>
    <comment_count>8</comment_count>
      <attachid>138555</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-04-24 07:22:55 -0700</bug_when>
    <thetext>Created attachment 138555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608657</commentid>
    <comment_count>9</comment_count>
      <attachid>138555</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-24 07:48:53 -0700</bug_when>
    <thetext>Comment on attachment 138555
Patch

Attachment 138555 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12520221</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608792</commentid>
    <comment_count>10</comment_count>
      <attachid>138588</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-04-24 10:03:32 -0700</bug_when>
    <thetext>Created attachment 138588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614476</commentid>
    <comment_count>11</comment_count>
      <attachid>138588</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-05-02 11:34:17 -0700</bug_when>
    <thetext>Comment on attachment 138588
Patch

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

&gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:940
&gt; +        QWebPageClient* pageClient = platformPageClient();
&gt; +        if (!pageClient)
&gt; +            return false;
&gt; +        QWindow* window = pageClient-&gt;ownerWindow();
&gt; +        display = static_cast&lt;Display*&gt;(QGuiApplication::platformNativeInterface()-&gt;nativeResourceForWindow(&quot;display&quot;, window));

I don&apos;t think you need all this and instead can simply use

    display = static_cast&lt;Display*&gt;(QGuiApplication::platformNativeInterface()-&gt;nativeResourceForWindow(&quot;display&quot;, 0));

Functionally that&apos;s equivalent to QX11Info::display() I believe.

&gt; Source/WebKit/qt/WebCoreSupport/PageClientQt.cpp:497
&gt; +    return ownerWidget() ? QApplicationPrivate::windowForWidget(ownerWidget()) : 0;

Looking at the implementation of windowForWidget makes me wonder: Why not simply do what this function does ourselves and thus avoid the dependency to private API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617619</commentid>
    <comment_count>12</comment_count>
      <attachid>140532</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-05-07 08:41:15 -0700</bug_when>
    <thetext>Created attachment 140532
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617620</commentid>
    <comment_count>13</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-05-07 08:41:50 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 138588 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138588&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/plugins/qt/PluginViewQt.cpp:940
&gt; &gt; +        QWebPageClient* pageClient = platformPageClient();
&gt; &gt; +        if (!pageClient)
&gt; &gt; +            return false;
&gt; &gt; +        QWindow* window = pageClient-&gt;ownerWindow();
&gt; &gt; +        display = static_cast&lt;Display*&gt;(QGuiApplication::platformNativeInterface()-&gt;nativeResourceForWindow(&quot;display&quot;, window));
&gt; 
&gt; I don&apos;t think you need all this and instead can simply use
&gt; 
&gt;     display = static_cast&lt;Display*&gt;(QGuiApplication::platformNativeInterface()-&gt;nativeResourceForWindow(&quot;display&quot;, 0));
&gt; 
&gt; Functionally that&apos;s equivalent to QX11Info::display() I believe.

Done.

&gt; 
&gt; &gt; Source/WebKit/qt/WebCoreSupport/PageClientQt.cpp:497
&gt; &gt; +    return ownerWidget() ? QApplicationPrivate::windowForWidget(ownerWidget()) : 0;
&gt; 
&gt; Looking at the implementation of windowForWidget makes me wonder: Why not simply do what this function does ourselves and thus avoid the dependency to private API?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617866</commentid>
    <comment_count>14</comment_count>
      <attachid>140532</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-05-07 13:15:20 -0700</bug_when>
    <thetext>Comment on attachment 140532
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        No new tests, covered by existing plugin tests.

... that I suppose can be unskipped now in the qt5 skip file? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617993</commentid>
    <comment_count>15</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-05-07 15:16:58 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 140532 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140532&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        No new tests, covered by existing plugin tests.
&gt; 
&gt; ... that I suppose can be unskipped now in the qt5 skip file? :)

Unfortunately not yet, because of this bug: #83024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618005</commentid>
    <comment_count>16</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-05-07 15:25:22 -0700</bug_when>
    <thetext>&gt; Unfortunately not yet, because of this bug: #83024

Hm, I thought it works. So, the bug is wkb.ug/83024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618419</commentid>
    <comment_count>17</comment_count>
      <attachid>140532</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-05-08 01:41:48 -0700</bug_when>
    <thetext>Comment on attachment 140532
Patch

Clearing flags on attachment: 140532

Committed r116403: &lt;http://trac.webkit.org/changeset/116403&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618420</commentid>
    <comment_count>18</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-05-08 01:41:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618733</commentid>
    <comment_count>19</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-05-08 13:00:34 -0700</bug_when>
    <thetext>Reopen this one too. https://bugs.webkit.org/show_bug.cgi?id=83024 made tests crash on Qt-WK2 bot once ... Now this one made the same tests crash:
- compositing/repaint/become-overlay-composited-layer.html
- fast/frames/iframe-remove-after-id-change.html

Could you check it? It seems there is a serious bug near plugins on Qt-WK2.
(FYI: I double checked and reverted this patch locally and everything works.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619302</commentid>
    <comment_count>20</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-05-09 02:25:48 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Reopen this one too. https://bugs.webkit.org/show_bug.cgi?id=83024 made tests crash on Qt-WK2 bot once ... Now this one made the same tests crash:
&gt; - compositing/repaint/become-overlay-composited-layer.html
&gt; - fast/frames/iframe-remove-after-id-change.html
&gt; 
&gt; Could you check it? It seems there is a serious bug near plugins on Qt-WK2.
&gt; (FYI: I double checked and reverted this patch locally and everything works.)

Thanks for pointing this out. I think it is some issue with accelerated compositing. The backtraces I get when tried to debug these crashes with the testnetscapeplugin patch supports this theory. My knowladge is extremely limited in AC but I know that plugins can be a reason why a layer become accelerated. I will try to find some time debugging in this week but I won&apos;t promise I will be able to solve this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620590</commentid>
    <comment_count>21</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-05-10 08:08:32 -0700</bug_when>
    <thetext>Are you guys working on fixing these crashes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621378</commentid>
    <comment_count>22</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-05-11 01:25:32 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Are you guys working on fixing these crashes?

I promise I will :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623910</commentid>
    <comment_count>23</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-05-15 05:00:50 -0700</bug_when>
    <thetext>I think we are hitten by an nrwt bug. I could not reproduce any crash, even when nrwt reports crashes there is no core dump generated (with ulimit -c unlimited), so I think this is a false alarm from nrwt. Filed https://bugs.webkit.org/show_bug.cgi?id=86467. It&apos;s still a question how it is related to plugins and what can we do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625354</commentid>
    <comment_count>24</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-05-16 06:40:02 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; I think we are hitten by an nrwt bug. I could not reproduce any crash, even when nrwt reports crashes there is no core dump generated (with ulimit -c unlimited), so I think this is a false alarm from nrwt. Filed https://bugs.webkit.org/show_bug.cgi?id=86467. It&apos;s still a question how it is related to plugins and what can we do.

I was wrong. This is not an nrwt bug. What really happening is that the web process is somehow blocked while waiting for the plugin process connection. The tests that actually crash are not using plugins so it is likely a result of a previous test. It is considered as a crash because WTR reports crash if the web process don&apos;t answer back when it should reset the default settings before a new test. Maybe this should be improved. This patch triggered this problem because it turned on the build of the test netscape plugin. The long term solution is to fix the blocking bug but I would like to avoid the crashers ASAP.
There is two possible solution for that:
 * move all tests that use plugins to the skip list
 * remove testnetscapeplugin from the build until fix

I vote for the second choice because:
 * some of these tests can work without the test plugin. These are usually test some behaviour in connection to plugins but don&apos;t really test the plugin itself.
 * no need to skip new tests that use plugins in some way (use the obect or embed tags)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625370</commentid>
    <comment_count>25</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-05-16 06:58:07 -0700</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=86620</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625553</commentid>
    <comment_count>26</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-05-16 09:45:28 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Filed https://bugs.webkit.org/show_bug.cgi?id=86620

Workaround landed, crashed disappeared.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131018</attachid>
            <date>2012-03-09 02:41:34 -0800</date>
            <delta_ts>2012-03-22 05:22:24 -0700</delta_ts>
            <desc>Patch Wk1</desc>
            <filename>diff_2012_03_09_bugriport.txt</filename>
            <type>text/plain</type>
            <size>23023</size>
            <attacher name="Fehér Zsolt">feherzs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCmluZGV4IDcyNTdjNTYuLmUxNDRjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjkwOCwx
MSArMjkwOCwxMSBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQ
ST0xKSB7CiAgICAgICAgICAgICAgICAgcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbQogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgU09VUkNFUyArPSBcCi0gICAgICAgICAgICAgICAg
cGx1Z2lucy9xdC9QbHVnaW5Db250YWluZXJRdC5jcHAgXAorICAgICAgICAgICAgICAgIyBwbHVn
aW5zL3F0L1BsdWdpbkNvbnRhaW5lclF0LmNwcCBcCiAgICAgICAgICAgICAgICAgcGx1Z2lucy9x
dC9QbHVnaW5QYWNrYWdlUXQuY3BwIFwKICAgICAgICAgICAgICAgICBwbHVnaW5zL3F0L1BsdWdp
blZpZXdRdC5jcHAKICAgICAgICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAgICAgICAgIHBs
dWdpbnMvcXQvUGx1Z2luQ29udGFpbmVyUXQuaAorICAgICAgICAgICAgICAgICNwbHVnaW5zL3F0
L1BsdWdpbkNvbnRhaW5lclF0LmgKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNzQ5ZjYwOS4uMjU1ZjkwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC04MzIsNyArODMyLDcgQEAgUGx1Z2luVmlldzo6UGx1
Z2luVmlldyhGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUmIHNpemUsIFBsdWdpblBh
Y2thZ2UqIHAKICNpZiBkZWZpbmVkKFhQX01BQ09TWCkKICAgICAsIG1faXNXaW5kb3dlZChmYWxz
ZSkKICNlbHNlCi0gICAgLCBtX2lzV2luZG93ZWQodHJ1ZSkKKyAgICAsIG1faXNXaW5kb3dlZChm
YWxzZSkKICNlbmRpZgogICAgICwgbV9pc1RyYW5zcGFyZW50KGZhbHNlKQogICAgICwgbV9oYXZl
SW5pdGlhbGl6ZWQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGNi
M2VlNDIuLmEwMTJjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0yNDgs
NiArMjQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiAgICAgICAgIHN0YXRpYyB2b2lkIGtlZXBBbGl2ZShOUFApOworICAgICAgICBz
dGF0aWMgRGlzcGxheSogeDExSG9zdERpc3BsYXkoKTsKICNlbmRpZgogICAgICAgICB2b2lkIGtl
ZXBBbGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdp
blZpZXdRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAK
aW5kZXggZTJjNTVjZi4uOTI2ZWZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9xdC9QbHVnaW5WaWV3UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1
Z2luVmlld1F0LmNwcApAQCAtNTgsMTAgKzU4LDExIEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRF
dmVudC5oIgotI2luY2x1ZGUgIlBsdWdpbkNvbnRhaW5lclF0LmgiCisvLyAjaW5jbHVkZSAiUGx1
Z2luQ29udGFpbmVyUXQuaCIKICNpbmNsdWRlICJQbHVnaW5EZWJ1Zy5oIgogI2luY2x1ZGUgIlBs
dWdpblBhY2thZ2UuaCIKICNpbmNsdWRlICJQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmgiCisj
aW5jbHVkZSAiUXRYMTFJbWFnZUNvbnZlcnNpb24uaCIKICNpbmNsdWRlICJRV2ViUGFnZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAg
LTc3LDcgKzc4LDcgQEAKICNpbmNsdWRlIDxRUGFpbnRlcj4KICNpbmNsdWRlIDxRU3R5bGVPcHRp
b25HcmFwaGljc0l0ZW0+CiAjaW5jbHVkZSA8UVdpZGdldD4KLSNpbmNsdWRlIDxRWDExSW5mbz4K
Ky8vICNpbmNsdWRlIDxRWDExSW5mbz4KICNpbmNsdWRlIDxYMTEvWC5oPgogI2lmbmRlZiBRVF9O
T19YUkVOREVSCiAjZGVmaW5lIEJvb2wgaW50CkBAIC0xMjIsNiArMTIzLDIxIEBAIHByaXZhdGU6
CiAgICAgUGx1Z2luVmlldyogbV92aWV3OwogfTsKIAorc3RhdGljIGlubGluZSBpbnQgeDExU2Ny
ZWVuKCkKK3sKKyAgICByZXR1cm4gWERlZmF1bHRTY3JlZW4oUGx1Z2luVmlldzo6eDExSG9zdERp
c3BsYXkoKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGRpc3BsYXlEZXB0aCgpCit7CisgICAg
cmV0dXJuIFhEZWZhdWx0RGVwdGgoUGx1Z2luVmlldzo6eDExSG9zdERpc3BsYXkoKSwgeDExU2Ny
ZWVuKCkpOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lEKCkK
K3sKKyAgICByZXR1cm4gWERlZmF1bHRSb290V2luZG93KFBsdWdpblZpZXc6OngxMUhvc3REaXNw
bGF5KCkpOworfQorCiBib29sIFBsdWdpblZpZXc6OnNob3VsZFVzZUFjY2VsZXJhdGVkQ29tcG9z
aXRpbmcoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcmVudEZyYW1lLT5wYWdlKCktPmNocm9t
ZSgpLT5jbGllbnQoKS0+YWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpCkBAIC0xNDksMTYg
KzE2NSwxOSBAQCB2b2lkIFBsdWdpblZpZXc6OnVwZGF0ZVBsdWdpbldpZGdldCgpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIFRoZSBwbHVnaW4gaGFkIGEgemVybyB3aWR0aCBvciBoZWlnaHQg
YmVmb3JlIGJ1dCB3YXMgcmVzaXplZCwgd2UgbmVlZCB0byBzaG93IGl0IGFnYWluLgotICAgIGlm
IChvbGRXaW5kb3dSZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAob2xkV2luZG93UmVjdC5pc0VtcHR5
KCkpIHsKICAgICAgICAgc2hvdygpOworICAgIH0KIAogICAgIGlmICghbV9pc1dpbmRvd2VkICYm
IG1fd2luZG93UmVjdC5zaXplKCkgIT0gb2xkV2luZG93UmVjdC5zaXplKCkpIHsKICAgICAgICAg
aWYgKG1fZHJhd2FibGUpCi0gICAgICAgICAgICBYRnJlZVBpeG1hcChRWDExSW5mbzo6ZGlzcGxh
eSgpLCBtX2RyYXdhYmxlKTsKKyAgICAgICAgICAgIFhGcmVlUGl4bWFwKHgxMUhvc3REaXNwbGF5
KCksIG1fZHJhd2FibGUpOwogCi0gICAgICAgIG1fZHJhd2FibGUgPSBYQ3JlYXRlUGl4bWFwKFFY
MTFJbmZvOjpkaXNwbGF5KCksIFFYMTFJbmZvOjphcHBSb290V2luZG93KCksIG1fd2luZG93UmVj
dC53aWR0aCgpLCBtX3dpbmRvd1JlY3QuaGVpZ2h0KCksCisJZnByaW50ZihzdGRvdXQsICJjcmVh
dGUgcGl4bWFwOiAlZHglZFxuIiwgbV93aW5kb3dSZWN0LndpZHRoKCksIG1fd2luZG93UmVjdC5o
ZWlnaHQoKSk7CisgICAgICAgIG1fZHJhd2FibGUgPSBYQ3JlYXRlUGl4bWFwKHgxMUhvc3REaXNw
bGF5KCksIHJvb3RXaW5kb3dJRCgpLCBtX3dpbmRvd1JlY3Qud2lkdGgoKSwgbV93aW5kb3dSZWN0
LmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE5QU2V0V2lu
ZG93Q2FsbGJhY2tTdHJ1Y3QqKW1fbnBXaW5kb3cud3NfaW5mbyktPmRlcHRoKTsKLSAgICAgICAg
UUFwcGxpY2F0aW9uOjpzeW5jWCgpOyAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgc2VydmVyIGtub3dz
IGFib3V0IHRoZSBEcmF3YWJsZQorLy8gCVFBcHBsaWNhdGlvbjo6c3luY1goKTsKKyAgICAgICAg
WFN5bmMoeDExSG9zdERpc3BsYXkoKSwgZmFsc2UpOyAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgc2Vy
dmVyIGtub3dzIGFib3V0IHRoZSBEcmF3YWJsZQogICAgIH0KIAogICAgIC8vIGRvIG5vdCBjYWxs
IHNldE5QV2luZG93SWZOZWVkZWQgaW1tZWRpYXRlbHksIHdpbGwgYmUgY2FsbGVkIG9uIHBhaW50
KCkKQEAgLTE3NCw2ICsxOTMsOSBAQCB2b2lkIFBsdWdpblZpZXc6OnVwZGF0ZVBsdWdpbldpZGdl
dCgpCiAgICAgaWYgKCFtX3dpbmRvd1JlY3QuaW50ZXJzZWN0cyhmcmFtZVZpZXctPmZyYW1lUmVj
dCgpKQogICAgICAgICB8fCAoc19pc1J1bm5pbmdVbmRlckRSVCAmJiBwbGF0Zm9ybVBsdWdpbldp
ZGdldCgpICYmIChtX3dpbmRvd1JlY3QgIT0gb2xkV2luZG93UmVjdCB8fCBtX2NsaXBSZWN0ICE9
IG9sZENsaXBSZWN0KSkpCiAgICAgICAgIHNldE5QV2luZG93SWZOZWVkZWQoKTsKKy8vICAgICBl
bHNlIHsKKy8vIAlmcHJpbnRmKHN0ZG91dCwgIm5vIGNhbGxpbmcgc2V0bnB3aW5kb3dcbiIpOwor
Ly8gICAgIH0KIAogICAgIGlmICghbV9wbGF0Zm9ybUxheWVyKSB7CiAgICAgICAgIC8vIE1ha2Ug
c3VyZSB3ZSBnZXQgcmVwYWludGVkIGFmdGVyd2FyZHMuIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBk
b3dud2FyZApAQCAtMjA5LDY0ICsyMzEsNDYgQEAgdm9pZCBQbHVnaW5WaWV3OjpoaWRlKCkKIAog
dm9pZCBQbHVnaW5WaWV3OjpwYWludFVzaW5nWFBpeG1hcChRUGFpbnRlciogcGFpbnRlciwgY29u
c3QgUVJlY3QgJmV4cG9zZWRSZWN0KQogewotICAgIFFQaXhtYXAgcXREcmF3YWJsZSA9IFFQaXht
YXA6OmZyb21YMTFQaXhtYXAobV9kcmF3YWJsZSwgUVBpeG1hcDo6RXhwbGljaXRseVNoYXJlZCk7
Ci0gICAgY29uc3QgaW50IGRyYXdhYmxlRGVwdGggPSAoKE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1
Y3QqKW1fbnBXaW5kb3cud3NfaW5mbyktPmRlcHRoOwotICAgIEFTU0VSVChkcmF3YWJsZURlcHRo
ID09IHF0RHJhd2FibGUuZGVwdGgoKSk7Ci0gICAgY29uc3QgYm9vbCBzeW5jWCA9IG1fcGx1Z2lu
RGlzcGxheSAmJiBtX3BsdWdpbkRpc3BsYXkgIT0gUVgxMUluZm86OmRpc3BsYXkoKTsKLQotICAg
IC8vIFdoZW4gcHJpbnRpbmcsIFF0IHVzZXMgYSBRUGljdHVyZSB0byBjYXB0dXJlIHRoZSBvdXRw
dXQgaW4gcHJldmlldyBtb2RlLiBUaGUKLSAgICAvLyBRUGljdHVyZSBob2xkcyBhIHJlZmVyZW5j
ZSB0byB0aGUgWCBQaXhtYXAuIEFzIGEgcmVzdWx0LCB0aGUgcHJpbnQgcHJldmlldyB3b3VsZAot
ICAgIC8vIHVwZGF0ZSBpdHNlbGYgd2hlbiB0aGUgWCBQaXhtYXAgY2hhbmdlcy4gVG8gcHJldmVu
dCB0aGlzLCB3ZSBjcmVhdGUgYSBjb3B5LgotICAgIGlmIChtX2VsZW1lbnQtPmRvY3VtZW50KCkt
PnByaW50aW5nKCkpCi0gICAgICAgIHF0RHJhd2FibGUgPSBxdERyYXdhYmxlLmNvcHkoKTsKLQot
ICAgIGlmIChtX2lzVHJhbnNwYXJlbnQgJiYgZHJhd2FibGVEZXB0aCAhPSAzMikgewotICAgICAg
ICAvLyBBdHRlbXB0IGNvbnRlbnQgcHJvcGFnYXRpb24gZm9yIGRyYXdhYmxlIHdpdGggbm8gYWxw
aGEgYnkgY29weWluZyBvdmVyIGZyb20gdGhlIGJhY2tpbmcgc3RvcmUKLSAgICAgICAgUVBvaW50
IG9mZnNldDsKLSAgICAgICAgUVBhaW50RGV2aWNlKiBiYWNraW5nU3RvcmVEZXZpY2UgPSAgUVBh
aW50ZXI6OnJlZGlyZWN0ZWQocGFpbnRlci0+ZGV2aWNlKCksICZvZmZzZXQpOwotICAgICAgICBv
ZmZzZXQgPSAtb2Zmc2V0OyAvLyBuZWdhdGluZyB0aGUgb2Zmc2V0IGdpdmVzIHVzIHRoZSBvZmZz
ZXQgb2YgdGhlIHZpZXcgd2l0aGluIHRoZSBiYWNraW5nIHN0b3JlIHBpeG1hcAotCi0gICAgICAg
IGNvbnN0IGJvb2wgaGFzVmFsaWRCYWNraW5nU3RvcmUgPSBiYWNraW5nU3RvcmVEZXZpY2UgJiYg
YmFja2luZ1N0b3JlRGV2aWNlLT5kZXZUeXBlKCkgPT0gUUludGVybmFsOjpQaXhtYXA7Ci0gICAg
ICAgIFFQaXhtYXAqIGJhY2tpbmdTdG9yZVBpeG1hcCA9IHN0YXRpY19jYXN0PFFQaXhtYXAqPihi
YWNraW5nU3RvcmVEZXZpY2UpOwotCi0gICAgICAgIC8vIFdlIGNhbm5vdCBncmFiIGNvbnRlbnRz
IGZyb20gdGhlIGJhY2tpbmcgc3RvcmUgd2hlbiBwYWludGluZyBvbiBRR3JhcGhpY3NWaWV3IGl0
ZW1zCi0gICAgICAgIC8vIChiZWNhdXNlIGJhY2tpbmcgc3RvcmUgY29udGVudHMgYXJlIGFscmVh
ZHkgdHJhbnNmb3JtZWQpLiBXaGF0IHdlIHJlYWxseSBtZWFuIHRvIGRvIAotICAgICAgICAvLyBo
ZXJlIGlzIHRvIGNoZWNrIGlmIHdlIGFyZSBwYWludGluZyBvbiBRV2ViVmlldywgYnV0IGxldCdz
IGJlIGEgbGl0dGxlIHBlcm1pc3NpdmUgOikKLSAgICAgICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVu
dCA9IG1fcGFyZW50RnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGll
bnQoKTsKLSAgICAgICAgY29uc3QgYm9vbCBiYWNraW5nU3RvcmVIYXNVbnRyYW5zZm9ybWVkQ29u
dGVudHMgPSBjbGllbnQgJiYgcW9iamVjdF9jYXN0PFFXaWRnZXQqPihjbGllbnQtPnBsdWdpblBh
cmVudCgpKTsKLQotICAgICAgICBpZiAoaGFzVmFsaWRCYWNraW5nU3RvcmUgJiYgYmFja2luZ1N0
b3JlUGl4bWFwLT5kZXB0aCgpID09IGRyYXdhYmxlRGVwdGggCi0gICAgICAgICAgICAmJiBiYWNr
aW5nU3RvcmVIYXNVbnRyYW5zZm9ybWVkQ29udGVudHMpIHsKLSAgICAgICAgICAgIEdDIGdjID0g
WERlZmF1bHRHQyhRWDExSW5mbzo6ZGlzcGxheSgpLCBRWDExSW5mbzo6YXBwU2NyZWVuKCkpOwot
ICAgICAgICAgICAgWENvcHlBcmVhKFFYMTFJbmZvOjpkaXNwbGF5KCksIGJhY2tpbmdTdG9yZVBp
eG1hcC0+aGFuZGxlKCksIG1fZHJhd2FibGUsIGdjLAotICAgICAgICAgICAgICAgIG9mZnNldC54
KCkgKyBtX3dpbmRvd1JlY3QueCgpICsgZXhwb3NlZFJlY3QueCgpLCBvZmZzZXQueSgpICsgbV93
aW5kb3dSZWN0LnkoKSArIGV4cG9zZWRSZWN0LnkoKSwKLSAgICAgICAgICAgICAgICBleHBvc2Vk
UmVjdC53aWR0aCgpLCBleHBvc2VkUmVjdC5oZWlnaHQoKSwgZXhwb3NlZFJlY3QueCgpLCBleHBv
c2VkUmVjdC55KCkpOwotICAgICAgICB9IGVsc2UgeyAvLyBubyBiYWNraW5nIHN0b3JlLCBjbGVh
biB0aGUgcGl4bWFwIGJlY2F1c2UgdGhlIHBsdWdpbiB0aGlua3MgaXRzIHRyYW5zcGFyZW50Ci0g
ICAgICAgICAgICBRUGFpbnRlciBwYWludGVyKCZxdERyYXdhYmxlKTsKLSAgICAgICAgICAgIHBh
aW50ZXIuZmlsbFJlY3QoZXhwb3NlZFJlY3QsIFF0Ojp3aGl0ZSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoc3luY1gpCi0gICAgICAgICAgICBRQXBwbGljYXRpb246OnN5bmNYKCk7Ci0gICAg
fQorLy8gICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLT5zZXRQcmludGluZyhmYWxzZSk7CisvLyAg
ICAgUVBpeG1hcCBxdERyYXdhYmxlID0gUVBpeG1hcDo6ZnJvbVgxMVBpeG1hcChtX2RyYXdhYmxl
LCBRUGl4bWFwOjpFeHBsaWNpdGx5U2hhcmVkKTsKKy8vICAgICBYSW1hZ2UqIHhJbWFnZSA9IFhH
ZXRJbWFnZSh4MTFIb3N0RGlzcGxheSgpLCBtX2RyYXdhYmxlLCBleHBvc2VkUmVjdC54KCksIGV4
cG9zZWRSZWN0LnkoKSwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvc2Vk
UmVjdC53aWR0aCgpLCBleHBvc2VkUmVjdC5oZWlnaHQoKSwgVUxPTkdfTUFYLCBaUGl4bWFwKTsK
Ky8vICAgICBjb25zdCBpbnQgZHJhd2FibGVEZXB0aCA9ICgoTlBTZXRXaW5kb3dDYWxsYmFja1N0
cnVjdCopbV9ucFdpbmRvdy53c19pbmZvKS0+ZGVwdGg7IC8vLy8vPz8/PworLy8gICAgIEFTU0VS
VChkcmF3YWJsZURlcHRoID09IHhJbWFnZS0+ZGVwdGgpOworICAgIGNvbnN0IGJvb2wgc3luY1gg
PSB0cnVlOy8vbV9wbHVnaW5EaXNwbGF5ICYmIG1fcGx1Z2luRGlzcGxheSAhPSB4MTFIb3N0RGlz
cGxheSgpOworCisvLyAgICAgUVJlY3QgZXIgPSBleHBvc2VkUmVjdDsKKy8vICAgICBmcHJpbnRm
KHN0ZG91dCwgImV4cG9zZWQgcmVjdDogKCVkLCAlZCksICVkeCVkXG4iLAorLy8gCSAgICBlci54
KCksIGVyLnkoKSwgZXIud2lkdGgoKSwgZXIuaGVpZ2h0KCkpOwogCiAgICAgWEV2ZW50IHhldmVu
dDsKICAgICBtZW1zZXQoJnhldmVudCwgMCwgc2l6ZW9mKFhFdmVudCkpOwogICAgIFhHcmFwaGlj
c0V4cG9zZUV2ZW50JiBleHBvc2VFdmVudCA9IHhldmVudC54Z3JhcGhpY3NleHBvc2U7CiAgICAg
ZXhwb3NlRXZlbnQudHlwZSA9IEdyYXBoaWNzRXhwb3NlOwotICAgIGV4cG9zZUV2ZW50LmRpc3Bs
YXkgPSBRWDExSW5mbzo6ZGlzcGxheSgpOwotICAgIGV4cG9zZUV2ZW50LmRyYXdhYmxlID0gcXRE
cmF3YWJsZS5oYW5kbGUoKTsKKyAgICBleHBvc2VFdmVudC5kaXNwbGF5ID0geDExSG9zdERpc3Bs
YXkoKTsKKyAgICBleHBvc2VFdmVudC5kcmF3YWJsZSA9IG1fZHJhd2FibGU7CiAgICAgZXhwb3Nl
RXZlbnQueCA9IGV4cG9zZWRSZWN0LngoKTsKICAgICBleHBvc2VFdmVudC55ID0gZXhwb3NlZFJl
Y3QueSgpOwogICAgIGV4cG9zZUV2ZW50LndpZHRoID0gZXhwb3NlZFJlY3QueCgpICsgZXhwb3Nl
ZFJlY3Qud2lkdGgoKTsgLy8gZmxhc2ggYnVnPyBpdCB0aGlua3Mgd2lkdGggaXMgdGhlIHJpZ2h0
IGluIHRyYW5zcGFyZW50IG1vZGUKICAgICBleHBvc2VFdmVudC5oZWlnaHQgPSBleHBvc2VkUmVj
dC55KCkgKyBleHBvc2VkUmVjdC5oZWlnaHQoKTsgLy8gZmxhc2ggYnVnPyBpdCB0aGlua3MgaGVp
Z2h0IGlzIHRoZSBib3R0b20gaW4gdHJhbnNwYXJlbnQgbW9kZQogCisgICAgUVJlY3QgZXIgPSBl
eHBvc2VkUmVjdDsKKyAgICBmcHJpbnRmKHN0ZG91dCwgInBhaW50aW5nIC0+IGV4cG9zZWQgcmVj
dDogKCVkLCVkLCVkeCVkKVxuIiwgZXIueCgpLCBlci55KCksIGVyLndpZHRoKCksIGVyLmhlaWdo
dCgpKTsKKwogICAgIGRpc3BhdGNoTlBFdmVudCh4ZXZlbnQpOwogCiAgICAgaWYgKHN5bmNYKQog
ICAgICAgICBYU3luYyhtX3BsdWdpbkRpc3BsYXksIGZhbHNlKTsgLy8gc3luYyBjaGFuZ2VzIGJ5
IHBsdWdpbgorLy8gICAgIGVsc2UKKy8vIAlmcHJpbnRmKHN0ZG91dCwgIm5vdCBzeW5jaW5nXG4i
KTsKKyAgICAgWEltYWdlKiB4SW1hZ2UgPSBYR2V0SW1hZ2UoeDExSG9zdERpc3BsYXkoKSwgbV9k
cmF3YWJsZSwgZXhwb3NlZFJlY3QueCgpLCBleHBvc2VkUmVjdC55KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhwb3NlZFJlY3Qud2lkdGgoKSwgZXhwb3NlZFJlY3QuaGVpZ2h0
KCksIFVMT05HX01BWCwgWlBpeG1hcCk7CiAKLSAgICBwYWludGVyLT5kcmF3UGl4bWFwKFFQb2lu
dChleHBvc2VkUmVjdC54KCksIGV4cG9zZWRSZWN0LnkoKSksIHF0RHJhd2FibGUsIGV4cG9zZWRS
ZWN0KTsKKy8vICAgICBwYWludGVyLT5kcmF3UGl4bWFwKFFQb2ludChleHBvc2VkUmVjdC54KCks
IGV4cG9zZWRSZWN0LnkoKSksIHF0RHJhd2FibGUsIGV4cG9zZWRSZWN0KTsKKy8vICAgICAgWEZs
dXNoKHgxMUhvc3REaXNwbGF5KCkpOworICAgICAgcGFpbnRlci0+ZHJhd0ltYWdlKFFQb2ludChl
eHBvc2VkUmVjdC54KCksIGV4cG9zZWRSZWN0LnkoKSksIHFpbWFnZUZyb21YSW1hZ2UoeEltYWdl
KSwgZXhwb3NlZFJlY3QpOworICAgICAgLy9YRmx1c2goeDExSG9zdERpc3BsYXkoKSk7CisgICAg
ICBYRGVzdHJveUltYWdlKHhJbWFnZSk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtMjkxLDE0ICsy
OTUsMjEgQEAgdm9pZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIHJlY3QpCiAKICAgICBpZiAoIW1fZHJhd2FibGUpCiAgICAgICAgIHJl
dHVybjsKLQorCiAgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKTsKICAgICBJbnRSZWN0IGV4cG9zZWRSZWN0KHJlY3QpOwogICAgIGV4cG9zZWRSZWN0Lmlu
dGVyc2VjdChmcmFtZVJlY3QoKSk7CiAgICAgZXhwb3NlZFJlY3QubW92ZSgtZnJhbWVSZWN0KCku
eCgpLCAtZnJhbWVSZWN0KCkueSgpKTsKIAogICAgIHBhaW50ZXItPnRyYW5zbGF0ZShmcmFtZVJl
Y3QoKS54KCksIGZyYW1lUmVjdCgpLnkoKSk7CisKICAgICBwYWludFVzaW5nWFBpeG1hcChwYWlu
dGVyLCBleHBvc2VkUmVjdCk7CisvLyAgICAgICAgIFhJbWFnZSogeEltYWdlID0gWEdldEltYWdl
KHgxMUhvc3REaXNwbGF5KCksIG1fZHJhd2FibGUsIGV4cG9zZWRSZWN0LngoKSwgZXhwb3NlZFJl
Y3QueSgpLAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9zZWRSZWN0Lndp
ZHRoKCksIGV4cG9zZWRSZWN0LmhlaWdodCgpLCBVTE9OR19NQVgsIFpQaXhtYXApOworLy8gICAg
IAlwYWludGVyLT5kcmF3SW1hZ2UoUVBvaW50KGV4cG9zZWRSZWN0LngoKSwgZXhwb3NlZFJlY3Qu
eSgpKSwgcWltYWdlRnJvbVhJbWFnZSh4SW1hZ2UpLCBleHBvc2VkUmVjdCk7CisvLyAgICAgWEZs
dXNoKHgxMUhvc3REaXNwbGF5KCkpOworLy8gICAgICAgWERlc3Ryb3lJbWFnZSh4SW1hZ2UpOwor
CiAgICAgcGFpbnRlci0+dHJhbnNsYXRlKC1mcmFtZVJlY3QoKS54KCksIC1mcmFtZVJlY3QoKS55
KCkpOwogfQogCkBAIC0zMzUsMTEgKzM0NiwxMSBAQCB2b2lkIHNldFNoYXJlZFhFdmVudEZpZWxk
cyhYRXZlbnQqIHhFdmVudCwgUVdpZGdldCogb3duZXJXaWRnZXQpCiB7CiAgICAgeEV2ZW50LT54
YW55LnNlcmlhbCA9IDA7IC8vIHdlIGFyZSB1bmF3YXJlIG9mIHRoZSBsYXN0IHJlcXVlc3QgcHJv
Y2Vzc2VkIGJ5IFggU2VydmVyCiAgICAgeEV2ZW50LT54YW55LnNlbmRfZXZlbnQgPSBmYWxzZTsK
LSAgICB4RXZlbnQtPnhhbnkuZGlzcGxheSA9IFFYMTFJbmZvOjpkaXNwbGF5KCk7CisgICAgeEV2
ZW50LT54YW55LmRpc3BsYXkgPSBQbHVnaW5WaWV3Ojp4MTFIb3N0RGlzcGxheSgpOwogICAgIC8v
IE5PVEU6IGV2ZW50LT54YW55LndpbmRvdyBkb2Vzbid0IGFsd2F5cyByZXNwb25kIHRvIHRoZSAu
d2luZG93IHByb3BlcnR5IG9mIG90aGVyIFhFdmVudCdzCiAgICAgLy8gYnV0IGRvZXMgaW4gdGhl
IGNhc2Ugb2YgS2V5UHJlc3MsIEtleVJlbGVhc2UsIEJ1dHRvblByZXNzLCBCdXR0b25SZWxlYXNl
LCBhbmQgTW90aW9uTm90aWZ5CiAgICAgLy8gZXZlbnRzOyB0aHVzLCB0aGlzIGlzIHJpZ2h0Ogot
ICAgIHhFdmVudC0+eGFueS53aW5kb3cgPSBvd25lcldpZGdldCA/IG93bmVyV2lkZ2V0LT53aW5k
b3coKS0+aGFuZGxlKCkgOiAwOworLy8gICAgIHhFdmVudC0+eGFueS53aW5kb3cgPSBvd25lcldp
ZGdldCA/IG93bmVyV2lkZ2V0LT53aW5kb3coKS0+aGFuZGxlKCkgOiAwOwogfQogCiB2b2lkIFBs
dWdpblZpZXc6OmluaXRYRXZlbnQoWEV2ZW50KiB4RXZlbnQpCkBAIC0zNTYsNyArMzY3LDcgQEAg
dm9pZCBQbHVnaW5WaWV3OjpzZXRYS2V5RXZlbnRTcGVjaWZpY0ZpZWxkcyhYRXZlbnQqIHhFdmVu
dCwgS2V5Ym9hcmRFdmVudCogZXZlbnQKICAgICBjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQq
IGtleUV2ZW50ID0gZXZlbnQtPmtleUV2ZW50KCk7CiAKICAgICB4RXZlbnQtPnR5cGUgPSAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KSA/IDIgOiAzOyAvLyBpbnRz
IGFzIFF0IHVuc2V0cyBLZXlQcmVzcyBhbmQgS2V5UmVsZWFzZQotICAgIHhFdmVudC0+eGtleS5y
b290ID0gUVgxMUluZm86OmFwcFJvb3RXaW5kb3coKTsKKyAgICB4RXZlbnQtPnhrZXkucm9vdCA9
IHJvb3RXaW5kb3dJRCgpOwogICAgIHhFdmVudC0+eGtleS5zdWJ3aW5kb3cgPSAwOyAvLyB3ZSBo
YXZlIG5vIGNoaWxkIHdpbmRvdwogICAgIHhFdmVudC0+eGtleS50aW1lID0gZXZlbnQtPnRpbWVT
dGFtcCgpOwogICAgIHhFdmVudC0+eGtleS5zdGF0ZSA9IGtleUV2ZW50LT5uYXRpdmVNb2RpZmll
cnMoKTsKQEAgLTM3MCw3ICszODEsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldFhLZXlFdmVudFNw
ZWNpZmljRmllbGRzKFhFdmVudCogeEV2ZW50LCBLZXlib2FyZEV2ZW50KiBldmVudAogICAgICAg
ICBRS2V5RXZlbnQqIHFLZXlFdmVudCA9IGtleUV2ZW50LT5xdEV2ZW50KCk7CiAgICAgICAgIEFT
U0VSVChxS2V5RXZlbnQpOwogICAgICAgICBRU3RyaW5nIGtleVRleHQgPSBxS2V5RXZlbnQtPnRl
eHQoKS5sZWZ0KDEpOwotICAgICAgICB4RXZlbnQtPnhrZXkua2V5Y29kZSA9IFhLZXlzeW1Ub0tl
eWNvZGUoUVgxMUluZm86OmRpc3BsYXkoKSwgWFN0cmluZ1RvS2V5c3ltKGtleVRleHQudG9VdGY4
KCkuY29uc3REYXRhKCkpKTsKKyAgICAgICAgeEV2ZW50LT54a2V5LmtleWNvZGUgPSBYS2V5c3lt
VG9LZXljb2RlKHgxMUhvc3REaXNwbGF5KCksIFhTdHJpbmdUb0tleXN5bShrZXlUZXh0LnRvVXRm
OCgpLmNvbnN0RGF0YSgpKSk7CiAgICAgfQogCiAgICAgeEV2ZW50LT54a2V5LnNhbWVfc2NyZWVu
ID0gdHJ1ZTsKQEAgLTQwMSw2ICs0MTIsMTYgQEAgdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVLZXli
b2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKIH0KIAorRGlzcGxheSogUGx1Z2luVmlldzo6eDExSG9zdERpc3BsYXkoKQor
eworICAgIHN0YXRpYyBEaXNwbGF5KiBkZWRpY2F0ZWREaXNwbGF5ID0gMDsKKyAgICBpZiAoIWRl
ZGljYXRlZERpc3BsYXkpCisgICAgICAgIGRlZGljYXRlZERpc3BsYXkgPSBYT3BlbkRpc3BsYXko
MCk7CisKKyAgICBBU1NFUlQoZGVkaWNhdGVkRGlzcGxheSk7CisgICAgcmV0dXJuIGRlZGljYXRl
ZERpc3BsYXk7Cit9CisKIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW5wdXRFdmVudFN0YXRlKE1vdXNl
RXZlbnQqIGV2ZW50KQogewogICAgIHVuc2lnbmVkIGludCBzdGF0ZSA9IDA7CkBAIC00MTksNyAr
NDQwLDcgQEAgc3RhdGljIHZvaWQgc2V0WEJ1dHRvbkV2ZW50U3BlY2lmaWNGaWVsZHMoWEV2ZW50
KiB4RXZlbnQsIE1vdXNlRXZlbnQqIGV2ZW50LCBjb24KIHsKICAgICBYQnV0dG9uRXZlbnQmIHhi
dXR0b24gPSB4RXZlbnQtPnhidXR0b247CiAgICAgeGJ1dHRvbi50eXBlID0gZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgPyBCdXR0b25QcmVzcyA6IEJ1dHRvblJl
bGVhc2U7Ci0gICAgeGJ1dHRvbi5yb290ID0gUVgxMUluZm86OmFwcFJvb3RXaW5kb3coKTsKKyAg
ICB4YnV0dG9uLnJvb3QgPSByb290V2luZG93SUQoKTsKICAgICB4YnV0dG9uLnN1YndpbmRvdyA9
IDA7CiAgICAgeGJ1dHRvbi50aW1lID0gZXZlbnQtPnRpbWVTdGFtcCgpOwogICAgIHhidXR0b24u
eCA9IHBvc3Rab29tUG9zLngoKTsKQEAgLTQ0Niw3ICs0NjcsNyBAQCBzdGF0aWMgdm9pZCBzZXRY
TW90aW9uRXZlbnRTcGVjaWZpY0ZpZWxkcyhYRXZlbnQqIHhFdmVudCwgTW91c2VFdmVudCogZXZl
bnQsIGNvbgogewogICAgIFhNb3Rpb25FdmVudCYgeG1vdGlvbiA9IHhFdmVudC0+eG1vdGlvbjsK
ICAgICB4bW90aW9uLnR5cGUgPSBNb3Rpb25Ob3RpZnk7Ci0gICAgeG1vdGlvbi5yb290ID0gUVgx
MUluZm86OmFwcFJvb3RXaW5kb3coKTsKKyAgICB4bW90aW9uLnJvb3QgPSByb290V2luZG93SUQo
KTsKICAgICB4bW90aW9uLnN1YndpbmRvdyA9IDA7CiAgICAgeG1vdGlvbi50aW1lID0gZXZlbnQt
PnRpbWVTdGFtcCgpOwogICAgIHhtb3Rpb24ueCA9IHBvc3Rab29tUG9zLngoKTsKQEAgLTQ2Miw3
ICs0ODMsNyBAQCBzdGF0aWMgdm9pZCBzZXRYQ3Jvc3NpbmdFdmVudFNwZWNpZmljRmllbGRzKFhF
dmVudCogeEV2ZW50LCBNb3VzZUV2ZW50KiBldmVudCwgYwogewogICAgIFhDcm9zc2luZ0V2ZW50
JiB4Y3Jvc3NpbmcgPSB4RXZlbnQtPnhjcm9zc2luZzsKICAgICB4Y3Jvc3NpbmcudHlwZSA9IGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50ID8gRW50ZXJOb3RpZnkg
OiBMZWF2ZU5vdGlmeTsKLSAgICB4Y3Jvc3Npbmcucm9vdCA9IFFYMTFJbmZvOjphcHBSb290V2lu
ZG93KCk7CisgICAgeGNyb3NzaW5nLnJvb3QgPSByb290V2luZG93SUQoKTsKICAgICB4Y3Jvc3Np
bmcuc3Vid2luZG93ID0gMDsKICAgICB4Y3Jvc3NpbmcudGltZSA9IGV2ZW50LT50aW1lU3RhbXAo
KTsKICAgICB4Y3Jvc3NpbmcueCA9IHBvc3Rab29tUG9zLnkoKTsKQEAgLTU3MCwyOSArNTkxLDkg
QEAgdm9pZCBQbHVnaW5WaWV3OjpzZXROUFdpbmRvd0lmTmVlZGVkKCkKICAgICBpZiAoIW1faGFz
UGVuZGluZ0dlb21ldHJ5Q2hhbmdlKQogICAgICAgICByZXR1cm47CiAgICAgbV9oYXNQZW5kaW5n
R2VvbWV0cnlDaGFuZ2UgPSBmYWxzZTsKLQotICAgIGlmIChtX2lzV2luZG93ZWQpIHsKLSAgICAg
ICAgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKS0+c2V0R2VvbWV0cnkobV93aW5kb3dSZWN0KTsKLQot
ICAgICAgICAvLyBDdXQgb3V0IGFyZWFzIG9mIHRoZSBwbHVnaW4gb2NjbHVkZWQgYnkgaWZyYW1l
IHNoaW1zCi0gICAgICAgIFZlY3RvcjxJbnRSZWN0PiBjdXRPdXRSZWN0czsKLSAgICAgICAgUVJl
Z2lvbiBjbGlwUmVnaW9uID0gUVJlZ2lvbihtX2NsaXBSZWN0KTsKLSAgICAgICAgZ2V0UGx1Z2lu
T2NjbHVzaW9ucyhtX2VsZW1lbnQsIHRoaXMtPnBhcmVudCgpLCBmcmFtZVJlY3QoKSwgY3V0T3V0
UmVjdHMpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1dE91dFJlY3RzLnNpemUo
KTsgaSsrKSB7Ci0gICAgICAgICAgICBjdXRPdXRSZWN0c1tpXS5tb3ZlKC1mcmFtZVJlY3QoKS54
KCksIC1mcmFtZVJlY3QoKS55KCkpOwotICAgICAgICAgICAgY2xpcFJlZ2lvbiA9IGNsaXBSZWdp
b24uc3VidHJhY3RlZChRUmVnaW9uKGN1dE91dFJlY3RzW2ldKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgLy8gaWYgc2V0TWFzayBpcyBzZXQgd2l0aCBhbiBlbXB0eSBRUmVnaW9uLCBubyBjbGlwcGlu
ZyB3aWxsCi0gICAgICAgIC8vIGJlIHBlcmZvcm1lZCwgc28gaW4gdGhhdCBjYXNlIHdlIGhpZGUg
dGhlIHBsdWdpbiB2aWV3Ci0gICAgICAgIHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCktPnNldFZpc2li
bGUoIWNsaXBSZWdpb24uaXNFbXB0eSgpKTsKLSAgICAgICAgcGxhdGZvcm1QbHVnaW5XaWRnZXQo
KS0+c2V0TWFzayhjbGlwUmVnaW9uKTsKLQotICAgICAgICBtX25wV2luZG93LnggPSBtX3dpbmRv
d1JlY3QueCgpOwotICAgICAgICBtX25wV2luZG93LnkgPSBtX3dpbmRvd1JlY3QueSgpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIG1fbnBXaW5kb3cueCA9IDA7Ci0gICAgICAgIG1fbnBXaW5kb3cu
eSA9IDA7Ci0gICAgfQorCisgICAgbV9ucFdpbmRvdy54ID0gMDsKKyAgICBtX25wV2luZG93Lnkg
PSAwOwogCiAgICAgLy8gSWYgdGhlIHdpZHRoIG9yIGhlaWdodCBhcmUgbnVsbCwgc2V0IHRoZSBj
bGlwUmVjdCB0byBudWxsLCBpbmRpY2F0aW5nIHRoYXQKICAgICAvLyB0aGUgcGx1Z2luIGlzIG5v
dCB2aXNpYmxlL3Njcm9sbGVkIG91dC4KQEAgLTYyMCw2ICs2MjEsOSBAQCB2b2lkIFBsdWdpblZp
ZXc6OnNldE5QV2luZG93SWZOZWVkZWQoKQogICAgICAgICBtX25wV2luZG93LndpZHRoID0gbV93
aW5kb3dSZWN0LndpZHRoKCk7CiAgICAgICAgIG1fbnBXaW5kb3cuaGVpZ2h0ID0gbV93aW5kb3dS
ZWN0LmhlaWdodCgpOwogICAgIH0KKworICAgIGZwcmludGYoc3Rkb3V0LCAidXBkYXRlZCBnZW9t
ZXRyeTogKCVkLCVkLSVkeCVkKVxuIiwKKwkgICAgbV9ucFdpbmRvdy54LCBtX25wV2luZG93Lnks
IG1fbnBXaW5kb3cud2lkdGgsIG1fbnBXaW5kb3cuaGVpZ2h0KTsKIAogICAgIFBsdWdpblZpZXc6
OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOwogI2lmIFVTRShKU0MpCkBAIC03MDAsNyArNzA0
LDcgQEAgYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlh
YmxlLCB2b2lkKiB2YWx1ZSwgTlBFcnJvciogcmUKIHsKICAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7
CiAgICAgY2FzZSBOUE5WeERpc3BsYXk6Ci0gICAgICAgICoodm9pZCAqKil2YWx1ZSA9IFFYMTFJ
bmZvOjpkaXNwbGF5KCk7CisgICAgICAgICoodm9pZCAqKil2YWx1ZSA9IHgxMUhvc3REaXNwbGF5
KCk7CiAgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKQEAgLTgwMSw4OCArODA1LDEzIEBAIHN0YXRpYyBEaXNwbGF5ICpnZXRQbHVnaW5EaXNw
bGF5KCkKICAgICByZXR1cm4gKERpc3BsYXkqKWdka194MTFfZGlzcGxheV9nZXRfeGRpc3BsYXko
Z2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGdldFZpc3VhbEFu
ZENvbG9ybWFwKGludCBkZXB0aCwgVmlzdWFsICoqdmlzdWFsLCBDb2xvcm1hcCAqY29sb3JtYXAp
Ci17Ci0gICAgKnZpc3VhbCA9IDA7Ci0gICAgKmNvbG9ybWFwID0gMDsKLQotI2lmbmRlZiBRVF9O
T19YUkVOREVSCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgdXNlWFJlbmRlciA9IHFnZXRlbnYoIlFU
X1gxMV9OT19YUkVOREVSIikuaXNOdWxsKCk7IC8vIFNob3VsZCBhbHNvIGNoZWNrIGZvciBYUmVu
ZGVyID49IDAuNQotI2Vsc2UKLSAgICBzdGF0aWMgY29uc3QgYm9vbCB1c2VYUmVuZGVyID0gZmFs
c2U7Ci0jZW5kaWYKLQotICAgIGlmICghdXNlWFJlbmRlciAmJiBkZXB0aCA9PSAzMikKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaW50IG52aTsKLSAgICBYVmlzdWFsSW5mbyB0ZW1wbDsKLSAgICB0
ZW1wbC5zY3JlZW4gID0gUVgxMUluZm86OmFwcFNjcmVlbigpOwotICAgIHRlbXBsLmRlcHRoICAg
PSBkZXB0aDsKLSAgICB0ZW1wbC5jX2NsYXNzID0gVHJ1ZUNvbG9yOwotICAgIFhWaXN1YWxJbmZv
KiB4dmkgPSBYR2V0VmlzdWFsSW5mbyhRWDExSW5mbzo6ZGlzcGxheSgpLCBWaXN1YWxTY3JlZW5N
YXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwgVmlzdWFsQ2xhc3NNYXNrLCAmdGVtcGwsICZudmkpOwot
Ci0gICAgaWYgKCF4dmkpCi0gICAgICAgIHJldHVybjsKLQotI2lmbmRlZiBRVF9OT19YUkVOREVS
Ci0gICAgaWYgKGRlcHRoID09IDMyKSB7Ci0gICAgICAgIGZvciAoaW50IGlkeCA9IDA7IGlkeCA8
IG52aTsgKytpZHgpIHsKLSAgICAgICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0KiBmb3JtYXQgPSBY
UmVuZGVyRmluZFZpc3VhbEZvcm1hdChRWDExSW5mbzo6ZGlzcGxheSgpLCB4dmlbaWR4XS52aXN1
YWwpOwotICAgICAgICAgICAgaWYgKGZvcm1hdC0+dHlwZSA9PSBQaWN0VHlwZURpcmVjdCAmJiBm
b3JtYXQtPmRpcmVjdC5hbHBoYU1hc2spIHsKLSAgICAgICAgICAgICAgICAgKnZpc3VhbCA9IHh2
aVtpZHhdLnZpc3VhbDsKLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICB9Ci0gICAgfSBlbHNlCi0jZW5kaWYgLy8gUVRfTk9fWFJFTkRFUgotICAgICAgICAq
dmlzdWFsID0geHZpWzBdLnZpc3VhbDsKLQotICAgIFhGcmVlKHh2aSk7Ci0KLSAgICBpZiAoKnZp
c3VhbCkKLSAgICAgICAgKmNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFwKFFYMTFJbmZvOjpkaXNw
bGF5KCksIFFYMTFJbmZvOjphcHBSb290V2luZG93KCksICp2aXN1YWwsIEFsbG9jTm9uZSk7Ci19
Ci0KIGJvb2wgUGx1Z2luVmlldzo6cGxhdGZvcm1TdGFydCgpCiB7CiAgICAgQVNTRVJUKG1faXNT
dGFydGVkKTsKICAgICBBU1NFUlQobV9zdGF0dXMgPT0gUGx1Z2luU3RhdHVzTG9hZGVkU3VjY2Vz
c2Z1bGx5KTsKLQotICAgIGlmIChtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+Z2V0dmFsdWUpIHsK
LSAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7Ci0jaWYgVVNF
KEpTQykKLSAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlND
OjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotI2VuZGlmCi0gICAgICAgIHNldENhbGxpbmdQbHVn
aW4odHJ1ZSk7Ci0gICAgICAgIG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5nZXR2YWx1ZShtX2lu
c3RhbmNlLCBOUFBWcGx1Z2luTmVlZHNYRW1iZWQsICZtX25lZWRzWEVtYmVkKTsKLSAgICAgICAg
c2V0Q2FsbGluZ1BsdWdpbihmYWxzZSk7Ci0gICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQ
bHVnaW5WaWV3KDApOwotICAgIH0KLQotICAgIGlmIChtX2lzV2luZG93ZWQpIHsKLSAgICAgICAg
UVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IG1fcGFyZW50RnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRv
dygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKLSAgICAgICAgaWYgKG1fbmVlZHNYRW1iZWQgJiYg
Y2xpZW50KSB7Ci0gICAgICAgICAgICBzZXRQbGF0Zm9ybVdpZGdldChuZXcgUGx1Z2luQ29udGFp
bmVyUXQodGhpcywgY2xpZW50LT5vd25lcldpZGdldCgpKSk7Ci0gICAgICAgICAgICAvLyBzeW5j
IG91ciBYRW1iZWQgY29udGFpbmVyIHdpbmRvdyBjcmVhdGlvbiBiZWZvcmUgc2VuZGluZyB0aGUg
eGlkIHRvIHBsdWdpbnMuCi0gICAgICAgICAgICBRQXBwbGljYXRpb246OnN5bmNYKCk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAg
bV9zdGF0dXMgPSBQbHVnaW5TdGF0dXNDYW5Ob3RMb2FkUGx1Z2luOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc2V0UGxhdGZvcm1X
aWRnZXQoMCk7Ci0gICAgICAgIG1fcGx1Z2luRGlzcGxheSA9IGdldFBsdWdpbkRpc3BsYXkoKTsK
LQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgIVVTRShURVhUVVJFX01BUFBF
UikKLSAgICAgICAgaWYgKHNob3VsZFVzZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkgewotICAg
ICAgICAgICAgbV9wbGF0Zm9ybUxheWVyID0gYWRvcHRQdHIobmV3IFBsdWdpbkdyYXBoaWNzTGF5
ZXJRdCh0aGlzKSk7Ci0gICAgICAgICAgICAvLyBUcmlnZ2VyIGxheWVyIGNvbXB1dGF0aW9uIGlu
IFJlbmRlckxheWVyQ29tcG9zaXRvcgotICAgICAgICAgICAgbV9lbGVtZW50LT5zZXROZWVkc1N0
eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKLSAgICAgICAgfQotI2VuZGlmCi0gICAg
fQorCisgICAgc2V0UGxhdGZvcm1XaWRnZXQoMCk7CisgICAgbV9wbHVnaW5EaXNwbGF5ID0gZ2V0
UGx1Z2luRGlzcGxheSgpOwogCiAgICAgLy8gSWYgdGhlIHdpZHRoIGFuZCB0aGUgaGVpZ2h0IGFy
ZSBub3QgemVybyB3ZSBzaG93IHRoZSBQbHVnaW5WaWV3LgogICAgIGlmICghZnJhbWVSZWN0KCku
aXNFbXB0eSgpKQpAQCAtODkwLDQ5ICs4MTksMzYgQEAgYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9y
bVN0YXJ0KCkKIAogICAgIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIHdzaSA9IG5ldyBOUFNl
dFdpbmRvd0NhbGxiYWNrU3RydWN0KCk7CiAgICAgd3NpLT50eXBlID0gMDsKLQotICAgIGlmICht
X2lzV2luZG93ZWQpIHsKLSAgICAgICAgY29uc3QgUVgxMUluZm8qIHgxMUluZm8gPSAmcGxhdGZv
cm1QbHVnaW5XaWRnZXQoKS0+eDExSW5mbygpOwotCi0gICAgICAgIHdzaS0+ZGlzcGxheSA9IHgx
MUluZm8tPmRpc3BsYXkoKTsKLSAgICAgICAgd3NpLT52aXN1YWwgPSAoVmlzdWFsKil4MTFJbmZv
LT52aXN1YWwoKTsKLSAgICAgICAgd3NpLT5kZXB0aCA9IHgxMUluZm8tPmRlcHRoKCk7Ci0gICAg
ICAgIHdzaS0+Y29sb3JtYXAgPSB4MTFJbmZvLT5jb2xvcm1hcCgpOwotCi0gICAgICAgIG1fbnBX
aW5kb3cudHlwZSA9IE5QV2luZG93VHlwZVdpbmRvdzsKLSAgICAgICAgbV9ucFdpbmRvdy53aW5k
b3cgPSAodm9pZCopcGxhdGZvcm1QbHVnaW5XaWRnZXQoKS0+d2luSWQoKTsKLSAgICAgICAgbV9u
cFdpbmRvdy53aWR0aCA9IC0xOwotICAgICAgICBtX25wV2luZG93LmhlaWdodCA9IC0xOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIGNvbnN0IFFYMTFJbmZvKiB4MTFJbmZvID0gJlFBcHBsaWNhdGlv
bjo6ZGVza3RvcCgpLT54MTFJbmZvKCk7Ci0KLSAgICAgICAgaWYgKHgxMUluZm8tPmRlcHRoKCkg
PT0gMzIgfHwgIW1fcGx1Z2luLT5xdWlya3MoKS5jb250YWlucyhQbHVnaW5RdWlya1JlcXVpcmVz
RGVmYXVsdFNjcmVlbkRlcHRoKSkgewotICAgICAgICAgICAgZ2V0VmlzdWFsQW5kQ29sb3JtYXAo
MzIsICZtX3Zpc3VhbCwgJm1fY29sb3JtYXApOwotICAgICAgICAgICAgd3NpLT5kZXB0aCA9IDMy
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFtX3Zpc3VhbCkgewotICAgICAgICAgICAgZ2V0
VmlzdWFsQW5kQ29sb3JtYXAoeDExSW5mby0+ZGVwdGgoKSwgJm1fdmlzdWFsLCAmbV9jb2xvcm1h
cCk7Ci0gICAgICAgICAgICB3c2ktPmRlcHRoID0geDExSW5mby0+ZGVwdGgoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHdzaS0+ZGlzcGxheSA9IHgxMUluZm8tPmRpc3BsYXkoKTsKLSAgICAgICAg
d3NpLT52aXN1YWwgPSBtX3Zpc3VhbDsKLSAgICAgICAgd3NpLT5jb2xvcm1hcCA9IG1fY29sb3Jt
YXA7Ci0KLSAgICAgICAgbV9ucFdpbmRvdy50eXBlID0gTlBXaW5kb3dUeXBlRHJhd2FibGU7Ci0g
ICAgICAgIG1fbnBXaW5kb3cud2luZG93ID0gMDsgLy8gTm90IHVzZWQ/Ci0gICAgICAgIG1fbnBX
aW5kb3cueCA9IDA7Ci0gICAgICAgIG1fbnBXaW5kb3cueSA9IDA7Ci0gICAgICAgIG1fbnBXaW5k
b3cud2lkdGggPSAtMTsKLSAgICAgICAgbV9ucFdpbmRvdy5oZWlnaHQgPSAtMTsKLSAgICB9Ci0K
KyAgICB3c2ktPmRpc3BsYXkgPSB4MTFIb3N0RGlzcGxheSgpOworICAgIHdzaS0+ZGVwdGggPSBk
aXNwbGF5RGVwdGgoKTsKKworICAgIFhWaXN1YWxJbmZvIHZpc3VhbFRlbXBsYXRlOworICAgIHZp
c3VhbFRlbXBsYXRlLnNjcmVlbiA9IHgxMVNjcmVlbigpOworICAgIHZpc3VhbFRlbXBsYXRlLmRl
cHRoID0gd3NpLT5kZXB0aDsKKyAgICB2aXN1YWxUZW1wbGF0ZS5jX2NsYXNzID0gVHJ1ZUNvbG9y
OworICAgIGludCBudW1NYXRjaGluZzsKKyAgICBYVmlzdWFsSW5mbyogdmlzdWFsSW5mbyA9IFhH
ZXRWaXN1YWxJbmZvKHgxMUhvc3REaXNwbGF5KCksIFZpc3VhbFNjcmVlbk1hc2sgfCBWaXN1YWxE
ZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmdmlzdWFsVGVtcGxhdGUsICZudW1NYXRjaGluZyk7CisgICAgQVNT
RVJUKHZpc3VhbEluZm8pOworICAgIFZpc3VhbCogdmlzdWFsID0gdmlzdWFsSW5mb1swXS52aXN1
YWw7CisgICAgQVNTRVJUKHZpc3VhbCk7CisgICAgWEZyZWUodmlzdWFsSW5mbyk7CisgICAgd3Np
LT52aXN1YWwgPSB2aXN1YWw7CisgICAgd3NpLT5jb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcCh4
MTFIb3N0RGlzcGxheSgpLCByb290V2luZG93SUQoKSwgdmlzdWFsLCBBbGxvY05vbmUpOworCisg
ICAgbV9ucFdpbmRvdy50eXBlID0gTlBXaW5kb3dUeXBlRHJhd2FibGU7CisgICAgbV9ucFdpbmRv
dy53aW5kb3cgPSAwOworICAgIG1fbnBXaW5kb3cueCA9IDA7CisgICAgbV9ucFdpbmRvdy55ID0g
MDsKKyAgICBtX25wV2luZG93LndpZHRoID0gLTE7CisgICAgbV9ucFdpbmRvdy5oZWlnaHQgPSAt
MTsKICAgICBtX25wV2luZG93LndzX2luZm8gPSB3c2k7CiAKICAgICBpZiAoIShtX3BsdWdpbi0+
cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtEZWZlckZpcnN0U2V0V2luZG93Q2FsbCkpKSB7
CiAgICAgICAgIHVwZGF0ZVBsdWdpbldpZGdldCgpOwogICAgICAgICBzZXROUFdpbmRvd0lmTmVl
ZGVkKCk7CisgICAgfSBlbHNlIHsKKwlmcHJpbnRmKHN0ZG91dCwgIlBsdWdpblF1aXJrRGVmZXJG
aXJzdFNldFdpbmRvd0NhbGxcbiIpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtOTQ0
LDEwICs4NjAsMTAgQEAgdm9pZCBQbHVnaW5WaWV3OjpwbGF0Zm9ybURlc3Ryb3koKQogICAgICAg
ICBkZWxldGUgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKTsKIAogICAgIGlmIChtX2RyYXdhYmxlKQot
ICAgICAgICBYRnJlZVBpeG1hcChRWDExSW5mbzo6ZGlzcGxheSgpLCBtX2RyYXdhYmxlKTsKKyAg
ICAgICAgWEZyZWVQaXhtYXAoeDExSG9zdERpc3BsYXkoKSwgbV9kcmF3YWJsZSk7CiAKICAgICBp
ZiAobV9jb2xvcm1hcCkKLSAgICAgICAgWEZyZWVDb2xvcm1hcChRWDExSW5mbzo6ZGlzcGxheSgp
LCBtX2NvbG9ybWFwKTsKKyAgICAgICAgWEZyZWVDb2xvcm1hcCh4MTFIb3N0RGlzcGxheSgpLCBt
X2NvbG9ybWFwKTsKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCmluZGV4IDg5ZTk4MjEuLjRkOTNmMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApAQCAtMTE2Nyw5ICsxMTY3LDExIEBAIHZv
aWQgUVdlYlNldHRpbmdzOjplbmFibGVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBRU3RyaW5nJiBw
YXRoKQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCiAgICAgLy8g
QWxsIGFwcGxpY2F0aW9ucyBjYW4gc2hhcmUgdGhlIGNvbW1vbiBRdFdlYmtpdCBjYWNoZSBmaWxl
KHMpLgogICAgIC8vIFBhdGggaXMgbm90IGNvbmZpZ3VyYWJsZSBhbmQgdXNlcyBRRGVza3RvcFNl
cnZpY2VzOjpDYWNoZUxvY2F0aW9uIGJ5IGRlZmF1bHQuCi0gICAgUVN0cmluZyBjYWNoZVBhdGgg
PSBRRGVza3RvcFNlcnZpY2VzOjpzdG9yYWdlTG9jYXRpb24oUURlc2t0b3BTZXJ2aWNlczo6Q2Fj
aGVMb2NhdGlvbik7CisvLyAgICAgUVN0cmluZyBjYWNoZVBhdGggPSBRRGVza3RvcFNlcnZpY2Vz
OjpzdG9yYWdlTG9jYXRpb24oUURlc2t0b3BTZXJ2aWNlczo6Q2FjaGVMb2NhdGlvbik7CisvLyAg
ICAgV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKGNhY2hlUGF0aCk7CisvLworICAgIFFTdHJp
bmcgY2FjaGVQYXRoID0gUVN0YW5kYXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5kYXJk
UGF0aHM6OkNhY2hlTG9jYXRpb24pOwogICAgIFdlYkNvcmU6Om1ha2VBbGxEaXJlY3Rvcmllcyhj
YWNoZVBhdGgpOwotCiAgICAgUUZpbGVJbmZvIGluZm8oY2FjaGVQYXRoKTsKICAgICBpZiAoaW5m
by5pc0RpcigpICYmIGluZm8uaXNXcml0YWJsZSgpKSB7CiAgICAgICAgIFdlYkNvcmU6OlBsdWdp
bkRhdGFiYXNlOjpzZXRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZUVuYWJsZWQodHJ1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133229</attachid>
            <date>2012-03-22 05:22:32 -0700</date>
            <delta_ts>2012-04-24 07:01:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80691-20120322132230.patch</filename>
            <type>text/plain</type>
            <size>28695</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUyNzYwY2Y2ZTM3NTc3
ZGRhMzU0NDc3MGE4N2NkYTJiZmM0YzM1ZS4uNzc5MTIzYWM3NjE3MWU0YmFkMmQxM2JjNDIxZGE5
Y2Q0MTFkY2MyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAzLTIyICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIFgxMSBwbHVn
aW5zIG5lZWQgdG8gYmUgcmV3b3JrZWQgZm9yIFF0NStXSzEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHdpbmRvd2xlc3MgcGx1
Z2luIHN1cHBvcnQgd2l0aCBRdDUuCisgICAgICAgIFRoZSBzb2x1dGlvbiBpcyB0aGUgc2FtZSB0
aGF0IGhhcyBiZWVuIGNob3NlbiBmb3IKKyAgICAgICAgV2ViS2l0Mi4gV2UgZ2V0IHRoZSBjb250
ZW50IGRyYXdlZCBieSB0aGUgcGx1Z2luCisgICAgICAgIGZyb20gdGhlIFggc2VydmVyIGFzIGFu
IGltYWdlLCBjcmVhdGUgYSBRSW1hZ2UKKyAgICAgICAgZnJvbSBpdCBhbmQgcGFpbnQgaXQgdG8g
dGhlIHdpbmRvdyBzdXJmYWNlIHdpdGggUVBhaW50ZXIuCisgICAgICAgIFBlcmZvcm1hbmNlIGlz
IHN1ZmZpY2llbnQgZm9yIGJhc2ljIHZpZGVvIHBsYXliYWNrLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gRXhpc3RpbmcgcGx1Z2luIHRlc3RzIGFyZSBzdWZmaWNpZW50LgorCisgICAgICAgICog
VGFyZ2V0LnByaToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKFBs
dWdpblZpZXcpOgorICAgICAgICAqIHBsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmxvYWQpOgorICAgICAgICBCbGFja2xpc3Qg
cGx1Z2lucyB0aGF0IGFyZSBpbmNvbXBhdGlibGUgd2l0aCBRdDUuCisgICAgICAgIFRoZSBvbmx5
IG9uZSBJIGtub3cgYWJvdXQgY3VycmVudGx5IGlzIHNreXBlYnV0dG9ucworICAgICAgICBidXQg
dGhlIGxpc3QgY2FuIGJlIGV4dGVuZGVkIGluIHRoZSBmdXR1cmUuCisgICAgICAgICogcGx1Z2lu
cy9xdC9QbHVnaW5WaWV3UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6eDExRGlzcGxheSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OngxMVNjcmVlbik6CisgICAgICAg
IChXZWJDb3JlOjpyb290V2luZG93SUQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6
ZGlzcGxheURlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnN5bmNYKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpblZpZXc6OnVwZGF0ZVBsdWdpbldpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5WaWV3OjpzZXRGb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpzZXR1cEdyYXBoaWNzRXhw
b3NlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGFpbnRVc2luZ1hQaXht
YXApOgorICAgICAgICAoV2ViQ29yZTo6c2V0U2hhcmVkWEV2ZW50RmllbGRzKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblZpZXc6OmluaXRYRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luVmlldzo6c2V0WEtleUV2ZW50U3BlY2lmaWNGaWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0WEJ1dHRvbkV2ZW50U3BlY2lmaWNGaWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0WE1v
dGlvbkV2ZW50U3BlY2lmaWNGaWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0WENyb3NzaW5n
RXZlbnRTcGVjaWZpY0ZpZWxkcyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzZXRO
UFdpbmRvd0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldFBhcmVu
dFZpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjppbnZhbGlkYXRlUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRWaXN1YWxBbmRDb2xvcm1hcCk6CisgICAgICAgIFJlZmFjdG9yZWQg
dGhpcyBmdW5jdGlvbiB0byBtYWtlIGl0IG1vcmUgY2xlYXIKKyAgICAgICAgd2hhdCBkb2VzIGl0
IGRvLgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1TdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybURlc3Ryb3kpOgorCiAyMDEyLTAzLTIx
ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogZXhwb3NlIGdldEV2ZW50TGlzdGVuZXJzKCkgdG8gY29uc29sZSBjb21tYW5kIGxp
bmUgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDI1YTJiNmFhMWFlYmYxNTAyZmFiMjgxYmEzNmQyMTg5
Y2ZkMjViNmYuLmM3Y2VhOGUzNjZmNTM3ZjMwYzhjMjVjNmE5ZDk2YmJjNjIwNWFmOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDMtMjIgIEJhbGF6cyBLZWxlbWVuICA8
a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gWDExIHBsdWdpbnMgbmVlZCB0byBi
ZSByZXdvcmtlZCBmb3IgUXQ1K1dLMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODA2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgd2luZG93bGVzcyBwbHVnaW4gc3VwcG9ydCB3
aXRoIFF0NS4KKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdl
YlNldHRpbmdzOjplbmFibGVQZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgIEJ1aWxkIGZpeCBm
b3IgUXQ1LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKToK
KyAgICAgICAgSW5qZWN0IHRoZSB3bW9kZSBwYXJhbWV0ZXIgZm9yIGZsYXNoIHNvIGl0IHdpbGwK
KyAgICAgICAgd29yayBpbiB3aW5kb3dsZXNzLCBub24tdHJhbnNwYXJlbnQgbW9kZSB3aGljaAor
ICAgICAgICBpcyB0aGUgb25seSBvbmUgd2Ugc3VwcG9ydCBjdXJyZW50bHkuCisKIDIwMTItMDMt
MjAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgd3RmL1Bs
YXRmb3JtLmggZnJvbSBKYXZhU2NyaXB0Q29yZSB0byBTb3VyY2UvV1RGL3d0ZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
aW5kZXggZjRmNDljMjJhNzM5MjYzY2Y3Yzg1ZWNkNGRkNzgzMTM3OTdhMWYyZi4uYjliMTg2Yzg2
NWFjYzA3NDExZTRiNDIwOWEwMWEwZWFmMmEzYTNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yOTIxLDEx
ICsyOTIxLDEzIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJ
PTEpIHsKICAgICAgICAgICAgICAgICBwbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tCiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBTT1VSQ0VTICs9IFwKLSAgICAgICAgICAgICAgICBw
bHVnaW5zL3F0L1BsdWdpbkNvbnRhaW5lclF0LmNwcCBcCiAgICAgICAgICAgICAgICAgcGx1Z2lu
cy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwIFwKICAgICAgICAgICAgICAgICBwbHVnaW5zL3F0L1Bs
dWdpblZpZXdRdC5jcHAKLSAgICAgICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAgICAgICAg
IHBsdWdpbnMvcXQvUGx1Z2luQ29udGFpbmVyUXQuaAorCisgICAgICAgICAgICBoYXZlUXQoNCkg
eworICAgICAgICAgICAgICAgIFNPVVJDRVMgKz0gcGx1Z2lucy9xdC9QbHVnaW5Db250YWluZXJR
dC5jcHAKKyAgICAgICAgICAgICAgICBIRUFERVJTICs9IHBsdWdpbnMvcXQvUGx1Z2luQ29udGFp
bmVyUXQuaAorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlldy5oCmluZGV4IDExMjg1MjJkMDIxZjgxYThiZjVmZGUxZGQ3NjFjMzYwZDQ4
YzFmNTIuLjkwNWU1NWQxYjA0NGJlN2I4MTczMDgxYjg3ZTE0MmMxMzhhODU2ZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC00MjYsNiArNDI2LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgc3RhdGljIGJvb2wgc19pc1J1bm5pbmdVbmRlckRSVDsKICAgICAgICAgc3RhdGljIHZv
aWQgc2V0WEtleUV2ZW50U3BlY2lmaWNGaWVsZHMoWEV2ZW50KiwgS2V5Ym9hcmRFdmVudCopOwog
ICAgICAgICB2b2lkIHBhaW50VXNpbmdYUGl4bWFwKFFQYWludGVyKiBwYWludGVyLCBjb25zdCBR
UmVjdCAmZXhwb3NlZFJlY3QpOworICAgICAgICBpbnQgZGlzcGxheURlcHRoKCk7CiAjZW5kaWYK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkdfUExVR0lOX0xBWUVSKQogICAgICAgICBP
d25QdHI8UGxhdGZvcm1MYXllcj4gbV9wbGF0Zm9ybUxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwCmluZGV4IDRlOWE3MTdiODZmMWM1YmRjMzJl
MTJhYTk1MzMxOTQ5YzI3MGJhZjguLjE1NWU3OWE0NzViZTRiM2JiZTUwYTMwYzQ2MGIyM2JmOTgz
NjMwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2Fn
ZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblBhY2thZ2VRdC5j
cHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1
ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGVidWcuaCIKKyNpbmNsdWRl
IDxRRmlsZUluZm8+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xMzYsNiArMTM3LDE5IEBAIGJvb2wgUGx1Z2luUGFja2FnZTo6bG9hZCgp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVS
U0lPTl9DSEVDSyg1LCAwLCAwKQorICAgIC8vIFRPRE86IGVudW1lcmF0ZSBhbGwgcGx1Z2lucyB0
aGF0IGFyZSBpbmNvbXBhdGlibGUgd2l0aCBRdDUuCisgICAgY29uc3QgUUxhdGluMVN0cmluZyBw
bHVnaW5CbGFja0xpc3RbXSA9IHsKKyAgICAgICAgUVN0cmluZ0xpdGVyYWwoInNreXBlYnV0dG9u
cyIpCisgICAgfTsKKworICAgIFFTdHJpbmcgYmFzZU5hbWUgPSBRRmlsZUluZm8oc3RhdGljX2Nh
c3Q8UVN0cmluZz4obV9wYXRoKSkuYmFzZU5hbWUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2l6ZW9mKHBsdWdpbkJsYWNrTGlzdCkgLyBzaXplb2YoUUxhdGluMVN0cmluZyk7ICsr
aSkgeworICAgICAgICBpZiAoYmFzZU5hbWUgPT0gcGx1Z2luQmxhY2tMaXN0W2ldKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgorCiAgICAgbV9tb2R1bGUgPSBuZXcg
UUxpYnJhcnkoKFFTdHJpbmcpbV9wYXRoKTsKICAgICBtX21vZHVsZS0+c2V0TG9hZEhpbnRzKFFM
aWJyYXJ5OjpSZXNvbHZlQWxsU3ltYm9sc0hpbnQpOwogICAgIGlmICghbV9tb2R1bGUtPmxvYWQo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCmluZGV4IGZm
OTEyZGI1NjUyYThjMDVlMGU3M2U4MjVkMDg0ZTRkMTYxNDkzZTkuLjdmNzZiOTIyNjFmOTc2OGRh
MGU5ZDliMWVmYTFiYzViMDIyYWNiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvcXQvUGx1Z2luVmlld1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1Bs
dWdpblZpZXdRdC5jcHAKQEAgLTU4LDcgKzU4LDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2
ZW50LmgiCi0jaW5jbHVkZSAiUGx1Z2luQ29udGFpbmVyUXQuaCIKICNpbmNsdWRlICJQbHVnaW5E
ZWJ1Zy5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKICNpbmNsdWRlICJQbHVnaW5NYWlu
VGhyZWFkU2NoZWR1bGVyLmgiCkBAIC02OSwxNSArNjgsOCBAQAogI2lmIFVTRShKU0MpCiAjaW5j
bHVkZSAicnVudGltZV9yb290LmgiCiAjZW5kaWYKLQotI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4K
LSNpbmNsdWRlIDxRRGVza3RvcFdpZGdldD4KLSNpbmNsdWRlIDxRR3JhcGhpY3NXaWRnZXQ+CiAj
aW5jbHVkZSA8UUtleUV2ZW50PgogI2luY2x1ZGUgPFFQYWludGVyPgotI2luY2x1ZGUgPFFTdHls
ZU9wdGlvbkdyYXBoaWNzSXRlbT4KLSNpbmNsdWRlIDxRV2lkZ2V0PgotI2luY2x1ZGUgPFFYMTFJ
bmZvPgogI2luY2x1ZGUgPFgxMS9YLmg+CiAjaWZuZGVmIFFUX05PX1hSRU5ERVIKICNkZWZpbmUg
Qm9vbCBpbnQKQEAgLTg3LDYgKzc5LDIwIEBACiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KIAorI2RlZmluZSBIQVZFX1FUNSAoUVRfVkVS
U0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApKQorCisjaWYgSEFWRShRVDUpCisjaW5j
bHVkZSAiUXRYMTFJbWFnZUNvbnZlcnNpb24uaCIKKyNlbHNlCisjaW5jbHVkZSAiUGx1Z2luQ29u
dGFpbmVyUXQuaCIKKyNpbmNsdWRlIDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UURlc2t0b3BX
aWRnZXQ+CisjaW5jbHVkZSA8UUdyYXBoaWNzV2lkZ2V0PgorI2luY2x1ZGUgPFFTdHlsZU9wdGlv
bkdyYXBoaWNzSXRlbT4KKyNpbmNsdWRlIDxRV2lkZ2V0PgorI2luY2x1ZGUgPFFYMTFJbmZvPgor
I2VuZGlmCisKIHVzaW5nIEpTQzo6RXhlY1N0YXRlOwogI2lmIFVTRShKU0MpCiB1c2luZyBKU0M6
OkludGVycHJldGVyOwpAQCAtMTA1LDcgKzExMSw1NiBAQCBib29sIFBsdWdpblZpZXc6OnNfaXNS
dW5uaW5nVW5kZXJEUlQgPSBmYWxzZTsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAot
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKK3N0YXRpYyBpbmxpbmUgRGlzcGxheSog
eDExRGlzcGxheSgpCit7CisjaWYgSEFWRShRVDUpCisgICAgc3RhdGljIERpc3BsYXkqIGRlZGlj
YXRlZERpc3BsYXkgPSAwOworICAgIGlmICghZGVkaWNhdGVkRGlzcGxheSkKKyAgICAgICAgZGVk
aWNhdGVkRGlzcGxheSA9IFhPcGVuRGlzcGxheSgwKTsKKyAgICBBU1NFUlQoZGVkaWNhdGVkRGlz
cGxheSk7CisgICAgcmV0dXJuIGRlZGljYXRlZERpc3BsYXk7CisjZWxzZQorICAgIHJldHVybiBR
WDExSW5mbzo6ZGlzcGxheSgpOworI2VuZGlmCit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHgxMVNj
cmVlbigpCit7CisjaWYgSEFWRShRVDUpCisgICAgcmV0dXJuIFhEZWZhdWx0U2NyZWVuKHgxMURp
c3BsYXkoKSk7CisjZWxzZQorICAgIHJldHVybiBRWDExSW5mbzo6YXBwU2NyZWVuKCk7CisjZW5k
aWYKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHJvb3RXaW5kb3dJRCgpCit7Cisj
aWYgSEFWRShRVDUpCisgICAgcmV0dXJuIFhEZWZhdWx0Um9vdFdpbmRvdyh4MTFEaXNwbGF5KCkp
OworI2Vsc2UKKyAgICByZXR1cm4gUVgxMUluZm86OmFwcFJvb3RXaW5kb3coKTsKKyNlbmRpZgor
fQorCitpbnQgUGx1Z2luVmlldzo6ZGlzcGxheURlcHRoKCkKK3sKKyNpZiBIQVZFKFFUNSkKKyAg
ICByZXR1cm4gWERlZmF1bHREZXB0aCh4MTFEaXNwbGF5KCksIHgxMVNjcmVlbigpKTsKKyNlbHNl
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFFXaWRnZXQqPihwbGF0Zm9ybVBsdWdpbldpZGdldCgp
KS0+eDExSW5mbygpLmRlcHRoKCk7CisjZW5kaWYKK30KKworc3RhdGljIGlubGluZSB2b2lkIHN5
bmNYKCkKK3sKKyNpZiBIQVZFKFFUNSkKKyAgICBYU3luYyh4MTFEaXNwbGF5KCksIGZhbHNlKTsK
KyNlbHNlCisgICAgUUFwcGxpY2F0aW9uOjpzeW5jWCgpOworI2VuZGlmCit9CisKKyNpZiAhSEFW
RShRVDUpICYmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIC8vIFF0J3MgR3JhcGhpY3NM
YXllciAoR3JhcGhpY3NMYXllclF0KSByZXF1aXJlcyBsYXllcnMgdG8gYmUgUUdyYXBoaWNzV2lk
Z2V0cwogY2xhc3MgUGx1Z2luR3JhcGhpY3NMYXllclF0IDogcHVibGljIFFHcmFwaGljc1dpZGdl
dCB7CiBwdWJsaWM6CkBAIC0xNTQsMTEgKzIwOSwxMSBAQCB2b2lkIFBsdWdpblZpZXc6OnVwZGF0
ZVBsdWdpbldpZGdldCgpCiAKICAgICBpZiAoIW1faXNXaW5kb3dlZCAmJiBtX3dpbmRvd1JlY3Qu
c2l6ZSgpICE9IG9sZFdpbmRvd1JlY3Quc2l6ZSgpKSB7CiAgICAgICAgIGlmIChtX2RyYXdhYmxl
KQotICAgICAgICAgICAgWEZyZWVQaXhtYXAoUVgxMUluZm86OmRpc3BsYXkoKSwgbV9kcmF3YWJs
ZSk7CisgICAgICAgICAgICBYRnJlZVBpeG1hcCh4MTFEaXNwbGF5KCksIG1fZHJhd2FibGUpOwog
Ci0gICAgICAgIG1fZHJhd2FibGUgPSBYQ3JlYXRlUGl4bWFwKFFYMTFJbmZvOjpkaXNwbGF5KCks
IFFYMTFJbmZvOjphcHBSb290V2luZG93KCksIG1fd2luZG93UmVjdC53aWR0aCgpLCBtX3dpbmRv
d1JlY3QuaGVpZ2h0KCksCisgICAgICAgIG1fZHJhd2FibGUgPSBYQ3JlYXRlUGl4bWFwKHgxMURp
c3BsYXkoKSwgcm9vdFdpbmRvd0lEKCksIG1fd2luZG93UmVjdC53aWR0aCgpLCBtX3dpbmRvd1Jl
Y3QuaGVpZ2h0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTlBTZXRX
aW5kb3dDYWxsYmFja1N0cnVjdCopbV9ucFdpbmRvdy53c19pbmZvKS0+ZGVwdGgpOwotICAgICAg
ICBRQXBwbGljYXRpb246OnN5bmNYKCk7IC8vIG1ha2Ugc3VyZSB0aGF0IHRoZSBzZXJ2ZXIga25v
d3MgYWJvdXQgdGhlIERyYXdhYmxlCisgICAgICAgIHN5bmNYKCk7IC8vIG1ha2Ugc3VyZSB0aGF0
IHRoZSBzZXJ2ZXIga25vd3MgYWJvdXQgdGhlIERyYXdhYmxlCiAgICAgfQogCiAgICAgLy8gZG8g
bm90IGNhbGwgc2V0TlBXaW5kb3dJZk5lZWRlZCBpbW1lZGlhdGVseSwgd2lsbCBiZSBjYWxsZWQg
b24gcGFpbnQoKQpAQCAtMTg3LDEyICsyNDIsMTMgQEAgdm9pZCBQbHVnaW5WaWV3Ojp1cGRhdGVQ
bHVnaW5XaWRnZXQoKQogCiB2b2lkIFBsdWdpblZpZXc6OnNldEZvY3VzKGJvb2wgZm9jdXNlZCkK
IHsKKyNpZiAhSEFWRShRVDUpCiAgICAgaWYgKHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkpIHsKICAg
ICAgICAgaWYgKGZvY3VzZWQpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxRV2lkZ2V0Kj4ocGxh
dGZvcm1QbHVnaW5XaWRnZXQoKSktPnNldEZvY3VzKFF0OjpPdGhlckZvY3VzUmVhc29uKTsKLSAg
ICB9IGVsc2UgeworICAgIH0gZWxzZQorI2VuZGlmCiAgICAgICAgIFdpZGdldDo6c2V0Rm9jdXMo
Zm9jdXNlZCk7Ci0gICAgfQogfQogCiB2b2lkIFBsdWdpblZpZXc6OnNob3coKQpAQCAtMjA3LDEy
ICsyNjMsMzAgQEAgdm9pZCBQbHVnaW5WaWV3OjpoaWRlKCkKICAgICBXaWRnZXQ6OmhpZGUoKTsK
IH0KIAorc3RhdGljIHZvaWQgc2V0dXBHcmFwaGljc0V4cG9zZUV2ZW50KFBpeG1hcCBkcmF3YWJs
ZSwgY29uc3QgUVJlY3QmIGV4cG9zZWRSZWN0LCBYRXZlbnQmIHhldmVudCkKK3sKKyAgICBtZW1z
ZXQoJnhldmVudCwgMCwgc2l6ZW9mKFhFdmVudCkpOworICAgIFhHcmFwaGljc0V4cG9zZUV2ZW50
JiBleHBvc2VFdmVudCA9IHhldmVudC54Z3JhcGhpY3NleHBvc2U7CisgICAgZXhwb3NlRXZlbnQu
dHlwZSA9IEdyYXBoaWNzRXhwb3NlOworICAgIGV4cG9zZUV2ZW50LmRpc3BsYXkgPSB4MTFEaXNw
bGF5KCk7CisgICAgZXhwb3NlRXZlbnQuZHJhd2FibGUgPSBkcmF3YWJsZTsKKyAgICBleHBvc2VF
dmVudC54ID0gZXhwb3NlZFJlY3QueCgpOworICAgIGV4cG9zZUV2ZW50LnkgPSBleHBvc2VkUmVj
dC55KCk7CisgICAgZXhwb3NlRXZlbnQud2lkdGggPSBleHBvc2VkUmVjdC54KCkgKyBleHBvc2Vk
UmVjdC53aWR0aCgpOyAvLyBmbGFzaCBidWc/IGl0IHRoaW5rcyB3aWR0aCBpcyB0aGUgcmlnaHQg
aW4gdHJhbnNwYXJlbnQgbW9kZQorICAgIGV4cG9zZUV2ZW50LmhlaWdodCA9IGV4cG9zZWRSZWN0
LnkoKSArIGV4cG9zZWRSZWN0LmhlaWdodCgpOyAvLyBmbGFzaCBidWc/IGl0IHRoaW5rcyBoZWln
aHQgaXMgdGhlIGJvdHRvbSBpbiB0cmFuc3BhcmVudCBtb2RlCit9CisKIHZvaWQgUGx1Z2luVmll
dzo6cGFpbnRVc2luZ1hQaXhtYXAoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFSZWN0ICZleHBv
c2VkUmVjdCkKIHsKKyAgICBib29sIHNob3VsZFN5bmNYID0gbV9wbHVnaW5EaXNwbGF5ICYmIG1f
cGx1Z2luRGlzcGxheSAhPSB4MTFEaXNwbGF5KCk7CisgICAgWEV2ZW50IHhldmVudDsKKworI2lm
IEhBVkUoUVQ1KQorICAgIHNldHVwR3JhcGhpY3NFeHBvc2VFdmVudChtX2RyYXdhYmxlLCBleHBv
c2VkUmVjdCwgeGV2ZW50KTsKKyNlbHNlCiAgICAgUVBpeG1hcCBxdERyYXdhYmxlID0gUVBpeG1h
cDo6ZnJvbVgxMVBpeG1hcChtX2RyYXdhYmxlLCBRUGl4bWFwOjpFeHBsaWNpdGx5U2hhcmVkKTsK
ICAgICBjb25zdCBpbnQgZHJhd2FibGVEZXB0aCA9ICgoTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVj
dCopbV9ucFdpbmRvdy53c19pbmZvKS0+ZGVwdGg7CiAgICAgQVNTRVJUKGRyYXdhYmxlRGVwdGgg
PT0gcXREcmF3YWJsZS5kZXB0aCgpKTsKLSAgICBjb25zdCBib29sIHN5bmNYID0gbV9wbHVnaW5E
aXNwbGF5ICYmIG1fcGx1Z2luRGlzcGxheSAhPSBRWDExSW5mbzo6ZGlzcGxheSgpOwogCiAgICAg
Ly8gV2hlbiBwcmludGluZywgUXQgdXNlcyBhIFFQaWN0dXJlIHRvIGNhcHR1cmUgdGhlIG91dHB1
dCBpbiBwcmV2aWV3IG1vZGUuIFRoZQogICAgIC8vIFFQaWN0dXJlIGhvbGRzIGEgcmVmZXJlbmNl
IHRvIHRoZSBYIFBpeG1hcC4gQXMgYSByZXN1bHQsIHRoZSBwcmludCBwcmV2aWV3IHdvdWxkCkBA
IC0yNDYsMjcgKzMyMCwyNiBAQCB2b2lkIFBsdWdpblZpZXc6OnBhaW50VXNpbmdYUGl4bWFwKFFQ
YWludGVyKiBwYWludGVyLCBjb25zdCBRUmVjdCAmZXhwb3NlZFJlY3QpCiAgICAgICAgICAgICBw
YWludGVyLmZpbGxSZWN0KGV4cG9zZWRSZWN0LCBRdDo6d2hpdGUpOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKHN5bmNYKQotICAgICAgICAgICAgUUFwcGxpY2F0aW9uOjpzeW5jWCgpOworICAg
ICAgICBpZiAoc2hvdWxkU3luY1gpCisgICAgICAgICAgICBzeW5jWCgpOwogICAgIH0KIAotICAg
IFhFdmVudCB4ZXZlbnQ7Ci0gICAgbWVtc2V0KCZ4ZXZlbnQsIDAsIHNpemVvZihYRXZlbnQpKTsK
LSAgICBYR3JhcGhpY3NFeHBvc2VFdmVudCYgZXhwb3NlRXZlbnQgPSB4ZXZlbnQueGdyYXBoaWNz
ZXhwb3NlOwotICAgIGV4cG9zZUV2ZW50LnR5cGUgPSBHcmFwaGljc0V4cG9zZTsKLSAgICBleHBv
c2VFdmVudC5kaXNwbGF5ID0gUVgxMUluZm86OmRpc3BsYXkoKTsKLSAgICBleHBvc2VFdmVudC5k
cmF3YWJsZSA9IHF0RHJhd2FibGUuaGFuZGxlKCk7Ci0gICAgZXhwb3NlRXZlbnQueCA9IGV4cG9z
ZWRSZWN0LngoKTsKLSAgICBleHBvc2VFdmVudC55ID0gZXhwb3NlZFJlY3QueSgpOwotICAgIGV4
cG9zZUV2ZW50LndpZHRoID0gZXhwb3NlZFJlY3QueCgpICsgZXhwb3NlZFJlY3Qud2lkdGgoKTsg
Ly8gZmxhc2ggYnVnPyBpdCB0aGlua3Mgd2lkdGggaXMgdGhlIHJpZ2h0IGluIHRyYW5zcGFyZW50
IG1vZGUKLSAgICBleHBvc2VFdmVudC5oZWlnaHQgPSBleHBvc2VkUmVjdC55KCkgKyBleHBvc2Vk
UmVjdC5oZWlnaHQoKTsgLy8gZmxhc2ggYnVnPyBpdCB0aGlua3MgaGVpZ2h0IGlzIHRoZSBib3R0
b20gaW4gdHJhbnNwYXJlbnQgbW9kZQorICAgIHNldHVwR3JhcGhpY3NFeHBvc2VFdmVudChxdERy
YXdhYmxlLmhhbmRsZSgpLCBleHBvc2VkUmVjdCwgeGV2ZW50KTsKKyNlbmRpZgogCiAgICAgZGlz
cGF0Y2hOUEV2ZW50KHhldmVudCk7CiAKLSAgICBpZiAoc3luY1gpCisgICAgaWYgKHNob3VsZFN5
bmNYKQogICAgICAgICBYU3luYyhtX3BsdWdpbkRpc3BsYXksIGZhbHNlKTsgLy8gc3luYyBjaGFu
Z2VzIGJ5IHBsdWdpbgogCisjaWYgSEFWRShRVDUpCisgICAgWEltYWdlKiB4SW1hZ2UgPSBYR2V0
SW1hZ2UoeDExRGlzcGxheSgpLCBtX2RyYXdhYmxlLCBleHBvc2VkUmVjdC54KCksIGV4cG9zZWRS
ZWN0LnkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvc2VkUmVjdC53aWR0
aCgpLCBleHBvc2VkUmVjdC5oZWlnaHQoKSwgVUxPTkdfTUFYLCBaUGl4bWFwKTsKKyAgICBwYWlu
dGVyLT5kcmF3SW1hZ2UoUVBvaW50KGV4cG9zZWRSZWN0LngoKSwgZXhwb3NlZFJlY3QueSgpKSwg
cWltYWdlRnJvbVhJbWFnZSh4SW1hZ2UpLCBleHBvc2VkUmVjdCk7CisgICAgWERlc3Ryb3lJbWFn
ZSh4SW1hZ2UpOworI2Vsc2UKICAgICBwYWludGVyLT5kcmF3UGl4bWFwKFFQb2ludChleHBvc2Vk
UmVjdC54KCksIGV4cG9zZWRSZWN0LnkoKSksIHF0RHJhd2FibGUsIGV4cG9zZWRSZWN0KTsKKyNl
bmRpZgogfQogCiB2b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTMzNSwyMCArNDA4LDI4IEBAIHZvaWQgc2V0U2hh
cmVkWEV2ZW50RmllbGRzKFhFdmVudCogeEV2ZW50LCBRV2lkZ2V0KiBvd25lcldpZGdldCkKIHsK
ICAgICB4RXZlbnQtPnhhbnkuc2VyaWFsID0gMDsgLy8gd2UgYXJlIHVuYXdhcmUgb2YgdGhlIGxh
c3QgcmVxdWVzdCBwcm9jZXNzZWQgYnkgWCBTZXJ2ZXIKICAgICB4RXZlbnQtPnhhbnkuc2VuZF9l
dmVudCA9IGZhbHNlOwotICAgIHhFdmVudC0+eGFueS5kaXNwbGF5ID0gUVgxMUluZm86OmRpc3Bs
YXkoKTsKKyAgICB4RXZlbnQtPnhhbnkuZGlzcGxheSA9IHgxMURpc3BsYXkoKTsKICAgICAvLyBO
T1RFOiBldmVudC0+eGFueS53aW5kb3cgZG9lc24ndCBhbHdheXMgcmVzcG9uZCB0byB0aGUgLndp
bmRvdyBwcm9wZXJ0eSBvZiBvdGhlciBYRXZlbnQncwogICAgIC8vIGJ1dCBkb2VzIGluIHRoZSBj
YXNlIG9mIEtleVByZXNzLCBLZXlSZWxlYXNlLCBCdXR0b25QcmVzcywgQnV0dG9uUmVsZWFzZSwg
YW5kIE1vdGlvbk5vdGlmeQogICAgIC8vIGV2ZW50czsgdGh1cywgdGhpcyBpcyByaWdodDoKKyNp
ZiBIQVZFKFFUNSkKKyAgICB4RXZlbnQtPnhhbnkud2luZG93ID0gMDsKKyNlbHNlCiAgICAgeEV2
ZW50LT54YW55LndpbmRvdyA9IG93bmVyV2lkZ2V0ID8gb3duZXJXaWRnZXQtPndpbmRvdygpLT5o
YW5kbGUoKSA6IDA7CisjZW5kaWYKIH0KIAogdm9pZCBQbHVnaW5WaWV3Ojppbml0WEV2ZW50KFhF
dmVudCogeEV2ZW50KQogewogICAgIG1lbXNldCh4RXZlbnQsIDAsIHNpemVvZihYRXZlbnQpKTsK
IAorI2lmIEhBVkUoUVQ1KQorICAgIHNldFNoYXJlZFhFdmVudEZpZWxkcyh4RXZlbnQsIDApOwor
I2Vsc2UKICAgICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gbV9wYXJlbnRGcmFtZS0+dmlldygp
LT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpOwogICAgIFFXaWRnZXQqIG93bmVy
V2lkZ2V0ID0gY2xpZW50ID8gY2xpZW50LT5vd25lcldpZGdldCgpIDogMDsKICAgICBzZXRTaGFy
ZWRYRXZlbnRGaWVsZHMoeEV2ZW50LCBvd25lcldpZGdldCk7CisjZW5kaWYKIH0KIAogdm9pZCBQ
bHVnaW5WaWV3OjpzZXRYS2V5RXZlbnRTcGVjaWZpY0ZpZWxkcyhYRXZlbnQqIHhFdmVudCwgS2V5
Ym9hcmRFdmVudCogZXZlbnQpCkBAIC0zNTYsNyArNDM3LDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojpz
ZXRYS2V5RXZlbnRTcGVjaWZpY0ZpZWxkcyhYRXZlbnQqIHhFdmVudCwgS2V5Ym9hcmRFdmVudCog
ZXZlbnQKICAgICBjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQqIGtleUV2ZW50ID0gZXZlbnQt
PmtleUV2ZW50KCk7CiAKICAgICB4RXZlbnQtPnR5cGUgPSAoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkua2V5ZG93bkV2ZW50KSA/IDIgOiAzOyAvLyBpbnRzIGFzIFF0IHVuc2V0cyBLZXlQ
cmVzcyBhbmQgS2V5UmVsZWFzZQotICAgIHhFdmVudC0+eGtleS5yb290ID0gUVgxMUluZm86OmFw
cFJvb3RXaW5kb3coKTsKKyAgICB4RXZlbnQtPnhrZXkucm9vdCA9IHJvb3RXaW5kb3dJRCgpOwog
ICAgIHhFdmVudC0+eGtleS5zdWJ3aW5kb3cgPSAwOyAvLyB3ZSBoYXZlIG5vIGNoaWxkIHdpbmRv
dwogICAgIHhFdmVudC0+eGtleS50aW1lID0gZXZlbnQtPnRpbWVTdGFtcCgpOwogICAgIHhFdmVu
dC0+eGtleS5zdGF0ZSA9IGtleUV2ZW50LT5uYXRpdmVNb2RpZmllcnMoKTsKQEAgLTM3MCw3ICs0
NTEsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldFhLZXlFdmVudFNwZWNpZmljRmllbGRzKFhFdmVu
dCogeEV2ZW50LCBLZXlib2FyZEV2ZW50KiBldmVudAogICAgICAgICBRS2V5RXZlbnQqIHFLZXlF
dmVudCA9IGtleUV2ZW50LT5xdEV2ZW50KCk7CiAgICAgICAgIEFTU0VSVChxS2V5RXZlbnQpOwog
ICAgICAgICBRU3RyaW5nIGtleVRleHQgPSBxS2V5RXZlbnQtPnRleHQoKS5sZWZ0KDEpOwotICAg
ICAgICB4RXZlbnQtPnhrZXkua2V5Y29kZSA9IFhLZXlzeW1Ub0tleWNvZGUoUVgxMUluZm86OmRp
c3BsYXkoKSwgWFN0cmluZ1RvS2V5c3ltKGtleVRleHQudG9VdGY4KCkuY29uc3REYXRhKCkpKTsK
KyAgICAgICAgeEV2ZW50LT54a2V5LmtleWNvZGUgPSBYS2V5c3ltVG9LZXljb2RlKHgxMURpc3Bs
YXkoKSwgWFN0cmluZ1RvS2V5c3ltKGtleVRleHQudG9VdGY4KCkuY29uc3REYXRhKCkpKTsKICAg
ICB9CiAKICAgICB4RXZlbnQtPnhrZXkuc2FtZV9zY3JlZW4gPSB0cnVlOwpAQCAtNDE5LDcgKzUw
MCw3IEBAIHN0YXRpYyB2b2lkIHNldFhCdXR0b25FdmVudFNwZWNpZmljRmllbGRzKFhFdmVudCog
eEV2ZW50LCBNb3VzZUV2ZW50KiBldmVudCwgY29uCiB7CiAgICAgWEJ1dHRvbkV2ZW50JiB4YnV0
dG9uID0geEV2ZW50LT54YnV0dG9uOwogICAgIHhidXR0b24udHlwZSA9IGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ID8gQnV0dG9uUHJlc3MgOiBCdXR0b25SZWxl
YXNlOwotICAgIHhidXR0b24ucm9vdCA9IFFYMTFJbmZvOjphcHBSb290V2luZG93KCk7CisgICAg
eGJ1dHRvbi5yb290ID0gcm9vdFdpbmRvd0lEKCk7CiAgICAgeGJ1dHRvbi5zdWJ3aW5kb3cgPSAw
OwogICAgIHhidXR0b24udGltZSA9IGV2ZW50LT50aW1lU3RhbXAoKTsKICAgICB4YnV0dG9uLngg
PSBwb3N0Wm9vbVBvcy54KCk7CkBAIC00NDYsNyArNTI3LDcgQEAgc3RhdGljIHZvaWQgc2V0WE1v
dGlvbkV2ZW50U3BlY2lmaWNGaWVsZHMoWEV2ZW50KiB4RXZlbnQsIE1vdXNlRXZlbnQqIGV2ZW50
LCBjb24KIHsKICAgICBYTW90aW9uRXZlbnQmIHhtb3Rpb24gPSB4RXZlbnQtPnhtb3Rpb247CiAg
ICAgeG1vdGlvbi50eXBlID0gTW90aW9uTm90aWZ5OwotICAgIHhtb3Rpb24ucm9vdCA9IFFYMTFJ
bmZvOjphcHBSb290V2luZG93KCk7CisgICAgeG1vdGlvbi5yb290ID0gcm9vdFdpbmRvd0lEKCk7
CiAgICAgeG1vdGlvbi5zdWJ3aW5kb3cgPSAwOwogICAgIHhtb3Rpb24udGltZSA9IGV2ZW50LT50
aW1lU3RhbXAoKTsKICAgICB4bW90aW9uLnggPSBwb3N0Wm9vbVBvcy54KCk7CkBAIC00NjIsNyAr
NTQzLDcgQEAgc3RhdGljIHZvaWQgc2V0WENyb3NzaW5nRXZlbnRTcGVjaWZpY0ZpZWxkcyhYRXZl
bnQqIHhFdmVudCwgTW91c2VFdmVudCogZXZlbnQsIGMKIHsKICAgICBYQ3Jvc3NpbmdFdmVudCYg
eGNyb3NzaW5nID0geEV2ZW50LT54Y3Jvc3Npbmc7CiAgICAgeGNyb3NzaW5nLnR5cGUgPSBldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCA/IEVudGVyTm90aWZ5IDog
TGVhdmVOb3RpZnk7Ci0gICAgeGNyb3NzaW5nLnJvb3QgPSBRWDExSW5mbzo6YXBwUm9vdFdpbmRv
dygpOworICAgIHhjcm9zc2luZy5yb290ID0gcm9vdFdpbmRvd0lEKCk7CiAgICAgeGNyb3NzaW5n
LnN1YndpbmRvdyA9IDA7CiAgICAgeGNyb3NzaW5nLnRpbWUgPSBldmVudC0+dGltZVN0YW1wKCk7
CiAgICAgeGNyb3NzaW5nLnggPSBwb3N0Wm9vbVBvcy55KCk7CkBAIC01NzEsNiArNjUyLDcgQEAg
dm9pZCBQbHVnaW5WaWV3OjpzZXROUFdpbmRvd0lmTmVlZGVkKCkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1faGFzUGVuZGluZ0dlb21ldHJ5Q2hhbmdlID0gZmFsc2U7CiAKKyNpZiAhSEFWRShRVDUp
CiAgICAgaWYgKG1faXNXaW5kb3dlZCkgewogICAgICAgICBRV2lkZ2V0KiB3aWRnZXQgPSBzdGF0
aWNfY2FzdDxRV2lkZ2V0Kj4ocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSk7CiAgICAgICAgIHdpZGdl
dC0+c2V0R2VvbWV0cnkobV93aW5kb3dSZWN0KTsKQEAgLTU5MCw3ICs2NzIsOSBAQCB2b2lkIFBs
dWdpblZpZXc6OnNldE5QV2luZG93SWZOZWVkZWQoKQogCiAgICAgICAgIG1fbnBXaW5kb3cueCA9
IG1fd2luZG93UmVjdC54KCk7CiAgICAgICAgIG1fbnBXaW5kb3cueSA9IG1fd2luZG93UmVjdC55
KCk7Ci0gICAgfSBlbHNlIHsKKyAgICB9IGVsc2UKKyNlbmRpZgorICAgIHsKICAgICAgICAgbV9u
cFdpbmRvdy54ID0gMDsKICAgICAgICAgbV9ucFdpbmRvdy55ID0gMDsKICAgICB9CkBAIC02Mzks
OCArNzIzLDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0UGFyZW50VmlzaWJsZShib29sIHZpc2li
bGUpCiAKICAgICBXaWRnZXQ6OnNldFBhcmVudFZpc2libGUodmlzaWJsZSk7CiAKKyNpZiAhSEFW
RShRVDUpCiAgICAgaWYgKGlzU2VsZlZpc2libGUoKSAmJiBwbGF0Zm9ybVBsdWdpbldpZGdldCgp
KQogICAgICAgICBzdGF0aWNfY2FzdDxRV2lkZ2V0Kj4ocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkt
PnNldFZpc2libGUodmlzaWJsZSk7CisjZW5kaWYKIH0KIAogTlBFcnJvciBQbHVnaW5WaWV3Ojpo
YW5kbGVQb3N0UmVhZEZpbGUoVmVjdG9yPGNoYXI+JiBidWZmZXIsIHVpbnQzMl90IGxlbiwgY29u
c3QgY2hhciogYnVmKQpAQCAtNzAxLDcgKzc4Nyw3IEBAIGJvb2wgUGx1Z2luVmlldzo6cGxhdGZv
cm1HZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUsIE5QRXJyb3IqIHJl
CiB7CiAgICAgc3dpdGNoICh2YXJpYWJsZSkgewogICAgIGNhc2UgTlBOVnhEaXNwbGF5OgotICAg
ICAgICAqKHZvaWQgKiopdmFsdWUgPSBRWDExSW5mbzo6ZGlzcGxheSgpOworICAgICAgICAqKHZv
aWQgKiopdmFsdWUgPSB4MTFEaXNwbGF5KCk7CiAgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19F
UlJPUjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTcxMCw5ICs3OTYsMTIgQEAgYm9vbCBQ
bHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2
YWx1ZSwgTlBFcnJvciogcmUKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIE5QTlZu
ZXRzY2FwZVdpbmRvdzogewotICAgICAgICB2b2lkKiB3ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4odmFsdWUpOworI2lmIEhBVkUoUVQ1KQorICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDxYSUQq
Pih2YWx1ZSkgPSByb290V2luZG93SUQoKTsKKyNlbHNlCiAgICAgICAgIFFXZWJQYWdlQ2xpZW50
KiBjbGllbnQgPSBtX3BhcmVudEZyYW1lLT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1Q
YWdlQ2xpZW50KCk7Ci0gICAgICAgICooKFhJRCAqKXcpID0gY2xpZW50ID8gY2xpZW50LT5vd25l
cldpZGdldCgpLT53aW5kb3coKS0+d2luSWQoKSA6IDA7CisgICAgICAgICpyZWludGVycHJldF9j
YXN0PFhJRCo+KHZhbHVlKSA9IGNsaWVudCA/IGNsaWVudC0+b3duZXJXaWRnZXQoKS0+d2luZG93
KCktPndpbklkKCkgOiAwOworI2VuZGlmCiAgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJP
UjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNzM5LDYgKzgyOCw3IEBAIHZvaWQg
UGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICB9CiAj
ZW5kaWYKIAorI2lmICFIQVZFKFFUNSkKICAgICBpZiAobV9pc1dpbmRvd2VkKSB7CiAgICAgICAg
IGlmIChwbGF0Zm9ybVdpZGdldCgpKSB7CiAgICAgICAgICAgICAvLyB1cGRhdGUoKSB3aWxsIHNj
aGVkdWxlIGEgcmVwYWludCBvZiB0aGUgd2lkZ2V0IHNvIGVuc3VyZQpAQCAtNzQ5LDYgKzgzOSw3
IEBAIHZvaWQgUGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkK
ICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmCiAKICAgICBpbnZhbGlk
YXRlV2luZG93bGVzc1BsdWdpblJlY3QocmVjdCk7CiB9CkBAIC04MDMsNDcgKzg5NCw1MyBAQCBz
dGF0aWMgRGlzcGxheSAqZ2V0UGx1Z2luRGlzcGxheSgpCiAgICAgcmV0dXJuIChEaXNwbGF5Kiln
ZGtfeDExX2Rpc3BsYXlfZ2V0X3hkaXNwbGF5KGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpOwog
fQogCi1zdGF0aWMgdm9pZCBnZXRWaXN1YWxBbmRDb2xvcm1hcChpbnQgZGVwdGgsIFZpc3VhbCAq
KnZpc3VhbCwgQ29sb3JtYXAgKmNvbG9ybWFwKQorc3RhdGljIGJvb2wgZ2V0VmlzdWFsQW5kQ29s
b3JtYXAoaW50IGRlcHRoLCBWaXN1YWwqJiB2aXN1YWwsIENvbG9ybWFwJiBjb2xvcm1hcCwgYm9v
bCBmb3JjZUFSR0IzMikKIHsKLSAgICAqdmlzdWFsID0gMDsKLSAgICAqY29sb3JtYXAgPSAwOwor
ICAgIEFTU0VSVChkZXB0aCA9PSAzMiB8fCAhZm9yY2VBUkdCMzIpOwogCi0jaWZuZGVmIFFUX05P
X1hSRU5ERVIKKyAgICB2aXN1YWwgPSAwOworICAgIGNvbG9ybWFwID0gMDsKKworI2lmICFIQVZF
KFFUNSkgJiYgIWRlZmluZWQoUVRfTk9fWFJFTkRFUikKICAgICBzdGF0aWMgY29uc3QgYm9vbCB1
c2VYUmVuZGVyID0gcWdldGVudigiUVRfWDExX05PX1hSRU5ERVIiKS5pc051bGwoKTsgLy8gU2hv
dWxkIGFsc28gY2hlY2sgZm9yIFhSZW5kZXIgPj0gMC41CiAjZWxzZQogICAgIHN0YXRpYyBjb25z
dCBib29sIHVzZVhSZW5kZXIgPSBmYWxzZTsKICNlbmRpZgotCi0gICAgaWYgKCF1c2VYUmVuZGVy
ICYmIGRlcHRoID09IDMyKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCF1c2VYUmVuZGVyICYm
IGZvcmNlQVJHQjMyKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpbnQgbnZpOwogICAg
IFhWaXN1YWxJbmZvIHRlbXBsOwotICAgIHRlbXBsLnNjcmVlbiAgPSBRWDExSW5mbzo6YXBwU2Ny
ZWVuKCk7CisgICAgdGVtcGwuc2NyZWVuICA9IHgxMVNjcmVlbigpOwogICAgIHRlbXBsLmRlcHRo
ICAgPSBkZXB0aDsKICAgICB0ZW1wbC5jX2NsYXNzID0gVHJ1ZUNvbG9yOwotICAgIFhWaXN1YWxJ
bmZvKiB4dmkgPSBYR2V0VmlzdWFsSW5mbyhRWDExSW5mbzo6ZGlzcGxheSgpLCBWaXN1YWxTY3Jl
ZW5NYXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwgVmlzdWFsQ2xhc3NNYXNrLCAmdGVtcGwsICZudmkp
OwotCisgICAgWFZpc3VhbEluZm8qIHh2aSA9IFhHZXRWaXN1YWxJbmZvKHgxMURpc3BsYXkoKSwg
VmlzdWFsU2NyZWVuTWFzayB8IFZpc3VhbERlcHRoTWFzayB8IFZpc3VhbENsYXNzTWFzaywgJnRl
bXBsLCAmbnZpKTsKKyAgICBBU1NFUlQoeHZpIHx8IGZvcmNlQVJHQjMyKTsKICAgICBpZiAoIXh2
aSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSNpZm5kZWYgUVRf
Tk9fWFJFTkRFUgotICAgIGlmIChkZXB0aCA9PSAzMikgeworI2lmICFIQVZFKFFUNSkgJiYgIWRl
ZmluZWQoUVRfTk9fWFJFTkRFUikKKyAgICBpZiAoZm9yY2VBUkdCMzIpIHsKICAgICAgICAgZm9y
IChpbnQgaWR4ID0gMDsgaWR4IDwgbnZpOyArK2lkeCkgewotICAgICAgICAgICAgWFJlbmRlclBp
Y3RGb3JtYXQqIGZvcm1hdCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KFFYMTFJbmZvOjpkaXNw
bGF5KCksIHh2aVtpZHhdLnZpc3VhbCk7CisgICAgICAgICAgICBYUmVuZGVyUGljdEZvcm1hdCog
Zm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQoeDExRGlzcGxheSgpLCB4dmlbaWR4XS52
aXN1YWwpOwogICAgICAgICAgICAgaWYgKGZvcm1hdC0+dHlwZSA9PSBQaWN0VHlwZURpcmVjdCAm
JiBmb3JtYXQtPmRpcmVjdC5hbHBoYU1hc2spIHsKLSAgICAgICAgICAgICAgICAgKnZpc3VhbCA9
IHh2aVtpZHhdLnZpc3VhbDsKKyAgICAgICAgICAgICAgICAgdmlzdWFsID0geHZpW2lkeF0udmlz
dWFsOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBpZiAoIXZpc3VhbCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9IGVsc2UKLSNlbmRpZiAvLyBRVF9OT19YUkVOREVSCi0gICAgICAgICp2aXN1YWwg
PSB4dmlbMF0udmlzdWFsOworI2VuZGlmCisgICAgeworICAgICAgICB2aXN1YWwgPSB4dmlbMF0u
dmlzdWFsOworICAgIH0KKyAgICBBU1NFUlQodmlzdWFsKTsKIAogICAgIFhGcmVlKHh2aSk7CiAK
LSAgICBpZiAoKnZpc3VhbCkKLSAgICAgICAgKmNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFwKFFY
MTFJbmZvOjpkaXNwbGF5KCksIFFYMTFJbmZvOjphcHBSb290V2luZG93KCksICp2aXN1YWwsIEFs
bG9jTm9uZSk7CisgICAgY29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoeDExRGlzcGxheSgpLCBy
b290V2luZG93SUQoKSwgdmlzdWFsLCBBbGxvY05vbmUpOworICAgIHJldHVybiB0cnVlOwogfQog
CiBib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtU3RhcnQoKQpAQCAtODUxLDYgKzk0OCwxMCBAQCBi
b29sIFBsdWdpblZpZXc6OnBsYXRmb3JtU3RhcnQoKQogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7
CiAgICAgQVNTRVJUKG1fc3RhdHVzID09IFBsdWdpblN0YXR1c0xvYWRlZFN1Y2Nlc3NmdWxseSk7
CiAKKyNpZiBIQVZFKFFUNSkKKyAgICBpZiAobV9pc1dpbmRvd2VkKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisjZWxzZQogICAgIGlmIChtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+Z2V0dmFsdWUp
IHsKICAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7CiAjaWYg
VVNFKEpTQykKQEAgLTg3Myw3ICs5NzQsOSBAQCBib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtU3Rh
cnQoKQogICAgICAgICAgICAgbV9zdGF0dXMgPSBQbHVnaW5TdGF0dXNDYW5Ob3RMb2FkUGx1Z2lu
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKKyAg
ICB9IGVsc2UKKyNlbmRpZiAvLyBIQVZFKFFUNSkKKyAgICB7CiAgICAgICAgIHNldFBsYXRmb3Jt
V2lkZ2V0KDApOwogICAgICAgICBtX3BsdWdpbkRpc3BsYXkgPSBnZXRQbHVnaW5EaXNwbGF5KCk7
CiAKQEAgLTg5Myw2ICs5OTYsNyBAQCBib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtU3RhcnQoKQog
ICAgIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIHdzaSA9IG5ldyBOUFNldFdpbmRvd0NhbGxi
YWNrU3RydWN0KCk7CiAgICAgd3NpLT50eXBlID0gMDsKIAorI2lmICFIQVZFKFFUNSkKICAgICBp
ZiAobV9pc1dpbmRvd2VkKSB7CiAgICAgICAgIGNvbnN0IFFYMTFJbmZvKiB4MTFJbmZvID0gJnN0
YXRpY19jYXN0PFFXaWRnZXQqPihwbGF0Zm9ybVBsdWdpbldpZGdldCgpKS0+eDExSW5mbygpOwog
CkBAIC05MDUsMjAgKzEwMDksMjQgQEAgYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybVN0YXJ0KCkK
ICAgICAgICAgbV9ucFdpbmRvdy53aW5kb3cgPSAodm9pZCopc3RhdGljX2Nhc3Q8UVdpZGdldCo+
KHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkpLT53aW5JZCgpOwogICAgICAgICBtX25wV2luZG93Lndp
ZHRoID0gLTE7CiAgICAgICAgIG1fbnBXaW5kb3cuaGVpZ2h0ID0gLTE7Ci0gICAgfSBlbHNlIHsK
KyAgICB9IGVsc2UKKyNlbmRpZgorICAgIHsKKyNpZiAhSEFWRShRVDUpCiAgICAgICAgIGNvbnN0
IFFYMTFJbmZvKiB4MTFJbmZvID0gJlFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT54MTFJbmZvKCk7
Ci0KLSAgICAgICAgaWYgKHgxMUluZm8tPmRlcHRoKCkgPT0gMzIgfHwgIW1fcGx1Z2luLT5xdWly
a3MoKS5jb250YWlucyhQbHVnaW5RdWlya1JlcXVpcmVzRGVmYXVsdFNjcmVlbkRlcHRoKSkgewot
ICAgICAgICAgICAgZ2V0VmlzdWFsQW5kQ29sb3JtYXAoMzIsICZtX3Zpc3VhbCwgJm1fY29sb3Jt
YXApOworICAgICAgICBpZiAoKHgxMUluZm8tPmRlcHRoKCkgPT0gMzIgfHwgIW1fcGx1Z2luLT5x
dWlya3MoKS5jb250YWlucyhQbHVnaW5RdWlya1JlcXVpcmVzRGVmYXVsdFNjcmVlbkRlcHRoKSkK
KyAgICAgICAgICAgICAmJiBnZXRWaXN1YWxBbmRDb2xvcm1hcCgzMiwgbV92aXN1YWwsIG1fY29s
b3JtYXAsIHRydWUpKQogICAgICAgICAgICAgd3NpLT5kZXB0aCA9IDMyOworICAgICAgICBlbHNl
CisjZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgaW50IGRlcHRoID0gZGlzcGxheURlcHRo
KCk7CisgICAgICAgICAgICBib29sIGZvdW5kID0gZ2V0VmlzdWFsQW5kQ29sb3JtYXAoZGVwdGgs
IG1fdmlzdWFsLCBtX2NvbG9ybWFwLCBmYWxzZSk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KGZvdW5kLCBmb3VuZCk7CisgICAgICAgICAgICB3c2ktPmRlcHRoID0gZGVwdGg7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoIW1fdmlzdWFsKSB7Ci0gICAgICAgICAgICBnZXRWaXN1YWxBbmRD
b2xvcm1hcCh4MTFJbmZvLT5kZXB0aCgpLCAmbV92aXN1YWwsICZtX2NvbG9ybWFwKTsKLSAgICAg
ICAgICAgIHdzaS0+ZGVwdGggPSB4MTFJbmZvLT5kZXB0aCgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgd3NpLT5kaXNwbGF5ID0geDExSW5mby0+ZGlzcGxheSgpOworICAgICAgICB3c2ktPmRpc3Bs
YXkgPSB4MTFEaXNwbGF5KCk7CiAgICAgICAgIHdzaS0+dmlzdWFsID0gbV92aXN1YWw7CiAgICAg
ICAgIHdzaS0+Y29sb3JtYXAgPSBtX2NvbG9ybWFwOwogCkBAIC05NDYsMTAgKzEwNTQsMTAgQEAg
dm9pZCBQbHVnaW5WaWV3OjpwbGF0Zm9ybURlc3Ryb3koKQogICAgICAgICBkZWxldGUgcGxhdGZv
cm1QbHVnaW5XaWRnZXQoKTsKIAogICAgIGlmIChtX2RyYXdhYmxlKQotICAgICAgICBYRnJlZVBp
eG1hcChRWDExSW5mbzo6ZGlzcGxheSgpLCBtX2RyYXdhYmxlKTsKKyAgICAgICAgWEZyZWVQaXht
YXAoeDExRGlzcGxheSgpLCBtX2RyYXdhYmxlKTsKIAogICAgIGlmIChtX2NvbG9ybWFwKQotICAg
ICAgICBYRnJlZUNvbG9ybWFwKFFYMTFJbmZvOjpkaXNwbGF5KCksIG1fY29sb3JtYXApOworICAg
ICAgICBYRnJlZUNvbG9ybWFwKHgxMURpc3BsYXkoKSwgbV9jb2xvcm1hcCk7CiB9CiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2Vic2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdz
LmNwcAppbmRleCBjYTI2NGM4YWYwMzczZDM2ZWZmOTFkMzI3ZmY1OWE1MTA0Yjk5ZTlhLi40ZTAx
ODM2Zjc3ODRjNzlhYTJmYWEwODE3ZGU3MmJmMjU0MGFiNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJzZXR0aW5ncy5jcHAKQEAgLTExNzQsNyArMTE3NCwxMSBAQCB2b2lkIFFXZWJTZXR0aW5n
czo6ZW5hYmxlUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUVN0cmluZyYgcGF0aCkKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQogICAgIC8vIEFsbCBhcHBsaWNhdGlv
bnMgY2FuIHNoYXJlIHRoZSBjb21tb24gUXRXZWJraXQgY2FjaGUgZmlsZShzKS4KICAgICAvLyBQ
YXRoIGlzIG5vdCBjb25maWd1cmFibGUgYW5kIHVzZXMgUURlc2t0b3BTZXJ2aWNlczo6Q2FjaGVM
b2NhdGlvbiBieSBkZWZhdWx0LgorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg1
LCAwLCAwKQorICAgIFFTdHJpbmcgY2FjaGVQYXRoID0gUVN0YW5kYXJkUGF0aHM6OndyaXRhYmxl
TG9jYXRpb24oUVN0YW5kYXJkUGF0aHM6OkNhY2hlTG9jYXRpb24pOworI2Vsc2UKICAgICBRU3Ry
aW5nIGNhY2hlUGF0aCA9IFFEZXNrdG9wU2VydmljZXM6OnN0b3JhZ2VMb2NhdGlvbihRRGVza3Rv
cFNlcnZpY2VzOjpDYWNoZUxvY2F0aW9uKTsKKyNlbmRpZgogICAgIFdlYkNvcmU6Om1ha2VBbGxE
aXJlY3RvcmllcyhjYWNoZVBhdGgpOwogCiAgICAgUUZpbGVJbmZvIGluZm8oY2FjaGVQYXRoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwCmluZGV4IDUyZmVlM2Y4Y2M5MWY0ZDE4OGU1Nzc4YzNkZjBmMzY4MzBjZmVl
ZjIuLjk5MGJlYTcxZDBjYWE0MDQyMzRlNzEwM2RiODZkNTIxNjYwZWRhYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcApAQCAtMTYyNiw5ICsxNjI2LDE0IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRl
ckNsaWVudFF0OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwKICAgICAg
ICAgVmVjdG9yPFN0cmluZz4gcGFyYW1zID0gcGFyYW1OYW1lczsKICAgICAgICAgVmVjdG9yPFN0
cmluZz4gdmFsdWVzID0gcGFyYW1WYWx1ZXM7CiAgICAgICAgIGlmIChtaW1lVHlwZSA9PSAiYXBw
bGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giKSB7CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJT
SU9OX0NIRUNLKDUsIDAsIDApCisgICAgICAgICAgICBjb25zdCBib29sIHNob3VsZEluamVjdFdt
b2RlID0gdHJ1ZTsKKyNlbHNlCisgICAgICAgICAgICAvLyBJbmplY3Qgd21vZGU9b3BhcXVlIHdo
ZW4gdGhlcmUgaXMgbm8gY2xpZW50IG9yIHRoZSBjbGllbnQgaXMgbm90IGEgUVdlYlZpZXcuCiAg
ICAgICAgICAgICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gbV93ZWJGcmFtZS0+cGFnZSgpLT5k
LT5jbGllbnQuZ2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBib29sIGlzUVdlYlZpZXcgPSBjbGll
bnQgJiYgcW9iamVjdF9jYXN0PFFXaWRnZXQqPihjbGllbnQtPnBsdWdpblBhcmVudCgpKTsKLSAg
ICAgICAgICAgIGlmICghaXNRV2ViVmlldykgeworICAgICAgICAgICAgY29uc3QgYm9vbCBzaG91
bGRJbmplY3RXbW9kZSA9ICEoY2xpZW50ICYmIHFvYmplY3RfY2FzdDxRV2lkZ2V0Kj4oY2xpZW50
LT5wbHVnaW5QYXJlbnQoKSkpOworI2VuZGlmCisgICAgICAgICAgICBpZiAoc2hvdWxkSW5qZWN0
V21vZGUpIHsKICAgICAgICAgICAgICAgICAvLyBJbmplY3Qgd21vZGU9b3BhcXVlIHdoZW4gdGhl
cmUgaXMgbm8gY2xpZW50IG9yIHRoZSBjbGllbnQgaXMgbm90IGEgUVdlYlZpZXcuCiAgICAgICAg
ICAgICAgICAgc2l6ZV90IHdtb2RlSW5kZXggPSBwYXJhbXMuZmluZCgid21vZGUiKTsKICAgICAg
ICAgICAgICAgICBpZiAod21vZGVJbmRleCA9PSBXVEY6Om5vdEZvdW5kKSB7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTFlNDdiYjI4NDY0YzRj
MzE3MjRjNWRiMzNjZjhjOTBmZjRjY2NjYS4uNDk5ZGRkNGM4MzIzMjU4ZmRmMWZlOWRlYTUxN2My
NWRlNTc1MWRhZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAzLTIyICBCYWxhenMgS2VsZW1lbiAgPGtiYWxh
enNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIFgxMSBwbHVnaW5zIG5lZWQgdG8gYmUgcmV3
b3JrZWQgZm9yIFF0NStXSzEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgwNjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHdpbmRvd2xlc3MgcGx1Z2luIHN1cHBvcnQgd2l0aCBR
dDUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0TmV0c2NhcGVQbHVnaW4vVGVz
dE5ldHNjYXBlUGx1Z2luLnBybzoKKyAgICAgICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2Zl
YXR1cmVzLnByZjoKKyAgICAgICAgRW5hYmxlIE5QQVBJIHBsdWdpbnMgb24gTGludXguCisgICAg
ICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mdW5jdGlvbnMucHJmOgorCiAyMDEyLTAzLTIx
ICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
cGRhdGluZyBteSBuaWNrIGluIGNvbW1pdHRlcnMgZmlsZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L1Rlc3ROZXRzY2FwZVBsdWdpbi9UZXN0TmV0c2NhcGVQbHVnaW4ucHJv
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdE5ldHNjYXBlUGx1Z2luL1Rlc3ROZXRzY2Fw
ZVBsdWdpbi5wcm8KaW5kZXggZWZlOTQ2ZGQxYzg0OWVjMmM1YjMxNGY0OGJkMTY0NTVkNzk4MjFl
Yi4uMDViNjIwNjVkZGIyNjViYTNkNmVjNGYzMGE2NTJlMGFhMWQyMDA3NSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdE5ldHNjYXBlUGx1Z2luL1Rlc3ROZXRzY2FwZVBs
dWdpbi5wcm8KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdE5ldHNjYXBlUGx1Z2lu
L1Rlc3ROZXRzY2FwZVBsdWdpbi5wcm8KQEAgLTU0LDcgKzU0LDggQEAgbWFjIHsKICAgICBMSUJT
ICs9IC1mcmFtZXdvcmsgQ2FyYm9uIC1mcmFtZXdvcmsgQ29jb2EgLWZyYW1ld29yayBRdWFydHpD
b3JlCiB9CiAKLSF3aW4zMjohZW1iZWRkZWQ6IW1hYyB7Ci0gICAgTElCUyArPSAtbFgxMQoreGxp
YkF2YWlsYWJsZSgpIHsKKyAgICBQS0dDT05GSUcgKz0geDExCisgICAgQ09ORklHICs9IGxpbmtf
cGtnY29uZmlnCiAgICAgREVGSU5FUyArPSBYUF9VTklYCiB9CmRpZmYgLS1naXQgYS9Ub29scy9x
bWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZiBiL1Rvb2xzL3FtYWtlL21rc3BlY3Mv
ZmVhdHVyZXMvZmVhdHVyZXMucHJmCmluZGV4IDA2MTY4YzcwMzM2N2MzNTdkOTk3NWE0M2QzMGE0
NjZhMDc0ZWMwYjAuLjFiMzZkOTkzMTQ2MTJhY2E2NmRjYjQyYmZkYTJkMmYxNDhhYzQ2YTAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCisrKyBi
L1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCkBAIC0xMTQsNyArMTE0
LDEwIEBAIGhhdmVRdCg1KSB7CiAKICMgTmVzY2FwZSBwbHVnaW5zIHN1cHBvcnQgKE5QQVBJKQog
IWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJPS4pIHsKLSAgICB1
bml4OmhhdmVRdCg0KXx3aW4zMi0qOiFlbWJlZGRlZDohd2luY2UqOiB7CisgICAgaGF2ZVF0KDUp
OnhsaWJBdmFpbGFibGUoKSB7CisgICAgICAgIERFRklORVMgKz0gRU5BQkxFX05FVFNDQVBFX1BM
VUdJTl9BUEk9MQorICAgICAgICBDT05GSUcgKz0gcGx1Z2luX2JhY2tlbmRfeGxpYgorICAgIH0g
ZWxzZTogdW5peHx3aW4zMi0qOiFlbWJlZGRlZDohd2luY2UqIHsKICAgICAgICAgREVGSU5FUyAr
PSBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQST0xCiAgICAgfSBlbHNlIHsKICAgICAgICAgREVG
SU5FUyArPSBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQST0wCmRpZmYgLS1naXQgYS9Ub29scy9x
bWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2Z1bmN0aW9ucy5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNz
L2ZlYXR1cmVzL2Z1bmN0aW9ucy5wcmYKaW5kZXggYTBhMTNjMjdkOGY0ZmQwZWQyZjA0OTFhMDg1
MjdkMmE1ZDI5MGJjOS4uNTI3ZTBkOGZlYmZjMjBlZGY2OWIzMWUzNTlhNGZiNTUxYzNhMzkyNCAx
MDA2NDQKLS0tIGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mdW5jdGlvbnMucHJmCisr
KyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZnVuY3Rpb25zLnByZgpAQCAtMzIzLDMg
KzMyMywxOSBAQCBkZWZpbmVUZXN0KHJ1blN5bmNRdCkgewogCiAgICAgcmV0dXJuKHRydWUpCiB9
CisKK2RlZmluZVRlc3QoeGxpYkF2YWlsYWJsZSkgeworICAgIGhhdmVRdCg1KSB7CisgICAgICAg
IGNvbnRhaW5zKFFUX0NPTkZJRywgeGNiLXhsaWIpIHsKKyAgICAgICAgICAgIHJldHVybih0cnVl
KQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuKGZhbHNlKQorICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdW5peDohbWFjOiFlbWJlZGRlZCB7CisgICAgICAgICAg
ICByZXR1cm4odHJ1ZSkKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybihmYWxz
ZSkKKyAgICAgICAgfQorICAgIH0KK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138551</attachid>
            <date>2012-04-24 07:01:23 -0700</date>
            <delta_ts>2012-04-24 07:22:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80691-20120424160121.patch</filename>
            <type>text/plain</type>
            <size>35524</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQxZTc1NGRiMTM3NWEx
MmUxN2ZiMDExODVjM2JkOGE2NGVhMzA2OS4uMDA4YzVlNDI5NjdlZDc2NGJlZjFhNjNkYjE2YzZk
ODc4Y2FkNWE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTA0LTI0ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIFgxMSBwbHVn
aW5zIG5lZWQgdG8gYmUgcmV3b3JrZWQgZm9yIFF0NStXSzEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHdpbmRvd2xlc3MgcGx1
Z2luIHN1cHBvcnQgd2l0aCBRdDUuCisgICAgICAgIFRoZSBzb2x1dGlvbiBpcyB0aGUgc2FtZSB0
aGF0IGhhcyBiZWVuIGNob3NlbiBmb3IKKyAgICAgICAgV2ViS2l0Mi4gV2UgZ2V0IHRoZSBjb250
ZW50IGRyYXdlZCBieSB0aGUgcGx1Z2luCisgICAgICAgIGZyb20gdGhlIFggc2VydmVyIGFzIGFu
IGltYWdlLCBjcmVhdGUgYSBRSW1hZ2UKKyAgICAgICAgZnJvbSBpdCBhbmQgcGFpbnQgaXQgdG8g
dGhlIHdpbmRvdyBzdXJmYWNlIHdpdGggUVBhaW50ZXIuCisgICAgICAgIFBlcmZvcm1hbmNlIGlz
IHN1ZmZpY2llbnQgZm9yIGJhc2ljIHZpZGVvIHBsYXliYWNrLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyBwbHVnaW4gdGVzdHMuCisKKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1FX
ZWJQYWdlQ2xpZW50Lmg6CisgICAgICAgIChRV2ViUGFnZUNsaWVudCk6CisgICAgICAgICogcGx1
Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgIChQbHVnaW5WaWV3KToKKyAgICAgICAgKiBwbHVn
aW5zL3F0L1BsdWdpblBhY2thZ2VRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNr
YWdlOjppc1BsdWdpbkJsYWNrbGlzdGVkKToKKyAgICAgICAgQmxhY2tsaXN0IHBsdWdpbnMgdGhh
dCBhcmUgaW5jb21wYXRpYmxlIHdpdGggUXQ1LgorICAgICAgICBUaGUgb25seSBvbmUgSSBrbm93
IGFib3V0IGN1cnJlbnRseSBpcyBza3lwZWJ1dHRvbnMKKyAgICAgICAgYnV0IHRoZSBsaXN0IGNh
biBiZSBleHRlbmRlZCBpbiB0aGUgZnV0dXJlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpsb2FkKToKKyAgICAgICAgKiBwbHVnaW5zL3F0L1Bs
dWdpblZpZXdRdC5jcHA6CisgICAgICAgIChYMTFFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OngxMURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6
eDExU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OnJvb3RXaW5kb3dJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpkaXNwbGF5RGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6c3luY1gpOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1QYWdlQ2xpZW50KTogQWRkZWQgYSBzYWZl
CisgICAgICAgIGNvbnZlbmllbmNlIGdldHRlciBmb3IgdGhlIFFXZWJwYWdlQ2xpZW50LgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6dXBkYXRlUGx1Z2luV2lkZ2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldHVw
R3JhcGhpY3NFeHBvc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwYWlu
dFVzaW5nWFBpeG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRTaGFyZWRYRXZlbnRGaWVsZHMp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aW5pdFhFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3OjpzZXRYS2V5RXZlbnRTcGVjaWZpY0ZpZWxkcyk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRYQnV0dG9uRXZlbnRTcGVjaWZpY0ZpZWxkcyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRYTW90aW9uRXZlbnRTcGVjaWZpY0ZpZWxkcyk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRYQ3Jvc3NpbmdFdmVudFNwZWNpZmljRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OnNldE5QV2luZG93SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6c2V0UGFyZW50VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0
Zm9ybUdldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmludmFsaWRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFZpc3VhbEFuZENvbG9ybWFwKToKKyAgICAgICAg
UmVmYWN0b3JlZCB0aGlzIGZ1bmN0aW9uIHRvIG1ha2UgaXQgbW9yZSBjbGVhcgorICAgICAgICB3
aGF0IGRvZXMgaXQgYWN0dWFsbHkgZG8uCisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojpw
bGF0Zm9ybVN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtRGVz
dHJveSk6CisKIDIwMTItMDQtMjQgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5i
b3NzYS5vcmc+CiAKICAgICAgICAgQW5vdGhlciB1bnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgTWFj
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwppbmRleCA1ZmMzMzhmYWM1MTk5ZWRkMWJjZGVlNzcwZDFhZmM5YjRlNWEz
MjI3Li4xZTI4NDBmY2FlNzQ4ZDMwMmQxNTYxYzk1MWIwZDY4NTFjYWM5NjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA0LTI0ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxh
enNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIFgxMSBwbHVnaW5zIG5lZWQgdG8gYmUgcmV3
b3JrZWQgZm9yIFF0NStXSzEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgwNjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHdpbmRvd2xlc3MgcGx1Z2luIHN1cHBvcnQgd2l0aCBR
dDUuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0
aW5nczo6ZW5hYmxlUGVyc2lzdGVudFN0b3JhZ2UpOgorICAgICAgICBCdWlsZCBmaXggZm9yIFF0
NS4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbik6CisgICAg
ICAgIEluamVjdCB0aGUgd21vZGUgcGFyYW1ldGVyIGZvciBmbGFzaCBzbyBpdCB3aWxsCisgICAg
ICAgIHdvcmsgaW4gd2luZG93bGVzcywgbm9uLXRyYW5zcGFyZW50IG1vZGUgd2hpY2gKKyAgICAg
ICAgaXMgdGhlIG9ubHkgb25lIHdlIHN1cHBvcnQgY3VycmVudGx5LgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0Ojpvd25lcldpbmRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0Ojpvd25lcldpbmRvdyk6CisgICAgICAgIEFk
ZGVkIGEgZ2V0dGVyIGZvciB0aGUgdG9wIGxldmVsIHdpbmRvdyBzbyB0aGUgUGx1Z2luVmlldwor
ICAgICAgICBjYW4gZ2V0IGl0IHdpdGhvdXQgY2FsbGluZyBpbnRvIFF0V2lkZ2V0cyBjb2RlLgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5oOgorICAgICAgICAoUGFnZUNs
aWVudFFXaWRnZXQpOgorICAgICAgICAoUGFnZUNsaWVudFFHcmFwaGljc1dpZGdldCk6CisKIDIw
MTItMDQtMjQgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAgICAg
IFtRdF0gTW92ZSBub3RpZmljYXRpb24gaWNvbiBkb3dubG9hZCBvdXQgb2YgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKaW5kZXggMmIwODE4Y2FiNTE3OTUxZTdjMDAxNjcwMWE1MmUyNmY4YjlmNjkxNy4uODM5
MzgyZDA3OGE0ODA5OTY1YjIzNjA3MTVmMjUxNDY1NDAyNWEwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0y
OTU5LDExICsyOTU5LDEzIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9ORVRTQ0FQRV9QTFVH
SU5fQVBJPTEpIHsKICAgICAgICAgICAgICAgICBwbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1t
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBTT1VSQ0VTICs9IFwKLSAgICAgICAgICAg
ICAgICBwbHVnaW5zL3F0L1BsdWdpbkNvbnRhaW5lclF0LmNwcCBcCiAgICAgICAgICAgICAgICAg
cGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwIFwKICAgICAgICAgICAgICAgICBwbHVnaW5z
L3F0L1BsdWdpblZpZXdRdC5jcHAKLSAgICAgICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAg
ICAgICAgIHBsdWdpbnMvcXQvUGx1Z2luQ29udGFpbmVyUXQuaAorCisgICAgICAgICAgICBoYXZl
UXQoNCkgeworICAgICAgICAgICAgICAgIFNPVVJDRVMgKz0gcGx1Z2lucy9xdC9QbHVnaW5Db250
YWluZXJRdC5jcHAKKyAgICAgICAgICAgICAgICBIRUFERVJTICs9IHBsdWdpbnMvcXQvUGx1Z2lu
Q29udGFpbmVyUXQuaAorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJpCmluZGV4IGI0MzBmY2IzZjg5ZTM3YTRiNzU1MzU1ZWRlNGFiMmJjNDIyY2MyYTAuLjFkMTFi
ZDE5YjYyZTBmMjIxZmFlYzA4M2QzZjM1YzgzYjJhNmE4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC0x
MzQsNyArMTM0LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9B
UEk9MSkgewogICAgICAgICAgICAgSU5DTFVERVBBVEggKz0gcGxhdGZvcm0vbWFjCiAgICAgICAg
ICAgICAjIE5vdGU6IFhQX01BQ09TWCBpcyBkZWZpbmVkIGluIG5wYXBpLmgKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICFlbWJlZGRlZCB7CisgICAgICAgICAgICB4bGliQXZhaWxhYmxl
KCkgewogICAgICAgICAgICAgICAgIENPTkZJRyArPSB4MTEKICAgICAgICAgICAgICAgICBMSUJT
ICs9IC1sWHJlbmRlcgogICAgICAgICAgICAgICAgIERFRklORVMgKz0gTU9aX1gxMQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1FXZWJQYWdlQ2xpZW50LmgKaW5kZXggMzBjM2I0OGVhNjE5
Njk2NTgzM2FlZWRhNWZiMTliNGI5YTUwZjZmYy4uNDdkMzcyNzM5NTQyMjY4ODlkOGQ5NWY1OWM1
NmE2NzA4ZTk3YmJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUVdl
YlBhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RV2ViUGFnZUNs
aWVudC5oCkBAIC00Myw2ICs0Myw3IEBACiAKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVN0
eWxlOworY2xhc3MgUVdpbmRvdzsKIFFUX0VORF9OQU1FU1BBQ0UKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtOTMsNiArOTQsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUVdpZGdldCogb3du
ZXJXaWRnZXQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBRUmVjdCBnZW9tZXRyeVJlbGF0aXZl
VG9Pd25lcldpZGdldCgpIGNvbnN0ID0gMDsKIAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lP
Tl9DSEVDSyg1LCAwLCAwKQorICAgIHZpcnR1YWwgUVdpbmRvdyogb3duZXJXaW5kb3coKSBjb25z
dCA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgUU9iamVjdCogcGx1Z2luUGFyZW50KCkgY29u
c3QgPSAwOwogCiAgICAgdmlydHVhbCBRU3R5bGUqIHN0eWxlKCkgY29uc3QgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAxMTI4NTIyZDAyMWY4MWE4YmY1ZmRlMWRkNzYx
YzM2MGQ0OGMxZjUyLi5lMzQ0MmZmNTBjMmM5YzYyOGNlYjEzYTQ4MDZlMGNhZDdmMjVhN2IxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDI2LDYgKzQyNiw3IEBAIHByaXZh
dGU6CiAgICAgICAgIHN0YXRpYyBib29sIHNfaXNSdW5uaW5nVW5kZXJEUlQ7CiAgICAgICAgIHN0
YXRpYyB2b2lkIHNldFhLZXlFdmVudFNwZWNpZmljRmllbGRzKFhFdmVudCosIEtleWJvYXJkRXZl
bnQqKTsKICAgICAgICAgdm9pZCBwYWludFVzaW5nWFBpeG1hcChRUGFpbnRlciogcGFpbnRlciwg
Y29uc3QgUVJlY3QgJmV4cG9zZWRSZWN0KTsKKyAgICAgICAgUVdlYlBhZ2VDbGllbnQqIHBsYXRm
b3JtUGFnZUNsaWVudCgpIGNvbnN0OwogI2VuZGlmCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HX1BMVUdJTl9MQVlFUikKICAgICAgICAgT3duUHRyPFBsYXRmb3JtTGF5ZXI+IG1fcGxh
dGZvcm1MYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2lu
UGFja2FnZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0
LmNwcAppbmRleCA0ZTlhNzE3Yjg2ZjFjNWJkYzMyZTEyYWE5NTMzMTk0OWMyNzBiYWY4Li5iOTgy
NGZhZTBjNjY1MjA1MjgwMzU1N2MxZjFkY2VlZGRhZWI5MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblBhY2thZ2VRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgogI2lu
Y2x1ZGUgIlBsdWdpbkRlYnVnLmgiCisjaW5jbHVkZSA8UUZpbGVJbmZvPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTI5LDYgKzEzMCwy
MyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplR3RrKFFMaWJyYXJ5KiBtb2R1bGUgPSAwKQogICAg
IH0KIH0KIAorYm9vbCBQbHVnaW5QYWNrYWdlOjppc1BsdWdpbkJsYWNrbGlzdGVkKCkKK3sKKyNp
ZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNSwgMCwgMCkKKyAgICAvLyBUT0RPOiBl
bnVtZXJhdGUgYWxsIHBsdWdpbnMgdGhhdCBhcmUgaW5jb21wYXRpYmxlIHdpdGggUXQ1LgorICAg
IGNvbnN0IFFMYXRpbjFTdHJpbmcgcGx1Z2luQmxhY2tsaXN0W10gPSB7CisgICAgICAgIFFMYXRp
bjFTdHJpbmcoInNreXBlYnV0dG9ucyIpCisgICAgfTsKKworICAgIFFTdHJpbmcgYmFzZU5hbWUg
PSBRRmlsZUluZm8oc3RhdGljX2Nhc3Q8UVN0cmluZz4obV9wYXRoKSkuYmFzZU5hbWUoKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZW9mKHBsdWdpbkJsYWNrbGlzdCkgLyBzaXpl
b2YoUUxhdGluMVN0cmluZyk7ICsraSkgeworICAgICAgICBpZiAoYmFzZU5hbWUgPT0gcGx1Z2lu
QmxhY2tsaXN0W2ldKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIFBsdWdpblBhY2thZ2U6OmxvYWQoKQogewogICAg
IGlmIChtX2lzTG9hZGVkKSB7CkBAIC0xMzYsNiArMTU0LDkgQEAgYm9vbCBQbHVnaW5QYWNrYWdl
Ojpsb2FkKCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgaWYgKGlzUGx1Z2lu
QmxhY2tsaXN0ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgbV9tb2R1bGUgPSBu
ZXcgUUxpYnJhcnkoKFFTdHJpbmcpbV9wYXRoKTsKICAgICBtX21vZHVsZS0+c2V0TG9hZEhpbnRz
KFFMaWJyYXJ5OjpSZXNvbHZlQWxsU3ltYm9sc0hpbnQpOwogICAgIGlmICghbV9tb2R1bGUtPmxv
YWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3
UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCmluZGV4
IGFjMzFjZjAwMjZlZDQ4MmI1M2I3Y2YzYjdkZWNmZTEyMjczMWUwNjYuLjBjMzExYjkxN2UxMWJi
YWEwN2Q3OTM5YTZlYTAxYzZmMGUyYjZlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0
L1BsdWdpblZpZXdRdC5jcHAKQEAgLTU4LDcgKzU4LDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50LmgiCi0jaW5jbHVkZSAiUGx1Z2luQ29udGFpbmVyUXQuaCIKICNpbmNsdWRlICJQbHVn
aW5EZWJ1Zy5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKICNpbmNsdWRlICJQbHVnaW5N
YWluVGhyZWFkU2NoZWR1bGVyLmgiCkBAIC02OSwxNSArNjgsOCBAQAogI2lmIFVTRShKU0MpCiAj
aW5jbHVkZSAicnVudGltZV9yb290LmgiCiAjZW5kaWYKLQotI2luY2x1ZGUgPFFBcHBsaWNhdGlv
bj4KLSNpbmNsdWRlIDxRRGVza3RvcFdpZGdldD4KLSNpbmNsdWRlIDxRR3JhcGhpY3NXaWRnZXQ+
CiAjaW5jbHVkZSA8UUtleUV2ZW50PgogI2luY2x1ZGUgPFFQYWludGVyPgotI2luY2x1ZGUgPFFT
dHlsZU9wdGlvbkdyYXBoaWNzSXRlbT4KLSNpbmNsdWRlIDxRV2lkZ2V0PgotI2luY2x1ZGUgPFFY
MTFJbmZvPgogI2luY2x1ZGUgPFgxMS9YLmg+CiAjaWZuZGVmIFFUX05PX1hSRU5ERVIKICNkZWZp
bmUgQm9vbCBpbnQKQEAgLTg3LDYgKzc5LDIzIEBACiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2su
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KIAorI2RlZmluZSBIQVZFX1FUNSAoUVRf
VkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApKQorCisjaWYgSEFWRShRVDUpCisj
aW5jbHVkZSAiUXRYMTFJbWFnZUNvbnZlcnNpb24uaCIKKyNpbmNsdWRlIDxRR3VpQXBwbGljYXRp
b24+CisjaW5jbHVkZSA8UVBsYXRmb3JtTmF0aXZlSW50ZXJmYWNlPgorI2luY2x1ZGUgPFFXaW5k
b3c+CisjZWxzZQorI2luY2x1ZGUgIlBsdWdpbkNvbnRhaW5lclF0LmgiCisjaW5jbHVkZSA8UUFw
cGxpY2F0aW9uPgorI2luY2x1ZGUgPFFEZXNrdG9wV2lkZ2V0PgorI2luY2x1ZGUgPFFHcmFwaGlj
c1dpZGdldD4KKyNpbmNsdWRlIDxRU3R5bGVPcHRpb25HcmFwaGljc0l0ZW0+CisjaW5jbHVkZSA8
UVdpZGdldD4KKyNpbmNsdWRlIDxRWDExSW5mbz4KKyNlbmRpZgorCiB1c2luZyBKU0M6OkV4ZWNT
dGF0ZTsKICNpZiBVU0UoSlNDKQogdXNpbmcgSlNDOjpJbnRlcnByZXRlcjsKQEAgLTEwNSw3ICsx
MTQsMzcgQEAgYm9vbCBQbHVnaW5WaWV3OjpzX2lzUnVubmluZ1VuZGVyRFJUID0gZmFsc2U7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCitzdHJ1Y3QgWDExRW52aXJvbm1lbnQgeworICAgIERpc3BsYXkqIGRpc3BsYXk7Cisg
ICAgaW50IHNjcmVlbklEOworICAgIHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lEOworICAgIGlu
dCBkaXNwbGF5RGVwdGg7Cit9OworCitzdGF0aWMgWDExRW52aXJvbm1lbnQgeDExRW52aXJvbm1l
bnQgPSB7IDAsIDAsIDAsIDAgfTsKKworc3RhdGljIGlubGluZSBEaXNwbGF5KiB4MTFEaXNwbGF5
KCkgeyByZXR1cm4geDExRW52aXJvbm1lbnQuZGlzcGxheTsgfQorc3RhdGljIGlubGluZSBpbnQg
eDExU2NyZWVuKCkgeyByZXR1cm4geDExRW52aXJvbm1lbnQuc2NyZWVuSUQ7IH0KK3N0YXRpYyBp
bmxpbmUgdW5zaWduZWQgbG9uZyByb290V2luZG93SUQoKSB7IHJldHVybiB4MTFFbnZpcm9ubWVu
dC5yb290V2luZG93SUQ7IH0KK3N0YXRpYyBpbmxpbmUgaW50IGRpc3BsYXlEZXB0aCgpIHsgcmV0
dXJuIHgxMUVudmlyb25tZW50LmRpc3BsYXlEZXB0aDsgfQorCitzdGF0aWMgaW5saW5lIHZvaWQg
c3luY1goKQoreworICAgIFhTeW5jKHgxMURpc3BsYXkoKSwgZmFsc2UpOworfQorCitRV2ViUGFn
ZUNsaWVudCogUGx1Z2luVmlldzo6cGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QKK3sKKyAgICBG
cmFtZVZpZXcqIHZpZXcgPSBtX3BhcmVudEZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQor
ICAgICAgICByZXR1cm4gMDsKKyAgICBIb3N0V2luZG93KiBob3N0V2luZG93ID0gdmlldy0+aG9z
dFdpbmRvdygpOworICAgIGlmICghaG9zdFdpbmRvdykKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIGhvc3RXaW5kb3ctPnBsYXRmb3JtUGFnZUNsaWVudCgpOworfQorCisjaWYgIUhBVkUo
UVQ1KSAmJiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAvLyBRdCdzIEdyYXBoaWNzTGF5
ZXIgKEdyYXBoaWNzTGF5ZXJRdCkgcmVxdWlyZXMgbGF5ZXJzIHRvIGJlIFFHcmFwaGljc1dpZGdl
dHMKIGNsYXNzIFBsdWdpbkdyYXBoaWNzTGF5ZXJRdCA6IHB1YmxpYyBRR3JhcGhpY3NXaWRnZXQg
ewogcHVibGljOgpAQCAtMTU0LDExICsxOTMsMTEgQEAgdm9pZCBQbHVnaW5WaWV3Ojp1cGRhdGVQ
bHVnaW5XaWRnZXQoKQogCiAgICAgaWYgKCFtX2lzV2luZG93ZWQgJiYgbV93aW5kb3dSZWN0LnNp
emUoKSAhPSBvbGRXaW5kb3dSZWN0LnNpemUoKSkgewogICAgICAgICBpZiAobV9kcmF3YWJsZSkK
LSAgICAgICAgICAgIFhGcmVlUGl4bWFwKFFYMTFJbmZvOjpkaXNwbGF5KCksIG1fZHJhd2FibGUp
OworICAgICAgICAgICAgWEZyZWVQaXhtYXAoeDExRGlzcGxheSgpLCBtX2RyYXdhYmxlKTsKIAot
ICAgICAgICBtX2RyYXdhYmxlID0gWENyZWF0ZVBpeG1hcChRWDExSW5mbzo6ZGlzcGxheSgpLCBR
WDExSW5mbzo6YXBwUm9vdFdpbmRvdygpLCBtX3dpbmRvd1JlY3Qud2lkdGgoKSwgbV93aW5kb3dS
ZWN0LmhlaWdodCgpLAorICAgICAgICBtX2RyYXdhYmxlID0gWENyZWF0ZVBpeG1hcCh4MTFEaXNw
bGF5KCksIHJvb3RXaW5kb3dJRCgpLCBtX3dpbmRvd1JlY3Qud2lkdGgoKSwgbV93aW5kb3dSZWN0
LmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE5QU2V0V2lu
ZG93Q2FsbGJhY2tTdHJ1Y3QqKW1fbnBXaW5kb3cud3NfaW5mbyktPmRlcHRoKTsKLSAgICAgICAg
UUFwcGxpY2F0aW9uOjpzeW5jWCgpOyAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgc2VydmVyIGtub3dz
IGFib3V0IHRoZSBEcmF3YWJsZQorICAgICAgICBzeW5jWCgpOyAvLyBtYWtlIHN1cmUgdGhhdCB0
aGUgc2VydmVyIGtub3dzIGFib3V0IHRoZSBEcmF3YWJsZQogICAgIH0KIAogICAgIC8vIGRvIG5v
dCBjYWxsIHNldE5QV2luZG93SWZOZWVkZWQgaW1tZWRpYXRlbHksIHdpbGwgYmUgY2FsbGVkIG9u
IHBhaW50KCkKQEAgLTE4NywxMiArMjI2LDEzIEBAIHZvaWQgUGx1Z2luVmlldzo6dXBkYXRlUGx1
Z2luV2lkZ2V0KCkKIAogdm9pZCBQbHVnaW5WaWV3OjpzZXRGb2N1cyhib29sIGZvY3VzZWQpCiB7
CisjaWYgIUhBVkUoUVQ1KSAvLyBXaW5kb3dlZCBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBR
dDUgeWV0IChzbyBwbGF0Zm9ybVBsdWdpbldpZGdldCgpIGlzIGFsd2F5cyBudWxsKS4KICAgICBp
ZiAocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkgewogICAgICAgICBpZiAoZm9jdXNlZCkKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PFFXaWRnZXQqPihwbGF0Zm9ybVBsdWdpbldpZGdldCgpKS0+c2V0
Rm9jdXMoUXQ6Ok90aGVyRm9jdXNSZWFzb24pOwotICAgIH0gZWxzZSB7CisgICAgfSBlbHNlCisj
ZW5kaWYKICAgICAgICAgV2lkZ2V0OjpzZXRGb2N1cyhmb2N1c2VkKTsKLSAgICB9CiB9CiAKIHZv
aWQgUGx1Z2luVmlldzo6c2hvdygpCkBAIC0yMDcsMTIgKzI0NywzMCBAQCB2b2lkIFBsdWdpblZp
ZXc6OmhpZGUoKQogICAgIFdpZGdldDo6aGlkZSgpOwogfQogCitzdGF0aWMgdm9pZCBzZXR1cEdy
YXBoaWNzRXhwb3NlRXZlbnQoUGl4bWFwIGRyYXdhYmxlLCBjb25zdCBRUmVjdCYgZXhwb3NlZFJl
Y3QsIFhFdmVudCYgeGV2ZW50KQoreworICAgIG1lbXNldCgmeGV2ZW50LCAwLCBzaXplb2YoWEV2
ZW50KSk7CisgICAgWEdyYXBoaWNzRXhwb3NlRXZlbnQmIGV4cG9zZUV2ZW50ID0geGV2ZW50Lnhn
cmFwaGljc2V4cG9zZTsKKyAgICBleHBvc2VFdmVudC50eXBlID0gR3JhcGhpY3NFeHBvc2U7Cisg
ICAgZXhwb3NlRXZlbnQuZGlzcGxheSA9IHgxMURpc3BsYXkoKTsKKyAgICBleHBvc2VFdmVudC5k
cmF3YWJsZSA9IGRyYXdhYmxlOworICAgIGV4cG9zZUV2ZW50LnggPSBleHBvc2VkUmVjdC54KCk7
CisgICAgZXhwb3NlRXZlbnQueSA9IGV4cG9zZWRSZWN0LnkoKTsKKyAgICBleHBvc2VFdmVudC53
aWR0aCA9IGV4cG9zZWRSZWN0LngoKSArIGV4cG9zZWRSZWN0LndpZHRoKCk7IC8vIGZsYXNoIGJ1
Zz8gaXQgdGhpbmtzIHdpZHRoIGlzIHRoZSByaWdodCBpbiB0cmFuc3BhcmVudCBtb2RlCisgICAg
ZXhwb3NlRXZlbnQuaGVpZ2h0ID0gZXhwb3NlZFJlY3QueSgpICsgZXhwb3NlZFJlY3QuaGVpZ2h0
KCk7IC8vIGZsYXNoIGJ1Zz8gaXQgdGhpbmtzIGhlaWdodCBpcyB0aGUgYm90dG9tIGluIHRyYW5z
cGFyZW50IG1vZGUKK30KKwogdm9pZCBQbHVnaW5WaWV3OjpwYWludFVzaW5nWFBpeG1hcChRUGFp
bnRlciogcGFpbnRlciwgY29uc3QgUVJlY3QgJmV4cG9zZWRSZWN0KQogeworICAgIGJvb2wgc2hv
dWxkU3luY1ggPSBtX3BsdWdpbkRpc3BsYXkgJiYgbV9wbHVnaW5EaXNwbGF5ICE9IHgxMURpc3Bs
YXkoKTsKKyAgICBYRXZlbnQgeGV2ZW50OworCisjaWYgSEFWRShRVDUpCisgICAgc2V0dXBHcmFw
aGljc0V4cG9zZUV2ZW50KG1fZHJhd2FibGUsIGV4cG9zZWRSZWN0LCB4ZXZlbnQpOworI2Vsc2UK
ICAgICBRUGl4bWFwIHF0RHJhd2FibGUgPSBRUGl4bWFwOjpmcm9tWDExUGl4bWFwKG1fZHJhd2Fi
bGUsIFFQaXhtYXA6OkV4cGxpY2l0bHlTaGFyZWQpOwogICAgIGNvbnN0IGludCBkcmF3YWJsZURl
cHRoID0gKChOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiltX25wV2luZG93LndzX2luZm8pLT5k
ZXB0aDsKICAgICBBU1NFUlQoZHJhd2FibGVEZXB0aCA9PSBxdERyYXdhYmxlLmRlcHRoKCkpOwot
ICAgIGNvbnN0IGJvb2wgc3luY1ggPSBtX3BsdWdpbkRpc3BsYXkgJiYgbV9wbHVnaW5EaXNwbGF5
ICE9IFFYMTFJbmZvOjpkaXNwbGF5KCk7CiAKICAgICAvLyBXaGVuIHByaW50aW5nLCBRdCB1c2Vz
IGEgUVBpY3R1cmUgdG8gY2FwdHVyZSB0aGUgb3V0cHV0IGluIHByZXZpZXcgbW9kZS4gVGhlCiAg
ICAgLy8gUVBpY3R1cmUgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIFggUGl4bWFwLiBBcyBhIHJl
c3VsdCwgdGhlIHByaW50IHByZXZpZXcgd291bGQKQEAgLTIzMiw3ICsyOTAsNyBAQCB2b2lkIFBs
dWdpblZpZXc6OnBhaW50VXNpbmdYUGl4bWFwKFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRUmVj
dCAmZXhwb3NlZFJlY3QpCiAgICAgICAgIC8vIFdlIGNhbm5vdCBncmFiIGNvbnRlbnRzIGZyb20g
dGhlIGJhY2tpbmcgc3RvcmUgd2hlbiBwYWludGluZyBvbiBRR3JhcGhpY3NWaWV3IGl0ZW1zCiAg
ICAgICAgIC8vIChiZWNhdXNlIGJhY2tpbmcgc3RvcmUgY29udGVudHMgYXJlIGFscmVhZHkgdHJh
bnNmb3JtZWQpLiBXaGF0IHdlIHJlYWxseSBtZWFuIHRvIGRvIAogICAgICAgICAvLyBoZXJlIGlz
IHRvIGNoZWNrIGlmIHdlIGFyZSBwYWludGluZyBvbiBRV2ViVmlldywgYnV0IGxldCdzIGJlIGEg
bGl0dGxlIHBlcm1pc3NpdmUgOikKLSAgICAgICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IG1f
cGFyZW50RnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsK
KyAgICAgICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IHBsYXRmb3JtUGFnZUNsaWVudDsKICAg
ICAgICAgY29uc3QgYm9vbCBiYWNraW5nU3RvcmVIYXNVbnRyYW5zZm9ybWVkQ29udGVudHMgPSBj
bGllbnQgJiYgcW9iamVjdF9jYXN0PFFXaWRnZXQqPihjbGllbnQtPnBsdWdpblBhcmVudCgpKTsK
IAogICAgICAgICBpZiAoaGFzVmFsaWRCYWNraW5nU3RvcmUgJiYgYmFja2luZ1N0b3JlUGl4bWFw
LT5kZXB0aCgpID09IGRyYXdhYmxlRGVwdGggCkBAIC0yNDYsMjcgKzMwNCwyNiBAQCB2b2lkIFBs
dWdpblZpZXc6OnBhaW50VXNpbmdYUGl4bWFwKFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRUmVj
dCAmZXhwb3NlZFJlY3QpCiAgICAgICAgICAgICBwYWludGVyLmZpbGxSZWN0KGV4cG9zZWRSZWN0
LCBRdDo6d2hpdGUpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHN5bmNYKQotICAgICAgICAg
ICAgUUFwcGxpY2F0aW9uOjpzeW5jWCgpOworICAgICAgICBpZiAoc2hvdWxkU3luY1gpCisgICAg
ICAgICAgICBzeW5jWCgpOwogICAgIH0KIAotICAgIFhFdmVudCB4ZXZlbnQ7Ci0gICAgbWVtc2V0
KCZ4ZXZlbnQsIDAsIHNpemVvZihYRXZlbnQpKTsKLSAgICBYR3JhcGhpY3NFeHBvc2VFdmVudCYg
ZXhwb3NlRXZlbnQgPSB4ZXZlbnQueGdyYXBoaWNzZXhwb3NlOwotICAgIGV4cG9zZUV2ZW50LnR5
cGUgPSBHcmFwaGljc0V4cG9zZTsKLSAgICBleHBvc2VFdmVudC5kaXNwbGF5ID0gUVgxMUluZm86
OmRpc3BsYXkoKTsKLSAgICBleHBvc2VFdmVudC5kcmF3YWJsZSA9IHF0RHJhd2FibGUuaGFuZGxl
KCk7Ci0gICAgZXhwb3NlRXZlbnQueCA9IGV4cG9zZWRSZWN0LngoKTsKLSAgICBleHBvc2VFdmVu
dC55ID0gZXhwb3NlZFJlY3QueSgpOwotICAgIGV4cG9zZUV2ZW50LndpZHRoID0gZXhwb3NlZFJl
Y3QueCgpICsgZXhwb3NlZFJlY3Qud2lkdGgoKTsgLy8gZmxhc2ggYnVnPyBpdCB0aGlua3Mgd2lk
dGggaXMgdGhlIHJpZ2h0IGluIHRyYW5zcGFyZW50IG1vZGUKLSAgICBleHBvc2VFdmVudC5oZWln
aHQgPSBleHBvc2VkUmVjdC55KCkgKyBleHBvc2VkUmVjdC5oZWlnaHQoKTsgLy8gZmxhc2ggYnVn
PyBpdCB0aGlua3MgaGVpZ2h0IGlzIHRoZSBib3R0b20gaW4gdHJhbnNwYXJlbnQgbW9kZQorICAg
IHNldHVwR3JhcGhpY3NFeHBvc2VFdmVudChxdERyYXdhYmxlLmhhbmRsZSgpLCBleHBvc2VkUmVj
dCwgeGV2ZW50KTsKKyNlbmRpZgogCiAgICAgZGlzcGF0Y2hOUEV2ZW50KHhldmVudCk7CiAKLSAg
ICBpZiAoc3luY1gpCisgICAgaWYgKHNob3VsZFN5bmNYKQogICAgICAgICBYU3luYyhtX3BsdWdp
bkRpc3BsYXksIGZhbHNlKTsgLy8gc3luYyBjaGFuZ2VzIGJ5IHBsdWdpbgogCisjaWYgSEFWRShR
VDUpCisgICAgWEltYWdlKiB4SW1hZ2UgPSBYR2V0SW1hZ2UoeDExRGlzcGxheSgpLCBtX2RyYXdh
YmxlLCBleHBvc2VkUmVjdC54KCksIGV4cG9zZWRSZWN0LnkoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleHBvc2VkUmVjdC53aWR0aCgpLCBleHBvc2VkUmVjdC5oZWlnaHQoKSwg
VUxPTkdfTUFYLCBaUGl4bWFwKTsKKyAgICBwYWludGVyLT5kcmF3SW1hZ2UoUVBvaW50KGV4cG9z
ZWRSZWN0LngoKSwgZXhwb3NlZFJlY3QueSgpKSwgcWltYWdlRnJvbVhJbWFnZSh4SW1hZ2UpLCBl
eHBvc2VkUmVjdCk7CisgICAgWERlc3Ryb3lJbWFnZSh4SW1hZ2UpOworI2Vsc2UKICAgICBwYWlu
dGVyLT5kcmF3UGl4bWFwKFFQb2ludChleHBvc2VkUmVjdC54KCksIGV4cG9zZWRSZWN0LnkoKSks
IHF0RHJhd2FibGUsIGV4cG9zZWRSZWN0KTsKKyNlbmRpZgogfQogCiB2b2lkIFBsdWdpblZpZXc6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAg
LTMzMSwyNCArMzg4LDI5IEBAIGJvb2wgUGx1Z2luVmlldzo6ZGlzcGF0Y2hOUEV2ZW50KE5QRXZl
bnQmIGV2ZW50KQogICAgIHJldHVybiBhY2NlcHRlZDsKIH0KIAotdm9pZCBzZXRTaGFyZWRYRXZl
bnRGaWVsZHMoWEV2ZW50KiB4RXZlbnQsIFFXaWRnZXQqIG93bmVyV2lkZ2V0KQordm9pZCBzZXRT
aGFyZWRYRXZlbnRGaWVsZHMoWEV2ZW50KiB4RXZlbnQsIFFXZWJQYWdlQ2xpZW50KiBwYWdlQ2xp
ZW50KQogewogICAgIHhFdmVudC0+eGFueS5zZXJpYWwgPSAwOyAvLyB3ZSBhcmUgdW5hd2FyZSBv
ZiB0aGUgbGFzdCByZXF1ZXN0IHByb2Nlc3NlZCBieSBYIFNlcnZlcgogICAgIHhFdmVudC0+eGFu
eS5zZW5kX2V2ZW50ID0gZmFsc2U7Ci0gICAgeEV2ZW50LT54YW55LmRpc3BsYXkgPSBRWDExSW5m
bzo6ZGlzcGxheSgpOworICAgIHhFdmVudC0+eGFueS5kaXNwbGF5ID0geDExRGlzcGxheSgpOwog
ICAgIC8vIE5PVEU6IGV2ZW50LT54YW55LndpbmRvdyBkb2Vzbid0IGFsd2F5cyByZXNwb25kIHRv
IHRoZSAud2luZG93IHByb3BlcnR5IG9mIG90aGVyIFhFdmVudCdzCiAgICAgLy8gYnV0IGRvZXMg
aW4gdGhlIGNhc2Ugb2YgS2V5UHJlc3MsIEtleVJlbGVhc2UsIEJ1dHRvblByZXNzLCBCdXR0b25S
ZWxlYXNlLCBhbmQgTW90aW9uTm90aWZ5CiAgICAgLy8gZXZlbnRzOyB0aHVzLCB0aGlzIGlzIHJp
Z2h0OgotICAgIHhFdmVudC0+eGFueS53aW5kb3cgPSBvd25lcldpZGdldCA/IG93bmVyV2lkZ2V0
LT53aW5kb3coKS0+aGFuZGxlKCkgOiAwOworI2lmIEhBVkUoUVQ1KQorICAgIFFXaW5kb3cqIHdp
bmRvdyA9IHBhZ2VDbGllbnQgPyBwYWdlQ2xpZW50LT5vd25lcldpbmRvdygpIDogMDsKKyAgICB4
RXZlbnQtPnhhbnkud2luZG93ID0gd2luZG93ID8gd2luZG93LT53aW5JZCgpIDogMDsKKyNlbHNl
CisgICAgUVdpZGdldCogb3duZXJXaWRnZXQgPSBwYWdlQ2xpZW50ID8gcGFnZUNsaWVudC0+b3du
ZXJXaWRnZXQoKSA6IDA7CisgICAgeEV2ZW50LT54YW55LndpbmRvdyA9IG93bmVyV2lkZ2V0ID8g
b3duZXJXaWRnZXQtPndpbmRvdygpLT53aW5JZCgpIDogMDsKKyNlbmRpZgogfQogCiB2b2lkIFBs
dWdpblZpZXc6OmluaXRYRXZlbnQoWEV2ZW50KiB4RXZlbnQpCiB7CiAgICAgbWVtc2V0KHhFdmVu
dCwgMCwgc2l6ZW9mKFhFdmVudCkpOwogCi0gICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IG1f
cGFyZW50RnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsK
LSAgICBRV2lkZ2V0KiBvd25lcldpZGdldCA9IGNsaWVudCA/IGNsaWVudC0+b3duZXJXaWRnZXQo
KSA6IDA7Ci0gICAgc2V0U2hhcmVkWEV2ZW50RmllbGRzKHhFdmVudCwgb3duZXJXaWRnZXQpOwor
ICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBwbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICBz
ZXRTaGFyZWRYRXZlbnRGaWVsZHMoeEV2ZW50LCBjbGllbnQpOwogfQogCiB2b2lkIFBsdWdpblZp
ZXc6OnNldFhLZXlFdmVudFNwZWNpZmljRmllbGRzKFhFdmVudCogeEV2ZW50LCBLZXlib2FyZEV2
ZW50KiBldmVudCkKQEAgLTM1Niw3ICs0MTgsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldFhLZXlF
dmVudFNwZWNpZmljRmllbGRzKFhFdmVudCogeEV2ZW50LCBLZXlib2FyZEV2ZW50KiBldmVudAog
ICAgIGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCoga2V5RXZlbnQgPSBldmVudC0+a2V5RXZl
bnQoKTsKIAogICAgIHhFdmVudC0+dHlwZSA9IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5rZXlkb3duRXZlbnQpID8gMiA6IDM7IC8vIGludHMgYXMgUXQgdW5zZXRzIEtleVByZXNzIGFu
ZCBLZXlSZWxlYXNlCi0gICAgeEV2ZW50LT54a2V5LnJvb3QgPSBRWDExSW5mbzo6YXBwUm9vdFdp
bmRvdygpOworICAgIHhFdmVudC0+eGtleS5yb290ID0gcm9vdFdpbmRvd0lEKCk7CiAgICAgeEV2
ZW50LT54a2V5LnN1YndpbmRvdyA9IDA7IC8vIHdlIGhhdmUgbm8gY2hpbGQgd2luZG93CiAgICAg
eEV2ZW50LT54a2V5LnRpbWUgPSBldmVudC0+dGltZVN0YW1wKCk7CiAgICAgeEV2ZW50LT54a2V5
LnN0YXRlID0ga2V5RXZlbnQtPm5hdGl2ZU1vZGlmaWVycygpOwpAQCAtMzcwLDcgKzQzMiw3IEBA
IHZvaWQgUGx1Z2luVmlldzo6c2V0WEtleUV2ZW50U3BlY2lmaWNGaWVsZHMoWEV2ZW50KiB4RXZl
bnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50CiAgICAgICAgIFFLZXlFdmVudCogcUtleUV2ZW50ID0g
a2V5RXZlbnQtPnF0RXZlbnQoKTsKICAgICAgICAgQVNTRVJUKHFLZXlFdmVudCk7CiAgICAgICAg
IFFTdHJpbmcga2V5VGV4dCA9IHFLZXlFdmVudC0+dGV4dCgpLmxlZnQoMSk7Ci0gICAgICAgIHhF
dmVudC0+eGtleS5rZXljb2RlID0gWEtleXN5bVRvS2V5Y29kZShRWDExSW5mbzo6ZGlzcGxheSgp
LCBYU3RyaW5nVG9LZXlzeW0oa2V5VGV4dC50b1V0ZjgoKS5jb25zdERhdGEoKSkpOworICAgICAg
ICB4RXZlbnQtPnhrZXkua2V5Y29kZSA9IFhLZXlzeW1Ub0tleWNvZGUoeDExRGlzcGxheSgpLCBY
U3RyaW5nVG9LZXlzeW0oa2V5VGV4dC50b1V0ZjgoKS5jb25zdERhdGEoKSkpOwogICAgIH0KIAog
ICAgIHhFdmVudC0+eGtleS5zYW1lX3NjcmVlbiA9IHRydWU7CkBAIC00MTksNyArNDgxLDcgQEAg
c3RhdGljIHZvaWQgc2V0WEJ1dHRvbkV2ZW50U3BlY2lmaWNGaWVsZHMoWEV2ZW50KiB4RXZlbnQs
IE1vdXNlRXZlbnQqIGV2ZW50LCBjb24KIHsKICAgICBYQnV0dG9uRXZlbnQmIHhidXR0b24gPSB4
RXZlbnQtPnhidXR0b247CiAgICAgeGJ1dHRvbi50eXBlID0gZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkubW91c2Vkb3duRXZlbnQgPyBCdXR0b25QcmVzcyA6IEJ1dHRvblJlbGVhc2U7Ci0g
ICAgeGJ1dHRvbi5yb290ID0gUVgxMUluZm86OmFwcFJvb3RXaW5kb3coKTsKKyAgICB4YnV0dG9u
LnJvb3QgPSByb290V2luZG93SUQoKTsKICAgICB4YnV0dG9uLnN1YndpbmRvdyA9IDA7CiAgICAg
eGJ1dHRvbi50aW1lID0gZXZlbnQtPnRpbWVTdGFtcCgpOwogICAgIHhidXR0b24ueCA9IHBvc3Ra
b29tUG9zLngoKTsKQEAgLTQ0Niw3ICs1MDgsNyBAQCBzdGF0aWMgdm9pZCBzZXRYTW90aW9uRXZl
bnRTcGVjaWZpY0ZpZWxkcyhYRXZlbnQqIHhFdmVudCwgTW91c2VFdmVudCogZXZlbnQsIGNvbgog
ewogICAgIFhNb3Rpb25FdmVudCYgeG1vdGlvbiA9IHhFdmVudC0+eG1vdGlvbjsKICAgICB4bW90
aW9uLnR5cGUgPSBNb3Rpb25Ob3RpZnk7Ci0gICAgeG1vdGlvbi5yb290ID0gUVgxMUluZm86OmFw
cFJvb3RXaW5kb3coKTsKKyAgICB4bW90aW9uLnJvb3QgPSByb290V2luZG93SUQoKTsKICAgICB4
bW90aW9uLnN1YndpbmRvdyA9IDA7CiAgICAgeG1vdGlvbi50aW1lID0gZXZlbnQtPnRpbWVTdGFt
cCgpOwogICAgIHhtb3Rpb24ueCA9IHBvc3Rab29tUG9zLngoKTsKQEAgLTQ2Miw3ICs1MjQsNyBA
QCBzdGF0aWMgdm9pZCBzZXRYQ3Jvc3NpbmdFdmVudFNwZWNpZmljRmllbGRzKFhFdmVudCogeEV2
ZW50LCBNb3VzZUV2ZW50KiBldmVudCwgYwogewogICAgIFhDcm9zc2luZ0V2ZW50JiB4Y3Jvc3Np
bmcgPSB4RXZlbnQtPnhjcm9zc2luZzsKICAgICB4Y3Jvc3NpbmcudHlwZSA9IGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50ID8gRW50ZXJOb3RpZnkgOiBMZWF2ZU5v
dGlmeTsKLSAgICB4Y3Jvc3Npbmcucm9vdCA9IFFYMTFJbmZvOjphcHBSb290V2luZG93KCk7Cisg
ICAgeGNyb3NzaW5nLnJvb3QgPSByb290V2luZG93SUQoKTsKICAgICB4Y3Jvc3Npbmcuc3Vid2lu
ZG93ID0gMDsKICAgICB4Y3Jvc3NpbmcudGltZSA9IGV2ZW50LT50aW1lU3RhbXAoKTsKICAgICB4
Y3Jvc3NpbmcueCA9IHBvc3Rab29tUG9zLnkoKTsKQEAgLTU3MSw2ICs2MzMsNyBAQCB2b2lkIFBs
dWdpblZpZXc6OnNldE5QV2luZG93SWZOZWVkZWQoKQogICAgICAgICByZXR1cm47CiAgICAgbV9o
YXNQZW5kaW5nR2VvbWV0cnlDaGFuZ2UgPSBmYWxzZTsKIAorI2lmICFIQVZFKFFUNSkgLy8gV2lu
ZG93ZWQgbW9kZSBpcyBub3Qgc3VwcG9ydGVkIHdpdGggUXQ1IHlldAogICAgIGlmIChtX2lzV2lu
ZG93ZWQpIHsKICAgICAgICAgUVdpZGdldCogd2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UVdpZGdldCo+
KHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkpOwogICAgICAgICB3aWRnZXQtPnNldEdlb21ldHJ5KG1f
d2luZG93UmVjdCk7CkBAIC01OTAsNyArNjUzLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXROUFdp
bmRvd0lmTmVlZGVkKCkKIAogICAgICAgICBtX25wV2luZG93LnggPSBtX3dpbmRvd1JlY3QueCgp
OwogICAgICAgICBtX25wV2luZG93LnkgPSBtX3dpbmRvd1JlY3QueSgpOwotICAgIH0gZWxzZSB7
CisgICAgfSBlbHNlCisjZW5kaWYKKyAgICB7CiAgICAgICAgIG1fbnBXaW5kb3cueCA9IDA7CiAg
ICAgICAgIG1fbnBXaW5kb3cueSA9IDA7CiAgICAgfQpAQCAtNjM5LDggKzcwNCwxMCBAQCB2b2lk
IFBsdWdpblZpZXc6OnNldFBhcmVudFZpc2libGUoYm9vbCB2aXNpYmxlKQogCiAgICAgV2lkZ2V0
OjpzZXRQYXJlbnRWaXNpYmxlKHZpc2libGUpOwogCisjaWYgIUhBVkUoUVQ1KSAvLyBXaW5kb3dl
ZCBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBRdDUgeWV0LgogICAgIGlmIChpc1NlbGZWaXNp
YmxlKCkgJiYgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkKICAgICAgICAgc3RhdGljX2Nhc3Q8UVdp
ZGdldCo+KHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkpLT5zZXRWaXNpYmxlKHZpc2libGUpOworI2Vu
ZGlmCiB9CiAKIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZlY3Rvcjxj
aGFyPiYgYnVmZmVyLCB1aW50MzJfdCBsZW4sIGNvbnN0IGNoYXIqIGJ1ZikKQEAgLTcwMSw3ICs3
NjgsNyBAQCBib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUoTlBOVmFyaWFibGUgdmFy
aWFibGUsIHZvaWQqIHZhbHVlLCBOUEVycm9yKiByZQogewogICAgIHN3aXRjaCAodmFyaWFibGUp
IHsKICAgICBjYXNlIE5QTlZ4RGlzcGxheToKLSAgICAgICAgKih2b2lkICoqKXZhbHVlID0gUVgx
MUluZm86OmRpc3BsYXkoKTsKKyAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih2YWx1
ZSkgPSB4MTFEaXNwbGF5KCk7CiAgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTcxMCw5ICs3NzcsMTMgQEAgYm9vbCBQbHVnaW5WaWV3
OjpwbGF0Zm9ybUdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwgTlBF
cnJvciogcmUKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIE5QTlZuZXRzY2FwZVdp
bmRvdzogewotICAgICAgICB2b2lkKiB3ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUp
OwotICAgICAgICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gbV9wYXJlbnRGcmFtZS0+dmlldygp
LT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpOwotICAgICAgICAqKChYSUQgKil3
KSA9IGNsaWVudCA/IGNsaWVudC0+b3duZXJXaWRnZXQoKS0+d2luZG93KCktPndpbklkKCkgOiAw
OworICAgICAgICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gcGxhdGZvcm1QYWdlQ2xpZW50KCk7
CisjaWYgSEFWRShRVDUpCisgICAgICAgIFFXaW5kb3cqIHdpbmRvdyA9IGNsaWVudCA/IGNsaWVu
dC0+b3duZXJXaW5kb3coKSA6IDA7CisgICAgICAgICpyZWludGVycHJldF9jYXN0PFhJRCo+KHZh
bHVlKSA9IHdpbmRvdyA/IHdpbmRvdy0+d2luSWQoKSA6IDA7CisjZWxzZQorICAgICAgICAqcmVp
bnRlcnByZXRfY2FzdDxYSUQqPih2YWx1ZSkgPSBjbGllbnQgPyBjbGllbnQtPm93bmVyV2lkZ2V0
KCktPndpbmRvdygpLT53aW5JZCgpIDogMDsKKyNlbmRpZgogICAgICAgICAqcmVzdWx0ID0gTlBF
UlJfTk9fRVJST1I7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTczOSw2ICs4MTAs
NyBAQCB2b2lkIFBsdWdpblZpZXc6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3Qp
CiAgICAgfQogI2VuZGlmCiAKKyNpZiAhSEFWRShRVDUpIC8vIFdpbmRvd2VkIG1vZGUgaXMgbm90
IHN1cHBvcnRlZCB3aXRoIFF0NSB5ZXQuCiAgICAgaWYgKG1faXNXaW5kb3dlZCkgewogICAgICAg
ICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAgICAgICAgICAgLy8gdXBkYXRlKCkgd2lsbCBz
Y2hlZHVsZSBhIHJlcGFpbnQgb2YgdGhlIHdpZGdldCBzbyBlbnN1cmUKQEAgLTc0OSw2ICs4MjEs
NyBAQCB2b2lkIFBsdWdpblZpZXc6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3Qp
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNlbmRpZgogCiAgICAgaW52YWxp
ZGF0ZVdpbmRvd2xlc3NQbHVnaW5SZWN0KHJlY3QpOwogfQpAQCAtODAzLDQ3ICs4NzYsNTMgQEAg
c3RhdGljIERpc3BsYXkgKmdldFBsdWdpbkRpc3BsYXkoKQogICAgIHJldHVybiAoRGlzcGxheSop
Z2RrX3gxMV9kaXNwbGF5X2dldF94ZGlzcGxheShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpKTsK
IH0KIAotc3RhdGljIHZvaWQgZ2V0VmlzdWFsQW5kQ29sb3JtYXAoaW50IGRlcHRoLCBWaXN1YWwg
Kip2aXN1YWwsIENvbG9ybWFwICpjb2xvcm1hcCkKK3N0YXRpYyBib29sIGdldFZpc3VhbEFuZENv
bG9ybWFwKGludCBkZXB0aCwgVmlzdWFsKiYgdmlzdWFsLCBDb2xvcm1hcCYgY29sb3JtYXAsIGJv
b2wgZm9yY2VBUkdCMzIpCiB7Ci0gICAgKnZpc3VhbCA9IDA7Ci0gICAgKmNvbG9ybWFwID0gMDsK
KyAgICBBU1NFUlQoZGVwdGggPT0gMzIgfHwgIWZvcmNlQVJHQjMyKTsKIAotI2lmbmRlZiBRVF9O
T19YUkVOREVSCisgICAgdmlzdWFsID0gMDsKKyAgICBjb2xvcm1hcCA9IDA7CisKKyNpZiAhSEFW
RShRVDUpICYmICFkZWZpbmVkKFFUX05PX1hSRU5ERVIpCiAgICAgc3RhdGljIGNvbnN0IGJvb2wg
dXNlWFJlbmRlciA9IHFnZXRlbnYoIlFUX1gxMV9OT19YUkVOREVSIikuaXNOdWxsKCk7IC8vIFNo
b3VsZCBhbHNvIGNoZWNrIGZvciBYUmVuZGVyID49IDAuNQogI2Vsc2UKICAgICBzdGF0aWMgY29u
c3QgYm9vbCB1c2VYUmVuZGVyID0gZmFsc2U7CiAjZW5kaWYKLQotICAgIGlmICghdXNlWFJlbmRl
ciAmJiBkZXB0aCA9PSAzMikKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghdXNlWFJlbmRlciAm
JiBmb3JjZUFSR0IzMikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaW50IG52aTsKICAg
ICBYVmlzdWFsSW5mbyB0ZW1wbDsKLSAgICB0ZW1wbC5zY3JlZW4gID0gUVgxMUluZm86OmFwcFNj
cmVlbigpOworICAgIHRlbXBsLnNjcmVlbiAgPSB4MTFTY3JlZW4oKTsKICAgICB0ZW1wbC5kZXB0
aCAgID0gZGVwdGg7CiAgICAgdGVtcGwuY19jbGFzcyA9IFRydWVDb2xvcjsKLSAgICBYVmlzdWFs
SW5mbyogeHZpID0gWEdldFZpc3VhbEluZm8oUVgxMUluZm86OmRpc3BsYXkoKSwgVmlzdWFsU2Ny
ZWVuTWFzayB8IFZpc3VhbERlcHRoTWFzayB8IFZpc3VhbENsYXNzTWFzaywgJnRlbXBsLCAmbnZp
KTsKLQorICAgIFhWaXN1YWxJbmZvKiB4dmkgPSBYR2V0VmlzdWFsSW5mbyh4MTFEaXNwbGF5KCks
IFZpc3VhbFNjcmVlbk1hc2sgfCBWaXN1YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01hc2ssICZ0
ZW1wbCwgJm52aSk7CisgICAgQVNTRVJUKHh2aSB8fCBmb3JjZUFSR0IzMik7CiAgICAgaWYgKCF4
dmkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWZuZGVmIFFU
X05PX1hSRU5ERVIKLSAgICBpZiAoZGVwdGggPT0gMzIpIHsKKyNpZiAhSEFWRShRVDUpICYmICFk
ZWZpbmVkKFFUX05PX1hSRU5ERVIpCisgICAgaWYgKGZvcmNlQVJHQjMyKSB7CiAgICAgICAgIGZv
ciAoaW50IGlkeCA9IDA7IGlkeCA8IG52aTsgKytpZHgpIHsKLSAgICAgICAgICAgIFhSZW5kZXJQ
aWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZpc3VhbEZvcm1hdChRWDExSW5mbzo6ZGlz
cGxheSgpLCB4dmlbaWR4XS52aXN1YWwpOworICAgICAgICAgICAgWFJlbmRlclBpY3RGb3JtYXQq
IGZvcm1hdCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KHgxMURpc3BsYXkoKSwgeHZpW2lkeF0u
dmlzdWFsKTsKICAgICAgICAgICAgIGlmIChmb3JtYXQtPnR5cGUgPT0gUGljdFR5cGVEaXJlY3Qg
JiYgZm9ybWF0LT5kaXJlY3QuYWxwaGFNYXNrKSB7Ci0gICAgICAgICAgICAgICAgICp2aXN1YWwg
PSB4dmlbaWR4XS52aXN1YWw7CisgICAgICAgICAgICAgICAgIHZpc3VhbCA9IHh2aVtpZHhdLnZp
c3VhbDsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF2aXN1YWwpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfSBlbHNlCi0jZW5kaWYgLy8gUVRfTk9fWFJFTkRFUgotICAgICAgICAqdmlzdWFs
ID0geHZpWzBdLnZpc3VhbDsKKyNlbmRpZgorICAgIHsKKyAgICAgICAgdmlzdWFsID0geHZpWzBd
LnZpc3VhbDsKKyAgICB9CisgICAgQVNTRVJUKHZpc3VhbCk7CiAKICAgICBYRnJlZSh4dmkpOwog
Ci0gICAgaWYgKCp2aXN1YWwpCi0gICAgICAgICpjb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChR
WDExSW5mbzo6ZGlzcGxheSgpLCBRWDExSW5mbzo6YXBwUm9vdFdpbmRvdygpLCAqdmlzdWFsLCBB
bGxvY05vbmUpOworICAgIGNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFwKHgxMURpc3BsYXkoKSwg
cm9vdFdpbmRvd0lEKCksIHZpc3VhbCwgQWxsb2NOb25lKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybVN0YXJ0KCkKQEAgLTg1MSw2ICs5MzAsMjggQEAg
Ym9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybVN0YXJ0KCkKICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQp
OwogICAgIEFTU0VSVChtX3N0YXR1cyA9PSBQbHVnaW5TdGF0dXNMb2FkZWRTdWNjZXNzZnVsbHkp
OwogCisgICAgaWYgKCF4MTFFbnZpcm9ubWVudC5kaXNwbGF5KSB7CisgICAgICAgIERpc3BsYXkq
IGRpc3BsYXk7CisjaWYgSEFWRShRVDUpCisgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBwYWdlQ2xp
ZW50ID0gcGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgIGlmICghcGFnZUNsaWVudCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgUVdpbmRvdyogd2luZG93ID0gcGFnZUNs
aWVudC0+b3duZXJXaW5kb3coKTsKKyAgICAgICAgZGlzcGxheSA9IHN0YXRpY19jYXN0PERpc3Bs
YXkqPihRR3VpQXBwbGljYXRpb246OnBsYXRmb3JtTmF0aXZlSW50ZXJmYWNlKCktPm5hdGl2ZVJl
c291cmNlRm9yV2luZG93KCJkaXNwbGF5Iiwgd2luZG93KSk7CisjZWxzZQorICAgICAgICBkaXNw
bGF5ID0gUVgxMUluZm86OmRpc3BsYXkoKTsKKyNlbmRpZgorICAgICAgICB4MTFFbnZpcm9ubWVu
dC5kaXNwbGF5ID0gZGlzcGxheTsKKyAgICAgICAgeDExRW52aXJvbm1lbnQuc2NyZWVuSUQgPSBY
RGVmYXVsdFNjcmVlbihkaXNwbGF5KTsKKyAgICAgICAgeDExRW52aXJvbm1lbnQuZGlzcGxheURl
cHRoID0gWERlZmF1bHREZXB0aChkaXNwbGF5LCB4MTFFbnZpcm9ubWVudC5zY3JlZW5JRCk7Cisg
ICAgICAgIHgxMUVudmlyb25tZW50LnJvb3RXaW5kb3dJRCA9IFhEZWZhdWx0Um9vdFdpbmRvdyhk
aXNwbGF5KTsKKyAgICB9CisKKyNpZiBIQVZFKFFUNSkKKyAgICAvLyBXaW5kb3dlZCBtb2RlIGlz
IG5vdCBzdXBwb3J0ZWQgd2l0aCBRdDUgeWV0LgorICAgIGlmIChtX2lzV2luZG93ZWQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCiAgICAgaWYgKG1fcGx1Z2luLT5wbHVnaW5GdW5jcygp
LT5nZXR2YWx1ZSkgewogICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0
aGlzKTsKICNpZiBVU0UoSlNDKQpAQCAtODYzLDcgKzk2NCw3IEBAIGJvb2wgUGx1Z2luVmlldzo6
cGxhdGZvcm1TdGFydCgpCiAgICAgfQogCiAgICAgaWYgKG1faXNXaW5kb3dlZCkgewotICAgICAg
ICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gbV9wYXJlbnRGcmFtZS0+dmlldygpLT5ob3N0V2lu
ZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpOworICAgICAgICBRV2ViUGFnZUNsaWVudCogY2xp
ZW50ID0gcGxhdGZvcm1QYWdlQ2xpZW50KCk7CiAgICAgICAgIGlmIChtX25lZWRzWEVtYmVkICYm
IGNsaWVudCkgewogICAgICAgICAgICAgc2V0UGxhdGZvcm1XaWRnZXQobmV3IFBsdWdpbkNvbnRh
aW5lclF0KHRoaXMsIGNsaWVudC0+b3duZXJXaWRnZXQoKSkpOwogICAgICAgICAgICAgLy8gc3lu
YyBvdXIgWEVtYmVkIGNvbnRhaW5lciB3aW5kb3cgY3JlYXRpb24gYmVmb3JlIHNlbmRpbmcgdGhl
IHhpZCB0byBwbHVnaW5zLgpAQCAtODczLDcgKzk3NCw5IEBAIGJvb2wgUGx1Z2luVmlldzo6cGxh
dGZvcm1TdGFydCgpCiAgICAgICAgICAgICBtX3N0YXR1cyA9IFBsdWdpblN0YXR1c0Nhbk5vdExv
YWRQbHVnaW47CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICB9IGVs
c2UgeworICAgIH0gZWxzZQorI2VuZGlmIC8vIEhBVkUoUVQ1KQorICAgIHsKICAgICAgICAgc2V0
UGxhdGZvcm1XaWRnZXQoMCk7CiAgICAgICAgIG1fcGx1Z2luRGlzcGxheSA9IGdldFBsdWdpbkRp
c3BsYXkoKTsKIApAQCAtODkzLDYgKzk5Niw3IEBAIGJvb2wgUGx1Z2luVmlldzo6cGxhdGZvcm1T
dGFydCgpCiAgICAgTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCogd3NpID0gbmV3IE5QU2V0V2lu
ZG93Q2FsbGJhY2tTdHJ1Y3QoKTsKICAgICB3c2ktPnR5cGUgPSAwOwogCisjaWYgIUhBVkUoUVQ1
KQogICAgIGlmIChtX2lzV2luZG93ZWQpIHsKICAgICAgICAgY29uc3QgUVgxMUluZm8qIHgxMUlu
Zm8gPSAmc3RhdGljX2Nhc3Q8UVdpZGdldCo+KHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkpLT54MTFJ
bmZvKCk7CiAKQEAgLTkwNSwyMCArMTAwOSwyNCBAQCBib29sIFBsdWdpblZpZXc6OnBsYXRmb3Jt
U3RhcnQoKQogICAgICAgICBtX25wV2luZG93LndpbmRvdyA9ICh2b2lkKilzdGF0aWNfY2FzdDxR
V2lkZ2V0Kj4ocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSktPndpbklkKCk7CiAgICAgICAgIG1fbnBX
aW5kb3cud2lkdGggPSAtMTsKICAgICAgICAgbV9ucFdpbmRvdy5oZWlnaHQgPSAtMTsKLSAgICB9
IGVsc2UgeworICAgIH0gZWxzZQorI2VuZGlmCisgICAgeworI2lmICFIQVZFKFFUNSkKICAgICAg
ICAgY29uc3QgUVgxMUluZm8qIHgxMUluZm8gPSAmUUFwcGxpY2F0aW9uOjpkZXNrdG9wKCktPngx
MUluZm8oKTsKLQotICAgICAgICBpZiAoeDExSW5mby0+ZGVwdGgoKSA9PSAzMiB8fCAhbV9wbHVn
aW4tPnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrUmVxdWlyZXNEZWZhdWx0U2NyZWVuRGVw
dGgpKSB7Ci0gICAgICAgICAgICBnZXRWaXN1YWxBbmRDb2xvcm1hcCgzMiwgJm1fdmlzdWFsLCAm
bV9jb2xvcm1hcCk7CisgICAgICAgIGlmICgoeDExSW5mby0+ZGVwdGgoKSA9PSAzMiB8fCAhbV9w
bHVnaW4tPnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrUmVxdWlyZXNEZWZhdWx0U2NyZWVu
RGVwdGgpKQorICAgICAgICAgICAgICYmIGdldFZpc3VhbEFuZENvbG9ybWFwKDMyLCBtX3Zpc3Vh
bCwgbV9jb2xvcm1hcCwgLyogZm9yY2VBUkdCMzIgPSAqLyB0cnVlKSkKICAgICAgICAgICAgIHdz
aS0+ZGVwdGggPSAzMjsKKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGludCBkZXB0aCA9IGRpc3BsYXlEZXB0aCgpOworICAgICAgICAgICAgYm9vbCBmb3VuZCA9
IGdldFZpc3VhbEFuZENvbG9ybWFwKGRlcHRoLCBtX3Zpc3VhbCwgbV9jb2xvcm1hcCwgLyogZm9y
Y2VBUkdCMzIgPSAqLyBmYWxzZSk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBm
b3VuZCk7CisgICAgICAgICAgICB3c2ktPmRlcHRoID0gZGVwdGg7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIW1fdmlzdWFsKSB7Ci0gICAgICAgICAgICBnZXRWaXN1YWxBbmRDb2xvcm1hcCh4
MTFJbmZvLT5kZXB0aCgpLCAmbV92aXN1YWwsICZtX2NvbG9ybWFwKTsKLSAgICAgICAgICAgIHdz
aS0+ZGVwdGggPSB4MTFJbmZvLT5kZXB0aCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgd3NpLT5k
aXNwbGF5ID0geDExSW5mby0+ZGlzcGxheSgpOworICAgICAgICB3c2ktPmRpc3BsYXkgPSB4MTFE
aXNwbGF5KCk7CiAgICAgICAgIHdzaS0+dmlzdWFsID0gbV92aXN1YWw7CiAgICAgICAgIHdzaS0+
Y29sb3JtYXAgPSBtX2NvbG9ybWFwOwogCkBAIC05NDYsMTAgKzEwNTQsMTAgQEAgdm9pZCBQbHVn
aW5WaWV3OjpwbGF0Zm9ybURlc3Ryb3koKQogICAgICAgICBkZWxldGUgcGxhdGZvcm1QbHVnaW5X
aWRnZXQoKTsKIAogICAgIGlmIChtX2RyYXdhYmxlKQotICAgICAgICBYRnJlZVBpeG1hcChRWDEx
SW5mbzo6ZGlzcGxheSgpLCBtX2RyYXdhYmxlKTsKKyAgICAgICAgWEZyZWVQaXhtYXAoeDExRGlz
cGxheSgpLCBtX2RyYXdhYmxlKTsKIAogICAgIGlmIChtX2NvbG9ybWFwKQotICAgICAgICBYRnJl
ZUNvbG9ybWFwKFFYMTFJbmZvOjpkaXNwbGF5KCksIG1fY29sb3JtYXApOworICAgICAgICBYRnJl
ZUNvbG9ybWFwKHgxMURpc3BsYXkoKSwgbV9jb2xvcm1hcCk7CiB9CiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
c2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAppbmRl
eCBjYTI2NGM4YWYwMzczZDM2ZWZmOTFkMzI3ZmY1OWE1MTA0Yjk5ZTlhLi40ZTAxODM2Zjc3ODRj
NzlhYTJmYWEwODE3ZGU3MmJmMjU0MGFiNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2Vic2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0
aW5ncy5jcHAKQEAgLTExNzQsNyArMTE3NCwxMSBAQCB2b2lkIFFXZWJTZXR0aW5nczo6ZW5hYmxl
UGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUVN0cmluZyYgcGF0aCkKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQogICAgIC8vIEFsbCBhcHBsaWNhdGlvbnMgY2FuIHNo
YXJlIHRoZSBjb21tb24gUXRXZWJraXQgY2FjaGUgZmlsZShzKS4KICAgICAvLyBQYXRoIGlzIG5v
dCBjb25maWd1cmFibGUgYW5kIHVzZXMgUURlc2t0b3BTZXJ2aWNlczo6Q2FjaGVMb2NhdGlvbiBi
eSBkZWZhdWx0LgorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg1LCAwLCAwKQor
ICAgIFFTdHJpbmcgY2FjaGVQYXRoID0gUVN0YW5kYXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24o
UVN0YW5kYXJkUGF0aHM6OkNhY2hlTG9jYXRpb24pOworI2Vsc2UKICAgICBRU3RyaW5nIGNhY2hl
UGF0aCA9IFFEZXNrdG9wU2VydmljZXM6OnN0b3JhZ2VMb2NhdGlvbihRRGVza3RvcFNlcnZpY2Vz
OjpDYWNoZUxvY2F0aW9uKTsKKyNlbmRpZgogICAgIFdlYkNvcmU6Om1ha2VBbGxEaXJlY3Rvcmll
cyhjYWNoZVBhdGgpOwogCiAgICAgUUZpbGVJbmZvIGluZm8oY2FjaGVQYXRoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwCmluZGV4IGI2ZDg1MDNjZWY2N2I2N2IyYjQ1ZWUwZDliZGNkYTI4ZTU3NWI0YzcuLjY1YTk2
ZDAzYWEwNDVjMzJjMTY4MTM2MjAyZWNlNzI4MGRmN2M2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcApAQCAt
MTYyMSw5ICsxNjIxLDE0IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudFF0
OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwKICAgICAgICAgVmVjdG9y
PFN0cmluZz4gcGFyYW1zID0gcGFyYW1OYW1lczsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gdmFs
dWVzID0gcGFyYW1WYWx1ZXM7CiAgICAgICAgIGlmIChtaW1lVHlwZSA9PSAiYXBwbGljYXRpb24v
eC1zaG9ja3dhdmUtZmxhc2giKSB7CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNL
KDUsIDAsIDApCisgICAgICAgICAgICBjb25zdCBib29sIHNob3VsZEluamVjdFdtb2RlID0gdHJ1
ZTsKKyNlbHNlCisgICAgICAgICAgICAvLyBJbmplY3Qgd21vZGU9b3BhcXVlIHdoZW4gdGhlcmUg
aXMgbm8gY2xpZW50IG9yIHRoZSBjbGllbnQgaXMgbm90IGEgUVdlYlZpZXcuCiAgICAgICAgICAg
ICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gbV93ZWJGcmFtZS0+cGFnZSgpLT5kLT5jbGllbnQu
Z2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBib29sIGlzUVdlYlZpZXcgPSBjbGllbnQgJiYgcW9i
amVjdF9jYXN0PFFXaWRnZXQqPihjbGllbnQtPnBsdWdpblBhcmVudCgpKTsKLSAgICAgICAgICAg
IGlmICghaXNRV2ViVmlldykgeworICAgICAgICAgICAgY29uc3QgYm9vbCBzaG91bGRJbmplY3RX
bW9kZSA9ICEoY2xpZW50ICYmIHFvYmplY3RfY2FzdDxRV2lkZ2V0Kj4oY2xpZW50LT5wbHVnaW5Q
YXJlbnQoKSkpOworI2VuZGlmCisgICAgICAgICAgICBpZiAoc2hvdWxkSW5qZWN0V21vZGUpIHsK
ICAgICAgICAgICAgICAgICAvLyBJbmplY3Qgd21vZGU9b3BhcXVlIHdoZW4gdGhlcmUgaXMgbm8g
Y2xpZW50IG9yIHRoZSBjbGllbnQgaXMgbm90IGEgUVdlYlZpZXcuCiAgICAgICAgICAgICAgICAg
c2l6ZV90IHdtb2RlSW5kZXggPSBwYXJhbXMuZmluZCgid21vZGUiKTsKICAgICAgICAgICAgICAg
ICBpZiAod21vZGVJbmRleCA9PSBXVEY6Om5vdEZvdW5kKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHAKaW5kZXggNmY5NmNlMWJhN2E3YTk1
NmY5MmE5NDkwYTJlY2FmZDNjMzNhMzk2MS4uYjQwNWRhMTMzNTZiZDA5YWE5MmFmNjhhMmZmNDY0
NzRkMzAwZDNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Q
YWdlQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGFn
ZUNsaWVudFF0LmNwcApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSA8UUdyYXBoaWNzU2Nl
bmU+CiAjaW5jbHVkZSA8UUdyYXBoaWNzVmlldz4KKyNpbmNsdWRlIDxRdFdpZGdldHMvcHJpdmF0
ZS9xYXBwbGljYXRpb25fcC5oPgogI2lmIGRlZmluZWQoUV9XU19YMTEpCiAjaW5jbHVkZSA8UVgx
MUluZm8+CiAjZW5kaWYKQEAgLTIzMSw2ICsyMzIsMTMgQEAgdm9pZCBQYWdlQ2xpZW50UVdpZGdl
dDo6Y3JlYXRlUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dDMKIH0KICNlbmRpZgogCisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAs
IDApCitRV2luZG93KiBQYWdlQ2xpZW50UVdpZGdldDo6b3duZXJXaW5kb3coKSBjb25zdAorewor
ICAgIHJldHVybiB2aWV3LT53aW5kb3dIYW5kbGUoKTsKK30KKyNlbmRpZgorCiAjaWYgIWRlZmlu
ZWQoUVRfTk9fR1JBUEhJQ1NWSUVXKQogUGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6flBhZ2VD
bGllbnRRR3JhcGhpY3NXaWRnZXQoKQogewpAQCAtNDgxLDQgKzQ4OSwxMSBAQCB2b2lkIFBhZ2VD
bGllbnRRR3JhcGhpY3NXaWRnZXQ6OmNyZWF0ZVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoUGxh
dGZvcm1HcmFwaGljcwogfQogI2VuZGlmCiAKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05f
Q0hFQ0soNSwgMCwgMCkKK1FXaW5kb3cqIFBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6Om93bmVy
V2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gb3duZXJXaWRnZXQoKSA/IFFBcHBsaWNhdGlv
blByaXZhdGU6OndpbmRvd0ZvcldpZGdldChvd25lcldpZGdldCgpKSA6IDA7Cit9CisjZW5kaWYK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUGFnZUNsaWVudFF0LmgKaW5kZXggOWEyNjM2NTcyMWM4NDU2YjMzM2VjYzA4N2U1ZGZh
ZWFjOWVhM2EyYy4uNDliNjgzMjliMTJhMzM4ZjgzZDgyYjY3MzRkY2JiNWRkMDgxZDMwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5oCkBAIC0x
MDQsNiArMTA0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTNEKik7CiAjZW5kaWYKIAor
I2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg1LCAwLCAwKQorICAgIHZpcnR1YWwg
UVdpbmRvdyogb3duZXJXaW5kb3coKSBjb25zdDsKKyNlbmRpZgorCiAgICAgUVdpZGdldCogdmll
dzsKICAgICBRV2ViUGFnZSogcGFnZTsKIApAQCAtMjEyLDYgKzIxNiwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1H
cmFwaGljc1N1cmZhY2UzRCopOwogI2VuZGlmCiAKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJ
T05fQ0hFQ0soNSwgMCwgMCkKKyAgICB2aXJ0dWFsIFFXaW5kb3cqIG93bmVyV2luZG93KCkgY29u
c3Q7CisjZW5kaWYKKwogICAgIHZvaWQgY3JlYXRlT3JEZWxldGVPdmVybGF5KCk7CiAKICNpZiBV
U0UoVElMRURfQkFDS0lOR19TVE9SRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9hcGkucHJpIGIvU291
cmNlL2FwaS5wcmkKaW5kZXggNmMyZGY3YjcwN2VmZjJkNmE3NDkyNTI4YTY5NzBlYzNhMzQ4MWEw
ZC4uMTAwZGUyN2I2ZGJkNjg5YjM0NzRiYjkxMWMzNTlhMDRmNjdjMjhjNCAxMDA2NDQKLS0tIGEv
U291cmNlL2FwaS5wcmkKKysrIGIvU291cmNlL2FwaS5wcmkKQEAgLTE0Myw3ICsxNDMsNyBAQCBX
RUJLSVQgKz0gd2ViY29yZQogfQogCiBRVCArPSBuZXR3b3JrCi1oYXZlUXQoNSk6IFFUICs9IHdp
ZGdldHMgcHJpbnRzdXBwb3J0IHF1aWNrCitoYXZlUXQoNSk6IFFUICs9IGNvcmUtcHJpdmF0ZSBn
dWktcHJpdmF0ZSB3aWRnZXRzIHdpZGdldHMtcHJpdmF0ZSBwcmludHN1cHBvcnQgcXVpY2sKIAog
Y29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9URVhUVVJFX01BUFBFUl9HTD0xKXxjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkgewogICAgIFFUICo9IG9wZW5nbApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDViMjFkYjY0ZTMxMWQyYzE2
YTg1M2QzYTczYzY3Nzk1MjEzNTVkOTguLjdlMTdmYzI1YjdlNTVkOTM0YWQ1Njk0NjQ4YTcwOGRk
NzliYWRjYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNC0yNCAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpz
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBYMTEgcGx1Z2lucyBuZWVkIHRvIGJlIHJld29y
a2VkIGZvciBRdDUrV0sxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MDY5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcGxlbWVudCBiYXNpYyB3aW5kb3dsZXNzIHBsdWdpbiBzdXBwb3J0IHdpdGggUXQ1
LgorCisgICAgICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmY6IEVuYWJs
ZSBOUEFQSQorICAgICAgICBwbHVnaW5zIGlmIFgxMSBsaWJyYXJpZXMgYXJlIGF2YWlsYWJsZS4K
KwogMjAxMi0wNC0yNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwu
Y29tPgogCiAgICAgICAgIFtFRkxdIEVuYWJsZSBXZWIgVGltaW5nCmRpZmYgLS1naXQgYS9Ub29s
cy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZiBiL1Rvb2xzL3FtYWtlL21rc3Bl
Y3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCmluZGV4IDhmNjE3NWVjZTQ3OTU0ZDEwMDdjODhmYTI0
ZGU5NWM1ZDBkNzIzZWIuLjM3ZGM5OTQyZGUyNjg5YmM1ZjFhYTFkMjJlNjIyNWExMjEzOGM4YjMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCisr
KyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCkBAIC0xMzcsNyAr
MTM3LDEwIEBAIGhhdmVRdCg1KSB7CiAKICMgTmVzY2FwZSBwbHVnaW5zIHN1cHBvcnQgKE5QQVBJ
KQogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJPS4pIHsKLSAg
ICB1bml4OmhhdmVRdCg0KXx3aW4zMi0qOiFlbWJlZGRlZDohd2luY2UqOiB7CisgICAgaGF2ZVF0
KDUpOnhsaWJBdmFpbGFibGUoKSB7CisgICAgICAgIERFRklORVMgKz0gRU5BQkxFX05FVFNDQVBF
X1BMVUdJTl9BUEk9MQorICAgICAgICBDT05GSUcgKz0gcGx1Z2luX2JhY2tlbmRfeGxpYgorICAg
IH0gZWxzZTogdW5peHx3aW4zMi0qOiFlbWJlZGRlZDohd2luY2UqIHsKICAgICAgICAgREVGSU5F
UyArPSBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQST0xCiAgICAgfSBlbHNlIHsKICAgICAgICAg
REVGSU5FUyArPSBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQST0wCmRpZmYgLS1naXQgYS9DaGFu
Z2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZGIwMTMxZmFkZjI2ZTE2MjIyODQ1ZTJiZTI5NzE4MzJm
OGNiYjMxNi4uNmQ2M2UxZmNlYTcwMzRmZGQ4ZWM0N2QzN2I5YWE2ODU3NGY3NmExZCAxMDA2NDQK
LS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA0
LTI0ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRd
IFgxMSBwbHVnaW5zIG5lZWQgdG8gYmUgcmV3b3JrZWQgZm9yIFF0NStXSzEKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjkxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHdpbmRv
d2xlc3MgcGx1Z2luIHN1cHBvcnQgd2l0aCBRdDUuCisKKyAgICAgICAgKiBTb3VyY2UvYXBpLnBy
aTogTmVlZCBwcml2YXRlIEFQSSdzIHRvIGJlIGFibGUKKyAgICAgICAgdG8gdXNlIFFBcHBsaWNh
dGlvblByaXZhdGU6OndpbmRvd0ZvcldpZGdldC4KKwogMjAxMi0wNC0yNCAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEVuYWJs
ZSBXZWIgVGltaW5nCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138555</attachid>
            <date>2012-04-24 07:22:55 -0700</date>
            <delta_ts>2012-04-24 10:03:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80691-20120424162253.patch</filename>
            <type>text/plain</type>
            <size>35526</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQxZTc1NGRiMTM3NWEx
MmUxN2ZiMDExODVjM2JkOGE2NGVhMzA2OS4uMDA4YzVlNDI5NjdlZDc2NGJlZjFhNjNkYjE2YzZk
ODc4Y2FkNWE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTA0LTI0ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIFgxMSBwbHVn
aW5zIG5lZWQgdG8gYmUgcmV3b3JrZWQgZm9yIFF0NStXSzEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHdpbmRvd2xlc3MgcGx1
Z2luIHN1cHBvcnQgd2l0aCBRdDUuCisgICAgICAgIFRoZSBzb2x1dGlvbiBpcyB0aGUgc2FtZSB0
aGF0IGhhcyBiZWVuIGNob3NlbiBmb3IKKyAgICAgICAgV2ViS2l0Mi4gV2UgZ2V0IHRoZSBjb250
ZW50IGRyYXdlZCBieSB0aGUgcGx1Z2luCisgICAgICAgIGZyb20gdGhlIFggc2VydmVyIGFzIGFu
IGltYWdlLCBjcmVhdGUgYSBRSW1hZ2UKKyAgICAgICAgZnJvbSBpdCBhbmQgcGFpbnQgaXQgdG8g
dGhlIHdpbmRvdyBzdXJmYWNlIHdpdGggUVBhaW50ZXIuCisgICAgICAgIFBlcmZvcm1hbmNlIGlz
IHN1ZmZpY2llbnQgZm9yIGJhc2ljIHZpZGVvIHBsYXliYWNrLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyBwbHVnaW4gdGVzdHMuCisKKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1FX
ZWJQYWdlQ2xpZW50Lmg6CisgICAgICAgIChRV2ViUGFnZUNsaWVudCk6CisgICAgICAgICogcGx1
Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgIChQbHVnaW5WaWV3KToKKyAgICAgICAgKiBwbHVn
aW5zL3F0L1BsdWdpblBhY2thZ2VRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNr
YWdlOjppc1BsdWdpbkJsYWNrbGlzdGVkKToKKyAgICAgICAgQmxhY2tsaXN0IHBsdWdpbnMgdGhh
dCBhcmUgaW5jb21wYXRpYmxlIHdpdGggUXQ1LgorICAgICAgICBUaGUgb25seSBvbmUgSSBrbm93
IGFib3V0IGN1cnJlbnRseSBpcyBza3lwZWJ1dHRvbnMKKyAgICAgICAgYnV0IHRoZSBsaXN0IGNh
biBiZSBleHRlbmRlZCBpbiB0aGUgZnV0dXJlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpsb2FkKToKKyAgICAgICAgKiBwbHVnaW5zL3F0L1Bs
dWdpblZpZXdRdC5jcHA6CisgICAgICAgIChYMTFFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OngxMURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6
eDExU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OnJvb3RXaW5kb3dJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpkaXNwbGF5RGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6c3luY1gpOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1QYWdlQ2xpZW50KTogQWRkZWQgYSBzYWZl
CisgICAgICAgIGNvbnZlbmllbmNlIGdldHRlciBmb3IgdGhlIFFXZWJwYWdlQ2xpZW50LgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6dXBkYXRlUGx1Z2luV2lkZ2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldHVw
R3JhcGhpY3NFeHBvc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwYWlu
dFVzaW5nWFBpeG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRTaGFyZWRYRXZlbnRGaWVsZHMp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aW5pdFhFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3OjpzZXRYS2V5RXZlbnRTcGVjaWZpY0ZpZWxkcyk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRYQnV0dG9uRXZlbnRTcGVjaWZpY0ZpZWxkcyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRYTW90aW9uRXZlbnRTcGVjaWZpY0ZpZWxkcyk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRYQ3Jvc3NpbmdFdmVudFNwZWNpZmljRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OnNldE5QV2luZG93SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6c2V0UGFyZW50VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0
Zm9ybUdldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmludmFsaWRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFZpc3VhbEFuZENvbG9ybWFwKToKKyAgICAgICAg
UmVmYWN0b3JlZCB0aGlzIGZ1bmN0aW9uIHRvIG1ha2UgaXQgbW9yZSBjbGVhcgorICAgICAgICB3
aGF0IGRvZXMgaXQgYWN0dWFsbHkgZG8uCisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojpw
bGF0Zm9ybVN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtRGVz
dHJveSk6CisKIDIwMTItMDQtMjQgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5i
b3NzYS5vcmc+CiAKICAgICAgICAgQW5vdGhlciB1bnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgTWFj
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwppbmRleCA1ZmMzMzhmYWM1MTk5ZWRkMWJjZGVlNzcwZDFhZmM5YjRlNWEz
MjI3Li4xZTI4NDBmY2FlNzQ4ZDMwMmQxNTYxYzk1MWIwZDY4NTFjYWM5NjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA0LTI0ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxh
enNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIFgxMSBwbHVnaW5zIG5lZWQgdG8gYmUgcmV3
b3JrZWQgZm9yIFF0NStXSzEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgwNjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHdpbmRvd2xlc3MgcGx1Z2luIHN1cHBvcnQgd2l0aCBR
dDUuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0
aW5nczo6ZW5hYmxlUGVyc2lzdGVudFN0b3JhZ2UpOgorICAgICAgICBCdWlsZCBmaXggZm9yIFF0
NS4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbik6CisgICAg
ICAgIEluamVjdCB0aGUgd21vZGUgcGFyYW1ldGVyIGZvciBmbGFzaCBzbyBpdCB3aWxsCisgICAg
ICAgIHdvcmsgaW4gd2luZG93bGVzcywgbm9uLXRyYW5zcGFyZW50IG1vZGUgd2hpY2gKKyAgICAg
ICAgaXMgdGhlIG9ubHkgb25lIHdlIHN1cHBvcnQgY3VycmVudGx5LgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0Ojpvd25lcldpbmRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0Ojpvd25lcldpbmRvdyk6CisgICAgICAgIEFk
ZGVkIGEgZ2V0dGVyIGZvciB0aGUgdG9wIGxldmVsIHdpbmRvdyBzbyB0aGUgUGx1Z2luVmlldwor
ICAgICAgICBjYW4gZ2V0IGl0IHdpdGhvdXQgY2FsbGluZyBpbnRvIFF0V2lkZ2V0cyBjb2RlLgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5oOgorICAgICAgICAoUGFnZUNs
aWVudFFXaWRnZXQpOgorICAgICAgICAoUGFnZUNsaWVudFFHcmFwaGljc1dpZGdldCk6CisKIDIw
MTItMDQtMjQgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAgICAg
IFtRdF0gTW92ZSBub3RpZmljYXRpb24gaWNvbiBkb3dubG9hZCBvdXQgb2YgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKaW5kZXggMmIwODE4Y2FiNTE3OTUxZTdjMDAxNjcwMWE1MmUyNmY4YjlmNjkxNy4uODM5
MzgyZDA3OGE0ODA5OTY1YjIzNjA3MTVmMjUxNDY1NDAyNWEwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0y
OTU5LDExICsyOTU5LDEzIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9ORVRTQ0FQRV9QTFVH
SU5fQVBJPTEpIHsKICAgICAgICAgICAgICAgICBwbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1t
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBTT1VSQ0VTICs9IFwKLSAgICAgICAgICAg
ICAgICBwbHVnaW5zL3F0L1BsdWdpbkNvbnRhaW5lclF0LmNwcCBcCiAgICAgICAgICAgICAgICAg
cGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwIFwKICAgICAgICAgICAgICAgICBwbHVnaW5z
L3F0L1BsdWdpblZpZXdRdC5jcHAKLSAgICAgICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAg
ICAgICAgIHBsdWdpbnMvcXQvUGx1Z2luQ29udGFpbmVyUXQuaAorCisgICAgICAgICAgICBoYXZl
UXQoNCkgeworICAgICAgICAgICAgICAgIFNPVVJDRVMgKz0gcGx1Z2lucy9xdC9QbHVnaW5Db250
YWluZXJRdC5jcHAKKyAgICAgICAgICAgICAgICBIRUFERVJTICs9IHBsdWdpbnMvcXQvUGx1Z2lu
Q29udGFpbmVyUXQuaAorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJpCmluZGV4IGI0MzBmY2IzZjg5ZTM3YTRiNzU1MzU1ZWRlNGFiMmJjNDIyY2MyYTAuLjFkMTFi
ZDE5YjYyZTBmMjIxZmFlYzA4M2QzZjM1YzgzYjJhNmE4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC0x
MzQsNyArMTM0LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9B
UEk9MSkgewogICAgICAgICAgICAgSU5DTFVERVBBVEggKz0gcGxhdGZvcm0vbWFjCiAgICAgICAg
ICAgICAjIE5vdGU6IFhQX01BQ09TWCBpcyBkZWZpbmVkIGluIG5wYXBpLmgKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICFlbWJlZGRlZCB7CisgICAgICAgICAgICB4bGliQXZhaWxhYmxl
KCkgewogICAgICAgICAgICAgICAgIENPTkZJRyArPSB4MTEKICAgICAgICAgICAgICAgICBMSUJT
ICs9IC1sWHJlbmRlcgogICAgICAgICAgICAgICAgIERFRklORVMgKz0gTU9aX1gxMQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1FXZWJQYWdlQ2xpZW50LmgKaW5kZXggMzBjM2I0OGVhNjE5
Njk2NTgzM2FlZWRhNWZiMTliNGI5YTUwZjZmYy4uNDdkMzcyNzM5NTQyMjY4ODlkOGQ5NWY1OWM1
NmE2NzA4ZTk3YmJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUVdl
YlBhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RV2ViUGFnZUNs
aWVudC5oCkBAIC00Myw2ICs0Myw3IEBACiAKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVN0
eWxlOworY2xhc3MgUVdpbmRvdzsKIFFUX0VORF9OQU1FU1BBQ0UKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtOTMsNiArOTQsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUVdpZGdldCogb3du
ZXJXaWRnZXQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBRUmVjdCBnZW9tZXRyeVJlbGF0aXZl
VG9Pd25lcldpZGdldCgpIGNvbnN0ID0gMDsKIAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lP
Tl9DSEVDSyg1LCAwLCAwKQorICAgIHZpcnR1YWwgUVdpbmRvdyogb3duZXJXaW5kb3coKSBjb25z
dCA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgUU9iamVjdCogcGx1Z2luUGFyZW50KCkgY29u
c3QgPSAwOwogCiAgICAgdmlydHVhbCBRU3R5bGUqIHN0eWxlKCkgY29uc3QgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAxMTI4NTIyZDAyMWY4MWE4YmY1ZmRlMWRkNzYx
YzM2MGQ0OGMxZjUyLi5lMzQ0MmZmNTBjMmM5YzYyOGNlYjEzYTQ4MDZlMGNhZDdmMjVhN2IxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDI2LDYgKzQyNiw3IEBAIHByaXZh
dGU6CiAgICAgICAgIHN0YXRpYyBib29sIHNfaXNSdW5uaW5nVW5kZXJEUlQ7CiAgICAgICAgIHN0
YXRpYyB2b2lkIHNldFhLZXlFdmVudFNwZWNpZmljRmllbGRzKFhFdmVudCosIEtleWJvYXJkRXZl
bnQqKTsKICAgICAgICAgdm9pZCBwYWludFVzaW5nWFBpeG1hcChRUGFpbnRlciogcGFpbnRlciwg
Y29uc3QgUVJlY3QgJmV4cG9zZWRSZWN0KTsKKyAgICAgICAgUVdlYlBhZ2VDbGllbnQqIHBsYXRm
b3JtUGFnZUNsaWVudCgpIGNvbnN0OwogI2VuZGlmCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HX1BMVUdJTl9MQVlFUikKICAgICAgICAgT3duUHRyPFBsYXRmb3JtTGF5ZXI+IG1fcGxh
dGZvcm1MYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2lu
UGFja2FnZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0
LmNwcAppbmRleCA0ZTlhNzE3Yjg2ZjFjNWJkYzMyZTEyYWE5NTMzMTk0OWMyNzBiYWY4Li5iOTgy
NGZhZTBjNjY1MjA1MjgwMzU1N2MxZjFkY2VlZGRhZWI5MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblBhY2thZ2VRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgogI2lu
Y2x1ZGUgIlBsdWdpbkRlYnVnLmgiCisjaW5jbHVkZSA8UUZpbGVJbmZvPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTI5LDYgKzEzMCwy
MyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplR3RrKFFMaWJyYXJ5KiBtb2R1bGUgPSAwKQogICAg
IH0KIH0KIAorYm9vbCBQbHVnaW5QYWNrYWdlOjppc1BsdWdpbkJsYWNrbGlzdGVkKCkKK3sKKyNp
ZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNSwgMCwgMCkKKyAgICAvLyBUT0RPOiBl
bnVtZXJhdGUgYWxsIHBsdWdpbnMgdGhhdCBhcmUgaW5jb21wYXRpYmxlIHdpdGggUXQ1LgorICAg
IGNvbnN0IFFMYXRpbjFTdHJpbmcgcGx1Z2luQmxhY2tsaXN0W10gPSB7CisgICAgICAgIFFMYXRp
bjFTdHJpbmcoInNreXBlYnV0dG9ucyIpCisgICAgfTsKKworICAgIFFTdHJpbmcgYmFzZU5hbWUg
PSBRRmlsZUluZm8oc3RhdGljX2Nhc3Q8UVN0cmluZz4obV9wYXRoKSkuYmFzZU5hbWUoKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZW9mKHBsdWdpbkJsYWNrbGlzdCkgLyBzaXpl
b2YoUUxhdGluMVN0cmluZyk7ICsraSkgeworICAgICAgICBpZiAoYmFzZU5hbWUgPT0gcGx1Z2lu
QmxhY2tsaXN0W2ldKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIFBsdWdpblBhY2thZ2U6OmxvYWQoKQogewogICAg
IGlmIChtX2lzTG9hZGVkKSB7CkBAIC0xMzYsNiArMTU0LDkgQEAgYm9vbCBQbHVnaW5QYWNrYWdl
Ojpsb2FkKCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgaWYgKGlzUGx1Z2lu
QmxhY2tsaXN0ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgbV9tb2R1bGUgPSBu
ZXcgUUxpYnJhcnkoKFFTdHJpbmcpbV9wYXRoKTsKICAgICBtX21vZHVsZS0+c2V0TG9hZEhpbnRz
KFFMaWJyYXJ5OjpSZXNvbHZlQWxsU3ltYm9sc0hpbnQpOwogICAgIGlmICghbV9tb2R1bGUtPmxv
YWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3
UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCmluZGV4
IGFjMzFjZjAwMjZlZDQ4MmI1M2I3Y2YzYjdkZWNmZTEyMjczMWUwNjYuLjUzMTVjNTM4NjlmZjc1
NjZlOWJhZTY4NDU4MzZlMWFkNGQ0YmQzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0
L1BsdWdpblZpZXdRdC5jcHAKQEAgLTU4LDcgKzU4LDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50LmgiCi0jaW5jbHVkZSAiUGx1Z2luQ29udGFpbmVyUXQuaCIKICNpbmNsdWRlICJQbHVn
aW5EZWJ1Zy5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKICNpbmNsdWRlICJQbHVnaW5N
YWluVGhyZWFkU2NoZWR1bGVyLmgiCkBAIC02OSwxNSArNjgsOCBAQAogI2lmIFVTRShKU0MpCiAj
aW5jbHVkZSAicnVudGltZV9yb290LmgiCiAjZW5kaWYKLQotI2luY2x1ZGUgPFFBcHBsaWNhdGlv
bj4KLSNpbmNsdWRlIDxRRGVza3RvcFdpZGdldD4KLSNpbmNsdWRlIDxRR3JhcGhpY3NXaWRnZXQ+
CiAjaW5jbHVkZSA8UUtleUV2ZW50PgogI2luY2x1ZGUgPFFQYWludGVyPgotI2luY2x1ZGUgPFFT
dHlsZU9wdGlvbkdyYXBoaWNzSXRlbT4KLSNpbmNsdWRlIDxRV2lkZ2V0PgotI2luY2x1ZGUgPFFY
MTFJbmZvPgogI2luY2x1ZGUgPFgxMS9YLmg+CiAjaWZuZGVmIFFUX05PX1hSRU5ERVIKICNkZWZp
bmUgQm9vbCBpbnQKQEAgLTg3LDYgKzc5LDIzIEBACiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2su
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KIAorI2RlZmluZSBIQVZFX1FUNSAoUVRf
VkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApKQorCisjaWYgSEFWRShRVDUpCisj
aW5jbHVkZSAiUXRYMTFJbWFnZUNvbnZlcnNpb24uaCIKKyNpbmNsdWRlIDxRR3VpQXBwbGljYXRp
b24+CisjaW5jbHVkZSA8UVBsYXRmb3JtTmF0aXZlSW50ZXJmYWNlPgorI2luY2x1ZGUgPFFXaW5k
b3c+CisjZWxzZQorI2luY2x1ZGUgIlBsdWdpbkNvbnRhaW5lclF0LmgiCisjaW5jbHVkZSA8UUFw
cGxpY2F0aW9uPgorI2luY2x1ZGUgPFFEZXNrdG9wV2lkZ2V0PgorI2luY2x1ZGUgPFFHcmFwaGlj
c1dpZGdldD4KKyNpbmNsdWRlIDxRU3R5bGVPcHRpb25HcmFwaGljc0l0ZW0+CisjaW5jbHVkZSA8
UVdpZGdldD4KKyNpbmNsdWRlIDxRWDExSW5mbz4KKyNlbmRpZgorCiB1c2luZyBKU0M6OkV4ZWNT
dGF0ZTsKICNpZiBVU0UoSlNDKQogdXNpbmcgSlNDOjpJbnRlcnByZXRlcjsKQEAgLTEwNSw3ICsx
MTQsMzcgQEAgYm9vbCBQbHVnaW5WaWV3OjpzX2lzUnVubmluZ1VuZGVyRFJUID0gZmFsc2U7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCitzdHJ1Y3QgWDExRW52aXJvbm1lbnQgeworICAgIERpc3BsYXkqIGRpc3BsYXk7Cisg
ICAgaW50IHNjcmVlbklEOworICAgIHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lEOworICAgIGlu
dCBkaXNwbGF5RGVwdGg7Cit9OworCitzdGF0aWMgWDExRW52aXJvbm1lbnQgeDExRW52aXJvbm1l
bnQgPSB7IDAsIDAsIDAsIDAgfTsKKworc3RhdGljIGlubGluZSBEaXNwbGF5KiB4MTFEaXNwbGF5
KCkgeyByZXR1cm4geDExRW52aXJvbm1lbnQuZGlzcGxheTsgfQorc3RhdGljIGlubGluZSBpbnQg
eDExU2NyZWVuKCkgeyByZXR1cm4geDExRW52aXJvbm1lbnQuc2NyZWVuSUQ7IH0KK3N0YXRpYyBp
bmxpbmUgdW5zaWduZWQgbG9uZyByb290V2luZG93SUQoKSB7IHJldHVybiB4MTFFbnZpcm9ubWVu
dC5yb290V2luZG93SUQ7IH0KK3N0YXRpYyBpbmxpbmUgaW50IGRpc3BsYXlEZXB0aCgpIHsgcmV0
dXJuIHgxMUVudmlyb25tZW50LmRpc3BsYXlEZXB0aDsgfQorCitzdGF0aWMgaW5saW5lIHZvaWQg
c3luY1goKQoreworICAgIFhTeW5jKHgxMURpc3BsYXkoKSwgZmFsc2UpOworfQorCitRV2ViUGFn
ZUNsaWVudCogUGx1Z2luVmlldzo6cGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QKK3sKKyAgICBG
cmFtZVZpZXcqIHZpZXcgPSBtX3BhcmVudEZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQor
ICAgICAgICByZXR1cm4gMDsKKyAgICBIb3N0V2luZG93KiBob3N0V2luZG93ID0gdmlldy0+aG9z
dFdpbmRvdygpOworICAgIGlmICghaG9zdFdpbmRvdykKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIGhvc3RXaW5kb3ctPnBsYXRmb3JtUGFnZUNsaWVudCgpOworfQorCisjaWYgIUhBVkUo
UVQ1KSAmJiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAvLyBRdCdzIEdyYXBoaWNzTGF5
ZXIgKEdyYXBoaWNzTGF5ZXJRdCkgcmVxdWlyZXMgbGF5ZXJzIHRvIGJlIFFHcmFwaGljc1dpZGdl
dHMKIGNsYXNzIFBsdWdpbkdyYXBoaWNzTGF5ZXJRdCA6IHB1YmxpYyBRR3JhcGhpY3NXaWRnZXQg
ewogcHVibGljOgpAQCAtMTU0LDExICsxOTMsMTEgQEAgdm9pZCBQbHVnaW5WaWV3Ojp1cGRhdGVQ
bHVnaW5XaWRnZXQoKQogCiAgICAgaWYgKCFtX2lzV2luZG93ZWQgJiYgbV93aW5kb3dSZWN0LnNp
emUoKSAhPSBvbGRXaW5kb3dSZWN0LnNpemUoKSkgewogICAgICAgICBpZiAobV9kcmF3YWJsZSkK
LSAgICAgICAgICAgIFhGcmVlUGl4bWFwKFFYMTFJbmZvOjpkaXNwbGF5KCksIG1fZHJhd2FibGUp
OworICAgICAgICAgICAgWEZyZWVQaXhtYXAoeDExRGlzcGxheSgpLCBtX2RyYXdhYmxlKTsKIAot
ICAgICAgICBtX2RyYXdhYmxlID0gWENyZWF0ZVBpeG1hcChRWDExSW5mbzo6ZGlzcGxheSgpLCBR
WDExSW5mbzo6YXBwUm9vdFdpbmRvdygpLCBtX3dpbmRvd1JlY3Qud2lkdGgoKSwgbV93aW5kb3dS
ZWN0LmhlaWdodCgpLAorICAgICAgICBtX2RyYXdhYmxlID0gWENyZWF0ZVBpeG1hcCh4MTFEaXNw
bGF5KCksIHJvb3RXaW5kb3dJRCgpLCBtX3dpbmRvd1JlY3Qud2lkdGgoKSwgbV93aW5kb3dSZWN0
LmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE5QU2V0V2lu
ZG93Q2FsbGJhY2tTdHJ1Y3QqKW1fbnBXaW5kb3cud3NfaW5mbyktPmRlcHRoKTsKLSAgICAgICAg
UUFwcGxpY2F0aW9uOjpzeW5jWCgpOyAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgc2VydmVyIGtub3dz
IGFib3V0IHRoZSBEcmF3YWJsZQorICAgICAgICBzeW5jWCgpOyAvLyBtYWtlIHN1cmUgdGhhdCB0
aGUgc2VydmVyIGtub3dzIGFib3V0IHRoZSBEcmF3YWJsZQogICAgIH0KIAogICAgIC8vIGRvIG5v
dCBjYWxsIHNldE5QV2luZG93SWZOZWVkZWQgaW1tZWRpYXRlbHksIHdpbGwgYmUgY2FsbGVkIG9u
IHBhaW50KCkKQEAgLTE4NywxMiArMjI2LDEzIEBAIHZvaWQgUGx1Z2luVmlldzo6dXBkYXRlUGx1
Z2luV2lkZ2V0KCkKIAogdm9pZCBQbHVnaW5WaWV3OjpzZXRGb2N1cyhib29sIGZvY3VzZWQpCiB7
CisjaWYgIUhBVkUoUVQ1KSAvLyBXaW5kb3dlZCBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBR
dDUgeWV0IChzbyBwbGF0Zm9ybVBsdWdpbldpZGdldCgpIGlzIGFsd2F5cyBudWxsKS4KICAgICBp
ZiAocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkgewogICAgICAgICBpZiAoZm9jdXNlZCkKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PFFXaWRnZXQqPihwbGF0Zm9ybVBsdWdpbldpZGdldCgpKS0+c2V0
Rm9jdXMoUXQ6Ok90aGVyRm9jdXNSZWFzb24pOwotICAgIH0gZWxzZSB7CisgICAgfSBlbHNlCisj
ZW5kaWYKICAgICAgICAgV2lkZ2V0OjpzZXRGb2N1cyhmb2N1c2VkKTsKLSAgICB9CiB9CiAKIHZv
aWQgUGx1Z2luVmlldzo6c2hvdygpCkBAIC0yMDcsMTIgKzI0NywzMCBAQCB2b2lkIFBsdWdpblZp
ZXc6OmhpZGUoKQogICAgIFdpZGdldDo6aGlkZSgpOwogfQogCitzdGF0aWMgdm9pZCBzZXR1cEdy
YXBoaWNzRXhwb3NlRXZlbnQoUGl4bWFwIGRyYXdhYmxlLCBjb25zdCBRUmVjdCYgZXhwb3NlZFJl
Y3QsIFhFdmVudCYgeGV2ZW50KQoreworICAgIG1lbXNldCgmeGV2ZW50LCAwLCBzaXplb2YoWEV2
ZW50KSk7CisgICAgWEdyYXBoaWNzRXhwb3NlRXZlbnQmIGV4cG9zZUV2ZW50ID0geGV2ZW50Lnhn
cmFwaGljc2V4cG9zZTsKKyAgICBleHBvc2VFdmVudC50eXBlID0gR3JhcGhpY3NFeHBvc2U7Cisg
ICAgZXhwb3NlRXZlbnQuZGlzcGxheSA9IHgxMURpc3BsYXkoKTsKKyAgICBleHBvc2VFdmVudC5k
cmF3YWJsZSA9IGRyYXdhYmxlOworICAgIGV4cG9zZUV2ZW50LnggPSBleHBvc2VkUmVjdC54KCk7
CisgICAgZXhwb3NlRXZlbnQueSA9IGV4cG9zZWRSZWN0LnkoKTsKKyAgICBleHBvc2VFdmVudC53
aWR0aCA9IGV4cG9zZWRSZWN0LngoKSArIGV4cG9zZWRSZWN0LndpZHRoKCk7IC8vIGZsYXNoIGJ1
Zz8gaXQgdGhpbmtzIHdpZHRoIGlzIHRoZSByaWdodCBpbiB0cmFuc3BhcmVudCBtb2RlCisgICAg
ZXhwb3NlRXZlbnQuaGVpZ2h0ID0gZXhwb3NlZFJlY3QueSgpICsgZXhwb3NlZFJlY3QuaGVpZ2h0
KCk7IC8vIGZsYXNoIGJ1Zz8gaXQgdGhpbmtzIGhlaWdodCBpcyB0aGUgYm90dG9tIGluIHRyYW5z
cGFyZW50IG1vZGUKK30KKwogdm9pZCBQbHVnaW5WaWV3OjpwYWludFVzaW5nWFBpeG1hcChRUGFp
bnRlciogcGFpbnRlciwgY29uc3QgUVJlY3QgJmV4cG9zZWRSZWN0KQogeworICAgIGJvb2wgc2hv
dWxkU3luY1ggPSBtX3BsdWdpbkRpc3BsYXkgJiYgbV9wbHVnaW5EaXNwbGF5ICE9IHgxMURpc3Bs
YXkoKTsKKyAgICBYRXZlbnQgeGV2ZW50OworCisjaWYgSEFWRShRVDUpCisgICAgc2V0dXBHcmFw
aGljc0V4cG9zZUV2ZW50KG1fZHJhd2FibGUsIGV4cG9zZWRSZWN0LCB4ZXZlbnQpOworI2Vsc2UK
ICAgICBRUGl4bWFwIHF0RHJhd2FibGUgPSBRUGl4bWFwOjpmcm9tWDExUGl4bWFwKG1fZHJhd2Fi
bGUsIFFQaXhtYXA6OkV4cGxpY2l0bHlTaGFyZWQpOwogICAgIGNvbnN0IGludCBkcmF3YWJsZURl
cHRoID0gKChOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiltX25wV2luZG93LndzX2luZm8pLT5k
ZXB0aDsKICAgICBBU1NFUlQoZHJhd2FibGVEZXB0aCA9PSBxdERyYXdhYmxlLmRlcHRoKCkpOwot
ICAgIGNvbnN0IGJvb2wgc3luY1ggPSBtX3BsdWdpbkRpc3BsYXkgJiYgbV9wbHVnaW5EaXNwbGF5
ICE9IFFYMTFJbmZvOjpkaXNwbGF5KCk7CiAKICAgICAvLyBXaGVuIHByaW50aW5nLCBRdCB1c2Vz
IGEgUVBpY3R1cmUgdG8gY2FwdHVyZSB0aGUgb3V0cHV0IGluIHByZXZpZXcgbW9kZS4gVGhlCiAg
ICAgLy8gUVBpY3R1cmUgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIFggUGl4bWFwLiBBcyBhIHJl
c3VsdCwgdGhlIHByaW50IHByZXZpZXcgd291bGQKQEAgLTIzMiw3ICsyOTAsNyBAQCB2b2lkIFBs
dWdpblZpZXc6OnBhaW50VXNpbmdYUGl4bWFwKFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRUmVj
dCAmZXhwb3NlZFJlY3QpCiAgICAgICAgIC8vIFdlIGNhbm5vdCBncmFiIGNvbnRlbnRzIGZyb20g
dGhlIGJhY2tpbmcgc3RvcmUgd2hlbiBwYWludGluZyBvbiBRR3JhcGhpY3NWaWV3IGl0ZW1zCiAg
ICAgICAgIC8vIChiZWNhdXNlIGJhY2tpbmcgc3RvcmUgY29udGVudHMgYXJlIGFscmVhZHkgdHJh
bnNmb3JtZWQpLiBXaGF0IHdlIHJlYWxseSBtZWFuIHRvIGRvIAogICAgICAgICAvLyBoZXJlIGlz
IHRvIGNoZWNrIGlmIHdlIGFyZSBwYWludGluZyBvbiBRV2ViVmlldywgYnV0IGxldCdzIGJlIGEg
bGl0dGxlIHBlcm1pc3NpdmUgOikKLSAgICAgICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IG1f
cGFyZW50RnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsK
KyAgICAgICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IHBsYXRmb3JtUGFnZUNsaWVudCgpOwog
ICAgICAgICBjb25zdCBib29sIGJhY2tpbmdTdG9yZUhhc1VudHJhbnNmb3JtZWRDb250ZW50cyA9
IGNsaWVudCAmJiBxb2JqZWN0X2Nhc3Q8UVdpZGdldCo+KGNsaWVudC0+cGx1Z2luUGFyZW50KCkp
OwogCiAgICAgICAgIGlmIChoYXNWYWxpZEJhY2tpbmdTdG9yZSAmJiBiYWNraW5nU3RvcmVQaXht
YXAtPmRlcHRoKCkgPT0gZHJhd2FibGVEZXB0aCAKQEAgLTI0NiwyNyArMzA0LDI2IEBAIHZvaWQg
UGx1Z2luVmlldzo6cGFpbnRVc2luZ1hQaXhtYXAoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFS
ZWN0ICZleHBvc2VkUmVjdCkKICAgICAgICAgICAgIHBhaW50ZXIuZmlsbFJlY3QoZXhwb3NlZFJl
Y3QsIFF0Ojp3aGl0ZSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc3luY1gpCi0gICAgICAg
ICAgICBRQXBwbGljYXRpb246OnN5bmNYKCk7CisgICAgICAgIGlmIChzaG91bGRTeW5jWCkKKyAg
ICAgICAgICAgIHN5bmNYKCk7CiAgICAgfQogCi0gICAgWEV2ZW50IHhldmVudDsKLSAgICBtZW1z
ZXQoJnhldmVudCwgMCwgc2l6ZW9mKFhFdmVudCkpOwotICAgIFhHcmFwaGljc0V4cG9zZUV2ZW50
JiBleHBvc2VFdmVudCA9IHhldmVudC54Z3JhcGhpY3NleHBvc2U7Ci0gICAgZXhwb3NlRXZlbnQu
dHlwZSA9IEdyYXBoaWNzRXhwb3NlOwotICAgIGV4cG9zZUV2ZW50LmRpc3BsYXkgPSBRWDExSW5m
bzo6ZGlzcGxheSgpOwotICAgIGV4cG9zZUV2ZW50LmRyYXdhYmxlID0gcXREcmF3YWJsZS5oYW5k
bGUoKTsKLSAgICBleHBvc2VFdmVudC54ID0gZXhwb3NlZFJlY3QueCgpOwotICAgIGV4cG9zZUV2
ZW50LnkgPSBleHBvc2VkUmVjdC55KCk7Ci0gICAgZXhwb3NlRXZlbnQud2lkdGggPSBleHBvc2Vk
UmVjdC54KCkgKyBleHBvc2VkUmVjdC53aWR0aCgpOyAvLyBmbGFzaCBidWc/IGl0IHRoaW5rcyB3
aWR0aCBpcyB0aGUgcmlnaHQgaW4gdHJhbnNwYXJlbnQgbW9kZQotICAgIGV4cG9zZUV2ZW50Lmhl
aWdodCA9IGV4cG9zZWRSZWN0LnkoKSArIGV4cG9zZWRSZWN0LmhlaWdodCgpOyAvLyBmbGFzaCBi
dWc/IGl0IHRoaW5rcyBoZWlnaHQgaXMgdGhlIGJvdHRvbSBpbiB0cmFuc3BhcmVudCBtb2RlCisg
ICAgc2V0dXBHcmFwaGljc0V4cG9zZUV2ZW50KHF0RHJhd2FibGUuaGFuZGxlKCksIGV4cG9zZWRS
ZWN0LCB4ZXZlbnQpOworI2VuZGlmCiAKICAgICBkaXNwYXRjaE5QRXZlbnQoeGV2ZW50KTsKIAot
ICAgIGlmIChzeW5jWCkKKyAgICBpZiAoc2hvdWxkU3luY1gpCiAgICAgICAgIFhTeW5jKG1fcGx1
Z2luRGlzcGxheSwgZmFsc2UpOyAvLyBzeW5jIGNoYW5nZXMgYnkgcGx1Z2luCiAKKyNpZiBIQVZF
KFFUNSkKKyAgICBYSW1hZ2UqIHhJbWFnZSA9IFhHZXRJbWFnZSh4MTFEaXNwbGF5KCksIG1fZHJh
d2FibGUsIGV4cG9zZWRSZWN0LngoKSwgZXhwb3NlZFJlY3QueSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4cG9zZWRSZWN0LndpZHRoKCksIGV4cG9zZWRSZWN0LmhlaWdodCgp
LCBVTE9OR19NQVgsIFpQaXhtYXApOworICAgIHBhaW50ZXItPmRyYXdJbWFnZShRUG9pbnQoZXhw
b3NlZFJlY3QueCgpLCBleHBvc2VkUmVjdC55KCkpLCBxaW1hZ2VGcm9tWEltYWdlKHhJbWFnZSks
IGV4cG9zZWRSZWN0KTsKKyAgICBYRGVzdHJveUltYWdlKHhJbWFnZSk7CisjZWxzZQogICAgIHBh
aW50ZXItPmRyYXdQaXhtYXAoUVBvaW50KGV4cG9zZWRSZWN0LngoKSwgZXhwb3NlZFJlY3QueSgp
KSwgcXREcmF3YWJsZSwgZXhwb3NlZFJlY3QpOworI2VuZGlmCiB9CiAKIHZvaWQgUGx1Z2luVmll
dzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpA
QCAtMzMxLDI0ICszODgsMjkgQEAgYm9vbCBQbHVnaW5WaWV3OjpkaXNwYXRjaE5QRXZlbnQoTlBF
dmVudCYgZXZlbnQpCiAgICAgcmV0dXJuIGFjY2VwdGVkOwogfQogCi12b2lkIHNldFNoYXJlZFhF
dmVudEZpZWxkcyhYRXZlbnQqIHhFdmVudCwgUVdpZGdldCogb3duZXJXaWRnZXQpCit2b2lkIHNl
dFNoYXJlZFhFdmVudEZpZWxkcyhYRXZlbnQqIHhFdmVudCwgUVdlYlBhZ2VDbGllbnQqIHBhZ2VD
bGllbnQpCiB7CiAgICAgeEV2ZW50LT54YW55LnNlcmlhbCA9IDA7IC8vIHdlIGFyZSB1bmF3YXJl
IG9mIHRoZSBsYXN0IHJlcXVlc3QgcHJvY2Vzc2VkIGJ5IFggU2VydmVyCiAgICAgeEV2ZW50LT54
YW55LnNlbmRfZXZlbnQgPSBmYWxzZTsKLSAgICB4RXZlbnQtPnhhbnkuZGlzcGxheSA9IFFYMTFJ
bmZvOjpkaXNwbGF5KCk7CisgICAgeEV2ZW50LT54YW55LmRpc3BsYXkgPSB4MTFEaXNwbGF5KCk7
CiAgICAgLy8gTk9URTogZXZlbnQtPnhhbnkud2luZG93IGRvZXNuJ3QgYWx3YXlzIHJlc3BvbmQg
dG8gdGhlIC53aW5kb3cgcHJvcGVydHkgb2Ygb3RoZXIgWEV2ZW50J3MKICAgICAvLyBidXQgZG9l
cyBpbiB0aGUgY2FzZSBvZiBLZXlQcmVzcywgS2V5UmVsZWFzZSwgQnV0dG9uUHJlc3MsIEJ1dHRv
blJlbGVhc2UsIGFuZCBNb3Rpb25Ob3RpZnkKICAgICAvLyBldmVudHM7IHRodXMsIHRoaXMgaXMg
cmlnaHQ6Ci0gICAgeEV2ZW50LT54YW55LndpbmRvdyA9IG93bmVyV2lkZ2V0ID8gb3duZXJXaWRn
ZXQtPndpbmRvdygpLT5oYW5kbGUoKSA6IDA7CisjaWYgSEFWRShRVDUpCisgICAgUVdpbmRvdyog
d2luZG93ID0gcGFnZUNsaWVudCA/IHBhZ2VDbGllbnQtPm93bmVyV2luZG93KCkgOiAwOworICAg
IHhFdmVudC0+eGFueS53aW5kb3cgPSB3aW5kb3cgPyB3aW5kb3ctPndpbklkKCkgOiAwOworI2Vs
c2UKKyAgICBRV2lkZ2V0KiBvd25lcldpZGdldCA9IHBhZ2VDbGllbnQgPyBwYWdlQ2xpZW50LT5v
d25lcldpZGdldCgpIDogMDsKKyAgICB4RXZlbnQtPnhhbnkud2luZG93ID0gb3duZXJXaWRnZXQg
PyBvd25lcldpZGdldC0+d2luZG93KCktPndpbklkKCkgOiAwOworI2VuZGlmCiB9CiAKIHZvaWQg
UGx1Z2luVmlldzo6aW5pdFhFdmVudChYRXZlbnQqIHhFdmVudCkKIHsKICAgICBtZW1zZXQoeEV2
ZW50LCAwLCBzaXplb2YoWEV2ZW50KSk7CiAKLSAgICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0g
bV9wYXJlbnRGcmFtZS0+dmlldygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgp
OwotICAgIFFXaWRnZXQqIG93bmVyV2lkZ2V0ID0gY2xpZW50ID8gY2xpZW50LT5vd25lcldpZGdl
dCgpIDogMDsKLSAgICBzZXRTaGFyZWRYRXZlbnRGaWVsZHMoeEV2ZW50LCBvd25lcldpZGdldCk7
CisgICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IHBsYXRmb3JtUGFnZUNsaWVudCgpOworICAg
IHNldFNoYXJlZFhFdmVudEZpZWxkcyh4RXZlbnQsIGNsaWVudCk7CiB9CiAKIHZvaWQgUGx1Z2lu
Vmlldzo6c2V0WEtleUV2ZW50U3BlY2lmaWNGaWVsZHMoWEV2ZW50KiB4RXZlbnQsIEtleWJvYXJk
RXZlbnQqIGV2ZW50KQpAQCAtMzU2LDcgKzQxOCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0WEtl
eUV2ZW50U3BlY2lmaWNGaWVsZHMoWEV2ZW50KiB4RXZlbnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50
CiAgICAgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50KiBrZXlFdmVudCA9IGV2ZW50LT5rZXlF
dmVudCgpOwogCiAgICAgeEV2ZW50LT50eXBlID0gKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmtleWRvd25FdmVudCkgPyAyIDogMzsgLy8gaW50cyBhcyBRdCB1bnNldHMgS2V5UHJlc3Mg
YW5kIEtleVJlbGVhc2UKLSAgICB4RXZlbnQtPnhrZXkucm9vdCA9IFFYMTFJbmZvOjphcHBSb290
V2luZG93KCk7CisgICAgeEV2ZW50LT54a2V5LnJvb3QgPSByb290V2luZG93SUQoKTsKICAgICB4
RXZlbnQtPnhrZXkuc3Vid2luZG93ID0gMDsgLy8gd2UgaGF2ZSBubyBjaGlsZCB3aW5kb3cKICAg
ICB4RXZlbnQtPnhrZXkudGltZSA9IGV2ZW50LT50aW1lU3RhbXAoKTsKICAgICB4RXZlbnQtPnhr
ZXkuc3RhdGUgPSBrZXlFdmVudC0+bmF0aXZlTW9kaWZpZXJzKCk7CkBAIC0zNzAsNyArNDMyLDcg
QEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRYS2V5RXZlbnRTcGVjaWZpY0ZpZWxkcyhYRXZlbnQqIHhF
dmVudCwgS2V5Ym9hcmRFdmVudCogZXZlbnQKICAgICAgICAgUUtleUV2ZW50KiBxS2V5RXZlbnQg
PSBrZXlFdmVudC0+cXRFdmVudCgpOwogICAgICAgICBBU1NFUlQocUtleUV2ZW50KTsKICAgICAg
ICAgUVN0cmluZyBrZXlUZXh0ID0gcUtleUV2ZW50LT50ZXh0KCkubGVmdCgxKTsKLSAgICAgICAg
eEV2ZW50LT54a2V5LmtleWNvZGUgPSBYS2V5c3ltVG9LZXljb2RlKFFYMTFJbmZvOjpkaXNwbGF5
KCksIFhTdHJpbmdUb0tleXN5bShrZXlUZXh0LnRvVXRmOCgpLmNvbnN0RGF0YSgpKSk7CisgICAg
ICAgIHhFdmVudC0+eGtleS5rZXljb2RlID0gWEtleXN5bVRvS2V5Y29kZSh4MTFEaXNwbGF5KCks
IFhTdHJpbmdUb0tleXN5bShrZXlUZXh0LnRvVXRmOCgpLmNvbnN0RGF0YSgpKSk7CiAgICAgfQog
CiAgICAgeEV2ZW50LT54a2V5LnNhbWVfc2NyZWVuID0gdHJ1ZTsKQEAgLTQxOSw3ICs0ODEsNyBA
QCBzdGF0aWMgdm9pZCBzZXRYQnV0dG9uRXZlbnRTcGVjaWZpY0ZpZWxkcyhYRXZlbnQqIHhFdmVu
dCwgTW91c2VFdmVudCogZXZlbnQsIGNvbgogewogICAgIFhCdXR0b25FdmVudCYgeGJ1dHRvbiA9
IHhFdmVudC0+eGJ1dHRvbjsKICAgICB4YnV0dG9uLnR5cGUgPSBldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCA/IEJ1dHRvblByZXNzIDogQnV0dG9uUmVsZWFzZTsK
LSAgICB4YnV0dG9uLnJvb3QgPSBRWDExSW5mbzo6YXBwUm9vdFdpbmRvdygpOworICAgIHhidXR0
b24ucm9vdCA9IHJvb3RXaW5kb3dJRCgpOwogICAgIHhidXR0b24uc3Vid2luZG93ID0gMDsKICAg
ICB4YnV0dG9uLnRpbWUgPSBldmVudC0+dGltZVN0YW1wKCk7CiAgICAgeGJ1dHRvbi54ID0gcG9z
dFpvb21Qb3MueCgpOwpAQCAtNDQ2LDcgKzUwOCw3IEBAIHN0YXRpYyB2b2lkIHNldFhNb3Rpb25F
dmVudFNwZWNpZmljRmllbGRzKFhFdmVudCogeEV2ZW50LCBNb3VzZUV2ZW50KiBldmVudCwgY29u
CiB7CiAgICAgWE1vdGlvbkV2ZW50JiB4bW90aW9uID0geEV2ZW50LT54bW90aW9uOwogICAgIHht
b3Rpb24udHlwZSA9IE1vdGlvbk5vdGlmeTsKLSAgICB4bW90aW9uLnJvb3QgPSBRWDExSW5mbzo6
YXBwUm9vdFdpbmRvdygpOworICAgIHhtb3Rpb24ucm9vdCA9IHJvb3RXaW5kb3dJRCgpOwogICAg
IHhtb3Rpb24uc3Vid2luZG93ID0gMDsKICAgICB4bW90aW9uLnRpbWUgPSBldmVudC0+dGltZVN0
YW1wKCk7CiAgICAgeG1vdGlvbi54ID0gcG9zdFpvb21Qb3MueCgpOwpAQCAtNDYyLDcgKzUyNCw3
IEBAIHN0YXRpYyB2b2lkIHNldFhDcm9zc2luZ0V2ZW50U3BlY2lmaWNGaWVsZHMoWEV2ZW50KiB4
RXZlbnQsIE1vdXNlRXZlbnQqIGV2ZW50LCBjCiB7CiAgICAgWENyb3NzaW5nRXZlbnQmIHhjcm9z
c2luZyA9IHhFdmVudC0+eGNyb3NzaW5nOwogICAgIHhjcm9zc2luZy50eXBlID0gZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQgPyBFbnRlck5vdGlmeSA6IExlYXZl
Tm90aWZ5OwotICAgIHhjcm9zc2luZy5yb290ID0gUVgxMUluZm86OmFwcFJvb3RXaW5kb3coKTsK
KyAgICB4Y3Jvc3Npbmcucm9vdCA9IHJvb3RXaW5kb3dJRCgpOwogICAgIHhjcm9zc2luZy5zdWJ3
aW5kb3cgPSAwOwogICAgIHhjcm9zc2luZy50aW1lID0gZXZlbnQtPnRpbWVTdGFtcCgpOwogICAg
IHhjcm9zc2luZy54ID0gcG9zdFpvb21Qb3MueSgpOwpAQCAtNTcxLDYgKzYzMyw3IEBAIHZvaWQg
UGx1Z2luVmlldzo6c2V0TlBXaW5kb3dJZk5lZWRlZCgpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2hhc1BlbmRpbmdHZW9tZXRyeUNoYW5nZSA9IGZhbHNlOwogCisjaWYgIUhBVkUoUVQ1KSAvLyBX
aW5kb3dlZCBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBRdDUgeWV0CiAgICAgaWYgKG1faXNX
aW5kb3dlZCkgewogICAgICAgICBRV2lkZ2V0KiB3aWRnZXQgPSBzdGF0aWNfY2FzdDxRV2lkZ2V0
Kj4ocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSk7CiAgICAgICAgIHdpZGdldC0+c2V0R2VvbWV0cnko
bV93aW5kb3dSZWN0KTsKQEAgLTU5MCw3ICs2NTMsOSBAQCB2b2lkIFBsdWdpblZpZXc6OnNldE5Q
V2luZG93SWZOZWVkZWQoKQogCiAgICAgICAgIG1fbnBXaW5kb3cueCA9IG1fd2luZG93UmVjdC54
KCk7CiAgICAgICAgIG1fbnBXaW5kb3cueSA9IG1fd2luZG93UmVjdC55KCk7Ci0gICAgfSBlbHNl
IHsKKyAgICB9IGVsc2UKKyNlbmRpZgorICAgIHsKICAgICAgICAgbV9ucFdpbmRvdy54ID0gMDsK
ICAgICAgICAgbV9ucFdpbmRvdy55ID0gMDsKICAgICB9CkBAIC02MzksOCArNzA0LDEwIEBAIHZv
aWQgUGx1Z2luVmlldzo6c2V0UGFyZW50VmlzaWJsZShib29sIHZpc2libGUpCiAKICAgICBXaWRn
ZXQ6OnNldFBhcmVudFZpc2libGUodmlzaWJsZSk7CiAKKyNpZiAhSEFWRShRVDUpIC8vIFdpbmRv
d2VkIG1vZGUgaXMgbm90IHN1cHBvcnRlZCB3aXRoIFF0NSB5ZXQuCiAgICAgaWYgKGlzU2VsZlZp
c2libGUoKSAmJiBwbGF0Zm9ybVBsdWdpbldpZGdldCgpKQogICAgICAgICBzdGF0aWNfY2FzdDxR
V2lkZ2V0Kj4ocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSktPnNldFZpc2libGUodmlzaWJsZSk7Cisj
ZW5kaWYKIH0KIAogTlBFcnJvciBQbHVnaW5WaWV3OjpoYW5kbGVQb3N0UmVhZEZpbGUoVmVjdG9y
PGNoYXI+JiBidWZmZXIsIHVpbnQzMl90IGxlbiwgY29uc3QgY2hhciogYnVmKQpAQCAtNzAxLDcg
Kzc2OCw3IEBAIGJvb2wgUGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZShOUE5WYXJpYWJsZSB2
YXJpYWJsZSwgdm9pZCogdmFsdWUsIE5QRXJyb3IqIHJlCiB7CiAgICAgc3dpdGNoICh2YXJpYWJs
ZSkgewogICAgIGNhc2UgTlBOVnhEaXNwbGF5OgotICAgICAgICAqKHZvaWQgKiopdmFsdWUgPSBR
WDExSW5mbzo6ZGlzcGxheSgpOworICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHZh
bHVlKSA9IHgxMURpc3BsYXkoKTsKICAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNzEwLDkgKzc3NywxMyBAQCBib29sIFBsdWdpblZp
ZXc6OnBsYXRmb3JtR2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlLCBO
UEVycm9yKiByZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgTlBOVm5ldHNjYXBl
V2luZG93OiB7Ci0gICAgICAgIHZvaWQqIHcgPSByZWludGVycHJldF9jYXN0PHZvaWQqPih2YWx1
ZSk7Ci0gICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBtX3BhcmVudEZyYW1lLT52aWV3
KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7Ci0gICAgICAgICooKFhJRCAq
KXcpID0gY2xpZW50ID8gY2xpZW50LT5vd25lcldpZGdldCgpLT53aW5kb3coKS0+d2luSWQoKSA6
IDA7CisgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBwbGF0Zm9ybVBhZ2VDbGllbnQo
KTsKKyNpZiBIQVZFKFFUNSkKKyAgICAgICAgUVdpbmRvdyogd2luZG93ID0gY2xpZW50ID8gY2xp
ZW50LT5vd25lcldpbmRvdygpIDogMDsKKyAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8WElEKj4o
dmFsdWUpID0gd2luZG93ID8gd2luZG93LT53aW5JZCgpIDogMDsKKyNlbHNlCisgICAgICAgICpy
ZWludGVycHJldF9jYXN0PFhJRCo+KHZhbHVlKSA9IGNsaWVudCA/IGNsaWVudC0+b3duZXJXaWRn
ZXQoKS0+d2luZG93KCktPndpbklkKCkgOiAwOworI2VuZGlmCiAgICAgICAgICpyZXN1bHQgPSBO
UEVSUl9OT19FUlJPUjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNzM5LDYgKzgx
MCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVj
dCkKICAgICB9CiAjZW5kaWYKIAorI2lmICFIQVZFKFFUNSkgLy8gV2luZG93ZWQgbW9kZSBpcyBu
b3Qgc3VwcG9ydGVkIHdpdGggUXQ1IHlldC4KICAgICBpZiAobV9pc1dpbmRvd2VkKSB7CiAgICAg
ICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKSB7CiAgICAgICAgICAgICAvLyB1cGRhdGUoKSB3aWxs
IHNjaGVkdWxlIGEgcmVwYWludCBvZiB0aGUgd2lkZ2V0IHNvIGVuc3VyZQpAQCAtNzQ5LDYgKzgy
MSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVj
dCkKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmCiAKICAgICBpbnZh
bGlkYXRlV2luZG93bGVzc1BsdWdpblJlY3QocmVjdCk7CiB9CkBAIC04MDMsNDcgKzg3Niw1MyBA
QCBzdGF0aWMgRGlzcGxheSAqZ2V0UGx1Z2luRGlzcGxheSgpCiAgICAgcmV0dXJuIChEaXNwbGF5
KilnZGtfeDExX2Rpc3BsYXlfZ2V0X3hkaXNwbGF5KGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkp
OwogfQogCi1zdGF0aWMgdm9pZCBnZXRWaXN1YWxBbmRDb2xvcm1hcChpbnQgZGVwdGgsIFZpc3Vh
bCAqKnZpc3VhbCwgQ29sb3JtYXAgKmNvbG9ybWFwKQorc3RhdGljIGJvb2wgZ2V0VmlzdWFsQW5k
Q29sb3JtYXAoaW50IGRlcHRoLCBWaXN1YWwqJiB2aXN1YWwsIENvbG9ybWFwJiBjb2xvcm1hcCwg
Ym9vbCBmb3JjZUFSR0IzMikKIHsKLSAgICAqdmlzdWFsID0gMDsKLSAgICAqY29sb3JtYXAgPSAw
OworICAgIEFTU0VSVChkZXB0aCA9PSAzMiB8fCAhZm9yY2VBUkdCMzIpOwogCi0jaWZuZGVmIFFU
X05PX1hSRU5ERVIKKyAgICB2aXN1YWwgPSAwOworICAgIGNvbG9ybWFwID0gMDsKKworI2lmICFI
QVZFKFFUNSkgJiYgIWRlZmluZWQoUVRfTk9fWFJFTkRFUikKICAgICBzdGF0aWMgY29uc3QgYm9v
bCB1c2VYUmVuZGVyID0gcWdldGVudigiUVRfWDExX05PX1hSRU5ERVIiKS5pc051bGwoKTsgLy8g
U2hvdWxkIGFsc28gY2hlY2sgZm9yIFhSZW5kZXIgPj0gMC41CiAjZWxzZQogICAgIHN0YXRpYyBj
b25zdCBib29sIHVzZVhSZW5kZXIgPSBmYWxzZTsKICNlbmRpZgotCi0gICAgaWYgKCF1c2VYUmVu
ZGVyICYmIGRlcHRoID09IDMyKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCF1c2VYUmVuZGVy
ICYmIGZvcmNlQVJHQjMyKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpbnQgbnZpOwog
ICAgIFhWaXN1YWxJbmZvIHRlbXBsOwotICAgIHRlbXBsLnNjcmVlbiAgPSBRWDExSW5mbzo6YXBw
U2NyZWVuKCk7CisgICAgdGVtcGwuc2NyZWVuICA9IHgxMVNjcmVlbigpOwogICAgIHRlbXBsLmRl
cHRoICAgPSBkZXB0aDsKICAgICB0ZW1wbC5jX2NsYXNzID0gVHJ1ZUNvbG9yOwotICAgIFhWaXN1
YWxJbmZvKiB4dmkgPSBYR2V0VmlzdWFsSW5mbyhRWDExSW5mbzo6ZGlzcGxheSgpLCBWaXN1YWxT
Y3JlZW5NYXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwgVmlzdWFsQ2xhc3NNYXNrLCAmdGVtcGwsICZu
dmkpOwotCisgICAgWFZpc3VhbEluZm8qIHh2aSA9IFhHZXRWaXN1YWxJbmZvKHgxMURpc3BsYXko
KSwgVmlzdWFsU2NyZWVuTWFzayB8IFZpc3VhbERlcHRoTWFzayB8IFZpc3VhbENsYXNzTWFzaywg
JnRlbXBsLCAmbnZpKTsKKyAgICBBU1NFUlQoeHZpIHx8IGZvcmNlQVJHQjMyKTsKICAgICBpZiAo
IXh2aSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSNpZm5kZWYg
UVRfTk9fWFJFTkRFUgotICAgIGlmIChkZXB0aCA9PSAzMikgeworI2lmICFIQVZFKFFUNSkgJiYg
IWRlZmluZWQoUVRfTk9fWFJFTkRFUikKKyAgICBpZiAoZm9yY2VBUkdCMzIpIHsKICAgICAgICAg
Zm9yIChpbnQgaWR4ID0gMDsgaWR4IDwgbnZpOyArK2lkeCkgewotICAgICAgICAgICAgWFJlbmRl
clBpY3RGb3JtYXQqIGZvcm1hdCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KFFYMTFJbmZvOjpk
aXNwbGF5KCksIHh2aVtpZHhdLnZpc3VhbCk7CisgICAgICAgICAgICBYUmVuZGVyUGljdEZvcm1h
dCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQoeDExRGlzcGxheSgpLCB4dmlbaWR4
XS52aXN1YWwpOwogICAgICAgICAgICAgaWYgKGZvcm1hdC0+dHlwZSA9PSBQaWN0VHlwZURpcmVj
dCAmJiBmb3JtYXQtPmRpcmVjdC5hbHBoYU1hc2spIHsKLSAgICAgICAgICAgICAgICAgKnZpc3Vh
bCA9IHh2aVtpZHhdLnZpc3VhbDsKKyAgICAgICAgICAgICAgICAgdmlzdWFsID0geHZpW2lkeF0u
dmlzdWFsOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIXZpc3VhbCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9IGVsc2UKLSNlbmRpZiAvLyBRVF9OT19YUkVOREVSCi0gICAgICAgICp2aXN1
YWwgPSB4dmlbMF0udmlzdWFsOworI2VuZGlmCisgICAgeworICAgICAgICB2aXN1YWwgPSB4dmlb
MF0udmlzdWFsOworICAgIH0KKyAgICBBU1NFUlQodmlzdWFsKTsKIAogICAgIFhGcmVlKHh2aSk7
CiAKLSAgICBpZiAoKnZpc3VhbCkKLSAgICAgICAgKmNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFw
KFFYMTFJbmZvOjpkaXNwbGF5KCksIFFYMTFJbmZvOjphcHBSb290V2luZG93KCksICp2aXN1YWws
IEFsbG9jTm9uZSk7CisgICAgY29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoeDExRGlzcGxheSgp
LCByb290V2luZG93SUQoKSwgdmlzdWFsLCBBbGxvY05vbmUpOworICAgIHJldHVybiB0cnVlOwog
fQogCiBib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtU3RhcnQoKQpAQCAtODUxLDYgKzkzMCwyOCBA
QCBib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtU3RhcnQoKQogICAgIEFTU0VSVChtX2lzU3RhcnRl
ZCk7CiAgICAgQVNTRVJUKG1fc3RhdHVzID09IFBsdWdpblN0YXR1c0xvYWRlZFN1Y2Nlc3NmdWxs
eSk7CiAKKyAgICBpZiAoIXgxMUVudmlyb25tZW50LmRpc3BsYXkpIHsKKyAgICAgICAgRGlzcGxh
eSogZGlzcGxheTsKKyNpZiBIQVZFKFFUNSkKKyAgICAgICAgUVdlYlBhZ2VDbGllbnQqIHBhZ2VD
bGllbnQgPSBwbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICAgICAgaWYgKCFwYWdlQ2xpZW50KQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBRV2luZG93KiB3aW5kb3cgPSBwYWdl
Q2xpZW50LT5vd25lcldpbmRvdygpOworICAgICAgICBkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8RGlz
cGxheSo+KFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZvcm1OYXRpdmVJbnRlcmZhY2UoKS0+bmF0aXZl
UmVzb3VyY2VGb3JXaW5kb3coImRpc3BsYXkiLCB3aW5kb3cpKTsKKyNlbHNlCisgICAgICAgIGRp
c3BsYXkgPSBRWDExSW5mbzo6ZGlzcGxheSgpOworI2VuZGlmCisgICAgICAgIHgxMUVudmlyb25t
ZW50LmRpc3BsYXkgPSBkaXNwbGF5OworICAgICAgICB4MTFFbnZpcm9ubWVudC5zY3JlZW5JRCA9
IFhEZWZhdWx0U2NyZWVuKGRpc3BsYXkpOworICAgICAgICB4MTFFbnZpcm9ubWVudC5kaXNwbGF5
RGVwdGggPSBYRGVmYXVsdERlcHRoKGRpc3BsYXksIHgxMUVudmlyb25tZW50LnNjcmVlbklEKTsK
KyAgICAgICAgeDExRW52aXJvbm1lbnQucm9vdFdpbmRvd0lEID0gWERlZmF1bHRSb290V2luZG93
KGRpc3BsYXkpOworICAgIH0KKworI2lmIEhBVkUoUVQ1KQorICAgIC8vIFdpbmRvd2VkIG1vZGUg
aXMgbm90IHN1cHBvcnRlZCB3aXRoIFF0NSB5ZXQuCisgICAgaWYgKG1faXNXaW5kb3dlZCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKICAgICBpZiAobV9wbHVnaW4tPnBsdWdpbkZ1bmNz
KCktPmdldHZhbHVlKSB7CiAgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3
KHRoaXMpOwogI2lmIFVTRShKU0MpCkBAIC04NjMsNyArOTY0LDcgQEAgYm9vbCBQbHVnaW5WaWV3
OjpwbGF0Zm9ybVN0YXJ0KCkKICAgICB9CiAKICAgICBpZiAobV9pc1dpbmRvd2VkKSB7Ci0gICAg
ICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBtX3BhcmVudEZyYW1lLT52aWV3KCktPmhvc3RX
aW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBj
bGllbnQgPSBwbGF0Zm9ybVBhZ2VDbGllbnQoKTsKICAgICAgICAgaWYgKG1fbmVlZHNYRW1iZWQg
JiYgY2xpZW50KSB7CiAgICAgICAgICAgICBzZXRQbGF0Zm9ybVdpZGdldChuZXcgUGx1Z2luQ29u
dGFpbmVyUXQodGhpcywgY2xpZW50LT5vd25lcldpZGdldCgpKSk7CiAgICAgICAgICAgICAvLyBz
eW5jIG91ciBYRW1iZWQgY29udGFpbmVyIHdpbmRvdyBjcmVhdGlvbiBiZWZvcmUgc2VuZGluZyB0
aGUgeGlkIHRvIHBsdWdpbnMuCkBAIC04NzMsNyArOTc0LDkgQEAgYm9vbCBQbHVnaW5WaWV3Ojpw
bGF0Zm9ybVN0YXJ0KCkKICAgICAgICAgICAgIG1fc3RhdHVzID0gUGx1Z2luU3RhdHVzQ2FuTm90
TG9hZFBsdWdpbjsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgIH0g
ZWxzZSB7CisgICAgfSBlbHNlCisjZW5kaWYgLy8gSEFWRShRVDUpCisgICAgewogICAgICAgICBz
ZXRQbGF0Zm9ybVdpZGdldCgwKTsKICAgICAgICAgbV9wbHVnaW5EaXNwbGF5ID0gZ2V0UGx1Z2lu
RGlzcGxheSgpOwogCkBAIC04OTMsNiArOTk2LDcgQEAgYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9y
bVN0YXJ0KCkKICAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiB3c2kgPSBuZXcgTlBTZXRX
aW5kb3dDYWxsYmFja1N0cnVjdCgpOwogICAgIHdzaS0+dHlwZSA9IDA7CiAKKyNpZiAhSEFWRShR
VDUpCiAgICAgaWYgKG1faXNXaW5kb3dlZCkgewogICAgICAgICBjb25zdCBRWDExSW5mbyogeDEx
SW5mbyA9ICZzdGF0aWNfY2FzdDxRV2lkZ2V0Kj4ocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSktPngx
MUluZm8oKTsKIApAQCAtOTA1LDIwICsxMDA5LDI0IEBAIGJvb2wgUGx1Z2luVmlldzo6cGxhdGZv
cm1TdGFydCgpCiAgICAgICAgIG1fbnBXaW5kb3cud2luZG93ID0gKHZvaWQqKXN0YXRpY19jYXN0
PFFXaWRnZXQqPihwbGF0Zm9ybVBsdWdpbldpZGdldCgpKS0+d2luSWQoKTsKICAgICAgICAgbV9u
cFdpbmRvdy53aWR0aCA9IC0xOwogICAgICAgICBtX25wV2luZG93LmhlaWdodCA9IC0xOwotICAg
IH0gZWxzZSB7CisgICAgfSBlbHNlCisjZW5kaWYKKyAgICB7CisjaWYgIUhBVkUoUVQ1KQogICAg
ICAgICBjb25zdCBRWDExSW5mbyogeDExSW5mbyA9ICZRQXBwbGljYXRpb246OmRlc2t0b3AoKS0+
eDExSW5mbygpOwotCi0gICAgICAgIGlmICh4MTFJbmZvLT5kZXB0aCgpID09IDMyIHx8ICFtX3Bs
dWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtSZXF1aXJlc0RlZmF1bHRTY3JlZW5E
ZXB0aCkpIHsKLSAgICAgICAgICAgIGdldFZpc3VhbEFuZENvbG9ybWFwKDMyLCAmbV92aXN1YWws
ICZtX2NvbG9ybWFwKTsKKyAgICAgICAgaWYgKCh4MTFJbmZvLT5kZXB0aCgpID09IDMyIHx8ICFt
X3BsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtSZXF1aXJlc0RlZmF1bHRTY3Jl
ZW5EZXB0aCkpCisgICAgICAgICAgICAgJiYgZ2V0VmlzdWFsQW5kQ29sb3JtYXAoMzIsIG1fdmlz
dWFsLCBtX2NvbG9ybWFwLCAvKiBmb3JjZUFSR0IzMiA9ICovIHRydWUpKQogICAgICAgICAgICAg
d3NpLT5kZXB0aCA9IDMyOworICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgeworICAgICAg
ICAgICAgaW50IGRlcHRoID0gZGlzcGxheURlcHRoKCk7CisgICAgICAgICAgICBib29sIGZvdW5k
ID0gZ2V0VmlzdWFsQW5kQ29sb3JtYXAoZGVwdGgsIG1fdmlzdWFsLCBtX2NvbG9ybWFwLCAvKiBm
b3JjZUFSR0IzMiA9ICovIGZhbHNlKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoZm91bmQs
IGZvdW5kKTsKKyAgICAgICAgICAgIHdzaS0+ZGVwdGggPSBkZXB0aDsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmICghbV92aXN1YWwpIHsKLSAgICAgICAgICAgIGdldFZpc3VhbEFuZENvbG9ybWFw
KHgxMUluZm8tPmRlcHRoKCksICZtX3Zpc3VhbCwgJm1fY29sb3JtYXApOwotICAgICAgICAgICAg
d3NpLT5kZXB0aCA9IHgxMUluZm8tPmRlcHRoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB3c2kt
PmRpc3BsYXkgPSB4MTFJbmZvLT5kaXNwbGF5KCk7CisgICAgICAgIHdzaS0+ZGlzcGxheSA9IHgx
MURpc3BsYXkoKTsKICAgICAgICAgd3NpLT52aXN1YWwgPSBtX3Zpc3VhbDsKICAgICAgICAgd3Np
LT5jb2xvcm1hcCA9IG1fY29sb3JtYXA7CiAKQEAgLTk0NiwxMCArMTA1NCwxMCBAQCB2b2lkIFBs
dWdpblZpZXc6OnBsYXRmb3JtRGVzdHJveSgpCiAgICAgICAgIGRlbGV0ZSBwbGF0Zm9ybVBsdWdp
bldpZGdldCgpOwogCiAgICAgaWYgKG1fZHJhd2FibGUpCi0gICAgICAgIFhGcmVlUGl4bWFwKFFY
MTFJbmZvOjpkaXNwbGF5KCksIG1fZHJhd2FibGUpOworICAgICAgICBYRnJlZVBpeG1hcCh4MTFE
aXNwbGF5KCksIG1fZHJhd2FibGUpOwogCiAgICAgaWYgKG1fY29sb3JtYXApCi0gICAgICAgIFhG
cmVlQ29sb3JtYXAoUVgxMUluZm86OmRpc3BsYXkoKSwgbV9jb2xvcm1hcCk7CisgICAgICAgIFhG
cmVlQ29sb3JtYXAoeDExRGlzcGxheSgpLCBtX2NvbG9ybWFwKTsKIH0KIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCmlu
ZGV4IGNhMjY0YzhhZjAzNzNkMzZlZmY5MWQzMjdmZjU5YTUxMDRiOTllOWEuLjRlMDE4MzZmNzc4
NGM3OWFhMmZhYTA4MTdkZTcyYmYyNTQwYWI1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNl
dHRpbmdzLmNwcApAQCAtMTE3NCw3ICsxMTc0LDExIEBAIHZvaWQgUVdlYlNldHRpbmdzOjplbmFi
bGVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBRU3RyaW5nJiBwYXRoKQogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCiAgICAgLy8gQWxsIGFwcGxpY2F0aW9ucyBjYW4g
c2hhcmUgdGhlIGNvbW1vbiBRdFdlYmtpdCBjYWNoZSBmaWxlKHMpLgogICAgIC8vIFBhdGggaXMg
bm90IGNvbmZpZ3VyYWJsZSBhbmQgdXNlcyBRRGVza3RvcFNlcnZpY2VzOjpDYWNoZUxvY2F0aW9u
IGJ5IGRlZmF1bHQuCisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDAp
CisgICAgUVN0cmluZyBjYWNoZVBhdGggPSBRU3RhbmRhcmRQYXRoczo6d3JpdGFibGVMb2NhdGlv
bihRU3RhbmRhcmRQYXRoczo6Q2FjaGVMb2NhdGlvbik7CisjZWxzZQogICAgIFFTdHJpbmcgY2Fj
aGVQYXRoID0gUURlc2t0b3BTZXJ2aWNlczo6c3RvcmFnZUxvY2F0aW9uKFFEZXNrdG9wU2Vydmlj
ZXM6OkNhY2hlTG9jYXRpb24pOworI2VuZGlmCiAgICAgV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9y
aWVzKGNhY2hlUGF0aCk7CiAKICAgICBRRmlsZUluZm8gaW5mbyhjYWNoZVBhdGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHAKaW5kZXggYjZkODUwM2NlZjY3YjY3YjJiNDVlZTBkOWJkY2RhMjhlNTc1YjRjNy4uNjVh
OTZkMDNhYTA0NWMzMmMxNjgxMzYyMDJlY2U3MjgwZGY3YzY4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBA
IC0xNjIxLDkgKzE2MjEsMTQgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLAogICAgICAgICBWZWN0
b3I8U3RyaW5nPiBwYXJhbXMgPSBwYXJhbU5hbWVzOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiB2
YWx1ZXMgPSBwYXJhbVZhbHVlczsKICAgICAgICAgaWYgKG1pbWVUeXBlID09ICJhcHBsaWNhdGlv
bi94LXNob2Nrd2F2ZS1mbGFzaCIpIHsKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hF
Q0soNSwgMCwgMCkKKyAgICAgICAgICAgIGNvbnN0IGJvb2wgc2hvdWxkSW5qZWN0V21vZGUgPSB0
cnVlOworI2Vsc2UKKyAgICAgICAgICAgIC8vIEluamVjdCB3bW9kZT1vcGFxdWUgd2hlbiB0aGVy
ZSBpcyBubyBjbGllbnQgb3IgdGhlIGNsaWVudCBpcyBub3QgYSBRV2ViVmlldy4KICAgICAgICAg
ICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBtX3dlYkZyYW1lLT5wYWdlKCktPmQtPmNsaWVu
dC5nZXQoKTsKLSAgICAgICAgICAgIGNvbnN0IGJvb2wgaXNRV2ViVmlldyA9IGNsaWVudCAmJiBx
b2JqZWN0X2Nhc3Q8UVdpZGdldCo+KGNsaWVudC0+cGx1Z2luUGFyZW50KCkpOwotICAgICAgICAg
ICAgaWYgKCFpc1FXZWJWaWV3KSB7CisgICAgICAgICAgICBjb25zdCBib29sIHNob3VsZEluamVj
dFdtb2RlID0gIShjbGllbnQgJiYgcW9iamVjdF9jYXN0PFFXaWRnZXQqPihjbGllbnQtPnBsdWdp
blBhcmVudCgpKSk7CisjZW5kaWYKKyAgICAgICAgICAgIGlmIChzaG91bGRJbmplY3RXbW9kZSkg
ewogICAgICAgICAgICAgICAgIC8vIEluamVjdCB3bW9kZT1vcGFxdWUgd2hlbiB0aGVyZSBpcyBu
byBjbGllbnQgb3IgdGhlIGNsaWVudCBpcyBub3QgYSBRV2ViVmlldy4KICAgICAgICAgICAgICAg
ICBzaXplX3Qgd21vZGVJbmRleCA9IHBhcmFtcy5maW5kKCJ3bW9kZSIpOwogICAgICAgICAgICAg
ICAgIGlmICh3bW9kZUluZGV4ID09IFdURjo6bm90Rm91bmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcAppbmRleCA2Zjk2Y2UxYmE3YTdh
OTU2ZjkyYTk0OTBhMmVjYWZkM2MzM2EzOTYxLi5iNDA1ZGExMzM1NmJkMDlhYTkyYWY2OGEyZmY0
NjQ3NGQzMDBkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1BhZ2VDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Q
YWdlQ2xpZW50UXQuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlIDxRR3JhcGhpY3NT
Y2VuZT4KICNpbmNsdWRlIDxRR3JhcGhpY3NWaWV3PgorI2luY2x1ZGUgPFF0V2lkZ2V0cy9wcml2
YXRlL3FhcHBsaWNhdGlvbl9wLmg+CiAjaWYgZGVmaW5lZChRX1dTX1gxMSkKICNpbmNsdWRlIDxR
WDExSW5mbz4KICNlbmRpZgpAQCAtMjMxLDYgKzIzMiwxMyBAQCB2b2lkIFBhZ2VDbGllbnRRV2lk
Z2V0OjpjcmVhdGVQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0MwogfQogI2VuZGlmCiAKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNSwg
MCwgMCkKK1FXaW5kb3cqIFBhZ2VDbGllbnRRV2lkZ2V0Ojpvd25lcldpbmRvdygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHZpZXctPndpbmRvd0hhbmRsZSgpOworfQorI2VuZGlmCisKICNpZiAhZGVm
aW5lZChRVF9OT19HUkFQSElDU1ZJRVcpCiBQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0Ojp+UGFn
ZUNsaWVudFFHcmFwaGljc1dpZGdldCgpCiB7CkBAIC00ODEsNCArNDg5LDExIEBAIHZvaWQgUGFn
ZUNsaWVudFFHcmFwaGljc1dpZGdldDo6Y3JlYXRlUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRChQ
bGF0Zm9ybUdyYXBoaWNzCiB9CiAjZW5kaWYKIAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lP
Tl9DSEVDSyg1LCAwLCAwKQorUVdpbmRvdyogUGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6b3du
ZXJXaW5kb3coKSBjb25zdAoreworICAgIHJldHVybiBvd25lcldpZGdldCgpID8gUUFwcGxpY2F0
aW9uUHJpdmF0ZTo6d2luZG93Rm9yV2lkZ2V0KG93bmVyV2lkZ2V0KCkpIDogMDsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9QYWdlQ2xpZW50UXQuaAppbmRleCA5YTI2MzY1NzIxYzg0NTZiMzMzZWNjMDg3ZTVk
ZmFlYWM5ZWEzYTJjLi40OWI2ODMyOWIxMmEzMzhmODNkODJiNjczNGRjYmI1ZGQwODFkMzAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmgKQEAg
LTEwNCw2ICsxMDQsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlM0QqKTsKICNlbmRpZgog
CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApCisgICAgdmlydHVh
bCBRV2luZG93KiBvd25lcldpbmRvdygpIGNvbnN0OworI2VuZGlmCisKICAgICBRV2lkZ2V0KiB2
aWV3OwogICAgIFFXZWJQYWdlKiBwYWdlOwogCkBAIC0yMTIsNiArMjE2LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9y
bUdyYXBoaWNzU3VyZmFjZTNEKik7CiAjZW5kaWYKIAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVS
U0lPTl9DSEVDSyg1LCAwLCAwKQorICAgIHZpcnR1YWwgUVdpbmRvdyogb3duZXJXaW5kb3coKSBj
b25zdDsKKyNlbmRpZgorCiAgICAgdm9pZCBjcmVhdGVPckRlbGV0ZU92ZXJsYXkoKTsKIAogI2lm
IFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQpkaWZmIC0tZ2l0IGEvU291cmNlL2FwaS5wcmkgYi9T
b3VyY2UvYXBpLnByaQppbmRleCA2YzJkZjdiNzA3ZWZmMmQ2YTc0OTI1MjhhNjk3MGVjM2EzNDgx
YTBkLi4xMDBkZTI3YjZkYmQ2ODliMzQ3NGJiOTExYzM1OWEwNGY2N2MyOGM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvYXBpLnByaQorKysgYi9Tb3VyY2UvYXBpLnByaQpAQCAtMTQzLDcgKzE0Myw3IEBA
IFdFQktJVCArPSB3ZWJjb3JlCiB9CiAKIFFUICs9IG5ldHdvcmsKLWhhdmVRdCg1KTogUVQgKz0g
d2lkZ2V0cyBwcmludHN1cHBvcnQgcXVpY2sKK2hhdmVRdCg1KTogUVQgKz0gY29yZS1wcml2YXRl
IGd1aS1wcml2YXRlIHdpZGdldHMgd2lkZ2V0cy1wcml2YXRlIHByaW50c3VwcG9ydCBxdWljawog
CiBjb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1RFWFRVUkVfTUFQUEVSX0dMPTEpfGNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAgUVQgKj0gb3BlbmdsCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWIyMWRiNjRlMzExZDJj
MTZhODUzZDNhNzNjNjc3OTUyMTM1NWQ5OC4uN2UxN2ZjMjViN2U1NWQ5MzRhZDU2OTQ2NDhhNzA4
ZGQ3OWJhZGNjNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA0LTI0ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxh
enNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIFgxMSBwbHVnaW5zIG5lZWQgdG8gYmUgcmV3
b3JrZWQgZm9yIFF0NStXSzEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgwNjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHdpbmRvd2xlc3MgcGx1Z2luIHN1cHBvcnQgd2l0aCBR
dDUuCisKKyAgICAgICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZjogRW5h
YmxlIE5QQVBJCisgICAgICAgIHBsdWdpbnMgaWYgWDExIGxpYnJhcmllcyBhcmUgYXZhaWxhYmxl
LgorCiAyMDEyLTA0LTI0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRl
bC5jb20+CiAKICAgICAgICAgW0VGTF0gRW5hYmxlIFdlYiBUaW1pbmcKZGlmZiAtLWdpdCBhL1Rv
b2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmIGIvVG9vbHMvcW1ha2UvbWtz
cGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYKaW5kZXggOGY2MTc1ZWNlNDc5NTRkMTAwN2M4OGZh
MjRkZTk1YzVkMGQ3MjNlYi4uMzdkYzk5NDJkZTI2ODliYzVmMWFhMWQyMmU2MjI1YTEyMTM4Yzhi
MyAxMDA2NDQKLS0tIGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYK
KysrIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYKQEAgLTEzNyw3
ICsxMzcsMTAgQEAgaGF2ZVF0KDUpIHsKIAogIyBOZXNjYXBlIHBsdWdpbnMgc3VwcG9ydCAoTlBB
UEkpCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEk9Likgewot
ICAgIHVuaXg6aGF2ZVF0KDQpfHdpbjMyLSo6IWVtYmVkZGVkOiF3aW5jZSo6IHsKKyAgICBoYXZl
UXQoNSk6eGxpYkF2YWlsYWJsZSgpIHsKKyAgICAgICAgREVGSU5FUyArPSBFTkFCTEVfTkVUU0NB
UEVfUExVR0lOX0FQST0xCisgICAgICAgIENPTkZJRyArPSBwbHVnaW5fYmFja2VuZF94bGliCisg
ICAgfSBlbHNlOiB1bml4fHdpbjMyLSo6IWVtYmVkZGVkOiF3aW5jZSogewogICAgICAgICBERUZJ
TkVTICs9IEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJPTEKICAgICB9IGVsc2UgewogICAgICAg
ICBERUZJTkVTICs9IEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJPTAKZGlmZiAtLWdpdCBhL0No
YW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkYjAxMzFmYWRmMjZlMTYyMjI4NDVlMmJlMjk3MTgz
MmY4Y2JiMzE2Li42ZDYzZTFmY2VhNzAzNGZkZDhlYzQ3ZDM3YjlhYTY4NTc0Zjc2YTFkIDEwMDY0
NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTIt
MDQtMjQgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtR
dF0gWDExIHBsdWdpbnMgbmVlZCB0byBiZSByZXdvcmtlZCBmb3IgUXQ1K1dLMQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA2OTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgd2lu
ZG93bGVzcyBwbHVnaW4gc3VwcG9ydCB3aXRoIFF0NS4KKworICAgICAgICAqIFNvdXJjZS9hcGku
cHJpOiBOZWVkIHByaXZhdGUgQVBJJ3MgdG8gYmUgYWJsZQorICAgICAgICB0byB1c2UgUUFwcGxp
Y2F0aW9uUHJpdmF0ZTo6d2luZG93Rm9yV2lkZ2V0LgorCiAyMDEyLTA0LTI0ICBDaHJpc3RvcGhl
IER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gRW5h
YmxlIFdlYiBUaW1pbmcK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138588</attachid>
            <date>2012-04-24 10:03:32 -0700</date>
            <delta_ts>2012-05-07 08:41:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80691-20120424190330.patch</filename>
            <type>text/plain</type>
            <size>35579</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQxZTc1NGRiMTM3NWEx
MmUxN2ZiMDExODVjM2JkOGE2NGVhMzA2OS4uMDA4YzVlNDI5NjdlZDc2NGJlZjFhNjNkYjE2YzZk
ODc4Y2FkNWE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTA0LTI0ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIFgxMSBwbHVn
aW5zIG5lZWQgdG8gYmUgcmV3b3JrZWQgZm9yIFF0NStXSzEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHdpbmRvd2xlc3MgcGx1
Z2luIHN1cHBvcnQgd2l0aCBRdDUuCisgICAgICAgIFRoZSBzb2x1dGlvbiBpcyB0aGUgc2FtZSB0
aGF0IGhhcyBiZWVuIGNob3NlbiBmb3IKKyAgICAgICAgV2ViS2l0Mi4gV2UgZ2V0IHRoZSBjb250
ZW50IGRyYXdlZCBieSB0aGUgcGx1Z2luCisgICAgICAgIGZyb20gdGhlIFggc2VydmVyIGFzIGFu
IGltYWdlLCBjcmVhdGUgYSBRSW1hZ2UKKyAgICAgICAgZnJvbSBpdCBhbmQgcGFpbnQgaXQgdG8g
dGhlIHdpbmRvdyBzdXJmYWNlIHdpdGggUVBhaW50ZXIuCisgICAgICAgIFBlcmZvcm1hbmNlIGlz
IHN1ZmZpY2llbnQgZm9yIGJhc2ljIHZpZGVvIHBsYXliYWNrLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyBwbHVnaW4gdGVzdHMuCisKKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1FX
ZWJQYWdlQ2xpZW50Lmg6CisgICAgICAgIChRV2ViUGFnZUNsaWVudCk6CisgICAgICAgICogcGx1
Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgIChQbHVnaW5WaWV3KToKKyAgICAgICAgKiBwbHVn
aW5zL3F0L1BsdWdpblBhY2thZ2VRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNr
YWdlOjppc1BsdWdpbkJsYWNrbGlzdGVkKToKKyAgICAgICAgQmxhY2tsaXN0IHBsdWdpbnMgdGhh
dCBhcmUgaW5jb21wYXRpYmxlIHdpdGggUXQ1LgorICAgICAgICBUaGUgb25seSBvbmUgSSBrbm93
IGFib3V0IGN1cnJlbnRseSBpcyBza3lwZWJ1dHRvbnMKKyAgICAgICAgYnV0IHRoZSBsaXN0IGNh
biBiZSBleHRlbmRlZCBpbiB0aGUgZnV0dXJlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpsb2FkKToKKyAgICAgICAgKiBwbHVnaW5zL3F0L1Bs
dWdpblZpZXdRdC5jcHA6CisgICAgICAgIChYMTFFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OngxMURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6
eDExU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OnJvb3RXaW5kb3dJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpkaXNwbGF5RGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6c3luY1gpOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1QYWdlQ2xpZW50KTogQWRkZWQgYSBzYWZl
CisgICAgICAgIGNvbnZlbmllbmNlIGdldHRlciBmb3IgdGhlIFFXZWJwYWdlQ2xpZW50LgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6dXBkYXRlUGx1Z2luV2lkZ2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldHVw
R3JhcGhpY3NFeHBvc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwYWlu
dFVzaW5nWFBpeG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRTaGFyZWRYRXZlbnRGaWVsZHMp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aW5pdFhFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3OjpzZXRYS2V5RXZlbnRTcGVjaWZpY0ZpZWxkcyk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRYQnV0dG9uRXZlbnRTcGVjaWZpY0ZpZWxkcyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRYTW90aW9uRXZlbnRTcGVjaWZpY0ZpZWxkcyk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRYQ3Jvc3NpbmdFdmVudFNwZWNpZmljRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OnNldE5QV2luZG93SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6c2V0UGFyZW50VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0
Zm9ybUdldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmludmFsaWRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFZpc3VhbEFuZENvbG9ybWFwKToKKyAgICAgICAg
UmVmYWN0b3JlZCB0aGlzIGZ1bmN0aW9uIHRvIG1ha2UgaXQgbW9yZSBjbGVhcgorICAgICAgICB3
aGF0IGRvZXMgaXQgYWN0dWFsbHkgZG8uCisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojpw
bGF0Zm9ybVN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtRGVz
dHJveSk6CisKIDIwMTItMDQtMjQgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5i
b3NzYS5vcmc+CiAKICAgICAgICAgQW5vdGhlciB1bnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgTWFj
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwppbmRleCA1ZmMzMzhmYWM1MTk5ZWRkMWJjZGVlNzcwZDFhZmM5YjRlNWEz
MjI3Li4xZTI4NDBmY2FlNzQ4ZDMwMmQxNTYxYzk1MWIwZDY4NTFjYWM5NjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA0LTI0ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxh
enNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIFgxMSBwbHVnaW5zIG5lZWQgdG8gYmUgcmV3
b3JrZWQgZm9yIFF0NStXSzEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgwNjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHdpbmRvd2xlc3MgcGx1Z2luIHN1cHBvcnQgd2l0aCBR
dDUuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0
aW5nczo6ZW5hYmxlUGVyc2lzdGVudFN0b3JhZ2UpOgorICAgICAgICBCdWlsZCBmaXggZm9yIFF0
NS4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbik6CisgICAg
ICAgIEluamVjdCB0aGUgd21vZGUgcGFyYW1ldGVyIGZvciBmbGFzaCBzbyBpdCB3aWxsCisgICAg
ICAgIHdvcmsgaW4gd2luZG93bGVzcywgbm9uLXRyYW5zcGFyZW50IG1vZGUgd2hpY2gKKyAgICAg
ICAgaXMgdGhlIG9ubHkgb25lIHdlIHN1cHBvcnQgY3VycmVudGx5LgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0Ojpvd25lcldpbmRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0Ojpvd25lcldpbmRvdyk6CisgICAgICAgIEFk
ZGVkIGEgZ2V0dGVyIGZvciB0aGUgdG9wIGxldmVsIHdpbmRvdyBzbyB0aGUgUGx1Z2luVmlldwor
ICAgICAgICBjYW4gZ2V0IGl0IHdpdGhvdXQgY2FsbGluZyBpbnRvIFF0V2lkZ2V0cyBjb2RlLgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5oOgorICAgICAgICAoUGFnZUNs
aWVudFFXaWRnZXQpOgorICAgICAgICAoUGFnZUNsaWVudFFHcmFwaGljc1dpZGdldCk6CisKIDIw
MTItMDQtMjQgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAgICAg
IFtRdF0gTW92ZSBub3RpZmljYXRpb24gaWNvbiBkb3dubG9hZCBvdXQgb2YgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKaW5kZXggMmIwODE4Y2FiNTE3OTUxZTdjMDAxNjcwMWE1MmUyNmY4YjlmNjkxNy4uODM5
MzgyZDA3OGE0ODA5OTY1YjIzNjA3MTVmMjUxNDY1NDAyNWEwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0y
OTU5LDExICsyOTU5LDEzIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9ORVRTQ0FQRV9QTFVH
SU5fQVBJPTEpIHsKICAgICAgICAgICAgICAgICBwbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1t
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBTT1VSQ0VTICs9IFwKLSAgICAgICAgICAg
ICAgICBwbHVnaW5zL3F0L1BsdWdpbkNvbnRhaW5lclF0LmNwcCBcCiAgICAgICAgICAgICAgICAg
cGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwIFwKICAgICAgICAgICAgICAgICBwbHVnaW5z
L3F0L1BsdWdpblZpZXdRdC5jcHAKLSAgICAgICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAg
ICAgICAgIHBsdWdpbnMvcXQvUGx1Z2luQ29udGFpbmVyUXQuaAorCisgICAgICAgICAgICBoYXZl
UXQoNCkgeworICAgICAgICAgICAgICAgIFNPVVJDRVMgKz0gcGx1Z2lucy9xdC9QbHVnaW5Db250
YWluZXJRdC5jcHAKKyAgICAgICAgICAgICAgICBIRUFERVJTICs9IHBsdWdpbnMvcXQvUGx1Z2lu
Q29udGFpbmVyUXQuaAorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJpCmluZGV4IGI0MzBmY2IzZjg5ZTM3YTRiNzU1MzU1ZWRlNGFiMmJjNDIyY2MyYTAuLjFkMTFi
ZDE5YjYyZTBmMjIxZmFlYzA4M2QzZjM1YzgzYjJhNmE4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC0x
MzQsNyArMTM0LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9B
UEk9MSkgewogICAgICAgICAgICAgSU5DTFVERVBBVEggKz0gcGxhdGZvcm0vbWFjCiAgICAgICAg
ICAgICAjIE5vdGU6IFhQX01BQ09TWCBpcyBkZWZpbmVkIGluIG5wYXBpLmgKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICFlbWJlZGRlZCB7CisgICAgICAgICAgICB4bGliQXZhaWxhYmxl
KCkgewogICAgICAgICAgICAgICAgIENPTkZJRyArPSB4MTEKICAgICAgICAgICAgICAgICBMSUJT
ICs9IC1sWHJlbmRlcgogICAgICAgICAgICAgICAgIERFRklORVMgKz0gTU9aX1gxMQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1FXZWJQYWdlQ2xpZW50LmgKaW5kZXggMzBjM2I0OGVhNjE5
Njk2NTgzM2FlZWRhNWZiMTliNGI5YTUwZjZmYy4uNDdkMzcyNzM5NTQyMjY4ODlkOGQ5NWY1OWM1
NmE2NzA4ZTk3YmJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUVdl
YlBhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RV2ViUGFnZUNs
aWVudC5oCkBAIC00Myw2ICs0Myw3IEBACiAKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVN0
eWxlOworY2xhc3MgUVdpbmRvdzsKIFFUX0VORF9OQU1FU1BBQ0UKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtOTMsNiArOTQsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUVdpZGdldCogb3du
ZXJXaWRnZXQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBRUmVjdCBnZW9tZXRyeVJlbGF0aXZl
VG9Pd25lcldpZGdldCgpIGNvbnN0ID0gMDsKIAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lP
Tl9DSEVDSyg1LCAwLCAwKQorICAgIHZpcnR1YWwgUVdpbmRvdyogb3duZXJXaW5kb3coKSBjb25z
dCA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgUU9iamVjdCogcGx1Z2luUGFyZW50KCkgY29u
c3QgPSAwOwogCiAgICAgdmlydHVhbCBRU3R5bGUqIHN0eWxlKCkgY29uc3QgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAxMTI4NTIyZDAyMWY4MWE4YmY1ZmRlMWRkNzYx
YzM2MGQ0OGMxZjUyLi5lMzQ0MmZmNTBjMmM5YzYyOGNlYjEzYTQ4MDZlMGNhZDdmMjVhN2IxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDI2LDYgKzQyNiw3IEBAIHByaXZh
dGU6CiAgICAgICAgIHN0YXRpYyBib29sIHNfaXNSdW5uaW5nVW5kZXJEUlQ7CiAgICAgICAgIHN0
YXRpYyB2b2lkIHNldFhLZXlFdmVudFNwZWNpZmljRmllbGRzKFhFdmVudCosIEtleWJvYXJkRXZl
bnQqKTsKICAgICAgICAgdm9pZCBwYWludFVzaW5nWFBpeG1hcChRUGFpbnRlciogcGFpbnRlciwg
Y29uc3QgUVJlY3QgJmV4cG9zZWRSZWN0KTsKKyAgICAgICAgUVdlYlBhZ2VDbGllbnQqIHBsYXRm
b3JtUGFnZUNsaWVudCgpIGNvbnN0OwogI2VuZGlmCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HX1BMVUdJTl9MQVlFUikKICAgICAgICAgT3duUHRyPFBsYXRmb3JtTGF5ZXI+IG1fcGxh
dGZvcm1MYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2lu
UGFja2FnZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0
LmNwcAppbmRleCA0ZTlhNzE3Yjg2ZjFjNWJkYzMyZTEyYWE5NTMzMTk0OWMyNzBiYWY4Li5iOTgy
NGZhZTBjNjY1MjA1MjgwMzU1N2MxZjFkY2VlZGRhZWI5MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblBhY2thZ2VRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgogI2lu
Y2x1ZGUgIlBsdWdpbkRlYnVnLmgiCisjaW5jbHVkZSA8UUZpbGVJbmZvPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTI5LDYgKzEzMCwy
MyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplR3RrKFFMaWJyYXJ5KiBtb2R1bGUgPSAwKQogICAg
IH0KIH0KIAorYm9vbCBQbHVnaW5QYWNrYWdlOjppc1BsdWdpbkJsYWNrbGlzdGVkKCkKK3sKKyNp
ZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNSwgMCwgMCkKKyAgICAvLyBUT0RPOiBl
bnVtZXJhdGUgYWxsIHBsdWdpbnMgdGhhdCBhcmUgaW5jb21wYXRpYmxlIHdpdGggUXQ1LgorICAg
IGNvbnN0IFFMYXRpbjFTdHJpbmcgcGx1Z2luQmxhY2tsaXN0W10gPSB7CisgICAgICAgIFFMYXRp
bjFTdHJpbmcoInNreXBlYnV0dG9ucyIpCisgICAgfTsKKworICAgIFFTdHJpbmcgYmFzZU5hbWUg
PSBRRmlsZUluZm8oc3RhdGljX2Nhc3Q8UVN0cmluZz4obV9wYXRoKSkuYmFzZU5hbWUoKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZW9mKHBsdWdpbkJsYWNrbGlzdCkgLyBzaXpl
b2YoUUxhdGluMVN0cmluZyk7ICsraSkgeworICAgICAgICBpZiAoYmFzZU5hbWUgPT0gcGx1Z2lu
QmxhY2tsaXN0W2ldKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIFBsdWdpblBhY2thZ2U6OmxvYWQoKQogewogICAg
IGlmIChtX2lzTG9hZGVkKSB7CkBAIC0xMzYsNiArMTU0LDkgQEAgYm9vbCBQbHVnaW5QYWNrYWdl
Ojpsb2FkKCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgaWYgKGlzUGx1Z2lu
QmxhY2tsaXN0ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgbV9tb2R1bGUgPSBu
ZXcgUUxpYnJhcnkoKFFTdHJpbmcpbV9wYXRoKTsKICAgICBtX21vZHVsZS0+c2V0TG9hZEhpbnRz
KFFMaWJyYXJ5OjpSZXNvbHZlQWxsU3ltYm9sc0hpbnQpOwogICAgIGlmICghbV9tb2R1bGUtPmxv
YWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3
UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCmluZGV4
IGFjMzFjZjAwMjZlZDQ4MmI1M2I3Y2YzYjdkZWNmZTEyMjczMWUwNjYuLjUzMTVjNTM4NjlmZjc1
NjZlOWJhZTY4NDU4MzZlMWFkNGQ0YmQzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0
L1BsdWdpblZpZXdRdC5jcHAKQEAgLTU4LDcgKzU4LDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50LmgiCi0jaW5jbHVkZSAiUGx1Z2luQ29udGFpbmVyUXQuaCIKICNpbmNsdWRlICJQbHVn
aW5EZWJ1Zy5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKICNpbmNsdWRlICJQbHVnaW5N
YWluVGhyZWFkU2NoZWR1bGVyLmgiCkBAIC02OSwxNSArNjgsOCBAQAogI2lmIFVTRShKU0MpCiAj
aW5jbHVkZSAicnVudGltZV9yb290LmgiCiAjZW5kaWYKLQotI2luY2x1ZGUgPFFBcHBsaWNhdGlv
bj4KLSNpbmNsdWRlIDxRRGVza3RvcFdpZGdldD4KLSNpbmNsdWRlIDxRR3JhcGhpY3NXaWRnZXQ+
CiAjaW5jbHVkZSA8UUtleUV2ZW50PgogI2luY2x1ZGUgPFFQYWludGVyPgotI2luY2x1ZGUgPFFT
dHlsZU9wdGlvbkdyYXBoaWNzSXRlbT4KLSNpbmNsdWRlIDxRV2lkZ2V0PgotI2luY2x1ZGUgPFFY
MTFJbmZvPgogI2luY2x1ZGUgPFgxMS9YLmg+CiAjaWZuZGVmIFFUX05PX1hSRU5ERVIKICNkZWZp
bmUgQm9vbCBpbnQKQEAgLTg3LDYgKzc5LDIzIEBACiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2su
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KIAorI2RlZmluZSBIQVZFX1FUNSAoUVRf
VkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApKQorCisjaWYgSEFWRShRVDUpCisj
aW5jbHVkZSAiUXRYMTFJbWFnZUNvbnZlcnNpb24uaCIKKyNpbmNsdWRlIDxRR3VpQXBwbGljYXRp
b24+CisjaW5jbHVkZSA8UVBsYXRmb3JtTmF0aXZlSW50ZXJmYWNlPgorI2luY2x1ZGUgPFFXaW5k
b3c+CisjZWxzZQorI2luY2x1ZGUgIlBsdWdpbkNvbnRhaW5lclF0LmgiCisjaW5jbHVkZSA8UUFw
cGxpY2F0aW9uPgorI2luY2x1ZGUgPFFEZXNrdG9wV2lkZ2V0PgorI2luY2x1ZGUgPFFHcmFwaGlj
c1dpZGdldD4KKyNpbmNsdWRlIDxRU3R5bGVPcHRpb25HcmFwaGljc0l0ZW0+CisjaW5jbHVkZSA8
UVdpZGdldD4KKyNpbmNsdWRlIDxRWDExSW5mbz4KKyNlbmRpZgorCiB1c2luZyBKU0M6OkV4ZWNT
dGF0ZTsKICNpZiBVU0UoSlNDKQogdXNpbmcgSlNDOjpJbnRlcnByZXRlcjsKQEAgLTEwNSw3ICsx
MTQsMzcgQEAgYm9vbCBQbHVnaW5WaWV3OjpzX2lzUnVubmluZ1VuZGVyRFJUID0gZmFsc2U7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCitzdHJ1Y3QgWDExRW52aXJvbm1lbnQgeworICAgIERpc3BsYXkqIGRpc3BsYXk7Cisg
ICAgaW50IHNjcmVlbklEOworICAgIHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lEOworICAgIGlu
dCBkaXNwbGF5RGVwdGg7Cit9OworCitzdGF0aWMgWDExRW52aXJvbm1lbnQgeDExRW52aXJvbm1l
bnQgPSB7IDAsIDAsIDAsIDAgfTsKKworc3RhdGljIGlubGluZSBEaXNwbGF5KiB4MTFEaXNwbGF5
KCkgeyByZXR1cm4geDExRW52aXJvbm1lbnQuZGlzcGxheTsgfQorc3RhdGljIGlubGluZSBpbnQg
eDExU2NyZWVuKCkgeyByZXR1cm4geDExRW52aXJvbm1lbnQuc2NyZWVuSUQ7IH0KK3N0YXRpYyBp
bmxpbmUgdW5zaWduZWQgbG9uZyByb290V2luZG93SUQoKSB7IHJldHVybiB4MTFFbnZpcm9ubWVu
dC5yb290V2luZG93SUQ7IH0KK3N0YXRpYyBpbmxpbmUgaW50IGRpc3BsYXlEZXB0aCgpIHsgcmV0
dXJuIHgxMUVudmlyb25tZW50LmRpc3BsYXlEZXB0aDsgfQorCitzdGF0aWMgaW5saW5lIHZvaWQg
c3luY1goKQoreworICAgIFhTeW5jKHgxMURpc3BsYXkoKSwgZmFsc2UpOworfQorCitRV2ViUGFn
ZUNsaWVudCogUGx1Z2luVmlldzo6cGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QKK3sKKyAgICBG
cmFtZVZpZXcqIHZpZXcgPSBtX3BhcmVudEZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQor
ICAgICAgICByZXR1cm4gMDsKKyAgICBIb3N0V2luZG93KiBob3N0V2luZG93ID0gdmlldy0+aG9z
dFdpbmRvdygpOworICAgIGlmICghaG9zdFdpbmRvdykKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIGhvc3RXaW5kb3ctPnBsYXRmb3JtUGFnZUNsaWVudCgpOworfQorCisjaWYgIUhBVkUo
UVQ1KSAmJiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAvLyBRdCdzIEdyYXBoaWNzTGF5
ZXIgKEdyYXBoaWNzTGF5ZXJRdCkgcmVxdWlyZXMgbGF5ZXJzIHRvIGJlIFFHcmFwaGljc1dpZGdl
dHMKIGNsYXNzIFBsdWdpbkdyYXBoaWNzTGF5ZXJRdCA6IHB1YmxpYyBRR3JhcGhpY3NXaWRnZXQg
ewogcHVibGljOgpAQCAtMTU0LDExICsxOTMsMTEgQEAgdm9pZCBQbHVnaW5WaWV3Ojp1cGRhdGVQ
bHVnaW5XaWRnZXQoKQogCiAgICAgaWYgKCFtX2lzV2luZG93ZWQgJiYgbV93aW5kb3dSZWN0LnNp
emUoKSAhPSBvbGRXaW5kb3dSZWN0LnNpemUoKSkgewogICAgICAgICBpZiAobV9kcmF3YWJsZSkK
LSAgICAgICAgICAgIFhGcmVlUGl4bWFwKFFYMTFJbmZvOjpkaXNwbGF5KCksIG1fZHJhd2FibGUp
OworICAgICAgICAgICAgWEZyZWVQaXhtYXAoeDExRGlzcGxheSgpLCBtX2RyYXdhYmxlKTsKIAot
ICAgICAgICBtX2RyYXdhYmxlID0gWENyZWF0ZVBpeG1hcChRWDExSW5mbzo6ZGlzcGxheSgpLCBR
WDExSW5mbzo6YXBwUm9vdFdpbmRvdygpLCBtX3dpbmRvd1JlY3Qud2lkdGgoKSwgbV93aW5kb3dS
ZWN0LmhlaWdodCgpLAorICAgICAgICBtX2RyYXdhYmxlID0gWENyZWF0ZVBpeG1hcCh4MTFEaXNw
bGF5KCksIHJvb3RXaW5kb3dJRCgpLCBtX3dpbmRvd1JlY3Qud2lkdGgoKSwgbV93aW5kb3dSZWN0
LmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE5QU2V0V2lu
ZG93Q2FsbGJhY2tTdHJ1Y3QqKW1fbnBXaW5kb3cud3NfaW5mbyktPmRlcHRoKTsKLSAgICAgICAg
UUFwcGxpY2F0aW9uOjpzeW5jWCgpOyAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgc2VydmVyIGtub3dz
IGFib3V0IHRoZSBEcmF3YWJsZQorICAgICAgICBzeW5jWCgpOyAvLyBtYWtlIHN1cmUgdGhhdCB0
aGUgc2VydmVyIGtub3dzIGFib3V0IHRoZSBEcmF3YWJsZQogICAgIH0KIAogICAgIC8vIGRvIG5v
dCBjYWxsIHNldE5QV2luZG93SWZOZWVkZWQgaW1tZWRpYXRlbHksIHdpbGwgYmUgY2FsbGVkIG9u
IHBhaW50KCkKQEAgLTE4NywxMiArMjI2LDEzIEBAIHZvaWQgUGx1Z2luVmlldzo6dXBkYXRlUGx1
Z2luV2lkZ2V0KCkKIAogdm9pZCBQbHVnaW5WaWV3OjpzZXRGb2N1cyhib29sIGZvY3VzZWQpCiB7
CisjaWYgIUhBVkUoUVQ1KSAvLyBXaW5kb3dlZCBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBR
dDUgeWV0IChzbyBwbGF0Zm9ybVBsdWdpbldpZGdldCgpIGlzIGFsd2F5cyBudWxsKS4KICAgICBp
ZiAocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkgewogICAgICAgICBpZiAoZm9jdXNlZCkKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PFFXaWRnZXQqPihwbGF0Zm9ybVBsdWdpbldpZGdldCgpKS0+c2V0
Rm9jdXMoUXQ6Ok90aGVyRm9jdXNSZWFzb24pOwotICAgIH0gZWxzZSB7CisgICAgfSBlbHNlCisj
ZW5kaWYKICAgICAgICAgV2lkZ2V0OjpzZXRGb2N1cyhmb2N1c2VkKTsKLSAgICB9CiB9CiAKIHZv
aWQgUGx1Z2luVmlldzo6c2hvdygpCkBAIC0yMDcsMTIgKzI0NywzMCBAQCB2b2lkIFBsdWdpblZp
ZXc6OmhpZGUoKQogICAgIFdpZGdldDo6aGlkZSgpOwogfQogCitzdGF0aWMgdm9pZCBzZXR1cEdy
YXBoaWNzRXhwb3NlRXZlbnQoUGl4bWFwIGRyYXdhYmxlLCBjb25zdCBRUmVjdCYgZXhwb3NlZFJl
Y3QsIFhFdmVudCYgeGV2ZW50KQoreworICAgIG1lbXNldCgmeGV2ZW50LCAwLCBzaXplb2YoWEV2
ZW50KSk7CisgICAgWEdyYXBoaWNzRXhwb3NlRXZlbnQmIGV4cG9zZUV2ZW50ID0geGV2ZW50Lnhn
cmFwaGljc2V4cG9zZTsKKyAgICBleHBvc2VFdmVudC50eXBlID0gR3JhcGhpY3NFeHBvc2U7Cisg
ICAgZXhwb3NlRXZlbnQuZGlzcGxheSA9IHgxMURpc3BsYXkoKTsKKyAgICBleHBvc2VFdmVudC5k
cmF3YWJsZSA9IGRyYXdhYmxlOworICAgIGV4cG9zZUV2ZW50LnggPSBleHBvc2VkUmVjdC54KCk7
CisgICAgZXhwb3NlRXZlbnQueSA9IGV4cG9zZWRSZWN0LnkoKTsKKyAgICBleHBvc2VFdmVudC53
aWR0aCA9IGV4cG9zZWRSZWN0LngoKSArIGV4cG9zZWRSZWN0LndpZHRoKCk7IC8vIGZsYXNoIGJ1
Zz8gaXQgdGhpbmtzIHdpZHRoIGlzIHRoZSByaWdodCBpbiB0cmFuc3BhcmVudCBtb2RlCisgICAg
ZXhwb3NlRXZlbnQuaGVpZ2h0ID0gZXhwb3NlZFJlY3QueSgpICsgZXhwb3NlZFJlY3QuaGVpZ2h0
KCk7IC8vIGZsYXNoIGJ1Zz8gaXQgdGhpbmtzIGhlaWdodCBpcyB0aGUgYm90dG9tIGluIHRyYW5z
cGFyZW50IG1vZGUKK30KKwogdm9pZCBQbHVnaW5WaWV3OjpwYWludFVzaW5nWFBpeG1hcChRUGFp
bnRlciogcGFpbnRlciwgY29uc3QgUVJlY3QgJmV4cG9zZWRSZWN0KQogeworICAgIGJvb2wgc2hv
dWxkU3luY1ggPSBtX3BsdWdpbkRpc3BsYXkgJiYgbV9wbHVnaW5EaXNwbGF5ICE9IHgxMURpc3Bs
YXkoKTsKKyAgICBYRXZlbnQgeGV2ZW50OworCisjaWYgSEFWRShRVDUpCisgICAgc2V0dXBHcmFw
aGljc0V4cG9zZUV2ZW50KG1fZHJhd2FibGUsIGV4cG9zZWRSZWN0LCB4ZXZlbnQpOworI2Vsc2UK
ICAgICBRUGl4bWFwIHF0RHJhd2FibGUgPSBRUGl4bWFwOjpmcm9tWDExUGl4bWFwKG1fZHJhd2Fi
bGUsIFFQaXhtYXA6OkV4cGxpY2l0bHlTaGFyZWQpOwogICAgIGNvbnN0IGludCBkcmF3YWJsZURl
cHRoID0gKChOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiltX25wV2luZG93LndzX2luZm8pLT5k
ZXB0aDsKICAgICBBU1NFUlQoZHJhd2FibGVEZXB0aCA9PSBxdERyYXdhYmxlLmRlcHRoKCkpOwot
ICAgIGNvbnN0IGJvb2wgc3luY1ggPSBtX3BsdWdpbkRpc3BsYXkgJiYgbV9wbHVnaW5EaXNwbGF5
ICE9IFFYMTFJbmZvOjpkaXNwbGF5KCk7CiAKICAgICAvLyBXaGVuIHByaW50aW5nLCBRdCB1c2Vz
IGEgUVBpY3R1cmUgdG8gY2FwdHVyZSB0aGUgb3V0cHV0IGluIHByZXZpZXcgbW9kZS4gVGhlCiAg
ICAgLy8gUVBpY3R1cmUgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIFggUGl4bWFwLiBBcyBhIHJl
c3VsdCwgdGhlIHByaW50IHByZXZpZXcgd291bGQKQEAgLTIzMiw3ICsyOTAsNyBAQCB2b2lkIFBs
dWdpblZpZXc6OnBhaW50VXNpbmdYUGl4bWFwKFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRUmVj
dCAmZXhwb3NlZFJlY3QpCiAgICAgICAgIC8vIFdlIGNhbm5vdCBncmFiIGNvbnRlbnRzIGZyb20g
dGhlIGJhY2tpbmcgc3RvcmUgd2hlbiBwYWludGluZyBvbiBRR3JhcGhpY3NWaWV3IGl0ZW1zCiAg
ICAgICAgIC8vIChiZWNhdXNlIGJhY2tpbmcgc3RvcmUgY29udGVudHMgYXJlIGFscmVhZHkgdHJh
bnNmb3JtZWQpLiBXaGF0IHdlIHJlYWxseSBtZWFuIHRvIGRvIAogICAgICAgICAvLyBoZXJlIGlz
IHRvIGNoZWNrIGlmIHdlIGFyZSBwYWludGluZyBvbiBRV2ViVmlldywgYnV0IGxldCdzIGJlIGEg
bGl0dGxlIHBlcm1pc3NpdmUgOikKLSAgICAgICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IG1f
cGFyZW50RnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsK
KyAgICAgICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IHBsYXRmb3JtUGFnZUNsaWVudCgpOwog
ICAgICAgICBjb25zdCBib29sIGJhY2tpbmdTdG9yZUhhc1VudHJhbnNmb3JtZWRDb250ZW50cyA9
IGNsaWVudCAmJiBxb2JqZWN0X2Nhc3Q8UVdpZGdldCo+KGNsaWVudC0+cGx1Z2luUGFyZW50KCkp
OwogCiAgICAgICAgIGlmIChoYXNWYWxpZEJhY2tpbmdTdG9yZSAmJiBiYWNraW5nU3RvcmVQaXht
YXAtPmRlcHRoKCkgPT0gZHJhd2FibGVEZXB0aCAKQEAgLTI0NiwyNyArMzA0LDI2IEBAIHZvaWQg
UGx1Z2luVmlldzo6cGFpbnRVc2luZ1hQaXhtYXAoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFS
ZWN0ICZleHBvc2VkUmVjdCkKICAgICAgICAgICAgIHBhaW50ZXIuZmlsbFJlY3QoZXhwb3NlZFJl
Y3QsIFF0Ojp3aGl0ZSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc3luY1gpCi0gICAgICAg
ICAgICBRQXBwbGljYXRpb246OnN5bmNYKCk7CisgICAgICAgIGlmIChzaG91bGRTeW5jWCkKKyAg
ICAgICAgICAgIHN5bmNYKCk7CiAgICAgfQogCi0gICAgWEV2ZW50IHhldmVudDsKLSAgICBtZW1z
ZXQoJnhldmVudCwgMCwgc2l6ZW9mKFhFdmVudCkpOwotICAgIFhHcmFwaGljc0V4cG9zZUV2ZW50
JiBleHBvc2VFdmVudCA9IHhldmVudC54Z3JhcGhpY3NleHBvc2U7Ci0gICAgZXhwb3NlRXZlbnQu
dHlwZSA9IEdyYXBoaWNzRXhwb3NlOwotICAgIGV4cG9zZUV2ZW50LmRpc3BsYXkgPSBRWDExSW5m
bzo6ZGlzcGxheSgpOwotICAgIGV4cG9zZUV2ZW50LmRyYXdhYmxlID0gcXREcmF3YWJsZS5oYW5k
bGUoKTsKLSAgICBleHBvc2VFdmVudC54ID0gZXhwb3NlZFJlY3QueCgpOwotICAgIGV4cG9zZUV2
ZW50LnkgPSBleHBvc2VkUmVjdC55KCk7Ci0gICAgZXhwb3NlRXZlbnQud2lkdGggPSBleHBvc2Vk
UmVjdC54KCkgKyBleHBvc2VkUmVjdC53aWR0aCgpOyAvLyBmbGFzaCBidWc/IGl0IHRoaW5rcyB3
aWR0aCBpcyB0aGUgcmlnaHQgaW4gdHJhbnNwYXJlbnQgbW9kZQotICAgIGV4cG9zZUV2ZW50Lmhl
aWdodCA9IGV4cG9zZWRSZWN0LnkoKSArIGV4cG9zZWRSZWN0LmhlaWdodCgpOyAvLyBmbGFzaCBi
dWc/IGl0IHRoaW5rcyBoZWlnaHQgaXMgdGhlIGJvdHRvbSBpbiB0cmFuc3BhcmVudCBtb2RlCisg
ICAgc2V0dXBHcmFwaGljc0V4cG9zZUV2ZW50KHF0RHJhd2FibGUuaGFuZGxlKCksIGV4cG9zZWRS
ZWN0LCB4ZXZlbnQpOworI2VuZGlmCiAKICAgICBkaXNwYXRjaE5QRXZlbnQoeGV2ZW50KTsKIAot
ICAgIGlmIChzeW5jWCkKKyAgICBpZiAoc2hvdWxkU3luY1gpCiAgICAgICAgIFhTeW5jKG1fcGx1
Z2luRGlzcGxheSwgZmFsc2UpOyAvLyBzeW5jIGNoYW5nZXMgYnkgcGx1Z2luCiAKKyNpZiBIQVZF
KFFUNSkKKyAgICBYSW1hZ2UqIHhJbWFnZSA9IFhHZXRJbWFnZSh4MTFEaXNwbGF5KCksIG1fZHJh
d2FibGUsIGV4cG9zZWRSZWN0LngoKSwgZXhwb3NlZFJlY3QueSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4cG9zZWRSZWN0LndpZHRoKCksIGV4cG9zZWRSZWN0LmhlaWdodCgp
LCBVTE9OR19NQVgsIFpQaXhtYXApOworICAgIHBhaW50ZXItPmRyYXdJbWFnZShRUG9pbnQoZXhw
b3NlZFJlY3QueCgpLCBleHBvc2VkUmVjdC55KCkpLCBxaW1hZ2VGcm9tWEltYWdlKHhJbWFnZSks
IGV4cG9zZWRSZWN0KTsKKyAgICBYRGVzdHJveUltYWdlKHhJbWFnZSk7CisjZWxzZQogICAgIHBh
aW50ZXItPmRyYXdQaXhtYXAoUVBvaW50KGV4cG9zZWRSZWN0LngoKSwgZXhwb3NlZFJlY3QueSgp
KSwgcXREcmF3YWJsZSwgZXhwb3NlZFJlY3QpOworI2VuZGlmCiB9CiAKIHZvaWQgUGx1Z2luVmll
dzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpA
QCAtMzMxLDI0ICszODgsMjkgQEAgYm9vbCBQbHVnaW5WaWV3OjpkaXNwYXRjaE5QRXZlbnQoTlBF
dmVudCYgZXZlbnQpCiAgICAgcmV0dXJuIGFjY2VwdGVkOwogfQogCi12b2lkIHNldFNoYXJlZFhF
dmVudEZpZWxkcyhYRXZlbnQqIHhFdmVudCwgUVdpZGdldCogb3duZXJXaWRnZXQpCit2b2lkIHNl
dFNoYXJlZFhFdmVudEZpZWxkcyhYRXZlbnQqIHhFdmVudCwgUVdlYlBhZ2VDbGllbnQqIHBhZ2VD
bGllbnQpCiB7CiAgICAgeEV2ZW50LT54YW55LnNlcmlhbCA9IDA7IC8vIHdlIGFyZSB1bmF3YXJl
IG9mIHRoZSBsYXN0IHJlcXVlc3QgcHJvY2Vzc2VkIGJ5IFggU2VydmVyCiAgICAgeEV2ZW50LT54
YW55LnNlbmRfZXZlbnQgPSBmYWxzZTsKLSAgICB4RXZlbnQtPnhhbnkuZGlzcGxheSA9IFFYMTFJ
bmZvOjpkaXNwbGF5KCk7CisgICAgeEV2ZW50LT54YW55LmRpc3BsYXkgPSB4MTFEaXNwbGF5KCk7
CiAgICAgLy8gTk9URTogZXZlbnQtPnhhbnkud2luZG93IGRvZXNuJ3QgYWx3YXlzIHJlc3BvbmQg
dG8gdGhlIC53aW5kb3cgcHJvcGVydHkgb2Ygb3RoZXIgWEV2ZW50J3MKICAgICAvLyBidXQgZG9l
cyBpbiB0aGUgY2FzZSBvZiBLZXlQcmVzcywgS2V5UmVsZWFzZSwgQnV0dG9uUHJlc3MsIEJ1dHRv
blJlbGVhc2UsIGFuZCBNb3Rpb25Ob3RpZnkKICAgICAvLyBldmVudHM7IHRodXMsIHRoaXMgaXMg
cmlnaHQ6Ci0gICAgeEV2ZW50LT54YW55LndpbmRvdyA9IG93bmVyV2lkZ2V0ID8gb3duZXJXaWRn
ZXQtPndpbmRvdygpLT5oYW5kbGUoKSA6IDA7CisjaWYgSEFWRShRVDUpCisgICAgUVdpbmRvdyog
d2luZG93ID0gcGFnZUNsaWVudCA/IHBhZ2VDbGllbnQtPm93bmVyV2luZG93KCkgOiAwOworICAg
IHhFdmVudC0+eGFueS53aW5kb3cgPSB3aW5kb3cgPyB3aW5kb3ctPndpbklkKCkgOiAwOworI2Vs
c2UKKyAgICBRV2lkZ2V0KiBvd25lcldpZGdldCA9IHBhZ2VDbGllbnQgPyBwYWdlQ2xpZW50LT5v
d25lcldpZGdldCgpIDogMDsKKyAgICB4RXZlbnQtPnhhbnkud2luZG93ID0gb3duZXJXaWRnZXQg
PyBvd25lcldpZGdldC0+d2luZG93KCktPndpbklkKCkgOiAwOworI2VuZGlmCiB9CiAKIHZvaWQg
UGx1Z2luVmlldzo6aW5pdFhFdmVudChYRXZlbnQqIHhFdmVudCkKIHsKICAgICBtZW1zZXQoeEV2
ZW50LCAwLCBzaXplb2YoWEV2ZW50KSk7CiAKLSAgICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0g
bV9wYXJlbnRGcmFtZS0+dmlldygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgp
OwotICAgIFFXaWRnZXQqIG93bmVyV2lkZ2V0ID0gY2xpZW50ID8gY2xpZW50LT5vd25lcldpZGdl
dCgpIDogMDsKLSAgICBzZXRTaGFyZWRYRXZlbnRGaWVsZHMoeEV2ZW50LCBvd25lcldpZGdldCk7
CisgICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IHBsYXRmb3JtUGFnZUNsaWVudCgpOworICAg
IHNldFNoYXJlZFhFdmVudEZpZWxkcyh4RXZlbnQsIGNsaWVudCk7CiB9CiAKIHZvaWQgUGx1Z2lu
Vmlldzo6c2V0WEtleUV2ZW50U3BlY2lmaWNGaWVsZHMoWEV2ZW50KiB4RXZlbnQsIEtleWJvYXJk
RXZlbnQqIGV2ZW50KQpAQCAtMzU2LDcgKzQxOCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0WEtl
eUV2ZW50U3BlY2lmaWNGaWVsZHMoWEV2ZW50KiB4RXZlbnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50
CiAgICAgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50KiBrZXlFdmVudCA9IGV2ZW50LT5rZXlF
dmVudCgpOwogCiAgICAgeEV2ZW50LT50eXBlID0gKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmtleWRvd25FdmVudCkgPyAyIDogMzsgLy8gaW50cyBhcyBRdCB1bnNldHMgS2V5UHJlc3Mg
YW5kIEtleVJlbGVhc2UKLSAgICB4RXZlbnQtPnhrZXkucm9vdCA9IFFYMTFJbmZvOjphcHBSb290
V2luZG93KCk7CisgICAgeEV2ZW50LT54a2V5LnJvb3QgPSByb290V2luZG93SUQoKTsKICAgICB4
RXZlbnQtPnhrZXkuc3Vid2luZG93ID0gMDsgLy8gd2UgaGF2ZSBubyBjaGlsZCB3aW5kb3cKICAg
ICB4RXZlbnQtPnhrZXkudGltZSA9IGV2ZW50LT50aW1lU3RhbXAoKTsKICAgICB4RXZlbnQtPnhr
ZXkuc3RhdGUgPSBrZXlFdmVudC0+bmF0aXZlTW9kaWZpZXJzKCk7CkBAIC0zNzAsNyArNDMyLDcg
QEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRYS2V5RXZlbnRTcGVjaWZpY0ZpZWxkcyhYRXZlbnQqIHhF
dmVudCwgS2V5Ym9hcmRFdmVudCogZXZlbnQKICAgICAgICAgUUtleUV2ZW50KiBxS2V5RXZlbnQg
PSBrZXlFdmVudC0+cXRFdmVudCgpOwogICAgICAgICBBU1NFUlQocUtleUV2ZW50KTsKICAgICAg
ICAgUVN0cmluZyBrZXlUZXh0ID0gcUtleUV2ZW50LT50ZXh0KCkubGVmdCgxKTsKLSAgICAgICAg
eEV2ZW50LT54a2V5LmtleWNvZGUgPSBYS2V5c3ltVG9LZXljb2RlKFFYMTFJbmZvOjpkaXNwbGF5
KCksIFhTdHJpbmdUb0tleXN5bShrZXlUZXh0LnRvVXRmOCgpLmNvbnN0RGF0YSgpKSk7CisgICAg
ICAgIHhFdmVudC0+eGtleS5rZXljb2RlID0gWEtleXN5bVRvS2V5Y29kZSh4MTFEaXNwbGF5KCks
IFhTdHJpbmdUb0tleXN5bShrZXlUZXh0LnRvVXRmOCgpLmNvbnN0RGF0YSgpKSk7CiAgICAgfQog
CiAgICAgeEV2ZW50LT54a2V5LnNhbWVfc2NyZWVuID0gdHJ1ZTsKQEAgLTQxOSw3ICs0ODEsNyBA
QCBzdGF0aWMgdm9pZCBzZXRYQnV0dG9uRXZlbnRTcGVjaWZpY0ZpZWxkcyhYRXZlbnQqIHhFdmVu
dCwgTW91c2VFdmVudCogZXZlbnQsIGNvbgogewogICAgIFhCdXR0b25FdmVudCYgeGJ1dHRvbiA9
IHhFdmVudC0+eGJ1dHRvbjsKICAgICB4YnV0dG9uLnR5cGUgPSBldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCA/IEJ1dHRvblByZXNzIDogQnV0dG9uUmVsZWFzZTsK
LSAgICB4YnV0dG9uLnJvb3QgPSBRWDExSW5mbzo6YXBwUm9vdFdpbmRvdygpOworICAgIHhidXR0
b24ucm9vdCA9IHJvb3RXaW5kb3dJRCgpOwogICAgIHhidXR0b24uc3Vid2luZG93ID0gMDsKICAg
ICB4YnV0dG9uLnRpbWUgPSBldmVudC0+dGltZVN0YW1wKCk7CiAgICAgeGJ1dHRvbi54ID0gcG9z
dFpvb21Qb3MueCgpOwpAQCAtNDQ2LDcgKzUwOCw3IEBAIHN0YXRpYyB2b2lkIHNldFhNb3Rpb25F
dmVudFNwZWNpZmljRmllbGRzKFhFdmVudCogeEV2ZW50LCBNb3VzZUV2ZW50KiBldmVudCwgY29u
CiB7CiAgICAgWE1vdGlvbkV2ZW50JiB4bW90aW9uID0geEV2ZW50LT54bW90aW9uOwogICAgIHht
b3Rpb24udHlwZSA9IE1vdGlvbk5vdGlmeTsKLSAgICB4bW90aW9uLnJvb3QgPSBRWDExSW5mbzo6
YXBwUm9vdFdpbmRvdygpOworICAgIHhtb3Rpb24ucm9vdCA9IHJvb3RXaW5kb3dJRCgpOwogICAg
IHhtb3Rpb24uc3Vid2luZG93ID0gMDsKICAgICB4bW90aW9uLnRpbWUgPSBldmVudC0+dGltZVN0
YW1wKCk7CiAgICAgeG1vdGlvbi54ID0gcG9zdFpvb21Qb3MueCgpOwpAQCAtNDYyLDcgKzUyNCw3
IEBAIHN0YXRpYyB2b2lkIHNldFhDcm9zc2luZ0V2ZW50U3BlY2lmaWNGaWVsZHMoWEV2ZW50KiB4
RXZlbnQsIE1vdXNlRXZlbnQqIGV2ZW50LCBjCiB7CiAgICAgWENyb3NzaW5nRXZlbnQmIHhjcm9z
c2luZyA9IHhFdmVudC0+eGNyb3NzaW5nOwogICAgIHhjcm9zc2luZy50eXBlID0gZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQgPyBFbnRlck5vdGlmeSA6IExlYXZl
Tm90aWZ5OwotICAgIHhjcm9zc2luZy5yb290ID0gUVgxMUluZm86OmFwcFJvb3RXaW5kb3coKTsK
KyAgICB4Y3Jvc3Npbmcucm9vdCA9IHJvb3RXaW5kb3dJRCgpOwogICAgIHhjcm9zc2luZy5zdWJ3
aW5kb3cgPSAwOwogICAgIHhjcm9zc2luZy50aW1lID0gZXZlbnQtPnRpbWVTdGFtcCgpOwogICAg
IHhjcm9zc2luZy54ID0gcG9zdFpvb21Qb3MueSgpOwpAQCAtNTcxLDYgKzYzMyw3IEBAIHZvaWQg
UGx1Z2luVmlldzo6c2V0TlBXaW5kb3dJZk5lZWRlZCgpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2hhc1BlbmRpbmdHZW9tZXRyeUNoYW5nZSA9IGZhbHNlOwogCisjaWYgIUhBVkUoUVQ1KSAvLyBX
aW5kb3dlZCBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBRdDUgeWV0CiAgICAgaWYgKG1faXNX
aW5kb3dlZCkgewogICAgICAgICBRV2lkZ2V0KiB3aWRnZXQgPSBzdGF0aWNfY2FzdDxRV2lkZ2V0
Kj4ocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSk7CiAgICAgICAgIHdpZGdldC0+c2V0R2VvbWV0cnko
bV93aW5kb3dSZWN0KTsKQEAgLTU5MCw3ICs2NTMsOSBAQCB2b2lkIFBsdWdpblZpZXc6OnNldE5Q
V2luZG93SWZOZWVkZWQoKQogCiAgICAgICAgIG1fbnBXaW5kb3cueCA9IG1fd2luZG93UmVjdC54
KCk7CiAgICAgICAgIG1fbnBXaW5kb3cueSA9IG1fd2luZG93UmVjdC55KCk7Ci0gICAgfSBlbHNl
IHsKKyAgICB9IGVsc2UKKyNlbmRpZgorICAgIHsKICAgICAgICAgbV9ucFdpbmRvdy54ID0gMDsK
ICAgICAgICAgbV9ucFdpbmRvdy55ID0gMDsKICAgICB9CkBAIC02MzksOCArNzA0LDEwIEBAIHZv
aWQgUGx1Z2luVmlldzo6c2V0UGFyZW50VmlzaWJsZShib29sIHZpc2libGUpCiAKICAgICBXaWRn
ZXQ6OnNldFBhcmVudFZpc2libGUodmlzaWJsZSk7CiAKKyNpZiAhSEFWRShRVDUpIC8vIFdpbmRv
d2VkIG1vZGUgaXMgbm90IHN1cHBvcnRlZCB3aXRoIFF0NSB5ZXQuCiAgICAgaWYgKGlzU2VsZlZp
c2libGUoKSAmJiBwbGF0Zm9ybVBsdWdpbldpZGdldCgpKQogICAgICAgICBzdGF0aWNfY2FzdDxR
V2lkZ2V0Kj4ocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSktPnNldFZpc2libGUodmlzaWJsZSk7Cisj
ZW5kaWYKIH0KIAogTlBFcnJvciBQbHVnaW5WaWV3OjpoYW5kbGVQb3N0UmVhZEZpbGUoVmVjdG9y
PGNoYXI+JiBidWZmZXIsIHVpbnQzMl90IGxlbiwgY29uc3QgY2hhciogYnVmKQpAQCAtNzAxLDcg
Kzc2OCw3IEBAIGJvb2wgUGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZShOUE5WYXJpYWJsZSB2
YXJpYWJsZSwgdm9pZCogdmFsdWUsIE5QRXJyb3IqIHJlCiB7CiAgICAgc3dpdGNoICh2YXJpYWJs
ZSkgewogICAgIGNhc2UgTlBOVnhEaXNwbGF5OgotICAgICAgICAqKHZvaWQgKiopdmFsdWUgPSBR
WDExSW5mbzo6ZGlzcGxheSgpOworICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHZh
bHVlKSA9IHgxMURpc3BsYXkoKTsKICAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNzEwLDkgKzc3NywxMyBAQCBib29sIFBsdWdpblZp
ZXc6OnBsYXRmb3JtR2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlLCBO
UEVycm9yKiByZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgTlBOVm5ldHNjYXBl
V2luZG93OiB7Ci0gICAgICAgIHZvaWQqIHcgPSByZWludGVycHJldF9jYXN0PHZvaWQqPih2YWx1
ZSk7Ci0gICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBtX3BhcmVudEZyYW1lLT52aWV3
KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7Ci0gICAgICAgICooKFhJRCAq
KXcpID0gY2xpZW50ID8gY2xpZW50LT5vd25lcldpZGdldCgpLT53aW5kb3coKS0+d2luSWQoKSA6
IDA7CisgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBwbGF0Zm9ybVBhZ2VDbGllbnQo
KTsKKyNpZiBIQVZFKFFUNSkKKyAgICAgICAgUVdpbmRvdyogd2luZG93ID0gY2xpZW50ID8gY2xp
ZW50LT5vd25lcldpbmRvdygpIDogMDsKKyAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8WElEKj4o
dmFsdWUpID0gd2luZG93ID8gd2luZG93LT53aW5JZCgpIDogMDsKKyNlbHNlCisgICAgICAgICpy
ZWludGVycHJldF9jYXN0PFhJRCo+KHZhbHVlKSA9IGNsaWVudCA/IGNsaWVudC0+b3duZXJXaWRn
ZXQoKS0+d2luZG93KCktPndpbklkKCkgOiAwOworI2VuZGlmCiAgICAgICAgICpyZXN1bHQgPSBO
UEVSUl9OT19FUlJPUjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNzM5LDYgKzgx
MCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVj
dCkKICAgICB9CiAjZW5kaWYKIAorI2lmICFIQVZFKFFUNSkgLy8gV2luZG93ZWQgbW9kZSBpcyBu
b3Qgc3VwcG9ydGVkIHdpdGggUXQ1IHlldC4KICAgICBpZiAobV9pc1dpbmRvd2VkKSB7CiAgICAg
ICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKSB7CiAgICAgICAgICAgICAvLyB1cGRhdGUoKSB3aWxs
IHNjaGVkdWxlIGEgcmVwYWludCBvZiB0aGUgd2lkZ2V0IHNvIGVuc3VyZQpAQCAtNzQ5LDYgKzgy
MSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVj
dCkKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmCiAKICAgICBpbnZh
bGlkYXRlV2luZG93bGVzc1BsdWdpblJlY3QocmVjdCk7CiB9CkBAIC04MDMsNDcgKzg3Niw1MyBA
QCBzdGF0aWMgRGlzcGxheSAqZ2V0UGx1Z2luRGlzcGxheSgpCiAgICAgcmV0dXJuIChEaXNwbGF5
KilnZGtfeDExX2Rpc3BsYXlfZ2V0X3hkaXNwbGF5KGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkp
OwogfQogCi1zdGF0aWMgdm9pZCBnZXRWaXN1YWxBbmRDb2xvcm1hcChpbnQgZGVwdGgsIFZpc3Vh
bCAqKnZpc3VhbCwgQ29sb3JtYXAgKmNvbG9ybWFwKQorc3RhdGljIGJvb2wgZ2V0VmlzdWFsQW5k
Q29sb3JtYXAoaW50IGRlcHRoLCBWaXN1YWwqJiB2aXN1YWwsIENvbG9ybWFwJiBjb2xvcm1hcCwg
Ym9vbCBmb3JjZUFSR0IzMikKIHsKLSAgICAqdmlzdWFsID0gMDsKLSAgICAqY29sb3JtYXAgPSAw
OworICAgIEFTU0VSVChkZXB0aCA9PSAzMiB8fCAhZm9yY2VBUkdCMzIpOwogCi0jaWZuZGVmIFFU
X05PX1hSRU5ERVIKKyAgICB2aXN1YWwgPSAwOworICAgIGNvbG9ybWFwID0gMDsKKworI2lmICFI
QVZFKFFUNSkgJiYgIWRlZmluZWQoUVRfTk9fWFJFTkRFUikKICAgICBzdGF0aWMgY29uc3QgYm9v
bCB1c2VYUmVuZGVyID0gcWdldGVudigiUVRfWDExX05PX1hSRU5ERVIiKS5pc051bGwoKTsgLy8g
U2hvdWxkIGFsc28gY2hlY2sgZm9yIFhSZW5kZXIgPj0gMC41CiAjZWxzZQogICAgIHN0YXRpYyBj
b25zdCBib29sIHVzZVhSZW5kZXIgPSBmYWxzZTsKICNlbmRpZgotCi0gICAgaWYgKCF1c2VYUmVu
ZGVyICYmIGRlcHRoID09IDMyKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCF1c2VYUmVuZGVy
ICYmIGZvcmNlQVJHQjMyKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpbnQgbnZpOwog
ICAgIFhWaXN1YWxJbmZvIHRlbXBsOwotICAgIHRlbXBsLnNjcmVlbiAgPSBRWDExSW5mbzo6YXBw
U2NyZWVuKCk7CisgICAgdGVtcGwuc2NyZWVuICA9IHgxMVNjcmVlbigpOwogICAgIHRlbXBsLmRl
cHRoICAgPSBkZXB0aDsKICAgICB0ZW1wbC5jX2NsYXNzID0gVHJ1ZUNvbG9yOwotICAgIFhWaXN1
YWxJbmZvKiB4dmkgPSBYR2V0VmlzdWFsSW5mbyhRWDExSW5mbzo6ZGlzcGxheSgpLCBWaXN1YWxT
Y3JlZW5NYXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwgVmlzdWFsQ2xhc3NNYXNrLCAmdGVtcGwsICZu
dmkpOwotCisgICAgWFZpc3VhbEluZm8qIHh2aSA9IFhHZXRWaXN1YWxJbmZvKHgxMURpc3BsYXko
KSwgVmlzdWFsU2NyZWVuTWFzayB8IFZpc3VhbERlcHRoTWFzayB8IFZpc3VhbENsYXNzTWFzaywg
JnRlbXBsLCAmbnZpKTsKKyAgICBBU1NFUlQoeHZpIHx8IGZvcmNlQVJHQjMyKTsKICAgICBpZiAo
IXh2aSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSNpZm5kZWYg
UVRfTk9fWFJFTkRFUgotICAgIGlmIChkZXB0aCA9PSAzMikgeworI2lmICFIQVZFKFFUNSkgJiYg
IWRlZmluZWQoUVRfTk9fWFJFTkRFUikKKyAgICBpZiAoZm9yY2VBUkdCMzIpIHsKICAgICAgICAg
Zm9yIChpbnQgaWR4ID0gMDsgaWR4IDwgbnZpOyArK2lkeCkgewotICAgICAgICAgICAgWFJlbmRl
clBpY3RGb3JtYXQqIGZvcm1hdCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KFFYMTFJbmZvOjpk
aXNwbGF5KCksIHh2aVtpZHhdLnZpc3VhbCk7CisgICAgICAgICAgICBYUmVuZGVyUGljdEZvcm1h
dCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQoeDExRGlzcGxheSgpLCB4dmlbaWR4
XS52aXN1YWwpOwogICAgICAgICAgICAgaWYgKGZvcm1hdC0+dHlwZSA9PSBQaWN0VHlwZURpcmVj
dCAmJiBmb3JtYXQtPmRpcmVjdC5hbHBoYU1hc2spIHsKLSAgICAgICAgICAgICAgICAgKnZpc3Vh
bCA9IHh2aVtpZHhdLnZpc3VhbDsKKyAgICAgICAgICAgICAgICAgdmlzdWFsID0geHZpW2lkeF0u
dmlzdWFsOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIXZpc3VhbCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9IGVsc2UKLSNlbmRpZiAvLyBRVF9OT19YUkVOREVSCi0gICAgICAgICp2aXN1
YWwgPSB4dmlbMF0udmlzdWFsOworI2VuZGlmCisgICAgeworICAgICAgICB2aXN1YWwgPSB4dmlb
MF0udmlzdWFsOworICAgIH0KKyAgICBBU1NFUlQodmlzdWFsKTsKIAogICAgIFhGcmVlKHh2aSk7
CiAKLSAgICBpZiAoKnZpc3VhbCkKLSAgICAgICAgKmNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFw
KFFYMTFJbmZvOjpkaXNwbGF5KCksIFFYMTFJbmZvOjphcHBSb290V2luZG93KCksICp2aXN1YWws
IEFsbG9jTm9uZSk7CisgICAgY29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoeDExRGlzcGxheSgp
LCByb290V2luZG93SUQoKSwgdmlzdWFsLCBBbGxvY05vbmUpOworICAgIHJldHVybiB0cnVlOwog
fQogCiBib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtU3RhcnQoKQpAQCAtODUxLDYgKzkzMCwyOCBA
QCBib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtU3RhcnQoKQogICAgIEFTU0VSVChtX2lzU3RhcnRl
ZCk7CiAgICAgQVNTRVJUKG1fc3RhdHVzID09IFBsdWdpblN0YXR1c0xvYWRlZFN1Y2Nlc3NmdWxs
eSk7CiAKKyAgICBpZiAoIXgxMUVudmlyb25tZW50LmRpc3BsYXkpIHsKKyAgICAgICAgRGlzcGxh
eSogZGlzcGxheTsKKyNpZiBIQVZFKFFUNSkKKyAgICAgICAgUVdlYlBhZ2VDbGllbnQqIHBhZ2VD
bGllbnQgPSBwbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICAgICAgaWYgKCFwYWdlQ2xpZW50KQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBRV2luZG93KiB3aW5kb3cgPSBwYWdl
Q2xpZW50LT5vd25lcldpbmRvdygpOworICAgICAgICBkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8RGlz
cGxheSo+KFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZvcm1OYXRpdmVJbnRlcmZhY2UoKS0+bmF0aXZl
UmVzb3VyY2VGb3JXaW5kb3coImRpc3BsYXkiLCB3aW5kb3cpKTsKKyNlbHNlCisgICAgICAgIGRp
c3BsYXkgPSBRWDExSW5mbzo6ZGlzcGxheSgpOworI2VuZGlmCisgICAgICAgIHgxMUVudmlyb25t
ZW50LmRpc3BsYXkgPSBkaXNwbGF5OworICAgICAgICB4MTFFbnZpcm9ubWVudC5zY3JlZW5JRCA9
IFhEZWZhdWx0U2NyZWVuKGRpc3BsYXkpOworICAgICAgICB4MTFFbnZpcm9ubWVudC5kaXNwbGF5
RGVwdGggPSBYRGVmYXVsdERlcHRoKGRpc3BsYXksIHgxMUVudmlyb25tZW50LnNjcmVlbklEKTsK
KyAgICAgICAgeDExRW52aXJvbm1lbnQucm9vdFdpbmRvd0lEID0gWERlZmF1bHRSb290V2luZG93
KGRpc3BsYXkpOworICAgIH0KKworI2lmIEhBVkUoUVQ1KQorICAgIC8vIFdpbmRvd2VkIG1vZGUg
aXMgbm90IHN1cHBvcnRlZCB3aXRoIFF0NSB5ZXQuCisgICAgaWYgKG1faXNXaW5kb3dlZCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKICAgICBpZiAobV9wbHVnaW4tPnBsdWdpbkZ1bmNz
KCktPmdldHZhbHVlKSB7CiAgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3
KHRoaXMpOwogI2lmIFVTRShKU0MpCkBAIC04NjMsNyArOTY0LDcgQEAgYm9vbCBQbHVnaW5WaWV3
OjpwbGF0Zm9ybVN0YXJ0KCkKICAgICB9CiAKICAgICBpZiAobV9pc1dpbmRvd2VkKSB7Ci0gICAg
ICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBtX3BhcmVudEZyYW1lLT52aWV3KCktPmhvc3RX
aW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBj
bGllbnQgPSBwbGF0Zm9ybVBhZ2VDbGllbnQoKTsKICAgICAgICAgaWYgKG1fbmVlZHNYRW1iZWQg
JiYgY2xpZW50KSB7CiAgICAgICAgICAgICBzZXRQbGF0Zm9ybVdpZGdldChuZXcgUGx1Z2luQ29u
dGFpbmVyUXQodGhpcywgY2xpZW50LT5vd25lcldpZGdldCgpKSk7CiAgICAgICAgICAgICAvLyBz
eW5jIG91ciBYRW1iZWQgY29udGFpbmVyIHdpbmRvdyBjcmVhdGlvbiBiZWZvcmUgc2VuZGluZyB0
aGUgeGlkIHRvIHBsdWdpbnMuCkBAIC04NzMsNyArOTc0LDkgQEAgYm9vbCBQbHVnaW5WaWV3Ojpw
bGF0Zm9ybVN0YXJ0KCkKICAgICAgICAgICAgIG1fc3RhdHVzID0gUGx1Z2luU3RhdHVzQ2FuTm90
TG9hZFBsdWdpbjsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgIH0g
ZWxzZSB7CisgICAgfSBlbHNlCisjZW5kaWYgLy8gSEFWRShRVDUpCisgICAgewogICAgICAgICBz
ZXRQbGF0Zm9ybVdpZGdldCgwKTsKICAgICAgICAgbV9wbHVnaW5EaXNwbGF5ID0gZ2V0UGx1Z2lu
RGlzcGxheSgpOwogCkBAIC04OTMsNiArOTk2LDcgQEAgYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9y
bVN0YXJ0KCkKICAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiB3c2kgPSBuZXcgTlBTZXRX
aW5kb3dDYWxsYmFja1N0cnVjdCgpOwogICAgIHdzaS0+dHlwZSA9IDA7CiAKKyNpZiAhSEFWRShR
VDUpCiAgICAgaWYgKG1faXNXaW5kb3dlZCkgewogICAgICAgICBjb25zdCBRWDExSW5mbyogeDEx
SW5mbyA9ICZzdGF0aWNfY2FzdDxRV2lkZ2V0Kj4ocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSktPngx
MUluZm8oKTsKIApAQCAtOTA1LDIwICsxMDA5LDI0IEBAIGJvb2wgUGx1Z2luVmlldzo6cGxhdGZv
cm1TdGFydCgpCiAgICAgICAgIG1fbnBXaW5kb3cud2luZG93ID0gKHZvaWQqKXN0YXRpY19jYXN0
PFFXaWRnZXQqPihwbGF0Zm9ybVBsdWdpbldpZGdldCgpKS0+d2luSWQoKTsKICAgICAgICAgbV9u
cFdpbmRvdy53aWR0aCA9IC0xOwogICAgICAgICBtX25wV2luZG93LmhlaWdodCA9IC0xOwotICAg
IH0gZWxzZSB7CisgICAgfSBlbHNlCisjZW5kaWYKKyAgICB7CisjaWYgIUhBVkUoUVQ1KQogICAg
ICAgICBjb25zdCBRWDExSW5mbyogeDExSW5mbyA9ICZRQXBwbGljYXRpb246OmRlc2t0b3AoKS0+
eDExSW5mbygpOwotCi0gICAgICAgIGlmICh4MTFJbmZvLT5kZXB0aCgpID09IDMyIHx8ICFtX3Bs
dWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtSZXF1aXJlc0RlZmF1bHRTY3JlZW5E
ZXB0aCkpIHsKLSAgICAgICAgICAgIGdldFZpc3VhbEFuZENvbG9ybWFwKDMyLCAmbV92aXN1YWws
ICZtX2NvbG9ybWFwKTsKKyAgICAgICAgaWYgKCh4MTFJbmZvLT5kZXB0aCgpID09IDMyIHx8ICFt
X3BsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtSZXF1aXJlc0RlZmF1bHRTY3Jl
ZW5EZXB0aCkpCisgICAgICAgICAgICAgJiYgZ2V0VmlzdWFsQW5kQ29sb3JtYXAoMzIsIG1fdmlz
dWFsLCBtX2NvbG9ybWFwLCAvKiBmb3JjZUFSR0IzMiA9ICovIHRydWUpKQogICAgICAgICAgICAg
d3NpLT5kZXB0aCA9IDMyOworICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgeworICAgICAg
ICAgICAgaW50IGRlcHRoID0gZGlzcGxheURlcHRoKCk7CisgICAgICAgICAgICBib29sIGZvdW5k
ID0gZ2V0VmlzdWFsQW5kQ29sb3JtYXAoZGVwdGgsIG1fdmlzdWFsLCBtX2NvbG9ybWFwLCAvKiBm
b3JjZUFSR0IzMiA9ICovIGZhbHNlKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoZm91bmQs
IGZvdW5kKTsKKyAgICAgICAgICAgIHdzaS0+ZGVwdGggPSBkZXB0aDsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmICghbV92aXN1YWwpIHsKLSAgICAgICAgICAgIGdldFZpc3VhbEFuZENvbG9ybWFw
KHgxMUluZm8tPmRlcHRoKCksICZtX3Zpc3VhbCwgJm1fY29sb3JtYXApOwotICAgICAgICAgICAg
d3NpLT5kZXB0aCA9IHgxMUluZm8tPmRlcHRoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB3c2kt
PmRpc3BsYXkgPSB4MTFJbmZvLT5kaXNwbGF5KCk7CisgICAgICAgIHdzaS0+ZGlzcGxheSA9IHgx
MURpc3BsYXkoKTsKICAgICAgICAgd3NpLT52aXN1YWwgPSBtX3Zpc3VhbDsKICAgICAgICAgd3Np
LT5jb2xvcm1hcCA9IG1fY29sb3JtYXA7CiAKQEAgLTk0NiwxMCArMTA1NCwxMCBAQCB2b2lkIFBs
dWdpblZpZXc6OnBsYXRmb3JtRGVzdHJveSgpCiAgICAgICAgIGRlbGV0ZSBwbGF0Zm9ybVBsdWdp
bldpZGdldCgpOwogCiAgICAgaWYgKG1fZHJhd2FibGUpCi0gICAgICAgIFhGcmVlUGl4bWFwKFFY
MTFJbmZvOjpkaXNwbGF5KCksIG1fZHJhd2FibGUpOworICAgICAgICBYRnJlZVBpeG1hcCh4MTFE
aXNwbGF5KCksIG1fZHJhd2FibGUpOwogCiAgICAgaWYgKG1fY29sb3JtYXApCi0gICAgICAgIFhG
cmVlQ29sb3JtYXAoUVgxMUluZm86OmRpc3BsYXkoKSwgbV9jb2xvcm1hcCk7CisgICAgICAgIFhG
cmVlQ29sb3JtYXAoeDExRGlzcGxheSgpLCBtX2NvbG9ybWFwKTsKIH0KIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCmlu
ZGV4IGNhMjY0YzhhZjAzNzNkMzZlZmY5MWQzMjdmZjU5YTUxMDRiOTllOWEuLjRlMDE4MzZmNzc4
NGM3OWFhMmZhYTA4MTdkZTcyYmYyNTQwYWI1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNl
dHRpbmdzLmNwcApAQCAtMTE3NCw3ICsxMTc0LDExIEBAIHZvaWQgUVdlYlNldHRpbmdzOjplbmFi
bGVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBRU3RyaW5nJiBwYXRoKQogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCiAgICAgLy8gQWxsIGFwcGxpY2F0aW9ucyBjYW4g
c2hhcmUgdGhlIGNvbW1vbiBRdFdlYmtpdCBjYWNoZSBmaWxlKHMpLgogICAgIC8vIFBhdGggaXMg
bm90IGNvbmZpZ3VyYWJsZSBhbmQgdXNlcyBRRGVza3RvcFNlcnZpY2VzOjpDYWNoZUxvY2F0aW9u
IGJ5IGRlZmF1bHQuCisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDAp
CisgICAgUVN0cmluZyBjYWNoZVBhdGggPSBRU3RhbmRhcmRQYXRoczo6d3JpdGFibGVMb2NhdGlv
bihRU3RhbmRhcmRQYXRoczo6Q2FjaGVMb2NhdGlvbik7CisjZWxzZQogICAgIFFTdHJpbmcgY2Fj
aGVQYXRoID0gUURlc2t0b3BTZXJ2aWNlczo6c3RvcmFnZUxvY2F0aW9uKFFEZXNrdG9wU2Vydmlj
ZXM6OkNhY2hlTG9jYXRpb24pOworI2VuZGlmCiAgICAgV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9y
aWVzKGNhY2hlUGF0aCk7CiAKICAgICBRRmlsZUluZm8gaW5mbyhjYWNoZVBhdGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHAKaW5kZXggYjZkODUwM2NlZjY3YjY3YjJiNDVlZTBkOWJkY2RhMjhlNTc1YjRjNy4uNjVh
OTZkMDNhYTA0NWMzMmMxNjgxMzYyMDJlY2U3MjgwZGY3YzY4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBA
IC0xNjIxLDkgKzE2MjEsMTQgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLAogICAgICAgICBWZWN0
b3I8U3RyaW5nPiBwYXJhbXMgPSBwYXJhbU5hbWVzOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiB2
YWx1ZXMgPSBwYXJhbVZhbHVlczsKICAgICAgICAgaWYgKG1pbWVUeXBlID09ICJhcHBsaWNhdGlv
bi94LXNob2Nrd2F2ZS1mbGFzaCIpIHsKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hF
Q0soNSwgMCwgMCkKKyAgICAgICAgICAgIGNvbnN0IGJvb2wgc2hvdWxkSW5qZWN0V21vZGUgPSB0
cnVlOworI2Vsc2UKKyAgICAgICAgICAgIC8vIEluamVjdCB3bW9kZT1vcGFxdWUgd2hlbiB0aGVy
ZSBpcyBubyBjbGllbnQgb3IgdGhlIGNsaWVudCBpcyBub3QgYSBRV2ViVmlldy4KICAgICAgICAg
ICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBtX3dlYkZyYW1lLT5wYWdlKCktPmQtPmNsaWVu
dC5nZXQoKTsKLSAgICAgICAgICAgIGNvbnN0IGJvb2wgaXNRV2ViVmlldyA9IGNsaWVudCAmJiBx
b2JqZWN0X2Nhc3Q8UVdpZGdldCo+KGNsaWVudC0+cGx1Z2luUGFyZW50KCkpOwotICAgICAgICAg
ICAgaWYgKCFpc1FXZWJWaWV3KSB7CisgICAgICAgICAgICBjb25zdCBib29sIHNob3VsZEluamVj
dFdtb2RlID0gIShjbGllbnQgJiYgcW9iamVjdF9jYXN0PFFXaWRnZXQqPihjbGllbnQtPnBsdWdp
blBhcmVudCgpKSk7CisjZW5kaWYKKyAgICAgICAgICAgIGlmIChzaG91bGRJbmplY3RXbW9kZSkg
ewogICAgICAgICAgICAgICAgIC8vIEluamVjdCB3bW9kZT1vcGFxdWUgd2hlbiB0aGVyZSBpcyBu
byBjbGllbnQgb3IgdGhlIGNsaWVudCBpcyBub3QgYSBRV2ViVmlldy4KICAgICAgICAgICAgICAg
ICBzaXplX3Qgd21vZGVJbmRleCA9IHBhcmFtcy5maW5kKCJ3bW9kZSIpOwogICAgICAgICAgICAg
ICAgIGlmICh3bW9kZUluZGV4ID09IFdURjo6bm90Rm91bmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcAppbmRleCA2Zjk2Y2UxYmE3YTdh
OTU2ZjkyYTk0OTBhMmVjYWZkM2MzM2EzOTYxLi40N2JhNmQ2YzE4N2EzNTIyMmI4YTRmMmZlZWNj
NzVlMzYwYWQ2OWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1BhZ2VDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Q
YWdlQ2xpZW50UXQuY3BwCkBAIC0yMyw2ICsyMyw5IEBACiAKICNpbmNsdWRlIDxRR3JhcGhpY3NT
Y2VuZT4KICNpbmNsdWRlIDxRR3JhcGhpY3NWaWV3PgorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVS
U0lPTl9DSEVDSyg1LCAwLCAwKQorI2luY2x1ZGUgPFF0V2lkZ2V0cy9wcml2YXRlL3FhcHBsaWNh
dGlvbl9wLmg+CisjZW5kaWYKICNpZiBkZWZpbmVkKFFfV1NfWDExKQogI2luY2x1ZGUgPFFYMTFJ
bmZvPgogI2VuZGlmCkBAIC0yMzEsNiArMjM0LDEzIEBAIHZvaWQgUGFnZUNsaWVudFFXaWRnZXQ6
OmNyZWF0ZVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQz
CiB9CiAjZW5kaWYKIAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg1LCAwLCAw
KQorUVdpbmRvdyogUGFnZUNsaWVudFFXaWRnZXQ6Om93bmVyV2luZG93KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdmlldy0+d2luZG93SGFuZGxlKCk7Cit9CisjZW5kaWYKKwogI2lmICFkZWZpbmVk
KFFUX05PX0dSQVBISUNTVklFVykKIFBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6On5QYWdlQ2xp
ZW50UUdyYXBoaWNzV2lkZ2V0KCkKIHsKQEAgLTQ4MSw0ICs0OTEsMTEgQEAgdm9pZCBQYWdlQ2xp
ZW50UUdyYXBoaWNzV2lkZ2V0OjpjcmVhdGVQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKFBsYXRm
b3JtR3JhcGhpY3MKIH0KICNlbmRpZgogCisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NI
RUNLKDUsIDAsIDApCitRV2luZG93KiBQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0Ojpvd25lcldp
bmRvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG93bmVyV2lkZ2V0KCkgPyBRQXBwbGljYXRpb25Q
cml2YXRlOjp3aW5kb3dGb3JXaWRnZXQob3duZXJXaWRnZXQoKSkgOiAwOworfQorI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1BhZ2VDbGllbnRRdC5oCmluZGV4IDlhMjYzNjU3MjFjODQ1NmIzMzNlY2MwODdlNWRmYWVh
YzllYTNhMmMuLjQ5YjY4MzI5YjEyYTMzOGY4M2Q4MmI2NzM0ZGNiYjVkZDA4MWQzMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmgKKysr
IGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuaApAQCAtMTA0
LDYgKzEwNCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGxhdGZvcm1HcmFwaGljc1N1cmZhY2UzRCopOwogI2VuZGlmCiAKKyNp
ZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNSwgMCwgMCkKKyAgICB2aXJ0dWFsIFFX
aW5kb3cqIG93bmVyV2luZG93KCkgY29uc3Q7CisjZW5kaWYKKwogICAgIFFXaWRnZXQqIHZpZXc7
CiAgICAgUVdlYlBhZ2UqIHBhZ2U7CiAKQEAgLTIxMiw2ICsyMTYsMTAgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtR3Jh
cGhpY3NTdXJmYWNlM0QqKTsKICNlbmRpZgogCisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9O
X0NIRUNLKDUsIDAsIDApCisgICAgdmlydHVhbCBRV2luZG93KiBvd25lcldpbmRvdygpIGNvbnN0
OworI2VuZGlmCisKICAgICB2b2lkIGNyZWF0ZU9yRGVsZXRlT3ZlcmxheSgpOwogCiAjaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXBpLnByaSBiL1NvdXJj
ZS9hcGkucHJpCmluZGV4IDZjMmRmN2I3MDdlZmYyZDZhNzQ5MjUyOGE2OTcwZWMzYTM0ODFhMGQu
LjEwMGRlMjdiNmRiZDY4OWIzNDc0YmI5MTFjMzU5YTA0ZjY3YzI4YzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9hcGkucHJpCisrKyBiL1NvdXJjZS9hcGkucHJpCkBAIC0xNDMsNyArMTQzLDcgQEAgV0VC
S0lUICs9IHdlYmNvcmUKIH0KIAogUVQgKz0gbmV0d29yawotaGF2ZVF0KDUpOiBRVCArPSB3aWRn
ZXRzIHByaW50c3VwcG9ydCBxdWljaworaGF2ZVF0KDUpOiBRVCArPSBjb3JlLXByaXZhdGUgZ3Vp
LXByaXZhdGUgd2lkZ2V0cyB3aWRnZXRzLXByaXZhdGUgcHJpbnRzdXBwb3J0IHF1aWNrCiAKIGNv
bnRhaW5zKERFRklORVMsIFdURl9VU0VfVEVYVFVSRV9NQVBQRVJfR0w9MSl8Y29udGFpbnMoREVG
SU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICBRVCAqPSBvcGVuZ2wKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YjIxZGI2NGUzMTFkMmMxNmE4
NTNkM2E3M2M2Nzc5NTIxMzU1ZDk4Li43ZTE3ZmMyNWI3ZTU1ZDkzNGFkNTY5NDY0OGE3MDhkZDc5
YmFkY2M0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDQtMjQgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3
ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gWDExIHBsdWdpbnMgbmVlZCB0byBiZSByZXdvcmtl
ZCBmb3IgUXQ1K1dLMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODA2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnQgYmFzaWMgd2luZG93bGVzcyBwbHVnaW4gc3VwcG9ydCB3aXRoIFF0NS4K
KworICAgICAgICAqIHFtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmOiBFbmFibGUg
TlBBUEkKKyAgICAgICAgcGx1Z2lucyBpZiBYMTEgbGlicmFyaWVzIGFyZSBhdmFpbGFibGUuCisK
IDIwMTItMDQtMjQgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNv
bT4KIAogICAgICAgICBbRUZMXSBFbmFibGUgV2ViIFRpbWluZwpkaWZmIC0tZ2l0IGEvVG9vbHMv
cW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNz
L2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgppbmRleCA4ZjYxNzVlY2U0Nzk1NGQxMDA3Yzg4ZmEyNGRl
OTVjNWQwZDcyM2ViLi4zN2RjOTk0MmRlMjY4OWJjNWYxYWExZDIyZTYyMjVhMTIxMzhjOGIzIDEw
MDY0NAotLS0gYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgorKysg
Yi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgpAQCAtMTM3LDcgKzEz
NywxMCBAQCBoYXZlUXQoNSkgewogCiAjIE5lc2NhcGUgcGx1Z2lucyBzdXBwb3J0IChOUEFQSSkK
ICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQST0uKSB7Ci0gICAg
dW5peDpoYXZlUXQoNCl8d2luMzItKjohZW1iZWRkZWQ6IXdpbmNlKjogeworICAgIGhhdmVRdCg1
KTp4bGliQXZhaWxhYmxlKCkgeworICAgICAgICBERUZJTkVTICs9IEVOQUJMRV9ORVRTQ0FQRV9Q
TFVHSU5fQVBJPTEKKyAgICAgICAgQ09ORklHICs9IHBsdWdpbl9iYWNrZW5kX3hsaWIKKyAgICB9
IGVsc2U6IHVuaXh8d2luMzItKjohZW1iZWRkZWQ6IXdpbmNlKiB7CiAgICAgICAgIERFRklORVMg
Kz0gRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEk9MQogICAgIH0gZWxzZSB7CiAgICAgICAgIERF
RklORVMgKz0gRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEk9MApkaWZmIC0tZ2l0IGEvQ2hhbmdl
TG9nIGIvQ2hhbmdlTG9nCmluZGV4IGRiMDEzMWZhZGYyNmUxNjIyMjg0NWUyYmUyOTcxODMyZjhj
YmIzMTYuLjZkNjNlMWZjZWE3MDM0ZmRkOGVjNDdkMzdiOWFhNjg1NzRmNzZhMWQgMTAwNjQ0Ci0t
LSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNC0y
NCAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBY
MTEgcGx1Z2lucyBuZWVkIHRvIGJlIHJld29ya2VkIGZvciBRdDUrV0sxCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDY5MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyB3aW5kb3ds
ZXNzIHBsdWdpbiBzdXBwb3J0IHdpdGggUXQ1LgorCisgICAgICAgICogU291cmNlL2FwaS5wcmk6
IE5lZWQgcHJpdmF0ZSBBUEkncyB0byBiZSBhYmxlCisgICAgICAgIHRvIHVzZSBRQXBwbGljYXRp
b25Qcml2YXRlOjp3aW5kb3dGb3JXaWRnZXQuCisKIDIwMTItMDQtMjQgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBFbmFibGUg
V2ViIFRpbWluZwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140532</attachid>
            <date>2012-05-07 08:41:15 -0700</date>
            <delta_ts>2012-05-08 01:41:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80691-20120507174113.patch</filename>
            <type>text/plain</type>
            <size>34391</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg1ZDA0OTNjMzAwMzM3
MTUzOTMxY2E4NjEzZTg1ZWYxMjQ0NzJlMC4uMjVhYTRjNmI2NDAyYWQ4OTVkZGExZTQ5MzVjZjQ0
ZDI0YmRkYjU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTA1LTA3ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIFgxMSBwbHVn
aW5zIG5lZWQgdG8gYmUgcmV3b3JrZWQgZm9yIFF0NStXSzEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHdpbmRvd2xlc3MgcGx1
Z2luIHN1cHBvcnQgd2l0aCBRdDUuCisgICAgICAgIFRoZSBzb2x1dGlvbiBpcyB0aGUgc2FtZSB0
aGF0IGhhcyBiZWVuIGNob3NlbiBmb3IKKyAgICAgICAgV2ViS2l0Mi4gV2UgZ2V0IHRoZSBjb250
ZW50IGRyYXdlZCBieSB0aGUgcGx1Z2luCisgICAgICAgIGZyb20gdGhlIFggc2VydmVyIGFzIGFu
IGltYWdlLCBjcmVhdGUgYSBRSW1hZ2UKKyAgICAgICAgZnJvbSBpdCBhbmQgcGFpbnQgaXQgdG8g
dGhlIHdpbmRvdyBzdXJmYWNlIHdpdGggUVBhaW50ZXIuCisgICAgICAgIFBlcmZvcm1hbmNlIGlz
IHN1ZmZpY2llbnQgZm9yIGJhc2ljIHZpZGVvIHBsYXliYWNrLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyBwbHVnaW4gdGVzdHMuCisKKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1FX
ZWJQYWdlQ2xpZW50Lmg6CisgICAgICAgIChRV2ViUGFnZUNsaWVudCk6CisgICAgICAgICogcGx1
Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgIChQbHVnaW5WaWV3KToKKyAgICAgICAgKiBwbHVn
aW5zL3F0L1BsdWdpblBhY2thZ2VRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNr
YWdlOjppc1BsdWdpbkJsYWNrbGlzdGVkKToKKyAgICAgICAgQmxhY2tsaXN0IHBsdWdpbnMgdGhh
dCBhcmUgaW5jb21wYXRpYmxlIHdpdGggUXQ1LgorICAgICAgICBUaGUgb25seSBvbmUgSSBrbm93
IGFib3V0IGN1cnJlbnRseSBpcyBza3lwZWJ1dHRvbnMKKyAgICAgICAgYnV0IHRoZSBsaXN0IGNh
biBiZSBleHRlbmRlZCBpbiB0aGUgZnV0dXJlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpsb2FkKToKKyAgICAgICAgKiBwbHVnaW5zL3F0L1Bs
dWdpblZpZXdRdC5jcHA6CisgICAgICAgIChYMTFFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OngxMURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6
eDExU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OnJvb3RXaW5kb3dJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpkaXNwbGF5RGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6c3luY1gpOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1QYWdlQ2xpZW50KTogQWRkZWQgYSBzYWZl
CisgICAgICAgIGNvbnZlbmllbmNlIGdldHRlciBmb3IgdGhlIFFXZWJwYWdlQ2xpZW50LgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6dXBkYXRlUGx1Z2luV2lkZ2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldHVw
R3JhcGhpY3NFeHBvc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwYWlu
dFVzaW5nWFBpeG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRTaGFyZWRYRXZlbnRGaWVsZHMp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aW5pdFhFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3OjpzZXRYS2V5RXZlbnRTcGVjaWZpY0ZpZWxkcyk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRYQnV0dG9uRXZlbnRTcGVjaWZpY0ZpZWxkcyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRYTW90aW9uRXZlbnRTcGVjaWZpY0ZpZWxkcyk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRYQ3Jvc3NpbmdFdmVudFNwZWNpZmljRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OnNldE5QV2luZG93SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6c2V0UGFyZW50VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0
Zm9ybUdldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmludmFsaWRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFZpc3VhbEFuZENvbG9ybWFwKToKKyAgICAgICAg
UmVmYWN0b3JlZCB0aGlzIGZ1bmN0aW9uIHRvIG1ha2UgaXQgbW9yZSBjbGVhcgorICAgICAgICB3
aGF0IGRvZXMgaXQgYWN0dWFsbHkgZG8uCisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojpw
bGF0Zm9ybVN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtRGVz
dHJveSk6CisKIDIwMTItMDUtMDcgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJp
Y3Nzb24uY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIHNob3VsZCBub3QgYmUgYW4gQWN0aXZl
RE9NT2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDliYjRhY2M5OWQ5YzE3OTBlNTM1ZDkzNTU0MDBj
NTYyYzUxNzkzZDAuLmQ1YWY5YmRkYjY0NzUxMjJlYzIzMGM3NzFlNGQ5MDE5MzlmZDgwNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDUtMDcgIEJhbGF6cyBLZWxlbWVu
ICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gWDExIHBsdWdpbnMgbmVlZCB0
byBiZSByZXdvcmtlZCBmb3IgUXQ1K1dLMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODA2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNl
dHRpbmdzOjplbmFibGVQZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgIEJ1aWxkIGZpeCBmb3Ig
UXQ1LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKToKKyAg
ICAgICAgSW5qZWN0IHRoZSB3bW9kZSBwYXJhbWV0ZXIgZm9yIGZsYXNoIHNvIGl0IHdpbGwKKyAg
ICAgICAgd29yayBpbiB3aW5kb3dsZXNzLCBub24tdHJhbnNwYXJlbnQgbW9kZSB3aGljaAorICAg
ICAgICBpcyB0aGUgb25seSBvbmUgd2Ugc3VwcG9ydCBjdXJyZW50bHkuCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UVdlYlBhZ2VDbGllbnQ6Om93bmVyV2luZG93KToKKyAgICAgICAgQWRkZWQg
YSBnZXR0ZXIgZm9yIHRoZSB0b3AgbGV2ZWwgd2luZG93IHNvIHRoZSBQbHVnaW5WaWV3CisgICAg
ICAgIGNhbiBnZXQgaXQgd2l0aG91dCBjYWxsaW5nIGludG8gUXRXaWRnZXRzIGNvZGUuCisKIDIw
MTItMDUtMDYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAg
ICAgICBDb252ZXJ0IGlzUGFnZUJveFZpc2libGUgdG8gdXNlIEludGVybmFscyBpbnRlcmZhY2Uu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQppbmRleCBjOTMyMTkzNzcxNTI5NjY2MjIyZDFjNjFjODE5YWJjZjc0YjcyMDhh
Li4zNzhlY2U4YjE1ZmQ0MTg4MjZhMmU0MTQzZTJjYWQ0MjY0ZDMzMzMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
QEAgLTI5NzAsMTEgKzI5NzAsMTMgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX05FVFNDQVBF
X1BMVUdJTl9BUEk9MSkgewogICAgICAgICAgICAgICAgIHBsdWdpbnMvbWFjL1BsdWdpblZpZXdN
YWMubW0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFNPVVJDRVMgKz0gXAotICAgICAg
ICAgICAgICAgIHBsdWdpbnMvcXQvUGx1Z2luQ29udGFpbmVyUXQuY3BwIFwKICAgICAgICAgICAg
ICAgICBwbHVnaW5zL3F0L1BsdWdpblBhY2thZ2VRdC5jcHAgXAogICAgICAgICAgICAgICAgIHBs
dWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAotICAgICAgICAgICAgSEVBREVSUyArPSBcCi0gICAg
ICAgICAgICAgICAgcGx1Z2lucy9xdC9QbHVnaW5Db250YWluZXJRdC5oCisKKyAgICAgICAgICAg
IGhhdmVRdCg0KSB7CisgICAgICAgICAgICAgICAgU09VUkNFUyArPSBwbHVnaW5zL3F0L1BsdWdp
bkNvbnRhaW5lclF0LmNwcAorICAgICAgICAgICAgICAgIEhFQURFUlMgKz0gcGx1Z2lucy9xdC9Q
bHVnaW5Db250YWluZXJRdC5oCisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcmkKaW5kZXggNmYzMTQ3Mjc5MmZiNDFlNTBkMTQzYWRlZWE1NGUzMTQzOTYzZGE3MC4u
MmNhNTk5M2NjZmY4YWRkYmE4NzRhYTlmOGUwZWYxMGU1M2FkYjIwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkK
QEAgLTEzNCw3ICsxMzQsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTkVUU0NBUEVfUExV
R0lOX0FQST0xKSB7CiAgICAgICAgICAgICBJTkNMVURFUEFUSCArPSBwbGF0Zm9ybS9tYWMKICAg
ICAgICAgICAgICMgTm90ZTogWFBfTUFDT1NYIGlzIGRlZmluZWQgaW4gbnBhcGkuaAogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgIWVtYmVkZGVkIHsKKyAgICAgICAgICAgIHhsaWJBdmFp
bGFibGUoKSB7CiAgICAgICAgICAgICAgICAgQ09ORklHICs9IHgxMQogICAgICAgICAgICAgICAg
IExJQlMgKz0gLWxYcmVuZGVyCiAgICAgICAgICAgICAgICAgREVGSU5FUyArPSBNT1pfWDExCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RV2ViUGFnZUNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaAppbmRleCAzMGMzYjQ4
ZWE2MTk2OTY1ODMzYWVlZGE1ZmIxOWI0YjlhNTBmNmZjLi45NTQxYzY0ZTIyZmEwNWRlYjE4ZTAx
OTFmNTQ1NzcxYjRiNTdkYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9RV2ViUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1FXZWJQ
YWdlQ2xpZW50LmgKQEAgLTQzLDYgKzQzLDcgQEAKIAogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFz
cyBRU3R5bGU7CitjbGFzcyBRV2luZG93OwogUVRfRU5EX05BTUVTUEFDRQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xMDksNiArMTEwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Qq
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYXRm
b3JtR3JhcGhpY3NTdXJmYWNlM0QqKSA9IDA7CiAjZW5kaWYKKyNpZiBRVF9WRVJTSU9OID49IFFU
X1ZFUlNJT05fQ0hFQ0soNSwgMCwgMCkKKyAgICB2aXJ0dWFsIFFXaW5kb3cqIG93bmVyV2luZG93
KCkgY29uc3Q7CisjZW5kaWYKIAogcHJvdGVjdGVkOgogI2lmbmRlZiBRVF9OT19DVVJTT1IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMTEyODUyMmQwMjFmODFhOGJmNWZkZTFk
ZDc2MWMzNjBkNDhjMWY1Mi4uZTM0NDJmZjUwYzJjOWM2MjhjZWIxM2E0ODA2ZTBjYWQ3ZjI1YTdi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTQyNiw2ICs0MjYsNyBAQCBw
cml2YXRlOgogICAgICAgICBzdGF0aWMgYm9vbCBzX2lzUnVubmluZ1VuZGVyRFJUOwogICAgICAg
ICBzdGF0aWMgdm9pZCBzZXRYS2V5RXZlbnRTcGVjaWZpY0ZpZWxkcyhYRXZlbnQqLCBLZXlib2Fy
ZEV2ZW50Kik7CiAgICAgICAgIHZvaWQgcGFpbnRVc2luZ1hQaXhtYXAoUVBhaW50ZXIqIHBhaW50
ZXIsIGNvbnN0IFFSZWN0ICZleHBvc2VkUmVjdCk7CisgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBw
bGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdDsKICNlbmRpZgogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElOR19QTFVHSU5fTEFZRVIpCiAgICAgICAgIE93blB0cjxQbGF0Zm9ybUxheWVyPiBt
X3BsYXRmb3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1Bs
dWdpblBhY2thZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblBhY2th
Z2VRdC5jcHAKaW5kZXggNGU5YTcxN2I4NmYxYzViZGMzMmUxMmFhOTUzMzE5NDljMjcwYmFmOC4u
Yjk4MjRmYWUwYzY2NTIwNTI4MDM1NTdjMWYxZGNlZWRkYWViOTA2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIK
ICNpbmNsdWRlICJQbHVnaW5EZWJ1Zy5oIgorI2luY2x1ZGUgPFFGaWxlSW5mbz4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEyOSw2ICsx
MzAsMjMgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUd0ayhRTGlicmFyeSogbW9kdWxlID0gMCkK
ICAgICB9CiB9CiAKK2Jvb2wgUGx1Z2luUGFja2FnZTo6aXNQbHVnaW5CbGFja2xpc3RlZCgpCit7
CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApCisgICAgLy8gVE9E
TzogZW51bWVyYXRlIGFsbCBwbHVnaW5zIHRoYXQgYXJlIGluY29tcGF0aWJsZSB3aXRoIFF0NS4K
KyAgICBjb25zdCBRTGF0aW4xU3RyaW5nIHBsdWdpbkJsYWNrbGlzdFtdID0geworICAgICAgICBR
TGF0aW4xU3RyaW5nKCJza3lwZWJ1dHRvbnMiKQorICAgIH07CisKKyAgICBRU3RyaW5nIGJhc2VO
YW1lID0gUUZpbGVJbmZvKHN0YXRpY19jYXN0PFFTdHJpbmc+KG1fcGF0aCkpLmJhc2VOYW1lKCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihwbHVnaW5CbGFja2xpc3QpIC8g
c2l6ZW9mKFFMYXRpbjFTdHJpbmcpOyArK2kpIHsKKyAgICAgICAgaWYgKGJhc2VOYW1lID09IHBs
dWdpbkJsYWNrbGlzdFtpXSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRp
ZgorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBQbHVnaW5QYWNrYWdlOjpsb2FkKCkKIHsK
ICAgICBpZiAobV9pc0xvYWRlZCkgewpAQCAtMTM2LDYgKzE1NCw5IEBAIGJvb2wgUGx1Z2luUGFj
a2FnZTo6bG9hZCgpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGlmIChpc1Bs
dWdpbkJsYWNrbGlzdGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIG1fbW9kdWxl
ID0gbmV3IFFMaWJyYXJ5KChRU3RyaW5nKW1fcGF0aCk7CiAgICAgbV9tb2R1bGUtPnNldExvYWRI
aW50cyhRTGlicmFyeTo6UmVzb2x2ZUFsbFN5bWJvbHNIaW50KTsKICAgICBpZiAoIW1fbW9kdWxl
LT5sb2FkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2lu
Vmlld1F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcApp
bmRleCBhYzMxY2YwMDI2ZWQ0ODJiNTNiN2NmM2I3ZGVjZmUxMjI3MzFlMDY2Li42YmFmZTAxMjI4
YjEzM2U5YjM4MjJkMDJjMDAwOWVkMGRmMTczZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9xdC9QbHVnaW5WaWV3UXQuY3BwCkBAIC01OCw3ICs1OCw2IEBACiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5
Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUgIlBsdWdpbkNvbnRhaW5lclF0LmgiCiAjaW5jbHVkZSAi
UGx1Z2luRGVidWcuaCIKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVkZSAiUGx1
Z2luTWFpblRocmVhZFNjaGVkdWxlci5oIgpAQCAtNjksMTUgKzY4LDggQEAKICNpZiBVU0UoSlND
KQogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgogI2VuZGlmCi0KLSNpbmNsdWRlIDxRQXBwbGlj
YXRpb24+Ci0jaW5jbHVkZSA8UURlc2t0b3BXaWRnZXQ+Ci0jaW5jbHVkZSA8UUdyYXBoaWNzV2lk
Z2V0PgogI2luY2x1ZGUgPFFLZXlFdmVudD4KICNpbmNsdWRlIDxRUGFpbnRlcj4KLSNpbmNsdWRl
IDxRU3R5bGVPcHRpb25HcmFwaGljc0l0ZW0+Ci0jaW5jbHVkZSA8UVdpZGdldD4KLSNpbmNsdWRl
IDxRWDExSW5mbz4KICNpbmNsdWRlIDxYMTEvWC5oPgogI2lmbmRlZiBRVF9OT19YUkVOREVSCiAj
ZGVmaW5lIEJvb2wgaW50CkBAIC04Nyw2ICs3OSwyMyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNM
b2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAKKyNkZWZpbmUgSEFWRV9RVDUg
KFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg1LCAwLCAwKSkKKworI2lmIEhBVkUoUVQ1
KQorI2luY2x1ZGUgIlF0WDExSW1hZ2VDb252ZXJzaW9uLmgiCisjaW5jbHVkZSA8UUd1aUFwcGxp
Y2F0aW9uPgorI2luY2x1ZGUgPFFQbGF0Zm9ybU5hdGl2ZUludGVyZmFjZT4KKyNpbmNsdWRlIDxR
V2luZG93PgorI2Vsc2UKKyNpbmNsdWRlICJQbHVnaW5Db250YWluZXJRdC5oIgorI2luY2x1ZGUg
PFFBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRGVza3RvcFdpZGdldD4KKyNpbmNsdWRlIDxRR3Jh
cGhpY3NXaWRnZXQ+CisjaW5jbHVkZSA8UVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtPgorI2luY2x1
ZGUgPFFXaWRnZXQ+CisjaW5jbHVkZSA8UVgxMUluZm8+CisjZW5kaWYKKwogdXNpbmcgSlNDOjpF
eGVjU3RhdGU7CiAjaWYgVVNFKEpTQykKIHVzaW5nIEpTQzo6SW50ZXJwcmV0ZXI7CkBAIC0xMDUs
NyArMTE0LDM3IEBAIGJvb2wgUGx1Z2luVmlldzo6c19pc1J1bm5pbmdVbmRlckRSVCA9IGZhbHNl
OwogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorc3RydWN0IFgxMUVudmlyb25tZW50IHsKKyAgICBEaXNwbGF5KiBkaXNwbGF5
OworICAgIGludCBzY3JlZW5JRDsKKyAgICB1bnNpZ25lZCBsb25nIHJvb3RXaW5kb3dJRDsKKyAg
ICBpbnQgZGlzcGxheURlcHRoOworfTsKKworc3RhdGljIFgxMUVudmlyb25tZW50IHgxMUVudmly
b25tZW50ID0geyAwLCAwLCAwLCAwIH07CisKK3N0YXRpYyBpbmxpbmUgRGlzcGxheSogeDExRGlz
cGxheSgpIHsgcmV0dXJuIHgxMUVudmlyb25tZW50LmRpc3BsYXk7IH0KK3N0YXRpYyBpbmxpbmUg
aW50IHgxMVNjcmVlbigpIHsgcmV0dXJuIHgxMUVudmlyb25tZW50LnNjcmVlbklEOyB9CitzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lEKCkgeyByZXR1cm4geDExRW52aXJv
bm1lbnQucm9vdFdpbmRvd0lEOyB9CitzdGF0aWMgaW5saW5lIGludCBkaXNwbGF5RGVwdGgoKSB7
IHJldHVybiB4MTFFbnZpcm9ubWVudC5kaXNwbGF5RGVwdGg7IH0KKworc3RhdGljIGlubGluZSB2
b2lkIHN5bmNYKCkKK3sKKyAgICBYU3luYyh4MTFEaXNwbGF5KCksIGZhbHNlKTsKK30KKworUVdl
YlBhZ2VDbGllbnQqIFBsdWdpblZpZXc6OnBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0Cit7Cisg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9wYXJlbnRGcmFtZS0+dmlldygpOworICAgIGlmICghdmll
dykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyA9IHZpZXct
Pmhvc3RXaW5kb3coKTsKKyAgICBpZiAoIWhvc3RXaW5kb3cpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBob3N0V2luZG93LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKK30KKworI2lmICFI
QVZFKFFUNSkgJiYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogLy8gUXQncyBHcmFwaGlj
c0xheWVyIChHcmFwaGljc0xheWVyUXQpIHJlcXVpcmVzIGxheWVycyB0byBiZSBRR3JhcGhpY3NX
aWRnZXRzCiBjbGFzcyBQbHVnaW5HcmFwaGljc0xheWVyUXQgOiBwdWJsaWMgUUdyYXBoaWNzV2lk
Z2V0IHsKIHB1YmxpYzoKQEAgLTE1NCwxMSArMTkzLDExIEBAIHZvaWQgUGx1Z2luVmlldzo6dXBk
YXRlUGx1Z2luV2lkZ2V0KCkKIAogICAgIGlmICghbV9pc1dpbmRvd2VkICYmIG1fd2luZG93UmVj
dC5zaXplKCkgIT0gb2xkV2luZG93UmVjdC5zaXplKCkpIHsKICAgICAgICAgaWYgKG1fZHJhd2Fi
bGUpCi0gICAgICAgICAgICBYRnJlZVBpeG1hcChRWDExSW5mbzo6ZGlzcGxheSgpLCBtX2RyYXdh
YmxlKTsKKyAgICAgICAgICAgIFhGcmVlUGl4bWFwKHgxMURpc3BsYXkoKSwgbV9kcmF3YWJsZSk7
CiAKLSAgICAgICAgbV9kcmF3YWJsZSA9IFhDcmVhdGVQaXhtYXAoUVgxMUluZm86OmRpc3BsYXko
KSwgUVgxMUluZm86OmFwcFJvb3RXaW5kb3coKSwgbV93aW5kb3dSZWN0LndpZHRoKCksIG1fd2lu
ZG93UmVjdC5oZWlnaHQoKSwKKyAgICAgICAgbV9kcmF3YWJsZSA9IFhDcmVhdGVQaXhtYXAoeDEx
RGlzcGxheSgpLCByb290V2luZG93SUQoKSwgbV93aW5kb3dSZWN0LndpZHRoKCksIG1fd2luZG93
UmVjdC5oZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChOUFNl
dFdpbmRvd0NhbGxiYWNrU3RydWN0KiltX25wV2luZG93LndzX2luZm8pLT5kZXB0aCk7Ci0gICAg
ICAgIFFBcHBsaWNhdGlvbjo6c3luY1goKTsgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIHNlcnZlciBr
bm93cyBhYm91dCB0aGUgRHJhd2FibGUKKyAgICAgICAgc3luY1goKTsgLy8gbWFrZSBzdXJlIHRo
YXQgdGhlIHNlcnZlciBrbm93cyBhYm91dCB0aGUgRHJhd2FibGUKICAgICB9CiAKICAgICAvLyBk
byBub3QgY2FsbCBzZXROUFdpbmRvd0lmTmVlZGVkIGltbWVkaWF0ZWx5LCB3aWxsIGJlIGNhbGxl
ZCBvbiBwYWludCgpCkBAIC0xODcsMTIgKzIyNiwxMyBAQCB2b2lkIFBsdWdpblZpZXc6OnVwZGF0
ZVBsdWdpbldpZGdldCgpCiAKIHZvaWQgUGx1Z2luVmlldzo6c2V0Rm9jdXMoYm9vbCBmb2N1c2Vk
KQogeworI2lmICFIQVZFKFFUNSkgLy8gV2luZG93ZWQgbW9kZSBpcyBub3Qgc3VwcG9ydGVkIHdp
dGggUXQ1IHlldCAoc28gcGxhdGZvcm1QbHVnaW5XaWRnZXQoKSBpcyBhbHdheXMgbnVsbCkuCiAg
ICAgaWYgKHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkpIHsKICAgICAgICAgaWYgKGZvY3VzZWQpCiAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxRV2lkZ2V0Kj4ocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkt
PnNldEZvY3VzKFF0OjpPdGhlckZvY3VzUmVhc29uKTsKLSAgICB9IGVsc2UgeworICAgIH0gZWxz
ZQorI2VuZGlmCiAgICAgICAgIFdpZGdldDo6c2V0Rm9jdXMoZm9jdXNlZCk7Ci0gICAgfQogfQog
CiB2b2lkIFBsdWdpblZpZXc6OnNob3coKQpAQCAtMjA3LDEyICsyNDcsMzAgQEAgdm9pZCBQbHVn
aW5WaWV3OjpoaWRlKCkKICAgICBXaWRnZXQ6OmhpZGUoKTsKIH0KIAorc3RhdGljIHZvaWQgc2V0
dXBHcmFwaGljc0V4cG9zZUV2ZW50KFBpeG1hcCBkcmF3YWJsZSwgY29uc3QgUVJlY3QmIGV4cG9z
ZWRSZWN0LCBYRXZlbnQmIHhldmVudCkKK3sKKyAgICBtZW1zZXQoJnhldmVudCwgMCwgc2l6ZW9m
KFhFdmVudCkpOworICAgIFhHcmFwaGljc0V4cG9zZUV2ZW50JiBleHBvc2VFdmVudCA9IHhldmVu
dC54Z3JhcGhpY3NleHBvc2U7CisgICAgZXhwb3NlRXZlbnQudHlwZSA9IEdyYXBoaWNzRXhwb3Nl
OworICAgIGV4cG9zZUV2ZW50LmRpc3BsYXkgPSB4MTFEaXNwbGF5KCk7CisgICAgZXhwb3NlRXZl
bnQuZHJhd2FibGUgPSBkcmF3YWJsZTsKKyAgICBleHBvc2VFdmVudC54ID0gZXhwb3NlZFJlY3Qu
eCgpOworICAgIGV4cG9zZUV2ZW50LnkgPSBleHBvc2VkUmVjdC55KCk7CisgICAgZXhwb3NlRXZl
bnQud2lkdGggPSBleHBvc2VkUmVjdC54KCkgKyBleHBvc2VkUmVjdC53aWR0aCgpOyAvLyBmbGFz
aCBidWc/IGl0IHRoaW5rcyB3aWR0aCBpcyB0aGUgcmlnaHQgaW4gdHJhbnNwYXJlbnQgbW9kZQor
ICAgIGV4cG9zZUV2ZW50LmhlaWdodCA9IGV4cG9zZWRSZWN0LnkoKSArIGV4cG9zZWRSZWN0Lmhl
aWdodCgpOyAvLyBmbGFzaCBidWc/IGl0IHRoaW5rcyBoZWlnaHQgaXMgdGhlIGJvdHRvbSBpbiB0
cmFuc3BhcmVudCBtb2RlCit9CisKIHZvaWQgUGx1Z2luVmlldzo6cGFpbnRVc2luZ1hQaXhtYXAo
UVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFSZWN0ICZleHBvc2VkUmVjdCkKIHsKKyAgICBib29s
IHNob3VsZFN5bmNYID0gbV9wbHVnaW5EaXNwbGF5ICYmIG1fcGx1Z2luRGlzcGxheSAhPSB4MTFE
aXNwbGF5KCk7CisgICAgWEV2ZW50IHhldmVudDsKKworI2lmIEhBVkUoUVQ1KQorICAgIHNldHVw
R3JhcGhpY3NFeHBvc2VFdmVudChtX2RyYXdhYmxlLCBleHBvc2VkUmVjdCwgeGV2ZW50KTsKKyNl
bHNlCiAgICAgUVBpeG1hcCBxdERyYXdhYmxlID0gUVBpeG1hcDo6ZnJvbVgxMVBpeG1hcChtX2Ry
YXdhYmxlLCBRUGl4bWFwOjpFeHBsaWNpdGx5U2hhcmVkKTsKICAgICBjb25zdCBpbnQgZHJhd2Fi
bGVEZXB0aCA9ICgoTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCopbV9ucFdpbmRvdy53c19pbmZv
KS0+ZGVwdGg7CiAgICAgQVNTRVJUKGRyYXdhYmxlRGVwdGggPT0gcXREcmF3YWJsZS5kZXB0aCgp
KTsKLSAgICBjb25zdCBib29sIHN5bmNYID0gbV9wbHVnaW5EaXNwbGF5ICYmIG1fcGx1Z2luRGlz
cGxheSAhPSBRWDExSW5mbzo6ZGlzcGxheSgpOwogCiAgICAgLy8gV2hlbiBwcmludGluZywgUXQg
dXNlcyBhIFFQaWN0dXJlIHRvIGNhcHR1cmUgdGhlIG91dHB1dCBpbiBwcmV2aWV3IG1vZGUuIFRo
ZQogICAgIC8vIFFQaWN0dXJlIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBYIFBpeG1hcC4gQXMg
YSByZXN1bHQsIHRoZSBwcmludCBwcmV2aWV3IHdvdWxkCkBAIC0yMzIsNyArMjkwLDcgQEAgdm9p
ZCBQbHVnaW5WaWV3OjpwYWludFVzaW5nWFBpeG1hcChRUGFpbnRlciogcGFpbnRlciwgY29uc3Qg
UVJlY3QgJmV4cG9zZWRSZWN0KQogICAgICAgICAvLyBXZSBjYW5ub3QgZ3JhYiBjb250ZW50cyBm
cm9tIHRoZSBiYWNraW5nIHN0b3JlIHdoZW4gcGFpbnRpbmcgb24gUUdyYXBoaWNzVmlldyBpdGVt
cwogICAgICAgICAvLyAoYmVjYXVzZSBiYWNraW5nIHN0b3JlIGNvbnRlbnRzIGFyZSBhbHJlYWR5
IHRyYW5zZm9ybWVkKS4gV2hhdCB3ZSByZWFsbHkgbWVhbiB0byBkbyAKICAgICAgICAgLy8gaGVy
ZSBpcyB0byBjaGVjayBpZiB3ZSBhcmUgcGFpbnRpbmcgb24gUVdlYlZpZXcsIGJ1dCBsZXQncyBi
ZSBhIGxpdHRsZSBwZXJtaXNzaXZlIDopCi0gICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQg
PSBtX3BhcmVudEZyYW1lLT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50
KCk7CisgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBwbGF0Zm9ybVBhZ2VDbGllbnQo
KTsKICAgICAgICAgY29uc3QgYm9vbCBiYWNraW5nU3RvcmVIYXNVbnRyYW5zZm9ybWVkQ29udGVu
dHMgPSBjbGllbnQgJiYgcW9iamVjdF9jYXN0PFFXaWRnZXQqPihjbGllbnQtPnBsdWdpblBhcmVu
dCgpKTsKIAogICAgICAgICBpZiAoaGFzVmFsaWRCYWNraW5nU3RvcmUgJiYgYmFja2luZ1N0b3Jl
UGl4bWFwLT5kZXB0aCgpID09IGRyYXdhYmxlRGVwdGggCkBAIC0yNDYsMjcgKzMwNCwyNiBAQCB2
b2lkIFBsdWdpblZpZXc6OnBhaW50VXNpbmdYUGl4bWFwKFFQYWludGVyKiBwYWludGVyLCBjb25z
dCBRUmVjdCAmZXhwb3NlZFJlY3QpCiAgICAgICAgICAgICBwYWludGVyLmZpbGxSZWN0KGV4cG9z
ZWRSZWN0LCBRdDo6d2hpdGUpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHN5bmNYKQotICAg
ICAgICAgICAgUUFwcGxpY2F0aW9uOjpzeW5jWCgpOworICAgICAgICBpZiAoc2hvdWxkU3luY1gp
CisgICAgICAgICAgICBzeW5jWCgpOwogICAgIH0KIAotICAgIFhFdmVudCB4ZXZlbnQ7Ci0gICAg
bWVtc2V0KCZ4ZXZlbnQsIDAsIHNpemVvZihYRXZlbnQpKTsKLSAgICBYR3JhcGhpY3NFeHBvc2VF
dmVudCYgZXhwb3NlRXZlbnQgPSB4ZXZlbnQueGdyYXBoaWNzZXhwb3NlOwotICAgIGV4cG9zZUV2
ZW50LnR5cGUgPSBHcmFwaGljc0V4cG9zZTsKLSAgICBleHBvc2VFdmVudC5kaXNwbGF5ID0gUVgx
MUluZm86OmRpc3BsYXkoKTsKLSAgICBleHBvc2VFdmVudC5kcmF3YWJsZSA9IHF0RHJhd2FibGUu
aGFuZGxlKCk7Ci0gICAgZXhwb3NlRXZlbnQueCA9IGV4cG9zZWRSZWN0LngoKTsKLSAgICBleHBv
c2VFdmVudC55ID0gZXhwb3NlZFJlY3QueSgpOwotICAgIGV4cG9zZUV2ZW50LndpZHRoID0gZXhw
b3NlZFJlY3QueCgpICsgZXhwb3NlZFJlY3Qud2lkdGgoKTsgLy8gZmxhc2ggYnVnPyBpdCB0aGlu
a3Mgd2lkdGggaXMgdGhlIHJpZ2h0IGluIHRyYW5zcGFyZW50IG1vZGUKLSAgICBleHBvc2VFdmVu
dC5oZWlnaHQgPSBleHBvc2VkUmVjdC55KCkgKyBleHBvc2VkUmVjdC5oZWlnaHQoKTsgLy8gZmxh
c2ggYnVnPyBpdCB0aGlua3MgaGVpZ2h0IGlzIHRoZSBib3R0b20gaW4gdHJhbnNwYXJlbnQgbW9k
ZQorICAgIHNldHVwR3JhcGhpY3NFeHBvc2VFdmVudChxdERyYXdhYmxlLmhhbmRsZSgpLCBleHBv
c2VkUmVjdCwgeGV2ZW50KTsKKyNlbmRpZgogCiAgICAgZGlzcGF0Y2hOUEV2ZW50KHhldmVudCk7
CiAKLSAgICBpZiAoc3luY1gpCisgICAgaWYgKHNob3VsZFN5bmNYKQogICAgICAgICBYU3luYyht
X3BsdWdpbkRpc3BsYXksIGZhbHNlKTsgLy8gc3luYyBjaGFuZ2VzIGJ5IHBsdWdpbgogCisjaWYg
SEFWRShRVDUpCisgICAgWEltYWdlKiB4SW1hZ2UgPSBYR2V0SW1hZ2UoeDExRGlzcGxheSgpLCBt
X2RyYXdhYmxlLCBleHBvc2VkUmVjdC54KCksIGV4cG9zZWRSZWN0LnkoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleHBvc2VkUmVjdC53aWR0aCgpLCBleHBvc2VkUmVjdC5oZWln
aHQoKSwgVUxPTkdfTUFYLCBaUGl4bWFwKTsKKyAgICBwYWludGVyLT5kcmF3SW1hZ2UoUVBvaW50
KGV4cG9zZWRSZWN0LngoKSwgZXhwb3NlZFJlY3QueSgpKSwgcWltYWdlRnJvbVhJbWFnZSh4SW1h
Z2UpLCBleHBvc2VkUmVjdCk7CisgICAgWERlc3Ryb3lJbWFnZSh4SW1hZ2UpOworI2Vsc2UKICAg
ICBwYWludGVyLT5kcmF3UGl4bWFwKFFQb2ludChleHBvc2VkUmVjdC54KCksIGV4cG9zZWRSZWN0
LnkoKSksIHF0RHJhd2FibGUsIGV4cG9zZWRSZWN0KTsKKyNlbmRpZgogfQogCiB2b2lkIFBsdWdp
blZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVj
dCkKQEAgLTMzMSwyNCArMzg4LDI5IEBAIGJvb2wgUGx1Z2luVmlldzo6ZGlzcGF0Y2hOUEV2ZW50
KE5QRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBhY2NlcHRlZDsKIH0KIAotdm9pZCBzZXRTaGFy
ZWRYRXZlbnRGaWVsZHMoWEV2ZW50KiB4RXZlbnQsIFFXaWRnZXQqIG93bmVyV2lkZ2V0KQordm9p
ZCBzZXRTaGFyZWRYRXZlbnRGaWVsZHMoWEV2ZW50KiB4RXZlbnQsIFFXZWJQYWdlQ2xpZW50KiBw
YWdlQ2xpZW50KQogewogICAgIHhFdmVudC0+eGFueS5zZXJpYWwgPSAwOyAvLyB3ZSBhcmUgdW5h
d2FyZSBvZiB0aGUgbGFzdCByZXF1ZXN0IHByb2Nlc3NlZCBieSBYIFNlcnZlcgogICAgIHhFdmVu
dC0+eGFueS5zZW5kX2V2ZW50ID0gZmFsc2U7Ci0gICAgeEV2ZW50LT54YW55LmRpc3BsYXkgPSBR
WDExSW5mbzo6ZGlzcGxheSgpOworICAgIHhFdmVudC0+eGFueS5kaXNwbGF5ID0geDExRGlzcGxh
eSgpOwogICAgIC8vIE5PVEU6IGV2ZW50LT54YW55LndpbmRvdyBkb2Vzbid0IGFsd2F5cyByZXNw
b25kIHRvIHRoZSAud2luZG93IHByb3BlcnR5IG9mIG90aGVyIFhFdmVudCdzCiAgICAgLy8gYnV0
IGRvZXMgaW4gdGhlIGNhc2Ugb2YgS2V5UHJlc3MsIEtleVJlbGVhc2UsIEJ1dHRvblByZXNzLCBC
dXR0b25SZWxlYXNlLCBhbmQgTW90aW9uTm90aWZ5CiAgICAgLy8gZXZlbnRzOyB0aHVzLCB0aGlz
IGlzIHJpZ2h0OgotICAgIHhFdmVudC0+eGFueS53aW5kb3cgPSBvd25lcldpZGdldCA/IG93bmVy
V2lkZ2V0LT53aW5kb3coKS0+aGFuZGxlKCkgOiAwOworI2lmIEhBVkUoUVQ1KQorICAgIFFXaW5k
b3cqIHdpbmRvdyA9IHBhZ2VDbGllbnQgPyBwYWdlQ2xpZW50LT5vd25lcldpbmRvdygpIDogMDsK
KyAgICB4RXZlbnQtPnhhbnkud2luZG93ID0gd2luZG93ID8gd2luZG93LT53aW5JZCgpIDogMDsK
KyNlbHNlCisgICAgUVdpZGdldCogb3duZXJXaWRnZXQgPSBwYWdlQ2xpZW50ID8gcGFnZUNsaWVu
dC0+b3duZXJXaWRnZXQoKSA6IDA7CisgICAgeEV2ZW50LT54YW55LndpbmRvdyA9IG93bmVyV2lk
Z2V0ID8gb3duZXJXaWRnZXQtPndpbmRvdygpLT53aW5JZCgpIDogMDsKKyNlbmRpZgogfQogCiB2
b2lkIFBsdWdpblZpZXc6OmluaXRYRXZlbnQoWEV2ZW50KiB4RXZlbnQpCiB7CiAgICAgbWVtc2V0
KHhFdmVudCwgMCwgc2l6ZW9mKFhFdmVudCkpOwogCi0gICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVu
dCA9IG1fcGFyZW50RnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGll
bnQoKTsKLSAgICBRV2lkZ2V0KiBvd25lcldpZGdldCA9IGNsaWVudCA/IGNsaWVudC0+b3duZXJX
aWRnZXQoKSA6IDA7Ci0gICAgc2V0U2hhcmVkWEV2ZW50RmllbGRzKHhFdmVudCwgb3duZXJXaWRn
ZXQpOworICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBwbGF0Zm9ybVBhZ2VDbGllbnQoKTsK
KyAgICBzZXRTaGFyZWRYRXZlbnRGaWVsZHMoeEV2ZW50LCBjbGllbnQpOwogfQogCiB2b2lkIFBs
dWdpblZpZXc6OnNldFhLZXlFdmVudFNwZWNpZmljRmllbGRzKFhFdmVudCogeEV2ZW50LCBLZXli
b2FyZEV2ZW50KiBldmVudCkKQEAgLTM1Niw3ICs0MTgsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNl
dFhLZXlFdmVudFNwZWNpZmljRmllbGRzKFhFdmVudCogeEV2ZW50LCBLZXlib2FyZEV2ZW50KiBl
dmVudAogICAgIGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCoga2V5RXZlbnQgPSBldmVudC0+
a2V5RXZlbnQoKTsKIAogICAgIHhFdmVudC0+dHlwZSA9IChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5rZXlkb3duRXZlbnQpID8gMiA6IDM7IC8vIGludHMgYXMgUXQgdW5zZXRzIEtleVBy
ZXNzIGFuZCBLZXlSZWxlYXNlCi0gICAgeEV2ZW50LT54a2V5LnJvb3QgPSBRWDExSW5mbzo6YXBw
Um9vdFdpbmRvdygpOworICAgIHhFdmVudC0+eGtleS5yb290ID0gcm9vdFdpbmRvd0lEKCk7CiAg
ICAgeEV2ZW50LT54a2V5LnN1YndpbmRvdyA9IDA7IC8vIHdlIGhhdmUgbm8gY2hpbGQgd2luZG93
CiAgICAgeEV2ZW50LT54a2V5LnRpbWUgPSBldmVudC0+dGltZVN0YW1wKCk7CiAgICAgeEV2ZW50
LT54a2V5LnN0YXRlID0ga2V5RXZlbnQtPm5hdGl2ZU1vZGlmaWVycygpOwpAQCAtMzcwLDcgKzQz
Miw3IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0WEtleUV2ZW50U3BlY2lmaWNGaWVsZHMoWEV2ZW50
KiB4RXZlbnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50CiAgICAgICAgIFFLZXlFdmVudCogcUtleUV2
ZW50ID0ga2V5RXZlbnQtPnF0RXZlbnQoKTsKICAgICAgICAgQVNTRVJUKHFLZXlFdmVudCk7CiAg
ICAgICAgIFFTdHJpbmcga2V5VGV4dCA9IHFLZXlFdmVudC0+dGV4dCgpLmxlZnQoMSk7Ci0gICAg
ICAgIHhFdmVudC0+eGtleS5rZXljb2RlID0gWEtleXN5bVRvS2V5Y29kZShRWDExSW5mbzo6ZGlz
cGxheSgpLCBYU3RyaW5nVG9LZXlzeW0oa2V5VGV4dC50b1V0ZjgoKS5jb25zdERhdGEoKSkpOwor
ICAgICAgICB4RXZlbnQtPnhrZXkua2V5Y29kZSA9IFhLZXlzeW1Ub0tleWNvZGUoeDExRGlzcGxh
eSgpLCBYU3RyaW5nVG9LZXlzeW0oa2V5VGV4dC50b1V0ZjgoKS5jb25zdERhdGEoKSkpOwogICAg
IH0KIAogICAgIHhFdmVudC0+eGtleS5zYW1lX3NjcmVlbiA9IHRydWU7CkBAIC00MTksNyArNDgx
LDcgQEAgc3RhdGljIHZvaWQgc2V0WEJ1dHRvbkV2ZW50U3BlY2lmaWNGaWVsZHMoWEV2ZW50KiB4
RXZlbnQsIE1vdXNlRXZlbnQqIGV2ZW50LCBjb24KIHsKICAgICBYQnV0dG9uRXZlbnQmIHhidXR0
b24gPSB4RXZlbnQtPnhidXR0b247CiAgICAgeGJ1dHRvbi50eXBlID0gZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgPyBCdXR0b25QcmVzcyA6IEJ1dHRvblJlbGVh
c2U7Ci0gICAgeGJ1dHRvbi5yb290ID0gUVgxMUluZm86OmFwcFJvb3RXaW5kb3coKTsKKyAgICB4
YnV0dG9uLnJvb3QgPSByb290V2luZG93SUQoKTsKICAgICB4YnV0dG9uLnN1YndpbmRvdyA9IDA7
CiAgICAgeGJ1dHRvbi50aW1lID0gZXZlbnQtPnRpbWVTdGFtcCgpOwogICAgIHhidXR0b24ueCA9
IHBvc3Rab29tUG9zLngoKTsKQEAgLTQ0Niw3ICs1MDgsNyBAQCBzdGF0aWMgdm9pZCBzZXRYTW90
aW9uRXZlbnRTcGVjaWZpY0ZpZWxkcyhYRXZlbnQqIHhFdmVudCwgTW91c2VFdmVudCogZXZlbnQs
IGNvbgogewogICAgIFhNb3Rpb25FdmVudCYgeG1vdGlvbiA9IHhFdmVudC0+eG1vdGlvbjsKICAg
ICB4bW90aW9uLnR5cGUgPSBNb3Rpb25Ob3RpZnk7Ci0gICAgeG1vdGlvbi5yb290ID0gUVgxMUlu
Zm86OmFwcFJvb3RXaW5kb3coKTsKKyAgICB4bW90aW9uLnJvb3QgPSByb290V2luZG93SUQoKTsK
ICAgICB4bW90aW9uLnN1YndpbmRvdyA9IDA7CiAgICAgeG1vdGlvbi50aW1lID0gZXZlbnQtPnRp
bWVTdGFtcCgpOwogICAgIHhtb3Rpb24ueCA9IHBvc3Rab29tUG9zLngoKTsKQEAgLTQ2Miw3ICs1
MjQsNyBAQCBzdGF0aWMgdm9pZCBzZXRYQ3Jvc3NpbmdFdmVudFNwZWNpZmljRmllbGRzKFhFdmVu
dCogeEV2ZW50LCBNb3VzZUV2ZW50KiBldmVudCwgYwogewogICAgIFhDcm9zc2luZ0V2ZW50JiB4
Y3Jvc3NpbmcgPSB4RXZlbnQtPnhjcm9zc2luZzsKICAgICB4Y3Jvc3NpbmcudHlwZSA9IGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50ID8gRW50ZXJOb3RpZnkgOiBM
ZWF2ZU5vdGlmeTsKLSAgICB4Y3Jvc3Npbmcucm9vdCA9IFFYMTFJbmZvOjphcHBSb290V2luZG93
KCk7CisgICAgeGNyb3NzaW5nLnJvb3QgPSByb290V2luZG93SUQoKTsKICAgICB4Y3Jvc3Npbmcu
c3Vid2luZG93ID0gMDsKICAgICB4Y3Jvc3NpbmcudGltZSA9IGV2ZW50LT50aW1lU3RhbXAoKTsK
ICAgICB4Y3Jvc3NpbmcueCA9IHBvc3Rab29tUG9zLnkoKTsKQEAgLTU3MSw2ICs2MzMsNyBAQCB2
b2lkIFBsdWdpblZpZXc6OnNldE5QV2luZG93SWZOZWVkZWQoKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9oYXNQZW5kaW5nR2VvbWV0cnlDaGFuZ2UgPSBmYWxzZTsKIAorI2lmICFIQVZFKFFUNSkg
Ly8gV2luZG93ZWQgbW9kZSBpcyBub3Qgc3VwcG9ydGVkIHdpdGggUXQ1IHlldAogICAgIGlmICht
X2lzV2luZG93ZWQpIHsKICAgICAgICAgUVdpZGdldCogd2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UVdp
ZGdldCo+KHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkpOwogICAgICAgICB3aWRnZXQtPnNldEdlb21l
dHJ5KG1fd2luZG93UmVjdCk7CkBAIC01OTAsNyArNjUzLDkgQEAgdm9pZCBQbHVnaW5WaWV3Ojpz
ZXROUFdpbmRvd0lmTmVlZGVkKCkKIAogICAgICAgICBtX25wV2luZG93LnggPSBtX3dpbmRvd1Jl
Y3QueCgpOwogICAgICAgICBtX25wV2luZG93LnkgPSBtX3dpbmRvd1JlY3QueSgpOwotICAgIH0g
ZWxzZSB7CisgICAgfSBlbHNlCisjZW5kaWYKKyAgICB7CiAgICAgICAgIG1fbnBXaW5kb3cueCA9
IDA7CiAgICAgICAgIG1fbnBXaW5kb3cueSA9IDA7CiAgICAgfQpAQCAtNjM5LDggKzcwNCwxMCBA
QCB2b2lkIFBsdWdpblZpZXc6OnNldFBhcmVudFZpc2libGUoYm9vbCB2aXNpYmxlKQogCiAgICAg
V2lkZ2V0OjpzZXRQYXJlbnRWaXNpYmxlKHZpc2libGUpOwogCisjaWYgIUhBVkUoUVQ1KSAvLyBX
aW5kb3dlZCBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBRdDUgeWV0LgogICAgIGlmIChpc1Nl
bGZWaXNpYmxlKCkgJiYgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkKICAgICAgICAgc3RhdGljX2Nh
c3Q8UVdpZGdldCo+KHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkpLT5zZXRWaXNpYmxlKHZpc2libGUp
OworI2VuZGlmCiB9CiAKIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZl
Y3RvcjxjaGFyPiYgYnVmZmVyLCB1aW50MzJfdCBsZW4sIGNvbnN0IGNoYXIqIGJ1ZikKQEAgLTcw
MSw3ICs3NjgsNyBAQCBib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUoTlBOVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlLCBOUEVycm9yKiByZQogewogICAgIHN3aXRjaCAodmFy
aWFibGUpIHsKICAgICBjYXNlIE5QTlZ4RGlzcGxheToKLSAgICAgICAgKih2b2lkICoqKXZhbHVl
ID0gUVgxMUluZm86OmRpc3BsYXkoKTsKKyAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoq
Pih2YWx1ZSkgPSB4MTFEaXNwbGF5KCk7CiAgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJP
UjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTcxMCw5ICs3NzcsMTMgQEAgYm9vbCBQbHVn
aW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1
ZSwgTlBFcnJvciogcmUKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIE5QTlZuZXRz
Y2FwZVdpbmRvdzogewotICAgICAgICB2b2lkKiB3ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
dmFsdWUpOwotICAgICAgICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gbV9wYXJlbnRGcmFtZS0+
dmlldygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpOwotICAgICAgICAqKChY
SUQgKil3KSA9IGNsaWVudCA/IGNsaWVudC0+b3duZXJXaWRnZXQoKS0+d2luZG93KCktPndpbklk
KCkgOiAwOworICAgICAgICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gcGxhdGZvcm1QYWdlQ2xp
ZW50KCk7CisjaWYgSEFWRShRVDUpCisgICAgICAgIFFXaW5kb3cqIHdpbmRvdyA9IGNsaWVudCA/
IGNsaWVudC0+b3duZXJXaW5kb3coKSA6IDA7CisgICAgICAgICpyZWludGVycHJldF9jYXN0PFhJ
RCo+KHZhbHVlKSA9IHdpbmRvdyA/IHdpbmRvdy0+d2luSWQoKSA6IDA7CisjZWxzZQorICAgICAg
ICAqcmVpbnRlcnByZXRfY2FzdDxYSUQqPih2YWx1ZSkgPSBjbGllbnQgPyBjbGllbnQtPm93bmVy
V2lkZ2V0KCktPndpbmRvdygpLT53aW5JZCgpIDogMDsKKyNlbmRpZgogICAgICAgICAqcmVzdWx0
ID0gTlBFUlJfTk9fRVJST1I7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTczOSw2
ICs4MTAsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3Qm
IHJlY3QpCiAgICAgfQogI2VuZGlmCiAKKyNpZiAhSEFWRShRVDUpIC8vIFdpbmRvd2VkIG1vZGUg
aXMgbm90IHN1cHBvcnRlZCB3aXRoIFF0NSB5ZXQuCiAgICAgaWYgKG1faXNXaW5kb3dlZCkgewog
ICAgICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAgICAgICAgICAgLy8gdXBkYXRlKCkg
d2lsbCBzY2hlZHVsZSBhIHJlcGFpbnQgb2YgdGhlIHdpZGdldCBzbyBlbnN1cmUKQEAgLTc0OSw2
ICs4MjEsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3Qm
IHJlY3QpCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNlbmRpZgogCiAgICAg
aW52YWxpZGF0ZVdpbmRvd2xlc3NQbHVnaW5SZWN0KHJlY3QpOwogfQpAQCAtODAzLDQ3ICs4NzYs
NTMgQEAgc3RhdGljIERpc3BsYXkgKmdldFBsdWdpbkRpc3BsYXkoKQogICAgIHJldHVybiAoRGlz
cGxheSopZ2RrX3gxMV9kaXNwbGF5X2dldF94ZGlzcGxheShnZGtfZGlzcGxheV9nZXRfZGVmYXVs
dCgpKTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0VmlzdWFsQW5kQ29sb3JtYXAoaW50IGRlcHRoLCBW
aXN1YWwgKip2aXN1YWwsIENvbG9ybWFwICpjb2xvcm1hcCkKK3N0YXRpYyBib29sIGdldFZpc3Vh
bEFuZENvbG9ybWFwKGludCBkZXB0aCwgVmlzdWFsKiYgdmlzdWFsLCBDb2xvcm1hcCYgY29sb3Jt
YXAsIGJvb2wgZm9yY2VBUkdCMzIpCiB7Ci0gICAgKnZpc3VhbCA9IDA7Ci0gICAgKmNvbG9ybWFw
ID0gMDsKKyAgICBBU1NFUlQoZGVwdGggPT0gMzIgfHwgIWZvcmNlQVJHQjMyKTsKIAotI2lmbmRl
ZiBRVF9OT19YUkVOREVSCisgICAgdmlzdWFsID0gMDsKKyAgICBjb2xvcm1hcCA9IDA7CisKKyNp
ZiAhSEFWRShRVDUpICYmICFkZWZpbmVkKFFUX05PX1hSRU5ERVIpCiAgICAgc3RhdGljIGNvbnN0
IGJvb2wgdXNlWFJlbmRlciA9IHFnZXRlbnYoIlFUX1gxMV9OT19YUkVOREVSIikuaXNOdWxsKCk7
IC8vIFNob3VsZCBhbHNvIGNoZWNrIGZvciBYUmVuZGVyID49IDAuNQogI2Vsc2UKICAgICBzdGF0
aWMgY29uc3QgYm9vbCB1c2VYUmVuZGVyID0gZmFsc2U7CiAjZW5kaWYKLQotICAgIGlmICghdXNl
WFJlbmRlciAmJiBkZXB0aCA9PSAzMikKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghdXNlWFJl
bmRlciAmJiBmb3JjZUFSR0IzMikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaW50IG52
aTsKICAgICBYVmlzdWFsSW5mbyB0ZW1wbDsKLSAgICB0ZW1wbC5zY3JlZW4gID0gUVgxMUluZm86
OmFwcFNjcmVlbigpOworICAgIHRlbXBsLnNjcmVlbiAgPSB4MTFTY3JlZW4oKTsKICAgICB0ZW1w
bC5kZXB0aCAgID0gZGVwdGg7CiAgICAgdGVtcGwuY19jbGFzcyA9IFRydWVDb2xvcjsKLSAgICBY
VmlzdWFsSW5mbyogeHZpID0gWEdldFZpc3VhbEluZm8oUVgxMUluZm86OmRpc3BsYXkoKSwgVmlz
dWFsU2NyZWVuTWFzayB8IFZpc3VhbERlcHRoTWFzayB8IFZpc3VhbENsYXNzTWFzaywgJnRlbXBs
LCAmbnZpKTsKLQorICAgIFhWaXN1YWxJbmZvKiB4dmkgPSBYR2V0VmlzdWFsSW5mbyh4MTFEaXNw
bGF5KCksIFZpc3VhbFNjcmVlbk1hc2sgfCBWaXN1YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01h
c2ssICZ0ZW1wbCwgJm52aSk7CisgICAgQVNTRVJUKHh2aSB8fCBmb3JjZUFSR0IzMik7CiAgICAg
aWYgKCF4dmkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWZu
ZGVmIFFUX05PX1hSRU5ERVIKLSAgICBpZiAoZGVwdGggPT0gMzIpIHsKKyNpZiAhSEFWRShRVDUp
ICYmICFkZWZpbmVkKFFUX05PX1hSRU5ERVIpCisgICAgaWYgKGZvcmNlQVJHQjMyKSB7CiAgICAg
ICAgIGZvciAoaW50IGlkeCA9IDA7IGlkeCA8IG52aTsgKytpZHgpIHsKLSAgICAgICAgICAgIFhS
ZW5kZXJQaWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZpc3VhbEZvcm1hdChRWDExSW5m
bzo6ZGlzcGxheSgpLCB4dmlbaWR4XS52aXN1YWwpOworICAgICAgICAgICAgWFJlbmRlclBpY3RG
b3JtYXQqIGZvcm1hdCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KHgxMURpc3BsYXkoKSwgeHZp
W2lkeF0udmlzdWFsKTsKICAgICAgICAgICAgIGlmIChmb3JtYXQtPnR5cGUgPT0gUGljdFR5cGVE
aXJlY3QgJiYgZm9ybWF0LT5kaXJlY3QuYWxwaGFNYXNrKSB7Ci0gICAgICAgICAgICAgICAgICp2
aXN1YWwgPSB4dmlbaWR4XS52aXN1YWw7CisgICAgICAgICAgICAgICAgIHZpc3VhbCA9IHh2aVtp
ZHhdLnZpc3VhbDsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF2aXN1YWwpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfSBlbHNlCi0jZW5kaWYgLy8gUVRfTk9fWFJFTkRFUgotICAgICAgICAq
dmlzdWFsID0geHZpWzBdLnZpc3VhbDsKKyNlbmRpZgorICAgIHsKKyAgICAgICAgdmlzdWFsID0g
eHZpWzBdLnZpc3VhbDsKKyAgICB9CisgICAgQVNTRVJUKHZpc3VhbCk7CiAKICAgICBYRnJlZSh4
dmkpOwogCi0gICAgaWYgKCp2aXN1YWwpCi0gICAgICAgICpjb2xvcm1hcCA9IFhDcmVhdGVDb2xv
cm1hcChRWDExSW5mbzo6ZGlzcGxheSgpLCBRWDExSW5mbzo6YXBwUm9vdFdpbmRvdygpLCAqdmlz
dWFsLCBBbGxvY05vbmUpOworICAgIGNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFwKHgxMURpc3Bs
YXkoKSwgcm9vdFdpbmRvd0lEKCksIHZpc3VhbCwgQWxsb2NOb25lKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybVN0YXJ0KCkKQEAgLTg1MSw2ICs5MzAs
MjQgQEAgYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybVN0YXJ0KCkKICAgICBBU1NFUlQobV9pc1N0
YXJ0ZWQpOwogICAgIEFTU0VSVChtX3N0YXR1cyA9PSBQbHVnaW5TdGF0dXNMb2FkZWRTdWNjZXNz
ZnVsbHkpOwogCisgICAgaWYgKCF4MTFFbnZpcm9ubWVudC5kaXNwbGF5KSB7CisgICAgICAgIERp
c3BsYXkqIGRpc3BsYXk7CisjaWYgSEFWRShRVDUpCisgICAgICAgIGRpc3BsYXkgPSBzdGF0aWNf
Y2FzdDxEaXNwbGF5Kj4oUUd1aUFwcGxpY2F0aW9uOjpwbGF0Zm9ybU5hdGl2ZUludGVyZmFjZSgp
LT5uYXRpdmVSZXNvdXJjZUZvcldpbmRvdygiZGlzcGxheSIsIDApKTsKKyNlbHNlCisgICAgICAg
IGRpc3BsYXkgPSBRWDExSW5mbzo6ZGlzcGxheSgpOworI2VuZGlmCisgICAgICAgIHgxMUVudmly
b25tZW50LmRpc3BsYXkgPSBkaXNwbGF5OworICAgICAgICB4MTFFbnZpcm9ubWVudC5zY3JlZW5J
RCA9IFhEZWZhdWx0U2NyZWVuKGRpc3BsYXkpOworICAgICAgICB4MTFFbnZpcm9ubWVudC5kaXNw
bGF5RGVwdGggPSBYRGVmYXVsdERlcHRoKGRpc3BsYXksIHgxMUVudmlyb25tZW50LnNjcmVlbklE
KTsKKyAgICAgICAgeDExRW52aXJvbm1lbnQucm9vdFdpbmRvd0lEID0gWERlZmF1bHRSb290V2lu
ZG93KGRpc3BsYXkpOworICAgIH0KKworI2lmIEhBVkUoUVQ1KQorICAgIC8vIFdpbmRvd2VkIG1v
ZGUgaXMgbm90IHN1cHBvcnRlZCB3aXRoIFF0NSB5ZXQuCisgICAgaWYgKG1faXNXaW5kb3dlZCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKICAgICBpZiAobV9wbHVnaW4tPnBsdWdpbkZ1
bmNzKCktPmdldHZhbHVlKSB7CiAgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5W
aWV3KHRoaXMpOwogI2lmIFVTRShKU0MpCkBAIC04NjMsNyArOTYwLDcgQEAgYm9vbCBQbHVnaW5W
aWV3OjpwbGF0Zm9ybVN0YXJ0KCkKICAgICB9CiAKICAgICBpZiAobV9pc1dpbmRvd2VkKSB7Ci0g
ICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBtX3BhcmVudEZyYW1lLT52aWV3KCktPmhv
c3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgIFFXZWJQYWdlQ2xpZW50
KiBjbGllbnQgPSBwbGF0Zm9ybVBhZ2VDbGllbnQoKTsKICAgICAgICAgaWYgKG1fbmVlZHNYRW1i
ZWQgJiYgY2xpZW50KSB7CiAgICAgICAgICAgICBzZXRQbGF0Zm9ybVdpZGdldChuZXcgUGx1Z2lu
Q29udGFpbmVyUXQodGhpcywgY2xpZW50LT5vd25lcldpZGdldCgpKSk7CiAgICAgICAgICAgICAv
LyBzeW5jIG91ciBYRW1iZWQgY29udGFpbmVyIHdpbmRvdyBjcmVhdGlvbiBiZWZvcmUgc2VuZGlu
ZyB0aGUgeGlkIHRvIHBsdWdpbnMuCkBAIC04NzMsNyArOTcwLDkgQEAgYm9vbCBQbHVnaW5WaWV3
OjpwbGF0Zm9ybVN0YXJ0KCkKICAgICAgICAgICAgIG1fc3RhdHVzID0gUGx1Z2luU3RhdHVzQ2Fu
Tm90TG9hZFBsdWdpbjsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAg
IH0gZWxzZSB7CisgICAgfSBlbHNlCisjZW5kaWYgLy8gSEFWRShRVDUpCisgICAgewogICAgICAg
ICBzZXRQbGF0Zm9ybVdpZGdldCgwKTsKICAgICAgICAgbV9wbHVnaW5EaXNwbGF5ID0gZ2V0UGx1
Z2luRGlzcGxheSgpOwogCkBAIC04OTMsNiArOTkyLDcgQEAgYm9vbCBQbHVnaW5WaWV3OjpwbGF0
Zm9ybVN0YXJ0KCkKICAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiB3c2kgPSBuZXcgTlBT
ZXRXaW5kb3dDYWxsYmFja1N0cnVjdCgpOwogICAgIHdzaS0+dHlwZSA9IDA7CiAKKyNpZiAhSEFW
RShRVDUpCiAgICAgaWYgKG1faXNXaW5kb3dlZCkgewogICAgICAgICBjb25zdCBRWDExSW5mbyog
eDExSW5mbyA9ICZzdGF0aWNfY2FzdDxRV2lkZ2V0Kj4ocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkt
PngxMUluZm8oKTsKIApAQCAtOTA1LDIwICsxMDA1LDI0IEBAIGJvb2wgUGx1Z2luVmlldzo6cGxh
dGZvcm1TdGFydCgpCiAgICAgICAgIG1fbnBXaW5kb3cud2luZG93ID0gKHZvaWQqKXN0YXRpY19j
YXN0PFFXaWRnZXQqPihwbGF0Zm9ybVBsdWdpbldpZGdldCgpKS0+d2luSWQoKTsKICAgICAgICAg
bV9ucFdpbmRvdy53aWR0aCA9IC0xOwogICAgICAgICBtX25wV2luZG93LmhlaWdodCA9IC0xOwot
ICAgIH0gZWxzZSB7CisgICAgfSBlbHNlCisjZW5kaWYKKyAgICB7CisjaWYgIUhBVkUoUVQ1KQog
ICAgICAgICBjb25zdCBRWDExSW5mbyogeDExSW5mbyA9ICZRQXBwbGljYXRpb246OmRlc2t0b3Ao
KS0+eDExSW5mbygpOwotCi0gICAgICAgIGlmICh4MTFJbmZvLT5kZXB0aCgpID09IDMyIHx8ICFt
X3BsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtSZXF1aXJlc0RlZmF1bHRTY3Jl
ZW5EZXB0aCkpIHsKLSAgICAgICAgICAgIGdldFZpc3VhbEFuZENvbG9ybWFwKDMyLCAmbV92aXN1
YWwsICZtX2NvbG9ybWFwKTsKKyAgICAgICAgaWYgKCh4MTFJbmZvLT5kZXB0aCgpID09IDMyIHx8
ICFtX3BsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtSZXF1aXJlc0RlZmF1bHRT
Y3JlZW5EZXB0aCkpCisgICAgICAgICAgICAgJiYgZ2V0VmlzdWFsQW5kQ29sb3JtYXAoMzIsIG1f
dmlzdWFsLCBtX2NvbG9ybWFwLCAvKiBmb3JjZUFSR0IzMiA9ICovIHRydWUpKQogICAgICAgICAg
ICAgd3NpLT5kZXB0aCA9IDMyOworICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgeworICAg
ICAgICAgICAgaW50IGRlcHRoID0gZGlzcGxheURlcHRoKCk7CisgICAgICAgICAgICBib29sIGZv
dW5kID0gZ2V0VmlzdWFsQW5kQ29sb3JtYXAoZGVwdGgsIG1fdmlzdWFsLCBtX2NvbG9ybWFwLCAv
KiBmb3JjZUFSR0IzMiA9ICovIGZhbHNlKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoZm91
bmQsIGZvdW5kKTsKKyAgICAgICAgICAgIHdzaS0+ZGVwdGggPSBkZXB0aDsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmICghbV92aXN1YWwpIHsKLSAgICAgICAgICAgIGdldFZpc3VhbEFuZENvbG9y
bWFwKHgxMUluZm8tPmRlcHRoKCksICZtX3Zpc3VhbCwgJm1fY29sb3JtYXApOwotICAgICAgICAg
ICAgd3NpLT5kZXB0aCA9IHgxMUluZm8tPmRlcHRoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB3
c2ktPmRpc3BsYXkgPSB4MTFJbmZvLT5kaXNwbGF5KCk7CisgICAgICAgIHdzaS0+ZGlzcGxheSA9
IHgxMURpc3BsYXkoKTsKICAgICAgICAgd3NpLT52aXN1YWwgPSBtX3Zpc3VhbDsKICAgICAgICAg
d3NpLT5jb2xvcm1hcCA9IG1fY29sb3JtYXA7CiAKQEAgLTk0NiwxMCArMTA1MCwxMCBAQCB2b2lk
IFBsdWdpblZpZXc6OnBsYXRmb3JtRGVzdHJveSgpCiAgICAgICAgIGRlbGV0ZSBwbGF0Zm9ybVBs
dWdpbldpZGdldCgpOwogCiAgICAgaWYgKG1fZHJhd2FibGUpCi0gICAgICAgIFhGcmVlUGl4bWFw
KFFYMTFJbmZvOjpkaXNwbGF5KCksIG1fZHJhd2FibGUpOworICAgICAgICBYRnJlZVBpeG1hcCh4
MTFEaXNwbGF5KCksIG1fZHJhd2FibGUpOwogCiAgICAgaWYgKG1fY29sb3JtYXApCi0gICAgICAg
IFhGcmVlQ29sb3JtYXAoUVgxMUluZm86OmRpc3BsYXkoKSwgbV9jb2xvcm1hcCk7CisgICAgICAg
IFhGcmVlQ29sb3JtYXAoeDExRGlzcGxheSgpLCBtX2NvbG9ybWFwKTsKIH0KIAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3Bw
CmluZGV4IGNhMjY0YzhhZjAzNzNkMzZlZmY5MWQzMjdmZjU5YTUxMDRiOTllOWEuLjRlMDE4MzZm
Nzc4NGM3OWFhMmZhYTA4MTdkZTcyYmYyNTQwYWI1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdl
YnNldHRpbmdzLmNwcApAQCAtMTE3NCw3ICsxMTc0LDExIEBAIHZvaWQgUVdlYlNldHRpbmdzOjpl
bmFibGVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBRU3RyaW5nJiBwYXRoKQogI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCiAgICAgLy8gQWxsIGFwcGxpY2F0aW9ucyBj
YW4gc2hhcmUgdGhlIGNvbW1vbiBRdFdlYmtpdCBjYWNoZSBmaWxlKHMpLgogICAgIC8vIFBhdGgg
aXMgbm90IGNvbmZpZ3VyYWJsZSBhbmQgdXNlcyBRRGVza3RvcFNlcnZpY2VzOjpDYWNoZUxvY2F0
aW9uIGJ5IGRlZmF1bHQuCisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAs
IDApCisgICAgUVN0cmluZyBjYWNoZVBhdGggPSBRU3RhbmRhcmRQYXRoczo6d3JpdGFibGVMb2Nh
dGlvbihRU3RhbmRhcmRQYXRoczo6Q2FjaGVMb2NhdGlvbik7CisjZWxzZQogICAgIFFTdHJpbmcg
Y2FjaGVQYXRoID0gUURlc2t0b3BTZXJ2aWNlczo6c3RvcmFnZUxvY2F0aW9uKFFEZXNrdG9wU2Vy
dmljZXM6OkNhY2hlTG9jYXRpb24pOworI2VuZGlmCiAgICAgV2ViQ29yZTo6bWFrZUFsbERpcmVj
dG9yaWVzKGNhY2hlUGF0aCk7CiAKICAgICBRRmlsZUluZm8gaW5mbyhjYWNoZVBhdGgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHAKaW5kZXggODViNjA5MTg1NGUzMmY3Y2RkZTkzYTY2YTMxYWU3ZjgyYTNlYjJlOS4u
YzIzMzExZGFhNDIzYzdmZWRhYjJlYmRiODEwYWQ3ZjVlNGExZmQwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
CkBAIC0xNjAzLDkgKzE2MDMsMTQgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLAogICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBwYXJhbXMgPSBwYXJhbU5hbWVzOwogICAgICAgICBWZWN0b3I8U3RyaW5n
PiB2YWx1ZXMgPSBwYXJhbVZhbHVlczsKICAgICAgICAgaWYgKG1pbWVUeXBlID09ICJhcHBsaWNh
dGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpIHsKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05f
Q0hFQ0soNSwgMCwgMCkKKyAgICAgICAgICAgIGNvbnN0IGJvb2wgc2hvdWxkSW5qZWN0V21vZGUg
PSB0cnVlOworI2Vsc2UKKyAgICAgICAgICAgIC8vIEluamVjdCB3bW9kZT1vcGFxdWUgd2hlbiB0
aGVyZSBpcyBubyBjbGllbnQgb3IgdGhlIGNsaWVudCBpcyBub3QgYSBRV2ViVmlldy4KICAgICAg
ICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBtX3dlYkZyYW1lLT5wYWdlKCktPmQtPmNs
aWVudC5nZXQoKTsKLSAgICAgICAgICAgIGNvbnN0IGJvb2wgaXNRV2ViVmlldyA9IGNsaWVudCAm
JiBxb2JqZWN0X2Nhc3Q8UVdpZGdldCo+KGNsaWVudC0+cGx1Z2luUGFyZW50KCkpOwotICAgICAg
ICAgICAgaWYgKCFpc1FXZWJWaWV3KSB7CisgICAgICAgICAgICBjb25zdCBib29sIHNob3VsZElu
amVjdFdtb2RlID0gIShjbGllbnQgJiYgcW9iamVjdF9jYXN0PFFXaWRnZXQqPihjbGllbnQtPnBs
dWdpblBhcmVudCgpKSk7CisjZW5kaWYKKyAgICAgICAgICAgIGlmIChzaG91bGRJbmplY3RXbW9k
ZSkgewogICAgICAgICAgICAgICAgIC8vIEluamVjdCB3bW9kZT1vcGFxdWUgd2hlbiB0aGVyZSBp
cyBubyBjbGllbnQgb3IgdGhlIGNsaWVudCBpcyBub3QgYSBRV2ViVmlldy4KICAgICAgICAgICAg
ICAgICBzaXplX3Qgd21vZGVJbmRleCA9IHBhcmFtcy5maW5kKCJ3bW9kZSIpOwogICAgICAgICAg
ICAgICAgIGlmICh3bW9kZUluZGV4ID09IFdURjo6bm90Rm91bmQpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcAppbmRleCA2Zjk2Y2UxYmE3
YTdhOTU2ZjkyYTk0OTBhMmVjYWZkM2MzM2EzOTYxLi5lZDYxZDFmOTZhODBjYWM0MmY4MWE5MzIw
ODRiNDU0YjNkNTdhZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1BhZ2VDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9QYWdlQ2xpZW50UXQuY3BwCkBAIC02OSw2ICs2OSwyMCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNERnJvbVdpZGdldChRV2lkZ2V0KiB3aWRnZXQsIFBsYXRm
b3JtRwogI2luY2x1ZGUgInRleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCIKICNlbmRpZgogCisj
aWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDAsIDApCitRV2luZG93KiBRV2Vi
UGFnZUNsaWVudDo6b3duZXJXaW5kb3coKSBjb25zdAoreworICAgIFFXaWRnZXQqIHdpZGdldCA9
IG93bmVyV2lkZ2V0KCk7CisgICAgaWYgKCF3aWRnZXQpCisgICAgICAgIHJldHVybiAwOworICAg
IGlmIChRV2luZG93ICp3aW5kb3cgPSB3aWRnZXQtPndpbmRvd0hhbmRsZSgpKQorICAgICAgICBy
ZXR1cm4gd2luZG93OworICAgIGlmIChjb25zdCBRV2lkZ2V0ICpuYXRpdmVQYXJlbnQgPSB3aWRn
ZXQtPm5hdGl2ZVBhcmVudFdpZGdldCgpKQorICAgICAgICByZXR1cm4gbmF0aXZlUGFyZW50LT53
aW5kb3dIYW5kbGUoKTsKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJF
X01BUFBFUikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBmZTM0NDg5ZGJiNDUyODg1MTQyNDc5NmViNTk2NTkyODU5ZTgyNWUyLi5iN2JiODRjNmFh
YzdmNTJkYjNmMmNkYzUyNjUzMmUyMGI1ODBjMjA0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDUtMDcgIEJh
bGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gWDExIHBs
dWdpbnMgbmVlZCB0byBiZSByZXdvcmtlZCBmb3IgUXQ1K1dLMQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA2OTEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgd2luZG93bGVzcyBw
bHVnaW4gc3VwcG9ydCB3aXRoIFF0NS4KKworICAgICAgICAqIHFtYWtlL21rc3BlY3MvZmVhdHVy
ZXMvZmVhdHVyZXMucHJmOgorICAgICAgICBFbmFibGUgTlBBUEkgcGx1Z2lucyBpZiBYMTEgbGli
cmFyaWVzIGFyZSBhdmFpbGFibGUuCisgICAgICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9m
dW5jdGlvbnMucHJmOgorICAgICAgICBBZGRlZCBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGRl
dGVybWluZSBhdmFpbGFiaWxpdHkKKyAgICAgICAgb2YgWDExIGxpYnJhcmllcy4KKwogMjAxMi0w
NS0wNyAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAgICAgIFtH
dGtdIFdlYkdMIGZlYXR1cmUgaXMgbm90IGJ1aWx0IGFueW1vcmUgdGhyb3VnaCBidWlsZC13ZWJr
aXQgYWZ0ZXIgcjExNjI1MQpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJl
cy9mZWF0dXJlcy5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnBy
ZgppbmRleCBmOTc4YjMxZDZmY2MzYzg1ZTc3M2VjNjA2Mzg2ZGM2ODYyOWUzZTA2Li4zMzE5NTFk
OWE5Mzg2ZmI3MmQxYWE3ODNlZDZjZjUyYjM0MmEwMzM0IDEwMDY0NAotLS0gYS9Ub29scy9xbWFr
ZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNz
L2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgpAQCAtODAsNyArODAsMTAgQEAgaGF2ZVF0KDUpIHsKIAog
IyBOZXNjYXBlIHBsdWdpbnMgc3VwcG9ydCAoTlBBUEkpCiAhY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX05FVFNDQVBFX1BMVUdJTl9BUEk9LikgewotICAgIHVuaXg6aGF2ZVF0KDQpfHdpbjMyLSo6
IWVtYmVkZGVkOiF3aW5jZSo6IHsKKyAgICBoYXZlUXQoNSk6eGxpYkF2YWlsYWJsZSgpIHsKKyAg
ICAgICAgREVGSU5FUyArPSBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQST0xCisgICAgICAgIENP
TkZJRyArPSBwbHVnaW5fYmFja2VuZF94bGliCisgICAgfSBlbHNlOiB1bml4fHdpbjMyLSo6IWVt
YmVkZGVkOiF3aW5jZSogewogICAgICAgICBERUZJTkVTICs9IEVOQUJMRV9ORVRTQ0FQRV9QTFVH
SU5fQVBJPTEKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1
cmVzL2Z1bmN0aW9ucy5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2Z1bmN0aW9u
cy5wcmYKaW5kZXggYTBhMTNjMjdkOGY0ZmQwZWQyZjA0OTFhMDg1MjdkMmE1ZDI5MGJjOS4uNTI3
ZTBkOGZlYmZjMjBlZGY2OWIzMWUzNTlhNGZiNTUxYzNhMzkyNCAxMDA2NDQKLS0tIGEvVG9vbHMv
cW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mdW5jdGlvbnMucHJmCisrKyBiL1Rvb2xzL3FtYWtlL21r
c3BlY3MvZmVhdHVyZXMvZnVuY3Rpb25zLnByZgpAQCAtMzIzLDMgKzMyMywxOSBAQCBkZWZpbmVU
ZXN0KHJ1blN5bmNRdCkgewogCiAgICAgcmV0dXJuKHRydWUpCiB9CisKK2RlZmluZVRlc3QoeGxp
YkF2YWlsYWJsZSkgeworICAgIGhhdmVRdCg1KSB7CisgICAgICAgIGNvbnRhaW5zKFFUX0NPTkZJ
RywgeGNiLXhsaWIpIHsKKyAgICAgICAgICAgIHJldHVybih0cnVlKQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgcmV0dXJuKGZhbHNlKQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdW5peDohbWFjOiFlbWJlZGRlZCB7CisgICAgICAgICAgICByZXR1cm4odHJ1ZSkKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybihmYWxzZSkKKyAgICAgICAgfQorICAg
IH0KK30KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA0M2Q0YTU3NWIw
ZmI5ODYxNzZmYjhjOWQxMzM0ZGJmZWM2YjM4NjY1Li41YTljN2QwZDY3MTc5MWZmODBhMjE2OWQx
NjkwNjI2ZjIyMTI1ODYyIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMDUtMDcgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFtRdF0gWDExIHBsdWdpbnMgbmVlZCB0byBiZSByZXdvcmtlZCBm
b3IgUXQ1K1dLMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgYmFzaWMgd2luZG93bGVzcyBwbHVnaW4gc3VwcG9ydCB3aXRoIFF0NS4KKwor
ICAgICAgICAqIFNvdXJjZS9hcGkucHJpOiBOZWVkIHByaXZhdGUgQVBJJ3MgdG8gYmUgYWJsZQor
ICAgICAgICB0byB1c2UgUUFwcGxpY2F0aW9uUHJpdmF0ZTo6d2luZG93Rm9yV2lkZ2V0LgorCiAy
MDEyLTA1LTA3ICBMaWFtIFF1aW5uICA8bHF1aW5uQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNr
QmVycnldIFdXVy1BdXRoZW50aWNhdGUgaGVhZGVyIG9uIDIwMCByZXNwb25zZSBwb3BzIHVwIGF1
dGhlbnRpY2F0aW9uIGRpYWxvZwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>