<?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>39640</bug_id>
          
          <creation_ts>2010-05-24 19:22:04 -0700</creation_ts>
          <short_desc>[chromium] Remove persistent graphics contexts from composited layers</short_desc>
          <delta_ts>2010-05-25 10:03:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Vangelis Kokkevis">vangelis</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>230043</commentid>
    <comment_count>0</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-05-24 19:22:04 -0700</bug_when>
    <thetext>Each composited layer (LayerChromium&apos;s) currently owns a GraphicsContext to which it renders into. This is left over from the days of the software compositing path. A persistent GraphicsContext per layer isn&apos;t required anymore (and wasted system memory) as the layer uses a GL texture for backing store.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230053</commentid>
    <comment_count>1</comment_count>
      <attachid>56963</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-05-24 19:41:59 -0700</bug_when>
    <thetext>Created attachment 56963
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230315</commentid>
    <comment_count>2</comment_count>
      <attachid>56963</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-05-25 09:34:43 -0700</bug_when>
    <thetext>Comment on attachment 56963
Proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230325</commentid>
    <comment_count>3</comment_count>
      <attachid>56963</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-25 10:03:14 -0700</bug_when>
    <thetext>Comment on attachment 56963
Proposed patch

Clearing flags on attachment: 56963

Committed r60171: &lt;http://trac.webkit.org/changeset/60171&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230326</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-25 10:03:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56963</attachid>
            <date>2010-05-24 19:41:59 -0700</date>
            <delta_ts>2010-05-25 10:03:14 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>removeGraphicsContext_39640.txt</filename>
            <type>text/plain</type>
            <size>22630</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDExNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDUtMjQgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbW92aW5nIHRoZSBwZXJzaXN0ZW50IEdyYXBoaWNzQ29udGV4dCBmcm9tIExheWVy
