<?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>30118</bug_id>
          
          <creation_ts>2009-10-06 04:21:46 -0700</creation_ts>
          <short_desc>[Qt] QWebPage autotest crash: createViewlessPlugin</short_desc>
          <delta_ts>2009-10-12 08:06: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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jędrzej Nowacki">jedrzej.nowacki</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>152649</commentid>
    <comment_count>0</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-06 04:21:46 -0700</bug_when>
    <thetext>tst_QWebPage::createViewlessPlugin autotest crash.

Traceback:

(gdb) bt
#0  0xb71a626e in WebCore::FrameLoaderClientQt::createPlugin (this=0x8dcbec0, pluginSize=@0xbfda232c, element=0x8decb00, url=@0xbfda2380, paramNames=@0xbfda24e8, paramValues=@0xbfda24dc, mimeType=@0xbfda24f4, loadManually=false)
    at /home/nierob/dev/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:1233
#1  0xb6e98082 in WebCore::FrameLoader::loadPlugin (this=0x8dcc08c, renderer=0x8dce614, url=@0xbfda2380, mimeType=@0xbfda24f4, paramNames=@0xbfda24e8, paramValues=@0xbfda24dc, useFallback=false) at /home/nierob/dev/webkit/WebCore/loader/FrameLoader.cpp:1470
#2  0xb6ea533a in WebCore::FrameLoader::requestObject (this=0x8dcc08c, renderer=0x8dce614, url=@0xbfda24f8, frameName=@0xb80b25d4, mimeType=@0xbfda24f4, paramNames=@0xbfda24e8, paramValues=@0xbfda24dc) at /home/nierob/dev/webkit/WebCore/loader/FrameLoader.cpp:1405
#3  0xb70ce921 in WebCore::RenderPartObject::updateWidget (this=0x8dce614, onlyCreateNonNetscapePlugins=true) at /home/nierob/dev/webkit/WebCore/rendering/RenderPartObject.cpp:252
#4  0xb6dcb206 in WebCore::HTMLObjectElement::updateWidget (this=0x8decb00) at /home/nierob/dev/webkit/WebCore/html/HTMLObjectElement.cpp:170
#5  0xb6dddbea in WebCore::HTMLPlugInElement::updateWidgetCallback (n=0x8decb00) at /home/nierob/dev/webkit/WebCore/html/HTMLPlugInElement.cpp:180
#6  0xb6bebe2d in WebCore::ContainerNode::dispatchPostAttachCallbacks () at /home/nierob/dev/webkit/WebCore/dom/ContainerNode.cpp:572
#7  0xb6bec23a in WebCore::ContainerNode::resumePostAttachCallbacks (this=0x8dccbb0) at /home/nierob/dev/webkit/WebCore/dom/ContainerNode.cpp:544
#8  0xb6c25a9e in WebCore::Document::recalcStyle (this=0x8dccbb0, change=WebCore::Node::NoChange) at /home/nierob/dev/webkit/WebCore/dom/Document.cpp:1292
#9  0xb6c21ab1 in WebCore::Document::updateStyleIfNeeded (this=0x8dccbb0) at /home/nierob/dev/webkit/WebCore/dom/Document.cpp:1315
#10 0xb6c14505 in WebCore::Document::updateStyleForAllDocuments () at /home/nierob/dev/webkit/WebCore/dom/Document.cpp:1332
#11 0xb6c65c71 in WebCore::Node::dispatchGenericEvent (this=0x8dccbb0, prpEvent={m_ptr = 0xbfda2858}) at /home/nierob/dev/webkit/WebCore/dom/Node.cpp:2566
#12 0xb6c65e0a in WebCore::Node::dispatchEvent (this=0x8dccbb0, prpEvent={m_ptr = 0xbfda2890}) at /home/nierob/dev/webkit/WebCore/dom/Node.cpp:2447
#13 0xb6c2279e in WebCore::Document::finishedParsing (this=0x8dccbb0) at /home/nierob/dev/webkit/WebCore/dom/Document.cpp:4018
#14 0xb6dda2a4 in WebCore::HTMLParser::finished (this=0x8dde810) at /home/nierob/dev/webkit/WebCore/html/HTMLParser.cpp:1635
#15 0xb6df5684 in WebCore::HTMLTokenizer::end (this=0x8dcdc18) at /home/nierob/dev/webkit/WebCore/html/HTMLTokenizer.cpp:1859
#16 0xb6df5b5c in WebCore::HTMLTokenizer::finish (this=0x8dcdc18) at /home/nierob/dev/webkit/WebCore/html/HTMLTokenizer.cpp:1899
#17 0xb6bef199 in WebCore::Document::finishParsing (this=0x8dccbb0) at /home/nierob/dev/webkit/WebCore/dom/Document.cpp:1860
#18 0xb6e9a51a in WebCore::FrameLoader::endIfNotLoadingMainResource (this=0x8dcc08c) at /home/nierob/dev/webkit/WebCore/loader/FrameLoader.cpp:986
#19 0xb6e9a579 in WebCore::FrameLoader::end (this=0x8dcc08c) at /home/nierob/dev/webkit/WebCore/loader/FrameLoader.cpp:971
#20 0xb6e7dfba in WebCore::DocumentLoader::finishedLoading (this=0x8dd39e8) at /home/nierob/dev/webkit/WebCore/loader/DocumentLoader.cpp:330
#21 0xb6e920f7 in WebCore::FrameLoader::finishedLoading (this=0x8dcc08c) at /home/nierob/dev/webkit/WebCore/loader/FrameLoader.cpp:2875
#22 0xb6ebfe12 in WebCore::MainResourceLoader::didFinishLoading (this=0x8dd4c80) at /home/nierob/dev/webkit/WebCore/loader/MainResourceLoader.cpp:375
#23 0xb6ec1065 in WebCore::MainResourceLoader::continueAfterContentPolicy (this=0x8dd4c80, contentPolicy=WebCore::PolicyUse, r=@0x8dd4c98) at /home/nierob/dev/webkit/WebCore/loader/MainResourceLoader.cpp:262
#24 0xb6ec12c1 in WebCore::MainResourceLoader::continueAfterContentPolicy (this=0x8dd4c80, policy=WebCore::PolicyUse) at /home/nierob/dev/webkit/WebCore/loader/MainResourceLoader.cpp:278
#25 0xb6ec12fa in WebCore::MainResourceLoader::callContinueAfterContentPolicy (argument=0x8dd4c80, policy=WebCore::PolicyUse) at /home/nierob/dev/webkit/WebCore/loader/MainResourceLoader.cpp:270
#26 0xb6e9411d in WebCore::FrameLoader::checkContentPolicy (this=0x8dcc08c, MIMEType=@0x8dd4cc8, function=0xb6ec12d6 &lt;WebCore::MainResourceLoader::callContinueAfterContentPolicy(void*, WebCore::PolicyAction)&gt;, argument=0x8dd4c80)
    at /home/nierob/dev/webkit/WebCore/loader/FrameLoader.cpp:2241
#27 0xb6ec0242 in WebCore::MainResourceLoader::didReceiveResponse (this=0x8dd4c80, r=@0xbfda2cec) at /home/nierob/dev/webkit/WebCore/loader/MainResourceLoader.cpp:323
#28 0xb6ebee92 in WebCore::MainResourceLoader::handleDataLoadNow (this=0x8dd4c80) at /home/nierob/dev/webkit/WebCore/loader/MainResourceLoader.cpp:420
#29 0xb6ebefcc in WebCore::MainResourceLoader::handleDataLoadSoon (this=0x8dd4c80, r=@0xbfda2f18) at /home/nierob/dev/webkit/WebCore/loader/MainResourceLoader.cpp:440
#30 0xb6ebf7a6 in WebCore::MainResourceLoader::loadNow (this=0x8dd4c80, r=@0xbfda2f18) at /home/nierob/dev/webkit/WebCore/loader/MainResourceLoader.cpp:467
#31 0xb6ebfc68 in WebCore::MainResourceLoader::load (this=0x8dd4c80, r=@0x8dd3c00, substituteData=@0x8dd3af4) at /home/nierob/dev/webkit/WebCore/loader/MainResourceLoader.cpp:495
#32 0xb6e7a675 in WebCore::DocumentLoader::startLoadingMainResource (this=0x8dd39e8, identifier=1) at /home/nierob/dev/webkit/WebCore/loader/DocumentLoader.cpp:790
#33 0xb6e8fa83 in WebCore::FrameLoader::continueLoadAfterWillSubmitForm (this=0x8dcc08c) at /home/nierob/dev/webkit/WebCore/loader/FrameLoader.cpp:3174
#34 0xb6ea4cd4 in WebCore::FrameLoader::continueLoadAfterNavigationPolicy (this=0x8dcc08c, formState={m_ptr = 0xbfda30f4}, shouldContinue=true) at /home/nierob/dev/webkit/WebCore/loader/FrameLoader.cpp:3808
#35 0xb6ea4d2f in WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy (argument=0x8dcc08c, request=@0x8dd3c00, formState={m_ptr = 0xbfda31c8}, shouldContinue=true) at /home/nierob/dev/webkit/WebCore/loader/FrameLoader.cpp:3739
#36 0xb6e8d6d2 in WebCore::FrameLoader::checkNavigationPolicy (this=0x8dcc08c, request=@0x8dd3c00, loader=0x8dd39e8, formState={m_ptr = 0xbfda329c},
    function=0xb6ea4cdc &lt;WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy(void*, WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)&gt;, argument=0x8dcc08c) at /home/nierob/dev/webkit/WebCore/loader/FrameLoader.cpp:3681
#37 0xb6e90798 in WebCore::FrameLoader::loadWithDocumentLoader (this=0x8dcc08c, loader=0x8dd39e8, type=WebCore::FrameLoadTypeStandard, prpFormState={m_ptr = 0xbfda32e0}) at /home/nierob/dev/webkit/WebCore/loader/FrameLoader.cpp:2154
#38 0xb6e90978 in WebCore::FrameLoader::load (this=0x8dcc08c, newDocumentLoader=0x8dd39e8) at /home/nierob/dev/webkit/WebCore/loader/FrameLoader.cpp:2115
#39 0xb6e90b8b in WebCore::FrameLoader::load (this=0x8dcc08c, request=@0xbfda33b8, substituteData=@0xbfda3458, lockHistory=false) at /home/nierob/dev/webkit/WebCore/loader/FrameLoader.cpp:2056
#40 0xb71b4755 in QWebFrame::setHtml (this=0x8dca958, html=@0xbfda35b0, baseUrl=@0xbfda35b4) at /home/nierob/dev/webkit/WebKit/qt/Api/qwebframe.cpp:724
#41 0x08055099 in tst_QWebPage::createViewlessPlugin (this=0xbfda42f4) at /home/nierob/dev/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:664
#42 0x08066127 in tst_QWebPage::qt_metacall (this=0xbfda42f4, _c=QMetaObject::InvokeMetaMethod, _id=15, _a=0xbfda3690) at /home/nierob/dev/webkit/WebKitBuild/Debug/WebKit/qt/tests/qwebpage/./tst_qwebpage.moc:132
#43 0xb49add87 in QMetaObject::metacall (object=0xbfda42f4, cl=QMetaObject::InvokeMetaMethod, idx=19, argv=0xbfda3690) at /home/nierob/dev/qt/src/corelib/kernel/qmetaobject.cpp:237
#44 0xb49b156f in QMetaMethod::invoke (this=0xbfda3a14, object=0xbfda42f4, connectionType=Qt::DirectConnection, returnValue={&lt;QGenericArgument&gt; = {_data = 0x0, _name = 0x0}, &lt;No data fields&gt;}, val0={_data = 0x0, _name = 0x0}, val1={_data = 0x0, _name = 0x0}, val2=
      {_data = 0x0, _name = 0x0}, val3={_data = 0x0, _name = 0x0}, val4={_data = 0x0, _name = 0x0}, val5={_data = 0x0, _name = 0x0}, val6={_data = 0x0, _name = 0x0}, val7={_data = 0x0, _name = 0x0}, val8={_data = 0x0, _name = 0x0}, val9={_data = 0x0, _name = 0x0})
    at /home/nierob/dev/qt/src/corelib/kernel/qmetaobject.cpp:1533
