<?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>47320</bug_id>
          
          <creation_ts>2010-10-06 19:20:07 -0700</creation_ts>
          <short_desc>[Performance] Only call sendContentResizeNotification when the scrollbar actually did change</short_desc>
          <delta_ts>2011-07-06 12:05:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hbono</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>joone</cc>
    
    <cc>kenneth</cc>
    
    <cc>pkasting</cc>
    
    <cc>psolanki</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>290764</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2010-10-06 19:20:07 -0700</bug_when>
    <thetext>In ScrollView::updateScrollbars, it called visibleContentsResized when scrollbars are shown or hidden.

but, frameFlattening option can block creation of scrollbar.
so we don&apos;t need to call visibleContentsResized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290776</commentid>
    <comment_count>1</comment_count>
      <attachid>70030</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2010-10-06 19:50:19 -0700</bug_when>
    <thetext>Created attachment 70030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291432</commentid>
    <comment_count>2</comment_count>
      <attachid>70030</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-10-07 21:10:45 -0700</bug_when>
    <thetext>Comment on attachment 70030
Patch

Seems reasonable to me. Did you see any perf gain?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292267</commentid>
    <comment_count>3</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2010-10-10 01:38:18 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 70030 [details])
&gt; Seems reasonable to me. Did you see any perf gain?

Sorry about late answer.

yes, I saw sluggish scrolling at our mobile browser using frameflattening option.
Those sites contains frameset or iframe.
And this patch scrolling this kinds of sites make very faster than before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292281</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-10 05:35:35 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 70030 [details] [details])
&gt; &gt; Seems reasonable to me. Did you see any perf gain?
&gt; 
&gt; Sorry about late answer.
&gt; 
&gt; yes, I saw sluggish scrolling at our mobile browser using frameflattening option.
&gt; Those sites contains frameset or iframe.
&gt; And this patch scrolling this kinds of sites make very faster than before.

Strange, only relayout could affect scrolling, so are these sites for some reason relayouting the whole time? Maybe it is better to look into this? or optimize the frame flattening layout code.

Also, frame flattening is needed for a nice touch interaction model. That is way more important than the performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292400</commentid>
    <comment_count>5</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2010-10-10 19:12:10 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; (From update of attachment 70030 [details] [details] [details])
&gt; &gt; &gt; Seems reasonable to me. Did you see any perf gain?
&gt; &gt; 
&gt; &gt; Sorry about late answer.
&gt; &gt; 
&gt; &gt; yes, I saw sluggish scrolling at our mobile browser using frameflattening option.
&gt; &gt; Those sites contains frameset or iframe.
&gt; &gt; And this patch scrolling this kinds of sites make very faster than before.
&gt; 
&gt; Strange, only relayout could affect scrolling, so are these sites for some reason relayouting the whole time? Maybe it is better to look into this? or optimize the frame flattening layout code.
&gt; 
you&apos;re right. this patch want not to relayout if scrollbar wasn&apos;t changed.
If not, ScrollView calls contentsResized and visiblieContentsResized although scrollbar wasn&apos;t created because of frameflattening.

And my test site is http://postech.edu/

&gt; Also, frame flattening is needed for a nice touch interaction model. That is way more important than the performance.

Yes, so we want to use frame flattening. But I found that it&apos;s too sluggish case and I believe that this patch remove it without any side effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292403</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-10 19:47:31 -0700</bug_when>
    <thetext>Ah, I understood now, so with this patch scrolling performance with frame flattening is improved.

Hyatt, can you have a look at this one, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292416</commentid>
    <comment_count>7</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-10-10 21:57:02 -0700</bug_when>
    <thetext>Generally, a user-feel improvement is valid, but there are many more accurate way to measure a performance improvement, e.g. frames per second ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292470</commentid>
    <comment_count>8</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2010-10-11 06:44:10 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Generally, a user-feel improvement is valid, but there are many more accurate way to measure a performance improvement, e.g. frames per second ...

Hi, I tested using our mobile browser implemented by EFL.
I don&apos;t have idea which browser(not EFL) can test this.
I use ECORE_EVAS_FPS_DEBUG to get below data without any changes.

without our patch.
FRAME: 454, FPS: 28.0, RTIME  65%
FRAME: 469, FPS: 28.7, RTIME  64%
FRAME: 484, FPS: 28.3, RTIME  65%
FRAME: 499, FPS: 28.9, RTIME  65%
FRAME: 514, FPS: 28.4, RTIME  64%
FRAME: 529, FPS: 28.4, RTIME  64%
FRAME: 544, FPS: 28.4, RTIME  66%
FRAME: 559, FPS: 28.1, RTIME  66%
FRAME: 574, FPS: 29.3, RTIME  65%
FRAME: 589, FPS: 28.5, RTIME  67%
FRAME: 604, FPS: 28.4, RTIME  65%
FRAME: 619, FPS: 28.6, RTIME  65%
FRAME: 634, FPS: 28.8, RTIME  64%
FRAME: 649, FPS: 29.0, RTIME  68%
FRAME: 664, FPS: 28.7, RTIME  65%
FRAME: 679, FPS: 28.6, RTIME  64%
FRAME: 694, FPS: 28.6, RTIME  66%
FRAME: 708, FPS: 27.8, RTIME  64%
FRAME: 723, FPS: 29.0, RTIME  68%
FRAME: 738, FPS: 28.4, RTIME  66%
FRAME: 753, FPS: 28.7, RTIME  65%
FRAME: 768, FPS: 28.6, RTIME  66%
FRAME: 784, FPS: 31.3, RTIME  69%
FRAME: 800, FPS: 31.4, RTIME  69%
FRAME: 817, FPS: 33.4, RTIME  63%

with our patch
FRAME: 374, FPS: 23.8, RTIME  33%
FRAME: 404, FPS: 59.4, RTIME  77%
FRAME: 435, FPS: 62.0, RTIME  77%
FRAME: 465, FPS: 58.8, RTIME  76%
FRAME: 495, FPS: 59.4, RTIME  76%
FRAME: 526, FPS: 60.3, RTIME  75%
FRAME: 556, FPS: 59.9, RTIME  75%
FRAME: 588, FPS: 63.1, RTIME  79%
FRAME: 619, FPS: 62.0, RTIME  77%
FRAME: 651, FPS: 62.9, RTIME  78%
FRAME: 682, FPS: 61.5, RTIME  77%
FRAME: 714, FPS: 61.9, RTIME  76%
FRAME: 745, FPS: 61.8, RTIME  78%
FRAME: 777, FPS: 63.2, RTIME  77%
FRAME: 809, FPS: 63.1, RTIME  77%
FRAME: 840, FPS: 61.0, RTIME  79%
FRAME: 877, FPS: 73.8, RTIME  83%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320963</commentid>
    <comment_count>9</comment_count>
      <attachid>70030</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-13 00:40:36 -0800</bug_when>
    <thetext>Comment on attachment 70030
Patch

