<?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>46773</bug_id>
          
          <creation_ts>2010-09-28 18:56:45 -0700</creation_ts>
          <short_desc>REGRESSION (r66129): Loading full-frame .swf file crashes with flash blocker extension enabled</short_desc>
          <delta_ts>2010-09-29 20:19:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Weinstein">bweinstein</reporter>
          <assigned_to name="Brian Weinstein">bweinstein</assigned_to>
          <cc>andersca</cc>
    
    <cc>aroben</cc>
    
    <cc>beidson</cc>
    
    <cc>eric</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>286696</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-09-28 18:56:45 -0700</bug_when>
    <thetext>REGRESSION (r66129): Loading full-frame .swf file crashes with flash blocker extension enabled.

r66129 started injecting start scripts into plugin documents, which allowed the loading of plugin documents to be blocked, but this could lead to a crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286697</commentid>
    <comment_count>1</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-09-28 18:56:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/8390975&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286700</commentid>
    <comment_count>2</comment_count>
      <attachid>69152</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-09-28 19:07:50 -0700</bug_when>
    <thetext>Created attachment 69152
[PATCH] Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286870</commentid>
    <comment_count>3</comment_count>
      <attachid>69152</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-09-29 07:47:24 -0700</bug_when>
    <thetext>Comment on attachment 69152
[PATCH] Fix

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

&gt; WebCore/ChangeLog:17
&gt; +        No new tests because it is not possible to cancel a plugin document load using
&gt; +        beforeload without extensions.

But we can test user scripts. So can&apos;t we test this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286925</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-09-29 09:41:47 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 69152 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69152&amp;action=review
&gt; 
&gt; &gt; WebCore/ChangeLog:17
&gt; &gt; +        No new tests because it is not possible to cancel a plugin document load using
&gt; &gt; +        beforeload without extensions.
&gt; 
&gt; But we can test user scripts. So can&apos;t we test this?

No, we can&apos;t test this. When we create a Plugin document in an iframe, and we try to cancel the load of the Plugin from the iframes owner document, that prevents the Plugin document from being created, which is different behavior than what an extension will give you when it cancels the load of the Plugin inside the Plugin document. I will double check to make sure, however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287018</commentid>
    <comment_count>5</comment_count>
      <attachid>69231</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-09-29 11:29:03 -0700</bug_when>
    <thetext>Created attachment 69231
[PATCH] Fix with tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287067</commentid>
    <comment_count>6</comment_count>
      <attachid>69231</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-29 12:45:02 -0700</bug_when>
    <thetext>Comment on attachment 69231
[PATCH] Fix with tests

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

&gt; WebCore/html/HTMLEmbedElement.cpp:168
&gt; +        if (document()-&gt;isPluginDocument()) {
&gt; +            document()-&gt;frame()-&gt;loader()-&gt;activeDocumentLoader()-&gt;mainResourceLoader()-&gt;cancel();
&gt; +            toPluginDocument(document())-&gt;setPluginLoadWasCancelled(true);
&gt; +        }

This code needs a why comment.

It’s not great factoring to have this code here; can we put the code in a better place? For example, a virtual function on Document? A document loader function? A plug-in document function that combines both the loader cancel and setting the flag? I don’t have a specific idea.

&gt; WebCore/html/PluginDocument.cpp:132
&gt; +        }

I think the local variable should just be named “widget”. Is there another widget other than then plug-in widget?

The definition of the local variable could be inside the if statement.

It’s not clear why setShouldBufferData(false) needs to be inside the if statement.

&gt; WebCore/html/PluginDocument.h:47
&gt; +    bool pluginLoadWasCancelled() const { return m_pluginLoadWasCancelled; }
&gt; +    void setPluginLoadWasCancelled(bool wasCancelled) { m_pluginLoadWasCancelled = wasCancelled; }

Does this really need to be specific to plug-ins? I don’t see how the fact that a load was cancelled is a plug-in specific concept. Can this boolean be on DocumentLoader instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287095</commentid>
    <comment_count>7</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-09-29 13:32:03 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 69231 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69231&amp;action=review
&gt; 
&gt; &gt; WebCore/html/HTMLEmbedElement.cpp:168
&gt; &gt; +        if (document()-&gt;isPluginDocument()) {
&gt; &gt; +            document()-&gt;frame()-&gt;loader()-&gt;activeDocumentLoader()-&gt;mainResourceLoader()-&gt;cancel();
&gt; &gt; +            toPluginDocument(document())-&gt;setPluginLoadWasCancelled(true);
&gt; &gt; +        }
&gt; 
&gt; This code needs a why comment.

Added.

&gt; 
&gt; It’s not great factoring to have this code here; can we put the code in a better place? For example, a virtual function on Document? A document loader function? A plug-in document function that combines both the loader cancel and setting the flag? I don’t have a specific idea.

I like the third idea. Something like PluginDocument::cancelManualPluginLoad. 

&gt; 
&gt; &gt; WebCore/html/PluginDocument.cpp:132
&gt; &gt; +        }
&gt; 
&gt; I think the local variable should just be named “widget”. Is there another widget other than then plug-in widget?
&gt; 
&gt; The definition of the local variable could be inside the if statement.

Fixed.

&gt; 
&gt; It’s not clear why setShouldBufferData(false) needs to be inside the if statement.

It doesn&apos;t need to be. Moved out of the if.

&gt; 
&gt; &gt; WebCore/html/PluginDocument.h:47
&gt; &gt; +    bool pluginLoadWasCancelled() const { return m_pluginLoadWasCancelled; }
&gt; &gt; +    void setPluginLoadWasCancelled(bool wasCancelled) { m_pluginLoadWasCancelled = wasCancelled; }
&gt; 
&gt; Does this really need to be specific to plug-ins? I don’t see how the fact that a load was cancelled is a plug-in specific concept. Can this boolean be on DocumentLoader instead?

Well, in this case, it&apos;s not the load of the PluginDocument itself, it&apos;s of the load of the plugin inside of the plugin document. What this boolean is used for (whether or not to load the plugin inside of a plugin document manually) is a plug-in document specific concept. I could rename the function to be clearer about what this function does: Maybe something like setShouldLoadPluginManually/shouldLoadPluginManually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287104</commentid>
    <comment_count>8</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-09-29 13:52:55 -0700</bug_when>
    <thetext>&gt; &gt; It’s not clear why setShouldBufferData(false) needs to be inside the if statement.
&gt; 
&gt; It doesn&apos;t need to be. Moved out of the if.

I was wrong about this, if it is moved out of the if:

frame-&gt;loader()-&gt;activeDocumentLoader()-&gt;mainResourceLoader()

