<?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>54929</bug_id>
          
          <creation_ts>2011-02-21 19:52:22 -0800</creation_ts>
          <short_desc>REGRESSION: Text selection broken for text with line-height applied</short_desc>
          <delta_ts>2011-06-03 09:14:15 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>59435</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick Quinn-Graham">patrick</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ademar</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>leviw</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>355004</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick Quinn-Graham">patrick</who>
    <bug_when>2011-02-21 19:52:22 -0800</bug_when>
    <thetext>Starting a selection at the beginning of the contenteditable area and going past the end of the text results in the text selection being cancelled.

However, just to make this bug hard to reproduce, it only applies above a certain font size, in the attached test case (reduction.html) it only applies above 36px.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355011</commentid>
    <comment_count>1</comment_count>
      <attachid>83261</attachid>
    <who name="Patrick Quinn-Graham">patrick</who>
    <bug_when>2011-02-21 20:00:32 -0800</bug_when>
    <thetext>Created attachment 83261
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355013</commentid>
    <comment_count>2</comment_count>
    <who name="Patrick Quinn-Graham">patrick</who>
    <bug_when>2011-02-21 20:03:46 -0800</bug_when>
    <thetext>Worth noting is that this does not occur in Safari 5.0.3, but does in the latest webkit (r78794) and chromium (75286).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364663</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-09 11:49:02 -0800</bug_when>
    <thetext>This one seems to be a regression in complex text path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364666</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-09 11:52:04 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; This one seems to be a regression in complex text path.

Maybe not.  The selection is actually cancelled so this might be a hit-testing issue than rendering issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364749</commentid>
    <comment_count>5</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-09 13:45:43 -0800</bug_when>
    <thetext>I believe this is a hit testing bug, as you implied.

The selection isn&apos;t cancelled, but instead extended the opposite direction as if you&apos;d dragged your mouse to the line above. You can see this if you start your selection in the middle of the content instead of the beginning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365652</commentid>
    <comment_count>6</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-10 16:41:18 -0800</bug_when>
    <thetext>I messed around a bit here and it comes down to RenderBlock returning the wrong height.  In the success case, a valid height is given to calculating the boundsRect when hit testing the background in RenderBlock::nodeAtPoint, but in the fail case, a height that is much lower than the block&apos;s true height is used instead. When the hit test fails to be in the background for the RenderBlock, selection is placed at the end of the previous content, which gives us the result we&apos;re seeing.

I&apos;ll continue to investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366318</commentid>
    <comment_count>7</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-11 14:29:19 -0800</bug_when>
    <thetext>Found the offending logic in RenderBlock::positionForPointWithInlineChildren (trac won&apos;t look at files as big as RenderBlock.cpp, so no linky). The correct InlineBox is determined, but a point inside that box is supposed to be passed in, but is calculated using the logicalTop, which can be negative when the text exceeds the size of the line. The result is positionForPoint on that box returns a value above it.

I believe using the InlineBox&apos;s root&apos;s selectionTop() is the correct fix for the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366465</commentid>
    <comment_count>8</comment_count>
      <attachid>85560</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-11 18:07:40 -0800</bug_when>
    <thetext>Created attachment 85560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369194</commentid>
    <comment_count>9</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-17 11:57:52 -0700</bug_when>
    <thetext>Can I get a review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369204</commentid>
    <comment_count>10</comment_count>
      <attachid>85560</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-17 12:08:02 -0700</bug_when>
    <thetext>Comment on attachment 85560
Patch

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

I can&apos;t review this patch since I&apos;m not familiar with rendering engine but I&apos;ll comment on some nits in the tests.

&gt; LayoutTests/editing/selection/selecting-text-with-height-exceeding-line-height.html:3
&gt; +&lt;div id=&quot;description&quot;&gt;This tests selection of text boxes that exceed their line height. To test this manually, start dragging in the text below and drag right (not down) past the end of the content. The selection should contain the end of the content.&lt;/div&gt;

I think you should check condition in script (just dump window.getSelection().toString()) so that you can print PASS/FAIL.  That way, you don&apos;t even have to include those editing delegate dumps.