Should the caller just check avoidScrollbarCreation?  Or maybe sendContentResizedNotification should just be set to the return value of the setHasHorizontalScrollbar call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321105</commentid>
    <comment_count>10</comment_count>
      <attachid>70030</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-13 07:27:43 -0800</bug_when>
    <thetext>Comment on attachment 70030
Patch

Ryan, I know your intentions and it generally makes sense. But I think doing as Eric suggested it clearer.

It is strange that a setter returns something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321513</commentid>
    <comment_count>11</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2010-12-13 15:55:22 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 70030 [details])
&gt; Should the caller just check avoidScrollbarCreation?  Or maybe sendContentResizedNotification should just be set to the return value of the setHasHorizontalScrollbar call.

Thank you for your comment.
I realized my mistake.

(In reply to comment #10)
&gt; (From update of attachment 70030 [details])
&gt; Ryan, I know your intentions and it generally makes sense. But I think doing as Eric suggested it clearer.
&gt; 
&gt; It is strange that a setter returns something.

I&apos;ll make newer like Eric mentioned.
Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321541</commentid>
    <comment_count>12</comment_count>
      <attachid>76465</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2010-12-13 16:37:05 -0800</bug_when>
    <thetext>Created attachment 76465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321551</commentid>
    <comment_count>13</comment_count>
      <attachid>76465</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-13 16:55:13 -0800</bug_when>
    <thetext>Comment on attachment 76465
Patch

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

&gt; WebCore/ChangeLog:15
&gt; +

You have to verify that you do not break the frame flattening tests with this change. Are you running the layout tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321557</commentid>
    <comment_count>14</comment_count>
      <attachid>76465</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-13 16:59:38 -0800</bug_when>
    <thetext>Comment on attachment 76465
Patch

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

Also as kenneth said, Qt Gtk and Mac DRT test the flame flattening feature. Please, make sure there is no regression.

&gt; WebCore/platform/ScrollView.cpp:102
&gt;  void ScrollView::setHasVerticalScrollbar(bool hasBar)
&gt;  {
&gt; -    if (hasBar &amp;&amp; avoidScrollbarCreation())
&gt; +    if (hasBar)

Well, if we go for it, I would also suggest to add an assert here:

ASSERT(avoidScrollbarCreation())

That way we ensure that no one is calling setHasVerticalScrollbar() without previously calling avoidScrollbarCreation()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321558</commentid>
    <comment_count>15</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-13 17:00:13 -0800</bug_when>
    <thetext>&gt; 
&gt; ASSERT(avoidScrollbarCreation())

Of course I meant ASSERT(!avoidScrollbarCreation())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321634</commentid>
    <comment_count>16</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2010-12-13 20:08:15 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 76465 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76465&amp;action=review
&gt; 
&gt; &gt; WebCore/ChangeLog:15
&gt; &gt; +
&gt; 
&gt; You have to verify that you do not break the frame flattening tests with this change. Are you running the layout tests?

Sorry.
With layout tests, I got failed. I think that I should investigate more.

(In reply to comment #14)
&gt; (From update of attachment 76465 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76465&amp;action=review
&gt; 
&gt; Also as kenneth said, Qt Gtk and Mac DRT test the flame flattening feature. Please, make sure there is no regression.
&gt; 
&gt; &gt; WebCore/platform/ScrollView.cpp:102
&gt; &gt;  void ScrollView::setHasVerticalScrollbar(bool hasBar)
&gt; &gt;  {
&gt; &gt; -    if (hasBar &amp;&amp; avoidScrollbarCreation())
&gt; &gt; +    if (hasBar)
&gt; 
&gt; Well, if we go for it, I would also suggest to add an assert here:
&gt; 
&gt; ASSERT(avoidScrollbarCreation())
&gt; 
&gt; That way we ensure that no one is calling setHasVerticalScrollbar() without previously calling avoidScrollbarCreation()

Sorry, This patch was wrong.
I&apos;ll prepare new patch after those testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331497</commentid>
    <comment_count>17</comment_count>
      <attachid>78365</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-01-09 19:08:54 -0800</bug_when>
    <thetext>Created attachment 78365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383448</commentid>
    <comment_count>18</comment_count>
      <attachid>78365</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2011-04-11 13:41:20 -0700</bug_when>
    <thetext>Comment on attachment 78365
Patch

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

&gt; Source/WebCore/platform/ScrollView.cpp:89
&gt; +    ASSERT(!(hasBar &amp;&amp; avoidScrollbarCreation()));

I don&apos;t understand why the &quot;hasBar &amp;&amp; avoidScrollbarCreation()&quot; test no longer returns.  You assert if this case is true -- do you want to execute the code under this condition?

&gt; Source/WebCore/platform/ScrollView.cpp:105
&gt; +    ASSERT(!(hasBar &amp;&amp; avoidScrollbarCreation()));

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385728</commentid>
    <comment_count>19</comment_count>
      <attachid>89577</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-04-14 06:47:04 -0700</bug_when>
    <thetext>Created attachment 89577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385732</commentid>
    <comment_count>20</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-04-14 06:54:10 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 78365 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78365&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ScrollView.cpp:89
&gt; &gt; +    ASSERT(!(hasBar &amp;&amp; avoidScrollbarCreation()));
&gt; 
&gt; I don&apos;t understand why the &quot;hasBar &amp;&amp; avoidScrollbarCreation()&quot; test no longer returns.  You assert if this case is true -- do you want to execute the code under this condition?
&gt; 
&gt; &gt; Source/WebCore/platform/ScrollView.cpp:105
&gt; &gt; +    ASSERT(!(hasBar &amp;&amp; avoidScrollbarCreation()));
&gt; 
&gt; Ditto

Sorry about late answer.

This patch is old and I can&apos;t assure any side effects.
So I simplified my patch to explain what I really want.
It will be fine, but check hasBar &amp;&amp; avoidScrollbarCreation two times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408382</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-23 15:17:06 -0700</bug_when>
    <thetext>James should see this go by.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432594</commentid>
    <comment_count>22</comment_count>
      <attachid>89577</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-05 20:42:13 -0700</bug_when>
    <thetext>Comment on attachment 89577
Patch

Seems reasonable to me.  But I know very little about the scrollbar code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432596</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-05 20:42:44 -0700</bug_when>
    <thetext>James, Hyatt, Peter?  Someone who&apos;s worked in scrollbars?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432634</commentid>
    <comment_count>24</comment_count>
      <attachid>89577</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2011-07-05 23:15:32 -0700</bug_when>
    <thetext>Comment on attachment 89577
Patch

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

In theory this seems OK, but I&apos;m not a WebKit reviewer.

&gt; Source/WebCore/platform/ScrollView.cpp:500
&gt;          if (hasHorizontalScrollbar != newHasHorizontalScrollbar) {

Nit: I think it might be clearer to write this block as follows:

if (hasHorizontalScrollbar != newHasHorizontalScrollbar &amp;&amp; (hasHorizontalScrollbar || !avoidScrollbarCreation())) {
    ... original block contents here...
}

...and the same for the case below.  This makes it a bit clearer that we don&apos;t want to do anything in the case where we&apos;re supposed to avoid scrollbar creation.

I would also like to see setHasXXXScrollbar() converted from conditional-checking (hasBar &amp;&amp; avoidScrollbarCreation()) into asserting that that combination is false.  Either this is safe because these are the only places which call these functions, or else your patch should probably be expanded to the other callers thereof.  In either case, making this expectation part of those functions&apos; contracts seems clearer and safer long-term to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432693</commentid>
    <comment_count>25</comment_count>
      <attachid>99804</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-07-06 02:56:05 -0700</bug_when>
    <thetext>Created attachment 99804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432694</commentid>
    <comment_count>26</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-07-06 02:57:30 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 89577 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89577&amp;action=review
&gt; 
&gt; In theory this seems OK, but I&apos;m not a WebKit reviewer.
&gt; 
&gt; &gt; Source/WebCore/platform/ScrollView.cpp:500
&gt; &gt;          if (hasHorizontalScrollbar != newHasHorizontalScrollbar) {
&gt; 
&gt; Nit: I think it might be clearer to write this block as follows:
&gt; 
&gt; if (hasHorizontalScrollbar != newHasHorizontalScrollbar &amp;&amp; (hasHorizontalScrollbar || !avoidScrollbarCreation())) {
&gt;     ... original block contents here...
&gt; }
&gt; 
&gt; ...and the same for the case below.  This makes it a bit clearer that we don&apos;t want to do anything in the case where we&apos;re supposed to avoid scrollbar creation.
&gt; 
&gt; I would also like to see setHasXXXScrollbar() converted from conditional-checking (hasBar &amp;&amp; avoidScrollbarCreation()) into asserting that that combination is false.  Either this is safe because these are the only places which call these functions, or else your patch should probably be expanded to the other callers thereof.  In either case, making this expectation part of those functions&apos; contracts seems clearer and safer long-term to me.

Thank you for your comment.
I updated like you mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432873</commentid>
    <comment_count>27</comment_count>
      <attachid>99804</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2011-07-06 10:58:03 -0700</bug_when>
    <thetext>Comment on attachment 99804
Patch

Informal r+ from me; you&apos;ll need a real reviewer to do the formal r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432878</commentid>
    <comment_count>28</comment_count>
      <attachid>99804</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-06 11:05:01 -0700</bug_when>
    <thetext>Comment on attachment 99804
Patch

Thanks Peter and Ryuan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432922</commentid>
    <comment_count>29</comment_count>
      <attachid>99804</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 12:05:01 -0700</bug_when>
    <thetext>Comment on attachment 99804
Patch

Clearing flags on attachment: 99804

Committed r90478: &lt;http://trac.webkit.org/changeset/90478&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432923</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 12:05:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70030</attachid>
            <date>2010-10-06 19:50:19 -0700</date>
            <delta_ts>2010-12-13 16:36:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47320-20101007115030.patch</filename>
            <type>text/plain</type>
            <size>4104</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTI2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMTAtMDYgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IExpbWl0IHNlbmRDb250ZW50UmVzaXplTm90aWZpY2F0aW9uIHdoZW4gc2Nyb2xsYmFyIHJlYWxs
eSBjaGFuZ2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDczMjAKKworICAgICAgICBDaGVjayBpZiBzY3JvbGxiYXIgd2FzIHJlYWxseSBjaGFuZ2Vk
IGZyb20gaGlkZGVuIHRvIHNob3duLgorICAgICAgICBXaGVuIGZyYW1lRmxhdHRlbmluZyB3YXMg
ZW5hYmxlZCwgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhciBhbmQKKyAgICAgICAgc2V0SGFzVmVy
dGljYWxTY3JvbGxiYXIgd2lsbCByZXR1cm4gZmFsc2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGFzIHRoaXMgaXMgdmVyeSBoYXJkIHRvIHdyaXRlIHRlc3RzIGZvci4gVGhlIGJ1ZyBvbmx5Cisg
ICAgICAgIG9jY3VyZWQgd2hlbiBzY3JvbGxpbmcgdGhlIHNpdGVzIHdoaWNoIGNvbnRhaW4gZnJh
bWUgaW4gYnJvd3NlciB3aXRoCisgICAgICAgIGZyYW1lRmxhdHRlbmluZy4gVGhpcyBzaG91bGQg
bm90IGNoYW5nZSBmdW5jdGlvbmFsaXR5IGluIG90aGVyIGNhc2UuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldEhh
c0hvcml6b250YWxTY3JvbGxiYXIpOiBjaGFuZ2UgcmV0dXJuIHR5cGUuCisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcik6IGNoYW5nZSByZXR1cm4g
dHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKwogMjAxMC0xMC0wNiAgU2FuamVldiBS
YWRoYWtyaXNobmFuICA8c2FuamVldnJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkocmV2aXNpb24g
NjkyNjgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04MSwxMCArODEsMTAgQEAgdm9pZCBTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZChXaWRnZXQq
IGNoaQogICAgICAgICBwbGF0Zm9ybVJlbW92ZUNoaWxkKGNoaWxkKTsKIH0KIAotdm9pZCBTY3Jv
bGxWaWV3OjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGJvb2wgaGFzQmFyKQorYm9vbCBTY3Jv
bGxWaWV3OjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGJvb2wgaGFzQmFyKQogewogICAgIGlm
IChoYXNCYXIgJiYgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCYXIgJiYgIW1faG9yaXpvbnRhbFNj
cm9sbGJhcikgewogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIgPSBjcmVhdGVTY3JvbGxi
YXIoSG9yaXpvbnRhbFNjcm9sbGJhcik7CkBAIC05NCwxMiArOTQsMTMgQEAgdm9pZCBTY3JvbGxW
aWV3OjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYgogICAgICAgICByZW1vdmVDaGlsZChtX2hvcml6
b250YWxTY3JvbGxiYXIuZ2V0KCkpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIgPSAw
OwogICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpzZXRIYXNW
ZXJ0aWNhbFNjcm9sbGJhcihib29sIGhhc0JhcikKK2Jvb2wgU2Nyb2xsVmlldzo6c2V0SGFzVmVy
dGljYWxTY3JvbGxiYXIoYm9vbCBoYXNCYXIpCiB7CiAgICAgaWYgKGhhc0JhciAmJiBhdm9pZFNj
cm9sbGJhckNyZWF0aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKGhhc0JhciAmJiAhbV92ZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAgICBt
X3ZlcnRpY2FsU2Nyb2xsYmFyID0gY3JlYXRlU2Nyb2xsYmFyKFZlcnRpY2FsU2Nyb2xsYmFyKTsK
QEAgLTEwOSw2ICsxMTAsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldEhhc1ZlcnRpY2FsU2Nyb2xs
YmFyCiAgICAgICAgIHJlbW92ZUNoaWxkKG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCkpOwogICAg
ICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyID0gMDsKICAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKICNpZiAhUExBVEZPUk0oR1RLKQpAQCAtNDIwLDE1ICs0MjIsMTEgQEAgdm9pZCBTY3JvbGxW
aWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAogICAgICAgICBpZiAoIW5ld0hhc1ZlcnRpY2Fs
U2Nyb2xsYmFyICYmIGhhc1ZlcnRpY2FsU2Nyb2xsYmFyICYmIGhTY3JvbGwgIT0gU2Nyb2xsYmFy
QWx3YXlzT24pCiAgICAgICAgICAgICBuZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyID0gZmFsc2U7
CiAKLSAgICAgICAgaWYgKGhhc0hvcml6b250YWxTY3JvbGxiYXIgIT0gbmV3SGFzSG9yaXpvbnRh
bFNjcm9sbGJhcikgewotICAgICAgICAgICAgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihuZXdI
YXNIb3Jpem9udGFsU2Nyb2xsYmFyKTsKKyAgICAgICAgaWYgKGhhc0hvcml6b250YWxTY3JvbGxi
YXIgIT0gbmV3SGFzSG9yaXpvbnRhbFNjcm9sbGJhciAmJiBzZXRIYXNIb3Jpem9udGFsU2Nyb2xs
YmFyKG5ld0hhc0hvcml6b250YWxTY3JvbGxiYXIpKQogICAgICAgICAgICAgc2VuZENvbnRlbnRS
ZXNpemVkTm90aWZpY2F0aW9uID0gdHJ1ZTsKLSAgICAgICAgfQogCi0gICAgICAgIGlmIChoYXNW
ZXJ0aWNhbFNjcm9sbGJhciAhPSBuZXdIYXNWZXJ0aWNhbFNjcm9sbGJhcikgewotICAgICAgICAg
ICAgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIobmV3SGFzVmVydGljYWxTY3JvbGxiYXIpOworICAg
ICAgICBpZiAoaGFzVmVydGljYWxTY3JvbGxiYXIgIT0gbmV3SGFzVmVydGljYWxTY3JvbGxiYXIg
JiYgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIobmV3SGFzVmVydGljYWxTY3JvbGxiYXIpKQogICAg
ICAgICAgICAgc2VuZENvbnRlbnRSZXNpemVkTm90aWZpY2F0aW9uID0gdHJ1ZTsKLSAgICAgICAg
fQogCiAgICAgICAgIGlmIChzZW5kQ29udGVudFJlc2l6ZWROb3RpZmljYXRpb24gJiYgbV91cGRh
dGVTY3JvbGxiYXJzUGFzcyA8IGNNYXhVcGRhdGVTY3JvbGxiYXJzUGFzcykgewogICAgICAgICAg
ICAgbV91cGRhdGVTY3JvbGxiYXJzUGFzcysrOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgJKHJl
dmlzaW9uIDY5MjY4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1Nyw4ICsyNTcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHZp
c2libGVDb250ZW50c1Jlc2l6ZWQoKSA9IDA7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJl
IHVzZWQgdG8gY3JlYXRlL2Rlc3Ryb3kgc2Nyb2xsYmFycy4KLSAgICB2b2lkIHNldEhhc0hvcml6
b250YWxTY3JvbGxiYXIoYm9vbCk7Ci0gICAgdm9pZCBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihi
b29sKTsKKyAgICBib29sIHNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoYm9vbCk7CisgICAgYm9v
bCBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihib29sKTsKIAogICAgIEludFJlY3Qgc2Nyb2xsQ29y
bmVyUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76465</attachid>
            <date>2010-12-13 16:37:05 -0800</date>
            <delta_ts>2011-01-09 19:08:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47320-20101214093837.patch</filename>
            <type>text/plain</type>
            <size>3656</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mzk4MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMTItMTMgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtQZXJmb3JtYW5jZV0gT25seSBjYWxsIHNlbmRDb250ZW50UmVzaXplTm90aWZpY2F0aW9uIHdo
ZW4gdGhlIHNjcm9sbGJhciBhY3R1YWxseSBkaWQgY2hhbmdlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzMyMAorCisgICAgICAgIE1vdmUgYXZvaWRT
Y3JvbGxiYXJDcmVhdGlvbigpIGZyb20gc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhciBhbmQKKyAg
ICAgICAgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIgdG8gY2FsbGVyLiBzZW5kQ29udGVudFJlc2l6
ZU5vdGlmaWNhdGlvbiB3aWxsCisgICAgICAgIGJlIGVuYWJsZWQgd2hlbiBzY3JvbGxiYXIgd2Fz
IHJlYWxseSBjaGFuZ2VkIGZyb20gaGlkZGVuIHRvIHNob3duLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyBhcyB0aGlzIGlzIHZlcnkgaGFyZCB0byB3cml0ZSB0ZXN0cyBmb3IuIFRoZSBidWcgb25s
eQorICAgICAgICBvY2N1cmVkIHdoZW4gc2Nyb2xsaW5nIHRoZSBzaXRlcyB3aGljaCBjb250YWlu
IGZyYW1lIGluIGJyb3dzZXIgd2l0aAorICAgICAgICBmcmFtZUZsYXR0ZW5pbmcuIFRoaXMgc2hv
dWxkIG5vdCBjaGFuZ2UgZnVuY3Rpb25hbGl0eSBpbiBvdGhlciBjYXNlLgorCisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojpz
ZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6
OnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6
OnVwZGF0ZVNjcm9sbGJhcnMpOgorCiAyMDEwLTEyLTEzICBKb29uZSBIdXIgIDxqb29uZUBrbGRw
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAkocmV2aXNpb24gNzM5ODEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgU2Nyb2xsVmll
dzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0KiBjaGkKIAogdm9pZCBTY3JvbGxWaWV3OjpzZXRIYXNIb3Jp
em9udGFsU2Nyb2xsYmFyKGJvb2wgaGFzQmFyKQogewotICAgIGlmIChoYXNCYXIgJiYgYXZvaWRT
Y3JvbGxiYXJDcmVhdGlvbigpKQorICAgIGlmIChoYXNCYXIpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChoYXNCYXIgJiYgIW1faG9yaXpvbnRhbFNjcm9sbGJhcikgewpAQCAtOTksNyArOTks
NyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldEhhc0hvcml6b250YWxTY3JvbGxiCiAKIHZvaWQgU2Ny
b2xsVmlldzo6c2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9vbCBoYXNCYXIpCiB7Ci0gICAgaWYg
KGhhc0JhciAmJiBhdm9pZFNjcm9sbGJhckNyZWF0aW9uKCkpCisgICAgaWYgKGhhc0JhcikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc0JhciAmJiAhbV92ZXJ0aWNhbFNjcm9sbGJhcikg
ewpAQCAtNDI3LDkgKzQyNyw5IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhj
b25zdCAKICAgICAgICAgbmV3SGFzVmVydGljYWxTY3JvbGxiYXIgPSAodlNjcm9sbCA9PSBTY3Jv
bGxiYXJBbHdheXNPbik7CiAKICAgICBpZiAobV9zY3JvbGxiYXJzU3VwcHJlc3NlZCB8fCAoaFNj
cm9sbCAhPSBTY3JvbGxiYXJBdXRvICYmIHZTY3JvbGwgIT0gU2Nyb2xsYmFyQXV0bykpIHsKLSAg
ICAgICAgaWYgKGhhc0hvcml6b250YWxTY3JvbGxiYXIgIT0gbmV3SGFzSG9yaXpvbnRhbFNjcm9s
bGJhcikKKyAgICAgICAgaWYgKGhhc0hvcml6b250YWxTY3JvbGxiYXIgIT0gbmV3SGFzSG9yaXpv
bnRhbFNjcm9sbGJhciAmJiAhYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpKQogICAgICAgICAgICAg
c2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihuZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKTsKLSAg
ICAgICAgaWYgKGhhc1ZlcnRpY2FsU2Nyb2xsYmFyICE9IG5ld0hhc1ZlcnRpY2FsU2Nyb2xsYmFy
KQorICAgICAgICBpZiAoaGFzVmVydGljYWxTY3JvbGxiYXIgIT0gbmV3SGFzVmVydGljYWxTY3Jv
bGxiYXIgJiYgIWF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSkKICAgICAgICAgICAgIHNldEhhc1Zl
cnRpY2FsU2Nyb2xsYmFyKG5ld0hhc1ZlcnRpY2FsU2Nyb2xsYmFyKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBib29sIHNlbmRDb250ZW50UmVzaXplZE5vdGlmaWNhdGlvbiA9IGZhbHNlOwpAQCAt
NDU1LDE0ICs0NTUsMTQgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0
IAogICAgICAgICBpZiAoIW5ld0hhc1ZlcnRpY2FsU2Nyb2xsYmFyICYmIGhhc1ZlcnRpY2FsU2Ny
b2xsYmFyICYmIGhTY3JvbGwgIT0gU2Nyb2xsYmFyQWx3YXlzT24pCiAgICAgICAgICAgICBuZXdI
YXNIb3Jpem9udGFsU2Nyb2xsYmFyID0gZmFsc2U7CiAKLSAgICAgICAgaWYgKGhhc0hvcml6b250
YWxTY3JvbGxiYXIgIT0gbmV3SGFzSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgICAgICBpZiAo
aGFzSG9yaXpvbnRhbFNjcm9sbGJhciAhPSBuZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyICYmICFh
dm9pZFNjcm9sbGJhckNyZWF0aW9uKCkpIHsKICAgICAgICAgICAgIGlmIChtX3Njcm9sbE9yaWdp
bi55KCkgJiYgIW5ld0hhc0hvcml6b250YWxTY3JvbGxiYXIpCiAgICAgICAgICAgICAgICAgbV9z
Y3JvbGxPcmlnaW4uc2V0WShtX3Njcm9sbE9yaWdpbi55KCkgLSBtX2hvcml6b250YWxTY3JvbGxi
YXItPmhlaWdodCgpKTsKICAgICAgICAgICAgIHNldEhhc0hvcml6b250YWxTY3JvbGxiYXIobmV3
SGFzSG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgICAgICAgICBzZW5kQ29udGVudFJlc2l6ZWRO
b3RpZmljYXRpb24gPSB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGhhc1ZlcnRpY2Fs
U2Nyb2xsYmFyICE9IG5ld0hhc1ZlcnRpY2FsU2Nyb2xsYmFyKSB7CisgICAgICAgIGlmIChoYXNW
ZXJ0aWNhbFNjcm9sbGJhciAhPSBuZXdIYXNWZXJ0aWNhbFNjcm9sbGJhciAmJiAhYXZvaWRTY3Jv
bGxiYXJDcmVhdGlvbigpKSB7CiAgICAgICAgICAgICBpZiAobV9zY3JvbGxPcmlnaW4ueCgpICYm
ICFuZXdIYXNWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAgICAgICAgICBtX3Njcm9sbE9yaWdp
bi5zZXRYKG1fc2Nyb2xsT3JpZ2luLngoKSAtIG1fdmVydGljYWxTY3JvbGxiYXItPndpZHRoKCkp
OwogICAgICAgICAgICAgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIobmV3SGFzVmVydGljYWxTY3Jv
bGxiYXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78365</attachid>
            <date>2011-01-09 19:08:54 -0800</date>
            <delta_ts>2011-04-14 06:46:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47320-20110110120853.patch</filename>
            <type>text/plain</type>
            <size>4346</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1MzU5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDEtMDkgIFJ5dWFuIENo
b2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtQZXJmb3JtYW5jZV0gT25seSBjYWxsIHNlbmRDb250ZW50
UmVzaXplTm90aWZpY2F0aW9uIHdoZW4gdGhlIHNjcm9sbGJhciBhY3R1YWxseSBkaWQgY2hhbmdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzMyMAor
CisgICAgICAgIE1vdmUgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpIGZyb20gc2V0SGFzSG9yaXpv
bnRhbFNjcm9sbGJhciBhbmQKKyAgICAgICAgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIgdG8gY2Fs
bGVyLiBzZW5kQ29udGVudFJlc2l6ZU5vdGlmaWNhdGlvbiB3aWxsCisgICAgICAgIGJlIGVuYWJs
ZWQgd2hlbiBzY3JvbGxiYXIgd2FzIHJlYWxseSBjaGFuZ2VkIGZyb20gaGlkZGVuIHRvIHNob3du
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcyB0aGlzIGlzIHZlcnkgaGFyZCB0byB3cml0ZSB0
ZXN0cyBmb3IuIFRoZSBidWcgb25seQorICAgICAgICBvY2N1cmVkIHdoZW4gc2Nyb2xsaW5nIHRo
ZSBzaXRlcyB3aGljaCBjb250YWluIGZyYW1lIGluIGJyb3dzZXIgd2l0aAorICAgICAgICBmcmFt
ZUZsYXR0ZW5pbmcuIFRoaXMgc2hvdWxkIG5vdCBjaGFuZ2UgZnVuY3Rpb25hbGl0eSBpbiBvdGhl
ciBjYXNlLgorCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMpOgorCiAyMDExLTAxLTA5ICBT
aGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByNzUzMzcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAkocmV2aXNpb24gNzUzNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsOSArODYsNyBAQCB2b2lkIFNj
cm9sbFZpZXc6OnJlbW92ZUNoaWxkKFdpZGdldCogY2hpCiAKIHZvaWQgU2Nyb2xsVmlldzo6c2V0
SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihib29sIGhhc0JhcikKIHsKLSAgICBpZiAoaGFzQmFyICYm
IGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgQVNTRVJU
KCEoaGFzQmFyICYmIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSkpOwogICAgIGlmIChoYXNCYXIg
JiYgIW1faG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxi
YXIgPSBjcmVhdGVTY3JvbGxiYXIoSG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgICAgIGFkZENo
aWxkKG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKSk7CkBAIC0xMDQsOSArMTAyLDcgQEAgdm9p
ZCBTY3JvbGxWaWV3OjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYgogCiB2b2lkIFNjcm9sbFZpZXc6
OnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wgaGFzQmFyKQogewotICAgIGlmIChoYXNCYXIg
JiYgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpKQotICAgICAgICByZXR1cm47Ci0KKyAgICBBU1NF
UlQoIShoYXNCYXIgJiYgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpKSk7CiAgICAgaWYgKGhhc0Jh
ciAmJiAhbV92ZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFy
ID0gY3JlYXRlU2Nyb2xsYmFyKFZlcnRpY2FsU2Nyb2xsYmFyKTsKICAgICAgICAgYWRkQ2hpbGQo
bV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKSk7CkBAIC00NDAsOSArNDM2LDkgQEAgdm9pZCBTY3Jv
bGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAogICAgICAgICBuZXdIYXNWZXJ0aWNhbFNj
cm9sbGJhciA9ICh2U2Nyb2xsID09IFNjcm9sbGJhckFsd2F5c09uKTsKIAogICAgIGlmIChtX3Nj
cm9sbGJhcnNTdXBwcmVzc2VkIHx8IChoU2Nyb2xsICE9IFNjcm9sbGJhckF1dG8gJiYgdlNjcm9s
bCAhPSBTY3JvbGxiYXJBdXRvKSkgewotICAgICAgICBpZiAoaGFzSG9yaXpvbnRhbFNjcm9sbGJh
ciAhPSBuZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKQorICAgICAgICBpZiAoaGFzSG9yaXpvbnRh
bFNjcm9sbGJhciAhPSBuZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyICYmICEobmV3SGFzSG9yaXpv
bnRhbFNjcm9sbGJhciAmJiBhdm9pZFNjcm9sbGJhckNyZWF0aW9uKCkpKQogICAgICAgICAgICAg
c2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihuZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKTsKLSAg
ICAgICAgaWYgKGhhc1ZlcnRpY2FsU2Nyb2xsYmFyICE9IG5ld0hhc1ZlcnRpY2FsU2Nyb2xsYmFy
KQorICAgICAgICBpZiAoaGFzVmVydGljYWxTY3JvbGxiYXIgIT0gbmV3SGFzVmVydGljYWxTY3Jv
bGxiYXIgJiYgIShuZXdIYXNWZXJ0aWNhbFNjcm9sbGJhciAmJiBhdm9pZFNjcm9sbGJhckNyZWF0
aW9uKCkpKQogICAgICAgICAgICAgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIobmV3SGFzVmVydGlj
YWxTY3JvbGxiYXIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJvb2wgc2VuZENvbnRlbnRSZXNp
emVkTm90aWZpY2F0aW9uID0gZmFsc2U7CkBAIC00NzEsMTUgKzQ2NywxOSBAQCB2b2lkIFNjcm9s
bFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgCiAgICAgICAgIGlmIChoYXNIb3Jpem9udGFs
U2Nyb2xsYmFyICE9IG5ld0hhc0hvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgICAgIGlm
IChtX3Njcm9sbE9yaWdpbi55KCkgJiYgIW5ld0hhc0hvcml6b250YWxTY3JvbGxiYXIpCiAgICAg
ICAgICAgICAgICAgbV9zY3JvbGxPcmlnaW4uc2V0WShtX3Njcm9sbE9yaWdpbi55KCkgLSBtX2hv
cml6b250YWxTY3JvbGxiYXItPmhlaWdodCgpKTsKLSAgICAgICAgICAgIHNldEhhc0hvcml6b250
YWxTY3JvbGxiYXIobmV3SGFzSG9yaXpvbnRhbFNjcm9sbGJhcik7Ci0gICAgICAgICAgICBzZW5k
Q29udGVudFJlc2l6ZWROb3RpZmljYXRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCEobmV3
SGFzSG9yaXpvbnRhbFNjcm9sbGJhciAmJiBhdm9pZFNjcm9sbGJhckNyZWF0aW9uKCkpKSB7Cisg
ICAgICAgICAgICAgICAgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihuZXdIYXNIb3Jpem9udGFs
U2Nyb2xsYmFyKTsKKyAgICAgICAgICAgICAgICBzZW5kQ29udGVudFJlc2l6ZWROb3RpZmljYXRp
b24gPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGhhc1Zl
cnRpY2FsU2Nyb2xsYmFyICE9IG5ld0hhc1ZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgICAg
ICBpZiAobV9zY3JvbGxPcmlnaW4ueCgpICYmICFuZXdIYXNWZXJ0aWNhbFNjcm9sbGJhcikKICAg
ICAgICAgICAgICAgICBtX3Njcm9sbE9yaWdpbi5zZXRYKG1fc2Nyb2xsT3JpZ2luLngoKSAtIG1f
dmVydGljYWxTY3JvbGxiYXItPndpZHRoKCkpOwotICAgICAgICAgICAgc2V0SGFzVmVydGljYWxT
Y3JvbGxiYXIobmV3SGFzVmVydGljYWxTY3JvbGxiYXIpOwotICAgICAgICAgICAgc2VuZENvbnRl
bnRSZXNpemVkTm90aWZpY2F0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICghKG5ld0hhc1Zl
cnRpY2FsU2Nyb2xsYmFyICYmIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSkpIHsKKyAgICAgICAg
ICAgICAgICBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihuZXdIYXNWZXJ0aWNhbFNjcm9sbGJhcik7
CisgICAgICAgICAgICAgICAgc2VuZENvbnRlbnRSZXNpemVkTm90aWZpY2F0aW9uID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChzZW5kQ29udGVudFJlc2l6
ZWROb3RpZmljYXRpb24gJiYgbV91cGRhdGVTY3JvbGxiYXJzUGFzcyA8IGNNYXhVcGRhdGVTY3Jv
bGxiYXJzUGFzcykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89577</attachid>
            <date>2011-04-14 06:47:04 -0700</date>
            <delta_ts>2011-07-06 02:55:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47320-20110414224702.patch</filename>
            <type>text/plain</type>
            <size>2544</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzODQ3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDQtMTQgIFJ5dWFuIENo
b2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtQZXJmb3JtYW5jZV0gT25seSBjYWxsIHNlbmRDb250ZW50
UmVzaXplTm90aWZpY2F0aW9uIHdoZW4gdGhlIHNjcm9sbGJhciBhY3R1YWxseSBkaWQgY2hhbmdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzMyMAor
CisgICAgICAgIENoZWNrIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24gdG8ga2VlcCBzZW5kQ29udGVu
dFJlc2l6ZWROb3RpZmljYXRpb24KKyAgICAgICAgZmFsc2UgaW4gY2FzZSBzY3JvbGxiYXIgd2Fz
IG5vdCByZWFsbHkgY2hhbmdlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgdGhpcyBpcyB2
ZXJ5IGhhcmQgdG8gd3JpdGUgdGVzdHMgZm9yLiBUaGUgYnVnIG9ubHkKKyAgICAgICAgb2NjdXJl
ZCB3aGVuIHNjcm9sbGluZyB0aGUgc2l0ZXMgd2hpY2ggY29udGFpbiBmcmFtZSBpbiBicm93c2Vy
IHdpdGgKKyAgICAgICAgZnJhbWVGbGF0dGVuaW5nLiBUaGlzIHNob3VsZCBub3QgY2hhbmdlIGZ1
bmN0aW9uYWxpdHkgaW4gb3RoZXIgY2FzZS4KKworCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJz
KToKKwogMjAxMS0wNC0xNCAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3Nh
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gODM4NDYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAw
LDE1ICs1MDAsMTkgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0CiAg
ICAgICAgIGlmIChoYXNIb3Jpem9udGFsU2Nyb2xsYmFyICE9IG5ld0hhc0hvcml6b250YWxTY3Jv
bGxiYXIpIHsKICAgICAgICAgICAgIGlmIChtX3Njcm9sbE9yaWdpbi55KCkgJiYgIW5ld0hhc0hv
cml6b250YWxTY3JvbGxiYXIpCiAgICAgICAgICAgICAgICAgbV9zY3JvbGxPcmlnaW4uc2V0WSht
X3Njcm9sbE9yaWdpbi55KCkgLSBtX2hvcml6b250YWxTY3JvbGxiYXItPmhlaWdodCgpKTsKLSAg
ICAgICAgICAgIHNldEhhc0hvcml6b250YWxTY3JvbGxiYXIobmV3SGFzSG9yaXpvbnRhbFNjcm9s
bGJhcik7Ci0gICAgICAgICAgICBzZW5kQ29udGVudFJlc2l6ZWROb3RpZmljYXRpb24gPSB0cnVl
OworICAgICAgICAgICAgaWYgKCFuZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyIHx8ICFhdm9pZFNj
cm9sbGJhckNyZWF0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBzZXRIYXNIb3Jpem9udGFsU2Ny
b2xsYmFyKG5ld0hhc0hvcml6b250YWxTY3JvbGxiYXIpOworICAgICAgICAgICAgICAgIHNlbmRD
b250ZW50UmVzaXplZE5vdGlmaWNhdGlvbiA9IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoaGFzVmVydGljYWxTY3JvbGxiYXIgIT0gbmV3SGFzVmVydGljYWxT
Y3JvbGxiYXIpIHsKICAgICAgICAgICAgIGlmIChtX3Njcm9sbE9yaWdpbi54KCkgJiYgIW5ld0hh
c1ZlcnRpY2FsU2Nyb2xsYmFyKQogICAgICAgICAgICAgICAgIG1fc2Nyb2xsT3JpZ2luLnNldFgo
bV9zY3JvbGxPcmlnaW4ueCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lkdGgoKSk7Ci0gICAg
ICAgICAgICBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihuZXdIYXNWZXJ0aWNhbFNjcm9sbGJhcik7
Ci0gICAgICAgICAgICBzZW5kQ29udGVudFJlc2l6ZWROb3RpZmljYXRpb24gPSB0cnVlOworICAg
ICAgICAgICAgaWYgKCFuZXdIYXNWZXJ0aWNhbFNjcm9sbGJhciB8fCAhYXZvaWRTY3JvbGxiYXJD
cmVhdGlvbigpKSB7CisgICAgICAgICAgICAgICAgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIobmV3
SGFzVmVydGljYWxTY3JvbGxiYXIpOworICAgICAgICAgICAgICAgIHNlbmRDb250ZW50UmVzaXpl
ZE5vdGlmaWNhdGlvbiA9IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoc2VuZENvbnRlbnRSZXNpemVkTm90aWZpY2F0aW9uICYmIG1fdXBkYXRlU2Nyb2xsYmFy
c1Bhc3MgPCBjTWF4VXBkYXRlU2Nyb2xsYmFyc1Bhc3MpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99804</attachid>
            <date>2011-07-06 02:56:05 -0700</date>
            <delta_ts>2011-07-06 12:05:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47320-20110706185559.patch</filename>
            <type>text/plain</type>
            <size>4409</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA0NDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMDc3ZDJlNjdiMGEwMTI1
ZGQwZjUzMzUwMGQ4YjhjNjY2ODVkNWNkLi4yNmQ1YzI2ZmQ3YTgzMjJmMjZmZTI2MzY4NWU3OGQ5
ZDlmMmUyOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDctMDYgIFJ5dWFu
IENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtQZXJmb3JtYW5jZV0g
T25seSBjYWxsIHNlbmRDb250ZW50UmVzaXplTm90aWZpY2F0aW9uIHdoZW4gdGhlIHNjcm9sbGJh
ciBhY3R1YWxseSBkaWQgY2hhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NzMyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1vdmUgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbiBjaGVja2luZyBjb2RlIGZy
b20gc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcgorICAgICAgICBhbmQgc2V0SGFzVmVydGljYWxT
Y3JvbGxiYXIgdG8gdGhlaXIgY2FsbGVyIGluIG9yZGVyIHRvIGtlZXAgc2VuZENvbnRlbnRSZXNp
emVkTm90aWZpY2F0aW9uCisgICAgICAgIGZhbHNlIGluIGNhc2Ugc2Nyb2xsYmFyIGlzIG5vdCBy
ZWFsbHkgY2hhbmdlZC4KKyAgICAgICAgQXMgYSByZXN1bHQsIGl0IHdpbGwgcmVtb3ZlIHVubmVj
ZXNzYXJ5IHJlbGF5b3V0IGluIHRoZSBhYm92ZSBjYXNlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBhcyB0aGlzIGlzIHZlcnkgaGFyZCB0byB3cml0ZSB0ZXN0cyBmb3IuIFRoZSBidWcgb25seQor
ICAgICAgICBvY2N1cmVkIHdoZW4gc2Nyb2xsaW5nIHRoZSBzaXRlcyB3aGljaCBjb250YWluIGZy
YW1lIGluIGJyb3dzZXIgd2l0aAorICAgICAgICBmcmFtZUZsYXR0ZW5pbmcuIFRoaXMgc2hvdWxk
IG5vdCBjaGFuZ2UgZnVuY3Rpb25hbGl0eSBpbiBvdGhlciBjYXNlLgorCisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRI
YXNIb3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNl
dEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVw
ZGF0ZVNjcm9sbGJhcnMpOgorCiAyMDExLTA3LTA1ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGdv
b2dsZS5jb20+CiAKICAgICAgICAgVHJpZ2dlciBhICdjaGFuZ2UnIGV2ZW50IHdoZW5ldmVyIHNl
bGVjdGVkIGZpbGVzIGFyZSBjaGFuZ2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwCmluZGV4IDBkN2NjZjFiNzdmMmVkMzNkNTg4OGE2MmRlYzE4OTg2ZTFlNWE1NjYuLmY0YTE3
MmFiNmZhNDhhY2I1ZWI3NDBjZWViMTRlOTZjMDIyNDdiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwCkBAIC04OCw5ICs4OCw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cmVt
b3ZlQ2hpbGQoV2lkZ2V0KiBjaGlsZCkKIAogdm9pZCBTY3JvbGxWaWV3OjpzZXRIYXNIb3Jpem9u
dGFsU2Nyb2xsYmFyKGJvb2wgaGFzQmFyKQogewotICAgIGlmIChoYXNCYXIgJiYgYXZvaWRTY3Jv
bGxiYXJDcmVhdGlvbigpKQotICAgICAgICByZXR1cm47Ci0KKyAgICBBU1NFUlQoIWhhc0JhciB8
fCAhYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpKTsKICAgICBpZiAoaGFzQmFyICYmICFtX2hvcml6
b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyID0gY3JlYXRl
U2Nyb2xsYmFyKEhvcml6b250YWxTY3JvbGxiYXIpOwogICAgICAgICBhZGRDaGlsZChtX2hvcml6
b250YWxTY3JvbGxiYXIuZ2V0KCkpOwpAQCAtMTA4LDkgKzEwNiw3IEBAIHZvaWQgU2Nyb2xsVmll
dzo6c2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihib29sIGhhc0JhcikKIAogdm9pZCBTY3JvbGxW
aWV3OjpzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihib29sIGhhc0JhcikKIHsKLSAgICBpZiAoaGFz
QmFyICYmIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCisgICAg
QVNTRVJUKCFoYXNCYXIgfHwgIWF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSk7CiAgICAgaWYgKGhh
c0JhciAmJiAhbV92ZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xs
YmFyID0gY3JlYXRlU2Nyb2xsYmFyKFZlcnRpY2FsU2Nyb2xsYmFyKTsKICAgICAgICAgYWRkQ2hp
bGQobV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKSk7CkBAIC00NzIsOSArNDY4LDkgQEAgdm9pZCBT
Y3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IEludFNpemUmIGRlc2lyZWRPZmZzZXQp
CiAgICAgICAgIG5ld0hhc1ZlcnRpY2FsU2Nyb2xsYmFyID0gKHZTY3JvbGwgPT0gU2Nyb2xsYmFy
QWx3YXlzT24pOwogCiAgICAgaWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQgfHwgKGhTY3JvbGwg
IT0gU2Nyb2xsYmFyQXV0byAmJiB2U2Nyb2xsICE9IFNjcm9sbGJhckF1dG8pKSB7Ci0gICAgICAg
IGlmIChoYXNIb3Jpem9udGFsU2Nyb2xsYmFyICE9IG5ld0hhc0hvcml6b250YWxTY3JvbGxiYXIp
CisgICAgICAgIGlmIChoYXNIb3Jpem9udGFsU2Nyb2xsYmFyICE9IG5ld0hhc0hvcml6b250YWxT
Y3JvbGxiYXIgJiYgKGhhc0hvcml6b250YWxTY3JvbGxiYXIgfHwgIWF2b2lkU2Nyb2xsYmFyQ3Jl
YXRpb24oKSkpCiAgICAgICAgICAgICBzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKG5ld0hhc0hv
cml6b250YWxTY3JvbGxiYXIpOwotICAgICAgICBpZiAoaGFzVmVydGljYWxTY3JvbGxiYXIgIT0g
bmV3SGFzVmVydGljYWxTY3JvbGxiYXIpCisgICAgICAgIGlmIChoYXNWZXJ0aWNhbFNjcm9sbGJh
ciAhPSBuZXdIYXNWZXJ0aWNhbFNjcm9sbGJhciAmJiAoaGFzVmVydGljYWxTY3JvbGxiYXIgfHwg
IWF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSkpCiAgICAgICAgICAgICBzZXRIYXNWZXJ0aWNhbFNj
cm9sbGJhcihuZXdIYXNWZXJ0aWNhbFNjcm9sbGJhcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
Ym9vbCBzZW5kQ29udGVudFJlc2l6ZWROb3RpZmljYXRpb24gPSBmYWxzZTsKQEAgLTUwMCwxNCAr
NDk2LDE0IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCBJbnRTaXpl
JiBkZXNpcmVkT2Zmc2V0KQogICAgICAgICBpZiAoIW5ld0hhc1ZlcnRpY2FsU2Nyb2xsYmFyICYm
IGhhc1ZlcnRpY2FsU2Nyb2xsYmFyICYmIGhTY3JvbGwgIT0gU2Nyb2xsYmFyQWx3YXlzT24pCiAg
ICAgICAgICAgICBuZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyID0gZmFsc2U7CiAKLSAgICAgICAg
aWYgKGhhc0hvcml6b250YWxTY3JvbGxiYXIgIT0gbmV3SGFzSG9yaXpvbnRhbFNjcm9sbGJhcikg
eworICAgICAgICBpZiAoaGFzSG9yaXpvbnRhbFNjcm9sbGJhciAhPSBuZXdIYXNIb3Jpem9udGFs
U2Nyb2xsYmFyICYmIChoYXNIb3Jpem9udGFsU2Nyb2xsYmFyIHx8ICFhdm9pZFNjcm9sbGJhckNy
ZWF0aW9uKCkpKSB7CiAgICAgICAgICAgICBpZiAobV9zY3JvbGxPcmlnaW4ueSgpICYmICFuZXdI
YXNIb3Jpem9udGFsU2Nyb2xsYmFyKQogICAgICAgICAgICAgICAgIG1fc2Nyb2xsT3JpZ2luLnNl
dFkobV9zY3JvbGxPcmlnaW4ueSgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSk7
CiAgICAgICAgICAgICBzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKG5ld0hhc0hvcml6b250YWxT
Y3JvbGxiYXIpOwogICAgICAgICAgICAgc2VuZENvbnRlbnRSZXNpemVkTm90aWZpY2F0aW9uID0g
dHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChoYXNWZXJ0aWNhbFNjcm9sbGJhciAhPSBu
ZXdIYXNWZXJ0aWNhbFNjcm9sbGJhcikgeworICAgICAgICBpZiAoaGFzVmVydGljYWxTY3JvbGxi
YXIgIT0gbmV3SGFzVmVydGljYWxTY3JvbGxiYXIgJiYgKGhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHx8
ICFhdm9pZFNjcm9sbGJhckNyZWF0aW9uKCkpKSB7CiAgICAgICAgICAgICBpZiAobV9zY3JvbGxP
cmlnaW4ueCgpICYmICFuZXdIYXNWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAgICAgICAgICBt
X3Njcm9sbE9yaWdpbi5zZXRYKG1fc2Nyb2xsT3JpZ2luLngoKSAtIG1fdmVydGljYWxTY3JvbGxi
YXItPndpZHRoKCkpOwogICAgICAgICAgICAgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIobmV3SGFz
VmVydGljYWxTY3JvbGxiYXIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>