#45 0xb49b1d51 in QMetaObject::invokeMethod (obj=0xbfda42f4, member=0x8d5db90 &quot;createViewlessPlugin&quot;, type=Qt::DirectConnection, ret={&lt;QGenericArgument&gt; = {_data = 0x0, _name = 0x0}, &lt;No data fields&gt;}, val0={_data = 0x0, _name = 0x0}, val1={_data = 0x0, _name = 0x0},
    val2={_data = 0x0, _name = 0x0}, val3={_data = 0x0, _name = 0x0}, val4={_data = 0x0, _name = 0x0}, val5={_data = 0x0, _name = 0x0}, val6={_data = 0x0, _name = 0x0}, val7={_data = 0x0, _name = 0x0}, val8={_data = 0x0, _name = 0x0}, val9={_data = 0x0, _name = 0x0})
    at /home/nierob/dev/qt/src/corelib/kernel/qmetaobject.cpp:1113
#46 0xb58e8776 in QMetaObject::invokeMethod (obj=0xbfda42f4, member=0x8d5db90 &quot;createViewlessPlugin&quot;, type=Qt::DirectConnection, val0={_data = 0x0, _name = 0x0}, val1={_data = 0x0, _name = 0x0}, val2={_data = 0x0, _name = 0x0}, val3={_data = 0x0, _name = 0x0}, val4=
      {_data = 0x0, _name = 0x0}, val5={_data = 0x0, _name = 0x0}, val6={_data = 0x0, _name = 0x0}, val7={_data = 0x0, _name = 0x0}, val8={_data = 0x0, _name = 0x0}, val9={_data = 0x0, _name = 0x0}) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs.h:396
#47 0xb58e2f78 in qInvokeTestMethodDataEntry (slot=0x8d5db90 &quot;createViewlessPlugin&quot;) at /home/nierob/dev/qt/src/testlib/qtestcase.cpp:1213
#48 0xb58e4452 in qInvokeTestMethod (slotName=0x8072329 &quot;createViewlessPlugin()&quot;, data=0x0) at /home/nierob/dev/qt/src/testlib/qtestcase.cpp:1308
#49 0xb58e4be9 in qInvokeTestMethods (testObject=0xbfda42f4) at /home/nierob/dev/qt/src/testlib/qtestcase.cpp:1453
#50 0xb58e5cc3 in QTest::qExec (testObject=0xbfda42f4, argc=2, argv=0xbfda43b4) at /home/nierob/dev/qt/src/testlib/qtestcase.cpp:1666
#51 0x08052943 in main (argc=2, argv=0xbfda43b4) at /home/nierob/dev/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:1422
(gdb)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152663</commentid>
    <comment_count>1</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-06 04:41:01 -0700</bug_when>
    <thetext>Bug was introduced by patch for bug 29710. 
Apparently QWebPagePrivate::client (m_webFrame-&gt;page()-&gt;d-&gt;client) could be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152989</commentid>
    <comment_count>2</comment_count>
      <attachid>40772</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-07 01:44:43 -0700</bug_when>
    <thetext>Created attachment 40772
fix

Fix repair autotest crash and memory leak that was before patch for bug 29710.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152992</commentid>
    <comment_count>3</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-07 01:54:51 -0700</bug_when>
    <thetext>Actually it is regression so I have changed to P1 and added keyword</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153039</commentid>
    <comment_count>4</comment_count>
      <attachid>40772</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-07 07:53:56 -0700</bug_when>
    <thetext>Comment on attachment 40772
fix

As discussed in the office, the current code doesn&apos;t _actually_ leak as the WebCore::Widget subclasses for QWidget and QGraphicsWidget delete the objects in their destructor.

However what is missing in the current code is a null pointer check if page-&gt;d-&gt;client is a null pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153327</commentid>
    <comment_count>5</comment_count>
      <attachid>40861</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-08 01:44:36 -0700</bug_when>
    <thetext>Created attachment 40861
patch v2

Crash fix &amp;&amp; Autotest</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153345</commentid>
    <comment_count>6</comment_count>
      <attachid>40861</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-08 05:56:52 -0700</bug_when>
    <thetext>Comment on attachment 40861
patch v2

&gt; diff --git a/WebKit/qt/ChangeLog b/WebKit/qt/ChangeLog
&gt; index dbaa5a2..bd956ed 100644
&gt; --- a/WebKit/qt/ChangeLog
&gt; +++ b/WebKit/qt/ChangeLog
&gt; @@ -1,3 +1,28 @@
&gt; +2009-10-08  Jedrzej Nowacki  &lt;jedrzej.nowacki@nokia.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        QWebPage&apos;s createViewlessPlugin autotest crash fix.
&gt; +        
&gt; +        A plug-ins returning widgets (QWidget or QGraphicsWidget) might be
&gt; +        created even in a viewless applications. The plug-ins won&apos;t be fully

I suggest to start the first sentence with &quot;It is possible that plugins that are QWidgets or QGraphicsWidgets
are created before a view has been assigned to a QWebPage&quot;.

&gt; +        functional, as by design, they should visualise something, but they
&gt; +        won&apos;t crash and will stay, work in memory.
&gt; +        
&gt; +        Autotest was developped to cover a viewless applications that create
&gt; +        a plug-ins based on the QGraphicsWidget class.

Typo: developed with one p. How about &quot;An autotest is included that covers
this use-case.&quot; ? :)



&gt; -class PluginTrackedPage : public QWebPage
&gt; +class PluginTrackedPageWidget : public QWebPage
&gt;  {
&gt;  public:
&gt;  
&gt;      int count;
&gt;      QPointer&lt;QWidget&gt; widget;
&gt;  
&gt; -    PluginTrackedPage(QWidget *parent = 0) : QWebPage(parent), count(0) {
&gt; +    PluginTrackedPageWidget(QWidget *parent = 0) : QWebPage(parent), count(0) {
&gt;         settings()-&gt;setAttribute(QWebSettings::PluginsEnabled, true);
&gt;      }
&gt;  
&gt; @@ -640,9 +641,28 @@ public:
&gt;      }
&gt;  };
&gt;  
&gt; +class PluginTrackedPageGraphicsWidget : public QWebPage
&gt; +{
&gt; +public:
&gt; +
&gt; +    int count;
&gt; +    QPointer&lt;QGraphicsWidget&gt; widget;
&gt; +
&gt; +    PluginTrackedPageGraphicsWidget(QWidget *parent = 0) : QWebPage(parent), count(0) {
&gt; +       settings()-&gt;setAttribute(QWebSettings::PluginsEnabled, true);
&gt; +    }

Coding style: In function definitions place each brace on its own line.

&gt; +    virtual QObject* createPlugin(const QString&amp;, const QUrl&amp;, const QStringList&amp;, const QStringList&amp;) {
&gt; +       count++;
&gt; +       QGraphicsWidget *w = new QGraphicsWidget;

Coding style: * placement

&gt; +       widget = w;
&gt; +       return w;

Why not simply write it in two lines? :)

    widget = new QGraphicsWidget;
    return widget;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153377</commentid>
    <comment_count>7</comment_count>
      <attachid>40861</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-08 08:20:28 -0700</bug_when>
    <thetext>Comment on attachment 40861
patch v2

Ok, I&apos;ll fix change log.

&gt; Coding style
Punishment for copy &amp; paste coding :-)

&gt; Why not simply write it in two lines? :)
&gt; 
&gt;     widget = new QGraphicsWidget;
&gt;     return widget;
In two lines? We can use only one :-)
return widget = new QGraphicsWidget;

Sorry for the errors, I should catch it before...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153386</commentid>
    <comment_count>8</comment_count>
      <attachid>40872</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-08 08:28:55 -0700</bug_when>
    <thetext>Created attachment 40872
patch v3

Next attempt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154039</commentid>
    <comment_count>9</comment_count>
      <attachid>40872</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-12 06:47:54 -0700</bug_when>
    <thetext>Comment on attachment 40872
patch v3

Bad coding style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154045</commentid>
    <comment_count>10</comment_count>
      <attachid>41040</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-12 06:59:37 -0700</bug_when>
    <thetext>Created attachment 41040
patch v4

Final version ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154065</commentid>
    <comment_count>11</comment_count>
      <attachid>41040</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-12 08:06:07 -0700</bug_when>
    <thetext>Comment on attachment 41040
patch v4

Clearing flags on attachment: 41040

Committed r49440: &lt;http://trac.webkit.org/changeset/49440&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154066</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-12 08:06:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40772</attachid>
            <date>2009-10-07 01:44:43 -0700</date>
            <delta_ts>2009-10-08 01:44:36 -0700</delta_ts>
            <desc>fix</desc>
            <filename>fix.diff</filename>
            <type>text/plain</type>
            <size>8175</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmlu
ZGV4IGRiYWE1YTIuLjNmNTkzZGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDA5LTEwLTA3ICBKZWRy
emVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHRzdF9RV2ViUGFnZTo6Y3JlYXRlVmll
d2xlc3NQbHVnaW4gYXV0b3Rlc3QgY3Jhc2ggZml4LgorICAgICAgICAKKyAgICAgICAgU3BlY2lh
bCBzZXQgb2Ygb3JwaGFuZWQgcGx1Zy1pbnMgd2VyZSBjcmVhdGVkIGluIEZyYW1lTG9hZGVyUXQK
KyAgICAgICAgY2xhc3MuIEF0IGVuZCBvZiBGcmFtZUxvYWRlclF0J3MgbGl2ZSB0aGUgcGx1Zy1p
bnMgYXJlIGRlbGV0ZWQKKyAgICAgICAgdG8gYXZvaWQgbWVtb3J5IGxlYWsuCisgICAgICAgIAor
ICAgICAgICBQbHVnLWlucyByZXR1cm5pbmcgd2lkZ2V0cyAoUVdpZGdldCBvciBRR3JhcGhpY3NX
aWRnZXQpIG1pZ2h0IGJlCisgICAgICAgIGNyZWF0ZWQgYW5kIHVzZWQgZXZlbiBpbiB2aWV3IGxl
c3MgYXBwbGljYXRpb25zLgorCisgICAgICAgIEF1dG90ZXN0IHdhcyBkZXZlbG9wcGVkLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDExOAorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpGcmFtZUxvYWRlckNsaWVudFF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6On5GcmFtZUxvYWRlckNsaWVudFF0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Omhhc1dlYlZpZXcpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisgICAgICAgICog
dGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFBsdWdpblRyYWNrZWRQ
YWdlV2lkZ2V0OjpQbHVnaW5UcmFja2VkUGFnZVdpZGdldCk6CisgICAgICAgIChQbHVnaW5UcmFj
a2VkUGFnZUdyYXBoaWNzV2lkZ2V0OjpQbHVnaW5UcmFja2VkUGFnZUdyYXBoaWNzV2lkZ2V0KToK
KyAgICAgICAgKFBsdWdpblRyYWNrZWRQYWdlR3JhcGhpY3NXaWRnZXQ6OmNyZWF0ZVBsdWdpbik6
CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmRlc3Ryb3lQbHVnaW4pOgorICAgICAgICAodHN0X1FX
ZWJQYWdlOjpjcmVhdGVWaWV3bGVzc1BsdWdpbik6CisKIDIwMDktMTAtMDUgIEdpcmlzaCBSYW1h
a3Jpc2huYW4gIDxnaXJpc2hAZm9yd2FyZGJpYXMuaW4+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHAKaW5kZXggYzJiMzVmZi4uM2NkYTc3ZCAxMDA2NDQKLS0tIGEvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcApAQCAtMTQ4LDEzICsxNDgs
MTkgQEAgRnJhbWVMb2FkZXJDbGllbnRRdDo6RnJhbWVMb2FkZXJDbGllbnRRdCgpCiAgICAgLCBt
X3BsdWdpblZpZXcoMCkKICAgICAsIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4oZmFsc2UpCiAg
ICAgLCBtX2ZpcnN0RGF0YShmYWxzZSkKLSAgICAsIG1fbG9hZEVycm9yIChSZXNvdXJjZUVycm9y
KCkpCisgICAgLCBtX2xvYWRFcnJvcihSZXNvdXJjZUVycm9yKCkpCiB7CiB9CiAKIAogRnJhbWVM
b2FkZXJDbGllbnRRdDo6fkZyYW1lTG9hZGVyQ2xpZW50UXQoKQogeworICAgIC8vIERlbGV0ZSBw
bHVnaW5zIHdpdGhvdXQgcGFyZW50cyAoYXZvaWQgbWVtb3J5IGxlYWspLgorICAgIFFTZXQ8UU9i
amVjdCo+Ojpjb25zdF9pdGVyYXRvciBpID0gbV9wbHVnaW5XaXRob3V0UGFyZW50LmNvbnN0QmVn
aW4oKTsKKyAgICBmb3IgKDsgaSAhPSBtX3BsdWdpbldpdGhvdXRQYXJlbnQuY29uc3RFbmQoKTsg
aSsrKQorICAgICAgICBpZiAoISgqaSktPnBhcmVudCgpKSB7CisgICAgICAgICAgICBkZWxldGUg
KCppKTsKKyAgICAgICAgfQogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldEZyYW1l
KFFXZWJGcmFtZSogd2ViRnJhbWUsIEZyYW1lKiBmcmFtZSkKQEAgLTE5Miw3ICsxOTgsNiBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbGxQb2xpY3lGdW5jdGlvbihGcmFtZVBvbGljeUZ1
bmN0aW9uIGZ1bmN0aW9uLCBQb2xpYwogCiBib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6Omhhc1dl
YlZpZXcoKSBjb25zdAogewotICAgIC8vbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMTIyNiwxMyArMTIzMSwxNCBAQCBQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVM
b2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsCiAg
ICAgICAgICAgICAgICAgb2JqZWN0ID0gZmFjdG9yeS0+Y3JlYXRlKG1pbWVUeXBlLCBxdXJsLCBw
YXJhbXMsIHZhbHVlcyk7CiAgICAgICAgIH0KICNlbmRpZgotCiAgICAgICAgIGlmIChvYmplY3Qp
IHsKKyAgICAgICAgICAgIGJvb2wgaGFzV2ViVmlldyA9IG1fd2ViRnJhbWUtPnBhZ2UoKS0+dmll
dygpOwogICAgICAgICAgICAgUVdpZGdldCogd2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFXaWRnZXQq
PihvYmplY3QpOwogICAgICAgICAgICAgaWYgKHdpZGdldCkgewotICAgICAgICAgICAgICAgIFFX
aWRnZXQqIHBhcmVudFdpZGdldCA9IHFvYmplY3RfY2FzdDxRV2lkZ2V0Kj4obV93ZWJGcmFtZS0+
cGFnZSgpLT5kLT5jbGllbnQtPnBsdWdpblBhcmVudCgpKTsKLSAgICAgICAgICAgICAgICBpZiAo
cGFyZW50V2lkZ2V0KQotICAgICAgICAgICAgICAgICAgICB3aWRnZXQtPnNldFBhcmVudChwYXJl
bnRXaWRnZXQpOworICAgICAgICAgICAgICAgIGlmIChoYXNXZWJWaWV3KQorICAgICAgICAgICAg
ICAgICAgICB3aWRnZXQtPnNldFBhcmVudChxb2JqZWN0X2Nhc3Q8UVdpZGdldCo+KG1fd2ViRnJh
bWUtPnBhZ2UoKS0+ZC0+Y2xpZW50LT5wbHVnaW5QYXJlbnQoKSkpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbV9wbHVnaW5XaXRob3V0UGFyZW50Lmluc2VydCh3
aWRnZXQpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxRdFBsdWdpbldpZGdldD4gdyA9IGFkb3B0
UmVmKG5ldyBRdFBsdWdpbldpZGdldCgpKTsKICAgICAgICAgICAgICAgICB3LT5zZXRQbGF0Zm9y
bVdpZGdldCh3aWRnZXQpOwogICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBpdCdzIGludmlz
aWJsZSB1bnRpbCBwcm9wZXJseSBwbGFjZWQgaW50byB0aGUgbGF5b3V0CkBAIC0xMjQzLDcgKzEy
NDksMTAgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBs
dWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLAogICAgICAgICAgICAgUUdyYXBoaWNzV2lk
Z2V0KiBncmFwaGljc1dpZGdldCA9IHFvYmplY3RfY2FzdDxRR3JhcGhpY3NXaWRnZXQqPihvYmpl
Y3QpOwogICAgICAgICAgICAgaWYgKGdyYXBoaWNzV2lkZ2V0KSB7CiAgICAgICAgICAgICAgICAg
Z3JhcGhpY3NXaWRnZXQtPmhpZGUoKTsKLSAgICAgICAgICAgICAgICBncmFwaGljc1dpZGdldC0+
c2V0UGFyZW50SXRlbShxb2JqZWN0X2Nhc3Q8UUdyYXBoaWNzT2JqZWN0Kj4obV93ZWJGcmFtZS0+
cGFnZSgpLT5kLT5jbGllbnQtPnBsdWdpblBhcmVudCgpKSk7CisgICAgICAgICAgICAgICAgaWYg
KGhhc1dlYlZpZXcpCisgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzV2lkZ2V0LT5zZXRQYXJl
bnRJdGVtKHFvYmplY3RfY2FzdDxRR3JhcGhpY3NPYmplY3QqPihtX3dlYkZyYW1lLT5wYWdlKCkt
PmQtPmNsaWVudC0+cGx1Z2luUGFyZW50KCkpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIG1fcGx1Z2luV2l0aG91dFBhcmVudC5pbnNlcnQoZ3JhcGhpY3NXaWRn
ZXQpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxRdFBsdWdpbkdyYXBoaWNzV2lkZ2V0PiB3ID0g
UXRQbHVnaW5HcmFwaGljc1dpZGdldDo6Y3JlYXRlKGdyYXBoaWNzV2lkZ2V0KTsKICAgICAgICAg
ICAgICAgICAvLyBNYWtlIHN1cmUgaXQncyBpbnZpc2libGUgdW50aWwgcHJvcGVybHkgcGxhY2Vk
IGludG8gdGhlIGxheW91dAogICAgICAgICAgICAgICAgIHctPnNldEZyYW1lUmVjdChJbnRSZWN0
KDAsIDAsIDAsIDApKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmggYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5oCmluZGV4IDY2YzQyNTIuLjY1NGY2YTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5j
bHVkZSA8cW9iamVjdC5oPgogI2luY2x1ZGUgPFFVcmw+CisjaW5jbHVkZSA8UVNldD4KIAogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgpAQCAtMjE2LDYg
KzIxNywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9oYXNTZW50UmVz
cG9uc2VUb1BsdWdpbjsKIAogICAgICAgICBSZXNvdXJjZUVycm9yIG1fbG9hZEVycm9yOworCisg
ICAgICAgIC8vIFNldCBvZiBvcnBoYW4gcGx1Z2lucy4gUGx1Z2lucyB0aGF0IGNyZWF0ZSB3aWRn
ZXQgc2hvdWxkIGhhdmUgcGFyZW50IGZvciBiZWluZworICAgICAgICAvLyBkZWFsbG9jYXRlLCBu
b3JtYWxseSBpdCBpcyBRV2ViVmlldywgYnV0IGluIHNvbWUgY2FzZXMgUVdlYlZpZXcgaXNuJ3Qg
Y3JlYXRlZC4KKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgY2FzZSBmb3IgZXhhbXBsZSBmb3Igd2lu
ZG93bGVzcyBhcHBsaWNhdGlvbi4KKyAgICAgICAgUVNldDxRT2JqZWN0Kj4gbV9wbHVnaW5XaXRo
b3V0UGFyZW50OwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90ZXN0cy9xd2Vi
cGFnZS90c3RfcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2Vi
cGFnZS5jcHAKaW5kZXggY2I2ODRiYS4uZDZjNzNlYiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJw
YWdlL3RzdF9xd2VicGFnZS5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlIDxxd2ViZWxl
bWVudC5oPgogI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CiAjaW5jbHVkZSA8cXdpZGdldC5oPgorI2lu
Y2x1ZGUgPFFHcmFwaGljc1dpZGdldD4KICNpbmNsdWRlIDxxd2Vidmlldy5oPgogI2luY2x1ZGUg
PHF3ZWJmcmFtZS5oPgogI2luY2x1ZGUgPHF3ZWJoaXN0b3J5Lmg+CkBAIC02MjEsMTQgKzYyMiwx
NCBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKCkKICAgICBRQ09NUEFSRShuZXdQ
YWdlLT5jYWxscy5jb3VudCgpLCAwKTsKIH0KIAotY2xhc3MgUGx1Z2luVHJhY2tlZFBhZ2UgOiBw
dWJsaWMgUVdlYlBhZ2UKK2NsYXNzIFBsdWdpblRyYWNrZWRQYWdlV2lkZ2V0IDogcHVibGljIFFX
ZWJQYWdlCiB7CiBwdWJsaWM6CiAKICAgICBpbnQgY291bnQ7CiAgICAgUVBvaW50ZXI8UVdpZGdl
dD4gd2lkZ2V0OwogCi0gICAgUGx1Z2luVHJhY2tlZFBhZ2UoUVdpZGdldCAqcGFyZW50ID0gMCkg
OiBRV2ViUGFnZShwYXJlbnQpLCBjb3VudCgwKSB7CisgICAgUGx1Z2luVHJhY2tlZFBhZ2VXaWRn
ZXQoUVdpZGdldCAqcGFyZW50ID0gMCkgOiBRV2ViUGFnZShwYXJlbnQpLCBjb3VudCgwKSB7CiAg
ICAgICAgc2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6UGx1Z2luc0VuYWJs
ZWQsIHRydWUpOwogICAgIH0KIApAQCAtNjQwLDkgKzY0MSwyOCBAQCBwdWJsaWM6CiAgICAgfQog
fTsKIAorY2xhc3MgUGx1Z2luVHJhY2tlZFBhZ2VHcmFwaGljc1dpZGdldCA6IHB1YmxpYyBRV2Vi
UGFnZQoreworcHVibGljOgorCisgICAgaW50IGNvdW50OworICAgIFFQb2ludGVyPFFHcmFwaGlj
c1dpZGdldD4gd2lkZ2V0OworCisgICAgUGx1Z2luVHJhY2tlZFBhZ2VHcmFwaGljc1dpZGdldChR
V2lkZ2V0ICpwYXJlbnQgPSAwKSA6IFFXZWJQYWdlKHBhcmVudCksIGNvdW50KDApIHsKKyAgICAg
ICBzZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpQbHVnaW5zRW5hYmxlZCwg
dHJ1ZSk7CisgICAgfQorCisgICAgdmlydHVhbCBRT2JqZWN0KiBjcmVhdGVQbHVnaW4oY29uc3Qg
UVN0cmluZyYsIGNvbnN0IFFVcmwmLCBjb25zdCBRU3RyaW5nTGlzdCYsIGNvbnN0IFFTdHJpbmdM
aXN0JikgeworICAgICAgIGNvdW50Kys7CisgICAgICAgUUdyYXBoaWNzV2lkZ2V0ICp3ID0gbmV3
IFFHcmFwaGljc1dpZGdldDsKKyAgICAgICB3aWRnZXQgPSB3OworICAgICAgIHJldHVybiB3Owor
ICAgIH0KK307CisKIHZvaWQgdHN0X1FXZWJQYWdlOjpkZXN0cm95UGx1Z2luKCkKIHsKLSAgICBQ
bHVnaW5UcmFja2VkUGFnZSogcGFnZSA9IG5ldyBQbHVnaW5UcmFja2VkUGFnZShtX3ZpZXcpOwor
ICAgIFBsdWdpblRyYWNrZWRQYWdlV2lkZ2V0KiBwYWdlID0gbmV3IFBsdWdpblRyYWNrZWRQYWdl
V2lkZ2V0KG1fdmlldyk7CiAgICAgbV92aWV3LT5zZXRQYWdlKHBhZ2UpOwogCiAgICAgLy8gd2Ug
Y3JlYXRlIHRoZSBwbHVnaW4sIHNvIHRoZSB3aWRnZXQgc2hvdWxkIGJlIGNvbnN0cnVjdGVkCkBA
IC02NTksMTIgKzY3OSwyMyBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6ZGVzdHJveVBsdWdpbigpCiAK
IHZvaWQgdHN0X1FXZWJQYWdlOjpjcmVhdGVWaWV3bGVzc1BsdWdpbigpCiB7Ci0gICAgUGx1Z2lu
VHJhY2tlZFBhZ2UqIHBhZ2UgPSBuZXcgUGx1Z2luVHJhY2tlZFBhZ2U7Ci0gICAgUVN0cmluZyBj
b250ZW50KCI8aHRtbD48Ym9keT48b2JqZWN0IHR5cGU9XCJhcHBsaWNhdGlvbi94LXF0LXBsdWdp
blwiIGNsYXNzaWQ9XCJRUHJvZ3Jlc3NCYXJcIj48L29iamVjdD48L2JvZHk+PC9odG1sPiIpOwot
ICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5zZXRIdG1sKGNvbnRlbnQpOwotICAgIFFDT01QQVJFKHBh
Z2UtPmNvdW50LCAxKTsKLSAgICBRVkVSSUZZKHBhZ2UtPndpZGdldCAhPSAwKTsKLSAgICBkZWxl
dGUgcGFnZTsKKyAgICB7CisgICAgICAgIFBsdWdpblRyYWNrZWRQYWdlV2lkZ2V0KiBwYWdlID0g
bmV3IFBsdWdpblRyYWNrZWRQYWdlV2lkZ2V0OworICAgICAgICBRU3RyaW5nIGNvbnRlbnQoIjxo
dG1sPjxib2R5PjxvYmplY3QgdHlwZT1cImFwcGxpY2F0aW9uL3gtcXQtcGx1Z2luXCIgY2xhc3Np
ZD1cIlFQcm9ncmVzc0JhclwiPjwvb2JqZWN0PjwvYm9keT48L2h0bWw+Iik7CisgICAgICAgIHBh
Z2UtPm1haW5GcmFtZSgpLT5zZXRIdG1sKGNvbnRlbnQpOworICAgICAgICBRQ09NUEFSRShwYWdl
LT5jb3VudCwgMSk7CisgICAgICAgIFFWRVJJRlkocGFnZS0+d2lkZ2V0ICE9IDApOworICAgICAg
ICBkZWxldGUgcGFnZTsKKyAgICB9CisgICAgeworICAgICAgICBQbHVnaW5UcmFja2VkUGFnZUdy
YXBoaWNzV2lkZ2V0KiBwYWdlID0gbmV3IFBsdWdpblRyYWNrZWRQYWdlR3JhcGhpY3NXaWRnZXQ7
CisgICAgICAgIFFTdHJpbmcgY29udGVudCgiPGh0bWw+PGJvZHk+PG9iamVjdCB0eXBlPVwiYXBw
bGljYXRpb24veC1xdC1wbHVnaW5cIiBjbGFzc2lkPVwiUVByb2dyZXNzQmFyXCI+PC9vYmplY3Q+
PC9ib2R5PjwvaHRtbD4iKTsKKyAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCktPnNldEh0bWwoY29u
dGVudCk7CisgICAgICAgIFFDT01QQVJFKHBhZ2UtPmNvdW50LCAxKTsKKyAgICAgICAgUVZFUklG
WShwYWdlLT53aWRnZXQgIT0gMCk7CisgICAgICAgIGRlbGV0ZSBwYWdlOworICAgIH0KKwogfQog
CiAvLyBpbXBvcnQgcHJpdmF0ZSBBUEkK
</data>
<flag name="review"
          id="22053"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40861</attachid>
            <date>2009-10-08 01:44:36 -0700</date>
            <delta_ts>2009-10-08 08:28:55 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>viewless.diff</filename>
            <type>text/plain</type>
            <size>6588</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmlu
