<?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>90059</bug_id>
          
          <creation_ts>2012-06-27 03:58:41 -0700</creation_ts>
          <short_desc>Performance: Optimize Dromaeo/dom-query.html by caching NodeRareData on Document</short_desc>
          <delta_ts>2012-06-27 23:32:21 -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>DOM</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="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>darin</cc>
    
    <cc>morrita</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>658518</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-27 03:58:41 -0700</bug_when>
    <thetext>document.getElementsByClassName(), document.getElementsByTagName() and document.getElementsByName() are considered to be frequently used in the real world. Dromaeo/dom-query.html is also testing the performance of the three methods.

We can optimize the performance by caching a pointer to NodeRareData on Document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658519</commentid>
    <comment_count>1</comment_count>
      <attachid>149721</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-27 04:01:28 -0700</bug_when>
    <thetext>Created attachment 149721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659114</commentid>
    <comment_count>2</comment_count>
      <attachid>149856</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-27 19:43:02 -0700</bug_when>
    <thetext>Created attachment 149856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659116</commentid>
    <comment_count>3</comment_count>
      <attachid>149856</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-27 19:49:08 -0700</bug_when>
    <thetext>Comment on attachment 149856
Patch

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

This seems like a good optimization. Make sure we&apos;re getting the same benefit for ElementRareData as things like document.images, document.all, etc... are all hanging out off ElementRareData as well.

&gt; Source/WebCore/dom/Document.h:437
&gt; +    NodeRareData* rareData() const { return m_rareData; };
&gt; +    void setRareData(NodeRareData*);

Not sure if it&apos;s such a good idea to overload Node&apos;s rareData().

&gt; Source/WebCore/dom/Node.cpp:500
&gt; +        NodeRareData* data = static_cast&lt;Document*&gt;(this)-&gt;rareData();

We should probably declare a Document* local variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659121</commentid>
    <comment_count>4</comment_count>
      <attachid>149856</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-27 19:51:50 -0700</bug_when>
    <thetext>Comment on attachment 149856
Patch

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

&gt;&gt; Source/WebCore/dom/Document.h:437
&gt;&gt; +    void setRareData(NodeRareData*);
&gt; 
&gt; Not sure if it&apos;s such a good idea to overload Node&apos;s rareData().

What is your suggestion? (I thought that in IRC you suggested to rename cachedRareData() to rareData().)

&gt;&gt; Source/WebCore/dom/Node.cpp:500
&gt;&gt; +        NodeRareData* data = static_cast&lt;Document*&gt;(this)-&gt;rareData();
&gt; 
&gt; We should probably declare a Document* local variable.

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659173</commentid>
    <comment_count>5</comment_count>
      <attachid>149865</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-27 21:55:43 -0700</bug_when>
    <thetext>Created attachment 149865
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659249</commentid>
    <comment_count>6</comment_count>
      <attachid>149865</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-27 23:29:42 -0700</bug_when>
    <thetext>Comment on attachment 149865
patch for landing

Clearing flags on attachment: 149865

Committed r121412: &lt;http://trac.webkit.org/changeset/121412&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149721</attachid>
            <date>2012-06-27 04:01:28 -0700</date>
            <delta_ts>2012-06-27 19:42:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90059-20120627200128.patch</filename>
            <type>text/plain</type>
            <size>5246</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU2YTAwM2YzODM0NTZi
