<?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>54355</bug_id>
          
          <creation_ts>2011-02-13 08:28:39 -0800</creation_ts>
          <short_desc>Let the parser yield for layout before running scripts</short_desc>
          <delta_ts>2011-03-11 10:29:45 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>56049</dependson>
    
    <dependson>54574</dependson>
    
    <dependson>54835</dependson>
    
    <dependson>54942</dependson>
    
    <dependson>55392</dependson>
    
    <dependson>55414</dependson>
    
    <dependson>55429</dependson>
    
    <dependson>56143</dependson>
          <blocked>45072</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Gentilcore">tonyg</reporter>
          <assigned_to name="Tony Gentilcore">tonyg</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>jnd</cc>
    
    <cc>koivisto</cc>
    
    <cc>simonjam</cc>
    
    <cc>wangxianzhu</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>350395</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-13 08:28:39 -0800</bug_when>
    <thetext>Let the parser yield for layout before running scripts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350398</commentid>
    <comment_count>1</comment_count>
      <attachid>82263</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-13 08:52:14 -0800</bug_when>
    <thetext>Created attachment 82263
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350399</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-13 08:54:36 -0800</bug_when>
    <thetext>FYI, I&apos;ve not marked this for review yet because I&apos;m planning to test it out some more on other machines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351427</commentid>
    <comment_count>3</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-15 11:28:15 -0800</bug_when>
    <thetext>I&apos;m finished testing this out and am very happy w/ the performance. First paint time dramatically improved without regressing overall page load time. This change also enables bug 45072 to improve overall page load time without it regressing first paint time.

Here&apos;s a brief explanation of the test environment:
- OSX 10.6.6, 12G, 2x2.26GHz Quad-Core Xeon
- http://code.google.com/p/web-page-replay/ used to record snapshots of Alexa&apos;s top 45 websites
- Replayed each snapshot for a variable number of iterations (min 5, max 15) until stddev was below a threshold
- Replayed set of pages at 3 network configurations simulated with dummynet: unlimited; 5Mbps down/1Mbps up/40ms RTT; 1Mbps down/200Kbps up/60ms RTT
- Measured time to first paint and time to window load event

Page load time averages (without patch, with patch):
unlimited: 486ms, 485ms (-0.21%)
5meg: 832ms, 832ms (0%)
1meg: 1191ms, 1185ms (-0.51%)

First paint time averages (without patch, with patch):
unlimited: 196ms, 194 (-1.03%) 
5meg: 479ms, 431ms (-11.14%)
1meg: 577ms, 544 (-6.07%)

The averages don&apos;t tell the full story. On the 5meg connection, for instance. 33 of the 45 pages had no statistically significant change, but pages with certain blocking patterns had big improvements: youtube painted 100ms sooner, wikipedia 242ms, ebay 138ms, sohu.com 1269ms, espn 79ms, cnn 81ms. No page had a statistically significant regression in first paint time. Please let me know if you want to see the full data sets or think more testing is warranted.

Regarding the patch itself, any ideas for layout tests that make sense here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351471</commentid>
    <comment_count>4</comment_count>
      <attachid>82263</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-15 12:16:19 -0800</bug_when>
    <thetext>Comment on attachment 82263
Patch

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

Some comments below.  Eric should look at this patch too, but your numbers are very impressive.

&gt; Source/WebCore/ChangeLog:15
&gt; +        No new tests. (OOPS!)

You have a nice description of the performance tests you ran in the bug.  Maybe put some of that information here?

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:440
&gt; -bool HTMLDocumentParser::isWaitingForScripts() const
&gt; +inline bool HTMLDocumentParser::isWaitingForScripts() const

Don&apos;t you need to mark this inline in the header too?

&gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:106
&gt; +    bool hasEverPainted = document-&gt;view() &amp;&amp; document-&gt;view()-&gt;hasEverPainted();
&gt; +    if (!hasEverPainted &amp;&amp; isLayoutTimerActive(document)) {
&gt; +        m_continueNextChunkTimer.startOneShot(0);
&gt; +        return false;
&gt; +    }

In the case where there&apos;s no view, can isLayoutTimerActive return true?  If so, it seems like we&apos;ll always return false here.  It seems like we should always return true if there&apos;s no view because there&apos;s no point in trying to optimize first paint time without a view!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351669</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-15 15:44:35 -0800</bug_when>
    <thetext>&gt; You have a nice description of the performance tests you ran in the bug.  Maybe put some of that information here?

Done.

&gt; Don&apos;t you need to mark this inline in the header too?

