<?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>78976</bug_id>
          
          <creation_ts>2012-02-18 14:49:14 -0800</creation_ts>
          <short_desc>[mac] BackingStore::scroll() unnecessarily copies pixels around</short_desc>
          <delta_ts>2012-02-18 19:54:24 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>andersca</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>559827</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-02-18 14:49:14 -0800</bug_when>
    <thetext>BackingStore::scroll() unnecessarily copies pixels around</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559828</commentid>
    <comment_count>1</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-02-18 14:50:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/10891801&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559831</commentid>
    <comment_count>2</comment_count>
      <attachid>127716</attachid>
    <who name="">mitz</who>
    <bug_when>2012-02-18 15:04:39 -0800</bug_when>
    <thetext>Created attachment 127716
Maintain a mapping from backing store coordinates to client coordinates in the most recently scrolled rect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559837</commentid>
    <comment_count>3</comment_count>
      <attachid>127720</attachid>
    <who name="">mitz</who>
    <bug_when>2012-02-18 16:29:28 -0800</bug_when>
    <thetext>Created attachment 127720
Maintain a mapping from backing store coordinates to client coordinates in the most recently scrolled rect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559858</commentid>
    <comment_count>4</comment_count>
      <attachid>127720</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-02-18 19:47:08 -0800</bug_when>
    <thetext>Comment on attachment 127720
Maintain a mapping from backing store coordinates to client coordinates in the most recently scrolled rect

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

&gt; Source/WebKit2/UIProcess/BackingStore.h:99
&gt; +    // Contents of m_scrolledRect are offset by this amount (and wrapped around) with respect to

Please add an extra newline before this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559859</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-02-18 19:54:24 -0800</bug_when>
    <thetext>Fixed in &lt;http://trac.webkit.org/r108181&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127716</attachid>
            <date>2012-02-18 15:04:39 -0800</date>
            <delta_ts>2012-02-18 16:29:24 -0800</delta_ts>
            <desc>Maintain a mapping from backing store coordinates to client coordinates in the most recently scrolled rect</desc>
            <filename>bug-78976-20120218150438.patch</filename>
            <type>text/plain</type>
            <size>10373</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODE3MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAyLTE4ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwODkx
