<?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>57617</bug_id>
          
          <creation_ts>2011-04-01 05:31:07 -0700</creation_ts>
          <short_desc>[Qt][WK2] Implement PLUGIN_PROCESS</short_desc>
          <delta_ts>2011-08-25 01:16: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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>60629</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>55719</dependson>
    
    <dependson>60629</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Balazs Kelemen">kbalazs</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>kling</cc>
    
    <cc>liqiong.hao</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>377728</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-04-01 05:31:07 -0700</bug_when>
    <thetext>Do it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377764</commentid>
    <comment_count>1</comment_count>
      <attachid>87853</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-04-01 06:50:40 -0700</bug_when>
    <thetext>Created attachment 87853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377768</commentid>
    <comment_count>2</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-04-01 06:55:40 -0700</bug_when>
    <thetext>Expect EWS redness because it has been created on top of the dependency patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377769</commentid>
    <comment_count>3</comment_count>
      <attachid>87853</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-04-01 06:56:07 -0700</bug_when>
    <thetext>Comment on attachment 87853
Patch

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

&gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:160
&gt; +#elif PLATFORM(QT)
&gt; +    int sockets[2];
&gt; +    if (socketpair(AF_UNIX, SOCK_DGRAM, 0, sockets) == -1) {
&gt; +        qDebug() &lt;&lt; &quot;Creation of socket failed with errno:&quot; &lt;&lt; errno;

Wouldn&apos;t this work for any UNIX? What about making a PluginProcessUNIX instead?

&gt; Source/WebKit2/UIProcess/Launcher/qt/ProcessLauncherQt.cpp:92
&gt; +                                 &quot;QtWebProcess&quot; : &quot;QtPluginProcess&quot;);

I think that should be called QtWebPluginProcess not just plugin process.