Q2hyb21pdW0gdG8gc2F2ZSBvbgorICAgICAgICBtZW1vcnkgYW5kIHNpbXBsaWZ5IGNvZGUuIExh
eWVycyBub3cgY3JlYXRlIGEgdGVtcG9yYXJ5IGNvbnRleHQsIGRyYXcgaW50bworICAgICAgICBp
dCwgdXBkYXRlIHRoZSBHTCB0ZXh0dXJlIGFuZCBkaXNjYXJkIHRoZSBjb250ZXh0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk2NDAKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyRHJh
d3NDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OkxheWVyQ2hyb21p
dW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6fkxheWVyQ2hyb21pdW0pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjp1cGRhdGVUZXh0dXJlQ29udGVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06On5MYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRSb290TGF5ZXJDYW52YXNTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmFzc2lnblRleHR1cmVGb3JMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvbXBvc2l0ZUxh
eWVyc1JlY3Vyc2l2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OnJvb3RMYXllckdyYXBoaWNzQ29udGV4dCk6CisKIDIwMTAtMDUtMjQgIFRvbnkgQ2hh
bmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQsIGJ1aWxkIGZp
eC4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXll
ckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDU5ODc1KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NzksMTEgKzQ3OSw2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjp1cGRhdGVMYXllclAKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0
ZUxheWVyRHJhd3NDb250ZW50KCkKIHsKLSAgICAvLyBTaW5jZSBvbmx5IGxheWVycyB0aGF0IGRy
YXcgY29udGVudCBoYXZlIGEgdmFsaWQgY29udGV4dAotICAgIC8vIHdlIG5lZWQgdG8gY2FsbCB1
cGRhdGVHcmFwaGljc0NvbnRleHQoKSBoZXJlIHRvIG1ha2Ugc3VyZSBvbmUKLSAgICAvLyBnZXRz
IGNyZWF0ZWQuCi0gICAgbV9sYXllci0+ZHJhd3NDb250ZW50VXBkYXRlZCgpOwotCiAgICAgaWYg
KG1fZHJhd3NDb250ZW50KQogICAgICAgICBtX2xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKIApJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwCShyZXZpc2lvbiA1OTg3NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICsz
NCwxNyBAQAogCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogCisjaW5jbHVkZSAiTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgiCisjaWYgUExBVEZPUk0oU0tJQSkKKyNpbmNsdWRlICJOYXRpdmVJ
bWFnZVNraWEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCisjZW5kaWYKICNp
bmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKICNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9y
bV9jYW52YXMuaCIKIAorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTUyLDcgKzU5LDkgQEAgTGF5ZXJDaHJv
bWl1bTo6TGF5ZXJDaHJvbWl1bShMYXllclR5cGUgdAogICAgICwgbV9vd25lcihvd25lcikKICAg
ICAsIG1fbGF5ZXJUeXBlKHR5cGUpCiAgICAgLCBtX3N1cGVybGF5ZXIoMCkKKyAgICAsIG1fbGF5
ZXJSZW5kZXJlcigwKQogICAgICwgbV9ib3JkZXJXaWR0aCgwKQorICAgICwgbV9hbGxvY2F0ZWRU
ZXh0dXJlSWQoMCkKICAgICAsIG1fYm9yZGVyQ29sb3IoMCwgMCwgMCwgMCkKICAgICAsIG1fYmFj
a2dyb3VuZENvbG9yKDAsIDAsIDAsIDApCiAgICAgLCBtX2FuY2hvclBvaW50KDAuNSwgMC41KQpA
QCAtNjYsMTMgKzc1LDkgQEAgTGF5ZXJDaHJvbWl1bTo6TGF5ZXJDaHJvbWl1bShMYXllclR5cGUg
dAogICAgICwgbV9vcGFjaXR5KDEuMCkKICAgICAsIG1fb3BhcXVlKHRydWUpCiAgICAgLCBtX3pQ
b3NpdGlvbigwLjApCi0gICAgLCBtX2NhbnZhcygwKQotICAgICwgbV9za2lhQ29udGV4dCgwKQot
ICAgICwgbV9ncmFwaGljc0NvbnRleHQoMCkKICAgICAsIG1fZ2VvbWV0cnlGbGlwcGVkKGZhbHNl
KQogICAgICwgbV9jb250ZW50c0RpcnR5KGZhbHNlKQogICAgICwgbV9jb250ZW50cygwKQotICAg
ICwgbV9oYXNDb250ZXh0KGZhbHNlKQogewogfQogCkBAIC04NCw2MSArODksOTIgQEAgTGF5ZXJD
aHJvbWl1bTo6fkxheWVyQ2hyb21pdW0oKQogCiAgICAgLy8gUmVtb3ZlIHRoZSBzdXBlcmxheWVy
IHJlZmVyZW5jZSBmcm9tIGFsbCBzdWJsYXllcnMuCiAgICAgcmVtb3ZlQWxsU3VibGF5ZXJzKCk7
Ci19Ci0KLXZvaWQgTGF5ZXJDaHJvbWl1bTo6dXBkYXRlR3JhcGhpY3NDb250ZXh0KCkKLXsKLSAg
ICAvLyBJZiB0aGUgbGF5ZXIgZG9lc24ndCBkcmF3IGFueXRoaW5nIChlLmcuIGl0J3MgYSBjb250
YWluZXIgbGF5ZXIpIHRoZW4gd2UKLSAgICAvLyBkb24ndCBjcmVhdGUgYSBjYW52YXMgLyBjb250
ZXh0IGZvciBpdC4gVGhlIHJvb3QgbGF5ZXIgaXMgYSBzcGVjaWFsCi0gICAgLy8gY2FzZSBhcyBl
dmVuIGlmIGl0J3MgbWFya2VkIGFzIGEgY29udGFpbmVyIGxheWVyIGl0IGRvZXMgYWN0dWFsbHkg
aGF2ZQotICAgIC8vIGNvbnRlbnQgdGhhdCBpdCBkcmF3cy4KLSAgICBSZW5kZXJMYXllckJhY2tp
bmcqIGJhY2tpbmcgPSBzdGF0aWNfY2FzdDxSZW5kZXJMYXllckJhY2tpbmcqPihtX293bmVyLT5j
bGllbnQoKSk7Ci0gICAgaWYgKCFkcmF3c0NvbnRlbnQoKSAmJiAhKHRoaXMgPT0gcm9vdExheWVy
KCkpKSB7Ci0gICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0LmNsZWFyKCk7Ci0gICAgICAgIG1fc2tp
YUNvbnRleHQuY2xlYXIoKTsKLSAgICAgICAgbV9jYW52YXMuY2xlYXIoKTsKLSAgICAgICAgbV9o
YXNDb250ZXh0ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSNpZiBQTEFURk9S
TShTS0lBKQotICAgIC8vIENyZWF0ZSBuZXcgY2FudmFzIGFuZCBjb250ZXh0LiBPd25QdHIgdGFr
ZXMgY2FyZSBvZiBmcmVlaW5nIHVwCi0gICAgLy8gdGhlIG9sZCBvbmVzLgotICAgIG1fY2FudmFz
ID0gbmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKG1fYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBt
X2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCksIGZhbHNlKTsKLSAgICBtX3NraWFDb250ZXh0ID0g
bmV3IFBsYXRmb3JtQ29udGV4dFNraWEobV9jYW52YXMuZ2V0KCkpOwotCi0gICAgLy8gVGhpcyBp
cyBuZWVkZWQgdG8gZ2V0IHRleHQgdG8gc2hvdyB1cCBjb3JyZWN0bHkuIFdpdGhvdXQgaXQsCi0g
ICAgLy8gR0RJIHJlbmRlcnMgd2l0aCB6ZXJvIGFscGhhIGFuZCB0aGUgdGV4dCBiZWNvbWVzIGlu
dmlzaWJsZS4KLSAgICAvLyBVbmZvcnR1bmF0ZWx5LCBzZXR0aW5nIHRoaXMgdG8gdHJ1ZSBkaXNh
YmxlcyBjbGVhcnR5cGUuCi0gICAgbV9za2lhQ29udGV4dC0+c2V0RHJhd2luZ1RvSW1hZ2VCdWZm
ZXIodHJ1ZSk7Ci0KLSAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG5ldyBHcmFwaGljc0NvbnRleHQo
cmVpbnRlcnByZXRfY2FzdDxQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCo+KG1fc2tpYUNvbnRleHQu
Z2V0KCkpKTsKLQotICAgIG1faGFzQ29udGV4dCA9IHRydWU7Ci0gICAgbV9jb250ZW50c0RpcnR5
ID0gdHJ1ZTsKLSNlbHNlCi0jZXJyb3IgIk5lZWQgdG8gaW1wbGVtZW50IGZvciB5b3VyIHBsYXRm
b3JtLiIKLSNlbmRpZgogCi0gICAgcmV0dXJuOworICAgIC8vIE5vdGlmeSB0aGUgcmVuZGVyZXIg
dG8gY2xlYW4gdXAgdGhlIHRleHR1cmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsYXllci4KKyAgICBp
ZiAobV9sYXllclJlbmRlcmVyKQorICAgICAgICBtX2xheWVyUmVuZGVyZXItPmZyZWVMYXllclRl
eHR1cmUodGhpcyk7CiB9CiAKLXZvaWQgTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50VXBkYXRl
ZCgpCit2b2lkIExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiByZW5kZXJlcikKIHsKLSAgICAvLyBDcmVhdGUgYSBkcmF3aW5nIGNvbnRleHQgaWYg
dGhlIGxheWVyIG5vdyBkcmF3cyBjb250ZW50Ci0gICAgLy8gb3IgZGVsZXRlIHRoZSBleGlzdGlu
ZyBjb250ZXh0IGlmIHRoZSBsYXllciBkb2Vzbid0IGRyYXcKLSAgICAvLyBjb250ZW50IGFueW1v
cmUuCi0gICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgLy8gSXQncyBub3QgZXhwZWN0
ZWQgdGhhdCBsYXllcnMgd2lsbCBldmVyIHN3aXRjaCByZW5kZXJlcnMuCisgICAgQVNTRVJUKCFy
ZW5kZXJlciB8fCAhbV9sYXllclJlbmRlcmVyIHx8IHJlbmRlcmVyID09IG1fbGF5ZXJSZW5kZXJl
cik7CisKKyAgICBtX2xheWVyUmVuZGVyZXIgPSByZW5kZXJlcjsKIH0KIAotdm9pZCBMYXllckNo
cm9taXVtOjp1cGRhdGVDb250ZW50cygpCit2b2lkIExheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1
cmVDb250ZW50cyh1bnNpZ25lZCBpbnQgdGV4dHVyZUlkKQogewogICAgIFJlbmRlckxheWVyQmFj
a2luZyogYmFja2luZyA9IHN0YXRpY19jYXN0PFJlbmRlckxheWVyQmFja2luZyo+KG1fb3duZXIt
PmNsaWVudCgpKTsKIAotICAgIGlmIChiYWNraW5nICYmICFiYWNraW5nLT5wYWludGluZ0dvZXNU
b1dpbmRvdygpICYmIGRyYXdzQ29udGVudCgpKQotICAgICAgICBtX293bmVyLT5wYWludEdyYXBo
aWNzTGF5ZXJDb250ZW50cygqbV9ncmFwaGljc0NvbnRleHQsIEludFJlY3QoMCwgMCwgbV9ib3Vu
ZHMud2lkdGgoKSwgbV9ib3VuZHMuaGVpZ2h0KCkpKTsKKyAgICBpZiAoYmFja2luZyAmJiAhYmFj
a2luZy0+cGFpbnRpbmdHb2VzVG9XaW5kb3coKSkgeworICAgICAgICB2b2lkKiBwaXhlbHMgPSAw
OworICAgICAgICBJbnRSZWN0IGRpcnR5UmVjdChtX2RpcnR5UmVjdCk7CisgICAgICAgIEludFNp
emUgcmVxdWlyZWRUZXh0dXJlU2l6ZTsKKyAgICAgICAgSW50U2l6ZSBiaXRtYXBTaXplOworI2lm
IFBMQVRGT1JNKFNLSUEpCisgICAgICAgIGNvbnN0IFNrQml0bWFwKiBza2lhQml0bWFwID0gMDsK
KyAgICAgICAgT3duUHRyPHNraWE6OlBsYXRmb3JtQ2FudmFzPiBjYW52YXM7CisgICAgICAgIE93
blB0cjxQbGF0Zm9ybUNvbnRleHRTa2lhPiBza2lhQ29udGV4dDsKKyAgICAgICAgT3duUHRyPEdy
YXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0OworICAgICAgICBpZiAoZHJhd3NDb250ZW50
KCkpIHsgLy8gTGF5ZXIgY29udGVudHMgbXVzdCBiZSBkcmF3biBpbnRvIGEgY2FudmFzLgorICAg
ICAgICAgICAgY2FudmFzLnNldChuZXcgc2tpYTo6UGxhdGZvcm1DYW52YXMoZGlydHlSZWN0Lndp
ZHRoKCksIGRpcnR5UmVjdC5oZWlnaHQoKSwgZmFsc2UpKTsKKyAgICAgICAgICAgIHNraWFDb250
ZXh0LnNldChuZXcgUGxhdGZvcm1Db250ZXh0U2tpYShjYW52YXMuZ2V0KCkpKTsKKworICAgICAg
ICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgdG8gZ2V0IHRleHQgdG8gc2hvdyB1cCBjb3JyZWN0bHku
IFdpdGhvdXQgaXQsCisgICAgICAgICAgICAvLyBHREkgcmVuZGVycyB3aXRoIHplcm8gYWxwaGEg
YW5kIHRoZSB0ZXh0IGJlY29tZXMgaW52aXNpYmxlLgorICAgICAgICAgICAgLy8gVW5mb3J0dW5h
dGVseSwgc2V0dGluZyB0aGlzIHRvIHRydWUgZGlzYWJsZXMgY2xlYXJ0eXBlLgorICAgICAgICAg
ICAgLy8gRklYTUU6IERvZXMgdGhpcyB0YWtlIHVzIGRvd24gYSB2ZXJ5IHNsb3cgdGV4dCByZW5k
ZXJpbmcgcGF0aD8KKyAgICAgICAgICAgIHNraWFDb250ZXh0LT5zZXREcmF3aW5nVG9JbWFnZUJ1
ZmZlcih0cnVlKTsKKworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldChuZXcgR3JhcGhp
Y3NDb250ZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8UGxhdGZvcm1HcmFwaGljc0NvbnRleHQqPihza2lh
Q29udGV4dC5nZXQoKSkpKTsKKworICAgICAgICAgICAgLy8gQnJpbmcgdGhlIGNhbnZhcyBpbnRv
IHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgcGFpbnQgcmVjdC4KKyAgICAgICAgICAgIGNh
bnZhcy0+dHJhbnNsYXRlKHN0YXRpY19jYXN0PFNrU2NhbGFyPigtZGlydHlSZWN0LngoKSksIHN0
YXRpY19jYXN0PFNrU2NhbGFyPigtZGlydHlSZWN0LnkoKSkpOworCisgICAgICAgICAgICBtX293
bmVyLT5wYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cygqZ3JhcGhpY3NDb250ZXh0LCBkaXJ0eVJl
Y3QpOworICAgICAgICAgICAgY29uc3QgU2tCaXRtYXAmIGJpdG1hcCA9IGNhbnZhcy0+Z2V0RGV2
aWNlKCktPmFjY2Vzc0JpdG1hcChmYWxzZSk7CisgICAgICAgICAgICBza2lhQml0bWFwID0gJmJp
dG1hcDsKKyAgICAgICAgICAgIHJlcXVpcmVkVGV4dHVyZVNpemUgPSBJbnRTaXplKG1heChtX2Jv
dW5kcy53aWR0aCgpLCBkaXJ0eVJlY3Qud2lkdGgoKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXgobV9ib3VuZHMuaGVpZ2h0KCksIGRpcnR5UmVjdC5oZWln
aHQoKSkpOworICAgICAgICB9IGVsc2UgeyAvLyBMYXllciBpcyBhIGNvbnRhaW5lci4KKyAgICAg
ICAgICAgIC8vIFRoZSBsYXllciBjb250YWlucyBhbiBJbWFnZS4KKyAgICAgICAgICAgIE5hdGl2
ZUltYWdlU2tpYSogc2tpYUltYWdlID0gc3RhdGljX2Nhc3Q8TmF0aXZlSW1hZ2VTa2lhKj4oY29u
dGVudHMoKSk7CisgICAgICAgICAgICBza2lhQml0bWFwID0gc2tpYUltYWdlOworICAgICAgICAg
ICAgcmVxdWlyZWRUZXh0dXJlU2l6ZSA9IEludFNpemUoc2tpYUJpdG1hcC0+d2lkdGgoKSwgc2tp
YUJpdG1hcC0+aGVpZ2h0KCkpOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKHNraWFCaXRt
YXApOworICAgICAgICBTa0F1dG9Mb2NrUGl4ZWxzIGxvY2soKnNraWFCaXRtYXApOworICAgICAg
ICBTa0JpdG1hcDo6Q29uZmlnIHNraWFDb25maWcgPSBza2lhQml0bWFwLT5jb25maWcoKTsKKyAg
ICAgICAgLy8gRklYTUU6IGRvIHdlIG5lZWQgdG8gc3VwcG9ydCBtb3JlIGltYWdlIGNvbmZpZ3Vy
YXRpb25zPworICAgICAgICBpZiAoc2tpYUNvbmZpZyA9PSBTa0JpdG1hcDo6a0FSR0JfODg4OF9D
b25maWcpIHsKKyAgICAgICAgICAgIHBpeGVscyA9IHNraWFCaXRtYXAtPmdldFBpeGVscygpOwor
ICAgICAgICAgICAgYml0bWFwU2l6ZSA9IEludFNpemUoc2tpYUJpdG1hcC0+d2lkdGgoKSwgc2tp
YUJpdG1hcC0+aGVpZ2h0KCkpOworICAgICAgICB9CisjZWxzZQorI2Vycm9yICJOZWVkIHRvIGlt
cGxlbWVudCBmb3IgeW91ciBwbGF0Zm9ybS4iCisjZW5kaWYKKyAgICAgICAgaWYgKHBpeGVscykg
eworICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlSWQpOwor
ICAgICAgICAgICAgLy8gSWYgdGhlIHRleHR1cmUgaWQgb3Igc2l6ZSBjaGFuZ2VkIHNpbmNlIGxh
c3QgdGltZSB0aGVuIHdlIG5lZWQgdG8gdGVsbCBHTAorICAgICAgICAgICAgLy8gdG8gcmUtYWxs
b2NhdGUgYSB0ZXh0dXJlLgorICAgICAgICAgICAgaWYgKG1fYWxsb2NhdGVkVGV4dHVyZUlkICE9
IHRleHR1cmVJZCB8fCByZXF1aXJlZFRleHR1cmVTaXplICE9IG1fYWxsb2NhdGVkVGV4dHVyZVNp
emUpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYml0bWFwU2l6ZSA9PSByZXF1aXJlZFRleHR1
cmVTaXplKTsKKyAgICAgICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwg
R0xfUkdCQSwgcmVxdWlyZWRUZXh0dXJlU2l6ZS53aWR0aCgpLCByZXF1aXJlZFRleHR1cmVTaXpl
LmhlaWdodCgpLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMpOworCisgICAg
ICAgICAgICAgICAgbV9hbGxvY2F0ZWRUZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7CisgICAgICAgICAg
ICAgICAgbV9hbGxvY2F0ZWRUZXh0dXJlU2l6ZSA9IHJlcXVpcmVkVGV4dHVyZVNpemU7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVChkaXJ0eVJlY3Qud2lkdGgo
KSA8PSBtX2FsbG9jYXRlZFRleHR1cmVTaXplLndpZHRoKCkgJiYgZGlydHlSZWN0LmhlaWdodCgp
IDw9IG1fYWxsb2NhdGVkVGV4dHVyZVNpemUuaGVpZ2h0KCkpOworICAgICAgICAgICAgICAgIEFT
U0VSVChkaXJ0eVJlY3Qud2lkdGgoKSA9PSBiaXRtYXBTaXplLndpZHRoKCkgJiYgZGlydHlSZWN0
LmhlaWdodCgpID09IGJpdG1hcFNpemUuaGVpZ2h0KCkpOworICAgICAgICAgICAgICAgIGdsVGV4
U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBkaXJ0eVJlY3QueCgpLCBkaXJ0eVJlY3QueSgp
LCBkaXJ0eVJlY3Qud2lkdGgoKSwgZGlydHlSZWN0LmhlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCBwaXhlbHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogCiAg
ICAgbV9jb250ZW50c0RpcnR5ID0gZmFsc2U7CisgICAgbV9kaXJ0eVJlY3Quc2V0U2l6ZShGbG9h
dFNpemUoKSk7CiB9CiAKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoTmF0aXZlSW1h
Z2VQdHIgY29udGVudHMpCkBAIC0xNDcsNyArMTgzLDcgQEAgdm9pZCBMYXllckNocm9taXVtOjpz
ZXRDb250ZW50cyhOYXRpdmVJbQogICAgIGlmIChtX2NvbnRlbnRzID09IGNvbnRlbnRzKQogICAg
ICAgICByZXR1cm47CiAgICAgbV9jb250ZW50cyA9IGNvbnRlbnRzOwotICAgIG1fY29udGVudHNE
aXJ0eSA9IHRydWU7CisgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKIHZvaWQgTGF5ZXJDaHJv
bWl1bTo6c2V0TmVlZHNDb21taXQoKQpAQCAtMjIxLDE5ICsyNTcsNiBAQCBpbnQgTGF5ZXJDaHJv
bWl1bTo6aW5kZXhPZlN1YmxheWVyKGNvbnN0CiAgICAgcmV0dXJuIC0xOwogfQogCi0vLyBUaGlz
IG1ldGhvZCBjYW4gYmUgY2FsbGVkIHRvIG92ZXJpZGUgdGhlIHNpemUgb2YgdGhlIGJhY2tpbmcg
c3RvcmUKLS8vIHVzZWQgZm9yIHRoZSBsYXllci4gSXQncyB0eXBpY2FsbHkgY2FsbGVkIG9uIHRo
ZSByb290IGxheWVyIHRvIGxpbWl0Ci0vLyBpdHMgc2l6ZSB0byB0aGUgYWN0dWFsIHZpc2libGUg
c2l6ZS4KLXZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2luZ1N0b3JlU2l6ZShjb25zdCBJbnRT
aXplJiBzaXplKQotewotICAgIGlmIChtX2JhY2tpbmdTdG9yZVNpemUgPT0gc2l6ZSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9iYWNraW5nU3RvcmVTaXplID0gc2l6ZTsKLSAgICB1cGRhdGVH
cmFwaGljc0NvbnRleHQoKTsKLSAgICBzZXROZWVkc0NvbW1pdCgpOwotfQotCiB2b2lkIExheWVy
Q2hyb21pdW06OnNldEJvdW5kcyhjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIGlmIChtX2Jv
dW5kcyA9PSBzaXplKQpAQCAtMjQyLDggKzI2NSw2IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0
Qm91bmRzKGNvbnN0IEludFMKICAgICBtX2JvdW5kcyA9IHNpemU7CiAgICAgbV9iYWNraW5nU3Rv
cmVTaXplID0gc2l6ZTsKIAotICAgIC8vIFJlLWNyZWF0ZSB0aGUgY2FudmFzIGFuZCBhc3NvY2lh
dGVkIGNvbnRleHRzLgotICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIHNldE5lZWRz
Q29tbWl0KCk7CiB9CiAKQEAgLTI5MywxNiArMzE0LDE3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6
c2V0TmVlZHNEaXNwbGF5KGNvbnMKIHsKICAgICAvLyBTaW1wbHkgbWFyayB0aGUgY29udGVudHMg
YXMgZGlydHkuIFRoZSBhY3R1YWwgcmVkcmF3IHdpbGwKICAgICAvLyBoYXBwZW4gd2hlbiBpdCdz
IHRpbWUgdG8gZG8gdGhlIGNvbXBvc2l0aW5nLgotICAgIC8vIEZJWE1FOiBTaG91bGQgb25seSB1
cGRhdGUgdGhlIGRpcnR5IHJlY3QgaW5zdGVhZCBvZiBtYXJraW5nCi0gICAgLy8gICAgICAgIHRo
ZSBlbnRpcmUgbGF5ZXIgZGlydHkuCiAgICAgbV9jb250ZW50c0RpcnR5ID0gdHJ1ZTsKIAorICAg
IG1fZGlydHlSZWN0LnVuaXRlKGRpcnR5UmVjdCk7CisKICAgICBzZXROZWVkc0NvbW1pdCgpOwog
fQogCiB2b2lkIExheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheSgpCiB7Ci0gICAgLy8gRklY
TUU6IGltcGxlbWVudAorICAgIG1fZGlydHlSZWN0LnNldFNpemUobV9ib3VuZHMpOworICAgIG1f
Y29udGVudHNEaXJ0eSA9IHRydWU7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA1OTg3NSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw4IEBAIGNsYXNzIFBsYXRmb3JtQ2FudmFzOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKKwogY2xh
c3MgTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBSZWZDb3VudGVkPExheWVyQ2hyb21pdW0+IHsKIHB1
YmxpYzoKICAgICBlbnVtIExheWVyVHlwZSB7IExheWVyLCBUcmFuc2Zvcm1MYXllciB9OwpAQCAt
MTUwLDIyICsxNTIsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0R2VvbWV0cnlGbGlwcGVkKGJv
b2wgZmxpcHBlZCkgeyBtX2dlb21ldHJ5RmxpcHBlZCA9IGZsaXBwZWQ7IHNldE5lZWRzQ29tbWl0
KCk7IH0KICAgICBib29sIGdlb21ldHJ5RmxpcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbWV0
cnlGbGlwcGVkOyB9CiAKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKCk7CisgICAgdm9pZCB1cGRh
dGVUZXh0dXJlQ29udGVudHModW5zaWduZWQgaW50IHRleHR1cmVJZCk7CiAgICAgYm9vbCBjb250
ZW50c0RpcnR5KCkgeyByZXR1cm4gbV9jb250ZW50c0RpcnR5OyB9CiAKICAgICB2b2lkIHNldENv
bnRlbnRzKE5hdGl2ZUltYWdlUHRyIGNvbnRlbnRzKTsKICAgICBOYXRpdmVJbWFnZVB0ciBjb250
ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHM7IH0KIAotICAgIHNraWE6OlBsYXRmb3Jt
Q2FudmFzKiBwbGF0Zm9ybUNhbnZhcygpIHsgcmV0dXJuIG1fY2FudmFzLmdldCgpOyB9Ci0gICAg
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQoKSB7IHJldHVybiBtX2dyYXBoaWNzQ29u
dGV4dC5nZXQoKTsgfQotCi0gICAgdm9pZCBzZXRCYWNraW5nU3RvcmVTaXplKGNvbnN0IEludFNp
emUmKTsKLQogICAgIGJvb2wgZHJhd3NDb250ZW50KCkgeyByZXR1cm4gbV9vd25lciAmJiBtX293
bmVyLT5kcmF3c0NvbnRlbnQoKTsgfQogCi0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNh
bGxlZCBldmVyeSB0aW1lIHRoZSBzdGF0dXMgZHJhd3NDb250ZW50KCkKLSAgICAvLyBzdGF0dXMg
Y2hhbmdlcyB0byBlbnN1cmUgdGhhdCB0aGUgaW50ZXJuYWwgZ3JhcGhpY3MgY29udGV4dCBpcyBp
biBzeW5jLgotICAgIHZvaWQgZHJhd3NDb250ZW50VXBkYXRlZCgpOworICAgIHZvaWQgc2V0TGF5
ZXJSZW5kZXJlcihMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKIAogcHJpdmF0ZToKICAgICBMYXll
ckNocm9taXVtKExheWVyVHlwZSwgR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcik7CkBAIC0x
ODcsMjEgKzE4MiwxMCBAQCBwcml2YXRlOgogICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2Fs
bGVkIGZyb20gcmVtb3ZlRnJvbVN1cGVybGF5ZXIuCiAgICAgdm9pZCByZW1vdmVTdWJsYXllcihM
YXllckNocm9taXVtKik7CiAKLSAgICAvLyBSZS1jcmVhdGVzIHRoZSBjYW52YXMgYW5kIGdyYXBo
aWNzIGNvbnRleHQuIFRoaXMgbWV0aG9kCi0gICAgLy8gbXVzdCBiZSBjYWxsZWQgZXZlcnkgdGlt
ZSB0aGUgbGF5ZXIgaXMgcmVzaXplZC4gT25seSBsYXllcnMKLSAgICAvLyB0aGF0IGRvIGRyYXdp
bmcgYW5kIHRoZSByb290IGxheWVyIGdldCBhIGNvbnRleHQuCi0gICAgdm9pZCB1cGRhdGVHcmFw
aGljc0NvbnRleHQoKTsKLQogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBtX3N1
YmxheWVyczsKICAgICBMYXllckNocm9taXVtKiBtX3N1cGVybGF5ZXI7CiAKICAgICBHcmFwaGlj
c0xheWVyQ2hyb21pdW0qIG1fb3duZXI7Ci0jaWYgUExBVEZPUk0oU0tJQSkKLSAgICBPd25QdHI8
c2tpYTo6UGxhdGZvcm1DYW52YXM+IG1fY2FudmFzOwotICAgIE93blB0cjxQbGF0Zm9ybUNvbnRl
eHRTa2lhPiBtX3NraWFDb250ZXh0OwotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IG1fZ3Jh
cGhpY3NDb250ZXh0OwotI2VuZGlmCi0gICAgYm9vbCBtX2hhc0NvbnRleHQ7CiAKICAgICBMYXll
clR5cGUgbV9sYXllclR5cGU7CiAKQEAgLTIxMSw2ICsxOTUsOSBAQCBwcml2YXRlOgogICAgIEZs
b2F0UG9pbnQgbV9hbmNob3JQb2ludDsKICAgICBDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKICAg
ICBDb2xvciBtX2JvcmRlckNvbG9yOworICAgIEZsb2F0UmVjdCBtX2RpcnR5UmVjdDsKKworICAg
IExheWVyUmVuZGVyZXJDaHJvbWl1bSogbV9sYXllclJlbmRlcmVyOwogCiAgICAgRmxvYXRSZWN0
IG1fZnJhbWU7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm07CkBAIC0yMjIs
NiArMjA5LDkgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2FuY2hvclBvaW50WjsKICAgICBmbG9h
dCBtX2JvcmRlcldpZHRoOwogCisgICAgdW5zaWduZWQgaW50IG1fYWxsb2NhdGVkVGV4dHVyZUlk
OworICAgIEludFNpemUgbV9hbGxvY2F0ZWRUZXh0dXJlU2l6ZTsKKwogICAgIGJvb2wgbV9jbGVh
cnNDb250ZXh0OwogICAgIGJvb2wgbV9kb3VibGVTaWRlZDsKICAgICBib29sIG1faGlkZGVuOwpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAkocmV2aXNpb24gNTk4NzUpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4Nyw2ICsxODcsMzMgQEAgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp+
TGF5ZXJSZW5kZXJlckNocgogICAgICAgICBnbERlbGV0ZVByb2dyYW0obV9zY3JvbGxQcm9ncmFt
T2JqZWN0KTsKICAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1fYm9yZGVyUHJvZ3JhbU9iamVjdCk7
CiAgICAgfQorCisgICAgLy8gRnJlZSB1cCBhbGwgR0wgdGV4dHVyZXMuCisgICAgZm9yIChUZXh0
dXJlSWRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3RleHR1cmVJZE1hcC5iZWdpbigpOyBpdGVyICE9
IG1fdGV4dHVyZUlkTWFwLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJl
cygxLCAmKGl0ZXItPnNlY29uZCkpOworICAgICAgICBpdGVyLT5maXJzdC0+c2V0TGF5ZXJSZW5k
ZXJlcigwKTsKKyAgICB9Cit9CisKKy8vIENyZWF0ZXMgYSBjYW52YXMgYW5kIGFuIGFzc29jaWF0
ZWQgZ3JhcGhpY3MgY29udGV4dCB0aGF0IHRoZSByb290IGxheWVyIHdpbGwKKy8vIHJlbmRlciBp
bnRvLgordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFJvb3RMYXllckNhbnZhc1NpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA9PSBtX3Jvb3RMYXllckNhbnZh
c1NpemUpCisgICAgICAgIHJldHVybjsKKworI2lmIFBMQVRGT1JNKFNLSUEpCisgICAgLy8gQ3Jl
YXRlIG5ldyBjYW52YXMgYW5kIGNvbnRleHQuIE93blB0ciB0YWtlcyBjYXJlIG9mIGZyZWVpbmcg
dXAKKyAgICAvLyB0aGUgb2xkIG9uZXMuCisgICAgbV9yb290TGF5ZXJDYW52YXMgPSBuZXcgc2tp
YTo6UGxhdGZvcm1DYW52YXMoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBmYWxzZSk7Cisg
ICAgbV9yb290TGF5ZXJTa2lhQ29udGV4dCA9IG5ldyBQbGF0Zm9ybUNvbnRleHRTa2lhKG1fcm9v
dExheWVyQ2FudmFzLmdldCgpKTsKKyAgICBtX3Jvb3RMYXllclNraWFDb250ZXh0LT5zZXREcmF3
aW5nVG9JbWFnZUJ1ZmZlcih0cnVlKTsKKyAgICBtX3Jvb3RMYXllckdyYXBoaWNzQ29udGV4dCA9
IG5ldyBHcmFwaGljc0NvbnRleHQocmVpbnRlcnByZXRfY2FzdDxQbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dCo+KG1fcm9vdExheWVyU2tpYUNvbnRleHQuZ2V0KCkpKTsKKyNlbHNlCisjZXJyb3IgIk5l
ZWQgdG8gaW1wbGVtZW50IGZvciB5b3VyIHBsYXRmb3JtLiIKKyNlbmRpZgorCisgICAgbV9yb290
TGF5ZXJDYW52YXNTaXplID0gc2l6ZTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdUZXh0dXJlZFF1YWQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBzY3JvbGxpbmcpCkBA
IC0yOTIsNyArMzE5LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMo
YwogCiAjaWYgUExBVEZPUk0oU0tJQSkKICAgICAgICAgLy8gR2V0IHRoZSBjb250ZW50cyBvZiB0
aGUgdXBkYXRlZCByZWN0LgotICAgICAgICBjb25zdCBTa0JpdG1hcCBiaXRtYXAgPSBtX3Jvb3RM
YXllci0+cGxhdGZvcm1DYW52YXMoKS0+Z2V0RGV2aWNlKCktPmFjY2Vzc0JpdG1hcChmYWxzZSk7
CisgICAgICAgIGNvbnN0IFNrQml0bWFwIGJpdG1hcCA9IG1fcm9vdExheWVyQ2FudmFzLT5nZXRE
ZXZpY2UoKS0+YWNjZXNzQml0bWFwKGZhbHNlKTsKICAgICAgICAgaW50IHJvb3RMYXllcldpZHRo
ID0gYml0bWFwLndpZHRoKCk7CiAgICAgICAgIGludCByb290TGF5ZXJIZWlnaHQgPSBiaXRtYXAu
aGVpZ2h0KCk7CiAgICAgICAgIEFTU0VSVChyb290TGF5ZXJXaWR0aCA9PSB1cGRhdGVSZWN0Lndp
ZHRoKCkgJiYgcm9vdExheWVySGVpZ2h0ID09IHVwZGF0ZVJlY3QuaGVpZ2h0KCkpOwpAQCAtMzYz
LDEzICszOTAsMTUgQEAgaW50IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0VGV4dHVyZUlkKAog
CiAvLyBBbGxvY2F0ZXMgYSBuZXcgdGV4dHVyZSBmb3IgdGhlIGxheWVyIGFuZCByZWdpc3RlcnMg
aXQgaW4gdGhlIHRleHR1cmVJZCBtYXAuCiAvLyBGSVhNRTogV2Ugd2lsbCBuZWVkIHRvIGNvbWUg
dXAgd2l0aCBhIG1vcmUgc29waGlzdGljYXRlZCBhbGxvY2F0aW9uIHN0cmF0ZWd5IGhlcmUuCi0v
LyBGSVhNRTogV2UgbmVlZCB0byBmcmVlIHVwIHRoZSBhc3NvY2lhdGVkIHRleHR1cmUgdXBvbiBs
YXllciBkZXN0cnVjdGlvbi4KIGludCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmFzc2lnblRleHR1
cmVGb3JMYXllcihMYXllckNocm9taXVtKiBsYXllcikKIHsKICAgICBHTHVpbnQgdGV4dHVyZUlk
ID0gY3JlYXRlTGF5ZXJUZXh0dXJlKCk7CiAKICAgICAvLyBGSVhNRTogQ2hlY2sgdGhhdCB0ZXh0
dXJlSWQgaXMgdmFsaWQKICAgICBtX3RleHR1cmVJZE1hcC5zZXQobGF5ZXIsIHRleHR1cmVJZCk7
CisKKyAgICBsYXllci0+c2V0TGF5ZXJSZW5kZXJlcih0aGlzKTsKKwogICAgIHJldHVybiB0ZXh0
dXJlSWQ7CiB9CiAKQEAgLTQ5MSw0MCArNTIwLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNvbXBvc2l0ZUxheQogICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBjb250ZW50cyBvZiB0
aGUgbGF5ZXIgYmVmb3JlIHRha2luZyBhIHNuYXBzaG90LiBGb3IgbGF5ZXJzIHRoYXQKICAgICAg
ICAgICAgIC8vIGFyZSBzaW1wbHkgY29udGFpbmVycywgdGhlIGZvbGxvd2luZyBjYWxsIGp1c3Qg
Y2xlYXJzIHRoZSBkaXJ0eSBmbGFnIGJ1dCBkb2Vzbid0CiAgICAgICAgICAgICAvLyBhY3R1YWxs
eSBkbyBhbnkgZHJhd3MvY29waWVzLgotICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRz
KCk7Ci0KLSAgICAgICAgICAgIGNvbnN0IFNrQml0bWFwKiBza2lhQml0bWFwID0gMDsKLSAgICAg
ICAgICAgIHZvaWQqIHBpeGVscyA9IDA7Ci0gICAgICAgICAgICBpZiAobGF5ZXItPmRyYXdzQ29u
dGVudCgpKSB7IC8vIExheWVyIGhhcyBpdHMgb3duIEdyYXBoaWNzQ29udGV4dC4KLSAgICAgICAg
ICAgICAgICAvLyBUaGUgY29udGVudHMgb2YgdGhlIGxheWVyIGFyZSBzdG9yZWQgaW4gdGhlIGNh
bnZhcyBhc3NvY2lhdGVkIHdpdGggaXQuCi0gICAgICAgICAgICAgICAgY29uc3QgU2tCaXRtYXAm
IGJpdG1hcCA9IGxheWVyLT5wbGF0Zm9ybUNhbnZhcygpLT5nZXREZXZpY2UoKS0+YWNjZXNzQml0
bWFwKGZhbHNlKTsKLSAgICAgICAgICAgICAgICBza2lhQml0bWFwID0gJmJpdG1hcDsKLSAgICAg
ICAgICAgIH0gZWxzZSB7IC8vIExheWVyIGlzIGEgY29udGFpbmVyLgotICAgICAgICAgICAgICAg
IC8vIFRoZSBsYXllciBjb250YWlucyBhbiBJbWFnZS4KLSAgICAgICAgICAgICAgICBOYXRpdmVJ
bWFnZVNraWEqIHNraWFJbWFnZSA9IHN0YXRpY19jYXN0PE5hdGl2ZUltYWdlU2tpYSo+KGxheWVy
LT5jb250ZW50cygpKTsKLSAgICAgICAgICAgICAgICBza2lhQml0bWFwID0gc2tpYUltYWdlOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBBU1NFUlQoc2tpYUJpdG1hcCk7Ci0gICAgICAg
ICAgICBTa0JpdG1hcDo6Q29uZmlnIHNraWFDb25maWcgPSBza2lhQml0bWFwLT5jb25maWcoKTsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBtdXN0IHN1cHBvcnQgbW9yZSBpbWFnZSBjb25maWd1cmF0
aW9ucy4KLSAgICAgICAgICAgIGlmIChza2lhQ29uZmlnID09IFNrQml0bWFwOjprQVJHQl84ODg4
X0NvbmZpZykgewotICAgICAgICAgICAgICAgIFNrQXV0b0xvY2tQaXhlbHMgbG9jaygqc2tpYUJp
dG1hcCk7Ci0gICAgICAgICAgICAgICAgaW50IGJpdG1hcFdpZHRoID0gc2tpYUJpdG1hcC0+d2lk
dGgoKTsKLSAgICAgICAgICAgICAgICBpbnQgYml0bWFwSGVpZ2h0ID0gc2tpYUJpdG1hcC0+aGVp
Z2h0KCk7Ci0gICAgICAgICAgICAgICAgaW50IHJvd0J5dGVzID0gc2tpYUJpdG1hcC0+cm93Qnl0
ZXMoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQocm93Qnl0ZXMgPT0gYml0bWFwV2lkdGggKiA0
KTsKLQotICAgICAgICAgICAgICAgIC8vIENvcHkgdGhlIGxheWVyIGNvbnRlbnRzIGludG8gdGhl
IHRleHR1cmUuCi0gICAgICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0
ZXh0dXJlSWQpOwotICAgICAgICAgICAgICAgIHZvaWQqIHBpeGVscyA9IHNraWFCaXRtYXAtPmdl
dFBpeGVscygpOwotICAgICAgICAgICAgICAgIGlmIChwaXhlbHMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUUuIFdlIGNhbiBiZSBzbWFydCBoZXJlIGFuZCBjYWxsIGdsVGV4U3ViSW1h
Z2UyRCBpZiB0aGUgbmV3IGJpdG1hcCBoYXMgdGhlIHNhbWUKLSAgICAgICAgICAgICAgICAgICAg
Ly8gc2l6ZSBhcyB0aGUgb2xkIG9uZSB3aGljaCB3aWxsIHNhdmUgdXMgb25lIHVuZWNlc3Nhcnkg
YWxsb2NhdGlvbiAvIGRlYWxsb2NhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgZ2xUZXhJbWFn
ZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIGJpdG1hcFdpZHRoLCBiaXRtYXBIZWlnaHQs
IDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7Ci0gICAgICAgICAgICAgICAg
ICAgIGNoZWNrR0xFcnJvcigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGxheWVyLT51cGRhdGVUZXh0dXJlQ29udGVudHModGV4dHVyZUlkKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChsYXllci0+ZG91YmxlU2lkZWQoKSkKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaAkocmV2aXNpb24gNTk4NzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2
ICs2OSwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhcmR3YXJlQ29tcG9zaXRpbmcoKSBjb25z
dCB7IHJldHVybiBtX2hhcmR3YXJlQ29tcG9zaXRpbmc7IH0KIAorICAgIHZvaWQgc2V0Um9vdExh
eWVyQ2FudmFzU2l6ZShjb25zdCBJbnRTaXplJik7CisKKyAgICBHcmFwaGljc0NvbnRleHQqIHJv
b3RMYXllckdyYXBoaWNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdExheWVyR3JhcGhp
Y3NDb250ZXh0LmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wb3NpdGVMYXllcnNS
ZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxv
YXQgb3BhY2l0eSwgY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpOwogCkBAIC0xMjQsNiArMTI4
LDEzIEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPExheWVyQ2hyb21pdW0qLCB1bnNp
Z25lZCBpbnQ+IFRleHR1cmVJZE1hcDsKICAgICBUZXh0dXJlSWRNYXAgbV90ZXh0dXJlSWRNYXA7
CiAKKyNpZiBQTEFURk9STShTS0lBKQorICAgIE93blB0cjxza2lhOjpQbGF0Zm9ybUNhbnZhcz4g
bV9yb290TGF5ZXJDYW52YXM7CisgICAgT3duUHRyPFBsYXRmb3JtQ29udGV4dFNraWE+IG1fcm9v
dExheWVyU2tpYUNvbnRleHQ7CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gbV9yb290TGF5
ZXJHcmFwaGljc0NvbnRleHQ7CisjZW5kaWYKKyAgICBJbnRTaXplIG1fcm9vdExheWVyQ2FudmFz
U2l6ZTsKKwogICAgIE93blB0cjxHTEVTMkNvbnRleHQ+IG1fZ2xlczJDb250ZXh0OwogCiAgICAg
Ly8gVGhlIFdlYkNvcmUgUGFnZSB0aGF0IHRoZSBjb21wb3NpdG9yIHJlbmRlcnMgaW50by4KSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjAxMTUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUtMjQgIFZhbmdlbGlz
IEtva2tldmlzICA8dmFuZ2VsaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBHcmFwaGljc0NvbnRleHQgdGhhdCBzZXJ2
ZXMgYXMgYSBiYWNraW5nIHN0b3JlIGZvciB0aGUgcm9vdCBsYXllcgorICAgICAgICB1cGRhdGVz
IHdoZW4gZG9pbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgbm93IHN0b3JlZCBpbiBMYXll
clJlbmRlcmVyQ2hyb21pdW0KKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgTGF5ZXIgaXRzZWxmLiBV
cGRhdGluZyBjb2RlIGluIFdlYlZpZXdJbXBsIHRvIHJlZmxlY3QKKyAgICAgICAgdGhhdCBjaGFu
Z2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTY0
MAorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnVwZGF0ZVJvb3RMYXllckNvbnRlbnRzKToKKwogMjAxMC0wNS0yNCAgVG9ueSBD
aGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5vdCByZXZpZXdlZCwgYnVpbGQg
Zml4LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDU5ODc1
KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxMTYsMTIgKzIxMTYsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlUm9vdExheWVy
Q29udGVudAogICAgIGlmIChyb290TGF5ZXIpIHsKICAgICAgICAgSW50UmVjdCB2aXNpYmxlUmVj
dCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCh0cnVlKTsKIAotICAgICAgICAvLyBVcGRhdGUg
dGhlIHJvb3QgbGF5ZXIncyBiYWNraW5nIHN0b3JlIHRvIGJlIHRoZSBzaXplIG9mIHRoZSBkaXJ0
eSByZWN0LgotICAgICAgICAvLyBVbmxpa2Ugb3RoZXIgbGF5ZXJzIHRoZSByb290IGxheWVyIGRv
ZXNuJ3QgaGF2ZSBwZXJzaXN0ZW50IHN0b3JhZ2UgZm9yIGl0cwotICAgICAgICAvLyBjb250ZW50
cyBpbiBzeXN0ZW0gbWVtb3J5LgotICAgICAgICByb290TGF5ZXItPnNldEJhY2tpbmdTdG9yZVNp
emUoSW50U2l6ZShyZWN0LndpZHRoLCByZWN0LmhlaWdodCkpOwotICAgICAgICBHcmFwaGljc0Nv
bnRleHQqIHJvb3RMYXllckNvbnRleHQgPSByb290TGF5ZXItPmdyYXBoaWNzQ29udGV4dCgpOwot
ICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhcyogcGxhdGZvcm1DYW52YXMgPSByb290TGF5ZXIt
PnBsYXRmb3JtQ2FudmFzKCk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0Um9vdExheWVy
Q2FudmFzU2l6ZShJbnRTaXplKHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0KSk7CisgICAgICAgIEdy
YXBoaWNzQ29udGV4dCogcm9vdExheWVyQ29udGV4dCA9IG1fbGF5ZXJSZW5kZXJlci0+cm9vdExh
eWVyR3JhcGhpY3NDb250ZXh0KCk7CisKKyNpZiBQTEFURk9STShTS0lBKQorICAgICAgICBQbGF0
Zm9ybUNvbnRleHRTa2lhKiBza2lhQ29udGV4dCA9IHJvb3RMYXllckNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpOworICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhcyogcGxhdGZvcm1DYW52YXMg
PSBza2lhQ29udGV4dC0+Y2FudmFzKCk7CiAKICAgICAgICAgcGxhdGZvcm1DYW52YXMtPnNhdmUo
KTsKIApAQCAtMjEzMCwxMCArMjEzMCwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVSb290
TGF5ZXJDb250ZW50CiAKICAgICAgICAgcm9vdExheWVyQ29udGV4dC0+c2F2ZSgpOwogCi0gICAg
ICAgIHdlYmZyYW1lLT5wYWludFdpdGhDb250ZXh0KCoocm9vdExheWVyLT5ncmFwaGljc0NvbnRl
eHQoKSksIHJlY3QpOworICAgICAgICB3ZWJmcmFtZS0+cGFpbnRXaXRoQ29udGV4dCgqcm9vdExh
eWVyQ29udGV4dCwgcmVjdCk7CiAgICAgICAgIHJvb3RMYXllckNvbnRleHQtPnJlc3RvcmUoKTsK
IAogICAgICAgICBwbGF0Zm9ybUNhbnZhcy0+cmVzdG9yZSgpOworI2VuZGlmCiAgICAgfQogfQog
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>