<?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>48809</bug_id>
          
          <creation_ts>2010-11-01 17:14:17 -0700</creation_ts>
          <short_desc>Update correct content state during back/forward navigations</short_desc>
          <delta_ts>2010-11-22 15:01:46 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>N/A</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>49761</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Charles Reis">creis</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>brettw</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fishd</cc>
    
    <cc>levin</cc>
    
    <cc>mihaip</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>303104</commentid>
    <comment_count>0</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-01 17:14:17 -0700</bug_when>
    <thetext>As part of http://code.google.com/p/chromium/issues/detail?id=58082, we discovered that Chromium&apos;s RenderView is sending UpdateState messages to the browser process using the page ID of the last committed history item but the state from the previous history item.  These are not necessarily the same history item, if multiple navigations have been attempted but have not committed.  For example, visiting multiple pages and then holding down the &quot;back&quot; keyboard shortcut can lead to corrupted UpdateState messages that have the original page&apos;s page ID but an intermediate page&apos;s state.

The UpdateState message should instead be sent with the state of the last committed history item, but the Chromium WebKit API does not currently expose this.  I propose adding WebFrame::lastCommittedHistoryItem() method, which will obtain the desired history item from BackForwardListClientImpl.  WebFrameImpl will have to notify BackForwardListClientImpl when history items commit, so that BackForwardListClientImpl can keep track of the correct item.

I have a draft changelist that shows that this fixes one of the key issues in Chromium bug 58082.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303106</commentid>
    <comment_count>1</comment_count>
      <attachid>72605</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-01 17:18:52 -0700</bug_when>
    <thetext>Created attachment 72605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304859</commentid>
    <comment_count>2</comment_count>
      <attachid>72605</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-04 14:03:17 -0700</bug_when>
    <thetext>Comment on attachment 72605
Patch

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

&gt; WebKit/chromium/src/WebFrameImpl.cpp:1006
&gt; +    return WebHistoryItem(viewImpl()-&gt;lastCommittedHistoryItem());

I think you can implement this using m_frame-&gt;loader()-&gt;history()-&gt;currentItem()
as that provides you with the last-committed history item for this frame.

This would allow you to eliminate a lot of code in this patch.

Come to think of it, I suspect that WebFrameImpl::currentHistoryItem is
incorrectly implemented.  It is incorrectly accessing the currentItem of
the BackForwardList, which corresponds to the HistoryItem of the top-most
frame.  If a user of the WebKit API wants the HistoryItem of the top-most
frame, then they should just use WebFrame::top()-&gt;currentHistoryItem().

In other words, currentHistoryItem is supposed to mean the same thing as
lastCommittedHistoryItem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304860</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-04 14:06:16 -0700</bug_when>
    <thetext>Same goes for previousHistoryItem.  It should be returning the HistoryItem associated with the Frame, not the top-most Frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304938</commentid>
    <comment_count>4</comment_count>
      <attachid>72605</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-04 15:43:32 -0700</bug_when>
    <thetext>Comment on attachment 72605
Patch

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

&gt;&gt; WebKit/chromium/src/WebFrameImpl.cpp:1006
&gt;&gt; +    return WebHistoryItem(viewImpl()-&gt;lastCommittedHistoryItem());
&gt; 
&gt; I think you can implement this using m_frame-&gt;loader()-&gt;history()-&gt;currentItem()
&gt; as that provides you with the last-committed history item for this frame.
&gt; 
&gt; This would allow you to eliminate a lot of code in this patch.
&gt; 
&gt; Come to think of it, I suspect that WebFrameImpl::currentHistoryItem is
&gt; incorrectly implemented.  It is incorrectly accessing the currentItem of
&gt; the BackForwardList, which corresponds to the HistoryItem of the top-most
&gt; frame.  If a user of the WebKit API wants the HistoryItem of the top-most
&gt; frame, then they should just use WebFrame::top()-&gt;currentHistoryItem().
&gt; 
&gt; In other words, currentHistoryItem is supposed to mean the same thing as
&gt; lastCommittedHistoryItem.

My test in http://codereview.chromium.org/4444001/show is showing that won&apos;t work.  m_frame-&gt;loader()-&gt;history()-&gt;currentItem() is returning the item for the navigation that&apos;s currently in progress, not the last committed item.  As a result, all the UpdateState messages are sending state from the page that&apos;s about to commit, rather than the one that&apos;s about to be replaced.

Is there another way to get at the history item for the last committed navigation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304972</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-04 16:09:00 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; My test in http://codereview.chromium.org/4444001/show is showing that won&apos;t work.  m_frame-&gt;loader()-&gt;history()-&gt;currentItem() is returning the item for the navigation that&apos;s currently in progress, not the last committed item.  As a result, all the UpdateState messages are sending state from the page that&apos;s about to commit, rather than the one that&apos;s about to be replaced.
&gt; 
&gt; Is there another way to get at the history item for the last committed navigation?

In that case, wouldn&apos;t the previousHistoryItem provide you with what you need?  The previousHistoryItem is the HistoryItem that was previously current.  So, if the currentHistoryItem is the new item, then the previousHistoryItem should be the one you need, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304981</commentid>
    <comment_count>6</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-04 16:16:46 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; My test in http://codereview.chromium.org/4444001/show is showing that won&apos;t work.  m_frame-&gt;loader()-&gt;history()-&gt;currentItem() is returning the item for the navigation that&apos;s currently in progress, not the last committed item.  As a result, all the UpdateState messages are sending state from the page that&apos;s about to commit, rather than the one that&apos;s about to be replaced.
&gt; &gt; 
&gt; &gt; Is there another way to get at the history item for the last committed navigation?
&gt; 
&gt; In that case, wouldn&apos;t the previousHistoryItem provide you with what you need?  The previousHistoryItem is the HistoryItem that was previously current.  So, if the currentHistoryItem is the new item, then the previousHistoryItem should be the one you need, no?

Here&apos;s the scenario:
 - Visit pages A, B, C
 - Quickly press back twice (to B and then to A), before B has a chance to commit.

At this point in time, A is the current item, B is the previous item, and C is the last committed item.  I need a way to get to C.  Note that there may be an arbitrary number of pages like B (between previous and last committed), if you hold down the back button and race past several entries.

The original bug is that we were using the previous item, which was giving us B, but the last committed page ID (corresponding to C).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304998</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-04 16:42:01 -0700</bug_when>
    <thetext>&gt; Here&apos;s the scenario:
&gt;  - Visit pages A, B, C
&gt;  - Quickly press back twice (to B and then to A), before B has a chance to commit.
&gt; 
&gt; At this point in time, A is the current item, B is the previous item, and C is the last committed item.  I need a way to get to C.  Note that there may be an arbitrary number of pages like B (between previous and last committed), if you hold down the back button and race past several entries.
&gt; 
&gt; The original bug is that we were using the previous item, which was giving us B, but the last committed page ID (corresponding to C).

Oh, I see.  Perhaps we should not be setting the previous HistoryItem until we successfully commit.  I think it may confuse other things if previousHistoryItem is not reliably the last committed HistoryItem.

The HistoryController appears to have the concept of a provisional HistoryItem that is only set once we commit.  See HistoryController::updateForCommit.

Perhaps you should try fixing WebFrameImpl::previousHistoryItem to use HistoryController::previousItem() instead of BackForwardList::previousItem()?

Likewise, perhaps we should defer the updating of BackForwardList::{current,previous}Item until we commit.  See HistoryController::goToItem, where it assigns those directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305049</commentid>
    <comment_count>8</comment_count>
      <attachid>73018</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-04 17:49:02 -0700</bug_when>
    <thetext>Created attachment 73018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305050</commentid>
    <comment_count>9</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-04 17:50:49 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Oh, I see.  Perhaps we should not be setting the previous HistoryItem until we successfully commit.  I think it may confuse other things if previousHistoryItem is not reliably the last committed HistoryItem.
&gt; 
&gt; The HistoryController appears to have the concept of a provisional HistoryItem that is only set once we commit.  See HistoryController::updateForCommit.
&gt; 
&gt; Perhaps you should try fixing WebFrameImpl::previousHistoryItem to use HistoryController::previousItem() instead of BackForwardList::previousItem()?

Ah.  This does fix the bug, and it looks like it&apos;s the right move for the other callers as well (e.g., the equivalent callers in test_shell and DRT).

Note that this requires adding a previousItem() getter to HistoryController, since it only has a private field for it and doesn&apos;t currently expose it.

&gt; Likewise, perhaps we should defer the updating of BackForwardList::{current,previous}Item until we commit.  See HistoryController::goToItem, where it assigns those directly.

That seems like a much bigger change, especially since the comment in HistoryController::goToItem says it eagerly updates the BF cursor on purpose.  Do we need to tackle that one here?

I&apos;ve uploaded a new patch.  The webkit-patch script generated the ChangeLog, but I&apos;m wondering if I&apos;m doing that wrong-- I thought this would have required modifications to two separate ChangeLog files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305302</commentid>
    <comment_count>10</comment_count>
      <attachid>73018</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-05 08:41:06 -0700</bug_when>
    <thetext>Comment on attachment 73018
Patch

This change LGTM, but yeah... you need an entry in WebCore/ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305303</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-05 08:41:47 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Ah.  This does fix the bug, and it looks like it&apos;s the right move for the other callers as well (e.g., the equivalent callers in test_shell and DRT).

Excellent!


&gt; &gt; Likewise, perhaps we should defer the updating of BackForwardList::{current,previous}Item until we commit.  See HistoryController::goToItem, where it assigns those directly.
&gt; 
&gt; That seems like a much bigger change, especially since the comment in HistoryController::goToItem says it eagerly updates the BF cursor on purpose.  Do we need to tackle that one here?

Agreed.  It is better tackled elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305345</commentid>
    <comment_count>12</comment_count>
      <attachid>73077</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-05 10:21:43 -0700</bug_when>
    <thetext>Created attachment 73077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305405</commentid>
    <comment_count>13</comment_count>
      <attachid>73077</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-05 11:24:45 -0700</bug_when>
    <thetext>Comment on attachment 73077
Patch

Clearing flags on attachment: 73077

Committed r71437: &lt;http://trac.webkit.org/changeset/71437&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305406</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-05 11:24:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306177</commentid>
    <comment_count>15</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-08 09:59:40 -0800</bug_when>
    <thetext>After this landed and got picked up by Chrome, Chrome&apos;s SessionHistoryTest.FragmentBackForward started failing.  That test:
 - Visits fragment.html#a, fragment.html#b, fragment.html#c
 - Goes back several times, expecting to see them in reverse order

Instead, it sees #b (correct), then #c (incorrect), and keeps alternating between them.  I can verify this behavior manually in Chrome, but not in test_shell.  I&apos;ll have to take a closer look to see how this change caused that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306197</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-08 10:31:00 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; After this landed and got picked up by Chrome, Chrome&apos;s SessionHistoryTest.FragmentBackForward started failing.  That test:
&gt;  - Visits fragment.html#a, fragment.html#b, fragment.html#c
&gt;  - Goes back several times, expecting to see them in reverse order
&gt; 
&gt; Instead, it sees #b (correct), then #c (incorrect), and keeps alternating between them.  I can verify this behavior manually in Chrome, but not in test_shell.  I&apos;ll have to take a closer look to see how this change caused that.

Ugh.  It is not uncommon for code in Chromium (e.g., navigation_controller.cc) to be working against you in cases like this because it was trying to compensate for some bug in WebKit (such as the one you fixed here).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306489</commentid>
    <comment_count>17</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-08 17:10:09 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Ugh.  It is not uncommon for code in Chromium (e.g., navigation_controller.cc) to be working against you in cases like this because it was trying to compensate for some bug in WebKit (such as the one you fixed here).

