<?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>25069</bug_id>
          
          <creation_ts>2009-04-06 21:11:47 -0700</creation_ts>
          <short_desc>Clean up accelerated compositing code to reduce number of layer rebuilds</short_desc>
          <delta_ts>2009-04-07 15:41:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>116712</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-06 21:11:47 -0700</bug_when>
    <thetext>I have some cleanup to the accelerated compositing layer rebuilding logic that clarifies a number of assumptions, and removes some spurious caching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116713</commentid>
    <comment_count>1</comment_count>
      <attachid>29299</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-06 21:26:34 -0700</bug_when>
    <thetext>Created attachment 29299
Patch.

No behavioral changes, so no testcases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116772</commentid>
    <comment_count>2</comment_count>
      <attachid>29299</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-04-07 10:23:53 -0700</bug_when>
    <thetext>Comment on attachment 29299
Patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116814</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-07 15:41:41 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/42271</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29299</attachid>
            <date>2009-04-06 21:26:34 -0700</date>
            <delta_ts>2009-04-07 10:23:53 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>25069_patch.txt</filename>
            <type>text/plain</type>
            <size>20925</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTA4NjhhOS4uYzdmOWEyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAwOS0wNC0wNiAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNTA2OQorICAgICAgICAKKyAgICAgICAgQ2xlYW4gdXAgdGhlIGFjY2VsZXJh
