<?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>48768</bug_id>
          
          <creation_ts>2010-11-01 11:18:16 -0700</creation_ts>
          <short_desc>Transferred &lt;iframe&gt;s may not have a unique internal name</short_desc>
          <delta_ts>2010-11-12 22:47:04 -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>WebCore Misc.</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>
          <dependson>6751</dependson>
          <blocked>49489</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dimich</cc>
    
    <cc>fishd</cc>
    
    <cc>hausmann</cc>
    
    <cc>jennb</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>302795</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-01 11:18:16 -0700</bug_when>
    <thetext>&lt;iframe&gt;s that are transferred from document A to document B, where A != B, may not have a unique internal name in B.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302820</commentid>
    <comment_count>1</comment_count>
      <attachid>72534</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-01 11:49:34 -0700</bug_when>
    <thetext>Created attachment 72534
Example

This example uses a known side effect of bug #6751. That is, we can get the internal WebKit frame name of a frame via its contentWindow.name property.

Assuming that each frame in a document has a unique internal name.

Using this example we can demonstrate that two &lt;iframe&gt;s in the same document can have the same internal name.

Let A be the frame in document D_0 that contains a frame F_1 whose name is &quot;Frame1&quot; and whose content is &quot;Frame1&quot;. Notice, F_1 is in the document of A, call it D_A.
When you run the example, a frame F_2 in document D_0  whose name is &quot;Frame1&quot; and whose content is &quot;Frame2&quot; is adopted by A such that A has two &lt;iframe&gt;s, F_1 and F_2; =&gt; F_1 and F_2 are in D_A. But the name of F_2 == &quot;Frame1&quot; ==  name of F_1 (contradicts names uniqueness).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302822</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-01 11:52:41 -0700</bug_when>
    <thetext>To run the example, download it locally. Then open it in Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303686</commentid>
    <comment_count>3</comment_count>
      <attachid>72739</attachid>
    <who name="Jenn Braithwaite">jennb</who>
    <bug_when>2010-11-02 14:46:40 -0700</bug_when>
    <thetext>Created attachment 72739
update internal frame name on reparenting

In Frame.cpp, the line above my change that calls m_ownerElement-&gt;setName() will no longer be needed once bug 6751 is fixed as that frame name will not need to be updated for uniqueness upon reparenting.

Example test case added as layout test in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303695</commentid>
    <comment_count>4</comment_count>
      <attachid>72739</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-02 14:53:47 -0700</bug_when>
    <thetext>Comment on attachment 72739
update internal frame name on reparenting

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

I have a work in progress patch for this issue and was planned to address it after I land bug #6751.

&gt; WebCore/page/Frame.cpp:738
&gt; +            tree()-&gt;setName(tree()-&gt;name());

Because of &lt;https://bugs.webkit.org/show_bug.cgi?id=48806#c0&gt; we can&apos;t call setName() after appendChild() since the child count will be off. Disregarding the frame prefix, notice in your results the unique name has &lt;!--frame2--&gt;, but we count from zero, so this should be &lt;!--frame1--&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303697</commentid>
    <comment_count>5</comment_count>
      <attachid>72743</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-02 14:56:57 -0700</bug_when>
    <thetext>Created attachment 72743
[Patch] Work-in-progress

Work in progress patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304414</commentid>
    <comment_count>6</comment_count>
      <attachid>72896</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-03 18:59:14 -0700</bug_when>
    <thetext>Created attachment 72896
Patch with layout test

I thought to move the child transfer code from Frame::transferChildFrameToNewDocument() to FrameTree::transferChild() so that we can set ensure that the name of the transferred frame has a unique name with respect to its new parent. I am open to suggestions on the name of this function and its return type as well as the approach of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304451</commentid>
    <comment_count>7</comment_count>
      <attachid>72901</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-03 20:19:58 -0700</bug_when>
    <thetext>Created attachment 72901
Patch with layout test

Updated patch that removes the methods HTMLFrameElementBase::setName() and HTMLFrameOwnerElement::setName(). Also, re-worded description in layout test to imply that this test only works in DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304901</commentid>
    <comment_count>8</comment_count>
      <attachid>72901</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-04 15:05:36 -0700</bug_when>
    <thetext>Comment on attachment 72901
Patch with layout test

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

&gt; WebCore/page/FrameTree.cpp:75
&gt; +    ASSERT(child-&gt;page() == m_thisFrame-&gt;page());

Why is this true?  You can&apos;t transfer frames between pages?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304909</commentid>
    <comment_count>9</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-11-04 15:12:56 -0700</bug_when>
    <thetext>It probably would be good to split FrameTree::setName() into setName() and updateUniqueName(), since it is a mechanical combination of two and apparently those two are not always to be called in a lockstep.

For example, various &apos;createChildFrame&apos; methods in WebKit layer typically have a new frame name, so they call setName() before appendChild(). With this patch, we&apos;ll call setName() again inside appendChild, passing the same name to itself. For example, WebKit/mac/WebView/WebFrame.mm, _createFrameWithPage.

Instead, we could call setName() in createFrameWithPage and friends, and simply updateUniqueName() from appendChild. It might make code clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304923</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-04 15:26:09 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 72901 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72901&amp;action=review
&gt; 
&gt; &gt; WebCore/page/FrameTree.cpp:75
&gt; &gt; +    ASSERT(child-&gt;page() == m_thisFrame-&gt;page());
&gt; 
&gt; Why is this true?  You can&apos;t transfer frames between pages?

I will look into this further and respond shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304932</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-04 15:38:52 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; It probably would be good to split FrameTree::setName() into setName() and updateUniqueName(), since it is a mechanical combination of two and apparently those two are not always to be called in a lockstep.
&gt; 
&gt; For example, various &apos;createChildFrame&apos; methods in WebKit layer typically have a new frame name, so they call setName() before appendChild(). With this patch, we&apos;ll call setName() again inside appendChild, passing the same name to itself. For example, WebKit/mac/WebView/WebFrame.mm, _createFrameWithPage.
&gt; 

Notice, neither FrameTree::appendChild() nor FrameTree::actuallyAppendChild() (added in this patch) calls FrameTree::setName(). And Frame::transferChildFrameToNewDocument() is the only call site that needs to have the child&apos;s unique name updated (since we are transferring it to a new parent, which may already contain a frame with an identical name).

&gt; Instead, we could call setName() in createFrameWithPage and friends, and simply updateUniqueName() from appendChild. It might make code clearer.

As aforementioned, appendChild() does not update the unique name. We could factor our the unique name updating from FrameTree::setName(), but we don&apos;t always have to update the unique frame name so I&apos;m unclear of the benefit given the current call sites of FrameTree::setName().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304983</commentid>
    <comment_count>12</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-11-04 16:22:50 -0700</bug_when>
    <thetext>&gt; As aforementioned, appendChild() does not update the unique name. We could factor our the unique name updating from FrameTree::setName(), but we don&apos;t always have to update the unique frame name so I&apos;m unclear of the benefit given the current call sites of FrameTree::setName().

