<?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>69569</bug_id>
          
          <creation_ts>2011-10-06 15:13:52 -0700</creation_ts>
          <short_desc>Remove colSpan / rowSpan caching from RenderTableCell</short_desc>
          <delta_ts>2011-10-17 18:18:26 -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>Tables</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>479539</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-06 15:13:52 -0700</bug_when>
    <thetext>Currently those 2 fields are used during layout and to check that colSpan or rowSpan have changed in updateElement. However most of this use does not mandate having 2 integers stored per cells. Especially since HTMLTableElement already stores them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479562</commentid>
    <comment_count>1</comment_count>
      <attachid>110047</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-06 15:37:56 -0700</bug_when>
    <thetext>Created attachment 110047
Proposed change: Removed more caching of colSpan / rowSpan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479651</commentid>
    <comment_count>2</comment_count>
      <attachid>110047</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-06 17:18:57 -0700</bug_when>
    <thetext>Comment on attachment 110047
Proposed change: Removed more caching of colSpan / rowSpan.

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

&gt; Source/WebCore/html/HTMLTableCellElement.cpp:97
&gt; +        int oldRowSpan = max(1, attr-&gt;value().toInt());

Is the value in Attribute* really the old value? Are you sure?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479653</commentid>
    <comment_count>3</comment_count>
      <attachid>110047</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-06 17:19:22 -0700</bug_when>
    <thetext>Comment on attachment 110047
Proposed change: Removed more caching of colSpan / rowSpan.

How did you measure the performance impact of this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479692</commentid>
    <comment_count>4</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-06 18:23:09 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/html/HTMLTableCellElement.cpp:97
&gt; &gt; +        int oldRowSpan = max(1, attr-&gt;value().toInt());
&gt; 
&gt; Is the value in Attribute* really the old value? Are you sure?

I double checked and you are right. I was confused by Element::setAttribute who calls the attribute |old| but then sets the new value on it. The check is always false (I am waiting on the cr-linux EWS if it does not complain I will open a bug about colSpan / rowSpan mutation needing some coverage).

&gt; How did you measure the performance impact of this change?

Not that it matters but I measured using PageCycler to see the impact on real pages. I did not want to go with a micro-benchmark if that&apos;s the underlying question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479775</commentid>
    <comment_count>5</comment_count>
      <attachid>110047</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-06 21:11:50 -0700</bug_when>
    <thetext>Comment on attachment 110047
Proposed change: Removed more caching of colSpan / rowSpan.

Attachment 110047 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9995104

New failing tests:
fast/dom/HTMLTableElement/colSpan.html
tables/mozilla/bugs/bug22246-2a.html
tables/mozilla/bugs/bug22246-3a.html
tables/mozilla/bugs/bug22246-3.html
tables/mozilla/bugs/bug22246-2.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480284</commentid>
    <comment_count>6</comment_count>
      <attachid>110047</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-07 13:41:10 -0700</bug_when>
    <thetext>Comment on attachment 110047
Proposed change: Removed more caching of colSpan / rowSpan.

As pointed out by Darin, this patch is horribly wrong. I will see if some of the changes can be extracted - like removing the virtual dispatch - but I doubt we can easily save the memory without an unneeded overhaul of the way we handle attribute change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483285</commentid>
    <comment_count>7</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-13 10:31:50 -0700</bug_when>
    <thetext>I looked into the performance degradation linked to this patch when getting rowSpan or colSpan - using a micro-benchmark - and couldn&apos;t get a significant measure (it looked around 1.5% degradation but that fell within the statistical noise).

The patch saves 4% memory (8 bytes out of 208 bytes for a RenderTableCell on my machine) and could save 4% more if we are manage to pack 2 bits. However for the change to work, we would need to remove the old vs new value check.

Looking at Chrome&apos;s benchmark pages (Alexia US among them), rowSpan / colSpan don&apos;t seem to be changed or queried through JS and are set once inside HTML. IMHO it would be fine to go ahead and save the memory but I would welcome comments from other developers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484224</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-14 13:10:17 -0700</bug_when>
    <thetext>Seems OK to me to remove the caching. Seems we should have some way in the attribute change mechanism to consider both the old and new values of an attribute when responding to a change without having to pay memory to store the old value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484597</commentid>
    <comment_count>9</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-15 09:32:38 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Seems OK to me to remove the caching. Seems we should have some way in the attribute change mechanism to consider both the old and new values of an attribute when responding to a change without having to pay memory to store the old value.

That&apos;s definitely a good idea. I looked at some of the classes in html/ to see how often we cache the attribute: in some case, we store the attribute to avoid reparsing but most of the cases are just to detect attribute change (and also caching). Filed bug 70177 to cover adding a way of getting the old value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484598</commentid>
    <comment_count>10</comment_count>
      <attachid>111138</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-15 10:11:06 -0700</bug_when>
    <thetext>Created attachment 111138
Change 2: Removed the bogus span changed logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484623</commentid>
    <comment_count>11</comment_count>
      <attachid>111138</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-15 13:08:21 -0700</bug_when>
    <thetext>Comment on attachment 111138
Change 2: Removed the bogus span changed logic.

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        on PageCycler Alexia-US.

I think it’s Alexa, not Alexia.

&gt; Source/WebCore/html/HTMLTableCellElement.h:29
&gt; +#include &quot;HTMLNames.h&quot;

When I did this recently in some other classes, I avoided putting HTMLNames.h into the header by putting the assertions into the .cpp file and having only the NDEBUG version be inlined.

&gt; Source/WebCore/rendering/RenderTableCell.cpp:52
&gt; +    m_hasAssociatedTableCellElement = node &amp;&amp; (node-&gt;hasTagName(tdTag) || node-&gt;hasTagName(thTag));

Seems this should be done with initialization, not assignment.

&gt; Source/WebCore/rendering/RenderTableCell.cpp:84
&gt; +    ASSERT(node() &amp;&amp; (node()-&gt;hasTagName(tdTag) || node()-&gt;hasTagName(thTag)));

Normally we do not use &amp;&amp; in ASSERT. Instead we do two separate assertions. That allows us to see which has failed.

&gt; Source/WebCore/rendering/RenderTableCell.cpp:87
&gt; +    if (parent() &amp;&amp; section())

I’m not sure the null check of parent() is helpful, even though the old code had it.

&gt; Source/WebCore/rendering/RenderTableCell.h:153
&gt; +    // FIXME: It would be nice to pack those 2 bits into some of the previous fields.

Should be &quot;these&quot;, not &quot;those&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485213</commentid>
    <comment_count>12</comment_count>
      <attachid>111138</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-17 09:30:49 -0700</bug_when>
    <thetext>Comment on attachment 111138
Change 2: Removed the bogus span changed logic.

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

&gt;&gt; Source/WebCore/rendering/RenderTableCell.cpp:87
&gt;&gt; +    if (parent() &amp;&amp; section())
&gt; 
&gt; I’m not sure the null check of parent() is helpful, even though the old code had it.

I am pretty sure it is needed. Calling section() assumes the following hierarchy: RenderTableSection -&gt; RenderTableRow -&gt; RenderTableCell. However nothing guarantees that it is respected and section() does not check for parent() so you could end up dereferencing NULL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485228</commentid>
    <comment_count>13</comment_count>
      <attachid>111277</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-17 09:52:53 -0700</bug_when>
    <thetext>Created attachment 111277
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485705</commentid>
    <comment_count>14</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-17 18:18:26 -0700</bug_when>
    <thetext>Committed r97691: &lt;http://trac.webkit.org/changeset/97691&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110047</attachid>
            <date>2011-10-06 15:37:56 -0700</date>
            <delta_ts>2011-10-15 10:11:02 -0700</delta_ts>
            <desc>Proposed change: Removed more caching of colSpan / rowSpan.</desc>
            <filename>bug-69569-20111006153755.patch</filename>
            <type>text/plain</type>
            <size>8651</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4MTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MjI2NWYxOWRmNDhiNjM2