is null, which causes us to crash later. This is because the main resource load has been cancelled. I could put it in its own null check (null checking mainResourceLoader(), or I could put it in the Widget* null check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287122</commentid>
    <comment_count>9</comment_count>
      <attachid>69250</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-09-29 14:27:00 -0700</bug_when>
    <thetext>Created attachment 69250
[PATCH] Fix w/ Darin&apos;s Comments Addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287127</commentid>
    <comment_count>10</comment_count>
      <attachid>69250</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-09-29 14:32:47 -0700</bug_when>
    <thetext>Comment on attachment 69250
[PATCH] Fix w/ Darin&apos;s Comments Addressed

I gave Brian some comments IRL (namely to add some comments to explain things), but am okay with it overall.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287188</commentid>
    <comment_count>11</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-09-29 16:01:22 -0700</bug_when>
    <thetext>Landed in r68702.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287352</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-29 20:19:12 -0700</bug_when>
    <thetext>Looks like this needs to be skipped on Qt.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69152</attachid>
            <date>2010-09-28 19:07:50 -0700</date>
            <delta_ts>2010-09-29 11:29:03 -0700</delta_ts>
            <desc>[PATCH] Fix</desc>
            <filename>plugin_document_cancelled.patch</filename>
            <type>text/plain</type>
            <size>7052</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODYxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDktMjggIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJFR1JFU1NJT04gKHI2NjEyOSk6IExvYWRpbmcgZnVsbC1mcmFtZSAuc3dmIGZpbGUgY3Jh
c2hlcyB3aXRoIGZsYXNoIGJsb2NrZXIgZXh0ZW5zaW9uIGVuYWJsZWQKKyAgICAgICAgPGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njc3Mz4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzgzOTA5NzU+CisgICAgICAgIAorICAgICAgICBBZnRlciByNjYxMjksIHN0YXJ0
IHNjcmlwdHMgd2VyZSBydW4gb24gcGx1Z2luIGRvY3VtZW50cywgYW5kIGNhbmNlbGxpbmcgdGhl
IGxvYWQgb2YgYSBwbHVnaW4KKyAgICAgICAgZG9jdW1lbnQgY291bGQgY2F1c2UgU2FmYXJpIHRv
IGNyYXNoLgorICAgICAgICAKKyAgICAgICAgSWYgYSBwbHVnaW4gbG9hZCBvbiBhbiBpbml0aWFs
IGRvY3VtZW50IGlzIGNhbmNlbGxlZCwgd2UgY2FuY2VsIHRoZSBtYWluIHJlc291cmNlIGxvYWQg
KHdoZXJlIHRoZQorICAgICAgICBtYWluIHJlc291cmNlIGlzIHRoZSBwbHVnaW4pLCBhbmQgaWYg
dGhlIGxvYWQgaXMgcmVzdGFydGVkIGFuZCBhbGxvd2VkLCB3ZSBkb24ndCBnbyB0aHJvdWdoIHRo
ZSBtYW51YWwKKyAgICAgICAgbG9hZGluZyBwYXRoIGxpa2Ugd2UgZG8gb24gdGhlIGluaXRpYWwg
bG9hZCBvZiBhIHBsdWdpbiBpbiBhIHBsdWdpbiBkb2N1bWVudC4KKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSBpdCBpcyBub3QgcG9zc2libGUgdG8gY2FuY2VsIGEgcGx1Z2luIGRvY3Vt
ZW50IGxvYWQgdXNpbmcKKyAgICAgICAgYmVmb3JlbG9hZCB3aXRob3V0IGV4dGVuc2lvbnMuCisK
KyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEVtYmVkRWxlbWVudDo6dXBkYXRlV2lkZ2V0KTogSWYgdGhlIHBsdWdpbiBsb2FkIHdhcyBj
YW5jZWxsZWQsIGFuZCB0aGlzIGlzIGluIGEKKyAgICAgICAgICAgIHBsdWdpbiBkb2N1bWVudCwg
Y2FuY2VsIHRoZSBtYWluIHJlc291cmNlIGxvYWQgKHdoaWNoIGlzIHRoZSBwbHVnaW4gbG9hZCkg
YW5kIHNldCBhIGZsYWcgc2F5aW5nCisgICAgICAgICAgICB0aGUgcGx1Z2luIGRvY3VtZW50J3Mg
cGx1Z2luIGxvYWQgd2FzIGNhbmNlbGxlZC4KKyAgICAgICAgKiBodG1sL1BsdWdpbkRvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRl
cyk6IE51bGwgY2hlY2sgdGhlIHdpZGdldCdzIHJlbmRlcmVyLCBiZWNhdXNlIGl0IGNvdWxkIGJl
CisgICAgICAgICAgICBudWxsIGlmIHRoZSBsb2FkIHdhcyBjYW5jZWxsZWQuCisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5Eb2N1bWVudDo6UGx1Z2luRG9jdW1lbnQpOiBJbml0aWFsaXplIHRoZSBu
ZXcgdmFyaWFibGUuCisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luRG9jdW1lbnQ6OnBsdWdpbkxvYWRXYXNDYW5jZWxsZWQpOiBSZXR1cm4g
d2hldGhlciBvciBub3QgdGhlIHBsdWdpbiBsb2FkIHdhcyBjYW5jZWxsZWQuCisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5Eb2N1bWVudDo6c2V0UGx1Z2luTG9hZFdhc0NhbmNlbGxlZCk6IFNldCB3
aGV0aGVyIG9yIG5vdCB0aGUgcGx1Z2luIGxvYWQgd2FzIGNhbmNlbGxlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnRvUGx1Z2luRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbik6IE9u
bHkgbG9hZCB0aGUgcGx1Z2luIG1hbnVhbGx5IGlmIHdlIGFyZSBpbiBhIHBsdWdpbiBkb2N1bWVu
dCBhbmQKKyAgICAgICAgICAgIHRoZSBsb2FkIHdhc24ndCBjYW5jZWxsZWQuIElmIGl0IHdhcyBj
YW5jZWxsZWQsIGFuZCB0aGUgbG9hZCBpcyBhbGxvd2VkIGxhdGVyLCB3ZSBkb24ndCB3YW50IHRv
IGxvYWQKKyAgICAgICAgICAgIHRoZSBwbHVnaW4gbWFudWFsbHkgYW55bW9yZS4KKwogMjAxMC0w
OS0yOCAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChyZXZlcnQgdW5zcXVhc2hlZCBnaXQgY29tbWl0cykKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TEVtYmVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDY4NjA0KQorKysgV2ViQ29yZS9odG1sL0hUTUxF
bWJlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTQgQEAKICNpbmNs
dWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJDU1NQ
cm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUxv
YWRlci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVt
ZW50LmgiCisjaW5jbHVkZSAiTWFpblJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiUGx1Z2lu
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogI2luY2x1ZGUg
IlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCkBAIC0xNTgsOCArMTYx
LDEzIEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6dXBkYXRlV2lkZ2V0KGJvb2wKICAgICBWZWN0
b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsKICAgICBwYXJhbWV0ZXJzRm9yUGx1Z2luKHBhcmFtTmFt
ZXMsIHBhcmFtVmFsdWVzKTsKIAotICAgIGlmICghZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQobV91
cmwpKQorICAgIGlmICghZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQobV91cmwpKSB7CisgICAgICAg
IGlmIChkb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkpIHsKKyAgICAgICAgICAgIGRvY3Vt
ZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5tYWluUmVz
b3VyY2VMb2FkZXIoKS0+Y2FuY2VsKCk7CisgICAgICAgICAgICB0b1BsdWdpbkRvY3VtZW50KGRv
Y3VtZW50KCkpLT5zZXRQbHVnaW5Mb2FkV2FzQ2FuY2VsbGVkKHRydWUpOworICAgICAgICB9CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBTdWJmcmFtZUxvYWRlciogbG9hZGVyID0gZG9j
dW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCk7CiAgICAgLy8gRklY
TUU6IGJlZm9yZUxvYWQgY291bGQgaGF2ZSBkZXRhY2hlZCB0aGUgcmVuZGVyZXIhICBKdXN0IGxp
a2UgaW4gdGhlIDxvYmplY3Q+IGNhc2UgYWJvdmUuCkluZGV4OiBXZWJDb3JlL2h0bWwvUGx1Z2lu
RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5j
cHAJKHJldmlzaW9uIDY4NjA0KQorKysgV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTI1LDggKzEyNSwxMSBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFy
c2VyOjphcHBlbmRCeXRlcyhECiAgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAKICAg
ICBpZiAoUmVuZGVyUGFydCogcmVuZGVyZXIgPSBtX2VtYmVkRWxlbWVudC0+cmVuZGVyUGFydCgp
KSB7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnJlZGlyZWN0RGF0YVRvUGx1
Z2luKHJlbmRlcmVyLT53aWRnZXQoKSk7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZl
RG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlTG9hZGVyKCktPnNldFNob3VsZEJ1ZmZlckRh
dGEoZmFsc2UpOworICAgICAgICBXaWRnZXQqIHBsdWdpbldpZGdldCA9IHJlbmRlcmVyLT53aWRn
ZXQoKTsKKyAgICAgICAgaWYgKHBsdWdpbldpZGdldCkgeworICAgICAgICAgICAgZnJhbWUtPmxv
YWRlcigpLT5jbGllbnQoKS0+cmVkaXJlY3REYXRhVG9QbHVnaW4ocGx1Z2luV2lkZ2V0KTsKKyAg
ICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+bWFpblJl
c291cmNlTG9hZGVyKCktPnNldFNob3VsZEJ1ZmZlckRhdGEoZmFsc2UpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgZmluaXNoKCk7CkBAIC0xMzQsMTEgKzEzNywxMiBAQCB2b2lkIFBsdWdpbkRv
Y3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhECiAKIFBsdWdpbkRvY3VtZW50OjpQbHVnaW5Eb2N1
bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKICAgICA6IEhUTUxEb2N1bWVudChm
cmFtZSwgdXJsKQorICAgICwgbV9wbHVnaW5Mb2FkV2FzQ2FuY2VsbGVkKGZhbHNlKQogewogICAg
IHNldENvbXBhdGliaWxpdHlNb2RlKFF1aXJrc01vZGUpOwogICAgIGxvY2tDb21wYXRpYmlsaXR5
TW9kZSgpOwogfQotICAgIAorCiBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBQbHVnaW5Eb2N1
bWVudDo6Y3JlYXRlUGFyc2VyKCkKIHsKICAgICByZXR1cm4gUGx1Z2luRG9jdW1lbnRQYXJzZXI6
OmNyZWF0ZSh0aGlzKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCShyZXZpc2lvbiA2ODYwNCkK
KysrIFdlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Mywx
MSArNDMsMzEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzUGx1Z2luRG9jdW1lbnQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKKyAgICBib29sIHBsdWdpbkxvYWRXYXNDYW5jZWxs
ZWQoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkxvYWRXYXNDYW5jZWxsZWQ7IH0KKyAgICB2b2lk
IHNldFBsdWdpbkxvYWRXYXNDYW5jZWxsZWQoYm9vbCB3YXNDYW5jZWxsZWQpIHsgbV9wbHVnaW5M
b2FkV2FzQ2FuY2VsbGVkID0gd2FzQ2FuY2VsbGVkOyB9CisKIHByaXZhdGU6CiAgICAgUGx1Z2lu
RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpOworCisgICAgYm9vbCBtX3BsdWdpbkxvYWRX
YXNDYW5jZWxsZWQ7CiB9OworCitpbmxpbmUgUGx1Z2luRG9jdW1lbnQqIHRvUGx1Z2luRG9jdW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIEFTU0VSVCghZG9jdW1lbnQgfHwgZG9jdW1l
bnQtPmlzUGx1Z2luRG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBsdWdpbkRv
Y3VtZW50Kj4oZG9jdW1lbnQpOworfQorCitpbmxpbmUgY29uc3QgUGx1Z2luRG9jdW1lbnQqIHRv
UGx1Z2luRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIEFTU0VSVCgh
ZG9jdW1lbnQgfHwgZG9jdW1lbnQtPmlzUGx1Z2luRG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IFBsdWdpbkRvY3VtZW50Kj4oZG9jdW1lbnQpOworfQorCisvLyBUaGlz
IHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvUGx1
Z2luRG9jdW1lbnQoY29uc3QgUGx1Z2luRG9jdW1lbnQqKTsKICAgICAKIH0KIApJbmRleDogV2Vi
Q29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNjg2MDQpCisrKyBXZWJDb3JlL2xvYWRl
ci9TdWJmcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNp
bmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBsdWdpbkRhdGEuaCIKKyNpbmNsdWRlICJQbHVnaW5Eb2N1bWVudC5oIgogI2luY2x1ZGUgIlJl
bmRlckVtYmVkZGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCkBAIC0zNTQsNyArMzU1LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6bG9h
ZFBsdWdpbihIVE1MUGx1ZwogICAgIGZyYW1lTG9hZGVyLT5jaGVja0lmUnVuSW5zZWN1cmVDb250
ZW50KGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCk7CiAKICAgICBJbnRTaXplIGNv
bnRlbnRTaXplKHJlbmRlcmVyLT5jb250ZW50V2lkdGgoKSwgcmVuZGVyZXItPmNvbnRlbnRIZWln
aHQoKSk7Ci0gICAgYm9vbCBsb2FkTWFudWFsbHkgPSBkb2N1bWVudCgpLT5pc1BsdWdpbkRvY3Vt
ZW50KCkgJiYgIW1fY29udGFpbnNQbHVnaW5zOworICAgIGJvb2wgbG9hZE1hbnVhbGx5ID0gZG9j
dW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpICYmICFtX2NvbnRhaW5zUGx1Z2lucyAmJiAhdG9Q
bHVnaW5Eb2N1bWVudChkb2N1bWVudCgpKS0+cGx1Z2luTG9hZFdhc0NhbmNlbGxlZCgpOwogICAg
IFJlZlB0cjxXaWRnZXQ+IHdpZGdldCA9IGZyYW1lTG9hZGVyLT5jbGllbnQoKS0+Y3JlYXRlUGx1
Z2luKGNvbnRlbnRTaXplLAogICAgICAgICBwbHVnaW5FbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMs
IHBhcmFtVmFsdWVzLCBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsKIAo=
</data>
<flag name="commit-queue"
          id="58792"
          type_id="3"
          status="-"
          setter="bweinstein"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69231</attachid>
            <date>2010-09-29 11:29:03 -0700</date>
            <delta_ts>2010-09-29 14:27:00 -0700</delta_ts>
            <desc>[PATCH] Fix with tests</desc>
            <filename>plugin_document_load_cancel.patch</filename>
            <type>text/plain</type>
            <size>11057</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODY2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDktMjkgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJFR1JFU1NJT04gKHI2NjEyOSk6IExvYWRpbmcgZnVsbC1mcmFtZSAuc3dmIGZpbGUgY3Jh
c2hlcyB3aXRoIGZsYXNoIGJsb2NrZXIgZXh0ZW5zaW9uIGVuYWJsZWQKKyAgICAgICAgPGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njc3Mz4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzgzOTA5NzU+CisgICAgICAgIAorICAgICAgICBBZnRlciByNjYxMjksIHN0YXJ0
IHNjcmlwdHMgd2VyZSBydW4gb24gcGx1Z2luIGRvY3VtZW50cywgYW5kIGNhbmNlbGxpbmcgdGhl
IGxvYWQgb2YgYSBwbHVnaW4KKyAgICAgICAgZG9jdW1lbnQgY291bGQgY2F1c2UgU2FmYXJpIHRv
IGNyYXNoLgorICAgICAgICAKKyAgICAgICAgSWYgYSBwbHVnaW4gbG9hZCBvbiBhbiBpbml0aWFs
IGRvY3VtZW50IGlzIGNhbmNlbGxlZCwgd2UgY2FuY2VsIHRoZSBtYWluIHJlc291cmNlIGxvYWQg
KHdoZXJlIHRoZQorICAgICAgICBtYWluIHJlc291cmNlIGlzIHRoZSBwbHVnaW4pLCBhbmQgaWYg
dGhlIGxvYWQgaXMgcmVzdGFydGVkIGFuZCBhbGxvd2VkLCB3ZSBkb24ndCBnbyB0aHJvdWdoIHRo
ZSBtYW51YWwKKyAgICAgICAgbG9hZGluZyBwYXRoIGxpa2Ugd2UgZG8gb24gdGhlIGluaXRpYWwg
bG9hZCBvZiBhIHBsdWdpbiBpbiBhIHBsdWdpbiBkb2N1bWVudC4KKworICAgICAgICBUZXN0czog
cGx1Z2lucy9wbHVnaW4tZG9jdW1lbnQtbG9hZC1wcmV2ZW50ZWQtdXNlcnNjcmlwdC5odG1sCisg
ICAgICAgICAgICAgICBwbHVnaW5zL3BsdWdpbi1kb2N1bWVudC13aWxsU2VuZFJlcXVlc3QtbnVs
bC5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6dXBkYXRlV2lkZ2V0KTogSWYgdGhlIHBsdWdpbiBs
b2FkIHdhcyBjYW5jZWxsZWQsIGFuZCB0aGlzIGlzIGluIGEKKyAgICAgICAgICAgIHBsdWdpbiBk
b2N1bWVudCwgY2FuY2VsIHRoZSBtYWluIHJlc291cmNlIGxvYWQgKHdoaWNoIGlzIHRoZSBwbHVn
aW4gbG9hZCkgYW5kIHNldCBhIGZsYWcgc2F5aW5nCisgICAgICAgICAgICB0aGUgcGx1Z2luIGRv
Y3VtZW50J3MgcGx1Z2luIGxvYWQgd2FzIGNhbmNlbGxlZC4KKyAgICAgICAgKiBodG1sL1BsdWdp
bkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRvY3VtZW50UGFyc2VyOjph
cHBlbmRCeXRlcyk6IE51bGwgY2hlY2sgdGhlIHdpZGdldCdzIHJlbmRlcmVyLCBiZWNhdXNlIGl0
IGNvdWxkIGJlCisgICAgICAgICAgICBudWxsIGlmIHRoZSBsb2FkIHdhcyBjYW5jZWxsZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudDo6UGx1Z2luRG9jdW1lbnQpOiBJbml0aWFs
aXplIHRoZSBuZXcgdmFyaWFibGUuCisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRG9jdW1lbnQ6OnBsdWdpbkxvYWRXYXNDYW5jZWxsZWQp
OiBSZXR1cm4gd2hldGhlciBvciBub3QgdGhlIHBsdWdpbiBsb2FkIHdhcyBjYW5jZWxsZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudDo6c2V0UGx1Z2luTG9hZFdhc0NhbmNlbGxl
ZCk6IFNldCB3aGV0aGVyIG9yIG5vdCB0aGUgcGx1Z2luIGxvYWQgd2FzIGNhbmNlbGxlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OnRvUGx1Z2luRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9TdWJm
cmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFBs
dWdpbik6IE9ubHkgbG9hZCB0aGUgcGx1Z2luIG1hbnVhbGx5IGlmIHdlIGFyZSBpbiBhIHBsdWdp
biBkb2N1bWVudCBhbmQKKyAgICAgICAgICAgIHRoZSBsb2FkIHdhc24ndCBjYW5jZWxsZWQuIElm
IGl0IHdhcyBjYW5jZWxsZWQsIGFuZCB0aGUgbG9hZCBpcyBhbGxvd2VkIGxhdGVyLCB3ZSBkb24n
dCB3YW50IHRvIGxvYWQKKyAgICAgICAgICAgIHRoZSBwbHVnaW4gbWFudWFsbHkgYW55bW9yZS4K
KwogMjAxMC0wOS0yOSAgTWF0dCBQZXJyeSAgPG1wY29tcGxldGVAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
RW1iZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHAJKHJldmlzaW9uIDY4NjA0KQorKysgV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTQgQEAKICNpbmNsdWRlICJBdHRy
aWJ1dGUuaCIKICNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5h
bWVzLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUxvYWRlci5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCisj
aW5jbHVkZSAiTWFpblJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiUGx1Z2luRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlcklt
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCkBAIC0xNTgsOCArMTYxLDEzIEBAIHZv
aWQgSFRNTEVtYmVkRWxlbWVudDo6dXBkYXRlV2lkZ2V0KGJvb2wKICAgICBWZWN0b3I8U3RyaW5n
PiBwYXJhbVZhbHVlczsKICAgICBwYXJhbWV0ZXJzRm9yUGx1Z2luKHBhcmFtTmFtZXMsIHBhcmFt
VmFsdWVzKTsKIAotICAgIGlmICghZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQobV91cmwpKQorICAg
IGlmICghZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQobV91cmwpKSB7CisgICAgICAgIGlmIChkb2N1
bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50KCktPmZy
YW1lKCktPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VMb2Fk
ZXIoKS0+Y2FuY2VsKCk7CisgICAgICAgICAgICB0b1BsdWdpbkRvY3VtZW50KGRvY3VtZW50KCkp
LT5zZXRQbHVnaW5Mb2FkV2FzQ2FuY2VsbGVkKHRydWUpOworICAgICAgICB9CiAgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKICAgICBTdWJmcmFtZUxvYWRlciogbG9hZGVyID0gZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCk7CiAgICAgLy8gRklYTUU6IGJlZm9y
ZUxvYWQgY291bGQgaGF2ZSBkZXRhY2hlZCB0aGUgcmVuZGVyZXIhICBKdXN0IGxpa2UgaW4gdGhl
IDxvYmplY3Q+IGNhc2UgYWJvdmUuCkluZGV4OiBXZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAJKHJldmlz
aW9uIDY4NjA0KQorKysgV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI1LDggKzEyNSwxMSBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBl
bmRCeXRlcyhECiAgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAKICAgICBpZiAoUmVu
ZGVyUGFydCogcmVuZGVyZXIgPSBtX2VtYmVkRWxlbWVudC0+cmVuZGVyUGFydCgpKSB7Ci0gICAg
ICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnJlZGlyZWN0RGF0YVRvUGx1Z2luKHJlbmRl
cmVyLT53aWRnZXQoKSk7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRM
b2FkZXIoKS0+bWFpblJlc291cmNlTG9hZGVyKCktPnNldFNob3VsZEJ1ZmZlckRhdGEoZmFsc2Up
OworICAgICAgICBXaWRnZXQqIHBsdWdpbldpZGdldCA9IHJlbmRlcmVyLT53aWRnZXQoKTsKKyAg
ICAgICAgaWYgKHBsdWdpbldpZGdldCkgeworICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5j
bGllbnQoKS0+cmVkaXJlY3REYXRhVG9QbHVnaW4ocGx1Z2luV2lkZ2V0KTsKKyAgICAgICAgICAg
IGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlTG9h
ZGVyKCktPnNldFNob3VsZEJ1ZmZlckRhdGEoZmFsc2UpOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgZmluaXNoKCk7CkBAIC0xMzQsMTEgKzEzNywxMiBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFy
c2VyOjphcHBlbmRCeXRlcyhECiAKIFBsdWdpbkRvY3VtZW50OjpQbHVnaW5Eb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKICAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJs
KQorICAgICwgbV9wbHVnaW5Mb2FkV2FzQ2FuY2VsbGVkKGZhbHNlKQogewogICAgIHNldENvbXBh
dGliaWxpdHlNb2RlKFF1aXJrc01vZGUpOwogICAgIGxvY2tDb21wYXRpYmlsaXR5TW9kZSgpOwog
fQotICAgIAorCiBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBQbHVnaW5Eb2N1bWVudDo6Y3Jl
YXRlUGFyc2VyKCkKIHsKICAgICByZXR1cm4gUGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZSh0
aGlzKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCShyZXZpc2lvbiA2ODYwNCkKKysrIFdlYkNv
cmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMSArNDMsMzEg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzUGx1Z2luRG9jdW1lbnQoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAKKyAgICBib29sIHBsdWdpbkxvYWRXYXNDYW5jZWxsZWQoKSBjb25z
dCB7IHJldHVybiBtX3BsdWdpbkxvYWRXYXNDYW5jZWxsZWQ7IH0KKyAgICB2b2lkIHNldFBsdWdp
bkxvYWRXYXNDYW5jZWxsZWQoYm9vbCB3YXNDYW5jZWxsZWQpIHsgbV9wbHVnaW5Mb2FkV2FzQ2Fu
Y2VsbGVkID0gd2FzQ2FuY2VsbGVkOyB9CisKIHByaXZhdGU6CiAgICAgUGx1Z2luRG9jdW1lbnQo
RnJhbWUqLCBjb25zdCBLVVJMJik7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQ
YXJzZXI+IGNyZWF0ZVBhcnNlcigpOworCisgICAgYm9vbCBtX3BsdWdpbkxvYWRXYXNDYW5jZWxs
ZWQ7CiB9OworCitpbmxpbmUgUGx1Z2luRG9jdW1lbnQqIHRvUGx1Z2luRG9jdW1lbnQoRG9jdW1l
bnQqIGRvY3VtZW50KQoreworICAgIEFTU0VSVCghZG9jdW1lbnQgfHwgZG9jdW1lbnQtPmlzUGx1
Z2luRG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBsdWdpbkRvY3VtZW50Kj4o
ZG9jdW1lbnQpOworfQorCitpbmxpbmUgY29uc3QgUGx1Z2luRG9jdW1lbnQqIHRvUGx1Z2luRG9j
dW1lbnQoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIEFTU0VSVCghZG9jdW1lbnQg
fHwgZG9jdW1lbnQtPmlzUGx1Z2luRG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IFBsdWdpbkRvY3VtZW50Kj4oZG9jdW1lbnQpOworfQorCisvLyBUaGlzIHdpbGwgY2F0
Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvUGx1Z2luRG9jdW1l
bnQoY29uc3QgUGx1Z2luRG9jdW1lbnQqKTsKICAgICAKIH0KIApJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvU3ViZnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1N1YmZy
YW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNjg2MDQpCisrKyBXZWJDb3JlL2xvYWRlci9TdWJmcmFt
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsdWdpbkRh
dGEuaCIKKyNpbmNsdWRlICJQbHVnaW5Eb2N1bWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckVtYmVk
ZGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCkBAIC0zNTQsNyArMzU1LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbihI
VE1MUGx1ZwogICAgIGZyYW1lTG9hZGVyLT5jaGVja0lmUnVuSW5zZWN1cmVDb250ZW50KGRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCk7CiAKICAgICBJbnRTaXplIGNvbnRlbnRTaXpl
KHJlbmRlcmVyLT5jb250ZW50V2lkdGgoKSwgcmVuZGVyZXItPmNvbnRlbnRIZWlnaHQoKSk7Ci0g
ICAgYm9vbCBsb2FkTWFudWFsbHkgPSBkb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkgJiYg
IW1fY29udGFpbnNQbHVnaW5zOworICAgIGJvb2wgbG9hZE1hbnVhbGx5ID0gZG9jdW1lbnQoKS0+
aXNQbHVnaW5Eb2N1bWVudCgpICYmICFtX2NvbnRhaW5zUGx1Z2lucyAmJiAhdG9QbHVnaW5Eb2N1
bWVudChkb2N1bWVudCgpKS0+cGx1Z2luTG9hZFdhc0NhbmNlbGxlZCgpOwogICAgIFJlZlB0cjxX
aWRnZXQ+IHdpZGdldCA9IGZyYW1lTG9hZGVyLT5jbGllbnQoKS0+Y3JlYXRlUGx1Z2luKGNvbnRl
bnRTaXplLAogICAgICAgICBwbHVnaW5FbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFs
dWVzLCBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjg2Njkp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBA
QAorMjAxMC0wOS0yOSAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lP
TiAocjY2MTI5KTogTG9hZGluZyBmdWxsLWZyYW1lIC5zd2YgZmlsZSBjcmFzaGVzIHdpdGggZmxh
c2ggYmxvY2tlciBleHRlbnNpb24gZW5hYmxlZAorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NzczPgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM5
MDk3NT4KKyAgICAgICAgCisgICAgICAgIEFkZCB0ZXN0cyB0ZXN0aW5nIGhvdyBwbHVnaW4gZG9j
dW1lbnRzIGJlaGF2ZSB3aGVuIHRoZSBsb2FkaW5nIG9mIHRoZWlyIHBsdWdpbnMgYXJlIGNhbmNl
bGxlZC4KKworICAgICAgICAqIHBsdWdpbnMvcGx1Z2luLWRvY3VtZW50LWxvYWQtcHJldmVudGVk
LXVzZXJzY3JpcHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbHVnaW5zL3BsdWdp
bi1kb2N1bWVudC1sb2FkLXByZXZlbnRlZC11c2Vyc2NyaXB0Lmh0bWw6IEFkZGVkLiBUZXN0cyBj
YW5jZWxsaW5nIHRoZSBsb2FkIG9mIGEgCisgICAgICAgICAgICBwbHVnaW4gaW4gYSBwbHVnaW4g
ZG9jdW1lbnQgdXNpbmcgYmVmb3JlbG9hZCBhbmQgcHJldmVudERlZmF1bHQuCisgICAgICAgICog
cGx1Z2lucy9wbHVnaW4tZG9jdW1lbnQtd2lsbFNlbmRSZXF1ZXN0LW51bGwtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBwbHVnaW5zL3BsdWdpbi1kb2N1bWVudC13aWxsU2VuZFJlcXVl
c3QtbnVsbC5odG1sOiBBZGRlZC4gVGVzdHMgY2FuY2VsbGluZyB0aGUgbG9hZCBvZiBhIHBsdWdp
bgorICAgICAgICAgICAgaW4gYSBwbHVnaW4gZG9jdW1lbnQgYnkgaGF2aW5nIHdpbGxTZW5kUmVx
dWVzdCByZXR1cm4gbnVsbC4KKwogMjAxMC0wOS0yOSAgTWFydGluIFJvYmluc29uICA8bXJvYmlu
c29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL3BsdWdpbi1kb2N1bWVudC1sb2FkLXByZXZlbnRlZC11
c2Vyc2NyaXB0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5z
L3BsdWdpbi1kb2N1bWVudC1sb2FkLXByZXZlbnRlZC11c2Vyc2NyaXB0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsdWdpbnMvcGx1Z2luLWRvY3VtZW50LWxvYWQt
cHJldmVudGVkLXVzZXJzY3JpcHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
IEBACitUaGlzIHRlc3RzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
Njc3MyBieSBoYXZpbmcgdGhlIGxvYWQgb2YgdGhlIHBsdWdpbiBpbnNpZGUgdGhlIHBsdWdpbiBk
b2N1bWVudCBiZSBjYW5jZWxsZWQuIElmIHRoZXJlIGlzIG5vIGNyYXNoLCB0aGUgdGVzdCBwYXNz
ZWQuICAKSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvcGx1Z2luLWRvY3VtZW50LWxvYWQtcHJl
dmVudGVkLXVzZXJzY3JpcHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5z
L3BsdWdpbi1kb2N1bWVudC1sb2FkLXByZXZlbnRlZC11c2Vyc2NyaXB0Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL3BsdWdpbi1kb2N1bWVudC1sb2FkLXByZXZlbnRl
ZC11c2Vyc2NyaXB0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPg0K
KzxoZWFkPg0KKyAgICA8c2NyaXB0Pg0KKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgew0KKyAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7DQorICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmFkZFVz
ZXJTY3JpcHQoImRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZWxvYWQnLCBmdW5jdGlv
bihldmVudCkgeyBpZiAoZXZlbnQudXJsLmluZGV4T2YoJ3N3ZicpID49IDApIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7IH0sIHRydWUpOyIsIHRydWUsIHRydWUpOw0KKyAgICAgICAgfQ0KKyAgICA8
L3NjcmlwdD4NCis8L2hlYWQ+DQorPGJvZHk+DQorICAgIFRoaXMgdGVzdHMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NzczIGJ5IGhhdmluZyB0aGUgbG9hZCBvZiB0
aGUgcGx1Z2luDQorICAgIGluc2lkZSB0aGUgcGx1Z2luIGRvY3VtZW50IGJlIGNhbmNlbGxlZC4g
SWYgdGhlcmUgaXMgbm8gY3Jhc2gsIHRoZSB0ZXN0IHBhc3NlZC4NCisgICAgPGlmcmFtZSBzcmM9
InJlc291cmNlcy9zaW1wbGVfYmxhbmsuc3dmIj48L2lmcmFtZT4NCis8L2JvZHk+DQorPC9odG1s
Pg0KSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvcGx1Z2luLWRvY3VtZW50LXdpbGxTZW5kUmVx
dWVzdC1udWxsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5z
L3BsdWdpbi1kb2N1bWVudC13aWxsU2VuZFJlcXVlc3QtbnVsbC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL3BsdWdpbi1kb2N1bWVudC13aWxsU2VuZFJl
cXVlc3QtbnVsbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1RoaXMg
dGVzdHMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NzczIGJ5IGhh
dmluZyB3aWxsU2VuZFJlcXVlc3Qgb24gdGhlIHBsdWdpbiBkb2N1bWVudCByZXR1cm4gbnVsbC4g
SWYgdGhlcmUgaXMgbm8gY3Jhc2gsIHRoZSB0ZXN0IHBhc3NlZC4gIApJbmRleDogTGF5b3V0VGVz
dHMvcGx1Z2lucy9wbHVnaW4tZG9jdW1lbnQtd2lsbFNlbmRSZXF1ZXN0LW51bGwuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5zL3BsdWdpbi1kb2N1bWVudC13aWxsU2VuZFJl
cXVlc3QtbnVsbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGx1Z2lucy9wbHVn
aW4tZG9jdW1lbnQtd2lsbFNlbmRSZXF1ZXN0LW51bGwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNSBAQAorPGh0bWw+DQorPGhlYWQ+DQorICAgIDxzY3JpcHQ+ICAgICAgICANCisgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsNCisgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQorICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwodHJ1ZSk7DQorICAgICAgICB9
DQorICAgIDwvc2NyaXB0Pg0KKzwvaGVhZD4NCis8Ym9keT4NCisgICAgVGhpcyB0ZXN0cyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY3NzMgYnkgaGF2aW5nIHdpbGxT
ZW5kUmVxdWVzdCBvbiB0aGUNCisgICAgcGx1Z2luIGRvY3VtZW50IHJldHVybiBudWxsLiBJZiB0
aGVyZSBpcyBubyBjcmFzaCwgdGhlIHRlc3QgcGFzc2VkLg0KKyAgICA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL3NpbXBsZV9ibGFuay5zd2YiPjwvaWZyYW1lPg0KKzwvYm9keT4NCis8L2h0bWw+DQo=
</data>
<flag name="commit-queue"
          id="58885"
          type_id="3"
          status="-"
          setter="bweinstein"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69250</attachid>
            <date>2010-09-29 14:27:00 -0700</date>
            <delta_ts>2010-09-29 14:32:47 -0700</delta_ts>
            <desc>[PATCH] Fix w/ Darin&apos;s Comments Addressed</desc>
            <filename>plugin_document_load_cancel.patch</filename>
            <type>text/plain</type>
            <size>11841</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODY4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTAtMDktMjkgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJFR1JFU1NJT04gKHI2NjEyOSk6IExvYWRpbmcgZnVsbC1mcmFtZSAuc3dmIGZpbGUgY3Jh
c2hlcyB3aXRoIGZsYXNoIGJsb2NrZXIgZXh0ZW5zaW9uIGVuYWJsZWQKKyAgICAgICAgPGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njc3Mz4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzgzOTA5NzU+CisgICAgICAgIAorICAgICAgICBBZnRlciByNjYxMjksIHN0YXJ0
IHNjcmlwdHMgd2VyZSBydW4gb24gcGx1Z2luIGRvY3VtZW50cywgYW5kIGNhbmNlbGxpbmcgdGhl
IGxvYWQgb2YgYSBwbHVnaW4KKyAgICAgICAgZG9jdW1lbnQgY291bGQgY2F1c2UgU2FmYXJpIHRv
IGNyYXNoLgorICAgICAgICAKKyAgICAgICAgSWYgYSBwbHVnaW4gbG9hZCBvbiBhbiBpbml0aWFs
IGRvY3VtZW50IGlzIGNhbmNlbGxlZCwgd2UgY2FuY2VsIHRoZSBtYWluIHJlc291cmNlIGxvYWQg
KHdoZXJlIHRoZQorICAgICAgICBtYWluIHJlc291cmNlIGlzIHRoZSBwbHVnaW4pLCBhbmQgaWYg
dGhlIGxvYWQgaXMgcmVzdGFydGVkIGFuZCBhbGxvd2VkLCB3ZSBkb24ndCBnbyB0aHJvdWdoIHRo
ZSBtYW51YWwKKyAgICAgICAgbG9hZGluZyBwYXRoIGxpa2Ugd2UgZG8gb24gdGhlIGluaXRpYWwg
bG9hZCBvZiBhIHBsdWdpbiBpbiBhIHBsdWdpbiBkb2N1bWVudC4KKworICAgICAgICBUZXN0czog
cGx1Z2lucy9wbHVnaW4tZG9jdW1lbnQtbG9hZC1wcmV2ZW50ZWQtdXNlcnNjcmlwdC5odG1sCisg
ICAgICAgICAgICAgICBwbHVnaW5zL3BsdWdpbi1kb2N1bWVudC13aWxsU2VuZFJlcXVlc3QtbnVs
bC5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6dXBkYXRlV2lkZ2V0KTogSWYgdGhlIHBsdWdpbiBs
b2FkIHdhcyBjYW5jZWxsZWQsIGFuZCB0aGlzIGlzIGluIGEKKyAgICAgICAgICAgIHBsdWdpbiBk
b2N1bWVudCwgY2FsbCBhIGZ1bmN0aW9uIG9uIFBsdWdpbkRvY3VtZW50IHRoYXQgY2FuY2VscyB0
aGUgbWFpbiByZXNvdXJjZSBsb2FkLCBhbmQKKyAgICAgICAgICAgIHNldHMgYSBwbHVnaW4gZG9j
dW1lbnQgZmxhZy4KKyAgICAgICAgKiBodG1sL1BsdWdpbkRvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyk6IE51bGwgY2hlY2sg
dGhlIHdpZGdldCdzIHJlbmRlcmVyLCBiZWNhdXNlIGl0IGNvdWxkIGJlCisgICAgICAgICAgICBu
dWxsIGlmIHRoZSBsb2FkIHdhcyBjYW5jZWxsZWQuCisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5E
b2N1bWVudDo6UGx1Z2luRG9jdW1lbnQpOiBJbml0aWFsaXplIHRoZSBuZXcgdmFyaWFibGUuCisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudDo6Y2FuY2VsTWFudWFsUGx1Z2luTG9hZCk6
IENhbmNlbCB0aGUgbWFpbiByZXNvdXJjZSBsb2FkIG9mIHRoZSBwbHVnaW4gZG9jdW1lbnQKKyAg
ICAgICAgICAgICh3aGljaCBpcyBhIHBsdWdpbiBpbiB0aGUgY2FzZSBvZiBhIHBsdWdpbiBkb2N1
bWVudCkuCisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luRG9jdW1lbnQ6OnNob3VsZExvYWRQbHVnaW5NYW51YWxseSk6IFJldHVybnMgd2hl
dGhlciBvciBub3Qgd2Ugc2hvdWxkIGxvYWQgdGhlIHBsdWdpbgorICAgICAgICAgICAgbWFudWFs
bHkuCisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudDo6c2V0U2hvdWxkTG9hZFBsdWdp
bk1hbnVhbGx5KTogU2V0IHdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBsb2FkIHRoZSBwbHVnaW4K
KyAgICAgICAgICAgIG1hbnVhbGx5LgorICAgICAgICAoV2ViQ29yZTo6dG9QbHVnaW5Eb2N1bWVu
dCk6CisgICAgICAgICogbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YmZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKTogQ2hlY2sgaWYgd2Ugc2hvdWxkIGxvYWQg
dGhlIHBsdWdpbiBtYW51YWxseSBhY2NvcmRpbmcgdG8gdGhlIHBsdWdpbgorICAgICAgICAgICAg
ZG9jdW1lbnQuCisKIDIwMTAtMDktMjkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmNwcAkocmV2aXNpb24gNjg2MDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxNCBAQAogI2luY2x1ZGUgIkF0
dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNTU0hlbHBlci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TmFtZXMuaCIKKyNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlTG9hZGVyLmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIK
KyNpbmNsdWRlICJNYWluUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJQbHVnaW5Eb2N1bWVu
dC5oIgogI2luY2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
SW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKQEAgLTE1OCw4ICsxNjEsMTUgQEAg
dm9pZCBIVE1MRW1iZWRFbGVtZW50Ojp1cGRhdGVXaWRnZXQoYm9vbAogICAgIFZlY3RvcjxTdHJp
bmc+IHBhcmFtVmFsdWVzOwogICAgIHBhcmFtZXRlcnNGb3JQbHVnaW4ocGFyYW1OYW1lcywgcGFy
YW1WYWx1ZXMpOwogCi0gICAgaWYgKCFkaXNwYXRjaEJlZm9yZUxvYWRFdmVudChtX3VybCkpCisg
ICAgaWYgKCFkaXNwYXRjaEJlZm9yZUxvYWRFdmVudChtX3VybCkpIHsKKyAgICAgICAgaWYgKGRv
Y3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSkgeworICAgICAgICAgICAgLy8gUGx1Z2lucyBp
bnNpZGUgcGx1Z2luIGRvY3VtZW50cyBsb2FkIGRpZmZlcmVudGx5IHRoYW4gb3RoZXIgcGx1Z2lu
cy4gQnkgdGhlIHRpbWUKKyAgICAgICAgICAgIC8vIHdlIGFyZSBoZXJlIGluIGEgcGx1Z2luIGRv
Y3VtZW50LCB0aGUgbG9hZCBvZiB0aGUgcGx1Z2luICh3aGljaCBpcyB0aGUgcGx1Z2luIGRvY3Vt
ZW50J3MKKyAgICAgICAgICAgIC8vIG1haW4gcmVzb3VyY2UpIGhhcyBhbHJlYWR5IHN0YXJ0ZWQu
IFdlIG5lZWQgdG8gZXhwbGljaXRseSBjYW5jZWwgdGhlIG1haW4gcmVzb3VyY2UgbG9hZCBoZXJl
LgorICAgICAgICAgICAgdG9QbHVnaW5Eb2N1bWVudChkb2N1bWVudCgpKS0+Y2FuY2VsTWFudWFs
UGx1Z2luTG9hZCgpOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBT
dWJmcmFtZUxvYWRlciogbG9hZGVyID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPnN1
YmZyYW1lTG9hZGVyKCk7CiAgICAgLy8gRklYTUU6IGJlZm9yZUxvYWQgY291bGQgaGF2ZSBkZXRh
Y2hlZCB0aGUgcmVuZGVyZXIhICBKdXN0IGxpa2UgaW4gdGhlIDxvYmplY3Q+IGNhc2UgYWJvdmUu
CkluZGV4OiBXZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDY4NjA0KQorKysgV2ViQ29y
ZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDggKzEyNSwx
MCBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhECiAgICAgZG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAKICAgICBpZiAoUmVuZGVyUGFydCogcmVuZGVyZXIgPSBt
X2VtYmVkRWxlbWVudC0+cmVuZGVyUGFydCgpKSB7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+
Y2xpZW50KCktPnJlZGlyZWN0RGF0YVRvUGx1Z2luKHJlbmRlcmVyLT53aWRnZXQoKSk7Ci0gICAg
ICAgIGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNl
TG9hZGVyKCktPnNldFNob3VsZEJ1ZmZlckRhdGEoZmFsc2UpOworICAgICAgICBpZiAoV2lkZ2V0
KiB3aWRnZXQgPSByZW5kZXJlci0+d2lkZ2V0KCkpIHsKKyAgICAgICAgICAgIGZyYW1lLT5sb2Fk
ZXIoKS0+Y2xpZW50KCktPnJlZGlyZWN0RGF0YVRvUGx1Z2luKHdpZGdldCk7CisgICAgICAgICAg
ICBmcmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZUxv
YWRlcigpLT5zZXRTaG91bGRCdWZmZXJEYXRhKGZhbHNlKTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIGZpbmlzaCgpOwpAQCAtMTM0LDExICsxMzYsMTIgQEAgdm9pZCBQbHVnaW5Eb2N1bWVudFBh
cnNlcjo6YXBwZW5kQnl0ZXMoRAogCiBQbHVnaW5Eb2N1bWVudDo6UGx1Z2luRG9jdW1lbnQoRnJh
bWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVy
bCkKKyAgICAsIG1fc2hvdWxkTG9hZFBsdWdpbk1hbnVhbGx5KHRydWUpCiB7CiAgICAgc2V0Q29t
cGF0aWJpbGl0eU1vZGUoUXVpcmtzTW9kZSk7CiAgICAgbG9ja0NvbXBhdGliaWxpdHlNb2RlKCk7
CiB9Ci0gICAgCisKIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IFBsdWdpbkRvY3VtZW50Ojpj
cmVhdGVQYXJzZXIoKQogewogICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRl
KHRoaXMpOwpAQCAtMTU4LDQgKzE2MSwxNSBAQCBOb2RlKiBQbHVnaW5Eb2N1bWVudDo6cGx1Z2lu
Tm9kZSgpCiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgUGx1Z2luRG9jdW1lbnQ6OmNhbmNlbE1h
bnVhbFBsdWdpbkxvYWQoKQoreworICAgIC8vIFBsdWdpbkRvY3VtZW50OjpjYW5jZWxNYW51YWxQ
bHVnaW5Mb2FkIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlLCBidXQgdGhlcmUgYXJlIGlzc3Vl
cworICAgIC8vIHdpdGggaG93IG1hbnkgdGltZXMgd2UgY2FsbCBiZWZvcmVsb2FkIG9uIG9iamVj
dCBlbGVtZW50cy4gPHJkYXI6Ly9wcm9ibGVtLzg0NDEwOTQ+LgorICAgIGlmICghc2hvdWxkTG9h
ZFBsdWdpbk1hbnVhbGx5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZyYW1lKCktPmxvYWRl
cigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+Y2FuY2Vs
KCk7CisgICAgc2V0U2hvdWxkTG9hZFBsdWdpbk1hbnVhbGx5KGZhbHNlKTsKK30KKwogfQpJbmRl
eDogV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL1BsdWdpbkRvY3VtZW50LmgJKHJldmlzaW9uIDY4NjA0KQorKysgV2ViQ29yZS9odG1sL1Bs
dWdpbkRvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDExICs0MywzNCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNQbHVnaW5Eb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KIAorICAgIHZvaWQgY2FuY2VsTWFudWFsUGx1Z2luTG9hZCgpOworCisgICAgYm9vbCBz
aG91bGRMb2FkUGx1Z2luTWFudWFsbHkoKSB7IHJldHVybiBtX3Nob3VsZExvYWRQbHVnaW5NYW51
YWxseTsgfQorCiBwcml2YXRlOgogICAgIFBsdWdpbkRvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VS
TCYpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJz
ZXIoKTsKKyAgICAgICAgCisgICAgdm9pZCBzZXRTaG91bGRMb2FkUGx1Z2luTWFudWFsbHkoYm9v
bCBsb2FkTWFudWFsbHkpIHsgbV9zaG91bGRMb2FkUGx1Z2luTWFudWFsbHkgPSBsb2FkTWFudWFs
bHk7IH0KKworICAgIGJvb2wgbV9zaG91bGRMb2FkUGx1Z2luTWFudWFsbHk7CiB9OworCitpbmxp
bmUgUGx1Z2luRG9jdW1lbnQqIHRvUGx1Z2luRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQor
eworICAgIEFTU0VSVCghZG9jdW1lbnQgfHwgZG9jdW1lbnQtPmlzUGx1Z2luRG9jdW1lbnQoKSk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBsdWdpbkRvY3VtZW50Kj4oZG9jdW1lbnQpOworfQor
CitpbmxpbmUgY29uc3QgUGx1Z2luRG9jdW1lbnQqIHRvUGx1Z2luRG9jdW1lbnQoY29uc3QgRG9j
dW1lbnQqIGRvY3VtZW50KQoreworICAgIEFTU0VSVCghZG9jdW1lbnQgfHwgZG9jdW1lbnQtPmlz
UGx1Z2luRG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFBsdWdpbkRv
Y3VtZW50Kj4oZG9jdW1lbnQpOworfQorCisvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRvaW5n
IGFuIHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvUGx1Z2luRG9jdW1lbnQoY29uc3QgUGx1Z2lu
RG9jdW1lbnQqKTsKICAgICAKIH0KIApJbmRleDogV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAko
cmV2aXNpb24gNjg2MDQpCisrKyBXZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKKyNpbmNsdWRl
ICJQbHVnaW5Eb2N1bWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCiAj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0zNTQsNyAr
MzU1LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbihIVE1MUGx1ZwogICAgIGZy
YW1lTG9hZGVyLT5jaGVja0lmUnVuSW5zZWN1cmVDb250ZW50KGRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCksIHVybCk7CiAKICAgICBJbnRTaXplIGNvbnRlbnRTaXplKHJlbmRlcmVyLT5jb250
ZW50V2lkdGgoKSwgcmVuZGVyZXItPmNvbnRlbnRIZWlnaHQoKSk7Ci0gICAgYm9vbCBsb2FkTWFu
dWFsbHkgPSBkb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkgJiYgIW1fY29udGFpbnNQbHVn
aW5zOworICAgIGJvb2wgbG9hZE1hbnVhbGx5ID0gZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVu
dCgpICYmICFtX2NvbnRhaW5zUGx1Z2lucyAmJiB0b1BsdWdpbkRvY3VtZW50KGRvY3VtZW50KCkp
LT5zaG91bGRMb2FkUGx1Z2luTWFudWFsbHkoKTsKICAgICBSZWZQdHI8V2lkZ2V0PiB3aWRnZXQg
PSBmcmFtZUxvYWRlci0+Y2xpZW50KCktPmNyZWF0ZVBsdWdpbihjb250ZW50U2l6ZSwKICAgICAg
ICAgcGx1Z2luRWxlbWVudCwgdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgbWltZVR5cGUs
IGxvYWRNYW51YWxseSk7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY4NjY5KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDktMjkg
IEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJFR1JFU1NJT04gKHI2NjEyOSk6IExv
YWRpbmcgZnVsbC1mcmFtZSAuc3dmIGZpbGUgY3Jhc2hlcyB3aXRoIGZsYXNoIGJsb2NrZXIgZXh0
ZW5zaW9uIGVuYWJsZWQKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00Njc3Mz4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzOTA5NzU+CisgICAgICAg
IAorICAgICAgICBBZGQgdGVzdHMgdGVzdGluZyBob3cgcGx1Z2luIGRvY3VtZW50cyBiZWhhdmUg
d2hlbiB0aGUgbG9hZGluZyBvZiB0aGVpciBwbHVnaW5zIGFyZSBjYW5jZWxsZWQuCisKKyAgICAg
ICAgKiBwbHVnaW5zL3BsdWdpbi1kb2N1bWVudC1sb2FkLXByZXZlbnRlZC11c2Vyc2NyaXB0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGx1Z2lucy9wbHVnaW4tZG9jdW1lbnQtbG9h
ZC1wcmV2ZW50ZWQtdXNlcnNjcmlwdC5odG1sOiBBZGRlZC4gVGVzdHMgY2FuY2VsbGluZyB0aGUg
bG9hZCBvZiBhIAorICAgICAgICAgICAgcGx1Z2luIGluIGEgcGx1Z2luIGRvY3VtZW50IHVzaW5n
IGJlZm9yZWxvYWQgYW5kIHByZXZlbnREZWZhdWx0LgorICAgICAgICAqIHBsdWdpbnMvcGx1Z2lu
LWRvY3VtZW50LXdpbGxTZW5kUmVxdWVzdC1udWxsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogcGx1Z2lucy9wbHVnaW4tZG9jdW1lbnQtd2lsbFNlbmRSZXF1ZXN0LW51bGwuaHRtbDog
QWRkZWQuIFRlc3RzIGNhbmNlbGxpbmcgdGhlIGxvYWQgb2YgYSBwbHVnaW4KKyAgICAgICAgICAg
IGluIGEgcGx1Z2luIGRvY3VtZW50IGJ5IGhhdmluZyB3aWxsU2VuZFJlcXVlc3QgcmV0dXJuIG51
bGwuCisKIDIwMTAtMDktMjkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgpJbmRleDogTGF5b3V0VGVz
dHMvcGx1Z2lucy9wbHVnaW4tZG9jdW1lbnQtbG9hZC1wcmV2ZW50ZWQtdXNlcnNjcmlwdC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9wbHVnaW4tZG9jdW1l
bnQtbG9hZC1wcmV2ZW50ZWQtdXNlcnNjcmlwdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9wbHVnaW5zL3BsdWdpbi1kb2N1bWVudC1sb2FkLXByZXZlbnRlZC11c2Vy
c2NyaXB0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorVGhpcyB0ZXN0
cyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY3NzMgYnkgaGF2aW5n
IHRoZSBsb2FkIG9mIHRoZSBwbHVnaW4gaW5zaWRlIHRoZSBwbHVnaW4gZG9jdW1lbnQgYmUgY2Fu
Y2VsbGVkLiBJZiB0aGVyZSBpcyBubyBjcmFzaCwgdGhlIHRlc3QgcGFzc2VkLiAgCkluZGV4OiBM
YXlvdXRUZXN0cy9wbHVnaW5zL3BsdWdpbi1kb2N1bWVudC1sb2FkLXByZXZlbnRlZC11c2Vyc2Ny
aXB0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9wbHVnaW4tZG9jdW1l
bnQtbG9hZC1wcmV2ZW50ZWQtdXNlcnNjcmlwdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvcGx1Z2lucy9wbHVnaW4tZG9jdW1lbnQtbG9hZC1wcmV2ZW50ZWQtdXNlcnNjcmlwdC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8aHRtbD4NCis8aGVhZD4NCisgICAg
PHNjcmlwdD4NCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsNCisg
ICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KKyAg
ICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5hZGRVc2VyU2NyaXB0KCJkb2N1
bWVudC5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmVsb2FkJywgZnVuY3Rpb24oZXZlbnQpIHsgaWYg
KGV2ZW50LnVybC5pbmRleE9mKCdzd2YnKSA+PSAwKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyB9
LCB0cnVlKTsiLCB0cnVlLCB0cnVlKTsNCisgICAgICAgIH0NCisgICAgPC9zY3JpcHQ+DQorPC9o
ZWFkPg0KKzxib2R5Pg0KKyAgICBUaGlzIHRlc3RzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00Njc3MyBieSBoYXZpbmcgdGhlIGxvYWQgb2YgdGhlIHBsdWdpbg0KKyAg
ICBpbnNpZGUgdGhlIHBsdWdpbiBkb2N1bWVudCBiZSBjYW5jZWxsZWQuIElmIHRoZXJlIGlzIG5v
IGNyYXNoLCB0aGUgdGVzdCBwYXNzZWQuDQorICAgIDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2lt
cGxlX2JsYW5rLnN3ZiI+PC9pZnJhbWU+DQorPC9ib2R5Pg0KKzwvaHRtbD4NCkluZGV4OiBMYXlv
dXRUZXN0cy9wbHVnaW5zL3BsdWdpbi1kb2N1bWVudC13aWxsU2VuZFJlcXVlc3QtbnVsbC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9wbHVnaW4tZG9jdW1l
bnQtd2lsbFNlbmRSZXF1ZXN0LW51bGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvcGx1Z2lucy9wbHVnaW4tZG9jdW1lbnQtd2lsbFNlbmRSZXF1ZXN0LW51bGwtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitUaGlzIHRlc3RzIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njc3MyBieSBoYXZpbmcgd2lsbFNlbmRS
ZXF1ZXN0IG9uIHRoZSBwbHVnaW4gZG9jdW1lbnQgcmV0dXJuIG51bGwuIElmIHRoZXJlIGlzIG5v
IGNyYXNoLCB0aGUgdGVzdCBwYXNzZWQuICAKSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvcGx1
Z2luLWRvY3VtZW50LXdpbGxTZW5kUmVxdWVzdC1udWxsLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGx1Z2lucy9wbHVnaW4tZG9jdW1lbnQtd2lsbFNlbmRSZXF1ZXN0LW51bGwuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsdWdpbnMvcGx1Z2luLWRvY3VtZW50LXdp
bGxTZW5kUmVxdWVzdC1udWxsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxo
dG1sPg0KKzxoZWFkPg0KKyAgICA8c2NyaXB0PiAgICAgICAgDQorICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7DQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOw0KKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFdp
bGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKHRydWUpOw0KKyAgICAgICAgfQ0KKyAgICA8L3Njcmlw
dD4NCis8L2hlYWQ+DQorPGJvZHk+DQorICAgIFRoaXMgdGVzdHMgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NzczIGJ5IGhhdmluZyB3aWxsU2VuZFJlcXVlc3Qgb24g
dGhlDQorICAgIHBsdWdpbiBkb2N1bWVudCByZXR1cm4gbnVsbC4gSWYgdGhlcmUgaXMgbm8gY3Jh
c2gsIHRoZSB0ZXN0IHBhc3NlZC4NCisgICAgPGlmcmFtZSBzcmM9InJlc291cmNlcy9zaW1wbGVf
Ymxhbmsuc3dmIj48L2lmcmFtZT4NCis8L2JvZHk+DQorPC9odG1sPg0K
</data>
<flag name="review"
          id="58913"
          type_id="1"
          status="+"
          setter="beidson"
    />
    <flag name="commit-queue"
          id="58914"
          type_id="3"
          status="-"
          setter="bweinstein"
    />
          </attachment>
      

    </bug>

</bugzilla>