dGVkIGNvbXBvc2l0aW5nIGNvZGUgdGhhdCBkZXRlcm1pbmVzIHRoZSBmb3JtYXQgb2YKKyAgICAg
ICAgdGhlIEdyYXBoaWNzTGF5ZXIgaGllcmFyY2h5LCBiZWluZyBtb3JlIGV4cGxpY2l0IGFib3V0
IHdoaWNoIHBhcnRzIGhhdmUKKyAgICAgICAgdG8gaGFwcGVuIGJlZm9yZSBhbmQgYWZ0ZXIgZGVz
Y2VuZGFudCBsYXllcnMgaGF2ZSBiZWVuIHVwZGF0ZWQuIEFsc28gcmVtb3ZlCisgICAgICAgIHNv
bWUgdW5oZWxwZnVsIGNhY2hpbmcgb2Ygc3RhdGUuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAg
T25seSBjYWxsIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKCkgaWYgd2Uga25vdyB3ZSdyZSBub3Qg
Z29pbmcgdG8gYmUKKyAgICAgICAgZG9pbmcgYSBsYXlvdXQgc29vbi4KKyAgICAgICAgCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0RHJhd3NDb250ZW50KToKKyAgICAgICAgVG9n
Z2xpbmcgZHJhd3NDb250ZW50IGZyb20gZmFsc2UgdG8gdHJ1ZSBzaG91bGQgZG8gYSBzZXROZWVk
c0Rpc3BsYXkoKS4KKyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzdHlsZUNoYW5nZWQpOgorICAgICAg
ICB1cGRhdGVMYXllckNvbXBvc2l0aW5nU3RhdGUoKSBubyBsb25nZXIgdXBkYXRlcyB0aGUgbGF5
ZXIgZ2VvbWV0cnksIHNvCisgICAgICAgIGRvIHRoYXQgaGVyZSBpZiB3ZSdyZSBub3QgZ29pbmcg
dG8gcmVidWlsZCBsYXllcnMgYW55d2F5LgorICAgICAgICBBbHNvLCB1cGRhdGVMYXllckNvbXBv
c2l0aW5nU3RhdGUoKSBubyBsb25nZXIgZG9lcyBhIHNldENvbnRlbnRzTmVlZERpc3BsYXksCisg
ICAgICAgIHNvIGRvIHRoYXQgaWYgdGhlIHN0eWxlIGNoYW5nZSBpbmRpY2F0ZXMgdGhhdCBhIHJl
cGFpbnQgaXMgcmVxdWlyZWQuCisgICAgICAgIAorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6UmVuZGVyTGF5ZXJCYWNr
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQWZ0ZXJM
YXlvdXQpOgorICAgICAgICBUaGUgJ2RyYXdpbmcgb3B0aW1pemF0aW9ucycgbG9naWMgaGFzIGJl
ZW4gcm9sbGVkIGludG8gdXBkYXRlR3JhcGhpY3NMYXllckNvbmZpZ3VyYXRpb24oKQorICAgICAg
ICBhbmQgdXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkuCisgICAgICAgIAorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyQ29uZmlndXJh
dGlvbik6CisgICAgICAgIEdyb3VwIHRoYXQgY29kZSB0aGF0IGRlY2lkZXMgd2hhdCBHcmFwaGlj
c0xheWVycyBhcmUgbmVlZGVkIGludG8gdGhpcyBtZXRob2QsCisgICAgICAgIHdoaWNoIGRlYWxz
IHdpdGggY2xpcHBpbmcgbGF5ZXJzIGFuZCAnZGlyZWN0IGNvbXBvc2l0aW5nJzogaW1hZ2VzIHRo
YXQgY2FuIGJlCisgICAgICAgIHJlbmRlcmVkIHZpYSB0aGUgY29tcG9zaXRvci4KKyAgICAgICAg
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5
ZXJHZW9tZXRyeSk6CisgICAgICAgIENhbGwgc2V0RHJhd3NDb250ZW50KCkgaWYgdXBkYXRlR3Jh
cGhpY3NMYXllckNvbmZpZ3VyYXRpb24oKSBkaWRuJ3QgYWxyZWFkeQorICAgICAgICBmaWd1cmUg
aXQgb3V0IGZvciBpbWFnZSBsYXllcnMuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjppc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIpOgorICAg
ICAgICBSZW1vdmUgdGhlIG1fc2ltcGxlQ29tcG9zaXRpbmdMYXllclN0YXR1c0RpcnR5IGNhY2hl
IGluZGljYXRvciwgc2luY2Ugd2UganVzdAorICAgICAgICBjb21wdXRlZCBpdCBldmVyeSB0aW1l
IGFueXdheS4KKyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllckNvbXBv
c2l0aW5nU3RhdGUpOgorICAgICAgICB1cGRhdGVHcmFwaGljc0xheWVycygpIHdhcyByZW5hbWVk
IHRvIHVwZGF0ZUdyYXBoaWNzTGF5ZXJDb25maWd1cmF0aW9uKCksCisgICAgICAgIHdoaWNoIGNh
bGxzIGNsaXBwZWRCeUFuY2VzdG9yKCkgZXRjLiBpdHNlbGYgcmF0aGVyIHRoYW4gaGF2aW5nIGV2
ZXJ5dGhpbmcgcGFzc2VkIGluLgorICAgICAgICBSZXBhaW50cyBhcmUgdGFrZW4gY2FyZSBvZiBi
eSBzdHlsZUNoYW5nZWQoKSBhbmQgc2V0RHJhd3NDb250ZW50KCkuCisgICAgICAgIAorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjYWxjdWxhdGVDb21wb3NpdGVkQm91
bmRzKToKKyAgICAgICAgIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiBsYXllci0+dHJhbnNmb3Jt
KCkgaXMgYSBzeW5vbnltIGZvciBwYWludHNXaXRoVHJhbnNmb3JtKCkuCisgICAgICAgIAorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzZXRDb21wb3NpdGluZ1BhcmVu
dCk6CisgICAgICAgIE5vIG5lZWQgdG8gY2FsbCB1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnko
KSBoZXJlLCBiZWNhdXNlIHdlJ3JlIGdvaW5nIHRvCisgICAgICAgIHJlYnVpbGQgbGF5ZXJzIGFu
eXdheS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZSk6CisgICAgICAgIEFkZCBjb21tZW50cywgYW5k
IHRlc3QgbGF5ZXJCYWNraW5nIGluc3RlYWQgb2YgbGF5ZXItPmlzQ29tcG9zaXRlZCgpLgorCiAy
MDA5LTA0LTA2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgTWFyayBSb3dlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGFiODhkZTQuLjc1YmM3ZGMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTExNjAsOCArMTE2MCwxMCBAQCB2b2lkIERvY3VtZW50OjpyZWNhbGNTdHlsZShTdHls
ZUNoYW5nZSBjaGFuZ2UpCiAgICAgICAgICAgICB2aWV3KCktPmxheW91dCgpOwogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBib29s
IGxheW91dFBlbmRpbmcgPSB2aWV3KCktPmxheW91dFBlbmRpbmcoKSB8fCByZW5kZXJlcigpLT5u
ZWVkc0xheW91dCgpOwogICAgICAgICAgICAgLy8gSWYgd2UgZGlkbid0IHVwZGF0ZSBjb21wb3Np
dGluZyBsYXllcnMgYmVjYXVzZSBvZiBsYXlvdXQoKSwgd2UgbmVlZCB0byBkbyBzbyBoZXJlLgot
ICAgICAgICAgICAgdmlldygpLT51cGRhdGVDb21wb3NpdGluZ0xheWVycygpOworICAgICAgICAg
ICAgaWYgKCFsYXlvdXRQZW5kaW5nKQorICAgICAgICAgICAgICAgIHZpZXcoKS0+dXBkYXRlQ29t
cG9zaXRpbmdMYXllcnMoKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCmluZGV4IGYzZjJkN2Yu
LmNhNTFmMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBo
aWNzTGF5ZXJDQS5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGlj
c0xheWVyQ0EubW0KQEAgLTc0Niw4ICs3NDYsMTAgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNl
dERyYXdzQ29udGVudChib29sIGRyYXdzQ29udGVudCkKICAgICAgICAgICAgIHN3YXBGcm9tT3JU
b1RpbGVkTGF5ZXIobmVlZFRpbGVkTGF5ZXIpOwogCiAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotICAgICAgICAvLyBDbG9iYmVyIGFueSBleGlzdGluZyBjb250ZW50LiBJZiBu
ZWNlc3NhcnksIENBIHdpbGwgY3JlYXRlIGJhY2tpbmcgc3RvcmUgb24gdGhlIG5leHQgZGlzcGxh
eS4KLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHM6bmlsXTsKKyAgICAgICAgaWYg
KG1fZHJhd3NDb250ZW50KQorICAgICAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0TmVlZHNEaXNw
bGF5XTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVu
dHM6bmlsXTsKICAgICAgICAgCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICB1cGRhdGVEZWJ1Z0lu
ZGljYXRvcnMoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBiYWVlNzI4Li4wOGYx
NjlkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zMDY2LDEwICszMDY2LDEzIEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29u
c3QgUmVuZGVyU3R5bGUqKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB1
cGRhdGVUcmFuc2Zvcm0oKTsKIAotICAgIGlmIChjb21wb3NpdG9yKCktPnVwZGF0ZUxheWVyQ29t
cG9zaXRpbmdTdGF0ZSh0aGlzLCBkaWZmKSkKKyAgICBpZiAoY29tcG9zaXRvcigpLT51cGRhdGVM
YXllckNvbXBvc2l0aW5nU3RhdGUodGhpcykpCiAgICAgICAgIGNvbXBvc2l0b3IoKS0+c2V0Q29t
cG9zaXRpbmdMYXllcnNOZWVkVXBkYXRlKCk7CiAgICAgZWxzZSBpZiAobV9iYWNraW5nKQogICAg
ICAgICBtX2JhY2tpbmctPnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpOworCisgICAgaWYg
KG1fYmFja2luZyAmJiBkaWZmID49IFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQpCisgICAgICAgIG1f
YmFja2luZy0+c2V0Q29udGVudHNOZWVkRGlzcGxheSgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZGlmZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CmluZGV4IGJlYzAyYTkuLmUxNmVjZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcApAQCAtNDcsMTQgKzQ3LDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGJvb2wgaGFzQm9yZGVyT3V0bGluZU9yU2hhZG93
KGNvbnN0IFJlbmRlclN0eWxlKik7CitzdGF0aWMgYm9vbCBoYXNCb3hEZWNvcmF0aW9ucyhjb25z
dCBSZW5kZXJTdHlsZSopOworc3RhdGljIGJvb2wgaGFzQm94RGVjb3JhdGlvbnNXaXRoQmFja2dy
b3VuZEltYWdlKGNvbnN0IFJlbmRlclN0eWxlKik7CisKIFJlbmRlckxheWVyQmFja2luZzo6UmVu
ZGVyTGF5ZXJCYWNraW5nKFJlbmRlckxheWVyKiBsYXllcikKICAgICA6IG1fb3duaW5nTGF5ZXIo
bGF5ZXIpCiAgICAgLCBtX2FuY2VzdG9yQ2xpcHBpbmdMYXllcigwKQogICAgICwgbV9ncmFwaGlj
c0xheWVyKDApCiAgICAgLCBtX2NvbnRlbnRzTGF5ZXIoMCkKICAgICAsIG1fY2xpcHBpbmdMYXll
cigwKQotICAgICwgbV9pc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIoZmFsc2UpCi0g
ICAgLCBtX3NpbXBsZUNvbXBvc2l0aW5nTGF5ZXJTdGF0dXNEaXJ0eSh0cnVlKQorICAgICwgbV9o
YXNEaXJlY3RseUNvbXBvc2l0ZWRDb250ZW50KGZhbHNlKQogICAgICwgbV9jb21wb3NpdGluZ0Nv
bnRlbnRPZmZzZXREaXJ0eSh0cnVlKQogewogICAgIGNyZWF0ZUdyYXBoaWNzTGF5ZXIoKTsKQEAg
LTEyMyw0MyArMTI2LDM2IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVMYXllclRy
YW5zZm9ybSgpCiAKIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVBZnRlckxheW91dCgp
CiB7Ci0gICAgaW52YWxpZGF0ZURyYXdpbmdPcHRpbWl6YXRpb25zKCk7Ci0gICAgZGV0ZWN0RHJh
d2luZ09wdGltaXphdGlvbnMoKTsKLQorICAgIC8vIE9ubHkgbmVlZCB0byB1cGRhdGUgZ2VvbWV0
cnkgaWYgdGhlcmUgaXNuJ3QgYSBsYXllciB1cGRhdGUgcGVuZGluZy4KICAgICBpZiAoIWNvbXBv
c2l0b3IoKS0+Y29tcG9zaXRpbmdMYXllcnNOZWVkVXBkYXRlKCkpCiAgICAgICAgIHVwZGF0ZUdy
YXBoaWNzTGF5ZXJHZW9tZXRyeSgpOwogfQogCi1ib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlR3JhcGhpY3NMYXllcnMoYm9vbCBuZWVkc0NvbnRlbnRzTGF5ZXIsIGJvb2wgbmVlZHNVcHBl
ckNsaXBwaW5nTGF5ZXIsIGJvb2wgbmVlZHNMb3dlckNsaXBwaW5nTGF5ZXIsIGJvb2wgbmVlZHNS
ZXBhaW50KQorYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJDb25m
aWd1cmF0aW9uKCkKIHsKKyAgICBSZW5kZXJMYXllckNvbXBvc2l0b3IqIGNvbXBvc2l0b3IgPSB0
aGlzLT5jb21wb3NpdG9yKCk7CisKICAgICBib29sIGxheWVyQ29uZmlnQ2hhbmdlZCA9IGZhbHNl
OwotICAgIGlmICh1cGRhdGVDb250ZW50c0xheWVyKG5lZWRzQ29udGVudHNMYXllcikpCisgICAg
aWYgKHVwZGF0ZUNvbnRlbnRzTGF5ZXIoY29tcG9zaXRvci0+bmVlZHNDb250ZW50c0NvbXBvc2l0
aW5nTGF5ZXIobV9vd25pbmdMYXllcikpKQogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0
cnVlOwogICAgIAotICAgIGlmICh1cGRhdGVDbGlwcGluZ0xheWVycyhuZWVkc1VwcGVyQ2xpcHBp
bmdMYXllciwgbmVlZHNMb3dlckNsaXBwaW5nTGF5ZXIpKQorICAgIGlmICh1cGRhdGVDbGlwcGlu
Z0xheWVycyhjb21wb3NpdG9yLT5jbGlwcGVkQnlBbmNlc3RvcihtX293bmluZ0xheWVyKSwgY29t
cG9zaXRvci0+Y2xpcHNDb21wb3NpdGluZ0Rlc2NlbmRhbnRzKG1fb3duaW5nTGF5ZXIpKSkKICAg
ICAgICAgbGF5ZXJDb25maWdDaGFuZ2VkID0gdHJ1ZTsKIAotICAgIC8vIFNlZSBpZiB3ZSBjYW4g
bm93IHVzZSBhbnkgZHJhd2luZyBvcHRpbWl6YXRpb25zLgotICAgIGJvb2wgZGlkRHJhd0NvbnRl
bnQgPSBncmFwaGljc0xheWVyKCktPmRyYXdzQ29udGVudCgpOwotICAgIGludmFsaWRhdGVEcmF3
aW5nT3B0aW1pemF0aW9ucygpOwotICAgIGRldGVjdERyYXdpbmdPcHRpbWl6YXRpb25zKCk7Ci0g
ICAgaWYgKCFkaWREcmF3Q29udGVudCAmJiBncmFwaGljc0xheWVyKCktPmRyYXdzQ29udGVudCgp
KQotICAgICAgICBuZWVkc1JlcGFpbnQgPSB0cnVlOworICAgIG1faGFzRGlyZWN0bHlDb21wb3Np
dGVkQ29udGVudCA9IGZhbHNlOworICAgIGlmIChjYW5Vc2VEaXJlY3RDb21wb3NpdGluZygpKSB7
CisgICAgICAgIGlmIChyZW5kZXJlcigpLT5pc0ltYWdlKCkpIHsKKyAgICAgICAgICAgIHVwZGF0
ZUltYWdlQ29udGVudHMoKTsKKyAgICAgICAgICAgIG1faGFzRGlyZWN0bHlDb21wb3NpdGVkQ29u
dGVudCA9IHRydWU7CisgICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldERyYXdzQ29udGVu
dChmYWxzZSk7CisgICAgICAgIH0KIAotICAgIC8vIFNldCBvcGFjaXR5LCBpZiBpdCBpcyBub3Qg
YW5pbWF0aW5nLgotICAgIGlmICghcmVuZGVyZXIoKS0+YW5pbWF0aW9uKCktPmlzQW5pbWF0aW5n
UHJvcGVydHlPblJlbmRlcmVyKHJlbmRlcmVyKCksIENTU1Byb3BlcnR5T3BhY2l0eSkpCi0gICAg
ICAgIHVwZGF0ZUxheWVyT3BhY2l0eSgpOwotICAgIAotICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9
IHJlbmRlcmVyKCktPnN0eWxlKCk7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRQcmVzZXJ2ZXMz
RChzdHlsZS0+dHJhbnNmb3JtU3R5bGUzRCgpID09IFRyYW5zZm9ybVN0eWxlM0RQcmVzZXJ2ZTNE
KTsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnNldEJhY2tmYWNlVmlzaWJpbGl0eShzdHlsZS0+YmFj
a2ZhY2VWaXNpYmlsaXR5KCkgPT0gQmFja2ZhY2VWaXNpYmlsaXR5VmlzaWJsZSk7Ci0gICAgCi0g
ICAgaWYgKG5lZWRzUmVwYWludCkgewotICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldE5lZWRz
RGlzcGxheSgpOwotICAgICAgICBpZiAobV9jb250ZW50c0xheWVyKQotICAgICAgICAgICAgbV9j
b250ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgaWYgKHJlbmRlcmVySGFz
QmFja2dyb3VuZCgpKQorICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRCYWNrZ3JvdW5k
Q29sb3IocmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3IoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fZ3JhcGhpY3NMYXllci0+Y2xlYXJCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICB9Ci0gICAg
CisKICAgICByZXR1cm4gbGF5ZXJDb25maWdDaGFuZ2VkOwogfQogCkBAIC0xNzQsNiArMTcwLDE0
IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnko
KQogICAgIGlmICghcmVuZGVyZXIoKS0+YW5pbWF0aW9uKCktPmlzQW5pbWF0aW5nUHJvcGVydHlP
blJlbmRlcmVyKHJlbmRlcmVyKCksIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtKSkKICAgICAg
ICAgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKIAorICAgIC8vIFNldCBvcGFjaXR5LCBpZiBpdCBp
cyBub3QgYW5pbWF0aW5nLgorICAgIGlmICghcmVuZGVyZXIoKS0+YW5pbWF0aW9uKCktPmlzQW5p
bWF0aW5nUHJvcGVydHlPblJlbmRlcmVyKHJlbmRlcmVyKCksIENTU1Byb3BlcnR5T3BhY2l0eSkp
CisgICAgICAgIHVwZGF0ZUxheWVyT3BhY2l0eSgpOworICAgIAorICAgIFJlbmRlclN0eWxlKiBz
dHlsZSA9IHJlbmRlcmVyKCktPnN0eWxlKCk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRQcmVz
ZXJ2ZXMzRChzdHlsZS0+dHJhbnNmb3JtU3R5bGUzRCgpID09IFRyYW5zZm9ybVN0eWxlM0RQcmVz
ZXJ2ZTNEKTsKKyAgICBtX2dyYXBoaWNzTGF5ZXItPnNldEJhY2tmYWNlVmlzaWJpbGl0eShzdHls
ZS0+YmFja2ZhY2VWaXNpYmlsaXR5KCkgPT0gQmFja2ZhY2VWaXNpYmlsaXR5VmlzaWJsZSk7CisK
ICAgICBtX2NvbXBvc2l0aW5nQ29udGVudE9mZnNldERpcnR5ID0gdHJ1ZTsKICAgICAKICAgICBS
ZW5kZXJMYXllciogY29tcEFuY2VzdG9yID0gbV9vd25pbmdMYXllci0+YW5jZXN0b3JDb21wb3Np
dGluZ0xheWVyKCk7CkBAIC0yODAsNiArMjg0LDggQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAgfQogCiAgICAgbV9ncmFwaGljc0xh
eWVyLT51cGRhdGVDb250ZW50c1JlY3QoKTsKKyAgICBpZiAoIW1faGFzRGlyZWN0bHlDb21wb3Np
dGVkQ29udGVudCkKKyAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXREcmF3c0NvbnRlbnQoIWlz
U2ltcGxlQ29udGFpbmVyQ29tcG9zaXRpbmdMYXllcigpICYmICFwYWludGluZ0dvZXNUb1dpbmRv
dygpKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUludGVybmFsSGllcmFy
Y2h5KCkKQEAgLTQ0MSw3ICs0NDcsMTAgQEAgY29uc3QgQ29sb3ImIFJlbmRlckxheWVyQmFja2lu
Zzo6cmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogICAgIHJldHVybiByZW5kZXJlcigp
LT5zdHlsZSgpLT5iYWNrZ3JvdW5kQ29sb3IoKTsKIH0KIAotYm9vbCBSZW5kZXJMYXllckJhY2tp
bmc6OmNhbkJlU2ltcGxlQ29udGFpbmVyQ29tcG9zaXRpbmdMYXllcigpIGNvbnN0CisvLyBBICJz
aW1wbGUgY29udGFpbmVyIGxheWVyIiBpcyBhIFJlbmRlckxheWVyIHdoaWNoIGhhcyBubyB2aXNp
YmxlIGNvbnRlbnQgdG8gcmVuZGVyLgorLy8gSXQgbWF5IGhhdmUgbm8gY2hpbGRyZW4sIG9yIGFs
bCBpdHMgY2hpbGRyZW4gbWF5IGJlIHRoZW1zZWx2ZXMgY29tcG9zaXRlZC4KKy8vIFRoaXMgaXMg
YSB1c2VmdWwgb3B0aW1pemF0aW9uLCBiZWNhdXNlIGl0IGFsbG93cyB1cyB0byBhdm9pZCBhbGxv
Y2F0aW5nIGJhY2tpbmcgc3RvcmUuCitib29sIFJlbmRlckxheWVyQmFja2luZzo6aXNTaW1wbGVD
b250YWluZXJDb21wb3NpdGluZ0xheWVyKCkgY29uc3QKIHsKICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlck9iamVjdCA9IHJlbmRlcmVyKCk7CiAgICAgaWYgKHJlbmRlck9iamVjdC0+aXNSZXBsYWNl
ZCgpIHx8ICAgICAgIC8vIHJlcGxhY2VkIG9iamVjdHMgYXJlIG5vdCBjb250YWluZXJzCkBAIC01
NjksNTQgKzU3OCw2IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpjYW5Vc2VEaXJlY3RDb21w
b3NpdGluZygpIGNvbnN0CiAgICAgcmV0dXJuICFoYXNCb3hEZWNvcmF0aW9uc1dpdGhCYWNrZ3Jv
dW5kSW1hZ2UocmVuZGVyT2JqZWN0LT5zdHlsZSgpKTsKIH0KICAgICAKLS8vIEEgInNpbXBsZSBj
b250YWluZXIgbGF5ZXIiIGlzIGEgUmVuZGVyTGF5ZXIgd2hpY2ggaGFzIG5vIHZpc2libGUgY29u
dGVudCB0byByZW5kZXIuCi0vLyBJdCBtYXkgaGF2ZSBubyBjaGlsZHJlbiwgb3IgYWxsIGl0cyBj
aGlsZHJlbiBtYXkgYmUgdGhlbXNlbHZlcyBjb21wb3NpdGVkLgotLy8gVGhpcyBpcyBhIHVzZWZ1
bCBvcHRpbWl6YXRpb24sIGJlY2F1c2UgaXQgYWxsb3dzIHVzIHRvIGF2b2lkIGFsbG9jYXRpbmcg
YmFja2luZyBzdG9yZS4KLWJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjppc1NpbXBsZUNvbnRhaW5l
ckNvbXBvc2l0aW5nTGF5ZXIoKQotewotICAgIGlmIChtX3NpbXBsZUNvbXBvc2l0aW5nTGF5ZXJT
dGF0dXNEaXJ0eSkgewotICAgICAgICBtX2lzU2ltcGxlQ29udGFpbmVyQ29tcG9zaXRpbmdMYXll
ciA9IGNhbkJlU2ltcGxlQ29udGFpbmVyQ29tcG9zaXRpbmdMYXllcigpOwotICAgICAgICBtX3Np
bXBsZUNvbXBvc2l0aW5nTGF5ZXJTdGF0dXNEaXJ0eSA9IGZhbHNlOwotICAgIH0KLQotICAgIHJl
dHVybiBtX2lzU2ltcGxlQ29udGFpbmVyQ29tcG9zaXRpbmdMYXllcjsKLX0KLQotdm9pZCBSZW5k
ZXJMYXllckJhY2tpbmc6OmRldGVjdERyYXdpbmdPcHRpbWl6YXRpb25zKCkKLXsKLSAgICBib29s
IGRyYXdzQ29udGVudCA9IHRydWU7Ci0KLSAgICAvLyBDaGVjayBpZiBhIHJlcGxhY2VkIGxheWVy
IGNhbiBiZSBmdXJ0aGVyIHNpbXBsaWZpZWQuCi0gICAgaWYgKGNhblVzZURpcmVjdENvbXBvc2l0
aW5nKCkpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCktPmlzSW1hZ2UoKSkgewotICAgICAgICAg
ICAgdXBkYXRlSW1hZ2VDb250ZW50cygpOwotICAgICAgICAgICAgZHJhd3NDb250ZW50ID0gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChyZW5kZXJlckhhc0JhY2tncm91
bmQoKSkKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKHJl
bmRlcmVyQmFja2dyb3VuZENvbG9yKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2dy
YXBoaWNzTGF5ZXItPmNsZWFyQmFja2dyb3VuZENvbG9yKCk7Ci0KLSAgICB9IGVsc2UgewotICAg
ICAgICBtX2dyYXBoaWNzTGF5ZXItPmNsZWFyQmFja2dyb3VuZENvbG9yKCk7Ci0gICAgICAgIG1f
Z3JhcGhpY3NMYXllci0+Y2xlYXJDb250ZW50cygpOwotICAgICAgICAKLSAgICAgICAgaWYgKGlz
U2ltcGxlQ29udGFpbmVyQ29tcG9zaXRpbmdMYXllcigpKQotICAgICAgICAgICAgZHJhd3NDb250
ZW50ID0gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIGlmIChwYWludGluZ0dvZXNUb1dpbmRvdygp
KQotICAgICAgICBkcmF3c0NvbnRlbnQgPSBmYWxzZTsKLSAgICAKLSAgICBtX2dyYXBoaWNzTGF5
ZXItPnNldERyYXdzQ29udGVudChkcmF3c0NvbnRlbnQpOwotfQotCi12b2lkIFJlbmRlckxheWVy
QmFja2luZzo6aW52YWxpZGF0ZURyYXdpbmdPcHRpbWl6YXRpb25zKCkKLXsKLSAgICBtX3NpbXBs
ZUNvbXBvc2l0aW5nTGF5ZXJTdGF0dXNEaXJ0eSA9IHRydWU7Ci19Ci0KIHZvaWQgUmVuZGVyTGF5
ZXJCYWNraW5nOjpyZW5kZXJlckNvbnRlbnRDaGFuZ2VkKCkKIHsKICAgICBpZiAoY2FuVXNlRGly
ZWN0Q29tcG9zaXRpbmcoKSAmJiByZW5kZXJlcigpLT5pc0ltYWdlKCkpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oCmluZGV4IDQ2YjgxYWQuLmE2YTZjMWYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHVwZGF0ZUFmdGVyTGF5b3V0KCk7CiAgICAgCiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IGxheWVyIGNvbmZpZ3VyYXRpb24gY2hhbmdlZC4KLSAgICBib29sIHVwZGF0ZUdyYXBoaWNzTGF5
ZXJzKGJvb2wgbmVlZHNDb250ZW50c0xheWVyLCBib29sIG5lZWRzVXBwZXJDbGlwcGluZ0xheWVy
LCBib29sIG5lZWRzTG93ZXJDbGlwcGluZ0xheWVyLCBib29sIG5lZWRzUmVwYWludCk7CisgICAg
Ym9vbCB1cGRhdGVHcmFwaGljc0xheWVyQ29uZmlndXJhdGlvbigpOwogICAgIHZvaWQgdXBkYXRl
R3JhcGhpY3NMYXllckdlb21ldHJ5KCk7CiAgICAgdm9pZCB1cGRhdGVJbnRlcm5hbEhpZXJhcmNo
eSgpOwogICAgIApAQCAtMTAzLDkgKzEwMyw2IEBAIHB1YmxpYzoKICAgICBGbG9hdFBvaW50IGdy
YXBoaWNzTGF5ZXJUb0NvbnRlbnRzQ29vcmRpbmF0ZXMoY29uc3QgR3JhcGhpY3NMYXllciosIGNv
bnN0IEZsb2F0UG9pbnQmKTsKICAgICBGbG9hdFBvaW50IGNvbnRlbnRzVG9HcmFwaGljc0xheWVy
Q29vcmRpbmF0ZXMoY29uc3QgR3JhcGhpY3NMYXllciosIGNvbnN0IEZsb2F0UG9pbnQmKTsKIAot
ICAgIHZvaWQgZGV0ZWN0RHJhd2luZ09wdGltaXphdGlvbnMoKTsKLSAgICB2b2lkIGludmFsaWRh
dGVEcmF3aW5nT3B0aW1pemF0aW9ucygpOwotCiAgICAgLy8gR3JhcGhpY3NMYXllckNsaWVudCBp
bnRlcmZhY2UKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBH
cmFwaGljc0xheWVyKiwgZG91YmxlIHN0YXJ0VGltZSk7CiAKQEAgLTEzNyw3ICsxMzQsNyBAQCBw
cml2YXRlOgogICAgIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFJlbmRlckxheWVyIG9u
bHkgaGFzIGNvbnRlbnQgdGhhdCBjYW4gYmUgcmVuZGVyZWQgZGlyZWN0bHkKICAgICAvLyBieSB0
aGUgY29tcG9zaXRpbmcgbGF5ZXIsIHdpdGhvdXQgZHJhd2luZyAoZS5nLiBzb2xpZCBiYWNrZ3Jv
dW5kIGNvbG9yKS4KLSAgICBib29sIGlzU2ltcGxlQ29udGFpbmVyQ29tcG9zaXRpbmdMYXllcigp
OworICAgIGJvb2wgaXNTaW1wbGVDb250YWluZXJDb21wb3NpdGluZ0xheWVyKCkgY29uc3Q7CiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIGNhbiBvcHRpbWl6ZSB0aGUgUmVuZGVyTGF5ZXIgdG8g
ZHJhdyB0aGUgcmVwbGFjZWQgY29udGVudAogICAgIC8vIGRpcmVjdGx5IGludG8gYSBjb21wb3Np
dGluZyBidWZmZXIKICAgICBib29sIGNhblVzZURpcmVjdENvbXBvc2l0aW5nKCkgY29uc3Q7CkBA
IC0xNDYsNyArMTQzLDYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlbmRlcmVySGFzQmFja2dyb3Vu
ZCgpIGNvbnN0OwogICAgIGNvbnN0IENvbG9yJiByZW5kZXJlckJhY2tncm91bmRDb2xvcigpIGNv
bnN0OwogCi0gICAgYm9vbCBjYW5CZVNpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIoKSBj
b25zdDsKICAgICBib29sIGhhc05vbkNvbXBvc2l0aW5nQ29udGVudCgpIGNvbnN0OwogICAgIAog
ICAgIHZvaWQgcGFpbnRJbnRvTGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsCkBAIC0xNjUsOSArMTYxLDcg
QEAgcHJpdmF0ZToKIAogICAgIEludFNpemUgbV9jb21wb3NpdGluZ0NvbnRlbnRPZmZzZXQ7CiAK
LSAgICBib29sIG1faXNTaW1wbGVDb250YWluZXJDb21wb3NpdGluZ0xheWVyIDogMTsgIC8vIGlz
IHRoaXMgY29tcG9zaXRpbmcgbGF5ZXIgYWJsZSB0byBiZSBzaW1wbGlmaWVkCi0gICAgYm9vbCBt
X3NpbXBsZUNvbXBvc2l0aW5nTGF5ZXJTdGF0dXNEaXJ0eSA6IDE7IC8vIHNldCBpZiB0aGUgdGVz
dCBmb3Igc2ltcGxlIGxheWVycyBuZWVkcyB0byBiZSByZWRvbmUKLQorICAgIGJvb2wgbV9oYXNE
aXJlY3RseUNvbXBvc2l0ZWRDb250ZW50OiAxOwogICAgIGJvb2wgbV9jb21wb3NpdGluZ0NvbnRl
bnRPZmZzZXREaXJ0eTogMTsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwCmluZGV4IDg3NmQ1MTIuLjA5ZDQzNWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhSZW5kZXJMYXllciog
dXBkYXRlUm9vdCkKICAgICBBU1NFUlQodXBkYXRlUm9vdCB8fCAhbV9jb21wb3NpdGluZ0xheWVy
c05lZWRVcGRhdGUpOwogfQogCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5
ZXJDb21wb3NpdGluZ1N0YXRlKFJlbmRlckxheWVyKiBsYXllciwgU3R5bGVEaWZmZXJlbmNlIGRp
ZmYpCitib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJDb21wb3NpdGluZ1N0
YXRlKFJlbmRlckxheWVyKiBsYXllcikKIHsKICAgICBib29sIG5lZWRzTGF5ZXIgPSBuZWVkc1Rv
QmVDb21wb3NpdGVkKGxheWVyKTsKICAgICBib29sIGxheWVyQ2hhbmdlZCA9IGZhbHNlOwpAQCAt
MjE0LDEzICsyMTQsOSBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJD
b21wb3NpdGluZ1N0YXRlKFJlbmRlckxheWVyKiBsYXllciwgU3R5bAogICAgICAgICB9CiAgICAg
fQogCi0gICAgaWYgKCFuZWVkc0xheWVyKQotICAgICAgICByZXR1cm4gbGF5ZXJDaGFuZ2VkOwot
Ci0gICAgaWYgKGxheWVyLT5iYWNraW5nKCktPnVwZGF0ZUdyYXBoaWNzTGF5ZXJzKG5lZWRzQ29u
dGVudHNDb21wb3NpdGluZ0xheWVyKGxheWVyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xpcHBlZEJ5QW5jZXN0b3IobGF5ZXIpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwc0NvbXBvc2l0aW5nRGVz
Y2VuZGFudHMobGF5ZXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWZmID49IFN0eWxlRGlmZmVyZW5jZVJlcGFpbnQpKQorICAgIC8vIFNlZSBpZiB3
ZSBuZWVkIGNvbnRlbnQgb3IgY2xpcHBpbmcgbGF5ZXJzLiBNZXRob2RzIGNhbGxlZCBoZXJlIHNo
b3VsZCBhc3N1bWUKKyAgICAvLyB0aGF0IHRoZSBjb21wb3NpdGluZyBzdGF0ZSBvZiBkZXNjZW5k
YW50IGxheWVycyBoYXMgbm90IGJlZW4gdXBkYXRlZCB5ZXQuCisgICAgaWYgKGxheWVyLT5iYWNr
aW5nKCkgJiYgbGF5ZXItPmJhY2tpbmcoKS0+dXBkYXRlR3JhcGhpY3NMYXllckNvbmZpZ3VyYXRp
b24oKSkKICAgICAgICAgbGF5ZXJDaGFuZ2VkID0gdHJ1ZTsKIAogICAgIHJldHVybiBsYXllckNo
YW5nZWQ7CkBAIC0yNjgsNyArMjY0LDcgQEAgSW50UmVjdCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmNhbGN1bGF0ZUNvbXBvc2l0ZWRCb3VuZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWUKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpICYmIGxheWVyLT50
cmFuc2Zvcm0oKSkgeworICAgIGlmIChsYXllci0+cGFpbnRzV2l0aFRyYW5zZm9ybSgpKSB7CiAg
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KiBhZmZpbmVUcmFucyA9IGxheWVyLT50cmFuc2Zv
cm0oKTsKICAgICAgICAgYm91bmRpbmdCb3hSZWN0ID0gYWZmaW5lVHJhbnMtPm1hcFJlY3QoYm91
bmRpbmdCb3hSZWN0KTsKICAgICAgICAgdW5pb25Cb3VuZHMgPSBhZmZpbmVUcmFucy0+bWFwUmVj
dCh1bmlvbkJvdW5kcyk7CkBAIC00MjYsMTIgKzQyMiw2IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpzZXRDb21wb3NpdGluZ1BhcmVudChSZW5kZXJMYXllciogY2hpbGRMYXllciwgUmVu
ZGVyCiAgICAgICAgIGhvc3RpbmdMYXllci0+YWRkQ2hpbGQoaG9zdGVkTGF5ZXIpOwogICAgIH0g
ZWxzZQogICAgICAgICBjaGlsZExheWVyLT5iYWNraW5nKCktPmNoaWxkRm9yU3VwZXJsYXllcnMo
KS0+cmVtb3ZlRnJvbVBhcmVudCgpOwotICAgIAotICAgIC8vIEZJWE1FOiBzZXRDb21wb3NpdGlu
Z1BhcmVudCgpIGlzIG9ubHkgY2FsbGVkIGF0IHByZXNlbnQgYnkgcmVidWlsZENvbXBvc2l0aW5n
TGF5ZXJUcmVlKCksCi0gICAgLy8gd2hpY2ggY2FsbHMgdXBkYXRlR3JhcGhpY3NMYXllckdlb21l
dHJ5IHZpYSB1cGRhdGVMYXllckNvbXBvc2l0aW5nU3RhdGUoKSwgc28gdGhpcyBzaG91bGQKLSAg
ICAvLyBiZSBvcHRpbWl6ZWQuCi0gICAgaWYgKHBhcmVudExheWVyKQotICAgICAgICBjaGlsZExh
eWVyLT5iYWNraW5nKCktPnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpOwogfQogCiB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVtb3ZlQ29tcG9zaXRlZENoaWxkcmVuKFJlbmRlckxh
eWVyKiBsYXllcikKQEAgLTQ1Nyw3ICs0NDcsMTAgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnBhcmVudEluUm9vdExheWVyKFJlbmRlckxheWVyKiBsYXllcikKIAogdm9pZCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZShSZW5kZXJMYXllciog
bGF5ZXIsIHN0cnVjdCBDb21wb3NpdGluZ1N0YXRlJiBpb0NvbXBTdGF0ZSkKIHsKLSAgICB1cGRh
dGVMYXllckNvbXBvc2l0aW5nU3RhdGUobGF5ZXIsIFN0eWxlRGlmZmVyZW5jZUVxdWFsKTsKKyAg
ICAvLyBNYWtlIHRoZSBsYXllciBjb21wb3NpdGluZyBpZiBuZWNlc3NhcnksIGFuZCBzZXQgdXAg
Y2xpcHBpbmcgYW5kIGNvbnRlbnQgbGF5ZXJzLgorICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW4gb25s
eSBkbyB3b3JrIGhlcmUgdGhhdCBpcyBpbmRlcGVuZGVudCBvZiB3aGV0aGVyIHRoZSBkZXNjZW5k
YW50IGxheWVycworICAgIC8vIGhhdmUgYmVlbiBwcm9jZXNzZWQuCisgICAgdXBkYXRlTGF5ZXJD
b21wb3NpdGluZ1N0YXRlKGxheWVyKTsKIAogICAgIC8vIGhvc3QgdGhlIGRvY3VtZW50IGxheWVy
IGluIHRoZSBSZW5kZXJWaWV3J3Mgcm9vdCBsYXllcgogICAgIGlmIChsYXllci0+aXNSb290TGF5
ZXIoKSkKQEAgLTQ3NCw3ICs0NjcsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVi
dWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKFJlbmRlckxheWVyKiBsYXllciwgc3RydQogICAgIFJl
bmRlckxheWVyQmFja2luZyogbGF5ZXJCYWNraW5nID0gbGF5ZXItPmJhY2tpbmcoKTsKICAgICAK
ICAgICAvLyBGSVhNRTogbWFrZSB0aGlzIG1vcmUgaW5jcmVtZW50YWwKLSAgICBpZiAobGF5ZXIt
PmlzQ29tcG9zaXRlZCgpKSB7CisgICAgaWYgKGxheWVyQmFja2luZykgewogICAgICAgICBsYXll
ckJhY2tpbmctPnBhcmVudEZvclN1YmxheWVycygpLT5yZW1vdmVBbGxDaGlsZHJlbigpOwogICAg
ICAgICBsYXllckJhY2tpbmctPnVwZGF0ZUludGVybmFsSGllcmFyY2h5KCk7CiAgICAgfQpAQCAt
NTI4LDggKzUyMSwxMCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZENvbXBv
c2l0aW5nTGF5ZXJUcmVlKFJlbmRlckxheWVyKiBsYXllciwgc3RydQogICAgICAgICB9CiAgICAg
fQogICAgIAotICAgIGlmIChsYXllckJhY2tpbmcpCisgICAgaWYgKGxheWVyQmFja2luZykgewor
ICAgICAgICAvLyBEbyB3b3JrIGhlcmUgdGhhdCByZXF1aXJlcyB0aGF0IHdlJ3ZlIHByb2Nlc3Nl
ZCBhbGwgb2YgdGhlIGRlc2NlbmRhbnQgbGF5ZXJzCiAgICAgICAgIGxheWVyQmFja2luZy0+dXBk
YXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCk7CisgICAgfQogfQogCiB2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cmVwYWludENvbXBvc2l0ZWRMYXllcnNBYnNvbHV0ZVJlY3QoY29uc3QgSW50
UmVjdCYgYWJzUmVjdCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgK
aW5kZXggYWQ4MmQ4Ni4uZDkyNmQwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmgKQEAgLTYzLDggKzYzLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUNv
bXBvc2l0aW5nTGF5ZXJzKFJlbmRlckxheWVyKiB1cGRhdGVSb290ID0gMCk7CiAKICAgICAvLyBV
cGRhdGUgdGhlIGNvbXBvc2l0aW5nIHN0YXRlIG9mIHRoZSBnaXZlbiBsYXllci4gUmV0dXJucyB0
cnVlIGlmIHRoYXQgc3RhdGUgY2hhbmdlZAotICAgIGJvb2wgdXBkYXRlTGF5ZXJDb21wb3NpdGlu
Z1N0YXRlKFJlbmRlckxheWVyKiwgU3R5bGVEaWZmZXJlbmNlKTsKKyAgICBib29sIHVwZGF0ZUxh
eWVyQ29tcG9zaXRpbmdTdGF0ZShSZW5kZXJMYXllciopOwogCisgICAgLy8gV2hldGhlciBsYXll
cidzIGJhY2tpbmcgbmVlZHMgYSBncmFwaGljcyBsYXllciB0byBkbyBjbGlwcGluZyBieSBhbiBh
bmNlc3RvciAobm9uLXN0YWNraW5nLWNvbnRleHQgcGFyZW50IHdpdGggb3ZlcmZsb3cpLgorICAg
IGJvb2wgY2xpcHBlZEJ5QW5jZXN0b3IoUmVuZGVyTGF5ZXIqKSBjb25zdDsKKyAgICAvLyBXaGV0
aGVyIGxheWVyJ3MgYmFja2luZyBuZWVkcyBhIGdyYXBoaWNzIGxheWVyIHRvIGNsaXAgei1vcmRl
ciBjaGlsZHJlbiBvZiB0aGUgZ2l2ZW4gbGF5ZXIuCisgICAgYm9vbCBjbGlwc0NvbXBvc2l0aW5n
RGVzY2VuZGFudHMoY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25zdDsKKworICAgIC8vIFdoZXRoZXIg
dGhlIGdpdmVuIGxheWVyIG5lZWRzIGFuIGV4dHJhICdjb250ZW50cycgbGF5ZXIuCisgICAgYm9v
bCBuZWVkc0NvbnRlbnRzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciopIGNvbnN0
OwogICAgIC8vIFJldHVybiB0aGUgYm91bmRpbmcgYm94IHJlcXVpcmVkIGZvciBjb21wb3NpdGlu
ZyBsYXllciBhbmQgaXRzIGNoaWxkZXJuLCByZWxhdGl2ZSB0byBhbmNlc3RvckxheWVyLgogICAg
IC8vIElmIGxheWVyQm91bmRpbmdCb3ggaXMgbm90IDAsIG9uIHJldHVybiBpdCBjb250YWlucyB0
aGUgYm91bmRpbmcgYm94IG9mIHRoaXMgbGF5ZXIgb25seS4KICAgICBJbnRSZWN0IGNhbGN1bGF0
ZUNvbXBvc2l0ZWRCb3VuZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBjb25zdCBSZW5kZXJM
YXllciogYW5jZXN0b3JMYXllciwgSW50UmVjdCogbGF5ZXJCb3VuZGluZ0JveCA9IDApOwpAQCAt
OTcsMTQgKzEwNCw2IEBAIHByaXZhdGU6CiAgICAgLy8gV2hldGhlciB0aGUgbGF5ZXIgaGFzIGFu
IGludHJpbnNpYyBuZWVkIGZvciBjb21wb3NpdGluZyBsYXllci4KICAgICBib29sIHJlcXVpcmVz
Q29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciopIGNvbnN0OwogCi0gICAgLy8gV2hl
dGhlciB3ZSBuZWVkIGEgZ3JhcGhpY3MgbGF5ZXIgdG8gZG8gY2xpcHBpbmcgYnkgYW4gYW5jZXN0
b3IgKG5vbi1zdGFja2luZy1jb250ZXh0IHBhcmVudCB3aXRoIG92ZXJmbG93KS4KLSAgICBib29s
IGNsaXBwZWRCeUFuY2VzdG9yKFJlbmRlckxheWVyKikgY29uc3Q7Ci0gICAgLy8gV2hldGhlciB3
ZSBuZWVkIGEgZ3JhcGhpY3MgbGF5ZXIgdG8gY2xpcCB6LW9yZGVyIGNoaWxkcmVuIG9mIHRoZSBn
aXZlbiBsYXllci4KLSAgICBib29sIGNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhjb25zdCBS
ZW5kZXJMYXllciopIGNvbnN0OwotCi0gICAgLy8gV2hldGhlciB0aGUgZ2l2ZW4gbGF5ZXIgbmVl
ZHMgYW4gZXh0cmEgJ2NvbnRlbnRzJyBsYXllci4KLSAgICBib29sIG5lZWRzQ29udGVudHNDb21w
b3NpdGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7Ci0KICAgICAvLyBSZXBhaW50
IHRoZSBnaXZlbiByZWN0ICh3aGljaCBpcyBsYXllcidzIGNvb3JkcyksIGFuZCByZWdpb25zIG9m
IGNoaWxkIGxheWVycyB0aGF0IGludGVyc2VjdCB0aGF0IHJlY3QuCiAgICAgdm9pZCByZWN1cnNp
dmVSZXBhaW50TGF5ZXJSZWN0KFJlbmRlckxheWVyKiBsYXllciwgY29uc3QgSW50UmVjdCYgcmVj
dCk7CiAK
</data>
<flag name="review"
          id="14555"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>