NzJkYjQyNDQ1MWMxNTYxZDhmZjBkYzQyLi4wZDc0ZDBmYWZjZWExZmY4Y2ZhMTRhMTA5ZjNiNjhk
NDRiYzNkZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMTAtMDYgIEp1bGll
biBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGNv
bFNwYW4gLyByb3dTcGFuIGNhY2hpbmcgZnJvbSBSZW5kZXJUYWJsZUNlbGwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVtb3J5IG9wdGltaXphdGlvbiwg
bm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4cGVjdGVkLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHJl
bW92ZXMgbV9jb2xTcGFuICYgbV9yb3dTcGFuIGZyb20gUmVuZGVyVGFibGVDZWxsIChpbnNwaXJl
ZCBieQorICAgICAgICBrbGluZydzIG1lbW9yeSBzaGF2aW5nIGVmZm9ydCkuCisKKyAgICAgICAg
VGhpcyBtYWtlcyB1cyBzYXZlIDggYnl0ZXMgcGVyIFJlbmRlclRhYmxlQ2VsbCBvbiBteSBtYWNo
aW5lICh4ODYtNjQpLiBObyBzbG93ZG93bgorICAgICAgICBvbiBQYWdlQ3ljbGVyIEFsZXhpYS1V
Uy4KKworICAgICAgICBUaGlzIGNoYW5nZSByZWZhY3RvcmVkIHRoZSB3YXkgd2UgaGFuZGxlIHVw
ZGF0ZSBmcm9tIHRoZSBET00gc2lkZSB0byBzaW1wbGlmeQorICAgICAgICB0aGUgY29kZSB1c2lu
ZyB0aGUgZm9sbG93aW5nOiBjb2xzcGFuIC8gcm93c3BhbiB1cGRhdGVzIGFsd2F5cyBnbyB0aHJv
dWdoCisgICAgICAgIHBhcnNlTWFwcGVkQXR0cmlidXRlIHdoZXJlIHdlIGFscmVhZHkgY2hlY2sg
Zm9yIHRoZSByZW5kZXJlciB0eXBlLgorICAgICAgICBSZW1vdmVkIHVwZGF0ZUZyb21FbGVtZW50
IGFzIGl0IHdhcyBvbmx5IGNhbGxlZCBmb3IgdGhvc2UgdXBkYXRlcyAob25lIGxlc3MgdmlydHVh
bAorICAgICAgICBkaXNwYXRjaCkgYW5kIHJlcGxhY2VkIGl0IHdpdGggY29sU3Bhbk9yUm93U3Bh
bkNoYW5nZWQgZG9pbmcgdGhlIGRpZC10aGUtc3Bhbi1jaGFuZ2UKKyAgICAgICAgY2hlY2sgaW5z
aWRlIHBhcnNlTWFwcGVkQXR0cmlidXRlLgorCisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxs
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUpOiBVcGRhdGVkIGFmdGVyIHVwZGF0ZUZyb21FbGVtZW50CisgICAg
ICAgIHJlbW92YWwgYW5kIGFkZGVkIHRoZSBjb2xTcGFuIC8gcm93U3BhbiBjaGFuZ2UgY2hlY2sg
bG9naWMgaGVyZS4KKworICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSFRNTFRhYmxlQ2VsbEVsZW1lbnQpOiBBZGRlZCB0aGUgdXN1YWwg
Y29udmVyc2lvbiBmdW5jdGlvbnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6UmVuZGVyVGFibGVD
ZWxsKTogQWRkZWQgYSBib29sZWFuIHRvIGtub3cgaWYgd2UgaGF2ZQorICAgICAgICB0aGUgcmln
aHQgdHlwZSBvZiBhc3NvY2lhdGVkIERPTSBub2RlIHRvIGF2b2lkIHRoZSBjb3N0IG9mIGNoZWNr
aW5nIHRoYXQgZXZlcnkKKyAgICAgICAgdGltZS4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVDZWxsOjpjb2xTcGFuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6
cm93U3Bhbik6CisgICAgICAgIEZvcndhcmRlZCB0aGUgY2FsbHMgdG8gb3VyIG9iamVjdCBpZiB3
ZSBoYXZlIHRoZSByaWdodCB0eXBlIChub3JtYWwgY2FzZSkuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlQ2VsbDo6Y29sU3Bhbk9yUm93U3BhbkNoYW5nZWQpOiBIYW5kbGVzIHRoZQor
ICAgICAgICB1cGRhdGVGcm9tRWxlbWVudCBjYWxscyBidXQgaW4gYSBtb3JlIHN0cmVhbWxpbmVk
IHdheS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKwogMjAxMS0x
MC0wNiAgR2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KIAogICAgICAgICBzYXZl
IHJlc291cmNlIHplcm9pbmcgc3RhY2tzIGluIFNjcmlwdEVsZW1lbnQgZm9yIGRlYnVnZ2luZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAppbmRleCAzN2Zl
NWU2MDgxZTM1YTc0NzYzNDUzNTljZTA3N2RkNDcyMzQ4MmExLi5jMDg3YjFlODcwODlmMDdmYTFl
ZjdjMGM5NjMyZjk2ZTc0NTJiMzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUNlbGxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUNlbGxFbGVtZW50LmNwcApAQCAtOTQsMTEgKzk0LDEzIEBAIGJvb2wgSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0
dHJpCiB2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSByb3dzcGFuQXR0cikgewot
ICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1RhYmxlQ2VsbCgpKQotICAg
ICAgICAgICAgdG9SZW5kZXJUYWJsZUNlbGwocmVuZGVyZXIoKSktPnVwZGF0ZUZyb21FbGVtZW50
KCk7CisgICAgICAgIGludCBvbGRSb3dTcGFuID0gbWF4KDEsIGF0dHItPnZhbHVlKCkudG9JbnQo
KSk7CisgICAgICAgIGlmIChvbGRSb3dTcGFuICE9IHJvd1NwYW4oKSAmJiByZW5kZXJlcigpICYm
IHJlbmRlcmVyKCktPmlzVGFibGVDZWxsKCkpCisgICAgICAgICAgICB0b1JlbmRlclRhYmxlQ2Vs
bChyZW5kZXJlcigpKS0+Y29sU3Bhbk9yUm93U3BhbkNoYW5nZWQoKTsKICAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBjb2xzcGFuQXR0cikgewotICAgICAgICBpZiAocmVuZGVyZXIoKSAm
JiByZW5kZXJlcigpLT5pc1RhYmxlQ2VsbCgpKQotICAgICAgICAgICAgdG9SZW5kZXJUYWJsZUNl
bGwocmVuZGVyZXIoKSktPnVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgICAgIGludCBvbGRDb2xT
cGFuID0gbWF4KDEsIGF0dHItPnZhbHVlKCkudG9JbnQoKSk7CisgICAgICAgIGlmIChvbGRDb2xT
cGFuICE9IGNvbFNwYW4oKSAmJiByZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzVGFibGVDZWxs
KCkpCisgICAgICAgICAgICB0b1JlbmRlclRhYmxlQ2VsbChyZW5kZXJlcigpKS0+Y29sU3Bhbk9y
Um93U3BhbkNoYW5nZWQoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBub3dyYXBB
dHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+aXNOdWxsKCkpCiAgICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlV2Via2l0Tm93cmFw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAppbmRleCA4NTRk
Njg0ZjM0YzRlYmJiODRjNzgzMWMzZjJhOWEyOGQwMmMyMzhmLi4zNzhlZmM4MjkwZmZlOTBhZWRi
NzdkMzBhZDcyOWQ0MDE5ZTViZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUNlbGxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVD
ZWxsRWxlbWVudC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEhUTUxUYWJsZUNlbGxFbGVt
ZW50X2gKICNkZWZpbmUgSFRNTFRhYmxlQ2VsbEVsZW1lbnRfaAogCisjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlUGFydEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNjUsNiArNjYsMjIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CiB9Owog
CitpbmxpbmUgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqIHRvSFRNTFRhYmxlQ2VsbEVsZW1lbnQoTm9k
ZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnRkVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGhUYWcpKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihub2RlKTsKK30KKworaW5s
aW5lIGNvbnN0IEhUTUxUYWJsZUNlbGxFbGVtZW50KiB0b0hUTUxUYWJsZUNlbGxFbGVtZW50KGNv
bnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjp0ZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRoVGFnKSk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxUYWJsZUNlbGxFbGVtZW50Kj4obm9k
ZSk7Cit9CisKKworLy8gVGhpcyB3aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1bm5lY2Vzc2Fy
eSBjYXN0Lgordm9pZCB0b0hUTUxUYWJsZUNlbGxFbGVtZW50KGNvbnN0IEhUTUxUYWJsZUNlbGxF
bGVtZW50Kik7CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCBmMWUyNzQyNTc2MmI0NDIxNzM4NTIy
MjIxOTlmYTg2YTBjNTY5NTg5Li44YzMzNjFiZTdiNjZhMjkzNDNmNjdkZjA2YTE3ZTMxODRjZjNj
YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApA
QCAtNDUsMTMgKzQ1LDExIEBAIFJlbmRlclRhYmxlQ2VsbDo6UmVuZGVyVGFibGVDZWxsKE5vZGUq
IG5vZGUpCiAgICAgOiBSZW5kZXJCbG9jayhub2RlKQogICAgICwgbV9yb3coLTEpCiAgICAgLCBt
X2NvbHVtbigtMSkKLSAgICAsIG1fcm93U3BhbigxKQotICAgICwgbV9jb2x1bW5TcGFuKDEpCi0g
ICAgLCBtX2NlbGxXaWR0aENoYW5nZWQoZmFsc2UpCiAgICAgLCBtX2ludHJpbnNpY1BhZGRpbmdC
ZWZvcmUoMCkKICAgICAsIG1faW50cmluc2ljUGFkZGluZ0FmdGVyKDApCisgICAgLCBtX2NlbGxX
aWR0aENoYW5nZWQoZmFsc2UpCiB7Ci0gICAgdXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICBtX2hh
c0Fzc29jaWF0ZWRUYWJsZUNlbGxFbGVtZW50ID0gbm9kZSAmJiAobm9kZS0+aGFzVGFnTmFtZSh0
ZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZSh0aFRhZykpOwogfQogCiB2b2lkIFJlbmRlclRhYmxl
Q2VsbDo6d2lsbEJlRGVzdHJveWVkKCkKQEAgLTY0LDIyICs2MiwzMCBAQCB2b2lkIFJlbmRlclRh
YmxlQ2VsbDo6d2lsbEJlRGVzdHJveWVkKCkKICAgICAgICAgcmVjYWxjU2VjdGlvbi0+c2V0TmVl
ZHNDZWxsUmVjYWxjKCk7CiB9CiAKLXZvaWQgUmVuZGVyVGFibGVDZWxsOjp1cGRhdGVGcm9tRWxl
bWVudCgpCitpbnQgUmVuZGVyVGFibGVDZWxsOjpjb2xTcGFuKCkgY29uc3QKIHsKLSAgICBOb2Rl
KiBuID0gbm9kZSgpOwotICAgIGlmIChuICYmIChuLT5oYXNUYWdOYW1lKHRkVGFnKSB8fCBuLT5o
YXNUYWdOYW1lKHRoVGFnKSkpIHsKLSAgICAgICAgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqIHRjID0g
c3RhdGljX2Nhc3Q8SFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihuKTsKLSAgICAgICAgaW50IG9sZFJT
cGFuID0gbV9yb3dTcGFuOwotICAgICAgICBpbnQgb2xkQ1NwYW4gPSBtX2NvbHVtblNwYW47Ci0K
LSAgICAgICAgbV9jb2x1bW5TcGFuID0gdGMtPmNvbFNwYW4oKTsKLSAgICAgICAgbV9yb3dTcGFu
ID0gdGMtPnJvd1NwYW4oKTsKLSAgICAgICAgaWYgKChvbGRSU3BhbiAhPSBtX3Jvd1NwYW4gfHwg
b2xkQ1NwYW4gIT0gbV9jb2x1bW5TcGFuKSAmJiBzdHlsZSgpICYmIHBhcmVudCgpKSB7Ci0gICAg
ICAgICAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKLSAgICAgICAgICAg
IGlmIChzZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgc2VjdGlvbigpLT5zZXROZWVkc0NlbGxS
ZWNhbGMoKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIW1faGFzQXNzb2Np
YXRlZFRhYmxlQ2VsbEVsZW1lbnQpKQorICAgICAgICByZXR1cm4gMTsKKworICAgIHJldHVybiB0
b0hUTUxUYWJsZUNlbGxFbGVtZW50KG5vZGUoKSktPmNvbFNwYW4oKTsKK30KKworaW50IFJlbmRl
clRhYmxlQ2VsbDo6cm93U3BhbigpIGNvbnN0Cit7CisgICAgaWYgKFVOTElLRUxZKCFtX2hhc0Fz
c29jaWF0ZWRUYWJsZUNlbGxFbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICByZXR1
cm4gdG9IVE1MVGFibGVDZWxsRWxlbWVudChub2RlKCkpLT5yb3dTcGFuKCk7Cit9CisKK3ZvaWQg
UmVuZGVyVGFibGVDZWxsOjpjb2xTcGFuT3JSb3dTcGFuQ2hhbmdlZCgpCit7CisgICAgQVNTRVJU
KG1faGFzQXNzb2NpYXRlZFRhYmxlQ2VsbEVsZW1lbnQpOworICAgIEFTU0VSVChub2RlKCkgJiYg
KG5vZGUoKS0+aGFzVGFnTmFtZSh0ZFRhZykgfHwgbm9kZSgpLT5oYXNUYWdOYW1lKHRoVGFnKSkp
OworCisgICAgc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CisgICAgaWYgKHBh
cmVudCgpICYmIHNlY3Rpb24oKSkKKyAgICAgICAgc2VjdGlvbigpLT5zZXROZWVkc0NlbGxSZWNh
bGMoKTsKIH0KIAogTGVuZ3RoIFJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbExvZ2ljYWxXaWR0
aCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKaW5k
ZXggMDE0ZTg2NjMzMThkODA5YzNiMGU4ODliZWQ1NWYzMDYyNTkxNDNjMC4uYWQxZTMzOWUyYjMz
MGI5ZDZkOGRhZGNkNTIzMWUwMGE1NTNmNGRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMzcsMTEgKzM3LDExIEBAIHB1YmxpYzoKICAgICBpbnQg
Y2VsbEluZGV4KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZvaWQgc2V0Q2VsbEluZGV4KGlu
dCkgeyB9CiAKLSAgICBpbnQgY29sU3BhbigpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uU3Bhbjsg
fQotICAgIHZvaWQgc2V0Q29sU3BhbihpbnQgYykgeyBtX2NvbHVtblNwYW4gPSBjOyB9CisgICAg
aW50IGNvbFNwYW4oKSBjb25zdDsKKyAgICBpbnQgcm93U3BhbigpIGNvbnN0OwogCi0gICAgaW50
IHJvd1NwYW4oKSBjb25zdCB7IHJldHVybiBtX3Jvd1NwYW47IH0KLSAgICB2b2lkIHNldFJvd1Nw
YW4oaW50IHIpIHsgbV9yb3dTcGFuID0gcjsgfQorICAgIC8vIENhbGxlZCBmcm9tIEhUTUxUYWJs
ZUNlbGxFbGVtZW50LgorICAgIHZvaWQgY29sU3Bhbk9yUm93U3BhbkNoYW5nZWQoKTsKIAogICAg
IGludCBjb2woKSBjb25zdCB7IHJldHVybiBtX2NvbHVtbjsgfQogICAgIHZvaWQgc2V0Q29sKGlu
dCBjb2wpIHsgbV9jb2x1bW4gPSBjb2w7IH0KQEAgLTg5LDggKzg5LDYgQEAgcHVibGljOgogICAg
IHZvaWQgY29sbGVjdEJvcmRlclZhbHVlcyhSZW5kZXJUYWJsZTo6Q29sbGFwc2VkQm9yZGVyVmFs
dWVzJikgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQgc29ydEJvcmRlclZhbHVlcyhSZW5kZXJUYWJs
ZTo6Q29sbGFwc2VkQm9yZGVyVmFsdWVzJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJv
bUVsZW1lbnQoKTsKLQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwpAQCAtMTQ5LDExICsx
NDcsMTIgQEAgcHJpdmF0ZToKIAogICAgIGludCBtX3JvdzsKICAgICBpbnQgbV9jb2x1bW47Ci0g
ICAgaW50IG1fcm93U3BhbjsKLSAgICBpbnQgbV9jb2x1bW5TcGFuIDogMzE7Ci0gICAgYm9vbCBt
X2NlbGxXaWR0aENoYW5nZWQgOiAxOwogICAgIGludCBtX2ludHJpbnNpY1BhZGRpbmdCZWZvcmU7
CiAgICAgaW50IG1faW50cmluc2ljUGFkZGluZ0FmdGVyOworCisgICAgLy8gRklYTUU6IEl0IHdv
dWxkIGJlIG5pY2UgdG8gcGFjayB0aG9zZSAyIGJpdHMgaW50byBzb21lIG9mIHByZXZpb3VzIGZp
ZWxkcy4KKyAgICBib29sIG1fY2VsbFdpZHRoQ2hhbmdlZCA6IDE7CisgICAgYm9vbCBtX2hhc0Fz
c29jaWF0ZWRUYWJsZUNlbGxFbGVtZW50IDogMTsKIH07CiAKIGlubGluZSBSZW5kZXJUYWJsZUNl
bGwqIHRvUmVuZGVyVGFibGVDZWxsKFJlbmRlck9iamVjdCogb2JqZWN0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111138</attachid>
            <date>2011-10-15 10:11:06 -0700</date>
            <delta_ts>2011-10-17 09:52:49 -0700</delta_ts>
            <desc>Change 2: Removed the bogus span changed logic.</desc>
            <filename>bug-69569-20111015101104.patch</filename>
            <type>text/plain</type>
            <size>8497</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc1NjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYWU0YTYwZWMxYWE0Mjc0
