<?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>33150</bug_id>
          
          <creation_ts>2010-01-04 07:11:53 -0800</creation_ts>
          <short_desc>Do not render the full frame when there is some elements with fixed positioning</short_desc>
          <delta_ts>2010-06-28 01:58:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Performance, Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>34208</blocked>
    
    <blocked>35784</blocked>
    
    <blocked>36652</blocked>
    
    <blocked>37148</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="QtWebKit Unassigned">webkit-qt-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>hamaji</cc>
    
    <cc>hausmann</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>manyoso</cc>
    
    <cc>mitz</cc>
    
    <cc>noam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>skyul</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>176680</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-04 07:11:53 -0800</bug_when>
    <thetext>Currently, when an element has a fixed position, ScrollViewcanBlitOnScroll() is false and the full view is updated on scrolling. This slow down the scrolling of any page with fixed elements (facebook, slashdot, etc).

We could update the part that appear on the screen, and the pixels of the fixed elements that has been blitted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176682</commentid>
    <comment_count>1</comment_count>
      <attachid>45799</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-04 07:16:04 -0800</bug_when>
    <thetext>Created attachment 45799
Repaint only the invalidated area after scrolling

First patch to improve the performance with fixed elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176711</commentid>
    <comment_count>2</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-01-04 08:50:59 -0800</bug_when>
    <thetext>Seems like a good optimization.

You should remove the fixed objects from the hash on destructor.

You should figure out if the area to update ends up covering most of the view and just do full repaint in that case (avoiding the unnecessary copy scroll blit and performance regression).

It might be worthwhile the track the covered region as rectangles (like QRegion) and update when positioned objects move. This would avoid having to iterate over all fixed objects.

Dave Hyatt should take a look too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177160</commentid>
    <comment_count>3</comment_count>
      <attachid>45892</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-05 08:24:21 -0800</bug_when>
    <thetext>Created attachment 45892
Repaint only the invalidated area after scrolling

(In reply to comment #2)
&gt; You should remove the fixed objects from the hash on destructor.

Absolutely. I have done that in this patch.

&gt; You should figure out if the area to update ends up covering most of the view
&gt; and just do full repaint in that case (avoiding the unnecessary copy scroll
&gt; blit and performance regression).

I this version, I have used a simple heuristic: &quot;more than 4 fixed elements -&gt; slow path&quot;.
I have used the same kind of rule for the backingstore of Qt, but I had benchmark to justify the number. I&apos;ll wait for the point of Dave Hyatt on this limit.

&gt; It might be worthwhile the track the covered region as rectangles (like
&gt; QRegion) and update when positioned objects move. This would avoid having to
&gt; iterate over all fixed objects.

I have looked at that and this can get difficult to update (for example when a child with absolute positioning is manipulated by javascript, updating the rects can be cumbersome).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177161</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-05 08:26:19 -0800</bug_when>
    <thetext>Attachment 45892 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/ScrollView.cpp:529:  Missing space before {  [whitespace/braces] [5]
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177435</commentid>
    <comment_count>5</comment_count>
      <attachid>45892</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-01-05 15:17:10 -0800</bug_when>
    <thetext>Comment on attachment 45892
Repaint only the invalidated area after scrolling

There are a number of issues with this patch:

(1) ScrollView is not designed to know anything about the render tree or RenderObjects directly.  I&apos;d move the HashSet to FrameView and then make a virtual method that is called in ScrollView.

(2) Please make a constant for the cutoff number in the code.  Don&apos;t just use 5 inline like that.

(3) You should disregard fixed positioned objects inside transforms, as they aren&apos;t actually fixed to the ScrollView.  You can verify this by checking if the containingBlock is actually the RenderView for each RenderObject before allowing it to be registered.

(4) Why not make fixed background images work too?  They are just as common (if not moreso) than fixed positioning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177772</commentid>
    <comment_count>6</comment_count>
      <attachid>45994</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-06 14:22:43 -0800</bug_when>
    <thetext>Created attachment 45994
Repaint only the invalidated area after scrolling

Fixed the patch thanks to the comments of Dave Hyatt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177773</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-06 14:25:26 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45994 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177779</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-06 14:30:53 -0800</bug_when>
    <thetext>Thanks for the reviews.

(In reply to comment #5)
&gt; (From update of attachment 45892 [details])
&gt; (1) ScrollView is not designed to know anything about the render tree or
&gt; RenderObjects directly.  I&apos;d move the HashSet to FrameView and then make a
&gt; virtual method that is called in ScrollView.

I have moved the logic to a function called ScrollView::fastScrollContents() that is reimplemented in FrameView.

&gt; (2) Please make a constant for the cutoff number in the code.  Don&apos;t just use 5
&gt; inline like that.

Done :)

&gt; (3) You should disregard fixed positioned objects inside transforms, as they
&gt; aren&apos;t actually fixed to the ScrollView.  You can verify this by checking if
&gt; the containingBlock is actually the RenderView for each RenderObject before
&gt; allowing it to be registered.

You are right.

I have updated the patch to take transformations to register only non-transformed objects.

About verifying if the containingBlock is the RenderView, I now do that in the scrolling code. I don&apos;t think I can do that at the time of registering the object because its parent might get a transformation later.

&gt; (4) Why not make fixed background images work too?  They are just as common (if
&gt; not moreso) than fixed positioning.

I try to keep the patches small and I have another idea for fixed elements. I can fix background images later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177780</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-06 14:32:53 -0800</bug_when>
    <thetext>Attachment 45994 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/164930</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177784</commentid>
    <comment_count>10</comment_count>
      <attachid>45996</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-06 14:40:10 -0800</bug_when>
    <thetext>Created attachment 45996
Repaint only the invalidated area after scrolling

(In reply to comment #9)
&gt; Attachment 45994 [details] did not build on chromium:
&gt; Build output: http://webkit-commit-queue.appspot.com/results/164930

My bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177785</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-06 14:41:41 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45996 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177961</commentid>
    <comment_count>12</comment_count>
      <attachid>45996</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-06 20:56:20 -0800</bug_when>
    <thetext>Comment on attachment 45996
Repaint only the invalidated area after scrolling


&gt; +void FrameView::fastScrollContents(const IntSize&amp; scrollDelta, const IntRect&amp; rectToScroll, const IntRect&amp; clipRect)

I dislike the method name. Shouldn&apos;t it always be fast? Does FrameView already have a scrollContents method?

&gt; +{
&gt; +    const int fixedObjectNumberThreshold = 5;
&gt; +
&gt; +    if (m_fixedObjects.isEmpty())
&gt; +        hostWindow()-&gt;scroll(scrollDelta, rectToScroll, clipRect);
&gt; +    else {
&gt; +        Vector&lt;RenderObject*&gt; objectsFixedInViewport;

We say fixedObjects elsewhere, right?

&gt; +        objectsFixedInViewport.reserveCapacity(m_fixedObjects.size());
&gt; +
&gt; +        bool updateInvalidSubRect = true;
&gt; +        // Get a list of fixed objects that are not in transformations
&gt; +        HashSet&lt;RenderObject*&gt;::const_iterator end = m_fixedObjects.end();
&gt; +        HashSet&lt;RenderObject*&gt;::const_iterator it = m_fixedObjects.begin();
&gt; +        for (; it != end; ++it) {
&gt; +            RenderObject* obj = *it;
&gt; +            if (obj-&gt;containingBlock() == obj-&gt;view()) {
&gt; +                objectsFixedInViewport.append(obj);
&gt; +                if (objectsFixedInViewport.size() &gt; fixedObjectNumberThreshold) {
&gt; +                    updateInvalidSubRect = false;
&gt; +                    break;
&gt; +                }
&gt; +            }
&gt; +        }

Instead of the updateInvalidSubRect, couldn&apos;t you clear the objectsFixedInViewport instead? and ask
if (!objectsFixedInViewport.isEmpty()) below? I find that less mysterious.

&gt; +
&gt; +        // scroll the content
&gt; +        if (updateInvalidSubRect) {
&gt; +            // 1) scroll
&gt; +            hostWindow()-&gt;scroll(scrollDelta, rectToScroll, clipRect);
&gt; +
&gt; +            // 2) update the area of fixed objets that has been invalidated
&gt; +            for (int i = 0; i &lt; objectsFixedInViewport.size(); ++i) {
&gt; +                IntRect topLevelRect;
&gt; +                IntRect updateRect = (objectsFixedInViewport[i])-&gt;paintingRootRect(topLevelRect);

Are the () really needed?

&gt; +                updateRect.move(-scrollX(), -scrollY());
&gt; +                IntRect scrolledRect = updateRect;
&gt; +                scrolledRect.move(scrollDelta);
&gt; +                updateRect.unite(scrolledRect);
&gt; +                updateRect.intersect(rectToScroll);
&gt; +                hostWindow()-&gt;repaint(updateRect, true, false, true);
&gt; +            }
&gt; +        } else {
&gt; +            // there are too many fixed objects, repaint everything might be easier

// the number of fixed objects exceed the threshold, so we repaint everything. 

&gt; +            IntRect updateRect = clipRect;
&gt; +            updateRect.intersect(rectToScroll);
&gt; +            hostWindow()-&gt;repaint(updateRect, true, false, true);
&gt; +        }
&gt; +    }
&gt; +}
&gt; +

&gt;      if (canBlitOnScroll() &amp;&amp; !rootPreventsBlitting()) { // The main frame can just blit the WebView window
&gt; -       // FIXME: Find a way to blit subframes without blitting overlapping content
&gt; -       hostWindow()-&gt;scroll(-scrollDelta, scrollViewRect, clipRect);
&gt; +        // FIXME: Find a way to blit subframes without blitting overlapping content
&gt; +        fastScrollContents(-scrollDelta, scrollViewRect, clipRect);

Wrong indentation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178107</commentid>
    <comment_count>13</comment_count>
      <attachid>46040</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-07 02:51:55 -0800</bug_when>
    <thetext>Created attachment 46040
Repaint only the invalidated area after scrolling

(In reply to comment #12)
&gt; (From update of attachment 45996 [details])
&gt; 
&gt; &gt; +void FrameView::fastScrollContents(const IntSize&amp; scrollDelta, const IntRect&amp; rectToScroll, const IntRect&amp; clipRect)
&gt; 
&gt; I dislike the method name. Shouldn&apos;t it always be fast? 

No, there are some cases when you cannot avoid the slow path. For example, if the view is not opaque, you need full repaint.

&gt; Does FrameView already
&gt; have a scrollContents method?

Yep.

&gt; &gt; +        Vector&lt;RenderObject*&gt; objectsFixedInViewport;
&gt; 
&gt; We say fixedObjects elsewhere, right?

Right :)
Fixed

&gt; Instead of the updateInvalidSubRect, couldn&apos;t you clear the
&gt; objectsFixedInViewport instead? and ask
&gt; if (!objectsFixedInViewport.isEmpty()) below? I find that less mysterious.

This would not be correct. You can have updateInvalidSubRect == true and objectsFixedInViewport.isEmpty() in the case where all fixed object are under a transformed layer in the hierarchy.

&gt; &gt; +                IntRect updateRect = (objectsFixedInViewport[i])-&gt;paintingRootRect(topLevelRect);
&gt; 
&gt; Are the () really needed?

Oups. Fixed  :)

&gt; &gt; +            // there are too many fixed objects, repaint everything might be easier
&gt; 
&gt; // the number of fixed objects exceed the threshold, so we repaint everything. 

Changed.


&gt; &gt;      if (canBlitOnScroll() &amp;&amp; !rootPreventsBlitting()) { // The main frame can just blit the WebView window
&gt; &gt; -       // FIXME: Find a way to blit subframes without blitting overlapping content
&gt; &gt; -       hostWindow()-&gt;scroll(-scrollDelta, scrollViewRect, clipRect);
&gt; &gt; +        // FIXME: Find a way to blit subframes without blitting overlapping content
&gt; &gt; +        fastScrollContents(-scrollDelta, scrollViewRect, clipRect);
&gt; 
&gt; Wrong indentation

Is it? The coding convention says 4 spaces, not 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178110</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-07 02:52:45 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 46040 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178138</commentid>
    <comment_count>15</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-07 04:20:19 -0800</bug_when>
    <thetext>
&gt; &gt; I dislike the method name. Shouldn&apos;t it always be fast? 
&gt; 
&gt; No, there are some cases when you cannot avoid the slow path. For example, if
&gt; the view is not opaque, you need full repaint.

scrollContentsFastPath :-) ?


&gt; This would not be correct. You can have updateInvalidSubRect == true and
&gt; objectsFixedInViewport.isEmpty() in the case where all fixed object are under a
&gt; transformed layer in the hierarchy.

OK. maybe invalidated is better than invalid. Maybe add a comment as the above as well?

&gt; &gt; Wrong indentation
&gt; 
&gt; Is it? The coding convention says 4 spaces, not 3.

Yes your change is right. I just noticed that you changed the indentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178139</commentid>
    <comment_count>16</comment_count>
      <attachid>46040</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-07 04:25:35 -0800</bug_when>
    <thetext>Comment on attachment 46040
Repaint only the invalidated area after scrolling

&gt; +        (WebCore::FrameView::registerFixedObject):
&gt; +        (WebCore::FrameView::unregisterFixedObject):

I wonder if it would be better to use addFixedObject and removeFixedObject instead as we use add/remove elsewhere (like addSlowRepaintObject)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178140</commentid>
    <comment_count>17</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-01-07 04:29:48 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (4) Why not make fixed background images work too?  They are just as common (if
&gt; not moreso) than fixed positioning.

Fixed background seems to be often used on the root element (covering the
entire view), making this optimization ineffective. Optimizing the case would
require moving copy-scroll implementation to WebKit too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178145</commentid>
    <comment_count>18</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-07 04:50:40 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; &gt; I dislike the method name. Shouldn&apos;t it always be fast? 
&gt; &gt; 
&gt; &gt; No, there are some cases when you cannot avoid the slow path. For example, if
&gt; &gt; the view is not opaque, you need full repaint.
&gt; 
&gt; scrollContentsFastPath :-) ?

The thing is that for me, if there is a fastScrollContents it is not obvious
why you would not always use that. If you have a fast path, it sounds as it is
something that you can not use in all situations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178149</commentid>
    <comment_count>19</comment_count>
      <attachid>46047</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-07 05:13:08 -0800</bug_when>
    <thetext>Created attachment 46047
Repaint only the invalidated area after scrolling

Patch updates to apply the comments of Kenneth:

&gt; &gt; &gt; I dislike the method name. Shouldn&apos;t it always be fast? 
&gt; &gt; 
&gt; scrollContentsFastPath :-) ?

Done.

&gt; OK. maybe invalidated is better than invalid.

Done

&gt; I wonder if it would be better to use addFixedObject and removeFixedObject
&gt; instead as we use add/remove elsewhere (like addSlowRepaintObject)

I choose the name register to emphasize the fact that you only register some fixed object. I am afraid that with addFixedObject(), it might be understood that all objects have to be registered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178152</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-07 05:17:53 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 46047 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182380</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2010-01-19 12:39:48 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #5)
&gt; &gt; (4) Why not make fixed background images work too?  They are just as common (if
&gt; &gt; not moreso) than fixed positioning.
&gt; 
&gt; Fixed background seems to be often used on the root element (covering the
&gt; entire view), making this optimization ineffective. Optimizing the case would
&gt; require moving copy-scroll implementation to WebKit too.

Indeed.  I was not aware of this patch, but we&apos;ve &apos;optimized&apos; this case by disabling fixed background images given a define: FAST_MOBILE_SCROLLING

See here:

https://bugs.webkit.org/show_bug.cgi?id=33408</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182664</commentid>
    <comment_count>22</comment_count>
      <attachid>46990</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-20 01:20:49 -0800</bug_when>
    <thetext>Created attachment 46990
Repaint only the invalidated area after scrolling

Here is the same patch, just updated so it merge (because of 33373 and 33408).
Any chance to get a review? This patch has been there for a long time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182694</commentid>
    <comment_count>23</comment_count>
      <attachid>46999</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-20 03:11:23 -0800</bug_when>
    <thetext>Created attachment 46999
Repaint only the invalidated area after scrolling

Oops, the previous was a wrong attachment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182704</commentid>
    <comment_count>24</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-01-20 03:24:37 -0800</bug_when>
    <thetext>Works beautifully, Benjamin! Noticeable improvement on Facebook.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182735</commentid>
    <comment_count>25</comment_count>
      <attachid>46999</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-01-20 04:02:45 -0800</bug_when>
    <thetext>Comment on attachment 46999
Repaint only the invalidated area after scrolling

Looks good, just one question below.

&gt; +void FrameView::scrollContentsFastPath(const IntSize&amp; scrollDelta, const IntRect&amp; rectToScroll, const IntRect&amp; clipRect)
&gt; +{
&gt; +    const int fixedObjectNumberThreshold = 5;
&gt; +
&gt; +    if (m_fixedObjects.isEmpty())
&gt; +        hostWindow()-&gt;scroll(scrollDelta, rectToScroll, clipRect);
&gt; +    else {
&gt; +        Vector&lt;RenderObject*&gt; fixedObjectsInViewport;
&gt; +        fixedObjectsInViewport.reserveCapacity(m_fixedObjects.size());
&gt; +
&gt; +        bool updateInvalidatedSubRect = true;
&gt; +        // Get a list of fixed objects that are not in transformations
&gt; +        HashSet&lt;RenderObject*&gt;::const_iterator end = m_fixedObjects.end();
&gt; +        HashSet&lt;RenderObject*&gt;::const_iterator it = m_fixedObjects.begin();
&gt; +        for (; it != end; ++it) {
&gt; +            RenderObject* obj = *it;
&gt; +            if (obj-&gt;containingBlock() == obj-&gt;view()) {

Why is this test needed? Isn&apos;t it true for all fixed positioned objects in the hash?

&gt; +    // Methods to manage the objects that are fixed
&gt; +    // in the view when scrolling
&gt; +    void registerFixedObject(RenderObject* object);
&gt; +    void unregisterFixedObject(RenderObject* object);

(un)registerFixedPositionedObject would be a better name

&gt; +    HashSet&lt;RenderObject*&gt; m_fixedObjects;

m_fixedPositionedObjects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182753</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2010-01-20 05:47:47 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; Created an attachment (id=46990) [details]
&gt; Repaint only the invalidated area after scrolling
&gt; 
&gt; Here is the same patch, just updated so it merge (because of 33373 and 33408).
&gt; Any chance to get a review? This patch has been there for a long time.

Need to remove the FIXME that this patch fixes:

--// FIXME: A better solution would be to only invalidate the fixed regions when scrolling. It&apos;s overkill to
--// prevent the entire view from blitting on a scroll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182791</commentid>
    <comment_count>27</comment_count>
      <attachid>47029</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-20 07:34:36 -0800</bug_when>
    <thetext>Created attachment 47029
Repaint only the invalidated area after scrolling

Update from the comments:

&gt; Why is this test needed? Isn&apos;t it true for all fixed positioned objects in the
&gt; hash?

I added a comment as you suggested on IRC.

&gt; (un)registerFixedPositionedObject would be a better name
&gt; m_fixedPositionedObjects

Updated.

&gt; Need to remove the FIXME that this patch fixes:
&gt; 
&gt; --// FIXME: A better solution would be to only invalidate the fixed regions
&gt; when scrolling. It&apos;s overkill to
&gt; --// prevent the entire view from blitting on a scroll.

Good point :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182795</commentid>
    <comment_count>28</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-01-20 07:42:03 -0800</bug_when>
    <thetext>r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183021</commentid>
    <comment_count>29</comment_count>
      <attachid>47029</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-20 18:35:48 -0800</bug_when>
    <thetext>Comment on attachment 47029
Repaint only the invalidated area after scrolling

Rejecting patch 47029 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/build-webkit&apos;, &apos;--debug&apos;]&quot; exit_code: 1
Last 500 characters of output:
ers/eseidel/Projects/CommitQueue/WebCore/page/mac/FrameMac.mm -o /Users/eseidel/Projects/CommitQueue/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/i386/FrameMac.o
** BUILD FAILED **

The following build commands failed:
WebCore:
	Distributed-CompileC /Users/eseidel/Projects/CommitQueue/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/i386/FrameView.o /Users/eseidel/Projects/CommitQueue/WebCore/page/FrameView.cpp normal i386 c++ com.apple.compilers.gcc.4_2
(1 failure)


Full output: http://webkit-commit-queue.appspot.com/results/201794</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183176</commentid>
    <comment_count>30</comment_count>
      <attachid>47113</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-21 06:04:03 -0800</bug_when>
    <thetext>Created attachment 47113
Repaint only the invalidated area after scrolling

Same patch with size_t for the return type of Vector::size(). I do not have &quot;-Wno-sign-conversion&quot; on my configuration and did not notice this warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183177</commentid>
    <comment_count>31</comment_count>
      <attachid>47114</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-21 06:05:38 -0800</bug_when>
    <thetext>Created attachment 47114
Repaint only the invalidated area after scrolling

The previous has \t for indent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183252</commentid>
    <comment_count>32</comment_count>
      <attachid>47114</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-21 11:20:40 -0800</bug_when>
    <thetext>Comment on attachment 47114
Repaint only the invalidated area after scrolling

Rejecting patch 47114 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 12023 test cases.
http/tests/misc/acid3.html -&gt; crashed

Exiting early after 1 failures. 11308 tests run.
431.48s total testing time

11307 test cases (99%) succeeded
1 test case (&lt;1%) crashed
6 test cases (&lt;1%) had stderr output

Full output: http://webkit-commit-queue.appspot.com/results/204145</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183256</commentid>
    <comment_count>33</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-21 11:27:57 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; Exiting early after 1 failures. 11308 tests run.
&gt; 431.48s total testing time
&gt; 
&gt; 11307 test cases (99%) succeeded
&gt; 1 test case (&lt;1%) crashed
&gt; 6 test cases (&lt;1%) had stderr output

This is strange.
I will start a new build on Mac tomorrow and investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183352</commentid>
    <comment_count>34</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-21 15:37:19 -0800</bug_when>
    <thetext>It&apos;s possible acid3.html was just flakey.  I will attach the crash log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183353</commentid>
    <comment_count>35</comment_count>
      <attachid>47153</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-21 15:38:01 -0800</bug_when>
    <thetext>Created attachment 47153
crash log from commit bot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183577</commentid>
    <comment_count>36</comment_count>
      <attachid>47186</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-22 02:48:05 -0800</bug_when>
    <thetext>Created attachment 47186
Repaint only the invalidated area after scrolling

(In reply to comment #35)
&gt; Created an attachment (id=47153) [details]
&gt; crash log from commit bot

Thanks Eric.

Unregistering the RenderObject in the destructor was a bad idea. For some node types, the node is reseted before the destructor (causing this crash). Working around that problem in the destructor might cause leaks since the reference would never be unregistered.

So I have moved the code:
    if (m_style &amp;&amp; m_style-&gt;position() == FixedPosition) {
        FrameView* frameView = document()-&gt;view();
        if (frameView)
            frameView-&gt;unregisterFixedPositionedObject(this);
    }
from the destructor to RenderObject::destroy(), which is called by Node::detach(), making sure the object is unregistered as soon as the node is detached.

This is good news because I was not totally happy with this code in the destructor (because the frame was not always available).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183590</commentid>
    <comment_count>37</comment_count>
      <attachid>47186</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-22 04:01:36 -0800</bug_when>
    <thetext>Comment on attachment 47186
Repaint only the invalidated area after scrolling

Clearing flags on attachment: 47186

Committed r53693: &lt;http://trac.webkit.org/changeset/53693&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183591</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-22 04:01:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183771</commentid>
    <comment_count>39</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-22 13:31:56 -0800</bug_when>
    <thetext>Fails on &lt;http://reviews.cnet.com/network-storage/apple-time-capsule-1tb/4505-3382_7-33786176.html?tag=centerColumnArea1.1&gt;. Needs to be rolled out or fixed ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183783</commentid>
    <comment_count>40</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-22 13:43:34 -0800</bug_when>
    <thetext>This patch is fine on other platforms, but not on Mac. On Mac the fast path does not involve ScrollView or FrameView at all!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183794</commentid>
    <comment_count>41</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2010-01-22 14:02:27 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; This patch is fine on other platforms, but not on Mac. On Mac the fast path
&gt; does not involve ScrollView or FrameView at all!

Can you explain? Last time I looked mac has &apos;!canBlitOnScroll()&apos; for these as well...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183797</commentid>
    <comment_count>42</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-01-22 14:04:35 -0800</bug_when>
    <thetext>Reverted the change in &lt;http://trac.webkit.org/projects/webkit/changeset/53713&gt;, because it broke scrolling of pages with fixed elements on Mac OS X, for example &lt;http://reviews.cnet.com/network-storage/apple-time-capsule-1tb/4505-3382_7-33786176.html?tag=centerColumnArea1.1&gt;.

This optimization needs to be made in a way that works with Mac OS X, or done in a way that doesn’t affect it for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183828</commentid>
    <comment_count>43</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-22 15:17:13 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; This patch is fine on other platforms, but not on Mac. On Mac the fast path
&gt; does not involve ScrollView or FrameView at all!

I was not aware of that.
What do you use instead?

Do you have a suggestion to fix that or should I #ifdef to have the old behavior on Mac?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183879</commentid>
    <comment_count>44</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-22 16:47:47 -0800</bug_when>
    <thetext>The relevant code here is the function platformSetCanBlitOnScroll, called from ScrollView::setCanBlitOnScroll. This should have been the clue that there was some issue on at least one platform.

Once that’s called with the value set to true, on the Mac, WebKit has told AppKit it can scroll by blitting without even calling through to WebCore.

Generally speaking, we can&apos;t easily change the ScrollView-level setCanBlitOnScroll function to mean some sort of smarter blitting and retain the current behavior on Mac OS X, so maybe we should have a separate bit to reflect this new intermediate state.

Some sort of ifdef solution might be OK. Or some kind of runtime solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183981</commentid>
    <comment_count>45</comment_count>
      <attachid>47270</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-23 04:42:25 -0800</bug_when>
    <thetext>Created attachment 47270
Repaint only the invalidated area after scrolling

The same patch with minor modification for Mac.

As Darin Adler pointed out, there is a different path for scrolling when the view is a platformWidget():
bool ScrollView::scroll(ScrollDirection direction, ScrollGranularity granularity)
{
    if (platformWidget())
        return platformScroll(direction, granularity);

In this case, ScrollView::scrollContents() is never used.


So, if platformWidget() we need the same behavior as before. I have change the object registration function to check for platformWidget():
void FrameView::registerFixedPositionedObject(RenderObject* object)
{
    if (platformWidget() &amp;&amp; m_fixedPositionedObjects.isEmpty())
        setCanBlitOnScroll(false);
    m_fixedPositionedObjects.add(object);
}

void FrameView::unregisterFixedPositionedObject(RenderObject* object)
{
    bool wasEmpty = m_fixedPositionedObjects.isEmpty();
    m_fixedPositionedObjects.remove(object);
    if (platformWidget() &amp;&amp; !wasEmpty &amp;&amp; m_fixedPositionedObjects.isEmpty())
        setCanBlitOnScroll(!useSlowRepaints());
}

And the same for FrameView::useSlowRepaints:
bool FrameView::useSlowRepaints() const
{
    return m_useSlowRepaints || m_slowRepaintObjectCount &gt; 0 || (platformWidget() &amp;&amp; !m_fixedPositionedObjects.isEmpty()) || m_isOverlapped || !m_contentIsOpaque;
}

bool FrameView::useSlowRepaintsIfNotOverlapped() const
{
    return m_useSlowRepaints || m_slowRepaintObjectCount &gt; 0 || (platformWidget() &amp;&amp; !m_fixedPositionedObjects.isEmpty()) || !m_contentIsOpaque;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183998</commentid>
    <comment_count>46</comment_count>
      <attachid>47270</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-23 09:25:27 -0800</bug_when>
    <thetext>Comment on attachment 47270
Repaint only the invalidated area after scrolling


Small suggestion :)

&gt; +void FrameView::scrollContentsFastPath(const IntSize&amp; scrollDelta, const IntRect&amp; rectToScroll, const IntRect&amp; clipRect)
&gt; +{
&gt; +    const size_t fixedObjectNumberThreshold = 5;
&gt; +
&gt; +    if (m_fixedPositionedObjects.isEmpty())
&gt; +        hostWindow()-&gt;scroll(scrollDelta, rectToScroll, clipRect);
&gt; +    else {
&gt; +        Vector&lt;RenderObject*&gt; fixedObjectsInViewport;
&gt; +        fixedObjectsInViewport.reserveCapacity(m_fixedPositionedObjects.size());

AFAICT here we are allocating the vector buffer on the speak. Once only, but it&apos;s still a (fastmalloc&apos;ed) heap allocation, that is technically not needed. We know the size of the buffer, an allocation on the stack is cheaper, especially for the little amount it takes (5 pointers + alignment). Why not use Vector&apos;s inline capacity feature:

     Vector&lt;RenderObject*, fixedObjectNumberThreshold&gt; fixedObjectsInViewport;

If I understand the wtf::Vector code correctly that will allocate the vector&apos;s buffer nicely on the stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183999</commentid>
    <comment_count>47</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-23 09:26:27 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; AFAICT here we are allocating the vector buffer on the speak. Once only, but

speap = heap :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184033</commentid>
    <comment_count>48</comment_count>
      <attachid>47283</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-23 15:43:21 -0800</bug_when>
    <thetext>Created attachment 47283
Repaint only the invalidated area after scrolling

Updated the patch with the comment of Simon

(In reply to comment #46)
&gt; AFAICT here we are allocating the vector buffer on the speak. Once only, but
&gt; it&apos;s still a (fastmalloc&apos;ed) heap allocation, that is technically not needed.
&gt; We know the size of the buffer, an allocation on the stack is cheaper,
&gt; especially for the little amount it takes (5 pointers + alignment). 

That&apos;s a very good idea.

&gt; Why not use Vector&apos;s inline capacity feature:
&gt; 
&gt;      Vector&lt;RenderObject*, fixedObjectNumberThreshold&gt; fixedObjectsInViewport;
&gt; 
&gt; If I understand the wtf::Vector code correctly that will allocate the vector&apos;s
&gt; buffer nicely on the stack.

That&apos;s a very cool feature :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184063</commentid>
    <comment_count>49</comment_count>
      <attachid>47283</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-24 03:25:19 -0800</bug_when>
    <thetext>Comment on attachment 47283
Repaint only the invalidated area after scrolling


&gt; +void FrameView::scrollContentsFastPath(const IntSize&amp; scrollDelta, const IntRect&amp; rectToScroll, const IntRect&amp; clipRect)
&gt; +{
&gt; +    const size_t fixedObjectNumberThreshold = 5;
&gt; +
&gt; +    if (m_fixedPositionedObjects.isEmpty())
&gt; +        hostWindow()-&gt;scroll(scrollDelta, rectToScroll, clipRect);
&gt; +    else {
&gt; +        Vector&lt;RenderObject*, fixedObjectNumberThreshold&gt; fixedObjectsInViewport;
&gt; +
&gt; +        bool updateInvalidatedSubRect = true;
&gt; +        // Get a list of fixed objects that are not in transformations
&gt; +        HashSet&lt;RenderObject*&gt;::const_iterator end = m_fixedPositionedObjects.end();
&gt; +        HashSet&lt;RenderObject*&gt;::const_iterator it = m_fixedPositionedObjects.begin();
&gt; +        for (; it != end; ++it) {
&gt; +            RenderObject* obj = *it;
&gt; +            // make sure the parent layer has not been transformed
&gt; +            if (obj-&gt;containingBlock() == obj-&gt;view()) {
&gt; +                fixedObjectsInViewport.append(obj);
&gt; +                if (fixedObjectsInViewport.size() &gt; fixedObjectNumberThreshold) {

After my suggestion there is now one little problem with the above code:

append() will be called for the 6th render object, and then the vector will be re-allocated on the heap. Right afterwards we find out that we crossed the threshold.

I suggest to either allocate the vector with fixedObjectNumberThreshold + 1 or check  size against capacity later on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184069</commentid>
    <comment_count>50</comment_count>
      <attachid>47283</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-24 07:20:44 -0800</bug_when>
    <thetext>Comment on attachment 47283
Repaint only the invalidated area after scrolling

Remove review flag. Need to update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184087</commentid>
    <comment_count>51</comment_count>
      <attachid>47297</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-24 11:27:10 -0800</bug_when>
    <thetext>Created attachment 47297
Repaint only the invalidated area after scrolling

Change the if() to avoid the problem Simon pointed out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184088</commentid>
    <comment_count>52</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-24 11:34:26 -0800</bug_when>
    <thetext>Attachment 47297 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/page/FrameView.cpp:849:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebCore/page/FrameView.cpp:854:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 2


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184200</commentid>
    <comment_count>53</comment_count>
      <attachid>47325</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-25 01:10:39 -0800</bug_when>
    <thetext>Created attachment 47325
Repaint only the invalidated area after scrolling

Stupid style guideline, I like the other version better ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184241</commentid>
    <comment_count>54</comment_count>
      <attachid>47325</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-25 04:37:43 -0800</bug_when>
    <thetext>Comment on attachment 47325
Repaint only the invalidated area after scrolling

Clearing flags on attachment: 47325

Committed r53797: &lt;http://trac.webkit.org/changeset/53797&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184242</commentid>
    <comment_count>55</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-25 04:37:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184495</commentid>
    <comment_count>56</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-25 21:29:47 -0800</bug_when>
    <thetext>bug 34153 suggests that this caused a regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184594</commentid>
    <comment_count>57</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-26 07:54:46 -0800</bug_when>
    <thetext>Hyatt needs to comment on this. Yesterday he told me there were many small things wrong with this patch that he intended to remark on before it was landed, and that a proper implementation would work well for Mac OS X too.

But it got reviewed and landed quickly before he had a chance to identify those items.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184600</commentid>
    <comment_count>58</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-26 08:35:16 -0800</bug_when>
    <thetext>(In reply to comment #57)
&gt; Hyatt needs to comment on this. Yesterday he told me there were many small
&gt; things wrong with this patch that he intended to remark on before it was
&gt; landed, and that a proper implementation would work well for Mac OS X too.

Great. I was hoping he could look at this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184975</commentid>
    <comment_count>59</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-27 00:06:20 -0800</bug_when>
    <thetext>Patch reverted by 34153.

RenderWidget::destroy() must have a copy of what is added to RenderObject::destroy().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185510</commentid>
    <comment_count>60</comment_count>
      <attachid>47622</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-01-28 08:50:23 -0800</bug_when>
    <thetext>Created attachment 47622
Repaint only the invalidated area after scrolling

I have added the change to RenderWidget that caused https://bugs.webkit.org/show_bug.cgi?id=34153
I have also added a test case for the RenderWidget crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185518</commentid>
    <comment_count>61</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-28 09:00:45 -0800</bug_when>
    <thetext>Hyatt, does this new patch look good to you? or do you have any further comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185660</commentid>
    <comment_count>62</comment_count>
      <attachid>47622</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-01-28 17:20:27 -0800</bug_when>
    <thetext>Comment on attachment 47622
Repaint only the invalidated area after scrolling

Some comments:

(1) You don&apos;t really need a hash of RenderObjects on FrameView.  A count is sufficient.  Then you can just walk the m_positionedObjects list of the RenderView and if the RenderBox is fixed positioned, it&apos;s one you care about. (This also bypasses the need to do any transform checking, since you&apos;ll only be in the RenderView list if your containing block was the RenderView).

(2) Fixed positioned objects are always RenderBoxes, so you need to tighten up the code here. You can rename your methods to refer to use FixedPositionedBox rather than FixedPositionedObject.

(3) You&apos;ve duplicated code in RenderObject::destroy() and RenderWidget::destroy().  If you add a helper function to RenderBox, e.g., unregisterFixedPositionedBox, then RenderWidget could call it in its destroy method.  The code in RenderObject should be moved to RenderBox.

(3) All the code in RenderObject::styleWillChange is misplaced, since only RenderBoxes can be fixed positioned.  You should move the code into RenderBox. (Yes, some of the code in there was already misplaced, but by adding a big new pile of code, you&apos;ve made the problem worse. :)

(4) I dislike &quot;scrollContentsFastPath&quot; when we know what we mean is blitting. scrollContentsWithBlit would be my suggestion, although I don&apos;t like my own choice of name much better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186425</commentid>
    <comment_count>63</comment_count>
      <attachid>47844</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-02-01 07:55:57 -0800</bug_when>
    <thetext>Created attachment 47844
Repaint only the invalidated area after scrolling

Updated the patch thanks to Dave Hyatt&apos;s comments:

(In reply to comment #62)
&gt; (1) You don&apos;t really need a hash of RenderObjects on FrameView.  A count is
&gt; sufficient.  Then you can just walk the m_positionedObjects list of the
&gt; RenderView and if the RenderBox is fixed positioned, it&apos;s one you care about.
&gt; (This also bypasses the need to do any transform checking, since you&apos;ll only be
&gt; in the RenderView list if your containing block was the RenderView).

I have changed the code to use the list contained in RenderBlock. 
I like that lot better than what I had done previously.
To access it from RenderView, I had to change: 
-    void insertPositionedObject(RenderBox*);
-    void removePositionedObject(RenderBox*);
+    virtual void insertPositionedObject(RenderBox*);
+    virtual void removePositionedObject(RenderBox*);
     void removePositionedObjects(RenderBlock*);
+    ListHashSet&lt;RenderBox*&gt;* positionedObjects() const { return m_positionedObjects; }


&gt; (2) Fixed positioned objects are always RenderBoxes, so you need to tighten up
&gt; the code here. You can rename your methods to refer to use FixedPositionedBox
&gt; rather than FixedPositionedObject.
&gt; (3) You&apos;ve duplicated code in RenderObject::destroy() and
&gt; RenderWidget::destroy().  If you add a helper function to RenderBox, e.g.,
&gt; unregisterFixedPositionedBox, then RenderWidget could call it in its destroy
&gt; method.  The code in RenderObject should be moved to RenderBox.

I have moved the (un)registration to 
RenderView::insertPositionedObject()
RenderView::removePositionedObject()

So the problem of the transformations disappears.


&gt; (3) All the code in RenderObject::styleWillChange is misplaced, since only
&gt; RenderBoxes can be fixed positioned.  You should move the code into RenderBox.
&gt; (Yes, some of the code in there was already misplaced, but by adding a big new
&gt; pile of code, you&apos;ve made the problem worse. :)

Right. Fixed :)

&gt; (4) I dislike &quot;scrollContentsFastPath&quot; when we know what we mean is blitting.
&gt; scrollContentsWithBlit would be my suggestion, although I don&apos;t like my own
&gt; choice of name much better.

I have not changed the name yet. I don&apos;t know about putting &quot;blit&quot; in the name because we don&apos;t blit if we reach the threshold.
What about scrollContentsWithBlitIfPossible(), tryScrollContentsWithBlit()? ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186514</commentid>
    <comment_count>64</comment_count>
      <attachid>47844</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-02-01 12:21:50 -0800</bug_when>
    <thetext>Comment on attachment 47844
Repaint only the invalidated area after scrolling

This is not quite right.  Both fixed and absolute positioned objects can be added to RenderView. so you can&apos;t just use the list as is like that.  I wasn&apos;t suggesting that you change how you detected and added the objects.  The way you did that in your old patch is still necessary.  The count just lets you not keep a whole separate list, since you can walk the RenderView&apos;s list and check if the object is fixed positioned (and if so use it).

Rename the variable in ScrollView to m_fixedObjectCount rather than m_positionedObjectCount.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187075</commentid>
    <comment_count>65</comment_count>
      <attachid>47957</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-02-02 11:32:16 -0800</bug_when>
    <thetext>Created attachment 47957
Repaint only the invalidated area after scrolling

(In reply to comment #64)
&gt; (From update of attachment 47844 [details])
&gt; This is not quite right.  Both fixed and absolute positioned objects can be
&gt; added to RenderView. so you can&apos;t just use the list as is like that.  I wasn&apos;t
&gt; suggesting that you change how you detected and added the objects.  The way you
&gt; did that in your old patch is still necessary.  The count just lets you not
&gt; keep a whole separate list, since you can walk the RenderView&apos;s list and check
&gt; if the object is fixed positioned (and if so use it).

I did not get that difference &quot;positioned = fixed | absolute&quot;. I have changed FrameView::scrollContentsFastPath() to skip the RenderBox that are not in fixed position.

For increasing m_fixedObjectCount, I have stayed with doing it in RenderView::insertPositionedObject(). If I do it in RenderBox::styleWillChange(), the counter of fix objects will not be decreased when the parent get a transformation. As I understand, this is not a problem with the current implementation (I have added &quot;if (o-&gt;style()-&gt;position() == FixedPosition)&quot; though). Your input is welcome on that issue.

&gt; Rename the variable in ScrollView to m_fixedObjectCount rather than
&gt; m_positionedObjectCount.

Fixed.

I have also removed the test. It is not longer relevant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187093</commentid>
    <comment_count>66</comment_count>
      <attachid>47964</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-02-02 12:20:43 -0800</bug_when>
    <thetext>Created attachment 47964
Repaint only the invalidated area after scrolling

Update the patch after discussions with Dave Hyatt on IRC.

As a side note: m_fixedObjectCount is only used for disabling blitting on Mac. The platforms using FrameView always go to scrollContentsFastPath() and figure if the number of fixed rects is higher than the threshold. I guess I could cache the result of this computation until the render tree is invalidated, but I don&apos;t think this computation is an issue in front of the time spent in rendering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187239</commentid>
    <comment_count>67</comment_count>
      <attachid>47964</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-02 19:44:40 -0800</bug_when>
    <thetext>Comment on attachment 47964
Repaint only the invalidated area after scrolling


&gt; +void FrameView::scrollContentsFastPath(const IntSize&amp; scrollDelta, const IntRect&amp; rectToScroll, const IntRect&amp; clipRect)
&gt; +{
&gt; +    const size_t fixedObjectNumberThreshold = 5;
&gt; +
&gt; +    ListHashSet&lt;RenderBox*&gt;* positionedObjects = 0;
&gt; +    if (RenderView* root = m_frame-&gt;contentRenderer())
&gt; +        positionedObjects = root-&gt;positionedObjects();
&gt; +
&gt; +    if (!positionedObjects || positionedObjects-&gt;isEmpty())
&gt; +        hostWindow()-&gt;scroll(scrollDelta, rectToScroll, clipRect);
&gt; +    else {

Wouldn&apos;t a return above be nicer? instead of the else

&gt; +        // Get the rects of the fixed objects visible in the rectToScroll
&gt; +        Vector&lt;IntRect, fixedObjectNumberThreshold&gt; subRectToUpdate;
&gt; +        bool updateInvalidatedSubRect = true;
&gt; +        ListHashSet&lt;RenderBox*&gt;::const_iterator end = positionedObjects-&gt;end();
&gt; +        for (ListHashSet&lt;RenderBox*&gt;::const_iterator it = positionedObjects-&gt;begin(); it != end; ++it) {

I would prefer &quot;ListHashSet&lt;RenderBox*&gt;::const_iterator it = positionedObjects-&gt;begin()&quot; on its own line,
followed by &quot;for (; it != end; ++it)&quot;

&gt; +            RenderBox* r = *it;

I find box a nicer variable name than r. r reminds me of rectangle!

&gt; +            if (!(r-&gt;style()-&gt;position() == FixedPosition))

Why not just != ?

&gt; +                continue;
&gt; +            IntRect topLevelRect;
&gt; +            IntRect updateRect = r-&gt;paintingRootRect(topLevelRect);
&gt; +            updateRect.move(-scrollX(), -scrollY());
&gt; +            updateRect.intersect(rectToScroll);
&gt; +            if (!updateRect.isEmpty()) {
&gt; +                if (subRectToUpdate.size() &gt;= fixedObjectNumberThreshold) {

number threshold? why not just fixedObjectThreshold. 

&gt; +                    updateInvalidatedSubRect = false;
&gt; +                    break;
&gt; +                }
&gt; +                subRectToUpdate.append(updateRect);
&gt; +            }
&gt; +        }
&gt; +
&gt; +        // Scroll the view
&gt; +        if (updateInvalidatedSubRect) {
&gt; +            // 1) scroll
&gt; +            hostWindow()-&gt;scroll(scrollDelta, rectToScroll, clipRect);
&gt; +
&gt; +            // 2) update the area of fixed objets that has been invalidated
&gt; +            size_t fixObjectsCount = subRectToUpdate.size();
&gt; +            for (size_t i = 0; i &lt; fixObjectsCount; ++i) {
&gt; +                IntRect updateRect = subRectToUpdate[i];
&gt; +                IntRect scrolledRect = updateRect;
&gt; +                scrolledRect.move(scrollDelta);
&gt; +                updateRect.unite(scrolledRect);
&gt; +                updateRect.intersect(rectToScroll);
&gt; +                hostWindow()-&gt;repaint(updateRect, true, false, true);
&gt; +            }
&gt; +        } else {
&gt; +            // the number of fixed objects exceed the threshold, so we repaint everything.
&gt; +            IntRect updateRect = clipRect;
&gt; +            updateRect.intersect(rectToScroll);
&gt; +            hostWindow()-&gt;repaint(updateRect, true, false, true);
&gt; +        }
&gt; +    }
&gt; +}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187291</commentid>
    <comment_count>68</comment_count>
      <attachid>48001</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-02-03 00:52:46 -0800</bug_when>
    <thetext>Created attachment 48001
Repaint only the invalidated area after scrolling

Patch updated (better variable name and code quirks fixed).
Thanks Kenneth for noticing those problems. Apparently I was a bit lazy yesterday.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187755</commentid>
    <comment_count>69</comment_count>
      <attachid>48001</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-02-04 05:52:33 -0800</bug_when>
    <thetext>Comment on attachment 48001
Repaint only the invalidated area after scrolling

The updated area seems not correct for pages with top-level fixed elements with transformations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188189</commentid>
    <comment_count>70</comment_count>
      <attachid>48001</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-02-05 08:16:40 -0800</bug_when>
    <thetext>Comment on attachment 48001
Repaint only the invalidated area after scrolling

Put back to review, I think the problem is in paintingRootRect(), not in this patch.

With the following HTML:
&quot;&lt;html&gt;
&lt;body style=&quot;height: 5000px;&quot;&gt;
 &lt;div style=&quot;width: 100px; height: 100px; background-color: green; opacity: .5; position: fixed; top: 60px; left: 60px;&quot;&gt;&lt;/div&gt;
 &lt;div style=&quot;width: 100px; height: 100px; background-color: green; opacity: .5; position: fixed; top: 70px; left: 70px; -webkit-transform: rotate(30deg);&quot;&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;&quot;

The rect returned by paintingRootRect() is empty for the second rect (the one with a transformation).

The behavior for this case is also different between Safari and webkit trunk. On Safari, the fixed element is not fixed if transformed. On trunk, it is. I have absolutely no idea which behavior is the correct one.

Anyway, Dave Hyatt, any chance get a review and your opinion on the good behavior for fixed transformed elements?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188788</commentid>
    <comment_count>71</comment_count>
      <attachid>47029</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-08 15:13:00 -0800</bug_when>
    <thetext>Comment on attachment 47029
Repaint only the invalidated area after scrolling

Cleared Antti Koivisto&apos;s review+ from obsolete attachment 47029 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188789</commentid>
    <comment_count>72</comment_count>
      <attachid>47114</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-08 15:13:11 -0800</bug_when>
    <thetext>Comment on attachment 47114
Repaint only the invalidated area after scrolling

Cleared Kenneth Rohde Christiansen&apos;s review+ from obsolete attachment 47114 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197596</commentid>
    <comment_count>73</comment_count>
      <attachid>48001</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-09 08:34:45 -0800</bug_when>
    <thetext>Comment on attachment 48001
Repaint only the invalidated area after scrolling

This patch has been waiting for dhyatt&apos;s review for over a month.  In the meantime, the bug has gone epic and requires half an hour to understand what&apos;s going on with this code.

In the interest of moving the project forward, I&apos;m marking this patch r+.  Benjamin has gotten significant feedback from a number of reviewers and has diligently addressed all the feedback he&apos;s received (with the possible exception of a name change requested by dhyatt).

Based on our experience with this patch, I suspect this patch will break things when landed again.  However, I don&apos;t know how else to move this issue forward.  Having patches sitting around waiting for review for a month is bad for the project.

I would encourage folks working in this area to improve the test coverage of our scrolling code.  The regressions caused by earlier iterations of this patch point to a distinct lack of test coverage.  I was tempted to block this patch on better test coverage, but that seemed unfair to Benjamin to appears to have been working on this patch in ernest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197602</commentid>
    <comment_count>74</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2010-03-09 08:53:16 -0800</bug_when>
    <thetext>Note: this patch will need to be updated since the methods in HostWindow have changed with regard to invalidation/repaint before it&apos;ll build against ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197638</commentid>
    <comment_count>75</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-03-09 09:54:27 -0800</bug_when>
    <thetext>(In reply to comment #73)
&gt; (From update of attachment 48001 [details])
&gt; In the interest of moving the project forward, I&apos;m marking this patch r+. 
&gt; Benjamin has gotten significant feedback from a number of reviewers and has
&gt; diligently addressed all the feedback he&apos;s received (with the possible
&gt; exception of a name change requested by dhyatt).

Thank you very much. I had given up the hope to see that patch landed.

(In reply to comment #74)
&gt; Note: this patch will need to be updated since the methods in HostWindow have
&gt; changed with regard to invalidation/repaint before it&apos;ll build against ToT.

I will update the patch, I&apos;ll try to do that today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197795</commentid>
    <comment_count>76</comment_count>
      <attachid>50355</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-03-09 15:04:08 -0800</bug_when>
    <thetext>Created attachment 50355
Repaint only the invalidated area after scrolling

The same patch updated to use the new functions added by Adam Treat to HostWindow.

I will be happy to fix it if any new problem is discovered :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197809</commentid>
    <comment_count>77</comment_count>
      <attachid>50355</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2010-03-09 15:33:08 -0800</bug_when>
    <thetext>Comment on attachment 50355
Repaint only the invalidated area after scrolling

&gt; +        // 2) update the area of fixed objets that has been invalidated

Typo.  This should be &apos;objects&apos;.

&gt; +        size_t fixObjectsCount = subRectToUpdate.size();
&gt; +        for (size_t i = 0; i &lt; fixObjectsCount; ++i) {
&gt; +            IntRect updateRect = subRectToUpdate[i];
&gt; +            IntRect scrolledRect = updateRect;
&gt; +            scrolledRect.move(scrollDelta);
&gt; +            updateRect.unite(scrolledRect);
&gt; +            updateRect.intersect(rectToScroll);
&gt; +            hostWindow()-&gt;invalidateContentsForSlowScroll(updateRect, false);

I don&apos;t think you want to use &apos;invalidateContentsForSlowScroll&apos; here.  Rather, I think &apos;invalidateContentsAndWindow&apos; is the appropriate method call.  Otherwise you need to do it synchronously.

&gt; +        }
&gt; +    } else {
&gt; +        // the number of fixed objects exceed the threshold, so we repaint everything.
&gt; +        IntRect updateRect = clipRect;
&gt; +        updateRect.intersect(rectToScroll);
&gt; +        hostWindow()-&gt;invalidateContentsForSlowScroll(updateRect, false);
&gt; +    }
&gt; +}

I don&apos;t like that &apos;invalidateContentsForSlowScroll&apos; is being called from a method named &apos;scrollContentsFastPath.&apos;  This is confusing and I wonder if it points to a larger issue.  How about if scrollContentsFastPath returned true if it was possible, but false if not?  Then the latter could be invoked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197949</commentid>
    <comment_count>78</comment_count>
      <attachid>50386</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-03-10 02:45:57 -0800</bug_when>
    <thetext>Created attachment 50386
Repaint only the invalidated area after scrolling

&gt; (From update of attachment 50355 [details])
&gt; &gt; +        // 2) update the area of fixed objets that has been invalidated
&gt; 
&gt; Typo.  This should be &apos;objects&apos;.

Fixed :)

&gt; &gt; +        size_t fixObjectsCount = subRectToUpdate.size();
&gt; &gt; +        for (size_t i = 0; i &lt; fixObjectsCount; ++i) {
&gt; &gt; +            IntRect updateRect = subRectToUpdate[i];
&gt; &gt; +            IntRect scrolledRect = updateRect;
&gt; &gt; +            scrolledRect.move(scrollDelta);
&gt; &gt; +            updateRect.unite(scrolledRect);
&gt; &gt; +            updateRect.intersect(rectToScroll);
&gt; &gt; +            hostWindow()-&gt;invalidateContentsForSlowScroll(updateRect, false);
&gt; 
&gt; I don&apos;t think you want to use &apos;invalidateContentsForSlowScroll&apos; here.  Rather,
&gt; I think &apos;invalidateContentsAndWindow&apos; is the appropriate method call. 
&gt; Otherwise you need to do it synchronously.

I have to admit I don&apos;t get the difference between invalidateContentsForSlowScroll() and invalidateContentsAndWindow(). It seems specific to the way Windows handle scrolling, I trust you on that one.


&gt; I don&apos;t like that &apos;invalidateContentsForSlowScroll&apos; is being called from a
&gt; method named &apos;scrollContentsFastPath.&apos;  This is confusing and I wonder if it
&gt; points to a larger issue.  How about if scrollContentsFastPath returned true if
&gt; it was possible, but false if not?  Then the latter could be invoked.

I agree, it is clearer if scrollContentsFastPath() never invoke the slow path. I have made the modification you suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197952</commentid>
    <comment_count>79</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-10 02:52:22 -0800</bug_when>
    <thetext>Attachment 50386 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/ScrollView.cpp:516:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197954</commentid>
    <comment_count>80</comment_count>
      <attachid>50387</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-03-10 03:01:02 -0800</bug_when>
    <thetext>Created attachment 50387
Repaint only the invalidated area after scrolling

Code style fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198117</commentid>
    <comment_count>81</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2010-03-10 06:56:37 -0800</bug_when>
    <thetext> &gt; I have to admit I don&apos;t get the difference between
&gt; invalidateContentsForSlowScroll() and invalidateContentsAndWindow(). It seems
&gt; specific to the way Windows handle scrolling, I trust you on that one.

The latter (in the way you are using it) notifies that the provided rect needs to be repainted to the backingstore and then copied to the screen.  Asynchronously.

The former (in the way you were using it) notifies that the provided rect needs to be repainted to the backingstore.  Asynchronously.

I believe that it should be done synchronously, but hyatt and apple&apos;s windows port disagree.  But that is for another day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198146</commentid>
    <comment_count>82</comment_count>
      <attachid>50387</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2010-03-10 08:07:38 -0800</bug_when>
    <thetext>Comment on attachment 50387
Repaint only the invalidated area after scrolling

You&apos;ve addressed all the problems I specifically saw with the updated patch.  For this reason I am falling back to Adam Barth&apos;s previous status of r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198942</commentid>
    <comment_count>83</comment_count>
      <attachid>50387</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-11 23:07:11 -0800</bug_when>
    <thetext>Comment on attachment 50387
Repaint only the invalidated area after scrolling

Clearing flags on attachment: 50387

Committed r55890: &lt;http://trac.webkit.org/changeset/55890&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198944</commentid>
    <comment_count>84</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-11 23:07:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202438</commentid>
    <comment_count>85</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-22 04:45:23 -0700</bug_when>
    <thetext>Cherry-picked into qtwebkit-4.6 with commit cd258386aa3564cd4c961933401d0f86a4c872f8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202440</commentid>
    <comment_count>86</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-22 04:46:25 -0700</bug_when>
    <thetext>(In reply to comment #85)
&gt; Cherry-picked into qtwebkit-4.6 with commit
&gt; cd258386aa3564cd4c961933401d0f86a4c872f8

Err, that is d95c54951e7af2aa7def4346a142b2162bd89bbd</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205322</commentid>
    <comment_count>87</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-03-29 01:15:00 -0700</bug_when>
    <thetext>It seemed r55890 caused a regression at least for Qt and Chromium (I guess this issue will happen all environments where platformWidget() == NULL). I confirmed reverting r55890 fixes the issue.

How to reproduce:

- Run Chromium or QtLauncher
- Download http://chromium.googlecode.com/issues/attachment?aid=8184776065656844667&amp;name=testcase.xht and open it with your browser
- You would notice the image will be wrongly rendered when you scroll

I didn&apos;t understand the patch yet, but it seems we are using the fast path when we cannot use it.

Related Chromium bugs: http://crbug.com/39075 http://crbug.com/39394

By the way, I couldn&apos;t understand two changes in the patch. They might not be related to this issue though.

1. Comment 45 said we won&apos;t change the behavior when platformWidget is non-NULL, but the change for useSlowRepaints() seems to be changing the behavior.

2. I wasn&apos;t sure why we call invalidateContentsAndWindow() instead of scroll() when fast scroll fails (this should not be related the issue I&apos;m reporting because scrollContentsFastPath returns true with the testcase).

&gt; -       // FIXME: Find a way to scroll subframes with this faster path
&gt; -       hostWindow()-&gt;scroll(-scrollDelta, scrollViewRect, clipRect);
&gt; +        // FIXME: Find a way to scroll subframes with this faster path
&gt; +        if (!scrollContentsFastPath(-scrollDelta, scrollViewRect, clipRect))
&gt; +            hostWindow()-&gt;invalidateContentsForSlowScroll(updateRect, false);

Again, I didn&apos;t understand the patch well, I&apos;m sorry if my uneducated guesses were completely pointless.

Benjamin, could you look into this? If it will take a few days to fix this issue, I&apos;d like to revert this patch for now (and hopefully a refined patch will be landed with thorough tests).

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205331</commentid>
    <comment_count>88</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-03-29 01:39:29 -0700</bug_when>
    <thetext>(In reply to comment #87)
&gt; How to reproduce:
&gt; 
&gt; - Run Chromium or QtLauncher
&gt; - Download
&gt; http://chromium.googlecode.com/issues/attachment?aid=8184776065656844667&amp;name=testcase.xht
&gt; and open it with your browser
&gt; - You would notice the image will be wrongly rendered when you scroll

I cannot reproduce the problem with QtLauncher (use FrameView) nor Safari trunk (no FrameView, platformWidget).
I don&apos;t have Chronium trunk, I will ask Andreas if he can test the issue.

The code should not go at all to scrollContentsFastPath() if you have a platformWidget, I need to investigate that. It is strange I don&apos;t have the problem with Safari.

&gt; 1. Comment 45 said we won&apos;t change the behavior when platformWidget is
&gt; non-NULL, but the change for useSlowRepaints() seems to be changing the
&gt; behavior.

It shouldn&apos;t.
Before the patch, WebKit was doing a full update as soon as a fixed element was in the page (check the change of RenderObject). 

Now it only does so if you have a PlatformWidget (that is why I needed addFixedObject/removeFixedObject) and changed useSlowRepaints().

&gt; 2. I wasn&apos;t sure why we call invalidateContentsAndWindow() instead of scroll()
&gt; when fast scroll fails (this should not be related the issue I&apos;m reporting
&gt; because scrollContentsFastPath returns true with the testcase).
&gt; 
&gt; &gt; -       // FIXME: Find a way to scroll subframes with this faster path
&gt; &gt; -       hostWindow()-&gt;scroll(-scrollDelta, scrollViewRect, clipRect);
&gt; &gt; +        // FIXME: Find a way to scroll subframes with this faster path
&gt; &gt; +        if (!scrollContentsFastPath(-scrollDelta, scrollViewRect, clipRect))
&gt; &gt; +            hostWindow()-&gt;invalidateContentsForSlowScroll(updateRect, false);

The call to scrollContentsFastPath() returns false if it is not possible to use the fast path. In that case, we go the old way and do a full repaint.


&gt; Benjamin, could you look into this? 

Sure. I have to look at 36686, 36652 and this one. I will try to reproduce the issue as soon as I get my hand on a recent Chronium.

&gt; If it will take a few days to fix this
&gt; issue, I&apos;d like to revert this patch for now (and hopefully a refined patch
&gt; will be landed with thorough tests).

I would really, really prefer if we can avoid a revert. Landing this patch as been a pain in the ass, nobody was willing to review it, it stayed in queue for months.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205350</commentid>
    <comment_count>89</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-03-29 02:11:55 -0700</bug_when>
    <thetext>&gt; I cannot reproduce the problem with QtLauncher (use FrameView) nor Safari trunk
&gt; (no FrameView, platformWidget).
&gt; I don&apos;t have Chronium trunk, I will ask Andreas if he can test the issue.

I forgot to notice this doesn&apos;t happen with Mac Safari. It seemed Chromium and Qt don&apos;t have platformWidget so I&apos;m guessing this happens only when platformWidget is NULL.

Hmm... it&apos;s strange you cannot reproduce this issue with QtLauncher. I&apos;ve just confirmed again this issue happens with my debug build QtLauncher (r56710) on Linux. Please let me know if there are any other info I can tell.

To make sure we are testing the same HTML, I&apos;ve put the testcase HTML here:  http://shinh.skr.jp/t/testcase.html

&gt; Sure. I have to look at 36686, 36652 and this one. I will try to reproduce the
issue as soon as I get my hand on a recent Chronium.

Thanks! The easiest way to see what is happening with Chromium would be using our latest continuous build: http://build.chromium.org/buildbot/continuous/

If this only happens with Chromium and I&apos;m doing something wrong with my QtLauncher, it would be nice if we can safely disable this optimization with messy #if PLATFORM(CHROMIUM) for now. Could you tell me the easiest way to disable this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205367</commentid>
    <comment_count>90</comment_count>
      <attachid>51893</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-03-29 02:41:26 -0700</bug_when>
    <thetext>Created attachment 51893
Screenshot with Win Safari

I&apos;ve seen a similar, but different issue with Win Safari. See the attached screenshot. It didn&apos;t happen with r55872 but happened with r55961. I used nightly build (http://nightly.webkit.org/builds/trunk/win/1) so I cannot find the exact version soon. I&apos;ll check if reverting the patch also fixes this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205371</commentid>
    <comment_count>91</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-03-29 03:13:12 -0700</bug_when>
    <thetext>(In reply to comment #89)
&gt; The easiest way to see what is happening with Chromium would be using
&gt; our latest continuous build: http://build.chromium.org/buildbot/continuous/

I can reproduce the issue with the latest build.

&gt; Hmm... it&apos;s strange you cannot reproduce this issue with QtLauncher. I&apos;ve just
&gt; confirmed again this issue happens with my debug build QtLauncher (r56710) on
&gt; Linux. Please let me know if there are any other info I can tell.
&gt;
&gt; To make sure we are testing the same HTML, I&apos;ve put the testcase HTML here: 
&gt; http://shinh.skr.jp/t/testcase.html
&gt;
&gt; If this only happens with Chromium and I&apos;m doing something wrong with my
&gt; QtLauncher, it would be nice if we can safely disable this optimization with
&gt; messy #if PLATFORM(CHROMIUM) for now. Could you tell me the easiest way to
&gt; disable this?

I found why I could not reproduce the issue. My branch of WebKit have the patch of 36652 applied.

If you can wait a day, I will try to do 36686 and resubmit 36652 today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205382</commentid>
    <comment_count>92</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-03-29 03:41:50 -0700</bug_when>
    <thetext>&gt; I found why I could not reproduce the issue. My branch of WebKit have the patch
&gt; of 36652 applied.
&gt; 
&gt; If you can wait a day, I will try to do 36686 and resubmit 36652 today.

Great. I confirmed the patch in Bug 36652 fixed the chromium&apos;s issue. I hope you&apos;ll get r+ soon. Thanks for your investigation!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209207</commentid>
    <comment_count>93</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-06 13:28:06 -0700</bug_when>
    <thetext>I am planning to revert this patch (except for part that keeps a count of position:fixed elements in a frame since later patches depend on it).  Scrolling has been broken on pages with fixed position elements with overflow on all platforms except for Safari Mac for almost a month now.  The patch in 36652 is wrong and it&apos;s not immediately obvious that it can be fixed in short amount of time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209213</commentid>
    <comment_count>94</comment_count>
      <attachid>52663</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-06 13:35:22 -0700</bug_when>
    <thetext>Created attachment 52663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209218</commentid>
    <comment_count>95</comment_count>
      <attachid>52663</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-06 13:45:09 -0700</bug_when>
    <thetext>Comment on attachment 52663
Patch

Clearing flags on attachment: 52663

Committed r57165: &lt;http://trac.webkit.org/changeset/57165&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209219</commentid>
    <comment_count>96</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-06 13:45:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209220</commentid>
    <comment_count>97</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-06 13:46:23 -0700</bug_when>
    <thetext>Revert landed.  Reopening, I&apos;m very excited about having this optimization landed (when it&apos;s correct, of course).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209472</commentid>
    <comment_count>98</comment_count>
      <attachid>48001</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-06 23:44:33 -0700</bug_when>
    <thetext>Comment on attachment 48001
Repaint only the invalidated area after scrolling

Cleared Adam Barth&apos;s review+ from obsolete attachment 48001 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220109</commentid>
    <comment_count>99</comment_count>
      <attachid>54927</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-05-03 08:02:38 -0700</bug_when>
    <thetext>Created attachment 54927
Updated version of the patch

The patch now use the cached repaint rect of RenderLayer. This is a lot faster than the previous one, and takes into account overflow/border/etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223409</commentid>
    <comment_count>100</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-05-10 11:12:44 -0700</bug_when>
    <thetext>James, could you have a look if you can find a way to break this patch?
This would probably help reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228327</commentid>
    <comment_count>101</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-05-20 05:00:53 -0700</bug_when>
    <thetext>James: ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228532</commentid>
    <comment_count>102</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-05-20 13:47:55 -0700</bug_when>
    <thetext>I will take a look at it this week and provide feedback.  Note that you&apos;ll still need someone else to r+ it as I am not a reviewer (most likely hyatt, mitz, or smfr).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228565</commentid>
    <comment_count>103</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-05-20 14:22:33 -0700</bug_when>
    <thetext>I notice rendering problems on cnet.com with this patch applied to a chromium build.  The fixed position bar at the bottom of the page jumps up and down as I scroll the page.  It looks like some of the repaints associated with the fixed position elements may be getting scheduled asynchronously.  I haven&apos;t investigated yet, so I&apos;m not sure how to explain this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228819</commentid>
    <comment_count>104</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-05-21 02:49:00 -0700</bug_when>
    <thetext>(In reply to comment #103)
&gt; It looks like some of the repaints associated with the fixed position elements may be getting scheduled asynchronously.  I haven&apos;t investigated yet, so I&apos;m not sure how to explain this bug.

It sounds like your implementation of Chrome::scroll() is synchronous, and somehow Chrome::invalidateContentsAndWindow() is asynchronous.

On Qt Linux/Mac, the first expose event after Chrome::scroll() is the one triggered by Chrome::invalidateContentsAndWindow().

Andreas is building Chrome for Linux with this patch, hoping to reproduce the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228831</commentid>
    <comment_count>105</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-05-21 03:26:50 -0700</bug_when>
    <thetext>(In reply to comment #103)
&gt; I notice rendering problems on cnet.com with this patch applied to a chromium build.  The fixed position bar at the bottom of the page jumps up and down as I scroll the page.

Andreas built Chronium for Linux with this patch and we do not see the problem you describe. Which platform are you using?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233610</commentid>
    <comment_count>106</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-06-02 22:22:51 -0700</bug_when>
    <thetext>(In reply to comment #105)
&gt; (In reply to comment #103)
&gt; &gt; I notice rendering problems on cnet.com with this patch applied to a chromium build.  The fixed position bar at the bottom of the page jumps up and down as I scroll the page.
&gt; 
&gt; Andreas built Chronium for Linux with this patch and we do not see the problem you describe. Which platform are you using?

I was testing on Windows.  Our implementations of scroll and invalidateContentsAndWindow are both asynchronous.  They get added to a queue, which we process later.  We merge damage rects and account for overlapping scroll rects appropriately.  I was testing cnet.com and pages like it that have a prominent fixed position element.  I can try a Linux build as well when I get the chance.  I can&apos;t explain why you wouldn&apos;t see the same behavior on Linux as I see on Windows since the rendering model is the same at this level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234265</commentid>
    <comment_count>107</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-06-04 10:24:10 -0700</bug_when>
    <thetext>(In reply to comment #106)
&gt; I was testing on Windows.  Our implementations of scroll and invalidateContentsAndWindow are both asynchronous.  They get added to a queue, which we process later.  We merge damage rects and account for overlapping scroll rects appropriately.  I was testing cnet.com and pages like it that have a prominent fixed position element.  I can try a Linux build as well when I get the chance.  I can&apos;t explain why you wouldn&apos;t see the same behavior on Linux as I see on Windows since the rendering model is the same at this level.

Could it be that the update() is hitting the event loop after the scroll() on Windows? That could be a bug in the event delivery of Chrome.

I begin to wonder if this patch should be &quot;#ifdef QT&quot;. Would it be a solution to unblock the situation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236067</commentid>
    <comment_count>108</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-06-09 15:59:01 -0700</bug_when>
    <thetext>An ENABLE flag seems reasonable, as it would allow ports to opt-in once they are ready to do so.

I&apos;d be surprised if this is a bug on the Chrome side given that we already exercise scrolling with overlapped paint rects, but I need to debug it further to be sure.  I suspect that WebKit is not synchronously reporting all invalidations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236171</commentid>
    <comment_count>109</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-06-09 23:04:07 -0700</bug_when>
    <thetext>(In reply to comment #108)
&gt; An ENABLE flag seems reasonable, as it would allow ports to opt-in once they
&gt; are ready to do so.
&gt; 
&gt; I&apos;d be surprised if this is a bug on the Chrome side given that we already 
&gt; exercise scrolling with overlapped paint rects, but I need to debug it further 
&gt; to be sure.  I suspect that WebKit is not synchronously reporting all 
&gt; invalidations.

OK, I understand the issue now.  This is a problem caused by Chromium&apos;s use of ScrollWindowEx.  Sometimes a v-sync can happen between the ScrollWindowEx and the RedrawWindow(RGW_UPDATENOW) call that paints the exposed region.  This results in the intermediate state being shown to the user.  I think I need to address this issue on the Chromium side.  Sorry for the hassle!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236383</commentid>
    <comment_count>110</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-06-10 09:00:44 -0700</bug_when>
    <thetext>By the way, I confirm that this patch works properly for focus rings around text inputs and css box shadows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236990</commentid>
    <comment_count>111</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-06-11 13:05:50 -0700</bug_when>
    <thetext>*** Bug 38418 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237076</commentid>
    <comment_count>112</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-06-11 15:33:18 -0700</bug_when>
    <thetext>It could have been 39918 then. The point is the bug is no longer there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237560</commentid>
    <comment_count>113</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-13 07:57:39 -0700</bug_when>
    <thetext>Hyatt, Simon Fraser, any one of you having time to review this patch now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239247</commentid>
    <comment_count>114</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-06-16 23:20:00 -0700</bug_when>
    <thetext>So should we still have an ENABLE() flag or !PLATFORM(CHROMIUM) or is it safe to land the current patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239428</commentid>
    <comment_count>115</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-06-17 09:46:50 -0700</bug_when>
    <thetext>(In reply to comment #114)
&gt; So should we still have an ENABLE() flag or !PLATFORM(CHROMIUM) or is it safe to land the current patch?

No need!  I landed a patch in Chromium that addresses the issue I&apos;m seeing.  I&apos;m looking forward to this patch landing as it really improves scrolling performance on popular sites like nytimes.com.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239507</commentid>
    <comment_count>116</comment_count>
      <attachid>54927</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-06-17 11:47:46 -0700</bug_when>
    <thetext>Comment on attachment 54927
Updated version of the patch

Looks pretty close.  There&apos;s one bogus code section though:  The offsetX / offsetY computation that just loops up through the parent ScrollViews. There&apos;s more complexity to converting to window coordinates than just adding in offsets like that.  Fortunately you can just use contentsToWindow on the rect to convert it.  This will work in the presence of transforms, unlike the code you wrote.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239556</commentid>
    <comment_count>117</comment_count>
      <attachid>59031</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-06-17 13:33:18 -0700</bug_when>
    <thetext>Created attachment 59031
Patch

&gt; (From update of attachment 54927 [details])
&gt; Looks pretty close.  There&apos;s one bogus code section though:  The offsetX / offsetY computation that just loops up through the parent ScrollViews. There&apos;s more complexity to converting to window coordinates than just adding in offsets like that.  Fortunately you can just use contentsToWindow on the rect to convert it.  This will work in the presence of transforms, unlike the code you wrote.

Sweet. I have updated the patch to use contentsToWindow in order to convert the update rect.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240844</commentid>
    <comment_count>118</comment_count>
      <attachid>59031</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-21 13:17:12 -0700</bug_when>
    <thetext>Comment on attachment 59031
Patch

As you have fixed the only issue Hyatt pointed out, it should be OK to land this now. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240845</commentid>
    <comment_count>119</comment_count>
      <attachid>59031</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-21 13:17:32 -0700</bug_when>
    <thetext>Comment on attachment 59031
Patch

As you have fixed the only remaining issue Hyatt pointed out, it should be OK to land this now. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241838</commentid>
    <comment_count>120</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2010-06-23 07:12:27 -0700</bug_when>
    <thetext>Committed r61686: &lt;http://trac.webkit.org/changeset/61686&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243611</commentid>
    <comment_count>121</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-06-28 01:28:30 -0700</bug_when>
    <thetext>Revision r61686 cherry-picked into qtwebkit-2.0 with commit bf2d8aa3dc238a9f893f8d7b35fa06c083cbb9b5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243624</commentid>
    <comment_count>122</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-06-28 01:57:54 -0700</bug_when>
    <thetext>Revision r61686 cherry-picked into qtwebkit-2.0 with commit bf2d8aa3dc238a9f893f8d7b35fa06c083cbb9b5</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45799</attachid>
            <date>2010-01-04 07:16:04 -0800</date>
            <delta_ts>2010-01-05 08:24:21 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>5687</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDljNjI1NS4uYjFkNGU4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wMS0wNCAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIFJlbmRlck9iamVjdHMgd2l0aCBmaXhlZCBwb3NpdGlvbiByZWdpc3RlcnMgdG8gdGhl
IHZpZXcKKyAgICAgICAgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50IHdoaWxlIHNjcm9sbGluZy4K
KyAgICAgICAgVGhlIHNjcm9sbGluZyBjb2RlIHVwZGF0ZSBzcGVjaWZpY2FsbHkgdGhvc2UgZWxl
bWVudHMgYWZ0ZXIgYmxpdHRpbmcgdGhlIHBpeGVscy4KKworICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cmVnaXN0ZXJGaXhl
ZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1bnJlZ2lzdGVyRml4ZWRP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c3R5bGVXaWxs
Q2hhbmdlKToKKwogMjAxMC0wMS0wNCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE5pa29sYXMgWmltbWVybWFubi4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwCmluZGV4IDEzNzkyNWIuLjM1Y2IzYmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApA
QCAtMjIxLDYgKzIyMSwxNiBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldFVzZUZpeGVkTGF5b3V0KGJv
b2wgZW5hYmxlKQogICAgIHVwZGF0ZVNjcm9sbGJhcnMoc2Nyb2xsT2Zmc2V0KCkpOwogfQogCit2
b2lkIFNjcm9sbFZpZXc6OnJlZ2lzdGVyRml4ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3Qp
Cit7CisgICAgbV9maXhlZE9iamVjdHMuYWRkKG9iamVjdCk7Cit9CisKK3ZvaWQgU2Nyb2xsVmll
dzo6dW5yZWdpc3RlckZpeGVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0KQoreworICAgIG1f
Zml4ZWRPYmplY3RzLnJlbW92ZShvYmplY3QpOworfQorCiBJbnRTaXplIFNjcm9sbFZpZXc6OmNv
bnRlbnRzU2l6ZSgpIGNvbnN0CiB7CiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCkBAIC01MTQs
OCArNTI0LDIzIEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6
ZSYgc2Nyb2xsRGVsdGEpCiAgICAgfQogCiAgICAgaWYgKGNhbkJsaXRPblNjcm9sbCgpICYmICFy
b290UHJldmVudHNCbGl0dGluZygpKSB7IC8vIFRoZSBtYWluIGZyYW1lIGNhbiBqdXN0IGJsaXQg
dGhlIFdlYlZpZXcgd2luZG93Ci0gICAgICAgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gYmxpdCBz
dWJmcmFtZXMgd2l0aG91dCBibGl0dGluZyBvdmVybGFwcGluZyBjb250ZW50Ci0gICAgICAgaG9z
dFdpbmRvdygpLT5zY3JvbGwoLXNjcm9sbERlbHRhLCBzY3JvbGxWaWV3UmVjdCwgY2xpcFJlY3Qp
OworICAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBibGl0IHN1YmZyYW1lcyB3aXRob3V0
IGJsaXR0aW5nIG92ZXJsYXBwaW5nIGNvbnRlbnQKKyAgICAgICAgaWYgKG1fZml4ZWRPYmplY3Rz
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKC1zY3JvbGxEZWx0
YSwgc2Nyb2xsVmlld1JlY3QsIGNsaXBSZWN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBob3N0V2luZG93KCktPnNjcm9sbCgtc2Nyb2xsRGVsdGEsIHNjcm9sbFZpZXdSZWN0LCBjbGlw
UmVjdCk7CisgICAgICAgICAgICBIYXNoU2V0PFJlbmRlck9iamVjdCo+Ojpjb25zdF9pdGVyYXRv
ciBlbmQgPSBtX2ZpeGVkT2JqZWN0cy5lbmQoKTsKKyAgICAgICAgICAgIEhhc2hTZXQ8UmVuZGVy
T2JqZWN0Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9maXhlZE9iamVjdHMuYmVnaW4oKTsKKyAg
ICAgICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgICAgICBJbnRS
ZWN0IHVwZGF0ZVJlY3QgPSAoKml0KS0+YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7Cisg
ICAgICAgICAgICAgICAgdXBkYXRlUmVjdC5tb3ZlKC1zY3JvbGxYKCksIC1zY3JvbGxZKCkpOwor
ICAgICAgICAgICAgICAgIEludFJlY3Qgc2Nyb2xsZWRSZWN0ID0gdXBkYXRlUmVjdDsKKyAgICAg
ICAgICAgICAgICBzY3JvbGxlZFJlY3QubW92ZSgtc2Nyb2xsRGVsdGEpOworICAgICAgICAgICAg
ICAgIHVwZGF0ZVJlY3QudW5pdGUoc2Nyb2xsZWRSZWN0KTsKKyAgICAgICAgICAgICAgICB1cGRh
dGVSZWN0LmludGVyc2VjdChzY3JvbGxWaWV3UmVjdCk7CisgICAgICAgICAgICAgICAgaG9zdFdp
bmRvdygpLT5yZXBhaW50KHVwZGF0ZVJlY3QsIHRydWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQogICAgIH0gZWxzZSB7IAogICAgICAgIC8vIFdlIG5lZWQgdG8gZ28g
YWhlYWQgYW5kIHJlcGFpbnQgdGhlIGVudGlyZSBiYWNraW5nIHN0b3JlLiAgRG8gaXQgbm93IGJl
Zm9yZSBtb3ZpbmcgdGhlCiAgICAgICAgLy8gd2luZG93ZWQgcGx1Z2lucy4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgKaW5kZXggY2E3MjkwMC4uYTg2YTAyYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNkZWZpbmUgU2Nyb2xsVmlld19oCiAKICNpbmNsdWRlICJJbnRSZWN0Lmgi
CisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5j
bHVkZSAiU2Nyb2xsYmFyQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKQEAgLTEy
NCw2ICsxMjUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGaXhlZExheW91dFNpemUoY29uc3Qg
SW50U2l6ZSYpOwogICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQoKSBjb25zdDsKICAgICB2b2lkIHNl
dFVzZUZpeGVkTGF5b3V0KGJvb2wgZW5hYmxlKTsKKworICAgIHZvaWQgcmVnaXN0ZXJGaXhlZE9i
amVjdChSZW5kZXJPYmplY3QqIG9iamVjdCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyRml4ZWRPYmpl
Y3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpOwogICAgIAogICAgIC8vIE1ldGhvZHMgZm9yIGdldHRp
bmcvc2V0dGluZyB0aGUgc2l6ZSBvZiB0aGUgZG9jdW1lbnQgY29udGFpbmVkIGluc2lkZSB0aGUg
U2Nyb2xsVmlldyAoYXMgYW4gSW50U2l6ZSBvciBhcyBpbmRpdmlkdWFsIHdpZHRoIGFuZCBoZWln
aHQKICAgICAvLyB2YWx1ZXMpLgpAQCAtMjc5LDYgKzI4Myw4IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIG1fcGFpbnRzRW50aXJlQ29udGVudHM7CiAKKyAgICBIYXNoU2V0PFJlbmRlck9iamVjdCo+
IG1fZml4ZWRPYmplY3RzOworCiAgICAgdm9pZCBpbml0KCk7CiAgICAgdm9pZCBkZXN0cm95KCk7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDUyYWU2MDIuLjhkZWQ5M2QgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTYzNiwxNiArMTYzNiwyNCBAQCB2b2lk
IFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25z
dCBSZW5kZXJTdHlsZSogbmV3UwogICAgICAgICBzX2FmZmVjdHNQYXJlbnRCbG9jayA9IGZhbHNl
OwogCiAgICAgaWYgKHZpZXcoKS0+ZnJhbWVWaWV3KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IEEg
YmV0dGVyIHNvbHV0aW9uIHdvdWxkIGJlIHRvIG9ubHkgaW52YWxpZGF0ZSB0aGUgZml4ZWQgcmVn
aW9ucyB3aGVuIHNjcm9sbGluZy4gIEl0J3Mgb3ZlcmtpbGwgdG8KLSAgICAgICAgLy8gcHJldmVu
dCB0aGUgZW50aXJlIHZpZXcgZnJvbSBibGl0dGluZyBvbiBhIHNjcm9sbC4KLSAgICAgICAgYm9v
bCBuZXdTdHlsZVNsb3dTY3JvbGwgPSBuZXdTdHlsZSAmJiAobmV3U3R5bGUtPnBvc2l0aW9uKCkg
PT0gRml4ZWRQb3NpdGlvbiB8fCBuZXdTdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSk7
Ci0gICAgICAgIGJvb2wgb2xkU3R5bGVTbG93U2Nyb2xsID0gbV9zdHlsZSAmJiAobV9zdHlsZS0+
cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uIHx8IG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dyb3Vu
ZEltYWdlKCkpOworICAgICAgICBib29sIG5ld1N0eWxlU2xvd1Njcm9sbCA9IG5ld1N0eWxlICYm
IG5ld1N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpOworICAgICAgICBib29sIG9sZFN0
eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYgbV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1h
Z2UoKTsKICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9sbCAhPSBuZXdTdHlsZVNsb3dTY3Jv
bGwpIHsKICAgICAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwpCiAgICAgICAgICAgICAg
ICAgdmlldygpLT5mcmFtZVZpZXcoKS0+cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKTsKICAgICAg
ICAgICAgIGlmIChuZXdTdHlsZVNsb3dTY3JvbGwpCiAgICAgICAgICAgICAgICAgdmlldygpLT5m
cmFtZVZpZXcoKS0+YWRkU2xvd1JlcGFpbnRPYmplY3QoKTsKICAgICAgICAgfQorCisgICAgICAg
IGJvb2wgbmV3U3R5bGVIYXNGaXhlZFBvc2l0aW9uID0gbmV3U3R5bGUgJiYgKG5ld1N0eWxlLT5w
b3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pOworICAgICAgICBib29sIG9sZFN0eWxlSGFzRml4
ZWRQb3NpdGlvbiA9IG1fc3R5bGUgJiYgKG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3Np
dGlvbik7CisgICAgICAgIGlmIChvbGRTdHlsZUhhc0ZpeGVkUG9zaXRpb24gIT0gbmV3U3R5bGVI
YXNGaXhlZFBvc2l0aW9uKSB7CisgICAgICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHZp
ZXcoKS0+ZnJhbWVWaWV3KCk7CisgICAgICAgICAgICBpZiAobmV3U3R5bGVIYXNGaXhlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+cmVnaXN0ZXJGaXhlZE9iamVjdCh0aGlz
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnVucmVnaXN0
ZXJGaXhlZE9iamVjdCh0aGlzKTsKKyAgICAgICAgfQogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45892</attachid>
            <date>2010-01-05 08:24:21 -0800</date>
            <delta_ts>2010-01-06 14:22:43 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>6591</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDljNjI1NS4uMzhjOTdiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wMS0wNCAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIFJlbmRlck9iamVjdHMgd2l0aCBmaXhlZCBwb3NpdGlvbiByZWdpc3RlcnMgdG8gdGhl
IHZpZXcKKyAgICAgICAgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50IHdoaWxlIHNjcm9sbGluZy4K
KyAgICAgICAgVGhlIHNjcm9sbGluZyBjb2RlIHVwZGF0ZSBzcGVjaWZpY2FsbHkgdGhvc2UgZWxl
bWVudHMgYWZ0ZXIgYmxpdHRpbmcgdGhlIHBpeGVscy4KKworICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cmVnaXN0ZXJGaXhl
ZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1bnJlZ2lzdGVyRml4ZWRP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6flJlbmRlck9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZSk6
CisKIDIwMTAtMDEtMDQgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApp
bmRleCAxMzc5MjViLi44ZDFlZTBjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTMzLDcg
KzMzLDYgQEAKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVt
ZS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQogdXNpbmcgc3RkOjptYXg7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTIyMSw2ICsyMjAsMTYgQEAgdm9pZCBTY3JvbGxWaWV3
OjpzZXRVc2VGaXhlZExheW91dChib29sIGVuYWJsZSkKICAgICB1cGRhdGVTY3JvbGxiYXJzKHNj
cm9sbE9mZnNldCgpKTsKIH0KIAordm9pZCBTY3JvbGxWaWV3OjpyZWdpc3RlckZpeGVkT2JqZWN0
KFJlbmRlck9iamVjdCogb2JqZWN0KQoreworICAgIG1fZml4ZWRPYmplY3RzLmFkZChvYmplY3Qp
OworfQorCit2b2lkIFNjcm9sbFZpZXc6OnVucmVnaXN0ZXJGaXhlZE9iamVjdChSZW5kZXJPYmpl
Y3QqIG9iamVjdCkKK3sKKyAgICBtX2ZpeGVkT2JqZWN0cy5yZW1vdmUob2JqZWN0KTsKK30KKwog
SW50U2l6ZSBTY3JvbGxWaWV3Ojpjb250ZW50c1NpemUoKSBjb25zdAogewogICAgIGlmIChwbGF0
Zm9ybVdpZGdldCgpKQpAQCAtNTE0LDggKzUyMywyNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNjcm9s
bENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQogICAgIH0KIAogICAgIGlmIChj
YW5CbGl0T25TY3JvbGwoKSAmJiAhcm9vdFByZXZlbnRzQmxpdHRpbmcoKSkgeyAvLyBUaGUgbWFp
biBmcmFtZSBjYW4ganVzdCBibGl0IHRoZSBXZWJWaWV3IHdpbmRvdwotICAgICAgIC8vIEZJWE1F
OiBGaW5kIGEgd2F5IHRvIGJsaXQgc3ViZnJhbWVzIHdpdGhvdXQgYmxpdHRpbmcgb3ZlcmxhcHBp
bmcgY29udGVudAotICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKC1zY3JvbGxEZWx0YSwgc2Ny
b2xsVmlld1JlY3QsIGNsaXBSZWN0KTsKKyAgICAgICAgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8g
YmxpdCBzdWJmcmFtZXMgd2l0aG91dCBibGl0dGluZyBvdmVybGFwcGluZyBjb250ZW50CisgICAg
ICAgIGlmIChtX2ZpeGVkT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgICAgICBob3N0V2luZG93
KCktPnNjcm9sbCgtc2Nyb2xsRGVsdGEsIHNjcm9sbFZpZXdSZWN0LCBjbGlwUmVjdCk7CisgICAg
ICAgIGVsc2UgaWYgKG1fZml4ZWRPYmplY3RzLnNpemUoKSA8IDUpeworICAgICAgICAgICAgaG9z
dFdpbmRvdygpLT5zY3JvbGwoLXNjcm9sbERlbHRhLCBzY3JvbGxWaWV3UmVjdCwgY2xpcFJlY3Qp
OworICAgICAgICAgICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPjo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbV9maXhlZE9iamVjdHMuZW5kKCk7CisgICAgICAgICAgICBIYXNoU2V0PFJlbmRlck9iamVj
dCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZml4ZWRPYmplY3RzLmJlZ2luKCk7CisgICAgICAg
ICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCB0
b3BMZXZlbFJlY3Q7CisgICAgICAgICAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gKCppdCkt
PnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KTsKKyAgICAgICAgICAgICAgICB1cGRhdGVS
ZWN0Lm1vdmUoLXNjcm9sbFgoKSwgLXNjcm9sbFkoKSk7CisgICAgICAgICAgICAgICAgSW50UmVj
dCBzY3JvbGxlZFJlY3QgPSB1cGRhdGVSZWN0OworICAgICAgICAgICAgICAgIHNjcm9sbGVkUmVj
dC5tb3ZlKC1zY3JvbGxEZWx0YSk7CisgICAgICAgICAgICAgICAgdXBkYXRlUmVjdC51bml0ZShz
Y3JvbGxlZFJlY3QpOworICAgICAgICAgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHNjcm9s
bFZpZXdSZWN0KTsKKyAgICAgICAgICAgICAgICBob3N0V2luZG93KCktPnJlcGFpbnQodXBkYXRl
UmVjdCwgdHJ1ZSwgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgLy8gdGhlcmUgYXJlIHRvbyBtYW55IGZpeGVkIG9iamVjdHMsIHJlcGFp
bnQgZXZlcnl0aGluZyBtaWdodCBiZSBlYXNlcgorICAgICAgICAgICAgaG9zdFdpbmRvdygpLT5y
ZXBhaW50KHVwZGF0ZVJlY3QsIHRydWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgfQogICAgIH0g
ZWxzZSB7IAogICAgICAgIC8vIFdlIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJlcGFpbnQgdGhlIGVu
dGlyZSBiYWNraW5nIHN0b3JlLiAgRG8gaXQgbm93IGJlZm9yZSBtb3ZpbmcgdGhlCiAgICAgICAg
Ly8gd2luZG93ZWQgcGx1Z2lucy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggY2E3MjkwMC4uYTg2
YTAyYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgU2Ny
b2xsVmlld19oCiAKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKQEAgLTEyNCw2ICsxMjUsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRGaXhlZExheW91dFNpemUoY29uc3QgSW50U2l6ZSYpOwogICAgIGJvb2wgdXNl
Rml4ZWRMYXlvdXQoKSBjb25zdDsKICAgICB2b2lkIHNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZW5h
YmxlKTsKKworICAgIHZvaWQgcmVnaXN0ZXJGaXhlZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVj
dCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyRml4ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3Qp
OwogICAgIAogICAgIC8vIE1ldGhvZHMgZm9yIGdldHRpbmcvc2V0dGluZyB0aGUgc2l6ZSBvZiB0
aGUgZG9jdW1lbnQgY29udGFpbmVkIGluc2lkZSB0aGUgU2Nyb2xsVmlldyAoYXMgYW4gSW50U2l6
ZSBvciBhcyBpbmRpdmlkdWFsIHdpZHRoIGFuZCBoZWlnaHQKICAgICAvLyB2YWx1ZXMpLgpAQCAt
Mjc5LDYgKzI4Myw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fcGFpbnRzRW50aXJlQ29udGVu
dHM7CiAKKyAgICBIYXNoU2V0PFJlbmRlck9iamVjdCo+IG1fZml4ZWRPYmplY3RzOworCiAgICAg
dm9pZCBpbml0KCk7CiAgICAgdm9pZCBkZXN0cm95KCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IDUyYWU2MDIuLjk3NDU2ODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcApAQCAtMjE2LDYgKzIxNiwxMSBAQCBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdChOb2Rl
KiBub2RlKQogCiBSZW5kZXJPYmplY3Q6On5SZW5kZXJPYmplY3QoKQogeworICAgIGlmIChtX3N0
eWxlICYmIG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikgeworICAgICAgICBG
cmFtZVZpZXcqIGZyYW1lVmlldyA9IGRvY3VtZW50KCktPnZpZXcoKTsKKyAgICAgICAgaWYgKGZy
YW1lVmlldykKKyAgICAgICAgICAgIGZyYW1lVmlldy0+dW5yZWdpc3RlckZpeGVkT2JqZWN0KHRo
aXMpOworICAgIH0KICAgICBBU1NFUlQoIW5vZGUoKSB8fCBkb2N1bWVudEJlaW5nRGVzdHJveWVk
KCkgfHwgIWRvY3VtZW50KCktPmZyYW1lKCktPnZpZXcoKSB8fCBkb2N1bWVudCgpLT5mcmFtZSgp
LT52aWV3KCktPmxheW91dFJvb3QoKSAhPSB0aGlzKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNT
RVJUKCFtX2hhc0FYT2JqZWN0KTsKQEAgLTE2MzYsMTYgKzE2NDEsMjQgQEAgdm9pZCBSZW5kZXJP
YmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVy
U3R5bGUqIG5ld1MKICAgICAgICAgc19hZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsKIAogICAg
IGlmICh2aWV3KCktPmZyYW1lVmlldygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBIGJldHRlciBz
b2x1dGlvbiB3b3VsZCBiZSB0byBvbmx5IGludmFsaWRhdGUgdGhlIGZpeGVkIHJlZ2lvbnMgd2hl
biBzY3JvbGxpbmcuICBJdCdzIG92ZXJraWxsIHRvCi0gICAgICAgIC8vIHByZXZlbnQgdGhlIGVu
dGlyZSB2aWV3IGZyb20gYmxpdHRpbmcgb24gYSBzY3JvbGwuCi0gICAgICAgIGJvb2wgbmV3U3R5
bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgKG5ld1N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVk
UG9zaXRpb24gfHwgbmV3U3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkpOwotICAgICAg
ICBib29sIG9sZFN0eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYgKG1fc3R5bGUtPnBvc2l0aW9u
KCkgPT0gRml4ZWRQb3NpdGlvbiB8fCBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgp
KTsKKyAgICAgICAgYm9vbCBuZXdTdHlsZVNsb3dTY3JvbGwgPSBuZXdTdHlsZSAmJiBuZXdTdHls
ZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKKyAgICAgICAgYm9vbCBvbGRTdHlsZVNsb3dT
Y3JvbGwgPSBtX3N0eWxlICYmIG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCk7CiAg
ICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwgIT0gbmV3U3R5bGVTbG93U2Nyb2xsKSB7CiAg
ICAgICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsKQogICAgICAgICAgICAgICAgIHZpZXco
KS0+ZnJhbWVWaWV3KCktPnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KCk7CiAgICAgICAgICAgICBp
ZiAobmV3U3R5bGVTbG93U2Nyb2xsKQogICAgICAgICAgICAgICAgIHZpZXcoKS0+ZnJhbWVWaWV3
KCktPmFkZFNsb3dSZXBhaW50T2JqZWN0KCk7CiAgICAgICAgIH0KKworICAgICAgICBib29sIG5l
d1N0eWxlSGFzRml4ZWRQb3NpdGlvbiA9IG5ld1N0eWxlICYmIChuZXdTdHlsZS0+cG9zaXRpb24o
KSA9PSBGaXhlZFBvc2l0aW9uKTsKKyAgICAgICAgYm9vbCBvbGRTdHlsZUhhc0ZpeGVkUG9zaXRp
b24gPSBtX3N0eWxlICYmIChtX3N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pOwor
ICAgICAgICBpZiAob2xkU3R5bGVIYXNGaXhlZFBvc2l0aW9uICE9IG5ld1N0eWxlSGFzRml4ZWRQ
b3NpdGlvbikgeworICAgICAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB2aWV3KCktPmZy
YW1lVmlldygpOworICAgICAgICAgICAgaWYgKG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICBmcmFtZVZpZXctPnJlZ2lzdGVyRml4ZWRPYmplY3QodGhpcyk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT51bnJlZ2lzdGVyRml4ZWRP
YmplY3QodGhpcyk7CisgICAgICAgIH0KICAgICB9CiB9CiAK
</data>
<flag name="review"
          id="28046"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45994</attachid>
            <date>2010-01-06 14:22:43 -0800</date>
            <delta_ts>2010-01-06 14:40:10 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>9827</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDljNjI1NS4uZTM2YjZiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wMS0wNiAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIFJlbmRlck9iamVjdHMgd2l0aCBmaXhlZCBwb3NpdGlvbiByZWdpc3RlcnMgdG8gdGhl
IHZpZXcKKyAgICAgICAgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50IHdoaWxlIHNjcm9sbGluZy4K
KyAgICAgICAgVGhlIHNjcm9sbGluZyBjb2RlIHVwZGF0ZSBzcGVjaWZpY2FsbHkgdGhvc2UgZWxl
bWVudHMgYWZ0ZXIgYmxpdHRpbmcgdGhlIHBpeGVscy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVnaXN0ZXJGaXhlZE9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVucmVnaXN0ZXJGaXhlZE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmZhc3RTY3JvbGxDb250ZW50cyk6CisgICAg
ICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmZhc3RTY3JvbGxDb250ZW50cyk6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp+UmVuZGVyT2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKToKKwogMjAxMC0w
MS0wNCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IE5pa29sYXMgWmltbWVybWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggNDgzYTIyMC4uYWQ3N2M3
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKQEAgLTc5NSw2ICs3OTUsNjcgQEAgdm9pZCBGcmFtZVZpZXc6OnJl
bW92ZVNsb3dSZXBhaW50T2JqZWN0KCkKICAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCF1c2VT
bG93UmVwYWludHMoKSk7CiB9CiAKKwordm9pZCBGcmFtZVZpZXc6OnJlZ2lzdGVyRml4ZWRPYmpl
Y3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgbV9maXhlZE9iamVjdHMuYWRkKG9iamVj
dCk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3Ojp1bnJlZ2lzdGVyRml4ZWRPYmplY3QoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QpCit7CisgICAgbV9maXhlZE9iamVjdHMucmVtb3ZlKG9iamVjdCk7Cit9CisK
K3ZvaWQgRnJhbWVWaWV3OjpmYXN0U2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xs
RGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJl
Y3QpCit7CisgICAgY29uc3QgaW50IGZpeGVkT2JqZWN0TnVtYmVyVGhyZXNob2xkID0gNTsKKwor
ICAgIGlmIChtX2ZpeGVkT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIGhvc3RXaW5kb3coKS0+
c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKyAgICBlbHNlIHsK
KyAgICAgICAgVmVjdG9yPFJlbmRlck9iamVjdCo+IG9iamVjdHNGaXhlZEluVmlld3BvcnQ7Cisg
ICAgICAgIG9iamVjdHNGaXhlZEluVmlld3BvcnQucmVzZXJ2ZUNhcGFjaXR5KG1fZml4ZWRPYmpl
Y3RzLnNpemUoKSk7CisKKyAgICAgICAgYm9vbCB1cGRhdGVJbnZhbGlkU3ViUmVjdCA9IHRydWU7
CisgICAgICAgIC8vIEdldCBhIGxpc3Qgb2YgZml4ZWQgb2JqZWN0cyB0aGF0IGFyZSBub3QgaW4g
dHJhbnNmb3JtYXRpb25zCisgICAgICAgIEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj46OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IG1fZml4ZWRPYmplY3RzLmVuZCgpOworICAgICAgICBIYXNoU2V0PFJlbmRl
ck9iamVjdCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZml4ZWRPYmplY3RzLmJlZ2luKCk7Cisg
ICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGNvbnN0IFJlbmRl
ck9iamVjdCAqY29uc3Qgb2JqID0gKml0OworICAgICAgICAgICAgaWYgKG9iai0+Y29udGFpbmlu
Z0Jsb2NrKCkgPT0gb2JqLT52aWV3KCkpIHsKKyAgICAgICAgICAgICAgICBvYmplY3RzRml4ZWRJ
blZpZXdwb3J0LmFwcGVuZChvYmopOworICAgICAgICAgICAgICAgIGlmIChvYmplY3RzRml4ZWRJ
blZpZXdwb3J0LnNpemUoKSA+IGZpeGVkT2JqZWN0TnVtYmVyVGhyZXNob2xkKSB7CisgICAgICAg
ICAgICAgICAgICAgIHVwZGF0ZUludmFsaWRTdWJSZWN0ID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIC8vIHNjcm9sbCB0aGUgY29udGVudAorICAgICAgICBpZiAodXBkYXRlSW52
YWxpZFN1YlJlY3QpIHsKKyAgICAgICAgICAgIC8vIDEpIHNjcm9sbAorICAgICAgICAgICAgaG9z
dFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOwor
CisgICAgICAgICAgICAvLyAyKSB1cGRhdGUgdGhlIGFyZWEgb2YgZml4ZWQgb2JqZXRzIHRoYXQg
aGFzIGJlZW4gaW52YWxpZGF0ZWQKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2Jq
ZWN0c0ZpeGVkSW5WaWV3cG9ydC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIEludFJl
Y3QgdG9wTGV2ZWxSZWN0OworICAgICAgICAgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IChv
YmplY3RzRml4ZWRJblZpZXdwb3J0W2ldKS0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3Qp
OworICAgICAgICAgICAgICAgIHVwZGF0ZVJlY3QubW92ZSgtc2Nyb2xsWCgpLCAtc2Nyb2xsWSgp
KTsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHNjcm9sbGVkUmVjdCA9IHVwZGF0ZVJlY3Q7Cisg
ICAgICAgICAgICAgICAgc2Nyb2xsZWRSZWN0Lm1vdmUoc2Nyb2xsRGVsdGEpOworICAgICAgICAg
ICAgICAgIHVwZGF0ZVJlY3QudW5pdGUoc2Nyb2xsZWRSZWN0KTsKKyAgICAgICAgICAgICAgICB1
cGRhdGVSZWN0LmludGVyc2VjdChyZWN0VG9TY3JvbGwpOworICAgICAgICAgICAgICAgIGhvc3RX
aW5kb3coKS0+cmVwYWludCh1cGRhdGVSZWN0LCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyB0aGVyZSBhcmUgdG9vIG1h
bnkgZml4ZWQgb2JqZWN0cywgcmVwYWludCBldmVyeXRoaW5nIG1pZ2h0IGJlIGVhc2llcgorICAg
ICAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gY2xpcFJlY3Q7CisgICAgICAgICAgICB1cGRh
dGVSZWN0LmludGVyc2VjdChyZWN0VG9TY3JvbGwpOworICAgICAgICAgICAgaG9zdFdpbmRvdygp
LT5yZXBhaW50KHVwZGF0ZVJlY3QsIHRydWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgfQorICAg
IH0KK30KKwogdm9pZCBGcmFtZVZpZXc6OnNldElzT3ZlcmxhcHBlZChib29sIGlzT3ZlcmxhcHBl
ZCkKIHsKICAgICBpZiAoaXNPdmVybGFwcGVkID09IG1faXNPdmVybGFwcGVkKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmlu
ZGV4IGQ2YjY1OGMuLjgyNjQ3ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE0NSw2ICsxNDUsMTMgQEAgcHVi
bGljOgogICAgIHZvaWQgYWRkU2xvd1JlcGFpbnRPYmplY3QoKTsKICAgICB2b2lkIHJlbW92ZVNs
b3dSZXBhaW50T2JqZWN0KCk7CiAKKyAgICAvLyBNZXRob2RzIHRvIG1hbmFnZSB0aGUgb2JqZWN0
cyB0aGF0IGFyZSBmaXhlZAorICAgIC8vIGluIHRoZSB2aWV3IHdoZW4gc2Nyb2xsaW5nCisgICAg
dm9pZCByZWdpc3RlckZpeGVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0KTsKKyAgICB2b2lk
IHVucmVnaXN0ZXJGaXhlZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgZmFzdFNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBj
b25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKwog
ICAgIHZvaWQgYmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7CiAgICAgdm9pZCBlbmREZWZlcnJlZFJl
cGFpbnRzKCk7CiAgICAgdm9pZCBjaGVja1N0b3BEZWxheWluZ0RlZmVycmVkUmVwYWludHMoKTsK
QEAgLTI2Niw2ICsyNzMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc092ZXJsYXBwZWQ7CiAg
ICAgYm9vbCBtX2NvbnRlbnRJc09wYXF1ZTsKICAgICB1bnNpZ25lZCBtX3Nsb3dSZXBhaW50T2Jq
ZWN0Q291bnQ7CisgICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPiBtX2ZpeGVkT2JqZWN0czsKIAog
ICAgIGludCBtX2JvcmRlclgsIG1fYm9yZGVyWTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5k
ZXggMTM3OTI1Yi4uOWVhODkzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC01MTQsOCAr
NTE0LDggQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSkKICAgICB9CiAKICAgICBpZiAoY2FuQmxpdE9uU2Nyb2xsKCkgJiYgIXJvb3RQ
cmV2ZW50c0JsaXR0aW5nKCkpIHsgLy8gVGhlIG1haW4gZnJhbWUgY2FuIGp1c3QgYmxpdCB0aGUg
V2ViVmlldyB3aW5kb3cKLSAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBibGl0IHN1YmZy
YW1lcyB3aXRob3V0IGJsaXR0aW5nIG92ZXJsYXBwaW5nIGNvbnRlbnQKLSAgICAgICBob3N0V2lu
ZG93KCktPnNjcm9sbCgtc2Nyb2xsRGVsdGEsIHNjcm9sbFZpZXdSZWN0LCBjbGlwUmVjdCk7Cisg
ICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGJsaXQgc3ViZnJhbWVzIHdpdGhvdXQgYmxp
dHRpbmcgb3ZlcmxhcHBpbmcgY29udGVudAorICAgICAgICBmYXN0U2Nyb2xsQ29udGVudHMoLXNj
cm9sbERlbHRhLCBzY3JvbGxWaWV3UmVjdCwgY2xpcFJlY3QpOwogICAgIH0gZWxzZSB7IAogICAg
ICAgIC8vIFdlIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJlcGFpbnQgdGhlIGVudGlyZSBiYWNraW5n
IHN0b3JlLiAgRG8gaXQgbm93IGJlZm9yZSBtb3ZpbmcgdGhlCiAgICAgICAgLy8gd2luZG93ZWQg
cGx1Z2lucy4KQEAgLTUzMCw2ICs1MzAsMTEgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250
ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKICAgICBob3N0V2luZG93KCktPnBhaW50
KCk7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6ZmFzdFNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNp
emUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJl
Y3QmIGNsaXBSZWN0KQoreworICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCBy
ZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKK30KKwogSW50UG9pbnQgU2Nyb2xsVmlldzo6d2luZG93
VG9Db250ZW50cyhjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpIGNvbnN0CiB7CiAgICAgSW50
UG9pbnQgdmlld1BvaW50ID0gY29udmVydEZyb21Db250YWluaW5nV2luZG93KHdpbmRvd1BvaW50
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggY2E3MjkwMC4uYzY3NjE5ZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmgKQEAgLTE1MSw2ICsxNTEsOSBAQCBwdWJsaWM6CiAgICAgLy8gU2Nyb2xsIHRoZSBh
Y3R1YWwgY29udGVudHMgb2YgdGhlIHZpZXcgKGVpdGhlciBibGl0dGluZyBvciBpbnZhbGlkYXRp
bmcgYXMgbmVlZGVkKS4KICAgICB2b2lkIHNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhKTsKIAorICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBieSBibGl0dGluZyB0aGUg
cGl4ZWxzCisgICAgdmlydHVhbCB2b2lkIGZhc3RTY3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXpl
JiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0
JiBjbGlwUmVjdCk7CisKICAgICAvLyBUaGlzIGdpdmVzIHVzIGEgbWVhbnMgb2YgYmxvY2tpbmcg
cGFpbnRpbmcgb24gb3VyIHNjcm9sbGJhcnMgdW50aWwgdGhlIGZpcnN0IGxheW91dCBoYXMgb2Nj
dXJyZWQuCiAgICAgdm9pZCBzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZChib29sIHN1cHByZXNzZWQs
IGJvb2wgcmVwYWludE9uVW5zdXBwcmVzcyA9IGZhbHNlKTsKICAgICBib29sIHNjcm9sbGJhcnNT
dXBwcmVzc2VkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXJzU3VwcHJlc3NlZDsgfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggNTJhZTYwMi4uZDc4MzQ0NCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yMTYsNiArMjE2LDExIEBAIFJlbmRlck9iamVjdDo6
UmVuZGVyT2JqZWN0KE5vZGUqIG5vZGUpCiAKIFJlbmRlck9iamVjdDo6flJlbmRlck9iamVjdCgp
CiB7CisgICAgaWYgKG1fc3R5bGUgJiYgbV9zdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0
aW9uKSB7CisgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZG9jdW1lbnQoKS0+dmlldygp
OworICAgICAgICBpZiAoZnJhbWVWaWV3KQorICAgICAgICAgICAgZnJhbWVWaWV3LT51bnJlZ2lz
dGVyRml4ZWRPYmplY3QodGhpcyk7CisgICAgfQogICAgIEFTU0VSVCghbm9kZSgpIHx8IGRvY3Vt
ZW50QmVpbmdEZXN0cm95ZWQoKSB8fCAhZG9jdW1lbnQoKS0+ZnJhbWUoKS0+dmlldygpIHx8IGRv
Y3VtZW50KCktPmZyYW1lKCktPnZpZXcoKS0+bGF5b3V0Um9vdCgpICE9IHRoaXMpOwogI2lmbmRl
ZiBOREVCVUcKICAgICBBU1NFUlQoIW1faGFzQVhPYmplY3QpOwpAQCAtMTYzNSwxNiArMTY0MCwz
MyBAQCB2b2lkIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBk
aWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3UwogICAgIH0gZWxzZQogICAgICAgICBzX2FmZmVj
dHNQYXJlbnRCbG9jayA9IGZhbHNlOwogCi0gICAgaWYgKHZpZXcoKS0+ZnJhbWVWaWV3KCkpIHsK
LSAgICAgICAgLy8gRklYTUU6IEEgYmV0dGVyIHNvbHV0aW9uIHdvdWxkIGJlIHRvIG9ubHkgaW52
YWxpZGF0ZSB0aGUgZml4ZWQgcmVnaW9ucyB3aGVuIHNjcm9sbGluZy4gIEl0J3Mgb3ZlcmtpbGwg
dG8KLSAgICAgICAgLy8gcHJldmVudCB0aGUgZW50aXJlIHZpZXcgZnJvbSBibGl0dGluZyBvbiBh
IHNjcm9sbC4KLSAgICAgICAgYm9vbCBuZXdTdHlsZVNsb3dTY3JvbGwgPSBuZXdTdHlsZSAmJiAo
bmV3U3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbiB8fCBuZXdTdHlsZS0+aGFzRml4
ZWRCYWNrZ3JvdW5kSW1hZ2UoKSk7Ci0gICAgICAgIGJvb2wgb2xkU3R5bGVTbG93U2Nyb2xsID0g
bV9zdHlsZSAmJiAobV9zdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uIHx8IG1fc3R5
bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gdmlldygpLT5mcmFtZVZpZXcoKTsKKyAgICBpZiAoZnJhbWVWaWV3KSB7CisgICAgICAgIGJv
b2wgbmV3U3R5bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgbmV3U3R5bGUtPmhhc0ZpeGVkQmFj
a2dyb3VuZEltYWdlKCk7CisgICAgICAgIGJvb2wgb2xkU3R5bGVTbG93U2Nyb2xsID0gbV9zdHls
ZSAmJiBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpOwogICAgICAgICBpZiAob2xk
U3R5bGVTbG93U2Nyb2xsICE9IG5ld1N0eWxlU2xvd1Njcm9sbCkgewogICAgICAgICAgICAgaWYg
KG9sZFN0eWxlU2xvd1Njcm9sbCkKLSAgICAgICAgICAgICAgICB2aWV3KCktPmZyYW1lVmlldygp
LT5yZW1vdmVTbG93UmVwYWludE9iamVjdCgpOworICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+
cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKTsKICAgICAgICAgICAgIGlmIChuZXdTdHlsZVNsb3dT
Y3JvbGwpCi0gICAgICAgICAgICAgICAgdmlldygpLT5mcmFtZVZpZXcoKS0+YWRkU2xvd1JlcGFp
bnRPYmplY3QoKTsKKyAgICAgICAgICAgICAgICBmcmFtZVZpZXctPmFkZFNsb3dSZXBhaW50T2Jq
ZWN0KCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIG5ld1N0eWxlSGFzVHJhbnNmb3JtID0g
bmV3U3R5bGUgJiYgKG5ld1N0eWxlLT5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSk7Cisg
ICAgICAgIGlmICghbmV3U3R5bGVIYXNUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIGJvb2wgbmV3
U3R5bGVIYXNGaXhlZFBvc2l0aW9uID0gbmV3U3R5bGUgJiYgKG5ld1N0eWxlLT5wb3NpdGlvbigp
ID09IEZpeGVkUG9zaXRpb24pOworICAgICAgICAgICAgYm9vbCBvbGRTdHlsZUhhc0ZpeGVkUG9z
aXRpb24gPSBtX3N0eWxlICYmIChtX3N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24p
OworCisgICAgICAgICAgICBpZiAob2xkU3R5bGVIYXNGaXhlZFBvc2l0aW9uICE9IG5ld1N0eWxl
SGFzRml4ZWRQb3NpdGlvbikgeworICAgICAgICAgICAgICAgIGlmIChuZXdTdHlsZUhhc0ZpeGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+cmVnaXN0ZXJGaXhlZE9i
amVjdCh0aGlzKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZy
YW1lVmlldy0+dW5yZWdpc3RlckZpeGVkT2JqZWN0KHRoaXMpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAvLyBpZiBwcmV2aW91c2x5IGhhZCBhIGZpeCBwb3NpdGlvbiwg
YnV0IGhhZCBhIHRyYW5zZm9ybSwgd2hpY2ggaGFzIGJlZW4gcmVtb3ZlZAorICAgICAgICAgICAg
ICAgIGJvb2wgb2xkU3R5bGVIYXNUcmFuc2Zvcm0gPSBtX3N0eWxlICYmIChtX3N0eWxlLT5oYXNU
cmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSk7CisgICAgICAgICAgICAgICAgaWYgKG9sZFN0eWxl
SGFzVHJhbnNmb3JtICYmIG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICAgICAgZnJhbWVWaWV3LT5yZWdpc3RlckZpeGVkT2JqZWN0KHRoaXMpOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45996</attachid>
            <date>2010-01-06 14:40:10 -0800</date>
            <delta_ts>2010-01-07 02:51:55 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>9815</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDljNjI1NS4uZTM2YjZiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wMS0wNiAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIFJlbmRlck9iamVjdHMgd2l0aCBmaXhlZCBwb3NpdGlvbiByZWdpc3RlcnMgdG8gdGhl
IHZpZXcKKyAgICAgICAgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50IHdoaWxlIHNjcm9sbGluZy4K
KyAgICAgICAgVGhlIHNjcm9sbGluZyBjb2RlIHVwZGF0ZSBzcGVjaWZpY2FsbHkgdGhvc2UgZWxl
bWVudHMgYWZ0ZXIgYmxpdHRpbmcgdGhlIHBpeGVscy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVnaXN0ZXJGaXhlZE9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVucmVnaXN0ZXJGaXhlZE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmZhc3RTY3JvbGxDb250ZW50cyk6CisgICAg
ICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmZhc3RTY3JvbGxDb250ZW50cyk6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp+UmVuZGVyT2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKToKKwogMjAxMC0w
MS0wNCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IE5pa29sYXMgWmltbWVybWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggNDgzYTIyMC4uZjk4YjUx
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKQEAgLTc5NSw2ICs3OTUsNjcgQEAgdm9pZCBGcmFtZVZpZXc6OnJl
bW92ZVNsb3dSZXBhaW50T2JqZWN0KCkKICAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCF1c2VT
bG93UmVwYWludHMoKSk7CiB9CiAKKwordm9pZCBGcmFtZVZpZXc6OnJlZ2lzdGVyRml4ZWRPYmpl
Y3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgbV9maXhlZE9iamVjdHMuYWRkKG9iamVj
dCk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3Ojp1bnJlZ2lzdGVyRml4ZWRPYmplY3QoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QpCit7CisgICAgbV9maXhlZE9iamVjdHMucmVtb3ZlKG9iamVjdCk7Cit9CisK
K3ZvaWQgRnJhbWVWaWV3OjpmYXN0U2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xs
RGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJl
Y3QpCit7CisgICAgY29uc3QgaW50IGZpeGVkT2JqZWN0TnVtYmVyVGhyZXNob2xkID0gNTsKKwor
ICAgIGlmIChtX2ZpeGVkT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIGhvc3RXaW5kb3coKS0+
c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKyAgICBlbHNlIHsK
KyAgICAgICAgVmVjdG9yPFJlbmRlck9iamVjdCo+IG9iamVjdHNGaXhlZEluVmlld3BvcnQ7Cisg
ICAgICAgIG9iamVjdHNGaXhlZEluVmlld3BvcnQucmVzZXJ2ZUNhcGFjaXR5KG1fZml4ZWRPYmpl
Y3RzLnNpemUoKSk7CisKKyAgICAgICAgYm9vbCB1cGRhdGVJbnZhbGlkU3ViUmVjdCA9IHRydWU7
CisgICAgICAgIC8vIEdldCBhIGxpc3Qgb2YgZml4ZWQgb2JqZWN0cyB0aGF0IGFyZSBub3QgaW4g
dHJhbnNmb3JtYXRpb25zCisgICAgICAgIEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj46OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IG1fZml4ZWRPYmplY3RzLmVuZCgpOworICAgICAgICBIYXNoU2V0PFJlbmRl
ck9iamVjdCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZml4ZWRPYmplY3RzLmJlZ2luKCk7Cisg
ICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFJlbmRlck9iamVj
dCogb2JqID0gKml0OworICAgICAgICAgICAgaWYgKG9iai0+Y29udGFpbmluZ0Jsb2NrKCkgPT0g
b2JqLT52aWV3KCkpIHsKKyAgICAgICAgICAgICAgICBvYmplY3RzRml4ZWRJblZpZXdwb3J0LmFw
cGVuZChvYmopOworICAgICAgICAgICAgICAgIGlmIChvYmplY3RzRml4ZWRJblZpZXdwb3J0LnNp
emUoKSA+IGZpeGVkT2JqZWN0TnVtYmVyVGhyZXNob2xkKSB7CisgICAgICAgICAgICAgICAgICAg
IHVwZGF0ZUludmFsaWRTdWJSZWN0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IC8vIHNjcm9sbCB0aGUgY29udGVudAorICAgICAgICBpZiAodXBkYXRlSW52YWxpZFN1YlJlY3Qp
IHsKKyAgICAgICAgICAgIC8vIDEpIHNjcm9sbAorICAgICAgICAgICAgaG9zdFdpbmRvdygpLT5z
Y3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworCisgICAgICAgICAg
ICAvLyAyKSB1cGRhdGUgdGhlIGFyZWEgb2YgZml4ZWQgb2JqZXRzIHRoYXQgaGFzIGJlZW4gaW52
YWxpZGF0ZWQKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0c0ZpeGVkSW5W
aWV3cG9ydC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIEludFJlY3QgdG9wTGV2ZWxS
ZWN0OworICAgICAgICAgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IChvYmplY3RzRml4ZWRJ
blZpZXdwb3J0W2ldKS0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpOworICAgICAgICAg
ICAgICAgIHVwZGF0ZVJlY3QubW92ZSgtc2Nyb2xsWCgpLCAtc2Nyb2xsWSgpKTsKKyAgICAgICAg
ICAgICAgICBJbnRSZWN0IHNjcm9sbGVkUmVjdCA9IHVwZGF0ZVJlY3Q7CisgICAgICAgICAgICAg
ICAgc2Nyb2xsZWRSZWN0Lm1vdmUoc2Nyb2xsRGVsdGEpOworICAgICAgICAgICAgICAgIHVwZGF0
ZVJlY3QudW5pdGUoc2Nyb2xsZWRSZWN0KTsKKyAgICAgICAgICAgICAgICB1cGRhdGVSZWN0Lmlu
dGVyc2VjdChyZWN0VG9TY3JvbGwpOworICAgICAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+cmVw
YWludCh1cGRhdGVSZWN0LCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyB0aGVyZSBhcmUgdG9vIG1hbnkgZml4ZWQgb2Jq
ZWN0cywgcmVwYWludCBldmVyeXRoaW5nIG1pZ2h0IGJlIGVhc2llcgorICAgICAgICAgICAgSW50
UmVjdCB1cGRhdGVSZWN0ID0gY2xpcFJlY3Q7CisgICAgICAgICAgICB1cGRhdGVSZWN0LmludGVy
c2VjdChyZWN0VG9TY3JvbGwpOworICAgICAgICAgICAgaG9zdFdpbmRvdygpLT5yZXBhaW50KHVw
ZGF0ZVJlY3QsIHRydWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9p
ZCBGcmFtZVZpZXc6OnNldElzT3ZlcmxhcHBlZChib29sIGlzT3ZlcmxhcHBlZCkKIHsKICAgICBp
ZiAoaXNPdmVybGFwcGVkID09IG1faXNPdmVybGFwcGVkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGQ2YjY1OGMu
LjgyNjQ3ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE0NSw2ICsxNDUsMTMgQEAgcHVibGljOgogICAgIHZv
aWQgYWRkU2xvd1JlcGFpbnRPYmplY3QoKTsKICAgICB2b2lkIHJlbW92ZVNsb3dSZXBhaW50T2Jq
ZWN0KCk7CiAKKyAgICAvLyBNZXRob2RzIHRvIG1hbmFnZSB0aGUgb2JqZWN0cyB0aGF0IGFyZSBm
aXhlZAorICAgIC8vIGluIHRoZSB2aWV3IHdoZW4gc2Nyb2xsaW5nCisgICAgdm9pZCByZWdpc3Rl
ckZpeGVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0KTsKKyAgICB2b2lkIHVucmVnaXN0ZXJG
aXhlZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZmFz
dFNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0
JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKwogICAgIHZvaWQgYmVn
aW5EZWZlcnJlZFJlcGFpbnRzKCk7CiAgICAgdm9pZCBlbmREZWZlcnJlZFJlcGFpbnRzKCk7CiAg
ICAgdm9pZCBjaGVja1N0b3BEZWxheWluZ0RlZmVycmVkUmVwYWludHMoKTsKQEAgLTI2Niw2ICsy
NzMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc092ZXJsYXBwZWQ7CiAgICAgYm9vbCBtX2Nv
bnRlbnRJc09wYXF1ZTsKICAgICB1bnNpZ25lZCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQ7Cisg
ICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPiBtX2ZpeGVkT2JqZWN0czsKIAogICAgIGludCBtX2Jv
cmRlclgsIG1fYm9yZGVyWTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggMTM3OTI1Yi4u
OWVhODkzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC01MTQsOCArNTE0LDggQEAgdm9p
ZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkK
ICAgICB9CiAKICAgICBpZiAoY2FuQmxpdE9uU2Nyb2xsKCkgJiYgIXJvb3RQcmV2ZW50c0JsaXR0
aW5nKCkpIHsgLy8gVGhlIG1haW4gZnJhbWUgY2FuIGp1c3QgYmxpdCB0aGUgV2ViVmlldyB3aW5k
b3cKLSAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBibGl0IHN1YmZyYW1lcyB3aXRob3V0
IGJsaXR0aW5nIG92ZXJsYXBwaW5nIGNvbnRlbnQKLSAgICAgICBob3N0V2luZG93KCktPnNjcm9s
bCgtc2Nyb2xsRGVsdGEsIHNjcm9sbFZpZXdSZWN0LCBjbGlwUmVjdCk7CisgICAgICAgIC8vIEZJ
WE1FOiBGaW5kIGEgd2F5IHRvIGJsaXQgc3ViZnJhbWVzIHdpdGhvdXQgYmxpdHRpbmcgb3Zlcmxh
cHBpbmcgY29udGVudAorICAgICAgICBmYXN0U2Nyb2xsQ29udGVudHMoLXNjcm9sbERlbHRhLCBz
Y3JvbGxWaWV3UmVjdCwgY2xpcFJlY3QpOwogICAgIH0gZWxzZSB7IAogICAgICAgIC8vIFdlIG5l
ZWQgdG8gZ28gYWhlYWQgYW5kIHJlcGFpbnQgdGhlIGVudGlyZSBiYWNraW5nIHN0b3JlLiAgRG8g
aXQgbm93IGJlZm9yZSBtb3ZpbmcgdGhlCiAgICAgICAgLy8gd2luZG93ZWQgcGx1Z2lucy4KQEAg
LTUzMCw2ICs1MzAsMTEgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJ
bnRTaXplJiBzY3JvbGxEZWx0YSkKICAgICBob3N0V2luZG93KCktPnBhaW50KCk7CiB9CiAKK3Zv
aWQgU2Nyb2xsVmlldzo6ZmFzdFNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERl
bHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0
KQoreworICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGws
IGNsaXBSZWN0KTsKK30KKwogSW50UG9pbnQgU2Nyb2xsVmlldzo6d2luZG93VG9Db250ZW50cyhj
b25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpIGNvbnN0CiB7CiAgICAgSW50UG9pbnQgdmlld1Bv
aW50ID0gY29udmVydEZyb21Db250YWluaW5nV2luZG93KHdpbmRvd1BvaW50KTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmgKaW5kZXggY2E3MjkwMC4uYzY3NjE5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAg
LTE1MSw2ICsxNTEsOSBAQCBwdWJsaWM6CiAgICAgLy8gU2Nyb2xsIHRoZSBhY3R1YWwgY29udGVu
dHMgb2YgdGhlIHZpZXcgKGVpdGhlciBibGl0dGluZyBvciBpbnZhbGlkYXRpbmcgYXMgbmVlZGVk
KS4KICAgICB2b2lkIHNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKTsK
IAorICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBieSBibGl0dGluZyB0aGUgcGl4ZWxzCisgICAg
dmlydHVhbCB2b2lkIGZhc3RTY3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7
CisKICAgICAvLyBUaGlzIGdpdmVzIHVzIGEgbWVhbnMgb2YgYmxvY2tpbmcgcGFpbnRpbmcgb24g
b3VyIHNjcm9sbGJhcnMgdW50aWwgdGhlIGZpcnN0IGxheW91dCBoYXMgb2NjdXJyZWQuCiAgICAg
dm9pZCBzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZChib29sIHN1cHByZXNzZWQsIGJvb2wgcmVwYWlu
dE9uVW5zdXBwcmVzcyA9IGZhbHNlKTsKICAgICBib29sIHNjcm9sbGJhcnNTdXBwcmVzc2VkKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXJzU3VwcHJlc3NlZDsgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKaW5kZXggNTJhZTYwMi4uZDc4MzQ0NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCkBAIC0yMTYsNiArMjE2LDExIEBAIFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0
KE5vZGUqIG5vZGUpCiAKIFJlbmRlck9iamVjdDo6flJlbmRlck9iamVjdCgpCiB7CisgICAgaWYg
KG1fc3R5bGUgJiYgbV9zdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKSB7CisgICAg
ICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZG9jdW1lbnQoKS0+dmlldygpOworICAgICAgICBp
ZiAoZnJhbWVWaWV3KQorICAgICAgICAgICAgZnJhbWVWaWV3LT51bnJlZ2lzdGVyRml4ZWRPYmpl
Y3QodGhpcyk7CisgICAgfQogICAgIEFTU0VSVCghbm9kZSgpIHx8IGRvY3VtZW50QmVpbmdEZXN0
cm95ZWQoKSB8fCAhZG9jdW1lbnQoKS0+ZnJhbWUoKS0+dmlldygpIHx8IGRvY3VtZW50KCktPmZy
YW1lKCktPnZpZXcoKS0+bGF5b3V0Um9vdCgpICE9IHRoaXMpOwogI2lmbmRlZiBOREVCVUcKICAg
ICBBU1NFUlQoIW1faGFzQVhPYmplY3QpOwpAQCAtMTYzNSwxNiArMTY0MCwzMyBAQCB2b2lkIFJl
bmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBS
ZW5kZXJTdHlsZSogbmV3UwogICAgIH0gZWxzZQogICAgICAgICBzX2FmZmVjdHNQYXJlbnRCbG9j
ayA9IGZhbHNlOwogCi0gICAgaWYgKHZpZXcoKS0+ZnJhbWVWaWV3KCkpIHsKLSAgICAgICAgLy8g
RklYTUU6IEEgYmV0dGVyIHNvbHV0aW9uIHdvdWxkIGJlIHRvIG9ubHkgaW52YWxpZGF0ZSB0aGUg
Zml4ZWQgcmVnaW9ucyB3aGVuIHNjcm9sbGluZy4gIEl0J3Mgb3ZlcmtpbGwgdG8KLSAgICAgICAg
Ly8gcHJldmVudCB0aGUgZW50aXJlIHZpZXcgZnJvbSBibGl0dGluZyBvbiBhIHNjcm9sbC4KLSAg
ICAgICAgYm9vbCBuZXdTdHlsZVNsb3dTY3JvbGwgPSBuZXdTdHlsZSAmJiAobmV3U3R5bGUtPnBv
c2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbiB8fCBuZXdTdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5k
SW1hZ2UoKSk7Ci0gICAgICAgIGJvb2wgb2xkU3R5bGVTbG93U2Nyb2xsID0gbV9zdHlsZSAmJiAo
bV9zdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uIHx8IG1fc3R5bGUtPmhhc0ZpeGVk
QmFja2dyb3VuZEltYWdlKCkpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gdmlldygpLT5m
cmFtZVZpZXcoKTsKKyAgICBpZiAoZnJhbWVWaWV3KSB7CisgICAgICAgIGJvb2wgbmV3U3R5bGVT
bG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgbmV3U3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdl
KCk7CisgICAgICAgIGJvb2wgb2xkU3R5bGVTbG93U2Nyb2xsID0gbV9zdHlsZSAmJiBtX3N0eWxl
LT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpOwogICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Ny
b2xsICE9IG5ld1N0eWxlU2xvd1Njcm9sbCkgewogICAgICAgICAgICAgaWYgKG9sZFN0eWxlU2xv
d1Njcm9sbCkKLSAgICAgICAgICAgICAgICB2aWV3KCktPmZyYW1lVmlldygpLT5yZW1vdmVTbG93
UmVwYWludE9iamVjdCgpOworICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+cmVtb3ZlU2xvd1Jl
cGFpbnRPYmplY3QoKTsKICAgICAgICAgICAgIGlmIChuZXdTdHlsZVNsb3dTY3JvbGwpCi0gICAg
ICAgICAgICAgICAgdmlldygpLT5mcmFtZVZpZXcoKS0+YWRkU2xvd1JlcGFpbnRPYmplY3QoKTsK
KyAgICAgICAgICAgICAgICBmcmFtZVZpZXctPmFkZFNsb3dSZXBhaW50T2JqZWN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBib29sIG5ld1N0eWxlSGFzVHJhbnNmb3JtID0gbmV3U3R5bGUgJiYg
KG5ld1N0eWxlLT5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSk7CisgICAgICAgIGlmICgh
bmV3U3R5bGVIYXNUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIGJvb2wgbmV3U3R5bGVIYXNGaXhl
ZFBvc2l0aW9uID0gbmV3U3R5bGUgJiYgKG5ld1N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9z
aXRpb24pOworICAgICAgICAgICAgYm9vbCBvbGRTdHlsZUhhc0ZpeGVkUG9zaXRpb24gPSBtX3N0
eWxlICYmIChtX3N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pOworCisgICAgICAg
ICAgICBpZiAob2xkU3R5bGVIYXNGaXhlZFBvc2l0aW9uICE9IG5ld1N0eWxlSGFzRml4ZWRQb3Np
dGlvbikgeworICAgICAgICAgICAgICAgIGlmIChuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+cmVnaXN0ZXJGaXhlZE9iamVjdCh0aGlzKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+dW5y
ZWdpc3RlckZpeGVkT2JqZWN0KHRoaXMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAvLyBpZiBwcmV2aW91c2x5IGhhZCBhIGZpeCBwb3NpdGlvbiwgYnV0IGhhZCBhIHRy
YW5zZm9ybSwgd2hpY2ggaGFzIGJlZW4gcmVtb3ZlZAorICAgICAgICAgICAgICAgIGJvb2wgb2xk
U3R5bGVIYXNUcmFuc2Zvcm0gPSBtX3N0eWxlICYmIChtX3N0eWxlLT5oYXNUcmFuc2Zvcm1SZWxh
dGVkUHJvcGVydHkoKSk7CisgICAgICAgICAgICAgICAgaWYgKG9sZFN0eWxlSGFzVHJhbnNmb3Jt
ICYmIG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVW
aWV3LT5yZWdpc3RlckZpeGVkT2JqZWN0KHRoaXMpOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46040</attachid>
            <date>2010-01-07 02:51:55 -0800</date>
            <delta_ts>2010-01-07 05:13:08 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>9864</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDljNjI1NS4uZTM2YjZiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wMS0wNiAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIFJlbmRlck9iamVjdHMgd2l0aCBmaXhlZCBwb3NpdGlvbiByZWdpc3RlcnMgdG8gdGhl
IHZpZXcKKyAgICAgICAgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50IHdoaWxlIHNjcm9sbGluZy4K
KyAgICAgICAgVGhlIHNjcm9sbGluZyBjb2RlIHVwZGF0ZSBzcGVjaWZpY2FsbHkgdGhvc2UgZWxl
bWVudHMgYWZ0ZXIgYmxpdHRpbmcgdGhlIHBpeGVscy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVnaXN0ZXJGaXhlZE9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVucmVnaXN0ZXJGaXhlZE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmZhc3RTY3JvbGxDb250ZW50cyk6CisgICAg
ICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmZhc3RTY3JvbGxDb250ZW50cyk6CisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp+UmVuZGVyT2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKToKKwogMjAxMC0w
MS0wNCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IE5pa29sYXMgWmltbWVybWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggNDgzYTIyMC4uMDViYjFi
MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKQEAgLTc5NSw2ICs3OTUsNjcgQEAgdm9pZCBGcmFtZVZpZXc6OnJl
bW92ZVNsb3dSZXBhaW50T2JqZWN0KCkKICAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCF1c2VT
bG93UmVwYWludHMoKSk7CiB9CiAKKwordm9pZCBGcmFtZVZpZXc6OnJlZ2lzdGVyRml4ZWRPYmpl
Y3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgbV9maXhlZE9iamVjdHMuYWRkKG9iamVj
dCk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3Ojp1bnJlZ2lzdGVyRml4ZWRPYmplY3QoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QpCit7CisgICAgbV9maXhlZE9iamVjdHMucmVtb3ZlKG9iamVjdCk7Cit9CisK
K3ZvaWQgRnJhbWVWaWV3OjpmYXN0U2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xs
RGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJl
Y3QpCit7CisgICAgY29uc3QgaW50IGZpeGVkT2JqZWN0TnVtYmVyVGhyZXNob2xkID0gNTsKKwor
ICAgIGlmIChtX2ZpeGVkT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIGhvc3RXaW5kb3coKS0+
c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKyAgICBlbHNlIHsK
KyAgICAgICAgVmVjdG9yPFJlbmRlck9iamVjdCo+IGZpeGVkT2JqZWN0c0luVmlld3BvcnQ7Cisg
ICAgICAgIGZpeGVkT2JqZWN0c0luVmlld3BvcnQucmVzZXJ2ZUNhcGFjaXR5KG1fZml4ZWRPYmpl
Y3RzLnNpemUoKSk7CisKKyAgICAgICAgYm9vbCB1cGRhdGVJbnZhbGlkU3ViUmVjdCA9IHRydWU7
CisgICAgICAgIC8vIEdldCBhIGxpc3Qgb2YgZml4ZWQgb2JqZWN0cyB0aGF0IGFyZSBub3QgaW4g
dHJhbnNmb3JtYXRpb25zCisgICAgICAgIEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj46OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IG1fZml4ZWRPYmplY3RzLmVuZCgpOworICAgICAgICBIYXNoU2V0PFJlbmRl
ck9iamVjdCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZml4ZWRPYmplY3RzLmJlZ2luKCk7Cisg
ICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFJlbmRlck9iamVj
dCogb2JqID0gKml0OworICAgICAgICAgICAgaWYgKG9iai0+Y29udGFpbmluZ0Jsb2NrKCkgPT0g
b2JqLT52aWV3KCkpIHsKKyAgICAgICAgICAgICAgICBmaXhlZE9iamVjdHNJblZpZXdwb3J0LmFw
cGVuZChvYmopOworICAgICAgICAgICAgICAgIGlmIChmaXhlZE9iamVjdHNJblZpZXdwb3J0LnNp
emUoKSA+IGZpeGVkT2JqZWN0TnVtYmVyVGhyZXNob2xkKSB7CisgICAgICAgICAgICAgICAgICAg
IHVwZGF0ZUludmFsaWRTdWJSZWN0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IC8vIHNjcm9sbCB0aGUgY29udGVudAorICAgICAgICBpZiAodXBkYXRlSW52YWxpZFN1YlJlY3Qp
IHsKKyAgICAgICAgICAgIC8vIDEpIHNjcm9sbAorICAgICAgICAgICAgaG9zdFdpbmRvdygpLT5z
Y3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworCisgICAgICAgICAg
ICAvLyAyKSB1cGRhdGUgdGhlIGFyZWEgb2YgZml4ZWQgb2JqZXRzIHRoYXQgaGFzIGJlZW4gaW52
YWxpZGF0ZWQKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZml4ZWRPYmplY3RzSW5W
aWV3cG9ydC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIEludFJlY3QgdG9wTGV2ZWxS
ZWN0OworICAgICAgICAgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IGZpeGVkT2JqZWN0c0lu
Vmlld3BvcnRbaV0tPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KTsKKyAgICAgICAgICAg
ICAgICB1cGRhdGVSZWN0Lm1vdmUoLXNjcm9sbFgoKSwgLXNjcm9sbFkoKSk7CisgICAgICAgICAg
ICAgICAgSW50UmVjdCBzY3JvbGxlZFJlY3QgPSB1cGRhdGVSZWN0OworICAgICAgICAgICAgICAg
IHNjcm9sbGVkUmVjdC5tb3ZlKHNjcm9sbERlbHRhKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVS
ZWN0LnVuaXRlKHNjcm9sbGVkUmVjdCk7CisgICAgICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRl
cnNlY3QocmVjdFRvU2Nyb2xsKTsKKyAgICAgICAgICAgICAgICBob3N0V2luZG93KCktPnJlcGFp
bnQodXBkYXRlUmVjdCwgdHJ1ZSwgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gdGhlIG51bWJlciBvZiBmaXhlZCBvYmplY3RzIGV4
Y2VlZCB0aGUgdGhyZXNob2xkLCBzbyB3ZSByZXBhaW50IGV2ZXJ5dGhpbmcuCisgICAgICAgICAg
ICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSBjbGlwUmVjdDsKKyAgICAgICAgICAgIHVwZGF0ZVJlY3Qu
aW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CisgICAgICAgICAgICBob3N0V2luZG93KCktPnJlcGFp
bnQodXBkYXRlUmVjdCwgdHJ1ZSwgZmFsc2UsIHRydWUpOworICAgICAgICB9CisgICAgfQorfQor
CiB2b2lkIEZyYW1lVmlldzo6c2V0SXNPdmVybGFwcGVkKGJvb2wgaXNPdmVybGFwcGVkKQogewog
ICAgIGlmIChpc092ZXJsYXBwZWQgPT0gbV9pc092ZXJsYXBwZWQpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggZDZi
NjU4Yy4uYTVlN2FmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBi
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMTQ1LDYgKzE0NSwxMSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRTbG93UmVwYWludE9iamVjdCgpOwogICAgIHZvaWQgcmVtb3ZlU2xvd1JlcGFp
bnRPYmplY3QoKTsKIAorICAgIC8vIE1ldGhvZHMgdG8gbWFuYWdlIHRoZSBvYmplY3RzIHRoYXQg
YXJlIGZpeGVkCisgICAgLy8gaW4gdGhlIHZpZXcgd2hlbiBzY3JvbGxpbmcKKyAgICB2b2lkIHJl
Z2lzdGVyRml4ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpOworICAgIHZvaWQgdW5yZWdp
c3RlckZpeGVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0KTsKKwogICAgIHZvaWQgYmVnaW5E
ZWZlcnJlZFJlcGFpbnRzKCk7CiAgICAgdm9pZCBlbmREZWZlcnJlZFJlcGFpbnRzKCk7CiAgICAg
dm9pZCBjaGVja1N0b3BEZWxheWluZ0RlZmVycmVkUmVwYWludHMoKTsKQEAgLTE5OSw2ICsyMDQs
OSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ZyYW1lVmlld1Njcm9sbENvcm5lcihSZW5kZXJTY3Jv
bGxiYXJQYXJ0KiBzY3JvbGxDb3JuZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29ybmVyID09
IHNjcm9sbENvcm5lcjsgfQogICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lcigpOwogCitw
cm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGZhc3RTY3JvbGxDb250ZW50cyhjb25zdCBJbnRT
aXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRS
ZWN0JiBjbGlwUmVjdCk7CisKIHByaXZhdGU6CiAgICAgRnJhbWVWaWV3KEZyYW1lKik7CiAKQEAg
LTI2Niw2ICsyNzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc092ZXJsYXBwZWQ7CiAgICAg
Ym9vbCBtX2NvbnRlbnRJc09wYXF1ZTsKICAgICB1bnNpZ25lZCBtX3Nsb3dSZXBhaW50T2JqZWN0
Q291bnQ7CisgICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPiBtX2ZpeGVkT2JqZWN0czsKIAogICAg
IGludCBtX2JvcmRlclgsIG1fYm9yZGVyWTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXgg
MTM3OTI1Yi4uOWVhODkzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC01MTQsOCArNTE0
LDggQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBzY3Jv
bGxEZWx0YSkKICAgICB9CiAKICAgICBpZiAoY2FuQmxpdE9uU2Nyb2xsKCkgJiYgIXJvb3RQcmV2
ZW50c0JsaXR0aW5nKCkpIHsgLy8gVGhlIG1haW4gZnJhbWUgY2FuIGp1c3QgYmxpdCB0aGUgV2Vi
VmlldyB3aW5kb3cKLSAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBibGl0IHN1YmZyYW1l
cyB3aXRob3V0IGJsaXR0aW5nIG92ZXJsYXBwaW5nIGNvbnRlbnQKLSAgICAgICBob3N0V2luZG93
KCktPnNjcm9sbCgtc2Nyb2xsRGVsdGEsIHNjcm9sbFZpZXdSZWN0LCBjbGlwUmVjdCk7CisgICAg
ICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGJsaXQgc3ViZnJhbWVzIHdpdGhvdXQgYmxpdHRp
bmcgb3ZlcmxhcHBpbmcgY29udGVudAorICAgICAgICBmYXN0U2Nyb2xsQ29udGVudHMoLXNjcm9s
bERlbHRhLCBzY3JvbGxWaWV3UmVjdCwgY2xpcFJlY3QpOwogICAgIH0gZWxzZSB7IAogICAgICAg
IC8vIFdlIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJlcGFpbnQgdGhlIGVudGlyZSBiYWNraW5nIHN0
b3JlLiAgRG8gaXQgbm93IGJlZm9yZSBtb3ZpbmcgdGhlCiAgICAgICAgLy8gd2luZG93ZWQgcGx1
Z2lucy4KQEAgLTUzMCw2ICs1MzAsMTEgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50
cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKICAgICBob3N0V2luZG93KCktPnBhaW50KCk7
CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6ZmFzdFNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3Qm
IGNsaXBSZWN0KQoreworICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0
VG9TY3JvbGwsIGNsaXBSZWN0KTsKK30KKwogSW50UG9pbnQgU2Nyb2xsVmlldzo6d2luZG93VG9D
b250ZW50cyhjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpIGNvbnN0CiB7CiAgICAgSW50UG9p
bnQgdmlld1BvaW50ID0gY29udmVydEZyb21Db250YWluaW5nV2luZG93KHdpbmRvd1BvaW50KTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggY2E3MjkwMC4uYmUwMTUyMiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgKQEAgLTI0OSw2ICsyNDksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgSW50UmVjdCBzY3JvbGxD
b3JuZXJSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbENvcm5lcigp
OwogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKKworICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBi
eSBibGl0dGluZyB0aGUgcGl4ZWxzCisgICAgdmlydHVhbCB2b2lkIGZhc3RTY3JvbGxDb250ZW50
cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xs
LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgCiBwcml2YXRlOgogICAgIFJlZlB0cjxT
Y3JvbGxiYXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDUyYWU2MDIuLmQ3ODM0NDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cApAQCAtMjE2LDYgKzIxNiwxMSBAQCBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdChOb2RlKiBu
b2RlKQogCiBSZW5kZXJPYmplY3Q6On5SZW5kZXJPYmplY3QoKQogeworICAgIGlmIChtX3N0eWxl
ICYmIG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikgeworICAgICAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IGRvY3VtZW50KCktPnZpZXcoKTsKKyAgICAgICAgaWYgKGZyYW1l
VmlldykKKyAgICAgICAgICAgIGZyYW1lVmlldy0+dW5yZWdpc3RlckZpeGVkT2JqZWN0KHRoaXMp
OworICAgIH0KICAgICBBU1NFUlQoIW5vZGUoKSB8fCBkb2N1bWVudEJlaW5nRGVzdHJveWVkKCkg
fHwgIWRvY3VtZW50KCktPmZyYW1lKCktPnZpZXcoKSB8fCBkb2N1bWVudCgpLT5mcmFtZSgpLT52
aWV3KCktPmxheW91dFJvb3QoKSAhPSB0aGlzKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJU
KCFtX2hhc0FYT2JqZWN0KTsKQEAgLTE2MzUsMTYgKzE2NDAsMzMgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5
bGUqIG5ld1MKICAgICB9IGVsc2UKICAgICAgICAgc19hZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxz
ZTsKIAotICAgIGlmICh2aWV3KCktPmZyYW1lVmlldygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBB
IGJldHRlciBzb2x1dGlvbiB3b3VsZCBiZSB0byBvbmx5IGludmFsaWRhdGUgdGhlIGZpeGVkIHJl
Z2lvbnMgd2hlbiBzY3JvbGxpbmcuICBJdCdzIG92ZXJraWxsIHRvCi0gICAgICAgIC8vIHByZXZl
bnQgdGhlIGVudGlyZSB2aWV3IGZyb20gYmxpdHRpbmcgb24gYSBzY3JvbGwuCi0gICAgICAgIGJv
b2wgbmV3U3R5bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgKG5ld1N0eWxlLT5wb3NpdGlvbigp
ID09IEZpeGVkUG9zaXRpb24gfHwgbmV3U3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkp
OwotICAgICAgICBib29sIG9sZFN0eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYgKG1fc3R5bGUt
PnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbiB8fCBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91
bmRJbWFnZSgpKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHZpZXcoKS0+ZnJhbWVWaWV3
KCk7CisgICAgaWYgKGZyYW1lVmlldykgeworICAgICAgICBib29sIG5ld1N0eWxlU2xvd1Njcm9s
bCA9IG5ld1N0eWxlICYmIG5ld1N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpOworICAg
ICAgICBib29sIG9sZFN0eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYgbV9zdHlsZS0+aGFzRml4
ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9sbCAhPSBu
ZXdTdHlsZVNsb3dTY3JvbGwpIHsKICAgICAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwp
Ci0gICAgICAgICAgICAgICAgdmlldygpLT5mcmFtZVZpZXcoKS0+cmVtb3ZlU2xvd1JlcGFpbnRP
YmplY3QoKTsKKyAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnJlbW92ZVNsb3dSZXBhaW50T2Jq
ZWN0KCk7CiAgICAgICAgICAgICBpZiAobmV3U3R5bGVTbG93U2Nyb2xsKQotICAgICAgICAgICAg
ICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPmFkZFNsb3dSZXBhaW50T2JqZWN0KCk7CisgICAgICAg
ICAgICAgICAgZnJhbWVWaWV3LT5hZGRTbG93UmVwYWludE9iamVjdCgpOworICAgICAgICB9CisK
KyAgICAgICAgYm9vbCBuZXdTdHlsZUhhc1RyYW5zZm9ybSA9IG5ld1N0eWxlICYmIChuZXdTdHls
ZS0+aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpOworICAgICAgICBpZiAoIW5ld1N0eWxl
SGFzVHJhbnNmb3JtKSB7CisgICAgICAgICAgICBib29sIG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlv
biA9IG5ld1N0eWxlICYmIChuZXdTdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGJvb2wgb2xkU3R5bGVIYXNGaXhlZFBvc2l0aW9uID0gbV9zdHlsZSAmJiAo
bV9zdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKTsKKworICAgICAgICAgICAgaWYg
KG9sZFN0eWxlSGFzRml4ZWRQb3NpdGlvbiAhPSBuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24pIHsK
KyAgICAgICAgICAgICAgICBpZiAobmV3U3R5bGVIYXNGaXhlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgICAgICBmcmFtZVZpZXctPnJlZ2lzdGVyRml4ZWRPYmplY3QodGhpcyk7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnVucmVnaXN0ZXJG
aXhlZE9iamVjdCh0aGlzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
Ly8gaWYgcHJldmlvdXNseSBoYWQgYSBmaXggcG9zaXRpb24sIGJ1dCBoYWQgYSB0cmFuc2Zvcm0s
IHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQKKyAgICAgICAgICAgICAgICBib29sIG9sZFN0eWxlSGFz
VHJhbnNmb3JtID0gbV9zdHlsZSAmJiAobV9zdHlsZS0+aGFzVHJhbnNmb3JtUmVsYXRlZFByb3Bl
cnR5KCkpOworICAgICAgICAgICAgICAgIGlmIChvbGRTdHlsZUhhc1RyYW5zZm9ybSAmJiBuZXdT
dHlsZUhhc0ZpeGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+cmVn
aXN0ZXJGaXhlZE9iamVjdCh0aGlzKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46047</attachid>
            <date>2010-01-07 05:13:08 -0800</date>
            <delta_ts>2010-01-20 01:20:49 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>9902</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTAyMjE2OS4uYzU2ZDkxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wMS0wNyAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIFJlbmRlck9iamVjdHMgd2l0aCBmaXhlZCBwb3NpdGlvbiByZWdpc3RlcnMgdG8gdGhl
IHZpZXcKKyAgICAgICAgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50IHdoaWxlIHNjcm9sbGluZy4K
KyAgICAgICAgVGhlIHNjcm9sbGluZyBjb2RlIHVwZGF0ZSBzcGVjaWZpY2FsbHkgdGhvc2UgZWxl
bWVudHMgYWZ0ZXIgYmxpdHRpbmcgdGhlIHBpeGVscy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVnaXN0ZXJGaXhlZE9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVucmVnaXN0ZXJGaXhlZE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6On5SZW5kZXJPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UpOgor
CiAyMDEwLTAxLTA3ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMmNjZDBkMi4u
N2YxYTc4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTgxMyw2ICs4MTMsNjcgQEAgdm9pZCBGcmFtZVZp
ZXc6OnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KCkKICAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xs
KCF1c2VTbG93UmVwYWludHMoKSk7CiB9CiAKKwordm9pZCBGcmFtZVZpZXc6OnJlZ2lzdGVyRml4
ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgbV9maXhlZE9iamVjdHMuYWRk
KG9iamVjdCk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3Ojp1bnJlZ2lzdGVyRml4ZWRPYmplY3QoUmVu
ZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgbV9maXhlZE9iamVjdHMucmVtb3ZlKG9iamVjdCk7
Cit9CisKK3ZvaWQgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNp
emUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJl
Y3QmIGNsaXBSZWN0KQoreworICAgIGNvbnN0IGludCBmaXhlZE9iamVjdE51bWJlclRocmVzaG9s
ZCA9IDU7CisKKyAgICBpZiAobV9maXhlZE9iamVjdHMuaXNFbXB0eSgpKQorICAgICAgICBob3N0
V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7Cisg
ICAgZWxzZSB7CisgICAgICAgIFZlY3RvcjxSZW5kZXJPYmplY3QqPiBmaXhlZE9iamVjdHNJblZp
ZXdwb3J0OworICAgICAgICBmaXhlZE9iamVjdHNJblZpZXdwb3J0LnJlc2VydmVDYXBhY2l0eSht
X2ZpeGVkT2JqZWN0cy5zaXplKCkpOworCisgICAgICAgIGJvb2wgdXBkYXRlSW52YWxpZGF0ZWRT
dWJSZWN0ID0gdHJ1ZTsKKyAgICAgICAgLy8gR2V0IGEgbGlzdCBvZiBmaXhlZCBvYmplY3RzIHRo
YXQgYXJlIG5vdCBpbiB0cmFuc2Zvcm1hdGlvbnMKKyAgICAgICAgSGFzaFNldDxSZW5kZXJPYmpl
Y3QqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9maXhlZE9iamVjdHMuZW5kKCk7CisgICAgICAg
IEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9maXhlZE9iamVj
dHMuYmVnaW4oKTsKKyAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAg
ICAgUmVuZGVyT2JqZWN0KiBvYmogPSAqaXQ7CisgICAgICAgICAgICBpZiAob2JqLT5jb250YWlu
aW5nQmxvY2soKSA9PSBvYmotPnZpZXcoKSkgeworICAgICAgICAgICAgICAgIGZpeGVkT2JqZWN0
c0luVmlld3BvcnQuYXBwZW5kKG9iaik7CisgICAgICAgICAgICAgICAgaWYgKGZpeGVkT2JqZWN0
c0luVmlld3BvcnQuc2l6ZSgpID4gZml4ZWRPYmplY3ROdW1iZXJUaHJlc2hvbGQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdXBkYXRlSW52YWxpZGF0ZWRTdWJSZWN0ID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIC8vIHNjcm9sbCB0aGUgY29udGVudAorICAgICAgICBpZiAodXBk
YXRlSW52YWxpZGF0ZWRTdWJSZWN0KSB7CisgICAgICAgICAgICAvLyAxKSBzY3JvbGwKKyAgICAg
ICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNs
aXBSZWN0KTsKKworICAgICAgICAgICAgLy8gMikgdXBkYXRlIHRoZSBhcmVhIG9mIGZpeGVkIG9i
amV0cyB0aGF0IGhhcyBiZWVuIGludmFsaWRhdGVkCisgICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGZpeGVkT2JqZWN0c0luVmlld3BvcnQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICBJbnRSZWN0IHRvcExldmVsUmVjdDsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHVwZGF0
ZVJlY3QgPSBmaXhlZE9iamVjdHNJblZpZXdwb3J0W2ldLT5wYWludGluZ1Jvb3RSZWN0KHRvcExl
dmVsUmVjdCk7CisgICAgICAgICAgICAgICAgdXBkYXRlUmVjdC5tb3ZlKC1zY3JvbGxYKCksIC1z
Y3JvbGxZKCkpOworICAgICAgICAgICAgICAgIEludFJlY3Qgc2Nyb2xsZWRSZWN0ID0gdXBkYXRl
UmVjdDsKKyAgICAgICAgICAgICAgICBzY3JvbGxlZFJlY3QubW92ZShzY3JvbGxEZWx0YSk7Cisg
ICAgICAgICAgICAgICAgdXBkYXRlUmVjdC51bml0ZShzY3JvbGxlZFJlY3QpOworICAgICAgICAg
ICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CisgICAgICAgICAgICAg
ICAgaG9zdFdpbmRvdygpLT5yZXBhaW50KHVwZGF0ZVJlY3QsIHRydWUsIGZhbHNlLCB0cnVlKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIHRoZSBudW1i
ZXIgb2YgZml4ZWQgb2JqZWN0cyBleGNlZWQgdGhlIHRocmVzaG9sZCwgc28gd2UgcmVwYWludCBl
dmVyeXRoaW5nLgorICAgICAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gY2xpcFJlY3Q7Cisg
ICAgICAgICAgICB1cGRhdGVSZWN0LmludGVyc2VjdChyZWN0VG9TY3JvbGwpOworICAgICAgICAg
ICAgaG9zdFdpbmRvdygpLT5yZXBhaW50KHVwZGF0ZVJlY3QsIHRydWUsIGZhbHNlLCB0cnVlKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBGcmFtZVZpZXc6OnNldElzT3ZlcmxhcHBlZChi
b29sIGlzT3ZlcmxhcHBlZCkKIHsKICAgICBpZiAoaXNPdmVybGFwcGVkID09IG1faXNPdmVybGFw
cGVkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCmluZGV4IGQ2YjY1OGMuLmM2NzI0ZjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE0NSw2
ICsxNDUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgYWRkU2xvd1JlcGFpbnRPYmplY3QoKTsKICAg
ICB2b2lkIHJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KCk7CiAKKyAgICAvLyBNZXRob2RzIHRvIG1h
bmFnZSB0aGUgb2JqZWN0cyB0aGF0IGFyZSBmaXhlZAorICAgIC8vIGluIHRoZSB2aWV3IHdoZW4g
c2Nyb2xsaW5nCisgICAgdm9pZCByZWdpc3RlckZpeGVkT2JqZWN0KFJlbmRlck9iamVjdCogb2Jq
ZWN0KTsKKyAgICB2b2lkIHVucmVnaXN0ZXJGaXhlZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVj
dCk7CisKICAgICB2b2lkIGJlZ2luRGVmZXJyZWRSZXBhaW50cygpOwogICAgIHZvaWQgZW5kRGVm
ZXJyZWRSZXBhaW50cygpOwogICAgIHZvaWQgY2hlY2tTdG9wRGVsYXlpbmdEZWZlcnJlZFJlcGFp
bnRzKCk7CkBAIC0xOTksNiArMjA0LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNGcmFtZVZpZXdT
Y3JvbGxDb3JuZXIoUmVuZGVyU2Nyb2xsYmFyUGFydCogc2Nyb2xsQ29ybmVyKSBjb25zdCB7IHJl
dHVybiBtX3Njcm9sbENvcm5lciA9PSBzY3JvbGxDb3JuZXI7IH0KICAgICB2b2lkIGludmFsaWRh
dGVTY3JvbGxDb3JuZXIoKTsKIAorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxD
b250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0
JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKwogcHJpdmF0ZToKICAg
ICBGcmFtZVZpZXcoRnJhbWUqKTsKIApAQCAtMjY2LDYgKzI3NCw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2lzT3ZlcmxhcHBlZDsKICAgICBib29sIG1fY29udGVudElzT3BhcXVlOwogICAgIHVu
c2lnbmVkIG1fc2xvd1JlcGFpbnRPYmplY3RDb3VudDsKKyAgICBIYXNoU2V0PFJlbmRlck9iamVj
dCo+IG1fZml4ZWRPYmplY3RzOwogCiAgICAgaW50IG1fYm9yZGVyWCwgbV9ib3JkZXJZOwogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCAxMzc5MjViLi4wNGI2NDRlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5jcHAKQEAgLTUxNCw4ICs1MTQsOCBAQCB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENv
bnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQogICAgIH0KIAogICAgIGlmIChjYW5C
bGl0T25TY3JvbGwoKSAmJiAhcm9vdFByZXZlbnRzQmxpdHRpbmcoKSkgeyAvLyBUaGUgbWFpbiBm
cmFtZSBjYW4ganVzdCBibGl0IHRoZSBXZWJWaWV3IHdpbmRvdwotICAgICAgIC8vIEZJWE1FOiBG
aW5kIGEgd2F5IHRvIGJsaXQgc3ViZnJhbWVzIHdpdGhvdXQgYmxpdHRpbmcgb3ZlcmxhcHBpbmcg
Y29udGVudAotICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKC1zY3JvbGxEZWx0YSwgc2Nyb2xs
Vmlld1JlY3QsIGNsaXBSZWN0KTsKKyAgICAgICAgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gYmxp
dCBzdWJmcmFtZXMgd2l0aG91dCBibGl0dGluZyBvdmVybGFwcGluZyBjb250ZW50CisgICAgICAg
IHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoLXNjcm9sbERlbHRhLCBzY3JvbGxWaWV3UmVjdCwgY2xp
cFJlY3QpOwogICAgIH0gZWxzZSB7IAogICAgICAgIC8vIFdlIG5lZWQgdG8gZ28gYWhlYWQgYW5k
IHJlcGFpbnQgdGhlIGVudGlyZSBiYWNraW5nIHN0b3JlLiAgRG8gaXQgbm93IGJlZm9yZSBtb3Zp
bmcgdGhlCiAgICAgICAgLy8gd2luZG93ZWQgcGx1Z2lucy4KQEAgLTUzMCw2ICs1MzAsMTEgQEAg
dm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSkKICAgICBob3N0V2luZG93KCktPnBhaW50KCk7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6c2Ny
b2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50
UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBob3N0
V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7Cit9
CisKIEludFBvaW50IFNjcm9sbFZpZXc6OndpbmRvd1RvQ29udGVudHMoY29uc3QgSW50UG9pbnQm
IHdpbmRvd1BvaW50KSBjb25zdAogewogICAgIEludFBvaW50IHZpZXdQb2ludCA9IGNvbnZlcnRG
cm9tQ29udGFpbmluZ1dpbmRvdyh3aW5kb3dQb2ludCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4
IGNhNzI5MDAuLmUzM2JlZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC0yNDksNiArMjQ5LDkg
QEAgcHJvdGVjdGVkOgogICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVj
dCk7CisKKyAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgYmxpdHRpbmcgdGhlIHBpeGVscwor
ICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0KTsKICAgICAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9ob3Jpem9u
dGFsU2Nyb2xsYmFyOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggOTg4Nzg2OS4u
MjcxYWE1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yMTYsNiArMjE2LDEx
IEBAIFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0KE5vZGUqIG5vZGUpCiAKIFJlbmRlck9iamVj
dDo6flJlbmRlck9iamVjdCgpCiB7CisgICAgaWYgKG1fc3R5bGUgJiYgbV9zdHlsZS0+cG9zaXRp
b24oKSA9PSBGaXhlZFBvc2l0aW9uKSB7CisgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
ZG9jdW1lbnQoKS0+dmlldygpOworICAgICAgICBpZiAoZnJhbWVWaWV3KQorICAgICAgICAgICAg
ZnJhbWVWaWV3LT51bnJlZ2lzdGVyRml4ZWRPYmplY3QodGhpcyk7CisgICAgfQogICAgIEFTU0VS
VCghbm9kZSgpIHx8IGRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSB8fCAhZG9jdW1lbnQoKS0+ZnJh
bWUoKS0+dmlldygpIHx8IGRvY3VtZW50KCktPmZyYW1lKCktPnZpZXcoKS0+bGF5b3V0Um9vdCgp
ICE9IHRoaXMpOwogI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoIW1faGFzQVhPYmplY3QpOwpA
QCAtMTY1MiwxNiArMTY1NywzMyBAQCB2b2lkIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3UwogICAgIH0gZWxz
ZQogICAgICAgICBzX2FmZmVjdHNQYXJlbnRCbG9jayA9IGZhbHNlOwogCi0gICAgaWYgKHZpZXco
KS0+ZnJhbWVWaWV3KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IEEgYmV0dGVyIHNvbHV0aW9uIHdv
dWxkIGJlIHRvIG9ubHkgaW52YWxpZGF0ZSB0aGUgZml4ZWQgcmVnaW9ucyB3aGVuIHNjcm9sbGlu
Zy4gIEl0J3Mgb3ZlcmtpbGwgdG8KLSAgICAgICAgLy8gcHJldmVudCB0aGUgZW50aXJlIHZpZXcg
ZnJvbSBibGl0dGluZyBvbiBhIHNjcm9sbC4KLSAgICAgICAgYm9vbCBuZXdTdHlsZVNsb3dTY3Jv
bGwgPSBuZXdTdHlsZSAmJiAobmV3U3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbiB8
fCBuZXdTdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSk7Ci0gICAgICAgIGJvb2wgb2xk
U3R5bGVTbG93U2Nyb2xsID0gbV9zdHlsZSAmJiAobV9zdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhl
ZFBvc2l0aW9uIHx8IG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkpOworICAgIEZy
YW1lVmlldyogZnJhbWVWaWV3ID0gdmlldygpLT5mcmFtZVZpZXcoKTsKKyAgICBpZiAoZnJhbWVW
aWV3KSB7CisgICAgICAgIGJvb2wgbmV3U3R5bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgbmV3
U3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCk7CisgICAgICAgIGJvb2wgb2xkU3R5bGVT
bG93U2Nyb2xsID0gbV9zdHlsZSAmJiBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgp
OwogICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsICE9IG5ld1N0eWxlU2xvd1Njcm9sbCkg
ewogICAgICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9sbCkKLSAgICAgICAgICAgICAgICB2
aWV3KCktPmZyYW1lVmlldygpLT5yZW1vdmVTbG93UmVwYWludE9iamVjdCgpOworICAgICAgICAg
ICAgICAgIGZyYW1lVmlldy0+cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKTsKICAgICAgICAgICAg
IGlmIChuZXdTdHlsZVNsb3dTY3JvbGwpCi0gICAgICAgICAgICAgICAgdmlldygpLT5mcmFtZVZp
ZXcoKS0+YWRkU2xvd1JlcGFpbnRPYmplY3QoKTsKKyAgICAgICAgICAgICAgICBmcmFtZVZpZXct
PmFkZFNsb3dSZXBhaW50T2JqZWN0KCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIG5ld1N0
eWxlSGFzVHJhbnNmb3JtID0gbmV3U3R5bGUgJiYgKG5ld1N0eWxlLT5oYXNUcmFuc2Zvcm1SZWxh
dGVkUHJvcGVydHkoKSk7CisgICAgICAgIGlmICghbmV3U3R5bGVIYXNUcmFuc2Zvcm0pIHsKKyAg
ICAgICAgICAgIGJvb2wgbmV3U3R5bGVIYXNGaXhlZFBvc2l0aW9uID0gbmV3U3R5bGUgJiYgKG5l
d1N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pOworICAgICAgICAgICAgYm9vbCBv
bGRTdHlsZUhhc0ZpeGVkUG9zaXRpb24gPSBtX3N0eWxlICYmIChtX3N0eWxlLT5wb3NpdGlvbigp
ID09IEZpeGVkUG9zaXRpb24pOworCisgICAgICAgICAgICBpZiAob2xkU3R5bGVIYXNGaXhlZFBv
c2l0aW9uICE9IG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlvbikgeworICAgICAgICAgICAgICAgIGlm
IChuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgICAgIGZyYW1lVmll
dy0+cmVnaXN0ZXJGaXhlZE9iamVjdCh0aGlzKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+dW5yZWdpc3RlckZpeGVkT2JqZWN0KHRoaXMpOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBpZiBwcmV2aW91c2x5IGhh
ZCBhIGZpeCBwb3NpdGlvbiwgYnV0IGhhZCBhIHRyYW5zZm9ybSwgd2hpY2ggaGFzIGJlZW4gcmVt
b3ZlZAorICAgICAgICAgICAgICAgIGJvb2wgb2xkU3R5bGVIYXNUcmFuc2Zvcm0gPSBtX3N0eWxl
ICYmIChtX3N0eWxlLT5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSk7CisgICAgICAgICAg
ICAgICAgaWYgKG9sZFN0eWxlSGFzVHJhbnNmb3JtICYmIG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5yZWdpc3RlckZpeGVkT2JqZWN0KHRo
aXMpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46990</attachid>
            <date>2010-01-20 01:20:49 -0800</date>
            <delta_ts>2010-01-20 03:11:23 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed2_multilayer_notworking.patch</filename>
            <type>text/plain</type>
            <size>10773</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDljNjI1NS4uMzhjOTdiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wMS0wNCAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIFJlbmRlck9iamVjdHMgd2l0aCBmaXhlZCBwb3NpdGlvbiByZWdpc3RlcnMgdG8gdGhl
IHZpZXcKKyAgICAgICAgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50IHdoaWxlIHNjcm9sbGluZy4K
KyAgICAgICAgVGhlIHNjcm9sbGluZyBjb2RlIHVwZGF0ZSBzcGVjaWZpY2FsbHkgdGhvc2UgZWxl
bWVudHMgYWZ0ZXIgYmxpdHRpbmcgdGhlIHBpeGVscy4KKworICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cmVnaXN0ZXJGaXhl
ZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1bnJlZ2lzdGVyRml4ZWRP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6flJlbmRlck9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZSk6
CisKIDIwMTAtMDEtMDQgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDQ4M2Ey
MjAuLjkxN2JmNjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBi
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC03OTUsNiArNzk1LDEwMiBAQCB2b2lkIEZy
YW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKQogICAgICAgICBzZXRDYW5CbGl0T25T
Y3JvbGwoIXVzZVNsb3dSZXBhaW50cygpKTsKIH0KIAorCit2b2lkIEZyYW1lVmlldzo6cmVnaXN0
ZXJGaXhlZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBtX2ZpeGVkT2JqZWN0
cy5hZGQob2JqZWN0KTsKK30KKwordm9pZCBGcmFtZVZpZXc6OnVucmVnaXN0ZXJGaXhlZE9iamVj
dChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBtX2ZpeGVkT2JqZWN0cy5yZW1vdmUob2Jq
ZWN0KTsKK30KKworaW5saW5lIHN0YXRpYyBJbnRSZWN0IHVuaXRlVG9TY3JvbGxlZChjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKK3sKKyAgICBJbnRSZWN0
IG9yaWdpbmFsUmVjdCA9IHJlY3Q7CisgICAgSW50UmVjdCBzY3JvbGxlZFJlY3QgPSBvcmlnaW5h
bFJlY3Q7CisgICAgc2Nyb2xsZWRSZWN0Lm1vdmUoc2Nyb2xsRGVsdGEpOworICAgIG9yaWdpbmFs
UmVjdC51bml0ZShzY3JvbGxlZFJlY3QpOworICAgIHJldHVybiBvcmlnaW5hbFJlY3Q7Cit9CisK
K2Jvb2wgZ2V0TGF5ZXJIaWVyYXJjaHlSZWN0KFJlbmRlckxheWVyKiBsYXllciwgVmVjdG9yPElu
dFJlY3Q+ICZyZWN0cykKK3sKKyAgICAvLyBMaW1pdCB0byB0aGUgbnVtYmVyIG9mIGZpeGVkIHJl
Y3QgYmVmb3JlIGRvaW5nIGEgZnVsbCB1cGRhdGUKKyAgICBjb25zdCBpbnQgZml4ZWRPYmplY3RO
dW1iZXJUaHJlc2hvbGQgPSA1OworCisgICAgaWYgKHJlY3RzLnNpemUoKSA9PSBmaXhlZE9iamVj
dE51bWJlclRocmVzaG9sZCkgeworICAgICAgICBwcmludGYoInRvbyBtYW55IG9iamVjdHM6ICVk
IiwgcmVjdHMuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIElu
dFJlY3QgbXlSZWN0ID0gbGF5ZXItPmFic29sdXRlQm91bmRpbmdCb3goKTsKKyAgICBwcmludGYo
Im15UmVjdCB4ID0gJWQsIHkgPSAlZCwgd2lkdGggPSAlZCwgaGVpZ2h0ID0gJWRcbiIsCisgICAg
ICAgICAgIG15UmVjdC54KCksCisgICAgICAgICAgIG15UmVjdC55KCksCisgICAgICAgICAgIG15
UmVjdC53aWR0aCgpLAorICAgICAgICAgICBteVJlY3QuaGVpZ2h0KCkpOworICAgIGJvb2wgcmVj
dEluc2lkZUFub3RoZXJVcGRhdGVkUmVjdCA9IGZhbHNlOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcHJpbnRmKCJpID0gJWQsIHJlY3RzW2ld
LmNvbnRhaW5zKG15UmVjdCkgPSAlZFxuIiwgaSwgcmVjdHNbaV0uY29udGFpbnMobXlSZWN0KSk7
CisgICAgICAgIGlmIChyZWN0c1tpXS5jb250YWlucyhteVJlY3QpKSB7CisgICAgICAgICAgICBy
ZWN0SW5zaWRlQW5vdGhlclVwZGF0ZWRSZWN0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorICAgIGlmICghcmVjdEluc2lkZUFub3RoZXJVcGRhdGVkUmVjdCkK
KyAgICAgICAgcmVjdHMuYXBwZW5kKG15UmVjdCk7CisKKyAgICBpZiAoIWxheWVyLT5maXJzdENo
aWxkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgZm9yIChSZW5kZXJMYXllciogY2hp
bGQgPSBsYXllci0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxp
bmcoKSkgeworICAgICAgICBpZiAoIWdldExheWVySGllcmFyY2h5UmVjdChjaGlsZCwgcmVjdHMp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBGcmFtZVZpZXc6OmZhc3RTY3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBzY3Jv
bGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlw
UmVjdCkKK3sKKyAgICBpZiAobV9maXhlZE9iamVjdHMuaXNFbXB0eSgpKQorICAgICAgICBob3N0
V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7Cisg
ICAgZWxzZSB7CisgICAgICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0c0ZpeGVkSW5WaWV3cG9ydDsK
KyAgICAgICAgcmVjdHNGaXhlZEluVmlld3BvcnQucmVzZXJ2ZUNhcGFjaXR5KG1fZml4ZWRPYmpl
Y3RzLnNpemUoKSk7CisgICAgICAgIEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj46OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IG1fZml4ZWRPYmplY3RzLmVuZCgpOworICAgICAgICBIYXNoU2V0PFJlbmRlck9i
amVjdCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZml4ZWRPYmplY3RzLmJlZ2luKCk7CisKKyAg
ICAgICAgYm9vbCB1cGRhdGVJbnZhbGlkU3ViUmVjdCA9IHRydWU7CisgICAgICAgIC8vIG91dGVy
IGxvb3Agb3ZlciB0aGUgUmVuZGVyT2JqZWN0cyB3aXRoIGZpeGVkIHBvc2l0aW9uaW5nCisgICAg
ICAgIGZvciAoOyBpdCAhPSBlbmQgJiYgdXBkYXRlSW52YWxpZFN1YlJlY3Q7ICsraXQpIHsKKyAg
ICAgICAgICAgIFJlbmRlck9iamVjdCAqb2JqID0gKml0OworICAgICAgICAgICAgaWYgKG9iai0+
Y29udGFpbmluZ0Jsb2NrKCkgPT0gb2JqLT52aWV3KCkpIHsKKyAgICAgICAgICAgICAgICB1cGRh
dGVJbnZhbGlkU3ViUmVjdCA9IGdldExheWVySGllcmFyY2h5UmVjdChvYmotPmVuY2xvc2luZ0xh
eWVyKCksIHJlY3RzRml4ZWRJblZpZXdwb3J0KTsKKyAgICAgICAgICAgICAgICBwcmludGYoIi0t
LS0tLS0tLVxuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAodXBk
YXRlSW52YWxpZFN1YlJlY3QpIHsKKyAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNj
cm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKworICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCByZWN0c0ZpeGVkSW5WaWV3cG9ydC5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IHVuaXRlVG9TY3JvbGxlZChyZWN0c0ZpeGVk
SW5WaWV3cG9ydFtpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2Nyb2xsRGVsdGEpOworICAgICAgICAgICAgICAgIHVwZGF0ZVJlY3QubW92
ZSgtc2Nyb2xsWCgpLCAtc2Nyb2xsWSgpKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVSZWN0Lmlu
dGVyc2VjdChyZWN0VG9TY3JvbGwpOworICAgICAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+cmVw
YWludCh1cGRhdGVSZWN0LCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyB0aGVyZSBhcmUgdG9vIG1hbnkgZml4ZWQgb2Jq
ZWN0cywgcmVwYWludCBldmVyeXRoaW5nIG1pZ2h0IGJlIGVhc2llcgorICAgICAgICAgICAgSW50
UmVjdCB1cGRhdGVSZWN0ID0gY2xpcFJlY3Q7CisgICAgICAgICAgICB1cGRhdGVSZWN0LmludGVy
c2VjdChyZWN0VG9TY3JvbGwpOworICAgICAgICAgICAgaG9zdFdpbmRvdygpLT5yZXBhaW50KHVw
ZGF0ZVJlY3QsIHRydWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9p
ZCBGcmFtZVZpZXc6OnNldElzT3ZlcmxhcHBlZChib29sIGlzT3ZlcmxhcHBlZCkKIHsKICAgICBp
ZiAoaXNPdmVybGFwcGVkID09IG1faXNPdmVybGFwcGVkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGQ2YjY1OGMu
LjgyNjQ3ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE0NSw2ICsxNDUsMTMgQEAgcHVibGljOgogICAgIHZv
aWQgYWRkU2xvd1JlcGFpbnRPYmplY3QoKTsKICAgICB2b2lkIHJlbW92ZVNsb3dSZXBhaW50T2Jq
ZWN0KCk7CiAKKyAgICAvLyBNZXRob2RzIHRvIG1hbmFnZSB0aGUgb2JqZWN0cyB0aGF0IGFyZSBm
aXhlZAorICAgIC8vIGluIHRoZSB2aWV3IHdoZW4gc2Nyb2xsaW5nCisgICAgdm9pZCByZWdpc3Rl
ckZpeGVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0KTsKKyAgICB2b2lkIHVucmVnaXN0ZXJG
aXhlZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZmFz
dFNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0
JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKwogICAgIHZvaWQgYmVn
aW5EZWZlcnJlZFJlcGFpbnRzKCk7CiAgICAgdm9pZCBlbmREZWZlcnJlZFJlcGFpbnRzKCk7CiAg
ICAgdm9pZCBjaGVja1N0b3BEZWxheWluZ0RlZmVycmVkUmVwYWludHMoKTsKQEAgLTI2Niw2ICsy
NzMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc092ZXJsYXBwZWQ7CiAgICAgYm9vbCBtX2Nv
bnRlbnRJc09wYXF1ZTsKICAgICB1bnNpZ25lZCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQ7Cisg
ICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPiBtX2ZpeGVkT2JqZWN0czsKIAogICAgIGludCBtX2Jv
cmRlclgsIG1fYm9yZGVyWTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggMTM3OTI1Yi4u
NDJhNWJhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC01MTQsOCArNTE0LDggQEAgdm9p
ZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkK
ICAgICB9CiAKICAgICBpZiAoY2FuQmxpdE9uU2Nyb2xsKCkgJiYgIXJvb3RQcmV2ZW50c0JsaXR0
aW5nKCkpIHsgLy8gVGhlIG1haW4gZnJhbWUgY2FuIGp1c3QgYmxpdCB0aGUgV2ViVmlldyB3aW5k
b3cKLSAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBibGl0IHN1YmZyYW1lcyB3aXRob3V0
IGJsaXR0aW5nIG92ZXJsYXBwaW5nIGNvbnRlbnQKLSAgICAgICBob3N0V2luZG93KCktPnNjcm9s
bCgtc2Nyb2xsRGVsdGEsIHNjcm9sbFZpZXdSZWN0LCBjbGlwUmVjdCk7CisgICAgICAgIC8vIEZJ
WE1FOiBGaW5kIGEgd2F5IHRvIGJsaXQgc3ViZnJhbWVzIHdpdGhvdXQgYmxpdHRpbmcgb3Zlcmxh
cHBpbmcgY29udGVudAorICAgICAgICBmYXN0U2Nyb2xsQ29udGVudHMoLXNjcm9sbERlbHRhLCBz
Y3JvbGxWaWV3UmVjdCwgY2xpcFJlY3QpOwogICAgIH0gZWxzZSB7IAogICAgICAgIC8vIFdlIG5l
ZWQgdG8gZ28gYWhlYWQgYW5kIHJlcGFpbnQgdGhlIGVudGlyZSBiYWNraW5nIHN0b3JlLiAgRG8g
aXQgbm93IGJlZm9yZSBtb3ZpbmcgdGhlCiAgICAgICAgLy8gd2luZG93ZWQgcGx1Z2lucy4KQEAg
LTUzMCw2ICs1MzAsMTIgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJ
bnRTaXplJiBzY3JvbGxEZWx0YSkKICAgICBob3N0V2luZG93KCktPnBhaW50KCk7CiB9CiAKKy8v
IFNjcm9sbCB0aGUgY29udGVudCBieSBibGl0dGluZyB0aGUgcGl4ZWxzCit2b2lkIFNjcm9sbFZp
ZXc6OmZhc3RTY3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3Qg
SW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBo
b3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7
Cit9CisKIEludFBvaW50IFNjcm9sbFZpZXc6OndpbmRvd1RvQ29udGVudHMoY29uc3QgSW50UG9p
bnQmIHdpbmRvd1BvaW50KSBjb25zdAogewogICAgIEludFBvaW50IHZpZXdQb2ludCA9IGNvbnZl
cnRGcm9tQ29udGFpbmluZ1dpbmRvdyh3aW5kb3dQb2ludCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmlu
ZGV4IGNhNzI5MDAuLmM2NzYxOWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC0xNTEsNiArMTUx
LDkgQEAgcHVibGljOgogICAgIC8vIFNjcm9sbCB0aGUgYWN0dWFsIGNvbnRlbnRzIG9mIHRoZSB2
aWV3IChlaXRoZXIgYmxpdHRpbmcgb3IgaW52YWxpZGF0aW5nIGFzIG5lZWRlZCkuCiAgICAgdm9p
ZCBzY3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSk7CiAKKyAgICAvLyBT
Y3JvbGwgdGhlIGNvbnRlbnQgYnkgYmxpdHRpbmcgdGhlIHBpeGVscworICAgIHZpcnR1YWwgdm9p
ZCBmYXN0U2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IElu
dFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOworCiAgICAgLy8g
VGhpcyBnaXZlcyB1cyBhIG1lYW5zIG9mIGJsb2NraW5nIHBhaW50aW5nIG9uIG91ciBzY3JvbGxi
YXJzIHVudGlsIHRoZSBmaXJzdCBsYXlvdXQgaGFzIG9jY3VycmVkLgogICAgIHZvaWQgc2V0U2Ny
b2xsYmFyc1N1cHByZXNzZWQoYm9vbCBzdXBwcmVzc2VkLCBib29sIHJlcGFpbnRPblVuc3VwcHJl
c3MgPSBmYWxzZSk7CiAgICAgYm9vbCBzY3JvbGxiYXJzU3VwcHJlc3NlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQ7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CmluZGV4IDUyYWU2MDIuLmQ3ODM0NDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApA
QCAtMjE2LDYgKzIxNiwxMSBAQCBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdChOb2RlKiBub2Rl
KQogCiBSZW5kZXJPYmplY3Q6On5SZW5kZXJPYmplY3QoKQogeworICAgIGlmIChtX3N0eWxlICYm
IG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikgeworICAgICAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IGRvY3VtZW50KCktPnZpZXcoKTsKKyAgICAgICAgaWYgKGZyYW1lVmll
dykKKyAgICAgICAgICAgIGZyYW1lVmlldy0+dW5yZWdpc3RlckZpeGVkT2JqZWN0KHRoaXMpOwor
ICAgIH0KICAgICBBU1NFUlQoIW5vZGUoKSB8fCBkb2N1bWVudEJlaW5nRGVzdHJveWVkKCkgfHwg
IWRvY3VtZW50KCktPmZyYW1lKCktPnZpZXcoKSB8fCBkb2N1bWVudCgpLT5mcmFtZSgpLT52aWV3
KCktPmxheW91dFJvb3QoKSAhPSB0aGlzKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFt
X2hhc0FYT2JqZWN0KTsKQEAgLTE2MzUsMTYgKzE2NDAsMzMgQEAgdm9pZCBSZW5kZXJPYmplY3Q6
OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUq
IG5ld1MKICAgICB9IGVsc2UKICAgICAgICAgc19hZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsK
IAotICAgIGlmICh2aWV3KCktPmZyYW1lVmlldygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBIGJl
dHRlciBzb2x1dGlvbiB3b3VsZCBiZSB0byBvbmx5IGludmFsaWRhdGUgdGhlIGZpeGVkIHJlZ2lv
bnMgd2hlbiBzY3JvbGxpbmcuICBJdCdzIG92ZXJraWxsIHRvCi0gICAgICAgIC8vIHByZXZlbnQg
dGhlIGVudGlyZSB2aWV3IGZyb20gYmxpdHRpbmcgb24gYSBzY3JvbGwuCi0gICAgICAgIGJvb2wg
bmV3U3R5bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgKG5ld1N0eWxlLT5wb3NpdGlvbigpID09
IEZpeGVkUG9zaXRpb24gfHwgbmV3U3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkpOwot
ICAgICAgICBib29sIG9sZFN0eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYgKG1fc3R5bGUtPnBv
c2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbiB8fCBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJ
bWFnZSgpKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHZpZXcoKS0+ZnJhbWVWaWV3KCk7
CisgICAgaWYgKGZyYW1lVmlldykgeworICAgICAgICBib29sIG5ld1N0eWxlU2xvd1Njcm9sbCA9
IG5ld1N0eWxlICYmIG5ld1N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpOworICAgICAg
ICBib29sIG9sZFN0eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYgbV9zdHlsZS0+aGFzRml4ZWRC
YWNrZ3JvdW5kSW1hZ2UoKTsKICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9sbCAhPSBuZXdT
dHlsZVNsb3dTY3JvbGwpIHsKICAgICAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwpCi0g
ICAgICAgICAgICAgICAgdmlldygpLT5mcmFtZVZpZXcoKS0+cmVtb3ZlU2xvd1JlcGFpbnRPYmpl
Y3QoKTsKKyAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0
KCk7CiAgICAgICAgICAgICBpZiAobmV3U3R5bGVTbG93U2Nyb2xsKQotICAgICAgICAgICAgICAg
IHZpZXcoKS0+ZnJhbWVWaWV3KCktPmFkZFNsb3dSZXBhaW50T2JqZWN0KCk7CisgICAgICAgICAg
ICAgICAgZnJhbWVWaWV3LT5hZGRTbG93UmVwYWludE9iamVjdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgYm9vbCBuZXdTdHlsZUhhc1RyYW5zZm9ybSA9IG5ld1N0eWxlICYmIChuZXdTdHlsZS0+
aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpOworICAgICAgICBpZiAoIW5ld1N0eWxlSGFz
VHJhbnNmb3JtKSB7CisgICAgICAgICAgICBib29sIG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlvbiA9
IG5ld1N0eWxlICYmIChuZXdTdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGJvb2wgb2xkU3R5bGVIYXNGaXhlZFBvc2l0aW9uID0gbV9zdHlsZSAmJiAobV9z
dHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKTsKKworICAgICAgICAgICAgaWYgKG9s
ZFN0eWxlSGFzRml4ZWRQb3NpdGlvbiAhPSBuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24pIHsKKyAg
ICAgICAgICAgICAgICBpZiAobmV3U3R5bGVIYXNGaXhlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgICAgICBmcmFtZVZpZXctPnJlZ2lzdGVyRml4ZWRPYmplY3QodGhpcyk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnVucmVnaXN0ZXJGaXhl
ZE9iamVjdCh0aGlzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8g
aWYgcHJldmlvdXNseSBoYWQgYSBmaXggcG9zaXRpb24sIGJ1dCBoYWQgYSB0cmFuc2Zvcm0sIHdo
aWNoIGhhcyBiZWVuIHJlbW92ZWQKKyAgICAgICAgICAgICAgICBib29sIG9sZFN0eWxlSGFzVHJh
bnNmb3JtID0gbV9zdHlsZSAmJiAobV9zdHlsZS0+aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5
KCkpOworICAgICAgICAgICAgICAgIGlmIChvbGRTdHlsZUhhc1RyYW5zZm9ybSAmJiBuZXdTdHls
ZUhhc0ZpeGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+cmVnaXN0
ZXJGaXhlZE9iamVjdCh0aGlzKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46999</attachid>
            <date>2010-01-20 03:11:23 -0800</date>
            <delta_ts>2010-01-20 07:34:36 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>10208</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTI2NmRhZS4uYmM3NTdmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wMS0yMCAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIFJlbmRlck9iamVjdHMgd2l0aCBmaXhlZCBwb3NpdGlvbiByZWdpc3RlcnMgdG8gdGhl
IHZpZXcKKyAgICAgICAgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50IHdoaWxlIHNjcm9sbGluZy4K
KyAgICAgICAgVGhlIHNjcm9sbGluZyBjb2RlIHVwZGF0ZSBzcGVjaWZpY2FsbHkgdGhvc2UgZWxl
bWVudHMgYWZ0ZXIgYmxpdHRpbmcgdGhlIHBpeGVscy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVnaXN0ZXJGaXhlZE9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVucmVnaXN0ZXJGaXhlZE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6On5SZW5kZXJPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UpOgor
CiAyMDEwLTAxLTIwICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRl
eCA4NmUxM2E3Li40MjhhMGEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtODEzLDYgKzgxMyw2NyBAQCB2
b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKQogICAgICAgICBzZXRDYW5C
bGl0T25TY3JvbGwoIXVzZVNsb3dSZXBhaW50cygpKTsKIH0KIAorCit2b2lkIEZyYW1lVmlldzo6
cmVnaXN0ZXJGaXhlZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBtX2ZpeGVk
T2JqZWN0cy5hZGQob2JqZWN0KTsKK30KKwordm9pZCBGcmFtZVZpZXc6OnVucmVnaXN0ZXJGaXhl
ZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBtX2ZpeGVkT2JqZWN0cy5yZW1v
dmUob2JqZWN0KTsKK30KKwordm9pZCBGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgo
Y29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwg
Y29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCit7CisgICAgY29uc3QgaW50IGZpeGVkT2JqZWN0TnVt
YmVyVGhyZXNob2xkID0gNTsKKworICAgIGlmIChtX2ZpeGVkT2JqZWN0cy5pc0VtcHR5KCkpCisg
ICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNs
aXBSZWN0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgVmVjdG9yPFJlbmRlck9iamVjdCo+IGZpeGVk
T2JqZWN0c0luVmlld3BvcnQ7CisgICAgICAgIGZpeGVkT2JqZWN0c0luVmlld3BvcnQucmVzZXJ2
ZUNhcGFjaXR5KG1fZml4ZWRPYmplY3RzLnNpemUoKSk7CisKKyAgICAgICAgYm9vbCB1cGRhdGVJ
bnZhbGlkYXRlZFN1YlJlY3QgPSB0cnVlOworICAgICAgICAvLyBHZXQgYSBsaXN0IG9mIGZpeGVk
IG9iamVjdHMgdGhhdCBhcmUgbm90IGluIHRyYW5zZm9ybWF0aW9ucworICAgICAgICBIYXNoU2V0
PFJlbmRlck9iamVjdCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2ZpeGVkT2JqZWN0cy5lbmQo
KTsKKyAgICAgICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
X2ZpeGVkT2JqZWN0cy5iZWdpbigpOworICAgICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgICAgICBSZW5kZXJPYmplY3QqIG9iaiA9ICppdDsKKyAgICAgICAgICAgIGlmIChv
YmotPmNvbnRhaW5pbmdCbG9jaygpID09IG9iai0+dmlldygpKSB7CisgICAgICAgICAgICAgICAg
Zml4ZWRPYmplY3RzSW5WaWV3cG9ydC5hcHBlbmQob2JqKTsKKyAgICAgICAgICAgICAgICBpZiAo
Zml4ZWRPYmplY3RzSW5WaWV3cG9ydC5zaXplKCkgPiBmaXhlZE9iamVjdE51bWJlclRocmVzaG9s
ZCkgeworICAgICAgICAgICAgICAgICAgICB1cGRhdGVJbnZhbGlkYXRlZFN1YlJlY3QgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gc2Nyb2xsIHRoZSBjb250ZW50CisgICAg
ICAgIGlmICh1cGRhdGVJbnZhbGlkYXRlZFN1YlJlY3QpIHsKKyAgICAgICAgICAgIC8vIDEpIHNj
cm9sbAorICAgICAgICAgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RU
b1Njcm9sbCwgY2xpcFJlY3QpOworCisgICAgICAgICAgICAvLyAyKSB1cGRhdGUgdGhlIGFyZWEg
b2YgZml4ZWQgb2JqZXRzIHRoYXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQKKyAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgZml4ZWRPYmplY3RzSW5WaWV3cG9ydC5zaXplKCk7ICsraSkgewor
ICAgICAgICAgICAgICAgIEludFJlY3QgdG9wTGV2ZWxSZWN0OworICAgICAgICAgICAgICAgIElu
dFJlY3QgdXBkYXRlUmVjdCA9IGZpeGVkT2JqZWN0c0luVmlld3BvcnRbaV0tPnBhaW50aW5nUm9v
dFJlY3QodG9wTGV2ZWxSZWN0KTsKKyAgICAgICAgICAgICAgICB1cGRhdGVSZWN0Lm1vdmUoLXNj
cm9sbFgoKSwgLXNjcm9sbFkoKSk7CisgICAgICAgICAgICAgICAgSW50UmVjdCBzY3JvbGxlZFJl
Y3QgPSB1cGRhdGVSZWN0OworICAgICAgICAgICAgICAgIHNjcm9sbGVkUmVjdC5tb3ZlKHNjcm9s
bERlbHRhKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVSZWN0LnVuaXRlKHNjcm9sbGVkUmVjdCk7
CisgICAgICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVjdFRvU2Nyb2xsKTsKKyAg
ICAgICAgICAgICAgICBob3N0V2luZG93KCktPnJlcGFpbnQodXBkYXRlUmVjdCwgdHJ1ZSwgZmFs
c2UsIHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Ly8gdGhlIG51bWJlciBvZiBmaXhlZCBvYmplY3RzIGV4Y2VlZCB0aGUgdGhyZXNob2xkLCBzbyB3
ZSByZXBhaW50IGV2ZXJ5dGhpbmcuCisgICAgICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSBj
bGlwUmVjdDsKKyAgICAgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7
CisgICAgICAgICAgICBob3N0V2luZG93KCktPnJlcGFpbnQodXBkYXRlUmVjdCwgdHJ1ZSwgZmFs
c2UsIHRydWUpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIEZyYW1lVmlldzo6c2V0SXNP
dmVybGFwcGVkKGJvb2wgaXNPdmVybGFwcGVkKQogewogICAgIGlmIChpc092ZXJsYXBwZWQgPT0g
bV9pc092ZXJsYXBwZWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggYjI3ZmZkOC4uYTYxNmJlZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aApAQCAtMTQ1LDYgKzE0NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTbG93UmVwYWludE9i
amVjdCgpOwogICAgIHZvaWQgcmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKTsKIAorICAgIC8vIE1l
dGhvZHMgdG8gbWFuYWdlIHRoZSBvYmplY3RzIHRoYXQgYXJlIGZpeGVkCisgICAgLy8gaW4gdGhl
IHZpZXcgd2hlbiBzY3JvbGxpbmcKKyAgICB2b2lkIHJlZ2lzdGVyRml4ZWRPYmplY3QoUmVuZGVy
T2JqZWN0KiBvYmplY3QpOworICAgIHZvaWQgdW5yZWdpc3RlckZpeGVkT2JqZWN0KFJlbmRlck9i
amVjdCogb2JqZWN0KTsKKwogICAgIHZvaWQgYmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7CiAgICAg
dm9pZCBlbmREZWZlcnJlZFJlcGFpbnRzKCk7CiAgICAgdm9pZCBjaGVja1N0b3BEZWxheWluZ0Rl
ZmVycmVkUmVwYWludHMoKTsKQEAgLTE5OSw2ICsyMDQsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0ZyYW1lVmlld1Njcm9sbENvcm5lcihSZW5kZXJTY3JvbGxiYXJQYXJ0KiBzY3JvbGxDb3JuZXIp
IGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29ybmVyID09IHNjcm9sbENvcm5lcjsgfQogICAgIHZv
aWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lcigpOwogCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2
b2lkIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNv
bnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOworCiBw
cml2YXRlOgogICAgIEZyYW1lVmlldyhGcmFtZSopOwogCkBAIC0yNjgsNiArMjc2LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faXNPdmVybGFwcGVkOwogICAgIGJvb2wgbV9jb250ZW50SXNPcGFx
dWU7CiAgICAgdW5zaWduZWQgbV9zbG93UmVwYWludE9iamVjdENvdW50OworICAgIEhhc2hTZXQ8
UmVuZGVyT2JqZWN0Kj4gbV9maXhlZE9iamVjdHM7CiAKICAgICBpbnQgbV9ib3JkZXJYLCBtX2Jv
cmRlclk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IDBmNjkyMGMuLjYzMDNiNDIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgU2Nyb2xsVmll
dzo6c2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAKICAgICBpZiAo
Y2FuQmxpdE9uU2Nyb2xsKCkpIHsgLy8gVGhlIG1haW4gZnJhbWUgY2FuIGp1c3QgYmxpdCB0aGUg
V2ViVmlldyB3aW5kb3cKICAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBibGl0IHN1YmZy
YW1lcyB3aXRob3V0IGJsaXR0aW5nIG92ZXJsYXBwaW5nIGNvbnRlbnQKLSAgICAgICBob3N0V2lu
ZG93KCktPnNjcm9sbCgtc2Nyb2xsRGVsdGEsIHNjcm9sbFZpZXdSZWN0LCBjbGlwUmVjdCk7Cisg
ICAgICAgc2Nyb2xsQ29udGVudHNGYXN0UGF0aCgtc2Nyb2xsRGVsdGEsIHNjcm9sbFZpZXdSZWN0
LCBjbGlwUmVjdCk7CiAgICAgfSBlbHNlIHsgCiAgICAgICAgLy8gV2UgbmVlZCB0byBnbyBhaGVh
ZCBhbmQgcmVwYWludCB0aGUgZW50aXJlIGJhY2tpbmcgc3RvcmUuICBEbyBpdCBub3cgYmVmb3Jl
IG1vdmluZyB0aGUKICAgICAgICAvLyB3aW5kb3dlZCBwbHVnaW5zLgpAQCAtNTMwLDYgKzUzMCwx
MSBAQCB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9s
bERlbHRhKQogICAgIGhvc3RXaW5kb3coKS0+cGFpbnQoKTsKIH0KIAordm9pZCBTY3JvbGxWaWV3
OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25z
dCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAg
IGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0
KTsKK30KKwogSW50UG9pbnQgU2Nyb2xsVmlldzo6d2luZG93VG9Db250ZW50cyhjb25zdCBJbnRQ
b2ludCYgd2luZG93UG9pbnQpIGNvbnN0CiB7CiAgICAgSW50UG9pbnQgdmlld1BvaW50ID0gY29u
dmVydEZyb21Db250YWluaW5nV2luZG93KHdpbmRvd1BvaW50KTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgK
aW5kZXggYTcxNzNhNy4uNmNhMjU4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTI0OSw2ICsy
NDksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbENvcm5lcigpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3Ju
ZXJSZWN0KTsKKworICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBieSBibGl0dGluZyB0aGUgcGl4
ZWxzCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6
ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVj
dCYgY2xpcFJlY3QpOwogICAgIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hv
cml6b250YWxTY3JvbGxiYXI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA1ZGRi
ODgyLi42MjU1ZTBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTIxNiw2ICsy
MTYsMTEgQEAgUmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3QoTm9kZSogbm9kZSkKIAogUmVuZGVy
T2JqZWN0Ojp+UmVuZGVyT2JqZWN0KCkKIHsKKyAgICBpZiAobV9zdHlsZSAmJiBtX3N0eWxlLT5w
b3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pIHsKKyAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZp
ZXcgPSBkb2N1bWVudCgpLT52aWV3KCk7CisgICAgICAgIGlmIChmcmFtZVZpZXcpCisgICAgICAg
ICAgICBmcmFtZVZpZXctPnVucmVnaXN0ZXJGaXhlZE9iamVjdCh0aGlzKTsKKyAgICB9CiAgICAg
QVNTRVJUKCFub2RlKCkgfHwgZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpIHx8ICFkb2N1bWVudCgp
LT5mcmFtZSgpLT52aWV3KCkgfHwgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+dmlldygpLT5sYXlvdXRS
b290KCkgIT0gdGhpcyk7CiAjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghbV9oYXNBWE9iamVj
dCk7CkBAIC0xNjQ3LDcgKzE2NTIsOCBAQCB2b2lkIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3UwogICAgIH0g
ZWxzZQogICAgICAgICBzX2FmZmVjdHNQYXJlbnRCbG9jayA9IGZhbHNlOwogCi0gICAgaWYgKHZp
ZXcoKS0+ZnJhbWVWaWV3KCkpIHsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHZpZXcoKS0+
ZnJhbWVWaWV3KCk7CisgICAgaWYgKGZyYW1lVmlldykgewogICAgICAgICAvLyBGSVhNRTogQSBi
ZXR0ZXIgc29sdXRpb24gd291bGQgYmUgdG8gb25seSBpbnZhbGlkYXRlIHRoZSBmaXhlZCByZWdp
b25zIHdoZW4gc2Nyb2xsaW5nLiAgSXQncyBvdmVya2lsbCB0bwogICAgICAgICAvLyBwcmV2ZW50
IHRoZSBlbnRpcmUgdmlldyBmcm9tIGJsaXR0aW5nIG9uIGEgc2Nyb2xsLgogCkBAIC0xNjYwLDE1
ICsxNjY2LDMyIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTCiAgICAgICAgIHNob3VsZEJsaXRP
bkZpeGVkQmFja2dyb3VuZEltYWdlID0gdHJ1ZTsKICNlbmRpZgogCi0gICAgICAgIGJvb2wgbmV3
U3R5bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgKG5ld1N0eWxlLT5wb3NpdGlvbigpID09IEZp
eGVkUG9zaXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfHwgKCFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAmJiBuZXdTdHlsZS0+aGFz
Rml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSkpOwotICAgICAgICBib29sIG9sZFN0eWxlU2xvd1Njcm9s
bCA9IG1fc3R5bGUgJiYgKG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoIXNob3VsZEJs
aXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZElt
YWdlKCkpKTsKKyAgICAgICAgYm9vbCBuZXdTdHlsZVNsb3dTY3JvbGwgPSBuZXdTdHlsZSAmJiAh
c2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbmV3U3R5bGUtPmhhc0ZpeGVkQmFj
a2dyb3VuZEltYWdlKCk7CisgICAgICAgIGJvb2wgb2xkU3R5bGVTbG93U2Nyb2xsID0gbV9zdHls
ZSAmJiAhc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbV9zdHlsZS0+aGFzRml4
ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKKwogICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsICE9
IG5ld1N0eWxlU2xvd1Njcm9sbCkgewogICAgICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9s
bCkKLSAgICAgICAgICAgICAgICB2aWV3KCktPmZyYW1lVmlldygpLT5yZW1vdmVTbG93UmVwYWlu
dE9iamVjdCgpOworICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+cmVtb3ZlU2xvd1JlcGFpbnRP
YmplY3QoKTsKICAgICAgICAgICAgIGlmIChuZXdTdHlsZVNsb3dTY3JvbGwpCi0gICAgICAgICAg
ICAgICAgdmlldygpLT5mcmFtZVZpZXcoKS0+YWRkU2xvd1JlcGFpbnRPYmplY3QoKTsKKyAgICAg
ICAgICAgICAgICBmcmFtZVZpZXctPmFkZFNsb3dSZXBhaW50T2JqZWN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBib29sIG5ld1N0eWxlSGFzVHJhbnNmb3JtID0gbmV3U3R5bGUgJiYgKG5ld1N0
eWxlLT5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSk7CisgICAgICAgIGlmICghbmV3U3R5
bGVIYXNUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIGJvb2wgbmV3U3R5bGVIYXNGaXhlZFBvc2l0
aW9uID0gbmV3U3R5bGUgJiYgKG5ld1N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24p
OworICAgICAgICAgICAgYm9vbCBvbGRTdHlsZUhhc0ZpeGVkUG9zaXRpb24gPSBtX3N0eWxlICYm
IChtX3N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pOworCisgICAgICAgICAgICBp
ZiAob2xkU3R5bGVIYXNGaXhlZFBvc2l0aW9uICE9IG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlvbikg
eworICAgICAgICAgICAgICAgIGlmIChuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgICAgIGZyYW1lVmlldy0+cmVnaXN0ZXJGaXhlZE9iamVjdCh0aGlzKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+dW5yZWdpc3Rl
ckZpeGVkT2JqZWN0KHRoaXMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAvLyBpZiBwcmV2aW91c2x5IGhhZCBhIGZpeCBwb3NpdGlvbiwgYnV0IGhhZCBhIHRyYW5zZm9y
bSwgd2hpY2ggaGFzIGJlZW4gcmVtb3ZlZAorICAgICAgICAgICAgICAgIGJvb2wgb2xkU3R5bGVI
YXNUcmFuc2Zvcm0gPSBtX3N0eWxlICYmIChtX3N0eWxlLT5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJv
cGVydHkoKSk7CisgICAgICAgICAgICAgICAgaWYgKG9sZFN0eWxlSGFzVHJhbnNmb3JtICYmIG5l
d1N0eWxlSGFzRml4ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5y
ZWdpc3RlckZpeGVkT2JqZWN0KHRoaXMpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47029</attachid>
            <date>2010-01-20 07:34:36 -0800</date>
            <delta_ts>2010-02-08 15:12:59 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>10630</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTI2NmRhZS4uYTU3NTI1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMS0yMCAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIFJlbmRlck9iamVjdHMgd2l0aCBmaXhlZCBwb3NpdGlvbiByZWdpc3RlcnMgdG8gdGhl
IHZpZXcKKyAgICAgICAgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50IHdoaWxlIHNjcm9sbGluZy4K
KyAgICAgICAgVGhlIHNjcm9sbGluZyBjb2RlIHVwZGF0ZSBzcGVjaWZpY2FsbHkgdGhvc2UgZWxl
bWVudHMgYWZ0ZXIgYmxpdHRpbmcgdGhlIHBpeGVscy4KKworCisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZWdpc3RlckZpeGVkUG9z
aXRpb25lZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVucmVnaXN0ZXJG
aXhlZFBvc2l0aW9uZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3Jv
bGxDb250ZW50c0Zhc3RQYXRoKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6c2Nyb2xsQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xs
Q29udGVudHNGYXN0UGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0Ojp+UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6c3R5bGVXaWxsQ2hhbmdlKToKKwogMjAxMC0wMS0yMCAgU2ltb24gSGF1c21hbm4gIDxzaW1v
bi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVz
dGLDuC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggODZlMTNhNy4uODI0YTY4MSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
QEAgLTgxMyw2ICs4MTMsNjcgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVNsb3dSZXBhaW50T2Jq
ZWN0KCkKICAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCF1c2VTbG93UmVwYWludHMoKSk7CiB9
CiAKKwordm9pZCBGcmFtZVZpZXc6OnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KFJlbmRl
ck9iamVjdCogb2JqZWN0KQoreworICAgIG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0cy5hZGQob2Jq
ZWN0KTsKK30KKwordm9pZCBGcmFtZVZpZXc6OnVucmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmpl
Y3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgbV9maXhlZFBvc2l0aW9uZWRPYmplY3Rz
LnJlbW92ZShvYmplY3QpOworfQorCit2b2lkIEZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0
UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Ny
b2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBjb25zdCBpbnQgZml4ZWRPYmpl
Y3ROdW1iZXJUaHJlc2hvbGQgPSA1OworCisgICAgaWYgKG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0
cy5pc0VtcHR5KCkpCisgICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCBy
ZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgVmVjdG9yPFJlbmRl
ck9iamVjdCo+IGZpeGVkT2JqZWN0c0luVmlld3BvcnQ7CisgICAgICAgIGZpeGVkT2JqZWN0c0lu
Vmlld3BvcnQucmVzZXJ2ZUNhcGFjaXR5KG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0cy5zaXplKCkp
OworCisgICAgICAgIGJvb2wgdXBkYXRlSW52YWxpZGF0ZWRTdWJSZWN0ID0gdHJ1ZTsKKyAgICAg
ICAgLy8gR2V0IGEgbGlzdCBvZiBmaXhlZCBvYmplY3RzIHRoYXQgYXJlIG5vdCBpbiB0cmFuc2Zv
cm1hdGlvbnMKKyAgICAgICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPjo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbV9maXhlZFBvc2l0aW9uZWRPYmplY3RzLmVuZCgpOworICAgICAgICBIYXNoU2V0PFJl
bmRlck9iamVjdCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0
cy5iZWdpbigpOworICAgICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAg
ICBSZW5kZXJPYmplY3QqIG9iaiA9ICppdDsKKyAgICAgICAgICAgIGlmIChvYmotPmNvbnRhaW5p
bmdCbG9jaygpID09IG9iai0+dmlldygpKSB7IC8vIG1ha2Ugc3VyZSB0aGUgcGFyZW50IGxheWVy
IGhhcyBub3QgYmVlbiB0cmFuc2Zvcm1lZAorICAgICAgICAgICAgICAgIGZpeGVkT2JqZWN0c0lu
Vmlld3BvcnQuYXBwZW5kKG9iaik7CisgICAgICAgICAgICAgICAgaWYgKGZpeGVkT2JqZWN0c0lu
Vmlld3BvcnQuc2l6ZSgpID4gZml4ZWRPYmplY3ROdW1iZXJUaHJlc2hvbGQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdXBkYXRlSW52YWxpZGF0ZWRTdWJSZWN0ID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIC8vIHNjcm9sbCB0aGUgY29udGVudAorICAgICAgICBpZiAodXBkYXRl
SW52YWxpZGF0ZWRTdWJSZWN0KSB7CisgICAgICAgICAgICAvLyAxKSBzY3JvbGwKKyAgICAgICAg
ICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBS
ZWN0KTsKKworICAgICAgICAgICAgLy8gMikgdXBkYXRlIHRoZSBhcmVhIG9mIGZpeGVkIG9iamV0
cyB0aGF0IGhhcyBiZWVuIGludmFsaWRhdGVkCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGZpeGVkT2JqZWN0c0luVmlld3BvcnQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBJbnRSZWN0IHRvcExldmVsUmVjdDsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHVwZGF0ZVJl
Y3QgPSBmaXhlZE9iamVjdHNJblZpZXdwb3J0W2ldLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVs
UmVjdCk7CisgICAgICAgICAgICAgICAgdXBkYXRlUmVjdC5tb3ZlKC1zY3JvbGxYKCksIC1zY3Jv
bGxZKCkpOworICAgICAgICAgICAgICAgIEludFJlY3Qgc2Nyb2xsZWRSZWN0ID0gdXBkYXRlUmVj
dDsKKyAgICAgICAgICAgICAgICBzY3JvbGxlZFJlY3QubW92ZShzY3JvbGxEZWx0YSk7CisgICAg
ICAgICAgICAgICAgdXBkYXRlUmVjdC51bml0ZShzY3JvbGxlZFJlY3QpOworICAgICAgICAgICAg
ICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CisgICAgICAgICAgICAgICAg
aG9zdFdpbmRvdygpLT5yZXBhaW50KHVwZGF0ZVJlY3QsIHRydWUsIGZhbHNlLCB0cnVlKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIHRoZSBudW1iZXIg
b2YgZml4ZWQgb2JqZWN0cyBleGNlZWQgdGhlIHRocmVzaG9sZCwgc28gd2UgcmVwYWludCBldmVy
eXRoaW5nLgorICAgICAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gY2xpcFJlY3Q7CisgICAg
ICAgICAgICB1cGRhdGVSZWN0LmludGVyc2VjdChyZWN0VG9TY3JvbGwpOworICAgICAgICAgICAg
aG9zdFdpbmRvdygpLT5yZXBhaW50KHVwZGF0ZVJlY3QsIHRydWUsIGZhbHNlLCB0cnVlKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwogdm9pZCBGcmFtZVZpZXc6OnNldElzT3ZlcmxhcHBlZChib29s
IGlzT3ZlcmxhcHBlZCkKIHsKICAgICBpZiAoaXNPdmVybGFwcGVkID09IG1faXNPdmVybGFwcGVk
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCmluZGV4IGIyN2ZmZDguLmMzZGUwNWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE0NSw2ICsx
NDUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgYWRkU2xvd1JlcGFpbnRPYmplY3QoKTsKICAgICB2
b2lkIHJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KCk7CiAKKyAgICAvLyBNZXRob2RzIHRvIG1hbmFn
ZSB0aGUgb2JqZWN0cyB0aGF0IGFyZSBmaXhlZAorICAgIC8vIGluIHRoZSB2aWV3IHdoZW4gc2Ny
b2xsaW5nCisgICAgdm9pZCByZWdpc3RlckZpeGVkUG9zaXRpb25lZE9iamVjdChSZW5kZXJPYmpl
Y3QqIG9iamVjdCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KFJl
bmRlck9iamVjdCogb2JqZWN0KTsKKwogICAgIHZvaWQgYmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7
CiAgICAgdm9pZCBlbmREZWZlcnJlZFJlcGFpbnRzKCk7CiAgICAgdm9pZCBjaGVja1N0b3BEZWxh
eWluZ0RlZmVycmVkUmVwYWludHMoKTsKQEAgLTE5OSw2ICsyMDQsOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0ZyYW1lVmlld1Njcm9sbENvcm5lcihSZW5kZXJTY3JvbGxiYXJQYXJ0KiBzY3JvbGxD
b3JuZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29ybmVyID09IHNjcm9sbENvcm5lcjsgfQog
ICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lcigpOwogCitwcm90ZWN0ZWQ6CisgICAgdmly
dHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3Qp
OworCiBwcml2YXRlOgogICAgIEZyYW1lVmlldyhGcmFtZSopOwogCkBAIC0yNjgsNiArMjc2LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faXNPdmVybGFwcGVkOwogICAgIGJvb2wgbV9jb250ZW50
SXNPcGFxdWU7CiAgICAgdW5zaWduZWQgbV9zbG93UmVwYWludE9iamVjdENvdW50OworICAgIEhh
c2hTZXQ8UmVuZGVyT2JqZWN0Kj4gbV9maXhlZFBvc2l0aW9uZWRPYmplY3RzOwogCiAgICAgaW50
IG1fYm9yZGVyWCwgbV9ib3JkZXJZOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCAwZjY5
MjBjLi42MzAzYjQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTUxNSw3ICs1MTUsNyBA
QCB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERl
bHRhKQogCiAgICAgaWYgKGNhbkJsaXRPblNjcm9sbCgpKSB7IC8vIFRoZSBtYWluIGZyYW1lIGNh
biBqdXN0IGJsaXQgdGhlIFdlYlZpZXcgd2luZG93CiAgICAgICAgLy8gRklYTUU6IEZpbmQgYSB3
YXkgdG8gYmxpdCBzdWJmcmFtZXMgd2l0aG91dCBibGl0dGluZyBvdmVybGFwcGluZyBjb250ZW50
Ci0gICAgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoLXNjcm9sbERlbHRhLCBzY3JvbGxWaWV3UmVj
dCwgY2xpcFJlY3QpOworICAgICAgIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoLXNjcm9sbERlbHRh
LCBzY3JvbGxWaWV3UmVjdCwgY2xpcFJlY3QpOwogICAgIH0gZWxzZSB7IAogICAgICAgIC8vIFdl
IG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJlcGFpbnQgdGhlIGVudGlyZSBiYWNraW5nIHN0b3JlLiAg
RG8gaXQgbm93IGJlZm9yZSBtb3ZpbmcgdGhlCiAgICAgICAgLy8gd2luZG93ZWQgcGx1Z2lucy4K
QEAgLTUzMCw2ICs1MzAsMTEgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25z
dCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKICAgICBob3N0V2luZG93KCktPnBhaW50KCk7CiB9CiAK
K3ZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCkKK3sKKyAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRv
U2Nyb2xsLCBjbGlwUmVjdCk7Cit9CisKIEludFBvaW50IFNjcm9sbFZpZXc6OndpbmRvd1RvQ29u
dGVudHMoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSBjb25zdAogewogICAgIEludFBvaW50
IHZpZXdQb2ludCA9IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyh3aW5kb3dQb2ludCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5oCmluZGV4IGE3MTczYTcuLjZjYTI1ODEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5oCkBAIC0yNDksNiArMjQ5LDkgQEAgcHJvdGVjdGVkOgogICAgIEludFJlY3Qgc2Nyb2xsQ29y
bmVyUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CisKKyAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkg
YmxpdHRpbmcgdGhlIHBpeGVscworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxDb250ZW50c0Zhc3RQ
YXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3Jv
bGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKICAgICAKIHByaXZhdGU6CiAgICAgUmVmUHRy
PFNjcm9sbGJhcj4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKaW5kZXggNWRkYjg4Mi4uNzdiZDMxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCkBAIC0yMTYsNiArMjE2LDExIEBAIFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0KE5vZGUq
IG5vZGUpCiAKIFJlbmRlck9iamVjdDo6flJlbmRlck9iamVjdCgpCiB7CisgICAgaWYgKG1fc3R5
bGUgJiYgbV9zdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKSB7CisgICAgICAgIEZy
YW1lVmlldyogZnJhbWVWaWV3ID0gZG9jdW1lbnQoKS0+dmlldygpOworICAgICAgICBpZiAoZnJh
bWVWaWV3KQorICAgICAgICAgICAgZnJhbWVWaWV3LT51bnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVk
T2JqZWN0KHRoaXMpOworICAgIH0KICAgICBBU1NFUlQoIW5vZGUoKSB8fCBkb2N1bWVudEJlaW5n
RGVzdHJveWVkKCkgfHwgIWRvY3VtZW50KCktPmZyYW1lKCktPnZpZXcoKSB8fCBkb2N1bWVudCgp
LT5mcmFtZSgpLT52aWV3KCktPmxheW91dFJvb3QoKSAhPSB0aGlzKTsKICNpZm5kZWYgTkRFQlVH
CiAgICAgQVNTRVJUKCFtX2hhc0FYT2JqZWN0KTsKQEAgLTE2NDcsMTAgKzE2NTIsOCBAQCB2b2lk
IFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25z
dCBSZW5kZXJTdHlsZSogbmV3UwogICAgIH0gZWxzZQogICAgICAgICBzX2FmZmVjdHNQYXJlbnRC
bG9jayA9IGZhbHNlOwogCi0gICAgaWYgKHZpZXcoKS0+ZnJhbWVWaWV3KCkpIHsKLSAgICAgICAg
Ly8gRklYTUU6IEEgYmV0dGVyIHNvbHV0aW9uIHdvdWxkIGJlIHRvIG9ubHkgaW52YWxpZGF0ZSB0
aGUgZml4ZWQgcmVnaW9ucyB3aGVuIHNjcm9sbGluZy4gIEl0J3Mgb3ZlcmtpbGwgdG8KLSAgICAg
ICAgLy8gcHJldmVudCB0aGUgZW50aXJlIHZpZXcgZnJvbSBibGl0dGluZyBvbiBhIHNjcm9sbC4K
LQorICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gdmlldygpLT5mcmFtZVZpZXcoKTsKKyAgICBp
ZiAoZnJhbWVWaWV3KSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5k
SW1hZ2UgPSBmYWxzZTsKICNpZiBFTkFCTEUoRkFTVF9NT0JJTEVfU0NST0xMSU5HKQogICAgICAg
ICAvLyBPbiBsb3ctcG93ZXJlZC9tb2JpbGUgZGV2aWNlcywgcHJldmVudGluZyBibGl0dGluZyBv
biBhIHNjcm9sbCBjYW4gY2F1c2Ugbm90aWNlYWJsZSBkZWxheXMKQEAgLTE2NjAsMTUgKzE2NjMs
MzIgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2Ug
ZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1MKICAgICAgICAgc2hvdWxkQmxpdE9uRml4ZWRC
YWNrZ3JvdW5kSW1hZ2UgPSB0cnVlOwogI2VuZGlmCiAKLSAgICAgICAgYm9vbCBuZXdTdHlsZVNs
b3dTY3JvbGwgPSBuZXdTdHlsZSAmJiAobmV3U3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3Np
dGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAo
IXNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG5ld1N0eWxlLT5oYXNGaXhlZEJh
Y2tncm91bmRJbWFnZSgpKSk7Ci0gICAgICAgIGJvb2wgb2xkU3R5bGVTbG93U2Nyb2xsID0gbV9z
dHlsZSAmJiAobV9zdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICghc2hvdWxkQmxpdE9uRml4
ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSkp
OworICAgICAgICBib29sIG5ld1N0eWxlU2xvd1Njcm9sbCA9IG5ld1N0eWxlICYmICFzaG91bGRC
bGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAmJiBuZXdTdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5k
SW1hZ2UoKTsKKyAgICAgICAgYm9vbCBvbGRTdHlsZVNsb3dTY3JvbGwgPSBtX3N0eWxlICYmICFz
aG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAmJiBtX3N0eWxlLT5oYXNGaXhlZEJhY2tn
cm91bmRJbWFnZSgpOworCiAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwgIT0gbmV3U3R5
bGVTbG93U2Nyb2xsKSB7CiAgICAgICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsKQotICAg
ICAgICAgICAgICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0
KCk7CisgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5yZW1vdmVTbG93UmVwYWludE9iamVjdCgp
OwogICAgICAgICAgICAgaWYgKG5ld1N0eWxlU2xvd1Njcm9sbCkKLSAgICAgICAgICAgICAgICB2
aWV3KCktPmZyYW1lVmlldygpLT5hZGRTbG93UmVwYWludE9iamVjdCgpOworICAgICAgICAgICAg
ICAgIGZyYW1lVmlldy0+YWRkU2xvd1JlcGFpbnRPYmplY3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGJvb2wgbmV3U3R5bGVIYXNUcmFuc2Zvcm0gPSBuZXdTdHlsZSAmJiAobmV3U3R5bGUtPmhh
c1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKTsKKyAgICAgICAgaWYgKCFuZXdTdHlsZUhhc1Ry
YW5zZm9ybSkgeworICAgICAgICAgICAgYm9vbCBuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24gPSBu
ZXdTdHlsZSAmJiAobmV3U3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbik7CisgICAg
ICAgICAgICBib29sIG9sZFN0eWxlSGFzRml4ZWRQb3NpdGlvbiA9IG1fc3R5bGUgJiYgKG1fc3R5
bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbik7CisKKyAgICAgICAgICAgIGlmIChvbGRT
dHlsZUhhc0ZpeGVkUG9zaXRpb24gIT0gbmV3U3R5bGVIYXNGaXhlZFBvc2l0aW9uKSB7CisgICAg
ICAgICAgICAgICAgaWYgKG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICAgICAgZnJhbWVWaWV3LT5yZWdpc3RlckZpeGVkUG9zaXRpb25lZE9iamVjdCh0aGlzKTsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+dW5yZWdp
c3RlckZpeGVkUG9zaXRpb25lZE9iamVjdCh0aGlzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgLy8gaWYgcHJldmlvdXNseSBoYWQgYSBmaXggcG9zaXRpb24sIGJ1dCBo
YWQgYSB0cmFuc2Zvcm0sIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQKKyAgICAgICAgICAgICAgICBi
b29sIG9sZFN0eWxlSGFzVHJhbnNmb3JtID0gbV9zdHlsZSAmJiAobV9zdHlsZS0+aGFzVHJhbnNm
b3JtUmVsYXRlZFByb3BlcnR5KCkpOworICAgICAgICAgICAgICAgIGlmIChvbGRTdHlsZUhhc1Ry
YW5zZm9ybSAmJiBuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgICAg
IGZyYW1lVmlldy0+cmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3QodGhpcyk7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47113</attachid>
            <date>2010-01-21 06:04:03 -0800</date>
            <delta_ts>2010-01-21 06:05:38 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>10642</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTI2NmRhZS4uYTU3NTI1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMS0yMCAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIFJlbmRlck9iamVjdHMgd2l0aCBmaXhlZCBwb3NpdGlvbiByZWdpc3RlcnMgdG8gdGhl
IHZpZXcKKyAgICAgICAgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50IHdoaWxlIHNjcm9sbGluZy4K
KyAgICAgICAgVGhlIHNjcm9sbGluZyBjb2RlIHVwZGF0ZSBzcGVjaWZpY2FsbHkgdGhvc2UgZWxl
bWVudHMgYWZ0ZXIgYmxpdHRpbmcgdGhlIHBpeGVscy4KKworCisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZWdpc3RlckZpeGVkUG9z
aXRpb25lZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVucmVnaXN0ZXJG
aXhlZFBvc2l0aW9uZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3Jv
bGxDb250ZW50c0Zhc3RQYXRoKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6c2Nyb2xsQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xs
Q29udGVudHNGYXN0UGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0Ojp+UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6c3R5bGVXaWxsQ2hhbmdlKToKKwogMjAxMC0wMS0yMCAgU2ltb24gSGF1c21hbm4gIDxzaW1v
bi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVz
dGLDuC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggODZlMTNhNy4uNTI5OThhYyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
QEAgLTgxMyw2ICs4MTMsNjggQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVNsb3dSZXBhaW50T2Jq
ZWN0KCkKICAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCF1c2VTbG93UmVwYWludHMoKSk7CiB9
CiAKKwordm9pZCBGcmFtZVZpZXc6OnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KFJlbmRl
ck9iamVjdCogb2JqZWN0KQoreworICAgIG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0cy5hZGQob2Jq
ZWN0KTsKK30KKwordm9pZCBGcmFtZVZpZXc6OnVucmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmpl
Y3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgbV9maXhlZFBvc2l0aW9uZWRPYmplY3Rz
LnJlbW92ZShvYmplY3QpOworfQorCit2b2lkIEZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0
UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Ny
b2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBjb25zdCBzaXplX3QgZml4ZWRP
YmplY3ROdW1iZXJUaHJlc2hvbGQgPSA1OworCisgICAgaWYgKG1fZml4ZWRQb3NpdGlvbmVkT2Jq
ZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRh
LCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgVmVjdG9yPFJl
bmRlck9iamVjdCo+IGZpeGVkT2JqZWN0c0luVmlld3BvcnQ7CisgICAgICAgIGZpeGVkT2JqZWN0
c0luVmlld3BvcnQucmVzZXJ2ZUNhcGFjaXR5KG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0cy5zaXpl
KCkpOworCisgICAgICAgIGJvb2wgdXBkYXRlSW52YWxpZGF0ZWRTdWJSZWN0ID0gdHJ1ZTsKKyAg
ICAgICAgLy8gR2V0IGEgbGlzdCBvZiBmaXhlZCBvYmplY3RzIHRoYXQgYXJlIG5vdCBpbiB0cmFu
c2Zvcm1hdGlvbnMKKyAgICAgICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPjo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbV9maXhlZFBvc2l0aW9uZWRPYmplY3RzLmVuZCgpOworICAgICAgICBIYXNoU2V0
PFJlbmRlck9iamVjdCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZml4ZWRQb3NpdGlvbmVkT2Jq
ZWN0cy5iZWdpbigpOworICAgICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
ICAgICBSZW5kZXJPYmplY3QqIG9iaiA9ICppdDsKKwkgICAgLy8gbWFrZSBzdXJlIHRoZSBwYXJl
bnQgbGF5ZXIgaGFzIG5vdCBiZWVuIHRyYW5zZm9ybWVkCisgICAgICAgICAgICBpZiAob2JqLT5j
b250YWluaW5nQmxvY2soKSA9PSBvYmotPnZpZXcoKSkgeworICAgICAgICAgICAgICAgIGZpeGVk
T2JqZWN0c0luVmlld3BvcnQuYXBwZW5kKG9iaik7CisgICAgICAgICAgICAgICAgaWYgKGZpeGVk
T2JqZWN0c0luVmlld3BvcnQuc2l6ZSgpID4gZml4ZWRPYmplY3ROdW1iZXJUaHJlc2hvbGQpIHsK
KyAgICAgICAgICAgICAgICAgICAgdXBkYXRlSW52YWxpZGF0ZWRTdWJSZWN0ID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIHNjcm9sbCB0aGUgY29udGVudAorICAgICAgICBp
ZiAodXBkYXRlSW52YWxpZGF0ZWRTdWJSZWN0KSB7CisgICAgICAgICAgICAvLyAxKSBzY3JvbGwK
KyAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3Jv
bGwsIGNsaXBSZWN0KTsKKworICAgICAgICAgICAgLy8gMikgdXBkYXRlIHRoZSBhcmVhIG9mIGZp
eGVkIG9iamV0cyB0aGF0IGhhcyBiZWVuIGludmFsaWRhdGVkCisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGZpeGVkT2JqZWN0c0luVmlld3BvcnQuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICBJbnRSZWN0IHRvcExldmVsUmVjdDsKKyAgICAgICAgICAgICAgICBJbnRS
ZWN0IHVwZGF0ZVJlY3QgPSBmaXhlZE9iamVjdHNJblZpZXdwb3J0W2ldLT5wYWludGluZ1Jvb3RS
ZWN0KHRvcExldmVsUmVjdCk7CisgICAgICAgICAgICAgICAgdXBkYXRlUmVjdC5tb3ZlKC1zY3Jv
bGxYKCksIC1zY3JvbGxZKCkpOworICAgICAgICAgICAgICAgIEludFJlY3Qgc2Nyb2xsZWRSZWN0
ID0gdXBkYXRlUmVjdDsKKyAgICAgICAgICAgICAgICBzY3JvbGxlZFJlY3QubW92ZShzY3JvbGxE
ZWx0YSk7CisgICAgICAgICAgICAgICAgdXBkYXRlUmVjdC51bml0ZShzY3JvbGxlZFJlY3QpOwor
ICAgICAgICAgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CisgICAg
ICAgICAgICAgICAgaG9zdFdpbmRvdygpLT5yZXBhaW50KHVwZGF0ZVJlY3QsIHRydWUsIGZhbHNl
LCB0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8v
IHRoZSBudW1iZXIgb2YgZml4ZWQgb2JqZWN0cyBleGNlZWQgdGhlIHRocmVzaG9sZCwgc28gd2Ug
cmVwYWludCBldmVyeXRoaW5nLgorICAgICAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gY2xp
cFJlY3Q7CisgICAgICAgICAgICB1cGRhdGVSZWN0LmludGVyc2VjdChyZWN0VG9TY3JvbGwpOwor
ICAgICAgICAgICAgaG9zdFdpbmRvdygpLT5yZXBhaW50KHVwZGF0ZVJlY3QsIHRydWUsIGZhbHNl
LCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBGcmFtZVZpZXc6OnNldElzT3Zl
cmxhcHBlZChib29sIGlzT3ZlcmxhcHBlZCkKIHsKICAgICBpZiAoaXNPdmVybGFwcGVkID09IG1f
aXNPdmVybGFwcGVkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGIyN2ZmZDguLmMzZGUwNWIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
QEAgLTE0NSw2ICsxNDUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgYWRkU2xvd1JlcGFpbnRPYmpl
Y3QoKTsKICAgICB2b2lkIHJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KCk7CiAKKyAgICAvLyBNZXRo
b2RzIHRvIG1hbmFnZSB0aGUgb2JqZWN0cyB0aGF0IGFyZSBmaXhlZAorICAgIC8vIGluIHRoZSB2
aWV3IHdoZW4gc2Nyb2xsaW5nCisgICAgdm9pZCByZWdpc3RlckZpeGVkUG9zaXRpb25lZE9iamVj
dChSZW5kZXJPYmplY3QqIG9iamVjdCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyRml4ZWRQb3NpdGlv
bmVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0KTsKKwogICAgIHZvaWQgYmVnaW5EZWZlcnJl
ZFJlcGFpbnRzKCk7CiAgICAgdm9pZCBlbmREZWZlcnJlZFJlcGFpbnRzKCk7CiAgICAgdm9pZCBj
aGVja1N0b3BEZWxheWluZ0RlZmVycmVkUmVwYWludHMoKTsKQEAgLTE5OSw2ICsyMDQsOSBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0ZyYW1lVmlld1Njcm9sbENvcm5lcihSZW5kZXJTY3JvbGxiYXJQ
YXJ0KiBzY3JvbGxDb3JuZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29ybmVyID09IHNjcm9s
bENvcm5lcjsgfQogICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lcigpOwogCitwcm90ZWN0
ZWQ6CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6
ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVj
dCYgY2xpcFJlY3QpOworCiBwcml2YXRlOgogICAgIEZyYW1lVmlldyhGcmFtZSopOwogCkBAIC0y
NjgsNiArMjc2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNPdmVybGFwcGVkOwogICAgIGJv
b2wgbV9jb250ZW50SXNPcGFxdWU7CiAgICAgdW5zaWduZWQgbV9zbG93UmVwYWludE9iamVjdENv
dW50OworICAgIEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4gbV9maXhlZFBvc2l0aW9uZWRPYmplY3Rz
OwogCiAgICAgaW50IG1fYm9yZGVyWCwgbV9ib3JkZXJZOwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cAppbmRleCAwZjY5MjBjLi42MzAzYjQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTUx
NSw3ICs1MTUsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNp
emUmIHNjcm9sbERlbHRhKQogCiAgICAgaWYgKGNhbkJsaXRPblNjcm9sbCgpKSB7IC8vIFRoZSBt
YWluIGZyYW1lIGNhbiBqdXN0IGJsaXQgdGhlIFdlYlZpZXcgd2luZG93CiAgICAgICAgLy8gRklY
TUU6IEZpbmQgYSB3YXkgdG8gYmxpdCBzdWJmcmFtZXMgd2l0aG91dCBibGl0dGluZyBvdmVybGFw
cGluZyBjb250ZW50Ci0gICAgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoLXNjcm9sbERlbHRhLCBz
Y3JvbGxWaWV3UmVjdCwgY2xpcFJlY3QpOworICAgICAgIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgo
LXNjcm9sbERlbHRhLCBzY3JvbGxWaWV3UmVjdCwgY2xpcFJlY3QpOwogICAgIH0gZWxzZSB7IAog
ICAgICAgIC8vIFdlIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJlcGFpbnQgdGhlIGVudGlyZSBiYWNr
aW5nIHN0b3JlLiAgRG8gaXQgbm93IGJlZm9yZSBtb3ZpbmcgdGhlCiAgICAgICAgLy8gd2luZG93
ZWQgcGx1Z2lucy4KQEAgLTUzMCw2ICs1MzAsMTEgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxD
b250ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKICAgICBob3N0V2luZG93KCktPnBh
aW50KCk7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25z
dCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxE
ZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7Cit9CisKIEludFBvaW50IFNjcm9sbFZpZXc6
OndpbmRvd1RvQ29udGVudHMoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSBjb25zdAogewog
ICAgIEludFBvaW50IHZpZXdQb2ludCA9IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyh3aW5k
b3dQb2ludCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IGE3MTczYTcuLjZjYTI1ODEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5oCkBAIC0yNDksNiArMjQ5LDkgQEAgcHJvdGVjdGVkOgogICAgIEludFJl
Y3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3Jv
bGxDb3JuZXIoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CisKKyAgICAvLyBTY3JvbGwgdGhl
IGNvbnRlbnQgYnkgYmxpdHRpbmcgdGhlIHBpeGVscworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxD
b250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0
JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKICAgICAKIHByaXZhdGU6
CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKaW5kZXggNWRkYjg4Mi4uNzdiZDMxOSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCkBAIC0yMTYsNiArMjE2LDExIEBAIFJlbmRlck9iamVjdDo6UmVuZGVy
T2JqZWN0KE5vZGUqIG5vZGUpCiAKIFJlbmRlck9iamVjdDo6flJlbmRlck9iamVjdCgpCiB7Cisg
ICAgaWYgKG1fc3R5bGUgJiYgbV9zdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKSB7
CisgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZG9jdW1lbnQoKS0+dmlldygpOworICAg
ICAgICBpZiAoZnJhbWVWaWV3KQorICAgICAgICAgICAgZnJhbWVWaWV3LT51bnJlZ2lzdGVyRml4
ZWRQb3NpdGlvbmVkT2JqZWN0KHRoaXMpOworICAgIH0KICAgICBBU1NFUlQoIW5vZGUoKSB8fCBk
b2N1bWVudEJlaW5nRGVzdHJveWVkKCkgfHwgIWRvY3VtZW50KCktPmZyYW1lKCktPnZpZXcoKSB8
fCBkb2N1bWVudCgpLT5mcmFtZSgpLT52aWV3KCktPmxheW91dFJvb3QoKSAhPSB0aGlzKTsKICNp
Zm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2hhc0FYT2JqZWN0KTsKQEAgLTE2NDcsMTAgKzE2
NTIsOCBAQCB2b2lkIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3UwogICAgIH0gZWxzZQogICAgICAgICBzX2Fm
ZmVjdHNQYXJlbnRCbG9jayA9IGZhbHNlOwogCi0gICAgaWYgKHZpZXcoKS0+ZnJhbWVWaWV3KCkp
IHsKLSAgICAgICAgLy8gRklYTUU6IEEgYmV0dGVyIHNvbHV0aW9uIHdvdWxkIGJlIHRvIG9ubHkg
aW52YWxpZGF0ZSB0aGUgZml4ZWQgcmVnaW9ucyB3aGVuIHNjcm9sbGluZy4gIEl0J3Mgb3Zlcmtp
bGwgdG8KLSAgICAgICAgLy8gcHJldmVudCB0aGUgZW50aXJlIHZpZXcgZnJvbSBibGl0dGluZyBv
biBhIHNjcm9sbC4KLQorICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gdmlldygpLT5mcmFtZVZp
ZXcoKTsKKyAgICBpZiAoZnJhbWVWaWV3KSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQmxpdE9uRml4
ZWRCYWNrZ3JvdW5kSW1hZ2UgPSBmYWxzZTsKICNpZiBFTkFCTEUoRkFTVF9NT0JJTEVfU0NST0xM
SU5HKQogICAgICAgICAvLyBPbiBsb3ctcG93ZXJlZC9tb2JpbGUgZGV2aWNlcywgcHJldmVudGlu
ZyBibGl0dGluZyBvbiBhIHNjcm9sbCBjYW4gY2F1c2Ugbm90aWNlYWJsZSBkZWxheXMKQEAgLTE2
NjAsMTUgKzE2NjMsMzIgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHls
ZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1MKICAgICAgICAgc2hvdWxk
QmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgPSB0cnVlOwogI2VuZGlmCiAKLSAgICAgICAgYm9v
bCBuZXdTdHlsZVNsb3dTY3JvbGwgPSBuZXdTdHlsZSAmJiAobmV3U3R5bGUtPnBvc2l0aW9uKCkg
PT0gRml4ZWRQb3NpdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8fCAoIXNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG5ld1N0eWxl
LT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpKSk7Ci0gICAgICAgIGJvb2wgb2xkU3R5bGVTbG93
U2Nyb2xsID0gbV9zdHlsZSAmJiAobV9zdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9u
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICghc2hv
dWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3Jv
dW5kSW1hZ2UoKSkpOworICAgICAgICBib29sIG5ld1N0eWxlU2xvd1Njcm9sbCA9IG5ld1N0eWxl
ICYmICFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAmJiBuZXdTdHlsZS0+aGFzRml4
ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKKyAgICAgICAgYm9vbCBvbGRTdHlsZVNsb3dTY3JvbGwgPSBt
X3N0eWxlICYmICFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAmJiBtX3N0eWxlLT5o
YXNGaXhlZEJhY2tncm91bmRJbWFnZSgpOworCiAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3Jv
bGwgIT0gbmV3U3R5bGVTbG93U2Nyb2xsKSB7CiAgICAgICAgICAgICBpZiAob2xkU3R5bGVTbG93
U2Nyb2xsKQotICAgICAgICAgICAgICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnJlbW92ZVNsb3dS
ZXBhaW50T2JqZWN0KCk7CisgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5yZW1vdmVTbG93UmVw
YWludE9iamVjdCgpOwogICAgICAgICAgICAgaWYgKG5ld1N0eWxlU2xvd1Njcm9sbCkKLSAgICAg
ICAgICAgICAgICB2aWV3KCktPmZyYW1lVmlldygpLT5hZGRTbG93UmVwYWludE9iamVjdCgpOwor
ICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+YWRkU2xvd1JlcGFpbnRPYmplY3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGJvb2wgbmV3U3R5bGVIYXNUcmFuc2Zvcm0gPSBuZXdTdHlsZSAmJiAo
bmV3U3R5bGUtPmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKTsKKyAgICAgICAgaWYgKCFu
ZXdTdHlsZUhhc1RyYW5zZm9ybSkgeworICAgICAgICAgICAgYm9vbCBuZXdTdHlsZUhhc0ZpeGVk
UG9zaXRpb24gPSBuZXdTdHlsZSAmJiAobmV3U3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3Np
dGlvbik7CisgICAgICAgICAgICBib29sIG9sZFN0eWxlSGFzRml4ZWRQb3NpdGlvbiA9IG1fc3R5
bGUgJiYgKG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIGlmIChvbGRTdHlsZUhhc0ZpeGVkUG9zaXRpb24gIT0gbmV3U3R5bGVIYXNGaXhlZFBvc2l0
aW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5yZWdpc3RlckZpeGVkUG9zaXRpb25lZE9iamVj
dCh0aGlzKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZyYW1l
Vmlldy0+dW5yZWdpc3RlckZpeGVkUG9zaXRpb25lZE9iamVjdCh0aGlzKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gaWYgcHJldmlvdXNseSBoYWQgYSBmaXggcG9z
aXRpb24sIGJ1dCBoYWQgYSB0cmFuc2Zvcm0sIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQKKyAgICAg
ICAgICAgICAgICBib29sIG9sZFN0eWxlSGFzVHJhbnNmb3JtID0gbV9zdHlsZSAmJiAobV9zdHls
ZS0+aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpOworICAgICAgICAgICAgICAgIGlmIChv
bGRTdHlsZUhhc1RyYW5zZm9ybSAmJiBuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgICAgIGZyYW1lVmlldy0+cmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3QodGhp
cyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47114</attachid>
            <date>2010-01-21 06:05:38 -0800</date>
            <delta_ts>2010-02-08 15:13:11 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>10649</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTI2NmRhZS4uYTU3NTI1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMS0yMCAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIFJlbmRlck9iamVjdHMgd2l0aCBmaXhlZCBwb3NpdGlvbiByZWdpc3RlcnMgdG8gdGhl
IHZpZXcKKyAgICAgICAgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50IHdoaWxlIHNjcm9sbGluZy4K
KyAgICAgICAgVGhlIHNjcm9sbGluZyBjb2RlIHVwZGF0ZSBzcGVjaWZpY2FsbHkgdGhvc2UgZWxl
bWVudHMgYWZ0ZXIgYmxpdHRpbmcgdGhlIHBpeGVscy4KKworCisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZWdpc3RlckZpeGVkUG9z
aXRpb25lZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVucmVnaXN0ZXJG
aXhlZFBvc2l0aW9uZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3Jv
bGxDb250ZW50c0Zhc3RQYXRoKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6c2Nyb2xsQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xs
Q29udGVudHNGYXN0UGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0Ojp+UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6c3R5bGVXaWxsQ2hhbmdlKToKKwogMjAxMC0wMS0yMCAgU2ltb24gSGF1c21hbm4gIDxzaW1v
bi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVz
dGLDuC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggODZlMTNhNy4uZjYzNjVmOSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
QEAgLTgxMyw2ICs4MTMsNjggQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVNsb3dSZXBhaW50T2Jq
ZWN0KCkKICAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCF1c2VTbG93UmVwYWludHMoKSk7CiB9
CiAKKwordm9pZCBGcmFtZVZpZXc6OnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KFJlbmRl
ck9iamVjdCogb2JqZWN0KQoreworICAgIG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0cy5hZGQob2Jq
ZWN0KTsKK30KKwordm9pZCBGcmFtZVZpZXc6OnVucmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmpl
Y3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgbV9maXhlZFBvc2l0aW9uZWRPYmplY3Rz
LnJlbW92ZShvYmplY3QpOworfQorCit2b2lkIEZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0
UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Ny
b2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBjb25zdCBzaXplX3QgZml4ZWRP
YmplY3ROdW1iZXJUaHJlc2hvbGQgPSA1OworCisgICAgaWYgKG1fZml4ZWRQb3NpdGlvbmVkT2Jq
ZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRh
LCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgVmVjdG9yPFJl
bmRlck9iamVjdCo+IGZpeGVkT2JqZWN0c0luVmlld3BvcnQ7CisgICAgICAgIGZpeGVkT2JqZWN0
c0luVmlld3BvcnQucmVzZXJ2ZUNhcGFjaXR5KG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0cy5zaXpl
KCkpOworCisgICAgICAgIGJvb2wgdXBkYXRlSW52YWxpZGF0ZWRTdWJSZWN0ID0gdHJ1ZTsKKyAg
ICAgICAgLy8gR2V0IGEgbGlzdCBvZiBmaXhlZCBvYmplY3RzIHRoYXQgYXJlIG5vdCBpbiB0cmFu
c2Zvcm1hdGlvbnMKKyAgICAgICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPjo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbV9maXhlZFBvc2l0aW9uZWRPYmplY3RzLmVuZCgpOworICAgICAgICBIYXNoU2V0
PFJlbmRlck9iamVjdCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZml4ZWRQb3NpdGlvbmVkT2Jq
ZWN0cy5iZWdpbigpOworICAgICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
ICAgICBSZW5kZXJPYmplY3QqIG9iaiA9ICppdDsKKyAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0
aGUgcGFyZW50IGxheWVyIGhhcyBub3QgYmVlbiB0cmFuc2Zvcm1lZAorICAgICAgICAgICAgaWYg
KG9iai0+Y29udGFpbmluZ0Jsb2NrKCkgPT0gb2JqLT52aWV3KCkpIHsKKyAgICAgICAgICAgICAg
ICBmaXhlZE9iamVjdHNJblZpZXdwb3J0LmFwcGVuZChvYmopOworICAgICAgICAgICAgICAgIGlm
IChmaXhlZE9iamVjdHNJblZpZXdwb3J0LnNpemUoKSA+IGZpeGVkT2JqZWN0TnVtYmVyVGhyZXNo
b2xkKSB7CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUludmFsaWRhdGVkU3ViUmVjdCA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBzY3JvbGwgdGhlIGNvbnRlbnQKKyAg
ICAgICAgaWYgKHVwZGF0ZUludmFsaWRhdGVkU3ViUmVjdCkgeworICAgICAgICAgICAgLy8gMSkg
c2Nyb2xsCisgICAgICAgICAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVj
dFRvU2Nyb2xsLCBjbGlwUmVjdCk7CisKKyAgICAgICAgICAgIC8vIDIpIHVwZGF0ZSB0aGUgYXJl
YSBvZiBmaXhlZCBvYmpldHMgdGhhdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAorICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaXhlZE9iamVjdHNJblZpZXdwb3J0LnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAgICAgICAgICAg
ICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gZml4ZWRPYmplY3RzSW5WaWV3cG9ydFtpXS0+cGFpbnRp
bmdSb290UmVjdCh0b3BMZXZlbFJlY3QpOworICAgICAgICAgICAgICAgIHVwZGF0ZVJlY3QubW92
ZSgtc2Nyb2xsWCgpLCAtc2Nyb2xsWSgpKTsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHNjcm9s
bGVkUmVjdCA9IHVwZGF0ZVJlY3Q7CisgICAgICAgICAgICAgICAgc2Nyb2xsZWRSZWN0Lm1vdmUo
c2Nyb2xsRGVsdGEpOworICAgICAgICAgICAgICAgIHVwZGF0ZVJlY3QudW5pdGUoc2Nyb2xsZWRS
ZWN0KTsKKyAgICAgICAgICAgICAgICB1cGRhdGVSZWN0LmludGVyc2VjdChyZWN0VG9TY3JvbGwp
OworICAgICAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+cmVwYWludCh1cGRhdGVSZWN0LCB0cnVl
LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyB0aGUgbnVtYmVyIG9mIGZpeGVkIG9iamVjdHMgZXhjZWVkIHRoZSB0aHJlc2hvbGQs
IHNvIHdlIHJlcGFpbnQgZXZlcnl0aGluZy4KKyAgICAgICAgICAgIEludFJlY3QgdXBkYXRlUmVj
dCA9IGNsaXBSZWN0OworICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVjdFRvU2Ny
b2xsKTsKKyAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+cmVwYWludCh1cGRhdGVSZWN0LCB0cnVl
LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgRnJhbWVWaWV3Ojpz
ZXRJc092ZXJsYXBwZWQoYm9vbCBpc092ZXJsYXBwZWQpCiB7CiAgICAgaWYgKGlzT3ZlcmxhcHBl
ZCA9PSBtX2lzT3ZlcmxhcHBlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aCBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiMjdmZmQ4Li5jM2RlMDViIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCkBAIC0xNDUsNiArMTQ1LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNsb3dSZXBh
aW50T2JqZWN0KCk7CiAgICAgdm9pZCByZW1vdmVTbG93UmVwYWludE9iamVjdCgpOwogCisgICAg
Ly8gTWV0aG9kcyB0byBtYW5hZ2UgdGhlIG9iamVjdHMgdGhhdCBhcmUgZml4ZWQKKyAgICAvLyBp
biB0aGUgdmlldyB3aGVuIHNjcm9sbGluZworICAgIHZvaWQgcmVnaXN0ZXJGaXhlZFBvc2l0aW9u
ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpOworICAgIHZvaWQgdW5yZWdpc3RlckZpeGVk
UG9zaXRpb25lZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCk7CisKICAgICB2b2lkIGJlZ2lu
RGVmZXJyZWRSZXBhaW50cygpOwogICAgIHZvaWQgZW5kRGVmZXJyZWRSZXBhaW50cygpOwogICAg
IHZvaWQgY2hlY2tTdG9wRGVsYXlpbmdEZWZlcnJlZFJlcGFpbnRzKCk7CkBAIC0xOTksNiArMjA0
LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNGcmFtZVZpZXdTY3JvbGxDb3JuZXIoUmVuZGVyU2Ny
b2xsYmFyUGFydCogc2Nyb2xsQ29ybmVyKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbENvcm5lciA9
PSBzY3JvbGxDb3JuZXI7IH0KICAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXIoKTsKIAor
cHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0
IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0KTsKKwogcHJpdmF0ZToKICAgICBGcmFtZVZpZXcoRnJhbWUqKTsK
IApAQCAtMjY4LDYgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzT3ZlcmxhcHBlZDsK
ICAgICBib29sIG1fY29udGVudElzT3BhcXVlOwogICAgIHVuc2lnbmVkIG1fc2xvd1JlcGFpbnRP
YmplY3RDb3VudDsKKyAgICBIYXNoU2V0PFJlbmRlck9iamVjdCo+IG1fZml4ZWRQb3NpdGlvbmVk
T2JqZWN0czsKIAogICAgIGludCBtX2JvcmRlclgsIG1fYm9yZGVyWTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKaW5kZXggMGY2OTIwYy4uNjMwM2I0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
CkBAIC01MTUsNyArNTE1LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25z
dCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKIAogICAgIGlmIChjYW5CbGl0T25TY3JvbGwoKSkgeyAv
LyBUaGUgbWFpbiBmcmFtZSBjYW4ganVzdCBibGl0IHRoZSBXZWJWaWV3IHdpbmRvdwogICAgICAg
IC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGJsaXQgc3ViZnJhbWVzIHdpdGhvdXQgYmxpdHRpbmcg
b3ZlcmxhcHBpbmcgY29udGVudAotICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKC1zY3JvbGxE
ZWx0YSwgc2Nyb2xsVmlld1JlY3QsIGNsaXBSZWN0KTsKKyAgICAgICBzY3JvbGxDb250ZW50c0Zh
c3RQYXRoKC1zY3JvbGxEZWx0YSwgc2Nyb2xsVmlld1JlY3QsIGNsaXBSZWN0KTsKICAgICB9IGVs
c2UgeyAKICAgICAgICAvLyBXZSBuZWVkIHRvIGdvIGFoZWFkIGFuZCByZXBhaW50IHRoZSBlbnRp
cmUgYmFja2luZyBzdG9yZS4gIERvIGl0IG5vdyBiZWZvcmUgbW92aW5nIHRoZQogICAgICAgIC8v
IHdpbmRvd2VkIHBsdWdpbnMuCkBAIC01MzAsNiArNTMwLDExIEBAIHZvaWQgU2Nyb2xsVmlldzo6
c2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAgICAgaG9zdFdpbmRv
dygpLT5wYWludCgpOwogfQogCit2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBh
dGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9s
bCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCit7CisgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwo
c2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworfQorCiBJbnRQb2ludCBTY3Jv
bGxWaWV3Ojp3aW5kb3dUb0NvbnRlbnRzKGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgY29u
c3QKIHsKICAgICBJbnRQb2ludCB2aWV3UG9pbnQgPSBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5k
b3cod2luZG93UG9pbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmggYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCBhNzE3M2E3Li42Y2EyNTgx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtMjQ5LDYgKzI0OSw5IEBAIHByb3RlY3RlZDoKICAg
ICBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlU2Nyb2xsQ29ybmVyKCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOworCisgICAgLy8gU2Ny
b2xsIHRoZSBjb250ZW50IGJ5IGJsaXR0aW5nIHRoZSBwaXhlbHMKKyAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3Qg
SW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgCiBw
cml2YXRlOgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDVkZGI4ODIuLjc3YmQzMTkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMjE2LDYgKzIxNiwxMSBAQCBSZW5kZXJPYmplY3Q6
OlJlbmRlck9iamVjdChOb2RlKiBub2RlKQogCiBSZW5kZXJPYmplY3Q6On5SZW5kZXJPYmplY3Qo
KQogeworICAgIGlmIChtX3N0eWxlICYmIG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3Np
dGlvbikgeworICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGRvY3VtZW50KCktPnZpZXco
KTsKKyAgICAgICAgaWYgKGZyYW1lVmlldykKKyAgICAgICAgICAgIGZyYW1lVmlldy0+dW5yZWdp
c3RlckZpeGVkUG9zaXRpb25lZE9iamVjdCh0aGlzKTsKKyAgICB9CiAgICAgQVNTRVJUKCFub2Rl
KCkgfHwgZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpIHx8ICFkb2N1bWVudCgpLT5mcmFtZSgpLT52
aWV3KCkgfHwgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+dmlldygpLT5sYXlvdXRSb290KCkgIT0gdGhp
cyk7CiAjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghbV9oYXNBWE9iamVjdCk7CkBAIC0xNjQ3
LDEwICsxNjUyLDggQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1MKICAgICB9IGVsc2UKICAgICAg
ICAgc19hZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsKIAotICAgIGlmICh2aWV3KCktPmZyYW1l
VmlldygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBIGJldHRlciBzb2x1dGlvbiB3b3VsZCBiZSB0
byBvbmx5IGludmFsaWRhdGUgdGhlIGZpeGVkIHJlZ2lvbnMgd2hlbiBzY3JvbGxpbmcuICBJdCdz
IG92ZXJraWxsIHRvCi0gICAgICAgIC8vIHByZXZlbnQgdGhlIGVudGlyZSB2aWV3IGZyb20gYmxp
dHRpbmcgb24gYSBzY3JvbGwuCi0KKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHZpZXcoKS0+
ZnJhbWVWaWV3KCk7CisgICAgaWYgKGZyYW1lVmlldykgewogICAgICAgICBib29sIHNob3VsZEJs
aXRPbkZpeGVkQmFja2dyb3VuZEltYWdlID0gZmFsc2U7CiAjaWYgRU5BQkxFKEZBU1RfTU9CSUxF
X1NDUk9MTElORykKICAgICAgICAgLy8gT24gbG93LXBvd2VyZWQvbW9iaWxlIGRldmljZXMsIHBy
ZXZlbnRpbmcgYmxpdHRpbmcgb24gYSBzY3JvbGwgY2FuIGNhdXNlIG5vdGljZWFibGUgZGVsYXlz
CkBAIC0xNjYwLDE1ICsxNjYzLDMyIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTCiAgICAgICAg
IHNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlID0gdHJ1ZTsKICNlbmRpZgogCi0gICAg
ICAgIGJvb2wgbmV3U3R5bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgKG5ld1N0eWxlLT5wb3Np
dGlvbigpID09IEZpeGVkUG9zaXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfHwgKCFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAmJiBu
ZXdTdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSkpOwotICAgICAgICBib29sIG9sZFN0
eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYgKG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQ
b3NpdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
fCAoIXNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG1fc3R5bGUtPmhhc0ZpeGVk
QmFja2dyb3VuZEltYWdlKCkpKTsKKyAgICAgICAgYm9vbCBuZXdTdHlsZVNsb3dTY3JvbGwgPSBu
ZXdTdHlsZSAmJiAhc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbmV3U3R5bGUt
Pmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCk7CisgICAgICAgIGJvb2wgb2xkU3R5bGVTbG93U2Ny
b2xsID0gbV9zdHlsZSAmJiAhc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbV9z
dHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKKwogICAgICAgICBpZiAob2xkU3R5bGVT
bG93U2Nyb2xsICE9IG5ld1N0eWxlU2xvd1Njcm9sbCkgewogICAgICAgICAgICAgaWYgKG9sZFN0
eWxlU2xvd1Njcm9sbCkKLSAgICAgICAgICAgICAgICB2aWV3KCktPmZyYW1lVmlldygpLT5yZW1v
dmVTbG93UmVwYWludE9iamVjdCgpOworICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+cmVtb3Zl
U2xvd1JlcGFpbnRPYmplY3QoKTsKICAgICAgICAgICAgIGlmIChuZXdTdHlsZVNsb3dTY3JvbGwp
Ci0gICAgICAgICAgICAgICAgdmlldygpLT5mcmFtZVZpZXcoKS0+YWRkU2xvd1JlcGFpbnRPYmpl
Y3QoKTsKKyAgICAgICAgICAgICAgICBmcmFtZVZpZXctPmFkZFNsb3dSZXBhaW50T2JqZWN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBib29sIG5ld1N0eWxlSGFzVHJhbnNmb3JtID0gbmV3U3R5
bGUgJiYgKG5ld1N0eWxlLT5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSk7CisgICAgICAg
IGlmICghbmV3U3R5bGVIYXNUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIGJvb2wgbmV3U3R5bGVI
YXNGaXhlZFBvc2l0aW9uID0gbmV3U3R5bGUgJiYgKG5ld1N0eWxlLT5wb3NpdGlvbigpID09IEZp
eGVkUG9zaXRpb24pOworICAgICAgICAgICAgYm9vbCBvbGRTdHlsZUhhc0ZpeGVkUG9zaXRpb24g
PSBtX3N0eWxlICYmIChtX3N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pOworCisg
ICAgICAgICAgICBpZiAob2xkU3R5bGVIYXNGaXhlZFBvc2l0aW9uICE9IG5ld1N0eWxlSGFzRml4
ZWRQb3NpdGlvbikgeworICAgICAgICAgICAgICAgIGlmIChuZXdTdHlsZUhhc0ZpeGVkUG9zaXRp
b24pCisgICAgICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+cmVnaXN0ZXJGaXhlZFBvc2l0aW9u
ZWRPYmplY3QodGhpcyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBmcmFtZVZpZXctPnVucmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3QodGhpcyk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGlmIHByZXZpb3VzbHkgaGFkIGEg
Zml4IHBvc2l0aW9uLCBidXQgaGFkIGEgdHJhbnNmb3JtLCB3aGljaCBoYXMgYmVlbiByZW1vdmVk
CisgICAgICAgICAgICAgICAgYm9vbCBvbGRTdHlsZUhhc1RyYW5zZm9ybSA9IG1fc3R5bGUgJiYg
KG1fc3R5bGUtPmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKTsKKyAgICAgICAgICAgICAg
ICBpZiAob2xkU3R5bGVIYXNUcmFuc2Zvcm0gJiYgbmV3U3R5bGVIYXNGaXhlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2Jq
ZWN0KHRoaXMpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>47153</attachid>
            <date>2010-01-21 15:38:01 -0800</date>
            <delta_ts>2010-01-21 15:38:01 -0800</delta_ts>
            <desc>crash log from commit bot</desc>
            <filename>DumpRenderTree_2010-01-21-111820_eseidel-mac2.crash</filename>
            <type>text/plain</type>
            <size>52072</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">UHJvY2VzczogICAgICAgICBEdW1wUmVuZGVyVHJlZSBbMzE3MDBdClBhdGg6ICAgICAgICAgICAg
L1VzZXJzL2VzZWlkZWwvUHJvamVjdHMvQ29tbWl0UXVldWUvV2ViS2l0QnVpbGQvUmVsZWFzZS9E
dW1wUmVuZGVyVHJlZQpJZGVudGlmaWVyOiAgICAgIER1bXBSZW5kZXJUcmVlClZlcnNpb246ICAg
ICAgICAgPz8/ICg/Pz8pCkNvZGUgVHlwZTogICAgICAgWDg2IChOYXRpdmUpClBhcmVudCBQcm9j
ZXNzOiAgcGVybCBbMzE1NThdCgpEYXRlL1RpbWU6ICAgICAgIDIwMTAtMDEtMjEgMTE6MTg6MjAu
NDM3IC0wODAwCk9TIFZlcnNpb246ICAgICAgTWFjIE9TIFggMTAuNS44ICg5TDMxYSkKUmVwb3J0
IFZlcnNpb246ICA2CkFub255bW91cyBVVUlEOiAgMzNEMUI2QzYtMUZGNS00OTY0LUEyMDMtNUE4
NDhCNDVBQzBECgpFeGNlcHRpb24gVHlwZTogIEVYQ19CQURfQUNDRVNTIChTSUdCVVMpCkV4Y2Vw
dGlvbiBDb2RlczogS0VSTl9QUk9URUNUSU9OX0ZBSUxVUkUgYXQgMHgwMDAwMDAwMDAwMDAwMDEw
CkNyYXNoZWQgVGhyZWFkOiAgMAoKVGhyZWFkIDAgQ3Jhc2hlZDoKMCAgIGNvbS5hcHBsZS5XZWJD
b3JlICAgICAgICAgICAgIAkweDAyMzE1ZWIzIFdlYkNvcmU6OlJlbmRlck9iamVjdDo6flJlbmRl
ck9iamVjdCgpICsgMTMxCjEgICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgwMjU2
MGJlZSBXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6flJlbmRlckVtYmVkZGVkT2JqZWN0
KCkgKyA5NAoyICAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDIzMGZiYzQgV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0OjphcmVuYURlbGV0ZShXZWJDb3JlOjpSZW5kZXJBcmVuYSosIHZv
aWQqKSArIDE4MCAoUmVuZGVyT2JqZWN0LmNwcDoyMDIyKQozICAgY29tLmFwcGxlLldlYkNvcmUg
ICAgICAgICAgICAgCTB4MDIzNWMxODMgV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpkZXJlZihXZWJD
b3JlOjpSZW5kZXJBcmVuYSopICsgNTEgKFJlbmRlcldpZGdldC5jcHA6Mjk0KQo0ICAgY29tLmFw
cGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDIzNWNlZTcgV2ViQ29yZTo6UmVuZGVyV2lkZ2V0
OjpkZXN0cm95KCkgKyAyNDcgKFJlbmRlcldpZGdldC5jcHA6MTQzKQo1ICAgY29tLmFwcGxlLldl
YkNvcmUgICAgICAgICAgICAgCTB4MDIyNWMyZGEgV2ViQ29yZTo6Tm9kZTo6ZGV0YWNoKCkgKyA0
MiAoTm9kZS5jcHA6MTI1OSkKNiAgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAx
ZDBmMmEyIFdlYkNvcmU6OkVsZW1lbnQ6OmRldGFjaCgpICsgMTE0IChFbGVtZW50LmNwcDo3OTMp
CjcgICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgwMWIyNDdiYiBXZWJDb3JlOjpD
b250YWluZXJOb2RlOjpkZXRhY2goKSArIDQzIChOb2RlLmg6MTIwKQo4ICAgY29tLmFwcGxlLldl
YkNvcmUgICAgICAgICAgICAgCTB4MDFkMGYyYTIgV2ViQ29yZTo6RWxlbWVudDo6ZGV0YWNoKCkg
KyAxMTQgKEVsZW1lbnQuY3BwOjc5MykKOSAgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAg
IAkweDAxYjI2MDhkIFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkKFdlYkNvcmU6
Ok5vZGUqLCBpbnQmKSArIDM5NyAoQ29udGFpbmVyTm9kZS5jcHA6MzQ1KQoxMCAgY29tLmFwcGxl
LldlYkNvcmUgICAgICAgICAgICAgCTB4MDIwNzM4YWUgV2ViQ29yZTo6SlNOb2RlOjpyZW1vdmVD
aGlsZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6QXJnTGlzdCBjb25zdCYpICsgNzggKEpTTm9kZUN1
c3RvbS5jcHA6OTQpCjExICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgwMjA3MTky
ZSBXZWJDb3JlOjpqc05vZGVQcm90b3R5cGVGdW5jdGlvblJlbW92ZUNoaWxkKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSwgSlNDOjpBcmdMaXN0IGNvbnN0Jikg
KyAxNDIgKEpTTm9kZS5jcHA6NDMyKQoxMiAgPz8/ICAgICAgICAgICAgICAgICAgICAgICAgICAg
CTB4MDAxN2YxNjYgMCArIDE1NjkxMjYKMTMgIGNvbS5hcHBsZS5KYXZhU2NyaXB0Q29yZSAgICAg
IAkweDAwMmMxYWExIEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUoSlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGUqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNGdW5jdGlvbiosIEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkFyZ0xpc3QgY29uc3QmLCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKiwgSlNDOjpKU1ZhbHVl
KikgKyA1NzcgKEpJVENvZGUuaDo3OSkKMTQgIGNvbS5hcHBsZS5KYXZhU2NyaXB0Q29yZSAgICAg
IAkweDAwMzIwMTlmIEpTQzo6SlNGdW5jdGlvbjo6Y2FsbChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSwgSlNDOjpBcmdMaXN0IGNvbnN0JikgKyAxMjcgKEpTRnVuY3Rpb24uY3BwOjEyMykK
MTUgIGNvbS5hcHBsZS5KYXZhU2NyaXB0Q29yZSAgICAgIAkweDAwMjczODA5IEpTQzo6Y2FsbChK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpDYWxsVHlwZSwgSlNDOjpDYWxsRGF0
YSBjb25zdCYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpBcmdMaXN0IGNvbnN0JikgKyA1NyAoQ2FsbERh
dGEuY3BwOjQwKQoxNiAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDIzODExNWQg
V2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlRnVuY3Rpb25JbkNvbnRleHQoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSkgKyAzODEgKFJlZlB0ci5oOjU3KQoxNyAgY29t
LmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDIzODE0YTMgV2ViQ29yZTo6U2NoZWR1bGVk
QWN0aW9uOjpleGVjdXRlKFdlYkNvcmU6OkRvY3VtZW50KikgKyAyOTEgKFNjaGVkdWxlZEFjdGlv
bi5jcHA6MTI3KQoxOCAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDFjZThmYzQg
V2ViQ29yZTo6RE9NVGltZXI6OmZpcmVkKCkgKyAyNzYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQu
aDoxMzYpCjE5ICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgwMjRlMjZlZSBXZWJD
b3JlOjpUaHJlYWRUaW1lcnM6OnNoYXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpICsgMTU4IChUaHJl
YWRUaW1lcnMuY3BwOjExNSkKMjAgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAy
NGUyN2IyIFdlYkNvcmU6OlRocmVhZFRpbWVyczo6c2hhcmVkVGltZXJGaXJlZCgpICsgNjYgKFRo
cmVhZFRpbWVycy5jcHA6OTEpCjIxICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgw
MjNiNjU3NCBfX1pON1dlYkNvcmVMMTB0aW1lckZpcmVkRVAxNl9fQ0ZSdW5Mb29wVGltZXJQdiAr
IDY4IChTaGFyZWRUaW1lck1hYy5tbTo4NykKMjIgIGNvbS5hcHBsZS5Db3JlRm91bmRhdGlvbiAg
ICAgIAkweDkxOTk5OGY1IENGUnVuTG9vcFJ1blNwZWNpZmljICsgNDQ2OQoyMyAgY29tLmFwcGxl
LkNvcmVGb3VuZGF0aW9uICAgICAgCTB4OTE5OTlhYTggQ0ZSdW5Mb29wUnVuSW5Nb2RlICsgODgK
MjQgIGNvbS5hcHBsZS5Gb3VuZGF0aW9uICAgICAgICAgIAkweDkyNjA4M2Q1IC1bTlNSdW5Mb29w
KE5TUnVuTG9vcCkgcnVuTW9kZTpiZWZvcmVEYXRlOl0gKyAyMTMKMjUgIER1bXBSZW5kZXJUcmVl
ICAgICAgICAgICAgICAgIAkweDAwMDBhYTQyIHJ1blRlc3Qoc3RkOjpiYXNpY19zdHJpbmc8Y2hh
ciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCYp
ICsgMTM3NAoyNiAgRHVtcFJlbmRlclRyZWUgICAgICAgICAgICAgICAgCTB4MDAwMGIyZjYgZHVt
cFJlbmRlclRyZWUoaW50LCBjaGFyIGNvbnN0KiopICsgMTMxMAoyNyAgRHVtcFJlbmRlclRyZWUg
ICAgICAgICAgICAgICAgCTB4MDAwMGI1ZTUgbWFpbiArIDg5IChEdW1wUmVuZGVyVHJlZS5tbTo2
NjQpCjI4ICBEdW1wUmVuZGVyVHJlZSAgICAgICAgICAgICAgICAJMHgwMDAwMjQwMiBzdGFydCAr
IDU0CgpUaHJlYWQgMToKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZWVj
Mjg2IG1hY2hfbXNnX3RyYXAgKyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAg
CTB4OTJlZjNhN2MgbWFjaF9tc2cgKyA3MgoyICAgY29tLmFwcGxlLkNvcmVGb3VuZGF0aW9uICAg
ICAgCTB4OTE5OThlN2UgQ0ZSdW5Mb29wUnVuU3BlY2lmaWMgKyAxNzkwCjMgICBjb20uYXBwbGUu
Q29yZUZvdW5kYXRpb24gICAgICAJMHg5MTk5OWFhOCBDRlJ1bkxvb3BSdW5Jbk1vZGUgKyA4OAo0
ICAgY29tLmFwcGxlLkZvdW5kYXRpb24gICAgICAgICAgCTB4OTI2Mzc1MjAgK1tOU1VSTENvbm5l
Y3Rpb24oTlNVUkxDb25uZWN0aW9uUmVhbGx5SW50ZXJuYWwpIF9yZXNvdXJjZUxvYWRMb29wOl0g
KyAzMjAKNSAgIGNvbS5hcHBsZS5Gb3VuZGF0aW9uICAgICAgICAgIAkweDkyNWQzZGZkIC1bTlNU
aHJlYWQgbWFpbl0gKyA0NQo2ICAgY29tLmFwcGxlLkZvdW5kYXRpb24gICAgICAgICAgCTB4OTI1
ZDM5YTQgX19OU1RocmVhZF9fbWFpbl9fICsgMzA4CjcgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAg
ICAgICAgICAJMHg5MmYxZDE1NSBfcHRocmVhZF9zdGFydCArIDMyMQo4ICAgbGliU3lzdGVtLkIu
ZHlsaWIgICAgICAgICAgICAgCTB4OTJmMWQwMTIgdGhyZWFkX3N0YXJ0ICsgMzQKClRocmVhZCAy
OgowICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJlZWMyODYgbWFjaF9tc2df
dHJhcCArIDEwCjEgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmVmM2E3YyBt
YWNoX21zZyArIDcyCjIgICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJMHg5MTk5OGU3
ZSBDRlJ1bkxvb3BSdW5TcGVjaWZpYyArIDE3OTAKMyAgIGNvbS5hcHBsZS5Db3JlRm91bmRhdGlv
biAgICAgIAkweDkxOTk5YWE4IENGUnVuTG9vcFJ1bkluTW9kZSArIDg4CjQgICBjb20uYXBwbGUu
Q0ZOZXR3b3JrICAgICAgICAgICAJMHg5NWVhMTI2NCBDRlVSTENhY2hlV29ya2VyVGhyZWFkKHZv
aWQqKSArIDM4OAo1ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJmMWQxNTUg
X3B0aHJlYWRfc3RhcnQgKyAzMjEKNiAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkw
eDkyZjFkMDEyIHRocmVhZF9zdGFydCArIDM0CgpUaHJlYWQgMzoKMCAgIGxpYlN5c3RlbS5CLmR5
bGliICAgICAgICAgICAgIAkweDkyZWYzNDZlIF9fc2Vtd2FpdF9zaWduYWwgKyAxMAoxICAgbGli
U3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJmNDhlNzEgc2xlZXAkVU5JWDIwMDMgKyA2
MwoyICAgY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlICAgICAgCTB4MDAyOWQwYTMgV1RGOjpUQ01h
bGxvY19QYWdlSGVhcDo6c2NhdmVuZ2VyVGhyZWFkKCkgKyAxMzEgKFRDU3BpbkxvY2suaDo3MCkK
MyAgIGNvbS5hcHBsZS5KYXZhU2NyaXB0Q29yZSAgICAgIAkweDAwMjlkMjYxIFdURjo6VENNYWxs
b2NfUGFnZUhlYXA6OnJ1blNjYXZlbmdlclRocmVhZCh2b2lkKikgKyAxNyAoRmFzdE1hbGxvYy5j
cHA6MTQ0OCkKNCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZjFkMTU1IF9w
dGhyZWFkX3N0YXJ0ICsgMzIxCjUgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5
MmYxZDAxMiB0aHJlYWRfc3RhcnQgKyAzNAoKVGhyZWFkIDQ6CjAgICBsaWJTeXN0ZW0uQi5keWxp
YiAgICAgICAgICAgICAJMHg5MmYzYjZmYSBzZWxlY3QkREFSV0lOX0VYVFNOICsgMTAKMSAgIGxp
YlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZjFkMTU1IF9wdGhyZWFkX3N0YXJ0ICsg
MzIxCjIgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmYxZDAxMiB0aHJlYWRf
c3RhcnQgKyAzNAoKVGhyZWFkIDU6CjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJ
MHg5MmVmMzQ2ZSBfX3NlbXdhaXRfc2lnbmFsICsgMTAKMSAgIGxpYlN5c3RlbS5CLmR5bGliICAg
ICAgICAgICAgIAkweDkyZjFkZGNkIHB0aHJlYWRfY29uZF93YWl0JFVOSVgyMDAzICsgNzMKMiAg
IGNvbS5hcHBsZS5Db2xvclN5bmMgICAgICAgICAgIAkweDk3NDFkM2Y4IHB0aHJlYWRTZW1hcGhv
cmVXYWl0KHRfcHRocmVhZFNlbWFwaG9yZSopICsgNDIKMyAgIGNvbS5hcHBsZS5Db2xvclN5bmMg
ICAgICAgICAgIAkweDk3NDJmZDRlIENNTUNvbnZUYXNrKHZvaWQqKSArIDU0CjQgICBsaWJTeXN0
ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmYxZDE1NSBfcHRocmVhZF9zdGFydCArIDMyMQo1
ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJmMWQwMTIgdGhyZWFkX3N0YXJ0
ICsgMzQKClRocmVhZCA2OgowICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJl
ZjM0NmUgX19zZW13YWl0X3NpZ25hbCArIDEwCjEgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAg
ICAgICAJMHg5MmYxZGRjZCBwdGhyZWFkX2NvbmRfd2FpdCRVTklYMjAwMyArIDczCjIgICBjb20u
YXBwbGUuQ29sb3JTeW5jICAgICAgICAgICAJMHg5NzQxZDNmOCBwdGhyZWFkU2VtYXBob3JlV2Fp
dCh0X3B0aHJlYWRTZW1hcGhvcmUqKSArIDQyCjMgICBjb20uYXBwbGUuQ29sb3JTeW5jICAgICAg
ICAgICAJMHg5NzQyZmQ0ZSBDTU1Db252VGFzayh2b2lkKikgKyA1NAo0ICAgbGliU3lzdGVtLkIu
ZHlsaWIgICAgICAgICAgICAgCTB4OTJmMWQxNTUgX3B0aHJlYWRfc3RhcnQgKyAzMjEKNSAgIGxp
YlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZjFkMDEyIHRocmVhZF9zdGFydCArIDM0
CgpUaHJlYWQgNzoKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZWYzNDZl
IF9fc2Vtd2FpdF9zaWduYWwgKyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAg
CTB4OTJmMWRkY2QgcHRocmVhZF9jb25kX3dhaXQkVU5JWDIwMDMgKyA3MwoyICAgY29tLmFwcGxl
LkNvbG9yU3luYyAgICAgICAgICAgCTB4OTc0MWQzZjggcHRocmVhZFNlbWFwaG9yZVdhaXQodF9w
dGhyZWFkU2VtYXBob3JlKikgKyA0MgozICAgY29tLmFwcGxlLkNvbG9yU3luYyAgICAgICAgICAg
CTB4OTc0MmZkNGUgQ01NQ29udlRhc2sodm9pZCopICsgNTQKNCAgIGxpYlN5c3RlbS5CLmR5bGli
ICAgICAgICAgICAgIAkweDkyZjFkMTU1IF9wdGhyZWFkX3N0YXJ0ICsgMzIxCjUgICBsaWJTeXN0
ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmYxZDAxMiB0aHJlYWRfc3RhcnQgKyAzNAoKVGhy
ZWFkIDg6CjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmVmMzQ2ZSBfX3Nl
bXdhaXRfc2lnbmFsICsgMTAKMSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDky
ZjFkZGNkIHB0aHJlYWRfY29uZF93YWl0JFVOSVgyMDAzICsgNzMKMiAgIGNvbS5hcHBsZS5Db2xv
clN5bmMgICAgICAgICAgIAkweDk3NDFkM2Y4IHB0aHJlYWRTZW1hcGhvcmVXYWl0KHRfcHRocmVh
ZFNlbWFwaG9yZSopICsgNDIKMyAgIGNvbS5hcHBsZS5Db2xvclN5bmMgICAgICAgICAgIAkweDk3
NDJmZDRlIENNTUNvbnZUYXNrKHZvaWQqKSArIDU0CjQgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAg
ICAgICAgICAJMHg5MmYxZDE1NSBfcHRocmVhZF9zdGFydCArIDMyMQo1ICAgbGliU3lzdGVtLkIu
ZHlsaWIgICAgICAgICAgICAgCTB4OTJmMWQwMTIgdGhyZWFkX3N0YXJ0ICsgMzQKClRocmVhZCA5
OgowICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJlZjM0NmUgX19zZW13YWl0
X3NpZ25hbCArIDEwCjEgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmYxZGRj
ZCBwdGhyZWFkX2NvbmRfd2FpdCRVTklYMjAwMyArIDczCjIgICBjb20uYXBwbGUuQ29sb3JTeW5j
ICAgICAgICAgICAJMHg5NzQxZDNmOCBwdGhyZWFkU2VtYXBob3JlV2FpdCh0X3B0aHJlYWRTZW1h
cGhvcmUqKSArIDQyCjMgICBjb20uYXBwbGUuQ29sb3JTeW5jICAgICAgICAgICAJMHg5NzQyZmQ0
ZSBDTU1Db252VGFzayh2b2lkKikgKyA1NAo0ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAg
ICAgCTB4OTJmMWQxNTUgX3B0aHJlYWRfc3RhcnQgKyAzMjEKNSAgIGxpYlN5c3RlbS5CLmR5bGli
ICAgICAgICAgICAgIAkweDkyZjFkMDEyIHRocmVhZF9zdGFydCArIDM0CgpUaHJlYWQgMTA6CjAg
ICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmVmMzQ2ZSBfX3NlbXdhaXRfc2ln
bmFsICsgMTAKMSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZjFkZGNkIHB0
aHJlYWRfY29uZF93YWl0JFVOSVgyMDAzICsgNzMKMiAgIGNvbS5hcHBsZS5Db2xvclN5bmMgICAg
ICAgICAgIAkweDk3NDFkM2Y4IHB0aHJlYWRTZW1hcGhvcmVXYWl0KHRfcHRocmVhZFNlbWFwaG9y
ZSopICsgNDIKMyAgIGNvbS5hcHBsZS5Db2xvclN5bmMgICAgICAgICAgIAkweDk3NDJmZDRlIENN
TUNvbnZUYXNrKHZvaWQqKSArIDU0CjQgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJ
MHg5MmYxZDE1NSBfcHRocmVhZF9zdGFydCArIDMyMQo1ICAgbGliU3lzdGVtLkIuZHlsaWIgICAg
ICAgICAgICAgCTB4OTJmMWQwMTIgdGhyZWFkX3N0YXJ0ICsgMzQKClRocmVhZCAxMToKMCAgIGxp
YlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZWYzNDZlIF9fc2Vtd2FpdF9zaWduYWwg
KyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJmMWRkY2QgcHRocmVh
ZF9jb25kX3dhaXQkVU5JWDIwMDMgKyA3MwoyICAgY29tLmFwcGxlLkNvbG9yU3luYyAgICAgICAg
ICAgCTB4OTc0MWQzZjggcHRocmVhZFNlbWFwaG9yZVdhaXQodF9wdGhyZWFkU2VtYXBob3JlKikg
KyA0MgozICAgY29tLmFwcGxlLkNvbG9yU3luYyAgICAgICAgICAgCTB4OTc0MmZkNGUgQ01NQ29u
dlRhc2sodm9pZCopICsgNTQKNCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDky
ZjFkMTU1IF9wdGhyZWFkX3N0YXJ0ICsgMzIxCjUgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAg
ICAgICAJMHg5MmYxZDAxMiB0aHJlYWRfc3RhcnQgKyAzNAoKVGhyZWFkIDEyOgowICAgbGliU3lz
dGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJlZjM0NmUgX19zZW13YWl0X3NpZ25hbCArIDEw
CjEgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmYxZGRjZCBwdGhyZWFkX2Nv
bmRfd2FpdCRVTklYMjAwMyArIDczCjIgICBjb20uYXBwbGUuQ29sb3JTeW5jICAgICAgICAgICAJ
MHg5NzQxZDNmOCBwdGhyZWFkU2VtYXBob3JlV2FpdCh0X3B0aHJlYWRTZW1hcGhvcmUqKSArIDQy
CjMgICBjb20uYXBwbGUuQ29sb3JTeW5jICAgICAgICAgICAJMHg5NzQyZmQ0ZSBDTU1Db252VGFz
ayh2b2lkKikgKyA1NAo0ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJmMWQx
NTUgX3B0aHJlYWRfc3RhcnQgKyAzMjEKNSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAg
IAkweDkyZjFkMDEyIHRocmVhZF9zdGFydCArIDM0CgpUaHJlYWQgMTM6CjAgICBsaWJTeXN0ZW0u
Qi5keWxpYiAgICAgICAgICAgICAJMHg5MmVmMzQ2ZSBfX3NlbXdhaXRfc2lnbmFsICsgMTAKMSAg
IGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZjFkZGNkIHB0aHJlYWRfY29uZF93
YWl0JFVOSVgyMDAzICsgNzMKMiAgIGNvbS5hcHBsZS5Db2xvclN5bmMgICAgICAgICAgIAkweDk3
NDFkM2Y4IHB0aHJlYWRTZW1hcGhvcmVXYWl0KHRfcHRocmVhZFNlbWFwaG9yZSopICsgNDIKMyAg
IGNvbS5hcHBsZS5Db2xvclN5bmMgICAgICAgICAgIAkweDk3NDJmZDRlIENNTUNvbnZUYXNrKHZv
aWQqKSArIDU0CjQgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmYxZDE1NSBf
cHRocmVhZF9zdGFydCArIDMyMQo1ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4
OTJmMWQwMTIgdGhyZWFkX3N0YXJ0ICsgMzQKClRocmVhZCAxNDoKMCAgIGxpYlN5c3RlbS5CLmR5
bGliICAgICAgICAgICAgIAkweDkyZWYzNDZlIF9fc2Vtd2FpdF9zaWduYWwgKyAxMAoxICAgbGli
U3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJmMWRkY2QgcHRocmVhZF9jb25kX3dhaXQk
VU5JWDIwMDMgKyA3MwoyICAgY29tLmFwcGxlLkNvbG9yU3luYyAgICAgICAgICAgCTB4OTc0MWQz
ZjggcHRocmVhZFNlbWFwaG9yZVdhaXQodF9wdGhyZWFkU2VtYXBob3JlKikgKyA0MgozICAgY29t
LmFwcGxlLkNvbG9yU3luYyAgICAgICAgICAgCTB4OTc0MmZkNGUgQ01NQ29udlRhc2sodm9pZCop
ICsgNTQKNCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZjFkMTU1IF9wdGhy
ZWFkX3N0YXJ0ICsgMzIxCjUgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmYx
ZDAxMiB0aHJlYWRfc3RhcnQgKyAzNAoKVGhyZWFkIDE1OgowICAgbGliU3lzdGVtLkIuZHlsaWIg
ICAgICAgICAgICAgCTB4OTJlZjM0NmUgX19zZW13YWl0X3NpZ25hbCArIDEwCjEgICBsaWJTeXN0
ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmYxZGRjZCBwdGhyZWFkX2NvbmRfd2FpdCRVTklY
MjAwMyArIDczCjIgICBjb20uYXBwbGUuQ29sb3JTeW5jICAgICAgICAgICAJMHg5NzQxZDNmOCBw
dGhyZWFkU2VtYXBob3JlV2FpdCh0X3B0aHJlYWRTZW1hcGhvcmUqKSArIDQyCjMgICBjb20uYXBw
bGUuQ29sb3JTeW5jICAgICAgICAgICAJMHg5NzQyZmQ0ZSBDTU1Db252VGFzayh2b2lkKikgKyA1
NAo0ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJmMWQxNTUgX3B0aHJlYWRf
c3RhcnQgKyAzMjEKNSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZjFkMDEy
IHRocmVhZF9zdGFydCArIDM0CgpUaHJlYWQgMTY6CjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAg
ICAgICAgICAJMHg5MmVmMzQ2ZSBfX3NlbXdhaXRfc2lnbmFsICsgMTAKMSAgIGxpYlN5c3RlbS5C
LmR5bGliICAgICAgICAgICAgIAkweDkyZjFkZGNkIHB0aHJlYWRfY29uZF93YWl0JFVOSVgyMDAz
ICsgNzMKMiAgIGNvbS5hcHBsZS5Db2xvclN5bmMgICAgICAgICAgIAkweDk3NDFkM2Y4IHB0aHJl
YWRTZW1hcGhvcmVXYWl0KHRfcHRocmVhZFNlbWFwaG9yZSopICsgNDIKMyAgIGNvbS5hcHBsZS5D
b2xvclN5bmMgICAgICAgICAgIAkweDk3NDJmZDRlIENNTUNvbnZUYXNrKHZvaWQqKSArIDU0CjQg
ICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmYxZDE1NSBfcHRocmVhZF9zdGFy
dCArIDMyMQo1ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJmMWQwMTIgdGhy
ZWFkX3N0YXJ0ICsgMzQKClRocmVhZCAxNzoKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAg
ICAgIAkweDkyZWYzNDZlIF9fc2Vtd2FpdF9zaWduYWwgKyAxMAoxICAgbGliU3lzdGVtLkIuZHls
aWIgICAgICAgICAgICAgCTB4OTJmMWRkY2QgcHRocmVhZF9jb25kX3dhaXQkVU5JWDIwMDMgKyA3
MwoyICAgY29tLmFwcGxlLkNvbG9yU3luYyAgICAgICAgICAgCTB4OTc0MWQzZjggcHRocmVhZFNl
bWFwaG9yZVdhaXQodF9wdGhyZWFkU2VtYXBob3JlKikgKyA0MgozICAgY29tLmFwcGxlLkNvbG9y
U3luYyAgICAgICAgICAgCTB4OTc0MmZkNGUgQ01NQ29udlRhc2sodm9pZCopICsgNTQKNCAgIGxp
YlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZjFkMTU1IF9wdGhyZWFkX3N0YXJ0ICsg
MzIxCjUgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmYxZDAxMiB0aHJlYWRf
c3RhcnQgKyAzNAoKVGhyZWFkIDE4OgowICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAg
CTB4OTJlZjM0NmUgX19zZW13YWl0X3NpZ25hbCArIDEwCjEgICBsaWJTeXN0ZW0uQi5keWxpYiAg
ICAgICAgICAgICAJMHg5MmYxZGRjZCBwdGhyZWFkX2NvbmRfd2FpdCRVTklYMjAwMyArIDczCjIg
ICBjb20uYXBwbGUuQ29sb3JTeW5jICAgICAgICAgICAJMHg5NzQxZDNmOCBwdGhyZWFkU2VtYXBo
b3JlV2FpdCh0X3B0aHJlYWRTZW1hcGhvcmUqKSArIDQyCjMgICBjb20uYXBwbGUuQ29sb3JTeW5j
ICAgICAgICAgICAJMHg5NzQyZmQ0ZSBDTU1Db252VGFzayh2b2lkKikgKyA1NAo0ICAgbGliU3lz
dGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJmMWQxNTUgX3B0aHJlYWRfc3RhcnQgKyAzMjEK
NSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZjFkMDEyIHRocmVhZF9zdGFy
dCArIDM0CgpUaHJlYWQgMTk6CjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5
MmVmMzQ2ZSBfX3NlbXdhaXRfc2lnbmFsICsgMTAKMSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAg
ICAgICAgIAkweDkyZjFkZGNkIHB0aHJlYWRfY29uZF93YWl0JFVOSVgyMDAzICsgNzMKMiAgIGNv
bS5hcHBsZS5Db2xvclN5bmMgICAgICAgICAgIAkweDk3NDFkM2Y4IHB0aHJlYWRTZW1hcGhvcmVX
YWl0KHRfcHRocmVhZFNlbWFwaG9yZSopICsgNDIKMyAgIGNvbS5hcHBsZS5Db2xvclN5bmMgICAg
ICAgICAgIAkweDk3NDJmZDRlIENNTUNvbnZUYXNrKHZvaWQqKSArIDU0CjQgICBsaWJTeXN0ZW0u
Qi5keWxpYiAgICAgICAgICAgICAJMHg5MmYxZDE1NSBfcHRocmVhZF9zdGFydCArIDMyMQo1ICAg
bGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJmMWQwMTIgdGhyZWFkX3N0YXJ0ICsg
MzQKClRocmVhZCAyMDoKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZWVj
Mjg2IG1hY2hfbXNnX3RyYXAgKyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAg
CTB4OTJlZjNhN2MgbWFjaF9tc2cgKyA3MgoyICAgY29tLmFwcGxlLkNvcmVGb3VuZGF0aW9uICAg
ICAgCTB4OTE5OThlN2UgQ0ZSdW5Mb29wUnVuU3BlY2lmaWMgKyAxNzkwCjMgICBjb20uYXBwbGUu
Q29yZUZvdW5kYXRpb24gICAgICAJMHg5MTk5OWIwNCBDRlJ1bkxvb3BSdW4gKyA4NAo0ICAgY29t
LmFwcGxlLlF1aWNrVGltZSAgICAgICAgICAgCTB4OTZmN2E2MmEgUVRTTmV0d29ya1RocmVhZF9S
dW5UaHJlYWQgKyAxMzEKNSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZjFk
MTU1IF9wdGhyZWFkX3N0YXJ0ICsgMzIxCjYgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAg
ICAJMHg5MmYxZDAxMiB0aHJlYWRfc3RhcnQgKyAzNAoKVGhyZWFkIDIxOgowICAgbGliU3lzdGVt
LkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJlZWMyODYgbWFjaF9tc2dfdHJhcCArIDEwCjEgICBs
aWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmVmM2E3YyBtYWNoX21zZyArIDcyCjIg
ICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJMHg5MTk5OGU3ZSBDRlJ1bkxvb3BSdW5T
cGVjaWZpYyArIDE3OTAKMyAgIGNvbS5hcHBsZS5Db3JlRm91bmRhdGlvbiAgICAgIAkweDkxOTk5
YWE4IENGUnVuTG9vcFJ1bkluTW9kZSArIDg4CjQgICBjb20uYXBwbGUuYXVkaW8uQ29yZUF1ZGlv
ICAgICAJMHg5MDc5NjVmOCBIQUxSdW5Mb29wOjpPd25UaHJlYWQodm9pZCopICsgMTYwCjUgICBj
b20uYXBwbGUuYXVkaW8uQ29yZUF1ZGlvICAgICAJMHg5MDc5NjQ4MCBDQVBUaHJlYWQ6OkVudHJ5
KENBUFRocmVhZCopICsgOTYKNiAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDky
ZjFkMTU1IF9wdGhyZWFkX3N0YXJ0ICsgMzIxCjcgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAg
ICAgICAJMHg5MmYxZDAxMiB0aHJlYWRfc3RhcnQgKyAzNAoKVGhyZWFkIDIyOgowICAgbGliU3lz
dGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJlZjM0NmUgX19zZW13YWl0X3NpZ25hbCArIDEw
CjEgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmYxZGRjZCBwdGhyZWFkX2Nv
bmRfd2FpdCRVTklYMjAwMyArIDczCjIgICBsaWJHTFByb2dyYW1tYWJpbGl0eS5keWxpYiAgICAJ
MHg5MjExZWIzMiBnbHZtRG9Xb3JrICsgMTYyCjMgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAg
ICAgICAJMHg5MmYxZDE1NSBfcHRocmVhZF9zdGFydCArIDMyMQo0ICAgbGliU3lzdGVtLkIuZHls
aWIgICAgICAgICAgICAgCTB4OTJmMWQwMTIgdGhyZWFkX3N0YXJ0ICsgMzQKClRocmVhZCAyMzoK
MCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZWVjMmU2IHNlbWFwaG9yZV90
aW1lZHdhaXRfc2lnbmFsX3RyYXAgKyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAg
ICAgCTB4OTJmMWUyYWYgX3B0aHJlYWRfY29uZF93YWl0ICsgMTI0NAoyICAgbGliU3lzdGVtLkIu
ZHlsaWIgICAgICAgICAgICAgCTB4OTJmMWZiMzMgcHRocmVhZF9jb25kX3RpbWVkd2FpdF9yZWxh
dGl2ZV9ucCArIDQ3CjMgICAuLi5wbGUuQ29yZVNlcnZpY2VzLkNhcmJvbkNvcmUJMHg5MDEzOGNm
ZSBUU1dhaXRPbkNvbmRpdGlvblRpbWVkUmVsYXRpdmUgKyAyNDYKNCAgIC4uLnBsZS5Db3JlU2Vy
dmljZXMuQ2FyYm9uQ29yZQkweDkwMTM4YWRlIFRTV2FpdE9uU2VtYXBob3JlQ29tbW9uICsgNDIy
CjUgICAuLi5wbGUuQ29yZVNlcnZpY2VzLkNhcmJvbkNvcmUJMHg5MDE2OTlhOCBUaW1lclRocmVh
ZCArIDc0CjYgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MmYxZDE1NSBfcHRo
cmVhZF9zdGFydCArIDMyMQo3ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJm
MWQwMTIgdGhyZWFkX3N0YXJ0ICsgMzQKClRocmVhZCAyNDoKMCAgIGxpYlN5c3RlbS5CLmR5bGli
ICAgICAgICAgICAgIAkweDkyZWVjMmU2IHNlbWFwaG9yZV90aW1lZHdhaXRfc2lnbmFsX3RyYXAg
KyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJmMWUyYWYgX3B0aHJl
YWRfY29uZF93YWl0ICsgMTI0NAoyICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4
OTJmMWZiMzMgcHRocmVhZF9jb25kX3RpbWVkd2FpdF9yZWxhdGl2ZV9ucCArIDQ3CjMgICAuLi5w
bGUuQ29yZVNlcnZpY2VzLkNhcmJvbkNvcmUJMHg5MDEzOGNmZSBUU1dhaXRPbkNvbmRpdGlvblRp
bWVkUmVsYXRpdmUgKyAyNDYKNCAgIC4uLnBsZS5Db3JlU2VydmljZXMuQ2FyYm9uQ29yZQkweDkw
MTM4YWRlIFRTV2FpdE9uU2VtYXBob3JlQ29tbW9uICsgNDIyCjUgICAuLi5wbGUuQ29yZVNlcnZp
Y2VzLkNhcmJvbkNvcmUJMHg5MDE2OWRhMiBEZWZlcnJlZFRhc2tUaHJlYWQgKyA3MAo2ICAgbGli
U3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTJmMWQxNTUgX3B0aHJlYWRfc3RhcnQgKyAz
MjEKNyAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZjFkMDEyIHRocmVhZF9z
dGFydCArIDM0CgpUaHJlYWQgMjU6CjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJ
MHg5MmVlYzJlNiBzZW1hcGhvcmVfdGltZWR3YWl0X3NpZ25hbF90cmFwICsgMTAKMSAgIGxpYlN5
c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZjFlMmFmIF9wdGhyZWFkX2NvbmRfd2FpdCAr
IDEyNDQKMiAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZjFmYjMzIHB0aHJl
YWRfY29uZF90aW1lZHdhaXRfcmVsYXRpdmVfbnAgKyA0NwozICAgLi4ucGxlLkNvcmVTZXJ2aWNl
cy5DYXJib25Db3JlCTB4OTAxMzhjZmUgVFNXYWl0T25Db25kaXRpb25UaW1lZFJlbGF0aXZlICsg
MjQ2CjQgICAuLi5wbGUuQ29yZVNlcnZpY2VzLkNhcmJvbkNvcmUJMHg5MDEzOGFkZSBUU1dhaXRP
blNlbWFwaG9yZUNvbW1vbiArIDQyMgo1ICAgY29tLmFwcGxlLlF1aWNrVGltZSAgICAgICAgICAg
CTB4OTcwNzQ1MWYgVmlkZW9EZWNvZGVUaHJlYWQgKyA2Mwo2ICAgbGliU3lzdGVtLkIuZHlsaWIg
ICAgICAgICAgICAgCTB4OTJmMWQxNTUgX3B0aHJlYWRfc3RhcnQgKyAzMjEKNyAgIGxpYlN5c3Rl
bS5CLmR5bGliICAgICAgICAgICAgIAkweDkyZjFkMDEyIHRocmVhZF9zdGFydCArIDM0CgpUaHJl
YWQgMCBjcmFzaGVkIHdpdGggWDg2IFRocmVhZCBTdGF0ZSAoMzItYml0KToKICBlYXg6IDB4MDAw
MDAwMDAgIGVieDogMHgwMjMxNWU0NCAgZWN4OiAweDAyMmNiM2E4ICBlZHg6IDB4MTJiZGFhMjgK
ICBlZGk6IDB4MTJiZGFhMjggIGVzaTogMHgxMmRkYmY4MCAgZWJwOiAweGJmZmZlODI4ICBlc3A6
IDB4YmZmZmU4MDAKICAgc3M6IDB4MDAwMDAwMWYgIGVmbDogMHgwMDAxMDI0NiAgZWlwOiAweDAy
MzE1ZWIzICAgY3M6IDB4MDAwMDAwMTcKICAgZHM6IDB4MDAwMDAwMWYgICBlczogMHgwMDAwMDAx
ZiAgIGZzOiAweDAwMDAwMDAwICAgZ3M6IDB4MDAwMDAwMzcKICBjcjI6IDB4MDAwMDAwMTAKCkJp
bmFyeSBJbWFnZXM6CiAgICAweDEwMDAgLSAgICAweDMzZmY5ICtEdW1wUmVuZGVyVHJlZSA/Pz8g
KD8/PykgPDlmMTY1OTJiNDMyYzUyNGNjODlhYzk4ODdiYmJkZGYzPiAvVXNlcnMvZXNlaWRlbC9Q
cm9qZWN0cy9Db21taXRRdWV1ZS9XZWJLaXRCdWlsZC9SZWxlYXNlL0R1bXBSZW5kZXJUcmVlCiAg
MHgxMzkwMDAgLSAgIDB4MTM5ZmZjICBjb20uYXBwbGUuSmF2YVBsdWdpbkNvY29hIDEyLjUuMCAo
MTIuNS4wKSA8N2JiOWE1ZTM1OTQ1YTcxMmRhNjYzN2FjZDI5ZDRjZGI+IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0phdmFWTS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9SZXNvdXJjZXMvSmF2YVBs
dWdpbkNvY29hLmJ1bmRsZS9Db250ZW50cy9NYWNPUy9KYXZhUGx1Z2luQ29jb2EKICAweDEzZjAw
MCAtICAgMHgxNDVmZmYgIGNvbS5hcHBsZS5KYXZhVk0gMTIuNS4wICgxMi41LjApIDw4ZDNmNGJi
NDExYWMyNDkwMzM1YmU5YTYxMmJiMmEyMj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSmF2
YVZNLmZyYW1ld29yay9WZXJzaW9ucy9BL0phdmFWTQogIDB4MjQxMDAwIC0gICAweDNkN2ZmNyAg
Y29tLmFwcGxlLkphdmFTY3JpcHRDb3JlIDUzMisgKDUzMi45KykgPDFhNGQwNTMzNmI3YzZjMzEx
ZTdkOTBhMmI4MTYzMWRhPiAvVXNlcnMvZXNlaWRlbC9Qcm9qZWN0cy9Db21taXRRdWV1ZS9XZWJL
aXRCdWlsZC9SZWxlYXNlL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL0phdmFT
Y3JpcHRDb3JlCiAgMHg0ODIwMDAgLSAgIDB4NTgyZmZmICBjb20uYXBwbGUuV2ViS2l0IDUzMisg
KDUzMi45KykgPDQ5ZTZlMzZkMjg3OGNjZTMyZjBiMTgyMjlkZmI5OGZjPiAvVXNlcnMvZXNlaWRl
bC9Qcm9qZWN0cy9Db21taXRRdWV1ZS9XZWJLaXRCdWlsZC9SZWxlYXNlL1dlYktpdC5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9XZWJLaXQKIDB4MWE3OTAwMCAtICAweDI2M2NmZmYgIGNvbS5hcHBsZS5X
ZWJDb3JlIDUzMisgKDUzMi45KykgPGZkNjdiMzUyZjRjZjVlMjg1ZWY0MjMwNGJiZDBmMGY4PiAv
VXNlcnMvZXNlaWRlbC9Qcm9qZWN0cy9Db21taXRRdWV1ZS9XZWJLaXRCdWlsZC9SZWxlYXNlL1dl
YkNvcmUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvV2ViQ29yZQogMHgzNGYyMDAwIC0gIDB4MzZmOWZl
ZiAgY29tLmFwcGxlLlJhd0NhbWVyYS5idW5kbGUgMi4xLjAgKDQ3NCkgPDQ4YTU3NGQzYjMyNjlj
OGRiZGMzOGQ2ZjY3ODc5MzE3PiAvU3lzdGVtL0xpYnJhcnkvQ29yZVNlcnZpY2VzL1Jhd0NhbWVy
YS5idW5kbGUvQ29udGVudHMvTWFjT1MvUmF3Q2FtZXJhCiAweGY2YjAwMDAgLSAgMHhmNmIzZmZm
ICBjb20uYXBwbGUuYXVkaW8uQXVkaW9JUENQbHVnSW4gMS4wLjYgKDEuMC42KSA8NTFjODExMzc3
MDE3MDI4Zjg5MDRhZDc3OWU2YTEzNDQ+IC9TeXN0ZW0vTGlicmFyeS9FeHRlbnNpb25zL0F1ZGlv
SVBDRHJpdmVyLmtleHQvQ29udGVudHMvUmVzb3VyY2VzL0F1ZGlvSVBDUGx1Z0luLmJ1bmRsZS9D
b250ZW50cy9NYWNPUy9BdWRpb0lQQ1BsdWdJbgoweDEwMDUzMDAwIC0gMHgxMDA1OWZmZiAgY29t
LmFwcGxlLmF1ZGlvLkFwcGxlSERBSEFMUGx1Z0luIDEuNy4xICgxLjcuMWEyKSA8YTBhNDM4OWI1
YWM1MmFiODQzOTdkMmIyNWM5ZDNiOWM+IC9TeXN0ZW0vTGlicmFyeS9FeHRlbnNpb25zL0FwcGxl
SERBLmtleHQvQ29udGVudHMvUGx1Z0lucy9BcHBsZUhEQUhBTFBsdWdJbi5idW5kbGUvQ29udGVu
dHMvTWFjT1MvQXBwbGVIREFIQUxQbHVnSW4KMHgxMTc4NjAwMCAtIDB4MTE3ODZmZmQgIGxpYm14
LkEuZHlsaWIgPz8/ICg/Pz8pIC91c3IvbGliL2xpYm14LkEuZHlsaWIKMHgxMjliNDAwMCAtIDB4
MTI5Y2RmZjMgIGNvbS5hcHBsZS5hcHBsZXBpeGxldHZpZGVvIDEuMi4xOCAoMS4yZDE4KSA8OWYx
MjkxZDBkZmU5YmUwZTI1MWE3NTMwMWNlZWQyYzk+IC9TeXN0ZW0vTGlicmFyeS9RdWlja1RpbWUv
QXBwbGVQaXhsZXRWaWRlby5jb21wb25lbnQvQ29udGVudHMvTWFjT1MvQXBwbGVQaXhsZXRWaWRl
bwoweDEyZTBiMDAwIC0gMHgxMmY2Y2ZlMSAgY29tLmFwcGxlLlF1aWNrVGltZVN0cmVhbWluZy5j
b21wb25lbnQgNy42LjQgKDEzMjcuNzMpIDxlMGFmOTFhYjRkMjJiM2VhOTJlM2Q0MzlmNjJmOGRm
OT4gL1N5c3RlbS9MaWJyYXJ5L1F1aWNrVGltZS9RdWlja1RpbWVTdHJlYW1pbmcuY29tcG9uZW50
L0NvbnRlbnRzL01hY09TL1F1aWNrVGltZVN0cmVhbWluZwoweDEzM2Y3MDAwIC0gMHgxMzYzYWZk
ZSArbmV0LnRlbGVzdHJlYW0ud212LmltcG9ydCAyLjIuMS4xMSAoMi4yLjEuMTEpIC9MaWJyYXJ5
L1F1aWNrVGltZS9GbGlwNE1hYyBXTVYgSW1wb3J0LmNvbXBvbmVudC9Db250ZW50cy9NYWNPUy9G
bGlwNE1hYyBXTVYgSW1wb3J0CjB4MTM3N2YwMDAgLSAweDEzN2JhZmZmICBjb20uYXBwbGUuUXVp
Y2tUaW1lRmlyZVdpcmVEVi5jb21wb25lbnQgNy42LjQgKDEzMjcuNzMpIC9TeXN0ZW0vTGlicmFy
eS9RdWlja1RpbWUvUXVpY2tUaW1lRmlyZVdpcmVEVi5jb21wb25lbnQvQ29udGVudHMvTWFjT1Mv
UXVpY2tUaW1lRmlyZVdpcmVEVgoweDE0MDc3MDAwIC0gMHgxNDQ0Y2ZlNSAgUXVpY2tUaW1lSDI2
NC5zY2FsYXIgPz8/ICg/Pz8pIDw2ODMwZDU1ZDZiZjY2NzcwODdlZDQ0MGQ2MDIzYzE4NT4gL1N5
c3RlbS9MaWJyYXJ5L1F1aWNrVGltZS9RdWlja1RpbWVIMjY0LmNvbXBvbmVudC9Db250ZW50cy9S
ZXNvdXJjZXMvUXVpY2tUaW1lSDI2NC5zY2FsYXIKMHgxNDRiNzAwMCAtIDB4MTQ2YmFmZmYgIGNv
bS5hcHBsZS5hdWRpby5jb2RlY3MuQ29tcG9uZW50cyAxLjkgKDEuOSkgL1N5c3RlbS9MaWJyYXJ5
L0NvbXBvbmVudHMvQXVkaW9Db2RlY3MuY29tcG9uZW50L0NvbnRlbnRzL01hY09TL0F1ZGlvQ29k
ZWNzCjB4MTQ3MWIwMDAgLSAweDE0OGRlZmVhICtuZXQudGVsZXN0cmVhbS53bXYuYWR2YW5jZWQg
Mi4yLjEuMTEgKDIuMi4xLjExKSAvTGlicmFyeS9RdWlja1RpbWUvRmxpcDRNYWMgV01WIEFkdmFu
Y2VkLmNvbXBvbmVudC9Db250ZW50cy9NYWNPUy9GbGlwNE1hYyBXTVYgQWR2YW5jZWQKMHgxNDky
MjAwMCAtIDB4MTQ5NzVmZTcgIGNvbS5hcHBsZS5BcHBsZVByb1Jlc0RlY29kZXIgMi4wICgyMjMp
IC9TeXN0ZW0vTGlicmFyeS9RdWlja1RpbWUvQXBwbGVQcm9SZXNEZWNvZGVyLmNvbXBvbmVudC9D
b250ZW50cy9NYWNPUy9BcHBsZVByb1Jlc0RlY29kZXIKMHgxNDlhZjAwMCAtIDB4MTRhMTRmZWYg
IGNvbS5hcHBsZS5BcHBsZVZBSDI2NEhXLmNvbXBvbmVudCAxLjAgKDEuMCkgPGUwMjQwZjNmY2Fh
ZThhYWM0ZGVjZWVkNGZkMzY1ZTg2PiAvU3lzdGVtL0xpYnJhcnkvUXVpY2tUaW1lL0FwcGxlVkFI
MjY0SFcuY29tcG9uZW50L0NvbnRlbnRzL01hY09TL0FwcGxlVkFIMjY0SFcKMHgxNjZkYjAwMCAt
IDB4MTY4NjBmZTMgIEdMRW5naW5lID8/PyAoPz8/KSA8OTQ1NTQ2Y2RmMDE2YTRlNWNiYmYyYWQx
YmNjZDBhYjQ+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvUmVz
b3VyY2VzL0dMRW5naW5lLmJ1bmRsZS9HTEVuZ2luZQoweDE2ODhlMDAwIC0gMHgxNmJmN2ZlOCAg
Y29tLmFwcGxlLkdlRm9yY2U4eHh4R0xEcml2ZXIgMS41LjQ4ICg1LjQuOCkgPDg4MGVkMzE1NTA3
ODA1MjI2MGFkZTZlNzA1YzljYTY0PiAvU3lzdGVtL0xpYnJhcnkvRXh0ZW5zaW9ucy9HZUZvcmNl
OHh4eEdMRHJpdmVyLmJ1bmRsZS9Db250ZW50cy9NYWNPUy9HZUZvcmNlOHh4eEdMRHJpdmVyCjB4
MTZmMzIwMDAgLSAweDE2ZjRlZmY3ICBHTFJlbmRlcmVyRmxvYXQgPz8/ICg/Pz8pIDw3YjY4ZTBm
ZGU1ZDk3OTI3ZDU0MDcyMjFiZGY4YWNlMD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3Bl
bkdMLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9HTFJlbmRlcmVyRmxvYXQuYnVuZGxl
L0dMUmVuZGVyZXJGbG9hdAoweDcwMDAwMDAwIC0gMHg3MDBlNmZmMiAgY29tLmFwcGxlLmF1ZGlv
LnVuaXRzLkNvbXBvbmVudHMgMS41LjIgKDEuNS4yKSAvU3lzdGVtL0xpYnJhcnkvQ29tcG9uZW50
cy9Db3JlQXVkaW8uY29tcG9uZW50L0NvbnRlbnRzL01hY09TL0NvcmVBdWRpbwoweDhmZTAwMDAw
IC0gMHg4ZmUyZGI0MyAgZHlsZCA5Ny4xICg/Pz8pIDw0NThlZWQzOGEwMDllNTY1OGE3OTU3OWU3
YmMyNjYwMz4gL3Vzci9saWIvZHlsZAoweDkwMDUyMDAwIC0gMHg5MDBkZmZmNyAgY29tLmFwcGxl
LmZyYW1ld29yay5JT0tpdCAxLjUuMiAoPz8/KSA8N2EzY2MyNGY3OGY5MzkzMTczMTIwMzg1NGFl
MGQ4OTE+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9WZXJzaW9u
cy9BL0lPS2l0CjB4OTAwZTAwMDAgLSAweDkwMGViZmU3ICBsaWJDU3luYy5BLmR5bGliID8/PyAo
Pz8/KSA8ZDg4YzIwYzlhMmZkMDY3NmRlYzYyZmRkZmE3NDk3OWY+IC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3
b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xpYkNTeW5j
LkEuZHlsaWIKMHg5MDBlYzAwMCAtIDB4OTAxMDFmZmIgIGNvbS5hcHBsZS5JbWFnZUNhcHR1cmUg
NS4wLjIgKDUuMC4yKSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3Jr
L1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9JbWFnZUNhcHR1cmUuZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
SW1hZ2VDYXB0dXJlCjB4OTAxMDIwMDAgLSAweDkwMTBlZmZlICBsaWJHTC5keWxpYiA/Pz8gKD8/
PykgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9WZXJzaW9ucy9B
L0xpYnJhcmllcy9saWJHTC5keWxpYgoweDkwMTBmMDAwIC0gMHg5MDNlOWZmMyAgY29tLmFwcGxl
LkNvcmVTZXJ2aWNlcy5DYXJib25Db3JlIDc4Ni4xMSAoNzg2LjE0KSA8ZDVjY2ViMmZlOTU1MWQz
NDVkNDBkZDFlY2Y0MDllYzI+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0NhcmJvbkNvcmUuZnJhbWV3b3JrL1Zl
cnNpb25zL0EvQ2FyYm9uQ29yZQoweDkwNDU3MDAwIC0gMHg5MDU5MGZmNyAgbGliaWN1Y29yZS5B
LmR5bGliID8/PyAoPz8/KSA8ZjI4MTkyNDNiMjc4MjU5YjlhNjIyZWExMTFlYTVmZDY+IC91c3Iv
bGliL2xpYmljdWNvcmUuQS5keWxpYgoweDkwNjk4MDAwIC0gMHg5MDc3OGZmZiAgbGlib2JqYy5B
LmR5bGliID8/PyAoPz8/KSA8ZDE0NjliZjlmZTg1Mjg2NGQ0ZmZmMTg1YzcyNzY4ZTg+IC91c3Iv
bGliL2xpYm9iamMuQS5keWxpYgoweDkwNzc5MDAwIC0gMHg5MDdmNmZlYiAgY29tLmFwcGxlLmF1
ZGlvLkNvcmVBdWRpbyAzLjEuMiAoMy4xLjIpIDw3ODJhMDhjNDRiZTQ2OTg1OTdmNGJiZDc5Y2Fj
MjFjNj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUF1ZGlvLmZyYW1ld29yay9WZXJz
aW9ucy9BL0NvcmVBdWRpbwoweDkxMGM5MDAwIC0gMHg5MTI5YWZmMyAgY29tLmFwcGxlLnNlY3Vy
aXR5IDUuMC41ICgzNjM3MSkgPGM3ZjVkMWI4OWM5ODkxZDMzMmM4MWQxYzVmZTkyNWUzPiAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1
cml0eQoweDkxMjliMDAwIC0gMHg5MTI5YmZmYyAgY29tLmFwcGxlLmF1ZGlvLnVuaXRzLkF1ZGlv
VW5pdCAxLjUgKDEuNSkgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXVkaW9Vbml0LmZyYW1l
d29yay9WZXJzaW9ucy9BL0F1ZGlvVW5pdAoweDkxMjljMDAwIC0gMHg5MTM2M2ZmMiAgY29tLmFw
cGxlLnZJbWFnZSAzLjAgKDMuMCkgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQWNjZWxlcmF0
ZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL3ZJbWFnZS5mcmFtZXdvcmsvVmVyc2lv
bnMvQS92SW1hZ2UKMHg5MTM2NDAwMCAtIDB4OTEzNzJmZmQgIGxpYnouMS5keWxpYiA/Pz8gKD8/
PykgPGE5OGIzYjIyMWE3MmI1NGZhZjczZGVkM2RkNzAwMGU1PiAvdXNyL2xpYi9saWJ6LjEuZHls
aWIKMHg5MTNhODAwMCAtIDB4OTEzYzZmZmYgIGxpYnJlc29sdi45LmR5bGliID8/PyAoPz8/KSA8
MzlmNmQ4NjUxZjNkY2E3YTE1MzRmYTA0MzIyZTY3NjM+IC91c3IvbGliL2xpYnJlc29sdi45LmR5
bGliCjB4OTEzY2QwMDAgLSAweDkxNDBmZmVmICBjb20uYXBwbGUuTmF2aWdhdGlvblNlcnZpY2Vz
IDMuNS4yICgxNjMpIDw3MmNkYzlkMjFmNjY5MDgzNzg3MDkyM2U3YjhjYTM1OD4gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3Mv
TmF2aWdhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL05hdmlnYXRpb25TZXJ2aWNl
cwoweDkxNDJmMDAwIC0gMHg5MTQzN2ZmZiAgY29tLmFwcGxlLkRpc2tBcmJpdHJhdGlvbiAyLjIu
MSAoMi4yLjEpIDwyNjY0ZWViM2E0ZDBjOTVhMjFjMDg5ODkyYTBhZThkMD4gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvRGlza0FyYml0cmF0aW9uLmZyYW1ld29yay9WZXJzaW9ucy9BL0Rpc2tB
cmJpdHJhdGlvbgoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50
ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFw
cGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUz
ZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFj
ZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5
MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1
N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9T
ZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQow
eDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40
ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1
cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5
aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3
PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsv
VmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29t
LmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNi
NzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVy
ZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0g
MHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2
ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFj
ZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMu
MC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9T
ZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3Vy
aXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3
ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAg
Y29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1
ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUlu
dGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAw
IC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykg
PDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVy
ZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNl
IDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMv
QS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNl
Y3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUy
ZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2Zl
MSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2Uz
Zjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0
eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4
MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIx
MykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUlu
dGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJm
YWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxl
LnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjEx
NmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4
M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2Fi
M2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1
cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkx
NDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgz
NzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0
eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50
ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFw
cGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUz
ZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFj
ZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5
MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1
N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9T
ZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQow
eDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40
ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1
cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5
aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3
PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsv
VmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29t
LmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNi
NzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVy
ZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0g
MHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2
ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFj
ZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMu
MC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9T
ZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3Vy
aXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3
ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAg
Y29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1
ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUlu
dGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAw
IC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykg
PDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVy
ZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNl
IDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMv
QS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNl
Y3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUy
ZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2Zl
MSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2Uz
Zjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0
eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4
MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIx
MykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUlu
dGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJm
YWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxl
LnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjEx
NmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkxNDM4MDAwIC0gMHg5MTQ4
M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgzNzIxMykgPDE2ZGU1N2Fi
M2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1
cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0eUludGVyZmFjZQoweDkx
NDM4MDAwIC0gMHg5MTQ4M2ZlMSAgY29tLmFwcGxlLnNlY3VyaXR5aW50ZXJmYWNlIDMuMC40ICgz
NzIxMykgPDE2ZGU1N2FiM2UzZjg1ZjNiNzUzZjExNmUyZmE3ODQ3PiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1cml0
eUludGVyZmFjZQoweDkxNGQ0MDAwIC0gMHg5MTRlY2ZmZiAgY29tLmFwcGxlLm9wZW5zY3JpcHRp
bmcgMS4yLjggKD8/PykgPGE2YjQ0NmViOGVjNzg0NDA5NmRmNWZiOTAwMmY1YzdiPiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jr
cy9PcGVuU2NyaXB0aW5nLmZyYW1ld29yay9WZXJzaW9ucy9BL09wZW5TY3JpcHRpbmcKMHg5MTUz
MDAwMCAtIDB4OTE1YTJmZmYgIGNvbS5hcHBsZS5QREZLaXQgMi4xLjIgKDIuMS4yKSAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jr
cy9QREZLaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUERGS2l0CjB4OTE1YTMwMDAgLSAweDkxNjk3
ZmY0ICBsaWJpY29udi4yLmR5bGliID8/PyAoPz8/KSA8OTZmZjRjNmY4NGM0YTE2MjNjYjc4Mjg3
MzcxY2RkM2Y+IC91c3IvbGliL2xpYmljb252LjIuZHlsaWIKMHg5MTY5ODAwMCAtIDB4OTE2YzVm
ZWIgIGxpYnZEU1AuZHlsaWIgPz8/ICg/Pz8pIDw0ZGFhZmVkNzhhNDcxMTMzZWMzMGIzYWU2MzRi
NmQzZT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQWNjZWxlcmF0ZS5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9GcmFtZXdvcmtzL3ZlY0xpYi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9saWJ2RFNQLmR5
bGliCjB4OTE2YzYwMDAgLSAweDkxN2FlZmYzICBjb20uYXBwbGUuQ29yZURhdGEgMTAwLjIgKDE4
Ni4yKSA8NDRkZjMyNmZlYTAyMzY3MThmNWVkNjQwODRlODIyNzA+IC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1ld29yay9WZXJzaW9ucy9BL0NvcmVEYXRhCjB4OTE3YWYw
MDAgLSAweDkxN2I5ZmViICBjb20uYXBwbGUuYXVkaW8uU291bmRNYW5hZ2VyIDMuOS4yICgzLjku
MikgPGRmMDc3YTgwNDhhZmMzMDc1YzZmMmQ5ZTc3ODBlNzhlPiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9DYXJib25Tb3Vu
ZC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9DYXJib25Tb3VuZAoweDkxOGFkMDAwIC0gMHg5MThiYWZl
NyAgY29tLmFwcGxlLm9wZW5nbCAxLjUuMTAgKDEuNS4xMCkgPDk1YzNkODU3NTcwYTEzN2QwZTgy
ODVjOWVhZmExMTEyPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3Jr
L1ZlcnNpb25zL0EvT3BlbkdMCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2Vj
dXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAy
NGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJh
bWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5
ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIz
NDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1
cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4
OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4y
ICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2Vj
dXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJp
dHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNj
MWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3
b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZl
ICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZk
MjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0
eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4
Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgz
NjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJp
dHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlm
b3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3
PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3Jr
L1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBj
b20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4
NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZv
dW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2Yw
MDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEz
MSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlG
b3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3Vu
ZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1Zl
cnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20u
YXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZh
N2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5k
YXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAg
LSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkg
PGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3Vu
ZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0
aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNp
b25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBw
bGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2Fh
M2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRp
b24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAw
eDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYz
NmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0
aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9u
IDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25z
L0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUu
c2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2
NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24u
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkx
OTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJk
ZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9T
ZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9u
CjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMu
MC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
U2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2Vj
dXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAy
NGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJh
bWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5
ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIz
NDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1
cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4
OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4y
ICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2Vj
dXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJp
dHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNj
MWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3
b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZl
ICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZk
MjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0
eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4
Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgz
NjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJp
dHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlm
b3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3
PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3Jr
L1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBj
b20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4
NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZv
dW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2Yw
MDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEz
MSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlG
b3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3Vu
ZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1Zl
cnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20u
YXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZh
N2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5k
YXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAg
LSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkg
PGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3Vu
ZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0
aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNp
b25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBw
bGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2Fh
M2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRp
b24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAw
eDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYz
NmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0
aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9u
IDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25z
L0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUu
c2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2
NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24u
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE4Y2YwMDAgLSAweDkx
OTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMuMC4yICgzNjEzMSkgPGYzNmJk
ZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9T
ZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9u
CjB4OTE4Y2YwMDAgLSAweDkxOTA5ZmZlICBjb20uYXBwbGUuc2VjdXJpdHlmb3VuZGF0aW9uIDMu
MC4yICgzNjEzMSkgPGYzNmJkZmIzNDZkMjE4NTZhN2FhM2U2NzAyNGNjMWQ3PiAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
U2VjdXJpdHlGb3VuZGF0aW9uCjB4OTE5MGEwMDAgLSAweDkxOTIwZmZmICBjb20uYXBwbGUuRGlj
dGlvbmFyeVNlcnZpY2VzIDEuMC4wICgxLjAuMCkgPDdkMjBiOGQxZmIyMzhjM2U3MWQwZmE2ZmRh
MThjNGY3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3Jr
L1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9EaWN0aW9uYXJ5U2VydmljZXMuZnJhbWV3b3JrL1ZlcnNp
b25zL0EvRGljdGlvbmFyeVNlcnZpY2VzCjB4OTE5MjEwMDAgLSAweDkxOTI1ZmZmICBsaWJtYXRo
Q29tbW9uLkEuZHlsaWIgPz8/ICg/Pz8pIC91c3IvbGliL3N5c3RlbS9saWJtYXRoQ29tbW9uLkEu
ZHlsaWIKMHg5MTkyNjAwMCAtIDB4OTFhNTlmZTcgIGNvbS5hcHBsZS5Db3JlRm91bmRhdGlvbiA2
LjUuNyAoNDc2LjE5KSA8YTMzMmM4ZjQ1NTI5ZWUyNmQyZTljMzZkMGM3MjNiYWQ+IC9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9WZXJzaW9ucy9BL0Nv
cmVGb3VuZGF0aW9uCjB4OTFhNWEwMDAgLSAweDkxYTVjZmYxICBjb20uYXBwbGUuUXVpY2tUaW1l
SDI2NC5jb21wb25lbnQgNy42LjQgKDEzMjcuNzMpIC9TeXN0ZW0vTGlicmFyeS9RdWlja1RpbWUv
UXVpY2tUaW1lSDI2NC5jb21wb25lbnQvQ29udGVudHMvTWFjT1MvUXVpY2tUaW1lSDI2NAoweDkx
YTVkMDAwIC0gMHg5MWJhNWZmNyAgY29tLmFwcGxlLkltYWdlSU8uZnJhbWV3b3JrIDIuMC42ICgy
LjAuNikgPDdmNzNlZjMyOGM4ZTg1NjZmM2YyMDRiNWE1NDBhN2YwPiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1l
d29ya3MvSW1hZ2VJTy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9JbWFnZUlPCjB4OTFiYTYwMDAgLSAw
eDkxYzAzZmZiICBsaWJzdGRjKysuNi5keWxpYiA/Pz8gKD8/PykgPDdkMzg5Mzg5YTk5Y2U2OTY3
MjZjZjRjODk4MGNjNTA1PiAvdXNyL2xpYi9saWJzdGRjKysuNi5keWxpYgoweDkxYzA0MDAwIC0g
MHg5MjAxNGZlZiAgbGliQkxBUy5keWxpYiA/Pz8gKD8/PykgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQWNjZWxlcmF0ZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL3ZlY0xpYi5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9saWJCTEFTLmR5bGliCjB4OTIwMTUwMDAgLSAweDkyMGY2ZmY3
ICBsaWJ4bWwyLjIuZHlsaWIgPz8/ICg/Pz8pIDxiM2JjMGIyODBjMzZhYTE3YWM0NzdiNGRhNTZj
ZDAzOD4gL3Vzci9saWIvbGlieG1sMi4yLmR5bGliCjB4OTIwZjcwMDAgLSAweDkyNWM4Zjc2ICBs
aWJHTFByb2dyYW1tYWJpbGl0eS5keWxpYiA/Pz8gKD8/PykgPGJmN2ZiMjI2Y2JiNDEyZWRmYTM3
NzUzN2MzZTM1ODc3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3Jr
L1ZlcnNpb25zL0EvTGlicmFyaWVzL2xpYkdMUHJvZ3JhbW1hYmlsaXR5LmR5bGliCjB4OTI1Yzkw
MDAgLSAweDkyODQ1ZmU3ICBjb20uYXBwbGUuRm91bmRhdGlvbiA2LjUuOSAoNjc3LjI2KSA8YzY4
YjNjZmY3ODY0OTU5YmVjZmM3ZmQxYTM4NGY5MjU+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0ZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0MvRm91bmRhdGlvbgoweDkyODQ2MDAwIC0g
MHg5MjhmOGZmYiAgbGliY3J5cHRvLjAuOS43LmR5bGliID8/PyAoPz8/KSA8YWRiNTA4MTRlZGUy
OWI4OGYzNzBiMWM4NzEyYmM5M2U+IC91c3IvbGliL2xpYmNyeXB0by4wLjkuNy5keWxpYgoweDky
OGY5MDAwIC0gMHg5Mjk1M2ZmNyAgY29tLmFwcGxlLkNvcmVUZXh0IDIuMC40ICg/Pz8pIDxmZDEw
Y2I5ODI5Y2IwNTdiM2NhMDk4YTAxYzkzYWViMj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0NvcmVU
ZXh0LmZyYW1ld29yay9WZXJzaW9ucy9BL0NvcmVUZXh0CjB4OTI5Y2YwMDAgLSAweDkyYTQ5ZmY4
ICBjb20uYXBwbGUucHJpbnQuZnJhbWV3b3JrLlByaW50Q29yZSA1LjUuNCAoMjQ1LjYpIDwzODM5
Nzk1MDg2YjY4NTdkM2M2MDA2NGRjZTg3MDJiNT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1ByaW50
Q29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9QcmludENvcmUKMHg5MmE0YTAwMCAtIDB4OTJhYzlm
ZjUgIGNvbS5hcHBsZS5TZWFyY2hLaXQgMS4yLjIgKDEuMi4yKSA8M2I1ZjNhYjZhMzYzYTRkOGEy
YmJiZjc0MjEzYWIwZTU+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1NlYXJjaEtpdC5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9TZWFyY2hLaXQKMHg5MmFjYTAwMCAtIDB4OTJiMTNmZWYgIGNvbS5hcHBsZS5NZXRhZGF0
YSAxMC41LjggKDM5OC4yNikgPGU0ZDI2OGVhNDUzNzkyMDBmMDNjZGM3YzhiZWRhZTZmPiAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
RnJhbWV3b3Jrcy9NZXRhZGF0YS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9NZXRhZGF0YQoweDkyYjE0
MDAwIC0gMHg5MmIzOGZmZiAgbGlieHNsdC4xLmR5bGliID8/PyAoPz8/KSA8ZjA4NzJjOWJhM2Mx
Nzg2MWZiYThjNDVhMzY0N2NlZTE+IC91c3IvbGliL2xpYnhzbHQuMS5keWxpYgoweDkyYjVlMDAw
IC0gMHg5MmI5NWZmZiAgY29tLmFwcGxlLlN5c3RlbUNvbmZpZ3VyYXRpb24gMS45LjIgKDEuOS4y
KSA8ZWFiNTQ2MjU1YWMwOTliOTYxNmRmOTk5YzkzNTlkMGU+IC9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL1N5c3RlbUNvbmZpZ3VyYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU3lzdGVtQ29u
ZmlndXJhdGlvbgoweDkyYjk2MDAwIC0gMHg5MmJkNGZmZiAgbGliR0xJbWFnZS5keWxpYiA/Pz8g
KD8/PykgPGIxNTRlMTRjMzUxZGRjOTUwZDUyMjg4MTkyMDE0MzVlPiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL1ZlcnNpb25zL0EvTGlicmFyaWVzL2xpYkdMSW1h
Z2UuZHlsaWIKMHg5MmJkZjAwMCAtIDB4OTJiZGZmZjggIGNvbS5hcHBsZS5Db2NvYSA2LjUgKD8/
PykgPGExYmM5MjQ3Y2Y2NWMyMGYxYTQ0ZDA5NzNjYmU2NDljPiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db2NvYS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db2NvYQoweDkyYmUwMDAwIC0gMHg5
MmJlMmZmZiAgY29tLmFwcGxlLnNlY3VyaXR5aGkgMy4wICgzMDgxNykgPGRiMjNmNGJhZDlmNjNh
NjA2NDY4YTQwNDdhNjliOTQ1PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9TZWN1cml0eUhJLmZyYW1ld29yay9WZXJzaW9u
cy9BL1NlY3VyaXR5SEkKMHg5MmMwYzAwMCAtIDB4OTJjOWZmZmYgIGNvbS5hcHBsZS5pbmsuZnJh
bWV3b3JrIDEwMS4zICg4NikgPGQ0Yzg1YjVjYWZhODAyN2ZmZjA0MmI4NGE4YmU3MWRjPiAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3
b3Jrcy9JbmsuZnJhbWV3b3JrL1ZlcnNpb25zL0EvSW5rCjB4OTJjYTAwMDAgLSAweDkyY2EwZmZk
ICBjb20uYXBwbGUudmVjTGliIDMuNC4yICh2ZWNMaWIgMy40LjIpIC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL3ZlY0xpYi5mcmFtZXdvcmsvVmVyc2lvbnMvQS92ZWNMaWIKMHg5MmNhMTAwMCAt
IDB4OTJkNDhmZWIgIGNvbS5hcHBsZS5RRCAzLjExLjU3ICg/Pz8pIDwzNWYwNTg2Nzg5NzJkNDJi
ODhlYmRmNjUyZGY3OTk1Nj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9WZXJz
aW9ucy9BL1FECjB4OTJlZWEwMDAgLSAweDkyZWVhZmZiICBjb20uYXBwbGUuaW5zdGFsbHNlcnZl
ci5mcmFtZXdvcmsgMS4wICg4KSAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvSW5z
dGFsbFNlcnZlci5mcmFtZXdvcmsvVmVyc2lvbnMvQS9JbnN0YWxsU2VydmVyCjB4OTJlZWIwMDAg
LSAweDkzMDUyZmYzICBsaWJTeXN0ZW0uQi5keWxpYiA/Pz8gKD8/PykgPGFlNDdjYTliMTY4NmIw
NjVmOGFjNGQyZGUwOWNjNDMyPiAvdXNyL2xpYi9saWJTeXN0ZW0uQi5keWxpYgoweDkzMGQ4MDAw
IC0gMHg5MzEzNGZmNyAgY29tLmFwcGxlLmh0bWxyZW5kZXJpbmcgNjggKDEuMS4zKSA8MWM1YzBj
NDE3ODkxYjkyMGRmZTEzOTM4NWZjNmMxNTU+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nh
cmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0hUTUxSZW5kZXJpbmcuZnJhbWV3
b3JrL1ZlcnNpb25zL0EvSFRNTFJlbmRlcmluZwoweDkzMTQxMDAwIC0gMHg5MzQ0OWZlNyAgY29t
LmFwcGxlLkhJVG9vbGJveCAxLjUuNiAoPz8/KSA8ZWVjZTNjYjhhYTBhNGU2ODQzZmNjMTUwMGFj
YTYxYzU+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9ISVRvb2xib3gK
MHg5MzQ0YTAwMCAtIDB4OTM0OGFmZmYgIGNvbS5hcHBsZS5Db3JlTWVkaWFJT1NlcnZpY2VzUHJp
dmF0ZSAyMC4wICgyMC4wKSAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQ29yZU1l
ZGlhSU9TZXJ2aWNlc1ByaXZhdGUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29yZU1lZGlhSU9TZXJ2
aWNlc1ByaXZhdGUKMHg5MzQ4YjAwMCAtIDB4OTM0OTJmZmYgIGNvbS5hcHBsZS5hZ2wgMy4wLjkg
KEFHTC0zLjAuOSkgPGQ2NGQ3MTVkYWI4NTY1MDE0ZjVlMmYyMzlmZDI0MTBjPiAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BR0wuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQUdMCjB4OTM0YjAwMDAg
LSAweDkzNGMwZmZjICBjb20uYXBwbGUuTGFuZ0FuYWx5c2lzIDEuNi41ICgxLjYuNSkgPGQwNTdm
ZWIzODE2MzEyMWZmZDg3MWM1NjRjNjkyODA0PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvTGFuZ0Fu
YWx5c2lzLmZyYW1ld29yay9WZXJzaW9ucy9BL0xhbmdBbmFseXNpcwoweDkzNGMxMDAwIC0gMHg5
MzUwMGZlZiAgbGliVElGRi5keWxpYiA/Pz8gKD8/PykgPDgwMTg3M2NiZDg1YmE3YmRmZTc2NDZm
ZTk3YTU0Y2EzPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9SZXNvdXJjZXMvbGliVElGRi5keWxpYgoweDkzNTA2MDAwIC0gMHg5MzUyZmZmZiAgbGli
Y3Vwcy4yLmR5bGliID8/PyAoPz8/KSA8ZWU3NzE3NTNkZDExMTFiNjU2YTJkYWEyMzRhOWU5NzE+
IC91c3IvbGliL2xpYmN1cHMuMi5keWxpYgoweDkzNTMwMDAwIC0gMHg5MzVlMGZmZiAgZWR1Lm1p
dC5LZXJiZXJvcyA2LjAuMTMgKDYuMC4xMykgPDZmOTEwNDJiZjhhODYwNzMxYWRkOWRjYjA5YjVj
YjczPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9LZXJiZXJvcy5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9LZXJiZXJvcwoweDkzNWUxMDAwIC0gMHg5MzZhYWZlZiAgY29tLmFwcGxlLlF1aWNrVGlt
ZU1QRUc0LmNvbXBvbmVudCA3LjYuNCAoMTMyNy43MykgL1N5c3RlbS9MaWJyYXJ5L1F1aWNrVGlt
ZS9RdWlja1RpbWVNUEVHNC5jb21wb25lbnQvQ29udGVudHMvTWFjT1MvUXVpY2tUaW1lTVBFRzQK
MHg5MzZhYjAwMCAtIDB4OTNkNGJmZWIgIGNvbS5hcHBsZS5Db3JlR3JhcGhpY3MgMS40MDkuNSAo
Pz8/KSA8YTQwNjQ0Y2NkYmRjNzZlM2EwYWI0ZDQ2OGIyZjliZGQ+IC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3
b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29yZUdyYXBoaWNzCjB4OTNk
NGYwMDAgLSAweDkzZDdlZmUzICBjb20uYXBwbGUuQUUgNDAyLjMgKDQwMi4zKSA8YWVlNDEyNTEx
Yzg3MjVjZDFhMmNmYjY1MDEzMTZiZDU+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVT
ZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0FFLmZyYW1ld29yay9WZXJz
aW9ucy9BL0FFCjB4OTNkN2YwMDAgLSAweDkzZDg2ZmU5ICBsaWJnY2Nfcy4xLmR5bGliID8/PyAo
Pz8/KSA8ZTI4MGRkZjNmNWZiMzA0OWU2NzRlZGNiMTA5ZjM4OWE+IC91c3IvbGliL2xpYmdjY19z
LjEuZHlsaWIKMHg5M2Q4ZDAwMCAtIDB4OTRjZGRmZjYgIGNvbS5hcHBsZS5RdWlja1RpbWVDb21w
b25lbnRzLmNvbXBvbmVudCA3LjYuNCAoMTMyNy43MykgL1N5c3RlbS9MaWJyYXJ5L1F1aWNrVGlt
ZS9RdWlja1RpbWVDb21wb25lbnRzLmNvbXBvbmVudC9Db250ZW50cy9NYWNPUy9RdWlja1RpbWVD
b21wb25lbnRzCjB4OTRjZjYwMDAgLSAweDk1MGI0ZmVhICBsaWJMQVBBQ0suZHlsaWIgPz8/ICg/
Pz8pIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FjY2VsZXJhdGUuZnJhbWV3b3JrL1ZlcnNp
b25zL0EvRnJhbWV3b3Jrcy92ZWNMaWIuZnJhbWV3b3JrL1ZlcnNpb25zL0EvbGliTEFQQUNLLmR5
bGliCjB4OTUwZTUwMDAgLSAweDk1MTEwZmU3ICBsaWJhdXRvLmR5bGliID8/PyAoPz8/KSA8MmU0
NGM1MjNiODUxZThlMjVmMDVkMTNhNDgwNzBhNTg+IC91c3IvbGliL2xpYmF1dG8uZHlsaWIKMHg5
NTExMTAwMCAtIDB4OTUxOGVmZWYgIGxpYnZNaXNjLmR5bGliID8/PyAoPz8/KSAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29y
a3MvdmVjTGliLmZyYW1ld29yay9WZXJzaW9ucy9BL2xpYnZNaXNjLmR5bGliCjB4OTUxOGYwMDAg
LSAweDk1MTk2ZmZlICBsaWJic20uZHlsaWIgPz8/ICg/Pz8pIDxmYTdhZTVmMWE2MjFkOWI2OWU3
ZTE4NzQ3Yzk0MDVmYj4gL3Vzci9saWIvbGliYnNtLmR5bGliCjB4OTUxOTcwMDAgLSAweDk1MjIx
ZmUzICBjb20uYXBwbGUuRGVza3RvcFNlcnZpY2VzIDEuNC44ICgxLjQuOCkgPGE2ZWRlZjJkNDlm
ZmRlZTNiMDEwMTBiN2U2ZWRhYzFmPiAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3Mv
RGVza3RvcFNlcnZpY2VzUHJpdi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9EZXNrdG9wU2VydmljZXNQ
cml2CjB4OTUyMjIwMDAgLSAweDk1MjIyZmY4ICBjb20uYXBwbGUuQXBwbGljYXRpb25TZXJ2aWNl
cyAzNCAoMzQpIDxlZTdiZGY1OTNkYTA1MGJiMzBjN2ExZmM0NDZlYjhhNj4gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9B
cHBsaWNhdGlvblNlcnZpY2VzCjB4OTUyMjMwMDAgLSAweDk1MjI5ZmZmICBjb20uYXBwbGUucHJp
bnQuZnJhbWV3b3JrLlByaW50IDIxOC4wLjMgKDIyMC4yKSA8MGI3MGJhMTdjYmJlNGQ2MmEwMGJl
YzkxYzhjYzY3NWU+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsv
VmVyc2lvbnMvQS9GcmFtZXdvcmtzL1ByaW50LmZyYW1ld29yay9WZXJzaW9ucy9BL1ByaW50CjB4
OTUyMmEwMDAgLSAweDk1MjdiZmY3ICBjb20uYXBwbGUuSElTZXJ2aWNlcyAxLjcuMSAoPz8/KSA8
YmE3ZmQwZWRlNTQwYTBkYTA4ZGIwMjdmODdlZmJkNjA+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9I
SVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0hJU2VydmljZXMKMHg5NTI3YzAwMCAtIDB4
OTUyN2NmZmEgIGNvbS5hcHBsZS5Db3JlU2VydmljZXMgMzIgKDMyKSA8MzczZDZhODg4ZjkyMDQ2
NDFmMzEzYmM2MDcwYWUwNjU+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlU2VydmljZXMKMHg5NTI3ZDAwMCAtIDB4OTU0MGNm
ZTcgIGNvbS5hcHBsZS5Db3JlQVVDIDMuMDguMCAoMy4wOC4wKSA8YTQxMmU1MzVhOWZiOWMzNmJh
OTcyZTUxNTgwNTk3ODU+IC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Db3JlQVVD
LmZyYW1ld29yay9WZXJzaW9ucy9BL0NvcmVBVUMKMHg5NTQyYjAwMCAtIDB4OTU1N2RmZjMgIGNv
bS5hcHBsZS5hdWRpby50b29sYm94LkF1ZGlvVG9vbGJveCAxLjUuMiAoMS41LjIpIC9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0F1ZGlvVG9vbGJveC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9BdWRp
b1Rvb2xib3gKMHg5NTU3ZTAwMCAtIDB4OTU1OWRmZmEgIGxpYkpQRUcuZHlsaWIgPz8/ICg/Pz8p
IDw1MGI4ODFkZDVhNTc5NWQzODQwNWM5Yzg4YzI4MDZmYT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtz
L0ltYWdlSU8uZnJhbWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xpYkpQRUcuZHlsaWIKMHg5
NTZkNzAwMCAtIDB4OTU2ZGFmZmYgIGNvbS5hcHBsZS5oZWxwIDEuMSAoMzYpIDwxYTI1YThmYmI0
OWE4MzBlZmIzMWQ1YzBhNTI5MzljZD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvSGVscC5mcmFtZXdvcmsvVmVyc2lvbnMv
QS9IZWxwCjB4OTU4OTgwMDAgLSAweDk1YzM1ZmVmICBjb20uYXBwbGUuUXVhcnR6Q29yZSAxLjUu
OCAoMS41LjgpIDw4ZGM5YWQwNjE2YmY1NmViYmE2MGQ2MzUzNzM3YWM0ZT4gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9RdWFydHpDb3Jl
CjB4OTVkMTMwMDAgLSAweDk1ZGEwZmY3ICBjb20uYXBwbGUuTGF1bmNoU2VydmljZXMgMjkyICgy
OTIpIDxhNDEyODZjN2MxZWIyMGZmZDVjYzc5NmY3OTEwNzBmMD4gL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvTGF1
bmNoU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvTGF1bmNoU2VydmljZXMKMHg5NWRhMTAw
MCAtIDB4OTVkYmRmZjMgIGxpYlBuZy5keWxpYiA/Pz8gKD8/PykgPDI3MTM3M2RkNDFmNTYzNjlh
M2RmY2EwZWQyYmU1NzlhPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcmsv
VmVyc2lvbnMvQS9SZXNvdXJjZXMvbGliUG5nLmR5bGliCjB4OTVkYmUwMDAgLSAweDk1ZGJlZmZk
ICBjb20uYXBwbGUuQWNjZWxlcmF0ZS52ZWNMaWIgMy40LjIgKHZlY0xpYiAzLjQuMikgL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQWNjZWxlcmF0ZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFt
ZXdvcmtzL3ZlY0xpYi5mcmFtZXdvcmsvVmVyc2lvbnMvQS92ZWNMaWIKMHg5NWRiZjAwMCAtIDB4
OTVkZjlmZTcgIGNvbS5hcHBsZS5jb3JldWkgMS4yICg2MikgL1N5c3RlbS9MaWJyYXJ5L1ByaXZh
dGVGcmFtZXdvcmtzL0NvcmVVSS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlVUkKMHg5NWU5ZTAw
MCAtIDB4OTVmNDVmZWMgIGNvbS5hcHBsZS5DRk5ldHdvcmsgNDM4LjE0ICg0MzguMTQpIDw1Zjll
ZTA0MzBiNWY2MzE5ZjE4ZDliMjNlNzc3ZTBkMj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZy
YW1ld29yay9WZXJzaW9ucy9BL0NGTmV0d29yawoweDk1ZjQ2MDAwIC0gMHg5NWY5ZmZmNyAgbGli
R0xVLmR5bGliID8/PyAoPz8/KSA8YTA4YTc1M2VmYzM1ZjhhMjdmOWM4ZjkzOGZhMDExMDE+IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9MaWJy
YXJpZXMvbGliR0xVLmR5bGliCjB4OTVmZjIwMDAgLSAweDk1ZmZiZmZmICBjb20uYXBwbGUuc3Bl
ZWNoLnJlY29nbml0aW9uLmZyYW1ld29yayAzLjcuMjQgKDMuNy4yNCkgPGRhMmQ4NDExOTIxYTNm
ZDhiYzg5OGRjNzUzYjdmM2VlPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9TcGVlY2hSZWNvZ25pdGlvbi5mcmFtZXdvcmsv
VmVyc2lvbnMvQS9TcGVlY2hSZWNvZ25pdGlvbgoweDk2MjY1MDAwIC0gMHg5NjMxZmZlMyAgY29t
LmFwcGxlLkNvcmVTZXJ2aWNlcy5PU1NlcnZpY2VzIDIyOCAoMjI4KSA8YmM4M2U5N2Y2ODg4Njcz
YzMzZjg2NjUyNjc3YzA5Y2I+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
cy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL09TU2VydmljZXMuZnJhbWV3b3JrL1Zl
cnNpb25zL0EvT1NTZXJ2aWNlcwoweDk2MzIwMDAwIC0gMHg5NjMyNGZmZiAgY29tLmFwcGxlLkNv
cmVNZWRpYUF1dGhvcmluZ1ByaXZhdGUgMS42ICgxLjYpIC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRl
RnJhbWV3b3Jrcy9Db3JlTWVkaWFBdXRob3JpbmdQcml2YXRlLmZyYW1ld29yay9WZXJzaW9ucy9B
L0NvcmVNZWRpYUF1dGhvcmluZ1ByaXZhdGUKMHg5NjMyNTAwMCAtIDB4OTYzYjhmZjMgIGNvbS5h
cHBsZS5BcHBsaWNhdGlvblNlcnZpY2VzLkFUUyAzLjggKD8/PykgPGVkYTlkYjE2MTEwZGU2Yjdm
ZDk0MzZjZDBkYWE3ODdkPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9WZXJz
aW9ucy9BL0FUUwoweDk2NjllMDAwIC0gMHg5NmU5Y2ZlZiAgY29tLmFwcGxlLkFwcEtpdCA2LjUu
OSAoOTQ5LjU0KSA8NGRmNWQyZTIyNzExNzU0NTIxMDNmNzg5YjRmNGQ4YTg+IC9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQy9BcHBLaXQKMHg5NmVh
NDAwMCAtIDB4OTZlYmNmZjcgIGNvbS5hcHBsZS5Db3JlVmlkZW8gMS42LjAgKDIwLjApIDw1ODdj
OWM4OTY2MDcwYTdkNTAyNzZkYjM1ZTFjNzZhYT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29yZVZpZGVvLmZyYW1ld29yay9WZXJzaW9ucy9BL0NvcmVWaWRlbwoweDk2ZWJkMDAwIC0gMHg5
NmVjMmZmZiAgY29tLmFwcGxlLkNvbW1vblBhbmVscyAxLjIuNCAoODUpIDxjMTM1ZjAyZWRkNmIy
ZTI4NjQzMTFlMGI5ZDA4YTk4ZD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQ29tbW9uUGFuZWxzLmZyYW1ld29yay9WZXJz
aW9ucy9BL0NvbW1vblBhbmVscwoweDk2ZWMzMDAwIC0gMHg5NmVjM2ZmZCAgY29tLmFwcGxlLkFj
Y2VsZXJhdGUgMS40LjIgKEFjY2VsZXJhdGUgMS40LjIpIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FjY2VsZXJhdGUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQWNjZWxlcmF0ZQoweDk2ZWZiMDAw
IC0gMHg5NmYyNGZmZiAgY29tLmFwcGxlLkNvcmVNZWRpYVByaXZhdGUgMTUuMCAoMTUuMCkgL1N5
c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0NvcmVNZWRpYVByaXZhdGUuZnJhbWV3b3Jr
L1ZlcnNpb25zL0EvQ29yZU1lZGlhUHJpdmF0ZQoweDk2ZjI1MDAwIC0gMHg5NmYyOWZmZiAgbGli
R0lGLmR5bGliID8/PyAoPz8/KSA8M2M3MTAwZTgwYjdmN2NhODgwOWNmOTUxMmMxYTYwMDQ+IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1Zl
cnNpb25zL0EvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNl
cy9saWJHSUYuZHlsaWIKMHg5NmY2NzAwMCAtIDB4OTcyOGRmZTIgIGNvbS5hcHBsZS5RdWlja1Rp
bWUgNy42LjQgKDEzMjcuNzMpIDw5NjUxNWY2YTJkNjI4Y2QyMTA1YzcwODIyOTUxOTliNT4gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVpY2tUaW1lLmZyYW1ld29yay9WZXJzaW9ucy9BL1F1
aWNrVGltZQoweDk3MjhlMDAwIC0gMHg5NzI4ZWZmZiAgY29tLmFwcGxlLkNhcmJvbiAxMzYgKDEz
NikgPDJlYThkZWNiNDRmNDFjNGYyZmM2ZmU5M2UwYTUzMTc0PiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ2FyYm9uCjB4OTcyYTEwMDAgLSAw
eDk3MmEzZmY1ICBsaWJSYWRpYW5jZS5keWxpYiA/Pz8gKD8/PykgPGFlZmQ1MjQ4Mjg2OWJiNTAx
MDY3MjY3OWQxNTExNjdlPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcmsv
VmVyc2lvbnMvQS9SZXNvdXJjZXMvbGliUmFkaWFuY2UuZHlsaWIKMHg5NzJhNDAwMCAtIDB4OTcy
YTVmZmMgIGxpYmZmaS5keWxpYiA/Pz8gKD8/PykgPGVhZjEwYjk5YTNmYmM0OTIwYjE3NTgwOTQw
NzQ2NmMwPiAvdXNyL2xpYi9saWJmZmkuZHlsaWIKMHg5NzMxOTAwMCAtIDB4OTczZDBmZjMgIGNv
bS5hcHBsZS5RVEtpdCA3LjYuNCAoMTMyNy43MykgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
UVRLaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUVRLaXQKMHg5NzNkMTAwMCAtIDB4OTczZDhmZjcg
IGxpYkNHQVRTLkEuZHlsaWIgPz8/ICg/Pz8pIDwxMzM5YWJmYjY3MzE4ZDY1YzAxMzBmNzZiYzhj
NGRhNj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9SZXNvdXJjZXMvbGliQ0dBVFMuQS5keWxpYgoweDk3M2Q5MDAwIC0gMHg5NzNlOWZmZiAg
Y29tLmFwcGxlLnNwZWVjaC5zeW50aGVzaXMuZnJhbWV3b3JrIDMuNy4xICgzLjcuMSkgPDI3M2Q5
NmZmODYxZGM2OGJlNjU5YzA3ZWY1NmY1OTlhPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvU3BlZWNo
U3ludGhlc2lzLmZyYW1ld29yay9WZXJzaW9ucy9BL1NwZWVjaFN5bnRoZXNpcwoweDk3M2VhMDAw
IC0gMHg5NzRiNWZlZiAgY29tLmFwcGxlLkNvbG9yU3luYyA0LjUuMyAoNC41LjMpIC9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25z
L0EvRnJhbWV3b3Jrcy9Db2xvclN5bmMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29sb3JTeW5jCjB4
OTc0ZTgwMDAgLSAweDk3NTZmZmY3ICBsaWJzcWxpdGUzLjAuZHlsaWIgPz8/ICg/Pz8pIDw3ZDFm
Y2ZhZTkzN2RhOTVjN2QyYjliZGVhNTdlNmRjMD4gL3Vzci9saWIvbGlic3FsaXRlMy4wLmR5bGli
CjB4OTc1NzAwMDAgLSAweDk3NWIxZmU3ICBsaWJSSVAuQS5keWxpYiA/Pz8gKD8/PykgPGU5YzVk
ZjhiZDU3NGI3MWU1NWFjNjBjOTEwYjkyOWNlPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQ29yZUdy
YXBoaWNzLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9saWJSSVAuQS5keWxpYgoweGJh
OTAwMDAwIC0gMHhiYTkxNmZmZiAgbGliSmFwYW5lc2VDb252ZXJ0ZXIuZHlsaWIgPz8/ICg/Pz8p
IDxiOWFlYTgzYjFjZDk3ZjMyMzA5OTllYmZjYmY2M2U3Yz4gL1N5c3RlbS9MaWJyYXJ5L0NvcmVT
ZXJ2aWNlcy9FbmNvZGluZ3MvbGliSmFwYW5lc2VDb252ZXJ0ZXIuZHlsaWIKMHhmZmZlODAwMCAt
IDB4ZmZmZWJmZmYgIGxpYm9iamMuQS5keWxpYiA/Pz8gKD8/PykgL3Vzci9saWIvbGlib2JqYy5B
LmR5bGliCjB4ZmZmZjAwMDAgLSAweGZmZmYxNzgwICBsaWJTeXN0ZW0uQi5keWxpYiA/Pz8gKD8/
PykgL3Vzci9saWIvbGliU3lzdGVtLkIuZHlsaWIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47186</attachid>
            <date>2010-01-22 02:48:05 -0800</date>
            <delta_ts>2010-01-23 04:42:25 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>10663</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTI2NmRhZS4uMTQ5MTEzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wMS0yMiAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIFJlbmRlck9iamVjdHMgd2l0aCBmaXhlZCBwb3NpdGlvbiByZWdpc3RlciB0byB0aGUg
dmlldworICAgICAgICB0byBiZSB0YWtlbiBpbnRvIGFjY291bnQgd2hpbGUgc2Nyb2xsaW5nLgor
ICAgICAgICBUaGUgc2Nyb2xsaW5nIGNvZGUgdXBkYXRlIHNwZWNpZmljYWxseSB0aG9zZSBlbGVt
ZW50cyBhZnRlciBibGl0dGluZyB0aGUgcGl4ZWxzLgorCisgICAgICAgICogcGFnZS9GcmFtZVZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZWdpc3RlckZpeGVkUG9zaXRp
b25lZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVucmVnaXN0ZXJGaXhl
ZFBvc2l0aW9uZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxD
b250ZW50c0Zhc3RQYXRoKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6
c2Nyb2xsQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xsQ29u
dGVudHNGYXN0UGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpkZXN0cm95KToKKwogMjAxMC0wMS0yMCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFu
bkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKaW5kZXggODZlMTNhNy4uZjYzNjVmOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTgxMyw2
ICs4MTMsNjggQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KCkKICAg
ICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCF1c2VTbG93UmVwYWludHMoKSk7CiB9CiAKKwordm9p
ZCBGcmFtZVZpZXc6OnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KFJlbmRlck9iamVjdCog
b2JqZWN0KQoreworICAgIG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0cy5hZGQob2JqZWN0KTsKK30K
Kwordm9pZCBGcmFtZVZpZXc6OnVucmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3QoUmVuZGVy
T2JqZWN0KiBvYmplY3QpCit7CisgICAgbV9maXhlZFBvc2l0aW9uZWRPYmplY3RzLnJlbW92ZShv
YmplY3QpOworfQorCit2b2lkIEZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25z
dCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBjb25zdCBzaXplX3QgZml4ZWRPYmplY3ROdW1i
ZXJUaHJlc2hvbGQgPSA1OworCisgICAgaWYgKG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0cy5pc0Vt
cHR5KCkpCisgICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9T
Y3JvbGwsIGNsaXBSZWN0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgVmVjdG9yPFJlbmRlck9iamVj
dCo+IGZpeGVkT2JqZWN0c0luVmlld3BvcnQ7CisgICAgICAgIGZpeGVkT2JqZWN0c0luVmlld3Bv
cnQucmVzZXJ2ZUNhcGFjaXR5KG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0cy5zaXplKCkpOworCisg
ICAgICAgIGJvb2wgdXBkYXRlSW52YWxpZGF0ZWRTdWJSZWN0ID0gdHJ1ZTsKKyAgICAgICAgLy8g
R2V0IGEgbGlzdCBvZiBmaXhlZCBvYmplY3RzIHRoYXQgYXJlIG5vdCBpbiB0cmFuc2Zvcm1hdGlv
bnMKKyAgICAgICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bV9maXhlZFBvc2l0aW9uZWRPYmplY3RzLmVuZCgpOworICAgICAgICBIYXNoU2V0PFJlbmRlck9i
amVjdCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0cy5iZWdp
bigpOworICAgICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBSZW5k
ZXJPYmplY3QqIG9iaiA9ICppdDsKKyAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgcGFyZW50
IGxheWVyIGhhcyBub3QgYmVlbiB0cmFuc2Zvcm1lZAorICAgICAgICAgICAgaWYgKG9iai0+Y29u
dGFpbmluZ0Jsb2NrKCkgPT0gb2JqLT52aWV3KCkpIHsKKyAgICAgICAgICAgICAgICBmaXhlZE9i
amVjdHNJblZpZXdwb3J0LmFwcGVuZChvYmopOworICAgICAgICAgICAgICAgIGlmIChmaXhlZE9i
amVjdHNJblZpZXdwb3J0LnNpemUoKSA+IGZpeGVkT2JqZWN0TnVtYmVyVGhyZXNob2xkKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHVwZGF0ZUludmFsaWRhdGVkU3ViUmVjdCA9IGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICAvLyBzY3JvbGwgdGhlIGNvbnRlbnQKKyAgICAgICAgaWYg
KHVwZGF0ZUludmFsaWRhdGVkU3ViUmVjdCkgeworICAgICAgICAgICAgLy8gMSkgc2Nyb2xsCisg
ICAgICAgICAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xs
LCBjbGlwUmVjdCk7CisKKyAgICAgICAgICAgIC8vIDIpIHVwZGF0ZSB0aGUgYXJlYSBvZiBmaXhl
ZCBvYmpldHMgdGhhdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAorICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmaXhlZE9iamVjdHNJblZpZXdwb3J0LnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICAgICAgSW50UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAgICAgICAgICAgICAgSW50UmVj
dCB1cGRhdGVSZWN0ID0gZml4ZWRPYmplY3RzSW5WaWV3cG9ydFtpXS0+cGFpbnRpbmdSb290UmVj
dCh0b3BMZXZlbFJlY3QpOworICAgICAgICAgICAgICAgIHVwZGF0ZVJlY3QubW92ZSgtc2Nyb2xs
WCgpLCAtc2Nyb2xsWSgpKTsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHNjcm9sbGVkUmVjdCA9
IHVwZGF0ZVJlY3Q7CisgICAgICAgICAgICAgICAgc2Nyb2xsZWRSZWN0Lm1vdmUoc2Nyb2xsRGVs
dGEpOworICAgICAgICAgICAgICAgIHVwZGF0ZVJlY3QudW5pdGUoc2Nyb2xsZWRSZWN0KTsKKyAg
ICAgICAgICAgICAgICB1cGRhdGVSZWN0LmludGVyc2VjdChyZWN0VG9TY3JvbGwpOworICAgICAg
ICAgICAgICAgIGhvc3RXaW5kb3coKS0+cmVwYWludCh1cGRhdGVSZWN0LCB0cnVlLCBmYWxzZSwg
dHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyB0
aGUgbnVtYmVyIG9mIGZpeGVkIG9iamVjdHMgZXhjZWVkIHRoZSB0aHJlc2hvbGQsIHNvIHdlIHJl
cGFpbnQgZXZlcnl0aGluZy4KKyAgICAgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IGNsaXBS
ZWN0OworICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVjdFRvU2Nyb2xsKTsKKyAg
ICAgICAgICAgIGhvc3RXaW5kb3coKS0+cmVwYWludCh1cGRhdGVSZWN0LCB0cnVlLCBmYWxzZSwg
dHJ1ZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgRnJhbWVWaWV3OjpzZXRJc092ZXJs
YXBwZWQoYm9vbCBpc092ZXJsYXBwZWQpCiB7CiAgICAgaWYgKGlzT3ZlcmxhcHBlZCA9PSBtX2lz
T3ZlcmxhcHBlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiMjdmZmQ4Li5jM2RlMDViIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBA
IC0xNDUsNiArMTQ1LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNsb3dSZXBhaW50T2JqZWN0
KCk7CiAgICAgdm9pZCByZW1vdmVTbG93UmVwYWludE9iamVjdCgpOwogCisgICAgLy8gTWV0aG9k
cyB0byBtYW5hZ2UgdGhlIG9iamVjdHMgdGhhdCBhcmUgZml4ZWQKKyAgICAvLyBpbiB0aGUgdmll
dyB3aGVuIHNjcm9sbGluZworICAgIHZvaWQgcmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3Qo
UmVuZGVyT2JqZWN0KiBvYmplY3QpOworICAgIHZvaWQgdW5yZWdpc3RlckZpeGVkUG9zaXRpb25l
ZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCk7CisKICAgICB2b2lkIGJlZ2luRGVmZXJyZWRS
ZXBhaW50cygpOwogICAgIHZvaWQgZW5kRGVmZXJyZWRSZXBhaW50cygpOwogICAgIHZvaWQgY2hl
Y2tTdG9wRGVsYXlpbmdEZWZlcnJlZFJlcGFpbnRzKCk7CkBAIC0xOTksNiArMjA0LDkgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNGcmFtZVZpZXdTY3JvbGxDb3JuZXIoUmVuZGVyU2Nyb2xsYmFyUGFy
dCogc2Nyb2xsQ29ybmVyKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbENvcm5lciA9PSBzY3JvbGxD
b3JuZXI7IH0KICAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXIoKTsKIAorcHJvdGVjdGVk
OgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3Qm
IGNsaXBSZWN0KTsKKwogcHJpdmF0ZToKICAgICBGcmFtZVZpZXcoRnJhbWUqKTsKIApAQCAtMjY4
LDYgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzT3ZlcmxhcHBlZDsKICAgICBib29s
IG1fY29udGVudElzT3BhcXVlOwogICAgIHVuc2lnbmVkIG1fc2xvd1JlcGFpbnRPYmplY3RDb3Vu
dDsKKyAgICBIYXNoU2V0PFJlbmRlck9iamVjdCo+IG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0czsK
IAogICAgIGludCBtX2JvcmRlclgsIG1fYm9yZGVyWTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAK
aW5kZXggMGY2OTIwYy4uNjMwM2I0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC01MTUs
NyArNTE1LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXpl
JiBzY3JvbGxEZWx0YSkKIAogICAgIGlmIChjYW5CbGl0T25TY3JvbGwoKSkgeyAvLyBUaGUgbWFp
biBmcmFtZSBjYW4ganVzdCBibGl0IHRoZSBXZWJWaWV3IHdpbmRvdwogICAgICAgIC8vIEZJWE1F
OiBGaW5kIGEgd2F5IHRvIGJsaXQgc3ViZnJhbWVzIHdpdGhvdXQgYmxpdHRpbmcgb3ZlcmxhcHBp
bmcgY29udGVudAotICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKC1zY3JvbGxEZWx0YSwgc2Ny
b2xsVmlld1JlY3QsIGNsaXBSZWN0KTsKKyAgICAgICBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKC1z
Y3JvbGxEZWx0YSwgc2Nyb2xsVmlld1JlY3QsIGNsaXBSZWN0KTsKICAgICB9IGVsc2UgeyAKICAg
ICAgICAvLyBXZSBuZWVkIHRvIGdvIGFoZWFkIGFuZCByZXBhaW50IHRoZSBlbnRpcmUgYmFja2lu
ZyBzdG9yZS4gIERvIGl0IG5vdyBiZWZvcmUgbW92aW5nIHRoZQogICAgICAgIC8vIHdpbmRvd2Vk
IHBsdWdpbnMuCkBAIC01MzAsNiArNTMwLDExIEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29u
dGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAgICAgaG9zdFdpbmRvdygpLT5wYWlu
dCgpOwogfQogCit2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3Qg
SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QpCit7CisgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVs
dGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworfQorCiBJbnRQb2ludCBTY3JvbGxWaWV3Ojp3
aW5kb3dUb0NvbnRlbnRzKGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgY29uc3QKIHsKICAg
ICBJbnRQb2ludCB2aWV3UG9pbnQgPSBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cod2luZG93
UG9pbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCBhNzE3M2E3Li42Y2EyNTgxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuaApAQCAtMjQ5LDYgKzI0OSw5IEBAIHByb3RlY3RlZDoKICAgICBJbnRSZWN0
IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xs
Q29ybmVyKCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOworCisgICAgLy8gU2Nyb2xsIHRoZSBj
b250ZW50IGJ5IGJsaXR0aW5nIHRoZSBwaXhlbHMKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQ29u
dGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYg
cmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgCiBwcml2YXRlOgog
ICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCmluZGV4IDVkZGI4ODIuLmM2YzAxNWEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcApAQCAtMTY0NywxMCArMTY0Nyw4IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpz
dHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBu
ZXdTCiAgICAgfSBlbHNlCiAgICAgICAgIHNfYWZmZWN0c1BhcmVudEJsb2NrID0gZmFsc2U7CiAK
LSAgICBpZiAodmlldygpLT5mcmFtZVZpZXcoKSkgewotICAgICAgICAvLyBGSVhNRTogQSBiZXR0
ZXIgc29sdXRpb24gd291bGQgYmUgdG8gb25seSBpbnZhbGlkYXRlIHRoZSBmaXhlZCByZWdpb25z
IHdoZW4gc2Nyb2xsaW5nLiAgSXQncyBvdmVya2lsbCB0bwotICAgICAgICAvLyBwcmV2ZW50IHRo
ZSBlbnRpcmUgdmlldyBmcm9tIGJsaXR0aW5nIG9uIGEgc2Nyb2xsLgotCisgICAgRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSB2aWV3KCktPmZyYW1lVmlldygpOworICAgIGlmIChmcmFtZVZpZXcpIHsK
ICAgICAgICAgYm9vbCBzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSA9IGZhbHNlOwog
I2lmIEVOQUJMRShGQVNUX01PQklMRV9TQ1JPTExJTkcpCiAgICAgICAgIC8vIE9uIGxvdy1wb3dl
cmVkL21vYmlsZSBkZXZpY2VzLCBwcmV2ZW50aW5nIGJsaXR0aW5nIG9uIGEgc2Nyb2xsIGNhbiBj
YXVzZSBub3RpY2VhYmxlIGRlbGF5cwpAQCAtMTY2MCwxNSArMTY1OCwzMiBAQCB2b2lkIFJlbmRl
ck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTdHlsZSogbmV3UwogICAgICAgICBzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSA9
IHRydWU7CiAjZW5kaWYKIAotICAgICAgICBib29sIG5ld1N0eWxlU2xvd1Njcm9sbCA9IG5ld1N0
eWxlICYmIChuZXdTdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICghc2hvdWxkQmxpdE9uRml4
ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbmV3U3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkp
KTsKLSAgICAgICAgYm9vbCBvbGRTdHlsZVNsb3dTY3JvbGwgPSBtX3N0eWxlICYmIChtX3N0eWxl
LT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfHwgKCFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFn
ZSAmJiBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpKSk7CisgICAgICAgIGJvb2wg
bmV3U3R5bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgIXNob3VsZEJsaXRPbkZpeGVkQmFja2dy
b3VuZEltYWdlICYmIG5ld1N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpOworICAgICAg
ICBib29sIG9sZFN0eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYgIXNob3VsZEJsaXRPbkZpeGVk
QmFja2dyb3VuZEltYWdlICYmIG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCk7CisK
ICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9sbCAhPSBuZXdTdHlsZVNsb3dTY3JvbGwpIHsK
ICAgICAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwpCi0gICAgICAgICAgICAgICAgdmll
dygpLT5mcmFtZVZpZXcoKS0+cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKTsKKyAgICAgICAgICAg
ICAgICBmcmFtZVZpZXctPnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KCk7CiAgICAgICAgICAgICBp
ZiAobmV3U3R5bGVTbG93U2Nyb2xsKQotICAgICAgICAgICAgICAgIHZpZXcoKS0+ZnJhbWVWaWV3
KCktPmFkZFNsb3dSZXBhaW50T2JqZWN0KCk7CisgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5h
ZGRTbG93UmVwYWludE9iamVjdCgpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBuZXdTdHls
ZUhhc1RyYW5zZm9ybSA9IG5ld1N0eWxlICYmIChuZXdTdHlsZS0+aGFzVHJhbnNmb3JtUmVsYXRl
ZFByb3BlcnR5KCkpOworICAgICAgICBpZiAoIW5ld1N0eWxlSGFzVHJhbnNmb3JtKSB7CisgICAg
ICAgICAgICBib29sIG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlvbiA9IG5ld1N0eWxlICYmIChuZXdT
dHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGJvb2wgb2xk
U3R5bGVIYXNGaXhlZFBvc2l0aW9uID0gbV9zdHlsZSAmJiAobV9zdHlsZS0+cG9zaXRpb24oKSA9
PSBGaXhlZFBvc2l0aW9uKTsKKworICAgICAgICAgICAgaWYgKG9sZFN0eWxlSGFzRml4ZWRQb3Np
dGlvbiAhPSBuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAo
bmV3U3R5bGVIYXNGaXhlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgICAgICBmcmFtZVZpZXct
PnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KHRoaXMpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT51bnJlZ2lzdGVyRml4ZWRQb3NpdGlv
bmVkT2JqZWN0KHRoaXMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAv
LyBpZiBwcmV2aW91c2x5IGhhZCBhIGZpeCBwb3NpdGlvbiwgYnV0IGhhZCBhIHRyYW5zZm9ybSwg
d2hpY2ggaGFzIGJlZW4gcmVtb3ZlZAorICAgICAgICAgICAgICAgIGJvb2wgb2xkU3R5bGVIYXNU
cmFuc2Zvcm0gPSBtX3N0eWxlICYmIChtX3N0eWxlLT5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVy
dHkoKSk7CisgICAgICAgICAgICAgICAgaWYgKG9sZFN0eWxlSGFzVHJhbnNmb3JtICYmIG5ld1N0
eWxlSGFzRml4ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5yZWdp
c3RlckZpeGVkUG9zaXRpb25lZE9iamVjdCh0aGlzKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KIH0KQEAgLTE5MzEsNiArMTk0NiwxMyBAQCBib29sIFJlbmRlck9iamVjdDo6aXNT
ZWxlY3Rpb25Cb3JkZXIoKSBjb25zdAogCiB2b2lkIFJlbmRlck9iamVjdDo6ZGVzdHJveSgpCiB7
CisgICAgLy8gdW5yZWdpc3RlciBmcm9tIHRoZSB2aWV3IGlmIHRoZSBvYmplY3QgaGFkIGEgZml4
ZWQgcG9zaXRpb24KKyAgICBpZiAobV9zdHlsZSAmJiBtX3N0eWxlLT5wb3NpdGlvbigpID09IEZp
eGVkUG9zaXRpb24pIHsKKyAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBkb2N1bWVudCgp
LT52aWV3KCk7CisgICAgICAgIGlmIChmcmFtZVZpZXcpCisgICAgICAgICAgICBmcmFtZVZpZXct
PnVucmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3QodGhpcyk7CisgICAgfQorCiAgICAgLy8g
RGVzdHJveSBhbnkgbGVmdG92ZXIgYW5vbnltb3VzIGNoaWxkcmVuLgogICAgIFJlbmRlck9iamVj
dENoaWxkTGlzdCogY2hpbGRyZW4gPSB2aXJ0dWFsQ2hpbGRyZW4oKTsKICAgICBpZiAoY2hpbGRy
ZW4pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47270</attachid>
            <date>2010-01-23 04:42:25 -0800</date>
            <delta_ts>2010-01-23 15:43:21 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smart_update_with_fixed_nodes.patch</filename>
            <type>text/plain</type>
            <size>11761</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDYwMzRlZi4uNDIyMWI4MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0wMS0yMyAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIFJlbmRlck9iamVjdHMgd2l0aCBmaXhlZCBwb3NpdGlvbiByZWdpc3RlciB0byB0aGUg
dmlldworICAgICAgICB0byBiZSB0YWtlbiBpbnRvIGFjY291bnQgd2hpbGUgc2Nyb2xsaW5nLgor
ICAgICAgICBUaGUgc2Nyb2xsaW5nIGNvZGUgdXBkYXRlIHNwZWNpZmljYWxseSB0aG9zZSBlbGVt
ZW50cyBhZnRlciBibGl0dGluZyB0aGUgcGl4ZWxzLiAKKworICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzSWZOb3RPdmVybGFw
cGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVnaXN0ZXJGaXhlZFBvc2l0aW9u
ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1bnJlZ2lzdGVyRml4ZWRQ
b3NpdGlvbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsQ29u
dGVudHNGYXN0UGF0aCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNj
cm9sbENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbENvbnRl
bnRzRmFzdFBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
ZGVzdHJveSk6CisKIDIwMTAtMDEtMjIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCAyMTY2NmFlLi5iYzM3NDVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNzg0LDEyICs3ODQsMTIg
QEAgU3RyaW5nIEZyYW1lVmlldzo6bWVkaWFUeXBlKCkgY29uc3QKIAogYm9vbCBGcmFtZVZpZXc6
OnVzZVNsb3dSZXBhaW50cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXNlU2xvd1JlcGFpbnRz
IHx8IG1fc2xvd1JlcGFpbnRPYmplY3RDb3VudCA+IDAgfHwgbV9pc092ZXJsYXBwZWQgfHwgIW1f
Y29udGVudElzT3BhcXVlOworICAgIHJldHVybiBtX3VzZVNsb3dSZXBhaW50cyB8fCBtX3Nsb3dS
ZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8IChwbGF0Zm9ybVdpZGdldCgpICYmICFtX2ZpeGVkUG9z
aXRpb25lZE9iamVjdHMuaXNFbXB0eSgpKSB8fCBtX2lzT3ZlcmxhcHBlZCB8fCAhbV9jb250ZW50
SXNPcGFxdWU7CiB9CiAKIGJvb2wgRnJhbWVWaWV3Ojp1c2VTbG93UmVwYWludHNJZk5vdE92ZXJs
YXBwZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX3VzZVNsb3dSZXBhaW50cyB8fCBtX3Nsb3dS
ZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8ICFtX2NvbnRlbnRJc09wYXF1ZTsKKyAgICByZXR1cm4g
bV91c2VTbG93UmVwYWludHMgfHwgbV9zbG93UmVwYWludE9iamVjdENvdW50ID4gMCB8fCAocGxh
dGZvcm1XaWRnZXQoKSAmJiAhbV9maXhlZFBvc2l0aW9uZWRPYmplY3RzLmlzRW1wdHkoKSkgfHwg
IW1fY29udGVudElzT3BhcXVlOwogfQogCiB2b2lkIEZyYW1lVmlldzo6c2V0VXNlU2xvd1JlcGFp
bnRzKCkKQEAgLTgxMyw2ICs4MTMsNzMgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVNsb3dSZXBh
aW50T2JqZWN0KCkKICAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCF1c2VTbG93UmVwYWludHMo
KSk7CiB9CiAKKwordm9pZCBGcmFtZVZpZXc6OnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0
KFJlbmRlck9iamVjdCogb2JqZWN0KQoreworICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpICYmIG1f
Zml4ZWRQb3NpdGlvbmVkT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIHNldENhbkJsaXRPblNj
cm9sbChmYWxzZSk7CisgICAgbV9maXhlZFBvc2l0aW9uZWRPYmplY3RzLmFkZChvYmplY3QpOwor
fQorCit2b2lkIEZyYW1lVmlldzo6dW5yZWdpc3RlckZpeGVkUG9zaXRpb25lZE9iamVjdChSZW5k
ZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBib29sIHdhc0VtcHR5ID0gbV9maXhlZFBvc2l0aW9u
ZWRPYmplY3RzLmlzRW1wdHkoKTsKKyAgICBtX2ZpeGVkUG9zaXRpb25lZE9iamVjdHMucmVtb3Zl
KG9iamVjdCk7CisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkgJiYgIXdhc0VtcHR5ICYmIG1fZml4
ZWRQb3NpdGlvbmVkT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIHNldENhbkJsaXRPblNjcm9s
bCghdXNlU2xvd1JlcGFpbnRzKCkpOworfQorCit2b2lkIEZyYW1lVmlldzo6c2Nyb2xsQ29udGVu
dHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVj
dFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBjb25zdCBzaXplX3Qg
Zml4ZWRPYmplY3ROdW1iZXJUaHJlc2hvbGQgPSA1OworCisgICAgaWYgKG1fZml4ZWRQb3NpdGlv
bmVkT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9s
bERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgVmVj
dG9yPFJlbmRlck9iamVjdCo+IGZpeGVkT2JqZWN0c0luVmlld3BvcnQ7CisgICAgICAgIGZpeGVk
T2JqZWN0c0luVmlld3BvcnQucmVzZXJ2ZUNhcGFjaXR5KG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0
cy5zaXplKCkpOworCisgICAgICAgIGJvb2wgdXBkYXRlSW52YWxpZGF0ZWRTdWJSZWN0ID0gdHJ1
ZTsKKyAgICAgICAgLy8gR2V0IGEgbGlzdCBvZiBmaXhlZCBvYmplY3RzIHRoYXQgYXJlIG5vdCBp
biB0cmFuc2Zvcm1hdGlvbnMKKyAgICAgICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPjo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbV9maXhlZFBvc2l0aW9uZWRPYmplY3RzLmVuZCgpOworICAgICAgICBI
YXNoU2V0PFJlbmRlck9iamVjdCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZml4ZWRQb3NpdGlv
bmVkT2JqZWN0cy5iZWdpbigpOworICAgICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7Cisg
ICAgICAgICAgICBSZW5kZXJPYmplY3QqIG9iaiA9ICppdDsKKyAgICAgICAgICAgIC8vIG1ha2Ug
c3VyZSB0aGUgcGFyZW50IGxheWVyIGhhcyBub3QgYmVlbiB0cmFuc2Zvcm1lZAorICAgICAgICAg
ICAgaWYgKG9iai0+Y29udGFpbmluZ0Jsb2NrKCkgPT0gb2JqLT52aWV3KCkpIHsKKyAgICAgICAg
ICAgICAgICBmaXhlZE9iamVjdHNJblZpZXdwb3J0LmFwcGVuZChvYmopOworICAgICAgICAgICAg
ICAgIGlmIChmaXhlZE9iamVjdHNJblZpZXdwb3J0LnNpemUoKSA+IGZpeGVkT2JqZWN0TnVtYmVy
VGhyZXNob2xkKSB7CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUludmFsaWRhdGVkU3ViUmVj
dCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBzY3JvbGwgdGhlIGNvbnRl
bnQKKyAgICAgICAgaWYgKHVwZGF0ZUludmFsaWRhdGVkU3ViUmVjdCkgeworICAgICAgICAgICAg
Ly8gMSkgc2Nyb2xsCisgICAgICAgICAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0
YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7CisKKyAgICAgICAgICAgIC8vIDIpIHVwZGF0ZSB0
aGUgYXJlYSBvZiBmaXhlZCBvYmpldHMgdGhhdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAorICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaXhlZE9iamVjdHNJblZpZXdwb3J0LnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAgICAg
ICAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gZml4ZWRPYmplY3RzSW5WaWV3cG9ydFtpXS0+
cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpOworICAgICAgICAgICAgICAgIHVwZGF0ZVJl
Y3QubW92ZSgtc2Nyb2xsWCgpLCAtc2Nyb2xsWSgpKTsKKyAgICAgICAgICAgICAgICBJbnRSZWN0
IHNjcm9sbGVkUmVjdCA9IHVwZGF0ZVJlY3Q7CisgICAgICAgICAgICAgICAgc2Nyb2xsZWRSZWN0
Lm1vdmUoc2Nyb2xsRGVsdGEpOworICAgICAgICAgICAgICAgIHVwZGF0ZVJlY3QudW5pdGUoc2Ny
b2xsZWRSZWN0KTsKKyAgICAgICAgICAgICAgICB1cGRhdGVSZWN0LmludGVyc2VjdChyZWN0VG9T
Y3JvbGwpOworICAgICAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+cmVwYWludCh1cGRhdGVSZWN0
LCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAvLyB0aGUgbnVtYmVyIG9mIGZpeGVkIG9iamVjdHMgZXhjZWVkIHRoZSB0aHJl
c2hvbGQsIHNvIHdlIHJlcGFpbnQgZXZlcnl0aGluZy4KKyAgICAgICAgICAgIEludFJlY3QgdXBk
YXRlUmVjdCA9IGNsaXBSZWN0OworICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVj
dFRvU2Nyb2xsKTsKKyAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+cmVwYWludCh1cGRhdGVSZWN0
LCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgRnJhbWVW
aWV3OjpzZXRJc092ZXJsYXBwZWQoYm9vbCBpc092ZXJsYXBwZWQpCiB7CiAgICAgaWYgKGlzT3Zl
cmxhcHBlZCA9PSBtX2lzT3ZlcmxhcHBlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaCBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiMjdmZmQ4Li5jM2RlMDVi
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCkBAIC0xNDUsNiArMTQ1LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNs
b3dSZXBhaW50T2JqZWN0KCk7CiAgICAgdm9pZCByZW1vdmVTbG93UmVwYWludE9iamVjdCgpOwog
CisgICAgLy8gTWV0aG9kcyB0byBtYW5hZ2UgdGhlIG9iamVjdHMgdGhhdCBhcmUgZml4ZWQKKyAg
ICAvLyBpbiB0aGUgdmlldyB3aGVuIHNjcm9sbGluZworICAgIHZvaWQgcmVnaXN0ZXJGaXhlZFBv
c2l0aW9uZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpOworICAgIHZvaWQgdW5yZWdpc3Rl
ckZpeGVkUG9zaXRpb25lZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCk7CisKICAgICB2b2lk
IGJlZ2luRGVmZXJyZWRSZXBhaW50cygpOwogICAgIHZvaWQgZW5kRGVmZXJyZWRSZXBhaW50cygp
OwogICAgIHZvaWQgY2hlY2tTdG9wRGVsYXlpbmdEZWZlcnJlZFJlcGFpbnRzKCk7CkBAIC0xOTks
NiArMjA0LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNGcmFtZVZpZXdTY3JvbGxDb3JuZXIoUmVu
ZGVyU2Nyb2xsYmFyUGFydCogc2Nyb2xsQ29ybmVyKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbENv
cm5lciA9PSBzY3JvbGxDb3JuZXI7IH0KICAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXIo
KTsKIAorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxDb250ZW50c0Zhc3RQYXRo
KGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGws
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKwogcHJpdmF0ZToKICAgICBGcmFtZVZpZXcoRnJh
bWUqKTsKIApAQCAtMjY4LDYgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzT3Zlcmxh
cHBlZDsKICAgICBib29sIG1fY29udGVudElzT3BhcXVlOwogICAgIHVuc2lnbmVkIG1fc2xvd1Jl
cGFpbnRPYmplY3RDb3VudDsKKyAgICBIYXNoU2V0PFJlbmRlck9iamVjdCo+IG1fZml4ZWRQb3Np
dGlvbmVkT2JqZWN0czsKIAogICAgIGludCBtX2JvcmRlclgsIG1fYm9yZGVyWTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5jcHAKaW5kZXggZTQyOTFjYy4uMDE1NjY4MCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwCkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50
cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKIAogICAgIGlmIChjYW5CbGl0T25TY3JvbGwo
KSkgeyAvLyBUaGUgbWFpbiBmcmFtZSBjYW4ganVzdCBibGl0IHRoZSBXZWJWaWV3IHdpbmRvdwog
ICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGJsaXQgc3ViZnJhbWVzIHdpdGhvdXQgYmxp
dHRpbmcgb3ZlcmxhcHBpbmcgY29udGVudAotICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKC1z
Y3JvbGxEZWx0YSwgc2Nyb2xsVmlld1JlY3QsIGNsaXBSZWN0KTsKKyAgICAgICBzY3JvbGxDb250
ZW50c0Zhc3RQYXRoKC1zY3JvbGxEZWx0YSwgc2Nyb2xsVmlld1JlY3QsIGNsaXBSZWN0KTsKICAg
ICB9IGVsc2UgeyAKICAgICAgICAvLyBXZSBuZWVkIHRvIGdvIGFoZWFkIGFuZCByZXBhaW50IHRo
ZSBlbnRpcmUgYmFja2luZyBzdG9yZS4gIERvIGl0IG5vdyBiZWZvcmUgbW92aW5nIHRoZQogICAg
ICAgIC8vIHdpbmRvd2VkIHBsdWdpbnMuCkBAIC01MjgsNiArNTI4LDExIEBAIHZvaWQgU2Nyb2xs
Vmlldzo6c2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAgICAgaG9z
dFdpbmRvdygpLT5wYWludCgpOwogfQogCit2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRz
RmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RU
b1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCit7CisgICAgaG9zdFdpbmRvdygpLT5z
Y3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworfQorCiBJbnRQb2lu
dCBTY3JvbGxWaWV3Ojp3aW5kb3dUb0NvbnRlbnRzKGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2lu
dCkgY29uc3QKIHsKICAgICBJbnRQb2ludCB2aWV3UG9pbnQgPSBjb252ZXJ0RnJvbUNvbnRhaW5p
bmdXaW5kb3cod2luZG93UG9pbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmggYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCBhNzE3M2E3Li42
Y2EyNTgxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtMjQ5LDYgKzI0OSw5IEBAIHByb3RlY3Rl
ZDoKICAgICBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlU2Nyb2xsQ29ybmVyKCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29y
bmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOworCisgICAg
Ly8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5IGJsaXR0aW5nIHRoZSBwaXhlbHMKKyAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwg
Y29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAg
ICAgCiBwcml2YXRlOgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faG9yaXpvbnRhbFNjcm9sbGJh
cjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDVkZGI4ODIuLmM2YzAxNWEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTY0NywxMCArMTY0Nyw4IEBAIHZvaWQg
UmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0
IFJlbmRlclN0eWxlKiBuZXdTCiAgICAgfSBlbHNlCiAgICAgICAgIHNfYWZmZWN0c1BhcmVudEJs
b2NrID0gZmFsc2U7CiAKLSAgICBpZiAodmlldygpLT5mcmFtZVZpZXcoKSkgewotICAgICAgICAv
LyBGSVhNRTogQSBiZXR0ZXIgc29sdXRpb24gd291bGQgYmUgdG8gb25seSBpbnZhbGlkYXRlIHRo
ZSBmaXhlZCByZWdpb25zIHdoZW4gc2Nyb2xsaW5nLiAgSXQncyBvdmVya2lsbCB0bwotICAgICAg
ICAvLyBwcmV2ZW50IHRoZSBlbnRpcmUgdmlldyBmcm9tIGJsaXR0aW5nIG9uIGEgc2Nyb2xsLgot
CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB2aWV3KCktPmZyYW1lVmlldygpOworICAgIGlm
IChmcmFtZVZpZXcpIHsKICAgICAgICAgYm9vbCBzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJ
bWFnZSA9IGZhbHNlOwogI2lmIEVOQUJMRShGQVNUX01PQklMRV9TQ1JPTExJTkcpCiAgICAgICAg
IC8vIE9uIGxvdy1wb3dlcmVkL21vYmlsZSBkZXZpY2VzLCBwcmV2ZW50aW5nIGJsaXR0aW5nIG9u
IGEgc2Nyb2xsIGNhbiBjYXVzZSBub3RpY2VhYmxlIGRlbGF5cwpAQCAtMTY2MCwxNSArMTY1OCwz
MiBAQCB2b2lkIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBk
aWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3UwogICAgICAgICBzaG91bGRCbGl0T25GaXhlZEJh
Y2tncm91bmRJbWFnZSA9IHRydWU7CiAjZW5kaWYKIAotICAgICAgICBib29sIG5ld1N0eWxlU2xv
d1Njcm9sbCA9IG5ld1N0eWxlICYmIChuZXdTdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0
aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgh
c2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbmV3U3R5bGUtPmhhc0ZpeGVkQmFj
a2dyb3VuZEltYWdlKCkpKTsKLSAgICAgICAgYm9vbCBvbGRTdHlsZVNsb3dTY3JvbGwgPSBtX3N0
eWxlICYmIChtX3N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCFzaG91bGRCbGl0T25GaXhl
ZEJhY2tncm91bmRJbWFnZSAmJiBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpKSk7
CisgICAgICAgIGJvb2wgbmV3U3R5bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgIXNob3VsZEJs
aXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG5ld1N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJ
bWFnZSgpOworICAgICAgICBib29sIG9sZFN0eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYgIXNo
b3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dy
b3VuZEltYWdlKCk7CisKICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9sbCAhPSBuZXdTdHls
ZVNsb3dTY3JvbGwpIHsKICAgICAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwpCi0gICAg
ICAgICAgICAgICAgdmlldygpLT5mcmFtZVZpZXcoKS0+cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3Qo
KTsKKyAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KCk7
CiAgICAgICAgICAgICBpZiAobmV3U3R5bGVTbG93U2Nyb2xsKQotICAgICAgICAgICAgICAgIHZp
ZXcoKS0+ZnJhbWVWaWV3KCktPmFkZFNsb3dSZXBhaW50T2JqZWN0KCk7CisgICAgICAgICAgICAg
ICAgZnJhbWVWaWV3LT5hZGRTbG93UmVwYWludE9iamVjdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgYm9vbCBuZXdTdHlsZUhhc1RyYW5zZm9ybSA9IG5ld1N0eWxlICYmIChuZXdTdHlsZS0+aGFz
VHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpOworICAgICAgICBpZiAoIW5ld1N0eWxlSGFzVHJh
bnNmb3JtKSB7CisgICAgICAgICAgICBib29sIG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlvbiA9IG5l
d1N0eWxlICYmIChuZXdTdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGJvb2wgb2xkU3R5bGVIYXNGaXhlZFBvc2l0aW9uID0gbV9zdHlsZSAmJiAobV9zdHls
ZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKTsKKworICAgICAgICAgICAgaWYgKG9sZFN0
eWxlSGFzRml4ZWRQb3NpdGlvbiAhPSBuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24pIHsKKyAgICAg
ICAgICAgICAgICBpZiAobmV3U3R5bGVIYXNGaXhlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAg
ICAgICBmcmFtZVZpZXctPnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KHRoaXMpOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT51bnJlZ2lz
dGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KHRoaXMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAvLyBpZiBwcmV2aW91c2x5IGhhZCBhIGZpeCBwb3NpdGlvbiwgYnV0IGhh
ZCBhIHRyYW5zZm9ybSwgd2hpY2ggaGFzIGJlZW4gcmVtb3ZlZAorICAgICAgICAgICAgICAgIGJv
b2wgb2xkU3R5bGVIYXNUcmFuc2Zvcm0gPSBtX3N0eWxlICYmIChtX3N0eWxlLT5oYXNUcmFuc2Zv
cm1SZWxhdGVkUHJvcGVydHkoKSk7CisgICAgICAgICAgICAgICAgaWYgKG9sZFN0eWxlSGFzVHJh
bnNmb3JtICYmIG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICAgICAg
ZnJhbWVWaWV3LT5yZWdpc3RlckZpeGVkUG9zaXRpb25lZE9iamVjdCh0aGlzKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE5MzEsNiArMTk0NiwxMyBAQCBib29sIFJl
bmRlck9iamVjdDo6aXNTZWxlY3Rpb25Cb3JkZXIoKSBjb25zdAogCiB2b2lkIFJlbmRlck9iamVj
dDo6ZGVzdHJveSgpCiB7CisgICAgLy8gdW5yZWdpc3RlciBmcm9tIHRoZSB2aWV3IGlmIHRoZSBv
YmplY3QgaGFkIGEgZml4ZWQgcG9zaXRpb24KKyAgICBpZiAobV9zdHlsZSAmJiBtX3N0eWxlLT5w
b3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pIHsKKyAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZp
ZXcgPSBkb2N1bWVudCgpLT52aWV3KCk7CisgICAgICAgIGlmIChmcmFtZVZpZXcpCisgICAgICAg
ICAgICBmcmFtZVZpZXctPnVucmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3QodGhpcyk7Cisg
ICAgfQorCiAgICAgLy8gRGVzdHJveSBhbnkgbGVmdG92ZXIgYW5vbnltb3VzIGNoaWxkcmVuLgog
ICAgIFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4gPSB2aXJ0dWFsQ2hpbGRyZW4oKTsK
ICAgICBpZiAoY2hpbGRyZW4pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47283</attachid>
            <date>2010-01-23 15:43:21 -0800</date>
            <delta_ts>2010-01-24 11:27:10 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smart_update_with_fixed_nodes.patch</filename>
            <type>text/plain</type>
            <size>11707</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDYwMzRlZi4uNDIyMWI4MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0wMS0yMyAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIFJlbmRlck9iamVjdHMgd2l0aCBmaXhlZCBwb3NpdGlvbiByZWdpc3RlciB0byB0aGUg
dmlldworICAgICAgICB0byBiZSB0YWtlbiBpbnRvIGFjY291bnQgd2hpbGUgc2Nyb2xsaW5nLgor
ICAgICAgICBUaGUgc2Nyb2xsaW5nIGNvZGUgdXBkYXRlIHNwZWNpZmljYWxseSB0aG9zZSBlbGVt
ZW50cyBhZnRlciBibGl0dGluZyB0aGUgcGl4ZWxzLiAKKworICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzSWZOb3RPdmVybGFw
cGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVnaXN0ZXJGaXhlZFBvc2l0aW9u
ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1bnJlZ2lzdGVyRml4ZWRQ
b3NpdGlvbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsQ29u
dGVudHNGYXN0UGF0aCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNj
cm9sbENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbENvbnRl
bnRzRmFzdFBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
ZGVzdHJveSk6CisKIDIwMTAtMDEtMjIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCAyMTY2NmFlLi5iMDYyMjIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNzg0LDEyICs3ODQsMTIg
QEAgU3RyaW5nIEZyYW1lVmlldzo6bWVkaWFUeXBlKCkgY29uc3QKIAogYm9vbCBGcmFtZVZpZXc6
OnVzZVNsb3dSZXBhaW50cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXNlU2xvd1JlcGFpbnRz
IHx8IG1fc2xvd1JlcGFpbnRPYmplY3RDb3VudCA+IDAgfHwgbV9pc092ZXJsYXBwZWQgfHwgIW1f
Y29udGVudElzT3BhcXVlOworICAgIHJldHVybiBtX3VzZVNsb3dSZXBhaW50cyB8fCBtX3Nsb3dS
ZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8IChwbGF0Zm9ybVdpZGdldCgpICYmICFtX2ZpeGVkUG9z
aXRpb25lZE9iamVjdHMuaXNFbXB0eSgpKSB8fCBtX2lzT3ZlcmxhcHBlZCB8fCAhbV9jb250ZW50
SXNPcGFxdWU7CiB9CiAKIGJvb2wgRnJhbWVWaWV3Ojp1c2VTbG93UmVwYWludHNJZk5vdE92ZXJs
YXBwZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX3VzZVNsb3dSZXBhaW50cyB8fCBtX3Nsb3dS
ZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8ICFtX2NvbnRlbnRJc09wYXF1ZTsKKyAgICByZXR1cm4g
bV91c2VTbG93UmVwYWludHMgfHwgbV9zbG93UmVwYWludE9iamVjdENvdW50ID4gMCB8fCAocGxh
dGZvcm1XaWRnZXQoKSAmJiAhbV9maXhlZFBvc2l0aW9uZWRPYmplY3RzLmlzRW1wdHkoKSkgfHwg
IW1fY29udGVudElzT3BhcXVlOwogfQogCiB2b2lkIEZyYW1lVmlldzo6c2V0VXNlU2xvd1JlcGFp
bnRzKCkKQEAgLTgxMyw2ICs4MTMsNzIgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVNsb3dSZXBh
aW50T2JqZWN0KCkKICAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCF1c2VTbG93UmVwYWludHMo
KSk7CiB9CiAKKwordm9pZCBGcmFtZVZpZXc6OnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0
KFJlbmRlck9iamVjdCogb2JqZWN0KQoreworICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpICYmIG1f
Zml4ZWRQb3NpdGlvbmVkT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIHNldENhbkJsaXRPblNj
cm9sbChmYWxzZSk7CisgICAgbV9maXhlZFBvc2l0aW9uZWRPYmplY3RzLmFkZChvYmplY3QpOwor
fQorCit2b2lkIEZyYW1lVmlldzo6dW5yZWdpc3RlckZpeGVkUG9zaXRpb25lZE9iamVjdChSZW5k
ZXJPYmplY3QqIG9iamVjdCkKK3sKKyAgICBib29sIHdhc0VtcHR5ID0gbV9maXhlZFBvc2l0aW9u
ZWRPYmplY3RzLmlzRW1wdHkoKTsKKyAgICBtX2ZpeGVkUG9zaXRpb25lZE9iamVjdHMucmVtb3Zl
KG9iamVjdCk7CisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkgJiYgIXdhc0VtcHR5ICYmIG1fZml4
ZWRQb3NpdGlvbmVkT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIHNldENhbkJsaXRPblNjcm9s
bCghdXNlU2xvd1JlcGFpbnRzKCkpOworfQorCit2b2lkIEZyYW1lVmlldzo6c2Nyb2xsQ29udGVu
dHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVj
dFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBjb25zdCBzaXplX3Qg
Zml4ZWRPYmplY3ROdW1iZXJUaHJlc2hvbGQgPSA1OworCisgICAgaWYgKG1fZml4ZWRQb3NpdGlv
bmVkT2JqZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9s
bERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgVmVj
dG9yPFJlbmRlck9iamVjdCosIGZpeGVkT2JqZWN0TnVtYmVyVGhyZXNob2xkPiBmaXhlZE9iamVj
dHNJblZpZXdwb3J0OworCisgICAgICAgIGJvb2wgdXBkYXRlSW52YWxpZGF0ZWRTdWJSZWN0ID0g
dHJ1ZTsKKyAgICAgICAgLy8gR2V0IGEgbGlzdCBvZiBmaXhlZCBvYmplY3RzIHRoYXQgYXJlIG5v
dCBpbiB0cmFuc2Zvcm1hdGlvbnMKKyAgICAgICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPjo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbV9maXhlZFBvc2l0aW9uZWRPYmplY3RzLmVuZCgpOworICAgICAg
ICBIYXNoU2V0PFJlbmRlck9iamVjdCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZml4ZWRQb3Np
dGlvbmVkT2JqZWN0cy5iZWdpbigpOworICAgICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgICAgICBSZW5kZXJPYmplY3QqIG9iaiA9ICppdDsKKyAgICAgICAgICAgIC8vIG1h
a2Ugc3VyZSB0aGUgcGFyZW50IGxheWVyIGhhcyBub3QgYmVlbiB0cmFuc2Zvcm1lZAorICAgICAg
ICAgICAgaWYgKG9iai0+Y29udGFpbmluZ0Jsb2NrKCkgPT0gb2JqLT52aWV3KCkpIHsKKyAgICAg
ICAgICAgICAgICBmaXhlZE9iamVjdHNJblZpZXdwb3J0LmFwcGVuZChvYmopOworICAgICAgICAg
ICAgICAgIGlmIChmaXhlZE9iamVjdHNJblZpZXdwb3J0LnNpemUoKSA+IGZpeGVkT2JqZWN0TnVt
YmVyVGhyZXNob2xkKSB7CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUludmFsaWRhdGVkU3Vi
UmVjdCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBzY3JvbGwgdGhlIGNv
bnRlbnQKKyAgICAgICAgaWYgKHVwZGF0ZUludmFsaWRhdGVkU3ViUmVjdCkgeworICAgICAgICAg
ICAgLy8gMSkgc2Nyb2xsCisgICAgICAgICAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxE
ZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7CisKKyAgICAgICAgICAgIC8vIDIpIHVwZGF0
ZSB0aGUgYXJlYSBvZiBmaXhlZCBvYmpldHMgdGhhdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAorICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaXhlZE9iamVjdHNJblZpZXdwb3J0LnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAg
ICAgICAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gZml4ZWRPYmplY3RzSW5WaWV3cG9ydFtp
XS0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpOworICAgICAgICAgICAgICAgIHVwZGF0
ZVJlY3QubW92ZSgtc2Nyb2xsWCgpLCAtc2Nyb2xsWSgpKTsKKyAgICAgICAgICAgICAgICBJbnRS
ZWN0IHNjcm9sbGVkUmVjdCA9IHVwZGF0ZVJlY3Q7CisgICAgICAgICAgICAgICAgc2Nyb2xsZWRS
ZWN0Lm1vdmUoc2Nyb2xsRGVsdGEpOworICAgICAgICAgICAgICAgIHVwZGF0ZVJlY3QudW5pdGUo
c2Nyb2xsZWRSZWN0KTsKKyAgICAgICAgICAgICAgICB1cGRhdGVSZWN0LmludGVyc2VjdChyZWN0
VG9TY3JvbGwpOworICAgICAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+cmVwYWludCh1cGRhdGVS
ZWN0LCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyB0aGUgbnVtYmVyIG9mIGZpeGVkIG9iamVjdHMgZXhjZWVkIHRoZSB0
aHJlc2hvbGQsIHNvIHdlIHJlcGFpbnQgZXZlcnl0aGluZy4KKyAgICAgICAgICAgIEludFJlY3Qg
dXBkYXRlUmVjdCA9IGNsaXBSZWN0OworICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3Qo
cmVjdFRvU2Nyb2xsKTsKKyAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+cmVwYWludCh1cGRhdGVS
ZWN0LCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgRnJh
bWVWaWV3OjpzZXRJc092ZXJsYXBwZWQoYm9vbCBpc092ZXJsYXBwZWQpCiB7CiAgICAgaWYgKGlz
T3ZlcmxhcHBlZCA9PSBtX2lzT3ZlcmxhcHBlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaCBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiMjdmZmQ4Li5jM2Rl
MDViIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oCkBAIC0xNDUsNiArMTQ1LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFk
ZFNsb3dSZXBhaW50T2JqZWN0KCk7CiAgICAgdm9pZCByZW1vdmVTbG93UmVwYWludE9iamVjdCgp
OwogCisgICAgLy8gTWV0aG9kcyB0byBtYW5hZ2UgdGhlIG9iamVjdHMgdGhhdCBhcmUgZml4ZWQK
KyAgICAvLyBpbiB0aGUgdmlldyB3aGVuIHNjcm9sbGluZworICAgIHZvaWQgcmVnaXN0ZXJGaXhl
ZFBvc2l0aW9uZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpOworICAgIHZvaWQgdW5yZWdp
c3RlckZpeGVkUG9zaXRpb25lZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCk7CisKICAgICB2
b2lkIGJlZ2luRGVmZXJyZWRSZXBhaW50cygpOwogICAgIHZvaWQgZW5kRGVmZXJyZWRSZXBhaW50
cygpOwogICAgIHZvaWQgY2hlY2tTdG9wRGVsYXlpbmdEZWZlcnJlZFJlcGFpbnRzKCk7CkBAIC0x
OTksNiArMjA0LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNGcmFtZVZpZXdTY3JvbGxDb3JuZXIo
UmVuZGVyU2Nyb2xsYmFyUGFydCogc2Nyb2xsQ29ybmVyKSBjb25zdCB7IHJldHVybiBtX3Njcm9s
bENvcm5lciA9PSBzY3JvbGxDb3JuZXI7IH0KICAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3Ju
ZXIoKTsKIAorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxDb250ZW50c0Zhc3RQ
YXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3Jv
bGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKwogcHJpdmF0ZToKICAgICBGcmFtZVZpZXco
RnJhbWUqKTsKIApAQCAtMjY4LDYgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzT3Zl
cmxhcHBlZDsKICAgICBib29sIG1fY29udGVudElzT3BhcXVlOwogICAgIHVuc2lnbmVkIG1fc2xv
d1JlcGFpbnRPYmplY3RDb3VudDsKKyAgICBIYXNoU2V0PFJlbmRlck9iamVjdCo+IG1fZml4ZWRQ
b3NpdGlvbmVkT2JqZWN0czsKIAogICAgIGludCBtX2JvcmRlclgsIG1fYm9yZGVyWTsKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggZTQyOTFjYy4uMDE1NjY4MCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250
ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKIAogICAgIGlmIChjYW5CbGl0T25TY3Jv
bGwoKSkgeyAvLyBUaGUgbWFpbiBmcmFtZSBjYW4ganVzdCBibGl0IHRoZSBXZWJWaWV3IHdpbmRv
dwogICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGJsaXQgc3ViZnJhbWVzIHdpdGhvdXQg
YmxpdHRpbmcgb3ZlcmxhcHBpbmcgY29udGVudAotICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xs
KC1zY3JvbGxEZWx0YSwgc2Nyb2xsVmlld1JlY3QsIGNsaXBSZWN0KTsKKyAgICAgICBzY3JvbGxD
b250ZW50c0Zhc3RQYXRoKC1zY3JvbGxEZWx0YSwgc2Nyb2xsVmlld1JlY3QsIGNsaXBSZWN0KTsK
ICAgICB9IGVsc2UgeyAKICAgICAgICAvLyBXZSBuZWVkIHRvIGdvIGFoZWFkIGFuZCByZXBhaW50
IHRoZSBlbnRpcmUgYmFja2luZyBzdG9yZS4gIERvIGl0IG5vdyBiZWZvcmUgbW92aW5nIHRoZQog
ICAgICAgIC8vIHdpbmRvd2VkIHBsdWdpbnMuCkBAIC01MjgsNiArNTI4LDExIEBAIHZvaWQgU2Ny
b2xsVmlldzo6c2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAgICAg
aG9zdFdpbmRvdygpLT5wYWludCgpOwogfQogCit2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRl
bnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJl
Y3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCit7CisgICAgaG9zdFdpbmRvdygp
LT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworfQorCiBJbnRQ
b2ludCBTY3JvbGxWaWV3Ojp3aW5kb3dUb0NvbnRlbnRzKGNvbnN0IEludFBvaW50JiB3aW5kb3dQ
b2ludCkgY29uc3QKIHsKICAgICBJbnRQb2ludCB2aWV3UG9pbnQgPSBjb252ZXJ0RnJvbUNvbnRh
aW5pbmdXaW5kb3cod2luZG93UG9pbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmggYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCBhNzE3M2E3
Li42Y2EyNTgxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtMjQ5LDYgKzI0OSw5IEBAIHByb3Rl
Y3RlZDoKICAgICBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlU2Nyb2xsQ29ybmVyKCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xs
Q29ybmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOworCisg
ICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5IGJsaXR0aW5nIHRoZSBwaXhlbHMKKyAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7
CiAgICAgCiBwcml2YXRlOgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faG9yaXpvbnRhbFNjcm9s
bGJhcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDVkZGI4ODIuLmM2YzAxNWEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTY0NywxMCArMTY0Nyw4IEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNv
bnN0IFJlbmRlclN0eWxlKiBuZXdTCiAgICAgfSBlbHNlCiAgICAgICAgIHNfYWZmZWN0c1BhcmVu
dEJsb2NrID0gZmFsc2U7CiAKLSAgICBpZiAodmlldygpLT5mcmFtZVZpZXcoKSkgewotICAgICAg
ICAvLyBGSVhNRTogQSBiZXR0ZXIgc29sdXRpb24gd291bGQgYmUgdG8gb25seSBpbnZhbGlkYXRl
IHRoZSBmaXhlZCByZWdpb25zIHdoZW4gc2Nyb2xsaW5nLiAgSXQncyBvdmVya2lsbCB0bwotICAg
ICAgICAvLyBwcmV2ZW50IHRoZSBlbnRpcmUgdmlldyBmcm9tIGJsaXR0aW5nIG9uIGEgc2Nyb2xs
LgotCisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB2aWV3KCktPmZyYW1lVmlldygpOworICAg
IGlmIChmcmFtZVZpZXcpIHsKICAgICAgICAgYm9vbCBzaG91bGRCbGl0T25GaXhlZEJhY2tncm91
bmRJbWFnZSA9IGZhbHNlOwogI2lmIEVOQUJMRShGQVNUX01PQklMRV9TQ1JPTExJTkcpCiAgICAg
ICAgIC8vIE9uIGxvdy1wb3dlcmVkL21vYmlsZSBkZXZpY2VzLCBwcmV2ZW50aW5nIGJsaXR0aW5n
IG9uIGEgc2Nyb2xsIGNhbiBjYXVzZSBub3RpY2VhYmxlIGRlbGF5cwpAQCAtMTY2MCwxNSArMTY1
OCwzMiBAQCB2b2lkIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3UwogICAgICAgICBzaG91bGRCbGl0T25GaXhl
ZEJhY2tncm91bmRJbWFnZSA9IHRydWU7CiAjZW5kaWYKIAotICAgICAgICBib29sIG5ld1N0eWxl
U2xvd1Njcm9sbCA9IG5ld1N0eWxlICYmIChuZXdTdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBv
c2l0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8
ICghc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbmV3U3R5bGUtPmhhc0ZpeGVk
QmFja2dyb3VuZEltYWdlKCkpKTsKLSAgICAgICAgYm9vbCBvbGRTdHlsZVNsb3dTY3JvbGwgPSBt
X3N0eWxlICYmIChtX3N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCFzaG91bGRCbGl0T25G
aXhlZEJhY2tncm91bmRJbWFnZSAmJiBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgp
KSk7CisgICAgICAgIGJvb2wgbmV3U3R5bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgIXNob3Vs
ZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG5ld1N0eWxlLT5oYXNGaXhlZEJhY2tncm91
bmRJbWFnZSgpOworICAgICAgICBib29sIG9sZFN0eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYg
IXNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG1fc3R5bGUtPmhhc0ZpeGVkQmFj
a2dyb3VuZEltYWdlKCk7CisKICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9sbCAhPSBuZXdT
dHlsZVNsb3dTY3JvbGwpIHsKICAgICAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwpCi0g
ICAgICAgICAgICAgICAgdmlldygpLT5mcmFtZVZpZXcoKS0+cmVtb3ZlU2xvd1JlcGFpbnRPYmpl
Y3QoKTsKKyAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0
KCk7CiAgICAgICAgICAgICBpZiAobmV3U3R5bGVTbG93U2Nyb2xsKQotICAgICAgICAgICAgICAg
IHZpZXcoKS0+ZnJhbWVWaWV3KCktPmFkZFNsb3dSZXBhaW50T2JqZWN0KCk7CisgICAgICAgICAg
ICAgICAgZnJhbWVWaWV3LT5hZGRTbG93UmVwYWludE9iamVjdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgYm9vbCBuZXdTdHlsZUhhc1RyYW5zZm9ybSA9IG5ld1N0eWxlICYmIChuZXdTdHlsZS0+
aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpOworICAgICAgICBpZiAoIW5ld1N0eWxlSGFz
VHJhbnNmb3JtKSB7CisgICAgICAgICAgICBib29sIG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlvbiA9
IG5ld1N0eWxlICYmIChuZXdTdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGJvb2wgb2xkU3R5bGVIYXNGaXhlZFBvc2l0aW9uID0gbV9zdHlsZSAmJiAobV9z
dHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKTsKKworICAgICAgICAgICAgaWYgKG9s
ZFN0eWxlSGFzRml4ZWRQb3NpdGlvbiAhPSBuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24pIHsKKyAg
ICAgICAgICAgICAgICBpZiAobmV3U3R5bGVIYXNGaXhlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgICAgICBmcmFtZVZpZXctPnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KHRoaXMpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT51bnJl
Z2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KHRoaXMpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAvLyBpZiBwcmV2aW91c2x5IGhhZCBhIGZpeCBwb3NpdGlvbiwgYnV0
IGhhZCBhIHRyYW5zZm9ybSwgd2hpY2ggaGFzIGJlZW4gcmVtb3ZlZAorICAgICAgICAgICAgICAg
IGJvb2wgb2xkU3R5bGVIYXNUcmFuc2Zvcm0gPSBtX3N0eWxlICYmIChtX3N0eWxlLT5oYXNUcmFu
c2Zvcm1SZWxhdGVkUHJvcGVydHkoKSk7CisgICAgICAgICAgICAgICAgaWYgKG9sZFN0eWxlSGFz
VHJhbnNmb3JtICYmIG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICAg
ICAgZnJhbWVWaWV3LT5yZWdpc3RlckZpeGVkUG9zaXRpb25lZE9iamVjdCh0aGlzKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE5MzEsNiArMTk0NiwxMyBAQCBib29s
IFJlbmRlck9iamVjdDo6aXNTZWxlY3Rpb25Cb3JkZXIoKSBjb25zdAogCiB2b2lkIFJlbmRlck9i
amVjdDo6ZGVzdHJveSgpCiB7CisgICAgLy8gdW5yZWdpc3RlciBmcm9tIHRoZSB2aWV3IGlmIHRo
ZSBvYmplY3QgaGFkIGEgZml4ZWQgcG9zaXRpb24KKyAgICBpZiAobV9zdHlsZSAmJiBtX3N0eWxl
LT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pIHsKKyAgICAgICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSBkb2N1bWVudCgpLT52aWV3KCk7CisgICAgICAgIGlmIChmcmFtZVZpZXcpCisgICAg
ICAgICAgICBmcmFtZVZpZXctPnVucmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3QodGhpcyk7
CisgICAgfQorCiAgICAgLy8gRGVzdHJveSBhbnkgbGVmdG92ZXIgYW5vbnltb3VzIGNoaWxkcmVu
LgogICAgIFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4gPSB2aXJ0dWFsQ2hpbGRyZW4o
KTsKICAgICBpZiAoY2hpbGRyZW4pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47297</attachid>
            <date>2010-01-24 11:27:10 -0800</date>
            <delta_ts>2010-01-25 01:10:39 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>11735</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTI2NmRhZS4uODI0MmJiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMS0yNCAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgRG8gbm90IHJlbmRlciB0aGUgZnVsbCBmcmFtZSB3aGVuIHRoZXJlIGlzIHNvbWUgZWxlbWVu
dHMgd2l0aCBmaXhlZCBwb3NpdGlvbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzMxNTAKKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzSWZOb3RPdmVybGFwcGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1bnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVk
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0
UGF0aCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbENvbnRl
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBh
dGgpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c3R5
bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZGVzdHJveSk6
CisKIDIwMTAtMDEtMjAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmlu
ZGV4IDg2ZTEzYTcuLjNiZDIzMmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC03ODQsMTIgKzc4NCwxMiBA
QCBTdHJpbmcgRnJhbWVWaWV3OjptZWRpYVR5cGUoKSBjb25zdAogCiBib29sIEZyYW1lVmlldzo6
dXNlU2xvd1JlcGFpbnRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV91c2VTbG93UmVwYWludHMg
fHwgbV9zbG93UmVwYWludE9iamVjdENvdW50ID4gMCB8fCBtX2lzT3ZlcmxhcHBlZCB8fCAhbV9j
b250ZW50SXNPcGFxdWU7CisgICAgcmV0dXJuIG1fdXNlU2xvd1JlcGFpbnRzIHx8IG1fc2xvd1Jl
cGFpbnRPYmplY3RDb3VudCA+IDAgfHwgKHBsYXRmb3JtV2lkZ2V0KCkgJiYgIW1fZml4ZWRQb3Np
dGlvbmVkT2JqZWN0cy5pc0VtcHR5KCkpIHx8IG1faXNPdmVybGFwcGVkIHx8ICFtX2NvbnRlbnRJ
c09wYXF1ZTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OnVzZVNsb3dSZXBhaW50c0lmTm90T3Zlcmxh
cHBlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXNlU2xvd1JlcGFpbnRzIHx8IG1fc2xvd1Jl
cGFpbnRPYmplY3RDb3VudCA+IDAgfHwgIW1fY29udGVudElzT3BhcXVlOworICAgIHJldHVybiBt
X3VzZVNsb3dSZXBhaW50cyB8fCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8IChwbGF0
Zm9ybVdpZGdldCgpICYmICFtX2ZpeGVkUG9zaXRpb25lZE9iamVjdHMuaXNFbXB0eSgpKSB8fCAh
bV9jb250ZW50SXNPcGFxdWU7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpzZXRVc2VTbG93UmVwYWlu
dHMoKQpAQCAtODEzLDYgKzgxMyw3NCBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFp
bnRPYmplY3QoKQogICAgICAgICBzZXRDYW5CbGl0T25TY3JvbGwoIXVzZVNsb3dSZXBhaW50cygp
KTsKIH0KIAorCit2b2lkIEZyYW1lVmlldzo6cmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3Qo
UmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkgJiYgbV9m
aXhlZFBvc2l0aW9uZWRPYmplY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0Q2FuQmxpdE9uU2Ny
b2xsKGZhbHNlKTsKKyAgICBtX2ZpeGVkUG9zaXRpb25lZE9iamVjdHMuYWRkKG9iamVjdCk7Cit9
CisKK3ZvaWQgRnJhbWVWaWV3Ojp1bnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KFJlbmRl
ck9iamVjdCogb2JqZWN0KQoreworICAgIGJvb2wgd2FzRW1wdHkgPSBtX2ZpeGVkUG9zaXRpb25l
ZE9iamVjdHMuaXNFbXB0eSgpOworICAgIG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0cy5yZW1vdmUo
b2JqZWN0KTsKKyAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSAmJiAhd2FzRW1wdHkgJiYgbV9maXhl
ZFBvc2l0aW9uZWRPYmplY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xs
KCF1c2VTbG93UmVwYWludHMoKSk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50
c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0
VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIGNvbnN0IHNpemVfdCBm
aXhlZE9iamVjdE51bWJlclRocmVzaG9sZCA9IDU7CisKKyAgICBpZiAobV9maXhlZFBvc2l0aW9u
ZWRPYmplY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xs
RGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworICAgIGVsc2UgeworICAgICAgICBWZWN0
b3I8UmVuZGVyT2JqZWN0KiwgZml4ZWRPYmplY3ROdW1iZXJUaHJlc2hvbGQ+IGZpeGVkT2JqZWN0
c0luVmlld3BvcnQ7CisKKyAgICAgICAgYm9vbCB1cGRhdGVJbnZhbGlkYXRlZFN1YlJlY3QgPSB0
cnVlOworICAgICAgICAvLyBHZXQgYSBsaXN0IG9mIGZpeGVkIG9iamVjdHMgdGhhdCBhcmUgbm90
IGluIHRyYW5zZm9ybWF0aW9ucworICAgICAgICBIYXNoU2V0PFJlbmRlck9iamVjdCo+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBtX2ZpeGVkUG9zaXRpb25lZE9iamVjdHMuZW5kKCk7CisgICAgICAg
IEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9maXhlZFBvc2l0
aW9uZWRPYmplY3RzLmJlZ2luKCk7CisgICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgICAgIFJlbmRlck9iamVjdCogb2JqID0gKml0OworICAgICAgICAgICAgLy8gbWFr
ZSBzdXJlIHRoZSBwYXJlbnQgbGF5ZXIgaGFzIG5vdCBiZWVuIHRyYW5zZm9ybWVkCisgICAgICAg
ICAgICBpZiAob2JqLT5jb250YWluaW5nQmxvY2soKSA9PSBvYmotPnZpZXcoKSkgeworICAgICAg
ICAgICAgICAgIGlmIChmaXhlZE9iamVjdHNJblZpZXdwb3J0LnNpemUoKSA+PSBmaXhlZE9iamVj
dE51bWJlclRocmVzaG9sZCkgeworICAgICAgICAgICAgICAgICAgICB1cGRhdGVJbnZhbGlkYXRl
ZFN1YlJlY3QgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZml4ZWRPYmplY3RzSW5WaWV3cG9y
dC5hcHBlbmQob2JqKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICAvLyBzY3JvbGwgdGhlIGNvbnRlbnQKKyAgICAgICAgaWYgKHVwZGF0ZUlu
dmFsaWRhdGVkU3ViUmVjdCkgeworICAgICAgICAgICAgLy8gMSkgc2Nyb2xsCisgICAgICAgICAg
ICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVj
dCk7CisKKyAgICAgICAgICAgIC8vIDIpIHVwZGF0ZSB0aGUgYXJlYSBvZiBmaXhlZCBvYmpldHMg
dGhhdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAorICAgICAgICAgICAgc2l6ZV90IGZpeE9iamVjdHND
b3VudCA9IGZpeGVkT2JqZWN0c0luVmlld3BvcnQuc2l6ZSgpOworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmaXhPYmplY3RzQ291bnQ7ICsraSkgeworICAgICAgICAgICAgICAg
IEludFJlY3QgdG9wTGV2ZWxSZWN0OworICAgICAgICAgICAgICAgIEludFJlY3QgdXBkYXRlUmVj
dCA9IGZpeGVkT2JqZWN0c0luVmlld3BvcnRbaV0tPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxS
ZWN0KTsKKyAgICAgICAgICAgICAgICB1cGRhdGVSZWN0Lm1vdmUoLXNjcm9sbFgoKSwgLXNjcm9s
bFkoKSk7CisgICAgICAgICAgICAgICAgSW50UmVjdCBzY3JvbGxlZFJlY3QgPSB1cGRhdGVSZWN0
OworICAgICAgICAgICAgICAgIHNjcm9sbGVkUmVjdC5tb3ZlKHNjcm9sbERlbHRhKTsKKyAgICAg
ICAgICAgICAgICB1cGRhdGVSZWN0LnVuaXRlKHNjcm9sbGVkUmVjdCk7CisgICAgICAgICAgICAg
ICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVjdFRvU2Nyb2xsKTsKKyAgICAgICAgICAgICAgICBo
b3N0V2luZG93KCktPnJlcGFpbnQodXBkYXRlUmVjdCwgdHJ1ZSwgZmFsc2UsIHRydWUpOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gdGhlIG51bWJlciBv
ZiBmaXhlZCBvYmplY3RzIGV4Y2VlZCB0aGUgdGhyZXNob2xkLCBzbyB3ZSByZXBhaW50IGV2ZXJ5
dGhpbmcuCisgICAgICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSBjbGlwUmVjdDsKKyAgICAg
ICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CisgICAgICAgICAgICBo
b3N0V2luZG93KCktPnJlcGFpbnQodXBkYXRlUmVjdCwgdHJ1ZSwgZmFsc2UsIHRydWUpOworICAg
ICAgICB9CisgICAgfQorfQorCiB2b2lkIEZyYW1lVmlldzo6c2V0SXNPdmVybGFwcGVkKGJvb2wg
aXNPdmVybGFwcGVkKQogewogICAgIGlmIChpc092ZXJsYXBwZWQgPT0gbV9pc092ZXJsYXBwZWQp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKaW5kZXggYjI3ZmZkOC4uYzNkZTA1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMTQ1LDYgKzE0
NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTbG93UmVwYWludE9iamVjdCgpOwogICAgIHZv
aWQgcmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKTsKIAorICAgIC8vIE1ldGhvZHMgdG8gbWFuYWdl
IHRoZSBvYmplY3RzIHRoYXQgYXJlIGZpeGVkCisgICAgLy8gaW4gdGhlIHZpZXcgd2hlbiBzY3Jv
bGxpbmcKKyAgICB2b2lkIHJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KFJlbmRlck9iamVj
dCogb2JqZWN0KTsKKyAgICB2b2lkIHVucmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3QoUmVu
ZGVyT2JqZWN0KiBvYmplY3QpOworCiAgICAgdm9pZCBiZWdpbkRlZmVycmVkUmVwYWludHMoKTsK
ICAgICB2b2lkIGVuZERlZmVycmVkUmVwYWludHMoKTsKICAgICB2b2lkIGNoZWNrU3RvcERlbGF5
aW5nRGVmZXJyZWRSZXBhaW50cygpOwpAQCAtMTk5LDYgKzIwNCw5IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzRnJhbWVWaWV3U2Nyb2xsQ29ybmVyKFJlbmRlclNjcm9sbGJhclBhcnQqIHNjcm9sbENv
cm5lcikgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxDb3JuZXIgPT0gc2Nyb2xsQ29ybmVyOyB9CiAg
ICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyKCk7CiAKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7
CisKIHByaXZhdGU6CiAgICAgRnJhbWVWaWV3KEZyYW1lKik7CiAKQEAgLTI2OCw2ICsyNzYsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc092ZXJsYXBwZWQ7CiAgICAgYm9vbCBtX2NvbnRlbnRJ
c09wYXF1ZTsKICAgICB1bnNpZ25lZCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQ7CisgICAgSGFz
aFNldDxSZW5kZXJPYmplY3QqPiBtX2ZpeGVkUG9zaXRpb25lZE9iamVjdHM7CiAKICAgICBpbnQg
bV9ib3JkZXJYLCBtX2JvcmRlclk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IDBmNjky
MGMuLjYzMDNiNDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNTE1LDcgKzUxNSw3IEBA
IHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEpCiAKICAgICBpZiAoY2FuQmxpdE9uU2Nyb2xsKCkpIHsgLy8gVGhlIG1haW4gZnJhbWUgY2Fu
IGp1c3QgYmxpdCB0aGUgV2ViVmlldyB3aW5kb3cKICAgICAgICAvLyBGSVhNRTogRmluZCBhIHdh
eSB0byBibGl0IHN1YmZyYW1lcyB3aXRob3V0IGJsaXR0aW5nIG92ZXJsYXBwaW5nIGNvbnRlbnQK
LSAgICAgICBob3N0V2luZG93KCktPnNjcm9sbCgtc2Nyb2xsRGVsdGEsIHNjcm9sbFZpZXdSZWN0
LCBjbGlwUmVjdCk7CisgICAgICAgc2Nyb2xsQ29udGVudHNGYXN0UGF0aCgtc2Nyb2xsRGVsdGEs
IHNjcm9sbFZpZXdSZWN0LCBjbGlwUmVjdCk7CiAgICAgfSBlbHNlIHsgCiAgICAgICAgLy8gV2Ug
bmVlZCB0byBnbyBhaGVhZCBhbmQgcmVwYWludCB0aGUgZW50aXJlIGJhY2tpbmcgc3RvcmUuICBE
byBpdCBub3cgYmVmb3JlIG1vdmluZyB0aGUKICAgICAgICAvLyB3aW5kb3dlZCBwbHVnaW5zLgpA
QCAtNTMwLDYgKzUzMCwxMSBAQCB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKGNvbnN0
IEludFNpemUmIHNjcm9sbERlbHRhKQogICAgIGhvc3RXaW5kb3coKS0+cGFpbnQoKTsKIH0KIAor
dm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0KQoreworICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9T
Y3JvbGwsIGNsaXBSZWN0KTsKK30KKwogSW50UG9pbnQgU2Nyb2xsVmlldzo6d2luZG93VG9Db250
ZW50cyhjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpIGNvbnN0CiB7CiAgICAgSW50UG9pbnQg
dmlld1BvaW50ID0gY29udmVydEZyb21Db250YWluaW5nV2luZG93KHdpbmRvd1BvaW50KTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgKaW5kZXggYTcxNzNhNy4uNmNhMjU4MSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmgKQEAgLTI0OSw2ICsyNDksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgSW50UmVjdCBzY3JvbGxDb3Ju
ZXJSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbENvcm5lcigpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKKworICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBieSBi
bGl0dGluZyB0aGUgcGl4ZWxzCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzRmFzdFBh
dGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9s
bCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwogICAgIAogcHJpdmF0ZToKICAgICBSZWZQdHI8
U2Nyb2xsYmFyPiBtX2hvcml6b250YWxTY3JvbGxiYXI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcAppbmRleCA1ZGRiODgyLi5jNmMwMTVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKQEAgLTE2NDcsMTAgKzE2NDcsOCBAQCB2b2lkIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3UwogICAgIH0g
ZWxzZQogICAgICAgICBzX2FmZmVjdHNQYXJlbnRCbG9jayA9IGZhbHNlOwogCi0gICAgaWYgKHZp
ZXcoKS0+ZnJhbWVWaWV3KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IEEgYmV0dGVyIHNvbHV0aW9u
IHdvdWxkIGJlIHRvIG9ubHkgaW52YWxpZGF0ZSB0aGUgZml4ZWQgcmVnaW9ucyB3aGVuIHNjcm9s
bGluZy4gIEl0J3Mgb3ZlcmtpbGwgdG8KLSAgICAgICAgLy8gcHJldmVudCB0aGUgZW50aXJlIHZp
ZXcgZnJvbSBibGl0dGluZyBvbiBhIHNjcm9sbC4KLQorICAgIEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gdmlldygpLT5mcmFtZVZpZXcoKTsKKyAgICBpZiAoZnJhbWVWaWV3KSB7CiAgICAgICAgIGJv
b2wgc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgPSBmYWxzZTsKICNpZiBFTkFCTEUo
RkFTVF9NT0JJTEVfU0NST0xMSU5HKQogICAgICAgICAvLyBPbiBsb3ctcG93ZXJlZC9tb2JpbGUg
ZGV2aWNlcywgcHJldmVudGluZyBibGl0dGluZyBvbiBhIHNjcm9sbCBjYW4gY2F1c2Ugbm90aWNl
YWJsZSBkZWxheXMKQEAgLTE2NjAsMTUgKzE2NTgsMzIgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnN0
eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5l
d1MKICAgICAgICAgc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgPSB0cnVlOwogI2Vu
ZGlmCiAKLSAgICAgICAgYm9vbCBuZXdTdHlsZVNsb3dTY3JvbGwgPSBuZXdTdHlsZSAmJiAobmV3
U3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoIXNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3Vu
ZEltYWdlICYmIG5ld1N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpKSk7Ci0gICAgICAg
IGJvb2wgb2xkU3R5bGVTbG93U2Nyb2xsID0gbV9zdHlsZSAmJiAobV9zdHlsZS0+cG9zaXRpb24o
KSA9PSBGaXhlZFBvc2l0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHx8ICghc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbV9zdHls
ZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSkpOworICAgICAgICBib29sIG5ld1N0eWxlU2xv
d1Njcm9sbCA9IG5ld1N0eWxlICYmICFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAm
JiBuZXdTdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKKyAgICAgICAgYm9vbCBvbGRT
dHlsZVNsb3dTY3JvbGwgPSBtX3N0eWxlICYmICFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJ
bWFnZSAmJiBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpOworCiAgICAgICAgIGlm
IChvbGRTdHlsZVNsb3dTY3JvbGwgIT0gbmV3U3R5bGVTbG93U2Nyb2xsKSB7CiAgICAgICAgICAg
ICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsKQotICAgICAgICAgICAgICAgIHZpZXcoKS0+ZnJhbWVW
aWV3KCktPnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KCk7CisgICAgICAgICAgICAgICAgZnJhbWVW
aWV3LT5yZW1vdmVTbG93UmVwYWludE9iamVjdCgpOwogICAgICAgICAgICAgaWYgKG5ld1N0eWxl
U2xvd1Njcm9sbCkKLSAgICAgICAgICAgICAgICB2aWV3KCktPmZyYW1lVmlldygpLT5hZGRTbG93
UmVwYWludE9iamVjdCgpOworICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+YWRkU2xvd1JlcGFp
bnRPYmplY3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgbmV3U3R5bGVIYXNUcmFuc2Zv
cm0gPSBuZXdTdHlsZSAmJiAobmV3U3R5bGUtPmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgp
KTsKKyAgICAgICAgaWYgKCFuZXdTdHlsZUhhc1RyYW5zZm9ybSkgeworICAgICAgICAgICAgYm9v
bCBuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24gPSBuZXdTdHlsZSAmJiAobmV3U3R5bGUtPnBvc2l0
aW9uKCkgPT0gRml4ZWRQb3NpdGlvbik7CisgICAgICAgICAgICBib29sIG9sZFN0eWxlSGFzRml4
ZWRQb3NpdGlvbiA9IG1fc3R5bGUgJiYgKG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIGlmIChvbGRTdHlsZUhhc0ZpeGVkUG9zaXRpb24gIT0gbmV3
U3R5bGVIYXNGaXhlZFBvc2l0aW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKG5ld1N0eWxlSGFz
Rml4ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5yZWdpc3RlckZp
eGVkUG9zaXRpb25lZE9iamVjdCh0aGlzKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGZyYW1lVmlldy0+dW5yZWdpc3RlckZpeGVkUG9zaXRpb25lZE9iamVjdCh0
aGlzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gaWYgcHJldmlv
dXNseSBoYWQgYSBmaXggcG9zaXRpb24sIGJ1dCBoYWQgYSB0cmFuc2Zvcm0sIHdoaWNoIGhhcyBi
ZWVuIHJlbW92ZWQKKyAgICAgICAgICAgICAgICBib29sIG9sZFN0eWxlSGFzVHJhbnNmb3JtID0g
bV9zdHlsZSAmJiAobV9zdHlsZS0+aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpOworICAg
ICAgICAgICAgICAgIGlmIChvbGRTdHlsZUhhc1RyYW5zZm9ybSAmJiBuZXdTdHlsZUhhc0ZpeGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+cmVnaXN0ZXJGaXhlZFBv
c2l0aW9uZWRPYmplY3QodGhpcyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9
CkBAIC0xOTMxLDYgKzE5NDYsMTMgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OmlzU2VsZWN0aW9uQm9y
ZGVyKCkgY29uc3QKIAogdm9pZCBSZW5kZXJPYmplY3Q6OmRlc3Ryb3koKQogeworICAgIC8vIHVu
cmVnaXN0ZXIgZnJvbSB0aGUgdmlldyBpZiB0aGUgb2JqZWN0IGhhZCBhIGZpeGVkIHBvc2l0aW9u
CisgICAgaWYgKG1fc3R5bGUgJiYgbV9zdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9u
KSB7CisgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZG9jdW1lbnQoKS0+dmlldygpOwor
ICAgICAgICBpZiAoZnJhbWVWaWV3KQorICAgICAgICAgICAgZnJhbWVWaWV3LT51bnJlZ2lzdGVy
Rml4ZWRQb3NpdGlvbmVkT2JqZWN0KHRoaXMpOworICAgIH0KKwogICAgIC8vIERlc3Ryb3kgYW55
IGxlZnRvdmVyIGFub255bW91cyBjaGlsZHJlbi4KICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3Qq
IGNoaWxkcmVuID0gdmlydHVhbENoaWxkcmVuKCk7CiAgICAgaWYgKGNoaWxkcmVuKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47325</attachid>
            <date>2010-01-25 01:10:39 -0800</date>
            <delta_ts>2010-01-28 08:50:23 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>11705</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTI2NmRhZS4uODI0MmJiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMS0yNCAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgRG8gbm90IHJlbmRlciB0aGUgZnVsbCBmcmFtZSB3aGVuIHRoZXJlIGlzIHNvbWUgZWxlbWVu
dHMgd2l0aCBmaXhlZCBwb3NpdGlvbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzMxNTAKKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzSWZOb3RPdmVybGFwcGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1bnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVk
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0
UGF0aCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbENvbnRl
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBh
dGgpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c3R5
bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZGVzdHJveSk6
CisKIDIwMTAtMDEtMjAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmlu
ZGV4IDg2ZTEzYTcuLjJkYmUwM2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC03ODQsMTIgKzc4NCwxMiBA
QCBTdHJpbmcgRnJhbWVWaWV3OjptZWRpYVR5cGUoKSBjb25zdAogCiBib29sIEZyYW1lVmlldzo6
dXNlU2xvd1JlcGFpbnRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV91c2VTbG93UmVwYWludHMg
fHwgbV9zbG93UmVwYWludE9iamVjdENvdW50ID4gMCB8fCBtX2lzT3ZlcmxhcHBlZCB8fCAhbV9j
b250ZW50SXNPcGFxdWU7CisgICAgcmV0dXJuIG1fdXNlU2xvd1JlcGFpbnRzIHx8IG1fc2xvd1Jl
cGFpbnRPYmplY3RDb3VudCA+IDAgfHwgKHBsYXRmb3JtV2lkZ2V0KCkgJiYgIW1fZml4ZWRQb3Np
dGlvbmVkT2JqZWN0cy5pc0VtcHR5KCkpIHx8IG1faXNPdmVybGFwcGVkIHx8ICFtX2NvbnRlbnRJ
c09wYXF1ZTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OnVzZVNsb3dSZXBhaW50c0lmTm90T3Zlcmxh
cHBlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXNlU2xvd1JlcGFpbnRzIHx8IG1fc2xvd1Jl
cGFpbnRPYmplY3RDb3VudCA+IDAgfHwgIW1fY29udGVudElzT3BhcXVlOworICAgIHJldHVybiBt
X3VzZVNsb3dSZXBhaW50cyB8fCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8IChwbGF0
Zm9ybVdpZGdldCgpICYmICFtX2ZpeGVkUG9zaXRpb25lZE9iamVjdHMuaXNFbXB0eSgpKSB8fCAh
bV9jb250ZW50SXNPcGFxdWU7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpzZXRVc2VTbG93UmVwYWlu
dHMoKQpAQCAtODEzLDYgKzgxMyw3MyBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFp
bnRPYmplY3QoKQogICAgICAgICBzZXRDYW5CbGl0T25TY3JvbGwoIXVzZVNsb3dSZXBhaW50cygp
KTsKIH0KIAorCit2b2lkIEZyYW1lVmlldzo6cmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3Qo
UmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkgJiYgbV9m
aXhlZFBvc2l0aW9uZWRPYmplY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0Q2FuQmxpdE9uU2Ny
b2xsKGZhbHNlKTsKKyAgICBtX2ZpeGVkUG9zaXRpb25lZE9iamVjdHMuYWRkKG9iamVjdCk7Cit9
CisKK3ZvaWQgRnJhbWVWaWV3Ojp1bnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KFJlbmRl
ck9iamVjdCogb2JqZWN0KQoreworICAgIGJvb2wgd2FzRW1wdHkgPSBtX2ZpeGVkUG9zaXRpb25l
ZE9iamVjdHMuaXNFbXB0eSgpOworICAgIG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0cy5yZW1vdmUo
b2JqZWN0KTsKKyAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSAmJiAhd2FzRW1wdHkgJiYgbV9maXhl
ZFBvc2l0aW9uZWRPYmplY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xs
KCF1c2VTbG93UmVwYWludHMoKSk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50
c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0
VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIGNvbnN0IHNpemVfdCBm
aXhlZE9iamVjdE51bWJlclRocmVzaG9sZCA9IDU7CisKKyAgICBpZiAobV9maXhlZFBvc2l0aW9u
ZWRPYmplY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xs
RGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworICAgIGVsc2UgeworICAgICAgICBWZWN0
b3I8UmVuZGVyT2JqZWN0KiwgZml4ZWRPYmplY3ROdW1iZXJUaHJlc2hvbGQ+IGZpeGVkT2JqZWN0
c0luVmlld3BvcnQ7CisKKyAgICAgICAgYm9vbCB1cGRhdGVJbnZhbGlkYXRlZFN1YlJlY3QgPSB0
cnVlOworICAgICAgICAvLyBHZXQgYSBsaXN0IG9mIGZpeGVkIG9iamVjdHMgdGhhdCBhcmUgbm90
IGluIHRyYW5zZm9ybWF0aW9ucworICAgICAgICBIYXNoU2V0PFJlbmRlck9iamVjdCo+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBtX2ZpeGVkUG9zaXRpb25lZE9iamVjdHMuZW5kKCk7CisgICAgICAg
IEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9maXhlZFBvc2l0
aW9uZWRPYmplY3RzLmJlZ2luKCk7CisgICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgICAgIFJlbmRlck9iamVjdCogb2JqID0gKml0OworICAgICAgICAgICAgLy8gbWFr
ZSBzdXJlIHRoZSBwYXJlbnQgbGF5ZXIgaGFzIG5vdCBiZWVuIHRyYW5zZm9ybWVkCisgICAgICAg
ICAgICBpZiAob2JqLT5jb250YWluaW5nQmxvY2soKSA9PSBvYmotPnZpZXcoKSkgeworICAgICAg
ICAgICAgICAgIGlmIChmaXhlZE9iamVjdHNJblZpZXdwb3J0LnNpemUoKSA+PSBmaXhlZE9iamVj
dE51bWJlclRocmVzaG9sZCkgeworICAgICAgICAgICAgICAgICAgICB1cGRhdGVJbnZhbGlkYXRl
ZFN1YlJlY3QgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGZpeGVkT2JqZWN0c0luVmlld3BvcnQuYXBwZW5kKG9i
aik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBzY3JvbGwgdGhlIGNv
bnRlbnQKKyAgICAgICAgaWYgKHVwZGF0ZUludmFsaWRhdGVkU3ViUmVjdCkgeworICAgICAgICAg
ICAgLy8gMSkgc2Nyb2xsCisgICAgICAgICAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxE
ZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7CisKKyAgICAgICAgICAgIC8vIDIpIHVwZGF0
ZSB0aGUgYXJlYSBvZiBmaXhlZCBvYmpldHMgdGhhdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAorICAg
ICAgICAgICAgc2l6ZV90IGZpeE9iamVjdHNDb3VudCA9IGZpeGVkT2JqZWN0c0luVmlld3BvcnQu
c2l6ZSgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaXhPYmplY3RzQ291
bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIEludFJlY3QgdG9wTGV2ZWxSZWN0OworICAgICAg
ICAgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IGZpeGVkT2JqZWN0c0luVmlld3BvcnRbaV0t
PnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KTsKKyAgICAgICAgICAgICAgICB1cGRhdGVS
ZWN0Lm1vdmUoLXNjcm9sbFgoKSwgLXNjcm9sbFkoKSk7CisgICAgICAgICAgICAgICAgSW50UmVj
dCBzY3JvbGxlZFJlY3QgPSB1cGRhdGVSZWN0OworICAgICAgICAgICAgICAgIHNjcm9sbGVkUmVj
dC5tb3ZlKHNjcm9sbERlbHRhKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVSZWN0LnVuaXRlKHNj
cm9sbGVkUmVjdCk7CisgICAgICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVjdFRv
U2Nyb2xsKTsKKyAgICAgICAgICAgICAgICBob3N0V2luZG93KCktPnJlcGFpbnQodXBkYXRlUmVj
dCwgdHJ1ZSwgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8gdGhlIG51bWJlciBvZiBmaXhlZCBvYmplY3RzIGV4Y2VlZCB0aGUgdGhy
ZXNob2xkLCBzbyB3ZSByZXBhaW50IGV2ZXJ5dGhpbmcuCisgICAgICAgICAgICBJbnRSZWN0IHVw
ZGF0ZVJlY3QgPSBjbGlwUmVjdDsKKyAgICAgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJl
Y3RUb1Njcm9sbCk7CisgICAgICAgICAgICBob3N0V2luZG93KCktPnJlcGFpbnQodXBkYXRlUmVj
dCwgdHJ1ZSwgZmFsc2UsIHRydWUpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIEZyYW1l
Vmlldzo6c2V0SXNPdmVybGFwcGVkKGJvb2wgaXNPdmVybGFwcGVkKQogewogICAgIGlmIChpc092
ZXJsYXBwZWQgPT0gbV9pc092ZXJsYXBwZWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmggYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggYjI3ZmZkOC4uYzNkZTA1
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaApAQCAtMTQ1LDYgKzE0NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRT
bG93UmVwYWludE9iamVjdCgpOwogICAgIHZvaWQgcmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKTsK
IAorICAgIC8vIE1ldGhvZHMgdG8gbWFuYWdlIHRoZSBvYmplY3RzIHRoYXQgYXJlIGZpeGVkCisg
ICAgLy8gaW4gdGhlIHZpZXcgd2hlbiBzY3JvbGxpbmcKKyAgICB2b2lkIHJlZ2lzdGVyRml4ZWRQ
b3NpdGlvbmVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0KTsKKyAgICB2b2lkIHVucmVnaXN0
ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpOworCiAgICAgdm9p
ZCBiZWdpbkRlZmVycmVkUmVwYWludHMoKTsKICAgICB2b2lkIGVuZERlZmVycmVkUmVwYWludHMo
KTsKICAgICB2b2lkIGNoZWNrU3RvcERlbGF5aW5nRGVmZXJyZWRSZXBhaW50cygpOwpAQCAtMTk5
LDYgKzIwNCw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRnJhbWVWaWV3U2Nyb2xsQ29ybmVyKFJl
bmRlclNjcm9sbGJhclBhcnQqIHNjcm9sbENvcm5lcikgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxD
b3JuZXIgPT0gc2Nyb2xsQ29ybmVyOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVy
KCk7CiAKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQ29udGVudHNGYXN0UGF0
aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xs
LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CisKIHByaXZhdGU6CiAgICAgRnJhbWVWaWV3KEZy
YW1lKik7CiAKQEAgLTI2OCw2ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc092ZXJs
YXBwZWQ7CiAgICAgYm9vbCBtX2NvbnRlbnRJc09wYXF1ZTsKICAgICB1bnNpZ25lZCBtX3Nsb3dS
ZXBhaW50T2JqZWN0Q291bnQ7CisgICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPiBtX2ZpeGVkUG9z
aXRpb25lZE9iamVjdHM7CiAKICAgICBpbnQgbV9ib3JkZXJYLCBtX2JvcmRlclk7CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCmluZGV4IDBmNjkyMGMuLjYzMDNiNDIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVu
dHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAKICAgICBpZiAoY2FuQmxpdE9uU2Nyb2xs
KCkpIHsgLy8gVGhlIG1haW4gZnJhbWUgY2FuIGp1c3QgYmxpdCB0aGUgV2ViVmlldyB3aW5kb3cK
ICAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBibGl0IHN1YmZyYW1lcyB3aXRob3V0IGJs
aXR0aW5nIG92ZXJsYXBwaW5nIGNvbnRlbnQKLSAgICAgICBob3N0V2luZG93KCktPnNjcm9sbCgt
c2Nyb2xsRGVsdGEsIHNjcm9sbFZpZXdSZWN0LCBjbGlwUmVjdCk7CisgICAgICAgc2Nyb2xsQ29u
dGVudHNGYXN0UGF0aCgtc2Nyb2xsRGVsdGEsIHNjcm9sbFZpZXdSZWN0LCBjbGlwUmVjdCk7CiAg
ICAgfSBlbHNlIHsgCiAgICAgICAgLy8gV2UgbmVlZCB0byBnbyBhaGVhZCBhbmQgcmVwYWludCB0
aGUgZW50aXJlIGJhY2tpbmcgc3RvcmUuICBEbyBpdCBub3cgYmVmb3JlIG1vdmluZyB0aGUKICAg
ICAgICAvLyB3aW5kb3dlZCBwbHVnaW5zLgpAQCAtNTMwLDYgKzUzMCwxMSBAQCB2b2lkIFNjcm9s
bFZpZXc6OnNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQogICAgIGhv
c3RXaW5kb3coKS0+cGFpbnQoKTsKIH0KIAordm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50
c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0
VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIGhvc3RXaW5kb3coKS0+
c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKK30KKwogSW50UG9p
bnQgU2Nyb2xsVmlldzo6d2luZG93VG9Db250ZW50cyhjb25zdCBJbnRQb2ludCYgd2luZG93UG9p
bnQpIGNvbnN0CiB7CiAgICAgSW50UG9pbnQgdmlld1BvaW50ID0gY29udmVydEZyb21Db250YWlu
aW5nV2luZG93KHdpbmRvd1BvaW50KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggYTcxNzNhNy4u
NmNhMjU4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTI0OSw2ICsyNDksOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNjcm9sbENvcm5lcigpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENv
cm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKKworICAg
IC8vIFNjcm9sbCB0aGUgY29udGVudCBieSBibGl0dGluZyB0aGUgcGl4ZWxzCisgICAgdmlydHVh
bCB2b2lkIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEs
IGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwog
ICAgIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hvcml6b250YWxTY3JvbGxi
YXI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA1ZGRiODgyLi5jNmMwMTVhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE2NDcsMTAgKzE2NDcsOCBAQCB2b2lk
IFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25z
dCBSZW5kZXJTdHlsZSogbmV3UwogICAgIH0gZWxzZQogICAgICAgICBzX2FmZmVjdHNQYXJlbnRC
bG9jayA9IGZhbHNlOwogCi0gICAgaWYgKHZpZXcoKS0+ZnJhbWVWaWV3KCkpIHsKLSAgICAgICAg
Ly8gRklYTUU6IEEgYmV0dGVyIHNvbHV0aW9uIHdvdWxkIGJlIHRvIG9ubHkgaW52YWxpZGF0ZSB0
aGUgZml4ZWQgcmVnaW9ucyB3aGVuIHNjcm9sbGluZy4gIEl0J3Mgb3ZlcmtpbGwgdG8KLSAgICAg
ICAgLy8gcHJldmVudCB0aGUgZW50aXJlIHZpZXcgZnJvbSBibGl0dGluZyBvbiBhIHNjcm9sbC4K
LQorICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gdmlldygpLT5mcmFtZVZpZXcoKTsKKyAgICBp
ZiAoZnJhbWVWaWV3KSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5k
SW1hZ2UgPSBmYWxzZTsKICNpZiBFTkFCTEUoRkFTVF9NT0JJTEVfU0NST0xMSU5HKQogICAgICAg
ICAvLyBPbiBsb3ctcG93ZXJlZC9tb2JpbGUgZGV2aWNlcywgcHJldmVudGluZyBibGl0dGluZyBv
biBhIHNjcm9sbCBjYW4gY2F1c2Ugbm90aWNlYWJsZSBkZWxheXMKQEAgLTE2NjAsMTUgKzE2NTgs
MzIgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2Ug
ZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1MKICAgICAgICAgc2hvdWxkQmxpdE9uRml4ZWRC
YWNrZ3JvdW5kSW1hZ2UgPSB0cnVlOwogI2VuZGlmCiAKLSAgICAgICAgYm9vbCBuZXdTdHlsZVNs
b3dTY3JvbGwgPSBuZXdTdHlsZSAmJiAobmV3U3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3Np
dGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAo
IXNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG5ld1N0eWxlLT5oYXNGaXhlZEJh
Y2tncm91bmRJbWFnZSgpKSk7Ci0gICAgICAgIGJvb2wgb2xkU3R5bGVTbG93U2Nyb2xsID0gbV9z
dHlsZSAmJiAobV9zdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICghc2hvdWxkQmxpdE9uRml4
ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSkp
OworICAgICAgICBib29sIG5ld1N0eWxlU2xvd1Njcm9sbCA9IG5ld1N0eWxlICYmICFzaG91bGRC
bGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAmJiBuZXdTdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5k
SW1hZ2UoKTsKKyAgICAgICAgYm9vbCBvbGRTdHlsZVNsb3dTY3JvbGwgPSBtX3N0eWxlICYmICFz
aG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAmJiBtX3N0eWxlLT5oYXNGaXhlZEJhY2tn
cm91bmRJbWFnZSgpOworCiAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwgIT0gbmV3U3R5
bGVTbG93U2Nyb2xsKSB7CiAgICAgICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsKQotICAg
ICAgICAgICAgICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0
KCk7CisgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5yZW1vdmVTbG93UmVwYWludE9iamVjdCgp
OwogICAgICAgICAgICAgaWYgKG5ld1N0eWxlU2xvd1Njcm9sbCkKLSAgICAgICAgICAgICAgICB2
aWV3KCktPmZyYW1lVmlldygpLT5hZGRTbG93UmVwYWludE9iamVjdCgpOworICAgICAgICAgICAg
ICAgIGZyYW1lVmlldy0+YWRkU2xvd1JlcGFpbnRPYmplY3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGJvb2wgbmV3U3R5bGVIYXNUcmFuc2Zvcm0gPSBuZXdTdHlsZSAmJiAobmV3U3R5bGUtPmhh
c1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKTsKKyAgICAgICAgaWYgKCFuZXdTdHlsZUhhc1Ry
YW5zZm9ybSkgeworICAgICAgICAgICAgYm9vbCBuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24gPSBu
ZXdTdHlsZSAmJiAobmV3U3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbik7CisgICAg
ICAgICAgICBib29sIG9sZFN0eWxlSGFzRml4ZWRQb3NpdGlvbiA9IG1fc3R5bGUgJiYgKG1fc3R5
bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbik7CisKKyAgICAgICAgICAgIGlmIChvbGRT
dHlsZUhhc0ZpeGVkUG9zaXRpb24gIT0gbmV3U3R5bGVIYXNGaXhlZFBvc2l0aW9uKSB7CisgICAg
ICAgICAgICAgICAgaWYgKG5ld1N0eWxlSGFzRml4ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICAgICAgZnJhbWVWaWV3LT5yZWdpc3RlckZpeGVkUG9zaXRpb25lZE9iamVjdCh0aGlzKTsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+dW5yZWdp
c3RlckZpeGVkUG9zaXRpb25lZE9iamVjdCh0aGlzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgLy8gaWYgcHJldmlvdXNseSBoYWQgYSBmaXggcG9zaXRpb24sIGJ1dCBo
YWQgYSB0cmFuc2Zvcm0sIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQKKyAgICAgICAgICAgICAgICBi
b29sIG9sZFN0eWxlSGFzVHJhbnNmb3JtID0gbV9zdHlsZSAmJiAobV9zdHlsZS0+aGFzVHJhbnNm
b3JtUmVsYXRlZFByb3BlcnR5KCkpOworICAgICAgICAgICAgICAgIGlmIChvbGRTdHlsZUhhc1Ry
YW5zZm9ybSAmJiBuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgICAg
IGZyYW1lVmlldy0+cmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3QodGhpcyk7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xOTMxLDYgKzE5NDYsMTMgQEAgYm9vbCBS
ZW5kZXJPYmplY3Q6OmlzU2VsZWN0aW9uQm9yZGVyKCkgY29uc3QKIAogdm9pZCBSZW5kZXJPYmpl
Y3Q6OmRlc3Ryb3koKQogeworICAgIC8vIHVucmVnaXN0ZXIgZnJvbSB0aGUgdmlldyBpZiB0aGUg
b2JqZWN0IGhhZCBhIGZpeGVkIHBvc2l0aW9uCisgICAgaWYgKG1fc3R5bGUgJiYgbV9zdHlsZS0+
cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKSB7CisgICAgICAgIEZyYW1lVmlldyogZnJhbWVW
aWV3ID0gZG9jdW1lbnQoKS0+dmlldygpOworICAgICAgICBpZiAoZnJhbWVWaWV3KQorICAgICAg
ICAgICAgZnJhbWVWaWV3LT51bnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KHRoaXMpOwor
ICAgIH0KKwogICAgIC8vIERlc3Ryb3kgYW55IGxlZnRvdmVyIGFub255bW91cyBjaGlsZHJlbi4K
ICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuID0gdmlydHVhbENoaWxkcmVuKCk7
CiAgICAgaWYgKGNoaWxkcmVuKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47622</attachid>
            <date>2010-01-28 08:50:23 -0800</date>
            <delta_ts>2010-02-01 07:55:57 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>14648</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjYjY4MmUyLi4yZTc2ZTJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDEt
MjggIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEbyBub3QgcmVuZGVy
IHRoZSBmdWxsIGZyYW1lIHdoZW4gdGhlcmUgaXMgc29tZSBlbGVtZW50cyB3aXRoIGZpeGVkIHBv
c2l0aW9uaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMzE1MAorCisgICAgICAgICogZmFzdC9mcmFtZXMvZnJhbWUtc2Nyb2xsaW5nLXdpZGdldHMt
Y3Jhc2guaHRtbDogQWRkZWQuCisKIDIwMTAtMDEtMjggIEJlbiBNdXJkb2NoICA8YmVubUBnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtc2Nyb2xsaW5nLXdpZGdldHMtY3Jhc2gu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLXNjcm9sbGluZy13aWRnZXRzLWNy
YXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk4ZWY1NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLXNjcm9sbGluZy13
aWRnZXRzLWNyYXNoLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPGh0bWw+CisgIDxoZWFkPgorICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIHdpbmRvdy5yZXNpemVUbyg1MDAsNTAwKTsKKwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKworICAgIHZhciBvYmplY3ROb2Rl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvUmVtb3ZlIik7CisgICAgb2JqZWN0Tm9kZS5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKG9iamVjdE5vZGUpOworICAgIHNldFRpbWVvdXQoc2Nyb2xs
RnJhbWUsIDEwKTsKK30KKworZnVuY3Rpb24gc2Nyb2xsRnJhbWUoKQoreworICAgIHdpbmRvdy5z
Y3JvbGxCeSgxMCwgMTApOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKyAgICA8L3NjcmlwdD4K
KyAgPC9oZWFkPgorICA8Ym9keSBvbmxvYWQ9InRlc3QoKTsiPgorICA8ZGl2IHN0eWxlPSJ3aWR0
aDogMTAwJTsgaGVpZ2h0OiA1MDAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+
CisgIDxvYmplY3QgaWQ9InRvUmVtb3ZlIiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEw
MHB4OyBib3JkZXI6IDEwcHggYmxhY2sgc29saWQ7IHBvc2l0aW9uOiBmaXhlZDsgdG9wOiAwOyBs
ZWZ0OiAwOyIgZGF0YT0iYWJvdXQ6YmxhbmsiPjwvb2JqZWN0PgorICA8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OGRiNGExLi5mNmJhNmM2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDEwLTAxLTI4ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RG8gbm90IHJlbmRlciB0aGUgZnVsbCBmcmFtZSB3aGVuIHRoZXJlIGlzIHNvbWUgZWxlbWVudHMg
d2l0aCBmaXhlZCBwb3NpdGlvbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzMxNTAKKworICAgICAgICBUaGUgUmVuZGVyT2JqZWN0cyB3aXRoIGZp
eGVkIHBvc2l0aW9uIHJlZ2lzdGVyIHRvIHRoZSB2aWV3CisgICAgICAgIHRvIGJlIHRha2VuIGlu
dG8gYWNjb3VudCB3aGlsZSBzY3JvbGxpbmcuCisgICAgICAgIFRoZSBzY3JvbGxpbmcgY29kZSB1
cGRhdGUgc3BlY2lmaWNhbGx5IHRob3NlIGVsZW1lbnRzIGFmdGVyIGJsaXR0aW5nIHRoZSBwaXhl
bHMuCisKKyAgICAgICAgVGVzdDogZmFzdC9mcmFtZXMvZnJhbWUtc2Nyb2xsaW5nLXdpZGdldHMt
Y3Jhc2guaHRtbAorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3Ojp1c2VTbG93UmVwYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3Ojp1c2VTbG93UmVwYWludHNJZk5vdE92ZXJsYXBwZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjpyZWdpc3RlckZpeGVkUG9zaXRpb25lZE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnVucmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aCk6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpkZXN0cm95KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdl
dDo6ZGVzdHJveSk6CisKIDIwMTAtMDEtMjggIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCmluZGV4IDIxNjY2YWUuLmVmYzZjNjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC03ODQsMTIg
Kzc4NCwxMiBAQCBTdHJpbmcgRnJhbWVWaWV3OjptZWRpYVR5cGUoKSBjb25zdAogCiBib29sIEZy
YW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV91c2VTbG93
UmVwYWludHMgfHwgbV9zbG93UmVwYWludE9iamVjdENvdW50ID4gMCB8fCBtX2lzT3ZlcmxhcHBl
ZCB8fCAhbV9jb250ZW50SXNPcGFxdWU7CisgICAgcmV0dXJuIG1fdXNlU2xvd1JlcGFpbnRzIHx8
IG1fc2xvd1JlcGFpbnRPYmplY3RDb3VudCA+IDAgfHwgKHBsYXRmb3JtV2lkZ2V0KCkgJiYgIW1f
Zml4ZWRQb3NpdGlvbmVkT2JqZWN0cy5pc0VtcHR5KCkpIHx8IG1faXNPdmVybGFwcGVkIHx8ICFt
X2NvbnRlbnRJc09wYXF1ZTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OnVzZVNsb3dSZXBhaW50c0lm
Tm90T3ZlcmxhcHBlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXNlU2xvd1JlcGFpbnRzIHx8
IG1fc2xvd1JlcGFpbnRPYmplY3RDb3VudCA+IDAgfHwgIW1fY29udGVudElzT3BhcXVlOworICAg
IHJldHVybiBtX3VzZVNsb3dSZXBhaW50cyB8fCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAw
IHx8IChwbGF0Zm9ybVdpZGdldCgpICYmICFtX2ZpeGVkUG9zaXRpb25lZE9iamVjdHMuaXNFbXB0
eSgpKSB8fCAhbV9jb250ZW50SXNPcGFxdWU7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpzZXRVc2VT
bG93UmVwYWludHMoKQpAQCAtODEzLDYgKzgxMyw3MyBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3Zl
U2xvd1JlcGFpbnRPYmplY3QoKQogICAgICAgICBzZXRDYW5CbGl0T25TY3JvbGwoIXVzZVNsb3dS
ZXBhaW50cygpKTsKIH0KIAorCit2b2lkIEZyYW1lVmlldzo6cmVnaXN0ZXJGaXhlZFBvc2l0aW9u
ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0
KCkgJiYgbV9maXhlZFBvc2l0aW9uZWRPYmplY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0Q2Fu
QmxpdE9uU2Nyb2xsKGZhbHNlKTsKKyAgICBtX2ZpeGVkUG9zaXRpb25lZE9iamVjdHMuYWRkKG9i
amVjdCk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3Ojp1bnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVkT2Jq
ZWN0KFJlbmRlck9iamVjdCogb2JqZWN0KQoreworICAgIGJvb2wgd2FzRW1wdHkgPSBtX2ZpeGVk
UG9zaXRpb25lZE9iamVjdHMuaXNFbXB0eSgpOworICAgIG1fZml4ZWRQb3NpdGlvbmVkT2JqZWN0
cy5yZW1vdmUob2JqZWN0KTsKKyAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSAmJiAhd2FzRW1wdHkg
JiYgbV9maXhlZFBvc2l0aW9uZWRPYmplY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0Q2FuQmxp
dE9uU2Nyb2xsKCF1c2VTbG93UmVwYWludHMoKSk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3OjpzY3Jv
bGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRS
ZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIGNvbnN0
IHNpemVfdCBmaXhlZE9iamVjdE51bWJlclRocmVzaG9sZCA9IDU7CisKKyAgICBpZiAobV9maXhl
ZFBvc2l0aW9uZWRPYmplY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgaG9zdFdpbmRvdygpLT5zY3Jv
bGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworICAgIGVsc2UgeworICAg
ICAgICBWZWN0b3I8UmVuZGVyT2JqZWN0KiwgZml4ZWRPYmplY3ROdW1iZXJUaHJlc2hvbGQ+IGZp
eGVkT2JqZWN0c0luVmlld3BvcnQ7CisKKyAgICAgICAgYm9vbCB1cGRhdGVJbnZhbGlkYXRlZFN1
YlJlY3QgPSB0cnVlOworICAgICAgICAvLyBHZXQgYSBsaXN0IG9mIGZpeGVkIG9iamVjdHMgdGhh
dCBhcmUgbm90IGluIHRyYW5zZm9ybWF0aW9ucworICAgICAgICBIYXNoU2V0PFJlbmRlck9iamVj
dCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2ZpeGVkUG9zaXRpb25lZE9iamVjdHMuZW5kKCk7
CisgICAgICAgIEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9m
aXhlZFBvc2l0aW9uZWRPYmplY3RzLmJlZ2luKCk7CisgICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogb2JqID0gKml0OworICAgICAgICAg
ICAgLy8gbWFrZSBzdXJlIHRoZSBwYXJlbnQgbGF5ZXIgaGFzIG5vdCBiZWVuIHRyYW5zZm9ybWVk
CisgICAgICAgICAgICBpZiAob2JqLT5jb250YWluaW5nQmxvY2soKSA9PSBvYmotPnZpZXcoKSkg
eworICAgICAgICAgICAgICAgIGlmIChmaXhlZE9iamVjdHNJblZpZXdwb3J0LnNpemUoKSA+PSBm
aXhlZE9iamVjdE51bWJlclRocmVzaG9sZCkgeworICAgICAgICAgICAgICAgICAgICB1cGRhdGVJ
bnZhbGlkYXRlZFN1YlJlY3QgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZpeGVkT2JqZWN0c0luVmlld3BvcnQu
YXBwZW5kKG9iaik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBzY3Jv
bGwgdGhlIGNvbnRlbnQKKyAgICAgICAgaWYgKHVwZGF0ZUludmFsaWRhdGVkU3ViUmVjdCkgewor
ICAgICAgICAgICAgLy8gMSkgc2Nyb2xsCisgICAgICAgICAgICBob3N0V2luZG93KCktPnNjcm9s
bChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7CisKKyAgICAgICAgICAgIC8v
IDIpIHVwZGF0ZSB0aGUgYXJlYSBvZiBmaXhlZCBvYmpldHMgdGhhdCBoYXMgYmVlbiBpbnZhbGlk
YXRlZAorICAgICAgICAgICAgc2l6ZV90IGZpeE9iamVjdHNDb3VudCA9IGZpeGVkT2JqZWN0c0lu
Vmlld3BvcnQuc2l6ZSgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaXhP
YmplY3RzQ291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIEludFJlY3QgdG9wTGV2ZWxSZWN0
OworICAgICAgICAgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IGZpeGVkT2JqZWN0c0luVmll
d3BvcnRbaV0tPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KTsKKyAgICAgICAgICAgICAg
ICB1cGRhdGVSZWN0Lm1vdmUoLXNjcm9sbFgoKSwgLXNjcm9sbFkoKSk7CisgICAgICAgICAgICAg
ICAgSW50UmVjdCBzY3JvbGxlZFJlY3QgPSB1cGRhdGVSZWN0OworICAgICAgICAgICAgICAgIHNj
cm9sbGVkUmVjdC5tb3ZlKHNjcm9sbERlbHRhKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVSZWN0
LnVuaXRlKHNjcm9sbGVkUmVjdCk7CisgICAgICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNl
Y3QocmVjdFRvU2Nyb2xsKTsKKyAgICAgICAgICAgICAgICBob3N0V2luZG93KCktPnJlcGFpbnQo
dXBkYXRlUmVjdCwgdHJ1ZSwgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgLy8gdGhlIG51bWJlciBvZiBmaXhlZCBvYmplY3RzIGV4Y2Vl
ZCB0aGUgdGhyZXNob2xkLCBzbyB3ZSByZXBhaW50IGV2ZXJ5dGhpbmcuCisgICAgICAgICAgICBJ
bnRSZWN0IHVwZGF0ZVJlY3QgPSBjbGlwUmVjdDsKKyAgICAgICAgICAgIHVwZGF0ZVJlY3QuaW50
ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CisgICAgICAgICAgICBob3N0V2luZG93KCktPnJlcGFpbnQo
dXBkYXRlUmVjdCwgdHJ1ZSwgZmFsc2UsIHRydWUpOworICAgICAgICB9CisgICAgfQorfQorCiB2
b2lkIEZyYW1lVmlldzo6c2V0SXNPdmVybGFwcGVkKGJvb2wgaXNPdmVybGFwcGVkKQogewogICAg
IGlmIChpc092ZXJsYXBwZWQgPT0gbV9pc092ZXJsYXBwZWQpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmggYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggYjI3ZmZk
OC4uYzNkZTA1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMTQ1LDYgKzE0NSwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhZGRTbG93UmVwYWludE9iamVjdCgpOwogICAgIHZvaWQgcmVtb3ZlU2xvd1JlcGFpbnRP
YmplY3QoKTsKIAorICAgIC8vIE1ldGhvZHMgdG8gbWFuYWdlIHRoZSBvYmplY3RzIHRoYXQgYXJl
IGZpeGVkCisgICAgLy8gaW4gdGhlIHZpZXcgd2hlbiBzY3JvbGxpbmcKKyAgICB2b2lkIHJlZ2lz
dGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0KTsKKyAgICB2b2lk
IHVucmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpOwor
CiAgICAgdm9pZCBiZWdpbkRlZmVycmVkUmVwYWludHMoKTsKICAgICB2b2lkIGVuZERlZmVycmVk
UmVwYWludHMoKTsKICAgICB2b2lkIGNoZWNrU3RvcERlbGF5aW5nRGVmZXJyZWRSZXBhaW50cygp
OwpAQCAtMTk5LDYgKzIwNCw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRnJhbWVWaWV3U2Nyb2xs
Q29ybmVyKFJlbmRlclNjcm9sbGJhclBhcnQqIHNjcm9sbENvcm5lcikgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxDb3JuZXIgPT0gc2Nyb2xsQ29ybmVyOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlU2Ny
b2xsQ29ybmVyKCk7CiAKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQ29udGVu
dHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVj
dFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CisKIHByaXZhdGU6CiAgICAgRnJh
bWVWaWV3KEZyYW1lKik7CiAKQEAgLTI2OCw2ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9pc092ZXJsYXBwZWQ7CiAgICAgYm9vbCBtX2NvbnRlbnRJc09wYXF1ZTsKICAgICB1bnNpZ25l
ZCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQ7CisgICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPiBt
X2ZpeGVkUG9zaXRpb25lZE9iamVjdHM7CiAKICAgICBpbnQgbV9ib3JkZXJYLCBtX2JvcmRlclk7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IGU0MjkxY2MuLjAxNTY2ODAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcApAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Ny
b2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAKICAgICBpZiAoY2FuQmxp
dE9uU2Nyb2xsKCkpIHsgLy8gVGhlIG1haW4gZnJhbWUgY2FuIGp1c3QgYmxpdCB0aGUgV2ViVmll
dyB3aW5kb3cKICAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBibGl0IHN1YmZyYW1lcyB3
aXRob3V0IGJsaXR0aW5nIG92ZXJsYXBwaW5nIGNvbnRlbnQKLSAgICAgICBob3N0V2luZG93KCkt
PnNjcm9sbCgtc2Nyb2xsRGVsdGEsIHNjcm9sbFZpZXdSZWN0LCBjbGlwUmVjdCk7CisgICAgICAg
c2Nyb2xsQ29udGVudHNGYXN0UGF0aCgtc2Nyb2xsRGVsdGEsIHNjcm9sbFZpZXdSZWN0LCBjbGlw
UmVjdCk7CiAgICAgfSBlbHNlIHsgCiAgICAgICAgLy8gV2UgbmVlZCB0byBnbyBhaGVhZCBhbmQg
cmVwYWludCB0aGUgZW50aXJlIGJhY2tpbmcgc3RvcmUuICBEbyBpdCBub3cgYmVmb3JlIG1vdmlu
ZyB0aGUKICAgICAgICAvLyB3aW5kb3dlZCBwbHVnaW5zLgpAQCAtNTI4LDYgKzUyOCwxMSBAQCB2
b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRh
KQogICAgIGhvc3RXaW5kb3coKS0+cGFpbnQoKTsKIH0KIAordm9pZCBTY3JvbGxWaWV3OjpzY3Jv
bGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRS
ZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIGhvc3RX
aW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKK30K
KwogSW50UG9pbnQgU2Nyb2xsVmlldzo6d2luZG93VG9Db250ZW50cyhjb25zdCBJbnRQb2ludCYg
d2luZG93UG9pbnQpIGNvbnN0CiB7CiAgICAgSW50UG9pbnQgdmlld1BvaW50ID0gY29udmVydEZy
b21Db250YWluaW5nV2luZG93KHdpbmRvd1BvaW50KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXgg
YTcxNzNhNy4uNmNhMjU4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTI0OSw2ICsyNDksOSBA
QCBwcm90ZWN0ZWQ6CiAgICAgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbENvcm5lcigpOwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0
KTsKKworICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBieSBibGl0dGluZyB0aGUgcGl4ZWxzCisg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Ny
b2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xp
cFJlY3QpOwogICAgIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hvcml6b250
YWxTY3JvbGxiYXI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBiNmEwODE0Li40
NTBlMWI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE2NDcsMTAgKzE2NDcs
OCBAQCB2b2lkIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBk
aWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3UwogICAgIH0gZWxzZQogICAgICAgICBzX2FmZmVj
dHNQYXJlbnRCbG9jayA9IGZhbHNlOwogCi0gICAgaWYgKHZpZXcoKS0+ZnJhbWVWaWV3KCkpIHsK
LSAgICAgICAgLy8gRklYTUU6IEEgYmV0dGVyIHNvbHV0aW9uIHdvdWxkIGJlIHRvIG9ubHkgaW52
YWxpZGF0ZSB0aGUgZml4ZWQgcmVnaW9ucyB3aGVuIHNjcm9sbGluZy4gIEl0J3Mgb3ZlcmtpbGwg
dG8KLSAgICAgICAgLy8gcHJldmVudCB0aGUgZW50aXJlIHZpZXcgZnJvbSBibGl0dGluZyBvbiBh
IHNjcm9sbC4KLQorICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gdmlldygpLT5mcmFtZVZpZXco
KTsKKyAgICBpZiAoZnJhbWVWaWV3KSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQmxpdE9uRml4ZWRC
YWNrZ3JvdW5kSW1hZ2UgPSBmYWxzZTsKICNpZiBFTkFCTEUoRkFTVF9NT0JJTEVfU0NST0xMSU5H
KQogICAgICAgICAvLyBPbiBsb3ctcG93ZXJlZC9tb2JpbGUgZGV2aWNlcywgcHJldmVudGluZyBi
bGl0dGluZyBvbiBhIHNjcm9sbCBjYW4gY2F1c2Ugbm90aWNlYWJsZSBkZWxheXMKQEAgLTE2NjAs
MTUgKzE2NTgsMzUgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1MKICAgICAgICAgc2hvdWxkQmxp
dE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgPSB0cnVlOwogI2VuZGlmCiAKLSAgICAgICAgYm9vbCBu
ZXdTdHlsZVNsb3dTY3JvbGwgPSBuZXdTdHlsZSAmJiAobmV3U3R5bGUtPnBvc2l0aW9uKCkgPT0g
Rml4ZWRQb3NpdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8fCAoIXNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG5ld1N0eWxlLT5o
YXNGaXhlZEJhY2tncm91bmRJbWFnZSgpKSk7Ci0gICAgICAgIGJvb2wgb2xkU3R5bGVTbG93U2Ny
b2xsID0gbV9zdHlsZSAmJiAobV9zdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICghc2hvdWxk
QmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5k
SW1hZ2UoKSkpOworICAgICAgICBib29sIG5ld1N0eWxlU2xvd1Njcm9sbCA9IG5ld1N0eWxlICYm
ICFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAmJiBuZXdTdHlsZS0+aGFzRml4ZWRC
YWNrZ3JvdW5kSW1hZ2UoKTsKKyAgICAgICAgYm9vbCBvbGRTdHlsZVNsb3dTY3JvbGwgPSBtX3N0
eWxlICYmICFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAmJiBtX3N0eWxlLT5oYXNG
aXhlZEJhY2tncm91bmRJbWFnZSgpOworCiAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwg
IT0gbmV3U3R5bGVTbG93U2Nyb2xsKSB7CiAgICAgICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Ny
b2xsKQotICAgICAgICAgICAgICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnJlbW92ZVNsb3dSZXBh
aW50T2JqZWN0KCk7CisgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5yZW1vdmVTbG93UmVwYWlu
dE9iamVjdCgpOwogICAgICAgICAgICAgaWYgKG5ld1N0eWxlU2xvd1Njcm9sbCkKLSAgICAgICAg
ICAgICAgICB2aWV3KCktPmZyYW1lVmlldygpLT5hZGRTbG93UmVwYWludE9iamVjdCgpOworICAg
ICAgICAgICAgICAgIGZyYW1lVmlldy0+YWRkU2xvd1JlcGFpbnRPYmplY3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGJvb2wgbmV3U3R5bGVIYXNUcmFuc2Zvcm0gPSBuZXdTdHlsZSAmJiAobmV3
U3R5bGUtPmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKTsKKyAgICAgICAgYm9vbCBvbGRT
dHlsZUhhc1RyYW5zZm9ybSA9IG1fc3R5bGUgJiYgKG1fc3R5bGUtPmhhc1RyYW5zZm9ybVJlbGF0
ZWRQcm9wZXJ0eSgpKTsKKyAgICAgICAgYm9vbCBuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24gPSBu
ZXdTdHlsZSAmJiAobmV3U3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbik7CisgICAg
ICAgIGlmICghbmV3U3R5bGVIYXNUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIGJvb2wgb2xkU3R5
bGVIYXNGaXhlZFBvc2l0aW9uID0gbV9zdHlsZSAmJiAobV9zdHlsZS0+cG9zaXRpb24oKSA9PSBG
aXhlZFBvc2l0aW9uKTsKKworICAgICAgICAgICAgaWYgKG9sZFN0eWxlSGFzRml4ZWRQb3NpdGlv
biAhPSBuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAobmV3
U3R5bGVIYXNGaXhlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnJl
Z2lzdGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KHRoaXMpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT51bnJlZ2lzdGVyRml4ZWRQb3NpdGlvbmVk
T2JqZWN0KHRoaXMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBp
ZiBwcmV2aW91c2x5IGhhZCBhIGZpeCBwb3NpdGlvbiwgYnV0IGhhZCBhIHRyYW5zZm9ybSwgd2hp
Y2ggaGFzIGJlZW4gcmVtb3ZlZAorICAgICAgICAgICAgICAgIGlmIChvbGRTdHlsZUhhc1RyYW5z
Zm9ybSAmJiBuZXdTdHlsZUhhc0ZpeGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgICAgIGZy
YW1lVmlldy0+cmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3QodGhpcyk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSBpZiAoIW9sZFN0eWxlSGFzVHJhbnNmb3JtICYmIG5ld1N0eWxl
SGFzRml4ZWRQb3NpdGlvbikgeworICAgICAgICAgICAgLy8gaWYgYSB0cmFuc2Zvcm1hdGlvbiBp
cyBhZGRlZCBvbiBhIGZpeGVkIG9iamVjdAorICAgICAgICAgICAgZnJhbWVWaWV3LT51bnJlZ2lz
dGVyRml4ZWRQb3NpdGlvbmVkT2JqZWN0KHRoaXMpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAt
MTkzMSw2ICsxOTQ5LDEzIEBAIGJvb2wgUmVuZGVyT2JqZWN0Ojppc1NlbGVjdGlvbkJvcmRlcigp
IGNvbnN0CiAKIHZvaWQgUmVuZGVyT2JqZWN0OjpkZXN0cm95KCkKIHsKKyAgICAvLyB1bnJlZ2lz
dGVyIGZyb20gdGhlIHZpZXcgaWYgdGhlIG9iamVjdCBoYWQgYSBmaXhlZCBwb3NpdGlvbgorICAg
IGlmIChtX3N0eWxlICYmIG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikgewor
ICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGRvY3VtZW50KCktPnZpZXcoKTsKKyAgICAg
ICAgaWYgKGZyYW1lVmlldykKKyAgICAgICAgICAgIGZyYW1lVmlldy0+dW5yZWdpc3RlckZpeGVk
UG9zaXRpb25lZE9iamVjdCh0aGlzKTsKKyAgICB9CisKICAgICAvLyBEZXN0cm95IGFueSBsZWZ0
b3ZlciBhbm9ueW1vdXMgY2hpbGRyZW4uCiAgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGls
ZHJlbiA9IHZpcnR1YWxDaGlsZHJlbigpOwogICAgIGlmIChjaGlsZHJlbikKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJXaWRnZXQuY3BwCmluZGV4IDQ3NjMzMDkuLjgxZGI2MTYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNo
ZS5oIgogI2luY2x1ZGUgIkFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJGcmFtZVZp
ZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVz
dWx0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtMTExLDYgKzExMiwxMyBAQCB2b2lk
IFJlbmRlcldpZGdldDo6ZGVzdHJveSgpCiAKICAgICBhbmltYXRpb24oKS0+Y2FuY2VsQW5pbWF0
aW9ucyh0aGlzKTsKIAorICAgIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUgPSBzdHlsZSgpOwor
ICAgIGlmIChjdXJyZW50U3R5bGUgJiYgY3VycmVudFN0eWxlLT5wb3NpdGlvbigpID09IEZpeGVk
UG9zaXRpb24pIHsKKyAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBkb2N1bWVudCgpLT52
aWV3KCk7CisgICAgICAgIGlmIChmcmFtZVZpZXcpCisgICAgICAgICAgICBmcmFtZVZpZXctPnVu
cmVnaXN0ZXJGaXhlZFBvc2l0aW9uZWRPYmplY3QodGhpcyk7CisgICAgfQorCiAgICAgaWYgKFJl
bmRlclZpZXcqIHYgPSB2aWV3KCkpCiAgICAgICAgIHYtPnJlbW92ZVdpZGdldCh0aGlzKTsKIAo=
</data>
<flag name="review"
          id="30112"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47844</attachid>
            <date>2010-02-01 07:55:57 -0800</date>
            <delta_ts>2010-02-02 11:32:16 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>15546</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNTE0MzU5Li4zM2QxMTdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDIt
MDEgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEbyBub3QgcmVuZGVy
IHRoZSBmdWxsIGZyYW1lIHdoZW4gdGhlcmUgaXMgc29tZSBlbGVtZW50cyB3aXRoIGZpeGVkIHBv
c2l0aW9uaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMzE1MAorCisgICAgICAgICogZmFzdC9mcmFtZXMvZnJhbWUtc2Nyb2xsaW5nLXdpZGdldHMt
Y3Jhc2gtZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWltZy1jcmFzaC1leHBlY3RlZC50eHQuCisgICAg
ICAgICogZmFzdC9mcmFtZXMvZnJhbWUtc2Nyb2xsaW5nLXdpZGdldHMtY3Jhc2guaHRtbDogQWRk
ZWQuCisKIDIwMTAtMDEtMzEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvZnJhbWUtc2Nyb2xsaW5nLXdpZGdldHMtY3Jhc2gtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtc2Nyb2xsaW5nLXdpZGdldHMtY3Jhc2gtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlZjIyZTkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1zY3JvbGxpbmct
d2lkZ2V0cy1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorUEFTUwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtc2Nyb2xsaW5nLXdpZGdldHMtY3Jhc2gu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLXNjcm9sbGluZy13aWRnZXRzLWNy
YXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJmOTE5OQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLXNjcm9sbGluZy13
aWRnZXRzLWNyYXNoLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPGh0bWw+CisgIDxoZWFkPgorICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIHdpbmRvdy5yZXNpemVUbyg1MDAsNTAwKTsKKwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKworICAgIHZhciBvYmplY3ROb2Rl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvUmVtb3ZlIik7CisgICAgb2JqZWN0Tm9kZS5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKG9iamVjdE5vZGUpOworICAgIHNldFRpbWVvdXQoc2Nyb2xs
RnJhbWUsIDEwKTsKK30KKworZnVuY3Rpb24gc2Nyb2xsRnJhbWUoKQoreworICAgIHdpbmRvdy5z
Y3JvbGxCeSgxMCwgMTApOworICAgIHNldFRpbWVvdXQoc2Nyb2xsRnJhbWVFbmQsIDEwKTsKK30K
KworZnVuY3Rpb24gc2Nyb2xsRnJhbWVFbmQoKQoreworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmRpc3BsYXkoKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJU
ZXh0ID0gIlBBU1MiOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30K
KyAgICA8L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keSBvbmxvYWQ9InRlc3QoKTsiPgorICA8
ZGl2IHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MDAwcHg7IGJhY2tncm91bmQtY29sb3I6
IGdyZWVuOyI+PC9kaXY+CisgIDxvYmplY3QgaWQ9InRvUmVtb3ZlIiBzdHlsZT0id2lkdGg6IDEw
MHB4OyBoZWlnaHQ6IDEwMHB4OyBib3JkZXI6IDEwcHggYmxhY2sgc29saWQ7IHBvc2l0aW9uOiBm
aXhlZDsgdG9wOiAwOyBsZWZ0OiAwOyIgZGF0YT0iYWJvdXQ6YmxhbmsiPjwvb2JqZWN0PgorICA8
ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMmU2YjgwLi42MzYzNjIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEwLTAyLTAx
ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG8gbm90IHJlbmRlciB0
aGUgZnVsbCBmcmFtZSB3aGVuIHRoZXJlIGlzIHNvbWUgZWxlbWVudHMgd2l0aCBmaXhlZCBwb3Np
dGlvbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzMxNTAKKworICAgICAgICBUaGUgZnJhbWUgdmlldyB0YWtlIGludG8gYWNvdW50IHRoZSBsaXN0
IG9mIHBvc2l0aW9uZWQgb2JqZWN0IHdoZW4gc2Nyb2xsaW5nCisgICAgICAgIHRoZSB2aWV3LiBJ
ZiB0aGUgbnVtYmVyIG9mIG9iamVjdCBpcyBsb3dlciB0aGFuIGEgY2VydGFpbiB0aHJlc2hvbGQs
IHRoZSBwaXhlbAorICAgICAgICBhcmUgYmxpdHRlZCwgYW5kIHRoZSBpbnZhbGlkYXRlZCBhcmVh
IHVwcGRhdGVkLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZnJhbWVzL2ZyYW1lLXNjcm9sbGluZy13
aWRnZXRzLWNyYXNoLmh0bWwKKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzSWZOb3RPdmVybGFwcGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkUG9zaXRpb25lZE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnJlbW92ZVBvc2l0aW9uZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aCk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmVtb3ZlUG9zaXRpb25lZE9iamVjdHMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OnBvc2l0aW9uZWRPYmplY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJWaWV3OjppbnNlcnRQb3NpdGlvbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclZpZXc6OnJlbW92ZVBvc2l0aW9uZWRPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3Lmg6CisKIDIwMTAtMDEtMzEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJldmVydCByNTQxMTIgYW5kIHI1NDEyNCBi
ZWNhdXNlIG9mIFdpbmRvd3MgYnVpbGQgZXJyb3IuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGQ4MzllMjYu
LmQzMDFjMmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMDgsNiArMTA4LDcgQEAgRnJhbWVWaWV3OjpG
cmFtZVZpZXcoRnJhbWUqIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1fY2Fu
SGF2ZVNjcm9sbGJhcnModHJ1ZSkKICAgICAsIG1fc2xvd1JlcGFpbnRPYmplY3RDb3VudCgwKQor
ICAgICwgbV9wb3NpdGlvbmVkT2JqZWN0Q291bnQoMCkKICAgICAsIG1fbGF5b3V0VGltZXIodGhp
cywgJkZyYW1lVmlldzo6bGF5b3V0VGltZXJGaXJlZCkKICAgICAsIG1fbGF5b3V0Um9vdCgwKQog
ICAgICwgbV9wb3N0TGF5b3V0VGFza3NUaW1lcih0aGlzLCAmRnJhbWVWaWV3Ojpwb3N0TGF5b3V0
VGltZXJGaXJlZCkKQEAgLTc4NCwxMiArNzg1LDEyIEBAIFN0cmluZyBGcmFtZVZpZXc6Om1lZGlh
VHlwZSgpIGNvbnN0CiAKIGJvb2wgRnJhbWVWaWV3Ojp1c2VTbG93UmVwYWludHMoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3VzZVNsb3dSZXBhaW50cyB8fCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291
bnQgPiAwIHx8IG1faXNPdmVybGFwcGVkIHx8ICFtX2NvbnRlbnRJc09wYXF1ZTsKKyAgICByZXR1
cm4gbV91c2VTbG93UmVwYWludHMgfHwgbV9zbG93UmVwYWludE9iamVjdENvdW50ID4gMCB8fCAo
cGxhdGZvcm1XaWRnZXQoKSAmJiBtX3Bvc2l0aW9uZWRPYmplY3RDb3VudCA+IDApIHx8IG1faXNP
dmVybGFwcGVkIHx8ICFtX2NvbnRlbnRJc09wYXF1ZTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OnVz
ZVNsb3dSZXBhaW50c0lmTm90T3ZlcmxhcHBlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXNl
U2xvd1JlcGFpbnRzIHx8IG1fc2xvd1JlcGFpbnRPYmplY3RDb3VudCA+IDAgfHwgIW1fY29udGVu
dElzT3BhcXVlOworICAgIHJldHVybiBtX3VzZVNsb3dSZXBhaW50cyB8fCBtX3Nsb3dSZXBhaW50
T2JqZWN0Q291bnQgPiAwIHx8IChwbGF0Zm9ybVdpZGdldCgpICYmIG1fcG9zaXRpb25lZE9iamVj
dENvdW50ID4gMCkgfHwgIW1fY29udGVudElzT3BhcXVlOwogfQogCiB2b2lkIEZyYW1lVmlldzo6
c2V0VXNlU2xvd1JlcGFpbnRzKCkKQEAgLTgxMyw2ICs4MTQsNzUgQEAgdm9pZCBGcmFtZVZpZXc6
OnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KCkKICAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCF1
c2VTbG93UmVwYWludHMoKSk7CiB9CiAKK3ZvaWQgRnJhbWVWaWV3OjphZGRQb3NpdGlvbmVkT2Jq
ZWN0KCkKK3sKKyAgICBpZiAoIW1fcG9zaXRpb25lZE9iamVjdENvdW50ICYmIHBsYXRmb3JtV2lk
Z2V0KCkpCisgICAgICAgIHNldENhbkJsaXRPblNjcm9sbChmYWxzZSk7CisgICAgKyttX3Bvc2l0
aW9uZWRPYmplY3RDb3VudDsKK30KKwordm9pZCBGcmFtZVZpZXc6OnJlbW92ZVBvc2l0aW9uZWRP
YmplY3QoKQoreworICAgIEFTU0VSVChtX3Bvc2l0aW9uZWRPYmplY3RDb3VudCA+IDApOworICAg
IG1fcG9zaXRpb25lZE9iamVjdENvdW50LS07CisgICAgaWYgKCFtX3Bvc2l0aW9uZWRPYmplY3RD
b3VudCkKKyAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCF1c2VTbG93UmVwYWludHMoKSk7Cit9
CisKK3ZvaWQgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3Qm
IGNsaXBSZWN0KQoreworICAgIGNvbnN0IHNpemVfdCBmaXhlZE9iamVjdE51bWJlclRocmVzaG9s
ZCA9IDU7CisKKyAgICBMaXN0SGFzaFNldDxSZW5kZXJCb3gqPiogcG9zaXRpb25lZE9iamVjdHMg
PSAwOworICAgIGlmIChSZW5kZXJWaWV3KiByb290ID0gbV9mcmFtZS0+Y29udGVudFJlbmRlcmVy
KCkpCisgICAgICAgIHBvc2l0aW9uZWRPYmplY3RzID0gcm9vdC0+cG9zaXRpb25lZE9iamVjdHMo
KTsKKworICAgIGlmICghcG9zaXRpb25lZE9iamVjdHMgfHwgcG9zaXRpb25lZE9iamVjdHMtPmlz
RW1wdHkoKSkKKyAgICAgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RU
b1Njcm9sbCwgY2xpcFJlY3QpOworICAgIGVsc2UgeworICAgICAgICAvLyBHZXQgdGhlIHJlY3Rz
IG9mIHRoZSBwb3NpdGlvbmVkIG9iamVjdHMgdmlzaWJsZSBpbiB0aGUgcmVjdFRvU2Nyb2xsCisg
ICAgICAgIFZlY3RvcjxJbnRSZWN0LCBmaXhlZE9iamVjdE51bWJlclRocmVzaG9sZD4gc3ViUmVj
dFRvVXBkYXRlOworICAgICAgICBib29sIHVwZGF0ZUludmFsaWRhdGVkU3ViUmVjdCA9IHRydWU7
CisgICAgICAgIExpc3RIYXNoU2V0PFJlbmRlckJveCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBw
b3NpdGlvbmVkT2JqZWN0cy0+ZW5kKCk7CisgICAgICAgIGZvciAoTGlzdEhhc2hTZXQ8UmVuZGVy
Qm94Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcG9zaXRpb25lZE9iamVjdHMtPmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgUmVuZGVyQm94KiByID0gKml0OworICAgICAg
ICAgICAgSW50UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAgICAgICAgICBJbnRSZWN0IHVwZGF0ZVJl
Y3QgPSByLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCk7CisgICAgICAgICAgICB1cGRh
dGVSZWN0Lm1vdmUoLXNjcm9sbFgoKSwgLXNjcm9sbFkoKSk7CisgICAgICAgICAgICB1cGRhdGVS
ZWN0LmludGVyc2VjdChyZWN0VG9TY3JvbGwpOworICAgICAgICAgICAgaWYgKCF1cGRhdGVSZWN0
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGlmIChzdWJSZWN0VG9VcGRhdGUuc2l6ZSgp
ID49IGZpeGVkT2JqZWN0TnVtYmVyVGhyZXNob2xkKSB7CisgICAgICAgICAgICAgICAgICAgIHVw
ZGF0ZUludmFsaWRhdGVkU3ViUmVjdCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3ViUmVjdFRvVXBkYXRlLmFw
cGVuZCh1cGRhdGVSZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8v
IFNjcm9sbCB0aGUgdmlldworICAgICAgICBpZiAodXBkYXRlSW52YWxpZGF0ZWRTdWJSZWN0KSB7
CisgICAgICAgICAgICAvLyAxKSBzY3JvbGwKKyAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+c2Ny
b2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKworICAgICAgICAgICAg
Ly8gMikgdXBkYXRlIHRoZSBhcmVhIG9mIGZpeGVkIG9iamV0cyB0aGF0IGhhcyBiZWVuIGludmFs
aWRhdGVkCisgICAgICAgICAgICBzaXplX3QgZml4T2JqZWN0c0NvdW50ID0gc3ViUmVjdFRvVXBk
YXRlLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZml4T2JqZWN0
c0NvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSBzdWJS
ZWN0VG9VcGRhdGVbaV07CisgICAgICAgICAgICAgICAgSW50UmVjdCBzY3JvbGxlZFJlY3QgPSB1
cGRhdGVSZWN0OworICAgICAgICAgICAgICAgIHNjcm9sbGVkUmVjdC5tb3ZlKHNjcm9sbERlbHRh
KTsKKyAgICAgICAgICAgICAgICB1cGRhdGVSZWN0LnVuaXRlKHNjcm9sbGVkUmVjdCk7CisgICAg
ICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVjdFRvU2Nyb2xsKTsKKyAgICAgICAg
ICAgICAgICBob3N0V2luZG93KCktPnJlcGFpbnQodXBkYXRlUmVjdCwgdHJ1ZSwgZmFsc2UsIHRy
dWUpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gdGhl
IG51bWJlciBvZiBmaXhlZCBvYmplY3RzIGV4Y2VlZCB0aGUgdGhyZXNob2xkLCBzbyB3ZSByZXBh
aW50IGV2ZXJ5dGhpbmcuCisgICAgICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSBjbGlwUmVj
dDsKKyAgICAgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CisgICAg
ICAgICAgICBob3N0V2luZG93KCktPnJlcGFpbnQodXBkYXRlUmVjdCwgdHJ1ZSwgZmFsc2UsIHRy
dWUpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIEZyYW1lVmlldzo6c2V0SXNPdmVybGFw
cGVkKGJvb2wgaXNPdmVybGFwcGVkKQogewogICAgIGlmIChpc092ZXJsYXBwZWQgPT0gbV9pc092
ZXJsYXBwZWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggYjI3ZmZkOC4uNDViNjZiMSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAt
MTQ1LDYgKzE0NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNsb3dSZXBhaW50T2JqZWN0KCk7
CiAgICAgdm9pZCByZW1vdmVTbG93UmVwYWludE9iamVjdCgpOwogCisgICAgdm9pZCBhZGRQb3Np
dGlvbmVkT2JqZWN0KCk7CisgICAgdm9pZCByZW1vdmVQb3NpdGlvbmVkT2JqZWN0KCk7CisKICAg
ICB2b2lkIGJlZ2luRGVmZXJyZWRSZXBhaW50cygpOwogICAgIHZvaWQgZW5kRGVmZXJyZWRSZXBh
aW50cygpOwogICAgIHZvaWQgY2hlY2tTdG9wRGVsYXlpbmdEZWZlcnJlZFJlcGFpbnRzKCk7CkBA
IC0xOTksNiArMjAyLDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNGcmFtZVZpZXdTY3JvbGxDb3Ju
ZXIoUmVuZGVyU2Nyb2xsYmFyUGFydCogc2Nyb2xsQ29ybmVyKSBjb25zdCB7IHJldHVybiBtX3Nj
cm9sbENvcm5lciA9PSBzY3JvbGxDb3JuZXI7IH0KICAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxD
b3JuZXIoKTsKIAorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxDb250ZW50c0Zh
c3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9T
Y3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKwogcHJpdmF0ZToKICAgICBGcmFtZVZp
ZXcoRnJhbWUqKTsKIApAQCAtMjY4LDYgKzI3NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lz
T3ZlcmxhcHBlZDsKICAgICBib29sIG1fY29udGVudElzT3BhcXVlOwogICAgIHVuc2lnbmVkIG1f
c2xvd1JlcGFpbnRPYmplY3RDb3VudDsKKyAgICB1bnNpZ25lZCBtX3Bvc2l0aW9uZWRPYmplY3RD
b3VudDsKIAogICAgIGludCBtX2JvcmRlclgsIG1fYm9yZGVyWTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5jcHAKaW5kZXggZTQyOTFjYy4uMDE1NjY4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBA
IC01MTMsNyArNTEzLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJ
bnRTaXplJiBzY3JvbGxEZWx0YSkKIAogICAgIGlmIChjYW5CbGl0T25TY3JvbGwoKSkgeyAvLyBU
aGUgbWFpbiBmcmFtZSBjYW4ganVzdCBibGl0IHRoZSBXZWJWaWV3IHdpbmRvdwogICAgICAgIC8v
IEZJWE1FOiBGaW5kIGEgd2F5IHRvIGJsaXQgc3ViZnJhbWVzIHdpdGhvdXQgYmxpdHRpbmcgb3Zl
cmxhcHBpbmcgY29udGVudAotICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKC1zY3JvbGxEZWx0
YSwgc2Nyb2xsVmlld1JlY3QsIGNsaXBSZWN0KTsKKyAgICAgICBzY3JvbGxDb250ZW50c0Zhc3RQ
YXRoKC1zY3JvbGxEZWx0YSwgc2Nyb2xsVmlld1JlY3QsIGNsaXBSZWN0KTsKICAgICB9IGVsc2Ug
eyAKICAgICAgICAvLyBXZSBuZWVkIHRvIGdvIGFoZWFkIGFuZCByZXBhaW50IHRoZSBlbnRpcmUg
YmFja2luZyBzdG9yZS4gIERvIGl0IG5vdyBiZWZvcmUgbW92aW5nIHRoZQogICAgICAgIC8vIHdp
bmRvd2VkIHBsdWdpbnMuCkBAIC01MjgsNiArNTI4LDExIEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Ny
b2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAgICAgaG9zdFdpbmRvdygp
LT5wYWludCgpOwogfQogCit2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgo
Y29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwg
Y29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCit7CisgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Ny
b2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworfQorCiBJbnRQb2ludCBTY3JvbGxW
aWV3Ojp3aW5kb3dUb0NvbnRlbnRzKGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgY29uc3QK
IHsKICAgICBJbnRQb2ludCB2aWV3UG9pbnQgPSBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3co
d2luZG93UG9pbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3Lmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCBhNzE3M2E3Li42Y2EyNTgxIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtMjQ5LDYgKzI0OSw5IEBAIHByb3RlY3RlZDoKICAgICBJ
bnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
U2Nyb2xsQ29ybmVyKCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOworCisgICAgLy8gU2Nyb2xs
IHRoZSBjb250ZW50IGJ5IGJsaXR0aW5nIHRoZSBwaXhlbHMKKyAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50
UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgCiBwcml2
YXRlOgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCAxYmVhOGUzLi45ZjZmYTE5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCkBAIC0yMzAzLDcgKzIzMDMsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpy
ZW1vdmVQb3NpdGlvbmVkT2JqZWN0cyhSZW5kZXJCbG9jayogbykKICAgICB9CiAgICAgCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlYWRPYmplY3RzLnNpemUoKTsgaSsrKQotICAgICAg
ICBtX3Bvc2l0aW9uZWRPYmplY3RzLT5yZW1vdmUoZGVhZE9iamVjdHMuYXQoaSkpOworICAgICAg
ICByZW1vdmVQb3NpdGlvbmVkT2JqZWN0KGRlYWRPYmplY3RzLmF0KGkpKTsKIH0KIAogdm9pZCBS
ZW5kZXJCbG9jazo6aW5zZXJ0RmxvYXRpbmdPYmplY3QoUmVuZGVyQm94KiBvKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgKaW5kZXggZDcyNTljZS4uNjI2MWI4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCkBAIC03MSw5ICs3MSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0
QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuKTsKIAotICAgIHZvaWQgaW5zZXJ0UG9zaXRpb25l
ZE9iamVjdChSZW5kZXJCb3gqKTsKLSAgICB2b2lkIHJlbW92ZVBvc2l0aW9uZWRPYmplY3QoUmVu
ZGVyQm94Kik7CisgICAgdmlydHVhbCB2b2lkIGluc2VydFBvc2l0aW9uZWRPYmplY3QoUmVuZGVy
Qm94Kik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVBvc2l0aW9uZWRPYmplY3QoUmVuZGVyQm94
Kik7CiAgICAgdm9pZCByZW1vdmVQb3NpdGlvbmVkT2JqZWN0cyhSZW5kZXJCbG9jayopOworICAg
IExpc3RIYXNoU2V0PFJlbmRlckJveCo+KiBwb3NpdGlvbmVkT2JqZWN0cygpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpb25lZE9iamVjdHM7IH0KIAogICAgIHZvaWQgYWRkUGVyY2VudEhlaWdodERl
c2NlbmRhbnQoUmVuZGVyQm94Kik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlUGVyY2VudEhlaWdo
dERlc2NlbmRhbnQoUmVuZGVyQm94Kik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRl
eCBiNmEwODE0Li5iYzQ2NzQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE2
NDgsOSArMTY0OCw2IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTCiAgICAgICAgIHNfYWZmZWN0
c1BhcmVudEJsb2NrID0gZmFsc2U7CiAKICAgICBpZiAodmlldygpLT5mcmFtZVZpZXcoKSkgewot
ICAgICAgICAvLyBGSVhNRTogQSBiZXR0ZXIgc29sdXRpb24gd291bGQgYmUgdG8gb25seSBpbnZh
bGlkYXRlIHRoZSBmaXhlZCByZWdpb25zIHdoZW4gc2Nyb2xsaW5nLiAgSXQncyBvdmVya2lsbCB0
bwotICAgICAgICAvLyBwcmV2ZW50IHRoZSBlbnRpcmUgdmlldyBmcm9tIGJsaXR0aW5nIG9uIGEg
c2Nyb2xsLgotCiAgICAgICAgIGJvb2wgc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2Ug
PSBmYWxzZTsKICNpZiBFTkFCTEUoRkFTVF9NT0JJTEVfU0NST0xMSU5HKQogICAgICAgICAvLyBP
biBsb3ctcG93ZXJlZC9tb2JpbGUgZGV2aWNlcywgcHJldmVudGluZyBibGl0dGluZyBvbiBhIHNj
cm9sbCBjYW4gY2F1c2Ugbm90aWNlYWJsZSBkZWxheXMKQEAgLTE2NjAsMTAgKzE2NTcsOCBAQCB2
b2lkIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBj
b25zdCBSZW5kZXJTdHlsZSogbmV3UwogICAgICAgICBzaG91bGRCbGl0T25GaXhlZEJhY2tncm91
bmRJbWFnZSA9IHRydWU7CiAjZW5kaWYKIAotICAgICAgICBib29sIG5ld1N0eWxlU2xvd1Njcm9s
bCA9IG5ld1N0eWxlICYmIChuZXdTdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICghc2hvdWxk
QmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbmV3U3R5bGUtPmhhc0ZpeGVkQmFja2dyb3Vu
ZEltYWdlKCkpKTsKLSAgICAgICAgYm9vbCBvbGRTdHlsZVNsb3dTY3JvbGwgPSBtX3N0eWxlICYm
IChtX3N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCFzaG91bGRCbGl0T25GaXhlZEJhY2tn
cm91bmRJbWFnZSAmJiBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpKSk7CisgICAg
ICAgIGJvb2wgbmV3U3R5bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgKCFzaG91bGRCbGl0T25G
aXhlZEJhY2tncm91bmRJbWFnZSAmJiBuZXdTdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2Uo
KSk7CisgICAgICAgIGJvb2wgb2xkU3R5bGVTbG93U2Nyb2xsID0gbV9zdHlsZSAmJiAoIXNob3Vs
ZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dyb3Vu
ZEltYWdlKCkpOwogICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsICE9IG5ld1N0eWxlU2xv
d1Njcm9sbCkgewogICAgICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9sbCkKICAgICAgICAg
ICAgICAgICB2aWV3KCktPmZyYW1lVmlldygpLT5yZW1vdmVTbG93UmVwYWludE9iamVjdCgpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA2OWExMTczLi4zZDYyMDMwIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcApAQCAtNjIwLDYgKzYyMCwxOCBAQCBmbG9hdCBSZW5kZXJWaWV3Ojp6
b29tRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gMS4wZjsKIH0KIAordm9pZCBSZW5kZXJWaWV3
OjppbnNlcnRQb3NpdGlvbmVkT2JqZWN0KFJlbmRlckJveCogbykKK3sKKyAgICBtX2ZyYW1lVmll
dy0+YWRkUG9zaXRpb25lZE9iamVjdCgpOworICAgIFJlbmRlckJsb2NrOjppbnNlcnRQb3NpdGlv
bmVkT2JqZWN0KG8pOworfQorCit2b2lkIFJlbmRlclZpZXc6OnJlbW92ZVBvc2l0aW9uZWRPYmpl
Y3QoUmVuZGVyQm94KiBvKQoreworICAgIG1fZnJhbWVWaWV3LT5yZW1vdmVQb3NpdGlvbmVkT2Jq
ZWN0KCk7CisgICAgUmVuZGVyQmxvY2s6OnJlbW92ZVBvc2l0aW9uZWRPYmplY3Qobyk7Cit9CisK
IC8vIFRoZSBpZGVhIGhlcmUgaXMgdG8gdGFrZSBpbnRvIGFjY291bnQgd2hhdCBvYmplY3QgaXMg
bW92aW5nIHRoZSBwYWdpbmF0aW9uIHBvaW50LCBhbmQKIC8vIHRodXMgY2hvb3NlIHRoZSBiZXN0
IHBsYWNlIHRvIGNob3AgaXQuCiB2b2lkIFJlbmRlclZpZXc6OnNldEJlc3RUcnVuY2F0ZWRBdChp
bnQgeSwgUmVuZGVyQm94TW9kZWxPYmplY3QqIGZvclJlbmRlcmVyLCBib29sIGZvcmNlZEJyZWFr
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDFlMDA3ZTguLmNlYzkzOGMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmgKQEAgLTU3LDYgKzU3LDkgQEAgcHVibGljOgogCiAgICAgRnJhbWVWaWV3KiBm
cmFtZVZpZXcoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lVmlldzsgfQogCisgICAgdmlydHVhbCB2
b2lkIGluc2VydFBvc2l0aW9uZWRPYmplY3QoUmVuZGVyQm94Kik7CisgICAgdmlydHVhbCB2b2lk
IHJlbW92ZVBvc2l0aW9uZWRPYmplY3QoUmVuZGVyQm94Kik7CisKICAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBJbnRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVw
YWludFZpZXdSZWN0YW5nbGUoY29uc3QgSW50UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2Up
OwogICAgIC8vIFJlcGFpbnQgdGhlIHZpZXcsIGFuZCBhbGwgY29tcG9zaXRlZCBsYXllcnMgdGhh
dCBpbnRlcnNlY3QgdGhlIGdpdmVuIGFic29sdXRlIHJlY3RhbmdsZS4K
</data>
<flag name="review"
          id="30391"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47957</attachid>
            <date>2010-02-02 11:32:16 -0800</date>
            <delta_ts>2010-02-02 12:20:43 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>13986</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNTE0MzU5Li45MTc2YWY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDIt
MDIgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEbyBub3QgcmVuZGVy
IHRoZSBmdWxsIGZyYW1lIHdoZW4gdGhlcmUgaXMgc29tZSBlbGVtZW50cyB3aXRoIGZpeGVkIHBv
c2l0aW9uaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMzE1MAorCisgICAgICAgICogZmFzdC9mcmFtZXMvZnJhbWUtc2Nyb2xsaW5nLXdpZGdldHMt
Y3Jhc2gtZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWltZy1jcmFzaC1leHBlY3RlZC50eHQuCisgICAg
ICAgICogZmFzdC9mcmFtZXMvZnJhbWUtc2Nyb2xsaW5nLXdpZGdldHMtY3Jhc2guaHRtbDogQWRk
ZWQuCisKIDIwMTAtMDEtMzEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMmU2YjgwLi44YmU5ODc5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM3IEBACisyMDEwLTAyLTAyICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRG8gbm90IHJlbmRlciB0aGUgZnVsbCBmcmFtZSB3aGVuIHRoZXJlIGlzIHNvbWUgZWxlbWVu
dHMgd2l0aCBmaXhlZCBwb3NpdGlvbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzMxNTAKKworICAgICAgICBUaGUgZnJhbWUgdmlldyB0YWtlIGlu
dG8gYWNvdW50IHRoZSBsaXN0IG9mIGZpeGVkIG9iamVjdCB3aGVuIHNjcm9sbGluZworICAgICAg
ICB0aGUgdmlldy4gSWYgdGhlIG51bWJlciBvZiBvYmplY3QgaXMgbG93ZXIgdGhhbiBhIGNlcnRh
aW4gdGhyZXNob2xkLCB0aGUgcGl4ZWwKKyAgICAgICAgYXJlIGJsaXR0ZWQsIGFuZCB0aGUgaW52
YWxpZGF0ZWQgYXJlYSB1cHBkYXRlZC4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6RnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6dXNlU2xvd1JlcGFpbnRzSWZOb3RPdmVybGFwcGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6YWRkRml4ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpyZW1vdmVGaXhlZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9s
bENvbnRlbnRzRmFzdFBhdGgpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
OjpzY3JvbGxDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxD
b250ZW50c0Zhc3RQYXRoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpyZW1vdmVQb3NpdGlvbmVkT2JqZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25lZE9i
amVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6Omluc2Vy
dFBvc2l0aW9uZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVtb3Zl
UG9zaXRpb25lZE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKwog
MjAxMC0wMS0zMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZC4gUmV2ZXJ0IHI1NDExMiBhbmQgcjU0MTI0IGJlY2F1c2Ugb2YgV2luZG93cyBi
dWlsZCBlcnJvci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZDgzOWUyNi4uNWRiMTNiZCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKQEAgLTEwOCw2ICsxMDgsNyBAQCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSogZnJh
bWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9jYW5IYXZlU2Nyb2xsYmFycyh0cnVl
KQogICAgICwgbV9zbG93UmVwYWludE9iamVjdENvdW50KDApCisgICAgLCBtX2ZpeGVkT2JqZWN0
Q291bnQoMCkKICAgICAsIG1fbGF5b3V0VGltZXIodGhpcywgJkZyYW1lVmlldzo6bGF5b3V0VGlt
ZXJGaXJlZCkKICAgICAsIG1fbGF5b3V0Um9vdCgwKQogICAgICwgbV9wb3N0TGF5b3V0VGFza3NU
aW1lcih0aGlzLCAmRnJhbWVWaWV3Ojpwb3N0TGF5b3V0VGltZXJGaXJlZCkKQEAgLTc4NCwxMiAr
Nzg1LDEyIEBAIFN0cmluZyBGcmFtZVZpZXc6Om1lZGlhVHlwZSgpIGNvbnN0CiAKIGJvb2wgRnJh
bWVWaWV3Ojp1c2VTbG93UmVwYWludHMoKSBjb25zdAogewotICAgIHJldHVybiBtX3VzZVNsb3dS
ZXBhaW50cyB8fCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8IG1faXNPdmVybGFwcGVk
IHx8ICFtX2NvbnRlbnRJc09wYXF1ZTsKKyAgICByZXR1cm4gbV91c2VTbG93UmVwYWludHMgfHwg
bV9zbG93UmVwYWludE9iamVjdENvdW50ID4gMCB8fCAocGxhdGZvcm1XaWRnZXQoKSAmJiBtX2Zp
eGVkT2JqZWN0Q291bnQgPiAwKSB8fCBtX2lzT3ZlcmxhcHBlZCB8fCAhbV9jb250ZW50SXNPcGFx
dWU7CiB9CiAKIGJvb2wgRnJhbWVWaWV3Ojp1c2VTbG93UmVwYWludHNJZk5vdE92ZXJsYXBwZWQo
KSBjb25zdAogewotICAgIHJldHVybiBtX3VzZVNsb3dSZXBhaW50cyB8fCBtX3Nsb3dSZXBhaW50
T2JqZWN0Q291bnQgPiAwIHx8ICFtX2NvbnRlbnRJc09wYXF1ZTsKKyAgICByZXR1cm4gbV91c2VT
bG93UmVwYWludHMgfHwgbV9zbG93UmVwYWludE9iamVjdENvdW50ID4gMCB8fCAocGxhdGZvcm1X
aWRnZXQoKSAmJiBtX2ZpeGVkT2JqZWN0Q291bnQgPiAwKSB8fCAhbV9jb250ZW50SXNPcGFxdWU7
CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpzZXRVc2VTbG93UmVwYWludHMoKQpAQCAtODEzLDYgKzgx
NCw3NyBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKQogICAgICAg
ICBzZXRDYW5CbGl0T25TY3JvbGwoIXVzZVNsb3dSZXBhaW50cygpKTsKIH0KIAordm9pZCBGcmFt
ZVZpZXc6OmFkZEZpeGVkT2JqZWN0KCkKK3sKKyAgICBpZiAoIW1fZml4ZWRPYmplY3RDb3VudCAm
JiBwbGF0Zm9ybVdpZGdldCgpKQorICAgICAgICBzZXRDYW5CbGl0T25TY3JvbGwoZmFsc2UpOwor
ICAgICsrbV9maXhlZE9iamVjdENvdW50OworfQorCit2b2lkIEZyYW1lVmlldzo6cmVtb3ZlRml4
ZWRPYmplY3QoKQoreworICAgIEFTU0VSVChtX2ZpeGVkT2JqZWN0Q291bnQgPiAwKTsKKyAgICBt
X2ZpeGVkT2JqZWN0Q291bnQtLTsKKyAgICBpZiAoIW1fZml4ZWRPYmplY3RDb3VudCkKKyAgICAg
ICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCF1c2VTbG93UmVwYWludHMoKSk7Cit9CisKK3ZvaWQgRnJh
bWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRh
LCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQor
eworICAgIGNvbnN0IHNpemVfdCBmaXhlZE9iamVjdE51bWJlclRocmVzaG9sZCA9IDU7CisKKyAg
ICBMaXN0SGFzaFNldDxSZW5kZXJCb3gqPiogcG9zaXRpb25lZE9iamVjdHMgPSAwOworICAgIGlm
IChSZW5kZXJWaWV3KiByb290ID0gbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCisgICAgICAg
IHBvc2l0aW9uZWRPYmplY3RzID0gcm9vdC0+cG9zaXRpb25lZE9iamVjdHMoKTsKKworICAgIGlm
ICghcG9zaXRpb25lZE9iamVjdHMgfHwgcG9zaXRpb25lZE9iamVjdHMtPmlzRW1wdHkoKSkKKyAg
ICAgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xp
cFJlY3QpOworICAgIGVsc2UgeworICAgICAgICAvLyBHZXQgdGhlIHJlY3RzIG9mIHRoZSBmaXhl
ZCBvYmplY3RzIHZpc2libGUgaW4gdGhlIHJlY3RUb1Njcm9sbAorICAgICAgICBWZWN0b3I8SW50
UmVjdCwgZml4ZWRPYmplY3ROdW1iZXJUaHJlc2hvbGQ+IHN1YlJlY3RUb1VwZGF0ZTsKKyAgICAg
ICAgYm9vbCB1cGRhdGVJbnZhbGlkYXRlZFN1YlJlY3QgPSB0cnVlOworICAgICAgICBMaXN0SGFz
aFNldDxSZW5kZXJCb3gqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcG9zaXRpb25lZE9iamVjdHMt
PmVuZCgpOworICAgICAgICBmb3IgKExpc3RIYXNoU2V0PFJlbmRlckJveCo+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IHBvc2l0aW9uZWRPYmplY3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgICAgIFJlbmRlckJveCogciA9ICppdDsKKyAgICAgICAgICAgIGlmICghKHItPnN0
eWxlKCktPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBJbnRSZWN0IHRvcExldmVsUmVjdDsKKyAgICAgICAgICAgIElu
dFJlY3QgdXBkYXRlUmVjdCA9IHItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KTsKKyAg
ICAgICAgICAgIHVwZGF0ZVJlY3QubW92ZSgtc2Nyb2xsWCgpLCAtc2Nyb2xsWSgpKTsKKyAgICAg
ICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CisgICAgICAgICAgICBp
ZiAoIXVwZGF0ZVJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHN1YlJlY3RU
b1VwZGF0ZS5zaXplKCkgPj0gZml4ZWRPYmplY3ROdW1iZXJUaHJlc2hvbGQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdXBkYXRlSW52YWxpZGF0ZWRTdWJSZWN0ID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdWJS
ZWN0VG9VcGRhdGUuYXBwZW5kKHVwZGF0ZVJlY3QpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgLy8gU2Nyb2xsIHRoZSB2aWV3CisgICAgICAgIGlmICh1cGRhdGVJbnZhbGlk
YXRlZFN1YlJlY3QpIHsKKyAgICAgICAgICAgIC8vIDEpIHNjcm9sbAorICAgICAgICAgICAgaG9z
dFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOwor
CisgICAgICAgICAgICAvLyAyKSB1cGRhdGUgdGhlIGFyZWEgb2YgZml4ZWQgb2JqZXRzIHRoYXQg
aGFzIGJlZW4gaW52YWxpZGF0ZWQKKyAgICAgICAgICAgIHNpemVfdCBmaXhPYmplY3RzQ291bnQg
PSBzdWJSZWN0VG9VcGRhdGUuc2l6ZSgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmaXhPYmplY3RzQ291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIEludFJlY3QgdXBk
YXRlUmVjdCA9IHN1YlJlY3RUb1VwZGF0ZVtpXTsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHNj
cm9sbGVkUmVjdCA9IHVwZGF0ZVJlY3Q7CisgICAgICAgICAgICAgICAgc2Nyb2xsZWRSZWN0Lm1v
dmUoc2Nyb2xsRGVsdGEpOworICAgICAgICAgICAgICAgIHVwZGF0ZVJlY3QudW5pdGUoc2Nyb2xs
ZWRSZWN0KTsKKyAgICAgICAgICAgICAgICB1cGRhdGVSZWN0LmludGVyc2VjdChyZWN0VG9TY3Jv
bGwpOworICAgICAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+cmVwYWludCh1cGRhdGVSZWN0LCB0
cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAvLyB0aGUgbnVtYmVyIG9mIGZpeGVkIG9iamVjdHMgZXhjZWVkIHRoZSB0aHJlc2hv
bGQsIHNvIHdlIHJlcGFpbnQgZXZlcnl0aGluZy4KKyAgICAgICAgICAgIEludFJlY3QgdXBkYXRl
UmVjdCA9IGNsaXBSZWN0OworICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVjdFRv
U2Nyb2xsKTsKKyAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+cmVwYWludCh1cGRhdGVSZWN0LCB0
cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgRnJhbWVWaWV3
OjpzZXRJc092ZXJsYXBwZWQoYm9vbCBpc092ZXJsYXBwZWQpCiB7CiAgICAgaWYgKGlzT3Zlcmxh
cHBlZCA9PSBtX2lzT3ZlcmxhcHBlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaCBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiMjdmZmQ4Li5mZmVjZjVjIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCkBAIC0xNDUsNiArMTQ1LDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRkU2xvd1Jl
cGFpbnRPYmplY3QoKTsKICAgICB2b2lkIHJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KCk7CiAKKyAg
ICB2b2lkIGFkZEZpeGVkT2JqZWN0KCk7CisgICAgdm9pZCByZW1vdmVGaXhlZE9iamVjdCgpOwor
CiAgICAgdm9pZCBiZWdpbkRlZmVycmVkUmVwYWludHMoKTsKICAgICB2b2lkIGVuZERlZmVycmVk
UmVwYWludHMoKTsKICAgICB2b2lkIGNoZWNrU3RvcERlbGF5aW5nRGVmZXJyZWRSZXBhaW50cygp
OwpAQCAtMTk5LDYgKzIwMiw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRnJhbWVWaWV3U2Nyb2xs
Q29ybmVyKFJlbmRlclNjcm9sbGJhclBhcnQqIHNjcm9sbENvcm5lcikgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxDb3JuZXIgPT0gc2Nyb2xsQ29ybmVyOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlU2Ny
b2xsQ29ybmVyKCk7CiAKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQ29udGVu
dHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVj
dFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CisKIHByaXZhdGU6CiAgICAgRnJh
bWVWaWV3KEZyYW1lKik7CiAKQEAgLTI2OCw2ICsyNzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9pc092ZXJsYXBwZWQ7CiAgICAgYm9vbCBtX2NvbnRlbnRJc09wYXF1ZTsKICAgICB1bnNpZ25l
ZCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQ7CisgICAgdW5zaWduZWQgbV9maXhlZE9iamVjdENv
dW50OwogCiAgICAgaW50IG1fYm9yZGVyWCwgbV9ib3JkZXJZOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmNwcAppbmRleCBlNDI5MWNjLi4wMTU2NjgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAg
LTUxMyw3ICs1MTMsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKGNvbnN0IElu
dFNpemUmIHNjcm9sbERlbHRhKQogCiAgICAgaWYgKGNhbkJsaXRPblNjcm9sbCgpKSB7IC8vIFRo
ZSBtYWluIGZyYW1lIGNhbiBqdXN0IGJsaXQgdGhlIFdlYlZpZXcgd2luZG93CiAgICAgICAgLy8g
RklYTUU6IEZpbmQgYSB3YXkgdG8gYmxpdCBzdWJmcmFtZXMgd2l0aG91dCBibGl0dGluZyBvdmVy
bGFwcGluZyBjb250ZW50Ci0gICAgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoLXNjcm9sbERlbHRh
LCBzY3JvbGxWaWV3UmVjdCwgY2xpcFJlY3QpOworICAgICAgIHNjcm9sbENvbnRlbnRzRmFzdFBh
dGgoLXNjcm9sbERlbHRhLCBzY3JvbGxWaWV3UmVjdCwgY2xpcFJlY3QpOwogICAgIH0gZWxzZSB7
IAogICAgICAgIC8vIFdlIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHJlcGFpbnQgdGhlIGVudGlyZSBi
YWNraW5nIHN0b3JlLiAgRG8gaXQgbm93IGJlZm9yZSBtb3ZpbmcgdGhlCiAgICAgICAgLy8gd2lu
ZG93ZWQgcGx1Z2lucy4KQEAgLTUyOCw2ICs1MjgsMTEgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3Jv
bGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKICAgICBob3N0V2luZG93KCkt
PnBhaW50KCk7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChj
b25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBj
b25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3Jv
bGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7Cit9CisKIEludFBvaW50IFNjcm9sbFZp
ZXc6OndpbmRvd1RvQ29udGVudHMoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSBjb25zdAog
ewogICAgIEludFBvaW50IHZpZXdQb2ludCA9IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyh3
aW5kb3dQb2ludCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBi
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IGE3MTczYTcuLjZjYTI1ODEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oCkBAIC0yNDksNiArMjQ5LDkgQEAgcHJvdGVjdGVkOgogICAgIElu
dFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVT
Y3JvbGxDb3JuZXIoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CisKKyAgICAvLyBTY3JvbGwg
dGhlIGNvbnRlbnQgYnkgYmxpdHRpbmcgdGhlIHBpeGVscworICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRS
ZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKICAgICAKIHByaXZh
dGU6CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDFiZWE4ZTMuLjlmNmZhMTkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKQEAgLTIzMDMsNyArMjMwMyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJl
bW92ZVBvc2l0aW9uZWRPYmplY3RzKFJlbmRlckJsb2NrKiBvKQogICAgIH0KICAgICAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVhZE9iamVjdHMuc2l6ZSgpOyBpKyspCi0gICAgICAg
IG1fcG9zaXRpb25lZE9iamVjdHMtPnJlbW92ZShkZWFkT2JqZWN0cy5hdChpKSk7CisgICAgICAg
IHJlbW92ZVBvc2l0aW9uZWRPYmplY3QoZGVhZE9iamVjdHMuYXQoaSkpOwogfQogCiB2b2lkIFJl
bmRlckJsb2NrOjppbnNlcnRGbG9hdGluZ09iamVjdChSZW5kZXJCb3gqIG8pCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaAppbmRleCBkNzI1OWNlLi42MjYxYjhiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmgKQEAgLTcxLDkgKzcxLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRC
bG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4pOwogCi0gICAgdm9pZCBpbnNlcnRQb3NpdGlvbmVk
T2JqZWN0KFJlbmRlckJveCopOwotICAgIHZvaWQgcmVtb3ZlUG9zaXRpb25lZE9iamVjdChSZW5k
ZXJCb3gqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0UG9zaXRpb25lZE9iamVjdChSZW5kZXJC
b3gqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUG9zaXRpb25lZE9iamVjdChSZW5kZXJCb3gq
KTsKICAgICB2b2lkIHJlbW92ZVBvc2l0aW9uZWRPYmplY3RzKFJlbmRlckJsb2NrKik7CisgICAg
TGlzdEhhc2hTZXQ8UmVuZGVyQm94Kj4qIHBvc2l0aW9uZWRPYmplY3RzKCkgY29uc3QgeyByZXR1
cm4gbV9wb3NpdGlvbmVkT2JqZWN0czsgfQogCiAgICAgdm9pZCBhZGRQZXJjZW50SGVpZ2h0RGVz
Y2VuZGFudChSZW5kZXJCb3gqKTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmVQZXJjZW50SGVpZ2h0
RGVzY2VuZGFudChSZW5kZXJCb3gqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4
IGI2YTA4MTQuLjFiMjY1MjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTY0
OCw5ICsxNjQ4LDYgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1MKICAgICAgICAgc19hZmZlY3Rz
UGFyZW50QmxvY2sgPSBmYWxzZTsKIAogICAgIGlmICh2aWV3KCktPmZyYW1lVmlldygpKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBBIGJldHRlciBzb2x1dGlvbiB3b3VsZCBiZSB0byBvbmx5IGludmFs
aWRhdGUgdGhlIGZpeGVkIHJlZ2lvbnMgd2hlbiBzY3JvbGxpbmcuICBJdCdzIG92ZXJraWxsIHRv
Ci0gICAgICAgIC8vIHByZXZlbnQgdGhlIGVudGlyZSB2aWV3IGZyb20gYmxpdHRpbmcgb24gYSBz
Y3JvbGwuCi0KICAgICAgICAgYm9vbCBzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSA9
IGZhbHNlOwogI2lmIEVOQUJMRShGQVNUX01PQklMRV9TQ1JPTExJTkcpCiAgICAgICAgIC8vIE9u
IGxvdy1wb3dlcmVkL21vYmlsZSBkZXZpY2VzLCBwcmV2ZW50aW5nIGJsaXR0aW5nIG9uIGEgc2Ny
b2xsIGNhbiBjYXVzZSBub3RpY2VhYmxlIGRlbGF5cwpAQCAtMTY2MCwxMCArMTY1Nyw4IEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNv
bnN0IFJlbmRlclN0eWxlKiBuZXdTCiAgICAgICAgIHNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3Vu
ZEltYWdlID0gdHJ1ZTsKICNlbmRpZgogCi0gICAgICAgIGJvb2wgbmV3U3R5bGVTbG93U2Nyb2xs
ID0gbmV3U3R5bGUgJiYgKG5ld1N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCFzaG91bGRC
bGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAmJiBuZXdTdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5k
SW1hZ2UoKSkpOwotICAgICAgICBib29sIG9sZFN0eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYg
KG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoIXNob3VsZEJsaXRPbkZpeGVkQmFja2dy
b3VuZEltYWdlICYmIG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkpKTsKKyAgICAg
ICAgYm9vbCBuZXdTdHlsZVNsb3dTY3JvbGwgPSBuZXdTdHlsZSAmJiAhc2hvdWxkQmxpdE9uRml4
ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbmV3U3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCk7
CisgICAgICAgIGJvb2wgb2xkU3R5bGVTbG93U2Nyb2xsID0gbV9zdHlsZSAmJiAhc2hvdWxkQmxp
dE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1h
Z2UoKTsKICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9sbCAhPSBuZXdTdHlsZVNsb3dTY3Jv
bGwpIHsKICAgICAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwpCiAgICAgICAgICAgICAg
ICAgdmlldygpLT5mcmFtZVZpZXcoKS0+cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAKaW5kZXggNjlhMTE3My4uODZhNzEzMiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAKQEAgLTYyMCw2ICs2MjAsMjAgQEAgZmxvYXQgUmVuZGVyVmlldzo6em9vbUZh
Y3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIDEuMGY7CiB9CiAKK3ZvaWQgUmVuZGVyVmlldzo6aW5z
ZXJ0UG9zaXRpb25lZE9iamVjdChSZW5kZXJCb3gqIG8pCit7CisgICAgaWYgKG8tPnN0eWxlKCkt
PnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikKKyAgICAgICAgbV9mcmFtZVZpZXctPmFkZEZp
eGVkT2JqZWN0KCk7CisgICAgUmVuZGVyQmxvY2s6Omluc2VydFBvc2l0aW9uZWRPYmplY3Qobyk7
Cit9CisKK3ZvaWQgUmVuZGVyVmlldzo6cmVtb3ZlUG9zaXRpb25lZE9iamVjdChSZW5kZXJCb3gq
IG8pCit7CisgICAgaWYgKG8tPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikK
KyAgICAgICAgbV9mcmFtZVZpZXctPnJlbW92ZUZpeGVkT2JqZWN0KCk7CisgICAgUmVuZGVyQmxv
Y2s6OnJlbW92ZVBvc2l0aW9uZWRPYmplY3Qobyk7Cit9CisKIC8vIFRoZSBpZGVhIGhlcmUgaXMg
dG8gdGFrZSBpbnRvIGFjY291bnQgd2hhdCBvYmplY3QgaXMgbW92aW5nIHRoZSBwYWdpbmF0aW9u
IHBvaW50LCBhbmQKIC8vIHRodXMgY2hvb3NlIHRoZSBiZXN0IHBsYWNlIHRvIGNob3AgaXQuCiB2
b2lkIFJlbmRlclZpZXc6OnNldEJlc3RUcnVuY2F0ZWRBdChpbnQgeSwgUmVuZGVyQm94TW9kZWxP
YmplY3QqIGZvclJlbmRlcmVyLCBib29sIGZvcmNlZEJyZWFrKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5o
CmluZGV4IDFlMDA3ZTguLmNlYzkzOGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTU3LDYg
KzU3LDkgQEAgcHVibGljOgogCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcoKSBjb25zdCB7IHJl
dHVybiBtX2ZyYW1lVmlldzsgfQogCisgICAgdmlydHVhbCB2b2lkIGluc2VydFBvc2l0aW9uZWRP
YmplY3QoUmVuZGVyQm94Kik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVBvc2l0aW9uZWRPYmpl
Y3QoUmVuZGVyQm94Kik7CisKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBJbnRSZWN0JiwgYm9vbCBm
aXhlZCA9IGZhbHNlKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVwYWludFZpZXdSZWN0YW5nbGUoY29u
c3QgSW50UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOwogICAgIC8vIFJlcGFpbnQgdGhl
IHZpZXcsIGFuZCBhbGwgY29tcG9zaXRlZCBsYXllcnMgdGhhdCBpbnRlcnNlY3QgdGhlIGdpdmVu
IGFic29sdXRlIHJlY3RhbmdsZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47964</attachid>
            <date>2010-02-02 12:20:43 -0800</date>
            <delta_ts>2010-02-03 00:52:46 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>11702</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjJlNmI4MC4uN2FkZTYzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wMi0wMiAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIGZyYW1lIHZpZXcgdGFrZSBpbnRvIGFjb3VudCB0aGUgbGlzdCBvZiBmaXhlZCBvYmpl
Y3Qgd2hlbiBzY3JvbGxpbmcKKyAgICAgICAgdGhlIHZpZXcuIElmIHRoZSBudW1iZXIgb2Ygb2Jq
ZWN0IGlzIGxvd2VyIHRoYW4gYSBjZXJ0YWluIHRocmVzaG9sZCwgdGhlIHBpeGVsCisgICAgICAg
IGFyZSBibGl0dGVkLCBhbmQgdGhlIGludmFsaWRhdGVkIGFyZWEgdXBkYXRlZC4KKworICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6RnJh
bWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzSWZOb3RPdmVybGFw
cGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkRml4ZWRPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVGaXhlZE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOgorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25lZE9iamVjdHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UpOgorCiAy
MDEwLTAxLTMxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLiBSZXZlcnQgcjU0MTEyIGFuZCByNTQxMjQgYmVjYXVzZSBvZiBXaW5kb3dzIGJ1
aWxkIGVycm9yLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBkODM5ZTI2Li41ZGIxM2JkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcApAQCAtMTA4LDYgKzEwOCw3IEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3KEZyYW1lKiBmcmFt
ZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2NhbkhhdmVTY3JvbGxiYXJzKHRydWUp
CiAgICAgLCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQoMCkKKyAgICAsIG1fZml4ZWRPYmplY3RD
b3VudCgwKQogICAgICwgbV9sYXlvdXRUaW1lcih0aGlzLCAmRnJhbWVWaWV3OjpsYXlvdXRUaW1l
ckZpcmVkKQogICAgICwgbV9sYXlvdXRSb290KDApCiAgICAgLCBtX3Bvc3RMYXlvdXRUYXNrc1Rp
bWVyKHRoaXMsICZGcmFtZVZpZXc6OnBvc3RMYXlvdXRUaW1lckZpcmVkKQpAQCAtNzg0LDEyICs3
ODUsMTIgQEAgU3RyaW5nIEZyYW1lVmlldzo6bWVkaWFUeXBlKCkgY29uc3QKIAogYm9vbCBGcmFt
ZVZpZXc6OnVzZVNsb3dSZXBhaW50cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXNlU2xvd1Jl
cGFpbnRzIHx8IG1fc2xvd1JlcGFpbnRPYmplY3RDb3VudCA+IDAgfHwgbV9pc092ZXJsYXBwZWQg
fHwgIW1fY29udGVudElzT3BhcXVlOworICAgIHJldHVybiBtX3VzZVNsb3dSZXBhaW50cyB8fCBt
X3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8IChwbGF0Zm9ybVdpZGdldCgpICYmIG1fZml4
ZWRPYmplY3RDb3VudCA+IDApIHx8IG1faXNPdmVybGFwcGVkIHx8ICFtX2NvbnRlbnRJc09wYXF1
ZTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OnVzZVNsb3dSZXBhaW50c0lmTm90T3ZlcmxhcHBlZCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXNlU2xvd1JlcGFpbnRzIHx8IG1fc2xvd1JlcGFpbnRP
YmplY3RDb3VudCA+IDAgfHwgIW1fY29udGVudElzT3BhcXVlOworICAgIHJldHVybiBtX3VzZVNs
b3dSZXBhaW50cyB8fCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8IChwbGF0Zm9ybVdp
ZGdldCgpICYmIG1fZml4ZWRPYmplY3RDb3VudCA+IDApIHx8ICFtX2NvbnRlbnRJc09wYXF1ZTsK
IH0KIAogdm9pZCBGcmFtZVZpZXc6OnNldFVzZVNsb3dSZXBhaW50cygpCkBAIC04MTMsNiArODE0
LDc3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVTbG93UmVwYWludE9iamVjdCgpCiAgICAgICAg
IHNldENhbkJsaXRPblNjcm9sbCghdXNlU2xvd1JlcGFpbnRzKCkpOwogfQogCit2b2lkIEZyYW1l
Vmlldzo6YWRkRml4ZWRPYmplY3QoKQoreworICAgIGlmICghbV9maXhlZE9iamVjdENvdW50ICYm
IHBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHNldENhbkJsaXRPblNjcm9sbChmYWxzZSk7Cisg
ICAgKyttX2ZpeGVkT2JqZWN0Q291bnQ7Cit9CisKK3ZvaWQgRnJhbWVWaWV3OjpyZW1vdmVGaXhl
ZE9iamVjdCgpCit7CisgICAgQVNTRVJUKG1fZml4ZWRPYmplY3RDb3VudCA+IDApOworICAgIG1f
Zml4ZWRPYmplY3RDb3VudC0tOworICAgIGlmICghbV9maXhlZE9iamVjdENvdW50KQorICAgICAg
ICBzZXRDYW5CbGl0T25TY3JvbGwoIXVzZVNsb3dSZXBhaW50cygpKTsKK30KKwordm9pZCBGcmFt
ZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEs
IGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCit7
CisgICAgY29uc3Qgc2l6ZV90IGZpeGVkT2JqZWN0TnVtYmVyVGhyZXNob2xkID0gNTsKKworICAg
IExpc3RIYXNoU2V0PFJlbmRlckJveCo+KiBwb3NpdGlvbmVkT2JqZWN0cyA9IDA7CisgICAgaWYg
KFJlbmRlclZpZXcqIHJvb3QgPSBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKKyAgICAgICAg
cG9zaXRpb25lZE9iamVjdHMgPSByb290LT5wb3NpdGlvbmVkT2JqZWN0cygpOworCisgICAgaWYg
KCFwb3NpdGlvbmVkT2JqZWN0cyB8fCBwb3NpdGlvbmVkT2JqZWN0cy0+aXNFbXB0eSgpKQorICAg
ICAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlw
UmVjdCk7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEdldCB0aGUgcmVjdHMgb2YgdGhlIGZpeGVk
IG9iamVjdHMgdmlzaWJsZSBpbiB0aGUgcmVjdFRvU2Nyb2xsCisgICAgICAgIFZlY3RvcjxJbnRS
ZWN0LCBmaXhlZE9iamVjdE51bWJlclRocmVzaG9sZD4gc3ViUmVjdFRvVXBkYXRlOworICAgICAg
ICBib29sIHVwZGF0ZUludmFsaWRhdGVkU3ViUmVjdCA9IHRydWU7CisgICAgICAgIExpc3RIYXNo
U2V0PFJlbmRlckJveCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwb3NpdGlvbmVkT2JqZWN0cy0+
ZW5kKCk7CisgICAgICAgIGZvciAoTGlzdEhhc2hTZXQ8UmVuZGVyQm94Kj46OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gcG9zaXRpb25lZE9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgICAgICAgICAgUmVuZGVyQm94KiByID0gKml0OworICAgICAgICAgICAgaWYgKCEoci0+c3R5
bGUoKS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIEludFJlY3QgdG9wTGV2ZWxSZWN0OworICAgICAgICAgICAgSW50
UmVjdCB1cGRhdGVSZWN0ID0gci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpOworICAg
ICAgICAgICAgdXBkYXRlUmVjdC5tb3ZlKC1zY3JvbGxYKCksIC1zY3JvbGxZKCkpOworICAgICAg
ICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVjdFRvU2Nyb2xsKTsKKyAgICAgICAgICAgIGlm
ICghdXBkYXRlUmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3ViUmVjdFRv
VXBkYXRlLnNpemUoKSA+PSBmaXhlZE9iamVjdE51bWJlclRocmVzaG9sZCkgeworICAgICAgICAg
ICAgICAgICAgICB1cGRhdGVJbnZhbGlkYXRlZFN1YlJlY3QgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN1YlJl
Y3RUb1VwZGF0ZS5hcHBlbmQodXBkYXRlUmVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICAvLyBTY3JvbGwgdGhlIHZpZXcKKyAgICAgICAgaWYgKHVwZGF0ZUludmFsaWRh
dGVkU3ViUmVjdCkgeworICAgICAgICAgICAgLy8gMSkgc2Nyb2xsCisgICAgICAgICAgICBob3N0
V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7CisK
KyAgICAgICAgICAgIC8vIDIpIHVwZGF0ZSB0aGUgYXJlYSBvZiBmaXhlZCBvYmpldHMgdGhhdCBo
YXMgYmVlbiBpbnZhbGlkYXRlZAorICAgICAgICAgICAgc2l6ZV90IGZpeE9iamVjdHNDb3VudCA9
IHN1YlJlY3RUb1VwZGF0ZS5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZpeE9iamVjdHNDb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCB1cGRh
dGVSZWN0ID0gc3ViUmVjdFRvVXBkYXRlW2ldOworICAgICAgICAgICAgICAgIEludFJlY3Qgc2Ny
b2xsZWRSZWN0ID0gdXBkYXRlUmVjdDsKKyAgICAgICAgICAgICAgICBzY3JvbGxlZFJlY3QubW92
ZShzY3JvbGxEZWx0YSk7CisgICAgICAgICAgICAgICAgdXBkYXRlUmVjdC51bml0ZShzY3JvbGxl
ZFJlY3QpOworICAgICAgICAgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9s
bCk7CisgICAgICAgICAgICAgICAgaG9zdFdpbmRvdygpLT5yZXBhaW50KHVwZGF0ZVJlY3QsIHRy
dWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIHRoZSBudW1iZXIgb2YgZml4ZWQgb2JqZWN0cyBleGNlZWQgdGhlIHRocmVzaG9s
ZCwgc28gd2UgcmVwYWludCBldmVyeXRoaW5nLgorICAgICAgICAgICAgSW50UmVjdCB1cGRhdGVS
ZWN0ID0gY2xpcFJlY3Q7CisgICAgICAgICAgICB1cGRhdGVSZWN0LmludGVyc2VjdChyZWN0VG9T
Y3JvbGwpOworICAgICAgICAgICAgaG9zdFdpbmRvdygpLT5yZXBhaW50KHVwZGF0ZVJlY3QsIHRy
dWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBGcmFtZVZpZXc6
OnNldElzT3ZlcmxhcHBlZChib29sIGlzT3ZlcmxhcHBlZCkKIHsKICAgICBpZiAoaXNPdmVybGFw
cGVkID09IG1faXNPdmVybGFwcGVkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGIyN2ZmZDguLmZmZWNmNWMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKQEAgLTE0NSw2ICsxNDUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTbG93UmVw
YWludE9iamVjdCgpOwogICAgIHZvaWQgcmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKTsKIAorICAg
IHZvaWQgYWRkRml4ZWRPYmplY3QoKTsKKyAgICB2b2lkIHJlbW92ZUZpeGVkT2JqZWN0KCk7CisK
ICAgICB2b2lkIGJlZ2luRGVmZXJyZWRSZXBhaW50cygpOwogICAgIHZvaWQgZW5kRGVmZXJyZWRS
ZXBhaW50cygpOwogICAgIHZvaWQgY2hlY2tTdG9wRGVsYXlpbmdEZWZlcnJlZFJlcGFpbnRzKCk7
CkBAIC0xOTksNiArMjAyLDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNGcmFtZVZpZXdTY3JvbGxD
b3JuZXIoUmVuZGVyU2Nyb2xsYmFyUGFydCogc2Nyb2xsQ29ybmVyKSBjb25zdCB7IHJldHVybiBt
X3Njcm9sbENvcm5lciA9PSBzY3JvbGxDb3JuZXI7IH0KICAgICB2b2lkIGludmFsaWRhdGVTY3Jv
bGxDb3JuZXIoKTsKIAorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxDb250ZW50
c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0
VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKwogcHJpdmF0ZToKICAgICBGcmFt
ZVZpZXcoRnJhbWUqKTsKIApAQCAtMjY4LDYgKzI3NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzT3ZlcmxhcHBlZDsKICAgICBib29sIG1fY29udGVudElzT3BhcXVlOwogICAgIHVuc2lnbmVk
IG1fc2xvd1JlcGFpbnRPYmplY3RDb3VudDsKKyAgICB1bnNpZ25lZCBtX2ZpeGVkT2JqZWN0Q291
bnQ7CiAKICAgICBpbnQgbV9ib3JkZXJYLCBtX2JvcmRlclk7CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwCmluZGV4IGU0MjkxY2MuLjAxNTY2ODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAt
NTEzLDcgKzUxMyw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMoY29uc3QgSW50
U2l6ZSYgc2Nyb2xsRGVsdGEpCiAKICAgICBpZiAoY2FuQmxpdE9uU2Nyb2xsKCkpIHsgLy8gVGhl
IG1haW4gZnJhbWUgY2FuIGp1c3QgYmxpdCB0aGUgV2ViVmlldyB3aW5kb3cKICAgICAgICAvLyBG
SVhNRTogRmluZCBhIHdheSB0byBibGl0IHN1YmZyYW1lcyB3aXRob3V0IGJsaXR0aW5nIG92ZXJs
YXBwaW5nIGNvbnRlbnQKLSAgICAgICBob3N0V2luZG93KCktPnNjcm9sbCgtc2Nyb2xsRGVsdGEs
IHNjcm9sbFZpZXdSZWN0LCBjbGlwUmVjdCk7CisgICAgICAgc2Nyb2xsQ29udGVudHNGYXN0UGF0
aCgtc2Nyb2xsRGVsdGEsIHNjcm9sbFZpZXdSZWN0LCBjbGlwUmVjdCk7CiAgICAgfSBlbHNlIHsg
CiAgICAgICAgLy8gV2UgbmVlZCB0byBnbyBhaGVhZCBhbmQgcmVwYWludCB0aGUgZW50aXJlIGJh
Y2tpbmcgc3RvcmUuICBEbyBpdCBub3cgYmVmb3JlIG1vdmluZyB0aGUKICAgICAgICAvLyB3aW5k
b3dlZCBwbHVnaW5zLgpAQCAtNTI4LDYgKzUyOCwxMSBAQCB2b2lkIFNjcm9sbFZpZXc6OnNjcm9s
bENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQogICAgIGhvc3RXaW5kb3coKS0+
cGFpbnQoKTsKIH0KIAordm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNv
bnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNv
bnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9s
bERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKK30KKwogSW50UG9pbnQgU2Nyb2xsVmll
dzo6d2luZG93VG9Db250ZW50cyhjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpIGNvbnN0CiB7
CiAgICAgSW50UG9pbnQgdmlld1BvaW50ID0gY29udmVydEZyb21Db250YWluaW5nV2luZG93KHdp
bmRvd1BvaW50KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggYTcxNzNhNy4uNmNhMjU4MSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTI0OSw2ICsyNDksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgSW50
UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNj
cm9sbENvcm5lcigpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKKworICAgIC8vIFNjcm9sbCB0
aGUgY29udGVudCBieSBibGl0dGluZyB0aGUgcGl4ZWxzCisgICAgdmlydHVhbCB2b2lkIHNjcm9s
bENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJl
Y3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwogICAgIAogcHJpdmF0
ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hvcml6b250YWxTY3JvbGxiYXI7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaAppbmRleCBkNzI1OWNlLi5lN2U2MTk4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmgKQEAgLTc0LDYgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0UG9zaXRpb25l
ZE9iamVjdChSZW5kZXJCb3gqKTsKICAgICB2b2lkIHJlbW92ZVBvc2l0aW9uZWRPYmplY3QoUmVu
ZGVyQm94Kik7CiAgICAgdm9pZCByZW1vdmVQb3NpdGlvbmVkT2JqZWN0cyhSZW5kZXJCbG9jayop
OworICAgIExpc3RIYXNoU2V0PFJlbmRlckJveCo+KiBwb3NpdGlvbmVkT2JqZWN0cygpIGNvbnN0
IHsgcmV0dXJuIG1fcG9zaXRpb25lZE9iamVjdHM7IH0KIAogICAgIHZvaWQgYWRkUGVyY2VudEhl
aWdodERlc2NlbmRhbnQoUmVuZGVyQm94Kik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlUGVyY2Vu
dEhlaWdodERlc2NlbmRhbnQoUmVuZGVyQm94Kik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRl
eCA0YTNmYTMxLi5jZmUxYjYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTE0Niw2ICsx
NDYsMTYgQEAgdm9pZCBSZW5kZXJCb3g6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2Ug
ZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWwKICAgICAgICAgICAgICAgICByZW1vdmVG
bG9hdGluZ09yUG9zaXRpb25lZENoaWxkRnJvbUJsb2NrTGlzdHMoKTsKICAgICAgICAgfQogICAg
IH0KKyAgICBpZiAoRnJhbWVWaWV3ICpmcmFtZVZpZXcgPSB2aWV3KCktPmZyYW1lVmlldygpKSB7
CisgICAgICAgIGJvb2wgbmV3U3R5bGVJc0ZpeGVkID0gbmV3U3R5bGUgJiYgbmV3U3R5bGUtPnBv
c2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbjsKKyAgICAgICAgYm9vbCBvbGRTdHlsZUlzRml4ZWQg
PSBzdHlsZSgpICYmIHN0eWxlKCktPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbjsKKyAgICAg
ICAgaWYgKG5ld1N0eWxlSXNGaXhlZCAhPSBvbGRTdHlsZUlzRml4ZWQpIHsKKyAgICAgICAgICAg
IGlmIChuZXdTdHlsZUlzRml4ZWQpCisgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5hZGRGaXhl
ZE9iamVjdCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+
cmVtb3ZlRml4ZWRPYmplY3QoKTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoZGlmZiwgbmV3U3R5bGUpOwogfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKaW5kZXggYjZhMDgxNC4uMWIyNjUyOSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCkBAIC0xNjQ4LDkgKzE2NDgsNiBAQCB2b2lkIFJlbmRlck9iamVjdDo6
c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSog
bmV3UwogICAgICAgICBzX2FmZmVjdHNQYXJlbnRCbG9jayA9IGZhbHNlOwogCiAgICAgaWYgKHZp
ZXcoKS0+ZnJhbWVWaWV3KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IEEgYmV0dGVyIHNvbHV0aW9u
IHdvdWxkIGJlIHRvIG9ubHkgaW52YWxpZGF0ZSB0aGUgZml4ZWQgcmVnaW9ucyB3aGVuIHNjcm9s
bGluZy4gIEl0J3Mgb3ZlcmtpbGwgdG8KLSAgICAgICAgLy8gcHJldmVudCB0aGUgZW50aXJlIHZp
ZXcgZnJvbSBibGl0dGluZyBvbiBhIHNjcm9sbC4KLQogICAgICAgICBib29sIHNob3VsZEJsaXRP
bkZpeGVkQmFja2dyb3VuZEltYWdlID0gZmFsc2U7CiAjaWYgRU5BQkxFKEZBU1RfTU9CSUxFX1ND
Uk9MTElORykKICAgICAgICAgLy8gT24gbG93LXBvd2VyZWQvbW9iaWxlIGRldmljZXMsIHByZXZl
bnRpbmcgYmxpdHRpbmcgb24gYSBzY3JvbGwgY2FuIGNhdXNlIG5vdGljZWFibGUgZGVsYXlzCkBA
IC0xNjYwLDEwICsxNjU3LDggQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShT
dHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1MKICAgICAgICAgc2hv
dWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgPSB0cnVlOwogI2VuZGlmCiAKLSAgICAgICAg
Ym9vbCBuZXdTdHlsZVNsb3dTY3JvbGwgPSBuZXdTdHlsZSAmJiAobmV3U3R5bGUtPnBvc2l0aW9u
KCkgPT0gRml4ZWRQb3NpdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8fCAoIXNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG5ld1N0
eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpKSk7Ci0gICAgICAgIGJvb2wgb2xkU3R5bGVT
bG93U2Nyb2xsID0gbV9zdHlsZSAmJiAobV9zdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0
aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgh
c2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbV9zdHlsZS0+aGFzRml4ZWRCYWNr
Z3JvdW5kSW1hZ2UoKSkpOworICAgICAgICBib29sIG5ld1N0eWxlU2xvd1Njcm9sbCA9IG5ld1N0
eWxlICYmICFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAmJiBuZXdTdHlsZS0+aGFz
Rml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKKyAgICAgICAgYm9vbCBvbGRTdHlsZVNsb3dTY3JvbGwg
PSBtX3N0eWxlICYmICFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAmJiBtX3N0eWxl
LT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpOwogICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Ny
b2xsICE9IG5ld1N0eWxlU2xvd1Njcm9sbCkgewogICAgICAgICAgICAgaWYgKG9sZFN0eWxlU2xv
d1Njcm9sbCkKICAgICAgICAgICAgICAgICB2aWV3KCktPmZyYW1lVmlldygpLT5yZW1vdmVTbG93
UmVwYWludE9iamVjdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48001</attachid>
            <date>2010-02-03 00:52:46 -0800</date>
            <delta_ts>2010-04-06 23:44:33 -0700</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>11554</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjJlNmI4MC4uN2FkZTYzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wMi0wMiAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIGZyYW1lIHZpZXcgdGFrZSBpbnRvIGFjb3VudCB0aGUgbGlzdCBvZiBmaXhlZCBvYmpl
Y3Qgd2hlbiBzY3JvbGxpbmcKKyAgICAgICAgdGhlIHZpZXcuIElmIHRoZSBudW1iZXIgb2Ygb2Jq
ZWN0IGlzIGxvd2VyIHRoYW4gYSBjZXJ0YWluIHRocmVzaG9sZCwgdGhlIHBpeGVsCisgICAgICAg
IGFyZSBibGl0dGVkLCBhbmQgdGhlIGludmFsaWRhdGVkIGFyZWEgdXBkYXRlZC4KKworICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6RnJh
bWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzSWZOb3RPdmVybGFw
cGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkRml4ZWRPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVGaXhlZE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOgorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25lZE9iamVjdHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UpOgorCiAy
MDEwLTAxLTMxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLiBSZXZlcnQgcjU0MTEyIGFuZCByNTQxMjQgYmVjYXVzZSBvZiBXaW5kb3dzIGJ1
aWxkIGVycm9yLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBkODM5ZTI2Li45OGQ5ZmFmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcApAQCAtMTA4LDYgKzEwOCw3IEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3KEZyYW1lKiBmcmFt
ZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2NhbkhhdmVTY3JvbGxiYXJzKHRydWUp
CiAgICAgLCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQoMCkKKyAgICAsIG1fZml4ZWRPYmplY3RD
b3VudCgwKQogICAgICwgbV9sYXlvdXRUaW1lcih0aGlzLCAmRnJhbWVWaWV3OjpsYXlvdXRUaW1l
ckZpcmVkKQogICAgICwgbV9sYXlvdXRSb290KDApCiAgICAgLCBtX3Bvc3RMYXlvdXRUYXNrc1Rp
bWVyKHRoaXMsICZGcmFtZVZpZXc6OnBvc3RMYXlvdXRUaW1lckZpcmVkKQpAQCAtNzg0LDEyICs3
ODUsMTIgQEAgU3RyaW5nIEZyYW1lVmlldzo6bWVkaWFUeXBlKCkgY29uc3QKIAogYm9vbCBGcmFt
ZVZpZXc6OnVzZVNsb3dSZXBhaW50cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXNlU2xvd1Jl
cGFpbnRzIHx8IG1fc2xvd1JlcGFpbnRPYmplY3RDb3VudCA+IDAgfHwgbV9pc092ZXJsYXBwZWQg
fHwgIW1fY29udGVudElzT3BhcXVlOworICAgIHJldHVybiBtX3VzZVNsb3dSZXBhaW50cyB8fCBt
X3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8IChwbGF0Zm9ybVdpZGdldCgpICYmIG1fZml4
ZWRPYmplY3RDb3VudCA+IDApIHx8IG1faXNPdmVybGFwcGVkIHx8ICFtX2NvbnRlbnRJc09wYXF1
ZTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OnVzZVNsb3dSZXBhaW50c0lmTm90T3ZlcmxhcHBlZCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXNlU2xvd1JlcGFpbnRzIHx8IG1fc2xvd1JlcGFpbnRP
YmplY3RDb3VudCA+IDAgfHwgIW1fY29udGVudElzT3BhcXVlOworICAgIHJldHVybiBtX3VzZVNs
b3dSZXBhaW50cyB8fCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8IChwbGF0Zm9ybVdp
ZGdldCgpICYmIG1fZml4ZWRPYmplY3RDb3VudCA+IDApIHx8ICFtX2NvbnRlbnRJc09wYXF1ZTsK
IH0KIAogdm9pZCBGcmFtZVZpZXc6OnNldFVzZVNsb3dSZXBhaW50cygpCkBAIC04MTMsNiArODE0
LDc4IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVTbG93UmVwYWludE9iamVjdCgpCiAgICAgICAg
IHNldENhbkJsaXRPblNjcm9sbCghdXNlU2xvd1JlcGFpbnRzKCkpOwogfQogCit2b2lkIEZyYW1l
Vmlldzo6YWRkRml4ZWRPYmplY3QoKQoreworICAgIGlmICghbV9maXhlZE9iamVjdENvdW50ICYm
IHBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHNldENhbkJsaXRPblNjcm9sbChmYWxzZSk7Cisg
ICAgKyttX2ZpeGVkT2JqZWN0Q291bnQ7Cit9CisKK3ZvaWQgRnJhbWVWaWV3OjpyZW1vdmVGaXhl
ZE9iamVjdCgpCit7CisgICAgQVNTRVJUKG1fZml4ZWRPYmplY3RDb3VudCA+IDApOworICAgIG1f
Zml4ZWRPYmplY3RDb3VudC0tOworICAgIGlmICghbV9maXhlZE9iamVjdENvdW50KQorICAgICAg
ICBzZXRDYW5CbGl0T25TY3JvbGwoIXVzZVNsb3dSZXBhaW50cygpKTsKK30KKwordm9pZCBGcmFt
ZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEs
IGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCit7
CisgICAgY29uc3Qgc2l6ZV90IGZpeGVkT2JqZWN0VGhyZXNob2xkID0gNTsKKworICAgIExpc3RI
YXNoU2V0PFJlbmRlckJveCo+KiBwb3NpdGlvbmVkT2JqZWN0cyA9IDA7CisgICAgaWYgKFJlbmRl
clZpZXcqIHJvb3QgPSBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgcG9zaXRp
b25lZE9iamVjdHMgPSByb290LT5wb3NpdGlvbmVkT2JqZWN0cygpOworCisgICAgaWYgKCFwb3Np
dGlvbmVkT2JqZWN0cyB8fCBwb3NpdGlvbmVkT2JqZWN0cy0+aXNFbXB0eSgpKSB7CisgICAgICAg
IGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEdldCB0aGUgcmVjdHMgb2YgdGhl
IGZpeGVkIG9iamVjdHMgdmlzaWJsZSBpbiB0aGUgcmVjdFRvU2Nyb2xsCisgICAgVmVjdG9yPElu
dFJlY3QsIGZpeGVkT2JqZWN0VGhyZXNob2xkPiBzdWJSZWN0VG9VcGRhdGU7CisgICAgYm9vbCB1
cGRhdGVJbnZhbGlkYXRlZFN1YlJlY3QgPSB0cnVlOworICAgIExpc3RIYXNoU2V0PFJlbmRlckJv
eCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwb3NpdGlvbmVkT2JqZWN0cy0+ZW5kKCk7CisgICAg
Zm9yIChMaXN0SGFzaFNldDxSZW5kZXJCb3gqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwb3NpdGlv
bmVkT2JqZWN0cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJlbmRlckJv
eCogcmVuZGVyQm94ID0gKml0OworICAgICAgICBpZiAocmVuZGVyQm94LT5zdHlsZSgpLT5wb3Np
dGlvbigpICE9IEZpeGVkUG9zaXRpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
SW50UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IHJlbmRl
ckJveC0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpOworICAgICAgICB1cGRhdGVSZWN0
Lm1vdmUoLXNjcm9sbFgoKSwgLXNjcm9sbFkoKSk7CisgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJz
ZWN0KHJlY3RUb1Njcm9sbCk7CisgICAgICAgIGlmICghdXBkYXRlUmVjdC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIGlmIChzdWJSZWN0VG9VcGRhdGUuc2l6ZSgpID49IGZpeGVkT2JqZWN0VGhy
ZXNob2xkKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlSW52YWxpZGF0ZWRTdWJSZWN0ID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBz
dWJSZWN0VG9VcGRhdGUuYXBwZW5kKHVwZGF0ZVJlY3QpOworICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gU2Nyb2xsIHRoZSB2aWV3CisgICAgaWYgKHVwZGF0ZUludmFsaWRhdGVkU3ViUmVjdCkg
eworICAgICAgICAvLyAxKSBzY3JvbGwKKyAgICAgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Ny
b2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworCisgICAgICAgIC8vIDIpIHVwZGF0
ZSB0aGUgYXJlYSBvZiBmaXhlZCBvYmpldHMgdGhhdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAorICAg
ICAgICBzaXplX3QgZml4T2JqZWN0c0NvdW50ID0gc3ViUmVjdFRvVXBkYXRlLnNpemUoKTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaXhPYmplY3RzQ291bnQ7ICsraSkgeworICAg
ICAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gc3ViUmVjdFRvVXBkYXRlW2ldOworICAgICAg
ICAgICAgSW50UmVjdCBzY3JvbGxlZFJlY3QgPSB1cGRhdGVSZWN0OworICAgICAgICAgICAgc2Ny
b2xsZWRSZWN0Lm1vdmUoc2Nyb2xsRGVsdGEpOworICAgICAgICAgICAgdXBkYXRlUmVjdC51bml0
ZShzY3JvbGxlZFJlY3QpOworICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVjdFRv
U2Nyb2xsKTsKKyAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+cmVwYWludCh1cGRhdGVSZWN0LCB0
cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyB0
aGUgbnVtYmVyIG9mIGZpeGVkIG9iamVjdHMgZXhjZWVkIHRoZSB0aHJlc2hvbGQsIHNvIHdlIHJl
cGFpbnQgZXZlcnl0aGluZy4KKyAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gY2xpcFJlY3Q7
CisgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CisgICAgICAgIGhv
c3RXaW5kb3coKS0+cmVwYWludCh1cGRhdGVSZWN0LCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAg
fQorfQorCiB2b2lkIEZyYW1lVmlldzo6c2V0SXNPdmVybGFwcGVkKGJvb2wgaXNPdmVybGFwcGVk
KQogewogICAgIGlmIChpc092ZXJsYXBwZWQgPT0gbV9pc092ZXJsYXBwZWQpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5k
ZXggYjI3ZmZkOC4uZmZlY2Y1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMTQ1LDYgKzE0NSw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZFNsb3dSZXBhaW50T2JqZWN0KCk7CiAgICAgdm9pZCByZW1vdmVTbG93
UmVwYWludE9iamVjdCgpOwogCisgICAgdm9pZCBhZGRGaXhlZE9iamVjdCgpOworICAgIHZvaWQg
cmVtb3ZlRml4ZWRPYmplY3QoKTsKKwogICAgIHZvaWQgYmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7
CiAgICAgdm9pZCBlbmREZWZlcnJlZFJlcGFpbnRzKCk7CiAgICAgdm9pZCBjaGVja1N0b3BEZWxh
eWluZ0RlZmVycmVkUmVwYWludHMoKTsKQEAgLTE5OSw2ICsyMDIsOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0ZyYW1lVmlld1Njcm9sbENvcm5lcihSZW5kZXJTY3JvbGxiYXJQYXJ0KiBzY3JvbGxD
b3JuZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29ybmVyID09IHNjcm9sbENvcm5lcjsgfQog
ICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lcigpOwogCitwcm90ZWN0ZWQ6CisgICAgdmly
dHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3Qp
OworCiBwcml2YXRlOgogICAgIEZyYW1lVmlldyhGcmFtZSopOwogCkBAIC0yNjgsNiArMjc0LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faXNPdmVybGFwcGVkOwogICAgIGJvb2wgbV9jb250ZW50
SXNPcGFxdWU7CiAgICAgdW5zaWduZWQgbV9zbG93UmVwYWludE9iamVjdENvdW50OworICAgIHVu
c2lnbmVkIG1fZml4ZWRPYmplY3RDb3VudDsKIAogICAgIGludCBtX2JvcmRlclgsIG1fYm9yZGVy
WTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggZTQyOTFjYy4uMDE1NjY4MCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwCkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojpz
Y3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKIAogICAgIGlmIChjYW5C
bGl0T25TY3JvbGwoKSkgeyAvLyBUaGUgbWFpbiBmcmFtZSBjYW4ganVzdCBibGl0IHRoZSBXZWJW
aWV3IHdpbmRvdwogICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGJsaXQgc3ViZnJhbWVz
IHdpdGhvdXQgYmxpdHRpbmcgb3ZlcmxhcHBpbmcgY29udGVudAotICAgICAgIGhvc3RXaW5kb3co
KS0+c2Nyb2xsKC1zY3JvbGxEZWx0YSwgc2Nyb2xsVmlld1JlY3QsIGNsaXBSZWN0KTsKKyAgICAg
ICBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKC1zY3JvbGxEZWx0YSwgc2Nyb2xsVmlld1JlY3QsIGNs
aXBSZWN0KTsKICAgICB9IGVsc2UgeyAKICAgICAgICAvLyBXZSBuZWVkIHRvIGdvIGFoZWFkIGFu
ZCByZXBhaW50IHRoZSBlbnRpcmUgYmFja2luZyBzdG9yZS4gIERvIGl0IG5vdyBiZWZvcmUgbW92
aW5nIHRoZQogICAgICAgIC8vIHdpbmRvd2VkIHBsdWdpbnMuCkBAIC01MjgsNiArNTI4LDExIEBA
IHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEpCiAgICAgaG9zdFdpbmRvdygpLT5wYWludCgpOwogfQogCit2b2lkIFNjcm9sbFZpZXc6OnNj
cm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IElu
dFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCit7CisgICAgaG9z
dFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOwor
fQorCiBJbnRQb2ludCBTY3JvbGxWaWV3Ojp3aW5kb3dUb0NvbnRlbnRzKGNvbnN0IEludFBvaW50
JiB3aW5kb3dQb2ludCkgY29uc3QKIHsKICAgICBJbnRQb2ludCB2aWV3UG9pbnQgPSBjb252ZXJ0
RnJvbUNvbnRhaW5pbmdXaW5kb3cod2luZG93UG9pbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRl
eCBhNzE3M2E3Li42Y2EyNTgxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtMjQ5LDYgKzI0OSw5
IEBAIHByb3RlY3RlZDoKICAgICBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsQ29ybmVyKCk7CiAgICAgdmlydHVhbCB2b2lkIHBh
aW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJl
Y3QpOworCisgICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5IGJsaXR0aW5nIHRoZSBwaXhlbHMK
KyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCk7CiAgICAgCiBwcml2YXRlOgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faG9yaXpv
bnRhbFNjcm9sbGJhcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGQ3MjU5Y2UuLmU3ZTYx
OTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbnNlcnRQb3NpdGlvbmVkT2JqZWN0KFJlbmRlckJveCopOwogICAgIHZvaWQgcmVt
b3ZlUG9zaXRpb25lZE9iamVjdChSZW5kZXJCb3gqKTsKICAgICB2b2lkIHJlbW92ZVBvc2l0aW9u
ZWRPYmplY3RzKFJlbmRlckJsb2NrKik7CisgICAgTGlzdEhhc2hTZXQ8UmVuZGVyQm94Kj4qIHBv
c2l0aW9uZWRPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbmVkT2JqZWN0czsgfQog
CiAgICAgdm9pZCBhZGRQZXJjZW50SGVpZ2h0RGVzY2VuZGFudChSZW5kZXJCb3gqKTsKICAgICBz
dGF0aWMgdm9pZCByZW1vdmVQZXJjZW50SGVpZ2h0RGVzY2VuZGFudChSZW5kZXJCb3gqKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDRhM2ZhMzEuLmNmZTFiNjIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcApAQCAtMTQ2LDYgKzE0NiwxNiBAQCB2b2lkIFJlbmRlckJveDo6c3R5bGVXaWxs
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bAog
ICAgICAgICAgICAgICAgIHJlbW92ZUZsb2F0aW5nT3JQb3NpdGlvbmVkQ2hpbGRGcm9tQmxvY2tM
aXN0cygpOwogICAgICAgICB9CiAgICAgfQorICAgIGlmIChGcmFtZVZpZXcgKmZyYW1lVmlldyA9
IHZpZXcoKS0+ZnJhbWVWaWV3KCkpIHsKKyAgICAgICAgYm9vbCBuZXdTdHlsZUlzRml4ZWQgPSBu
ZXdTdHlsZSAmJiBuZXdTdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uOworICAgICAg
ICBib29sIG9sZFN0eWxlSXNGaXhlZCA9IHN0eWxlKCkgJiYgc3R5bGUoKS0+cG9zaXRpb24oKSA9
PSBGaXhlZFBvc2l0aW9uOworICAgICAgICBpZiAobmV3U3R5bGVJc0ZpeGVkICE9IG9sZFN0eWxl
SXNGaXhlZCkgeworICAgICAgICAgICAgaWYgKG5ld1N0eWxlSXNGaXhlZCkKKyAgICAgICAgICAg
ICAgICBmcmFtZVZpZXctPmFkZEZpeGVkT2JqZWN0KCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgZnJhbWVWaWV3LT5yZW1vdmVGaXhlZE9iamVjdCgpOworICAgICAgICB9Cisg
ICAgfQogCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShkaWZmLCBu
ZXdTdHlsZSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBiNmEwODE0Li4x
YjI2NTI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE2NDgsOSArMTY0OCw2
IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTCiAgICAgICAgIHNfYWZmZWN0c1BhcmVudEJsb2Nr
ID0gZmFsc2U7CiAKICAgICBpZiAodmlldygpLT5mcmFtZVZpZXcoKSkgewotICAgICAgICAvLyBG
SVhNRTogQSBiZXR0ZXIgc29sdXRpb24gd291bGQgYmUgdG8gb25seSBpbnZhbGlkYXRlIHRoZSBm
aXhlZCByZWdpb25zIHdoZW4gc2Nyb2xsaW5nLiAgSXQncyBvdmVya2lsbCB0bwotICAgICAgICAv
LyBwcmV2ZW50IHRoZSBlbnRpcmUgdmlldyBmcm9tIGJsaXR0aW5nIG9uIGEgc2Nyb2xsLgotCiAg
ICAgICAgIGJvb2wgc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgPSBmYWxzZTsKICNp
ZiBFTkFCTEUoRkFTVF9NT0JJTEVfU0NST0xMSU5HKQogICAgICAgICAvLyBPbiBsb3ctcG93ZXJl
ZC9tb2JpbGUgZGV2aWNlcywgcHJldmVudGluZyBibGl0dGluZyBvbiBhIHNjcm9sbCBjYW4gY2F1
c2Ugbm90aWNlYWJsZSBkZWxheXMKQEAgLTE2NjAsMTAgKzE2NTcsOCBAQCB2b2lkIFJlbmRlck9i
amVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJT
dHlsZSogbmV3UwogICAgICAgICBzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSA9IHRy
dWU7CiAjZW5kaWYKIAotICAgICAgICBib29sIG5ld1N0eWxlU2xvd1Njcm9sbCA9IG5ld1N0eWxl
ICYmIChuZXdTdHlsZS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICghc2hvdWxkQmxpdE9uRml4ZWRC
YWNrZ3JvdW5kSW1hZ2UgJiYgbmV3U3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkpKTsK
LSAgICAgICAgYm9vbCBvbGRTdHlsZVNsb3dTY3JvbGwgPSBtX3N0eWxlICYmIChtX3N0eWxlLT5w
b3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgKCFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAm
JiBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpKSk7CisgICAgICAgIGJvb2wgbmV3
U3R5bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgIXNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3Vu
ZEltYWdlICYmIG5ld1N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpOworICAgICAgICBi
b29sIG9sZFN0eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYgIXNob3VsZEJsaXRPbkZpeGVkQmFj
a2dyb3VuZEltYWdlICYmIG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCk7CiAgICAg
ICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwgIT0gbmV3U3R5bGVTbG93U2Nyb2xsKSB7CiAgICAg
ICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsKQogICAgICAgICAgICAgICAgIHZpZXcoKS0+
ZnJhbWVWaWV3KCktPnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50355</attachid>
            <date>2010-03-09 15:04:08 -0800</date>
            <delta_ts>2010-03-10 02:45:57 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>11547</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzA1NWIyMy4uYTMwOGY0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wMy0wOSAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIGZyYW1lIHZpZXcgdGFrZSBpbnRvIGFjb3VudCB0aGUgbGlzdCBvZiBmaXhlZCBvYmpl
Y3Qgd2hlbiBzY3JvbGxpbmcKKyAgICAgICAgdGhlIHZpZXcuIElmIHRoZSBudW1iZXIgb2Ygb2Jq
ZWN0IGlzIGxvd2VyIHRoYW4gYSBjZXJ0YWluIHRocmVzaG9sZCwgdGhlIHBpeGVsCisgICAgICAg
IGFyZSBibGl0dGVkLCBhbmQgdGhlIGludmFsaWRhdGVkIGFyZWEgdXBkYXRlZC4KKworICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6RnJh
bWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzSWZOb3RPdmVybGFw
cGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkRml4ZWRPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVGaXhlZE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOgorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25lZE9iamVjdHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UpOgorCiAy
MDEwLTAzLTA5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMmU5OTA4YS4uNThlMzYz
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEwOCw2ICsxMDgsNyBAQCBGcmFtZVZpZXc6OkZyYW1lVmll
dyhGcmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9jYW5IYXZlU2Ny
b2xsYmFycyh0cnVlKQogICAgICwgbV9zbG93UmVwYWludE9iamVjdENvdW50KDApCisgICAgLCBt
X2ZpeGVkT2JqZWN0Q291bnQoMCkKICAgICAsIG1fbGF5b3V0VGltZXIodGhpcywgJkZyYW1lVmll
dzo6bGF5b3V0VGltZXJGaXJlZCkKICAgICAsIG1fbGF5b3V0Um9vdCgwKQogICAgICwgbV9wb3N0
TGF5b3V0VGFza3NUaW1lcih0aGlzLCAmRnJhbWVWaWV3Ojpwb3N0TGF5b3V0VGltZXJGaXJlZCkK
QEAgLTc5OSwxMiArODAwLDEyIEBAIFN0cmluZyBGcmFtZVZpZXc6Om1lZGlhVHlwZSgpIGNvbnN0
CiAKIGJvb2wgRnJhbWVWaWV3Ojp1c2VTbG93UmVwYWludHMoKSBjb25zdAogewotICAgIHJldHVy
biBtX3VzZVNsb3dSZXBhaW50cyB8fCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8IG1f
aXNPdmVybGFwcGVkIHx8ICFtX2NvbnRlbnRJc09wYXF1ZTsKKyAgICByZXR1cm4gbV91c2VTbG93
UmVwYWludHMgfHwgbV9zbG93UmVwYWludE9iamVjdENvdW50ID4gMCB8fCAocGxhdGZvcm1XaWRn
ZXQoKSAmJiBtX2ZpeGVkT2JqZWN0Q291bnQgPiAwKSB8fCBtX2lzT3ZlcmxhcHBlZCB8fCAhbV9j
b250ZW50SXNPcGFxdWU7CiB9CiAKIGJvb2wgRnJhbWVWaWV3Ojp1c2VTbG93UmVwYWludHNJZk5v
dE92ZXJsYXBwZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX3VzZVNsb3dSZXBhaW50cyB8fCBt
X3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8ICFtX2NvbnRlbnRJc09wYXF1ZTsKKyAgICBy
ZXR1cm4gbV91c2VTbG93UmVwYWludHMgfHwgbV9zbG93UmVwYWludE9iamVjdENvdW50ID4gMCB8
fCAocGxhdGZvcm1XaWRnZXQoKSAmJiBtX2ZpeGVkT2JqZWN0Q291bnQgPiAwKSB8fCAhbV9jb250
ZW50SXNPcGFxdWU7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpzZXRVc2VTbG93UmVwYWludHMoKQpA
QCAtODI4LDYgKzgyOSw3OCBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmpl
Y3QoKQogICAgICAgICBzZXRDYW5CbGl0T25TY3JvbGwoIXVzZVNsb3dSZXBhaW50cygpKTsKIH0K
IAordm9pZCBGcmFtZVZpZXc6OmFkZEZpeGVkT2JqZWN0KCkKK3sKKyAgICBpZiAoIW1fZml4ZWRP
YmplY3RDb3VudCAmJiBwbGF0Zm9ybVdpZGdldCgpKQorICAgICAgICBzZXRDYW5CbGl0T25TY3Jv
bGwoZmFsc2UpOworICAgICsrbV9maXhlZE9iamVjdENvdW50OworfQorCit2b2lkIEZyYW1lVmll
dzo6cmVtb3ZlRml4ZWRPYmplY3QoKQoreworICAgIEFTU0VSVChtX2ZpeGVkT2JqZWN0Q291bnQg
PiAwKTsKKyAgICBtX2ZpeGVkT2JqZWN0Q291bnQtLTsKKyAgICBpZiAoIW1fZml4ZWRPYmplY3RD
b3VudCkKKyAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCF1c2VTbG93UmVwYWludHMoKSk7Cit9
CisKK3ZvaWQgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3Qm
IGNsaXBSZWN0KQoreworICAgIGNvbnN0IHNpemVfdCBmaXhlZE9iamVjdFRocmVzaG9sZCA9IDU7
CisKKyAgICBMaXN0SGFzaFNldDxSZW5kZXJCb3gqPiogcG9zaXRpb25lZE9iamVjdHMgPSAwOwor
ICAgIGlmIChSZW5kZXJWaWV3KiByb290ID0gbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCisg
ICAgICAgIHBvc2l0aW9uZWRPYmplY3RzID0gcm9vdC0+cG9zaXRpb25lZE9iamVjdHMoKTsKKwor
ICAgIGlmICghcG9zaXRpb25lZE9iamVjdHMgfHwgcG9zaXRpb25lZE9iamVjdHMtPmlzRW1wdHko
KSkgeworICAgICAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Ny
b2xsLCBjbGlwUmVjdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBHZXQgdGhl
IHJlY3RzIG9mIHRoZSBmaXhlZCBvYmplY3RzIHZpc2libGUgaW4gdGhlIHJlY3RUb1Njcm9sbAor
ICAgIFZlY3RvcjxJbnRSZWN0LCBmaXhlZE9iamVjdFRocmVzaG9sZD4gc3ViUmVjdFRvVXBkYXRl
OworICAgIGJvb2wgdXBkYXRlSW52YWxpZGF0ZWRTdWJSZWN0ID0gdHJ1ZTsKKyAgICBMaXN0SGFz
aFNldDxSZW5kZXJCb3gqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcG9zaXRpb25lZE9iamVjdHMt
PmVuZCgpOworICAgIGZvciAoTGlzdEhhc2hTZXQ8UmVuZGVyQm94Kj46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gcG9zaXRpb25lZE9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICBSZW5kZXJCb3gqIHJlbmRlckJveCA9ICppdDsKKyAgICAgICAgaWYgKHJlbmRlckJveC0+
c3R5bGUoKS0+cG9zaXRpb24oKSAhPSBGaXhlZFBvc2l0aW9uKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIEludFJlY3QgdG9wTGV2ZWxSZWN0OworICAgICAgICBJbnRSZWN0IHVwZGF0
ZVJlY3QgPSByZW5kZXJCb3gtPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KTsKKyAgICAg
ICAgdXBkYXRlUmVjdC5tb3ZlKC1zY3JvbGxYKCksIC1zY3JvbGxZKCkpOworICAgICAgICB1cGRh
dGVSZWN0LmludGVyc2VjdChyZWN0VG9TY3JvbGwpOworICAgICAgICBpZiAoIXVwZGF0ZVJlY3Qu
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoc3ViUmVjdFRvVXBkYXRlLnNpemUoKSA+PSBm
aXhlZE9iamVjdFRocmVzaG9sZCkgeworICAgICAgICAgICAgICAgIHVwZGF0ZUludmFsaWRhdGVk
U3ViUmVjdCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgc3ViUmVjdFRvVXBkYXRlLmFwcGVuZCh1cGRhdGVSZWN0KTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIFNjcm9sbCB0aGUgdmlldworICAgIGlmICh1cGRhdGVJbnZhbGlk
YXRlZFN1YlJlY3QpIHsKKyAgICAgICAgLy8gMSkgc2Nyb2xsCisgICAgICAgIGhvc3RXaW5kb3co
KS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKworICAgICAg
ICAvLyAyKSB1cGRhdGUgdGhlIGFyZWEgb2YgZml4ZWQgb2JqZXRzIHRoYXQgaGFzIGJlZW4gaW52
YWxpZGF0ZWQKKyAgICAgICAgc2l6ZV90IGZpeE9iamVjdHNDb3VudCA9IHN1YlJlY3RUb1VwZGF0
ZS5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZml4T2JqZWN0c0NvdW50
OyArK2kpIHsKKyAgICAgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IHN1YlJlY3RUb1VwZGF0
ZVtpXTsKKyAgICAgICAgICAgIEludFJlY3Qgc2Nyb2xsZWRSZWN0ID0gdXBkYXRlUmVjdDsKKyAg
ICAgICAgICAgIHNjcm9sbGVkUmVjdC5tb3ZlKHNjcm9sbERlbHRhKTsKKyAgICAgICAgICAgIHVw
ZGF0ZVJlY3QudW5pdGUoc2Nyb2xsZWRSZWN0KTsKKyAgICAgICAgICAgIHVwZGF0ZVJlY3QuaW50
ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CisgICAgICAgICAgICBob3N0V2luZG93KCktPmludmFsaWRh
dGVDb250ZW50c0ZvclNsb3dTY3JvbGwodXBkYXRlUmVjdCwgZmFsc2UpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgLy8gdGhlIG51bWJlciBvZiBmaXhlZCBvYmplY3RzIGV4Y2Vl
ZCB0aGUgdGhyZXNob2xkLCBzbyB3ZSByZXBhaW50IGV2ZXJ5dGhpbmcuCisgICAgICAgIEludFJl
Y3QgdXBkYXRlUmVjdCA9IGNsaXBSZWN0OworICAgICAgICB1cGRhdGVSZWN0LmludGVyc2VjdChy
ZWN0VG9TY3JvbGwpOworICAgICAgICBob3N0V2luZG93KCktPmludmFsaWRhdGVDb250ZW50c0Zv
clNsb3dTY3JvbGwodXBkYXRlUmVjdCwgZmFsc2UpOworICAgIH0KK30KKwogdm9pZCBGcmFtZVZp
ZXc6OnNldElzT3ZlcmxhcHBlZChib29sIGlzT3ZlcmxhcHBlZCkKIHsKICAgICBpZiAoaXNPdmVy
bGFwcGVkID09IG1faXNPdmVybGFwcGVkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDFkNWEzMTIuLjNmNmQ3OTMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKQEAgLTE0OSw2ICsxNDksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTbG93
UmVwYWludE9iamVjdCgpOwogICAgIHZvaWQgcmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKTsKIAor
ICAgIHZvaWQgYWRkRml4ZWRPYmplY3QoKTsKKyAgICB2b2lkIHJlbW92ZUZpeGVkT2JqZWN0KCk7
CisKICAgICB2b2lkIGJlZ2luRGVmZXJyZWRSZXBhaW50cygpOwogICAgIHZvaWQgZW5kRGVmZXJy
ZWRSZXBhaW50cygpOwogICAgIHZvaWQgY2hlY2tTdG9wRGVsYXlpbmdEZWZlcnJlZFJlcGFpbnRz
KCk7CkBAIC0yMDMsNiArMjA2LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNGcmFtZVZpZXdTY3Jv
bGxDb3JuZXIoUmVuZGVyU2Nyb2xsYmFyUGFydCogc2Nyb2xsQ29ybmVyKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbENvcm5lciA9PSBzY3JvbGxDb3JuZXI7IH0KICAgICB2b2lkIGludmFsaWRhdGVT
Y3JvbGxDb3JuZXIoKTsKIAorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxDb250
ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiBy
ZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKwogcHJpdmF0ZToKICAgICBG
cmFtZVZpZXcoRnJhbWUqKTsKIApAQCAtMjcyLDYgKzI3OCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2lzT3ZlcmxhcHBlZDsKICAgICBib29sIG1fY29udGVudElzT3BhcXVlOwogICAgIHVuc2ln
bmVkIG1fc2xvd1JlcGFpbnRPYmplY3RDb3VudDsKKyAgICB1bnNpZ25lZCBtX2ZpeGVkT2JqZWN0
Q291bnQ7CiAKICAgICBpbnQgbV9ib3JkZXJYLCBtX2JvcmRlclk7CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwCmluZGV4IDRmZDVjZmQuLmRiYjdmYWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApA
QCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMoY29uc3Qg
SW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAKICAgICBpZiAoY2FuQmxpdE9uU2Nyb2xsKCkpIHsgLy8g
VGhlIG1haW4gZnJhbWUgY2FuIGp1c3QgYmxpdCB0aGUgV2ViVmlldyB3aW5kb3cKICAgICAgICAv
LyBGSVhNRTogRmluZCBhIHdheSB0byBzY3JvbGwgc3ViZnJhbWVzIHdpdGggdGhpcyBmYXN0ZXIg
cGF0aAotICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKC1zY3JvbGxEZWx0YSwgc2Nyb2xsVmll
d1JlY3QsIGNsaXBSZWN0KTsKKyAgICAgICBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKC1zY3JvbGxE
ZWx0YSwgc2Nyb2xsVmlld1JlY3QsIGNsaXBSZWN0KTsKICAgICB9IGVsc2UgeyAKICAgICAgICAv
LyBXZSBuZWVkIHRvIGdvIGFoZWFkIGFuZCByZXBhaW50IHRoZSBlbnRpcmUgYmFja2luZyBzdG9y
ZS4gIERvIGl0IG5vdyBiZWZvcmUgbW92aW5nIHRoZQogICAgICAgIC8vIHdpbmRvd2VkIHBsdWdp
bnMuCkBAIC01MjUsNiArNTI1LDExIEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMo
Y29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAgICAgaG9zdFdpbmRvdygpLT5pbnZhbGlkYXRl
V2luZG93KEludFJlY3QoKSwgdHJ1ZSk7CiB9CiAKK3ZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29u
dGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYg
cmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBob3N0V2luZG93
KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7Cit9CisKIElu
dFBvaW50IFNjcm9sbFZpZXc6OndpbmRvd1RvQ29udGVudHMoY29uc3QgSW50UG9pbnQmIHdpbmRv
d1BvaW50KSBjb25zdAogewogICAgIEludFBvaW50IHZpZXdQb2ludCA9IGNvbnZlcnRGcm9tQ29u
dGFpbmluZ1dpbmRvdyh3aW5kb3dQb2ludCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuaCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IDExMWQ2
YjYuLjE1ODdmZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC0yNDksNiArMjQ5LDkgQEAgcHJv
dGVjdGVkOgogICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CisK
KyAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgYmxpdHRpbmcgdGhlIHBpeGVscworICAgIHZp
cnR1YWwgdm9pZCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERl
bHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0
KTsKICAgICAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9ob3Jpem9udGFsU2Ny
b2xsYmFyOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggNTEwYTMxMS4uMTg0Zjk4MyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGluc2VydFBvc2l0aW9uZWRPYmplY3QoUmVuZGVyQm94Kik7CiAgICAgdm9pZCByZW1vdmVQb3Np
dGlvbmVkT2JqZWN0KFJlbmRlckJveCopOwogICAgIHZvaWQgcmVtb3ZlUG9zaXRpb25lZE9iamVj
dHMoUmVuZGVyQmxvY2sqKTsKKyAgICBMaXN0SGFzaFNldDxSZW5kZXJCb3gqPiogcG9zaXRpb25l
ZE9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uZWRPYmplY3RzOyB9CiAKICAgICB2
b2lkIGFkZFBlcmNlbnRIZWlnaHREZXNjZW5kYW50KFJlbmRlckJveCopOwogICAgIHN0YXRpYyB2
b2lkIHJlbW92ZVBlcmNlbnRIZWlnaHREZXNjZW5kYW50KFJlbmRlckJveCopOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKaW5kZXggMWQ4ZmIxMi4uMWMwZTgzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC0xNDYsNiArMTQ2LDE2IEBAIHZvaWQgUmVuZGVyQm94OjpzdHlsZVdpbGxDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsCiAgICAgICAg
ICAgICAgICAgcmVtb3ZlRmxvYXRpbmdPclBvc2l0aW9uZWRDaGlsZEZyb21CbG9ja0xpc3RzKCk7
CiAgICAgICAgIH0KICAgICB9CisgICAgaWYgKEZyYW1lVmlldyAqZnJhbWVWaWV3ID0gdmlldygp
LT5mcmFtZVZpZXcoKSkgeworICAgICAgICBib29sIG5ld1N0eWxlSXNGaXhlZCA9IG5ld1N0eWxl
ICYmIG5ld1N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb247CisgICAgICAgIGJvb2wg
b2xkU3R5bGVJc0ZpeGVkID0gc3R5bGUoKSAmJiBzdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVk
UG9zaXRpb247CisgICAgICAgIGlmIChuZXdTdHlsZUlzRml4ZWQgIT0gb2xkU3R5bGVJc0ZpeGVk
KSB7CisgICAgICAgICAgICBpZiAobmV3U3R5bGVJc0ZpeGVkKQorICAgICAgICAgICAgICAgIGZy
YW1lVmlldy0+YWRkRml4ZWRPYmplY3QoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBmcmFtZVZpZXctPnJlbW92ZUZpeGVkT2JqZWN0KCk7CisgICAgICAgIH0KKyAgICB9CiAK
ICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5ld1N0eWxl
KTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDNmMzljMTUuLjgyMTJkY2Eg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTY1Miw5ICsxNjUyLDYgQEAgdm9p
ZCBSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29u
c3QgUmVuZGVyU3R5bGUqIG5ld1MKICAgICAgICAgc19hZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxz
ZTsKIAogICAgIGlmICh2aWV3KCktPmZyYW1lVmlldygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBB
IGJldHRlciBzb2x1dGlvbiB3b3VsZCBiZSB0byBvbmx5IGludmFsaWRhdGUgdGhlIGZpeGVkIHJl
Z2lvbnMgd2hlbiBzY3JvbGxpbmcuICBJdCdzIG92ZXJraWxsIHRvCi0gICAgICAgIC8vIHByZXZl
bnQgdGhlIGVudGlyZSB2aWV3IGZyb20gYmxpdHRpbmcgb24gYSBzY3JvbGwuCi0KICAgICAgICAg
Ym9vbCBzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSA9IGZhbHNlOwogI2lmIEVOQUJM
RShGQVNUX01PQklMRV9TQ1JPTExJTkcpCiAgICAgICAgIC8vIE9uIGxvdy1wb3dlcmVkL21vYmls
ZSBkZXZpY2VzLCBwcmV2ZW50aW5nIGJsaXR0aW5nIG9uIGEgc2Nyb2xsIGNhbiBjYXVzZSBub3Rp
Y2VhYmxlIGRlbGF5cwpAQCAtMTY2NCwxMCArMTY2MSw4IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpz
dHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBu
ZXdTCiAgICAgICAgIHNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlID0gdHJ1ZTsKICNl
bmRpZgogCi0gICAgICAgIGJvb2wgbmV3U3R5bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgKG5l
d1N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91
bmRJbWFnZSAmJiBuZXdTdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSkpOwotICAgICAg
ICBib29sIG9sZFN0eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYgKG1fc3R5bGUtPnBvc2l0aW9u
KCkgPT0gRml4ZWRQb3NpdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8fCAoIXNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG1fc3R5
bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCkpKTsKKyAgICAgICAgYm9vbCBuZXdTdHlsZVNs
b3dTY3JvbGwgPSBuZXdTdHlsZSAmJiAhc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2Ug
JiYgbmV3U3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCk7CisgICAgICAgIGJvb2wgb2xk
U3R5bGVTbG93U2Nyb2xsID0gbV9zdHlsZSAmJiAhc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5k
SW1hZ2UgJiYgbV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKICAgICAgICAgaWYg
KG9sZFN0eWxlU2xvd1Njcm9sbCAhPSBuZXdTdHlsZVNsb3dTY3JvbGwpIHsKICAgICAgICAgICAg
IGlmIChvbGRTdHlsZVNsb3dTY3JvbGwpCiAgICAgICAgICAgICAgICAgdmlldygpLT5mcmFtZVZp
ZXcoKS0+cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKTsK
</data>
<flag name="review"
          id="33478"
          type_id="1"
          status="-"
          setter="manyoso"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50386</attachid>
            <date>2010-03-10 02:45:57 -0800</date>
            <delta_ts>2010-03-10 03:01:02 -0800</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>11612</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzA1NWIyMy4uYTMwOGY0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wMy0wOSAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIGZyYW1lIHZpZXcgdGFrZSBpbnRvIGFjb3VudCB0aGUgbGlzdCBvZiBmaXhlZCBvYmpl
Y3Qgd2hlbiBzY3JvbGxpbmcKKyAgICAgICAgdGhlIHZpZXcuIElmIHRoZSBudW1iZXIgb2Ygb2Jq
ZWN0IGlzIGxvd2VyIHRoYW4gYSBjZXJ0YWluIHRocmVzaG9sZCwgdGhlIHBpeGVsCisgICAgICAg
IGFyZSBibGl0dGVkLCBhbmQgdGhlIGludmFsaWRhdGVkIGFyZWEgdXBkYXRlZC4KKworICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6RnJh
bWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzSWZOb3RPdmVybGFw
cGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkRml4ZWRPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVGaXhlZE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOgorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25lZE9iamVjdHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UpOgorCiAy
MDEwLTAzLTA5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMmU5OTA4YS4uMGQ5ZDA3
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEwOCw2ICsxMDgsNyBAQCBGcmFtZVZpZXc6OkZyYW1lVmll
dyhGcmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9jYW5IYXZlU2Ny
b2xsYmFycyh0cnVlKQogICAgICwgbV9zbG93UmVwYWludE9iamVjdENvdW50KDApCisgICAgLCBt
X2ZpeGVkT2JqZWN0Q291bnQoMCkKICAgICAsIG1fbGF5b3V0VGltZXIodGhpcywgJkZyYW1lVmll
dzo6bGF5b3V0VGltZXJGaXJlZCkKICAgICAsIG1fbGF5b3V0Um9vdCgwKQogICAgICwgbV9wb3N0
TGF5b3V0VGFza3NUaW1lcih0aGlzLCAmRnJhbWVWaWV3Ojpwb3N0TGF5b3V0VGltZXJGaXJlZCkK
QEAgLTc5OSwxMiArODAwLDEyIEBAIFN0cmluZyBGcmFtZVZpZXc6Om1lZGlhVHlwZSgpIGNvbnN0
CiAKIGJvb2wgRnJhbWVWaWV3Ojp1c2VTbG93UmVwYWludHMoKSBjb25zdAogewotICAgIHJldHVy
biBtX3VzZVNsb3dSZXBhaW50cyB8fCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8IG1f
aXNPdmVybGFwcGVkIHx8ICFtX2NvbnRlbnRJc09wYXF1ZTsKKyAgICByZXR1cm4gbV91c2VTbG93
UmVwYWludHMgfHwgbV9zbG93UmVwYWludE9iamVjdENvdW50ID4gMCB8fCAocGxhdGZvcm1XaWRn
ZXQoKSAmJiBtX2ZpeGVkT2JqZWN0Q291bnQgPiAwKSB8fCBtX2lzT3ZlcmxhcHBlZCB8fCAhbV9j
b250ZW50SXNPcGFxdWU7CiB9CiAKIGJvb2wgRnJhbWVWaWV3Ojp1c2VTbG93UmVwYWludHNJZk5v
dE92ZXJsYXBwZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX3VzZVNsb3dSZXBhaW50cyB8fCBt
X3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8ICFtX2NvbnRlbnRJc09wYXF1ZTsKKyAgICBy
ZXR1cm4gbV91c2VTbG93UmVwYWludHMgfHwgbV9zbG93UmVwYWludE9iamVjdENvdW50ID4gMCB8
fCAocGxhdGZvcm1XaWRnZXQoKSAmJiBtX2ZpeGVkT2JqZWN0Q291bnQgPiAwKSB8fCAhbV9jb250
ZW50SXNPcGFxdWU7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpzZXRVc2VTbG93UmVwYWludHMoKQpA
QCAtODI4LDYgKzgyOSw3NyBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmpl
Y3QoKQogICAgICAgICBzZXRDYW5CbGl0T25TY3JvbGwoIXVzZVNsb3dSZXBhaW50cygpKTsKIH0K
IAordm9pZCBGcmFtZVZpZXc6OmFkZEZpeGVkT2JqZWN0KCkKK3sKKyAgICBpZiAoIW1fZml4ZWRP
YmplY3RDb3VudCAmJiBwbGF0Zm9ybVdpZGdldCgpKQorICAgICAgICBzZXRDYW5CbGl0T25TY3Jv
bGwoZmFsc2UpOworICAgICsrbV9maXhlZE9iamVjdENvdW50OworfQorCit2b2lkIEZyYW1lVmll
dzo6cmVtb3ZlRml4ZWRPYmplY3QoKQoreworICAgIEFTU0VSVChtX2ZpeGVkT2JqZWN0Q291bnQg
PiAwKTsKKyAgICAtLW1fZml4ZWRPYmplY3RDb3VudDsKKyAgICBpZiAoIW1fZml4ZWRPYmplY3RD
b3VudCkKKyAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCF1c2VTbG93UmVwYWludHMoKSk7Cit9
CisKK2Jvb2wgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3Qm
IGNsaXBSZWN0KQoreworICAgIGNvbnN0IHNpemVfdCBmaXhlZE9iamVjdFRocmVzaG9sZCA9IDU7
CisKKyAgICBMaXN0SGFzaFNldDxSZW5kZXJCb3gqPiogcG9zaXRpb25lZE9iamVjdHMgPSAwOwor
ICAgIGlmIChSZW5kZXJWaWV3KiByb290ID0gbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCisg
ICAgICAgIHBvc2l0aW9uZWRPYmplY3RzID0gcm9vdC0+cG9zaXRpb25lZE9iamVjdHMoKTsKKwor
ICAgIGlmICghcG9zaXRpb25lZE9iamVjdHMgfHwgcG9zaXRpb25lZE9iamVjdHMtPmlzRW1wdHko
KSkgeworICAgICAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Ny
b2xsLCBjbGlwUmVjdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIEdl
dCB0aGUgcmVjdHMgb2YgdGhlIGZpeGVkIG9iamVjdHMgdmlzaWJsZSBpbiB0aGUgcmVjdFRvU2Ny
b2xsCisgICAgVmVjdG9yPEludFJlY3QsIGZpeGVkT2JqZWN0VGhyZXNob2xkPiBzdWJSZWN0VG9V
cGRhdGU7CisgICAgYm9vbCB1cGRhdGVJbnZhbGlkYXRlZFN1YlJlY3QgPSB0cnVlOworICAgIExp
c3RIYXNoU2V0PFJlbmRlckJveCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwb3NpdGlvbmVkT2Jq
ZWN0cy0+ZW5kKCk7CisgICAgZm9yIChMaXN0SGFzaFNldDxSZW5kZXJCb3gqPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBwb3NpdGlvbmVkT2JqZWN0cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgIFJlbmRlckJveCogcmVuZGVyQm94ID0gKml0OworICAgICAgICBpZiAocmVuZGVy
Qm94LT5zdHlsZSgpLT5wb3NpdGlvbigpICE9IEZpeGVkUG9zaXRpb24pCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgSW50UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAgICAgIEludFJlY3Qg
dXBkYXRlUmVjdCA9IHJlbmRlckJveC0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpOwor
ICAgICAgICB1cGRhdGVSZWN0Lm1vdmUoLXNjcm9sbFgoKSwgLXNjcm9sbFkoKSk7CisgICAgICAg
IHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CisgICAgICAgIGlmICghdXBkYXRl
UmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlmIChzdWJSZWN0VG9VcGRhdGUuc2l6ZSgp
ID49IGZpeGVkT2JqZWN0VGhyZXNob2xkKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlSW52YWxp
ZGF0ZWRTdWJSZWN0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBzdWJSZWN0VG9VcGRhdGUuYXBwZW5kKHVwZGF0ZVJlY3QpOworICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gU2Nyb2xsIHRoZSB2aWV3CisgICAgaWYgKHVwZGF0ZUlu
dmFsaWRhdGVkU3ViUmVjdCkgeworICAgICAgICAvLyAxKSBzY3JvbGwKKyAgICAgICAgaG9zdFdp
bmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworCisg
ICAgICAgIC8vIDIpIHVwZGF0ZSB0aGUgYXJlYSBvZiBmaXhlZCBvYmplY3RzIHRoYXQgaGFzIGJl
ZW4gaW52YWxpZGF0ZWQKKyAgICAgICAgc2l6ZV90IGZpeE9iamVjdHNDb3VudCA9IHN1YlJlY3RU
b1VwZGF0ZS5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZml4T2JqZWN0
c0NvdW50OyArK2kpIHsKKyAgICAgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IHN1YlJlY3RU
b1VwZGF0ZVtpXTsKKyAgICAgICAgICAgIEludFJlY3Qgc2Nyb2xsZWRSZWN0ID0gdXBkYXRlUmVj
dDsKKyAgICAgICAgICAgIHNjcm9sbGVkUmVjdC5tb3ZlKHNjcm9sbERlbHRhKTsKKyAgICAgICAg
ICAgIHVwZGF0ZVJlY3QudW5pdGUoc2Nyb2xsZWRSZWN0KTsKKyAgICAgICAgICAgIHVwZGF0ZVJl
Y3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CisgICAgICAgICAgICBob3N0V2luZG93KCktPmlu
dmFsaWRhdGVDb250ZW50c0FuZFdpbmRvdyh1cGRhdGVSZWN0LCBmYWxzZSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gdGhlIG51bWJlciBvZiBmaXhl
ZCBvYmplY3RzIGV4Y2VlZCB0aGUgdGhyZXNob2xkLCB3ZSBjYW5ub3QgdXNlIHRoZSBmYXN0IHBh
dGgKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgRnJhbWVWaWV3OjpzZXRJc092ZXJsYXBw
ZWQoYm9vbCBpc092ZXJsYXBwZWQpCiB7CiAgICAgaWYgKGlzT3ZlcmxhcHBlZCA9PSBtX2lzT3Zl
cmxhcHBlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAppbmRleCAxZDVhMzEyLi4xNTA1OGE2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0x
NDksNiArMTQ5LDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRkU2xvd1JlcGFpbnRPYmplY3QoKTsK
ICAgICB2b2lkIHJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KCk7CiAKKyAgICB2b2lkIGFkZEZpeGVk
T2JqZWN0KCk7CisgICAgdm9pZCByZW1vdmVGaXhlZE9iamVjdCgpOworCiAgICAgdm9pZCBiZWdp
bkRlZmVycmVkUmVwYWludHMoKTsKICAgICB2b2lkIGVuZERlZmVycmVkUmVwYWludHMoKTsKICAg
ICB2b2lkIGNoZWNrU3RvcERlbGF5aW5nRGVmZXJyZWRSZXBhaW50cygpOwpAQCAtMjAzLDYgKzIw
Niw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRnJhbWVWaWV3U2Nyb2xsQ29ybmVyKFJlbmRlclNj
cm9sbGJhclBhcnQqIHNjcm9sbENvcm5lcikgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxDb3JuZXIg
PT0gc2Nyb2xsQ29ybmVyOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyKCk7CiAK
K3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25z
dCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCk7CisKIHByaXZhdGU6CiAgICAgRnJhbWVWaWV3KEZyYW1lKik7
CiAKQEAgLTI3Miw2ICsyNzgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc092ZXJsYXBwZWQ7
CiAgICAgYm9vbCBtX2NvbnRlbnRJc09wYXF1ZTsKICAgICB1bnNpZ25lZCBtX3Nsb3dSZXBhaW50
T2JqZWN0Q291bnQ7CisgICAgdW5zaWduZWQgbV9maXhlZE9iamVjdENvdW50OwogCiAgICAgaW50
IG1fYm9yZGVyWCwgbV9ib3JkZXJZOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCA0ZmQ1
Y2ZkLi4yYTNkNWZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTUxMCw4ICs1MTAsMTAg
QEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxE
ZWx0YSkKICAgICB9CiAKICAgICBpZiAoY2FuQmxpdE9uU2Nyb2xsKCkpIHsgLy8gVGhlIG1haW4g
ZnJhbWUgY2FuIGp1c3QgYmxpdCB0aGUgV2ViVmlldyB3aW5kb3cKLSAgICAgICAvLyBGSVhNRTog
RmluZCBhIHdheSB0byBzY3JvbGwgc3ViZnJhbWVzIHdpdGggdGhpcyBmYXN0ZXIgcGF0aAotICAg
ICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKC1zY3JvbGxEZWx0YSwgc2Nyb2xsVmlld1JlY3QsIGNs
aXBSZWN0KTsKKyAgICAgICAgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gc2Nyb2xsIHN1YmZyYW1l
cyB3aXRoIHRoaXMgZmFzdGVyIHBhdGgKKyAgICAgICAgaWYgKCFzY3JvbGxDb250ZW50c0Zhc3RQ
YXRoKC1zY3JvbGxEZWx0YSwgc2Nyb2xsVmlld1JlY3QsIGNsaXBSZWN0KSkgeworICAgICAgICAg
ICAgaG9zdFdpbmRvdygpLT5pbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKHVwZGF0ZVJl
Y3QsIGZhbHNlKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7IAogICAgICAgIC8vIFdlIG5lZWQg
dG8gZ28gYWhlYWQgYW5kIHJlcGFpbnQgdGhlIGVudGlyZSBiYWNraW5nIHN0b3JlLiAgRG8gaXQg
bm93IGJlZm9yZSBtb3ZpbmcgdGhlCiAgICAgICAgLy8gd2luZG93ZWQgcGx1Z2lucy4KQEAgLTUy
NSw2ICs1MjcsMTIgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJbnRT
aXplJiBzY3JvbGxEZWx0YSkKICAgICBob3N0V2luZG93KCktPmludmFsaWRhdGVXaW5kb3coSW50
UmVjdCgpLCB0cnVlKTsKIH0KIAorYm9vbCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQ
YXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3Jv
bGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xs
KHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogSW50UG9pbnQgU2Nyb2xsVmlldzo6d2luZG93VG9Db250ZW50cyhjb25zdCBJbnRQb2lu
dCYgd2luZG93UG9pbnQpIGNvbnN0CiB7CiAgICAgSW50UG9pbnQgdmlld1BvaW50ID0gY29udmVy
dEZyb21Db250YWluaW5nV2luZG93KHdpbmRvd1BvaW50KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5k
ZXggMTExZDZiNi4uZjViYjE2OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTI0OSw2ICsyNDks
OSBAQCBwcm90ZWN0ZWQ6CiAgICAgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbENvcm5lcigpOwogICAgIHZpcnR1YWwgdm9pZCBw
YWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KTsKKworICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBieSBibGl0dGluZyB0aGUgcGl4ZWxz
CisgICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpOwogICAgIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hvcml6
b250YWxTY3JvbGxiYXI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCA1MTBhMzExLi4xODRm
OTgzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTc0LDYgKzc0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgaW5zZXJ0UG9zaXRpb25lZE9iamVjdChSZW5kZXJCb3gqKTsKICAgICB2b2lkIHJl
bW92ZVBvc2l0aW9uZWRPYmplY3QoUmVuZGVyQm94Kik7CiAgICAgdm9pZCByZW1vdmVQb3NpdGlv
bmVkT2JqZWN0cyhSZW5kZXJCbG9jayopOworICAgIExpc3RIYXNoU2V0PFJlbmRlckJveCo+KiBw
b3NpdGlvbmVkT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb25lZE9iamVjdHM7IH0K
IAogICAgIHZvaWQgYWRkUGVyY2VudEhlaWdodERlc2NlbmRhbnQoUmVuZGVyQm94Kik7CiAgICAg
c3RhdGljIHZvaWQgcmVtb3ZlUGVyY2VudEhlaWdodERlc2NlbmRhbnQoUmVuZGVyQm94Kik7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAxZDhmYjEyLi4xYzBlODM3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKQEAgLTE0Niw2ICsxNDYsMTYgQEAgdm9pZCBSZW5kZXJCb3g6OnN0eWxlV2ls
bENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWwK
ICAgICAgICAgICAgICAgICByZW1vdmVGbG9hdGluZ09yUG9zaXRpb25lZENoaWxkRnJvbUJsb2Nr
TGlzdHMoKTsKICAgICAgICAgfQogICAgIH0KKyAgICBpZiAoRnJhbWVWaWV3ICpmcmFtZVZpZXcg
PSB2aWV3KCktPmZyYW1lVmlldygpKSB7CisgICAgICAgIGJvb2wgbmV3U3R5bGVJc0ZpeGVkID0g
bmV3U3R5bGUgJiYgbmV3U3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbjsKKyAgICAg
ICAgYm9vbCBvbGRTdHlsZUlzRml4ZWQgPSBzdHlsZSgpICYmIHN0eWxlKCktPnBvc2l0aW9uKCkg
PT0gRml4ZWRQb3NpdGlvbjsKKyAgICAgICAgaWYgKG5ld1N0eWxlSXNGaXhlZCAhPSBvbGRTdHls
ZUlzRml4ZWQpIHsKKyAgICAgICAgICAgIGlmIChuZXdTdHlsZUlzRml4ZWQpCisgICAgICAgICAg
ICAgICAgZnJhbWVWaWV3LT5hZGRGaXhlZE9iamVjdCgpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGZyYW1lVmlldy0+cmVtb3ZlRml4ZWRPYmplY3QoKTsKKyAgICAgICAgfQor
ICAgIH0KIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoZGlmZiwg
bmV3U3R5bGUpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggM2YzOWMxNS4u
ODIxMmRjYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xNjUyLDkgKzE2NTIs
NiBAQCB2b2lkIFJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBk
aWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3UwogICAgICAgICBzX2FmZmVjdHNQYXJlbnRCbG9j
ayA9IGZhbHNlOwogCiAgICAgaWYgKHZpZXcoKS0+ZnJhbWVWaWV3KCkpIHsKLSAgICAgICAgLy8g
RklYTUU6IEEgYmV0dGVyIHNvbHV0aW9uIHdvdWxkIGJlIHRvIG9ubHkgaW52YWxpZGF0ZSB0aGUg
Zml4ZWQgcmVnaW9ucyB3aGVuIHNjcm9sbGluZy4gIEl0J3Mgb3ZlcmtpbGwgdG8KLSAgICAgICAg
Ly8gcHJldmVudCB0aGUgZW50aXJlIHZpZXcgZnJvbSBibGl0dGluZyBvbiBhIHNjcm9sbC4KLQog
ICAgICAgICBib29sIHNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlID0gZmFsc2U7CiAj
aWYgRU5BQkxFKEZBU1RfTU9CSUxFX1NDUk9MTElORykKICAgICAgICAgLy8gT24gbG93LXBvd2Vy
ZWQvbW9iaWxlIGRldmljZXMsIHByZXZlbnRpbmcgYmxpdHRpbmcgb24gYSBzY3JvbGwgY2FuIGNh
dXNlIG5vdGljZWFibGUgZGVsYXlzCkBAIC0xNjY0LDEwICsxNjYxLDggQEAgdm9pZCBSZW5kZXJP
YmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVy
U3R5bGUqIG5ld1MKICAgICAgICAgc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgPSB0
cnVlOwogI2VuZGlmCiAKLSAgICAgICAgYm9vbCBuZXdTdHlsZVNsb3dTY3JvbGwgPSBuZXdTdHls
ZSAmJiAobmV3U3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoIXNob3VsZEJsaXRPbkZpeGVk
QmFja2dyb3VuZEltYWdlICYmIG5ld1N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpKSk7
Ci0gICAgICAgIGJvb2wgb2xkU3R5bGVTbG93U2Nyb2xsID0gbV9zdHlsZSAmJiAobV9zdHlsZS0+
cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHx8ICghc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2Ug
JiYgbV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSkpOworICAgICAgICBib29sIG5l
d1N0eWxlU2xvd1Njcm9sbCA9IG5ld1N0eWxlICYmICFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91
bmRJbWFnZSAmJiBuZXdTdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKKyAgICAgICAg
Ym9vbCBvbGRTdHlsZVNsb3dTY3JvbGwgPSBtX3N0eWxlICYmICFzaG91bGRCbGl0T25GaXhlZEJh
Y2tncm91bmRJbWFnZSAmJiBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpOwogICAg
ICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsICE9IG5ld1N0eWxlU2xvd1Njcm9sbCkgewogICAg
ICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9sbCkKICAgICAgICAgICAgICAgICB2aWV3KCkt
PmZyYW1lVmlldygpLT5yZW1vdmVTbG93UmVwYWludE9iamVjdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50387</attachid>
            <date>2010-03-10 03:01:02 -0800</date>
            <delta_ts>2010-04-06 13:35:14 -0700</delta_ts>
            <desc>Repaint only the invalidated area after scrolling</desc>
            <filename>smarter_update_for_fixed.patch</filename>
            <type>text/plain</type>
            <size>11598</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzA1NWIyMy4uYTMwOGY0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wMy0wOSAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIGZyYW1lIHZpZXcgdGFrZSBpbnRvIGFjb3VudCB0aGUgbGlzdCBvZiBmaXhlZCBvYmpl
Y3Qgd2hlbiBzY3JvbGxpbmcKKyAgICAgICAgdGhlIHZpZXcuIElmIHRoZSBudW1iZXIgb2Ygb2Jq
ZWN0IGlzIGxvd2VyIHRoYW4gYSBjZXJ0YWluIHRocmVzaG9sZCwgdGhlIHBpeGVsCisgICAgICAg
IGFyZSBibGl0dGVkLCBhbmQgdGhlIGludmFsaWRhdGVkIGFyZWEgdXBkYXRlZC4KKworICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6RnJh
bWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXNlU2xvd1JlcGFpbnRzSWZOb3RPdmVybGFw
cGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkRml4ZWRPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVGaXhlZE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOgorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25lZE9iamVjdHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UpOgorCiAy
MDEwLTAzLTA5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMmU5OTA4YS4uMGQ5ZDA3
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEwOCw2ICsxMDgsNyBAQCBGcmFtZVZpZXc6OkZyYW1lVmll
dyhGcmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9jYW5IYXZlU2Ny
b2xsYmFycyh0cnVlKQogICAgICwgbV9zbG93UmVwYWludE9iamVjdENvdW50KDApCisgICAgLCBt
X2ZpeGVkT2JqZWN0Q291bnQoMCkKICAgICAsIG1fbGF5b3V0VGltZXIodGhpcywgJkZyYW1lVmll
dzo6bGF5b3V0VGltZXJGaXJlZCkKICAgICAsIG1fbGF5b3V0Um9vdCgwKQogICAgICwgbV9wb3N0
TGF5b3V0VGFza3NUaW1lcih0aGlzLCAmRnJhbWVWaWV3Ojpwb3N0TGF5b3V0VGltZXJGaXJlZCkK
QEAgLTc5OSwxMiArODAwLDEyIEBAIFN0cmluZyBGcmFtZVZpZXc6Om1lZGlhVHlwZSgpIGNvbnN0
CiAKIGJvb2wgRnJhbWVWaWV3Ojp1c2VTbG93UmVwYWludHMoKSBjb25zdAogewotICAgIHJldHVy
biBtX3VzZVNsb3dSZXBhaW50cyB8fCBtX3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8IG1f
aXNPdmVybGFwcGVkIHx8ICFtX2NvbnRlbnRJc09wYXF1ZTsKKyAgICByZXR1cm4gbV91c2VTbG93
UmVwYWludHMgfHwgbV9zbG93UmVwYWludE9iamVjdENvdW50ID4gMCB8fCAocGxhdGZvcm1XaWRn
ZXQoKSAmJiBtX2ZpeGVkT2JqZWN0Q291bnQgPiAwKSB8fCBtX2lzT3ZlcmxhcHBlZCB8fCAhbV9j
b250ZW50SXNPcGFxdWU7CiB9CiAKIGJvb2wgRnJhbWVWaWV3Ojp1c2VTbG93UmVwYWludHNJZk5v
dE92ZXJsYXBwZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX3VzZVNsb3dSZXBhaW50cyB8fCBt
X3Nsb3dSZXBhaW50T2JqZWN0Q291bnQgPiAwIHx8ICFtX2NvbnRlbnRJc09wYXF1ZTsKKyAgICBy
ZXR1cm4gbV91c2VTbG93UmVwYWludHMgfHwgbV9zbG93UmVwYWludE9iamVjdENvdW50ID4gMCB8
fCAocGxhdGZvcm1XaWRnZXQoKSAmJiBtX2ZpeGVkT2JqZWN0Q291bnQgPiAwKSB8fCAhbV9jb250
ZW50SXNPcGFxdWU7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpzZXRVc2VTbG93UmVwYWludHMoKQpA
QCAtODI4LDYgKzgyOSw3NyBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmpl
Y3QoKQogICAgICAgICBzZXRDYW5CbGl0T25TY3JvbGwoIXVzZVNsb3dSZXBhaW50cygpKTsKIH0K
IAordm9pZCBGcmFtZVZpZXc6OmFkZEZpeGVkT2JqZWN0KCkKK3sKKyAgICBpZiAoIW1fZml4ZWRP
YmplY3RDb3VudCAmJiBwbGF0Zm9ybVdpZGdldCgpKQorICAgICAgICBzZXRDYW5CbGl0T25TY3Jv
bGwoZmFsc2UpOworICAgICsrbV9maXhlZE9iamVjdENvdW50OworfQorCit2b2lkIEZyYW1lVmll
dzo6cmVtb3ZlRml4ZWRPYmplY3QoKQoreworICAgIEFTU0VSVChtX2ZpeGVkT2JqZWN0Q291bnQg
PiAwKTsKKyAgICAtLW1fZml4ZWRPYmplY3RDb3VudDsKKyAgICBpZiAoIW1fZml4ZWRPYmplY3RD
b3VudCkKKyAgICAgICAgc2V0Q2FuQmxpdE9uU2Nyb2xsKCF1c2VTbG93UmVwYWludHMoKSk7Cit9
CisKK2Jvb2wgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3Qm
IGNsaXBSZWN0KQoreworICAgIGNvbnN0IHNpemVfdCBmaXhlZE9iamVjdFRocmVzaG9sZCA9IDU7
CisKKyAgICBMaXN0SGFzaFNldDxSZW5kZXJCb3gqPiogcG9zaXRpb25lZE9iamVjdHMgPSAwOwor
ICAgIGlmIChSZW5kZXJWaWV3KiByb290ID0gbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCisg
ICAgICAgIHBvc2l0aW9uZWRPYmplY3RzID0gcm9vdC0+cG9zaXRpb25lZE9iamVjdHMoKTsKKwor
ICAgIGlmICghcG9zaXRpb25lZE9iamVjdHMgfHwgcG9zaXRpb25lZE9iamVjdHMtPmlzRW1wdHko
KSkgeworICAgICAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Ny
b2xsLCBjbGlwUmVjdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIEdl
dCB0aGUgcmVjdHMgb2YgdGhlIGZpeGVkIG9iamVjdHMgdmlzaWJsZSBpbiB0aGUgcmVjdFRvU2Ny
b2xsCisgICAgVmVjdG9yPEludFJlY3QsIGZpeGVkT2JqZWN0VGhyZXNob2xkPiBzdWJSZWN0VG9V
cGRhdGU7CisgICAgYm9vbCB1cGRhdGVJbnZhbGlkYXRlZFN1YlJlY3QgPSB0cnVlOworICAgIExp
c3RIYXNoU2V0PFJlbmRlckJveCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwb3NpdGlvbmVkT2Jq
ZWN0cy0+ZW5kKCk7CisgICAgZm9yIChMaXN0SGFzaFNldDxSZW5kZXJCb3gqPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBwb3NpdGlvbmVkT2JqZWN0cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgIFJlbmRlckJveCogcmVuZGVyQm94ID0gKml0OworICAgICAgICBpZiAocmVuZGVy
Qm94LT5zdHlsZSgpLT5wb3NpdGlvbigpICE9IEZpeGVkUG9zaXRpb24pCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgSW50UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAgICAgIEludFJlY3Qg
dXBkYXRlUmVjdCA9IHJlbmRlckJveC0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpOwor
ICAgICAgICB1cGRhdGVSZWN0Lm1vdmUoLXNjcm9sbFgoKSwgLXNjcm9sbFkoKSk7CisgICAgICAg
IHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CisgICAgICAgIGlmICghdXBkYXRl
UmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlmIChzdWJSZWN0VG9VcGRhdGUuc2l6ZSgp
ID49IGZpeGVkT2JqZWN0VGhyZXNob2xkKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlSW52YWxp
ZGF0ZWRTdWJSZWN0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBzdWJSZWN0VG9VcGRhdGUuYXBwZW5kKHVwZGF0ZVJlY3QpOworICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gU2Nyb2xsIHRoZSB2aWV3CisgICAgaWYgKHVwZGF0ZUlu
dmFsaWRhdGVkU3ViUmVjdCkgeworICAgICAgICAvLyAxKSBzY3JvbGwKKyAgICAgICAgaG9zdFdp
bmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworCisg
ICAgICAgIC8vIDIpIHVwZGF0ZSB0aGUgYXJlYSBvZiBmaXhlZCBvYmplY3RzIHRoYXQgaGFzIGJl
ZW4gaW52YWxpZGF0ZWQKKyAgICAgICAgc2l6ZV90IGZpeE9iamVjdHNDb3VudCA9IHN1YlJlY3RU
b1VwZGF0ZS5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZml4T2JqZWN0
c0NvdW50OyArK2kpIHsKKyAgICAgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IHN1YlJlY3RU
b1VwZGF0ZVtpXTsKKyAgICAgICAgICAgIEludFJlY3Qgc2Nyb2xsZWRSZWN0ID0gdXBkYXRlUmVj
dDsKKyAgICAgICAgICAgIHNjcm9sbGVkUmVjdC5tb3ZlKHNjcm9sbERlbHRhKTsKKyAgICAgICAg
ICAgIHVwZGF0ZVJlY3QudW5pdGUoc2Nyb2xsZWRSZWN0KTsKKyAgICAgICAgICAgIHVwZGF0ZVJl
Y3QuaW50ZXJzZWN0KHJlY3RUb1Njcm9sbCk7CisgICAgICAgICAgICBob3N0V2luZG93KCktPmlu
dmFsaWRhdGVDb250ZW50c0FuZFdpbmRvdyh1cGRhdGVSZWN0LCBmYWxzZSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gdGhlIG51bWJlciBvZiBmaXhl
ZCBvYmplY3RzIGV4Y2VlZCB0aGUgdGhyZXNob2xkLCB3ZSBjYW5ub3QgdXNlIHRoZSBmYXN0IHBh
dGgKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgRnJhbWVWaWV3OjpzZXRJc092ZXJsYXBw
ZWQoYm9vbCBpc092ZXJsYXBwZWQpCiB7CiAgICAgaWYgKGlzT3ZlcmxhcHBlZCA9PSBtX2lzT3Zl
cmxhcHBlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAppbmRleCAxZDVhMzEyLi4xNTA1OGE2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0x
NDksNiArMTQ5LDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRkU2xvd1JlcGFpbnRPYmplY3QoKTsK
ICAgICB2b2lkIHJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KCk7CiAKKyAgICB2b2lkIGFkZEZpeGVk
T2JqZWN0KCk7CisgICAgdm9pZCByZW1vdmVGaXhlZE9iamVjdCgpOworCiAgICAgdm9pZCBiZWdp
bkRlZmVycmVkUmVwYWludHMoKTsKICAgICB2b2lkIGVuZERlZmVycmVkUmVwYWludHMoKTsKICAg
ICB2b2lkIGNoZWNrU3RvcERlbGF5aW5nRGVmZXJyZWRSZXBhaW50cygpOwpAQCAtMjAzLDYgKzIw
Niw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRnJhbWVWaWV3U2Nyb2xsQ29ybmVyKFJlbmRlclNj
cm9sbGJhclBhcnQqIHNjcm9sbENvcm5lcikgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxDb3JuZXIg
PT0gc2Nyb2xsQ29ybmVyOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyKCk7CiAK
K3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25z
dCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCk7CisKIHByaXZhdGU6CiAgICAgRnJhbWVWaWV3KEZyYW1lKik7
CiAKQEAgLTI3Miw2ICsyNzgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc092ZXJsYXBwZWQ7
CiAgICAgYm9vbCBtX2NvbnRlbnRJc09wYXF1ZTsKICAgICB1bnNpZ25lZCBtX3Nsb3dSZXBhaW50
T2JqZWN0Q291bnQ7CisgICAgdW5zaWduZWQgbV9maXhlZE9iamVjdENvdW50OwogCiAgICAgaW50
IG1fYm9yZGVyWCwgbV9ib3JkZXJZOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCA0ZmQ1
Y2ZkLi5jMmEwYWRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTUxMCw4ICs1MTAsOSBA
QCB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERl
bHRhKQogICAgIH0KIAogICAgIGlmIChjYW5CbGl0T25TY3JvbGwoKSkgeyAvLyBUaGUgbWFpbiBm
cmFtZSBjYW4ganVzdCBibGl0IHRoZSBXZWJWaWV3IHdpbmRvdwotICAgICAgIC8vIEZJWE1FOiBG
aW5kIGEgd2F5IHRvIHNjcm9sbCBzdWJmcmFtZXMgd2l0aCB0aGlzIGZhc3RlciBwYXRoCi0gICAg
ICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoLXNjcm9sbERlbHRhLCBzY3JvbGxWaWV3UmVjdCwgY2xp
cFJlY3QpOworICAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBzY3JvbGwgc3ViZnJhbWVz
IHdpdGggdGhpcyBmYXN0ZXIgcGF0aAorICAgICAgICBpZiAoIXNjcm9sbENvbnRlbnRzRmFzdFBh
dGgoLXNjcm9sbERlbHRhLCBzY3JvbGxWaWV3UmVjdCwgY2xpcFJlY3QpKQorICAgICAgICAgICAg
aG9zdFdpbmRvdygpLT5pbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKHVwZGF0ZVJlY3Qs
IGZhbHNlKTsKICAgICB9IGVsc2UgeyAKICAgICAgICAvLyBXZSBuZWVkIHRvIGdvIGFoZWFkIGFu
ZCByZXBhaW50IHRoZSBlbnRpcmUgYmFja2luZyBzdG9yZS4gIERvIGl0IG5vdyBiZWZvcmUgbW92
aW5nIHRoZQogICAgICAgIC8vIHdpbmRvd2VkIHBsdWdpbnMuCkBAIC01MjUsNiArNTI2LDEyIEBA
IHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEpCiAgICAgaG9zdFdpbmRvdygpLT5pbnZhbGlkYXRlV2luZG93KEludFJlY3QoKSwgdHJ1ZSk7
CiB9CiAKK2Jvb2wgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRT
aXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRS
ZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwg
cmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIEludFBvaW50
IFNjcm9sbFZpZXc6OndpbmRvd1RvQ29udGVudHMoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50
KSBjb25zdAogewogICAgIEludFBvaW50IHZpZXdQb2ludCA9IGNvbnZlcnRGcm9tQ29udGFpbmlu
Z1dpbmRvdyh3aW5kb3dQb2ludCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuaCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IDExMWQ2YjYuLmY1
YmIxNjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC0yNDksNiArMjQ5LDkgQEAgcHJvdGVjdGVk
OgogICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVTY3JvbGxDb3JuZXIoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3Ju
ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CisKKyAgICAv
LyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgYmxpdHRpbmcgdGhlIHBpeGVscworICAgIHZpcnR1YWwg
Ym9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBj
b25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKICAg
ICAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9ob3Jpem9udGFsU2Nyb2xsYmFy
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggNTEwYTMxMS4uMTg0Zjk4MyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc2Vy
dFBvc2l0aW9uZWRPYmplY3QoUmVuZGVyQm94Kik7CiAgICAgdm9pZCByZW1vdmVQb3NpdGlvbmVk
T2JqZWN0KFJlbmRlckJveCopOwogICAgIHZvaWQgcmVtb3ZlUG9zaXRpb25lZE9iamVjdHMoUmVu
ZGVyQmxvY2sqKTsKKyAgICBMaXN0SGFzaFNldDxSZW5kZXJCb3gqPiogcG9zaXRpb25lZE9iamVj
dHMoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uZWRPYmplY3RzOyB9CiAKICAgICB2b2lkIGFk
ZFBlcmNlbnRIZWlnaHREZXNjZW5kYW50KFJlbmRlckJveCopOwogICAgIHN0YXRpYyB2b2lkIHJl
bW92ZVBlcmNlbnRIZWlnaHREZXNjZW5kYW50KFJlbmRlckJveCopOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKaW5kZXggMWQ4ZmIxMi4uMWMwZTgzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBA
IC0xNDYsNiArMTQ2LDE2IEBAIHZvaWQgUmVuZGVyQm94OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsCiAgICAgICAgICAgICAg
ICAgcmVtb3ZlRmxvYXRpbmdPclBvc2l0aW9uZWRDaGlsZEZyb21CbG9ja0xpc3RzKCk7CiAgICAg
ICAgIH0KICAgICB9CisgICAgaWYgKEZyYW1lVmlldyAqZnJhbWVWaWV3ID0gdmlldygpLT5mcmFt
ZVZpZXcoKSkgeworICAgICAgICBib29sIG5ld1N0eWxlSXNGaXhlZCA9IG5ld1N0eWxlICYmIG5l
d1N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb247CisgICAgICAgIGJvb2wgb2xkU3R5
bGVJc0ZpeGVkID0gc3R5bGUoKSAmJiBzdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRp
b247CisgICAgICAgIGlmIChuZXdTdHlsZUlzRml4ZWQgIT0gb2xkU3R5bGVJc0ZpeGVkKSB7Cisg
ICAgICAgICAgICBpZiAobmV3U3R5bGVJc0ZpeGVkKQorICAgICAgICAgICAgICAgIGZyYW1lVmll
dy0+YWRkRml4ZWRPYmplY3QoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBm
cmFtZVZpZXctPnJlbW92ZUZpeGVkT2JqZWN0KCk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKGRpZmYsIG5ld1N0eWxlKTsKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDNmMzljMTUuLjgyMTJkY2EgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTY1Miw5ICsxNjUyLDYgQEAgdm9pZCBSZW5k
ZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVu
ZGVyU3R5bGUqIG5ld1MKICAgICAgICAgc19hZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsKIAog
ICAgIGlmICh2aWV3KCktPmZyYW1lVmlldygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBIGJldHRl
ciBzb2x1dGlvbiB3b3VsZCBiZSB0byBvbmx5IGludmFsaWRhdGUgdGhlIGZpeGVkIHJlZ2lvbnMg
d2hlbiBzY3JvbGxpbmcuICBJdCdzIG92ZXJraWxsIHRvCi0gICAgICAgIC8vIHByZXZlbnQgdGhl
IGVudGlyZSB2aWV3IGZyb20gYmxpdHRpbmcgb24gYSBzY3JvbGwuCi0KICAgICAgICAgYm9vbCBz
aG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSA9IGZhbHNlOwogI2lmIEVOQUJMRShGQVNU
X01PQklMRV9TQ1JPTExJTkcpCiAgICAgICAgIC8vIE9uIGxvdy1wb3dlcmVkL21vYmlsZSBkZXZp
Y2VzLCBwcmV2ZW50aW5nIGJsaXR0aW5nIG9uIGEgc2Nyb2xsIGNhbiBjYXVzZSBub3RpY2VhYmxl
IGRlbGF5cwpAQCAtMTY2NCwxMCArMTY2MSw4IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpzdHlsZVdp
bGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTCiAg
ICAgICAgIHNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlID0gdHJ1ZTsKICNlbmRpZgog
Ci0gICAgICAgIGJvb2wgbmV3U3R5bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgKG5ld1N0eWxl
LT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfHwgKCFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFn
ZSAmJiBuZXdTdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSkpOwotICAgICAgICBib29s
IG9sZFN0eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYgKG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0g
Rml4ZWRQb3NpdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8fCAoIXNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG1fc3R5bGUtPmhh
c0ZpeGVkQmFja2dyb3VuZEltYWdlKCkpKTsKKyAgICAgICAgYm9vbCBuZXdTdHlsZVNsb3dTY3Jv
bGwgPSBuZXdTdHlsZSAmJiAhc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbmV3
U3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCk7CisgICAgICAgIGJvb2wgb2xkU3R5bGVT
bG93U2Nyb2xsID0gbV9zdHlsZSAmJiAhc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2Ug
JiYgbV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKICAgICAgICAgaWYgKG9sZFN0
eWxlU2xvd1Njcm9sbCAhPSBuZXdTdHlsZVNsb3dTY3JvbGwpIHsKICAgICAgICAgICAgIGlmIChv
bGRTdHlsZVNsb3dTY3JvbGwpCiAgICAgICAgICAgICAgICAgdmlldygpLT5mcmFtZVZpZXcoKS0+
cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>51893</attachid>
            <date>2010-03-29 02:41:26 -0700</date>
            <delta_ts>2010-03-29 02:41:26 -0700</delta_ts>
            <desc>Screenshot with Win Safari</desc>
            <filename>33150.jpg</filename>
            <type>image/jpeg</type>
            <size>234896</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAPPA/ADASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDtZtRu
NbRbu7numtrlTJBapO9uiQuAUDeUwLMU2ltzMASQuB1qvp+nSab/AGbJaStYbBH9lbULsxbB0XZ5
uMDA4xU2nR7tE0k8/wDIOtf/AESlJdXEVqVVy25uwwSB6/5/xI64wgoXaOZym5WRKpRVCq16ABgA
arecf+RqN4/v33/g1vP/AI9VCTUFt5FM7II2APBBIGM569Me3r9K0ljDKGU5UjIIPBFUowfQTc49
Rm8f377/AMGt5/8AHqN4/v33/g1vP/j1VF1TT3tb26W5DQ2RdbhgCdhUZbjGTgelXlQOgZclWGQa
fs4dhc8yuLe1W7e7WK5Fy6CNphqV3vZQSQpbzskAknHual3j+/ff+DW8/wDj1SeV9aghmguJ7iGJ
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
Pc84HSn0AwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK5zx75v8AwhOp
eSAZCqAA/wC+uf0ro6wvGMQm8KX0RkMe4INwGcfOtTP4WVH4kcr8MI5IvDc6SMCwvpM4bP8Ayzj7
13SVxvw+jt4dHu47YsQl/Ir7lx8wjjzj26H8a7JKIO8UxyVpWM/VvvRfQ/0rF8Kf8j34j/68bD/0
K5ra1b70X0P9KxfCn/I9+I/+vGw/9Cua6/8Alz/Xc5J/xV6/oyn4Y/5E7w//ANgq0/8ARCV6HXnn
hj/kTvD/AP2CrT/0Qleh1FT4YmkN2FFFFYmgUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFUtWtJL7SriCEqtxt3wM54SVTujY+wYKeh6dD0q7RSaurFQk4yUl0KW
k6guq6Vb3oiaJpFw8TggxuDh0OQDkMCOnaoG/wBG8UK7fcvbURhjwFeJmYL7lhKxx2EZPPOJbOxl
s9SvpFlzZ3GySOHj93L83mEccBvlbqfmLHvzX8SRqNKF8SwbT5UvAUYqdqHMgGOpMe9cHg7ufWpd
+W76HRFQdZwj8MtPv2+52v6GvTI4o4VKxIqKWLEKMDJJJP1JJJ9zXPRXt7JrVvqj3H/EpndrOCEL
tUA8idmzhtzptTsRIhByxB0NPnl/tvWLSYS/K8U8JZgV8p4wuF54+eOTIwOue9CkmTPDyinr0v8A
ja3qrly7vrTT4hLe3UFtGW2h5pAgJ64ye/B/KrFZBRpfFv7+RvLgs1e2iONpdmcSOOMllUIM54Eh
/vc69UnczqQUUl1tcKKKKZmUtWtJL3TpIoSonVklh3n5fMRg6bsc7dyjOOcZxUtjdx6hp9texBlj
uIllQOMEBgCM+/NWKyI1vNHUwW9k17ZBiYlhkVZYgSTs2uVXYvIBDAgbV28Fql6O5tD34cnVO66e
v6GvRWX/AMJBZpxcRX1uR/rDLZyhI/XdIFKYHdt23vnHNX7a5t7y3W4tZ4p4XztkicMpwcHBHHUU
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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52663</attachid>
            <date>2010-04-06 13:35:22 -0700</date>
            <delta_ts>2010-06-11 16:19:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33150-20100406133509.patch</filename>
            <type>text/plain</type>
            <size>8035</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWNkMzliMS4uMGU5NTFjNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wNC0wNiAgSmFtZXMgUm9iaW5z
b24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJldmVydHMgdGhlIGluY29ycmVjdCBmaXhlZCBwb3NpdGlvbiBm
YXN0cGF0aCBzY3JvbGxpbmcgbG9naWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAgICAgVGhpcyBjb2RlIGRvZXMgbm90IHByb3Bl
cmx5IGhhbmRsZSBvdmVyZmxvdyBvciB0cmFuc2Zvcm1zIG9uIGZpeGVkCisgICAgICAgIHBvc2l0
aW9uIGVsZW1lbnRzLCBjYXVzaW5nIHJlcGFpbnQgYnVncyBvbiBzY3JvbGwuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjphZGRGaXhlZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnJlbW92ZUZpeGVkT2JqZWN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZp
ZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKToKKwogMjAxMC0wNC0wNiAgTWF0
dGlhcyBOaXNzbGVyICA8bW5pc3NsZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cCBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDQ2YWY5MzQuLjRiNmNjMzYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCkBAIC04NzAsOCArODcwLDYgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVNs
b3dSZXBhaW50T2JqZWN0KCkKIAogdm9pZCBGcmFtZVZpZXc6OmFkZEZpeGVkT2JqZWN0KCkKIHsK
LSAgICBpZiAoIW1fZml4ZWRPYmplY3RDb3VudCAmJiBwbGF0Zm9ybVdpZGdldCgpKQotICAgICAg
ICBzZXRDYW5CbGl0T25TY3JvbGwoZmFsc2UpOwogICAgICsrbV9maXhlZE9iamVjdENvdW50Owog
fQogCkBAIC04NzksNjQgKzg3Nyw2IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVGaXhlZE9iamVj
dCgpCiB7CiAgICAgQVNTRVJUKG1fZml4ZWRPYmplY3RDb3VudCA+IDApOwogICAgIC0tbV9maXhl
ZE9iamVjdENvdW50OwotICAgIGlmICghbV9maXhlZE9iamVjdENvdW50KQotICAgICAgICBzZXRD
YW5CbGl0T25TY3JvbGwoIXVzZVNsb3dSZXBhaW50cygpKTsKLX0KLQotYm9vbCBGcmFtZVZpZXc6
OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0
IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCi17Ci0gICAg
Y29uc3Qgc2l6ZV90IGZpeGVkT2JqZWN0VGhyZXNob2xkID0gNTsKLQotICAgIExpc3RIYXNoU2V0
PFJlbmRlckJveCo+KiBwb3NpdGlvbmVkT2JqZWN0cyA9IDA7Ci0gICAgaWYgKFJlbmRlclZpZXcq
IHJvb3QgPSBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKLSAgICAgICAgcG9zaXRpb25lZE9i
amVjdHMgPSByb290LT5wb3NpdGlvbmVkT2JqZWN0cygpOwotCi0gICAgaWYgKCFwb3NpdGlvbmVk
T2JqZWN0cyB8fCBwb3NpdGlvbmVkT2JqZWN0cy0+aXNFbXB0eSgpKSB7Ci0gICAgICAgIGhvc3RX
aW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLy8gR2V0IHRoZSByZWN0cyBvZiB0aGUg
Zml4ZWQgb2JqZWN0cyB2aXNpYmxlIGluIHRoZSByZWN0VG9TY3JvbGwKLSAgICBWZWN0b3I8SW50
UmVjdCwgZml4ZWRPYmplY3RUaHJlc2hvbGQ+IHN1YlJlY3RUb1VwZGF0ZTsKLSAgICBib29sIHVw
ZGF0ZUludmFsaWRhdGVkU3ViUmVjdCA9IHRydWU7Ci0gICAgTGlzdEhhc2hTZXQ8UmVuZGVyQm94
Kj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBvc2l0aW9uZWRPYmplY3RzLT5lbmQoKTsKLSAgICBm
b3IgKExpc3RIYXNoU2V0PFJlbmRlckJveCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBvc2l0aW9u
ZWRPYmplY3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUmVuZGVyQm94
KiByZW5kZXJCb3ggPSAqaXQ7Ci0gICAgICAgIGlmIChyZW5kZXJCb3gtPnN0eWxlKCktPnBvc2l0
aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBJ
bnRSZWN0IHRvcExldmVsUmVjdDsKLSAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gcmVuZGVy
Qm94LT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCk7Ci0gICAgICAgIHVwZGF0ZVJlY3Qu
bW92ZSgtc2Nyb2xsWCgpLCAtc2Nyb2xsWSgpKTsKLSAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNl
Y3QocmVjdFRvU2Nyb2xsKTsKLSAgICAgICAgaWYgKCF1cGRhdGVSZWN0LmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgaWYgKHN1YlJlY3RUb1VwZGF0ZS5zaXplKCkgPj0gZml4ZWRPYmplY3RUaHJl
c2hvbGQpIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVJbnZhbGlkYXRlZFN1YlJlY3QgPSBmYWxz
ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN1
YlJlY3RUb1VwZGF0ZS5hcHBlbmQodXBkYXRlUmVjdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICAvLyBTY3JvbGwgdGhlIHZpZXcKLSAgICBpZiAodXBkYXRlSW52YWxpZGF0ZWRTdWJSZWN0KSB7
Ci0gICAgICAgIC8vIDEpIHNjcm9sbAotICAgICAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3Jv
bGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7Ci0KLSAgICAgICAgLy8gMikgdXBkYXRl
IHRoZSBhcmVhIG9mIGZpeGVkIG9iamVjdHMgdGhhdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAotICAg
ICAgICBzaXplX3QgZml4T2JqZWN0c0NvdW50ID0gc3ViUmVjdFRvVXBkYXRlLnNpemUoKTsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaXhPYmplY3RzQ291bnQ7ICsraSkgewotICAg
ICAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gc3ViUmVjdFRvVXBkYXRlW2ldOwotICAgICAg
ICAgICAgSW50UmVjdCBzY3JvbGxlZFJlY3QgPSB1cGRhdGVSZWN0OwotICAgICAgICAgICAgc2Ny
b2xsZWRSZWN0Lm1vdmUoc2Nyb2xsRGVsdGEpOwotICAgICAgICAgICAgdXBkYXRlUmVjdC51bml0
ZShzY3JvbGxlZFJlY3QpOwotICAgICAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QocmVjdFRv
U2Nyb2xsKTsKLSAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+aW52YWxpZGF0ZUNvbnRlbnRzQW5k
V2luZG93KHVwZGF0ZVJlY3QsIGZhbHNlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KLSAgICAvLyB0aGUgbnVtYmVyIG9mIGZpeGVkIG9iamVjdHMgZXhjZWVkIHRo
ZSB0aHJlc2hvbGQsIHdlIGNhbm5vdCB1c2UgdGhlIGZhc3QgcGF0aAotICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OnNldElzT3ZlcmxhcHBlZChib29sIGlzT3ZlcmxhcHBl
ZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAppbmRleCBkZWJiMGE5Li5jYmQwY2I5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0yMDksOSAr
MjA5LDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNGcmFtZVZpZXdTY3JvbGxDb3JuZXIoUmVuZGVy
U2Nyb2xsYmFyUGFydCogc2Nyb2xsQ29ybmVyKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbENvcm5l
ciA9PSBzY3JvbGxDb3JuZXI7IH0KICAgICB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXIoKTsK
IAotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNv
bnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNv
bnN0IEludFJlY3QmIGNsaXBSZWN0KTsKLQogcHJpdmF0ZToKICAgICBGcmFtZVZpZXcoRnJhbWUq
KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggMjEzMWM5MS4uNDg3MjAwNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwCkBAIC01MTgsOCArNTE4LDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojpz
Y3JvbGxDb250ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKIAogICAgIGlmIChjYW5C
bGl0T25TY3JvbGwoKSkgeyAvLyBUaGUgbWFpbiBmcmFtZSBjYW4ganVzdCBibGl0IHRoZSBXZWJW
aWV3IHdpbmRvdwogICAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBzY3JvbGwgc3ViZnJh
bWVzIHdpdGggdGhpcyBmYXN0ZXIgcGF0aAotICAgICAgICBpZiAoIXNjcm9sbENvbnRlbnRzRmFz
dFBhdGgoLXNjcm9sbERlbHRhLCBzY3JvbGxWaWV3UmVjdCwgY2xpcFJlY3QpKQotICAgICAgICAg
ICAgaG9zdFdpbmRvdygpLT5pbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKHVwZGF0ZVJl
Y3QsIGZhbHNlKTsKKyAgICAgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoLXNjcm9sbERlbHRhLCBz
Y3JvbGxWaWV3UmVjdCwgY2xpcFJlY3QpOwogICAgIH0gZWxzZSB7IAogICAgICAgIC8vIFdlIG5l
ZWQgdG8gZ28gYWhlYWQgYW5kIHJlcGFpbnQgdGhlIGVudGlyZSBiYWNraW5nIHN0b3JlLiAgRG8g
aXQgbm93IGJlZm9yZSBtb3ZpbmcgdGhlCiAgICAgICAgLy8gd2luZG93ZWQgcGx1Z2lucy4KQEAg
LTUzMywxMiArNTMyLDYgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJ
bnRTaXplJiBzY3JvbGxEZWx0YSkKICAgICBob3N0V2luZG93KCktPmludmFsaWRhdGVXaW5kb3co
SW50UmVjdCgpLCB0cnVlKTsKIH0KIAotYm9vbCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zh
c3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9T
Y3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQotewotICAgIGhvc3RXaW5kb3coKS0+c2Ny
b2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQogSW50UG9pbnQgU2Nyb2xsVmlldzo6d2luZG93VG9Db250ZW50cyhjb25zdCBJbnRQ
b2ludCYgd2luZG93UG9pbnQpIGNvbnN0CiB7CiAgICAgSW50UG9pbnQgdmlld1BvaW50ID0gY29u
dmVydEZyb21Db250YWluaW5nV2luZG93KHdpbmRvd1BvaW50KTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgK
aW5kZXggYzM1NmE2MC4uNzVkYzJiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTI1Miw5ICsy
NTIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbENvcm5lcigp
OwogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKIAotICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBi
eSBibGl0dGluZyB0aGUgcGl4ZWxzCi0gICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFz
dFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Nj
cm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwotICAgIAogcHJpdmF0ZToKICAgICBSZWZQ
dHI8U2Nyb2xsYmFyPiBtX2hvcml6b250YWxTY3JvbGxiYXI7CiAgICAgUmVmUHRyPFNjcm9sbGJh
cj4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4
IDcwMDBiNzAuLjI0NDkyMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTY1
Miw2ICsxNjUyLDkgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1MKICAgICAgICAgc19hZmZlY3Rz
UGFyZW50QmxvY2sgPSBmYWxzZTsKIAogICAgIGlmICh2aWV3KCktPmZyYW1lVmlldygpKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBBIGJldHRlciBzb2x1dGlvbiB3b3VsZCBiZSB0byBvbmx5IGludmFs
aWRhdGUgdGhlIGZpeGVkIHJlZ2lvbnMgd2hlbiBzY3JvbGxpbmcuICBJdCdzIG92ZXJraWxsIHRv
CisgICAgICAgIC8vIHByZXZlbnQgdGhlIGVudGlyZSB2aWV3IGZyb20gYmxpdHRpbmcgb24gYSBz
Y3JvbGwuCisKICAgICAgICAgYm9vbCBzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSA9
IGZhbHNlOwogI2lmIEVOQUJMRShGQVNUX01PQklMRV9TQ1JPTExJTkcpCiAgICAgICAgIC8vIE9u
IGxvdy1wb3dlcmVkL21vYmlsZSBkZXZpY2VzLCBwcmV2ZW50aW5nIGJsaXR0aW5nIG9uIGEgc2Ny
b2xsIGNhbiBjYXVzZSBub3RpY2VhYmxlIGRlbGF5cwpAQCAtMTY2MSw4ICsxNjY0LDExIEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNv
bnN0IFJlbmRlclN0eWxlKiBuZXdTCiAgICAgICAgIHNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3Vu
ZEltYWdlID0gdHJ1ZTsKICNlbmRpZgogCi0gICAgICAgIGJvb2wgbmV3U3R5bGVTbG93U2Nyb2xs
ID0gbmV3U3R5bGUgJiYgIXNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG5ld1N0
eWxlLT5oYXNGaXhlZEJhY2tncm91bmRJbWFnZSgpOwotICAgICAgICBib29sIG9sZFN0eWxlU2xv
d1Njcm9sbCA9IG1fc3R5bGUgJiYgIXNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYm
IG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZEltYWdlKCk7CisgICAgICAgIGJvb2wgbmV3U3R5
bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgKG5ld1N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVk
UG9zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHx8ICghc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbmV3U3R5bGUtPmhhc0Zp
eGVkQmFja2dyb3VuZEltYWdlKCkpKTsKKyAgICAgICAgYm9vbCBvbGRTdHlsZVNsb3dTY3JvbGwg
PSBtX3N0eWxlICYmIChtX3N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICghc2hvdWxkQmxp
dE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1h
Z2UoKSkpOworCiAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwgIT0gbmV3U3R5bGVTbG93
U2Nyb2xsKSB7CiAgICAgICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsKQogICAgICAgICAg
ICAgICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54927</attachid>
            <date>2010-05-03 08:02:38 -0700</date>
            <delta_ts>2010-06-17 13:33:18 -0700</delta_ts>
            <desc>Updated version of the patch</desc>
            <filename>33150.patch</filename>
            <type>text/plain</type>
            <size>9979</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWNhNWVjOS4uYWY2OTY3NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0wNS0wMyAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUg
d2hlbiB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAg
ICAgVGhlIGZyYW1lIHZpZXcgdGFrZSBpbnRvIGFjb3VudCB0aGUgbGlzdCBvZiBmaXhlZCBvYmpl
Y3Qgd2hlbiBzY3JvbGxpbmcKKyAgICAgICAgdGhlIHZpZXcuIElmIHRoZSBudW1iZXIgb2Ygb2Jq
ZWN0IGlzIGxvd2VyIHRoYW4gYSBjZXJ0YWluIHRocmVzaG9sZCwgdGhlIHBpeGVsCisgICAgICAg
IGFyZSBibGl0dGVkLCBhbmQgdGhlIGludmFsaWRhdGVkIGFyZWEgdXBkYXRlZC4KKworICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRk
Rml4ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVGaXhlZE9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBh
dGgpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Ny
b2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRo
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZXBhaW50
UmVjdEluY2x1ZGluZ0Rlc2NlbmRhbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6c3R5bGVXaWxsQ2hhbmdlKToKKwogMjAxMC0wNS0wMyAgVGhv
bWFzIFphbmRlciA8dC56YW5kZXJAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBhNTU1N2I1Li4zNWVkMjEyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcApAQCAtODcwLDYgKzg3MCw4IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVTbG93UmVw
YWludE9iamVjdCgpCiAKIHZvaWQgRnJhbWVWaWV3OjphZGRGaXhlZE9iamVjdCgpCiB7CisgICAg
aWYgKCFtX2ZpeGVkT2JqZWN0Q291bnQgJiYgcGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgc2V0
Q2FuQmxpdE9uU2Nyb2xsKGZhbHNlKTsKICAgICArK21fZml4ZWRPYmplY3RDb3VudDsKIH0KIApA
QCAtODc3LDYgKzg3OSw3NCBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlRml4ZWRPYmplY3QoKQog
ewogICAgIEFTU0VSVChtX2ZpeGVkT2JqZWN0Q291bnQgPiAwKTsKICAgICAtLW1fZml4ZWRPYmpl
Y3RDb3VudDsKKyAgICBpZiAoIW1fZml4ZWRPYmplY3RDb3VudCkKKyAgICAgICAgc2V0Q2FuQmxp
dE9uU2Nyb2xsKCF1c2VTbG93UmVwYWludHMoKSk7Cit9CisKK2Jvb2wgRnJhbWVWaWV3OjpzY3Jv
bGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRS
ZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIGNvbnN0
IHNpemVfdCBmaXhlZE9iamVjdFRocmVzaG9sZCA9IDU7CisKKyAgICBMaXN0SGFzaFNldDxSZW5k
ZXJCb3gqPiogcG9zaXRpb25lZE9iamVjdHMgPSAwOworICAgIGlmIChSZW5kZXJWaWV3KiByb290
ID0gbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCisgICAgICAgIHBvc2l0aW9uZWRPYmplY3Rz
ID0gcm9vdC0+cG9zaXRpb25lZE9iamVjdHMoKTsKKworICAgIGlmICghcG9zaXRpb25lZE9iamVj
dHMgfHwgcG9zaXRpb25lZE9iamVjdHMtPmlzRW1wdHkoKSkgeworICAgICAgICBob3N0V2luZG93
KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIGdldCBvdXIgcG9zaXRpb24KKyAgICBpbnQg
b2Zmc2V0WCA9IDA7CisgICAgaW50IG9mZnNldFkgPSAwOworICAgIFNjcm9sbFZpZXcqIGN1cnJl
bnQgPSB0aGlzOworICAgIHdoaWxlIChjdXJyZW50KSB7CisgICAgICAgIG9mZnNldFggKz0gY3Vy
cmVudC0+eCgpIC0gY3VycmVudC0+c2Nyb2xsWCgpOworICAgICAgICBvZmZzZXRZICs9IGN1cnJl
bnQtPnkoKSAtIGN1cnJlbnQtPnNjcm9sbFkoKTsKKyAgICAgICAgY3VycmVudCA9IGN1cnJlbnQt
PnBhcmVudCgpOworICAgIH0KKworICAgIC8vIEdldCB0aGUgcmVjdHMgb2YgdGhlIGZpeGVkIG9i
amVjdHMgdmlzaWJsZSBpbiB0aGUgcmVjdFRvU2Nyb2xsCisgICAgVmVjdG9yPEludFJlY3QsIGZp
eGVkT2JqZWN0VGhyZXNob2xkPiBzdWJSZWN0VG9VcGRhdGU7CisgICAgYm9vbCB1cGRhdGVJbnZh
bGlkYXRlZFN1YlJlY3QgPSB0cnVlOworICAgIExpc3RIYXNoU2V0PFJlbmRlckJveCo+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBwb3NpdGlvbmVkT2JqZWN0cy0+ZW5kKCk7CisgICAgZm9yIChMaXN0
SGFzaFNldDxSZW5kZXJCb3gqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwb3NpdGlvbmVkT2JqZWN0
cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJlbmRlckJveCogcmVuZGVy
Qm94ID0gKml0OworICAgICAgICBpZiAocmVuZGVyQm94LT5zdHlsZSgpLT5wb3NpdGlvbigpICE9
IEZpeGVkUG9zaXRpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgSW50UmVjdCB1
cGRhdGVSZWN0ID0gcmVuZGVyQm94LT5sYXllcigpLT5yZXBhaW50UmVjdEluY2x1ZGluZ0Rlc2Nl
bmRhbnRzKCk7CisgICAgICAgIHVwZGF0ZVJlY3QubW92ZShvZmZzZXRYLCBvZmZzZXRZKTsKKwor
ICAgICAgICB1cGRhdGVSZWN0LmludGVyc2VjdChyZWN0VG9TY3JvbGwpOworICAgICAgICBpZiAo
IXVwZGF0ZVJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoc3ViUmVjdFRvVXBkYXRl
LnNpemUoKSA+PSBmaXhlZE9iamVjdFRocmVzaG9sZCkgeworICAgICAgICAgICAgICAgIHVwZGF0
ZUludmFsaWRhdGVkU3ViUmVjdCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgc3ViUmVjdFRvVXBkYXRlLmFwcGVuZCh1cGRhdGVSZWN0
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFNjcm9sbCB0aGUgdmlldworICAgIGlmICh1
cGRhdGVJbnZhbGlkYXRlZFN1YlJlY3QpIHsKKyAgICAgICAgLy8gMSkgc2Nyb2xsCisgICAgICAg
IGhvc3RXaW5kb3coKS0+c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0
KTsKKworICAgICAgICAvLyAyKSB1cGRhdGUgdGhlIGFyZWEgb2YgZml4ZWQgb2JqZWN0cyB0aGF0
IGhhcyBiZWVuIGludmFsaWRhdGVkCisgICAgICAgIHNpemVfdCBmaXhPYmplY3RzQ291bnQgPSBz
dWJSZWN0VG9VcGRhdGUuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZp
eE9iamVjdHNDb3VudDsgKytpKSB7CisgICAgICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSBz
dWJSZWN0VG9VcGRhdGVbaV07CisgICAgICAgICAgICBJbnRSZWN0IHNjcm9sbGVkUmVjdCA9IHVw
ZGF0ZVJlY3Q7CisgICAgICAgICAgICBzY3JvbGxlZFJlY3QubW92ZShzY3JvbGxEZWx0YSk7Cisg
ICAgICAgICAgICB1cGRhdGVSZWN0LnVuaXRlKHNjcm9sbGVkUmVjdCk7CisgICAgICAgICAgICB1
cGRhdGVSZWN0LmludGVyc2VjdChyZWN0VG9TY3JvbGwpOworICAgICAgICAgICAgaG9zdFdpbmRv
dygpLT5pbnZhbGlkYXRlQ29udGVudHNBbmRXaW5kb3codXBkYXRlUmVjdCwgZmFsc2UpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIHRoZSBudW1iZXIg
b2YgZml4ZWQgb2JqZWN0cyBleGNlZWQgdGhlIHRocmVzaG9sZCwgd2UgY2Fubm90IHVzZSB0aGUg
ZmFzdCBwYXRoCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIEZyYW1lVmlldzo6c2V0SXNP
dmVybGFwcGVkKGJvb2wgaXNPdmVybGFwcGVkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IGExZmViZWYuLjg3ZTk4
YjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgKQEAgLTIwOCw2ICsyMDgsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Zy
YW1lVmlld1Njcm9sbENvcm5lcihSZW5kZXJTY3JvbGxiYXJQYXJ0KiBzY3JvbGxDb3JuZXIpIGNv
bnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29ybmVyID09IHNjcm9sbENvcm5lcjsgfQogICAgIHZvaWQg
aW52YWxpZGF0ZVNjcm9sbENvcm5lcigpOwogCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBib29s
IHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0
IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOworCiBwcml2
YXRlOgogICAgIEZyYW1lVmlldyhGcmFtZSopOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRl
eCBiMTg1ZGY3Li42Mjg2YTljIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTUxMyw3ICs1
MTMsOCBAQCB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhKQogCiAgICAgaWYgKGNhbkJsaXRPblNjcm9sbCgpKSB7IC8vIFRoZSBtYWluIGZy
YW1lIGNhbiBqdXN0IGJsaXQgdGhlIFdlYlZpZXcgd2luZG93CiAgICAgICAgIC8vIEZJWE1FOiBG
aW5kIGEgd2F5IHRvIHNjcm9sbCBzdWJmcmFtZXMgd2l0aCB0aGlzIGZhc3RlciBwYXRoCi0gICAg
ICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xsKC1zY3JvbGxEZWx0YSwgc2Nyb2xsVmlld1JlY3QsIGNs
aXBSZWN0KTsKKyAgICAgICAgaWYgKCFzY3JvbGxDb250ZW50c0Zhc3RQYXRoKC1zY3JvbGxEZWx0
YSwgc2Nyb2xsVmlld1JlY3QsIGNsaXBSZWN0KSkKKyAgICAgICAgICAgIGhvc3RXaW5kb3coKS0+
aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbCh1cGRhdGVSZWN0LCBmYWxzZSk7CiAgICAg
fSBlbHNlIHsgCiAgICAgICAgLy8gV2UgbmVlZCB0byBnbyBhaGVhZCBhbmQgcmVwYWludCB0aGUg
ZW50aXJlIGJhY2tpbmcgc3RvcmUuICBEbyBpdCBub3cgYmVmb3JlIG1vdmluZyB0aGUKICAgICAg
ICAvLyB3aW5kb3dlZCBwbHVnaW5zLgpAQCAtNTI3LDYgKzUyOCwxMiBAQCB2b2lkIFNjcm9sbFZp
ZXc6OnNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQogICAgIGhvc3RX
aW5kb3coKS0+aW52YWxpZGF0ZVdpbmRvdyhJbnRSZWN0KCksIHRydWUpOwogfQogCitib29sIFNj
cm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3Qp
Cit7CisgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwg
Y2xpcFJlY3QpOworICAgIHJldHVybiB0cnVlOworfQorCiBJbnRQb2ludCBTY3JvbGxWaWV3Ojp3
aW5kb3dUb0NvbnRlbnRzKGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgY29uc3QKIHsKICAg
ICBJbnRQb2ludCB2aWV3UG9pbnQgPSBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cod2luZG93
UG9pbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCBjMTk1YmRkLi45NDM0ZDRkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuaApAQCAtMjU4LDYgKzI1OCw5IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlU2Nyb2xsQ29ybmVyKCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xs
Q29ybmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwogCisg
ICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5IGJsaXR0aW5nIHRoZSBwaXhlbHMKKyAgICB2aXJ0
dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7
CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9ob3Jpem9udGFsU2Nyb2xsYmFy
OwogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1fdmVydGljYWxTY3JvbGxiYXI7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKaW5kZXggYTY0NWMxYi4uZDU5MTlkYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcApAQCAtMzY3LDYgKzM2NywxNCBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVM
YXllclBvc2l0aW9ucyhVcGRhdGVMYXllclBvc2l0aW9uc0ZsYWdzIGZsYWdzLCBJbnRQb2ludAog
ICAgICAgICAqY2FjaGVkT2Zmc2V0ID0gb2xkQ2FjaGVkT2Zmc2V0OwogfQogCitJbnRSZWN0IFJl
bmRlckxheWVyOjpyZXBhaW50UmVjdEluY2x1ZGluZ0Rlc2NlbmRhbnRzKCkgY29uc3QKK3sKKyAg
ICBJbnRSZWN0IHJlcGFpbnRSZWN0ID0gbV9yZXBhaW50UmVjdDsKKyAgICBmb3IgKFJlbmRlckxh
eWVyKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nKCkpCisgICAgICAgIHJlcGFpbnRSZWN0LnVuaXRlKGNoaWxkLT5yZXBhaW50UmVjdEluY2x1
ZGluZ0Rlc2NlbmRhbnRzKCkpOworICAgIHJldHVybiByZXBhaW50UmVjdDsKK30KKwogdm9pZCBS
ZW5kZXJMYXllcjo6Y29tcHV0ZVJlcGFpbnRSZWN0cygpCiB7CiAgICAgUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIgPSByZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50
KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA0OTUwNWI2Li5iM2JiYmUxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgKQEAgLTM5NCw2ICszOTQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBS
ZXR1cm4gYSBjYWNoZWQgcmVwYWludCByZWN0LCBjb21wdXRlZCByZWxhdGl2ZSB0byB0aGUgbGF5
ZXIgcmVuZGVyZXIncyBjb250YWluZXJGb3JSZXBhaW50LgogICAgIEludFJlY3QgcmVwYWludFJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX3JlcGFpbnRSZWN0OyB9CisgICAgSW50UmVjdCByZXBhaW50
UmVjdEluY2x1ZGluZ0Rlc2NlbmRhbnRzKCkgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlUmVwYWlu
dFJlY3RzKCk7CiAgICAgdm9pZCB1cGRhdGVSZXBhaW50UmVjdHNBZnRlclNjcm9sbChib29sIGZp
eGVkID0gZmFsc2UpOwogICAgIHZvaWQgc2V0TmVlZHNGdWxsUmVwYWludChib29sIGYgPSB0cnVl
KSB7IG1fbmVlZHNGdWxsUmVwYWludCA9IGY7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CmluZGV4IGJkNjI0M2EuLmYzZmI1M2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApA
QCAtMTYyMCw5ICsxNjIwLDYgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShT
dHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1MKICAgICAgICAgc19h
ZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsKIAogICAgIGlmICh2aWV3KCktPmZyYW1lVmlldygp
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBIGJldHRlciBzb2x1dGlvbiB3b3VsZCBiZSB0byBvbmx5
IGludmFsaWRhdGUgdGhlIGZpeGVkIHJlZ2lvbnMgd2hlbiBzY3JvbGxpbmcuICBJdCdzIG92ZXJr
aWxsIHRvCi0gICAgICAgIC8vIHByZXZlbnQgdGhlIGVudGlyZSB2aWV3IGZyb20gYmxpdHRpbmcg
b24gYSBzY3JvbGwuCi0KICAgICAgICAgYm9vbCBzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJ
bWFnZSA9IGZhbHNlOwogI2lmIEVOQUJMRShGQVNUX01PQklMRV9TQ1JPTExJTkcpCiAgICAgICAg
IC8vIE9uIGxvdy1wb3dlcmVkL21vYmlsZSBkZXZpY2VzLCBwcmV2ZW50aW5nIGJsaXR0aW5nIG9u
IGEgc2Nyb2xsIGNhbiBjYXVzZSBub3RpY2VhYmxlIGRlbGF5cwpAQCAtMTYzMiwxMSArMTYyOSw4
IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTCiAgICAgICAgIHNob3VsZEJsaXRPbkZpeGVkQmFj
a2dyb3VuZEltYWdlID0gdHJ1ZTsKICNlbmRpZgogCi0gICAgICAgIGJvb2wgbmV3U3R5bGVTbG93
U2Nyb2xsID0gbmV3U3R5bGUgJiYgKG5ld1N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRp
b24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgh
c2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbmV3U3R5bGUtPmhhc0ZpeGVkQmFj
a2dyb3VuZEltYWdlKCkpKTsKLSAgICAgICAgYm9vbCBvbGRTdHlsZVNsb3dTY3JvbGwgPSBtX3N0
eWxlICYmIChtX3N0eWxlLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICghc2hvdWxkQmxpdE9uRml4
ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbV9zdHlsZS0+aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSkp
OwotCisgICAgICAgIGJvb2wgbmV3U3R5bGVTbG93U2Nyb2xsID0gbmV3U3R5bGUgJiYgIXNob3Vs
ZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG5ld1N0eWxlLT5oYXNGaXhlZEJhY2tncm91
bmRJbWFnZSgpOworICAgICAgICBib29sIG9sZFN0eWxlU2xvd1Njcm9sbCA9IG1fc3R5bGUgJiYg
IXNob3VsZEJsaXRPbkZpeGVkQmFja2dyb3VuZEltYWdlICYmIG1fc3R5bGUtPmhhc0ZpeGVkQmFj
a2dyb3VuZEltYWdlKCk7CiAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dTY3JvbGwgIT0gbmV3U3R5
bGVTbG93U2Nyb2xsKSB7CiAgICAgICAgICAgICBpZiAob2xkU3R5bGVTbG93U2Nyb2xsKQogICAg
ICAgICAgICAgICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0
KCk7Cg==
</data>
<flag name="review"
          id="39005"
          type_id="1"
          status="-"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="39006"
          type_id="3"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59031</attachid>
            <date>2010-06-17 13:33:18 -0700</date>
            <delta_ts>2010-06-21 13:17:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>33150.patch</filename>
            <type>text/plain</type>
            <size>9990</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzQ3YWI0Yi4uNDFmZmI5MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwzNSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIERvIG5vdCByZW5kZXIgdGhlIGZ1bGwgZnJhbWUgd2hl
biB0aGVyZSBpcyBzb21lIGVsZW1lbnRzIHdpdGggZml4ZWQgcG9zaXRpb25pbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTUwCisKKyAgICAgICAg
RG8gbm90IHJlbmRlciB0aGUgZnVsbCBmcmFtZSB3aGVuIHRoZXJlIGlzIHNvbWUgZWxlbWVudHMg
d2l0aCBmaXhlZCBwb3NpdGlvbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzMxNTAKKworICAgICAgICBUaGUgZnJhbWUgdmlldyB0YWtlIGludG8g
YWNvdW50IHRoZSBsaXN0IG9mIGZpeGVkIG9iamVjdCB3aGVuIHNjcm9sbGluZworICAgICAgICB0
aGUgdmlldy4gSWYgdGhlIG51bWJlciBvZiBvYmplY3QgaXMgbG93ZXIgdGhhbiBhIGNlcnRhaW4g
dGhyZXNob2xkLCB0aGUgcGl4ZWwKKyAgICAgICAgYXJlIGJsaXR0ZWQsIGFuZCB0aGUgaW52YWxp
ZGF0ZWQgYXJlYSB1cGRhdGVkLgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRGaXhlZE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnJlbW92ZUZpeGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aCk6CisgICAgICAgICogcGFnZS9GcmFtZVZp
ZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bFZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bFZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlcGFpbnRSZWN0SW5jbHVkaW5nRGVzY2VuZGFudHMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzdHlsZVdp
bGxDaGFuZ2UpOgorCisyMDEwLTA2LTE3ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91
bGFpbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
ICAgICAgICAgW1F0XSBEZWNvZGUgaW1hZ2VzIGRpcmVjdGx5IHRvIFFQaXhtYXAKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNzk3CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKaW5kZXggZWM5MzFjZi4uNGFiYmM0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTkxMiw2ICs5MTIs
OCBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoKQogCiB2b2lkIEZy
YW1lVmlldzo6YWRkRml4ZWRPYmplY3QoKQogeworICAgIGlmICghbV9maXhlZE9iamVjdENvdW50
ICYmIHBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHNldENhbkJsaXRPblNjcm9sbChmYWxzZSk7
CiAgICAgKyttX2ZpeGVkT2JqZWN0Q291bnQ7CiB9CiAKQEAgLTkxOSw2ICs5MjEsNjQgQEAgdm9p
ZCBGcmFtZVZpZXc6OnJlbW92ZUZpeGVkT2JqZWN0KCkKIHsKICAgICBBU1NFUlQobV9maXhlZE9i
amVjdENvdW50ID4gMCk7CiAgICAgLS1tX2ZpeGVkT2JqZWN0Q291bnQ7CisgICAgaWYgKCFtX2Zp
eGVkT2JqZWN0Q291bnQpCisgICAgICAgIHNldENhbkJsaXRPblNjcm9sbCghdXNlU2xvd1JlcGFp
bnRzKCkpOworfQorCitib29sIEZyYW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25z
dCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBjb25zdCBzaXplX3QgZml4ZWRPYmplY3RUaHJl
c2hvbGQgPSA1OworCisgICAgUmVuZGVyQmxvY2s6OlBvc2l0aW9uZWRPYmplY3RzTGlzdEhhc2hT
ZXQqIHBvc2l0aW9uZWRPYmplY3RzID0gMDsKKyAgICBpZiAoUmVuZGVyVmlldyogcm9vdCA9IG1f
ZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICBwb3NpdGlvbmVkT2JqZWN0cyA9IHJv
b3QtPnBvc2l0aW9uZWRPYmplY3RzKCk7CisKKyAgICBpZiAoIXBvc2l0aW9uZWRPYmplY3RzIHx8
IHBvc2l0aW9uZWRPYmplY3RzLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgaG9zdFdpbmRvdygpLT5z
Y3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwgY2xpcFJlY3QpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBHZXQgdGhlIHJlY3RzIG9mIHRoZSBmaXhlZCBvYmpl
Y3RzIHZpc2libGUgaW4gdGhlIHJlY3RUb1Njcm9sbAorICAgIFZlY3RvcjxJbnRSZWN0LCBmaXhl
ZE9iamVjdFRocmVzaG9sZD4gc3ViUmVjdFRvVXBkYXRlOworICAgIGJvb2wgdXBkYXRlSW52YWxp
ZGF0ZWRTdWJSZWN0ID0gdHJ1ZTsKKyAgICBSZW5kZXJCbG9jazo6UG9zaXRpb25lZE9iamVjdHNM
aXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcG9zaXRpb25lZE9iamVjdHMtPmVuZCgp
OworICAgIGZvciAoUmVuZGVyQmxvY2s6OlBvc2l0aW9uZWRPYmplY3RzTGlzdEhhc2hTZXQ6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gcG9zaXRpb25lZE9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICBSZW5kZXJCb3gqIHJlbmRlckJveCA9ICppdDsKKyAgICAgICAgaWYg
KHJlbmRlckJveC0+c3R5bGUoKS0+cG9zaXRpb24oKSAhPSBGaXhlZFBvc2l0aW9uKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IHJlbmRlckJveC0+
bGF5ZXIoKS0+cmVwYWludFJlY3RJbmNsdWRpbmdEZXNjZW5kYW50cygpOworICAgICAgICB1cGRh
dGVSZWN0ID0gY29udGVudHNUb1dpbmRvdyh1cGRhdGVSZWN0KTsKKworICAgICAgICB1cGRhdGVS
ZWN0LmludGVyc2VjdChyZWN0VG9TY3JvbGwpOworICAgICAgICBpZiAoIXVwZGF0ZVJlY3QuaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoc3ViUmVjdFRvVXBkYXRlLnNpemUoKSA+PSBmaXhl
ZE9iamVjdFRocmVzaG9sZCkgeworICAgICAgICAgICAgICAgIHVwZGF0ZUludmFsaWRhdGVkU3Vi
UmVjdCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgc3ViUmVjdFRvVXBkYXRlLmFwcGVuZCh1cGRhdGVSZWN0KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIFNjcm9sbCB0aGUgdmlldworICAgIGlmICh1cGRhdGVJbnZhbGlkYXRl
ZFN1YlJlY3QpIHsKKyAgICAgICAgLy8gMSkgc2Nyb2xsCisgICAgICAgIGhvc3RXaW5kb3coKS0+
c2Nyb2xsKHNjcm9sbERlbHRhLCByZWN0VG9TY3JvbGwsIGNsaXBSZWN0KTsKKworICAgICAgICAv
LyAyKSB1cGRhdGUgdGhlIGFyZWEgb2YgZml4ZWQgb2JqZWN0cyB0aGF0IGhhcyBiZWVuIGludmFs
aWRhdGVkCisgICAgICAgIHNpemVfdCBmaXhPYmplY3RzQ291bnQgPSBzdWJSZWN0VG9VcGRhdGUu
c2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpeE9iamVjdHNDb3VudDsg
KytpKSB7CisgICAgICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSBzdWJSZWN0VG9VcGRhdGVb
aV07CisgICAgICAgICAgICBJbnRSZWN0IHNjcm9sbGVkUmVjdCA9IHVwZGF0ZVJlY3Q7CisgICAg
ICAgICAgICBzY3JvbGxlZFJlY3QubW92ZShzY3JvbGxEZWx0YSk7CisgICAgICAgICAgICB1cGRh
dGVSZWN0LnVuaXRlKHNjcm9sbGVkUmVjdCk7CisgICAgICAgICAgICB1cGRhdGVSZWN0LmludGVy
c2VjdChyZWN0VG9TY3JvbGwpOworICAgICAgICAgICAgaG9zdFdpbmRvdygpLT5pbnZhbGlkYXRl
Q29udGVudHNBbmRXaW5kb3codXBkYXRlUmVjdCwgZmFsc2UpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIHRoZSBudW1iZXIgb2YgZml4ZWQgb2JqZWN0
cyBleGNlZWQgdGhlIHRocmVzaG9sZCwgd2UgY2Fubm90IHVzZSB0aGUgZmFzdCBwYXRoCisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIEZyYW1lVmlldzo6c2V0SXNPdmVybGFwcGVkKGJvb2wg
aXNPdmVybGFwcGVkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDY5Y2M2N2EuLmVjNmZhMzIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
QEAgLTIyMiw2ICsyMjIsOSBAQCBwdWJsaWM6CiAgICAgZmxvYXQgcGFnZVpvb21GYWN0b3IoKSBj
b25zdCB7IHJldHVybiBzaG91bGRBcHBseVBhZ2Vab29tKCkgPyBtX3pvb21GYWN0b3IgOiAxLjBm
OyB9CiAgICAgZmxvYXQgdGV4dFpvb21GYWN0b3IoKSBjb25zdCB7IHJldHVybiBzaG91bGRBcHBs
eVRleHRab29tKCkgPyBtX3pvb21GYWN0b3IgOiAxLjBmOyB9CiAKK3Byb3RlY3RlZDoKKyAgICB2
aXJ0dWFsIGJvb2wgc2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxE
ZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVj
dCk7CisKIHByaXZhdGU6CiAgICAgRnJhbWVWaWV3KEZyYW1lKik7CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwCmluZGV4IGNjNTc3YjQuLmIzOWRkYzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApA
QCAtNTEzLDcgKzUxMyw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMoY29uc3Qg
SW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAKICAgICBpZiAoY2FuQmxpdE9uU2Nyb2xsKCkpIHsgLy8g
VGhlIG1haW4gZnJhbWUgY2FuIGp1c3QgYmxpdCB0aGUgV2ViVmlldyB3aW5kb3cKICAgICAgICAg
Ly8gRklYTUU6IEZpbmQgYSB3YXkgdG8gc2Nyb2xsIHN1YmZyYW1lcyB3aXRoIHRoaXMgZmFzdGVy
IHBhdGgKLSAgICAgICAgaG9zdFdpbmRvdygpLT5zY3JvbGwoLXNjcm9sbERlbHRhLCBzY3JvbGxW
aWV3UmVjdCwgY2xpcFJlY3QpOworICAgICAgICBpZiAoIXNjcm9sbENvbnRlbnRzRmFzdFBhdGgo
LXNjcm9sbERlbHRhLCBzY3JvbGxWaWV3UmVjdCwgY2xpcFJlY3QpKQorICAgICAgICAgICAgaG9z
dFdpbmRvdygpLT5pbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKHVwZGF0ZVJlY3QsIGZh
bHNlKTsKICAgICB9IGVsc2UgeyAKICAgICAgICAvLyBXZSBuZWVkIHRvIGdvIGFoZWFkIGFuZCBy
ZXBhaW50IHRoZSBlbnRpcmUgYmFja2luZyBzdG9yZS4gIERvIGl0IG5vdyBiZWZvcmUgbW92aW5n
IHRoZQogICAgICAgIC8vIHdpbmRvd2VkIHBsdWdpbnMuCkBAIC01MjcsNiArNTI4LDEyIEBAIHZv
aWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEp
CiAgICAgaG9zdFdpbmRvdygpLT5pbnZhbGlkYXRlV2luZG93KEludFJlY3QoKSwgdHJ1ZSk7CiB9
CiAKK2Jvb2wgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXpl
JiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0
JiBjbGlwUmVjdCkKK3sKKyAgICBob3N0V2luZG93KCktPnNjcm9sbChzY3JvbGxEZWx0YSwgcmVj
dFRvU2Nyb2xsLCBjbGlwUmVjdCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIEludFBvaW50IFNj
cm9sbFZpZXc6OndpbmRvd1RvQ29udGVudHMoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSBj
b25zdAogewogICAgIEludFBvaW50IHZpZXdQb2ludCA9IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dp
bmRvdyh3aW5kb3dQb2ludCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IDFiMzhjMGIuLmI3ODI3
YjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC0yNTgsNiArMjU4LDkgQEAgcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKTsKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVy
UmVjdCk7CiAKKyAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgYmxpdHRpbmcgdGhlIHBpeGVs
cworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3Qm
IGNsaXBSZWN0KTsKKwogcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hvcml6b250
YWxTY3JvbGxiYXI7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA0MWY0YWNhLi43ZmViN2M5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zNzYsNiArMzc2LDE0IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKFVwZGF0ZUxheWVyUG9zaXRpb25zRmxhZ3MgZmxhZ3Ms
IEludFBvaW50CiAgICAgICAgICpjYWNoZWRPZmZzZXQgPSBvbGRDYWNoZWRPZmZzZXQ7CiB9CiAK
K0ludFJlY3QgUmVuZGVyTGF5ZXI6OnJlcGFpbnRSZWN0SW5jbHVkaW5nRGVzY2VuZGFudHMoKSBj
b25zdAoreworICAgIEludFJlY3QgcmVwYWludFJlY3QgPSBtX3JlcGFpbnRSZWN0OworICAgIGZv
ciAoUmVuZGVyTGF5ZXIqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgcmVwYWludFJlY3QudW5pdGUoY2hpbGQtPnJlcGFp
bnRSZWN0SW5jbHVkaW5nRGVzY2VuZGFudHMoKSk7CisgICAgcmV0dXJuIHJlcGFpbnRSZWN0Owor
fQorCiB2b2lkIFJlbmRlckxheWVyOjpjb21wdXRlUmVwYWludFJlY3RzKCkKIHsKICAgICBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5l
ckZvclJlcGFpbnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDRkODdlZDguLjM3NzQx
ZWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMzk1LDYgKzM5NSw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFJldHVybiBhIGNhY2hlZCByZXBhaW50IHJlY3QsIGNvbXB1dGVkIHJlbGF0aXZl
IHRvIHRoZSBsYXllciByZW5kZXJlcidzIGNvbnRhaW5lckZvclJlcGFpbnQuCiAgICAgSW50UmVj
dCByZXBhaW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludFJlY3Q7IH0KKyAgICBJbnRS
ZWN0IHJlcGFpbnRSZWN0SW5jbHVkaW5nRGVzY2VuZGFudHMoKSBjb25zdDsKICAgICB2b2lkIGNv
bXB1dGVSZXBhaW50UmVjdHMoKTsKICAgICB2b2lkIHVwZGF0ZVJlcGFpbnRSZWN0c0FmdGVyU2Ny
b2xsKGJvb2wgZml4ZWQgPSBmYWxzZSk7CiAgICAgdm9pZCBzZXROZWVkc0Z1bGxSZXBhaW50KGJv
b2wgZiA9IHRydWUpIHsgbV9uZWVkc0Z1bGxSZXBhaW50ID0gZjsgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKaW5kZXggZGM2MzdkYy4uZGNlYmNkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCkBAIC0xNjMwLDkgKzE2MzAsNiBAQCB2b2lkIFJlbmRlck9iamVjdDo6c3R5bGVX
aWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3Uwog
ICAgICAgICBzX2FmZmVjdHNQYXJlbnRCbG9jayA9IGZhbHNlOwogCiAgICAgaWYgKHZpZXcoKS0+
ZnJhbWVWaWV3KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IEEgYmV0dGVyIHNvbHV0aW9uIHdvdWxk
IGJlIHRvIG9ubHkgaW52YWxpZGF0ZSB0aGUgZml4ZWQgcmVnaW9ucyB3aGVuIHNjcm9sbGluZy4g
IEl0J3Mgb3ZlcmtpbGwgdG8KLSAgICAgICAgLy8gcHJldmVudCB0aGUgZW50aXJlIHZpZXcgZnJv
bSBibGl0dGluZyBvbiBhIHNjcm9sbC4KLQogICAgICAgICBib29sIHNob3VsZEJsaXRPbkZpeGVk
QmFja2dyb3VuZEltYWdlID0gZmFsc2U7CiAjaWYgRU5BQkxFKEZBU1RfTU9CSUxFX1NDUk9MTElO
RykKICAgICAgICAgLy8gT24gbG93LXBvd2VyZWQvbW9iaWxlIGRldmljZXMsIHByZXZlbnRpbmcg
YmxpdHRpbmcgb24gYSBzY3JvbGwgY2FuIGNhdXNlIG5vdGljZWFibGUgZGVsYXlzCkBAIC0xNjQy
LDExICsxNjM5LDggQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnN0eWxlV2lsbENoYW5nZShTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1MKICAgICAgICAgc2hvdWxkQmxp
dE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgPSB0cnVlOwogI2VuZGlmCiAKLSAgICAgICAgYm9vbCBu
ZXdTdHlsZVNsb3dTY3JvbGwgPSBuZXdTdHlsZSAmJiAobmV3U3R5bGUtPnBvc2l0aW9uKCkgPT0g
Rml4ZWRQb3NpdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfHwgKCFzaG91bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAmJiBuZXdTdHlsZS0+
aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKSkpOwotICAgICAgICBib29sIG9sZFN0eWxlU2xvd1Nj
cm9sbCA9IG1fc3R5bGUgJiYgKG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCFzaG91
bGRCbGl0T25GaXhlZEJhY2tncm91bmRJbWFnZSAmJiBtX3N0eWxlLT5oYXNGaXhlZEJhY2tncm91
bmRJbWFnZSgpKSk7Ci0KKyAgICAgICAgYm9vbCBuZXdTdHlsZVNsb3dTY3JvbGwgPSBuZXdTdHls
ZSAmJiAhc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbmV3U3R5bGUtPmhhc0Zp
eGVkQmFja2dyb3VuZEltYWdlKCk7CisgICAgICAgIGJvb2wgb2xkU3R5bGVTbG93U2Nyb2xsID0g
bV9zdHlsZSAmJiAhc2hvdWxkQmxpdE9uRml4ZWRCYWNrZ3JvdW5kSW1hZ2UgJiYgbV9zdHlsZS0+
aGFzRml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKICAgICAgICAgaWYgKG9sZFN0eWxlU2xvd1Njcm9s
bCAhPSBuZXdTdHlsZVNsb3dTY3JvbGwpIHsKICAgICAgICAgICAgIGlmIChvbGRTdHlsZVNsb3dT
Y3JvbGwpCiAgICAgICAgICAgICAgICAgdmlldygpLT5mcmFtZVZpZXcoKS0+cmVtb3ZlU2xvd1Jl
cGFpbnRPYmplY3QoKTsK
</data>
<flag name="review"
          id="45628"
          type_id="1"
          status="+"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="45629"
          type_id="3"
          status="+"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>