<?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>44089</bug_id>
          
          <creation_ts>2010-08-16 20:36:03 -0700</creation_ts>
          <short_desc>[Qt] Making effective use of Document::nodesFromRect</short_desc>
          <delta_ts>2010-11-12 12:27:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</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>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>40197</dependson>
    
    <dependson>44088</dependson>
    
    <dependson>46336</dependson>
    
    <dependson>46492</dependson>
    
    <dependson>46580</dependson>
    
    <dependson>48450</dependson>
          <blocked>46039</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antonio Gomes">tonikitoo</reporter>
          <assigned_to name="Antonio Gomes">tonikitoo</assigned_to>
          <cc>ademar</cc>
    
    <cc>andre.pedralho</cc>
    
    <cc>ariya.hidayat</cc>
    
    <cc>benjamin</cc>
    
    <cc>christian.webkit</cc>
    
    <cc>dbates</cc>
    
    <cc>gmak</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>klobag</cc>
    
    <cc>luiz</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>265346</commentid>
    <comment_count>0</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-08-16 20:36:03 -0700</bug_when>
    <thetext>nodesFromRect is the interface to make use of in order to explore the rect-based hit testing benefits.

Bug is about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265347</commentid>
    <comment_count>1</comment_count>
      <attachid>64549</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-08-16 20:38:29 -0700</bug_when>
    <thetext>Created attachment 64549
patch v1

Patch adds a helper class (named TouchAdjuster) to improve tap actions on mobile touch devices. TouchAdjuster makes use of the newly added rect based hit test extension through the Document::nodesFromRect method. Given a rectangle as input, nodesFromRect returns a z-index ordered list of nodes whose boundaries intersect the rectangle.

Basically the TouchAdjuster class intercepts the QGraphicsSceneMouseEvent passed to both QWebPagePrivate::mouse{Press,Release}Event methods before they are passed down to WebCore. The goal is to infer the target click position. For that, a rectangle is built up using the event position as a center point and expanding it both horizontally and vertically, based on the values set in QWebSettings::hitTestPadding.

TouchAdjuster iterates over the list of nodes returned by nodesFromRect and picks the clickable one that has the largest intersection area with the hit test rectangle. The target position is then the center point of this intersection area.

In case of no clickable node intersects the hit test area, the click position is not altered.

TouchAdjuster is *only* working for QGraphicsWebView based views.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265350</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-16 20:52:39 -0700</bug_when>
    <thetext>Attachment 64549 did not build on qt:
Build output: http://queues.webkit.org/results/3726278</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265352</commentid>
    <comment_count>3</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-08-16 20:58:40 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 64549 [details] did not build on qt:
&gt; Build output: http://queues.webkit.org/results/3726278

ignore it. It depends on patch from bug 44088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265432</commentid>
    <comment_count>4</comment_count>
      <attachid>64549</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-08-17 01:43:15 -0700</bug_when>
    <thetext>Comment on attachment 64549
patch v1

Looks good. This might perhaps be slightly improved by treating the touch point as circle instead of rect when calculating the intersection size. Something for the future...

&gt; +Element* QWebPagePrivate::TouchAdjuster::toElement(Node* node) const
&gt; +{
&gt; +    return dynamic_cast&lt;Element*&gt;(node);
&gt; +}

dynamic_cast is not allowed in the WebKit. You should do isElementNode() and static_cast instead. 

I&apos;m surprised this compiles for you. RTTI and exceptions should be disabled in the build as it causes bloat. Is it not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265544</commentid>
    <comment_count>5</comment_count>
      <attachid>64591</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-08-17 07:57:30 -0700</bug_when>
    <thetext>Created attachment 64591
patch v2

&gt; &gt; +Element* QWebPagePrivate::TouchAdjuster::toElement(Node* node) const
&gt; &gt; +{
&gt; &gt; +    return dynamic_cast&lt;Element*&gt;(node);
&gt; &gt; +}
&gt; 
&gt; dynamic_cast is not allowed in the WebKit. You should do isElementNode() and static_cast instead. 

Done.

&gt; I&apos;m surprised this compiles for you. RTTI and exceptions should be disabled in the build as it causes bloat. Is it not?

