<?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>47021</bug_id>
          
          <creation_ts>2010-10-01 15:15:19 -0700</creation_ts>
          <short_desc>Patch the floatBottom function and its friends.</short_desc>
          <delta_ts>2010-10-01 17:16:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>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>
          
          <blocked>46643</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>288513</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-01 15:15:19 -0700</bug_when>
    <thetext>Patch the floatBottom function and its friends.  Rename them and consolidate them to be block-flow-aware.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288515</commentid>
    <comment_count>1</comment_count>
      <attachid>69526</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-01 15:17:03 -0700</bug_when>
    <thetext>Created attachment 69526
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288542</commentid>
    <comment_count>2</comment_count>
      <attachid>69526</attachid>
    <who name="">mitz</who>
    <bug_when>2010-10-01 15:51:34 -0700</bug_when>
    <thetext>Comment on attachment 69526
Patch

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

&gt; WebCore/rendering/RenderBlock.cpp:3296
&gt; -int
&gt; -RenderBlock::floatBottom() const
&gt; +int RenderBlock::lowestFloatLogicalBottom(FloatingObject::Type floatType) const

Finally!

&gt; WebCore/rendering/RenderBlock.cpp:3304
&gt; +        if (r-&gt;type() &amp; floatType)

Kind of ugly. I’d like at least to see a comment about the definition of the FloatingObject::Type enum saying that it’s a bitfield.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288544</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-10-01 15:52:02 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I’d like at least to see a comment about the definition of the FloatingObject::Type enum saying that it’s a bitfield.

s/about/above/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288593</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-01 17:16:34 -0700</bug_when>
    <thetext>Fixed in r68957.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69526</attachid>
            <date>2010-10-01 15:17:03 -0700</date>
            <delta_ts>2010-10-01 15:51:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>18165</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODkzMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMTAtMDEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzAyMQorICAgICAgICAKKyAgICAg
