<?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>68238</bug_id>
          
          <creation_ts>2011-09-16 04:08:22 -0700</creation_ts>
          <short_desc>[soup] Crash while loading http://www.jusco.cn</short_desc>
          <delta_ts>2012-04-20 02:10:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.jusco.cn</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>80320</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nayan Kumar K">nayankk</reporter>
          <assigned_to name="Nayan Kumar K">nayankk</assigned_to>
          <cc>ap</cc>
    
    <cc>danw</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>468413</commentid>
    <comment_count>0</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-16 04:08:22 -0700</bug_when>
    <thetext>GtkLauncher crashes while loading http://www.jusco.cn with following backtrace,


Program received signal SIGSEGV, Segmentation fault.
0x00007ffff524e2a0 in WTF::OwnPtr&lt;WebCore::ApplicationCacheHost&gt;::get (
    this=0x8f0) at ../../Source/JavaScriptCore/wtf/OwnPtr.h:56
56	        PtrType get() const { return m_ptr; }
(gdb) bt
#0  0x00007ffff524e2a0 in WTF::OwnPtr&lt;WebCore::ApplicationCacheHost&gt;::get (
    this=0x8f0) at ../../Source/JavaScriptCore/wtf/OwnPtr.h:56
#1  0x00007ffff524e116 in WebCore::DocumentLoader::applicationCacheHost (this=
    0x0) at ../../Source/WebCore/loader/DocumentLoader.h:254
#2  0x00007ffff5433509 in WebCore::FrameLoader::loadResourceSynchronously (
    this=0xbea588, request=..., 
    storedCredentials=WebCore::AllowStoredCredentials, error=..., 
    response=..., data=...) at ../../Source/WebCore/loader/FrameLoader.cpp:2644
#3  0x00007ffff5423f3d in WebCore::DocumentThreadableLoader::loadRequest (
    this=0xe40c10, request=..., securityCheck=WebCore::DoSecurityCheck)
    at ../../Source/WebCore/loader/DocumentThreadableLoader.cpp:364
#4  0x00007ffff5422259 in WebCore::DocumentThreadableLoader::DocumentThreadableLoader (this=0xe40c10, document=0xcb6660, client=0xe40508, 
    blockingBehavior=WebCore::DocumentThreadableLoader::LoadSynchronously, 
    request=..., options=...)
    at ../../Source/WebCore/loader/DocumentThreadableLoader.cpp:87
#5  0x00007ffff5421e2a in WebCore::DocumentThreadableLoader::loadResourceSynchronously (document=0xcb6660, request=..., client=..., options=...)
    at ../../Source/WebCore/loader/DocumentThreadableLoader.cpp:59
#6  0x00007ffff547bf11 in WebCore::ThreadableLoader::loadResourceSynchronously
    (context=0xcb67f8, request=..., client=..., options=...)
    at ../../Source/WebCore/loader/ThreadableLoader.cpp:69
#7  0x00007ffff59be6da in WebCore::XMLHttpRequest::createRequest (
---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit---
    this=0xe404e0, ec=@0x7fffffffa13c)
    at ../../Source/WebCore/xml/XMLHttpRequest.cpp:669
#8  0x00007ffff59bdb35 in WebCore::XMLHttpRequest::send (this=0xe404e0, 
    body=..., ec=@0x7fffffffa13c)
    at ../../Source/WebCore/xml/XMLHttpRequest.cpp:538
#9  0x00007ffff59bd56b in WebCore::XMLHttpRequest::send (this=0xe404e0, 
    ec=@0x7fffffffa13c) at ../../Source/WebCore/xml/XMLHttpRequest.cpp:478
#10 0x00007ffff4f37406 in WebCore::JSXMLHttpRequest::send (this=
    0x7ffff7e06be0, exec=0x7fff9e926300)
    at ../../Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp:121
#11 0x00007ffff5c26b1f in WebCore::jsXMLHttpRequestPrototypeFunctionSend (
    exec=0x7fff9e926300) at DerivedSources/WebCore/JSXMLHttpRequest.cpp:518
#12 0x00007fffa7f201f8 in ?? ()
#13 0x00007fffffffa250 in ?? ()
#14 0x00007fffa7f223d5 in ?? ()
#15 0x00007fffffffa1d0 in ?? ()
#16 0x00007ffff7e06be0 in ?? ()
#17 0x0000000000cc29c0 in ?? ()
#18 0x00007ffff7e07e60 in ?? ()
#19 0x0000000000000000 in ?? ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468416</commentid>
    <comment_count>1</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-16 04:28:06 -0700</bug_when>
    <thetext>Crash is happening the following code, and it seems to happen for AJAX resource requests.


#if ENABLE(OFFLINE_WEB_APPLICATIONS)
        if (!documentLoader()-&gt;applicationCacheHost()-&gt;maybeLoadSynchronously(newRequest, error, response, data)) {
#endif
            ResourceHandle::loadResourceSynchronously(networkingContext(), newRequest, storedCredentials, error, response, data);
#if ENABLE(OFFLINE_WEB_APPLICATIONS)
            documentLoader()-&gt;applicationCacheHost()-&gt;maybeLoadFallbackSynchronously(newRequest, error, response, data);
        }
#endif
    }
    int encodedDataLength = response.resourceLoadInfo() ? static_cast&lt;int&gt;(response.resourceLoadInfo()-&gt;encodedDataLength) : -1;
        notifier()-&gt;sendRemainingDelegateMessages(m_documentLoader.get(), identifier, response, data.data(), data.size(), encodedDataLength, error);

When doing ResourceHandle::loadResourceSynchronously, it happens that, resource loading completes and documentLoader becomes NULL before reaching the line next to ResourceHandle::loadResourceSynchronously, which seems to be valid since this is a synchronous resource request. 

Added some debugging statements before and after this call and it proves that documentLoader is getting set to 0 before returning from ResourceHandle::loadResourceSynchronously. 

Given this, it make sense to guard documentLoader de-referencing with a NULL check after calling ResourceHandle::loadResourceSynchronously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468417</commentid>
    <comment_count>2</comment_count>
      <attachid>107633</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-16 04:29:21 -0700</bug_when>
    <thetext>Created attachment 107633
Patch to fix crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468421</commentid>
    <comment_count>3</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-16 04:33:19 -0700</bug_when>
    <thetext>This crash happens either while loading http://www.jusco.cn or by loading http://www.jusco.cn, navigating to some link, pressing &apos;Back&apos; button and then closing GtkLauncher. And it seem to happen only for AJAX resource requests (like the one in  http://www.jusco.cn). It is highly difficult to add a layout test to simulate this use case!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468487</commentid>
    <comment_count>4</comment_count>
      <attachid>107633</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-16 08:05:45 -0700</bug_when>
    <thetext>Comment on attachment 107633
Patch to fix crash

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        No new tests. (OOPS!)

Tests are required for WebKit bug fixes. Could you please create a regression test demonstrating this problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468489</commentid>
    <comment_count>5</comment_count>
      <attachid>107633</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-16 08:06:48 -0700</bug_when>
    <thetext>Comment on attachment 107633
Patch to fix crash

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

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +        No new tests. (OOPS!)
&gt; 
&gt; Tests are required for WebKit bug fixes. Could you please create a regression test demonstrating this problem?

If you are not going to supply a test you need to explain why, here. If you just leave in the OOPS, then we can’t check the patch in. The pre-commit script will reject it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468672</commentid>
    <comment_count>6</comment_count>
      <attachid>107694</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-16 11:45:41 -0700</bug_when>
    <thetext>Created attachment 107694
CrashFix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468675</commentid>
    <comment_count>7</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-16 11:49:08 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 107633 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107633&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:12
&gt; &gt;&gt; +        No new tests. (OOPS!)
&gt; &gt; 
&gt; &gt; Tests are required for WebKit bug fixes. Could you please create a regression test demonstrating this problem?
&gt; 
&gt; If you are not going to supply a test you need to explain why, here. If you just leave in the OOPS, then we can’t check the patch in. The pre-commit script will reject it.

I have seen this crash happening only with http://www.jusco.cn. This is a random crash, sometimes seen just when we open this site. Sometimes we will have to navigate to some link from this page and press back and then close the GtkLuancher to make GtkLauncher crash. I am not sure whether it can be simulated via a LayoutTests. 

Hence marked the &quot;tests&quot; field in ChangeLog as &quot;No tests added&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468685</commentid>
    <comment_count>8</comment_count>
      <attachid>107694</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-16 11:58:36 -0700</bug_when>
    <thetext>Comment on attachment 107694
CrashFix

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

&gt; Source/WebCore/loader/FrameLoader.cpp:2651
&gt;      int encodedDataLength = response.resourceLoadInfo() ? static_cast&lt;int&gt;(response.resourceLoadInfo()-&gt;encodedDataLength) : -1;
&gt; -    notifier()-&gt;sendRemainingDelegateMessages(m_documentLoader.get(), identifier, response, data.data(), data.size(), encodedDataLength, error);
&gt; +    if (documentLoader())
&gt; +        notifier()-&gt;sendRemainingDelegateMessages(m_documentLoader.get(), identifier, response, data.data(), data.size(), encodedDataLength, error);

Given that the next line of code uses m_documentLoader.get() it is not great style to use documentLoader() on the line before. It should be:

    if (m_documentLoader)

I also am unclear that not sending a delegate message at all is the right thing to do at this level. Is there anything useful sendRemainingDelegateMessages can do without a document loader?

It also seems that the encodedDataLength computation should be inside the if statement, not outside.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468693</commentid>
    <comment_count>9</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-16 12:14:48 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 107694 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107694&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:2651
&gt; &gt;      int encodedDataLength = response.resourceLoadInfo() ? static_cast&lt;int&gt;(response.resourceLoadInfo()-&gt;encodedDataLength) : -1;
&gt; &gt; -    notifier()-&gt;sendRemainingDelegateMessages(m_documentLoader.get(), identifier, response, data.data(), data.size(), encodedDataLength, error);
&gt; &gt; +    if (documentLoader())
&gt; &gt; +        notifier()-&gt;sendRemainingDelegateMessages(m_documentLoader.get(), identifier, response, data.data(), data.size(), encodedDataLength, error);
&gt; 
&gt; Given that the next line of code uses m_documentLoader.get() it is not great style to use documentLoader() on the line before. It should be:
&gt; 
&gt;     if (m_documentLoader)
Sure, will do.
&gt; 
&gt; I also am unclear that not sending a delegate message at all is the right thing to do at this level. Is there anything useful sendRemainingDelegateMessages can do without a document loader?

If we call sendRemainingDelegateMessage, in-spite DocumentLoader being NULL, it crashs here,

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6acfc1e in WebKit::FrameLoaderClient::dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long, WebCore::ResourceResponse const&amp;) ()
   from /home/nayankk/Sources/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
(gdb) bt
#0  0x00007ffff6acfc1e in WebKit::FrameLoaderClient::dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long, WebCore::ResourceResponse const&amp;) ()
   from /home/nayankk/Sources/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#1  0x00007ffff7010d42 in WebCore::ResourceLoadNotifier::dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long, WebCore::ResourceResponse const&amp;) ()
   from /home/nayankk/Sources/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#2  0x00007ffff7011152 in WebCore::ResourceLoadNotifier::sendRemainingDelegateMessages(WebCore::DocumentLoader*, unsigned long, WebCore::ResourceResponse const&amp;, char const*, int, int, WebCore::ResourceError const&amp;) () from /home/nayankk/Sources/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#3  0x00007ffff6fdc182 in WebCore::FrameLoader::loadResourceSynchronously(WebCore::ResourceRequest const&amp;, WebCore::StoredCredentials, WebCore::ResourceError&amp;, WebCore::ResourceResponse&amp;, WTF::Vector&lt;char, 0ul&gt;&amp;) () from /home/nayankk/Sources/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#4  0x00007ffff6fd0f17 in WebCore::DocumentThreadableLoader::loadRequest(WebCore::ResourceRequest const&amp;, WebCore::SecurityCheckPolicy) ()
   from /home/nayankk/Sources/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#5  0x00007ffff6fd2528 in WebCore::DocumentThreadableLoader::DocumentThreadableLoader(WebCore::Document*, WebCore::ThreadableLoaderClient*, WebCore::DocumentThreadableLoader::BlockingBehavior, WebCore::ResourceRequest const&amp;, WebCore::ThreadableLoaderOptions const&amp;) ()
   from /home/nayankk/Sources/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#6  0x00007ffff6fd27cc in WebCore::DocumentThreadableLoader::loadResourceSynchronously(WebCore::Document*, WebCore::ResourceRequest const&amp;, WebCore::ThreadableLoaderClient&amp;, WebCore::ThreadableLoaderOptions const&amp;) () from /home/nayankk/Sources/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#7  0x00007ffff744e327 in WebCore::XMLHttpRequest::createRequest(int&amp;) () from /home/nayankk/Sources/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#8  0x00007ffff744ee9b in WebCore::XMLHttpRequest::send(WTF::String const&amp;, int&amp;) () from /home/nayankk/Sources/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#9  0x00007ffff744f358 in WebCore::XMLHttpRequest::send(int&amp;) () from /home/nayankk/Sources/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#10 0x00007ffff6c34764 in WebCore::JSXMLHttpRequest::send(JSC::ExecState*) () from /home/nayankk/Sources/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#11 0x00007ffff7708ceb in WebCore::jsXMLHttpRequestPrototypeFunctionSend(JSC::ExecState*) ()
   from /home/nayankk/Sources/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0

This is because, we try to de-reference documentLoader() in FrameLoaderClient::dispatchDidReceievResponse function. Clients assume that, these callbacks will not be called with NULL documentLoader(), hence it makes sense not to send trigger sending callbacks. Also,  sendRemainingDelegateMessages does nothing extra than triggering these client callbacks.

&gt; 
&gt; It also seems that the encodedDataLength computation should be inside the if statement, not outside.
Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468705</commentid>
    <comment_count>10</comment_count>
      <attachid>107701</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-16 12:23:01 -0700</bug_when>
    <thetext>Created attachment 107701
CrashFix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468884</commentid>
    <comment_count>11</comment_count>
      <attachid>107701</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-16 16:23:42 -0700</bug_when>
    <thetext>Comment on attachment 107701
CrashFix

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        No tests added, since this is a random crash happening only with http://www.jusco.cn, upon 
&gt; +        loading, navigating back and closing in GtkLauncher.

I don&apos;t think that this is a sufficient explanation. Per the description, it does happen somewhat reproducibly, and it certainly doesn&apos;t matter how many sites are affected.

Do you know if this happens in other WebKit ports?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470164</commentid>
    <comment_count>12</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-20 10:42:01 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 107701 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107701&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        No tests added, since this is a random crash happening only with http://www.jusco.cn, upon 
&gt; &gt; +        loading, navigating back and closing in GtkLauncher.
&gt; 
&gt; I don&apos;t think that this is a sufficient explanation. Per the description, it does happen somewhat reproducibly, and it certainly doesn&apos;t matter how many sites are affected.
&gt; 
&gt; Do you know if this happens in other WebKit ports?

Well, I don&apos;t see crash in QtLauncher(!!). I observed that, 5 XMLHttpRequests gets triggered in both QtLauncher and GtkLauncher. While, in QtLauncher, these request are made &quot;one after the other&quot;, i.e., new request is made after getting the response for previous request, whereas, in GtkLuancher, all 5 requests are triggered at once, and then we start receiving response. Interestingly, GtkLauncher processed the requests one-after-the-other for a a reduced test case which triggers 5 XMLHttpRequest at once!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472226</commentid>
    <comment_count>13</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-23 07:43:15 -0700</bug_when>
    <thetext>Some more analysis reveals the following,

1). The page http://www.jusco.cn has 6 iframes, 5 of which triggers XMLHttpRequest (e.g, http://m.weather.com.cn/m/p2/weather1.htm?id=101280101T)

2). During the loading of the page, these XMLHttpRequest gets triggered many times. Code flow is

XMLHttpRequest-&gt;ThreadableLoader-&gt;DocumentThreadableLoader-&gt;FrameLoader-&gt;ResourceHandle-&gt;ResourceHandleSoup

Note that documentLoader doesn&apos;t get involved in this code path.

3). ResourceHandleSoup triggers the synchronous network request and waits for the response,

#39 0x00007ffff0c2a9f2 in g_main_loop_run (loop=0x7fff8c051220) at /build/buildd/glib2.0-2.28.6/./glib/gmain.c:3299
#40 0x00007ffff55f0c99 in WebCore::WebCoreSynchronousLoader::run (this=0x7fffffffbae0) at ../../Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:125
#41 0x00007ffff55f3c5d in WebCore::ResourceHandle::loadResourceSynchronously (context=0xb21990, request=..., error=..., response=..., data=...)
    at ../../Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:752
#42 0x00007ffff54334f2 in WebCore::FrameLoader::loadResourceSynchronously (this=0x736028, request=..., storedCredentials=WebCore::AllowStoredCredentials, error=..., response=..., data=...)
    at ../../Source/WebCore/loader/FrameLoader.cpp:2642
#43 0x00007ffff5423f3d in WebCore::DocumentThreadableLoader::loadRequest (this=0x7fff8c03fd90, request=..., securityCheck=WebCore::DoSecurityCheck)
    at ../../Source/WebCore/loader/DocumentThreadableLoader.cpp:364
---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit--- 
#44 0x00007ffff5422259 in WebCore::DocumentThreadableLoader::DocumentThreadableLoader (this=0x7fff8c03fd90, document=0x7fff8c0b8300, client=0x7fff8c04fe48, 
    blockingBehavior=WebCore::DocumentThreadableLoader::LoadSynchronously, request=..., options=...) at ../../Source/WebCore/loader/DocumentThreadableLoader.cpp:87
#45 0x00007ffff5421e2a in WebCore::DocumentThreadableLoader::loadResourceSynchronously (document=0x7fff8c0b8300, request=..., client=..., options=...)
    at ../../Source/WebCore/loader/DocumentThreadableLoader.cpp:59
#46 0x00007ffff547bf11 in WebCore::ThreadableLoader::loadResourceSynchronously (context=0x7fff8c0b8498, request=..., client=..., options=...) at ../../Source/WebCore/loader/ThreadableLoader.cpp:69
#47 0x00007ffff59be6da in WebCore::XMLHttpRequest::createRequest (this=0x7fff8c04fe20, ec=@0x7fffffffc6fc) at ../../Source/WebCore/xml/XMLHttpRequest.cpp:669
#48 0x00007ffff59bdb35 in WebCore::XMLHttpRequest::send (this=0x7fff8c04fe20, body=..., ec=@0x7fffffffc6fc) at ../../Source/WebCore/xml/XMLHttpRequest.cpp:538
#49 0x00007ffff59bd56b in WebCore::XMLHttpRequest::send (this=0x7fff8c04fe20, ec=@0x7fffffffc6fc) at ../../Source/WebCore/xml/XMLHttpRequest.cpp:478
#50 0x00007ffff4f37406 in WebCore::JSXMLHttpRequest::send (this=0x7ffff7e1e1a0, exec=0x7fff9a146160) at ../../Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp:121
#51 0x00007ffff5c26b1f in WebCore::jsXMLHttpRequestPrototypeFunctionSend (exec=0x7fff9a146160) at DerivedSources/WebCore/JSXMLHttpRequest.cpp:518

4). The page which got loaded in frame(http://m.weather.com.cn/m/p2/weather1.htm?id=101280101T) has the logic of appending a node via JavaScript,

B=document.createElement(&quot;script&quot;);
B.type=&quot;text/javascript&quot;;B.id=&quot;wratingSuevey&quot;;
B.src=&quot;http://tongji.wrating.com/survey/check.php?c=&quot;+vjAcc;
document.getElementsByTagName(&quot;head&quot;)[0].appendChild(B)}

5). While soup waits for response from network, webcore shared timer gets triggered and it processes the above JavaScript, which eventually results in setting of documentLoader of frame to 0, (detachViewsAndDocumentLoader sets documentLoader of frame to 0)

Breakpoint 3, WebCore::FrameLoader::setDocumentLoader (this=0x74c8e8, loader=0x0) at ../../Source/WebCore/loader/FrameLoader.cpp:1677
1677	}
(gdb) bt
#0  WebCore::FrameLoader::setDocumentLoader (this=0x74c8e8, loader=0x0) at ../../Source/WebCore/loader/FrameLoader.cpp:1677
#1  0x00007ffff5432836 in WebCore::FrameLoader::detachViewsAndDocumentLoader (this=0x74c8e8) at ../../Source/WebCore/loader/FrameLoader.cpp:2478
#2  0x00007ffff5432749 in WebCore::FrameLoader::detachFromParent (this=0x74c8e8) at ../../Source/WebCore/loader/FrameLoader.cpp:2463
#3  0x00007ffff54326b2 in WebCore::FrameLoader::frameDetached (this=0x74c8e8) at ../../Source/WebCore/loader/FrameLoader.cpp:2446
#4  0x00007ffff529b118 in WebCore::HTMLFrameOwnerElement::willRemove (this=0x74be30) at ../../Source/WebCore/html/HTMLFrameOwnerElement.cpp:58
#5  0x00007ffff529a8c3 in WebCore::HTMLFrameElementBase::willRemove (this=0x74be30) at ../../Source/WebCore/html/HTMLFrameElementBase.cpp:280
#6  0x00007ffff50bcef4 in WebCore::ContainerNode::willRemove (this=0x747710) at ../../Source/WebCore/dom/ContainerNode.cpp:379
#7  0x00007ffff511c035 in WebCore::Element::willRemove (this=0x747710) at ../../Source/WebCore/dom/Element.cpp:901
#8  0x00007ffff50bcef4 in WebCore::ContainerNode::willRemove (this=0x747ab0) at ../../Source/WebCore/dom/ContainerNode.cpp:379
#9  0x00007ffff511c035 in WebCore::Element::willRemove (this=0x747ab0) at ../../Source/WebCore/dom/Element.cpp:901
#10 0x00007ffff50bcfba in WebCore::willRemoveChild (child=0x747ab0) at ../../Source/WebCore/dom/ContainerNode.cpp:392
#11 0x00007ffff50bd19a in WebCore::ContainerNode::removeChild (this=0x72cda0, oldChild=0x747ab0, ec=@0x7fffffffb2a8) at ../../Source/WebCore/dom/ContainerNode.cpp:432
#12 0x00007ffff50bdb82 in WebCore::ContainerNode::appendChild (this=0x72cda0, newChild=..., ec=@0x7fffffffb2a8, shouldLazyAttach=true) at ../../Source/WebCore/dom/ContainerNode.cpp:620
#13 0x00007ffff5141c25 in WebCore::Node::appendChild (this=0x72cda0, newChild=..., ec=@0x7fffffffb2a8, shouldLazyAttach=true) at ../../Source/WebCore/dom/Node.cpp:683
#14 0x00007ffff4f1cef9 in WebCore::JSNode::appendChild (this=0x7fff9a13aae0, exec=0x7fff9a146230) at ../../Source/WebCore/bindings/js/JSNodeCustom.cpp:183
#15 0x00007ffff5baaa9a in WebCore::jsNodePrototypeFunctionAppendChild (exec=0x7fff9a146230) at DerivedSources/WebCore/JSNode.cpp:512
#16 0x00007fffa7f201f8 in ?? ()
#17 0x00007fffffffb3b0 in ?? ()
#18 0x00007fffa7f21924 in ?? ()
#19 0x00007fffffffb330 in ?? ()
#20 0x00007fff9a13a720 in ?? ()
#21 0xffff000000000000 in ?? ()
#22 0xffff000000000007 in ?? ()
#23 0x00007fffa7f212e1 in ?? ()
#24 0x00007ffff3f1daf7 in JSC::Register::Register (this=0x7ffff0ed4630) at ../../Source/JavaScriptCore/interpreter/Register.h:93
#25 0x00007ffff3fa1988 in JSC::JITCode::execute (this=0x7ffff7e160b8, registerFile=0x4e8628, callFrame=0x7fff9a1461d8, globalData=0x4e52f0) at ../../Source/JavaScriptCore/jit/JITCode.h:107
#26 0x00007ffff3f9e186 in JSC::Interpreter::executeCall (this=0x4e8610, callFrame=0x7fff9a133d28, function=0x7ffff7e1e020, callType=JSC::CallTypeJS, callData=..., thisValue=..., args=...)
    at ../../Source/JavaScriptCore/interpreter/Interpreter.cpp:971