ODAxPiBCYWNraW5nU3RvcmU6OnNjcm9sbCgpIHVubmVjZXNzYXJpbHkgY29waWVzIHBpeGVscyBh
cm91bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
OTc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmF0
aGVyIHRoYW4gbW92ZSBwaXhlbHMgaW4gdGhlIGJhY2tpbmcgc3RvcmUgaW4gcmVzcG9uc2UgdG8g
c2Nyb2xsaW5nLCB3ZSBjYW4gbWFpbnRhaW4gYQorICAgICAgICBtYXBwaW5nLCBmb3IgdGhlIG1v
c3QgcmVjZW50bHkgc2Nyb2xsZWQgcmVjdCwgZnJvbSBiYWNraW5nIHN0b3JlIGNvb3JkaW5hdGVz
IHRvIHZpZXcKKyAgICAgICAgY2xpZW50IGNvb3JkaW5hdGVzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0JhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQmFja2luZ1N0b3Jl
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OnBlcmZvcm1XaXRoU2Nyb2xs
ZWRSZWN0VHJhbnNmb3JtKTogQWRkZWQuIEdpdmVuIGEgYmxvY2sgdG8gYmUKKyAgICAgICAgcGVy
Zm9ybWVkIG9uIGEgcmVjdCwgZGl2aWRlcyB0aGUgcmVjdCBpbnRvIHBhcnRzIHN1Y2ggdGhhdCBm
b3IgZWFjaCBwYXJ0IHRoZSBtYXBwaW5nIGZyb20KKyAgICAgICAgYmFja2luZyBzdG9yZSBjb29y
ZGluYXRlcyB0byBjbGllbnQgY29vcmRpbmF0ZXMgaXMgYSAodW5pZm9ybSkgdHJhbnNsYXRpb24s
IGFuZCBwZXJmb3JtcworICAgICAgICB0aGUgYmxvY2sgb24gdGhhdCBwYXJ0LCBwYXNzaW5nIGl0
IHRoZSB0cmFuc2xhdGlvbiB0aGF0IGFwcGxpZXMgdG8gdGhlIHBhcnQuCisgICAgICAgIChXZWJL
aXQ6OkJhY2tpbmdTdG9yZTo6cmVzZXRTY3JvbGxlZFJlY3QpOiBBZGRlZC4gQ29waWVzIGV2ZXJ5
dGhpbmcgaW4gdGhlIHNjcm9sbGVkIHJlY3QKKyAgICAgICAgYmFjayB0byB3aGVyZSBpdCBzaG91
bGQgYmUgdW5kZXIgdGhlIGlkZW50aXR5IG1hcCwgYW5kIHJlc2V0cyB0aGUgc2Nyb2xsZWQgcmVj
dCBhbmQgb2Zmc2V0LgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OnBhaW50KTogQ2hh
bmdlZCB0byBjYWxsIHRocm91Z2ggcGVyZm9ybVdpdGhTY3JvbGxlZFJlY3RUcmFuc2Zvcm0oKS4K
KyAgICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OnNjcm9sbCk6IE5vdyBpbnN0ZWFkIG9m
IGNvcHlpbmcgcGl4ZWxzLCBqdXN0IHVwZGF0ZXMgdGhlIHNjcm9sbGVkCisgICAgICAgIHJlY3Qg
YW5kIG9mZnNldC4KKwogMjAxMi0wMi0xNyAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRo
YWxAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF1bV0syXSBBbGxvdyBvcGFxdWUgdGlsZXMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmgJKHJldmlzaW9uIDEwODE2
NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBCYWNraW5nU3RvcmVfaAogI2RlZmluZSBC
YWNraW5nU3RvcmVfaAogCi0jaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAtNDYsMTAgKzQ2LDYgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1dpZGdldEJhY2tpbmdTdG9yZS5oPgogI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LSAgICBjbGFzcyBJbnRSZWN0OwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2hh
cmVhYmxlQml0bWFwOwpAQCAtOTIsOCArODgsMTcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShN
QUMpCiAgICAgQ0dDb250ZXh0UmVmIGJhY2tpbmdTdG9yZUNvbnRleHQoKTsKIAorICAgIHZvaWQg
cGVyZm9ybVdpdGhTY3JvbGxlZFJlY3RUcmFuc2Zvcm0oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IHZvaWQgKF4pKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JikpOworICAgIHZvaWQgcmVzZXRTY3JvbGxlZFJlY3QoKTsKKwogICAgIFJldGFpblB0cjxDR0xh
eWVyUmVmPiBtX2NnTGF5ZXI7CiAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gbV9iaXRtYXBD
b250ZXh0OworCisgICAgLy8gVGhlIHJlY3RhbmdlIHRoYXQgd2FzIHNjcm9sbGVkIG1vc3QgcmVj
ZW50bHkuCisgICAgV2ViQ29yZTo6SW50UmVjdCBtX3Njcm9sbGVkUmVjdDsKKyAgICAvLyBDb250
ZW50cyBvZiBtX3Njcm9sbGVkUmVjdCBhcmUgb2Zmc2V0IGJ5IHRoaXMgYW1vdW50IChhbmQgd3Jh
cHBlZCBhcm91bmQpIHdpdGggcmVzcGVjdCB0bworICAgIC8vIHRoZWlyIG9yaWdpbmFsIGxvY2F0
aW9uLgorICAgIFdlYkNvcmU6OkludFNpemUgbV9zY3JvbGxlZFJlY3RPZmZzZXQ7CiAjZWxpZiBQ
TEFURk9STShXSU4pIHx8IFBMQVRGT1JNKFdJTl9DQUlSTykKICAgICBPd25QdHI8SEJJVE1BUD4g
bV9iaXRtYXA7CiAjZWxpZiBQTEFURk9STShRVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvQmFja2luZ1N0b3JlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvQmFja2luZ1N0b3JlTWFjLm1tCShyZXZpc2lvbiAxMDgxNjYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0JhY2tpbmdTdG9yZU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzEsMjYgKzMxLDEwNyBAQAogI2ltcG9ydCAiVXBkYXRlSW5mby5oIgogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9SZWdpb24uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgQmFja2lu
Z1N0b3JlOjpwZXJmb3JtV2l0aFNjcm9sbGVkUmVjdFRyYW5zZm9ybShjb25zdCBJbnRSZWN0JiBy
ZWN0LCB2b2lkICheYmxvY2spKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJikpCiB7Ci0g
ICAgaWYgKG1fY2dMYXllcikgewotICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQp
OwotICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHJlY3QpOworICAgIGlmICht
X3Njcm9sbGVkUmVjdC5pc0VtcHR5KCkgfHwgbV9zY3JvbGxlZFJlY3RPZmZzZXQuaXNaZXJvKCkg
fHwgIW1fc2Nyb2xsZWRSZWN0LmludGVyc2VjdHMocmVjdCkpIHsKKyAgICAgICAgYmxvY2socmVj
dCwgSW50U2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgICAgICBDR0NvbnRl
eHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdMYXllckF0
UG9pbnQoY29udGV4dCwgQ0dQb2ludE1ha2UoMCwgLW1fc2l6ZS5oZWlnaHQoKSksIG1fY2dMYXll
ci5nZXQoKSk7CisgICAgLy8gVGhlIHBhcnQgb2YgcmVjdCB0aGF0J3Mgb3V0c2lkZSB0aGUgc2Ny
b2xsZWQgcmVjdCBpcyBub3QgdHJhbnNsYXRlZC4KKyAgICBSZWdpb24gdW50cmFuc2xhdGVkUmVn
aW9uID0gcmVjdDsKKyAgICB1bnRyYW5zbGF0ZWRSZWdpb24uc3VidHJhY3QobV9zY3JvbGxlZFJl
Y3QpOworICAgIFZlY3RvcjxJbnRSZWN0PiB1bnRyYW5zbGF0ZWRSZWN0cyA9IHVudHJhbnNsYXRl
ZFJlZ2lvbi5yZWN0cygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW50cmFuc2xhdGVk
UmVjdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGJsb2NrKHVudHJhbnNsYXRlZFJlY3RzW2ldLCBJ
bnRTaXplKCkpOworCisgICAgLy8gVGhlIHBhcnQgb2YgcmVjdCB0aGF0IGludGVyc2VjdHMgdGhl
IHNjcm9sbGVkIHJlY3QgY29tcHJpc2VzIHVwIHRvIGZvdXIgcGFydHMsIGVhY2ggc3ViamVjdAor
ICAgIC8vIHRvIGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIChhbGwgdHJhbnNsYXRpb25zIGFyZSBl
cXVpdmFsZW50IG1vZHVsbyB0aGUgZGltZW5zaW9ucyBvZiB0aGUKKyAgICAvLyBzY3JvbGxlZCBy
ZWN0IHRvIHRoZSBzY3JvbGwgb2Zmc2V0KS4KKyAgICBJbnRSZWN0IGludGVyc2VjdGlvbiA9IHJl
Y3Q7CisgICAgaW50ZXJzZWN0aW9uLmludGVyc2VjdChtX3Njcm9sbGVkUmVjdCk7CisKKyAgICBJ
bnRSZWN0IHNjcm9sbGVkUmVjdCA9IG1fc2Nyb2xsZWRSZWN0OworICAgIEludFNpemUgb2Zmc2V0
ID0gbV9zY3JvbGxlZFJlY3RPZmZzZXQ7CisgICAgc2Nyb2xsZWRSZWN0Lm1vdmUoLW9mZnNldCk7
CisKKyAgICBJbnRSZWN0IHBhcnQgPSBpbnRlcnNlY3Rpb247CisgICAgcGFydC5pbnRlcnNlY3Qo
c2Nyb2xsZWRSZWN0KTsKKyAgICBpZiAoIXBhcnQuaXNFbXB0eSgpKQorICAgICAgICBibG9jayhw
YXJ0LCBvZmZzZXQpOworCisgICAgcGFydCA9IGludGVyc2VjdGlvbjsKKyAgICBvZmZzZXQgKz0g
SW50U2l6ZSgwLCAtbV9zY3JvbGxlZFJlY3QuaGVpZ2h0KCkpOworICAgIHNjcm9sbGVkUmVjdC5t
b3ZlKEludFNpemUoMCwgbV9zY3JvbGxlZFJlY3QuaGVpZ2h0KCkpKTsKKyAgICBwYXJ0LmludGVy
c2VjdChzY3JvbGxlZFJlY3QpOworICAgIGlmICghcGFydC5pc0VtcHR5KCkpCisgICAgICAgIGJs
b2NrKHBhcnQsIG9mZnNldCk7CisKKyAgICBwYXJ0ID0gaW50ZXJzZWN0aW9uOworICAgIG9mZnNl
dCArPSBJbnRTaXplKC1tX3Njcm9sbGVkUmVjdC53aWR0aCgpLCAwKTsKKyAgICBzY3JvbGxlZFJl
Y3QubW92ZShJbnRTaXplKG1fc2Nyb2xsZWRSZWN0LndpZHRoKCksIDApKTsKKyAgICBwYXJ0Lmlu
dGVyc2VjdChzY3JvbGxlZFJlY3QpOworICAgIGlmICghcGFydC5pc0VtcHR5KCkpCisgICAgICAg
IGJsb2NrKHBhcnQsIG9mZnNldCk7CisKKyAgICBwYXJ0ID0gaW50ZXJzZWN0aW9uOworICAgIG9m
ZnNldCArPSBJbnRTaXplKDAsIG1fc2Nyb2xsZWRSZWN0LmhlaWdodCgpKTsKKyAgICBzY3JvbGxl
ZFJlY3QubW92ZShJbnRTaXplKDAsIC1tX3Njcm9sbGVkUmVjdC5oZWlnaHQoKSkpOworICAgIHBh
cnQuaW50ZXJzZWN0KHNjcm9sbGVkUmVjdCk7CisgICAgaWYgKCFwYXJ0LmlzRW1wdHkoKSkKKyAg
ICAgICAgYmxvY2socGFydCwgb2Zmc2V0KTsKK30KKwordm9pZCBCYWNraW5nU3RvcmU6OnJlc2V0
U2Nyb2xsZWRSZWN0KCkKK3sKKyAgICBBU1NFUlQoIW1fc2Nyb2xsZWRSZWN0LmlzRW1wdHkoKSk7
CiAKLSAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKKyAgICBpZiAobV9z
Y3JvbGxlZFJlY3RPZmZzZXQuaXNaZXJvKCkpIHsKKyAgICAgICAgbV9zY3JvbGxlZFJlY3QgPSBJ
bnRSZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9iaXRtYXBD
b250ZXh0KTsKLSAgICBwYWludEJpdG1hcENvbnRleHQoY29udGV4dCwgbV9iaXRtYXBDb250ZXh0
LmdldCgpLCByZWN0LmxvY2F0aW9uKCksIHJlY3QpOworICAgIFJldGFpblB0cjxDR0NvbG9yU3Bh
Y2VSZWY+IGNvbG9yU3BhY2UoQWRvcHRDRiwgQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkp
OworICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRDRiwgQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKDAsIG1fc2Nyb2xsZWRSZWN0LnNpemUoKS53aWR0aCgpLCBtX3Njcm9sbGVk
UmVjdC5zaXplKCkuaGVpZ2h0KCksIDgsIG1fc2Nyb2xsZWRSZWN0LnNpemUoKS53aWR0aCgpICog
NCwgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtD
R0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOworCisgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNv
bnRleHQuZ2V0KCksIC1tX3Njcm9sbGVkUmVjdC5sb2NhdGlvbigpLngoKSwgLW1fc2Nyb2xsZWRS
ZWN0LmxvY2F0aW9uKCkueSgpKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dC5n
ZXQoKSwgMCwgbV9zY3JvbGxlZFJlY3Quc2l6ZSgpLmhlaWdodCgpKTsKKyAgICBDR0NvbnRleHRT
Y2FsZUNUTShjb250ZXh0LmdldCgpLCAxLCAtMSk7CisgICAgcGFpbnQoY29udGV4dC5nZXQoKSwg
bV9zY3JvbGxlZFJlY3QpOworCisgICAgSW50UmVjdCBzb3VyY2VSZWN0KEludFBvaW50KCksIG1f
c2Nyb2xsZWRSZWN0LnNpemUoKSk7CisgICAgcGFpbnRCaXRtYXBDb250ZXh0KGJhY2tpbmdTdG9y
ZUNvbnRleHQoKSwgY29udGV4dC5nZXQoKSwgbV9zY3JvbGxlZFJlY3QubG9jYXRpb24oKSwgc291
cmNlUmVjdCk7CisKKyAgICBtX3Njcm9sbGVkUmVjdCA9IEludFJlY3QoKTsKKyAgICBtX3Njcm9s
bGVkUmVjdE9mZnNldCA9IEludFNpemUoKTsKK30KKwordm9pZCBCYWNraW5nU3RvcmU6OnBhaW50
KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7
CisgICAgcGVyZm9ybVdpdGhTY3JvbGxlZFJlY3RUcmFuc2Zvcm0ocmVjdCwgXihjb25zdCBJbnRS
ZWN0JiBwYXJ0LCBjb25zdCBJbnRTaXplJiBvZmZzZXQpIHsKKyAgICAgICAgaWYgKG1fY2dMYXll
cikgeworICAgICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKyAgICAgICAg
ICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgcGFydCk7CisKKyAgICAgICAgICAgIENH
Q29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKKyAgICAgICAgICAgIENHQ29udGV4dERy
YXdMYXllckF0UG9pbnQoY29udGV4dCwgQ0dQb2ludE1ha2UoLW9mZnNldC53aWR0aCgpLCBvZmZz
ZXQuaGVpZ2h0KCkgLSBtX3NpemUuaGVpZ2h0KCkpLCBtX2NnTGF5ZXIuZ2V0KCkpOworCisgICAg
ICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKG1fYml0bWFwQ29udGV4dCk7CisgICAg
ICAgIENHUmVjdCBzb3VyY2UgPSBwYXJ0OworICAgICAgICBzb3VyY2Uub3JpZ2luLnggKz0gb2Zm
c2V0LndpZHRoKCk7CisgICAgICAgIHNvdXJjZS5vcmlnaW4ueSArPSBvZmZzZXQuaGVpZ2h0KCk7
CisgICAgICAgIHBhaW50Qml0bWFwQ29udGV4dChjb250ZXh0LCBtX2JpdG1hcENvbnRleHQuZ2V0
KCksIHBhcnQubG9jYXRpb24oKSwgc291cmNlKTsKKyAgICB9KTsKIH0KIAogQ0dDb250ZXh0UmVm
IEJhY2tpbmdTdG9yZTo6YmFja2luZ1N0b3JlQ29udGV4dCgpCkBAIC0xMDEsMTUgKzE4MiwxOCBA
QCB2b2lkIEJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUoU2hhCiAKICAgICBJbnRQb2lu
dCB1cGRhdGVSZWN0TG9jYXRpb24gPSB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHMubG9jYXRp
b24oKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoY29udGV4dCk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0IGN0eChjb250ZXh0KTsKKyAgICBfX2Jsb2NrIEdyYXBoaWNzQ29u
dGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gY3R4OwogCiAgICAgLy8gUGFpbnQgYWxsIHVwZGF0ZSBy
ZWN0cy4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVwZGF0ZUluZm8udXBkYXRlUmVjdHMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gdXBkYXRlSW5mby51
cGRhdGVSZWN0c1tpXTsKICAgICAgICAgSW50UmVjdCBzcmNSZWN0ID0gdXBkYXRlUmVjdDsKLSAg
ICAgICAgc3JjUmVjdC5tb3ZlKC11cGRhdGVSZWN0TG9jYXRpb24ueCgpLCAtdXBkYXRlUmVjdExv
Y2F0aW9uLnkoKSk7Ci0KLSAgICAgICAgYml0bWFwLT5wYWludChncmFwaGljc0NvbnRleHQsIHVw
ZGF0ZUluZm8uZGV2aWNlU2NhbGVGYWN0b3IsIHVwZGF0ZVJlY3QubG9jYXRpb24oKSwgc3JjUmVj
dCk7CisgICAgICAgIHBlcmZvcm1XaXRoU2Nyb2xsZWRSZWN0VHJhbnNmb3JtKHNyY1JlY3QsIF4o
Y29uc3QgSW50UmVjdCYgcGFydCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KSB7CisgICAgICAgICAg
ICBJbnRSZWN0IHNyY1BhcnQgPSBwYXJ0OworICAgICAgICAgICAgc3JjUGFydC5tb3ZlKC11cGRh
dGVSZWN0TG9jYXRpb24ueCgpLCAtdXBkYXRlUmVjdExvY2F0aW9uLnkoKSk7CisgICAgICAgICAg
ICBiaXRtYXAtPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgdXBkYXRlSW5mby5kZXZpY2VTY2FsZUZh
Y3RvciwgcGFydC5sb2NhdGlvbigpICsgb2Zmc2V0LCBzcmNQYXJ0KTsKKyAgICAgICAgfSk7CiAg
ICAgfQogfQogCkBAIC0xMTgsMjYgKzIwMiwyMCBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6c2Nyb2xs
KGNvbnN0IEludFJlY3QmCiAgICAgaWYgKHNjcm9sbE9mZnNldC5pc1plcm8oKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKG1fY2dMYXllcikgewotICAgICAgICBDR0NvbnRleHRSZWYgbGF5
ZXJDb250ZXh0ID0gQ0dMYXllckdldENvbnRleHQobV9jZ0xheWVyLmdldCgpKTsKLQotICAgICAg
ICAvLyBTY3JvbGwgdGhlIGxheWVyIGJ5IHBhaW50aW5nIGl0IGludG8gaXRzZWxmIHdpdGggdGhl
IGdpdmVuIG9mZnNldC4KLSAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShsYXllckNvbnRleHQp
OwotICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGxheWVyQ29udGV4dCwgc2Nyb2xsUmVjdCk7
Ci0gICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGxheWVyQ29udGV4dCwgMSwgLTEpOwotICAgICAg
ICBDR0NvbnRleHREcmF3TGF5ZXJBdFBvaW50KGxheWVyQ29udGV4dCwgQ0dQb2ludE1ha2Uoc2Ny
b2xsT2Zmc2V0LndpZHRoKCksIC1tX3NpemUuaGVpZ2h0KCkgLSBzY3JvbGxPZmZzZXQuaGVpZ2h0
KCkpLCBtX2NnTGF5ZXIuZ2V0KCkpOwotICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGxh
eWVyQ29udGV4dCk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIW1fc2Nyb2xs
ZWRSZWN0LmlzRW1wdHkoKSAmJiBtX3Njcm9sbGVkUmVjdCAhPSBzY3JvbGxSZWN0KQorICAgICAg
ICByZXNldFNjcm9sbGVkUmVjdCgpOwogCi0gICAgQVNTRVJUKG1fYml0bWFwQ29udGV4dCk7Cisg
ICAgbV9zY3JvbGxlZFJlY3QgPSBzY3JvbGxSZWN0OwogCi0gICAgQ0dDb250ZXh0U2F2ZUdTdGF0
ZShtX2JpdG1hcENvbnRleHQuZ2V0KCkpOwotICAgIENHQ29udGV4dENsaXBUb1JlY3QobV9iaXRt
YXBDb250ZXh0LmdldCgpLCBzY3JvbGxSZWN0KTsKLSAgICBDR1BvaW50IGRlc3RpbmF0aW9uID0g
Q0dQb2ludE1ha2Uoc2Nyb2xsUmVjdC54KCkgKyBzY3JvbGxPZmZzZXQud2lkdGgoKSwgc2Nyb2xs
UmVjdC55KCkgKyBzY3JvbGxPZmZzZXQuaGVpZ2h0KCkpOwotICAgIHBhaW50Qml0bWFwQ29udGV4
dChtX2JpdG1hcENvbnRleHQuZ2V0KCksIG1fYml0bWFwQ29udGV4dC5nZXQoKSwgZGVzdGluYXRp
b24sIHNjcm9sbFJlY3QpOwotICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUobV9iaXRtYXBDb250
ZXh0LmdldCgpKTsKKyAgICBpbnQgd2lkdGggPSAobV9zY3JvbGxlZFJlY3RPZmZzZXQud2lkdGgo
KSAtIHNjcm9sbE9mZnNldC53aWR0aCgpKSAlIG1fc2Nyb2xsZWRSZWN0LndpZHRoKCk7CisgICAg
aWYgKHdpZHRoIDwgMCkKKyAgICAgICAgd2lkdGggKz0gbV9zY3JvbGxlZFJlY3Qud2lkdGgoKTsK
KyAgICBtX3Njcm9sbGVkUmVjdE9mZnNldC5zZXRXaWR0aCh3aWR0aCk7CisKKyAgICBpbnQgaGVp
Z2h0ID0gKG1fc2Nyb2xsZWRSZWN0T2Zmc2V0LmhlaWdodCgpIC0gc2Nyb2xsT2Zmc2V0LmhlaWdo
dCgpKSAlIG1fc2Nyb2xsZWRSZWN0LmhlaWdodCgpOworICAgIGlmIChoZWlnaHQgPCAwKQorICAg
ICAgICBoZWlnaHQgKz0gbV9zY3JvbGxlZFJlY3QuaGVpZ2h0KCk7CisgICAgbV9zY3JvbGxlZFJl
Y3RPZmZzZXQuc2V0SGVpZ2h0KGhlaWdodCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127720</attachid>
            <date>2012-02-18 16:29:28 -0800</date>
            <delta_ts>2012-02-18 19:47:08 -0800</delta_ts>
            <desc>Maintain a mapping from backing store coordinates to client coordinates in the most recently scrolled rect</desc>
            <filename>bug-78976-20120218162927.patch</filename>
            <type>text/plain</type>
            <size>10420</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODE3MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAyLTE4ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwODkx
ODAxPiBCYWNraW5nU3RvcmU6OnNjcm9sbCgpIHVubmVjZXNzYXJpbHkgY29waWVzIHBpeGVscyBh
cm91bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
OTc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmF0
aGVyIHRoYW4gbW92ZSBwaXhlbHMgaW4gdGhlIGJhY2tpbmcgc3RvcmUgaW4gcmVzcG9uc2UgdG8g
c2Nyb2xsaW5nLCB3ZSBjYW4gbWFpbnRhaW4gYQorICAgICAgICBtYXBwaW5nLCBmb3IgdGhlIG1v
c3QgcmVjZW50bHkgc2Nyb2xsZWQgcmVjdCwgZnJvbSBiYWNraW5nIHN0b3JlIGNvb3JkaW5hdGVz
IHRvIHZpZXcKKyAgICAgICAgY2xpZW50IGNvb3JkaW5hdGVzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0JhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQmFja2luZ1N0b3Jl
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OnBlcmZvcm1XaXRoU2Nyb2xs
ZWRSZWN0VHJhbnNmb3JtKTogQWRkZWQuIEdpdmVuIGEgYmxvY2sgdG8gYmUKKyAgICAgICAgcGVy
Zm9ybWVkIG9uIGEgcmVjdCwgZGl2aWRlcyB0aGUgcmVjdCBpbnRvIHBhcnRzIHN1Y2ggdGhhdCBm
b3IgZWFjaCBwYXJ0IHRoZSBtYXBwaW5nIGZyb20KKyAgICAgICAgYmFja2luZyBzdG9yZSBjb29y
ZGluYXRlcyB0byBjbGllbnQgY29vcmRpbmF0ZXMgaXMgYSAodW5pZm9ybSkgdHJhbnNsYXRpb24s
IGFuZCBwZXJmb3JtcworICAgICAgICB0aGUgYmxvY2sgb24gdGhhdCBwYXJ0LCBwYXNzaW5nIGl0
IHRoZSB0cmFuc2xhdGlvbiB0aGF0IGFwcGxpZXMgdG8gdGhlIHBhcnQuCisgICAgICAgIChXZWJL
aXQ6OkJhY2tpbmdTdG9yZTo6cmVzZXRTY3JvbGxlZFJlY3QpOiBBZGRlZC4gQ29waWVzIGV2ZXJ5
dGhpbmcgaW4gdGhlIHNjcm9sbGVkIHJlY3QKKyAgICAgICAgYmFjayB0byB3aGVyZSBpdCBzaG91
bGQgYmUgdW5kZXIgdGhlIGlkZW50aXR5IG1hcCwgYW5kIHJlc2V0cyB0aGUgc2Nyb2xsZWQgcmVj
dCBhbmQgb2Zmc2V0LgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OnBhaW50KTogQ2hh
bmdlZCB0byBjYWxsIHRocm91Z2ggcGVyZm9ybVdpdGhTY3JvbGxlZFJlY3RUcmFuc2Zvcm0oKS4K
KyAgICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OnNjcm9sbCk6IE5vdyBpbnN0ZWFkIG9m
IGNvcHlpbmcgcGl4ZWxzLCBqdXN0IHVwZGF0ZXMgdGhlIHNjcm9sbGVkCisgICAgICAgIHJlY3Qg
YW5kIG9mZnNldC4KKwogMjAxMi0wMi0xNyAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRo
YWxAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF1bV0syXSBBbGxvdyBvcGFxdWUgdGlsZXMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmgJKHJldmlzaW9uIDEwODE2
NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBCYWNraW5nU3RvcmVfaAogI2RlZmluZSBC
YWNraW5nU3RvcmVfaAogCi0jaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAtNDYsMTAgKzQ2LDYgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1dpZGdldEJhY2tpbmdTdG9yZS5oPgogI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LSAgICBjbGFzcyBJbnRSZWN0OwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2hh
cmVhYmxlQml0bWFwOwpAQCAtOTIsOCArODgsMTcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShN
QUMpCiAgICAgQ0dDb250ZXh0UmVmIGJhY2tpbmdTdG9yZUNvbnRleHQoKTsKIAorICAgIHZvaWQg
cGVyZm9ybVdpdGhTY3JvbGxlZFJlY3RUcmFuc2Zvcm0oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IHZvaWQgKF4pKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JikpOworICAgIHZvaWQgcmVzZXRTY3JvbGxlZFJlY3QoKTsKKwogICAgIFJldGFpblB0cjxDR0xh
eWVyUmVmPiBtX2NnTGF5ZXI7CiAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gbV9iaXRtYXBD
b250ZXh0OworCisgICAgLy8gVGhlIHJlY3RhbmdlIHRoYXQgd2FzIHNjcm9sbGVkIG1vc3QgcmVj
ZW50bHkuCisgICAgV2ViQ29yZTo6SW50UmVjdCBtX3Njcm9sbGVkUmVjdDsKKyAgICAvLyBDb250
ZW50cyBvZiBtX3Njcm9sbGVkUmVjdCBhcmUgb2Zmc2V0IGJ5IHRoaXMgYW1vdW50IChhbmQgd3Jh
cHBlZCBhcm91bmQpIHdpdGggcmVzcGVjdCB0bworICAgIC8vIHRoZWlyIG9yaWdpbmFsIGxvY2F0
aW9uLgorICAgIFdlYkNvcmU6OkludFNpemUgbV9zY3JvbGxlZFJlY3RPZmZzZXQ7CiAjZWxpZiBQ
TEFURk9STShXSU4pIHx8IFBMQVRGT1JNKFdJTl9DQUlSTykKICAgICBPd25QdHI8SEJJVE1BUD4g
bV9iaXRtYXA7CiAjZWxpZiBQTEFURk9STShRVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvQmFja2luZ1N0b3JlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvQmFja2luZ1N0b3JlTWFjLm1tCShyZXZpc2lvbiAxMDgxNjYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0JhY2tpbmdTdG9yZU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzEsMjYgKzMxLDEwOCBAQAogI2ltcG9ydCAiVXBkYXRlSW5mby5oIgogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9SZWdpb24uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgQmFja2lu
Z1N0b3JlOjpwZXJmb3JtV2l0aFNjcm9sbGVkUmVjdFRyYW5zZm9ybShjb25zdCBJbnRSZWN0JiBy
ZWN0LCB2b2lkICheYmxvY2spKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJikpCiB7Ci0g
ICAgaWYgKG1fY2dMYXllcikgewotICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQp
OwotICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHJlY3QpOworICAgIGlmICht
X3Njcm9sbGVkUmVjdC5pc0VtcHR5KCkgfHwgbV9zY3JvbGxlZFJlY3RPZmZzZXQuaXNaZXJvKCkg
fHwgIW1fc2Nyb2xsZWRSZWN0LmludGVyc2VjdHMocmVjdCkpIHsKKyAgICAgICAgYmxvY2socmVj
dCwgSW50U2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgICAgICBDR0NvbnRl
eHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdMYXllckF0
UG9pbnQoY29udGV4dCwgQ0dQb2ludE1ha2UoMCwgLW1fc2l6ZS5oZWlnaHQoKSksIG1fY2dMYXll
ci5nZXQoKSk7CisgICAgLy8gVGhlIHBhcnQgb2YgcmVjdCB0aGF0J3Mgb3V0c2lkZSB0aGUgc2Ny
b2xsZWQgcmVjdCBpcyBub3QgdHJhbnNsYXRlZC4KKyAgICBSZWdpb24gdW50cmFuc2xhdGVkUmVn
aW9uID0gcmVjdDsKKyAgICB1bnRyYW5zbGF0ZWRSZWdpb24uc3VidHJhY3QobV9zY3JvbGxlZFJl
Y3QpOworICAgIFZlY3RvcjxJbnRSZWN0PiB1bnRyYW5zbGF0ZWRSZWN0cyA9IHVudHJhbnNsYXRl
ZFJlZ2lvbi5yZWN0cygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW50cmFuc2xhdGVk
UmVjdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGJsb2NrKHVudHJhbnNsYXRlZFJlY3RzW2ldLCBJ
bnRTaXplKCkpOworCisgICAgLy8gVGhlIHBhcnQgb2YgcmVjdCB0aGF0IGludGVyc2VjdHMgdGhl
IHNjcm9sbGVkIHJlY3QgY29tcHJpc2VzIHVwIHRvIGZvdXIgcGFydHMsIGVhY2ggc3ViamVjdAor
ICAgIC8vIHRvIGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIChhbGwgdHJhbnNsYXRpb25zIGFyZSBl
cXVpdmFsZW50IG1vZHVsbyB0aGUgZGltZW5zaW9ucyBvZiB0aGUKKyAgICAvLyBzY3JvbGxlZCBy
ZWN0IHRvIHRoZSBzY3JvbGwgb2Zmc2V0KS4KKyAgICBJbnRSZWN0IGludGVyc2VjdGlvbiA9IHJl
Y3Q7CisgICAgaW50ZXJzZWN0aW9uLmludGVyc2VjdChtX3Njcm9sbGVkUmVjdCk7CisKKyAgICBJ
bnRSZWN0IHNjcm9sbGVkUmVjdCA9IG1fc2Nyb2xsZWRSZWN0OworICAgIEludFNpemUgb2Zmc2V0
ID0gbV9zY3JvbGxlZFJlY3RPZmZzZXQ7CisgICAgc2Nyb2xsZWRSZWN0Lm1vdmUoLW9mZnNldCk7
CisKKyAgICBJbnRSZWN0IHBhcnQgPSBpbnRlcnNlY3Rpb247CisgICAgcGFydC5pbnRlcnNlY3Qo
c2Nyb2xsZWRSZWN0KTsKKyAgICBpZiAoIXBhcnQuaXNFbXB0eSgpKQorICAgICAgICBibG9jayhw
YXJ0LCBvZmZzZXQpOworCisgICAgcGFydCA9IGludGVyc2VjdGlvbjsKKyAgICBvZmZzZXQgKz0g
SW50U2l6ZSgwLCAtbV9zY3JvbGxlZFJlY3QuaGVpZ2h0KCkpOworICAgIHNjcm9sbGVkUmVjdC5t
b3ZlKEludFNpemUoMCwgbV9zY3JvbGxlZFJlY3QuaGVpZ2h0KCkpKTsKKyAgICBwYXJ0LmludGVy
c2VjdChzY3JvbGxlZFJlY3QpOworICAgIGlmICghcGFydC5pc0VtcHR5KCkpCisgICAgICAgIGJs
b2NrKHBhcnQsIG9mZnNldCk7CisKKyAgICBwYXJ0ID0gaW50ZXJzZWN0aW9uOworICAgIG9mZnNl
dCArPSBJbnRTaXplKC1tX3Njcm9sbGVkUmVjdC53aWR0aCgpLCAwKTsKKyAgICBzY3JvbGxlZFJl
Y3QubW92ZShJbnRTaXplKG1fc2Nyb2xsZWRSZWN0LndpZHRoKCksIDApKTsKKyAgICBwYXJ0Lmlu
dGVyc2VjdChzY3JvbGxlZFJlY3QpOworICAgIGlmICghcGFydC5pc0VtcHR5KCkpCisgICAgICAg
IGJsb2NrKHBhcnQsIG9mZnNldCk7CisKKyAgICBwYXJ0ID0gaW50ZXJzZWN0aW9uOworICAgIG9m
ZnNldCArPSBJbnRTaXplKDAsIG1fc2Nyb2xsZWRSZWN0LmhlaWdodCgpKTsKKyAgICBzY3JvbGxl
ZFJlY3QubW92ZShJbnRTaXplKDAsIC1tX3Njcm9sbGVkUmVjdC5oZWlnaHQoKSkpOworICAgIHBh
cnQuaW50ZXJzZWN0KHNjcm9sbGVkUmVjdCk7CisgICAgaWYgKCFwYXJ0LmlzRW1wdHkoKSkKKyAg
ICAgICAgYmxvY2socGFydCwgb2Zmc2V0KTsKK30KKwordm9pZCBCYWNraW5nU3RvcmU6OnJlc2V0
U2Nyb2xsZWRSZWN0KCkKK3sKKyAgICBBU1NFUlQoIW1fc2Nyb2xsZWRSZWN0LmlzRW1wdHkoKSk7
CiAKLSAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKKyAgICBpZiAobV9z
Y3JvbGxlZFJlY3RPZmZzZXQuaXNaZXJvKCkpIHsKKyAgICAgICAgbV9zY3JvbGxlZFJlY3QgPSBJ
bnRSZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9iaXRtYXBD
b250ZXh0KTsKLSAgICBwYWludEJpdG1hcENvbnRleHQoY29udGV4dCwgbV9iaXRtYXBDb250ZXh0
LmdldCgpLCByZWN0LmxvY2F0aW9uKCksIHJlY3QpOworICAgIFJldGFpblB0cjxDR0NvbG9yU3Bh
Y2VSZWY+IGNvbG9yU3BhY2UoQWRvcHRDRiwgQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkp
OworICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRDRiwgQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKDAsIG1fc2Nyb2xsZWRSZWN0LnNpemUoKS53aWR0aCgpLCBtX3Njcm9sbGVk
UmVjdC5zaXplKCkuaGVpZ2h0KCksIDgsIG1fc2Nyb2xsZWRSZWN0LnNpemUoKS53aWR0aCgpICog
NCwgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtD
R0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOworCisgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNv
bnRleHQuZ2V0KCksIC1tX3Njcm9sbGVkUmVjdC5sb2NhdGlvbigpLngoKSwgLW1fc2Nyb2xsZWRS
ZWN0LmxvY2F0aW9uKCkueSgpKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dC5n
ZXQoKSwgMCwgbV9zY3JvbGxlZFJlY3Quc2l6ZSgpLmhlaWdodCgpKTsKKyAgICBDR0NvbnRleHRT
Y2FsZUNUTShjb250ZXh0LmdldCgpLCAxLCAtMSk7CisgICAgcGFpbnQoY29udGV4dC5nZXQoKSwg
bV9zY3JvbGxlZFJlY3QpOworCisgICAgSW50UmVjdCBzb3VyY2VSZWN0KEludFBvaW50KCksIG1f
c2Nyb2xsZWRSZWN0LnNpemUoKSk7CisgICAgcGFpbnRCaXRtYXBDb250ZXh0KGJhY2tpbmdTdG9y
ZUNvbnRleHQoKSwgY29udGV4dC5nZXQoKSwgbV9zY3JvbGxlZFJlY3QubG9jYXRpb24oKSwgc291
cmNlUmVjdCk7CisKKyAgICBtX3Njcm9sbGVkUmVjdCA9IEludFJlY3QoKTsKKyAgICBtX3Njcm9s
bGVkUmVjdE9mZnNldCA9IEludFNpemUoKTsKK30KKwordm9pZCBCYWNraW5nU3RvcmU6OnBhaW50
KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7
CisgICAgX19ibG9jayBDR1JlY3Qgc291cmNlOworICAgIHBlcmZvcm1XaXRoU2Nyb2xsZWRSZWN0
VHJhbnNmb3JtKHJlY3QsIF4oY29uc3QgSW50UmVjdCYgcGFydCwgY29uc3QgSW50U2l6ZSYgb2Zm
c2V0KSB7CisgICAgICAgIGlmIChtX2NnTGF5ZXIpIHsKKyAgICAgICAgICAgIENHQ29udGV4dFNh
dmVHU3RhdGUoY29udGV4dCk7CisgICAgICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRl
eHQsIHBhcnQpOworCisgICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAxLCAt
MSk7CisgICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJBdFBvaW50KGNvbnRleHQsIENHUG9p
bnRNYWtlKC1vZmZzZXQud2lkdGgoKSwgb2Zmc2V0LmhlaWdodCgpIC0gbV9zaXplLmhlaWdodCgp
KSwgbV9jZ0xheWVyLmdldCgpKTsKKworICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0
ZShjb250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFT
U0VSVChtX2JpdG1hcENvbnRleHQpOworICAgICAgICBzb3VyY2UgPSBwYXJ0OworICAgICAgICBz
b3VyY2Uub3JpZ2luLnggKz0gb2Zmc2V0LndpZHRoKCk7CisgICAgICAgIHNvdXJjZS5vcmlnaW4u
eSArPSBvZmZzZXQuaGVpZ2h0KCk7CisgICAgICAgIHBhaW50Qml0bWFwQ29udGV4dChjb250ZXh0
LCBtX2JpdG1hcENvbnRleHQuZ2V0KCksIHBhcnQubG9jYXRpb24oKSwgc291cmNlKTsKKyAgICB9
KTsKIH0KIAogQ0dDb250ZXh0UmVmIEJhY2tpbmdTdG9yZTo6YmFja2luZ1N0b3JlQ29udGV4dCgp
CkBAIC0xMDEsMTUgKzE4MywxOSBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRh
dGUoU2hhCiAKICAgICBJbnRQb2ludCB1cGRhdGVSZWN0TG9jYXRpb24gPSB1cGRhdGVJbmZvLnVw
ZGF0ZVJlY3RCb3VuZHMubG9jYXRpb24oKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGlj
c0NvbnRleHQoY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0IGN0eChjb250ZXh0KTsKKyAg
ICBfX2Jsb2NrIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gY3R4OwogCiAgICAg
Ly8gUGFpbnQgYWxsIHVwZGF0ZSByZWN0cy4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVw
ZGF0ZUluZm8udXBkYXRlUmVjdHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSW50UmVjdCB1cGRh
dGVSZWN0ID0gdXBkYXRlSW5mby51cGRhdGVSZWN0c1tpXTsKICAgICAgICAgSW50UmVjdCBzcmNS
ZWN0ID0gdXBkYXRlUmVjdDsKLSAgICAgICAgc3JjUmVjdC5tb3ZlKC11cGRhdGVSZWN0TG9jYXRp
b24ueCgpLCAtdXBkYXRlUmVjdExvY2F0aW9uLnkoKSk7Ci0KLSAgICAgICAgYml0bWFwLT5wYWlu
dChncmFwaGljc0NvbnRleHQsIHVwZGF0ZUluZm8uZGV2aWNlU2NhbGVGYWN0b3IsIHVwZGF0ZVJl
Y3QubG9jYXRpb24oKSwgc3JjUmVjdCk7CisgICAgICAgIF9fYmxvY2sgSW50UmVjdCBzcmNQYXJ0
OworICAgICAgICBwZXJmb3JtV2l0aFNjcm9sbGVkUmVjdFRyYW5zZm9ybShzcmNSZWN0LCBeKGNv
bnN0IEludFJlY3QmIHBhcnQsIGNvbnN0IEludFNpemUmIG9mZnNldCkgeworICAgICAgICAgICAg
c3JjUGFydCA9IHBhcnQ7CisgICAgICAgICAgICBzcmNQYXJ0Lm1vdmUoLXVwZGF0ZVJlY3RMb2Nh
dGlvbi54KCksIC11cGRhdGVSZWN0TG9jYXRpb24ueSgpKTsKKyAgICAgICAgICAgIGJpdG1hcC0+
cGFpbnQoZ3JhcGhpY3NDb250ZXh0LCB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yLCBwYXJ0
LmxvY2F0aW9uKCkgKyBvZmZzZXQsIHNyY1BhcnQpOworICAgICAgICB9KTsKICAgICB9CiB9CiAK
QEAgLTExOCwyNiArMjA0LDIwIEBAIHZvaWQgQmFja2luZ1N0b3JlOjpzY3JvbGwoY29uc3QgSW50
UmVjdCYKICAgICBpZiAoc2Nyb2xsT2Zmc2V0LmlzWmVybygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAobV9jZ0xheWVyKSB7Ci0gICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQg
PSBDR0xheWVyR2V0Q29udGV4dChtX2NnTGF5ZXIuZ2V0KCkpOwotCi0gICAgICAgIC8vIFNjcm9s
bCB0aGUgbGF5ZXIgYnkgcGFpbnRpbmcgaXQgaW50byBpdHNlbGYgd2l0aCB0aGUgZ2l2ZW4gb2Zm
c2V0LgotICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGxheWVyQ29udGV4dCk7Ci0gICAgICAg
IENHQ29udGV4dENsaXBUb1JlY3QobGF5ZXJDb250ZXh0LCBzY3JvbGxSZWN0KTsKLSAgICAgICAg
Q0dDb250ZXh0U2NhbGVDVE0obGF5ZXJDb250ZXh0LCAxLCAtMSk7Ci0gICAgICAgIENHQ29udGV4
dERyYXdMYXllckF0UG9pbnQobGF5ZXJDb250ZXh0LCBDR1BvaW50TWFrZShzY3JvbGxPZmZzZXQu
d2lkdGgoKSwgLW1fc2l6ZS5oZWlnaHQoKSAtIHNjcm9sbE9mZnNldC5oZWlnaHQoKSksIG1fY2dM
YXllci5nZXQoKSk7Ci0gICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUobGF5ZXJDb250ZXh0
KTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICghbV9zY3JvbGxlZFJlY3QuaXNF
bXB0eSgpICYmIG1fc2Nyb2xsZWRSZWN0ICE9IHNjcm9sbFJlY3QpCisgICAgICAgIHJlc2V0U2Ny
b2xsZWRSZWN0KCk7CiAKLSAgICBBU1NFUlQobV9iaXRtYXBDb250ZXh0KTsKKyAgICBtX3Njcm9s
bGVkUmVjdCA9IHNjcm9sbFJlY3Q7CiAKLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKG1fYml0bWFw
Q29udGV4dC5nZXQoKSk7Ci0gICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChtX2JpdG1hcENvbnRleHQu
Z2V0KCksIHNjcm9sbFJlY3QpOwotICAgIENHUG9pbnQgZGVzdGluYXRpb24gPSBDR1BvaW50TWFr
ZShzY3JvbGxSZWN0LngoKSArIHNjcm9sbE9mZnNldC53aWR0aCgpLCBzY3JvbGxSZWN0LnkoKSAr
IHNjcm9sbE9mZnNldC5oZWlnaHQoKSk7Ci0gICAgcGFpbnRCaXRtYXBDb250ZXh0KG1fYml0bWFw
Q29udGV4dC5nZXQoKSwgbV9iaXRtYXBDb250ZXh0LmdldCgpLCBkZXN0aW5hdGlvbiwgc2Nyb2xs
UmVjdCk7Ci0gICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShtX2JpdG1hcENvbnRleHQuZ2V0KCkp
OworICAgIGludCB3aWR0aCA9IChtX3Njcm9sbGVkUmVjdE9mZnNldC53aWR0aCgpIC0gc2Nyb2xs
T2Zmc2V0LndpZHRoKCkpICUgbV9zY3JvbGxlZFJlY3Qud2lkdGgoKTsKKyAgICBpZiAod2lkdGgg
PCAwKQorICAgICAgICB3aWR0aCArPSBtX3Njcm9sbGVkUmVjdC53aWR0aCgpOworICAgIG1fc2Ny
b2xsZWRSZWN0T2Zmc2V0LnNldFdpZHRoKHdpZHRoKTsKKworICAgIGludCBoZWlnaHQgPSAobV9z
Y3JvbGxlZFJlY3RPZmZzZXQuaGVpZ2h0KCkgLSBzY3JvbGxPZmZzZXQuaGVpZ2h0KCkpICUgbV9z
Y3JvbGxlZFJlY3QuaGVpZ2h0KCk7CisgICAgaWYgKGhlaWdodCA8IDApCisgICAgICAgIGhlaWdo
dCArPSBtX3Njcm9sbGVkUmVjdC5oZWlnaHQoKTsKKyAgICBtX3Njcm9sbGVkUmVjdE9mZnNldC5z
ZXRIZWlnaHQoaGVpZ2h0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="129922"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>