NTAwNjU0ZTM0M2JkZWRkNjk2NjhjZjM1YS4uYWViNjQ3Zjg3YjEyNDZlYWM4MjEyMDgyZGQyZGE5
M2Q5NTExNmQxOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA2LTI3ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBQZXJmb3JtYW5jZTog
T3B0aW1pemUgRHJvbWFlby9kb20tcXVlcnkuaHRtbCBieSBjYWNoaW5nIE5vZGVSYXJlRGF0YSBv
biBEb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTAwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGltcHJvdmVzIHBlcmZvcm1hbmNlIG9mIGRvY3VtZW50LmdldEVsZW1lbnRz
QnkqKCkuCisgICAgICAgIGUuZy4gdGhlIHBhdGNoIG1ha2VzIERyb21hZW8vZG9tLXF1ZXJ5Lmh0
bWwgNS40JSBmYXN0ZXIuCisKKyAgICAgICAgRHJvbWFlby9kb20tcXVlcnkuaHRtbCB3aXRob3V0
IHRoZSBwYXRjaCAoQ2hyb21pdW0vTGludXgpOgorICAgICAgICA3ODQ3MTQgcnVucy9zLCA3NjU5
NDcgcnVucy9zLCA4MDMxMDkgcnVucy9zLCA4MDQ0NTAgcnVucy9zCisKKyAgICAgICAgRHJvbWFl
by9kb20tcXVlcnkuaHRtbCB3aXRoIHRoZSBwYXRjaCAoQ2hyb21pdW0vTGludXgpOgorICAgICAg
ICA4MzkyNDUgcnVucy9zLCA4Mjk4NjcgcnVucy9zLCA4MTEwMzIgcnVucy9zLCA4NDc0ODYgcnVu
cy9zCisKKyAgICAgICAgQmFzZWQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBkb2N1bWVudC5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCksCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCkgYW5kIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCkKKyAgICAgICAgd291bGQgYmUg
dXNlZCBmcmVxdWVudGx5IGluIHRoZSByZWFsIHdvcmxkLCB0aGlzIHBhdGNoIGltcGxlbWVudHMK
KyAgICAgICAgYSBmYXN0IHBhdGggZm9yIERvY3VtZW50IG1ldGhvZHMgdGhhdCByZXF1aXJlIHRv
IGFjY2VzcyBOb2RlUmFyZURhdGEuCisgICAgICAgIFNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBj
YWNoZXMgYSBwb2ludGVyIHRvIE5vZGVSYXJlRGF0YSBvbiBEb2N1bWVudCwKKyAgICAgICAgYnkg
d2hpY2ggRG9jdW1lbnQgY2FuIGFjY2VzcyBOb2RlUmFyZURhdGEgd2l0aG91dCBsb29raW5nIHVw
IGEgSGFzaE1hcC4KKworICAgICAgICBUaGUgb25seSBwZXJmb3JtYW5jZSBjb25jZXJuIGlzIHRo
ZSBvdmVyaGVhZCBvZiB0aGUgaXNEb2N1bWVudE5vZGUoKSBjaGVjaworICAgICAgICB0aGF0IHRo
aXMgcGF0Y2ggYWRkZWQgdG8gTm9kZTo6ZW5zdXJlUmFyZURhdGEuIEhvd2V2ZXIsIEkgY291bGQg
bm90CisgICAgICAgIG9ic2VydmUgYW55IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gY2F1c2VkIGJ5
IHRoZSBvdmVyaGVhZC4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9y
LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q2FjaGVkUmFy
ZURhdGEpOiBJIGRpZG4ndCBpbmxpbmUgdGhpcyBtZXRob2QsCisgICAgICAgIHNpbmNlIHRoZSBp
bmxpbmluZyBzbGlnaHRseSByZWdyZXNzZWQgcGVyZm9ybWFuY2UgZm9yIHNvbWUgcmVhc29uLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYWNoZWRSYXJlRGF0YSk6Cisg
ICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6ZW5zdXJlUmFyZURhdGEpOgorCiAyMDEyLTA2LTI2ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFN0b3AgY2FsbGluZyBub2RlKCkgYW5kIGRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgaW4gY29tcGFyZVBvc2l0aW9ucwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggN2YxOTBiMjY5ODk5Yzg3M2NjMjkyYjYwNTY1NTBkMTU5ODc3Y2FjNC4u
MDlkMzA2OWEwOWYzOTE4NTgwN2U2MzY4ZDdiNGRhYjM1YTNlYjQyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCkBAIC00NzAsNiArNDcwLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBm
cmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwg
bV9pc1ZpZXdTb3VyY2UoZmFsc2UpCiAgICAgLCBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFj
ZXMoZmFsc2UpCiAgICAgLCBtX2lzU3JjZG9jRG9jdW1lbnQoZmFsc2UpCisgICAgLCBtX2NhY2hl
ZFJhcmVEYXRhKDApCiAgICAgLCBtX2V2ZW50UXVldWUoRG9jdW1lbnRFdmVudFF1ZXVlOjpjcmVh
dGUodGhpcykpCiAgICAgLCBtX3dlYWtSZWZlcmVuY2UoRG9jdW1lbnRXZWFrUmVmZXJlbmNlOjpj
cmVhdGUodGhpcykpCiAgICAgLCBtX2lkQXR0cmlidXRlTmFtZShpZEF0dHIpCkBAIC0yMDA5LDYg
KzIwMTAsMTEgQEAgdm9pZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50
IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNpemUsIGludCYKICAgICBtYXJnaW5MZWZ0ID0gc3R5
bGUtPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSA/IG1hcmdpbkxlZnQgOiBpbnRWYWx1ZUZvckxlbmd0
aChzdHlsZS0+bWFyZ2luTGVmdCgpLCB3aWR0aCwgdmlldyk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6
OnNldENhY2hlZFJhcmVEYXRhKE5vZGVSYXJlRGF0YSogcmFyZURhdGEpCit7CisgICAgbV9jYWNo
ZWRSYXJlRGF0YSA9IHJhcmVEYXRhOworfQorCiB2b2lkIERvY3VtZW50OjpzZXRJc1ZpZXdTb3Vy
Y2UoYm9vbCBpc1ZpZXdTb3VyY2UpCiB7CiAgICAgbV9pc1ZpZXdTb3VyY2UgPSBpc1ZpZXdTb3Vy
Y2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDY4ODg1ZmIzM2Y0OTUyMTRjMzFhMzcwMzM4ZmVj
ODA0YjRiMTFjYWQuLjRmOWUwOGJlZTU4ODBkOWE4NDE2YTA4OTM1MWZjMzNhYzdjN2JjNjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTEsNiArMTExLDcgQEAgY2xhc3MgTWVkaWFRdWVyeU1h
dGNoZXI7CiBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwogY2xhc3MgTm9kZUZp
bHRlcjsKIGNsYXNzIE5vZGVJdGVyYXRvcjsKK2NsYXNzIE5vZGVSYXJlRGF0YTsKIGNsYXNzIFBh
Z2U7CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiBjbGFzcyBQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b247CkBAIC00MzIsNiArNDMzLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1NyY2RvY0RvY3Vt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1NyY2RvY0RvY3VtZW50OyB9CiAKKyAgICBOb2RlUmFy
ZURhdGEqIGNhY2hlZFJhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRSYXJlRGF0YTsg
fTsKKyAgICB2b2lkIHNldENhY2hlZFJhcmVEYXRhKE5vZGVSYXJlRGF0YSopOworCiAgICAgU3R5
bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcklmRXhpc3RzKCkgY29uc3QgeyByZXR1cm4gbV9zdHls
ZVJlc29sdmVyLmdldCgpOyB9CiAKICAgICBib29sIGlzVmlld1NvdXJjZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNWaWV3U291cmNlOyB9CkBAIC0xNDM1LDYgKzE0MzksOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9zYXdFbGVtZW50c0luS25vd25OYW1lc3BhY2VzOwogICAgIGJvb2wgbV9pc1NyY2Rv
Y0RvY3VtZW50OwogCisgICAgTm9kZVJhcmVEYXRhKiBtX2NhY2hlZFJhcmVEYXRhOworCiAgICAg
UmVmUHRyPERvY3VtZW50RXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVlOwogCiAgICAgUmVmUHRyPERv
Y3VtZW50V2Vha1JlZmVyZW5jZT4gbV93ZWFrUmVmZXJlbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4
IGFlMzk0NWJlNWQwYzBkZWQ4ZGVjZjAwYzU5OWQ0ZjI4MjMxOTEwNjIuLjgwNzdmZDkzZjc3NzYz
MjQ1MjQ2ODQ0NjRiNTFiMWZhZDM0ZDFjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQ2NCw4ICs0
NjQsMTggQEAgTm9kZVJhcmVEYXRhKiBOb2RlOjpyYXJlRGF0YSgpIGNvbnN0CiAKIE5vZGVSYXJl
RGF0YSogTm9kZTo6ZW5zdXJlUmFyZURhdGEoKQogewotICAgIGlmIChoYXNSYXJlRGF0YSgpKQor
ICAgIGlmIChoYXNSYXJlRGF0YSgpKSB7CisgICAgICAgIGlmIChpc0RvY3VtZW50Tm9kZSgpKSB7
CisgICAgICAgICAgICAvLyBGYXN0IHBhdGggZm9yIERvY3VtZW50LiBEb2N1bWVudCBjYWNoZXMg
YSBwb2ludGVyIHRvIE5vZGVSYXJlRGF0YS4KKyAgICAgICAgICAgIE5vZGVSYXJlRGF0YSogZGF0
YSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4odGhpcyktPmNhY2hlZFJhcmVEYXRhKCk7CisgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoIWRhdGEpKSB7CisgICAgICAgICAgICAgICAgZGF0YSA9IHJh
cmVEYXRhKCk7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0aGlzKS0+
c2V0Q2FjaGVkUmFyZURhdGEoZGF0YSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gZGF0YTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gcmFyZURhdGEoKTsKKyAgICB9CiAg
ICAgCiAgICAgQVNTRVJUKCFOb2RlUmFyZURhdGE6OnJhcmVEYXRhTWFwKCkuY29udGFpbnModGhp
cykpOwogICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IGNyZWF0ZVJhcmVEYXRhKCkubGVha1B0cigp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149856</attachid>
            <date>2012-06-27 19:43:02 -0700</date>
            <delta_ts>2012-06-27 23:32:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90059-20120628114301.patch</filename>
            <type>text/plain</type>
            <size>7287</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFiZTIzNTI2YmM2YTY1
