<?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>45586</bug_id>
          
          <creation_ts>2010-09-10 22:57:29 -0700</creation_ts>
          <short_desc>Having an empty listener to beforeload events changes the behavior of other scripts</short_desc>
          <delta_ts>2014-12-02 09:28:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://odyniec.net/projects/imgzoom/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Marc Hoyois">marc.hoyois</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>aa</cc>
    
    <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>brent.montrose</cc>
    
    <cc>fam.lam</cc>
    
    <cc>gavinp</cc>
    
    <cc>hyatt</cc>
    
    <cc>nicholas</cc>
    
    <cc>pkasting</cc>
    
    <cc>sam</cc>
    
    <cc>techsoftadvanced</cc>
    
    <cc>trev</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>277650</commentid>
    <comment_count>0</comment_count>
      <attachid>67292</attachid>
    <who name="Marc Hoyois">marc.hoyois</who>
    <bug_when>2010-09-10 22:57:29 -0700</bug_when>
    <thetext>Created attachment 67292
A trivial Safari extension reproducing the bug

Overview:

Simply registering a beforeload event listener in an injected script breaks the imgZoom jQuery plugin.

Steps to reproduce:
1. Install the attached extension (and disable any other extension if you wish). It has the following trivial code in an injected script:

document.addEventListener(&quot;beforeload&quot;, function(){}, true);

2. Navigate to http://odyniec.net/projects/imgzoom/

3. Click on one of the three images. The image should enlarge.

4. Reload the page manually.

5. Click on the same image again.

Actual result:
The image shrinks.

Expected result:
The image should be enlarged as in step 3.

Platform:
Tested on OS X 10.6.4 with both Safari 5.0.2 and Webkit 6533.18.5, r67077

Note:
Theoretically, this extension should have no effect whatsoever. The same bug happens with nontrivial event handlers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278472</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-09-13 14:18:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/8424354&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282936</commentid>
    <comment_count>2</comment_count>
    <who name="Marc Hoyois">marc.hoyois</who>
    <bug_when>2010-09-22 08:07:04 -0700</bug_when>
    <thetext>The issue has been resolved by imgZoom 0.2.1. What was going on is that the script was using an image&apos;s offsetWidth property in a handler to the image&apos;s &apos;load&apos; event. Somehow the presence of any beforeload event listener delays the setting of offsetWidth to just after the handler is called (as can be seen using a setTimeout of 0 milliseconds), but it is not set within the handler (i.e. equals 0). Since the spec does not require .offsetWidth to be set when the &apos;load&apos; event is fired (the image&apos;s .width property has this purpose and works correctly), this behavior seems legit, although the fact that it happens exclusively with beforeload listeners indicates that it might be the consequence of another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290033</commentid>
    <comment_count>3</comment_count>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2010-10-05 18:50:35 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Since the spec does not require .offsetWidth to be set when the &apos;load&apos; event is fired (the image&apos;s .width property has this purpose and works correctly), this behavior seems legit, although the fact that it happens exclusively with beforeload listeners indicates that it might be the consequence of another bug.

I disagree that the behavior is legit. It appears that the behavior without anyone listening to the &apos;beforeLoad&apos; event is that the width/height are always set in the &apos;load&apos; event. I believe that is also the behavior in other browsers.

Therefore the result of this bug is that extension developers can break web compat in a very unexpected way that would be difficult for them to anticipate, or to do anything about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324000</commentid>
    <comment_count>4</comment_count>
    <who name="Wladimir Palant">trev</who>
    <bug_when>2010-12-17 14:55:38 -0800</bug_when>
    <thetext>The actual issue is that the &quot;load&quot; event for the image fires too early, before the image loads. In fact, the &quot;load&quot; event fires even before the &quot;beforeload&quot; event, you can clearly see it by putting console.log() calls into both event handlers. So you will always get a successful &quot;load&quot;, even for an image that doesn&apos;t exists. And this is clearly not by the spec, I don&apos;t think there are any doubts about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324002</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-17 15:06:37 -0800</bug_when>
    <thetext>&gt; the &quot;load&quot; event for the image fires too early, before the image loads. In fact, the &quot;load&quot; event fires even before the &quot;beforeload&quot; event

Can you reproduce this with Web content (without an extension)? Could you please attach a test case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324003</commentid>
    <comment_count>6</comment_count>
      <attachid>76914</attachid>
    <who name="Wladimir Palant">trev</who>
    <bug_when>2010-12-17 15:06:55 -0800</bug_when>
    <thetext>Created attachment 76914
Minimal testcase

Minimal testcase attached - you don&apos;t need an extension, a regular webpage will do. The first time you click the &quot;load image&quot; button (image not in cache yet) you get the correct output to the console:

document&apos;s beforeload event, image width = 0
image&apos;s load event, image width = 100

Note that we *first* have &quot;beforeload&quot; and only then the &quot;load&quot; event. Second time you get:

