<?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>102950</bug_id>
          
          <creation_ts>2012-11-21 09:22:42 -0800</creation_ts>
          <short_desc>Replace NodeRendererFactory class with a function</short_desc>
          <delta_ts>2012-11-21 11:00:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>dglazkov</cc>
    
    <cc>kling</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>773022</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-21 09:22:42 -0800</bug_when>
    <thetext>It is an unnecessary abstraction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773025</commentid>
    <comment_count>1</comment_count>
      <attachid>175462</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-21 09:28:00 -0800</bug_when>
    <thetext>Created attachment 175462
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773047</commentid>
    <comment_count>2</comment_count>
      <attachid>175462</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-21 09:52:32 -0800</bug_when>
    <thetext>Comment on attachment 175462
patch

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

&gt; Source/WebCore/dom/NodeRenderingContext.h:61
&gt; +    const RenderStyle* style() const;

Yay const!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773064</commentid>
    <comment_count>3</comment_count>
      <attachid>175472</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-21 10:05:54 -0800</bug_when>
    <thetext>Created attachment 175472
patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773070</commentid>
    <comment_count>4</comment_count>
      <attachid>175472</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-21 10:09:33 -0800</bug_when>
    <thetext>Comment on attachment 175472
patch 2

Rejecting attachment 175472 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/14965016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773121</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-21 11:00:35 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/135419</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175462</attachid>
            <date>2012-11-21 09:28:00 -0800</date>
            <delta_ts>2012-11-21 10:05:54 -0800</delta_ts>
            <desc>patch</desc>
            <filename>eliminate-noderendererfactory.patch</filename>
            <type>text/plain</type>
            <size>9399</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTQxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTExLTIxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE5vZGVSZW5kZXJl