ZGV4IGRiYWE1YTIuLmJkOTU2ZWQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDA5LTEwLTA4ICBKZWRy
emVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFFXZWJQYWdlJ3MgY3JlYXRlVmlld2xl
c3NQbHVnaW4gYXV0b3Rlc3QgY3Jhc2ggZml4LgorICAgICAgICAKKyAgICAgICAgQSBwbHVnLWlu
cyByZXR1cm5pbmcgd2lkZ2V0cyAoUVdpZGdldCBvciBRR3JhcGhpY3NXaWRnZXQpIG1pZ2h0IGJl
CisgICAgICAgIGNyZWF0ZWQgZXZlbiBpbiBhIHZpZXdsZXNzIGFwcGxpY2F0aW9ucy4gVGhlIHBs
dWctaW5zIHdvbid0IGJlIGZ1bGx5CisgICAgICAgIGZ1bmN0aW9uYWwsIGFzIGJ5IGRlc2lnbiwg
dGhleSBzaG91bGQgdmlzdWFsaXNlIHNvbWV0aGluZywgYnV0IHRoZXkKKyAgICAgICAgd29uJ3Qg
Y3Jhc2ggYW5kIHdpbGwgc3RheSwgd29yayBpbiBtZW1vcnkuCisgICAgICAgIAorICAgICAgICBB
dXRvdGVzdCB3YXMgZGV2ZWxvcHBlZCB0byBjb3ZlciBhIHZpZXdsZXNzIGFwcGxpY2F0aW9ucyB0
aGF0IGNyZWF0ZQorICAgICAgICBhIHBsdWctaW5zIGJhc2VkIG9uIHRoZSBRR3JhcGhpY3NXaWRn
ZXQgY2xhc3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMwMTE4CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdp
bik6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAg
KFBsdWdpblRyYWNrZWRQYWdlV2lkZ2V0OjpQbHVnaW5UcmFja2VkUGFnZVdpZGdldCk6CisgICAg
ICAgIChQbHVnaW5UcmFja2VkUGFnZUdyYXBoaWNzV2lkZ2V0OjpQbHVnaW5UcmFja2VkUGFnZUdy
YXBoaWNzV2lkZ2V0KToKKyAgICAgICAgKFBsdWdpblRyYWNrZWRQYWdlR3JhcGhpY3NXaWRnZXQ6
OmNyZWF0ZVBsdWdpbik6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmRlc3Ryb3lQbHVnaW4pOgor
ICAgICAgICAodHN0X1FXZWJQYWdlOjpjcmVhdGVWaWV3bGVzc1BsdWdpbik6CisKIDIwMDktMTAt
MDUgIEdpcmlzaCBSYW1ha3Jpc2huYW4gIDxnaXJpc2hAZm9yd2FyZGJpYXMuaW4+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKaW5kZXggYzJiMzVmZi4uY2RlZDU5NCAxMDA2
NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
CisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcApA
QCAtMTIzMCw5ICsxMjMwLDEyIEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVu
dFF0OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwKICAgICAgICAgaWYg
KG9iamVjdCkgewogICAgICAgICAgICAgUVdpZGdldCogd2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFX
aWRnZXQqPihvYmplY3QpOwogICAgICAgICAgICAgaWYgKHdpZGdldCkgewotICAgICAgICAgICAg
ICAgIFFXaWRnZXQqIHBhcmVudFdpZGdldCA9IHFvYmplY3RfY2FzdDxRV2lkZ2V0Kj4obV93ZWJG
cmFtZS0+cGFnZSgpLT5kLT5jbGllbnQtPnBsdWdpblBhcmVudCgpKTsKLSAgICAgICAgICAgICAg
ICBpZiAocGFyZW50V2lkZ2V0KQotICAgICAgICAgICAgICAgICAgICB3aWRnZXQtPnNldFBhcmVu
dChwYXJlbnRXaWRnZXQpOworICAgICAgICAgICAgICAgIFFXaWRnZXQqIHBhcmVudFdpZGdldDsK
KyAgICAgICAgICAgICAgICBpZiAobV93ZWJGcmFtZS0+cGFnZSgpLT5kLT5jbGllbnQpCisgICAg
ICAgICAgICAgICAgICAgIHBhcmVudFdpZGdldCA9IHFvYmplY3RfY2FzdDxRV2lkZ2V0Kj4obV93
ZWJGcmFtZS0+cGFnZSgpLT5kLT5jbGllbnQtPnBsdWdpblBhcmVudCgpKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHBhcmVudFdpZGdldCA9IDA7ICAvLyBUaGUg
cGx1Zy1pbiB3b24ndCBiZSBmdWxseSBmdW5jdGlvbmFsIGJlY2F1c2UgdGhlIFFXZWJWaWV3IGRv
ZXNuJ3QgZXhpc3QuCisgICAgICAgICAgICAgICAgd2lkZ2V0LT5zZXRQYXJlbnQocGFyZW50V2lk
Z2V0KTsKICAgICAgICAgICAgICAgICBSZWZQdHI8UXRQbHVnaW5XaWRnZXQ+IHcgPSBhZG9wdFJl
ZihuZXcgUXRQbHVnaW5XaWRnZXQoKSk7CiAgICAgICAgICAgICAgICAgdy0+c2V0UGxhdGZvcm1X
aWRnZXQod2lkZ2V0KTsKICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgaXQncyBpbnZpc2li
bGUgdW50aWwgcHJvcGVybHkgcGxhY2VkIGludG8gdGhlIGxheW91dApAQCAtMTI0Miw4ICsxMjQ1
LDEzIEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVn
aW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwKICNpZiBRVF9WRVJTSU9OID49IDB4MDQwNjAw
CiAgICAgICAgICAgICBRR3JhcGhpY3NXaWRnZXQqIGdyYXBoaWNzV2lkZ2V0ID0gcW9iamVjdF9j
YXN0PFFHcmFwaGljc1dpZGdldCo+KG9iamVjdCk7CiAgICAgICAgICAgICBpZiAoZ3JhcGhpY3NX
aWRnZXQpIHsKKyAgICAgICAgICAgICAgICBRR3JhcGhpY3NPYmplY3QqIHBhcmVudFdpZGdldDsK
KyAgICAgICAgICAgICAgICBpZiAobV93ZWJGcmFtZS0+cGFnZSgpLT5kLT5jbGllbnQpCisgICAg
ICAgICAgICAgICAgICAgIHBhcmVudFdpZGdldCA9IHFvYmplY3RfY2FzdDxRR3JhcGhpY3NPYmpl
Y3QqPihtX3dlYkZyYW1lLT5wYWdlKCktPmQtPmNsaWVudC0+cGx1Z2luUGFyZW50KCkpOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50V2lkZ2V0ID0gMDsg
IC8vIFRoZSBwbHVnLWluIHdvbid0IGJlIGZ1bGx5IGZ1bmN0aW9uYWwgYmVjYXVzZSB0aGUgUVdl
YlZpZXcgZG9lc24ndCBleGlzdC4KICAgICAgICAgICAgICAgICBncmFwaGljc1dpZGdldC0+aGlk
ZSgpOwotICAgICAgICAgICAgICAgIGdyYXBoaWNzV2lkZ2V0LT5zZXRQYXJlbnRJdGVtKHFvYmpl
Y3RfY2FzdDxRR3JhcGhpY3NPYmplY3QqPihtX3dlYkZyYW1lLT5wYWdlKCktPmQtPmNsaWVudC0+
cGx1Z2luUGFyZW50KCkpKTsKKyAgICAgICAgICAgICAgICBncmFwaGljc1dpZGdldC0+c2V0UGFy
ZW50SXRlbShwYXJlbnRXaWRnZXQpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxRdFBsdWdpbkdy
YXBoaWNzV2lkZ2V0PiB3ID0gUXRQbHVnaW5HcmFwaGljc1dpZGdldDo6Y3JlYXRlKGdyYXBoaWNz
V2lkZ2V0KTsKICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgaXQncyBpbnZpc2libGUgdW50
aWwgcHJvcGVybHkgcGxhY2VkIGludG8gdGhlIGxheW91dAogICAgICAgICAgICAgICAgIHctPnNl
dEZyYW1lUmVjdChJbnRSZWN0KDAsIDAsIDAsIDApKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90
ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdl
L3RzdF9xd2VicGFnZS5jcHAKaW5kZXggY2I2ODRiYS4uZDZjNzNlYiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRl
IDxxd2ViZWxlbWVudC5oPgogI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CiAjaW5jbHVkZSA8cXdpZGdl
dC5oPgorI2luY2x1ZGUgPFFHcmFwaGljc1dpZGdldD4KICNpbmNsdWRlIDxxd2Vidmlldy5oPgog
I2luY2x1ZGUgPHF3ZWJmcmFtZS5oPgogI2luY2x1ZGUgPHF3ZWJoaXN0b3J5Lmg+CkBAIC02MjEs
MTQgKzYyMiwxNCBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKCkKICAgICBRQ09N
UEFSRShuZXdQYWdlLT5jYWxscy5jb3VudCgpLCAwKTsKIH0KIAotY2xhc3MgUGx1Z2luVHJhY2tl
ZFBhZ2UgOiBwdWJsaWMgUVdlYlBhZ2UKK2NsYXNzIFBsdWdpblRyYWNrZWRQYWdlV2lkZ2V0IDog
cHVibGljIFFXZWJQYWdlCiB7CiBwdWJsaWM6CiAKICAgICBpbnQgY291bnQ7CiAgICAgUVBvaW50
ZXI8UVdpZGdldD4gd2lkZ2V0OwogCi0gICAgUGx1Z2luVHJhY2tlZFBhZ2UoUVdpZGdldCAqcGFy
ZW50ID0gMCkgOiBRV2ViUGFnZShwYXJlbnQpLCBjb3VudCgwKSB7CisgICAgUGx1Z2luVHJhY2tl
ZFBhZ2VXaWRnZXQoUVdpZGdldCAqcGFyZW50ID0gMCkgOiBRV2ViUGFnZShwYXJlbnQpLCBjb3Vu
dCgwKSB7CiAgICAgICAgc2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6UGx1
Z2luc0VuYWJsZWQsIHRydWUpOwogICAgIH0KIApAQCAtNjQwLDkgKzY0MSwyOCBAQCBwdWJsaWM6
CiAgICAgfQogfTsKIAorY2xhc3MgUGx1Z2luVHJhY2tlZFBhZ2VHcmFwaGljc1dpZGdldCA6IHB1
YmxpYyBRV2ViUGFnZQoreworcHVibGljOgorCisgICAgaW50IGNvdW50OworICAgIFFQb2ludGVy
PFFHcmFwaGljc1dpZGdldD4gd2lkZ2V0OworCisgICAgUGx1Z2luVHJhY2tlZFBhZ2VHcmFwaGlj
c1dpZGdldChRV2lkZ2V0ICpwYXJlbnQgPSAwKSA6IFFXZWJQYWdlKHBhcmVudCksIGNvdW50KDAp
IHsKKyAgICAgICBzZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpQbHVnaW5z
RW5hYmxlZCwgdHJ1ZSk7CisgICAgfQorCisgICAgdmlydHVhbCBRT2JqZWN0KiBjcmVhdGVQbHVn
aW4oY29uc3QgUVN0cmluZyYsIGNvbnN0IFFVcmwmLCBjb25zdCBRU3RyaW5nTGlzdCYsIGNvbnN0
IFFTdHJpbmdMaXN0JikgeworICAgICAgIGNvdW50Kys7CisgICAgICAgUUdyYXBoaWNzV2lkZ2V0
ICp3ID0gbmV3IFFHcmFwaGljc1dpZGdldDsKKyAgICAgICB3aWRnZXQgPSB3OworICAgICAgIHJl
dHVybiB3OworICAgIH0KK307CisKIHZvaWQgdHN0X1FXZWJQYWdlOjpkZXN0cm95UGx1Z2luKCkK
IHsKLSAgICBQbHVnaW5UcmFja2VkUGFnZSogcGFnZSA9IG5ldyBQbHVnaW5UcmFja2VkUGFnZSht
X3ZpZXcpOworICAgIFBsdWdpblRyYWNrZWRQYWdlV2lkZ2V0KiBwYWdlID0gbmV3IFBsdWdpblRy
YWNrZWRQYWdlV2lkZ2V0KG1fdmlldyk7CiAgICAgbV92aWV3LT5zZXRQYWdlKHBhZ2UpOwogCiAg
ICAgLy8gd2UgY3JlYXRlIHRoZSBwbHVnaW4sIHNvIHRoZSB3aWRnZXQgc2hvdWxkIGJlIGNvbnN0
cnVjdGVkCkBAIC02NTksMTIgKzY3OSwyMyBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6ZGVzdHJveVBs
dWdpbigpCiAKIHZvaWQgdHN0X1FXZWJQYWdlOjpjcmVhdGVWaWV3bGVzc1BsdWdpbigpCiB7Ci0g
ICAgUGx1Z2luVHJhY2tlZFBhZ2UqIHBhZ2UgPSBuZXcgUGx1Z2luVHJhY2tlZFBhZ2U7Ci0gICAg
UVN0cmluZyBjb250ZW50KCI8aHRtbD48Ym9keT48b2JqZWN0IHR5cGU9XCJhcHBsaWNhdGlvbi94
LXF0LXBsdWdpblwiIGNsYXNzaWQ9XCJRUHJvZ3Jlc3NCYXJcIj48L29iamVjdD48L2JvZHk+PC9o
dG1sPiIpOwotICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5zZXRIdG1sKGNvbnRlbnQpOwotICAgIFFD
T01QQVJFKHBhZ2UtPmNvdW50LCAxKTsKLSAgICBRVkVSSUZZKHBhZ2UtPndpZGdldCAhPSAwKTsK
LSAgICBkZWxldGUgcGFnZTsKKyAgICB7CisgICAgICAgIFBsdWdpblRyYWNrZWRQYWdlV2lkZ2V0
KiBwYWdlID0gbmV3IFBsdWdpblRyYWNrZWRQYWdlV2lkZ2V0OworICAgICAgICBRU3RyaW5nIGNv
bnRlbnQoIjxodG1sPjxib2R5PjxvYmplY3QgdHlwZT1cImFwcGxpY2F0aW9uL3gtcXQtcGx1Z2lu
XCIgY2xhc3NpZD1cIlFQcm9ncmVzc0JhclwiPjwvb2JqZWN0PjwvYm9keT48L2h0bWw+Iik7Cisg
ICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5zZXRIdG1sKGNvbnRlbnQpOworICAgICAgICBRQ09N
UEFSRShwYWdlLT5jb3VudCwgMSk7CisgICAgICAgIFFWRVJJRlkocGFnZS0+d2lkZ2V0ICE9IDAp
OworICAgICAgICBkZWxldGUgcGFnZTsKKyAgICB9CisgICAgeworICAgICAgICBQbHVnaW5UcmFj
a2VkUGFnZUdyYXBoaWNzV2lkZ2V0KiBwYWdlID0gbmV3IFBsdWdpblRyYWNrZWRQYWdlR3JhcGhp
Y3NXaWRnZXQ7CisgICAgICAgIFFTdHJpbmcgY29udGVudCgiPGh0bWw+PGJvZHk+PG9iamVjdCB0
eXBlPVwiYXBwbGljYXRpb24veC1xdC1wbHVnaW5cIiBjbGFzc2lkPVwiUVByb2dyZXNzQmFyXCI+
PC9vYmplY3Q+PC9ib2R5PjwvaHRtbD4iKTsKKyAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCktPnNl
dEh0bWwoY29udGVudCk7CisgICAgICAgIFFDT01QQVJFKHBhZ2UtPmNvdW50LCAxKTsKKyAgICAg
ICAgUVZFUklGWShwYWdlLT53aWRnZXQgIT0gMCk7CisgICAgICAgIGRlbGV0ZSBwYWdlOworICAg
IH0KKwogfQogCiAvLyBpbXBvcnQgcHJpdmF0ZSBBUEkK
</data>
<flag name="review"
          id="22148"
          type_id="1"
          status="-"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="22149"
          type_id="3"
          status="-"
          setter="jedrzej.nowacki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40872</attachid>
            <date>2009-10-08 08:28:55 -0700</date>
            <delta_ts>2009-10-12 06:59:37 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>patchv3.diff</filename>
            <type>text/plain</type>
            <size>7284</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmlu
ZGV4IGRiYWE1YTIuLjkzYWEwMTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDA5LTEwLTA4ICBKZWRy
emVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFFXZWJQYWdlJ3MgY3JlYXRlVmlld2xl
c3NQbHVnaW4gYXV0b3Rlc3QgY3Jhc2ggZml4LgorICAgICAgICAKKyAgICAgICAgSXQgaXMgcG9z
c2libGUgdGhhdCBwbHVnaW5zIHRoYXQgYXJlIFFXaWRnZXRzIG9yIFFHcmFwaGljc1dpZGdldHMK
KyAgICAgICAgYXJlIGNyZWF0ZWQgYmVmb3JlIGEgdmlldyBoYXMgYmVlbiBhc3NpZ25lZCB0byBh
IFFXZWJQYWdlLiBUaGUKKyAgICAgICAgcGx1Zy1pbnMgd29uJ3QgYmUgZnVsbHkgZnVuY3Rpb25h
bCwgYXMgYnkgZGVzaWduLCB0aGV5IHNob3VsZAorICAgICAgICB2aXN1YWxpc2Ugc29tZXRoaW5n
LCBidXQgdGhleSB3b24ndCBjcmFzaCBhbmQgd2lsbCBzdGF5IGluIG1lbW9yeS4KKworICAgICAg
ICBBbiBhdXRvdGVzdCB0aGF0IGNvdmVycyB0aGlzIHVzZS1jYXNlLCBpcyBpbmNsdWRlZC4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAxMTgKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAg
KiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUGx1Z2luVHJhY2tl
ZFBhZ2VXaWRnZXQ6OlBsdWdpblRyYWNrZWRQYWdlV2lkZ2V0KToKKyAgICAgICAgKFBsdWdpblRy
YWNrZWRQYWdlR3JhcGhpY3NXaWRnZXQ6OlBsdWdpblRyYWNrZWRQYWdlR3JhcGhpY3NXaWRnZXQp
OgorICAgICAgICAoUGx1Z2luVHJhY2tlZFBhZ2VHcmFwaGljc1dpZGdldDo6Y3JlYXRlUGx1Z2lu
KToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6ZGVzdHJveVBsdWdpbik6CisgICAgICAgICh0c3Rf
UVdlYlBhZ2U6OmNyZWF0ZVZpZXdsZXNzUGx1Z2luKToKKwogMjAwOS0xMC0wNSAgR2lyaXNoIFJh
bWFrcmlzaG5hbiAgPGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcAppbmRleCBjMmIzNWZmLi5jZGVkNTk0IDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC0xMjMwLDkgKzEy
MzAsMTIgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBs
dWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLAogICAgICAgICBpZiAob2JqZWN0KSB7CiAg
ICAgICAgICAgICBRV2lkZ2V0KiB3aWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UVdpZGdldCo+KG9iamVj
dCk7CiAgICAgICAgICAgICBpZiAod2lkZ2V0KSB7Ci0gICAgICAgICAgICAgICAgUVdpZGdldCog
cGFyZW50V2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFXaWRnZXQqPihtX3dlYkZyYW1lLT5wYWdlKCkt
PmQtPmNsaWVudC0+cGx1Z2luUGFyZW50KCkpOwotICAgICAgICAgICAgICAgIGlmIChwYXJlbnRX
aWRnZXQpCi0gICAgICAgICAgICAgICAgICAgIHdpZGdldC0+c2V0UGFyZW50KHBhcmVudFdpZGdl
dCk7CisgICAgICAgICAgICAgICAgUVdpZGdldCogcGFyZW50V2lkZ2V0OworICAgICAgICAgICAg
ICAgIGlmIChtX3dlYkZyYW1lLT5wYWdlKCktPmQtPmNsaWVudCkKKyAgICAgICAgICAgICAgICAg
ICAgcGFyZW50V2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFXaWRnZXQqPihtX3dlYkZyYW1lLT5wYWdl
KCktPmQtPmNsaWVudC0+cGx1Z2luUGFyZW50KCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgcGFyZW50V2lkZ2V0ID0gMDsgIC8vIFRoZSBwbHVnLWluIHdvbid0
IGJlIGZ1bGx5IGZ1bmN0aW9uYWwgYmVjYXVzZSB0aGUgUVdlYlZpZXcgZG9lc24ndCBleGlzdC4K
KyAgICAgICAgICAgICAgICB3aWRnZXQtPnNldFBhcmVudChwYXJlbnRXaWRnZXQpOwogICAgICAg
ICAgICAgICAgIFJlZlB0cjxRdFBsdWdpbldpZGdldD4gdyA9IGFkb3B0UmVmKG5ldyBRdFBsdWdp
bldpZGdldCgpKTsKICAgICAgICAgICAgICAgICB3LT5zZXRQbGF0Zm9ybVdpZGdldCh3aWRnZXQp
OwogICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBpdCdzIGludmlzaWJsZSB1bnRpbCBwcm9w
ZXJseSBwbGFjZWQgaW50byB0aGUgbGF5b3V0CkBAIC0xMjQyLDggKzEyNDUsMTMgQEAgUGFzc1Jl
ZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRT
aXplJiBwbHVnaW5TaXplLAogI2lmIFFUX1ZFUlNJT04gPj0gMHgwNDA2MDAKICAgICAgICAgICAg
IFFHcmFwaGljc1dpZGdldCogZ3JhcGhpY3NXaWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UUdyYXBoaWNz
V2lkZ2V0Kj4ob2JqZWN0KTsKICAgICAgICAgICAgIGlmIChncmFwaGljc1dpZGdldCkgeworICAg
ICAgICAgICAgICAgIFFHcmFwaGljc09iamVjdCogcGFyZW50V2lkZ2V0OworICAgICAgICAgICAg
ICAgIGlmIChtX3dlYkZyYW1lLT5wYWdlKCktPmQtPmNsaWVudCkKKyAgICAgICAgICAgICAgICAg
ICAgcGFyZW50V2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFHcmFwaGljc09iamVjdCo+KG1fd2ViRnJh
bWUtPnBhZ2UoKS0+ZC0+Y2xpZW50LT5wbHVnaW5QYXJlbnQoKSk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBwYXJlbnRXaWRnZXQgPSAwOyAgLy8gVGhlIHBsdWct
aW4gd29uJ3QgYmUgZnVsbHkgZnVuY3Rpb25hbCBiZWNhdXNlIHRoZSBRV2ViVmlldyBkb2Vzbid0
IGV4aXN0LgogICAgICAgICAgICAgICAgIGdyYXBoaWNzV2lkZ2V0LT5oaWRlKCk7Ci0gICAgICAg
ICAgICAgICAgZ3JhcGhpY3NXaWRnZXQtPnNldFBhcmVudEl0ZW0ocW9iamVjdF9jYXN0PFFHcmFw
aGljc09iamVjdCo+KG1fd2ViRnJhbWUtPnBhZ2UoKS0+ZC0+Y2xpZW50LT5wbHVnaW5QYXJlbnQo
KSkpOworICAgICAgICAgICAgICAgIGdyYXBoaWNzV2lkZ2V0LT5zZXRQYXJlbnRJdGVtKHBhcmVu
dFdpZGdldCk7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFF0UGx1Z2luR3JhcGhpY3NXaWRnZXQ+
IHcgPSBRdFBsdWdpbkdyYXBoaWNzV2lkZ2V0OjpjcmVhdGUoZ3JhcGhpY3NXaWRnZXQpOwogICAg
ICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBpdCdzIGludmlzaWJsZSB1bnRpbCBwcm9wZXJseSBw
bGFjZWQgaW50byB0aGUgbGF5b3V0CiAgICAgICAgICAgICAgICAgdy0+c2V0RnJhbWVSZWN0KElu
dFJlY3QoMCwgMCwgMCwgMCkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdl
L3RzdF9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdl
LmNwcAppbmRleCBjYjY4NGJhLi45YTNmNjU5IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvdGVzdHMv
cXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2Uv
dHN0X3F3ZWJwYWdlLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgPHF3ZWJlbGVtZW50
Lmg+CiAjaW5jbHVkZSA8cXdlYnBhZ2UuaD4KICNpbmNsdWRlIDxxd2lkZ2V0Lmg+CisjaW5jbHVk
ZSA8UUdyYXBoaWNzV2lkZ2V0PgogI2luY2x1ZGUgPHF3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8cXdl
YmZyYW1lLmg+CiAjaW5jbHVkZSA8cXdlYmhpc3RvcnkuaD4KQEAgLTEwMSw3ICsxMDIsOSBAQCBw
cml2YXRlIHNsb3RzOgogICAgIHZvaWQgY29udGV4dE1lbnVDcmFzaCgpOwogICAgIHZvaWQgZGF0
YWJhc2UoKTsKICAgICB2b2lkIGNyZWF0ZVBsdWdpbigpOworICAgIHZvaWQgZGVzdHJveVBsdWdp
bl9kYXRhKCk7CiAgICAgdm9pZCBkZXN0cm95UGx1Z2luKCk7CisgICAgdm9pZCBjcmVhdGVWaWV3
bGVzc1BsdWdpbl9kYXRhKCk7CiAgICAgdm9pZCBjcmVhdGVWaWV3bGVzc1BsdWdpbigpOwogICAg
IHZvaWQgbXVsdGlwbGVQYWdlR3JvdXBzQW5kTG9jYWxTdG9yYWdlKCk7CiAgICAgdm9pZCBjdXJz
b3JNb3ZlbWVudHMoKTsKQEAgLTYyMSwyOCArNjI0LDY3IEBAIHZvaWQgdHN0X1FXZWJQYWdlOjpj
cmVhdGVQbHVnaW4oKQogICAgIFFDT01QQVJFKG5ld1BhZ2UtPmNhbGxzLmNvdW50KCksIDApOwog
fQogCi1jbGFzcyBQbHVnaW5UcmFja2VkUGFnZSA6IHB1YmxpYyBRV2ViUGFnZQorCisvLyBTdGFu
ZGFyZCBiYXNlIGNsYXNzIGZvciB0ZW1wbGF0ZSBQbHVnaW5UcmFjZXJQYWdlLiBJbiB0ZXN0cyBp
dCBpcyB1c2VkIGFzIGludGVyZmFjZS4KK2NsYXNzIFBsdWdpbkNvdW50ZXJQYWdlIDogcHVibGlj
IFFXZWJQYWdlCiB7CiBwdWJsaWM6Ci0KICAgICBpbnQgY291bnQ7Ci0gICAgUVBvaW50ZXI8UVdp
ZGdldD4gd2lkZ2V0OwotCi0gICAgUGx1Z2luVHJhY2tlZFBhZ2UoUVdpZGdldCAqcGFyZW50ID0g
MCkgOiBRV2ViUGFnZShwYXJlbnQpLCBjb3VudCgwKSB7CisgICAgUVBvaW50ZXI8UU9iamVjdD4g
d2lkZ2V0OworICAgIFBsdWdpbkNvdW50ZXJQYWdlKFFPYmplY3QqIHBhcmVudCA9IDApIDogUVdl
YlBhZ2UocGFyZW50KSwgY291bnQoMCksIHdpZGdldCgwKQorICAgIHsKICAgICAgICBzZXR0aW5n
cygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpQbHVnaW5zRW5hYmxlZCwgdHJ1ZSk7CiAg
ICAgfQorfTsKIAordGVtcGxhdGU8Y2xhc3MgVD4KK2NsYXNzIFBsdWdpblRyYWNlclBhZ2UgOiBw
dWJsaWMgUGx1Z2luQ291bnRlclBhZ2UKK3sKK3B1YmxpYzoKKyAgICBQbHVnaW5UcmFjZXJQYWdl
KFFPYmplY3QqIHBhcmVudCA9IDApIDogUGx1Z2luQ291bnRlclBhZ2UocGFyZW50KSB7fQogICAg
IHZpcnR1YWwgUU9iamVjdCogY3JlYXRlUGx1Z2luKGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRVXJs
JiwgY29uc3QgUVN0cmluZ0xpc3QmLCBjb25zdCBRU3RyaW5nTGlzdCYpIHsKLSAgICAgICBjb3Vu
dCsrOwotICAgICAgIFFXaWRnZXQgKncgPSBuZXcgUVdpZGdldDsKLSAgICAgICB3aWRnZXQgPSB3
OwotICAgICAgIHJldHVybiB3OworICAgICAgICBjb3VudCsrOworICAgICAgICByZXR1cm4gd2lk
Z2V0ID0gbmV3IFQoKTsKKyAgICB9Cit9OworCitjbGFzcyBQbHVnaW5GYWN0b3J5Cit7CitwdWJs
aWM6CisgICAgZW51bSBGYWN0b3JlZFR5cGUge1FXaWRnZXRUeXBlLCBRR3JhcGhpY3NXaWRnZXRU
eXBlfTsKKyAgICBzdGF0aWMgUGx1Z2luQ291bnRlclBhZ2UqIGNyZWF0ZShGYWN0b3JlZFR5cGUg
dHlwZSwgUU9iamVjdCogcGFyZW50ID0gMCkKKyAgICB7CisgICAgICAgIFBsdWdpbkNvdW50ZXJQ
YWdlKiByZXN1bHQgPSAwOworICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAg
ICAgY2FzZSBRV2lkZ2V0VHlwZToKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBQbHVnaW5UcmFj
ZXJQYWdlPFFXaWRnZXQ+KHBhcmVudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBRR3JhcGhpY3NXaWRnZXRUeXBlOgorICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFBsdWdpblRy
YWNlclBhZ2U8UUdyYXBoaWNzV2lkZ2V0PihwYXJlbnQpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6IHsvKk9vcHMqL307CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBwcmVwYXJlVGVzdERhdGEoKQorICAgIHsK
KyAgICAgICAgUVRlc3Q6OmFkZENvbHVtbjxpbnQ+KCJ0eXBlIik7CisgICAgICAgIFFUZXN0Ojpu
ZXdSb3coIlFXaWRnZXQiKSA8PCAoaW50KVBsdWdpbkZhY3Rvcnk6OlFXaWRnZXRUeXBlOworICAg
ICAgICBRVGVzdDo6bmV3Um93KCJRR3JhcGhpY3NXaWRnZXQiKSA8PCAoaW50KVBsdWdpbkZhY3Rv
cnk6OlFHcmFwaGljc1dpZGdldFR5cGU7CiAgICAgfQogfTsKIAordm9pZCB0c3RfUVdlYlBhZ2U6
OmRlc3Ryb3lQbHVnaW5fZGF0YSgpCit7CisgICAgUGx1Z2luRmFjdG9yeTo6cHJlcGFyZVRlc3RE
YXRhKCk7Cit9CisKIHZvaWQgdHN0X1FXZWJQYWdlOjpkZXN0cm95UGx1Z2luKCkKIHsKLSAgICBQ
bHVnaW5UcmFja2VkUGFnZSogcGFnZSA9IG5ldyBQbHVnaW5UcmFja2VkUGFnZShtX3ZpZXcpOwor
ICAgIFFGRVRDSChpbnQsIHR5cGUpOworICAgIFBsdWdpbkNvdW50ZXJQYWdlKiBwYWdlID0gUGx1
Z2luRmFjdG9yeTo6Y3JlYXRlKChQbHVnaW5GYWN0b3J5OjpGYWN0b3JlZFR5cGUpdHlwZSwgbV92
aWV3KTsKICAgICBtX3ZpZXctPnNldFBhZ2UocGFnZSk7CiAKICAgICAvLyB3ZSBjcmVhdGUgdGhl
IHBsdWdpbiwgc28gdGhlIHdpZGdldCBzaG91bGQgYmUgY29uc3RydWN0ZWQKQEAgLTY1NywxNCAr
Njk5LDIxIEBAIHZvaWQgdHN0X1FXZWJQYWdlOjpkZXN0cm95UGx1Z2luKCkKICAgICBRVkVSSUZZ
KHBhZ2UtPndpZGdldCA9PSAwKTsKIH0KIAordm9pZCB0c3RfUVdlYlBhZ2U6OmNyZWF0ZVZpZXds
ZXNzUGx1Z2luX2RhdGEoKQoreworICAgIFBsdWdpbkZhY3Rvcnk6OnByZXBhcmVUZXN0RGF0YSgp
OworfQorCiB2b2lkIHRzdF9RV2ViUGFnZTo6Y3JlYXRlVmlld2xlc3NQbHVnaW4oKQogewotICAg
IFBsdWdpblRyYWNrZWRQYWdlKiBwYWdlID0gbmV3IFBsdWdpblRyYWNrZWRQYWdlOworICAgIFFG
RVRDSChpbnQsIHR5cGUpOworICAgIFBsdWdpbkNvdW50ZXJQYWdlKiBwYWdlID0gUGx1Z2luRmFj
dG9yeTo6Y3JlYXRlKChQbHVnaW5GYWN0b3J5OjpGYWN0b3JlZFR5cGUpdHlwZSk7CiAgICAgUVN0
cmluZyBjb250ZW50KCI8aHRtbD48Ym9keT48b2JqZWN0IHR5cGU9XCJhcHBsaWNhdGlvbi94LXF0
LXBsdWdpblwiIGNsYXNzaWQ9XCJRUHJvZ3Jlc3NCYXJcIj48L29iamVjdD48L2JvZHk+PC9odG1s
PiIpOwogICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5zZXRIdG1sKGNvbnRlbnQpOwogICAgIFFDT01Q
QVJFKHBhZ2UtPmNvdW50LCAxKTsKICAgICBRVkVSSUZZKHBhZ2UtPndpZGdldCAhPSAwKTsKICAg
ICBkZWxldGUgcGFnZTsKKwogfQogCiAvLyBpbXBvcnQgcHJpdmF0ZSBBUEkK
</data>
<flag name="review"
          id="22343"
          type_id="1"
          status="-"
          setter="jedrzej.nowacki"
    />
    <flag name="commit-queue"
          id="22344"
          type_id="3"
          status="-"
          setter="jedrzej.nowacki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41040</attachid>
            <date>2009-10-12 06:59:37 -0700</date>
            <delta_ts>2009-10-12 08:06:06 -0700</delta_ts>
            <desc>patch v4</desc>
            <filename>frame.diff</filename>
            <type>text/plain</type>
            <size>7966</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmlu
ZGV4IGRiYWE1YTIuLjkzYWEwMTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDA5LTEwLTA4ICBKZWRy
emVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFFXZWJQYWdlJ3MgY3JlYXRlVmlld2xl
c3NQbHVnaW4gYXV0b3Rlc3QgY3Jhc2ggZml4LgorICAgICAgICAKKyAgICAgICAgSXQgaXMgcG9z
c2libGUgdGhhdCBwbHVnaW5zIHRoYXQgYXJlIFFXaWRnZXRzIG9yIFFHcmFwaGljc1dpZGdldHMK
KyAgICAgICAgYXJlIGNyZWF0ZWQgYmVmb3JlIGEgdmlldyBoYXMgYmVlbiBhc3NpZ25lZCB0byBh
IFFXZWJQYWdlLiBUaGUKKyAgICAgICAgcGx1Zy1pbnMgd29uJ3QgYmUgZnVsbHkgZnVuY3Rpb25h
bCwgYXMgYnkgZGVzaWduLCB0aGV5IHNob3VsZAorICAgICAgICB2aXN1YWxpc2Ugc29tZXRoaW5n
LCBidXQgdGhleSB3b24ndCBjcmFzaCBhbmQgd2lsbCBzdGF5IGluIG1lbW9yeS4KKworICAgICAg
ICBBbiBhdXRvdGVzdCB0aGF0IGNvdmVycyB0aGlzIHVzZS1jYXNlLCBpcyBpbmNsdWRlZC4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAxMTgKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAg
KiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUGx1Z2luVHJhY2tl
ZFBhZ2VXaWRnZXQ6OlBsdWdpblRyYWNrZWRQYWdlV2lkZ2V0KToKKyAgICAgICAgKFBsdWdpblRy
YWNrZWRQYWdlR3JhcGhpY3NXaWRnZXQ6OlBsdWdpblRyYWNrZWRQYWdlR3JhcGhpY3NXaWRnZXQp
OgorICAgICAgICAoUGx1Z2luVHJhY2tlZFBhZ2VHcmFwaGljc1dpZGdldDo6Y3JlYXRlUGx1Z2lu
KToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6ZGVzdHJveVBsdWdpbik6CisgICAgICAgICh0c3Rf
UVdlYlBhZ2U6OmNyZWF0ZVZpZXdsZXNzUGx1Z2luKToKKwogMjAwOS0xMC0wNSAgR2lyaXNoIFJh
bWFrcmlzaG5hbiAgPGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcAppbmRleCBjMmIzNWZmLi5jZGVkNTk0IDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC0xMjMwLDkgKzEy
MzAsMTIgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBs
dWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLAogICAgICAgICBpZiAob2JqZWN0KSB7CiAg
ICAgICAgICAgICBRV2lkZ2V0KiB3aWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UVdpZGdldCo+KG9iamVj
dCk7CiAgICAgICAgICAgICBpZiAod2lkZ2V0KSB7Ci0gICAgICAgICAgICAgICAgUVdpZGdldCog
cGFyZW50V2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFXaWRnZXQqPihtX3dlYkZyYW1lLT5wYWdlKCkt
PmQtPmNsaWVudC0+cGx1Z2luUGFyZW50KCkpOwotICAgICAgICAgICAgICAgIGlmIChwYXJlbnRX
aWRnZXQpCi0gICAgICAgICAgICAgICAgICAgIHdpZGdldC0+c2V0UGFyZW50KHBhcmVudFdpZGdl
dCk7CisgICAgICAgICAgICAgICAgUVdpZGdldCogcGFyZW50V2lkZ2V0OworICAgICAgICAgICAg
ICAgIGlmIChtX3dlYkZyYW1lLT5wYWdlKCktPmQtPmNsaWVudCkKKyAgICAgICAgICAgICAgICAg
ICAgcGFyZW50V2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFXaWRnZXQqPihtX3dlYkZyYW1lLT5wYWdl
KCktPmQtPmNsaWVudC0+cGx1Z2luUGFyZW50KCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgcGFyZW50V2lkZ2V0ID0gMDsgIC8vIFRoZSBwbHVnLWluIHdvbid0
IGJlIGZ1bGx5IGZ1bmN0aW9uYWwgYmVjYXVzZSB0aGUgUVdlYlZpZXcgZG9lc24ndCBleGlzdC4K
KyAgICAgICAgICAgICAgICB3aWRnZXQtPnNldFBhcmVudChwYXJlbnRXaWRnZXQpOwogICAgICAg
ICAgICAgICAgIFJlZlB0cjxRdFBsdWdpbldpZGdldD4gdyA9IGFkb3B0UmVmKG5ldyBRdFBsdWdp
bldpZGdldCgpKTsKICAgICAgICAgICAgICAgICB3LT5zZXRQbGF0Zm9ybVdpZGdldCh3aWRnZXQp
OwogICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBpdCdzIGludmlzaWJsZSB1bnRpbCBwcm9w
ZXJseSBwbGFjZWQgaW50byB0aGUgbGF5b3V0CkBAIC0xMjQyLDggKzEyNDUsMTMgQEAgUGFzc1Jl
ZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRT
aXplJiBwbHVnaW5TaXplLAogI2lmIFFUX1ZFUlNJT04gPj0gMHgwNDA2MDAKICAgICAgICAgICAg
IFFHcmFwaGljc1dpZGdldCogZ3JhcGhpY3NXaWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UUdyYXBoaWNz
V2lkZ2V0Kj4ob2JqZWN0KTsKICAgICAgICAgICAgIGlmIChncmFwaGljc1dpZGdldCkgeworICAg
ICAgICAgICAgICAgIFFHcmFwaGljc09iamVjdCogcGFyZW50V2lkZ2V0OworICAgICAgICAgICAg
ICAgIGlmIChtX3dlYkZyYW1lLT5wYWdlKCktPmQtPmNsaWVudCkKKyAgICAgICAgICAgICAgICAg
ICAgcGFyZW50V2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFHcmFwaGljc09iamVjdCo+KG1fd2ViRnJh
bWUtPnBhZ2UoKS0+ZC0+Y2xpZW50LT5wbHVnaW5QYXJlbnQoKSk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBwYXJlbnRXaWRnZXQgPSAwOyAgLy8gVGhlIHBsdWct
aW4gd29uJ3QgYmUgZnVsbHkgZnVuY3Rpb25hbCBiZWNhdXNlIHRoZSBRV2ViVmlldyBkb2Vzbid0
IGV4aXN0LgogICAgICAgICAgICAgICAgIGdyYXBoaWNzV2lkZ2V0LT5oaWRlKCk7Ci0gICAgICAg
ICAgICAgICAgZ3JhcGhpY3NXaWRnZXQtPnNldFBhcmVudEl0ZW0ocW9iamVjdF9jYXN0PFFHcmFw
aGljc09iamVjdCo+KG1fd2ViRnJhbWUtPnBhZ2UoKS0+ZC0+Y2xpZW50LT5wbHVnaW5QYXJlbnQo
KSkpOworICAgICAgICAgICAgICAgIGdyYXBoaWNzV2lkZ2V0LT5zZXRQYXJlbnRJdGVtKHBhcmVu
dFdpZGdldCk7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFF0UGx1Z2luR3JhcGhpY3NXaWRnZXQ+
IHcgPSBRdFBsdWdpbkdyYXBoaWNzV2lkZ2V0OjpjcmVhdGUoZ3JhcGhpY3NXaWRnZXQpOwogICAg
ICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBpdCdzIGludmlzaWJsZSB1bnRpbCBwcm9wZXJseSBw
bGFjZWQgaW50byB0aGUgbGF5b3V0CiAgICAgICAgICAgICAgICAgdy0+c2V0RnJhbWVSZWN0KElu
dFJlY3QoMCwgMCwgMCwgMCkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdl
L3RzdF9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdl
LmNwcAppbmRleCBjYjY4NGJhLi4yNGE1MjZjIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvdGVzdHMv
cXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2Uv
dHN0X3F3ZWJwYWdlLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgPHF3ZWJlbGVtZW50
Lmg+CiAjaW5jbHVkZSA8cXdlYnBhZ2UuaD4KICNpbmNsdWRlIDxxd2lkZ2V0Lmg+CisjaW5jbHVk
ZSA8UUdyYXBoaWNzV2lkZ2V0PgogI2luY2x1ZGUgPHF3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8cXdl
YmZyYW1lLmg+CiAjaW5jbHVkZSA8cXdlYmhpc3RvcnkuaD4KQEAgLTEwMSw3ICsxMDIsOSBAQCBw
cml2YXRlIHNsb3RzOgogICAgIHZvaWQgY29udGV4dE1lbnVDcmFzaCgpOwogICAgIHZvaWQgZGF0
YWJhc2UoKTsKICAgICB2b2lkIGNyZWF0ZVBsdWdpbigpOworICAgIHZvaWQgZGVzdHJveVBsdWdp
bl9kYXRhKCk7CiAgICAgdm9pZCBkZXN0cm95UGx1Z2luKCk7CisgICAgdm9pZCBjcmVhdGVWaWV3
bGVzc1BsdWdpbl9kYXRhKCk7CiAgICAgdm9pZCBjcmVhdGVWaWV3bGVzc1BsdWdpbigpOwogICAg
IHZvaWQgbXVsdGlwbGVQYWdlR3JvdXBzQW5kTG9jYWxTdG9yYWdlKCk7CiAgICAgdm9pZCBjdXJz
b3JNb3ZlbWVudHMoKTsKQEAgLTYyMSw1MCArNjI0LDkzIEBAIHZvaWQgdHN0X1FXZWJQYWdlOjpj
cmVhdGVQbHVnaW4oKQogICAgIFFDT01QQVJFKG5ld1BhZ2UtPmNhbGxzLmNvdW50KCksIDApOwog
fQogCi1jbGFzcyBQbHVnaW5UcmFja2VkUGFnZSA6IHB1YmxpYyBRV2ViUGFnZQoteworCisvLyBT
dGFuZGFyZCBiYXNlIGNsYXNzIGZvciB0ZW1wbGF0ZSBQbHVnaW5UcmFjZXJQYWdlLiBJbiB0ZXN0
cyBpdCBpcyB1c2VkIGFzIGludGVyZmFjZS4KK2NsYXNzIFBsdWdpbkNvdW50ZXJQYWdlIDogcHVi
bGljIFFXZWJQYWdlIHsKIHB1YmxpYzoKKyAgICBpbnQgbV9jb3VudDsKKyAgICBRUG9pbnRlcjxR
T2JqZWN0PiBtX3dpZGdldDsKKyAgICBQbHVnaW5Db3VudGVyUGFnZShRT2JqZWN0KiBwYXJlbnQg
PSAwKSA6IFFXZWJQYWdlKHBhcmVudCksIG1fY291bnQoMCksIG1fd2lkZ2V0KDApCisgICAgewor
ICAgICAgIHNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OlBsdWdpbnNFbmFi
bGVkLCB0cnVlKTsKKyAgICB9Cit9OwogCi0gICAgaW50IGNvdW50OwotICAgIFFQb2ludGVyPFFX
aWRnZXQ+IHdpZGdldDsKK3RlbXBsYXRlPGNsYXNzIFQ+CitjbGFzcyBQbHVnaW5UcmFjZXJQYWdl
IDogcHVibGljIFBsdWdpbkNvdW50ZXJQYWdlIHsKK3B1YmxpYzoKKyAgICBQbHVnaW5UcmFjZXJQ
YWdlKFFPYmplY3QqIHBhcmVudCA9IDApIDogUGx1Z2luQ291bnRlclBhZ2UocGFyZW50KSB7fQor
ICAgIHZpcnR1YWwgUU9iamVjdCogY3JlYXRlUGx1Z2luKGNvbnN0IFFTdHJpbmcmLCBjb25zdCBR
VXJsJiwgY29uc3QgUVN0cmluZ0xpc3QmLCBjb25zdCBRU3RyaW5nTGlzdCYpCisgICAgeworICAg
ICAgICBtX2NvdW50Kys7CisgICAgICAgIHJldHVybiBtX3dpZGdldCA9IG5ldyBUKCk7CisgICAg
fQorfTsKIAotICAgIFBsdWdpblRyYWNrZWRQYWdlKFFXaWRnZXQgKnBhcmVudCA9IDApIDogUVdl
YlBhZ2UocGFyZW50KSwgY291bnQoMCkgewotICAgICAgIHNldHRpbmdzKCktPnNldEF0dHJpYnV0
ZShRV2ViU2V0dGluZ3M6OlBsdWdpbnNFbmFibGVkLCB0cnVlKTsKK2NsYXNzIFBsdWdpbkZhY3Rv
cnkgeworcHVibGljOgorICAgIGVudW0gRmFjdG9yZWRUeXBlIHtRV2lkZ2V0VHlwZSwgUUdyYXBo
aWNzV2lkZ2V0VHlwZX07CisgICAgc3RhdGljIFBsdWdpbkNvdW50ZXJQYWdlKiBjcmVhdGUoRmFj
dG9yZWRUeXBlIHR5cGUsIFFPYmplY3QqIHBhcmVudCA9IDApCisgICAgeworICAgICAgICBQbHVn
aW5Db3VudGVyUGFnZSogcmVzdWx0ID0gMDsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
ICAgIGNhc2UgUVdpZGdldFR5cGU6CisgICAgICAgICAgICByZXN1bHQgPSBuZXcgUGx1Z2luVHJh
Y2VyUGFnZTxRV2lkZ2V0PihwYXJlbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgUUdyYXBoaWNzV2lkZ2V0VHlwZToKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBQbHVnaW5U
cmFjZXJQYWdlPFFHcmFwaGljc1dpZGdldD4ocGFyZW50KTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBkZWZhdWx0OiB7LypPb3BzKi99OworICAgICAgICB9CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgdmlydHVhbCBRT2JqZWN0KiBjcmVhdGVQbHVnaW4oY29uc3Qg
UVN0cmluZyYsIGNvbnN0IFFVcmwmLCBjb25zdCBRU3RyaW5nTGlzdCYsIGNvbnN0IFFTdHJpbmdM
aXN0JikgewotICAgICAgIGNvdW50Kys7Ci0gICAgICAgUVdpZGdldCAqdyA9IG5ldyBRV2lkZ2V0
OwotICAgICAgIHdpZGdldCA9IHc7Ci0gICAgICAgcmV0dXJuIHc7CisgICAgc3RhdGljIHZvaWQg
cHJlcGFyZVRlc3REYXRhKCkKKyAgICB7CisgICAgICAgIFFUZXN0OjphZGRDb2x1bW48aW50Pigi
dHlwZSIpOworICAgICAgICBRVGVzdDo6bmV3Um93KCJRV2lkZ2V0IikgPDwgKGludClQbHVnaW5G
YWN0b3J5OjpRV2lkZ2V0VHlwZTsKKyAgICAgICAgUVRlc3Q6Om5ld1JvdygiUUdyYXBoaWNzV2lk
Z2V0IikgPDwgKGludClQbHVnaW5GYWN0b3J5OjpRR3JhcGhpY3NXaWRnZXRUeXBlOwogICAgIH0K
IH07CiAKK3ZvaWQgdHN0X1FXZWJQYWdlOjpkZXN0cm95UGx1Z2luX2RhdGEoKQoreworICAgIFBs
dWdpbkZhY3Rvcnk6OnByZXBhcmVUZXN0RGF0YSgpOworfQorCiB2b2lkIHRzdF9RV2ViUGFnZTo6
ZGVzdHJveVBsdWdpbigpCiB7Ci0gICAgUGx1Z2luVHJhY2tlZFBhZ2UqIHBhZ2UgPSBuZXcgUGx1
Z2luVHJhY2tlZFBhZ2UobV92aWV3KTsKKyAgICBRRkVUQ0goaW50LCB0eXBlKTsKKyAgICBQbHVn
aW5Db3VudGVyUGFnZSogcGFnZSA9IFBsdWdpbkZhY3Rvcnk6OmNyZWF0ZSgoUGx1Z2luRmFjdG9y
eTo6RmFjdG9yZWRUeXBlKXR5cGUsIG1fdmlldyk7CiAgICAgbV92aWV3LT5zZXRQYWdlKHBhZ2Up
OwogCiAgICAgLy8gd2UgY3JlYXRlIHRoZSBwbHVnaW4sIHNvIHRoZSB3aWRnZXQgc2hvdWxkIGJl
IGNvbnN0cnVjdGVkCiAgICAgUVN0cmluZyBjb250ZW50KCI8aHRtbD48Ym9keT48b2JqZWN0IHR5
cGU9XCJhcHBsaWNhdGlvbi94LXF0LXBsdWdpblwiIGNsYXNzaWQ9XCJRUHJvZ3Jlc3NCYXJcIj48
L29iamVjdD48L2JvZHk+PC9odG1sPiIpOwogICAgIG1fdmlldy0+c2V0SHRtbChjb250ZW50KTsK
LSAgICBRVkVSSUZZKHBhZ2UtPndpZGdldCAhPSAwKTsKLSAgICBRQ09NUEFSRShwYWdlLT5jb3Vu
dCwgMSk7CisgICAgUVZFUklGWShwYWdlLT5tX3dpZGdldCk7CisgICAgUUNPTVBBUkUocGFnZS0+
bV9jb3VudCwgMSk7CiAKICAgICAvLyBuYXZpZ2F0ZSBhd2F5LCB0aGUgcGx1Z2luIHdpZGdldCBz
aG91bGQgYmUgZGVzdHJ1Y3RlZAogICAgIG1fdmlldy0+c2V0SHRtbCgiPGh0bWw+PGJvZHk+SGk8
L2JvZHk+PC9odG1sPiIpOwogICAgIFFUZXN0RXZlbnRMb29wOjppbnN0YW5jZSgpLmVudGVyTG9v
cCgxKTsKLSAgICBRVkVSSUZZKHBhZ2UtPndpZGdldCA9PSAwKTsKKyAgICBRVkVSSUZZKCFwYWdl
LT5tX3dpZGdldCk7Cit9CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjpjcmVhdGVWaWV3bGVzc1BsdWdp
bl9kYXRhKCkKK3sKKyAgICBQbHVnaW5GYWN0b3J5OjpwcmVwYXJlVGVzdERhdGEoKTsKIH0KIAog
dm9pZCB0c3RfUVdlYlBhZ2U6OmNyZWF0ZVZpZXdsZXNzUGx1Z2luKCkKIHsKLSAgICBQbHVnaW5U
cmFja2VkUGFnZSogcGFnZSA9IG5ldyBQbHVnaW5UcmFja2VkUGFnZTsKKyAgICBRRkVUQ0goaW50
LCB0eXBlKTsKKyAgICBQbHVnaW5Db3VudGVyUGFnZSogcGFnZSA9IFBsdWdpbkZhY3Rvcnk6OmNy
ZWF0ZSgoUGx1Z2luRmFjdG9yeTo6RmFjdG9yZWRUeXBlKXR5cGUpOwogICAgIFFTdHJpbmcgY29u
dGVudCgiPGh0bWw+PGJvZHk+PG9iamVjdCB0eXBlPVwiYXBwbGljYXRpb24veC1xdC1wbHVnaW5c
IiBjbGFzc2lkPVwiUVByb2dyZXNzQmFyXCI+PC9vYmplY3Q+PC9ib2R5PjwvaHRtbD4iKTsKICAg
ICBwYWdlLT5tYWluRnJhbWUoKS0+c2V0SHRtbChjb250ZW50KTsKLSAgICBRQ09NUEFSRShwYWdl
LT5jb3VudCwgMSk7Ci0gICAgUVZFUklGWShwYWdlLT53aWRnZXQgIT0gMCk7CisgICAgUUNPTVBB
UkUocGFnZS0+bV9jb3VudCwgMSk7CisgICAgUVZFUklGWShwYWdlLT5tX3dpZGdldCk7CiAgICAg
ZGVsZXRlIHBhZ2U7CisKIH0KIAogLy8gaW1wb3J0IHByaXZhdGUgQVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>