image&apos;s load event, image width = 0
document&apos;s beforeload event, image width = 0

Here and in all the subsequent runs you get the wrong behavior, &quot;load&quot; event fires before &quot;beforeload&quot; event. To get the original behavior you have to clear the browser cache, this bug apparently only happens for cached images.

Tested with Chrome 8.0.552.224.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324007</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-17 15:18:18 -0800</bug_when>
    <thetext>Nasty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454389</commentid>
    <comment_count>8</comment_count>
    <who name="Paul Harvey">webkit</who>
    <bug_when>2011-08-21 04:17:44 -0700</bug_when>
    <thetext>This is still a significant bug that needs attention.

See:
http://code.google.com/p/google-ajax-apis/issues/detail?id=566
http://code.google.com/p/adblockforchrome/issues/detail?id=5821</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457131</commentid>
    <comment_count>9</comment_count>
    <who name="Paul Buonopane">techsoftadvanced</who>
    <bug_when>2011-08-25 14:15:36 -0700</bug_when>
    <thetext>I am confirming that this is still a major bug, and much more so than the original report would have one believe.

I am developing a rather large, multi-browser extension for an advertising company that blocks ads.  (How that makes sense is a long story, and quite ingenious, but unnecessary for this discussion.)  To summarize my findings, adding a trivial beforeload handler, at least as part of an extension, disables numerous scripts across the Web.

Examples of notable sites that have become unusable after a trivial beforeload listener is installed include the Amazon AWS management console and Google Mail.

This bug is currently known to inhibit the abilities of AdBlock Plus, a popular extension.  I discovered this while looking to see how AdBlock Plus works around the bug.  It doesn&apos;t.  It can&apos;t.  Rather than blocking resources from loading as it should and could if it weren&apos;t for this bug, it has to manually go through each element and remove any that attempts to load a blocked resource: a much less efficient method.

As long as this bug persists, there is no way for extensions such as AdBlock Plus and my own to prevent resources from loading without predictably breaking an unacceptable number of web pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459634</commentid>
    <comment_count>10</comment_count>
    <who name="Wladimir Palant">trev</who>
    <bug_when>2011-08-31 07:59:54 -0700</bug_when>
    <thetext>Just realized that having the &quot;beforeload&quot; event handler around isn&apos;t necessary to get broken behavior. It is enough that the event handler was registered at some point - removing it again won&apos;t help you any more, the &quot;load&quot; event for images will still fire too early. Which severely limits the work-arounds one can try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459658</commentid>
    <comment_count>11</comment_count>
    <who name="Paul Buonopane">techsoftadvanced</who>
    <bug_when>2011-08-31 09:14:05 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Just realized that having the &quot;beforeload&quot; event handler around isn&apos;t necessary to get broken behavior. It is enough that the event handler was registered at some point - removing it again won&apos;t help you any more, the &quot;load&quot; event for images will still fire too early. Which severely limits the work-arounds one can try.

Wladimir Palant, I noticed that AdBlock Plus simply disables the majority of its checks for a hardcoded list of sites known to break because of this bug.  Would it be instead possible to re-fire the load events for each element after a certain delay?  I have yet to try this approach, but it seems plausible.

I did some more research into how this breaks Google Mail and the AWS Management Console.  It looks as though I was causing this bug to be more severe by triggering another bug.  I can&apos;t give many more details than that, as I have yet to investigate this other bug, but the point is that the bug on which we are focusing can become even more severe when coupled with other bugs or even certain JavaScript techniques.  For example, after adding a listener for beforeload, any modifications to an element&apos;s innerHTML property can have odd effects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459660</commentid>
    <comment_count>12</comment_count>
    <who name="Wladimir Palant">trev</who>
    <bug_when>2011-08-31 09:17:25 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Would it be instead possible to re-fire the load events for each element after a certain delay?

I tried that a while ago - it had no effect, the scripts in question only listen for the first &quot;load&quot; event (and it cannot be prevented).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459680</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-31 09:48:43 -0700</bug_when>
    <thetext>Also CC&apos;ing Sam, who recently did some work on image load events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464324</commentid>
    <comment_count>14</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-09-08 13:50:41 -0700</bug_when>
    <thetext>I&apos;m going to take a look at this today and see if I can make some progress. This bug has been assigned for almost a year but there doesn&apos;t seem to be any patch activity, so I assume I won&apos;t be stepping on anyone&apos;s feet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464330</commentid>
    <comment_count>15</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-09-08 13:53:00 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; Would it be instead possible to re-fire the load events for each element after a certain delay?
&gt; 
&gt; I tried that a while ago - it had no effect, the scripts in question only listen for the first &quot;load&quot; event (and it cannot be prevented).