Oops, this is a virtual method. Even though it is less readable, I reverted back to just checking isPaused :-(

&gt; In the case where there&apos;s no view, can isLayoutTimerActive return true?  If so, it seems like we&apos;ll always return false here.  It seems like we should always return true if there&apos;s no view because there&apos;s no point in trying to optimize first paint time without a view!

Good catch, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351670</commentid>
    <comment_count>6</comment_count>
      <attachid>82539</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-15 15:44:46 -0800</bug_when>
    <thetext>Created attachment 82539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351692</commentid>
    <comment_count>7</comment_count>
      <attachid>82539</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-15 16:03:43 -0800</bug_when>
    <thetext>Comment on attachment 82539
Patch

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

Lets talk about this on IRC.  I like the idea, but this is scary stuff and I am not convinced this added complication is all necessary/correct.

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:201
&gt; +    ASSERT(isWaitingForScripts());

It&apos;s unclear to me what the differnece between isWaitingForScripts and isPaused is?

&gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:97
&gt; +bool HTMLParserScheduler::shouldRunScriptNow()

Seems like we could come up with a better name here.

Also, its strange that this does the chunk timer stuff, especially given the name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351716</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-15 16:31:20 -0800</bug_when>
    <thetext>Tony and I spoke on IRC about the possibility of tweaking our existing yield logic instead of adding this new special case.  I think the adding a case to our existing yield logic for more agressive yield before first paint makes more sense than adding a one-off for pre-script-execution yielding.

http://trac.webkit.org/browser/trunk/Source/WebCore/html/parser/HTMLParserScheduler.cpp#L33

Tony said that just lowering those constants would be bad as later in loads we don&apos;t want to be laying out as much.  But we talked about the possibility of adding a special-case lower constant for pre-first layout.

I spent a lot of effort trying to make the yielding understandable as part of the parser re-write (hence the new HTMLParserScheduler class) so I&apos;m suspicious of any further complications to this (already complicated!) subsystem. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351717</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-15 16:32:43 -0800</bug_when>
    <thetext>Btw, the comment:
	// FIXME: We would like this value to be 0.2.

http://trac.webkit.org/browser/trunk/Source/WebCore/html/parser/HTMLParserScheduler.cpp#L40

is a hold-over from the old parser.  I don&apos;t know who made the comment (without looking).  It might be worth trying a lower value these days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351728</commentid>
    <comment_count>10</comment_count>
      <attachid>82539</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-15 16:45:21 -0800</bug_when>
    <thetext>Comment on attachment 82539
Patch

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

&gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:104
&gt; +        m_continueNextChunkTimer.startOneShot(0);

Shouldn&apos;t this reset the chunk counts as well?  Seems it would need access to the PumpSession to do that.  I&apos;m not sure the callsite has one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351730</commentid>
    <comment_count>11</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-15 16:47:13 -0800</bug_when>
    <thetext>BTW, here are my full results for posterity: https://spreadsheets.google.com/ccc?key=tHdzNBp8o0kuMKg3ycud2Zw&amp;authkey=CJz69dsE#gid=1

Those are all first paint times, there&apos;s a tab for each network configuration and each time in there represents 5-15 iterations (depending on how noisy runs were). The tool also compares load time, dom content loaded, readyState interactive, and other details if you want more info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351734</commentid>
    <comment_count>12</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-15 16:52:29 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Btw, the comment:
&gt;     // FIXME: We would like this value to be 0.2.
&gt; 
&gt; http://trac.webkit.org/browser/trunk/Source/WebCore/html/parser/HTMLParserScheduler.cpp#L40
&gt; 
&gt; is a hold-over from the old parser.  I don&apos;t know who made the comment (without looking).  It might be worth trying a lower value these days.

I&apos;ve been doing some archeology on those. Darin Adler added the FIXME along with the original value back in 2006. I was planning to look into more optimal values for these constants as well, but they are tricky because we don&apos;t want to be overly yield-y. However, I do like your idea for a step-off function instead of constants. For instance, we could have one value until we paint and then use another value afterwards. I&apos;d need to test it out as this is all very sensitive and interacts in odd ways. That&apos;s part of the reason I was originally attracted to keeping the yield points at just before we run scripts. There was always a potential to yield there, so it seems pretty safe to force it at the same point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351739</commentid>
    <comment_count>13</comment_count>
      <attachid>82539</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-15 16:58:36 -0800</bug_when>
    <thetext>Comment on attachment 82539
Patch

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

OK.  I think this patch is fine with some cleanup.

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:185
&gt; +    if (isWaitingForScripts()) {

Please add a comment which explains that there are two times the parser can yield.  One between tokens, and one before running scripts.  We check here to see which.

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:189
&gt; +        if (isStopped() || isWaitingForScripts())

Why is it OK to return in the isWaitingForScripts() case?

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:190
&gt; +            return;

Seems if we&apos;re waiting for scripts we should ASSERT here that we&apos;re scheduled.

You might split these early returns into separate ifs since the stopped one makes more sense (and needs less asserts or explanations) than the other.

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:195
&gt;      pumpTokenizer(AllowYield);

Isn&apos;t is possible for a &lt;script&gt; tag to be the last tag and for us to have waited on it?  Will there then be anything for this pump to do?

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:263
&gt; +        runScriptsForPausedTreeBuilder();

Why did you move the paused logic inside the runScriptsForPausedTreeBuilder?  I&apos;m unsure if it&apos;s better that way or not.  I think my previous thinking was that the loop was trying to be explicit about when it got paused vs. not.

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:455
&gt; +    ASSERT(!isWaitingForScripts());

These ASSERT changes are not clear to me.

&gt;&gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:97
&gt;&gt; +bool HTMLParserScheduler::shouldRunScriptNow()
&gt; 
&gt; Seems like we could come up with a better name here.
&gt; 
&gt; Also, its strange that this does the chunk timer stuff, especially given the name.

I think it&apos;s importnat that the paralells between this and shouldContinueParsing be obvious.  We should probably put them right next to one antoher in the header.

I think this one shoudl also take a PumpSession and should clear it like shouldContinueParsing does.  Probably using some shared code (a helper method?) for yielding.

Maybe we should reverse the name?  shouldYieldBeforeRunningScripts()?  I&apos;m not sure.  It&apos;s slightly confusing that the shouldContinueParsing() bit does the yielding, I agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351742</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-15 17:00:34 -0800</bug_when>
    <thetext>I really like the idea of changing our yielding as we parse more.  Maybe that&apos;s overengineering.  But as you note, starting with an agressive value and then stepping bakc after first paint and maybe again after some amount of the page loads or whatever.  donno.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351800</commentid>
    <comment_count>15</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-15 18:14:59 -0800</bug_when>
    <thetext>I have an idea for taking care of this comment in pumpTokenizer():
// FIXME: This loop body has is now too long and needs cleanup.
without making the loop more expensive per token. That will also allow this change to be cleaner. I&apos;ll explore that in another patch then get back to this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353649</commentid>
    <comment_count>16</comment_count>
      <attachid>82976</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-18 10:21:55 -0800</bug_when>
    <thetext>Created attachment 82976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353651</commentid>
    <comment_count>17</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-18 10:27:20 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:185
&gt; &gt; +    if (isWaitingForScripts()) {
&gt; 
&gt; Please add a comment which explains that there are two times the parser can yield.  One between tokens, and one before running scripts.  We check here to see which.

I&apos;m hoping the new method names make that much more clear. Let me know if you think we still need a comment.

&gt; Isn&apos;t is possible for a &lt;script&gt; tag to be the last tag and for us to have waited on it?  Will there then be anything for this pump to do?

That is possible and okay. The while-loop will break when it gets a NULL token.

&gt; I think it&apos;s importnat that the paralells between this and shouldContinueParsing be obvious.  We should probably put them right next to one antoher in the header.

Hopefully the names tie them together more strongly now. I don&apos;t want to have to include FrameView.h from HTMLParserScheduler.h.

&gt; I think this one shoudl also take a PumpSession and should clear it like shouldContinueParsing does.  Probably using some shared code (a helper method?) for yielding.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353676</commentid>
    <comment_count>18</comment_count>
      <attachid>82976</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-18 10:55:47 -0800</bug_when>
    <thetext>Comment on attachment 82976
Patch

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

&gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:101
&gt; +    Document* document = m_parser-&gt;document();

So it&apos;s not clear to me why this one doesn&apos;t check the chunk stuff on session as well.   Maybe doing so doesn&apos;t add much?  I&apos;m not sure if that needs a comment or not.

&gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:104
&gt; +        session.needsYield = true;

It seems this isn&apos;t used anymore. :)  We should just remove it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353681</commentid>
    <comment_count>19</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-18 11:01:37 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 82976 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82976&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:101
&gt; &gt; +    Document* document = m_parser-&gt;document();
&gt; 
&gt; So it&apos;s not clear to me why this one doesn&apos;t check the chunk stuff on session as well.   Maybe doing so doesn&apos;t add much?  I&apos;m not sure if that needs a comment or not.

They are different rules about when to yield. Respecting the #chunks and time limit from this check would negate its purpose. I&apos;ll add brief comment on each method.

&gt; 
&gt; &gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:104
&gt; &gt; +        session.needsYield = true;
&gt; 
&gt; It seems this isn&apos;t used anymore. :)  We should just remove it again.

It is still used as the condition to schedule the resume in pumpTokenizer. I&apos;ll try to think of a cleaner way that avoid the return val + boolean weirdness (maybe you have ideas?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353687</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-18 11:08:31 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (From update of attachment 82976 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82976&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:101
&gt; &gt; &gt; +    Document* document = m_parser-&gt;document();
&gt; &gt; 
&gt; &gt; So it&apos;s not clear to me why this one doesn&apos;t check the chunk stuff on session as well.   Maybe doing so doesn&apos;t add much?  I&apos;m not sure if that needs a comment or not.
&gt; 
&gt; They are different rules about when to yield. Respecting the #chunks and time limit from this check would negate its purpose. I&apos;ll add brief comment on each method.

I meant more the other way.  Not preventing it from yielding, but that yielding coudl also be caused by the chujnk counters.  But I&apos;m not sure it really matters.

&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:104
&gt; &gt; &gt; +        session.needsYield = true;
&gt; &gt; 
&gt; &gt; It seems this isn&apos;t used anymore. :)  We should just remove it again.
&gt; 
&gt; It is still used as the condition to schedule the resume in pumpTokenizer. I&apos;ll try to think of a cleaner way that avoid the return val + boolean weirdness (maybe you have ideas?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353695</commentid>
    <comment_count>21</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-18 11:20:10 -0800</bug_when>
    <thetext>
&gt; I meant more the other way.  Not preventing it from yielding, but that yielding coudl also be caused by the chujnk counters.  But I&apos;m not sure it really matters.

We the chunk number should not be able to change since we are guaranteed to check that after every chunk (token). I guess we could exceed the timer here under the same chunk count, but I don&apos;t think that really matters as we&apos;d just get to that after the next token.


Anyway, will ping back when I straighten out the return vals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353789</commentid>
    <comment_count>22</comment_count>
      <attachid>83001</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-18 13:13:57 -0800</bug_when>
    <thetext>Created attachment 83001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353793</commentid>
    <comment_count>23</comment_count>
      <attachid>83001</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-18 13:17:34 -0800</bug_when>
    <thetext>Comment on attachment 83001
Patch

What a gorgeous patch!  Thanks for all your hard work here!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354081</commentid>
    <comment_count>24</comment_count>
      <attachid>83001</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-18 23:57:24 -0800</bug_when>
    <thetext>Comment on attachment 83001
Patch

Clearing flags on attachment: 83001

Committed r79104: &lt;http://trac.webkit.org/changeset/79104&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354082</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-18 23:57:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354086</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-19 00:06:41 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 83001:

http/tests/xmlhttprequest/simple-cross-origin-progress-events.html bug 54798 (authors: ap@webkit.org and levin@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355117</commentid>
    <comment_count>27</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-02-22 01:14:16 -0800</bug_when>
    <thetext>Would it hurt to always yield before script execution (that is remove the first paint test)?  In some cases the first paint may not be that meaningful yet and improved interactivity might be good too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355336</commentid>
    <comment_count>28</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-22 09:23:54 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; Would it hurt to always yield before script execution (that is remove the first paint test)?  In some cases the first paint may not be that meaningful yet and improved interactivity might be good too.

I tried that and the increased number of layouts pushed out the total load time. I also felt like the pages had more annoying visual shift w/ that behavior. My reasoning here is that there is a certain value in the first paint in that it is the first real indication to the user that the page is responding (even if there is little or no useful content).

Regarding this patch itself, I had to roll it back because it was causing flakiness on the chromium bots. It turns out we have a lot of layout tests that incorrectly assume the parser doesn&apos;t yield. Someone just pointed out this example on the webkit-dev list: &lt;iframe onload=&quot;foo()&quot;&gt;&lt;script&gt;function foo() {...}&lt;/script&gt;. Since we wait 250ms to schedule the first layout, most tests didn&apos;t exercise the new yield. But the chromium debug bots ran certain tests slow enough that the new yield was exposing bugs in the tests.

To find them, I&apos;ve made a local change to set defaultParserTimeLimit to 0 and defaultParserChunkSize to 1 which causes the tokenizer to yield between every token. It exposes the tests which aren&apos;t resilient to parser yields. I&apos;m planning to fix those up, then roll forward my original patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355482</commentid>
    <comment_count>29</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-22 12:14:32 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; To find them, I&apos;ve made a local change to set defaultParserTimeLimit to 0 and defaultParserChunkSize to 1 which causes the tokenizer to yield between every token. It exposes the tests which aren&apos;t resilient to parser yields. I&apos;m planning to fix those up, then roll forward my original patch.

FANTASTIC.  We did similarly when writing the HTML5 parser.
http://trac.webkit.org/browser/trunk/LayoutTests/html5lib/webkit-resumer.html
does similarly, but for the HTML5 spec (letting the parser yield between every character) which found a ton of bugs in the old parser and helpped us make the new parser resiliant to network variation.

I&apos;m very glad you&apos;re fixing the layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355501</commentid>
    <comment_count>30</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-02-22 12:32:57 -0800</bug_when>
    <thetext>Reopening since this is rolled back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356679</commentid>
    <comment_count>31</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2011-02-23 22:21:57 -0800</bug_when>
    <thetext>My last running of layout tests on chromium-linux with maximum parser yielding enabled showed that 1.7% of layout tests (253 of 15000) newly failed.

I have a concern about web page compatibility. Will this fix fail many existing web pages?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364901</commentid>
    <comment_count>32</comment_count>
      <attachid>85263</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-03-09 17:20:52 -0800</bug_when>
    <thetext>Created attachment 85263
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364902</commentid>
    <comment_count>33</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-03-09 17:21:36 -0800</bug_when>
    <thetext>Re-landing same patch now that blocking bugs have been fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365458</commentid>
    <comment_count>34</comment_count>
      <attachid>85263</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-03-10 12:57:24 -0800</bug_when>
    <thetext>Comment on attachment 85263
Patch for landing

Clearing flags on attachment: 85263

Committed r80749: &lt;http://trac.webkit.org/changeset/80749&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365459</commentid>
    <comment_count>35</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-03-10 12:57:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366089</commentid>
    <comment_count>36</comment_count>
      <attachid>85263</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-03-11 10:29:39 -0800</bug_when>
    <thetext>Comment on attachment 85263
Patch for landing

Clearing flags on attachment: 85263

Committed r80861: &lt;http://trac.webkit.org/changeset/80861&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366090</commentid>
    <comment_count>37</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-03-11 10:29:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82263</attachid>
            <date>2011-02-13 08:52:14 -0800</date>
            <delta_ts>2011-02-15 15:44:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54355-20110213085212.patch</filename>
            <type>text/plain</type>
            <size>9241</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwYjY0NTdhMTg0YjEwOTFjZjRmZThkMjIwNGM1MzRjMmZmYjFlMGVhLi4z
Zjk0NDcwMjg4ZDhhOTc0OTM5MzVlNTQzYjFjZGUwMzk4MGUwYTg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzkgQEAKKzIwMTEtMDItMTMgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBM
ZXQgdGhlIHBhcnNlciB5aWVsZCBmb3IgbGF5b3V0IGJlZm9yZSBydW5uaW5nIHNjcmlwdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MzU1CisKKyAg
ICAgICAgVGhlIHBhcnNlciB3aWxsIHlpZWxkIHRvIHBlcmZvcm0gYSBsYXlvdXQvcGFpbnQgYmVm
b3JlIHJ1bm5pbmcgYSBzY3JpcHQgaWYgdGhlIHNjcmlwdCBvciBhIHN0eWxlc2hlZXQgYmxvY2tp
bmcgdGhlIHNjcmlwdAorICAgICAgICBpcyBub3QgbG9hZGVkIHlldC4gUmlnaHQgbm93LCB3ZSBk
b24ndCBwcmVsb2FkIHNjYW4gaW50byB0aGUgYm9keSB3aGlsZSBwYXJzaW5nIHRoZSBoZWFkLiBU
aGlzIG1lYW5zIHRoYXQgdHlwaWNhbGx5IHdlJ2xsCisgICAgICAgIGhpdCBhIHNjcmlwdCBlYXJs
eSBpbiB0aGUgYm9keSB0aGF0IGNhdXNlcyB1cyB0byB5aWVsZCBmb3IgYSByZWFzb25hYmxlIGZp
cnN0IHBhaW50IHRpbWUuIEhvd2V2ZXIsIEknbSBwbGFubmluZyB0byBjaGFuZ2UKKyAgICAgICAg
dGhlIFByZWxvYWRTY2FubmVyIHRvIHNjYW4gaW50byB0aGUgYm9keSBmcm9tIHRoZSBoZWFkLiBU
aGF0IHNpZ25pZmljYW50bHkgaW1wcm92ZXMgb3ZlcmFsbCBsb2FkIHRpbWUsIGJ1dCBodXJ0cyBm
aXJzdAorICAgICAgICBwYWludCB0aW1lIGJlY2F1c2UgZmV3ZXIgc2NyaXB0cyBhcmUgYmxvY2tl
ZCBhbmQgdGh1cyBkb24ndCB5aWVsZC4gVGhpcyBjaGFuZ2UgYWxsb3dzIHRoYXQgaW1wcm92ZW1l
bnQgaW4gb3ZlcmFsbCBsb2FkCisgICAgICAgIHRpbWUgdG8gYmUgZ2FpbmVkIHdpdGhvdXQgcmVn
cmVzc2luZyBmaXJzdCBwYWludCB0aW1lLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMh
KQorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDogCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNpbmdBZnRlcllpZWxk
KTogVGhlIHNjaGVkdWxlciBtYXkgbm90IGNhbGwgdGhpcyBtZXRob2Qgd2hlbiByZXN1bWluZyBm
cm9tIGEKKyAgICAgICAgeWllbGQgYmVmb3JlIGEgdG9rZW4gb3IgYSB5aWVsZCBiZWZvcmUgYSBz
Y3JpcHQuIFNvIGl0IGNoZWNrcyB3aGV0aGVyIHRoZSBwYXJzZXIgaXMgcGF1c2VkICh3YWl0aW5n
IGZvciBhIHNjcmlwdCkgYW5kCisgICAgICAgIHJ1bnMgc2NyaXB0cyBmaXJzdC4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWls
ZGVyKTogTW92ZWQgc2V0UGF1c2VkIGJpdCBpbnRvIHRoaXMgbWV0aG9kIHNvIHRoYXQKKyAgICAg
ICAgcmVzdW1lUGFyc2luZ0FmdGVyWWllbGQgZG9lc24ndCBoYXZlIHRvIGR1cGxpY2F0ZSBpdCBm
cm9tIHRoZSBwdW1wVG9rZW5pemVyIGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1l
bnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOiBBZnRlciB0YWtpbmcgZWFjaCA8L3NjcmlwdD4gZnJv
bSB0aGUgdG9rZW5pemVyLCBnaXZlIHRoZSBzY2hlZHVsZXIgYSBjaGFuY2UKKyAgICAgICAgdG8g
ZGV0ZXJtaW5lIHdoZXRoZXIgdG8geWllbGQgYmVmb3JlIHJ1bm5pbmcgdGhhdCBzY3JpcHQuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OmlzV2FpdGluZ0ZvclNjcmlwdHMp
OiBJbmxpbmUgdGhpcyBtZXRob2Qgc2luY2UgaXQgaXMgbm93IGNhbGwgZm9yIGV2ZXJ5IHRva2Vu
IHByb2Nlc3NlZC4KKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaDoK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzTGF5b3V0VGltZXJBY3RpdmUpOiBBZGRlZCBhIEZJWE1FIGJlY2F1c2UgcjUy
OTE5IGNoYW5nZWQgbWluaW11bUxheW91dERlbGF5KCkgdG8gcmV0dXJuIG1fZXh0cmFMYXlvdXRE
ZWxheQorICAgICAgICBpbnN0ZWFkIG9mIDAgYXMgYSBtaW5pbXVtLiBTbyBjaGVja2luZyAhbWlu
aW11bUxheW91dERlbGF5KCkgbm8gbG9uZ2VyIHdvcmtzLiBUaGUgZml4IGlzIHRvIGNoYW5nZSBp
dCB0byBjaGVjaworICAgICAgICBtaW5pbXVtTGF5b3V0RGVsYXkoKSA9PSBtX2V4dHJhTGF5b3V0
RGVsYXkuIEJ1dCB0aGlzIGlzIGFsbCB0aGUgbW9yZSByZWFzb24gdG8gbW92ZSB0aGlzIG1ldGhv
ZCBvbnRvIERvY3VtZW50LiBJJ2xsIGRvCisgICAgICAgIHRoaXMgaW4gYSBmb2xsb3cgdXAuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVyOjpzaG91bGRSdW5TY3JpcHROb3cp
OiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmg6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
aGFzRXZlclBhaW50ZWQpOiBBZGRlZC4KKwogMjAxMS0wMi0wNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0
aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBRdCBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGViYmUxYjZjNDdi
NWY2MzQ5ZGFiMDA5YzEzMjI0YmFjMTNjZGUzNjIuLjkwZmRhZmZhNzYzZjdkNTI4YTY2ZGMzNzA5
MDBlMDI1MGJhMDNlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTgyLDI4ICsxODIsMzkgQEAgdm9pZCBIVE1MRG9jdW1l
bnRQYXJzZXI6OnJlc3VtZVBhcnNpbmdBZnRlcllpZWxkKCkKICAgICAvLyBidXQgd2UgbmVlZCB0
byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCiAgICAgUmVmUHRyPEhUTUxEb2N1bWVudFBh
cnNlcj4gcHJvdGVjdCh0aGlzKTsKIAorICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsK
KyAgICAgICAgcnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCk7CisKKyAgICAgICAgLy8g
SmF2YVNjcmlwdCBtYXkgaGF2ZSBzdG9wcGVkIG9yIGRldGFjaGVkIHRoZSBwYXJzZXIuCisgICAg
ICAgIGlmIChpc1N0b3BwZWQoKSB8fCBpc1dhaXRpbmdGb3JTY3JpcHRzKCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAogICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBoZXJlIHVu
bGVzcyB3ZSBjYW4gcHVtcCBpbW1lZGlhdGVseS4gIENhbGwgcHVtcFRva2VuaXplcigpCiAgICAg
Ly8gZGlyZWN0bHkgc28gdGhhdCBBU1NFUlRTIHdpbGwgZmlyZSBpZiB3ZSdyZSB3cm9uZy4KICAg
ICBwdW1wVG9rZW5pemVyKEFsbG93WWllbGQpOwogICAgIGVuZElmRGVsYXllZCgpOwogfQogCi1i
b29sIEhUTUxEb2N1bWVudFBhcnNlcjo6cnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCkK
K3ZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIo
KQogewotICAgIEFTU0VSVChtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKTsKKyAgICBBU1NFUlQo
aXNXYWl0aW5nRm9yU2NyaXB0cygpKTsKIAogICAgIFRleHRQb3NpdGlvbjEgc2NyaXB0U3RhcnRQ
b3NpdGlvbiA9IFRleHRQb3NpdGlvbjE6OmJlbG93UmFuZ2VQb3NpdGlvbigpOwogICAgIFJlZlB0
cjxFbGVtZW50PiBzY3JpcHRFbGVtZW50ID0gbV90cmVlQnVpbGRlci0+dGFrZVNjcmlwdFRvUHJv
Y2VzcyhzY3JpcHRTdGFydFBvc2l0aW9uKTsKICAgICAvLyBXZSB3aWxsIG5vdCBoYXZlIGEgc2Ny
aXB0UnVubmVyIHdoZW4gcGFyc2luZyBhIERvY3VtZW50RnJhZ21lbnQuCi0gICAgaWYgKCFtX3Nj
cmlwdFJ1bm5lcikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fc2NyaXB0UnVu
bmVyLT5leGVjdXRlKHNjcmlwdEVsZW1lbnQucmVsZWFzZSgpLCBzY3JpcHRTdGFydFBvc2l0aW9u
KTsKKyAgICBpZiAoIW1fc2NyaXB0UnVubmVyKSB7CisgICAgICAgIG1fdHJlZUJ1aWxkZXItPnNl
dFBhdXNlZChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYm9vbCBkaWRFeGVj
dXRlID0gbV9zY3JpcHRSdW5uZXItPmV4ZWN1dGUoc2NyaXB0RWxlbWVudC5yZWxlYXNlKCksIHNj
cmlwdFN0YXJ0UG9zaXRpb24pOworICAgIG1fdHJlZUJ1aWxkZXItPnNldFBhdXNlZCghZGlkRXhl
Y3V0ZSk7CiB9CiAKIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNo
cm9ub3VzTW9kZSBtb2RlKQogewogICAgIEFTU0VSVCghaXNTdG9wcGVkKCkpOwotICAgIEFTU0VS
VCghbV90cmVlQnVpbGRlci0+aXNQYXVzZWQoKSk7CisgICAgQVNTRVJUKCFpc1dhaXRpbmdGb3JT
Y3JpcHRzKCkpOwogICAgIEFTU0VSVCghaXNTY2hlZHVsZWRGb3JSZXN1bWUoKSk7CiAgICAgLy8g
QVNTRVJUIHRoYXQgdGhpcyBvYmplY3QgaXMgYm90aCBhdHRhY2hlZCB0byB0aGUgRG9jdW1lbnQg
YW5kIHByb3RlY3RlZC4KICAgICBBU1NFUlQocmVmQ291bnQoKSA+PSAyKTsKQEAgLTI0MiwxOSAr
MjUzLDE5IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNocm9u
b3VzTW9kZSBtb2RlKQogICAgICAgICBpZiAoaXNTdG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgLy8gVGhlIHBhcnNlciB3aWxsIHBhdXNlIGl0c2VsZiB3aGVuIHdhaXRp
bmcgb24gYSBzY3JpcHQgdG8gbG9hZCBvciBydW4uCi0gICAgICAgIGlmICghbV90cmVlQnVpbGRl
ci0+aXNQYXVzZWQoKSkKKyAgICAgICAgaWYgKCFpc1dhaXRpbmdGb3JTY3JpcHRzKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBJZiB3ZSdyZSBwYXVzZWQgd2FpdGluZyBm
b3IgYSBzY3JpcHQsIHdlIHRyeSB0byBleGVjdXRlIHNjcmlwdHMgYmVmb3JlIGNvbnRpbnVpbmcu
Ci0gICAgICAgIGJvb2wgc2hvdWxkQ29udGludWVQYXJzaW5nID0gcnVuU2NyaXB0c0ZvclBhdXNl
ZFRyZWVCdWlsZGVyKCk7Ci0gICAgICAgIG1fdHJlZUJ1aWxkZXItPnNldFBhdXNlZCghc2hvdWxk
Q29udGludWVQYXJzaW5nKTsKKyAgICAgICAgaWYgKG1vZGUgPT0gQWxsb3dZaWVsZCAmJiAhbV9w
YXJzZXJTY2hlZHVsZXItPnNob3VsZFJ1blNjcmlwdE5vdygpKQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgcnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCk7CiAKICAgICAgICAg
Ly8gSmF2YVNjcmlwdCBtYXkgaGF2ZSBzdG9wcGVkIG9yIGRldGFjaGVkIHRoZSBwYXJzZXIuCiAg
ICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBp
ZiAoIXNob3VsZENvbnRpbnVlUGFyc2luZykKKyAgICAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlw
dHMoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDI2LDcgKzQzNyw3IEBAIFRl
eHRQb3NpdGlvbjAgSFRNTERvY3VtZW50UGFyc2VyOjp0ZXh0UG9zaXRpb24oKSBjb25zdAogICAg
IHJldHVybiBUZXh0UG9zaXRpb24wKGxpbmUsIGNvbHVtbik7CiB9CiAKLWJvb2wgSFRNTERvY3Vt
ZW50UGFyc2VyOjppc1dhaXRpbmdGb3JTY3JpcHRzKCkgY29uc3QKK2lubGluZSBib29sIEhUTUxE
b2N1bWVudFBhcnNlcjo6aXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IGU5N2MxYjNlZjc0NzNkZjM2ZThiODI3
ZjE3NDA2NjJlODNmYzI4ZTIuLmFhYWYxZjM4ZTAyNGE1MTllZmMwZjAwMTYxZmM3ZDQwNTBkYWVm
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHB1bXBUb2tlbml6ZXIo
U3luY2hyb25vdXNNb2RlKTsKICAgICB2b2lkIHB1bXBUb2tlbml6ZXJJZlBvc3NpYmxlKFN5bmNo
cm9ub3VzTW9kZSk7CiAKLSAgICBib29sIHJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcigp
OworICAgIHZvaWQgcnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCk7CiAgICAgdm9pZCBy
ZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKTsKIAogICAgIHZvaWQgYmVnaW4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5j
cHAKaW5kZXggNTZkYjFhYTAwY2YzYTFhZThjNTZhYWZjODgxZGYwNWJiODEwODYxOC4uOTlkYTI4
Y2E1Yjg3OTIyYWVmYmNkNDE3MmZmZDIxODg5NDJiN2M2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKQEAgLTc4LDYgKzc4LDcg
QEAgSFRNTFBhcnNlclNjaGVkdWxlcjo6fkhUTUxQYXJzZXJTY2hlZHVsZXIoKQogc3RhdGljIGJv
b2wgaXNMYXlvdXRUaW1lckFjdGl2ZShEb2N1bWVudCogZG9jKQogewogICAgIEFTU0VSVChkb2Mp
OworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGJyb2tlbiBvbiBBbmRyb2lkIGJlY2F1c2UgbWluaW11
bUxheW91dERlbGF5IGlzIG5ldmVyIDAuCiAgICAgcmV0dXJuIGRvYy0+dmlldygpICYmIGRvYy0+
dmlldygpLT5sYXlvdXRQZW5kaW5nKCkgJiYgIWRvYy0+bWluaW11bUxheW91dERlbGF5KCk7CiB9
CiAKQEAgLTkzLDYgKzk0LDE5IEBAIHZvaWQgSFRNTFBhcnNlclNjaGVkdWxlcjo6Y29udGludWVO
ZXh0Q2h1bmtUaW1lckZpcmVkKFRpbWVyPEhUTUxQYXJzZXJTY2hlZHVsZXI+CiAgICAgbV9wYXJz
ZXItPnJlc3VtZVBhcnNpbmdBZnRlcllpZWxkKCk7CiB9CiAKK2Jvb2wgSFRNTFBhcnNlclNjaGVk
dWxlcjo6c2hvdWxkUnVuU2NyaXB0Tm93KCkKK3sKKyAgICAvLyBJZiB3ZSd2ZSBuZXZlciBwYWlu
dGVkIGJlZm9yZSBhbmQgYSBsYXlvdXQgaXMgcGVuZGluZywgeWllbGQgcHJpb3IgdG8gcnVubmlu
ZworICAgIC8vIHNjcmlwdHMgdG8gZ2l2ZSB0aGUgcGFnZSBhIGNoYW5jZSB0byBwYWludCBlYXJs
aWVyLgorICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fcGFyc2VyLT5kb2N1bWVudCgpOworICAg
IGJvb2wgaGFzRXZlclBhaW50ZWQgPSBkb2N1bWVudC0+dmlldygpICYmIGRvY3VtZW50LT52aWV3
KCktPmhhc0V2ZXJQYWludGVkKCk7CisgICAgaWYgKCFoYXNFdmVyUGFpbnRlZCAmJiBpc0xheW91
dFRpbWVyQWN0aXZlKGRvY3VtZW50KSkgeworICAgICAgICBtX2NvbnRpbnVlTmV4dENodW5rVGlt
ZXIuc3RhcnRPbmVTaG90KDApOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCiB2b2lkIEhUTUxQYXJzZXJTY2hlZHVsZXI6OnN1c3BlbmQoKQogewog
ICAgIEFTU0VSVCghbV9pc1N1c3BlbmRlZFdpdGhBY3RpdmVUaW1lcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmgKaW5kZXggYzQxNWM2MjFh
Yjk4OTA1ODYwYWRiYzE2MmFiMDhjYjQ3MzM0MDY5OS4uMDM5ODM0MjljYWRiNGM5ZjNhNWViNTY3
NGEzYzI5YjdkNzdlM2NlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlclNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJTY2hlZHVsZXIuaApAQCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgICAgICsr
c2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnM7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAg
ICAKKyAgICBib29sIHNob3VsZFJ1blNjcmlwdE5vdygpOwogCiAgICAgYm9vbCBpc1NjaGVkdWxl
ZEZvclJlc3VtZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdXNwZW5kZWRXaXRoQWN0aXZlVGltZXIg
fHwgbV9jb250aW51ZU5leHRDaHVua1RpbWVyLmlzQWN0aXZlKCk7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKaW5kZXggNDk1OWQ4ZTBhNDU3OTg4YTg3NGU0MDA1MTYzYzQ5ZTE4NjExNTQzYi4u
M2IyNWM2MTgzMjFiOTIwYzhlODljNWJmMjJiZWYxMTZiZGVlYWEyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCkBAIC0yMDAsNiArMjAwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFpbnRC
ZWhhdmlvcihQYWludEJlaGF2aW9yKTsKICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3Io
KSBjb25zdDsKICAgICBib29sIGlzUGFpbnRpbmcoKSBjb25zdDsKKyAgICBib29sIGhhc0V2ZXJQ
YWludGVkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UGFpbnRUaW1lOyB9CiAgICAgdm9pZCBzZXRO
b2RlVG9EcmF3KE5vZGUqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwg
Y29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5
UmVjdCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82539</attachid>
            <date>2011-02-15 15:44:46 -0800</date>
            <delta_ts>2011-02-18 10:21:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54355-20110215154444.patch</filename>
            <type>text/plain</type>
            <size>11019</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzg1NzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5Njg4M2VhYjY3YWI5MGMz
NjU2ZTk0Mjg4ZjY3YWMxMzg4ZmIxNzczLi4yYTFlYTk1MTFhYTEzNjk2MzlkNDBiOTQ0ODY3YTdk
YzQ4YTFmMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTEtMDItMTQgIFRvbnkg
R2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMZXQgdGhlIHBhcnNlciB5aWVsZCBmb3IgbGF5b3V0
IGJlZm9yZSBydW5uaW5nIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU0MzU1CisKKyAgICAgICAgUHJpb3IgdG8gdGhpcyBwYXRjaCwgdGhl
IHBhcnNlciB3b3VsZCB5aWVsZCB0byBwZXJmb3JtIGEgbGF5b3V0L3BhaW50IGJlZm9yZSBydW5u
aW5nIGEKKyAgICAgICAgc2NyaXB0IG9ubHkgaWYgdGhlIHNjcmlwdCBvciBhIHN0eWxlc2hlZXQg
YmxvY2tpbmcgdGhlIHNjcmlwdCBpcyBub3QgbG9hZGVkIHlldC4gU2luY2Ugd2UKKyAgICAgICAg
ZG9uJ3QgcHJlbG9hZCBzY2FuIGludG8gdGhlIGJvZHkgd2hpbGUgcGFyc2luZyB0aGUgaGVhZCwg
dHlwaWNhbGx5IHdlJ2xsIGJsb2NrIG9uIGEgc2NyaXB0CisgICAgICAgIGVhcmx5IGluIHRoZSBi
b2R5IHRoYXQgY2F1c2VzIHVzIHRvIHlpZWxkIHRvIGRvIHRoZSBmaXJzdCBwYWludCB3aXRoaW4g
YSByZWFzb25hYmxlIHRpbWUuCisKKyAgICAgICAgSG93ZXZlciwgSSdtIHBsYW5uaW5nIHRvIGNo
YW5nZSB0aGUgUHJlbG9hZFNjYW5uZXIgdG8gc2NhbiBpbnRvIHRoZSBib2R5IGZyb20gdGhlIGhl
YWQuCisgICAgICAgIFRoYXQgc2lnbmlmaWNhbnRseSBpbXByb3ZlcyBvdmVyYWxsIGxvYWQgdGlt
ZSwgYnV0IHdvdWxkIGh1cnQgZmlyc3QgcGFpbnQgdGltZSBiZWNhdXNlCisgICAgICAgIGZld2Vy
IHNjcmlwdHMgd291bGQgYmUgYmxvY2tlZCBkdXJpbmcgcGFyc2luZyBhbmQgdGh1cyB3b3VsZG4n
dCB5aWVsZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBjYXVzZXMgdXMgdG8geWllbGQgYmVmb3Jl
IHJ1bm5pbmcgc2NyaXB0cyBpZiB3ZSBoYXZlbid0IHBhaW50ZWQgeWV0IChyZWdhcmRsZXNzCisg
ICAgICAgIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBzY3JpcHQgaXMgbG9hZGVkKS4gSW4gYWRkaXRp
b24gdG8gYWxsb3dpbmcgdGhlIGFib3ZlIG1lbnRpb25lZAorICAgICAgICBQcmVsb2FkU2Nhbm5l
ciBjaGFuZ2UgdG8gYmUgaW1wbGVtZW50ZWQgd2l0aG91dCByZWdyZXNzaW5nIGZpcnN0IHBhaW50
IHRpbWUsIHRoaXMgYWxzbworICAgICAgICBpbXByb3ZlcyBmaXJzdCBwYWludCB0aW1lIGJ5IGl0
c2VsZi4KKworICAgICAgICBJIHRlc3RlZCBBbGV4YSdzIHRvcCA0NSB3ZWJzaXRlcyB1c2luZyBX
ZWIgUGFnZSBSZXBsYXkgdG8gY29udHJvbCB0aGUgY29udGVudCBhbmQgc2ltdWxhdGUKKyAgICAg
ICAgYmFuZHdpZHRoLiBUaGlzIHBhdGNoIGltcHJvdmVkIGF2ZXJhZ2UgZmlyc3QgcGFpbnQgdGlt
ZSBieSAxJSBvdmVyIGFuIHVubGltaXRlZCBjb25uZWN0aW9uLAorICAgICAgICA2JSBvdmVyIGEg
MU1icHMgY29ubmVjdGlvbiBhbmQgMTElIG92ZXIgYSA1TWJwcyBjb25uZWN0aW9uLiBUaGVyZSB3
YXMgbm8gc3RhdGlzdGljYWxseQorICAgICAgICBzaWduaWZjYW50IGNoYW5nZSBpbiBwYWdlIGxv
YWQgdGltZS4KKworICAgICAgICBXaXRoaW4gdGhlIHBhZ2VzIHRlc3RlZCwgMzMgaGFkIG5vIHN0
YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgY2hhbmdlIGluIHRpbWUgdG8gZmlyc3QgcGFpbnQsCisg
ICAgICAgIDEyIGltcHJvdmVkLCBhbmQgbm9uZSByZWdyZXNzZWQuIE9mIHRoZSBpbXByb3ZlZCwg
c29tZSBvZiB0aGUgc3RhbmRvdXRzIGZyb20gdGhlIDFNYnBzIHNldAorICAgICAgICBhcmU6IDIw
JSBvbiB5b3V0dWJlLCAzNyUgb24gd2lraSwgMjclIG9uIGViYXksIDEzJSBvbiBjbm4sIDE2JSBv
biBlc3BuLCA3NCUgb24gc29odS4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpyZXN1
bWVQYXJzaW5nQWZ0ZXJZaWVsZCk6IFRoZSBzY2hlZHVsZXIgbWF5IG5vdCBjYWxsIHRoaXMKKyAg
ICAgICAgbWV0aG9kIHdoZW4gcmVzdW1pbmcgZnJvbSBhIHlpZWxkIGJlZm9yZSBhIHRva2VuIG9y
IGEgeWllbGQgYmVmb3JlIGEgc2NyaXB0LiBTbyBpdCBjaGVja3MKKyAgICAgICAgd2hldGhlciB0
aGUgcGFyc2VyIGlzIHBhdXNlZCAod2FpdGluZyBmb3IgYSBzY3JpcHQpIGFuZCBydW5zIHNjcmlw
dHMgZmlyc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnJ1blNjcmlw
dHNGb3JQYXVzZWRUcmVlQnVpbGRlcik6IE1vdmVkIHNldFBhdXNlZCBiaXQgaW50byB0aGlzCisg
ICAgICAgIG1ldGhvZCBzbyB0aGF0IHJlc3VtZVBhcnNpbmdBZnRlcllpZWxkIGRvZXNuJ3QgaGF2
ZSB0byBkdXBsaWNhdGUgaXQgZnJvbSB0aGUgcHVtcFRva2VuaXplcgorICAgICAgICBsb29wLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKTogQWZ0
ZXIgdGFraW5nIGVhY2ggPC9zY3JpcHQ+IGZyb20gdGhlCisgICAgICAgIHRva2VuaXplciwgZ2l2
ZSB0aGUgc2NoZWR1bGVyIGEgY2hhbmNlIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHlpZWxkIGJl
Zm9yZSBydW5uaW5nIHRoYXQKKyAgICAgICAgc2NyaXB0LgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50UGFyc2VyOjppc1dhaXRpbmdGb3JTY3JpcHRzKTogSW5saW5lIHRoaXMgbWV0aG9k
IHNpbmNlIGl0IGlzIG5vdyBjYWxsCisgICAgICAgIGZvciBldmVyeSB0b2tlbiBwcm9jZXNzZWQu
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmg6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c0xheW91dFRpbWVyQWN0aXZlKTogQWRkZWQgYSBGSVhNRSBiZWNhdXNlIHI1MjkxOSBjaGFuZ2Vk
IG1pbmltdW1MYXlvdXREZWxheSgpCisgICAgICAgIHRvIHJldHVybiBtX2V4dHJhTGF5b3V0RGVs
YXkgaW5zdGVhZCBvZiAwIGFzIGEgbWluaW11bS4gU28gY2hlY2tpbmcgIW1pbmltdW1MYXlvdXRE
ZWxheSgpCisgICAgICAgIG5vIGxvbmdlciB3b3Jrcy4gVGhlIGZpeCBpcyB0byBjaGFuZ2UgaXQg
dG8gY2hlY2sgbWluaW11bUxheW91dERlbGF5KCkgPT0KKyAgICAgICAgbV9leHRyYUxheW91dERl
bGF5LiBCdXQgdGhpcyBpcyBhbGwgdGhlIG1vcmUgcmVhc29uIHRvIG1vdmUgdGhpcyBtZXRob2Qg
b250byBEb2N1bWVudC4gSSdsbAorICAgICAgICBkbyB0aGlzIGluIGEgZm9sbG93IHVwLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxkUnVuU2NyaXB0Tm93KTog
QWRkZWQuCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhh
c0V2ZXJQYWludGVkKTogQWRkZWQuCisKIDIwMTEtMDItMTUgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDc5
M2Y3ZTU2MGQ2ZTVkZjAzMzVlMmJkN2MwNWNiMzcxMDE1ZmNmN2YuLjhlMTJmMzc2ZmZhZDY4MWNk
YmU3MDVkMTA3ZTYwZTJjZjk5ZWUxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTgyLDI4ICsxODIsMzkgQEAgdm9pZCBI
VE1MRG9jdW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNpbmdBZnRlcllpZWxkKCkKICAgICAvLyBidXQg
d2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCiAgICAgUmVmUHRyPEhUTUxE
b2N1bWVudFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsKIAorICAgIGlmIChpc1dhaXRpbmdGb3JTY3Jp
cHRzKCkpIHsKKyAgICAgICAgcnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCk7CisKKyAg
ICAgICAgLy8gSmF2YVNjcmlwdCBtYXkgaGF2ZSBzdG9wcGVkIG9yIGRldGFjaGVkIHRoZSBwYXJz
ZXIuCisgICAgICAgIGlmIChpc1N0b3BwZWQoKSB8fCBpc1dhaXRpbmdGb3JTY3JpcHRzKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIC8vIFdlIHNob3VsZCBuZXZlciBi
ZSBoZXJlIHVubGVzcyB3ZSBjYW4gcHVtcCBpbW1lZGlhdGVseS4gIENhbGwgcHVtcFRva2VuaXpl
cigpCiAgICAgLy8gZGlyZWN0bHkgc28gdGhhdCBBU1NFUlRTIHdpbGwgZmlyZSBpZiB3ZSdyZSB3
cm9uZy4KICAgICBwdW1wVG9rZW5pemVyKEFsbG93WWllbGQpOwogICAgIGVuZElmRGVsYXllZCgp
OwogfQogCi1ib29sIEhUTUxEb2N1bWVudFBhcnNlcjo6cnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVC
dWlsZGVyKCkKK3ZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpydW5TY3JpcHRzRm9yUGF1c2VkVHJl
ZUJ1aWxkZXIoKQogewotICAgIEFTU0VSVChtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKTsKKyAg
ICBBU1NFUlQoaXNXYWl0aW5nRm9yU2NyaXB0cygpKTsKIAogICAgIFRleHRQb3NpdGlvbjEgc2Ny
aXB0U3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbjE6OmJlbG93UmFuZ2VQb3NpdGlvbigpOwog
ICAgIFJlZlB0cjxFbGVtZW50PiBzY3JpcHRFbGVtZW50ID0gbV90cmVlQnVpbGRlci0+dGFrZVNj
cmlwdFRvUHJvY2VzcyhzY3JpcHRTdGFydFBvc2l0aW9uKTsKICAgICAvLyBXZSB3aWxsIG5vdCBo
YXZlIGEgc2NyaXB0UnVubmVyIHdoZW4gcGFyc2luZyBhIERvY3VtZW50RnJhZ21lbnQuCi0gICAg
aWYgKCFtX3NjcmlwdFJ1bm5lcikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1f
c2NyaXB0UnVubmVyLT5leGVjdXRlKHNjcmlwdEVsZW1lbnQucmVsZWFzZSgpLCBzY3JpcHRTdGFy
dFBvc2l0aW9uKTsKKyAgICBpZiAoIW1fc2NyaXB0UnVubmVyKSB7CisgICAgICAgIG1fdHJlZUJ1
aWxkZXItPnNldFBhdXNlZChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYm9v
bCBkaWRFeGVjdXRlID0gbV9zY3JpcHRSdW5uZXItPmV4ZWN1dGUoc2NyaXB0RWxlbWVudC5yZWxl
YXNlKCksIHNjcmlwdFN0YXJ0UG9zaXRpb24pOworICAgIG1fdHJlZUJ1aWxkZXItPnNldFBhdXNl
ZCghZGlkRXhlY3V0ZSk7CiB9CiAKIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5p
emVyKFN5bmNocm9ub3VzTW9kZSBtb2RlKQogewogICAgIEFTU0VSVCghaXNTdG9wcGVkKCkpOwot
ICAgIEFTU0VSVCghbV90cmVlQnVpbGRlci0+aXNQYXVzZWQoKSk7CisgICAgQVNTRVJUKCFpc1dh
aXRpbmdGb3JTY3JpcHRzKCkpOwogICAgIEFTU0VSVCghaXNTY2hlZHVsZWRGb3JSZXN1bWUoKSk7
CiAgICAgLy8gQVNTRVJUIHRoYXQgdGhpcyBvYmplY3QgaXMgYm90aCBhdHRhY2hlZCB0byB0aGUg
RG9jdW1lbnQgYW5kIHByb3RlY3RlZC4KICAgICBBU1NFUlQocmVmQ291bnQoKSA+PSAyKTsKQEAg
LTI0NiwxNSArMjU3LDE3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVy
KFN5bmNocm9ub3VzTW9kZSBtb2RlKQogICAgICAgICBpZiAoIW1fdHJlZUJ1aWxkZXItPmlzUGF1
c2VkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBJZiB3ZSdyZSBwYXVz
ZWQgd2FpdGluZyBmb3IgYSBzY3JpcHQsIHdlIHRyeSB0byBleGVjdXRlIHNjcmlwdHMgYmVmb3Jl
IGNvbnRpbnVpbmcuCi0gICAgICAgIGJvb2wgc2hvdWxkQ29udGludWVQYXJzaW5nID0gcnVuU2Ny
aXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCk7Ci0gICAgICAgIG1fdHJlZUJ1aWxkZXItPnNldFBh
dXNlZCghc2hvdWxkQ29udGludWVQYXJzaW5nKTsKKyAgICAgICAgaWYgKG1vZGUgPT0gQWxsb3dZ
aWVsZCAmJiAhbV9wYXJzZXJTY2hlZHVsZXItPnNob3VsZFJ1blNjcmlwdE5vdygpKQorICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgcnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCk7
CiAKICAgICAgICAgLy8gSmF2YVNjcmlwdCBtYXkgaGF2ZSBzdG9wcGVkIG9yIGRldGFjaGVkIHRo
ZSBwYXJzZXIuCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpZiAoIXNob3VsZENvbnRpbnVlUGFyc2luZykKKyAgICAgICAgLy8gVGhlIHBh
cnNlciB3aWxsIHBhdXNlIGl0c2VsZiB3aGVuIHdhaXRpbmcgb24gYSBzY3JpcHQgdG8gbG9hZCBv
ciBydW4uCisgICAgICAgIGlmIChtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCkBAIC00MzksNyArNDUyLDcgQEAgYm9vbCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OmlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdAogdm9pZCBIVE1MRG9jdW1lbnRQYXJz
ZXI6OnJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlvbigpCiB7CiAgICAgQVNTRVJUKCFp
blNjcmlwdEV4ZWN1dGlvbigpKTsKLSAgICBBU1NFUlQoIW1fdHJlZUJ1aWxkZXItPmlzUGF1c2Vk
KCkpOworICAgIEFTU0VSVCghaXNXYWl0aW5nRm9yU2NyaXB0cygpKTsKIAogICAgIG1fcHJlbG9h
ZFNjYW5uZXIuY2xlYXIoKTsKICAgICBwdW1wVG9rZW5pemVySWZQb3NzaWJsZShBbGxvd1lpZWxk
KTsKQEAgLTQ3OCw3ICs0OTEsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgQVNTRVJUKG1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpOworICAgIEFTU0VS
VChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpOwogICAgIC8vIE5vdGU6IFdlIG9ubHkgZXZlciB3YWl0
IG9uIG9uZSBzY3JpcHQgYXQgYSB0aW1lLCBzbyB3ZSBhbHdheXMga25vdyB0aGlzCiAgICAgLy8g
aXMgdGhlIG9uZSB3ZSB3ZXJlIHdhaXRpbmcgb24gYW5kIGNhbiB1bi1wYXVzZSB0aGUgdHJlZSBi
dWlsZGVyLgogICAgIG1fdHJlZUJ1aWxkZXItPnNldFBhdXNlZChmYWxzZSk7CkBAIC01MDQsNyAr
NTE3LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0Zv
clN0eWxlc2hlZXRzKCkKICAgICBSZWZQdHI8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KHRo
aXMpOwogCiAgICAgQVNTRVJUKCFtX3NjcmlwdFJ1bm5lci0+aXNFeGVjdXRpbmdTY3JpcHQoKSk7
Ci0gICAgQVNTRVJUKG1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpOworICAgIEFTU0VSVChpc1dh
aXRpbmdGb3JTY3JpcHRzKCkpOwogICAgIC8vIE5vdGU6IFdlIG9ubHkgZXZlciB3YWl0IG9uIG9u
ZSBzY3JpcHQgYXQgYSB0aW1lLCBzbyB3ZSBhbHdheXMga25vdyB0aGlzCiAgICAgLy8gaXMgdGhl
IG9uZSB3ZSB3ZXJlIHdhaXRpbmcgb24gYW5kIGNhbiB1bi1wYXVzZSB0aGUgdHJlZSBidWlsZGVy
LgogICAgIG1fdHJlZUJ1aWxkZXItPnNldFBhdXNlZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IGJlMmNhMWJhMjc5ZGQw
MzBiNmU4YWU4ZjU3MDVkMGNiYzk0NmFlNTkuLmI4MGU3Zjc0ZjZlNmU5MDBkZTdlNzE5MjIxODM4
ZmE1NDY3ZjkxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHB1bXBU
b2tlbml6ZXIoU3luY2hyb25vdXNNb2RlKTsKICAgICB2b2lkIHB1bXBUb2tlbml6ZXJJZlBvc3Np
YmxlKFN5bmNocm9ub3VzTW9kZSk7CiAKLSAgICBib29sIHJ1blNjcmlwdHNGb3JQYXVzZWRUcmVl
QnVpbGRlcigpOworICAgIHZvaWQgcnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCk7CiAg
ICAgdm9pZCByZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKTsKIAogICAgIHZvaWQg
YmVnaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNj
aGVkdWxlci5jcHAKaW5kZXggNTZkYjFhYTAwY2YzYTFhZThjNTZhYWZjODgxZGYwNWJiODEwODYx
OC4uZWQ1NmU1ZGJkOWE1ZDczMWQ4NGJmY2E2NDNkODVlNGEzMmRmOWY2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKQEAgLTc4
LDYgKzc4LDcgQEAgSFRNTFBhcnNlclNjaGVkdWxlcjo6fkhUTUxQYXJzZXJTY2hlZHVsZXIoKQog
c3RhdGljIGJvb2wgaXNMYXlvdXRUaW1lckFjdGl2ZShEb2N1bWVudCogZG9jKQogewogICAgIEFT
U0VSVChkb2MpOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGJyb2tlbiBvbiBBbmRyb2lkIGJlY2F1
c2UgbWluaW11bUxheW91dERlbGF5IGlzIG5ldmVyIDAuCiAgICAgcmV0dXJuIGRvYy0+dmlldygp
ICYmIGRvYy0+dmlldygpLT5sYXlvdXRQZW5kaW5nKCkgJiYgIWRvYy0+bWluaW11bUxheW91dERl
bGF5KCk7CiB9CiAKQEAgLTkzLDYgKzk0LDE5IEBAIHZvaWQgSFRNTFBhcnNlclNjaGVkdWxlcjo6
Y29udGludWVOZXh0Q2h1bmtUaW1lckZpcmVkKFRpbWVyPEhUTUxQYXJzZXJTY2hlZHVsZXI+CiAg
ICAgbV9wYXJzZXItPnJlc3VtZVBhcnNpbmdBZnRlcllpZWxkKCk7CiB9CiAKK2Jvb2wgSFRNTFBh
cnNlclNjaGVkdWxlcjo6c2hvdWxkUnVuU2NyaXB0Tm93KCkKK3sKKyAgICAvLyBJZiB3ZSd2ZSBu
ZXZlciBwYWludGVkIGJlZm9yZSBhbmQgYSBsYXlvdXQgaXMgcGVuZGluZywgeWllbGQgcHJpb3Ig
dG8gcnVubmluZworICAgIC8vIHNjcmlwdHMgdG8gZ2l2ZSB0aGUgcGFnZSBhIGNoYW5jZSB0byBw
YWludCBlYXJsaWVyLgorICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fcGFyc2VyLT5kb2N1bWVu
dCgpOworICAgIGJvb2wgbmVlZHNGaXJzdFBhaW50ID0gZG9jdW1lbnQtPnZpZXcoKSAmJiAhZG9j
dW1lbnQtPnZpZXcoKS0+aGFzRXZlclBhaW50ZWQoKTsKKyAgICBpZiAobmVlZHNGaXJzdFBhaW50
ICYmIGlzTGF5b3V0VGltZXJBY3RpdmUoZG9jdW1lbnQpKSB7CisgICAgICAgIG1fY29udGludWVO
ZXh0Q2h1bmtUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgSFRNTFBhcnNlclNjaGVkdWxlcjo6c3Vz
cGVuZCgpCiB7CiAgICAgQVNTRVJUKCFtX2lzU3VzcGVuZGVkV2l0aEFjdGl2ZVRpbWVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaAppbmRl
eCBjNDE1YzYyMWFiOTg5MDU4NjBhZGJjMTYyYWIwOGNiNDczMzQwNjk5Li4wMzk4MzQyOWNhZGI0
YzlmM2E1ZWI1Njc0YTNjMjliN2Q3N2UzY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCkBAIC03MCw2ICs3MCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgKytzZXNzaW9uLnByb2Nlc3NlZFRva2VuczsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQorICAgIAorICAgIGJvb2wgc2hvdWxkUnVuU2NyaXB0Tm93KCk7CiAKICAgICBib29s
IGlzU2NoZWR1bGVkRm9yUmVzdW1lKCkgY29uc3QgeyByZXR1cm4gbV9pc1N1c3BlbmRlZFdpdGhB
Y3RpdmVUaW1lciB8fCBtX2NvbnRpbnVlTmV4dENodW5rVGltZXIuaXNBY3RpdmUoKTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAxMTJjYjZjY2EzMzA3YzE0NTY0MTkwM2Y5YTdlMGU5
Y2Q5ZTRiYzM3Li42Nzg5MDhjYzFiYTgzMmJlNjVlNWJkMDZiMzRmMTEzYTI4MWNjZWE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTIwMSw2ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3IpOwogICAgIFBhaW50QmVoYXZpb3IgcGFp
bnRCZWhhdmlvcigpIGNvbnN0OwogICAgIGJvb2wgaXNQYWludGluZygpIGNvbnN0OworICAgIGJv
b2wgaGFzRXZlclBhaW50ZWQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RQYWludFRpbWU7IH0KICAg
ICB2b2lkIHNldE5vZGVUb0RyYXcoTm9kZSopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3Zl
cmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3Zl
cmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82976</attachid>
            <date>2011-02-18 10:21:55 -0800</date>
            <delta_ts>2011-02-18 13:13:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54355-20110218102154.patch</filename>
            <type>text/plain</type>
            <size>8946</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzkwMDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiODc0M2JjOTI3YjYxOTcw
YmM2N2NkMWEyNzJhOTk0ODU4NGI0NjEwLi4yMGI2ZjI3YTE1Y2VkNTcwY2Y0Y2IwOTVlNjc0MDE4
MzA4NjMxZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTEtMDItMTggIFRvbnkg
R2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMZXQgdGhlIHBhcnNlciB5aWVsZCBmb3IgbGF5b3V0
IGJlZm9yZSBydW5uaW5nIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU0MzU1CisKKyAgICAgICAgUHJpb3IgdG8gdGhpcyBwYXRjaCwgdGhl
IHBhcnNlciB3b3VsZCB5aWVsZCB0byBwZXJmb3JtIGEgbGF5b3V0L3BhaW50IGJlZm9yZSBydW5u
aW5nIGEKKyAgICAgICAgc2NyaXB0IG9ubHkgaWYgdGhlIHNjcmlwdCBvciBhIHN0eWxlc2hlZXQg
YmxvY2tpbmcgdGhlIHNjcmlwdCBpcyBub3QgbG9hZGVkIHlldC4gU2luY2Ugd2UKKyAgICAgICAg
ZG9uJ3QgcHJlbG9hZCBzY2FuIGludG8gdGhlIGJvZHkgd2hpbGUgcGFyc2luZyB0aGUgaGVhZCwg
dHlwaWNhbGx5IHdlJ2xsIGJsb2NrIG9uIGEgc2NyaXB0CisgICAgICAgIGVhcmx5IGluIHRoZSBi
b2R5IHRoYXQgY2F1c2VzIHVzIHRvIHlpZWxkIHRvIGRvIHRoZSBmaXJzdCBwYWludCB3aXRoaW4g
YSByZWFzb25hYmxlIHRpbWUuCisKKyAgICAgICAgSG93ZXZlciwgSSdtIHBsYW5uaW5nIHRvIGNo
YW5nZSB0aGUgUHJlbG9hZFNjYW5uZXIgdG8gc2NhbiBpbnRvIHRoZSBib2R5IGZyb20gdGhlIGhl
YWQuCisgICAgICAgIFRoYXQgc2lnbmlmaWNhbnRseSBpbXByb3ZlcyBvdmVyYWxsIGxvYWQgdGlt
ZSwgYnV0IHdvdWxkIGh1cnQgZmlyc3QgcGFpbnQgdGltZSBiZWNhdXNlCisgICAgICAgIGZld2Vy
IHNjcmlwdHMgd291bGQgYmUgYmxvY2tlZCBkdXJpbmcgcGFyc2luZyBhbmQgdGh1cyB3b3VsZG4n
dCB5aWVsZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBjYXVzZXMgdXMgdG8geWllbGQgYmVmb3Jl
IHJ1bm5pbmcgc2NyaXB0cyBpZiB3ZSBoYXZlbid0IHBhaW50ZWQgeWV0IChyZWdhcmRsZXNzCisg
ICAgICAgIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBzY3JpcHQgaXMgbG9hZGVkKS4gSW4gYWRkaXRp
b24gdG8gYWxsb3dpbmcgdGhlIGFib3ZlIG1lbnRpb25lZAorICAgICAgICBQcmVsb2FkU2Nhbm5l
ciBjaGFuZ2UgdG8gYmUgaW1wbGVtZW50ZWQgd2l0aG91dCByZWdyZXNzaW5nIGZpcnN0IHBhaW50
IHRpbWUsIHRoaXMgYWxzbworICAgICAgICBpbXByb3ZlcyBmaXJzdCBwYWludCB0aW1lIGJ5IGl0
c2VsZi4KKworICAgICAgICBJIHRlc3RlZCBBbGV4YSdzIHRvcCA0NSB3ZWJzaXRlcyB1c2luZyBX
ZWIgUGFnZSBSZXBsYXkgdG8gY29udHJvbCB0aGUgY29udGVudCBhbmQgc2ltdWxhdGUKKyAgICAg
ICAgYmFuZHdpZHRoLiBUaGlzIHBhdGNoIGltcHJvdmVkIGF2ZXJhZ2UgZmlyc3QgcGFpbnQgdGlt
ZSBieSAxJSBvdmVyIGFuIHVubGltaXRlZCBjb25uZWN0aW9uLAorICAgICAgICA2JSBvdmVyIGEg
MU1icHMgY29ubmVjdGlvbiBhbmQgMTElIG92ZXIgYSA1TWJwcyBjb25uZWN0aW9uLiBUaGVyZSB3
YXMgbm8gc3RhdGlzdGljYWxseQorICAgICAgICBzaWduaWZjYW50IGNoYW5nZSBpbiBwYWdlIGxv
YWQgdGltZS4KKworICAgICAgICBXaXRoaW4gdGhlIHBhZ2VzIHRlc3RlZCwgMzMgaGFkIG5vIHN0
YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgY2hhbmdlIGluIHRpbWUgdG8gZmlyc3QgcGFpbnQsCisg
ICAgICAgIDEyIGltcHJvdmVkLCBhbmQgbm9uZSByZWdyZXNzZWQuIE9mIHRoZSBpbXByb3ZlZCwg
c29tZSBvZiB0aGUgc3RhbmRvdXRzIGZyb20gdGhlIDFNYnBzIHNldAorICAgICAgICBhcmU6IDIw
JSBvbiB5b3V0dWJlLCAzNyUgb24gd2lraSwgMjclIG9uIGViYXksIDEzJSBvbiBjbm4sIDE2JSBv
biBlc3BuLCA3NCUgb24gc29odS4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OmNhblRh
a2VOZXh0VG9rZW4pOiBUaGlzIGlzIHRoZSBuZXcgeWllbGQgcG9pbnQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOiBSZW1vdmUgQVNTRVJUIHRo
YXQgd2UgYXJlIG5vdCBwYXVzZWQuIGlzUGF1c2VkCisgICAgICAgIG1lYW5zIHRoYXQgd2UgYXJl
IHdhaXRpbmcgZm9yIGEgc2NyaXB0LiBCdWcgNTQ1NzQgY2hhbmdlZCBwdW1wVG9rZW5pemVyKCkg
c28gdGhhdCBpdCBkb2VzCisgICAgICAgIHRoZSByaWdodCB0aGluZyB3aGV0aGVyIHdlIGFyZSBq
dXN0IGJlZm9yZSBhIHRva2VuIG9yIHdhaXRpbmcgZm9yIGEgc2NyaXB0LiBOb3cgdGhhdCB3ZSBt
YXkKKyAgICAgICAgeWllbGQgYmVmb3JlIGEgdG9rZW4gb3IgYmVmb3JlIGEgc2NyaXB0LCB0aGlz
IG1heSBiZSBjYWxsZWQgd2hpbGUgcGF1c2VkLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNMYXlvdXRUaW1lckFjdGl2
ZSk6IEFkZGVkIGEgRklYTUUgYmVjYXVzZSByNTI5MTkgY2hhbmdlZCBtaW5pbXVtTGF5b3V0RGVs
YXkoKQorICAgICAgICB0byByZXR1cm4gbV9leHRyYUxheW91dERlbGF5IGluc3RlYWQgb2YgMCBh
cyBhIG1pbmltdW0uIFNvIGNoZWNraW5nICFtaW5pbXVtTGF5b3V0RGVsYXkoKQorICAgICAgICBu
byBsb25nZXIgd29ya3MuIFRoZSBmaXggaXMgdG8gY2hhbmdlIGl0IHRvIGNoZWNrIG1pbmltdW1M
YXlvdXREZWxheSgpID09CisgICAgICAgIG1fZXh0cmFMYXlvdXREZWxheS4gQnV0IHRoaXMgaXMg
YWxsIHRoZSBtb3JlIHJlYXNvbiB0byBtb3ZlIHRoaXMgbWV0aG9kIG9udG8gRG9jdW1lbnQuIEkn
bGwKKyAgICAgICAgZG8gdGhpcyBpbiBhIGZvbGxvdyB1cC4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQYXJzZXJTY2hlZHVsZXI6OmNoZWNrRm9yWWllbGRCZWZvcmVTY3JpcHQpOiBBZGRlZC4KKyAg
ICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVyOjpjaGVja0ZvcllpZWxkQmVmb3JlVG9rZW4pOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhh
c0V2ZXJQYWludGVkKTogQWRkZWQuCisKIDIwMTEtMDItMTYgIFRvbnkgR2VudGlsY29yZSAgPHRv
bnlnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmlu
ZGV4IGRmYmE5NTk0M2ZmNTY2M2Q0YjI5YjVhYmZjNGJiZWEzYzE0YjYwNWYuLjU3MDE0MjVlMzY3
ZGI3MWM0MWViZTE2OGIyMDk3M2JlN2E3NGEzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjA3LDYgKzIwNyw5IEBAIGJv
b2wgSFRNTERvY3VtZW50UGFyc2VyOjpjYW5UYWtlTmV4dFRva2VuKFN5bmNocm9ub3VzTW9kZSBt
b2RlLCBQdW1wU2Vzc2lvbiYgc2VzCiAKICAgICAvLyBUaGUgcGFyc2VyIHdpbGwgcGF1c2UgaXRz
ZWxmIHdoZW4gd2FpdGluZyBvbiBhIHNjcmlwdCB0byBsb2FkIG9yIHJ1bi4KICAgICBpZiAobV90
cmVlQnVpbGRlci0+aXNQYXVzZWQoKSkgeworICAgICAgICBpZiAobW9kZSA9PSBBbGxvd1lpZWxk
ICYmIG1fcGFyc2VyU2NoZWR1bGVyLT5jaGVja0ZvcllpZWxkQmVmb3JlU2NyaXB0KHNlc3Npb24p
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgICAgIC8vIElmIHdlJ3JlIHBhdXNl
ZCB3YWl0aW5nIGZvciBhIHNjcmlwdCwgd2UgdHJ5IHRvIGV4ZWN1dGUgc2NyaXB0cyBiZWZvcmUg
Y29udGludWluZy4KICAgICAgICAgYm9vbCBzaG91bGRDb250aW51ZVBhcnNpbmcgPSBydW5TY3Jp
cHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIoKTsKICAgICAgICAgbV90cmVlQnVpbGRlci0+c2V0UGF1
c2VkKCFzaG91bGRDb250aW51ZVBhcnNpbmcpOwpAQCAtMjI0LDggKzIyNyw4IEBAIGJvb2wgSFRN
TERvY3VtZW50UGFyc2VyOjpjYW5UYWtlTmV4dFRva2VuKFN5bmNocm9ub3VzTW9kZSBtb2RlLCBQ
dW1wU2Vzc2lvbiYgc2VzCiAgICAgICAgICYmIGRvY3VtZW50KCktPmZyYW1lKCkgJiYgZG9jdW1l
bnQoKS0+ZnJhbWUoKS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLT5sb2NhdGlvbkNoYW5nZVBlbmRp
bmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1vZGUgPT0gQWxsb3dZaWVs
ZCkKLSAgICAgICAgbV9wYXJzZXJTY2hlZHVsZXItPmNoZWNrRm9yWWllbGRCZWZvcmVUb2tlbihz
ZXNzaW9uKTsKKyAgICBpZiAobW9kZSA9PSBBbGxvd1lpZWxkICYmIG1fcGFyc2VyU2NoZWR1bGVy
LT5jaGVja0ZvcllpZWxkQmVmb3JlVG9rZW4oc2Vzc2lvbikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjMzLDcgKzIzNiw2IEBAIGJvb2wgSFRNTERv
Y3VtZW50UGFyc2VyOjpjYW5UYWtlTmV4dFRva2VuKFN5bmNocm9ub3VzTW9kZSBtb2RlLCBQdW1w
U2Vzc2lvbiYgc2VzCiB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5j
aHJvbm91c01vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoIWlzU3RvcHBlZCgpKTsKLSAgICBBU1NF
UlQoIW1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpOwogICAgIEFTU0VSVCghaXNTY2hlZHVsZWRG
b3JSZXN1bWUoKSk7CiAgICAgLy8gQVNTRVJUIHRoYXQgdGhpcyBvYmplY3QgaXMgYm90aCBhdHRh
Y2hlZCB0byB0aGUgRG9jdW1lbnQgYW5kIHByb3RlY3RlZC4KICAgICBBU1NFUlQocmVmQ291bnQo
KSA+PSAyKTsKQEAgLTI0Niw3ICsyNDgsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVt
cFRva2VuaXplcihTeW5jaHJvbm91c01vZGUgbW9kZSkKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsV3JpdGVI
VE1MKGRvY3VtZW50KCksIG1faW5wdXQuY3VycmVudCgpLmxlbmd0aCgpLCBtX3Rva2VuaXplci0+
bGluZU51bWJlcigpKTsKIAogICAgIFB1bXBTZXNzaW9uIHNlc3Npb247Ci0gICAgd2hpbGUgKGNh
blRha2VOZXh0VG9rZW4obW9kZSwgc2Vzc2lvbikgJiYgIXNlc3Npb24ubmVlZHNZaWVsZCkgewor
ICAgIHdoaWxlIChjYW5UYWtlTmV4dFRva2VuKG1vZGUsIHNlc3Npb24pKSB7CiAgICAgICAgIG1f
c291cmNlVHJhY2tlci5zdGFydChtX2lucHV0LCBtX3Rva2VuKTsKICAgICAgICAgaWYgKCFtX3Rv
a2VuaXplci0+bmV4dFRva2VuKG1faW5wdXQuY3VycmVudCgpLCBtX3Rva2VuKSkKICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlclNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
U2NoZWR1bGVyLmNwcAppbmRleCA5OWMwOTA3NjZlZjY5MzI3ZGM2Nzg3ZGU3MDk5NjQwYzczYWVk
YTg1Li41MjhiNWZhZTY1YjliMGVmM2VmMmY3MjEwY2NjNGYwZWI1M2RiYzA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcApAQCAt
NzgsNiArNzgsNyBAQCBIVE1MUGFyc2VyU2NoZWR1bGVyOjp+SFRNTFBhcnNlclNjaGVkdWxlcigp
CiBzdGF0aWMgYm9vbCBpc0xheW91dFRpbWVyQWN0aXZlKERvY3VtZW50KiBkb2MpCiB7CiAgICAg
QVNTRVJUKGRvYyk7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgYnJva2VuIG9uIEFuZHJvaWQgYmVj
YXVzZSBtaW5pbXVtTGF5b3V0RGVsYXkgaXMgbmV2ZXIgMC4KICAgICByZXR1cm4gZG9jLT52aWV3
KCkgJiYgZG9jLT52aWV3KCktPmxheW91dFBlbmRpbmcoKSAmJiAhZG9jLT5taW5pbXVtTGF5b3V0
RGVsYXkoKTsKIH0KIApAQCAtOTMsNiArOTQsMTkgQEAgdm9pZCBIVE1MUGFyc2VyU2NoZWR1bGVy
Ojpjb250aW51ZU5leHRDaHVua1RpbWVyRmlyZWQoVGltZXI8SFRNTFBhcnNlclNjaGVkdWxlcj4K
ICAgICBtX3BhcnNlci0+cmVzdW1lUGFyc2luZ0FmdGVyWWllbGQoKTsKIH0KIAorYm9vbCBIVE1M
UGFyc2VyU2NoZWR1bGVyOjpjaGVja0ZvcllpZWxkQmVmb3JlU2NyaXB0KFB1bXBTZXNzaW9uJiBz
ZXNzaW9uKQoreworICAgIC8vIElmIHdlJ3ZlIG5ldmVyIHBhaW50ZWQgYmVmb3JlIGFuZCBhIGxh
eW91dCBpcyBwZW5kaW5nLCB5aWVsZCBwcmlvciB0byBydW5uaW5nCisgICAgLy8gc2NyaXB0cyB0
byBnaXZlIHRoZSBwYWdlIGEgY2hhbmNlIHRvIHBhaW50IGVhcmxpZXIuCisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gbV9wYXJzZXItPmRvY3VtZW50KCk7CisgICAgYm9vbCBuZWVkc0ZpcnN0UGFp
bnQgPSBkb2N1bWVudC0+dmlldygpICYmICFkb2N1bWVudC0+dmlldygpLT5oYXNFdmVyUGFpbnRl
ZCgpOworICAgIGlmIChuZWVkc0ZpcnN0UGFpbnQgJiYgaXNMYXlvdXRUaW1lckFjdGl2ZShkb2N1
bWVudCkpIHsKKyAgICAgICAgc2Vzc2lvbi5uZWVkc1lpZWxkID0gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBIVE1MUGFyc2Vy
U2NoZWR1bGVyOjpzY2hlZHVsZUZvclJlc3VtZSgpCiB7CiAgICAgbV9jb250aW51ZU5leHRDaHVu
a1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJTY2hlZHVsZXIuaAppbmRleCBkMzJlNzQ1YmE5OGI1MjFjM2JiOTMxNWY1OTU0
ZTJlYWZiZTk3MzNjLi5mNjFiOGEwYzEwZjIyZGJlYWE4ZWU2OWFjNWRjMjcyZmQwMDE4M2QxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5o
CkBAIC01NywxNiArNTcsMjAgQEAgcHVibGljOgogICAgIH5IVE1MUGFyc2VyU2NoZWR1bGVyKCk7
CiAKICAgICAvLyBJbmxpbmUgYXMgdGhpcyBpcyBjYWxsZWQgYWZ0ZXIgZXZlcnkgdG9rZW4gaW4g
dGhlIHBhcnNlci4KLSAgICB2b2lkIGNoZWNrRm9yWWllbGRCZWZvcmVUb2tlbihQdW1wU2Vzc2lv
biYgc2Vzc2lvbikKKyAgICBib29sIGNoZWNrRm9yWWllbGRCZWZvcmVUb2tlbihQdW1wU2Vzc2lv
biYgc2Vzc2lvbikKICAgICB7CiAgICAgICAgIGlmIChzZXNzaW9uLnByb2Nlc3NlZFRva2VucyA+
IG1fcGFyc2VyQ2h1bmtTaXplKSB7CiAgICAgICAgICAgICBzZXNzaW9uLnByb2Nlc3NlZFRva2Vu
cyA9IDA7CiAgICAgICAgICAgICBkb3VibGUgZWxhcHNlZFRpbWUgPSBjdXJyZW50VGltZSgpIC0g
c2Vzc2lvbi5zdGFydFRpbWU7Ci0gICAgICAgICAgICBpZiAoZWxhcHNlZFRpbWUgPiBtX3BhcnNl
clRpbWVMaW1pdCkKKyAgICAgICAgICAgIGlmIChlbGFwc2VkVGltZSA+IG1fcGFyc2VyVGltZUxp
bWl0KSB7CiAgICAgICAgICAgICAgICAgc2Vzc2lvbi5uZWVkc1lpZWxkID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICArK3Nlc3Npb24ucHJvY2Vzc2VkVG9rZW5zOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQorICAgIGJvb2wgY2hlY2tGb3JZaWVsZEJlZm9yZVNjcmlwdChQdW1wU2Vzc2lvbiYpOwogCiAg
ICAgdm9pZCBzY2hlZHVsZUZvclJlc3VtZSgpOwogICAgIGJvb2wgaXNTY2hlZHVsZWRGb3JSZXN1
bWUoKSBjb25zdCB7IHJldHVybiBtX2lzU3VzcGVuZGVkV2l0aEFjdGl2ZVRpbWVyIHx8IG1fY29u
dGludWVOZXh0Q2h1bmtUaW1lci5pc0FjdGl2ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApp
bmRleCAxMTc1ODFjMGYzZmI4NDU1YTIyZDM3MjkwOTgyYTcxNzBhMDUzYjYyLi5iZjJmZDYwYjFi
M2VkMDE1MTgyOTcyYzNjZTk1YjA0YjhkNDAxOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
QEAgLTIwNyw2ICsyMDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWludEJlaGF2aW9yKFBh
aW50QmVoYXZpb3IpOwogICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvcigpIGNvbnN0Owog
ICAgIGJvb2wgaXNQYWludGluZygpIGNvbnN0OworICAgIGJvb2wgaGFzRXZlclBhaW50ZWQoKSBj
b25zdCB7IHJldHVybiBtX2xhc3RQYWludFRpbWU7IH0KICAgICB2b2lkIHNldE5vZGVUb0RyYXco
Tm9kZSopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRS
ZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83001</attachid>
            <date>2011-02-18 13:13:57 -0800</date>
            <delta_ts>2011-03-09 17:20:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54355-20110218131356.patch</filename>
            <type>text/plain</type>
            <size>7341</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzkwMDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiODc0M2JjOTI3YjYxOTcw
YmM2N2NkMWEyNzJhOTk0ODU4NGI0NjEwLi45Yzg2Yzg5MTQzMGI0NWVhYTFmODRkZTg2NGVmYjJk
NGMyNGQ3NDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDItMTggIFRvbnkg
R2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMZXQgdGhlIHBhcnNlciB5aWVsZCBmb3IgbGF5b3V0
IGJlZm9yZSBydW5uaW5nIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU0MzU1CisKKyAgICAgICAgUHJpb3IgdG8gdGhpcyBwYXRjaCwgdGhl
IHBhcnNlciB3b3VsZCB5aWVsZCB0byBwZXJmb3JtIGEgbGF5b3V0L3BhaW50IGJlZm9yZSBydW5u
aW5nIGEKKyAgICAgICAgc2NyaXB0IG9ubHkgaWYgdGhlIHNjcmlwdCBvciBhIHN0eWxlc2hlZXQg
YmxvY2tpbmcgdGhlIHNjcmlwdCBpcyBub3QgbG9hZGVkIHlldC4gU2luY2Ugd2UKKyAgICAgICAg
ZG9uJ3QgcHJlbG9hZCBzY2FuIGludG8gdGhlIGJvZHkgd2hpbGUgcGFyc2luZyB0aGUgaGVhZCwg
dHlwaWNhbGx5IHdlJ2xsIGJsb2NrIG9uIGEgc2NyaXB0CisgICAgICAgIGVhcmx5IGluIHRoZSBi
b2R5IHRoYXQgY2F1c2VzIHVzIHRvIHlpZWxkIHRvIGRvIHRoZSBmaXJzdCBwYWludCB3aXRoaW4g
YSByZWFzb25hYmxlIHRpbWUuCisKKyAgICAgICAgSG93ZXZlciwgSSdtIHBsYW5uaW5nIHRvIGNo
YW5nZSB0aGUgUHJlbG9hZFNjYW5uZXIgdG8gc2NhbiBpbnRvIHRoZSBib2R5IGZyb20gdGhlIGhl
YWQuCisgICAgICAgIFRoYXQgc2lnbmlmaWNhbnRseSBpbXByb3ZlcyBvdmVyYWxsIGxvYWQgdGlt
ZSwgYnV0IHdvdWxkIGh1cnQgZmlyc3QgcGFpbnQgdGltZSBiZWNhdXNlCisgICAgICAgIGZld2Vy
IHNjcmlwdHMgd291bGQgYmUgYmxvY2tlZCBkdXJpbmcgcGFyc2luZyBhbmQgdGh1cyB3b3VsZG4n
dCB5aWVsZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBjYXVzZXMgdXMgdG8geWllbGQgYmVmb3Jl
IHJ1bm5pbmcgc2NyaXB0cyBpZiB3ZSBoYXZlbid0IHBhaW50ZWQgeWV0IChyZWdhcmRsZXNzCisg
ICAgICAgIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBzY3JpcHQgaXMgbG9hZGVkKS4gSW4gYWRkaXRp
b24gdG8gYWxsb3dpbmcgdGhlIGFib3ZlIG1lbnRpb25lZAorICAgICAgICBQcmVsb2FkU2Nhbm5l
ciBjaGFuZ2UgdG8gYmUgaW1wbGVtZW50ZWQgd2l0aG91dCByZWdyZXNzaW5nIGZpcnN0IHBhaW50
IHRpbWUsIHRoaXMgYWxzbworICAgICAgICBpbXByb3ZlcyBmaXJzdCBwYWludCB0aW1lIGJ5IGl0
c2VsZi4KKworICAgICAgICBJIHRlc3RlZCBBbGV4YSdzIHRvcCA0NSB3ZWJzaXRlcyB1c2luZyBX
ZWIgUGFnZSBSZXBsYXkgdG8gY29udHJvbCB0aGUgY29udGVudCBhbmQgc2ltdWxhdGUKKyAgICAg
ICAgYmFuZHdpZHRoLiBUaGlzIHBhdGNoIGltcHJvdmVkIGF2ZXJhZ2UgZmlyc3QgcGFpbnQgdGlt
ZSBieSAxJSBvdmVyIGFuIHVubGltaXRlZCBjb25uZWN0aW9uLAorICAgICAgICA2JSBvdmVyIGEg
MU1icHMgY29ubmVjdGlvbiBhbmQgMTElIG92ZXIgYSA1TWJwcyBjb25uZWN0aW9uLiBUaGVyZSB3
YXMgbm8gc3RhdGlzdGljYWxseQorICAgICAgICBzaWduaWZjYW50IGNoYW5nZSBpbiBwYWdlIGxv
YWQgdGltZS4KKworICAgICAgICBXaXRoaW4gdGhlIHBhZ2VzIHRlc3RlZCwgMzMgaGFkIG5vIHN0
YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgY2hhbmdlIGluIHRpbWUgdG8gZmlyc3QgcGFpbnQsCisg
ICAgICAgIDEyIGltcHJvdmVkLCBhbmQgbm9uZSByZWdyZXNzZWQuIE9mIHRoZSBpbXByb3ZlZCwg
c29tZSBvZiB0aGUgc3RhbmRvdXRzIGZyb20gdGhlIDFNYnBzIHNldAorICAgICAgICBhcmU6IDIw
JSBvbiB5b3V0dWJlLCAzNyUgb24gd2lraSwgMjclIG9uIGViYXksIDEzJSBvbiBjbm4sIDE2JSBv
biBlc3BuLCA3NCUgb24gc29odS4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OmNhblRh
a2VOZXh0VG9rZW4pOiBUaGlzIGlzIHRoZSBuZXcgeWllbGQgcG9pbnQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOiBSZW1vdmUgQVNTRVJUIHRo
YXQgd2UgYXJlIG5vdCBwYXVzZWQuIGlzUGF1c2VkCisgICAgICAgIG1lYW5zIHRoYXQgd2UgYXJl
IHdhaXRpbmcgZm9yIGEgc2NyaXB0LiBCdWcgNTQ1NzQgY2hhbmdlZCBwdW1wVG9rZW5pemVyKCkg
c28gdGhhdCBpdCBkb2VzCisgICAgICAgIHRoZSByaWdodCB0aGluZyB3aGV0aGVyIHdlIGFyZSBq
dXN0IGJlZm9yZSBhIHRva2VuIG9yIHdhaXRpbmcgZm9yIGEgc2NyaXB0LiBOb3cgdGhhdCB3ZSBt
YXkKKyAgICAgICAgeWllbGQgYmVmb3JlIGEgdG9rZW4gb3IgYmVmb3JlIGEgc2NyaXB0LCB0aGlz
IG1heSBiZSBjYWxsZWQgd2hpbGUgcGF1c2VkLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNMYXlvdXRUaW1lckFjdGl2
ZSk6IEFkZGVkIGEgRklYTUUgYmVjYXVzZSByNTI5MTkgY2hhbmdlZCBtaW5pbXVtTGF5b3V0RGVs
YXkoKQorICAgICAgICB0byByZXR1cm4gbV9leHRyYUxheW91dERlbGF5IGluc3RlYWQgb2YgMCBh
cyBhIG1pbmltdW0uIFNvIGNoZWNraW5nICFtaW5pbXVtTGF5b3V0RGVsYXkoKQorICAgICAgICBu
byBsb25nZXIgd29ya3MuIFRoZSBmaXggaXMgdG8gY2hhbmdlIGl0IHRvIGNoZWNrIG1pbmltdW1M
YXlvdXREZWxheSgpID09CisgICAgICAgIG1fZXh0cmFMYXlvdXREZWxheS4gQnV0IHRoaXMgaXMg
YWxsIHRoZSBtb3JlIHJlYXNvbiB0byBtb3ZlIHRoaXMgbWV0aG9kIG9udG8gRG9jdW1lbnQuIEkn
bGwKKyAgICAgICAgZG8gdGhpcyBpbiBhIGZvbGxvdyB1cC4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQYXJzZXJTY2hlZHVsZXI6OmNoZWNrRm9yWWllbGRCZWZvcmVTY3JpcHQpOiBBZGRlZC4KKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpo
YXNFdmVyUGFpbnRlZCk6IEFkZGVkLgorCiAyMDExLTAyLTE2ICBUb255IEdlbnRpbGNvcmUgIDx0
b255Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApp
bmRleCBkZmJhOTU5NDNmZjU2NjNkNGIyOWI1YWJmYzRiYmVhM2MxNGI2MDVmLi44ZDg4OGMzZTc5
ODI1ZTdlNDE4OTdkMDJjNDMxMDUzMTA3NzYyZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTIwNyw2ICsyMDcsMTMgQEAg
Ym9vbCBIVE1MRG9jdW1lbnRQYXJzZXI6OmNhblRha2VOZXh0VG9rZW4oU3luY2hyb25vdXNNb2Rl
IG1vZGUsIFB1bXBTZXNzaW9uJiBzZXMKIAogICAgIC8vIFRoZSBwYXJzZXIgd2lsbCBwYXVzZSBp
dHNlbGYgd2hlbiB3YWl0aW5nIG9uIGEgc2NyaXB0IHRvIGxvYWQgb3IgcnVuLgogICAgIGlmICht
X3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKSB7CisgICAgICAgIGlmIChtb2RlID09IEFsbG93WWll
bGQpCisgICAgICAgICAgICBtX3BhcnNlclNjaGVkdWxlci0+Y2hlY2tGb3JZaWVsZEJlZm9yZVNj
cmlwdChzZXNzaW9uKTsKKworICAgICAgICAvLyBJZiB3ZSBkb24ndCBydW4gdGhlIHNjcmlwdCwg
d2UgY2Fubm90IGFsbG93IHRoZSBuZXh0IHRva2VuIHRvIGJlIHRha2VuLgorICAgICAgICBpZiAo
c2Vzc2lvbi5uZWVkc1lpZWxkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgICAg
IC8vIElmIHdlJ3JlIHBhdXNlZCB3YWl0aW5nIGZvciBhIHNjcmlwdCwgd2UgdHJ5IHRvIGV4ZWN1
dGUgc2NyaXB0cyBiZWZvcmUgY29udGludWluZy4KICAgICAgICAgYm9vbCBzaG91bGRDb250aW51
ZVBhcnNpbmcgPSBydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIoKTsKICAgICAgICAgbV90
cmVlQnVpbGRlci0+c2V0UGF1c2VkKCFzaG91bGRDb250aW51ZVBhcnNpbmcpOwpAQCAtMjMzLDcg
KzI0MCw2IEBAIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpjYW5UYWtlTmV4dFRva2VuKFN5bmNo
cm9ub3VzTW9kZSBtb2RlLCBQdW1wU2Vzc2lvbiYgc2VzCiB2b2lkIEhUTUxEb2N1bWVudFBhcnNl
cjo6cHVtcFRva2VuaXplcihTeW5jaHJvbm91c01vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoIWlz
U3RvcHBlZCgpKTsKLSAgICBBU1NFUlQoIW1fdHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpOwogICAg
IEFTU0VSVCghaXNTY2hlZHVsZWRGb3JSZXN1bWUoKSk7CiAgICAgLy8gQVNTRVJUIHRoYXQgdGhp
cyBvYmplY3QgaXMgYm90aCBhdHRhY2hlZCB0byB0aGUgRG9jdW1lbnQgYW5kIHByb3RlY3RlZC4K
ICAgICBBU1NFUlQocmVmQ291bnQoKSA+PSAyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKaW5kZXggOTljMDkwNzY2ZWY2OTMyN2Rj
Njc4N2RlNzA5OTY0MGM3M2FlZGE4NS4uNzQ4OWNkZjNiYTFkMTA2Y2NhMGU5NDYwNWFjNjVhODQw
NzU1ZTQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
clNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
clNjaGVkdWxlci5jcHAKQEAgLTc4LDYgKzc4LDcgQEAgSFRNTFBhcnNlclNjaGVkdWxlcjo6fkhU
TUxQYXJzZXJTY2hlZHVsZXIoKQogc3RhdGljIGJvb2wgaXNMYXlvdXRUaW1lckFjdGl2ZShEb2N1
bWVudCogZG9jKQogewogICAgIEFTU0VSVChkb2MpOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGJy
b2tlbiBvbiBBbmRyb2lkIGJlY2F1c2UgbWluaW11bUxheW91dERlbGF5IGlzIG5ldmVyIDAuCiAg
ICAgcmV0dXJuIGRvYy0+dmlldygpICYmIGRvYy0+dmlldygpLT5sYXlvdXRQZW5kaW5nKCkgJiYg
IWRvYy0+bWluaW11bUxheW91dERlbGF5KCk7CiB9CiAKQEAgLTkzLDYgKzk0LDE2IEBAIHZvaWQg
SFRNTFBhcnNlclNjaGVkdWxlcjo6Y29udGludWVOZXh0Q2h1bmtUaW1lckZpcmVkKFRpbWVyPEhU
TUxQYXJzZXJTY2hlZHVsZXI+CiAgICAgbV9wYXJzZXItPnJlc3VtZVBhcnNpbmdBZnRlcllpZWxk
KCk7CiB9CiAKK3ZvaWQgSFRNTFBhcnNlclNjaGVkdWxlcjo6Y2hlY2tGb3JZaWVsZEJlZm9yZVNj
cmlwdChQdW1wU2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAgICAvLyBJZiB3ZSd2ZSBuZXZlciBwYWlu
dGVkIGJlZm9yZSBhbmQgYSBsYXlvdXQgaXMgcGVuZGluZywgeWllbGQgcHJpb3IgdG8gcnVubmlu
ZworICAgIC8vIHNjcmlwdHMgdG8gZ2l2ZSB0aGUgcGFnZSBhIGNoYW5jZSB0byBwYWludCBlYXJs
aWVyLgorICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fcGFyc2VyLT5kb2N1bWVudCgpOworICAg
IGJvb2wgbmVlZHNGaXJzdFBhaW50ID0gZG9jdW1lbnQtPnZpZXcoKSAmJiAhZG9jdW1lbnQtPnZp
ZXcoKS0+aGFzRXZlclBhaW50ZWQoKTsKKyAgICBpZiAobmVlZHNGaXJzdFBhaW50ICYmIGlzTGF5
b3V0VGltZXJBY3RpdmUoZG9jdW1lbnQpKQorICAgICAgICBzZXNzaW9uLm5lZWRzWWllbGQgPSB0
cnVlOworfQorCiB2b2lkIEhUTUxQYXJzZXJTY2hlZHVsZXI6OnNjaGVkdWxlRm9yUmVzdW1lKCkK
IHsKICAgICBtX2NvbnRpbnVlTmV4dENodW5rVGltZXIuc3RhcnRPbmVTaG90KDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCmluZGV4IGQz
MmU3NDViYTk4YjUyMWMzYmI5MzE1ZjU5NTRlMmVhZmJlOTczM2MuLjJhZjAxMzA4YTVhOGZiMDdj
YjRmMTg1NjJhOGM3OTVkZjkyMWJmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmgKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgICAgICsrc2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnM7CiAgICAgfQorICAgIHZv
aWQgY2hlY2tGb3JZaWVsZEJlZm9yZVNjcmlwdChQdW1wU2Vzc2lvbiYpOwogCiAgICAgdm9pZCBz
Y2hlZHVsZUZvclJlc3VtZSgpOwogICAgIGJvb2wgaXNTY2hlZHVsZWRGb3JSZXN1bWUoKSBjb25z
dCB7IHJldHVybiBtX2lzU3VzcGVuZGVkV2l0aEFjdGl2ZVRpbWVyIHx8IG1fY29udGludWVOZXh0
Q2h1bmtUaW1lci5pc0FjdGl2ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAxMTc1
ODFjMGYzZmI4NDU1YTIyZDM3MjkwOTgyYTcxNzBhMDUzYjYyLi5iZjJmZDYwYjFiM2VkMDE1MTgy
OTcyYzNjZTk1YjA0YjhkNDAxOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTIwNyw2
ICsyMDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZp
b3IpOwogICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvcigpIGNvbnN0OwogICAgIGJvb2wg
aXNQYWludGluZygpIGNvbnN0OworICAgIGJvb2wgaGFzRXZlclBhaW50ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RQYWludFRpbWU7IH0KICAgICB2b2lkIHNldE5vZGVUb0RyYXcoTm9kZSopOwog
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0
aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85263</attachid>
            <date>2011-03-09 17:20:52 -0800</date>
            <delta_ts>2011-03-11 10:29:39 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-54355-20110309172051.patch</filename>
            <type>text/plain</type>
            <size>6614</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk2MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYjZjYjJjMGYzMmIwZmRl
NTY4NTEyMzA2YmVlMWY0YTkyN2E1MmIzLi5kYjlmOTMzNjRiZGUxN2YwYTE5NDYwZTc1NzI5MTVl
NTZlZDVhMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDItMjggIFRvbnkg
R2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIFNlaWRlbC4KKworICAgICAgICBMZXQgdGhlIHBhcnNlciB5aWVsZCBmb3IgbGF5b3V0IGJl
Zm9yZSBydW5uaW5nIHNjcmlwdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU0MzU1CisKKyAgICAgICAgUHJpb3IgdG8gdGhpcyBwYXRjaCwgdGhlIHBh
cnNlciB3b3VsZCB5aWVsZCB0byBwZXJmb3JtIGEgbGF5b3V0L3BhaW50IGJlZm9yZSBydW5uaW5n
IGEKKyAgICAgICAgc2NyaXB0IG9ubHkgaWYgdGhlIHNjcmlwdCBvciBhIHN0eWxlc2hlZXQgYmxv
Y2tpbmcgdGhlIHNjcmlwdCBpcyBub3QgbG9hZGVkIHlldC4gU2luY2Ugd2UKKyAgICAgICAgZG9u
J3QgcHJlbG9hZCBzY2FuIGludG8gdGhlIGJvZHkgd2hpbGUgcGFyc2luZyB0aGUgaGVhZCwgdHlw
aWNhbGx5IHdlJ2xsIGJsb2NrIG9uIGEgc2NyaXB0CisgICAgICAgIGVhcmx5IGluIHRoZSBib2R5
IHRoYXQgY2F1c2VzIHVzIHRvIHlpZWxkIHRvIGRvIHRoZSBmaXJzdCBwYWludCB3aXRoaW4gYSBy
ZWFzb25hYmxlIHRpbWUuCisKKyAgICAgICAgSG93ZXZlciwgSSdtIHBsYW5uaW5nIHRvIGNoYW5n
ZSB0aGUgUHJlbG9hZFNjYW5uZXIgdG8gc2NhbiBpbnRvIHRoZSBib2R5IGZyb20gdGhlIGhlYWQu
CisgICAgICAgIFRoYXQgc2lnbmlmaWNhbnRseSBpbXByb3ZlcyBvdmVyYWxsIGxvYWQgdGltZSwg
YnV0IHdvdWxkIGh1cnQgZmlyc3QgcGFpbnQgdGltZSBiZWNhdXNlCisgICAgICAgIGZld2VyIHNj
cmlwdHMgd291bGQgYmUgYmxvY2tlZCBkdXJpbmcgcGFyc2luZyBhbmQgdGh1cyB3b3VsZG4ndCB5
aWVsZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBjYXVzZXMgdXMgdG8geWllbGQgYmVmb3JlIHJ1
bm5pbmcgc2NyaXB0cyBpZiB3ZSBoYXZlbid0IHBhaW50ZWQgeWV0IChyZWdhcmRsZXNzCisgICAg
ICAgIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBzY3JpcHQgaXMgbG9hZGVkKS4gSW4gYWRkaXRpb24g
dG8gYWxsb3dpbmcgdGhlIGFib3ZlIG1lbnRpb25lZAorICAgICAgICBQcmVsb2FkU2Nhbm5lciBj
aGFuZ2UgdG8gYmUgaW1wbGVtZW50ZWQgd2l0aG91dCByZWdyZXNzaW5nIGZpcnN0IHBhaW50IHRp
bWUsIHRoaXMgYWxzbworICAgICAgICBpbXByb3ZlcyBmaXJzdCBwYWludCB0aW1lIGJ5IGl0c2Vs
Zi4KKworICAgICAgICBJIHRlc3RlZCBBbGV4YSdzIHRvcCA0NSB3ZWJzaXRlcyB1c2luZyBXZWIg
UGFnZSBSZXBsYXkgdG8gY29udHJvbCB0aGUgY29udGVudCBhbmQgc2ltdWxhdGUKKyAgICAgICAg
YmFuZHdpZHRoLiBUaGlzIHBhdGNoIGltcHJvdmVkIGF2ZXJhZ2UgZmlyc3QgcGFpbnQgdGltZSBi
eSAxJSBvdmVyIGFuIHVubGltaXRlZCBjb25uZWN0aW9uLAorICAgICAgICA2JSBvdmVyIGEgMU1i
cHMgY29ubmVjdGlvbiBhbmQgMTElIG92ZXIgYSA1TWJwcyBjb25uZWN0aW9uLiBUaGVyZSB3YXMg
bm8gc3RhdGlzdGljYWxseQorICAgICAgICBzaWduaWZjYW50IGNoYW5nZSBpbiBwYWdlIGxvYWQg
dGltZS4KKworICAgICAgICBXaXRoaW4gdGhlIHBhZ2VzIHRlc3RlZCwgMzMgaGFkIG5vIHN0YXRp
c3RpY2FsbHkgc2lnbmlmaWNhbnQgY2hhbmdlIGluIHRpbWUgdG8gZmlyc3QgcGFpbnQsCisgICAg
ICAgIDEyIGltcHJvdmVkLCBhbmQgbm9uZSByZWdyZXNzZWQuIE9mIHRoZSBpbXByb3ZlZCwgc29t
ZSBvZiB0aGUgc3RhbmRvdXRzIGZyb20gdGhlIDFNYnBzIHNldAorICAgICAgICBhcmU6IDIwJSBv
biB5b3V0dWJlLCAzNyUgb24gd2lraSwgMjclIG9uIGViYXksIDEzJSBvbiBjbm4sIDE2JSBvbiBl
c3BuLCA3NCUgb24gc29odS4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OmNhblRha2VO
ZXh0VG9rZW4pOiBUaGlzIGlzIHRoZSBuZXcgeWllbGQgcG9pbnQuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOiBSZW1vdmUgQVNTRVJUIHRoYXQg
d2UgYXJlIG5vdCBwYXVzZWQuIGlzUGF1c2VkCisgICAgICAgIG1lYW5zIHRoYXQgd2UgYXJlIHdh
aXRpbmcgZm9yIGEgc2NyaXB0LiBCdWcgNTQ1NzQgY2hhbmdlZCBwdW1wVG9rZW5pemVyKCkgc28g
dGhhdCBpdCBkb2VzCisgICAgICAgIHRoZSByaWdodCB0aGluZyB3aGV0aGVyIHdlIGFyZSBqdXN0
IGJlZm9yZSBhIHRva2VuIG9yIHdhaXRpbmcgZm9yIGEgc2NyaXB0LiBOb3cgdGhhdCB3ZSBtYXkK
KyAgICAgICAgeWllbGQgYmVmb3JlIGEgdG9rZW4gb3IgYmVmb3JlIGEgc2NyaXB0LCB0aGlzIG1h
eSBiZSBjYWxsZWQgd2hpbGUgcGF1c2VkLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlclNjaGVkdWxlcjo6
Y2hlY2tGb3JZaWVsZEJlZm9yZVNjcmlwdCk6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhhc0V2ZXJQYWludGVkKTogQWRk
ZWQuCisKIDIwMTEtMDMtMDkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA2NjQxNmE3MDJhOTM0Y2U1MmU5NDRh
OWQ0ZmJhY2I3YWM2YzgwN2FhLi4yNGZhNWZiN2IyNGZkNmY3YzNlYWI2ZDU1Yjc4ODYzNzYzNTFm
OTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHAKQEAgLTIxMiw2ICsyMTIsMTMgQEAgYm9vbCBIVE1MRG9jdW1lbnRQYXJzZXI6OmNh
blRha2VOZXh0VG9rZW4oU3luY2hyb25vdXNNb2RlIG1vZGUsIFB1bXBTZXNzaW9uJiBzZXMKIAog
ICAgIC8vIFRoZSBwYXJzZXIgd2lsbCBwYXVzZSBpdHNlbGYgd2hlbiB3YWl0aW5nIG9uIGEgc2Ny
aXB0IHRvIGxvYWQgb3IgcnVuLgogICAgIGlmIChtX3RyZWVCdWlsZGVyLT5pc1BhdXNlZCgpKSB7
CisgICAgICAgIGlmIChtb2RlID09IEFsbG93WWllbGQpCisgICAgICAgICAgICBtX3BhcnNlclNj
aGVkdWxlci0+Y2hlY2tGb3JZaWVsZEJlZm9yZVNjcmlwdChzZXNzaW9uKTsKKworICAgICAgICAv
LyBJZiB3ZSBkb24ndCBydW4gdGhlIHNjcmlwdCwgd2UgY2Fubm90IGFsbG93IHRoZSBuZXh0IHRv
a2VuIHRvIGJlIHRha2VuLgorICAgICAgICBpZiAoc2Vzc2lvbi5uZWVkc1lpZWxkKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgICAgIC8vIElmIHdlJ3JlIHBhdXNlZCB3YWl0aW5n
IGZvciBhIHNjcmlwdCwgd2UgdHJ5IHRvIGV4ZWN1dGUgc2NyaXB0cyBiZWZvcmUgY29udGludWlu
Zy4KICAgICAgICAgYm9vbCBzaG91bGRDb250aW51ZVBhcnNpbmcgPSBydW5TY3JpcHRzRm9yUGF1
c2VkVHJlZUJ1aWxkZXIoKTsKICAgICAgICAgbV90cmVlQnVpbGRlci0+c2V0UGF1c2VkKCFzaG91
bGRDb250aW51ZVBhcnNpbmcpOwpAQCAtMjM4LDcgKzI0NSw2IEBAIGJvb2wgSFRNTERvY3VtZW50
UGFyc2VyOjpjYW5UYWtlTmV4dFRva2VuKFN5bmNocm9ub3VzTW9kZSBtb2RlLCBQdW1wU2Vzc2lv
biYgc2VzCiB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJvbm91
c01vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoIWlzU3RvcHBlZCgpKTsKLSAgICBBU1NFUlQoIW1f
dHJlZUJ1aWxkZXItPmlzUGF1c2VkKCkpOwogICAgIEFTU0VSVCghaXNTY2hlZHVsZWRGb3JSZXN1
bWUoKSk7CiAgICAgLy8gQVNTRVJUIHRoYXQgdGhpcyBvYmplY3QgaXMgYm90aCBhdHRhY2hlZCB0
byB0aGUgRG9jdW1lbnQgYW5kIHByb3RlY3RlZC4KICAgICBBU1NFUlQocmVmQ291bnQoKSA+PSAy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hl
ZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxl
ci5jcHAKaW5kZXggYzQ1MjVjOGVjNzI3ZTc5NWM5OWM4NTkzYjI5NTU4YzZmZGRhYmY3NC4uMzkz
YzRiZTY5ODMzNDQzYTliMmRlNDI0YzNjMzQxZjY3ODdhNmFjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKQEAgLTg2LDYgKzg2
LDE2IEBAIHZvaWQgSFRNTFBhcnNlclNjaGVkdWxlcjo6Y29udGludWVOZXh0Q2h1bmtUaW1lckZp
cmVkKFRpbWVyPEhUTUxQYXJzZXJTY2hlZHVsZXI+CiAgICAgbV9wYXJzZXItPnJlc3VtZVBhcnNp
bmdBZnRlcllpZWxkKCk7CiB9CiAKK3ZvaWQgSFRNTFBhcnNlclNjaGVkdWxlcjo6Y2hlY2tGb3JZ
aWVsZEJlZm9yZVNjcmlwdChQdW1wU2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAgICAvLyBJZiB3ZSd2
ZSBuZXZlciBwYWludGVkIGJlZm9yZSBhbmQgYSBsYXlvdXQgaXMgcGVuZGluZywgeWllbGQgcHJp
b3IgdG8gcnVubmluZworICAgIC8vIHNjcmlwdHMgdG8gZ2l2ZSB0aGUgcGFnZSBhIGNoYW5jZSB0
byBwYWludCBlYXJsaWVyLgorICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fcGFyc2VyLT5kb2N1
bWVudCgpOworICAgIGJvb2wgbmVlZHNGaXJzdFBhaW50ID0gZG9jdW1lbnQtPnZpZXcoKSAmJiAh
ZG9jdW1lbnQtPnZpZXcoKS0+aGFzRXZlclBhaW50ZWQoKTsKKyAgICBpZiAobmVlZHNGaXJzdFBh
aW50ICYmIGRvY3VtZW50LT5pc0xheW91dFRpbWVyQWN0aXZlKCkpCisgICAgICAgIHNlc3Npb24u
bmVlZHNZaWVsZCA9IHRydWU7Cit9CisKIHZvaWQgSFRNTFBhcnNlclNjaGVkdWxlcjo6c2NoZWR1
bGVGb3JSZXN1bWUoKQogewogICAgIG1fY29udGludWVOZXh0Q2h1bmtUaW1lci5zdGFydE9uZVNo
b3QoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
U2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1
bGVyLmgKaW5kZXggOWFhMTJlYjkyNDBlNTY2YjIzMzljZjQ4MWI1YjQ3Zjg0OWNkN2RkMC4uNzMw
YjUyYjFhZmQyZDgzNmI0NDBlMjNjNDQ4MGU4NTQ0NDM0NmE5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaApAQCAtNzAsNiArNzAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgKytzZXNzaW9uLnByb2Nlc3NlZFRva2VuczsK
ICAgICB9CisgICAgdm9pZCBjaGVja0ZvcllpZWxkQmVmb3JlU2NyaXB0KFB1bXBTZXNzaW9uJik7
CiAKICAgICB2b2lkIHNjaGVkdWxlRm9yUmVzdW1lKCk7CiAgICAgYm9vbCBpc1NjaGVkdWxlZEZv
clJlc3VtZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdXNwZW5kZWRXaXRoQWN0aXZlVGltZXIgfHwg
bV9jb250aW51ZU5leHRDaHVua1RpbWVyLmlzQWN0aXZlKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCmluZGV4IDM4Y2NjZjEzNjRkMWUxNzAwMjc3YmUyNDIzYTRhYTU4Yjc4ZmVlMjMuLmI2ODQx
ZTY2ZGIxMzBmNGZkZDE0NDMwNjE3MmZjODE3NjE3NTgzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaApAQCAtMjA2LDYgKzIwNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhaW50QmVoYXZp
b3IoUGFpbnRCZWhhdmlvcik7CiAgICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yKCkgY29u
c3Q7CiAgICAgYm9vbCBpc1BhaW50aW5nKCkgY29uc3Q7CisgICAgYm9vbCBoYXNFdmVyUGFpbnRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFBhaW50VGltZTsgfQogICAgIHZvaWQgc2V0Tm9kZVRv
RHJhdyhOb2RlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0
IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3Qp
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>