<?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>52449</bug_id>
          
          <creation_ts>2011-01-14 08:13:56 -0800</creation_ts>
          <short_desc>Crash when logging into gmail.com with frame flattening turned on.</short_desc>
          <delta_ts>2011-02-25 11:01:57 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yael">yael</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ademar</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>koivisto</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mike.zraly</cc>
    
    <cc>mitz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>nancy.piedra</cc>
    
    <cc>ostap73</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>suresh.voruganti</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>334311</commentid>
    <comment_count>0</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-01-14 08:13:56 -0800</bug_when>
    <thetext>Using QtTestBrowser with frame flattening turned on, this crash is very consistent when logging into gmail.com. (On mac and Symbian).
In debug builds we hit ASSERT, in release builds, infinite loop.

0	WebCore::Document::updateStyleIfNeeded	Document.cpp	1633	0x0000000100789bcd	
1	WebCore::Document::updateLayout	Document.cpp	1668	0x00000001007899be	
2	WebCore::Document::updateLayout	Document.cpp	1666	0x00000001007899a8	
3	WebCore::Document::updateLayoutIgnorePendingStylesheets	Document.cpp	1704	0x000000010078bb30	
4	WebCore::Element::clientWidth	Element.cpp	381	0x00000001007d393c	
5	WebCore::jsElementClientWidth	JSElement.cpp	351	0x00000001002b47d7	
6	JSC::PropertySlot::getValue	PropertySlot.h	78	0x000000010024bea2	
7	JSC::JSValue::get	JSObject.h	661	0x00000001006020bc	
8	cti_op_get_by_id	JITStubs.cpp	1657	0x00000001011fcc0e	
9	WTF::doubleHash	HashTable.h	447	0x00000001011f0541	
10	JSC::JITCode::execute	JITCode.h	77	0x00000001011cbe57	
11	JSC::Interpreter::executeCall	Interpreter.cpp	849	0x00000001011c5b8f	
12	JSC::call	CallData.cpp	38	0x0000000101248551	
13	WebCore::JSMainThreadExecState::call	JSMainThreadExecState.h	48	0x00000001005c104d	
14	WebCore::JSEventListener::handleEvent	JSEventListener.cpp	124	0x00000001005edcc5	
15	WebCore::EventTarget::fireEventListeners	EventTarget.cpp	342	0x00000001007dd283	
16	WebCore::EventTarget::fireEventListeners	EventTarget.cpp	311	0x00000001007ddbf5	
17	WebCore::DOMWindow::dispatchEvent	DOMWindow.cpp	1549	0x0000000100b328af	
18	WebCore::Document::dispatchWindowEvent	Document.cpp	3498	0x00000001007865d0	
19	WebCore::EventHandler::sendResizeEvent	EventHandler.cpp	2795	0x0000000100b44c56	
20	WebCore::FrameView::performPostLayoutTasks	FrameView.cpp	1839	0x0000000100b6bdd6	
21	WebCore::FrameView::layout	FrameView.cpp	928	0x0000000100b6f57c	
22	WebCore::FrameView::visibleContentsResized	FrameView.cpp	1393	0x0000000100b6fd0c	
23	WebCore::ScrollView::updateScrollbars	ScrollView.cpp	424	0x0000000100c2edf5	
24	WebCore::ScrollView::setFrameRect	ScrollView.cpp	789	0x0000000100c2fce2	
25	WebCore::FrameView::setFrameRect	FrameView.cpp	335	0x0000000100b707bc	
26	WebCore::RenderWidget::setWidgetGeometry	RenderWidget.cpp	177	0x0000000100da0c91	
27	WebCore::RenderWidget::updateWidgetPosition	RenderWidget.cpp	352	0x0000000100da0ea7	
28	WebCore::RenderFrameBase::layoutWithFlattening	RenderFrameBase.cpp	55	0x0000000100d00f51	
29	WebCore::RenderIFrame::layout	RenderIFrame.cpp	114	0x0000000100d056ec	
30	WebCore::RenderObject::layoutIfNeeded	RenderObject.h	501	0x0000000100cc7b57	
31	WebCore::RenderBlock::layoutInlineChildren	RenderBlockLineLayout.cpp	566	0x0000000100cc5764	
32	WebCore::RenderBlock::layoutBlock	RenderBlock.cpp	1230	0x0000000100ca4752	
33	WebCore::RenderBlock::layout	RenderBlock.cpp	1128	0x0000000100ca32f4	
34	WebCore::RenderBlock::layoutBlockChild	RenderBlock.cpp	1959	0x0000000100ca25fc	
35	WebCore::RenderBlock::layoutBlockChildren	RenderBlock.cpp	1897	0x0000000100ca40fa	
36	WebCore::RenderBlock::layoutBlock	RenderBlock.cpp	1232	0x0000000100ca476b	
37	WebCore::RenderBlock::layout	RenderBlock.cpp	1128	0x0000000100ca32f4	
38	WebCore::RenderBlock::layoutBlockChild	RenderBlock.cpp	1959	0x0000000100ca25fc	
39	WebCore::RenderBlock::layoutBlockChildren	RenderBlock.cpp	1897	0x0000000100ca40fa	
40	WebCore::RenderBlock::layoutBlock	RenderBlock.cpp	1232	0x0000000100ca476b	
41	WebCore::RenderBlock::layout	RenderBlock.cpp	1128	0x0000000100ca32f4	
42	WebCore::RenderBlock::layoutBlockChild	RenderBlock.cpp	1959	0x0000000100ca25fc	
43	WebCore::RenderBlock::layoutBlockChildren	RenderBlock.cpp	1897	0x0000000100ca40fa	
44	WebCore::RenderBlock::layoutBlock	RenderBlock.cpp	1232	0x0000000100ca476b	
45	WebCore::RenderBlock::layout	RenderBlock.cpp	1128	0x0000000100ca32f4	
46	WebCore::RenderView::layout	RenderView.cpp	130	0x0000000100d97ef1	
47	WebCore::FrameView::layout	FrameView.cpp	872	0x0000000100b6f2b0	
48	WebCore::FrameView::visibleContentsResized	FrameView.cpp	1393	0x0000000100b6fd0c	
49	WebCore::ScrollView::updateScrollbars	ScrollView.cpp	424	0x0000000100c2edf5	
50	WebCore::ScrollView::setScrollbarModes	ScrollView.cpp	156	0x0000000100c300ce	
51	WebCore::FrameView::layout	FrameView.cpp	837	0x0000000100b6f04c	
52	WebCore::Document::updateLayout	Document.cpp	1673	0x0000000100789a22	
53	WebCore::Document::updateLayout	Document.cpp	1666	0x00000001007899a8	
54	WebCore::Document::updateLayoutIgnorePendingStylesheets	Document.cpp	1704	0x000000010078bb30	
55	WebCore::Element::clientWidth	Element.cpp	381	0x00000001007d393c	
56	WebCore::jsElementClientWidth	JSElement.cpp	351	0x00000001002b47d7	
57	JSC::PropertySlot::getValue	PropertySlot.h	78	0x000000010024bea2	
58	JSC::JSValue::get	JSObject.h	661	0x00000001006020bc	
59	cti_op_get_by_id	JITStubs.cpp	1657	0x00000001011fcc0e	
60	WTF::doubleHash	HashTable.h	447	0x00000001011f0541	
61	JSC::JITCode::execute	JITCode.h	77	0x00000001011cbe57	
62	JSC::Interpreter::execute	Interpreter.cpp	778	0x00000001011c6ae5	
63	JSC::evaluate	Completion.cpp	62	0x00000001012525d2	
64	WebCore::JSMainThreadExecState::evaluate	JSMainThreadExecState.h	54	0x00000001005fa419	
65	WebCore::ScriptController::evaluateInWorld	ScriptController.cpp	148	0x000000010060ee79	
66	WebCore::ScriptController::evaluate	ScriptController.cpp	171	0x000000010060f2d6	
67	WebCore::ScriptController::executeScript	ScriptControllerBase.cpp	60	0x00000001005b5dd6	
68	WebCore::ScriptElement::executeScript	ScriptElement.cpp	216	0x0000000100825a5b	
69	WebCore::HTMLScriptRunner::runScript	HTMLScriptRunner.cpp	316	0x00000001009cf11f	
70	WebCore::HTMLScriptRunner::execute	HTMLScriptRunner.cpp	173	0x00000001009cfd17	
71	WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder	HTMLDocumentParser.cpp	199	0x00000001009c1454	
72	WebCore::HTMLDocumentParser::pumpTokenizer	HTMLDocumentParser.cpp	244	0x00000001009c1a2b	
73	WebCore::HTMLDocumentParser::pumpTokenizerIfPossible	HTMLDocumentParser.cpp	169	0x00000001009c1d40	
74	WebCore::HTMLDocumentParser::append	HTMLDocumentParser.cpp	320	0x00000001009c222b	
75	WebCore::DecodedDataDocumentParser::appendBytes	DecodedDataDocumentParser.cpp	54	0x0000000100776775	
76	WebCore::DocumentWriter::addData	DocumentWriter.cpp	200	0x0000000100abb3a6	
77	WebCore::DocumentLoader::commitData	DocumentLoader.cpp	310	0x0000000100aad5dc	
78	WebCore::FrameLoaderClientQt::committedLoad	FrameLoaderClientQt.cpp	882	0x0000000100e4fd38	
79	WebCore::DocumentLoader::commitLoad	DocumentLoader.cpp	295	0x0000000100aad6dc	
80	WebCore::DocumentLoader::receivedData	DocumentLoader.cpp	322	0x0000000100aad75a	
81	WebCore::MainResourceLoader::addData	MainResourceLoader.cpp	157	0x0000000100ae29fc	
82	WebCore::ResourceLoader::didReceiveData	ResourceLoader.cpp	278	0x0000000100af0312	
83	WebCore::MainResourceLoader::didReceiveData	MainResourceLoader.cpp	442	0x0000000100ae1e9f	
84	WebCore::ResourceLoader::didReceiveData	ResourceLoader.cpp	429	0x0000000100aefaa0	
85	WebCore::QNetworkReplyHandler::forwardData	QNetworkReplyHandler.cpp	482	0x0000000100e1670d	
86	WebCore::QNetworkReplyHandler::qt_metacall	moc_QNetworkReplyHandler.cpp	86	0x0000000100e18834	
87	QObject::event		0	0x000000010776c169	
88	QApplicationPrivate::notify_helper		0	0x0000000106a3628d	
89	QApplication::notify		0	0x0000000106a3db2e	
90	QCoreApplication::notifyInternal		0	0x00000001076827cc	
91	QCoreApplicationPrivate::sendPostedEvents		0	0x000000010775f2ab	
92	__CFRunLoopDoSources0		0	0x00007fff8804b401	
93	__CFRunLoopRun		0	0x00007fff880495f9	
94	CFRunLoopRunSpecific		0	0x00007fff88048dbf	
95	RunCurrentEventLoopInMode		0	0x00007fff8293991a	
96	ReceiveNextEventCommon		0	0x00007fff8293971f	
97	BlockUntilNextEventMatchingListInMode		0	0x00007fff829395d8	
98	_DPSNextEvent		0	0x00007fff86aa2e64	
99	-[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]		0	0x00007fff86aa27a9	
100	-[NSApplication run]		0	0x00007fff86a6848b	
101	QEventDispatcherMac::processEvents		0	0x00000001069f2084	
102	QEventLoop::processEvents		0	0x000000010775dc14	
103	QEventLoop::exec		0	0x000000010775df34	
104	QCoreApplication::exec		0	0x000000010775f55c	
105	launcherMain	main.cpp	41	0x0000000100011163	
106	main	main.cpp	274	0x000000010001186d</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334314</commentid>
    <comment_count>1</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-01-14 08:19:09 -0800</bug_when>
    <thetext>The reason for the crash is that the resizeEvent causes a size change, which triggers a layout, and another resize event ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334317</commentid>
    <comment_count>2</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-01-14 08:37:25 -0800</bug_when>
    <thetext>is resizesToContent ON? related to bug 43852?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334347</commentid>
    <comment_count>3</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2011-01-14 09:19:33 -0800</bug_when>
    <thetext>Antonio, resizesToContent is not ON, this seems to be a different issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334385</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-14 10:23:05 -0800</bug_when>
    <thetext>Recursive layout?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334978</commentid>
    <comment_count>5</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-01-15 17:55:29 -0800</bug_when>
    <thetext>This bug appears only with frame flattening turned on.
I can reproduce this crash very easily with this markup:

Main frame:
&lt;!DOCTYPE html&gt;
&lt;html &gt;
&lt;head&gt;
&lt;style&gt;
#My { background-color: blue; width: 100px; height: 100px; }
&lt;/style&gt;
&lt;/head&gt;
&lt;body &gt;
&lt;iframe id=&quot;My&quot; src=&quot;frm.html&quot;&gt;&lt;/iframe&gt;
&lt;/body&gt;&lt;/html&gt;

IFrame:
&lt;!DOCTYPE html&gt;
&lt;script&gt;
function res() { 
var i = document.getElementsByTagName(&apos;html&apos;)[0].clientWidth; 
}
&lt;/script&gt;
&lt;style&gt;
#p { border: 4px solid red;}
&lt;/style&gt;
&lt;body onresize=&quot;res();&quot;&gt;
&lt;div id=&apos;p&apos;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt; 
&lt;script&gt; 
&lt;/script&gt;
&lt;/body&gt;&lt;/html&gt;

When we do frame flattening, after we &quot;flatten&quot; the frame, we schedule a relayout of all ancestors. See comment in FrameView::scheduleRelayout().
Then we send a resize event for the resized iframe while a new layout is pending for its parent. 
Callbacks from the resize event handler to the DOM trigger the new layout recursively.