I believe this is due to &lt;https://bugs.webkit.org/show_bug.cgi?id=33861&gt;. We add events to the document&apos;s listener map on calls to addEventListener() but do not remove them on calls to removeEventListener().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464334</commentid>
    <comment_count>16</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-09-08 13:55:32 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; I believe this is due to &lt;https://bugs.webkit.org/show_bug.cgi?id=33861&gt;. We add events to the document&apos;s listener map on calls to addEventListener() but do not remove them on calls to removeEventListener().

Sorry, this was meant to be in response to Comment #10.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464349</commentid>
    <comment_count>17</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-09-08 14:12:07 -0700</bug_when>
    <thetext>I think this is due to this block of code starting at &lt;http://trac.webkit.org/browser/trunk/Source/WebCore/loader/ImageLoader.cpp#L204&gt;:

        if (newImage) {
            newImage-&gt;addClient(this);
            if (!m_element-&gt;document()-&gt;hasListenerType(Document::BEFORELOAD_LISTENER))
                dispatchPendingBeforeLoadEvent();
            else
                beforeLoadEventSender().dispatchEventSoon(this);
        }

If newImage is cached, then the call to addClient() will cause the load event to fire *before* we dispatch the beforeload event. Not only is this the wrong order of events, but since dispatchPendingBeforeLoadEvent() is what ends up wiring up the cached image to the RenderImage, someone inspecting the image DOM object in an unload handler will see incorrect information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464351</commentid>
    <comment_count>18</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-09-08 14:13:10 -0700</bug_when>
    <thetext>s/unload/onload</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464359</commentid>
    <comment_count>19</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-09-08 14:17:14 -0700</bug_when>
    <thetext>In the case where Document::hasListenerType(Document::BEFORELOAD_LISTENER) returns false, things work correctly since the beforeload event is fired synchronously before the load event which is on a 0-delay timer. This bug is all about the case where hasListenerType() returns true and the beforeload event is also fired on a timer that happens to get queued behind the load event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464410</commentid>
    <comment_count>20</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-09-08 15:03:00 -0700</bug_when>
    <thetext>I think we&apos;re just calling setClient() too early. I&apos;m testing a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466187</commentid>
    <comment_count>21</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-09-13 01:26:08 -0700</bug_when>
    <thetext>*** Bug 65388 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466195</commentid>
    <comment_count>22</comment_count>
      <attachid>107152</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-09-13 01:52:43 -0700</bug_when>
    <thetext>Created attachment 107152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466284</commentid>
    <comment_count>23</comment_count>
      <attachid>107152</attachid>
    <who name="">mitz</who>
    <bug_when>2011-09-13 07:27:57 -0700</bug_when>
    <thetext>Comment on attachment 107152
Patch

Sorry, I didn’t mean to r+ this. (Didn’t mean to r- either!).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466313</commentid>
    <comment_count>24</comment_count>
      <attachid>107152</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-13 08:35:35 -0700</bug_when>
    <thetext>Comment on attachment 107152
Patch

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

&gt; Source/WebCore/loader/ImageLoader.cpp:209
&gt;              if (!m_element-&gt;document()-&gt;hasListenerType(Document::BEFORELOAD_LISTENER))
&gt;                  dispatchPendingBeforeLoadEvent();
&gt;              else
&gt;                  beforeLoadEventSender().dispatchEventSoon(this);
&gt; +            newImage-&gt;addClient(this);

I think it’s worth adding a comment here. It’s probably not obvious to most readers that addClient often results in a load event dispatch and that the order here is important so that beforeload goes before load. A brief &quot;why&quot; comment could make that clear without making the code unpleasant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468081</commentid>
    <comment_count>25</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-09-15 14:20:10 -0700</bug_when>
    <thetext>Committed r95228: &lt;http://trac.webkit.org/changeset/95228&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468184</commentid>
    <comment_count>26</comment_count>
    <who name="Paul Harvey">webkit</who>
    <bug_when>2011-09-15 17:42:59 -0700</bug_when>
    <thetext>Superb!  Thanks so much for your efforts, Andy.

When can we expect this to be rolled out to the average web user?

Thanks again,
PaulH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468240</commentid>
    <comment_count>27</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-09-15 19:14:09 -0700</bug_when>
    <thetext>Hi Paul,

It&apos;s not really possible for me to answer your question. All I can say is that this fix is in WebKit trunk and can be tested in WebKit nightly builds. It&apos;s up to the downstream vendors of WebKit-based products, not the WebKit Open Source Project itself, to decide if and when a version of WebKit that includes this fix is shipped to customers.

-Andy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496766</commentid>
    <comment_count>28</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2011-11-05 18:24:51 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; When can we expect this to be rolled out to the average web user?

I can&apos;t speak for other vendors, but for Chrome, this should be present in Chrome 16+, which currently corresponds to the Chrome beta, dev, and canary channels.