ckZhY3RvcnkgY2xhc3Mgd2l0aCBhIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGlmeSB0aGUgY29kZSBieSB0dXJuaW5nIE5vZGVS
ZW5kZXJlckZhY3Rvcnkgc2luZ2xlLXVzZSBjbGFzcyBpbnRvIGZ1bmN0aW9uIG9mIE5vZGVSZW5k
ZXJpbmdDb250ZXh0LgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCk6CisgICAgICAgICogZG9tL05vZGVSZW5k
ZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0Ojptb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVJlbmRlcmVySWZO
ZWVkZWQpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAo
Tm9kZVJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0Nv
bnRleHQ6OnN0eWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTExLTIxICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEluLWJhbmQgdGV4dCB0
cmFja3MgaW5mcmFzdHJ1Y3R1cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDEzNTI3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5
OSw3ICsxMzk5LDkgQEAgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZUZvclJlbmRlcgog
CiB2b2lkIE5vZGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQogewotICAgIE5vZGVSZW5kZXJl
ckZhY3RvcnkodGhpcykuY3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpOworICAgIGlmICghZG9jdW1l
bnQoKS0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKCkpCisgICAgICAgIHJldHVybjsKKyAgICBOb2Rl
UmVuZGVyaW5nQ29udGV4dCh0aGlzKS5jcmVhdGVSZW5kZXJlcklmTmVlZGVkKCk7CiB9CiAKIGJv
b2wgTm9kZTo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29u
dGV4dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNw
cAkocmV2aXNpb24gMTM1MjcwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQCB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRl
eHQoTm9kZSogbm9kZSkKICAgICA6IG1fbm9kZShub2RlKQotICAgICwgbV9zdHlsZSgwKQogICAg
ICwgbV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKIHsKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXI6OmZpbmRQYXJlbnQobV9ub2RlLCAmbV9wYXJlbnREZXRhaWxzKTsKQEAgLTY5LDE3ICs2OCw2
IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojp+Tm9kZVJlbmRlcmluZ0NvbnQKIHsKIH0KIAotdm9p
ZCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
c3R5bGUpCi17Ci0gICAgbV9zdHlsZSA9IHN0eWxlOwotICAgIG1vdmVUb0Zsb3dUaHJlYWRJZk5l
ZWRlZCgpOwotfQotCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBOb2RlUmVuZGVyaW5nQ29udGV4
dDo6cmVsZWFzZVN0eWxlKCkKLXsKLSAgICByZXR1cm4gbV9zdHlsZS5yZWxlYXNlKCk7Ci19Ci0K
IFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0
CiB7CiAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX25vZGUtPnJlbmRlcmVyKCkp
CkBAIC0xNTYsMTAgKzE0NCwxMSBAQCBib29sIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzaG91bGRD
cmVhdGVSCiAKIHZvaWQgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om1vdmVUb0Zsb3dUaHJlYWRJZk5l
ZWRlZCgpCiB7CisgICAgQVNTRVJUKG1fc3R5bGUpOwogICAgIGlmICghbV9ub2RlLT5kb2N1bWVu
dCgpLT5jc3NSZWdpb25zRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1f
bm9kZS0+aXNFbGVtZW50Tm9kZSgpIHx8ICFtX3N0eWxlIHx8IG1fc3R5bGUtPmZsb3dUaHJlYWQo
KS5pc0VtcHR5KCkpCisgICAgaWYgKCFtX25vZGUtPmlzRWxlbWVudE5vZGUoKSB8fCBtX3N0eWxl
LT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhN
RTogRG8gbm90IGNvbGxlY3QgZWxlbWVudHMgaWYgdGhleSBhcmUgaW4gc2hhZG93IHRyZWUuCkBA
IC0xOTAsMjggKzE3OSw2IEBAIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OmlzT25VcHBlckVu
Y2EKICAgICByZXR1cm4gbV9ub2RlLT5wYXJlbnROb2RlKCkgJiYgbV9ub2RlLT5wYXJlbnROb2Rl
KCktPmlzU2hhZG93Um9vdCgpOwogfQogCi1Ob2RlUmVuZGVyZXJGYWN0b3J5OjpOb2RlUmVuZGVy
ZXJGYWN0b3J5KE5vZGUqIG5vZGUpCi0gICAgOiBtX2NvbnRleHQobm9kZSkKLXsKLX0KLQotUmVu
ZGVyT2JqZWN0KiBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcigpCi17Ci0gICAg
Tm9kZSogbm9kZSA9IG1fY29udGV4dC5ub2RlKCk7Ci0gICAgUmVuZGVyT2JqZWN0KiBuZXdSZW5k
ZXJlciA9IG5vZGUtPmNyZWF0ZVJlbmRlcmVyKG5vZGUtPmRvY3VtZW50KCktPnJlbmRlckFyZW5h
KCksIG1fY29udGV4dC5zdHlsZSgpKTsKLSAgICBpZiAoIW5ld1JlbmRlcmVyKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIGlmICghbV9jb250ZXh0LnBhcmVudFJlbmRlcmVyKCktPmlzQ2hpbGRB
bGxvd2VkKG5ld1JlbmRlcmVyLCBtX2NvbnRleHQuc3R5bGUoKSkpIHsKLSAgICAgICAgbmV3UmVu
ZGVyZXItPmRlc3Ryb3koKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgbm9kZS0+
c2V0UmVuZGVyZXIobmV3UmVuZGVyZXIpOwotICAgIG5ld1JlbmRlcmVyLT5zZXRBbmltYXRhYmxl
U3R5bGUobV9jb250ZXh0LnJlbGVhc2VTdHlsZSgpKTsgLy8gc2V0QW5pbWF0YWJsZVN0eWxlKCkg
Y2FuIGRlcGVuZCBvbiByZW5kZXJlcigpIGFscmVhZHkgYmVpbmcgc2V0LgotICAgIHJldHVybiBu
ZXdSZW5kZXJlcjsKLX0KLQogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKIHN0YXRpYyB2b2lk
IGFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQs
IFJlbmRlck9iamVjdComIHBhcmVudFJlbmRlcmVyLCBSZW5kZXJPYmplY3QqJiBuZXh0UmVuZGVy
ZXIpCiB7CkBAIC0yMzIsNTUgKzE5OSw1MiBAQCBzdGF0aWMgdm9pZCBhZGp1c3RJbnNlcnRpb25Q
b2ludEZvclRvcExhCiB9CiAjZW5kaWYKIAotdm9pZCBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVh
dGVSZW5kZXJlcklmTmVlZGVkKCkKK3ZvaWQgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVJl
bmRlcmVySWZOZWVkZWQoKQogewotICAgIE5vZGUqIG5vZGUgPSBtX2NvbnRleHQubm9kZSgpOwot
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1
bWVudC0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFT
U0VSVCghbm9kZS0+cmVuZGVyZXIoKSk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9ub2Rl
LT5kb2N1bWVudCgpOworICAgIEFTU0VSVCghbV9ub2RlLT5yZW5kZXJlcigpKTsKICAgICBBU1NF
UlQoZG9jdW1lbnQtPnNob3VsZENyZWF0ZVJlbmRlcmVycygpKTsKIAotICAgIGlmICghbV9jb250
ZXh0LnNob3VsZENyZWF0ZVJlbmRlcmVyKCkpCisgICAgaWYgKCFzaG91bGRDcmVhdGVSZW5kZXJl
cigpKQogICAgICAgICByZXR1cm47CisgICAgRWxlbWVudCogZWxlbWVudCA9IG1fbm9kZS0+aXNF
bGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KG1fbm9kZSkgOiAwOworICAgIAorICAgIG1fc3R5bGUg
PSBlbGVtZW50ID8gZWxlbWVudC0+c3R5bGVGb3JSZW5kZXJlcigpIDogcGFyZW50UmVuZGVyZXIo
KS0+c3R5bGUoKTsKKyAgICBBU1NFUlQobV9zdHlsZSk7CiAKLSAgICBBU1NFUlQobV9jb250ZXh0
LnBhcmVudFJlbmRlcmVyKCkpOwotCi0gICAgRWxlbWVudCogZWxlbWVudCA9IG5vZGUtPmlzRWxl
bWVudE5vZGUoKSA/IHRvRWxlbWVudChub2RlKSA6IDA7Ci0gICAgaWYgKGVsZW1lbnQpCi0gICAg
ICAgIG1fY29udGV4dC5zZXRTdHlsZShlbGVtZW50LT5zdHlsZUZvclJlbmRlcmVyKCkpOwotICAg
IGVsc2UKLSAgICAgICAgbV9jb250ZXh0LnNldFN0eWxlKG1fY29udGV4dC5wYXJlbnRSZW5kZXJl
cigpLT5zdHlsZSgpKTsKLQotICAgIEFTU0VSVChtX2NvbnRleHQuc3R5bGUoKSk7CisgICAgbW92
ZVRvRmxvd1RocmVhZElmTmVlZGVkKCk7CiAKLSAgICBpZiAoIW5vZGUtPnJlbmRlcmVySXNOZWVk
ZWQobV9jb250ZXh0KSkgewotICAgICAgICBpZiAoZWxlbWVudCAmJiBtX2NvbnRleHQuc3R5bGUo
KS0+YWZmZWN0ZWRCeUVtcHR5KCkpCisgICAgaWYgKCFtX25vZGUtPnJlbmRlcmVySXNOZWVkZWQo
KnRoaXMpKSB7CisgICAgICAgIGlmIChlbGVtZW50ICYmIG1fc3R5bGUtPmFmZmVjdGVkQnlFbXB0
eSgpKQogICAgICAgICAgICAgZWxlbWVudC0+c2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIg
PSBtX2NvbnRleHQuaGFzRmxvd1RocmVhZFBhcmVudCgpID8gbV9jb250ZXh0LnBhcmVudEZsb3dS
ZW5kZXJlcigpIDogbV9jb250ZXh0LnBhcmVudFJlbmRlcmVyKCk7CisgICAgUmVuZGVyT2JqZWN0
KiBwYXJlbnRSZW5kZXJlciA9IG1fcGFyZW50Rmxvd1JlbmRlcmVyID8gbV9wYXJlbnRGbG93UmVu
ZGVyZXIgOiB0aGlzLT5wYXJlbnRSZW5kZXJlcigpOwogICAgIC8vIERvIG5vdCBjYWxsIG1fY29u
dGV4dC5uZXh0UmVuZGVyZXIoKSBoZXJlIGluIHRoZSBmaXJzdCBjbGF1c2UsIGJlY2F1c2UgaXQg
ZXhwZWN0cyB0byBoYXZlCiAgICAgLy8gdGhlIHJlbmRlcmVyIGFkZGVkIHRvIGl0cyBwYXJlbnQg
YWxyZWFkeS4KLSAgICBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlciA9IG1fY29udGV4dC5oYXNG
bG93VGhyZWFkUGFyZW50KCkgPyBtX2NvbnRleHQucGFyZW50Rmxvd1JlbmRlcmVyKCktPm5leHRS
ZW5kZXJlckZvck5vZGUobm9kZSkgOiBtX2NvbnRleHQubmV4dFJlbmRlcmVyKCk7CisgICAgUmVu
ZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXIgPSBtX3BhcmVudEZsb3dSZW5kZXJlciA/IG1fcGFyZW50
Rmxvd1JlbmRlcmVyLT5uZXh0UmVuZGVyZXJGb3JOb2RlKG1fbm9kZSkgOiB0aGlzLT5uZXh0UmVu
ZGVyZXIoKTsKIAogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKICAgICBpZiAoZWxlbWVudCAm
JiBlbGVtZW50LT5pc0luVG9wTGF5ZXIoKSkKICAgICAgICAgYWRqdXN0SW5zZXJ0aW9uUG9pbnRG
b3JUb3BMYXllckVsZW1lbnQoZWxlbWVudCwgcGFyZW50UmVuZGVyZXIsIG5leHRSZW5kZXJlcik7
CiAjZW5kaWYKIAotICAgIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJl
cigpOworICAgIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBtX25vZGUtPmNyZWF0ZVJlbmRl
cmVyKGRvY3VtZW50LT5yZW5kZXJBcmVuYSgpLCBtX3N0eWxlLmdldCgpKTsKKyAgICBpZiAoIW5l
d1JlbmRlcmVyKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFwYXJlbnRSZW5kZXJlci0+aXND
aGlsZEFsbG93ZWQobmV3UmVuZGVyZXIsIG1fc3R5bGUuZ2V0KCkpKSB7CisgICAgICAgIG5ld1Jl
bmRlcmVyLT5kZXN0cm95KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9ub2RlLT5z
ZXRSZW5kZXJlcihuZXdSZW5kZXJlcik7CisgICAgbmV3UmVuZGVyZXItPnNldEFuaW1hdGFibGVT
dHlsZShtX3N0eWxlLnJlbGVhc2UoKSk7IC8vIHNldEFuaW1hdGFibGVTdHlsZSgpIGNhbiBkZXBl
bmQgb24gcmVuZGVyZXIoKSBhbHJlYWR5IGJlaW5nIHNldC4KIAogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKLSAgICBpZiAoZG9jdW1lbnQtPndlYmtpdElzRnVsbFNjcmVlbigpICYmIGRvY3Vt
ZW50LT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSBub2RlKQorICAgIGlmIChk
b2N1bWVudC0+d2Via2l0SXNGdWxsU2NyZWVuKCkgJiYgZG9jdW1lbnQtPndlYmtpdEN1cnJlbnRG
dWxsU2NyZWVuRWxlbWVudCgpID09IG1fbm9kZSkKICAgICAgICAgbmV3UmVuZGVyZXIgPSBSZW5k
ZXJGdWxsU2NyZWVuOjp3cmFwUmVuZGVyZXIobmV3UmVuZGVyZXIsIHBhcmVudFJlbmRlcmVyLCBk
b2N1bWVudCk7CiAjZW5kaWYKLQogICAgIGlmICghbmV3UmVuZGVyZXIpCiAgICAgICAgIHJldHVy
bjsKLQogICAgIC8vIE5vdGU6IEFkZGluZyBuZXdSZW5kZXJlciBpbnN0ZWFkIG9mIHJlbmRlcmVy
KCkuIHJlbmRlcmVyKCkgbWF5IGJlIGEgY2hpbGQgb2YgbmV3UmVuZGVyZXIuCiAgICAgcGFyZW50
UmVuZGVyZXItPmFkZENoaWxkKG5ld1JlbmRlcmVyLCBuZXh0UmVuZGVyZXIpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzNTI3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICBOb2RlUmVuZGVyaW5nQ29udGV4
dChOb2RlKiwgUmVuZGVyU3R5bGUqKTsKICAgICB+Tm9kZVJlbmRlcmluZ0NvbnRleHQoKTsKIAor
ICAgIHZvaWQgY3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpOworCiAgICAgTm9kZSogbm9kZSgpIGNv
bnN0OwogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgp
IGNvbnN0OwogICAgIGJvb2wgcmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3Q7CkBAIC01Niwx
OSArNTgsMTYgQEAgcHVibGljOgogICAgIFJlbmRlck9iamVjdCogcHJldmlvdXNSZW5kZXJlcigp
IGNvbnN0OwogICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCgpIGNvbnN0OwogCi0g
ICAgUmVuZGVyU3R5bGUqIHN0eWxlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTdHlsZShQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPik7Ci0gICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gcmVsZWFzZVN0
eWxlKCk7CisgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKCkgY29uc3Q7CiAKICAgICBib29s
IHNob3VsZENyZWF0ZVJlbmRlcmVyKCkgY29uc3Q7CiAKICAgICBib29sIGlzT25VcHBlckVuY2Fw
c3VsYXRpb25Cb3VuZGFyeSgpIGNvbnN0OwogICAgIGJvb2wgaXNPbkVuY2Fwc3VsYXRpb25Cb3Vu
ZGFyeSgpIGNvbnN0OwotICAgIGJvb2wgaGFzRmxvd1RocmVhZFBhcmVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyOyB9Ci0gICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBw
YXJlbnRGbG93UmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudEZsb3dSZW5kZXJlcjsg
fQotICAgIHZvaWQgbW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKCk7CiAKIHByaXZhdGU6CisgICAg
dm9pZCBtb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQoKTsKKwogICAgIE5vZGUqIG1fbm9kZTsKICAg
ICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBhcmVudFRyYXZlcnNhbERldGFpbHMgbV9wYXJl
bnREZXRhaWxzOwogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zdHlsZTsKQEAgLTkxLDcgKzkw
LDcgQEAgaW5saW5lIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnJlc2V0UwogICAgIHJldHVy
biBtX3BhcmVudERldGFpbHMucmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7CiB9CiAKLWlubGluZSBS
ZW5kZXJTdHlsZSogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnN0eWxlKCkgY29uc3QKK2lubGluZSBj
b25zdCBSZW5kZXJTdHlsZSogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnN0eWxlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9zdHlsZS5nZXQoKTsKIH0KQEAgLTEwMSwyNiArMTAwLDYgQEAgaW5saW5l
IEluc2VydGlvblBvaW50KiBOb2RlUmVuZGVyaW5nQ29udAogICAgIHJldHVybiBtX3BhcmVudERl
dGFpbHMuaW5zZXJ0aW9uUG9pbnQoKTsKIH0KIAotY2xhc3MgTm9kZVJlbmRlcmVyRmFjdG9yeSB7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9kZVJlbmRlcmVyRmFjdG9yeSk7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgTm9kZVJlbmRlcmVy
RmFjdG9yeShOb2RlKik7Ci0KLSAgICBjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4
dCgpIGNvbnN0OwotICAgIHZvaWQgY3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpOwotCi1wcml2YXRl
OgotICAgIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoKTsKLQotICAgIE5vZGVSZW5kZXJp
bmdDb250ZXh0IG1fY29udGV4dDsKLX07Ci0KLWlubGluZSBjb25zdCBOb2RlUmVuZGVyaW5nQ29u
dGV4dCYgTm9kZVJlbmRlcmVyRmFjdG9yeTo6Y29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fY29udGV4dDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
</data>
<flag name="review"
          id="190919"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175472</attachid>
            <date>2012-11-21 10:05:54 -0800</date>
            <delta_ts>2012-11-21 10:21:35 -0800</delta_ts>
            <desc>patch 2</desc>
            <filename>eliminate-noderendererfactory-2.patch</filename>
            <type>text/plain</type>
            <size>9785</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTQxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTExLTIxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIE5vZGVSZW5kZXJl