Interesting-- this didn&apos;t turn out the way I expected.  The problem is that HistoryController&apos;s m_previousItem is null after the load commits, rather than being the last committed history item.  It gets set to null in HistoryController::updateForFrameLoadCompleted.  (As a result, WebFrameImpl::previousHistoryItem returns null when Chrome tries to send UpdateState messages, which leads to the bug I mentioned.  Details: http://code.google.com/p/chromium/issues/detail?id=62156)

I&apos;m wary about changing the behavior of HistoryController itself, but that does seem like odd behavior.  Darin, do you understand what&apos;s going on there?  Is it better to change to having a new WebFrameImpl::lastCommittedHistoryItem() method (as in the earlier patch here), or to try to avoid setting m_previousItem to null?

Either way, this has led to buggy navigation behavior in Chrome, so we may want to revert this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306506</commentid>
    <comment_count>18</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-08 17:32:37 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Interesting-- this didn&apos;t turn out the way I expected.  The problem is that HistoryController&apos;s m_previousItem is null after the load commits, rather than being the last committed history item.  It gets set to null in HistoryController::updateForFrameLoadCompleted.  (As a result, WebFrameImpl::previousHistoryItem returns null when Chrome tries to send UpdateState messages, which leads to the bug I mentioned.  Details: http://code.google.com/p/chromium/issues/detail?id=62156)

A small clarification: m_previousItem always gets set to null, but it&apos;s at different times depending on whether it&apos;s a fragment navigation or not (which is why the Chrome bug only happens when navigating to a URL fragment).  For normal navigations, updateForFrameLoadCompleted gets called after we send the UpdateState message.  For fragment navigations, it gets called twice before we send the UpdateState message (preventing the message from getting sent).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306816</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-09 08:51:55 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; Interesting-- this didn&apos;t turn out the way I expected.  The problem is that HistoryController&apos;s m_previousItem is null after the load commits, rather than being the last committed history item.  It gets set to null in HistoryController::updateForFrameLoadCompleted.  (As a result, WebFrameImpl::previousHistoryItem returns null when Chrome tries to send UpdateState messages, which leads to the bug I mentioned.  Details: http://code.google.com/p/chromium/issues/detail?id=62156)
&gt; 
&gt; A small clarification: m_previousItem always gets set to null, but it&apos;s at different times depending on whether it&apos;s a fragment navigation or not (which is why the Chrome bug only happens when navigating to a URL fragment).  For normal navigations, updateForFrameLoadCompleted gets called after we send the UpdateState message.  For fragment navigations, it gets called twice before we send the UpdateState message (preventing the message from getting sent).

I can&apos;t think of any good reason for nulling out m_previousItem.  Does anything actually break (layout test wise) if you make HistoryController::updateForFrameLoadCompleted() do nothing?  The comment in that function seems out-of-date.  It seems like the kind of thing that m_provisionalItem resolves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306923</commentid>
    <comment_count>20</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-09 12:17:39 -0800</bug_when>
    <thetext>(In reply to comment #19)

&gt; I can&apos;t think of any good reason for nulling out m_previousItem.  Does anything actually break (layout test wise) if you make HistoryController::updateForFrameLoadCompleted() do nothing?  The comment in that function seems out-of-date.  It seems like the kind of thing that m_provisionalItem resolves.

Yep, that breaks forward fragment navigations (in both Chrome and test_shell).  Plus it introduces a crash in certain cases because of an ASSERT(!m_previousItem) in HistoryController::recursiveGoToItem on line 567.  Disabling the assert still leaves the problem with forward navigations.

It&apos;s too bad these files aren&apos;t better commented, because it&apos;s not clear what values m_previousItem is expected to have at various points in time.  There seem to be a lot of assumptions that it is null between navigations rather than pointing to the last committed item, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307521</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-10 13:37:58 -0800</bug_when>
    <thetext>So, if we are going to have a m_lastCommittedItem anywhere, I think it should probably be maintained on HistoryController.  I suspect m_previousItem should be that, but it sounds like we&apos;d need to untangle some things first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308097</commentid>
    <comment_count>22</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-11 13:23:54 -0800</bug_when>
    <thetext>I dug a little deeper and found the root cause of why previousItem wasn&apos;t working for fragments.  As I mentioned in comment 18, HistoryController::updateForFrameLoadCompleted() is getting called before the content state is updated, which means m_previousItem is null when we need it.

It turns out this is because FrameLoader::loadInSameDocument() is simply calling dispatchDidNavigateWithinPage() after calling checkComplete() and checkLoadComplete().  By moving the dispatchDidNavigateWithinPage() call earlier, we still have m_previousItem when the content state is updated.  This fixes the issue with fragment navigations entirely.

I&apos;ve double checked that the behavior of Chromium&apos;s FrameLoaderClientImpl::dispatchDidNavigateWithinPage() is the same whether we call it before or after checkComplete().  I&apos;m running the layout tests now to be sure.  Patch on the way-- it&apos;s nice and simple, since we don&apos;t need to keep track of lastCommittedItem separately anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308099</commentid>
    <comment_count>23</comment_count>
      <attachid>73647</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-11 13:26:37 -0800</bug_when>
    <thetext>Created attachment 73647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308155</commentid>
    <comment_count>24</comment_count>
      <attachid>73647</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-11 14:29:18 -0800</bug_when>
    <thetext>Comment on attachment 73647
Patch

This has two failing layout tests:
fast/history/same-document-iframes-changing-pushstate.html
fast/loader/stateobjects/document-destroyed-navigate-back.html

I&apos;ll look into it and update accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308325</commentid>
    <comment_count>25</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-11 19:05:55 -0800</bug_when>
    <thetext>Found the problem with the pushstate tests.  They revealed that we were not sending a content state update for same-page back/forward navigations before (because m_previousItem was 0).  After my change, we were sending updates, but with the wrong value for m_previousItem.

The problem was that HistoryController::m_previousItem was not being updated for back/forward navigations-- it&apos;s perfectly safe to send a content state update, as long as it&apos;s the correct one.

The new patch I&apos;m uploading ensures m_previousItem is correct in this case by updating it in HistoryController::setCurrentItem.  The layout tests I mention in comment 24 cover the change, but I&apos;m running the rest of the tests to double check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308326</commentid>
    <comment_count>26</comment_count>
      <attachid>73692</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-11 19:06:23 -0800</bug_when>
    <thetext>Created attachment 73692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308637</commentid>
    <comment_count>27</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-12 10:37:36 -0800</bug_when>
    <thetext>There&apos;s a lot of noise on the Chromium try servers (i.e., layout tests that fail with or without my change), but the results look good to me-- I haven&apos;t seen any failures relevant to the patch.  I&apos;d say it&apos;s ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308814</commentid>
    <comment_count>28</comment_count>
      <attachid>73692</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-12 15:51:14 -0800</bug_when>
    <thetext>Comment on attachment 73692
Patch

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

&gt; WebCore/ChangeLog:8
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=48809

BTW, the usual ChangeLog format (if you use webkit-patch upload) is:

[bug title]
[bug link]

[longer description]

(this assumes you&apos;re going to retitle the bug, since you&apos;re not actually adding lastCommittedHistoryItem() anymore)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308889</commentid>
    <comment_count>29</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-12 18:04:00 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; BTW, the usual ChangeLog format (if you use webkit-patch upload) is:
&gt; 
&gt; [bug title]
&gt; [bug link]
&gt; 
&gt; [longer description]
&gt; 
&gt; (this assumes you&apos;re going to retitle the bug, since you&apos;re not actually adding lastCommittedHistoryItem() anymore)

Sure-- update on the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308892</commentid>
    <comment_count>30</comment_count>
      <attachid>73802</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-12 18:15:05 -0800</bug_when>
    <thetext>Created attachment 73802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309446</commentid>
    <comment_count>31</comment_count>
      <attachid>73802</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-15 14:20:54 -0800</bug_when>
    <thetext>Comment on attachment 73802
Patch

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

&gt; WebCore/loader/FrameLoader.cpp:1164
&gt; +    m_client-&gt;dispatchDidNavigateWithinPage();

Moving this here seems wrong to me.  This notification is meant to be
generated after the within-page navigation completes.  I&apos;m concerned
that checkCompleted and checkLoadCompleted change our state in ways
that should be observable from dispatchDidNavigateWithinPage.  For
example, it looks like checkCompleted may generate a readystatechange
event on the document.

It still seems to me that the right solution is to not clear m_previousItem.
Given your change to setCurrentItem, does the forward navigation issue go
away by any chance?  Can you try to unravel what is going on there?

I can point to places in HistoryController that assume m_previousItem will
be valid.  See HistoryController::createItemTree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309495</commentid>
    <comment_count>32</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-15 16:00:35 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 73802 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73802&amp;action=review
&gt; 
&gt; &gt; WebCore/loader/FrameLoader.cpp:1164
&gt; &gt; +    m_client-&gt;dispatchDidNavigateWithinPage();
&gt; 
&gt; Moving this here seems wrong to me.  This notification is meant to be
&gt; generated after the within-page navigation completes.  I&apos;m concerned
&gt; that checkCompleted and checkLoadCompleted change our state in ways
&gt; that should be observable from dispatchDidNavigateWithinPage.  For
&gt; example, it looks like checkCompleted may generate a readystatechange
&gt; event on the document.
&gt; 
&gt; It still seems to me that the right solution is to not clear m_previousItem.
&gt; Given your change to setCurrentItem, does the forward navigation issue go
&gt; away by any chance?  Can you try to unravel what is going on there?
&gt; 
&gt; I can point to places in HistoryController that assume m_previousItem will
&gt; be valid.  See HistoryController::createItemTree.

Yes, with my change to setCurrentItem, it still works in most cases if we revert the FrameLoader change and don&apos;t clear m_previousItem in updateForFrameLoadCompleted.  There&apos;s a few layout tests that crash or fail now (e.g., due to the ASSERT in recursiveGoToItem), but I&apos;ll take a closer look at the assumptions to see if I can fix them.

For reference, I&apos;m seeing fast/history/history-back-within-subframe-hash.html crash and fast/history/saves-state-after-fragment-nav.html fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309497</commentid>
    <comment_count>33</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-15 16:13:14 -0800</bug_when>
    <thetext>&gt; Yes, with my change to setCurrentItem, it still works in most cases if we revert the FrameLoader change and don&apos;t clear m_previousItem in updateForFrameLoadCompleted.  There&apos;s a few layout tests that crash or fail now (e.g., due to the ASSERT in recursiveGoToItem), but I&apos;ll take a closer look at the assumptions to see if I can fix them.

Cool!


&gt; For reference, I&apos;m seeing fast/history/history-back-within-subframe-hash.html crash and fast/history/saves-state-after-fragment-nav.html fail.

OK.

My thinking here is that if we keep pulling on this thread that we&apos;ll find that things can be simpler, which would be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310101</commentid>
    <comment_count>34</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-16 19:48:23 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; My thinking here is that if we keep pulling on this thread that we&apos;ll find that things can be simpler, which would be good.

The main difficulty is the way that saveDocumentState saves the state of different items (previous or current) at different points in time.  That function assumes that &quot;m_previousItem == 0&quot; implies that the load has completed, in which case it should use current rather than previous.

I&apos;ve teased apart the state of whether the load has completed from the value of previousItem, by adding a m_frameLoadCompleted field.  This has the advantage of matching the previous WebCore behavior, while keeping a valid item in m_previousItem so that Chromium&apos;s UpdateSessionHistory call works.

It might be possible to simplify things further, but I&apos;d need help understanding more of the assumptions around frame loading.  Since Chromium is currently broken on fragment back/forward navigations, it might be nice to get a simple fix like this in place before taking time to refactor further.

Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310102</commentid>
    <comment_count>35</comment_count>
      <attachid>74079</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-16 19:48:51 -0800</bug_when>
    <thetext>Created attachment 74079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310104</commentid>
    <comment_count>36</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-11-16 20:03:47 -0800</bug_when>
    <thetext>Attachment 74079 did not build on qt:
Build output: http://queues.webkit.org/results/6227003</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310114</commentid>
    <comment_count>37</comment_count>
      <attachid>74082</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-16 21:28:13 -0800</bug_when>
    <thetext>Created attachment 74082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310120</commentid>
    <comment_count>38</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-11-16 21:50:34 -0800</bug_when>
    <thetext>Attachment 74079 did not build on win:
Build output: http://queues.webkit.org/results/6221005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310148</commentid>
    <comment_count>39</comment_count>
      <attachid>74082</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-17 00:07:18 -0800</bug_when>
    <thetext>Comment on attachment 74082
Patch

R=me

I like the explicit member variable.  This seems like an improvement over inferring
&quot;frame load complete&quot; from m_previousItem being null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310893</commentid>
    <comment_count>40</comment_count>
      <attachid>74082</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-18 09:35:33 -0800</bug_when>
    <thetext>Comment on attachment 74082
Patch

Clearing flags on attachment: 74082

Committed r72299: &lt;http://trac.webkit.org/changeset/72299&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310894</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-18 09:35:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311092</commentid>
    <comment_count>42</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-11-18 14:07:18 -0800</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/changeset/72334

Broke chromium ui test SessionHistoryTest.FrameBackForward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311726</commentid>
    <comment_count>43</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-19 15:27:32 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; Rolled out in http://trac.webkit.org/changeset/72334
&gt; 
&gt; Broke chromium ui test SessionHistoryTest.FrameBackForward.

Good news-- that test caught a real issue with the patch, and it uncovered a previously existing bug that we can now fix.  (We weren&apos;t saving form state for subframes when you navigate back and forward.)

Turns out there was one other place in HistoryController where we were changing m_currentItem but not m_previousItem (in recursiveGoToItem).  Before my patch, that caused us to skip the content state update in that case, which meant we didn&apos;t save form state if the form was in a subframe and you navigated back/forward.

After my earlier patch landed, we were updating the wrong history item, which was caught by Chrome&apos;s UI test.  I&apos;ve now fixed recursiveGoToItem so that it updates m_previousItem, and I&apos;ve added a layout test for it in the latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311727</commentid>
    <comment_count>44</comment_count>
      <attachid>74433</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-19 15:28:08 -0800</bug_when>
    <thetext>Created attachment 74433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311898</commentid>
    <comment_count>45</comment_count>
      <attachid>74433</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-20 00:45:30 -0800</bug_when>
    <thetext>Comment on attachment 74433
Patch

Rejecting patch 74433 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sl&apos;, &apos;build-and-test&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--test&apos;, &apos;--non-interactive&apos;]&quot; exit_code: 2
Last 500 characters of output:
...............
fast/frames ...................................................................................................................
fast/frames/flattening ...........
fast/gradients ...........
fast/harness ......
fast/history ...................
fast/history/saves-state-after-frame-nav.html -&gt; failed

Exiting early after 1 failures. 8610 tests run.
439.55s total testing time

8609 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
4 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/6246062</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311980</commentid>
    <comment_count>46</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-20 13:53:00 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; (From update of attachment 74433 [details])
&gt; Rejecting patch 74433 from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sl&apos;, &apos;build-and-test&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--test&apos;, &apos;--non-interactive&apos;]&quot; exit_code: 2
&gt; Last 500 characters of output:
&gt; ...............
&gt; fast/frames ...................................................................................................................
&gt; fast/frames/flattening ...........
&gt; fast/gradients ...........
&gt; fast/harness ......
&gt; fast/history ...................
&gt; fast/history/saves-state-after-frame-nav.html -&gt; failed
&gt; 
&gt; Exiting early after 1 failures. 8610 tests run.
&gt; 439.55s total testing time
&gt; 
&gt; 8609 test cases (99%) succeeded
&gt; 1 test case (&lt;1%) had incorrect layout
&gt; 4 test cases (&lt;1%) had stderr output
&gt; 
&gt; Full output: http://queues.webkit.org/results/6246062

Turns out this just needed another newline at the end of the expected.txt file.  The Chromium try servers didn&apos;t catch that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311981</commentid>
    <comment_count>47</comment_count>
      <attachid>74487</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-20 13:56:59 -0800</bug_when>
    <thetext>Created attachment 74487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312524</commentid>
    <comment_count>48</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-22 14:28:10 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 74487:

fast/dom/prototype-inheritance.html
compositing/iframes/overlapped-nested-iframes.html

Please file bugs against the tests.  These tests were authored by eric@webkit.org, hamaji@chromium.org, and simon.fraser@apple.com.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312544</commentid>
    <comment_count>49</comment_count>
      <attachid>74487</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-22 15:01:38 -0800</bug_when>
    <thetext>Comment on attachment 74487
Patch

Clearing flags on attachment: 74487

Committed r72566: &lt;http://trac.webkit.org/changeset/72566&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312545</commentid>
    <comment_count>50</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-22 15:01:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72605</attachid>
            <date>2010-11-01 17:18:52 -0700</date>
            <delta_ts>2010-11-04 17:48:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48809-20101101171851.patch</filename>
            <type>text/plain</type>
            <size>6448</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDcxMDgx
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMTEt
MDEgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaHJvbWl1bSBXZWJLaXQgQVBJIG5lZWRz
IFdlYkZyYW1lOjpsYXN0Q29tbWl0dGVkSGlzdG9yeUl0ZW0oKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg4MDkKKworICAgICAgICAqIC4uLy4uL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaDoKKyAgICAgICAgKiAuLi8uLi9XZWJLaXQv
Y2hyb21pdW0vc3JjL0JhY2tGb3J3YXJkTGlzdENsaWVudEltcGwuY3BwOgorICAgICAgICAqIC4u
Ly4uL1dlYktpdC9jaHJvbWl1bS9zcmMvQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbC5oOgorICAg
ICAgICAqIC4uLy4uL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAg
ICAgKiAuLi8uLi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oOgorICAgICAgICAq
IC4uLy4uL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAqIC4u
Ly4uL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0xMC0yOSAgQ3Nh
YmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gUm9iZW4gYW5kIERhdmlkIEtpbHplci4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lLmgJKHJldmlzaW9uIDcxMDYwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFt
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNiArMzEyLDEwIEBAIHB1YmxpYzoKICAgICAvLyBi
ZWZvcmUgdXNpbmcuCiAgICAgdmlydHVhbCBXZWJIaXN0b3J5SXRlbSBjdXJyZW50SGlzdG9yeUl0
ZW0oKSBjb25zdCA9IDA7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBsYXN0IGNvbW1pdHRlZCBoaXN0
b3J5IGl0ZW0uICBDaGVjayBXZWJIaXN0b3J5SXRlbTo6aXNOdWxsKCkKKyAgICAvLyBiZWZvcmUg
dXNpbmcuCisgICAgdmlydHVhbCBXZWJIaXN0b3J5SXRlbSBsYXN0Q29tbWl0dGVkSGlzdG9yeUl0
ZW0oKSBjb25zdCA9IDA7CisKICAgICAvLyBWaWV3LXNvdXJjZSByZW5kZXJpbmcgbW9kZS4gIFNl
dCB0aGlzIGJlZm9yZSBsb2FkaW5nIGFuIFVSTCB0byBjYXVzZQogICAgIC8vIGl0IHRvIGJlIHJl
bmRlcmVkIGluIHZpZXctc291cmNlIG1vZGUuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZVZpZXdT
b3VyY2VNb2RlKGJvb2wpID0gMDsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQmFja0Zvcndh
cmRMaXN0Q2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9C
YWNrRm9yd2FyZExpc3RDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNzEwNjApCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL0JhY2tGb3J3YXJkTGlzdENsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw2ICs2MiwxNiBAQCBIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1w
bDo6CiAgICAgcmV0dXJuIG1fcHJldmlvdXNJdGVtLmdldCgpOwogfQogCit2b2lkIEJhY2tGb3J3
YXJkTGlzdENsaWVudEltcGw6OmNvbW1pdEN1cnJlbnRIaXN0b3J5SXRlbSgpCit7CisgICAgbV9s
YXN0Q29tbWl0dGVkSXRlbSA9IG1fY3VycmVudEl0ZW07Cit9CisKK0hpc3RvcnlJdGVtKiBCYWNr
Rm9yd2FyZExpc3RDbGllbnRJbXBsOjpsYXN0Q29tbWl0dGVkSGlzdG9yeUl0ZW0oKSBjb25zdAor
eworICAgIHJldHVybiBtX2xhc3RDb21taXR0ZWRJdGVtLmdldCgpOworfQorCiB2b2lkIEJhY2tG
b3J3YXJkTGlzdENsaWVudEltcGw6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gaXRl
bSkKIHsKICAgICBtX3ByZXZpb3VzSXRlbSA9IG1fY3VycmVudEl0ZW07CkBAIC0xMzAsNiArMTQw
LDcgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsOjpjbG9zZSgpCiAgICAgbV9jdXJy
ZW50SXRlbSA9IDA7CiAgICAgbV9wcmV2aW91c0l0ZW0gPSAwOwogICAgIG1fcGVuZGluZ0hpc3Rv
cnlJdGVtID0gMDsKKyAgICBtX2xhc3RDb21taXR0ZWRJdGVtID0gMDsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0JhY2tGb3J3YXJkTGlzdENs
aWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0JhY2tGb3J3YXJk
TGlzdENsaWVudEltcGwuaAkocmV2aXNpb24gNzEwNjApCisrKyBXZWJLaXQvY2hyb21pdW0vc3Jj
L0JhY2tGb3J3YXJkTGlzdENsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEN1cnJlbnRIaXN0b3J5SXRlbShXZWJDb3JlOjpI
aXN0b3J5SXRlbSogaXRlbSk7CiAgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIHByZXZpb3VzSGlz
dG9yeUl0ZW0oKSBjb25zdDsKKyAgICB2b2lkIGNvbW1pdEN1cnJlbnRIaXN0b3J5SXRlbSgpOwor
ICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBsYXN0Q29tbWl0dGVkSGlzdG9yeUl0ZW0oKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RDbGllbnQgbWV0
aG9kczoKQEAgLTYwLDYgKzYyLDExIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6Okhp
c3RvcnlJdGVtPiBtX3ByZXZpb3VzSXRlbTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0
ZW0+IG1fY3VycmVudEl0ZW07CiAKKyAgICAvLyBUaGUgbW9zdCByZWNlbnRseSBjb21taXR0ZWQg
aGlzdG9yeSBpdGVtLiAgVGhpcyBtYXkgZGlmZmVyIGZyb20KKyAgICAvLyBtX3ByZXZpb3VzSXRl
bSBpZiBtdWx0aXBsZSBiYWNrIG9yIGZvcndhcmQgbmF2aWdhdGlvbnMgaGFwcGVuIGJlZm9yZSBv
bmUKKyAgICAvLyBjb21taXRzLgorICAgIFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gbV9s
YXN0Q29tbWl0dGVkSXRlbTsKKwogICAgIC8vIFRoZSBsYXN0IGhpc3RvcnkgaXRlbSB0aGF0IHdh
cyBhY2Nlc3NlZCB2aWEgaXRlbUF0SW5kZXgoKS4gIFdlIGtlZXAgdHJhY2sKICAgICAvLyBvZiB0
aGlzIHVudGlsIGdvVG9JdGVtKCkgaXMgY2FsbGVkLCBzbyB3ZSBjYW4gdHJhY2sgdGhlIG5hdmln
YXRpb24uCiAgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBtX3BlbmRpbmdIaXN0b3J5
SXRlbTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDcx
MDYwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDAxLDYgKzEwMDEsMTEgQEAgV2ViSGlzdG9yeUl0ZW0gV2ViRnJhbWVJbXBsOjpj
dXJyZW50SGlzdAogICAgIHJldHVybiBXZWJIaXN0b3J5SXRlbShtX2ZyYW1lLT5wYWdlKCktPmJh
Y2tGb3J3YXJkTGlzdCgpLT5jdXJyZW50SXRlbSgpKTsKIH0KIAorV2ViSGlzdG9yeUl0ZW0gV2Vi
RnJhbWVJbXBsOjpsYXN0Q29tbWl0dGVkSGlzdG9yeUl0ZW0oKSBjb25zdAoreworICAgIHJldHVy
biBXZWJIaXN0b3J5SXRlbSh2aWV3SW1wbCgpLT5sYXN0Q29tbWl0dGVkSGlzdG9yeUl0ZW0oKSk7
Cit9CisKIHZvaWQgV2ViRnJhbWVJbXBsOjplbmFibGVWaWV3U291cmNlTW9kZShib29sIGVuYWJs
ZSkKIHsKICAgICBpZiAobV9mcmFtZSkKQEAgLTEwMzcsNiArMTA0Miw5IEBAIHZvaWQgV2ViRnJh
bWVJbXBsOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWUKIHZvaWQgV2ViRnJhbWVJbXBsOjpjb21taXRE
b2N1bWVudERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBtX2Zy
YW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgp
OworCisgICAgLy8gTGV0IHRoZSBCYWNrRm9yd2FyZCBoaXN0b3J5IGtub3cgdGhhdCB0aGlzIGl0
ZW0gaGFzIGNvbW1pdHRlZC4KKyAgICB2aWV3SW1wbCgpLT5jb21taXRDdXJyZW50SGlzdG9yeUl0
ZW0oKTsKIH0KIAogdW5zaWduZWQgV2ViRnJhbWVJbXBsOjp1bmxvYWRMaXN0ZW5lckNvdW50KCkg
Y29uc3QKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAkocmV2aXNpb24gNzEwNjAp
CisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjQsNiArMTI0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViRGF0YVNvdXJjZSogZGF0
YVNvdXJjZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViSGlzdG9yeUl0ZW0gcHJldmlvdXNIaXN0
b3J5SXRlbSgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViSGlzdG9yeUl0ZW0gY3VycmVudEhpc3Rv
cnlJdGVtKCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJIaXN0b3J5SXRlbSBsYXN0Q29tbWl0dGVk
SGlzdG9yeUl0ZW0oKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlVmlld1NvdXJjZU1v
ZGUoYm9vbCBlbmFibGUpOwogICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdTb3VyY2VNb2RlRW5hYmxl
ZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRSZWZlcnJlckZvclJlcXVlc3QoV2ViVVJM
UmVxdWVzdCYsIGNvbnN0IFdlYlVSTCYgcmVmZXJyZXIpOwpJbmRleDogV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDcxMDYwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNzUsNiArMjE3NSwxNiBAQCBIaXN0
b3J5SXRlbSogV2ViVmlld0ltcGw6OnByZXZpb3VzSGlzdG9yCiAgICAgcmV0dXJuIG1fYmFja0Zv
cndhcmRMaXN0Q2xpZW50SW1wbC5wcmV2aW91c0hpc3RvcnlJdGVtKCk7CiB9CiAKK3ZvaWQgV2Vi
Vmlld0ltcGw6OmNvbW1pdEN1cnJlbnRIaXN0b3J5SXRlbSgpCit7CisgICAgbV9iYWNrRm9yd2Fy
ZExpc3RDbGllbnRJbXBsLmNvbW1pdEN1cnJlbnRIaXN0b3J5SXRlbSgpOworfQorCitIaXN0b3J5
SXRlbSogV2ViVmlld0ltcGw6Omxhc3RDb21taXR0ZWRIaXN0b3J5SXRlbSgpCit7CisgICAgcmV0
dXJuIG1fYmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbC5sYXN0Q29tbWl0dGVkSGlzdG9yeUl0ZW0o
KTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6b2JzZXJ2ZU5ld05hdmlnYXRpb24oKQogewogICAg
IG1fb2JzZXJ2ZWROZXdOYXZpZ2F0aW9uID0gdHJ1ZTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgJKHJldmlzaW9uIDcxMDYwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDYsNiArMjQ2LDggQEAgcHVibGljOgogICAgIC8v
IEhpc3RvcnkgcmVsYXRlZCBtZXRob2RzOgogICAgIHZvaWQgc2V0Q3VycmVudEhpc3RvcnlJdGVt
KFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7CiAgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIHByZXZp
b3VzSGlzdG9yeUl0ZW0oKTsKKyAgICB2b2lkIGNvbW1pdEN1cnJlbnRIaXN0b3J5SXRlbSgpOwor
ICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBsYXN0Q29tbWl0dGVkSGlzdG9yeUl0ZW0oKTsKICAg
ICB2b2lkIG9ic2VydmVOZXdOYXZpZ2F0aW9uKCk7CiAKICAgICAvLyBFdmVudCByZWxhdGVkIG1l
dGhvZHM6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73018</attachid>
            <date>2010-11-04 17:49:02 -0700</date>
            <delta_ts>2010-11-05 10:21:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48809-20101104174901.patch</filename>
            <type>text/plain</type>
            <size>1831</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDcxMzcw
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEt
MDQgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaHJvbWl1bSdzIFdlYkZyYW1lOjpwcmV2
aW91c0hpc3RvcnlJdGVtKCkgc2hvdWxkIHJldHVybiBsYXN0IGNvbW1pdHRlZCBpdGVtLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg4MDkKKworICAg
ICAgICAqIFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmg6CisgICAgICAgICogV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwOgorCiAyMDEwLTExLTA0ICBHeXV5b3Vu
ZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAkocmV2aXNpb24g
NzEwNjApCisrKyBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03NSw2ICs3NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1cnJlbnRJdGVtVGl0
bGUoY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBjdXJyZW50SXRlbVNob3VsZEJlUmVwbGFjZWQo
KSBjb25zdDsKIAorICAgIEhpc3RvcnlJdGVtKiBwcmV2aW91c0l0ZW0oKSBjb25zdCB7IHJldHVy
biBtX3ByZXZpb3VzSXRlbS5nZXQoKTsgfQorCiAgICAgSGlzdG9yeUl0ZW0qIHByb3Zpc2lvbmFs
SXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxJdGVtLmdldCgpOyB9CiAgICAgdm9p
ZCBzZXRQcm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0qKTsKIApJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gNzEwNjApCisrKyBXZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4Niw3ICs5ODYsNyBAQCBX
ZWJIaXN0b3J5SXRlbSBXZWJGcmFtZUltcGw6OnByZXZpb3VzSGlzCiAgICAgLy8gb25seSBnZXQg
c2F2ZWQgdG8gaGlzdG9yeSB3aGVuIGl0IGJlY29tZXMgdGhlIHByZXZpb3VzIGl0ZW0uICBUaGUg
Y2FsbGVyCiAgICAgLy8gaXMgZXhwZWN0ZWQgdG8gcXVlcnkgdGhlIGhpc3RvcnkgaXRlbSBhZnRl
ciBhIG5hdmlnYXRpb24gb2NjdXJzLCBhZnRlcgogICAgIC8vIHRoZSBkZXNpcmVkIGhpc3Rvcnkg
aXRlbSBoYXMgYmVjb21lIHRoZSBwcmV2aW91cyBlbnRyeS4KLSAgICByZXR1cm4gV2ViSGlzdG9y
eUl0ZW0odmlld0ltcGwoKS0+cHJldmlvdXNIaXN0b3J5SXRlbSgpKTsKKyAgICByZXR1cm4gV2Vi
SGlzdG9yeUl0ZW0obV9mcmFtZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+cHJldmlvdXNJdGVtKCkp
OwogfQogCiBXZWJIaXN0b3J5SXRlbSBXZWJGcmFtZUltcGw6OmN1cnJlbnRIaXN0b3J5SXRlbSgp
IGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73077</attachid>
            <date>2010-11-05 10:21:43 -0700</date>
            <delta_ts>2010-11-11 13:26:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48809-20101105102142.patch</filename>
            <type>text/plain</type>
            <size>2341</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTA2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTAtMTEtMDUgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
ZWVkIHRvIGV4cG9zZSBIaXN0b3J5Q29udHJvbGxlcjo6cHJldmlvdXNJdGVtKCkgZm9yIENocm9t
aXVtIFdlYktpdCBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODgwOQorCisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmg6CisK
IDIwMTAtMTEtMDEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29u
dHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVy
LmgJKHJldmlzaW9uIDcxMDYwKQorKysgV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRD
dXJyZW50SXRlbVRpdGxlKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgY3VycmVudEl0ZW1TaG91
bGRCZVJlcGxhY2VkKCkgY29uc3Q7CiAKKyAgICBIaXN0b3J5SXRlbSogcHJldmlvdXNJdGVtKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmV2aW91c0l0ZW0uZ2V0KCk7IH0KKwogICAgIEhpc3RvcnlJdGVt
KiBwcm92aXNpb25hbEl0ZW0oKSBjb25zdCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsSXRlbS5nZXQo
KTsgfQogICAgIHZvaWQgc2V0UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtKik7CiAKSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkocmV2aXNpb24gNzEwNjApCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMTEtMDUgIENoYXJsaWUgUmVp
cyAgPGNyZWlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZWJGcmFtZTo6cHJldmlvdXNIaXN0b3J5SXRlbSgpIHNob3VsZCBy
ZXR1cm4gbGFzdCBjb21taXR0ZWQgaXRlbS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ4ODA5CisKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNw
cDoKKwogMjAxMC0xMS0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gNzEwNjApCisrKyBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4Niw3ICs5ODYsNyBAQCBXZWJI
aXN0b3J5SXRlbSBXZWJGcmFtZUltcGw6OnByZXZpb3VzSGlzCiAgICAgLy8gb25seSBnZXQgc2F2
ZWQgdG8gaGlzdG9yeSB3aGVuIGl0IGJlY29tZXMgdGhlIHByZXZpb3VzIGl0ZW0uICBUaGUgY2Fs
bGVyCiAgICAgLy8gaXMgZXhwZWN0ZWQgdG8gcXVlcnkgdGhlIGhpc3RvcnkgaXRlbSBhZnRlciBh
IG5hdmlnYXRpb24gb2NjdXJzLCBhZnRlcgogICAgIC8vIHRoZSBkZXNpcmVkIGhpc3RvcnkgaXRl
bSBoYXMgYmVjb21lIHRoZSBwcmV2aW91cyBlbnRyeS4KLSAgICByZXR1cm4gV2ViSGlzdG9yeUl0
ZW0odmlld0ltcGwoKS0+cHJldmlvdXNIaXN0b3J5SXRlbSgpKTsKKyAgICByZXR1cm4gV2ViSGlz
dG9yeUl0ZW0obV9mcmFtZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+cHJldmlvdXNJdGVtKCkpOwog
fQogCiBXZWJIaXN0b3J5SXRlbSBXZWJGcmFtZUltcGw6OmN1cnJlbnRIaXN0b3J5SXRlbSgpIGNv
bnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73647</attachid>
            <date>2010-11-11 13:26:37 -0800</date>
            <delta_ts>2010-11-11 19:06:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48809-20101111132636.patch</filename>
            <type>text/plain</type>
            <size>1477</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTc4MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEtMTAgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29udGVudCBzdGF0ZSBiZWZvcmUgY2xlYXJpbmcgaGlzdG9yeSdzIHByZXZpb3VzSXRl
bSBpbiBmcmFnbWVudCBuYXZpZ2F0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ4ODA5CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudCk6
IENhbGwgZGlzcGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UgZWFybGllci4KKwogMjAxMC0xMS0x
MCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEZyYXNlci4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDcxNzgz
KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTYwLDYgKzExNjAsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkSW5TYW1lRG9jdW1lbnQoY29u
CiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgdmll
dy0+c2Nyb2xsVG9GcmFnbWVudChtX1VSTCk7CiAgICAgCisgICAgLy8gIERpc3BhdGNoIGFuZCBz
YXZlIHN0YXRlIGJlZm9yZSBjbGVhcmluZyBwcmV2aW91c0l0ZW0uCisgICAgbV9jbGllbnQtPmRp
c3BhdGNoRGlkTmF2aWdhdGVXaXRoaW5QYWdlKCk7CisKICAgICBtX2lzQ29tcGxldGUgPSBmYWxz
ZTsKICAgICBjaGVja0NvbXBsZXRlZCgpOwogCkBAIC0xMTcwLDggKzExNzMsNiBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkSW5TYW1lRG9jdW1lbnQoY29uCiAgICAgICAgIGNoZWNrTG9hZENvbXBs
ZXRlKCk7CiAgICAgfQogCi0gICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkTmF2aWdhdGVXaXRoaW5Q
YWdlKCk7Ci0KICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zdGF0ZVBvcHBlZChzdGF0ZU9iamVj
dCA/IHN0YXRlT2JqZWN0IDogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CiAg
ICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCk7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73692</attachid>
            <date>2010-11-11 19:06:23 -0800</date>
            <delta_ts>2010-11-12 18:15:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48809-20101111190622.patch</filename>
            <type>text/plain</type>
            <size>2354</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTc4MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMTAgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29udGVudCBzdGF0ZSBiZWZvcmUgY2xlYXJpbmcgaGlzdG9yeSdzIHByZXZpb3VzSXRl
bSBpbiBmcmFnbWVudAorICAgICAgICBuYXZpZ2F0aW9ucywgYW5kIGVuc3VyZSBoaXN0b3J5J3Mg
cHJldmlvdXNJdGVtIGlzIGNvcnJlY3QgZHVyaW5nIGJhY2sKKyAgICAgICAgYW5kIGZvcndhcmQg
bmF2aWdhdGlvbnMuICBUaGUgcHJldmlvdXNJdGVtIHdpbGwgYmUgY2xlYXJlZCBhcyB1c3VhbC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODA5CisK
KyAgICAgICAgRXhpc3RpbmcgVGVzdHM6IGZhc3QvaGlzdG9yeS9zYW1lLWRvY3VtZW50LWlmcmFt
ZXMtY2hhbmdpbmctcHVzaHN0YXRlLmh0bWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Qv
bG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay5odG1s
CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudCk6IENhbGwgZGlzcGF0Y2hEaWROYXZpZ2F0
ZVdpdGhpblBhZ2UgZWFybGllci4KKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJlbnRJdGVt
KTogVXBkYXRlIG1fcHJldmlvdXNJdGVtIGR1cmluZyBiYWNrL2ZvcndhcmQuCisKIDIwMTAtMTEt
MTAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBGcmFzZXIuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA3MTc4
MykKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE2MCw2ICsxMTYwLDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNv
bgogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCiAgICAgICAgIHZp
ZXctPnNjcm9sbFRvRnJhZ21lbnQobV9VUkwpOwogICAgIAorICAgIC8vICBEaXNwYXRjaCBhbmQg
c2F2ZSBzdGF0ZSBiZWZvcmUgY2xlYXJpbmcgcHJldmlvdXNJdGVtLgorICAgIG1fY2xpZW50LT5k
aXNwYXRjaERpZE5hdmlnYXRlV2l0aGluUGFnZSgpOworCiAgICAgbV9pc0NvbXBsZXRlID0gZmFs
c2U7CiAgICAgY2hlY2tDb21wbGV0ZWQoKTsKIApAQCAtMTE3MCw4ICsxMTczLDYgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbgogICAgICAgICBjaGVja0xvYWRDb21w
bGV0ZSgpOwogICAgIH0KIAotICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE5hdmlnYXRlV2l0aGlu
UGFnZSgpOwotCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c3RhdGVQb3BwZWQoc3RhdGVPYmpl
Y3QgPyBzdGF0ZU9iamVjdCA6IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOwog
ICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSgpOwogICAgIApJbmRl
eDogV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNzE3ODMpCisrKyBX
ZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
NCw2ICs0MjQsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JGcmFtZUxvCiAK
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKiBpdGVt
KQogeworICAgIG1fcHJldmlvdXNJdGVtID0gbV9jdXJyZW50SXRlbTsKICAgICBtX2N1cnJlbnRJ
dGVtID0gaXRlbTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73802</attachid>
            <date>2010-11-12 18:15:05 -0800</date>
            <delta_ts>2010-11-16 19:48:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48809-20101112181503.patch</filename>
            <type>text/plain</type>
            <size>2426</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTc4MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMTEtMTAgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29ycmVjdCBjb250ZW50IHN0YXRlIGR1cmluZyBiYWNrL2ZvcndhcmQgbmF2aWdhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODA5
CisKKyAgICAgICAgVXBkYXRlIGNvbnRlbnQgc3RhdGUgYmVmb3JlIGNsZWFyaW5nIGhpc3Rvcnkn
cyBwcmV2aW91c0l0ZW0gaW4gZnJhZ21lbnQKKyAgICAgICAgbmF2aWdhdGlvbnMsIGFuZCBlbnN1
cmUgaGlzdG9yeSdzIHByZXZpb3VzSXRlbSBpcyBjb3JyZWN0IGR1cmluZyBiYWNrCisgICAgICAg
IGFuZCBmb3J3YXJkIG5hdmlnYXRpb25zLiAgVGhlIHByZXZpb3VzSXRlbSB3aWxsIGJlIGNsZWFy
ZWQgYXMgdXN1YWwuCisKKyAgICAgICAgRXhpc3RpbmcgVGVzdHM6IGZhc3QvaGlzdG9yeS9zYW1l
LWRvY3VtZW50LWlmcmFtZXMtY2hhbmdpbmctcHVzaHN0YXRlLmh0bWwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2
aWdhdGUtYmFjay5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudCk6IENhbGwgZGlz
cGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UgZWFybGllci4KKyAgICAgICAgKiBsb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6
OnNldEN1cnJlbnRJdGVtKTogVXBkYXRlIG1fcHJldmlvdXNJdGVtIGR1cmluZyBiYWNrL2Zvcndh
cmQuCisKIDIwMTAtMTEtMTAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CShyZXZpc2lvbiA3MTc4MykKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE2MCw2ICsxMTYwLDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZElu
U2FtZURvY3VtZW50KGNvbgogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3
KCkpCiAgICAgICAgIHZpZXctPnNjcm9sbFRvRnJhZ21lbnQobV9VUkwpOwogICAgIAorICAgIC8v
ICBEaXNwYXRjaCBhbmQgc2F2ZSBzdGF0ZSBiZWZvcmUgY2xlYXJpbmcgcHJldmlvdXNJdGVtLgor
ICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE5hdmlnYXRlV2l0aGluUGFnZSgpOworCiAgICAgbV9p
c0NvbXBsZXRlID0gZmFsc2U7CiAgICAgY2hlY2tDb21wbGV0ZWQoKTsKIApAQCAtMTE3MCw4ICsx
MTczLDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbgogICAgICAg
ICBjaGVja0xvYWRDb21wbGV0ZSgpOwogICAgIH0KIAotICAgIG1fY2xpZW50LT5kaXNwYXRjaERp
ZE5hdmlnYXRlV2l0aGluUGFnZSgpOwotCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c3RhdGVQ
b3BwZWQoc3RhdGVPYmplY3QgPyBzdGF0ZU9iamVjdCA6IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
bnVsbFZhbHVlKCkpOwogICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFn
ZSgpOwogICAgIApJbmRleDogV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkocmV2aXNp
b24gNzE3ODMpCisrKyBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyNCw2ICs0MjQsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRh
dGVGb3JGcmFtZUxvCiAKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJlbnRJdGVtKEhp
c3RvcnlJdGVtKiBpdGVtKQogeworICAgIG1fcHJldmlvdXNJdGVtID0gbV9jdXJyZW50SXRlbTsK
ICAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74079</attachid>
            <date>2010-11-16 19:48:51 -0800</date>
            <delta_ts>2010-11-16 21:28:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48809-20101116194850.patch</filename>
            <type>text/plain</type>
            <size>5137</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjAwOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMTEtMTYgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29ycmVjdCBjb250ZW50IHN0YXRlIGR1cmluZyBiYWNrL2ZvcndhcmQgbmF2aWdhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODA5
CisKKyAgICAgICAgRW5zdXJlcyB0aGF0IGhpc3RvcnkncyBwcmV2aW91c0l0ZW0gaXMgbm9uLW51
bGwgd2hlbiBjbGllbnRzIHRyeSB0bworICAgICAgICB1cGRhdGUgY29udGVudCBzdGF0ZSAoZS5n
LiwgQ2hyb21pdW0ncyBVcGRhdGVTZXNzaW9uSGlzdG9yeSkuICBXZSBub3cKKyAgICAgICAgdHJh
Y2sgbG9hZCBjb21wbGV0aW9ucyB3aXRoIGEgYm9vbGVhbiBmaWVsZCByYXRoZXIgdGhhbiBieSBj
bGVhcmluZworICAgICAgICBwcmV2aW91c0l0ZW0uCisKKyAgICAgICAgQmVoYXZpb3IgY292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cyBpbiBmYXN0L2hpc3RvcnkgYW5kIGZhc3QvbG9hZGVyLgorCisg
ICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKwogMjAxMC0xMS0xNSAgUGF0
cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBNYXJ0aW4gUm9iaW5zb24uCkluZGV4OiBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiA3MjAwOCkKKysrIFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRk
VmlzaXRlZExpbmsoUGFnZSogCiAKIEhpc3RvcnlDb250cm9sbGVyOjpIaXN0b3J5Q29udHJvbGxl
cihGcmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgICwgbV9mcmFtZUxvYWRD
b21wbGV0ZSh0cnVlKQogewogfQogCkBAIC0xMzgsMTAgKzEzOSwxMCBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpzYXZlRG9jdW1lbnRTdGF0CiAgICAgLy8gdGFyZ2V0IG9mIHRoZSBjdXJyZW50
IG5hdmlnYXRpb24gKGlmIHdlIGV2ZW4gZGVjaWRlIHRvIHNhdmUgd2l0aCB0aGF0IGdyYW51bGFy
aXR5KS4KIAogICAgIC8vIEJlY2F1c2Ugb2YgcHJldmlvdXNJdGVtJ3MgIm1hc2tpbmciIG9mIGN1
cnJlbnRJdGVtIGZvciB0aGlzIHB1cnBvc2UsIGl0J3MgaW1wb3J0YW50Ci0gICAgLy8gdGhhdCBw
cmV2aW91c0l0ZW0gYmUgY2xlYXJlZCBhdCB0aGUgZW5kIG9mIGEgcGFnZSB0cmFuc2l0aW9uLiAg
V2UgbGV2ZXJhZ2UgdGhlCi0gICAgLy8gY2hlY2tMb2FkQ29tcGxldGUgcmVjdXJzaW9uIHRvIGFj
aGlldmUgdGhpcyBnb2FsLgorICAgIC8vIHRoYXQgd2Uga2VlcCB0cmFjayBvZiB0aGUgZW5kIG9m
IGEgcGFnZSB0cmFuc2l0aW9uIHdpdGggbV9mcmFtZUxvYWRDb21wbGV0ZS4gIFdlCisgICAgLy8g
bGV2ZXJhZ2UgdGhlIGNoZWNrTG9hZENvbXBsZXRlIHJlY3Vyc2lvbiB0byBhY2hpZXZlIHRoaXMg
Z29hbC4KIAotICAgIEhpc3RvcnlJdGVtKiBpdGVtID0gbV9wcmV2aW91c0l0ZW0gPyBtX3ByZXZp
b3VzSXRlbS5nZXQoKSA6IG1fY3VycmVudEl0ZW0uZ2V0KCk7CisgICAgSGlzdG9yeUl0ZW0qIGl0
ZW0gPSBtX2ZyYW1lTG9hZENvbXBsZXRlID8gbV9jdXJyZW50SXRlbS5nZXQoKSA6IG1fcHJldmlv
dXNJdGVtLmdldCgpOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yNDUs
NyArMjQ2LDggQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQmFja0ZvcgogI2Vu
ZGlmCiAKICAgICAvLyBNdXN0IGdyYWIgdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIGJlZm9y
ZSBkaXN0dXJiaW5nIGl0Ci0gICAgc2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVt
KG1fcHJldmlvdXNJdGVtLmdldCgpKTsKKyAgICBpZiAoIW1fZnJhbWVMb2FkQ29tcGxldGUpOwor
ICAgICAgICBzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0obV9wcmV2aW91c0l0
ZW0uZ2V0KCkpOwogfQogCiB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWxvYWQo
KQpAQCAtMzkyLDYgKzM5NCw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNv
bW1pdCgKICAgICAgICAgLy8gdGhlIHByb3Zpc2lvbmFsIGl0ZW0gZm9yIHJlc3RvcmluZyBzdGF0
ZS4KICAgICAgICAgLy8gTm90ZSBwcmV2aW91c0l0ZW0gbXVzdCBiZSBzZXQgYmVmb3JlIHdlIGNs
b3NlIHRoZSBVUkwsIHdoaWNoIHdpbGwKICAgICAgICAgLy8gaGFwcGVuIHdoZW4gdGhlIGRhdGEg
c291cmNlIGlzIG1hZGUgbm9uLXByb3Zpc2lvbmFsIGJlbG93CisgICAgICAgIG1fZnJhbWVMb2Fk
Q29tcGxldGUgPSBmYWxzZTsKICAgICAgICAgbV9wcmV2aW91c0l0ZW0gPSBtX2N1cnJlbnRJdGVt
OwogICAgICAgICBBU1NFUlQobV9wcm92aXNpb25hbEl0ZW0pOwogICAgICAgICBtX2N1cnJlbnRJ
dGVtID0gbV9wcm92aXNpb25hbEl0ZW07CkBAIC00MTgsMTIgKzQyMSwxNSBAQCB2b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jCiB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1
cGRhdGVGb3JGcmFtZUxvYWRDb21wbGV0ZWQoKQogewogICAgIC8vIEV2ZW4gaWYgYWxyZWFkeSBj
b21wbGV0ZSwgd2UgbWlnaHQgaGF2ZSBzZXQgYSBwcmV2aW91cyBpdGVtIG9uIGEgZnJhbWUgdGhh
dAotICAgIC8vIGRpZG4ndCBkbyBhbnkgZGF0YSBsb2FkaW5nIG9uIHRoZSBwYXN0IHRyYW5zYWN0
aW9uLiBNYWtlIHN1cmUgdG8gY2xlYXIgdGhlc2Ugb3V0LgotICAgIG1fcHJldmlvdXNJdGVtID0g
MDsKKyAgICAvLyBkaWRuJ3QgZG8gYW55IGRhdGEgbG9hZGluZyBvbiB0aGUgcGFzdCB0cmFuc2Fj
dGlvbi4gTWFrZSBzdXJlIHRvIHRyYWNrIHRoYXQKKyAgICAvLyB0aGUgbG9hZCBpcyBjb21wbGV0
ZSBzbyB0aGF0IHdlIHVzZSB0aGUgY3VycmVudCBpdGVtIGluc3RlYWQuCisgICAgbV9mcmFtZUxv
YWRDb21wbGV0ZSA9IHRydWU7CiB9CiAKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJl
bnRJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogeworICAgIG1fZnJhbWVMb2FkQ29tcGxldGUgPSBm
YWxzZTsKKyAgICBtX3ByZXZpb3VzSXRlbSA9IG1fY3VycmVudEl0ZW07CiAgICAgbV9jdXJyZW50
SXRlbSA9IGl0ZW07CiB9CiAKQEAgLTQ5OCw2ICs1MDQsNyBAQCBQYXNzUmVmUHRyPEhpc3RvcnlJ
dGVtPiBIaXN0b3J5Q29udHJvbGxlCiAgICAgfQogICAgIAogICAgIC8vIFNldCB0aGUgaXRlbSBm
b3Igd2hpY2ggd2Ugd2lsbCBzYXZlIGRvY3VtZW50IHN0YXRlCisgICAgbV9mcmFtZUxvYWRDb21w
bGV0ZSA9IGZhbHNlOwogICAgIG1fcHJldmlvdXNJdGVtID0gbV9jdXJyZW50SXRlbTsKICAgICBt
X2N1cnJlbnRJdGVtID0gaXRlbTsKICAgICAKQEAgLTUwNyw3ICs1MTQsNyBAQCBQYXNzUmVmUHRy
PEhpc3RvcnlJdGVtPiBIaXN0b3J5Q29udHJvbGxlCiBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBI
aXN0b3J5Q29udHJvbGxlcjo6Y3JlYXRlSXRlbVRyZWUoRnJhbWUqIHRhcmdldEZyYW1lLCBib29s
IGNsaXBBdFRhcmdldCkKIHsKICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGJmSXRlbSA9IGNyZWF0
ZUl0ZW0obV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSA/IHRydWUgOiBmYWxzZSk7Ci0gICAgaWYg
KG1fcHJldmlvdXNJdGVtKQorICAgIGlmICghbV9mcmFtZUxvYWRDb21wbGV0ZSkKICAgICAgICAg
c2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKG1fcHJldmlvdXNJdGVtLmdldCgp
KTsKIAogICAgIGlmICghY2xpcEF0VGFyZ2V0IHx8IG1fZnJhbWUgIT0gdGFyZ2V0RnJhbWUpIHsK
QEAgLTU2Myw4ICs1NzAsOCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVHb1Rv
SXRlCiAgICAgICAgICYmIGZyb21JdGVtLT5oYXNTYW1lRnJhbWVzKGl0ZW0pKQogICAgIHsKICAg
ICAgICAgLy8gVGhpcyBjb250ZW50IGlzIGdvb2QsIHNvIGxlYXZlIGl0IGFsb25lIGFuZCBsb29r
IGZvciBjaGlsZHJlbiB0aGF0IG5lZWQgcmVsb2FkaW5nCi0gICAgICAgIC8vIFNhdmUgZm9ybSBz
dGF0ZSAod29ya3MgZnJvbSBjdXJyZW50SXRlbSwgc2luY2UgcHJldkl0ZW0gaXMgbmlsKQotICAg
ICAgICBBU1NFUlQoIW1fcHJldmlvdXNJdGVtKTsKKyAgICAgICAgLy8gU2F2ZSBmb3JtIHN0YXRl
ICh3b3JrcyBmcm9tIGN1cnJlbnRJdGVtLCBzaW5jZSBtX2ZyYW1lTG9hZENvbXBsZXRlIGlzIHRy
dWUpCisgICAgICAgIEFTU0VSVChtX2ZyYW1lTG9hZENvbXBsZXRlKTsKICAgICAgICAgc2F2ZURv
Y3VtZW50U3RhdGUoKTsKICAgICAgICAgc2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9J
dGVtKG1fY3VycmVudEl0ZW0uZ2V0KCkpOwogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9IaXN0b3J5
Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmgJKHJldmlzaW9uIDcyMDA4KQorKysgV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxIaXN0b3J5SXRlbT4gbV9jdXJyZW50SXRlbTsKICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IG1f
cHJldmlvdXNJdGVtOwogICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gbV9wcm92aXNpb25hbEl0ZW07
CisKKyAgICBib29sIG1fZnJhbWVMb2FkQ29tcGxldGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74082</attachid>
            <date>2010-11-16 21:28:13 -0800</date>
            <delta_ts>2010-11-19 15:28:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48809-20101116212812.patch</filename>
            <type>text/plain</type>
            <size>5136</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjAwOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMTEtMTYgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29ycmVjdCBjb250ZW50IHN0YXRlIGR1cmluZyBiYWNrL2ZvcndhcmQgbmF2aWdhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODA5
CisKKyAgICAgICAgRW5zdXJlcyB0aGF0IGhpc3RvcnkncyBwcmV2aW91c0l0ZW0gaXMgbm9uLW51
bGwgd2hlbiBjbGllbnRzIHRyeSB0bworICAgICAgICB1cGRhdGUgY29udGVudCBzdGF0ZSAoZS5n
LiwgQ2hyb21pdW0ncyBVcGRhdGVTZXNzaW9uSGlzdG9yeSkuICBXZSBub3cKKyAgICAgICAgdHJh
Y2sgbG9hZCBjb21wbGV0aW9ucyB3aXRoIGEgYm9vbGVhbiBmaWVsZCByYXRoZXIgdGhhbiBieSBj
bGVhcmluZworICAgICAgICBwcmV2aW91c0l0ZW0uCisKKyAgICAgICAgQmVoYXZpb3IgY292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cyBpbiBmYXN0L2hpc3RvcnkgYW5kIGZhc3QvbG9hZGVyLgorCisg
ICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKwogMjAxMC0xMS0xNSAgUGF0
cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBNYXJ0aW4gUm9iaW5zb24uCkluZGV4OiBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiA3MjAwOCkKKysrIFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRk
VmlzaXRlZExpbmsoUGFnZSogCiAKIEhpc3RvcnlDb250cm9sbGVyOjpIaXN0b3J5Q29udHJvbGxl
cihGcmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgICwgbV9mcmFtZUxvYWRD
b21wbGV0ZSh0cnVlKQogewogfQogCkBAIC0xMzgsMTAgKzEzOSwxMCBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpzYXZlRG9jdW1lbnRTdGF0CiAgICAgLy8gdGFyZ2V0IG9mIHRoZSBjdXJyZW50
IG5hdmlnYXRpb24gKGlmIHdlIGV2ZW4gZGVjaWRlIHRvIHNhdmUgd2l0aCB0aGF0IGdyYW51bGFy
aXR5KS4KIAogICAgIC8vIEJlY2F1c2Ugb2YgcHJldmlvdXNJdGVtJ3MgIm1hc2tpbmciIG9mIGN1
cnJlbnRJdGVtIGZvciB0aGlzIHB1cnBvc2UsIGl0J3MgaW1wb3J0YW50Ci0gICAgLy8gdGhhdCBw
cmV2aW91c0l0ZW0gYmUgY2xlYXJlZCBhdCB0aGUgZW5kIG9mIGEgcGFnZSB0cmFuc2l0aW9uLiAg
V2UgbGV2ZXJhZ2UgdGhlCi0gICAgLy8gY2hlY2tMb2FkQ29tcGxldGUgcmVjdXJzaW9uIHRvIGFj
aGlldmUgdGhpcyBnb2FsLgorICAgIC8vIHRoYXQgd2Uga2VlcCB0cmFjayBvZiB0aGUgZW5kIG9m
IGEgcGFnZSB0cmFuc2l0aW9uIHdpdGggbV9mcmFtZUxvYWRDb21wbGV0ZS4gIFdlCisgICAgLy8g
bGV2ZXJhZ2UgdGhlIGNoZWNrTG9hZENvbXBsZXRlIHJlY3Vyc2lvbiB0byBhY2hpZXZlIHRoaXMg
Z29hbC4KIAotICAgIEhpc3RvcnlJdGVtKiBpdGVtID0gbV9wcmV2aW91c0l0ZW0gPyBtX3ByZXZp
b3VzSXRlbS5nZXQoKSA6IG1fY3VycmVudEl0ZW0uZ2V0KCk7CisgICAgSGlzdG9yeUl0ZW0qIGl0
ZW0gPSBtX2ZyYW1lTG9hZENvbXBsZXRlID8gbV9jdXJyZW50SXRlbS5nZXQoKSA6IG1fcHJldmlv
dXNJdGVtLmdldCgpOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yNDUs
NyArMjQ2LDggQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQmFja0ZvcgogI2Vu
ZGlmCiAKICAgICAvLyBNdXN0IGdyYWIgdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIGJlZm9y
ZSBkaXN0dXJiaW5nIGl0Ci0gICAgc2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVt
KG1fcHJldmlvdXNJdGVtLmdldCgpKTsKKyAgICBpZiAoIW1fZnJhbWVMb2FkQ29tcGxldGUpCisg
ICAgICAgIHNhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbShtX3ByZXZpb3VzSXRl
bS5nZXQoKSk7CiB9CiAKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlbG9hZCgp
CkBAIC0zOTIsNiArMzk0LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29t
bWl0KAogICAgICAgICAvLyB0aGUgcHJvdmlzaW9uYWwgaXRlbSBmb3IgcmVzdG9yaW5nIHN0YXRl
LgogICAgICAgICAvLyBOb3RlIHByZXZpb3VzSXRlbSBtdXN0IGJlIHNldCBiZWZvcmUgd2UgY2xv
c2UgdGhlIFVSTCwgd2hpY2ggd2lsbAogICAgICAgICAvLyBoYXBwZW4gd2hlbiB0aGUgZGF0YSBz
b3VyY2UgaXMgbWFkZSBub24tcHJvdmlzaW9uYWwgYmVsb3cKKyAgICAgICAgbV9mcmFtZUxvYWRD
b21wbGV0ZSA9IGZhbHNlOwogICAgICAgICBtX3ByZXZpb3VzSXRlbSA9IG1fY3VycmVudEl0ZW07
CiAgICAgICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsSXRlbSk7CiAgICAgICAgIG1fY3VycmVudEl0
ZW0gPSBtX3Byb3Zpc2lvbmFsSXRlbTsKQEAgLTQxOCwxMiArNDIxLDE1IEBAIHZvaWQgSGlzdG9y
eUNvbnRyb2xsZXI6OnVwZGF0ZUZvclNhbWVEb2MKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVw
ZGF0ZUZvckZyYW1lTG9hZENvbXBsZXRlZCgpCiB7CiAgICAgLy8gRXZlbiBpZiBhbHJlYWR5IGNv
bXBsZXRlLCB3ZSBtaWdodCBoYXZlIHNldCBhIHByZXZpb3VzIGl0ZW0gb24gYSBmcmFtZSB0aGF0
Ci0gICAgLy8gZGlkbid0IGRvIGFueSBkYXRhIGxvYWRpbmcgb24gdGhlIHBhc3QgdHJhbnNhY3Rp
b24uIE1ha2Ugc3VyZSB0byBjbGVhciB0aGVzZSBvdXQuCi0gICAgbV9wcmV2aW91c0l0ZW0gPSAw
OworICAgIC8vIGRpZG4ndCBkbyBhbnkgZGF0YSBsb2FkaW5nIG9uIHRoZSBwYXN0IHRyYW5zYWN0
aW9uLiBNYWtlIHN1cmUgdG8gdHJhY2sgdGhhdAorICAgIC8vIHRoZSBsb2FkIGlzIGNvbXBsZXRl
IHNvIHRoYXQgd2UgdXNlIHRoZSBjdXJyZW50IGl0ZW0gaW5zdGVhZC4KKyAgICBtX2ZyYW1lTG9h
ZENvbXBsZXRlID0gdHJ1ZTsKIH0KIAogdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0Q3VycmVu
dEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiB7CisgICAgbV9mcmFtZUxvYWRDb21wbGV0ZSA9IGZh
bHNlOworICAgIG1fcHJldmlvdXNJdGVtID0gbV9jdXJyZW50SXRlbTsKICAgICBtX2N1cnJlbnRJ
dGVtID0gaXRlbTsKIH0KIApAQCAtNDk4LDYgKzUwNCw3IEBAIFBhc3NSZWZQdHI8SGlzdG9yeUl0
ZW0+IEhpc3RvcnlDb250cm9sbGUKICAgICB9CiAgICAgCiAgICAgLy8gU2V0IHRoZSBpdGVtIGZv
ciB3aGljaCB3ZSB3aWxsIHNhdmUgZG9jdW1lbnQgc3RhdGUKKyAgICBtX2ZyYW1lTG9hZENvbXBs
ZXRlID0gZmFsc2U7CiAgICAgbV9wcmV2aW91c0l0ZW0gPSBtX2N1cnJlbnRJdGVtOwogICAgIG1f
Y3VycmVudEl0ZW0gPSBpdGVtOwogICAgIApAQCAtNTA3LDcgKzUxNCw3IEBAIFBhc3NSZWZQdHI8
SGlzdG9yeUl0ZW0+IEhpc3RvcnlDb250cm9sbGUKIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IEhp
c3RvcnlDb250cm9sbGVyOjpjcmVhdGVJdGVtVHJlZShGcmFtZSogdGFyZ2V0RnJhbWUsIGJvb2wg
Y2xpcEF0VGFyZ2V0KQogewogICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gYmZJdGVtID0gY3JlYXRl
SXRlbShtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpID8gdHJ1ZSA6IGZhbHNlKTsKLSAgICBpZiAo
bV9wcmV2aW91c0l0ZW0pCisgICAgaWYgKCFtX2ZyYW1lTG9hZENvbXBsZXRlKQogICAgICAgICBz
YXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0obV9wcmV2aW91c0l0ZW0uZ2V0KCkp
OwogCiAgICAgaWYgKCFjbGlwQXRUYXJnZXQgfHwgbV9mcmFtZSAhPSB0YXJnZXRGcmFtZSkgewpA
QCAtNTYzLDggKzU3MCw4IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9J
dGUKICAgICAgICAgJiYgZnJvbUl0ZW0tPmhhc1NhbWVGcmFtZXMoaXRlbSkpCiAgICAgewogICAg
ICAgICAvLyBUaGlzIGNvbnRlbnQgaXMgZ29vZCwgc28gbGVhdmUgaXQgYWxvbmUgYW5kIGxvb2sg
Zm9yIGNoaWxkcmVuIHRoYXQgbmVlZCByZWxvYWRpbmcKLSAgICAgICAgLy8gU2F2ZSBmb3JtIHN0
YXRlICh3b3JrcyBmcm9tIGN1cnJlbnRJdGVtLCBzaW5jZSBwcmV2SXRlbSBpcyBuaWwpCi0gICAg
ICAgIEFTU0VSVCghbV9wcmV2aW91c0l0ZW0pOworICAgICAgICAvLyBTYXZlIGZvcm0gc3RhdGUg
KHdvcmtzIGZyb20gY3VycmVudEl0ZW0sIHNpbmNlIG1fZnJhbWVMb2FkQ29tcGxldGUgaXMgdHJ1
ZSkKKyAgICAgICAgQVNTRVJUKG1fZnJhbWVMb2FkQ29tcGxldGUpOwogICAgICAgICBzYXZlRG9j
dW1lbnRTdGF0ZSgpOwogICAgICAgICBzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0
ZW0obV9jdXJyZW50SXRlbS5nZXQoKSk7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlD
b250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xs
ZXIuaAkocmV2aXNpb24gNzIwMDgpCisrKyBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PEhpc3RvcnlJdGVtPiBtX2N1cnJlbnRJdGVtOwogICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gbV9w
cmV2aW91c0l0ZW07CiAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBtX3Byb3Zpc2lvbmFsSXRlbTsK
KworICAgIGJvb2wgbV9mcmFtZUxvYWRDb21wbGV0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74433</attachid>
            <date>2010-11-19 15:28:08 -0800</date>
            <delta_ts>2010-11-20 13:56:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48809-20101119152807.patch</filename>
            <type>text/plain</type>
            <size>9019</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjM0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMTkgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29ycmVjdCBjb250ZW50IHN0YXRlIGR1cmluZyBiYWNrL2ZvcndhcmQgbmF2aWdhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODA5
CisKKyAgICAgICAgRW5zdXJlcyB0aGF0IGhpc3RvcnkncyBwcmV2aW91c0l0ZW0gaXMgbm9uLW51
bGwgd2hlbiBjbGllbnRzIHRyeSB0bworICAgICAgICB1cGRhdGUgY29udGVudCBzdGF0ZSAoZS5n
LiwgQ2hyb21pdW0ncyBVcGRhdGVTZXNzaW9uSGlzdG9yeSkuICBXZSBub3cKKyAgICAgICAgdHJh
Y2sgbG9hZCBjb21wbGV0aW9ucyB3aXRoIGEgYm9vbGVhbiBmaWVsZCByYXRoZXIgdGhhbiBieSBj
bGVhcmluZworICAgICAgICBwcmV2aW91c0l0ZW0uCisKKyAgICAgICAgVGVzdDogZmFzdC9oaXN0
b3J5L3NhdmVzLXN0YXRlLWFmdGVyLWZyYW1lLW5hdi5odG1sCisKKyAgICAgICAgKiBsb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5oOgorCiAyMDEwLTExLTE4ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IFdlYkNvcmUvbG9hZGVy
L0hpc3RvcnlDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9IaXN0
b3J5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDcyMzQwKQorKysgV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBhZGRWaXNpdGVkTGluayhQYWdlKiAKIAogSGlzdG9yeUNvbnRyb2xsZXI6
Okhpc3RvcnlDb250cm9sbGVyKEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCisg
ICAgLCBtX2ZyYW1lTG9hZENvbXBsZXRlKHRydWUpCiB7CiB9CiAKQEAgLTEzOCwxMCArMTM5LDEw
IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVEb2N1bWVudFN0YXQKICAgICAvLyB0YXJn
ZXQgb2YgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbiAoaWYgd2UgZXZlbiBkZWNpZGUgdG8gc2F2ZSB3
aXRoIHRoYXQgZ3JhbnVsYXJpdHkpLgogCiAgICAgLy8gQmVjYXVzZSBvZiBwcmV2aW91c0l0ZW0n
cyAibWFza2luZyIgb2YgY3VycmVudEl0ZW0gZm9yIHRoaXMgcHVycG9zZSwgaXQncyBpbXBvcnRh
bnQKLSAgICAvLyB0aGF0IHByZXZpb3VzSXRlbSBiZSBjbGVhcmVkIGF0IHRoZSBlbmQgb2YgYSBw
YWdlIHRyYW5zaXRpb24uICBXZSBsZXZlcmFnZSB0aGUKLSAgICAvLyBjaGVja0xvYWRDb21wbGV0
ZSByZWN1cnNpb24gdG8gYWNoaWV2ZSB0aGlzIGdvYWwuCisgICAgLy8gdGhhdCB3ZSBrZWVwIHRy
YWNrIG9mIHRoZSBlbmQgb2YgYSBwYWdlIHRyYW5zaXRpb24gd2l0aCBtX2ZyYW1lTG9hZENvbXBs
ZXRlLiAgV2UKKyAgICAvLyBsZXZlcmFnZSB0aGUgY2hlY2tMb2FkQ29tcGxldGUgcmVjdXJzaW9u
IHRvIGFjaGlldmUgdGhpcyBnb2FsLgogCi0gICAgSGlzdG9yeUl0ZW0qIGl0ZW0gPSBtX3ByZXZp
b3VzSXRlbSA/IG1fcHJldmlvdXNJdGVtLmdldCgpIDogbV9jdXJyZW50SXRlbS5nZXQoKTsKKyAg
ICBIaXN0b3J5SXRlbSogaXRlbSA9IG1fZnJhbWVMb2FkQ29tcGxldGUgPyBtX2N1cnJlbnRJdGVt
LmdldCgpIDogbV9wcmV2aW91c0l0ZW0uZ2V0KCk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTI0NSw3ICsyNDYsOCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRh
dGVGb3JCYWNrRm9yCiAjZW5kaWYKIAogICAgIC8vIE11c3QgZ3JhYiB0aGUgY3VycmVudCBzY3Jv
bGwgcG9zaXRpb24gYmVmb3JlIGRpc3R1cmJpbmcgaXQKLSAgICBzYXZlU2Nyb2xsUG9zaXRpb25B
bmRWaWV3U3RhdGVUb0l0ZW0obV9wcmV2aW91c0l0ZW0uZ2V0KCkpOworICAgIGlmICghbV9mcmFt
ZUxvYWRDb21wbGV0ZSkKKyAgICAgICAgc2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9J
dGVtKG1fcHJldmlvdXNJdGVtLmdldCgpKTsKIH0KIAogdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
dXBkYXRlRm9yUmVsb2FkKCkKQEAgLTM5Miw2ICszOTQsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjp1cGRhdGVGb3JDb21taXQoCiAgICAgICAgIC8vIHRoZSBwcm92aXNpb25hbCBpdGVtIGZv
ciByZXN0b3Jpbmcgc3RhdGUuCiAgICAgICAgIC8vIE5vdGUgcHJldmlvdXNJdGVtIG11c3QgYmUg
c2V0IGJlZm9yZSB3ZSBjbG9zZSB0aGUgVVJMLCB3aGljaCB3aWxsCiAgICAgICAgIC8vIGhhcHBl
biB3aGVuIHRoZSBkYXRhIHNvdXJjZSBpcyBtYWRlIG5vbi1wcm92aXNpb25hbCBiZWxvdworICAg
ICAgICBtX2ZyYW1lTG9hZENvbXBsZXRlID0gZmFsc2U7CiAgICAgICAgIG1fcHJldmlvdXNJdGVt
ID0gbV9jdXJyZW50SXRlbTsKICAgICAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxJdGVtKTsKICAg
ICAgICAgbV9jdXJyZW50SXRlbSA9IG1fcHJvdmlzaW9uYWxJdGVtOwpAQCAtNDE4LDEyICs0MjEs
MTUgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvYwogdm9pZCBIaXN0
b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yRnJhbWVMb2FkQ29tcGxldGVkKCkKIHsKICAgICAvLyBF
dmVuIGlmIGFscmVhZHkgY29tcGxldGUsIHdlIG1pZ2h0IGhhdmUgc2V0IGEgcHJldmlvdXMgaXRl
bSBvbiBhIGZyYW1lIHRoYXQKLSAgICAvLyBkaWRuJ3QgZG8gYW55IGRhdGEgbG9hZGluZyBvbiB0
aGUgcGFzdCB0cmFuc2FjdGlvbi4gTWFrZSBzdXJlIHRvIGNsZWFyIHRoZXNlIG91dC4KLSAgICBt
X3ByZXZpb3VzSXRlbSA9IDA7CisgICAgLy8gZGlkbid0IGRvIGFueSBkYXRhIGxvYWRpbmcgb24g
dGhlIHBhc3QgdHJhbnNhY3Rpb24uIE1ha2Ugc3VyZSB0byB0cmFjayB0aGF0CisgICAgLy8gdGhl
IGxvYWQgaXMgY29tcGxldGUgc28gdGhhdCB3ZSB1c2UgdGhlIGN1cnJlbnQgaXRlbSBpbnN0ZWFk
LgorICAgIG1fZnJhbWVMb2FkQ29tcGxldGUgPSB0cnVlOwogfQogCiB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjpzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSogaXRlbSkKIHsKKyAgICBtX2ZyYW1l
TG9hZENvbXBsZXRlID0gZmFsc2U7CisgICAgbV9wcmV2aW91c0l0ZW0gPSBtX2N1cnJlbnRJdGVt
OwogICAgIG1fY3VycmVudEl0ZW0gPSBpdGVtOwogfQogCkBAIC00OTgsNiArNTA0LDcgQEAgUGFz
c1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZQogICAgIH0KICAgICAKICAgICAv
LyBTZXQgdGhlIGl0ZW0gZm9yIHdoaWNoIHdlIHdpbGwgc2F2ZSBkb2N1bWVudCBzdGF0ZQorICAg
IG1fZnJhbWVMb2FkQ29tcGxldGUgPSBmYWxzZTsKICAgICBtX3ByZXZpb3VzSXRlbSA9IG1fY3Vy
cmVudEl0ZW07CiAgICAgbV9jdXJyZW50SXRlbSA9IGl0ZW07CiAgICAgCkBAIC01MDcsNyArNTE0
LDcgQEAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZQogUGFzc1JlZlB0
cjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW1UcmVlKEZyYW1lKiB0
YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpCiB7CiAgICAgUmVmUHRyPEhpc3RvcnlJdGVt
PiBiZkl0ZW0gPSBjcmVhdGVJdGVtKG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkgPyB0cnVlIDog
ZmFsc2UpOwotICAgIGlmIChtX3ByZXZpb3VzSXRlbSkKKyAgICBpZiAoIW1fZnJhbWVMb2FkQ29t
cGxldGUpCiAgICAgICAgIHNhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbShtX3By
ZXZpb3VzSXRlbS5nZXQoKSk7CiAKICAgICBpZiAoIWNsaXBBdFRhcmdldCB8fCBtX2ZyYW1lICE9
IHRhcmdldEZyYW1lKSB7CkBAIC01NjMsMTQgKzU3MCwxNSBAQCB2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjpyZWN1cnNpdmVHb1RvSXRlCiAgICAgICAgICYmIGZyb21JdGVtLT5oYXNTYW1lRnJhbWVz
KGl0ZW0pKQogICAgIHsKICAgICAgICAgLy8gVGhpcyBjb250ZW50IGlzIGdvb2QsIHNvIGxlYXZl
IGl0IGFsb25lIGFuZCBsb29rIGZvciBjaGlsZHJlbiB0aGF0IG5lZWQgcmVsb2FkaW5nCi0gICAg
ICAgIC8vIFNhdmUgZm9ybSBzdGF0ZSAod29ya3MgZnJvbSBjdXJyZW50SXRlbSwgc2luY2UgcHJl
dkl0ZW0gaXMgbmlsKQotICAgICAgICBBU1NFUlQoIW1fcHJldmlvdXNJdGVtKTsKKyAgICAgICAg
Ly8gU2F2ZSBmb3JtIHN0YXRlICh3b3JrcyBmcm9tIGN1cnJlbnRJdGVtLCBzaW5jZSBtX2ZyYW1l
TG9hZENvbXBsZXRlIGlzIHRydWUpCisgICAgICAgIEFTU0VSVChtX2ZyYW1lTG9hZENvbXBsZXRl
KTsKICAgICAgICAgc2F2ZURvY3VtZW50U3RhdGUoKTsKICAgICAgICAgc2F2ZVNjcm9sbFBvc2l0
aW9uQW5kVmlld1N0YXRlVG9JdGVtKG1fY3VycmVudEl0ZW0uZ2V0KCkpOwogCiAgICAgICAgIGlm
IChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCiAgICAgICAgICAgICB2aWV3LT5z
ZXRXYXNTY3JvbGxlZEJ5VXNlcihmYWxzZSk7CiAKKyAgICAgICAgbV9wcmV2aW91c0l0ZW0gPSBt
X2N1cnJlbnRJdGVtOwogICAgICAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgLy8gUmVzdG9yZSBmb3JtIHN0YXRlICh3b3JrcyBmcm9tIGN1cnJlbnRJ
dGVtKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oCShyZXZpc2lvbiA3MjM0MCkK
KysrIFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTk2LDYgKzk2LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IG1fY3VycmVu
dEl0ZW07CiAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBtX3ByZXZpb3VzSXRlbTsKICAgICBSZWZQ
dHI8SGlzdG9yeUl0ZW0+IG1fcHJvdmlzaW9uYWxJdGVtOworCisgICAgYm9vbCBtX2ZyYW1lTG9h
ZENvbXBsZXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNzIzNDApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNiBAQAorMjAxMC0xMS0xOSAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBjb3JyZWN0IGNvbnRlbnQgc3RhdGUgZHVyaW5nIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg4MDkKKwor
ICAgICAgICBUZXN0IHRoYXQgd2UgdXBkYXRlIGNvbnRlbnQgc3RhdGUgd2hlbiBsZWF2aW5nIGEg
Zm9ybSBpbiBhIHN1YmZyYW1lLgorCisgICAgICAgICogZmFzdC9oaXN0b3J5L3NhdmVzLXN0YXRl
LWFmdGVyLWZyYW1lLW5hdi5odG1sOgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9zYXZlcy1zdGF0
ZS1hZnRlci1mcmFtZS1uYXYtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9y
ZXNvdXJjZXMvc3ViZnJhbWUtd2l0aC1mb3JtLmh0bWw6CisKIDIwMTAtMTEtMTggIEppYW4gTGkg
IDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmlu
LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NhdmVzLXN0YXRlLWFmdGVyLWZyYW1l
LW5hdi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5
L3NhdmVzLXN0YXRlLWFmdGVyLWZyYW1lLW5hdi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhbWUtbmF2LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitOYXZpZ2F0ZXMgYSBzdWJm
cmFtZSBhbmQgZWRpdHMgYSBmaWVsZCwgdGhlbiBnb2VzIGJhY2sgYW5kIGZvcndhcmQgdG8gdGVz
dCBpZiB0aGUgZmllbGQgc3RhdGUgaXMgcmVzdG9yZWQuCitQQVNTCitMaW5rIApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NhdmVzLXN0YXRlLWFmdGVyLWZyYW1lLW5hdi5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zYXZlcy1zdGF0ZS1hZnRlci1m
cmFtZS1uYXYuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9z
YXZlcy1zdGF0ZS1hZnRlci1mcmFtZS1uYXYuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NiBAQAorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorTmF2aWdhdGVzIGEgc3ViZnJh
bWUgYW5kIGVkaXRzIGEgZmllbGQsIHRoZW4gZ29lcyBiYWNrIGFuZCBmb3J3YXJkCit0byB0ZXN0
IGlmIHRoZSBmaWVsZCBzdGF0ZSBpcyByZXN0b3JlZC4KKzxwcmUgaWQ9InJlc3VsdCI+RkFJTDwv
cHJlPgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBjbGlja0xpbmsoKSB7CisgIC8vIFNpbXVsYXRl
IGEgbW91c2UgY2xpY2sgb24gYSBsaW5rIHRhcmdldGluZyB0aGUgZnJhbWUuCisgIHZhciBldnQg
PSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTsKKyAgZXZ0LmluaXRNb3VzZUV2
ZW50KCJjbGljayIsIHRydWUsIHRydWUsIHdpbmRvdywKKyAgICAgIDAsIDAsIDAsIDAsIDAsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBudWxsKTsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImxpbmsiKS5kaXNwYXRjaEV2ZW50KGV2dCk7Cit9CisKK2Z1bmN0aW9uIGdldFRleHRJ
bnB1dCgpIHsKKyAgdmFyIGZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lIik7
CisgIHJldHVybiBmcmFtZS5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRJbnB1
dCIpOworfQorCit2YXIgc3RhZ2UgPSAiYmVmb3JlIGVkaXQiOwordmFyIHRleHRJbnB1dFZhbHVl
OworCitmdW5jdGlvbiBmcmFtZUxvYWRlZCgpIHsKKyAgaWYgKHN0YWdlID09ICJiZWZvcmUgZWRp
dCIpIHsKKyAgICB2YXIgdGV4dElucHV0ID0gZ2V0VGV4dElucHV0KCk7CisgICAgaWYgKHRleHRJ
bnB1dCAhPSBudWxsKSB7CisgICAgICAvLyBFZGl0IHRoZSBmb3JtIGFuZCBnbyBiYWNrLgorICAg
ICAgdGV4dElucHV0LnZhbHVlID0gInRlc3QiOworICAgICAgc3RhZ2UgPSAiYWZ0ZXIgZWRpdCI7
CisgICAgICBoaXN0b3J5LmJhY2soKTsKKyAgICB9CisgIH0gZWxzZSBpZiAoc3RhZ2UgPT0gImFm
dGVyIGVkaXQiKSB7CisgICAgLy8gR28gZm9yd2FyZC4KKyAgICBzdGFnZSA9ICJhZnRlciBmb3J3
YXJkIjsKKyAgICBoaXN0b3J5LmZvcndhcmQoKTsKKyAgfSBlbHNlIGlmIChzdGFnZSA9PSAiYWZ0
ZXIgZm9yd2FyZCIpIHsKKyAgICAvLyBDaGVjayB0aGF0IHRoZSB2YWx1ZSBpcyBzdGlsbCBpbiB0
aGUgZm9ybS4KKyAgICBpZiAoZ2V0VGV4dElucHV0KCkudmFsdWUgPT0gInRlc3QiKQorICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICJQQVNTIjsKKwor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisgIH0KK30KKworb25sb2FkID0gZnVuY3Rp
b24gKCkgeworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgfQorICBjbGlja0xpbmsoKTsKK30KKworPC9zY3JpcHQ+CisKKzxh
IGhyZWY9InJlc291cmNlcy9zdWJmcmFtZS13aXRoLWZvcm0uaHRtbCIgaWQ9ImxpbmsiIHRhcmdl
dD0iZnJhbWUiPkxpbms8L2E+Cis8YnI+Cis8aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSJyZXNvdXJj
ZXMvc3ViZnJhbWUuaHRtbCIgb25sb2FkPSJmcmFtZUxvYWRlZCgpIj48L2lmcmFtZT4KKworPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9z
dWJmcmFtZS13aXRoLWZvcm0uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hp
c3RvcnkvcmVzb3VyY2VzL3N1YmZyYW1lLXdpdGgtZm9ybS5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9zdWJmcmFtZS13aXRoLWZvcm0uaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACis8aHRtbD4KKzxib2R5PgorRnJhbWUgd2l0
aCBmb3JtLgorPGlucHV0IGlkPSJ0ZXh0SW5wdXQiIHR5cGU9InRleHQiPjwvaW5wdXQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74487</attachid>
            <date>2010-11-20 13:56:59 -0800</date>
            <delta_ts>2010-11-22 15:01:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48809-20101120135657.patch</filename>
            <type>text/plain</type>
            <size>9021</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjM0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMTkgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29ycmVjdCBjb250ZW50IHN0YXRlIGR1cmluZyBiYWNrL2ZvcndhcmQgbmF2aWdhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODA5
CisKKyAgICAgICAgRW5zdXJlcyB0aGF0IGhpc3RvcnkncyBwcmV2aW91c0l0ZW0gaXMgbm9uLW51
bGwgd2hlbiBjbGllbnRzIHRyeSB0bworICAgICAgICB1cGRhdGUgY29udGVudCBzdGF0ZSAoZS5n
LiwgQ2hyb21pdW0ncyBVcGRhdGVTZXNzaW9uSGlzdG9yeSkuICBXZSBub3cKKyAgICAgICAgdHJh
Y2sgbG9hZCBjb21wbGV0aW9ucyB3aXRoIGEgYm9vbGVhbiBmaWVsZCByYXRoZXIgdGhhbiBieSBj
bGVhcmluZworICAgICAgICBwcmV2aW91c0l0ZW0uCisKKyAgICAgICAgVGVzdDogZmFzdC9oaXN0
b3J5L3NhdmVzLXN0YXRlLWFmdGVyLWZyYW1lLW5hdi5odG1sCisKKyAgICAgICAgKiBsb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5oOgorCiAyMDEwLTExLTE4ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IFdlYkNvcmUvbG9hZGVy
L0hpc3RvcnlDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9IaXN0
b3J5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDcyMzQwKQorKysgV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBhZGRWaXNpdGVkTGluayhQYWdlKiAKIAogSGlzdG9yeUNvbnRyb2xsZXI6
Okhpc3RvcnlDb250cm9sbGVyKEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCisg
ICAgLCBtX2ZyYW1lTG9hZENvbXBsZXRlKHRydWUpCiB7CiB9CiAKQEAgLTEzOCwxMCArMTM5LDEw
IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVEb2N1bWVudFN0YXQKICAgICAvLyB0YXJn
ZXQgb2YgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbiAoaWYgd2UgZXZlbiBkZWNpZGUgdG8gc2F2ZSB3
aXRoIHRoYXQgZ3JhbnVsYXJpdHkpLgogCiAgICAgLy8gQmVjYXVzZSBvZiBwcmV2aW91c0l0ZW0n
cyAibWFza2luZyIgb2YgY3VycmVudEl0ZW0gZm9yIHRoaXMgcHVycG9zZSwgaXQncyBpbXBvcnRh
bnQKLSAgICAvLyB0aGF0IHByZXZpb3VzSXRlbSBiZSBjbGVhcmVkIGF0IHRoZSBlbmQgb2YgYSBw
YWdlIHRyYW5zaXRpb24uICBXZSBsZXZlcmFnZSB0aGUKLSAgICAvLyBjaGVja0xvYWRDb21wbGV0
ZSByZWN1cnNpb24gdG8gYWNoaWV2ZSB0aGlzIGdvYWwuCisgICAgLy8gdGhhdCB3ZSBrZWVwIHRy
YWNrIG9mIHRoZSBlbmQgb2YgYSBwYWdlIHRyYW5zaXRpb24gd2l0aCBtX2ZyYW1lTG9hZENvbXBs
ZXRlLiAgV2UKKyAgICAvLyBsZXZlcmFnZSB0aGUgY2hlY2tMb2FkQ29tcGxldGUgcmVjdXJzaW9u
IHRvIGFjaGlldmUgdGhpcyBnb2FsLgogCi0gICAgSGlzdG9yeUl0ZW0qIGl0ZW0gPSBtX3ByZXZp
b3VzSXRlbSA/IG1fcHJldmlvdXNJdGVtLmdldCgpIDogbV9jdXJyZW50SXRlbS5nZXQoKTsKKyAg
ICBIaXN0b3J5SXRlbSogaXRlbSA9IG1fZnJhbWVMb2FkQ29tcGxldGUgPyBtX2N1cnJlbnRJdGVt
LmdldCgpIDogbV9wcmV2aW91c0l0ZW0uZ2V0KCk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTI0NSw3ICsyNDYsOCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRh
dGVGb3JCYWNrRm9yCiAjZW5kaWYKIAogICAgIC8vIE11c3QgZ3JhYiB0aGUgY3VycmVudCBzY3Jv
bGwgcG9zaXRpb24gYmVmb3JlIGRpc3R1cmJpbmcgaXQKLSAgICBzYXZlU2Nyb2xsUG9zaXRpb25B
bmRWaWV3U3RhdGVUb0l0ZW0obV9wcmV2aW91c0l0ZW0uZ2V0KCkpOworICAgIGlmICghbV9mcmFt
ZUxvYWRDb21wbGV0ZSkKKyAgICAgICAgc2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9J
dGVtKG1fcHJldmlvdXNJdGVtLmdldCgpKTsKIH0KIAogdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
dXBkYXRlRm9yUmVsb2FkKCkKQEAgLTM5Miw2ICszOTQsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjp1cGRhdGVGb3JDb21taXQoCiAgICAgICAgIC8vIHRoZSBwcm92aXNpb25hbCBpdGVtIGZv
ciByZXN0b3Jpbmcgc3RhdGUuCiAgICAgICAgIC8vIE5vdGUgcHJldmlvdXNJdGVtIG11c3QgYmUg
c2V0IGJlZm9yZSB3ZSBjbG9zZSB0aGUgVVJMLCB3aGljaCB3aWxsCiAgICAgICAgIC8vIGhhcHBl
biB3aGVuIHRoZSBkYXRhIHNvdXJjZSBpcyBtYWRlIG5vbi1wcm92aXNpb25hbCBiZWxvdworICAg
ICAgICBtX2ZyYW1lTG9hZENvbXBsZXRlID0gZmFsc2U7CiAgICAgICAgIG1fcHJldmlvdXNJdGVt
ID0gbV9jdXJyZW50SXRlbTsKICAgICAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxJdGVtKTsKICAg
ICAgICAgbV9jdXJyZW50SXRlbSA9IG1fcHJvdmlzaW9uYWxJdGVtOwpAQCAtNDE4LDEyICs0MjEs
MTUgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvYwogdm9pZCBIaXN0
b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yRnJhbWVMb2FkQ29tcGxldGVkKCkKIHsKICAgICAvLyBF
dmVuIGlmIGFscmVhZHkgY29tcGxldGUsIHdlIG1pZ2h0IGhhdmUgc2V0IGEgcHJldmlvdXMgaXRl
bSBvbiBhIGZyYW1lIHRoYXQKLSAgICAvLyBkaWRuJ3QgZG8gYW55IGRhdGEgbG9hZGluZyBvbiB0
aGUgcGFzdCB0cmFuc2FjdGlvbi4gTWFrZSBzdXJlIHRvIGNsZWFyIHRoZXNlIG91dC4KLSAgICBt
X3ByZXZpb3VzSXRlbSA9IDA7CisgICAgLy8gZGlkbid0IGRvIGFueSBkYXRhIGxvYWRpbmcgb24g
dGhlIHBhc3QgdHJhbnNhY3Rpb24uIE1ha2Ugc3VyZSB0byB0cmFjayB0aGF0CisgICAgLy8gdGhl
IGxvYWQgaXMgY29tcGxldGUgc28gdGhhdCB3ZSB1c2UgdGhlIGN1cnJlbnQgaXRlbSBpbnN0ZWFk
LgorICAgIG1fZnJhbWVMb2FkQ29tcGxldGUgPSB0cnVlOwogfQogCiB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjpzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSogaXRlbSkKIHsKKyAgICBtX2ZyYW1l
TG9hZENvbXBsZXRlID0gZmFsc2U7CisgICAgbV9wcmV2aW91c0l0ZW0gPSBtX2N1cnJlbnRJdGVt
OwogICAgIG1fY3VycmVudEl0ZW0gPSBpdGVtOwogfQogCkBAIC00OTgsNiArNTA0LDcgQEAgUGFz
c1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZQogICAgIH0KICAgICAKICAgICAv
LyBTZXQgdGhlIGl0ZW0gZm9yIHdoaWNoIHdlIHdpbGwgc2F2ZSBkb2N1bWVudCBzdGF0ZQorICAg
IG1fZnJhbWVMb2FkQ29tcGxldGUgPSBmYWxzZTsKICAgICBtX3ByZXZpb3VzSXRlbSA9IG1fY3Vy
cmVudEl0ZW07CiAgICAgbV9jdXJyZW50SXRlbSA9IGl0ZW07CiAgICAgCkBAIC01MDcsNyArNTE0
LDcgQEAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZQogUGFzc1JlZlB0
cjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW1UcmVlKEZyYW1lKiB0
YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpCiB7CiAgICAgUmVmUHRyPEhpc3RvcnlJdGVt
PiBiZkl0ZW0gPSBjcmVhdGVJdGVtKG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkgPyB0cnVlIDog
ZmFsc2UpOwotICAgIGlmIChtX3ByZXZpb3VzSXRlbSkKKyAgICBpZiAoIW1fZnJhbWVMb2FkQ29t
cGxldGUpCiAgICAgICAgIHNhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbShtX3By
ZXZpb3VzSXRlbS5nZXQoKSk7CiAKICAgICBpZiAoIWNsaXBBdFRhcmdldCB8fCBtX2ZyYW1lICE9
IHRhcmdldEZyYW1lKSB7CkBAIC01NjMsMTQgKzU3MCwxNSBAQCB2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjpyZWN1cnNpdmVHb1RvSXRlCiAgICAgICAgICYmIGZyb21JdGVtLT5oYXNTYW1lRnJhbWVz
KGl0ZW0pKQogICAgIHsKICAgICAgICAgLy8gVGhpcyBjb250ZW50IGlzIGdvb2QsIHNvIGxlYXZl
IGl0IGFsb25lIGFuZCBsb29rIGZvciBjaGlsZHJlbiB0aGF0IG5lZWQgcmVsb2FkaW5nCi0gICAg
ICAgIC8vIFNhdmUgZm9ybSBzdGF0ZSAod29ya3MgZnJvbSBjdXJyZW50SXRlbSwgc2luY2UgcHJl
dkl0ZW0gaXMgbmlsKQotICAgICAgICBBU1NFUlQoIW1fcHJldmlvdXNJdGVtKTsKKyAgICAgICAg
Ly8gU2F2ZSBmb3JtIHN0YXRlICh3b3JrcyBmcm9tIGN1cnJlbnRJdGVtLCBzaW5jZSBtX2ZyYW1l
TG9hZENvbXBsZXRlIGlzIHRydWUpCisgICAgICAgIEFTU0VSVChtX2ZyYW1lTG9hZENvbXBsZXRl
KTsKICAgICAgICAgc2F2ZURvY3VtZW50U3RhdGUoKTsKICAgICAgICAgc2F2ZVNjcm9sbFBvc2l0
aW9uQW5kVmlld1N0YXRlVG9JdGVtKG1fY3VycmVudEl0ZW0uZ2V0KCkpOwogCiAgICAgICAgIGlm
IChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCiAgICAgICAgICAgICB2aWV3LT5z
ZXRXYXNTY3JvbGxlZEJ5VXNlcihmYWxzZSk7CiAKKyAgICAgICAgbV9wcmV2aW91c0l0ZW0gPSBt
X2N1cnJlbnRJdGVtOwogICAgICAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgLy8gUmVzdG9yZSBmb3JtIHN0YXRlICh3b3JrcyBmcm9tIGN1cnJlbnRJ
dGVtKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oCShyZXZpc2lvbiA3MjM0MCkK
KysrIFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTk2LDYgKzk2LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IG1fY3VycmVu
dEl0ZW07CiAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBtX3ByZXZpb3VzSXRlbTsKICAgICBSZWZQ
dHI8SGlzdG9yeUl0ZW0+IG1fcHJvdmlzaW9uYWxJdGVtOworCisgICAgYm9vbCBtX2ZyYW1lTG9h
ZENvbXBsZXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNzIzNDApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNiBAQAorMjAxMC0xMS0xOSAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBjb3JyZWN0IGNvbnRlbnQgc3RhdGUgZHVyaW5nIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg4MDkKKwor
ICAgICAgICBUZXN0IHRoYXQgd2UgdXBkYXRlIGNvbnRlbnQgc3RhdGUgd2hlbiBsZWF2aW5nIGEg
Zm9ybSBpbiBhIHN1YmZyYW1lLgorCisgICAgICAgICogZmFzdC9oaXN0b3J5L3NhdmVzLXN0YXRl
LWFmdGVyLWZyYW1lLW5hdi5odG1sOgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9zYXZlcy1zdGF0
ZS1hZnRlci1mcmFtZS1uYXYtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9y
ZXNvdXJjZXMvc3ViZnJhbWUtd2l0aC1mb3JtLmh0bWw6CisKIDIwMTAtMTEtMTggIEppYW4gTGkg
IDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmlu
LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NhdmVzLXN0YXRlLWFmdGVyLWZyYW1l
LW5hdi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5
L3NhdmVzLXN0YXRlLWFmdGVyLWZyYW1lLW5hdi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhbWUtbmF2LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitOYXZpZ2F0ZXMgYSBzdWJm
cmFtZSBhbmQgZWRpdHMgYSBmaWVsZCwgdGhlbiBnb2VzIGJhY2sgYW5kIGZvcndhcmQgdG8gdGVz
dCBpZiB0aGUgZmllbGQgc3RhdGUgaXMgcmVzdG9yZWQuCitQQVNTCitMaW5rIAorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhbWUtbmF2Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NhdmVzLXN0YXRlLWFmdGVy
LWZyYW1lLW5hdi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5
L3NhdmVzLXN0YXRlLWFmdGVyLWZyYW1lLW5hdi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY2IEBACis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+CitOYXZpZ2F0ZXMgYSBzdWJm
cmFtZSBhbmQgZWRpdHMgYSBmaWVsZCwgdGhlbiBnb2VzIGJhY2sgYW5kIGZvcndhcmQKK3RvIHRl
c3QgaWYgdGhlIGZpZWxkIHN0YXRlIGlzIHJlc3RvcmVkLgorPHByZSBpZD0icmVzdWx0Ij5GQUlM
PC9wcmU+CisKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGNsaWNrTGluaygpIHsKKyAgLy8gU2ltdWxh
dGUgYSBtb3VzZSBjbGljayBvbiBhIGxpbmsgdGFyZ2V0aW5nIHRoZSBmcmFtZS4KKyAgdmFyIGV2
dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpOworICBldnQuaW5pdE1vdXNl
RXZlbnQoImNsaWNrIiwgdHJ1ZSwgdHJ1ZSwgd2luZG93LAorICAgICAgMCwgMCwgMCwgMCwgMCwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIG51bGwpOworICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibGluayIpLmRpc3BhdGNoRXZlbnQoZXZ0KTsKK30KKworZnVuY3Rpb24gZ2V0VGV4
dElucHV0KCkgeworICB2YXIgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWUi
KTsKKyAgcmV0dXJuIGZyYW1lLmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dElu
cHV0Iik7Cit9CisKK3ZhciBzdGFnZSA9ICJiZWZvcmUgZWRpdCI7Cit2YXIgdGV4dElucHV0VmFs
dWU7CisKK2Z1bmN0aW9uIGZyYW1lTG9hZGVkKCkgeworICBpZiAoc3RhZ2UgPT0gImJlZm9yZSBl
ZGl0IikgeworICAgIHZhciB0ZXh0SW5wdXQgPSBnZXRUZXh0SW5wdXQoKTsKKyAgICBpZiAodGV4
dElucHV0ICE9IG51bGwpIHsKKyAgICAgIC8vIEVkaXQgdGhlIGZvcm0gYW5kIGdvIGJhY2suCisg
ICAgICB0ZXh0SW5wdXQudmFsdWUgPSAidGVzdCI7CisgICAgICBzdGFnZSA9ICJhZnRlciBlZGl0
IjsKKyAgICAgIGhpc3RvcnkuYmFjaygpOworICAgIH0KKyAgfSBlbHNlIGlmIChzdGFnZSA9PSAi
YWZ0ZXIgZWRpdCIpIHsKKyAgICAvLyBHbyBmb3J3YXJkLgorICAgIHN0YWdlID0gImFmdGVyIGZv
cndhcmQiOworICAgIGhpc3RvcnkuZm9yd2FyZCgpOworICB9IGVsc2UgaWYgKHN0YWdlID09ICJh
ZnRlciBmb3J3YXJkIikgeworICAgIC8vIENoZWNrIHRoYXQgdGhlIHZhbHVlIGlzIHN0aWxsIGlu
IHRoZSBmb3JtLgorICAgIGlmIChnZXRUZXh0SW5wdXQoKS52YWx1ZSA9PSAidGVzdCIpCisgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIlBBU1MiOwor
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKyAgfQorfQorCitvbmxvYWQgPSBmdW5j
dGlvbiAoKSB7CisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICB9CisgIGNsaWNrTGluaygpOworfQorCis8L3NjcmlwdD4KKwor
PGEgaHJlZj0icmVzb3VyY2VzL3N1YmZyYW1lLXdpdGgtZm9ybS5odG1sIiBpZD0ibGluayIgdGFy
Z2V0PSJmcmFtZSI+TGluazwvYT4KKzxicj4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9InJlc291
cmNlcy9zdWJmcmFtZS5odG1sIiBvbmxvYWQ9ImZyYW1lTG9hZGVkKCkiPjwvaWZyYW1lPgorCis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2Vz
L3N1YmZyYW1lLXdpdGgtZm9ybS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aGlzdG9yeS9yZXNvdXJjZXMvc3ViZnJhbWUtd2l0aC1mb3JtLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL3N1YmZyYW1lLXdpdGgtZm9ybS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKKzxodG1sPgorPGJvZHk+CitGcmFtZSB3
aXRoIGZvcm0uCis8aW5wdXQgaWQ9InRleHRJbnB1dCIgdHlwZT0idGV4dCI+PC9pbnB1dD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>