&gt; LayoutTests/editing/selection/selecting-text-with-height-exceeding-line-height.html:10
&gt; +function runTest() {
&gt; +    if (!window.layoutTestController)
&gt; +        return;

I don&apos;t think you need to put your test in this function.  You can just do:

if (window.layoutTestController) {
...
}

&gt; LayoutTests/editing/selection/selecting-text-with-height-exceeding-line-height.html:13
&gt; +    window.layoutTestController.dumpEditingCallbacks();
&gt; +    window.layoutTestController.dumpAsText();

You don&apos;t need &quot;window.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369235</commentid>
    <comment_count>11</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2011-03-17 13:04:28 -0700</bug_when>
    <thetext>-        IntPoint point(pointInLogicalContents.x(), closestBox-&gt;logicalTop());
+        IntPoint point(pointInLogicalContents.x(), closestBox-&gt;isText() ? closestBox-&gt;root()-&gt;selectionTop() : closestBox-&gt;logicalHeight());

Why not pass selectionTop() in all cases?

RenderReplaced::positionForPoint(const IntPoint&amp; point)

assumes that anything above selectionTop() is above it also, for example. Not sure about the others...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369248</commentid>
    <comment_count>12</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-17 13:20:36 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; -        IntPoint point(pointInLogicalContents.x(), closestBox-&gt;logicalTop());
&gt; +        IntPoint point(pointInLogicalContents.x(), closestBox-&gt;isText() ? closestBox-&gt;root()-&gt;selectionTop() : closestBox-&gt;logicalHeight());
&gt; 
&gt; Why not pass selectionTop() in all cases?
&gt; 
&gt; RenderReplaced::positionForPoint(const IntPoint&amp; point)
&gt; 
&gt; assumes that anything above selectionTop() is above it also, for example. Not sure about the others...

I agree, it&apos;s weird, and that was originally the patch I tried. However, this broke for input elements, which would behave exactly like the attached test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392964</commentid>
    <comment_count>13</comment_count>
      <attachid>85560</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-26 16:17:18 -0700</bug_when>
    <thetext>Comment on attachment 85560
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        When an InlineBox has a line-height smaller than its actual height it results in a negative logicalTop for
&gt; +        associated InlineTextBoxes. This negative value won&apos;t necessarily result in a point the RenderText 

Is ever having a negative logicalTop a bug? Shouldn&apos;t logicalTop always be non-negative? I don&apos;t actually know. Hyatt?

&gt; Source/WebCore/rendering/RenderBlock.cpp:4077
&gt; +        IntPoint point(pointInLogicalContents.x(), closestBox-&gt;isText() ? closestBox-&gt;root()-&gt;selectionTop() : closestBox-&gt;logicalHeight());

The selectionTop of the rootlinebox is not necessarily inside the closestBox, is it? As in, what if the closestBox is on the second line?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393867</commentid>
    <comment_count>14</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2011-04-27 15:09:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/9347763&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393875</commentid>
    <comment_count>15</comment_count>
      <attachid>85560</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-04-27 15:20:13 -0700</bug_when>
    <thetext>Comment on attachment 85560
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        associated InlineTextBoxes. This negative value won&apos;t necessarily result in a point the RenderText 
&gt; 
&gt; Is ever having a negative logicalTop a bug? Shouldn&apos;t logicalTop always be non-negative? I don&apos;t actually know. Hyatt?

Perhaps this is the bug, I don&apos;t know. It does render correctly.

&gt;&gt; Source/WebCore/rendering/RenderBlock.cpp:4077
&gt;&gt; +        IntPoint point(pointInLogicalContents.x(), closestBox-&gt;isText() ? closestBox-&gt;root()-&gt;selectionTop() : closestBox-&gt;logicalHeight());
&gt; 
&gt; The selectionTop of the rootlinebox is not necessarily inside the closestBox, is it? As in, what if the closestBox is on the second line?

The RootInlineBox always owns just one line, so it&apos;ll always contain its InlineBox children.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395409</commentid>
    <comment_count>16</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-04-29 12:01:30 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; Is ever having a negative logicalTop a bug? Shouldn&apos;t logicalTop always be non-negative? I don&apos;t actually know. Hyatt?

It&apos;d be really great to have an answer to this question so we could fix this ugly bug :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395544</commentid>
    <comment_count>17</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-04-29 15:07:07 -0700</bug_when>
    <thetext>It&apos;s not a bug that logicalTop can be negative.  It&apos;s a bit confusing to me why you would have to special case text though.  Other boxes can have negative logicalTop values also.  If you need a point that is inside selectionTop and selectionBottom maybe just clamp to it with max/min rather than special casing with isText?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395549</commentid>
    <comment_count>18</comment_count>
      <attachid>85560</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-29 15:15:16 -0700</bug_when>
    <thetext>Comment on attachment 85560
Patch

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderBlock.cpp:4077
&gt;&gt;&gt; +        IntPoint point(pointInLogicalContents.x(), closestBox-&gt;isText() ? closestBox-&gt;root()-&gt;selectionTop() : closestBox-&gt;logicalHeight());
&gt;&gt; 
&gt;&gt; The selectionTop of the rootlinebox is not necessarily inside the closestBox, is it? As in, what if the closestBox is on the second line?
&gt; 
&gt; The RootInlineBox always owns just one line, so it&apos;ll always contain its InlineBox children.

Heh. Whoops. Wrapping was a bad example. A better example is the following:
&lt;span style=&quot;border:2px solid lawngreen&quot;&gt;
    &lt;span style=&quot;border:1px solid blue;font-size:20em&quot;&gt;foo&lt;/span&gt;
    &lt;span style=&quot;border:1px solid red;&quot;&gt;bar&lt;/span&gt;
&lt;/span&gt;

If you click to the right of foo, but above bar, don&apos;t we pass the wrong value, e.g., we could pass a value that&apos;s below the bottom of the box.

Also, why change logicalTop to logicalHeight in the non-isText case?

Sorry, my knowledge of the RenderTree and LineBox trees isn&apos;t good enough to know the answers to these off the top of my head.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399535</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-06 08:54:29 -0700</bug_when>
    <thetext>*** Bug 60336 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399537</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-06 08:56:10 -0700</bug_when>
    <thetext>I might have encountered this bug while writing a patch for the bug 59435.  Will investigate later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406884</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-19 22:25:27 -0700</bug_when>
    <thetext>Hit testing is editing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406895</commentid>
    <comment_count>22</comment_count>
      <attachid>94178</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-19 22:54:50 -0700</bug_when>
    <thetext>Created attachment 94178
fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413596</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-01 12:54:01 -0700</bug_when>
    <thetext>I wonder how related this is to bug 55481.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413864</commentid>
    <comment_count>24</comment_count>
      <attachid>95709</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-01 20:19:17 -0700</bug_when>
    <thetext>Created attachment 95709
test case 2

(In reply to comment #23)
&gt; I wonder how related this is to bug 55481.

This patch doesn&apos;t fix the bug 55481 but it fixes a similar case where a selectionTop/lineTop is affected by padding of surrounding lines.  Also patches are compatible in that merging both patches don&apos;t break tests added by the patches except... that the test included in the patch for the bug 55481 doesn&apos;t work on any port/platform but whatever platform the author used because the test relies on font metrics and text layout :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413869</commentid>
    <comment_count>25</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-01 20:25:44 -0700</bug_when>
    <thetext>I would really like this patch be landed.  I&apos;m really tired of not being able to select text properly on many websites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413870</commentid>
    <comment_count>26</comment_count>
      <attachid>94178</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-01 20:29:49 -0700</bug_when>
    <thetext>Comment on attachment 94178
fixes the bug

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

&gt; LayoutTests/editing/selection/hit-test-on-text-with-line-height.html:38
&gt; +        document.writeln(&apos;FAIL - selection was not collapsed&apos;);
&gt; +    else if (selection.baseNode != textNode)
&gt; +        document.writeln(&apos;FAIL - baseNode was not &quot;&apos; + textNode.textContent + &apos;&quot;&apos;);
&gt; +    else if (selection.baseOffset != expectedOffset)
&gt; +        document.writeln(&apos;FAIL - caret was at &apos; + selection.baseOffset + &apos; but expected to be at &apos; + expectedOffset);
&gt; +    else
&gt; +        document.writeln(&apos;PASS&apos;);

Please don&apos;t use document.writeln(). Append to innerText or innerHTML instead.

This whole test could probably be a script test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413872</commentid>
    <comment_count>27</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-01 20:34:21 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 94178 [details])
&gt; Please don&apos;t use document.writeln(). Append to innerText or innerHTML instead.

Why?

&gt; This whole test could probably be a script test.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413874</commentid>
    <comment_count>28</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-01 20:37:44 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; (From update of attachment 94178 [details] [details])
&gt; &gt; Please don&apos;t use document.writeln(). Append to innerText or innerHTML instead.
&gt; 
&gt; Why?

http://stackoverflow.com/questions/802854/why-is-document-write-considered-a-bad-practice

&gt; &gt; This whole test could probably be a script test.
&gt; 
&gt; Will do.

Cool, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413878</commentid>
    <comment_count>29</comment_count>
      <attachid>95713</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-01 20:46:27 -0700</bug_when>
    <thetext>Created attachment 95713
converted the test to a script test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414326</commentid>
    <comment_count>30</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-02 12:05:58 -0700</bug_when>
    <thetext>Committed r87936: &lt;http://trac.webkit.org/changeset/87936&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414331</commentid>
    <comment_count>31</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-02 12:09:13 -0700</bug_when>
    <thetext>Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414939</commentid>
    <comment_count>32</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-06-03 09:14:15 -0700</bug_when>
    <thetext>Revision r87936 cherry-picked into qtwebkit-2.2 with commit 3104ebf &lt;http://gitorious.org/webkit/qtwebkit/commit/3104ebf&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>83261</attachid>
            <date>2011-02-21 20:00:32 -0800</date>
            <delta_ts>2011-02-21 20:00:32 -0800</delta_ts>
            <desc>Test case</desc>
            <filename>reduction.html</filename>
            <type>text/html</type>
            <size>1221</size>
            <attacher name="Patrick Quinn-Graham">patrick</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuLXVzIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KPHRp
dGxlPlRlc3QgY2FzZTwvdGl0bGU+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAKICAgIC5j
b250ZW50IHsKICAgICAgY29sb3I6ICM1NTU7CiAgICAgIGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2Es
IEFyaWFsLCBzYW5zLXNlcmlmOwogICAgICBwYWRkaW5nOiAgNXB4IDA7CiAgICAgIGJvcmRlci1i
b3R0b206IDFweCBzb2xpZCByZWQ7CiAgICB9CiAgICAuYXBwbHktbGluZS1oZWlnaHQgewogICAg
ICBsaW5lLWhlaWdodDogMS44ZW07CiAgICB9CiAgICA8L3N0eWxlPgogIDxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJ3aWR0aD00MDAiPgogIDwvaGVhZD4KICA8Ym9keT4KICAgIDxoMT5O
byBsaW5lIGhlaWdodDwvaDE+CiAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij48ZGl2IGNsYXNzPSJj
aSI+PHA+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMjRweDsgIj5URVNUMjQ8L3NwYW4+PC9wPjwv
ZGl2PjwvZGl2PgogICAgPGRpdiBjbGFzcz0iY29udGVudCI+PGRpdiBjbGFzcz0iY2kiPjxwPjxz
cGFuIHN0eWxlPSJmb250LXNpemU6IDM2cHg7ICI+VEVTVDM2PC9zcGFuPjwvcD48L2Rpdj48L2Rp
dj4KICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPjxkaXYgY2xhc3M9ImNpIj48cD48c3BhbiBzdHls
ZT0iZm9udC1zaXplOiA0OHB4OyAiPlRFU1Q0ODwvc3Bhbj48L3A+PC9kaXY+PC9kaXY+CiAgICAK
ICAgIDxoMT5XaXRoIGxpbmUgaGVpZ2h0PC9oMT4KICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPjxk
aXYgY2xhc3M9ImNpIGFwcGx5LWxpbmUtaGVpZ2h0Ij48cD48c3BhbiBzdHlsZT0iZm9udC1zaXpl
OiAyNHB4OyAiPlRFU1QyNDwvc3Bhbj48L3A+PC9kaXY+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJj
b250ZW50Ij48ZGl2IGNsYXNzPSJjaSBhcHBseS1saW5lLWhlaWdodCI+PHA+PHNwYW4gc3R5bGU9
ImZvbnQtc2l6ZTogMzZweDsgIj5URVNUMzY8L3NwYW4+PC9wPjwvZGl2PjwvZGl2PgogICAgPGRp
diBjbGFzcz0iY29udGVudCI+PGRpdiBjbGFzcz0iY2kgYXBwbHktbGluZS1oZWlnaHQiPjxwPjxz
cGFuIHN0eWxlPSJmb250LXNpemU6IDQ4cHg7ICI+VEVTVDQ4PC9zcGFuPjwvcD48L2Rpdj48L2Rp
dj4KICA8L2JvZHk+CiAgCjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85560</attachid>
            <date>2011-03-11 18:07:40 -0800</date>
            <delta_ts>2011-05-19 22:54:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54929-20110311180738.patch</filename>
            <type>text/plain</type>
            <size>5865</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwOTEzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDMtMTEgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJFR1JFU1NJT046IFRleHQgc2VsZWN0aW9uIGJyb2tlbiBm
b3IgdGV4dCB3aXRoIGxpbmUtaGVpZ2h0IGFwcGxpZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0OTI5CisKKyAgICAgICAgV2hlbiBhbiBJbmxpbmVC
b3ggaGFzIGEgbGluZS1oZWlnaHQgc21hbGxlciB0aGFuIGl0cyBhY3R1YWwgaGVpZ2h0IGl0IHJl
c3VsdHMgaW4gYSBuZWdhdGl2ZSBsb2dpY2FsVG9wIGZvcgorICAgICAgICBhc3NvY2lhdGVkIElu
bGluZVRleHRCb3hlcy4gVGhpcyBuZWdhdGl2ZSB2YWx1ZSB3b24ndCBuZWNlc3NhcmlseSByZXN1
bHQgaW4gYSBwb2ludCB0aGUgUmVuZGVyVGV4dCAKKyAgICAgICAgY29uc2lkZXJzIGluc2lkZSBp
dCwgc28gc2VsZWN0aW9uVG9wIHNob3VsZCBiZSB1c2VkIGZvciBJbmxpbmVUZXh0Qm94ZXMgaW5z
dGVhZC4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3RpbmctdGV4dC13
aXRoLWhlaWdodC1leGNlZWRpbmctbGluZS1oZWlnaHQuaHRtbAorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3Np
dGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKToKKwogMjAxMS0wMy0xMSAgQ2hyaXMgTWFy
cmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gODA3NzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MDc0LDcgKzQwNzQsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0
aW9uRm9yCiAgICAgICAgIH0KIAogICAgICAgICAvLyBwYXNzIHRoZSBib3ggYSB0b3AgcG9zaXRp
b24gdGhhdCBpcyBpbnNpZGUgaXQKLSAgICAgICAgSW50UG9pbnQgcG9pbnQocG9pbnRJbkxvZ2lj
YWxDb250ZW50cy54KCksIGNsb3Nlc3RCb3gtPmxvZ2ljYWxUb3AoKSk7CisgICAgICAgIEludFBv
aW50IHBvaW50KHBvaW50SW5Mb2dpY2FsQ29udGVudHMueCgpLCBjbG9zZXN0Qm94LT5pc1RleHQo
KSA/IGNsb3Nlc3RCb3gtPnJvb3QoKS0+c2VsZWN0aW9uVG9wKCkgOiBjbG9zZXN0Qm94LT5sb2dp
Y2FsSGVpZ2h0KCkpOwogICAgICAgICBpZiAoIXN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkpCiAgICAgICAgICAgICBwb2ludCA9IHBvaW50LnRyYW5zcG9zZWRQb2ludCgpOwogICAg
ICAgICBpZiAoY2xvc2VzdEJveC0+cmVuZGVyZXIoKS0+aXNSZXBsYWNlZCgpKQpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gODA5MTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMy0xMSAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUkVHUkVTU0lPTjogVGV4dCBzZWxlY3Rpb24gYnJva2VuIGZvciB0ZXh0IHdpdGggbGluZS1o
ZWlnaHQgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTQ5MjkKKworICAgICAgICBVc2luZyB0aGUgcHJvcGVyIGhpdCB0ZXN0aW5nIHBvaW50
IGZvciB0ZXh0IHRoYXQncyB0YWxsZXIgdGhhbiBpdHMgc3BlY2lmaWVkIGxpbmUtaGVpZ2h0Lgor
CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0aW5nLXRleHQtd2l0aC1oZWlnaHQt
ZXhjZWVkaW5nLWxpbmUtaGVpZ2h0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy9zZWxlY3Rpb24vc2VsZWN0aW5nLXRleHQtd2l0aC1oZWlnaHQtZXhjZWVkaW5nLWxpbmUt
aGVpZ2h0Lmh0bWw6IEFkZGVkLgorCiAyMDExLTAzLTExICBEYXZpZCBMZXZpbiAgPGxldmluQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBGaXggcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVk
IHJlc3VsdCBkdWUgdG8gdHdvIGNoYW5nZXM6CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9zZWxlY3RpbmctdGV4dC13aXRoLWhlaWdodC1leGNlZWRpbmctbGluZS1oZWlnaHQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L3NlbGVjdGluZy10ZXh0LXdpdGgtaGVpZ2h0LWV4Y2VlZGluZy1saW5lLWhlaWdodC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxl
Y3RpbmctdGV4dC13aXRoLWhlaWdodC1leGNlZWRpbmctbGluZS1oZWlnaHQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAj
dGV4dCA+IFNQQU4gPiBQID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2Yg
I3RleHQgPiBTUEFOID4gUCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IFNQQU4gPiBQID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQgPiBTUEFOID4gUCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+
IFNQQU4gPiBQID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTEgb2YgI3RleHQg
PiBTUEFOID4gUCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2Vs
ZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTEgb2YgI3Rl
eHQgPiBTUEFOID4gUCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0
ZXh0ID4gU1BBTiA+IFAgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdl
OnJhbmdlIGZyb20gMTEgb2YgI3RleHQgPiBTUEFOID4gUCA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDI0IG9mICN0ZXh0ID4gU1BBTiA+IFAgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNl
bGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitUaGlzIHRlc3RzIHNlbGVj
dGlvbiBvZiB0ZXh0IGJveGVzIHRoYXQgZXhjZWVkIHRoZWlyIGxpbmUgaGVpZ2h0LiBUbyB0ZXN0
IHRoaXMgbWFudWFsbHksIHN0YXJ0IGRyYWdnaW5nIGluIHRoZSB0ZXh0IGJlbG93IGFuZCBkcmFn
IHJpZ2h0IChub3QgZG93bikgcGFzdCB0aGUgZW5kIG9mIHRoZSBjb250ZW50LiBUaGUgc2VsZWN0
aW9uIHNob3VsZCBjb250YWluIHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQuCitTZWxlY3QgbWUgYW5k
IGRyYWcgcmlnaHQKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdGlu
Zy10ZXh0LXdpdGgtaGVpZ2h0LWV4Y2VlZGluZy1saW5lLWhlaWdodC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdGluZy10ZXh0LXdpdGgtaGVp
Z2h0LWV4Y2VlZGluZy1saW5lLWhlaWdodC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0aW5nLXRleHQtd2l0aC1oZWlnaHQtZXhjZWVkaW5n
LWxpbmUtaGVpZ2h0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQ
RSBodG1sPgorCis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyBzZWxlY3Rpb24gb2Yg
dGV4dCBib3hlcyB0aGF0IGV4Y2VlZCB0aGVpciBsaW5lIGhlaWdodC4gVG8gdGVzdCB0aGlzIG1h
bnVhbGx5LCBzdGFydCBkcmFnZ2luZyBpbiB0aGUgdGV4dCBiZWxvdyBhbmQgZHJhZyByaWdodCAo
bm90IGRvd24pIHBhc3QgdGhlIGVuZCBvZiB0aGUgY29udGVudC4gVGhlIHNlbGVjdGlvbiBzaG91
bGQgY29udGFpbiB0aGUgZW5kIG9mIHRoZSBjb250ZW50LjwvZGl2PgorCis8ZGl2IGlkPSJibG9j
ayI+PHA+PHNwYW4gaWQ9ImlubGluZSIgc3R5bGU9ImZvbnQtc2l6ZTogMjRweDsgbGluZS1oZWln
aHQ6IDJweDsiPlNlbGVjdCBtZSBhbmQgZHJhZyByaWdodDwvc3Bhbj48L3A+PC9kaXY+CisKKzxz
Y3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICghd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFja3MoKTsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFyIGlubGluZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdpbmxpbmUnKTsKKyAgICB2YXIgYmxvY2sgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYmxvY2snKTsKKworICAgIHZhciBtaWRkbGVfeCA9IGlubGluZS5vZmZzZXRMZWZ0ICsgaW5s
aW5lLm9mZnNldFdpZHRoIC8gMjsKKyAgICB2YXIgbWlkZGxlX3kgPSBpbmxpbmUub2Zmc2V0VG9w
ICsgaW5saW5lLm9mZnNldEhlaWdodCAvIDI7CisKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhtaWRkbGVfeCwgbWlkZGxlX3kpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworCisg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8obWlkZGxlX3gsIG1pZGRsZV95KTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhibG9jay5vZmZzZXRXaWR0aCwgbWlkZGxlX3kpOworCisgICAg
ZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitydW5UZXN0KCk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94178</attachid>
            <date>2011-05-19 22:54:50 -0700</date>
            <delta_ts>2011-06-01 20:46:22 -0700</delta_ts>
            <desc>fixes the bug</desc>
            <filename>bug-54929-20110519225447.patch</filename>
            <type>text/plain</type>
            <size>8202</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2OTIyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDUtMTkgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTjogVGV4dCBzZWxlY3Rpb24gYnJva2VuIGZvciB0
ZXh0IHdpdGggbGluZS1oZWlnaHQgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ5MjkKKworICAgICAgICBUaGUgYnVnIHdhcyBjYXVzZWQg
YnkgUmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQb2ludCdzIG5vdCBjb25zaWRlcmluZyB0aGUgY2Fz
ZSB3aGVyZSBhIHBvaW50IGlzCisgICAgICAgIGFib3ZlIHNlbGVjdGlvblRvcCBhbmQgYmVsb3cg
bGluZVRvcCBvZiB0aGUgZmlyc3Qgcm9vdCBpbmxpbmUgYm94LiBGaXhlZCB0aGUgYnVnIGJ5IGNv
bnNpZGVyaW5nCisgICAgICAgIGFueSBwb2ludCBiZXR3ZWVuIHNlbGVjdGlvblRvcCBhbmQgbGlu
ZVRvcCB0byBiZSBpbnNpZGUgYSByb290IGlubGluZSBib3guIFRoaXMgY29uZGl0aW9uIGlzCisg
ICAgICAgIGNvbnNpc3RlbnQgd2l0aCB0aGUgY29uZGl0aW9uIHdlIHVzZSB0byBkZXRlcm1pbmUg
dGhlIGJvdHRvbSBvZiBhIGxpbmUuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zZWxlY3Rpb24v
aGl0LXRlc3Qtb24tdGV4dC13aXRoLWxpbmUtaGVpZ2h0Lmh0bWwKKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9z
aXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbik6IEZpeGVkIGEgY29uZGl0aW9uIHRvIGRl
dGVybWluZSB3aGV0aGVyCisgICAgICAgIG9yIG5vdCBhIHBvaW50IGlzIGFib3ZlIHRoZSBmaXJz
dCByb290IGxpbmUgYm94LiBXZSBuZWVkIHRvIGNoZWNrIGJvdGggc2VsZWN0aW9uVG9wIGFuZCBs
b2dpY2FsVG9wCisgICAgICAgIGZvciB0aGUgc2FtZSByZWFzb24gZXhwbGFpbmVkIGFib3ZlLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQpOiBTZWUgYWJvdmUuCisKIDIwMTEtMDUtMTkgIEp1
bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QGNvZGVhdXJvcmEub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAJKHJldmlzaW9uIDg2OTIwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEzMiw3ICs0MTMyLDggQEAgVmlz
aWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvcgogICAgIH0KIAogICAgIGlmIChj
bG9zZXN0Qm94KSB7Ci0gICAgICAgIGlmIChtb3ZlQ2FyZXRUb0JvdW5kYXJ5ICYmIHBvaW50SW5M
b2dpY2FsQ29udGVudHMueSgpIDwgZmlyc3RSb290Qm94V2l0aENoaWxkcmVuLT5zZWxlY3Rpb25U
b3AoKSkgeworICAgICAgICBpZiAobW92ZUNhcmV0VG9Cb3VuZGFyeSAmJiBwb2ludEluTG9naWNh
bENvbnRlbnRzLnkoKSA8IGZpcnN0Um9vdEJveFdpdGhDaGlsZHJlbi0+c2VsZWN0aW9uVG9wKCkK
KyAgICAgICAgICAgICYmIHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpIDwgZmlyc3RSb290Qm94
V2l0aENoaWxkcmVuLT5sb2dpY2FsVG9wKCkpIHsKICAgICAgICAgICAgIC8vIHkgY29vcmRpbmF0
ZSBpcyBhYm92ZSBmaXJzdCByb290IGxpbmUgYm94LCBzbyByZXR1cm4gdGhlIHN0YXJ0IG9mIHRo
ZSBmaXJzdAogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkZvckJv
eChmaXJzdFJvb3RCb3hXaXRoQ2hpbGRyZW4tPmZpcnN0TGVhZkNoaWxkKCksIHRydWUpLCBET1dO
U1RSRUFNKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcAkocmV2aXNpb24gODY5MjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBWaXNpYmxlUG9z
aXRpb24gUmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQCiAgICAgSW5saW5lVGV4dEJveCogbGFzdEJv
eEFib3ZlID0gMDsKICAgICBmb3IgKElubGluZVRleHRCb3gqIGJveCA9IGZpcnN0VGV4dEJveCgp
OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewogICAgICAgICBSb290SW5saW5lQm94
KiByb290Qm94ID0gYm94LT5yb290KCk7Ci0gICAgICAgIGlmIChwb2ludEJsb2NrRGlyZWN0aW9u
ID49IHJvb3RCb3gtPnNlbGVjdGlvblRvcCgpKSB7CisgICAgICAgIGlmIChwb2ludEJsb2NrRGly
ZWN0aW9uID49IHJvb3RCb3gtPnNlbGVjdGlvblRvcCgpIHx8IHBvaW50QmxvY2tEaXJlY3Rpb24g
Pj0gcm9vdEJveC0+bGluZVRvcCgpKSB7CiAgICAgICAgICAgICBpbnQgYm90dG9tID0gcm9vdEJv
eC0+c2VsZWN0aW9uQm90dG9tKCk7CiAgICAgICAgICAgICBpZiAocm9vdEJveC0+bmV4dFJvb3RC
b3goKSkKICAgICAgICAgICAgICAgICBib3R0b20gPSBtaW4oYm90dG9tLCByb290Qm94LT5uZXh0
Um9vdEJveCgpLT5saW5lVG9wKCkpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODY5MjIpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0w
NS0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OOiBUZXh0IHNlbGVjdGlv
biBicm9rZW4gZm9yIHRleHQgd2l0aCBsaW5lLWhlaWdodCBhcHBsaWVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDkyOQorCisgICAgICAgIEFkZGVk
IGEgdGVzdCB0byBlbnN1cmUgV2ViS2l0IGNhbiBwbGFjZSBjYXJldCBpbiB0ZXh0IHdpdGggYSBs
aW5lLWhlaWdodCBzbWFsbGVyIHRoYW4KKyAgICAgICAgdGhlIGhlaWdodCBvZiB0aGUgdGV4dC4K
KworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2hpdC10ZXN0LW9uLXRleHQtd2l0aC1saW5l
LWhlaWdodC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9u
L2hpdC10ZXN0LW9uLXRleHQtd2l0aC1saW5lLWhlaWdodC5odG1sOiBBZGRlZC4KKwogMjAxMS0w
NS0xOSAgTWlrZSBMYXd0aGVyICA8bWlrZWxhd3RoZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2hpdC10ZXN0LW9uLXRleHQtd2l0aC1saW5lLWhlaWdodC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaGl0LXRlc3Qtb24tdGV4
dC13aXRoLWxpbmUtaGVpZ2h0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2hpdC10ZXN0LW9uLXRleHQtd2l0aC1saW5lLWhlaWdodC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKK1RoaXMgdGVzdCBlbnN1
cmVzIFdlYktpdCBjYW4gcGxhY2UgY2FyZXQgYWZ0ZXIgdGhlIGxpbmUgZXZlbiB3aGVuIHRoZSBs
aW5lLWhlaWdodCBpcyBzbWFsbGVyIHRoYW4gYSBsaW5lLiBUbyBtYW51YWxseSB0ZXN0LCBjbGlj
ayBpbnNpZGUgdGhlIGJsYWNrIGJveCBvdXRzaWRlIHRoZSByZWQgYm94LiBUaGUgY2FyZXQgc2hv
dWxkIGJlIHBsYWNlZCBhdCB0aGUgZW5kIG9mICJoZWxsbyIuCisKK0Fsc28gdGVzdCB0aGF0IHdo
ZW4geW91IGNsaWNrIGluIHRoZSByZWQgYm94IGFib3ZlIG9yIGJlbG93IHRoZSBibGFjayBib3gs
IGNhcmV0IGlzIHBsYWNlZCBhdCB3aGVyZSB5b3UgY2xpY2tlZC4KKworQ2xpY2sgYWZ0ZXIgaGVs
bG86IFBBU1MKK0NsaWNrIGFmdGVyIGhlbGxvICh0b3ApOiBQQVNTCitDbGljayBhZnRlciBoZWxs
byAoYm90dG9tKTogUEFTUworCitDbGljayBhYm92ZSBibGFjayBib3gKKyAgICBiZWZvcmUgaDog
UEFTUworICAgIGJlZm9yZSBlOiBQQVNTCisgICAgYmVmb3JlIGw6IFBBU1MKKyAgICBiZWZvcmUg
bDogUEFTUworICAgIGJlZm9yZSBvOiBQQVNTCisgICAgYWZ0ZXIgImhlbGxvIjogUEFTUworCitD
bGljayBiZWxvdyBibGFjayBib3gKKyAgICBiZWZvcmUgaDogUEFTUworICAgIGJlZm9yZSBlOiBQ
QVNTCisgICAgYmVmb3JlIGw6IFBBU1MKKyAgICBiZWZvcmUgbDogUEFTUworICAgIGJlZm9yZSBv
OiBQQVNTCisgICAgYWZ0ZXIgImhlbGxvIjogUEFTUworCitEb25lCisKSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2hpdC10ZXN0LW9uLXRleHQtd2l0aC1saW5lLWhlaWdodC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2hpdC10ZXN0
LW9uLXRleHQtd2l0aC1saW5lLWhlaWdodC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vaGl0LXRlc3Qtb24tdGV4dC13aXRoLWxpbmUtaGVpZ2h0Lmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzdHlsZT4KKyN0ZXN0IHsgd2lkdGg6IDMwMHB4OyBmb250LXNpemU6IDUwcHg7
IGxpbmUtaGVpZ2h0OiAxMHB4OyBib3JkZXI6IHNvbGlkIDFweCBibGFjazsgcGFkZGluZzogNXB4
OyB9CisjdGVzdCBzcGFuIHsgYm9yZGVyOiBzb2xpZCAxcHggcmVkOyB9Cis8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgZW5zdXJlcyBXZWJLaXQgY2FuIHBsYWNlIGNhcmV0
IGFmdGVyIHRoZSBsaW5lIGV2ZW4gd2hlbiB0aGUgbGluZS1oZWlnaHQgaXMgc21hbGxlciB0aGFu
IGEgbGluZS4KK1RvIG1hbnVhbGx5IHRlc3QsIGNsaWNrIGluc2lkZSB0aGUgYmxhY2sgYm94IG91
dHNpZGUgdGhlIHJlZCBib3guCitUaGUgY2FyZXQgc2hvdWxkIGJlIHBsYWNlZCBhdCB0aGUgZW5k
IG9mICJoZWxsbyIuPC9wPgorPHA+QWxzbyB0ZXN0IHRoYXQgd2hlbiB5b3UgY2xpY2sgaW4gdGhl
IHJlZCBib3ggYWJvdmUgb3IgYmVsb3cgdGhlIGJsYWNrIGJveCwgY2FyZXQgaXMgcGxhY2VkIGF0
IHdoZXJlIHlvdSBjbGlja2VkLjwvcD4KKzxkaXYgc3R5bGU9InBhZGRpbmc6IDUwcHg7Ij4KKzxk
aXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT48c3Bhbj5oZWxsbzwvc3Bhbj48L2Rpdj4KKzwv
ZGl2PgorPHByZT48c2NyaXB0PgorCit2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0ZXN0Jyk7Cit2YXIgc3BhbiA9IHRlc3QuZmlyc3RDaGlsZDsKK3ZhciB0ZXh0Tm9kZSA9IHNw
YW4uZmlyc3RDaGlsZDsKKworZnVuY3Rpb24gY2xpY2tBbmRWZXJpZnkodGl0bGUsIHgsIHksIGV4
cGVjdGVkT2Zmc2V0KSB7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoNTAw
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICBkb2N1bWVudC53cml0ZSh0aXRs
ZSArICc6ICcpOworICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cisg
ICAgaWYgKCFzZWxlY3Rpb24uaXNDb2xsYXBzZWQpCisgICAgICAgIGRvY3VtZW50LndyaXRlbG4o
J0ZBSUwgLSBzZWxlY3Rpb24gd2FzIG5vdCBjb2xsYXBzZWQnKTsKKyAgICBlbHNlIGlmIChzZWxl
Y3Rpb24uYmFzZU5vZGUgIT0gdGV4dE5vZGUpCisgICAgICAgIGRvY3VtZW50LndyaXRlbG4oJ0ZB
SUwgLSBiYXNlTm9kZSB3YXMgbm90ICInICsgdGV4dE5vZGUudGV4dENvbnRlbnQgKyAnIicpOwor
ICAgIGVsc2UgaWYgKHNlbGVjdGlvbi5iYXNlT2Zmc2V0ICE9IGV4cGVjdGVkT2Zmc2V0KQorICAg
ICAgICBkb2N1bWVudC53cml0ZWxuKCdGQUlMIC0gY2FyZXQgd2FzIGF0ICcgKyBzZWxlY3Rpb24u
YmFzZU9mZnNldCArICcgYnV0IGV4cGVjdGVkIHRvIGJlIGF0ICcgKyBleHBlY3RlZE9mZnNldCk7
CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudC53cml0ZWxuKCdQQVNTJyk7Cit9CisKK2Z1bmN0
aW9uIGNsaWNrQmV0d2VlbkVhY2hMZXR0ZXJBbmRWZXJpZnkoeSkgeworICAgIGZvciAodmFyIGkg
PSAwOyBpIDw9IHRleHROb2RlLnRleHRDb250ZW50Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHgg
PSBzcGFuLm9mZnNldExlZnQgKyBzcGFuLm9mZnNldFdpZHRoICogaSAvIDU7CisgICAgICAgIHgg
PSBNYXRoLm1heChzcGFuLm9mZnNldExlZnQgKyAxLCBNYXRoLm1pbihzcGFuLm9mZnNldExlZnQg
KyBzcGFuLm9mZnNldFdpZHRoIC0gMSwgeCkpOworICAgICAgICBpZiAoaSA9PSB0ZXh0Tm9kZS50
ZXh0Q29udGVudC5sZW5ndGgpCisgICAgICAgICAgICB0aXRsZSA9ICcgICAgYWZ0ZXIgIicgKyB0
ZXh0Tm9kZS50ZXh0Q29udGVudCArICciJzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGl0
bGUgPSAnICAgIGJlZm9yZSAnICsgdGV4dE5vZGUudGV4dENvbnRlbnQuY2hhckF0KGkpOworICAg
ICAgICBjbGlja0FuZFZlcmlmeSh0aXRsZSwgeCwgeSwgaSk7CisgICAgfQorfQorCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmICF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgZG9j
dW1lbnQud3JpdGVsbignVGhpcyB0ZXN0IHJlcXVpcmVzIGV2ZW50U2VuZGVyJyk7CitlbHNlIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgY2xpY2tBbmRWZXJpZnkoJ0NsaWNrIGFmdGVyIGhlbGxvJywg
dGVzdC5vZmZzZXRMZWZ0ICsgdGVzdC5vZmZzZXRXaWR0aCAtIDUsIHRlc3Qub2Zmc2V0VG9wICsg
dGVzdC5vZmZzZXRIZWlnaHQgLyAyLCA1KTsKKyAgICBjbGlja0FuZFZlcmlmeSgnQ2xpY2sgYWZ0
ZXIgaGVsbG8gKHRvcCknLCB0ZXN0Lm9mZnNldExlZnQgKyB0ZXN0Lm9mZnNldFdpZHRoIC0gNSwg
dGVzdC5vZmZzZXRUb3AgKyAxLCA1KTsKKyAgICBjbGlja0FuZFZlcmlmeSgnQ2xpY2sgYWZ0ZXIg
aGVsbG8gKGJvdHRvbSknLCB0ZXN0Lm9mZnNldExlZnQgKyB0ZXN0Lm9mZnNldFdpZHRoIC0gNSwg
dGVzdC5vZmZzZXRUb3AgKyB0ZXN0Lm9mZnNldEhlaWdodCAtIDEsIDUpOworCisgICAgZG9jdW1l
bnQud3JpdGVsbignXG5DbGljayBhYm92ZSBibGFjayBib3gnKTsKKyAgICBjbGlja0JldHdlZW5F
YWNoTGV0dGVyQW5kVmVyaWZ5KHNwYW4ub2Zmc2V0VG9wICsgMSk7CisKKyAgICBkb2N1bWVudC53
cml0ZWxuKCdcbkNsaWNrIGJlbG93IGJsYWNrIGJveCcpOworICAgIGNsaWNrQmV0d2VlbkVhY2hM
ZXR0ZXJBbmRWZXJpZnkoc3Bhbi5vZmZzZXRUb3AgKyBzcGFuLm9mZnNldEhlaWdodCAtIDEpOwor
CisgICAgdGVzdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgIGRvY3VtZW50LndyaXRlbG4o
J1xuRG9uZScpOworfQorCis8L3NjcmlwdD48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>95709</attachid>
            <date>2011-06-01 20:19:17 -0700</date>
            <delta_ts>2011-06-01 20:19:17 -0700</delta_ts>
            <desc>test case 2</desc>
            <filename>hit-test.html</filename>
            <type>text/html</type>
            <size>231</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8Ym9keT4KPGRpdiBjbGFzcz0iY3Vyc29yX29mZiB2dCBp
c3N1ZWRlc2NyaXB0aW9uIiBpZD0iaGMwIj4KPHByZT4KPGIgc3R5bGU9InBhZGRpbmc6IDNweCAw
cHggM3B4IDBweDsiPnRoaXMgbGluZSBoYXMgcGFkZGluZzwvYj4KYXMgYSByZXN1bHQsIHlvdSBj
YW4ndCBzZWxlY3QgdGhpcyBsaW5lIGJ5IG1vdXNlIGRyYWcuCjwvcHJlPgo8L2JvZHk+CjwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95713</attachid>
            <date>2011-06-01 20:46:27 -0700</date>
            <delta_ts>2011-06-02 08:02:52 -0700</delta_ts>
            <desc>converted the test to a script test</desc>
            <filename>bug-54929-20110601204626.patch</filename>
            <type>text/plain</type>
            <size>8253</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3ODc0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDYtMDEgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTjogVGV4dCBzZWxlY3Rpb24gYnJva2VuIGZvciB0
ZXh0IHdpdGggbGluZS1oZWlnaHQgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ5MjkKKworICAgICAgICBUaGUgYnVnIHdhcyBjYXVzZWQg
YnkgUmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQb2ludCdzIG5vdCBjb25zaWRlcmluZyB0aGUgY2Fz
ZSB3aGVyZSBhIHBvaW50IGlzCisgICAgICAgIGFib3ZlIHNlbGVjdGlvblRvcCBhbmQgYmVsb3cg
bGluZVRvcCBvZiB0aGUgZmlyc3Qgcm9vdCBpbmxpbmUgYm94LiBGaXhlZCB0aGUgYnVnIGJ5IGNv
bnNpZGVyaW5nCisgICAgICAgIGFueSBwb2ludCBiZXR3ZWVuIHNlbGVjdGlvblRvcCBhbmQgbGlu
ZVRvcCB0byBiZSBpbnNpZGUgYSByb290IGlubGluZSBib3guIFRoaXMgY29uZGl0aW9uIGlzCisg
ICAgICAgIGNvbnNpc3RlbnQgd2l0aCB0aGUgY29uZGl0aW9uIHdlIHVzZSB0byBkZXRlcm1pbmUg
dGhlIGJvdHRvbSBvZiBhIGxpbmUuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zZWxlY3Rpb24v
aGl0LXRlc3Qtb24tdGV4dC13aXRoLWxpbmUtaGVpZ2h0Lmh0bWwKKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9z
aXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbik6IEZpeGVkIGEgY29uZGl0aW9uIHRvIGRl
dGVybWluZSB3aGV0aGVyCisgICAgICAgIG9yIG5vdCBhIHBvaW50IGlzIGFib3ZlIHRoZSBmaXJz
dCByb290IGxpbmUgYm94LiBXZSBuZWVkIHRvIGNoZWNrIGJvdGggc2VsZWN0aW9uVG9wIGFuZCBs
b2dpY2FsVG9wCisgICAgICAgIGZvciB0aGUgc2FtZSByZWFzb24gZXhwbGFpbmVkIGFib3ZlLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQpOiBTZWUgYWJvdmUuCisKIDIwMTEtMDYtMDEgIEhh
eWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bnQgVGFtdXJhLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CShyZXZpc2lvbiA4Nzg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMzgsNyArNDEzOCw4IEBAIFZpc2libGVQb3NpdGlv
biBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3IKICAgICB9CiAKICAgICBpZiAoY2xvc2VzdEJveCkg
ewotICAgICAgICBpZiAobW92ZUNhcmV0VG9Cb3VuZGFyeSAmJiBwb2ludEluTG9naWNhbENvbnRl
bnRzLnkoKSA8IGZpcnN0Um9vdEJveFdpdGhDaGlsZHJlbi0+c2VsZWN0aW9uVG9wKCkpIHsKKyAg
ICAgICAgaWYgKG1vdmVDYXJldFRvQm91bmRhcnkgJiYgcG9pbnRJbkxvZ2ljYWxDb250ZW50cy55
KCkgPCBmaXJzdFJvb3RCb3hXaXRoQ2hpbGRyZW4tPnNlbGVjdGlvblRvcCgpCisgICAgICAgICAg
ICAmJiBwb2ludEluTG9naWNhbENvbnRlbnRzLnkoKSA8IGZpcnN0Um9vdEJveFdpdGhDaGlsZHJl
bi0+bG9naWNhbFRvcCgpKSB7CiAgICAgICAgICAgICAvLyB5IGNvb3JkaW5hdGUgaXMgYWJvdmUg
Zmlyc3Qgcm9vdCBsaW5lIGJveCwgc28gcmV0dXJuIHRoZSBzdGFydCBvZiB0aGUgZmlyc3QKICAg
ICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24ocG9zaXRpb25Gb3JCb3goZmlyc3RSb290
Qm94V2l0aENoaWxkcmVuLT5maXJzdExlYWZDaGlsZCgpLCB0cnVlKSwgRE9XTlNUUkVBTSk7CiAg
ICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHJl
dmlzaW9uIDg3ODc0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OTYsNyArNDk2LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRl
clRleHQ6OnBvc2l0aW9uRm9yUAogICAgIElubGluZVRleHRCb3gqIGxhc3RCb3hBYm92ZSA9IDA7
CiAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSBmaXJzdFRleHRCb3goKTsgYm94OyBib3gg
PSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAgUm9vdElubGluZUJveCogcm9vdEJveCA9
IGJveC0+cm9vdCgpOwotICAgICAgICBpZiAocG9pbnRCbG9ja0RpcmVjdGlvbiA+PSByb290Qm94
LT5zZWxlY3Rpb25Ub3AoKSkgeworICAgICAgICBpZiAocG9pbnRCbG9ja0RpcmVjdGlvbiA+PSBy
b290Qm94LT5zZWxlY3Rpb25Ub3AoKSB8fCBwb2ludEJsb2NrRGlyZWN0aW9uID49IHJvb3RCb3gt
PmxpbmVUb3AoKSkgewogICAgICAgICAgICAgaW50IGJvdHRvbSA9IHJvb3RCb3gtPnNlbGVjdGlv
bkJvdHRvbSgpOwogICAgICAgICAgICAgaWYgKHJvb3RCb3gtPm5leHRSb290Qm94KCkpCiAgICAg
ICAgICAgICAgICAgYm90dG9tID0gbWluKGJvdHRvbSwgcm9vdEJveC0+bmV4dFJvb3RCb3goKS0+
bGluZVRvcCgpKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3ODc0KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDYtMDEgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTjogVGV4dCBzZWxlY3Rpb24gYnJva2VuIGZv
ciB0ZXh0IHdpdGggbGluZS1oZWlnaHQgYXBwbGllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ5MjkKKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8g
ZW5zdXJlIFdlYktpdCBjYW4gcGxhY2UgY2FyZXQgaW4gdGV4dCB3aXRoIGEgbGluZS1oZWlnaHQg
c21hbGxlciB0aGFuCisgICAgICAgIHRoZSBoZWlnaHQgb2YgdGhlIHRleHQuCisKKyAgICAgICAg
KiBlZGl0aW5nL3NlbGVjdGlvbi9oaXQtdGVzdC1vbi10ZXh0LXdpdGgtbGluZS1oZWlnaHQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9oaXQtdGVzdC1v
bi10ZXh0LXdpdGgtbGluZS1oZWlnaHQuaHRtbDogQWRkZWQuCisKIDIwMTEtMDYtMDEgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBUaGVyZSBzZWVtcyB0byBiZSBz
b21ldGhpbmcgb2RkIGFib3V0IHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIG9uIE1hYy4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2hpdC10ZXN0LW9uLXRleHQtd2l0aC1saW5l
LWhlaWdodC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vaGl0LXRlc3Qtb24tdGV4dC13aXRoLWxpbmUtaGVpZ2h0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2hpdC10ZXN0LW9u
LXRleHQtd2l0aC1saW5lLWhlaWdodC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjQgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIFdlYktpdCBjYW4gcGxhY2UgY2FyZXQgYWZ0ZXIg
dGhlIGxpbmUgZXZlbiB3aGVuIHRoZSBsaW5lLWhlaWdodCBpcyBzbWFsbGVyIHRoYW4gYSBsaW5l
LiBUbyBtYW51YWxseSB0ZXN0LCBjbGljayBpbnNpZGUgdGhlIGJsYWNrIGJveCBvdXRzaWRlIHRo
ZSByZWQgYm94LiBUaGUgY2FyZXQgc2hvdWxkIGJlIHBsYWNlZCBhdCB0aGUgZW5kIG9mICJoZWxs
byIuCisKK0Fsc28gdGVzdCB0aGF0IHdoZW4geW91IGNsaWNrIGluIHRoZSByZWQgYm94IGFib3Zl
IG9yIGJlbG93IHRoZSBibGFjayBib3gsIGNhcmV0IGlzIHBsYWNlZCBhdCB3aGVyZSB5b3UgY2xp
Y2tlZC4KKworUEFTUyBDbGljayBhZnRlciBoZWxsbworUEFTUyBDbGljayBhZnRlciBoZWxsbyAo
dG9wKQorUEFTUyBDbGljayBhZnRlciBoZWxsbyAoYm90dG9tKQorCitDbGljayBhYm92ZSBibGFj
ayBib3gKK1BBU1MgYmVmb3JlIGgKK1BBU1MgYmVmb3JlIGUKK1BBU1MgYmVmb3JlIGwKK1BBU1Mg
YmVmb3JlIGwKK1BBU1MgYmVmb3JlIG8KK1BBU1MgYWZ0ZXIgImhlbGxvIgorCitDbGljayBiZWxv
dyBibGFjayBib3gKK1BBU1MgYmVmb3JlIGgKK1BBU1MgYmVmb3JlIGUKK1BBU1MgYmVmb3JlIGwK
K1BBU1MgYmVmb3JlIGwKK1BBU1MgYmVmb3JlIG8KK1BBU1MgYWZ0ZXIgImhlbGxvIgorCkluZGV4
OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9oaXQtdGVzdC1vbi10ZXh0LXdpdGgtbGlu
ZS1oZWlnaHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9oaXQtdGVzdC1vbi10ZXh0LXdpdGgtbGluZS1oZWlnaHQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2hpdC10ZXN0LW9uLXRleHQtd2l0aC1saW5l
LWhlaWdodC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisjdGVz
dCB7IHdpZHRoOiAzMDBweDsgZm9udC1zaXplOiA1MHB4OyBsaW5lLWhlaWdodDogMTBweDsgYm9y
ZGVyOiBzb2xpZCAxcHggYmxhY2s7IHBhZGRpbmc6IDVweDsgfQorI3Rlc3Qgc3BhbiB7IGJvcmRl
cjogc29saWQgMXB4IHJlZDsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0
ZXN0IGVuc3VyZXMgV2ViS2l0IGNhbiBwbGFjZSBjYXJldCBhZnRlciB0aGUgbGluZSBldmVuIHdo
ZW4gdGhlIGxpbmUtaGVpZ2h0IGlzIHNtYWxsZXIgdGhhbiBhIGxpbmUuCitUbyBtYW51YWxseSB0
ZXN0LCBjbGljayBpbnNpZGUgdGhlIGJsYWNrIGJveCBvdXRzaWRlIHRoZSByZWQgYm94LgorVGhl
IGNhcmV0IHNob3VsZCBiZSBwbGFjZWQgYXQgdGhlIGVuZCBvZiAiaGVsbG8iLjwvcD4KKzxwPkFs
c28gdGVzdCB0aGF0IHdoZW4geW91IGNsaWNrIGluIHRoZSByZWQgYm94IGFib3ZlIG9yIGJlbG93
IHRoZSBibGFjayBib3gsIGNhcmV0IGlzIHBsYWNlZCBhdCB3aGVyZSB5b3UgY2xpY2tlZC48L3A+
Cis8ZGl2IHN0eWxlPSJwYWRkaW5nOiA1MHB4OyI+Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRp
dGFibGU+PHNwYW4+aGVsbG88L3NwYW4+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKwordmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGVzdCcpOwordmFyIHNwYW4gPSB0ZXN0LmZpcnN0Q2hpbGQ7Cit2YXIgdGV4dE5vZGUgPSBzcGFu
LmZpcnN0Q2hpbGQ7CisKK2Z1bmN0aW9uIGNsaWNrQW5kVmVyaWZ5KHRpdGxlLCB4LCB5LCBleHBl
Y3RlZE9mZnNldCkgeworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworCisgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRv
dy5nZXRTZWxlY3Rpb24oKTsKKyAgICBpZiAoIXNlbGVjdGlvbi5pc0NvbGxhcHNlZCkKKyAgICAg
ICAgdGVzdEZhaWxlZCh0aXRsZSArICcgLSBzZWxlY3Rpb24gd2FzIG5vdCBjb2xsYXBzZWQnKTsK
KyAgICBlbHNlIGlmIChzZWxlY3Rpb24uYmFzZU5vZGUgIT0gdGV4dE5vZGUpCisgICAgICAgIHRl
c3RGYWlsZWQodGl0bGUgKyAnIC0gYmFzZU5vZGUgd2FzIG5vdCAiJyArIHRleHROb2RlLnRleHRD
b250ZW50ICsgJyInKTsKKyAgICBlbHNlIGlmIChzZWxlY3Rpb24uYmFzZU9mZnNldCAhPSBleHBl
Y3RlZE9mZnNldCkKKyAgICAgICAgdGVzdEZhaWxlZCh0aXRsZSArICcgLSBjYXJldCB3YXMgYXQg
JyArIHNlbGVjdGlvbi5iYXNlT2Zmc2V0ICsgJyBidXQgZXhwZWN0ZWQgdG8gYmUgYXQgJyArIGV4
cGVjdGVkT2Zmc2V0KTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RQYXNzZWQodGl0bGUpOworfQor
CitmdW5jdGlvbiBjbGlja0JldHdlZW5FYWNoTGV0dGVyQW5kVmVyaWZ5KHkpIHsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8PSB0ZXh0Tm9kZS50ZXh0Q29udGVudC5sZW5ndGg7IGkrKykgeworICAg
ICAgICB4ID0gc3Bhbi5vZmZzZXRMZWZ0ICsgc3Bhbi5vZmZzZXRXaWR0aCAqIGkgLyA1OworICAg
ICAgICB4ID0gTWF0aC5tYXgoc3Bhbi5vZmZzZXRMZWZ0ICsgMSwgTWF0aC5taW4oc3Bhbi5vZmZz
ZXRMZWZ0ICsgc3Bhbi5vZmZzZXRXaWR0aCAtIDEsIHgpKTsKKyAgICAgICAgaWYgKGkgPT0gdGV4
dE5vZGUudGV4dENvbnRlbnQubGVuZ3RoKQorICAgICAgICAgICAgdGl0bGUgPSAnYWZ0ZXIgIicg
KyB0ZXh0Tm9kZS50ZXh0Q29udGVudCArICciJzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
dGl0bGUgPSAnYmVmb3JlICcgKyB0ZXh0Tm9kZS50ZXh0Q29udGVudC5jaGFyQXQoaSk7CisgICAg
ICAgIGNsaWNrQW5kVmVyaWZ5KHRpdGxlLCB4LCB5LCBpKTsKKyAgICB9Cit9CisKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICB0ZXN0
RmFpbGVkKCdUaGlzIHRlc3QgcmVxdWlyZXMgZXZlbnRTZW5kZXInKTsKK2Vsc2UgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBjbGlja0FuZFZlcmlmeSgnQ2xpY2sgYWZ0ZXIgaGVsbG8nLCB0ZXN0Lm9m
ZnNldExlZnQgKyB0ZXN0Lm9mZnNldFdpZHRoIC0gNSwgdGVzdC5vZmZzZXRUb3AgKyB0ZXN0Lm9m
ZnNldEhlaWdodCAvIDIsIDUpOworICAgIGNsaWNrQW5kVmVyaWZ5KCdDbGljayBhZnRlciBoZWxs
byAodG9wKScsIHRlc3Qub2Zmc2V0TGVmdCArIHRlc3Qub2Zmc2V0V2lkdGggLSA1LCB0ZXN0Lm9m
ZnNldFRvcCArIDEsIDUpOworICAgIGNsaWNrQW5kVmVyaWZ5KCdDbGljayBhZnRlciBoZWxsbyAo
Ym90dG9tKScsIHRlc3Qub2Zmc2V0TGVmdCArIHRlc3Qub2Zmc2V0V2lkdGggLSA1LCB0ZXN0Lm9m
ZnNldFRvcCArIHRlc3Qub2Zmc2V0SGVpZ2h0IC0gMSwgNSk7CisKKyAgICBkZWJ1ZygnJyk7Cisg
ICAgZGVidWcoJ0NsaWNrIGFib3ZlIGJsYWNrIGJveCcpOworICAgIGNsaWNrQmV0d2VlbkVhY2hM
ZXR0ZXJBbmRWZXJpZnkoc3Bhbi5vZmZzZXRUb3AgKyAxKTsKKworICAgIGRlYnVnKCcnKTsKKyAg
ICBkZWJ1ZygnQ2xpY2sgYmVsb3cgYmxhY2sgYm94Jyk7CisgICAgY2xpY2tCZXR3ZWVuRWFjaExl
dHRlckFuZFZlcmlmeShzcGFuLm9mZnNldFRvcCArIHNwYW4ub2Zmc2V0SGVpZ2h0IC0gMSk7CisK
KyAgICB0ZXN0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="89269"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>