YWFjMjc1MTFiNzY0MzZlYWY3YWU4OWE4My4uZGRhYWI4YzQwZTM4NTExYzhhYzc1ZjkzZjg5OTky
OTYyN2Q1NDE4NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA2LTI3ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBQZXJmb3JtYW5jZTog
T3B0aW1pemUgRHJvbWFlby9kb20tcXVlcnkuaHRtbCBieSBjYWNoaW5nIE5vZGVSYXJlRGF0YSBv
biBEb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTAwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGltcHJvdmVzIHBlcmZvcm1hbmNlIG9mIGRvY3VtZW50LmdldEVsZW1lbnRz
QnkqKCkuCisgICAgICAgIGUuZy4gdGhlIHBhdGNoIG1ha2VzIERyb21hZW8vZG9tLXF1ZXJ5Lmh0
bWwgNS40JSBmYXN0ZXIuCisKKyAgICAgICAgRHJvbWFlby9kb20tcXVlcnkuaHRtbCB3aXRob3V0
IHRoZSBwYXRjaCAoQ2hyb21pdW0vTGludXgpOgorICAgICAgICA3ODQ3MTQgcnVucy9zLCA3NjU5
NDcgcnVucy9zLCA4MDMxMDkgcnVucy9zLCA4MDQ0NTAgcnVucy9zCisKKyAgICAgICAgRHJvbWFl
by9kb20tcXVlcnkuaHRtbCB3aXRoIHRoZSBwYXRjaCAoQ2hyb21pdW0vTGludXgpOgorICAgICAg
ICA4MzkyNDUgcnVucy9zLCA4Mjk4NjcgcnVucy9zLCA4MTEwMzIgcnVucy9zLCA4NDc0ODYgcnVu
cy9zCisKKyAgICAgICAgQmFzZWQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBkb2N1bWVudC5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCksCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCkgYW5kIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCkKKyAgICAgICAgd291bGQgYmUg
dXNlZCBmcmVxdWVudGx5IGluIHRoZSByZWFsIHdvcmxkLCB0aGlzIHBhdGNoIGltcGxlbWVudHMK
KyAgICAgICAgYSBmYXN0IHBhdGggZm9yIERvY3VtZW50IG1ldGhvZHMgdGhhdCByZXF1aXJlIHRv
IGFjY2VzcyBOb2RlUmFyZURhdGEuCisgICAgICAgIFNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBj
YWNoZXMgYSBwb2ludGVyIHRvIE5vZGVSYXJlRGF0YSBvbiBEb2N1bWVudCwKKyAgICAgICAgYnkg
d2hpY2ggRG9jdW1lbnQgY2FuIGFjY2VzcyBOb2RlUmFyZURhdGEgd2l0aG91dCBsb29raW5nIHVw
IGEgSGFzaE1hcC4KKworICAgICAgICBUaGUgb25seSBwZXJmb3JtYW5jZSBjb25jZXJuIGlzIHRo
ZSBvdmVyaGVhZCBvZiB0aGUgaXNEb2N1bWVudE5vZGUoKSBjaGVjaworICAgICAgICB0aGF0IHRo
aXMgcGF0Y2ggYWRkZWQgdG8gTm9kZTo6ZW5zdXJlUmFyZURhdGEuIEhvd2V2ZXIsIEkgY291bGQg
bm90CisgICAgICAgIG9ic2VydmUgYW55IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gY2F1c2VkIGJ5
IHRoZSBvdmVyaGVhZC4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9y
LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q2FjaGVkUmFy
ZURhdGEpOiBJIGRpZG4ndCBpbmxpbmUgdGhpcyBtZXRob2QsCisgICAgICAgIHNpbmNlIHRoZSBp
bmxpbmluZyBzbGlnaHRseSByZWdyZXNzZWQgcGVyZm9ybWFuY2UgZm9yIHNvbWUgcmVhc29uLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYWNoZWRSYXJlRGF0YSk6Cisg
ICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICh+RG9jdW1lbnQpOiBNb3ZlZCAnbV9kb2N1bWVu
dCA9IDAnIHRvIHRoZSB0YWlsIG9mIHRoZSBkZXN0cnVjdG9yLAorICAgICAgICBzaW5jZSBpc0Rv
Y3VtZW50Tm9kZSgpIGhhcyB0byByZXR1cm4gdHJ1ZSBpbiBjbGVhclJhcmVEYXRhKCkgdGhhdCBp
cyBjYWxsZWQKKyAgICAgICAgaW4gfkRvY3VtZW50KCkuCisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZW5zdXJlUmFyZURhdGEpOgorICAgICAgICAofk5v
ZGUpOiBNb3ZlZCB0aGUgYXNzZXJ0aW9uIGludG8gY2xlYXJSYXJlRGF0YSgpLgorCiAyMDEyLTA2
LTI3ICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBj
cmFzaCBpbiBGcmFtZTo6bm9kZUltYWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggN2Yx
OTBiMjY5ODk5Yzg3M2NjMjkyYjYwNTY1NTBkMTU5ODc3Y2FjNC4uNThmMjNkMjA2M2YxYjVjZDJk
MzM5NmMwOTZjMzYzZDc3YTYwMTE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NzAs
NiArNDcwLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9pc1ZpZXdTb3VyY2UoZmFs
c2UpCiAgICAgLCBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXMoZmFsc2UpCiAgICAgLCBt
X2lzU3JjZG9jRG9jdW1lbnQoZmFsc2UpCisgICAgLCBtX3JhcmVEYXRhKDApCiAgICAgLCBtX2V2
ZW50UXVldWUoRG9jdW1lbnRFdmVudFF1ZXVlOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3dlYWtS
ZWZlcmVuY2UoRG9jdW1lbnRXZWFrUmVmZXJlbmNlOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2lk
QXR0cmlidXRlTmFtZShpZEF0dHIpCkBAIC02MDYsNyArNjA3LDYgQEAgRG9jdW1lbnQ6On5Eb2N1
bWVudCgpCiAgICAgLy8gaWYgdGhlIERvY3VtZW50UGFyc2VyIG91dGxpdmVzIHRoZSBEb2N1bWVu
dCBpdCB3b24ndCBjYXVzZSBiYWRuZXNzLgogICAgIEFTU0VSVCghbV9wYXJzZXIgfHwgbV9wYXJz
ZXItPnJlZkNvdW50KCkgPT0gMSk7CiAgICAgZGV0YWNoUGFyc2VyKCk7Ci0gICAgbV9kb2N1bWVu
dCA9IDA7CiAKICAgICBtX3JlbmRlckFyZW5hLmNsZWFyKCk7CiAKQEAgLTY1MCw2ICs2NTAsOCBA
QCBEb2N1bWVudDo6fkRvY3VtZW50KCkKICAgICBpZiAoaGFzUmFyZURhdGEoKSkKICAgICAgICAg
Y2xlYXJSYXJlRGF0YSgpOwogCisgICAgbV9kb2N1bWVudCA9IDA7CisKICAgICBJbnNwZWN0b3JD
b3VudGVyczo6ZGVjcmVtZW50Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6RG9jdW1lbnRDb3Vu
dGVyKTsKIH0KIApAQCAtMjAwOSw2ICsyMDExLDExIEBAIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXpl
QW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQm
CiAgICAgbWFyZ2luTGVmdCA9IHN0eWxlLT5tYXJnaW5MZWZ0KCkuaXNBdXRvKCkgPyBtYXJnaW5M
ZWZ0IDogaW50VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpbkxlZnQoKSwgd2lkdGgsIHZpZXcp
OwogfQogCit2b2lkIERvY3VtZW50OjpzZXRSYXJlRGF0YShOb2RlUmFyZURhdGEqIHJhcmVEYXRh
KQoreworICAgIG1fcmFyZURhdGEgPSByYXJlRGF0YTsKK30KKwogdm9pZCBEb2N1bWVudDo6c2V0
SXNWaWV3U291cmNlKGJvb2wgaXNWaWV3U291cmNlKQogewogICAgIG1faXNWaWV3U291cmNlID0g
aXNWaWV3U291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA2ODg4NWZiMzNmNDk1MjE0YzMx
YTM3MDMzOGZlYzgwNGI0YjExY2FkLi4yZTNjZmY1MTI2MGFjYWNjYmI1YzNkMjgwZTk4YTNmY2Jj
NGE3NzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTExLDYgKzExMSw3IEBAIGNsYXNzIE1l
ZGlhUXVlcnlNYXRjaGVyOwogY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNs
YXNzIE5vZGVGaWx0ZXI7CiBjbGFzcyBOb2RlSXRlcmF0b3I7CitjbGFzcyBOb2RlUmFyZURhdGE7
CiBjbGFzcyBQYWdlOwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogY2xhc3MgUHJvY2Vzc2lu
Z0luc3RydWN0aW9uOwpAQCAtNDMyLDYgKzQzMyw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNT
cmNkb2NEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTcmNkb2NEb2N1bWVudDsgfQogCisg
ICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGE7IH07
CisgICAgdm9pZCBzZXRSYXJlRGF0YShOb2RlUmFyZURhdGEqKTsKKwogICAgIFN0eWxlUmVzb2x2
ZXIqIHN0eWxlUmVzb2x2ZXJJZkV4aXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVSZXNvbHZl
ci5nZXQoKTsgfQogCiAgICAgYm9vbCBpc1ZpZXdTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2lz
Vmlld1NvdXJjZTsgfQpAQCAtMTQzNSw2ICsxNDM5LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1f
c2F3RWxlbWVudHNJbktub3duTmFtZXNwYWNlczsKICAgICBib29sIG1faXNTcmNkb2NEb2N1bWVu
dDsKIAorICAgIE5vZGVSYXJlRGF0YSogbV9yYXJlRGF0YTsKKwogICAgIFJlZlB0cjxEb2N1bWVu
dEV2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKIAogICAgIFJlZlB0cjxEb2N1bWVudFdlYWtSZWZl
cmVuY2U+IG1fd2Vha1JlZmVyZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBhZTM5NDViZTVkMGMw
ZGVkOGRlY2YwMGM1OTlkNGYyODIzMTkxMDYyLi5lOWZhYmQ4NmUzNTJlMjYxOTdiNDJmZGNlYWY3
NjZlNTg4ZmY0ZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0zOTksNyArMzk5LDYgQEAgTm9kZTo6
fk5vZGUoKQogICAgIGxpdmVOb2RlU2V0LnJlbW92ZSh0aGlzKTsKICNlbmRpZgogCi0gICAgQVNT
RVJUKGhhc1JhcmVEYXRhKCkgPT0gTm9kZVJhcmVEYXRhOjpyYXJlRGF0YU1hcCgpLmNvbnRhaW5z
KHRoaXMpKTsKICAgICBpZiAoaGFzUmFyZURhdGEoKSkKICAgICAgICAgY2xlYXJSYXJlRGF0YSgp
OwogCkBAIC00NTksMTcgKzQ1OCwyNSBAQCBUcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29wZSgpIGNv
bnN0CiBOb2RlUmFyZURhdGEqIE5vZGU6OnJhcmVEYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
aGFzUmFyZURhdGEoKSk7Ci0gICAgcmV0dXJuIE5vZGVSYXJlRGF0YTo6cmFyZURhdGFGcm9tTWFw
KHRoaXMpOworICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IGlzRG9jdW1lbnROb2RlKCkgPyBzdGF0
aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+KHRoaXMpLT5yYXJlRGF0YSgpIDogTm9kZVJhcmVEYXRh
OjpyYXJlRGF0YUZyb21NYXAodGhpcyk7CisgICAgQVNTRVJUKGRhdGEpOworICAgIHJldHVybiBk
YXRhOwogfQogCiBOb2RlUmFyZURhdGEqIE5vZGU6OmVuc3VyZVJhcmVEYXRhKCkKIHsKICAgICBp
ZiAoaGFzUmFyZURhdGEoKSkKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhKCk7Ci0gICAgCi0gICAg
QVNTRVJUKCFOb2RlUmFyZURhdGE6OnJhcmVEYXRhTWFwKCkuY29udGFpbnModGhpcykpOworCiAg
ICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gY3JlYXRlUmFyZURhdGEoKS5sZWFrUHRyKCk7Ci0gICAg
Tm9kZVJhcmVEYXRhOjpyYXJlRGF0YU1hcCgpLnNldCh0aGlzLCBkYXRhKTsKKyAgICBpZiAoaXNE
b2N1bWVudE5vZGUoKSkgeworICAgICAgICAvLyBGYXN0IHBhdGggZm9yIGEgRG9jdW1lbnQuIEEg
RG9jdW1lbnQga25vd3MgYSBwb2ludGVyIHRvIE5vZGVSYXJlRGF0YS4KKyAgICAgICAgQVNTRVJU
KCFzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRoaXMpLT5yYXJlRGF0YSgpKTsKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPih0aGlzKS0+c2V0UmFyZURhdGEoZGF0YSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgQVNTRVJUKCFOb2RlUmFyZURhdGE6OnJhcmVEYXRhTWFwKCkuY29udGFpbnMo
dGhpcykpOworICAgICAgICBOb2RlUmFyZURhdGE6OnJhcmVEYXRhTWFwKCkuc2V0KHRoaXMsIGRh
dGEpOworICAgIH0KICAgICBzZXRGbGFnKEhhc1JhcmVEYXRhRmxhZyk7CiAgICAgcmV0dXJuIGRh
dGE7CiB9CkBAIC00ODksMTEgKzQ5NiwxOCBAQCB2b2lkIE5vZGU6OmNsZWFyUmFyZURhdGEoKQog
ICAgIEFTU0VSVCghdHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkgfHwgdHJhbnNp
ZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCktPmlzRW1wdHkoKSk7CiAjZW5kaWYKIAotICAg
IE5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhTWFwJiBkYXRhTWFwID0gTm9kZVJhcmVEYXRhOjpy
YXJlRGF0YU1hcCgpOwotICAgIE5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhTWFwOjppdGVyYXRv
ciBpdCA9IGRhdGFNYXAuZmluZCh0aGlzKTsKLSAgICBBU1NFUlQoaXQgIT0gZGF0YU1hcC5lbmQo
KSk7Ci0gICAgZGVsZXRlIGl0LT5zZWNvbmQ7Ci0gICAgZGF0YU1hcC5yZW1vdmUoaXQpOworICAg
IGlmIChpc0RvY3VtZW50Tm9kZSgpKSB7CisgICAgICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4odGhpcyktPnJhcmVEYXRhKCk7CisgICAgICAgIEFTU0VSVChk
YXRhKTsKKyAgICAgICAgZGVsZXRlIGRhdGE7CisgICAgICAgIHN0YXRpY19jYXN0PERvY3VtZW50
Kj4odGhpcyktPnNldFJhcmVEYXRhKDApOworICAgIH0gZWxzZSB7CisgICAgICAgIE5vZGVSYXJl
RGF0YTo6Tm9kZVJhcmVEYXRhTWFwJiBkYXRhTWFwID0gTm9kZVJhcmVEYXRhOjpyYXJlRGF0YU1h
cCgpOworICAgICAgICBOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YU1hcDo6aXRlcmF0b3IgaXQg
PSBkYXRhTWFwLmZpbmQodGhpcyk7CisgICAgICAgIEFTU0VSVChpdCAhPSBkYXRhTWFwLmVuZCgp
KTsKKyAgICAgICAgZGVsZXRlIGl0LT5zZWNvbmQ7CisgICAgICAgIGRhdGFNYXAucmVtb3ZlKGl0
KTsKKyAgICB9CiAgICAgY2xlYXJGbGFnKEhhc1JhcmVEYXRhRmxhZyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149865</attachid>
            <date>2012-06-27 21:55:43 -0700</date>
            <delta_ts>2012-06-27 23:29:42 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-90059-20120628135542.patch</filename>
            <type>text/plain</type>
            <size>7401</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFiZTIzNTI2YmM2YTY1