ICAgUGF0Y2ggdGhlIGZsb2F0Qm90dG9tIGZ1bmN0aW9uIGFuZCBpdHMgZnJpZW5kcy4gIFJlbmFt
ZSB0aGVtIGFuZCBjb25zb2xpZGF0ZSB0aGVtIHRvIGJlIGJsb2NrLWZsb3ctYXdhcmUuCisKKyAg
ICAgICAgTm90aGluZyB0ZXN0YWJsZSB5ZXQsIHNpbmNlIG1vc3Qgb2YgdGhlIGZsb2F0IGNvZGUg
aXMgc3RpbGwgdW5wYXRjaGVkLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2tDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2tDaGlsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6Om5ld0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Om5leHRG
bG9hdExvZ2ljYWxCb3R0b21CZWxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
bG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpjbGVhckZsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkT3Zlcmhh
bmdpbmdGbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmdldENsZWFyRGVs
dGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxCb3R0b21Gb3JGbG9hdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6aGFzT3ZlcmhhbmdpbmdGbG9hdHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmZpdEJlbG93RmxvYXRzKToKKwogMjAxMC0xMC0wMSAgRXJpYyBVaHJoYW5lICA8ZXJpY3VA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gNjg5MjYpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOTgsMTggKzExOTgs
MTggQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheQogCiAgICAgaW50
IHJlcGFpbnRUb3AgPSAwOwogICAgIGludCByZXBhaW50Qm90dG9tID0gMDsKLSAgICBpbnQgbWF4
RmxvYXRCb3R0b20gPSAwOworICAgIGludCBtYXhGbG9hdExvZ2ljYWxCb3R0b20gPSAwOwogICAg
IGlmICghZmlyc3RDaGlsZCgpICYmICFpc0Fub255bW91c0Jsb2NrKCkpCiAgICAgICAgIHNldENo
aWxkcmVuSW5saW5lKHRydWUpOwogICAgIGlmIChjaGlsZHJlbklubGluZSgpKQogICAgICAgICBs
YXlvdXRJbmxpbmVDaGlsZHJlbihyZWxheW91dENoaWxkcmVuLCByZXBhaW50VG9wLCByZXBhaW50
Qm90dG9tKTsKICAgICBlbHNlCi0gICAgICAgIGxheW91dEJsb2NrQ2hpbGRyZW4ocmVsYXlvdXRD
aGlsZHJlbiwgbWF4RmxvYXRCb3R0b20pOworICAgICAgICBsYXlvdXRCbG9ja0NoaWxkcmVuKHJl
bGF5b3V0Q2hpbGRyZW4sIG1heEZsb2F0TG9naWNhbEJvdHRvbSk7CiAKICAgICAvLyBFeHBhbmQg
b3VyIGludHJpbnNpYyBoZWlnaHQgdG8gZW5jb21wYXNzIGZsb2F0cy4KICAgICBpbnQgdG9BZGQg
PSBib3JkZXJBZnRlcigpICsgcGFkZGluZ0FmdGVyKCkgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0
KCk7Ci0gICAgaWYgKGZsb2F0Qm90dG9tKCkgPiAobG9naWNhbEhlaWdodCgpIC0gdG9BZGQpICYm
IGV4cGFuZHNUb0VuY2xvc2VPdmVyaGFuZ2luZ0Zsb2F0cygpKQotICAgICAgICBzZXRMb2dpY2Fs
SGVpZ2h0KGZsb2F0Qm90dG9tKCkgKyB0b0FkZCk7CisgICAgaWYgKGxvd2VzdEZsb2F0TG9naWNh
bEJvdHRvbSgpID4gKGxvZ2ljYWxIZWlnaHQoKSAtIHRvQWRkKSAmJiBleHBhbmRzVG9FbmNsb3Nl
T3ZlcmhhbmdpbmdGbG9hdHMoKSkKKyAgICAgICAgc2V0TG9naWNhbEhlaWdodChsb3dlc3RGbG9h
dExvZ2ljYWxCb3R0b20oKSArIHRvQWRkKTsKICAgICAKICAgICBpZiAobGF5b3V0Q29sdW1ucyho
YXNTcGVjaWZpZWRQYWdlSGVpZ2h0LCBwYWdlSGVpZ2h0LCBzdGF0ZVB1c2hlcikpCiAgICAgICAg
IHJldHVybjsKQEAgLTEyMTksMTIgKzEyMTksMTIgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0
QmxvY2soYm9vbCByZWxheQogICAgIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KCk7CiAgICAgaW50IG5l
d0hlaWdodCA9IGxvZ2ljYWxIZWlnaHQoKTsKICAgICBpZiAob2xkSGVpZ2h0ICE9IG5ld0hlaWdo
dCkgewotICAgICAgICBpZiAob2xkSGVpZ2h0ID4gbmV3SGVpZ2h0ICYmIG1heEZsb2F0Qm90dG9t
ID4gbmV3SGVpZ2h0ICYmICFjaGlsZHJlbklubGluZSgpKSB7CisgICAgICAgIGlmIChvbGRIZWln
aHQgPiBuZXdIZWlnaHQgJiYgbWF4RmxvYXRMb2dpY2FsQm90dG9tID4gbmV3SGVpZ2h0ICYmICFj
aGlsZHJlbklubGluZSgpKSB7CiAgICAgICAgICAgICAvLyBPbmUgb2Ygb3VyIGNoaWxkcmVuJ3Mg
ZmxvYXRzIG1heSBoYXZlIGJlY29tZSBhbiBvdmVyaGFuZ2luZyBmbG9hdCBmb3IgdXMuIFdlIG5l
ZWQgdG8gbG9vayBmb3IgaXQuCiAgICAgICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQg
PSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5pc0Jsb2NrRmxvdygpICYmICFjaGlsZC0+aXNGbG9h
dGluZ09yUG9zaXRpb25lZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlckJsb2NrKiBi
bG9jayA9IHRvUmVuZGVyQmxvY2soY2hpbGQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYmxv
Y2stPmZsb2F0Qm90dG9tKCkgKyBibG9jay0+bG9naWNhbFRvcCgpID4gbmV3SGVpZ2h0KQorICAg
ICAgICAgICAgICAgICAgICBpZiAoYmxvY2stPmxvd2VzdEZsb2F0TG9naWNhbEJvdHRvbSgpICsg
YmxvY2stPmxvZ2ljYWxUb3AoKSA+IG5ld0hlaWdodCkKICAgICAgICAgICAgICAgICAgICAgICAg
IGFkZE92ZXJoYW5naW5nRmxvYXRzKGJsb2NrLCAtYmxvY2stPngoKSwgLWJsb2NrLT55KCksIGZh
bHNlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xNzM5LDcgKzE3Mzks
NyBAQCB2b2lkIFJlbmRlckJsb2NrOjpzZXRMb2dpY2FsVG9wRm9yQ2hpbGQoCiAgICAgfQogfQog
Ci12b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9ja0NoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGls
ZHJlbiwgaW50JiBtYXhGbG9hdEJvdHRvbSkKK3ZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2Nr
Q2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBpbnQmIG1heEZsb2F0TG9naWNhbEJvdHRv
bSkKIHsKICAgICBpZiAoZ1BlcmNlbnRIZWlnaHREZXNjZW5kYW50c01hcCkgewogICAgICAgICBp
ZiAoSGFzaFNldDxSZW5kZXJCb3gqPiogZGVzY2VuZGFudHMgPSBnUGVyY2VudEhlaWdodERlc2Nl
bmRhbnRzTWFwLT5nZXQodGhpcykpIHsKQEAgLTE3NzMsOCArMTc3Myw4IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmxheW91dEJsb2NrQ2hpbGRyZW4oYm8KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY3ODUKICAgICBSZW5kZXJPYmplY3QqIGxlZ2VuZCA9IGxh
eW91dExlZ2VuZChyZWxheW91dENoaWxkcmVuKTsKIAotICAgIGludCBwcmV2aW91c0Zsb2F0Qm90
dG9tID0gMDsKLSAgICBtYXhGbG9hdEJvdHRvbSA9IDA7CisgICAgaW50IHByZXZpb3VzRmxvYXRM
b2dpY2FsQm90dG9tID0gMDsKKyAgICBtYXhGbG9hdExvZ2ljYWxCb3R0b20gPSAwOwogCiAgICAg
UmVuZGVyQm94KiBuZXh0ID0gZmlyc3RDaGlsZEJveCgpOwogCkBAIC0xODAxLDcgKzE4MDEsNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9ja0NoaWxkcmVuKGJvCiAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICAvLyBMYXkgb3V0IHRoZSBjaGlsZC4KLSAgICAgICAgbGF5b3V0
QmxvY2tDaGlsZChjaGlsZCwgbWFyZ2luSW5mbywgcHJldmlvdXNGbG9hdEJvdHRvbSwgbWF4Rmxv
YXRCb3R0b20pOworICAgICAgICBsYXlvdXRCbG9ja0NoaWxkKGNoaWxkLCBtYXJnaW5JbmZvLCBw
cmV2aW91c0Zsb2F0TG9naWNhbEJvdHRvbSwgbWF4RmxvYXRMb2dpY2FsQm90dG9tKTsKICAgICB9
CiAgICAgCiAgICAgLy8gTm93IGRvIHRoZSBoYW5kbGluZyBvZiB0aGUgYm90dG9tIG9mIHRoZSBi
bG9jaywgYWRkaW5nIGluIG91ciBib3R0b20gYm9yZGVyL3BhZGRpbmcgYW5kCkBAIC0xODA5LDcg
KzE4MDksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9ja0NoaWxkcmVuKGJvCiAgICAg
aGFuZGxlQWZ0ZXJTaWRlT2ZCbG9jayhiZWZvcmVFZGdlLCBhZnRlckVkZ2UsIG1hcmdpbkluZm8p
OwogfQogCi12b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9ja0NoaWxkKFJlbmRlckJveCogY2hp
bGQsIE1hcmdpbkluZm8mIG1hcmdpbkluZm8sIGludCYgcHJldmlvdXNGbG9hdEJvdHRvbSwgaW50
JiBtYXhGbG9hdEJvdHRvbSkKK3ZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2NrQ2hpbGQoUmVu
ZGVyQm94KiBjaGlsZCwgTWFyZ2luSW5mbyYgbWFyZ2luSW5mbywgaW50JiBwcmV2aW91c0Zsb2F0
TG9naWNhbEJvdHRvbSwgaW50JiBtYXhGbG9hdExvZ2ljYWxCb3R0b20pCiB7CiAgICAgaW50IG9s
ZFBvc01hcmdpbkJlZm9yZSA9IG1heFBvc2l0aXZlTWFyZ2luQmVmb3JlKCk7CiAgICAgaW50IG9s
ZE5lZ01hcmdpbkJlZm9yZSA9IG1heE5lZ2F0aXZlTWFyZ2luQmVmb3JlKCk7CkBAIC0xODQ1LDcg
KzE4NDUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9ja0NoaWxkKFJlbmRlCiAgICAg
ZWxzZSBpZiAoIWNoaWxkLT5hdm9pZHNGbG9hdHMoKSB8fCBjaGlsZC0+c2hyaW5rVG9Bdm9pZEZs
b2F0cygpKSB7CiAgICAgICAgIC8vIElmIGFuIGVsZW1lbnQgbWlnaHQgYmUgYWZmZWN0ZWQgYnkg
dGhlIHByZXNlbmNlIG9mIGZsb2F0cywgdGhlbiBhbHdheXMgbWFyayBpdCBmb3IKICAgICAgICAg
Ly8gbGF5b3V0LgotICAgICAgICBpbnQgZmIgPSBtYXgocHJldmlvdXNGbG9hdEJvdHRvbSwgZmxv
YXRCb3R0b20oKSk7CisgICAgICAgIGludCBmYiA9IG1heChwcmV2aW91c0Zsb2F0TG9naWNhbEJv
dHRvbSwgbG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tKCkpOwogICAgICAgICBpZiAoZmIgPiBsb2dp
Y2FsVG9wRXN0aW1hdGUpCiAgICAgICAgICAgICBtYXJrRGVzY2VuZGFudHNXaXRoRmxvYXRzID0g
dHJ1ZTsKICAgICB9CkBAIC0xODU0LDcgKzE4NTQsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlv
dXRCbG9ja0NoaWxkKFJlbmRlCiAgICAgICAgIGlmIChtYXJrRGVzY2VuZGFudHNXaXRoRmxvYXRz
KQogICAgICAgICAgICAgY2hpbGRSZW5kZXJCbG9jay0+bWFya0FsbERlc2NlbmRhbnRzV2l0aEZs
b2F0c0ZvckxheW91dCgpOwogICAgICAgICBpZiAoIWNoaWxkLT5pc0Jsb2NrRmxvd1Jvb3QoKSkK
LSAgICAgICAgICAgIHByZXZpb3VzRmxvYXRCb3R0b20gPSBtYXgocHJldmlvdXNGbG9hdEJvdHRv
bSwgb2xkTG9naWNhbFRvcCArIGNoaWxkUmVuZGVyQmxvY2stPmZsb2F0Qm90dG9tKCkpOworICAg
ICAgICAgICAgcHJldmlvdXNGbG9hdExvZ2ljYWxCb3R0b20gPSBtYXgocHJldmlvdXNGbG9hdExv
Z2ljYWxCb3R0b20sIG9sZExvZ2ljYWxUb3AgKyBjaGlsZFJlbmRlckJsb2NrLT5sb3dlc3RGbG9h
dExvZ2ljYWxCb3R0b20oKSk7CiAgICAgfQogCiAgICAgYm9vbCBwYWdpbmF0ZWQgPSB2aWV3KCkt
PmxheW91dFN0YXRlKCktPmlzUGFnaW5hdGVkKCk7CkBAIC0xOTUwLDcgKzE5NTAsNyBAQCB2b2lk
IFJlbmRlckJsb2NrOjpsYXlvdXRCbG9ja0NoaWxkKFJlbmRlCiAgICAgLy8gSWYgdGhlIGNoaWxk
IGhhcyBvdmVyaGFuZ2luZyBmbG9hdHMgdGhhdCBpbnRydWRlIGludG8gZm9sbG93aW5nIHNpYmxp
bmdzIChvciBwb3NzaWJseSBvdXQKICAgICAvLyBvZiB0aGlzIGJsb2NrKSwgdGhlbiB0aGUgcGFy
ZW50IGdldHMgbm90aWZpZWQgb2YgdGhlIGZsb2F0cyBub3cuCiAgICAgaWYgKGNoaWxkUmVuZGVy
QmxvY2sgJiYgY2hpbGRSZW5kZXJCbG9jay0+Y29udGFpbnNGbG9hdHMoKSkKLSAgICAgICAgbWF4
RmxvYXRCb3R0b20gPSBtYXgobWF4RmxvYXRCb3R0b20sIGFkZE92ZXJoYW5naW5nRmxvYXRzKHRv
UmVuZGVyQmxvY2soY2hpbGQpLCAtY2hpbGQtPngoKSwgLWNoaWxkLT55KCksICFjaGlsZE5lZWRl
ZExheW91dCkpOworICAgICAgICBtYXhGbG9hdExvZ2ljYWxCb3R0b20gPSBtYXgobWF4RmxvYXRM
b2dpY2FsQm90dG9tLCBhZGRPdmVyaGFuZ2luZ0Zsb2F0cyh0b1JlbmRlckJsb2NrKGNoaWxkKSwg
LWNoaWxkLT54KCksIC1jaGlsZC0+eSgpLCAhY2hpbGROZWVkZWRMYXlvdXQpKTsKIAogICAgIElu
dFNpemUgY2hpbGRPZmZzZXQoY2hpbGQtPngoKSAtIG9sZFJlY3QueCgpLCBjaGlsZC0+eSgpIC0g
b2xkUmVjdC55KCkpOwogICAgIGlmIChjaGlsZE9mZnNldC53aWR0aCgpIHx8IGNoaWxkT2Zmc2V0
LmhlaWdodCgpKSB7CkBAIC0zMDI5LDkgKzMwMjksOSBAQCBib29sIFJlbmRlckJsb2NrOjpwb3Np
dGlvbk5ld0Zsb2F0cygpCiAgICAgICAgIEludFJlY3Qgb2xkUmVjdChvLT54KCksIG8tPnkoKSAs
IG8tPndpZHRoKCksIG8tPmhlaWdodCgpKTsKIAogICAgICAgICBpZiAoby0+c3R5bGUoKS0+Y2xl
YXIoKSAmIENMRUZUKQotICAgICAgICAgICAgeSA9IG1heChsZWZ0Qm90dG9tKCksIHkpOworICAg
ICAgICAgICAgeSA9IG1heChsb3dlc3RGbG9hdExvZ2ljYWxCb3R0b20oRmxvYXRpbmdPYmplY3Q6
OkZsb2F0TGVmdCksIHkpOwogICAgICAgICBpZiAoby0+c3R5bGUoKS0+Y2xlYXIoKSAmIENSSUdI
VCkKLSAgICAgICAgICAgIHkgPSBtYXgocmlnaHRCb3R0b20oKSwgeSk7CisgICAgICAgICAgICB5
ID0gbWF4KGxvd2VzdEZsb2F0TG9naWNhbEJvdHRvbShGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdo
dCksIHkpOwogCiAgICAgICAgIGlmIChvLT5zdHlsZSgpLT5mbG9hdGluZygpID09IEZMRUZUKSB7
CiAgICAgICAgICAgICBpbnQgaGVpZ2h0UmVtYWluaW5nTGVmdCA9IDE7CkBAIC0zMTM4LDEzICsz
MTM4LDEzIEBAIHZvaWQgUmVuZGVyQmxvY2s6Om5ld0xpbmUoRUNsZWFyIGNsZWFyKQogICAgIHN3
aXRjaCAoY2xlYXIpCiAgICAgewogICAgICAgICBjYXNlIENMRUZUOgotICAgICAgICAgICAgbmV3
WSA9IGxlZnRCb3R0b20oKTsKKyAgICAgICAgICAgIG5ld1kgPSBsb3dlc3RGbG9hdExvZ2ljYWxC
b3R0b20oRmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDUklHSFQ6Ci0gICAgICAgICAgICBuZXdZID0gcmlnaHRCb3R0b20oKTsKKyAg
ICAgICAgICAgIG5ld1kgPSBsb3dlc3RGbG9hdExvZ2ljYWxCb3R0b20oRmxvYXRpbmdPYmplY3Q6
OkZsb2F0UmlnaHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ0JPVEg6Ci0g
ICAgICAgICAgICBuZXdZID0gZmxvYXRCb3R0b20oKTsKKyAgICAgICAgICAgIG5ld1kgPSBsb3dl
c3RGbG9hdExvZ2ljYWxCb3R0b20oKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KQEAgLTMyNzYsNyArMzI3Niw3IEBAIFJlbmRlckJsb2NrOjphdmFpbGFibGVM
b2dpY2FsV2lkdGhGb3JMaW4KICAgICByZXR1cm4gKHJlc3VsdCA8IDApID8gMCA6IHJlc3VsdDsK
IH0KIAotaW50IFJlbmRlckJsb2NrOjpuZXh0RmxvYXRCb3R0b21CZWxvdyhpbnQgaGVpZ2h0KSBj
b25zdAoraW50IFJlbmRlckJsb2NrOjpuZXh0RmxvYXRMb2dpY2FsQm90dG9tQmVsb3coaW50IGxv
Z2ljYWxIZWlnaHQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2Zsb2F0aW5nT2JqZWN0cykKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0zMjg1LDI0ICszMjg1LDI2IEBAIGludCBSZW5kZXJCbG9jazo6bmV4
dEZsb2F0Qm90dG9tQmVsb3coaW4KICAgICBGbG9hdGluZ09iamVjdCogcjsKICAgICBEZXByZWNh
dGVkUHRyTGlzdEl0ZXJhdG9yPEZsb2F0aW5nT2JqZWN0PiBpdCgqbV9mbG9hdGluZ09iamVjdHMp
OwogICAgIGZvciAoIDsgKHIgPSBpdC5jdXJyZW50KCkpOyArK2l0KSB7Ci0gICAgICAgIGlmIChy
LT5ib3R0b20oKSA+IGhlaWdodCkKLSAgICAgICAgICAgIGJvdHRvbSA9IG1pbihyLT5ib3R0b20o
KSwgYm90dG9tKTsKKyAgICAgICAgaW50IGZsb2F0Qm90dG9tID0gbG9naWNhbEJvdHRvbUZvckZs
b2F0KHIpOworICAgICAgICBpZiAoZmxvYXRCb3R0b20gPiBsb2dpY2FsSGVpZ2h0KQorICAgICAg
ICAgICAgYm90dG9tID0gbWluKGZsb2F0Qm90dG9tLCBib3R0b20pOwogICAgIH0KIAogICAgIHJl
dHVybiBib3R0b20gPT0gSU5UX01BWCA/IDAgOiBib3R0b207CiB9CiAKLWludAotUmVuZGVyQmxv
Y2s6OmZsb2F0Qm90dG9tKCkgY29uc3QKK2ludCBSZW5kZXJCbG9jazo6bG93ZXN0RmxvYXRMb2dp
Y2FsQm90dG9tKEZsb2F0aW5nT2JqZWN0OjpUeXBlIGZsb2F0VHlwZSkgY29uc3QKIHsKLSAgICBp
ZiAoIW1fZmxvYXRpbmdPYmplY3RzKSByZXR1cm4gMDsKLSAgICBpbnQgYm90dG9tID0gMDsKKyAg
ICBpZiAoIW1fZmxvYXRpbmdPYmplY3RzKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpbnQgbG93
ZXN0RmxvYXRCb3R0b20gPSAwOwogICAgIEZsb2F0aW5nT2JqZWN0KiByOwogICAgIERlcHJlY2F0
ZWRQdHJMaXN0SXRlcmF0b3I8RmxvYXRpbmdPYmplY3Q+IGl0KCptX2Zsb2F0aW5nT2JqZWN0cyk7
Ci0gICAgZm9yICggOyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQgKQotICAgICAgICBpZiAoci0+
Ym90dG9tKCkgPiBib3R0b20pCi0gICAgICAgICAgICBib3R0b20gPSByLT5ib3R0b20oKTsKLSAg
ICByZXR1cm4gYm90dG9tOworICAgIGZvciAoIDsgKHIgPSBpdC5jdXJyZW50KCkpOyArK2l0KSB7
CisgICAgICAgIGlmIChyLT50eXBlKCkgJiBmbG9hdFR5cGUpCisgICAgICAgICAgICBsb3dlc3RG
bG9hdEJvdHRvbSA9IG1heChsb3dlc3RGbG9hdEJvdHRvbSwgbG9naWNhbEJvdHRvbUZvckZsb2F0
KHIpKTsKKyAgICB9CisgICAgcmV0dXJuIGxvd2VzdEZsb2F0Qm90dG9tOwogfQogCiBpbnQgUmVu
ZGVyQmxvY2s6Omxvd2VzdFBvc2l0aW9uKGJvb2wgaW5jbHVkZU92ZXJmbG93SW50ZXJpb3IsIGJv
b2wgaW5jbHVkZVNlbGYpIGNvbnN0CkBAIC0zNTgzLDMyICszNTg1LDYgQEAgaW50IFJlbmRlckJs
b2NrOjpsZWZ0bW9zdFBvc2l0aW9uKGJvb2wgaQogICAgIHJldHVybiBsZWZ0OwogfQogCi1pbnQg
UmVuZGVyQmxvY2s6OmxlZnRCb3R0b20oKQotewotICAgIGlmICghbV9mbG9hdGluZ09iamVjdHMp
IHJldHVybiAwOwotICAgIGludCBib3R0b20gPSAwOwotICAgIEZsb2F0aW5nT2JqZWN0KiByOwot
ICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8RmxvYXRpbmdPYmplY3Q+IGl0KCptX2Zsb2F0
aW5nT2JqZWN0cyk7Ci0gICAgZm9yICggOyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQpCi0gICAg
ICAgIGlmIChyLT5ib3R0b20oKSA+IGJvdHRvbSAmJiByLT50eXBlKCkgPT0gRmxvYXRpbmdPYmpl
Y3Q6OkZsb2F0TGVmdCkKLSAgICAgICAgICAgIGJvdHRvbSA9IHItPmJvdHRvbSgpOwotCi0gICAg
cmV0dXJuIGJvdHRvbTsKLX0KLQotaW50IFJlbmRlckJsb2NrOjpyaWdodEJvdHRvbSgpCi17Ci0g
ICAgaWYgKCFtX2Zsb2F0aW5nT2JqZWN0cykgcmV0dXJuIDA7Ci0gICAgaW50IGJvdHRvbSA9IDA7
Ci0gICAgRmxvYXRpbmdPYmplY3QqIHI7Ci0gICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxG
bG9hdGluZ09iamVjdD4gaXQoKm1fZmxvYXRpbmdPYmplY3RzKTsKLSAgICBmb3IgKCA7IChyID0g
aXQuY3VycmVudCgpKTsgKytpdCkKLSAgICAgICAgaWYgKHItPmJvdHRvbSgpID4gYm90dG9tICYm
IHItPnR5cGUoKSA9PSBGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdodCkKLSAgICAgICAgICAgIGJv
dHRvbSA9IHItPmJvdHRvbSgpOwotCi0gICAgcmV0dXJuIGJvdHRvbTsKLX0KLQogdm9pZCBSZW5k
ZXJCbG9jazo6bWFya0xpbmVzRGlydHlJblZlcnRpY2FsUmFuZ2UoaW50IHRvcCwgaW50IGJvdHRv
bSwgUm9vdElubGluZUJveCogaGlnaGVzdCkKIHsKICAgICBpZiAodG9wID49IGJvdHRvbSkKQEAg
LTM2ODUsNyArMzY2MSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNsZWFyRmxvYXRzKCkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIFJlbmRlckJsb2NrKiBibG9jayA9IHRvUmVuZGVyQmxvY2so
cHJldik7Ci0gICAgaWYgKGJsb2NrLT5tX2Zsb2F0aW5nT2JqZWN0cyAmJiBibG9jay0+ZmxvYXRC
b3R0b20oKSA+IG9mZnNldCkKKyAgICBpZiAoYmxvY2stPm1fZmxvYXRpbmdPYmplY3RzICYmIGJs
b2NrLT5sb3dlc3RGbG9hdExvZ2ljYWxCb3R0b20oKSA+IG9mZnNldCkKICAgICAgICAgYWRkSW50
cnVkaW5nRmxvYXRzKGJsb2NrLCB4b2Zmc2V0LCBvZmZzZXQpOwogCiAgICAgaWYgKGNoaWxkcmVu
SW5saW5lKCkpIHsKQEAgLTM3MzIsMTQgKzM3MDgsMTQgQEAgaW50IFJlbmRlckJsb2NrOjphZGRP
dmVyaGFuZ2luZ0Zsb2F0cyhSZQogICAgIGlmIChjaGlsZC0+aGFzT3ZlcmZsb3dDbGlwKCkgfHwg
IWNoaWxkLT5jb250YWluc0Zsb2F0cygpIHx8IGNoaWxkLT5pc1Jvb3QoKSB8fCBjaGlsZC0+aGFz
Q29sdW1ucygpIHx8IGNoaWxkLT5pc0Jsb2NrRmxvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBpbnQgbG93ZXN0RmxvYXRCb3R0b20gPSAwOworICAgIGludCBsb3dlc3RGbG9hdExv
Z2ljYWxCb3R0b20gPSAwOwogCiAgICAgLy8gRmxvYXRzIHRoYXQgd2lsbCByZW1haW4gdGhlIGNo
aWxkJ3MgcmVzcG9uc2liaWxpdHkgdG8gcGFpbnQgc2hvdWxkIGZhY3RvciBpbnRvIGl0cwogICAg
IC8vIG92ZXJmbG93LgogICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8RmxvYXRpbmdPYmpl
Y3Q+IGl0KCpjaGlsZC0+bV9mbG9hdGluZ09iamVjdHMpOwogICAgIGZvciAoRmxvYXRpbmdPYmpl
Y3QqIHI7IChyID0gaXQuY3VycmVudCgpKTsgKytpdCkgewogICAgICAgICBpbnQgYm90dG9tID0g
Y2hpbGQtPnkoKSArIHItPmJvdHRvbSgpOwotICAgICAgICBsb3dlc3RGbG9hdEJvdHRvbSA9IG1h
eChsb3dlc3RGbG9hdEJvdHRvbSwgYm90dG9tKTsKKyAgICAgICAgbG93ZXN0RmxvYXRMb2dpY2Fs
Qm90dG9tID0gbWF4KGxvd2VzdEZsb2F0TG9naWNhbEJvdHRvbSwgYm90dG9tKTsKIAogICAgICAg
ICBpZiAoYm90dG9tID4gaGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBvYmplY3Qg
aXMgbm90IGluIHRoZSBsaXN0LCB3ZSBhZGQgaXQgbm93LgpAQCAtMzc3NSw3ICszNzUxLDcgQEAg
aW50IFJlbmRlckJsb2NrOjphZGRPdmVyaGFuZ2luZ0Zsb2F0cyhSZQogICAgICAgICBpZiAoci0+
bV9zaG91bGRQYWludCAmJiAhci0+bV9yZW5kZXJlci0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkK
ICAgICAgICAgICAgIGNoaWxkLT5hZGRPdmVyZmxvd0Zyb21DaGlsZChyLT5tX3JlbmRlcmVyLCBJ
bnRTaXplKHItPmxlZnQoKSArIHItPm1fcmVuZGVyZXItPm1hcmdpbkxlZnQoKSwgci0+dG9wKCkg
KyByLT5tX3JlbmRlcmVyLT5tYXJnaW5Ub3AoKSkpOwogICAgIH0KLSAgICByZXR1cm4gbG93ZXN0
RmxvYXRCb3R0b207CisgICAgcmV0dXJuIGxvd2VzdEZsb2F0TG9naWNhbEJvdHRvbTsKIH0KIAog
dm9pZCBSZW5kZXJCbG9jazo6YWRkSW50cnVkaW5nRmxvYXRzKFJlbmRlckJsb2NrKiBwcmV2LCBp
bnQgeG9mZiwgaW50IHlvZmYpCkBAIC0zOTExLDEzICszODg3LDEzIEBAIGludCBSZW5kZXJCbG9j
azo6Z2V0Q2xlYXJEZWx0YShSZW5kZXJCb3gKICAgICAgICAgY2FzZSBDTk9ORToKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENMRUZUOgotICAgICAgICAgICAgYm90dG9tID0gbGVm
dEJvdHRvbSgpOworICAgICAgICAgICAgYm90dG9tID0gbG93ZXN0RmxvYXRMb2dpY2FsQm90dG9t
KEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1JJR0hUOgotICAgICAgICAgICAgYm90dG9tID0gcmlnaHRCb3R0b20oKTsKKyAgICAg
ICAgICAgIGJvdHRvbSA9IGxvd2VzdEZsb2F0TG9naWNhbEJvdHRvbShGbG9hdGluZ09iamVjdDo6
RmxvYXRSaWdodCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDQk9USDoKLSAg
ICAgICAgICAgIGJvdHRvbSA9IGZsb2F0Qm90dG9tKCk7CisgICAgICAgICAgICBib3R0b20gPSBs
b3dlc3RGbG9hdExvZ2ljYWxCb3R0b20oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIApA
QCAtMzk0NSw3ICszOTIxLDcgQEAgaW50IFJlbmRlckJsb2NrOjpnZXRDbGVhckRlbHRhKFJlbmRl
ckJveAogICAgICAgICAgICAgaWYgKGNoaWxkV2lkdGhBdFkgPD0gd2lkdGhBdFkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHkgLSB5UG9zOwogCi0gICAgICAgICAgICB5ID0gbmV4dEZsb2F0Qm90
dG9tQmVsb3coeSk7CisgICAgICAgICAgICB5ID0gbmV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93
KHkpOwogICAgICAgICAgICAgQVNTRVJUKHkgPj0geVBvcyk7CiAgICAgICAgICAgICBpZiAoeSA8
IHlQb3MpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmgJKHJldmlzaW9uIDY4OTI2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1h
cmdpbkFmdGVyRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgaW50KTsKICAgICBpbnQgY29sbGFw
c2VkTWFyZ2luQmVmb3JlRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAgICAgaW50
IGNvbGxhcHNlZE1hcmdpbkFmdGVyRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7Ci0g
ICAgCisKICAgICBjbGFzcyBNYXJnaW5WYWx1ZXMgewogICAgIHB1YmxpYzoKICAgICAgICAgTWFy
Z2luVmFsdWVzKGludCBiZWZvcmVQb3MsIGludCBiZWZvcmVOZWcsIGludCBhZnRlclBvcywgaW50
IGFmdGVyTmVnKQpAQCAtMzMxLDcgKzMzMSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZv
aWQgcmVwYWludE92ZXJoYW5naW5nRmxvYXRzKGJvb2wgcGFpbnRBbGxEZXNjZW5kYW50cyk7CiAK
LSAgICB2b2lkIGxheW91dEJsb2NrQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBpbnQm
IG1heEZsb2F0Qm90dG9tKTsKKyAgICB2b2lkIGxheW91dEJsb2NrQ2hpbGRyZW4oYm9vbCByZWxh
eW91dENoaWxkcmVuLCBpbnQmIG1heEZsb2F0TG9naWNhbEJvdHRvbSk7CiAgICAgdm9pZCBsYXlv
dXRJbmxpbmVDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIGludCYgcmVwYWludFRvcCwg
aW50JiByZXBhaW50Qm90dG9tKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkxpc3RNYXJr
ZXIoKSB7IH0KQEAgLTM1OSwxMSArMzU5LDggQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgc3Ry
dWN0IEZsb2F0aW5nT2JqZWN0IDogTm9uY29weWFibGUgewotICAgICAgICBlbnVtIFR5cGUgewot
ICAgICAgICAgICAgRmxvYXRMZWZ0LAotICAgICAgICAgICAgRmxvYXRSaWdodAotICAgICAgICB9
OwotCisgICAgICAgIGVudW0gVHlwZSB7IEZsb2F0TGVmdCA9IDEsIEZsb2F0UmlnaHQgPSAyLCBG
bG9hdEJvdGggPSAzIH07CisgICAgCiAgICAgICAgIEZsb2F0aW5nT2JqZWN0KFR5cGUgdHlwZSwg
Y29uc3QgSW50UmVjdCYgZnJhbWVSZWN0ID0gSW50UmVjdCgpKQogICAgICAgICAgICAgOiBtX3Jl
bmRlcmVyKDApCiAgICAgICAgICAgICAsIG1fZnJhbWVSZWN0KGZyYW1lUmVjdCkKQEAgLTM5NCwx
MSArMzkxLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIFJlbmRlckJveCogbV9yZW5kZXJlcjsKICAg
ICAgICAgSW50UmVjdCBtX2ZyYW1lUmVjdDsKICAgICAgICAgaW50IG1fcGFnaW5hdGlvblN0cnV0
OwotICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiAxOyAvLyBUeXBlIChsZWZ0IG9yIHJpZ2h0IGFs
aWduZWQpCisgICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDI7IC8vIFR5cGUgKGxlZnQgb3Igcmln
aHQgYWxpZ25lZCkKICAgICAgICAgYm9vbCBtX3Nob3VsZFBhaW50IDogMTsKICAgICAgICAgYm9v
bCBtX2lzRGVzY2VuZGFudCA6IDE7CiAgICAgfTsKIAorICAgIGludCBsb2dpY2FsQm90dG9tRm9y
RmxvYXQoRmxvYXRpbmdPYmplY3QqIGNoaWxkKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5pc1Zl
cnRpY2FsQmxvY2tGbG93KCkgPyBjaGlsZC0+Ym90dG9tKCkgOiBjaGlsZC0+cmlnaHQoKTsgfQor
ICAgIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zJyBpbXBsZW1lbnRhdGlvbnMgYXJl
IGluIFJlbmRlckJsb2NrTGluZUxheW91dC5jcHAuCiAgICAgUm9vdElubGluZUJveCogZGV0ZXJt
aW5lU3RhcnRQb3NpdGlvbihib29sJiBmaXJzdExpbmUsIGJvb2wmIGZ1bGxMYXlvdXQsIGJvb2wm
IHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIElubGluZUJpZGlSZXNvbHZlciYsIFZlY3RvcjxGbG9hdFdpdGhSZWN0PiYg
ZmxvYXRzLCB1bnNpZ25lZCYgbnVtQ2xlYW5GbG9hdHMsCkBAIC00NTEsMTUgKzQ1MCwxMyBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0OwogCi0gICAg
Ym9vbCBoYXNPdmVyaGFuZ2luZ0Zsb2F0cygpIHsgcmV0dXJuIHBhcmVudCgpICYmICFoYXNDb2x1
bW5zKCkgJiYgZmxvYXRCb3R0b20oKSA+IGhlaWdodCgpOyB9CisgICAgYm9vbCBoYXNPdmVyaGFu
Z2luZ0Zsb2F0cygpIHsgcmV0dXJuIHBhcmVudCgpICYmICFoYXNDb2x1bW5zKCkgJiYgbG93ZXN0
RmxvYXRMb2dpY2FsQm90dG9tKCkgPiBsb2dpY2FsSGVpZ2h0KCk7IH0KICAgICB2b2lkIGFkZElu
dHJ1ZGluZ0Zsb2F0cyhSZW5kZXJCbG9jayogcHJldiwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0
KTsKICAgICBpbnQgYWRkT3ZlcmhhbmdpbmdGbG9hdHMoUmVuZGVyQmxvY2sqIGNoaWxkLCBpbnQg
eG9mZnNldCwgaW50IHlvZmZzZXQsIGJvb2wgbWFrZUNoaWxkUGFpbnRPdGhlckZsb2F0cyk7CiAK
LSAgICBpbnQgbmV4dEZsb2F0Qm90dG9tQmVsb3coaW50KSBjb25zdDsKLSAgICBpbnQgZmxvYXRC
b3R0b20oKSBjb25zdDsKLSAgICBpbmxpbmUgaW50IGxlZnRCb3R0b20oKTsKLSAgICBpbmxpbmUg
aW50IHJpZ2h0Qm90dG9tKCk7Ci0KKyAgICBpbnQgbG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tKEZs
b2F0aW5nT2JqZWN0OjpUeXBlID0gRmxvYXRpbmdPYmplY3Q6OkZsb2F0Qm90aCkgY29uc3Q7Cisg
ICAgaW50IG5leHRGbG9hdExvZ2ljYWxCb3R0b21CZWxvdyhpbnQpIGNvbnN0OworICAgIAogICAg
IHZpcnR1YWwgYm9vbCBoaXRUZXN0Q29sdW1ucyhjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRl
c3RSZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uKTsK
ICAgICB2aXJ0dWFsIGJvb2wgaGl0VGVzdENvbnRlbnRzKGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYsIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rp
b24pOwogICAgIGJvb2wgaGl0VGVzdEZsb2F0cyhjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRl
c3RSZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5KTsKQEAgLTYwMiw3ICs1OTks
NyBAQCBwcml2YXRlOgogICAgICAgICBpbnQgbWFyZ2luKCkgY29uc3QgeyByZXR1cm4gbV9wb3Np
dGl2ZU1hcmdpbiAtIG1fbmVnYXRpdmVNYXJnaW47IH0KICAgICB9OwogCi0gICAgdm9pZCBsYXlv
dXRCbG9ja0NoaWxkKFJlbmRlckJveCogY2hpbGQsIE1hcmdpbkluZm8mLCBpbnQmIHByZXZpb3Vz
RmxvYXRCb3R0b20sIGludCYgbWF4RmxvYXRCb3R0b20pOworICAgIHZvaWQgbGF5b3V0QmxvY2tD
aGlsZChSZW5kZXJCb3gqIGNoaWxkLCBNYXJnaW5JbmZvJiwgaW50JiBwcmV2aW91c0Zsb2F0TG9n
aWNhbEJvdHRvbSwgaW50JiBtYXhGbG9hdExvZ2ljYWxCb3R0b20pOwogICAgIHZvaWQgYWRqdXN0
UG9zaXRpb25lZEJsb2NrKFJlbmRlckJveCogY2hpbGQsIGNvbnN0IE1hcmdpbkluZm8mKTsKICAg
ICB2b2lkIGFkanVzdEZsb2F0aW5nQmxvY2soY29uc3QgTWFyZ2luSW5mbyYpOwogICAgIGJvb2wg
aGFuZGxlU3BlY2lhbENoaWxkKFJlbmRlckJveCogY2hpbGQsIGNvbnN0IE1hcmdpbkluZm8mKTsK
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2
aXNpb24gNjg5MjYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMwLDIyICsxMzMwLDIyIEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmZpdEJlbG93RmxvYXRzKGludCB3aWQKIHsKICAgICBBU1NFUlQod2lkdGhUb0ZpdCA+IGF2
YWlsYWJsZVdpZHRoKTsKIAotICAgIGludCBmbG9hdEJvdHRvbTsKLSAgICBpbnQgbGFzdEZsb2F0
Qm90dG9tID0gaGVpZ2h0KCk7CisgICAgaW50IGZsb2F0TG9naWNhbEJvdHRvbTsKKyAgICBpbnQg
bGFzdEZsb2F0TG9naWNhbEJvdHRvbSA9IGhlaWdodCgpOwogICAgIGludCBuZXdMaW5lV2lkdGgg
PSBhdmFpbGFibGVXaWR0aDsKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBmbG9hdEJvdHRv
bSA9IG5leHRGbG9hdEJvdHRvbUJlbG93KGxhc3RGbG9hdEJvdHRvbSk7Ci0gICAgICAgIGlmICgh
ZmxvYXRCb3R0b20pCisgICAgICAgIGZsb2F0TG9naWNhbEJvdHRvbSA9IG5leHRGbG9hdExvZ2lj
YWxCb3R0b21CZWxvdyhsYXN0RmxvYXRMb2dpY2FsQm90dG9tKTsKKyAgICAgICAgaWYgKCFmbG9h
dExvZ2ljYWxCb3R0b20pCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBuZXdMaW5lV2lk
dGggPSBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKGZsb2F0Qm90dG9tLCBmaXJzdExpbmUp
OwotICAgICAgICBsYXN0RmxvYXRCb3R0b20gPSBmbG9hdEJvdHRvbTsKKyAgICAgICAgbmV3TGlu
ZVdpZHRoID0gYXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yTGluZShmbG9hdExvZ2ljYWxCb3R0b20s
IGZpcnN0TGluZSk7CisgICAgICAgIGxhc3RGbG9hdExvZ2ljYWxCb3R0b20gPSBmbG9hdExvZ2lj
YWxCb3R0b207CiAgICAgICAgIGlmIChuZXdMaW5lV2lkdGggPj0gd2lkdGhUb0ZpdCkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlmIChuZXdMaW5lV2lkdGggPiBhdmFpbGFibGVX
aWR0aCkgewotICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGxhc3RGbG9hdEJvdHRvbSk7CisgICAg
ICAgIHNldExvZ2ljYWxIZWlnaHQobGFzdEZsb2F0TG9naWNhbEJvdHRvbSk7CiAgICAgICAgIGF2
YWlsYWJsZVdpZHRoID0gbmV3TGluZVdpZHRoOwogICAgIH0KIH0K
</data>
<flag name="review"
          id="59234"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>