I think we should not send a resize event on iframes when we do frame flattening. The resize event is supposed to tell the JavaScript that the user resized the page or frame, not that the browser resized the frame programmatically.
Patch coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334979</commentid>
    <comment_count>6</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-01-15 18:02:09 -0800</bug_when>
    <thetext>(In reply to comment #5)

&gt; I think we should not send a resize event on iframes when we do frame flattening.

Perhaps.

&gt; The resize event is supposed to tell the JavaScript that the user resized the page or frame, not that the browser resized the frame programmatically.

I am not sure that is correct. With frame flattening disabled, we always fire the resize event when an iframe’s size changes, regardless of the reason (which is typically layout of the containing document). This makes sense to me, because whatever the event handler does to adapt the document to the new size most likely needs to be done regardless of how the frame was resized.

I think the right fix for this should be along the lines of making the post-layout-task-deferral mechanism act on a document scope instead of on a single frame scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335278</commentid>
    <comment_count>7</comment_count>
    <who name="Suresh Voruganti">suresh.voruganti</who>
    <bug_when>2011-01-17 06:11:11 -0800</bug_when>
    <thetext>Fix required for Qtwebkit 2.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335432</commentid>
    <comment_count>8</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-01-17 12:01:37 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I think the right fix for this should be along the lines of making the post-layout-task-deferral mechanism act on a document scope instead of on a single frame scope.

While working on a solution that defers the post-layout tasks, I hit the problem that if we start a layout with (m_hasPendingPostLayoutTasks == true), we call performPostLayoutTasks() before the layout and now that crashes :(

Is it ok to skip this call if we are about to do another layout ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335436</commentid>
    <comment_count>9</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-01-17 12:06:46 -0800</bug_when>
    <thetext>Yes, post-layout tasks are the tasks that may be deferred unti after layout() returns. There’s a mechanism that sometimes schedules them on a 0-delay timer (roughly speaking, the code tries to perform post-layout tasks synchronously immediately after layout once, but if they need to be performed again, it will schedule them asynchronously). I suspect that the mechanism might be defeated in certain nested-frame configurations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336303</commentid>
    <comment_count>10</comment_count>
      <attachid>79384</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-01-18 19:23:56 -0800</bug_when>
    <thetext>Created attachment 79384
Work in progress.

This patch is work in progress. It breaks 3 compositioning/iframes tests that I need to figure out why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336315</commentid>
    <comment_count>11</comment_count>
      <attachid>79384</attachid>
    <who name="">mitz</who>
    <bug_when>2011-01-18 20:09:12 -0800</bug_when>
    <thetext>Comment on attachment 79384
Work in progress.

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

&gt; Source/WebCore/page/FrameView.cpp:2282
&gt; +    while (needsLayout());

What? :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336444</commentid>
    <comment_count>12</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-01-19 05:50:21 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 79384 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79384&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/FrameView.cpp:2282
&gt; &gt; +    while (needsLayout());
&gt; 
&gt; What? :-)

Looks strange, doesn&apos;t it ?
When we do layout with frame flattening, the child frame marks its parent for layout again and again until there are no more changes.

Without this change, if we try to paint when a layout is pending (e.g. during load), we first call updateLayoutAndStyleIfNeededRecursive, but when we exit this function, the parent still has its layout flag set, and we ASSERT in paintContents()

Could you please suggest how to resolve this in a better way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336448</commentid>
    <comment_count>13</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-01-19 05:53:11 -0800</bug_when>
    <thetext>Is there an example other than frame flattening, of something that needs to do layout in asynchronous way? I would try to understand how it is done there and hopefully find a better solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336569</commentid>
    <comment_count>14</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-01-19 09:10:12 -0800</bug_when>
    <thetext>Some compositing use cases seem to suffer from a similar problem. Bug #41999 is one example of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336674</commentid>
    <comment_count>15</comment_count>
      <attachid>79457</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-01-19 11:35:08 -0800</bug_when>
    <thetext>Created attachment 79457
Still work in progress

This patch fixes the regression in compositioning/iframes. Apparently, we have to keep the calls to performPostLayoutTasks from inside nested layouts.

Mitz, you did not like the way I force multiple layouts, could you please suggest a better way of doing it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338272</commentid>
    <comment_count>16</comment_count>
      <attachid>79776</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-01-21 12:36:20 -0800</bug_when>
    <thetext>Created attachment 79776
Patch

Frame flattening algorithm requires that layout always starts from the main frame, since layout of subframes impacts the layout of their parents. There are places in the code that call view-&gt;layout() not on the main frame. Instead of changing all the callsites, I changed FrameView::layout() to force layout from the main frame if frame flattening is enabled.
In addition, postLayoutTasks can trigger relayout, so make it use the timer even more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338986</commentid>
    <comment_count>17</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-01-24 07:02:55 -0800</bug_when>
    <thetext>If we call document::updateLayout() when a style recalc is pending on the iframe document, what happens is 
1. We do layout, starting from the main frame.
2. Update the style of the iframe
3. We do a second layout, but this time we don&apos;t start from the main frame. We start from the iframe. As a result, when frame flattening is enabled, we get out of updateLayout() with a layout still pending in the main frame, and that can cause all sorts of problems. My patch is preventing that situation by forcing the second layout round to start from the main frame as well if frame flattening is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339028</commentid>
    <comment_count>18</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-24 08:29:39 -0800</bug_when>
    <thetext>It seems that if frame flattening is enabled, a layout in any frame should be treated as a layout of the main frame and all subframes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339044</commentid>
    <comment_count>19</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-01-24 08:51:46 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; It seems that if frame flattening is enabled, a layout in any frame should be treated as a layout of the main frame and all subframes.

That is what my patch is doing - checking if the layout of an iframe was started from the main frame ( by checking parentView-&gt;m_nestedLayoutCount), and if not, call layout on the main frmae.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340501</commentid>
    <comment_count>20</comment_count>
      <attachid>80244</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-01-26 15:00:04 -0800</bug_when>
    <thetext>Created attachment 80244
another strategy

This simpler patch fixes the test case (without affecting other tests). The idea is to avoid running synchronous post-layout tasks when in nested layout (which happens in frame flattening case).

Yael, could you try it a bit in real world cases to see if it is sufficient?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340574</commentid>
    <comment_count>21</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-01-26 16:36:22 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Created an attachment (id=80244) [details]
&gt; another strategy
&gt; 
&gt; This simpler patch fixes the test case (without affecting other tests). The idea is to avoid running synchronous post-layout tasks when in nested layout (which happens in frame flattening case).
&gt; 
&gt; Yael, could you try it a bit in real world cases to see if it is sufficient?

Thank you for taking the time to look at this error. I will test it tomorrow morning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340645</commentid>
    <comment_count>22</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-01-26 17:37:21 -0800</bug_when>
    <thetext>I did not test this on Symbian yet, but this was crashing (ASSERT) on Linux :

ASSERTION FAILED: !view() || (!view()-&gt;isInLayout() &amp;&amp; !view()-&gt;isPainting())
(../../../../Source/WebCore/dom/Document.cpp:1639 virtual void WebCore::Document::updateStyleIfNeeded())
Segmentation fault</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340846</commentid>
    <comment_count>23</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-01-27 05:48:25 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; I did not test this on Symbian yet, but this was crashing (ASSERT) on Linux :
&gt; 
&gt; ASSERTION FAILED: !view() || (!view()-&gt;isInLayout() &amp;&amp; !view()-&gt;isPainting())
&gt; (../../../../Source/WebCore/dom/Document.cpp:1639 virtual void WebCore::Document::updateStyleIfNeeded())
&gt; Segmentation fault

To be clear, I was able to load gmail.com with the patch, but then I clicked with the mouse either on empty area or on a link and got the ASSERT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340858</commentid>
    <comment_count>24</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-01-27 06:26:26 -0800</bug_when>
    <thetext>Antti, you asked me on IRC why do we call postLayoutTasks synchronously before starting  a new layout:
It was introduced in http://trac.webkit.org/changeset/28371, when the method performPostLayoutTasks was introduced.
The test that was introduced in that patch is still passing, and we still send resize events for iframes, so I think that change should be ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340899</commentid>
    <comment_count>25</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-01-27 09:29:10 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Antti, you asked me on IRC why do we call postLayoutTasks synchronously before starting  a new layout:
&gt; It was introduced in http://trac.webkit.org/changeset/28371, when the method performPostLayoutTasks was introduced.
&gt; The test that was introduced in that patch is still passing, and we still send resize events for iframes, so I think that change should be ok.

Thats a good information.

What is the stack for the assert after loading the page? Could you make a test case for it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340906</commentid>
    <comment_count>26</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-01-27 10:05:38 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; 
&gt; What is the stack for the assert after loading the page? Could you make a test case for it?

Below is the callstack. I am still working on updating the test case.

0	WebCore::Document::updateStyleIfNeeded	Document.cpp	1644	0x0180c6de	
1	WebCore::Document::updateLayout	Document.cpp	1679	0x0180c93d	
2	WebCore::Document::updateLayout	Document.cpp	1677	0x0180c929	
3	WebCore::Document::updateLayoutIgnorePendingStylesheets	Document.cpp	1715	0x0180ca89	
4	WebCore::VisiblePosition::canonicalPosition	VisiblePosition.cpp	459	0x01978a18	
5	WebCore::VisiblePosition::init	VisiblePosition.cpp	61	0x01976e4e	
6	WebCore::VisiblePosition::VisiblePosition	VisiblePosition.cpp	48	0x01976bda	
7	WebCore::SelectionController::updateCaretRect	SelectionController.cpp	980	0x0195e48c	
8	WebCore::SelectionController::localCaretRect	SelectionController.cpp	1032	0x0195e7d1	
9	WebCore::SelectionController::recomputeCaretRect	SelectionController.cpp	1083	0x0195eaac	
10	WebCore::SelectionController::updateAppearance	SelectionController.cpp	1490	0x01960ac0	
11	WebCore::FrameView::layout	FrameView.cpp	897	0x01bef352	
12	WebCore::FrameView::visibleContentsResized	FrameView.cpp	1406	0x01bf1240	
13	WebCore::ScrollView::updateScrollbars	ScrollView.cpp	418	0x01cbfc07	
14	WebCore::ScrollView::setFrameRect	ScrollView.cpp	774	0x01cc1758	
15	WebCore::FrameView::setFrameRect	FrameView.cpp	338	0x01bed812	
16	WebCore::RenderWidget::setWidgetGeometry	RenderWidget.cpp	176	0x01e33030	
17	WebCore::RenderWidget::updateWidgetPosition	RenderWidget.cpp	344	0x01e33ef8	
18	WebCore::RenderFrameBase::layoutWithFlattening	RenderFrameBase.cpp	55	0x01d94151	
19	WebCore::RenderIFrame::layout	RenderIFrame.cpp	114	0x01d98bb5	
20	WebCore::RenderObject::layoutIfNeeded	RenderObject.h	503	0x01d237c9	
21	WebCore::RenderBlock::layoutInlineChildren	RenderBlockLineLayout.cpp	569	0x01d57275	
22	WebCore::RenderBlock::layoutBlock	RenderBlock.cpp	1221	0x01d2b317	
23	WebCore::RenderBlock::layout	RenderBlock.cpp	1119	0x01d2ad1e	
24	WebCore::RenderBlock::layoutBlockChild	RenderBlock.cpp	1958	0x01d2e2b8	
25	WebCore::RenderBlock::layoutBlockChildren	RenderBlock.cpp	1896	0x01d2df73	
26	WebCore::RenderBlock::layoutBlock	RenderBlock.cpp	1223	0x01d2b336	
27	WebCore::RenderBlock::layout	RenderBlock.cpp	1119	0x01d2ad1e	
28	WebCore::RenderBlock::layoutBlockChild	RenderBlock.cpp	1958	0x01d2e2b8	
29	WebCore::RenderBlock::layoutBlockChildren	RenderBlock.cpp	1896	0x01d2df73	
30	WebCore::RenderBlock::layoutBlock	RenderBlock.cpp	1223	0x01d2b336	
31	WebCore::RenderBlock::layout	RenderBlock.cpp	1119	0x01d2ad1e	
32	WebCore::RenderBlock::layoutBlockChild	RenderBlock.cpp	1958	0x01d2e2b8	
33	WebCore::RenderBlock::layoutBlockChildren	RenderBlock.cpp	1896	0x01d2df73	
34	WebCore::RenderBlock::layoutBlock	RenderBlock.cpp	1223	0x01d2b336	
35	WebCore::RenderBlock::layout	RenderBlock.cpp	1119	0x01d2ad1e	
36	WebCore::RenderView::layout	RenderView.cpp	130	0x01e27732	
37	WebCore::FrameView::layout	FrameView.cpp	884	0x01bef2b1	
38	WebCore::FrameView::layoutTimerFired	FrameView.cpp	1522	0x01bf1855	
39	WebCore::Timer&lt;WebCore::FrameView&gt;::fired	Timer.h	99	0x01bf9960	
40	WebCore::ThreadTimers::sharedTimerFiredInternal	ThreadTimers.cpp	112	0x01cd54a3	
41	WebCore::ThreadTimers::sharedTimerFired	ThreadTimers.cpp	90	0x01cd53ed	
42	WebCore::SharedTimerQt::timerEvent	SharedTimerQt.cpp	116	0x01ec40aa	
43	QObject::event	qobject.cpp	1175	0x0456249c	
44	QApplicationPrivate::notify_helper	qapplication.cpp	4396	0x038617b6	
45	QApplication::notify	qapplication.cpp	3798	0x0385effa	
46	QCoreApplication::notifyInternal	qcoreapplication.cpp	732	0x0454962f	
47	QCoreApplication::sendEvent	qcoreapplication.h	215	0x0806e02f	
48	QTimerInfoList::activateTimers	qeventdispatcher_unix.cpp	602	0x045865ce	
49	timerSourceDispatch	qeventdispatcher_glib.cpp	184	0x04582140	
50	g_main_context_dispatch	/lib/libglib-2.0.so.0	0	0x0542f5e5	
51	??	/lib/libglib-2.0.so.0	0	0x054332d8	
52	g_main_context_iteration	/lib/libglib-2.0.so.0	0	0x054334b8	
53	QEventDispatcherGlib::processEvents	qeventdispatcher_glib.cpp	415	0x04583312	
54	QGuiEventDispatcherGlib::processEvents	qguieventdispatcher_glib.cpp	204	0x0393c5fe	
55	QEventLoop::processEvents	qeventloop.cpp	149	0x045469ef	
56	QEventLoop::exec	qeventloop.cpp	201	0x04546b34	
57	QCoreApplication::exec	qcoreapplication.cpp	1009	0x04549d21	
58	QApplication::exec	qapplication.cpp	3672	0x0385ec50	
59	launcherMain	main.cpp	41	0x080701fb	
60	main	main.cpp	274	0x08072644</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340965</commentid>
    <comment_count>27</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-01-27 11:19:54 -0800</bug_when>
    <thetext>huh! Same use case crashes with my patch too. Removing the review flag for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346814</commentid>
    <comment_count>28</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-07 14:43:05 -0800</bug_when>
    <thetext>Seems like selections and frame flattening do not want to work together. :(
With frame flattening we do layout recursively, and when we finish the layout of the iframe, we update the selection of that iframe. The parent frame still has its layout flag turned on, and that is causing the crash in comment #26.
This simple example will crash when frame flattening is on:

main frame:
&lt;!DOCTYPE html&gt;
&lt;html &gt;
&lt;body &gt;
&lt;iframe id=&quot;My&quot; src=&quot;child.html&quot;&gt;&lt;/iframe&gt;
&lt;/body&gt;&lt;/html&gt;


iframe (child.html)
&lt;!DOCTYPE html&gt;
&lt;script&gt;
window.onload=function(){
    document.getElementById(&apos;in&apos;).focus(); 
    document.getElementById(&apos;p&apos;).appendChild(document.createElement(&quot;br&quot;));
}
&lt;/script&gt;
&lt;body&gt;
&lt;div id=&apos;p&apos;&gt;&lt;input id=&quot;in&quot; value=&quot;abcd&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt; 
&lt;/body&gt;&lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347039</commentid>
    <comment_count>29</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-07 20:25:28 -0800</bug_when>
    <thetext>One possible way to fix this crash is to move the selection handling from layout() to performaPostLayoutTasks().
I will test it for possible regressions and propose a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347541</commentid>
    <comment_count>30</comment_count>
      <attachid>81665</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-02-08 11:08:04 -0800</bug_when>
    <thetext>Created attachment 81665
Patch.

Frame flattening algorithm requires that layout always starts from the main frame, since layout of subframes impacts the layout of their parents. 
There are places in the code that call view-&gt;layout() not on the main frame. Instead of changing all the callsites, I changed FrameView::layout() to force layout from the main frame if frame flattening is enabled.
In addition, postLayoutTasks can trigger relayout, so make it use the timer even more.
Move the call to SelectionController::updateAppearance() to performPostLayoutTasks(), because calling ths from layout() leads to a crash in pages that have a selection in an iframe.

Antti, with your approach, I still see sometimes a race conditions when we render the page. It is possible to call FrameView::paintContents() when a layout is pending, and that would still crash sometimes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347544</commentid>
    <comment_count>31</comment_count>
      <attachid>81666</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-02-08 11:10:13 -0800</bug_when>
    <thetext>Created attachment 81666
Patch.

Sorry, I just found a typo in the changelog. Might as well fix it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347560</commentid>
    <comment_count>32</comment_count>
      <attachid>81666</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-02-08 11:24:20 -0800</bug_when>
    <thetext>Comment on attachment 81666
Patch.

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

&gt; Source/WebCore/page/FrameView.cpp:954
&gt; +        if (!m_hasPendingPostLayoutTasks &amp;&amp; ((needsLayout() || m_inSynchronousPostLayout) ||  deferPostLayoutTasks)) {

Extra space here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347574</commentid>
    <comment_count>33</comment_count>
      <attachid>81666</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-02-08 11:46:41 -0800</bug_when>
    <thetext>Comment on attachment 81666
Patch.

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

The patch is basically ok but  I still say r- as I&apos;d like to see a round of cleanups.

&gt; Source/WebCore/page/FrameView.cpp:728
&gt; +    if (m_frame-&gt;settings() &amp;&amp; m_frame-&gt;settings()-&gt;frameFlatteningEnabled()) {

Please make a variable for  &quot;parent() &amp;&amp; m_frame-&gt;settings() &amp;&amp; m_frame-&gt;settings()-&gt;frameFlatteningEnabled()&quot; and call it &quot;inSubframeLayoutWithFrameFlattening&quot; or something. You can use it here and later...

&gt; Source/WebCore/page/FrameView.cpp:730
&gt; +        FrameView* parentView = static_cast&lt;FrameView*&gt;(parent());
&gt; +        if (parentView &amp;&amp; !parentView-&gt;m_nestedLayoutCount) {

You shouldn&apos;t just cast without testing the type (even if it currently might work in practice). See other places in the file for examples on how to get the parent FrameView without casting by using tree().

&gt; Source/WebCore/page/FrameView.cpp:770
&gt; +    if (!m_nestedLayoutCount &amp;&amp; !m_inSynchronousPostLayout &amp;&amp; m_hasPendingPostLayoutTasks &amp;&amp; (!(parent() &amp;&amp; m_frame-&gt;settings() &amp;&amp; m_frame-&gt;settings()-&gt;frameFlatteningEnabled()))) {

...here...

&gt; Source/WebCore/page/FrameView.cpp:947
&gt; +        bool deferPostLayoutTasks = parent() &amp;&amp; m_frame-&gt;settings() &amp;&amp; m_frame-&gt;settings()-&gt;frameFlatteningEnabled();
&gt; +        if (!m_inSynchronousPostLayout &amp;&amp; !deferPostLayoutTasks) {

and here...

&gt;&gt; Source/WebCore/page/FrameView.cpp:954
&gt;&gt; +        if (!m_hasPendingPostLayoutTasks &amp;&amp; ((needsLayout() || m_inSynchronousPostLayout) ||  deferPostLayoutTasks)) {
&gt; 
&gt; Extra space here.

and here. Also remove the extra space and remove the inner parenthesis from the or condition, they do nothing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347592</commentid>
    <comment_count>34</comment_count>
      <attachid>81674</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-02-08 12:20:01 -0800</bug_when>
    <thetext>Created attachment 81674
Patch.

Address comment #33.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347605</commentid>
    <comment_count>35</comment_count>
      <attachid>81674</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-02-08 12:37:17 -0800</bug_when>
    <thetext>Comment on attachment 81674
Patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347686</commentid>
    <comment_count>36</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-08 14:30:31 -0800</bug_when>
    <thetext>Ademar, when I tested this on Symbian, I needed to pull parts of http://trac.webkit.org/changeset/66552 and http://trac.webkit.org/changeset/66555. Please let me know if you need help merging this to WebKit 2.1.x.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347793</commentid>
    <comment_count>37</comment_count>
      <attachid>81674</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-08 16:26:11 -0800</bug_when>
    <thetext>Comment on attachment 81674
Patch.

Clearing flags on attachment: 81674

Committed r77988: &lt;http://trac.webkit.org/changeset/77988&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347794</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-08 16:26:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348021</commentid>
    <comment_count>39</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-09 00:00:04 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; All reviewed patches have been landed.  Closing bug.

fast/frames/flattening/iframe-flattening-crash.html is failing on GTK+ for some reason. It seems that the onresize event of the iframe is never called. Any clue what might be happening?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348166</commentid>
    <comment_count>40</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-09 05:17:09 -0800</bug_when>
    <thetext>I&apos;ll take a look in a bit :)
Sorry about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348177</commentid>
    <comment_count>41</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-09 06:06:44 -0800</bug_when>
    <thetext>(In reply to comment #39)
&gt; (In reply to comment #38)
&gt; &gt; All reviewed patches have been landed.  Closing bug.
&gt; 
&gt; fast/frames/flattening/iframe-flattening-crash.html is failing on GTK+ for some reason. It seems that the onresize event of the iframe is never called. Any clue what might be happening?

I am not able to compile WebKitGTK on my Ubuntu 10.4 machine, so this might complicate things :(

One thing I noticed is that all other frame flattening tests use absolute positioning, to force a layout (with flattening) after the frame flattening flag was turned on.

This test does not do that.
I&apos;ll convert it to use absolute positioning and see if someone with a working WebKitGTK can test that for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348250</commentid>
    <comment_count>42</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-09 08:29:56 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; I am not able to compile WebKitGTK on my Ubuntu 10.4 machine, so this might complicate things :(

If you have a 10.10 machine, I&apos;ve created a PPA with the necessary packages. I&apos;ll see if I can get it working for 10.04 as well.

&gt; One thing I noticed is that all other frame flattening tests use absolute positioning, to force a layout (with flattening) after the frame flattening flag was turned on.
&gt; This test does not do that.
&gt; I&apos;ll convert it to use absolute positioning and see if someone with a working WebKitGTK can test that for me.

Sure, I&apos;ll be happy to test it. Thanks for looking into this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348255</commentid>
    <comment_count>43</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-09 08:35:49 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; (In reply to comment #41)
&gt; 
&gt; If you have a 10.10 machine, I&apos;ve created a PPA with the necessary packages. I&apos;ll see if I can get it working for 10.04 as well.
&gt; 
Sorry, I don&apos;t :( 
My workstation won&apos;t even boot into Ubuntu 10.10 live CD.

&gt; 
&gt; Sure, I&apos;ll be happy to test it. Thanks for looking into this!
The new test is in https://bugs.webkit.org/show_bug.cgi?id=54106 .
thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349809</commentid>
    <comment_count>44</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-02-11 09:30:54 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; Ademar, when I tested this on Symbian, I needed to pull parts of http://trac.webkit.org/changeset/66552 and http://trac.webkit.org/changeset/66555. Please let me know if you need help merging this to WebKit 2.1.x.

Thanks for leting me know of that. I&apos;ll see what I can do earlier next week. The two commits you mentioned appear to be simple and backporting them should be no problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350854</commentid>
    <comment_count>45</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-02-14 13:36:04 -0800</bug_when>
    <thetext>Revision r77988 cherry-picked into qtwebkit-2.1.x with commit ea0fd56 &lt;http://gitorious.org/webkit/qtwebkit/commit/ea0fd56&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353009</commentid>
    <comment_count>46</comment_count>
    <who name="Nancy Piedra">nancy.piedra</who>
    <bug_when>2011-02-17 10:31:35 -0800</bug_when>
    <thetext>This change has caused a regression in Webkit 2.1.x.  With this change flash content is not displayed (on Symbian).  I&apos;m not sure the impact to other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353012</commentid>
    <comment_count>47</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-02-17 10:35:40 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; This change has caused a regression in Webkit 2.1.x.  With this change flash content is not displayed (on Symbian).  I&apos;m not sure the impact to other platforms.

Can you be more specific? I can watch youtube videos With QtTestBrowser on linux, when frame flattening is enabled, so it is not that flash is always broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353017</commentid>
    <comment_count>48</comment_count>
    <who name="Nancy Piedra">nancy.piedra</who>
    <bug_when>2011-02-17 10:40:20 -0800</bug_when>
    <thetext>No flash content is rendered on Symbian using QtTestBrowser and Webkit 2.1.x.  I have not checked other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353076</commentid>
    <comment_count>49</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-02-17 12:06:24 -0800</bug_when>
    <thetext>Reverted on 2.1.x: 4892409e6f6360e034111ca9cc7c38f9e5a04522</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355680</commentid>
    <comment_count>50</comment_count>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2011-02-22 16:19:01 -0800</bug_when>
    <thetext>(In reply to comment #48)
&gt; No flash content is rendered on Symbian using QtTestBrowser and Webkit 2.1.x.  I have not checked other platforms.

Yaels patch requires this http://trac.webkit.org/changeset/75878 change to work correctly, because without it webkit creates extra subframe when load plugin and this way interferes with frame flattening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358047</commentid>
    <comment_count>51</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-02-25 11:01:57 -0800</bug_when>
    <thetext>Revision r77988 cherry-picked into qtwebkit-2.1.x with commit ea0fd56 &lt;http://gitorious.org/webkit/qtwebkit/commit/ea0fd56&gt;


cherry-picked again into qtwebkit-2.1.x (after also cherry-picking http://trac.webkit.org/changeset/75878): c3702ad</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79384</attachid>
            <date>2011-01-18 19:23:56 -0800</date>
            <delta_ts>2011-01-19 11:35:08 -0800</delta_ts>
            <desc>Work in progress.</desc>
            <filename>52449.patch</filename>
            <type>text/plain</type>
            <size>8217</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDc1ODg4KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyAr
MTIxLDcgQEAgRnJhbWVWaWV3OjpGcmFtZVZpZXcoRnJhbWUqIGZyYW1lKQogICAgICwgbV9sYXlv
dXRUaW1lcih0aGlzLCAmRnJhbWVWaWV3OjpsYXlvdXRUaW1lckZpcmVkKQogICAgICwgbV9sYXlv
dXRSb290KDApCiAgICAgLCBtX2hhc1BlbmRpbmdQb3N0TGF5b3V0VGFza3MoZmFsc2UpCi0gICAg
LCBtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0KGZhbHNlKQorICAgICwgbV9pblBvc3RMYXlvdXQo
ZmFsc2UpCiAgICAgLCBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVyKHRoaXMsICZGcmFtZVZpZXc6OnBv
c3RMYXlvdXRUaW1lckZpcmVkKQogICAgICwgbV9pc1RyYW5zcGFyZW50KGZhbHNlKQogICAgICwg
bV9iYXNlQmFja2dyb3VuZENvbG9yKENvbG9yOjp3aGl0ZSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2
b2lkIEZyYW1lVmlldzo6cmVzZXQoKQogICAgIG1fZG9GdWxsUmVwYWludCA9IHRydWU7CiAgICAg
bV9sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZCA9IHRydWU7CiAgICAgbV9pbkxheW91dCA9IGZhbHNl
OwotICAgIG1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQgPSBmYWxzZTsKKyAgICBtX2luUG9zdExh
eW91dCA9IGZhbHNlOwogICAgIG1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcyA9IGZhbHNlOwog
ICAgIG1fbGF5b3V0Q291bnQgPSAwOwogICAgIG1fbmVzdGVkTGF5b3V0Q291bnQgPSAwOwpAQCAt
NzQ4LDE1ICs3NDgsNiBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVl
CiAKICAgICBtX2xheW91dFNjaGVkdWxpbmdFbmFibGVkID0gZmFsc2U7CiAKLSAgICBpZiAoIW1f
bmVzdGVkTGF5b3V0Q291bnQgJiYgIW1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQgJiYgbV9oYXNQ
ZW5kaW5nUG9zdExheW91dFRhc2tzKSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgdG9wLWxl
dmVsIGxheW91dC4gSWYgdGhlcmUgYXJlIGFueSByZW1haW5pbmcgdGFza3MgZnJvbSB0aGUgcHJl
dmlvdXMKLSAgICAgICAgLy8gbGF5b3V0LCBmaW5pc2ggdGhlbSBub3cuCi0gICAgICAgIG1faW5T
eW5jaHJvbm91c1Bvc3RMYXlvdXQgPSB0cnVlOwotICAgICAgICBtX3Bvc3RMYXlvdXRUYXNrc1Rp
bWVyLnN0b3AoKTsKLSAgICAgICAgcGVyZm9ybVBvc3RMYXlvdXRUYXNrcygpOwotICAgICAgICBt
X2luU3luY2hyb25vdXNQb3N0TGF5b3V0ID0gZmFsc2U7Ci0gICAgfQotCiAgICAgLy8gVmlld3Bv
cnQtZGVwZW5kZW50IG1lZGlhIHF1ZXJpZXMgbWF5IGNhdXNlIHVzIHRvIG5lZWQgY29tcGxldGVs
eSBkaWZmZXJlbnQgc3R5bGUgaW5mb3JtYXRpb24uCiAgICAgLy8gQ2hlY2sgdGhhdCBoZXJlLgog
ICAgIGlmIChkb2N1bWVudC0+c3R5bGVTZWxlY3RvcigpLT5hZmZlY3RlZEJ5Vmlld3BvcnRDaGFu
Z2UoKSkKQEAgLTg2MSw3ICs4NTIsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFs
bG93U3VidHJlZQogCiAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcm9vdC0+ZW5jbG9zaW5nTGF5
ZXIoKTsKIAotICAgIHBhdXNlU2NoZWR1bGVkRXZlbnRzKCk7CisgICAgaWYgKCFtX2hhc1BlbmRp
bmdQb3N0TGF5b3V0VGFza3MpIHsKKyAgICAgICAgcGF1c2VTY2hlZHVsZWRFdmVudHMoKTsKKyAg
ICAgICAgbV9oYXNQZW5kaW5nUG9zdExheW91dFRhc2tzID0gdHJ1ZTsKKyAgICB9CiAKICAgICBi
b29sIGRpc2FibGVMYXlvdXRTdGF0ZSA9IGZhbHNlOwogICAgIGlmIChzdWJ0cmVlKSB7CkBAIC05
MjYsMjkgKzkyMCw0MSBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVl
CiAgICAgICAgIHVwZGF0ZU92ZXJmbG93U3RhdHVzKGxheW91dFdpZHRoKCkgPCBjb250ZW50c1dp
ZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dEhlaWdodCgpIDwgY29u
dGVudHNIZWlnaHQoKSk7CiAKLSAgICBpZiAoIW1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcykg
ewotICAgICAgICBpZiAoIW1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQpIHsKLSAgICAgICAgICAg
IG1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQgPSB0cnVlOwotICAgICAgICAgICAgLy8gQ2FsbHMg
cmVzdW1lU2NoZWR1bGVkRXZlbnRzKCkKLSAgICAgICAgICAgIHBlcmZvcm1Qb3N0TGF5b3V0VGFz
a3MoKTsKLSAgICAgICAgICAgIG1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQgPSBmYWxzZTsKLSAg
ICAgICAgfQorICAgIC8vIERvIG5vdCBwZXJmb3JtIHBvc3QgbGF5b3V0IHRhc2tzIGlmIHRoZSBs
YXlvdXQgaXMgbmVzdGVkLgorICAgIC8vIFRoZSBsYXN0IGxheW91dCBpbiB0aGUgbG9vcCB3aWxs
IHBlcmZvcm0gdGhlIHBvc3QgbGF5b3V0IHRhc2tzLgorICAgIGlmIChpbk5lc3RlZExheW91dCgp
KSB7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0KGNvb2tpZSk7
CisgICAgICAgIG1fbmVzdGVkTGF5b3V0Q291bnQtLTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAvLyBEbyBub3QgcGVyZm9ybSBwb3N0IGxheW91dCB0YXNrcyBpZiB0aGUgcGFyZW50IG5l
ZWRzIGxheW91dC4KKyAgICAvLyBPbmNlIHRoZSBwYXJlbnQgaGFkIGl0cyBsYXlvdXQgZG9uZSwg
aXQgd2lsbCBjYWxsIHBlcmZvcm1Qb3N0TGF5b3V0IHRhc2tzCisgICAgLy8gb24gaXRzIGNoaWxk
cmVuIHRoYXQgZGlkIG5vdCBkbyB0aGF0LgorICAgIGlmIChwYXJlbnQoKSAmJiBzdGF0aWNfY2Fz
dDxGcmFtZVZpZXcqPihwYXJlbnQoKSktPm5lZWRzTGF5b3V0KCkpIHsKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMYXlvdXQoY29va2llKTsKKyAgICAgICAgbV9uZXN0ZWRM
YXlvdXRDb3VudC0tOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgICAgIGlmICghbV9o
YXNQZW5kaW5nUG9zdExheW91dFRhc2tzICYmIChuZWVkc0xheW91dCgpIHx8IG1faW5TeW5jaHJv
bm91c1Bvc3RMYXlvdXQpKSB7Ci0gICAgICAgICAgICAvLyBJZiB3ZSBuZWVkIGxheW91dCBvciBh
cmUgYWxyZWFkeSBpbiBhIHN5bmNocm9ub3VzIGNhbGwgdG8gcG9zdExheW91dFRhc2tzKCksIAot
ICAgICAgICAgICAgLy8gZGVmZXIgd2lkZ2V0IHVwZGF0ZXMgYW5kIGV2ZW50IGRpc3BhdGNoIHVu
dGlsIGFmdGVyIHdlIHJldHVybi4gcG9zdExheW91dFRhc2tzKCkKLSAgICAgICAgICAgIC8vIGNh
biBtYWtlIHVzIG5lZWQgdG8gdXBkYXRlIGFnYWluLCBhbmQgd2UgY2FuIGdldCBzdHVjayBpbiBh
IG5hc3R5IGN5Y2xlIHVubGVzcwotICAgICAgICAgICAgLy8gd2UgY2FsbCBpdCB0aHJvdWdoIHRo
ZSB0aW1lciBoZXJlLgotICAgICAgICAgICAgbV9oYXNQZW5kaW5nUG9zdExheW91dFRhc2tzID0g
dHJ1ZTsKLSAgICAgICAgICAgIG1fcG9zdExheW91dFRhc2tzVGltZXIuc3RhcnRPbmVTaG90KDAp
OwotICAgICAgICAgICAgaWYgKG5lZWRzTGF5b3V0KCkpIHsKLSAgICAgICAgICAgICAgICBwYXVz
ZVNjaGVkdWxlZEV2ZW50cygpOwotICAgICAgICAgICAgICAgIGxheW91dCgpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9CisgICAgLy8gRG8gbm90IGNhbGwgcGVyZm9ybVBvc3RMYXlvdXRUYXNr
cyByZWN1cnNpdmVseS4KKyAgICAvLyBTdGFydCBhIHRpbWVyIGluc3RlYWQuCisgICAgaWYgKCFt
X2luUG9zdExheW91dCkgeworICAgICAgICAvLyBDYWxscyByZXN1bWVTY2hlZHVsZWRFdmVudHMo
KQorICAgICAgICBwZXJmb3JtUG9zdExheW91dFRhc2tzKCk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgcmVzdW1lU2NoZWR1bGVkRXZlbnRzKCk7Ci0gICAgICAgIEFTU0VSVChtX2VucXVldWVFdmVu
dHMpOworICAgICAgICBpZiAoIW1fcG9zdExheW91dFRhc2tzVGltZXIuaXNBY3RpdmUoKSkKKyAg
ICAgICAgICAgIG1fcG9zdExheW91dFRhc2tzVGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIH0K
KworICAgIC8vIElmIHdlIG5lZWQgbGF5b3V0IGFmdGVyIGEgY2FsbCB0byBwZXJmb3JtUG9zdExh
eW91dFRhc2tzKCksCisgICAgLy8gZGVmZXIgd2lkZ2V0IHVwZGF0ZXMgYW5kIGV2ZW50IGRpc3Bh
dGNoIHVudGlsIGFmdGVyIHdlIHJldHVybi4gcGVyZm9ybVBvc3RMYXlvdXRUYXNrcygpCisgICAg
Ly8gY2FuIG1ha2UgdXMgbmVlZCB0byB1cGRhdGUgYWdhaW4sIGFuZCB3ZSBjYW4gZ2V0IHN0dWNr
IGluIGEgbmFzdHkgY3ljbGUgdW5sZXNzCisgICAgLy8gd2UgY2FsbCBpdCB0aHJvdWdoIHRoZSB0
aW1lciBoZXJlLgorICAgIGlmIChuZWVkc0xheW91dCgpICYmICFtX2hhc1BlbmRpbmdQb3N0TGF5
b3V0VGFza3MpIHsKKyAgICAgICAgcGF1c2VTY2hlZHVsZWRFdmVudHMoKTsKKyAgICAgICAgbV9o
YXNQZW5kaW5nUG9zdExheW91dFRhc2tzID0gdHJ1ZTsKKyAgICAgICAgbV9wb3N0TGF5b3V0VGFz
a3NUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgICAgIGxheW91dCgpOwogICAgIH0KIAogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0KGNvb2tpZSk7CkBAIC0xODA5LDcg
KzE4MTUsMTUgQEAgYm9vbCBGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldHMoKQogICAgIAogdm9pZCBG
cmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MoKQogeworICAgIGlmIChuZWVkc0xheW91
dCgpIHx8IChwYXJlbnQoKSAmJiBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPihwYXJlbnQoKSktPm5l
ZWRzTGF5b3V0KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1faGFzUGVuZGluZ1Bv
c3RMYXlvdXRUYXNrcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pblBvc3RMYXlvdXQgPSB0
cnVlOwogICAgIG1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcyA9IGZhbHNlOworICAgIG1fcG9z
dExheW91dFRhc2tzVGltZXIuc3RvcCgpOwogCiAgICAgaWYgKG1fZmlyc3RMYXlvdXRDYWxsYmFj
a1BlbmRpbmcpIHsKICAgICAgICAgbV9maXJzdExheW91dENhbGxiYWNrUGVuZGluZyA9IGZhbHNl
OwpAQCAtMTg0Myw2ICsxODU3LDIzIEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91
dFRhc2tzKCkKICAgICAgICAgaWYgKHJlc2l6ZWQpCiAgICAgICAgICAgICBtX2ZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+c2VuZFJlc2l6ZUV2ZW50KCk7CiAgICAgfQorCisgICAgaWYgKG5lZWRzTGF5
b3V0KCkpIHsKKyAgICAgICAgbV9pblBvc3RMYXlvdXQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPiogdmlld0NoaWxk
cmVuID0gY2hpbGRyZW4oKTsKKyAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID46OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IHZpZXdDaGlsZHJlbi0+ZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PFJlZlB0
cjxXaWRnZXQ+ID46OmNvbnN0X2l0ZXJhdG9yIGN1cnJlbnQgPSB2aWV3Q2hpbGRyZW4tPmJlZ2lu
KCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpIHsKKyAgICAgICAgV2lkZ2V0KiB3aWRnZXQg
PSBjdXJyZW50LT5nZXQoKTsKKyAgICAgICAgaWYgKHdpZGdldC0+aXNGcmFtZVZpZXcoKSkgewor
ICAgICAgICAgICAgRnJhbWVWaWV3KiBjaGlsZFZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcq
Pih3aWRnZXQpOworICAgICAgICAgICAgaWYgKGNoaWxkVmlldy0+bV9oYXNQZW5kaW5nUG9zdExh
eW91dFRhc2tzICYmICFjaGlsZFZpZXctPm5lZWRzTGF5b3V0KCkgJiYgIWNoaWxkVmlldy0+bV9w
b3N0TGF5b3V0VGFza3NUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgICAgIGNoaWxkVmll
dy0+bV9wb3N0TGF5b3V0VGFza3NUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgbV9pblBvc3RMYXlvdXQgPSBmYWxzZTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OnBv
c3RMYXlvdXRUaW1lckZpcmVkKFRpbWVyPEZyYW1lVmlldz4qKQpAQCAtMjIzNiwxNyArMjI2Nywx
OSBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lCiAKICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKLSAgICBpZiAobmVlZHNM
YXlvdXQoKSkKLSAgICAgICAgbGF5b3V0KCk7CisgICAgZG8geworICAgICAgICBpZiAobmVlZHNM
YXlvdXQoKSkKKyAgICAgICAgICAgIGxheW91dCgpOwogCi0gICAgY29uc3QgSGFzaFNldDxSZWZQ
dHI8V2lkZ2V0PiA+KiB2aWV3Q2hpbGRyZW4gPSBjaGlsZHJlbigpOwotICAgIEhhc2hTZXQ8UmVm
UHRyPFdpZGdldD4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gdmlld0NoaWxkcmVuLT5lbmQoKTsK
LSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPjo6Y29uc3RfaXRlcmF0b3IgY3VycmVu
dCA9IHZpZXdDaGlsZHJlbi0+YmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkgewot
ICAgICAgICBXaWRnZXQqIHdpZGdldCA9ICgqY3VycmVudCkuZ2V0KCk7Ci0gICAgICAgIGlmICh3
aWRnZXQtPmlzRnJhbWVWaWV3KCkpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxGcmFtZVZpZXcq
Pih3aWRnZXQpLT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CisgICAg
ICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPiogdmlld0NoaWxkcmVuID0gY2hpbGRy
ZW4oKTsKKyAgICAgICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0PiA+Ojpjb25zdF9pdGVyYXRvciBl
bmQgPSB2aWV3Q2hpbGRyZW4tPmVuZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdp
ZGdldD4gPjo6Y29uc3RfaXRlcmF0b3IgY3VycmVudCA9IHZpZXdDaGlsZHJlbi0+YmVnaW4oKTsg
Y3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkgeworICAgICAgICAgICAgV2lkZ2V0KiB3aWRnZXQg
PSAoKmN1cnJlbnQpLmdldCgpOworICAgICAgICAgICAgaWYgKHdpZGdldC0+aXNGcmFtZVZpZXco
KSkKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3aWRnZXQpLT51cGRh
dGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CisgICAgICAgIH0KICAgICB9Ci0K
KyAgICB3aGlsZSAobmVlZHNMYXlvdXQoKSk7CiAgICAgLy8gdXBkYXRlTGF5b3V0QW5kU3R5bGVJ
Zk5lZWRlZFJlY3Vyc2l2ZSBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBzdHls
ZSBhbmQgbGF5b3V0IGFyZSB1cC10by1kYXRlIGJlZm9yZQogICAgIC8vIHBhaW50aW5nLCBzbyB3
ZSBuZWVkIHRvIGZsdXNoIG91dCBhbnkgZGVmZXJyZWQgcmVwYWludHMgdG9vLgogICAgIGZsdXNo
RGVmZXJyZWRSZXBhaW50cygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCShyZXZpc2lv
biA3NTg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkxLDYgKzkxLDcgQEAgcHVibGljOgogCiAgICAgUmVuZGVyT2JqZWN0KiBsYXlvdXRS
b290KGJvb2wgb25seUR1cmluZ0xheW91dCA9IGZhbHNlKSBjb25zdDsKICAgICBpbnQgbGF5b3V0
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2xheW91dENvdW50OyB9CisgICAgYm9vbCBpbk5lc3Rl
ZExheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVzdGVkTGF5b3V0Q291bnQgPiAxOyB9CiAKICAg
ICBib29sIG5lZWRzTGF5b3V0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXROZWVkc0xheW91dCgpOwpA
QCAtMzQwLDcgKzM0MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xheW91dFNjaGVkdWxpbmdF
bmFibGVkOwogICAgIGJvb2wgbV9pbkxheW91dDsKICAgICBib29sIG1faGFzUGVuZGluZ1Bvc3RM
YXlvdXRUYXNrczsKLSAgICBib29sIG1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQ7CisgICAgYm9v
bCBtX2luUG9zdExheW91dDsKICAgICBpbnQgbV9sYXlvdXRDb3VudDsKICAgICB1bnNpZ25lZCBt
X25lc3RlZExheW91dENvdW50OwogICAgIFRpbWVyPEZyYW1lVmlldz4gbV9wb3N0TGF5b3V0VGFz
a3NUaW1lcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79457</attachid>
            <date>2011-01-19 11:35:08 -0800</date>
            <delta_ts>2011-01-21 12:36:20 -0800</delta_ts>
            <desc>Still work in progress</desc>
            <filename>52449.patch</filename>
            <type>text/plain</type>
            <size>7856</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDc2MTI1KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyAr
MTIxLDcgQEAgRnJhbWVWaWV3OjpGcmFtZVZpZXcoRnJhbWUqIGZyYW1lKQogICAgICwgbV9sYXlv
dXRUaW1lcih0aGlzLCAmRnJhbWVWaWV3OjpsYXlvdXRUaW1lckZpcmVkKQogICAgICwgbV9sYXlv
dXRSb290KDApCiAgICAgLCBtX2hhc1BlbmRpbmdQb3N0TGF5b3V0VGFza3MoZmFsc2UpCi0gICAg
LCBtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0KGZhbHNlKQorICAgICwgbV9pblBvc3RMYXlvdXQo
ZmFsc2UpCiAgICAgLCBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVyKHRoaXMsICZGcmFtZVZpZXc6OnBv
c3RMYXlvdXRUaW1lckZpcmVkKQogICAgICwgbV9pc1RyYW5zcGFyZW50KGZhbHNlKQogICAgICwg
bV9iYXNlQmFja2dyb3VuZENvbG9yKENvbG9yOjp3aGl0ZSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2
b2lkIEZyYW1lVmlldzo6cmVzZXQoKQogICAgIG1fZG9GdWxsUmVwYWludCA9IHRydWU7CiAgICAg
bV9sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZCA9IHRydWU7CiAgICAgbV9pbkxheW91dCA9IGZhbHNl
OwotICAgIG1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQgPSBmYWxzZTsKKyAgICBtX2luUG9zdExh
eW91dCA9IGZhbHNlOwogICAgIG1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcyA9IGZhbHNlOwog
ICAgIG1fbGF5b3V0Q291bnQgPSAwOwogICAgIG1fbmVzdGVkTGF5b3V0Q291bnQgPSAwOwpAQCAt
NzQ4LDE1ICs3NDgsNiBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVl
CiAKICAgICBtX2xheW91dFNjaGVkdWxpbmdFbmFibGVkID0gZmFsc2U7CiAKLSAgICBpZiAoIW1f
bmVzdGVkTGF5b3V0Q291bnQgJiYgIW1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQgJiYgbV9oYXNQ
ZW5kaW5nUG9zdExheW91dFRhc2tzKSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgdG9wLWxl
dmVsIGxheW91dC4gSWYgdGhlcmUgYXJlIGFueSByZW1haW5pbmcgdGFza3MgZnJvbSB0aGUgcHJl
dmlvdXMKLSAgICAgICAgLy8gbGF5b3V0LCBmaW5pc2ggdGhlbSBub3cuCi0gICAgICAgIG1faW5T
eW5jaHJvbm91c1Bvc3RMYXlvdXQgPSB0cnVlOwotICAgICAgICBtX3Bvc3RMYXlvdXRUYXNrc1Rp
bWVyLnN0b3AoKTsKLSAgICAgICAgcGVyZm9ybVBvc3RMYXlvdXRUYXNrcygpOwotICAgICAgICBt
X2luU3luY2hyb25vdXNQb3N0TGF5b3V0ID0gZmFsc2U7Ci0gICAgfQotCiAgICAgLy8gVmlld3Bv
cnQtZGVwZW5kZW50IG1lZGlhIHF1ZXJpZXMgbWF5IGNhdXNlIHVzIHRvIG5lZWQgY29tcGxldGVs
eSBkaWZmZXJlbnQgc3R5bGUgaW5mb3JtYXRpb24uCiAgICAgLy8gQ2hlY2sgdGhhdCBoZXJlLgog
ICAgIGlmIChkb2N1bWVudC0+c3R5bGVTZWxlY3RvcigpLT5hZmZlY3RlZEJ5Vmlld3BvcnRDaGFu
Z2UoKSkKQEAgLTg2MSw3ICs4NTIsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFs
bG93U3VidHJlZQogCiAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcm9vdC0+ZW5jbG9zaW5nTGF5
ZXIoKTsKIAotICAgIHBhdXNlU2NoZWR1bGVkRXZlbnRzKCk7CisgICAgaWYgKCFtX2hhc1BlbmRp
bmdQb3N0TGF5b3V0VGFza3MpIHsKKyAgICAgICAgcGF1c2VTY2hlZHVsZWRFdmVudHMoKTsKKyAg
ICAgICAgbV9oYXNQZW5kaW5nUG9zdExheW91dFRhc2tzID0gdHJ1ZTsKKyAgICB9CiAKICAgICBi
b29sIGRpc2FibGVMYXlvdXRTdGF0ZSA9IGZhbHNlOwogICAgIGlmIChzdWJ0cmVlKSB7CkBAIC05
MjYsMjkgKzkyMCw0MSBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVl
CiAgICAgICAgIHVwZGF0ZU92ZXJmbG93U3RhdHVzKGxheW91dFdpZHRoKCkgPCBjb250ZW50c1dp
ZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dEhlaWdodCgpIDwgY29u
dGVudHNIZWlnaHQoKSk7CiAKKyAgICAvLyBJZiB3ZSBqdXN0IGNhbWUgYmFjayBmcm9tIGEgbmVz
dGVkIGxheW91dCwgdGhpcyBmbGFnIHdvdWxkIGhhdmUgYmVlbiBjbGVhcmVkLgorICAgIC8vIFNl
dCBpdCBhZ2Fpbi4KICAgICBpZiAoIW1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcykgewotICAg
ICAgICBpZiAoIW1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQpIHsKLSAgICAgICAgICAgIG1faW5T
eW5jaHJvbm91c1Bvc3RMYXlvdXQgPSB0cnVlOwotICAgICAgICAgICAgLy8gQ2FsbHMgcmVzdW1l
U2NoZWR1bGVkRXZlbnRzKCkKLSAgICAgICAgICAgIHBlcmZvcm1Qb3N0TGF5b3V0VGFza3MoKTsK
LSAgICAgICAgICAgIG1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQgPSBmYWxzZTsKLSAgICAgICAg
fQorICAgICAgICBwYXVzZVNjaGVkdWxlZEV2ZW50cygpOworICAgICAgICBtX2hhc1BlbmRpbmdQ
b3N0TGF5b3V0VGFza3MgPSB0cnVlOworICAgIH0KIAotICAgICAgICBpZiAoIW1faGFzUGVuZGlu
Z1Bvc3RMYXlvdXRUYXNrcyAmJiAobmVlZHNMYXlvdXQoKSB8fCBtX2luU3luY2hyb25vdXNQb3N0
TGF5b3V0KSkgewotICAgICAgICAgICAgLy8gSWYgd2UgbmVlZCBsYXlvdXQgb3IgYXJlIGFscmVh
ZHkgaW4gYSBzeW5jaHJvbm91cyBjYWxsIHRvIHBvc3RMYXlvdXRUYXNrcygpLCAKLSAgICAgICAg
ICAgIC8vIGRlZmVyIHdpZGdldCB1cGRhdGVzIGFuZCBldmVudCBkaXNwYXRjaCB1bnRpbCBhZnRl
ciB3ZSByZXR1cm4uIHBvc3RMYXlvdXRUYXNrcygpCi0gICAgICAgICAgICAvLyBjYW4gbWFrZSB1
cyBuZWVkIHRvIHVwZGF0ZSBhZ2FpbiwgYW5kIHdlIGNhbiBnZXQgc3R1Y2sgaW4gYSBuYXN0eSBj
eWNsZSB1bmxlc3MKLSAgICAgICAgICAgIC8vIHdlIGNhbGwgaXQgdGhyb3VnaCB0aGUgdGltZXIg
aGVyZS4KLSAgICAgICAgICAgIG1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcyA9IHRydWU7Ci0g
ICAgICAgICAgICBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLSAgICAg
ICAgICAgIGlmIChuZWVkc0xheW91dCgpKSB7Ci0gICAgICAgICAgICAgICAgcGF1c2VTY2hlZHVs
ZWRFdmVudHMoKTsKLSAgICAgICAgICAgICAgICBsYXlvdXQoKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQorICAgIC8vIERvIG5vdCBwZXJmb3JtIHBvc3QgbGF5b3V0IHRhc2tzIGlmIHRoZSBw
YXJlbnQgbmVlZHMgbGF5b3V0LgorICAgIC8vIE9uY2UgdGhlIHBhcmVudCBoYWQgaXRzIGxheW91
dCBkb25lLCBpdCB3aWxsIGNhbGwgcGVyZm9ybVBvc3RMYXlvdXQgdGFza3MKKyAgICAvLyBvbiBp
dHMgY2hpbGRyZW4gdGhhdCBkaWQgbm90IGRvIHRoYXQuCisgICAgaWYgKHBhcmVudCgpICYmIHN0
YXRpY19jYXN0PEZyYW1lVmlldyo+KHBhcmVudCgpKS0+bmVlZHNMYXlvdXQoKSkgeworICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91dChjb29raWUpOworICAgICAgICBt
X25lc3RlZExheW91dENvdW50LS07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBE
byBub3QgY2FsbCBwZXJmb3JtUG9zdExheW91dFRhc2tzIHJlY3Vyc2l2ZWx5LgorICAgIC8vIFN0
YXJ0IGEgdGltZXIgaW5zdGVhZC4KKyAgICBpZiAoIW1faW5Qb3N0TGF5b3V0KSB7CisgICAgICAg
IC8vIENhbGxzIHJlc3VtZVNjaGVkdWxlZEV2ZW50cygpCisgICAgICAgIHBlcmZvcm1Qb3N0TGF5
b3V0VGFza3MoKTsKICAgICB9IGVsc2UgewotICAgICAgICByZXN1bWVTY2hlZHVsZWRFdmVudHMo
KTsKLSAgICAgICAgQVNTRVJUKG1fZW5xdWV1ZUV2ZW50cyk7CisgICAgICAgIGlmICghbV9wb3N0
TGF5b3V0VGFza3NUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9wb3N0TGF5b3V0VGFz
a3NUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgfQorCisgICAgLy8gSWYgd2UgbmVlZCBsYXlv
dXQgYWZ0ZXIgYSBjYWxsIHRvIHBlcmZvcm1Qb3N0TGF5b3V0VGFza3MoKSwKKyAgICAvLyBkZWZl
ciB3aWRnZXQgdXBkYXRlcyBhbmQgZXZlbnQgZGlzcGF0Y2ggdW50aWwgYWZ0ZXIgd2UgcmV0dXJu
LiBwZXJmb3JtUG9zdExheW91dFRhc2tzKCkKKyAgICAvLyBjYW4gbWFrZSB1cyBuZWVkIHRvIHVw
ZGF0ZSBhZ2FpbiwgYW5kIHdlIGNhbiBnZXQgc3R1Y2sgaW4gYSBuYXN0eSBjeWNsZSB1bmxlc3MK
KyAgICAvLyB3ZSBjYWxsIGl0IHRocm91Z2ggdGhlIHRpbWVyIGhlcmUuCisgICAgaWYgKG5lZWRz
TGF5b3V0KCkgJiYgIW1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcykgeworICAgICAgICBwYXVz
ZVNjaGVkdWxlZEV2ZW50cygpOworICAgICAgICBtX2hhc1BlbmRpbmdQb3N0TGF5b3V0VGFza3Mg
PSB0cnVlOworICAgICAgICBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
KyAgICAgICAgbGF5b3V0KCk7CiAgICAgfQogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRMYXlvdXQoY29va2llKTsKQEAgLTE4MDksNyArMTgxNSwxNSBAQCBib29sIEZyYW1lVmll
dzo6dXBkYXRlV2lkZ2V0cygpCiAgICAgCiB2b2lkIEZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlv
dXRUYXNrcygpCiB7CisgICAgaWYgKG5lZWRzTGF5b3V0KCkgfHwgKHBhcmVudCgpICYmIHN0YXRp
Y19jYXN0PEZyYW1lVmlldyo+KHBhcmVudCgpKS0+bmVlZHNMYXlvdXQoKSkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghbV9oYXNQZW5kaW5nUG9zdExheW91dFRhc2tzKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2luUG9zdExheW91dCA9IHRydWU7CiAgICAgbV9oYXNQZW5kaW5nUG9z
dExheW91dFRhc2tzID0gZmFsc2U7CisgICAgbV9wb3N0TGF5b3V0VGFza3NUaW1lci5zdG9wKCk7
CiAKICAgICBpZiAobV9maXJzdExheW91dENhbGxiYWNrUGVuZGluZykgewogICAgICAgICBtX2Zp
cnN0TGF5b3V0Q2FsbGJhY2tQZW5kaW5nID0gZmFsc2U7CkBAIC0xODQzLDYgKzE4NTcsMjMgQEAg
dm9pZCBGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MoKQogICAgICAgICBpZiAocmVz
aXplZCkKICAgICAgICAgICAgIG1fZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kUmVzaXplRXZl
bnQoKTsKICAgICB9CisKKyAgICBpZiAobmVlZHNMYXlvdXQoKSkgeworICAgICAgICBtX2luUG9z
dExheW91dCA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgSGFz
aFNldDxSZWZQdHI8V2lkZ2V0PiA+KiB2aWV3Q2hpbGRyZW4gPSBjaGlsZHJlbigpOworICAgIEhh
c2hTZXQ8UmVmUHRyPFdpZGdldD4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gdmlld0NoaWxkcmVu
LT5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPjo6Y29uc3RfaXRlcmF0
b3IgY3VycmVudCA9IHZpZXdDaGlsZHJlbi0+YmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3Vy
cmVudCkgeworICAgICAgICBXaWRnZXQqIHdpZGdldCA9IGN1cnJlbnQtPmdldCgpOworICAgICAg
ICBpZiAod2lkZ2V0LT5pc0ZyYW1lVmlldygpKSB7CisgICAgICAgICAgICBGcmFtZVZpZXcqIGNo
aWxkVmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCk7CisgICAgICAgICAgICBp
ZiAoY2hpbGRWaWV3LT5tX2hhc1BlbmRpbmdQb3N0TGF5b3V0VGFza3MgJiYgIWNoaWxkVmlldy0+
bmVlZHNMYXlvdXQoKSAmJiAhY2hpbGRWaWV3LT5tX3Bvc3RMYXlvdXRUYXNrc1RpbWVyLmlzQWN0
aXZlKCkpCisgICAgICAgICAgICAgICAgY2hpbGRWaWV3LT5tX3Bvc3RMYXlvdXRUYXNrc1RpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBtX2luUG9zdExheW91dCA9
IGZhbHNlOwogfQogCiB2b2lkIEZyYW1lVmlldzo6cG9zdExheW91dFRpbWVyRmlyZWQoVGltZXI8
RnJhbWVWaWV3PiopCkBAIC0yMjM2LDE3ICsyMjY3LDE4IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRh
dGVMYXlvdXRBbmRTdHlsZUlmTmUKIAogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZVN0
eWxlSWZOZWVkZWQoKTsKIAotICAgIGlmIChuZWVkc0xheW91dCgpKQotICAgICAgICBsYXlvdXQo
KTsKLQotICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPiogdmlld0NoaWxkcmVuID0g
Y2hpbGRyZW4oKTsKLSAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IHZpZXdDaGlsZHJlbi0+ZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRn
ZXQ+ID46OmNvbnN0X2l0ZXJhdG9yIGN1cnJlbnQgPSB2aWV3Q2hpbGRyZW4tPmJlZ2luKCk7IGN1
cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpIHsKLSAgICAgICAgV2lkZ2V0KiB3aWRnZXQgPSAoKmN1
cnJlbnQpLmdldCgpOwotICAgICAgICBpZiAod2lkZ2V0LT5pc0ZyYW1lVmlldygpKQotICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KS0+dXBkYXRlTGF5b3V0QW5kU3R5
bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwotICAgIH0KKyAgICBkbyB7CisgICAgICAgIGlmIChuZWVk
c0xheW91dCgpKQorICAgICAgICAgICAgbGF5b3V0KCk7CiAKKyAgICAgICAgY29uc3QgSGFzaFNl
dDxSZWZQdHI8V2lkZ2V0PiA+KiB2aWV3Q2hpbGRyZW4gPSBjaGlsZHJlbigpOworICAgICAgICBI
YXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHZpZXdDaGlsZHJl
bi0+ZW5kKCk7CisgICAgICAgIGZvciAoSGFzaFNldDxSZWZQdHI8V2lkZ2V0PiA+Ojpjb25zdF9p
dGVyYXRvciBjdXJyZW50ID0gdmlld0NoaWxkcmVuLT5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsg
KytjdXJyZW50KSB7CisgICAgICAgICAgICBXaWRnZXQqIHdpZGdldCA9ICgqY3VycmVudCkuZ2V0
KCk7CisgICAgICAgICAgICBpZiAod2lkZ2V0LT5pc0ZyYW1lVmlldygpKQorICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCktPnVwZGF0ZUxheW91dEFuZFN0eWxl
SWZOZWVkZWRSZWN1cnNpdmUoKTsKKyAgICAgICAgfQorICAgIH0gd2hpbGUgKG5lZWRzTGF5b3V0
KCkpOwogICAgIC8vIHVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUgaXMgY2Fs
bGVkIHdoZW4gd2UgbmVlZCB0byBtYWtlIHN1cmUgc3R5bGUgYW5kIGxheW91dCBhcmUgdXAtdG8t
ZGF0ZSBiZWZvcmUKICAgICAvLyBwYWludGluZywgc28gd2UgbmVlZCB0byBmbHVzaCBvdXQgYW55
IGRlZmVycmVkIHJlcGFpbnRzIHRvby4KICAgICBmbHVzaERlZmVycmVkUmVwYWludHMoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkocmV2aXNpb24gNzYxMjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAsNyArMzQwLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fbGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQ7CiAgICAgYm9vbCBt
X2luTGF5b3V0OwogICAgIGJvb2wgbV9oYXNQZW5kaW5nUG9zdExheW91dFRhc2tzOwotICAgIGJv
b2wgbV9pblN5bmNocm9ub3VzUG9zdExheW91dDsKKyAgICBib29sIG1faW5Qb3N0TGF5b3V0Owog
ICAgIGludCBtX2xheW91dENvdW50OwogICAgIHVuc2lnbmVkIG1fbmVzdGVkTGF5b3V0Q291bnQ7
CiAgICAgVGltZXI8RnJhbWVWaWV3PiBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79776</attachid>
            <date>2011-01-21 12:36:20 -0800</date>
            <delta_ts>2011-02-08 11:08:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>52449.patch</filename>
            <type>text/plain</type>
            <size>6656</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2Mzc0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDEtMjEgIFlhZWwgQWhh
cm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENyYXNoIHdoZW4gbG9nZ2luZyBpbnRvIGdtYWlsLmNvbSB3
aXRoIGZyYW1lIGZsYXR0ZW5pbmcgdHVybmVkIG9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0NDkKKworICAgICAgICBGcmFtZSBmbGF0dGVuaW5n
IGFsZ29yaXRobSByZXF1aXJlcyB0aGF0IGxheW91dCBhbHdheXMgc3RhcnRzIGZyb20gdGhlIG1h
aW4gZnJhbWUsIHNpbmNlIGxheW91dCBvZgorICAgICAgICBzdWJmcmFtZXMgaW1wYWN0cyB0aGUg
bGF5b3V0IG9mIHRoZWlyIHBhcmVudHMuIAorICAgICAgICBUaGVyZSBhcmUgcGxhY2VzIGluIHRo
ZSBjb2RlIHRoYXQgY2FsbCB2aWV3LT5sYXlvdXQoKSBub3Qgb24gdGhlIG1haW4gZnJhbWUuCisg
ICAgICAgIEluc3RlYWQgb2YgY2hhbmdpbmcgYWxsIHRoZSBjYWxsc2l0ZXMsIEkgY2hhbmdlZCBG
cmFtZVZpZXc6OmxheW91dCgpCisgICAgICAgIHRvIGZvcmNlIGxheW91dCBmcm9tIHRoZSBtYWlu
IGZyYW1lIGlmIGZyYW1lIGZsYXR0ZW5pbmcgaXMgZW5hYmxlZC4KKyAgICAgICAgSW4gYWRkaXRp
b24sIHBvc3RMYXlvdXRUYXNrcyBjYW4gdHJpZ2dlciByZWxheW91dCwgc28gbWFrZSBpdCB1c2Ug
dGhlIHRpbWVyIGV2ZW4gbW9yZS4KKworICAgICAgICBUZXN0OiBmYXN0L2ZyYW1lcy9mbGF0dGVu
aW5nL2lmcmFtZS1mbGF0dGVuaW5nLWNyYXNoLmh0bWwKKworICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKwogMjAxMS0w
MS0yMSAgQW50b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5hdGUgQ2hhcGluLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2
aXNpb24gNzYzNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcyMSw2ICs3MjEsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29s
IGFsbG93U3VidHJlZQogICAgIGlmIChtX2luTGF5b3V0KQogICAgICAgICByZXR1cm47CiAKKyAg
ICBpZiAobV9mcmFtZS0+c2V0dGluZ3MoKSAmJiBtX2ZyYW1lLT5zZXR0aW5ncygpLT5mcmFtZUZs
YXR0ZW5pbmdFbmFibGVkKCkpIHsKKyAgICAgICAgRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gc3Rh
dGljX2Nhc3Q8RnJhbWVWaWV3Kj4ocGFyZW50KCkpOworICAgICAgICBpZiAocGFyZW50VmlldyAm
JiAhcGFyZW50Vmlldy0+bV9uZXN0ZWRMYXlvdXRDb3VudCkgeworICAgICAgICAgICAgd2hpbGUg
KHBhcmVudFZpZXctPnBhcmVudCgpKQorICAgICAgICAgICAgICAgIHBhcmVudFZpZXcgPSBzdGF0
aWNfY2FzdDxGcmFtZVZpZXcqPihwYXJlbnRWaWV3LT5wYXJlbnQoKSk7CisgICAgICAgICAgICBw
YXJlbnRWaWV3LT5sYXlvdXQoYWxsb3dTdWJ0cmVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIH0KICAgICBtX2xheW91dFRpbWVyLnN0b3AoKTsKICAgICBtX2RlbGF5ZWRM
YXlvdXQgPSBmYWxzZTsKICAgICBtX3NldE5lZWRzTGF5b3V0V2FzRGVmZXJyZWQgPSBmYWxzZTsK
QEAgLTc1MywxNSArNzYyLDYgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3Vi
dHJlZQogCiAgICAgbV9sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZCA9IGZhbHNlOwogCi0gICAgaWYg
KCFtX25lc3RlZExheW91dENvdW50ICYmICFtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0ICYmIG1f
aGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcykgewotICAgICAgICAvLyBUaGlzIGlzIGEgbmV3IHRv
cC1sZXZlbCBsYXlvdXQuIElmIHRoZXJlIGFyZSBhbnkgcmVtYWluaW5nIHRhc2tzIGZyb20gdGhl
IHByZXZpb3VzCi0gICAgICAgIC8vIGxheW91dCwgZmluaXNoIHRoZW0gbm93LgotICAgICAgICBt
X2luU3luY2hyb25vdXNQb3N0TGF5b3V0ID0gdHJ1ZTsKLSAgICAgICAgbV9wb3N0TGF5b3V0VGFz
a3NUaW1lci5zdG9wKCk7Ci0gICAgICAgIHBlcmZvcm1Qb3N0TGF5b3V0VGFza3MoKTsKLSAgICAg
ICAgbV9pblN5bmNocm9ub3VzUG9zdExheW91dCA9IGZhbHNlOwotICAgIH0KLQogICAgIC8vIFZp
ZXdwb3J0LWRlcGVuZGVudCBtZWRpYSBxdWVyaWVzIG1heSBjYXVzZSB1cyB0byBuZWVkIGNvbXBs
ZXRlbHkgZGlmZmVyZW50IHN0eWxlIGluZm9ybWF0aW9uLgogICAgIC8vIENoZWNrIHRoYXQgaGVy
ZS4KICAgICBpZiAoZG9jdW1lbnQtPnN0eWxlU2VsZWN0b3IoKS0+YWZmZWN0ZWRCeVZpZXdwb3J0
Q2hhbmdlKCkpCkBAIC05MzIsMTQgKzkzMiwxNSBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJv
b2wgYWxsb3dTdWJ0cmVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dEhlaWdo
dCgpIDwgY29udGVudHNIZWlnaHQoKSk7CiAKICAgICBpZiAoIW1faGFzUGVuZGluZ1Bvc3RMYXlv
dXRUYXNrcykgewotICAgICAgICBpZiAoIW1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQpIHsKKyAg
ICAgICAgYm9vbCBkZWZmZXJQb3N0TGF5b3V0VGFza3MgPSBwYXJlbnQoKSAmJiBtX2ZyYW1lLT5z
ZXR0aW5ncygpICYmIG1fZnJhbWUtPnNldHRpbmdzKCktPmZyYW1lRmxhdHRlbmluZ0VuYWJsZWQo
KTsKKyAgICAgICAgaWYgKCFtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0ICYmICFkZWZmZXJQb3N0
TGF5b3V0VGFza3MpIHsKICAgICAgICAgICAgIG1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQgPSB0
cnVlOwogICAgICAgICAgICAgLy8gQ2FsbHMgcmVzdW1lU2NoZWR1bGVkRXZlbnRzKCkKICAgICAg
ICAgICAgIHBlcmZvcm1Qb3N0TGF5b3V0VGFza3MoKTsKICAgICAgICAgICAgIG1faW5TeW5jaHJv
bm91c1Bvc3RMYXlvdXQgPSBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghbV9oYXNQ
ZW5kaW5nUG9zdExheW91dFRhc2tzICYmIChuZWVkc0xheW91dCgpIHx8IG1faW5TeW5jaHJvbm91
c1Bvc3RMYXlvdXQpKSB7CisgICAgICAgIGlmICghbV9oYXNQZW5kaW5nUG9zdExheW91dFRhc2tz
ICYmICgobmVlZHNMYXlvdXQoKSB8fCBtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0KSB8fCAgZGVm
ZmVyUG9zdExheW91dFRhc2tzKSkgewogICAgICAgICAgICAgLy8gSWYgd2UgbmVlZCBsYXlvdXQg
b3IgYXJlIGFscmVhZHkgaW4gYSBzeW5jaHJvbm91cyBjYWxsIHRvIHBvc3RMYXlvdXRUYXNrcygp
LCAKICAgICAgICAgICAgIC8vIGRlZmVyIHdpZGdldCB1cGRhdGVzIGFuZCBldmVudCBkaXNwYXRj
aCB1bnRpbCBhZnRlciB3ZSByZXR1cm4uIHBvc3RMYXlvdXRUYXNrcygpCiAgICAgICAgICAgICAv
LyBjYW4gbWFrZSB1cyBuZWVkIHRvIHVwZGF0ZSBhZ2FpbiwgYW5kIHdlIGNhbiBnZXQgc3R1Y2sg
aW4gYSBuYXN0eSBjeWNsZSB1bmxlc3MKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2Mzc0KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEt
MDEtMjEgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyYXNoIHdoZW4gbG9nZ2luZyBp
bnRvIGdtYWlsLmNvbSB3aXRoIGZyYW1lIGZsYXR0ZW5pbmcgdHVybmVkIG9uLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0NDkKKworICAgICAgICAq
IGZhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctY3Jhc2guaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1j
cmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL2ZsYXR0ZW5p
bmcvcmVzb3VyY2VzL2lmcmFtZS1mbGF0dGVuaW5nLWNyYXNoLmh0bWw6IEFkZGVkLgorCiAyMDEx
LTAxLTIxICBBbnRvbiBNdWhpbiAgPGFudG9ubUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgTmF0ZSBDaGFwaW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0
dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLWNy
YXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jh
c2ggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDQ5CisKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1j
cmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5p
bmcvaWZyYW1lLWZsYXR0ZW5pbmctY3Jhc2guaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctY3Jhc2guaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCA+Cis8
aGVhZD4KKzxzdHlsZT4KKyNNeSB7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7IHdpZHRoOiAxMDBw
eDsgaGVpZ2h0OiAxMDBweDsgfQorPC9zdHlsZT4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCh0cnVlKTsKKyAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpOyI+Cis8cD5UaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNoIDxh
IGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQ0OSI+aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDQ5PC9hPjwvcD4KKzxpZnJh
bWUgaWQ9Ik15IiBzcmM9ImlmcmFtZS1mbGF0dGVuaW5nLWNyYXNoLmh0bWwiPjwvaWZyYW1lPgor
PC9ib2R5PjwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmlu
Zy9yZXNvdXJjZXMvaWZyYW1lLWZsYXR0ZW5pbmctY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL3Jlc291cmNlcy9pZnJhbWUtZmxhdHRl
bmluZy1jcmFzaC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
ZmxhdHRlbmluZy9yZXNvdXJjZXMvaWZyYW1lLWZsYXR0ZW5pbmctY3Jhc2guaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0PgorZnVuY3Rp
b24gcmVzKCkgeyAKKyAgICB2YXIgaSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdo
dG1sJylbMF0uY2xpZW50V2lkdGg7IAorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKzwv
c2NyaXB0PgorPHN0eWxlPgorI3AgeyBib3JkZXI6IDRweCBzb2xpZCByZWQ7fQorPC9zdHlsZT4K
Kzxib2R5IG9ucmVzaXplPSJyZXMoKTsiPgorPGRpdiBpZD0ncCc+PGJyPjxicj48YnI+PGJyPjxi
cj48YnI+PGJyPjxicj48YnI+PC9kaXY+IAorPC9ib2R5PjwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80244</attachid>
            <date>2011-01-26 15:00:04 -0800</date>
            <delta_ts>2011-01-26 15:00:04 -0800</delta_ts>
            <desc>another strategy</desc>
            <filename>nested-synchronous-post-layout.patch</filename>
            <type>text/plain</type>
            <size>1817</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDc2NjQ3KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTMsNyAr
NzUzLDkgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZQogCiAgICAg
bV9sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZCA9IGZhbHNlOwogCi0gICAgaWYgKCFtX25lc3RlZExh
eW91dENvdW50ICYmICFtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0ICYmIG1faGFzUGVuZGluZ1Bv
c3RMYXlvdXRUYXNrcykgeworICAgIEZyYW1lVmlldyogcGFyZW50VmlldyA9IG1fZnJhbWUtPnRy
ZWUoKS0+cGFyZW50KCkgPyBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpLT52aWV3KCkgOiAwOwor
ICAgIGJvb2wgY2FuRG9TeW5jaHJvbm91c1Bvc3RMYXlvdXQgPSAhbV9pblN5bmNocm9ub3VzUG9z
dExheW91dCAmJiAoIXBhcmVudFZpZXcgfHwgIXBhcmVudFZpZXctPm1faW5MYXlvdXQpOworICAg
IGlmIChtX2hhc1BlbmRpbmdQb3N0TGF5b3V0VGFza3MgJiYgIW1fbmVzdGVkTGF5b3V0Q291bnQg
JiYgY2FuRG9TeW5jaHJvbm91c1Bvc3RMYXlvdXQpIHsKICAgICAgICAgLy8gVGhpcyBpcyBhIG5l
dyB0b3AtbGV2ZWwgbGF5b3V0LiBJZiB0aGVyZSBhcmUgYW55IHJlbWFpbmluZyB0YXNrcyBmcm9t
IHRoZSBwcmV2aW91cwogICAgICAgICAvLyBsYXlvdXQsIGZpbmlzaCB0aGVtIG5vdy4KICAgICAg
ICAgbV9pblN5bmNocm9ub3VzUG9zdExheW91dCA9IHRydWU7CkBAIC05MzIsMTQgKzkzNCwxNCBA
QCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxheW91dEhlaWdodCgpIDwgY29udGVudHNIZWlnaHQoKSk7CiAKICAg
ICBpZiAoIW1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcykgewotICAgICAgICBpZiAoIW1faW5T
eW5jaHJvbm91c1Bvc3RMYXlvdXQpIHsKKyAgICAgICAgaWYgKGNhbkRvU3luY2hyb25vdXNQb3N0
TGF5b3V0KSB7CiAgICAgICAgICAgICBtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0ID0gdHJ1ZTsK
ICAgICAgICAgICAgIC8vIENhbGxzIHJlc3VtZVNjaGVkdWxlZEV2ZW50cygpCiAgICAgICAgICAg
ICBwZXJmb3JtUG9zdExheW91dFRhc2tzKCk7CiAgICAgICAgICAgICBtX2luU3luY2hyb25vdXNQ
b3N0TGF5b3V0ID0gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIW1faGFzUGVuZGlu
Z1Bvc3RMYXlvdXRUYXNrcyAmJiAobmVlZHNMYXlvdXQoKSB8fCBtX2luU3luY2hyb25vdXNQb3N0
TGF5b3V0KSkgeworICAgICAgICBpZiAoIW1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcyAmJiAo
bmVlZHNMYXlvdXQoKSB8fCAhY2FuRG9TeW5jaHJvbm91c1Bvc3RMYXlvdXQpKSB7CiAgICAgICAg
ICAgICAvLyBJZiB3ZSBuZWVkIGxheW91dCBvciBhcmUgYWxyZWFkeSBpbiBhIHN5bmNocm9ub3Vz
IGNhbGwgdG8gcG9zdExheW91dFRhc2tzKCksIAogICAgICAgICAgICAgLy8gZGVmZXIgd2lkZ2V0
IHVwZGF0ZXMgYW5kIGV2ZW50IGRpc3BhdGNoIHVudGlsIGFmdGVyIHdlIHJldHVybi4gcG9zdExh
eW91dFRhc2tzKCkKICAgICAgICAgICAgIC8vIGNhbiBtYWtlIHVzIG5lZWQgdG8gdXBkYXRlIGFn
YWluLCBhbmQgd2UgY2FuIGdldCBzdHVjayBpbiBhIG5hc3R5IGN5Y2xlIHVubGVzcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81665</attachid>
            <date>2011-02-08 11:08:04 -0800</date>
            <delta_ts>2011-02-08 11:10:13 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>52449.patch</filename>
            <type>text/plain</type>
            <size>9891</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDItMDggIFlhZWwgQWhh
cm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENyYXNoIHdoZW4gbG9nZ2luZyBpbnRvIGdtYWlsLmNvbSB3
aXRoIGZyYW1lIGZsYXR0ZW5pbmcgdHVybmVkIG9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0NDkKKworICAgICAgICBGcmFtZSBmbGF0dGVuaW5n
IGFsZ29yaXRobSByZXF1aXJlcyB0aGF0IGxheW91dCBhbHdheXMgc3RhcnRzIGZyb20gdGhlIG1h
aW4gZnJhbWUsIHNpbmNlIGxheW91dCBvZgorICAgICAgICBzdWJmcmFtZXMgaW1wYWN0cyB0aGUg
bGF5b3V0IG9mIHRoZWlyIHBhcmVudHMuIAorICAgICAgICBUaGVyZSBhcmUgcGxhY2VzIGluIHRo
ZSBjb2RlIHRoYXQgY2FsbCB2aWV3LT5sYXlvdXQoKSBub3Qgb24gdGhlIG1haW4gZnJhbWUuCisg
ICAgICAgIEluc3RlYWQgb2YgY2hhbmdpbmcgYWxsIHRoZSBjYWxsc2l0ZXMsIEkgY2hhbmdlZCBG
cmFtZVZpZXc6OmxheW91dCgpCisgICAgICAgIHRvIGZvcmNlIGxheW91dCBmcm9tIHRoZSBtYWlu
IGZyYW1lIGlmIGZyYW1lIGZsYXR0ZW5pbmcgaXMgZW5hYmxlZC4KKyAgICAgICAgSW4gYWRkaXRp
b24sIHBvc3RMYXlvdXRUYXNrcyBjYW4gdHJpZ2dlciByZWxheW91dCwgc28gbWFrZSBpdCB1c2Ug
dGhlIHRpbWVyIGV2ZW4gbW9yZS4KKyAgICAgICAgTW92ZSB0aGUgY2FsbCB0byBTZWxlY3Rpb25D
b250cm9sbGVyOjp1cGRhdGVBcHBlYXJhbmNlKCkgdG8gcGVyZm9ybVBvc3RMYXlvdXRUYXNrcygp
LCAKKyAgICAgICAgYmVjYXVzZSBjYWxsaW5nIHRocyBmcm9tIGxheW91dCgpIGxlYWRzIHRvIGEg
Y3Jhc2ggaW4gcGFnZXMgdGhhdCBoYXZlIGEgc2VsZWN0aW9uIGluIGFuIGlmcmFtZS4KKworICAg
ICAgICBUZXN0czogZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1jcmFz
aC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0
dGVuaW5nLXNlbGVjdGlvbi1jcmFzaC5odG1sCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MpOgorCiAyMDExLTAyLTA4ICBa
aGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSdXNzZWxsLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gNzc4
ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcyNSw2ICs3MjUsMTYgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3Vi
dHJlZQogICAgIGlmIChtX2luTGF5b3V0KQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9m
cmFtZS0+c2V0dGluZ3MoKSAmJiBtX2ZyYW1lLT5zZXR0aW5ncygpLT5mcmFtZUZsYXR0ZW5pbmdF
bmFibGVkKCkpIHsKKyAgICAgICAgRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gc3RhdGljX2Nhc3Q8
RnJhbWVWaWV3Kj4ocGFyZW50KCkpOworICAgICAgICBpZiAocGFyZW50VmlldyAmJiAhcGFyZW50
Vmlldy0+bV9uZXN0ZWRMYXlvdXRDb3VudCkgeworICAgICAgICAgICAgd2hpbGUgKHBhcmVudFZp
ZXctPnBhcmVudCgpKQorICAgICAgICAgICAgICAgIHBhcmVudFZpZXcgPSBzdGF0aWNfY2FzdDxG
cmFtZVZpZXcqPihwYXJlbnRWaWV3LT5wYXJlbnQoKSk7CisgICAgICAgICAgICBwYXJlbnRWaWV3
LT5sYXlvdXQoYWxsb3dTdWJ0cmVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KKwogICAgIG1fbGF5b3V0VGltZXIuc3RvcCgpOwogICAgIG1fZGVsYXllZExheW91dCA9
IGZhbHNlOwogICAgIG1fc2V0TmVlZHNMYXlvdXRXYXNEZWZlcnJlZCA9IGZhbHNlOwpAQCAtNzU3
LDcgKzc2Nyw3IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUKIAog
ICAgIG1fbGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQgPSBmYWxzZTsKIAotICAgIGlmICghbV9uZXN0
ZWRMYXlvdXRDb3VudCAmJiAhbV9pblN5bmNocm9ub3VzUG9zdExheW91dCAmJiBtX2hhc1BlbmRp
bmdQb3N0TGF5b3V0VGFza3MpIHsKKyAgICBpZiAoIW1fbmVzdGVkTGF5b3V0Q291bnQgJiYgIW1f
aW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQgJiYgbV9oYXNQZW5kaW5nUG9zdExheW91dFRhc2tzICYm
ICghKHBhcmVudCgpICYmIG1fZnJhbWUtPnNldHRpbmdzKCkgJiYgbV9mcmFtZS0+c2V0dGluZ3Mo
KS0+ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgpKSkpIHsKICAgICAgICAgLy8gVGhpcyBpcyBhIG5l
dyB0b3AtbGV2ZWwgbGF5b3V0LiBJZiB0aGVyZSBhcmUgYW55IHJlbWFpbmluZyB0YXNrcyBmcm9t
IHRoZSBwcmV2aW91cwogICAgICAgICAvLyBsYXlvdXQsIGZpbmlzaCB0aGVtIG5vdy4KICAgICAg
ICAgbV9pblN5bmNocm9ub3VzUG9zdExheW91dCA9IHRydWU7CkBAIC04OTUsOSArOTA1LDYgQEAg
dm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZQogICAgIH0KICAgICBtX2xh
eW91dFJvb3QgPSAwOwogCi0gICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldENhcmV0UmVjdE5l
ZWRzVXBkYXRlKCk7Ci0gICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnVwZGF0ZUFwcGVhcmFuY2Uo
KTsKLSAgIAogICAgIG1fbGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQgPSB0cnVlOwogCiAgICAgaWYg
KCFzdWJ0cmVlICYmICF0b1JlbmRlclZpZXcocm9vdCktPnByaW50aW5nKCkpCkBAIC05MzYsMTQg
Kzk0MywxNSBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dEhlaWdodCgpIDwgY29udGVudHNIZWlnaHQo
KSk7CiAKICAgICBpZiAoIW1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcykgewotICAgICAgICBp
ZiAoIW1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQpIHsKKyAgICAgICAgYm9vbCBkZWZlclBvc3RM
YXlvdXRUYXNrcyA9IHBhcmVudCgpICYmIG1fZnJhbWUtPnNldHRpbmdzKCkgJiYgbV9mcmFtZS0+
c2V0dGluZ3MoKS0+ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgpOworICAgICAgICBpZiAoIW1faW5T
eW5jaHJvbm91c1Bvc3RMYXlvdXQgJiYgIWRlZmVyUG9zdExheW91dFRhc2tzKSB7CiAgICAgICAg
ICAgICBtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0ID0gdHJ1ZTsKICAgICAgICAgICAgIC8vIENh
bGxzIHJlc3VtZVNjaGVkdWxlZEV2ZW50cygpCiAgICAgICAgICAgICBwZXJmb3JtUG9zdExheW91
dFRhc2tzKCk7CiAgICAgICAgICAgICBtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0ID0gZmFsc2U7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIW1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcyAm
JiAobmVlZHNMYXlvdXQoKSB8fCBtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0KSkgeworICAgICAg
ICBpZiAoIW1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcyAmJiAoKG5lZWRzTGF5b3V0KCkgfHwg
bV9pblN5bmNocm9ub3VzUG9zdExheW91dCkgfHwgIGRlZmVyUG9zdExheW91dFRhc2tzKSkgewog
ICAgICAgICAgICAgLy8gSWYgd2UgbmVlZCBsYXlvdXQgb3IgYXJlIGFscmVhZHkgaW4gYSBzeW5j
aHJvbm91cyBjYWxsIHRvIHBvc3RMYXlvdXRUYXNrcygpLCAKICAgICAgICAgICAgIC8vIGRlZmVy
IHdpZGdldCB1cGRhdGVzIGFuZCBldmVudCBkaXNwYXRjaCB1bnRpbCBhZnRlciB3ZSByZXR1cm4u
IHBvc3RMYXlvdXRUYXNrcygpCiAgICAgICAgICAgICAvLyBjYW4gbWFrZSB1cyBuZWVkIHRvIHVw
ZGF0ZSBhZ2FpbiwgYW5kIHdlIGNhbiBnZXQgc3R1Y2sgaW4gYSBuYXN0eSBjeWNsZSB1bmxlc3MK
QEAgLTE4NDksNiArMTg1Nyw5IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRh
c2tzKCkKIHsKICAgICBtX2hhc1BlbmRpbmdQb3N0TGF5b3V0VGFza3MgPSBmYWxzZTsKIAorICAg
IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRDYXJldFJlY3ROZWVkc1VwZGF0ZSgpOworICAgIG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT51cGRhdGVBcHBlYXJhbmNlKCk7CisKICAgICBpZiAobV9maXJz
dExheW91dENhbGxiYWNrUGVuZGluZykgewogICAgICAgICBtX2ZpcnN0TGF5b3V0Q2FsbGJhY2tQ
ZW5kaW5nID0gZmFsc2U7CiAgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5kaWRGaXJzdExheW91
dCgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzc5NTcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMi0wOCAgWWFlbCBBaGFyb24g
IDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ3Jhc2ggd2hlbiBsb2dnaW5nIGludG8gZ21haWwuY29tIHdpdGgg
ZnJhbWUgZmxhdHRlbmluZyB0dXJuZWQgb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MjQ0OQorCisgICAgICAgICogZmFzdC9mcmFtZXMvZmxhdHRl
bmluZy9pZnJhbWUtZmxhdHRlbmluZy1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctY3Jhc2guaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmlu
Zy1zZWxlY3Rpb24tY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zy
YW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLXNlbGVjdGlvbi1jcmFzaC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL3Jlc291cmNlcy9pZnJhbWUt
ZmxhdHRlbmluZy1jcmFzaC5odG1sOiBBZGRlZC4KKwogMjAxMS0wMi0wOCAgWmhlbnlhbyBNbyAg
PHptb0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5p
bmctY3Jhc2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxh
dHRlbmluZy1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAor
VGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0NDkKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLWNyYXNoLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1j
cmFzaC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRl
bmluZy9pZnJhbWUtZmxhdHRlbmluZy1jcmFzaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sID4KKzxoZWFkPgorPHN0eWxlPgorI015IHsg
YmFja2dyb3VuZC1jb2xvcjogYmx1ZTsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyB9Cis8
L3N0eWxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZnVuY3Rpb24gcnVuVGVz
dCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOworICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8cD5UaGlzIHRlc3QgcGFzc2VzIGlmIGl0
IGRvZXMgbm90IGNyYXNoIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MjQ0OSI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUy
NDQ5PC9hPjwvcD4KKzxpZnJhbWUgaWQ9Ik15IiBzcmM9InJlc291cmNlcy9pZnJhbWUtZmxhdHRl
bmluZy1jcmFzaC5odG1sIj48L2lmcmFtZT4KKzwvYm9keT48L2h0bWw+CisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctc2VsZWN0aW9u
LWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLXNlbGVjdGlvbi1jcmFzaC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lm
cmFtZS1mbGF0dGVuaW5nLXNlbGVjdGlvbi1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0NDkKKworCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLXNlbGVj
dGlvbi1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2Zs
YXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctc2VsZWN0aW9uLWNyYXNoLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVu
aW5nLXNlbGVjdGlvbi1jcmFzaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACis8
aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAg
ICAgZnVuY3Rpb24gdGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEZy
YW1lRmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSwgNTAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHRlc3QyKCl7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEZyYW1l
RmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiaWYiKS5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicpLmZv
Y3VzKCk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWYiKS5jb250ZW50
V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwJykuc3R5bGUudG9wID0gIjIwcHgiOwor
ICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+
CisgICAgPHN0eWxlPmJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfTwvc3R5bGU+Cisg
ICAgPHA+VGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaCA8YSBocmVmPSJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0NDkiPmh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQ0OTwvYT48L3A+CisKKyAgICA8cD48aWZyYW1l
IGlkPSJpZiIgb25sb2FkPSJ0ZXN0MigpOyIgd2lkdGg9IjIwJSIgaGVpZ2h0PSIyMCUiIHNjcm9s
bGluZz1hdXRvIHNyYz0iZGF0YTp0ZXh0L2h0bWwsCisgICAgPGh0bWw+CisgICAgPGJvZHknPgor
ICAgIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDQwMHB4OyBoZWlnaHQ6
IDQwMHB4OyBsZWZ0OiAwOyB0b3A6IDBweDsnIGlkPSdwJz48aW5wdXQgaWQ9J2luJyB2YWx1ZT0n
YWJjZCc+PC9kaXY+CisgICAgPC9ib2R5PjwvaHRtbD4KKyAgICAiPgorPC9ib2R5PgorPC9odG1s
PgorCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvcmVzb3VyY2Vz
L2lmcmFtZS1mbGF0dGVuaW5nLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9yZXNvdXJjZXMvaWZyYW1lLWZsYXR0ZW5pbmctY3Jhc2gu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcv
cmVzb3VyY2VzL2lmcmFtZS1mbGF0dGVuaW5nLWNyYXNoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJlcygpIHsg
CisgICAgdmFyIGkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdLmNs
aWVudFdpZHRoOyAKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxzdHls
ZT4KKyNwIHsgYm9yZGVyOiA0cHggc29saWQgcmVkO30KKzwvc3R5bGU+Cis8Ym9keSBvbnJlc2l6
ZT0icmVzKCk7Ij4KKzxkaXYgaWQ9J3AnPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+
PGJyPjwvZGl2PiAKKzwvYm9keT48L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81666</attachid>
            <date>2011-02-08 11:10:13 -0800</date>
            <delta_ts>2011-02-08 12:20:01 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>52449.patch</filename>
            <type>text/plain</type>
            <size>9891</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDItMDggIFlhZWwgQWhh
cm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENyYXNoIHdoZW4gbG9nZ2luZyBpbnRvIGdtYWlsLmNvbSB3
aXRoIGZyYW1lIGZsYXR0ZW5pbmcgdHVybmVkIG9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0NDkKKworICAgICAgICBGcmFtZSBmbGF0dGVuaW5n
IGFsZ29yaXRobSByZXF1aXJlcyB0aGF0IGxheW91dCBhbHdheXMgc3RhcnRzIGZyb20gdGhlIG1h
aW4gZnJhbWUsIHNpbmNlIGxheW91dCBvZgorICAgICAgICBzdWJmcmFtZXMgaW1wYWN0cyB0aGUg
bGF5b3V0IG9mIHRoZWlyIHBhcmVudHMuIAorICAgICAgICBUaGVyZSBhcmUgcGxhY2VzIGluIHRo
ZSBjb2RlIHRoYXQgY2FsbCB2aWV3LT5sYXlvdXQoKSBub3Qgb24gdGhlIG1haW4gZnJhbWUuCisg
ICAgICAgIEluc3RlYWQgb2YgY2hhbmdpbmcgYWxsIHRoZSBjYWxsc2l0ZXMsIEkgY2hhbmdlZCBG
cmFtZVZpZXc6OmxheW91dCgpCisgICAgICAgIHRvIGZvcmNlIGxheW91dCBmcm9tIHRoZSBtYWlu
IGZyYW1lIGlmIGZyYW1lIGZsYXR0ZW5pbmcgaXMgZW5hYmxlZC4KKyAgICAgICAgSW4gYWRkaXRp
b24sIHBvc3RMYXlvdXRUYXNrcyBjYW4gdHJpZ2dlciByZWxheW91dCwgc28gbWFrZSBpdCB1c2Ug
dGhlIHRpbWVyIGV2ZW4gbW9yZS4KKyAgICAgICAgTW92ZSB0aGUgY2FsbCB0byBTZWxlY3Rpb25D
b250cm9sbGVyOjp1cGRhdGVBcHBlYXJhbmNlKCkgdG8gcGVyZm9ybVBvc3RMYXlvdXRUYXNrcygp
LCAKKyAgICAgICAgYmVjYXVzZSBjYWxsaW5nIHRoZSBmcm9tIGxheW91dCgpIGxlYWRzIHRvIGEg
Y3Jhc2ggaW4gcGFnZXMgdGhhdCBoYXZlIGEgc2VsZWN0aW9uIGluIGFuIGlmcmFtZS4KKworICAg
ICAgICBUZXN0czogZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1jcmFz
aC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0
dGVuaW5nLXNlbGVjdGlvbi1jcmFzaC5odG1sCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MpOgorCiAyMDExLTAyLTA4ICBa
aGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSdXNzZWxsLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gNzc4
ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcyNSw2ICs3MjUsMTYgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3Vi
dHJlZQogICAgIGlmIChtX2luTGF5b3V0KQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9m
cmFtZS0+c2V0dGluZ3MoKSAmJiBtX2ZyYW1lLT5zZXR0aW5ncygpLT5mcmFtZUZsYXR0ZW5pbmdF
bmFibGVkKCkpIHsKKyAgICAgICAgRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gc3RhdGljX2Nhc3Q8
RnJhbWVWaWV3Kj4ocGFyZW50KCkpOworICAgICAgICBpZiAocGFyZW50VmlldyAmJiAhcGFyZW50
Vmlldy0+bV9uZXN0ZWRMYXlvdXRDb3VudCkgeworICAgICAgICAgICAgd2hpbGUgKHBhcmVudFZp
ZXctPnBhcmVudCgpKQorICAgICAgICAgICAgICAgIHBhcmVudFZpZXcgPSBzdGF0aWNfY2FzdDxG
cmFtZVZpZXcqPihwYXJlbnRWaWV3LT5wYXJlbnQoKSk7CisgICAgICAgICAgICBwYXJlbnRWaWV3
LT5sYXlvdXQoYWxsb3dTdWJ0cmVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KKwogICAgIG1fbGF5b3V0VGltZXIuc3RvcCgpOwogICAgIG1fZGVsYXllZExheW91dCA9
IGZhbHNlOwogICAgIG1fc2V0TmVlZHNMYXlvdXRXYXNEZWZlcnJlZCA9IGZhbHNlOwpAQCAtNzU3
LDcgKzc2Nyw3IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUKIAog
ICAgIG1fbGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQgPSBmYWxzZTsKIAotICAgIGlmICghbV9uZXN0
ZWRMYXlvdXRDb3VudCAmJiAhbV9pblN5bmNocm9ub3VzUG9zdExheW91dCAmJiBtX2hhc1BlbmRp
bmdQb3N0TGF5b3V0VGFza3MpIHsKKyAgICBpZiAoIW1fbmVzdGVkTGF5b3V0Q291bnQgJiYgIW1f
aW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQgJiYgbV9oYXNQZW5kaW5nUG9zdExheW91dFRhc2tzICYm
ICghKHBhcmVudCgpICYmIG1fZnJhbWUtPnNldHRpbmdzKCkgJiYgbV9mcmFtZS0+c2V0dGluZ3Mo
KS0+ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgpKSkpIHsKICAgICAgICAgLy8gVGhpcyBpcyBhIG5l
dyB0b3AtbGV2ZWwgbGF5b3V0LiBJZiB0aGVyZSBhcmUgYW55IHJlbWFpbmluZyB0YXNrcyBmcm9t
IHRoZSBwcmV2aW91cwogICAgICAgICAvLyBsYXlvdXQsIGZpbmlzaCB0aGVtIG5vdy4KICAgICAg
ICAgbV9pblN5bmNocm9ub3VzUG9zdExheW91dCA9IHRydWU7CkBAIC04OTUsOSArOTA1LDYgQEAg
dm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZQogICAgIH0KICAgICBtX2xh
eW91dFJvb3QgPSAwOwogCi0gICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldENhcmV0UmVjdE5l
ZWRzVXBkYXRlKCk7Ci0gICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnVwZGF0ZUFwcGVhcmFuY2Uo
KTsKLSAgIAogICAgIG1fbGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQgPSB0cnVlOwogCiAgICAgaWYg
KCFzdWJ0cmVlICYmICF0b1JlbmRlclZpZXcocm9vdCktPnByaW50aW5nKCkpCkBAIC05MzYsMTQg
Kzk0MywxNSBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dEhlaWdodCgpIDwgY29udGVudHNIZWlnaHQo
KSk7CiAKICAgICBpZiAoIW1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcykgewotICAgICAgICBp
ZiAoIW1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQpIHsKKyAgICAgICAgYm9vbCBkZWZlclBvc3RM
YXlvdXRUYXNrcyA9IHBhcmVudCgpICYmIG1fZnJhbWUtPnNldHRpbmdzKCkgJiYgbV9mcmFtZS0+
c2V0dGluZ3MoKS0+ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgpOworICAgICAgICBpZiAoIW1faW5T
eW5jaHJvbm91c1Bvc3RMYXlvdXQgJiYgIWRlZmVyUG9zdExheW91dFRhc2tzKSB7CiAgICAgICAg
ICAgICBtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0ID0gdHJ1ZTsKICAgICAgICAgICAgIC8vIENh
bGxzIHJlc3VtZVNjaGVkdWxlZEV2ZW50cygpCiAgICAgICAgICAgICBwZXJmb3JtUG9zdExheW91
dFRhc2tzKCk7CiAgICAgICAgICAgICBtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0ID0gZmFsc2U7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIW1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcyAm
JiAobmVlZHNMYXlvdXQoKSB8fCBtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0KSkgeworICAgICAg
ICBpZiAoIW1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcyAmJiAoKG5lZWRzTGF5b3V0KCkgfHwg
bV9pblN5bmNocm9ub3VzUG9zdExheW91dCkgfHwgIGRlZmVyUG9zdExheW91dFRhc2tzKSkgewog
ICAgICAgICAgICAgLy8gSWYgd2UgbmVlZCBsYXlvdXQgb3IgYXJlIGFscmVhZHkgaW4gYSBzeW5j
aHJvbm91cyBjYWxsIHRvIHBvc3RMYXlvdXRUYXNrcygpLCAKICAgICAgICAgICAgIC8vIGRlZmVy
IHdpZGdldCB1cGRhdGVzIGFuZCBldmVudCBkaXNwYXRjaCB1bnRpbCBhZnRlciB3ZSByZXR1cm4u
IHBvc3RMYXlvdXRUYXNrcygpCiAgICAgICAgICAgICAvLyBjYW4gbWFrZSB1cyBuZWVkIHRvIHVw
ZGF0ZSBhZ2FpbiwgYW5kIHdlIGNhbiBnZXQgc3R1Y2sgaW4gYSBuYXN0eSBjeWNsZSB1bmxlc3MK
QEAgLTE4NDksNiArMTg1Nyw5IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRh
c2tzKCkKIHsKICAgICBtX2hhc1BlbmRpbmdQb3N0TGF5b3V0VGFza3MgPSBmYWxzZTsKIAorICAg
IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRDYXJldFJlY3ROZWVkc1VwZGF0ZSgpOworICAgIG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT51cGRhdGVBcHBlYXJhbmNlKCk7CisKICAgICBpZiAobV9maXJz
dExheW91dENhbGxiYWNrUGVuZGluZykgewogICAgICAgICBtX2ZpcnN0TGF5b3V0Q2FsbGJhY2tQ
ZW5kaW5nID0gZmFsc2U7CiAgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5kaWRGaXJzdExheW91
dCgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzc5NTcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMi0wOCAgWWFlbCBBaGFyb24g
IDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ3Jhc2ggd2hlbiBsb2dnaW5nIGludG8gZ21haWwuY29tIHdpdGgg
ZnJhbWUgZmxhdHRlbmluZyB0dXJuZWQgb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MjQ0OQorCisgICAgICAgICogZmFzdC9mcmFtZXMvZmxhdHRl
bmluZy9pZnJhbWUtZmxhdHRlbmluZy1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctY3Jhc2guaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmlu
Zy1zZWxlY3Rpb24tY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zy
YW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLXNlbGVjdGlvbi1jcmFzaC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL3Jlc291cmNlcy9pZnJhbWUt
ZmxhdHRlbmluZy1jcmFzaC5odG1sOiBBZGRlZC4KKwogMjAxMS0wMi0wOCAgWmhlbnlhbyBNbyAg
PHptb0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5p
bmctY3Jhc2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxh
dHRlbmluZy1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAor
VGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0NDkKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLWNyYXNoLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1j
cmFzaC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRl
bmluZy9pZnJhbWUtZmxhdHRlbmluZy1jcmFzaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sID4KKzxoZWFkPgorPHN0eWxlPgorI015IHsg
YmFja2dyb3VuZC1jb2xvcjogYmx1ZTsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyB9Cis8
L3N0eWxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZnVuY3Rpb24gcnVuVGVz
dCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOworICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8cD5UaGlzIHRlc3QgcGFzc2VzIGlmIGl0
IGRvZXMgbm90IGNyYXNoIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MjQ0OSI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUy
NDQ5PC9hPjwvcD4KKzxpZnJhbWUgaWQ9Ik15IiBzcmM9InJlc291cmNlcy9pZnJhbWUtZmxhdHRl
bmluZy1jcmFzaC5odG1sIj48L2lmcmFtZT4KKzwvYm9keT48L2h0bWw+CisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctc2VsZWN0aW9u
LWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLXNlbGVjdGlvbi1jcmFzaC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lm
cmFtZS1mbGF0dGVuaW5nLXNlbGVjdGlvbi1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0NDkKKworCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLXNlbGVj
dGlvbi1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2Zs
YXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctc2VsZWN0aW9uLWNyYXNoLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVu
aW5nLXNlbGVjdGlvbi1jcmFzaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACis8
aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAg
ICAgZnVuY3Rpb24gdGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEZy
YW1lRmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSwgNTAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHRlc3QyKCl7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEZyYW1l
RmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiaWYiKS5jb250ZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbicpLmZv
Y3VzKCk7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWYiKS5jb250ZW50
V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwJykuc3R5bGUudG9wID0gIjIwcHgiOwor
ICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+
CisgICAgPHN0eWxlPmJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfTwvc3R5bGU+Cisg
ICAgPHA+VGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaCA8YSBocmVmPSJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0NDkiPmh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjQ0OTwvYT48L3A+CisKKyAgICA8cD48aWZyYW1l
IGlkPSJpZiIgb25sb2FkPSJ0ZXN0MigpOyIgd2lkdGg9IjIwJSIgaGVpZ2h0PSIyMCUiIHNjcm9s
bGluZz1hdXRvIHNyYz0iZGF0YTp0ZXh0L2h0bWwsCisgICAgPGh0bWw+CisgICAgPGJvZHknPgor
ICAgIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDQwMHB4OyBoZWlnaHQ6
IDQwMHB4OyBsZWZ0OiAwOyB0b3A6IDBweDsnIGlkPSdwJz48aW5wdXQgaWQ9J2luJyB2YWx1ZT0n
YWJjZCc+PC9kaXY+CisgICAgPC9ib2R5PjwvaHRtbD4KKyAgICAiPgorPC9ib2R5PgorPC9odG1s
PgorCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvcmVzb3VyY2Vz
L2lmcmFtZS1mbGF0dGVuaW5nLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9yZXNvdXJjZXMvaWZyYW1lLWZsYXR0ZW5pbmctY3Jhc2gu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcv
cmVzb3VyY2VzL2lmcmFtZS1mbGF0dGVuaW5nLWNyYXNoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJlcygpIHsg
CisgICAgdmFyIGkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdLmNs
aWVudFdpZHRoOyAKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxzdHls
ZT4KKyNwIHsgYm9yZGVyOiA0cHggc29saWQgcmVkO30KKzwvc3R5bGU+Cis8Ym9keSBvbnJlc2l6
ZT0icmVzKCk7Ij4KKzxkaXYgaWQ9J3AnPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+
PGJyPjwvZGl2PiAKKzwvYm9keT48L2h0bWw+CisK
</data>
<flag name="review"
          id="73271"
          type_id="1"
          status="-"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81674</attachid>
            <date>2011-02-08 12:20:01 -0800</date>
            <delta_ts>2011-02-08 16:26:11 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>52449.patch</filename>
            <type>text/plain</type>
            <size>9955</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDItMDggIFlhZWwgQWhh
cm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENyYXNoIHdoZW4gbG9nZ2luZyBpbnRvIGdtYWlsLmNvbSB3
aXRoIGZyYW1lIGZsYXR0ZW5pbmcgdHVybmVkIG9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0NDkKKworICAgICAgICBGcmFtZSBmbGF0dGVuaW5n
IGFsZ29yaXRobSByZXF1aXJlcyB0aGF0IGxheW91dCBhbHdheXMgc3RhcnRzIGZyb20gdGhlIG1h
aW4gZnJhbWUsIHNpbmNlIGxheW91dCBvZgorICAgICAgICBzdWJmcmFtZXMgaW1wYWN0cyB0aGUg
bGF5b3V0IG9mIHRoZWlyIHBhcmVudHMuIAorICAgICAgICBUaGVyZSBhcmUgcGxhY2VzIGluIHRo
ZSBjb2RlIHRoYXQgY2FsbCB2aWV3LT5sYXlvdXQoKSBub3Qgb24gdGhlIG1haW4gZnJhbWUuCisg
ICAgICAgIEluc3RlYWQgb2YgY2hhbmdpbmcgYWxsIHRoZSBjYWxsc2l0ZXMsIEkgY2hhbmdlZCBG
cmFtZVZpZXc6OmxheW91dCgpCisgICAgICAgIHRvIGZvcmNlIGxheW91dCBmcm9tIHRoZSBtYWlu
IGZyYW1lIGlmIGZyYW1lIGZsYXR0ZW5pbmcgaXMgZW5hYmxlZC4KKyAgICAgICAgSW4gYWRkaXRp
b24sIHBvc3RMYXlvdXRUYXNrcyBjYW4gdHJpZ2dlciByZWxheW91dCwgc28gbWFrZSBpdCB1c2Ug
dGhlIHRpbWVyIGV2ZW4gbW9yZS4KKyAgICAgICAgTW92ZSB0aGUgY2FsbCB0byBTZWxlY3Rpb25D
b250cm9sbGVyOjp1cGRhdGVBcHBlYXJhbmNlKCkgdG8gcGVyZm9ybVBvc3RMYXlvdXRUYXNrcygp
LCAKKyAgICAgICAgYmVjYXVzZSBjYWxsaW5nIHRoZSBmcm9tIGxheW91dCgpIGxlYWRzIHRvIGEg
Y3Jhc2ggaW4gcGFnZXMgdGhhdCBoYXZlIGEgc2VsZWN0aW9uIGluIGFuIGlmcmFtZS4KKworICAg
ICAgICBUZXN0czogZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1jcmFz
aC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0
dGVuaW5nLXNlbGVjdGlvbi1jcmFzaC5odG1sCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MpOgorCiAyMDExLTAyLTA4ICBa
aGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSdXNzZWxsLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gNzc4
ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcyNSw2ICs3MjUsMjAgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3Vi
dHJlZQogICAgIGlmIChtX2luTGF5b3V0KQogICAgICAgICByZXR1cm47CiAKKyAgICBib29sIGlu
U3ViZnJhbWVMYXlvdXRXaXRoRnJhbWVGbGF0dGVuaW5nID0gcGFyZW50KCkgJiYgbV9mcmFtZS0+
c2V0dGluZ3MoKSAmJiBtX2ZyYW1lLT5zZXR0aW5ncygpLT5mcmFtZUZsYXR0ZW5pbmdFbmFibGVk
KCk7CisKKyAgICBpZiAoaW5TdWJmcmFtZUxheW91dFdpdGhGcmFtZUZsYXR0ZW5pbmcpIHsKKyAg
ICAgICAgaWYgKHBhcmVudCgpLT5pc0ZyYW1lVmlldygpKSB7CisgICAgICAgICAgICBGcmFtZVZp
ZXcqIHBhcmVudFZpZXcgPSAgIHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHBhcmVudCgpKTsKKyAg
ICAgICAgICAgIGlmICghcGFyZW50Vmlldy0+bV9uZXN0ZWRMYXlvdXRDb3VudCkgeworICAgICAg
ICAgICAgICAgIHdoaWxlIChwYXJlbnRWaWV3LT5wYXJlbnQoKSAmJiBwYXJlbnRWaWV3LT5wYXJl
bnQoKS0+aXNGcmFtZVZpZXcoKSkKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50VmlldyA9IHN0
YXRpY19jYXN0PEZyYW1lVmlldyo+KHBhcmVudFZpZXctPnBhcmVudCgpKTsKKyAgICAgICAgICAg
ICAgICBwYXJlbnRWaWV3LT5sYXlvdXQoYWxsb3dTdWJ0cmVlKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICBtX2xheW91dFRp
bWVyLnN0b3AoKTsKICAgICBtX2RlbGF5ZWRMYXlvdXQgPSBmYWxzZTsKICAgICBtX3NldE5lZWRz
TGF5b3V0V2FzRGVmZXJyZWQgPSBmYWxzZTsKQEAgLTc1Nyw3ICs3NzEsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlCiAKICAgICBtX2xheW91dFNjaGVkdWxpbmdF
bmFibGVkID0gZmFsc2U7CiAKLSAgICBpZiAoIW1fbmVzdGVkTGF5b3V0Q291bnQgJiYgIW1faW5T
eW5jaHJvbm91c1Bvc3RMYXlvdXQgJiYgbV9oYXNQZW5kaW5nUG9zdExheW91dFRhc2tzKSB7Cisg
ICAgaWYgKCFtX25lc3RlZExheW91dENvdW50ICYmICFtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0
ICYmIG1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcyAmJiAhaW5TdWJmcmFtZUxheW91dFdpdGhG
cmFtZUZsYXR0ZW5pbmcpIHsKICAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyB0b3AtbGV2ZWwgbGF5
b3V0LiBJZiB0aGVyZSBhcmUgYW55IHJlbWFpbmluZyB0YXNrcyBmcm9tIHRoZSBwcmV2aW91cwog
ICAgICAgICAvLyBsYXlvdXQsIGZpbmlzaCB0aGVtIG5vdy4KICAgICAgICAgbV9pblN5bmNocm9u
b3VzUG9zdExheW91dCA9IHRydWU7CkBAIC04OTUsOSArOTA5LDYgQEAgdm9pZCBGcmFtZVZpZXc6
OmxheW91dChib29sIGFsbG93U3VidHJlZQogICAgIH0KICAgICBtX2xheW91dFJvb3QgPSAwOwog
Ci0gICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldENhcmV0UmVjdE5lZWRzVXBkYXRlKCk7Ci0g
ICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnVwZGF0ZUFwcGVhcmFuY2UoKTsKLSAgIAogICAgIG1f
bGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQgPSB0cnVlOwogCiAgICAgaWYgKCFzdWJ0cmVlICYmICF0
b1JlbmRlclZpZXcocm9vdCktPnByaW50aW5nKCkpCkBAIC05MzYsMTQgKzk0NywxNCBAQCB2b2lk
IEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxheW91dEhlaWdodCgpIDwgY29udGVudHNIZWlnaHQoKSk7CiAKICAgICBpZiAo
IW1faGFzUGVuZGluZ1Bvc3RMYXlvdXRUYXNrcykgewotICAgICAgICBpZiAoIW1faW5TeW5jaHJv
bm91c1Bvc3RMYXlvdXQpIHsKKyAgICAgICAgaWYgKCFtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0
ICYmICFpblN1YmZyYW1lTGF5b3V0V2l0aEZyYW1lRmxhdHRlbmluZykgewogICAgICAgICAgICAg
bV9pblN5bmNocm9ub3VzUG9zdExheW91dCA9IHRydWU7CiAgICAgICAgICAgICAvLyBDYWxscyBy
ZXN1bWVTY2hlZHVsZWRFdmVudHMoKQogICAgICAgICAgICAgcGVyZm9ybVBvc3RMYXlvdXRUYXNr
cygpOwogICAgICAgICAgICAgbV9pblN5bmNocm9ub3VzUG9zdExheW91dCA9IGZhbHNlOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKCFtX2hhc1BlbmRpbmdQb3N0TGF5b3V0VGFza3MgJiYgKG5l
ZWRzTGF5b3V0KCkgfHwgbV9pblN5bmNocm9ub3VzUG9zdExheW91dCkpIHsKKyAgICAgICAgaWYg
KCFtX2hhc1BlbmRpbmdQb3N0TGF5b3V0VGFza3MgJiYgKG5lZWRzTGF5b3V0KCkgfHwgbV9pblN5
bmNocm9ub3VzUG9zdExheW91dCB8fCBpblN1YmZyYW1lTGF5b3V0V2l0aEZyYW1lRmxhdHRlbmlu
ZykpIHsKICAgICAgICAgICAgIC8vIElmIHdlIG5lZWQgbGF5b3V0IG9yIGFyZSBhbHJlYWR5IGlu
IGEgc3luY2hyb25vdXMgY2FsbCB0byBwb3N0TGF5b3V0VGFza3MoKSwgCiAgICAgICAgICAgICAv
LyBkZWZlciB3aWRnZXQgdXBkYXRlcyBhbmQgZXZlbnQgZGlzcGF0Y2ggdW50aWwgYWZ0ZXIgd2Ug
cmV0dXJuLiBwb3N0TGF5b3V0VGFza3MoKQogICAgICAgICAgICAgLy8gY2FuIG1ha2UgdXMgbmVl
ZCB0byB1cGRhdGUgYWdhaW4sIGFuZCB3ZSBjYW4gZ2V0IHN0dWNrIGluIGEgbmFzdHkgY3ljbGUg
dW5sZXNzCkBAIC0xODQ5LDYgKzE4NjAsOSBAQCB2b2lkIEZyYW1lVmlldzo6cGVyZm9ybVBvc3RM
YXlvdXRUYXNrcygpCiB7CiAgICAgbV9oYXNQZW5kaW5nUG9zdExheW91dFRhc2tzID0gZmFsc2U7
CiAKKyAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0Q2FyZXRSZWN0TmVlZHNVcGRhdGUoKTsK
KyAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dXBkYXRlQXBwZWFyYW5jZSgpOworCiAgICAgaWYg
KG1fZmlyc3RMYXlvdXRDYWxsYmFja1BlbmRpbmcpIHsKICAgICAgICAgbV9maXJzdExheW91dENh
bGxiYWNrUGVuZGluZyA9IGZhbHNlOwogICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZGlkRmly
c3RMYXlvdXQoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTU3KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDItMDggIFlhZWwg
QWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENyYXNoIHdoZW4gbG9nZ2luZyBpbnRvIGdtYWlsLmNv
bSB3aXRoIGZyYW1lIGZsYXR0ZW5pbmcgdHVybmVkIG9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0NDkKKworICAgICAgICAqIGZhc3QvZnJhbWVz
L2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLWNyYXNo
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZs
YXR0ZW5pbmctc2VsZWN0aW9uLWNyYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1zZWxlY3Rpb24tY3Jhc2gu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9yZXNvdXJjZXMv
aWZyYW1lLWZsYXR0ZW5pbmctY3Jhc2guaHRtbDogQWRkZWQuCisKIDIwMTEtMDItMDggIFpoZW55
YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1
c3NlbGwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1m
bGF0dGVuaW5nLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLWNyYXNoLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZy
YW1lLWZsYXR0ZW5pbmctY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDMgQEAKK1RoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2ggaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDQ5CisKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1jcmFzaC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0
ZW5pbmctY3Jhc2guaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctY3Jhc2guaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCA+Cis8aGVhZD4KKzxzdHlsZT4K
KyNNeSB7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBw
eDsgfQorPC9zdHlsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9u
IHJ1blRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCh0cnVl
KTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPHA+VGhpcyB0ZXN0IHBhc3Nl
cyBpZiBpdCBkb2VzIG5vdCBjcmFzaCA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTI0NDkiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MjQ0OTwvYT48L3A+Cis8aWZyYW1lIGlkPSJNeSIgc3JjPSJyZXNvdXJjZXMvaWZyYW1l
LWZsYXR0ZW5pbmctY3Jhc2guaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+PC9odG1sPgorCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLXNl
bGVjdGlvbi1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1zZWxlY3Rpb24tY3Jhc2gtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRl
bmluZy9pZnJhbWUtZmxhdHRlbmluZy1zZWxlY3Rpb24tY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3Qg
Y3Jhc2ggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDQ5CisKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmlu
Zy1zZWxlY3Rpb24tY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLXNlbGVjdGlvbi1jcmFzaC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUt
ZmxhdHRlbmluZy1zZWxlY3Rpb24tY3Jhc2guaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
OSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0sIDUwMCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiB0ZXN0MigpeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImlmIikuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aW4nKS5mb2N1cygpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlmIiku
Y29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncCcpLnN0eWxlLnRvcCA9ICIy
MHB4IjsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0
ZXN0KCkiPgorICAgIDxzdHlsZT5ib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IH08L3N0
eWxlPgorICAgIDxwPlRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2ggPGEgaHJl
Zj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDQ5Ij5odHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI0NDk8L2E+PC9wPgorCisgICAgPHA+
PGlmcmFtZSBpZD0iaWYiIG9ubG9hZD0idGVzdDIoKTsiIHdpZHRoPSIyMCUiIGhlaWdodD0iMjAl
IiBzY3JvbGxpbmc9YXV0byBzcmM9ImRhdGE6dGV4dC9odG1sLAorICAgIDxodG1sPgorICAgIDxi
b2R5Jz4KKyAgICA8ZGl2IHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiA0MDBweDsg
aGVpZ2h0OiA0MDBweDsgbGVmdDogMDsgdG9wOiAwcHg7JyBpZD0ncCc+PGlucHV0IGlkPSdpbicg
dmFsdWU9J2FiY2QnPjwvZGl2PgorICAgIDwvYm9keT48L2h0bWw+CisgICAgIj4KKzwvYm9keT4K
KzwvaHRtbD4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL3Jl
c291cmNlcy9pZnJhbWUtZmxhdHRlbmluZy1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvcmVzb3VyY2VzL2lmcmFtZS1mbGF0dGVuaW5n
LWNyYXNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0
dGVuaW5nL3Jlc291cmNlcy9pZnJhbWUtZmxhdHRlbmluZy1jcmFzaC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBy
ZXMoKSB7IAorICAgIHZhciBpID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwn
KVswXS5jbGllbnRXaWR0aDsgCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+
Cis8c3R5bGU+CisjcCB7IGJvcmRlcjogNHB4IHNvbGlkIHJlZDt9Cis8L3N0eWxlPgorPGJvZHkg
b25yZXNpemU9InJlcygpOyI+Cis8ZGl2IGlkPSdwJz48YnI+PGJyPjxicj48YnI+PGJyPjxicj48
YnI+PGJyPjxicj48L2Rpdj4gCis8L2JvZHk+PC9odG1sPgorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>