ODBmOWI3OTBlOTlkYTQ2YTdmOWFhNDdiLi5mZTQzNTBlMTEzNGQwYTQwMGQ3ZTU5ZjY2ODUzYzYy
NGU2ZDk2Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTEtMTAtMTUgIEp1bGll
biBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGNv
bFNwYW4gLyByb3dTcGFuIGNhY2hpbmcgZnJvbSBSZW5kZXJUYWJsZUNlbGwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVtb3J5IG9wdGltaXphdGlvbiwg
bm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4cGVjdGVkLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHJl
bW92ZXMgbV9jb2xTcGFuICYgbV9yb3dTcGFuIGZyb20gUmVuZGVyVGFibGVDZWxsIChpbnNwaXJl
ZCBieQorICAgICAgICBrbGluZydzIG1lbW9yeSBzaGF2aW5nIGVmZm9ydCkuCisKKyAgICAgICAg
VGhpcyBtYWtlcyB1cyBzYXZlIDggYnl0ZXMgcGVyIFJlbmRlclRhYmxlQ2VsbCBvbiBteSBtYWNo
aW5lICh4ODYtNjQpLiBObyBzbG93ZG93bgorICAgICAgICBvbiBQYWdlQ3ljbGVyIEFsZXhpYS1V
Uy4KKworICAgICAgICBUaGlzIGNoYW5nZSByZWZhY3RvcmVkIHRoZSB3YXkgd2UgaGFuZGxlIHVw
ZGF0ZXMgZnJvbSB0aGUgRE9NIHNpZGUgdG8gc2ltcGxpZnkKKyAgICAgICAgdGhlIGNvZGUgdXNp
bmcgdGhlIGZvbGxvd2luZzogY29sc3BhbiAvIHJvd3NwYW4gdXBkYXRlcyBhbHdheXMgZ28gdGhy
b3VnaAorICAgICAgICBwYXJzZU1hcHBlZEF0dHJpYnV0ZSB3aGVyZSB3ZSBhbHJlYWR5IGNoZWNr
IGZvciB0aGUgcmVuZGVyZXIgdHlwZS4gVGh1cyByZW1vdmVkIHRoZQorICAgICAgICBnZW5lcmlj
IHVwZGF0ZUZyb21FbGVtZW50IGFuZCByZXBsYWNlZCBpdCB3aXRoIGNvbFNwYW5PclJvd1NwYW5D
aGFuZ2VkLiBUaGlzIHJlbW92ZXMKKyAgICAgICAgYSB2aXJ0dWFsIGRpc3BhdGNoLgorCisgICAg
ICAgIEFzIHRoZXJlIGlzIG5vIHdheSB0byBrbm93IGlmIGFuIGF0dHJpYnV0ZSBoYXMgY2hhbmdl
ZCBpbiB0aGUgcGFyc2VNYXBwZWRBdHRyaWJ1dGUgY29kZSwKKyAgICAgICAgd2Ugbm93IHVuY29u
ZGl0aW9uYWxseSBjYWxsIGNvbFNwYW5PclJvd1NwYW5DaGFuZ2VkLiBMb29raW5nIGF0IENocm9t
aXVtJ3MgcGFnZSBkYXRhLAorICAgICAgICBjb2xTcGFuIGFuZCByb3dTcGFuIGFyZSBuZXZlciBj
aGFuZ2VkIG91dHNpZGUgdGhlIEhUTUwgbWFya3VwIHRodXMgc3VjaCBhIGNoYW5nZSBzaG91bGQK
KyAgICAgICAgaGF2ZSBhIGxpbWl0ZWQgaW1wYWN0LgorCisgICAgICAgICogaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBVcGRhdGVkIGFmdGVyIHVwZGF0ZUZyb21FbGVtZW50
CisgICAgICAgIHJlbW92YWwuCisKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0hUTUxUYWJsZUNlbGxFbGVtZW50KTogQWRkZWQgdGhl
IHVzdWFsIGNvbnZlcnNpb24gZnVuY3Rpb25zLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OlJlbmRl
clRhYmxlQ2VsbCk6IEFkZGVkIGEgYm9vbGVhbiB0byBrbm93IGlmIHdlIGhhdmUKKyAgICAgICAg
dGhlIHJpZ2h0IHR5cGUgb2YgYXNzb2NpYXRlZCBET00gbm9kZSB0byBhdm9pZCB0aGUgY29zdCBv
ZiBjaGVja2luZyB0aGF0IGV2ZXJ5CisgICAgICAgIHRpbWUuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlQ2VsbDo6Y29sU3Bhbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZUNlbGw6OnJvd1NwYW4pOgorICAgICAgICBGb3J3YXJkZWQgdGhlIGNhbGxzIHRvIG91ciBvYmpl
Y3QgaWYgd2UgaGF2ZSB0aGUgcmlnaHQgdHlwZSAobm9ybWFsIGNhc2UpLgorCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNvbFNwYW5PclJvd1NwYW5DaGFuZ2VkKTogSGFuZGxl
cyB0aGUKKyAgICAgICAgdXBkYXRlRnJvbUVsZW1lbnQgY2FsbHMgYnV0IGluIGEgbW9yZSBzdHJl
YW1saW5lZCB3YXkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisK
IDIwMTEtMTAtMTUgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgog
CiAgICAgICAgIFtRdF0gW1N5bWJpYW5dIFJlbW92ZSBzdXBwb3J0IGZvciB0aGUgU3ltYmlhbiBw
bGF0Zm9ybSBmb3IgdGhlIFF0V2ViS2l0IHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVDZWxsRWxlbWVudC5jcHAKaW5kZXggMzdmZTVlNjA4MWUzNWE3NDc2MzQ1MzU5Y2UwNzdk
ZDQ3MjM0ODJhMS4uNTViZGUxY2I3MDkzNDI5MGU4Yzk0YmMyZWFiNDM1MGRlMmQ4YmFiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKQEAgLTk1LDEw
ICs5NSwxMCBAQCB2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSByb3dzcGFuQXR0
cikgewogICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1RhYmxlQ2VsbCgp
KQotICAgICAgICAgICAgdG9SZW5kZXJUYWJsZUNlbGwocmVuZGVyZXIoKSktPnVwZGF0ZUZyb21F
bGVtZW50KCk7CisgICAgICAgICAgICB0b1JlbmRlclRhYmxlQ2VsbChyZW5kZXJlcigpKS0+Y29s
U3Bhbk9yUm93U3BhbkNoYW5nZWQoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBj
b2xzcGFuQXR0cikgewogICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1Rh
YmxlQ2VsbCgpKQotICAgICAgICAgICAgdG9SZW5kZXJUYWJsZUNlbGwocmVuZGVyZXIoKSktPnVw
ZGF0ZUZyb21FbGVtZW50KCk7CisgICAgICAgICAgICB0b1JlbmRlclRhYmxlQ2VsbChyZW5kZXJl
cigpKS0+Y29sU3Bhbk9yUm93U3BhbkNoYW5nZWQoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBub3dyYXBBdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+aXNOdWxsKCkpCiAgICAg
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1Zh
bHVlV2Via2l0Tm93cmFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlQ2VsbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1l
bnQuaAppbmRleCA4NTRkNjg0ZjM0YzRlYmJiODRjNzgzMWMzZjJhOWEyOGQwMmMyMzhmLi42Mjk2
MjM4NWU0NTI2NmZmYTkzYWQ0Nzc5ZDI1NTk2NDc1NDU0M2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEhU
TUxUYWJsZUNlbGxFbGVtZW50X2gKICNkZWZpbmUgSFRNTFRhYmxlQ2VsbEVsZW1lbnRfaAogCisj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlUGFydEVsZW1lbnQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjUsNiArNjYsMjEgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+
JikgY29uc3Q7CiB9OwogCitpbmxpbmUgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqIHRvSFRNTFRhYmxl
Q2VsbEVsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aGFz
VGFnTmFtZShIVE1MTmFtZXM6OnRkVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
dGhUYWcpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihu
b2RlKTsKK30KKworaW5saW5lIGNvbnN0IEhUTUxUYWJsZUNlbGxFbGVtZW50KiB0b0hUTUxUYWJs
ZUNlbGxFbGVtZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKCFub2RlIHx8IG5v
ZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0ZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShIVE1M
TmFtZXM6OnRoVGFnKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxUYWJsZUNl
bGxFbGVtZW50Kj4obm9kZSk7Cit9CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcg
YW4gdW5uZWNlc3NhcnkgY2FzdC4KK3ZvaWQgdG9IVE1MVGFibGVDZWxsRWxlbWVudChjb25zdCBI
VE1MVGFibGVDZWxsRWxlbWVudCopOworCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggNDdhYzIzN2Y5
YTg5MjNlYTYzMDc5NjIxMzA1YzliMGFlYTc1OGI2NS4uZjI4ZTA0ZjEwNTg0YTI0ZmU4YzU4MWRl
ODlhYmUyODJmMjFmYjRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5jcHAKQEAgLTQ1LDEzICs0NSwxMSBAQCBSZW5kZXJUYWJsZUNlbGw6OlJlbmRlclRh
YmxlQ2VsbChOb2RlKiBub2RlKQogICAgIDogUmVuZGVyQmxvY2sobm9kZSkKICAgICAsIG1fcm93
KC0xKQogICAgICwgbV9jb2x1bW4oLTEpCi0gICAgLCBtX3Jvd1NwYW4oMSkKLSAgICAsIG1fY29s
dW1uU3BhbigxKQotICAgICwgbV9jZWxsV2lkdGhDaGFuZ2VkKGZhbHNlKQogICAgICwgbV9pbnRy
aW5zaWNQYWRkaW5nQmVmb3JlKDApCiAgICAgLCBtX2ludHJpbnNpY1BhZGRpbmdBZnRlcigwKQor
ICAgICwgbV9jZWxsV2lkdGhDaGFuZ2VkKGZhbHNlKQogewotICAgIHVwZGF0ZUZyb21FbGVtZW50
KCk7CisgICAgbV9oYXNBc3NvY2lhdGVkVGFibGVDZWxsRWxlbWVudCA9IG5vZGUgJiYgKG5vZGUt
Pmhhc1RhZ05hbWUodGRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUodGhUYWcpKTsKIH0KIAogdm9p
ZCBSZW5kZXJUYWJsZUNlbGw6OndpbGxCZURlc3Ryb3llZCgpCkBAIC02NCwyMiArNjIsMzAgQEAg
dm9pZCBSZW5kZXJUYWJsZUNlbGw6OndpbGxCZURlc3Ryb3llZCgpCiAgICAgICAgIHJlY2FsY1Nl
Y3Rpb24tPnNldE5lZWRzQ2VsbFJlY2FsYygpOwogfQogCi12b2lkIFJlbmRlclRhYmxlQ2VsbDo6
dXBkYXRlRnJvbUVsZW1lbnQoKQoraW50IFJlbmRlclRhYmxlQ2VsbDo6Y29sU3BhbigpIGNvbnN0
CiB7Ci0gICAgTm9kZSogbiA9IG5vZGUoKTsKLSAgICBpZiAobiAmJiAobi0+aGFzVGFnTmFtZSh0
ZFRhZykgfHwgbi0+aGFzVGFnTmFtZSh0aFRhZykpKSB7Ci0gICAgICAgIEhUTUxUYWJsZUNlbGxF
bGVtZW50KiB0YyA9IHN0YXRpY19jYXN0PEhUTUxUYWJsZUNlbGxFbGVtZW50Kj4obik7Ci0gICAg
ICAgIGludCBvbGRSU3BhbiA9IG1fcm93U3BhbjsKLSAgICAgICAgaW50IG9sZENTcGFuID0gbV9j
b2x1bW5TcGFuOwotCi0gICAgICAgIG1fY29sdW1uU3BhbiA9IHRjLT5jb2xTcGFuKCk7Ci0gICAg
ICAgIG1fcm93U3BhbiA9IHRjLT5yb3dTcGFuKCk7Ci0gICAgICAgIGlmICgob2xkUlNwYW4gIT0g
bV9yb3dTcGFuIHx8IG9sZENTcGFuICE9IG1fY29sdW1uU3BhbikgJiYgc3R5bGUoKSAmJiBwYXJl
bnQoKSkgewotICAgICAgICAgICAgc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7
Ci0gICAgICAgICAgICBpZiAoc2VjdGlvbigpKQotICAgICAgICAgICAgICAgIHNlY3Rpb24oKS0+
c2V0TmVlZHNDZWxsUmVjYWxjKCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgaWYgKFVOTElLRUxZ
KCFtX2hhc0Fzc29jaWF0ZWRUYWJsZUNlbGxFbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIDE7CisK
KyAgICByZXR1cm4gdG9IVE1MVGFibGVDZWxsRWxlbWVudChub2RlKCkpLT5jb2xTcGFuKCk7Cit9
CisKK2ludCBSZW5kZXJUYWJsZUNlbGw6OnJvd1NwYW4oKSBjb25zdAoreworICAgIGlmIChVTkxJ
S0VMWSghbV9oYXNBc3NvY2lhdGVkVGFibGVDZWxsRWxlbWVudCkpCisgICAgICAgIHJldHVybiAx
OworCisgICAgcmV0dXJuIHRvSFRNTFRhYmxlQ2VsbEVsZW1lbnQobm9kZSgpKS0+cm93U3Bhbigp
OworfQorCit2b2lkIFJlbmRlclRhYmxlQ2VsbDo6Y29sU3Bhbk9yUm93U3BhbkNoYW5nZWQoKQor
eworICAgIEFTU0VSVChtX2hhc0Fzc29jaWF0ZWRUYWJsZUNlbGxFbGVtZW50KTsKKyAgICBBU1NF
UlQobm9kZSgpICYmIChub2RlKCktPmhhc1RhZ05hbWUodGRUYWcpIHx8IG5vZGUoKS0+aGFzVGFn
TmFtZSh0aFRhZykpKTsKKworICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygp
OworICAgIGlmIChwYXJlbnQoKSAmJiBzZWN0aW9uKCkpCisgICAgICAgIHNlY3Rpb24oKS0+c2V0
TmVlZHNDZWxsUmVjYWxjKCk7CiB9CiAKIExlbmd0aCBSZW5kZXJUYWJsZUNlbGw6OnN0eWxlT3JD
b2xMb2dpY2FsV2lkdGgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5oCmluZGV4IDAxNGU4NjYzMzE4ZDgwOWMzYjBlODg5YmVkNTVmMzA2MjU5MTQzYzAu
LjY0M2ZhZTc0NzYyMTg0ZmEyYzc4Y2JlOTM0OGIzZGIzNDE5Y2I3YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTM3LDExICszNywxMSBAQCBwdWJs
aWM6CiAgICAgaW50IGNlbGxJbmRleCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2b2lkIHNl
dENlbGxJbmRleChpbnQpIHsgfQogCi0gICAgaW50IGNvbFNwYW4oKSBjb25zdCB7IHJldHVybiBt
X2NvbHVtblNwYW47IH0KLSAgICB2b2lkIHNldENvbFNwYW4oaW50IGMpIHsgbV9jb2x1bW5TcGFu
ID0gYzsgfQorICAgIGludCBjb2xTcGFuKCkgY29uc3Q7CisgICAgaW50IHJvd1NwYW4oKSBjb25z
dDsKIAotICAgIGludCByb3dTcGFuKCkgY29uc3QgeyByZXR1cm4gbV9yb3dTcGFuOyB9Ci0gICAg
dm9pZCBzZXRSb3dTcGFuKGludCByKSB7IG1fcm93U3BhbiA9IHI7IH0KKyAgICAvLyBDYWxsZWQg
ZnJvbSBIVE1MVGFibGVDZWxsRWxlbWVudC4KKyAgICB2b2lkIGNvbFNwYW5PclJvd1NwYW5DaGFu
Z2VkKCk7CiAKICAgICBpbnQgY29sKCkgY29uc3QgeyByZXR1cm4gbV9jb2x1bW47IH0KICAgICB2
b2lkIHNldENvbChpbnQgY29sKSB7IG1fY29sdW1uID0gY29sOyB9CkBAIC04OSw4ICs4OSw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNvbGxlY3RCb3JkZXJWYWx1ZXMoUmVuZGVyVGFibGU6OkNvbGxh
cHNlZEJvcmRlclZhbHVlcyYpIGNvbnN0OwogICAgIHN0YXRpYyB2b2lkIHNvcnRCb3JkZXJWYWx1
ZXMoUmVuZGVyVGFibGU6OkNvbGxhcHNlZEJvcmRlclZhbHVlcyYpOwogCi0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7Ci0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsK
QEAgLTE0OSwxMSArMTQ3LDEyIEBAIHByaXZhdGU6CiAKICAgICBpbnQgbV9yb3c7CiAgICAgaW50
IG1fY29sdW1uOwotICAgIGludCBtX3Jvd1NwYW47Ci0gICAgaW50IG1fY29sdW1uU3BhbiA6IDMx
OwotICAgIGJvb2wgbV9jZWxsV2lkdGhDaGFuZ2VkIDogMTsKICAgICBpbnQgbV9pbnRyaW5zaWNQ
YWRkaW5nQmVmb3JlOwogICAgIGludCBtX2ludHJpbnNpY1BhZGRpbmdBZnRlcjsKKworICAgIC8v
IEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIHRvIHBhY2sgdGhvc2UgMiBiaXRzIGludG8gc29tZSBv
ZiB0aGUgcHJldmlvdXMgZmllbGRzLgorICAgIGJvb2wgbV9jZWxsV2lkdGhDaGFuZ2VkIDogMTsK
KyAgICBib29sIG1faGFzQXNzb2NpYXRlZFRhYmxlQ2VsbEVsZW1lbnQgOiAxOwogfTsKIAogaW5s
aW5lIFJlbmRlclRhYmxlQ2VsbCogdG9SZW5kZXJUYWJsZUNlbGwoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111277</attachid>
            <date>2011-10-17 09:52:53 -0700</date>
            <delta_ts>2011-10-17 09:52:53 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-69569-20111017095252.patch</filename>
            <type>text/plain</type>
            <size>9143</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc2MjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NDMzNjBhZTE4NTA1NTA0
