<?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>44062</bug_id>
          
          <creation_ts>2010-08-16 09:44:17 -0700</creation_ts>
          <short_desc>[Qt] Use LAZY_NATIVE_CURSOR</short_desc>
          <delta_ts>2010-08-19 07:38:43 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>265147</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-08-16 09:44:17 -0700</bug_when>
    <thetext>Since we have a WebKit2 port, we need to apply this implementation policy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265171</commentid>
    <comment_count>1</comment_count>
      <attachid>64503</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-08-16 11:03:32 -0700</bug_when>
    <thetext>Created attachment 64503
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265238</commentid>
    <comment_count>2</comment_count>
      <attachid>64503</attachid>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-08-16 14:21:18 -0700</bug_when>
    <thetext>Comment on attachment 64503
proposed patch

WebCore/ChangeLog:16
 +          (WebCore::Cursor::Cursor): Remove the ifdef. Also removed for EFL because it seems like totally useless since the EFL
Can you wrap these lines? It&apos;s just too long.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265419</commentid>
    <comment_count>3</comment_count>
      <attachid>64565</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-08-17 01:16:23 -0700</bug_when>
    <thetext>Created attachment 64565
proposed patch

Changelog lines have been shortened somewhat :)
Added copyright for CursorQt.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265430</commentid>
    <comment_count>4</comment_count>
      <attachid>64565</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-08-17 01:38:05 -0700</bug_when>
    <thetext>Comment on attachment 64565
proposed patch

WebCore/ChangeLog:15
 +          * platform/Cursor.h: Typedef PlatformCursor to be a QCursor* to be able create it dinamically.
dynamically

WebCore/ChangeLog:17
 +          useless since the EFL PlatformCursor is const char* so there is no problem with initalizing it to zero.
dont make a EFL change as part of this patch please

WebCore/platform/qt/CursorQt.cpp:73
 +  #endif
I guess you need to return 0 after this

WebCore/platform/qt/CursorQt.cpp:83
 +          m_platformCursor = new QCursor(Qt::ArrowCursor);
wouldn&apos;t a lookup table be better?

WebCore/platform/qt/CursorQt.cpp:86
 +          m_platformCursor = new QCursor(Qt::CrossCursor);
Where are these being deleted?


Does the Qt QWidget::setCursor stuff still work after this change? Please test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265437</commentid>
    <comment_count>5</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-08-17 02:00:40 -0700</bug_when>
    <thetext>&gt; 
&gt; WebCore/platform/qt/CursorQt.cpp:73
&gt;  +  #endif
&gt; I guess you need to return 0 after this

Good catch.

&gt; 
&gt; WebCore/platform/qt/CursorQt.cpp:83
&gt;  +          m_platformCursor = new QCursor(Qt::ArrowCursor);
&gt; wouldn&apos;t a lookup table be better?

There is not other way of mapping from cursor types to QCursor objects than hard coding it so the best lookup table is a switch :)

&gt; 
&gt; WebCore/platform/qt/CursorQt.cpp:86
&gt;  +          m_platformCursor = new QCursor(Qt::CrossCursor);
&gt; Where are these being deleted?

Right, it should be deleted in the destructor.

&gt; 
&gt; 
&gt; Does the Qt QWidget::setCursor stuff still work after this change? Please test.

I did not see any regressions however I just did a quick browsing with the change. I would use the bots for testing. I will upload a new patch that fixes the problems you find (with the EFL and the spelling thing).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265438</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-08-17 02:02:39 -0700</bug_when>
    <thetext>Antonio, you know how this is supposed to work and how to test it. can you help?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265442</commentid>
    <comment_count>7</comment_count>
      <attachid>64566</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-08-17 02:32:47 -0700</bug_when>
    <thetext>Created attachment 64566
patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265445</commentid>
    <comment_count>8</comment_count>
      <attachid>64566</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-08-17 02:43:46 -0700</bug_when>
    <thetext>Comment on attachment 64566
patch v3

Augh, this could leak QCursors. Need to be fixed again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265473</commentid>
    <comment_count>9</comment_count>
      <attachid>64574</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-08-17 04:52:57 -0700</bug_when>
    <thetext>Created attachment 64574
proposed patch

Fixed ownership of m_platformCursor. Create new object in the copy constructor and op= instead of introducing an explicit refcounted wrapper for QCursor since sharing is handled internally in QCursor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265932</commentid>
    <comment_count>10</comment_count>
      <attachid>64574</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-08-17 21:33:58 -0700</bug_when>
    <thetext>Comment on attachment 64574
proposed patch

Balazs, the change is generally looking great. However, you are basically doing 3 things at once here, which more than what the bug description entitles:

1) you are moving Qt a lazy cursor creation approach (the WebCore part of the patch), which is nice!
2) you are replacing the code path for calling QWebPageClient::setCursor directly from WidgetQt in favor to cycle its call through hostWindow-&gt;chromeClient-&gt;QWegPageClient, which is also by itself a nice change!
3) you are making webkit2 to benefit from 1).

In my opinion, each of the above items should happen on its own step, so r-

(1) is indeed the bigger part, and having each of them landing separately would make tracking for possible regression easier, and also match to the general advertisement of making patch as small as possible.

More comment inlined below.

&gt; From b6ff5748815e394e2fcd6156299d638e8878d9f3 Mon Sep 17 00:00:00 2001
&gt; From: Balazs Kelemen &lt;kb@inf.u-szeged.hu&gt;
&gt; Date: Tue, 17 Aug 2010 13:45:03 +0200
&gt; Subject: [PATCH] [Qt] Use LAZY_NATIVE_CURSOR
&gt; 
&gt; ---
&gt;  WebCore/ChangeLog                            |   28 ++
&gt;  WebCore/platform/Cursor.h                    |    7 +-
&gt;  WebCore/platform/qt/CursorQt.cpp             |  444 ++++++++------------------
&gt;  WebCore/platform/qt/QWebPageClient.h         |   11 +-
&gt;  WebCore/platform/qt/WidgetQt.cpp             |    8 +-
&gt;  WebKit/qt/ChangeLog                          |   12 +
&gt;  WebKit/qt/WebCoreSupport/ChromeClientQt.cpp  |    7 +-
&gt;  WebKit2/ChangeLog                            |   19 ++
&gt;  WebKit2/UIProcess/API/qt/qgraphicswkview.cpp |    8 +
&gt;  WebKit2/UIProcess/API/qt/qgraphicswkview.h   |    6 +
&gt;  WebKit2/UIProcess/API/qt/qwkpage.cpp         |    7 +
&gt;  WebKit2/UIProcess/API/qt/qwkpage.h           |    2 +
&gt;  WebKit2/UIProcess/API/qt/qwkpage_p.h         |    2 +-
&gt;  13 files changed, 243 insertions(+), 318 deletions(-)
&gt; 
&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; index ef8a91b..a8bc288 100644
&gt; --- a/WebCore/ChangeLog
&gt; +++ b/WebCore/ChangeLog
&gt; @@ -1,3 +1,31 @@
&gt; +2010-08-16  Balazs Kelemen  &lt;kb@inf.u-szeged.hu&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        [Qt] Use LAZY_NATIVE_CURSOR
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=44062
&gt; +
&gt; +        No functional change so new tests.
&gt; +
&gt; +        Change Cursor behaviour to match the LAZY_NATIVE_CURSOR policy.

This is *the* change the bug title implies.

&gt; +        Propagate the setCursor callback to the PageClient via the HostWindow instead of preassuming
&gt; +        the concrete type of the ChromeClient (what was generally wrong and actually incompatible with WebKit2).

This should be a follow up.

&gt; +        (WebCore::Widget::setCursor): Propagete the callback forward through HostWindow.
&gt; +
&gt;  2010-08-17  Philippe Normand  &lt;pnormand@igalia.com&gt;

Typo: propagete


&gt;  
&gt; -const Cursor&amp; grabbingCursor()
&gt; +void Cursor::ensurePlatformCursor() const
&gt;  {

who calls this method?

&gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/verticalTextCursor.png&quot;)), 7, 7);
&gt; +        break;
&gt; +    case Cell:
&gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/cellCursor.png&quot;)), 7, 7);
&gt; +        break;
&gt; +    case ContextMenu:
&gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/contextMenuCursor.png&quot;)), 3, 2);
&gt; +        break;
&gt; +    case Alias:
&gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/aliasCursor.png&quot;)), 11, 3);
&gt; +        break;
&gt; +    case Progress:
&gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/progressCursor.png&quot;)), 3, 2);
&gt; +        break;
&gt; +    case Copy:
&gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/copyCursor.png&quot;)), 3, 2);
&gt; +        break;
&gt; +    case ZoomIn:
&gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/zoomInCursor.png&quot;)), 7, 7);
&gt; +        break;
&gt; +    case ZoomOut:
&gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/zoomOutCursor.png&quot;)), 7, 7);
&gt; +        break;

where these hardcoded hotspots come from?

7 , 7
11, 3
3 , 2
...

&gt; diff --git a/WebCore/platform/qt/WidgetQt.cpp b/WebCore/platform/qt/WidgetQt.cpp
&gt; index 0903b6e..e64d655 100644
&gt; --- a/WebCore/platform/qt/WidgetQt.cpp
&gt; +++ b/WebCore/platform/qt/WidgetQt.cpp
&gt; @@ -78,10 +78,10 @@ void Widget::setFocus(bool focused)
&gt;  void Widget::setCursor(const Cursor&amp; cursor)
&gt;  {
&gt;  #ifndef QT_NO_CURSOR
&gt; -    QWebPageClient* pageClient = root()-&gt;hostWindow()-&gt;platformPageClient();
&gt; -
&gt; -    if (pageClient)
&gt; -        pageClient-&gt;setCursor(cursor.impl());
&gt; +    ScrollView* view = root();
&gt; +    if (!view)
&gt; +        return;
&gt; +    view-&gt;hostWindow()-&gt;setCursor(cursor);
&gt;  #endif
&gt;  }

Do you have a case where root() is null here? It should not be null at all, since was not being null-checked before. I&apos;d rather add a assert(root()).

 
&gt; diff --git a/WebKit/qt/ChangeLog b/WebKit/qt/ChangeLog
&gt; index 2c964d3..f59bdc6 100644
&gt; --- a/WebKit/qt/ChangeLog
&gt; +++ b/WebKit/qt/ChangeLog
&gt; @@ -1,3 +1,15 @@
&gt; +2010-08-16  Balazs Kelemen  &lt;kb@inf.u-szeged.hu&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        [Qt] Use LAZY_NATIVE_CURSOR
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=44062
&gt; +
&gt; +        * WebCoreSupport/ChromeClientQt.cpp:
&gt; +        (WebCore::ChromeClientQt::setCursor): Implemented. Propagete the callback forward to the
&gt; +        platform specific PageClient (QWebPageCLient).

typo: propagete


&gt;  #include &lt;QPainter&gt;
&gt; @@ -64,6 +65,8 @@ QGraphicsWKView::QGraphicsWKView(WKPageNamespaceRef pageNamespaceRef, BackingSto
&gt;      connect(d-&gt;page, SIGNAL(loadProgress(int)), this, SIGNAL(loadProgress(int)));
&gt;      connect(d-&gt;page, SIGNAL(initialLayoutCompleted()), this, SIGNAL(initialLayoutCompleted()));
&gt;      connect(d-&gt;page, SIGNAL(urlChanged(const QUrl&amp;)), this, SIGNAL(urlChanged(const QUrl&amp;)));
&gt; +
&gt; +    connect(d-&gt;page, SIGNAL(cursorChanged(const QCursor&amp;)), this, SLOT(updateCursor(const QCursor&amp;)));
&gt;  }

drop the extra new line.

Nice work!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265975</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-08-18 00:35:56 -0700</bug_when>
    <thetext>We need to make sure this works with the fallback cursors. I can set setCursor with Qt that that new cursor should be shown always until I unset it, there the latest webcore cursor should be shown instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266070</commentid>
    <comment_count>12</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-08-18 06:11:42 -0700</bug_when>
    <thetext>
&gt; 
&gt; In my opinion, each of the above items should happen on its own step, so r-

Roger that, I will separate the 3 step.

&gt; 
&gt; &gt; +        (WebCore::Widget::setCursor): Propagete the callback forward through HostWindow.
&gt; &gt; +
&gt; &gt;  2010-08-17  Philippe Normand  &lt;pnormand@igalia.com&gt;
&gt; 
&gt; Typo: propagete

That is what I wrote but the correct spelling is propagate :)

&gt; 
&gt; 
&gt; &gt;  
&gt; &gt; -const Cursor&amp; grabbingCursor()
&gt; &gt; +void Cursor::ensurePlatformCursor() const
&gt; &gt;  {
&gt; 
&gt; who calls this method?

Cursor::platformCursor. It is in the common part of the Cursor class (Cursor.cpp)

&gt; 
&gt; &gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/verticalTextCursor.png&quot;)), 7, 7);
&gt; &gt; +        break;
&gt; &gt; +    case Cell:
&gt; &gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/cellCursor.png&quot;)), 7, 7);
&gt; &gt; +        break;
&gt; &gt; +    case ContextMenu:
&gt; &gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/contextMenuCursor.png&quot;)), 3, 2);
&gt; &gt; +        break;
&gt; &gt; +    case Alias:
&gt; &gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/aliasCursor.png&quot;)), 11, 3);
&gt; &gt; +        break;
&gt; &gt; +    case Progress:
&gt; &gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/progressCursor.png&quot;)), 3, 2);
&gt; &gt; +        break;
&gt; &gt; +    case Copy:
&gt; &gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/copyCursor.png&quot;)), 3, 2);
&gt; &gt; +        break;
&gt; &gt; +    case ZoomIn:
&gt; &gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/zoomInCursor.png&quot;)), 7, 7);
&gt; &gt; +        break;
&gt; &gt; +    case ZoomOut:
&gt; &gt; +        m_platformCursor = new QCursor(QPixmap(QLatin1String(&quot;:/webkit/resources/zoomOutCursor.png&quot;)), 7, 7);
&gt; &gt; +        break;
&gt; 
&gt; where these hardcoded hotspots come from?

From the original CursorQt.cpp, in the Cursors class. I just copy-pasted the paths.

&gt; 
&gt; 7 , 7
&gt; 11, 3
&gt; 3 , 2
&gt; ...
&gt; 
&gt; &gt; diff --git a/WebCore/platform/qt/WidgetQt.cpp b/WebCore/platform/qt/WidgetQt.cpp
&gt; &gt; index 0903b6e..e64d655 100644
&gt; &gt; --- a/WebCore/platform/qt/WidgetQt.cpp
&gt; &gt; +++ b/WebCore/platform/qt/WidgetQt.cpp
&gt; &gt; @@ -78,10 +78,10 @@ void Widget::setFocus(bool focused)
&gt; &gt;  void Widget::setCursor(const Cursor&amp; cursor)
&gt; &gt;  {
&gt; &gt;  #ifndef QT_NO_CURSOR
&gt; &gt; -    QWebPageClient* pageClient = root()-&gt;hostWindow()-&gt;platformPageClient();
&gt; &gt; -
&gt; &gt; -    if (pageClient)
&gt; &gt; -        pageClient-&gt;setCursor(cursor.impl());
&gt; &gt; +    ScrollView* view = root();
&gt; &gt; +    if (!view)
&gt; &gt; +        return;
&gt; &gt; +    view-&gt;hostWindow()-&gt;setCursor(cursor);
&gt; &gt;  #endif
&gt; &gt;  }
&gt; 
&gt; Do you have a case where root() is null here? It should not be null at all, since was not being null-checked before. I&apos;d rather add a assert(root()).
&gt; 

I followed the mac and win Widget implementations with this null check here. root() returns with zero if the root element in the widget tree is not a FrameView so I think this null check is necessary.

Follow up patches will be coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266093</commentid>
    <comment_count>13</comment_count>
      <attachid>64705</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-08-18 07:19:32 -0700</bug_when>
    <thetext>Created attachment 64705
webcore part</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266100</commentid>
    <comment_count>14</comment_count>
      <attachid>64705</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-08-18 07:41:13 -0700</bug_when>
    <thetext>Comment on attachment 64705
webcore part

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266103</commentid>
    <comment_count>15</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-08-18 07:42:46 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; We need to make sure this works with the fallback cursors. I can set setCursor with Qt that that new cursor should be shown always until I unset it, there the latest webcore cursor should be shown instead.