ExceptionCode is being widely used on WebKit/*, incluing Qt as you can see here http://pastebin.com/kkED4Dik</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265548</commentid>
    <comment_count>6</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-08-17 08:00:53 -0700</bug_when>
    <thetext>FYI, also I&apos;ve also started a QTouchEvent support as well. But it can come in a follow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265556</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-17 08:14:00 -0700</bug_when>
    <thetext>Attachment 64591 did not build on qt:
Build output: http://queues.webkit.org/results/3753334</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266114</commentid>
    <comment_count>8</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-08-18 08:28:50 -0700</bug_when>
    <thetext>*** Bug 36111 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267750</commentid>
    <comment_count>9</comment_count>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-08-22 21:47:19 -0700</bug_when>
    <thetext>Antonio, do you know why it does not build for Qt EWS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267784</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-08-23 00:48:03 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Antonio, do you know why it does not build for Qt EWS?

Because QWebSettings has no member named hitTestPadding. I checked,
it doesn&apos;t exist in Qt-4.6 and Qt-4.7 (ToT). Is this a new feature?

error message from EWS:
../../../WebKit/qt/Api/qwebpage.cpp:1394: error: &apos;class QWebSettings&apos; has no member named &apos;hitTestPadding&apos;
../../../WebKit/qt/Api/qwebpage.cpp:1395: error: &apos;class QWebSettings&apos; has no member named &apos;hitTestPadding&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267785</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-08-23 00:49:48 -0700</bug_when>
    <thetext>I got it, hitTestPadding will be added in:
https://bugs.webkit.org/show_bug.cgi?id=44088

EWS will fail on this patch until 44088 fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268548</commentid>
    <comment_count>12</comment_count>
      <attachid>64591</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-08-24 07:39:48 -0700</bug_when>
    <thetext>Comment on attachment 64591
patch v2

Clearing the review flag. New version coming, cleaner and supporting inner frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273596</commentid>
    <comment_count>13</comment_count>
      <attachid>66416</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-02 15:03:17 -0700</bug_when>
    <thetext>Created attachment 66416
patch v3 (it will fail in Qt-EWS until bug 44088 lands)

Improvements from v2 (attachment 64591):

- inner frames working;
- scrolled content working (offset was not being considered).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278025</commentid>
    <comment_count>14</comment_count>
      <attachid>66416</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-13 00:22:53 -0700</bug_when>
    <thetext>Comment on attachment 66416
patch v3 (it will fail in Qt-EWS until bug 44088 lands)

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

&gt; WebKit/qt/Api/qwebpage.cpp:1584
&gt; +IntPoint QWebPagePrivate::TouchAdjuster::findCandidatePointForTouch(const IntPoint&amp; touchPoint, Document* document) const
ForTouchPoint?

&gt; WebKit/qt/Api/qwebpage.cpp:1614
&gt; +        if (area(boundingRect) &gt; area(biggerIntersectionRect)) {
I would remove the area methods and just do &quot;int area = width * height;&quot; above. It is a bit overkill and makes the code less obvious

&gt; WebKit/qt/Api/qwebpage.cpp:1616
&gt; +            biggerIntersectionRect = boundingRect;
largestIntersectionRect ? It is bigger than what?

&gt; WebKit/qt/Api/qwebpage.cpp:1629
&gt; +        // Adjust client coordinates&apos; origin to be top left of iframe viewport.
How do you know it is an iframe here?

&gt; WebKit/qt/Api/qwebpage.cpp:1632
&gt; +        IntSize offset =  IntSize(rect-&gt;left(), rect-&gt;top());
offset_s_? how can an offset be a size?

&gt; WebKit/qt/Api/qwebpage.cpp:1635
&gt; +        HTMLFrameOwnerElement* owner = static_cast&lt;HTMLFrameOwnerElement*&gt;(clickedElement);
This will always work?

&gt; WebKit/qt/Api/qwebpage.cpp:1637
&gt; +        return findCandidatePointForTouch(newTouchPoint, subDocument);
childDocument?

&gt; WebKit/qt/Api/qwebpage.cpp:1644
&gt; +bool QWebPagePrivate::TouchAdjuster::isElementClickable(Element* element, RefPtr&lt;NodeList&gt; list) const
isClickableElement?

&gt; WebKit/qt/Api/qwebpage.cpp:1653
&gt; +        for (int i = 0; i &lt; count &amp;&amp; parent; i++) {
unsigned?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281139</commentid>
    <comment_count>15</comment_count>
      <attachid>68010</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-18 08:57:45 -0700</bug_when>
    <thetext>Created attachment 68010
patch v4 - addressed kenneth&apos;s comments (it will fail until bug 44088 is in)

Comments addressed.

&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1584
&gt; &gt; +IntPoint QWebPagePrivate::TouchAdjuster::findCandidatePointForTouch(const IntPoint&amp; touchPoint, Document* document) const
&gt; ForTouchPoint? 

Hum ... Not sure I left as is as a personal preference, but I can change that if you really prefer.

&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1614
&gt; &gt; +        if (area(boundingRect) &gt; area(biggerIntersectionRect)) {
&gt; I would remove the area methods and just do &quot;int area = width * height;&quot; above. It is a bit overkill and makes the code less obvious

Done.

&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1616
&gt; &gt; +            biggerIntersectionRect = boundingRect;
&gt; largestIntersectionRect ? It is bigger than what?
&gt; 
&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1629
&gt; &gt; +        // Adjust client coordinates&apos; origin to be top left of iframe viewport.
&gt; How do you know it is an iframe here?

I meant inner frame, so either a frame or a iframe. nice catch.

&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1632
&gt; &gt; +        IntSize offset =  IntSize(rect-&gt;left(), rect-&gt;top());
&gt; offset_s_? how can an offset be a size?
&gt; 
&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1635
&gt; &gt; +        HTMLFrameOwnerElement* owner = static_cast&lt;HTMLFrameOwnerElement*&gt;(clickedElement);
&gt; This will always work?

Yes, because we test isFrameOwner() before.

&gt; 
&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1637
&gt; &gt; +        return findCandidatePointForTouch(newTouchPoint, subDocument);
&gt; childDocument?

Renamed.

&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1644
&gt; &gt; +bool QWebPagePrivate::TouchAdjuster::isElementClickable(Element* element, RefPtr&lt;NodeList&gt; list) const
&gt; isClickableElement?
&gt; 
&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1653
&gt; &gt; +        for (int i = 0; i &lt; count &amp;&amp; parent; i++) {
&gt; unsigned?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281150</commentid>
    <comment_count>16</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-18 09:35:52 -0700</bug_when>
    <thetext>QtTestBrowser test for the feature happening in bug 46039.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281190</commentid>
    <comment_count>17</comment_count>
      <attachid>68010</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-18 15:48:21 -0700</bug_when>
    <thetext>Comment on attachment 68010
patch v4 - addressed kenneth&apos;s comments (it will fail until bug 44088 is in)

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

&gt; WebKit/qt/Api/qwebpage.cpp:1685
&gt; +    // NOTE: The implementation of this method has to be sync&apos;ed with HitTestResult::regionFromPoint.

Isn&apos;t there a way to avoid this? Should it be a FIXME instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281194</commentid>
    <comment_count>18</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-18 15:55:37 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 68010 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68010&amp;action=prettypatch
&gt; 
&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1685
&gt; &gt; +    // NOTE: The implementation of this method has to be sync&apos;ed with HitTestResult::regionFromPoint.
&gt; 
&gt; Isn&apos;t there a way to avoid this? Should it be a FIXME instead?

As the code is currently in HitTestResult, there is no way to make sure these two methods are in sync.

In a follow up we might add a static method to HitTestResult like rectFromRect(IntPoint, unsigned hPadiding, unsigned vPadding). It would return the IntRect we need using the math in HitTestResult to build up the rect. They we would be always in sync.

Worth it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281195</commentid>
    <comment_count>19</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-18 15:58:53 -0700</bug_when>
    <thetext>we need some way to make sure they dont get out of sync? test or something else</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304742</commentid>
    <comment_count>20</comment_count>
      <attachid>72959</attachid>
    <who name="Andre Pedralho">andre.pedralho</who>
    <bug_when>2010-11-04 10:38:46 -0700</bug_when>
    <thetext>Created attachment 72959
(committed r71393, r=kenneth,anttik) Updating last patch against ToT, and changed it to use the Platform Plugin QWebTouchModifier instead of QWebSettings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304777</commentid>
    <comment_count>21</comment_count>
    <who name="Andre Pedralho">andre.pedralho</who>
    <bug_when>2010-11-04 11:41:55 -0700</bug_when>
    <thetext>Adding myself to the CC list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304797</commentid>
    <comment_count>22</comment_count>
      <attachid>72959</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-11-04 12:25:14 -0700</bug_when>
    <thetext>Comment on attachment 72959
(committed r71393, r=kenneth,anttik) Updating last patch against ToT, and changed it to use the Platform Plugin QWebTouchModifier instead of QWebSettings.

Could you implement this for WebKit2/Qt as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304798</commentid>
    <comment_count>23</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-11-04 12:30:05 -0700</bug_when>
    <thetext>Can&apos;t some of this code be moved into webcore somehow, so that we can share it across webkit1 and 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304805</commentid>
    <comment_count>24</comment_count>
    <who name="Andre Pedralho">andre.pedralho</who>
    <bug_when>2010-11-04 12:46:31 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Can&apos;t some of this code be moved into webcore somehow, so that we can share it across webkit1 and 2

The first problem here I could see is that we use the QtPlatformPlugin to specify the padding values and AFAIK we don&apos;t have access to it in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304806</commentid>
    <comment_count>25</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-11-04 12:48:48 -0700</bug_when>
    <thetext>isClickableElement and indCandidatePointForTouch seems like good candidates... not indCandidatePointForTouch - that method can easily live in WebKit and be duplicated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304830</commentid>
    <comment_count>26</comment_count>
      <attachid>72959</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-11-04 13:26:51 -0700</bug_when>
    <thetext>Comment on attachment 72959
(committed r71393, r=kenneth,anttik) Updating last patch against ToT, and changed it to use the Platform Plugin QWebTouchModifier instead of QWebSettings.

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

Can;t the whole TouchAdjuster to move into WebCore? Looking at the code that seems quite possible.

&gt; WebKit/qt/Api/qwebpage.cpp:1281
&gt; +void QWebPagePrivate::adjustPointForClicking(QGraphicsSceneMouseEvent* ev, Document* startingDocument)

You dont need Document here... inside the method you can just do page-&gt;mainFrame()-&gt;document(). I find that a bit nicer... not using internal WebCore types in our Qt (internal) method definition more than needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304942</commentid>
    <comment_count>27</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-11-04 15:46:02 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 72959 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72959&amp;action=review
&gt; 
&gt; Can;t the whole TouchAdjuster to move into WebCore? Looking at the code that seems quite possible.
&gt; 
&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1281
&gt; &gt; +void QWebPagePrivate::adjustPointForClicking(QGraphicsSceneMouseEvent* ev, Document* startingDocument)
&gt; 
&gt; You dont need Document here... inside the method you can just do page-&gt;mainFrame()-&gt;document(). I find that a bit nicer... not using internal WebCore types in our Qt (internal) method definition more than needed.

Document is needed. We use it for inner frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304945</commentid>
    <comment_count>28</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-11-04 15:48:52 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; (From update of attachment 72959 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72959&amp;action=review
&gt; &gt; 
&gt; &gt; Can;t the whole TouchAdjuster to move into WebCore? Looking at the code that seems quite possible.
&gt; &gt; 
&gt; &gt; &gt; WebKit/qt/Api/qwebpage.cpp:1281
&gt; &gt; &gt; +void QWebPagePrivate::adjustPointForClicking(QGraphicsSceneMouseEvent* ev, Document* startingDocument)
&gt; &gt; 
&gt; &gt; You dont need Document here... inside the method you can just do page-&gt;mainFrame()-&gt;document(). I find that a bit nicer... not using internal WebCore types in our Qt (internal) method definition more than needed.
&gt; 
&gt; Document is needed. We use it for inner frames.

reread my comment :-) you can get the document, you already have the page!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304988</commentid>
    <comment_count>29</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-11-04 16:32:17 -0700</bug_when>
    <thetext>
&gt; &gt; 
&gt; &gt; Document is needed. We use it for inner frames.
&gt; 
&gt; reread my comment :-) you can get the document, you already have the page!

There is no place it is being called with something else than page-&gt;mainFrame()-&gt;document().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305008</commentid>
    <comment_count>30</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-11-04 16:54:35 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; &gt; &gt; 
&gt; &gt; &gt; Document is needed. We use it for inner frames.
&gt; &gt; 
&gt; &gt; reread my comment :-) you can get the document, you already have the page!
&gt; 
&gt; There is no place it is being called with something else than page-&gt;mainFrame()-&gt;document().

Sure thing. I thought you were referring to the recursive method we are adding. Will fix before land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305142</commentid>
    <comment_count>31</comment_count>
      <attachid>72959</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-11-04 22:09:58 -0700</bug_when>
    <thetext>Comment on attachment 72959
(committed r71393, r=kenneth,anttik) Updating last patch against ToT, and changed it to use the Platform Plugin QWebTouchModifier instead of QWebSettings.

Clearing review flags on attachment 72959

Committed r71393: &lt;http://trac.webkit.org/changeset/71393&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305148</commentid>
    <comment_count>32</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-11-04 22:28:39 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; isClickableElement and indCandidatePointForTouch seems like good candidates... not indCandidatePointForTouch - that method can easily live in WebKit and be duplicated

File bug 49057 about it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308094</commentid>
    <comment_count>33</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2010-11-11 13:18:04 -0800</bug_when>
    <thetext>I managed to backport/cherry-pick the changes to qtwebkit-2.1, but in order to do that I had to cherry-pick a few other patches (solving conflicts along the way).

Being so close to the release, I would surelly sleep better at night if someone could review my changes before I push them to qtwebkit-2.1. :-)

The stack of patches looks like this:

Enhance the hit testing to take a rectangle instead of a point
https://bugs.webkit.org/show_bug.cgi?id=40197
(already pushed to 2.1)

Using the Platform Plugin to define the default values for the padding of HitTestResult.
https://bugs.webkit.org/show_bug.cgi?id=48450
(already pushed to 2.1)

[Mac][DRT] Implement LayoutTestController::nodesFromRect
https://bugs.webkit.org/show_bug.cgi?id=46580

Make Document::nodesFromRect more flexible
https://bugs.webkit.org/show_bug.cgi?id=46336

document.nodesFromRect() needs to be removed from Document.idl
https://bugs.webkit.org/show_bug.cgi?id=46492

[Qt] Making effective use of nodesFromRect.
https://bugs.webkit.org/show_bug.cgi?id=44089
(this one)

Could someone please rubberstamp my changes? Although it&apos;s building fine, I may be missing an important patch or something.

I pushed the changes to a temporary branch: http://gitorious.org/+qtwebkit-developers/webkit/qtwebkit/commits/qtwebkit-2.1-wip.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308618</commentid>
    <comment_count>34</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2010-11-12 10:05:42 -0800</bug_when>
    <thetext>Adding several bug dependencies (see comment #33)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308701</commentid>
    <comment_count>35</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2010-11-12 12:25:09 -0800</bug_when>
    <thetext>Revision r71393 cherry-picked into qtwebkit-2.1 with commit 3650536 &lt;http://gitorious.org/webkit/qtwebkit/commit/3650536&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64549</attachid>
            <date>2010-08-16 20:38:29 -0700</date>
            <delta_ts>2010-08-17 07:57:30 -0700</delta_ts>
            <desc>patch v1</desc>
            <filename>0002-2010-07-23-Antonio-Gomes-tonikitoo-webkit.org.patch</filename>
            <type>text/plain</type>
            <size>11609</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA1MWFlMTFiZWExYmRjMDk1ZTU5NTM0ZjlkNDk2ZGJhMzA4ZjZhNjIwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxOSBKdWwgMjAxMCAwOTo1MzoyMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMi8z
XSAyMDEwLTA3LTIzICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CgogICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbUXRdIE1ha2luZyBlZmZl
Y3RpdmUgdXNlIG9mIG5vZGVzRnJvbVJlY3QuCgogICAgICAgIFBhdGNoIGFkZHMgYSBoZWxwZXIg
Y2xhc3MgKG5hbWVkIFRvdWNoQWRqdXN0ZXIpIHRvIGltcHJvdmUgdGFwIGFjdGlvbnMKICAgICAg
ICBvbiBtb2JpbGUgdG91Y2ggZGV2aWNlcy4gVG91Y2hBZGp1c3RlciBtYWtlcyB1c2Ugb2YgdGhl
IG5ld2x5IGFkZGVkIHJlY3QKICAgICAgICBiYXNlZCBoaXQgdGVzdCBleHRlbnNpb24gdGhyb3Vn
aCB0aGUgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgbWV0aG9kLgogICAgICAgIEdpdmVuIGEgcmVj
dGFuZ2xlIGFzIGlucHV0LCBub2Rlc0Zyb21SZWN0IHJldHVybnMgYSB6LWluZGV4IG9yZGVyZWQg
bGlzdAogICAgICAgIG9mIG5vZGVzIHdob3NlIGJvdW5kYXJpZXMgaW50ZXJzZWN0IHRoZSByZWN0
YW5nbGUuCgogICAgICAgIEJhc2ljYWxseSB0aGUgVG91Y2hBZGp1c3RlciBjbGFzcyBpbnRlcmNl
cHRzIHRoZSBRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQKICAgICAgICBwYXNzZWQgdG8gYm90aCBR
V2ViUGFnZVByaXZhdGU6Om1vdXNle1ByZXNzLFJlbGVhc2V9RXZlbnQgbWV0aG9kcyBiZWZvcmUK
ICAgICAgICB0aGV5IGFyZSBwYXNzZWQgZG93biB0byBXZWJDb3JlLiBUaGUgZ29hbCBpcyB0byBp
bmZlciB0aGUgdGFyZ2V0IGNsaWNrIHBvc2l0aW9uLgogICAgICAgIEZvciB0aGF0LCBhIHJlY3Rh
bmdsZSBpcyBidWlsdCB1cCB1c2luZyB0aGUgZXZlbnQgcG9zaXRpb24gYXMgYSBjZW50ZXIgcG9p
bnQgYW5kCiAgICAgICAgZXhwYW5kaW5nIGl0IGJvdGggaG9yaXpvbnRhbGx5IGFuZCB2ZXJ0aWNh
bGx5LCBiYXNlZCBvbiB0aGUgdmFsdWVzIHNldCBpbgogICAgICAgIFFXZWJTZXR0aW5nczo6aGl0
VGVzdFBhZGRpbmcuCgogICAgICAgIFRvdWNoQWRqdXN0ZXIgaXRlcmF0ZXMgb3ZlciB0aGUgbGlz
dCBvZiBub2RlcyByZXR1cm5lZCBieSBub2Rlc0Zyb21SZWN0IGFuZAogICAgICAgIHBpY2tzIHRo
ZSBjbGlja2FibGUgb25lIHRoYXQgaGFzIHRoZSBsYXJnZXN0IGludGVyc2VjdGlvbiBhcmVhIHdp
dGggdGhlIGhpdAogICAgICAgIHRlc3QgcmVjdGFuZ2xlLiBUaGUgdGFyZ2V0IHBvc2l0aW9uIGlz
IHRoZW4gdGhlIGNlbnRlciBwb2ludCBvZiB0aGlzIGludGVyc2VjdGlvbgogICAgICAgIGFyZWEu
CgogICAgICAgIEluIGNhc2Ugb2Ygbm8gY2xpY2thYmxlIG5vZGUgaW50ZXJzZWN0cyB0aGUgaGl0
IHRlc3QgYXJlYSwgdGhlIGNsaWNrIHBvc2l0aW9uCiAgICAgICAgaXMgbm90IGFsdGVyZWQuCgog
ICAgICAgIFRvdWNoQWRqdXN0ZXIgaXMgKm9ubHkqIHdvcmtpbmcgZm9yIFFHcmFwaGljc1dlYlZp
ZXcgYmFzZWQgdmlld3MuCgogICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKICAgICAgICAoVG91
Y2hBZGp1c3Rlcjo6VG91Y2hBZGp1c3Rlcik6CiAgICAgICAgKFRvdWNoQWRqdXN0ZXI6OmZpbmRD
YW5kaWRhdGVQb2ludEZvclRvdWNoKToKICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6aXNFbGVtZW50
Q2xpY2thYmxlKToKICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6aGFzTW91c2VMaXN0ZW5lcik6CiAg
ICAgICAgKFRvdWNoQWRqdXN0ZXI6OmFyZWFGcm9tUG9pbnQpOgogICAgICAgIChUb3VjaEFkanVz
dGVyOjphcmVhKToKICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6dG9FbGVtZW50KToKICAgICAgICAo
UVdlYlBhZ2VQcml2YXRlOjptb3VzZVByZXNzRXZlbnQpOgogICAgICAgIChRV2ViUGFnZVByaXZh
dGU6Om1vdXNlUmVsZWFzZUV2ZW50KToKICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjphZGp1c3RQ
b2ludEZvckNsaWNraW5nKToKICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6Ci0tLQogV2ViS2l0
L3F0L0FwaS9xd2VicGFnZS5jcHAgfCAgMTEzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaCB8ICAgMjQgKysrKysr
KysrCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICB8ICAgNDIgKysrKysrKysrKysrKysrKwog
MyBmaWxlcyBjaGFuZ2VkLCAxNzkgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCmluZGV4IDUxNmViYzkuLmI4Y2U5NzIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkv
cXdlYnBhZ2UuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0zMiw2ICsz
Miw4IEBACiAjaW5jbHVkZSAicXdlYnNldHRpbmdzLmgiCiAjaW5jbHVkZSAicXdlYmtpdHZlcnNp
b24uaCIKIAorI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgorI2luY2x1
ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNvbnRleHRN
ZW51Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC02MzUsNiArNjM3LDcgQEAg
dm9pZCBRV2ViUGFnZVByaXZhdGU6Om1vdXNlUHJlc3NFdmVudChRR3JhcGhpY3NTY2VuZU1vdXNl
RXZlbnQqIGV2KQogICAgIH0KIAogICAgIGJvb2wgYWNjZXB0ZWQgPSBmYWxzZTsKKyAgICBhZGp1
c3RQb2ludEZvckNsaWNraW5nKGV2LCBwYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAg
ICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1ldihldiwgMSk7CiAgICAgLy8gaWdub3JlIHRoZSBldmVu
dCBpZiB3ZSBjYW4ndCBtYXAgUXQncyBtb3VzZSBidXR0b25zIHRvIFdlYkNvcmU6Ok1vdXNlQnV0
dG9uCiAgICAgaWYgKG1ldi5idXR0b24oKSAhPSBOb0J1dHRvbikKQEAgLTc3Niw2ICs3NzksNyBA
QCB2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VSZWxlYXNlRXZlbnQoUUdyYXBoaWNzU2NlbmVN
b3VzZUV2ZW50KiBldikKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBhY2NlcHRlZCA9IGZh
bHNlOworICAgIGFkanVzdFBvaW50Rm9yQ2xpY2tpbmcoZXYsIHBhZ2UtPm1haW5GcmFtZSgpLT5k
b2N1bWVudCgpKTsKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbWV2KGV2LCAwKTsKICAgICAvLyBp
Z25vcmUgdGhlIGV2ZW50IGlmIHdlIGNhbid0IG1hcCBRdCdzIG1vdXNlIGJ1dHRvbnMgdG8gV2Vi
Q29yZTo6TW91c2VCdXR0b24KICAgICBpZiAobWV2LmJ1dHRvbigpICE9IE5vQnV0dG9uKQpAQCAt
MTM4NSw2ICsxMzg5LDIxIEBAIGJvb2wgUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTY3JvbGxpbmco
UUtleUV2ZW50ICpldiwgRnJhbWUgKmZyYW1lKQogICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPnNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwogfQogCit2
b2lkIFFXZWJQYWdlUHJpdmF0ZTo6YWRqdXN0UG9pbnRGb3JDbGlja2luZyhRR3JhcGhpY3NTY2Vu
ZU1vdXNlRXZlbnQqIGV2LCBEb2N1bWVudCogc3RhcnRpbmdEb2N1bWVudCkKK3sKKyAgICB1bnNp
Z25lZCBob3Jpem9udGFsUGFkZGluZyA9IHEtPnNldHRpbmdzKCktPmhpdFRlc3RQYWRkaW5nKFF0
OjpIb3Jpem9udGFsKTsKKyAgICB1bnNpZ25lZCB2ZXJ0aWNhbFBhZGRpbmcgPSBxLT5zZXR0aW5n
cygpLT5oaXRUZXN0UGFkZGluZyhRdDo6VmVydGljYWwpOworICAgIGlmICghaG9yaXpvbnRhbFBh
ZGRpbmcgJiYgIXZlcnRpY2FsUGFkZGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50UG9p
bnQgb3JpZ2luYWxQb2ludChldi0+cG9zKCkudG9Qb2ludCgpKTsKKyAgICBJbnRQb2ludCBhZGp1
c3RlZFBvaW50ID0gVG91Y2hBZGp1c3RlcihvcmlnaW5hbFBvaW50LCBob3Jpem9udGFsUGFkZGlu
ZywgdmVydGljYWxQYWRkaW5nKS5maW5kQ2FuZGlkYXRlUG9pbnRGb3JUb3VjaChzdGFydGluZ0Rv
Y3VtZW50KTsKKyAgICBpZiAoYWRqdXN0ZWRQb2ludCA9PSBJbnRQb2ludDo6emVybygpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBldi0+c2V0UG9zKFFQb2ludEYoYWRqdXN0ZWRQb2ludCkpOwor
fQorCiAjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDYsIDApCiBib29sIFFX
ZWJQYWdlUHJpdmF0ZTo6dG91Y2hFdmVudChRVG91Y2hFdmVudCogZXZlbnQpCiB7CkBAIC0xNTUz
LDYgKzE1NzIsMTAwIEBAIEluc3BlY3RvckNvbnRyb2xsZXIqIFFXZWJQYWdlUHJpdmF0ZTo6aW5z
cGVjdG9yQ29udHJvbGxlcigpCiAjZW5kaWYKIH0KIAorUVdlYlBhZ2VQcml2YXRlOjpUb3VjaEFk
anVzdGVyOjpUb3VjaEFkanVzdGVyKGNvbnN0IEludFBvaW50JiB0b3VjaFBvaW50LCB1bnNpZ25l
ZCBoUGFkZGluZywgdW5zaWduZWQgdlBhZGRpbmcpCisgICAgOiBtX29yaWdpbmFsUG9pbnQodG91
Y2hQb2ludCkKKyAgICAsIG1faG9yaXpvbnRhbFBhZGRpbmcoaFBhZGRpbmcpCisgICAgLCBtX3Zl
cnRpY2FsUGFkZGluZyh2UGFkZGluZykKK3sKK30KKworSW50UG9pbnQgUVdlYlBhZ2VQcml2YXRl
OjpUb3VjaEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRlUG9pbnRGb3JUb3VjaChEb2N1bWVudCogZG9j
dW1lbnQpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIEludFBv
aW50KCk7CisKKyAgICBpbnQgeCA9IG1fb3JpZ2luYWxQb2ludC54KCk7CisgICAgaW50IHkgPSBt
X29yaWdpbmFsUG9pbnQueSgpOworCisgICAgUmVmUHRyPE5vZGVMaXN0PiBpbnRlcnNlY3RlZE5v
ZGVzID0gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwgbV9ob3Jpem9udGFsUGFkZGluZywg
bV92ZXJ0aWNhbFBhZGRpbmcsIGZhbHNlKTsKKyAgICBpZiAoIWludGVyc2VjdGVkTm9kZXMpCisg
ICAgICAgIHJldHVybiBJbnRQb2ludCgpOworCisgICAgSW50UG9pbnQgYWRqdXN0ZWRQb2ludDsK
KyAgICBJbnRSZWN0IGJpZ2dlckludGVyc2VjdGlvblJlY3Q7CisgICAgLy8gSXRlcmF0ZSBvdmVy
IHRoZSBsaXN0IG9mIG5vZGVzIGhpdCBsb29raW5nIGZvciB0aGUgb25lIHdob3NlIGJvdW5kaW5n
IGFyZWEKKyAgICAvLyBoYXMgYmlnZ2VyIGludGVyc2VjdGlvbiB3aXRoIHRoZSB0b3VjaCBhcmVh
IChwb2ludCArIHBhZGRpbmcpLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRlcnNl
Y3RlZE5vZGVzLT5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIE5vZGUqIGN1cnJlbnQgPSBpbnRl
cnNlY3RlZE5vZGVzLT5pdGVtKGkpOworICAgICAgICBpZiAoIWN1cnJlbnQtPmlzRWxlbWVudE5v
ZGUoKSB8fCAhaXNFbGVtZW50Q2xpY2thYmxlKHRvRWxlbWVudChjdXJyZW50KSwgMCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBJbnRSZWN0IGJvdW5kaW5nUmVjdCA9IGN1cnJl
bnQtPmdldFJlY3QoKTsKKyAgICAgICAgYm91bmRpbmdSZWN0LmludGVyc2VjdChhcmVhRnJvbVBv
aW50KHgsIHkpKTsKKyAgICAgICAgaWYgKGJvdW5kaW5nUmVjdC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoYXJlYShib3VuZGluZ1JlY3QpID4gYXJlYShi
aWdnZXJJbnRlcnNlY3Rpb25SZWN0KSkgeworICAgICAgICAgICAgYWRqdXN0ZWRQb2ludC5zZXRY
KGJvdW5kaW5nUmVjdC5jZW50ZXIoKS54KCkpOworICAgICAgICAgICAgYWRqdXN0ZWRQb2ludC5z
ZXRZKGJvdW5kaW5nUmVjdC5jZW50ZXIoKS55KCkpOworICAgICAgICAgICAgYmlnZ2VySW50ZXJz
ZWN0aW9uUmVjdCA9IGJvdW5kaW5nUmVjdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBhZGp1c3RlZFBvaW50OworfQorCitib29sIFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rl
cjo6aXNFbGVtZW50Q2xpY2thYmxlKEVsZW1lbnQqIGVsZW1lbnQsIFJlZlB0cjxOb2RlTGlzdD4g
bGlzdCkgY29uc3QKK3sKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGJvb2wgaXNDbGlja2FibGUgPSBoYXNNb3VzZUxpc3RlbmVyKGVsZW1lbnQpOworICAg
IGlmICghaXNDbGlja2FibGUgJiYgbGlzdCkgeworICAgICAgICBFbGVtZW50KiBwYXJlbnQgPSBl
bGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CisgICAgICAgIHVuc2lnbmVkIGNvdW50ID0gbGlzdC0+
bGVuZ3RoKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQgJiYgcGFyZW50OyBp
KyspIHsKKyAgICAgICAgICAgIGlmIChsaXN0LT5pdGVtKGkpICE9IHBhcmVudCkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaXNDbGlja2FibGUgPSBoYXNNb3VzZUxp
c3RlbmVyKHBhcmVudCk7CisgICAgICAgICAgICBpZiAoaXNDbGlja2FibGUpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50RWxlbWVu
dCgpOworICAgICAgICB9CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
cmV0dXJuIGlzQ2xpY2thYmxlCisgICAgICAgIHx8IGVsZW1lbnQtPndlYmtpdE1hdGNoZXNTZWxl
Y3RvcigiYSwqOmxpbmssKjp2aXNpdGVkLCpbcm9sZT1idXR0b25dLGJ1dHRvbixpbnB1dCxzZWxl
Y3QsbGFiZWwiLCBlYykKKyAgICAgICAgfHwgY29tcHV0ZWRTdHlsZShlbGVtZW50KS0+Z2V0UHJv
cGVydHlWYWx1ZShjc3NQcm9wZXJ0eUlEKCJjdXJzb3IiKSkgPT0gInBvaW50ZXIiOworfQorCiti
b29sIFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6aGFzTW91c2VMaXN0ZW5lcihFbGVt
ZW50KiBlbGVtZW50KSBjb25zdAoreworICAgIHJldHVybiBlbGVtZW50LT5oYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkuY2xpY2tFdmVudCkKKyAgICAgICAgfHwgZWxlbWVudC0+aGFzRXZl
bnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KQorICAgICAgICB8fCBlbGVt
ZW50LT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KTsKK30KKwor
SW50UmVjdCBRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmFyZWFGcm9tUG9pbnQoaW50
IHgsIGludCB5KSBjb25zdAoreworICAgIC8vIE5PVEU6IFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0
aGlzIG1ldGhvZCBoYXMgdG8gYmUgc3luYydlZCB3aXRoIEhpdFRlc3RSZXN1bHQ6OnJlZ2lvbkZy
b21Qb2ludC4KKyAgICByZXR1cm4gSW50UmVjdCh4IC0gbV9ob3Jpem9udGFsUGFkZGluZywgeSAt
IG1fdmVydGljYWxQYWRkaW5nLAorICAgICAgICAgICAgICAgICAgIDIgKiBtX2hvcml6b250YWxQ
YWRkaW5nICsgMSwgMiAqIG1fdmVydGljYWxQYWRkaW5nICsgMSk7Cit9CisKK2ludCBRV2ViUGFn
ZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmFyZWEoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QK
K3sKKyAgICByZXR1cm4gcmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKTsKK30KKworRWxlbWVu
dCogUVdlYlBhZ2VQcml2YXRlOjpUb3VjaEFkanVzdGVyOjp0b0VsZW1lbnQoTm9kZSogbm9kZSkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZHluYW1pY19jYXN0PEVsZW1lbnQqPihub2RlKTsKK30KKwog
CiAvKiEKICAgIFxlbnVtIFFXZWJQYWdlOjpGaW5kRmxhZwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZV9wLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAppbmRleCBjZjRh
Yjg4Li41NjdmZTEzIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAorKysg
Yi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
InF3ZWJoaXN0b3J5LmgiCiAjaW5jbHVkZSAicXdlYmZyYW1lLmgiCiAKKyNpbmNsdWRlICJJbnRQ
b2ludC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgog
CkBAIC00MSwxMCArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENvbnRl
eHRNZW51Q2xpZW50UXQ7CiAgICAgY2xhc3MgQ29udGV4dE1lbnVJdGVtOwogICAgIGNsYXNzIENv
bnRleHRNZW51OworICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNsYXNzIEVkaXRvckNsaWVudFF0
OwogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKKyAg
ICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIE5vZGU7CisgICAgY2xhc3MgTm9kZUxpc3Q7CiAg
ICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBGcmFtZTsKIH0KQEAgLTEzNiw2ICsxNDAsMjYgQEAg
cHVibGljOgogICAgIGJvb2wgdG91Y2hFdmVudChRVG91Y2hFdmVudCopOwogI2VuZGlmCiAKKyAg
ICBjbGFzcyBUb3VjaEFkanVzdGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFRvdWNoQWRqdXN0
ZXIoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRvdWNoUG9pbnQsIHVuc2lnbmVkIGhvcml6b250
YWxQYWRkaW5nLCB1bnNpZ25lZCB2ZXJ0aWNhbFBhZGRpbmcpOworCisgICAgICAgIFdlYkNvcmU6
OkludFBvaW50IGZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKFdlYkNvcmU6OkRvY3VtZW50Kikg
Y29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIGlzRWxlbWVudENsaWNrYWJsZShX
ZWJDb3JlOjpFbGVtZW50KiwgV1RGOjpSZWZQdHI8V2ViQ29yZTo6Tm9kZUxpc3Q+KSBjb25zdDsK
KyAgICAgICAgYm9vbCBoYXNNb3VzZUxpc3RlbmVyKFdlYkNvcmU6OkVsZW1lbnQqKSBjb25zdDsK
KyAgICAgICAgaW5saW5lIGludCBhcmVhKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdDsK
KyAgICAgICAgaW5saW5lIFdlYkNvcmU6OkludFJlY3QgYXJlYUZyb21Qb2ludChpbnQgeCwgaW50
IHkpIGNvbnN0OworICAgICAgICBpbmxpbmUgV2ViQ29yZTo6RWxlbWVudCogdG9FbGVtZW50KFdl
YkNvcmU6Ok5vZGUqKSBjb25zdDsKKworICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX29yaWdp
bmFsUG9pbnQ7CisgICAgICAgIHVuc2lnbmVkIG1faG9yaXpvbnRhbFBhZGRpbmc7CisgICAgICAg
IHVuc2lnbmVkIG1fdmVydGljYWxQYWRkaW5nOworICAgIH07CisKKyAgICB2b2lkIGFkanVzdFBv
aW50Rm9yQ2xpY2tpbmcoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiwgV2ViQ29yZTo6RG9jdW1l
bnQqKTsKKwogICAgIHZvaWQgc2V0SW5zcGVjdG9yKFFXZWJJbnNwZWN0b3IqKTsKICAgICBRV2Vi
SW5zcGVjdG9yKiBnZXRPckNyZWF0ZUluc3BlY3RvcigpOwogICAgIFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9x
dC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGMyMDE2MzAuLmU0NDU5MzUg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ1IEBACisyMDEwLTA3LTIzICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9v
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW1F0XSBNYWtpbmcgZWZmZWN0aXZlIHVzZSBvZiBub2Rlc0Zyb21SZWN0LgorCisgICAg
ICAgIFBhdGNoIGFkZHMgYSBoZWxwZXIgY2xhc3MgKG5hbWVkIFRvdWNoQWRqdXN0ZXIpIHRvIGlt
cHJvdmUgdGFwIGFjdGlvbnMKKyAgICAgICAgb24gbW9iaWxlIHRvdWNoIGRldmljZXMuIFRvdWNo
QWRqdXN0ZXIgbWFrZXMgdXNlIG9mIHRoZSBuZXdseSBhZGRlZCByZWN0CisgICAgICAgIGJhc2Vk
IGhpdCB0ZXN0IGV4dGVuc2lvbiB0aHJvdWdoIHRoZSBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCBt
ZXRob2QuCisgICAgICAgIEdpdmVuIGEgcmVjdGFuZ2xlIGFzIGlucHV0LCBub2Rlc0Zyb21SZWN0
IHJldHVybnMgYSB6LWluZGV4IG9yZGVyZWQgbGlzdAorICAgICAgICBvZiBub2RlcyB3aG9zZSBi
b3VuZGFyaWVzIGludGVyc2VjdCB0aGUgcmVjdGFuZ2xlLgorCisgICAgICAgIEJhc2ljYWxseSB0
aGUgVG91Y2hBZGp1c3RlciBjbGFzcyBpbnRlcmNlcHRzIHRoZSBRR3JhcGhpY3NTY2VuZU1vdXNl
RXZlbnQKKyAgICAgICAgcGFzc2VkIHRvIGJvdGggUVdlYlBhZ2VQcml2YXRlOjptb3VzZXtQcmVz
cyxSZWxlYXNlfUV2ZW50IG1ldGhvZHMgYmVmb3JlCisgICAgICAgIHRoZXkgYXJlIHBhc3NlZCBk
b3duIHRvIFdlYkNvcmUuIFRoZSBnb2FsIGlzIHRvIGluZmVyIHRoZSB0YXJnZXQgY2xpY2sgcG9z
aXRpb24uCisgICAgICAgIEZvciB0aGF0LCBhIHJlY3RhbmdsZSBpcyBidWlsdCB1cCB1c2luZyB0
aGUgZXZlbnQgcG9zaXRpb24gYXMgYSBjZW50ZXIgcG9pbnQgYW5kCisgICAgICAgIGV4cGFuZGlu
ZyBpdCBib3RoIGhvcml6b250YWxseSBhbmQgdmVydGljYWxseSwgYmFzZWQgb24gdGhlIHZhbHVl
cyBzZXQgaW4KKyAgICAgICAgUVdlYlNldHRpbmdzOjpoaXRUZXN0UGFkZGluZy4KKworICAgICAg
ICBUb3VjaEFkanVzdGVyIGl0ZXJhdGVzIG92ZXIgdGhlIGxpc3Qgb2Ygbm9kZXMgcmV0dXJuZWQg
Ynkgbm9kZXNGcm9tUmVjdCBhbmQKKyAgICAgICAgcGlja3MgdGhlIGNsaWNrYWJsZSBvbmUgdGhh
dCBoYXMgdGhlIGxhcmdlc3QgaW50ZXJzZWN0aW9uIGFyZWEgd2l0aCB0aGUgaGl0CisgICAgICAg
IHRlc3QgcmVjdGFuZ2xlLiBUaGUgdGFyZ2V0IHBvc2l0aW9uIGlzIHRoZW4gdGhlIGNlbnRlciBw
b2ludCBvZiB0aGlzIGludGVyc2VjdGlvbgorICAgICAgICBhcmVhLgorCisgICAgICAgIEluIGNh
c2Ugb2Ygbm8gY2xpY2thYmxlIG5vZGUgaW50ZXJzZWN0cyB0aGUgaGl0IHRlc3QgYXJlYSwgdGhl
IGNsaWNrIHBvc2l0aW9uCisgICAgICAgIGlzIG5vdCBhbHRlcmVkLgorCisgICAgICAgIFRvdWNo
QWRqdXN0ZXIgaXMgKm9ubHkqIHdvcmtpbmcgZm9yIFFHcmFwaGljc1dlYlZpZXcgYmFzZWQgdmll
d3MuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoVG91Y2hBZGp1c3Rl
cjo6VG91Y2hBZGp1c3Rlcik6CisgICAgICAgIChUb3VjaEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRl
UG9pbnRGb3JUb3VjaCk6CisgICAgICAgIChUb3VjaEFkanVzdGVyOjppc0VsZW1lbnRDbGlja2Fi
bGUpOgorICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6aGFzTW91c2VMaXN0ZW5lcik6CisgICAgICAg
IChUb3VjaEFkanVzdGVyOjphcmVhRnJvbVBvaW50KToKKyAgICAgICAgKFRvdWNoQWRqdXN0ZXI6
OmFyZWEpOgorICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6dG9FbGVtZW50KToKKyAgICAgICAgKFFX
ZWJQYWdlUHJpdmF0ZTo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0
ZTo6bW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjphZGp1c3RQ
b2ludEZvckNsaWNraW5nKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorCiAyMDEwLTA3
LTI2ICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCi0tIAoxLjcuMC40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64591</attachid>
            <date>2010-08-17 07:57:30 -0700</date>
            <delta_ts>2010-09-02 15:03:17 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>0001-2010-07-23-Antonio-Gomes-tonikitoo-webkit.org.patch</filename>
            <type>text/plain</type>
            <size>11775</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAzNjIxNmVmZmJlYWE1MmM5MWU0ZmNlYjBiMTY0NThjMGIxYjg2MWRjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxOSBKdWwgMjAxMCAwOTo1MzoyMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIDIw
MTAtMDctMjMgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KCiAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtRdF0gTWFraW5nIGVmZmVjdGl2
ZSB1c2Ugb2Ygbm9kZXNGcm9tUmVjdC4KICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDQwODkKCiAgICAgICAgUGF0Y2ggYWRkcyBhIGhlbHBlciBjbGFzcyAo
bmFtZWQgVG91Y2hBZGp1c3RlcikgdG8gaW1wcm92ZSB0YXAgYWN0aW9ucwogICAgICAgIG9uIG1v
YmlsZSB0b3VjaCBkZXZpY2VzLiBUb3VjaEFkanVzdGVyIG1ha2VzIHVzZSBvZiB0aGUgbmV3bHkg
YWRkZWQgcmVjdAogICAgICAgIGJhc2VkIGhpdCB0ZXN0IGV4dGVuc2lvbiB0aHJvdWdoIHRoZSBE
b2N1bWVudDo6bm9kZXNGcm9tUmVjdCBtZXRob2QuCiAgICAgICAgR2l2ZW4gYSByZWN0YW5nbGUg
YXMgaW5wdXQsIG5vZGVzRnJvbVJlY3QgcmV0dXJucyBhIHotaW5kZXggb3JkZXJlZCBsaXN0CiAg
ICAgICAgb2Ygbm9kZXMgd2hvc2UgYm91bmRhcmllcyBpbnRlcnNlY3QgdGhlIHJlY3RhbmdsZS4K
CiAgICAgICAgQmFzaWNhbGx5IHRoZSBUb3VjaEFkanVzdGVyIGNsYXNzIGludGVyY2VwdHMgdGhl
IFFHcmFwaGljc1NjZW5lTW91c2VFdmVudAogICAgICAgIHBhc3NlZCB0byBib3RoIFFXZWJQYWdl
UHJpdmF0ZTo6bW91c2V7UHJlc3MsUmVsZWFzZX1FdmVudCBtZXRob2RzIGJlZm9yZQogICAgICAg
IHRoZXkgYXJlIHBhc3NlZCBkb3duIHRvIFdlYkNvcmUuIFRoZSBnb2FsIGlzIHRvIGluZmVyIHRo
ZSB0YXJnZXQgY2xpY2sgcG9zaXRpb24uCiAgICAgICAgRm9yIHRoYXQsIGEgcmVjdGFuZ2xlIGlz
IGJ1aWx0IHVwIHVzaW5nIHRoZSBldmVudCBwb3NpdGlvbiBhcyBhIGNlbnRlciBwb2ludCBhbmQK
ICAgICAgICBleHBhbmRpbmcgaXQgYm90aCBob3Jpem9udGFsbHkgYW5kIHZlcnRpY2FsbHksIGJh
c2VkIG9uIHRoZSB2YWx1ZXMgc2V0IGluCiAgICAgICAgUVdlYlNldHRpbmdzOjpoaXRUZXN0UGFk
ZGluZy4KCiAgICAgICAgVG91Y2hBZGp1c3RlciBpdGVyYXRlcyBvdmVyIHRoZSBsaXN0IG9mIG5v
ZGVzIHJldHVybmVkIGJ5IG5vZGVzRnJvbVJlY3QgYW5kCiAgICAgICAgcGlja3MgdGhlIGNsaWNr
YWJsZSBvbmUgdGhhdCBoYXMgdGhlIGxhcmdlc3QgaW50ZXJzZWN0aW9uIGFyZWEgd2l0aCB0aGUg
aGl0CiAgICAgICAgdGVzdCByZWN0YW5nbGUuIFRoZSB0YXJnZXQgcG9zaXRpb24gaXMgdGhlbiB0
aGUgY2VudGVyIHBvaW50IG9mIHRoaXMgaW50ZXJzZWN0aW9uCiAgICAgICAgYXJlYS4KCiAgICAg
ICAgSW4gY2FzZSBvZiBubyBjbGlja2FibGUgbm9kZSBpbnRlcnNlY3RzIHRoZSBoaXQgdGVzdCBh
cmVhLCB0aGUgY2xpY2sgcG9zaXRpb24KICAgICAgICBpcyBub3QgYWx0ZXJlZC4KCiAgICAgICAg
VG91Y2hBZGp1c3RlciBpcyAqb25seSogd29ya2luZyBmb3IgUUdyYXBoaWNzV2ViVmlldyBiYXNl
ZCB2aWV3cy4KCiAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgogICAgICAgIChUb3VjaEFkanVz
dGVyOjpUb3VjaEFkanVzdGVyKToKICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6ZmluZENhbmRpZGF0
ZVBvaW50Rm9yVG91Y2gpOgogICAgICAgIChUb3VjaEFkanVzdGVyOjppc0VsZW1lbnRDbGlja2Fi
bGUpOgogICAgICAgIChUb3VjaEFkanVzdGVyOjpoYXNNb3VzZUxpc3RlbmVyKToKICAgICAgICAo
VG91Y2hBZGp1c3Rlcjo6YXJlYUZyb21Qb2ludCk6CiAgICAgICAgKFRvdWNoQWRqdXN0ZXI6OmFy
ZWEpOgogICAgICAgIChUb3VjaEFkanVzdGVyOjp0b0VsZW1lbnQpOgogICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6Om1vdXNlUHJlc3NFdmVudCk6CiAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91
c2VSZWxlYXNlRXZlbnQpOgogICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmFkanVzdFBvaW50Rm9y
Q2xpY2tpbmcpOgogICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKLS0tCiBXZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmNwcCB8ICAxMTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysKIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oIHwgICAyNCArKysrKysrKysKIFdl
YktpdC9xdC9DaGFuZ2VMb2cgICAgICAgIHwgICA0MyArKysrKysrKysrKysrKysrCiAzIGZpbGVz
IGNoYW5nZWQsIDE4MyBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAK
aW5kZXggNTE2ZWJjOS4uNGUxMzBmZiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTMyLDYgKzMyLDggQEAK
ICNpbmNsdWRlICJxd2Vic2V0dGluZ3MuaCIKICNpbmNsdWRlICJxd2Via2l0dmVyc2lvbi5oIgog
CisjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiQ1NT
UGFyc2VyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTYzNSw2ICs2MzcsNyBAQCB2b2lkIFFX
ZWJQYWdlUHJpdmF0ZTo6bW91c2VQcmVzc0V2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCog
ZXYpCiAgICAgfQogCiAgICAgYm9vbCBhY2NlcHRlZCA9IGZhbHNlOworICAgIGFkanVzdFBvaW50
Rm9yQ2xpY2tpbmcoZXYsIHBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKTsKICAgICBQbGF0
Zm9ybU1vdXNlRXZlbnQgbWV2KGV2LCAxKTsKICAgICAvLyBpZ25vcmUgdGhlIGV2ZW50IGlmIHdl
IGNhbid0IG1hcCBRdCdzIG1vdXNlIGJ1dHRvbnMgdG8gV2ViQ29yZTo6TW91c2VCdXR0b24KICAg
ICBpZiAobWV2LmJ1dHRvbigpICE9IE5vQnV0dG9uKQpAQCAtNzc2LDYgKzc3OSw3IEBAIHZvaWQg
UVdlYlBhZ2VQcml2YXRlOjptb3VzZVJlbGVhc2VFdmVudChRR3JhcGhpY3NTY2VuZU1vdXNlRXZl
bnQqIGV2KQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGFjY2VwdGVkID0gZmFsc2U7Cisg
ICAgYWRqdXN0UG9pbnRGb3JDbGlja2luZyhldiwgcGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50
KCkpOwogICAgIFBsYXRmb3JtTW91c2VFdmVudCBtZXYoZXYsIDApOwogICAgIC8vIGlnbm9yZSB0
aGUgZXZlbnQgaWYgd2UgY2FuJ3QgbWFwIFF0J3MgbW91c2UgYnV0dG9ucyB0byBXZWJDb3JlOjpN
b3VzZUJ1dHRvbgogICAgIGlmIChtZXYuYnV0dG9uKCkgIT0gTm9CdXR0b24pCkBAIC0xMzg1LDYg
KzEzODksMjEgQEAgYm9vbCBRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhRS2V5RXZl
bnQgKmV2LCBGcmFtZSAqZnJhbWUpCiAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
c2Nyb2xsUmVjdXJzaXZlbHkoZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CiB9CiAKK3ZvaWQgUVdl
YlBhZ2VQcml2YXRlOjphZGp1c3RQb2ludEZvckNsaWNraW5nKFFHcmFwaGljc1NjZW5lTW91c2VF
dmVudCogZXYsIERvY3VtZW50KiBzdGFydGluZ0RvY3VtZW50KQoreworICAgIHVuc2lnbmVkIGhv
cml6b250YWxQYWRkaW5nID0gcS0+c2V0dGluZ3MoKS0+aGl0VGVzdFBhZGRpbmcoUXQ6Okhvcml6
b250YWwpOworICAgIHVuc2lnbmVkIHZlcnRpY2FsUGFkZGluZyA9IHEtPnNldHRpbmdzKCktPmhp
dFRlc3RQYWRkaW5nKFF0OjpWZXJ0aWNhbCk7CisgICAgaWYgKCFob3Jpem9udGFsUGFkZGluZyAm
JiAhdmVydGljYWxQYWRkaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBJbnRQb2ludCBvcmln
aW5hbFBvaW50KGV2LT5wb3MoKS50b1BvaW50KCkpOworICAgIEludFBvaW50IGFkanVzdGVkUG9p
bnQgPSBUb3VjaEFkanVzdGVyKG9yaWdpbmFsUG9pbnQsIGhvcml6b250YWxQYWRkaW5nLCB2ZXJ0
aWNhbFBhZGRpbmcpLmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKHN0YXJ0aW5nRG9jdW1lbnQp
OworICAgIGlmIChhZGp1c3RlZFBvaW50ID09IEludFBvaW50Ojp6ZXJvKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGV2LT5zZXRQb3MoUVBvaW50RihhZGp1c3RlZFBvaW50KSk7Cit9CisKICNp
ZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkKIGJvb2wgUVdlYlBhZ2VQ
cml2YXRlOjp0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKIHsKQEAgLTE1NTMsNiArMTU3
MiwxMDMgQEAgSW5zcGVjdG9yQ29udHJvbGxlciogUVdlYlBhZ2VQcml2YXRlOjppbnNwZWN0b3JD
b250cm9sbGVyKCkKICNlbmRpZgogfQogCitRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6
OlRvdWNoQWRqdXN0ZXIoY29uc3QgSW50UG9pbnQmIHRvdWNoUG9pbnQsIHVuc2lnbmVkIGhQYWRk
aW5nLCB1bnNpZ25lZCB2UGFkZGluZykKKyAgICA6IG1fb3JpZ2luYWxQb2ludCh0b3VjaFBvaW50
KQorICAgICwgbV9ob3Jpem9udGFsUGFkZGluZyhoUGFkZGluZykKKyAgICAsIG1fdmVydGljYWxQ
YWRkaW5nKHZQYWRkaW5nKQoreworfQorCitJbnRQb2ludCBRV2ViUGFnZVByaXZhdGU6OlRvdWNo
QWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKERvY3VtZW50KiBkb2N1bWVudCkg
Y29uc3QKK3sKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gSW50UG9pbnQoKTsK
KworICAgIGludCB4ID0gbV9vcmlnaW5hbFBvaW50LngoKTsKKyAgICBpbnQgeSA9IG1fb3JpZ2lu
YWxQb2ludC55KCk7CisKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IGludGVyc2VjdGVkTm9kZXMgPSBk
b2N1bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCBtX2hvcml6b250YWxQYWRkaW5nLCBtX3ZlcnRp
Y2FsUGFkZGluZywgZmFsc2UpOworICAgIGlmICghaW50ZXJzZWN0ZWROb2RlcykKKyAgICAgICAg
cmV0dXJuIEludFBvaW50KCk7CisKKyAgICBJbnRQb2ludCBhZGp1c3RlZFBvaW50OworICAgIElu
dFJlY3QgYmlnZ2VySW50ZXJzZWN0aW9uUmVjdDsKKyAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIGxp
c3Qgb2Ygbm9kZXMgaGl0IGxvb2tpbmcgZm9yIHRoZSBvbmUgd2hvc2UgYm91bmRpbmcgYXJlYQor
ICAgIC8vIGhhcyBiaWdnZXIgaW50ZXJzZWN0aW9uIHdpdGggdGhlIHRvdWNoIGFyZWEgKHBvaW50
ICsgcGFkZGluZykuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGludGVyc2VjdGVkTm9k
ZXMtPmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgTm9kZSogY3VycmVudCA9IGludGVyc2VjdGVk
Tm9kZXMtPml0ZW0oaSk7CisgICAgICAgIGlmICghY3VycmVudC0+aXNFbGVtZW50Tm9kZSgpIHx8
ICFpc0VsZW1lbnRDbGlja2FibGUodG9FbGVtZW50KGN1cnJlbnQpLCAwKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIEludFJlY3QgYm91bmRpbmdSZWN0ID0gY3VycmVudC0+Z2V0
UmVjdCgpOworICAgICAgICBib3VuZGluZ1JlY3QuaW50ZXJzZWN0KGFyZWFGcm9tUG9pbnQoeCwg
eSkpOworICAgICAgICBpZiAoYm91bmRpbmdSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIGlmIChhcmVhKGJvdW5kaW5nUmVjdCkgPiBhcmVhKGJpZ2dlcklu
dGVyc2VjdGlvblJlY3QpKSB7CisgICAgICAgICAgICBhZGp1c3RlZFBvaW50LnNldFgoYm91bmRp
bmdSZWN0LmNlbnRlcigpLngoKSk7CisgICAgICAgICAgICBhZGp1c3RlZFBvaW50LnNldFkoYm91
bmRpbmdSZWN0LmNlbnRlcigpLnkoKSk7CisgICAgICAgICAgICBiaWdnZXJJbnRlcnNlY3Rpb25S
ZWN0ID0gYm91bmRpbmdSZWN0OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGFkanVz
dGVkUG9pbnQ7Cit9CisKK2Jvb2wgUVdlYlBhZ2VQcml2YXRlOjpUb3VjaEFkanVzdGVyOjppc0Vs
ZW1lbnRDbGlja2FibGUoRWxlbWVudCogZWxlbWVudCwgUmVmUHRyPE5vZGVMaXN0PiBsaXN0KSBj
b25zdAoreworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ym9vbCBpc0NsaWNrYWJsZSA9IGhhc01vdXNlTGlzdGVuZXIoZWxlbWVudCk7CisgICAgaWYgKCFp
c0NsaWNrYWJsZSAmJiBsaXN0KSB7CisgICAgICAgIEVsZW1lbnQqIHBhcmVudCA9IGVsZW1lbnQt
PnBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgdW5zaWduZWQgY291bnQgPSBsaXN0LT5sZW5ndGgo
KTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudCAmJiBwYXJlbnQ7IGkrKykgewor
ICAgICAgICAgICAgaWYgKGxpc3QtPml0ZW0oaSkgIT0gcGFyZW50KQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICBpc0NsaWNrYWJsZSA9IGhhc01vdXNlTGlzdGVuZXIo
cGFyZW50KTsKKyAgICAgICAgICAgIGlmIChpc0NsaWNrYWJsZSkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRFbGVtZW50KCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICByZXR1cm4g
aXNDbGlja2FibGUKKyAgICAgICAgfHwgZWxlbWVudC0+d2Via2l0TWF0Y2hlc1NlbGVjdG9yKCJh
LCo6bGluaywqOnZpc2l0ZWQsKltyb2xlPWJ1dHRvbl0sYnV0dG9uLGlucHV0LHNlbGVjdCxsYWJl
bCIsIGVjKQorICAgICAgICB8fCBjb21wdXRlZFN0eWxlKGVsZW1lbnQpLT5nZXRQcm9wZXJ0eVZh
bHVlKGNzc1Byb3BlcnR5SUQoImN1cnNvciIpKSA9PSAicG9pbnRlciI7Cit9CisKK2Jvb2wgUVdl
YlBhZ2VQcml2YXRlOjpUb3VjaEFkanVzdGVyOjpoYXNNb3VzZUxpc3RlbmVyKEVsZW1lbnQqIGVs
ZW1lbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0V2ZW50TGlzdGVuZXJzKGV2
ZW50TmFtZXMoKS5jbGlja0V2ZW50KQorICAgICAgICB8fCBlbGVtZW50LT5oYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpCisgICAgICAgIHx8IGVsZW1lbnQtPmhh
c0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpOworfQorCitJbnRSZWN0
IFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6YXJlYUZyb21Qb2ludChpbnQgeCwgaW50
IHkpIGNvbnN0Cit7CisgICAgLy8gTk9URTogVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0
aG9kIGhhcyB0byBiZSBzeW5jJ2VkIHdpdGggSGl0VGVzdFJlc3VsdDo6cmVnaW9uRnJvbVBvaW50
LgorICAgIHJldHVybiBJbnRSZWN0KHggLSBtX2hvcml6b250YWxQYWRkaW5nLCB5IC0gbV92ZXJ0
aWNhbFBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAgMiAqIG1faG9yaXpvbnRhbFBhZGRpbmcg
KyAxLCAyICogbV92ZXJ0aWNhbFBhZGRpbmcgKyAxKTsKK30KKworaW50IFFXZWJQYWdlUHJpdmF0
ZTo6VG91Y2hBZGp1c3Rlcjo6YXJlYShjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAoreworICAg
IHJldHVybiByZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpOworfQorCitFbGVtZW50KiBRV2Vi
UGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OnRvRWxlbWVudChOb2RlKiBub2RlKSBjb25zdAor
eworICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obm9kZSk7CisKKyAgICByZXR1cm4gMDsKK30KKwogCiAvKiEKICAgIFxl
bnVtIFFXZWJQYWdlOjpGaW5kRmxhZwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZV9wLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAppbmRleCBjZjRhYjg4Li41NjdmZTEz
IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAorKysgYi9XZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlX3AuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgInF3ZWJoaXN0b3J5
LmgiCiAjaW5jbHVkZSAicXdlYmZyYW1lLmgiCiAKKyNpbmNsdWRlICJJbnRQb2ludC5oIgogI2lu
Y2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCkBAIC00MSwxMCAr
NDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENvbnRleHRNZW51Q2xpZW50
UXQ7CiAgICAgY2xhc3MgQ29udGV4dE1lbnVJdGVtOwogICAgIGNsYXNzIENvbnRleHRNZW51Owor
ICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNsYXNzIEVkaXRvckNsaWVudFF0OwogICAgIGNsYXNz
IEVsZW1lbnQ7CiAgICAgY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICBjbGFzcyBJbnRS
ZWN0OwogICAgIGNsYXNzIE5vZGU7CisgICAgY2xhc3MgTm9kZUxpc3Q7CiAgICAgY2xhc3MgUGFn
ZTsKICAgICBjbGFzcyBGcmFtZTsKIH0KQEAgLTEzNiw2ICsxNDAsMjYgQEAgcHVibGljOgogICAg
IGJvb2wgdG91Y2hFdmVudChRVG91Y2hFdmVudCopOwogI2VuZGlmCiAKKyAgICBjbGFzcyBUb3Vj
aEFkanVzdGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFRvdWNoQWRqdXN0ZXIoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHRvdWNoUG9pbnQsIHVuc2lnbmVkIGhvcml6b250YWxQYWRkaW5nLCB1
bnNpZ25lZCB2ZXJ0aWNhbFBhZGRpbmcpOworCisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IGZp
bmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKFdlYkNvcmU6OkRvY3VtZW50KikgY29uc3Q7CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBib29sIGlzRWxlbWVudENsaWNrYWJsZShXZWJDb3JlOjpFbGVt
ZW50KiwgV1RGOjpSZWZQdHI8V2ViQ29yZTo6Tm9kZUxpc3Q+KSBjb25zdDsKKyAgICAgICAgYm9v
bCBoYXNNb3VzZUxpc3RlbmVyKFdlYkNvcmU6OkVsZW1lbnQqKSBjb25zdDsKKyAgICAgICAgaW5s
aW5lIGludCBhcmVhKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdDsKKyAgICAgICAgaW5s
aW5lIFdlYkNvcmU6OkludFJlY3QgYXJlYUZyb21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0Owor
ICAgICAgICBpbmxpbmUgV2ViQ29yZTo6RWxlbWVudCogdG9FbGVtZW50KFdlYkNvcmU6Ok5vZGUq
KSBjb25zdDsKKworICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX29yaWdpbmFsUG9pbnQ7Cisg
ICAgICAgIHVuc2lnbmVkIG1faG9yaXpvbnRhbFBhZGRpbmc7CisgICAgICAgIHVuc2lnbmVkIG1f
dmVydGljYWxQYWRkaW5nOworICAgIH07CisKKyAgICB2b2lkIGFkanVzdFBvaW50Rm9yQ2xpY2tp
bmcoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiwgV2ViQ29yZTo6RG9jdW1lbnQqKTsKKwogICAg
IHZvaWQgc2V0SW5zcGVjdG9yKFFXZWJJbnNwZWN0b3IqKTsKICAgICBRV2ViSW5zcGVjdG9yKiBn
ZXRPckNyZWF0ZUluc3BlY3RvcigpOwogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cg
Yi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGMyMDE2MzAuLjViMDI1MDkgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ2IEBACisyMDEwLTA3LTIzICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBN
YWtpbmcgZWZmZWN0aXZlIHVzZSBvZiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQwODkKKworICAgICAgICBQ
YXRjaCBhZGRzIGEgaGVscGVyIGNsYXNzIChuYW1lZCBUb3VjaEFkanVzdGVyKSB0byBpbXByb3Zl
IHRhcCBhY3Rpb25zCisgICAgICAgIG9uIG1vYmlsZSB0b3VjaCBkZXZpY2VzLiBUb3VjaEFkanVz
dGVyIG1ha2VzIHVzZSBvZiB0aGUgbmV3bHkgYWRkZWQgcmVjdAorICAgICAgICBiYXNlZCBoaXQg
dGVzdCBleHRlbnNpb24gdGhyb3VnaCB0aGUgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgbWV0aG9k
LgorICAgICAgICBHaXZlbiBhIHJlY3RhbmdsZSBhcyBpbnB1dCwgbm9kZXNGcm9tUmVjdCByZXR1
cm5zIGEgei1pbmRleCBvcmRlcmVkIGxpc3QKKyAgICAgICAgb2Ygbm9kZXMgd2hvc2UgYm91bmRh
cmllcyBpbnRlcnNlY3QgdGhlIHJlY3RhbmdsZS4KKworICAgICAgICBCYXNpY2FsbHkgdGhlIFRv
dWNoQWRqdXN0ZXIgY2xhc3MgaW50ZXJjZXB0cyB0aGUgUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50
CisgICAgICAgIHBhc3NlZCB0byBib3RoIFFXZWJQYWdlUHJpdmF0ZTo6bW91c2V7UHJlc3MsUmVs
ZWFzZX1FdmVudCBtZXRob2RzIGJlZm9yZQorICAgICAgICB0aGV5IGFyZSBwYXNzZWQgZG93biB0
byBXZWJDb3JlLiBUaGUgZ29hbCBpcyB0byBpbmZlciB0aGUgdGFyZ2V0IGNsaWNrIHBvc2l0aW9u
LgorICAgICAgICBGb3IgdGhhdCwgYSByZWN0YW5nbGUgaXMgYnVpbHQgdXAgdXNpbmcgdGhlIGV2
ZW50IHBvc2l0aW9uIGFzIGEgY2VudGVyIHBvaW50IGFuZAorICAgICAgICBleHBhbmRpbmcgaXQg
Ym90aCBob3Jpem9udGFsbHkgYW5kIHZlcnRpY2FsbHksIGJhc2VkIG9uIHRoZSB2YWx1ZXMgc2V0
IGluCisgICAgICAgIFFXZWJTZXR0aW5nczo6aGl0VGVzdFBhZGRpbmcuCisKKyAgICAgICAgVG91
Y2hBZGp1c3RlciBpdGVyYXRlcyBvdmVyIHRoZSBsaXN0IG9mIG5vZGVzIHJldHVybmVkIGJ5IG5v
ZGVzRnJvbVJlY3QgYW5kCisgICAgICAgIHBpY2tzIHRoZSBjbGlja2FibGUgb25lIHRoYXQgaGFz
IHRoZSBsYXJnZXN0IGludGVyc2VjdGlvbiBhcmVhIHdpdGggdGhlIGhpdAorICAgICAgICB0ZXN0
IHJlY3RhbmdsZS4gVGhlIHRhcmdldCBwb3NpdGlvbiBpcyB0aGVuIHRoZSBjZW50ZXIgcG9pbnQg
b2YgdGhpcyBpbnRlcnNlY3Rpb24KKyAgICAgICAgYXJlYS4KKworICAgICAgICBJbiBjYXNlIG9m
IG5vIGNsaWNrYWJsZSBub2RlIGludGVyc2VjdHMgdGhlIGhpdCB0ZXN0IGFyZWEsIHRoZSBjbGlj
ayBwb3NpdGlvbgorICAgICAgICBpcyBub3QgYWx0ZXJlZC4KKworICAgICAgICBUb3VjaEFkanVz
dGVyIGlzICpvbmx5KiB3b3JraW5nIGZvciBRR3JhcGhpY3NXZWJWaWV3IGJhc2VkIHZpZXdzLgor
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFRvdWNoQWRqdXN0ZXI6OlRv
dWNoQWRqdXN0ZXIpOgorICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6ZmluZENhbmRpZGF0ZVBvaW50
Rm9yVG91Y2gpOgorICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6aXNFbGVtZW50Q2xpY2thYmxlKToK
KyAgICAgICAgKFRvdWNoQWRqdXN0ZXI6Omhhc01vdXNlTGlzdGVuZXIpOgorICAgICAgICAoVG91
Y2hBZGp1c3Rlcjo6YXJlYUZyb21Qb2ludCk6CisgICAgICAgIChUb3VjaEFkanVzdGVyOjphcmVh
KToKKyAgICAgICAgKFRvdWNoQWRqdXN0ZXI6OnRvRWxlbWVudCk6CisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6Om1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om1v
dXNlUmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6YWRqdXN0UG9pbnRG
b3JDbGlja2luZyk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKwogMjAxMC0wNy0yNiAg
QW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgotLSAKMS43LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66416</attachid>
            <date>2010-09-02 15:03:17 -0700</date>
            <delta_ts>2010-09-18 08:57:45 -0700</delta_ts>
            <desc>patch v3 (it will fail in Qt-EWS until bug 44088 lands)</desc>
            <filename>0002-2010-09-02-Antonio-Gomes-tonikitoo-webkit.org.patch</filename>
            <type>text/plain</type>
            <size>13400</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA1MmM0YzE5MzMxMGMyNjg4NmNjNzE5ZmNmMDQ3Y2RlY2M0MzBlNWUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxOSBKdWwgMjAxMCAwOTo1MzoyMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMi80
XSAyMDEwLTA5LTAyICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CgogICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbUXRdIE1ha2luZyBlZmZl
Y3RpdmUgdXNlIG9mIG5vZGVzRnJvbVJlY3QuCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ0MDg5CgogICAgICAgIFBhdGNoIGFkZHMgYSBoZWxwZXIgY2xh
c3MgKG5hbWVkIFRvdWNoQWRqdXN0ZXIpIHRvIGltcHJvdmUgdGFwIGFjdGlvbnMKICAgICAgICBv
biBtb2JpbGUgdG91Y2ggZGV2aWNlcy4gVG91Y2hBZGp1c3RlciBtYWtlcyB1c2Ugb2YgdGhlIG5l
d2x5IGFkZGVkIHJlY3QKICAgICAgICBiYXNlZCBoaXQgdGVzdCBleHRlbnNpb24gdGhyb3VnaCB0
aGUgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgbWV0aG9kLgogICAgICAgIEdpdmVuIGEgcmVjdGFu
Z2xlIGFzIGlucHV0LCBub2Rlc0Zyb21SZWN0IHJldHVybnMgYSB6LWluZGV4IG9yZGVyZWQgbGlz
dAogICAgICAgIG9mIG5vZGVzIHdob3NlIGJvdW5kYXJpZXMgaW50ZXJzZWN0IHRoZSByZWN0YW5n
bGUuCgogICAgICAgIEJhc2ljYWxseSB0aGUgVG91Y2hBZGp1c3RlciBjbGFzcyBpbnRlcmNlcHRz
IHRoZSBRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQKICAgICAgICBwYXNzZWQgdG8gYm90aCBRV2Vi
UGFnZVByaXZhdGU6Om1vdXNle1ByZXNzLFJlbGVhc2V9RXZlbnQgbWV0aG9kcyBiZWZvcmUKICAg
ICAgICB0aGV5IGFyZSBwYXNzZWQgZG93biB0byBXZWJDb3JlLiBUaGUgZ29hbCBpcyB0byBpbmZl
ciB0aGUgdGFyZ2V0IGNsaWNrIHBvc2l0aW9uLgogICAgICAgIEZvciB0aGF0LCBhIHJlY3Rhbmds
ZSBpcyBidWlsdCB1cCB1c2luZyB0aGUgZXZlbnQgcG9zaXRpb24gYXMgYSBjZW50ZXIgcG9pbnQg
YW5kCiAgICAgICAgZXhwYW5kaW5nIGl0IGJvdGggaG9yaXpvbnRhbGx5IGFuZCB2ZXJ0aWNhbGx5
LCBiYXNlZCBvbiB0aGUgdmFsdWVzIHNldCBpbgogICAgICAgIFFXZWJTZXR0aW5nczo6aGl0VGVz
dFBhZGRpbmcuCgogICAgICAgIFRvdWNoQWRqdXN0ZXIgaXRlcmF0ZXMgb3ZlciB0aGUgbGlzdCBv
ZiBub2RlcyByZXR1cm5lZCBieSBub2Rlc0Zyb21SZWN0IGFuZAogICAgICAgIHBpY2tzIHRoZSBj
bGlja2FibGUgb25lIHRoYXQgaGFzIHRoZSBsYXJnZXN0IGludGVyc2VjdGlvbiBhcmVhIHdpdGgg
dGhlIGhpdAogICAgICAgIHRlc3QgcmVjdGFuZ2xlLiBUaGUgdGFyZ2V0IHBvc2l0aW9uIGlzIHRo
ZW4gdGhlIGNlbnRlciBwb2ludCBvZiB0aGlzIGludGVyc2VjdGlvbgogICAgICAgIGFyZWEuCgog
ICAgICAgIEluIGNhc2Ugb2Ygbm8gY2xpY2thYmxlIG5vZGUgaW50ZXJzZWN0cyB0aGUgaGl0IHRl
c3QgYXJlYSwgdGhlIGNsaWNrIHBvc2l0aW9uCiAgICAgICAgaXMgbm90IGFsdGVyZWQuCgogICAg
ICAgIFRvdWNoQWRqdXN0ZXIgaXMgKm9ubHkqIHdvcmtpbmcgZm9yIFFHcmFwaGljc1dlYlZpZXcg
YmFzZWQgdmlld3MuCgogICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKICAgICAgICAoVG91Y2hB
ZGp1c3Rlcjo6VG91Y2hBZGp1c3Rlcik6CiAgICAgICAgKFRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5k
aWRhdGVQb2ludEZvclRvdWNoKToKICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6aXNFbGVtZW50Q2xp
Y2thYmxlKToKICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6aGFzTW91c2VMaXN0ZW5lcik6CiAgICAg
ICAgKFRvdWNoQWRqdXN0ZXI6OmFyZWFGcm9tUG9pbnQpOgogICAgICAgIChUb3VjaEFkanVzdGVy
OjphcmVhKToKICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6dG9FbGVtZW50KToKICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjptb3VzZVByZXNzRXZlbnQpOgogICAgICAgIChRV2ViUGFnZVByaXZhdGU6
Om1vdXNlUmVsZWFzZUV2ZW50KToKICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjphZGp1c3RQb2lu
dEZvckNsaWNraW5nKToKICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6Ci0tLQogV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5jcHAgfCAgMTQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaCB8ICAgMjQgKysrKysrKwog
V2ViS2l0L3F0L0NoYW5nZUxvZyAgICAgICAgfCAgIDQzICsrKysrKysrKysrKysKIDMgZmlsZXMg
Y2hhbmdlZCwgMjE1IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApp
bmRleCBlYzQxNWJiLi43ZTYzZDA2IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMzIsNiArMzIsOCBAQAog
I2luY2x1ZGUgInF3ZWJzZXR0aW5ncy5oIgogI2luY2x1ZGUgInF3ZWJraXR2ZXJzaW9uLmgiCiAK
KyNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJDU1NQ
YXJzZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNzMsNiArNzUsOCBAQAogI2luY2x1ZGUg
IlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkhhc2hNYXAuaCIKICNpbmNsdWRlICJIVE1MRm9y
bUVsZW1lbnQuaCIKKyNpbmNsdWRlICJDbGllbnRSZWN0LmgiCisjaW5jbHVkZSAiSFRNTEZyYW1l
T3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKQEAgLTYzNiw2ICs2NDAs
NyBAQCB2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VQcmVzc0V2ZW50KFFHcmFwaGljc1NjZW5l
TW91c2VFdmVudCogZXYpCiAgICAgfQogCiAgICAgYm9vbCBhY2NlcHRlZCA9IGZhbHNlOworICAg
IGFkanVzdFBvaW50Rm9yQ2xpY2tpbmcoZXYsIHBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgp
KTsKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbWV2KGV2LCAxKTsKICAgICAvLyBpZ25vcmUgdGhl
IGV2ZW50IGlmIHdlIGNhbid0IG1hcCBRdCdzIG1vdXNlIGJ1dHRvbnMgdG8gV2ViQ29yZTo6TW91
c2VCdXR0b24KICAgICBpZiAobWV2LmJ1dHRvbigpICE9IE5vQnV0dG9uKQpAQCAtNzc3LDYgKzc4
Miw3IEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjptb3VzZVJlbGVhc2VFdmVudChRR3JhcGhpY3NT
Y2VuZU1vdXNlRXZlbnQqIGV2KQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGFjY2VwdGVk
ID0gZmFsc2U7CisgICAgYWRqdXN0UG9pbnRGb3JDbGlja2luZyhldiwgcGFnZS0+bWFpbkZyYW1l
KCktPmRvY3VtZW50KCkpOwogICAgIFBsYXRmb3JtTW91c2VFdmVudCBtZXYoZXYsIDApOwogICAg
IC8vIGlnbm9yZSB0aGUgZXZlbnQgaWYgd2UgY2FuJ3QgbWFwIFF0J3MgbW91c2UgYnV0dG9ucyB0
byBXZWJDb3JlOjpNb3VzZUJ1dHRvbgogICAgIGlmIChtZXYuYnV0dG9uKCkgIT0gTm9CdXR0b24p
CkBAIC0xMzg2LDYgKzEzOTIsMjEgQEAgYm9vbCBRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNjcm9s
bGluZyhRS2V5RXZlbnQgKmV2LCBGcmFtZSAqZnJhbWUpCiAgICAgcmV0dXJuIGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+c2Nyb2xsUmVjdXJzaXZlbHkoZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CiB9
CiAKK3ZvaWQgUVdlYlBhZ2VQcml2YXRlOjphZGp1c3RQb2ludEZvckNsaWNraW5nKFFHcmFwaGlj
c1NjZW5lTW91c2VFdmVudCogZXYsIERvY3VtZW50KiBzdGFydGluZ0RvY3VtZW50KQoreworICAg
IHVuc2lnbmVkIGhvcml6b250YWxQYWRkaW5nID0gcS0+c2V0dGluZ3MoKS0+aGl0VGVzdFBhZGRp
bmcoUXQ6Okhvcml6b250YWwpOworICAgIHVuc2lnbmVkIHZlcnRpY2FsUGFkZGluZyA9IHEtPnNl
dHRpbmdzKCktPmhpdFRlc3RQYWRkaW5nKFF0OjpWZXJ0aWNhbCk7CisgICAgaWYgKCFob3Jpem9u
dGFsUGFkZGluZyAmJiAhdmVydGljYWxQYWRkaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBJ
bnRQb2ludCBvcmlnaW5hbFBvaW50KGV2LT5wb3MoKS50b1BvaW50KCkpOworICAgIEludFBvaW50
IGFkanVzdGVkUG9pbnQgPSBUb3VjaEFkanVzdGVyKGhvcml6b250YWxQYWRkaW5nLCB2ZXJ0aWNh
bFBhZGRpbmcpLmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKG9yaWdpbmFsUG9pbnQsIHN0YXJ0
aW5nRG9jdW1lbnQpOworICAgIGlmIChhZGp1c3RlZFBvaW50ID09IEludFBvaW50Ojp6ZXJvKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGV2LT5zZXRQb3MoUVBvaW50RihhZGp1c3RlZFBvaW50
KSk7Cit9CisKICNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkKIGJv
b2wgUVdlYlBhZ2VQcml2YXRlOjp0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKIHsKQEAg
LTE1NTQsNiArMTU3NSwxMzMgQEAgSW5zcGVjdG9yQ29udHJvbGxlciogUVdlYlBhZ2VQcml2YXRl
OjppbnNwZWN0b3JDb250cm9sbGVyKCkKICNlbmRpZgogfQogCitRV2ViUGFnZVByaXZhdGU6OlRv
dWNoQWRqdXN0ZXI6OlRvdWNoQWRqdXN0ZXIodW5zaWduZWQgaFBhZGRpbmcsIHVuc2lnbmVkIHZQ
YWRkaW5nKQorICAgIDogbV9ob3Jpem9udGFsUGFkZGluZyhoUGFkZGluZykKKyAgICAsIG1fdmVy
dGljYWxQYWRkaW5nKHZQYWRkaW5nKQoreworfQorCitJbnRQb2ludCBRV2ViUGFnZVByaXZhdGU6
OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKGNvbnN0IEludFBvaW50
JiB0b3VjaFBvaW50LCBEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1
bWVudCkKKyAgICAgICAgcmV0dXJuIEludFBvaW50KCk7CisKKyAgICBpbnQgeCA9IHRvdWNoUG9p
bnQueCgpOworICAgIGludCB5ID0gdG91Y2hQb2ludC55KCk7CisKKyAgICBSZWZQdHI8Tm9kZUxp
c3Q+IGludGVyc2VjdGVkTm9kZXMgPSBkb2N1bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCBtX2hv
cml6b250YWxQYWRkaW5nLCBtX3ZlcnRpY2FsUGFkZGluZywgZmFsc2UpOworICAgIGlmICghaW50
ZXJzZWN0ZWROb2RlcykKKyAgICAgICAgcmV0dXJuIEludFBvaW50KCk7CisKKyAgICBFbGVtZW50
KiBjbGlja2VkRWxlbWVudCA9IDA7CisgICAgSW50UmVjdCBiaWdnZXJJbnRlcnNlY3Rpb25SZWN0
OworCisgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBsaXN0IG9mIG5vZGVzIGhpdCBsb29raW5nIGZv
ciB0aGUgb25lIHdob3NlIGJvdW5kaW5nIGFyZWEKKyAgICAvLyBoYXMgYmlnZ2VyIGludGVyc2Vj
dGlvbiB3aXRoIHRoZSB0b3VjaCBhcmVhIChwb2ludCArIHBhZGRpbmcpLgorICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBpbnRlcnNlY3RlZE5vZGVzLT5sZW5ndGgoKTsgaSsrKSB7CisgICAg
ICAgIE5vZGUqIGN1cnJlbnQgPSBpbnRlcnNlY3RlZE5vZGVzLT5pdGVtKGkpOworCisgICAgICAg
IEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQoY3VycmVudCk7CisgICAgICAgIGlmICghZWxl
bWVudCB8fCAoIWlzRWxlbWVudENsaWNrYWJsZShlbGVtZW50LCAwKSAmJiAhaXNWYWxpZEZyYW1l
T3duZXIoZWxlbWVudCkpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgSW50UmVj
dCBib3VuZGluZ1JlY3QgPSBlbGVtZW50LT5nZXRSZWN0KCk7CisgICAgICAgIGJvdW5kaW5nUmVj
dC5pbnRlcnNlY3QoYXJlYUZyb21Qb2ludCh4LCB5KSk7CisKKyAgICAgICAgaWYgKGJvdW5kaW5n
UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoYXJl
YShib3VuZGluZ1JlY3QpID4gYXJlYShiaWdnZXJJbnRlcnNlY3Rpb25SZWN0KSkgeworICAgICAg
ICAgICAgY2xpY2tlZEVsZW1lbnQgPSBlbGVtZW50OworICAgICAgICAgICAgYmlnZ2VySW50ZXJz
ZWN0aW9uUmVjdCA9IGJvdW5kaW5nUmVjdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChi
aWdnZXJJbnRlcnNlY3Rpb25SZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEludFBvaW50
KCk7CisKKyAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlbiB1c2VyIHRhcHMgYSBpbm5lciBmcmFt
ZS4gSXQgaXMgZG9uZSBpbiB0aHJlZSBzdGVwczoKKyAgICAvLyAxKSBUcmFuc2Zvcm0gdGhlIG9y
aWdpbmFsIHRvdWNoIHBvaW50IHRvIHRoZSBpbm5lciBkb2N1bWVudCBjb29yZGluYXRlczsKKyAg
ICAvLyAxKSBDYWxsIG5vZGVzRnJvbVJlY3QgZm9yIHRoZSBpbm5lciBkb2N1bWVudCBpbiBjYXNl
OworICAgIC8vIDMpIFJlLWFkZCB0aGUgaW5uZXIgZnJhbWUgb2Zmc2V0IChsb2NhdGlvbikgYmVm
b3JlIHBhc3NpbmcgdGhlIG5ldyBjbGlja2luZworICAgIC8vICAgIHBvc2l0aW9uIHRvIFdlYkNv
cmUuCisgICAgaWYgKGNsaWNrZWRFbGVtZW50LT5pc0ZyYW1lT3duZXJFbGVtZW50KCkpIHsKKyAg
ICAgICAgLy8gQWRqdXN0IGNsaWVudCBjb29yZGluYXRlcycgb3JpZ2luIHRvIGJlIHRvcCBsZWZ0
IG9mIGlmcmFtZSB2aWV3cG9ydC4KKyAgICAgICAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiByZWN0
ID0gY2xpY2tlZEVsZW1lbnQtPmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBJbnRQ
b2ludCBuZXdUb3VjaFBvaW50ID0gdG91Y2hQb2ludDsKKyAgICAgICAgSW50U2l6ZSBvZmZzZXQg
PSAgSW50U2l6ZShyZWN0LT5sZWZ0KCksIHJlY3QtPnRvcCgpKTsKKyAgICAgICAgbmV3VG91Y2hQ
b2ludCAtPSBvZmZzZXQ7CisKKyAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9
IHN0YXRpY19jYXN0PEhUTUxGcmFtZU93bmVyRWxlbWVudCo+KGNsaWNrZWRFbGVtZW50KTsKKyAg
ICAgICAgRG9jdW1lbnQqIHN1YkRvY3VtZW50ID0gb3duZXItPmNvbnRlbnRGcmFtZSgpLT5kb2N1
bWVudCgpOworICAgICAgICByZXR1cm4gZmluZENhbmRpZGF0ZVBvaW50Rm9yVG91Y2gobmV3VG91
Y2hQb2ludCwgc3ViRG9jdW1lbnQpOworICAgIH0KKworICAgIEZyYW1lVmlldyogdiA9IGRvY3Vt
ZW50LT5mcmFtZSgpLT52aWV3KCk7CisgICAgcmV0dXJuIHYtPmNvbnRlbnRzVG9XaW5kb3coYmln
Z2VySW50ZXJzZWN0aW9uUmVjdCkuY2VudGVyKCk7Cit9CisKK2Jvb2wgUVdlYlBhZ2VQcml2YXRl
OjpUb3VjaEFkanVzdGVyOjppc0VsZW1lbnRDbGlja2FibGUoRWxlbWVudCogZWxlbWVudCwgUmVm
UHRyPE5vZGVMaXN0PiBsaXN0KSBjb25zdAoreworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBpc0NsaWNrYWJsZSA9IGhhc01vdXNlTGlzdGVuZXIo
ZWxlbWVudCk7CisgICAgaWYgKCFpc0NsaWNrYWJsZSAmJiBsaXN0KSB7CisgICAgICAgIEVsZW1l
bnQqIHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgdW5zaWduZWQg
Y291bnQgPSBsaXN0LT5sZW5ndGgoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3Vu
dCAmJiBwYXJlbnQ7IGkrKykgeworICAgICAgICAgICAgaWYgKGxpc3QtPml0ZW0oaSkgIT0gcGFy
ZW50KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpc0NsaWNrYWJs
ZSA9IGhhc01vdXNlTGlzdGVuZXIocGFyZW50KTsKKyAgICAgICAgICAgIGlmIChpc0NsaWNrYWJs
ZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50
LT5wYXJlbnRFbGVtZW50KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICByZXR1cm4gaXNDbGlja2FibGUKKyAgICAgICAgfHwgZWxlbWVudC0+d2Vi
a2l0TWF0Y2hlc1NlbGVjdG9yKCJhLCo6bGluaywqOnZpc2l0ZWQsKltyb2xlPWJ1dHRvbl0sYnV0
dG9uLGlucHV0LHNlbGVjdCxsYWJlbCIsIGVjKQorICAgICAgICB8fCBjb21wdXRlZFN0eWxlKGVs
ZW1lbnQpLT5nZXRQcm9wZXJ0eVZhbHVlKGNzc1Byb3BlcnR5SUQoImN1cnNvciIpKSA9PSAicG9p
bnRlciI7Cit9CisKK2Jvb2wgUVdlYlBhZ2VQcml2YXRlOjpUb3VjaEFkanVzdGVyOjpoYXNNb3Vz
ZUxpc3RlbmVyKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVsZW1lbnQt
Pmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KQorICAgICAgICB8fCBl
bGVtZW50LT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpCisg
ICAgICAgIHx8IGVsZW1lbnQtPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZXVw
RXZlbnQpOworfQorCitJbnRSZWN0IFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6YXJl
YUZyb21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0Cit7CisgICAgLy8gTk9URTogVGhlIGltcGxl
bWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kIGhhcyB0byBiZSBzeW5jJ2VkIHdpdGggSGl0VGVzdFJl
c3VsdDo6cmVnaW9uRnJvbVBvaW50LgorICAgIHJldHVybiBJbnRSZWN0KHggLSBtX2hvcml6b250
YWxQYWRkaW5nLCB5IC0gbV92ZXJ0aWNhbFBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAgMiAq
IG1faG9yaXpvbnRhbFBhZGRpbmcgKyAxLCAyICogbV92ZXJ0aWNhbFBhZGRpbmcgKyAxKTsKK30K
KworaW50IFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6YXJlYShjb25zdCBJbnRSZWN0
JiByZWN0KSBjb25zdAoreworICAgIHJldHVybiByZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgp
OworfQorCitib29sIFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6aXNWYWxpZEZyYW1l
T3duZXIoRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZWxlbWVudCk7Cisg
ICAgcmV0dXJuIGVsZW1lbnQtPmlzRnJhbWVPd25lckVsZW1lbnQoKSAmJiBzdGF0aWNfY2FzdDxI
VE1MRnJhbWVPd25lckVsZW1lbnQqPihlbGVtZW50KS0+Y29udGVudEZyYW1lKCk7Cit9CisKK0Vs
ZW1lbnQqIFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6dG9FbGVtZW50KE5vZGUqIG5v
ZGUpIGNvbnN0Cit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmIChub2RlLT5pc0VsZW1lbnRO
b2RlKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7CisKKyAg
ICByZXR1cm4gMDsKK30KKwogCiAvKiEKICAgIFxlbnVtIFFXZWJQYWdlOjpGaW5kRmxhZwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJw
YWdlX3AuaAppbmRleCA2MzEwZWFmLi4zYTBhMzM1IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlX3AuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgInF3ZWJoaXN0b3J5LmgiCiAjaW5jbHVkZSAicXdlYmZyYW1lLmgi
CiAKKyNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogCkBAIC00MSwxMCArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIENvbnRleHRNZW51Q2xpZW50UXQ7CiAgICAgY2xhc3MgQ29udGV4dE1lbnVJ
dGVtOwogICAgIGNsYXNzIENvbnRleHRNZW51OworICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNs
YXNzIEVkaXRvckNsaWVudFF0OwogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3MgSW5zcGVj
dG9yQ29udHJvbGxlcjsKKyAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIE5vZGU7CisgICAg
Y2xhc3MgTm9kZUxpc3Q7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBGcmFtZTsKIH0KQEAg
LTEzNiw2ICsxNDAsMjYgQEAgcHVibGljOgogICAgIGJvb2wgdG91Y2hFdmVudChRVG91Y2hFdmVu
dCopOwogI2VuZGlmCiAKKyAgICBjbGFzcyBUb3VjaEFkanVzdGVyIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIFRvdWNoQWRqdXN0ZXIodW5zaWduZWQgaG9yaXpvbnRhbFBhZGRpbmcsIHVuc2lnbmVk
IHZlcnRpY2FsUGFkZGluZyk7CisKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgZmluZENhbmRp
ZGF0ZVBvaW50Rm9yVG91Y2goY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpEb2N1
bWVudCopIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBpc0VsZW1lbnRDbGlj
a2FibGUoV2ViQ29yZTo6RWxlbWVudCosIFdURjo6UmVmUHRyPFdlYkNvcmU6Ok5vZGVMaXN0Pikg
Y29uc3Q7CisgICAgICAgIGJvb2wgaGFzTW91c2VMaXN0ZW5lcihXZWJDb3JlOjpFbGVtZW50Kikg
Y29uc3Q7CisgICAgICAgIGlubGluZSBpbnQgYXJlYShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
Y29uc3Q7CisgICAgICAgIGlubGluZSBXZWJDb3JlOjpJbnRSZWN0IGFyZWFGcm9tUG9pbnQoaW50
IHgsIGludCB5KSBjb25zdDsKKyAgICAgICAgaW5saW5lIFdlYkNvcmU6OkVsZW1lbnQqIHRvRWxl
bWVudChXZWJDb3JlOjpOb2RlKikgY29uc3Q7CisgICAgICAgIGlubGluZSBib29sIGlzVmFsaWRG
cmFtZU93bmVyKFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0OworCisgICAgICAgIHVu
c2lnbmVkIG1faG9yaXpvbnRhbFBhZGRpbmc7CisgICAgICAgIHVuc2lnbmVkIG1fdmVydGljYWxQ
YWRkaW5nOworICAgIH07CisKKyAgICB2b2lkIGFkanVzdFBvaW50Rm9yQ2xpY2tpbmcoUUdyYXBo
aWNzU2NlbmVNb3VzZUV2ZW50KiwgV2ViQ29yZTo6RG9jdW1lbnQqKTsKKwogICAgIHZvaWQgc2V0
SW5zcGVjdG9yKFFXZWJJbnNwZWN0b3IqKTsKICAgICBRV2ViSW5zcGVjdG9yKiBnZXRPckNyZWF0
ZUluc3BlY3RvcigpOwogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQv
cXQvQ2hhbmdlTG9nCmluZGV4IDEyOTlhNmYuLjhmNTQxNjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9x
dC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMiw2ICsyLDQ5IEBACiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgW1F0XSBNYWtp
bmcgZWZmZWN0aXZlIHVzZSBvZiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQwODkKKworICAgICAgICBQYXRj
aCBhZGRzIGEgaGVscGVyIGNsYXNzIChuYW1lZCBUb3VjaEFkanVzdGVyKSB0byBpbXByb3ZlIHRh
cCBhY3Rpb25zCisgICAgICAgIG9uIG1vYmlsZSB0b3VjaCBkZXZpY2VzLiBUb3VjaEFkanVzdGVy
IG1ha2VzIHVzZSBvZiB0aGUgbmV3bHkgYWRkZWQgcmVjdAorICAgICAgICBiYXNlZCBoaXQgdGVz
dCBleHRlbnNpb24gdGhyb3VnaCB0aGUgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgbWV0aG9kLgor
ICAgICAgICBHaXZlbiBhIHJlY3RhbmdsZSBhcyBpbnB1dCwgbm9kZXNGcm9tUmVjdCByZXR1cm5z
IGEgei1pbmRleCBvcmRlcmVkIGxpc3QKKyAgICAgICAgb2Ygbm9kZXMgd2hvc2UgYm91bmRhcmll
cyBpbnRlcnNlY3QgdGhlIHJlY3RhbmdsZS4KKworICAgICAgICBCYXNpY2FsbHkgdGhlIFRvdWNo
QWRqdXN0ZXIgY2xhc3MgaW50ZXJjZXB0cyB0aGUgUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50Cisg
ICAgICAgIHBhc3NlZCB0byBib3RoIFFXZWJQYWdlUHJpdmF0ZTo6bW91c2V7UHJlc3MsUmVsZWFz
ZX1FdmVudCBtZXRob2RzIGJlZm9yZQorICAgICAgICB0aGV5IGFyZSBwYXNzZWQgZG93biB0byBX
ZWJDb3JlLiBUaGUgZ29hbCBpcyB0byBpbmZlciB0aGUgdGFyZ2V0IGNsaWNrIHBvc2l0aW9uLgor
ICAgICAgICBGb3IgdGhhdCwgYSByZWN0YW5nbGUgaXMgYnVpbHQgdXAgdXNpbmcgdGhlIGV2ZW50
IHBvc2l0aW9uIGFzIGEgY2VudGVyIHBvaW50IGFuZAorICAgICAgICBleHBhbmRpbmcgaXQgYm90
aCBob3Jpem9udGFsbHkgYW5kIHZlcnRpY2FsbHksIGJhc2VkIG9uIHRoZSB2YWx1ZXMgc2V0IGlu
CisgICAgICAgIFFXZWJTZXR0aW5nczo6aGl0VGVzdFBhZGRpbmcuCisKKyAgICAgICAgVG91Y2hB
ZGp1c3RlciBpdGVyYXRlcyBvdmVyIHRoZSBsaXN0IG9mIG5vZGVzIHJldHVybmVkIGJ5IG5vZGVz
RnJvbVJlY3QgYW5kCisgICAgICAgIHBpY2tzIHRoZSBjbGlja2FibGUgb25lIHRoYXQgaGFzIHRo
ZSBsYXJnZXN0IGludGVyc2VjdGlvbiBhcmVhIHdpdGggdGhlIGhpdAorICAgICAgICB0ZXN0IHJl
Y3RhbmdsZS4gVGhlIHRhcmdldCBwb3NpdGlvbiBpcyB0aGVuIHRoZSBjZW50ZXIgcG9pbnQgb2Yg
dGhpcyBpbnRlcnNlY3Rpb24KKyAgICAgICAgYXJlYS4KKworICAgICAgICBJbiBjYXNlIG9mIG5v
IGNsaWNrYWJsZSBub2RlIGludGVyc2VjdHMgdGhlIGhpdCB0ZXN0IGFyZWEsIHRoZSBjbGljayBw
b3NpdGlvbgorICAgICAgICBpcyBub3QgYWx0ZXJlZC4KKworICAgICAgICBUb3VjaEFkanVzdGVy
IGlzICpvbmx5KiB3b3JraW5nIGZvciBRR3JhcGhpY3NXZWJWaWV3IGJhc2VkIHZpZXdzLgorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFRvdWNoQWRqdXN0ZXI6OlRvdWNo
QWRqdXN0ZXIpOgorICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6ZmluZENhbmRpZGF0ZVBvaW50Rm9y
VG91Y2gpOgorICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6aXNFbGVtZW50Q2xpY2thYmxlKToKKyAg
ICAgICAgKFRvdWNoQWRqdXN0ZXI6Omhhc01vdXNlTGlzdGVuZXIpOgorICAgICAgICAoVG91Y2hB
ZGp1c3Rlcjo6YXJlYUZyb21Qb2ludCk6CisgICAgICAgIChUb3VjaEFkanVzdGVyOjphcmVhKToK
KyAgICAgICAgKFRvdWNoQWRqdXN0ZXI6OnRvRWxlbWVudCk6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6Om1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om1vdXNl
UmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6YWRqdXN0UG9pbnRGb3JD
bGlja2luZyk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKworMjAxMC0wOS0wMiAgQW50
b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFtRdF0gQWRkIEFQSSB0byBRV2ViU2V0dGluZ3Mg
Zm9yIHNldHRpbmcvZ2V0dGluZyB0aGUgcGFkZGluZyBvZiBIaXRUZXN0UmVzdWx0CiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDA4OAogCi0tIAoxLjcu
MC40Cgo=
</data>
<flag name="review"
          id="55436"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68010</attachid>
            <date>2010-09-18 08:57:45 -0700</date>
            <delta_ts>2010-11-04 13:27:48 -0700</delta_ts>
            <desc>patch v4 - addressed kenneth&apos;s comments (it will fail until bug 44088 is in)</desc>
            <filename>0001-2010-09-02-Antonio-Gomes-tonikitoo-webkit.org.patch</filename>
            <type>text/plain</type>
            <size>13623</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAyY2FkYTYxOTQ0MThlYWMyODAxNTg5MjdmMTExZDdlNTc2OTY0MzU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxOSBKdWwgMjAxMCAwOTo1MzoyMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMS8y
XSAyMDEwLTA5LTAyICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CgogICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbUXRdIE1ha2luZyBlZmZl
Y3RpdmUgdXNlIG9mIG5vZGVzRnJvbVJlY3QuCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ0MDg5CgogICAgICAgIFBhdGNoIGFkZHMgYSBoZWxwZXIgY2xh
c3MgKG5hbWVkIFRvdWNoQWRqdXN0ZXIpIHRvIGltcHJvdmUgdGFwIGFjdGlvbnMKICAgICAgICBv
biBtb2JpbGUgdG91Y2ggZGV2aWNlcy4gVG91Y2hBZGp1c3RlciBtYWtlcyB1c2Ugb2YgdGhlIG5l
d2x5IGFkZGVkIHJlY3QKICAgICAgICBiYXNlZCBoaXQgdGVzdCBleHRlbnNpb24gdGhyb3VnaCB0
aGUgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgbWV0aG9kLgogICAgICAgIEdpdmVuIGEgcmVjdGFu
Z2xlIGFzIGlucHV0LCBub2Rlc0Zyb21SZWN0IHJldHVybnMgYSB6LWluZGV4IG9yZGVyZWQgbGlz
dAogICAgICAgIG9mIG5vZGVzIHdob3NlIGJvdW5kYXJpZXMgaW50ZXJzZWN0IHRoZSByZWN0YW5n
bGUuCgogICAgICAgIEJhc2ljYWxseSB0aGUgVG91Y2hBZGp1c3RlciBjbGFzcyBpbnRlcmNlcHRz
IHRoZSBRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQKICAgICAgICBwYXNzZWQgdG8gYm90aCBRV2Vi
UGFnZVByaXZhdGU6Om1vdXNle1ByZXNzLFJlbGVhc2V9RXZlbnQgbWV0aG9kcyBiZWZvcmUKICAg
ICAgICB0aGV5IGFyZSBwYXNzZWQgZG93biB0byBXZWJDb3JlLiBUaGUgZ29hbCBpcyB0byBpbmZl
ciB0aGUgdGFyZ2V0IGNsaWNrIHBvc2l0aW9uLgogICAgICAgIEZvciB0aGF0LCBhIHJlY3Rhbmds
ZSBpcyBidWlsdCB1cCB1c2luZyB0aGUgZXZlbnQgcG9zaXRpb24gYXMgYSBjZW50ZXIgcG9pbnQg
YW5kCiAgICAgICAgZXhwYW5kaW5nIGl0IGJvdGggaG9yaXpvbnRhbGx5IGFuZCB2ZXJ0aWNhbGx5
LCBiYXNlZCBvbiB0aGUgdmFsdWVzIHNldCBpbgogICAgICAgIFFXZWJTZXR0aW5nczo6aGl0VGVz
dFBhZGRpbmcuCgogICAgICAgIFRvdWNoQWRqdXN0ZXIgaXRlcmF0ZXMgb3ZlciB0aGUgbGlzdCBv
ZiBub2RlcyByZXR1cm5lZCBieSBub2Rlc0Zyb21SZWN0IGFuZAogICAgICAgIHBpY2tzIHRoZSBj
bGlja2FibGUgb25lIHRoYXQgaGFzIHRoZSBsYXJnZXN0IGludGVyc2VjdGlvbiBhcmVhIHdpdGgg
dGhlIGhpdAogICAgICAgIHRlc3QgcmVjdGFuZ2xlLiBUaGUgdGFyZ2V0IHBvc2l0aW9uIGlzIHRo
ZW4gdGhlIGNlbnRlciBwb2ludCBvZiB0aGlzIGludGVyc2VjdGlvbgogICAgICAgIGFyZWEuCgog
ICAgICAgIEluIGNhc2Ugb2Ygbm8gY2xpY2thYmxlIG5vZGUgaW50ZXJzZWN0cyB0aGUgaGl0IHRl
c3QgYXJlYSwgdGhlIGNsaWNrIHBvc2l0aW9uCiAgICAgICAgaXMgbm90IGFsdGVyZWQuCgogICAg
ICAgIFRvdWNoQWRqdXN0ZXIgaXMgKm9ubHkqIHdvcmtpbmcgZm9yIFFHcmFwaGljc1dlYlZpZXcg
YmFzZWQgdmlld3MuCgogICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKICAgICAgICAoVG91Y2hB
ZGp1c3Rlcjo6VG91Y2hBZGp1c3Rlcik6CiAgICAgICAgKFRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5k
aWRhdGVQb2ludEZvclRvdWNoKToKICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6aXNFbGVtZW50Q2xp
Y2thYmxlKToKICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6aGFzTW91c2VMaXN0ZW5lcik6CiAgICAg
ICAgKFRvdWNoQWRqdXN0ZXI6OmFyZWFGcm9tUG9pbnQpOgogICAgICAgIChUb3VjaEFkanVzdGVy
OjphcmVhKToKICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6dG9FbGVtZW50KToKICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjptb3VzZVByZXNzRXZlbnQpOgogICAgICAgIChRV2ViUGFnZVByaXZhdGU6
Om1vdXNlUmVsZWFzZUV2ZW50KToKICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjphZGp1c3RQb2lu
dEZvckNsaWNraW5nKToKICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6Ci0tLQogV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5jcHAgfCAgMTQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaCB8ICAgMjMgKysrKysrKwog
V2ViS2l0L3F0L0NoYW5nZUxvZyAgICAgICAgfCAgIDQzICsrKysrKysrKysrKysKIDMgZmlsZXMg
Y2hhbmdlZCwgMjEyIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApp
bmRleCAxZjc1ZmEyLi40MzJkMDJmIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMzIsNiArMzIsOCBAQAog
I2luY2x1ZGUgInF3ZWJzZXR0aW5ncy5oIgogI2luY2x1ZGUgInF3ZWJraXR2ZXJzaW9uLmgiCiAK
KyNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJDU1NQ
YXJzZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNzQsNiArNzYsOCBAQAogI2luY2x1ZGUg
IlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkhhc2hNYXAuaCIKICNpbmNsdWRlICJIVE1MRm9y
bUVsZW1lbnQuaCIKKyNpbmNsdWRlICJDbGllbnRSZWN0LmgiCisjaW5jbHVkZSAiSFRNTEZyYW1l
T3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKQEAgLTg2LDYgKzkwLDcg
QEAKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oIgogI2luY2x1ZGUg
IlBhZ2VDbGllbnRRdC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgIk5v
ZGVMaXN0LmgiCiAjaW5jbHVkZSAid3RmL1RocmVhZGluZy5oIgogCiAjaW5jbHVkZSA8UUFwcGxp
Y2F0aW9uPgpAQCAtNjM3LDYgKzY0Miw3IEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjptb3VzZVBy
ZXNzRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBldikKICAgICB9CiAKICAgICBib29s
IGFjY2VwdGVkID0gZmFsc2U7CisgICAgYWRqdXN0UG9pbnRGb3JDbGlja2luZyhldiwgcGFnZS0+
bWFpbkZyYW1lKCktPmRvY3VtZW50KCkpOwogICAgIFBsYXRmb3JtTW91c2VFdmVudCBtZXYoZXYs
IDEpOwogICAgIC8vIGlnbm9yZSB0aGUgZXZlbnQgaWYgd2UgY2FuJ3QgbWFwIFF0J3MgbW91c2Ug
YnV0dG9ucyB0byBXZWJDb3JlOjpNb3VzZUJ1dHRvbgogICAgIGlmIChtZXYuYnV0dG9uKCkgIT0g
Tm9CdXR0b24pCkBAIC03NzgsNiArNzg0LDcgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6Om1vdXNl
UmVsZWFzZUV2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCogZXYpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGJvb2wgYWNjZXB0ZWQgPSBmYWxzZTsKKyAgICBhZGp1c3RQb2ludEZvckNsaWNr
aW5nKGV2LCBwYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgUGxhdGZvcm1Nb3Vz
ZUV2ZW50IG1ldihldiwgMCk7CiAgICAgLy8gaWdub3JlIHRoZSBldmVudCBpZiB3ZSBjYW4ndCBt
YXAgUXQncyBtb3VzZSBidXR0b25zIHRvIFdlYkNvcmU6Ok1vdXNlQnV0dG9uCiAgICAgaWYgKG1l
di5idXR0b24oKSAhPSBOb0J1dHRvbikKQEAgLTEzODgsNiArMTM5NSwyMSBAQCBib29sIFFXZWJQ
YWdlUHJpdmF0ZTo6aGFuZGxlU2Nyb2xsaW5nKFFLZXlFdmVudCAqZXYsIEZyYW1lICpmcmFtZSkK
ICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zY3JvbGxSZWN1cnNpdmVseShkaXJl
Y3Rpb24sIGdyYW51bGFyaXR5KTsKIH0KIAordm9pZCBRV2ViUGFnZVByaXZhdGU6OmFkanVzdFBv
aW50Rm9yQ2xpY2tpbmcoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBldiwgRG9jdW1lbnQqIHN0
YXJ0aW5nRG9jdW1lbnQpCit7CisgICAgdW5zaWduZWQgaG9yaXpvbnRhbFBhZGRpbmcgPSBxLT5z
ZXR0aW5ncygpLT5oaXRUZXN0UGFkZGluZyhRdDo6SG9yaXpvbnRhbCk7CisgICAgdW5zaWduZWQg
dmVydGljYWxQYWRkaW5nID0gcS0+c2V0dGluZ3MoKS0+aGl0VGVzdFBhZGRpbmcoUXQ6OlZlcnRp
Y2FsKTsKKyAgICBpZiAoIWhvcml6b250YWxQYWRkaW5nICYmICF2ZXJ0aWNhbFBhZGRpbmcpCisg
ICAgICAgIHJldHVybjsKKworICAgIEludFBvaW50IG9yaWdpbmFsUG9pbnQoZXYtPnBvcygpLnRv
UG9pbnQoKSk7CisgICAgSW50UG9pbnQgYWRqdXN0ZWRQb2ludCA9IFRvdWNoQWRqdXN0ZXIoaG9y
aXpvbnRhbFBhZGRpbmcsIHZlcnRpY2FsUGFkZGluZykuZmluZENhbmRpZGF0ZVBvaW50Rm9yVG91
Y2gob3JpZ2luYWxQb2ludCwgc3RhcnRpbmdEb2N1bWVudCk7CisgICAgaWYgKGFkanVzdGVkUG9p
bnQgPT0gSW50UG9pbnQ6Onplcm8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZXYtPnNldFBv
cyhRUG9pbnRGKGFkanVzdGVkUG9pbnQpKTsKK30KKwogI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVS
U0lPTl9DSEVDSyg0LCA2LCAwKQogYm9vbCBRV2ViUGFnZVByaXZhdGU6OnRvdWNoRXZlbnQoUVRv
dWNoRXZlbnQqIGV2ZW50KQogewpAQCAtMTU1Niw2ICsxNTc4LDEzMCBAQCBJbnNwZWN0b3JDb250
cm9sbGVyKiBRV2ViUGFnZVByaXZhdGU6Omluc3BlY3RvckNvbnRyb2xsZXIoKQogI2VuZGlmCiB9
CiAKK1FXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6VG91Y2hBZGp1c3Rlcih1bnNpZ25l
ZCBoUGFkZGluZywgdW5zaWduZWQgdlBhZGRpbmcpCisgICAgOiBtX2hvcml6b250YWxQYWRkaW5n
KGhQYWRkaW5nKQorICAgICwgbV92ZXJ0aWNhbFBhZGRpbmcodlBhZGRpbmcpCit7Cit9CisKK0lu
dFBvaW50IFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6ZmluZENhbmRpZGF0ZVBvaW50
Rm9yVG91Y2goY29uc3QgSW50UG9pbnQmIHRvdWNoUG9pbnQsIERvY3VtZW50KiBkb2N1bWVudCkg
Y29uc3QKK3sKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gSW50UG9pbnQoKTsK
KworICAgIGludCB4ID0gdG91Y2hQb2ludC54KCk7CisgICAgaW50IHkgPSB0b3VjaFBvaW50Lnko
KTsKKworICAgIFJlZlB0cjxOb2RlTGlzdD4gaW50ZXJzZWN0ZWROb2RlcyA9IGRvY3VtZW50LT5u
b2Rlc0Zyb21SZWN0KHgsIHksIG1faG9yaXpvbnRhbFBhZGRpbmcsIG1fdmVydGljYWxQYWRkaW5n
LCBmYWxzZSk7CisgICAgaWYgKCFpbnRlcnNlY3RlZE5vZGVzKQorICAgICAgICByZXR1cm4gSW50
UG9pbnQoKTsKKworICAgIEVsZW1lbnQqIGNsaWNrZWRFbGVtZW50ID0gMDsKKyAgICBJbnRSZWN0
IGxhcmdlc3RJbnRlcnNlY3Rpb25SZWN0OworCisgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBsaXN0
IG9mIG5vZGVzIGhpdCBsb29raW5nIGZvciB0aGUgb25lIHdob3NlIGJvdW5kaW5nIGFyZWEKKyAg
ICAvLyBoYXMgbGFyZ2VzdCBpbnRlcnNlY3Rpb24gd2l0aCB0aGUgdG91Y2ggYXJlYSAocG9pbnQg
KyBwYWRkaW5nKS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW50ZXJzZWN0ZWROb2Rl
cy0+bGVuZ3RoKCk7IGkrKykgeworICAgICAgICBOb2RlKiBjdXJyZW50ID0gaW50ZXJzZWN0ZWRO
b2Rlcy0+aXRlbShpKTsKKworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KGN1
cnJlbnQpOworICAgICAgICBpZiAoIWVsZW1lbnQgfHwgKCFpc0NsaWNrYWJsZUVsZW1lbnQoZWxl
bWVudCwgMCkgJiYgIWlzVmFsaWRGcmFtZU93bmVyKGVsZW1lbnQpKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIEludFJlY3QgYm91bmRpbmdSZWN0ID0gZWxlbWVudC0+Z2V0UmVj
dCgpOworICAgICAgICBib3VuZGluZ1JlY3QuaW50ZXJzZWN0KGFyZWFGcm9tUG9pbnQoeCwgeSkp
OworCisgICAgICAgIGlmIChib3VuZGluZ1JlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgaW50IGJvdW5kaW5nUmVjdEFyZWEgPSBib3VuZGluZ1JlY3Qud2lk
dGgoKSAqIGJvdW5kaW5nUmVjdC5oZWlnaHQoKTsKKyAgICAgICAgaW50IGxhcmdlc3RJbnRlcnNl
Y3Rpb25SZWN0QXJlYSA9IGxhcmdlc3RJbnRlcnNlY3Rpb25SZWN0LndpZHRoKCkgKiBsYXJnZXN0
SW50ZXJzZWN0aW9uUmVjdC5oZWlnaHQoKTsKKyAgICAgICAgaWYgKGJvdW5kaW5nUmVjdEFyZWEg
PiBsYXJnZXN0SW50ZXJzZWN0aW9uUmVjdEFyZWEpIHsKKyAgICAgICAgICAgIGNsaWNrZWRFbGVt
ZW50ID0gZWxlbWVudDsKKyAgICAgICAgICAgIGxhcmdlc3RJbnRlcnNlY3Rpb25SZWN0ID0gYm91
bmRpbmdSZWN0OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGxhcmdlc3RJbnRlcnNlY3Rp
b25SZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEludFBvaW50KCk7CisKKyAgICAvLyBI
YW5kbGUgdGhlIGNhc2Ugd2hlbiB1c2VyIHRhcHMgYSBpbm5lciBmcmFtZS4gSXQgaXMgZG9uZSBp
biB0aHJlZSBzdGVwczoKKyAgICAvLyAxKSBUcmFuc2Zvcm0gdGhlIG9yaWdpbmFsIHRvdWNoIHBv
aW50IHRvIHRoZSBpbm5lciBkb2N1bWVudCBjb29yZGluYXRlczsKKyAgICAvLyAxKSBDYWxsIG5v
ZGVzRnJvbVJlY3QgZm9yIHRoZSBpbm5lciBkb2N1bWVudCBpbiBjYXNlOworICAgIC8vIDMpIFJl
LWFkZCB0aGUgaW5uZXIgZnJhbWUgb2Zmc2V0IChsb2NhdGlvbikgYmVmb3JlIHBhc3NpbmcgdGhl
IG5ldyBjbGlja2luZworICAgIC8vICAgIHBvc2l0aW9uIHRvIFdlYkNvcmUuCisgICAgaWYgKGNs
aWNrZWRFbGVtZW50LT5pc0ZyYW1lT3duZXJFbGVtZW50KCkpIHsKKyAgICAgICAgLy8gQWRqdXN0
IGNsaWVudCBjb29yZGluYXRlcycgb3JpZ2luIHRvIGJlIHRvcCBsZWZ0IG9mIGlubmVyIGZyYW1l
IHZpZXdwb3J0LgorICAgICAgICBQYXNzUmVmUHRyPENsaWVudFJlY3Q+IHJlY3QgPSBjbGlja2Vk
RWxlbWVudC0+Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIEludFBvaW50IG5ld1Rv
dWNoUG9pbnQgPSB0b3VjaFBvaW50OworICAgICAgICBJbnRTaXplIG9mZnNldCA9ICBJbnRTaXpl
KHJlY3QtPmxlZnQoKSwgcmVjdC0+dG9wKCkpOworICAgICAgICBuZXdUb3VjaFBvaW50IC09IG9m
ZnNldDsKKworICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gc3RhdGljX2Nh
c3Q8SFRNTEZyYW1lT3duZXJFbGVtZW50Kj4oY2xpY2tlZEVsZW1lbnQpOworICAgICAgICBEb2N1
bWVudCogY2hpbGREb2N1bWVudCA9IG93bmVyLT5jb250ZW50RnJhbWUoKS0+ZG9jdW1lbnQoKTsK
KyAgICAgICAgcmV0dXJuIGZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKG5ld1RvdWNoUG9pbnQs
IGNoaWxkRG9jdW1lbnQpOworICAgIH0KKworICAgIEZyYW1lVmlldyogdiA9IGRvY3VtZW50LT5m
cmFtZSgpLT52aWV3KCk7CisgICAgcmV0dXJuIHYtPmNvbnRlbnRzVG9XaW5kb3cobGFyZ2VzdElu
dGVyc2VjdGlvblJlY3QpLmNlbnRlcigpOworfQorCitib29sIFFXZWJQYWdlUHJpdmF0ZTo6VG91
Y2hBZGp1c3Rlcjo6aXNDbGlja2FibGVFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIFJlZlB0cjxO
b2RlTGlzdD4gbGlzdCkgY29uc3QKK3sKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGJvb2wgaXNDbGlja2FibGUgPSBoYXNNb3VzZUxpc3RlbmVyKGVsZW1l
bnQpOworICAgIGlmICghaXNDbGlja2FibGUgJiYgbGlzdCkgeworICAgICAgICBFbGVtZW50KiBw
YXJlbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CisgICAgICAgIHVuc2lnbmVkIGNvdW50
ID0gbGlzdC0+bGVuZ3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3Vu
dCAmJiBwYXJlbnQ7IGkrKykgeworICAgICAgICAgICAgaWYgKGxpc3QtPml0ZW0oaSkgIT0gcGFy
ZW50KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpc0NsaWNrYWJs
ZSA9IGhhc01vdXNlTGlzdGVuZXIocGFyZW50KTsKKyAgICAgICAgICAgIGlmIChpc0NsaWNrYWJs
ZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50
LT5wYXJlbnRFbGVtZW50KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICByZXR1cm4gaXNDbGlja2FibGUKKyAgICAgICAgfHwgZWxlbWVudC0+d2Vi
a2l0TWF0Y2hlc1NlbGVjdG9yKCJhLCo6bGluaywqOnZpc2l0ZWQsKltyb2xlPWJ1dHRvbl0sYnV0
dG9uLGlucHV0LHNlbGVjdCxsYWJlbCIsIGVjKQorICAgICAgICB8fCBjb21wdXRlZFN0eWxlKGVs
ZW1lbnQpLT5nZXRQcm9wZXJ0eVZhbHVlKGNzc1Byb3BlcnR5SUQoImN1cnNvciIpKSA9PSAicG9p
bnRlciI7Cit9CisKK2Jvb2wgUVdlYlBhZ2VQcml2YXRlOjpUb3VjaEFkanVzdGVyOjpoYXNNb3Vz
ZUxpc3RlbmVyKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVsZW1lbnQt
Pmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KQorICAgICAgICB8fCBl
bGVtZW50LT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpCisg
ICAgICAgIHx8IGVsZW1lbnQtPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZXVw
RXZlbnQpOworfQorCitJbnRSZWN0IFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6YXJl
YUZyb21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0Cit7CisgICAgLy8gTk9URTogVGhlIGltcGxl
bWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kIGhhcyB0byBiZSBzeW5jJ2VkIHdpdGggSGl0VGVzdFJl
c3VsdDo6cmVnaW9uRnJvbVBvaW50LgorICAgIHJldHVybiBJbnRSZWN0KHggLSBtX2hvcml6b250
YWxQYWRkaW5nLCB5IC0gbV92ZXJ0aWNhbFBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAgMiAq
IG1faG9yaXpvbnRhbFBhZGRpbmcgKyAxLCAyICogbV92ZXJ0aWNhbFBhZGRpbmcgKyAxKTsKK30K
KworYm9vbCBRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmlzVmFsaWRGcmFtZU93bmVy
KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIHJl
dHVybiBlbGVtZW50LT5pc0ZyYW1lT3duZXJFbGVtZW50KCkgJiYgc3RhdGljX2Nhc3Q8SFRNTEZy
YW1lT3duZXJFbGVtZW50Kj4oZWxlbWVudCktPmNvbnRlbnRGcmFtZSgpOworfQorCitFbGVtZW50
KiBRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OnRvRWxlbWVudChOb2RlKiBub2RlKSBj
b25zdAoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgp
KQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOworCisgICAgcmV0
dXJuIDA7Cit9CisKIAogLyohCiAgICBcZW51bSBRV2ViUGFnZTo6RmluZEZsYWcKZGlmZiAtLWdp
dCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9w
LmgKaW5kZXggODJmNTM2NS4uYWE3ZDllMiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2Vi
cGFnZV9wLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJxd2ViaGlzdG9yeS5oIgogI2luY2x1ZGUgInF3ZWJmcmFtZS5oIgogCisj
aW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKIApAQCAtNDEsMTAgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBDb250ZXh0TWVudUNsaWVudFF0OwogICAgIGNsYXNzIENvbnRleHRNZW51SXRlbTsK
ICAgICBjbGFzcyBDb250ZXh0TWVudTsKKyAgICBjbGFzcyBEb2N1bWVudDsKICAgICBjbGFzcyBF
ZGl0b3JDbGllbnRRdDsKICAgICBjbGFzcyBFbGVtZW50OwogICAgIGNsYXNzIEluc3BlY3RvckNv
bnRyb2xsZXI7CisgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBOb2RlOworICAgIGNsYXNz
IE5vZGVMaXN0OwogICAgIGNsYXNzIFBhZ2U7CiAgICAgY2xhc3MgRnJhbWU7CiB9CkBAIC0xMzYs
NiArMTQwLDI1IEBAIHB1YmxpYzoKICAgICBib29sIHRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsK
ICNlbmRpZgogCisgICAgY2xhc3MgVG91Y2hBZGp1c3RlciB7CisgICAgcHVibGljOgorICAgICAg
ICBUb3VjaEFkanVzdGVyKHVuc2lnbmVkIGhvcml6b250YWxQYWRkaW5nLCB1bnNpZ25lZCB2ZXJ0
aWNhbFBhZGRpbmcpOworCisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IGZpbmRDYW5kaWRhdGVQ
b2ludEZvclRvdWNoKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6RG9jdW1lbnQq
KSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgaXNDbGlja2FibGVFbGVtZW50
KFdlYkNvcmU6OkVsZW1lbnQqLCBXVEY6OlJlZlB0cjxXZWJDb3JlOjpOb2RlTGlzdD4pIGNvbnN0
OworICAgICAgICBib29sIGhhc01vdXNlTGlzdGVuZXIoV2ViQ29yZTo6RWxlbWVudCopIGNvbnN0
OworICAgICAgICBpbmxpbmUgV2ViQ29yZTo6SW50UmVjdCBhcmVhRnJvbVBvaW50KGludCB4LCBp
bnQgeSkgY29uc3Q7CisgICAgICAgIGlubGluZSBXZWJDb3JlOjpFbGVtZW50KiB0b0VsZW1lbnQo
V2ViQ29yZTo6Tm9kZSopIGNvbnN0OworICAgICAgICBpbmxpbmUgYm9vbCBpc1ZhbGlkRnJhbWVP
d25lcihXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KSBjb25zdDsKKworICAgICAgICB1bnNpZ25l
ZCBtX2hvcml6b250YWxQYWRkaW5nOworICAgICAgICB1bnNpZ25lZCBtX3ZlcnRpY2FsUGFkZGlu
ZzsKKyAgICB9OworCisgICAgdm9pZCBhZGp1c3RQb2ludEZvckNsaWNraW5nKFFHcmFwaGljc1Nj
ZW5lTW91c2VFdmVudCosIFdlYkNvcmU6OkRvY3VtZW50Kik7CisKICAgICB2b2lkIHNldEluc3Bl
Y3RvcihRV2ViSW5zcGVjdG9yKik7CiAgICAgUVdlYkluc3BlY3RvciogZ2V0T3JDcmVhdGVJbnNw
ZWN0b3IoKTsKICAgICBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0No
YW5nZUxvZwppbmRleCAwNjYyOGIxLi5hOWExZGY2IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTIsNiArMiw0OSBAQAogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIFtRdF0gTWFraW5nIGVm
ZmVjdGl2ZSB1c2Ugb2YgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MDg5CisKKyAgICAgICAgUGF0Y2ggYWRk
cyBhIGhlbHBlciBjbGFzcyAobmFtZWQgVG91Y2hBZGp1c3RlcikgdG8gaW1wcm92ZSB0YXAgYWN0
aW9ucworICAgICAgICBvbiBtb2JpbGUgdG91Y2ggZGV2aWNlcy4gVG91Y2hBZGp1c3RlciBtYWtl
cyB1c2Ugb2YgdGhlIG5ld2x5IGFkZGVkIHJlY3QKKyAgICAgICAgYmFzZWQgaGl0IHRlc3QgZXh0
ZW5zaW9uIHRocm91Z2ggdGhlIERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0IG1ldGhvZC4KKyAgICAg
ICAgR2l2ZW4gYSByZWN0YW5nbGUgYXMgaW5wdXQsIG5vZGVzRnJvbVJlY3QgcmV0dXJucyBhIHot
aW5kZXggb3JkZXJlZCBsaXN0CisgICAgICAgIG9mIG5vZGVzIHdob3NlIGJvdW5kYXJpZXMgaW50
ZXJzZWN0IHRoZSByZWN0YW5nbGUuCisKKyAgICAgICAgQmFzaWNhbGx5IHRoZSBUb3VjaEFkanVz
dGVyIGNsYXNzIGludGVyY2VwdHMgdGhlIFFHcmFwaGljc1NjZW5lTW91c2VFdmVudAorICAgICAg
ICBwYXNzZWQgdG8gYm90aCBRV2ViUGFnZVByaXZhdGU6Om1vdXNle1ByZXNzLFJlbGVhc2V9RXZl
bnQgbWV0aG9kcyBiZWZvcmUKKyAgICAgICAgdGhleSBhcmUgcGFzc2VkIGRvd24gdG8gV2ViQ29y
ZS4gVGhlIGdvYWwgaXMgdG8gaW5mZXIgdGhlIHRhcmdldCBjbGljayBwb3NpdGlvbi4KKyAgICAg
ICAgRm9yIHRoYXQsIGEgcmVjdGFuZ2xlIGlzIGJ1aWx0IHVwIHVzaW5nIHRoZSBldmVudCBwb3Np
dGlvbiBhcyBhIGNlbnRlciBwb2ludCBhbmQKKyAgICAgICAgZXhwYW5kaW5nIGl0IGJvdGggaG9y
aXpvbnRhbGx5IGFuZCB2ZXJ0aWNhbGx5LCBiYXNlZCBvbiB0aGUgdmFsdWVzIHNldCBpbgorICAg
ICAgICBRV2ViU2V0dGluZ3M6OmhpdFRlc3RQYWRkaW5nLgorCisgICAgICAgIFRvdWNoQWRqdXN0
ZXIgaXRlcmF0ZXMgb3ZlciB0aGUgbGlzdCBvZiBub2RlcyByZXR1cm5lZCBieSBub2Rlc0Zyb21S
ZWN0IGFuZAorICAgICAgICBwaWNrcyB0aGUgY2xpY2thYmxlIG9uZSB0aGF0IGhhcyB0aGUgbGFy
Z2VzdCBpbnRlcnNlY3Rpb24gYXJlYSB3aXRoIHRoZSBoaXQKKyAgICAgICAgdGVzdCByZWN0YW5n
bGUuIFRoZSB0YXJnZXQgcG9zaXRpb24gaXMgdGhlbiB0aGUgY2VudGVyIHBvaW50IG9mIHRoaXMg
aW50ZXJzZWN0aW9uCisgICAgICAgIGFyZWEuCisKKyAgICAgICAgSW4gY2FzZSBvZiBubyBjbGlj
a2FibGUgbm9kZSBpbnRlcnNlY3RzIHRoZSBoaXQgdGVzdCBhcmVhLCB0aGUgY2xpY2sgcG9zaXRp
b24KKyAgICAgICAgaXMgbm90IGFsdGVyZWQuCisKKyAgICAgICAgVG91Y2hBZGp1c3RlciBpcyAq
b25seSogd29ya2luZyBmb3IgUUdyYXBoaWNzV2ViVmlldyBiYXNlZCB2aWV3cy4KKworICAgICAg
ICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChUb3VjaEFkanVzdGVyOjpUb3VjaEFkanVz
dGVyKToKKyAgICAgICAgKFRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNo
KToKKyAgICAgICAgKFRvdWNoQWRqdXN0ZXI6OmlzRWxlbWVudENsaWNrYWJsZSk6CisgICAgICAg
IChUb3VjaEFkanVzdGVyOjpoYXNNb3VzZUxpc3RlbmVyKToKKyAgICAgICAgKFRvdWNoQWRqdXN0
ZXI6OmFyZWFGcm9tUG9pbnQpOgorICAgICAgICAoVG91Y2hBZGp1c3Rlcjo6YXJlYSk6CisgICAg
ICAgIChUb3VjaEFkanVzdGVyOjp0b0VsZW1lbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRl
Ojptb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZVJlbGVh
c2VFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmFkanVzdFBvaW50Rm9yQ2xpY2tp
bmcpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisKKzIwMTAtMDktMDIgIEFudG9uaW8g
R29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKwogICAgICAgICBbUXRdIEFkZCBBUEkgdG8gUVdlYlNldHRpbmdzIGZvciBz
ZXR0aW5nL2dldHRpbmcgdGhlIHBhZGRpbmcgb2YgSGl0VGVzdFJlc3VsdAogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQwODgKIAotLSAKMS42LjQuMgoK
</data>
<flag name="review"
          id="57450"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72959</attachid>
            <date>2010-11-04 10:38:46 -0700</date>
            <delta_ts>2010-11-04 22:09:58 -0700</delta_ts>
            <desc>(committed r71393, r=kenneth,anttik) Updating last patch against ToT, and changed it to use the Platform Plugin QWebTouchModifier instead of QWebSettings.</desc>
            <filename>using_nodesfromrect_1.diff</filename>
            <type>text/plain</type>
            <size>14566</size>
            <attacher name="Andre Pedralho">andre.pedralho</attacher>
            
              <data encoding="base64">Y29tbWl0IDQ0OTYyMzk4ZDgzNzNmYTE1ZDEyYWE3ZjNmYmFhM2ZkZjBhNDZkMmEKQXV0aG9yOiBB
bnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KRGF0ZTogICBXZWQgTm92IDMgMTY6
MzY6MDcgMjAxMCAtMDQwMAoKICAgIDIwMTAtMTEtMDMgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0
b29Ad2Via2l0Lm9yZz4sIEFuZHJlIFBlZHJhbGhvICA8YW5kcmUucGVkcmFsaG9AZ21haWwuY29t
PgogICAgCiAgICAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
IGFuZCBBbnR0aSBLb2l2aXN0by4KICAgIAogICAgICAgICAgICBbUXRdIE1ha2luZyBlZmZlY3Rp
dmUgdXNlIG9mIG5vZGVzRnJvbVJlY3QuCiAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NDA4OQogICAgCiAgICAgICAgICAgIFBhdGNoIGFkZHMgYSBo
ZWxwZXIgY2xhc3MgKG5hbWVkIFRvdWNoQWRqdXN0ZXIpIHRvIGltcHJvdmUgdGFwIGFjdGlvbnMK
ICAgICAgICAgICAgb24gbW9iaWxlIHRvdWNoIGRldmljZXMuIFRvdWNoQWRqdXN0ZXIgbWFrZXMg
dXNlIG9mIHRoZSBuZXdseSBhZGRlZCByZWN0CiAgICAgICAgICAgIGJhc2VkIGhpdCB0ZXN0IGV4
dGVuc2lvbiB0aHJvdWdoIHRoZSBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCBtZXRob2QuCiAgICAg
ICAgICAgIEdpdmVuIGEgcmVjdGFuZ2xlIGFzIGlucHV0LCBub2Rlc0Zyb21SZWN0IHJldHVybnMg
YSB6LWluZGV4IG9yZGVyZWQgbGlzdAogICAgICAgICAgICBvZiBub2RlcyB3aG9zZSBib3VuZGFy
aWVzIGludGVyc2VjdCB0aGUgcmVjdGFuZ2xlLgogICAgCiAgICAgICAgICAgIEJhc2ljYWxseSB0
aGUgVG91Y2hBZGp1c3RlciBjbGFzcyBpbnRlcmNlcHRzIHRoZSBRR3JhcGhpY3NTY2VuZU1vdXNl
RXZlbnQKICAgICAgICAgICAgcGFzc2VkIHRvIGJvdGggUVdlYlBhZ2VQcml2YXRlOjptb3VzZXtQ
cmVzcyxSZWxlYXNlfUV2ZW50IG1ldGhvZHMgYmVmb3JlCiAgICAgICAgICAgIHRoZXkgYXJlIHBh
c3NlZCBkb3duIHRvIFdlYkNvcmUuIFRoZSBnb2FsIGlzIHRvIGluZmVyIHRoZSB0YXJnZXQgY2xp
Y2sgcG9zaXRpb24uCiAgICAgICAgICAgIEZvciB0aGF0LCBhIHJlY3RhbmdsZSBpcyBidWlsdCB1
cCB1c2luZyB0aGUgZXZlbnQgcG9zaXRpb24gYXMgYSBjZW50ZXIgcG9pbnQgYW5kCiAgICAgICAg
ICAgIGV4cGFuZGluZyBpdCBiYXNlZCBvbiB0aGUgdmFsdWVzIGFuZCBkaXJlY3Rpb25zIHNldCBp
biB0aGUgUGxhdGZvcm0gUGx1Z2luCiAgICAgICAgICAgIFFXZWJUb3VjaE1vZGlmaWVyOjpoaXRU
ZXN0UGFkZGluZy4KICAgIAogICAgICAgICAgICBUb3VjaEFkanVzdGVyIGl0ZXJhdGVzIG92ZXIg
dGhlIGxpc3Qgb2Ygbm9kZXMgcmV0dXJuZWQgYnkgbm9kZXNGcm9tUmVjdCBhbmQKICAgICAgICAg
ICAgcGlja3MgdGhlIGNsaWNrYWJsZSBvbmUgdGhhdCBoYXMgdGhlIGxhcmdlc3QgaW50ZXJzZWN0
aW9uIGFyZWEgd2l0aCB0aGUgaGl0CiAgICAgICAgICAgIHRlc3QgcmVjdGFuZ2xlLiBUaGUgdGFy
Z2V0IHBvc2l0aW9uIGlzIHRoZW4gdGhlIGNlbnRlciBwb2ludCBvZiB0aGlzIGludGVyc2VjdGlv
bgogICAgICAgICAgICBhcmVhLgogICAgCiAgICAgICAgICAgIEluIGNhc2Ugb2Ygbm8gY2xpY2th
YmxlIG5vZGUgaW50ZXJzZWN0cyB0aGUgaGl0IHRlc3QgYXJlYSwgdGhlIGNsaWNrIHBvc2l0aW9u
CiAgICAgICAgICAgIGlzIG5vdCBhbHRlcmVkLgogICAgCiAgICAgICAgICAgIFRvdWNoQWRqdXN0
ZXIgaXMgKm9ubHkqIHdvcmtpbmcgZm9yIFFHcmFwaGljc1dlYlZpZXcgYmFzZWQgdmlld3MuCiAg
ICAKICAgICAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgogICAgICAgICAgICAoUVdlYlBhZ2VQ
cml2YXRlOjptb3VzZVByZXNzRXZlbnQpOgogICAgICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpt
b3VzZVJlbGVhc2VFdmVudCk6CiAgICAgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmFkanVzdFBv
aW50Rm9yQ2xpY2tpbmcpOgogICAgICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpUb3VjaEFkanVz
dGVyOjpUb3VjaEFkanVzdGVyKToKICAgICAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hB
ZGp1c3Rlcjo6ZmluZENhbmRpZGF0ZVBvaW50Rm9yVG91Y2gpOgogICAgICAgICAgICAoaXNDbGlj
a2FibGVFbGVtZW50KToKICAgICAgICAgICAgKGhhc01vdXNlTGlzdGVuZXIpOgogICAgICAgICAg
ICAoaXNWYWxpZEZyYW1lT3duZXIpOgogICAgICAgICAgICAobm9kZVRvRWxlbWVudCk6CiAgICAg
ICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3
ZWJwYWdlLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IDA3NTRmY2IuLjY1
NmQwMDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCisrKyBiL1dlYktp
dC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0zMSwxMyArMzEsMTcgQEAKICNpbmNsdWRlICJxd2Vi
aW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAicXdlYmluc3BlY3Rvcl9wLmgiCiAjaW5jbHVkZSAicXdl
YnNldHRpbmdzLmgiCisjaW5jbHVkZSAicXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgiCiAjaW5jbHVk
ZSAicXdlYmtpdHZlcnNpb24uaCIKIAorI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oIgorI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0SW1wbC5oIgogI2luY2x1ZGUg
IkNhY2hlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50UXQu
aCIKKyNpbmNsdWRlICJDbGllbnRSZWN0LmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKICNp
bmNsdWRlICJDb250ZXh0TWVudUNsaWVudFF0LmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250
cm9sbGVyLmgiCkBAIC02MCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiR2VvbG9jYXRpb25QZXJtaXNzaW9uQ2xpZW50UXQuaCIKICNpbmNsdWRlICJIVE1MRm9y
bUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
SGFzaE1hcC5oIgpAQCAtNzQsNyArNzksOSBAQAogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnku
aCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya2luZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudFF0LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudFF0LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3Vw
LmgiCkBAIC04Niw2ICs5Myw3IEBACiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKICNpbmNs
dWRlICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCisjaW5j
bHVkZSAiUXRQbGF0Zm9ybVBsdWdpbi5oIgogI2luY2x1ZGUgIlJlZlB0ci5oIgogI2luY2x1ZGUg
IlJlbmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKQEAgLTY1
Nyw2ICs2NjUsNyBAQCB2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VQcmVzc0V2ZW50KFQqIGV2
KQogICAgIH0KIAogICAgIGJvb2wgYWNjZXB0ZWQgPSBmYWxzZTsKKyAgICBhZGp1c3RQb2ludEZv
ckNsaWNraW5nKGV2LCBwYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgUGxhdGZv
cm1Nb3VzZUV2ZW50IG1ldihldiwgMSk7CiAgICAgLy8gaWdub3JlIHRoZSBldmVudCBpZiB3ZSBj
YW4ndCBtYXAgUXQncyBtb3VzZSBidXR0b25zIHRvIFdlYkNvcmU6Ok1vdXNlQnV0dG9uCiAgICAg
aWYgKG1ldi5idXR0b24oKSAhPSBOb0J1dHRvbikKQEAgLTczNiw2ICs3NDUsNyBAQCB2b2lkIFFX
ZWJQYWdlUHJpdmF0ZTo6bW91c2VSZWxlYXNlRXZlbnQoVCAqZXYpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGJvb2wgYWNjZXB0ZWQgPSBmYWxzZTsKKyAgICBhZGp1c3RQb2ludEZvckNsaWNraW5n
KGV2LCBwYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IG1ldihldiwgMCk7CiAgICAgLy8gaWdub3JlIHRoZSBldmVudCBpZiB3ZSBjYW4ndCBtYXAg
UXQncyBtb3VzZSBidXR0b25zIHRvIFdlYkNvcmU6Ok1vdXNlQnV0dG9uCiAgICAgaWYgKG1ldi5i
dXR0b24oKSAhPSBOb0J1dHRvbikKQEAgLTEyNjMsNiArMTI3MywzOCBAQCBib29sIFFXZWJQYWdl
UHJpdmF0ZTo6aGFuZGxlU2Nyb2xsaW5nKFFLZXlFdmVudCAqZXYsIEZyYW1lICpmcmFtZSkKICAg
ICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rp
b24sIGdyYW51bGFyaXR5KTsKIH0KIAordm9pZCBRV2ViUGFnZVByaXZhdGU6OmFkanVzdFBvaW50
Rm9yQ2xpY2tpbmcoUU1vdXNlRXZlbnQqLCBEb2N1bWVudCopCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBRV2ViUGFnZVByaXZhdGU6OmFkanVzdFBvaW50Rm9yQ2xpY2tpbmco
UUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBldiwgRG9jdW1lbnQqIHN0YXJ0aW5nRG9jdW1lbnQp
Cit7CisgICAgUXRQbGF0Zm9ybVBsdWdpbiBwbGF0Zm9ybVBsdWdpbjsKKyAgICBRV2ViVG91Y2hN
b2RpZmllciogdG91Y2hNb2RpZmllciA9IHBsYXRmb3JtUGx1Z2luLmNyZWF0ZVRvdWNoTW9kaWZp
ZXIoKTsKKyAgICBpZiAoIXRvdWNoTW9kaWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHVu
c2lnbmVkIHRvcFBhZGRpbmcgPSB0b3VjaE1vZGlmaWVyLT5oaXRUZXN0UGFkZGluZ0ZvclRvdWNo
KFFXZWJUb3VjaE1vZGlmaWVyOjpVcCk7CisgICAgdW5zaWduZWQgcmlnaHRQYWRkaW5nID0gdG91
Y2hNb2RpZmllci0+aGl0VGVzdFBhZGRpbmdGb3JUb3VjaChRV2ViVG91Y2hNb2RpZmllcjo6Umln
aHQpOworICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcgPSB0b3VjaE1vZGlmaWVyLT5oaXRUZXN0
UGFkZGluZ0ZvclRvdWNoKFFXZWJUb3VjaE1vZGlmaWVyOjpEb3duKTsKKyAgICB1bnNpZ25lZCBs
ZWZ0UGFkZGluZyA9IHRvdWNoTW9kaWZpZXItPmhpdFRlc3RQYWRkaW5nRm9yVG91Y2goUVdlYlRv
dWNoTW9kaWZpZXI6OkxlZnQpOworCisgICAgZGVsZXRlIHRvdWNoTW9kaWZpZXI7CisgICAgdG91
Y2hNb2RpZmllciA9IDA7CisKKyAgICBpZiAoIXRvcFBhZGRpbmcgJiYgIXJpZ2h0UGFkZGluZyAm
JiAhYm90dG9tUGFkZGluZyAmJiAhbGVmdFBhZGRpbmcpCisgICAgICAgIHJldHVybjsKKworICAg
IEludFBvaW50IG9yaWdpbmFsUG9pbnQoUVBvaW50Rihldi0+cG9zKCkpLnRvUG9pbnQoKSk7Cisg
ICAgVG91Y2hBZGp1c3RlciB0b3VjaEFkanVzdGVyKHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywg
Ym90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpOworICAgIEludFBvaW50IGFkanVzdGVkUG9pbnQg
PSB0b3VjaEFkanVzdGVyLmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKG9yaWdpbmFsUG9pbnQs
IHN0YXJ0aW5nRG9jdW1lbnQpOworICAgIGlmIChhZGp1c3RlZFBvaW50ID09IEludFBvaW50Ojp6
ZXJvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGV2LT5zZXRQb3MoUVBvaW50RihhZGp1c3Rl
ZFBvaW50KSk7Cit9CisKIGJvb2wgUVdlYlBhZ2VQcml2YXRlOjp0b3VjaEV2ZW50KFFUb3VjaEV2
ZW50KiBldmVudCkKIHsKICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2
YXRlOjpjb3JlKG1haW5GcmFtZSk7CkBAIC0xNDI5LDYgKzE0NzEsMTI0IEBAIHF1aW50MTYgUVdl
YlBhZ2VQcml2YXRlOjppbnNwZWN0b3JTZXJ2ZXJQb3J0KCkKICAgICByZXR1cm4gMDsKIH0KIAor
c3RhdGljIGJvb2wgaGFzTW91c2VMaXN0ZW5lcihFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFT
U0VSVChlbGVtZW50KTsKKyAgICByZXR1cm4gZWxlbWVudC0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZl
bnROYW1lcygpLmNsaWNrRXZlbnQpCisgICAgICAgIHx8IGVsZW1lbnQtPmhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCkKKyAgICAgICAgfHwgZWxlbWVudC0+aGFz
RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCk7Cit9CisKK3N0YXRpYyBi
b29sIGlzQ2xpY2thYmxlRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZWZQdHI8Tm9kZUxpc3Q+
IGxpc3QpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIGJvb2wgaXNDbGlja2FibGUgPSBo
YXNNb3VzZUxpc3RlbmVyKGVsZW1lbnQpOworICAgIGlmICghaXNDbGlja2FibGUgJiYgbGlzdCkg
eworICAgICAgICBFbGVtZW50KiBwYXJlbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7Cisg
ICAgICAgIHVuc2lnbmVkIGNvdW50ID0gbGlzdC0+bGVuZ3RoKCk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjb3VudCAmJiBwYXJlbnQ7IGkrKykgeworICAgICAgICAgICAgaWYg
KGxpc3QtPml0ZW0oaSkgIT0gcGFyZW50KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgICAgICBpc0NsaWNrYWJsZSA9IGhhc01vdXNlTGlzdGVuZXIocGFyZW50KTsKKyAgICAg
ICAgICAgIGlmIChpc0NsaWNrYWJsZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRFbGVtZW50KCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICByZXR1cm4gaXNDbGlja2FibGUKKyAg
ICAgICAgfHwgZWxlbWVudC0+d2Via2l0TWF0Y2hlc1NlbGVjdG9yKCJhLCo6bGluaywqOnZpc2l0
ZWQsKltyb2xlPWJ1dHRvbl0sYnV0dG9uLGlucHV0LHNlbGVjdCxsYWJlbCIsIGVjKQorICAgICAg
ICB8fCBjb21wdXRlZFN0eWxlKGVsZW1lbnQpLT5nZXRQcm9wZXJ0eVZhbHVlKGNzc1Byb3BlcnR5
SUQoImN1cnNvciIpKSA9PSAicG9pbnRlciI7Cit9CisKK3N0YXRpYyBib29sIGlzVmFsaWRGcmFt
ZU93bmVyKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIHJl
dHVybiBlbGVtZW50LT5pc0ZyYW1lT3duZXJFbGVtZW50KCkgJiYgc3RhdGljX2Nhc3Q8SFRNTEZy
YW1lT3duZXJFbGVtZW50Kj4oZWxlbWVudCktPmNvbnRlbnRGcmFtZSgpOworfQorCitzdGF0aWMg
RWxlbWVudCogbm9kZVRvRWxlbWVudChOb2RlKiBub2RlKQoreworICAgIGlmIChub2RlICYmIG5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQq
Pihub2RlKTsKKyAgICByZXR1cm4gMDsKK30KKworUVdlYlBhZ2VQcml2YXRlOjpUb3VjaEFkanVz
dGVyOjpUb3VjaEFkanVzdGVyKHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFk
ZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpCisgICAg
OiBtX3RvcFBhZGRpbmcodG9wUGFkZGluZykKKyAgICAsIG1fcmlnaHRQYWRkaW5nKHJpZ2h0UGFk
ZGluZykKKyAgICAsIG1fYm90dG9tUGFkZGluZyhib3R0b21QYWRkaW5nKQorICAgICwgbV9sZWZ0
UGFkZGluZyhsZWZ0UGFkZGluZykKK3sKK30KKworSW50UG9pbnQgUVdlYlBhZ2VQcml2YXRlOjpU
b3VjaEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRlUG9pbnRGb3JUb3VjaChjb25zdCBJbnRQb2ludCYg
dG91Y2hQb2ludCwgRG9jdW1lbnQqIGRvY3VtZW50KSBjb25zdAoreworICAgIGlmICghZG9jdW1l
bnQpCisgICAgICAgIHJldHVybiBJbnRQb2ludCgpOworCisgICAgaW50IHggPSB0b3VjaFBvaW50
LngoKTsKKyAgICBpbnQgeSA9IHRvdWNoUG9pbnQueSgpOworCisgICAgUmVmUHRyPE5vZGVMaXN0
PiBpbnRlcnNlY3RlZE5vZGVzID0gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwgbV90b3BQ
YWRkaW5nLCBtX3JpZ2h0UGFkZGluZywgbV9ib3R0b21QYWRkaW5nLCBtX2xlZnRQYWRkaW5nLCBm
YWxzZSk7CisgICAgaWYgKCFpbnRlcnNlY3RlZE5vZGVzKQorICAgICAgICByZXR1cm4gSW50UG9p
bnQoKTsKKworICAgIEVsZW1lbnQqIGNsb3Nlc3RDbGlja2FibGVFbGVtZW50ID0gMDsKKyAgICBJ
bnRSZWN0IGxhcmdlc3RJbnRlcnNlY3Rpb25SZWN0OworICAgIEZyYW1lVmlldyogdmlldyA9IGRv
Y3VtZW50LT5mcmFtZSgpLT52aWV3KCk7CisKKyAgICAvLyBUb3VjaCByZWN0IGluIGNvbnRlbnRz
IGNvb3JkaW5hdGVzLgorICAgIEludFJlY3QgdG91Y2hSZWN0KEhpdFRlc3RSZXN1bHQ6OnJlY3RG
b3JQb2ludCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKEludFBvaW50KHgsIHkpKSwgbV90b3BQYWRk
aW5nLCBtX3JpZ2h0UGFkZGluZywgbV9ib3R0b21QYWRkaW5nLCBtX2xlZnRQYWRkaW5nKSk7CisK
KyAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIGxpc3Qgb2Ygbm9kZXMgaGl0IGxvb2tpbmcgZm9yIHRo
ZSBvbmUgd2hvc2UgYm91bmRpbmcgYXJlYQorICAgIC8vIGhhcyBsYXJnZXN0IGludGVyc2VjdGlv
biB3aXRoIHRoZSB0b3VjaCBhcmVhIChwb2ludCArIHBhZGRpbmcpLgorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBpbnRlcnNlY3RlZE5vZGVzLT5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAg
IE5vZGUqIGN1cnJlbnROb2RlID0gaW50ZXJzZWN0ZWROb2Rlcy0+aXRlbShpKTsKKworICAgICAg
ICBFbGVtZW50KiBjdXJyZW50RWxlbWVudCA9IG5vZGVUb0VsZW1lbnQoY3VycmVudE5vZGUpOwor
ICAgICAgICBpZiAoIWN1cnJlbnRFbGVtZW50IHx8ICghaXNDbGlja2FibGVFbGVtZW50KGN1cnJl
bnRFbGVtZW50LCAwKSAmJiAhaXNWYWxpZEZyYW1lT3duZXIoY3VycmVudEVsZW1lbnQpKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEludFJlY3QgY3VycmVudEVsZW1lbnRCb3Vu
ZGluZ1JlY3QgPSBjdXJyZW50RWxlbWVudC0+Z2V0UmVjdCgpOworICAgICAgICBjdXJyZW50RWxl
bWVudEJvdW5kaW5nUmVjdC5pbnRlcnNlY3QodG91Y2hSZWN0KTsKKworICAgICAgICBpZiAoY3Vy
cmVudEVsZW1lbnRCb3VuZGluZ1JlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgaW50IGN1cnJlbnRJbnRlcnNlY3Rpb25SZWN0QXJlYSA9IGN1cnJlbnRFbGVt
ZW50Qm91bmRpbmdSZWN0LndpZHRoKCkgKiBjdXJyZW50RWxlbWVudEJvdW5kaW5nUmVjdC5oZWln
aHQoKTsKKyAgICAgICAgaW50IGxhcmdlc3RJbnRlcnNlY3Rpb25SZWN0QXJlYSA9IGxhcmdlc3RJ
bnRlcnNlY3Rpb25SZWN0LndpZHRoKCkgKiBsYXJnZXN0SW50ZXJzZWN0aW9uUmVjdC5oZWlnaHQo
KTsKKyAgICAgICAgaWYgKGN1cnJlbnRJbnRlcnNlY3Rpb25SZWN0QXJlYSA+IGxhcmdlc3RJbnRl
cnNlY3Rpb25SZWN0QXJlYSkgeworICAgICAgICAgICAgY2xvc2VzdENsaWNrYWJsZUVsZW1lbnQg
PSBjdXJyZW50RWxlbWVudDsKKyAgICAgICAgICAgIGxhcmdlc3RJbnRlcnNlY3Rpb25SZWN0ID0g
Y3VycmVudEVsZW1lbnRCb3VuZGluZ1JlY3Q7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
bGFyZ2VzdEludGVyc2VjdGlvblJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gSW50UG9p
bnQoKTsKKworICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVuIHVzZXIgdGFwcyBhIGlubmVyIGZy
YW1lLiBJdCBpcyBkb25lIGluIHRocmVlIHN0ZXBzOgorICAgIC8vIDEpIFRyYW5zZm9ybSB0aGUg
b3JpZ2luYWwgdG91Y2ggcG9pbnQgdG8gdGhlIGlubmVyIGRvY3VtZW50IGNvb3JkaW5hdGVzOwor
ICAgIC8vIDEpIENhbGwgbm9kZXNGcm9tUmVjdCBmb3IgdGhlIGlubmVyIGRvY3VtZW50IGluIGNh
c2U7CisgICAgLy8gMykgUmUtYWRkIHRoZSBpbm5lciBmcmFtZSBvZmZzZXQgKGxvY2F0aW9uKSBi
ZWZvcmUgcGFzc2luZyB0aGUgbmV3IGNsaWNraW5nCisgICAgLy8gICAgcG9zaXRpb24gdG8gV2Vi
Q29yZS4KKyAgICBpZiAoY2xvc2VzdENsaWNrYWJsZUVsZW1lbnQtPmlzRnJhbWVPd25lckVsZW1l
bnQoKSkgeworICAgICAgICAvLyBBZGp1c3QgY2xpZW50IGNvb3JkaW5hdGVzJyBvcmlnaW4gdG8g
YmUgdG9wIGxlZnQgb2YgaW5uZXIgZnJhbWUgdmlld3BvcnQuCisgICAgICAgIFBhc3NSZWZQdHI8
Q2xpZW50UmVjdD4gcmVjdCA9IGNsb3Nlc3RDbGlja2FibGVFbGVtZW50LT5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKTsKKyAgICAgICAgSW50UG9pbnQgbmV3VG91Y2hQb2ludCA9IHRvdWNoUG9pbnQ7
CisgICAgICAgIEludFNpemUgb2Zmc2V0ID0gIEludFNpemUocmVjdC0+bGVmdCgpLCByZWN0LT50
b3AoKSk7CisgICAgICAgIG5ld1RvdWNoUG9pbnQgLT0gb2Zmc2V0OworCisgICAgICAgIEhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVPd25lckVsZW1l
bnQqPihjbG9zZXN0Q2xpY2thYmxlRWxlbWVudCk7CisgICAgICAgIERvY3VtZW50KiBjaGlsZERv
Y3VtZW50ID0gb3duZXItPmNvbnRlbnRGcmFtZSgpLT5kb2N1bWVudCgpOworICAgICAgICByZXR1
cm4gZmluZENhbmRpZGF0ZVBvaW50Rm9yVG91Y2gobmV3VG91Y2hQb2ludCwgY2hpbGREb2N1bWVu
dCk7CisgICAgfQorICAgIHJldHVybiB2aWV3LT5jb250ZW50c1RvV2luZG93KGxhcmdlc3RJbnRl
cnNlY3Rpb25SZWN0KS5jZW50ZXIoKTsKK30KKwogLyohCiAgICBcZW51bSBRV2ViUGFnZTo6Rmlu
ZEZsYWcKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmggYi9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlX3AuaAppbmRleCAxZjcwMjkzLi5lODI2ZDY3IDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3Au
aApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgInF3ZWJoaXN0b3J5LmgiCiAjaW5jbHVkZSAi
cXdlYmZyYW1lLmgiCiAKKyNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCkBAIC00MywxMCArNDQsMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENvbnRleHRNZW51Q2xpZW50UXQ7CiAgICAgY2xhc3Mg
Q29udGV4dE1lbnVJdGVtOwogICAgIGNsYXNzIENvbnRleHRNZW51OworICAgIGNsYXNzIERvY3Vt
ZW50OwogICAgIGNsYXNzIEVkaXRvckNsaWVudFF0OwogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAg
Y2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNz
IE5vZGU7CisgICAgY2xhc3MgTm9kZUxpc3Q7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBG
cmFtZTsKIH0KQEAgLTEyNiw2ICsxMzAsMjIgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgd2hl
dGhlciB0aGUgZGVmYXVsdCBhY3Rpb24gd2FzIGNhbmNlbGxlZCBpbiB0aGUgSlMgZXZlbnQgaGFu
ZGxlcgogICAgIGJvb2wgdG91Y2hFdmVudChRVG91Y2hFdmVudCopOwogCisgICAgY2xhc3MgVG91
Y2hBZGp1c3RlciB7CisgICAgcHVibGljOgorICAgICAgICBUb3VjaEFkanVzdGVyKHVuc2lnbmVk
IHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGlu
ZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpOworCisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IGZp
bmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29y
ZTo6RG9jdW1lbnQqKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIHVuc2lnbmVkIG1f
dG9wUGFkZGluZzsKKyAgICAgICAgdW5zaWduZWQgbV9yaWdodFBhZGRpbmc7CisgICAgICAgIHVu
c2lnbmVkIG1fYm90dG9tUGFkZGluZzsKKyAgICAgICAgdW5zaWduZWQgbV9sZWZ0UGFkZGluZzsK
KyAgICB9OworCisgICAgdm9pZCBhZGp1c3RQb2ludEZvckNsaWNraW5nKFFNb3VzZUV2ZW50Kiwg
V2ViQ29yZTo6RG9jdW1lbnQqKTsKKyAgICB2b2lkIGFkanVzdFBvaW50Rm9yQ2xpY2tpbmcoUUdy
YXBoaWNzU2NlbmVNb3VzZUV2ZW50KiwgV2ViQ29yZTo6RG9jdW1lbnQqKTsKKwogICAgIHZvaWQg
c2V0SW5zcGVjdG9yKFFXZWJJbnNwZWN0b3IqKTsKICAgICBRV2ViSW5zcGVjdG9yKiBnZXRPckNy
ZWF0ZUluc3BlY3RvcigpOwogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJL
aXQvcXQvQ2hhbmdlTG9nCmluZGV4IGQyN2RmYTcuLmUxNzk2MjEgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBA
CisyMDEwLTExLTAzICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+LCBBbmRy
ZSBQZWRyYWxobyAgPGFuZHJlLnBlZHJhbGhvQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiBhbmQgQW50dGkgS29pdmlzdG8uCisKKyAg
ICAgICAgW1F0XSBNYWtpbmcgZWZmZWN0aXZlIHVzZSBvZiBub2Rlc0Zyb21SZWN0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQwODkKKworICAgICAg
ICBQYXRjaCBhZGRzIGEgaGVscGVyIGNsYXNzIChuYW1lZCBUb3VjaEFkanVzdGVyKSB0byBpbXBy
b3ZlIHRhcCBhY3Rpb25zCisgICAgICAgIG9uIG1vYmlsZSB0b3VjaCBkZXZpY2VzLiBUb3VjaEFk
anVzdGVyIG1ha2VzIHVzZSBvZiB0aGUgbmV3bHkgYWRkZWQgcmVjdAorICAgICAgICBiYXNlZCBo
aXQgdGVzdCBleHRlbnNpb24gdGhyb3VnaCB0aGUgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgbWV0
aG9kLgorICAgICAgICBHaXZlbiBhIHJlY3RhbmdsZSBhcyBpbnB1dCwgbm9kZXNGcm9tUmVjdCBy
ZXR1cm5zIGEgei1pbmRleCBvcmRlcmVkIGxpc3QKKyAgICAgICAgb2Ygbm9kZXMgd2hvc2UgYm91
bmRhcmllcyBpbnRlcnNlY3QgdGhlIHJlY3RhbmdsZS4KKworICAgICAgICBCYXNpY2FsbHkgdGhl
IFRvdWNoQWRqdXN0ZXIgY2xhc3MgaW50ZXJjZXB0cyB0aGUgUUdyYXBoaWNzU2NlbmVNb3VzZUV2
ZW50CisgICAgICAgIHBhc3NlZCB0byBib3RoIFFXZWJQYWdlUHJpdmF0ZTo6bW91c2V7UHJlc3Ms
UmVsZWFzZX1FdmVudCBtZXRob2RzIGJlZm9yZQorICAgICAgICB0aGV5IGFyZSBwYXNzZWQgZG93
biB0byBXZWJDb3JlLiBUaGUgZ29hbCBpcyB0byBpbmZlciB0aGUgdGFyZ2V0IGNsaWNrIHBvc2l0
aW9uLgorICAgICAgICBGb3IgdGhhdCwgYSByZWN0YW5nbGUgaXMgYnVpbHQgdXAgdXNpbmcgdGhl
IGV2ZW50IHBvc2l0aW9uIGFzIGEgY2VudGVyIHBvaW50IGFuZAorICAgICAgICBleHBhbmRpbmcg
aXQgYmFzZWQgb24gdGhlIHZhbHVlcyBhbmQgZGlyZWN0aW9ucyBzZXQgaW4gdGhlIFBsYXRmb3Jt
IFBsdWdpbgorICAgICAgICBRV2ViVG91Y2hNb2RpZmllcjo6aGl0VGVzdFBhZGRpbmcuCisKKyAg
ICAgICAgVG91Y2hBZGp1c3RlciBpdGVyYXRlcyBvdmVyIHRoZSBsaXN0IG9mIG5vZGVzIHJldHVy
bmVkIGJ5IG5vZGVzRnJvbVJlY3QgYW5kCisgICAgICAgIHBpY2tzIHRoZSBjbGlja2FibGUgb25l
IHRoYXQgaGFzIHRoZSBsYXJnZXN0IGludGVyc2VjdGlvbiBhcmVhIHdpdGggdGhlIGhpdAorICAg
ICAgICB0ZXN0IHJlY3RhbmdsZS4gVGhlIHRhcmdldCBwb3NpdGlvbiBpcyB0aGVuIHRoZSBjZW50
ZXIgcG9pbnQgb2YgdGhpcyBpbnRlcnNlY3Rpb24KKyAgICAgICAgYXJlYS4KKworICAgICAgICBJ
biBjYXNlIG9mIG5vIGNsaWNrYWJsZSBub2RlIGludGVyc2VjdHMgdGhlIGhpdCB0ZXN0IGFyZWEs
IHRoZSBjbGljayBwb3NpdGlvbgorICAgICAgICBpcyBub3QgYWx0ZXJlZC4KKworICAgICAgICBU
b3VjaEFkanVzdGVyIGlzICpvbmx5KiB3b3JraW5nIGZvciBRR3JhcGhpY3NXZWJWaWV3IGJhc2Vk
IHZpZXdzLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
UHJpdmF0ZTo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91
c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjphZGp1c3RQb2ludEZv
ckNsaWNraW5nKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6VG91
Y2hBZGp1c3Rlcik6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZp
bmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKToKKyAgICAgICAgKGlzQ2xpY2thYmxlRWxlbWVudCk6
CisgICAgICAgIChoYXNNb3VzZUxpc3RlbmVyKToKKyAgICAgICAgKGlzVmFsaWRGcmFtZU93bmVy
KToKKyAgICAgICAgKG5vZGVUb0VsZW1lbnQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6
CisKIDIwMTAtMTEtMDQgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>