<?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>29425</bug_id>
          
          <creation_ts>2009-09-18 07:43:10 -0700</creation_ts>
          <short_desc>[Qt] SIGSEGV after WebCore::Frame::loader()</short_desc>
          <delta_ts>2009-11-02 10:09:36 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tor Arne Vestbø">vestbo</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>jedrzej.nowacki</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>148131</commentid>
    <comment_count>0</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2009-09-18 07:43:10 -0700</bug_when>
    <thetext>This bug report originated from issue QTBUG-3876
&lt;http://bugreports.qt.nokia.com/browse/QTBUG-3876&gt;

--- Description ---

QWebView crashes (on Linux at least) when calling stop().

Test case:
//--------------------------------------------

class WebView : public QWebView
{
    Q_OBJECT

public:
    WebView(QWidget *parent = 0);

private slots:
    void loadingStarted();
    void reloadingStarted();
    void loading(int progress);

private:
    int counter;
    QTimer *timer;
};

WebView::WebView(QWidget *parent)
    : QWebView(parent), counter(0)
{
    timer = new QTimer(this);
    timer-&gt;setSingleShot(true);
    timer-&gt;setInterval(5000);

    connect(timer, SIGNAL(timeout()), this, SLOT(reloadingStarted()));
    connect(this, SIGNAL(loadProgress(int)), this, SLOT(loading(int)));
    connect(this, SIGNAL(loadStarted()), this, SLOT(loadingStarted()));
}

void WebView::loadingStarted()
{
    qDebug() &lt;&lt; &quot;Started...&quot;;
    counter++;
}

void WebView::reloadingStarted()
{
    qDebug() &lt;&lt; &quot;Reloading...&quot;;
    reload();
}

void WebView::loading(int progress)
{
    qDebug() &lt;&lt; &quot;loading: &quot; &lt;&lt; progress;
    if (progress &gt;= 50 &amp;&amp; counter == 2) {
        stop();
        timer-&gt;start();
    }
}

int main(int argc, char *argv[])
{
    QApplication app(argc,argv);
    WebView *view = new WebView();
    QUrl url = QUrl(&quot;http://www.qtsoftware.com&quot;);
    view-&gt;setUrl(url);
    view-&gt;load(url);
    view-&gt;show();
    return app.exec();
}

//---------------------------------------</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153016</commentid>
    <comment_count>1</comment_count>
      <attachid>40779</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-07 05:17:17 -0700</bug_when>
    <thetext>Created attachment 40779
Backtrace

I have reproduced crash. It is caused by call QWebView::stop() slot in method triggered by QWebView::loadProgress signal.

I see three solutions:
 1. Document that &quot;feature&quot;. Why actually you want to call stop from loadProgress?
 2. Save local reference to frame inside ProgressTracker::incremetProgress()
 3. Add few checks for null pointer

1. I believe that it is not the best bug policy... :-)
2. After ::stop() developer will receive new estimations, which is rather weired
3. Let&apos;s go to work ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153047</commentid>
    <comment_count>2</comment_count>
      <attachid>40789</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-07 08:23:34 -0700</bug_when>
    <thetext>Created attachment 40789
patch v1

Two null pointer checks.
New autotest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153052</commentid>
    <comment_count>3</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-10-07 08:40:20 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=40789) [details]
&gt; patch v1
&gt; 
&gt; Two null pointer checks.
&gt; New autotest.

although patch and autotest looks good (i am not a reviewer), generally i think it is something to be avoided to rely on internet for autotests.

