<?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>73345</bug_id>
          
          <creation_ts>2011-11-29 12:01:14 -0800</creation_ts>
          <short_desc>[chromium] Split scrollRootLayer() into scroll{Begin,By,End}()</short_desc>
          <delta_ts>2011-12-02 11:41:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Sami Kyostila">skyostil</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>510976</commentid>
    <comment_count>0</comment_count>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2011-11-29 12:01:14 -0800</bug_when>
    <thetext>CCInputHandler::scrollRootLayer() should be split into scroll{Begin,By,End}() to allow the compositor thread to either process scroll events or delegate them to the main thread based on hit testing against scrollable layers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510980</commentid>
    <comment_count>1</comment_count>
      <attachid>117015</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2011-11-29 12:06:16 -0800</bug_when>
    <thetext>Created attachment 117015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511076</commentid>
    <comment_count>2</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-29 13:37:47 -0800</bug_when>
    <thetext>Maybe I&apos;m just missing some context here, but I don&apos;t follow what isScrolling() or scrollEnd() are intended for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511196</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-29 16:25:52 -0800</bug_when>
    <thetext>These need some documentation in the header at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511699</commentid>
    <comment_count>4</comment_count>
      <attachid>117183</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2011-11-30 06:17:28 -0800</bug_when>
    <thetext>Created attachment 117183
Patch

- Removed isScrolling().
- Documented new functions in CCInputHandler.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512026</commentid>
    <comment_count>5</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-30 12:42:52 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Maybe I&apos;m just missing some context here, but I don&apos;t follow what isScrolling() or scrollEnd() are intended for.

I had clarification off-thread, and these make a lot more sense in the context of gestures creating multiple input events and needing to track which layer is the current scrolling target.  I was just missing some context, sorry.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512229</commentid>
    <comment_count>6</comment_count>
      <attachid>117183</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-30 16:40:17 -0800</bug_when>
    <thetext>Comment on attachment 117183
Patch

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

Comments inline. I like the shape of this, just have some questions about the details.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCInputHandler.h:55
&gt; +    // Scroll the layer selected with scrollBegin().
&gt; +    virtual void scrollBy(const IntSize&amp;) = 0;

If the layer being scrolled runs out of scrollable area, then in at least some UIs we start scrolling the nearest ancestor that can accept the scrolls (even if it isn&apos;t the same scroll). I believe this API is compatible with this interaction but this comment seems to indicate that all scrolls will have to be on the same layer. Can you update the comment for this case?

What happens if we run out of scrollable area on the initially targeted layer and we need to start scrolling some ancestor that we can&apos;t scroll on the thread? It seems like in that case we need to start punting the scrolls to the main thread - or is that considered a separate scrollBegin/scrollBy/scrollEnd interaction at that point?

&gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:122
&gt; +        if (m_inputHandlerClient-&gt;scrollBegin(IntPoint(wheelEvent.x, wheelEvent.y))) {

I think this logic is subtly wrong in the case where the main thread has no wheel event handlers and the root content is not scrollable - in that case we should drop the wheel on the floor, not send it to the main thread.

I think you need to distinguish between the &quot;input handler cannot handle the scroll&quot; and &quot;input handler knows that nobody cares about this scroll&quot; cases to handle this, either by having separate APIs to query whether the handler can do a scroll vs whether there&apos;s anything to scroll at all or by having multiple return values from this call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512762</commentid>
    <comment_count>7</comment_count>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2011-12-01 07:46:44 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 117183 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117183&amp;action=review
&gt; 
&gt; Comments inline. I like the shape of this, just have some questions about the details.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCInputHandler.h:55
&gt; &gt; +    // Scroll the layer selected with scrollBegin().
&gt; &gt; +    virtual void scrollBy(const IntSize&amp;) = 0;
&gt; 
&gt; If the layer being scrolled runs out of scrollable area, then in at least some UIs we start scrolling the nearest ancestor that can accept the scrolls (even if it isn&apos;t the same scroll). I believe this API is compatible with this interaction but this comment seems to indicate that all scrolls will have to be on the same layer. Can you update the comment for this case?

Yes, this is an important aspect of scrolling and the API is meant to support it. The comment here is misleading in suggesting that scrolling only affects the the selected layer. I&apos;ll update it to be more accurate.

&gt; What happens if we run out of scrollable area on the initially targeted layer and we need to start scrolling some ancestor that we can&apos;t scroll on the thread? It seems like in that case we need to start punting the scrolls to the main thread - or is that considered a separate scrollBegin/scrollBy/scrollEnd interaction at that point?

Great point. I hadn&apos;t considered this. I don&apos;t think we can simply start sending events to the main thread in this case, because the main thread also needs to know which element the events should be directed at. The reason is that with gesture scroll events the scrolled element should be determined by the initial touch coordinates instead the most recent ones.

When we detect this situation, it&apos;s already too late to perform hit testing to find the scrolling element in the main thread, since it might have been scrolled offscreen or there might an entirely unrelated element under the touch point.

I think one way to implement this would be to also inform the main thread about the scroll scrollBegin/End transaction. Then we could send the residual scroll deltas to the main thread, which would apply them to the chosen element instead of looking at the event coordinates.

While this should work, I&apos;m not sure if it&apos;s worth the added complexity given that the situation should be relatively rare. Perhaps it would be simpler just to refuse scrolling a layer in the impl thread if any of its ancestor layers or elements need to be scrolled in the main thread? I don&apos;t think this situation should arise very often with common sites.

&gt; &gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:122
&gt; &gt; +        if (m_inputHandlerClient-&gt;scrollBegin(IntPoint(wheelEvent.x, wheelEvent.y))) {
&gt; 
&gt; I think this logic is subtly wrong in the case where the main thread has no wheel event handlers and the root content is not scrollable - in that case we should drop the wheel on the floor, not send it to the main thread.
&gt; 
&gt; I think you need to distinguish between the &quot;input handler cannot handle the scroll&quot; and &quot;input handler knows that nobody cares about this scroll&quot; cases to handle this, either by having separate APIs to query whether the handler can do a scroll vs whether there&apos;s anything to scroll at all or by having multiple return values from this call.

Right. I chose to fix this by returning status code from scrollBegin() to avoid the need to do multiple hit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512764</commentid>
    <comment_count>8</comment_count>
      <attachid>117421</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2011-12-01 07:49:57 -0800</bug_when>
    <thetext>Created attachment 117421
Patch

- scrollBegin() now returns one of {ScrollStarted, ScrollIgnored, ScrollFailed}, allowing us to drop ignored scroll events.
- Improved header comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512922</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-01 11:20:05 -0800</bug_when>
    <thetext>This patch has merge conflicts compared to ToT, would you mind rebaselining it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512925</commentid>
    <comment_count>10</comment_count>
      <attachid>117421</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-01 11:23:04 -0800</bug_when>
    <thetext>Comment on attachment 117421
Patch

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

This looks great. R=me but I can&apos;t set cq+ since this patch has merge conflicts.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCInputHandler.h:63
&gt; +    // Stop scrolling the layer selected with scrollBegin().

It appears from the logic that you only need to call this when scrollBegin() returns ScrollStarted, which makes sense to me. Could you document this requirement in the header?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513650</commentid>
    <comment_count>11</comment_count>
      <attachid>117600</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2011-12-02 03:27:32 -0800</bug_when>
    <thetext>Created attachment 117600
Patch

Thanks James! Here&apos;s a rebased patch with an updated comment about when scrollEnd() and scrollBy() should be called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513654</commentid>
    <comment_count>12</comment_count>
      <attachid>117600</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-12-02 03:41:28 -0800</bug_when>
    <thetext>Comment on attachment 117600
Patch

r=me for rebase after jamesr&apos;s r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513676</commentid>
    <comment_count>13</comment_count>
      <attachid>117600</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-02 04:35:00 -0800</bug_when>
    <thetext>Comment on attachment 117600
Patch

Clearing flags on attachment: 117600

Committed r101785: &lt;http://trac.webkit.org/changeset/101785&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513677</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-02 04:35:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513983</commentid>
    <comment_count>15</comment_count>
      <attachid>117600</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-02 11:41:22 -0800</bug_when>
    <thetext>Comment on attachment 117600
Patch

Awesome, thanks for taking care of that Steve.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117015</attachid>
            <date>2011-11-29 12:06:16 -0800</date>
            <delta_ts>2011-11-30 06:17:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-chromium-Make-CCInputHandler-scrolling-stateful.patch</filename>
            <type>text/plain</type>
            <size>10830</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">RnJvbSAxODFlNWIwZTFkZWUxNTNiZWMwOGI4YTVhOTAzZTg4N2IzMDZlMjljIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEt5b3N0aWxhIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+
CkRhdGU6IFdlZCwgMjMgTm92IDIwMTEgMTI6MTc6MzUgKzAwMDAKU3ViamVjdDogW1BBVENIXSBb
Y2hyb21pdW1dIE1ha2UgQ0NJbnB1dEhhbmRsZXIgc2Nyb2xsaW5nIHN0YXRlZnVsCgpodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzNDUKClRoaXMgY2hhbmdlIG1ha2Vz
IHRoZSBzY3JvbGxpbmcgcGFydCBvZiBDQ0lucHV0SGFuZGxlciBzdGF0ZWZ1bCBieQpyZXBsYWNp
bmcgc2Nyb2xsUm9vdExheWVyKCkgd2l0aCBzY3JvbGxCZWdpbigpLCBzY3JvbGxCeSgpIGFuZApz
Y3JvbGxFbmQoKS4gVGhpcyBpcyBkb25lIGluIHByZXBhcmF0aW9uIGZvciBzY3JvbGxhYmxlIHN1
YmxheWVycy4KU3BlY2lmaWNhbGx5LCBzY3JvbGxCZWdpbigpIHdpbGwgYWxsb3cgQ0NMYXllclRy
ZWVIb3N0SW1wbCB0byBwZXJmb3JtCmlucHV0IGV2ZW50IGhpdCB0ZXN0aW5nIHRvIGZpbmQgdGhl
IGxheWVyIHRvIGJlIHNjcm9sbGVkLgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAyNSArKysrKysrKysrKysrKysKIC4uLi9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oIHwgICAgNSArKy0KIC4uLi9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCAgIHwgICAzMiArKysr
KysrKysrKysrKysrKy0tCiAuLi4vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oICAgICB8ICAgIDYgKysrLQogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgfCAgIDE4ICsrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHAgICB8ICAgIDkgKysrKy0tCiAuLi4vY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwICAgICB8ICAgMzIgKysrKysrKysr
KysrKysrKysrKy0KIDcgZmlsZXMgY2hhbmdlZCwgMTE3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzOGU3ZjkwLi5iMTU2MDRhIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTEtMTEtMjkgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIENDSW5wdXRIYW5kbGVyIHNjcm9sbGlu
ZyBzdGF0ZWZ1bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzMzNDUKKworICAgICAgICBUaGlzIGNoYW5nZSBtYWtlcyB0aGUgc2Nyb2xsaW5nIHBhcnQg
b2YgQ0NJbnB1dEhhbmRsZXIgc3RhdGVmdWwgYnkKKyAgICAgICAgcmVwbGFjaW5nIHNjcm9sbFJv
b3RMYXllcigpIHdpdGggc2Nyb2xsQmVnaW4oKSwgc2Nyb2xsQnkoKSBhbmQKKyAgICAgICAgc2Ny
b2xsRW5kKCkuIFRoaXMgaXMgZG9uZSBpbiBwcmVwYXJhdGlvbiBmb3Igc2Nyb2xsYWJsZSBzdWJs
YXllcnMuCisgICAgICAgIFNwZWNpZmljYWxseSwgc2Nyb2xsQmVnaW4oKSB3aWxsIGFsbG93IEND
TGF5ZXJUcmVlSG9zdEltcGwgdG8gcGVyZm9ybQorICAgICAgICBpbnB1dCBldmVudCBoaXQgdGVz
dGluZyB0byBmaW5kIHRoZSBsYXllciB0byBiZSBzY3JvbGxlZC4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0ZWQgaW4gQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lu
cHV0SGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjdXJyZW50VGltZU1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdEltcGw6OnNldE5lZWRzUmVkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRJbm5lcm1v
c3RTY3JvbGxhYmxlTGF5ZXJBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdEltcGw6OnNjcm9sbEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dEltcGw6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisKIDIwMTEtMTEtMjggIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBrbm93aW5nIHdo
ZW4gYSBUcmVlRWxlbWVudCBpcyBhZGRlZCBvciBjaGFuZ2VkIGFueXdoZXJlIGluIGEgVHJlZU91
dGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAppbmRleCBmYWNiYmU1Li5jYjQxYTRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0lucHV0SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKQEAgLTQ1LDcgKzQ1LDEwIEBAIGNsYXNzIENDSW5w
dXRIYW5kbGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGlt
ZU1zKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhdygpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUm9vdExheWVyKGNvbnN0IEludFNpemUmKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHNjcm9sbEJlZ2luKGNvbnN0IEludFBvaW50JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBJbnRTaXplJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxFbmQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsaW5nKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdpbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cGluY2hHZXN0dXJlVXBkYXRlKGZsb2F0IG1hZ25pZnlEZWx0YSwgY29uc3QgSW50UG9pbnQmIGFu
Y2hvcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCA4
Y2ZiZDMwLi45Yzk2ZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cApAQCAtNDYsNiArNDYsNyBAQCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZQogICAgICwgbV9zb3Vy
Y2VGcmFtZU51bWJlcigtMSkKICAgICAsIG1fZnJhbWVOdW1iZXIoMCkKICAgICAsIG1fc2V0dGlu
Z3Moc2V0dGluZ3MpCisgICAgLCBtX2lzU2Nyb2xsaW5nKGZhbHNlKQogICAgICwgbV92aXNpYmxl
KHRydWUpCiAgICAgLCBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMoZmFsc2UpCiAgICAgLCBtX3Bh
Z2VTY2FsZSgxKQpAQCAtMjk2LDE3ICsyOTcsNDAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpzZXROZWVkc1JlZHJhdygpCiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBsVGhy
ZWFkKCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsUm9vdExheWVyKGNv
bnN0IEludFNpemUmIHNjcm9sbERlbHRhKQorYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3Jv
bGxCZWdpbihjb25zdCBJbnRQb2ludCYpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVl
SG9zdEltcGw6OnNjcm9sbFJvb3RMYXllciIsIHRoaXMsIDApOworICAgIC8vIFRPRE8oc2t5b3N0
aWwpOiBDaGVjayBmb3Igc2Nyb2xsYWJsZSBzdWJsYXllcnMuCisgICAgaWYgKCFtX3Njcm9sbExh
eWVySW1wbCB8fCAhbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbGFibGUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgbV9pc1Njcm9sbGluZyA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNj
cm9sbEJ5IiwgdGhpcywgMCk7CiAgICAgaWYgKCFtX3Njcm9sbExheWVySW1wbCkKICAgICAgICAg
cmV0dXJuOwogCisgICAgaWYgKCFtX2lzU2Nyb2xsaW5nKQorICAgICAgICByZXR1cm47CisKICAg
ICBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsQnkoc2Nyb2xsRGVsdGEpOwogICAgIG1fY2xpZW50
LT5zZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwogICAgIG1fY2xpZW50LT5zZXROZWVkc1Jl
ZHJhd09uSW1wbFRocmVhZCgpOwogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNjcm9s
bEVuZCgpCit7CisgICAgbV9pc1Njcm9sbGluZyA9IGZhbHNlOworfQorCitib29sIENDTGF5ZXJU
cmVlSG9zdEltcGw6OmlzU2Nyb2xsaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1Njcm9s
bGluZzsKK30KKwogYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpoYXZlV2hlZWxFdmVudEhhbmRs
ZXJzKCkKIHsKICAgICByZXR1cm4gbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzOwpAQCAtMzM1LDgg
KzM1OSw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6cGluY2hHZXN0dXJlVXBkYXRlKGZs
b2F0IG1hZ25pZnlEZWx0YSwKIAogICAgIEZsb2F0U2l6ZSBtb3ZlID0gcHJldlNjYWxlQW5jaG9y
IC0gbmV3U2NhbGVBbmNob3I7CiAKLSAgICBzY3JvbGxSb290TGF5ZXIocm91bmRlZEludFNpemUo
bW92ZSkpOwotCisgICAgbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbEJ5KHJvdW5kZWRJbnRTaXpl
KG1vdmUpKTsKKyAgICBtX2NsaWVudC0+c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKTsKICAg
ICBtX2NsaWVudC0+c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGNhNGY3MWIuLjdkMTg3OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTYxLDcgKzYxLDEwIEBAIHB1YmxpYzoK
ICAgICAvLyBDQ0lucHV0SGFuZGxlclRhcmdldCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwg
ZG91YmxlIGN1cnJlbnRUaW1lTXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNS
ZWRyYXcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUm9vdExheWVyKGNvbnN0IEludFNpemUm
KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYpOworICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxFbmQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxpbmcoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpOwogICAgIHZpcnR1YWwgdm9pZCBw
aW5jaEdlc3R1cmVCZWdpbigpOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVVcGRhdGUo
ZmxvYXQsIGNvbnN0IEludFBvaW50Jik7CkBAIC0xMjksNiArMTMyLDcgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8Q0NMYXllckltcGw+IG1fc2Nyb2xsTGF5ZXJJbXBsOwogICAgIENDU2V0dGluZ3Mg
bV9zZXR0aW5nczsKICAgICBJbnRTaXplIG1fdmlld3BvcnRTaXplOworICAgIGJvb2wgbV9pc1Nj
cm9sbGluZzsKICAgICBib29sIG1fdmlzaWJsZTsKICAgICBib29sIG1faGF2ZVdoZWVsRXZlbnRI
YW5kbGVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3NDEzMzcyLi5kY2Q4ZTU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTExLTI5
ICBTYW1pIEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gTWFrZSBDQ0lucHV0SGFuZGxlciBzY3JvbGxpbmcgc3RhdGVmdWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMzQ1CisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgbWFrZXMgdGhlIHNjcm9sbGluZyBwYXJ0IG9mIENDSW5wdXRIYW5kbGVyIHN0YXRl
ZnVsIGJ5CisgICAgICAgIHJlcGxhY2luZyBzY3JvbGxSb290TGF5ZXIoKSB3aXRoIHNjcm9sbEJl
Z2luKCksIHNjcm9sbEJ5KCkgYW5kCisgICAgICAgIHNjcm9sbEVuZCgpLiBUaGlzIGlzIGRvbmUg
aW4gcHJlcGFyYXRpb24gZm9yIHNjcm9sbGFibGUgc3VibGF5ZXJzLgorICAgICAgICBTcGVjaWZp
Y2FsbHksIHNjcm9sbEJlZ2luKCkgd2lsbCBhbGxvdyBDQ0xheWVyVHJlZUhvc3RJbXBsIHRvIHBl
cmZvcm0KKyAgICAgICAgaW5wdXQgZXZlbnQgaGl0IHRlc3RpbmcgdG8gZmluZCB0aGUgbGF5ZXIg
dG8gYmUgc2Nyb2xsZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb21wb3NpdG9ySW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorCiAy
MDExLTExLTI4ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3NzaWJs
ZSBmaXggZm9yIHRlc3QgZmFpbHVyZXMgaW4gcjEwMTMwNy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcAppbmRleCBlMDMxZTBlLi4zM2M5ODM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwu
Y3BwCkBAIC0xMTksOSArMTE5LDEyIEBAIHZvaWQgV2ViQ29tcG9zaXRvckltcGw6OmhhbmRsZUlu
cHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCiAKICAgICBpZiAoZXZlbnQudHlw
ZSA9PSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsICYmICFtX2lucHV0SGFuZGxlckNsaWVudC0+
aGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpKSB7CiAgICAgICAgIGNvbnN0IFdlYk1vdXNlV2hlZWxF
dmVudCYgd2hlZWxFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQq
PigmZXZlbnQpOwotICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsUm9vdExheWVy
KEludFNpemUoLXdoZWVsRXZlbnQuZGVsdGFYLCAtd2hlZWxFdmVudC5kZWx0YVkpKTsKLSAgICAg
ICAgbV9jbGllbnQtPmRpZEhhbmRsZUlucHV0RXZlbnQoKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICBpZiAobV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJlZ2luKEludFBvaW50KHdoZWVs
RXZlbnQueCwgd2hlZWxFdmVudC55KSkpIHsKKyAgICAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xp
ZW50LT5zY3JvbGxCeShJbnRTaXplKC13aGVlbEV2ZW50LmRlbHRhWCwgLXdoZWVsRXZlbnQuZGVs
dGFZKSk7CisgICAgICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsRW5kKCk7Cisg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlkSGFuZGxlSW5wdXRFdmVudCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAgICAgfQogICAgIG1fY2xpZW50LT5kaWROb3RIYW5kbGVJbnB1
dEV2ZW50KHRydWUgLyogc2VuZFRvV2lkZ2V0ICovKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXgg
MzUwYWY2Mi4uZWRmMTQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTE0Niw2ICsxNDYsMzQgQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxEZWx0YVJlcGVhdGVkU2Nyb2xs
cykKICAgICBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QuZ2V0KCkpOwog
fQogCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHN0YXRlZnVsU2Nyb2xsaW5nKQor
eworICAgIEludFNpemUgc2Nyb2xsRGVsdGEoMCwgMTApOworICAgIFJlZlB0cjxDQ0xheWVySW1w
bD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgcm9vdC0+c2V0U2Nyb2xsYWJs
ZSh0cnVlKTsKKyAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgwLCAwKSk7Cisg
ICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOworICAgIG1f
aG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsKKworICAgIE93blB0cjxDQ1Njcm9sbEFuZFNj
YWxlU2V0PiBzY3JvbGxJbmZvOworCisgICAgRVhQRUNUX0ZBTFNFKG1faG9zdEltcGwtPmlzU2Ny
b2xsaW5nKCkpOworICAgIG1faG9zdEltcGwtPnNjcm9sbEJ5KHNjcm9sbERlbHRhKTsKKyAgICBz
Y3JvbGxJbmZvID0gbV9ob3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOworICAgIEFTU0VS
VF9FUShzY3JvbGxJbmZvLT5zY3JvbGxzLnNpemUoKSwgMHUpOworICAgIEFTU0VSVF9FUShyb290
LT5zY3JvbGxQb3NpdGlvbigpLCBJbnRQb2ludCgpKTsKKworICAgIG1faG9zdEltcGwtPnNjcm9s
bEJlZ2luKEludFBvaW50KDAsIDApKTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5pc1Nj
cm9sbGluZygpKTsKKyAgICBtX2hvc3RJbXBsLT5zY3JvbGxCeShzY3JvbGxEZWx0YSk7CisgICAg
bV9ob3N0SW1wbC0+c2Nyb2xsRW5kKCk7CisgICAgRVhQRUNUX0ZBTFNFKG1faG9zdEltcGwtPmlz
U2Nyb2xsaW5nKCkpOworICAgIHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xs
RGVsdGFzKCk7CisgICAgQVNTRVJUX0VRKHNjcm9sbEluZm8tPnNjcm9sbHMuc2l6ZSgpLCAxdSk7
CisgICAgZXhwZWN0Q29udGFpbnMoKnNjcm9sbEluZm8uZ2V0KCksIHJvb3QtPmlkKCksIHNjcm9s
bERlbHRhKTsKKyAgICBBU1NFUlRfRVEocm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgSW50UG9pbnQo
KSArIHNjcm9sbERlbHRhKTsKK30KKwogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBz
Y3JvbGxSb290Q2FsbHNDb21taXRBbmRSZWRyYXcpCiB7CiAgICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKQEAgLTE1Myw3ICsxODEsOSBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbFJvb3RDYWxsc0NvbW1pdEFuZFJlZHJh
dykKICAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgwLCAwKSk7CiAgICAgcm9v
dC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOwogICAgIG1faG9zdElt
cGwtPnNldFJvb3RMYXllcihyb290KTsKLSAgICBtX2hvc3RJbXBsLT5zY3JvbGxSb290TGF5ZXIo
SW50U2l6ZSgwLCAxMCkpOworICAgIG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDAs
IDApKTsKKyAgICBtX2hvc3RJbXBsLT5zY3JvbGxCeShJbnRTaXplKDAsIDEwKSk7CisgICAgbV9o
b3N0SW1wbC0+c2Nyb2xsRW5kKCk7CiAgICAgRVhQRUNUX1RSVUUobV9kaWRSZXF1ZXN0UmVkcmF3
KTsKICAgICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RDb21taXQpOwogfQotLSAKMS43LjMuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117183</attachid>
            <date>2011-11-30 06:17:28 -0800</date>
            <delta_ts>2011-12-01 07:49:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-chromium-Make-CCInputHandler-scrolling-stateful.patch</filename>
            <type>text/plain</type>
            <size>9144</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">RnJvbSA1Mjk4MzQ3MTZkM2Y4ZjRjZTVjOTk5MWQ2NWEyM2Y3OTc4MGRkYjQ3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEt5b3N0aWxhIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+
CkRhdGU6IFdlZCwgMjMgTm92IDIwMTEgMTI6MTc6MzUgKzAwMDAKU3ViamVjdDogW1BBVENIIDEv
Ml0gW2Nocm9taXVtXSBNYWtlIENDSW5wdXRIYW5kbGVyIHNjcm9sbGluZyBzdGF0ZWZ1bAoKaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMzQ1CgpUaGlzIGNoYW5nZSBt
YWtlcyB0aGUgc2Nyb2xsaW5nIHBhcnQgb2YgQ0NJbnB1dEhhbmRsZXIgc3RhdGVmdWwgYnkKcmVw
bGFjaW5nIHNjcm9sbFJvb3RMYXllcigpIHdpdGggc2Nyb2xsQmVnaW4oKSwgc2Nyb2xsQnkoKSBh
bmQKc2Nyb2xsRW5kKCkuIFRoaXMgaXMgZG9uZSBpbiBwcmVwYXJhdGlvbiBmb3Igc2Nyb2xsYWJs
ZSBzdWJsYXllcnMuClNwZWNpZmljYWxseSwgc2Nyb2xsQmVnaW4oKSB3aWxsIGFsbG93IENDTGF5
ZXJUcmVlSG9zdEltcGwgdG8gcGVyZm9ybQppbnB1dCBldmVudCBoaXQgdGVzdGluZyB0byBmaW5k
IHRoZSBsYXllciB0byBiZSBzY3JvbGxlZC4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjUgKysrKysrKysrKysrKysrKysrKysKIC4u
Li9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oIHwgICAxNCAr
KysrKysrKysrLQogLi4uL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwICAgfCAgIDIxICsrKysrKysrKysrKystLS0KIC4uLi9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmggICAgIHwgICAgNCArKy0KIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgICAxOCArKysrKysrKysrKysrKwogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwICAgfCAgICA5ICsr
KystLQogLi4uL2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCAgICAg
fCAgICA0ICsrLQogNyBmaWxlcyBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMzhlN2Y5MC4uYjE1NjA0YSAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDExLTExLTI5ICBTYW1pIEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBDQ0lucHV0SGFuZGxlciBzY3JvbGxpbmcg
c3RhdGVmdWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczMzQ1CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbWFrZXMgdGhlIHNjcm9sbGluZyBwYXJ0IG9m
IENDSW5wdXRIYW5kbGVyIHN0YXRlZnVsIGJ5CisgICAgICAgIHJlcGxhY2luZyBzY3JvbGxSb290
TGF5ZXIoKSB3aXRoIHNjcm9sbEJlZ2luKCksIHNjcm9sbEJ5KCkgYW5kCisgICAgICAgIHNjcm9s
bEVuZCgpLiBUaGlzIGlzIGRvbmUgaW4gcHJlcGFyYXRpb24gZm9yIHNjcm9sbGFibGUgc3VibGF5
ZXJzLgorICAgICAgICBTcGVjaWZpY2FsbHksIHNjcm9sbEJlZ2luKCkgd2lsbCBhbGxvdyBDQ0xh
eWVyVHJlZUhvc3RJbXBsIHRvIHBlcmZvcm0KKyAgICAgICAgaW5wdXQgZXZlbnQgaGl0IHRlc3Rp
bmcgdG8gZmluZCB0aGUgbGF5ZXIgdG8gYmUgc2Nyb2xsZWQuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIGluIENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1
dEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdElt
cGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6Y3VycmVudFRpbWVNcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3RJbXBsOjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kSW5uZXJtb3N0
U2Nyb2xsYWJsZUxheWVyQXRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3RJbXBsOjpzY3JvbGxCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpzY3JvbGxCeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oOgorCiAyMDExLTExLTI4ICBUaW1vdGh5IEhhdGNoZXIgIDx0
aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3Iga25vd2luZyB3aGVu
IGEgVHJlZUVsZW1lbnQgaXMgYWRkZWQgb3IgY2hhbmdlZCBhbnl3aGVyZSBpbiBhIFRyZWVPdXRs
aW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NJbnB1dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKaW5kZXggZmFjYmJlNS4uN2VjODZhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJ
bnB1dEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCkBAIC00NSw3ICs0NSwxOSBAQCBjbGFzcyBDQ0lucHV0
SGFuZGxlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBkb3VibGUgY3VycmVudFRpbWVN
cygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHNjcm9sbFJvb3RMYXllcihjb25zdCBJbnRTaXplJikgPSAwOworCisg
ICAgLy8gU3RhcnQgc2Nyb2xsaW5nIGEgbGF5ZXIgYXQgYSBnaXZlbiBwb2ludCBpbiB3aW5kb3cg
Y29vcmRpbmF0ZXMuIFJldHVybnMKKyAgICAvLyB0cnVlIGlmIHRoZSBsYXllciBhdCB0aGUgY29v
cmRpbmF0ZXMgY2FuIGJlIHNjcm9sbGVkLCBvciBmYWxzZSBpZiB0aGUKKyAgICAvLyBzY3JvbGwg
ZXZlbnQgc2hvdWxkIGJlIGRlbGVnYXRlZCB0byB0aGUgbWFpbiB0aHJlYWQgaW5zdGVhZC4KKyAg
ICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmKSA9IDA7CisKKyAgICAv
LyBTY3JvbGwgdGhlIGxheWVyIHNlbGVjdGVkIHdpdGggc2Nyb2xsQmVnaW4oKS4KKyAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYpID0gMDsKKworICAgIC8vIEluZGljYXRl
IHRoYXQgdGhlIGxheWVyIHNlbGVjdGVkIHdpdGggc2Nyb2xsQmVnaW4oKSB3aWxsIG5vIGxvbmdl
ciBiZQorICAgIC8vIHNjcm9sbGVkLgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxFbmQoKSA9IDA7
CisKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlQmVnaW4oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBp
bmNoR2VzdHVyZVVwZGF0ZShmbG9hdCBtYWduaWZ5RGVsdGEsIGNvbnN0IEludFBvaW50JiBhbmNo
b3IpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggOGNm
YmQzMC4uZDRjMTAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
QEAgLTI5Niw5ICsyOTYsMTggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXROZWVkc1Jl
ZHJhdygpCiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCk7CiB9CiAK
LXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsUm9vdExheWVyKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhKQorYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxCZWdpbihjb25z
dCBJbnRQb2ludCYpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNj
cm9sbFJvb3RMYXllciIsIHRoaXMsIDApOworICAgIC8vIFRPRE8oc2t5b3N0aWwpOiBDaGVjayBm
b3Igc2Nyb2xsYWJsZSBzdWJsYXllcnMuCisgICAgaWYgKCFtX3Njcm9sbExheWVySW1wbCB8fCAh
bV9zY3JvbGxMYXllckltcGwtPnNjcm9sbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xs
QnkoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5
ZXJUcmVlSG9zdEltcGw6OnNjcm9sbEJ5IiwgdGhpcywgMCk7CiAgICAgaWYgKCFtX3Njcm9sbExh
eWVySW1wbCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMDcsNiArMzE2LDEwIEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsUm9vdExheWVyKGNvbnN0IEludFNpemUmIHNjcm9sbERl
bHRhKQogICAgIG1fY2xpZW50LT5zZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwogfQogCit2
b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNjcm9sbEVuZCgpCit7Cit9CisKIGJvb2wgQ0NMYXll
clRyZWVIb3N0SW1wbDo6aGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpCiB7CiAgICAgcmV0dXJuIG1f
aGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKQEAgLTMzNSw4ICszNDgsOCBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdEltcGw6OnBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCBtYWduaWZ5RGVsdGEsCiAKICAg
ICBGbG9hdFNpemUgbW92ZSA9IHByZXZTY2FsZUFuY2hvciAtIG5ld1NjYWxlQW5jaG9yOwogCi0g
ICAgc2Nyb2xsUm9vdExheWVyKHJvdW5kZWRJbnRTaXplKG1vdmUpKTsKLQorICAgIG1fc2Nyb2xs
TGF5ZXJJbXBsLT5zY3JvbGxCeShyb3VuZGVkSW50U2l6ZShtb3ZlKSk7CisgICAgbV9jbGllbnQt
PnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7CiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVk
cmF3T25JbXBsVGhyZWFkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aAppbmRleCBjYTRmNzFiLi44NjUzMzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oCkBAIC02MSw3ICs2MSw5IEBAIHB1YmxpYzoKICAgICAvLyBDQ0lucHV0SGFuZGxlclRh
cmdldCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lTXMoKSBj
b25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsUm9vdExheWVyKGNvbnN0IEludFNpemUmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2Ny
b2xsQmVnaW4oY29uc3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29u
c3QgSW50U2l6ZSYpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxFbmQoKTsKICAgICB2aXJ0dWFs
IGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdl
c3R1cmVCZWdpbigpOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQs
IGNvbnN0IEludFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDc0MTMzNzIu
LmRjZDhlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTEtMTEtMjkgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW2Nocm9taXVtXSBNYWtlIENDSW5wdXRIYW5kbGVyIHNjcm9sbGluZyBzdGF0ZWZ1bAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzNDUKKworICAg
ICAgICBUaGlzIGNoYW5nZSBtYWtlcyB0aGUgc2Nyb2xsaW5nIHBhcnQgb2YgQ0NJbnB1dEhhbmRs
ZXIgc3RhdGVmdWwgYnkKKyAgICAgICAgcmVwbGFjaW5nIHNjcm9sbFJvb3RMYXllcigpIHdpdGgg
c2Nyb2xsQmVnaW4oKSwgc2Nyb2xsQnkoKSBhbmQKKyAgICAgICAgc2Nyb2xsRW5kKCkuIFRoaXMg
aXMgZG9uZSBpbiBwcmVwYXJhdGlvbiBmb3Igc2Nyb2xsYWJsZSBzdWJsYXllcnMuCisgICAgICAg
IFNwZWNpZmljYWxseSwgc2Nyb2xsQmVnaW4oKSB3aWxsIGFsbG93IENDTGF5ZXJUcmVlSG9zdElt
cGwgdG8gcGVyZm9ybQorICAgICAgICBpbnB1dCBldmVudCBoaXQgdGVzdGluZyB0byBmaW5kIHRo
ZSBsYXllciB0byBiZSBzY3JvbGxlZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbXBvc2l0b3JJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAgICAgKiB0
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRFU1Rf
Rik6CisKIDIwMTEtMTEtMjggIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAg
IFBvc3NpYmxlIGZpeCBmb3IgdGVzdCBmYWlsdXJlcyBpbiByMTAxMzA3LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCmluZGV4IGUwMzFlMGUu
LjMzYzk4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBv
c2l0b3JJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3Np
dG9ySW1wbC5jcHAKQEAgLTExOSw5ICsxMTksMTIgQEAgdm9pZCBXZWJDb21wb3NpdG9ySW1wbDo6
aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBldmVudCkKIAogICAgIGlmIChl
dmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWwgJiYgIW1faW5wdXRIYW5kbGVy
Q2xpZW50LT5oYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkpIHsKICAgICAgICAgY29uc3QgV2ViTW91
c2VXaGVlbEV2ZW50JiB3aGVlbEV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlV2hl
ZWxFdmVudCo+KCZldmVudCk7Ci0gICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxS
b290TGF5ZXIoSW50U2l6ZSgtd2hlZWxFdmVudC5kZWx0YVgsIC13aGVlbEV2ZW50LmRlbHRhWSkp
OwotICAgICAgICBtX2NsaWVudC0+ZGlkSGFuZGxlSW5wdXRFdmVudCgpOwotICAgICAgICByZXR1
cm47CisgICAgICAgIGlmIChtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQmVnaW4oSW50UG9p
bnQod2hlZWxFdmVudC54LCB3aGVlbEV2ZW50LnkpKSkgeworICAgICAgICAgICAgbV9pbnB1dEhh
bmRsZXJDbGllbnQtPnNjcm9sbEJ5KEludFNpemUoLXdoZWVsRXZlbnQuZGVsdGFYLCAtd2hlZWxF
dmVudC5kZWx0YVkpKTsKKyAgICAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxF
bmQoKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRIYW5kbGVJbnB1dEV2ZW50KCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAgICAgbV9jbGllbnQtPmRpZE5vdEhh
bmRsZUlucHV0RXZlbnQodHJ1ZSAvKiBzZW5kVG9XaWRnZXQgKi8pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNw
cAppbmRleCAzNTBhZjYyLi5jZjI0NWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMTUzLDcgKzE1
Myw5IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsUm9vdENhbGxzQ29t
bWl0QW5kUmVkcmF3KQogICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDAsIDAp
KTsKICAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CiAg
ICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOwotICAgIG1faG9zdEltcGwtPnNjcm9s
bFJvb3RMYXllcihJbnRTaXplKDAsIDEwKSk7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+
c2Nyb2xsQmVnaW4oSW50UG9pbnQoMCwgMCkpKTsKKyAgICBtX2hvc3RJbXBsLT5zY3JvbGxCeShJ
bnRTaXplKDAsIDEwKSk7CisgICAgbV9ob3N0SW1wbC0+c2Nyb2xsRW5kKCk7CiAgICAgRVhQRUNU
X1RSVUUobV9kaWRSZXF1ZXN0UmVkcmF3KTsKICAgICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RD
b21taXQpOwogfQotLSAKMS43LjMuMQoK
</data>
<flag name="review"
          id="116533"
          type_id="1"
          status="-"
          setter="jamesr"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117421</attachid>
            <date>2011-12-01 07:49:57 -0800</date>
            <delta_ts>2011-12-02 03:27:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-chromium-Make-CCInputHandler-scrolling-stateful.patch</filename>
            <type>text/plain</type>
            <size>9911</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">RnJvbSBiNmZmZDZiMDg1YjBkMjA2MTk2OTJkNDdkZWI1NzRiMGE2YTU1ZTI3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEt5b3N0aWxhIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+
CkRhdGU6IFdlZCwgMjMgTm92IDIwMTEgMTI6MTc6MzUgKzAwMDAKU3ViamVjdDogW1BBVENIXSBb
Y2hyb21pdW1dIE1ha2UgQ0NJbnB1dEhhbmRsZXIgc2Nyb2xsaW5nIHN0YXRlZnVsCgpodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzNDUKClRoaXMgY2hhbmdlIG1ha2Vz
IHRoZSBzY3JvbGxpbmcgcGFydCBvZiBDQ0lucHV0SGFuZGxlciBzdGF0ZWZ1bCBieQpyZXBsYWNp
bmcgc2Nyb2xsUm9vdExheWVyKCkgd2l0aCBzY3JvbGxCZWdpbigpLCBzY3JvbGxCeSgpIGFuZApz
Y3JvbGxFbmQoKS4gVGhpcyBpcyBkb25lIGluIHByZXBhcmF0aW9uIGZvciBzY3JvbGxhYmxlIHN1
YmxheWVycy4KU3BlY2lmaWNhbGx5LCBzY3JvbGxCZWdpbigpIHdpbGwgYWxsb3cgQ0NMYXllclRy
ZWVIb3N0SW1wbCB0byBwZXJmb3JtCmlucHV0IGV2ZW50IGhpdCB0ZXN0aW5nIHRvIGZpbmQgdGhl
IGxheWVyIHRvIGJlIHNjcm9sbGVkLgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAyNSArKysrKysrKysrKysrKysrKysrKwogLi4uL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmggfCAgIDE5ICsrKysr
KysrKysrKysrLQogLi4uL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwICAgfCAgIDIxICsrKysrKysrKysrKystLS0KIC4uLi9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmggICAgIHwgICAgNCArKy0KIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgICAxOCArKysrKysrKysrKysrKwogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwICAgfCAgIDE2ICsr
KysrKysrKystLQogLi4uL2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNw
cCAgICAgfCAgICA0ICsrLQogNyBmaWxlcyBjaGFuZ2VkLCA5NyBpbnNlcnRpb25zKCspLCAxMCBk
ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzhlN2Y5MC4uYjE1NjA0YSAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI4IEBACisyMDExLTExLTI5ICBTYW1pIEt5b3N0aWxhICA8c2t5b3N0aWxAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBDQ0lucHV0SGFuZGxlciBzY3Jv
bGxpbmcgc3RhdGVmdWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTczMzQ1CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbWFrZXMgdGhlIHNjcm9sbGluZyBw
YXJ0IG9mIENDSW5wdXRIYW5kbGVyIHN0YXRlZnVsIGJ5CisgICAgICAgIHJlcGxhY2luZyBzY3Jv
bGxSb290TGF5ZXIoKSB3aXRoIHNjcm9sbEJlZ2luKCksIHNjcm9sbEJ5KCkgYW5kCisgICAgICAg
IHNjcm9sbEVuZCgpLiBUaGlzIGlzIGRvbmUgaW4gcHJlcGFyYXRpb24gZm9yIHNjcm9sbGFibGUg
c3VibGF5ZXJzLgorICAgICAgICBTcGVjaWZpY2FsbHksIHNjcm9sbEJlZ2luKCkgd2lsbCBhbGxv
dyBDQ0xheWVyVHJlZUhvc3RJbXBsIHRvIHBlcmZvcm0KKyAgICAgICAgaW5wdXQgZXZlbnQgaGl0
IHRlc3RpbmcgdG8gZmluZCB0aGUgbGF5ZXIgdG8gYmUgc2Nyb2xsZWQuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIGluIENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NJbnB1dEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6Y3VycmVudFRpbWVNcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3RJbXBsOjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kSW5u
ZXJtb3N0U2Nyb2xsYWJsZUxheWVyQXRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3RJbXBsOjpzY3JvbGxCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpzY3JvbGxCeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorCiAyMDExLTExLTI4ICBUaW1vdGh5IEhhdGNo
ZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3Iga25vd2lu
ZyB3aGVuIGEgVHJlZUVsZW1lbnQgaXMgYWRkZWQgb3IgY2hhbmdlZCBhbnl3aGVyZSBpbiBhIFRy
ZWVPdXRsaW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKaW5kZXggZmFjYmJlNS4uYTlkYTkx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NJbnB1dEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCkBAIC00NSw3ICs0NSwyNCBAQCBjbGFzcyBD
Q0lucHV0SGFuZGxlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBkb3VibGUgY3VycmVu
dFRpbWVNcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbFJvb3RMYXllcihjb25zdCBJbnRTaXplJikgPSAw
OworCisgICAgZW51bSBTY3JvbGxTdGF0dXMgeyBTY3JvbGxGYWlsZWQsIFNjcm9sbFN0YXJ0ZWQs
IFNjcm9sbElnbm9yZWQgfTsKKworICAgIC8vIEF0dGVtcHQgdG8gc3RhcnQgc2Nyb2xsaW5nIGEg
bGF5ZXIgYXQgYSBnaXZlbiBwb2ludCBpbiB3aW5kb3cKKyAgICAvLyBjb29yZGluYXRlcy4gUmV0
dXJucyBTY3JvbGxTdGFydGVkIGlmIHRoZSBsYXllciBhdCB0aGUgY29vcmRpbmF0ZXMgY2FuCisg
ICAgLy8gYmUgc2Nyb2xsZWQsIFNjcm9sbEZhaWxlZCBpZiB0aGUgc2Nyb2xsIGV2ZW50IHNob3Vs
ZCBpbnN0ZWFkIGJlCisgICAgLy8gZGVsZWdhdGVkIHRvIHRoZSBtYWluIHRocmVhZCwgb3IgU2Ny
b2xsSWdub3JlZCBpZiB0aGVyZSBpcyBub3RoaW5nIHRvCisgICAgLy8gYmUgc2Nyb2xsZWQgYXQg
dGhlIGdpdmVuIGNvb3JkaW5hdGVzLgorICAgIHZpcnR1YWwgU2Nyb2xsU3RhdHVzIHNjcm9sbEJl
Z2luKGNvbnN0IEludFBvaW50JikgPSAwOworCisgICAgLy8gU2Nyb2xsIHRoZSBsYXllciBzZWxl
Y3RlZCB3aXRoIHNjcm9sbEJlZ2luKCkuIElmIHRoZXJlIGlzIG5vIHJvb20gdG8KKyAgICAvLyBt
b3ZlIHRoZSBsYXllciBpbiB0aGUgcmVxdWVzdGVkIGRpcmVjdGlvbiwgaXRzIGZpcnN0IGFuY2Vz
dG9yIGxheWVyIHRoYXQKKyAgICAvLyBjYW4gYmUgc2Nyb2xsZWQgd2lsbCBiZSBtb3ZlZCBpbnN0
ZWFkLgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBJbnRTaXplJikgPSAwOworCisg
ICAgLy8gU3RvcCBzY3JvbGxpbmcgdGhlIGxheWVyIHNlbGVjdGVkIHdpdGggc2Nyb2xsQmVnaW4o
KS4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsRW5kKCkgPSAwOworCiAgICAgdmlydHVhbCBib29s
IGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2Vz
dHVyZUJlZ2luKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVVcGRhdGUoZmxv
YXQgbWFnbmlmeURlbHRhLCBjb25zdCBJbnRQb2ludCYgYW5jaG9yKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDhjZmJkMzAuLjE1MGI5M2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yOTYsOSArMjk2LDE4IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0TmVlZHNSZWRyYXcoKQogICAgIG1fY2xpZW50
LT5zZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OnNjcm9sbFJvb3RMYXllcihjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKK0NDSW5w
dXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xs
QmVnaW4oY29uc3QgSW50UG9pbnQmKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhv
c3RJbXBsOjpzY3JvbGxSb290TGF5ZXIiLCB0aGlzLCAwKTsKKyAgICAvLyBUT0RPOiBDaGVjayBm
b3Igc2Nyb2xsYWJsZSBzdWJsYXllcnMuCisgICAgaWYgKCFtX3Njcm9sbExheWVySW1wbCB8fCAh
bV9zY3JvbGxMYXllckltcGwtPnNjcm9sbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIFNjcm9sbEln
bm9yZWQ7CisKKyAgICByZXR1cm4gU2Nyb2xsU3RhcnRlZDsKK30KKwordm9pZCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpzY3JvbGxCeShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKK3sKKyAgICBU
UkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsQnkiLCB0aGlzLCAwKTsKICAg
ICBpZiAoIW1fc2Nyb2xsTGF5ZXJJbXBsKQogICAgICAgICByZXR1cm47CiAKQEAgLTMwNyw2ICsz
MTYsMTAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxSb290TGF5ZXIoY29uc3Qg
SW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBs
VGhyZWFkKCk7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsRW5kKCkKK3sK
K30KKwogYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpoYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkK
IHsKICAgICByZXR1cm4gbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzOwpAQCAtMzM1LDggKzM0OCw4
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6cGluY2hHZXN0dXJlVXBkYXRlKGZsb2F0IG1h
Z25pZnlEZWx0YSwKIAogICAgIEZsb2F0U2l6ZSBtb3ZlID0gcHJldlNjYWxlQW5jaG9yIC0gbmV3
U2NhbGVBbmNob3I7CiAKLSAgICBzY3JvbGxSb290TGF5ZXIocm91bmRlZEludFNpemUobW92ZSkp
OwotCisgICAgbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbEJ5KHJvdW5kZWRJbnRTaXplKG1vdmUp
KTsKKyAgICBtX2NsaWVudC0+c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKTsKICAgICBtX2Ns
aWVudC0+c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGNhNGY3MWIuLjQxYjgzOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTYxLDcgKzYxLDkgQEAgcHVibGljOgogICAgIC8v
IENDSW5wdXRIYW5kbGVyVGFyZ2V0IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCBkb3VibGUg
Y3VycmVudFRpbWVNcygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhdygp
OwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSb290TGF5ZXIoY29uc3QgSW50U2l6ZSYpOworICAg
IHZpcnR1YWwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBzY3JvbGxCZWdpbihj
b25zdCBJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBJbnRTaXpl
Jik7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEVuZCgpOwogICAgIHZpcnR1YWwgYm9vbCBoYXZl
V2hlZWxFdmVudEhhbmRsZXJzKCk7CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUJlZ2lu
KCk7CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCwgY29uc3QgSW50
UG9pbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzQxMzM3Mi4uZGNkOGU1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMS0xMS0yOSAg
U2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIE1ha2UgQ0NJbnB1dEhhbmRsZXIgc2Nyb2xsaW5nIHN0YXRlZnVsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzM0NQorCisgICAgICAgIFRoaXMg
Y2hhbmdlIG1ha2VzIHRoZSBzY3JvbGxpbmcgcGFydCBvZiBDQ0lucHV0SGFuZGxlciBzdGF0ZWZ1
bCBieQorICAgICAgICByZXBsYWNpbmcgc2Nyb2xsUm9vdExheWVyKCkgd2l0aCBzY3JvbGxCZWdp
bigpLCBzY3JvbGxCeSgpIGFuZAorICAgICAgICBzY3JvbGxFbmQoKS4gVGhpcyBpcyBkb25lIGlu
IHByZXBhcmF0aW9uIGZvciBzY3JvbGxhYmxlIHN1YmxheWVycy4KKyAgICAgICAgU3BlY2lmaWNh
bGx5LCBzY3JvbGxCZWdpbigpIHdpbGwgYWxsb3cgQ0NMYXllclRyZWVIb3N0SW1wbCB0byBwZXJm
b3JtCisgICAgICAgIGlucHV0IGV2ZW50IGhpdCB0ZXN0aW5nIHRvIGZpbmQgdGhlIGxheWVyIHRv
IGJlIHNjcm9sbGVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29tcG9zaXRvckltcGw6OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAqIHRlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKwogMjAx
MS0xMS0yOCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgUG9zc2libGUg
Zml4IGZvciB0ZXN0IGZhaWx1cmVzIGluIHIxMDEzMDcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHAKaW5kZXggZTAzMWUwZS4uMmU2NzAxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNw
cApAQCAtMTE5LDkgKzExOSwxOSBAQCB2b2lkIFdlYkNvbXBvc2l0b3JJbXBsOjpoYW5kbGVJbnB1
dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50KQogCiAgICAgaWYgKGV2ZW50LnR5cGUg
PT0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbCAmJiAhbV9pbnB1dEhhbmRsZXJDbGllbnQtPmhh
dmVXaGVlbEV2ZW50SGFuZGxlcnMoKSkgewogICAgICAgICBjb25zdCBXZWJNb3VzZVdoZWVsRXZl
bnQmIHdoZWVsRXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Kj4o
JmV2ZW50KTsKLSAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbFJvb3RMYXllcihJ
bnRTaXplKC13aGVlbEV2ZW50LmRlbHRhWCwgLXdoZWVsRXZlbnQuZGVsdGFZKSk7Ci0gICAgICAg
IG1fY2xpZW50LT5kaWRIYW5kbGVJbnB1dEV2ZW50KCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBzY3JvbGxTdGF0dXMgPSBtX2lu
cHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQod2hlZWxFdmVudC54LCB3aGVl
bEV2ZW50LnkpKTsKKyAgICAgICAgc3dpdGNoIChzY3JvbGxTdGF0dXMpIHsKKyAgICAgICAgY2Fz
ZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZDoKKyAgICAgICAgICAgIG1faW5w
dXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShJbnRTaXplKC13aGVlbEV2ZW50LmRlbHRhWCwgLXdo
ZWVsRXZlbnQuZGVsdGFZKSk7CisgICAgICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Ny
b2xsRW5kKCk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkSGFuZGxlSW5wdXRFdmVudCgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpT
Y3JvbGxJZ25vcmVkOgorICAgICAgICAgICAgbV9jbGllbnQtPmRpZE5vdEhhbmRsZUlucHV0RXZl
bnQoZmFsc2UgLyogc2VuZFRvV2lkZ2V0ICovKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkOgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICB9CiAgICAgbV9jbGllbnQtPmRpZE5vdEhhbmRsZUlucHV0
RXZlbnQodHJ1ZSAvKiBzZW5kVG9XaWRnZXQgKi8pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCAz
NTBhZjYyLi41YWNiOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMTUzLDcgKzE1Myw5IEBAIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsUm9vdENhbGxzQ29tbWl0QW5kUmVk
cmF3KQogICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDAsIDApKTsKICAgICBy
b290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAgbV9ob3N0
SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOwotICAgIG1faG9zdEltcGwtPnNjcm9sbFJvb3RMYXll
cihJbnRTaXplKDAsIDEwKSk7CisgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2lu
KEludFBvaW50KDAsIDApKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOwor
ICAgIG1faG9zdEltcGwtPnNjcm9sbEJ5KEludFNpemUoMCwgMTApKTsKKyAgICBtX2hvc3RJbXBs
LT5zY3JvbGxFbmQoKTsKICAgICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RSZWRyYXcpOwogICAg
IEVYUEVDVF9UUlVFKG1fZGlkUmVxdWVzdENvbW1pdCk7CiB9Ci0tIAoxLjcuMy4xCgo=
</data>
<flag name="review"
          id="116838"
          type_id="1"
          status="+"
          setter="jamesr"
    />
    <flag name="commit-queue"
          id="116878"
          type_id="3"
          status="-"
          setter="jamesr"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117600</attachid>
            <date>2011-12-02 03:27:32 -0800</date>
            <delta_ts>2011-12-02 11:41:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Make-CCInputHandler-scrolling-stateful.patch</filename>
            <type>text/plain</type>
            <size>10100</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">RnJvbSBhMjBhOWZlNDg1MDA0MGZhYjdmMjZjNWEyOTIzNjZhNTU4MjNjMmZlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEt5b3N0aWxhIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+
CkRhdGU6IFdlZCwgMjMgTm92IDIwMTEgMTI6MTc6MzUgKzAwMDAKU3ViamVjdDogW1BBVENIXSBN
YWtlIENDSW5wdXRIYW5kbGVyIHNjcm9sbGluZyBzdGF0ZWZ1bAoKaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczMzQ1CgpUaGlzIGNoYW5nZSBtYWtlcyB0aGUgc2Nyb2xs
aW5nIHBhcnQgb2YgQ0NJbnB1dEhhbmRsZXIgc3RhdGVmdWwgYnkKcmVwbGFjaW5nIHNjcm9sbFJv
b3RMYXllcigpIHdpdGggc2Nyb2xsQmVnaW4oKSwgc2Nyb2xsQnkoKSBhbmQKc2Nyb2xsRW5kKCku
IFRoaXMgaXMgZG9uZSBpbiBwcmVwYXJhdGlvbiBmb3Igc2Nyb2xsYWJsZSBzdWJsYXllcnMuClNw
ZWNpZmljYWxseSwgc2Nyb2xsQmVnaW4oKSB3aWxsIGFsbG93IENDTGF5ZXJUcmVlSG9zdEltcGwg
dG8gcGVyZm9ybQppbnB1dCBldmVudCBoaXQgdGVzdGluZyB0byBmaW5kIHRoZSBsYXllciB0byBi
ZSBzY3JvbGxlZC4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMjUgKysrKysrKysrKysrKysrKysrKysKIC4uLi9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oIHwgICAyMSArKysrKysrKysrKysrKysr
LQogLi4uL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwICAgfCAg
IDIxICsrKysrKysrKysrKystLS0KIC4uLi9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmggICAgIHwgICAgNCArKy0KIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgIHwgICAxOCArKysrKysrKysrKysrKwogLi4uL2Nocm9taXVt
L3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAgfCAgIDE2ICsrKysrKysrKyst
LQogLi4uL2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCAgICAgfCAg
ICA0ICsrLQogNyBmaWxlcyBjaGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMTM3OTdkNS4uNzUwZTMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDExLTExLTI5ICBTYW1pIEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBDQ0lucHV0SGFuZGxlciBzY3JvbGxpbmcgc3Rh
dGVmdWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcz
MzQ1CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbWFrZXMgdGhlIHNjcm9sbGluZyBwYXJ0IG9mIEND
SW5wdXRIYW5kbGVyIHN0YXRlZnVsIGJ5CisgICAgICAgIHJlcGxhY2luZyBzY3JvbGxSb290TGF5
ZXIoKSB3aXRoIHNjcm9sbEJlZ2luKCksIHNjcm9sbEJ5KCkgYW5kCisgICAgICAgIHNjcm9sbEVu
ZCgpLiBUaGlzIGlzIGRvbmUgaW4gcHJlcGFyYXRpb24gZm9yIHNjcm9sbGFibGUgc3VibGF5ZXJz
LgorICAgICAgICBTcGVjaWZpY2FsbHksIHNjcm9sbEJlZ2luKCkgd2lsbCBhbGxvdyBDQ0xheWVy
VHJlZUhvc3RJbXBsIHRvIHBlcmZvcm0KKyAgICAgICAgaW5wdXQgZXZlbnQgaGl0IHRlc3Rpbmcg
dG8gZmluZCB0aGUgbGF5ZXIgdG8gYmUgc2Nyb2xsZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIGluIENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhh
bmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6
OkNDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
SW1wbDo6Y3VycmVudFRpbWVNcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kSW5uZXJtb3N0U2Ny
b2xsYWJsZUxheWVyQXRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpzY3JvbGxCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBs
OjpzY3JvbGxCeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oOgorCiAyMDExLTEyLTAyICBNT1JJVEEgSGFqaW1lICA8bW9ycml0
YUBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFub3RoZXIgYXR0ZW1wdCB0byBi
dWlsZCBmaXggZm9yIHIxMDE3NTE6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAppbmRleCBmYWNi
YmU1Li5hZGJiMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKQEAgLTQ1LDcgKzQ1LDI2
IEBAIGNsYXNzIENDSW5wdXRIYW5kbGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRv
dWJsZSBjdXJyZW50VGltZU1zKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVk
c1JlZHJhdygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUm9vdExheWVyKGNvbnN0IElu
dFNpemUmKSA9IDA7CisKKyAgICBlbnVtIFNjcm9sbFN0YXR1cyB7IFNjcm9sbEZhaWxlZCwgU2Ny
b2xsU3RhcnRlZCwgU2Nyb2xsSWdub3JlZCB9OworCisgICAgLy8gQXR0ZW1wdCB0byBzdGFydCBz
Y3JvbGxpbmcgYSBsYXllciBhdCBhIGdpdmVuIHBvaW50IGluIHdpbmRvdworICAgIC8vIGNvb3Jk
aW5hdGVzLiBSZXR1cm5zIFNjcm9sbFN0YXJ0ZWQgaWYgdGhlIGxheWVyIGF0IHRoZSBjb29yZGlu
YXRlcyBjYW4KKyAgICAvLyBiZSBzY3JvbGxlZCwgU2Nyb2xsRmFpbGVkIGlmIHRoZSBzY3JvbGwg
ZXZlbnQgc2hvdWxkIGluc3RlYWQgYmUKKyAgICAvLyBkZWxlZ2F0ZWQgdG8gdGhlIG1haW4gdGhy
ZWFkLCBvciBTY3JvbGxJZ25vcmVkIGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8KKyAgICAvLyBiZSBz
Y3JvbGxlZCBhdCB0aGUgZ2l2ZW4gY29vcmRpbmF0ZXMuCisgICAgdmlydHVhbCBTY3JvbGxTdGF0
dXMgc2Nyb2xsQmVnaW4oY29uc3QgSW50UG9pbnQmKSA9IDA7CisKKyAgICAvLyBTY3JvbGwgdGhl
IGxheWVyIHNlbGVjdGVkIHdpdGggc2Nyb2xsQmVnaW4oKS4gSWYgdGhlcmUgaXMgbm8gcm9vbSB0
bworICAgIC8vIG1vdmUgdGhlIGxheWVyIGluIHRoZSByZXF1ZXN0ZWQgZGlyZWN0aW9uLCBpdHMg
Zmlyc3QgYW5jZXN0b3IgbGF5ZXIgdGhhdAorICAgIC8vIGNhbiBiZSBzY3JvbGxlZCB3aWxsIGJl
IG1vdmVkIGluc3RlYWQuIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZgorICAgIC8vIHNjcm9sbEJl
Z2luKCkgcmV0dXJuZWQgU2Nyb2xsU3RhcnRlZC4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnko
Y29uc3QgSW50U2l6ZSYpID0gMDsKKworICAgIC8vIFN0b3Agc2Nyb2xsaW5nIHRoZSBsYXllciBz
ZWxlY3RlZCB3aXRoIHNjcm9sbEJlZ2luKCkuIFNob3VsZCBvbmx5IGJlCisgICAgLy8gY2FsbGVk
IGlmIHNjcm9sbEJlZ2luKCkgcmV0dXJuZWQgU2Nyb2xsU3RhcnRlZC4KKyAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsRW5kKCkgPSAwOworCiAgICAgdmlydHVhbCBib29sIGhhdmVXaGVlbEV2ZW50SGFu
ZGxlcnMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUJlZ2luKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQgbWFnbmlmeURlbHRhLCBj
b25zdCBJbnRQb2ludCYgYW5jaG9yKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwCmluZGV4IDhjZmJkMzAuLjE1MGI5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yOTYsOSArMjk2LDE4IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6c2V0TmVlZHNSZWRyYXcoKQogICAgIG1fY2xpZW50LT5zZXROZWVkc1JlZHJhd09u
SW1wbFRocmVhZCgpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNjcm9sbFJvb3RM
YXllcihjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKK0NDSW5wdXRIYW5kbGVyQ2xpZW50OjpT
Y3JvbGxTdGF0dXMgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4oY29uc3QgSW50UG9p
bnQmKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxSb290
TGF5ZXIiLCB0aGlzLCAwKTsKKyAgICAvLyBUT0RPOiBDaGVjayBmb3Igc2Nyb2xsYWJsZSBzdWJs
YXllcnMuCisgICAgaWYgKCFtX3Njcm9sbExheWVySW1wbCB8fCAhbV9zY3JvbGxMYXllckltcGwt
PnNjcm9sbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIFNjcm9sbElnbm9yZWQ7CisKKyAgICByZXR1
cm4gU2Nyb2xsU3RhcnRlZDsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxC
eShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXll
clRyZWVIb3N0SW1wbDo6c2Nyb2xsQnkiLCB0aGlzLCAwKTsKICAgICBpZiAoIW1fc2Nyb2xsTGF5
ZXJJbXBsKQogICAgICAgICByZXR1cm47CiAKQEAgLTMwNyw2ICszMTYsMTAgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxSb290TGF5ZXIoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEpCiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCk7CiB9CiAKK3Zv
aWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsRW5kKCkKK3sKK30KKwogYm9vbCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpoYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkKIHsKICAgICByZXR1cm4gbV9o
YXZlV2hlZWxFdmVudEhhbmRsZXJzOwpAQCAtMzM1LDggKzM0OCw4IEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6cGluY2hHZXN0dXJlVXBkYXRlKGZsb2F0IG1hZ25pZnlEZWx0YSwKIAogICAg
IEZsb2F0U2l6ZSBtb3ZlID0gcHJldlNjYWxlQW5jaG9yIC0gbmV3U2NhbGVBbmNob3I7CiAKLSAg
ICBzY3JvbGxSb290TGF5ZXIocm91bmRlZEludFNpemUobW92ZSkpOwotCisgICAgbV9zY3JvbGxM
YXllckltcGwtPnNjcm9sbEJ5KHJvdW5kZWRJbnRTaXplKG1vdmUpKTsKKyAgICBtX2NsaWVudC0+
c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKTsKICAgICBtX2NsaWVudC0+c2V0TmVlZHNSZWRy
YXdPbkltcGxUaHJlYWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
CmluZGV4IGNhNGY3MWIuLjQxYjgzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmgKQEAgLTYxLDcgKzYxLDkgQEAgcHVibGljOgogICAgIC8vIENDSW5wdXRIYW5kbGVyVGFy
Z2V0IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCBkb3VibGUgY3VycmVudFRpbWVNcygpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhdygpOwotICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxSb290TGF5ZXIoY29uc3QgSW50U2l6ZSYpOworICAgIHZpcnR1YWwgQ0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBzY3JvbGxCZWdpbihjb25zdCBJbnRQb2ludCYpOwor
ICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBJbnRTaXplJik7CisgICAgdmlydHVhbCB2
b2lkIHNjcm9sbEVuZCgpOwogICAgIHZpcnR1YWwgYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJz
KCk7CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUJlZ2luKCk7CiAgICAgdmlydHVhbCB2
b2lkIHBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCwgY29uc3QgSW50UG9pbnQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggYWM4YzExNS4uNWNlZGI4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMS0xMS0yOSAgU2FtaSBLeW9zdGlsYSAgPHNr
eW9zdGlsQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIE1ha2UgQ0NJbnB1dEhh
bmRsZXIgc2Nyb2xsaW5nIHN0YXRlZnVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MzM0NQorCisgICAgICAgIFRoaXMgY2hhbmdlIG1ha2VzIHRoZSBz
Y3JvbGxpbmcgcGFydCBvZiBDQ0lucHV0SGFuZGxlciBzdGF0ZWZ1bCBieQorICAgICAgICByZXBs
YWNpbmcgc2Nyb2xsUm9vdExheWVyKCkgd2l0aCBzY3JvbGxCZWdpbigpLCBzY3JvbGxCeSgpIGFu
ZAorICAgICAgICBzY3JvbGxFbmQoKS4gVGhpcyBpcyBkb25lIGluIHByZXBhcmF0aW9uIGZvciBz
Y3JvbGxhYmxlIHN1YmxheWVycy4KKyAgICAgICAgU3BlY2lmaWNhbGx5LCBzY3JvbGxCZWdpbigp
IHdpbGwgYWxsb3cgQ0NMYXllclRyZWVIb3N0SW1wbCB0byBwZXJmb3JtCisgICAgICAgIGlucHV0
IGV2ZW50IGhpdCB0ZXN0aW5nIHRvIGZpbmQgdGhlIGxheWVyIHRvIGJlIHNjcm9sbGVkLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkNv
bXBvc2l0b3JJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvckltcGw6Omhh
bmRsZUlucHV0RXZlbnQpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKwogMjAxMS0xMi0wMiAgUGF2ZWwgRmVs
ZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvciBbY2hy
b21pdW1dOiBwcm92aXNpb25hbCBmaXggZm9yIGludGVyYWN0aXZlIHVpIHRlc3RzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbC5jcHAKaW5kZXggZmY4M2YzYi4uZmFhOWZiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsLmNwcApAQCAtMTE4LDkgKzExOCwxOSBAQCB2b2lkIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50KQogCiAg
ICAgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbCAmJiAhbV9pbnB1
dEhhbmRsZXJDbGllbnQtPmhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSkgewogICAgICAgICBjb25z
dCBXZWJNb3VzZVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2Vi
TW91c2VXaGVlbEV2ZW50Kj4oJmV2ZW50KTsKLSAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQt
PnNjcm9sbFJvb3RMYXllcihJbnRTaXplKC13aGVlbEV2ZW50LmRlbHRhWCwgLXdoZWVsRXZlbnQu
ZGVsdGFZKSk7Ci0gICAgICAgIG1fY2xpZW50LT5kaWRIYW5kbGVJbnB1dEV2ZW50KCk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBz
Y3JvbGxTdGF0dXMgPSBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQo
d2hlZWxFdmVudC54LCB3aGVlbEV2ZW50LnkpKTsKKyAgICAgICAgc3dpdGNoIChzY3JvbGxTdGF0
dXMpIHsKKyAgICAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZDoK
KyAgICAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShJbnRTaXplKC13aGVl
bEV2ZW50LmRlbHRhWCwgLXdoZWVsRXZlbnQuZGVsdGFZKSk7CisgICAgICAgICAgICBtX2lucHV0
SGFuZGxlckNsaWVudC0+c2Nyb2xsRW5kKCk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkSGFu
ZGxlSW5wdXRFdmVudCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIENDSW5w
dXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJZ25vcmVkOgorICAgICAgICAgICAgbV9jbGllbnQtPmRp
ZE5vdEhhbmRsZUlucHV0RXZlbnQoZmFsc2UgLyogc2VuZFRvV2lkZ2V0ICovKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFp
bGVkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9CiAgICAgbV9jbGllbnQt
PmRpZE5vdEhhbmRsZUlucHV0RXZlbnQodHJ1ZSAvKiBzZW5kVG9XaWRnZXQgKi8pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LmNwcAppbmRleCAzNTBhZjYyLi41YWNiOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAt
MTUzLDcgKzE1Myw5IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsUm9v
dENhbGxzQ29tbWl0QW5kUmVkcmF3KQogICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKEludFBv
aW50KDAsIDApKTsKICAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwg
MTAwKSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOwotICAgIG1faG9zdElt
cGwtPnNjcm9sbFJvb3RMYXllcihJbnRTaXplKDAsIDEwKSk7CisgICAgRVhQRUNUX0VRKG1faG9z
dEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDAsIDApKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6
OlNjcm9sbFN0YXJ0ZWQpOworICAgIG1faG9zdEltcGwtPnNjcm9sbEJ5KEludFNpemUoMCwgMTAp
KTsKKyAgICBtX2hvc3RJbXBsLT5zY3JvbGxFbmQoKTsKICAgICBFWFBFQ1RfVFJVRShtX2RpZFJl
cXVlc3RSZWRyYXcpOwogICAgIEVYUEVDVF9UUlVFKG1fZGlkUmVxdWVzdENvbW1pdCk7CiB9Ci0t
IAoxLjcuMy4xCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>