N2NkODljNzlhYWQzYjI2MmQ0YzRmYjJmLi44NDM0ODBiNDZlZjQ3OGJmMDMxOGQ0NmY3N2ZjMzVj
Zjg4ZWNjZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTEtMTAtMTcgIEp1bGll
biBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGNv
bFNwYW4gLyByb3dTcGFuIGNhY2hpbmcgZnJvbSBSZW5kZXJUYWJsZUNlbGwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTWVtb3J5IG9wdGltaXphdGlvbiwgbm8g
Y2hhbmdlIGluIGJlaGF2aW9yIGV4cGVjdGVkLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHJlbW92
ZXMgbV9jb2xTcGFuICYgbV9yb3dTcGFuIGZyb20gUmVuZGVyVGFibGVDZWxsIChpbnNwaXJlZCBi
eQorICAgICAgICBrbGluZydzIG1lbW9yeSBzaGF2aW5nIGVmZm9ydCkuCisKKyAgICAgICAgVGhp
cyBtYWtlcyB1cyBzYXZlIDggYnl0ZXMgcGVyIFJlbmRlclRhYmxlQ2VsbCBvbiBteSBtYWNoaW5l
ICh4ODYtNjQpLiBObyBzbG93ZG93bgorICAgICAgICBvbiBQYWdlQ3ljbGVyIEFsZXhhLVVTLgor
CisgICAgICAgIFRoaXMgY2hhbmdlIHJlZmFjdG9yZWQgdGhlIHdheSB3ZSBoYW5kbGUgdXBkYXRl
cyBmcm9tIHRoZSBET00gc2lkZSB0byBzaW1wbGlmeQorICAgICAgICB0aGUgY29kZSB1c2luZyB0
aGUgZm9sbG93aW5nOiBjb2xzcGFuIC8gcm93c3BhbiB1cGRhdGVzIGFsd2F5cyBnbyB0aHJvdWdo
CisgICAgICAgIHBhcnNlTWFwcGVkQXR0cmlidXRlIHdoZXJlIHdlIGFscmVhZHkgY2hlY2sgZm9y
IHRoZSByZW5kZXJlciB0eXBlLiBUaHVzIHJlbW92ZWQgdGhlCisgICAgICAgIGdlbmVyaWMgdXBk
YXRlRnJvbUVsZW1lbnQgYW5kIHJlcGxhY2VkIGl0IHdpdGggY29sU3Bhbk9yUm93U3BhbkNoYW5n
ZWQuIFRoaXMgcmVtb3ZlcworICAgICAgICBhIHZpcnR1YWwgZGlzcGF0Y2guCisKKyAgICAgICAg
QXMgdGhlcmUgaXMgbm8gd2F5IHRvIGtub3cgaWYgYW4gYXR0cmlidXRlIGhhcyBjaGFuZ2VkIGlu
IHRoZSBwYXJzZU1hcHBlZEF0dHJpYnV0ZSBjb2RlLAorICAgICAgICB3ZSBub3cgdW5jb25kaXRp
b25hbGx5IGNhbGwgY29sU3Bhbk9yUm93U3BhbkNoYW5nZWQuIExvb2tpbmcgYXQgQ2hyb21pdW0n
cyBwYWdlIGRhdGEsCisgICAgICAgIGNvbFNwYW4gYW5kIHJvd1NwYW4gYXJlIG5ldmVyIGNoYW5n
ZWQgb3V0c2lkZSB0aGUgSFRNTCBtYXJrdXAgdGh1cyBzdWNoIGEgY2hhbmdlIHNob3VsZAorICAg
ICAgICBoYXZlIGEgbGltaXRlZCBpbXBhY3QuCisKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNl
bGxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNlbGxFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6IFVwZGF0ZWQgYWZ0ZXIgdXBkYXRlRnJvbUVsZW1lbnQKKyAg
ICAgICAgcmVtb3ZhbC4KKworICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvSFRNTFRhYmxlQ2VsbEVsZW1lbnQpOiBBZGRlZCB0aGUgdXN1
YWwgY29udmVyc2lvbiBmdW5jdGlvbnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6UmVuZGVyVGFi
bGVDZWxsKTogQWRkZWQgYSBib29sZWFuIHRvIGtub3cgaWYgd2UgaGF2ZQorICAgICAgICB0aGUg
cmlnaHQgdHlwZSBvZiBhc3NvY2lhdGVkIERPTSBub2RlIHRvIGF2b2lkIHRoZSBjb3N0IG9mIGNo
ZWNraW5nIHRoYXQgZXZlcnkKKyAgICAgICAgdGltZS4KKworICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGFibGVDZWxsOjpjb2xTcGFuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2Vs
bDo6cm93U3Bhbik6CisgICAgICAgIEZvcndhcmRlZCB0aGUgY2FsbHMgdG8gb3VyIG9iamVjdCBp
ZiB3ZSBoYXZlIHRoZSByaWdodCB0eXBlIChub3JtYWwgY2FzZSkuCisKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlQ2VsbDo6Y29sU3Bhbk9yUm93U3BhbkNoYW5nZWQpOiBIYW5kbGVzIHRo
ZQorICAgICAgICB1cGRhdGVGcm9tRWxlbWVudCBjYWxscyBidXQgaW4gYSBtb3JlIHN0cmVhbWxp
bmVkIHdheS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKwogMjAx
MS0xMC0xMiAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBmaXggaGFuZGxpbmcgb2Ygc291cmNlIG1hcHBpbmcgZW50cmll
cyB3aXRoIG5vIG1hcHBpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUNlbGxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQuY3BwCmluZGV4IDM3ZmU1ZTYwODFlMzVhNzQ3NjM0NTM1OWNlMDc3ZGQ0NzIzNDgyYTEu
LmU3NjMwZTU3MjAxMmRiODQwNjgxNmZhZjk2Y2NlYzNiODY4NWMwODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCkBAIC05NSwxMCArOTUsMTAgQEAg
dm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gcm93c3BhbkF0dHIpIHsKICAgICAg
ICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNUYWJsZUNlbGwoKSkKLSAgICAgICAg
ICAgIHRvUmVuZGVyVGFibGVDZWxsKHJlbmRlcmVyKCkpLT51cGRhdGVGcm9tRWxlbWVudCgpOwor
ICAgICAgICAgICAgdG9SZW5kZXJUYWJsZUNlbGwocmVuZGVyZXIoKSktPmNvbFNwYW5PclJvd1Nw
YW5DaGFuZ2VkKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY29sc3BhbkF0dHIp
IHsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNUYWJsZUNlbGwoKSkK
LSAgICAgICAgICAgIHRvUmVuZGVyVGFibGVDZWxsKHJlbmRlcmVyKCkpLT51cGRhdGVGcm9tRWxl
bWVudCgpOworICAgICAgICAgICAgdG9SZW5kZXJUYWJsZUNlbGwocmVuZGVyZXIoKSktPmNvbFNw
YW5PclJvd1NwYW5DaGFuZ2VkKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbm93
cmFwQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPmlzTnVsbCgpKQogICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVdlYmtpdE5v
d3JhcCk7CkBAIC0xODcsNCArMTg3LDIwIEBAIEhUTUxUYWJsZUNlbGxFbGVtZW50KiBIVE1MVGFi
bGVDZWxsRWxlbWVudDo6Y2VsbEFib3ZlKCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihjZWxsQWJvdmVSZW5kZXJlci0+bm9kZSgpKTsKIH0KIAor
I2lmbmRlZiBOREVCVUcKKworSFRNTFRhYmxlQ2VsbEVsZW1lbnQqIHRvSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aGFzVGFnTmFt
ZShIVE1MTmFtZXM6OnRkVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGhUYWcp
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihub2RlKTsK
K30KKworY29uc3QgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqIHRvSFRNTFRhYmxlQ2VsbEVsZW1lbnQo
Y29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aGFzVGFnTmFt
ZShIVE1MTmFtZXM6OnRkVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGhUYWcp
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihu
b2RlKTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAppbmRleCA4NTRkNjg0ZjM0YzRlYmJiODRj
NzgzMWMzZjJhOWEyOGQwMmMyMzhmLi5lZmI0ODk1Yzc4ZTNkZWU4YmNjMzhiN2Q0ZWM4MzgxNTcx
Y2IwN2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oCkBA
IC02NSw2ICs2NSwzMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKIH07CiAKK0hUTUxUYWJs
ZUNlbGxFbGVtZW50KiB0b0hUTUxUYWJsZUNlbGxFbGVtZW50KE5vZGUqIG5vZGUpOworY29uc3Qg
SFRNTFRhYmxlQ2VsbEVsZW1lbnQqIHRvSFRNTFRhYmxlQ2VsbEVsZW1lbnQoY29uc3QgTm9kZSog
bm9kZSk7CisvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNh
c3QuCit2b2lkIHRvSFRNTFRhYmxlQ2VsbEVsZW1lbnQoY29uc3QgSFRNTFRhYmxlQ2VsbEVsZW1l
bnQqKTsKKworI2lmZGVmIE5ERUJVRworCisvLyBUaGUgZGVidWcgdmVyc2lvbnMgb2YgdGhlc2Us
IHdpdGggYXNzZXJ0aW9ucywgYXJlIG5vdCBpbmxpbmVkLgorCitpbmxpbmUgSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQqIHRvSFRNTFRhYmxlQ2VsbEVsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihub2RlKTsKK30KKworaW5saW5l
IGNvbnN0IEhUTUxUYWJsZUNlbGxFbGVtZW50KiB0b0hUTUxUYWJsZUNlbGxFbGVtZW50KGNvbnN0
IE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxUYWJsZUNl
bGxFbGVtZW50Kj4obm9kZSk7Cit9CisKKy8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcg
YW4gdW5uZWNlc3NhcnkgY2FzdC4KK3ZvaWQgdG9IVE1MVGFibGVDZWxsRWxlbWVudChjb25zdCBI
VE1MVGFibGVDZWxsRWxlbWVudCopOworCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4
IDQ3YWMyMzdmOWE4OTIzZWE2MzA3OTYyMTMwNWM5YjBhZWE3NThiNjUuLmZkYjQ1ZGI2OWZlYTYx
MjFiODE5MzdiZjVhMzIwYzViYWYxZWEyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC00NSwxMyArNDUsMTEgQEAgUmVuZGVyVGFibGVDZWxs
OjpSZW5kZXJUYWJsZUNlbGwoTm9kZSogbm9kZSkKICAgICA6IFJlbmRlckJsb2NrKG5vZGUpCiAg
ICAgLCBtX3JvdygtMSkKICAgICAsIG1fY29sdW1uKC0xKQotICAgICwgbV9yb3dTcGFuKDEpCi0g
ICAgLCBtX2NvbHVtblNwYW4oMSkKLSAgICAsIG1fY2VsbFdpZHRoQ2hhbmdlZChmYWxzZSkKICAg
ICAsIG1faW50cmluc2ljUGFkZGluZ0JlZm9yZSgwKQogICAgICwgbV9pbnRyaW5zaWNQYWRkaW5n
QWZ0ZXIoMCkKKyAgICAsIG1fY2VsbFdpZHRoQ2hhbmdlZChmYWxzZSkKKyAgICAsIG1faGFzQXNz
b2NpYXRlZFRhYmxlQ2VsbEVsZW1lbnQobm9kZSAmJiAobm9kZS0+aGFzVGFnTmFtZSh0ZFRhZykg
fHwgbm9kZS0+aGFzVGFnTmFtZSh0aFRhZykpKQogewotICAgIHVwZGF0ZUZyb21FbGVtZW50KCk7
CiB9CiAKIHZvaWQgUmVuZGVyVGFibGVDZWxsOjp3aWxsQmVEZXN0cm95ZWQoKQpAQCAtNjQsMjIg
KzYyLDMxIEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjp3aWxsQmVEZXN0cm95ZWQoKQogICAgICAg
ICByZWNhbGNTZWN0aW9uLT5zZXROZWVkc0NlbGxSZWNhbGMoKTsKIH0KIAotdm9pZCBSZW5kZXJU
YWJsZUNlbGw6OnVwZGF0ZUZyb21FbGVtZW50KCkKK2ludCBSZW5kZXJUYWJsZUNlbGw6OmNvbFNw
YW4oKSBjb25zdAogewotICAgIE5vZGUqIG4gPSBub2RlKCk7Ci0gICAgaWYgKG4gJiYgKG4tPmhh
c1RhZ05hbWUodGRUYWcpIHx8IG4tPmhhc1RhZ05hbWUodGhUYWcpKSkgewotICAgICAgICBIVE1M
VGFibGVDZWxsRWxlbWVudCogdGMgPSBzdGF0aWNfY2FzdDxIVE1MVGFibGVDZWxsRWxlbWVudCo+
KG4pOwotICAgICAgICBpbnQgb2xkUlNwYW4gPSBtX3Jvd1NwYW47Ci0gICAgICAgIGludCBvbGRD
U3BhbiA9IG1fY29sdW1uU3BhbjsKLQotICAgICAgICBtX2NvbHVtblNwYW4gPSB0Yy0+Y29sU3Bh
bigpOwotICAgICAgICBtX3Jvd1NwYW4gPSB0Yy0+cm93U3BhbigpOwotICAgICAgICBpZiAoKG9s
ZFJTcGFuICE9IG1fcm93U3BhbiB8fCBvbGRDU3BhbiAhPSBtX2NvbHVtblNwYW4pICYmIHN0eWxl
KCkgJiYgcGFyZW50KCkpIHsKLSAgICAgICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRo
c1JlY2FsYygpOwotICAgICAgICAgICAgaWYgKHNlY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBz
ZWN0aW9uKCktPnNldE5lZWRzQ2VsbFJlY2FsYygpOwotICAgICAgICB9Ci0gICAgfQorICAgIGlm
IChVTkxJS0VMWSghbV9oYXNBc3NvY2lhdGVkVGFibGVDZWxsRWxlbWVudCkpCisgICAgICAgIHJl
dHVybiAxOworCisgICAgcmV0dXJuIHRvSFRNTFRhYmxlQ2VsbEVsZW1lbnQobm9kZSgpKS0+Y29s
U3BhbigpOworfQorCitpbnQgUmVuZGVyVGFibGVDZWxsOjpyb3dTcGFuKCkgY29uc3QKK3sKKyAg
ICBpZiAoVU5MSUtFTFkoIW1faGFzQXNzb2NpYXRlZFRhYmxlQ2VsbEVsZW1lbnQpKQorICAgICAg
ICByZXR1cm4gMTsKKworICAgIHJldHVybiB0b0hUTUxUYWJsZUNlbGxFbGVtZW50KG5vZGUoKSkt
PnJvd1NwYW4oKTsKK30KKwordm9pZCBSZW5kZXJUYWJsZUNlbGw6OmNvbFNwYW5PclJvd1NwYW5D
aGFuZ2VkKCkKK3sKKyAgICBBU1NFUlQobV9oYXNBc3NvY2lhdGVkVGFibGVDZWxsRWxlbWVudCk7
CisgICAgQVNTRVJUKG5vZGUoKSk7CisgICAgQVNTRVJUKG5vZGUoKS0+aGFzVGFnTmFtZSh0ZFRh
ZykgfHwgbm9kZSgpLT5oYXNUYWdOYW1lKHRoVGFnKSk7CisKKyAgICBzZXROZWVkc0xheW91dEFu
ZFByZWZXaWR0aHNSZWNhbGMoKTsKKyAgICBpZiAocGFyZW50KCkgJiYgc2VjdGlvbigpKQorICAg
ICAgICBzZWN0aW9uKCktPnNldE5lZWRzQ2VsbFJlY2FsYygpOwogfQogCiBMZW5ndGggUmVuZGVy
VGFibGVDZWxsOjpzdHlsZU9yQ29sTG9naWNhbFdpZHRoKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAppbmRleCAwMTRlODY2MzMxOGQ4MDljM2IwZTg4
OWJlZDU1ZjMwNjI1OTE0M2MwLi43NTVhODU0ZTRlYWQ3Zjg3MDQzODE1ZjY4Njc2MTIyOTdkNGZj
OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCkBAIC0z
NywxMSArMzcsMTEgQEAgcHVibGljOgogICAgIGludCBjZWxsSW5kZXgoKSBjb25zdCB7IHJldHVy
biAwOyB9CiAgICAgdm9pZCBzZXRDZWxsSW5kZXgoaW50KSB7IH0KIAotICAgIGludCBjb2xTcGFu
KCkgY29uc3QgeyByZXR1cm4gbV9jb2x1bW5TcGFuOyB9Ci0gICAgdm9pZCBzZXRDb2xTcGFuKGlu
dCBjKSB7IG1fY29sdW1uU3BhbiA9IGM7IH0KKyAgICBpbnQgY29sU3BhbigpIGNvbnN0OworICAg
IGludCByb3dTcGFuKCkgY29uc3Q7CiAKLSAgICBpbnQgcm93U3BhbigpIGNvbnN0IHsgcmV0dXJu
IG1fcm93U3BhbjsgfQotICAgIHZvaWQgc2V0Um93U3BhbihpbnQgcikgeyBtX3Jvd1NwYW4gPSBy
OyB9CisgICAgLy8gQ2FsbGVkIGZyb20gSFRNTFRhYmxlQ2VsbEVsZW1lbnQuCisgICAgdm9pZCBj
b2xTcGFuT3JSb3dTcGFuQ2hhbmdlZCgpOwogCiAgICAgaW50IGNvbCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29sdW1uOyB9CiAgICAgdm9pZCBzZXRDb2woaW50IGNvbCkgeyBtX2NvbHVtbiA9IGNvbDsg
fQpAQCAtODksOCArODksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb2xsZWN0Qm9yZGVyVmFsdWVz
KFJlbmRlclRhYmxlOjpDb2xsYXBzZWRCb3JkZXJWYWx1ZXMmKSBjb25zdDsKICAgICBzdGF0aWMg
dm9pZCBzb3J0Qm9yZGVyVmFsdWVzKFJlbmRlclRhYmxlOjpDb2xsYXBzZWRCb3JkZXJWYWx1ZXMm
KTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwotCiAgICAgdmlydHVh
bCB2b2lkIGxheW91dCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50Jik7CkBAIC0xNDksMTEgKzE0NywxMiBAQCBwcml2YXRlOgogCiAgICAg
aW50IG1fcm93OwogICAgIGludCBtX2NvbHVtbjsKLSAgICBpbnQgbV9yb3dTcGFuOwotICAgIGlu
dCBtX2NvbHVtblNwYW4gOiAzMTsKLSAgICBib29sIG1fY2VsbFdpZHRoQ2hhbmdlZCA6IDE7CiAg
ICAgaW50IG1faW50cmluc2ljUGFkZGluZ0JlZm9yZTsKICAgICBpbnQgbV9pbnRyaW5zaWNQYWRk
aW5nQWZ0ZXI7CisKKyAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSB0byBwYWNrIHRoZXNl
IDIgYml0cyBpbnRvIHNvbWUgb2YgdGhlIHByZXZpb3VzIGZpZWxkcy4KKyAgICBib29sIG1fY2Vs
bFdpZHRoQ2hhbmdlZCA6IDE7CisgICAgYm9vbCBtX2hhc0Fzc29jaWF0ZWRUYWJsZUNlbGxFbGVt
ZW50IDogMTsKIH07CiAKIGlubGluZSBSZW5kZXJUYWJsZUNlbGwqIHRvUmVuZGVyVGFibGVDZWxs
KFJlbmRlck9iamVjdCogb2JqZWN0KQo=
</data>
<flag name="commit-queue"
          id="109067"
          type_id="3"
          status="+"
          setter="jchaffraix"
    />
          </attachment>
      

    </bug>

</bugzilla>