+    QWebView view;
+    WebViewCrashTest tester(&amp;view);
+    QUrl url(&quot;http://www.qtsoftware.com&quot;);
+    view.setUrl(url);
+    view.load(url);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153053</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2009-10-07 08:42:51 -0700</bug_when>
    <thetext>You could use QTRY_VERIFY (of tests/util.h) instead of QVERIFY in the test, so it is more likely to work on the slow test machines (and you can reduce the time of qWait()).

You do not need view.setUrl(url);, view.load(url); should be enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153311</commentid>
    <comment_count>5</comment_count>
      <attachid>40789</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-08 00:49:27 -0700</bug_when>
    <thetext>Comment on attachment 40789
patch v1

I will change it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153634</commentid>
    <comment_count>6</comment_count>
      <attachid>40937</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-09 01:16:09 -0700</bug_when>
    <thetext>Created attachment 40937
patch

New &amp; better patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153866</commentid>
    <comment_count>7</comment_count>
      <attachid>40937</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-10-10 06:17:34 -0700</bug_when>
    <thetext>Comment on attachment 40937
patch


&gt; diff --git a/WebCore/loader/ProgressTracker.cpp b/WebCore/loader/ProgressTracker.cpp
&gt; index e682b9b..5f6892c 100644
&gt; --- a/WebCore/loader/ProgressTracker.cpp
&gt; +++ b/WebCore/loader/ProgressTracker.cpp
&gt; @@ -178,6 +178,8 @@ void ProgressTracker::incrementProgress(unsigned long identifier, const char*, i
&gt;          return;
&gt;      
&gt;      m_originatingProgressFrame-&gt;loader()-&gt;client()-&gt;willChangeEstimatedProgress();
&gt; +    if (!m_originatingProgressFrame)
&gt; +        return; // Client cancelled request.
&gt;      
&gt;      unsigned bytesReceived = length;
&gt;      double increment, percentOfRemainingBytes;
&gt; @@ -228,6 +230,8 @@ void ProgressTracker::incrementProgress(unsigned long identifier, const char*, i
&gt;          }
&gt;      }
&gt;      
&gt; +    if (!m_originatingProgressFrame)
&gt; +        return; // Client cancelled request in postProgressEstimateChangedNotification.
&gt;      m_originatingProgressFrame-&gt;loader()-&gt;client()-&gt;didChangeEstimatedProgress();


In both cases you are stepping back through a deleted object? Have you considered doing the
usual trick of having a RefPtr&lt;Frame&gt; frame = m_originatingProgressFrame; in the method entry?

This is already done in some of the methods of the ProgressTracker.




&gt; +
&gt; +    WebViewCrashTest(QWebView *view) : v(view), executed(false)


coding style violation, the c++ initializer list must be one variable per line.. and the naming of variables is also defined by the coding style.



       WebViewCrashTest(QWebView *view)
           : m_view(view)
           , m_executed(false)


&gt; +// Should not crash.
&gt; +void tst_QWebView::crashTests()
&gt; +{
&gt; +    // Test if loading can be stopped in loadProgress handler without crash.
&gt; +    // Test page should have frames.
&gt; +    QWebView view;
&gt; +    WebViewCrashTest tester(&amp;view);
&gt; +    QUrl url(&quot;qrc:///data/index.html&quot;);
&gt; +    view.load(url);
&gt; +    QTRY_VERIFY(tester.executed); // If fail it means that the test wasn&apos;t executed.


stupid question. how robust is that? should you wait for a loadFinished() signal or such?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154036</commentid>
    <comment_count>8</comment_count>
      <attachid>41036</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-12 06:39:54 -0700</bug_when>
    <thetext>Created attachment 41036
patch v3

&gt; In both cases you are stepping back through a deleted object? 
Yes, it is true (null pointer access).

&gt; Have you considered doing the usual trick of having a 
&gt; RefPtr&lt;Frame&gt; frame = m_originatingProgressFrame; in the method entry?

Yes, I have. Actually it was my first solution. But than I found an issue. Should we call the didChangeEstimatedProgress hook if in the postProgressEstimateChangedNotification developer try to stop loading? Moreover the estimations are strange because loading is canceled (reset()). I found it a bit confusing. But after a discussion in office with Jocelyn we decided that the didChangeEstimatedProgress might be used as a cleanup function, so it is better to call it. The new patch use RefPtr pattern.

&gt; coding style violation, the c++ initializer list must be one variable per
&gt; line.. and the naming of variables is also defined by the coding style.
Changed.

&gt;&gt; +    QTRY_VERIFY(tester.executed); // If fail it means that the test wasn&apos;t executed.
&gt; stupid question. how robust is that? should you wait for a loadFinished()
&gt; signal or such?
QTRY_VERIFY could wait up to 5 seconds and the web pages are compiled into resources (&quot;qrc://...&quot;). 
Even a slow machine should be fast enough :-). If you look into qtwebkit autotests suite there is a lot of
similar solutions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155919</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-19 14:43:30 -0700</bug_when>
    <thetext>The ChangeLog is missing the bug url.  prepare-ChagneLog --bug 29425 would have inserted it automatically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156161</commentid>
    <comment_count>10</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-20 08:28:25 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; The ChangeLog is missing the bug url.  prepare-ChagneLog --bug 29425 would have
&gt; inserted it automatically.

Could you check one more time? In both Changelog&apos;s files there is the bug&apos;s url.
Btw. thanks for hint, next time I will use the option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158003</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-26 16:14:27 -0700</bug_when>
    <thetext>I think Adam Barth and a Qt person should look at this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158206</commentid>
    <comment_count>12</comment_count>
      <attachid>41036</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-27 08:57:22 -0700</bug_when>
    <thetext>Comment on attachment 41036
patch v3

This looks good based on my understanding of hos this works.

 180     RefPtr&lt;Frame&gt; frame(m_originatingProgressFrame);  // Delete protection.

We prefer RefPtr&lt;Frame&gt; frame = m_originatingProgressFrame;
Also, the comment is unnecessary.

 181     FrameLoader* loader = frame-&gt;loader();  //Shortcut.
 
I wouldn&apos;t bother with this short cut.

 183     loader-&gt;client()-&gt;willChangeEstimatedProgress();

Why did we add this client callback?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158854</commentid>
    <comment_count>13</comment_count>
      <attachid>42088</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-29 03:25:38 -0700</bug_when>
    <thetext>Created attachment 42088
patch v3 (Alternative)

Alternative patch including all suggestions. Personally I prefer the previous one (patch v3), but from technical point of view it is the same.

(In reply to comment #12)
&gt; (From update of attachment 41036 [details])
&gt; This looks good based on my understanding of hos this works.
&gt; 
&gt;  180     RefPtr&lt;Frame&gt; frame(m_originatingProgressFrame);  // Delete
&gt; protection.
&gt; 
&gt; We prefer RefPtr&lt;Frame&gt; frame = m_originatingProgressFrame;
&gt; Also, the comment is unnecessary.
Could you point me to the rule? I have checked coding style guide, the mailing list discussion about unwritten rules of webkit style, source code of RefPtr and PassRefPtr. In the FrameLoader.cpp this is a standard pattern to call the constructor (RefPtr&lt;Frame&gt; protect(m_frame);) 


&gt;  181     FrameLoader* loader = frame-&gt;loader();  //Shortcut.
&gt; 
&gt; I wouldn&apos;t bother with this short cut.
It is easier to read then xxx.yyyy-&gt;zzz-&gt;aaa();
 
&gt;  183     loader-&gt;client()-&gt;willChangeEstimatedProgress();
&gt; 
&gt; Why did we add this client callback?
I guess... To checkout an old version of estimation, before it will be overwritten? It would be nice to have comments :-)


Thanks for reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158859</commentid>
    <comment_count>14</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-10-29 04:37:18 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=42088) [details]
&gt; patch v3 (Alternative)
&gt; 

maybe the below is part of a previous patch ?

+        Two null pointer checks were added in the ProgressTracker class.
+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158860</commentid>
    <comment_count>15</comment_count>
      <attachid>42088</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-29 04:45:58 -0700</bug_when>
    <thetext>Comment on attachment 42088
patch v3 (Alternative)

Bad change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158861</commentid>
    <comment_count>16</comment_count>
      <attachid>42091</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-29 04:59:05 -0700</bug_when>
    <thetext>Created attachment 42091
patch v4

Change log was updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158885</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-29 07:21:02 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt;  183     loader-&gt;client()-&gt;willChangeEstimatedProgress();
&gt; &gt; 
&gt; &gt; Why did we add this client callback?
&gt;
&gt; I guess... To checkout an old version of estimation, before it will be
&gt; overwritten? It would be nice to have comments :-)

That seems unrelated to the crash.  It&apos;s possible we should add that callback, but we should do that another bug/patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158887</commentid>
    <comment_count>18</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-29 07:40:50 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; That seems unrelated to the crash.  It&apos;s possible we should add that callback,
&gt; but we should do that another bug/patch.
Oh, I see. I didn&apos;t created the hook. I replaced all &quot;m_originatingProgressFrame&quot; with &quot;frame&quot;, and diff got confused and produced a bit messy output. 

So this:
-    m_originatingProgressFrame-&gt;loader()-&gt;client()-&gt;willChangeEstimatedProgress();
+    RefPtr&lt;Frame&gt; frame = m_originatingProgressFrame;
+
+    frame-&gt;loader()-&gt;client()-&gt;willChangeEstimatedProgress();

could be translated to:
+    RefPtr&lt;Frame&gt; frame = m_originatingProgressFrame;
+
-    m_originatingProgressFrame-&gt;loader()-&gt;client()-&gt;willChangeEstimatedProgress();
+    frame-&gt;loader()-&gt;client()-&gt;willChangeEstimatedProgress();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158897</commentid>
    <comment_count>19</comment_count>
      <attachid>42091</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-29 08:01:51 -0700</bug_when>
    <thetext>Comment on attachment 42091
patch v4

Ah, of course!  I see it now.  Thanks.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158952</commentid>
    <comment_count>20</comment_count>
      <attachid>42091</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-29 10:42:52 -0700</bug_when>
    <thetext>Comment on attachment 42091
patch v4

Rejecting patch 42091 from commit-queue.

Failed to run &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, &apos;--reviewer&apos;, &apos;Adam Barth&apos;, &apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
dex.html
patching file WebKit/qt/tests/qwebview/qwebview.pro
Hunk #1 FAILED at 4.
1 out of 1 hunk FAILED -- saving rejects to file WebKit/qt/tests/qwebview/qwebview.pro.rej
patching file WebKit/qt/tests/qwebview/tst_qwebview.cpp
Hunk #1 succeeded at 20 (offset 1 line).
Hunk #2 FAILED at 44.
Hunk #3 succeeded at 150 with fuzz 1 (offset -19 lines).
1 out of 3 hunks FAILED -- saving rejects to file WebKit/qt/tests/qwebview/tst_qwebview.cpp.rej
patching file WebKit/qt/tests/qwebview/tst_qwebview.qrc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158954</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-29 10:44:33 -0700</bug_when>
    <thetext>My apologies for the delay.  The commit-queue was down for several hours due to bug 30869.  I hope to fix that issue today.  It looks like this patch is simply out of date at this point and will need to be either updated here, or landed by hand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159280</commentid>
    <comment_count>22</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-30 02:58:41 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; My apologies for the delay.  The commit-queue was down for several hours due to
&gt; bug 30869.  I hope to fix that issue today.  It looks like this patch is simply
&gt; out of date at this point and will need to be either updated here, or landed by
&gt; hand.

OK, I&apos;ll remade and post it again :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159760</commentid>
    <comment_count>23</comment_count>
      <attachid>42308</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-11-02 01:37:02 -0800</bug_when>
    <thetext>Created attachment 42308
patch v5

Updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159826</commentid>
    <comment_count>24</comment_count>
      <attachid>42308</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-02 10:09:30 -0800</bug_when>
    <thetext>Comment on attachment 42308
patch v5

Clearing flags on attachment: 42308

Committed r50415: &lt;http://trac.webkit.org/changeset/50415&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159827</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-02 10:09:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>40779</attachid>
            <date>2009-10-07 05:17:17 -0700</date>
            <delta_ts>2009-10-07 05:17:17 -0700</delta_ts>
            <desc>Backtrace</desc>
            <filename>backtrace.txt</filename>
            <type>text/plain</type>
            <size>3392</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">IzAgIDB4YjczMTRhM2MgaW4gV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNsaWVudCAodGhpcz0weDI4
KSBhdCBsb2FkZXIvRnJhbWVMb2FkZXIuaDoyNTIKIzEgIDB4Yjc0MjEzNTAgaW4gV2ViQ29yZTo6
UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyAodGhpcz0weDg4YTZjMzgsIGlkZW50
aWZpZXI9MTUsIGxlbmd0aD0xMjg4KSBhdCBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcDoyMzIK
IzIgIDB4YjczZWZmMjcgaW4gV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhICh0
aGlzPTB4ODhmMDM5OCwgbG9hZGVyPTB4ODk5MjNhOCwgZGF0YT0weDhjNzAzOTAgIu+/ve+/vVot
x7bvv71iXDAyM++/vVwyMzRcblhcMDI2NEMiLCBsZW5ndGg9MTI4OCwgbGVuZ3RoUmVjZWl2ZWQ9
MTI4OCkgYXQgL2hvbWUvbmllcm9iL2Rldi9xdC9zcmMvM3JkcGFydHkvd2Via2l0L1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDozODUxCiMzICAweGI3NDIzMTRiIGluIFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSAodGhpcz0weDg5OTIzYTgsIGRhdGE9MHg4Yzcw
MzkwICLvv73vv71aLce277+9YlwwMjPvv71cMjM0XG5YXDAyNjRDIiwgbGVuZ3RoPTEyODgsIGxl
bmd0aFJlY2VpdmVkPTEyODgsIGFsbEF0T25jZT1mYWxzZSkgYXQgL2hvbWUvbmllcm9iL2Rldi9x
dC9zcmMvM3JkcGFydHkvd2Via2l0L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoy
NTMKIzQgIDB4Yjc0MjNlMzcgaW4gV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhICh0aGlzPTB4ODk5MjNhOCwgZGF0YT0weDhjNzAzOTAgIu+/ve+/vVotx7bvv71iXDAy
M++/vVwyMzRcblhcMDI2NEMiLCBsZW5ndGg9MTI4OCwgbGVuZ3RoUmVjZWl2ZWQ9MTI4OCwgYWxs
QXRPbmNlPWZhbHNlKSBhdCAvaG9tZS9uaWVyb2IvZGV2L3F0L3NyYy8zcmRwYXJ0eS93ZWJraXQv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOjE2NQojNSAgMHhiNzQyMTdlYSBp
biBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEgKHRoaXM9MHg4OTkyM2E4
LCBkYXRhPTB4OGM3MDM5MCAi77+977+9Wi3Htu+/vWJcMDIz77+9XDIzNFxuWFwwMjY0QyIsIGxl
bmd0aD0xMjg4LCBsZW5ndGhSZWNlaXZlZD0xMjg4KSBhdCAvaG9tZS9uaWVyb2IvZGV2L3F0L3Ny
Yy8zcmRwYXJ0eS93ZWJraXQvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOjM5OAoj
NiAgMHhiNzYyN2YwNSBpbiBXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjo6Zm9yd2FyZERh
dGEgKHRoaXM9MHg4OTkyYWQ4KSBhdCAvaG9tZS9uaWVyb2IvZGV2L3F0L3NyYy8zcmRwYXJ0eS93
ZWJraXQvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNw
cDozNzAKIzcgIDB4Yjc2Mjg5NjAgaW4gV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6OnF0
X21ldGFjYWxsICh0aGlzPTB4ODk5MmFkOCwgX2M9UU1ldGFPYmplY3Q6Okludm9rZU1ldGFNZXRo
b2QsIF9pZD0zLCBfYT0weDg5Y2QzNDgpIGF0IC5tb2MvZGVidWctc2hhcmVkL21vY19RTmV0d29y
a1JlcGx5SGFuZGxlci5jcHA6ODQKIzggIDB4YjU4YjVlNTMgaW4gUU1ldGFPYmplY3Q6Om1ldGFj
YWxsIChvYmplY3Q9MHg4OTkyYWQ4LCBjbD1RTWV0YU9iamVjdDo6SW52b2tlTWV0YU1ldGhvZCwg
aWR4PTcsIGFyZ3Y9MHg4OWNkMzQ4KSBhdCAvaG9tZS9uaWVyb2IvZGV2L3F0L3NyYy9jb3JlbGli
L2tlcm5lbC9xbWV0YW9iamVjdC5jcHA6MjM3CiM5ICAweGI1OGMzM2Q5IGluIFFNZXRhQ2FsbEV2
ZW50OjpwbGFjZU1ldGFDYWxsICh0aGlzPTB4OGJhMDU4OCwgb2JqZWN0PTB4ODk5MmFkOCkgYXQg
a2VybmVsL3FvYmplY3QuY3BwOjU2MgojMTAgMHhiNThjNTM1ZiBpbiBRT2JqZWN0OjpldmVudCAo
dGhpcz0weDg5OTJhZDgsIGU9MHg4YmEwNTg4KSBhdCBrZXJuZWwvcW9iamVjdC5jcHA6MTIzOAoj
MTEgMHhiNWI5MjZiZSBpbiBRQXBwbGljYXRpb25Qcml2YXRlOjpub3RpZnlfaGVscGVyICh0aGlz
PTB4ODgyN2IzOCwgcmVjZWl2ZXI9MHg4OTkyYWQ4LCBlPTB4OGJhMDU4OCkgYXQgL2hvbWUvbmll
cm9iL2Rldi9xdC9zcmMvZ3VpL2tlcm5lbC9xYXBwbGljYXRpb24uY3BwOjQxNzIKIzEyIDB4YjVi
OTJhNzUgaW4gUUFwcGxpY2F0aW9uOjpub3RpZnkgKHRoaXM9MHhiZmJiNDlkYywgcmVjZWl2ZXI9
MHg4OTkyYWQ4LCBlPTB4OGJhMDU4OCkgYXQgL2hvbWUvbmllcm9iL2Rldi9xdC9zcmMvZ3VpL2tl
cm5lbC9xYXBwbGljYXRpb24uY3BwOjM2NTYKIzEzIDB4YjU4YWU1MjggaW4gUUNvcmVBcHBsaWNh
dGlvbjo6bm90aWZ5SW50ZXJuYWwgKHRoaXM9MHhiZmJiNDlkYywgcmVjZWl2ZXI9MHg4OTkyYWQ4
LCBldmVudD0weDhiYTA1ODgpIGF0IC9ob21lL25pZXJvYi9kZXYvcXQvc3JjL2NvcmVsaWIva2Vy
bmVsL3Fjb3JlYXBwbGljYXRpb24uY3BwOjcwNAojMTQgMHhiNzYzYzE4NSBpbiBRQ29yZUFwcGxp
Y2F0aW9uOjpzZW5kRXZlbnQgKHJlY2VpdmVyPTB4ODk5MmFkOCwgZXZlbnQ9MHg4YmEwNTg4KSBh
dCAuLi8uLi8uLi8uLi9pbmNsdWRlL1F0Q29yZS8uLi8uLi9zcmMvY29yZWxpYi9rZXJuZWwvcWNv
cmVhcHBsaWNhdGlvbi5oOjIxNQojMTUgMHhiNThhZWFiMiBpbiBRQ29yZUFwcGxpY2F0aW9uUHJp
dmF0ZTo6c2VuZFBvc3RlZEV2ZW50cyAocmVjZWl2ZXI9MHgwLCBldmVudF90eXBlPTAsIGRhdGE9
MHg4ODI3OTc4KSBhdCAvaG9tZS9uaWVyb2IvZGV2L3F0L3NyYy9jb3JlbGliL2tlcm5lbC9xY29y
ZWFwcGxpY2F0aW9uLmNwcDoxMzQ1CiMxNiAweGI1OGFlZDQ3IGluIFFDb3JlQXBwbGljYXRpb246
OnNlbmRQb3N0ZWRFdmVudHMgKHJlY2VpdmVyPTB4MCwgZXZlbnRfdHlwZT0wKSBhdCAvaG9tZS9u
aWVyb2IvZGV2L3F0L3NyYy9jb3JlbGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcDoxMjM4
CiMxNyAweGI1YzZlOTk4IGluIFFDb3JlQXBwbGljYXRpb246OnNlbmRQb3N0ZWRFdmVudHMgKCkg
YXQgLi4vLi4vaW5jbHVkZS9RdENvcmUvLi4vLi4vc3JjL2NvcmVsaWIva2VybmVsL3Fjb3JlYXBw
bGljYXRpb24uaDoyMjAKIzE4IDB4YjU4ZTk4ZDMgaW4gcG9zdEV2ZW50U291cmNlRGlzcGF0Y2gg
KHM9MHg4ODJhYjEwKSBhdCAvaG9tZS9uaWVyb2IvZGV2L3F0L3NyYy9jb3JlbGliL2tlcm5lbC9x
ZXZlbnRkaXNwYXRjaGVyX2dsaWIuY3BwOjI3NgojMTkgMHhiNTFjNGU5OCBpbiBnX21haW5fY29u
dGV4dF9kaXNwYXRjaCAoKSBmcm9tIC9saWIvbGliZ2xpYi0yLjAuc28uMAojMjAgMHhiNTFjODYy
MyBpbiA/PyAoKSBmcm9tIC9saWIvbGliZ2xpYi0yLjAuc28uMAojMjEgMHgwODgyYWE5MCBpbiA/
PyAoKQojMjIgMHgwMDAwMDAwMCBpbiA/PyAoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40789</attachid>
            <date>2009-10-07 08:23:34 -0700</date>
            <delta_ts>2009-10-09 01:16:09 -0700</delta_ts>
            <desc>patch v1</desc>
            <filename>progress.diff</filename>
            <type>text/plain</type>
            <size>4327</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTllYmU0YS4uOTVmZDE4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0xMC0wNyAgSmVkcnplaiBOb3dh
Y2tpICA8amVkcnplai5ub3dhY2tpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBRV2ViVmlldyBjcmFzaCBmaXguCisgICAgICAgIAor
ICAgICAgICBRV2ViVmlldyBzaG91bGQgbm90IGNyYXNoIGlmIHRoZSBzdG9wKCkgbWV0aG9kIHdp
bGwgYmUgY2FsbGVkIGluc2lkZQorICAgICAgICBhIGZ1bmN0aW9uIHRyaWdnZXJlZCBieSB0aGUg
bG9hZFByb2dyZXNzIHNpZ25hbC4KKyAgICAgICAgCisgICAgICAgIFR3byBudWxsIHBvaW50ZXIg
Y2hlY2tzIHdlcmUgYWRkZWQgaW5zaWRlIFByb2dyZXNzVHJhY2tlci4KKyAgICAgICAgCisgICAg
ICAgIE5ldyBBdXRvdGVzdCB3aGVyZSBhZGRlZCBmb3IgdGhlIGNhc2UuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5NDI1CisKKyAgICAgICAgKiBs
b2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJh
Y2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3MpOgorCiAyMDA5LTEwLTA2ICBEYXZpZCBMZXZpbiAgPGxl
dmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAgYi9XZWJDb3JlL2xv
YWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCmluZGV4IGU2ODJiOWIuLjVmNjg5MmMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvV2ViQ29yZS9sb2Fk
ZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcApAQCAtMTc4LDYgKzE3OCw4IEBAIHZvaWQgUHJvZ3Jlc3NU
cmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IGNoYXIqLCBpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBtX29yaWdpbmF0aW5nUHJvZ3Jl
c3NGcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3Mo
KTsKKyAgICBpZiAoIW1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lKQorICAgICAgICByZXR1cm47
IC8vIENsaWVudCBjYW5jZWxsZWQgcmVxdWVzdC4KICAgICAKICAgICB1bnNpZ25lZCBieXRlc1Jl
Y2VpdmVkID0gbGVuZ3RoOwogICAgIGRvdWJsZSBpbmNyZW1lbnQsIHBlcmNlbnRPZlJlbWFpbmlu
Z0J5dGVzOwpAQCAtMjI4LDYgKzIzMCw4IEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1l
bnRQcm9ncmVzcyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqLCBpCiAgICAg
ICAgIH0KICAgICB9CiAgICAgCisgICAgaWYgKCFtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSkK
KyAgICAgICAgcmV0dXJuOyAvLyBDbGllbnQgY2FuY2VsbGVkIHJlcXVlc3QgaW4gcG9zdFByb2dy
ZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uLgogICAgIG1fb3JpZ2luYXRpbmdQcm9ncmVz
c0ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdl
TG9nCmluZGV4IGRiYWE1YTIuLjU3Zjk4YzMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDA5LTEwLTA3
ICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFFXZWJWaWV3IGNyYXNoIGZp
eC4KKyAgICAgICAgCisgICAgICAgIFFXZWJWaWV3IHNob3VsZCBub3QgY3Jhc2ggaWYgdGhlIHN0
b3AoKSBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgaW5zaWRlCisgICAgICAgIGEgZnVuY3Rpb24gdHJp
Z2dlcmVkIGJ5IHRoZSBsb2FkUHJvZ3Jlc3Mgc2lnbmFsLgorICAgICAgICAKKyAgICAgICAgVHdv
IG51bGwgcG9pbnRlciBjaGVja3Mgd2VyZSBhZGRlZCBpbnNpZGUgUHJvZ3Jlc3NUcmFja2VyLgor
ICAgICAgICAKKyAgICAgICAgTmV3IEF1dG90ZXN0IHdoZXJlIGFkZGVkIGZvciB0aGUgY2FzZS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk0MjUK
KworICAgICAgICAqIHRlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHA6CisgICAgICAgIChX
ZWJWaWV3Q3Jhc2hUZXN0OjpXZWJWaWV3Q3Jhc2hUZXN0KToKKyAgICAgICAgKFdlYlZpZXdDcmFz
aFRlc3Q6OmxvYWRpbmcpOgorICAgICAgICAodHN0X1FXZWJWaWV3OjpjcmFzaFRlc3RzKToKKwog
MjAwOS0xMC0wNSAgR2lyaXNoIFJhbWFrcmlzaG5hbiAgPGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC90ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcuY3BwIGIvV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHAKaW5kZXggMDFkMGU5Mi4uNTg2Yjc2ZSAxMDA2NDQKLS0t
IGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHAKKysrIGIvV2ViS2l0
L3F0L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNp
bmNsdWRlIDxxd2VicGFnZS5oPgogI2luY2x1ZGUgPHFuZXR3b3JrcmVxdWVzdC5oPgogI2luY2x1
ZGUgPHFkaXJpdGVyYXRvci5oPgorI2luY2x1ZGUgPFFEZWJ1Zz4KICNpbmNsdWRlIDxxd2Via2l0
dmVyc2lvbi5oPgogCiBjbGFzcyB0c3RfUVdlYlZpZXcgOiBwdWJsaWMgUU9iamVjdApAQCAtNDIs
NiArNDMsNyBAQCBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgZ3Vlc3NVcmxGcm9tU3RyaW5nX2Rh
dGEoKTsKICAgICB2b2lkIGd1ZXNzVXJsRnJvbVN0cmluZygpOwogICAgIHZvaWQgZ2V0V2ViS2l0
VmVyc2lvbigpOworICAgIHZvaWQgY3Jhc2hUZXN0cygpOwogfTsKIAogLy8gVGhpcyB3aWxsIGJl
IGNhbGxlZCBiZWZvcmUgdGhlIGZpcnN0IHRlc3QgZnVuY3Rpb24gaXMgZXhlY3V0ZWQuCkBAIC0x
NjcsNiArMTY5LDQ3IEBAIHZvaWQgdHN0X1FXZWJWaWV3OjpnZXRXZWJLaXRWZXJzaW9uKCkKICAg
ICBRVkVSSUZZKHFXZWJLaXRWZXJzaW9uKCkudG9Eb3VibGUoKSA+IDApOwogfQogCisKKy8vIENs
YXNzIHVzZWQgaW4gY3Jhc2hUZXN0cworY2xhc3MgV2ViVmlld0NyYXNoVGVzdCA6IHB1YmxpYyBR
T2JqZWN0Cit7CisgICAgUV9PQkpFQ1QKKyAgICBRV2ViVmlldyAqdjsKK3B1YmxpYzoKKyAgICBi
b29sIGV4ZWN1dGVkOworCisKKyAgICBXZWJWaWV3Q3Jhc2hUZXN0KFFXZWJWaWV3ICp2aWV3KSA6
IHYodmlldyksIGV4ZWN1dGVkKGZhbHNlKQorICAgIHsKKyAgICAgICAgdmlldy0+Y29ubmVjdCh2
aWV3LCBTSUdOQUwobG9hZFByb2dyZXNzKGludCkpLCB0aGlzLCBTTE9UKGxvYWRpbmcoaW50KSkp
OworICAgIH0KKworcHJpdmF0ZSBzbG90czoKKyAgICB2b2lkIGxvYWRpbmcoaW50IHByb2dyZXNz
KQorICAgIHsKKyAgICAgICAgaWYgKHByb2dyZXNzID49IDIwICYmIHByb2dyZXNzIDwgOTApIHsK
KyAgICAgICAgICAgIHYtPnN0b3AoKTsKKyAgICAgICAgICAgIGV4ZWN1dGVkID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0KK307CisKKworLy8gU2hvdWxkIG5vdCBjcmFzaC4KK3ZvaWQgdHN0X1FX
ZWJWaWV3OjpjcmFzaFRlc3RzKCkKK3sKKyAgICAvLyBUZXN0IGlmIGxvYWRpbmcgY2FuIGJlIHN0
b3BwZWQgaW4gbG9hZFByb2dyZXNzIGhhbmRsZXIuCisgICAgLy8gVGVzdCBwYWdlIHNob3VsZCBi
ZSBjb21wbGV4IGVub3VnaCAuLi4KKyAgICBRV2ViVmlldyB2aWV3OworICAgIFdlYlZpZXdDcmFz
aFRlc3QgdGVzdGVyKCZ2aWV3KTsKKyAgICBRVXJsIHVybCgiaHR0cDovL3d3dy5xdHNvZnR3YXJl
LmNvbSIpOworICAgIHZpZXcuc2V0VXJsKHVybCk7CisgICAgdmlldy5sb2FkKHVybCk7CisgICAg
UVRlc3Q6OnFXYWl0KDMwMDApOworICAgIFFWRVJJRlkodGVzdGVyLmV4ZWN1dGVkKTsgLy8gSWYg
ZmFpbCBpdCBtZWFucyB0aGF0IHRoZSB0ZXN0IHdhc24ndCBleGVjdXRlZC4KK30KKworCiBRVEVT
VF9NQUlOKHRzdF9RV2ViVmlldykKICNpbmNsdWRlICJ0c3RfcXdlYnZpZXcubW9jIgogCg==
</data>
<flag name="review"
          id="22071"
          type_id="1"
          status="-"
          setter="jedrzej.nowacki"
    />
    <flag name="commit-queue"
          id="22072"
          type_id="3"
          status="-"
          setter="jedrzej.nowacki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40937</attachid>
            <date>2009-10-09 01:16:09 -0700</date>
            <delta_ts>2009-10-12 06:39:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>progress.diff</filename>
            <type>text/plain</type>
            <size>5874</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTllYmU0YS4uYzFmYWU4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0xMC0wNyAgSmVkcnplaiBOb3dh
Y2tpICA8amVkcnplai5ub3dhY2tpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBRV2ViVmlldyBjcmFzaCBmaXguCisKKyAgICAgICAg
VGhlIFFXZWJWaWV3IHNob3VsZCBub3QgY3Jhc2ggaWYgdGhlIHN0b3AoKSBtZXRob2QgaXMgY2Fs
bGVkIGZyb20KKyAgICAgICAgYSBmdW5jdGlvbiB0cmlnZ2VyZWQgYnkgdGhlIGxvYWRQcm9ncmVz
cyBzaWduYWwuCisKKyAgICAgICAgVHdvIG51bGwgcG9pbnRlciBjaGVja3Mgd2VyZSBhZGRlZCBp
biB0aGUgUHJvZ3Jlc3NUcmFja2VyIGNsYXNzLgorCisgICAgICAgIE5ldyBhdXRvdGVzdCB3YXMg
Y3JlYXRlZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjk0MjUKKworICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyk6CisKIDIwMDkt
MTAtMDYgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NU
cmFja2VyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggZTY4
MmI5Yi4uNWY2ODkyYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2Vy
LmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCkBAIC0xNzgsNiAr
MTc4LDggQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciosIGkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPndpbGxD
aGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpOworICAgIGlmICghbV9vcmlnaW5hdGluZ1Byb2dyZXNz
RnJhbWUpCisgICAgICAgIHJldHVybjsgLy8gQ2xpZW50IGNhbmNlbGxlZCByZXF1ZXN0LgogICAg
IAogICAgIHVuc2lnbmVkIGJ5dGVzUmVjZWl2ZWQgPSBsZW5ndGg7CiAgICAgZG91YmxlIGluY3Jl
bWVudCwgcGVyY2VudE9mUmVtYWluaW5nQnl0ZXM7CkBAIC0yMjgsNiArMjMwLDggQEAgdm9pZCBQ
cm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgY2hhciosIGkKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICBpZiAoIW1fb3Jp
Z2luYXRpbmdQcm9ncmVzc0ZyYW1lKQorICAgICAgICByZXR1cm47IC8vIENsaWVudCBjYW5jZWxs
ZWQgcmVxdWVzdCBpbiBwb3N0UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24uCiAg
ICAgbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkQ2hh
bmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5n
ZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZGJhYTVhMi4uY2M1NWM5NyAxMDA2NDQK
LS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMDktMTAtMDcgIEplZHJ6ZWogTm93YWNraSAgPGplZHJ6ZWoubm93YWNr
aUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUVdlYlZpZXcgY3Jhc2ggZml4LgorCisgICAgICAgIFRoZSBRV2ViVmlldyBzaG91bGQg
bm90IGNyYXNoIGlmIHRoZSBzdG9wKCkgbWV0aG9kIGlzIGNhbGxlZCBmcm9tCisgICAgICAgIGEg
ZnVuY3Rpb24gdHJpZ2dlcmVkIGJ5IHRoZSBsb2FkUHJvZ3Jlc3Mgc2lnbmFsLgorCisgICAgICAg
IFR3byBudWxsIHBvaW50ZXIgY2hlY2tzIHdlcmUgYWRkZWQgaW4gdGhlIFByb2dyZXNzVHJhY2tl
ciBjbGFzcy4KKworICAgICAgICBOZXcgYXV0b3Rlc3Qgd2FzIGNyZWF0ZWQuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5NDI1CisKKyAgICAgICAg
KiB0ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcuY3BwOgorICAgICAgICAoV2ViVmlld0NyYXNo
VGVzdDo6V2ViVmlld0NyYXNoVGVzdCk6CisgICAgICAgIChXZWJWaWV3Q3Jhc2hUZXN0Ojpsb2Fk
aW5nKToKKyAgICAgICAgKHRzdF9RV2ViVmlldzo6Y3Jhc2hUZXN0cyk6CisKIDIwMDktMTAtMDUg
IEdpcmlzaCBSYW1ha3Jpc2huYW4gIDxnaXJpc2hAZm9yd2FyZGJpYXMuaW4+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvdGVzdHMv
cXdlYnZpZXcvZGF0YS9mcmFtZV9hLmh0bWwgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvZGF0
YS9mcmFtZV9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZmNjhm
MQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy9kYXRhL2ZyYW1l
X2EuaHRtbApAQCAtMCwwICsxLDIgQEAKKzxhIGhyZWY9Imh0dHA6Ly9nb29nbGUuY29tIiB0YXJn
ZXQ9ImZyYW1lX2IiPjxpbWcgc3JjPSIiIHdpZHRoPTEwMCBoZWlnaHQ9MTAwIGFsdD0iR29vZ2xl
Ij48L2E+Cis8YSBocmVmPSJodHRwOi8veWFob28uY29tIiB0YXJnZXQ9ImZyYW1lX2IiPjxpbWcg
c3JjPSIiIHdpZHRoPTEwMCBoZWlnaHQ9MTAwIGFsdD0iWWFob28iPjwvYT4KZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy9kYXRhL2luZGV4Lmh0bWwgYi9XZWJLaXQvcXQvdGVz
dHMvcXdlYnZpZXcvZGF0YS9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmM1M2FkMDkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnZp
ZXcvZGF0YS9pbmRleC5odG1sCkBAIC0wLDAgKzEsNCBAQAorPGZyYW1lc2V0IGNvbHM9IjI1JSw3
NSUiPgorICAgPGZyYW1lIHNyYz0iZnJhbWVfYS5odG1sIiBuYW1lPSJmcmFtZV9hIj4KKyAgIDxm
cmFtZSBzcmM9ImZyYW1lX2IuaHRtbCIgbmFtZT0iZnJhbWVfYiI+Cis8L2ZyYW1lc2V0PgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3F3ZWJ2aWV3LnBybyBiL1dlYktpdC9x
dC90ZXN0cy9xd2Vidmlldy9xd2Vidmlldy5wcm8KaW5kZXggZDlkMTIyYy4uZjJiYjNiOSAxMDA2
NDQKLS0tIGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3F3ZWJ2aWV3LnBybworKysgYi9XZWJL
aXQvcXQvdGVzdHMvcXdlYnZpZXcvcXdlYnZpZXcucHJvCkBAIC00LDUgKzQsNiBAQCBpbmNsdWRl
KC4uLy4uLy4uLy4uL1dlYktpdC5wcmkpCiBTT1VSQ0VTICArPSB0c3RfcXdlYnZpZXcuY3BwCiBR
VCArPSB0ZXN0bGliIG5ldHdvcmsKIFFNQUtFX1JQQVRIRElSID0gJCRPVVRQVVRfRElSL2xpYiAk
JFFNQUtFX1JQQVRIRElSCitSRVNPVVJDRVMgICs9IHRzdF9xd2Vidmlldy5xcmMKIAogc3ltYmlh
bjpUQVJHRVQuVUlEMyA9IDB4QTAwMEU1M0YKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90ZXN0cy9x
d2Vidmlldy90c3RfcXdlYnZpZXcuY3BwIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9x
d2Vidmlldy5jcHAKaW5kZXggMDFkMGU5Mi4uZWYyN2JmYSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0
L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHAKQEAgLTE5LDEyICsxOSwxNCBAQAogKi8KIAogI2luY2x1
ZGUgPHF0ZXN0Lmg+CisjaW5jbHVkZSAiLi4vdXRpbC5oIgogCiAjaW5jbHVkZSA8cXBhaW50ZXIu
aD4KICNpbmNsdWRlIDxxd2Vidmlldy5oPgogI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CiAjaW5jbHVk
ZSA8cW5ldHdvcmtyZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8cWRpcml0ZXJhdG9yLmg+CisjaW5jbHVk
ZSA8UURlYnVnPgogI2luY2x1ZGUgPHF3ZWJraXR2ZXJzaW9uLmg+CiAKIGNsYXNzIHRzdF9RV2Vi
VmlldyA6IHB1YmxpYyBRT2JqZWN0CkBAIC00Miw2ICs0NCw3IEBAIHByaXZhdGUgc2xvdHM6CiAg
ICAgdm9pZCBndWVzc1VybEZyb21TdHJpbmdfZGF0YSgpOwogICAgIHZvaWQgZ3Vlc3NVcmxGcm9t
U3RyaW5nKCk7CiAgICAgdm9pZCBnZXRXZWJLaXRWZXJzaW9uKCk7CisgICAgdm9pZCBjcmFzaFRl
c3RzKCk7CiB9OwogCiAvLyBUaGlzIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgdGVz
dCBmdW5jdGlvbiBpcyBleGVjdXRlZC4KQEAgLTE2Nyw2ICsxNzAsNDUgQEAgdm9pZCB0c3RfUVdl
YlZpZXc6OmdldFdlYktpdFZlcnNpb24oKQogICAgIFFWRVJJRlkocVdlYktpdFZlcnNpb24oKS50
b0RvdWJsZSgpID4gMCk7CiB9CiAKKworLy8gQ2xhc3MgdXNlZCBpbiBjcmFzaFRlc3RzCitjbGFz
cyBXZWJWaWV3Q3Jhc2hUZXN0IDogcHVibGljIFFPYmplY3QKK3sKKyAgICBRX09CSkVDVAorICAg
IFFXZWJWaWV3ICp2OworcHVibGljOgorICAgIGJvb2wgZXhlY3V0ZWQ7CisKKworICAgIFdlYlZp
ZXdDcmFzaFRlc3QoUVdlYlZpZXcgKnZpZXcpIDogdih2aWV3KSwgZXhlY3V0ZWQoZmFsc2UpCisg
ICAgeworICAgICAgICB2aWV3LT5jb25uZWN0KHZpZXcsIFNJR05BTChsb2FkUHJvZ3Jlc3MoaW50
KSksIHRoaXMsIFNMT1QobG9hZGluZyhpbnQpKSk7CisgICAgfQorCitwcml2YXRlIHNsb3RzOgor
ICAgIHZvaWQgbG9hZGluZyhpbnQgcHJvZ3Jlc3MpCisgICAgeworICAgICAgICBpZiAocHJvZ3Jl
c3MgPj0gMjAgJiYgcHJvZ3Jlc3MgPCA5MCkgeworICAgICAgICAgICAgdi0+c3RvcCgpOworICAg
ICAgICAgICAgZXhlY3V0ZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfQorfTsKKworCisvLyBT
aG91bGQgbm90IGNyYXNoLgordm9pZCB0c3RfUVdlYlZpZXc6OmNyYXNoVGVzdHMoKQoreworICAg
IC8vIFRlc3QgaWYgbG9hZGluZyBjYW4gYmUgc3RvcHBlZCBpbiBsb2FkUHJvZ3Jlc3MgaGFuZGxl
ciB3aXRob3V0IGNyYXNoLgorICAgIC8vIFRlc3QgcGFnZSBzaG91bGQgaGF2ZSBmcmFtZXMuCisg
ICAgUVdlYlZpZXcgdmlldzsKKyAgICBXZWJWaWV3Q3Jhc2hUZXN0IHRlc3Rlcigmdmlldyk7Cisg
ICAgUVVybCB1cmwoInFyYzovLy9kYXRhL2luZGV4Lmh0bWwiKTsKKyAgICB2aWV3LmxvYWQodXJs
KTsKKyAgICBRVFJZX1ZFUklGWSh0ZXN0ZXIuZXhlY3V0ZWQpOyAvLyBJZiBmYWlsIGl0IG1lYW5z
IHRoYXQgdGhlIHRlc3Qgd2Fzbid0IGV4ZWN1dGVkLgorfQorCisKIFFURVNUX01BSU4odHN0X1FX
ZWJWaWV3KQogI2luY2x1ZGUgInRzdF9xd2Vidmlldy5tb2MiCiAKZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC90ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcucXJjIGIvV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJ2aWV3L3RzdF9xd2Vidmlldy5xcmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZWRlMzRhOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy90
c3RfcXdlYnZpZXcucXJjCkBAIC0wLDAgKzEsNyBAQAorPCFET0NUWVBFIFJDQz48UkNDIHZlcnNp
b249IjEuMCI+Cis8cXJlc291cmNlPgorICAgIDxmaWxlPmRhdGEvaW5kZXguaHRtbDwvZmlsZT4K
KyAgICA8ZmlsZT5kYXRhL2ZyYW1lX2EuaHRtbDwvZmlsZT4KKzwvcXJlc291cmNlPgorPC9SQ0M+
CisK
</data>
<flag name="review"
          id="22237"
          type_id="1"
          status="-"
          setter="zecke"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41036</attachid>
            <date>2009-10-12 06:39:54 -0700</date>
            <delta_ts>2009-11-02 01:37:02 -0800</delta_ts>
            <desc>patch v3</desc>
            <filename>patchv3.diff</filename>
            <type>text/plain</type>
            <size>7721</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTllYmU0YS4uYzFmYWU4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0xMC0wNyAgSmVkcnplaiBOb3dh
Y2tpICA8amVkcnplai5ub3dhY2tpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBRV2ViVmlldyBjcmFzaCBmaXguCisKKyAgICAgICAg
VGhlIFFXZWJWaWV3IHNob3VsZCBub3QgY3Jhc2ggaWYgdGhlIHN0b3AoKSBtZXRob2QgaXMgY2Fs
bGVkIGZyb20KKyAgICAgICAgYSBmdW5jdGlvbiB0cmlnZ2VyZWQgYnkgdGhlIGxvYWRQcm9ncmVz
cyBzaWduYWwuCisKKyAgICAgICAgVHdvIG51bGwgcG9pbnRlciBjaGVja3Mgd2VyZSBhZGRlZCBp
biB0aGUgUHJvZ3Jlc3NUcmFja2VyIGNsYXNzLgorCisgICAgICAgIE5ldyBhdXRvdGVzdCB3YXMg
Y3JlYXRlZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjk0MjUKKworICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyk6CisKIDIwMDkt
MTAtMDYgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NU
cmFja2VyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggZTY4
MmI5Yi4uZGFkNDdkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2Vy
LmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCkBAIC0xNzcsNyAr
MTc3LDEwIEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqLCBpCiAgICAgaWYgKCFpdGVtKQogICAgICAg
ICByZXR1cm47CiAgICAgCi0gICAgbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUtPmxvYWRlcigp
LT5jbGllbnQoKS0+d2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7CisgICAgUmVmUHRyPEZy
YW1lPiBmcmFtZShtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSk7ICAvLyBEZWxldGUgcHJvdGVj
dGlvbi4KKyAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOyAgLy9TaG9y
dGN1dC4KKworICAgIGxvYWRlci0+Y2xpZW50KCktPndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVz
cygpOwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVzUmVjZWl2ZWQgPSBsZW5ndGg7CiAgICAgZG91
YmxlIGluY3JlbWVudCwgcGVyY2VudE9mUmVtYWluaW5nQnl0ZXM7CkBAIC0xODksNyArMTkyLDcg
QEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgY2hhciosIGkKICAgICAgICAgaXRlbS0+ZXN0aW1hdGVkTGVuZ3Ro
ID0gaXRlbS0+Ynl0ZXNSZWNlaXZlZCAqIDI7CiAgICAgfQogICAgIAotICAgIGludCBudW1QZW5k
aW5nT3JMb2FkaW5nUmVxdWVzdHMgPSBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS0+bG9hZGVy
KCktPm51bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0cyh0cnVlKTsKKyAgICBpbnQgbnVtUGVuZGlu
Z09yTG9hZGluZ1JlcXVlc3RzID0gbG9hZGVyLT5udW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHMo
dHJ1ZSk7CiAgICAgZXN0aW1hdGVkQnl0ZXNGb3JQZW5kaW5nUmVxdWVzdHMgPSBwcm9ncmVzc0l0
ZW1EZWZhdWx0RXN0aW1hdGVkTGVuZ3RoICogbnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzOwog
ICAgIHJlbWFpbmluZ0J5dGVzID0gKChtX3RvdGFsUGFnZUFuZFJlc291cmNlQnl0ZXNUb0xvYWQg
KyBlc3RpbWF0ZWRCeXRlc0ZvclBlbmRpbmdSZXF1ZXN0cykgLSBtX3RvdGFsQnl0ZXNSZWNlaXZl
ZCk7CiAgICAgaWYgKHJlbWFpbmluZ0J5dGVzID4gMCkgIC8vIFByZXZlbnQgZGl2aWRlIGJ5IDAu
CkBAIC0xOTksOCArMjAyLDggQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dy
ZXNzKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciosIGkKICAgICAKICAgICAv
LyBGb3IgZG9jdW1lbnRzIHRoYXQgdXNlIFdlYkNvcmUncyBsYXlvdXQgc3lzdGVtLCB0cmVhdCBm
aXJzdCBsYXlvdXQgYXMgdGhlIGhhbGYtd2F5IHBvaW50LgogICAgIC8vIEZJWE1FOiBUaGUgaGFz
SFRNTFZpZXcgZnVuY3Rpb24gaXMgYSBzb3J0IG9mIHJvdW5kYWJvdXQgd2F5IG9mIGFza2luZyAi
ZG8geW91IHVzZSBXZWJDb3JlJ3MgbGF5b3V0IHN5c3RlbSIuCi0gICAgYm9vbCB1c2VDbGFtcGVk
TWF4UHJvZ3Jlc3MgPSBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS0+bG9hZGVyKCktPmNsaWVu
dCgpLT5oYXNIVE1MVmlldygpCi0gICAgICAgICYmICFtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFt
ZS0+bG9hZGVyKCktPmZpcnN0TGF5b3V0RG9uZSgpOworICAgIGJvb2wgdXNlQ2xhbXBlZE1heFBy
b2dyZXNzID0gbG9hZGVyLT5jbGllbnQoKS0+aGFzSFRNTFZpZXcoKQorICAgICAgICAmJiAhbG9h
ZGVyLT5maXJzdExheW91dERvbmUoKTsKICAgICBkb3VibGUgbWF4UHJvZ3Jlc3NWYWx1ZSA9IHVz
ZUNsYW1wZWRNYXhQcm9ncmVzcyA/IDAuNSA6IGZpbmFsUHJvZ3Jlc3NWYWx1ZTsKICAgICBpbmNy
ZW1lbnQgPSAobWF4UHJvZ3Jlc3NWYWx1ZSAtIG1fcHJvZ3Jlc3NWYWx1ZSkgKiBwZXJjZW50T2ZS
ZW1haW5pbmdCeXRlczsKICAgICBtX3Byb2dyZXNzVmFsdWUgKz0gaW5jcmVtZW50OwpAQCAtMjIx
LDE0ICsyMjQsMTQgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciosIGkKICAgICAgICAgICAgIGlmICht
X3Byb2dyZXNzVmFsdWUgPT0gMSkKICAgICAgICAgICAgICAgICBtX2ZpbmFsUHJvZ3Jlc3NDaGFu
Z2VkU2VudCA9IHRydWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1fb3JpZ2luYXRpbmdQ
cm9ncmVzc0ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnBvc3RQcm9ncmVzc0VzdGltYXRlQ2hh
bmdlZE5vdGlmaWNhdGlvbigpOworICAgICAgICAgICAgbG9hZGVyLT5jbGllbnQoKS0+cG9zdFBy
b2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKCk7CiAKICAgICAgICAgICAgIG1fbGFz
dE5vdGlmaWVkUHJvZ3Jlc3NWYWx1ZSA9IG1fcHJvZ3Jlc3NWYWx1ZTsKICAgICAgICAgICAgIG1f
bGFzdE5vdGlmaWVkUHJvZ3Jlc3NUaW1lID0gbm93OwogICAgICAgICB9CiAgICAgfQogICAgIAot
ICAgIG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZENo
YW5nZUVzdGltYXRlZFByb2dyZXNzKCk7CisgICAgbG9hZGVyLT5jbGllbnQoKS0+ZGlkQ2hhbmdl
RXN0aW1hdGVkUHJvZ3Jlc3MoKTsKIH0KIAogdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmNvbXBsZXRl
UHJvZ3Jlc3ModW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZGJhYTVhMi4uY2M1NWM5NyAx
MDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMTAtMDcgIEplZHJ6ZWogTm93YWNraSAgPGplZHJ6ZWou
bm93YWNraUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUVdlYlZpZXcgY3Jhc2ggZml4LgorCisgICAgICAgIFRoZSBRV2ViVmlldyBz
aG91bGQgbm90IGNyYXNoIGlmIHRoZSBzdG9wKCkgbWV0aG9kIGlzIGNhbGxlZCBmcm9tCisgICAg
ICAgIGEgZnVuY3Rpb24gdHJpZ2dlcmVkIGJ5IHRoZSBsb2FkUHJvZ3Jlc3Mgc2lnbmFsLgorCisg
ICAgICAgIFR3byBudWxsIHBvaW50ZXIgY2hlY2tzIHdlcmUgYWRkZWQgaW4gdGhlIFByb2dyZXNz
VHJhY2tlciBjbGFzcy4KKworICAgICAgICBOZXcgYXV0b3Rlc3Qgd2FzIGNyZWF0ZWQuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5NDI1CisKKyAg
ICAgICAgKiB0ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcuY3BwOgorICAgICAgICAoV2ViVmll
d0NyYXNoVGVzdDo6V2ViVmlld0NyYXNoVGVzdCk6CisgICAgICAgIChXZWJWaWV3Q3Jhc2hUZXN0
Ojpsb2FkaW5nKToKKyAgICAgICAgKHRzdF9RV2ViVmlldzo6Y3Jhc2hUZXN0cyk6CisKIDIwMDkt
MTAtMDUgIEdpcmlzaCBSYW1ha3Jpc2huYW4gIDxnaXJpc2hAZm9yd2FyZGJpYXMuaW4+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQv
dGVzdHMvcXdlYnZpZXcvZGF0YS9mcmFtZV9hLmh0bWwgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnZp
ZXcvZGF0YS9mcmFtZV9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OWZmNjhmMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy9kYXRh
L2ZyYW1lX2EuaHRtbApAQCAtMCwwICsxLDIgQEAKKzxhIGhyZWY9Imh0dHA6Ly9nb29nbGUuY29t
IiB0YXJnZXQ9ImZyYW1lX2IiPjxpbWcgc3JjPSIiIHdpZHRoPTEwMCBoZWlnaHQ9MTAwIGFsdD0i
R29vZ2xlIj48L2E+Cis8YSBocmVmPSJodHRwOi8veWFob28uY29tIiB0YXJnZXQ9ImZyYW1lX2Ii
PjxpbWcgc3JjPSIiIHdpZHRoPTEwMCBoZWlnaHQ9MTAwIGFsdD0iWWFob28iPjwvYT4KZGlmZiAt
LWdpdCBhL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy9kYXRhL2luZGV4Lmh0bWwgYi9XZWJLaXQv
cXQvdGVzdHMvcXdlYnZpZXcvZGF0YS9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmM1M2FkMDkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvdGVzdHMv
cXdlYnZpZXcvZGF0YS9pbmRleC5odG1sCkBAIC0wLDAgKzEsNCBAQAorPGZyYW1lc2V0IGNvbHM9
IjI1JSw3NSUiPgorICAgPGZyYW1lIHNyYz0iZnJhbWVfYS5odG1sIiBuYW1lPSJmcmFtZV9hIj4K
KyAgIDxmcmFtZSBzcmM9ImZyYW1lX2IuaHRtbCIgbmFtZT0iZnJhbWVfYiI+Cis8L2ZyYW1lc2V0
PgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3F3ZWJ2aWV3LnBybyBiL1dl
YktpdC9xdC90ZXN0cy9xd2Vidmlldy9xd2Vidmlldy5wcm8KaW5kZXggZDlkMTIyYy4uZjJiYjNi
OSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3F3ZWJ2aWV3LnBybworKysg
Yi9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvcXdlYnZpZXcucHJvCkBAIC00LDUgKzQsNiBAQCBp
bmNsdWRlKC4uLy4uLy4uLy4uL1dlYktpdC5wcmkpCiBTT1VSQ0VTICArPSB0c3RfcXdlYnZpZXcu
Y3BwCiBRVCArPSB0ZXN0bGliIG5ldHdvcmsKIFFNQUtFX1JQQVRIRElSID0gJCRPVVRQVVRfRElS
L2xpYiAkJFFNQUtFX1JQQVRIRElSCitSRVNPVVJDRVMgICs9IHRzdF9xd2Vidmlldy5xcmMKIAog
c3ltYmlhbjpUQVJHRVQuVUlEMyA9IDB4QTAwMEU1M0YKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90
ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcuY3BwIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3
L3RzdF9xd2Vidmlldy5jcHAKaW5kZXggMDFkMGU5Mi4uMGI4MmYwNSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHAKQEAgLTE5LDYgKzE5LDcgQEAKICovCiAKICNp
bmNsdWRlIDxxdGVzdC5oPgorI2luY2x1ZGUgIi4uL3V0aWwuaCIKIAogI2luY2x1ZGUgPHFwYWlu
dGVyLmg+CiAjaW5jbHVkZSA8cXdlYnZpZXcuaD4KQEAgLTQyLDYgKzQzLDcgQEAgcHJpdmF0ZSBz
bG90czoKICAgICB2b2lkIGd1ZXNzVXJsRnJvbVN0cmluZ19kYXRhKCk7CiAgICAgdm9pZCBndWVz
c1VybEZyb21TdHJpbmcoKTsKICAgICB2b2lkIGdldFdlYktpdFZlcnNpb24oKTsKKyAgICB2b2lk
IGNyYXNoVGVzdHMoKTsKIH07CiAKIC8vIFRoaXMgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBm
aXJzdCB0ZXN0IGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLgpAQCAtMTY3LDYgKzE2OSw0NyBAQCB2b2lk
IHRzdF9RV2ViVmlldzo6Z2V0V2ViS2l0VmVyc2lvbigpCiAgICAgUVZFUklGWShxV2ViS2l0VmVy
c2lvbigpLnRvRG91YmxlKCkgPiAwKTsKIH0KIAorCisvLyBDbGFzcyB1c2VkIGluIGNyYXNoVGVz
dHMKK2NsYXNzIFdlYlZpZXdDcmFzaFRlc3QgOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpF
Q1QKKyAgICBRV2ViVmlldyogbV92aWV3OworcHVibGljOgorICAgIGJvb2wgbV9leGVjdXRlZDsK
KworCisgICAgV2ViVmlld0NyYXNoVGVzdChRV2ViVmlldyogdmlldykKKyAgICAgIDogbV92aWV3
KHZpZXcpCisgICAgICAsIG1fZXhlY3V0ZWQoZmFsc2UpCisgICAgeworICAgICAgICB2aWV3LT5j
b25uZWN0KHZpZXcsIFNJR05BTChsb2FkUHJvZ3Jlc3MoaW50KSksIHRoaXMsIFNMT1QobG9hZGlu
ZyhpbnQpKSk7CisgICAgfQorCitwcml2YXRlIHNsb3RzOgorICAgIHZvaWQgbG9hZGluZyhpbnQg
cHJvZ3Jlc3MpCisgICAgeworICAgICAgICBpZiAocHJvZ3Jlc3MgPj0gMjAgJiYgcHJvZ3Jlc3Mg
PCA5MCkgeworICAgICAgICAgICAgUVZFUklGWSghbV9leGVjdXRlZCk7CisgICAgICAgICAgICBt
X3ZpZXctPnN0b3AoKTsKKyAgICAgICAgICAgIG1fZXhlY3V0ZWQgPSB0cnVlOworICAgICAgICB9
CisgICAgfQorfTsKKworCisvLyBTaG91bGQgbm90IGNyYXNoLgordm9pZCB0c3RfUVdlYlZpZXc6
OmNyYXNoVGVzdHMoKQoreworICAgIC8vIFRlc3QgaWYgbG9hZGluZyBjYW4gYmUgc3RvcHBlZCBp
biBsb2FkUHJvZ3Jlc3MgaGFuZGxlciB3aXRob3V0IGNyYXNoLgorICAgIC8vIFRlc3QgcGFnZSBz
aG91bGQgaGF2ZSBmcmFtZXMuCisgICAgUVdlYlZpZXcgdmlldzsKKyAgICBXZWJWaWV3Q3Jhc2hU
ZXN0IHRlc3Rlcigmdmlldyk7CisgICAgUVVybCB1cmwoInFyYzovLy9kYXRhL2luZGV4Lmh0bWwi
KTsKKyAgICB2aWV3LmxvYWQodXJsKTsKKyAgICBRVFJZX1ZFUklGWSh0ZXN0ZXIubV9leGVjdXRl
ZCk7IC8vIElmIGZhaWwgaXQgbWVhbnMgdGhhdCB0aGUgdGVzdCB3YXNuJ3QgZXhlY3V0ZWQuCit9
CisKKwogUVRFU1RfTUFJTih0c3RfUVdlYlZpZXcpCiAjaW5jbHVkZSAidHN0X3F3ZWJ2aWV3Lm1v
YyIKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5x
cmMgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LnFyYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGUzNGE5Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5xcmMKQEAgLTAsMCArMSw3IEBACis8
IURPQ1RZUEUgUkNDPjxSQ0MgdmVyc2lvbj0iMS4wIj4KKzxxcmVzb3VyY2U+CisgICAgPGZpbGU+
ZGF0YS9pbmRleC5odG1sPC9maWxlPgorICAgIDxmaWxlPmRhdGEvZnJhbWVfYS5odG1sPC9maWxl
PgorPC9xcmVzb3VyY2U+Cis8L1JDQz4KKwo=
</data>
<flag name="review"
          id="22339"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42088</attachid>
            <date>2009-10-29 03:25:38 -0700</date>
            <delta_ts>2009-10-29 04:59:05 -0700</delta_ts>
            <desc>patch v3 (Alternative)</desc>
            <filename>progress.diff</filename>
            <type>text/plain</type>
            <size>7695</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTllYmU0YS4uYzFmYWU4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0xMC0wNyAgSmVkcnplaiBOb3dh
Y2tpICA8amVkcnplai5ub3dhY2tpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBRV2ViVmlldyBjcmFzaCBmaXguCisKKyAgICAgICAg
VGhlIFFXZWJWaWV3IHNob3VsZCBub3QgY3Jhc2ggaWYgdGhlIHN0b3AoKSBtZXRob2QgaXMgY2Fs
bGVkIGZyb20KKyAgICAgICAgYSBmdW5jdGlvbiB0cmlnZ2VyZWQgYnkgdGhlIGxvYWRQcm9ncmVz
cyBzaWduYWwuCisKKyAgICAgICAgVHdvIG51bGwgcG9pbnRlciBjaGVja3Mgd2VyZSBhZGRlZCBp
biB0aGUgUHJvZ3Jlc3NUcmFja2VyIGNsYXNzLgorCisgICAgICAgIE5ldyBhdXRvdGVzdCB3YXMg
Y3JlYXRlZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjk0MjUKKworICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyk6CisKIDIwMDkt
MTAtMDYgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NU
cmFja2VyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggZTY4
MmI5Yi4uMDJjZmI3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2Vy
LmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCkBAIC0xNzcsNyAr
MTc3LDkgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciosIGkKICAgICBpZiAoIWl0ZW0pCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS0+bG9hZGVyKCkt
PmNsaWVudCgpLT53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKTsKKyAgICBSZWZQdHI8RnJh
bWU+IGZyYW1lID0gbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWU7CisKKyAgICBmcmFtZS0+bG9h
ZGVyKCktPmNsaWVudCgpLT53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKTsKICAgICAKICAg
ICB1bnNpZ25lZCBieXRlc1JlY2VpdmVkID0gbGVuZ3RoOwogICAgIGRvdWJsZSBpbmNyZW1lbnQs
IHBlcmNlbnRPZlJlbWFpbmluZ0J5dGVzOwpAQCAtMTg5LDcgKzE5MSw3IEBAIHZvaWQgUHJvZ3Jl
c3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IGNoYXIqLCBpCiAgICAgICAgIGl0ZW0tPmVzdGltYXRlZExlbmd0aCA9IGl0ZW0tPmJ5dGVz
UmVjZWl2ZWQgKiAyOwogICAgIH0KICAgICAKLSAgICBpbnQgbnVtUGVuZGluZ09yTG9hZGluZ1Jl
cXVlc3RzID0gbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUtPmxvYWRlcigpLT5udW1QZW5kaW5n
T3JMb2FkaW5nUmVxdWVzdHModHJ1ZSk7CisgICAgaW50IG51bVBlbmRpbmdPckxvYWRpbmdSZXF1
ZXN0cyA9IGZyYW1lLT5sb2FkZXIoKS0+bnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzKHRydWUp
OwogICAgIGVzdGltYXRlZEJ5dGVzRm9yUGVuZGluZ1JlcXVlc3RzID0gcHJvZ3Jlc3NJdGVtRGVm
YXVsdEVzdGltYXRlZExlbmd0aCAqIG51bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0czsKICAgICBy
ZW1haW5pbmdCeXRlcyA9ICgobV90b3RhbFBhZ2VBbmRSZXNvdXJjZUJ5dGVzVG9Mb2FkICsgZXN0
aW1hdGVkQnl0ZXNGb3JQZW5kaW5nUmVxdWVzdHMpIC0gbV90b3RhbEJ5dGVzUmVjZWl2ZWQpOwog
ICAgIGlmIChyZW1haW5pbmdCeXRlcyA+IDApICAvLyBQcmV2ZW50IGRpdmlkZSBieSAwLgpAQCAt
MTk5LDggKzIwMSw4IEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqLCBpCiAgICAgCiAgICAgLy8gRm9y
IGRvY3VtZW50cyB0aGF0IHVzZSBXZWJDb3JlJ3MgbGF5b3V0IHN5c3RlbSwgdHJlYXQgZmlyc3Qg
bGF5b3V0IGFzIHRoZSBoYWxmLXdheSBwb2ludC4KICAgICAvLyBGSVhNRTogVGhlIGhhc0hUTUxW
aWV3IGZ1bmN0aW9uIGlzIGEgc29ydCBvZiByb3VuZGFib3V0IHdheSBvZiBhc2tpbmcgImRvIHlv
dSB1c2UgV2ViQ29yZSdzIGxheW91dCBzeXN0ZW0iLgotICAgIGJvb2wgdXNlQ2xhbXBlZE1heFBy
b2dyZXNzID0gbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+
aGFzSFRNTFZpZXcoKQotICAgICAgICAmJiAhbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUtPmxv
YWRlcigpLT5maXJzdExheW91dERvbmUoKTsKKyAgICBib29sIHVzZUNsYW1wZWRNYXhQcm9ncmVz
cyA9IGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmhhc0hUTUxWaWV3KCkKKyAgICAgICAgJiYg
IWZyYW1lLT5sb2FkZXIoKS0+Zmlyc3RMYXlvdXREb25lKCk7CiAgICAgZG91YmxlIG1heFByb2dy
ZXNzVmFsdWUgPSB1c2VDbGFtcGVkTWF4UHJvZ3Jlc3MgPyAwLjUgOiBmaW5hbFByb2dyZXNzVmFs
dWU7CiAgICAgaW5jcmVtZW50ID0gKG1heFByb2dyZXNzVmFsdWUgLSBtX3Byb2dyZXNzVmFsdWUp
ICogcGVyY2VudE9mUmVtYWluaW5nQnl0ZXM7CiAgICAgbV9wcm9ncmVzc1ZhbHVlICs9IGluY3Jl
bWVudDsKQEAgLTIyMSwxNCArMjIzLDE0IEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1l
bnRQcm9ncmVzcyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqLCBpCiAgICAg
ICAgICAgICBpZiAobV9wcm9ncmVzc1ZhbHVlID09IDEpCiAgICAgICAgICAgICAgICAgbV9maW5h
bFByb2dyZXNzQ2hhbmdlZFNlbnQgPSB0cnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBt
X29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5wb3N0UHJvZ3Jl
c3NFc3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24oKTsKKyAgICAgICAgICAgIGZyYW1lLT5sb2Fk
ZXIoKS0+Y2xpZW50KCktPnBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigp
OwogCiAgICAgICAgICAgICBtX2xhc3ROb3RpZmllZFByb2dyZXNzVmFsdWUgPSBtX3Byb2dyZXNz
VmFsdWU7CiAgICAgICAgICAgICBtX2xhc3ROb3RpZmllZFByb2dyZXNzVGltZSA9IG5vdzsKICAg
ICAgICAgfQogICAgIH0KICAgICAKLSAgICBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS0+bG9h
ZGVyKCktPmNsaWVudCgpLT5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpOworICAgIGZyYW1l
LT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7CiB9CiAK
IHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjpjb21wbGV0ZVByb2dyZXNzKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hh
bmdlTG9nCmluZGV4IGRiYWE1YTIuLmNjNTVjOTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDA5LTEw
LTA3ICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFFXZWJWaWV3IGNyYXNo
IGZpeC4KKworICAgICAgICBUaGUgUVdlYlZpZXcgc2hvdWxkIG5vdCBjcmFzaCBpZiB0aGUgc3Rv
cCgpIG1ldGhvZCBpcyBjYWxsZWQgZnJvbQorICAgICAgICBhIGZ1bmN0aW9uIHRyaWdnZXJlZCBi
eSB0aGUgbG9hZFByb2dyZXNzIHNpZ25hbC4KKworICAgICAgICBUd28gbnVsbCBwb2ludGVyIGNo
ZWNrcyB3ZXJlIGFkZGVkIGluIHRoZSBQcm9ncmVzc1RyYWNrZXIgY2xhc3MuCisKKyAgICAgICAg
TmV3IGF1dG90ZXN0IHdhcyBjcmVhdGVkLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yOTQyNQorCisgICAgICAgICogdGVzdHMvcXdlYnZpZXcvdHN0
X3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXdDcmFzaFRlc3Q6OldlYlZpZXdDcmFzaFRl
c3QpOgorICAgICAgICAoV2ViVmlld0NyYXNoVGVzdDo6bG9hZGluZyk6CisgICAgICAgICh0c3Rf
UVdlYlZpZXc6OmNyYXNoVGVzdHMpOgorCiAyMDA5LTEwLTA1ICBHaXJpc2ggUmFtYWtyaXNobmFu
ICA8Z2lyaXNoQGZvcndhcmRiaWFzLmluPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhh
dXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L2RhdGEvZnJhbWVf
YS5odG1sIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L2RhdGEvZnJhbWVfYS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZjY4ZjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvZGF0YS9mcmFtZV9hLmh0bWwKQEAgLTAsMCArMSwy
IEBACis8YSBocmVmPSJodHRwOi8vZ29vZ2xlLmNvbSIgdGFyZ2V0PSJmcmFtZV9iIj48aW1nIHNy
Yz0iIiB3aWR0aD0xMDAgaGVpZ2h0PTEwMCBhbHQ9Ikdvb2dsZSI+PC9hPgorPGEgaHJlZj0iaHR0
cDovL3lhaG9vLmNvbSIgdGFyZ2V0PSJmcmFtZV9iIj48aW1nIHNyYz0iIiB3aWR0aD0xMDAgaGVp
Z2h0PTEwMCBhbHQ9IllhaG9vIj48L2E+CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvdGVzdHMvcXdl
YnZpZXcvZGF0YS9pbmRleC5odG1sIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L2RhdGEvaW5k
ZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTNhZDA5Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L2RhdGEvaW5kZXguaHRtbApA
QCAtMCwwICsxLDQgQEAKKzxmcmFtZXNldCBjb2xzPSIyNSUsNzUlIj4KKyAgIDxmcmFtZSBzcmM9
ImZyYW1lX2EuaHRtbCIgbmFtZT0iZnJhbWVfYSI+CisgICA8ZnJhbWUgc3JjPSJmcmFtZV9iLmh0
bWwiIG5hbWU9ImZyYW1lX2IiPgorPC9mcmFtZXNldD4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90
ZXN0cy9xd2Vidmlldy9xd2Vidmlldy5wcm8gYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvcXdl
YnZpZXcucHJvCmluZGV4IGQ5ZDEyMmMuLmYyYmIzYjkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC90
ZXN0cy9xd2Vidmlldy9xd2Vidmlldy5wcm8KKysrIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3
L3F3ZWJ2aWV3LnBybwpAQCAtNCw1ICs0LDYgQEAgaW5jbHVkZSguLi8uLi8uLi8uLi9XZWJLaXQu
cHJpKQogU09VUkNFUyAgKz0gdHN0X3F3ZWJ2aWV3LmNwcAogUVQgKz0gdGVzdGxpYiBuZXR3b3Jr
CiBRTUFLRV9SUEFUSERJUiA9ICQkT1VUUFVUX0RJUi9saWIgJCRRTUFLRV9SUEFUSERJUgorUkVT
T1VSQ0VTICArPSB0c3RfcXdlYnZpZXcucXJjCiAKIHN5bWJpYW46VEFSR0VULlVJRDMgPSAweEEw
MDBFNTNGCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3
LmNwcCBiL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcuY3BwCmluZGV4IDAx
ZDBlOTIuLjBiODJmMDUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy90c3Rf
cXdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcu
Y3BwCkBAIC0xOSw2ICsxOSw3IEBACiAqLwogCiAjaW5jbHVkZSA8cXRlc3QuaD4KKyNpbmNsdWRl
ICIuLi91dGlsLmgiCiAKICNpbmNsdWRlIDxxcGFpbnRlci5oPgogI2luY2x1ZGUgPHF3ZWJ2aWV3
Lmg+CkBAIC00Miw2ICs0Myw3IEBAIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBndWVzc1VybEZy
b21TdHJpbmdfZGF0YSgpOwogICAgIHZvaWQgZ3Vlc3NVcmxGcm9tU3RyaW5nKCk7CiAgICAgdm9p
ZCBnZXRXZWJLaXRWZXJzaW9uKCk7CisgICAgdm9pZCBjcmFzaFRlc3RzKCk7CiB9OwogCiAvLyBU
aGlzIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBmdW5jdGlvbiBpcyBleGVj
dXRlZC4KQEAgLTE2Nyw2ICsxNjksNDcgQEAgdm9pZCB0c3RfUVdlYlZpZXc6OmdldFdlYktpdFZl
cnNpb24oKQogICAgIFFWRVJJRlkocVdlYktpdFZlcnNpb24oKS50b0RvdWJsZSgpID4gMCk7CiB9
CiAKKworLy8gQ2xhc3MgdXNlZCBpbiBjcmFzaFRlc3RzCitjbGFzcyBXZWJWaWV3Q3Jhc2hUZXN0
IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisgICAgUVdlYlZpZXcqIG1fdmlldzsK
K3B1YmxpYzoKKyAgICBib29sIG1fZXhlY3V0ZWQ7CisKKworICAgIFdlYlZpZXdDcmFzaFRlc3Qo
UVdlYlZpZXcqIHZpZXcpCisgICAgICA6IG1fdmlldyh2aWV3KQorICAgICAgLCBtX2V4ZWN1dGVk
KGZhbHNlKQorICAgIHsKKyAgICAgICAgdmlldy0+Y29ubmVjdCh2aWV3LCBTSUdOQUwobG9hZFBy
b2dyZXNzKGludCkpLCB0aGlzLCBTTE9UKGxvYWRpbmcoaW50KSkpOworICAgIH0KKworcHJpdmF0
ZSBzbG90czoKKyAgICB2b2lkIGxvYWRpbmcoaW50IHByb2dyZXNzKQorICAgIHsKKyAgICAgICAg
aWYgKHByb2dyZXNzID49IDIwICYmIHByb2dyZXNzIDwgOTApIHsKKyAgICAgICAgICAgIFFWRVJJ
RlkoIW1fZXhlY3V0ZWQpOworICAgICAgICAgICAgbV92aWV3LT5zdG9wKCk7CisgICAgICAgICAg
ICBtX2V4ZWN1dGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KK307CisKKworLy8gU2hvdWxk
IG5vdCBjcmFzaC4KK3ZvaWQgdHN0X1FXZWJWaWV3OjpjcmFzaFRlc3RzKCkKK3sKKyAgICAvLyBU
ZXN0IGlmIGxvYWRpbmcgY2FuIGJlIHN0b3BwZWQgaW4gbG9hZFByb2dyZXNzIGhhbmRsZXIgd2l0
aG91dCBjcmFzaC4KKyAgICAvLyBUZXN0IHBhZ2Ugc2hvdWxkIGhhdmUgZnJhbWVzLgorICAgIFFX
ZWJWaWV3IHZpZXc7CisgICAgV2ViVmlld0NyYXNoVGVzdCB0ZXN0ZXIoJnZpZXcpOworICAgIFFV
cmwgdXJsKCJxcmM6Ly8vZGF0YS9pbmRleC5odG1sIik7CisgICAgdmlldy5sb2FkKHVybCk7Cisg
ICAgUVRSWV9WRVJJRlkodGVzdGVyLm1fZXhlY3V0ZWQpOyAvLyBJZiBmYWlsIGl0IG1lYW5zIHRo
YXQgdGhlIHRlc3Qgd2Fzbid0IGV4ZWN1dGVkLgorfQorCisKIFFURVNUX01BSU4odHN0X1FXZWJW
aWV3KQogI2luY2x1ZGUgInRzdF9xd2Vidmlldy5tb2MiCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9x
dC90ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcucXJjIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2
aWV3L3RzdF9xd2Vidmlldy5xcmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZWRlMzRhOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy90c3Rf
cXdlYnZpZXcucXJjCkBAIC0wLDAgKzEsNyBAQAorPCFET0NUWVBFIFJDQz48UkNDIHZlcnNpb249
IjEuMCI+Cis8cXJlc291cmNlPgorICAgIDxmaWxlPmRhdGEvaW5kZXguaHRtbDwvZmlsZT4KKyAg
ICA8ZmlsZT5kYXRhL2ZyYW1lX2EuaHRtbDwvZmlsZT4KKzwvcXJlc291cmNlPgorPC9SQ0M+CisK
</data>
<flag name="review"
          id="23589"
          type_id="1"
          status="-"
          setter="jedrzej.nowacki"
    />
    <flag name="commit-queue"
          id="23590"
          type_id="3"
          status="-"
          setter="jedrzej.nowacki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42091</attachid>
            <date>2009-10-29 04:59:05 -0700</date>
            <delta_ts>2009-11-02 01:37:02 -0800</delta_ts>
            <desc>patch v4</desc>
            <filename>progress.diff</filename>
            <type>text/plain</type>
            <size>7723</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTllYmU0YS4uMWJkMmJhMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0xMC0wNyAgSmVkcnplaiBOb3dh
Y2tpICA8amVkcnplai5ub3dhY2tpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBRV2ViVmlldyBjcmFzaCBmaXguCisKKyAgICAgICAg
VGhlIFFXZWJWaWV3IHNob3VsZCBub3QgY3Jhc2ggaWYgdGhlIHN0b3AoKSBtZXRob2QgaXMgY2Fs
bGVkIGZyb20KKyAgICAgICAgYSBmdW5jdGlvbiB0cmlnZ2VyZWQgYnkgdGhlIGxvYWRQcm9ncmVz
cyBzaWduYWwuCisKKyAgICAgICAgQSBudWxsIHBvaW50ZXIgcHJvdGVjdGlvbiB3YXMgYWRkZWQg
aW4gdGhlIFByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3MuCisKKyAgICAgICAgTmV3
IGF1dG90ZXN0IHdhcyBjcmVhdGVkLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yOTQyNQorCisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dy
ZXNzKToKKwogMjAwOS0xMC0wNiAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2Vy
LmNwcAppbmRleCBlNjgyYjliLi4wMmNmYjdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9Q
cm9ncmVzc1RyYWNrZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5j
cHAKQEAgLTE3Nyw3ICsxNzcsOSBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJv
Z3Jlc3ModW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiwgaQogICAgIGlmICgh
aXRlbSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fb3JpZ2luYXRpbmdQcm9ncmVzc0Zy
YW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpOwor
ICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZTsKKwor
ICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVz
cygpOwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVzUmVjZWl2ZWQgPSBsZW5ndGg7CiAgICAgZG91
YmxlIGluY3JlbWVudCwgcGVyY2VudE9mUmVtYWluaW5nQnl0ZXM7CkBAIC0xODksNyArMTkxLDcg
QEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgY2hhciosIGkKICAgICAgICAgaXRlbS0+ZXN0aW1hdGVkTGVuZ3Ro
ID0gaXRlbS0+Ynl0ZXNSZWNlaXZlZCAqIDI7CiAgICAgfQogICAgIAotICAgIGludCBudW1QZW5k
aW5nT3JMb2FkaW5nUmVxdWVzdHMgPSBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS0+bG9hZGVy
KCktPm51bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0cyh0cnVlKTsKKyAgICBpbnQgbnVtUGVuZGlu
Z09yTG9hZGluZ1JlcXVlc3RzID0gZnJhbWUtPmxvYWRlcigpLT5udW1QZW5kaW5nT3JMb2FkaW5n
UmVxdWVzdHModHJ1ZSk7CiAgICAgZXN0aW1hdGVkQnl0ZXNGb3JQZW5kaW5nUmVxdWVzdHMgPSBw
cm9ncmVzc0l0ZW1EZWZhdWx0RXN0aW1hdGVkTGVuZ3RoICogbnVtUGVuZGluZ09yTG9hZGluZ1Jl
cXVlc3RzOwogICAgIHJlbWFpbmluZ0J5dGVzID0gKChtX3RvdGFsUGFnZUFuZFJlc291cmNlQnl0
ZXNUb0xvYWQgKyBlc3RpbWF0ZWRCeXRlc0ZvclBlbmRpbmdSZXF1ZXN0cykgLSBtX3RvdGFsQnl0
ZXNSZWNlaXZlZCk7CiAgICAgaWYgKHJlbWFpbmluZ0J5dGVzID4gMCkgIC8vIFByZXZlbnQgZGl2
aWRlIGJ5IDAuCkBAIC0xOTksOCArMjAxLDggQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmluY3Jl
bWVudFByb2dyZXNzKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciosIGkKICAg
ICAKICAgICAvLyBGb3IgZG9jdW1lbnRzIHRoYXQgdXNlIFdlYkNvcmUncyBsYXlvdXQgc3lzdGVt
LCB0cmVhdCBmaXJzdCBsYXlvdXQgYXMgdGhlIGhhbGYtd2F5IHBvaW50LgogICAgIC8vIEZJWE1F
OiBUaGUgaGFzSFRNTFZpZXcgZnVuY3Rpb24gaXMgYSBzb3J0IG9mIHJvdW5kYWJvdXQgd2F5IG9m
IGFza2luZyAiZG8geW91IHVzZSBXZWJDb3JlJ3MgbGF5b3V0IHN5c3RlbSIuCi0gICAgYm9vbCB1
c2VDbGFtcGVkTWF4UHJvZ3Jlc3MgPSBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS0+bG9hZGVy
KCktPmNsaWVudCgpLT5oYXNIVE1MVmlldygpCi0gICAgICAgICYmICFtX29yaWdpbmF0aW5nUHJv
Z3Jlc3NGcmFtZS0+bG9hZGVyKCktPmZpcnN0TGF5b3V0RG9uZSgpOworICAgIGJvb2wgdXNlQ2xh
bXBlZE1heFByb2dyZXNzID0gZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+aGFzSFRNTFZpZXco
KQorICAgICAgICAmJiAhZnJhbWUtPmxvYWRlcigpLT5maXJzdExheW91dERvbmUoKTsKICAgICBk
b3VibGUgbWF4UHJvZ3Jlc3NWYWx1ZSA9IHVzZUNsYW1wZWRNYXhQcm9ncmVzcyA/IDAuNSA6IGZp
bmFsUHJvZ3Jlc3NWYWx1ZTsKICAgICBpbmNyZW1lbnQgPSAobWF4UHJvZ3Jlc3NWYWx1ZSAtIG1f
cHJvZ3Jlc3NWYWx1ZSkgKiBwZXJjZW50T2ZSZW1haW5pbmdCeXRlczsKICAgICBtX3Byb2dyZXNz
VmFsdWUgKz0gaW5jcmVtZW50OwpAQCAtMjIxLDE0ICsyMjMsMTQgQEAgdm9pZCBQcm9ncmVzc1Ry
YWNrZXI6OmluY3JlbWVudFByb2dyZXNzKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
Y2hhciosIGkKICAgICAgICAgICAgIGlmIChtX3Byb2dyZXNzVmFsdWUgPT0gMSkKICAgICAgICAg
ICAgICAgICBtX2ZpbmFsUHJvZ3Jlc3NDaGFuZ2VkU2VudCA9IHRydWU7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50
KCktPnBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpOworICAgICAgICAg
ICAgZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+cG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2Vk
Tm90aWZpY2F0aW9uKCk7CiAKICAgICAgICAgICAgIG1fbGFzdE5vdGlmaWVkUHJvZ3Jlc3NWYWx1
ZSA9IG1fcHJvZ3Jlc3NWYWx1ZTsKICAgICAgICAgICAgIG1fbGFzdE5vdGlmaWVkUHJvZ3Jlc3NU
aW1lID0gbm93OwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIG1fb3JpZ2luYXRpbmdQcm9n
cmVzc0ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNz
KCk7CisgICAgZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkQ2hhbmdlRXN0aW1hdGVkUHJv
Z3Jlc3MoKTsKIH0KIAogdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmNvbXBsZXRlUHJvZ3Jlc3ModW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBi
L1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZGJhYTVhMi4uYzA3ODJjYyAxMDA2NDQKLS0tIGEv
V2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMDktMTAtMDcgIEplZHJ6ZWogTm93YWNraSAgPGplZHJ6ZWoubm93YWNraUBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UVdlYlZpZXcgY3Jhc2ggZml4LgorCisgICAgICAgIFRoZSBRV2ViVmlldyBzaG91bGQgbm90IGNy
YXNoIGlmIHRoZSBzdG9wKCkgbWV0aG9kIGlzIGNhbGxlZCBmcm9tCisgICAgICAgIGEgZnVuY3Rp
b24gdHJpZ2dlcmVkIGJ5IHRoZSBsb2FkUHJvZ3Jlc3Mgc2lnbmFsLgorCisgICAgICAgIEEgbnVs
bCBwb2ludGVyIHByb3RlY3Rpb24gd2FzIGFkZGVkIGluIHRoZSBQcm9ncmVzc1RyYWNrZXI6Omlu
Y3JlbWVudFByb2dyZXNzLgorCisgICAgICAgIE5ldyBhdXRvdGVzdCB3YXMgY3JlYXRlZC4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk0MjUKKwor
ICAgICAgICAqIHRlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHA6CisgICAgICAgIChXZWJW
aWV3Q3Jhc2hUZXN0OjpXZWJWaWV3Q3Jhc2hUZXN0KToKKyAgICAgICAgKFdlYlZpZXdDcmFzaFRl
c3Q6OmxvYWRpbmcpOgorICAgICAgICAodHN0X1FXZWJWaWV3OjpjcmFzaFRlc3RzKToKKwogMjAw
OS0xMC0wNSAgR2lyaXNoIFJhbWFrcmlzaG5hbiAgPGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYktpdC9x
dC90ZXN0cy9xd2Vidmlldy9kYXRhL2ZyYW1lX2EuaHRtbCBiL1dlYktpdC9xdC90ZXN0cy9xd2Vi
dmlldy9kYXRhL2ZyYW1lX2EuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45ZmY2OGYxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L2Rh
dGEvZnJhbWVfYS5odG1sCkBAIC0wLDAgKzEsMiBAQAorPGEgaHJlZj0iaHR0cDovL2dvb2dsZS5j
b20iIHRhcmdldD0iZnJhbWVfYiI+PGltZyBzcmM9IiIgd2lkdGg9MTAwIGhlaWdodD0xMDAgYWx0
PSJHb29nbGUiPjwvYT4KKzxhIGhyZWY9Imh0dHA6Ly95YWhvby5jb20iIHRhcmdldD0iZnJhbWVf
YiI+PGltZyBzcmM9IiIgd2lkdGg9MTAwIGhlaWdodD0xMDAgYWx0PSJZYWhvbyI+PC9hPgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L2RhdGEvaW5kZXguaHRtbCBiL1dlYktp
dC9xdC90ZXN0cy9xd2Vidmlldy9kYXRhL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYzUzYWQwOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC90ZXN0
cy9xd2Vidmlldy9kYXRhL2luZGV4Lmh0bWwKQEAgLTAsMCArMSw0IEBACis8ZnJhbWVzZXQgY29s
cz0iMjUlLDc1JSI+CisgICA8ZnJhbWUgc3JjPSJmcmFtZV9hLmh0bWwiIG5hbWU9ImZyYW1lX2Ei
PgorICAgPGZyYW1lIHNyYz0iZnJhbWVfYi5odG1sIiBuYW1lPSJmcmFtZV9iIj4KKzwvZnJhbWVz
ZXQ+CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvcXdlYnZpZXcucHJvIGIv
V2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3F3ZWJ2aWV3LnBybwppbmRleCBkOWQxMjJjLi5mMmJi
M2I5IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvcXdlYnZpZXcucHJvCisr
KyBiL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy9xd2Vidmlldy5wcm8KQEAgLTQsNSArNCw2IEBA
IGluY2x1ZGUoLi4vLi4vLi4vLi4vV2ViS2l0LnByaSkKIFNPVVJDRVMgICs9IHRzdF9xd2Vidmll
dy5jcHAKIFFUICs9IHRlc3RsaWIgbmV0d29yawogUU1BS0VfUlBBVEhESVIgPSAkJE9VVFBVVF9E
SVIvbGliICQkUU1BS0VfUlBBVEhESVIKK1JFU09VUkNFUyAgKz0gdHN0X3F3ZWJ2aWV3LnFyYwog
CiBzeW1iaWFuOlRBUkdFVC5VSUQzID0gMHhBMDAwRTUzRgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHAgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnZp
ZXcvdHN0X3F3ZWJ2aWV3LmNwcAppbmRleCAwMWQwZTkyLi4wYjgyZjA1IDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvcXQv
dGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LmNwcApAQCAtMTksNiArMTksNyBAQAogKi8KIAog
I2luY2x1ZGUgPHF0ZXN0Lmg+CisjaW5jbHVkZSAiLi4vdXRpbC5oIgogCiAjaW5jbHVkZSA8cXBh
aW50ZXIuaD4KICNpbmNsdWRlIDxxd2Vidmlldy5oPgpAQCAtNDIsNiArNDMsNyBAQCBwcml2YXRl
IHNsb3RzOgogICAgIHZvaWQgZ3Vlc3NVcmxGcm9tU3RyaW5nX2RhdGEoKTsKICAgICB2b2lkIGd1
ZXNzVXJsRnJvbVN0cmluZygpOwogICAgIHZvaWQgZ2V0V2ViS2l0VmVyc2lvbigpOworICAgIHZv
aWQgY3Jhc2hUZXN0cygpOwogfTsKIAogLy8gVGhpcyB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhl
IGZpcnN0IHRlc3QgZnVuY3Rpb24gaXMgZXhlY3V0ZWQuCkBAIC0xNjcsNiArMTY5LDQ3IEBAIHZv
aWQgdHN0X1FXZWJWaWV3OjpnZXRXZWJLaXRWZXJzaW9uKCkKICAgICBRVkVSSUZZKHFXZWJLaXRW
ZXJzaW9uKCkudG9Eb3VibGUoKSA+IDApOwogfQogCisKKy8vIENsYXNzIHVzZWQgaW4gY3Jhc2hU
ZXN0cworY2xhc3MgV2ViVmlld0NyYXNoVGVzdCA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09C
SkVDVAorICAgIFFXZWJWaWV3KiBtX3ZpZXc7CitwdWJsaWM6CisgICAgYm9vbCBtX2V4ZWN1dGVk
OworCisKKyAgICBXZWJWaWV3Q3Jhc2hUZXN0KFFXZWJWaWV3KiB2aWV3KQorICAgICAgOiBtX3Zp
ZXcodmlldykKKyAgICAgICwgbV9leGVjdXRlZChmYWxzZSkKKyAgICB7CisgICAgICAgIHZpZXct
PmNvbm5lY3QodmlldywgU0lHTkFMKGxvYWRQcm9ncmVzcyhpbnQpKSwgdGhpcywgU0xPVChsb2Fk
aW5nKGludCkpKTsKKyAgICB9CisKK3ByaXZhdGUgc2xvdHM6CisgICAgdm9pZCBsb2FkaW5nKGlu
dCBwcm9ncmVzcykKKyAgICB7CisgICAgICAgIGlmIChwcm9ncmVzcyA+PSAyMCAmJiBwcm9ncmVz
cyA8IDkwKSB7CisgICAgICAgICAgICBRVkVSSUZZKCFtX2V4ZWN1dGVkKTsKKyAgICAgICAgICAg
IG1fdmlldy0+c3RvcCgpOworICAgICAgICAgICAgbV9leGVjdXRlZCA9IHRydWU7CisgICAgICAg
IH0KKyAgICB9Cit9OworCisKKy8vIFNob3VsZCBub3QgY3Jhc2guCit2b2lkIHRzdF9RV2ViVmll
dzo6Y3Jhc2hUZXN0cygpCit7CisgICAgLy8gVGVzdCBpZiBsb2FkaW5nIGNhbiBiZSBzdG9wcGVk
IGluIGxvYWRQcm9ncmVzcyBoYW5kbGVyIHdpdGhvdXQgY3Jhc2guCisgICAgLy8gVGVzdCBwYWdl
IHNob3VsZCBoYXZlIGZyYW1lcy4KKyAgICBRV2ViVmlldyB2aWV3OworICAgIFdlYlZpZXdDcmFz
aFRlc3QgdGVzdGVyKCZ2aWV3KTsKKyAgICBRVXJsIHVybCgicXJjOi8vL2RhdGEvaW5kZXguaHRt
bCIpOworICAgIHZpZXcubG9hZCh1cmwpOworICAgIFFUUllfVkVSSUZZKHRlc3Rlci5tX2V4ZWN1
dGVkKTsgLy8gSWYgZmFpbCBpdCBtZWFucyB0aGF0IHRoZSB0ZXN0IHdhc24ndCBleGVjdXRlZC4K
K30KKworCiBRVEVTVF9NQUlOKHRzdF9RV2ViVmlldykKICNpbmNsdWRlICJ0c3RfcXdlYnZpZXcu
bW9jIgogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3
LnFyYyBiL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcucXJjCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZTM0YTkKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LnFyYwpAQCAtMCwwICsxLDcgQEAK
KzwhRE9DVFlQRSBSQ0M+PFJDQyB2ZXJzaW9uPSIxLjAiPgorPHFyZXNvdXJjZT4KKyAgICA8Zmls
ZT5kYXRhL2luZGV4Lmh0bWw8L2ZpbGU+CisgICAgPGZpbGU+ZGF0YS9mcmFtZV9hLmh0bWw8L2Zp
bGU+Cis8L3FyZXNvdXJjZT4KKzwvUkNDPgorCg==
</data>
<flag name="review"
          id="23593"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="23594"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42308</attachid>
            <date>2009-11-02 01:37:02 -0800</date>
            <delta_ts>2009-11-02 10:09:29 -0800</delta_ts>
            <desc>patch v5</desc>
            <filename>progress.diff</filename>
            <type>text/plain</type>
            <size>7736</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
M2YxZTVmMC4uYzE0ZTE2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0xMC0wNyAgSmVkcnplaiBOb3dh
Y2tpICA8amVkcnplai5ub3dhY2tpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBRV2ViVmlldyBjcmFzaCBmaXguCisKKyAgICAgICAg
VGhlIFFXZWJWaWV3IHNob3VsZCBub3QgY3Jhc2ggaWYgdGhlIHN0b3AoKSBtZXRob2QgaXMgY2Fs
bGVkIGZyb20KKyAgICAgICAgYSBmdW5jdGlvbiB0cmlnZ2VyZWQgYnkgdGhlIGxvYWRQcm9ncmVz
cyBzaWduYWwuCisKKyAgICAgICAgQSBudWxsIHBvaW50ZXIgcHJvdGVjdGlvbiB3YXMgYWRkZWQg
aW4gdGhlIFByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3MuCisKKyAgICAgICAgTmV3
IGF1dG90ZXN0IHdhcyBjcmVhdGVkLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yOTQyNQorCisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dy
ZXNzKToKKwogMjAwOS0xMS0wMSAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgTWFyayBSb3dlLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1Byb2dy
ZXNzVHJhY2tlci5jcHAKaW5kZXggZTY4MmI5Yi4uNmI2Y2UxYiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9Qcm9ncmVz
c1RyYWNrZXIuY3BwCkBAIC0xNzYsOCArMTc2LDEwIEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjpp
bmNyZW1lbnRQcm9ncmVzcyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqLCBp
CiAgICAgLy8gRklYTUU6IENhbiB0aGlzIGV2ZXIgaGFwcGVuPwogICAgIGlmICghaXRlbSkKICAg
ICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fb3JpZ2luYXRpbmdQ
cm9ncmVzc0ZyYW1lOwogICAgIAotICAgIG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLT5sb2Fk
ZXIoKS0+Y2xpZW50KCktPndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpOworICAgIGZyYW1l
LT5sb2FkZXIoKS0+Y2xpZW50KCktPndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpOwogICAg
IAogICAgIHVuc2lnbmVkIGJ5dGVzUmVjZWl2ZWQgPSBsZW5ndGg7CiAgICAgZG91YmxlIGluY3Jl
bWVudCwgcGVyY2VudE9mUmVtYWluaW5nQnl0ZXM7CkBAIC0xODksNyArMTkxLDcgQEAgdm9pZCBQ
cm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgY2hhciosIGkKICAgICAgICAgaXRlbS0+ZXN0aW1hdGVkTGVuZ3RoID0gaXRlbS0+
Ynl0ZXNSZWNlaXZlZCAqIDI7CiAgICAgfQogICAgIAotICAgIGludCBudW1QZW5kaW5nT3JMb2Fk
aW5nUmVxdWVzdHMgPSBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS0+bG9hZGVyKCktPm51bVBl
bmRpbmdPckxvYWRpbmdSZXF1ZXN0cyh0cnVlKTsKKyAgICBpbnQgbnVtUGVuZGluZ09yTG9hZGlu
Z1JlcXVlc3RzID0gZnJhbWUtPmxvYWRlcigpLT5udW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHMo
dHJ1ZSk7CiAgICAgZXN0aW1hdGVkQnl0ZXNGb3JQZW5kaW5nUmVxdWVzdHMgPSBwcm9ncmVzc0l0
ZW1EZWZhdWx0RXN0aW1hdGVkTGVuZ3RoICogbnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzOwog
ICAgIHJlbWFpbmluZ0J5dGVzID0gKChtX3RvdGFsUGFnZUFuZFJlc291cmNlQnl0ZXNUb0xvYWQg
KyBlc3RpbWF0ZWRCeXRlc0ZvclBlbmRpbmdSZXF1ZXN0cykgLSBtX3RvdGFsQnl0ZXNSZWNlaXZl
ZCk7CiAgICAgaWYgKHJlbWFpbmluZ0J5dGVzID4gMCkgIC8vIFByZXZlbnQgZGl2aWRlIGJ5IDAu
CkBAIC0xOTksOCArMjAxLDggQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dy
ZXNzKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciosIGkKICAgICAKICAgICAv
LyBGb3IgZG9jdW1lbnRzIHRoYXQgdXNlIFdlYkNvcmUncyBsYXlvdXQgc3lzdGVtLCB0cmVhdCBm
aXJzdCBsYXlvdXQgYXMgdGhlIGhhbGYtd2F5IHBvaW50LgogICAgIC8vIEZJWE1FOiBUaGUgaGFz
SFRNTFZpZXcgZnVuY3Rpb24gaXMgYSBzb3J0IG9mIHJvdW5kYWJvdXQgd2F5IG9mIGFza2luZyAi
ZG8geW91IHVzZSBXZWJDb3JlJ3MgbGF5b3V0IHN5c3RlbSIuCi0gICAgYm9vbCB1c2VDbGFtcGVk
TWF4UHJvZ3Jlc3MgPSBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS0+bG9hZGVyKCktPmNsaWVu
dCgpLT5oYXNIVE1MVmlldygpCi0gICAgICAgICYmICFtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFt
ZS0+bG9hZGVyKCktPmZpcnN0TGF5b3V0RG9uZSgpOworICAgIGJvb2wgdXNlQ2xhbXBlZE1heFBy
b2dyZXNzID0gZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+aGFzSFRNTFZpZXcoKQorICAgICAg
ICAmJiAhZnJhbWUtPmxvYWRlcigpLT5maXJzdExheW91dERvbmUoKTsKICAgICBkb3VibGUgbWF4
UHJvZ3Jlc3NWYWx1ZSA9IHVzZUNsYW1wZWRNYXhQcm9ncmVzcyA/IDAuNSA6IGZpbmFsUHJvZ3Jl
c3NWYWx1ZTsKICAgICBpbmNyZW1lbnQgPSAobWF4UHJvZ3Jlc3NWYWx1ZSAtIG1fcHJvZ3Jlc3NW
YWx1ZSkgKiBwZXJjZW50T2ZSZW1haW5pbmdCeXRlczsKICAgICBtX3Byb2dyZXNzVmFsdWUgKz0g
aW5jcmVtZW50OwpAQCAtMjIxLDE0ICsyMjMsMTQgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6Omlu
Y3JlbWVudFByb2dyZXNzKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciosIGkK
ICAgICAgICAgICAgIGlmIChtX3Byb2dyZXNzVmFsdWUgPT0gMSkKICAgICAgICAgICAgICAgICBt
X2ZpbmFsUHJvZ3Jlc3NDaGFuZ2VkU2VudCA9IHRydWU7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnBvc3RQ
cm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpOworICAgICAgICAgICAgZnJhbWUt
PmxvYWRlcigpLT5jbGllbnQoKS0+cG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0
aW9uKCk7CiAKICAgICAgICAgICAgIG1fbGFzdE5vdGlmaWVkUHJvZ3Jlc3NWYWx1ZSA9IG1fcHJv
Z3Jlc3NWYWx1ZTsKICAgICAgICAgICAgIG1fbGFzdE5vdGlmaWVkUHJvZ3Jlc3NUaW1lID0gbm93
OwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1l
LT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7CisgICAg
ZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKTsK
IH0KIAogdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmNvbXBsZXRlUHJvZ3Jlc3ModW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggODAxZjQzOC4uNmFhZjZjNiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0
L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIw
MDktMTAtMDcgIEplZHJ6ZWogTm93YWNraSAgPGplZHJ6ZWoubm93YWNraUBub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUVdlYlZpZXcg
Y3Jhc2ggZml4LgorCisgICAgICAgIFRoZSBRV2ViVmlldyBzaG91bGQgbm90IGNyYXNoIGlmIHRo
ZSBzdG9wKCkgbWV0aG9kIGlzIGNhbGxlZCBmcm9tCisgICAgICAgIGEgZnVuY3Rpb24gdHJpZ2dl
cmVkIGJ5IHRoZSBsb2FkUHJvZ3Jlc3Mgc2lnbmFsLgorCisgICAgICAgIEEgbnVsbCBwb2ludGVy
IHByb3RlY3Rpb24gd2FzIGFkZGVkIGluIHRoZSBQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFBy
b2dyZXNzLgorCisgICAgICAgIE5ldyBhdXRvdGVzdCB3YXMgY3JlYXRlZC4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk0MjUKKworICAgICAgICAq
IHRlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Q3Jhc2hU
ZXN0OjpXZWJWaWV3Q3Jhc2hUZXN0KToKKyAgICAgICAgKFdlYlZpZXdDcmFzaFRlc3Q6OmxvYWRp
bmcpOgorICAgICAgICAodHN0X1FXZWJWaWV3OjpjcmFzaFRlc3RzKToKKwogMjAwOS0xMS0wMSAg
TGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvdGVzdHMvcXdlYnZp
ZXcvZGF0YS9mcmFtZV9hLmh0bWwgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvZGF0YS9mcmFt
ZV9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZmNjhmMQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy9kYXRhL2ZyYW1lX2EuaHRt
bApAQCAtMCwwICsxLDIgQEAKKzxhIGhyZWY9Imh0dHA6Ly9nb29nbGUuY29tIiB0YXJnZXQ9ImZy
YW1lX2IiPjxpbWcgc3JjPSIiIHdpZHRoPTEwMCBoZWlnaHQ9MTAwIGFsdD0iR29vZ2xlIj48L2E+
Cis8YSBocmVmPSJodHRwOi8veWFob28uY29tIiB0YXJnZXQ9ImZyYW1lX2IiPjxpbWcgc3JjPSIi
IHdpZHRoPTEwMCBoZWlnaHQ9MTAwIGFsdD0iWWFob28iPjwvYT4KZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC90ZXN0cy9xd2Vidmlldy9kYXRhL2luZGV4Lmh0bWwgYi9XZWJLaXQvcXQvdGVzdHMvcXdl
YnZpZXcvZGF0YS9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmM1M2FkMDkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvZGF0
YS9pbmRleC5odG1sCkBAIC0wLDAgKzEsNCBAQAorPGZyYW1lc2V0IGNvbHM9IjI1JSw3NSUiPgor
ICAgPGZyYW1lIHNyYz0iZnJhbWVfYS5odG1sIiBuYW1lPSJmcmFtZV9hIj4KKyAgIDxmcmFtZSBz
cmM9ImZyYW1lX2IuaHRtbCIgbmFtZT0iZnJhbWVfYiI+Cis8L2ZyYW1lc2V0PgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3F3ZWJ2aWV3LnBybyBiL1dlYktpdC9xdC90ZXN0
cy9xd2Vidmlldy9xd2Vidmlldy5wcm8KaW5kZXggZTY3YmI3YS4uNzM1NTM3YiAxMDA2NDQKLS0t
IGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3F3ZWJ2aWV3LnBybworKysgYi9XZWJLaXQvcXQv
dGVzdHMvcXdlYnZpZXcvcXdlYnZpZXcucHJvCkBAIC00LDYgKzQsNyBAQCBpbmNsdWRlKC4uLy4u
Ly4uLy4uL1dlYktpdC5wcmkpCiBTT1VSQ0VTICArPSB0c3RfcXdlYnZpZXcuY3BwCiBRVCArPSB0
ZXN0bGliIG5ldHdvcmsKIFFNQUtFX1JQQVRIRElSID0gJCRPVVRQVVRfRElSL2xpYiAkJFFNQUtF
X1JQQVRIRElSCitSRVNPVVJDRVMgICs9IHRzdF9xd2Vidmlldy5xcmMKIERFRklORVMgKz0gU1JD
RElSPVxcXCIkJFBXRC9cXFwiCiAKIHN5bWJpYW4gewpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHAgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcv
dHN0X3F3ZWJ2aWV3LmNwcAppbmRleCBmZGE5NzllLi4yN2RhZjM4IDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvcXQvdGVz
dHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LmNwcApAQCAtMjAsNiArMjAsNyBAQAogKi8KIAogI2lu
Y2x1ZGUgPHF0ZXN0Lmg+CisjaW5jbHVkZSAiLi4vdXRpbC5oIgogCiAjaW5jbHVkZSA8cXBhaW50
ZXIuaD4KICNpbmNsdWRlIDxxd2Vidmlldy5oPgpAQCAtNDUsNiArNDYsOCBAQCBwcml2YXRlIHNs
b3RzOgogCiAgICAgdm9pZCByZXVzZVBhZ2VfZGF0YSgpOwogICAgIHZvaWQgcmV1c2VQYWdlKCk7
CisKKyAgICB2b2lkIGNyYXNoVGVzdHMoKTsKIH07CiAKIC8vIFRoaXMgd2lsbCBiZSBjYWxsZWQg
YmVmb3JlIHRoZSBmaXJzdCB0ZXN0IGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLgpAQCAtMTQ4LDYgKzE1
MSw0NiBAQCB2b2lkIHRzdF9RV2ViVmlldzo6cmV1c2VQYWdlKCkKICAgICBRRGlyOjpzZXRDdXJy
ZW50KFFBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25EaXJQYXRoKCkpOwogfQogCisvLyBDbGFzcyB1
c2VkIGluIGNyYXNoVGVzdHMKK2NsYXNzIFdlYlZpZXdDcmFzaFRlc3QgOiBwdWJsaWMgUU9iamVj
dCB7CisgICAgUV9PQkpFQ1QKKyAgICBRV2ViVmlldyogbV92aWV3OworcHVibGljOgorICAgIGJv
b2wgbV9leGVjdXRlZDsKKworCisgICAgV2ViVmlld0NyYXNoVGVzdChRV2ViVmlldyogdmlldykK
KyAgICAgIDogbV92aWV3KHZpZXcpCisgICAgICAsIG1fZXhlY3V0ZWQoZmFsc2UpCisgICAgewor
ICAgICAgICB2aWV3LT5jb25uZWN0KHZpZXcsIFNJR05BTChsb2FkUHJvZ3Jlc3MoaW50KSksIHRo
aXMsIFNMT1QobG9hZGluZyhpbnQpKSk7CisgICAgfQorCitwcml2YXRlIHNsb3RzOgorICAgIHZv
aWQgbG9hZGluZyhpbnQgcHJvZ3Jlc3MpCisgICAgeworICAgICAgICBpZiAocHJvZ3Jlc3MgPj0g
MjAgJiYgcHJvZ3Jlc3MgPCA5MCkgeworICAgICAgICAgICAgUVZFUklGWSghbV9leGVjdXRlZCk7
CisgICAgICAgICAgICBtX3ZpZXctPnN0b3AoKTsKKyAgICAgICAgICAgIG1fZXhlY3V0ZWQgPSB0
cnVlOworICAgICAgICB9CisgICAgfQorfTsKKworCisvLyBTaG91bGQgbm90IGNyYXNoLgordm9p
ZCB0c3RfUVdlYlZpZXc6OmNyYXNoVGVzdHMoKQoreworICAgIC8vIFRlc3QgaWYgbG9hZGluZyBj
YW4gYmUgc3RvcHBlZCBpbiBsb2FkUHJvZ3Jlc3MgaGFuZGxlciB3aXRob3V0IGNyYXNoLgorICAg
IC8vIFRlc3QgcGFnZSBzaG91bGQgaGF2ZSBmcmFtZXMuCisgICAgUVdlYlZpZXcgdmlldzsKKyAg
ICBXZWJWaWV3Q3Jhc2hUZXN0IHRlc3Rlcigmdmlldyk7CisgICAgUVVybCB1cmwoInFyYzovLy9k
YXRhL2luZGV4Lmh0bWwiKTsKKyAgICB2aWV3LmxvYWQodXJsKTsKKyAgICBRVFJZX1ZFUklGWSh0
ZXN0ZXIubV9leGVjdXRlZCk7IC8vIElmIGZhaWwgaXQgbWVhbnMgdGhhdCB0aGUgdGVzdCB3YXNu
J3QgZXhlY3V0ZWQuCit9CisKKwogUVRFU1RfTUFJTih0c3RfUVdlYlZpZXcpCiAjaW5jbHVkZSAi
dHN0X3F3ZWJ2aWV3Lm1vYyIKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3
L3RzdF9xd2Vidmlldy5xcmMgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3
LnFyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGUzNGE5Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5xcmMKQEAg
LTAsMCArMSw3IEBACis8IURPQ1RZUEUgUkNDPjxSQ0MgdmVyc2lvbj0iMS4wIj4KKzxxcmVzb3Vy
Y2U+CisgICAgPGZpbGU+ZGF0YS9pbmRleC5odG1sPC9maWxlPgorICAgIDxmaWxlPmRhdGEvZnJh
bWVfYS5odG1sPC9maWxlPgorPC9xcmVzb3VyY2U+Cis8L1JDQz4KKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>