#27 0x00007ffff4039f9f in JSC::call (exec=0x7fff9a133d28, functionObject=..., callType=JSC::CallTypeJS, callData=..., thisValue=..., args=...) at ../../Source/JavaScriptCore/runtime/CallData.cpp:39
#28 0x00007ffff4ed2d1f in WebCore::JSMainThreadExecState::call (exec=0x7fff9a133d28, functionObject=..., callType=JSC::CallTypeJS, callData=..., thisValue=..., args=...)
    at ../../Source/WebCore/bindings/js/JSMainThreadExecState.h:52
#29 0x00007ffff4f40314 in WebCore::ScheduledAction::executeFunctionInContext (this=0x8ad580, globalObject=0x7fff9a133ca0, thisValue=..., context=0x67cc98)
    at ../../Source/WebCore/bindings/js/ScheduledAction.cpp:110
#30 0x00007ffff4f404da in WebCore::ScheduledAction::execute (this=0x8ad580, document=0x67cb00) at ../../Source/WebCore/bindings/js/ScheduledAction.cpp:130
#31 0x00007ffff4f400e4 in WebCore::ScheduledAction::execute (this=0x8ad580, context=0x67cc98) at ../../Source/WebCore/bindings/js/ScheduledAction.cpp:80
#32 0x00007ffff54b70d7 in WebCore::DOMTimer::fired (this=0x88ddc0) at ../../Source/WebCore/page/DOMTimer.cpp:135
#33 0x00007ffff5626833 in WebCore::ThreadTimers::sharedTimerFiredInternal (this=0x4ed4b0) at ../../Source/WebCore/platform/ThreadTimers.cpp:115
#34 0x00007ffff5626761 in WebCore::ThreadTimers::sharedTimerFired () at ../../Source/WebCore/platform/ThreadTimers.cpp:93
#35 0x00007ffff5da7f5e in WebCore::timeout_cb () at ../../Source/WebCore/platform/gtk/SharedTimerGtk.cpp:49
#36 0x00007ffff0c2b4eb in g_timeout_dispatch (source=0x957320, callback=&lt;value optimized out&gt;, user_data=&lt;value optimized out&gt;) at /build/buildd/glib2.0-2.28.6/./glib/gmain.c:3882
#37 0x00007ffff0c29bcd in g_main_dispatch (context=0xffff000000000002) at /build/buildd/glib2.0-2.28.6/./glib/gmain.c:2440
#38 g_main_context_dispatch (context=0xffff000000000002) at /build/buildd/glib2.0-2.28.6/./glib/gmain.c:3013
#39 0x00007ffff0c2a3a8 in g_main_context_iterate (context=0x4364f0, block=&lt;value optimized out&gt;, dispatch=1, self=&lt;value optimized out&gt;) at /build/buildd/glib2.0-2.28.6/./glib/gmain.c:3091
#40 0x00007ffff0c2a9f2 in g_main_loop_run (loop=0x7fff8c051220) at /build/buildd/glib2.0-2.28.6/./glib/gmain.c:3299
#41 0x00007ffff55f0c99 in WebCore::WebCoreSynchronousLoader::run (this=0x7fffffffbae0) at ../../Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:125
#42 0x00007ffff55f3c5d in WebCore::ResourceHandle::loadResourceSynchronously (context=0xb21990, request=..., error=..., response=..., data=...)
    at ../../Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:752
#43 0x00007ffff54334f2 in WebCore::FrameLoader::loadResourceSynchronously (this=0x736028, request=..., storedCredentials=WebCore::AllowStoredCredentials, error=..., response=..., data=...)
    at ../../Source/WebCore/loader/FrameLoader.cpp:2642
#44 0x00007ffff5423f3d in WebCore::DocumentThreadableLoader::loadRequest (this=0x7fff8c03fd90, request=..., securityCheck=WebCore::DoSecurityCheck)
---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit---
    at ../../Source/WebCore/loader/DocumentThreadableLoader.cpp:364
#45 0x00007ffff5422259 in WebCore::DocumentThreadableLoader::DocumentThreadableLoader (this=0x7fff8c03fd90, document=0x7fff8c0b8300, client=0x7fff8c04fe48, 
    blockingBehavior=WebCore::DocumentThreadableLoader::LoadSynchronously, request=..., options=...) at ../../Source/WebCore/loader/DocumentThreadableLoader.cpp:87
#46 0x00007ffff5421e2a in WebCore::DocumentThreadableLoader::loadResourceSynchronously (document=0x7fff8c0b8300, request=..., client=..., options=...)
    at ../../Source/WebCore/loader/DocumentThreadableLoader.cpp:59
#47 0x00007ffff547bf11 in WebCore::ThreadableLoader::loadResourceSynchronously (context=0x7fff8c0b8498, request=..., client=..., options=...) at ../../Source/WebCore/loader/ThreadableLoader.cpp:69
#48 0x00007ffff59be6da in WebCore::XMLHttpRequest::createRequest (this=0x7fff8c04fe20, ec=@0x7fffffffc6fc) at ../../Source/WebCore/xml/XMLHttpRequest.cpp:669
#49 0x00007ffff59bdb35 in WebCore::XMLHttpRequest::send (this=0x7fff8c04fe20, body=..., ec=@0x7fffffffc6fc) at ../../Source/WebCore/xml/XMLHttpRequest.cpp:538
#50 0x00007ffff59bd56b in WebCore::XMLHttpRequest::send (this=0x7fff8c04fe20, ec=@0x7fffffffc6fc) at ../../Source/WebCore/xml/XMLHttpRequest.cpp:478
#51 0x00007ffff4f37406 in WebCore::JSXMLHttpRequest::send (this=0x7ffff7e1e1a0, exec=0x7fff9a146160) at ../../Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp:121
#52 0x00007ffff5c26b1f in WebCore::jsXMLHttpRequestPrototypeFunctionSend (exec=0x7fff9a146160) at DerivedSources/WebCore/JSXMLHttpRequest.cpp:518
#53 0x00007fffa7f201f8 in ?? ()
#54 0x00007fffffffc810 in ?? ()
#55 0x00007fffe7f1fe54 in ?? ()
#56 0x00007fffffffc790 in ?? ()
#57 0x00007ffff7e1e1a0 in ?? ()
#58 0x00007fff8c081e40 in ?? ()
#59 0x00007ffff7e2fae0 in ?? ()
#60 0x0000000000000000 in ?? ()
(gdb)

6). Once soup gets response from network, it returns and find that documentLoader is 0 and crashes!.


Program received signal SIGSEGV, Segmentation fault.
0x00007ffff524e2a0 in WTF::OwnPtr&lt;WebCore::ApplicationCacheHost&gt;::get (
    this=0x8f0) at ../../Source/JavaScriptCore/wtf/OwnPtr.h:56
56            PtrType get() const { return m_ptr; }
(gdb) bt
#0  0x00007ffff524e2a0 in WTF::OwnPtr&lt;WebCore::ApplicationCacheHost&gt;::get (
    this=0x8f0) at ../../Source/JavaScriptCore/wtf/OwnPtr.h:56
#1  0x00007ffff524e116 in WebCore::DocumentLoader::applicationCacheHost (this=
    0x0) at ../../Source/WebCore/loader/DocumentLoader.h:254
#2  0x00007ffff5433509 in WebCore::FrameLoader::loadResourceSynchronously (
    this=0xbea588, request=..., 
    storedCredentials=WebCore::AllowStoredCredentials, error=..., 
    response=..., data=...) at ../../Source/WebCore/loader/FrameLoader.cpp:2644
#3  0x00007ffff5423f3d in WebCore::DocumentThreadableLoader::loadRequest (
    this=0xe40c10, request=..., securityCheck=WebCore::DoSecurityCheck)
    at ../../Source/WebCore/loader/DocumentThreadableLoader.cpp:364
#4  0x00007ffff5422259 in WebCore::DocumentThreadableLoader::DocumentThreadableLoader (this=0xe40c10, document=0xcb6660, client=0xe40508, 
    blockingBehavior=WebCore::DocumentThreadableLoader::LoadSynchronously, 
    request=..., options=...)
...

This seems to be a complex use case to simulate via a layout test, as there are many iframes, XHR requests and dynamic update of DOM involved in this scenario. It also depends on network response time, as if soup gets response quickly, it might not allow shared webcore time to timeout. I tried simulating this behavior with a layout test with no luck. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472239</commentid>
    <comment_count>14</comment_count>
      <attachid>108476</attachid>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-23 08:01:38 -0700</bug_when>
    <thetext>Created attachment 108476
JuscoCrashFix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472276</commentid>
    <comment_count>15</comment_count>
      <attachid>108476</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-23 09:26:50 -0700</bug_when>
    <thetext>Comment on attachment 108476
JuscoCrashFix

&gt; 5). While soup waits for response from network, webcore shared timer gets triggered and it processes the above JavaScript

This is the bug in Soup back-end that needs to be fixed. Timers should not fire during synchronous XMLHttpRequest. On other platforms, this is achieved by running a nested event loop in a mode that doesn&apos;t handle any events except for this particular load&apos;s network callbacks. E.g. in ResourceHandleCFNet.cpp:

    CFURLConnectionScheduleWithRunLoop(handle-&gt;connection(), CFRunLoopGetCurrent(), synchronousLoadRunLoopMode());
...

    while (!client-&gt;isDone())
        CFRunLoopRunInMode(synchronousLoadRunLoopMode(), UINT_MAX, true);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472278</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-23 09:32:22 -0700</bug_when>
    <thetext>To clarify, I&apos;m not saying that this is necessarily a bug in Soup. WebCoreSynchronousLoader::run() in ResourceHandleSoup.cpp is wrong to just run main event loop, but I don&apos;t now if Soup provides the ability to do loading in a custom run loop mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472331</commentid>
    <comment_count>17</comment_count>
    <who name="Nayan Kumar K">nayankk</who>
    <bug_when>2011-09-23 10:52:47 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; To clarify, I&apos;m not saying that this is necessarily a bug in Soup. WebCoreSynchronousLoader::run() in ResourceHandleSoup.cpp is wrong to just run main event loop, but I don&apos;t now if Soup provides the ability to do loading in a custom run loop mode.