That&apos;s right, sorry I was not clear.. What I should have said was we could split those, perhaps call it generateUniqueName() rather, and only call it inside appendChild(), before incrementing the child counter, since it seems this is the only place that effectively establishes the computed unique name (other then case which where there is no parent).

Then there is no need for actuallyAppendChild(), and transferChild(), can simply call appendChild() to set parent, update name and do the rest of appending, if I don&apos;t miss something...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304997</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-04 16:40:39 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; As aforementioned, appendChild() does not update the unique name. We could factor our the unique name updating from FrameTree::setName(), but we don&apos;t always have to update the unique frame name so I&apos;m unclear of the benefit given the current call sites of FrameTree::setName().
&gt; 
&gt; That&apos;s right, sorry I was not clear.. What I should have said was we could split those, perhaps call it generateUniqueName() rather, and only call it inside appendChild(), before incrementing the child counter, since it seems this is the only place that effectively establishes the computed unique name (other then case which where there is no parent).
&gt; 
&gt; Then there is no need for actuallyAppendChild(), and transferChild(), can simply call appendChild() to set parent, update name and do the rest of appending, if I don&apos;t miss something...

Notice, FrameTree::uniqueChildName() calls FrameTree::child() &lt;http://trac.webkit.org/browser/trunk/WebCore/page/FrameTree.cpp?rev=71219#L107&gt;, which enforces frame name uniqueness by traversing the frame tree for a frame with the requested name.

I decided against having FrameTree::appendChild() update the name of the child because Frame::transferChildFrameToNewDocument() is the only code path where we may have to generate a new unique name for a frame (*), and I was unclear whether the performance implications of such a change would be negligible. I could try measuring the performance of this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305006</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-04 16:52:14 -0700</bug_when>
    <thetext>I forgot to add my remark (*):

(*) Currently, the code assumes a convention of setting the name of a frame before appending it to the tree. This conventions ensures that both the name of the frame is unique and that the generated name reflects its placement in the frame tree hierarchy with respect to its parent (notice, generated frame names are of the form &lt;!--frame0--&gt;/&lt;!--frame1--&gt;, where &lt;!--frame0--&gt; is the parent of &lt;!--frame1--&gt;).