&gt; Source/WebKit2/qt/EnvHttpProxyFactory.h:34
&gt; +#include &lt;QList&gt;
&gt; +#include &lt;QNetworkProxyFactory&gt;
&gt; +
&gt; +namespace WebKit {
&gt; +
&gt; +class EnvHttpProxyFactory : public QNetworkProxyFactory {
&gt; +public:
&gt; +    static void initializeProxy();

I would have done this splitting out as a separate patch

&gt; Source/WebKit2/qt/PluginMainQt.cpp:3
&gt; + * Copyright (C) 2011 University of Szeged

Don&apos;t you want a dot at the end?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377785</commentid>
    <comment_count>4</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-04-01 07:41:31 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 87853 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=87853&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:160
&gt; &gt; +#elif PLATFORM(QT)
&gt; &gt; +    int sockets[2];
&gt; &gt; +    if (socketpair(AF_UNIX, SOCK_DGRAM, 0, sockets) == -1) {
&gt; &gt; +        qDebug() &lt;&lt; &quot;Creation of socket failed with errno:&quot; &lt;&lt; errno;
&gt; 
&gt; Wouldn&apos;t this work for any UNIX? What about making a PluginProcessUNIX instead?

Definitely this patch should not be Qt-only. Furthermore I would like
a change that replacing the &quot;PLATFORM(QT) || PLATFORM(GTK)&quot; conditions in IPC
code with smg new macro flag (UNIX_IPC is my candidate). This should be handled
first (maybe in #49791?). I just uploaded this patch now for feedback.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Launcher/qt/ProcessLauncherQt.cpp:92
&gt; &gt; +                                 &quot;QtWebProcess&quot; : &quot;QtPluginProcess&quot;);
&gt; 
&gt; I think that should be called QtWebPluginProcess not just plugin process.

Yep.

&gt; 
&gt; &gt; Source/WebKit2/qt/EnvHttpProxyFactory.h:34
&gt; &gt; +#include &lt;QList&gt;
&gt; &gt; +#include &lt;QNetworkProxyFactory&gt;
&gt; &gt; +
&gt; &gt; +namespace WebKit {
&gt; &gt; +
&gt; &gt; +class EnvHttpProxyFactory : public QNetworkProxyFactory {
&gt; &gt; +public:
&gt; &gt; +    static void initializeProxy();
&gt; 
&gt; I would have done this splitting out as a separate patch

Ok.

&gt; 
&gt; &gt; Source/WebKit2/qt/PluginMainQt.cpp:3
&gt; &gt; + * Copyright (C) 2011 University of Szeged
&gt; 
&gt; Don&apos;t you want a dot at the end?

Yep.

I will return to this after the UNIX_IPC thing will be done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382713</commentid>
    <comment_count>5</comment_count>
      <attachid>88915</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-04-08 19:27:28 -0700</bug_when>
    <thetext>Created attachment 88915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383061</commentid>
    <comment_count>6</comment_count>
      <attachid>88915</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-04-11 01:04:05 -0700</bug_when>
    <thetext>Comment on attachment 88915
Patch

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

The patch doesn&apos;t seem to apply to current trunk

&gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:161
&gt; +        qDebug() &lt;&lt; &quot;Creation of socket failed with errno:&quot; &lt;&lt; errno;

This looks qt specific</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383063</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-04-11 01:05:50 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 88915 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88915&amp;action=review
&gt; 
&gt; The patch doesn&apos;t seem to apply to current trunk

Sorry, I haven&apos;t noticed this patch depends on patch attached to bug #55719</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383098</commentid>
    <comment_count>8</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-04-11 04:32:19 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 88915 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88915&amp;action=review
&gt; 
&gt; The patch doesn&apos;t seem to apply to current trunk
&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:161
&gt; &gt; +        qDebug() &lt;&lt; &quot;Creation of socket failed with errno:&quot; &lt;&lt; errno;
&gt; 
&gt; This looks qt specific

Good catch. I will fix it after the dependency patch has been landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385767</commentid>
    <comment_count>9</comment_count>
      <attachid>89585</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-04-14 08:12:34 -0700</bug_when>
    <thetext>Created attachment 89585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385769</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-14 08:13:34 -0700</bug_when>
    <thetext>Attachment 89585 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebKit.pro&apos;, u&apos;Source...&quot; exit_code: 1

Source/WebKit2/qt/PluginMainQt.cpp:27:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385778</commentid>
    <comment_count>11</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-04-14 08:23:51 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Attachment 89585 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebKit.pro&apos;, u&apos;Source...&quot; exit_code: 1
&gt; 
&gt; Source/WebKit2/qt/PluginMainQt.cpp:27:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
&gt; Total errors found: 1 in 15 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Need to be fixed by s/&lt;config.h&gt;/&quot;config.h&quot;/
I would handle this before landing if the patch is good otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392562</commentid>
    <comment_count>12</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-04-26 10:51:10 -0700</bug_when>
    <thetext>ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393057</commentid>
    <comment_count>13</comment_count>
      <attachid>89585</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-04-26 16:47:12 -0700</bug_when>
    <thetext>Comment on attachment 89585
Patch

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

&gt; Source/WebKit2/Platform/CoreIPC/Attachment.h:53
&gt; -    Attachment(int fileDescriptor, size_t);
&gt; +    Attachment(int fileDescriptor, size_t = 0);

This API look rather strange, it should be split into two constructors.

&gt; Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp:-72
&gt; -    ASSERT(!isNull());
&gt; -

Benjamin: we are in SharedMemoryUnix, so the assert totally make sense.
So Either you should have a new encoder for Arguments (with new asserts depending on the type), or you need to fix the broken assertions.

&gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:48
&gt; +// FIXME: the LOG macro don&apos;t work without that. Should be fixed there.
&gt; +using namespace WebCore;

Benjamin: Should you rely add a dependency to WebCore here? You don&apos;t want to link to WebCore.

&gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:190
&gt; +            ASSERT_NOT_REACHED();
&gt; +            return;

Benjamin: you have cleaning code to close the socket on the previous call to fcntl, but not on this one.

&gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:200
&gt; -    ASSERT_NOT_REACHED();
&gt; +    notImplemented();

With your change it does not assert in debug. The notImplemented() instead of the comment is a good idea.

&gt; Source/WebKit2/PluginProcess/qt/PluginControllerProxyQt.cpp:48
&gt; -void PluginControllerProxy::platformGeometryDidChange(const IntRect&amp; frameRect, const IntRect&amp;)
&gt; +void PluginControllerProxy::platformGeometryDidChange()

Benjamin: ???

&gt; Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:36
&gt; +#include &lt;QDebug&gt;

Benjamin: ???

&gt; Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:38
&gt; +#include &lt;QtGlobal&gt;

Benjamin: ???

&gt; Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:50
&gt; +    QApplication* app = new QApplication(argc, argv);

Benjamin: why are you creating that on the heap (and leaking it?)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393483</commentid>
    <comment_count>14</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-04-27 04:20:57 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 89585 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89585&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Platform/CoreIPC/Attachment.h:53
&gt; &gt; -    Attachment(int fileDescriptor, size_t);
&gt; &gt; +    Attachment(int fileDescriptor, size_t = 0);
&gt; 
&gt; This API look rather strange, it should be split into two constructors.

Accept.

&gt; 
&gt; &gt; Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp:-72
&gt; &gt; -    ASSERT(!isNull());
&gt; &gt; -
&gt; 
&gt; Benjamin: we are in SharedMemoryUnix, so the assert totally make sense.
&gt; So Either you should have a new encoder for Arguments (with new asserts depending on the type), or you need to fix the broken assertions.

As I wrote in the changelog this change was made because in PluginProxy::geometryDidChange we pass a null Handle if we do not need to allocate a new backing store. It has nothing to do with the Attachment changes.

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:48
&gt; &gt; +// FIXME: the LOG macro don&apos;t work without that. Should be fixed there.
&gt; &gt; +using namespace WebCore;
&gt; 
&gt; Benjamin: Should you rely add a dependency to WebCore here? You don&apos;t want to link to WebCore.

This is in the core part (i.e. the webkit library), not in the binary of the plugin process. Naturally this depends on WebCore.

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:190
&gt; &gt; +            ASSERT_NOT_REACHED();
&gt; &gt; +            return;
&gt; 
&gt; Benjamin: you have cleaning code to close the socket on the previous call to fcntl, but not on this one.

Accept.

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:200
&gt; &gt; -    ASSERT_NOT_REACHED();
&gt; &gt; +    notImplemented();
&gt; 
&gt; With your change it does not assert in debug. The notImplemented() instead of the comment is a good idea.

Do you mean keep the ASSERT_NOT_REACHED()? Actually the notImplemented() is also a debug only thing. I can keep the assert but in this case an ASSERT_WITH_MESSAGE makes more sense.

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/qt/PluginControllerProxyQt.cpp:48
&gt; &gt; -void PluginControllerProxy::platformGeometryDidChange(const IntRect&amp; frameRect, const IntRect&amp;)
&gt; &gt; +void PluginControllerProxy::platformGeometryDidChange()
&gt; 
&gt; Benjamin: ???

This is a build fix.

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:36
&gt; &gt; +#include &lt;QDebug&gt;
&gt; 
&gt; Benjamin: ???

It is used. What is the question? :)

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:38
&gt; &gt; +#include &lt;QtGlobal&gt;
&gt; 
&gt; Benjamin: ???

For Q_DECL_EXPORT.

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:50
&gt; &gt; +    QApplication* app = new QApplication(argc, argv);
&gt; 
&gt; Benjamin: why are you creating that on the heap (and leaking it?)?

Accept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393576</commentid>
    <comment_count>15</comment_count>
      <attachid>91292</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-04-27 08:50:12 -0700</bug_when>
    <thetext>Created attachment 91292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393582</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-27 08:52:56 -0700</bug_when>
    <thetext>Attachment 91292 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebKit.pro&apos;, u&apos;Source...&quot; exit_code: 1

Source/WebKit2/Platform/CoreIPC/Attachment.h:69:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397821</commentid>
    <comment_count>17</comment_count>
      <attachid>91292</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-04 05:06:51 -0700</bug_when>
    <thetext>Comment on attachment 91292
Patch

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

&gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:45
&gt; +#if PLATFORM(QT)
&gt; +#include &lt;QDebug&gt;
&gt; +#include &lt;errno.h&gt;
&gt; +#include &lt;fcntl.h&gt;
&gt; +#include &lt;sys/resource.h&gt;
&gt; +#include &lt;sys/socket.h&gt;
&gt; +#include &lt;unistd.h&gt;

This should be splitted into PLATFORM(QT) with QDebug only and everythying else in another #ifdef using USE(UNIX_DOMAIN_SOCKETS)

&gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:165
&gt; +        qDebug() &lt;&lt; &quot;Creation of socket failed with errno:&quot; &lt;&lt; errno;

This is still qt specific</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401538</commentid>
    <comment_count>18</comment_count>
      <attachid>91292</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-05-10 15:05:32 -0700</bug_when>
    <thetext>Comment on attachment 91292
Patch

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

&gt; Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp:-71
&gt; -    ASSERT(!isNull());

Why?

&gt; Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp:-91
&gt; -    ASSERT(!isNull());

Why?

&gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:40
&gt; +#include &lt;QDebug&gt;

Please remove.

&gt;&gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:165
&gt;&gt; +        qDebug() &lt;&lt; &quot;Creation of socket failed with errno:&quot; &lt;&lt; errno;
&gt; 
&gt; This is still qt specific

And even Qt specific we don&apos;t put qDebugs. Please remove.

&gt; Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:37
&gt; +#include &lt;QDebug&gt;

Please remove.

&gt; Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:64
&gt; +        qDebug() &lt;&lt; &quot;Error: wrong number of arguments.&quot;;

Please remove.

&gt; Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:71
&gt; +        qDebug() &lt;&lt; &quot;Error: connection identifier wrong.&quot;;

Please remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401893</commentid>
    <comment_count>19</comment_count>
      <attachid>91292</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-11 03:32:57 -0700</bug_when>
    <thetext>Comment on attachment 91292
Patch

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

&gt; Source/WebKit2/ChangeLog:29
&gt; +        Adjusted to the changes in Attachment.
&gt; +        Remove assertions that check that the Handle is not null.
&gt; +        In PluginProxy::geometryDidChange we pass a null Handle if
&gt; +        we do not need to allocate a new backing store.

This is not possible with our current ConnectionUnix impementation. Handles are sent as attachments using control messages. sendmsg() fails with EBADF when an invalid file descriptor (-1) is passed. Because of this, geometryDidChange is only received the first time in the plugin process, then a -1 handle is passed and sendmsg() always fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403551</commentid>
    <comment_count>20</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-05-13 08:08:30 -0700</bug_when>
    <thetext>Thanks for the review!
It&apos;s a timed out reaction and this patch is obsolete now but I have a wish and a question.

(In reply to comment #18)
&gt; (From update of attachment 91292 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91292&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp:-71
&gt; &gt; -    ASSERT(!isNull());
&gt; 
&gt; Why?
&gt; 
&gt; &gt; Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp:-91
&gt; &gt; -    ASSERT(!isNull());
&gt; 
&gt; Why?

Noem has also asked about these and it was explained in the ChangeLog both the first and the second time. Although the change is wrong as Carlos pointed out I would ask you guys to read the ChangeLog when reviewing. It takes a lot of time (at least for me) to write a ChangeLog that correctly explain the change so at least we should use it.

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:40
&gt; &gt; +#include &lt;QDebug&gt;
&gt; 
&gt; Please remove.
&gt; 
&gt; &gt;&gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:165
&gt; &gt;&gt; +        qDebug() &lt;&lt; &quot;Creation of socket failed with errno:&quot; &lt;&lt; errno;
&gt; &gt; 
&gt; &gt; This is still qt specific
&gt; 
&gt; And even Qt specific we don&apos;t put qDebugs. Please remove.

I&apos;m surprised because there is a lot of qDebug in our codebase. So, what should I use for situations like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403554</commentid>
    <comment_count>21</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-05-13 08:11:36 -0700</bug_when>
    <thetext>&gt; 
&gt; Noem has also asked about these and it was explained in the ChangeLog both the first and the second time. 

Sorry, it was Benjamin of course.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456701</commentid>
    <comment_count>22</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-08-25 01:16:28 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 60629 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87853</attachid>
            <date>2011-04-01 06:50:40 -0700</date>
            <delta_ts>2011-04-08 19:27:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57617-20110401135038.patch</filename>
            <type>text/plain</type>
            <size>32518</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI2NzIKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCAzMjE0NWFiZmEyNDlhMGM3ZmE1MTAyMWNlZTIzNmUyODJhZTllMmY3Li5lY2Iw
ZmQ4Y2I0NTcyNzlmOWYzMTk1NWI3NjY5N2IxY2JkYzc5MDljIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDQtMDEgIEJhbGF6cyBL
ZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgUExVR0lOX1BST0NFU1MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NjE3CisK
KyAgICAgICAgKiBTb3VyY2UvV2ViS2l0LnBybzogQWRkIFBsdWdpblByb2Nlc3MgdG8gU1VCRElS
Uy4KKwogMjAxMS0wMy0zMSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC5wcm8gYi9Tb3VyY2UvV2ViS2l0LnBybwppbmRleCAwNjNkZWQ3YTg1MWQwYjNkYTNhMjg0ZGI2
MjRiZGVmODI4YmY5OWZlLi5mZGVmNDUwNWI4ZGY0YzhlYzU2ZDQ3MmIyYzNhOWU0ZDFiYTY5Mjdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0LnBybworKysgYi9Tb3VyY2UvV2ViS2l0LnBybwpA
QCAtMTYsNiArMTYsNyBAQCBTVUJESVJTICs9IFdlYktpdC9xdC9RdFdlYktpdC5wcm8KIHdlYmtp
dDIgewogICAgIGV4aXN0cygkJFBXRC9XZWJLaXQyL1dlYlByb2Nlc3MucHJvKTogU1VCRElSUyAr
PSBXZWJLaXQyL1dlYlByb2Nlc3MucHJvCiAgICAgZXhpc3RzKCQkUFdEL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC90ZXN0cyk6IFNVQkRJUlMgKz0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzCisgICAgZXhpc3RzKCQkUFdEL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8pOiBTVUJESVJT
ICs9IFdlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8KIH0KIAogY29udGFpbnMoUVRfQ09ORklHLCBk
ZWNsYXJhdGl2ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGIzYjk2NzYyNzIyYTcxMWI3ODg1ZjdhMzFhMDdl
MDJhOTMwNmRlMjUuLjcxNmY4ZWQxZjUyMDkwMzZmM2EyNTA1YjVlODVhZDg4NGY2ZjVhMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxMS0wNC0wMSAgQmFsYXpzIEtlbGVtZW4gIDxr
YmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1F0XVtXSzJdIEltcGxlbWVudCBQTFVHSU5fUFJPQ0VTUworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc2MTcKKworICAgICAgICBD
cmVhdGUgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgd2ViIGFuZCB0aGUgcGx1Z2luIHByb2Nl
c3MKKyAgICAgICAgd2l0aCB0aGUgc29ja2V0cGFpciBVTklYIEFQSS4gVXNlIEF0dGFjaG1lbnQg
dG8gcGFzcyB0aGUKKyAgICAgICAgY29ubmVjdGlvbiBpZGVudGlmaWVyIGJlY2F1c2UgaXQgaXMg
cG9ydGFibGUgaW4gZmFjZSBvZiBNYWNoUG9ydC4KKyAgICAgICAgRmFjdG9yIEVudkh0dHBQcm94
eUZhY3RvcnkgdG8gaXQncyBvd24gY2xhc3MuIEludHJvZHVjZSBuZXcKKyAgICAgICAgZXhlY3V0
YWJsZSB0YXJnZXQgZm9yIHRoZSBwbHVnaW4gcHJvY2Vzcy4KKworICAgICAgICAqIFBsYXRmb3Jt
L0NvcmVJUEMvQXR0YWNobWVudC5oOgorICAgICAgICAoQ29yZUlQQzo6QXR0YWNobWVudDo6c2l6
ZSk6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9xdC9BdHRhY2htZW50UXQuY3BwOgorICAg
ICAgICAoQ29yZUlQQzo6QXR0YWNobWVudDo6QXR0YWNobWVudCk6CisgICAgICAgIEFkZCB0aGUg
YWJpbGl0eSB0byBwYXNzIGEgc29ja2V0IHZpYSBBdHRhY2htZW50LgorCisgICAgICAgICogUGxh
dGZvcm0vcXQvU2hhcmVkTWVtb3J5UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OkhhbmRsZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5k
bGU6OnJlbGVhc2VUb0F0dGFjaG1lbnQpOgorICAgICAgICBSZW1vdmUgYXNzZXJ0aW9ucyB0aGF0
IGNoZWNrIHRoYXQgdGhlIEhhbmRsZSBpcyBub3QgbnVsbC4KKyAgICAgICAgSW4gUGx1Z2luUHJv
eHk6Omdlb21ldHJ5RGlkQ2hhbmdlIHdlIHBhc3MgYSBudWxsIEhhbmRsZSBpZgorICAgICAgICB3
ZSBkbyBub3QgbmVlZCB0byBhbGxvY2F0ZSBhIG5ldyBiYWNraW5nIHN0b3JlLgorCisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy5wcm86IEFkZGVkLgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmNyZWF0ZVdl
YlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgVXNlIEF0dGFjaG1lbnQuIFNldCB1cCB0aGUg
Y29ubmVjdGlvbiB3aXRoIHNvY2tldHBhaXIuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3F0
L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNz
TWFpbik6IEVudHJ5IHBvaW50IG9mIHRoZSBwbHVnaW4gcHJvY2Vzcy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6IEFkZCBhYmlsaXR5IHRvIGxhdW5j
aCB0aGUgcGx1Z2luIHByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6
OnBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6IFVzZSBBdHRhY2htZW50Lgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3ND
b25uZWN0aW9uKTogVXNlIEF0dGFjaG1lbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAg
ICAgICogV2ViS2l0MkFQSS5wcmk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOiBVc2Ug
QXR0YWNobWVudC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc01haW5RdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NNYWluUXQpOiBNb3ZlZCB0aGUgRW52SHR0
cFByb3h5RmFjdG9yeSB0byBpdCdzIG93biBmaWxlcy4KKyAgICAgICAgTWlub3IgY2xlYW51cHMu
CisKKyAgICAgICAgKiBxdC9FbnZIdHRwUHJveHlGYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OkVudkh0dHBQcm94eUZhY3Rvcnk6OmluaXRpYWxpemVGcm9tRW52aXJvbm1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpFbnZIdHRwUHJveHlGYWN0b3J5OjpxdWVyeVByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6RW52SHR0cFByb3h5RmFjdG9yeTo6aW5pdGlhbGl6ZVByb3h5KToKKyAg
ICAgICAgKiBxdC9FbnZIdHRwUHJveHlGYWN0b3J5Lmg6CisgICAgICAgIChXZWJLaXQ6OkVudkh0
dHBQcm94eUZhY3Rvcnk6OkVudkh0dHBQcm94eUZhY3RvcnkpOgorCisgICAgICAgICogcXQvUGx1
Z2luTWFpblF0LmNwcDoKKyAgICAgICAgKG1haW4pOiBNYWluIGZ1bmN0aW9uIG9mIHRoZSBwbHVn
aW4gcHJvY2Vzcy4KKwogMjAxMS0wMy0zMSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5oCmluZGV4IGMwNTc3MTQ0OTM2ZmNm
NGZhMGE0NWY1YWY2OWY3MTA4ZGQ4ZjA4YTIuLjljNmQ2NDYxM2ZmYmZjMDBjMTE2MDU4ODJiN2M2
MzVjZWU4ZDVmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
QXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNo
bWVudC5oCkBAIC00MSw3ICs0MSw4IEBAIHB1YmxpYzoKICAgICAgICAgTWFjaFBvcnRUeXBlLAog
ICAgICAgICBNYWNoT09MTWVtb3J5VHlwZQogI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgICAgIE1h
cHBlZE1lbW9yeQorICAgICAgICBTb2NrZXRUeXBlLAorICAgICAgICBNYXBwZWRNZW1vcnlUeXBl
CiAjZW5kaWYKICAgICB9OwogCkBAIC00OSw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBBdHRhY2ht
ZW50KG1hY2hfcG9ydF9uYW1lX3QgcG9ydCwgbWFjaF9tc2dfdHlwZV9uYW1lX3QgZGlzcG9zaXRp
b24pOwogICAgIEF0dGFjaG1lbnQodm9pZCogYWRkcmVzcywgbWFjaF9tc2dfc2l6ZV90IHNpemUs
IG1hY2hfbXNnX2NvcHlfb3B0aW9uc190IGNvcHlPcHRpb25zLCBib29sIGRlYWxsb2NhdGUpOwog
I2VsaWYgUExBVEZPUk0oUVQpCi0gICAgQXR0YWNobWVudChpbnQgZmlsZURlc2NyaXB0b3IsIHNp
emVfdCk7CisgICAgQXR0YWNobWVudChpbnQgZmlsZURlc2NyaXB0b3IsIHNpemVfdCA9IDApOwog
I2VuZGlmCiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvcXQvQXR0YWNobWVudFF0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvcXQvQXR0YWNobWVudFF0LmNwcApp
bmRleCA0YzBlYmMwM2Q2ZTJiYTJmNDQ5MmFmMzVkZjg3NGYzMzZjODcxYWE1Li5kZjE3OTVkNTU1
NzJhNDNkNTYyZjRhODlmN2NmN2U0NTM0ZmI0MmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL3F0L0F0dGFjaG1lbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9xdC9BdHRhY2htZW50UXQuY3BwCkBAIC0zNiwxMiArMzYsMTEg
QEAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogQXR0YWNobWVudDo6QXR0YWNobWVudChpbnQgZmls
ZURlc2NyaXB0b3IsIHNpemVfdCBzaXplKQotICAgIDogbV90eXBlKE1hcHBlZE1lbW9yeSkKKyAg
ICA6IG1fdHlwZShzaXplID8gTWFwcGVkTWVtb3J5VHlwZSA6IFNvY2tldFR5cGUpCiAgICAgLCBt
X2ZpbGVEZXNjcmlwdG9yKGZpbGVEZXNjcmlwdG9yKQogICAgICwgbV9zaXplKHNpemUpCiB7CiAg
ICAgQVNTRVJUKG1fZmlsZURlc2NyaXB0b3IpOwotICAgIEFTU0VSVChtX3NpemUpOwogfQogCiB2
b2lkIEF0dGFjaG1lbnQ6OmRpc3Bvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vcXQvU2hhcmVkTWVtb3J5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vcXQv
U2hhcmVkTWVtb3J5UXQuY3BwCmluZGV4IDhkNWQ3MGZjMjM4ZDY4NmY1OTNiM2Q5NzNmOWVmYmU4
ZTExNjY0OWUuLmQzMjNmYTM3YmIxNzJjNTU4NGE4MDk3MDRmYzY5OWM3ODU1NGJkYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3F0L1NoYXJlZE1lbW9yeVF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9xdC9TaGFyZWRNZW1vcnlRdC5jcHAKQEAgLTYzLDgg
KzYzLDYgQEAgYm9vbCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6aXNOdWxsKCkgY29uc3QKIAogdm9p
ZCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlciog
ZW5jb2RlcikgY29uc3QKIHsKLSAgICBBU1NFUlQoIWlzTnVsbCgpKTsKLQogICAgIGVuY29kZXIt
PmVuY29kZShyZWxlYXNlVG9BdHRhY2htZW50KCkpOwogfQogCkBAIC04Myw4ICs4MSw2IEBAIGJv
b2wgU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
IGRlY29kZXIsIEhhbmRsZSYgaGFuCiAKIENvcmVJUEM6OkF0dGFjaG1lbnQgU2hhcmVkTWVtb3J5
OjpIYW5kbGU6OnJlbGVhc2VUb0F0dGFjaG1lbnQoKSBjb25zdAogewotICAgIEFTU0VSVCghaXNO
dWxsKCkpOwotCiAgICAgaW50IHRlbXAgPSBtX2ZpbGVEZXNjcmlwdG9yOwogICAgIG1fZmlsZURl
c2NyaXB0b3IgPSAtMTsKICAgICByZXR1cm4gQ29yZUlQQzo6QXR0YWNobWVudCh0ZW1wLCBtX3Np
emUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8gYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzLnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTIxNDBjZDU0MzM5Nzdh
ODEyY2QzODhiNTEzOGU4MDViYzYzNWE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy5wcm8KQEAgLTAsMCArMSw0NCBAQAorVEVNUExBVEUgPSBhcHAKK1RB
UkdFVCA9IFF0UGx1Z2luUHJvY2VzcworSU5TVEFMTFMgKz0gdGFyZ2V0CisKK2lzRW1wdHkoSU5T
VEFMTF9CSU5TKSB7CisgICAgdGFyZ2V0LnBhdGggPSAkJFtRVF9JTlNUQUxMX0JJTlNdCit9IGVs
c2UgeworICAgIHRhcmdldC5wYXRoID0gJCRJTlNUQUxMX0JJTlMKK30KKworU09VUkNFUyArPSBc
CisgICAgcXQvUGx1Z2luTWFpblF0LmNwcAorCitpc0VtcHR5KE9VVFBVVF9ESVIpOiBPVVRQVVRf
RElSID0gLi4vLi4KK2luY2x1ZGUoJCRQV0QvLi4vV2ViS2l0LnByaSkKKworREVTVERJUiA9ICQk
T1VUUFVUX0RJUi9iaW4KKyFDT05GSUcoc3RhbmRhbG9uZV9wYWNrYWdlKTogQ09ORklHIC09IGFw
cF9idW5kbGUKKworUVQgKz0gbmV0d29yaworbWFjeDpRVCs9eG1sCisKK2xpbnV4LSogeworICAg
ICMgRnJvbSBDcmVhdG9yJ3Mgc3JjL3JwYXRoLnByaToKKyAgICAjIERvIHRoZSBycGF0aCBieSBo
YW5kIHNpbmNlIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSBPUklHSU4gaW4gUU1BS0VfUlBBVEhE
SVIKKyAgICAjIHRoaXMgZXhwYW5kcyB0byAkT1JJR0lOIChhZnRlciBxbWFrZSBhbmQgbWFrZSks
IGl0IGRvZXMgTk9UIHJlYWQgYSBxbWFrZSB2YXIuCisgICAgUU1BS0VfUlBBVEhESVIgPSBcJFwk
T1JJR0lOLy4uL2xpYiAkJFFNQUtFX1JQQVRIRElSCisgICAgTVlfUlBBVEggPSAkJGpvaW4oUU1B
S0VfUlBBVEhESVIsICI6IikKKworICAgIFFNQUtFX0xGTEFHUyArPSAtV2wsLXosb3JpZ2luIFwn
LVdsLC1ycGF0aCwkJHtNWV9SUEFUSH1cJworICAgIFFNQUtFX1JQQVRIRElSID0KK30gZWxzZSB7
CisgICAgUU1BS0VfUlBBVEhESVIgPSAkJE9VVFBVVF9ESVIvbGliICQkUU1BS0VfUlBBVEhESVIK
K30KKworc3ltYmlhbiB7CisgICAgVEFSR0VULlVJRDMgPSAweEEwMDBFNTQ0CisgICAgVEFSR0VU
LkNBUEFCSUxJVFkgPSBSZWFkVXNlckRhdGEgV3JpdGVVc2VyRGF0YSBOZXR3b3JrU2VydmljZXMK
K30KKworY29udGFpbnMoUVRfQ09ORklHLCBvcGVuZ2wpIHsKKyAgICBRVCArPSBvcGVuZ2wKKyAg
ICBERUZJTkVTICs9IFFUX0NPTkZJR1VSRURfV0lUSF9PUEVOR0wKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCmluZGV4IGI4ODI3NzhiMjI5YWNl
MjkyNWI4NzhjNjQ3ZTI2YTljZTViOTkzMTguLmM2YzAxNjlkODczNWFhMTVlMjU5ZTRhNmQ0ZTY4
MDAxODM4MmVkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Q
cm9jZXNzLmNwcApAQCAtMjksMTMgKzI5LDE5IEBACiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KQogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJBdHRhY2htZW50Lmgi
CiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9j
ZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ29ubmVjdGlvbi5oIgogCi0jaWYgUExBVEZP
Uk0oTUFDKQotI2luY2x1ZGUgIk1hY2hQb3J0LmgiCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVk
ZSA8UURlYnVnPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNs
dWRlIDxzeXMvcmVzb3VyY2UuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8
dW5pc3RkLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNDYsMTEgKzE1Miwz
OSBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKICAg
ICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6Y3JlYXRlKGxpc3RlbmluZ1BvcnQpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rp
b25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpNYWNoUG9y
dCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKKyAg
ICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0df
VFlQRV9NQUtFX1NFTkQpOwogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2lu
UHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0KSwg
MCk7Ci0jZWxzZQotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICBpbnQgc29ja2V0c1syXTsKKyAgICBpZiAo
c29ja2V0cGFpcihBRl9VTklYLCBTT0NLX0RHUkFNLCAwLCBzb2NrZXRzKSA9PSAtMSkgeworICAg
ICAgICBxRGVidWcoKSA8PCAiQ3JlYXRpb24gb2Ygc29ja2V0IGZhaWxlZCB3aXRoIGVycm5vOiIg
PDwgZXJybm87CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBwbHVnaW4gcHJvY2VzcyBzb2NrZXQg
dG8gdGhlIHdlYiBwcm9jZXNzLgorICAgIHdoaWxlIChmY250bChzb2NrZXRzWzFdLCBGX1NFVEZE
LCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHdoaWxlIChjbG9z
ZShzb2NrZXRzWzBdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9CisgICAgICAgICAgICB3
aGlsZSAoY2xvc2Uoc29ja2V0c1sxXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRG9uJ3QgZXhwb3Nl
IHRoZSB3ZWIgcHJvY2VzcyBzb2NrZXQgdG8gcG9zc2libGUgZnV0dXJlIHdlYiBwcm9jZXNzZXMu
CisgICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0x
KSB7CisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgeworICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6Y3JlYXRlKHNvY2tldHNbMV0pOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25z
LmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisKKyAgICBDb3JlSVBDOjpBdHRhY2htZW50
IGNsaWVudFNvY2tldChzb2NrZXRzWzBdKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xp
ZW50U29ja2V0KSwgMCk7CiAjZW5kaWYKIAogICAgIGlmIChOZXRzY2FwZVBsdWdpbk1vZHVsZSog
bW9kdWxlID0gbmV0c2NhcGVQbHVnaW5Nb2R1bGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAKaW5kZXggODhm
YzM1OWM1YWUwY2RhNWQ5YTJkM2E4ZDhlZmYwMWVhNzVlNzU1Ni4uYjE4MzI2YzZiY2JlZWVjY2Mz
NjUxMTZjNGI0YTAwOTQzMDBiZjg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDQx
ICsyNSw1OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Q
cm9jZXNzTWFpbi5oIgogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCi0jaW5jbHVkZSAi
Q29tbWFuZExpbmUuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpbi5oIgorCiAjaW5jbHVk
ZSAiUGx1Z2luUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSAicXQvRW52SHR0cFByb3h5RmFjdG9yeS5o
IgorI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRGVidWc+CisjaW5jbHVkZSA8
UVN0cmluZ0xpc3Q+CisjaW5jbHVkZSA8UXRHbG9iYWw+CiAjaW5jbHVkZSA8cnVudGltZS9Jbml0
aWFsaXplVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKLSNkZWZpbmUgU0hPV19DUkFTSF9SRVBPUlRFUiAx
CisjaWYgVVNFKE1FRUdPVE9VQ0gpCisjaW5jbHVkZSA8TUNvbXBvbmVudERhdGE+CisjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWludCBQbHVnaW5Qcm9jZXNzTWFpbihjb25zdCBDb21t
YW5kTGluZSYgY29tbWFuZExpbmUpCitRX0RFQ0xfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7Ci0gICAgU3RyaW5nIHNlcnZpY2VOYW1lID0gY29t
bWFuZExpbmVbInNlcnZpY2VuYW1lIl07Ci0gICAgaWYgKHNlcnZpY2VOYW1lLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLQotI2lmICFTSE9XX0NSQVNIX1JFUE9SVEVS
Ci0gICAgLy8gSW5zdGFsbHMgc2lnbmFsIGhhbmRsZXJzIHRoYXQgZXhpdCBvbiBhIGNyYXNoIHNv
IHRoYXQgQ3Jhc2hSZXBvcnRlciBkb2VzIG5vdCBzaG93IHVwLgotICAgIHNpZ25hbChTSUdJTEws
IF9leGl0KTsKLSAgICBzaWduYWwoU0lHRlBFLCBfZXhpdCk7Ci0gICAgc2lnbmFsKFNJR0JVUywg
X2V4aXQpOwotICAgIHNpZ25hbChTSUdTRUdWLCBfZXhpdCk7CisgICAgUUFwcGxpY2F0aW9uOjpz
ZXRHcmFwaGljc1N5c3RlbShRTGF0aW4xU3RyaW5nKCJyYXN0ZXIiKSk7CisgICAgUUFwcGxpY2F0
aW9uKiBhcHAgPSBuZXcgUUFwcGxpY2F0aW9uKGFyZ2MsIGFyZ3YpOworCisjaWYgVVNFKE1FRUdP
VE9VQ0gpCisgICAgbmV3IE1Db21wb25lbnREYXRhKGFyZ2MsIGFyZ3YpOwogI2VuZGlmCiAKKyAg
ICBFbnZIdHRwUHJveHlGYWN0b3J5Ojppbml0aWFsaXplUHJveHkoKTsKKworICAgIHNyYW5kb20o
dGltZSgwKSk7CisKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6Omlu
aXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29w
KCk7CiAKKyAgICAvLyBDcmVhdGUgdGhlIGNvbm5lY3Rpb24uCisgICAgaWYgKGFwcC0+YXJndW1l
bnRzKCkuc2l6ZSgpIDw9IDEpIHsKKyAgICAgICAgcURlYnVnKCkgPDwgIkVycm9yOiB3cm9uZyBu
dW1iZXIgb2YgYXJndW1lbnRzLiI7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGJv
b2wgd2FzTnVtYmVyID0gZmFsc2U7CisgICAgaW50IGlkZW50aWZpZXIgPSBhcHAtPmFyZ3VtZW50
cygpLmF0KDEpLnRvSW50KCZ3YXNOdW1iZXIsIDEwKTsKKyAgICBpZiAoIXdhc051bWJlcikgewor
ICAgICAgICBxRGVidWcoKSA8PCAiRXJyb3I6IGNvbm5lY3Rpb24gaWRlbnRpZmllciB3cm9uZy4i
OworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBXZWJLaXQ6OlBsdWdpblByb2Nlc3M6
OnNoYXJlZCgpLmluaXRpYWxpemUoaWRlbnRpZmllciwgUnVuTG9vcDo6bWFpbigpKTsKKwogICAg
IFJ1bkxvb3A6OnJ1bigpOwogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcAppbmRl
eCBjYWU1YmRmZjY3NTM0M2E3ZDdiMGQwMGE4ZTBlMThiOTIxNzlhNWNhLi4yOGE0OWMyNzY3YzE4
ZTQ1NmYxYmEyYmY5OGU4NmQ5NWIxNDI3ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8UUFwcGxpY2F0
aW9uPgogI2luY2x1ZGUgPFFEZWJ1Zz4KKyNpbmNsdWRlIDxRRGlyPgogI2luY2x1ZGUgPFFGaWxl
PgogI2luY2x1ZGUgPFFMb2NhbFNlcnZlcj4KICNpbmNsdWRlIDxRTWV0YVR5cGU+CkBAIC04Nywx
MSArODgsMTMgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewogICAg
IFFTdHJpbmcgYXBwbGljYXRpb25QYXRoID0gUUxhdGluMVN0cmluZygiJTEgJTIiKTsKIAotICAg
IGlmIChRRmlsZTo6ZXhpc3RzKFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgp
ICsgUUxhdGluMVN0cmluZygiL1F0V2ViUHJvY2VzcyIpKSkgewotICAgICAgICBhcHBsaWNhdGlv
blBhdGggPSBhcHBsaWNhdGlvblBhdGguYXJnKFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9u
RGlyUGF0aCgpICsgUUxhdGluMVN0cmluZygiL1F0V2ViUHJvY2VzcyIpKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBhcHBsaWNhdGlvblBhdGggPSBhcHBsaWNhdGlvblBhdGguYXJnKFFMYXRpbjFT
dHJpbmcoIlF0V2ViUHJvY2VzcyIpKTsKLSAgICB9CisgICAgUUxhdGluMVN0cmluZyBleGVjdXRh
YmxlTmFtZShtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpX
ZWJQcm9jZXNzID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJRdFdlYlByb2Nl
c3MiIDogIlF0UGx1Z2luUHJvY2VzcyIpOworICAgIFFTdHJpbmcgZXhwZWN0ZWRFeGVjdXRhYmxl
UGF0aCA9IFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsgUURpcjo6c2Vw
YXJhdG9yKCkgKyBleGVjdXRhYmxlTmFtZTsKKyAgICBpZiAoUUZpbGU6OmV4aXN0cyhleHBlY3Rl
ZEV4ZWN1dGFibGVQYXRoKSkKKyAgICAgICAgYXBwbGljYXRpb25QYXRoID0gYXBwbGljYXRpb25Q
YXRoLmFyZyhleHBlY3RlZEV4ZWN1dGFibGVQYXRoKTsKKyAgICBlbHNlCisgICAgICAgIGFwcGxp
Y2F0aW9uUGF0aCA9IGFwcGxpY2F0aW9uUGF0aC5hcmcoZXhlY3V0YWJsZU5hbWUpOwogCiAgICAg
aW50IHNvY2tldHNbMl07CiAgICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS19ER1JBTSwg
MCwgc29ja2V0cykgPT0gLTEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCmluZGV4IGUyYTBjYjFiODMyZTdlZjA4
Njg1YWRmNTQ0MDlmZjA2ZGUyN2U5NWYuLjljMjRkNDdhZTVhZjQxYTk0ZmY2NTk1N2M4ZjU1MjE4
YjE1ZWYwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTI3LDEyICsxMjcsNyBAQCB2b2lkIFBsdWdp
blByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCkKICAg
ICAgICAgQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rp
b25SZXBsaWVzLmZpcnN0KCkuc2Vjb25kOwogICAgICAgICBtX3BlbmRpbmdDb25uZWN0aW9uUmVw
bGllcy5yZW1vdmVGaXJzdCgpOwogCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICByZXBseS0+
ZW5jb2RlKENvcmVJUEM6Ok1hY2hQb3J0KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7Ci0j
ZWxzZQotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSNlbmRpZgorICAgICAgICByZXBseS0+ZW5jb2RlKENvcmVJUEM6OkF0dGFjaG1l
bnQoKSk7CiAgICAgICAgIHJlcGx5V2ViUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCktPnNlbmRT
eW5jUmVwbHkocmVwbHkpOwogICAgIH0KIApAQCAtMjA3LDggKzIwMiw3IEBAIHZvaWQgUGx1Z2lu
UHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQ
Qzo6Q29ubmVjdGlvCiAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0gMDsKIH0K
IAotI2lmIFBMQVRGT1JNKE1BQykKLXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpNYWNoUG9ydCYgbWFjaFBvcnQpCit2
b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29u
c3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgQVNT
RVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCkBAIC0yMTcsMTAg
KzIxMSw5IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29u
bmVjdGlvbihjb25zdCBDb3JlSVBDOjpNYWNoUG9ydCYKICAgICBDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXIqIHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuZmlyc3QoKS5zZWNvbmQ7
CiAgICAgbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMucmVtb3ZlRmlyc3QoKTsKIAotICAgIHJl
cGx5LT5lbmNvZGUoQ29yZUlQQzo6TWFjaFBvcnQobWFjaFBvcnQucG9ydCgpLCBNQUNIX01TR19U
WVBFX01PVkVfU0VORCkpOworICAgIHJlcGx5LT5lbmNvZGUoY29ubmVjdGlvbklkZW50aWZpZXIp
OwogICAgIHJlcGx5V2ViUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCktPnNlbmRTeW5jUmVwbHko
cmVwbHkpOwogfQotI2VuZGlmCiAKIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRHZXRTaXRl
c1dpdGhEYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmgKaW5kZXggMjEyOTJjNjc4NGNjMWI3ZTU0YTQxYzJlY2IwZTAyOTcyMTJi
YmZlNy4uMzFjMWU3YTYwMTEwM2VkMTQyZDM2YjFiM2U4ZTQ1N2EwM2U0MGE2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
LmgKQEAgLTg2LDkgKzg2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMK
ICAgICB2b2lkIGRpZFJlY2VpdmVQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciop
OwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKGNvbnN0IENvcmVJUEM6Ok1hY2hQb3J0Jik7Ci0jZW5kaWYKKyAgICB2b2lkIGRpZENyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmKTsKICAgICB2
b2lkIGRpZEdldFNpdGVzV2l0aERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZENsZWFyU2l0ZURhdGEodWludDY0X3QgY2Fs
bGJhY2tJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA3Y2FhYzExNDQ2
ZmQ5Yjg3MDgyNWZhMjBmYzg0YzVmZDhlNzU4NGU4Li43YjU5YWVmZWNmYTU5YWYxOTY1ZjgyMDI0
OGFhMzY0NzcwMmJlNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw5
ICsyMyw3IEBACiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBQbHVn
aW5Qcm9jZXNzUHJveHkgewotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBEaWRDcmVhdGVXZWJQcm9j
ZXNzQ29ubmVjdGlvbihDb3JlSVBDOjpNYWNoUG9ydCBjb25uZWN0aW9uSWRlbnRpZmllcikKLSNl
bmRpZgorICAgIERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKENvcmVJUEM6OkF0dGFjaG1l
bnQgY29ubmVjdGlvbklkZW50aWZpZXIpCiAKICAgICBEaWRHZXRTaXRlc1dpdGhEYXRhKFZlY3Rv
cjxXVEY6OlN0cmluZz4gc2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgRGlkQ2xlYXJT
aXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwppbmRleCAyNDZjYjY4NzJl
YjNlMjZlY2E5NzM1NWI5OTc2YWJjMjZlZjZkNjcxLi5lOGU3N2I2OTNhODhiM2JmOTliYjk2NjEz
ZWYwZDYwY2IxNTVhOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtMjkxLDYgKzI5MSw3IEBAIEhFQURF
UlMgKz0gXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggXAogICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaCBcCisgICAgcXQvRW52SHR0cFByb3h5RmFjdG9yeS5oIFwKICAgICAkJFdFQktJVDJfR0VO
RVJBVEVEX0hFQURFUlMKIAogU09VUkNFUyArPSBcCkBAIC01MjIsNSArNTIzLDYgQEAgU09VUkNF
UyArPSBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9x
dC9XZWJQcm9jZXNzTWFpblF0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQu
Y3BwIFwKKyAgICBxdC9FbnZIdHRwUHJveHlGYWN0b3J5LmNwcCBcCiAgICAgJCRXRUJLSVQyX0dF
TkVSQVRFRF9TT1VSQ0VTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAK
aW5kZXggM2JjOGYzYjZlZGJiZmI5MGRiNDc3ZTRkOWIzNDA3NmVkMTJlMTk3NS4uMmVmNzNmY2Fl
YTkxMzJjOGY4YTVjM2U5OGRjNzQ1MDMyOTM4NmE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlci5jcHAKQEAgLTYzLDIxICs2MywyMCBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdAogICAgICAgICAgICAgcmV0dXJuIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zW2ldLmdl
dCgpOwogICAgIH0KIAotICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXI7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIENvcmVJUEM6Ok1hY2hQb3J0
IGNvbm5lY3Rpb25NYWNoUG9ydDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5l
Y3Rpb24oKS0+ZGVwcmVjYXRlZFNlbmRTeW5jKFdlYlByb2Nlc3NQcm94eUxlZ2FjeU1lc3NhZ2U6
OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uLCAwLCBDb3JlSVBDOjpJbihwbHVnaW5QYXRoKSwg
Q29yZUlQQzo6T3V0KGNvbm5lY3Rpb25NYWNoUG9ydCkpKQorICAgIENvcmVJUEM6OkF0dGFjaG1l
bnQgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIGlmICghV2ViUHJvY2Vzczo6c2hh
cmVkKCkuY29ubmVjdGlvbigpLT5kZXByZWNhdGVkU2VuZFN5bmMoV2ViUHJvY2Vzc1Byb3h5TGVn
YWN5TWVzc2FnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24sIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlSVBD
OjpJbihwbHVnaW5QYXRoKSwgQ29yZUlQQzo6T3V0KGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmll
cikpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29u
bmVjdGlvbk1hY2hQb3J0LnBvcnQoKTsKLSNlbHNlCi0gICAgLy8gRklYTUU6IEltcGxlbWVudC4K
LSAgICBjb25uZWN0aW9uSWRlbnRpZmllciA9IDA7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0jZW5kaWYKLSAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgIGlmIChlbmNvZGVk
Q29ubmVjdGlvbklkZW50aWZpZXIudHlwZSgpID09IENvcmVJUEM6OkF0dGFjaG1lbnQ6OlVuaW5p
dGlhbGl6ZWQpCiAgICAgICAgIHJldHVybiAwOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIENv
cmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNv
ZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpOworI2VsaWYgUExBVEZPUk0oUVQpCisgICAg
Q29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciA9IGVu
Y29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5maWxlRGVzY3JpcHRvcigpOworI2VuZGlmCisKICAg
ICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9u
ID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5QYXRoLCBjb25u
ZWN0aW9uSWRlbnRpZmllcik7CiAgICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5k
KHBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzTWFpblF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvcXQvV2ViUHJvY2Vzc01haW5RdC5jcHAKaW5kZXggNmZmMTBiYTkxYTZlZTA5MzNlMDVj
ZDU2NGRmZDhhM2Q1YmQ0ZGM0MS4uNTUzZjVjODAzYjg0Yjk5Y2VjMDBiNTBjYzQyN2I1ZThmMTE4
MDBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNz
TWFpblF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NN
YWluUXQuY3BwCkBAIC0yNSwxMTAgKzI1LDM3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgorCiAjaW5jbHVkZSAiUnVuTG9vcC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5oPgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJxdC9FbnZIdHRw
UHJveHlGYWN0b3J5LmgiCisjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgot
I2luY2x1ZGUgPFFMaXN0PgorI2luY2x1ZGUgPFFEZWJ1Zz4KICNpbmNsdWRlIDxRTmV0d29ya1By
b3h5RmFjdG9yeT4KLSNpbmNsdWRlIDxRU3RyaW5nPgogI2luY2x1ZGUgPFFTdHJpbmdMaXN0Pgot
I2luY2x1ZGUgPFFVcmw+CiAjaW5jbHVkZSA8UXRHbG9iYWw+CiAKICNpZiBVU0UoTUVFR09UT1VD
SCkKICNpbmNsdWRlIDxNQ29tcG9uZW50RGF0YT4KICNlbmRpZgogCi0jaWZuZGVmIE5ERUJVRwot
I2lmICFPUyhXSU5ET1dTKQorI2lmICFkZWZpbmVkIE5ERUJVRyAmJiAhT1MoV0lORE9XUykKICNp
bmNsdWRlIDx1bmlzdGQuaD4KICNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgTkRFQlVHCi0jaW5j
bHVkZSA8UURlYnVnPgotI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKLSNpZm5kZWYgTkRFQlVHCi0jaWYgT1MoV0lORE9XUykKKyAgICAKKyNp
ZiAhZGVmaW5lZCBOREVCVUcgJiYgT1MoV0lORE9XUykKIHN0YXRpYyB2b2lkIHNsZWVwKHVuc2ln
bmVkIHNlY29uZHMpCiB7CiAgICAgOjpTbGVlcChzZWNvbmRzICogMTAwMCk7CiB9CiAjZW5kaWYK
LSNlbmRpZgotCi1jbGFzcyBFbnZIdHRwUHJveHlGYWN0b3J5IDogcHVibGljIFFOZXR3b3JrUHJv
eHlGYWN0b3J5Ci17Ci1wdWJsaWM6Ci0gICAgRW52SHR0cFByb3h5RmFjdG9yeSgpIHsgfQotCi0g
ICAgYm9vbCBpbml0aWFsaXplRnJvbUVudmlyb25tZW50KCk7Ci0KLSAgICBRTGlzdDxRTmV0d29y
a1Byb3h5PiBxdWVyeVByb3h5KGNvbnN0IFFOZXR3b3JrUHJveHlRdWVyeSYgcXVlcnkgPSBRTmV0
d29ya1Byb3h5UXVlcnkoKSk7Ci0KLXByaXZhdGU6Ci0gICAgUUxpc3Q8UU5ldHdvcmtQcm94eT4g
bV9odHRwUHJveHk7Ci0gICAgUUxpc3Q8UU5ldHdvcmtQcm94eT4gbV9odHRwc1Byb3h5OwotfTsK
LQotYm9vbCBFbnZIdHRwUHJveHlGYWN0b3J5Ojppbml0aWFsaXplRnJvbUVudmlyb25tZW50KCkK
LXsKLSAgICBib29sIHdhc1NldEJ5RW52aXJvbm1lbnQgPSBmYWxzZTsKLQotICAgIFFVcmwgcHJv
eHlVcmwgPSBRVXJsOjpmcm9tVXNlcklucHV0KFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQocWdldGVu
digiaHR0cF9wcm94eSIpKSk7Ci0gICAgaWYgKHByb3h5VXJsLmlzVmFsaWQoKSAmJiAhcHJveHlV
cmwuaG9zdCgpLmlzRW1wdHkoKSkgewotICAgICAgICBpbnQgcHJveHlQb3J0ID0gKHByb3h5VXJs
LnBvcnQoKSA+IDApID8gcHJveHlVcmwucG9ydCgpIDogODA4MDsKLSAgICAgICAgbV9odHRwUHJv
eHkgPDwgUU5ldHdvcmtQcm94eShRTmV0d29ya1Byb3h5OjpIdHRwUHJveHksIHByb3h5VXJsLmhv
c3QoKSwgcHJveHlQb3J0KTsKLSAgICAgICAgd2FzU2V0QnlFbnZpcm9ubWVudCA9IHRydWU7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIG1faHR0cFByb3h5IDw8IFFOZXR3b3JrUHJveHk6Ok5vUHJveHk7
Ci0KLSAgICBwcm94eVVybCA9IFFVcmw6OmZyb21Vc2VySW5wdXQoUVN0cmluZzo6ZnJvbUxvY2Fs
OEJpdChxZ2V0ZW52KCJodHRwc19wcm94eSIpKSk7Ci0gICAgaWYgKHByb3h5VXJsLmlzVmFsaWQo
KSAmJiAhcHJveHlVcmwuaG9zdCgpLmlzRW1wdHkoKSkgewotICAgICAgICBpbnQgcHJveHlQb3J0
ID0gKHByb3h5VXJsLnBvcnQoKSA+IDApID8gcHJveHlVcmwucG9ydCgpIDogODA4MDsKLSAgICAg
ICAgbV9odHRwc1Byb3h5IDw8IFFOZXR3b3JrUHJveHkoUU5ldHdvcmtQcm94eTo6SHR0cFByb3h5
LCBwcm94eVVybC5ob3N0KCksIHByb3h5UG9ydCk7Ci0gICAgICAgIHdhc1NldEJ5RW52aXJvbm1l
bnQgPSB0cnVlOwotICAgIH0gZWxzZQotICAgICAgICBtX2h0dHBzUHJveHkgPDwgUU5ldHdvcmtQ
cm94eTo6Tm9Qcm94eTsKLQotICAgIHJldHVybiB3YXNTZXRCeUVudmlyb25tZW50OwotfQotCi1R
TGlzdDxRTmV0d29ya1Byb3h5PiBFbnZIdHRwUHJveHlGYWN0b3J5OjpxdWVyeVByb3h5KGNvbnN0
IFFOZXR3b3JrUHJveHlRdWVyeSYgcXVlcnkpCi17Ci0gICAgUVN0cmluZyBwcm90b2NvbCA9IHF1
ZXJ5LnByb3RvY29sVGFnKCkudG9Mb3dlcigpOwotICAgIGlmIChwcm90b2NvbCA9PSBRTGF0aW4x
U3RyaW5nKCJodHRwIikpCi0gICAgICAgIHJldHVybiBtX2h0dHBQcm94eTsKLSAgICBlbHNlIGlm
IChwcm90b2NvbCA9PSBRTGF0aW4xU3RyaW5nKCJodHRwcyIpKQotICAgICAgICByZXR1cm4gbV9o
dHRwc1Byb3h5OwotCi0gICAgUUxpc3Q8UU5ldHdvcmtQcm94eT4gcHJveGllczsKLSAgICBwcm94
aWVzIDw8IFFOZXR3b3JrUHJveHk6Ok5vUHJveHk7Ci0gICAgcmV0dXJuIHByb3hpZXM7Ci19Ci0K
LXN0YXRpYyB2b2lkIGluaXRpYWxpemVQcm94eSgpCi17Ci0gICAgUUxpc3Q8UU5ldHdvcmtQcm94
eT4gcHJveHlsaXN0ID0gUU5ldHdvcmtQcm94eUZhY3Rvcnk6OnN5c3RlbVByb3h5Rm9yUXVlcnko
KTsKLSAgICBpZiAocHJveHlsaXN0LmNvdW50KCkgPT0gMSkgewotICAgICAgICBRTmV0d29ya1By
b3h5IHByb3h5ID0gcHJveHlsaXN0LmZpcnN0KCk7Ci0gICAgICAgIGlmIChwcm94eSA9PSBRTmV0
d29ya1Byb3h5OjpOb1Byb3h5IHx8IHByb3h5ID09IFFOZXR3b3JrUHJveHk6OkRlZmF1bHRQcm94
eSkgewotICAgICAgICAgICAgRW52SHR0cFByb3h5RmFjdG9yeSogcHJveHlGYWN0b3J5ID0gbmV3
IEVudkh0dHBQcm94eUZhY3RvcnkoKTsKLSAgICAgICAgICAgIGlmIChwcm94eUZhY3RvcnktPmlu
aXRpYWxpemVGcm9tRW52aXJvbm1lbnQoKSkgewotICAgICAgICAgICAgICAgIFFOZXR3b3JrUHJv
eHlGYWN0b3J5OjpzZXRBcHBsaWNhdGlvblByb3h5RmFjdG9yeShwcm94eUZhY3RvcnkpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAg
ICBRTmV0d29ya1Byb3h5RmFjdG9yeTo6c2V0VXNlU3lzdGVtQ29uZmlndXJhdGlvbih0cnVlKTsK
LX0KIAogUV9ERUNMX0VYUE9SVCBpbnQgV2ViUHJvY2Vzc01haW5RdChpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiB7CkBAIC0xNDUsNyArNzIsNyBAQCBRX0RFQ0xfRVhQT1JUIGludCBXZWJQcm9jZXNz
TWFpblF0KGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBuZXcgTUNvbXBvbmVudERhdGEoYXJn
YywgYXJndik7CiAjZW5kaWYKIAotICAgIGluaXRpYWxpemVQcm94eSgpOworICAgIEVudkh0dHBQ
cm94eUZhY3Rvcnk6OmluaXRpYWxpemVQcm94eSgpOwogCiAgICAgc3JhbmRvbSh0aW1lKDApKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvcXQvRW52SHR0cFByb3h5RmFjdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9xdC9FbnZIdHRwUHJveHlGYWN0b3J5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
YjllOTIwZWNlZGFkYzZkM2ZmNTE5MmIyYjdmYmUwZDQyOTRlYmQxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvcXQvRW52SHR0cFByb3h5RmFjdG9yeS5jcHAKQEAgLTAsMCArMSw4
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2ZXJzaXR5IG9m
IFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkVudkh0dHBQcm94eUZhY3RvcnkuaCIKKworI2luY2x1ZGUgPFFTdHJp
bmc+CisjaW5jbHVkZSA8UVVybD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgRW52SHR0
cFByb3h5RmFjdG9yeTo6aW5pdGlhbGl6ZUZyb21FbnZpcm9ubWVudCgpCit7CisgICAgYm9vbCB3
YXNTZXRCeUVudmlyb25tZW50ID0gZmFsc2U7CisKKyAgICBRVXJsIHByb3h5VXJsID0gUVVybDo6
ZnJvbVVzZXJJbnB1dChRU3RyaW5nOjpmcm9tTG9jYWw4Qml0KHFnZXRlbnYoImh0dHBfcHJveHki
KSkpOworICAgIGlmIChwcm94eVVybC5pc1ZhbGlkKCkgJiYgIXByb3h5VXJsLmhvc3QoKS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgaW50IHByb3h5UG9ydCA9IChwcm94eVVybC5wb3J0KCkgPiAwKSA/
IHByb3h5VXJsLnBvcnQoKSA6IDgwODA7CisgICAgICAgIG1faHR0cFByb3h5IDw8IFFOZXR3b3Jr
UHJveHkoUU5ldHdvcmtQcm94eTo6SHR0cFByb3h5LCBwcm94eVVybC5ob3N0KCksIHByb3h5UG9y
dCk7CisgICAgICAgIHdhc1NldEJ5RW52aXJvbm1lbnQgPSB0cnVlOworICAgIH0gZWxzZQorICAg
ICAgICBtX2h0dHBQcm94eSA8PCBRTmV0d29ya1Byb3h5OjpOb1Byb3h5OworCisgICAgcHJveHlV
cmwgPSBRVXJsOjpmcm9tVXNlcklucHV0KFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQocWdldGVudigi
aHR0cHNfcHJveHkiKSkpOworICAgIGlmIChwcm94eVVybC5pc1ZhbGlkKCkgJiYgIXByb3h5VXJs
Lmhvc3QoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaW50IHByb3h5UG9ydCA9IChwcm94eVVybC5w
b3J0KCkgPiAwKSA/IHByb3h5VXJsLnBvcnQoKSA6IDgwODA7CisgICAgICAgIG1faHR0cHNQcm94
eSA8PCBRTmV0d29ya1Byb3h5KFFOZXR3b3JrUHJveHk6Okh0dHBQcm94eSwgcHJveHlVcmwuaG9z
dCgpLCBwcm94eVBvcnQpOworICAgICAgICB3YXNTZXRCeUVudmlyb25tZW50ID0gdHJ1ZTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgbV9odHRwc1Byb3h5IDw8IFFOZXR3b3JrUHJveHk6Ok5vUHJveHk7
CisKKyAgICByZXR1cm4gd2FzU2V0QnlFbnZpcm9ubWVudDsKK30KKworUUxpc3Q8UU5ldHdvcmtQ
cm94eT4gRW52SHR0cFByb3h5RmFjdG9yeTo6cXVlcnlQcm94eShjb25zdCBRTmV0d29ya1Byb3h5
UXVlcnkmIHF1ZXJ5KQoreworICAgIFFTdHJpbmcgcHJvdG9jb2wgPSBxdWVyeS5wcm90b2NvbFRh
ZygpLnRvTG93ZXIoKTsKKyAgICBpZiAocHJvdG9jb2wgPT0gUUxhdGluMVN0cmluZygiaHR0cCIp
KQorICAgICAgICByZXR1cm4gbV9odHRwUHJveHk7CisgICAgaWYgKHByb3RvY29sID09IFFMYXRp
bjFTdHJpbmcoImh0dHBzIikpCisgICAgICAgIHJldHVybiBtX2h0dHBzUHJveHk7CisKKyAgICBR
TGlzdDxRTmV0d29ya1Byb3h5PiBwcm94aWVzOworICAgIHByb3hpZXMgPDwgUU5ldHdvcmtQcm94
eTo6Tm9Qcm94eTsKKyAgICByZXR1cm4gcHJveGllczsKK30KKwordm9pZCBFbnZIdHRwUHJveHlG
YWN0b3J5Ojppbml0aWFsaXplUHJveHkoKQoreworICAgIFFMaXN0PFFOZXR3b3JrUHJveHk+IHBy
b3h5bGlzdCA9IFFOZXR3b3JrUHJveHlGYWN0b3J5OjpzeXN0ZW1Qcm94eUZvclF1ZXJ5KCk7Cisg
ICAgaWYgKHByb3h5bGlzdC5jb3VudCgpID09IDEpIHsKKyAgICAgICAgUU5ldHdvcmtQcm94eSBw
cm94eSA9IHByb3h5bGlzdC5maXJzdCgpOworICAgICAgICBpZiAocHJveHkgPT0gUU5ldHdvcmtQ
cm94eTo6Tm9Qcm94eSB8fCBwcm94eSA9PSBRTmV0d29ya1Byb3h5OjpEZWZhdWx0UHJveHkpIHsK
KyAgICAgICAgICAgIEVudkh0dHBQcm94eUZhY3RvcnkqIHByb3h5RmFjdG9yeSA9IG5ldyBFbnZI
dHRwUHJveHlGYWN0b3J5KCk7CisgICAgICAgICAgICBpZiAocHJveHlGYWN0b3J5LT5pbml0aWFs
aXplRnJvbUVudmlyb25tZW50KCkpIHsKKyAgICAgICAgICAgICAgICBRTmV0d29ya1Byb3h5RmFj
dG9yeTo6c2V0QXBwbGljYXRpb25Qcm94eUZhY3RvcnkocHJveHlGYWN0b3J5KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgUU5l
dHdvcmtQcm94eUZhY3Rvcnk6OnNldFVzZVN5c3RlbUNvbmZpZ3VyYXRpb24odHJ1ZSk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3F0L0Vudkh0dHBQcm94eUZhY3RvcnkuaCBi
L1NvdXJjZS9XZWJLaXQyL3F0L0Vudkh0dHBQcm94eUZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODUw
N2RiMjQ1NThjNjZkODg5MWM3MTJiMWM1NmY0Mzg3YTYxMWQwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvcXQvRW52SHR0cFByb3h5RmFjdG9yeS5oCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBvZiBTemVn
ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxRTGlzdD4KKyNp
bmNsdWRlIDxRTmV0d29ya1Byb3h5RmFjdG9yeT4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIEVudkh0dHBQcm94eUZhY3RvcnkgOiBwdWJsaWMgUU5ldHdvcmtQcm94eUZhY3Rvcnkgewor
cHVibGljOgorICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVQcm94eSgpOworCitwcml2YXRlOgor
ICAgIEVudkh0dHBQcm94eUZhY3RvcnkoKSB7IH0KKworICAgIGJvb2wgaW5pdGlhbGl6ZUZyb21F
bnZpcm9ubWVudCgpOworCisgICAgUUxpc3Q8UU5ldHdvcmtQcm94eT4gcXVlcnlQcm94eShjb25z
dCBRTmV0d29ya1Byb3h5UXVlcnkmID0gUU5ldHdvcmtQcm94eVF1ZXJ5KCkpOworCisgICAgUUxp
c3Q8UU5ldHdvcmtQcm94eT4gbV9odHRwUHJveHk7CisgICAgUUxpc3Q8UU5ldHdvcmtQcm94eT4g
bV9odHRwc1Byb3h5OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvcXQvUGx1
Z2luTWFpblF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2E2OWRhZmRjMDY0ZjdjY2NlYTUwNTFjMWRiZmIwYmI4NDY2NzU4MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAKQEAgLTAsMCArMSwz
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgPFF0R2xvYmFsPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK1FfREVDTF9J
TVBPUlQgaW50IFBsdWdpblByb2Nlc3NNYWluKGludCBhcmdjLCBjaGFyKiogYXJndik7Cit9CisK
Ky8vIFRoZSBmcmFtZXdvcmsgZW50cnkgcG9pbnQuCisvLyBXZSBjYWxsIG91ciBwbGF0Zm9ybSBz
cGVjaWZpYyBlbnRyeSBwb2ludCBkaXJlY3RseSByYXRoZXIgdGhhbiBQbHVnaW5Qcm9jZXNzTWFp
biBiZWNhdXNlIGl0IG1ha2VzCisvLyBsaXR0bGUgc2Vuc2UgdG8gcmVpbXBsZW1lbnQgdGhlIGhh
bmRsaW5nIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZnJvbSBRQXBwbGljYXRpb24uCitpbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJuIFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc01haW4oYXJnYywgYXJndik7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88915</attachid>
            <date>2011-04-08 19:27:28 -0700</date>
            <delta_ts>2011-04-11 04:32:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57617-20110409022727.patch</filename>
            <type>text/plain</type>
            <size>22157</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMzNzIKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCA3NmUzMjJlNTU2M2FkYjc4YzMzOTViZWZkY2VlYzY1NzNjMDE2NmRlLi4xNjhh
OGVjZjczOTgzYjdhODk4ODAzODI0ODNmYzM4N2UwMTcyMzUzIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDQtMDggIEJhbGF6cyBL
ZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgUExVR0lOX1BST0NFU1MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NjE3CisK
KyAgICAgICAgKiBTb3VyY2UvV2ViS2l0LnBybzogQWRkIFBsdWdpblByb2Nlc3MgdG8gU1VCRElS
Uy4KKwogMjAxMS0wNC0wOCAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4MzMzNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQucHJvIGIvU291cmNlL1dlYktpdC5wcm8KaW5kZXggMDYzZGVkN2E4NTFkMGIzZGEzYTI4
NGRiNjI0YmRlZjgyOGJmOTlmZS4uZmRlZjQ1MDViOGRmNGM4ZWM1NmQ0NzJiMmMzYTllNGQxYmE2
OTI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC5wcm8KKysrIGIvU291cmNlL1dlYktpdC5w
cm8KQEAgLTE2LDYgKzE2LDcgQEAgU1VCRElSUyArPSBXZWJLaXQvcXQvUXRXZWJLaXQucHJvCiB3
ZWJraXQyIHsKICAgICBleGlzdHMoJCRQV0QvV2ViS2l0Mi9XZWJQcm9jZXNzLnBybyk6IFNVQkRJ
UlMgKz0gV2ViS2l0Mi9XZWJQcm9jZXNzLnBybwogICAgIGV4aXN0cygkJFBXRC9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMpOiBTVUJESVJTICs9IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cworICAgIGV4aXN0cygkJFBXRC9XZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvKTogU1VC
RElSUyArPSBXZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvCiB9CiAKIGNvbnRhaW5zKFFUX0NPTkZJ
RywgZGVjbGFyYXRpdmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0NWM1NGJmYzQ2MTZmMGU1NzljNWY1NDI2
MDYzNTU5NjJmYWNlMzNkLi4xYzE2NDVkMmEzYmIyYmNkYzMyYzZmZTg3N2ZkYjQzY2ZjMWM5ZDA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTEtMDQtMDggIEJhbGF6cyBLZWxlbWVu
ICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgUExVR0lOX1BST0NFU1MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NjE3CisKKyAgICAg
ICAgQ3JlYXRlIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHdlYiBhbmQgdGhlIHBsdWdpbiBw
cm9jZXNzCisgICAgICAgIHdpdGggdGhlIHNvY2tldHBhaXIgVU5JWCBBUEkuIFVzZSBBdHRhY2ht
ZW50IHRvIHBhc3MgdGhlCisgICAgICAgIGNvbm5lY3Rpb24gaWRlbnRpZmllciBiZWNhdXNlIGl0
IGlzIHBvcnRhYmxlIGluIGZhY2Ugb2YgTWFjaFBvcnQuCisgICAgICAgIEludHJvZHVjZSBuZXcg
ZXhlY3V0YWJsZSB0YXJnZXQgZm9yIHRoZSBwbHVnaW4gcHJvY2Vzcy4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5oOgorICAgICAgICAoQ29yZUlQQzo6QXR0YWNobWVu
dDo6c2l6ZSk6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9xdC9BdHRhY2htZW50UXQuY3Bw
OgorICAgICAgICAoQ29yZUlQQzo6QXR0YWNobWVudDo6QXR0YWNobWVudCk6CisgICAgICAgIEFk
ZCB0aGUgYWJpbGl0eSB0byBwYXNzIGEgc29ja2V0IHZpYSBBdHRhY2htZW50LgorCisgICAgICAg
ICogUGxhdGZvcm0vcXQvU2hhcmVkTWVtb3J5UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OkhhbmRsZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpIYW5kbGU6OnJlbGVhc2VUb0F0dGFjaG1lbnQpOgorICAgICAgICBSZW1vdmUgYXNzZXJ0aW9u
cyB0aGF0IGNoZWNrIHRoYXQgdGhlIEhhbmRsZSBpcyBub3QgbnVsbC4KKyAgICAgICAgSW4gUGx1
Z2luUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdlIHdlIHBhc3MgYSBudWxsIEhhbmRsZSBpZgorICAg
ICAgICB3ZSBkbyBub3QgbmVlZCB0byBhbGxvY2F0ZSBhIG5ldyBiYWNraW5nIHN0b3JlLgorCisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy5wcm86IEFkZGVkLgorICAgICAgICAqIFBsdWdpblByb2Nl
c3MvUGx1Z2luUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmNy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgVXNlIEF0dGFjaG1lbnQuIFNldCB1
cCB0aGUgY29ubmVjdGlvbiB3aXRoIHNvY2tldHBhaXIuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm9jZXNzTWFpbik6IEVudHJ5IHBvaW50IG9mIHRoZSBwbHVnaW4gcHJvY2Vzcy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6IEFkZCBhYmlsaXR5IHRv
IGxhdW5jaCB0aGUgcGx1Z2luIHByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNz
UHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6IFVzZSBBdHRhY2ht
ZW50LgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uKTogVXNlIEF0dGFjaG1lbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Mi5wcm86
CisgICAgICAgICogV2ViS2l0MkFQSS5wcmk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bik6IFVzZSBBdHRhY2htZW50LgorCisgICAgICAgICogcXQvUGx1Z2luTWFpblF0LmNwcDoKKyAg
ICAgICAgKG1haW4pOiBNYWluIGZ1bmN0aW9uIG9mIHRoZSBwbHVnaW4gcHJvY2Vzcy4KKwogMjAx
MS0wMy0zMSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQXR0YWNobWVudC5oCmluZGV4IDgwNjBjNjRhNzZhNTU1MWM0M2E5YTJjZTQzOTg4N2Q1
OTlmYmQ2ODAuLjVkM2UwYWNlMTg1MWYxZjEyYmEzMjczNDY1YmRhMWNjM2FjNjI3OGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5oCkBAIC00MSw3ICs0
MSw4IEBAIHB1YmxpYzoKICAgICAgICAgTWFjaFBvcnRUeXBlLAogICAgICAgICBNYWNoT09MTWVt
b3J5VHlwZSwKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgICAgICBNYXBwZWRN
ZW1vcnkKKyAgICAgICAgU29ja2V0VHlwZSwKKyAgICAgICAgTWFwcGVkTWVtb3J5VHlwZQogI2Vu
ZGlmCiAgICAgfTsKIApAQCAtNDksNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgQXR0YWNobWVudCht
YWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5cGVfbmFtZV90IGRpc3Bvc2l0aW9uKTsK
ICAgICBBdHRhY2htZW50KHZvaWQqIGFkZHJlc3MsIG1hY2hfbXNnX3NpemVfdCBzaXplLCBtYWNo
X21zZ19jb3B5X29wdGlvbnNfdCBjb3B5T3B0aW9ucywgYm9vbCBkZWFsbG9jYXRlKTsKICNlbGlm
IFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIEF0dGFjaG1lbnQoaW50IGZpbGVEZXNjcmlw
dG9yLCBzaXplX3QpOworICAgIEF0dGFjaG1lbnQoaW50IGZpbGVEZXNjcmlwdG9yLCBzaXplX3Qg
PSAwKTsKICNlbmRpZgogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNo
bWVudFVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFj
aG1lbnRVbml4LmNwcAppbmRleCAyZDg0MmRhNjA5ZTM0ODM2NGJkYjRhN2MxOTA4NTAxZGY0NjA5
MDJiLi4wYzRmN2NhYTMyNWI0NmRkMGMzY2VmYmQ4NTljNmI5MjVmOTg5MTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5p
eC5jcHAKQEAgLTMzLDEyICszMywxMSBAQAogbmFtZXNwYWNlIENvcmVJUEMgewogCiBBdHRhY2ht
ZW50OjpBdHRhY2htZW50KGludCBmaWxlRGVzY3JpcHRvciwgc2l6ZV90IHNpemUpCi0gICAgOiBt
X3R5cGUoTWFwcGVkTWVtb3J5KQorICAgIDogbV90eXBlKHNpemUgPyBNYXBwZWRNZW1vcnlUeXBl
IDogU29ja2V0VHlwZSkKICAgICAsIG1fZmlsZURlc2NyaXB0b3IoZmlsZURlc2NyaXB0b3IpCiAg
ICAgLCBtX3NpemUoc2l6ZSkKIHsKICAgICBBU1NFUlQobV9maWxlRGVzY3JpcHRvcik7Ci0gICAg
QVNTRVJUKG1fc2l6ZSk7CiB9CiAKIHZvaWQgQXR0YWNobWVudDo6ZGlzcG9zZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAppbmRleCA3
YWNmMTMyYzc1YzA1YmNlMjBjYjgyMTlhNzQyMTA5MDRjNzU4OGY0Li44ZmJjYzIzMzRkOGEyNDJl
NDUwMjc4MzFhYjIwMGViZjQ0YjE0MWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKQEAgLTY4LDggKzY4LDYgQEAgYm9vbCBTaGFy
ZWRNZW1vcnk6OkhhbmRsZTo6aXNOdWxsKCkgY29uc3QKIAogdm9pZCBTaGFyZWRNZW1vcnk6Okhh
bmRsZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKIHsK
LSAgICBBU1NFUlQoIWlzTnVsbCgpKTsKLQogICAgIGVuY29kZXItPmVuY29kZShyZWxlYXNlVG9B
dHRhY2htZW50KCkpOwogfQogCkBAIC04OCw4ICs4Niw2IEBAIGJvb2wgU2hhcmVkTWVtb3J5OjpI
YW5kbGU6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEhhbmRsZSYg
aGFuCiAKIENvcmVJUEM6OkF0dGFjaG1lbnQgU2hhcmVkTWVtb3J5OjpIYW5kbGU6OnJlbGVhc2VU
b0F0dGFjaG1lbnQoKSBjb25zdAogewotICAgIEFTU0VSVCghaXNOdWxsKCkpOwotCiAgICAgaW50
IHRlbXAgPSBtX2ZpbGVEZXNjcmlwdG9yOwogICAgIG1fZmlsZURlc2NyaXB0b3IgPSAtMTsKICAg
ICByZXR1cm4gQ29yZUlQQzo6QXR0YWNobWVudCh0ZW1wLCBtX3NpemUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzLnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZWJjYTQ4YWFiNmRkMzI5ZTdhNmVlM2I3OWY1NGRmOTQy
ODg4YzBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy5w
cm8KQEAgLTAsMCArMSw0NyBAQAorVEVNUExBVEUgPSBhcHAKK1RBUkdFVCA9IFF0V2ViUGx1Z2lu
UHJvY2VzcworSU5TVEFMTFMgKz0gdGFyZ2V0CisKK2lzRW1wdHkoSU5TVEFMTF9CSU5TKSB7Cisg
ICAgdGFyZ2V0LnBhdGggPSAkJFtRVF9JTlNUQUxMX0JJTlNdCit9IGVsc2UgeworICAgIHRhcmdl
dC5wYXRoID0gJCRJTlNUQUxMX0JJTlMKK30KKworU09VUkNFUyArPSBcCisgICAgcXQvUGx1Z2lu
TWFpblF0LmNwcAorCitpc0VtcHR5KE9VVFBVVF9ESVIpOiBPVVRQVVRfRElSID0gLi4vLi4KK2lu
Y2x1ZGUoJCRQV0QvLi4vV2ViS2l0LnByaSkKKworSU5DTFVERVBBVEggPSAkJFBXRC8uLi9KYXZh
U2NyaXB0Q29yZSBcCisgICAgICAgICAgICAgICQkSU5DTFVERVBBVEgKKworREVTVERJUiA9ICQk
T1VUUFVUX0RJUi9iaW4KKyFDT05GSUcoc3RhbmRhbG9uZV9wYWNrYWdlKTogQ09ORklHIC09IGFw
cF9idW5kbGUKKworUVQgKz0gbmV0d29yaworbWFjeDpRVCs9eG1sCisKK2xpbnV4LSogeworICAg
ICMgRnJvbSBDcmVhdG9yJ3Mgc3JjL3JwYXRoLnByaToKKyAgICAjIERvIHRoZSBycGF0aCBieSBo
YW5kIHNpbmNlIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSBPUklHSU4gaW4gUU1BS0VfUlBBVEhE
SVIKKyAgICAjIHRoaXMgZXhwYW5kcyB0byAkT1JJR0lOIChhZnRlciBxbWFrZSBhbmQgbWFrZSks
IGl0IGRvZXMgTk9UIHJlYWQgYSBxbWFrZSB2YXIuCisgICAgUU1BS0VfUlBBVEhESVIgPSBcJFwk
T1JJR0lOLy4uL2xpYiAkJFFNQUtFX1JQQVRIRElSCisgICAgTVlfUlBBVEggPSAkJGpvaW4oUU1B
S0VfUlBBVEhESVIsICI6IikKKworICAgIFFNQUtFX0xGTEFHUyArPSAtV2wsLXosb3JpZ2luIFwn
LVdsLC1ycGF0aCwkJHtNWV9SUEFUSH1cJworICAgIFFNQUtFX1JQQVRIRElSID0KK30gZWxzZSB7
CisgICAgUU1BS0VfUlBBVEhESVIgPSAkJE9VVFBVVF9ESVIvbGliICQkUU1BS0VfUlBBVEhESVIK
K30KKworc3ltYmlhbiB7CisgICAgVEFSR0VULlVJRDMgPSAweEEwMDBFNTQ0CisgICAgVEFSR0VU
LkNBUEFCSUxJVFkgPSBSZWFkVXNlckRhdGEgV3JpdGVVc2VyRGF0YSBOZXR3b3JrU2VydmljZXMK
K30KKworY29udGFpbnMoUVRfQ09ORklHLCBvcGVuZ2wpIHsKKyAgICBRVCArPSBvcGVuZ2wKKyAg
ICBERUZJTkVTICs9IFFUX0NPTkZJR1VSRURfV0lUSF9PUEVOR0wKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCmluZGV4IGI4ODI3NzhiMjI5YWNl
MjkyNWI4NzhjNjQ3ZTI2YTljZTViOTkzMTguLjA1MTMxYTdjMTA0MjQ1MDhhNWI0NGI2YTZjZGU5
ODY2NzQxMjRlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Q
cm9jZXNzLmNwcApAQCAtMjksMTMgKzI5LDIwIEBACiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KQogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJBdHRhY2htZW50Lmgi
CiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9j
ZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ29ubmVjdGlvbi5oIgotCi0jaWYgUExBVEZP
Uk0oTUFDKQotI2luY2x1ZGUgIk1hY2hQb3J0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgorCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8UURlYnVnPgorI2luY2x1
ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2Uu
aD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNDYsMTEgKzE1Myw0MSBAQCB2b2lkIFBsdWdpblBy
b2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKICAgICBSZWZQdHI8V2ViUHJvY2Vz
c0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKGxp
c3RlbmluZ1BvcnQpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0
aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpNYWNoUG9ydCBjbGllbnRQb3J0KGxpc3Rl
bmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKKyAgICBDb3JlSVBDOjpBdHRhY2ht
ZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwog
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0KSwgMCk7CisjZWxpZiBVU0UoVU5J
WF9ET01BSU5fU09DS0VUUykKKyAgICBpbnQgc29ja2V0c1syXTsKKyAgICBpZiAoc29ja2V0cGFp
cihBRl9VTklYLCBTT0NLX0RHUkFNLCAwLCBzb2NrZXRzKSA9PSAtMSkgeworICAgICAgICBxRGVi
dWcoKSA8PCAiQ3JlYXRpb24gb2Ygc29ja2V0IGZhaWxlZCB3aXRoIGVycm5vOiIgPDwgZXJybm87
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBwbHVnaW4gcHJvY2VzcyBzb2NrZXQgdG8gdGhlIHdl
YiBwcm9jZXNzLgorICAgIHdoaWxlIChmY250bChzb2NrZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9F
WEVDKSAgPT0gLTEpIHsKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRz
WzBdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9CisgICAgICAgICAgICB3aGlsZSAoY2xv
c2Uoc29ja2V0c1sxXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSB3ZWIg
cHJvY2VzcyBzb2NrZXQgdG8gcG9zc2libGUgZnV0dXJlIHdlYiBwcm9jZXNzZXMuCisgICAgd2hp
bGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKSB7CisgICAg
ICAgIGlmIChlcnJubyAhPSBFSU5UUikgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBSZWZQdHI8
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6
Y3JlYXRlKHNvY2tldHNbMV0pOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChj
b25uZWN0aW9uLnJlbGVhc2UoKSk7CisKKyAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFNv
Y2tldChzb2NrZXRzWzBdKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlBsdWdp
blByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50U29ja2V0
KSwgMCk7CiAjZWxzZQotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgogCiAgICAgaWYgKE5ldHNj
YXBlUGx1Z2luTW9kdWxlKiBtb2R1bGUgPSBuZXRzY2FwZVBsdWdpbk1vZHVsZSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWlu
UXQuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFp
blF0LmNwcAppbmRleCA4OGZjMzU5YzVhZTBjZGE1ZDlhMmQzYThkOGVmZjAxZWE3NWU3NTU2Li4y
ZTI5OTZhMDYwNzQxZTU1ZTc5ZDJkZTExNzRiYzEzM2Y5ZDlkODQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIE5va2lhIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2ZXJzaXR5
IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjQsNDEgKzI1LDU1IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluLmgiCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NF
U1MpCiAKLSNpbmNsdWRlICJDb21tYW5kTGluZS5oIgorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NN
YWluLmgiCisKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCiAjaW5jbHVkZSAiUnVuTG9vcC5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxRQXBwbGlj
YXRpb24+CisjaW5jbHVkZSA8UURlYnVnPgorI2luY2x1ZGUgPFFTdHJpbmdMaXN0PgorI2luY2x1
ZGUgPFF0R2xvYmFsPgogI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgot
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgogCi0jZGVmaW5lIFNIT1dfQ1JBU0hfUkVQT1JURVIgMQorI2lmIFVTRShNRUVHT1RPVUNI
KQorI2luY2x1ZGUgPE1Db21wb25lbnREYXRhPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1pbnQgUGx1Z2luUHJvY2Vzc01haW4oY29uc3QgQ29tbWFuZExpbmUmIGNvbW1hbmRMaW5l
KQorUV9ERUNMX0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KQogewotICAgIFN0cmluZyBzZXJ2aWNlTmFtZSA9IGNvbW1hbmRMaW5lWyJzZXJ2aWNlbmFt
ZSJdOwotICAgIGlmIChzZXJ2aWNlTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBFWElU
X0ZBSUxVUkU7Ci0KLSNpZiAhU0hPV19DUkFTSF9SRVBPUlRFUgotICAgIC8vIEluc3RhbGxzIHNp
Z25hbCBoYW5kbGVycyB0aGF0IGV4aXQgb24gYSBjcmFzaCBzbyB0aGF0IENyYXNoUmVwb3J0ZXIg
ZG9lcyBub3Qgc2hvdyB1cC4KLSAgICBzaWduYWwoU0lHSUxMLCBfZXhpdCk7Ci0gICAgc2lnbmFs
KFNJR0ZQRSwgX2V4aXQpOwotICAgIHNpZ25hbChTSUdCVVMsIF9leGl0KTsKLSAgICBzaWduYWwo
U0lHU0VHViwgX2V4aXQpOworICAgIFFBcHBsaWNhdGlvbiogYXBwID0gbmV3IFFBcHBsaWNhdGlv
bihhcmdjLCBhcmd2KTsKKworI2lmIFVTRShNRUVHT1RPVUNIKQorICAgIG5ldyBNQ29tcG9uZW50
RGF0YShhcmdjLCBhcmd2KTsKICNlbmRpZgogCisgICAgc3JhbmRvbSh0aW1lKDApKTsKKwogICAg
IEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJl
YWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIAorICAgIC8vIENy
ZWF0ZSB0aGUgY29ubmVjdGlvbi4KKyAgICBpZiAoYXBwLT5hcmd1bWVudHMoKS5zaXplKCkgPD0g
MSkgeworICAgICAgICBxRGVidWcoKSA8PCAiRXJyb3I6IHdyb25nIG51bWJlciBvZiBhcmd1bWVu
dHMuIjsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgYm9vbCB3YXNOdW1iZXIgPSBm
YWxzZTsKKyAgICBpbnQgaWRlbnRpZmllciA9IGFwcC0+YXJndW1lbnRzKCkuYXQoMSkudG9JbnQo
Jndhc051bWJlciwgMTApOworICAgIGlmICghd2FzTnVtYmVyKSB7CisgICAgICAgIHFEZWJ1Zygp
IDw8ICJFcnJvcjogY29ubmVjdGlvbiBpZGVudGlmaWVyIHdyb25nLiI7CisgICAgICAgIHJldHVy
biAxOworICAgIH0KKworICAgIFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlh
bGl6ZShpZGVudGlmaWVyLCBSdW5Mb29wOjptYWluKCkpOworCiAgICAgUnVuTG9vcDo6cnVuKCk7
CiAKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9M
YXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCmluZGV4IDVmM2M5OWY4ZTgwNTU1
MGYyZjExYmFiOTZiNTQ2YzIxNmMyZDBhMjMuLjIzYWFlMWY3MmRlNDI1MjJlOTY0N2U5NzZkMmMx
NmRkMmVkMjM1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxRQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8
UURlYnVnPgorI2luY2x1ZGUgPFFEaXI+CiAjaW5jbHVkZSA8UUZpbGU+CiAjaW5jbHVkZSA8UUxv
Y2FsU2VydmVyPgogI2luY2x1ZGUgPFFNZXRhVHlwZT4KQEAgLTk3LDExICs5OCwxMyBAQCB2b2lk
IFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiB7CiAgICAgUVN0cmluZyBhcHBsaWNh
dGlvblBhdGggPSBRTGF0aW4xU3RyaW5nKCIlMSAlMiIpOwogCi0gICAgaWYgKFFGaWxlOjpleGlz
dHMoUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25EaXJQYXRoKCkgKyBRTGF0aW4xU3RyaW5n
KCIvUXRXZWJQcm9jZXNzIikpKSB7Ci0gICAgICAgIGFwcGxpY2F0aW9uUGF0aCA9IGFwcGxpY2F0
aW9uUGF0aC5hcmcoUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25EaXJQYXRoKCkgKyBRTGF0
aW4xU3RyaW5nKCIvUXRXZWJQcm9jZXNzIikpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGFwcGxp
Y2F0aW9uUGF0aCA9IGFwcGxpY2F0aW9uUGF0aC5hcmcoUUxhdGluMVN0cmluZygiUXRXZWJQcm9j
ZXNzIikpOwotICAgIH0KKyAgICBRTGF0aW4xU3RyaW5nIGV4ZWN1dGFibGVOYW1lKG1fbGF1bmNo
T3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6OldlYlByb2Nlc3MgPworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlF0V2ViUHJvY2VzcyIgOiAiUXRXZWJQbHVn
aW5Qcm9jZXNzIik7CisgICAgUVN0cmluZyBleHBlY3RlZEV4ZWN1dGFibGVQYXRoID0gUUNvcmVB
cHBsaWNhdGlvbjo6YXBwbGljYXRpb25EaXJQYXRoKCkgKyBRRGlyOjpzZXBhcmF0b3IoKSArIGV4
ZWN1dGFibGVOYW1lOworICAgIGlmIChRRmlsZTo6ZXhpc3RzKGV4cGVjdGVkRXhlY3V0YWJsZVBh
dGgpKQorICAgICAgICBhcHBsaWNhdGlvblBhdGggPSBhcHBsaWNhdGlvblBhdGguYXJnKGV4cGVj
dGVkRXhlY3V0YWJsZVBhdGgpOworICAgIGVsc2UKKyAgICAgICAgYXBwbGljYXRpb25QYXRoID0g
YXBwbGljYXRpb25QYXRoLmFyZyhleGVjdXRhYmxlTmFtZSk7CiAKICAgICBpbnQgc29ja2V0c1sy
XTsKICAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLX0RHUkFNLCAwLCBzb2NrZXRzKSA9
PSAtMSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXggZmNhNGMwMDNkYWJlOWY5MTYxNTU3MjdiMmFiY2Vl
Njk5ZmMyMzY2Ni4uYzc0OTI3NDI4MmNiYzJhMGFkMWFlZmUxMTE2Mjk0NzI1ZGY3MDYyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzUHJveHkuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIk1hY2hQb3J0LmgiCkBAIC0xMjksMTAg
KzEzMCwxMSBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRP
ckZhaWxlZFRvTGF1bmNoKCkKICAgICAgICAgbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMucmVt
b3ZlRmlyc3QoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgcmVwbHktPmVuY29kZShD
b3JlSVBDOjpNYWNoUG9ydCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOworICAgICAgICBy
ZXBseS0+ZW5jb2RlKENvcmVJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NF
TkQpKTsKKyNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQorICAgICAgICByZXBseS0+ZW5j
b2RlKENvcmVJUEM6OkF0dGFjaG1lbnQoKSk7CiAjZWxzZQotICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50LgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKICNlbmRpZgogICAgICAgICByZXBseVdlYlByb2Nlc3NQcm94eS0+Y29ubmVjdGlv
bigpLT5zZW5kU3luY1JlcGx5KHJlcGx5KTsKICAgICB9CkBAIC0yMDgsOCArMjEwLDcgQEAgdm9p
ZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIq
LCBDb3JlSVBDOjpDb25uZWN0aW8KICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMg
PSAwOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQotdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IENvcmVJUEM6Ok1hY2hQb3J0JiBtYWNo
UG9ydCkKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmllcikKIHsK
ICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSk7CiAKQEAg
LTIxOCwxMCArMjE5LDE2IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQ
cm9jZXNzQ29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpNYWNoUG9ydCYKICAgICBDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXIqIHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuZmlyc3Qo
KS5zZWNvbmQ7CiAgICAgbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMucmVtb3ZlRmlyc3QoKTsK
IAotICAgIHJlcGx5LT5lbmNvZGUoQ29yZUlQQzo6TWFjaFBvcnQobWFjaFBvcnQucG9ydCgpLCBN
QUNIX01TR19UWVBFX01PVkVfU0VORCkpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXBseS0+
ZW5jb2RlKENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBN
QUNIX01TR19UWVBFX01PVkVfU0VORCkpOworI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMp
CisgICAgcmVwbHktPmVuY29kZShjb25uZWN0aW9uSWRlbnRpZmllcik7CisjZWxzZQorICAgIG5v
dEltcGxlbWVudGVkKCk7CisjZW5kaWYKKwogICAgIHJlcGx5V2ViUHJvY2Vzc1Byb3h5LT5jb25u
ZWN0aW9uKCktPnNlbmRTeW5jUmVwbHkocmVwbHkpOwogfQotI2VuZGlmCiAKIHZvaWQgUGx1Z2lu
UHJvY2Vzc1Byb3h5OjpkaWRHZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBz
aXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggMGE4ZTM2NmJlNjlk
N2ZlNTlkOGJmN2IxNjcwMTlmNDQ5ZTQxOTZhYS4uNDkyNDEyOTc2NDJmOTc1YmU5YTk1OGNlNjQy
OTAwOGY3Mjg2OWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKQEAgLTg2LDkgKzg2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGRpZFJlY2VpdmVQbHVnaW5Qcm9jZXNz
UHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGRp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IENvcmVJUEM6Ok1hY2hQb3J0Jik7Ci0j
ZW5kaWYKKyAgICB2b2lkIGRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IENvcmVJ
UEM6OkF0dGFjaG1lbnQmKTsKICAgICB2b2lkIGRpZEdldFNpdGVzV2l0aERhdGEoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZENs
ZWFyU2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgppbmRleCA3Y2FhYzExNDQ2ZmQ5Yjg3MDgyNWZhMjBmYzg0YzVmZDhlNzU4NGU4Li43
YjU5YWVmZWNmYTU5YWYxOTY1ZjgyMDI0OGFhMzY0NzcwMmJlNTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw5ICsyMyw3IEBACiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9D
RVNTKQogCiBtZXNzYWdlcyAtPiBQbHVnaW5Qcm9jZXNzUHJveHkgewotI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihDb3JlSVBDOjpNYWNoUG9ydCBj
b25uZWN0aW9uSWRlbnRpZmllcikKLSNlbmRpZgorICAgIERpZENyZWF0ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uKENvcmVJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIpCiAKICAgICBE
aWRHZXRTaXRlc1dpdGhEYXRhKFZlY3RvcjxXVEY6OlN0cmluZz4gc2l0ZXMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCiAgICAgRGlkQ2xlYXJTaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAppbmRleCAzYmM4ZjNiNmVkYmJmYjkw
ZGI0NzdlNGQ5YjM0MDc2ZWQxMmUxOTc1Li4zYzkxNDc5NjMwM2ExNWIyOWY1YzFlODMwZTk5ZTQ4
NTE1NjM4NjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcApAQCAt
NjMsMjEgKzYzLDIwIEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0CiAgICAgICAgICAgICByZXR1
cm4gbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnNbaV0uZ2V0KCk7CiAgICAgfQogCi0gICAgQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcjsKLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgQ29yZUlQQzo6TWFjaFBvcnQgY29ubmVjdGlvbk1hY2hQb3J0Owot
ICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5kZXByZWNhdGVkU2Vu
ZFN5bmMoV2ViUHJvY2Vzc1Byb3h5TGVnYWN5TWVzc2FnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24sIDAsIENvcmVJUEM6OkluKHBsdWdpblBhdGgpLCBDb3JlSVBDOjpPdXQoY29ubmVjdGlv
bk1hY2hQb3J0KSkpCisgICAgQ29yZUlQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29ubmVjdGlvbklk
ZW50aWZpZXI7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPmRl
cHJlY2F0ZWRTZW5kU3luYyhXZWJQcm9jZXNzUHJveHlMZWdhY3lNZXNzYWdlOjpHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmVJUEM6OkluKHBsdWdpblBhdGgpLCBDb3Jl
SVBDOjpPdXQoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKSkpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgY29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uTWFjaFBvcnQucG9ydCgp
OwotI2Vsc2UKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIGNvbm5lY3Rpb25JZGVudGlm
aWVyID0gMDsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgotICAgIGlmICghY29u
bmVjdGlvbklkZW50aWZpZXIpCisgICAgaWYgKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci50
eXBlKCkgPT0gQ29yZUlQQzo6QXR0YWNobWVudDo6VW5pbml0aWFsaXplZCkKICAgICAgICAgcmV0
dXJuIDA7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciA9IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmll
ci5wb3J0KCk7CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICBDb3JlSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5l
Y3Rpb25JZGVudGlmaWVyLmZpbGVEZXNjcmlwdG9yKCk7CisjZW5kaWYKKwogICAgIFJlZlB0cjxQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblBhdGgsIGNvbm5lY3Rpb25JZGVu
dGlmaWVyKTsKICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9xdC9QbHVnaW5N
YWluUXQuY3BwIGIvU291cmNlL1dlYktpdDIvcXQvUGx1Z2luTWFpblF0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jYmU0ZTI2ZWVjYmZmYmY5YmE1N2IwY2JkZWRhNTAyNTJhNDNlMzUxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvcXQvUGx1Z2luTWFpblF0LmNwcApAQCAtMCwwICsxLDQ5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPGNvbmZpZy5oPgorI2lmIEVOQUJMRShQ
TFVHSU5fUFJPQ0VTUykKKworI2luY2x1ZGUgPFF0R2xvYmFsPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK1FfREVDTF9JTVBPUlQgaW50IFBsdWdpblByb2Nlc3NNYWluKGludCBhcmdjLCBjaGFyKiog
YXJndik7Cit9CisKKy8vIFRoZSBmcmFtZXdvcmsgZW50cnkgcG9pbnQuCisvLyBXZSBjYWxsIG91
ciBwbGF0Zm9ybSBzcGVjaWZpYyBlbnRyeSBwb2ludCBkaXJlY3RseSByYXRoZXIgdGhhbiBQbHVn
aW5Qcm9jZXNzTWFpbiBiZWNhdXNlIGl0IG1ha2VzCisvLyBsaXR0bGUgc2Vuc2UgdG8gcmVpbXBs
ZW1lbnQgdGhlIGhhbmRsaW5nIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZnJvbSBRQXBwbGlj
YXRpb24uCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJuIFdl
YktpdDo6UGx1Z2luUHJvY2Vzc01haW4oYXJnYywgYXJndik7Cit9CisKKyNlbHNlCisvLyBEdW1t
eSBtYWluIG5vdCB0byBicmFrZSBsaW5rYWdlIHdoZW4gUExVR0lOX1BST0NFU1MgaXMgZGlzYWJs
ZWQuCitpbnQgbWFpbihpbnQsIGNoYXIqKikKK3sKK30KKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89585</attachid>
            <date>2011-04-14 08:12:34 -0700</date>
            <delta_ts>2011-04-27 08:49:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57617-20110414151233.patch</filename>
            <type>text/plain</type>
            <size>22990</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM4NDIKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCA0NzZiYTQ3MzJlNzZjNWZlODBkMjViMzhjZmMwZGRhNTUxYjE2OTBiLi45ZGQy
MDhlZWIxNWI1ODMyYTYwYWU3ZGI0N2JlOGI0MzgxM2E2MTQyIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDQtMTQgIEJhbGF6cyBL
ZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgUExVR0lOX1BST0NFU1MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NjE3CisK
KyAgICAgICAgKiBTb3VyY2UvV2ViS2l0LnBybzogQWRkIFBsdWdpblByb2Nlc3MgdG8gU1VCRElS
Uy4KKwogMjAxMS0wNC0xMyAgRG1pdHJ5IExvbW92ICA8ZHNsb21vdkBnb29nbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC5wcm8gYi9Tb3VyY2UvV2ViS2l0LnBybwppbmRleCAwNjNkZWQ3YTg1MWQwYjNkYTNhMjg0ZGI2
MjRiZGVmODI4YmY5OWZlLi5mZGVmNDUwNWI4ZGY0YzhlYzU2ZDQ3MmIyYzNhOWU0ZDFiYTY5Mjdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0LnBybworKysgYi9Tb3VyY2UvV2ViS2l0LnBybwpA
QCAtMTYsNiArMTYsNyBAQCBTVUJESVJTICs9IFdlYktpdC9xdC9RdFdlYktpdC5wcm8KIHdlYmtp
dDIgewogICAgIGV4aXN0cygkJFBXRC9XZWJLaXQyL1dlYlByb2Nlc3MucHJvKTogU1VCRElSUyAr
PSBXZWJLaXQyL1dlYlByb2Nlc3MucHJvCiAgICAgZXhpc3RzKCQkUFdEL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC90ZXN0cyk6IFNVQkRJUlMgKz0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzCisgICAgZXhpc3RzKCQkUFdEL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8pOiBTVUJESVJT
ICs9IFdlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8KIH0KIAogY29udGFpbnMoUVRfQ09ORklHLCBk
ZWNsYXJhdGl2ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGE2NWVjZWJiZjAwOTVlMDg4MjdjMzQzNjcwOGY1
N2QwN2Y5MzU0ZDIuLmM3NzViOWNiOTllOTYyY2MyNDcxNTJhNGM4YzgzNTAzNzcxNWY1NjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsNSArMSw1NiBAQAogMjAxMS0wNC0xNCAgQmFsYXpzIEtlbGVtZW4gIDxr
YmFsYXpzQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1F0XVtXSzJdIEltcGxlbWVudCBQTFVHSU5fUFJPQ0VTUworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc2MTcKKworICAgICAgICBD
cmVhdGUgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgd2ViIGFuZCB0aGUgcGx1Z2luIHByb2Nl
c3MKKyAgICAgICAgd2l0aCB0aGUgc29ja2V0cGFpciBVTklYIEFQSS4gVXNlIEF0dGFjaG1lbnQg
dG8gcGFzcyB0aGUKKyAgICAgICAgY29ubmVjdGlvbiBpZGVudGlmaWVyIGJlY2F1c2UgaXQgaXMg
cG9ydGFibGUgaW4gZmFjZSBvZiBNYWNoUG9ydC4KKyAgICAgICAgSW50cm9kdWNlIG5ldyBleGVj
dXRhYmxlIHRhcmdldCBmb3IgdGhlIHBsdWdpbiBwcm9jZXNzLgorCisgICAgICAgICogUGxhdGZv
cm0vQ29yZUlQQy9BdHRhY2htZW50Lmg6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50Ojpz
aXplKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL3F0L0F0dGFjaG1lbnRRdC5jcHA6Cisg
ICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAgICAgICAgQWRkIHRo
ZSBhYmlsaXR5IHRvIHBhc3MgYSBzb2NrZXQgdmlhIEF0dGFjaG1lbnQuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybS9xdC9TaGFyZWRNZW1vcnlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6SGFuZGxlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6Okhh
bmRsZTo6cmVsZWFzZVRvQXR0YWNobWVudCk6CisgICAgICAgIFJlbW92ZSBhc3NlcnRpb25zIHRo
YXQgY2hlY2sgdGhhdCB0aGUgSGFuZGxlIGlzIG5vdCBudWxsLgorICAgICAgICBJbiBQbHVnaW5Q
cm94eTo6Z2VvbWV0cnlEaWRDaGFuZ2Ugd2UgcGFzcyBhIG51bGwgSGFuZGxlIGlmCisgICAgICAg
IHdlIGRvIG5vdCBuZWVkIHRvIGFsbG9jYXRlIGEgbmV3IGJhY2tpbmcgc3RvcmUuCisKKyAgICAg
ICAgKiBQbHVnaW5Qcm9jZXNzLnBybzogQWRkZWQuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Qcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6Y3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2UgQXR0YWNobWVudC4gU2V0IHVwIHRo
ZSBjb25uZWN0aW9uIHdpdGggc29ja2V0cGFpci4KKworICAgICAgICAqIFBsdWdpblByb2Nlc3Mv
cXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nl
c3NNYWluKTogRW50cnkgcG9pbnQgb2YgdGhlIHBsdWdpbiBwcm9jZXNzLgorCisgICAgICAgICog
VUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKTogQWRkIGFiaWxpdHkgdG8gbGF1
bmNoIHRoZSBwbHVnaW4gcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94
eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKTogVXNlIEF0dGFjaG1lbnQu
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24pOiBVc2UgQXR0YWNobWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKyAg
ICAgICAgKiBXZWJLaXQyQVBJLnByaToKKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTog
VXNlIEF0dGFjaG1lbnQuCisKKyAgICAgICAgKiBxdC9QbHVnaW5NYWluUXQuY3BwOgorICAgICAg
ICAobWFpbik6IE1haW4gZnVuY3Rpb24gb2YgdGhlIHBsdWdpbiBwcm9jZXNzLgorCisyMDExLTA0
LTE0ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgogCiAgICAgICAgIFtRdF1bV0syXSBNYWtlIFF0IHBvcnQg
Y29tcGlsaW5nIHdpdGggRU5BQkxFX1BMVUdJTl9QUk9DRVNTPTEKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgKaW5kZXggODA2MGM2NGE3NmE1NTUxYzQzYTlh
MmNlNDM5ODg3ZDU5OWZiZDY4MC4uNWQzZTBhY2UxODUxZjFmMTJiYTMyNzM0NjViZGExY2MzYWM2
Mjc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2ht
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgK
QEAgLTQxLDcgKzQxLDggQEAgcHVibGljOgogICAgICAgICBNYWNoUG9ydFR5cGUsCiAgICAgICAg
IE1hY2hPT0xNZW1vcnlUeXBlLAogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAg
ICAgIE1hcHBlZE1lbW9yeQorICAgICAgICBTb2NrZXRUeXBlLAorICAgICAgICBNYXBwZWRNZW1v
cnlUeXBlCiAjZW5kaWYKICAgICB9OwogCkBAIC00OSw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBB
dHRhY2htZW50KG1hY2hfcG9ydF9uYW1lX3QgcG9ydCwgbWFjaF9tc2dfdHlwZV9uYW1lX3QgZGlz
cG9zaXRpb24pOwogICAgIEF0dGFjaG1lbnQodm9pZCogYWRkcmVzcywgbWFjaF9tc2dfc2l6ZV90
IHNpemUsIG1hY2hfbXNnX2NvcHlfb3B0aW9uc190IGNvcHlPcHRpb25zLCBib29sIGRlYWxsb2Nh
dGUpOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgQXR0YWNobWVudChpbnQg
ZmlsZURlc2NyaXB0b3IsIHNpemVfdCk7CisgICAgQXR0YWNobWVudChpbnQgZmlsZURlc2NyaXB0
b3IsIHNpemVfdCA9IDApOwogI2VuZGlmCiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
dW5peC9BdHRhY2htZW50VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L3VuaXgvQXR0YWNobWVudFVuaXguY3BwCmluZGV4IDJkODQyZGE2MDllMzQ4MzY0YmRiNGE3YzE5
MDg1MDFkZjQ2MDkwMmIuLjBjNGY3Y2FhMzI1YjQ2ZGQwYzNjZWZiZDg1OWM2YjkyNWY5ODkxNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2ht
ZW50VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0
dGFjaG1lbnRVbml4LmNwcApAQCAtMzMsMTIgKzMzLDExIEBACiBuYW1lc3BhY2UgQ29yZUlQQyB7
CiAKIEF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQoaW50IGZpbGVEZXNjcmlwdG9yLCBzaXplX3Qgc2l6
ZSkKLSAgICA6IG1fdHlwZShNYXBwZWRNZW1vcnkpCisgICAgOiBtX3R5cGUoc2l6ZSA/IE1hcHBl
ZE1lbW9yeVR5cGUgOiBTb2NrZXRUeXBlKQogICAgICwgbV9maWxlRGVzY3JpcHRvcihmaWxlRGVz
Y3JpcHRvcikKICAgICAsIG1fc2l6ZShzaXplKQogewogICAgIEFTU0VSVChtX2ZpbGVEZXNjcmlw
dG9yKTsKLSAgICBBU1NFUlQobV9zaXplKTsKIH0KIAogdm9pZCBBdHRhY2htZW50OjpkaXNwb3Nl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5
VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXgu
Y3BwCmluZGV4IDdhY2YxMzJjNzVjMDViY2UyMGNiODIxOWE3NDIxMDkwNGM3NTg4ZjQuLjhmYmNj
MjMzNGQ4YTI0MmU0NTAyNzgzMWFiMjAwZWJmNDRiMTQxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcApAQCAtNjgsOCArNjgsNiBA
QCBib29sIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjppc051bGwoKSBjb25zdAogCiB2b2lkIFNoYXJl
ZE1lbW9yeTo6SGFuZGxlOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVy
KSBjb25zdAogewotICAgIEFTU0VSVCghaXNOdWxsKCkpOwotCiAgICAgZW5jb2Rlci0+ZW5jb2Rl
KHJlbGVhc2VUb0F0dGFjaG1lbnQoKSk7CiB9CiAKQEAgLTg4LDggKzg2LDYgQEAgYm9vbCBTaGFy
ZWRNZW1vcnk6OkhhbmRsZTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgSGFuZGxlJiBoYW4KIAogQ29yZUlQQzo6QXR0YWNobWVudCBTaGFyZWRNZW1vcnk6OkhhbmRs
ZTo6cmVsZWFzZVRvQXR0YWNobWVudCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFpc051bGwoKSk7
Ci0KICAgICBpbnQgdGVtcCA9IG1fZmlsZURlc2NyaXB0b3I7CiAgICAgbV9maWxlRGVzY3JpcHRv
ciA9IC0xOwogICAgIHJldHVybiBDb3JlSVBDOjpBdHRhY2htZW50KHRlbXAsIG1fc2l6ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzLnBybyBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlYmNhNDhhYWI2ZGQzMjllN2E2ZWUz
Yjc5ZjU0ZGY5NDI4ODhjMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzLnBybwpAQCAtMCwwICsxLDQ3IEBACitURU1QTEFURSA9IGFwcAorVEFSR0VUID0g
UXRXZWJQbHVnaW5Qcm9jZXNzCitJTlNUQUxMUyArPSB0YXJnZXQKKworaXNFbXB0eShJTlNUQUxM
X0JJTlMpIHsKKyAgICB0YXJnZXQucGF0aCA9ICQkW1FUX0lOU1RBTExfQklOU10KK30gZWxzZSB7
CisgICAgdGFyZ2V0LnBhdGggPSAkJElOU1RBTExfQklOUworfQorCitTT1VSQ0VTICs9IFwKKyAg
ICBxdC9QbHVnaW5NYWluUXQuY3BwCisKK2lzRW1wdHkoT1VUUFVUX0RJUik6IE9VVFBVVF9ESVIg
PSAuLi8uLgoraW5jbHVkZSgkJFBXRC8uLi9XZWJLaXQucHJpKQorCitJTkNMVURFUEFUSCA9ICQk
UFdELy4uL0phdmFTY3JpcHRDb3JlIFwKKyAgICAgICAgICAgICAgJCRJTkNMVURFUEFUSAorCitE
RVNURElSID0gJCRPVVRQVVRfRElSL2JpbgorIUNPTkZJRyhzdGFuZGFsb25lX3BhY2thZ2UpOiBD
T05GSUcgLT0gYXBwX2J1bmRsZQorCitRVCArPSBuZXR3b3JrCittYWN4OlFUKz14bWwKKworbGlu
dXgtKiB7CisgICAgIyBGcm9tIENyZWF0b3IncyBzcmMvcnBhdGgucHJpOgorICAgICMgRG8gdGhl
IHJwYXRoIGJ5IGhhbmQgc2luY2UgaXQncyBub3QgcG9zc2libGUgdG8gdXNlIE9SSUdJTiBpbiBR
TUFLRV9SUEFUSERJUgorICAgICMgdGhpcyBleHBhbmRzIHRvICRPUklHSU4gKGFmdGVyIHFtYWtl
IGFuZCBtYWtlKSwgaXQgZG9lcyBOT1QgcmVhZCBhIHFtYWtlIHZhci4KKyAgICBRTUFLRV9SUEFU
SERJUiA9IFwkXCRPUklHSU4vLi4vbGliICQkUU1BS0VfUlBBVEhESVIKKyAgICBNWV9SUEFUSCA9
ICQkam9pbihRTUFLRV9SUEFUSERJUiwgIjoiKQorCisgICAgUU1BS0VfTEZMQUdTICs9IC1XbCwt
eixvcmlnaW4gXCctV2wsLXJwYXRoLCQke01ZX1JQQVRIfVwnCisgICAgUU1BS0VfUlBBVEhESVIg
PQorfSBlbHNlIHsKKyAgICBRTUFLRV9SUEFUSERJUiA9ICQkT1VUUFVUX0RJUi9saWIgJCRRTUFL
RV9SUEFUSERJUgorfQorCitzeW1iaWFuIHsKKyAgICBUQVJHRVQuVUlEMyA9IDB4QTAwMEU1NDQK
KyAgICBUQVJHRVQuQ0FQQUJJTElUWSA9IFJlYWRVc2VyRGF0YSBXcml0ZVVzZXJEYXRhIE5ldHdv
cmtTZXJ2aWNlcworfQorCitjb250YWlucyhRVF9DT05GSUcsIG9wZW5nbCkgeworICAgIFFUICs9
IG9wZW5nbAorICAgIERFRklORVMgKz0gUVRfQ09ORklHVVJFRF9XSVRIX09QRU5HTAorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKaW5kZXggMmE5
YWMwMDdjM2QxYWRkODEwY2M3NGM0ODdiMTlkZWYxYzNkNzBkMy4uNjhjNjY5YWYwNDZiYThlYzQ2
OGZjYzM5NjVlOWI4MDMyZjExZWU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpblByb2Nlc3MuY3BwCkBAIC0yOSwxMyArMjksMjMgQEAKICNpZiBFTkFCTEUoUExV
R0lOX1BST0NFU1MpCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkF0
dGFjaG1lbnQuaCIKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIgogI2luY2x1ZGUg
IlBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDb25uZWN0aW9uLmgiCi0K
LSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiTWFjaFBvcnQuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CisKKyNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyNp
bmNsdWRlIDxXZWJDb3JlL0xvZ2dpbmcuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUg
PGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tl
dC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisvLyBGSVhNRTogdGhlIExPRyBtYWNybyBkb24n
dCB3b3JrIHdpdGhvdXQgdGhhdC4gU2hvdWxkIGJlIGZpeGVkIHRoZXJlLgordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNTMsMTEgKzE2
Myw0MSBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkK
ICAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Y3JlYXRlKGxpc3RlbmluZ1BvcnQpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpNYWNo
UG9ydCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsK
KyAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9N
U0dfVFlQRV9NQUtFX1NFTkQpOwogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1
Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0
KSwgMCk7CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICBpbnQgc29ja2V0c1sy
XTsKKyAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLX0RHUkFNLCAwLCBzb2NrZXRzKSA9
PSAtMSkgeworICAgICAgICBMT0coUGx1Z2lucywgIkNyZWF0aW9uIG9mIHNvY2tldCBmYWlsZWQg
d2l0aCBlcnJubzogJWQiLCBlcnJubyk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBwbHVnaW4g
cHJvY2VzcyBzb2NrZXQgdG8gdGhlIHdlYiBwcm9jZXNzLgorICAgIHdoaWxlIChmY250bChzb2Nr
ZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKKyAgICAgICAgaWYgKGVycm5v
ICE9IEVJTlRSKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9
CisgICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1sxXSkgPT0gLTEgJiYgZXJybm8gPT0g
RUlOVFIpIHsgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gRG9uJ3QgZXhwb3NlIHRoZSB3ZWIgcHJvY2VzcyBzb2NrZXQgdG8gcG9zc2libGUgZnV0dXJl
IHdlYiBwcm9jZXNzZXMuCisgICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZE
X0NMT0VYRUMpID09IC0xKSB7CisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgeworICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24g
PSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHNvY2tldHNbMV0pOworICAgIG1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisKKyAgICBDb3Jl
SVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChzb2NrZXRzWzBdKTsKKyAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24oY2xpZW50U29ja2V0KSwgMCk7CiAjZWxzZQotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
ICNlbmRpZgogCiAgICAgaWYgKE5ldHNjYXBlUGx1Z2luTW9kdWxlKiBtb2R1bGUgPSBuZXRzY2Fw
ZVBsdWdpbk1vZHVsZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL3F0L1BsdWdpbkNvbnRyb2xsZXJQcm94eVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvcXQvUGx1Z2luQ29udHJvbGxlclByb3h5UXQuY3BwCmluZGV4IDQyZGYxYjdjYjEz
NmNiMmU5ODAwOGFjYTM3YTA0OWM1ODM1M2Y3MTUuLjZjNTkyNDI1Y2I5NDdmY2M0ZDEyOGQ2ZDdk
NjAxMjE5ODk4YzVjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
cXQvUGx1Z2luQ29udHJvbGxlclByb3h5UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvcXQvUGx1Z2luQ29udHJvbGxlclByb3h5UXQuY3BwCkBAIC00NSw3ICs0NSw3IEBA
IHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybURlc3Ryb3koKQogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybUdl
b21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgSW50UmVjdCYp
Cit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSgp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwCmluZGV4IDg4ZmMzNTlj
NWFlMGNkYTVkOWEyZDNhOGQ4ZWZmMDFlYTc1ZTc1NTYuLjJlMjk5NmEwNjA3NDFlNTVlNzlkMmRl
MTE3NGJjMTMzZjlkOWQ4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgTm9raWEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExIFVuaXZlcnNpdHkgb2YgU3plZ2VkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCw0MSArMjUs
NTUgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vz
c01haW4uaCIKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAotI2luY2x1ZGUgIkNvbW1h
bmRMaW5lLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW4uaCIKKwogI2luY2x1ZGUgIlBs
dWdpblByb2Nlc3MuaCIKICNpbmNsdWRlICJSdW5Mb29wLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRGVi
dWc+CisjaW5jbHVkZSA8UVN0cmluZ0xpc3Q+CisjaW5jbHVkZSA8UXRHbG9iYWw+CiAjaW5jbHVk
ZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKLSNkZWZpbmUgU0hPV19D
UkFTSF9SRVBPUlRFUiAxCisjaWYgVVNFKE1FRUdPVE9VQ0gpCisjaW5jbHVkZSA8TUNvbXBvbmVu
dERhdGE+CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWludCBQbHVnaW5Qcm9jZXNz
TWFpbihjb25zdCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCitRX0RFQ0xfRVhQT1JUIGludCBQ
bHVnaW5Qcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7Ci0gICAgU3RyaW5nIHNl
cnZpY2VOYW1lID0gY29tbWFuZExpbmVbInNlcnZpY2VuYW1lIl07Ci0gICAgaWYgKHNlcnZpY2VO
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLQotI2lmICFTSE9X
X0NSQVNIX1JFUE9SVEVSCi0gICAgLy8gSW5zdGFsbHMgc2lnbmFsIGhhbmRsZXJzIHRoYXQgZXhp
dCBvbiBhIGNyYXNoIHNvIHRoYXQgQ3Jhc2hSZXBvcnRlciBkb2VzIG5vdCBzaG93IHVwLgotICAg
IHNpZ25hbChTSUdJTEwsIF9leGl0KTsKLSAgICBzaWduYWwoU0lHRlBFLCBfZXhpdCk7Ci0gICAg
c2lnbmFsKFNJR0JVUywgX2V4aXQpOwotICAgIHNpZ25hbChTSUdTRUdWLCBfZXhpdCk7CisgICAg
UUFwcGxpY2F0aW9uKiBhcHAgPSBuZXcgUUFwcGxpY2F0aW9uKGFyZ2MsIGFyZ3YpOworCisjaWYg
VVNFKE1FRUdPVE9VQ0gpCisgICAgbmV3IE1Db21wb25lbnREYXRhKGFyZ2MsIGFyZ3YpOwogI2Vu
ZGlmCiAKKyAgICBzcmFuZG9tKHRpbWUoMCkpOworCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFk
aW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6Omlu
aXRpYWxpemVNYWluUnVuTG9vcCgpOwogCisgICAgLy8gQ3JlYXRlIHRoZSBjb25uZWN0aW9uLgor
ICAgIGlmIChhcHAtPmFyZ3VtZW50cygpLnNpemUoKSA8PSAxKSB7CisgICAgICAgIHFEZWJ1Zygp
IDw8ICJFcnJvcjogd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cy4iOworICAgICAgICByZXR1cm4g
MTsKKyAgICB9CisKKyAgICBib29sIHdhc051bWJlciA9IGZhbHNlOworICAgIGludCBpZGVudGlm
aWVyID0gYXBwLT5hcmd1bWVudHMoKS5hdCgxKS50b0ludCgmd2FzTnVtYmVyLCAxMCk7CisgICAg
aWYgKCF3YXNOdW1iZXIpIHsKKyAgICAgICAgcURlYnVnKCkgPDwgIkVycm9yOiBjb25uZWN0aW9u
IGlkZW50aWZpZXIgd3JvbmcuIjsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKGlkZW50aWZpZXIsIFJ1bkxv
b3A6Om1haW4oKSk7CisKICAgICBSdW5Mb29wOjpydW4oKTsKIAogICAgIHJldHVybiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVu
Y2hlclF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNz
TGF1bmNoZXJRdC5jcHAKaW5kZXggNWYzYzk5ZjhlODA1NTUwZjJmMTFiYWI5NmI1NDZjMjE2YzJk
MGEyMy4uMjNhYWUxZjcyZGU0MjUyMmU5NjQ3ZTk3NmQyYzE2ZGQyZWQyMzU2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xh
dW5jaGVyUXQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgog
I2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRRGVidWc+CisjaW5jbHVkZSA8UURp
cj4KICNpbmNsdWRlIDxRRmlsZT4KICNpbmNsdWRlIDxRTG9jYWxTZXJ2ZXI+CiAjaW5jbHVkZSA8
UU1ldGFUeXBlPgpAQCAtOTcsMTEgKzk4LDEzIEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVu
Y2hQcm9jZXNzKCkKIHsKICAgICBRU3RyaW5nIGFwcGxpY2F0aW9uUGF0aCA9IFFMYXRpbjFTdHJp
bmcoIiUxICUyIik7CiAKLSAgICBpZiAoUUZpbGU6OmV4aXN0cyhRQ29yZUFwcGxpY2F0aW9uOjph
cHBsaWNhdGlvbkRpclBhdGgoKSArIFFMYXRpbjFTdHJpbmcoIi9RdFdlYlByb2Nlc3MiKSkpIHsK
LSAgICAgICAgYXBwbGljYXRpb25QYXRoID0gYXBwbGljYXRpb25QYXRoLmFyZyhRQ29yZUFwcGxp
Y2F0aW9uOjphcHBsaWNhdGlvbkRpclBhdGgoKSArIFFMYXRpbjFTdHJpbmcoIi9RdFdlYlByb2Nl
c3MiKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYXBwbGljYXRpb25QYXRoID0gYXBwbGljYXRp
b25QYXRoLmFyZyhRTGF0aW4xU3RyaW5nKCJRdFdlYlByb2Nlc3MiKSk7Ci0gICAgfQorICAgIFFM
YXRpbjFTdHJpbmcgZXhlY3V0YWJsZU5hbWUobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09
IFByb2Nlc3NMYXVuY2hlcjo6V2ViUHJvY2VzcyA/CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiUXRXZWJQcm9jZXNzIiA6ICJRdFdlYlBsdWdpblByb2Nlc3MiKTsKKyAgICBRU3Ry
aW5nIGV4cGVjdGVkRXhlY3V0YWJsZVBhdGggPSBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlv
bkRpclBhdGgoKSArIFFEaXI6OnNlcGFyYXRvcigpICsgZXhlY3V0YWJsZU5hbWU7CisgICAgaWYg
KFFGaWxlOjpleGlzdHMoZXhwZWN0ZWRFeGVjdXRhYmxlUGF0aCkpCisgICAgICAgIGFwcGxpY2F0
aW9uUGF0aCA9IGFwcGxpY2F0aW9uUGF0aC5hcmcoZXhwZWN0ZWRFeGVjdXRhYmxlUGF0aCk7Cisg
ICAgZWxzZQorICAgICAgICBhcHBsaWNhdGlvblBhdGggPSBhcHBsaWNhdGlvblBhdGguYXJnKGV4
ZWN1dGFibGVOYW1lKTsKIAogICAgIGludCBzb2NrZXRzWzJdOwogICAgIGlmIChzb2NrZXRwYWly
KEFGX1VOSVgsIFNPQ0tfREdSQU0sIDAsIHNvY2tldHMpID09IC0xKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCBmY2E0YzAwM2RhYmU5ZjkxNjE1NTcyN2IyYWJjZWU2OTlmYzIzNjY2Li5jNzQ5Mjc0Mjgy
Y2JjMmEwYWQxYWVmZTExMTYyOTQ3MjVkZjcwNjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJX
ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAKICNpZiBQTEFURk9STShNQUMp
CiAjaW5jbHVkZSAiTWFjaFBvcnQuaCIKQEAgLTEyOSwxMCArMTMwLDExIEBAIHZvaWQgUGx1Z2lu
UHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2goKQogICAg
ICAgICBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5yZW1vdmVGaXJzdCgpOwogCiAjaWYgUExB
VEZPUk0oTUFDKQotICAgICAgICByZXBseS0+ZW5jb2RlKENvcmVJUEM6Ok1hY2hQb3J0KDAsIE1B
Q0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CisgICAgICAgIHJlcGx5LT5lbmNvZGUoQ29yZUlQQzo6
QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOworI2VsaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCisgICAgICAgIHJlcGx5LT5lbmNvZGUoQ29yZUlQQzo6QXR0YWNobWVu
dCgpKTsKICNlbHNlCi0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCiAgICAg
ICAgIHJlcGx5V2ViUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCktPnNlbmRTeW5jUmVwbHkocmVw
bHkpOwogICAgIH0KQEAgLTIwOCw4ICsyMTAsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6
ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rpbwog
ICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cyA9IDA7CiB9CiAKLSNpZiBQTEFURk9S
TShNQUMpCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24oY29uc3QgQ29yZUlQQzo6TWFjaFBvcnQmIG1hY2hQb3J0KQordm9pZCBQbHVnaW5Qcm9j
ZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IENvcmVJUEM6OkF0
dGFjaG1lbnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghbV9wZW5kaW5n
Q29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKTsKIApAQCAtMjE4LDEwICsyMTksMTYgQEAgdm9p
ZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0
IENvcmVJUEM6Ok1hY2hQb3J0JgogICAgIENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogcmVwbHkg
PSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5maXJzdCgpLnNlY29uZDsKICAgICBtX3BlbmRp
bmdDb25uZWN0aW9uUmVwbGllcy5yZW1vdmVGaXJzdCgpOwogCi0gICAgcmVwbHktPmVuY29kZShD
b3JlSVBDOjpNYWNoUG9ydChtYWNoUG9ydC5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5E
KSk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJlcGx5LT5lbmNvZGUoQ29yZUlQQzo6QXR0YWNo
bWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5E
KSk7CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICByZXBseS0+ZW5jb2RlKGNv
bm5lY3Rpb25JZGVudGlmaWVyKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyNlbmRp
ZgorCiAgICAgcmVwbHlXZWJQcm9jZXNzUHJveHktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmNSZXBs
eShyZXBseSk7CiB9Ci0jZW5kaWYKIAogdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEdldFNp
dGVzV2l0aERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkuaAppbmRleCAwYThlMzY2YmU2OWQ3ZmU1OWQ4YmY3YjE2NzAxOWY0NDll
NDE5NmFhLi40OTI0MTI5NzY0MmY5NzViZTlhOTU4Y2U2NDI5MDA4ZjcyODY5ZmY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJv
eHkuaApAQCAtODYsOSArODYsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVy
cwogICAgIHZvaWQgZGlkUmVjZWl2ZVBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
Kik7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24oY29uc3QgQ29yZUlQQzo6TWFjaFBvcnQmKTsKLSNlbmRpZgorICAgIHZvaWQgZGlkQ3Jl
YXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYpOwogICAg
IHZvaWQgZGlkR2V0U2l0ZXNXaXRoRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkQ2xlYXJTaXRlRGF0YSh1aW50NjRfdCBj
YWxsYmFja0lEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDdjYWFjMTE0
NDZmZDliODcwODI1ZmEyMGZjODRjNWZkOGU3NTg0ZTguLjdiNTlhZWZlY2ZhNTlhZjE5NjVmODIw
MjQ4YWEzNjQ3NzAyYmU1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTIz
LDkgKzIzLDcgQEAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFBs
dWdpblByb2Nlc3NQcm94eSB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIERpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uKENvcmVJUEM6Ok1hY2hQb3J0IGNvbm5lY3Rpb25JZGVudGlmaWVyKQot
I2VuZGlmCisgICAgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oQ29yZUlQQzo6QXR0YWNo
bWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKIAogICAgIERpZEdldFNpdGVzV2l0aERhdGEoVmVj
dG9yPFdURjo6U3RyaW5nPiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBEaWRDbGVh
clNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXIuY3BwCmluZGV4IDNiYzhmM2I2ZWRiYmZiOTBkYjQ3N2U0ZDliMzQwNzZlZDEyZTE5
NzUuLjNjOTE0Nzk2MzAzYTE1YjI5ZjVjMWU4MzBlOTllNDg1MTU2Mzg2OWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBAIC02MywyMSArNjMsMjAgQEAgUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICAgICAgICAgIHJldHVybiBtX3BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uc1tpXS5nZXQoKTsKICAgICB9CiAKLSAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBDb3Jl
SVBDOjpNYWNoUG9ydCBjb25uZWN0aW9uTWFjaFBvcnQ7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpz
aGFyZWQoKS5jb25uZWN0aW9uKCktPmRlcHJlY2F0ZWRTZW5kU3luYyhXZWJQcm9jZXNzUHJveHlM
ZWdhY3lNZXNzYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiwgMCwgQ29yZUlQQzo6SW4o
cGx1Z2luUGF0aCksIENvcmVJUEM6Ok91dChjb25uZWN0aW9uTWFjaFBvcnQpKSkKKyAgICBDb3Jl
SVBDOjpBdHRhY2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICBpZiAoIVdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+ZGVwcmVjYXRlZFNlbmRTeW5jKFdlYlBy
b2Nlc3NQcm94eUxlZ2FjeU1lc3NhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uLCAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ29yZUlQQzo6SW4ocGx1Z2luUGF0aCksIENvcmVJUEM6Ok91dChlbmNvZGVkQ29ubmVj
dGlvbklkZW50aWZpZXIpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBjb25uZWN0aW9uSWRl
bnRpZmllciA9IGNvbm5lY3Rpb25NYWNoUG9ydC5wb3J0KCk7Ci0jZWxzZQotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQuCi0gICAgY29ubmVjdGlvbklkZW50aWZpZXIgPSAwOwotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotI2VuZGlmCi0gICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKKyAg
ICBpZiAoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnR5cGUoKSA9PSBDb3JlSVBDOjpBdHRh
Y2htZW50OjpVbmluaXRpYWxpemVkKQogICAgICAgICByZXR1cm4gMDsKIAorI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVu
dGlmaWVyID0gZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKTsKKyNlbGlmIFVTRShV
TklYX0RPTUFJTl9TT0NLRVRTKQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIg
Y29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIuZmlsZURl
c2NyaXB0b3IoKTsKKyNlbmRpZgorCiAgICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
PiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVh
dGUodGhpcywgcGx1Z2luUGF0aCwgY29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIG1fcGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9xdC9QbHVnaW5NYWluUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiZTRlMjZlZWNiZmZiZjliYTU3
YjBjYmRlZGE1MDI1MmE0M2UzNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9x
dC9QbHVnaW5NYWluUXQuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExIFVuaXZlcnNpdHkgb2YgU3plZ2VkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSA8Y29uZmlnLmg+CisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorCisjaW5j
bHVkZSA8UXRHbG9iYWw+CisKK25hbWVzcGFjZSBXZWJLaXQgeworUV9ERUNMX0lNUE9SVCBpbnQg
UGx1Z2luUHJvY2Vzc01haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsKK30KKworLy8gVGhlIGZy
YW1ld29yayBlbnRyeSBwb2ludC4KKy8vIFdlIGNhbGwgb3VyIHBsYXRmb3JtIHNwZWNpZmljIGVu
dHJ5IHBvaW50IGRpcmVjdGx5IHJhdGhlciB0aGFuIFBsdWdpblByb2Nlc3NNYWluIGJlY2F1c2Ug
aXQgbWFrZXMKKy8vIGxpdHRsZSBzZW5zZSB0byByZWltcGxlbWVudCB0aGUgaGFuZGxpbmcgb2Yg
Y29tbWFuZCBsaW5lIGFyZ3VtZW50cyBmcm9tIFFBcHBsaWNhdGlvbi4KK2ludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikKK3sKKyAgICByZXR1cm4gV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFp
bihhcmdjLCBhcmd2KTsKK30KKworI2Vsc2UKKy8vIER1bW15IG1haW4gbm90IHRvIGJyYWtlIGxp
bmthZ2Ugd2hlbiBQTFVHSU5fUFJPQ0VTUyBpcyBkaXNhYmxlZC4KK2ludCBtYWluKGludCwgY2hh
cioqKQoreworfQorI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91292</attachid>
            <date>2011-04-27 08:50:12 -0700</date>
            <delta_ts>2011-05-11 03:32:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57617-20110427155011.patch</filename>
            <type>text/plain</type>
            <size>26478</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUwNDQKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCA5MzY0YmM0ZWY1NzI1MjZlZGFlNjI1ZDQyYjMyYTUyMDc3ZjFjZmU5Li43NDg1
MmM3NzM1ODliZDM3NTczNzIzMzgwMDE1YjFmNDExODVjMjgwIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDQtMjcgIEJhbGF6cyBL
ZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgUExVR0lOX1BST0NFU1MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NjE3CisK
KyAgICAgICAgKiBTb3VyY2UvV2ViS2l0LnBybzogQWRkIFBsdWdpblByb2Nlc3MgdG8gU1VCRElS
Uy4KKwogMjAxMS0wNC0yNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNv
bT4KIAogICAgICAgICBSdWJiZXJzdGFtcGVkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC5wcm8gYi9Tb3VyY2UvV2ViS2l0LnBybwppbmRleCAwNjNkZWQ3YTg1MWQw
YjNkYTNhMjg0ZGI2MjRiZGVmODI4YmY5OWZlLi5mZGVmNDUwNWI4ZGY0YzhlYzU2ZDQ3MmIyYzNh
OWU0ZDFiYTY5MjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0LnBybworKysgYi9Tb3VyY2Uv
V2ViS2l0LnBybwpAQCAtMTYsNiArMTYsNyBAQCBTVUJESVJTICs9IFdlYktpdC9xdC9RdFdlYktp
dC5wcm8KIHdlYmtpdDIgewogICAgIGV4aXN0cygkJFBXRC9XZWJLaXQyL1dlYlByb2Nlc3MucHJv
KTogU1VCRElSUyArPSBXZWJLaXQyL1dlYlByb2Nlc3MucHJvCiAgICAgZXhpc3RzKCQkUFdEL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cyk6IFNVQkRJUlMgKz0gV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzCisgICAgZXhpc3RzKCQkUFdEL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy5w
cm8pOiBTVUJESVJTICs9IFdlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8KIH0KIAogY29udGFpbnMo
UVRfQ09ORklHLCBkZWNsYXJhdGl2ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ0MWFlM2M2OTQ2ZGM1YTZl
Y2Q1NTc4MGVjZWMxMzUyYjg3YTBhYmIuLmViN2UxM2Y4NGQ2OTk2MDdmODVkZmVlYmM4ODNjZGZi
NzMyN2FjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMS0wNC0yNyAgQmFsYXpz
IEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XVtXSzJdIEltcGxlbWVudCBQTFVHSU5fUFJPQ0VT
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc2MTcK
KworICAgICAgICBDcmVhdGUgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgd2ViIGFuZCB0aGUg
cGx1Z2luIHByb2Nlc3MKKyAgICAgICAgd2l0aCB0aGUgc29ja2V0cGFpciBVTklYIEFQSS4gVXNl
IEF0dGFjaG1lbnQgdG8gcGFzcyB0aGUKKyAgICAgICAgY29ubmVjdGlvbiBpZGVudGlmaWVyIGJl
Y2F1c2UgaXQgaXMgcG9ydGFibGUgaW4gZmFjZSBvZiBNYWNoUG9ydC4KKyAgICAgICAgSW50cm9k
dWNlIG5ldyBleGVjdXRhYmxlIHRhcmdldCBmb3IgdGhlIHBsdWdpbiBwcm9jZXNzLgorCisgICAg
ICAgICogUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50Lmg6CisgICAgICAgICogUGxhdGZvcm0v
Q29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFj
aG1lbnQ6OmluaXRpYWxpemVGcm9tTWFwcGVkTWVtb3J5KToKKyAgICAgICAgKENvcmVJUEM6OkF0
dGFjaG1lbnQ6OmluaXRpYWxpemVGcm9tU29ja2V0KToKKyAgICAgICAgQWRkIHRoZSBhYmlsaXR5
IHRvIHBhc3MgYSBzb2NrZXQgdmlhIEF0dGFjaG1lbnQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVj
dGlvbjo6cmVhZHlSZWFkSGFuZGxlcik6CisgICAgICAgIEFkanVzdGVkIHRvIHRoZSBjaGFuZ2Vz
IGluIEF0dGFjaG1lbnQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVu
aXguY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZTo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGU6OnJlbGVhc2VUb0F0dGFjaG1l
bnQpOgorICAgICAgICBBZGp1c3RlZCB0byB0aGUgY2hhbmdlcyBpbiBBdHRhY2htZW50LgorICAg
ICAgICBSZW1vdmUgYXNzZXJ0aW9ucyB0aGF0IGNoZWNrIHRoYXQgdGhlIEhhbmRsZSBpcyBub3Qg
bnVsbC4KKyAgICAgICAgSW4gUGx1Z2luUHJveHk6Omdlb21ldHJ5RGlkQ2hhbmdlIHdlIHBhc3Mg
YSBudWxsIEhhbmRsZSBpZgorICAgICAgICB3ZSBkbyBub3QgbmVlZCB0byBhbGxvY2F0ZSBhIG5l
dyBiYWNraW5nIHN0b3JlLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy5wcm86IEFkZGVkLgor
ICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
VXNlIEF0dGFjaG1lbnQuIFNldCB1cCB0aGUgY29ubmVjdGlvbiB3aXRoIHNvY2tldHBhaXIuCisK
KyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3F0L1BsdWdpbkNvbnRyb2xsZXJQcm94eVF0LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybUdlb21ldHJ5
RGlkQ2hhbmdlKToKKyAgICAgICAgRml4IGJ1aWxkIGJ5IHVwZGF0aW5nIHRoZSBzaWduYXR1cmUu
CisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFpbik6IEVudHJ5IHBvaW50IG9mIHRoZSBw
bHVnaW4gcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNz
TGF1bmNoZXJRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNo
UHJvY2Vzcyk6IEFkZCBhYmlsaXR5IHRvIGxhdW5jaCB0aGUgcGx1Z2luIHByb2Nlc3MuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWls
ZWRUb0xhdW5jaCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3Jl
YXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
VXNlIEF0dGFjaG1lbnQgdG8gcGFzcyB0aGUgY29ubmVjdGlvbi4KKworICAgICAgICAqIHF0L1Bs
dWdpbk1haW5RdC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
cXQvUGx1Z2luQ29udHJvbGxlclByb3h5UXQuY3BwLgorICAgICAgICAobWFpbik6IE1haW4gZnVu
Y3Rpb24gb2YgdGhlIHBsdWdpbiBwcm9jZXNzLgorCiAyMDExLTA0LTI2ICBDaGFuZyBTaHUgIDxj
c2h1QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5oIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgKaW5kZXggODA2MGM2
NGE3NmE1NTUxYzQzYTlhMmNlNDM5ODg3ZDU5OWZiZDY4MC4uMDhkNDM5YzJjMWZlNmNkMjIyZTlh
MWIwYmExMzUyOTZhMGVjNzlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9BdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9BdHRhY2htZW50LmgKQEAgLTQxLDE1ICs0MSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIE1hY2hQ
b3J0VHlwZSwKICAgICAgICAgTWFjaE9PTE1lbW9yeVR5cGUsCiAjZWxpZiBVU0UoVU5JWF9ET01B
SU5fU09DS0VUUykKLSAgICAgICAgTWFwcGVkTWVtb3J5CisgICAgICAgIFNvY2tldFR5cGUsCisg
ICAgICAgIE1hcHBlZE1lbW9yeVR5cGUKICNlbmRpZgogICAgIH07CiAKICNpZiBQTEFURk9STShN
QUMpCiAgICAgQXR0YWNobWVudChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5cGVf
bmFtZV90IGRpc3Bvc2l0aW9uKTsKICAgICBBdHRhY2htZW50KHZvaWQqIGFkZHJlc3MsIG1hY2hf
bXNnX3NpemVfdCBzaXplLCBtYWNoX21zZ19jb3B5X29wdGlvbnNfdCBjb3B5T3B0aW9ucywgYm9v
bCBkZWFsbG9jYXRlKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIEF0dGFj
aG1lbnQoaW50IGZpbGVEZXNjcmlwdG9yLCBzaXplX3QpOwogI2VuZGlmCiAKICAgICBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KQEAgLTY3LDYgKzY2LDkgQEAgcHVibGljOgog
ICAgIG1hY2hfbXNnX2NvcHlfb3B0aW9uc190IGNvcHlPcHRpb25zKCkgY29uc3QgeyBBU1NFUlQo
bV90eXBlID09IE1hY2hPT0xNZW1vcnlUeXBlKTsgcmV0dXJuIG1fb29sTWVtb3J5LmNvcHlPcHRp
b25zOyB9CiAgICAgYm9vbCBkZWFsbG9jYXRlKCkgY29uc3QgeyBBU1NFUlQobV90eXBlID09IE1h
Y2hPT0xNZW1vcnlUeXBlKTsgcmV0dXJuIG1fb29sTWVtb3J5LmRlYWxsb2NhdGU7IH0KICNlbGlm
IFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQorICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVGcm9t
TWFwcGVkTWVtb3J5KEF0dGFjaG1lbnQmLCBpbnQgZmlsZURlc2NyaXB0b3IsIHNpemVfdCBzaXpl
KTsKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplRnJvbVNvY2tldChBdHRhY2htZW50JiwgaW50
IHNvY2tldEZpbGVEZXNjcmlwdG9yKTsKKwogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9CiAKICAgICBpbnQgcmVsZWFzZUZpbGVEZXNjcmlwdG9yKCkgeyBpbnQgdGVt
cCA9IG1fZmlsZURlc2NyaXB0b3I7IG1fZmlsZURlc2NyaXB0b3IgPSAtMTsgcmV0dXJuIHRlbXA7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRh
Y2htZW50VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0
YWNobWVudFVuaXguY3BwCmluZGV4IDJkODQyZGE2MDllMzQ4MzY0YmRiNGE3YzE5MDg1MDFkZjQ2
MDkwMmIuLmRjOTk5ODQ5MzM2ODFmNWRjNjdkYWVkZTRkNGU1M2Q1M2Q1MWEwOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRV
bml4LmNwcApAQCAtMzIsMTMgKzMyLDIyIEBACiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAotQXR0
YWNobWVudDo6QXR0YWNobWVudChpbnQgZmlsZURlc2NyaXB0b3IsIHNpemVfdCBzaXplKQotICAg
IDogbV90eXBlKE1hcHBlZE1lbW9yeSkKLSAgICAsIG1fZmlsZURlc2NyaXB0b3IoZmlsZURlc2Ny
aXB0b3IpCi0gICAgLCBtX3NpemUoc2l6ZSkKK3ZvaWQgQXR0YWNobWVudDo6aW5pdGlhbGl6ZUZy
b21NYXBwZWRNZW1vcnkoQXR0YWNobWVudCYgYXR0YWNobWVudCwgaW50IGZpbGVEZXNjcmlwdG9y
LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBBU1NFUlQobV9maWxlRGVzY3JpcHRvcik7Ci0gICAgQVNT
RVJUKG1fc2l6ZSk7CisgICAgQVNTRVJUX0FSRyhhdHRhY2htZW50LCBhdHRhY2htZW50LnR5cGUo
KSA9PSBVbmluaXRpYWxpemVkKTsKKyAgICBBU1NFUlQoZmlsZURlc2NyaXB0b3IpOworICAgIGF0
dGFjaG1lbnQubV90eXBlID0gTWFwcGVkTWVtb3J5VHlwZTsKKyAgICBhdHRhY2htZW50Lm1fZmls
ZURlc2NyaXB0b3IgPSBmaWxlRGVzY3JpcHRvcjsKKyAgICBhdHRhY2htZW50Lm1fc2l6ZSA9IHNp
emU7Cit9CisKK3ZvaWQgQXR0YWNobWVudDo6aW5pdGlhbGl6ZUZyb21Tb2NrZXQoQXR0YWNobWVu
dCYgYXR0YWNobWVudCwgaW50IHNvY2tldEZpbGVEZXNjcmlwdG9yKQoreworICAgIEFTU0VSVF9B
UkcoYXR0YWNobWVudCwgYXR0YWNobWVudC50eXBlKCkgPT0gVW5pbml0aWFsaXplZCk7CisgICAg
QVNTRVJUKHNvY2tldEZpbGVEZXNjcmlwdG9yKTsKKyAgICBhdHRhY2htZW50Lm1fdHlwZSA9IFNv
Y2tldFR5cGU7CisgICAgYXR0YWNobWVudC5tX2ZpbGVEZXNjcmlwdG9yID0gc29ja2V0RmlsZURl
c2NyaXB0b3I7CisgICAgYXR0YWNobWVudC5tX3NpemUgPSAwOwogfQogCiB2b2lkIEF0dGFjaG1l
bnQ6OmRpc3Bvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggOTJmZmZmM2M1YTVmYzc3MTNmYTNmYzU1
NDNlZDVjMzliODMzNzQ4Ni4uNDM5OGQxNDJkNmQyZTQ5NjEzNDJmM2FmODI3NTBmNDA5Zjg2NTRj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5l
Y3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwCkBAIC0yMjUsOCArMjI1LDExIEBAIHZvaWQgQ29ubmVjdGlvbjo6
cmVhZHlSZWFkSGFuZGxlcigpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGF0dGFjaG1lbnRDb3VudDsgKytpKQotICAg
ICAgICAgICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChBdHRhY2htZW50KGZpbGVEZXNjcmlwdG9y
c1tpXSwgYXR0YWNobWVudFNpemVzW2ldKSk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGF0dGFjaG1lbnRDb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgQXR0YWNobWVudCBh
dHRhY2htZW50OworICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQ6OmluaXRpYWxpemVGcm9tTWFw
cGVkTWVtb3J5KGF0dGFjaG1lbnQsIGZpbGVEZXNjcmlwdG9yc1tpXSwgYXR0YWNobWVudFNpemVz
W2ldKTsKKyAgICAgICAgICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoYXR0YWNobWVudCk7Cisg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtZXNzYWdlSW5mby5pc01lc3NhZ2VCb2R5
T09MKCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQobWVzc2FnZUluZm8uYm9keVNpemUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVu
aXguY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNw
cAppbmRleCA3YWNmMTMyYzc1YzA1YmNlMjBjYjgyMTlhNzQyMTA5MDRjNzU4OGY0Li5iZmE0ZDhi
Y2RkYWJiOGNhYTcyZDZlNGViMDc4ZGJmZjI5OTY0OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKQEAgLTY4LDggKzY4LDYgQEAg
Ym9vbCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6aXNOdWxsKCkgY29uc3QKIAogdm9pZCBTaGFyZWRN
ZW1vcnk6OkhhbmRsZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2Rlcikg
Y29uc3QKIHsKLSAgICBBU1NFUlQoIWlzTnVsbCgpKTsKLQogICAgIGVuY29kZXItPmVuY29kZShy
ZWxlYXNlVG9BdHRhY2htZW50KCkpOwogfQogCkBAIC04OCwxMSArODYsMTEgQEAgYm9vbCBTaGFy
ZWRNZW1vcnk6OkhhbmRsZTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgSGFuZGxlJiBoYW4KIAogQ29yZUlQQzo6QXR0YWNobWVudCBTaGFyZWRNZW1vcnk6OkhhbmRs
ZTo6cmVsZWFzZVRvQXR0YWNobWVudCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFpc051bGwoKSk7
Ci0KICAgICBpbnQgdGVtcCA9IG1fZmlsZURlc2NyaXB0b3I7CiAgICAgbV9maWxlRGVzY3JpcHRv
ciA9IC0xOwotICAgIHJldHVybiBDb3JlSVBDOjpBdHRhY2htZW50KHRlbXAsIG1fc2l6ZSk7Cisg
ICAgQ29yZUlQQzo6QXR0YWNobWVudCByZXN1bHQ7CisgICAgQ29yZUlQQzo6QXR0YWNobWVudDo6
aW5pdGlhbGl6ZUZyb21NYXBwZWRNZW1vcnkocmVzdWx0LCB0ZW1wLCBtX3NpemUpOworICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmFkb3B0RnJvbUF0
dGFjaG1lbnQoaW50IGZpbGVEZXNjcmlwdG9yLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MucHJvIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGViY2E0OGFhYjZkZDMyOWU3YTZlZTNiNzlmNTRkZjk0Mjg4
OGMwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MucHJv
CkBAIC0wLDAgKzEsNDcgQEAKK1RFTVBMQVRFID0gYXBwCitUQVJHRVQgPSBRdFdlYlBsdWdpblBy
b2Nlc3MKK0lOU1RBTExTICs9IHRhcmdldAorCitpc0VtcHR5KElOU1RBTExfQklOUykgeworICAg
IHRhcmdldC5wYXRoID0gJCRbUVRfSU5TVEFMTF9CSU5TXQorfSBlbHNlIHsKKyAgICB0YXJnZXQu
cGF0aCA9ICQkSU5TVEFMTF9CSU5TCit9CisKK1NPVVJDRVMgKz0gXAorICAgIHF0L1BsdWdpbk1h
aW5RdC5jcHAKKworaXNFbXB0eShPVVRQVVRfRElSKTogT1VUUFVUX0RJUiA9IC4uLy4uCitpbmNs
dWRlKCQkUFdELy4uL1dlYktpdC5wcmkpCisKK0lOQ0xVREVQQVRIID0gJCRQV0QvLi4vSmF2YVNj
cmlwdENvcmUgXAorICAgICAgICAgICAgICAkJElOQ0xVREVQQVRICisKK0RFU1RESVIgPSAkJE9V
VFBVVF9ESVIvYmluCishQ09ORklHKHN0YW5kYWxvbmVfcGFja2FnZSk6IENPTkZJRyAtPSBhcHBf
YnVuZGxlCisKK1FUICs9IG5ldHdvcmsKK21hY3g6UVQrPXhtbAorCitsaW51eC0qIHsKKyAgICAj
IEZyb20gQ3JlYXRvcidzIHNyYy9ycGF0aC5wcmk6CisgICAgIyBEbyB0aGUgcnBhdGggYnkgaGFu
ZCBzaW5jZSBpdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgT1JJR0lOIGluIFFNQUtFX1JQQVRIRElS
CisgICAgIyB0aGlzIGV4cGFuZHMgdG8gJE9SSUdJTiAoYWZ0ZXIgcW1ha2UgYW5kIG1ha2UpLCBp
dCBkb2VzIE5PVCByZWFkIGEgcW1ha2UgdmFyLgorICAgIFFNQUtFX1JQQVRIRElSID0gXCRcJE9S
SUdJTi8uLi9saWIgJCRRTUFLRV9SUEFUSERJUgorICAgIE1ZX1JQQVRIID0gJCRqb2luKFFNQUtF
X1JQQVRIRElSLCAiOiIpCisKKyAgICBRTUFLRV9MRkxBR1MgKz0gLVdsLC16LG9yaWdpbiBcJy1X
bCwtcnBhdGgsJCR7TVlfUlBBVEh9XCcKKyAgICBRTUFLRV9SUEFUSERJUiA9Cit9IGVsc2Ugewor
ICAgIFFNQUtFX1JQQVRIRElSID0gJCRPVVRQVVRfRElSL2xpYiAkJFFNQUtFX1JQQVRIRElSCit9
CisKK3N5bWJpYW4geworICAgIFRBUkdFVC5VSUQzID0gMHhBMDAwRTU0NAorICAgIFRBUkdFVC5D
QVBBQklMSVRZID0gUmVhZFVzZXJEYXRhIFdyaXRlVXNlckRhdGEgTmV0d29ya1NlcnZpY2VzCit9
CisKK2NvbnRhaW5zKFFUX0NPTkZJRywgb3BlbmdsKSB7CisgICAgUVQgKz0gb3BlbmdsCisgICAg
REVGSU5FUyArPSBRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdMCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAppbmRleCAzMDUwNGEyOTFkNWEyZGZj
M2Q5NDAyMTA3MThhYTM0ZjE1ZjdkZGMyLi4xNTZiOGUxOTE4YmNiYzFlYmJlYWIzMmQyNGI4NjMx
ZmU1NTYyZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
blByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJv
Y2Vzcy5jcHAKQEAgLTI5LDEzICsyOSwyMCBAQAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykK
IAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgog
I2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKLQotI2lmIFBMQVRGT1JN
KE1BQykKLSNpbmNsdWRlICJNYWNoUG9ydC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KKworI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFEZWJ1Zz4KKyNpbmNsdWRl
IDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+
CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTUwLDExICsxNTcsNDQgQEAgdm9pZCBQbHVnaW5Qcm9j
ZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgUmVmUHRyPFdlYlByb2Nlc3ND
b25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShsaXN0
ZW5pbmdQb3J0KTsKICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlv
bi5yZWxlYXNlKCkpOwogCi0gICAgQ29yZUlQQzo6TWFjaFBvcnQgY2xpZW50UG9ydChsaXN0ZW5p
bmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7CisgICAgQ29yZUlQQzo6QXR0YWNobWVu
dCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3Jl
YXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50UG9ydCksIDApOworI2VsaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCisgICAgaW50IHNvY2tldHNbMl07CisgICAgaWYgKHNvY2tldHBhaXIo
QUZfVU5JWCwgU09DS19ER1JBTSwgMCwgc29ja2V0cykgPT0gLTEpIHsKKyAgICAgICAgcURlYnVn
KCkgPDwgIkNyZWF0aW9uIG9mIHNvY2tldCBmYWlsZWQgd2l0aCBlcnJubzoiIDw8IGVycm5vOwor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIC8vIERvbid0IGV4cG9zZSB0aGUgcGx1Z2luIHByb2Nlc3Mgc29ja2V0IHRvIHRoZSB3ZWIg
cHJvY2Vzcy4KKyAgICB3aGlsZSAoZmNudGwoc29ja2V0c1sxXSwgRl9TRVRGRCwgRkRfQ0xPRVhF
QykgID09IC0xKSB7CisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgeworICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1sw
XSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQorICAgICAgICAgICAgd2hpbGUgKGNsb3Nl
KHNvY2tldHNbMV0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIERvbid0IGV4cG9zZSB0aGUgd2ViIHBy
b2Nlc3Mgc29ja2V0IHRvIHBvc3NpYmxlIGZ1dHVyZSB3ZWIgcHJvY2Vzc2VzLgorICAgIHdoaWxl
IChmY250bChzb2NrZXRzWzBdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSA9PSAtMSkgeworICAgICAg
ICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMF0pID09IC0xICYmIGVycm5vID09
IEVJTlRSKSB7IH0KKyAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzFdKSA9PSAtMSAm
JiBlcnJubyA9PSBFSU5UUikgeyB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHNvY2tldHNbMV0pOworICAgIG1fd2ViUHJvY2Vzc0Nv
bm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisKKyAgICBDb3JlSVBDOjpB
dHRhY2htZW50IGNsaWVudFNvY2tldDsKKyAgICBDb3JlSVBDOjpBdHRhY2htZW50Ojppbml0aWFs
aXplRnJvbVNvY2tldChjbGllbnRTb2NrZXQsIHNvY2tldHNbMF0pOworICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbihjbGllbnRTb2NrZXQpLCAwKTsKICNlbHNlCi0gICAgLy8gRklYTUU6IEltcGxl
bWVudC4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KDAsICJNaXNzaW5nIGltcGxlbWVudGF0b24gZm9yIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uKCkiKTsKICNlbmRpZgogCiAgICAgaWYgKE5ldHNjYXBlUGx1Z2luTW9k
dWxlKiBtb2R1bGUgPSBuZXRzY2FwZVBsdWdpbk1vZHVsZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpbkNvbnRyb2xsZXJQcm94eVF0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luQ29udHJvbGxlclByb3h5UXQu
Y3BwCmluZGV4IDQyZGYxYjdjYjEzNmNiMmU5ODAwOGFjYTM3YTA0OWM1ODM1M2Y3MTUuLjZjNTky
NDI1Y2I5NDdmY2M0ZDEyOGQ2ZDdkNjAxMjE5ODk4YzVjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luQ29udHJvbGxlclByb3h5UXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luQ29udHJvbGxlclByb3h5UXQu
Y3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9y
bURlc3Ryb3koKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGx1Z2luQ29udHJv
bGxlclByb3h5OjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFJlY3QmIGZyYW1l
UmVjdCwgY29uc3QgSW50UmVjdCYpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZv
cm1HZW9tZXRyeURpZENoYW5nZSgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5R
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWlu
UXQuY3BwCmluZGV4IDg4ZmMzNTljNWFlMGNkYTVkOWEyZDNhOGQ4ZWZmMDFlYTc1ZTc1NTYuLjdi
NWU3MWM5YzA1MDk4Yjc3YjBhNDM0NDFlYjBiOTRjNGJmZjg5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgTm9raWEgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIFVuaXZlcnNpdHkg
b2YgU3plZ2VkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNCw0MSArMjUsNTUgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW4uaCIKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKIAotI2luY2x1ZGUgIkNvbW1hbmRMaW5lLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01h
aW4uaCIKKwogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKICNpbmNsdWRlICJSdW5Mb29wLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgInF3ZWJraXRn
bG9iYWwuaCIKKyNpbmNsdWRlIDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UURlYnVnPgorI2lu
Y2x1ZGUgPFFTdHJpbmdMaXN0PgogI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgogCi0jZGVmaW5lIFNIT1dfQ1JBU0hfUkVQT1JURVIgMQorI2lmIFVTRShNRUVH
T1RPVUNIKQorI2luY2x1ZGUgPE1Db21wb25lbnREYXRhPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1pbnQgUGx1Z2luUHJvY2Vzc01haW4oY29uc3QgQ29tbWFuZExpbmUmIGNvbW1h
bmRMaW5lKQorUVdFQktJVF9FWFBPUlQgaW50IFBsdWdpblByb2Nlc3NNYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikKIHsKLSAgICBTdHJpbmcgc2VydmljZU5hbWUgPSBjb21tYW5kTGluZVsic2Vy
dmljZW5hbWUiXTsKLSAgICBpZiAoc2VydmljZU5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gRVhJVF9GQUlMVVJFOwotCi0jaWYgIVNIT1dfQ1JBU0hfUkVQT1JURVIKLSAgICAvLyBJbnN0
YWxscyBzaWduYWwgaGFuZGxlcnMgdGhhdCBleGl0IG9uIGEgY3Jhc2ggc28gdGhhdCBDcmFzaFJl
cG9ydGVyIGRvZXMgbm90IHNob3cgdXAuCi0gICAgc2lnbmFsKFNJR0lMTCwgX2V4aXQpOwotICAg
IHNpZ25hbChTSUdGUEUsIF9leGl0KTsKLSAgICBzaWduYWwoU0lHQlVTLCBfZXhpdCk7Ci0gICAg
c2lnbmFsKFNJR1NFR1YsIF9leGl0KTsKKyAgICBRQXBwbGljYXRpb24gYXBwKGFyZ2MsIGFyZ3Yp
OworCisjaWYgVVNFKE1FRUdPVE9VQ0gpCisgICAgbmV3IE1Db21wb25lbnREYXRhKGFyZ2MsIGFy
Z3YpOwogI2VuZGlmCiAKKyAgICBzcmFuZG9tKHRpbWUoMCkpOworCiAgICAgSlNDOjppbml0aWFs
aXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFJ1
bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCisgICAgLy8gQ3JlYXRlIHRoZSBjb25u
ZWN0aW9uLgorICAgIGlmIChhcHAuYXJndW1lbnRzKCkuc2l6ZSgpIDw9IDEpIHsKKyAgICAgICAg
cURlYnVnKCkgPDwgIkVycm9yOiB3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzLiI7CisgICAgICAg
IHJldHVybiAxOworICAgIH0KKworICAgIGJvb2wgd2FzTnVtYmVyID0gZmFsc2U7CisgICAgaW50
IGlkZW50aWZpZXIgPSBhcHAuYXJndW1lbnRzKCkuYXQoMSkudG9JbnQoJndhc051bWJlciwgMTAp
OworICAgIGlmICghd2FzTnVtYmVyKSB7CisgICAgICAgIHFEZWJ1ZygpIDw8ICJFcnJvcjogY29u
bmVjdGlvbiBpZGVudGlmaWVyIHdyb25nLiI7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKwor
ICAgIFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShpZGVudGlmaWVy
LCBSdW5Mb29wOjptYWluKCkpOworCiAgICAgUnVuTG9vcDo6cnVuKCk7CiAKICAgICByZXR1cm4g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9j
ZXNzTGF1bmNoZXJRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQv
UHJvY2Vzc0xhdW5jaGVyUXQuY3BwCmluZGV4IDVmM2M5OWY4ZTgwNTU1MGYyZjExYmFiOTZiNTQ2
YzIxNmMyZDBhMjMuLjIzYWFlMWY3MmRlNDI1MjJlOTY0N2U5NzZkMmMxNmRkMmVkMjM1NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1
bmNoZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1By
b2Nlc3NMYXVuY2hlclF0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKICNpbmNsdWRlIDxRQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UURlYnVnPgorI2luY2x1
ZGUgPFFEaXI+CiAjaW5jbHVkZSA8UUZpbGU+CiAjaW5jbHVkZSA8UUxvY2FsU2VydmVyPgogI2lu
Y2x1ZGUgPFFNZXRhVHlwZT4KQEAgLTk3LDExICs5OCwxMyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hl
cjo6bGF1bmNoUHJvY2VzcygpCiB7CiAgICAgUVN0cmluZyBhcHBsaWNhdGlvblBhdGggPSBRTGF0
aW4xU3RyaW5nKCIlMSAlMiIpOwogCi0gICAgaWYgKFFGaWxlOjpleGlzdHMoUUNvcmVBcHBsaWNh
dGlvbjo6YXBwbGljYXRpb25EaXJQYXRoKCkgKyBRTGF0aW4xU3RyaW5nKCIvUXRXZWJQcm9jZXNz
IikpKSB7Ci0gICAgICAgIGFwcGxpY2F0aW9uUGF0aCA9IGFwcGxpY2F0aW9uUGF0aC5hcmcoUUNv
cmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25EaXJQYXRoKCkgKyBRTGF0aW4xU3RyaW5nKCIvUXRX
ZWJQcm9jZXNzIikpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGFwcGxpY2F0aW9uUGF0aCA9IGFw
cGxpY2F0aW9uUGF0aC5hcmcoUUxhdGluMVN0cmluZygiUXRXZWJQcm9jZXNzIikpOwotICAgIH0K
KyAgICBRTGF0aW4xU3RyaW5nIGV4ZWN1dGFibGVOYW1lKG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNz
VHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6OldlYlByb2Nlc3MgPworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlF0V2ViUHJvY2VzcyIgOiAiUXRXZWJQbHVnaW5Qcm9jZXNzIik7Cisg
ICAgUVN0cmluZyBleHBlY3RlZEV4ZWN1dGFibGVQYXRoID0gUUNvcmVBcHBsaWNhdGlvbjo6YXBw
bGljYXRpb25EaXJQYXRoKCkgKyBRRGlyOjpzZXBhcmF0b3IoKSArIGV4ZWN1dGFibGVOYW1lOwor
ICAgIGlmIChRRmlsZTo6ZXhpc3RzKGV4cGVjdGVkRXhlY3V0YWJsZVBhdGgpKQorICAgICAgICBh
cHBsaWNhdGlvblBhdGggPSBhcHBsaWNhdGlvblBhdGguYXJnKGV4cGVjdGVkRXhlY3V0YWJsZVBh
dGgpOworICAgIGVsc2UKKyAgICAgICAgYXBwbGljYXRpb25QYXRoID0gYXBwbGljYXRpb25QYXRo
LmFyZyhleGVjdXRhYmxlTmFtZSk7CiAKICAgICBpbnQgc29ja2V0c1syXTsKICAgICBpZiAoc29j
a2V0cGFpcihBRl9VTklYLCBTT0NLX0RHUkFNLCAwLCBzb2NrZXRzKSA9PSAtMSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5jcHAKaW5kZXggNTYxYzAyYjRhMTIyMzJhOTAzM2ZlYTA0OTlhNTExZjhjYzkyNDYzYS4uNTlk
YWRiYjIxZTMwYWI0MzMyNzczOGJkODYzNzUwYWMwNWVlYjliYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5j
bHVkZSAiV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCiAjaWYgUExBVEZP
Uk0oTUFDKQogI2luY2x1ZGUgIk1hY2hQb3J0LmgiCkBAIC0xMzIsMTAgKzEzMywxMSBAQCB2b2lk
IFBsdWdpblByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNo
KCkKICAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlv
blJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIHJlcGx5
LT5zZW5kKENvcmVJUEM6Ok1hY2hQb3J0KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7Cisg
ICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9N
T1ZFX1NFTkQpKTsKKyNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQorICAgICAgICByZXBs
eS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KCkpOwogI2Vsc2UKLSAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudC4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIG5vdElt
cGxlbWVudGVkKCk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTIxNCwxNyArMjE2LDIxIEBAIHZvaWQg
UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwg
Q29yZUlQQzo6Q29ubmVjdGlvCiAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0g
MDsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKLXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpNYWNoUG9ydCYgbWFjaFBv
cnQpCit2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIpCiB7CiAg
ICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCiAgICAg
Ly8gR3JhYiB0aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgogICAgIFJlZlB0cjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgp
OwogCi0gICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6TWFjaFBvcnQobWFjaFBvcnQucG9ydCgpLCBN
QUNIX01TR19UWVBFX01PVkVfU0VORCkpOwotfQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXBs
eS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwg
TUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKKyNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRT
KQorICAgIHJlcGx5LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyNlbHNlCisgICAgbm90
SW1wbGVtZW50ZWQoKTsKICNlbmRpZgorfQogCiB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlk
R2V0U2l0ZXNXaXRoRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NQcm94eS5oCmluZGV4IDU5YmZkOTA0NmZlOTAwN2E0YjczNzNkNmFlZTg3
MTRiMjBmMmVjYWYuLmE2OGQ5ZWI0ZDc4NTMzNjRlYzQwNmVhOWNlNzc3NDA0NTc3YzM4YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NQcm94eS5oCkBAIC05MSw5ICs5MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZShDb3Jl
SVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqKTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBkaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpNYWNoUG9ydCYpOwotI2VuZGlmCisgICAgdm9pZCBk
aWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50Jik7
CiAgICAgdm9pZCBkaWRHZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRl
cywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRDbGVhclNpdGVEYXRhKHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggN2Nh
YWMxMTQ0NmZkOWI4NzA4MjVmYTIwZmM4NGM1ZmQ4ZTc1ODRlOC4uN2I1OWFlZmVjZmE1OWFmMTk2
NWY4MjAyNDhhYTM2NDc3MDJiZTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMjMsOSArMjMsNyBAQAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAogbWVzc2FnZXMg
LT4gUGx1Z2luUHJvY2Vzc1Byb3h5IHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgRGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oQ29yZUlQQzo6TWFjaFBvcnQgY29ubmVjdGlvbklkZW50aWZp
ZXIpCi0jZW5kaWYKKyAgICBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihDb3JlSVBDOjpB
dHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQogCiAgICAgRGlkR2V0U2l0ZXNXaXRoRGF0
YShWZWN0b3I8V1RGOjpTdHJpbmc+IHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIERp
ZENsZWFyU2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU4MGJkZDBm
YzEwNDg2NzczYTE4MDcyMDdjNzgzODlhMmQ3ODUwMDcuLmJiNWRmNzI4OTVhMGRlMWYzZTk3ODU5
ZTFlYzk0ZjY4NGVhZmE5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjgsNyArMjgsNyBAQCBtZXNzYWdlcyAt
PiBXZWJQcm9jZXNzUHJveHkgewogICAgIFNob3VsZFRlcm1pbmF0ZSgpIC0+IChib29sIHNob3Vs
ZFRlcm1pbmF0ZSkKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICBHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbihXVEY6OlN0cmluZyBwbHVnaW5QYXRoKSAtPiAoQ29yZUlQQzo6TWFj
aFBvcnQgY29ubmVjdGlvbkhhbmRsZSkgRGVsYXllZAorICAgIEdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKFdURjo6U3RyaW5nIHBsdWdpblBhdGgpIC0+IChDb3JlSVBDOjpBdHRhY2htZW50IGNv
bm5lY3Rpb25IYW5kbGUpIERlbGF5ZWQKICAgICBQbHVnaW5TeW5jTWVzc2FnZVNlbmRUaW1lZE91
dChXVEY6OlN0cmluZyBwbHVnaW5QYXRoKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuY3BwCmluZGV4IGQyZjM2ODY1MjBhMDllMzg2YmJiZTY2MWI1MGI0Njc3
MTk2ZmY0ZDMuLmZlNjc3YTZiMmI5YTU1MzMyOGJlNGFiODljY2UzMGE2ZWM2Mjg4OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBAIC02MywyMSArNjMsMjAgQEAg
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICAgICAgICAgIHJldHVybiBtX3BsdWdpblByb2Nl
c3NDb25uZWN0aW9uc1tpXS5nZXQoKTsKICAgICB9CiAKLSAgICBDb3JlSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyOwotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBDb3JlSVBDOjpNYWNoUG9ydCBjb25uZWN0aW9uTWFjaFBvcnQ7Ci0KLSAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2luUGF0aCksIE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpSZXBseShjb25u
ZWN0aW9uTWFjaFBvcnQpLCAwKSkKKyAgICBDb3JlSVBDOjpBdHRhY2htZW50IGVuY29kZWRDb25u
ZWN0aW9uSWRlbnRpZmllcjsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24ocGx1Z2luUGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIpLCAw
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBjb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5l
Y3Rpb25NYWNoUG9ydC5wb3J0KCk7Ci0jZWxzZQotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0g
ICAgY29ubmVjdGlvbklkZW50aWZpZXIgPSAwOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
I2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIu
cG9ydCgpOwogICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiAw
OworI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgQ29yZUlQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciA9IGVuY29kZWRDb25uZWN0aW9uSWRl
bnRpZmllci5maWxlRGVzY3JpcHRvcigpOworICAgIGlmIChjb25uZWN0aW9uSWRlbnRpZmllciA9
PSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisjZW5kaWYKIAogICAgIFJlZlB0cjxQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbj4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblBhdGgsIGNvbm5lY3Rpb25JZGVudGlmaWVyKTsK
ICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvcXQvUGx1Z2luTWFpblF0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JlNGUyNmVl
Y2JmZmJmOWJhNTdiMGNiZGVkYTUwMjUyYTQzZTM1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL3F0L1BsdWdpbk1haW5RdC5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlIDxjb25maWcuaD4KKyNpZiBFTkFCTEUoUExVR0lOX1BST0NF
U1MpCisKKyNpbmNsdWRlIDxRdEdsb2JhbD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitRX0RFQ0xf
SU1QT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpOworfQor
CisvLyBUaGUgZnJhbWV3b3JrIGVudHJ5IHBvaW50LgorLy8gV2UgY2FsbCBvdXIgcGxhdGZvcm0g
c3BlY2lmaWMgZW50cnkgcG9pbnQgZGlyZWN0bHkgcmF0aGVyIHRoYW4gUGx1Z2luUHJvY2Vzc01h
aW4gYmVjYXVzZSBpdCBtYWtlcworLy8gbGl0dGxlIHNlbnNlIHRvIHJlaW1wbGVtZW50IHRoZSBo
YW5kbGluZyBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGZyb20gUUFwcGxpY2F0aW9uLgoraW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBXZWJLaXQ6OlBsdWdp
blByb2Nlc3NNYWluKGFyZ2MsIGFyZ3YpOworfQorCisjZWxzZQorLy8gRHVtbXkgbWFpbiBub3Qg
dG8gYnJha2UgbGlua2FnZSB3aGVuIFBMVUdJTl9QUk9DRVNTIGlzIGRpc2FibGVkLgoraW50IG1h
aW4oaW50LCBjaGFyKiopCit7Cit9CisjZW5kaWYK
</data>
<flag name="review"
          id="84111"
          type_id="1"
          status="-"
          setter="menard"
    />
          </attachment>
      

    </bug>

</bugzilla>