If you ever want to check this sort of thing you can visit http://omahaproxy.appspot.com/viewer .  Note the &quot;base webkit revision&quot; and compare to the revision number in comment 25.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520406</commentid>
    <comment_count>29</comment_count>
    <who name="famlam">fam.lam</who>
    <bug_when>2011-12-13 15:13:23 -0800</bug_when>
    <thetext>Hi Andy,
Thanks for fixing this!

It unfortunately looks like a small part of this bug isn&apos;t fixed yet. I filed that in bug 74451. I&apos;m not 100% sure about the relation to this issue, but it has a lot of similarities.

Kind regards,
Famlam</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>67292</attachid>
            <date>2010-09-10 22:57:29 -0700</date>
            <delta_ts>2010-09-10 22:57:29 -0700</delta_ts>
            <desc>A trivial Safari extension reproducing the bug</desc>
            <filename>test.safariextz</filename>
            <type>application/x-safari-extension</type>
            <size>5091</size>
            <attacher name="Marc Hoyois">marc.hoyois</attacher>
            
              <data encoding="base64">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
NDSra3UUSopKUzWtuQDOYRX9
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>76914</attachid>
            <date>2010-12-17 15:06:55 -0800</date>
            <delta_ts>2010-12-17 15:06:55 -0800</delta_ts>
            <desc>Minimal testcase</desc>
            <filename>beforeload_bug.html</filename>
            <type>text/html</type>
            <size>3630</size>
            <attacher name="Wladimir Palant">trev</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KPGhlYWQ+CiAgPHRpdGxlPmJlZm9yZWxvYWQgZXZlbnQg