Ideally, we should enforce this convention; maybe through some kind of ASSERT(s); introduce a function that both sets the name and appends it to the tree, say FrameTree::setNameAndAppendChild(), or reduce the call sites that call both FrameTree::setName() and FrameTree::appendChild() (for example, these functions come up in the platform-specific FrameLoaderClient code for every port; we could try to factor out this code into some common WebCore function as a means to both reduce duplicate code and prevent a violation of the convention)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305022</commentid>
    <comment_count>15</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-11-04 17:21:45 -0700</bug_when>
    <thetext>(In reply to comment #14)

Thanks for explanation! Indeed, in some cases there can be perf impact since having name generated in appendChild may be unnecessary in some cases. I&apos;ve coded what I had in mind, and didn&apos;t find it much clearer as well.

I second Adam&apos;s r+ :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305120</commentid>
    <comment_count>16</comment_count>
      <attachid>72901</attachid>
    <who name="Jenn Braithwaite">jennb</who>
    <bug_when>2010-11-04 20:46:53 -0700</bug_when>
    <thetext>Comment on attachment 72901
Patch with layout test

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

&gt; WebCore/page/Frame.cpp:730
&gt; +    if (newParent) {

The old code removed the frame from oldParent even if newParent is NULL.  The new code does not.

&gt;&gt;&gt; WebCore/page/FrameTree.cpp:75
&gt;&gt;&gt; +    ASSERT(child-&gt;page() == m_thisFrame-&gt;page());
&gt;&gt; 
&gt;&gt; Why is this true?  You can&apos;t transfer frames between pages?
&gt; 
&gt; I will look into this further and respond shortly.

The only code path that calls this method has already updated the page before updating the FrameTree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308757</commentid>
    <comment_count>17</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-11-12 13:46:18 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 72901 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72901&amp;action=review
&gt; 
&gt; &gt; WebCore/page/Frame.cpp:730
&gt; &gt; +    if (newParent) {
&gt; 
&gt; The old code removed the frame from oldParent even if newParent is NULL.  The new code does not.

Indeed, the iframe can be transferred into a document that does not have a frame. I think a document created by XHR is one example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308924</commentid>
    <comment_count>18</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-12 21:43:54 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 72901 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72901&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; WebCore/page/Frame.cpp:730
&gt; &gt; &gt; +    if (newParent) {
&gt; &gt; 
&gt; &gt; The old code removed the frame from oldParent even if newParent is NULL.  The new code does not.
&gt; 
&gt; Indeed, the iframe can be transferred into a document that does not have a frame. I think a document created by XHR is one example.

It is true that an &lt;iframe&gt; can be transferred into a document that does not have a frame.

But it is not possible for newParent to be null in Frame::transferChildFrameToNewDocument() based on the the call order of HTMLFrameElementBase::setRemainsAliveOnRemovalFromTree() and Frame::transferChildFrameToNewDocument(). See the description of bug #49489 &lt;https://bugs.webkit.org/show_bug.cgi?id=49489#c0&gt; for more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308925</commentid>
    <comment_count>19</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-12 21:46:53 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 72901 [details])
&gt; &gt;&gt;&gt; WebCore/page/FrameTree.cpp:75
&gt; &gt;&gt;&gt; +    ASSERT(child-&gt;page() == m_thisFrame-&gt;page());
&gt; &gt;&gt; 
&gt; &gt;&gt; Why is this true?  You can&apos;t transfer frames between pages?
&gt; &gt; 
&gt; &gt; I will look into this further and respond shortly.
&gt; 
&gt; The only code path that calls this method has already updated the page before updating the FrameTree.

From talking with Adam Barth on IRC yesterday (11/12), he is satisfied with this answer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308926</commentid>
    <comment_count>20</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-12 22:01:54 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; (From update of attachment 72901 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72901&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; WebCore/page/Frame.cpp:730
&gt; &gt; &gt; &gt; +    if (newParent) {
&gt; &gt; &gt; 
&gt; &gt; &gt; The old code removed the frame from oldParent even if newParent is NULL.  The new code does not.
&gt; &gt; 
&gt; &gt; Indeed, the iframe can be transferred into a document that does not have a frame. I think a document created by XHR is one example.
&gt; 
&gt; It is true that an &lt;iframe&gt; can be transferred into a document that does not have a frame.

I mean&apos;t to say, that an &lt;iframe&gt; can be adopted by another document D&apos; and appended to D&apos;. That is, I didn&apos;t mean to imply &quot;transferred&quot; as in Frame::transferChildFrameToNewDocument() is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308931</commentid>
    <comment_count>21</comment_count>
      <attachid>72901</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-12 22:46:55 -0800</bug_when>
    <thetext>Comment on attachment 72901
Patch with layout test

Clearing flags on attachment: 72901

Committed r71962: &lt;http://trac.webkit.org/changeset/71962&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308932</commentid>
    <comment_count>22</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-11-12 22:47:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>72534</attachid>
            <date>2010-11-01 11:49:34 -0700</date>
            <delta_ts>2010-11-01 11:50:13 -0700</delta_ts>
            <desc>Example</desc>
            <filename>iframe-reparenting-adopt-node2-sc.html</filename>
            <type>text/html</type>
            <size>1519</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0PgppZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CiAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKfQpmdW5jdGlvbiBydW5UZXN0KCkKewog
ICAgdmFyIGZyYW1lcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKTsK
ICAgIHZhciBkdW1teSA9IGZyYW1lc1swXTsKICAgIHZhciB0ZXN0RnJhbWUgPSBmcmFtZXNbMV07
CiAgICB0ZXN0RnJhbWUuY29udGVudERvY3VtZW50LmFkb3B0Tm9kZShmcmFtZXNbMF0pOwogICAg
dGVzdEZyYW1lLmNvbnRlbnREb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGR1bW15KTsKCiAgICB2
YXIgY2hpbGRGcmFtZXMgPSB0ZXN0RnJhbWUuY29udGVudERvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJpZnJhbWUiKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRGcmFtZXMubGVu
Z3RoOyArK2kpIHsKICAgICAgICAvLyBhbGVydChlc2NhcGUoY2hpbGRGcmFtZXNbaV0uY29udGVu
dFdpbmRvdy5uYW1lKSk7IC8vIEZvciBzb21lIHJlYXNvbiwgYXBwZW5kQ2hpbGQoKSBvbiAiRnJh
bWUgMiIgIGRvZXMgbm90IHdvcmsgaW4gRmlyZWZveCB1bmxlc3Mgd2UgYWxlcnQoKSBmaXJzdC4K
CiAgICAgICAgLy8gTm90ZSwgdW50aWwgd2UgZml4IFdlYktpdCBCdWcgIzY3NTEsIGNvbnRlbnRX
aW5kb3cubmFtZSBleHBvc2VzIHRoZSBpbnRlcm5hbCBuYW1lIG9mIHRoZSBmcmFtZSwgd2hpY2gg
c2hvdWxkIGJlIHVuaXF1ZS4KICAgICAgICBjaGlsZEZyYW1lc1tpXS5jb250ZW50RG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiV2ViS2l0IFVuaXF1ZSBu
YW1lOiAiICsgZXNjYXBlKGNoaWxkRnJhbWVzW2ldLmNvbnRlbnRXaW5kb3cubmFtZSkgKyJcbiIp
KTsKICAgIH0KfQp3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKPC9zY3JpcHQ+CjwvaGVhZD4KPGJv
ZHk+CjxpZnJhbWUgc3JjPSJkYXRhOnRleHQvcGxhaW4sRnJhbWUyIiBuYW1lPSdGcmFtZTEnPjwv
aWZyYW1lPgo8aWZyYW1lIHNyYz0iZGF0YTp0ZXh0L2h0bWwsPHA+VGhpcyB0ZXN0IFBBU1NFRCBp
ZiB0aGlzIHBhZ2UgaGFzIHR3byB1bmlxdWVseS1uYW1lZCAlMjZsdCUzQmlmcmFtZSUyNmd0JTNC
cy48L3A+PHA+Tm90aWNlLCB0aGUgbmFtZSBhdHRyaWJ1dGUgb2YgJnF1b3Q7RnJhbWUxJnF1b3Q7
IGlzIGlkZW50aWNhbCB0byB0aGUgbmFtZSBhdHRyaWJ1dGUgb2YgJnF1b3Q7RnJhbWUyJnF1b3Q7
LiBJbml0aWFsbHksIHRoZXNlIGZyYW1lcyBhcmUgaW4gc2VwYXJhdGUgZG9jdW1lbnRzLjwvcD48
cHJlIGlkPSdjb25zb2xlJz48L3ByZT48aHIvPjxpZnJhbWUgc3JjPSdkYXRhOnRleHQvcGxhaW4s
RnJhbWUxJyBuYW1lPSdGcmFtZTEnPjwvaWZyYW1lPiIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiA3MDBweCI+PC9pZnJhbWU+CjwvYm9keT4KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72739</attachid>
            <date>2010-11-02 14:46:40 -0700</date>
            <delta_ts>2010-11-03 18:59:14 -0700</delta_ts>
            <desc>update internal frame name on reparenting</desc>
            <filename>patch48768.txt</filename>
            <type>text/plain</type>
            <size>4233</size>
            <attacher name="Jenn Braithwaite">jennb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MzY1OGNiLi5iZmRlZDRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEt
MDIgIEplbm4gQnJhaXRod2FpdGUgIDxqZW5uYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVHJhbnNmZXJyZWQgPGlmcmFtZT5z
IG1heSBub3QgaGF2ZSBhIHVuaXF1ZSBpbnRlcm5hbCBuYW1lCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODc2OAorCisgICAgICAgICogZmFzdC9mcmFt
ZXMvaWZyYW1lLXJlcGFyZW50aW5nLXVuaXF1ZS1uYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXVuaXF1ZS1uYW1lLmh0bWw6
IEFkZGVkLgorCiAyMDEwLTExLTAyICBBZGVsZSBQZXRlcnNvbiAgPGFkZWxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy11bmlxdWUtbmFtZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctdW5pcXVlLW5h
bWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMzM4
MDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVw
YXJlbnRpbmctdW5pcXVlLW5hbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKKyAKKwor
LS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4nCistLS0t
LS0tLQorVGhpcyB0ZXN0IFBBU1NFRCBpZiB0aGlzIHBhZ2UgaGFzIHR3byB1bmlxdWVseS1uYW1l
ZCA8aWZyYW1lPnMuCisKK05vdGljZSwgdGhlIG5hbWUgYXR0cmlidXRlIG9mICJGcmFtZTEiIGlz
IGlkZW50aWNhbCB0byB0aGUgbmFtZSBhdHRyaWJ1dGUgb2YgIkZyYW1lMiIuIEluaXRpYWxseSwg
dGhlc2UgZnJhbWVzIGFyZSBpbiBzZXBhcmF0ZSBkb2N1bWVudHMuCisKKworCistLS0tLS0tLQor
RnJhbWU6ICdGcmFtZTEnCistLS0tLS0tLQorRnJhbWUxCitXZWJLaXQgVW5pcXVlIG5hbWU6IEZy
YW1lMQorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi88
IS0tZnJhbWUyLS0+LS0+JworLS0tLS0tLS0KK0ZyYW1lMgorV2ViS2l0IFVuaXF1ZSBuYW1lOiAl
M0MlMjEtLWZyYW1lUGF0aCUyMC8vJTNDJTIxLS1mcmFtZTEtLSUzRS8lM0MlMjEtLWZyYW1lMi0t
JTNFLS0lM0UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBh
cmVudGluZy11bmlxdWUtbmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1l
LXJlcGFyZW50aW5nLXVuaXF1ZS1uYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZWIwYTdiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL2lmcmFtZS1yZXBhcmVudGluZy11bmlxdWUtbmFtZS5odG1sCkBAIC0wLDAgKzEsMzAgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworZnVuY3Rpb24gcnVu
VGVzdCgpCit7CisgICAgdmFyIGZyYW1lcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJpZnJhbWUiKTsKKyAgICB2YXIgZHVtbXkgPSBmcmFtZXNbMF07CisgICAgdmFyIHRlc3RGcmFt
ZSA9IGZyYW1lc1sxXTsKKyAgICB0ZXN0RnJhbWUuY29udGVudERvY3VtZW50LmFkb3B0Tm9kZShk
dW1teSk7CisgICAgdGVzdEZyYW1lLmNvbnRlbnREb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGR1
bW15KTsKKworICAgIHZhciBjaGlsZEZyYW1lcyA9IHRlc3RGcmFtZS5jb250ZW50RG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Y2hpbGRGcmFtZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgLy8gTm90ZSwgdW50aWwgd2UgZml4
IFdlYktpdCBCdWcgIzY3NTEsIGNvbnRlbnRXaW5kb3cubmFtZSBleHBvc2VzIHRoZSBpbnRlcm5h
bCBuYW1lIG9mIHRoZSBmcmFtZSwgd2hpY2ggc2hvdWxkIGJlIHVuaXF1ZS4KKyAgICAgICAgY2hp
bGRGcmFtZXNbaV0uY29udGVudERvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoIldlYktpdCBVbmlxdWUgbmFtZTogIiArIGVzY2FwZShjaGlsZEZyYW1lc1tp
XS5jb250ZW50V2luZG93Lm5hbWUpICsiXG4iKSk7CisgICAgfQorfQord2luZG93Lm9ubG9hZCA9
IHJ1blRlc3Q7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBzcmM9ImRhdGE6
dGV4dC9wbGFpbixGcmFtZTIiIG5hbWU9J0ZyYW1lMSc+PC9pZnJhbWU+Cis8aWZyYW1lIHNyYz0i
ZGF0YTp0ZXh0L2h0bWwsPHA+VGhpcyB0ZXN0IFBBU1NFRCBpZiB0aGlzIHBhZ2UgaGFzIHR3byB1
bmlxdWVseS1uYW1lZCAlMjZsdCUzQmlmcmFtZSUyNmd0JTNCcy48L3A+PHA+Tm90aWNlLCB0aGUg
bmFtZSBhdHRyaWJ1dGUgb2YgJnF1b3Q7RnJhbWUxJnF1b3Q7IGlzIGlkZW50aWNhbCB0byB0aGUg
bmFtZSBhdHRyaWJ1dGUgb2YgJnF1b3Q7RnJhbWUyJnF1b3Q7LiBJbml0aWFsbHksIHRoZXNlIGZy
YW1lcyBhcmUgaW4gc2VwYXJhdGUgZG9jdW1lbnRzLjwvcD48cHJlIGlkPSdjb25zb2xlJz48L3By
ZT48aHIvPjxpZnJhbWUgc3JjPSdkYXRhOnRleHQvcGxhaW4sRnJhbWUxJyBuYW1lPSdGcmFtZTEn
PjwvaWZyYW1lPiIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiA3MDBweCI+PC9pZnJhbWU+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDhhMDk4NjUuLjQ4YmM2ZDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAt
MTEtMDIgIEplbm4gQnJhaXRod2FpdGUgIDxqZW5uYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVHJhbnNmZXJyZWQgPGlmcmFt
ZT5zIG1heSBub3QgaGF2ZSBhIHVuaXF1ZSBpbnRlcm5hbCBuYW1lCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODc2OAorCisgICAgICAgIFRlc3Q6IGZh
c3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy11bmlxdWUtbmFtZS5odG1sCisKKyAgICAgICAg
KiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp0cmFuc2ZlckNoaWxk
RnJhbWVUb05ld0RvY3VtZW50KToKKyAgICAgICAgVXBkYXRlIGludGVybmFsIGZyYW1lIG5hbWUg
Zm9yIHVuaXF1ZW5lc3MgaW4gbmV3IHRyZWUuCisgICAgICAgIAogMjAxMC0xMS0wMiAgUGF2ZWwg
RmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQu
IEZvbGxvdyB1cCB0byByNzExMzk6IHJlbW92aW5nIHVudXNlZCBpbWFnZXMuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA4
OTA5NzU1Li4zODllMWUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBi
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTczNSw2ICs3MzUsNyBAQCB2b2lkIEZyYW1lOjp0
cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCkKICAgICAgICAgaWYgKG5ld1BhcmVudCkg
ewogICAgICAgICAgICAgbmV3UGFyZW50LT50cmVlKCktPmFwcGVuZENoaWxkKHRoaXMpOwogICAg
ICAgICAgICAgbV9vd25lckVsZW1lbnQtPnNldE5hbWUoKTsKKyAgICAgICAgICAgIHRyZWUoKS0+
c2V0TmFtZSh0cmVlKCktPm5hbWUoKSk7CiAgICAgICAgIH0KICAgICAgICAgZGlkVHJhbnNmZXIg
PSB0cnVlOwogICAgIH0K
</data>
<flag name="review"
          id="63041"
          type_id="1"
          status="-"
          setter="dbates"
    />
    <flag name="commit-queue"
          id="63042"
          type_id="3"
          status="-"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72743</attachid>
            <date>2010-11-02 14:56:57 -0700</date>
            <delta_ts>2010-11-03 18:59:14 -0700</delta_ts>
            <desc>[Patch] Work-in-progress</desc>
            <filename>bug48768_wip.diff</filename>
            <type>text/plain</type>
            <size>895</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IC9Vc2Vycy9kYmF0ZXMvRGVza3RvcC9XZWJLaXQvV2ViQ29yZS9wYWdlL0ZyYW1lVHJl
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gL1VzZXJzL2RiYXRlcy9EZXNrdG9wL1dlYktpdC9XZWJDb3Jl
L3BhZ2UvRnJhbWVUcmVlLmNwcAkocmV2aXNpb24gNzExNTkpCisrKyAvVXNlcnMvZGJhdGVzL0Rl
c2t0b3AvV2ViS2l0L1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw4ICs2MywxNCBAQAogdm9pZCBGcmFtZVRyZWU6OmFwcGVuZENoaWxkKFBhc3NSZWZQdHI8
RnJhbWU+IGNoaWxkKQogewogICAgIEFTU0VSVChjaGlsZC0+cGFnZSgpID09IG1fdGhpc0ZyYW1l
LT5wYWdlKCkpOwotICAgIGNoaWxkLT50cmVlKCktPm1fcGFyZW50ID0gbV90aGlzRnJhbWU7Cisg
ICAgaWYgKGNoaWxkLT50cmVlKCktPnBhcmVudCgpICE9IG1fdGhpc0ZyYW1lKSB7CisgICAgICAg
IGNoaWxkLT50cmVlKCktPm1fcGFyZW50ID0gbV90aGlzRnJhbWU7CiAKKyAgICAgICAgLy8gV2Ug
bmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgY2hpbGQgc3RpbGwgaGFzIGEgdW5pcXVlIGZyYW1lIG5h
bWUgKHdpdGggcmVzcGVjdCB0bworICAgICAgICAvLyBpdHMgcGFyZW50KSBzaW5jZSBpdCBpcyBt
YXkgaGF2ZSB0cmFuc2ZlcnJlZCBmcm9tIHBhZ2UgQSB0byBwYWdlIEIsIHdoZXJlIEEgIT0gQi4K
KyAgICAgICAgY2hpbGQtPnRyZWUoKS0+bV9uYW1lID0gdW5pcXVlQ2hpbGROYW1lKGNoaWxkLT50
cmVlKCktPm1fZG9tTmFtZSk7CisgICAgfQorCiAgICAgRnJhbWUqIG9sZExhc3QgPSBtX2xhc3RD
aGlsZDsKICAgICBtX2xhc3RDaGlsZCA9IGNoaWxkLmdldCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72896</attachid>
            <date>2010-11-03 18:59:14 -0700</date>
            <delta_ts>2010-11-03 20:19:58 -0700</delta_ts>
            <desc>Patch with layout test</desc>
            <filename>Bug48768_f1.patch</filename>
            <type>text/plain</type>
            <size>6343</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTI5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMTEtMDMgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRyYW5z
ZmVycmVkIDxpZnJhbWU+cyBtYXkgbm90IGhhdmUgYSB1bmlxdWUgaW50ZXJuYWwgbmFtZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3NjgKKworICAg
ICAgICBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBhbiA8aWZyYW1lPiB0aGF0IGlzIHRyYW5zZmVycmVk
IGZyb20KKyAgICAgICAgZG9jdW1lbnQgQSB0byBkb2N1bWVudCBCLCB3aGVyZSBBICE9IEIsIG1h
eSBub3QgaGF2ZSBhCisgICAgICAgIHVuaXF1ZSBpbnRlcm5hbCBuYW1lIGluIEIuCisKKyAgICAg
ICAgVGVzdDogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXVuaXF1ZS1uYW1lLmh0bWwK
KworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnRy
YW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQpOiBNb2RpZmllZCB0byBjYWxsIEZyYW1lVHJl
ZTo6dHJhbnNmZXJDaGlsZCgpLgorICAgICAgICAqIHBhZ2UvRnJhbWVUcmVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6dHJhbnNmZXJDaGlsZCk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVUcmVlOjphcHBlbmRDaGlsZCk6IE1vZGlmaWVkIHRvIGNhbGwgRnJhbWVU
cmVlOjphY3R1YWxseUFwcGVuZENoaWxkKCkuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6
OmFjdHVhbGx5QXBwZW5kQ2hpbGQpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVHJlZS5o
OgorCiAyMDEwLTExLTAzICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiA3MTI1NCkK
KysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNywxNiArNzI3
LDkgQEAgdm9pZCBGcmFtZTo6dHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bQogICAgICAgICBk
aWRUcmFuc2ZlciA9IHRydWU7CiAgICAgfQogCi0gICAgLy8gVXBkYXRlIHRoZSBmcmFtZSB0cmVl
LgotICAgIEZyYW1lKiBvbGRQYXJlbnQgPSB0cmVlKCktPnBhcmVudCgpOwotICAgIGlmIChvbGRQ
YXJlbnQgIT0gbmV3UGFyZW50KSB7Ci0gICAgICAgIGlmIChvbGRQYXJlbnQpCi0gICAgICAgICAg
ICBvbGRQYXJlbnQtPnRyZWUoKS0+cmVtb3ZlQ2hpbGQodGhpcyk7Ci0gICAgICAgIGlmIChuZXdQ
YXJlbnQpIHsKLSAgICAgICAgICAgIG5ld1BhcmVudC0+dHJlZSgpLT5hcHBlbmRDaGlsZCh0aGlz
KTsKLSAgICAgICAgICAgIG1fb3duZXJFbGVtZW50LT5zZXROYW1lKCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgZGlkVHJhbnNmZXIgPSB0cnVlOworICAgIGlmIChuZXdQYXJlbnQpIHsKKyAgICAgICAg
Ly8gVXBkYXRlIHRoZSBmcmFtZSB0cmVlLgorICAgICAgICBkaWRUcmFuc2ZlciA9IG5ld1BhcmVu
dC0+dHJlZSgpLT50cmFuc2ZlckNoaWxkKHRoaXMpOwogICAgIH0KIAogICAgIC8vIEF2b2lkIHVu
bmVjZXNzYXJ5IGNhbGxzIHRvIGNsaWVudCBhbmQgZnJhbWUgc3VidHJlZSBpZiB0aGUgZnJhbWUg
ZW5kZWQKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCShyZXZpc2lvbiA3MTI1NCkKKysrIFdlYkNvcmUvcGFn
ZS9GcmFtZVRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMSArNjMsMzUgQEAgRnJhbWUq
IEZyYW1lVHJlZTo6cGFyZW50KGJvb2wgY2hlY2tGb3JEaQogICAgIHJldHVybiBtX3BhcmVudDsK
IH0KIAorYm9vbCBGcmFtZVRyZWU6OnRyYW5zZmVyQ2hpbGQoUGFzc1JlZlB0cjxGcmFtZT4gY2hp
bGQpCit7CisgICAgRnJhbWUqIG9sZFBhcmVudCA9IGNoaWxkLT50cmVlKCktPnBhcmVudCgpOwor
ICAgIGlmIChvbGRQYXJlbnQgPT0gbV90aGlzRnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsg
Ly8gfGNoaWxkfCBpcyBhbHJlYWR5IGEgY2hpbGQgb2YgbV90aGlzRnJhbWUuCisKKyAgICBpZiAo
b2xkUGFyZW50KQorICAgICAgICBvbGRQYXJlbnQtPnRyZWUoKS0+cmVtb3ZlQ2hpbGQoY2hpbGQu
Z2V0KCkpOworCisgICAgQVNTRVJUKGNoaWxkLT5wYWdlKCkgPT0gbV90aGlzRnJhbWUtPnBhZ2Uo
KSk7CisgICAgY2hpbGQtPnRyZWUoKS0+bV9wYXJlbnQgPSBtX3RoaXNGcmFtZTsKKworICAgIC8v
IFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGNoaWxkIHN0aWxsIGhhcyBhIHVuaXF1ZSBmcmFt
ZSBuYW1lIHdpdGggcmVzcGVjdCB0byBpdHMgbmV3IHBhcmVudC4KKyAgICBjaGlsZC0+dHJlZSgp
LT5zZXROYW1lKGNoaWxkLT50cmVlKCktPm1fbmFtZSk7CisKKyAgICBhY3R1YWxseUFwcGVuZENo
aWxkKGNoaWxkKTsgLy8gTm90ZSwgb24gcmV0dXJuIHxjaGlsZHwgaXMgbnVsbC4KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogdm9pZCBGcmFtZVRyZWU6OmFwcGVuZENoaWxkKFBhc3NSZWZQdHI8RnJh
bWU+IGNoaWxkKQogewogICAgIEFTU0VSVChjaGlsZC0+cGFnZSgpID09IG1fdGhpc0ZyYW1lLT5w
YWdlKCkpOwogICAgIGNoaWxkLT50cmVlKCktPm1fcGFyZW50ID0gbV90aGlzRnJhbWU7CisgICAg
YWN0dWFsbHlBcHBlbmRDaGlsZChjaGlsZCk7IC8vIE5vdGUsIG9uIHJldHVybiB8Y2hpbGR8IGlz
IG51bGwuCit9CiAKK3ZvaWQgRnJhbWVUcmVlOjphY3R1YWxseUFwcGVuZENoaWxkKFBhc3NSZWZQ
dHI8RnJhbWU+IGNoaWxkKQoreworICAgIEFTU0VSVChjaGlsZC0+dHJlZSgpLT5tX3BhcmVudCA9
PSBtX3RoaXNGcmFtZSk7CiAgICAgRnJhbWUqIG9sZExhc3QgPSBtX2xhc3RDaGlsZDsKICAgICBt
X2xhc3RDaGlsZCA9IGNoaWxkLmdldCgpOwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWVUcmVl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCShyZXZpc2lvbiA3MTI1
NCkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiAr
NTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEZyYW1lKiB0cmF2ZXJzZVByZXZp
b3VzV2l0aFdyYXAoYm9vbCkgY29uc3Q7CiAgICAgICAgIAogICAgICAgICB2b2lkIGFwcGVuZENo
aWxkKFBhc3NSZWZQdHI8RnJhbWU+KTsKKyAgICAgICAgYm9vbCB0cmFuc2ZlckNoaWxkKFBhc3NS
ZWZQdHI8RnJhbWU+KTsKICAgICAgICAgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgeyBtX3BhcmVu
dCA9IDA7IH0KICAgICAgICAgdm9pZCByZW1vdmVDaGlsZChGcmFtZSopOwogCkBAIC03MCw2ICs3
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZyYW1l
KiBkZWVwTGFzdENoaWxkKCkgY29uc3Q7CisgICAgICAgIHZvaWQgYWN0dWFsbHlBcHBlbmRDaGls
ZChQYXNzUmVmUHRyPEZyYW1lPik7CiAKICAgICAgICAgRnJhbWUqIG1fdGhpc0ZyYW1lOwogCklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA3MTI5NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTExLTAzICBEYW5pZWwgQmF0ZXMgIDxkYmF0
ZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUcmFuc2ZlcnJlZCA8aWZyYW1lPnMgbWF5IG5vdCBoYXZlIGEgdW5pcXVlIGludGVybmFs
IG5hbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4
NzY4CisKKyAgICAgICAgVGVzdHMgdGhhdCBhbiA8aWZyYW1lPiB3aGljaCBpcyB0cmFuc2ZlcnJl
ZCBmcm9tIGRvY3VtZW50IEEgdG8KKyAgICAgICAgZG9jdW1lbnQgQiwgd2hlcmUgQSAhPSBCLCBo
YXMgYSB1bmlxdWUgbmFtZSBpbiBCLgorCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJl
cGFyZW50aW5nLXVuaXF1ZS1uYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXVuaXF1ZS1uYW1lLmh0bWw6IEFkZGVkLgorCiAy
MDEwLTExLTAzICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBh
cmVudGluZy11bmlxdWUtbmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXVuaXF1ZS1uYW1lLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVu
dGluZy11bmlxdWUtbmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTgg
QEAKKyAKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4t
LT4nCistLS0tLS0tLQorVGhpcyB0ZXN0IFBBU1NFRCBpZiB0aGlzIHBhZ2UgaGFzIHR3byB1bmlx
dWVseS1uYW1lZCA8aWZyYW1lPnMuCisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQ
YXRoIC8vPCEtLWZyYW1lMS0tPi88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK0ZyYW1lIDEK
KworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4vPCEtLWZy
YW1lMS0tPi0tPicKKy0tLS0tLS0tCitGcmFtZSAyCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctdW5pcXVlLW5hbWUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctdW5pcXVlLW5hbWUuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVu
dGluZy11bmlxdWUtbmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3Qo
KQoreworICAgIHZhciBmcmFtZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZy
YW1lIik7CisgICAgdmFyIGR1bW15ID0gZnJhbWVzWzBdOworICAgIHZhciB0ZXN0RnJhbWUgPSBm
cmFtZXNbMV07CisgICAgdGVzdEZyYW1lLmNvbnRlbnREb2N1bWVudC5hZG9wdE5vZGUoZnJhbWVz
WzBdKTsKKyAgICB0ZXN0RnJhbWUuY29udGVudERvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZHVt
bXkpOworfQord2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGlmcmFtZSBzcmM9ImRhdGE6dGV4dC9wbGFpbixGcmFtZSAyIj48L2lmcmFtZT4KKzxp
ZnJhbWUgc3JjPSJkYXRhOnRleHQvaHRtbCw8cD5UaGlzIHRlc3QgUEFTU0VEIGlmIHRoaXMgcGFn
ZSBoYXMgdHdvIHVuaXF1ZWx5LW5hbWVkICUyNmx0JTNCaWZyYW1lJTI2Z3QlM0JzLjwvcD48aWZy
YW1lIHNyYz0nZGF0YTp0ZXh0L3BsYWluLEZyYW1lIDEnPjwvaWZyYW1lPiI+PC9pZnJhbWU+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72901</attachid>
            <date>2010-11-03 20:19:58 -0700</date>
            <delta_ts>2010-11-12 22:46:55 -0800</delta_ts>
            <desc>Patch with layout test</desc>
            <filename>Bug48768_f2.patch</filename>
            <type>text/plain</type>
            <size>8417</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTMwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMTEtMDMgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRyYW5z
ZmVycmVkIDxpZnJhbWU+cyBtYXkgbm90IGhhdmUgYSB1bmlxdWUgaW50ZXJuYWwgbmFtZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3NjgKKworICAg
ICAgICBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBhbiA8aWZyYW1lPiB0aGF0IGlzIHRyYW5zZmVycmVk
IGZyb20KKyAgICAgICAgZG9jdW1lbnQgQSB0byBkb2N1bWVudCBCLCB3aGVyZSBBICE9IEIsIG1h
eSBub3QgaGF2ZSBhCisgICAgICAgIHVuaXF1ZSBpbnRlcm5hbCBuYW1lIGluIEIuCisKKyAgICAg
ICAgVGVzdDogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXVuaXF1ZS1uYW1lLmh0bWwK
KworICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVuVVJMKTogSW5saW5lZCBj
b2RlIGZyb20KKyAgICAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWUoKSBzbyB0aGF0
IHdlIGNhbiByZW1vdmUgc2V0TmFtZSgpLCB3aGljaAorICAgICAgICB3YXMgb25seSBjYWxsZWQg
YmVpbmcgY2FsbGVkIGJ5IEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXROYW1lQW5kT3BlblVSTCgp
LgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaDogUmVtb3ZlZCBIVE1MRnJh
bWVFbGVtZW50QmFzZTo6c2V0TmFtZSgpLgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lT3duZXJF
bGVtZW50Lmg6IFJlbW92ZWQgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpzZXROYW1lKCkuCisgICAg
ICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6dHJhbnNmZXJD
aGlsZEZyYW1lVG9OZXdEb2N1bWVudCk6IE1vZGlmaWVkIHRvIGNhbGwgRnJhbWVUcmVlOjp0cmFu
c2ZlckNoaWxkKCkuCisgICAgICAgICogcGFnZS9GcmFtZVRyZWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVUcmVlOjp0cmFuc2ZlckNoaWxkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVRyZWU6OmFwcGVuZENoaWxkKTogTW92ZWQgdGhlIG1ham9yaXR5IG9mIHRoZSBjb2Rl
IGludG8gRnJhbWVUcmVlOjphY3R1YWxseUFwcGVuZENoaWxkKCkuCisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVRyZWU6OmFjdHVhbGx5QXBwZW5kQ2hpbGQpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdl
L0ZyYW1lVHJlZS5oOgorCiAyMDEwLTExLTAzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAJKHJldmlzaW9uIDcxMjU0KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDE2
ICsxNDgsMTEgQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VNYXBwZWRBdAogICAg
ICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwog
fQogCi12b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXROYW1lKCkKK3ZvaWQgSFRNTEZyYW1l
RWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVuVVJMKCkKIHsKICAgICBtX2ZyYW1lTmFtZSA9IGdl
dEF0dHJpYnV0ZShuYW1lQXR0cik7CiAgICAgaWYgKG1fZnJhbWVOYW1lLmlzTnVsbCgpKQogICAg
ICAgICBtX2ZyYW1lTmFtZSA9IGdldElkQXR0cmlidXRlKCk7Ci19Ci0KLXZvaWQgSFRNTEZyYW1l
RWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVuVVJMKCkKLXsKLSAgICBzZXROYW1lKCk7CiAgICAg
b3BlblVSTCgpOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAkocmV2
aXNpb24gNzEyNTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNTksOCArNTksNiBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwg
Ym9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBzZXROYW1lKCk7Ci0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZSgpOwogICAgIHZvaWQg
Y2hlY2tJbkRvY3VtZW50VGltZXJGaXJlZChUaW1lcjxIVE1MRnJhbWVFbGVtZW50QmFzZT4qKTsK
ICAgICB2b2lkIHVwZGF0ZU9uUmVwYXJlbnRpbmcoKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1l
T3duZXJFbGVtZW50LmgJKHJldmlzaW9uIDcxMjU0KQorKysgV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZU93bmVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw2IEBAIHByb3RlY3Rl
ZDoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEZyYW1lOwogCi0gICAgdmlydHVhbCB2b2lk
IHNldE5hbWUoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZU93bmVyRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJs
ZShLZXlib2FyZEV2ZW50KikgY29uc3QgeyByZXR1cm4gbV9jb250ZW50RnJhbWU7IH0KIApJbmRl
eDogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCShyZXZpc2lvbiA3MTI1NCkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcyNywxNiArNzI3LDkgQEAgdm9pZCBGcmFtZTo6dHJhbnNmZXJDaGlsZEZy
YW1lVG9OZXdEb2N1bQogICAgICAgICBkaWRUcmFuc2ZlciA9IHRydWU7CiAgICAgfQogCi0gICAg
Ly8gVXBkYXRlIHRoZSBmcmFtZSB0cmVlLgotICAgIEZyYW1lKiBvbGRQYXJlbnQgPSB0cmVlKCkt
PnBhcmVudCgpOwotICAgIGlmIChvbGRQYXJlbnQgIT0gbmV3UGFyZW50KSB7Ci0gICAgICAgIGlm
IChvbGRQYXJlbnQpCi0gICAgICAgICAgICBvbGRQYXJlbnQtPnRyZWUoKS0+cmVtb3ZlQ2hpbGQo
dGhpcyk7Ci0gICAgICAgIGlmIChuZXdQYXJlbnQpIHsKLSAgICAgICAgICAgIG5ld1BhcmVudC0+
dHJlZSgpLT5hcHBlbmRDaGlsZCh0aGlzKTsKLSAgICAgICAgICAgIG1fb3duZXJFbGVtZW50LT5z
ZXROYW1lKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZGlkVHJhbnNmZXIgPSB0cnVlOworICAgIGlm
IChuZXdQYXJlbnQpIHsKKyAgICAgICAgLy8gVXBkYXRlIHRoZSBmcmFtZSB0cmVlLgorICAgICAg
ICBkaWRUcmFuc2ZlciA9IG5ld1BhcmVudC0+dHJlZSgpLT50cmFuc2ZlckNoaWxkKHRoaXMpOwog
ICAgIH0KIAogICAgIC8vIEF2b2lkIHVubmVjZXNzYXJ5IGNhbGxzIHRvIGNsaWVudCBhbmQgZnJh
bWUgc3VidHJlZSBpZiB0aGUgZnJhbWUgZW5kZWQKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVRy
ZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCShyZXZpc2lv
biA3MTI1NCkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MywxMSArNjMsMzUgQEAgRnJhbWUqIEZyYW1lVHJlZTo6cGFyZW50KGJvb2wgY2hlY2tGb3JE
aQogICAgIHJldHVybiBtX3BhcmVudDsKIH0KIAorYm9vbCBGcmFtZVRyZWU6OnRyYW5zZmVyQ2hp
bGQoUGFzc1JlZlB0cjxGcmFtZT4gY2hpbGQpCit7CisgICAgRnJhbWUqIG9sZFBhcmVudCA9IGNo
aWxkLT50cmVlKCktPnBhcmVudCgpOworICAgIGlmIChvbGRQYXJlbnQgPT0gbV90aGlzRnJhbWUp
CisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gfGNoaWxkfCBpcyBhbHJlYWR5IGEgY2hpbGQgb2Yg
bV90aGlzRnJhbWUuCisKKyAgICBpZiAob2xkUGFyZW50KQorICAgICAgICBvbGRQYXJlbnQtPnRy
ZWUoKS0+cmVtb3ZlQ2hpbGQoY2hpbGQuZ2V0KCkpOworCisgICAgQVNTRVJUKGNoaWxkLT5wYWdl
KCkgPT0gbV90aGlzRnJhbWUtPnBhZ2UoKSk7CisgICAgY2hpbGQtPnRyZWUoKS0+bV9wYXJlbnQg
PSBtX3RoaXNGcmFtZTsKKworICAgIC8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGNoaWxk
IHN0aWxsIGhhcyBhIHVuaXF1ZSBmcmFtZSBuYW1lIHdpdGggcmVzcGVjdCB0byBpdHMgbmV3IHBh
cmVudC4KKyAgICBjaGlsZC0+dHJlZSgpLT5zZXROYW1lKGNoaWxkLT50cmVlKCktPm1fbmFtZSk7
CisKKyAgICBhY3R1YWxseUFwcGVuZENoaWxkKGNoaWxkKTsgLy8gTm90ZSwgb24gcmV0dXJuIHxj
aGlsZHwgaXMgbnVsbC4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBGcmFtZVRyZWU6OmFw
cGVuZENoaWxkKFBhc3NSZWZQdHI8RnJhbWU+IGNoaWxkKQogewogICAgIEFTU0VSVChjaGlsZC0+
cGFnZSgpID09IG1fdGhpc0ZyYW1lLT5wYWdlKCkpOwogICAgIGNoaWxkLT50cmVlKCktPm1fcGFy
ZW50ID0gbV90aGlzRnJhbWU7CisgICAgYWN0dWFsbHlBcHBlbmRDaGlsZChjaGlsZCk7IC8vIE5v
dGUsIG9uIHJldHVybiB8Y2hpbGR8IGlzIG51bGwuCit9CiAKK3ZvaWQgRnJhbWVUcmVlOjphY3R1
YWxseUFwcGVuZENoaWxkKFBhc3NSZWZQdHI8RnJhbWU+IGNoaWxkKQoreworICAgIEFTU0VSVChj
aGlsZC0+dHJlZSgpLT5tX3BhcmVudCA9PSBtX3RoaXNGcmFtZSk7CiAgICAgRnJhbWUqIG9sZExh
c3QgPSBtX2xhc3RDaGlsZDsKICAgICBtX2xhc3RDaGlsZCA9IGNoaWxkLmdldCgpOwogCkluZGV4
OiBXZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Zy
YW1lVHJlZS5oCShyZXZpc2lvbiA3MTI1NCkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIEZyYW1lKiB0cmF2ZXJzZVByZXZpb3VzV2l0aFdyYXAoYm9vbCkgY29uc3Q7CiAgICAgICAg
IAogICAgICAgICB2b2lkIGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8RnJhbWU+KTsKKyAgICAgICAg
Ym9vbCB0cmFuc2ZlckNoaWxkKFBhc3NSZWZQdHI8RnJhbWU+KTsKICAgICAgICAgdm9pZCBkZXRh
Y2hGcm9tUGFyZW50KCkgeyBtX3BhcmVudCA9IDA7IH0KICAgICAgICAgdm9pZCByZW1vdmVDaGls
ZChGcmFtZSopOwogCkBAIC03MCw2ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIEZyYW1lKiBkZWVwTGFzdENoaWxkKCkgY29uc3Q7CisgICAgICAg
IHZvaWQgYWN0dWFsbHlBcHBlbmRDaGlsZChQYXNzUmVmUHRyPEZyYW1lPik7CiAKICAgICAgICAg
RnJhbWUqIG1fdGhpc0ZyYW1lOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTMwMCkKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTEx
LTAzICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUcmFuc2ZlcnJlZCA8aWZyYW1lPnMgbWF5IG5v
dCBoYXZlIGEgdW5pcXVlIGludGVybmFsIG5hbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NzY4CisKKyAgICAgICAgVGVzdHMgdGhhdCBhbiA8aWZy
YW1lPiB3aGljaCBpcyB0cmFuc2ZlcnJlZCBmcm9tIGRvY3VtZW50IEEgdG8KKyAgICAgICAgZG9j
dW1lbnQgQiwgd2hlcmUgQSAhPSBCLCBoYXMgYSB1bmlxdWUgbmFtZSBpbiBCLgorCisgICAgICAg
ICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXVuaXF1ZS1uYW1lLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXVuaXF1
ZS1uYW1lLmh0bWw6IEFkZGVkLgorCiAyMDEwLTExLTAzICBDc2FiYSBPc3p0cm9nb27DoWMgIDxv
c3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy11bmlxdWUtbmFtZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5n
LXVuaXF1ZS1uYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy11bmlxdWUtbmFtZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAKKyAKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZy
YW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4nCistLS0tLS0tLQorVGhpcyB0ZXN0IFBBU1NFRCBp
ZiBEUlQgb3V0cHV0cyB0d28gPGlmcmFtZT5zIHdpdGggdW5pcXVlIG5hbWVzLgorCisKKworLS0t
LS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4vPCEtLWZyYW1lMC0t
Pi0tPicKKy0tLS0tLS0tCitGcmFtZSAwCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBh
dGggLy88IS0tZnJhbWUxLS0+LzwhLS1mcmFtZTEtLT4tLT4nCistLS0tLS0tLQorRnJhbWUgMQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXVuaXF1ZS1u
YW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJl
cGFyZW50aW5nLXVuaXF1ZS1uYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctdW5pcXVlLW5hbWUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgp
OworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgZnJhbWVzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpOworICAgIHZhciBkdW1teSA9IGZyYW1lc1sw
XTsKKyAgICB2YXIgdGVzdEZyYW1lID0gZnJhbWVzWzFdOworICAgIHRlc3RGcmFtZS5jb250ZW50
RG9jdW1lbnQuYWRvcHROb2RlKGR1bW15KTsKKyAgICB0ZXN0RnJhbWUuY29udGVudERvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZHVtbXkpOworfQord2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBzcmM9ImRhdGE6dGV4dC9wbGFpbixG
cmFtZSAxIj48L2lmcmFtZT4KKzxpZnJhbWUgc3JjPSJkYXRhOnRleHQvaHRtbCw8cD5UaGlzIHRl
c3QgUEFTU0VEIGlmIERSVCBvdXRwdXRzIHR3byAlMjZsdCUzQmlmcmFtZSUyNmd0JTNCcyB3aXRo
IHVuaXF1ZSBuYW1lcy48L3A+PGlmcmFtZSBzcmM9J2RhdGE6dGV4dC9wbGFpbixGcmFtZSAwJz48
L2lmcmFtZT4iPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>