Currently WebSynchronousLoader seems to be simulating synchronous loading behavior via SoupSessionAsync. May be we need to do use SoupSessionSync for XMLHttpRequests? Martin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476615</commentid>
    <comment_count>18</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-01 19:11:23 -0700</bug_when>
    <thetext>Looks like this issue is also causing fast/files/apply-blob-url-to-xhr.html to crash in the DRT. See https://bugs.webkit.org/show_bug.cgi?id=54234</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476617</commentid>
    <comment_count>19</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-01 19:11:50 -0700</bug_when>
    <thetext>*** Bug 54234 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476837</commentid>
    <comment_count>20</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-03 01:15:52 -0700</bug_when>
    <thetext>I think that the right thing to do here is to push a new GMainContext as the thread default during synchronous loads. This problem was interesting and has been at the back of my mind lately, so I wrote a test and patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476838</commentid>
    <comment_count>21</comment_count>
      <attachid>109450</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-03 01:17:51 -0700</bug_when>
    <thetext>Created attachment 109450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476840</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-03 01:19:23 -0700</bug_when>
    <thetext>Attachment 109450 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;La...&quot; exit_code: 1

Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:880:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476842</commentid>
    <comment_count>23</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-03 01:25:26 -0700</bug_when>
    <thetext>(In reply to comment #22)

Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:880:  Use 0 instead of NULL.  [readability/null] [5]
&gt; Total errors found: 1 in 8 files

This is a false positive, because g_object_set requires the use of NULL in place of 0 for sentinels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476843</commentid>
    <comment_count>24</comment_count>
      <attachid>109450</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-10-03 02:00:11 -0700</bug_when>
    <thetext>Comment on attachment 109450
Patch

Attachment 109450 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9930303</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499077</commentid>
    <comment_count>25</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-11-09 09:40:47 -0800</bug_when>
    <thetext>I think an informal review by Dan would be useful here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499148</commentid>
    <comment_count>26</comment_count>
      <attachid>109450</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-09 11:02:20 -0800</bug_when>
    <thetext>Comment on attachment 109450
Patch

Clearing review flag, because this patch will be a lot simpler once some fixes in libsoup master make it to release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518012</commentid>
    <comment_count>27</comment_count>
      <attachid>118510</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-12-08 18:28:36 -0800</bug_when>
    <thetext>Created attachment 118510
Patch that doesn&apos;t work

Dan, I&apos;ve uploaded a patch that doesn&apos;t seem to be working. It uses the new &apos;use-thread-context&apos; property in Soup, but the request never completes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567293</commentid>
    <comment_count>28</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-02-28 18:03:16 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; Created an attachment (id=118510) [details]
&gt; Patch that doesn&apos;t work
&gt; 
&gt; Dan, I&apos;ve uploaded a patch that doesn&apos;t seem to be working. It uses the new &apos;use-thread-context&apos; property in Soup, but the request never completes.

So this got tracked down to a bug in libsoup that is fixed as of 2.37.5.

Bumping the libsoup requirement up would also let us land bug 42432 (Web Timing). (Current release is 2.37.90, though we&apos;d probably want to wait for 2.37.91 next week to fix a few bugs in 2.37.90.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569832</commentid>
    <comment_count>29</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-03-02 12:11:47 -0800</bug_when>
    <thetext>OK, a problem with the patch: readCallback() calls client-&gt;didFinish() and then asynchronously closes the connection. But the sync loader stops running its main loop after didFinish() is called, and so the async close never gets to finish.

Moving the didFinish() into closeCallback() would be the obvious fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570106</commentid>
    <comment_count>30</comment_count>
      <attachid>129994</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-02 20:30:26 -0800</bug_when>
    <thetext>Created attachment 129994
New patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570144</commentid>
    <comment_count>31</comment_count>
      <attachid>129994</attachid>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-03-03 04:38:49 -0800</bug_when>
    <thetext>Comment on attachment 129994
New patch

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

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:99
&gt;      m_mainLoop = adoptGRef(g_main_loop_new(0, false));

mismerge while rebasing; that line should have gone away
(and presumably the newly-added m_mainLoop assignment should get the adoptGRef?)

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:134
&gt; +    // We quit the main loop asynchronously here, because didFinishLoading is called before
&gt; +    // the closeCallback. If we quit the main loop before closeCallback, it will never be
&gt; +    // called because the synchronous thread context is no longer active.

This assumes that the close will finish before the next iteration of the main loop. Which is currently true for SoupHTTPInputStream, but I don&apos;t think we want to guarantee that forever. (And if we could, then we wouldn&apos;t really need to use close_async() anyway, we could just do a sync close().)

Maybe call didFinishLoading from readCallback for async loads, and from closeCallback for sync loads?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570153</commentid>
    <comment_count>32</comment_count>
      <attachid>130004</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-03 09:04:02 -0800</bug_when>
    <thetext>Created attachment 130004
Updated patch addressin Dan&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570154</commentid>
    <comment_count>33</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-03 09:08:01 -0800</bug_when>
    <thetext>(In reply to comment #31)

Thanks for the review! I&apos;ve uploaded a new patch that I hope addresses your comments fully.

&gt; (From update of attachment 129994 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129994&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:99
&gt; &gt;      m_mainLoop = adoptGRef(g_main_loop_new(0, false));
&gt; 
&gt; mismerge while rebasing; that line should have gone away
&gt; (and presumably the newly-added m_mainLoop assignment should get the adoptGRef?)

Nice catch.

&gt; Maybe call didFinishLoading from readCallback for async loads, and from closeCallback for sync loads?

I&apos;ve done precisely this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570160</commentid>
    <comment_count>34</comment_count>
      <attachid>130004</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-03 11:00:08 -0800</bug_when>
    <thetext>Comment on attachment 130004
Updated patch addressin Dan&apos;s comments

Attachment 130004 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11796419

New failing tests:
editing/selection/select-line-break-with-opposite-directionality.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570164</commentid>
    <comment_count>35</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-03 12:06:40 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 130004 [details])
&gt; Attachment 130004 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/11796419
&gt; 
&gt; New failing tests:
&gt; editing/selection/select-line-break-with-opposite-directionality.html

This failure seems unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570616</commentid>
    <comment_count>36</comment_count>
      <attachid>130004</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-03-05 06:16:21 -0800</bug_when>
    <thetext>Comment on attachment 130004
Updated patch addressin Dan&apos;s comments

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

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:87
&gt; +        // We don&apos;t want any timers to fire while we are doing our synchronous load
&gt; +        // so we replace the thread default main context. The main loop iterations
&gt; +        // will only process GSources associated with this inner context.
&gt; +        GRefPtr&lt;GMainContext&gt; innerMainContext = adoptGRef(g_main_context_new());
&gt; +        g_main_context_push_thread_default(innerMainContext.get());
&gt; +        m_mainLoop = g_main_loop_new(innerMainContext.get(), false);

I think should call push_thread_default right before running the loop, instead of before creating it.

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:92
&gt; +        g_main_context_pop_thread_default(g_main_context_get_thread_default());

You should pass the context you pushed to make sure you are removing the context you want.

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:112
&gt; +        g_main_loop_quit(m_mainLoop.get());

You could check loop is actually running with g_main_loop_is_running(), just in case this method is called twice or before run().

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:124
&gt; +        if (!m_finished)

You could use g_main_loop_is_running() so that you don&apos;t even need m_finished in the class.

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:125
&gt; +            g_main_loop_run(m_mainLoop.get());

I would push and pop the context here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570623</commentid>
    <comment_count>37</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-03-05 06:23:43 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; I think should call push_thread_default right before running the loop, instead of before creating it.

That won&apos;t work; it has to have been pushed before loadResourceSynchronously() creates the ResourceHandle, so that it&apos;s the thread-default context at the time when the SoupMessage is queued.

But yeah, the way the inner context gets handled here is a little bit magical and fragile... another possibility would be to have loadResourceSynchronously() create and push the context itself, and then pass it to the WebCoreSynchronousLoader, (and pop it after calling .run()), so that then it&apos;s more explicit exactly when the new context is in effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570727</commentid>
    <comment_count>38</comment_count>
      <attachid>130004</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-05 08:35:05 -0800</bug_when>
    <thetext>Comment on attachment 130004
Updated patch addressin Dan&apos;s comments

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

&gt;&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:87
&gt;&gt; +        m_mainLoop = g_main_loop_new(innerMainContext.get(), false);
&gt; 
&gt; I think should call push_thread_default right before running the loop, instead of before creating it.

I believe it&apos;s important to push the context before soup is invoked, so we need to push it here.

&gt;&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:92
&gt;&gt; +        g_main_context_pop_thread_default(g_main_context_get_thread_default());
&gt; 
&gt; You should pass the context you pushed to make sure you are removing the context you want.

Synchronous loaders are never nested. I&apos;m not sure such an assertion brings much value here.

&gt;&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:112
&gt;&gt; +        g_main_loop_quit(m_mainLoop.get());
&gt; 
&gt; You could check loop is actually running with g_main_loop_is_running(), just in case this method is called twice or before run().

Okay. I can add this check here. My patch originally didn&apos;t touch this code at all, so it didn&apos;t make sense to fix other potential bugs. This is a reasonable check though.

&gt;&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:124
&gt;&gt; +        if (!m_finished)
&gt; 
&gt; You could use g_main_loop_is_running() so that you don&apos;t even need m_finished in the class.

I&apos;m not sure how that could prevent using m_finished. The check here prevents the main loop from starting if the networking has finished before ::run is called.

&gt;&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:125
&gt;&gt; +            g_main_loop_run(m_mainLoop.get());
&gt; 
&gt; I would push and pop the context here.

As I said above, that probably won&apos;t work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570729</commentid>
    <comment_count>39</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-05 08:36:45 -0800</bug_when>
    <thetext>(In reply to comment #37)

&gt; But yeah, the way the inner context gets handled here is a little bit magical and fragile... another possibility would be to have loadResourceSynchronously() create and push the context itself, and then pass it to the WebCoreSynchronousLoader, (and pop it after calling .run()), so that then it&apos;s more explicit exactly when the new context is in effect.

I agree that it&apos;s a bit fragile. We do have a guarantee that it happens before the load start, because the client must be instatiated before a load operation begins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570818</commentid>
    <comment_count>40</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-05 10:15:47 -0800</bug_when>
    <thetext>Committed r109760: &lt;http://trac.webkit.org/changeset/109760&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571474</commentid>
    <comment_count>41</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-05 22:18:26 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571475</commentid>
    <comment_count>42</comment_count>
      <attachid>130289</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-05 22:18:29 -0800</bug_when>
    <thetext>Created attachment 130289
Patch fixing segfault</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571486</commentid>
    <comment_count>43</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-05 22:25:11 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; Created an attachment (id=130289) [details]
&gt; Patch fixing segfault

It seems that calling didFinishLoad can make the client invalid, without setting it to null. So here I just set the client to null manually after call didFinishLoad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571543</commentid>
    <comment_count>44</comment_count>
      <attachid>130289</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-05 23:36:20 -0800</bug_when>
    <thetext>Comment on attachment 130289
Patch fixing segfault

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

Thanks! Just a little nit:

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:683
&gt; +            handle-&gt;setClient(0); // Unset the client so that we do not try to access th
&gt; +                                  // client in the closeCallback.

Maybe the comment can fit in the line above the setClient call? Just a suggestion to avoid repeating &quot;the client&quot;:

// Unset the client so that we do not try to access it in the closeCallback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571834</commentid>
    <comment_count>45</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-06 07:18:46 -0800</bug_when>
    <thetext>It seems a bug in libsoup causes many followup tests to time out so this must wait until libsoup 2.37.92.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571835</commentid>
    <comment_count>46</comment_count>
      <attachid>130289</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-06 07:19:01 -0800</bug_when>
    <thetext>Comment on attachment 130289
Patch fixing segfault

Clearing review flag for the moment. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592218</commentid>
    <comment_count>47</comment_count>
      <attachid>130289</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-30 09:26:30 -0700</bug_when>
    <thetext>Comment on attachment 130289
Patch fixing segfault

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

&gt; Source/WebCore/platform/network/ResourceHandleClient.h:113
&gt; +        virtual bool isSynchronousClient() { return false; }

Why does this need to be on ResourceHandleClient? Every ResourceHandle already knows whether it&apos;s synchronous or not, because different methods are called in these cases. It doesn&apos;t need to ask the client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592926</commentid>
    <comment_count>48</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-31 13:10:54 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; (From update of attachment 130289 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130289&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/ResourceHandleClient.h:113
&gt; &gt; +        virtual bool isSynchronousClient() { return false; }
&gt; 
&gt; Why does this need to be on ResourceHandleClient? Every ResourceHandle already knows whether it&apos;s synchronous or not, because different methods are called in these cases. It doesn&apos;t need to ask the client.

Is that the case? For libsoup at least, the path seems to be:

1. static ResourceHandle::loadResourceSynchronously
2. static ResourceHandle::create (factory method)
3. ResourceHandle::start

Does this differ greatly from the asynchronous path? I could very well be missing it here.

 I&apos;d be happy to add whether or not the handle is synchronous as an argument to ResourceHandle::create and keep the logic out of ResourceHandleClient. Another option would be to rename ResourceHandleClient::isSynchronousClient() to ResourceHandleClient::shouldFinishLoadAfterConnectionClose(), which better matches the constraints of this particular client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592929</commentid>
    <comment_count>49</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-31 13:29:00 -0700</bug_when>
    <thetext>So far, it&apos;s the same code path on Mac, yes. I think that the difference is that on Mac, synchronous loader client just implements stopping run loop internally, not via exposing a flag to caller:

void WebCoreSynchronousLoaderClient::didFinishLoading(ResourceHandle*, double)
{
    m_isDone = true;
}

Another approach I can suggest is to just set a member variable after calling ResourceHandle::create:

    RefPtr&lt;ResourceHandle&gt; handle = adoptRef(new ResourceHandle(...));
    handle-&gt;m_isLoadingSynchronously = true;


Making client interface fatter creates a long term liability - everyone doing any ResourceHandle refactoring will need to spend time understanding what it is about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597428</commentid>
    <comment_count>50</comment_count>
      <attachid>136038</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-06 10:00:16 -0700</bug_when>
    <thetext>Created attachment 136038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597434</commentid>
    <comment_count>51</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-06 10:07:51 -0700</bug_when>
    <thetext>(In reply to comment #49)
&gt; Another approach I can suggest is to just set a member variable after calling ResourceHandle::create:
&gt; 
&gt;     RefPtr&lt;ResourceHandle&gt; handle = adoptRef(new ResourceHandle(...));
&gt;     handle-&gt;m_isLoadingSynchronously = true;

There can be only one synchronous XMLHttpRequest at a time in WebCore, so I chose to use a global variable specific to the soup implementation. This avoids adding any new code to platform independent files and the code is located more closely to the areas that need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597468</commentid>
    <comment_count>52</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-04-06 10:38:18 -0700</bug_when>
    <thetext>Thank you, makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598517</commentid>
    <comment_count>53</comment_count>
      <attachid>136038</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 12:29:00 -0700</bug_when>
    <thetext>Comment on attachment 136038
Patch

Clearing flags on attachment: 136038

Committed r113604: &lt;http://trac.webkit.org/changeset/113604&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598518</commentid>
    <comment_count>54</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 12:29:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606453</commentid>
    <comment_count>55</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-04-20 02:10:23 -0700</bug_when>
    <thetext>This patch (or the associated libsoup changes) are causing a lot of hangs (the main loop iterates forever) when issuing synchronous requests. For example try to load this URL: http://www.datamation.com/applications/how-libreoffice-writer-tops-ms-word-12-features-1.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107633</attachid>
            <date>2011-09-16 04:29:21 -0700</date>
            <delta_ts>2011-09-16 11:45:41 -0700</delta_ts>
            <desc>Patch to fix crash</desc>
            <filename>FixForJuscoCrash.diff</filename>
            <type>text/plain</type>
            <size>2179</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNjA0YTc0Li5jNDRiZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDktMTYgIE5heWFuIEt1bWFyIEsgIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4KKwor
ICAgICAgICBDcmFzaCB3aGlsZSBsb2FkaW5nIGh0dHA6Ly93d3cuanVzY28uY24KKworICAgICAg
ICBEb2N1bWVudExvYWRlciBtaWdodCBnZXQgZGVzdHJ1Y3RlZCBhZnRlciB0aGUgY2FsbGluZyBS
ZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseQorICAgICAgICBpbiBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseS4gSGVuY2UgYW55IGNhbGwgdG8gZG9j
dW1lbnRMb2FkZXIoKSBzaG91bGQgZG8gYSAKKyAgICAgICAgTlVMTCBjaGVjay4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MjM4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09Q
UyEpCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorCiAyMDExLTA5LTE1
ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiByZW5hbWUgQ29uc29sZS5jbGVhckNvbnNvbGVNZXNzYWdlcyB0byBDb25zb2xlLmNs
ZWFyTWVzc2FnZXMsIGJydXNoIHVwIGNvbnNvbGUgZG9tYWluIGRvYy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDcyNGM2NzYuLmUyZmYwYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjY0MSwxMiArMjY0MSwxNCBAQCB1bnNpZ25lZCBs
b25nIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdQogI2VuZGlmCiAgICAgICAgICAgICBSZXNvdXJjZUhhbmRsZTo6bG9hZFJl
c291cmNlU3luY2hyb25vdXNseShuZXR3b3JraW5nQ29udGV4dCgpLCBuZXdSZXF1ZXN0LCBzdG9y
ZWRDcmVkZW50aWFscywgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICNpZiBFTkFCTEUoT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05TKQotICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGlj
YXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KG5ld1JlcXVl
c3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CisgICAgICAgICAgICBpZiAoZG9jdW1lbnRMb2Fk
ZXIoKSkKKyAgICAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hl
SG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3Is
IHJlc3BvbnNlLCBkYXRhKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQogICAgIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCA9IHJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8oKSA/IHN0YXRpY19jYXN0
PGludD4ocmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpLT5lbmNvZGVkRGF0YUxlbmd0aCkgOiAt
MTsKLSAgICBub3RpZmllcigpLT5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3Vt
ZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXNwb25zZSwgZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZXJyb3IpOworICAgIGlmIChkb2N1bWVudExvYWRl
cigpKQorICAgICAgICBub3RpZmllcigpLT5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyht
X2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXNwb25zZSwgZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZXJyb3IpOwogICAgIHJldHVybiBpZGVu
dGlmaWVyOwogfQogCg==
</data>
<flag name="review"
          id="104366"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107694</attachid>
            <date>2011-09-16 11:45:41 -0700</date>
            <delta_ts>2011-09-16 12:23:01 -0700</delta_ts>
            <desc>CrashFix</desc>
            <filename>CrashFix.diff</filename>
            <type>text/plain</type>
            <size>2268</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMDk0ZmZhLi4wYmYxNWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMDktMTYgIE5heWFuIEt1bWFyIEsgIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4KKwor
ICAgICAgICBDcmFzaCB3aGlsZSBsb2FkaW5nIGh0dHA6Ly93d3cuanVzY28uY24KKworICAgICAg
ICBEb2N1bWVudExvYWRlciBtaWdodCBnZXQgZGVzdHJ1Y3RlZCBhZnRlciB0aGUgY2FsbGluZyBS
ZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseQorICAgICAgICBpbiBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseS4gSGVuY2UgYW55IGNhbGwgdG8gZG9j
dW1lbnRMb2FkZXIoKSBzaG91bGQgZG8gYQorICAgICAgICBOVUxMIGNoZWNrLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgyMzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyB0ZXN0cyBhZGRlZCwgc2lu
Y2UgdGhpcyBpcyBhIHJhbmRvbSBjcmFzaCBoYXBwZW5pbmcgb25seSB3aXRoIGh0dHA6Ly93d3cu
anVzY28uY24sIHVwb24gCisgICAgICAgIGxvYWRpbmcsIG5hdmlnYXRpbmcgYmFjayBhbmQgY2xv
c2luZyBpbiBHdGtMYXVuY2hlci4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSk6CisKIDIwMTEtMDktMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBDb2RlR2VuZXJhdG9yR09iamVjdCBzaG91bGQgdXNlIEMrKyBzdHlsZSBjb21tZW50cyBm
b3IgRU5BQkxFIGd1YXJkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
NzI0YzY3Ni4uZTJmZjBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBA
IC0yNjQxLDEyICsyNjQxLDE0IEBAIHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1CiAjZW5kaWYKICAg
ICAgICAgICAgIFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KG5ldHdv
cmtpbmdDb250ZXh0KCksIG5ld1JlcXVlc3QsIHN0b3JlZENyZWRlbnRpYWxzLCBlcnJvciwgcmVz
cG9uc2UsIGRhdGEpOwogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi0gICAg
ICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxv
YWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRh
KTsKKyAgICAgICAgICAgIGlmIChkb2N1bWVudExvYWRlcigpKQorICAgICAgICAgICAgICAgIGRv
Y3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAg
ICB9CiAjZW5kaWYKICAgICB9CiAgICAgaW50IGVuY29kZWREYXRhTGVuZ3RoID0gcmVzcG9uc2Uu
cmVzb3VyY2VMb2FkSW5mbygpID8gc3RhdGljX2Nhc3Q8aW50PihyZXNwb25zZS5yZXNvdXJjZUxv
YWRJbmZvKCktPmVuY29kZWREYXRhTGVuZ3RoKSA6IC0xOwotICAgIG5vdGlmaWVyKCktPnNlbmRS
ZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZp
ZXIsIHJlc3BvbnNlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3Ro
LCBlcnJvcik7CisgICAgaWYgKGRvY3VtZW50TG9hZGVyKCkpCisgICAgICAgIG5vdGlmaWVyKCkt
PnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlk
ZW50aWZpZXIsIHJlc3BvbnNlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIGVuY29kZWREYXRh
TGVuZ3RoLCBlcnJvcik7CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107701</attachid>
            <date>2011-09-16 12:23:01 -0700</date>
            <delta_ts>2011-09-23 08:01:38 -0700</delta_ts>
            <desc>CrashFix</desc>
            <filename>CrashFix.diff</filename>
            <type>text/plain</type>
            <size>2411</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMDk0ZmZhLi4wYmYxNWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMDktMTYgIE5heWFuIEt1bWFyIEsgIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4KKwor
ICAgICAgICBDcmFzaCB3aGlsZSBsb2FkaW5nIGh0dHA6Ly93d3cuanVzY28uY24KKworICAgICAg
ICBEb2N1bWVudExvYWRlciBtaWdodCBnZXQgZGVzdHJ1Y3RlZCBhZnRlciB0aGUgY2FsbGluZyBS
ZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseQorICAgICAgICBpbiBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseS4gSGVuY2UgYW55IGNhbGwgdG8gZG9j
dW1lbnRMb2FkZXIoKSBzaG91bGQgZG8gYQorICAgICAgICBOVUxMIGNoZWNrLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgyMzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyB0ZXN0cyBhZGRlZCwgc2lu
Y2UgdGhpcyBpcyBhIHJhbmRvbSBjcmFzaCBoYXBwZW5pbmcgb25seSB3aXRoIGh0dHA6Ly93d3cu
anVzY28uY24sIHVwb24gCisgICAgICAgIGxvYWRpbmcsIG5hdmlnYXRpbmcgYmFjayBhbmQgY2xv
c2luZyBpbiBHdGtMYXVuY2hlci4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSk6CisKIDIwMTEtMDktMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBDb2RlR2VuZXJhdG9yR09iamVjdCBzaG91bGQgdXNlIEMrKyBzdHlsZSBjb21tZW50cyBm
b3IgRU5BQkxFIGd1YXJkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
NzI0YzY3Ni4uYzJiNWJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBA
IC0yNjQxLDEyICsyNjQxLDE1IEBAIHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1CiAjZW5kaWYKICAg
ICAgICAgICAgIFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KG5ldHdv
cmtpbmdDb250ZXh0KCksIG5ld1JlcXVlc3QsIHN0b3JlZENyZWRlbnRpYWxzLCBlcnJvciwgcmVz
cG9uc2UsIGRhdGEpOwogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi0gICAg
ICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxv
YWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRh
KTsKKyAgICAgICAgICAgIGlmIChkb2N1bWVudExvYWRlcigpKQorICAgICAgICAgICAgICAgIGRv
Y3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAg
ICB9CiAjZW5kaWYKICAgICB9Ci0gICAgaW50IGVuY29kZWREYXRhTGVuZ3RoID0gcmVzcG9uc2Uu
cmVzb3VyY2VMb2FkSW5mbygpID8gc3RhdGljX2Nhc3Q8aW50PihyZXNwb25zZS5yZXNvdXJjZUxv
YWRJbmZvKCktPmVuY29kZWREYXRhTGVuZ3RoKSA6IC0xOwotICAgIG5vdGlmaWVyKCktPnNlbmRS
ZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZp
ZXIsIHJlc3BvbnNlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3Ro
LCBlcnJvcik7CisgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpIHsKKyAgICAgICAgaW50IGVuY29k
ZWREYXRhTGVuZ3RoID0gcmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpID8gc3RhdGljX2Nhc3Q8
aW50PihyZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCktPmVuY29kZWREYXRhTGVuZ3RoKSA6IC0x
OworICAgICAgICBub3RpZmllcigpLT5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2Rv
Y3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXNwb25zZSwgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZXJyb3IpOworICAgIH0KICAgICByZXR1cm4g
aWRlbnRpZmllcjsKIH0KIAo=
</data>
<flag name="review"
          id="104467"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108476</attachid>
            <date>2011-09-23 08:01:38 -0700</date>
            <delta_ts>2011-10-03 01:17:48 -0700</delta_ts>
            <desc>JuscoCrashFix</desc>
            <filename>JuscoCrashFix.patch</filename>
            <type>text/plain</type>
            <size>2387</size>
            <attacher name="Nayan Kumar K">nayankk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NDUzMmIxLi4xYzU1ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMDktMjMgIE5heWFuIEt1bWFyIEsgIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4KKwor
ICAgICAgICBDcmFzaCB3aGlsZSBsb2FkaW5nIGh0dHA6Ly93d3cuanVzY28uY24KKworICAgICAg
ICBEb2N1bWVudExvYWRlciBtaWdodCBnZXQgZGVzdHJ1Y3RlZCBhZnRlciB0aGUgY2FsbGluZyBS
ZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseQorICAgICAgICBpbiBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseS4gSGVuY2UgYW55IGNhbGwgdG8gZG9j
dW1lbnRMb2FkZXIoKSBzaG91bGQgZG8gYQorICAgICAgICBOVUxMIGNoZWNrLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgyMzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyB0ZXN0IGNhc2VzIHdlcmUg
YWRkZWQsIGFzIHRoaXMgY3Jhc2ggaXMgc2VlbiBvbmx5IHdpdGggaHR0cDovL3d3dy5qdXNjby5j
biwgd2hpY2ggaGFzIG1hbnkgCisgICAgICAgIGlmcmFtZXMsIGRvZXMgbWFueSBYSFIgcmVxdWVz
dHMgYW5kIHVwZGF0ZXMgdGhlIERPTSBkeW5hbWljYWxseS4gCisKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkpOgorCiAyMDExLTA5LTIyICBUb255IENoYW5nICA8dG9ueUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgaW1wbGVtZW50IC13ZWJraXQtZmxleC1vcmRlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNWU0YmQyYi4uNDFmODA3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yNjM5LDEyICsyNjM5LDE1IEBAIHVu
c2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1CiAjZW5kaWYKICAgICAgICAgICAgIFJlc291cmNlSGFuZGxl
Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KG5ldHdvcmtpbmdDb250ZXh0KCksIG5ld1JlcXVl
c3QsIHN0b3JlZENyZWRlbnRpYWxzLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogI2lmIEVOQUJM
RShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi0gICAgICAgICAgICBkb2N1bWVudExvYWRlcigp
LT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHko
bmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKKyAgICAgICAgICAgIGlmIChkb2N1
bWVudExvYWRlcigpKQorICAgICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0
aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0
LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAgICB9CiAjZW5kaWYKICAgICB9Ci0gICAg
aW50IGVuY29kZWREYXRhTGVuZ3RoID0gcmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpID8gc3Rh
dGljX2Nhc3Q8aW50PihyZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCktPmVuY29kZWREYXRhTGVu
Z3RoKSA6IC0xOwotICAgIG5vdGlmaWVyKCktPnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlc3BvbnNlLCBkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoLCBlcnJvcik7CisgICAgaWYgKG1fZG9j
dW1lbnRMb2FkZXIpIHsKKyAgICAgICAgaW50IGVuY29kZWREYXRhTGVuZ3RoID0gcmVzcG9uc2Uu
cmVzb3VyY2VMb2FkSW5mbygpID8gc3RhdGljX2Nhc3Q8aW50PihyZXNwb25zZS5yZXNvdXJjZUxv
YWRJbmZvKCktPmVuY29kZWREYXRhTGVuZ3RoKSA6IC0xOworICAgICAgICBub3RpZmllcigpLT5z
ZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVu
dGlmaWVyLCByZXNwb25zZSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxl
bmd0aCwgZXJyb3IpOworICAgIH0KICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109450</attachid>
            <date>2011-10-03 01:17:51 -0700</date>
            <delta_ts>2011-12-08 18:28:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68238-20111003011750.patch</filename>
            <type>text/plain</type>
            <size>10646</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYzNzgKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCAzMmMzMTZmYzI5NmIyM2RjMWRjYmJjNmZlYTAxZTczYmI5MGZhNGVhLi5mNmRh
YTMwNzMyMjE0NWQ3YWIzN2RiMzFmNjRmYTRjZTg3YTFhY2U3IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTAtMDMgIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtzb3VwXSBDcmFzaCB3
aGlsZSBsb2FkaW5nIGh0dHA6Ly93d3cuanVzY28uY24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjb25maWd1cmUuYWM6IEJ1bXAgdGhlIGxpYnNvdXAg
ZGVwZW5kZW5jeSB0byAxLjM2LjAgYXMgdGhhdCB2ZXJzaW9uCisgICAgICAgIGZpeGVzIGEgYnVn
IHdoaWNoIG1ha2VzIGNyZWF0aW5nIFNvdXBTZXNzaW9ucyB3aXRoIG5vbi1kZWZhdWx0IEdNYWlu
Q29udGV4dHMuCisKIDIwMTEtMDktMjMgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0
Ym9Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IGJ1aWxkIGFnYWluc3QgUXQ1IGFmdGVy
IHJlZmFjdG9yIG9mIHdpZGdldHMgb3V0IG9mIFF0R1VpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmFiYWQxYzJjZjI5YjA3
NzNiNzY5M2NhZjJiNzMyZTYzYmVhM2QxNi4uYjBjYzUxNGFkZjc1OWIyY2RkYWYxZjI1ZDcxM2Mx
NWU4Mzg0MjYxNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTEwLTAzICBNYXJ0aW4gUm9i
aW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbc291cF0gQ3Jhc2ggd2hp
bGUgbG9hZGluZyBodHRwOi8vd3d3Lmp1c2NvLmNuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODIzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgdGVzdCB0aGF0IHZlcmlmaWVzIHRoYXQgdGlt
ZXJzIGRvIG5vdCBmaXJlIGR1cmluZyBzeW5jaHJvbm91cworICAgICAgICBYbWxIdHRwUmVxdWVz
dHMuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0
LXN5bmMtbm8tdGltZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy5odG1sOiBBZGRl
ZC4KKwogMjAxMS0xMC0wMSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW1NvdXBdIFJlc291cmNlSGFuZGxlU291cCBkb2VzIG5vdCBoYW5kbGUgZW5j
b2RlZEJsb2JEYXRhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXN5bmMtbm8tdGltZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtc3luYy1uby10
aW1lcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiNzhkYTBhYTk5Yzk0N2U1NmUyOTBiYWZj
YmY3YTcwNWNlYTZhYTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXN5bmMtbm8tdGltZXJzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDQgQEAKK1Rlc3QgZm9yOiBidWcgNjgyMzg6IFtzb3VwXSBDcmFzaCB3aGls
ZSBsb2FkaW5nIGh0dHA6Ly93d3cuanVzY28uY24gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgV2Vi
Q29yZSB0aW1lcnMgZG8gbm90IGZpcmUgZHVyaW5nIHN5bmNocm9ub3VzIFhNTEh0dHBSZXF1ZXN0
cy4KKworUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXN5bmMtbm8tdGltZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXN5bmMtbm8tdGltZXJzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTE2YTRhN2IyMTVkZThiMzM1MjAzODk0OWY5OGZlMGU4M2Y3YWY4Mgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
eG1saHR0cHJlcXVlc3Qtc3luYy1uby10aW1lcnMuaHRtbApAQCAtMCwwICsxLDMyIEBACis8aHRt
bD48Ym9keT4KKworPHA+IFRlc3QgZm9yOiA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjgyMzgiPmJ1ZyA2ODIzODxhPjogW3NvdXBdIENyYXNoIHdoaWxl
IGxvYWRpbmcgaHR0cDovL3d3dy5qdXNjby5jbjwvYT4gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
V2ViQ29yZSB0aW1lcnMgZG8gbm90IGZpcmUgZHVyaW5nIHN5bmNocm9ub3VzIFhNTEh0dHBSZXF1
ZXN0cy4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIlxuIjsK
K30KKwordmFyIHRpbWVyRXZlckZpcmVkID0gZmFsc2U7Cit2YXIgaW50ZXJ2YWxJZCA9IHNldElu
dGVydmFsKGZ1bmN0aW9uKCkgeworICAgIHRpbWVyRXZlckZpcmVkID0gdHJ1ZTsKK30sIDEwKTsK
KwordHJ5IHsKKyAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgcmVxLm9w
ZW4oIkdFVCIsICJyZXNvdXJjZXMvZG93bmxvYWQtd2l0aC1kZWxheS5waHA/aXRlcmF0aW9uPTUm
ZGVsYXk9NTAiLCBmYWxzZSk7CisgICAgcmVxLnNlbmQobnVsbCk7Cit9IGNhdGNoIChleCkgewor
ICAgIGxvZyhleCk7Cit9CisKK2NsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7Citsb2codGltZXJF
dmVyRmlyZWQgPyAiRkFJTCIgOiAiUEFTUyIpOworPC9zY3JpcHQ+CisKKzwvYm9keT48L2h0bWw+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMDBmYTBhODM4YTJhYjE3OTdlZGU3NWM5YjVkNGFjNDMxNDAxMTUxZS4u
MzAxMmIxYWYxMGUxNTRmNDNhYjYyNDFkZWQ1MzEyNmVhYTJiODc2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDExLTEwLTAzICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdh
bGlhLmNvbT4KKworICAgICAgICBbc291cF0gQ3Jhc2ggd2hpbGUgbG9hZGluZyBodHRwOi8vd3d3
Lmp1c2NvLmNuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODIzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtc3luYy1uby10
aW1lcnMuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6
OldlYkNvcmVTeW5jaHJvbm91c0xvYWRlcik6IFB1c2ggYSBuZXcgR01haW5Db250ZXh0CisgICAg
ICAgIGFzIHRoZSB0aHJlYWQgZGVmYXVsdCBiZWZvcmUgZG9pbmcgc3luY2hyb25vdXMgcmVxdWVz
dHMuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCBvbmx5CisgICAgICAgIEdTb3VyY2VzIGFkZGVkIGR1
cmluZyBzeW5jaHJvbm91cyBsb2FkcyB3aWxsIGZpcmUgZHVyaW5nIHN5bmNocm9ub3VzIGxvYWRz
LiBXZSBhbHNvCisgICAgICAgIHB1c2ggYSBuZXcgU291cFNlc3Npb24gb24gdGhlIHNlc3Npb24g
c3RhY2suCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6On5XZWJD
b3JlU3luY2hyb25vdXNMb2FkZXIpOiBQb3Agb3VyIGlubmVyIEdNYWluQ29udGV4dC4KKyAgICAg
ICAgKFdlYkNvcmU6OnNvdXBTZXNzaW9uU3RhY2spOiBBZGRlZCBhIFNvdXBTZXNzaW9uIHN0YWNr
IGJlY2F1c2UgU291cFNlc3Npb25zIGFyZSBhc3NvY2lhdGVkIHdpdGgKKyAgICAgICAgYSBwYXJ0
aWN1bGFyIEdNYWluQ29udGV4dC4gV2UgY2Fubm90IHVzZSB0aGVtIGFjcm9zcyBzaXR1YXRpb25z
IHdoZXJlIHRoZSB0aHJlYWQgZGVmYXVsdAorICAgICAgICBjb250ZXh0IGNoYW5nZXMuCisgICAg
ICAgIChXZWJDb3JlOjpwdXNoTmV3U291cFNlc3Npb24pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OnBvcFNvdXBTZXNzaW9uKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6ZGVmYXVsdFNlc3Npb24pOiBVc2UgdGhlIHNlc3Npb24gc3RhY2sgdG8gc3RvcmUgdGhl
IGRlZmF1bHQgY29udGV4dC4KKwogMjAxMS0xMC0wMSAgTWFydGluIFJvYmluc29uICA8bXJvYmlu
c29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NvdXBdIFJlc291cmNlSGFuZGxlU291cCBkb2Vz
IG5vdCBoYW5kbGUgZW5jb2RlZEJsb2JEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IGEx
YmVkZmZhN2VhYTg3MDNiNGFiODU0NzlkN2I0ZWMxZTBiYzMzNjMuLjEzZjAwZTExYTc4ZTdhOTZh
OTliYTMyYzc0NTIxZmQ4ZGIxNDZhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC03LDYg
KzcsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA5IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFu
QGltZW5kaW8uY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExIElnYWxpYSBT
LkwuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9obiBLamVsbGJlcmcgPGpvaG4ua2plbGxiZXJn
QHBvd2VyLmFsc3RvbS5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtNjgsNiArNjksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICNkZWZpbmUgUkVBRF9CVUZGRVJfU0laRSA4MTkyCiAKK3N0YXRpYyB2b2lkIHB1c2hOZXdTb3Vw
U2Vzc2lvbigpOworc3RhdGljIHZvaWQgcG9wU291cFNlc3Npb24oKTsKKwogY2xhc3MgV2ViQ29y
ZVN5bmNocm9ub3VzTG9hZGVyIDogcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIpOwogcHVibGljOgpA
QCAtOTUsMTEgKzk5LDI4IEBAIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6V2ViQ29yZVN5bmNo
cm9ub3VzTG9hZGVyKFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjCiAgICAgLCBtX2RhdGEo
ZGF0YSkKICAgICAsIG1fZmluaXNoZWQoZmFsc2UpCiB7Ci0gICAgbV9tYWluTG9vcCA9IGdfbWFp
bl9sb29wX25ldygwLCBmYWxzZSk7CisgICAgLy8gV2UgZG9uJ3Qgd2FudCBhbnkgdGltZXJzIHRv
IGZpcmUgd2hpbGUgd2UgYXJlIGRvaW5nIG91ciBzeW5jaHJvbm91cyBsb2FkCisgICAgLy8gc28g
d2UgcmVwbGFjZSB0aGUgdGhyZWFkIGRlZmF1bHQgbWFpbiBjb250ZXh0LiBUaGUgbWFpbiBsb29w
IGl0ZXJhdGlvbnMKKyAgICAvLyB3aWxsIG9ubHkgcHJvY2VzcyBHU291cmNlcyBhc3NvY2lhdGVk
IHdpdGggdGhpcyBpbm5lciBjb250ZXh0LgorICAgIEdNYWluQ29udGV4dCogaW5uZXJNYWluQ29u
dGV4dCA9IGdfbWFpbl9jb250ZXh0X25ldygpOworICAgIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhy
ZWFkX2RlZmF1bHQoaW5uZXJNYWluQ29udGV4dCk7CisgICAgbV9tYWluTG9vcCA9IGdfbWFpbl9s
b29wX25ldyhpbm5lck1haW5Db250ZXh0LCBmYWxzZSk7CisKKyAgICAvLyBTb3VwIHNlc3Npb24g
YXJlIGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgbWFpbiB0aHJlYWQgY29udGV4dCwKKyAg
ICAvLyB3ZSBuZWVkIHRvIHJlcGxhY2VkIHRoZSBkZWZhdWx0IFNvdXAgc2Vzc2lvbiB3aXRoIGEg
ZnJlc2ggb25lLgorICAgIHB1c2hOZXdTb3VwU2Vzc2lvbigpOworCisgICAgZ19tYWluX2NvbnRl
eHRfdW5yZWYoaW5uZXJNYWluQ29udGV4dCk7IC8vIEdMaWIga2VlcHMgYSByZWZlcmVuY2UuCiB9
CiAKIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6fldlYkNvcmVTeW5jaHJvbm91c0xvYWRlcigp
CiB7CisgICAgLy8gVGhlIEdNYWluQ29udGV4dCBvZiB0aGUgbGF0ZXN0IFNvdXAgc2Vzc2lvbiBp
cyBhYm91dCB0byBiZSBkZXN0cm95ZWQgYW5kIG91cgorICAgIC8vIGxvYWQgaXMgZmluaXNoZWQu
IFJlc3RvcmUgdGhlIHByZXZpb3VzIFNvdXAgc2Vzc2lvbiBmb3IgYWxsIHN1YnNlcXVlbnQgbG9h
ZHMuCisgICAgcG9wU291cFNlc3Npb24oKTsKKworICAgIEdNYWluQ29udGV4dCogaW5uZXJNYWlu
Q29udGV4dCA9IGdfbWFpbl9jb250ZXh0X2dldF90aHJlYWRfZGVmYXVsdCgpOworICAgIGdfbWFp
bl9jb250ZXh0X3BvcF90aHJlYWRfZGVmYXVsdChpbm5lck1haW5Db250ZXh0KTsKICAgICBnX21h
aW5fbG9vcF91bnJlZihtX21haW5Mb29wKTsKIH0KIApAQCAtOTEzLDkgKzkzNCwxNCBAQCBzdGF0
aWMgYm9vbCBzdGFydE5vbkhUVFBSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIEtVUkwg
dXJsKQogICAgIHJldHVybiB0cnVlOwogfQogCi1Tb3VwU2Vzc2lvbiogUmVzb3VyY2VIYW5kbGU6
OmRlZmF1bHRTZXNzaW9uKCkKK3N0YXRpYyBWZWN0b3I8R1JlZlB0cjxTb3VwU2Vzc2lvbj4gPiYg
c291cFNlc3Npb25TdGFjaygpCit7CisgICAgc3RhdGljIFZlY3RvcjxHUmVmUHRyPFNvdXBTZXNz
aW9uPiA+IHN0YWNrOworICAgIHJldHVybiBzdGFjazsKK30KKworc3RhdGljIHZvaWQgcHVzaE5l
d1NvdXBTZXNzaW9uKCkKIHsKLSAgICBzdGF0aWMgU291cFNlc3Npb24qIHNlc3Npb24gPSAwOwog
ICAgIC8vIFZhbHVlcyB0YWtlbiBmcm9tIGh0dHA6Ly93d3cuYnJvd3NlcnNjb3BlLm9yZy8gIGZv
bGxvd2luZwogICAgIC8vIHRoZSBydWxlICJEbyBXaGF0IEV2ZXJ5IE90aGVyIE1vZGVybiBCcm93
c2VyIElzIERvaW5nIi4gVGhleSBzZWVtCiAgICAgLy8gdG8gc2lnbmlmaWNhbnRseSBpbXByb3Zl
IHBhZ2UgbG9hZGluZyB0aW1lIGNvbXBhcmVkIHRvIHNvdXAncwpAQCAtOTIzLDE1ICs5NDksMjgg
QEAgU291cFNlc3Npb24qIFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpCiAgICAgc3Rh
dGljIGNvbnN0IGludCBtYXhDb25uZWN0aW9ucyA9IDM1OwogICAgIHN0YXRpYyBjb25zdCBpbnQg
bWF4Q29ubmVjdGlvbnNQZXJIb3N0ID0gNjsKIAotICAgIGlmICghc2Vzc2lvbikgewotICAgICAg
ICBzZXNzaW9uID0gc291cF9zZXNzaW9uX2FzeW5jX25ldygpOwotICAgICAgICBnX29iamVjdF9z
ZXQoc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgIFNPVVBfU0VTU0lPTl9NQVhfQ09OTlMs
IG1heENvbm5lY3Rpb25zLAotICAgICAgICAgICAgICAgICAgICAgU09VUF9TRVNTSU9OX01BWF9D
T05OU19QRVJfSE9TVCwgbWF4Q29ubmVjdGlvbnNQZXJIb3N0LCAKLSAgICAgICAgICAgICAgICAg
ICAgIE5VTEwpOwotICAgIH0KKyAgICBHUmVmUHRyPFNvdXBTZXNzaW9uPiBzZXNzaW9uID0gYWRv
cHRHUmVmKAorICAgICAgICBzb3VwX3Nlc3Npb25fYXN5bmNfbmV3X3dpdGhfb3B0aW9ucyhTT1VQ
X1NFU1NJT05fQVNZTkNfQ09OVEVYVCwgZ19tYWluX2NvbnRleHRfZ2V0X3RocmVhZF9kZWZhdWx0
KCksIE5VTEwpKTsKKyAgICBnX29iamVjdF9zZXQoc2Vzc2lvbi5nZXQoKSwKKyAgICAgICAgICAg
ICAgICAgU09VUF9TRVNTSU9OX01BWF9DT05OUywgbWF4Q29ubmVjdGlvbnMsCisgICAgICAgICAg
ICAgICAgIFNPVVBfU0VTU0lPTl9NQVhfQ09OTlNfUEVSX0hPU1QsIG1heENvbm5lY3Rpb25zUGVy
SG9zdCwgCisgICAgICAgICAgICAgICAgIE5VTEwpOworCisgICAgc291cFNlc3Npb25TdGFjaygp
LmFwcGVuZChzZXNzaW9uLmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgcG9wU291cFNlc3Npb24o
KQoreworICAgIHNvdXBTZXNzaW9uU3RhY2soKS5yZW1vdmVMYXN0KCk7Cit9CisKK1NvdXBTZXNz
aW9uKiBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKQoreworICAgIFZlY3RvcjxHUmVm
UHRyPFNvdXBTZXNzaW9uPiA+JiBzdGFjayA9IHNvdXBTZXNzaW9uU3RhY2soKTsKKyAgICBpZiAo
c3RhY2suaXNFbXB0eSgpKQorICAgICAgICBwdXNoTmV3U291cFNlc3Npb24oKTsKIAotICAgIHJl
dHVybiBzZXNzaW9uOworICAgIHJldHVybiBzdGFjay5sYXN0KCkuZ2V0KCk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwppbmRleCAyYWQ0ZTJkZWJmZWQ5ZDA4YzAyNGQ1ZjgxYjNiYzQ5ZmRiM2VjNzFm
Li43MWFmZmZhYmY5NzNkOTY2NWFiMWFlZTI0OGExMTA2MmU4NTc2YjcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTAtMDMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtzb3VwXSBDcmFzaCB3aGlsZSBsb2FkaW5nIGh0
dHA6Ly93d3cuanVzY28uY24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY4MjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0Z2xvYmFscy5jcHA6CisgICAgICAgICh3ZWJraXRFeGl0
KTogTm8gbG9uZ2VyIGZyZWUgdGhlIFNvdXAgc2Vzc2lvbiBvbiBleGl0LiBUaGlzCisgICAgICAg
IGlzIGhhbmRsZWQgYnkgdGhlIFNvdXBTZXNzaW9uIHN0YWNrIGRlc3RydWN0b3IgaW4gUmVzb3Vy
Y2VIYW5kbGVTb3VwCisgICAgICAgIG5vdy4KKwogMjAxMS0wOS0yOCAgTWFydGluIFJvYmluc29u
ICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gTW92ZSBkcmFnLWFuZC1k
cm9wIGNvZGUgd2hpY2ggY2FuIGJlIHNoYXJlZCB3aXRoIFdlYktpdDIgdG8gV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwCmluZGV4IDQzOWMyM2NkOTJj
YTI4NjgwZmJlOTVkNTJmYThlODk3ZjdiNDMwMDIuLjZlZjUwZWEyMWZkY2E2OWYzY2M3MGMzYTk5
ZjAzNmUwZWMwYTk5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRnbG9iYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFs
cy5jcHAKQEAgLTI1MSw3ICsyNTEsNiBAQCBzdGF0aWMgR1JlZlB0cjxXZWJLaXRTcGVsbENoZWNr
ZXI+IHRleHRDaGVja2VyID0gMDsKIAogc3RhdGljIHZvaWQgd2Via2l0RXhpdCgpCiB7Ci0gICAg
Z19vYmplY3RfdW5yZWYod2Via2l0X2dldF9kZWZhdWx0X3Nlc3Npb24oKSk7CiAgICAgdGV4dENo
ZWNrZXIgPSAwOwogfQogCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMK
aW5kZXggMzIzZDEwYzZjMjc5NjZiZTU0ZGQxZmYyOWZjOTE5NjJhOTE4ODFmZC4uMzkzOGMyNzFi
NWFmN2VjMTc5Mjg5MjY2MjAzMjllNTZjMjhhY2MyOCAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFj
CisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMjU5LDcgKzI1OSw3IEBAIGlmIHRlc3QgIiR3aXRoX2hp
bGRvbiIgPSAieWVzIjsgdGhlbgogZmkKIAogIyBtaW5pbXVtIGJhc2UgZGVwZW5kZW5jaWVzCi1M
SUJTT1VQX1JFUVVJUkVEX1ZFUlNJT049Mi4zMy42CitMSUJTT1VQX1JFUVVJUkVEX1ZFUlNJT049
Mi4zNi4wCiBDQUlST19SRVFVSVJFRF9WRVJTSU9OPTEuMTAKIEZPTlRDT05GSUdfUkVRVUlSRURf
VkVSU0lPTj0yLjQKIEZSRUVUWVBFMl9SRVFVSVJFRF9WRVJTSU9OPTkuMAo=
</data>
<flag name="commit-queue"
          id="106692"
          type_id="3"
          status="-"
          setter="gustavo.noronha"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118510</attachid>
            <date>2011-12-08 18:28:36 -0800</date>
            <delta_ts>2012-03-02 20:30:13 -0800</delta_ts>
            <desc>Patch that doesn&apos;t work</desc>
            <filename>async-session.diff</filename>
            <type>text/plain</type>
            <size>3267</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0
cHJlcXVlc3Qtc3luYy1uby10aW1lcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI4ZWQwNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0
cHJlcXVlc3Qtc3luYy1uby10aW1lcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVz
dCBmb3I6IGJ1ZyA2ODIzODogW3NvdXBdIENyYXNoIHdoaWxlIGxvYWRpbmcgaHR0cDovL3d3dy5q
dXNjby5jbiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBXZWJDb3JlIHRpbWVycyBkbyBub3QgZmly
ZSBkdXJpbmcgc3luY2hyb25vdXMgWE1MSHR0cFJlcXVlc3RzLgorCitQQVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXN5
bmMtbm8tdGltZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3htbGh0dHByZXF1ZXN0LXN5bmMtbm8tdGltZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYWEwMDA5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtc3luYy1uby10aW1lcnMuaHRt
bApAQCAtMCwwICsxLDMyIEBACis8aHRtbD48Ym9keT4KKworPHA+IFRlc3QgZm9yOiA8YSBocmVm
PSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgyMzgiPmJ1ZyA2ODIz
ODxhPjogW3NvdXBdIENyYXNoIHdoaWxlIGxvYWRpbmcgaHR0cDovL3d3dy5qdXNjby5jbjwvYT4g
VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgV2ViQ29yZSB0aW1lcnMgZG8gbm90IGZpcmUgZHVyaW5n
IAorPHByZSBpZD1sb2c+PC9wcmU+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiXG4iOworfQor
Cit2YXIgdGltZXJFdmVyRmlyZWQgPSBmYWxzZTsKK3ZhciBpbnRlcnZhbElkID0gc2V0SW50ZXJ2
YWwoZnVuY3Rpb24oKSB7CisgICAgdGltZXJFdmVyRmlyZWQgPSB0cnVlOworfSwgMTApOworCit0
cnkgeworICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICByZXEub3Blbigi
R0VUIiwgInJlc291cmNlcy9kb3dubG9hZC13aXRoLWRlbGF5LnBocD9pdGVyYXRpb249NSZkZWxh
eT01MCIsIGZhbHNlKTsKKyAgICByZXEuc2VuZChudWxsKTsKK30gY2F0Y2ggKGV4KSB7CisgICAg
bG9nKGV4KTsKK30KKworY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTsKK2xvZyh0aW1lckV2ZXJG
aXJlZCA/ICJGQUlMIiA6ICJQQVNTIik7Cis8L3NjcmlwdD4KKworPC9ib2R5PjwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhh
bmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHAKaW5kZXggNWNiNTNiZC4uODBmOTljYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxl
U291cC5jcHAKQEAgLTk1LDExICs5NSwxOSBAQCBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6Oldl
YkNvcmVTeW5jaHJvbm91c0xvYWRlcihSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyYwogICAg
ICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX2ZpbmlzaGVkKGZhbHNlKQogewotICAgIG1fbWFpbkxv
b3AgPSBnX21haW5fbG9vcF9uZXcoMCwgZmFsc2UpOworICAgIC8vIFdlIGRvbid0IHdhbnQgYW55
IHRpbWVycyB0byBmaXJlIHdoaWxlIHdlIGFyZSBkb2luZyBvdXIgc3luY2hyb25vdXMgbG9hZAor
ICAgIC8vIHNvIHdlIHJlcGxhY2UgdGhlIHRocmVhZCBkZWZhdWx0IG1haW4gY29udGV4dC4gVGhl
IG1haW4gbG9vcCBpdGVyYXRpb25zCisgICAgLy8gd2lsbCBvbmx5IHByb2Nlc3MgR1NvdXJjZXMg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5uZXIgY29udGV4dC4KKyAgICBHTWFpbkNvbnRleHQqIGlu
bmVyTWFpbkNvbnRleHQgPSBnX21haW5fY29udGV4dF9uZXcoKTsKKyAgICBnX21haW5fY29udGV4
dF9wdXNoX3RocmVhZF9kZWZhdWx0KGlubmVyTWFpbkNvbnRleHQpOworICAgIG1fbWFpbkxvb3Ag
PSBnX21haW5fbG9vcF9uZXcoaW5uZXJNYWluQ29udGV4dCwgZmFsc2UpOworCisgICAgZ19tYWlu
X2NvbnRleHRfdW5yZWYoaW5uZXJNYWluQ29udGV4dCk7IC8vIEdMaWIga2VlcHMgYSByZWZlcmVu
Y2UuCiB9CiAKIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6fldlYkNvcmVTeW5jaHJvbm91c0xv
YWRlcigpCiB7CisgICAgZ19tYWluX2NvbnRleHRfcG9wX3RocmVhZF9kZWZhdWx0KGdfbWFpbl9j
b250ZXh0X2dldF90aHJlYWRfZGVmYXVsdCgpKTsKICAgICBnX21haW5fbG9vcF91bnJlZihtX21h
aW5Mb29wKTsKIH0KIApAQCAtNzI3LDcgKzczNSw4IEBAIFNvdXBTZXNzaW9uKiBSZXNvdXJjZUhh
bmRsZTo6ZGVmYXVsdFNlc3Npb24oKQogICAgICAgICBzZXNzaW9uID0gc291cF9zZXNzaW9uX2Fz
eW5jX25ldygpOwogICAgICAgICBnX29iamVjdF9zZXQoc2Vzc2lvbiwKICAgICAgICAgICAgICAg
ICAgICAgIFNPVVBfU0VTU0lPTl9NQVhfQ09OTlMsIG1heENvbm5lY3Rpb25zLAotICAgICAgICAg
ICAgICAgICAgICAgU09VUF9TRVNTSU9OX01BWF9DT05OU19QRVJfSE9TVCwgbWF4Q29ubmVjdGlv
bnNQZXJIb3N0LCAKKyAgICAgICAgICAgICAgICAgICAgIFNPVVBfU0VTU0lPTl9NQVhfQ09OTlNf
UEVSX0hPU1QsIG1heENvbm5lY3Rpb25zUGVySG9zdCwKKyAgICAgICAgICAgICAgICAgICAgIFNP
VVBfU0VTU0lPTl9VU0VfVEhSRUFEX0NPTlRFWFQsIFRSVUUsCiAgICAgICAgICAgICAgICAgICAg
ICBOVUxMKTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129994</attachid>
            <date>2012-03-02 20:30:26 -0800</date>
            <delta_ts>2012-03-03 09:03:40 -0800</delta_ts>
            <desc>New patch</desc>
            <filename>bug-68238-20120302203026.patch</filename>
            <type>text/plain</type>
            <size>9697</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzFmODFlZDQyN2MyZGE1
MDIyNzdlNmExM2VjNDZhODZmNDhmNjA5Zi4uYjE4MWRkNTE3NDQyMDI2OGUwNmFmMTk2MTBhNzcy
ZDNjY2ZmMjg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAzLTAyICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbc291cF0gQ3Jh
c2ggd2hpbGUgbG9hZGluZyBodHRwOi8vd3d3Lmp1c2NvLmNuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODIzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QveG1saHR0cHJlcXVlc3Qtc3luYy1uby10aW1lcnMuaHRtbAorCisgICAgICAgIFdoZW4gcnVu
bmluZyBzeW5jaHJvbm91cyBYTUxIdHRwUmVxdWVzdHMsIHB1c2ggYSBuZXcgaW5uZXIgdGhyZWFk
IGRlZmF1bHQKKyAgICAgICAgY29udGV4dCwgc28gdGhhdCBvdGhlciBzb3VyY2VzIGZyb20gdGlt
ZXJzIGFuZCBuZXR3b3JrIGFjdGl2aXR5IGRvIG5vdCBydW4uCisgICAgICAgIFRoaXMgd2lsbCBt
YWtlIHN5bmNocm9ub3VzIHJlcXVlc3RzIHRydWx5IHN5bmNocm9ub3VzIHdpdGggdGhlIHJlc3Qg
b2YKKyAgICAgICAgV2ViQ29yZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVN5bmNocm9u
b3VzTG9hZGVyOjpXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIpOiBQdXNoIGEgbmV3IHRocmVhZCBk
ZWZhdWx0CisgICAgICAgIGNvbnRleHQgdG8gcHJldmVudCBvdGhlciBzb3VyY2VzIGZyb20gcnVu
bmluZy4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6fldlYkNv
cmVTeW5jaHJvbm91c0xvYWRlcik6IFBvcCB0aGUgaW5uZXIgdGhyZWFkIGRlZmF1bHQgY29udGV4
dC4KKyAgICAgICAgKFdlYkNvcmU6OnF1aXRNYWluTG9vcCk6IEFkZGVkIHRoaXMgY2FsbGJhY2su
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOiBRdWl0IHRoZSBtYWluIGxvb3AgYXN5bmNocm9ub3VzbHkgc28gdGhhdAorICAgICAg
ICB0aGUgY29ubmVjdGlvbiBoYXMgYSBjaGFuY2UgdG8gY2xvc2UgYXN5bmNocm9ub3VzbHkuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24pOiBBY3RpdmF0
ZSB1c2UtdGhyZWFkLWNvbnRleHQgc28gdGhhdCB0aGUgc291cCBzZXNzaW9uCisgICAgICAgIHJl
c3BlY3RzIHRoZSBpbm5lciB0aHJlYWQgY29udGV4dC4KKwogMjAxMi0wMy0wMiAgRW1pbCBBIEVr
bHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IGJvcmRlcnMgdG8gaW50
ZWdlcnMgZm9yIHN1YnBpeGVsIGxheW91dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCA5MmM2
NmU1NGNiYTkzNTk2NDIyN2JlNDg0MWEwNWFkMDM2YThjOTBlLi5lNjNjM2JhOTg1ZjQxZmFiMTVi
YjZlNjkzNTEwMTA1ODZmM2Q2YTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtOTcsMTAg
Kzk3LDE4IEBAIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6V2ViQ29yZVN5bmNocm9ub3VzTG9h
ZGVyKFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjCiAgICAgLCBtX2ZpbmlzaGVkKGZhbHNl
KQogewogICAgIG1fbWFpbkxvb3AgPSBhZG9wdEdSZWYoZ19tYWluX2xvb3BfbmV3KDAsIGZhbHNl
KSk7CisKKyAgICAvLyBXZSBkb24ndCB3YW50IGFueSB0aW1lcnMgdG8gZmlyZSB3aGlsZSB3ZSBh
cmUgZG9pbmcgb3VyIHN5bmNocm9ub3VzIGxvYWQKKyAgICAvLyBzbyB3ZSByZXBsYWNlIHRoZSB0
aHJlYWQgZGVmYXVsdCBtYWluIGNvbnRleHQuIFRoZSBtYWluIGxvb3AgaXRlcmF0aW9ucworICAg
IC8vIHdpbGwgb25seSBwcm9jZXNzIEdTb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGlubmVy
IGNvbnRleHQuCisgICAgR1JlZlB0cjxHTWFpbkNvbnRleHQ+IGlubmVyTWFpbkNvbnRleHQgPSBh
ZG9wdEdSZWYoZ19tYWluX2NvbnRleHRfbmV3KCkpOworICAgIGdfbWFpbl9jb250ZXh0X3B1c2hf
dGhyZWFkX2RlZmF1bHQoaW5uZXJNYWluQ29udGV4dC5nZXQoKSk7CisgICAgbV9tYWluTG9vcCA9
IGdfbWFpbl9sb29wX25ldyhpbm5lck1haW5Db250ZXh0LmdldCgpLCBmYWxzZSk7CiB9CiAKIFdl
YkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6fldlYkNvcmVTeW5jaHJvbm91c0xvYWRlcigpCiB7Cisg
ICAgZ19tYWluX2NvbnRleHRfcG9wX3RocmVhZF9kZWZhdWx0KGdfbWFpbl9jb250ZXh0X2dldF90
aHJlYWRfZGVmYXVsdCgpKTsKIH0KIAogdm9pZCBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQpAQCAtMTEzLDkgKzEyMSwyMiBAQCB2b2lkIFdlYkNvcmVTeW5jaHJvbm91c0xv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLAog
ICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorc3RhdGljIGdib29sZWFuIHF1
aXRNYWluTG9vcChHTWFpbkxvb3AqIGxvb3ApCit7CisgICAgZ19tYWluX2xvb3BfcXVpdChsb29w
KTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKIHZvaWQgV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlKQogewotICAgIGdfbWFp
bl9sb29wX3F1aXQobV9tYWluTG9vcC5nZXQoKSk7CisgICAgLy8gV2UgcXVpdCB0aGUgbWFpbiBs
b29wIGFzeW5jaHJvbm91c2x5IGhlcmUsIGJlY2F1c2UgZGlkRmluaXNoTG9hZGluZyBpcyBjYWxs
ZWQgYmVmb3JlCisgICAgLy8gdGhlIGNsb3NlQ2FsbGJhY2suIElmIHdlIHF1aXQgdGhlIG1haW4g
bG9vcCBiZWZvcmUgY2xvc2VDYWxsYmFjaywgaXQgd2lsbCBuZXZlciBiZQorICAgIC8vIGNhbGxl
ZCBiZWNhdXNlIHRoZSBzeW5jaHJvbm91cyB0aHJlYWQgY29udGV4dCBpcyBubyBsb25nZXIgYWN0
aXZlLgorICAgIGlmIChnX21haW5fbG9vcF9pc19ydW5uaW5nKG1fbWFpbkxvb3AuZ2V0KCkpKSB7
CisgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gcXVpdFNvdXJjZSA9IGFkb3B0R1JlZihnX2lkbGVf
c291cmNlX25ldygpKTsKKyAgICAgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrKHF1aXRTb3VyY2Uu
Z2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHF1aXRNYWluTG9vcCksIG1fbWFp
bkxvb3AuZ2V0KCksIDApOworICAgICAgICBnX3NvdXJjZV9hdHRhY2gocXVpdFNvdXJjZS5nZXQo
KSwgZ19tYWluX2NvbnRleHRfZ2V0X3RocmVhZF9kZWZhdWx0KCkpOworICAgIH0KICAgICBtX2Zp
bmlzaGVkID0gdHJ1ZTsKIH0KIApAQCAtNzM5LDYgKzc2MCw3IEBAIFNvdXBTZXNzaW9uKiBSZXNv
dXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKQogICAgICAgICAgICAgICAgICAgICAgU09VUF9T
RVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZUEUsIFNPVVBfVFlQRV9DT05URU5UX0RFQ09ERVIsCiAg
ICAgICAgICAgICAgICAgICAgICBTT1VQX1NFU1NJT05fQUREX0ZFQVRVUkVfQllfVFlQRSwgU09V
UF9UWVBFX0NPTlRFTlRfU05JRkZFUiwKICAgICAgICAgICAgICAgICAgICAgIFNPVVBfU0VTU0lP
Tl9BRERfRkVBVFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVfUFJPWFlfUkVTT0xWRVJfREVGQVVMVCwK
KyAgICAgICAgICAgICAgICAgICAgIFNPVVBfU0VTU0lPTl9VU0VfVEhSRUFEX0NPTlRFWFQsIFRS
VUUsCiAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NjYzYjk0MGJjMDI2ZjU2MmEx
YWI0ZTMxZjYzZjM1N2ExZTUwMTBhLi4xNjI1YTQxYjNmODI0ODg1MWI3M2EwZDJmOGFmMmVhYTQ5
YzgwYWU3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDMtMDIgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNv
bkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtzb3VwXSBDcmFzaCB3aGlsZSBsb2FkaW5nIGh0dHA6
Ly93d3cuanVzY28uY24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY4MjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBndGsvamhidWlsZC5tb2R1bGVzOiBCdW1wZWQgdGhlIGxpYnNvdXAgYW5kIGdsaWIg
ZGVwZW5kZW5jaWVzCisgICAgICAgIGluIHRoZSBqaGJ1aWxkIGZpbGUuCisKIDIwMTItMDMtMDIg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGNvbW1p
dCBxdWV1ZSwgcmVtb3ZlIGR1cGxpY2F0ZSBlbnRyeS4KZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9q
aGJ1aWxkLm1vZHVsZXMgYi9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCmluZGV4IGUwYzllMzhj
ZDdmMzAzOTgxZjBmMTNjNTZkOWMzN2Q3NGZjMzc3OWQuLjQ0ZjllZDI2MzlhZGFjNzQ0OTY5Mjdk
ZGIyNDAwMGE2NWU5YTA1MWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMK
KysrIGIvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwpAQCAtMTIwLDEwICsxMjAsOSBAQAogICAg
IDxkZXBlbmRlbmNpZXM+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImxpYmZmaSIvPgogICAgIDwvZGVw
ZW5kZW5jaWVzPgotICAgIDxicmFuY2ggbW9kdWxlPSIvcHViL0dOT01FL3NvdXJjZXMvZ2xpYi8y
LjMxL2dsaWItMi4zMS4yLnRhci54eiIgdmVyc2lvbj0iMi4zMS4yIgorICAgIDxicmFuY2ggbW9k
dWxlPSIvcHViL0dOT01FL3NvdXJjZXMvZ2xpYi8yLjMxL2dsaWItMi4zMS44LnRhci54eiIgdmVy
c2lvbj0iMi4zMS44IgogICAgICAgICAgICAgcmVwbz0iZnRwLmdub21lLm9yZyIKLSAgICAgICAg
ICAgIGhhc2g9InNoYTI1NjoxOWQ3OTIxNjcxYTQ4N2MzYzU3NTlhNTdkZjdiODUwOGFmZGJhZGQ3
NzY0ZDYyYTQ3YTgyZmZmN2IzOTkwMzJiIgotICAgICAgICAgICAgbWQ1c3VtPSIxY2JkZjMxNGQ3
Yzg3OTE2YTBjM2RjZTgzYWMwMjg1ZiIvPgorICAgICAgICAgICAgaGFzaD0ic2hhMjU2OjFjZTNk
Mjc1MTg5MDAwZTFjNTBlOTJlZmNkYjY0NDdiYzI2MGIxZTVjNDE2OTliN2ExOTU5ZTNlMTkyOGZi
YWEiLz4KICAgPC9hdXRvdG9vbHM+CiAKICAgPGF1dG90b29scyBpZD0iZ2xpYi1uZXR3b3JraW5n
Ij4KQEAgLTE1Miw5ICsxNTEsOSBAQAogICAgIDxkZXBlbmRlbmNpZXM+CiAgICAgICA8ZGVwIHBh
Y2thZ2U9ImdsaWItbmV0d29ya2luZyIvPgogICAgIDwvZGVwZW5kZW5jaWVzPgotICAgIDxicmFu
Y2ggbW9kdWxlPSJsaWJzb3VwIiB2ZXJzaW9uPSIyLjM3LjIuMStnaXQiCisgICAgPGJyYW5jaCBt
b2R1bGU9ImxpYnNvdXAiIHZlcnNpb249IjIuMzcuOTErZ2l0IgogICAgICAgICAgICAgcmVwbz0i
Z2l0Lmdub21lLm9yZyIKLSAgICAgICAgICAgIHRhZz0iNWNiZmM0OGNhZjc2Y2VkMmUyOGVlMDZj
OWU0MDUyMzI3MzYwMWRjNiIvPgorICAgICAgICAgICAgdGFnPSI1MjA1NzUxMGFjY2JhNDljZmM2
ZDFkMGU1MjI5MjM2OGJhMmUwYzk5Ii8+CiAgIDwvYXV0b3Rvb2xzPgogCiAgIDxhdXRvdG9vbHMg
aWQ9ImZvbnRjb25maWciIGF1dG9nZW4tc2g9ImNvbmZpZ3VyZSI+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWI2NzIyYTc3
ODk3NDAyYjQ2Y2VjMWEzMmU3NWU4MDlhYmU1YWU2Ny4uOTFkYWFkNDU5Y2RiMTM1ODk5YTE5NDI2
NzdhNjY5ZjJlNjgxZGE0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAzLTAyICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbc291cF0gQ3Jh
c2ggd2hpbGUgbG9hZGluZyBodHRwOi8vd3d3Lmp1c2NvLmNuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODIzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94
bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtc3luYy1uby10aW1l
cnMuaHRtbDogQWRkZWQuCisKIDIwMTItMDMtMDIgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25A
Z21haWwuY29tPgogCiAgICAgICAgIDplbXB0eSBzaG91bGQgYXBwbHkgdG8gZWxlbWVudHMgbWFk
ZSBlbXB0eSB2aWEgcGFnZSBkeW5hbWljcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1
ZXN0LXN5bmMtbm8tdGltZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjc4ZGEwYWE5OWM5
NDdlNTZlMjkwYmFmY2JmN2E3MDVjZWE2YWEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVy
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUZXN0IGZvcjogYnVnIDY4MjM4OiBbc291
cF0gQ3Jhc2ggd2hpbGUgbG9hZGluZyBodHRwOi8vd3d3Lmp1c2NvLmNuIFRoaXMgdGVzdCB2ZXJp
ZmllcyB0aGF0IFdlYkNvcmUgdGltZXJzIGRvIG5vdCBmaXJlIGR1cmluZyBzeW5jaHJvbm91cyBY
TUxIdHRwUmVxdWVzdHMuCisKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1zeW5j
LW5vLXRpbWVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxNmE0YTdiMjE1ZGU4YjMzNTIwMzg5NDlmOThm
ZTBlODNmN2FmODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXN5bmMtbm8tdGltZXJzLmh0bWwKQEAgLTAsMCAr
MSwzMiBAQAorPGh0bWw+PGJvZHk+CisKKzxwPiBUZXN0IGZvcjogPGEgaHJlZj0iaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MjM4Ij5idWcgNjgyMzg8YT46IFtzb3Vw
XSBDcmFzaCB3aGlsZSBsb2FkaW5nIGh0dHA6Ly93d3cuanVzY28uY248L2E+IFRoaXMgdGVzdCB2
ZXJpZmllcyB0aGF0IFdlYkNvcmUgdGltZXJzIGRvIG5vdCBmaXJlIGR1cmluZyBzeW5jaHJvbm91
cyBYTUxIdHRwUmVxdWVzdHMuCis8cHJlIGlkPWxvZz48L3ByZT4KKworPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdl
KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVz
c2FnZSArICJcbiI7Cit9CisKK3ZhciB0aW1lckV2ZXJGaXJlZCA9IGZhbHNlOwordmFyIGludGVy
dmFsSWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICB0aW1lckV2ZXJGaXJlZCA9IHRy
dWU7Cit9LCAxMCk7CisKK3RyeSB7CisgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgp
OworICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL2Rvd25sb2FkLXdpdGgtZGVsYXkucGhw
P2l0ZXJhdGlvbj01JmRlbGF5PTUwIiwgZmFsc2UpOworICAgIHJlcS5zZW5kKG51bGwpOworfSBj
YXRjaCAoZXgpIHsKKyAgICBsb2coZXgpOworfQorCitjbGVhckludGVydmFsKGludGVydmFsSWQp
OworbG9nKHRpbWVyRXZlckZpcmVkID8gIkZBSUwiIDogIlBBU1MiKTsKKzwvc2NyaXB0PgorCis8
L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDIx
YTYxMDhmZjY0YTNjMjFmMTFkMDU4ODQzZjc4OTRhMmY3Y2NjYjAuLjMwZjk3MDFjMGQzYTZjNTdi
NzE5NGQ1Y2ZmMzA4ZDJhZTNjZjNhNTMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wMy0wMiAgTWFydGluIFJvYmluc29uICA8bXJv
Ymluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW3NvdXBdIENyYXNoIHdoaWxlIGxvYWRpbmcg
aHR0cDovL3d3dy5qdXNjby5jbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjgyMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGNvbmZpZ3VyZS5hYzogQnVtcGVkIHRoZSBsaWJzb3VwIGRlcGVuZGVuY3kg
dG8gMi4zNy45MC4KKwogMjAxMi0wMy0wMiAgQWxleGFuZHJlIFJvc3RvdnRzZXYgIDx0ZXRyb21p
bm9AZ2VudG9vLm9yZz4KIAogICAgICAgICBNYWtlIHdlYmtpdC1ndGsgdHJhbnNsYXRpb25zIHJl
c3BlY3QgTElOR1VBUwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmlu
ZGV4IDhmOGIyZTk2ZmU2MmE4MDgyZDg1MDQxOTE5NTg5ZWFkMTIyNGE5OWUuLjdlY2M0MjVmZTAw
Yjc4OTYwYmY5NWNiODIzYjYzMzVhMDQ4MjVkNzEgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYwor
KysgYi9jb25maWd1cmUuYWMKQEAgLTM3OCw3ICszNzgsNyBAQCBDQUlST19SRVFVSVJFRF9WRVJT
SU9OPTEuMTAKIEZPTlRDT05GSUdfUkVRVUlSRURfVkVSU0lPTj0yLjQKIEZSRUVUWVBFMl9SRVFV
SVJFRF9WRVJTSU9OPTkuMAogR0xJQl9SRVFVSVJFRF9WRVJTSU9OPTIuMzEuMgotTElCU09VUF9S
RVFVSVJFRF9WRVJTSU9OPTIuMzcuMi4xCitMSUJTT1VQX1JFUVVJUkVEX1ZFUlNJT049Mi4zNy45
MAogTElCWE1MX1JFUVVJUkVEX1ZFUlNJT049Mi42CiBQQU5HT19SRVFVSVJFRF9WRVJTSU9OPTEu
MjEuMAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130004</attachid>
            <date>2012-03-03 09:04:02 -0800</date>
            <delta_ts>2012-03-05 22:18:15 -0800</delta_ts>
            <desc>Updated patch addressin Dan&apos;s comments</desc>
            <filename>bug-68238-20120303090402.patch</filename>
            <type>text/plain</type>
            <size>13502</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzFmODFlZDQyN2MyZGE1
MDIyNzdlNmExM2VjNDZhODZmNDhmNjA5Zi4uMTI2MzUwZGU3NmFhNTY1NDEzNjg5MDk0ZDEwYmVh
MzcyODdkODQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTAyICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbc291cF0gQ3Jh
c2ggd2hpbGUgbG9hZGluZyBodHRwOi8vd3d3Lmp1c2NvLmNuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODIzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QveG1saHR0cHJlcXVlc3Qtc3luYy1uby10aW1lcnMuaHRtbAorCisgICAgICAgIFdoZW4gcnVu
bmluZyBzeW5jaHJvbm91cyBYTUxIdHRwUmVxdWVzdHMsIHB1c2ggYSBuZXcgaW5uZXIgdGhyZWFk
IGRlZmF1bHQKKyAgICAgICAgY29udGV4dCwgc28gdGhhdCBvdGhlciBzb3VyY2VzIGZyb20gdGlt
ZXJzIGFuZCBuZXR3b3JrIGFjdGl2aXR5IGRvIG5vdCBydW4uCisgICAgICAgIFRoaXMgd2lsbCBt
YWtlIHN5bmNocm9ub3VzIHJlcXVlc3RzIHRydWx5IHN5bmNocm9ub3VzIHdpdGggdGhlIHJlc3Qg
b2YKKyAgICAgICAgV2ViQ29yZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVy
KTogQ2xlYW4gdXAgdGhlIG1ldGhvZCBkZWZpbml0aW9ucyBhIGJpdCBieSB3cml0aW5nIHRoZW0g
aW5saW5lLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyOjpXZWJD
b3JlU3luY2hyb25vdXNMb2FkZXIpOiBQdXNoIGEgbmV3IHRocmVhZCBkZWZhdWx0CisgICAgICAg
IGNvbnRleHQgdG8gcHJldmVudCBvdGhlciBzb3VyY2VzIGZyb20gcnVubmluZy4KKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6fldlYkNvcmVTeW5jaHJvbm91c0xv
YWRlcik6IFBvcCB0aGUgaW5uZXIgdGhyZWFkIGRlZmF1bHQgY29udGV4dC4KKyAgICAgICAgKFdl
YkNvcmU6OmNsb3NlQ2FsbGJhY2spOiBJZiB0aGUgY2xpZW50IGlzIHN5bmNocm9ub3VzIGNhbGwg
ZGlkRmluaXNoTG9hZGluZyBub3cuCisgICAgICAgIChXZWJDb3JlOjpyZWFkQ2FsbGJhY2spOiBP
bmx5IGNhbGwgZGlkRmluaXNoTG9hZGluZyBpZiB0aGUgY2xpZW50IGlzbid0IHN5bmNocm9ub3Vz
LgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKTogQWN0
aXZhdGUgdXNlLXRocmVhZC1jb250ZXh0IHNvIHRoYXQgdGhlIHNvdXAgc2Vzc2lvbgorICAgICAg
ICByZXNwZWN0cyB0aGUgaW5uZXIgdGhyZWFkIGNvbnRleHQuCisgICAgICAgIChSZXNvdXJjZUhh
bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6aXNT
eW5jaHJvbm91c0NsaWVudCk6IEFkZGVkIHRoaXMgdmlydHVhbCBtZXRob2QuCisKIDIwMTItMDMt
MDIgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmVydCBi
b3JkZXJzIHRvIGludGVnZXJzIGZvciBzdWJwaXhlbCBsYXlvdXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBi
ZWZiY2NmYTBjMTJmYTlhMWZhZGRhNmQwZDZiOGQyNzY2OWFjZGQzLi5kMzhmNDhjMjgyNTRkODk4
NzRlNzgxMzc0MGY1NTU2MjJkN2UwZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC0xMDksNiArMTA5LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShCTE9CKQogICAgICAgICB2aXJ0dWFs
IEFzeW5jRmlsZVN0cmVhbSogY3JlYXRlQXN5bmNGaWxlU3RyZWFtKEZpbGVTdHJlYW1DbGllbnQq
KSB7IHJldHVybiAwOyB9CiAjZW5kaWYKKyNpZiBVU0UoU09VUCkKKyAgICAgICAgdmlydHVhbCBi
b29sIGlzU3luY2hyb25vdXNDbGllbnQoKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCiAgICAg
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCA5MmM2NmU1NGNiYTkzNTk2NDIyN2Jl
NDg0MWEwNWFkMDM2YThjOTBlLi40Mjc3NGNkMzJmYWY1ODhiOWNjOWVkZjc5ZDQzMzQ4MGM2YjVi
NWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtNzIsMTUgKzcyLDU4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlciA6IHB1YmxpYyBSZXNv
dXJjZUhhbmRsZUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZVN5bmNo
cm9ub3VzTG9hZGVyKTsKIHB1YmxpYzoKLSAgICBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIoUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UgJiwgVmVjdG9yPGNoYXI+Jik7Ci0gICAgfldl
YkNvcmVTeW5jaHJvbm91c0xvYWRlcigpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwg
aW50LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIC8qZmluaXNoVGltZSovKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
KyAgICBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIoUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCisgICAgICAgIDogbV9l
cnJvcihlcnJvcikKKyAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICAsIG1f
ZGF0YShkYXRhKQorICAgICAgICAsIG1fZmluaXNoZWQoZmFsc2UpCisgICAgeworICAgICAgICAv
LyBXZSBkb24ndCB3YW50IGFueSB0aW1lcnMgdG8gZmlyZSB3aGlsZSB3ZSBhcmUgZG9pbmcgb3Vy
IHN5bmNocm9ub3VzIGxvYWQKKyAgICAgICAgLy8gc28gd2UgcmVwbGFjZSB0aGUgdGhyZWFkIGRl
ZmF1bHQgbWFpbiBjb250ZXh0LiBUaGUgbWFpbiBsb29wIGl0ZXJhdGlvbnMKKyAgICAgICAgLy8g
d2lsbCBvbmx5IHByb2Nlc3MgR1NvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5uZXIgY29u
dGV4dC4KKyAgICAgICAgR1JlZlB0cjxHTWFpbkNvbnRleHQ+IGlubmVyTWFpbkNvbnRleHQgPSBh
ZG9wdEdSZWYoZ19tYWluX2NvbnRleHRfbmV3KCkpOworICAgICAgICBnX21haW5fY29udGV4dF9w
dXNoX3RocmVhZF9kZWZhdWx0KGlubmVyTWFpbkNvbnRleHQuZ2V0KCkpOworICAgICAgICBtX21h
aW5Mb29wID0gZ19tYWluX2xvb3BfbmV3KGlubmVyTWFpbkNvbnRleHQuZ2V0KCksIGZhbHNlKTsK
KyAgICB9CisKKyAgICB+V2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyKCkKKyAgICB7CisgICAgICAg
IGdfbWFpbl9jb250ZXh0X3BvcF90aHJlYWRfZGVmYXVsdChnX21haW5fY29udGV4dF9nZXRfdGhy
ZWFkX2RlZmF1bHQoKSk7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIGlzU3luY2hyb25vdXND
bGllbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi0gICAgdm9pZCBy
dW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCisgICAgeworICAgICAgICBtX3Jl
c3BvbnNlID0gcmVzcG9uc2U7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50KQor
ICAgIHsKKyAgICAgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlKQor
ICAgIHsKKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wLmdldCgpKTsKKyAgICAg
ICAgbV9maW5pc2hlZCA9IHRydWU7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCisgICAg
eworICAgICAgICBtX2Vycm9yID0gZXJyb3I7CisgICAgICAgIGRpZEZpbmlzaExvYWRpbmcoaGFu
ZGxlLCAwKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgeworICAgICAgICBpZiAoIW1f
ZmluaXNoZWQpCisgICAgICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7
CisgICAgfQogCiBwcml2YXRlOgogICAgIFJlc291cmNlRXJyb3ImIG1fZXJyb3I7CkBAIC05MCw0
NyArMTMzLDYgQEAgcHJpdmF0ZToKICAgICBHUmVmUHRyPEdNYWluTG9vcD4gbV9tYWluTG9vcDsK
IH07CiAKLVdlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6V2ViQ29yZVN5bmNocm9ub3VzTG9hZGVy
KFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9y
PGNoYXI+JiBkYXRhKQotICAgIDogbV9lcnJvcihlcnJvcikKLSAgICAsIG1fcmVzcG9uc2UocmVz
cG9uc2UpCi0gICAgLCBtX2RhdGEoZGF0YSkKLSAgICAsIG1fZmluaXNoZWQoZmFsc2UpCi17Ci0g
ICAgbV9tYWluTG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXcoMCwgZmFsc2UpKTsKLX0K
LQotV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyOjp+V2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyKCkK
LXsKLX0KLQotdm9pZCBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewot
ICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsKLX0KLQotdm9pZCBXZWJDb3JlU3luY2hyb25vdXNM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwg
aW50IGxlbmd0aCwgaW50KQotewotICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLX0K
LQotdm9pZCBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3Vy
Y2VIYW5kbGUqLCBkb3VibGUpCi17Ci0gICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wLmdl
dCgpKTsKLSAgICBtX2ZpbmlzaGVkID0gdHJ1ZTsKLX0KLQotdm9pZCBXZWJDb3JlU3luY2hyb25v
dXNMb2FkZXI6OmRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCi17Ci0gICAgbV9lcnJvciA9IGVycm9yOwotICAgIGRpZEZpbmlzaExvYWRp
bmcoaGFuZGxlLCAwKTsKLX0KLQotdm9pZCBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OnJ1bigp
Ci17Ci0gICAgaWYgKCFtX2ZpbmlzaGVkKQotICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWlu
TG9vcC5nZXQoKSk7Ci19Ci0KIHN0YXRpYyB2b2lkIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlv
bihSZXNvdXJjZUhhbmRsZSosIGJvb2wgaXNEZXN0cm95aW5nKTsKIHN0YXRpYyB2b2lkIHNlbmRS
ZXF1ZXN0Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCosIGdwb2ludGVyKTsKIHN0YXRp
YyB2b2lkIHJlYWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiwgZ3BvaW50ZXIpOwpA
QCAtNjM3LDYgKzYzOSw5IEBAIHN0YXRpYyB2b2lkIGNsb3NlQ2FsbGJhY2soR09iamVjdCogc291
cmNlLCBHQXN5bmNSZXN1bHQqIHJlcywgZ3BvaW50ZXIgZGF0YSkKICAgICBSZXNvdXJjZUhhbmRs
ZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwogICAgIGdfaW5wdXRfc3RyZWFt
X2Nsb3NlX2ZpbmlzaChkLT5tX2lucHV0U3RyZWFtLmdldCgpLCByZXMsIDApOwogICAgIGNsZWFu
dXBTb3VwUmVxdWVzdE9wZXJhdGlvbihoYW5kbGUuZ2V0KCkpOworCisgICAgaWYgKGhhbmRsZS0+
Y2xpZW50KCktPmlzU3luY2hyb25vdXNDbGllbnQoKSkKKyAgICAgICAgaGFuZGxlLT5jbGllbnQo
KS0+ZGlkRmluaXNoTG9hZGluZyhoYW5kbGUuZ2V0KCksIDApOwogfQogCiBzdGF0aWMgdm9pZCBy
ZWFkQ2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0LCBn
cG9pbnRlciBkYXRhKQpAQCAtNjY2LDggKzY3MSwxMSBAQCBzdGF0aWMgdm9pZCByZWFkQ2FsbGJh
Y2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0LCBncG9pbnRlciBk
YQogCiAgICAgaWYgKCFieXRlc1JlYWQpIHsKICAgICAgICAgLy8gV2UgaW5mb3JtIFdlYkNvcmUg
b2YgbG9hZCBjb21wbGV0aW9uIG5vdyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIHRoZSBpbnB1dAot
ICAgICAgICAvLyBzdHJlYW0gdG8gY2xvc2UgYmVjYXVzZSB0aGUgaW5wdXQgc3RyZWFtIGlzIGNs
b3NlZCBhc3luY2hyb25vdXNseS4KLSAgICAgICAgY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGhh
bmRsZS5nZXQoKSwgMCk7CisgICAgICAgIC8vIHN0cmVhbSB0byBjbG9zZSBiZWNhdXNlIHRoZSBp
bnB1dCBzdHJlYW0gaXMgY2xvc2VkIGFzeW5jaHJvbm91c2x5LiBJZiB0aGlzCisgICAgICAgIC8v
IGlzIGEgc3luY2hyb25vdXMgcmVxdWVzdCwgd2Ugd2FpdCB1bnRpbCB0aGUgY2xvc2VDYWxsYmFj
aywgYmVjYXVzZSB3ZSBkb24ndAorICAgICAgICAvLyB3YW50IHRvIGhhbHQgdGhlIGludGVybmFs
IG1haW4gbG9vcCBiZWZvcmUgdGhlIGlucHV0IHN0cmVhbSBjbG9zZXMuCisgICAgICAgIGlmICgh
aGFuZGxlLT5jbGllbnQoKS0+aXNTeW5jaHJvbm91c0NsaWVudCgpKQorICAgICAgICAgICAgY2xp
ZW50LT5kaWRGaW5pc2hMb2FkaW5nKGhhbmRsZS5nZXQoKSwgMCk7CiAgICAgICAgIGdfaW5wdXRf
c3RyZWFtX2Nsb3NlX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIEdfUFJJT1JJVFlfREVG
QVVMVCwgMCwgY2xvc2VDYWxsYmFjaywgaGFuZGxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTczOSw2ICs3NDcsNyBAQCBTb3VwU2Vzc2lvbiogUmVzb3VyY2VIYW5kbGU6OmRl
ZmF1bHRTZXNzaW9uKCkKICAgICAgICAgICAgICAgICAgICAgIFNPVVBfU0VTU0lPTl9BRERfRkVB
VFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVfQ09OVEVOVF9ERUNPREVSLAogICAgICAgICAgICAgICAg
ICAgICAgU09VUF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZUEUsIFNPVVBfVFlQRV9DT05URU5U
X1NOSUZGRVIsCiAgICAgICAgICAgICAgICAgICAgICBTT1VQX1NFU1NJT05fQUREX0ZFQVRVUkVf
QllfVFlQRSwgU09VUF9UWVBFX1BST1hZX1JFU09MVkVSX0RFRkFVTFQsCisgICAgICAgICAgICAg
ICAgICAgICBTT1VQX1NFU1NJT05fVVNFX1RIUkVBRF9DT05URVhULCBUUlVFLAogICAgICAgICAg
ICAgICAgICAgICAgTlVMTCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjY2M2I5NDBiYzAyNmY1NjJhMWFiNGUzMWY2M2YzNTdh
MWU1MDEwYS4uMTYyNWE0MWIzZjgyNDg4NTFiNzNhMGQyZjhhZjJlYWE0OWM4MGFlNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDEyLTAzLTAyICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4K
KworICAgICAgICBbc291cF0gQ3Jhc2ggd2hpbGUgbG9hZGluZyBodHRwOi8vd3d3Lmp1c2NvLmNu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODIzOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZ3RrL2po
YnVpbGQubW9kdWxlczogQnVtcGVkIHRoZSBsaWJzb3VwIGFuZCBnbGliIGRlcGVuZGVuY2llcwor
ICAgICAgICBpbiB0aGUgamhidWlsZCBmaWxlLgorCiAyMDEyLTAzLTAyICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBjb21taXQgcXVldWUsIHJlbW92
ZSBkdXBsaWNhdGUgZW50cnkuCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVz
IGIvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwppbmRleCBlMGM5ZTM4Y2Q3ZjMwMzk4MWYwZjEz
YzU2ZDljMzdkNzRmYzM3NzlkLi40NGY5ZWQyNjM5YWRhYzc0NDk2OTI3ZGRiMjQwMDBhNjVlOWEw
NTFmIDEwMDY0NAotLS0gYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCisrKyBiL1Rvb2xzL2d0
ay9qaGJ1aWxkLm1vZHVsZXMKQEAgLTEyMCwxMCArMTIwLDkgQEAKICAgICA8ZGVwZW5kZW5jaWVz
PgogICAgICAgPGRlcCBwYWNrYWdlPSJsaWJmZmkiLz4KICAgICA8L2RlcGVuZGVuY2llcz4KLSAg
ICA8YnJhbmNoIG1vZHVsZT0iL3B1Yi9HTk9NRS9zb3VyY2VzL2dsaWIvMi4zMS9nbGliLTIuMzEu
Mi50YXIueHoiIHZlcnNpb249IjIuMzEuMiIKKyAgICA8YnJhbmNoIG1vZHVsZT0iL3B1Yi9HTk9N
RS9zb3VyY2VzL2dsaWIvMi4zMS9nbGliLTIuMzEuOC50YXIueHoiIHZlcnNpb249IjIuMzEuOCIK
ICAgICAgICAgICAgIHJlcG89ImZ0cC5nbm9tZS5vcmciCi0gICAgICAgICAgICBoYXNoPSJzaGEy
NTY6MTlkNzkyMTY3MWE0ODdjM2M1NzU5YTU3ZGY3Yjg1MDhhZmRiYWRkNzc2NGQ2MmE0N2E4MmZm
ZjdiMzk5MDMyYiIKLSAgICAgICAgICAgIG1kNXN1bT0iMWNiZGYzMTRkN2M4NzkxNmEwYzNkY2U4
M2FjMDI4NWYiLz4KKyAgICAgICAgICAgIGhhc2g9InNoYTI1NjoxY2UzZDI3NTE4OTAwMGUxYzUw
ZTkyZWZjZGI2NDQ3YmMyNjBiMWU1YzQxNjk5YjdhMTk1OWUzZTE5MjhmYmFhIi8+CiAgIDwvYXV0
b3Rvb2xzPgogCiAgIDxhdXRvdG9vbHMgaWQ9ImdsaWItbmV0d29ya2luZyI+CkBAIC0xNTIsOSAr
MTUxLDkgQEAKICAgICA8ZGVwZW5kZW5jaWVzPgogICAgICAgPGRlcCBwYWNrYWdlPSJnbGliLW5l
dHdvcmtpbmciLz4KICAgICA8L2RlcGVuZGVuY2llcz4KLSAgICA8YnJhbmNoIG1vZHVsZT0ibGli
c291cCIgdmVyc2lvbj0iMi4zNy4yLjErZ2l0IgorICAgIDxicmFuY2ggbW9kdWxlPSJsaWJzb3Vw
IiB2ZXJzaW9uPSIyLjM3LjkxK2dpdCIKICAgICAgICAgICAgIHJlcG89ImdpdC5nbm9tZS5vcmci
Ci0gICAgICAgICAgICB0YWc9IjVjYmZjNDhjYWY3NmNlZDJlMjhlZTA2YzllNDA1MjMyNzM2MDFk
YzYiLz4KKyAgICAgICAgICAgIHRhZz0iNTIwNTc1MTBhY2NiYTQ5Y2ZjNmQxZDBlNTIyOTIzNjhi
YTJlMGM5OSIvPgogICA8L2F1dG90b29scz4KIAogICA8YXV0b3Rvb2xzIGlkPSJmb250Y29uZmln
IiBhdXRvZ2VuLXNoPSJjb25maWd1cmUiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGViNjcyMmE3Nzg5NzQwMmI0NmNlYzFh
MzJlNzVlODA5YWJlNWFlNjcuLjkxZGFhZDQ1OWNkYjEzNTg5OWExOTQyNjc3YTY2OWYyZTY4MWRh
NDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMy0wMiAgTWFydGluIFJvYmluc29uICA8
bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW3NvdXBdIENyYXNoIHdoaWxlIGxvYWRp
bmcgaHR0cDovL3d3dy5qdXNjby5jbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjgyMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qt
c3luYy1uby10aW1lcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXN5bmMtbm8tdGltZXJzLmh0bWw6IEFkZGVk
LgorCiAyMDEyLTAzLTAyICBOb2VsIEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KIAog
ICAgICAgICA6ZW1wdHkgc2hvdWxkIGFwcGx5IHRvIGVsZW1lbnRzIG1hZGUgZW1wdHkgdmlhIHBh
Z2UgZHluYW1pY3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QveG1saHR0cHJlcXVlc3Qtc3luYy1uby10aW1lcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRp
bWVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI3OGRhMGFhOTljOTQ3ZTU2ZTI5MGJhZmNi
ZjdhNzA1Y2VhNmFhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtc3luYy1uby10aW1lcnMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNCBAQAorVGVzdCBmb3I6IGJ1ZyA2ODIzODogW3NvdXBdIENyYXNoIHdoaWxl
IGxvYWRpbmcgaHR0cDovL3d3dy5qdXNjby5jbiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBXZWJD
b3JlIHRpbWVycyBkbyBub3QgZmlyZSBkdXJpbmcgc3luY2hyb25vdXMgWE1MSHR0cFJlcXVlc3Rz
LgorCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QveG1saHR0cHJlcXVlc3Qtc3luYy1uby10aW1lcnMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtc3luYy1uby10aW1lcnMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MTZhNGE3YjIxNWRlOGIzMzUyMDM4OTQ5Zjk4ZmUwZTgzZjdhZjgyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94
bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1s
Pjxib2R5PgorCis8cD4gVGVzdCBmb3I6IDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02ODIzOCI+YnVnIDY4MjM4PGE+OiBbc291cF0gQ3Jhc2ggd2hpbGUg
bG9hZGluZyBodHRwOi8vd3d3Lmp1c2NvLmNuPC9hPiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBX
ZWJDb3JlIHRpbWVycyBkbyBub3QgZmlyZSBkdXJpbmcgc3luY2hyb25vdXMgWE1MSHR0cFJlcXVl
c3RzLgorPHByZSBpZD1sb2c+PC9wcmU+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiXG4iOwor
fQorCit2YXIgdGltZXJFdmVyRmlyZWQgPSBmYWxzZTsKK3ZhciBpbnRlcnZhbElkID0gc2V0SW50
ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgdGltZXJFdmVyRmlyZWQgPSB0cnVlOworfSwgMTApOwor
Cit0cnkgeworICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICByZXEub3Bl
bigiR0VUIiwgInJlc291cmNlcy9kb3dubG9hZC13aXRoLWRlbGF5LnBocD9pdGVyYXRpb249NSZk
ZWxheT01MCIsIGZhbHNlKTsKKyAgICByZXEuc2VuZChudWxsKTsKK30gY2F0Y2ggKGV4KSB7Cisg
ICAgbG9nKGV4KTsKK30KKworY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTsKK2xvZyh0aW1lckV2
ZXJGaXJlZCA/ICJGQUlMIiA6ICJQQVNTIik7Cis8L3NjcmlwdD4KKworPC9ib2R5PjwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyMWE2MTA4ZmY2NGEzYzIx
ZjExZDA1ODg0M2Y3ODk0YTJmN2NjY2IwLi4zMGY5NzAxYzBkM2E2YzU3YjcxOTRkNWNmZjMwOGQy
YWUzY2YzYTUzIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTItMDMtMDIgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtzb3VwXSBDcmFzaCB3aGlsZSBsb2FkaW5nIGh0dHA6Ly93d3cuanVz
Y28uY24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4
MjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBj
b25maWd1cmUuYWM6IEJ1bXBlZCB0aGUgbGlic291cCBkZXBlbmRlbmN5IHRvIDIuMzcuOTAuCisK
IDIwMTItMDMtMDIgIEFsZXhhbmRyZSBSb3N0b3Z0c2V2ICA8dGV0cm9taW5vQGdlbnRvby5vcmc+
CiAKICAgICAgICAgTWFrZSB3ZWJraXQtZ3RrIHRyYW5zbGF0aW9ucyByZXNwZWN0IExJTkdVQVMK
ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA4ZjhiMmU5NmZl
NjJhODA4MmQ4NTA0MTkxOTU4OWVhZDEyMjRhOTllLi43ZWNjNDI1ZmUwMGI3ODk2MGJmOTVjYjgy
M2I2MzM1YTA0ODI1ZDcxIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJl
LmFjCkBAIC0zNzgsNyArMzc4LDcgQEAgQ0FJUk9fUkVRVUlSRURfVkVSU0lPTj0xLjEwCiBGT05U
Q09ORklHX1JFUVVJUkVEX1ZFUlNJT049Mi40CiBGUkVFVFlQRTJfUkVRVUlSRURfVkVSU0lPTj05
LjAKIEdMSUJfUkVRVUlSRURfVkVSU0lPTj0yLjMxLjIKLUxJQlNPVVBfUkVRVUlSRURfVkVSU0lP
Tj0yLjM3LjIuMQorTElCU09VUF9SRVFVSVJFRF9WRVJTSU9OPTIuMzcuOTAKIExJQlhNTF9SRVFV
SVJFRF9WRVJTSU9OPTIuNgogUEFOR09fUkVRVUlSRURfVkVSU0lPTj0xLjIxLjAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130289</attachid>
            <date>2012-03-05 22:18:29 -0800</date>
            <delta_ts>2012-04-06 10:00:05 -0700</delta_ts>
            <desc>Patch fixing segfault</desc>
            <filename>bug-68238-20120305221828.patch</filename>
            <type>text/plain</type>
            <size>13888</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5ODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJkMDUwYjM5MDMxNjUw
Mzk0ZDA3OWMzMjUzZWQxNTIwNWQ4MTU0OC4uNjJlMDU5MWRiMzM1MDQ0ZWUzZjVjMzk5MDJkYzFj
ZWY2MTRjZDcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTA1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbc291cF0gQ3Jh
c2ggd2hpbGUgbG9hZGluZyBodHRwOi8vd3d3Lmp1c2NvLmNuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODIzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IFBoaWxpcHBlIE5vcm1hbmQuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy5odG1sCisKKyAgICAgICAgV2hlbiBy
dW5uaW5nIHN5bmNocm9ub3VzIFhNTEh0dHBSZXF1ZXN0cywgcHVzaCBhIG5ldyBpbm5lciB0aHJl
YWQgZGVmYXVsdAorICAgICAgICBjb250ZXh0LCBzbyB0aGF0IG90aGVyIHNvdXJjZXMgZnJvbSB0
aW1lcnMgYW5kIG5ldHdvcmsgYWN0aXZpdHkgZG8gbm90IHJ1bi4KKyAgICAgICAgVGhpcyB3aWxs
IG1ha2Ugc3luY2hyb25vdXMgcmVxdWVzdHMgdHJ1bHkgc3luY2hyb25vdXMgd2l0aCB0aGUgcmVz
dCBvZgorICAgICAgICBXZWJDb3JlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlU3luY2hyb25vdXNMb2Fk
ZXIpOiBDbGVhbiB1cCB0aGUgbWV0aG9kIGRlZmluaXRpb25zIGEgYml0IGJ5IHdyaXRpbmcgdGhl
bSBpbmxpbmUuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6Oldl
YkNvcmVTeW5jaHJvbm91c0xvYWRlcik6IFB1c2ggYSBuZXcgdGhyZWFkIGRlZmF1bHQKKyAgICAg
ICAgY29udGV4dCB0byBwcmV2ZW50IG90aGVyIHNvdXJjZXMgZnJvbSBydW5uaW5nLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyOjp+V2ViQ29yZVN5bmNocm9ub3Vz
TG9hZGVyKTogUG9wIHRoZSBpbm5lciB0aHJlYWQgZGVmYXVsdCBjb250ZXh0LgorICAgICAgICAo
V2ViQ29yZTo6Y2xvc2VDYWxsYmFjayk6IElmIHRoZSBjbGllbnQgaXMgc3luY2hyb25vdXMgY2Fs
bCBkaWRGaW5pc2hMb2FkaW5nIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OnJlYWRDYWxsYmFjayk6
IE9ubHkgY2FsbCBkaWRGaW5pc2hMb2FkaW5nIGlmIHRoZSBjbGllbnQgaXNuJ3Qgc3luY2hyb25v
dXMuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24pOiBB
Y3RpdmF0ZSB1c2UtdGhyZWFkLWNvbnRleHQgc28gdGhhdCB0aGUgc291cCBzZXNzaW9uCisgICAg
ICAgIHJlc3BlY3RzIHRoZSBpbm5lciB0aHJlYWQgY29udGV4dC4KKyAgICAgICAgKFJlc291cmNl
SGFuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50Ojpp
c1N5bmNocm9ub3VzQ2xpZW50KTogQWRkZWQgdGhpcyB2aXJ0dWFsIG1ldGhvZC4KKwogMjAxMi0w
My0wNSAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtG
b3Jtc10gSFRNTEZpZWxkU2V0Rm9ybXMuaWRsIGRvZXNuJ3QgaGF2ZSBuYW1lIGF0dHJpYnV0ZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuaAppbmRleCBiZWZiY2NmYTBjMTJmYTlhMWZhZGRhNmQwZDZiOGQyNzY2OWFjZGQz
Li5kMzhmNDhjMjgyNTRkODk4NzRlNzgxMzc0MGY1NTU2MjJkN2UwZGY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
CkBAIC0xMDksNiArMTA5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShCTE9C
KQogICAgICAgICB2aXJ0dWFsIEFzeW5jRmlsZVN0cmVhbSogY3JlYXRlQXN5bmNGaWxlU3RyZWFt
KEZpbGVTdHJlYW1DbGllbnQqKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKKyNpZiBVU0UoU09VUCkK
KyAgICAgICAgdmlydHVhbCBib29sIGlzU3luY2hyb25vdXNDbGllbnQoKSB7IHJldHVybiBmYWxz
ZTsgfQorI2VuZGlmCiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCA5MmM2
NmU1NGNiYTkzNTk2NDIyN2JlNDg0MWEwNWFkMDM2YThjOTBlLi5mOTlkODczYWIwNzc4OTNiMDk5
MDMzODBiOWZiNjMwMDIwMDRlYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtNzIsMTUg
KzcyLDU5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdlYkNvcmVTeW5jaHJvbm91c0xv
YWRlciA6IHB1YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyKTsKIHB1YmxpYzoKLSAgICBXZWJDb3JlU3lu
Y2hyb25vdXNMb2FkZXIoUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UgJiwgVmVjdG9y
PGNoYXI+Jik7Ci0gICAgfldlYkNvcmVTeW5jaHJvbm91c0xvYWRlcigpOwogCi0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBjaGFyKiwgaW50LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIC8qZmluaXNo
VGltZSovKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKKyAgICBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIoUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRh
dGEpCisgICAgICAgIDogbV9lcnJvcihlcnJvcikKKyAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3Bv
bnNlKQorICAgICAgICAsIG1fZGF0YShkYXRhKQorICAgICAgICAsIG1fZmluaXNoZWQoZmFsc2Up
CisgICAgeworICAgICAgICAvLyBXZSBkb24ndCB3YW50IGFueSB0aW1lcnMgdG8gZmlyZSB3aGls
ZSB3ZSBhcmUgZG9pbmcgb3VyIHN5bmNocm9ub3VzIGxvYWQKKyAgICAgICAgLy8gc28gd2UgcmVw
bGFjZSB0aGUgdGhyZWFkIGRlZmF1bHQgbWFpbiBjb250ZXh0LiBUaGUgbWFpbiBsb29wIGl0ZXJh
dGlvbnMKKyAgICAgICAgLy8gd2lsbCBvbmx5IHByb2Nlc3MgR1NvdXJjZXMgYXNzb2NpYXRlZCB3
aXRoIHRoaXMgaW5uZXIgY29udGV4dC4KKyAgICAgICAgR1JlZlB0cjxHTWFpbkNvbnRleHQ+IGlu
bmVyTWFpbkNvbnRleHQgPSBhZG9wdEdSZWYoZ19tYWluX2NvbnRleHRfbmV3KCkpOworICAgICAg
ICBnX21haW5fY29udGV4dF9wdXNoX3RocmVhZF9kZWZhdWx0KGlubmVyTWFpbkNvbnRleHQuZ2V0
KCkpOworICAgICAgICBtX21haW5Mb29wID0gZ19tYWluX2xvb3BfbmV3KGlubmVyTWFpbkNvbnRl
eHQuZ2V0KCksIGZhbHNlKTsKKyAgICB9CisKKyAgICB+V2ViQ29yZVN5bmNocm9ub3VzTG9hZGVy
KCkKKyAgICB7CisgICAgICAgIGdfbWFpbl9jb250ZXh0X3BvcF90aHJlYWRfZGVmYXVsdChnX21h
aW5fY29udGV4dF9nZXRfdGhyZWFkX2RlZmF1bHQoKSk7CisgICAgfQorCisgICAgdmlydHVhbCBi
b29sIGlzU3luY2hyb25vdXNDbGllbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgbV9y
ZXNwb25zZSA9IHJlc3BvbnNlOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGludCkK
KyAgICB7CisgICAgICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSkK
KyAgICB7CisgICAgICAgIGlmIChnX21haW5fbG9vcF9pc19ydW5uaW5nKG1fbWFpbkxvb3AuZ2V0
KCkpKQorICAgICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wLmdldCgpKTsKKyAg
ICAgICAgbV9maW5pc2hlZCA9IHRydWU7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCisg
ICAgeworICAgICAgICBtX2Vycm9yID0gZXJyb3I7CisgICAgICAgIGRpZEZpbmlzaExvYWRpbmco
aGFuZGxlLCAwKTsKKyAgICB9CiAKLSAgICB2b2lkIHJ1bigpOworICAgIHZvaWQgcnVuKCkKKyAg
ICB7CisgICAgICAgIGlmICghbV9maW5pc2hlZCkKKyAgICAgICAgICAgIGdfbWFpbl9sb29wX3J1
bihtX21haW5Mb29wLmdldCgpKTsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgUmVzb3VyY2VFcnJv
ciYgbV9lcnJvcjsKQEAgLTkwLDQ3ICsxMzQsNiBAQCBwcml2YXRlOgogICAgIEdSZWZQdHI8R01h
aW5Mb29wPiBtX21haW5Mb29wOwogfTsKIAotV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyOjpXZWJD
b3JlU3luY2hyb25vdXNMb2FkZXIoUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCi0gICAgOiBtX2Vycm9yKGVycm9yKQot
ICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKLSAgICAsIG1fZGF0YShkYXRhKQotICAgICwgbV9m
aW5pc2hlZChmYWxzZSkKLXsKLSAgICBtX21haW5Mb29wID0gYWRvcHRHUmVmKGdfbWFpbl9sb29w
X25ldygwLCBmYWxzZSkpOwotfQotCi1XZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6On5XZWJDb3Jl
U3luY2hyb25vdXNMb2FkZXIoKQotewotfQotCi12b2lkIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCi17Ci0gICAgbV9yZXNwb25zZSA9IHJlc3BvbnNlOwotfQotCi12b2lk
IFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQpCi17Ci0gICAgbV9kYXRhLmFwcGVu
ZChkYXRhLCBsZW5ndGgpOwotfQotCi12b2lkIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSkKLXsKLSAgICBnX21haW5fbG9v
cF9xdWl0KG1fbWFpbkxvb3AuZ2V0KCkpOwotICAgIG1fZmluaXNoZWQgPSB0cnVlOwotfQotCi12
b2lkIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSAgICBtX2Vycm9yID0gZXJyb3I7
Ci0gICAgZGlkRmluaXNoTG9hZGluZyhoYW5kbGUsIDApOwotfQotCi12b2lkIFdlYkNvcmVTeW5j
aHJvbm91c0xvYWRlcjo6cnVuKCkKLXsKLSAgICBpZiAoIW1fZmluaXNoZWQpCi0gICAgICAgIGdf
bWFpbl9sb29wX3J1bihtX21haW5Mb29wLmdldCgpKTsKLX0KLQogc3RhdGljIHZvaWQgY2xlYW51
cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKFJlc291cmNlSGFuZGxlKiwgYm9vbCBpc0Rlc3Ryb3lpbmcp
Owogc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0
KiwgZ3BvaW50ZXIpOwogc3RhdGljIHZvaWQgcmVhZENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNS
ZXN1bHQqLCBncG9pbnRlcik7CkBAIC02MzMsOSArNjM2LDE0IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0CiBzdGF0aWMgdm9pZCBjbG9zZUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5j
UmVzdWx0KiByZXMsIGdwb2ludGVyIGRhdGEpCiB7CiAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxl
PiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwotCiAgICAgUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKwogICAgIGdf
aW5wdXRfc3RyZWFtX2Nsb3NlX2ZpbmlzaChkLT5tX2lucHV0U3RyZWFtLmdldCgpLCByZXMsIDAp
OworCisgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IGhhbmRsZS0+Y2xpZW50KCk7
CisgICAgaWYgKGNsaWVudCAmJiBjbGllbnQtPmlzU3luY2hyb25vdXNDbGllbnQoKSkKKyAgICAg
ICAgY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGhhbmRsZS5nZXQoKSwgMCk7CisKICAgICBjbGVh
bnVwU291cFJlcXVlc3RPcGVyYXRpb24oaGFuZGxlLmdldCgpKTsKIH0KIApAQCAtNjY2LDggKzY3
NCwxNCBAQCBzdGF0aWMgdm9pZCByZWFkQ2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNS
ZXN1bHQqIGFzeW5jUmVzdWx0LCBncG9pbnRlciBkYQogCiAgICAgaWYgKCFieXRlc1JlYWQpIHsK
ICAgICAgICAgLy8gV2UgaW5mb3JtIFdlYkNvcmUgb2YgbG9hZCBjb21wbGV0aW9uIG5vdyBpbnN0
ZWFkIG9mIHdhaXRpbmcgZm9yIHRoZSBpbnB1dAotICAgICAgICAvLyBzdHJlYW0gdG8gY2xvc2Ug
YmVjYXVzZSB0aGUgaW5wdXQgc3RyZWFtIGlzIGNsb3NlZCBhc3luY2hyb25vdXNseS4KLSAgICAg
ICAgY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGhhbmRsZS5nZXQoKSwgMCk7CisgICAgICAgIC8v
IHN0cmVhbSB0byBjbG9zZSBiZWNhdXNlIHRoZSBpbnB1dCBzdHJlYW0gaXMgY2xvc2VkIGFzeW5j
aHJvbm91c2x5LiBJZiB0aGlzCisgICAgICAgIC8vIGlzIGEgc3luY2hyb25vdXMgcmVxdWVzdCwg
d2Ugd2FpdCB1bnRpbCB0aGUgY2xvc2VDYWxsYmFjaywgYmVjYXVzZSB3ZSBkb24ndAorICAgICAg
ICAvLyB3YW50IHRvIGhhbHQgdGhlIGludGVybmFsIG1haW4gbG9vcCBiZWZvcmUgdGhlIGlucHV0
IHN0cmVhbSBjbG9zZXMuCisgICAgICAgIGlmIChjbGllbnQgJiYgIWNsaWVudC0+aXNTeW5jaHJv
bm91c0NsaWVudCgpKSB7CisgICAgICAgICAgICBjbGllbnQtPmRpZEZpbmlzaExvYWRpbmcoaGFu
ZGxlLmdldCgpLCAwKTsKKyAgICAgICAgICAgIGhhbmRsZS0+c2V0Q2xpZW50KDApOyAvLyBVbnNl
dCB0aGUgY2xpZW50IHNvIHRoYXQgd2UgZG8gbm90IHRyeSB0byBhY2Nlc3MgdGgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGllbnQgaW4gdGhlIGNsb3NlQ2FsbGJhY2su
CisgICAgICAgIH0KICAgICAgICAgZ19pbnB1dF9zdHJlYW1fY2xvc2VfYXN5bmMoZC0+bV9pbnB1
dFN0cmVhbS5nZXQoKSwgR19QUklPUklUWV9ERUZBVUxULCAwLCBjbG9zZUNhbGxiYWNrLCBoYW5k
bGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzM5LDYgKzc1Myw3IEBAIFNv
dXBTZXNzaW9uKiBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKQogICAgICAgICAgICAg
ICAgICAgICAgU09VUF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZUEUsIFNPVVBfVFlQRV9DT05U
RU5UX0RFQ09ERVIsCiAgICAgICAgICAgICAgICAgICAgICBTT1VQX1NFU1NJT05fQUREX0ZFQVRV
UkVfQllfVFlQRSwgU09VUF9UWVBFX0NPTlRFTlRfU05JRkZFUiwKICAgICAgICAgICAgICAgICAg
ICAgIFNPVVBfU0VTU0lPTl9BRERfRkVBVFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVfUFJPWFlfUkVT
T0xWRVJfREVGQVVMVCwKKyAgICAgICAgICAgICAgICAgICAgIFNPVVBfU0VTU0lPTl9VU0VfVEhS
RUFEX0NPTlRFWFQsIFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NmZm
YmI5YWYxOWQ3MDUxZTc2NTExNTBkZDQ3NTAzY2MzOWQxMDExLi5lODBmYWVkZmFlZWY3MjFjNWMy
MDQ3ZWIyMzQ2ZWNiNjU2N2Y1ZTIyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDMtMDUgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtzb3VwXSBDcmFzaCB3aGls
ZSBsb2FkaW5nIGh0dHA6Ly93d3cuanVzY28uY24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlw
cGUgTm9ybWFuZC4KKworICAgICAgICAqIGd0ay9qaGJ1aWxkLm1vZHVsZXM6IEJ1bXBlZCB0aGUg
bGlic291cCBhbmQgZ2xpYiBkZXBlbmRlbmNpZXMKKyAgICAgICAgaW4gdGhlIGpoYnVpbGQgZmls
ZS4KKwogMjAxMi0wMy0wNSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVXBkYXRlIEphdmFTY3JpcHRDb3JlIGZpbGVzIHRvIHVzZSBmdWxseS1xdWFsaWZpZWQgV1RG
IGluY2x1ZGUgcGF0aApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcyBiL1Rv
b2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKaW5kZXggZTBjOWUzOGNkN2YzMDM5ODFmMGYxM2M1NmQ5
YzM3ZDc0ZmMzNzc5ZC4uNDRmOWVkMjYzOWFkYWM3NDQ5NjkyN2RkYjI0MDAwYTY1ZTlhMDUxZiAx
MDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcworKysgYi9Ub29scy9ndGsvamhi
dWlsZC5tb2R1bGVzCkBAIC0xMjAsMTAgKzEyMCw5IEBACiAgICAgPGRlcGVuZGVuY2llcz4KICAg
ICAgIDxkZXAgcGFja2FnZT0ibGliZmZpIi8+CiAgICAgPC9kZXBlbmRlbmNpZXM+Ci0gICAgPGJy
YW5jaCBtb2R1bGU9Ii9wdWIvR05PTUUvc291cmNlcy9nbGliLzIuMzEvZ2xpYi0yLjMxLjIudGFy
Lnh6IiB2ZXJzaW9uPSIyLjMxLjIiCisgICAgPGJyYW5jaCBtb2R1bGU9Ii9wdWIvR05PTUUvc291
cmNlcy9nbGliLzIuMzEvZ2xpYi0yLjMxLjgudGFyLnh6IiB2ZXJzaW9uPSIyLjMxLjgiCiAgICAg
ICAgICAgICByZXBvPSJmdHAuZ25vbWUub3JnIgotICAgICAgICAgICAgaGFzaD0ic2hhMjU2OjE5
ZDc5MjE2NzFhNDg3YzNjNTc1OWE1N2RmN2I4NTA4YWZkYmFkZDc3NjRkNjJhNDdhODJmZmY3YjM5
OTAzMmIiCi0gICAgICAgICAgICBtZDVzdW09IjFjYmRmMzE0ZDdjODc5MTZhMGMzZGNlODNhYzAy
ODVmIi8+CisgICAgICAgICAgICBoYXNoPSJzaGEyNTY6MWNlM2QyNzUxODkwMDBlMWM1MGU5MmVm
Y2RiNjQ0N2JjMjYwYjFlNWM0MTY5OWI3YTE5NTllM2UxOTI4ZmJhYSIvPgogICA8L2F1dG90b29s
cz4KIAogICA8YXV0b3Rvb2xzIGlkPSJnbGliLW5ldHdvcmtpbmciPgpAQCAtMTUyLDkgKzE1MSw5
IEBACiAgICAgPGRlcGVuZGVuY2llcz4KICAgICAgIDxkZXAgcGFja2FnZT0iZ2xpYi1uZXR3b3Jr
aW5nIi8+CiAgICAgPC9kZXBlbmRlbmNpZXM+Ci0gICAgPGJyYW5jaCBtb2R1bGU9ImxpYnNvdXAi
IHZlcnNpb249IjIuMzcuMi4xK2dpdCIKKyAgICA8YnJhbmNoIG1vZHVsZT0ibGlic291cCIgdmVy
c2lvbj0iMi4zNy45MStnaXQiCiAgICAgICAgICAgICByZXBvPSJnaXQuZ25vbWUub3JnIgotICAg
ICAgICAgICAgdGFnPSI1Y2JmYzQ4Y2FmNzZjZWQyZTI4ZWUwNmM5ZTQwNTIzMjczNjAxZGM2Ii8+
CisgICAgICAgICAgICB0YWc9IjUyMDU3NTEwYWNjYmE0OWNmYzZkMWQwZTUyMjkyMzY4YmEyZTBj
OTkiLz4KICAgPC9hdXRvdG9vbHM+CiAKICAgPGF1dG90b29scyBpZD0iZm9udGNvbmZpZyIgYXV0
b2dlbi1zaD0iY29uZmlndXJlIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiNjA1NWZiODcxZWZlMWQxYWIwNmFiYWExMjE4
YjZkZmMxMGY2OWE0Li40NWQyNjRiNTU3OGIzMDA2YmQwMDk3NGJjMTQ1NjM4ZWNhYjIyZGQ4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDMtMDUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtzb3VwXSBDcmFzaCB3aGlsZSBsb2FkaW5nIGh0
dHA6Ly93d3cuanVzY28uY24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY4MjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlwcGUgTm9ybWFuZC4K
KworICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtc3lu
Yy1uby10aW1lcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXN5bmMtbm8tdGltZXJzLmh0bWw6IEFkZGVkLgor
CiAyMDEyLTAzLTA1ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW0Zvcm1zXSBIVE1MRmllbGRTZXRGb3Jtcy5pZGwgZG9lc24ndCBoYXZlIG5hbWUgYXR0
cmlidXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXN5bmMtbm8tdGltZXJz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjc4ZGEwYWE5OWM5NDdlNTZlMjkwYmFmY2JmN2E3
MDVjZWE2YWEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0IEBACitUZXN0IGZvcjogYnVnIDY4MjM4OiBbc291cF0gQ3Jhc2ggd2hpbGUgbG9h
ZGluZyBodHRwOi8vd3d3Lmp1c2NvLmNuIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IFdlYkNvcmUg
dGltZXJzIGRvIG5vdCBmaXJlIGR1cmluZyBzeW5jaHJvbm91cyBYTUxIdHRwUmVxdWVzdHMuCisK
K1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjkxNmE0YTdiMjE1ZGU4YjMzNTIwMzg5NDlmOThmZTBlODNmN2FmODIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0
dHByZXF1ZXN0LXN5bmMtbm8tdGltZXJzLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+PGJv
ZHk+CisKKzxwPiBUZXN0IGZvcjogPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY4MjM4Ij5idWcgNjgyMzg8YT46IFtzb3VwXSBDcmFzaCB3aGlsZSBsb2Fk
aW5nIGh0dHA6Ly93d3cuanVzY28uY248L2E+IFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IFdlYkNv
cmUgdGltZXJzIGRvIG5vdCBmaXJlIGR1cmluZyBzeW5jaHJvbm91cyBYTUxIdHRwUmVxdWVzdHMu
Cis8cHJlIGlkPWxvZz48L3ByZT4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICJcbiI7Cit9CisK
K3ZhciB0aW1lckV2ZXJGaXJlZCA9IGZhbHNlOwordmFyIGludGVydmFsSWQgPSBzZXRJbnRlcnZh
bChmdW5jdGlvbigpIHsKKyAgICB0aW1lckV2ZXJGaXJlZCA9IHRydWU7Cit9LCAxMCk7CisKK3Ry
eSB7CisgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcS5vcGVuKCJH
RVQiLCAicmVzb3VyY2VzL2Rvd25sb2FkLXdpdGgtZGVsYXkucGhwP2l0ZXJhdGlvbj01JmRlbGF5
PTUwIiwgZmFsc2UpOworICAgIHJlcS5zZW5kKG51bGwpOworfSBjYXRjaCAoZXgpIHsKKyAgICBs
b2coZXgpOworfQorCitjbGVhckludGVydmFsKGludGVydmFsSWQpOworbG9nKHRpbWVyRXZlckZp
cmVkID8gIkZBSUwiIDogIlBBU1MiKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+PC9odG1sPgpkaWZm
IC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDYxOTcwZTQ4OTYwNDQ1ZThjMThj
MTg5OTUxMzU2ZTlmNDY0NmJlZDkuLjRlOWQ4MzNkOGZkZDZkZjA5Y2QxN2QxNjk4YjQyN2VhZDdm
YWNkYWUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxMi0wMy0wNSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW3NvdXBdIENyYXNoIHdoaWxlIGxvYWRpbmcgaHR0cDovL3d3dy5qdXNjby5j
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgyMzgK
KworICAgICAgICBSZXZpZXdlZCBieSBQaGlsaXBwZSBOb3JtYW5kLgorCisgICAgICAgICogY29u
ZmlndXJlLmFjOiBCdW1wZWQgdGhlIGxpYnNvdXAgZGVwZW5kZW5jeSB0byAyLjM3LjkwLgorCiAy
MDEyLTAzLTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFBl
cmYtby1tYXRpYyBzaG91bGQgbWVtY2FjaGUgZGFzaGJvYXJkIGltYWdlcwpkaWZmIC0tZ2l0IGEv
Y29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDA1NGUxZDZiNDJlNDg3OGZjN2U4ODU4
ZjA2ODMwZDJmZWQ0N2IwNTMuLjcwMDAxNWIzMDE1NjQyM2I3MWJkZjBiZDhjYWFmZTE4NTY2MGZh
ZGEgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTM3OCw3
ICszNzgsNyBAQCBDQUlST19SRVFVSVJFRF9WRVJTSU9OPTEuMTAKIEZPTlRDT05GSUdfUkVRVUlS
RURfVkVSU0lPTj0yLjQKIEZSRUVUWVBFMl9SRVFVSVJFRF9WRVJTSU9OPTkuMAogR0xJQl9SRVFV
SVJFRF9WRVJTSU9OPTIuMzEuMgotTElCU09VUF9SRVFVSVJFRF9WRVJTSU9OPTIuMzcuMi4xCitM
SUJTT1VQX1JFUVVJUkVEX1ZFUlNJT049Mi4zNy45MAogTElCWE1MX1JFUVVJUkVEX1ZFUlNJT049
Mi42CiBQQU5HT19SRVFVSVJFRF9WRVJTSU9OPTEuMjEuMAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136038</attachid>
            <date>2012-04-06 10:00:16 -0700</date>
            <delta_ts>2012-04-09 12:28:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68238-20120406100010.patch</filename>
            <type>text/plain</type>
            <size>11022</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWNlZGU1MWIzZGMzYTZj
NzEwZGNlYzNlZTdkNGEyMjdiZTg3ZmNmMS4uNGMzZWI4NDFjMmU2ZThlNjUzZDQxZWIyM2E1N2U5
YWM4MjU5YzE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA0LTA2ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbc291cF0gQ3Jh
c2ggd2hpbGUgbG9hZGluZyBodHRwOi8vd3d3Lmp1c2NvLmNuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODIzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IFBoaWxpcHBlIE5vcm1hbmQuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy5odG1sCisKKyAgICAgICAgV2hlbiBy
dW5uaW5nIHN5bmNocm9ub3VzIFhNTEh0dHBSZXF1ZXN0cywgcHVzaCBhIG5ldyBpbm5lciB0aHJl
YWQgZGVmYXVsdAorICAgICAgICBjb250ZXh0LCBzbyB0aGF0IG90aGVyIHNvdXJjZXMgZnJvbSB0
aW1lcnMgYW5kIG5ldHdvcmsgYWN0aXZpdHkgZG8gbm90IHJ1bi4KKyAgICAgICAgVGhpcyB3aWxs
IG1ha2Ugc3luY2hyb25vdXMgcmVxdWVzdHMgdHJ1bHkgc3luY2hyb25vdXMgd2l0aCB0aGUgcmVz
dCBvZgorICAgICAgICBXZWJDb3JlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlU3luY2hyb25vdXNMb2Fk
ZXIpOiBDbGVhbiB1cCB0aGUgbWV0aG9kIGRlZmluaXRpb25zIGEgYml0IGJ5IHdyaXRpbmcgdGhl
bSBpbmxpbmUuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6Oldl
YkNvcmVTeW5jaHJvbm91c0xvYWRlcik6IFB1c2ggYSBuZXcgdGhyZWFkIGRlZmF1bHQKKyAgICAg
ICAgY29udGV4dCB0byBwcmV2ZW50IG90aGVyIHNvdXJjZXMgZnJvbSBydW5uaW5nLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyOjp+V2ViQ29yZVN5bmNocm9ub3Vz
TG9hZGVyKTogUG9wIHRoZSBpbm5lciB0aHJlYWQgZGVmYXVsdCBjb250ZXh0LgorICAgICAgICAo
V2ViQ29yZTo6Y2xvc2VDYWxsYmFjayk6IElmIHRoZSBjbGllbnQgaXMgc3luY2hyb25vdXMgY2Fs
bCBkaWRGaW5pc2hMb2FkaW5nIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OnJlYWRDYWxsYmFjayk6
IE9ubHkgY2FsbCBkaWRGaW5pc2hMb2FkaW5nIGlmIHRoZSBjbGllbnQgaXNuJ3Qgc3luY2hyb25v
dXMuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24pOiBB
Y3RpdmF0ZSB1c2UtdGhyZWFkLWNvbnRleHQgc28gdGhhdCB0aGUgc291cCBzZXNzaW9uCisgICAg
ICAgIHJlc3BlY3RzIHRoZSBpbm5lciB0aHJlYWQgY29udGV4dC4KKwogMjAxMi0wNC0wNiAgQW5k
cmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG9uIGEgc2luZ2xlIGNsaWNrIGluIFRpbWVsaW5lIG92ZXJ2aWV3LCBtYWtlIGEgbWluaW1h
bCBzZWxlY3Rpb24gY2VudGVyZWQgYXJvdW5kIGN1cnNvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApp
bmRleCAzZDExYWY0Y2Q1NDViZmMxN2FiYTY5NWMxNjdmMjFhMWViNzBlNDVlLi40NTRkMWJmNjk3
NTM1YTBkZGRhMDFiY2Y1NDUyZmZhZjRmOWJhYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApA
QCAtNjksMTggKzY5LDY2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2RlZmluZSBSRUFEX0JV
RkZFUl9TSVpFIDgxOTIKIAorc3RhdGljIGJvb2wgbG9hZGluZ1N5bmNocm9ub3VzUmVxdWVzdCA9
IGZhbHNlOworCiBjbGFzcyBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIgOiBwdWJsaWMgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvcmVTeW5jaHJv
bm91c0xvYWRlcik7CiBwdWJsaWM6Ci0gICAgV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyKFJlc291
cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlICYsIFZlY3RvcjxjaGFyPiYpOwotICAgIH5XZWJD
b3JlU3luY2hyb25vdXNMb2FkZXIoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIGlu
dCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSAvKmZpbmlzaFRpbWUqLyk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Cisg
ICAgV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyKFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQorICAgICAgICA6IG1fZXJy
b3IoZXJyb3IpCisgICAgICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKKyAgICAgICAgLCBtX2Rh
dGEoZGF0YSkKKyAgICAgICAgLCBtX2ZpbmlzaGVkKGZhbHNlKQorICAgIHsKKyAgICAgICAgLy8g
V2UgZG9uJ3Qgd2FudCBhbnkgdGltZXJzIHRvIGZpcmUgd2hpbGUgd2UgYXJlIGRvaW5nIG91ciBz
eW5jaHJvbm91cyBsb2FkCisgICAgICAgIC8vIHNvIHdlIHJlcGxhY2UgdGhlIHRocmVhZCBkZWZh
dWx0IG1haW4gY29udGV4dC4gVGhlIG1haW4gbG9vcCBpdGVyYXRpb25zCisgICAgICAgIC8vIHdp
bGwgb25seSBwcm9jZXNzIEdTb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGlubmVyIGNvbnRl
eHQuCisgICAgICAgIGxvYWRpbmdTeW5jaHJvbm91c1JlcXVlc3QgPSB0cnVlOworICAgICAgICBH
UmVmUHRyPEdNYWluQ29udGV4dD4gaW5uZXJNYWluQ29udGV4dCA9IGFkb3B0R1JlZihnX21haW5f
Y29udGV4dF9uZXcoKSk7CisgICAgICAgIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1
bHQoaW5uZXJNYWluQ29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fbWFpbkxvb3AgPSBnX21haW5f
bG9vcF9uZXcoaW5uZXJNYWluQ29udGV4dC5nZXQoKSwgZmFsc2UpOworICAgIH0KKworICAgIH5X
ZWJDb3JlU3luY2hyb25vdXNMb2FkZXIoKQorICAgIHsKKyAgICAgICAgZ19tYWluX2NvbnRleHRf
cG9wX3RocmVhZF9kZWZhdWx0KGdfbWFpbl9jb250ZXh0X2dldF90aHJlYWRfZGVmYXVsdCgpKTsK
KyAgICAgICAgbG9hZGluZ1N5bmNocm9ub3VzUmVxdWVzdCA9IGZhbHNlOworICAgIH0KKworICAg
IHZpcnR1YWwgYm9vbCBpc1N5bmNocm9ub3VzQ2xpZW50KCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKKyAgICB7Cisg
ICAgICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoLCBpbnQpCisgICAgeworICAgICAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cisg
ICAgfQogCi0gICAgdm9pZCBydW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSkKKyAgICB7CisgICAgICAgIGlmIChnX21haW5fbG9v
cF9pc19ydW5uaW5nKG1fbWFpbkxvb3AuZ2V0KCkpKQorICAgICAgICAgICAgZ19tYWluX2xvb3Bf
cXVpdChtX21haW5Mb29wLmdldCgpKTsKKyAgICAgICAgbV9maW5pc2hlZCA9IHRydWU7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCisgICAgeworICAgICAgICBtX2Vycm9yID0gZXJyb3I7
CisgICAgICAgIGRpZEZpbmlzaExvYWRpbmcoaGFuZGxlLCAwKTsKKyAgICB9CisKKyAgICB2b2lk
IHJ1bigpCisgICAgeworICAgICAgICBpZiAoIW1fZmluaXNoZWQpCisgICAgICAgICAgICBnX21h
aW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7CisgICAgfQogCiBwcml2YXRlOgogICAgIFJl
c291cmNlRXJyb3ImIG1fZXJyb3I7CkBAIC05MCw0NyArMTM4LDYgQEAgcHJpdmF0ZToKICAgICBH
UmVmUHRyPEdNYWluTG9vcD4gbV9tYWluTG9vcDsKIH07CiAKLVdlYkNvcmVTeW5jaHJvbm91c0xv
YWRlcjo6V2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyKFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQotICAgIDogbV9lcnJv
cihlcnJvcikKLSAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCi0gICAgLCBtX2RhdGEoZGF0YSkK
LSAgICAsIG1fZmluaXNoZWQoZmFsc2UpCi17Ci0gICAgbV9tYWluTG9vcCA9IGFkb3B0R1JlZihn
X21haW5fbG9vcF9uZXcoMCwgZmFsc2UpKTsKLX0KLQotV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVy
Ojp+V2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyKCkKLXsKLX0KLQotdm9pZCBXZWJDb3JlU3luY2hy
b25vdXNMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsK
LX0KLQotdm9pZCBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50KQotewotICAgIG1f
ZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLX0KLQotdm9pZCBXZWJDb3JlU3luY2hyb25vdXNM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpCi17Ci0gICAg
Z19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wLmdldCgpKTsKLSAgICBtX2ZpbmlzaGVkID0gdHJ1
ZTsKLX0KLQotdm9pZCBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OmRpZEZhaWwoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0gICAgbV9lcnJv
ciA9IGVycm9yOwotICAgIGRpZEZpbmlzaExvYWRpbmcoaGFuZGxlLCAwKTsKLX0KLQotdm9pZCBX
ZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OnJ1bigpCi17Ci0gICAgaWYgKCFtX2ZpbmlzaGVkKQot
ICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7Ci19Ci0KIHN0YXRpYyB2
b2lkIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihSZXNvdXJjZUhhbmRsZSosIGJvb2wgaXNE
ZXN0cm95aW5nKTsKIHN0YXRpYyB2b2lkIHNlbmRSZXF1ZXN0Q2FsbGJhY2soR09iamVjdCosIEdB
c3luY1Jlc3VsdCosIGdwb2ludGVyKTsKIHN0YXRpYyB2b2lkIHJlYWRDYWxsYmFjayhHT2JqZWN0
KiwgR0FzeW5jUmVzdWx0KiwgZ3BvaW50ZXIpOwpAQCAtNjM0LDkgKzY0MSwxNCBAQCB2b2lkIFJl
c291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdAogc3RhdGljIHZvaWQgY2xvc2VDYWxsYmFjayhHT2JqZWN0KiBzb3Vy
Y2UsIEdBc3luY1Jlc3VsdCogcmVzLCBncG9pbnRlciBkYXRhKQogewogICAgIFJlZlB0cjxSZXNv
dXJjZUhhbmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihkYXRhKTsK
LQogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7
CisKICAgICBnX2lucHV0X3N0cmVhbV9jbG9zZV9maW5pc2goZC0+bV9pbnB1dFN0cmVhbS5nZXQo
KSwgcmVzLCAwKTsKKworICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQgPSBoYW5kbGUt
PmNsaWVudCgpOworICAgIGlmIChjbGllbnQgJiYgbG9hZGluZ1N5bmNocm9ub3VzUmVxdWVzdCkK
KyAgICAgICAgY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGhhbmRsZS5nZXQoKSwgMCk7CisKICAg
ICBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24oaGFuZGxlLmdldCgpKTsKIH0KIApAQCAtNjY3
LDggKzY3OSwxNCBAQCBzdGF0aWMgdm9pZCByZWFkQ2FsbGJhY2soR09iamVjdCogc291cmNlLCBH
QXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0LCBncG9pbnRlciBkYQogCiAgICAgaWYgKCFieXRlc1Jl
YWQpIHsKICAgICAgICAgLy8gV2UgaW5mb3JtIFdlYkNvcmUgb2YgbG9hZCBjb21wbGV0aW9uIG5v
dyBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIHRoZSBpbnB1dAotICAgICAgICAvLyBzdHJlYW0gdG8g
Y2xvc2UgYmVjYXVzZSB0aGUgaW5wdXQgc3RyZWFtIGlzIGNsb3NlZCBhc3luY2hyb25vdXNseS4K
LSAgICAgICAgY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGhhbmRsZS5nZXQoKSwgMCk7CisgICAg
ICAgIC8vIHN0cmVhbSB0byBjbG9zZSBiZWNhdXNlIHRoZSBpbnB1dCBzdHJlYW0gaXMgY2xvc2Vk
IGFzeW5jaHJvbm91c2x5LiBJZiB0aGlzCisgICAgICAgIC8vIGlzIGEgc3luY2hyb25vdXMgcmVx
dWVzdCwgd2Ugd2FpdCB1bnRpbCB0aGUgY2xvc2VDYWxsYmFjaywgYmVjYXVzZSB3ZSBkb24ndAor
ICAgICAgICAvLyB3YW50IHRvIGhhbHQgdGhlIGludGVybmFsIG1haW4gbG9vcCBiZWZvcmUgdGhl
IGlucHV0IHN0cmVhbSBjbG9zZXMuCisgICAgICAgIGlmIChjbGllbnQgJiYgIWxvYWRpbmdTeW5j
aHJvbm91c1JlcXVlc3QpIHsKKyAgICAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoTG9hZGluZyho
YW5kbGUuZ2V0KCksIDApOworICAgICAgICAgICAgaGFuZGxlLT5zZXRDbGllbnQoMCk7IC8vIFVu
c2V0IHRoZSBjbGllbnQgc28gdGhhdCB3ZSBkbyBub3QgdHJ5IHRvIGFjY2VzcyB0aAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsaWVudCBpbiB0aGUgY2xvc2VDYWxsYmFj
ay4KKyAgICAgICAgfQogICAgICAgICBnX2lucHV0X3N0cmVhbV9jbG9zZV9hc3luYyhkLT5tX2lu
cHV0U3RyZWFtLmdldCgpLCBHX1BSSU9SSVRZX0RFRkFVTFQsIDAsIGNsb3NlQ2FsbGJhY2ssIGhh
bmRsZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03NDAsNiArNzU4LDcgQEAg
U291cFNlc3Npb24qIFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpCiAgICAgICAgICAg
ICAgICAgICAgICBTT1VQX1NFU1NJT05fQUREX0ZFQVRVUkVfQllfVFlQRSwgU09VUF9UWVBFX0NP
TlRFTlRfREVDT0RFUiwKICAgICAgICAgICAgICAgICAgICAgIFNPVVBfU0VTU0lPTl9BRERfRkVB
VFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVfQ09OVEVOVF9TTklGRkVSLAogICAgICAgICAgICAgICAg
ICAgICAgU09VUF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZUEUsIFNPVVBfVFlQRV9QUk9YWV9S
RVNPTFZFUl9ERUZBVUxULAorICAgICAgICAgICAgICAgICAgICAgU09VUF9TRVNTSU9OX1VTRV9U
SFJFQURfQ09OVEVYVCwgVFJVRSwKICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDYwYzA3YTMwNjhmYjc3MzdmNjVlZWQ1ZWM0YmRmNjRiYjE5NzE0ODUuLjYyZTJj
MTA1ZmVjNGJjMmQwNWVkYTQ1ZTUwNjc4NDUyNTBhMDg2OTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxMi0wNC0wNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW3NvdXBdIENyYXNoIHdoaWxlIGxvYWRpbmcgaHR0cDovL3d3dy5qdXNjby5jbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgyMzgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBQaGlsaXBwZSBOb3JtYW5kLgorCisgICAgICAgICogaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0
cHJlcXVlc3Qtc3luYy1uby10aW1lcnMuaHRtbDogQWRkZWQuCisKIDIwMTItMDQtMDYgIFN0ZXBo
ZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5kZXJTVkdS
b290IHNob3VsZCBpbmhlcml0IGZyb20gUmVuZGVyUmVwbGFjZWQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtc3luYy1uby10
aW1lcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmI3OGRhMGFhOTljOTQ3ZTU2ZTI5MGJhZmNiZjdhNzA1Y2VhNmFhMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qt
c3luYy1uby10aW1lcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGVzdCBmb3I6IGJ1
ZyA2ODIzODogW3NvdXBdIENyYXNoIHdoaWxlIGxvYWRpbmcgaHR0cDovL3d3dy5qdXNjby5jbiBU
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBXZWJDb3JlIHRpbWVycyBkbyBub3QgZmlyZSBkdXJpbmcg
c3luY2hyb25vdXMgWE1MSHR0cFJlcXVlc3RzLgorCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtc3luYy1uby10
aW1lcnMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0
cHJlcXVlc3Qtc3luYy1uby10aW1lcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTZhNGE3YjIxNWRlOGIz
MzUyMDM4OTQ5Zjk4ZmUwZTgzZjdhZjgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy5o
dG1sCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPjxib2R5PgorCis8cD4gVGVzdCBmb3I6IDxhIGhy
ZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODIzOCI+YnVnIDY4
MjM4PGE+OiBbc291cF0gQ3Jhc2ggd2hpbGUgbG9hZGluZyBodHRwOi8vd3d3Lmp1c2NvLmNuPC9h
PiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBXZWJDb3JlIHRpbWVycyBkbyBub3QgZmlyZSBkdXJp
bmcgc3luY2hyb25vdXMgWE1MSHR0cFJlcXVlc3RzLgorPHByZSBpZD1sb2c+PC9wcmU+CisKKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlv
biBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5u
ZXJIVE1MICs9IG1lc3NhZ2UgKyAiXG4iOworfQorCit2YXIgdGltZXJFdmVyRmlyZWQgPSBmYWxz
ZTsKK3ZhciBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgdGltZXJF
dmVyRmlyZWQgPSB0cnVlOworfSwgMTApOworCit0cnkgeworICAgIHZhciByZXEgPSBuZXcgWE1M
SHR0cFJlcXVlc3QoKTsKKyAgICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy9kb3dubG9hZC13
aXRoLWRlbGF5LnBocD9pdGVyYXRpb249NSZkZWxheT01MCIsIGZhbHNlKTsKKyAgICByZXEuc2Vu
ZChudWxsKTsKK30gY2F0Y2ggKGV4KSB7CisgICAgbG9nKGV4KTsKK30KKworY2xlYXJJbnRlcnZh
bChpbnRlcnZhbElkKTsKK2xvZyh0aW1lckV2ZXJGaXJlZCA/ICJGQUlMIiA6ICJQQVNTIik7Cis8
L3NjcmlwdD4KKworPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBjZDNhYmQxZTE5MjU5ODhmZTk2M2RiYzg0MDFhMTA1OWM1ZWExZjg0Li5kNGY3
YTZhNWRkMDM0OGU4OTM1ZGM2ZmE4ODFhODY1NWUxZmZlYzAwIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDQtMDYgIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtzb3VwXSBDcmFzaCB3
aGlsZSBsb2FkaW5nIGh0dHA6Ly93d3cuanVzY28uY24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGhp
bGlwcGUgTm9ybWFuZC4KKworICAgICAgICAqIGNvbmZpZ3VyZS5hYzogQnVtcGVkIHRoZSBsaWJz
b3VwIGRlcGVuZGVuY3kgdG8gMi4zNy45MC4KKwogMjAxMi0wNC0wNSAgR2VvcmdlIFN0YWlrb3Mg
IDxzdGFpa29zQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ29tcGlsZSB0aGUgdmlicmF0aW9uIG1v
ZHVsZSBmb3IgQmxhY2tCZXJyeS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>