aGFuZGxlciBpbmZsdWVuY2luZyBpbWFnZSBsb2FkPC90aXRsZT4KCiAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPgogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlbG9h
ZCIsIGZ1bmN0aW9uKGUpCiAgICB7CiAgICAgIGNvbnNvbGUubG9nKCJkb2N1bWVudCdzIGJlZm9y
ZWxvYWQgZXZlbnQsIGltYWdlIHdpZHRoID0gIiArIGUudGFyZ2V0LndpZHRoKTsKICAgIH0sIHRy
dWUpOwoKICAJZnVuY3Rpb24gcnVuVGVzdCgpCiAgICB7CiAgCQl2YXIgaW1nID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaW1nIik7CiAgCQlpbWcub25sb2FkID0gZnVuY3Rpb24oKQogICAgICB7
CiAgCQkJY29uc29sZS5sb2coImltYWdlJ3MgbG9hZCBldmVudCwgaW1hZ2Ugd2lkdGggPSAiKyB0
aGlzLndpZHRoKTsKICAJCX0KICAJCWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1nKTsKICAJ
CWltZy5zcmMgPSAiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdB
QUFHUUFBQUJrQ0FNQUFBQkhQR1ZtQUFBQ3RWQk1WRVglMkYlMkZ3QUFBQUQlMkIlMkZnQUJBUUQz
OXdEYjJ3QU5EUUQwOUFEOSUyRlFEdDdRQXNMQUFLQ2dEUzBnRDglMkZBRE96Z0NscFFEMjlnQ1Fr
QUFtSmdENiUyQmdENyUyQndDb3FBQVNFZ0I2ZWdBQ0FnQ09qZ0FIQndEZDNRQmhZUUFMQ3dBSkNR
QlBUd0RtNWdEYzNBQURBd0NGaFFBdkx3RHI2d0FPRGdDUGp3RFQwd0IzZHdDVWxBRGg0UUIlMkJm
Z0RsNVFEajR3QVVGQUJ0YlFCTFN3QyUyQnZnRHk4Z0QxOVFBRkJRQmZYd0FkSFFETXpBQVJFUUMz
dHdCOWZRQUVCQUIlMkZmd0JRVUFEdzhBQ3NyQUJWVlFEZTNnQVRFd0RIeHdBJTJGUHdDNnVnQ3pz
d0IyZGdBZUhnREZ4UUExTlFETHl3QU1EQUFHQmdBcEtRQ25wd0ElMkJQZ0N3c0FCaVlnQkNRZ0JZ
V0FCMGRBQ3BxUUFYRndEbzZBQnNiQUQ1JTJCUUFXRmdDTmpRQmxaUUNnb0FEejh3QnZid0N4c1FE
cDZRQnViZ0RpNGdDV2xnQ2twQUM0dUFEUjBRQWZId0RKeVFCblp3QkRRd0JkWFFBSUNBRFUxQUJH
UmdBUUVBQVlHQUI3ZXdER3hnQkhSd0JiV3dCS1NnRFcxZ0J4Y1FEazVBRFkyQUJNVEFDaG9RQmdZ
QUJxYWdBYUdnRHE2Z0NMaXdDRGd3Qk5UUUN5c2dCSlNRQ1NrZ0RhMmdDOXZRQndjQUQ0JTJCQUE3
T3dBWkdRQnJhd0F1TGdDbXBnQkJRUURFeEFDMnRnQjRlQUNabVFEeDhRQnBhUUE0T0FBMk5nQjhm
QUFWRlFBckt3QXRMUUJhV2dDVmxRRFoyUURYMXdCWFZ3QWtKQURnNEFDdnJ3QTNOd0FxS2dEQndR
QmpZd0RBd0FDQ2dnRGYzd0RWMVFBb0tBQ2RuUUMxdFFDZm53QWpJd0NNakFBME5BQThQQUMwdEFC
VVZBQWNIQUJrWkFEbjV3QWhJUUNSa1FBNk9nQ2FtZ0NLaWdCMWRRQzh2QUJUVXdDZW5nQmNYQUR2
N3dDSWlBQTlQUUJlWGdDRWhBQk9UZ0FQRHdESXlBQXdNQUFuSndDJTJGdndDdXJnQXlNZ0RDd2dC
RVJBQWJHd0FsSlFCWldRQnljZ0JJU0FCRlJRQ1ltQUJXVmdCemN3Q3FxZ0REd3dEUHp3QjVlUUJv
YUFES3lnQWlJZ0N0clFETnpRQiUyQlc0bTVBQUFFNWtsRVFWUjRYdTNhVTdQc1dCakg0ZmRObTl1
MmJkdTJlV3pidG0zYkdOdTJiYyUyRm5tSzNPU1hheWtuUjNjamUlMkYyJTJGJTJGRlU2bFVyVlNx
RnFDMFVtNnRXajdwMkEwMWpPU3hydEZyJTJCNmFxTFNxVWxCVEV1JTJGT05uZE04Z1JQMWJuclJo
b055SUV2VDRtZFFRRzZyUzljeUo1SElvakFRTFRUbVdTZVFUaGMxU0VwZlhlenZHTkxXVG9IMDZr
Tjg3VWVNVDFyQXZwNDRZQ2NTRkZjQ2RqY3dZZEFlcE9FT09OVEQxWklSMVZvZE9KaCUyQlc1TTBa
SEFXT05HOXg2UWd4bHh3cW9RRjRraFZFamlaN3BJWUVwSUJUbWVaTG95ODVRcHkxQzJFaEtoQm52
YVJrYW9Na0NuOUJ5U2tKUlJreTNVSlA1SmlCUmtMdmMySGhCOEJXWnVuNVVHbWdNeWQ1Q0pmWnNx
TlVNJTJCUFIwejFJSHNKVzhZaGNhQkFHOW1JZTRZU2lPZEtGcklSRkdsZUlRTjVWUSUyRksxUEVJ
OGEwaEEyRmViakd0VjRIYmpOSlglMkZHYVpSWkNId1RUeVBwRklQdlF4RHRYVUVRYnNvbXBUaG9m
Z3JzWEN5bndhOFNJWlp2cGIlMkJuSWxheWh2c0EzTHFnVVJhJTJCRVlZdlFnR0VudVNKZkRmQmJE
TTBoWFlSVlVRc2FRSWlDMEdSbVZNWVpFNXJDQUVrTGFSNUhvY3NJZUVNUkVUQnA2bURiSUhBcFhD
Q0VsZFNQSUx0TGVpcXpjNkNHZlBSU0FVSEVqeUV6UzdNZEdVdW5oY2Zhd1NSQzVvMExBdkNTSlNE
OEp5UlpFZEU4aDRGSGlmSVNOdkU0UHg5bkRDUkJzQ2dKMkU5Y3JpNWlHdjVrZVFyMlpneXBkR0ds
RlVEMUhuZ09aeUE3R1VNc2NEbGhFanBabXFJZ2l6dyUyRnFrTzQ4OCUyRnpvdTRCMDJub1F6dFVk
YmxtQVhPVmMlMkJ2U1l6Um9XdDlpR3ZGOUJySVZ3U1hEWFhJc2VKa3pGWm1DWEhEanlYdnhYVm9K
b2ZyQWNoTnV6ZTNycTAyYmc5bURtbFA3M0drRkNVMkVTS0o0VjZwVkhYb0lFNVJGWFVDdVA2QlVF
JTJGdSUyRiUyRlBKUW5LRWhTSGxGRG8lMkZKSUZIZ3BqOFRDZmVXUmZNaFdIb21ITmtweFpENGNM
RkhhOERnTXZ1bEtJNXBnd0VTbGtac0l1RnBweEFjQmV3M0tHZ09IRVJCZGxFVnl3NGVSTW1XUkNC
eEd6azlUMG5DOU1JSmdETzlLUmR5ekIxaFRjSXAzMkl1anlCbUtiNTJBMnBsNnlVYnBDJTJGZ2k3
eEE0aG9TJTJGQ2R6eXN4RHhvem5TaUlUTmpEOVhWaHJUR0lJN3VPT2NwVGpjMGdnSkx5enp0VG9j
em5jcWQxdU9Oc1IlMkZCV2UwUnVKbzF5JTJCTE1Ca3VEVGhhRGhlWjRVMGptQWFjREhkeHJMcjda
aklSc051SVkyMEk0TTRuOEJFU1BodTQ5YmpibU9DMHQ5ZFlnTnVObm5meWJFUnZETVUxMWdjeEVE
enJBZHo2VXJWb2E5R1pjejI1ZmZ0dGs2ZGh6czBQbDBUVGMzalhldUJwSVRJUjlBTyUyQnJOZVlm
OWxaM3NhUWlkMCUyQlByV255ODcyTmlPakJiT0JyJTJCUElSaXF1QUclMkJmck1wRGtZTFRkZ0p2
aHBaeENDN1JBMzhhbjA5VlNPNnpRN2xBYUMyT1IzQWJrQnI0UExXaGlRJTJGSXVoMzR4V1FnVmFQ
aUlrRmZBVGxQemNuVFgxJTJGWCUyQnRLQWFXNWJvSjkxUDVBciUyRndhNUNINmJETUs1SmglMkZ6
dWh4UlVMRGRiZGJlZ01sNkVFelhpWHdJSHRXQmJPa25JaiUyQkMzM25LaGlRaUNjRiUyQnVRdzNK
Q1A0dlR4R3ZFb0l3WDBXMlo2RGpHQzIwMiUyQmZTa1F4Qkg5WTU1d3hlU0tLSTJoYzRZeXg1MGVV
Z21EMFQ0NGJVM01rWDElMkY0T2N3eFl1c3ZLcFNNWU00a2l3Tkd6VVU3cjVUcyUyQnMxZUlqYmIl
MkZzc3hXWGQlMkZ0NGNJJTJCRU9MWklSYzBKJTJGenBCSlh6NlU0ZkdHcHVialVJQzdvcWp1MHps
MjltaHVYZmtwSVVQOFZjVkdHUzJTcXY2ZTd4R2J5QVFPYWYzd2lDeEdkUSUyQmo4M1JkT2FQODNO
Rk0lMkZDbERxcU5qOCUyQlBtUkpwVFVmNEZBMXJEQ2lQbTdBQUFBQUVsRlRrU3VRbUNDIjsKICAJ
fQogIDwvc2NyaXB0PgoKPC9oZWFkPgo8Ym9keT4KCjxwPkNsaWNrIHRoZSBidXR0b24gdG8gbG9h
ZCB0aGUgaW1hZ2UuIFJlc3VsdHMgZnJvbSBsb2FkIGFuZCBiZWZvcmVsb2FkIGV2ZW50cyB3aWxs
IGJlIHByaW50ZWQgdG8gY29uc29sZS4gTm90ZSB0aGF0IHRoZSBidWcgb25seSBhcHBlYXJzIG9u
IHRoZSBzZWNvbmQgcnVuLjwvcD4KCjxidXR0b24gb25jbGljaz0icnVuVGVzdCgpIj5DbGljayB0
byBsb2FkIGltYWdlPC9idXR0b24+Cgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107152</attachid>
            <date>2011-09-13 01:52:43 -0700</date>
            <delta_ts>2011-09-13 08:35:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45586-20110913015247.patch</filename>
            <type>text/plain</type>
            <size>5912</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ5ODAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYTQ0OTRhODNhYzc1YzE4OWYzNzQ5