ckZhY3RvcnkgY2xhc3Mgd2l0aCBhIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGlmeSB0aGUgY29kZSBieSB0dXJuaW5nIE5vZGVS
ZW5kZXJlckZhY3Rvcnkgc2luZ2xlLXVzZSBjbGFzcyBpbnRvIGZ1bmN0aW9uIG9mIE5vZGVSZW5k
ZXJpbmdDb250ZXh0LgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCk6CisgICAgICAgICogZG9tL05vZGVSZW5k
ZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0Ojptb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVJlbmRlcmVySWZO
ZWVkZWQpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAo
Tm9kZVJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0Nv
bnRleHQ6OnN0eWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTExLTIxICBBbmRyZXkg
THVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBDdHJsK0EgY2xvc2VzIGJyZWFrcG9pbnQgY29uZGl0aW9uIGVkaXRvcgpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAkocmV2aXNpb24gMTM1NDEyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzk5LDcgKzEzOTksOSBAQCBDb250YWluZXJOb2RlKiBO
b2RlOjpwYXJlbnROb2RlRm9yUmVuZGVyCiAKIHZvaWQgTm9kZTo6Y3JlYXRlUmVuZGVyZXJJZk5l
ZWRlZCgpCiB7Ci0gICAgTm9kZVJlbmRlcmVyRmFjdG9yeSh0aGlzKS5jcmVhdGVSZW5kZXJlcklm
TmVlZGVkKCk7CisgICAgaWYgKCFkb2N1bWVudCgpLT5zaG91bGRDcmVhdGVSZW5kZXJlcnMoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIE5vZGVSZW5kZXJpbmdDb250ZXh0KHRoaXMpLmNyZWF0ZVJl
bmRlcmVySWZOZWVkZWQoKTsKIH0KIAogYm9vbCBOb2RlOjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0
IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAxMzU0MTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Miw3ICs1Miw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIE5vZGVSZW5kZXJpbmdD
b250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAgIDogbV9ub2RlKG5v
ZGUpCi0gICAgLCBtX3N0eWxlKDApCiAgICAgLCBtX3BhcmVudEZsb3dSZW5kZXJlcigwKQogewog
ICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6ZmluZFBhcmVudChtX25vZGUsICZtX3BhcmVu
dERldGFpbHMpOwpAQCAtNjksMTcgKzY4LDYgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6On5Ob2Rl
UmVuZGVyaW5nQ29udAogewogfQogCi12b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzZXRTdHls
ZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKLXsKLSAgICBtX3N0eWxlID0gc3R5bGU7
Ci0gICAgbW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKCk7Ci19Ci0KLVBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IE5vZGVSZW5kZXJpbmdDb250ZXh0OjpyZWxlYXNlU3R5bGUoKQotewotICAgIHJldHVy
biBtX3N0eWxlLnJlbGVhc2UoKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKIHsKICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IG1fbm9kZS0+cmVuZGVyZXIoKSkKQEAgLTE0Miw4ICsxMzAsNyBAQCBSZW5kZXJPYmpl
Y3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlCiAKIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRl
eHQ6OnNob3VsZENyZWF0ZVJlbmRlcmVyKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fbm9kZS0+ZG9j
dW1lbnQoKS0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBBU1NFUlQobV9ub2RlLT5kb2N1bWVudCgpLT5zaG91bGRDcmVhdGVSZW5kZXJlcnMoKSk7
CiAgICAgaWYgKCFtX3BhcmVudERldGFpbHMubm9kZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IHRoaXMtPnBhcmVudFJlbmRlcmVy
KCk7CkBAIC0xNTgsMTAgKzE0NSwxMSBAQCBib29sIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzaG91
bGRDcmVhdGVSCiAKIHZvaWQgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om1vdmVUb0Zsb3dUaHJlYWRJ
Zk5lZWRlZCgpCiB7CisgICAgQVNTRVJUKG1fc3R5bGUpOwogICAgIGlmICghbV9ub2RlLT5kb2N1
bWVudCgpLT5jc3NSZWdpb25zRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fbm9kZS0+aXNFbGVtZW50Tm9kZSgpIHx8ICFtX3N0eWxlIHx8IG1fc3R5bGUtPmZsb3dUaHJl
YWQoKS5pc0VtcHR5KCkpCisgICAgaWYgKCFtX25vZGUtPmlzRWxlbWVudE5vZGUoKSB8fCBtX3N0
eWxlLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBG
SVhNRTogRG8gbm90IGNvbGxlY3QgZWxlbWVudHMgaWYgdGhleSBhcmUgaW4gc2hhZG93IHRyZWUu
CkBAIC0xOTIsMjggKzE4MCw2IEBAIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OmlzT25VcHBl
ckVuY2EKICAgICByZXR1cm4gbV9ub2RlLT5wYXJlbnROb2RlKCkgJiYgbV9ub2RlLT5wYXJlbnRO
b2RlKCktPmlzU2hhZG93Um9vdCgpOwogfQogCi1Ob2RlUmVuZGVyZXJGYWN0b3J5OjpOb2RlUmVu
ZGVyZXJGYWN0b3J5KE5vZGUqIG5vZGUpCi0gICAgOiBtX2NvbnRleHQobm9kZSkKLXsKLX0KLQot
UmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcigpCi17Ci0g
ICAgTm9kZSogbm9kZSA9IG1fY29udGV4dC5ub2RlKCk7Ci0gICAgUmVuZGVyT2JqZWN0KiBuZXdS
ZW5kZXJlciA9IG5vZGUtPmNyZWF0ZVJlbmRlcmVyKG5vZGUtPmRvY3VtZW50KCktPnJlbmRlckFy
ZW5hKCksIG1fY29udGV4dC5zdHlsZSgpKTsKLSAgICBpZiAoIW5ld1JlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIGlmICghbV9jb250ZXh0LnBhcmVudFJlbmRlcmVyKCktPmlzQ2hp
bGRBbGxvd2VkKG5ld1JlbmRlcmVyLCBtX2NvbnRleHQuc3R5bGUoKSkpIHsKLSAgICAgICAgbmV3
UmVuZGVyZXItPmRlc3Ryb3koKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgbm9k
ZS0+c2V0UmVuZGVyZXIobmV3UmVuZGVyZXIpOwotICAgIG5ld1JlbmRlcmVyLT5zZXRBbmltYXRh
YmxlU3R5bGUobV9jb250ZXh0LnJlbGVhc2VTdHlsZSgpKTsgLy8gc2V0QW5pbWF0YWJsZVN0eWxl
KCkgY2FuIGRlcGVuZCBvbiByZW5kZXJlcigpIGFscmVhZHkgYmVpbmcgc2V0LgotICAgIHJldHVy
biBuZXdSZW5kZXJlcjsKLX0KLQogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKIHN0YXRpYyB2
b2lkIGFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJFbGVtZW50KEVsZW1lbnQqIGVsZW1l
bnQsIFJlbmRlck9iamVjdComIHBhcmVudFJlbmRlcmVyLCBSZW5kZXJPYmplY3QqJiBuZXh0UmVu
ZGVyZXIpCiB7CkBAIC0yMzQsNTEgKzIwMCw1MiBAQCBzdGF0aWMgdm9pZCBhZGp1c3RJbnNlcnRp
b25Qb2ludEZvclRvcExhCiB9CiAjZW5kaWYKIAotdm9pZCBOb2RlUmVuZGVyZXJGYWN0b3J5Ojpj
cmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKK3ZvaWQgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZVJlbmRlcmVySWZOZWVkZWQoKQogewotICAgIE5vZGUqIG5vZGUgPSBtX2NvbnRleHQubm9kZSgp
OwotICAgIEFTU0VSVCghbm9kZS0+cmVuZGVyZXIoKSk7CisgICAgQVNTRVJUKCFtX25vZGUtPnJl
bmRlcmVyKCkpOwogCi0gICAgaWYgKCFtX2NvbnRleHQuc2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSkK
KyAgICBpZiAoIXNob3VsZENyZWF0ZVJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBF
bGVtZW50KiBlbGVtZW50ID0gbV9ub2RlLT5pc0VsZW1lbnROb2RlKCkgPyB0b0VsZW1lbnQobV9u
b2RlKSA6IDA7CisgICAgCisgICAgbV9zdHlsZSA9IGVsZW1lbnQgPyBlbGVtZW50LT5zdHlsZUZv
clJlbmRlcmVyKCkgOiBwYXJlbnRSZW5kZXJlcigpLT5zdHlsZSgpOworICAgIEFTU0VSVChtX3N0
eWxlKTsKIAotICAgIEFTU0VSVChtX2NvbnRleHQucGFyZW50UmVuZGVyZXIoKSk7Ci0KLSAgICBF
bGVtZW50KiBlbGVtZW50ID0gbm9kZS0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KG5vZGUp
IDogMDsKLSAgICBpZiAoZWxlbWVudCkKLSAgICAgICAgbV9jb250ZXh0LnNldFN0eWxlKGVsZW1l
bnQtPnN0eWxlRm9yUmVuZGVyZXIoKSk7Ci0gICAgZWxzZQotICAgICAgICBtX2NvbnRleHQuc2V0
U3R5bGUobV9jb250ZXh0LnBhcmVudFJlbmRlcmVyKCktPnN0eWxlKCkpOwotCi0gICAgQVNTRVJU
KG1fY29udGV4dC5zdHlsZSgpKTsKKyAgICBtb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQoKTsKIAot
ICAgIGlmICghbm9kZS0+cmVuZGVyZXJJc05lZWRlZChtX2NvbnRleHQpKSB7Ci0gICAgICAgIGlm
IChlbGVtZW50ICYmIG1fY29udGV4dC5zdHlsZSgpLT5hZmZlY3RlZEJ5RW1wdHkoKSkKKyAgICBp
ZiAoIW1fbm9kZS0+cmVuZGVyZXJJc05lZWRlZCgqdGhpcykpIHsKKyAgICAgICAgaWYgKGVsZW1l
bnQgJiYgbV9zdHlsZS0+YWZmZWN0ZWRCeUVtcHR5KCkpCiAgICAgICAgICAgICBlbGVtZW50LT5z
ZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAg
UmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IG1fY29udGV4dC5oYXNGbG93VGhyZWFkUGFy
ZW50KCkgPyBtX2NvbnRleHQucGFyZW50Rmxvd1JlbmRlcmVyKCkgOiBtX2NvbnRleHQucGFyZW50
UmVuZGVyZXIoKTsKKyAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gbV9wYXJlbnRG
bG93UmVuZGVyZXIgPyBtX3BhcmVudEZsb3dSZW5kZXJlciA6IHRoaXMtPnBhcmVudFJlbmRlcmVy
KCk7CiAgICAgLy8gRG8gbm90IGNhbGwgbV9jb250ZXh0Lm5leHRSZW5kZXJlcigpIGhlcmUgaW4g
dGhlIGZpcnN0IGNsYXVzZSwgYmVjYXVzZSBpdCBleHBlY3RzIHRvIGhhdmUKICAgICAvLyB0aGUg
cmVuZGVyZXIgYWRkZWQgdG8gaXRzIHBhcmVudCBhbHJlYWR5LgotICAgIFJlbmRlck9iamVjdCog
bmV4dFJlbmRlcmVyID0gbV9jb250ZXh0Lmhhc0Zsb3dUaHJlYWRQYXJlbnQoKSA/IG1fY29udGV4
dC5wYXJlbnRGbG93UmVuZGVyZXIoKS0+bmV4dFJlbmRlcmVyRm9yTm9kZShub2RlKSA6IG1fY29u
dGV4dC5uZXh0UmVuZGVyZXIoKTsKKyAgICBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlciA9IG1f
cGFyZW50Rmxvd1JlbmRlcmVyID8gbV9wYXJlbnRGbG93UmVuZGVyZXItPm5leHRSZW5kZXJlckZv
ck5vZGUobV9ub2RlKSA6IHRoaXMtPm5leHRSZW5kZXJlcigpOwogCiAjaWYgRU5BQkxFKERJQUxP
R19FTEVNRU5UKQogICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlzSW5Ub3BMYXllcigpKQog
ICAgICAgICBhZGp1c3RJbnNlcnRpb25Qb2ludEZvclRvcExheWVyRWxlbWVudChlbGVtZW50LCBw
YXJlbnRSZW5kZXJlciwgbmV4dFJlbmRlcmVyKTsKICNlbmRpZgogCi0gICAgUmVuZGVyT2JqZWN0
KiBuZXdSZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyKCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gbV9ub2RlLT5kb2N1bWVudCgpOworICAgIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBt
X25vZGUtPmNyZWF0ZVJlbmRlcmVyKGRvY3VtZW50LT5yZW5kZXJBcmVuYSgpLCBtX3N0eWxlLmdl
dCgpKTsKKyAgICBpZiAoIW5ld1JlbmRlcmVyKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFw
YXJlbnRSZW5kZXJlci0+aXNDaGlsZEFsbG93ZWQobmV3UmVuZGVyZXIsIG1fc3R5bGUuZ2V0KCkp
KSB7CisgICAgICAgIG5ld1JlbmRlcmVyLT5kZXN0cm95KCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgbV9ub2RlLT5zZXRSZW5kZXJlcihuZXdSZW5kZXJlcik7CisgICAgbmV3UmVuZGVy
ZXItPnNldEFuaW1hdGFibGVTdHlsZShtX3N0eWxlLnJlbGVhc2UoKSk7IC8vIHNldEFuaW1hdGFi
bGVTdHlsZSgpIGNhbiBkZXBlbmQgb24gcmVuZGVyZXIoKSBhbHJlYWR5IGJlaW5nIHNldC4KIAog
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBub2Rl
LT5kb2N1bWVudCgpOwotICAgIGlmIChkb2N1bWVudC0+d2Via2l0SXNGdWxsU2NyZWVuKCkgJiYg
ZG9jdW1lbnQtPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IG5vZGUpCisgICAg
aWYgKGRvY3VtZW50LT53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVudC0+d2Via2l0Q3Vy
cmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgPT0gbV9ub2RlKSB7CiAgICAgICAgIG5ld1JlbmRlcmVy
ID0gUmVuZGVyRnVsbFNjcmVlbjo6d3JhcFJlbmRlcmVyKG5ld1JlbmRlcmVyLCBwYXJlbnRSZW5k
ZXJlciwgZG9jdW1lbnQpOworICAgICAgICBpZiAoIW5ld1JlbmRlcmVyKQorICAgICAgICAgICAg
cmV0dXJuOworICAgIH0KICNlbmRpZgotCi0gICAgaWYgKCFuZXdSZW5kZXJlcikKLSAgICAgICAg
cmV0dXJuOwotCiAgICAgLy8gTm90ZTogQWRkaW5nIG5ld1JlbmRlcmVyIGluc3RlYWQgb2YgcmVu
ZGVyZXIoKS4gcmVuZGVyZXIoKSBtYXkgYmUgYSBjaGlsZCBvZiBuZXdSZW5kZXJlci4KICAgICBw
YXJlbnRSZW5kZXJlci0+YWRkQ2hpbGQobmV3UmVuZGVyZXIsIG5leHRSZW5kZXJlcik7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24g
MTM1NDEyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIE5vZGVSZW5kZXJpbmdD
b250ZXh0KE5vZGUqLCBSZW5kZXJTdHlsZSopOwogICAgIH5Ob2RlUmVuZGVyaW5nQ29udGV4dCgp
OwogCisgICAgdm9pZCBjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCk7CisKICAgICBOb2RlKiBub2Rl
KCkgY29uc3Q7CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0
eWxlKCkgY29uc3Q7CiAgICAgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdDsKQEAg
LTU2LDE5ICs1OCwxNSBAQCBwdWJsaWM6CiAgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1JlbmRl
cmVyKCkgY29uc3Q7CiAgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50KCkgY29uc3Q7
CiAKLSAgICBSZW5kZXJTdHlsZSogc3R5bGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFN0eWxlKFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+KTsKLSAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiByZWxl
YXNlU3R5bGUoKTsKLQotICAgIGJvb2wgc2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSBjb25zdDsKKyAg
ICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNPblVwcGVy
RW5jYXBzdWxhdGlvbkJvdW5kYXJ5KCkgY29uc3Q7CiAgICAgYm9vbCBpc09uRW5jYXBzdWxhdGlv
bkJvdW5kYXJ5KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGbG93VGhyZWFkUGFyZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXI7IH0KLSAgICBSZW5kZXJOYW1lZEZsb3dUaHJl
YWQqIHBhcmVudEZsb3dSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50Rmxvd1JlbmRl
cmVyOyB9Ci0gICAgdm9pZCBtb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQoKTsKIAogcHJpdmF0ZToK
KyAgICBib29sIHNob3VsZENyZWF0ZVJlbmRlcmVyKCkgY29uc3Q7CisgICAgdm9pZCBtb3ZlVG9G
bG93VGhyZWFkSWZOZWVkZWQoKTsKKwogICAgIE5vZGUqIG1fbm9kZTsKICAgICBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXI6OlBhcmVudFRyYXZlcnNhbERldGFpbHMgbV9wYXJlbnREZXRhaWxzOwog
ICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zdHlsZTsKQEAgLTkxLDcgKzg5LDcgQEAgaW5saW5l
IGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnJlc2V0UwogICAgIHJldHVybiBtX3BhcmVudERl
dGFpbHMucmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7CiB9CiAKLWlubGluZSBSZW5kZXJTdHlsZSog
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnN0eWxlKCkgY29uc3QKK2lubGluZSBjb25zdCBSZW5kZXJT
dHlsZSogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnN0eWxlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9zdHlsZS5nZXQoKTsKIH0KQEAgLTEwMSwyNiArOTksNiBAQCBpbmxpbmUgSW5zZXJ0aW9uUG9p
bnQqIE5vZGVSZW5kZXJpbmdDb250CiAgICAgcmV0dXJuIG1fcGFyZW50RGV0YWlscy5pbnNlcnRp
b25Qb2ludCgpOwogfQogCi1jbGFzcyBOb2RlUmVuZGVyZXJGYWN0b3J5IHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShOb2RlUmVuZGVyZXJGYWN0b3J5KTsKLSAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBOb2RlUmVuZGVyZXJGYWN0b3J5KE5vZGUq
KTsKLQotICAgIGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7Ci0g
ICAgdm9pZCBjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCk7Ci0KLXByaXZhdGU6Ci0gICAgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcigpOwotCi0gICAgTm9kZVJlbmRlcmluZ0NvbnRleHQgbV9j
b250ZXh0OwotfTsKLQotaW5saW5lIGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBOb2RlUmVu
ZGVyZXJGYWN0b3J5Ojpjb250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb250ZXh0Owot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgo=
</data>
<flag name="review"
          id="190932"
          type_id="1"
          status="+"
          setter="kling"
    />
    <flag name="commit-queue"
          id="190931"
          type_id="3"
          status="-"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>