YWFjMjc1MTFiNzY0MzZlYWY3YWU4OWE4My4uOTU2MTU2Y2YyOWMxMzEyZGJlMWE3NjBmYjg5NDVi
NGE1OTI0ZDU5YyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA2LTI3ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBQZXJmb3JtYW5jZTog
T3B0aW1pemUgRHJvbWFlby9kb20tcXVlcnkuaHRtbCBieSBjYWNoaW5nIE5vZGVSYXJlRGF0YSBv
biBEb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTAwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbXByb3ZlcyBwZXJmb3JtYW5jZSBvZiBkb2N1bWVudC5nZXRFbGVtZW50c0J5
KigpLgorICAgICAgICBlLmcuIHRoZSBwYXRjaCBtYWtlcyBEcm9tYWVvL2RvbS1xdWVyeS5odG1s
IDUuNCUgZmFzdGVyLgorCisgICAgICAgIERyb21hZW8vZG9tLXF1ZXJ5Lmh0bWwgd2l0aG91dCB0
aGUgcGF0Y2ggKENocm9taXVtL0xpbnV4KToKKyAgICAgICAgNzg0NzE0IHJ1bnMvcywgNzY1OTQ3
IHJ1bnMvcywgODAzMTA5IHJ1bnMvcywgODA0NDUwIHJ1bnMvcworCisgICAgICAgIERyb21hZW8v
ZG9tLXF1ZXJ5Lmh0bWwgd2l0aCB0aGUgcGF0Y2ggKENocm9taXVtL0xpbnV4KToKKyAgICAgICAg
ODM5MjQ1IHJ1bnMvcywgODI5ODY3IHJ1bnMvcywgODExMDMyIHJ1bnMvcywgODQ3NDg2IHJ1bnMv
cworCisgICAgICAgIEJhc2VkIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgpLAorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgpIGFuZCBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgpCisgICAgICAgIHdvdWxkIGJlIHVz
ZWQgZnJlcXVlbnRseSBpbiB0aGUgcmVhbCB3b3JsZCwgdGhpcyBwYXRjaCBpbXBsZW1lbnRzCisg
ICAgICAgIGEgZmFzdCBwYXRoIGZvciBEb2N1bWVudCBtZXRob2RzIHRoYXQgcmVxdWlyZSB0byBh
Y2Nlc3MgTm9kZVJhcmVEYXRhLgorICAgICAgICBTcGVjaWZpY2FsbHksIHRoaXMgcGF0Y2ggY2Fj
aGVzIGEgcG9pbnRlciB0byBOb2RlUmFyZURhdGEgb24gRG9jdW1lbnQsCisgICAgICAgIGJ5IHdo
aWNoIERvY3VtZW50IGNhbiBhY2Nlc3MgTm9kZVJhcmVEYXRhIHdpdGhvdXQgbG9va2luZyB1cCBh
IEhhc2hNYXAuCisKKyAgICAgICAgVGhlIG9ubHkgcGVyZm9ybWFuY2UgY29uY2VybiBpcyB0aGUg
b3ZlcmhlYWQgb2YgdGhlIGlzRG9jdW1lbnROb2RlKCkgY2hlY2sKKyAgICAgICAgdGhhdCB0aGlz
IHBhdGNoIGFkZGVkIHRvIE5vZGU6OmVuc3VyZVJhcmVEYXRhLiBIb3dldmVyLCBJIGNvdWxkIG5v
dAorICAgICAgICBvYnNlcnZlIGFueSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGNhdXNlZCBieSB0
aGUgb3ZlcmhlYWQuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENhY2hlZFJhcmVE
YXRhKTogSSBkaWRuJ3QgaW5saW5lIHRoaXMgbWV0aG9kLAorICAgICAgICBzaW5jZSB0aGUgaW5s
aW5pbmcgc2xpZ2h0bHkgcmVncmVzc2VkIHBlcmZvcm1hbmNlIGZvciBzb21lIHJlYXNvbi4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2FjaGVkUmFyZURhdGEpOgorICAg
ICAgICAoRG9jdW1lbnQpOgorICAgICAgICAofkRvY3VtZW50KTogTW92ZWQgJ21fZG9jdW1lbnQg
PSAwJyB0byB0aGUgdGFpbCBvZiB0aGUgZGVzdHJ1Y3RvciwKKyAgICAgICAgc2luY2UgaXNEb2N1
bWVudE5vZGUoKSBoYXMgdG8gcmV0dXJuIHRydWUgaW4gY2xlYXJSYXJlRGF0YSgpIHRoYXQgaXMg
Y2FsbGVkCisgICAgICAgIGluIH5Eb2N1bWVudCgpLgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAgKH5Ob2Rl
KTogTW92ZWQgdGhlIGFzc2VydGlvbiBpbnRvIGNsZWFyUmFyZURhdGEoKS4KKwogMjAxMi0wNi0y
NyAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaXggY3Jh
c2ggaW4gRnJhbWU6Om5vZGVJbWFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDdmMTkw
YjI2OTg5OWM4NzNjYzI5MmI2MDU2NTUwZDE1OTg3N2NhYzQuLmU5MjEwOTA2MjQ1ZDk1OWFkMDhh
ZjQ2YzQ1YjVjYjFkZDI0YTYwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDcwLDYg
KzQ3MCw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVy
bCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1faXNWaWV3U291cmNlKGZhbHNl
KQogICAgICwgbV9zYXdFbGVtZW50c0luS25vd25OYW1lc3BhY2VzKGZhbHNlKQogICAgICwgbV9p
c1NyY2RvY0RvY3VtZW50KGZhbHNlKQorICAgICwgbV9kb2N1bWVudFJhcmVEYXRhKDApCiAgICAg
LCBtX2V2ZW50UXVldWUoRG9jdW1lbnRFdmVudFF1ZXVlOjpjcmVhdGUodGhpcykpCiAgICAgLCBt
X3dlYWtSZWZlcmVuY2UoRG9jdW1lbnRXZWFrUmVmZXJlbmNlOjpjcmVhdGUodGhpcykpCiAgICAg
LCBtX2lkQXR0cmlidXRlTmFtZShpZEF0dHIpCkBAIC02MDYsNyArNjA3LDYgQEAgRG9jdW1lbnQ6
On5Eb2N1bWVudCgpCiAgICAgLy8gaWYgdGhlIERvY3VtZW50UGFyc2VyIG91dGxpdmVzIHRoZSBE
b2N1bWVudCBpdCB3b24ndCBjYXVzZSBiYWRuZXNzLgogICAgIEFTU0VSVCghbV9wYXJzZXIgfHwg
bV9wYXJzZXItPnJlZkNvdW50KCkgPT0gMSk7CiAgICAgZGV0YWNoUGFyc2VyKCk7Ci0gICAgbV9k
b2N1bWVudCA9IDA7CiAKICAgICBtX3JlbmRlckFyZW5hLmNsZWFyKCk7CiAKQEAgLTY1MCw2ICs2
NTAsOCBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKICAgICBpZiAoaGFzUmFyZURhdGEoKSkKICAg
ICAgICAgY2xlYXJSYXJlRGF0YSgpOwogCisgICAgbV9kb2N1bWVudCA9IDA7CisKICAgICBJbnNw
ZWN0b3JDb3VudGVyczo6ZGVjcmVtZW50Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6RG9jdW1l
bnRDb3VudGVyKTsKIH0KIApAQCAtMjAwOSw2ICsyMDExLDExIEBAIHZvaWQgRG9jdW1lbnQ6OnBh
Z2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXpl
LCBpbnQmCiAgICAgbWFyZ2luTGVmdCA9IHN0eWxlLT5tYXJnaW5MZWZ0KCkuaXNBdXRvKCkgPyBt
YXJnaW5MZWZ0IDogaW50VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpbkxlZnQoKSwgd2lkdGgs
IHZpZXcpOwogfQogCit2b2lkIERvY3VtZW50OjpzZXREb2N1bWVudFJhcmVEYXRhKE5vZGVSYXJl
RGF0YSogcmFyZURhdGEpCit7CisgICAgbV9kb2N1bWVudFJhcmVEYXRhID0gcmFyZURhdGE7Cit9
CisKIHZvaWQgRG9jdW1lbnQ6OnNldElzVmlld1NvdXJjZShib29sIGlzVmlld1NvdXJjZSkKIHsK
ICAgICBtX2lzVmlld1NvdXJjZSA9IGlzVmlld1NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggNjg4ODVmYjMzZjQ5NTIxNGMzMWEzNzAzMzhmZWM4MDRiNGIxMWNhZC4uZWNjZjhhNzc2YmJh
NTRmZDBiY2UzZWIxYTAwMzFiMzE2OWUxOTA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEx
MSw2ICsxMTEsNyBAQCBjbGFzcyBNZWRpYVF1ZXJ5TWF0Y2hlcjsKIGNsYXNzIE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHM7CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3MgTm9kZUl0ZXJhdG9y
OworY2xhc3MgTm9kZVJhcmVEYXRhOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBsYXRmb3JtTW91c2VF
dmVudDsKIGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjsKQEAgLTQzMiw2ICs0MzMsOSBAQCBw
dWJsaWM6CiAKICAgICBib29sIGlzU3JjZG9jRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lz
U3JjZG9jRG9jdW1lbnQ7IH0KIAorICAgIE5vZGVSYXJlRGF0YSogZG9jdW1lbnRSYXJlRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRSYXJlRGF0YTsgfTsKKyAgICB2b2lkIHNldERvY3Vt
ZW50UmFyZURhdGEoTm9kZVJhcmVEYXRhKik7CisKICAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVySWZFeGlzdHMoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlUmVzb2x2ZXIuZ2V0KCk7IH0K
IAogICAgIGJvb2wgaXNWaWV3U291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZpZXdTb3VyY2U7
IH0KQEAgLTE0MzUsNiArMTQzOSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nhd0VsZW1lbnRz
SW5Lbm93bk5hbWVzcGFjZXM7CiAgICAgYm9vbCBtX2lzU3JjZG9jRG9jdW1lbnQ7CiAKKyAgICBO
b2RlUmFyZURhdGEqIG1fZG9jdW1lbnRSYXJlRGF0YTsKKwogICAgIFJlZlB0cjxEb2N1bWVudEV2
ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKIAogICAgIFJlZlB0cjxEb2N1bWVudFdlYWtSZWZlcmVu
Y2U+IG1fd2Vha1JlZmVyZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBhZTM5NDViZTVkMGMwZGVk
OGRlY2YwMGM1OTlkNGYyODIzMTkxMDYyLi43OWVmNmI4MzEwMTg2NmNlZjI3ZjQzNWYzMzJjZWQz
Nzg3NmQ1YmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0zOTksNyArMzk5LDYgQEAgTm9kZTo6fk5v
ZGUoKQogICAgIGxpdmVOb2RlU2V0LnJlbW92ZSh0aGlzKTsKICNlbmRpZgogCi0gICAgQVNTRVJU
KGhhc1JhcmVEYXRhKCkgPT0gTm9kZVJhcmVEYXRhOjpyYXJlRGF0YU1hcCgpLmNvbnRhaW5zKHRo
aXMpKTsKICAgICBpZiAoaGFzUmFyZURhdGEoKSkKICAgICAgICAgY2xlYXJSYXJlRGF0YSgpOwog
CkBAIC00NTksMTcgKzQ1OCwyNSBAQCBUcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29wZSgpIGNvbnN0
CiBOb2RlUmFyZURhdGEqIE5vZGU6OnJhcmVEYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFz
UmFyZURhdGEoKSk7Ci0gICAgcmV0dXJuIE5vZGVSYXJlRGF0YTo6cmFyZURhdGFGcm9tTWFwKHRo
aXMpOworICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IGlzRG9jdW1lbnROb2RlKCkgPyBzdGF0aWNf
Y2FzdDxjb25zdCBEb2N1bWVudCo+KHRoaXMpLT5kb2N1bWVudFJhcmVEYXRhKCkgOiBOb2RlUmFy
ZURhdGE6OnJhcmVEYXRhRnJvbU1hcCh0aGlzKTsKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgcmV0
dXJuIGRhdGE7CiB9CiAKIE5vZGVSYXJlRGF0YSogTm9kZTo6ZW5zdXJlUmFyZURhdGEoKQogewog
ICAgIGlmIChoYXNSYXJlRGF0YSgpKQogICAgICAgICByZXR1cm4gcmFyZURhdGEoKTsKLSAgICAK
LSAgICBBU1NFUlQoIU5vZGVSYXJlRGF0YTo6cmFyZURhdGFNYXAoKS5jb250YWlucyh0aGlzKSk7
CisKICAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSBjcmVhdGVSYXJlRGF0YSgpLmxlYWtQdHIoKTsK
LSAgICBOb2RlUmFyZURhdGE6OnJhcmVEYXRhTWFwKCkuc2V0KHRoaXMsIGRhdGEpOworICAgIGlm
IChpc0RvY3VtZW50Tm9kZSgpKSB7CisgICAgICAgIC8vIEZhc3QgcGF0aCBmb3IgYSBEb2N1bWVu
dC4gQSBEb2N1bWVudCBrbm93cyBhIHBvaW50ZXIgdG8gTm9kZVJhcmVEYXRhLgorICAgICAgICBB
U1NFUlQoIXN0YXRpY19jYXN0PERvY3VtZW50Kj4odGhpcyktPmRvY3VtZW50UmFyZURhdGEoKSk7
CisgICAgICAgIHN0YXRpY19jYXN0PERvY3VtZW50Kj4odGhpcyktPnNldERvY3VtZW50UmFyZURh
dGEoZGF0YSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKCFOb2RlUmFyZURhdGE6OnJh
cmVEYXRhTWFwKCkuY29udGFpbnModGhpcykpOworICAgICAgICBOb2RlUmFyZURhdGE6OnJhcmVE
YXRhTWFwKCkuc2V0KHRoaXMsIGRhdGEpOworICAgIH0KICAgICBzZXRGbGFnKEhhc1JhcmVEYXRh
RmxhZyk7CiAgICAgcmV0dXJuIGRhdGE7CiB9CkBAIC00ODksMTEgKzQ5NiwxOSBAQCB2b2lkIE5v
ZGU6OmNsZWFyUmFyZURhdGEoKQogICAgIEFTU0VSVCghdHJhbnNpZW50TXV0YXRpb25PYnNlcnZl
clJlZ2lzdHJ5KCkgfHwgdHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCktPmlzRW1w
dHkoKSk7CiAjZW5kaWYKIAotICAgIE5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhTWFwJiBkYXRh
TWFwID0gTm9kZVJhcmVEYXRhOjpyYXJlRGF0YU1hcCgpOwotICAgIE5vZGVSYXJlRGF0YTo6Tm9k
ZVJhcmVEYXRhTWFwOjppdGVyYXRvciBpdCA9IGRhdGFNYXAuZmluZCh0aGlzKTsKLSAgICBBU1NF
UlQoaXQgIT0gZGF0YU1hcC5lbmQoKSk7Ci0gICAgZGVsZXRlIGl0LT5zZWNvbmQ7Ci0gICAgZGF0
YU1hcC5yZW1vdmUoaXQpOworICAgIGlmIChpc0RvY3VtZW50Tm9kZSgpKSB7CisgICAgICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4odGhpcyk7CisgICAgICAg
IE5vZGVSYXJlRGF0YSogZGF0YSA9IGRvY3VtZW50LT5kb2N1bWVudFJhcmVEYXRhKCk7CisgICAg
ICAgIEFTU0VSVChkYXRhKTsKKyAgICAgICAgZGVsZXRlIGRhdGE7CisgICAgICAgIGRvY3VtZW50
LT5zZXREb2N1bWVudFJhcmVEYXRhKDApOworICAgIH0gZWxzZSB7CisgICAgICAgIE5vZGVSYXJl
RGF0YTo6Tm9kZVJhcmVEYXRhTWFwJiBkYXRhTWFwID0gTm9kZVJhcmVEYXRhOjpyYXJlRGF0YU1h
cCgpOworICAgICAgICBOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YU1hcDo6aXRlcmF0b3IgaXQg
PSBkYXRhTWFwLmZpbmQodGhpcyk7CisgICAgICAgIEFTU0VSVChpdCAhPSBkYXRhTWFwLmVuZCgp
KTsKKyAgICAgICAgZGVsZXRlIGl0LT5zZWNvbmQ7CisgICAgICAgIGRhdGFNYXAucmVtb3ZlKGl0
KTsKKyAgICB9CiAgICAgY2xlYXJGbGFnKEhhc1JhcmVEYXRhRmxhZyk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>