MDRhYmJkMTk2ZjQ3MTFjYjY2Li4xMDJkMDg5YTA0YWRkNmUzNjIyYjFjOWI2MGM3OTUzMWRhM2Fk
MjA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMTMgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmluZyBhbiBlbXB0eSBsaXN0ZW5lciB0byBiZWZv
cmVsb2FkIGV2ZW50cyBjaGFuZ2VzIHRoZSBiZWhhdmlvciBvZiBvdGhlciBzY3JpcHRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTU4NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vYmVm
b3JlbG9hZC9jYWNoZWQtaW1hZ2UtYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9iZWZvcmVsb2FkL2NhY2hlZC1pbWFnZS1iZWZvcmUtbG9hZC5odG1s
OiBBZGRlZC4KKwogMjAxMS0wOS0xMiAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3ODk4CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL2NhY2hlZC1pbWFnZS1i
ZWZvcmUtbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2Fk
L2NhY2hlZC1pbWFnZS1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWEwNzQ5
Y2Q3MGM3YTRiNjU5ZmFkMzhkMGVhNzZiZTFjZjgwMTg3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvY2FjaGVkLWltYWdlLWJlZm9yZS1sb2FkLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMgaXMgYSByZWdyZXNzaW9uIHRlc3QgZm9y
IGh0dHA6Ly93ZWJraXQub3JnL2IvNDU1ODYuIEl0IHZlcmlmaWVzIHRoYXQgdGhlIGJlZm9yZWxv
YWQgZXZlbnQgZmlyZXMgYmVmb3JlIHRoZSBsb2FkIGV2ZW50IHdoZW4gbG9hZGluZyBhIGNhY2hl
ZCBpbWFnZSwgYW5kIHRoYXQgdGhlIGltYWdlJ3Mgc3R5bGUgYXR0cmlidXRlcyBjYW4gYmUgcXVl
cmllZCBpbiB0aGUgbG9hZCBldmVudCBoYW5kbGVyLiBPbiBzdWNjZXNzLCB5b3Ugc2hvdWxkIHNl
ZSB0d28gbGluZXMgb2YgZ3JlZW4gdGV4dCBzdGFydGluZyB3aXRoIHRoZSB3b3JkICdQQVNTJy4K
KworUEFTUzogbG9hZCBmaXJlZCBhZnRlciBiZWZvcmVsb2FkIGZvciBhIGNhY2hlZCBpbWFnZS4K
K1BBU1M6IGltYWdlIGlzIDE2cHggd2lkZS4KKyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2JlZm9yZWxvYWQvY2FjaGVkLWltYWdlLWJlZm9yZS1sb2FkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL2NhY2hlZC1pbWFnZS1iZWZvcmUtbG9hZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjMzNWVlOGZlYjQzMzg0ZGFiODAwZDdlOTI4NTlhMTNmNDUwNjljNDcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL2NhY2hlZC1pbWFn
ZS1iZWZvcmUtbG9hZC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvcHJpbnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0K
KworICAgIHdpbmRvdy5fYmVmb3JlbG9hZGZpcmVkID0gZmFsc2U7CisKKyAgICBmdW5jdGlvbiBy
dW5UZXN0KCkKKyAgICB7CisgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9y
ZWxvYWQiLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgd2luZG93Ll9iZWZvcmVsb2Fk
ZmlyZWQgPSB0cnVlOworICAgICAgICB9LCB0cnVlKTsKKworICAgICAgICBjYWNoZWRJbWFnZSA9
IG5ldyBJbWFnZSgpOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNhY2hlZElt
YWdlKTsKKyAgICAgICAgY2FjaGVkSW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cuX2JlZm9yZWxvYWRmaXJlZCkKKyAgICAgICAgICAgICAgICBw
cmludCgiUEFTUzogbG9hZCBmaXJlZCBhZnRlciBiZWZvcmVsb2FkIGZvciBhIGNhY2hlZCBpbWFn
ZS4iLCAiZ3JlZW4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcmludCgi
RkFJTDogbG9hZCBmaXJlZCBiZWZvcmUgYmVmb3JlbG9hZCBmb3IgYSBjYWNoZWQgaW1hZ2UuIiwg
InJlZCIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMud2lkdGggPT0g
MTYpCisgICAgICAgICAgICAgICAgcHJpbnQoIlBBU1M6IGltYWdlIGlzIDE2cHggd2lkZS4iLCAi
Z3JlZW4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcmludCgiRkFJTDog
aW1hZ2UgY2xhaW1zIG5vdCB0byBiZSAxNnB4IHdpZGUuIiwgInJlZCIpOworCisgICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgICAgICBjYWNoZWRJ
bWFnZS5zcmMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3JpZ2luYWxJbWFnZSIpLnNyYzsK
KyAgICAgICAgY2FjaGVkSW1hZ2Uuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIH0K
Kzwvc2NyaXB0PgorPHA+VGhpcyBpcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgPGEgaHJlZj0iaHR0
cDovL3dlYmtpdC5vcmcvYi80NTU4NiI+aHR0cDovL3dlYmtpdC5vcmcvYi80NTU4NjwvYT4uIEl0
IHZlcmlmaWVzIHRoYXQgdGhlIGJlZm9yZWxvYWQgZXZlbnQgZmlyZXMgYmVmb3JlIHRoZSBsb2Fk
IGV2ZW50IHdoZW4gbG9hZGluZyBhIGNhY2hlZCBpbWFnZSwgYW5kIHRoYXQgdGhlIGltYWdlJ3Mg
c3R5bGUgYXR0cmlidXRlcyBjYW4gYmUgcXVlcmllZCBpbiB0aGUgbG9hZCBldmVudCBoYW5kbGVy
LiBPbiBzdWNjZXNzLCB5b3Ugc2hvdWxkIHNlZSB0d28gbGluZXMgb2YgZ3JlZW4gdGV4dCBzdGFy
dGluZyB3aXRoIHRoZSB3b3JkICdQQVNTJy48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxpbWcgaWQ9Im9yaWdpbmFsSW1hZ2UiIHN0eWxlPSJ2aXNpYmlsaXR5OmhpZGRlbiIgb25sb2Fk
PSJydW5UZXN0KCkiIHNyYz0iLi4vLi4vaW1hZ2VzL3Jlc291cmNlcy90ZXN0LWxvYWQuanBnIj4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNGQ3MjI4Y2I0YzMyODFiNzE2ZTMzNDM3NjJjMzBjNTZlNGMzMGZmLi4x
OTQxYjIzMmYzNTcyMTRlMGRhZjk1YTBlYjBkYTRhNzI1MTFjYWQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTEtMDktMTMgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgor
CisgICAgICAgIEhhdmluZyBhbiBlbXB0eSBsaXN0ZW5lciB0byBiZWZvcmVsb2FkIGV2ZW50cyBj
aGFuZ2VzIHRoZSBiZWhhdmlvciBvZiBvdGhlciBzY3JpcHRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTU4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2JlZm9yZWxvYWQvY2Fj
aGVkLWltYWdlLWJlZm9yZS1sb2FkLmh0bWwKKyAgICAgICAgCisgICAgICAgIFdoZW4gbG9hZGlu
ZyBhIGNhY2hlZCBpbWFnZSBhZnRlciBhIGJlZm9yZWxvYWQgaGFuZGxlciBoYXMgYmVlbgorICAg
ICAgICBpbnN0YWxsZWQgb24gdGhlIGRvY3VtZW50LCBJbWFnZUxvYWRlciB3b3VsZCBkaXNwYXRj
aCBib3RoIHRoZQorICAgICAgICBiZWZvcmVsb2FkIGFuZCBsb2FkIGV2ZW50cyBhc3luY2hyb25v
dXNseSBpbiBzdWNoIGEgd2F5IHRoYXQgY2F1c2VkCisgICAgICAgIGxvYWQgdG8gZmlyZSBmaXJz
dC4gU2luY2UgYSBzaWRlIGVmZmVjdCBvZiBmaXJpbmcgdGhlIGJlZm9yZWxvYWQgZXZlbnQKKyAg
ICAgICAgaXMgdG8gd2lyZSB1cCB0aGUgQ2FjaGVkSW1hZ2UgdG8gaXRzIGFzc29jaWF0ZWQgUmVu
ZGVySW1hZ2Ugb2JqZWN0LAorICAgICAgICB0aGlzIHdvcmsgd2FzIG5vdCBkb25lIGJ5IHRoZSB0
aW1lIGxvYWQgZmlyZWQsIGFuZCBzY3JpcHRzIHRoYXQgcXVlcmllZAorICAgICAgICByZW5kZXJl
ci1kZXBlbmRlbnQgYXR0cmlidXRlcyBvZiB0aGUgaW1hZ2UgaW4gYW4gb25sb2FkIGhhbmRsZXIg
d291bGQKKyAgICAgICAgZ2V0IGJvZ3VzIHZhbHVlcyBpbiByZXR1cm4uCisKKyAgICAgICAgRml4
IHRoaXMgYnkgZW5zdXJpbmcgbG9hZCBmaXJlcyBhZnRlciBiZWZvcmVsb2FkIGluIHRoZSBjYWNo
ZWQgaW1hZ2UgY2FzZS4KKworICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOiBDYWxsIHNldENs
aWVudCgpIGFmdGVyCisgICAgICAgIGRpc3BhdGNoaW5nIGJlZm9yZWxvYWQsIHNpbmNlIHNldENs
aWVudCgpIHdpbGwgZGlzcGF0Y2ggdGhlIGxvYWQgZXZlbnQKKyAgICAgICAgaWYgdGhlIGltYWdl
IGlzIGNhY2hlZC4KKwogMjAxMS0wOS0xMiAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3ODk4
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCBjYzc0NzQ5ZDA2NGMwNGM0
ODc3ZTU4M2RjNWYwNTQ1YzJlMmRmZDUxLi4yYjE1OGNiNmY3ZWYwMzc5NDMzMTczOWEzYmMyNjdl
OTgxYWM3ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTIwMiwx
MSArMjAyLDExIEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAg
ICAgbV9pbWFnZUNvbXBsZXRlID0gIW5ld0ltYWdlOwogCiAgICAgICAgIGlmIChuZXdJbWFnZSkg
ewotICAgICAgICAgICAgbmV3SW1hZ2UtPmFkZENsaWVudCh0aGlzKTsKICAgICAgICAgICAgIGlm
ICghbV9lbGVtZW50LT5kb2N1bWVudCgpLT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkJFRk9S
RUxPQURfTElTVEVORVIpKQogICAgICAgICAgICAgICAgIGRpc3BhdGNoUGVuZGluZ0JlZm9yZUxv
YWRFdmVudCgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGJlZm9yZUxvYWRF
dmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOworICAgICAgICAgICAgbmV3SW1h
Z2UtPmFkZENsaWVudCh0aGlzKTsKICAgICAgICAgfQogICAgICAgICBpZiAob2xkSW1hZ2UpCiAg
ICAgICAgICAgICBvbGRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwo=
</data>
<flag name="review"
          id="103784"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>