It would be great to get that finally fixed! Maybe with lock/unlock methods(?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266108</commentid>
    <comment_count>16</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-08-18 08:05:01 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #11)
&gt; &gt; We need to make sure this works with the fallback cursors. I can set setCursor with Qt that that new cursor should be shown always until I unset it, there the latest webcore cursor should be shown instead.
&gt; 
&gt; It would be great to get that finally fixed! Maybe with lock/unlock methods(?)

I do not think that the second part of my changes would change any behavior. I do not understand how the current code achieves the behavior that Kenneth described since the PageClients (PageClientQWidget and PageClientQGraphicsWidget) are just calling setCursor on the widget. Could you give me some pointers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266368</commentid>
    <comment_count>17</comment_count>
      <attachid>64705</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-18 14:21:10 -0700</bug_when>
    <thetext>Comment on attachment 64705
webcore part

Clearing flags on attachment: 64705

Committed r65631: &lt;http://trac.webkit.org/changeset/65631&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266369</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-18 14:21:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266406</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-18 15:00:29 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/65631 might have broken SnowLeopard Intel Release (Tests)
The following changes are on the blame list:
http://trac.webkit.org/changeset/65630
http://trac.webkit.org/changeset/65631</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266726</commentid>
    <comment_count>20</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-08-19 07:38:43 -0700</bug_when>
    <thetext>The story continues in bug 44250.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64503</attachid>
            <date>2010-08-16 11:03:32 -0700</date>
            <delta_ts>2010-08-17 01:16:23 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>land_lazy_cursor.diff</filename>
            <type>text/plain</type>
            <size>22029</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGMxNjEwNC4uMjFhZWUwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wOC0xNiAgQmFsYXpzIEtlbGVt
ZW4gIDxrYkBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1F0XSBVc2UgTEFaWV9OQVRJVkVfQ1VSU09SCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MDYyCisKKyAgICAgICAg
Tm8gZnVuY3Rpb25hbCBjaGFuZ2Ugc28gbmV3IHRlc3RzLgorCisgICAgICAgIENoYW5nZSBDdXJz
b3IgYmVoYXZpb3VyIHRvIG1hdGNoIHRoZSBMQVpZX05BVElWRV9DVVJTT1IgcG9saWN5LgorICAg
ICAgICBQcm9wYWdhdGUgdGhlIHNldEN1cnNvciBjYWxsYmFjayB0byB0aGUgUGFnZUNsaWVudCB2
aWEgdGhlIEhvc3RXaW5kb3cgaW5zdGVhZCBvZiBwcmVhc3N1bWluZworICAgICAgICB0aGUgY29u
Y3JldGUgdHlwZSBvZiB0aGUgQ2hyb21lQ2xpZW50ICh3aGF0IHdhcyBnZW5lcmFsbHkgd3Jvbmcg
YW5kIGFjdHVhbGx5IGluY29tcGF0aWJsZSB3aXRoIFdlYktpdDIpLgorCisgICAgICAgICogcGxh
dGZvcm0vQ3Vyc29yLmg6IFR5cGVkZWYgUGxhdGZvcm1DdXJzb3IgdG8gYmUgYSBRQ3Vyc29yKiB0
byBiZSBhYmxlIGNyZWF0ZSBpdCBkaW5hbWljYWxseS4KKyAgICAgICAgKFdlYkNvcmU6OkN1cnNv
cjo6Q3Vyc29yKTogUmVtb3ZlIHRoZSBpZmRlZi4gQWxzbyByZW1vdmVkIGZvciBFRkwgYmVjYXVz
ZSBpdCBzZWVtcyBsaWtlIHRvdGFsbHkgdXNlbGVzcyBzaW5jZSB0aGUgRUZMCisgICAgICAgIFBs
YXRmb3JtQ3Vyc29yIGlzIGNvbnN0IGNoYXIqIHNvIHRoZXJlIGlzIG5vIHByb2JsZW0gd2l0aCBp
bml0YWxpemluZyBpdCB0byB6ZXJvLgorICAgICAgICAqIHBsYXRmb3JtL3F0L0N1cnNvclF0LmNw
cDogUmVtb3ZlIHRoZSBDdXJzb3JzIGNsYXNzIHNpbmNlIHdlIGhhdmUgdGhlIHN0YXRpYyBjdXJz
b3IgaW5zdGFuY2VzCisgICAgICAgIGZvciB0aGUgY29tbW9uIGN1cnNvciB0eXBlcyBpbiBDdXJz
b3IuY3BwLiBNb3ZlIHRoZSBsb2dpYyB0aGF0IG1hcHMgdGhlIGN1cnNvciB0eXBlcyB0byBRQ3Vy
c29yIGluc3RhbmNlcyBpbnRvIGVuc3VyZVBsYXRmb3JtQ3Vyc29yLgorICAgICAgICAoV2ViQ29y
ZTo6Q3Vyc29yOjpDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ3VzdG9tQ3Vyc29yKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cnNvcjo6ZW5zdXJlUGxhdGZvcm1DdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL3F0
L1FXZWJQYWdlQ2xpZW50Lmg6CisgICAgICAgIChRV2ViUGFnZUNsaWVudDo6c2V0Q3Vyc29yKTog
QWRqdXN0IHRvIHRoZSBQbGF0Zm9ybUN1cnNvciBjaGFuZ2UuCisgICAgICAgICogcGxhdGZvcm0v
cXQvV2lkZ2V0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpzZXRDdXJzb3IpOiBQ
cm9wYWdldGUgdGhlIGNhbGxiYWNrIGZvcndhcmQgdGhyb3VnaCBIb3N0V2luZG93LgorCiAyMDEw
LTA4LTE2ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ3Vy
c29yLmggYi9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCmluZGV4IDVlNTQ3ZWYuLjMzMjMzMTcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9DdXJzb3IuaApAQCAtNjIsNyArNjIsNyBAQCB0eXBlZGVmIHN0cnVjdCBISUNPTl9fICpI
SUNPTjsKIHR5cGVkZWYgSElDT04gSENVUlNPUjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lO
KSB8fCBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShXSU4pIHx8
IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKICNkZWZpbmUg
V1RGX1VTRV9MQVpZX05BVElWRV9DVVJTT1IgMQogI2VuZGlmCiAKQEAgLTg4LDcgKzg4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIHR5cGVkZWYgY29u
c3QgY2hhciogUGxhdGZvcm1DdXJzb3I7CiAjZWxpZiBQTEFURk9STShRVCkgJiYgIWRlZmluZWQo
UVRfTk9fQ1VSU09SKQotICAgIHR5cGVkZWYgUUN1cnNvciBQbGF0Zm9ybUN1cnNvcjsKKyAgICB0
eXBlZGVmIFFDdXJzb3IqIFBsYXRmb3JtQ3Vyc29yOwogI2VsaWYgUExBVEZPUk0oV1gpCiAgICAg
dHlwZWRlZiB3eEN1cnNvciogUGxhdGZvcm1DdXJzb3I7CiAjZWxpZiBQTEFURk9STShDSFJPTUlV
TSkKQEAgLTE1MSw5ICsxNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRp
YyBjb25zdCBDdXJzb3ImIGZyb21UeXBlKEN1cnNvcjo6VHlwZSk7CiAKICAgICAgICAgQ3Vyc29y
KCkKLSNpZiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9STShFRkwpCiAgICAgICAgICAgICA6IG1f
cGxhdGZvcm1DdXJzb3IoMCkKLSNlbmRpZgogICAgICAgICB7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DdXJzb3JRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0N1cnNvclF0LmNwcAppbmRleCA2MDE3ZGFhLi5hYTAwYWM1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0N1
cnNvclF0LmNwcApAQCAtNDMsMTMgKzQzLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Q3Vyc29yOjpDdXJzb3IoUGxhdGZvcm1DdXJzb3IgcCkKLSAgICA6IG1fcGxhdGZvcm1DdXJzb3Io
cCkKLXsKLX0KLQogQ3Vyc29yOjpDdXJzb3IoY29uc3QgQ3Vyc29yJiBvdGhlcikKLSAgICA6IG1f
cGxhdGZvcm1DdXJzb3Iob3RoZXIubV9wbGF0Zm9ybUN1cnNvcikKKyAgICA6IG1fdHlwZShvdGhl
ci5tX3R5cGUpCisgICAgLCBtX2ltYWdlKG90aGVyLm1faW1hZ2UpCisgICAgLCBtX2hvdFNwb3Qo
b3RoZXIubV9ob3RTcG90KQorICAgICwgbV9wbGF0Zm9ybUN1cnNvcihvdGhlci5tX3BsYXRmb3Jt
Q3Vyc29yKQogewogfQogCkBAIC01NywzMTUgKzU1LDE0MyBAQCBDdXJzb3I6On5DdXJzb3IoKQog
ewogfQogCi1DdXJzb3I6OkN1cnNvcihJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RT
cG90KQotewotI2lmbmRlZiBRVF9OT19DVVJTT1IKLSAgICBJbnRQb2ludCBlZmZlY3RpdmVIb3RT
cG90ID0gZGV0ZXJtaW5lSG90U3BvdChpbWFnZSwgaG90U3BvdCk7Ci0gICAgbV9wbGF0Zm9ybUN1
cnNvciA9IFFDdXJzb3IoKihpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSksIGVm
ZmVjdGl2ZUhvdFNwb3QueCgpLCBlZmZlY3RpdmVIb3RTcG90LnkoKSk7Ci0jZW5kaWYKLX0KLQog
Q3Vyc29yJiBDdXJzb3I6Om9wZXJhdG9yPShjb25zdCBDdXJzb3ImIG90aGVyKQogeworICAgIG1f
dHlwZSA9IG90aGVyLm1fdHlwZTsKKyAgICBtX2ltYWdlID0gb3RoZXIubV9pbWFnZTsKKyAgICBt
X2hvdFNwb3QgPSBvdGhlci5tX2hvdFNwb3Q7CiAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG90aGVy
Lm1fcGxhdGZvcm1DdXJzb3I7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1uYW1lc3BhY2Ugewot
Ci0vLyBGSVhNRTogc3RhdGljIGRlbGV0ZXIKLWNsYXNzIEN1cnNvcnMgOiBwdWJsaWMgTm9uY29w
eWFibGUgewotcHJvdGVjdGVkOgotICAgIEN1cnNvcnMoKQorc3RhdGljIFFDdXJzb3IqIGNyZWF0
ZUN1c3RvbUN1cnNvcihJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQorewog
I2lmbmRlZiBRVF9OT19DVVJTT1IKLSAgICAgICAgOiBDcm9zc0N1cnNvcihRdDo6Q3Jvc3NDdXJz
b3IpCi0gICAgICAgICwgTW92ZUN1cnNvcihRdDo6U2l6ZUFsbEN1cnNvcikKLSAgICAgICAgLCBQ
b2ludGVyQ3Vyc29yKFF0OjpBcnJvd0N1cnNvcikKLSAgICAgICAgLCBQb2ludGluZ0hhbmRDdXJz
b3IoUXQ6OlBvaW50aW5nSGFuZEN1cnNvcikKLSAgICAgICAgLCBJQmVhbUN1cnNvcihRdDo6SUJl
YW1DdXJzb3IpCi0gICAgICAgICwgV2FpdEN1cnNvcihRdDo6V2FpdEN1cnNvcikKLSAgICAgICAg
LCBXaGF0c1RoaXNDdXJzb3IoUXQ6OldoYXRzVGhpc0N1cnNvcikKLSAgICAgICAgLCBTaXplSG9y
Q3Vyc29yKFF0OjpTaXplSG9yQ3Vyc29yKQotICAgICAgICAsIFNpemVWZXJDdXJzb3IoUXQ6OlNp
emVWZXJDdXJzb3IpCi0gICAgICAgICwgU2l6ZUZEaWFnQ3Vyc29yKFF0OjpTaXplRkRpYWdDdXJz
b3IpCi0gICAgICAgICwgU2l6ZUJEaWFnQ3Vyc29yKFF0OjpTaXplQkRpYWdDdXJzb3IpCi0gICAg
ICAgICwgU3BsaXRIQ3Vyc29yKFF0OjpTcGxpdEhDdXJzb3IpCi0gICAgICAgICwgU3BsaXRWQ3Vy
c29yKFF0OjpTcGxpdFZDdXJzb3IpCi0gICAgICAgICwgTm9Ecm9wQ3Vyc29yKFF0OjpGb3JiaWRk
ZW5DdXJzb3IpCi0gICAgICAgICwgQmxhbmtDdXJzb3IoUXQ6OkJsYW5rQ3Vyc29yKQotICAgICAg
ICAsIFpvb21JbkN1cnNvcihRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQv
cmVzb3VyY2VzL3pvb21JbkN1cnNvci5wbmciKSksIDcsIDcpKQotICAgICAgICAsIFpvb21PdXRD
dXJzb3IoUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy96
b29tT3V0Q3Vyc29yLnBuZyIpKSwgNywgNykpCi0gICAgICAgICwgVmVydGljYWxUZXh0Q3Vyc29y
KFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMvdmVydGlj
YWxUZXh0Q3Vyc29yLnBuZyIpKSwgNywgNykpCi0gICAgICAgICwgQ2VsbEN1cnNvcihRQ3Vyc29y
KFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL2NlbGxDdXJzb3IucG5n
IikpLCA3LCA3KSkKLSAgICAgICAgLCBDb250ZXh0TWVudUN1cnNvcihRQ3Vyc29yKFFQaXhtYXAo
UUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL2NvbnRleHRNZW51Q3Vyc29yLnBuZyIp
KSwgMywgMikpCi0gICAgICAgICwgQ29weUN1cnNvcihRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0
cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL2NvcHlDdXJzb3IucG5nIikpLCAzLCAyKSkKLSAgICAg
ICAgLCBQcm9ncmVzc0N1cnNvcihRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJr
aXQvcmVzb3VyY2VzL3Byb2dyZXNzQ3Vyc29yLnBuZyIpKSwgMywgMikpCi0gICAgICAgICwgQWxp
YXNDdXJzb3IoUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNl
cy9hbGlhc0N1cnNvci5wbmciKSksIDExLCAzKSkKLQorICAgIEludFBvaW50IGVmZmVjdGl2ZUhv
dFNwb3QgPSBkZXRlcm1pbmVIb3RTcG90KGltYWdlLCBob3RTcG90KTsKKyAgICByZXR1cm4gbmV3
IFFDdXJzb3IoKihpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSksIGVmZmVjdGl2
ZUhvdFNwb3QueCgpLCBlZmZlY3RpdmVIb3RTcG90LnkoKSk7CiAjZW5kaWYKLSAgICB7Ci0gICAg
fQotCi0gICAgfkN1cnNvcnMoKQotICAgIHsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICBzdGF0aWMg
Q3Vyc29ycyogc2VsZigpOwotICAgIHN0YXRpYyBDdXJzb3JzKiBzX3NlbGY7Ci0KLSAgICBDdXJz
b3IgQ3Jvc3NDdXJzb3I7Ci0gICAgQ3Vyc29yIE1vdmVDdXJzb3I7Ci0gICAgQ3Vyc29yIFBvaW50
ZXJDdXJzb3I7Ci0gICAgQ3Vyc29yIFBvaW50aW5nSGFuZEN1cnNvcjsKLSAgICBDdXJzb3IgSUJl
YW1DdXJzb3I7Ci0gICAgQ3Vyc29yIFdhaXRDdXJzb3I7Ci0gICAgQ3Vyc29yIFdoYXRzVGhpc0N1
cnNvcjsKLSAgICBDdXJzb3IgU2l6ZUhvckN1cnNvcjsKLSAgICBDdXJzb3IgU2l6ZVZlckN1cnNv
cjsKLSAgICBDdXJzb3IgU2l6ZUZEaWFnQ3Vyc29yOwotICAgIEN1cnNvciBTaXplQkRpYWdDdXJz
b3I7Ci0gICAgQ3Vyc29yIFNwbGl0SEN1cnNvcjsKLSAgICBDdXJzb3IgU3BsaXRWQ3Vyc29yOwot
ICAgIEN1cnNvciBOb0Ryb3BDdXJzb3I7Ci0gICAgQ3Vyc29yIEJsYW5rQ3Vyc29yOwotICAgIEN1
cnNvciBab29tSW5DdXJzb3I7Ci0gICAgQ3Vyc29yIFpvb21PdXRDdXJzb3I7Ci0gICAgQ3Vyc29y
IFZlcnRpY2FsVGV4dEN1cnNvcjsKLSAgICBDdXJzb3IgQ2VsbEN1cnNvcjsKLSAgICBDdXJzb3Ig
Q29udGV4dE1lbnVDdXJzb3I7Ci0gICAgQ3Vyc29yIENvcHlDdXJzb3I7Ci0gICAgQ3Vyc29yIFBy
b2dyZXNzQ3Vyc29yOwotICAgIEN1cnNvciBBbGlhc0N1cnNvcjsKLX07Ci0KLUN1cnNvcnMqIEN1
cnNvcnM6OnNfc2VsZiA9IDA7Ci0KLUN1cnNvcnMqIEN1cnNvcnM6OnNlbGYoKQotewotICAgIGlm
ICghc19zZWxmKQotICAgICAgICBzX3NlbGYgPSBuZXcgQ3Vyc29ycygpOwotCi0gICAgcmV0dXJu
IHNfc2VsZjsKLX0KLQotfQotCi1jb25zdCBDdXJzb3ImIHBvaW50ZXJDdXJzb3IoKQotewotICAg
IHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlBvaW50ZXJDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNv
ciYgbW92ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+TW92ZUN1cnNv
cjsKLX0KLQotY29uc3QgQ3Vyc29yJiBjcm9zc0N1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNv
cnM6OnNlbGYoKS0+Q3Jvc3NDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgaGFuZEN1cnNvcigp
Ci17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+UG9pbnRpbmdIYW5kQ3Vyc29yOwotfQot
Ci1jb25zdCBDdXJzb3ImIGlCZWFtQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2Vs
ZigpLT5JQmVhbUN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiB3YWl0Q3Vyc29yKCkKLXsKLSAg
ICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5XYWl0Q3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3Im
IGhlbHBDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPldoYXRzVGhpc0N1
cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBlYXN0UmVzaXplQ3Vyc29yKCkKLXsKLSAgICByZXR1
cm4gQ3Vyc29yczo6c2VsZigpLT5TaXplSG9yQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIG5v
cnRoUmVzaXplQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5TaXplVmVy
Q3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIG5vcnRoRWFzdFJlc2l6ZUN1cnNvcigpCi17Ci0g
ICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+U2l6ZUJEaWFnQ3Vyc29yOwotfQotCi1jb25zdCBD
dXJzb3ImIG5vcnRoV2VzdFJlc2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNl
bGYoKS0+U2l6ZUZEaWFnQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIHNvdXRoUmVzaXplQ3Vy
c29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5TaXplVmVyQ3Vyc29yOwotfQot
Ci1jb25zdCBDdXJzb3ImIHNvdXRoRWFzdFJlc2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1
cnNvcnM6OnNlbGYoKS0+U2l6ZUZEaWFnQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIHNvdXRo
V2VzdFJlc2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+U2l6ZUJE
aWFnQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIHdlc3RSZXNpemVDdXJzb3IoKQotewotICAg
IHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlNpemVIb3JDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNv
ciYgbm9ydGhTb3V0aFJlc2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYo
KS0+U2l6ZVZlckN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBlYXN0V2VzdFJlc2l6ZUN1cnNv
cigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+U2l6ZUhvckN1cnNvcjsKLX0KLQot
Y29uc3QgQ3Vyc29yJiBub3J0aEVhc3RTb3V0aFdlc3RSZXNpemVDdXJzb3IoKQotewotICAgIHJl
dHVybiBDdXJzb3JzOjpzZWxmKCktPlNpemVCRGlhZ0N1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29y
JiBub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3Jz
OjpzZWxmKCktPlNpemVGRGlhZ0N1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBjb2x1bW5SZXNp
emVDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlNwbGl0SEN1cnNvcjsK
LX0KLQotY29uc3QgQ3Vyc29yJiByb3dSZXNpemVDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJz
b3JzOjpzZWxmKCktPlNwbGl0VkN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBtaWRkbGVQYW5u
aW5nQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gbW92ZUN1cnNvcigpOwotfQotCi1jb25zdCBDdXJz
b3ImIGVhc3RQYW5uaW5nQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gZWFzdFJlc2l6ZUN1cnNvcigp
OwotfQotCi1jb25zdCBDdXJzb3ImIG5vcnRoUGFubmluZ0N1cnNvcigpCi17Ci0gICAgcmV0dXJu
IG5vcnRoUmVzaXplQ3Vyc29yKCk7Ci19Ci0KLWNvbnN0IEN1cnNvciYgbm9ydGhFYXN0UGFubmlu
Z0N1cnNvcigpCi17Ci0gICAgcmV0dXJuIG5vcnRoRWFzdFJlc2l6ZUN1cnNvcigpOwotfQotCi1j
b25zdCBDdXJzb3ImIG5vcnRoV2VzdFBhbm5pbmdDdXJzb3IoKQotewotICAgIHJldHVybiBub3J0
aFdlc3RSZXNpemVDdXJzb3IoKTsKLX0KLQotY29uc3QgQ3Vyc29yJiBzb3V0aFBhbm5pbmdDdXJz
b3IoKQotewotICAgIHJldHVybiBzb3V0aFJlc2l6ZUN1cnNvcigpOwotfQotCi1jb25zdCBDdXJz
b3ImIHNvdXRoRWFzdFBhbm5pbmdDdXJzb3IoKQotewotICAgIHJldHVybiBzb3V0aEVhc3RSZXNp
emVDdXJzb3IoKTsKLX0KLQotY29uc3QgQ3Vyc29yJiBzb3V0aFdlc3RQYW5uaW5nQ3Vyc29yKCkK
LXsKLSAgICByZXR1cm4gc291dGhXZXN0UmVzaXplQ3Vyc29yKCk7Ci19Ci0KLWNvbnN0IEN1cnNv
ciYgd2VzdFBhbm5pbmdDdXJzb3IoKQotewotICAgIHJldHVybiB3ZXN0UmVzaXplQ3Vyc29yKCk7
CiB9CiAKLWNvbnN0IEN1cnNvciYgdmVydGljYWxUZXh0Q3Vyc29yKCkKLXsKLSAgICByZXR1cm4g
Q3Vyc29yczo6c2VsZigpLT5WZXJ0aWNhbFRleHRDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYg
Y2VsbEN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+Q2VsbEN1cnNvcjsK
LX0KLQotY29uc3QgQ3Vyc29yJiBjb250ZXh0TWVudUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1
cnNvcnM6OnNlbGYoKS0+Q29udGV4dE1lbnVDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgbm9E
cm9wQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5Ob0Ryb3BDdXJzb3I7
Ci19Ci0KLWNvbnN0IEN1cnNvciYgY29weUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6
OnNlbGYoKS0+Q29weUN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBwcm9ncmVzc0N1cnNvcigp
Ci17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+UHJvZ3Jlc3NDdXJzb3I7Ci19Ci0KLWNv
bnN0IEN1cnNvciYgYWxpYXNDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCkt
PkFsaWFzQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIG5vbmVDdXJzb3IoKQotewotICAgIHJl
dHVybiBDdXJzb3JzOjpzZWxmKCktPkJsYW5rQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIG5v
dEFsbG93ZWRDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPk5vRHJvcEN1
cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiB6b29tSW5DdXJzb3IoKQotewotICAgIHJldHVybiBD
dXJzb3JzOjpzZWxmKCktPlpvb21JbkN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiB6b29tT3V0
Q3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5ab29tT3V0Q3Vyc29yOwot
fQotCi1jb25zdCBDdXJzb3ImIGdyYWJDdXJzb3IoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+UG9pbnRlckN1cnNvcjsKLX0KLQotY29uc3Qg
Q3Vyc29yJiBncmFiYmluZ0N1cnNvcigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5Qb2ludGVyQ3Vyc29yOwordm9pZCBDdXJzb3I6OmVuc3Vy
ZVBsYXRmb3JtQ3Vyc29yKCkgY29uc3QKK3sKKyAgICBpZiAobV9wbGF0Zm9ybUN1cnNvcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFBvaW50ZXI6
CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6QXJyb3dDdXJzb3Ip
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyb3NzOgorICAgICAgICBtX3BsYXRmb3JtQ3Vy
c29yID0gbmV3IFFDdXJzb3IoUXQ6OkNyb3NzQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBIYW5kOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlBv
aW50aW5nSGFuZEN1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSUJlYW06CisgICAg
ICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6SUJlYW1DdXJzb3IpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFdhaXQ6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBu
ZXcgUUN1cnNvcihRdDo6V2FpdEN1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSGVs
cDoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpXaGF0c1RoaXND
dXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVhc3RSZXNpemU6CisgICAgY2FzZSBF
YXN0UGFubmluZzoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpT
aXplSG9yQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb3J0aFJlc2l6ZToKKyAg
ICBjYXNlIE5vcnRoUGFubmluZzoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vy
c29yKFF0OjpTaXplVmVyQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb3J0aEVh
c3RSZXNpemU6CisgICAgY2FzZSBOb3J0aEVhc3RQYW5uaW5nOgorICAgICAgICBtX3BsYXRmb3Jt
Q3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVCRGlhZ0N1cnNvcik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgTm9ydGhXZXN0UmVzaXplOgorICAgIGNhc2UgTm9ydGhXZXN0UGFubmluZzoK
KyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplRkRpYWdDdXJz
b3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNvdXRoUmVzaXplOgorICAgIGNhc2UgU291
dGhQYW5uaW5nOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNp
emVWZXJDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNvdXRoRWFzdFJlc2l6ZToK
KyAgICBjYXNlIFNvdXRoRWFzdFBhbm5pbmc6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBu
ZXcgUUN1cnNvcihRdDo6U2l6ZUZEaWFnQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTb3V0aFdlc3RSZXNpemU6CisgICAgY2FzZSBTb3V0aFdlc3RQYW5uaW5nOgorICAgICAgICBt
X3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVCRGlhZ0N1cnNvcik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV2VzdFJlc2l6ZToKKyAgICBjYXNlIFdlc3RQYW5uaW5nOgor
ICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVIb3JDdXJzb3Ip
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vcnRoU291dGhSZXNpemU6CisgICAgICAgIG1f
cGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U2l6ZVZlckN1cnNvcik7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgRWFzdFdlc3RSZXNpemU6CisgICAgICAgIG1fcGxhdGZvcm1DdXJz
b3IgPSBuZXcgUUN1cnNvcihRdDo6U2l6ZUhvckN1cnNvcik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTm9ydGhFYXN0U291dGhXZXN0UmVzaXplOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29y
ID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVCRGlhZ0N1cnNvcik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTm9ydGhXZXN0U291dGhFYXN0UmVzaXplOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29y
ID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVGRGlhZ0N1cnNvcik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ29sdW1uUmVzaXplOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJz
b3IoUXQ6OlNwbGl0SEN1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm93UmVzaXpl
OgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNwbGl0VkN1cnNv
cik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWlkZGxlUGFubmluZzoKKyAgICBjYXNlIE1v
dmU6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U2l6ZUFsbEN1
cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm9uZToKKyAgICAgICAgbV9wbGF0Zm9y
bUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpCbGFua0N1cnNvcik7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgTm9Ecm9wOgorICAgIGNhc2UgTm90QWxsb3dlZDoKKyAgICAgICAgbV9wbGF0Zm9y
bUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpGb3JiaWRkZW5DdXJzb3IpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEdyYWI6CisgICAgY2FzZSBHcmFiYmluZzoKKyAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpBcnJv
d0N1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmVydGljYWxUZXh0OgorICAgICAg
ICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6
L3dlYmtpdC9yZXNvdXJjZXMvdmVydGljYWxUZXh0Q3Vyc29yLnBuZyIpKSwgNywgNyk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ2VsbDoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5l
dyBRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL2NlbGxD
dXJzb3IucG5nIikpLCA3LCA3KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb250ZXh0TWVu
dToKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFFQaXhtYXAoUUxhdGlu
MVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL2NvbnRleHRNZW51Q3Vyc29yLnBuZyIpKSwgMywg
Mik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWxpYXM6CisgICAgICAgIG1fcGxhdGZvcm1D
dXJzb3IgPSBuZXcgUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291
cmNlcy9hbGlhc0N1cnNvci5wbmciKSksIDExLCAzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQcm9ncmVzczoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFFQaXht
YXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL3Byb2dyZXNzQ3Vyc29yLnBuZyIp
KSwgMywgMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29weToKKyAgICAgICAgbV9wbGF0
Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQv
cmVzb3VyY2VzL2NvcHlDdXJzb3IucG5nIikpLCAzLCAyKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBab29tSW46CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRUGl4
bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy96b29tSW5DdXJzb3IucG5nIikp
LCA3LCA3KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBab29tT3V0OgorICAgICAgICBtX3Bs
YXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtp
dC9yZXNvdXJjZXMvem9vbU91dEN1cnNvci5wbmciKSksIDcsIDcpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEN1c3RvbToKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0ZUN1c3Rv
bUN1cnNvcihtX2ltYWdlLmdldCgpLCBtX2hvdFNwb3QpOworICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaAppbmRleCBhMGEwMjE4Li41YzI0ODc4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1FXZWJQYWdlQ2xpZW50LmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9RV2ViUGFnZUNsaWVudC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5l
IFFXZWJQYWdlQ2xpZW50X2gKIAogI2lmbmRlZiBRVF9OT19DVVJTT1IKLSNpbmNsdWRlIDxRQ3Vy
c29yPgorI2luY2x1ZGUgIkN1cnNvci5oIgogI2VuZGlmCiAKICNpbmNsdWRlIDxRUmVjdD4KQEAg
LTcwLDEyICs3MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHVwZGF0ZUN1cnNvcihtX2xhc3RDdXJz
b3IpOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIHNldEN1cnNvcihjb25zdCBRQ3Vyc29yJiBj
dXJzb3IpCisgICAgaW5saW5lIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYg
Y3Vyc29yKQogICAgIHsKLSAgICAgICAgbV9sYXN0Q3Vyc29yID0gY3Vyc29yOwotICAgICAgICBp
ZiAoIWN1cnNvci5iaXRtYXAoKSAmJiBjdXJzb3Iuc2hhcGUoKSA9PSB0aGlzLT5jdXJzb3IoKS5z
aGFwZSgpKQorICAgICAgICBRQ3Vyc29yIGN1cnNvckltcGwgPSAqY3Vyc29yLnBsYXRmb3JtQ3Vy
c29yKCk7CisgICAgICAgIG1fbGFzdEN1cnNvciA9IGN1cnNvckltcGw7CisgICAgICAgIGlmICgh
Y3Vyc29ySW1wbC5iaXRtYXAoKSAmJiBjdXJzb3JJbXBsLnNoYXBlKCkgPT0gdGhpcy0+Y3Vyc29y
KCkuc2hhcGUoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdXBkYXRlQ3Vyc29yKGN1
cnNvcik7CisgICAgICAgIHVwZGF0ZUN1cnNvcihjdXJzb3JJbXBsKTsKICAgICB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1dpZGdldFF0LmNwcAppbmRleCAwOTAzYjZlLi5lNjRkNjU1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1dpZGdldFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL3F0L1dpZGdldFF0LmNwcApAQCAtNzgsMTAgKzc4LDEwIEBAIHZvaWQgV2lkZ2V0OjpzZXRG
b2N1cyhib29sIGZvY3VzZWQpCiB2b2lkIFdpZGdldDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYg
Y3Vyc29yKQogewogI2lmbmRlZiBRVF9OT19DVVJTT1IKLSAgICBRV2ViUGFnZUNsaWVudCogcGFn
ZUNsaWVudCA9IHJvb3QoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKLQot
ICAgIGlmIChwYWdlQ2xpZW50KQotICAgICAgICBwYWdlQ2xpZW50LT5zZXRDdXJzb3IoY3Vyc29y
LmltcGwoKSk7CisgICAgU2Nyb2xsVmlldyogdmlldyA9IHJvb3QoKTsKKyAgICBpZiAoIXZpZXcp
CisgICAgICAgIHJldHVybjsKKyAgICB2aWV3LT5ob3N0V2luZG93KCktPnNldEN1cnNvcihjdXJz
b3IpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJL
aXQvcXQvQ2hhbmdlTG9nCmluZGV4IDJjOTY0ZDMuLjQ1NWQyYmYgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDEwLTA4LTE2ICBCYWxhenMgS2VsZW1lbiAgPGtiQGluZi51LXN6ZWdlZC5odT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIFVzZSBMQVpZ
X05BVElWRV9DVVJTT1IKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDQwNjIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzZXRDdXJzb3IpOiBJbXBs
ZW1lbnRlZC4gUHJvcGFnZXRlIHRoZSBjYWxsYmFjayBmb3J3YXJkIHRvIHRoZSBwbGF0Zm9ybSBz
cGVjaWZpYyBQYWdlQ2xpZW50IChRV2ViUGFnZUNMaWVudCkuCisKIDIwMTAtMDgtMTQgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBQcm9wYWdhdGUgbmFtZSBjaGFu
Z2UgdG8gUXQuCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcApp
bmRleCAwYjc3ZWE2Li5kMmE0ZDQ0IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5jcHAKQEAgLTUzNyw5ICs1MzcsMTIgQEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6
Y2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZpbGVD
aG8KICAgICBjaG9vc2VyLT5pY29uTG9hZGVkKEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhmaWxl
bmFtZXMpKTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRRdDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNv
ciYpCit2b2lkIENocm9tZUNsaWVudFF0OjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3Ip
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBRV2ViUGFnZUNsaWVudCogcGFnZUNsaWVu
dCA9IHBsYXRmb3JtUGFnZUNsaWVudCgpOworICAgIGlmICghcGFnZUNsaWVudCkKKyAgICAgICAg
cmV0dXJuOworICAgIHBhZ2VDbGllbnQtPnNldEN1cnNvcihjdXJzb3IpOwogfQogCiB2b2lkIENo
cm9tZUNsaWVudFF0OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUq
IGZyYW1lLCBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCmRpZmYgLS1naXQgYS9XZWJLaXQyL0No
YW5nZUxvZyBiL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM0ZjVmYzUuLjk5NmI4MTMgMTAwNjQ0
Ci0tLSBhL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsMjQgQEAKIDIwMTAtMDgtMTYgIEJhbGF6cyBLZWxlbWVuICA8a2JAaW5mLnUtc3plZ2VkLmh1
PgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0g
VXNlIExBWllfTkFUSVZFX0NVUlNPUgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NDA2MgorCisgICAgICAgIEltcGxlbWVudGVkIFBhZ2VDbGllbnQ6
OnNldEN1cnNvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3
LmNwcDogQWRkZWQgdXBkYXRlQ3Vyc29yIHNsb3QgdG8gYmUgY29ubmVjdGVkIHRvIHRoZSBRV0tQ
YWdlOjpzZXRDdXJzb3Igc2lnbmFsLgorICAgICAgICAoUUdyYXBoaWNzV0tWaWV3OjpRR3JhcGhp
Y3NXS1ZpZXcpOgorICAgICAgICAoUUdyYXBoaWNzV0tWaWV3Ojp1cGRhdGVDdXJzb3IpOiBTZXRz
IHRoZSBjdXJzb3Igb2YgdGhlIHdpZGdldC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Fn
cmFwaGljc3drdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHA6
CisgICAgICAgIChRV0tQYWdlUHJpdmF0ZTo6c2V0Q3Vyc29yKTogQWRkZWQgaW1wbGVtZW50YXRp
b24gZm9yIFBhZ2VDbGllbnQ6OnNldEN1cnNvci4gRW1pdHRpbmcgc2luZ2FsIHRocm91Z2ggdGhl
IFFXS1BhZ2UuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmg6IEFkZGVkIHNl
dEN1cnNvciBzaWduYWwuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaDoK
KworMjAxMC0wOC0xNiAgQmFsYXpzIEtlbGVtZW4gIDxrYkBpbmYudS1zemVnZWQuaHU+CisKICAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCiAKICAgICAgICAg
SGFuZGxlIGNvbnRlbnQgc2l6ZSBjaGFuZ2UgaW4gV2ViS2l0MgpkaWZmIC0tZ2l0IGEvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcAppbmRleCBkZGU4NTcyLi4yZDQxOGE0IDEwMDY0
NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcAorKysg
Yi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJxd2twYWdl
LmgiCiAjaW5jbHVkZSAicXdrcGFnZV9wLmgiCisjaW5jbHVkZSA8UUN1cnNvcj4KICNpbmNsdWRl
IDxRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQ+CiAjaW5jbHVkZSA8UUdyYXBoaWNzVmlldz4KICNp
bmNsdWRlIDxRUGFpbnRlcj4KQEAgLTY0LDYgKzY1LDggQEAgUUdyYXBoaWNzV0tWaWV3OjpRR3Jh
cGhpY3NXS1ZpZXcoV0tQYWdlTmFtZXNwYWNlUmVmIHBhZ2VOYW1lc3BhY2VSZWYsIEJhY2tpbmdT
dG8KICAgICBjb25uZWN0KGQtPnBhZ2UsIFNJR05BTChsb2FkUHJvZ3Jlc3MoaW50KSksIHRoaXMs
IFNJR05BTChsb2FkUHJvZ3Jlc3MoaW50KSkpOwogICAgIGNvbm5lY3QoZC0+cGFnZSwgU0lHTkFM
KGluaXRpYWxMYXlvdXRDb21wbGV0ZWQoKSksIHRoaXMsIFNJR05BTChpbml0aWFsTGF5b3V0Q29t
cGxldGVkKCkpKTsKICAgICBjb25uZWN0KGQtPnBhZ2UsIFNJR05BTCh1cmxDaGFuZ2VkKGNvbnN0
IFFVcmwmKSksIHRoaXMsIFNJR05BTCh1cmxDaGFuZ2VkKGNvbnN0IFFVcmwmKSkpOworCisgICAg
Y29ubmVjdChkLT5wYWdlLCBTSUdOQUwoY3Vyc29yQ2hhbmdlZChjb25zdCBRQ3Vyc29yJikpLCB0
aGlzLCBTTE9UKHVwZGF0ZUN1cnNvcihjb25zdCBRQ3Vyc29yJikpKTsKIH0KIAogUUdyYXBoaWNz
V0tWaWV3Ojp+UUdyYXBoaWNzV0tWaWV3KCkKQEAgLTEzNiw2ICsxMzksMTEgQEAgdm9pZCBRR3Jh
cGhpY3NXS1ZpZXc6OnN0b3AoKQogICAgIHBhZ2UoKS0+dHJpZ2dlckFjdGlvbihRV0tQYWdlOjpT
dG9wKTsKIH0KIAordm9pZCBRR3JhcGhpY3NXS1ZpZXc6OnVwZGF0ZUN1cnNvcihjb25zdCBRQ3Vy
c29yJiBjdXJzb3IpCit7CisgICAgc2V0Q3Vyc29yKGN1cnNvcik7Cit9CisKIC8qISBccmVpbXAK
ICovCiBRVmFyaWFudCBRR3JhcGhpY3NXS1ZpZXc6Oml0ZW1DaGFuZ2UoR3JhcGhpY3NJdGVtQ2hh
bmdlIGNoYW5nZSwgY29uc3QgUVZhcmlhbnQmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5oIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FncmFwaGljc3drdmlldy5oCmluZGV4IGJlYzIyMGIuLjM3NWE4MGYgMTAwNjQ0Ci0tLSBh
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3ZpZXcuaAorKysgYi9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmgKQEAgLTcsNiArNywxMCBAQAogI2lu
Y2x1ZGUgPFFHcmFwaGljc1dpZGdldD4KICNpbmNsdWRlICJxd2twYWdlLmgiCiAKK1FUX0JFR0lO
X05BTUVTUEFDRQorY2xhc3MgUUN1cnNvcjsKK1FUX0VORF9OQU1FU1BBQ0UKKwogY2xhc3MgUUdy
YXBoaWNzV0tWaWV3UHJpdmF0ZTsKIAogV0tTdHJpbmdSZWYgV0tTdHJpbmdDcmVhdGVXaXRoUVN0
cmluZyhRU3RyaW5nIHFTdHJpbmcpOwpAQCAtNjksNiArNzMsOCBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgaG92ZXJNb3ZlRXZlbnQoUUdyYXBoaWNzU2NlbmVIb3ZlckV2ZW50Kik7
CiAKKyAgICBRX1NMT1Qgdm9pZCB1cGRhdGVDdXJzb3IoY29uc3QgUUN1cnNvciYpOworCiBwcml2
YXRlOgogICAgIFFHcmFwaGljc1dLVmlld1ByaXZhdGUqIGQ7CiAgICAgZnJpZW5kIGNsYXNzIFFH
cmFwaGljc1dLVmlld1ByaXZhdGU7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdrcGFnZS5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAKaW5k
ZXggYjZkMjkxNi4uZDhkM2RhYSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3a3BhZ2UuY3BwCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcApA
QCAtNTYsNiArNTYsMTEgQEAgdm9pZCBRV0tQYWdlUHJpdmF0ZTo6aW5pdChjb25zdCBRU2l6ZSYg
dmlld3BvcnRTaXplLCBEcmF3aW5nQXJlYVByb3h5KiBwcm94eSkKICAgICBwYWdlLT5pbml0aWFs
aXplV2ViUGFnZShJbnRTaXplKHZpZXdwb3J0U2l6ZSksIHByb3h5KTsKIH0KIAordm9pZCBRV0tQ
YWdlUHJpdmF0ZTo6c2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY3Vyc29yKQorewor
ICAgIGVtaXQgcS0+Y3Vyc29yQ2hhbmdlZCgqY3Vyc29yLnBsYXRmb3JtQ3Vyc29yKCkpOworfQor
CiB2b2lkIFFXS1BhZ2VQcml2YXRlOjp0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIG5ld1Rvb2x0aXApCiB7CiAgICAgZW1pdCBxLT5zdGF0dXNCYXJNZXNzYWdlKFFT
dHJpbmcobmV3VG9vbHRpcCkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3a3BhZ2UuaCBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmgKaW5kZXggNjYw
ZDQ3Yi4uMTU0ZWIxZSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3Bh
Z2UuaAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5oCkBAIC0xMiw2ICsx
Miw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dL
UGFnZU5hbWVzcGFjZS5oPgogCitjbGFzcyBRQ3Vyc29yOwogY2xhc3MgUVdLR3JhcGhpY3NXaWRn
ZXQ7CiBjbGFzcyBRV0tQYWdlUHJpdmF0ZTsKIApAQCAtNjAsNiArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgUV9TSUdOQUwgdm9pZCBpbml0aWFsTGF5b3V0Q29tcGxldGVkKCk7CiAgICAgUV9TSUdOQUwg
dm9pZCB1cmxDaGFuZ2VkKGNvbnN0IFFVcmwmKTsKICAgICBRX1NJR05BTCB2b2lkIGNvbnRlbnRz
U2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKTsKKyAgICBRX1NJR05BTCB2b2lkIGN1cnNvckNoYW5n
ZWQoY29uc3QgUUN1cnNvciYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB0aW1lckV2ZW50KFFU
aW1lckV2ZW50Kik7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFn
ZV9wLmggYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgKaW5kZXggMGRlZGEz
NC4uOTAzYmExZSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2Vf
cC5oCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaApAQCAtNDcsNyAr
NDcsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkRXhpdCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBw
cm9jZXNzRGlkUmV2aXZlKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBX
ZWJDb3JlOjpDdXJzb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdl
YkNvcmU6OkN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMoYm9vbCBkaXJlY3Rp
b24pIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFdURjo6U3RyaW5nJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64565</attachid>
            <date>2010-08-17 01:16:23 -0700</date>
            <delta_ts>2010-08-17 02:32:47 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-Qt-Use-LAZY_NATIVE_CURSOR.patch</filename>
            <type>text/plain</type>
            <size>23312</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">RnJvbSBjOTg4Y2E2NzFkZmRjZDQ3ZGE0MzQwNTM4ZDZjYjJlMDE3NTdlOTg2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBCYWxhenMgS2VsZW1lbiA8a2JAaW5mLnUtc3plZ2VkLmh1PgpE
YXRlOiBUdWUsIDE3IEF1ZyAyMDEwIDEwOjEzOjE5ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gW1F0
XSBVc2UgTEFaWV9OQVRJVkVfQ1VSU09SCgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAyOSArKwogV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaCAg
ICAgICAgICAgICAgICAgICAgfCAgICA2ICstCiBXZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0
LmNwcCAgICAgICAgICAgICB8ICA0MzcgKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIFdlYkNv
cmUvcGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaCAgICAgICAgIHwgICAxMSArLQogV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAgICAgICAgICAgICAgfCAgICA4ICstCiBXZWJLaXQv
cXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKwogV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCAgfCAgICA3ICstCiBXZWJLaXQyL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKysKIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3ZpZXcuY3BwIHwgICAgOCArCiBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmggICB8ICAgIDYgKwogV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3a3BhZ2UuY3BwICAgICAgICAgfCAgICA1ICsKIFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2twYWdlLmggICAgICAgICAgIHwgICAgMiArCiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXdrcGFnZV9wLmggICAgICAgICB8ICAgIDIgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDIz
MSBpbnNlcnRpb25zKCspLCAzMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZjhhOTFiLi40MzNjYjU1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMyIEBACisyMDEwLTA4LTE2ICBCYWxhenMgS2VsZW1lbiAgPGtiQGluZi51LXN6ZWdlZC5o
dT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRd
IFVzZSBMQVpZX05BVElWRV9DVVJTT1IKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDQwNjIKKworICAgICAgICBObyBmdW5jdGlvbmFsIGNoYW5nZSBz
byBuZXcgdGVzdHMuCisKKyAgICAgICAgQ2hhbmdlIEN1cnNvciBiZWhhdmlvdXIgdG8gbWF0Y2gg
dGhlIExBWllfTkFUSVZFX0NVUlNPUiBwb2xpY3kuCisgICAgICAgIFByb3BhZ2F0ZSB0aGUgc2V0
Q3Vyc29yIGNhbGxiYWNrIHRvIHRoZSBQYWdlQ2xpZW50IHZpYSB0aGUgSG9zdFdpbmRvdyBpbnN0
ZWFkIG9mIHByZWFzc3VtaW5nCisgICAgICAgIHRoZSBjb25jcmV0ZSB0eXBlIG9mIHRoZSBDaHJv
bWVDbGllbnQgKHdoYXQgd2FzIGdlbmVyYWxseSB3cm9uZyBhbmQgYWN0dWFsbHkgaW5jb21wYXRp
YmxlIHdpdGggV2ViS2l0MikuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9DdXJzb3IuaDogVHlwZWRl
ZiBQbGF0Zm9ybUN1cnNvciB0byBiZSBhIFFDdXJzb3IqIHRvIGJlIGFibGUgY3JlYXRlIGl0IGRp
bmFtaWNhbGx5LgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yOjpDdXJzb3IpOiBSZW1vdmUgdGhl
IGlmZGVmLiBBbHNvIHJlbW92ZWQgZm9yIEVGTCBiZWNhdXNlIGl0IHNlZW1zIGxpa2UgdG90YWxs
eQorICAgICAgICB1c2VsZXNzIHNpbmNlIHRoZSBFRkwgUGxhdGZvcm1DdXJzb3IgaXMgY29uc3Qg
Y2hhciogc28gdGhlcmUgaXMgbm8gcHJvYmxlbSB3aXRoIGluaXRhbGl6aW5nIGl0IHRvIHplcm8u
CisgICAgICAgICogcGxhdGZvcm0vcXQvQ3Vyc29yUXQuY3BwOiBSZW1vdmUgdGhlIEN1cnNvcnMg
Y2xhc3Mgc2luY2Ugd2UgaGF2ZSB0aGUgc3RhdGljIGN1cnNvciBpbnN0YW5jZXMKKyAgICAgICAg
Zm9yIHRoZSBjb21tb24gY3Vyc29yIHR5cGVzIGluIEN1cnNvci5jcHAuIE1vdmUgdGhlIGxvZ2lj
IHRoYXQgbWFwcyB0aGUgY3Vyc29yIHR5cGVzIHRvCisgICAgICAgIFFDdXJzb3IgaW5zdGFuY2Vz
IGludG8gZW5zdXJlUGxhdGZvcm1DdXJzb3IuCisgICAgICAgIChXZWJDb3JlOjpDdXJzb3I6OkN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3I6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVDdXN0b21DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yOjpl
bnN1cmVQbGF0Zm9ybUN1cnNvcik6CisgICAgICAgICogcGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGll
bnQuaDoKKyAgICAgICAgKFFXZWJQYWdlQ2xpZW50OjpzZXRDdXJzb3IpOiBBZGp1c3QgdG8gdGhl
IFBsYXRmb3JtQ3Vyc29yIGNoYW5nZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9XaWRnZXRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnNldEN1cnNvcik6IFByb3BhZ2V0ZSB0aGUg
Y2FsbGJhY2sgZm9yd2FyZCB0aHJvdWdoIEhvc3RXaW5kb3cuCisKIDIwMTAtMDgtMTcgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCmluZGV4IDVlNTQ3ZWYuLjMzMjMzMTcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9D
dXJzb3IuaApAQCAtNjIsNyArNjIsNyBAQCB0eXBlZGVmIHN0cnVjdCBISUNPTl9fICpISUNPTjsK
IHR5cGVkZWYgSElDT04gSENVUlNPUjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lOKSB8fCBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKICNkZWZpbmUgV1RGX1VT
RV9MQVpZX05BVElWRV9DVVJTT1IgMQogI2VuZGlmCiAKQEAgLTg4LDcgKzg4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIHR5cGVkZWYgY29uc3QgY2hh
ciogUGxhdGZvcm1DdXJzb3I7CiAjZWxpZiBQTEFURk9STShRVCkgJiYgIWRlZmluZWQoUVRfTk9f
Q1VSU09SKQotICAgIHR5cGVkZWYgUUN1cnNvciBQbGF0Zm9ybUN1cnNvcjsKKyAgICB0eXBlZGVm
IFFDdXJzb3IqIFBsYXRmb3JtQ3Vyc29yOwogI2VsaWYgUExBVEZPUk0oV1gpCiAgICAgdHlwZWRl
ZiB3eEN1cnNvciogUGxhdGZvcm1DdXJzb3I7CiAjZWxpZiBQTEFURk9STShDSFJPTUlVTSkKQEAg
LTE1MSw5ICsxNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBDdXJzb3ImIGZyb21UeXBlKEN1cnNvcjo6VHlwZSk7CiAKICAgICAgICAgQ3Vyc29yKCkKLSNp
ZiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9STShFRkwpCiAgICAgICAgICAgICA6IG1fcGxhdGZv
cm1DdXJzb3IoMCkKLSNlbmRpZgogICAgICAgICB7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9DdXJzb3JRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0N1
cnNvclF0LmNwcAppbmRleCA2MDE3ZGFhLi5kNzhiYTQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0N1cnNvclF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0
LmNwcApAQCAtMyw2ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNiBHZW9yZ2UgU3RhaWtv
cyA8c3RhaWtvc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2IENoYXJsZXMgU2FtdWVs
cyA8Y2hhcmxlc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEhvbGdlciBI
YW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBT
emVnZWQKICAqCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQzLDEzICs0NCwxMSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUN1cnNvcjo6Q3Vyc29yKFBsYXRmb3JtQ3Vyc29y
IHApCi0gICAgOiBtX3BsYXRmb3JtQ3Vyc29yKHApCi17Ci19Ci0KIEN1cnNvcjo6Q3Vyc29yKGNv
bnN0IEN1cnNvciYgb3RoZXIpCi0gICAgOiBtX3BsYXRmb3JtQ3Vyc29yKG90aGVyLm1fcGxhdGZv
cm1DdXJzb3IpCisgICAgOiBtX3R5cGUob3RoZXIubV90eXBlKQorICAgICwgbV9pbWFnZShvdGhl
ci5tX2ltYWdlKQorICAgICwgbV9ob3RTcG90KG90aGVyLm1faG90U3BvdCkKKyAgICAsIG1fcGxh
dGZvcm1DdXJzb3Iob3RoZXIubV9wbGF0Zm9ybUN1cnNvcikKIHsKIH0KIApAQCAtNTcsMzE1ICs1
NiwxNDMgQEAgQ3Vyc29yOjp+Q3Vyc29yKCkKIHsKIH0KIAotQ3Vyc29yOjpDdXJzb3IoSW1hZ2Uq
IGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkKLXsKLSNpZm5kZWYgUVRfTk9fQ1VSU09S
Ci0gICAgSW50UG9pbnQgZWZmZWN0aXZlSG90U3BvdCA9IGRldGVybWluZUhvdFNwb3QoaW1hZ2Us
IGhvdFNwb3QpOwotICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBRQ3Vyc29yKCooaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpLCBlZmZlY3RpdmVIb3RTcG90LngoKSwgZWZmZWN0aXZl
SG90U3BvdC55KCkpOwotI2VuZGlmCi19Ci0KIEN1cnNvciYgQ3Vyc29yOjpvcGVyYXRvcj0oY29u
c3QgQ3Vyc29yJiBvdGhlcikKIHsKKyAgICBtX3R5cGUgPSBvdGhlci5tX3R5cGU7CisgICAgbV9p
bWFnZSA9IG90aGVyLm1faW1hZ2U7CisgICAgbV9ob3RTcG90ID0gb3RoZXIubV9ob3RTcG90Owog
ICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBvdGhlci5tX3BsYXRmb3JtQ3Vyc29yOwogICAgIHJldHVy
biAqdGhpczsKIH0KIAotbmFtZXNwYWNlIHsKLQotLy8gRklYTUU6IHN0YXRpYyBkZWxldGVyCi1j
bGFzcyBDdXJzb3JzIDogcHVibGljIE5vbmNvcHlhYmxlIHsKLXByb3RlY3RlZDoKLSAgICBDdXJz
b3JzKCkKK3N0YXRpYyBRQ3Vyc29yKiBjcmVhdGVDdXN0b21DdXJzb3IoSW1hZ2UqIGltYWdlLCBj
b25zdCBJbnRQb2ludCYgaG90U3BvdCkKK3sKICNpZm5kZWYgUVRfTk9fQ1VSU09SCi0gICAgICAg
IDogQ3Jvc3NDdXJzb3IoUXQ6OkNyb3NzQ3Vyc29yKQotICAgICAgICAsIE1vdmVDdXJzb3IoUXQ6
OlNpemVBbGxDdXJzb3IpCi0gICAgICAgICwgUG9pbnRlckN1cnNvcihRdDo6QXJyb3dDdXJzb3Ip
Ci0gICAgICAgICwgUG9pbnRpbmdIYW5kQ3Vyc29yKFF0OjpQb2ludGluZ0hhbmRDdXJzb3IpCi0g
ICAgICAgICwgSUJlYW1DdXJzb3IoUXQ6OklCZWFtQ3Vyc29yKQotICAgICAgICAsIFdhaXRDdXJz
b3IoUXQ6OldhaXRDdXJzb3IpCi0gICAgICAgICwgV2hhdHNUaGlzQ3Vyc29yKFF0OjpXaGF0c1Ro
aXNDdXJzb3IpCi0gICAgICAgICwgU2l6ZUhvckN1cnNvcihRdDo6U2l6ZUhvckN1cnNvcikKLSAg
ICAgICAgLCBTaXplVmVyQ3Vyc29yKFF0OjpTaXplVmVyQ3Vyc29yKQotICAgICAgICAsIFNpemVG
RGlhZ0N1cnNvcihRdDo6U2l6ZUZEaWFnQ3Vyc29yKQotICAgICAgICAsIFNpemVCRGlhZ0N1cnNv
cihRdDo6U2l6ZUJEaWFnQ3Vyc29yKQotICAgICAgICAsIFNwbGl0SEN1cnNvcihRdDo6U3BsaXRI
Q3Vyc29yKQotICAgICAgICAsIFNwbGl0VkN1cnNvcihRdDo6U3BsaXRWQ3Vyc29yKQotICAgICAg
ICAsIE5vRHJvcEN1cnNvcihRdDo6Rm9yYmlkZGVuQ3Vyc29yKQotICAgICAgICAsIEJsYW5rQ3Vy
c29yKFF0OjpCbGFua0N1cnNvcikKLSAgICAgICAgLCBab29tSW5DdXJzb3IoUUN1cnNvcihRUGl4
bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy96b29tSW5DdXJzb3IucG5nIikp
LCA3LCA3KSkKLSAgICAgICAgLCBab29tT3V0Q3Vyc29yKFFDdXJzb3IoUVBpeG1hcChRTGF0aW4x
U3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMvem9vbU91dEN1cnNvci5wbmciKSksIDcsIDcpKQot
ICAgICAgICAsIFZlcnRpY2FsVGV4dEN1cnNvcihRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmlu
ZygiOi93ZWJraXQvcmVzb3VyY2VzL3ZlcnRpY2FsVGV4dEN1cnNvci5wbmciKSksIDcsIDcpKQot
ICAgICAgICAsIENlbGxDdXJzb3IoUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Vi
a2l0L3Jlc291cmNlcy9jZWxsQ3Vyc29yLnBuZyIpKSwgNywgNykpCi0gICAgICAgICwgQ29udGV4
dE1lbnVDdXJzb3IoUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291
cmNlcy9jb250ZXh0TWVudUN1cnNvci5wbmciKSksIDMsIDIpKQotICAgICAgICAsIENvcHlDdXJz
b3IoUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy9jb3B5
Q3Vyc29yLnBuZyIpKSwgMywgMikpCi0gICAgICAgICwgUHJvZ3Jlc3NDdXJzb3IoUUN1cnNvcihR
UGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy9wcm9ncmVzc0N1cnNvci5w
bmciKSksIDMsIDIpKQotICAgICAgICAsIEFsaWFzQ3Vyc29yKFFDdXJzb3IoUVBpeG1hcChRTGF0
aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMvYWxpYXNDdXJzb3IucG5nIikpLCAxMSwgMykp
Ci0KKyAgICBJbnRQb2ludCBlZmZlY3RpdmVIb3RTcG90ID0gZGV0ZXJtaW5lSG90U3BvdChpbWFn
ZSwgaG90U3BvdCk7CisgICAgcmV0dXJuIG5ldyBRQ3Vyc29yKCooaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkpLCBlZmZlY3RpdmVIb3RTcG90LngoKSwgZWZmZWN0aXZlSG90U3Bv
dC55KCkpOwogI2VuZGlmCi0gICAgewotICAgIH0KLQotICAgIH5DdXJzb3JzKCkKLSAgICB7Ci0g
ICAgfQotCi1wdWJsaWM6Ci0gICAgc3RhdGljIEN1cnNvcnMqIHNlbGYoKTsKLSAgICBzdGF0aWMg
Q3Vyc29ycyogc19zZWxmOwotCi0gICAgQ3Vyc29yIENyb3NzQ3Vyc29yOwotICAgIEN1cnNvciBN
b3ZlQ3Vyc29yOwotICAgIEN1cnNvciBQb2ludGVyQ3Vyc29yOwotICAgIEN1cnNvciBQb2ludGlu
Z0hhbmRDdXJzb3I7Ci0gICAgQ3Vyc29yIElCZWFtQ3Vyc29yOwotICAgIEN1cnNvciBXYWl0Q3Vy
c29yOwotICAgIEN1cnNvciBXaGF0c1RoaXNDdXJzb3I7Ci0gICAgQ3Vyc29yIFNpemVIb3JDdXJz
b3I7Ci0gICAgQ3Vyc29yIFNpemVWZXJDdXJzb3I7Ci0gICAgQ3Vyc29yIFNpemVGRGlhZ0N1cnNv
cjsKLSAgICBDdXJzb3IgU2l6ZUJEaWFnQ3Vyc29yOwotICAgIEN1cnNvciBTcGxpdEhDdXJzb3I7
Ci0gICAgQ3Vyc29yIFNwbGl0VkN1cnNvcjsKLSAgICBDdXJzb3IgTm9Ecm9wQ3Vyc29yOwotICAg
IEN1cnNvciBCbGFua0N1cnNvcjsKLSAgICBDdXJzb3IgWm9vbUluQ3Vyc29yOwotICAgIEN1cnNv
ciBab29tT3V0Q3Vyc29yOwotICAgIEN1cnNvciBWZXJ0aWNhbFRleHRDdXJzb3I7Ci0gICAgQ3Vy
c29yIENlbGxDdXJzb3I7Ci0gICAgQ3Vyc29yIENvbnRleHRNZW51Q3Vyc29yOwotICAgIEN1cnNv
ciBDb3B5Q3Vyc29yOwotICAgIEN1cnNvciBQcm9ncmVzc0N1cnNvcjsKLSAgICBDdXJzb3IgQWxp
YXNDdXJzb3I7Ci19OwotCi1DdXJzb3JzKiBDdXJzb3JzOjpzX3NlbGYgPSAwOwotCi1DdXJzb3Jz
KiBDdXJzb3JzOjpzZWxmKCkKLXsKLSAgICBpZiAoIXNfc2VsZikKLSAgICAgICAgc19zZWxmID0g
bmV3IEN1cnNvcnMoKTsKLQotICAgIHJldHVybiBzX3NlbGY7Ci19Ci0KLX0KLQotY29uc3QgQ3Vy
c29yJiBwb2ludGVyQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5Qb2lu
dGVyQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIG1vdmVDdXJzb3IoKQotewotICAgIHJldHVy
biBDdXJzb3JzOjpzZWxmKCktPk1vdmVDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgY3Jvc3ND
dXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPkNyb3NzQ3Vyc29yOwotfQot
Ci1jb25zdCBDdXJzb3ImIGhhbmRDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxm
KCktPlBvaW50aW5nSGFuZEN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBpQmVhbUN1cnNvcigp
Ci17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+SUJlYW1DdXJzb3I7Ci19Ci0KLWNvbnN0
IEN1cnNvciYgd2FpdEN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+V2Fp
dEN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBoZWxwQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4g
Q3Vyc29yczo6c2VsZigpLT5XaGF0c1RoaXNDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgZWFz
dFJlc2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+U2l6ZUhvckN1
cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBub3J0aFJlc2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0
dXJuIEN1cnNvcnM6OnNlbGYoKS0+U2l6ZVZlckN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBu
b3J0aEVhc3RSZXNpemVDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlNp
emVCRGlhZ0N1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBub3J0aFdlc3RSZXNpemVDdXJzb3Io
KQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlNpemVGRGlhZ0N1cnNvcjsKLX0KLQot
Y29uc3QgQ3Vyc29yJiBzb3V0aFJlc2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6
OnNlbGYoKS0+U2l6ZVZlckN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBzb3V0aEVhc3RSZXNp
emVDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlNpemVGRGlhZ0N1cnNv
cjsKLX0KLQotY29uc3QgQ3Vyc29yJiBzb3V0aFdlc3RSZXNpemVDdXJzb3IoKQotewotICAgIHJl
dHVybiBDdXJzb3JzOjpzZWxmKCktPlNpemVCRGlhZ0N1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29y
JiB3ZXN0UmVzaXplQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5TaXpl
SG9yQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIG5vcnRoU291dGhSZXNpemVDdXJzb3IoKQot
ewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlNpemVWZXJDdXJzb3I7Ci19Ci0KLWNvbnN0
IEN1cnNvciYgZWFzdFdlc3RSZXNpemVDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpz
ZWxmKCktPlNpemVIb3JDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgbm9ydGhFYXN0U291dGhX
ZXN0UmVzaXplQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5TaXplQkRp
YWdDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgbm9ydGhXZXN0U291dGhFYXN0UmVzaXplQ3Vy
c29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5TaXplRkRpYWdDdXJzb3I7Ci19
Ci0KLWNvbnN0IEN1cnNvciYgY29sdW1uUmVzaXplQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vy
c29yczo6c2VsZigpLT5TcGxpdEhDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgcm93UmVzaXpl
Q3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5TcGxpdFZDdXJzb3I7Ci19
Ci0KLWNvbnN0IEN1cnNvciYgbWlkZGxlUGFubmluZ0N1cnNvcigpCi17Ci0gICAgcmV0dXJuIG1v
dmVDdXJzb3IoKTsKLX0KLQotY29uc3QgQ3Vyc29yJiBlYXN0UGFubmluZ0N1cnNvcigpCi17Ci0g
ICAgcmV0dXJuIGVhc3RSZXNpemVDdXJzb3IoKTsKLX0KLQotY29uc3QgQ3Vyc29yJiBub3J0aFBh
bm5pbmdDdXJzb3IoKQotewotICAgIHJldHVybiBub3J0aFJlc2l6ZUN1cnNvcigpOwotfQotCi1j
b25zdCBDdXJzb3ImIG5vcnRoRWFzdFBhbm5pbmdDdXJzb3IoKQotewotICAgIHJldHVybiBub3J0
aEVhc3RSZXNpemVDdXJzb3IoKTsKLX0KLQotY29uc3QgQ3Vyc29yJiBub3J0aFdlc3RQYW5uaW5n
Q3Vyc29yKCkKLXsKLSAgICByZXR1cm4gbm9ydGhXZXN0UmVzaXplQ3Vyc29yKCk7Ci19Ci0KLWNv
bnN0IEN1cnNvciYgc291dGhQYW5uaW5nQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gc291dGhSZXNp
emVDdXJzb3IoKTsKLX0KLQotY29uc3QgQ3Vyc29yJiBzb3V0aEVhc3RQYW5uaW5nQ3Vyc29yKCkK
LXsKLSAgICByZXR1cm4gc291dGhFYXN0UmVzaXplQ3Vyc29yKCk7Ci19Ci0KLWNvbnN0IEN1cnNv
ciYgc291dGhXZXN0UGFubmluZ0N1cnNvcigpCi17Ci0gICAgcmV0dXJuIHNvdXRoV2VzdFJlc2l6
ZUN1cnNvcigpOwotfQotCi1jb25zdCBDdXJzb3ImIHdlc3RQYW5uaW5nQ3Vyc29yKCkKLXsKLSAg
ICByZXR1cm4gd2VzdFJlc2l6ZUN1cnNvcigpOwogfQogCi1jb25zdCBDdXJzb3ImIHZlcnRpY2Fs
VGV4dEN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+VmVydGljYWxUZXh0
Q3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIGNlbGxDdXJzb3IoKQotewotICAgIHJldHVybiBD
dXJzb3JzOjpzZWxmKCktPkNlbGxDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgY29udGV4dE1l
bnVDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPkNvbnRleHRNZW51Q3Vy
c29yOwotfQotCi1jb25zdCBDdXJzb3ImIG5vRHJvcEN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1
cnNvcnM6OnNlbGYoKS0+Tm9Ecm9wQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIGNvcHlDdXJz
b3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPkNvcHlDdXJzb3I7Ci19Ci0KLWNv
bnN0IEN1cnNvciYgcHJvZ3Jlc3NDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxm
KCktPlByb2dyZXNzQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIGFsaWFzQ3Vyc29yKCkKLXsK
LSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5BbGlhc0N1cnNvcjsKLX0KLQotY29uc3QgQ3Vy
c29yJiBub25lQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5CbGFua0N1
cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBub3RBbGxvd2VkQ3Vyc29yKCkKLXsKLSAgICByZXR1
cm4gQ3Vyc29yczo6c2VsZigpLT5Ob0Ryb3BDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgem9v
bUluQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5ab29tSW5DdXJzb3I7
Ci19Ci0KLWNvbnN0IEN1cnNvciYgem9vbU91dEN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNv
cnM6OnNlbGYoKS0+Wm9vbU91dEN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBncmFiQ3Vyc29y
KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCkt
PlBvaW50ZXJDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgZ3JhYmJpbmdDdXJzb3IoKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+UG9pbnRl
ckN1cnNvcjsKK3ZvaWQgQ3Vyc29yOjplbnN1cmVQbGF0Zm9ybUN1cnNvcigpIGNvbnN0Cit7Cisg
ICAgaWYgKG1fcGxhdGZvcm1DdXJzb3IpCisgICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAo
bV90eXBlKSB7CisgICAgY2FzZSBQb2ludGVyOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0g
bmV3IFFDdXJzb3IoUXQ6OkFycm93Q3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
cm9zczoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpDcm9zc0N1
cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSGFuZDoKKyAgICAgICAgbV9wbGF0Zm9y
bUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpQb2ludGluZ0hhbmRDdXJzb3IpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIElCZWFtOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFD
dXJzb3IoUXQ6OklCZWFtQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXYWl0Ogor
ICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OldhaXRDdXJzb3IpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEhlbHA6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3Ig
PSBuZXcgUUN1cnNvcihRdDo6V2hhdHNUaGlzQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBFYXN0UmVzaXplOgorICAgIGNhc2UgRWFzdFBhbm5pbmc6CisgICAgICAgIG1fcGxhdGZv
cm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U2l6ZUhvckN1cnNvcik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgTm9ydGhSZXNpemU6CisgICAgY2FzZSBOb3J0aFBhbm5pbmc6CisgICAgICAg
IG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U2l6ZVZlckN1cnNvcik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgTm9ydGhFYXN0UmVzaXplOgorICAgIGNhc2UgTm9ydGhFYXN0
UGFubmluZzoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXpl
QkRpYWdDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vcnRoV2VzdFJlc2l6ZToK
KyAgICBjYXNlIE5vcnRoV2VzdFBhbm5pbmc6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBu
ZXcgUUN1cnNvcihRdDo6U2l6ZUZEaWFnQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTb3V0aFJlc2l6ZToKKyAgICBjYXNlIFNvdXRoUGFubmluZzoKKyAgICAgICAgbV9wbGF0Zm9y
bUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplVmVyQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBTb3V0aEVhc3RSZXNpemU6CisgICAgY2FzZSBTb3V0aEVhc3RQYW5uaW5nOgor
ICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVGRGlhZ0N1cnNv
cik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU291dGhXZXN0UmVzaXplOgorICAgIGNhc2Ug
U291dGhXZXN0UGFubmluZzoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29y
KFF0OjpTaXplQkRpYWdDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlc3RSZXNp
emU6CisgICAgY2FzZSBXZXN0UGFubmluZzoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5l
dyBRQ3Vyc29yKFF0OjpTaXplSG9yQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBO
b3J0aFNvdXRoUmVzaXplOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3Io
UXQ6OlNpemVWZXJDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVhc3RXZXN0UmVz
aXplOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVIb3JD
dXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6
ZToKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplQkRpYWdD
dXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6
ZToKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplRkRpYWdD
dXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbHVtblJlc2l6ZToKKyAgICAgICAg
bV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTcGxpdEhDdXJzb3IpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFJvd1Jlc2l6ZToKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9
IG5ldyBRQ3Vyc29yKFF0OjpTcGxpdFZDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IE1pZGRsZVBhbm5pbmc6CisgICAgY2FzZSBNb3ZlOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29y
ID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVBbGxDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIE5vbmU6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6Qmxh
bmtDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vRHJvcDoKKyAgICBjYXNlIE5v
dEFsbG93ZWQ6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6Rm9y
YmlkZGVuQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFiOgorICAgIGNhc2Ug
R3JhYmJpbmc6CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIG1fcGxhdGZvcm1D
dXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6QXJyb3dDdXJzb3IpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFZlcnRpY2FsVGV4dDoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vy
c29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL3ZlcnRpY2FsVGV4
dEN1cnNvci5wbmciKSksIDcsIDcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENlbGw6Cisg
ICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJp
bmcoIjovd2Via2l0L3Jlc291cmNlcy9jZWxsQ3Vyc29yLnBuZyIpKSwgNywgNyk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ29udGV4dE1lbnU6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3Ig
PSBuZXcgUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy9j
b250ZXh0TWVudUN1cnNvci5wbmciKSksIDMsIDIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFsaWFzOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUVBpeG1hcChR
TGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMvYWxpYXNDdXJzb3IucG5nIikpLCAxMSwg
Myk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJvZ3Jlc3M6CisgICAgICAgIG1fcGxhdGZv
cm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jl
c291cmNlcy9wcm9ncmVzc0N1cnNvci5wbmciKSksIDMsIDIpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENvcHk6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRUGl4
bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy9jb3B5Q3Vyc29yLnBuZyIpKSwg
MywgMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWm9vbUluOgorICAgICAgICBtX3BsYXRm
b3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9y
ZXNvdXJjZXMvem9vbUluQ3Vyc29yLnBuZyIpKSwgNywgNyk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgWm9vbU91dDoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFFQ
aXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL3pvb21PdXRDdXJzb3IucG5n
IikpLCA3LCA3KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDdXN0b206CisgICAgICAgIG1f
cGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVDdXN0b21DdXJzb3IobV9pbWFnZS5nZXQoKSwgbV9ob3RT
cG90KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1FXZWJQYWdlQ2xpZW50LmggYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1FXZWJQYWdlQ2xpZW50LmgK
aW5kZXggYTBhMDIxOC4uNWMyNDg3OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9R
V2ViUGFnZUNsaWVudC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQu
aApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBRV2ViUGFnZUNsaWVudF9oCiAKICNpZm5kZWYg
UVRfTk9fQ1VSU09SCi0jaW5jbHVkZSA8UUN1cnNvcj4KKyNpbmNsdWRlICJDdXJzb3IuaCIKICNl
bmRpZgogCiAjaW5jbHVkZSA8UVJlY3Q+CkBAIC03MCwxMiArNzAsMTMgQEAgcHVibGljOgogICAg
ICAgICB1cGRhdGVDdXJzb3IobV9sYXN0Q3Vyc29yKTsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9p
ZCBzZXRDdXJzb3IoY29uc3QgUUN1cnNvciYgY3Vyc29yKQorICAgIGlubGluZSB2b2lkIHNldEN1
cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImIGN1cnNvcikKICAgICB7Ci0gICAgICAgIG1fbGFz
dEN1cnNvciA9IGN1cnNvcjsKLSAgICAgICAgaWYgKCFjdXJzb3IuYml0bWFwKCkgJiYgY3Vyc29y
LnNoYXBlKCkgPT0gdGhpcy0+Y3Vyc29yKCkuc2hhcGUoKSkKKyAgICAgICAgUUN1cnNvciBjdXJz
b3JJbXBsID0gKmN1cnNvci5wbGF0Zm9ybUN1cnNvcigpOworICAgICAgICBtX2xhc3RDdXJzb3Ig
PSBjdXJzb3JJbXBsOworICAgICAgICBpZiAoIWN1cnNvckltcGwuYml0bWFwKCkgJiYgY3Vyc29y
SW1wbC5zaGFwZSgpID09IHRoaXMtPmN1cnNvcigpLnNoYXBlKCkpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIHVwZGF0ZUN1cnNvcihjdXJzb3IpOworICAgICAgICB1cGRhdGVDdXJzb3Io
Y3Vyc29ySW1wbCk7CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vcXQvV2lkZ2V0UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAKaW5k
ZXggMDkwM2I2ZS4uZTY0ZDY1NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaWRn
ZXRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAKQEAgLTc4LDEw
ICs3OCwxMCBAQCB2b2lkIFdpZGdldDo6c2V0Rm9jdXMoYm9vbCBmb2N1c2VkKQogdm9pZCBXaWRn
ZXQ6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKIHsKICNpZm5kZWYgUVRfTk9fQ1VS
U09SCi0gICAgUVdlYlBhZ2VDbGllbnQqIHBhZ2VDbGllbnQgPSByb290KCktPmhvc3RXaW5kb3co
KS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7Ci0KLSAgICBpZiAocGFnZUNsaWVudCkKLSAgICAgICAg
cGFnZUNsaWVudC0+c2V0Q3Vyc29yKGN1cnNvci5pbXBsKCkpOworICAgIFNjcm9sbFZpZXcqIHZp
ZXcgPSByb290KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisgICAgdmlldy0+
aG9zdFdpbmRvdygpLT5zZXRDdXJzb3IoY3Vyc29yKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAyYzk2NGQz
Li5mNTliZGM2IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9x
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wOC0xNiAgQmFsYXpzIEtlbGVtZW4g
IDxrYkBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW1F0XSBVc2UgTEFaWV9OQVRJVkVfQ1VSU09SCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MDYyCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRRdDo6c2V0Q3Vyc29yKTogSW1wbGVtZW50ZWQuIFByb3BhZ2V0ZSB0aGUgY2FsbGJh
Y2sgZm9yd2FyZCB0byB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgUGFnZUNsaWVudCAo
UVdlYlBhZ2VDTGllbnQpLgorCiAyMDEwLTA4LTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUHJvcGFnYXRlIG5hbWUgY2hhbmdlIHRvIFF0LgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBiL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKaW5kZXggMGI3N2VhNi4uZDJhNGQ0
NCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCkBAIC01
MzcsOSArNTM3LDEyIEBAIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OmNob29zZUljb25Gb3JGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBGaWxlQ2hvCiAgICAgY2hvb3Nlci0+aWNv
bkxvYWRlZChJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKSk7CiB9CiAKLXZvaWQg
Q2hyb21lQ2xpZW50UXQ6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImKQordm9pZCBDaHJvbWVDbGll
bnRRdDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgUVdlYlBhZ2VDbGllbnQqIHBhZ2VDbGllbnQgPSBwbGF0Zm9ybVBhZ2VDbGll
bnQoKTsKKyAgICBpZiAoIXBhZ2VDbGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlQ2xp
ZW50LT5zZXRDdXJzb3IoY3Vyc29yKTsKIH0KIAogdm9pZCBDaHJvbWVDbGllbnRRdDo6cmVxdWVz
dEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9jYXRpb24q
IGdlb2xvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjMzQxYzUxLi4yZTQwOGVhIDEwMDY0NAotLS0gYS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA4LTE2
ICBCYWxhenMgS2VsZW1lbiAgPGtiQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIFVzZSBMQVpZX05BVElWRV9DVVJT
T1IKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQw
NjIKKworICAgICAgICBJbXBsZW1lbnRlZCBQYWdlQ2xpZW50OjpzZXRDdXJzb3IuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5jcHA6IEFkZGVkIHVwZGF0ZUN1
cnNvciBzbG90IHRvIGJlIGNvbm5lY3RlZCB0byB0aGUgUVdLUGFnZTo6c2V0Q3Vyc29yIHNpZ25h
bC4KKyAgICAgICAgKFFHcmFwaGljc1dLVmlldzo6UUdyYXBoaWNzV0tWaWV3KToKKyAgICAgICAg
KFFHcmFwaGljc1dLVmlldzo6dXBkYXRlQ3Vyc29yKTogU2V0cyB0aGUgY3Vyc29yIG9mIHRoZSB3
aWRnZXQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3ZpZXcuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwOgorICAgICAgICAoUVdLUGFnZVBy
aXZhdGU6OnNldEN1cnNvcik6IEFkZGVkIGltcGxlbWVudGF0aW9uIGZvciBQYWdlQ2xpZW50Ojpz
ZXRDdXJzb3IuIEVtaXR0aW5nIHNpbmdhbCB0aHJvdWdoIHRoZSBRV0tQYWdlLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5oOiBBZGRlZCBzZXRDdXJzb3Igc2lnbmFsLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmg6CisKIDIwMTAtMDgtMTYgIEpvbiBI
b25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBzb21lIHRl
c3RzIHRvIHBhc3MgaW4gV2ViS2l0VGVzdFJ1bm5lciBiZWZvcmUgU2hhcmVkTWVtb3J5IGFuZApk
aWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5jcHAg
Yi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcAppbmRleCBmZDBi
ODZlLi42NTRjYTBmIDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBo
aWNzd2t2aWV3LmNwcAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2
aWV3LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VOYW1lc3BhY2UuaCIK
ICNpbmNsdWRlICJxd2twYWdlLmgiCiAjaW5jbHVkZSAicXdrcGFnZV9wLmgiCisjaW5jbHVkZSA8
UUN1cnNvcj4KICNpbmNsdWRlIDxRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQ+CiAjaW5jbHVkZSA8
UUdyYXBoaWNzVmlldz4KICNpbmNsdWRlIDxRUGFpbnRlcj4KQEAgLTY0LDYgKzY1LDggQEAgUUdy
YXBoaWNzV0tWaWV3OjpRR3JhcGhpY3NXS1ZpZXcoV0tQYWdlTmFtZXNwYWNlUmVmIHBhZ2VOYW1l
c3BhY2VSZWYsIEJhY2tpbmdTdG8KICAgICBjb25uZWN0KGQtPnBhZ2UsIFNJR05BTChsb2FkUHJv
Z3Jlc3MoaW50KSksIHRoaXMsIFNJR05BTChsb2FkUHJvZ3Jlc3MoaW50KSkpOwogICAgIGNvbm5l
Y3QoZC0+cGFnZSwgU0lHTkFMKGluaXRpYWxMYXlvdXRDb21wbGV0ZWQoKSksIHRoaXMsIFNJR05B
TChpbml0aWFsTGF5b3V0Q29tcGxldGVkKCkpKTsKICAgICBjb25uZWN0KGQtPnBhZ2UsIFNJR05B
TCh1cmxDaGFuZ2VkKGNvbnN0IFFVcmwmKSksIHRoaXMsIFNJR05BTCh1cmxDaGFuZ2VkKGNvbnN0
IFFVcmwmKSkpOworCisgICAgY29ubmVjdChkLT5wYWdlLCBTSUdOQUwoY3Vyc29yQ2hhbmdlZChj
b25zdCBRQ3Vyc29yJikpLCB0aGlzLCBTTE9UKHVwZGF0ZUN1cnNvcihjb25zdCBRQ3Vyc29yJikp
KTsKIH0KIAogUUdyYXBoaWNzV0tWaWV3Ojp+UUdyYXBoaWNzV0tWaWV3KCkKQEAgLTEzNiw2ICsx
MzksMTEgQEAgdm9pZCBRR3JhcGhpY3NXS1ZpZXc6OnN0b3AoKQogICAgIHBhZ2UoKS0+dHJpZ2dl
ckFjdGlvbihRV0tQYWdlOjpTdG9wKTsKIH0KIAordm9pZCBRR3JhcGhpY3NXS1ZpZXc6OnVwZGF0
ZUN1cnNvcihjb25zdCBRQ3Vyc29yJiBjdXJzb3IpCit7CisgICAgc2V0Q3Vyc29yKGN1cnNvcik7
Cit9CisKIC8qISBccmVpbXAKICovCiBRVmFyaWFudCBRR3JhcGhpY3NXS1ZpZXc6Oml0ZW1DaGFu
Z2UoR3JhcGhpY3NJdGVtQ2hhbmdlIGNoYW5nZSwgY29uc3QgUVZhcmlhbnQmIHZhbHVlKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5oIGIvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5oCmluZGV4IGJlYzIyMGIuLjM3
NWE4MGYgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3Zp
ZXcuaAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmgKQEAg
LTcsNiArNywxMCBAQAogI2luY2x1ZGUgPFFHcmFwaGljc1dpZGdldD4KICNpbmNsdWRlICJxd2tw
YWdlLmgiCiAKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUUN1cnNvcjsKK1FUX0VORF9OQU1F
U1BBQ0UKKwogY2xhc3MgUUdyYXBoaWNzV0tWaWV3UHJpdmF0ZTsKIAogV0tTdHJpbmdSZWYgV0tT
dHJpbmdDcmVhdGVXaXRoUVN0cmluZyhRU3RyaW5nIHFTdHJpbmcpOwpAQCAtNjksNiArNzMsOCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgaG92ZXJNb3ZlRXZlbnQoUUdyYXBoaWNz
U2NlbmVIb3ZlckV2ZW50Kik7CiAKKyAgICBRX1NMT1Qgdm9pZCB1cGRhdGVDdXJzb3IoY29uc3Qg
UUN1cnNvciYpOworCiBwcml2YXRlOgogICAgIFFHcmFwaGljc1dLVmlld1ByaXZhdGUqIGQ7CiAg
ICAgZnJpZW5kIGNsYXNzIFFHcmFwaGljc1dLVmlld1ByaXZhdGU7CmRpZmYgLS1naXQgYS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdrcGFnZS5jcHAKaW5kZXggYjZkMjkxNi4uZDhkM2RhYSAxMDA2NDQKLS0tIGEvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2twYWdlLmNwcApAQCAtNTYsNiArNTYsMTEgQEAgdm9pZCBRV0tQYWdlUHJpdmF0ZTo6
aW5pdChjb25zdCBRU2l6ZSYgdmlld3BvcnRTaXplLCBEcmF3aW5nQXJlYVByb3h5KiBwcm94eSkK
ICAgICBwYWdlLT5pbml0aWFsaXplV2ViUGFnZShJbnRTaXplKHZpZXdwb3J0U2l6ZSksIHByb3h5
KTsKIH0KIAordm9pZCBRV0tQYWdlUHJpdmF0ZTo6c2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1
cnNvciYgY3Vyc29yKQoreworICAgIGVtaXQgcS0+Y3Vyc29yQ2hhbmdlZCgqY3Vyc29yLnBsYXRm
b3JtQ3Vyc29yKCkpOworfQorCiB2b2lkIFFXS1BhZ2VQcml2YXRlOjp0b29sVGlwQ2hhbmdlZChj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG5ld1Rvb2x0aXApCiB7CiAgICAgZW1pdCBxLT5z
dGF0dXNCYXJNZXNzYWdlKFFTdHJpbmcobmV3VG9vbHRpcCkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuaCBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2twYWdlLmgKaW5kZXggNjYwZDQ3Yi4uMTU0ZWIxZSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3a3BhZ2UuaAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdr
cGFnZS5oCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2UuaD4KICNp
bmNsdWRlIDxXZWJLaXQyL1dLUGFnZU5hbWVzcGFjZS5oPgogCitjbGFzcyBRQ3Vyc29yOwogY2xh
c3MgUVdLR3JhcGhpY3NXaWRnZXQ7CiBjbGFzcyBRV0tQYWdlUHJpdmF0ZTsKIApAQCAtNjAsNiAr
NjEsNyBAQCBwdWJsaWM6CiAgICAgUV9TSUdOQUwgdm9pZCBpbml0aWFsTGF5b3V0Q29tcGxldGVk
KCk7CiAgICAgUV9TSUdOQUwgdm9pZCB1cmxDaGFuZ2VkKGNvbnN0IFFVcmwmKTsKICAgICBRX1NJ
R05BTCB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKTsKKyAgICBRX1NJR05B
TCB2b2lkIGN1cnNvckNoYW5nZWQoY29uc3QgUUN1cnNvciYpOwogCiBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCB0aW1lckV2ZW50KFFUaW1lckV2ZW50Kik7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmggYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFn
ZV9wLmgKaW5kZXggMGRlZGEzNC4uOTAzYmExZSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3a3BhZ2VfcC5oCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2tw
YWdlX3AuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkRXhpdCgpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkUmV2aXZlKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9pZCB0YWtl
Rm9jdXMoYm9vbCBkaXJlY3Rpb24pIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdl
ZChjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJik7CiAKLS0gCjEuNi41Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64566</attachid>
            <date>2010-08-17 02:32:47 -0700</date>
            <delta_ts>2010-08-17 02:43:46 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>0001-Qt-Use-LAZY_NATIVE_CURSOR.patch</filename>
            <type>text/plain</type>
            <size>23252</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">RnJvbSAwZTk2YjQ5NmZkYjdjMDZkMTc1MTg4YjAyN2I4MTZiYWJhYjBkM2ZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBCYWxhenMgS2VsZW1lbiA8a2JAaW5mLnUtc3plZ2VkLmh1PgpE
YXRlOiBUdWUsIDE3IEF1ZyAyMDEwIDExOjI5OjM4ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gW1F0
XSBVc2UgTEFaWV9OQVRJVkVfQ1VSU09SCgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAyOCArKwogV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaCAg
ICAgICAgICAgICAgICAgICAgfCAgICA2ICstCiBXZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0
LmNwcCAgICAgICAgICAgICB8ICA0NDAgKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIFdlYkNv
cmUvcGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaCAgICAgICAgIHwgICAxMSArLQogV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAgICAgICAgICAgICAgfCAgICA4ICstCiBXZWJLaXQv
cXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKwogV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCAgfCAgICA3ICstCiBXZWJLaXQyL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKysKIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3ZpZXcuY3BwIHwgICAgOCArCiBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmggICB8ICAgIDYgKwogV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3a3BhZ2UuY3BwICAgICAgICAgfCAgICA3ICsKIFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2twYWdlLmggICAgICAgICAgIHwgICAgMiArCiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXdrcGFnZV9wLmggICAgICAgICB8ICAgIDIgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDIz
NyBpbnNlcnRpb25zKCspLCAzMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZjhhOTFiLi5hOGJjMjg4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDEwLTA4LTE2ICBCYWxhenMgS2VsZW1lbiAgPGtiQGluZi51LXN6ZWdlZC5o
dT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRd
IFVzZSBMQVpZX05BVElWRV9DVVJTT1IKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDQwNjIKKworICAgICAgICBObyBmdW5jdGlvbmFsIGNoYW5nZSBz
byBuZXcgdGVzdHMuCisKKyAgICAgICAgQ2hhbmdlIEN1cnNvciBiZWhhdmlvdXIgdG8gbWF0Y2gg
dGhlIExBWllfTkFUSVZFX0NVUlNPUiBwb2xpY3kuCisgICAgICAgIFByb3BhZ2F0ZSB0aGUgc2V0
Q3Vyc29yIGNhbGxiYWNrIHRvIHRoZSBQYWdlQ2xpZW50IHZpYSB0aGUgSG9zdFdpbmRvdyBpbnN0
ZWFkIG9mIHByZWFzc3VtaW5nCisgICAgICAgIHRoZSBjb25jcmV0ZSB0eXBlIG9mIHRoZSBDaHJv
bWVDbGllbnQgKHdoYXQgd2FzIGdlbmVyYWxseSB3cm9uZyBhbmQgYWN0dWFsbHkgaW5jb21wYXRp
YmxlIHdpdGggV2ViS2l0MikuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9DdXJzb3IuaDogVHlwZWRl
ZiBQbGF0Zm9ybUN1cnNvciB0byBiZSBhIFFDdXJzb3IqIHRvIGJlIGFibGUgY3JlYXRlIGl0IGR5
bmFtaWNhbGx5LgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yOjpDdXJzb3IpOiBSZW1vdmUgdGhl
IGlmZGVmIGZvciBRdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DdXJzb3JRdC5jcHA6IFJlbW92
ZSB0aGUgQ3Vyc29ycyBjbGFzcyBzaW5jZSB3ZSBoYXZlIHRoZSBzdGF0aWMgY3Vyc29yIGluc3Rh
bmNlcworICAgICAgICBmb3IgdGhlIGNvbW1vbiBjdXJzb3IgdHlwZXMgaW4gQ3Vyc29yLmNwcC4g
TW92ZSB0aGUgbG9naWMgdGhhdCBtYXBzIHRoZSBjdXJzb3IgdHlwZXMgdG8KKyAgICAgICAgUUN1
cnNvciBpbnN0YW5jZXMgaW50byBlbnN1cmVQbGF0Zm9ybUN1cnNvci4KKyAgICAgICAgKFdlYkNv
cmU6OkN1cnNvcjo6Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvcjo6b3BlcmF0b3I9
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUN1c3RvbUN1cnNvcik6CisgICAgICAgIChXZWJD
b3JlOjpDdXJzb3I6OmVuc3VyZVBsYXRmb3JtQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9RV2ViUGFnZUNsaWVudC5oOgorICAgICAgICAoUVdlYlBhZ2VDbGllbnQ6OnNldEN1cnNvcik6
IEFkanVzdCB0byB0aGUgUGxhdGZvcm1DdXJzb3IgY2hhbmdlLgorICAgICAgICAqIHBsYXRmb3Jt
L3F0L1dpZGdldFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6c2V0Q3Vyc29yKTog
UHJvcGFnZXRlIHRoZSBjYWxsYmFjayBmb3J3YXJkIHRocm91Z2ggSG9zdFdpbmRvdy4KKwogMjAx
MC0wOC0xNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9DdXJzb3IuaCBiL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmgKaW5kZXggNWU1NDdlZi4u
MzEzNjgwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL0N1cnNvci5oCkBAIC02Miw3ICs2Miw3IEBAIHR5cGVkZWYgc3RydWN0IEhJ
Q09OX18gKkhJQ09OOwogdHlwZWRlZiBISUNPTiBIQ1VSU09SOwogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShXSU4pIHx8IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JN
KFdJTikgfHwgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQog
I2RlZmluZSBXVEZfVVNFX0xBWllfTkFUSVZFX0NVUlNPUiAxCiAjZW5kaWYKIApAQCAtODgsNyAr
ODgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgdHlw
ZWRlZiBjb25zdCBjaGFyKiBQbGF0Zm9ybUN1cnNvcjsKICNlbGlmIFBMQVRGT1JNKFFUKSAmJiAh
ZGVmaW5lZChRVF9OT19DVVJTT1IpCi0gICAgdHlwZWRlZiBRQ3Vyc29yIFBsYXRmb3JtQ3Vyc29y
OworICAgIHR5cGVkZWYgUUN1cnNvciogUGxhdGZvcm1DdXJzb3I7CiAjZWxpZiBQTEFURk9STShX
WCkKICAgICB0eXBlZGVmIHd4Q3Vyc29yKiBQbGF0Zm9ybUN1cnNvcjsKICNlbGlmIFBMQVRGT1JN
KENIUk9NSVVNKQpAQCAtMTUxLDcgKzE1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgc3RhdGljIGNvbnN0IEN1cnNvciYgZnJvbVR5cGUoQ3Vyc29yOjpUeXBlKTsKIAogICAgICAg
ICBDdXJzb3IoKQotI2lmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKEVGTCkKKyNpZiAhUExB
VEZPUk0oRUZMKQogICAgICAgICAgICAgOiBtX3BsYXRmb3JtQ3Vyc29yKDApCiAjZW5kaWYKICAg
ICAgICAgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DdXJzb3JRdC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0LmNwcAppbmRleCA2MDE3ZGFhLi5iNGZlODViIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL3F0L0N1cnNvclF0LmNwcApAQCAtMyw2ICszLDcgQEAKICAqIENvcHlyaWdodCAo
QykgMjAwNiBHZW9yZ2UgU3RhaWtvcyA8c3RhaWtvc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChD
KSAyMDA2IENoYXJsZXMgU2FtdWVscyA8Y2hhcmxlc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQKICAqCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKQEAgLTQzLDMyOSArNDQsMTYwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3Vyc29y
OjpDdXJzb3IoUGxhdGZvcm1DdXJzb3IgcCkKLSAgICA6IG1fcGxhdGZvcm1DdXJzb3IocCkKLXsK
LX0KLQogQ3Vyc29yOjpDdXJzb3IoY29uc3QgQ3Vyc29yJiBvdGhlcikKLSAgICA6IG1fcGxhdGZv
cm1DdXJzb3Iob3RoZXIubV9wbGF0Zm9ybUN1cnNvcikKKyAgICA6IG1fdHlwZShvdGhlci5tX3R5
cGUpCisgICAgLCBtX2ltYWdlKG90aGVyLm1faW1hZ2UpCisgICAgLCBtX2hvdFNwb3Qob3RoZXIu
bV9ob3RTcG90KQorICAgICwgbV9wbGF0Zm9ybUN1cnNvcihvdGhlci5tX3BsYXRmb3JtQ3Vyc29y
KQogewogfQogCiBDdXJzb3I6On5DdXJzb3IoKQogewotfQotCi1DdXJzb3I6OkN1cnNvcihJbWFn
ZSogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQotewotI2lmbmRlZiBRVF9OT19DVVJT
T1IKLSAgICBJbnRQb2ludCBlZmZlY3RpdmVIb3RTcG90ID0gZGV0ZXJtaW5lSG90U3BvdChpbWFn
ZSwgaG90U3BvdCk7Ci0gICAgbV9wbGF0Zm9ybUN1cnNvciA9IFFDdXJzb3IoKihpbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSksIGVmZmVjdGl2ZUhvdFNwb3QueCgpLCBlZmZlY3Rp
dmVIb3RTcG90LnkoKSk7Ci0jZW5kaWYKKyAgICBkZWxldGUgbV9wbGF0Zm9ybUN1cnNvcjsKIH0K
IAogQ3Vyc29yJiBDdXJzb3I6Om9wZXJhdG9yPShjb25zdCBDdXJzb3ImIG90aGVyKQogeworICAg
IG1fdHlwZSA9IG90aGVyLm1fdHlwZTsKKyAgICBtX2ltYWdlID0gb3RoZXIubV9pbWFnZTsKKyAg
ICBtX2hvdFNwb3QgPSBvdGhlci5tX2hvdFNwb3Q7CiAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG90
aGVyLm1fcGxhdGZvcm1DdXJzb3I7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1uYW1lc3BhY2Ug
ewotCi0vLyBGSVhNRTogc3RhdGljIGRlbGV0ZXIKLWNsYXNzIEN1cnNvcnMgOiBwdWJsaWMgTm9u
Y29weWFibGUgewotcHJvdGVjdGVkOgotICAgIEN1cnNvcnMoKQorc3RhdGljIFFDdXJzb3IqIGNy
ZWF0ZUN1c3RvbUN1cnNvcihJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQor
ewogI2lmbmRlZiBRVF9OT19DVVJTT1IKLSAgICAgICAgOiBDcm9zc0N1cnNvcihRdDo6Q3Jvc3ND
dXJzb3IpCi0gICAgICAgICwgTW92ZUN1cnNvcihRdDo6U2l6ZUFsbEN1cnNvcikKLSAgICAgICAg
LCBQb2ludGVyQ3Vyc29yKFF0OjpBcnJvd0N1cnNvcikKLSAgICAgICAgLCBQb2ludGluZ0hhbmRD
dXJzb3IoUXQ6OlBvaW50aW5nSGFuZEN1cnNvcikKLSAgICAgICAgLCBJQmVhbUN1cnNvcihRdDo6
SUJlYW1DdXJzb3IpCi0gICAgICAgICwgV2FpdEN1cnNvcihRdDo6V2FpdEN1cnNvcikKLSAgICAg
ICAgLCBXaGF0c1RoaXNDdXJzb3IoUXQ6OldoYXRzVGhpc0N1cnNvcikKLSAgICAgICAgLCBTaXpl
SG9yQ3Vyc29yKFF0OjpTaXplSG9yQ3Vyc29yKQotICAgICAgICAsIFNpemVWZXJDdXJzb3IoUXQ6
OlNpemVWZXJDdXJzb3IpCi0gICAgICAgICwgU2l6ZUZEaWFnQ3Vyc29yKFF0OjpTaXplRkRpYWdD
dXJzb3IpCi0gICAgICAgICwgU2l6ZUJEaWFnQ3Vyc29yKFF0OjpTaXplQkRpYWdDdXJzb3IpCi0g
ICAgICAgICwgU3BsaXRIQ3Vyc29yKFF0OjpTcGxpdEhDdXJzb3IpCi0gICAgICAgICwgU3BsaXRW
Q3Vyc29yKFF0OjpTcGxpdFZDdXJzb3IpCi0gICAgICAgICwgTm9Ecm9wQ3Vyc29yKFF0OjpGb3Ji
aWRkZW5DdXJzb3IpCi0gICAgICAgICwgQmxhbmtDdXJzb3IoUXQ6OkJsYW5rQ3Vyc29yKQotICAg
ICAgICAsIFpvb21JbkN1cnNvcihRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJr
aXQvcmVzb3VyY2VzL3pvb21JbkN1cnNvci5wbmciKSksIDcsIDcpKQotICAgICAgICAsIFpvb21P
dXRDdXJzb3IoUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNl
cy96b29tT3V0Q3Vyc29yLnBuZyIpKSwgNywgNykpCi0gICAgICAgICwgVmVydGljYWxUZXh0Q3Vy
c29yKFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMvdmVy
dGljYWxUZXh0Q3Vyc29yLnBuZyIpKSwgNywgNykpCi0gICAgICAgICwgQ2VsbEN1cnNvcihRQ3Vy
c29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL2NlbGxDdXJzb3Iu
cG5nIikpLCA3LCA3KSkKLSAgICAgICAgLCBDb250ZXh0TWVudUN1cnNvcihRQ3Vyc29yKFFQaXht
YXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL2NvbnRleHRNZW51Q3Vyc29yLnBu
ZyIpKSwgMywgMikpCi0gICAgICAgICwgQ29weUN1cnNvcihRQ3Vyc29yKFFQaXhtYXAoUUxhdGlu
MVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL2NvcHlDdXJzb3IucG5nIikpLCAzLCAyKSkKLSAg
ICAgICAgLCBQcm9ncmVzc0N1cnNvcihRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93
ZWJraXQvcmVzb3VyY2VzL3Byb2dyZXNzQ3Vyc29yLnBuZyIpKSwgMywgMikpCi0gICAgICAgICwg
QWxpYXNDdXJzb3IoUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291
cmNlcy9hbGlhc0N1cnNvci5wbmciKSksIDExLCAzKSkKLQorICAgIEludFBvaW50IGVmZmVjdGl2
ZUhvdFNwb3QgPSBkZXRlcm1pbmVIb3RTcG90KGltYWdlLCBob3RTcG90KTsKKyAgICByZXR1cm4g
bmV3IFFDdXJzb3IoKihpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSksIGVmZmVj
dGl2ZUhvdFNwb3QueCgpLCBlZmZlY3RpdmVIb3RTcG90LnkoKSk7CisjZWxzZQorICAgIHJldHVy
biAwOwogI2VuZGlmCi0gICAgewotICAgIH0KLQotICAgIH5DdXJzb3JzKCkKLSAgICB7Ci0gICAg
fQotCi1wdWJsaWM6Ci0gICAgc3RhdGljIEN1cnNvcnMqIHNlbGYoKTsKLSAgICBzdGF0aWMgQ3Vy
c29ycyogc19zZWxmOwotCi0gICAgQ3Vyc29yIENyb3NzQ3Vyc29yOwotICAgIEN1cnNvciBNb3Zl
Q3Vyc29yOwotICAgIEN1cnNvciBQb2ludGVyQ3Vyc29yOwotICAgIEN1cnNvciBQb2ludGluZ0hh
bmRDdXJzb3I7Ci0gICAgQ3Vyc29yIElCZWFtQ3Vyc29yOwotICAgIEN1cnNvciBXYWl0Q3Vyc29y
OwotICAgIEN1cnNvciBXaGF0c1RoaXNDdXJzb3I7Ci0gICAgQ3Vyc29yIFNpemVIb3JDdXJzb3I7
Ci0gICAgQ3Vyc29yIFNpemVWZXJDdXJzb3I7Ci0gICAgQ3Vyc29yIFNpemVGRGlhZ0N1cnNvcjsK
LSAgICBDdXJzb3IgU2l6ZUJEaWFnQ3Vyc29yOwotICAgIEN1cnNvciBTcGxpdEhDdXJzb3I7Ci0g
ICAgQ3Vyc29yIFNwbGl0VkN1cnNvcjsKLSAgICBDdXJzb3IgTm9Ecm9wQ3Vyc29yOwotICAgIEN1
cnNvciBCbGFua0N1cnNvcjsKLSAgICBDdXJzb3IgWm9vbUluQ3Vyc29yOwotICAgIEN1cnNvciBa
b29tT3V0Q3Vyc29yOwotICAgIEN1cnNvciBWZXJ0aWNhbFRleHRDdXJzb3I7Ci0gICAgQ3Vyc29y
IENlbGxDdXJzb3I7Ci0gICAgQ3Vyc29yIENvbnRleHRNZW51Q3Vyc29yOwotICAgIEN1cnNvciBD
b3B5Q3Vyc29yOwotICAgIEN1cnNvciBQcm9ncmVzc0N1cnNvcjsKLSAgICBDdXJzb3IgQWxpYXND
dXJzb3I7Ci19OwotCi1DdXJzb3JzKiBDdXJzb3JzOjpzX3NlbGYgPSAwOwotCi1DdXJzb3JzKiBD
dXJzb3JzOjpzZWxmKCkKLXsKLSAgICBpZiAoIXNfc2VsZikKLSAgICAgICAgc19zZWxmID0gbmV3
IEN1cnNvcnMoKTsKLQotICAgIHJldHVybiBzX3NlbGY7Ci19Ci0KLX0KLQotY29uc3QgQ3Vyc29y
JiBwb2ludGVyQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5Qb2ludGVy
Q3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIG1vdmVDdXJzb3IoKQotewotICAgIHJldHVybiBD
dXJzb3JzOjpzZWxmKCktPk1vdmVDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgY3Jvc3NDdXJz
b3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPkNyb3NzQ3Vyc29yOwotfQotCi1j
b25zdCBDdXJzb3ImIGhhbmRDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCkt
PlBvaW50aW5nSGFuZEN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBpQmVhbUN1cnNvcigpCi17
Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+SUJlYW1DdXJzb3I7CiB9CiAKLWNvbnN0IEN1
cnNvciYgd2FpdEN1cnNvcigpCit2b2lkIEN1cnNvcjo6ZW5zdXJlUGxhdGZvcm1DdXJzb3IoKSBj
b25zdAogewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPldhaXRDdXJzb3I7Ci19Ci0KLWNv
bnN0IEN1cnNvciYgaGVscEN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+
V2hhdHNUaGlzQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIGVhc3RSZXNpemVDdXJzb3IoKQot
ewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlNpemVIb3JDdXJzb3I7Ci19Ci0KLWNvbnN0
IEN1cnNvciYgbm9ydGhSZXNpemVDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxm
KCktPlNpemVWZXJDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgbm9ydGhFYXN0UmVzaXplQ3Vy
c29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5TaXplQkRpYWdDdXJzb3I7Ci19
Ci0KLWNvbnN0IEN1cnNvciYgbm9ydGhXZXN0UmVzaXplQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4g
Q3Vyc29yczo6c2VsZigpLT5TaXplRkRpYWdDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgc291
dGhSZXNpemVDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlNpemVWZXJD
dXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgc291dGhFYXN0UmVzaXplQ3Vyc29yKCkKLXsKLSAg
ICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5TaXplRkRpYWdDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1
cnNvciYgc291dGhXZXN0UmVzaXplQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2Vs
ZigpLT5TaXplQkRpYWdDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgd2VzdFJlc2l6ZUN1cnNv
cigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+U2l6ZUhvckN1cnNvcjsKLX0KLQot
Y29uc3QgQ3Vyc29yJiBub3J0aFNvdXRoUmVzaXplQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vy
c29yczo6c2VsZigpLT5TaXplVmVyQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIGVhc3RXZXN0
UmVzaXplQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5TaXplSG9yQ3Vy
c29yOwotfQotCi1jb25zdCBDdXJzb3ImIG5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNvcigp
Ci17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+U2l6ZUJEaWFnQ3Vyc29yOwotfQotCi1j
b25zdCBDdXJzb3ImIG5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0
dXJuIEN1cnNvcnM6OnNlbGYoKS0+U2l6ZUZEaWFnQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3Im
IGNvbHVtblJlc2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+U3Bs
aXRIQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIHJvd1Jlc2l6ZUN1cnNvcigpCi17Ci0gICAg
cmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+U3BsaXRWQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3Im
IG1pZGRsZVBhbm5pbmdDdXJzb3IoKQotewotICAgIHJldHVybiBtb3ZlQ3Vyc29yKCk7Ci19Ci0K
LWNvbnN0IEN1cnNvciYgZWFzdFBhbm5pbmdDdXJzb3IoKQotewotICAgIHJldHVybiBlYXN0UmVz
aXplQ3Vyc29yKCk7Ci19Ci0KLWNvbnN0IEN1cnNvciYgbm9ydGhQYW5uaW5nQ3Vyc29yKCkKLXsK
LSAgICByZXR1cm4gbm9ydGhSZXNpemVDdXJzb3IoKTsKLX0KLQotY29uc3QgQ3Vyc29yJiBub3J0
aEVhc3RQYW5uaW5nQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gbm9ydGhFYXN0UmVzaXplQ3Vyc29y
KCk7Ci19Ci0KLWNvbnN0IEN1cnNvciYgbm9ydGhXZXN0UGFubmluZ0N1cnNvcigpCi17Ci0gICAg
cmV0dXJuIG5vcnRoV2VzdFJlc2l6ZUN1cnNvcigpOwotfQotCi1jb25zdCBDdXJzb3ImIHNvdXRo
UGFubmluZ0N1cnNvcigpCi17Ci0gICAgcmV0dXJuIHNvdXRoUmVzaXplQ3Vyc29yKCk7Ci19Ci0K
LWNvbnN0IEN1cnNvciYgc291dGhFYXN0UGFubmluZ0N1cnNvcigpCi17Ci0gICAgcmV0dXJuIHNv
dXRoRWFzdFJlc2l6ZUN1cnNvcigpOwotfQotCi1jb25zdCBDdXJzb3ImIHNvdXRoV2VzdFBhbm5p
bmdDdXJzb3IoKQotewotICAgIHJldHVybiBzb3V0aFdlc3RSZXNpemVDdXJzb3IoKTsKLX0KLQot
Y29uc3QgQ3Vyc29yJiB3ZXN0UGFubmluZ0N1cnNvcigpCi17Ci0gICAgcmV0dXJuIHdlc3RSZXNp
emVDdXJzb3IoKTsKLX0KLQotY29uc3QgQ3Vyc29yJiB2ZXJ0aWNhbFRleHRDdXJzb3IoKQotewot
ICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlZlcnRpY2FsVGV4dEN1cnNvcjsKLX0KLQotY29u
c3QgQ3Vyc29yJiBjZWxsQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5D
ZWxsQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIGNvbnRleHRNZW51Q3Vyc29yKCkKLXsKLSAg
ICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5Db250ZXh0TWVudUN1cnNvcjsKLX0KLQotY29uc3Qg
Q3Vyc29yJiBub0Ryb3BDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPk5v
RHJvcEN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBjb3B5Q3Vyc29yKCkKLXsKLSAgICByZXR1
cm4gQ3Vyc29yczo6c2VsZigpLT5Db3B5Q3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIHByb2dy
ZXNzQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5Qcm9ncmVzc0N1cnNv
cjsKLX0KLQotY29uc3QgQ3Vyc29yJiBhbGlhc0N1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNv
cnM6OnNlbGYoKS0+QWxpYXNDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgbm9uZUN1cnNvcigp
Ci17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+QmxhbmtDdXJzb3I7Ci19Ci0KLWNvbnN0
IEN1cnNvciYgbm90QWxsb3dlZEN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYo
KS0+Tm9Ecm9wQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIHpvb21JbkN1cnNvcigpCi17Ci0g
ICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+Wm9vbUluQ3Vyc29yOwotfQotCi1jb25zdCBDdXJz
b3ImIHpvb21PdXRDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlpvb21P
dXRDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgZ3JhYkN1cnNvcigpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5Qb2ludGVyQ3Vyc29yOwot
fQotCi1jb25zdCBDdXJzb3ImIGdyYWJiaW5nQ3Vyc29yKCkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlBvaW50ZXJDdXJzb3I7CisjaWZuZGVm
IFFUX05PX0NVUlNPUgorICAgIGlmIChtX3BsYXRmb3JtQ3Vyc29yKQorICAgICAgICByZXR1cm47
CisKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgUG9pbnRlcjoKKyAgICAgICAgbV9w
bGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpBcnJvd0N1cnNvcik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ3Jvc3M6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1
cnNvcihRdDo6Q3Jvc3NDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhhbmQ6Cisg
ICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6UG9pbnRpbmdIYW5kQ3Vy
c29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJQmVhbToKKyAgICAgICAgbV9wbGF0Zm9y
bUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpJQmVhbUN1cnNvcik7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgV2FpdDoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0
OjpXYWl0Q3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIZWxwOgorICAgICAgICBt
X3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OldoYXRzVGhpc0N1cnNvcik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRWFzdFJlc2l6ZToKKyAgICBjYXNlIEVhc3RQYW5uaW5nOgor
ICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVIb3JDdXJzb3Ip
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vcnRoUmVzaXplOgorICAgIGNhc2UgTm9ydGhQ
YW5uaW5nOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVW
ZXJDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vcnRoRWFzdFJlc2l6ZToKKyAg
ICBjYXNlIE5vcnRoRWFzdFBhbm5pbmc6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcg
UUN1cnNvcihRdDo6U2l6ZUJEaWFnQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBO
b3J0aFdlc3RSZXNpemU6CisgICAgY2FzZSBOb3J0aFdlc3RQYW5uaW5nOgorICAgICAgICBtX3Bs
YXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVGRGlhZ0N1cnNvcik7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgU291dGhSZXNpemU6CisgICAgY2FzZSBTb3V0aFBhbm5pbmc6Cisg
ICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U2l6ZVZlckN1cnNvcik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU291dGhFYXN0UmVzaXplOgorICAgIGNhc2UgU291
dGhFYXN0UGFubmluZzoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0
OjpTaXplRkRpYWdDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNvdXRoV2VzdFJl
c2l6ZToKKyAgICBjYXNlIFNvdXRoV2VzdFBhbm5pbmc6CisgICAgICAgIG1fcGxhdGZvcm1DdXJz
b3IgPSBuZXcgUUN1cnNvcihRdDo6U2l6ZUJEaWFnQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBXZXN0UmVzaXplOgorICAgIGNhc2UgV2VzdFBhbm5pbmc6CisgICAgICAgIG1fcGxh
dGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U2l6ZUhvckN1cnNvcik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTm9ydGhTb3V0aFJlc2l6ZToKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNv
ciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplVmVyQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBFYXN0V2VzdFJlc2l6ZToKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vy
c29yKFF0OjpTaXplSG9yQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb3J0aEVh
c3RTb3V0aFdlc3RSZXNpemU6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNv
cihRdDo6U2l6ZUJEaWFnQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb3J0aFdl
c3RTb3V0aEVhc3RSZXNpemU6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNv
cihRdDo6U2l6ZUZEaWFnQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2x1bW5S
ZXNpemU6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U3BsaXRI
Q3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3dSZXNpemU6CisgICAgICAgIG1f
cGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U3BsaXRWQ3Vyc29yKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBNaWRkbGVQYW5uaW5nOgorICAgIGNhc2UgTW92ZToKKyAgICAgICAg
bV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplQWxsQ3Vyc29yKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBOb25lOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3
IFFDdXJzb3IoUXQ6OkJsYW5rQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb0Ry
b3A6CisgICAgY2FzZSBOb3RBbGxvd2VkOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3
IFFDdXJzb3IoUXQ6OkZvcmJpZGRlbkN1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
R3JhYjoKKyAgICBjYXNlIEdyYWJiaW5nOgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
ICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OkFycm93Q3Vyc29yKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBWZXJ0aWNhbFRleHQ6CisgICAgICAgIG1fcGxhdGZvcm1D
dXJzb3IgPSBuZXcgUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291
cmNlcy92ZXJ0aWNhbFRleHRDdXJzb3IucG5nIikpLCA3LCA3KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDZWxsOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUVBp
eG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMvY2VsbEN1cnNvci5wbmciKSks
IDcsIDcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbnRleHRNZW51OgorICAgICAgICBt
X3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dl
YmtpdC9yZXNvdXJjZXMvY29udGV4dE1lbnVDdXJzb3IucG5nIikpLCAzLCAyKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBbGlhczoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBR
Q3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL2FsaWFzQ3Vy
c29yLnBuZyIpKSwgMTEsIDMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFByb2dyZXNzOgor
ICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3Ry
aW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMvcHJvZ3Jlc3NDdXJzb3IucG5nIikpLCAzLCAyKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDb3B5OgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0g
bmV3IFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMvY29w
eUN1cnNvci5wbmciKSksIDMsIDIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFpvb21JbjoK
KyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0
cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL3pvb21JbkN1cnNvci5wbmciKSksIDcsIDcpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFpvb21PdXQ6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3Ig
PSBuZXcgUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy96
b29tT3V0Q3Vyc29yLnBuZyIpKSwgNywgNyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3Vz
dG9tOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlQ3VzdG9tQ3Vyc29yKG1faW1h
Z2UuZ2V0KCksIG1faG90U3BvdCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyNlbmRpZgogfQogCiB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1FXZWJQYWdlQ2xpZW50LmggYi9XZWJDb3JlL3BsYXRm
b3JtL3F0L1FXZWJQYWdlQ2xpZW50LmgKaW5kZXggYTBhMDIxOC4uNWMyNDg3OCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RV2ViUGFnZUNsaWVudC5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBRV2Vi
UGFnZUNsaWVudF9oCiAKICNpZm5kZWYgUVRfTk9fQ1VSU09SCi0jaW5jbHVkZSA8UUN1cnNvcj4K
KyNpbmNsdWRlICJDdXJzb3IuaCIKICNlbmRpZgogCiAjaW5jbHVkZSA8UVJlY3Q+CkBAIC03MCwx
MiArNzAsMTMgQEAgcHVibGljOgogICAgICAgICB1cGRhdGVDdXJzb3IobV9sYXN0Q3Vyc29yKTsK
ICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBzZXRDdXJzb3IoY29uc3QgUUN1cnNvciYgY3Vyc29y
KQorICAgIGlubGluZSB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImIGN1cnNv
cikKICAgICB7Ci0gICAgICAgIG1fbGFzdEN1cnNvciA9IGN1cnNvcjsKLSAgICAgICAgaWYgKCFj
dXJzb3IuYml0bWFwKCkgJiYgY3Vyc29yLnNoYXBlKCkgPT0gdGhpcy0+Y3Vyc29yKCkuc2hhcGUo
KSkKKyAgICAgICAgUUN1cnNvciBjdXJzb3JJbXBsID0gKmN1cnNvci5wbGF0Zm9ybUN1cnNvcigp
OworICAgICAgICBtX2xhc3RDdXJzb3IgPSBjdXJzb3JJbXBsOworICAgICAgICBpZiAoIWN1cnNv
ckltcGwuYml0bWFwKCkgJiYgY3Vyc29ySW1wbC5zaGFwZSgpID09IHRoaXMtPmN1cnNvcigpLnNo
YXBlKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHVwZGF0ZUN1cnNvcihjdXJzb3Ip
OworICAgICAgICB1cGRhdGVDdXJzb3IoY3Vyc29ySW1wbCk7CiAgICAgfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvV2lkZ2V0UXQuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9XaWRnZXRRdC5jcHAKaW5kZXggMDkwM2I2ZS4uZTY0ZDY1NSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9XaWRnZXRRdC5jcHAKQEAgLTc4LDEwICs3OCwxMCBAQCB2b2lkIFdpZGdldDo6c2V0Rm9jdXMo
Ym9vbCBmb2N1c2VkKQogdm9pZCBXaWRnZXQ6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNv
cikKIHsKICNpZm5kZWYgUVRfTk9fQ1VSU09SCi0gICAgUVdlYlBhZ2VDbGllbnQqIHBhZ2VDbGll
bnQgPSByb290KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7Ci0KLSAgICBp
ZiAocGFnZUNsaWVudCkKLSAgICAgICAgcGFnZUNsaWVudC0+c2V0Q3Vyc29yKGN1cnNvci5pbXBs
KCkpOworICAgIFNjcm9sbFZpZXcqIHZpZXcgPSByb290KCk7CisgICAgaWYgKCF2aWV3KQorICAg
ICAgICByZXR1cm47CisgICAgdmlldy0+aG9zdFdpbmRvdygpLT5zZXRDdXJzb3IoY3Vyc29yKTsK
ICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0
L0NoYW5nZUxvZwppbmRleCAyYzk2NGQzLi5mNTliZGM2IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
MC0wOC0xNiAgQmFsYXpzIEtlbGVtZW4gIDxrYkBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBVc2UgTEFaWV9OQVRJ
VkVfQ1VSU09SCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ0MDYyCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2V0Q3Vyc29yKTogSW1wbGVtZW50
ZWQuIFByb3BhZ2V0ZSB0aGUgY2FsbGJhY2sgZm9yd2FyZCB0byB0aGUKKyAgICAgICAgcGxhdGZv
cm0gc3BlY2lmaWMgUGFnZUNsaWVudCAoUVdlYlBhZ2VDTGllbnQpLgorCiAyMDEwLTA4LTE0ICBB
ZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHJvcGFnYXRlIG5hbWUg
Y2hhbmdlIHRvIFF0LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHAKaW5kZXggMGI3N2VhNi4uZDJhNGQ0NCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuY3BwCkBAIC01MzcsOSArNTM3LDEyIEBAIHZvaWQgQ2hyb21lQ2xpZW50
UXQ6OmNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBG
aWxlQ2hvCiAgICAgY2hvb3Nlci0+aWNvbkxvYWRlZChJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMo
ZmlsZW5hbWVzKSk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50UXQ6OnNldEN1cnNvcihjb25zdCBD
dXJzb3ImKQordm9pZCBDaHJvbWVDbGllbnRRdDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vy
c29yKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUVdlYlBhZ2VDbGllbnQqIHBhZ2VD
bGllbnQgPSBwbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICBpZiAoIXBhZ2VDbGllbnQpCisgICAg
ICAgIHJldHVybjsKKyAgICBwYWdlQ2xpZW50LT5zZXRDdXJzb3IoY3Vyc29yKTsKIH0KIAogdm9p
ZCBDaHJvbWVDbGllbnRRdDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZy
YW1lKiBmcmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMzQxYzUxLi4yZTQwOGVhIDEw
MDY0NAotLS0gYS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIyIEBACisyMDEwLTA4LTE2ICBCYWxhenMgS2VsZW1lbiAgPGtiQGluZi51LXN6ZWdl
ZC5odT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UXRdIFVzZSBMQVpZX05BVElWRV9DVVJTT1IKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQwNjIKKworICAgICAgICBJbXBsZW1lbnRlZCBQYWdlQ2xp
ZW50OjpzZXRDdXJzb3IuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3dr
dmlldy5jcHA6IEFkZGVkIHVwZGF0ZUN1cnNvciBzbG90IHRvIGJlIGNvbm5lY3RlZCB0byB0aGUg
UVdLUGFnZTo6c2V0Q3Vyc29yIHNpZ25hbC4KKyAgICAgICAgKFFHcmFwaGljc1dLVmlldzo6UUdy
YXBoaWNzV0tWaWV3KToKKyAgICAgICAgKFFHcmFwaGljc1dLVmlldzo6dXBkYXRlQ3Vyc29yKTog
U2V0cyB0aGUgY3Vyc29yIG9mIHRoZSB3aWRnZXQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9x
dC9xZ3JhcGhpY3N3a3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2Uu
Y3BwOgorICAgICAgICAoUVdLUGFnZVByaXZhdGU6OnNldEN1cnNvcik6IEFkZGVkIGltcGxlbWVu
dGF0aW9uIGZvciBQYWdlQ2xpZW50OjpzZXRDdXJzb3IuIEVtaXR0aW5nIHNpbmdhbCB0aHJvdWdo
IHRoZSBRV0tQYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5oOiBBZGRl
ZCBzZXRDdXJzb3Igc2lnbmFsLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9w
Lmg6CisKIDIwMTAtMDgtMTYgIEpvbiBIb25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4K
IAogICAgICAgICBBbGxvdyBzb21lIHRlc3RzIHRvIHBhc3MgaW4gV2ViS2l0VGVzdFJ1bm5lciBi
ZWZvcmUgU2hhcmVkTWVtb3J5IGFuZApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FncmFwaGljc3drdmlldy5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBo
aWNzd2t2aWV3LmNwcAppbmRleCBmZDBiODZlLi42NTRjYTBmIDEwMDY0NAotLS0gYS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcAorKysgYi9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIldlYlBhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJxd2twYWdlLmgiCiAjaW5jbHVkZSAi
cXdrcGFnZV9wLmgiCisjaW5jbHVkZSA8UUN1cnNvcj4KICNpbmNsdWRlIDxRR3JhcGhpY3NTY2Vu
ZU1vdXNlRXZlbnQ+CiAjaW5jbHVkZSA8UUdyYXBoaWNzVmlldz4KICNpbmNsdWRlIDxRUGFpbnRl
cj4KQEAgLTY0LDYgKzY1LDggQEAgUUdyYXBoaWNzV0tWaWV3OjpRR3JhcGhpY3NXS1ZpZXcoV0tQ
YWdlTmFtZXNwYWNlUmVmIHBhZ2VOYW1lc3BhY2VSZWYsIEJhY2tpbmdTdG8KICAgICBjb25uZWN0
KGQtPnBhZ2UsIFNJR05BTChsb2FkUHJvZ3Jlc3MoaW50KSksIHRoaXMsIFNJR05BTChsb2FkUHJv
Z3Jlc3MoaW50KSkpOwogICAgIGNvbm5lY3QoZC0+cGFnZSwgU0lHTkFMKGluaXRpYWxMYXlvdXRD
b21wbGV0ZWQoKSksIHRoaXMsIFNJR05BTChpbml0aWFsTGF5b3V0Q29tcGxldGVkKCkpKTsKICAg
ICBjb25uZWN0KGQtPnBhZ2UsIFNJR05BTCh1cmxDaGFuZ2VkKGNvbnN0IFFVcmwmKSksIHRoaXMs
IFNJR05BTCh1cmxDaGFuZ2VkKGNvbnN0IFFVcmwmKSkpOworCisgICAgY29ubmVjdChkLT5wYWdl
LCBTSUdOQUwoY3Vyc29yQ2hhbmdlZChjb25zdCBRQ3Vyc29yJikpLCB0aGlzLCBTTE9UKHVwZGF0
ZUN1cnNvcihjb25zdCBRQ3Vyc29yJikpKTsKIH0KIAogUUdyYXBoaWNzV0tWaWV3Ojp+UUdyYXBo
aWNzV0tWaWV3KCkKQEAgLTEzNiw2ICsxMzksMTEgQEAgdm9pZCBRR3JhcGhpY3NXS1ZpZXc6OnN0
b3AoKQogICAgIHBhZ2UoKS0+dHJpZ2dlckFjdGlvbihRV0tQYWdlOjpTdG9wKTsKIH0KIAordm9p
ZCBRR3JhcGhpY3NXS1ZpZXc6OnVwZGF0ZUN1cnNvcihjb25zdCBRQ3Vyc29yJiBjdXJzb3IpCit7
CisgICAgc2V0Q3Vyc29yKGN1cnNvcik7Cit9CisKIC8qISBccmVpbXAKICovCiBRVmFyaWFudCBR
R3JhcGhpY3NXS1ZpZXc6Oml0ZW1DaGFuZ2UoR3JhcGhpY3NJdGVtQ2hhbmdlIGNoYW5nZSwgY29u
c3QgUVZhcmlhbnQmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FncmFwaGljc3drdmlldy5oIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3dr
dmlldy5oCmluZGV4IGJlYzIyMGIuLjM3NWE4MGYgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3ZpZXcuaAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcWdyYXBoaWNzd2t2aWV3LmgKQEAgLTcsNiArNywxMCBAQAogI2luY2x1ZGUgPFFHcmFwaGlj
c1dpZGdldD4KICNpbmNsdWRlICJxd2twYWdlLmgiCiAKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xh
c3MgUUN1cnNvcjsKK1FUX0VORF9OQU1FU1BBQ0UKKwogY2xhc3MgUUdyYXBoaWNzV0tWaWV3UHJp
dmF0ZTsKIAogV0tTdHJpbmdSZWYgV0tTdHJpbmdDcmVhdGVXaXRoUVN0cmluZyhRU3RyaW5nIHFT
dHJpbmcpOwpAQCAtNjksNiArNzMsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQg
aG92ZXJNb3ZlRXZlbnQoUUdyYXBoaWNzU2NlbmVIb3ZlckV2ZW50Kik7CiAKKyAgICBRX1NMT1Qg
dm9pZCB1cGRhdGVDdXJzb3IoY29uc3QgUUN1cnNvciYpOworCiBwcml2YXRlOgogICAgIFFHcmFw
aGljc1dLVmlld1ByaXZhdGUqIGQ7CiAgICAgZnJpZW5kIGNsYXNzIFFHcmFwaGljc1dLVmlld1By
aXZhdGU7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAg
Yi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAKaW5kZXggYjZkMjkxNi4uNWJm
M2Q2OCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCisr
KyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcApAQCAtNTYsNiArNTYsMTMg
QEAgdm9pZCBRV0tQYWdlUHJpdmF0ZTo6aW5pdChjb25zdCBRU2l6ZSYgdmlld3BvcnRTaXplLCBE
cmF3aW5nQXJlYVByb3h5KiBwcm94eSkKICAgICBwYWdlLT5pbml0aWFsaXplV2ViUGFnZShJbnRT
aXplKHZpZXdwb3J0U2l6ZSksIHByb3h5KTsKIH0KIAordm9pZCBRV0tQYWdlUHJpdmF0ZTo6c2V0
Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY3Vyc29yKQoreworI2lmbmRlZiBRVF9OT19D
VVJTT1IKKyAgICBlbWl0IHEtPmN1cnNvckNoYW5nZWQoKmN1cnNvci5wbGF0Zm9ybUN1cnNvcigp
KTsKKyNlbmRpZgorfQorCiB2b2lkIFFXS1BhZ2VQcml2YXRlOjp0b29sVGlwQ2hhbmdlZChjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG5ld1Rvb2x0aXApCiB7CiAgICAgZW1pdCBxLT5zdGF0
dXNCYXJNZXNzYWdlKFFTdHJpbmcobmV3VG9vbHRpcCkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuaCBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2tw
YWdlLmgKaW5kZXggNjYwZDQ3Yi4uMTU0ZWIxZSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3a3BhZ2UuaAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFn
ZS5oCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2UuaD4KICNpbmNs
dWRlIDxXZWJLaXQyL1dLUGFnZU5hbWVzcGFjZS5oPgogCitjbGFzcyBRQ3Vyc29yOwogY2xhc3Mg
UVdLR3JhcGhpY3NXaWRnZXQ7CiBjbGFzcyBRV0tQYWdlUHJpdmF0ZTsKIApAQCAtNjAsNiArNjEs
NyBAQCBwdWJsaWM6CiAgICAgUV9TSUdOQUwgdm9pZCBpbml0aWFsTGF5b3V0Q29tcGxldGVkKCk7
CiAgICAgUV9TSUdOQUwgdm9pZCB1cmxDaGFuZ2VkKGNvbnN0IFFVcmwmKTsKICAgICBRX1NJR05B
TCB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKTsKKyAgICBRX1NJR05BTCB2
b2lkIGN1cnNvckNoYW5nZWQoY29uc3QgUUN1cnNvciYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCB0aW1lckV2ZW50KFFUaW1lckV2ZW50Kik7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdrcGFnZV9wLmggYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9w
LmgKaW5kZXggMGRlZGEzNC4uOTAzYmExZSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3a3BhZ2VfcC5oCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdl
X3AuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkRXhpdCgpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkUmV2aXZlKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNl
dEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9j
dXMoYm9vbCBkaXJlY3Rpb24pIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChj
b25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJik7CiAKLS0gCjEuNi41Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64574</attachid>
            <date>2010-08-17 04:52:57 -0700</date>
            <delta_ts>2010-08-18 07:19:32 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-Qt-Use-LAZY_NATIVE_CURSOR.patch</filename>
            <type>text/plain</type>
            <size>23558</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">RnJvbSBiNmZmNTc0ODgxNWUzOTRlMmZjZDYxNTYyOTlkNjM4ZTg4NzhkOWYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBCYWxhenMgS2VsZW1lbiA8a2JAaW5mLnUtc3plZ2VkLmh1PgpE
YXRlOiBUdWUsIDE3IEF1ZyAyMDEwIDEzOjQ1OjAzICswMjAwClN1YmplY3Q6IFtQQVRDSF0gW1F0
XSBVc2UgTEFaWV9OQVRJVkVfQ1VSU09SCgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAyOCArKwogV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaCAg
ICAgICAgICAgICAgICAgICAgfCAgICA3ICstCiBXZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0
LmNwcCAgICAgICAgICAgICB8ICA0NDQgKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIFdlYkNv
cmUvcGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaCAgICAgICAgIHwgICAxMSArLQogV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAgICAgICAgICAgICAgfCAgICA4ICstCiBXZWJLaXQv
cXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKwogV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCAgfCAgICA3ICstCiBXZWJLaXQyL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKysKIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3ZpZXcuY3BwIHwgICAgOCArCiBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmggICB8ICAgIDYgKwogV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3a3BhZ2UuY3BwICAgICAgICAgfCAgICA3ICsKIFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2twYWdlLmggICAgICAgICAgIHwgICAgMiArCiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXdrcGFnZV9wLmggICAgICAgICB8ICAgIDIgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDI0
MyBpbnNlcnRpb25zKCspLCAzMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZjhhOTFiLi5hOGJjMjg4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDEwLTA4LTE2ICBCYWxhenMgS2VsZW1lbiAgPGtiQGluZi51LXN6ZWdlZC5o
dT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRd
IFVzZSBMQVpZX05BVElWRV9DVVJTT1IKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDQwNjIKKworICAgICAgICBObyBmdW5jdGlvbmFsIGNoYW5nZSBz
byBuZXcgdGVzdHMuCisKKyAgICAgICAgQ2hhbmdlIEN1cnNvciBiZWhhdmlvdXIgdG8gbWF0Y2gg
dGhlIExBWllfTkFUSVZFX0NVUlNPUiBwb2xpY3kuCisgICAgICAgIFByb3BhZ2F0ZSB0aGUgc2V0
Q3Vyc29yIGNhbGxiYWNrIHRvIHRoZSBQYWdlQ2xpZW50IHZpYSB0aGUgSG9zdFdpbmRvdyBpbnN0
ZWFkIG9mIHByZWFzc3VtaW5nCisgICAgICAgIHRoZSBjb25jcmV0ZSB0eXBlIG9mIHRoZSBDaHJv
bWVDbGllbnQgKHdoYXQgd2FzIGdlbmVyYWxseSB3cm9uZyBhbmQgYWN0dWFsbHkgaW5jb21wYXRp
YmxlIHdpdGggV2ViS2l0MikuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9DdXJzb3IuaDogVHlwZWRl
ZiBQbGF0Zm9ybUN1cnNvciB0byBiZSBhIFFDdXJzb3IqIHRvIGJlIGFibGUgY3JlYXRlIGl0IGR5
bmFtaWNhbGx5LgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yOjpDdXJzb3IpOiBSZW1vdmUgdGhl
IGlmZGVmIGZvciBRdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DdXJzb3JRdC5jcHA6IFJlbW92
ZSB0aGUgQ3Vyc29ycyBjbGFzcyBzaW5jZSB3ZSBoYXZlIHRoZSBzdGF0aWMgY3Vyc29yIGluc3Rh
bmNlcworICAgICAgICBmb3IgdGhlIGNvbW1vbiBjdXJzb3IgdHlwZXMgaW4gQ3Vyc29yLmNwcC4g
TW92ZSB0aGUgbG9naWMgdGhhdCBtYXBzIHRoZSBjdXJzb3IgdHlwZXMgdG8KKyAgICAgICAgUUN1
cnNvciBpbnN0YW5jZXMgaW50byBlbnN1cmVQbGF0Zm9ybUN1cnNvci4KKyAgICAgICAgKFdlYkNv
cmU6OkN1cnNvcjo6Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvcjo6b3BlcmF0b3I9
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUN1c3RvbUN1cnNvcik6CisgICAgICAgIChXZWJD
b3JlOjpDdXJzb3I6OmVuc3VyZVBsYXRmb3JtQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9RV2ViUGFnZUNsaWVudC5oOgorICAgICAgICAoUVdlYlBhZ2VDbGllbnQ6OnNldEN1cnNvcik6
IEFkanVzdCB0byB0aGUgUGxhdGZvcm1DdXJzb3IgY2hhbmdlLgorICAgICAgICAqIHBsYXRmb3Jt
L3F0L1dpZGdldFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6c2V0Q3Vyc29yKTog
UHJvcGFnZXRlIHRoZSBjYWxsYmFjayBmb3J3YXJkIHRocm91Z2ggSG9zdFdpbmRvdy4KKwogMjAx
MC0wOC0xNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9DdXJzb3IuaCBiL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmgKaW5kZXggNWU1NDdlZi4u
OWI3N2QxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL0N1cnNvci5oCkBAIC02Miw3ICs2Miw3IEBAIHR5cGVkZWYgc3RydWN0IEhJ
Q09OX18gKkhJQ09OOwogdHlwZWRlZiBISUNPTiBIQ1VSU09SOwogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShXSU4pIHx8IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JN
KFdJTikgfHwgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQog
I2RlZmluZSBXVEZfVVNFX0xBWllfTkFUSVZFX0NVUlNPUiAxCiAjZW5kaWYKIApAQCAtODgsNyAr
ODgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgdHlw
ZWRlZiBjb25zdCBjaGFyKiBQbGF0Zm9ybUN1cnNvcjsKICNlbGlmIFBMQVRGT1JNKFFUKSAmJiAh
ZGVmaW5lZChRVF9OT19DVVJTT1IpCi0gICAgdHlwZWRlZiBRQ3Vyc29yIFBsYXRmb3JtQ3Vyc29y
OworICAgIC8vIERvIG5vdCBuZWVkIHRvIGJlIHNoYXJlZCBidXQgbmVlZCB0byBiZSBjcmVhdGVk
IGR5bmFtaWNhbGx5IHZpYSBlbnN1cmVQbGF0Zm9ybUN1cnNvci4KKyAgICB0eXBlZGVmIFFDdXJz
b3IqIFBsYXRmb3JtQ3Vyc29yOwogI2VsaWYgUExBVEZPUk0oV1gpCiAgICAgdHlwZWRlZiB3eEN1
cnNvciogUGxhdGZvcm1DdXJzb3I7CiAjZWxpZiBQTEFURk9STShDSFJPTUlVTSkKQEAgLTE1MSw3
ICsxNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBDdXJz
b3ImIGZyb21UeXBlKEN1cnNvcjo6VHlwZSk7CiAKICAgICAgICAgQ3Vyc29yKCkKLSNpZiAhUExB
VEZPUk0oUVQpICYmICFQTEFURk9STShFRkwpCisjaWYgIVBMQVRGT1JNKEVGTCkKICAgICAgICAg
ICAgIDogbV9wbGF0Zm9ybUN1cnNvcigwKQogI2VuZGlmCiAgICAgICAgIHsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vcXQvQ3Vyc29yUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9D
dXJzb3JRdC5jcHAKaW5kZXggNjAxN2RhYS4uMjI3YjgwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9DdXJzb3JRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DdXJzb3JR
dC5jcHAKQEAgLTMsNiArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR2VvcmdlIFN0YWlr
b3MgPHN0YWlrb3NAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNiBDaGFybGVzIFNhbXVl
bHMgPGNoYXJsZXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBIb2xnZXIg
SGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDEwIFVuaXZlcnNpdHkgb2Yg
U3plZ2VkCiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00MywzMjkgKzQ0LDE2
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUN1cnNvcjo6Q3Vyc29yKFBsYXRmb3JtQ3Vy
c29yIHApCi0gICAgOiBtX3BsYXRmb3JtQ3Vyc29yKHApCi17Ci19Ci0KIEN1cnNvcjo6Q3Vyc29y
KGNvbnN0IEN1cnNvciYgb3RoZXIpCi0gICAgOiBtX3BsYXRmb3JtQ3Vyc29yKG90aGVyLm1fcGxh
dGZvcm1DdXJzb3IpCisgICAgOiBtX3R5cGUob3RoZXIubV90eXBlKQorICAgICwgbV9pbWFnZShv
dGhlci5tX2ltYWdlKQorICAgICwgbV9ob3RTcG90KG90aGVyLm1faG90U3BvdCkKKyNpZm5kZWYg
UVRfTk9fQ1VSU09SCisgICAgLCBtX3BsYXRmb3JtQ3Vyc29yKG90aGVyLm1fcGxhdGZvcm1DdXJz
b3IgPyBuZXcgUUN1cnNvcigqb3RoZXIubV9wbGF0Zm9ybUN1cnNvcikgIDogMCkKKyNlbmRpZgog
ewogfQogCiBDdXJzb3I6On5DdXJzb3IoKQogewotfQotCi1DdXJzb3I6OkN1cnNvcihJbWFnZSog
aW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQotewogI2lmbmRlZiBRVF9OT19DVVJTT1IK
LSAgICBJbnRQb2ludCBlZmZlY3RpdmVIb3RTcG90ID0gZGV0ZXJtaW5lSG90U3BvdChpbWFnZSwg
aG90U3BvdCk7Ci0gICAgbV9wbGF0Zm9ybUN1cnNvciA9IFFDdXJzb3IoKihpbWFnZS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSksIGVmZmVjdGl2ZUhvdFNwb3QueCgpLCBlZmZlY3RpdmVI
b3RTcG90LnkoKSk7CisgICAgZGVsZXRlIG1fcGxhdGZvcm1DdXJzb3I7CiAjZW5kaWYKIH0KIAog
Q3Vyc29yJiBDdXJzb3I6Om9wZXJhdG9yPShjb25zdCBDdXJzb3ImIG90aGVyKQogewotICAgIG1f
cGxhdGZvcm1DdXJzb3IgPSBvdGhlci5tX3BsYXRmb3JtQ3Vyc29yOwotICAgIHJldHVybiAqdGhp
czsKLX0KLQotbmFtZXNwYWNlIHsKLQotLy8gRklYTUU6IHN0YXRpYyBkZWxldGVyCi1jbGFzcyBD
dXJzb3JzIDogcHVibGljIE5vbmNvcHlhYmxlIHsKLXByb3RlY3RlZDoKLSAgICBDdXJzb3JzKCkK
KyAgICBtX3R5cGUgPSBvdGhlci5tX3R5cGU7CisgICAgbV9pbWFnZSA9IG90aGVyLm1faW1hZ2U7
CisgICAgbV9ob3RTcG90ID0gb3RoZXIubV9ob3RTcG90OwogI2lmbmRlZiBRVF9OT19DVVJTT1IK
LSAgICAgICAgOiBDcm9zc0N1cnNvcihRdDo6Q3Jvc3NDdXJzb3IpCi0gICAgICAgICwgTW92ZUN1
cnNvcihRdDo6U2l6ZUFsbEN1cnNvcikKLSAgICAgICAgLCBQb2ludGVyQ3Vyc29yKFF0OjpBcnJv
d0N1cnNvcikKLSAgICAgICAgLCBQb2ludGluZ0hhbmRDdXJzb3IoUXQ6OlBvaW50aW5nSGFuZEN1
cnNvcikKLSAgICAgICAgLCBJQmVhbUN1cnNvcihRdDo6SUJlYW1DdXJzb3IpCi0gICAgICAgICwg
V2FpdEN1cnNvcihRdDo6V2FpdEN1cnNvcikKLSAgICAgICAgLCBXaGF0c1RoaXNDdXJzb3IoUXQ6
OldoYXRzVGhpc0N1cnNvcikKLSAgICAgICAgLCBTaXplSG9yQ3Vyc29yKFF0OjpTaXplSG9yQ3Vy
c29yKQotICAgICAgICAsIFNpemVWZXJDdXJzb3IoUXQ6OlNpemVWZXJDdXJzb3IpCi0gICAgICAg
ICwgU2l6ZUZEaWFnQ3Vyc29yKFF0OjpTaXplRkRpYWdDdXJzb3IpCi0gICAgICAgICwgU2l6ZUJE
aWFnQ3Vyc29yKFF0OjpTaXplQkRpYWdDdXJzb3IpCi0gICAgICAgICwgU3BsaXRIQ3Vyc29yKFF0
OjpTcGxpdEhDdXJzb3IpCi0gICAgICAgICwgU3BsaXRWQ3Vyc29yKFF0OjpTcGxpdFZDdXJzb3Ip
Ci0gICAgICAgICwgTm9Ecm9wQ3Vyc29yKFF0OjpGb3JiaWRkZW5DdXJzb3IpCi0gICAgICAgICwg
QmxhbmtDdXJzb3IoUXQ6OkJsYW5rQ3Vyc29yKQotICAgICAgICAsIFpvb21JbkN1cnNvcihRQ3Vy
c29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL3pvb21JbkN1cnNv
ci5wbmciKSksIDcsIDcpKQotICAgICAgICAsIFpvb21PdXRDdXJzb3IoUUN1cnNvcihRUGl4bWFw
KFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy96b29tT3V0Q3Vyc29yLnBuZyIpKSwg
NywgNykpCi0gICAgICAgICwgVmVydGljYWxUZXh0Q3Vyc29yKFFDdXJzb3IoUVBpeG1hcChRTGF0
aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMvdmVydGljYWxUZXh0Q3Vyc29yLnBuZyIpKSwg
NywgNykpCi0gICAgICAgICwgQ2VsbEN1cnNvcihRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmlu
ZygiOi93ZWJraXQvcmVzb3VyY2VzL2NlbGxDdXJzb3IucG5nIikpLCA3LCA3KSkKLSAgICAgICAg
LCBDb250ZXh0TWVudUN1cnNvcihRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJr
aXQvcmVzb3VyY2VzL2NvbnRleHRNZW51Q3Vyc29yLnBuZyIpKSwgMywgMikpCi0gICAgICAgICwg
Q29weUN1cnNvcihRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3Vy
Y2VzL2NvcHlDdXJzb3IucG5nIikpLCAzLCAyKSkKLSAgICAgICAgLCBQcm9ncmVzc0N1cnNvcihR
Q3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL3Byb2dyZXNz
Q3Vyc29yLnBuZyIpKSwgMywgMikpCi0gICAgICAgICwgQWxpYXNDdXJzb3IoUUN1cnNvcihRUGl4
bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy9hbGlhc0N1cnNvci5wbmciKSks
IDExLCAzKSkKLQorICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBvdGhlci5tX3BsYXRmb3JtQ3Vyc29y
ID8gbmV3IFFDdXJzb3IoKm90aGVyLm1fcGxhdGZvcm1DdXJzb3IpICA6IDA7CiAjZW5kaWYKLSAg
ICB7Ci0gICAgfQotCi0gICAgfkN1cnNvcnMoKQotICAgIHsKLSAgICB9Ci0KLXB1YmxpYzoKLSAg
ICBzdGF0aWMgQ3Vyc29ycyogc2VsZigpOwotICAgIHN0YXRpYyBDdXJzb3JzKiBzX3NlbGY7Ci0K
LSAgICBDdXJzb3IgQ3Jvc3NDdXJzb3I7Ci0gICAgQ3Vyc29yIE1vdmVDdXJzb3I7Ci0gICAgQ3Vy
c29yIFBvaW50ZXJDdXJzb3I7Ci0gICAgQ3Vyc29yIFBvaW50aW5nSGFuZEN1cnNvcjsKLSAgICBD
dXJzb3IgSUJlYW1DdXJzb3I7Ci0gICAgQ3Vyc29yIFdhaXRDdXJzb3I7Ci0gICAgQ3Vyc29yIFdo
YXRzVGhpc0N1cnNvcjsKLSAgICBDdXJzb3IgU2l6ZUhvckN1cnNvcjsKLSAgICBDdXJzb3IgU2l6
ZVZlckN1cnNvcjsKLSAgICBDdXJzb3IgU2l6ZUZEaWFnQ3Vyc29yOwotICAgIEN1cnNvciBTaXpl
QkRpYWdDdXJzb3I7Ci0gICAgQ3Vyc29yIFNwbGl0SEN1cnNvcjsKLSAgICBDdXJzb3IgU3BsaXRW
Q3Vyc29yOwotICAgIEN1cnNvciBOb0Ryb3BDdXJzb3I7Ci0gICAgQ3Vyc29yIEJsYW5rQ3Vyc29y
OwotICAgIEN1cnNvciBab29tSW5DdXJzb3I7Ci0gICAgQ3Vyc29yIFpvb21PdXRDdXJzb3I7Ci0g
ICAgQ3Vyc29yIFZlcnRpY2FsVGV4dEN1cnNvcjsKLSAgICBDdXJzb3IgQ2VsbEN1cnNvcjsKLSAg
ICBDdXJzb3IgQ29udGV4dE1lbnVDdXJzb3I7Ci0gICAgQ3Vyc29yIENvcHlDdXJzb3I7Ci0gICAg
Q3Vyc29yIFByb2dyZXNzQ3Vyc29yOwotICAgIEN1cnNvciBBbGlhc0N1cnNvcjsKLX07Ci0KLUN1
cnNvcnMqIEN1cnNvcnM6OnNfc2VsZiA9IDA7Ci0KLUN1cnNvcnMqIEN1cnNvcnM6OnNlbGYoKQot
ewotICAgIGlmICghc19zZWxmKQotICAgICAgICBzX3NlbGYgPSBuZXcgQ3Vyc29ycygpOwotCi0g
ICAgcmV0dXJuIHNfc2VsZjsKLX0KLQotfQotCi1jb25zdCBDdXJzb3ImIHBvaW50ZXJDdXJzb3Io
KQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlBvaW50ZXJDdXJzb3I7Ci19Ci0KLWNv
bnN0IEN1cnNvciYgbW92ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+
TW92ZUN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBjcm9zc0N1cnNvcigpCi17Ci0gICAgcmV0
dXJuIEN1cnNvcnM6OnNlbGYoKS0+Q3Jvc3NDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgaGFu
ZEN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+UG9pbnRpbmdIYW5kQ3Vy
c29yOwotfQotCi1jb25zdCBDdXJzb3ImIGlCZWFtQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vy
c29yczo6c2VsZigpLT5JQmVhbUN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiB3YWl0Q3Vyc29y
KCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5XYWl0Q3Vyc29yOwotfQotCi1jb25z
dCBDdXJzb3ImIGhlbHBDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPldo
YXRzVGhpc0N1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBlYXN0UmVzaXplQ3Vyc29yKCkKLXsK
LSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5TaXplSG9yQ3Vyc29yOwotfQotCi1jb25zdCBD
dXJzb3ImIG5vcnRoUmVzaXplQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigp
LT5TaXplVmVyQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIG5vcnRoRWFzdFJlc2l6ZUN1cnNv
cigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+U2l6ZUJEaWFnQ3Vyc29yOwotfQot
Ci1jb25zdCBDdXJzb3ImIG5vcnRoV2VzdFJlc2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1
cnNvcnM6OnNlbGYoKS0+U2l6ZUZEaWFnQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIHNvdXRo
UmVzaXplQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5TaXplVmVyQ3Vy
c29yOwotfQotCi1jb25zdCBDdXJzb3ImIHNvdXRoRWFzdFJlc2l6ZUN1cnNvcigpCi17Ci0gICAg
cmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+U2l6ZUZEaWFnQ3Vyc29yOwotfQotCi1jb25zdCBDdXJz
b3ImIHNvdXRoV2VzdFJlc2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYo
KS0+U2l6ZUJEaWFnQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIHdlc3RSZXNpemVDdXJzb3Io
KQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlNpemVIb3JDdXJzb3I7Ci19Ci0KLWNv
bnN0IEN1cnNvciYgbm9ydGhTb3V0aFJlc2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNv
cnM6OnNlbGYoKS0+U2l6ZVZlckN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBlYXN0V2VzdFJl
c2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+U2l6ZUhvckN1cnNv
cjsKLX0KLQotY29uc3QgQ3Vyc29yJiBub3J0aEVhc3RTb3V0aFdlc3RSZXNpemVDdXJzb3IoKQot
ewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlNpemVCRGlhZ0N1cnNvcjsKLX0KLQotY29u
c3QgQ3Vyc29yJiBub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IoKQotewotICAgIHJldHVy
biBDdXJzb3JzOjpzZWxmKCktPlNpemVGRGlhZ0N1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBj
b2x1bW5SZXNpemVDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlNwbGl0
SEN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiByb3dSZXNpemVDdXJzb3IoKQotewotICAgIHJl
dHVybiBDdXJzb3JzOjpzZWxmKCktPlNwbGl0VkN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBt
aWRkbGVQYW5uaW5nQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gbW92ZUN1cnNvcigpOwotfQotCi1j
b25zdCBDdXJzb3ImIGVhc3RQYW5uaW5nQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gZWFzdFJlc2l6
ZUN1cnNvcigpOwotfQotCi1jb25zdCBDdXJzb3ImIG5vcnRoUGFubmluZ0N1cnNvcigpCi17Ci0g
ICAgcmV0dXJuIG5vcnRoUmVzaXplQ3Vyc29yKCk7Ci19Ci0KLWNvbnN0IEN1cnNvciYgbm9ydGhF
YXN0UGFubmluZ0N1cnNvcigpCi17Ci0gICAgcmV0dXJuIG5vcnRoRWFzdFJlc2l6ZUN1cnNvcigp
OwotfQotCi1jb25zdCBDdXJzb3ImIG5vcnRoV2VzdFBhbm5pbmdDdXJzb3IoKQotewotICAgIHJl
dHVybiBub3J0aFdlc3RSZXNpemVDdXJzb3IoKTsKLX0KLQotY29uc3QgQ3Vyc29yJiBzb3V0aFBh
bm5pbmdDdXJzb3IoKQotewotICAgIHJldHVybiBzb3V0aFJlc2l6ZUN1cnNvcigpOwotfQotCi1j
b25zdCBDdXJzb3ImIHNvdXRoRWFzdFBhbm5pbmdDdXJzb3IoKQotewotICAgIHJldHVybiBzb3V0
aEVhc3RSZXNpemVDdXJzb3IoKTsKLX0KLQotY29uc3QgQ3Vyc29yJiBzb3V0aFdlc3RQYW5uaW5n
Q3Vyc29yKCkKLXsKLSAgICByZXR1cm4gc291dGhXZXN0UmVzaXplQ3Vyc29yKCk7Ci19Ci0KLWNv
bnN0IEN1cnNvciYgd2VzdFBhbm5pbmdDdXJzb3IoKQotewotICAgIHJldHVybiB3ZXN0UmVzaXpl
Q3Vyc29yKCk7Ci19Ci0KLWNvbnN0IEN1cnNvciYgdmVydGljYWxUZXh0Q3Vyc29yKCkKLXsKLSAg
ICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5WZXJ0aWNhbFRleHRDdXJzb3I7Ci19Ci0KLWNvbnN0
IEN1cnNvciYgY2VsbEN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+Q2Vs
bEN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBjb250ZXh0TWVudUN1cnNvcigpCi17Ci0gICAg
cmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+Q29udGV4dE1lbnVDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1
cnNvciYgbm9Ecm9wQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5Ob0Ry
b3BDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgY29weUN1cnNvcigpCi17Ci0gICAgcmV0dXJu
IEN1cnNvcnM6OnNlbGYoKS0+Q29weUN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBwcm9ncmVz
c0N1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+UHJvZ3Jlc3NDdXJzb3I7
Ci19Ci0KLWNvbnN0IEN1cnNvciYgYWxpYXNDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3Jz
OjpzZWxmKCktPkFsaWFzQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIG5vbmVDdXJzb3IoKQot
ewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPkJsYW5rQ3Vyc29yOwotfQotCi1jb25zdCBD
dXJzb3ImIG5vdEFsbG93ZWRDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCkt
Pk5vRHJvcEN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiB6b29tSW5DdXJzb3IoKQotewotICAg
IHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlpvb21JbkN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29y
JiB6b29tT3V0Q3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5ab29tT3V0
Q3Vyc29yOworICAgIHJldHVybiAqdGhpczsKIH0KIAotY29uc3QgQ3Vyc29yJiBncmFiQ3Vyc29y
KCkKK3N0YXRpYyBRQ3Vyc29yKiBjcmVhdGVDdXN0b21DdXJzb3IoSW1hZ2UqIGltYWdlLCBjb25z
dCBJbnRQb2ludCYgaG90U3BvdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biBDdXJzb3JzOjpzZWxmKCktPlBvaW50ZXJDdXJzb3I7CisjaWZuZGVmIFFUX05PX0NVUlNPUgor
ICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3QgPSBkZXRlcm1pbmVIb3RTcG90KGltYWdlLCBo
b3RTcG90KTsKKyAgICByZXR1cm4gbmV3IFFDdXJzb3IoKihpbWFnZS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSksIGVmZmVjdGl2ZUhvdFNwb3QueCgpLCBlZmZlY3RpdmVIb3RTcG90Lnko
KSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKLWNvbnN0IEN1cnNvciYgZ3Jh
YmJpbmdDdXJzb3IoKQordm9pZCBDdXJzb3I6OmVuc3VyZVBsYXRmb3JtQ3Vyc29yKCkgY29uc3QK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlBv
aW50ZXJDdXJzb3I7CisjaWZuZGVmIFFUX05PX0NVUlNPUgorICAgIGlmIChtX3BsYXRmb3JtQ3Vy
c29yKQorICAgICAgICByZXR1cm47CisKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2Ug
UG9pbnRlcjoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpBcnJv
d0N1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3Jvc3M6CisgICAgICAgIG1fcGxh
dGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6Q3Jvc3NDdXJzb3IpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEhhbmQ6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNv
cihRdDo6UG9pbnRpbmdIYW5kQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJQmVh
bToKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpJQmVhbUN1cnNv
cik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2FpdDoKKyAgICAgICAgbV9wbGF0Zm9ybUN1
cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpXYWl0Q3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBIZWxwOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6Oldo
YXRzVGhpc0N1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRWFzdFJlc2l6ZToKKyAg
ICBjYXNlIEVhc3RQYW5uaW5nOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJz
b3IoUXQ6OlNpemVIb3JDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vcnRoUmVz
aXplOgorICAgIGNhc2UgTm9ydGhQYW5uaW5nOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0g
bmV3IFFDdXJzb3IoUXQ6OlNpemVWZXJDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IE5vcnRoRWFzdFJlc2l6ZToKKyAgICBjYXNlIE5vcnRoRWFzdFBhbm5pbmc6CisgICAgICAgIG1f
cGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U2l6ZUJEaWFnQ3Vyc29yKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBOb3J0aFdlc3RSZXNpemU6CisgICAgY2FzZSBOb3J0aFdlc3RQ
YW5uaW5nOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVG
RGlhZ0N1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU291dGhSZXNpemU6CisgICAg
Y2FzZSBTb3V0aFBhbm5pbmc6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNv
cihRdDo6U2l6ZVZlckN1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU291dGhFYXN0
UmVzaXplOgorICAgIGNhc2UgU291dGhFYXN0UGFubmluZzoKKyAgICAgICAgbV9wbGF0Zm9ybUN1
cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplRkRpYWdDdXJzb3IpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFNvdXRoV2VzdFJlc2l6ZToKKyAgICBjYXNlIFNvdXRoV2VzdFBhbm5pbmc6Cisg
ICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U2l6ZUJEaWFnQ3Vyc29y
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZXN0UmVzaXplOgorICAgIGNhc2UgV2VzdFBh
bm5pbmc6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U2l6ZUhv
ckN1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm9ydGhTb3V0aFJlc2l6ZToKKyAg
ICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplVmVyQ3Vyc29yKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFYXN0V2VzdFJlc2l6ZToKKyAgICAgICAgbV9wbGF0
Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplSG9yQ3Vyc29yKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBOb3J0aEVhc3RTb3V0aFdlc3RSZXNpemU6CisgICAgICAgIG1fcGxhdGZv
cm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U2l6ZUJEaWFnQ3Vyc29yKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBOb3J0aFdlc3RTb3V0aEVhc3RSZXNpemU6CisgICAgICAgIG1fcGxhdGZv
cm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U2l6ZUZEaWFnQ3Vyc29yKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDb2x1bW5SZXNpemU6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBu
ZXcgUUN1cnNvcihRdDo6U3BsaXRIQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBS
b3dSZXNpemU6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U3Bs
aXRWQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNaWRkbGVQYW5uaW5nOgorICAg
IGNhc2UgTW92ZToKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpT
aXplQWxsQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb25lOgorICAgICAgICBt
X3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OkJsYW5rQ3Vyc29yKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBOb0Ryb3A6CisgICAgY2FzZSBOb3RBbGxvd2VkOgorICAgICAgICBt
X3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OkZvcmJpZGRlbkN1cnNvcik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgR3JhYjoKKyAgICBjYXNlIEdyYWJiaW5nOgorICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3Io
UXQ6OkFycm93Q3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWZXJ0aWNhbFRleHQ6
CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFT
dHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy92ZXJ0aWNhbFRleHRDdXJzb3IucG5nIikpLCA3LCA3
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDZWxsOgorICAgICAgICBtX3BsYXRmb3JtQ3Vy
c29yID0gbmV3IFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJj
ZXMvY2VsbEN1cnNvci5wbmciKSksIDcsIDcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENv
bnRleHRNZW51OgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUVBpeG1h
cChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMvY29udGV4dE1lbnVDdXJzb3IucG5n
IikpLCAzLCAyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbGlhczoKKyAgICAgICAgbV9w
bGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJr
aXQvcmVzb3VyY2VzL2FsaWFzQ3Vyc29yLnBuZyIpKSwgMTEsIDMpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFByb2dyZXNzOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJz
b3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMvcHJvZ3Jlc3NDdXJz
b3IucG5nIikpLCAzLCAyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb3B5OgorICAgICAg
ICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6
L3dlYmtpdC9yZXNvdXJjZXMvY29weUN1cnNvci5wbmciKSksIDMsIDIpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFpvb21JbjoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vy
c29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL3pvb21JbkN1cnNv
ci5wbmciKSksIDcsIDcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFpvb21PdXQ6CisgICAg
ICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmco
Ijovd2Via2l0L3Jlc291cmNlcy96b29tT3V0Q3Vyc29yLnBuZyIpKSwgNywgNyk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ3VzdG9tOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3Jl
YXRlQ3VzdG9tQ3Vyc29yKG1faW1hZ2UuZ2V0KCksIG1faG90U3BvdCk7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyNl
bmRpZgogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1FXZWJQYWdlQ2xp
ZW50LmggYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1FXZWJQYWdlQ2xpZW50LmgKaW5kZXggYTBhMDIx
OC4uNWMyNDg3OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RV2ViUGFnZUNsaWVu
dC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaApAQCAtMjcsNyAr
MjcsNyBAQAogI2RlZmluZSBRV2ViUGFnZUNsaWVudF9oCiAKICNpZm5kZWYgUVRfTk9fQ1VSU09S
Ci0jaW5jbHVkZSA8UUN1cnNvcj4KKyNpbmNsdWRlICJDdXJzb3IuaCIKICNlbmRpZgogCiAjaW5j
bHVkZSA8UVJlY3Q+CkBAIC03MCwxMiArNzAsMTMgQEAgcHVibGljOgogICAgICAgICB1cGRhdGVD
dXJzb3IobV9sYXN0Q3Vyc29yKTsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBzZXRDdXJzb3Io
Y29uc3QgUUN1cnNvciYgY3Vyc29yKQorICAgIGlubGluZSB2b2lkIHNldEN1cnNvcihjb25zdCBX
ZWJDb3JlOjpDdXJzb3ImIGN1cnNvcikKICAgICB7Ci0gICAgICAgIG1fbGFzdEN1cnNvciA9IGN1
cnNvcjsKLSAgICAgICAgaWYgKCFjdXJzb3IuYml0bWFwKCkgJiYgY3Vyc29yLnNoYXBlKCkgPT0g
dGhpcy0+Y3Vyc29yKCkuc2hhcGUoKSkKKyAgICAgICAgUUN1cnNvciBjdXJzb3JJbXBsID0gKmN1
cnNvci5wbGF0Zm9ybUN1cnNvcigpOworICAgICAgICBtX2xhc3RDdXJzb3IgPSBjdXJzb3JJbXBs
OworICAgICAgICBpZiAoIWN1cnNvckltcGwuYml0bWFwKCkgJiYgY3Vyc29ySW1wbC5zaGFwZSgp
ID09IHRoaXMtPmN1cnNvcigpLnNoYXBlKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IHVwZGF0ZUN1cnNvcihjdXJzb3IpOworICAgICAgICB1cGRhdGVDdXJzb3IoY3Vyc29ySW1wbCk7
CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvV2lkZ2V0
UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAKaW5kZXggMDkwM2I2ZS4u
ZTY0ZDY1NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAKQEAgLTc4LDEwICs3OCwxMCBAQCB2
b2lkIFdpZGdldDo6c2V0Rm9jdXMoYm9vbCBmb2N1c2VkKQogdm9pZCBXaWRnZXQ6OnNldEN1cnNv
cihjb25zdCBDdXJzb3ImIGN1cnNvcikKIHsKICNpZm5kZWYgUVRfTk9fQ1VSU09SCi0gICAgUVdl
YlBhZ2VDbGllbnQqIHBhZ2VDbGllbnQgPSByb290KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1Q
YWdlQ2xpZW50KCk7Ci0KLSAgICBpZiAocGFnZUNsaWVudCkKLSAgICAgICAgcGFnZUNsaWVudC0+
c2V0Q3Vyc29yKGN1cnNvci5pbXBsKCkpOworICAgIFNjcm9sbFZpZXcqIHZpZXcgPSByb290KCk7
CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisgICAgdmlldy0+aG9zdFdpbmRvdygp
LT5zZXRDdXJzb3IoY3Vyc29yKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAyYzk2NGQzLi5mNTliZGM2IDEw
MDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMC0wOC0xNiAgQmFsYXpzIEtlbGVtZW4gIDxrYkBpbmYudS1z
emVnZWQuaHU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW1F0XSBVc2UgTEFaWV9OQVRJVkVfQ1VSU09SCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MDYyCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6
c2V0Q3Vyc29yKTogSW1wbGVtZW50ZWQuIFByb3BhZ2V0ZSB0aGUgY2FsbGJhY2sgZm9yd2FyZCB0
byB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgUGFnZUNsaWVudCAoUVdlYlBhZ2VDTGll
bnQpLgorCiAyMDEwLTA4LTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUHJvcGFnYXRlIG5hbWUgY2hhbmdlIHRvIFF0LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKaW5kZXggMGI3N2VhNi4uZDJhNGQ0NCAxMDA2NDQKLS0t
IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAorKysgYi9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCkBAIC01MzcsOSArNTM3LDEy
IEBAIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OmNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZW5hbWVzLCBGaWxlQ2hvCiAgICAgY2hvb3Nlci0+aWNvbkxvYWRlZChJY29u
OjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKSk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50
UXQ6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImKQordm9pZCBDaHJvbWVDbGllbnRRdDo6c2V0Q3Vy
c29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
UVdlYlBhZ2VDbGllbnQqIHBhZ2VDbGllbnQgPSBwbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICBp
ZiAoIXBhZ2VDbGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlQ2xpZW50LT5zZXRDdXJz
b3IoY3Vyc29yKTsKIH0KIAogdm9pZCBDaHJvbWVDbGllbnRRdDo6cmVxdWVzdEdlb2xvY2F0aW9u
UGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9u
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBjMzQxYzUxLi4yZTQwOGVhIDEwMDY0NAotLS0gYS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA4LTE2ICBCYWxhenMgS2Vs
ZW1lbiAgPGtiQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbUXRdIFVzZSBMQVpZX05BVElWRV9DVVJTT1IKKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQwNjIKKworICAgICAg
ICBJbXBsZW1lbnRlZCBQYWdlQ2xpZW50OjpzZXRDdXJzb3IuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5jcHA6IEFkZGVkIHVwZGF0ZUN1cnNvciBzbG90IHRv
IGJlIGNvbm5lY3RlZCB0byB0aGUgUVdLUGFnZTo6c2V0Q3Vyc29yIHNpZ25hbC4KKyAgICAgICAg
KFFHcmFwaGljc1dLVmlldzo6UUdyYXBoaWNzV0tWaWV3KToKKyAgICAgICAgKFFHcmFwaGljc1dL
Vmlldzo6dXBkYXRlQ3Vyc29yKTogU2V0cyB0aGUgY3Vyc29yIG9mIHRoZSB3aWRnZXQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3ZpZXcuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwOgorICAgICAgICAoUVdLUGFnZVByaXZhdGU6OnNldEN1
cnNvcik6IEFkZGVkIGltcGxlbWVudGF0aW9uIGZvciBQYWdlQ2xpZW50OjpzZXRDdXJzb3IuIEVt
aXR0aW5nIHNpbmdhbCB0aHJvdWdoIHRoZSBRV0tQYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcXdrcGFnZS5oOiBBZGRlZCBzZXRDdXJzb3Igc2lnbmFsLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmg6CisKIDIwMTAtMDgtMTYgIEpvbiBIb25leWN1dHQgIDxq
aG9uZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBzb21lIHRlc3RzIHRvIHBhc3Mg
aW4gV2ViS2l0VGVzdFJ1bm5lciBiZWZvcmUgU2hhcmVkTWVtb3J5IGFuZApkaWZmIC0tZ2l0IGEv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5jcHAgYi9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcAppbmRleCBmZDBiODZlLi42NTRjYTBm
IDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNw
cAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcApAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJx
d2twYWdlLmgiCiAjaW5jbHVkZSAicXdrcGFnZV9wLmgiCisjaW5jbHVkZSA8UUN1cnNvcj4KICNp
bmNsdWRlIDxRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQ+CiAjaW5jbHVkZSA8UUdyYXBoaWNzVmll
dz4KICNpbmNsdWRlIDxRUGFpbnRlcj4KQEAgLTY0LDYgKzY1LDggQEAgUUdyYXBoaWNzV0tWaWV3
OjpRR3JhcGhpY3NXS1ZpZXcoV0tQYWdlTmFtZXNwYWNlUmVmIHBhZ2VOYW1lc3BhY2VSZWYsIEJh
Y2tpbmdTdG8KICAgICBjb25uZWN0KGQtPnBhZ2UsIFNJR05BTChsb2FkUHJvZ3Jlc3MoaW50KSks
IHRoaXMsIFNJR05BTChsb2FkUHJvZ3Jlc3MoaW50KSkpOwogICAgIGNvbm5lY3QoZC0+cGFnZSwg
U0lHTkFMKGluaXRpYWxMYXlvdXRDb21wbGV0ZWQoKSksIHRoaXMsIFNJR05BTChpbml0aWFsTGF5
b3V0Q29tcGxldGVkKCkpKTsKICAgICBjb25uZWN0KGQtPnBhZ2UsIFNJR05BTCh1cmxDaGFuZ2Vk
KGNvbnN0IFFVcmwmKSksIHRoaXMsIFNJR05BTCh1cmxDaGFuZ2VkKGNvbnN0IFFVcmwmKSkpOwor
CisgICAgY29ubmVjdChkLT5wYWdlLCBTSUdOQUwoY3Vyc29yQ2hhbmdlZChjb25zdCBRQ3Vyc29y
JikpLCB0aGlzLCBTTE9UKHVwZGF0ZUN1cnNvcihjb25zdCBRQ3Vyc29yJikpKTsKIH0KIAogUUdy
YXBoaWNzV0tWaWV3Ojp+UUdyYXBoaWNzV0tWaWV3KCkKQEAgLTEzNiw2ICsxMzksMTEgQEAgdm9p
ZCBRR3JhcGhpY3NXS1ZpZXc6OnN0b3AoKQogICAgIHBhZ2UoKS0+dHJpZ2dlckFjdGlvbihRV0tQ
YWdlOjpTdG9wKTsKIH0KIAordm9pZCBRR3JhcGhpY3NXS1ZpZXc6OnVwZGF0ZUN1cnNvcihjb25z
dCBRQ3Vyc29yJiBjdXJzb3IpCit7CisgICAgc2V0Q3Vyc29yKGN1cnNvcik7Cit9CisKIC8qISBc
cmVpbXAKICovCiBRVmFyaWFudCBRR3JhcGhpY3NXS1ZpZXc6Oml0ZW1DaGFuZ2UoR3JhcGhpY3NJ
dGVtQ2hhbmdlIGNoYW5nZSwgY29uc3QgUVZhcmlhbnQmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5oIGIvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5oCmluZGV4IGJlYzIyMGIuLjM3NWE4MGYgMTAwNjQ0
Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3ZpZXcuaAorKysgYi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmgKQEAgLTcsNiArNywxMCBA
QAogI2luY2x1ZGUgPFFHcmFwaGljc1dpZGdldD4KICNpbmNsdWRlICJxd2twYWdlLmgiCiAKK1FU
X0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUUN1cnNvcjsKK1FUX0VORF9OQU1FU1BBQ0UKKwogY2xh
c3MgUUdyYXBoaWNzV0tWaWV3UHJpdmF0ZTsKIAogV0tTdHJpbmdSZWYgV0tTdHJpbmdDcmVhdGVX
aXRoUVN0cmluZyhRU3RyaW5nIHFTdHJpbmcpOwpAQCAtNjksNiArNzMsOCBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB2aXJ0dWFsIHZvaWQgaG92ZXJNb3ZlRXZlbnQoUUdyYXBoaWNzU2NlbmVIb3ZlckV2
ZW50Kik7CiAKKyAgICBRX1NMT1Qgdm9pZCB1cGRhdGVDdXJzb3IoY29uc3QgUUN1cnNvciYpOwor
CiBwcml2YXRlOgogICAgIFFHcmFwaGljc1dLVmlld1ByaXZhdGUqIGQ7CiAgICAgZnJpZW5kIGNs
YXNzIFFHcmFwaGljc1dLVmlld1ByaXZhdGU7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdrcGFnZS5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5j
cHAKaW5kZXggYjZkMjkxNi4uNWJmM2Q2OCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3a3BhZ2UuY3BwCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdl
LmNwcApAQCAtNTYsNiArNTYsMTMgQEAgdm9pZCBRV0tQYWdlUHJpdmF0ZTo6aW5pdChjb25zdCBR
U2l6ZSYgdmlld3BvcnRTaXplLCBEcmF3aW5nQXJlYVByb3h5KiBwcm94eSkKICAgICBwYWdlLT5p
bml0aWFsaXplV2ViUGFnZShJbnRTaXplKHZpZXdwb3J0U2l6ZSksIHByb3h5KTsKIH0KIAordm9p
ZCBRV0tQYWdlUHJpdmF0ZTo6c2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY3Vyc29y
KQoreworI2lmbmRlZiBRVF9OT19DVVJTT1IKKyAgICBlbWl0IHEtPmN1cnNvckNoYW5nZWQoKmN1
cnNvci5wbGF0Zm9ybUN1cnNvcigpKTsKKyNlbmRpZgorfQorCiB2b2lkIFFXS1BhZ2VQcml2YXRl
Ojp0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG5ld1Rvb2x0aXAp
CiB7CiAgICAgZW1pdCBxLT5zdGF0dXNCYXJNZXNzYWdlKFFTdHJpbmcobmV3VG9vbHRpcCkpOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuaCBiL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmgKaW5kZXggNjYwZDQ3Yi4uMTU0ZWIxZSAxMDA2NDQK
LS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuaAorKysgYi9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5oCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZU5hbWVzcGFjZS5oPgogCitj
bGFzcyBRQ3Vyc29yOwogY2xhc3MgUVdLR3JhcGhpY3NXaWRnZXQ7CiBjbGFzcyBRV0tQYWdlUHJp
dmF0ZTsKIApAQCAtNjAsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgUV9TSUdOQUwgdm9pZCBpbml0
aWFsTGF5b3V0Q29tcGxldGVkKCk7CiAgICAgUV9TSUdOQUwgdm9pZCB1cmxDaGFuZ2VkKGNvbnN0
IFFVcmwmKTsKICAgICBRX1NJR05BTCB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgUVNp
emUmKTsKKyAgICBRX1NJR05BTCB2b2lkIGN1cnNvckNoYW5nZWQoY29uc3QgUUN1cnNvciYpOwog
CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB0aW1lckV2ZW50KFFUaW1lckV2ZW50Kik7CmRpZmYgLS1n
aXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmggYi9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgKaW5kZXggMGRlZGEzNC4uOTAzYmExZSAxMDA2NDQKLS0t
IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCisrKyBiL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAjZW5k
aWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgdm9pZCBwcm9j
ZXNzRGlkRXhpdCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkUmV2aXZlKCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpOwogICAg
IHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMoYm9vbCBkaXJlY3Rpb24pIHsgfQogICAgIHZpcnR1YWwg
dm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5n
Jik7CiAKLS0gCjEuNi41Cgo=
</data>
<flag name="review"
          id="53160"
          type_id="1"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64705</attachid>
            <date>2010-08-18 07:19:32 -0700</date>
            <delta_ts>2010-08-18 14:21:10 -0700</delta_ts>
            <desc>webcore part</desc>
            <filename>land_wc_cursor.diff</filename>
            <type>text/plain</type>
            <size>14958</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWY4YTkxYi4uODRlNzkwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wOC0xOCAgQmFsYXpzIEtlbGVt
ZW4gIDxrYkBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1F0XSBVc2UgTEFaWV9OQVRJVkVfQ1VSU09SCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDA2MgorCisgICAgICAgIE5v
IGZ1bmN0aW9uYWwgY2hhbmdlIHNvIG5ldyB0ZXN0cy4KKworICAgICAgICBDaGFuZ2UgQ3Vyc29y
IGJlaGF2aW91ciB0byBtYXRjaCB0aGUgTEFaWV9OQVRJVkVfQ1VSU09SIHBvbGljeS4KKworICAg
ICAgICAqIHBsYXRmb3JtL0N1cnNvci5oOiBUeXBlZGVmIFBsYXRmb3JtQ3Vyc29yIHRvIGJlIGEg
UUN1cnNvciogdG8gYmUgYWJsZSBjcmVhdGUgaXQgZHluYW1pY2FsbHkuCisgICAgICAgIChXZWJD
b3JlOjpDdXJzb3I6OkN1cnNvcik6IFJlbW92ZSB0aGUgaWZkZWYgZm9yIFF0LgorICAgICAgICAq
IHBsYXRmb3JtL3F0L0N1cnNvclF0LmNwcDogUmVtb3ZlIHRoZSBDdXJzb3JzIGNsYXNzIHNpbmNl
IHdlIGhhdmUgdGhlIHN0YXRpYyBjdXJzb3IgaW5zdGFuY2VzCisgICAgICAgIGZvciB0aGUgY29t
bW9uIGN1cnNvciB0eXBlcyBpbiBDdXJzb3IuY3BwLiBNb3ZlIHRoZSBsb2dpYyB0aGF0IG1hcHMg
dGhlIGN1cnNvciB0eXBlcyB0bworICAgICAgICBRQ3Vyc29yIGluc3RhbmNlcyBpbnRvIGVuc3Vy
ZVBsYXRmb3JtQ3Vyc29yLgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yOjpDdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3Vyc29yOjp+Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNv
cjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUN1c3RvbUN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJzb3I6OmVuc3VyZVBsYXRmb3JtQ3Vyc29yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnNl
dEN1cnNvcik6IEFkanVzdCB0byB0aGUgUGxhdGZvcm1DdXJzb3IgY2hhbmdlLgorCiAyMDEwLTA4
LTE3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L0N1cnNvci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaAppbmRleCA1ZTU0N2VmLi45Yjc3
ZDFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vQ3Vyc29yLmgKQEAgLTYyLDcgKzYyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSElDT05f
XyAqSElDT047CiB0eXBlZGVmIEhJQ09OIEhDVVJTT1I7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KFdJTikgfHwgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oV0lO
KSB8fCBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpCiAjZGVm
aW5lIFdURl9VU0VfTEFaWV9OQVRJVkVfQ1VSU09SIDEKICNlbmRpZgogCkBAIC04OCw3ICs4OCw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICB0eXBlZGVm
IGNvbnN0IGNoYXIqIFBsYXRmb3JtQ3Vyc29yOwogI2VsaWYgUExBVEZPUk0oUVQpICYmICFkZWZp
bmVkKFFUX05PX0NVUlNPUikKLSAgICB0eXBlZGVmIFFDdXJzb3IgUGxhdGZvcm1DdXJzb3I7Cisg
ICAgLy8gRG8gbm90IG5lZWQgdG8gYmUgc2hhcmVkIGJ1dCBuZWVkIHRvIGJlIGNyZWF0ZWQgZHlu
YW1pY2FsbHkgdmlhIGVuc3VyZVBsYXRmb3JtQ3Vyc29yLgorICAgIHR5cGVkZWYgUUN1cnNvciog
UGxhdGZvcm1DdXJzb3I7CiAjZWxpZiBQTEFURk9STShXWCkKICAgICB0eXBlZGVmIHd4Q3Vyc29y
KiBQbGF0Zm9ybUN1cnNvcjsKICNlbGlmIFBMQVRGT1JNKENIUk9NSVVNKQpAQCAtMTUxLDcgKzE1
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGNvbnN0IEN1cnNvciYg
ZnJvbVR5cGUoQ3Vyc29yOjpUeXBlKTsKIAogICAgICAgICBDdXJzb3IoKQotI2lmICFQTEFURk9S
TShRVCkgJiYgIVBMQVRGT1JNKEVGTCkKKyNpZiAhUExBVEZPUk0oRUZMKQogICAgICAgICAgICAg
OiBtX3BsYXRmb3JtQ3Vyc29yKDApCiAjZW5kaWYKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9DdXJzb3JRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNv
clF0LmNwcAppbmRleCA2MDE3ZGFhLi4yMjdiODBjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL3F0L0N1cnNvclF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0LmNw
cApAQCAtMyw2ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNiBHZW9yZ2UgU3RhaWtvcyA8
c3RhaWtvc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2IENoYXJsZXMgU2FtdWVscyA8
Y2hhcmxlc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEhvbGdlciBIYW5z
IFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVn
ZWQKICAqCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQzLDMyOSArNDQsMTY2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3Vyc29yOjpDdXJzb3IoUGxhdGZvcm1DdXJzb3Ig
cCkKLSAgICA6IG1fcGxhdGZvcm1DdXJzb3IocCkKLXsKLX0KLQogQ3Vyc29yOjpDdXJzb3IoY29u
c3QgQ3Vyc29yJiBvdGhlcikKLSAgICA6IG1fcGxhdGZvcm1DdXJzb3Iob3RoZXIubV9wbGF0Zm9y
bUN1cnNvcikKKyAgICA6IG1fdHlwZShvdGhlci5tX3R5cGUpCisgICAgLCBtX2ltYWdlKG90aGVy
Lm1faW1hZ2UpCisgICAgLCBtX2hvdFNwb3Qob3RoZXIubV9ob3RTcG90KQorI2lmbmRlZiBRVF9O
T19DVVJTT1IKKyAgICAsIG1fcGxhdGZvcm1DdXJzb3Iob3RoZXIubV9wbGF0Zm9ybUN1cnNvciA/
IG5ldyBRQ3Vyc29yKCpvdGhlci5tX3BsYXRmb3JtQ3Vyc29yKSAgOiAwKQorI2VuZGlmCiB7CiB9
CiAKIEN1cnNvcjo6fkN1cnNvcigpCiB7Ci19Ci0KLUN1cnNvcjo6Q3Vyc29yKEltYWdlKiBpbWFn
ZSwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCi17CiAjaWZuZGVmIFFUX05PX0NVUlNPUgotICAg
IEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3QgPSBkZXRlcm1pbmVIb3RTcG90KGltYWdlLCBob3RT
cG90KTsKLSAgICBtX3BsYXRmb3JtQ3Vyc29yID0gUUN1cnNvcigqKGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpKSwgZWZmZWN0aXZlSG90U3BvdC54KCksIGVmZmVjdGl2ZUhvdFNw
b3QueSgpKTsKKyAgICBkZWxldGUgbV9wbGF0Zm9ybUN1cnNvcjsKICNlbmRpZgogfQogCiBDdXJz
b3ImIEN1cnNvcjo6b3BlcmF0b3I9KGNvbnN0IEN1cnNvciYgb3RoZXIpCiB7Ci0gICAgbV9wbGF0
Zm9ybUN1cnNvciA9IG90aGVyLm1fcGxhdGZvcm1DdXJzb3I7Ci0gICAgcmV0dXJuICp0aGlzOwot
fQotCi1uYW1lc3BhY2UgewotCi0vLyBGSVhNRTogc3RhdGljIGRlbGV0ZXIKLWNsYXNzIEN1cnNv
cnMgOiBwdWJsaWMgTm9uY29weWFibGUgewotcHJvdGVjdGVkOgotICAgIEN1cnNvcnMoKQorICAg
IG1fdHlwZSA9IG90aGVyLm1fdHlwZTsKKyAgICBtX2ltYWdlID0gb3RoZXIubV9pbWFnZTsKKyAg
ICBtX2hvdFNwb3QgPSBvdGhlci5tX2hvdFNwb3Q7CiAjaWZuZGVmIFFUX05PX0NVUlNPUgotICAg
ICAgICA6IENyb3NzQ3Vyc29yKFF0OjpDcm9zc0N1cnNvcikKLSAgICAgICAgLCBNb3ZlQ3Vyc29y
KFF0OjpTaXplQWxsQ3Vyc29yKQotICAgICAgICAsIFBvaW50ZXJDdXJzb3IoUXQ6OkFycm93Q3Vy
c29yKQotICAgICAgICAsIFBvaW50aW5nSGFuZEN1cnNvcihRdDo6UG9pbnRpbmdIYW5kQ3Vyc29y
KQotICAgICAgICAsIElCZWFtQ3Vyc29yKFF0OjpJQmVhbUN1cnNvcikKLSAgICAgICAgLCBXYWl0
Q3Vyc29yKFF0OjpXYWl0Q3Vyc29yKQotICAgICAgICAsIFdoYXRzVGhpc0N1cnNvcihRdDo6V2hh
dHNUaGlzQ3Vyc29yKQotICAgICAgICAsIFNpemVIb3JDdXJzb3IoUXQ6OlNpemVIb3JDdXJzb3Ip
Ci0gICAgICAgICwgU2l6ZVZlckN1cnNvcihRdDo6U2l6ZVZlckN1cnNvcikKLSAgICAgICAgLCBT
aXplRkRpYWdDdXJzb3IoUXQ6OlNpemVGRGlhZ0N1cnNvcikKLSAgICAgICAgLCBTaXplQkRpYWdD
dXJzb3IoUXQ6OlNpemVCRGlhZ0N1cnNvcikKLSAgICAgICAgLCBTcGxpdEhDdXJzb3IoUXQ6OlNw
bGl0SEN1cnNvcikKLSAgICAgICAgLCBTcGxpdFZDdXJzb3IoUXQ6OlNwbGl0VkN1cnNvcikKLSAg
ICAgICAgLCBOb0Ryb3BDdXJzb3IoUXQ6OkZvcmJpZGRlbkN1cnNvcikKLSAgICAgICAgLCBCbGFu
a0N1cnNvcihRdDo6QmxhbmtDdXJzb3IpCi0gICAgICAgICwgWm9vbUluQ3Vyc29yKFFDdXJzb3Io
UVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMvem9vbUluQ3Vyc29yLnBu
ZyIpKSwgNywgNykpCi0gICAgICAgICwgWm9vbU91dEN1cnNvcihRQ3Vyc29yKFFQaXhtYXAoUUxh
dGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL3pvb21PdXRDdXJzb3IucG5nIikpLCA3LCA3
KSkKLSAgICAgICAgLCBWZXJ0aWNhbFRleHRDdXJzb3IoUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFT
dHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy92ZXJ0aWNhbFRleHRDdXJzb3IucG5nIikpLCA3LCA3
KSkKLSAgICAgICAgLCBDZWxsQ3Vyc29yKFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6
L3dlYmtpdC9yZXNvdXJjZXMvY2VsbEN1cnNvci5wbmciKSksIDcsIDcpKQotICAgICAgICAsIENv
bnRleHRNZW51Q3Vyc29yKFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9y
ZXNvdXJjZXMvY29udGV4dE1lbnVDdXJzb3IucG5nIikpLCAzLCAyKSkKLSAgICAgICAgLCBDb3B5
Q3Vyc29yKFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMv
Y29weUN1cnNvci5wbmciKSksIDMsIDIpKQotICAgICAgICAsIFByb2dyZXNzQ3Vyc29yKFFDdXJz
b3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMvcHJvZ3Jlc3NDdXJz
b3IucG5nIikpLCAzLCAyKSkKLSAgICAgICAgLCBBbGlhc0N1cnNvcihRQ3Vyc29yKFFQaXhtYXAo
UUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL2FsaWFzQ3Vyc29yLnBuZyIpKSwgMTEs
IDMpKQotCisgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG90aGVyLm1fcGxhdGZvcm1DdXJzb3IgPyBu
ZXcgUUN1cnNvcigqb3RoZXIubV9wbGF0Zm9ybUN1cnNvcikgIDogMDsKICNlbmRpZgotICAgIHsK
LSAgICB9Ci0KLSAgICB+Q3Vyc29ycygpCi0gICAgewotICAgIH0KLQotcHVibGljOgotICAgIHN0
YXRpYyBDdXJzb3JzKiBzZWxmKCk7Ci0gICAgc3RhdGljIEN1cnNvcnMqIHNfc2VsZjsKLQotICAg
IEN1cnNvciBDcm9zc0N1cnNvcjsKLSAgICBDdXJzb3IgTW92ZUN1cnNvcjsKLSAgICBDdXJzb3Ig
UG9pbnRlckN1cnNvcjsKLSAgICBDdXJzb3IgUG9pbnRpbmdIYW5kQ3Vyc29yOwotICAgIEN1cnNv
ciBJQmVhbUN1cnNvcjsKLSAgICBDdXJzb3IgV2FpdEN1cnNvcjsKLSAgICBDdXJzb3IgV2hhdHNU
aGlzQ3Vyc29yOwotICAgIEN1cnNvciBTaXplSG9yQ3Vyc29yOwotICAgIEN1cnNvciBTaXplVmVy
Q3Vyc29yOwotICAgIEN1cnNvciBTaXplRkRpYWdDdXJzb3I7Ci0gICAgQ3Vyc29yIFNpemVCRGlh
Z0N1cnNvcjsKLSAgICBDdXJzb3IgU3BsaXRIQ3Vyc29yOwotICAgIEN1cnNvciBTcGxpdFZDdXJz
b3I7Ci0gICAgQ3Vyc29yIE5vRHJvcEN1cnNvcjsKLSAgICBDdXJzb3IgQmxhbmtDdXJzb3I7Ci0g
ICAgQ3Vyc29yIFpvb21JbkN1cnNvcjsKLSAgICBDdXJzb3IgWm9vbU91dEN1cnNvcjsKLSAgICBD
dXJzb3IgVmVydGljYWxUZXh0Q3Vyc29yOwotICAgIEN1cnNvciBDZWxsQ3Vyc29yOwotICAgIEN1
cnNvciBDb250ZXh0TWVudUN1cnNvcjsKLSAgICBDdXJzb3IgQ29weUN1cnNvcjsKLSAgICBDdXJz
b3IgUHJvZ3Jlc3NDdXJzb3I7Ci0gICAgQ3Vyc29yIEFsaWFzQ3Vyc29yOwotfTsKLQotQ3Vyc29y
cyogQ3Vyc29yczo6c19zZWxmID0gMDsKLQotQ3Vyc29ycyogQ3Vyc29yczo6c2VsZigpCi17Ci0g
ICAgaWYgKCFzX3NlbGYpCi0gICAgICAgIHNfc2VsZiA9IG5ldyBDdXJzb3JzKCk7Ci0KLSAgICBy
ZXR1cm4gc19zZWxmOwotfQotCi19Ci0KLWNvbnN0IEN1cnNvciYgcG9pbnRlckN1cnNvcigpCi17
Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+UG9pbnRlckN1cnNvcjsKLX0KLQotY29uc3Qg
Q3Vyc29yJiBtb3ZlQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5Nb3Zl
Q3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIGNyb3NzQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4g
Q3Vyc29yczo6c2VsZigpLT5Dcm9zc0N1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBoYW5kQ3Vy
c29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5Qb2ludGluZ0hhbmRDdXJzb3I7
Ci19Ci0KLWNvbnN0IEN1cnNvciYgaUJlYW1DdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3Jz
OjpzZWxmKCktPklCZWFtQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIHdhaXRDdXJzb3IoKQot
ewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPldhaXRDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1
cnNvciYgaGVscEN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+V2hhdHNU
aGlzQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIGVhc3RSZXNpemVDdXJzb3IoKQotewotICAg
IHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlNpemVIb3JDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNv
ciYgbm9ydGhSZXNpemVDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlNp
emVWZXJDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgbm9ydGhFYXN0UmVzaXplQ3Vyc29yKCkK
LXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5TaXplQkRpYWdDdXJzb3I7Ci19Ci0KLWNv
bnN0IEN1cnNvciYgbm9ydGhXZXN0UmVzaXplQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29y
czo6c2VsZigpLT5TaXplRkRpYWdDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgc291dGhSZXNp
emVDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlNpemVWZXJDdXJzb3I7
Ci19Ci0KLWNvbnN0IEN1cnNvciYgc291dGhFYXN0UmVzaXplQ3Vyc29yKCkKLXsKLSAgICByZXR1
cm4gQ3Vyc29yczo6c2VsZigpLT5TaXplRkRpYWdDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYg
c291dGhXZXN0UmVzaXplQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5T
aXplQkRpYWdDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgd2VzdFJlc2l6ZUN1cnNvcigpCi17
Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+U2l6ZUhvckN1cnNvcjsKLX0KLQotY29uc3Qg
Q3Vyc29yJiBub3J0aFNvdXRoUmVzaXplQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6
c2VsZigpLT5TaXplVmVyQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIGVhc3RXZXN0UmVzaXpl
Q3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5TaXplSG9yQ3Vyc29yOwot
fQotCi1jb25zdCBDdXJzb3ImIG5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNvcigpCi17Ci0g
ICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+U2l6ZUJEaWFnQ3Vyc29yOwotfQotCi1jb25zdCBD
dXJzb3ImIG5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1
cnNvcnM6OnNlbGYoKS0+U2l6ZUZEaWFnQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIGNvbHVt
blJlc2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+U3BsaXRIQ3Vy
c29yOwotfQotCi1jb25zdCBDdXJzb3ImIHJvd1Jlc2l6ZUN1cnNvcigpCi17Ci0gICAgcmV0dXJu
IEN1cnNvcnM6OnNlbGYoKS0+U3BsaXRWQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIG1pZGRs
ZVBhbm5pbmdDdXJzb3IoKQotewotICAgIHJldHVybiBtb3ZlQ3Vyc29yKCk7Ci19Ci0KLWNvbnN0
IEN1cnNvciYgZWFzdFBhbm5pbmdDdXJzb3IoKQotewotICAgIHJldHVybiBlYXN0UmVzaXplQ3Vy
c29yKCk7Ci19Ci0KLWNvbnN0IEN1cnNvciYgbm9ydGhQYW5uaW5nQ3Vyc29yKCkKLXsKLSAgICBy
ZXR1cm4gbm9ydGhSZXNpemVDdXJzb3IoKTsKLX0KLQotY29uc3QgQ3Vyc29yJiBub3J0aEVhc3RQ
YW5uaW5nQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gbm9ydGhFYXN0UmVzaXplQ3Vyc29yKCk7Ci19
Ci0KLWNvbnN0IEN1cnNvciYgbm9ydGhXZXN0UGFubmluZ0N1cnNvcigpCi17Ci0gICAgcmV0dXJu
IG5vcnRoV2VzdFJlc2l6ZUN1cnNvcigpOwotfQotCi1jb25zdCBDdXJzb3ImIHNvdXRoUGFubmlu
Z0N1cnNvcigpCi17Ci0gICAgcmV0dXJuIHNvdXRoUmVzaXplQ3Vyc29yKCk7Ci19Ci0KLWNvbnN0
IEN1cnNvciYgc291dGhFYXN0UGFubmluZ0N1cnNvcigpCi17Ci0gICAgcmV0dXJuIHNvdXRoRWFz
dFJlc2l6ZUN1cnNvcigpOwotfQotCi1jb25zdCBDdXJzb3ImIHNvdXRoV2VzdFBhbm5pbmdDdXJz
b3IoKQotewotICAgIHJldHVybiBzb3V0aFdlc3RSZXNpemVDdXJzb3IoKTsKLX0KLQotY29uc3Qg
Q3Vyc29yJiB3ZXN0UGFubmluZ0N1cnNvcigpCi17Ci0gICAgcmV0dXJuIHdlc3RSZXNpemVDdXJz
b3IoKTsKLX0KLQotY29uc3QgQ3Vyc29yJiB2ZXJ0aWNhbFRleHRDdXJzb3IoKQotewotICAgIHJl
dHVybiBDdXJzb3JzOjpzZWxmKCktPlZlcnRpY2FsVGV4dEN1cnNvcjsKLX0KLQotY29uc3QgQ3Vy
c29yJiBjZWxsQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5DZWxsQ3Vy
c29yOwotfQotCi1jb25zdCBDdXJzb3ImIGNvbnRleHRNZW51Q3Vyc29yKCkKLXsKLSAgICByZXR1
cm4gQ3Vyc29yczo6c2VsZigpLT5Db250ZXh0TWVudUN1cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29y
JiBub0Ryb3BDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPk5vRHJvcEN1
cnNvcjsKLX0KLQotY29uc3QgQ3Vyc29yJiBjb3B5Q3Vyc29yKCkKLXsKLSAgICByZXR1cm4gQ3Vy
c29yczo6c2VsZigpLT5Db3B5Q3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIHByb2dyZXNzQ3Vy
c29yKCkKLXsKLSAgICByZXR1cm4gQ3Vyc29yczo6c2VsZigpLT5Qcm9ncmVzc0N1cnNvcjsKLX0K
LQotY29uc3QgQ3Vyc29yJiBhbGlhc0N1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNl
bGYoKS0+QWxpYXNDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNvciYgbm9uZUN1cnNvcigpCi17Ci0g
ICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+QmxhbmtDdXJzb3I7Ci19Ci0KLWNvbnN0IEN1cnNv
ciYgbm90QWxsb3dlZEN1cnNvcigpCi17Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+Tm9E
cm9wQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIHpvb21JbkN1cnNvcigpCi17Ci0gICAgcmV0
dXJuIEN1cnNvcnM6OnNlbGYoKS0+Wm9vbUluQ3Vyc29yOwotfQotCi1jb25zdCBDdXJzb3ImIHpv
b21PdXRDdXJzb3IoKQotewotICAgIHJldHVybiBDdXJzb3JzOjpzZWxmKCktPlpvb21PdXRDdXJz
b3I7CisgICAgcmV0dXJuICp0aGlzOwogfQogCi1jb25zdCBDdXJzb3ImIGdyYWJDdXJzb3IoKQor
c3RhdGljIFFDdXJzb3IqIGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFnZSogaW1hZ2UsIGNvbnN0IElu
dFBvaW50JiBob3RTcG90KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIEN1
cnNvcnM6OnNlbGYoKS0+UG9pbnRlckN1cnNvcjsKKyNpZm5kZWYgUVRfTk9fQ1VSU09SCisgICAg
SW50UG9pbnQgZWZmZWN0aXZlSG90U3BvdCA9IGRldGVybWluZUhvdFNwb3QoaW1hZ2UsIGhvdFNw
b3QpOworICAgIHJldHVybiBuZXcgUUN1cnNvcigqKGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpKSwgZWZmZWN0aXZlSG90U3BvdC54KCksIGVmZmVjdGl2ZUhvdFNwb3QueSgpKTsK
KyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAotY29uc3QgQ3Vyc29yJiBncmFiYmlu
Z0N1cnNvcigpCit2b2lkIEN1cnNvcjo6ZW5zdXJlUGxhdGZvcm1DdXJzb3IoKSBjb25zdAogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIEN1cnNvcnM6OnNlbGYoKS0+UG9pbnRl
ckN1cnNvcjsKKyNpZm5kZWYgUVRfTk9fQ1VSU09SCisgICAgaWYgKG1fcGxhdGZvcm1DdXJzb3Ip
CisgICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBQb2lu
dGVyOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OkFycm93Q3Vy
c29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcm9zczoKKyAgICAgICAgbV9wbGF0Zm9y
bUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpDcm9zc0N1cnNvcik7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSGFuZDoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0
OjpQb2ludGluZ0hhbmRDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElCZWFtOgor
ICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OklCZWFtQ3Vyc29yKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXYWl0OgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29y
ID0gbmV3IFFDdXJzb3IoUXQ6OldhaXRDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEhlbHA6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6V2hhdHNU
aGlzQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFYXN0UmVzaXplOgorICAgIGNh
c2UgRWFzdFBhbm5pbmc6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihR
dDo6U2l6ZUhvckN1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm9ydGhSZXNpemU6
CisgICAgY2FzZSBOb3J0aFBhbm5pbmc6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcg
UUN1cnNvcihRdDo6U2l6ZVZlckN1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm9y
dGhFYXN0UmVzaXplOgorICAgIGNhc2UgTm9ydGhFYXN0UGFubmluZzoKKyAgICAgICAgbV9wbGF0
Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplQkRpYWdDdXJzb3IpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE5vcnRoV2VzdFJlc2l6ZToKKyAgICBjYXNlIE5vcnRoV2VzdFBhbm5p
bmc6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U2l6ZUZEaWFn
Q3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTb3V0aFJlc2l6ZToKKyAgICBjYXNl
IFNvdXRoUGFubmluZzoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0
OjpTaXplVmVyQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTb3V0aEVhc3RSZXNp
emU6CisgICAgY2FzZSBTb3V0aEVhc3RQYW5uaW5nOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29y
ID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVGRGlhZ0N1cnNvcik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU291dGhXZXN0UmVzaXplOgorICAgIGNhc2UgU291dGhXZXN0UGFubmluZzoKKyAgICAg
ICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplQkRpYWdDdXJzb3IpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlc3RSZXNpemU6CisgICAgY2FzZSBXZXN0UGFubmlu
ZzoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplSG9yQ3Vy
c29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb3J0aFNvdXRoUmVzaXplOgorICAgICAg
ICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVWZXJDdXJzb3IpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEVhc3RXZXN0UmVzaXplOgorICAgICAgICBtX3BsYXRmb3Jt
Q3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVIb3JDdXJzb3IpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIE5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZToKKyAgICAgICAgbV9wbGF0Zm9ybUN1
cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplQkRpYWdDdXJzb3IpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIE5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZToKKyAgICAgICAgbV9wbGF0Zm9ybUN1
cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplRkRpYWdDdXJzb3IpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENvbHVtblJlc2l6ZToKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBR
Q3Vyc29yKFF0OjpTcGxpdEhDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvd1Jl
c2l6ZToKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTcGxpdFZD
dXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1pZGRsZVBhbm5pbmc6CisgICAgY2Fz
ZSBNb3ZlOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVB
bGxDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vbmU6CisgICAgICAgIG1fcGxh
dGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6QmxhbmtDdXJzb3IpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIE5vRHJvcDoKKyAgICBjYXNlIE5vdEFsbG93ZWQ6CisgICAgICAgIG1fcGxh
dGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6Rm9yYmlkZGVuQ3Vyc29yKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBHcmFiOgorICAgIGNhc2UgR3JhYmJpbmc6CisgICAgICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6
QXJyb3dDdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZlcnRpY2FsVGV4dDoKKyAg
ICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmlu
ZygiOi93ZWJraXQvcmVzb3VyY2VzL3ZlcnRpY2FsVGV4dEN1cnNvci5wbmciKSksIDcsIDcpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENlbGw6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3Ig
PSBuZXcgUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy9j
ZWxsQ3Vyc29yLnBuZyIpKSwgNywgNyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29udGV4
dE1lbnU6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRUGl4bWFwKFFM
YXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy9jb250ZXh0TWVudUN1cnNvci5wbmciKSks
IDMsIDIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFsaWFzOgorICAgICAgICBtX3BsYXRm
b3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9y
ZXNvdXJjZXMvYWxpYXNDdXJzb3IucG5nIikpLCAxMSwgMyk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUHJvZ3Jlc3M6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihR
UGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy9wcm9ncmVzc0N1cnNvci5w
bmciKSksIDMsIDIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvcHk6CisgICAgICAgIG1f
cGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Vi
a2l0L3Jlc291cmNlcy9jb3B5Q3Vyc29yLnBuZyIpKSwgMywgMik7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgWm9vbUluOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3Io
UVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMvem9vbUluQ3Vyc29yLnBu
ZyIpKSwgNywgNyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWm9vbU91dDoKKyAgICAgICAg
bV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93
ZWJraXQvcmVzb3VyY2VzL3pvb21PdXRDdXJzb3IucG5nIikpLCA3LCA3KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDdXN0b206CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVD
dXN0b21DdXJzb3IobV9pbWFnZS5nZXQoKSwgbV9ob3RTcG90KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorI2VuZGlm
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvV2lkZ2V0UXQuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAKaW5kZXggMDkwM2I2ZS4uY2RhOTY5ZiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBXaWRnZXQ6
OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKICAgICBRV2ViUGFnZUNsaWVudCogcGFn
ZUNsaWVudCA9IHJvb3QoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKIAog
ICAgIGlmIChwYWdlQ2xpZW50KQotICAgICAgICBwYWdlQ2xpZW50LT5zZXRDdXJzb3IoY3Vyc29y
LmltcGwoKSk7CisgICAgICAgIHBhZ2VDbGllbnQtPnNldEN1cnNvcigqY3Vyc29yLnBsYXRmb3Jt
Q3Vyc29yKCkpOwogI2VuZGlmCiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>