<?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>121860</bug_id>
          
          <creation_ts>2013-09-24 13:24:10 -0700</creation_ts>
          <short_desc>Tighten table rendering code</short_desc>
          <delta_ts>2013-09-24 13:46:08 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>932692</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-24 13:24:10 -0700</bug_when>
    <thetext>Less RenderObject</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932695</commentid>
    <comment_count>1</comment_count>
      <attachid>212496</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-24 13:27:34 -0700</bug_when>
    <thetext>Created attachment 212496
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932703</commentid>
    <comment_count>2</comment_count>
      <attachid>212496</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-24 13:34:40 -0700</bug_when>
    <thetext>Comment on attachment 212496
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932706</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-24 13:46:08 -0700</bug_when>
    <thetext>https://trac.webkit.org/r156355</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212496</attachid>
            <date>2013-09-24 13:27:34 -0700</date>
            <delta_ts>2013-09-24 13:34:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>table-renderer-tighten.patch</filename>
            <type>text/plain</type>
            <size>20534</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjM1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA5LTI0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUaWdodGVuIHRhYmxlIHJlbmRl
cmluZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjE4NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBIaWRlIGZpcnN0Q2hpbGQvbGFzdENoaWxkL25leHRTaWJsaW5nL3ByZXZpb3VzU2libGluZyBp
biB0YWJsZSByZW5kZXJlcnMsIAorICAgICAgICBleHBvc2UgY29ycmVjdGx5IHR5cGVkIGZpcnN0
Um93L25leHRDZWxsIGV0YyBpbnN0ZWFkLgorCiAyMDEzLTA5LTI0ICBEZWFuIEphY2tzb24gIDxk
aW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgc3ltYm9sIG5hbWUgaGFzaGluZyBm
b3IgV2ViR0wgc2hhZGVycwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFi
bGVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhl
ZFRhYmxlTGF5b3V0LmNwcAkocmV2aXNpb24gMTU2MzM5KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsMTMgKzEz
Niw4IEBAIGludCBGaXhlZFRhYmxlTGF5b3V0OjpjYWxjV2lkdGhBcnJheSgpCiAKICAgICB1bnNp
Z25lZCBjdXJyZW50Q29sdW1uID0gMDsKIAotICAgIFJlbmRlck9iamVjdCogZmlyc3RSb3cgPSBz
ZWN0aW9uLT5maXJzdENoaWxkKCk7Ci0gICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmly
c3RSb3ctPmZpcnN0Q2hpbGRTbG93KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
ZygpKSB7Ci0gICAgICAgIGlmICghY2hpbGQtPmlzVGFibGVDZWxsKCkpCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIGNlbGwgPSB0b1JlbmRlclRhYmxl
Q2VsbChjaGlsZCk7Ci0KKyAgICBSZW5kZXJUYWJsZVJvdyogZmlyc3RSb3cgPSBzZWN0aW9uLT5m
aXJzdFJvdygpOworICAgIGZvciAoUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gZmlyc3RSb3ctPmZp
cnN0Q2VsbCgpOyBjZWxsOyBjZWxsID0gY2VsbC0+bmV4dENlbGwoKSkgewogICAgICAgICBMZW5n
dGggbG9naWNhbFdpZHRoID0gY2VsbC0+c3R5bGVPckNvbExvZ2ljYWxXaWR0aCgpOwogICAgICAg
ICB1bnNpZ25lZCBzcGFuID0gY2VsbC0+Y29sU3BhbigpOwogICAgICAgICBpbnQgZml4ZWRCb3Jk
ZXJCb3hMb2dpY2FsV2lkdGggPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCShyZXZpc2lvbiAxNTYzMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNyArMTg2LDcgQEAgdm9p
ZCBSZW5kZXJUYWJsZTo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KgogICAgIGlmIChsYXN0Qm94ICYm
IGxhc3RCb3gtPmlzQW5vbnltb3VzKCkgJiYgIWlzQWZ0ZXJDb250ZW50KGxhc3RCb3gpKSB7CiAg
ICAgICAgIFJlbmRlclRhYmxlU2VjdGlvbiogc2VjdGlvbiA9IHRvUmVuZGVyVGFibGVTZWN0aW9u
KGxhc3RCb3gpOwogICAgICAgICBpZiAoYmVmb3JlQ2hpbGQgPT0gc2VjdGlvbikKLSAgICAgICAg
ICAgIGJlZm9yZUNoaWxkID0gc2VjdGlvbi0+Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAgYmVm
b3JlQ2hpbGQgPSBzZWN0aW9uLT5maXJzdFJvdygpOwogICAgICAgICBzZWN0aW9uLT5hZGRDaGls
ZChjaGlsZCwgYmVmb3JlQ2hpbGQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTY5LDE0
ICs1NjksMTAgQEAgdm9pZCBSZW5kZXJUYWJsZTo6cmVjYWxjQ29sbGFwc2VkQm9yZGVycwogICAg
IGZvciAoUmVuZGVyT2JqZWN0KiBzZWN0aW9uID0gZmlyc3RDaGlsZCgpOyBzZWN0aW9uOyBzZWN0
aW9uID0gc2VjdGlvbi0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoIXNlY3Rpb24tPmlz
VGFibGVTZWN0aW9uKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZm9yIChSZW5k
ZXJPYmplY3QqIHJvdyA9IHRvUmVuZGVyVGFibGVTZWN0aW9uKHNlY3Rpb24pLT5maXJzdENoaWxk
KCk7IHJvdzsgcm93ID0gcm93LT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgICAgICBpZiAoIXJv
dy0+aXNUYWJsZVJvdygpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
Zm9yIChSZW5kZXJPYmplY3QqIGNlbGwgPSB0b1JlbmRlclRhYmxlUm93KHJvdyktPmZpcnN0Q2hp
bGQoKTsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNlbGwtPmlzVGFibGVDZWxsKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgIEFTU0VSVCh0b1JlbmRlclRhYmxlQ2VsbChjZWxsKS0+dGFibGUo
KSA9PSB0aGlzKTsKLSAgICAgICAgICAgICAgICB0b1JlbmRlclRhYmxlQ2VsbChjZWxsKS0+Y29s
bGVjdEJvcmRlclZhbHVlcyhtX2NvbGxhcHNlZEJvcmRlcnMpOworICAgICAgICBmb3IgKFJlbmRl
clRhYmxlUm93KiByb3cgPSB0b1JlbmRlclRhYmxlU2VjdGlvbihzZWN0aW9uKS0+Zmlyc3RSb3co
KTsgcm93OyByb3cgPSByb3ctPm5leHRSb3coKSkgeworICAgICAgICAgICAgZm9yIChSZW5kZXJU
YWJsZUNlbGwqIGNlbGwgPSByb3ctPmZpcnN0Q2VsbCgpOyBjZWxsOyBjZWxsID0gY2VsbC0+bmV4
dENlbGwoKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChjZWxsLT50YWJsZSgpID09IHRoaXMp
OworICAgICAgICAgICAgICAgIGNlbGwtPmNvbGxlY3RCb3JkZXJWYWx1ZXMobV9jb2xsYXBzZWRC
b3JkZXJzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiAxNTYzMzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzM5LDcgKzczOSw3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRh
YmxlQ2VsbDo6Y28KICAgICAgICAgaWYgKHByZXZDZWxsLT5zZWN0aW9uKCkgPT0gc2VjdGlvbigp
KQogICAgICAgICAgICAgcHJldlJvdyA9IHBhcmVudCgpLT5wcmV2aW91c1NpYmxpbmcoKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcHJldlJvdyA9IHByZXZDZWxsLT5zZWN0aW9uKCktPmxh
c3RDaGlsZCgpOworICAgICAgICAgICAgcHJldlJvdyA9IHByZXZDZWxsLT5zZWN0aW9uKCktPmxh
c3RSb3coKTsKICAgICAKICAgICAgICAgaWYgKHByZXZSb3cpIHsKICAgICAgICAgICAgIHJlc3Vs
dCA9IGNob29zZUJvcmRlcihDb2xsYXBzZWRCb3JkZXJWYWx1ZShwcmV2Um93LT5zdHlsZSgpLT5i
b3JkZXJBZnRlcigpLCBpbmNsdWRlQ29sb3IgPyBwcmV2Um93LT5zdHlsZSgpLT52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoYWZ0ZXJDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1cpLCByZXN1bHQp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAkocmV2
aXNpb24gMTU2MzM5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1fY29sdW1uOwogICAgIH0KIAorICAgIFJlbmRlclRhYmxlQ2VsbCogbmV4dENlbGwoKSBj
b25zdDsKKyAgICBSZW5kZXJUYWJsZUNlbGwqIHByZXZpb3VzQ2VsbCgpIGNvbnN0OworCiAgICAg
UmVuZGVyVGFibGVSb3cqIHJvdygpIGNvbnN0IHsgcmV0dXJuIHRvUmVuZGVyVGFibGVSb3cocGFy
ZW50KCkpOyB9CiAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBzZWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gdG9SZW5kZXJUYWJsZVNlY3Rpb24ocGFyZW50KCktPnBhcmVudCgpKTsgfQogICAgIFJlbmRl
clRhYmxlKiB0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRvUmVuZGVyVGFibGUocGFyZW50KCktPnBh
cmVudCgpLT5wYXJlbnQoKSk7IH0KQEAgLTIwNyw2ICsyMTAsOCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBzdHlsZSgpLT5ib3JkZXJFbmQoKTsKICAgICB9CiAKKyAgICB1c2luZyBSZW5kZXJC
bG9ja0Zsb3c6Om5vZGVBdFBvaW50OworCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgaXNGaXJz
dE9yTGFzdENlbGxJblJvdygpIGNvbnN0CiAgICAgewpAQCAtMjc5LDYgKzI4NCw5IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgcGFyc2VSb3dTcGFuRnJvbURPTSgpIGNvbnN0OwogICAgIHVuc2ln
bmVkIHBhcnNlQ29sU3BhbkZyb21ET00oKSBjb25zdDsKIAorICAgIHZvaWQgbmV4dFNpYmxpbmco
KSBjb25zdCBXVEZfREVMRVRFRF9GVU5DVElPTjsKKyAgICB2b2lkIHByZXZpb3VzU2libGluZygp
IGNvbnN0IFdURl9ERUxFVEVEX0ZVTkNUSU9OOworCiAgICAgLy8gTm90ZSBNU1ZDIHdpbGwgb25s
eSBwYWNrIG1lbWJlcnMgaWYgdGhleSBoYXZlIGlkZW50aWNhbCB0eXBlcywgaGVuY2Ugd2UgdXNl
IHVuc2lnbmVkIGluc3RlYWQgb2YgYm9vbCBoZXJlLgogICAgIHVuc2lnbmVkIG1fY29sdW1uIDog
Mjk7CiAgICAgdW5zaWduZWQgbV9jZWxsV2lkdGhDaGFuZ2VkIDogMTsKQEAgLTMwMyw2ICszMTEs
MjYgQEAgaW5saW5lIGNvbnN0IFJlbmRlclRhYmxlQ2VsbCogdG9SZW5kZXJUYQogLy8gVGhpcyB3
aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBjYXN0Lgogdm9pZCB0b1JlbmRl
clRhYmxlQ2VsbChjb25zdCBSZW5kZXJUYWJsZUNlbGwqKTsKIAoraW5saW5lIFJlbmRlclRhYmxl
Q2VsbCogUmVuZGVyVGFibGVDZWxsOjpuZXh0Q2VsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRv
UmVuZGVyVGFibGVDZWxsKFJlbmRlckJsb2NrRmxvdzo6bmV4dFNpYmxpbmcoKSk7Cit9CisKK2lu
bGluZSBSZW5kZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlQ2VsbDo6cHJldmlvdXNDZWxsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gdG9SZW5kZXJUYWJsZUNlbGwoUmVuZGVyQmxvY2tGbG93OjpwcmV2
aW91c1NpYmxpbmcoKSk7Cit9CisKK2lubGluZSBSZW5kZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxl
Um93OjpmaXJzdENlbGwoKSBjb25zdAoreworICAgIHJldHVybiB0b1JlbmRlclRhYmxlQ2VsbChS
ZW5kZXJCb3g6OmZpcnN0Q2hpbGQoKSk7Cit9CisKK2lubGluZSBSZW5kZXJUYWJsZUNlbGwqIFJl
bmRlclRhYmxlUm93OjpsYXN0Q2VsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvUmVuZGVyVGFi
bGVDZWxsKFJlbmRlckJveDo6bGFzdENoaWxkKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBSZW5kZXJUYWJsZUNlbGxfaApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCShyZXZpc2lvbiAxNTYzMzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDksNyArMTA5LDcgQEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6YWRkQ2hpbGQoUmVuZGVyT2Jq
ZQogICAgIGlmICghY2hpbGQtPmlzVGFibGVDZWxsKCkpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0
KiBsYXN0ID0gYmVmb3JlQ2hpbGQ7CiAgICAgICAgIGlmICghbGFzdCkKLSAgICAgICAgICAgIGxh
c3QgPSBsYXN0Q2hpbGQoKTsKKyAgICAgICAgICAgIGxhc3QgPSBsYXN0Q2VsbCgpOwogICAgICAg
ICBpZiAobGFzdCAmJiBsYXN0LT5pc0Fub255bW91cygpICYmIGxhc3QtPmlzVGFibGVDZWxsKCkg
JiYgIWxhc3QtPmlzQmVmb3JlT3JBZnRlckNvbnRlbnQoKSkgewogICAgICAgICAgICAgUmVuZGVy
VGFibGVDZWxsKiBjZWxsID0gdG9SZW5kZXJUYWJsZUNlbGwobGFzdCk7CiAgICAgICAgICAgICBp
ZiAoYmVmb3JlQ2hpbGQgPT0gY2VsbCkKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFJlbmRlclRh
YmxlUm93OjphZGRDaGlsZChSZW5kZXJPYmplCiAgICAgQVNTRVJUKCFiZWZvcmVDaGlsZCB8fCBi
ZWZvcmVDaGlsZC0+aXNUYWJsZUNlbGwoKSk7CiAgICAgUmVuZGVyQm94OjphZGRDaGlsZChjZWxs
LCBiZWZvcmVDaGlsZCk7CiAKLSAgICBpZiAoYmVmb3JlQ2hpbGQgfHwgbmV4dFNpYmxpbmcoKSkK
KyAgICBpZiAoYmVmb3JlQ2hpbGQgfHwgbmV4dFJvdygpKQogICAgICAgICBzZWN0aW9uKCktPnNl
dE5lZWRzQ2VsbFJlY2FsYygpOwogfQogCkBAIC0xNjQsMTYgKzE2NCwxMyBAQCB2b2lkIFJlbmRl
clRhYmxlUm93OjpsYXlvdXQoKQogCiAgICAgYm9vbCBwYWdpbmF0ZWQgPSB2aWV3KCkubGF5b3V0
U3RhdGUoKS0+aXNQYWdpbmF0ZWQoKTsKICAgICAgICAgICAgICAgICAKLSAgICBmb3IgKFJlbmRl
ck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0
U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNUYWJsZUNlbGwoKSkgewotICAgICAg
ICAgICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gdG9SZW5kZXJUYWJsZUNlbGwoY2hpbGQpOwot
ICAgICAgICAgICAgaWYgKCFjZWxsLT5uZWVkc0xheW91dCgpICYmIHBhZ2luYXRlZCAmJiB2aWV3
KCkubGF5b3V0U3RhdGUoKS0+cGFnZUxvZ2ljYWxIZWlnaHQoKSAmJiB2aWV3KCkubGF5b3V0U3Rh
dGUoKS0+cGFnZUxvZ2ljYWxPZmZzZXQoY2VsbCwgY2VsbC0+bG9naWNhbFRvcCgpKSAhPSBjZWxs
LT5wYWdlTG9naWNhbE9mZnNldCgpKQotICAgICAgICAgICAgICAgIGNlbGwtPnNldENoaWxkTmVl
ZHNMYXlvdXQodHJ1ZSwgTWFya09ubHlUaGlzKTsKLQotICAgICAgICAgICAgaWYgKGNoaWxkLT5u
ZWVkc0xheW91dCgpKSB7Ci0gICAgICAgICAgICAgICAgY2VsbC0+Y29tcHV0ZUFuZFNldEJsb2Nr
RGlyZWN0aW9uTWFyZ2lucyh0YWJsZSgpKTsKLSAgICAgICAgICAgICAgICBjZWxsLT5sYXlvdXQo
KTsKLSAgICAgICAgICAgIH0KKyAgICBmb3IgKFJlbmRlclRhYmxlQ2VsbCogY2VsbCA9IGZpcnN0
Q2VsbCgpOyBjZWxsOyBjZWxsID0gY2VsbC0+bmV4dENlbGwoKSkgeworICAgICAgICBpZiAoIWNl
bGwtPm5lZWRzTGF5b3V0KCkgJiYgcGFnaW5hdGVkICYmIHZpZXcoKS5sYXlvdXRTdGF0ZSgpLT5w
YWdlTG9naWNhbEhlaWdodCgpICYmIHZpZXcoKS5sYXlvdXRTdGF0ZSgpLT5wYWdlTG9naWNhbE9m
ZnNldChjZWxsLCBjZWxsLT5sb2dpY2FsVG9wKCkpICE9IGNlbGwtPnBhZ2VMb2dpY2FsT2Zmc2V0
KCkpCisgICAgICAgICAgICBjZWxsLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIE1hcmtPbmx5
VGhpcyk7CisKKyAgICAgICAgaWYgKGNlbGwtPm5lZWRzTGF5b3V0KCkpIHsKKyAgICAgICAgICAg
IGNlbGwtPmNvbXB1dGVBbmRTZXRCbG9ja0RpcmVjdGlvbk1hcmdpbnModGFibGUoKSk7CisgICAg
ICAgICAgICBjZWxsLT5sYXlvdXQoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTgzLDEwICsx
ODAsOCBAQCB2b2lkIFJlbmRlclRhYmxlUm93OjpsYXlvdXQoKQogICAgIC8vIFdlIGNhbm5vdCBj
YWxsIHJlcGFpbnQoKSBiZWNhdXNlIG91ciBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgp
IGlzIHRha2VuIGZyb20gdGhlCiAgICAgLy8gcGFyZW50IHRhYmxlLCBhbmQgYmVpbmcgbWlkLWxh
eW91dCwgdGhhdCBpcyBpbnZhbGlkLiBJbnN0ZWFkLCB3ZSByZXBhaW50IG91ciBjZWxscy4KICAg
ICBpZiAoc2VsZk5lZWRzTGF5b3V0KCkgJiYgY2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkp
IHsKLSAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKGNoaWxk
LT5pc1RhYmxlQ2VsbCgpKQotICAgICAgICAgICAgICAgIGNoaWxkLT5yZXBhaW50KCk7Ci0gICAg
ICAgIH0KKyAgICAgICAgZm9yIChSZW5kZXJUYWJsZUNlbGwqIGNlbGwgPSBmaXJzdENlbGwoKTsg
Y2VsbDsgY2VsbCA9IGNlbGwtPm5leHRDZWxsKCkpCisgICAgICAgICAgICBjZWxsLT5yZXBhaW50
KCk7CiAgICAgfQogCiAgICAgc3RhdGVQdXNoZXIucG9wKCk7CkBAIC0yMTYsMTQgKzIxMSwxNCBA
QCBib29sIFJlbmRlclRhYmxlUm93Ojpub2RlQXRQb2ludChjb25zdCBICiB7CiAgICAgLy8gVGFi
bGUgcm93cyBjYW5ub3QgZXZlciBiZSBoaXQgdGVzdGVkLiAgRWZmZWN0aXZlbHkgdGhleSBkbyBu
b3QgZXhpc3QuCiAgICAgLy8gSnVzdCBmb3J3YXJkIHRvIG91ciBjaGlsZHJlbiBhbHdheXMuCi0g
ICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gbGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgeworICAgIGZvciAoUmVuZGVyVGFibGVDZWxsKiBj
ZWxsID0gbGFzdENlbGwoKTsgY2VsbDsgY2VsbCA9IGNlbGwtPnByZXZpb3VzQ2VsbCgpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBXZSBoYXZlIHRvIHNraXAgb3ZlciBpbmxpbmUgZmxvd3MsIHNpbmNl
IHRoZXkgY2FuIHNob3cgdXAgaW5zaWRlIHRhYmxlIHJvd3MKICAgICAgICAgLy8gYXQgdGhlIG1v
bWVudCAoYSBkZW1vdGVkIGlubGluZSA8Zm9ybT4gZm9yIGV4YW1wbGUpLiBJZiB3ZSBldmVyIGlt
cGxlbWVudCBhCiAgICAgICAgIC8vIHRhYmxlLXNwZWNpZmljIGhpdC10ZXN0IG1ldGhvZCAod2hp
Y2ggd2Ugc2hvdWxkIGRvIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIGFueXdheSksCiAgICAgICAg
IC8vIHRoZW4gd2UgY2FuIHJlbW92ZSB0aGlzIGNoZWNrLgotICAgICAgICBpZiAoY2hpbGQtPmlz
VGFibGVDZWxsKCkgJiYgIXRvUmVuZGVyQm94KGNoaWxkKS0+aGFzU2VsZlBhaW50aW5nTGF5ZXIo
KSkgewotICAgICAgICAgICAgTGF5b3V0UG9pbnQgY2VsbFBvaW50ID0gZmxpcEZvcldyaXRpbmdN
b2RlRm9yQ2hpbGQodG9SZW5kZXJUYWJsZUNlbGwoY2hpbGQpLCBhY2N1bXVsYXRlZE9mZnNldCk7
Ci0gICAgICAgICAgICBpZiAoY2hpbGQtPm5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9j
YXRpb25JbkNvbnRhaW5lciwgY2VsbFBvaW50LCBhY3Rpb24pKSB7CisgICAgICAgIGlmIChjZWxs
LT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKSB7CisgICAgICAgICAgICBMYXlvdXRQb2ludCBjZWxs
UG9pbnQgPSBmbGlwRm9yV3JpdGluZ01vZGVGb3JDaGlsZChjZWxsLCBhY2N1bXVsYXRlZE9mZnNl
dCk7CisgICAgICAgICAgICBpZiAoY2VsbC0+bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBs
b2NhdGlvbkluQ29udGFpbmVyLCBjZWxsUG9pbnQsIGFjdGlvbikpIHsKICAgICAgICAgICAgICAg
ICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgp
IC0gdG9MYXlvdXRTaXplKGNlbGxQb2ludCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgfQpAQCAtMjQ2LDE2ICsyNDEsMTIgQEAgdm9pZCBSZW5kZXJUYWJsZVJv
dzo6cGFpbnQoUGFpbnRJbmZvJiBwYQogICAgIEFTU0VSVChoYXNTZWxmUGFpbnRpbmdMYXllcigp
KTsKIAogICAgIHBhaW50T3V0bGluZUZvclJvd0lmTmVlZGVkKHBhaW50SW5mbywgcGFpbnRPZmZz
ZXQpOwotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7
IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKGNoaWxkLT5pc1Rh
YmxlQ2VsbCgpKSB7Ci0gICAgICAgICAgICAvLyBQYWludCB0aGUgcm93IGJhY2tncm91bmQgYmVo
aW5kIHRoZSBjZWxsLgotICAgICAgICAgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBo
YXNlQmxvY2tCYWNrZ3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlQ2hpbGRC
bG9ja0JhY2tncm91bmQpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIGNlbGwg
PSB0b1JlbmRlclRhYmxlQ2VsbChjaGlsZCk7Ci0gICAgICAgICAgICAgICAgY2VsbC0+cGFpbnRC
YWNrZ3JvdW5kc0JlaGluZENlbGwocGFpbnRJbmZvLCBwYWludE9mZnNldCwgdGhpcyk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXRvUmVuZGVyQm94KGNoaWxkKS0+aGFzU2VsZlBh
aW50aW5nTGF5ZXIoKSkKLSAgICAgICAgICAgICAgICBjaGlsZC0+cGFpbnQocGFpbnRJbmZvLCBw
YWludE9mZnNldCk7Ci0gICAgICAgIH0KKyAgICBmb3IgKFJlbmRlclRhYmxlQ2VsbCogY2VsbCA9
IGZpcnN0Q2VsbCgpOyBjZWxsOyBjZWxsID0gY2VsbC0+bmV4dENlbGwoKSkgeworICAgICAgICAv
LyBQYWludCB0aGUgcm93IGJhY2tncm91bmQgYmVoaW5kIHRoZSBjZWxsLgorICAgICAgICBpZiAo
cGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQgfHwgcGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCkKKyAgICAgICAgICAgIGNl
bGwtPnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKHBhaW50SW5mbywgcGFpbnRPZmZzZXQsIHRo
aXMpOworICAgICAgICBpZiAoIWNlbGwtPmhhc1NlbGZQYWludGluZ0xheWVyKCkpCisgICAgICAg
ICAgICBjZWxsLT5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICB9CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCShyZXZpc2lvbiAx
NTYzMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTIgQEAgY2xhc3MgUmVuZGVyVGFibGVSb3cgRklOQUwg
OiBwdWJsaWMgUmVuZAogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlclRhYmxlUm93KEVsZW1l
bnQqKTsKIAorICAgIFJlbmRlclRhYmxlUm93KiBuZXh0Um93KCkgY29uc3Q7CisgICAgUmVuZGVy
VGFibGVSb3cqIHByZXZpb3VzUm93KCkgY29uc3Q7CisKKyAgICBSZW5kZXJUYWJsZUNlbGwqIGZp
cnN0Q2VsbCgpIGNvbnN0OworICAgIFJlbmRlclRhYmxlQ2VsbCogbGFzdENlbGwoKSBjb25zdDsK
KwogICAgIFJlbmRlclRhYmxlU2VjdGlvbiogc2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRvUmVu
ZGVyVGFibGVTZWN0aW9uKHBhcmVudCgpKTsgfQogICAgIFJlbmRlclRhYmxlKiB0YWJsZSgpIGNv
bnN0IHsgcmV0dXJuIHRvUmVuZGVyVGFibGUocGFyZW50KCktPnBhcmVudCgpKTsgfQogCkBAIC04
NCw2ICs5MCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJP
YmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgT1ZFUlJJREU7CiAK
KyAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRU
ZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJS
SURFOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIChpc0Fub255bW91cygpIHx8IGlzUHNldWRvRWxlbWVudCgp
KSA/ICJSZW5kZXJUYWJsZVJvdyAoYW5vbnltb3VzKSIgOiAiUmVuZGVyVGFibGVSb3ciOyB9CiAK
QEAgLTk0LDcgKzEwMiw2IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNv
bnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9u
SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVz
dEFjdGlvbikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIGhhc092ZXJmbG93Q2xpcCgpIHx8IGhhc1RyYW5zZm9ybSgp
IHx8IGhhc0hpZGRlbkJhY2tmYWNlKCkgfHwgaGFzQ2xpcFBhdGgoKSB8fCBjcmVhdGVzR3JvdXAo
KTsgfQogCkBAIC0xMDQsNiArMTExLDExIEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQg
c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUpIE9WRVJSSURFOwogCisgICAgdm9pZCBmaXJzdENoaWxkKCkgY29uc3QgV1RGX0RFTEVURURf
RlVOQ1RJT047CisgICAgdm9pZCBsYXN0Q2hpbGQoKSBjb25zdCBXVEZfREVMRVRFRF9GVU5DVElP
TjsKKyAgICB2b2lkIG5leHRTaWJsaW5nKCkgY29uc3QgV1RGX0RFTEVURURfRlVOQ1RJT047Cisg
ICAgdm9pZCBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCBXVEZfREVMRVRFRF9GVU5DVElPTjsKKwog
ICAgIHVuc2lnbmVkIG1fcm93SW5kZXggOiAzMTsKIH07CiAKQEAgLTEyMiw2ICsxMzQsMjYgQEAg
aW5saW5lIGNvbnN0IFJlbmRlclRhYmxlUm93KiB0b1JlbmRlclRhYgogLy8gVGhpcyB3aWxsIGNh
dGNoIGFueW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBjYXN0Lgogdm9pZCB0b1JlbmRlclRhYmxl
Um93KGNvbnN0IFJlbmRlclRhYmxlUm93Kik7CiAKK2lubGluZSBSZW5kZXJUYWJsZVJvdyogUmVu
ZGVyVGFibGVTZWN0aW9uOjpmaXJzdFJvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvUmVuZGVy
VGFibGVSb3coUmVuZGVyQm94OjpmaXJzdENoaWxkKCkpOworfQorCitpbmxpbmUgUmVuZGVyVGFi
bGVSb3cqIFJlbmRlclRhYmxlU2VjdGlvbjo6bGFzdFJvdygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHRvUmVuZGVyVGFibGVSb3coUmVuZGVyQm94OjpsYXN0Q2hpbGQoKSk7Cit9CisKK2lubGluZSBS
ZW5kZXJUYWJsZVJvdyogUmVuZGVyVGFibGVSb3c6Om5leHRSb3coKSBjb25zdAoreworICAgIHJl
dHVybiB0b1JlbmRlclRhYmxlUm93KFJlbmRlckJveDo6bmV4dFNpYmxpbmcoKSk7Cit9CisKK2lu
bGluZSBSZW5kZXJUYWJsZVJvdyogUmVuZGVyVGFibGVSb3c6OnByZXZpb3VzUm93KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gdG9SZW5kZXJUYWJsZVJvdyhSZW5kZXJCb3g6OnByZXZpb3VzU2libGlu
ZygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUmVuZGVyVGFi
bGVSb3dfaApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5jcHAJKHJldmlzaW9uIDE1NjMzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsMTEgKzEyOCwx
MSBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2hpbGQoUmVuZGVyCiAgICAgaWYgKCFj
aGlsZC0+aXNUYWJsZVJvdygpKSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogbGFzdCA9IGJlZm9y
ZUNoaWxkOwogICAgICAgICBpZiAoIWxhc3QpCi0gICAgICAgICAgICBsYXN0ID0gbGFzdENoaWxk
KCk7CisgICAgICAgICAgICBsYXN0ID0gbGFzdFJvdygpOwogICAgICAgICBpZiAobGFzdCAmJiBs
YXN0LT5pc0Fub255bW91cygpICYmICFsYXN0LT5pc0JlZm9yZU9yQWZ0ZXJDb250ZW50KCkpIHsK
ICAgICAgICAgICAgIFJlbmRlclRhYmxlUm93KiByb3cgPSB0b1JlbmRlclRhYmxlUm93KGxhc3Qp
OwogICAgICAgICAgICAgaWYgKGJlZm9yZUNoaWxkID09IHJvdykKLSAgICAgICAgICAgICAgICBi
ZWZvcmVDaGlsZCA9IHJvdy0+Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAgICAgIGJlZm9yZUNo
aWxkID0gcm93LT5maXJzdENlbGwoKTsKICAgICAgICAgICAgIHJvdy0+YWRkQ2hpbGQoY2hpbGQs
IGJlZm9yZUNoaWxkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNzE5LDcg
KzcxOSw3IEBAIGludCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNPdXRlckJvcmRlckIKICAgICBp
ZiAoc2Iuc3R5bGUoKSA+IEJISURERU4pCiAgICAgICAgIGJvcmRlcldpZHRoID0gc2Iud2lkdGgo
KTsKIAotICAgIGNvbnN0IEJvcmRlclZhbHVlJiByYiA9IGZpcnN0Q2hpbGQoKS0+c3R5bGUoKS0+
Ym9yZGVyQmVmb3JlKCk7CisgICAgY29uc3QgQm9yZGVyVmFsdWUmIHJiID0gZmlyc3RSb3coKS0+
c3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCk7CiAgICAgaWYgKHJiLnN0eWxlKCkgPT0gQkhJRERFTikK
ICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChyYi5zdHlsZSgpID4gQkhJRERFTiAmJiByYi53
aWR0aCgpID4gYm9yZGVyV2lkdGgpCkBAIC03NzAsNyArNzcwLDcgQEAgaW50IFJlbmRlclRhYmxl
U2VjdGlvbjo6Y2FsY091dGVyQm9yZGVyQQogICAgIGlmIChzYi5zdHlsZSgpID4gQkhJRERFTikK
ICAgICAgICAgYm9yZGVyV2lkdGggPSBzYi53aWR0aCgpOwogCi0gICAgY29uc3QgQm9yZGVyVmFs
dWUmIHJiID0gbGFzdENoaWxkKCktPnN0eWxlKCktPmJvcmRlckFmdGVyKCk7CisgICAgY29uc3Qg
Qm9yZGVyVmFsdWUmIHJiID0gbGFzdFJvdygpLT5zdHlsZSgpLT5ib3JkZXJBZnRlcigpOwogICAg
IGlmIChyYi5zdHlsZSgpID09IEJISURERU4pCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAo
cmIuc3R5bGUoKSA+IEJISURERU4gJiYgcmIud2lkdGgoKSA+IGJvcmRlcldpZHRoKQpAQCAtMTIy
MywyNiArMTIyMywxOCBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6cmVjYWxjQ2VsbHMoKQog
ICAgIG1fY1JvdyA9IDA7CiAgICAgbV9ncmlkLmNsZWFyKCk7CiAKLSAgICBmb3IgKFJlbmRlck9i
amVjdCogcm93ID0gZmlyc3RDaGlsZCgpOyByb3c7IHJvdyA9IHJvdy0+bmV4dFNpYmxpbmcoKSkg
ewotICAgICAgICBpZiAocm93LT5pc1RhYmxlUm93KCkpIHsKLSAgICAgICAgICAgIHVuc2lnbmVk
IGluc2VydGlvblJvdyA9IG1fY1JvdzsKLSAgICAgICAgICAgIG1fY1JvdysrOwotICAgICAgICAg
ICAgbV9jQ29sID0gMDsKLSAgICAgICAgICAgIGVuc3VyZVJvd3MobV9jUm93KTsKLQotICAgICAg
ICAgICAgUmVuZGVyVGFibGVSb3cqIHRhYmxlUm93ID0gdG9SZW5kZXJUYWJsZVJvdyhyb3cpOwot
ICAgICAgICAgICAgbV9ncmlkW2luc2VydGlvblJvd10ucm93UmVuZGVyZXIgPSB0YWJsZVJvdzsK
LSAgICAgICAgICAgIHRhYmxlUm93LT5zZXRSb3dJbmRleChpbnNlcnRpb25Sb3cpOwotICAgICAg
ICAgICAgc2V0Um93TG9naWNhbEhlaWdodFRvUm93U3R5bGVMb2dpY2FsSGVpZ2h0SWZOb3RSZWxh
dGl2ZShtX2dyaWRbaW5zZXJ0aW9uUm93XSk7CisgICAgZm9yIChSZW5kZXJUYWJsZVJvdyogcm93
ID0gZmlyc3RSb3coKTsgcm93OyByb3cgPSByb3ctPm5leHRSb3coKSkgeworICAgICAgICB1bnNp
Z25lZCBpbnNlcnRpb25Sb3cgPSBtX2NSb3c7CisgICAgICAgIG1fY1JvdysrOworICAgICAgICBt
X2NDb2wgPSAwOworICAgICAgICBlbnN1cmVSb3dzKG1fY1Jvdyk7CiAKLSAgICAgICAgICAgIGZv
ciAoUmVuZGVyT2JqZWN0KiBjZWxsID0gdGFibGVSb3ctPmZpcnN0Q2hpbGQoKTsgY2VsbDsgY2Vs
bCA9IGNlbGwtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWNlbGwtPmlz
VGFibGVDZWxsKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBtX2dy
aWRbaW5zZXJ0aW9uUm93XS5yb3dSZW5kZXJlciA9IHJvdzsKKyAgICAgICAgcm93LT5zZXRSb3dJ
bmRleChpbnNlcnRpb25Sb3cpOworICAgICAgICBzZXRSb3dMb2dpY2FsSGVpZ2h0VG9Sb3dTdHls
ZUxvZ2ljYWxIZWlnaHRJZk5vdFJlbGF0aXZlKG1fZ3JpZFtpbnNlcnRpb25Sb3ddKTsKIAotICAg
ICAgICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCogdGFibGVDZWxsID0gdG9SZW5kZXJUYWJsZUNl
bGwoY2VsbCk7Ci0gICAgICAgICAgICAgICAgYWRkQ2VsbCh0YWJsZUNlbGwsIHRhYmxlUm93KTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBmb3IgKFJlbmRlclRhYmxlQ2VsbCog
Y2VsbCA9IHJvdy0+Zmlyc3RDZWxsKCk7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0Q2VsbCgpKQor
ICAgICAgICAgICAgYWRkQ2VsbChjZWxsLCByb3cpOwogICAgIH0KIAogICAgIG1fZ3JpZC5zaHJp
bmtUb0ZpdCgpOwpAQCAtMTI1NywxMiArMTI0OSw4IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9u
Ojpyb3dMb2dpY2FsSGVpZ2gKIAogICAgIHNldFJvd0xvZ2ljYWxIZWlnaHRUb1Jvd1N0eWxlTG9n
aWNhbEhlaWdodElmTm90UmVsYXRpdmUobV9ncmlkW3Jvd0luZGV4XSk7CiAKLSAgICBmb3IgKFJl
bmRlck9iamVjdCogY2VsbCA9IG1fZ3JpZFtyb3dJbmRleF0ucm93UmVuZGVyZXItPmZpcnN0Q2hp
bGQoKTsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKCFj
ZWxsLT5pc1RhYmxlQ2VsbCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgdXBk
YXRlTG9naWNhbEhlaWdodEZvckNlbGwobV9ncmlkW3Jvd0luZGV4XSwgdG9SZW5kZXJUYWJsZUNl
bGwoY2VsbCkpOwotICAgIH0KKyAgICBmb3IgKFJlbmRlclRhYmxlQ2VsbCogY2VsbCA9IG1fZ3Jp
ZFtyb3dJbmRleF0ucm93UmVuZGVyZXItPmZpcnN0Q2VsbCgpOyBjZWxsOyBjZWxsID0gY2VsbC0+
bmV4dENlbGwoKSkKKyAgICAgICAgdXBkYXRlTG9naWNhbEhlaWdodEZvckNlbGwobV9ncmlkW3Jv
d0luZGV4XSwgY2VsbCk7CiB9CiAKIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzZXROZWVkc0Nl
bGxSZWNhbGMoKQpAQCAtMTM0OCw3ICsxMzM2LDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246
OnNwbGl0Q29sdW1uKHVucwogYm9vbCBSZW5kZXJUYWJsZVNlY3Rpb246Om5vZGVBdFBvaW50KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0
IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQm
IGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uIGFjdGlvbikKIHsKICAgICAvLyBJZiB3
ZSBoYXZlIG5vIGNoaWxkcmVuIHRoZW4gd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgotICAgIGlmICgh
Zmlyc3RDaGlsZCgpKQorICAgIGlmICghZmlyc3RSb3coKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgLy8gVGFibGUgc2VjdGlvbnMgY2Fubm90IGV2ZXIgYmUgaGl0IHRlc3RlZC4gIEVm
ZmVjdGl2ZWx5IHRoZXkgZG8gbm90IGV4aXN0LgpAQCAtMTM1OSwxNCArMTM0NywxNCBAQCBib29s
IFJlbmRlclRhYmxlU2VjdGlvbjo6bm9kZUF0UG9pbnQoY29uCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmIChoYXNPdmVyZmxvd2luZ0NlbGwoKSkgewotICAgICAgICBmb3IgKFJlbmRl
ck9iamVjdCogY2hpbGQgPSBsYXN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnByZXZp
b3VzU2libGluZygpKSB7CisgICAgICAgIGZvciAoUmVuZGVyVGFibGVSb3cqIHJvdyA9IGxhc3RS
b3coKTsgcm93OyByb3cgPSByb3ctPnByZXZpb3VzUm93KCkpIHsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSBoYXZlIHRvIHNraXAgb3ZlciBpbmxpbmUgZmxvd3MsIHNpbmNlIHRoZXkgY2FuIHNo
b3cgdXAgaW5zaWRlIHRhYmxlIHJvd3MKICAgICAgICAgICAgIC8vIGF0IHRoZSBtb21lbnQgKGEg
ZGVtb3RlZCBpbmxpbmUgPGZvcm0+IGZvciBleGFtcGxlKS4gSWYgd2UgZXZlciBpbXBsZW1lbnQg
YQogICAgICAgICAgICAgLy8gdGFibGUtc3BlY2lmaWMgaGl0LXRlc3QgbWV0aG9kICh3aGljaCB3
ZSBzaG91bGQgZG8gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgYW55d2F5KSwKICAgICAgICAgICAg
IC8vIHRoZW4gd2UgY2FuIHJlbW92ZSB0aGlzIGNoZWNrLgotICAgICAgICAgICAgaWYgKGNoaWxk
LT5pc0JveCgpICYmICF0b1JlbmRlckJveChjaGlsZCktPmhhc1NlbGZQYWludGluZ0xheWVyKCkp
IHsKLSAgICAgICAgICAgICAgICBMYXlvdXRQb2ludCBjaGlsZFBvaW50ID0gZmxpcEZvcldyaXRp
bmdNb2RlRm9yQ2hpbGQodG9SZW5kZXJCb3goY2hpbGQpLCBhZGp1c3RlZExvY2F0aW9uKTsKLSAg
ICAgICAgICAgICAgICBpZiAoY2hpbGQtPm5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9j
YXRpb25JbkNvbnRhaW5lciwgY2hpbGRQb2ludCwgYWN0aW9uKSkgeworICAgICAgICAgICAgaWYg
KHJvdy0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgeworICAgICAgICAgICAgICAgIExheW91dFBv
aW50IGNoaWxkUG9pbnQgPSBmbGlwRm9yV3JpdGluZ01vZGVGb3JDaGlsZChyb3csIGFkanVzdGVk
TG9jYXRpb24pOworICAgICAgICAgICAgICAgIGlmIChyb3ctPm5vZGVBdFBvaW50KHJlcXVlc3Qs
IHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgY2hpbGRQb2ludCwgYWN0aW9uKSkgewogICAg
ICAgICAgICAgICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgdG9MYXlvdXRQb2lu
dChsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkgLSBjaGlsZFBvaW50KSk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgJKHJldmlzaW9uIDE1NjMz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFJlbmRlclRhYmxlUm93OworCiBlbnVtIENvbGxhcHNlZEJvcmRlclNpZGUgewogICAgIENC
U0JlZm9yZSwKICAgICBDQlNBZnRlciwKQEAgLTY1LDYgKzY3LDkgQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IFJlbmRlclRhYmxlU2VjdGlvbihFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVuZGVy
VGFibGVTZWN0aW9uKCk7CiAKKyAgICBSZW5kZXJUYWJsZVJvdyogZmlyc3RSb3coKSBjb25zdDsK
KyAgICBSZW5kZXJUYWJsZVJvdyogbGFzdFJvdygpIGNvbnN0OworCiAgICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQg
PSAwKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJveEJhc2VsaW5lKCkg
Y29uc3QgT1ZFUlJJREU7CkBAIC0yMzgsNiArMjQzLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
c2V0TG9naWNhbFBvc2l0aW9uRm9yQ2VsbChSZW5kZXJUYWJsZUNlbGwqLCB1bnNpZ25lZCBlZmZl
Y3RpdmVDb2x1bW4pIGNvbnN0OwogCisgICAgdm9pZCBmaXJzdENoaWxkKCkgY29uc3QgV1RGX0RF
TEVURURfRlVOQ1RJT047CisgICAgdm9pZCBsYXN0Q2hpbGQoKSBjb25zdCBXVEZfREVMRVRFRF9G
VU5DVElPTjsKKwogICAgIFZlY3RvcjxSb3dTdHJ1Y3Q+IG1fZ3JpZDsKICAgICBWZWN0b3I8aW50
PiBtX3Jvd1BvczsKIAo=
</data>
<flag name="review"
          id="234733"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>