<?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>27456</bug_id>
          
          <creation_ts>2009-07-20 12:26:32 -0700</creation_ts>
          <short_desc>Add &lt;input type=url&gt; validation support</short_desc>
          <delta_ts>2009-09-30 00:01:17 -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>Forms</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>19264</blocked>
    
    <blocked>29235</blocked>
    
    <blocked>29913</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peter Kasting">pkasting</reporter>
          <assigned_to name="Michelangelo De Simone">michelangelo</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ian</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mike</cc>
    
    <cc>pkasting</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>133195</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-20 12:26:32 -0700</bug_when>
    <thetext>See spec section 4.10.4.1.4.

Basically, the only real difference between a URL input and a normal single-line text input is that if the value is not a valid absolute URL, validityState&apos;s typeMismatch() method should return true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133508</commentid>
    <comment_count>1</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-21 10:24:45 -0700</bug_when>
    <thetext>Note: The underlying &quot;URL&quot; input type and associated parser changes were made on bug 25554, so this is only about validation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137181</commentid>
    <comment_count>2</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-04 16:30:58 -0700</bug_when>
    <thetext>In order to check for value&apos;s validity I&apos;ve been using KURL::isValid(), however there&apos;s a failing assertion in KURL::KURL(String&amp;), called by this code:

    if (inputType() == URL &amp;&amp; !value().isEmpty()) {
        KURL kurl(value());

        return !kurl.isValid();
    }

The assertion in KURL::KURL(String&amp;) fails due to the fact that the input parameter should be already a valid url.

Any idea/suggestion about that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137184</commentid>
    <comment_count>3</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-04 16:39:37 -0700</bug_when>
    <thetext>I&apos;m not sure you can directly convert the user&apos;s input to a URL type without performing fixup.  For example, we probably want to allow &quot;www.apple.com&quot;, but technically this needs to be fixed to &quot;http://www.apple.com/&quot;.

I know how to do fixup in the Chromium code but I&apos;m not sure where the right place in WebKit is.  There has to be one since we have to handle a lot of URLs in webpages already...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137185</commentid>
    <comment_count>4</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-04 16:41:15 -0700</bug_when>
    <thetext>Do you think that using a regexp to check it out would be wiser and/or more efficient?
Every other indication you can provide is welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137187</commentid>
    <comment_count>5</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-04 16:42:08 -0700</bug_when>
    <thetext>I&apos;m pretty sure you do not want to validate this via a regexp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137203</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-04 17:25:12 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; In order to check for value&apos;s validity I&apos;ve been using KURL::isValid(), however
&gt; there&apos;s a failing assertion in KURL::KURL(String&amp;), called by this code:
&gt; 
&gt;     if (inputType() == URL &amp;&amp; !value().isEmpty()) {
&gt;         KURL kurl(value());
&gt; 
&gt;         return !kurl.isValid();
&gt;     }
&gt; 
&gt; The assertion in KURL::KURL(String&amp;) fails due to the fact that the input
&gt; parameter should be already a valid url.

The single-argument constructor to KURL is only for use for strings that are already-encoded ASCII-only valid absolute URLs. So you can&apos;t just pass an arbitrary string to it. The multiple argument constructors are for use to turn strings from web pages into URLs, usually called through the Document::completeURL function rather than directly.

Alexey Proskuryakov is the person who invented this rule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137204</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-04 17:25:45 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;m not sure you can directly convert the user&apos;s input to a URL type without
&gt; performing fixup. For example, we probably want to allow &quot;www.apple.com&quot;, but
&gt; technically this needs to be fixed to &quot;http://www.apple.com/&quot;.
&gt; 
&gt; I know how to do fixup in the Chromium code but I&apos;m not sure where the right
&gt; place in WebKit is. There has to be one since we have to handle a lot of URLs
&gt; in webpages already.

This operation you&apos;re calling fixup is something that web browsers do in their page address fields, but WebKit never does this kind of operation on a URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137207</commentid>
    <comment_count>8</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-04 17:33:49 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #3)
&gt; &gt; I know how to do fixup in the Chromium code but I&apos;m not sure where the right
&gt; &gt; place in WebKit is. There has to be one since we have to handle a lot of URLs
&gt; &gt; in webpages already.
&gt; 
&gt; This operation you&apos;re calling fixup is something that web browsers do in their
&gt; page address fields, but WebKit never does this kind of operation on a URL.

Hmm.  While the spec allows the UA to restrict user input to valid absolute URLs (so people can&apos;t type &quot;www.apple.com&quot;), it also allows the UA to do this kind of conversion, which I think provides a much better user experience.  But if there is no code in WebCore to do this, that&apos;s problematic.  I suppose I could port over the code from Chromium, but it&apos;s a noticeable chunk of code (roughly one whole file worth, I think) and I&apos;d want to be sure that&apos;s what we want to do first.

I suppose another possibility, since in theory it might be nice to suggest URLs from history for these fields, is that we could somehow plumb the user&apos;s value up to the embedder, and let them worry about providing both a &quot;fixed up&quot; result and (maybe in the future someday) suggestions.

Thoughts on the best route forward?  I am happy to port some code from Chromium if it&apos;s desirable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137214</commentid>
    <comment_count>9</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-04 18:02:09 -0700</bug_when>
    <thetext>(In reply to comment #8)

&gt; Hmm.  While the spec allows the UA to restrict user input to valid absolute
&gt; URLs (so people can&apos;t type &quot;www.apple.com&quot;), it also allows the UA to do this
&gt; kind of conversion, which I think provides a much better user experience.  But

I&apos;ve been testing with this:

bool HTMLInputElement::typeMismatch() const
{
    if (inputType() == URL &amp;&amp; !value().isEmpty()) {
        KURL kurl(KURL(), value());

        return !kurl.isValid();;
    }
    
    return false;
}

It matches correctly all the &quot;absolute urls&quot; (eg: http://www.something.com:PORT/else), not short urls such as &quot;www.something.com&quot;. Remembering that we&apos;re just speaking about static validation and that the constraint is &quot;while the value of the element is not a valid absolute URL, the element is suffering from a type mismatch&quot; this would be somehow accepted.

What do you guys think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137215</commentid>
    <comment_count>10</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-04 18:05:40 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; It matches correctly all the &quot;absolute urls&quot; (eg:
&gt; http://www.something.com:PORT/else), not short urls such as
&gt; &quot;www.something.com&quot;. Remembering that we&apos;re just speaking about static
&gt; validation and that the constraint is &quot;while the value of the element is not a
&gt; valid absolute URL, the element is suffering from a type mismatch&quot; this would
&gt; be somehow accepted.

I repeat what I said in comment 8: this is allowed by the spec but IMO would be a poor user experience (especially once we hook the bits up that prevent form submission for forms with errors; then users will have to know precisely how to write a valid URL, which I think is borderline unacceptable).  I would prefer to see something that allowed more flexibility on the user&apos;s part, but I&apos;m not sure what the best implementation method for that would be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137230</commentid>
    <comment_count>11</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-04 19:00:34 -0700</bug_when>
    <thetext>(In reply to comment #10)

&gt; I repeat what I said in comment 8: this is allowed by the spec but IMO would be
&gt; a poor user experience (especially once we hook the bits up that prevent form
&gt; submission for forms with errors; then users will have to know precisely how to
&gt; write a valid URL, which I think is borderline unacceptable).  I would prefer
&gt; to see something that allowed more flexibility on the user&apos;s part, but I&apos;m not
&gt; sure what the best implementation method for that would be.

I agree with you on the user experience issue, we could address it in this way: if the user starts typing something that is not &quot;http://&quot; we prepend it automatically to the value; obviously this applies only on the UI side: values set from DOM are parsed as they are.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137254</commentid>
    <comment_count>12</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-04 22:41:45 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; if the user starts typing something that is not &quot;http://&quot; we prepend it
&gt; automatically to the value

If we&apos;re going to fix up the user&apos;s input to make it a valid URL, we might as well really do it; see http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/net/url_fixer_upper.cc?view=markup for an idea of what that means.

Looking at that code myself, it&apos;d be nice to avoid adding it to WebCore if we thought it was just as acceptable to call out to the embedder to do this for us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137758</commentid>
    <comment_count>13</comment_count>
      <attachid>34243</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-06 20:18:56 -0700</bug_when>
    <thetext>Created attachment 34243
Just a &quot;demo&quot;

The attached code (only) validates http/https urls which have at least a 1-char long hostname: if the validation is negative (no error) it updates the value with a &quot;pretty url&quot;. It&apos;s just to understand whether or not the direction is correct.

tkent suggested to look at http://www.w3.org/html/wg/href/draft.html for the [WEBADDRESS] spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138089</commentid>
    <comment_count>14</comment_count>
      <attachid>34243</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-07 13:16:24 -0700</bug_when>
    <thetext>Comment on attachment 34243
Just a &quot;demo&quot;

&gt; +    switch (input-&gt;inputType()) {
&gt; +        case HTMLInputElement::TEXT:
&gt; +        case HTMLInputElement::SEARCH:
&gt; +        case HTMLInputElement::TELEPHONE:
&gt; +        case HTMLInputElement::EMAIL:
&gt; +        case HTMLInputElement::PASSWORD:
&gt; +        case HTMLInputElement::NUMBER:
&gt; +        case HTMLInputElement::FILE:
&gt; +        case HTMLInputElement::CHECKBOX:
&gt; +        case HTMLInputElement::RADIO:
&gt; +        case HTMLInputElement::HIDDEN:
&gt; +        case HTMLInputElement::RANGE:
&gt; +        case HTMLInputElement::SUBMIT:
&gt; +        case HTMLInputElement::IMAGE:
&gt; +        case HTMLInputElement::RESET:
&gt; +        case HTMLInputElement::BUTTON:
&gt; +        case HTMLInputElement::ISINDEX:
&gt; +            return false;
&gt; +        case HTMLInputElement::URL:

Doing a giant switch for one case seems lame to me.  Why not just &quot;if (input-&gt;inputType() != HTMLInputElement::URL) return false;&quot;?

Adding validation of email later won&apos;t present much of a challenge to that code.  And it will mean you don&apos;t have to be super-indented.

&gt; +            if (kurl.isValid()
&gt; +                &amp;&amp; !kurl.host().isEmpty()
&gt; +                &amp;&amp; (kurl.protocolIs(&quot;http&quot;) || kurl.protocolIs(&quot;https&quot;))) {

Why check the protocol?

&gt; +                input-&gt;setValue(kurl.prettyURL());
&gt; +                input-&gt;setNeedsStyleRecalc();

I don&apos;t think you should ever screw with the value displayed to the user.  I think that means for URL types, you&apos;ll need to have two variables, one for the user-visible value, and one for the underlying value that script sees.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139176</commentid>
    <comment_count>15</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-11 17:29:57 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I don&apos;t think you should ever screw with the value displayed to the user.  I
&gt; think that means for URL types, you&apos;ll need to have two variables, one for the
&gt; user-visible value, and one for the underlying value that script sees.

I agree that modifying the value inside typeMismatch() is not good.

We already have two storages for the &quot;value&quot;; a &quot;value&quot; HTML attribute and InputElementData:m_value, and they have different roles.  Introducing another storage seems messy.  If we&apos;d like to support for fixup such as &quot;webkit.org&quot; -&gt; &quot;http://webkit.org&quot;, I recommend
 - storing user-input string to InputElementData:m_value as ever
 - HTMLInputElement::value(), typeMatch(), appendFormData() (and others?) make a fixup value from InputElementData:m_value, use it, and don&apos;t store it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139201</commentid>
    <comment_count>16</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-11 18:27:19 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; We already have two storages for the &quot;value&quot;; a &quot;value&quot; HTML attribute and
&gt; InputElementData:m_value, and they have different roles.  Introducing another
&gt; storage seems messy.  If we&apos;d like to support for fixup such as &quot;webkit.org&quot; -&gt;
&gt; &quot;http://webkit.org&quot;, I recommend
&gt;  - storing user-input string to InputElementData:m_value as ever
&gt;  - HTMLInputElement::value(), typeMatch(), appendFormData() (and others?) make
&gt; a fixup value from InputElementData:m_value, use it, and don&apos;t store it

The only concern I have about this is speed.  Needing to parse, fix up, etc. on every access to the DOM value can be costly.  Maybe there&apos;s a way we can add a subclass somewhere so we can split m_value into m_rawValue and m_cookedValue only for inputs of type URL?  That way at least we&apos;d avoid paying the memory cost on every input element...

Interested in Darin Adler&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140855</commentid>
    <comment_count>17</comment_count>
      <attachid>34996</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-17 16:00:07 -0700</bug_when>
    <thetext>Created attachment 34996
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140858</commentid>
    <comment_count>18</comment_count>
      <attachid>34996</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-17 16:08:58 -0700</bug_when>
    <thetext>Comment on attachment 34996
Patch v1

&gt; diff --git a/LayoutTests/fast/forms/ValidityState-typeMismatch-001.html b/LayoutTests/fast/forms/ValidityState-typeMismatch-001.html
&gt; +&lt;script&gt;
&gt; +description(&quot;This test performs a negative check on type=url input elements.&quot;);

It&apos;s a negative check of typeMismatch, but a positive check of type=url validating.  Maybe &quot;...a positive check of type=url validation.&quot;

&gt; diff --git a/LayoutTests/fast/forms/ValidityState-typeMismatch-002.html b/LayoutTests/fast/forms/ValidityState-typeMismatch-002.html
&gt; +&lt;input name=&quot;victim&quot; type=&quot;url&quot; value=&quot;www.google.com&quot; /&gt;
&gt; +&lt;input name=&quot;victim&quot; type=&quot;url&quot; value=&quot;127.0.0.1&quot; /&gt;
&gt; +&lt;input name=&quot;victim&quot; type=&quot;url&quot; value=&quot;.com&quot; /&gt;
&gt; +&lt;input name=&quot;victim&quot; type=&quot;url&quot; value=&quot;http://www.g**gle.com&quot; /&gt;
&gt; +&lt;input name=&quot;victim&quot; type=&quot;url&quot; value=&quot;http://www.google.com:aaaa&quot; /&gt;
&gt; +&lt;input name=&quot;victim&quot; type=&quot;url&quot; value=&quot;http:/www.google.com&quot; /&gt;
&gt; +&lt;input name=&quot;victim&quot; type=&quot;url&quot; value=&quot;http:/www.google.com&quot; /&gt;

The line above is a duplicate of the one above it, and should be removed (and expected results updated).

&gt; +description(&quot;This test performs a positive check on type=url input elements.&quot;);

Same comment as above, but reversed.

&gt; diff --git a/WebCore/html/ValidityState.cpp b/WebCore/html/ValidityState.cpp
&gt; +bool ValidityState::typeMismatch()
&gt; +{
&gt; +    if (!control()-&gt;hasTagName(inputTag))
&gt; +        return false;
&gt; +
&gt; +    HTMLInputElement* input = static_cast&lt;HTMLInputElement*&gt;(control());
&gt; +    String value = input-&gt;value();
&gt; +    
&gt; +    if (value.isEmpty())
&gt; +        return false;
&gt; +
&gt; +    if (input-&gt;inputType() == HTMLInputElement::URL) {
&gt; +        KURL kurl(KURL(), value);
&gt; +        
&gt; +        return !kurl.isValid() || kurl.host().isEmpty();

Nit: No blank line in the middle of that conditional.

You don&apos;t have any layout tests that test URLs with a non-empty path.  This seems important.

You don&apos;t do any fixup (at all) of the user&apos;s input, not even adding a scheme, or escaping spaces in the path.  Is this what we want?  I&apos;m concerned about the UX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140876</commentid>
    <comment_count>19</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-17 16:35:22 -0700</bug_when>
    <thetext>(In reply to comment #18)

&gt; You don&apos;t do any fixup (at all) of the user&apos;s input, not even adding a scheme,

IMO this should be left to embedder, once type=url has its own UI widget.

&gt; or escaping spaces in the path.

KURL::parse does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140881</commentid>
    <comment_count>20</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-17 16:39:04 -0700</bug_when>
    <thetext>(In reply to comment #19)

&gt; &gt; or escaping spaces in the path.
&gt; KURL::parse does.

Correction: &quot;general escaping&quot; is managed by KURL::parse, I tought to escape/strip spaces from value but the only sanitiziation allowed by specs is for CR/LF which is already wired into HTMLInputElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140884</commentid>
    <comment_count>21</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-17 16:44:24 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; 
&gt; &gt; You don&apos;t do any fixup (at all) of the user&apos;s input, not even adding a scheme,
&gt; 
&gt; IMO this should be left to embedder, once type=url has its own UI widget.

There are no plans to grant this a special widget, AFAIK.

&gt; &gt; or escaping spaces in the path.
&gt; 
&gt; KURL::parse does.

...but the value being provided via DOM access is the original value the user types in, not the result of parse().  See comments 14 - 16...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141079</commentid>
    <comment_count>22</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-18 06:40:51 -0700</bug_when>
    <thetext>(In reply to comment #21)

&gt; There are no plans to grant this a special widget, AFAIK.

I&apos;d say, why not give it a tought?:) However, we can address these two issues separately: one patch for static validation and another one for the value fixup (and PERHAPS a more specialized behaviour for type=url input elements), what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141112</commentid>
    <comment_count>23</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-18 10:03:43 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; one patch for static validation and another one for the value fixup
&gt; (and PERHAPS a more specialized behaviour for type=url input elements), what do
&gt; you think?

The only worry I have with this plan is about cases when KURL internally does some fixup work (like escaping spaces in the path) and reports &quot;valid&quot;, but the value we supply to the DOM is the &quot;invalid&quot; version.  I&apos;m not sure what the spec says about how this functions, but that seems like it could potentially cause problems.

CCing Hixie.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141801</commentid>
    <comment_count>24</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-20 22:46:47 -0700</bug_when>
    <thetext>The following comments were lost due to database corruption:

--- Comment #24 from Michelangelo De Simone &lt;micdesim@gmail.com&gt;  2009-08-20 15:17:05 PDT ---
(In reply to comment #23)

&gt; The only worry I have with this plan is about cases when KURL internally does
&gt; some fixup work (like escaping spaces in the path) and reports &quot;valid&quot;, but the

While waiting for Hixie&apos;s opinion, what would you suggest instead of KURL?
Having an ex-novo method to check for urls&apos; validity could be quite prone to
errors.

****

I replied with a comment 25 like:

I&apos;m not suggesting something instead of KURL-- I&apos;m suggesting that we may need to take the resulting &quot;canonical&quot; (or whatever you&apos;d call it) URL string from inside KURL and supply that back to callers.

****

--- Comment #26 from Michelangelo De Simone &lt;micdesim@gmail.com&gt;  2009-08-20 15:49:14 PDT ---
(In reply to comment #25)

&gt; I&apos;m not suggesting something instead of KURL-- I&apos;m suggesting that we may need
&gt; to take the resulting &quot;canonical&quot; (or whatever you&apos;d call it) URL string from
&gt; inside KURL and supply that back to callers.

Let&apos;s put all the pieces together:

Mere validation: KURL.isValid is ok; returns correctly if the URI is a valid
URL (meaning it must have a scheme, otherwise it is obviously invalid). Assume
this &quot;fixed&quot; for now.

Fixup: KURL.prettyUrl could be used but (for the reason I&apos;ve written above) it
doesn&apos;t fixup urls without scheme so the work to prepend a default &quot;http://&quot; to
the value is needed anyway.

Possible solution for the fixup issue: check if value has a scheme (KURL could
be of help), if NO scheme is found (and, therefore, the value is INVALID)
prepend a default scheme (&quot;http://&quot;?) and finally check for value&apos;s validity
with kurl::isvalid().

If this &quot;possible solution&quot; is sound: when should it be triggered? On the first
char input by the user (setting value from DOM)?

****

I replied with a comment 27 like:

The worry I have is that KURL may do fixup that makes it report &quot;valid&quot;, but if we don&apos;t give that string to callers, we could give them something that isn&apos;t technically valid.

I also gave several possibilities for how to implement validation and supplying values back to callers.  Michelangelo can supply the details of this comment, I don&apos;t have them in my inbox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141961</commentid>
    <comment_count>25</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-21 13:51:03 -0700</bug_when>
    <thetext>Here follows the comment #27 from Peter Kasting.

--- Comment #27 from Peter Kasting &lt;pkasting@google.com&gt;  2009-08-20 15:59:29 PDT ---
(In reply to comment #26)
&gt; Mere validation: KURL.isValid is ok; returns correctly if the URI is a valid
&gt; URL (meaning it must have a scheme, otherwise it is obviously invalid). Assume
&gt; this &quot;fixed&quot; for now.

The issue I&apos;m trying to get at is that if KURL says the URL is valid, you&apos;ll
pass validation, but if you return the raw user input to callers, the actual
string you&apos;re returning may not be a valid URL (due to minor stuff like not
converting spaces in the path into %20).  This might screw up somebody&apos;s
script.  On the other hand maybe it&apos;s not worse than the no-validation we&apos;re
doing today.

&gt; If this &quot;possible solution&quot; is sound: when should it be triggered? On the first
&gt; char input by the user (setting value from DOM)?

You can do it one of several ways.

* You can avoid adding any member variables, and always do whatever minimal
&quot;fix up&quot; you&apos;re going to do when someone asks what the value is, or asks if the
field is valid.  Adds no variables, but has the highest runtime cost.

* You can hold a member variable on the element that&apos;s the &quot;fixed up&quot; version
out of KURL, supply this to anyone who asks, and update it every time the
element&apos;s value is mutated.  Saves runtime cost at the expense of some
complexity and a new member.

* You can add both a variable to hold the &quot;fixed up&quot; value and a bool to say
whether the value is dirty, set the bool anytime the value is modified, and do
fixup any time someone asks for the value and the bool is set.  Most complex,
but lowest runtime cost.

Or, we could decide that we should do no fixup at all (legal per the spec, may
be a poor UX), or that we&apos;ll do some minimal fixes (i.e. what KURL does
automatically) but are OK sending the unmodified user string to callers
(probably not legal per the spec), and do none of these.

I can&apos;t make this decision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146432</commentid>
    <comment_count>26</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-10 18:40:32 -0700</bug_when>
    <thetext>I think we may commit this patch without any fix-up, and discuss how to fix up and make another patch for fix-up.
Smaller patch is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146466</commentid>
    <comment_count>27</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-09-10 23:48:59 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; I think we may commit this patch without any fix-up, and discuss how to fix up
&gt; and make another patch for fix-up.
&gt; Smaller patch is better.

I&apos;ll rebase the patch in hours.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146593</commentid>
    <comment_count>28</comment_count>
      <attachid>39440</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-09-11 09:12:25 -0700</bug_when>
    <thetext>Created attachment 39440
Patch v1, rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146594</commentid>
    <comment_count>29</comment_count>
      <attachid>39441</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-09-11 09:13:47 -0700</bug_when>
    <thetext>Created attachment 39441
Patch v1, rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146740</commentid>
    <comment_count>30</comment_count>
      <attachid>39474</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-09-11 14:19:07 -0700</bug_when>
    <thetext>Created attachment 39474
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146743</commentid>
    <comment_count>31</comment_count>
      <attachid>39475</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-09-11 14:31:30 -0700</bug_when>
    <thetext>Created attachment 39475
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146754</commentid>
    <comment_count>32</comment_count>
      <attachid>39475</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-11 15:01:11 -0700</bug_when>
    <thetext>Comment on attachment 39475
Patch v1

Clearing flags on attachment: 39475

Committed r48318: &lt;http://trac.webkit.org/changeset/48318&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146755</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-11 15:01:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147006</commentid>
    <comment_count>34</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-13 18:07:53 -0700</bug_when>
    <thetext>I have made a bug entry for fix up: Bug#29235</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34243</attachid>
            <date>2009-08-06 20:18:56 -0700</date>
            <delta_ts>2009-08-10 06:02:31 -0700</delta_ts>
            <desc>Just a &quot;demo&quot;</desc>
            <filename>pre-27456.patch</filename>
            <type>text/plain</type>
            <size>2652</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBiL1dlYkNvcmUvaHRt
bC9WYWxpZGl0eVN0YXRlLmNwcAppbmRleCA4NjIyN2Q0Li42NzIwYjJjIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5
U3RhdGUuY3BwCkBAIC0yMywxNCArMjMsNjcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJWYWxpZGl0eVN0YXRlLmgiCiAKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRl
ICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiS1VSTC5oIgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKIFZhbGlkaXR5U3RhdGU6OlZh
bGlkaXR5U3RhdGUoSFRNTEZvcm1Db250cm9sRWxlbWVudCogcGFyZW50KQogICAgIDogbV9jb250
cm9sKHBhcmVudCkKIHsKICAgICBBU1NFUlQocGFyZW50KTsKIH0KIAorYm9vbCBWYWxpZGl0eVN0
YXRlOjp0eXBlTWlzbWF0Y2goKQoreworICAgIGlmICghY29udHJvbCgpLT5oYXNUYWdOYW1lKGlu
cHV0VGFnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSFRNTElucHV0RWxlbWVudCog
aW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oY29udHJvbCgpKTsKKworICAg
IFN0cmluZyB2YWx1ZSA9IGlucHV0LT52YWx1ZSgpOworICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAoaW5wdXQtPmlucHV0VHlwZSgp
KSB7CisgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6VEVYVDoKKyAgICAgICAgY2FzZSBI
VE1MSW5wdXRFbGVtZW50OjpTRUFSQ0g6CisgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6
VEVMRVBIT05FOgorICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OkVNQUlMOgorICAgICAg
ICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OlBBU1NXT1JEOgorICAgICAgICBjYXNlIEhUTUxJbnB1
dEVsZW1lbnQ6Ok5VTUJFUjoKKyAgICAgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpGSUxFOgor
ICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OkNIRUNLQk9YOgorICAgICAgICBjYXNlIEhU
TUxJbnB1dEVsZW1lbnQ6OlJBRElPOgorICAgICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OkhJ
RERFTjoKKyAgICAgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpSQU5HRToKKyAgICAgICAgY2Fz
ZSBIVE1MSW5wdXRFbGVtZW50OjpTVUJNSVQ6CisgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVu
dDo6SU1BR0U6CisgICAgICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6UkVTRVQ6CisgICAgICAg
IGNhc2UgSFRNTElucHV0RWxlbWVudDo6QlVUVE9OOgorICAgICAgICBjYXNlIEhUTUxJbnB1dEVs
ZW1lbnQ6OklTSU5ERVg6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2Ug
SFRNTElucHV0RWxlbWVudDo6VVJMOgorICAgICAgICAgICAgS1VSTCBrdXJsKEtVUkwoKSwgdmFs
dWUpOworCisgICAgICAgICAgICBpZiAoa3VybC5pc1ZhbGlkKCkKKyAgICAgICAgICAgICAgICAm
JiAha3VybC5ob3N0KCkuaXNFbXB0eSgpCisgICAgICAgICAgICAgICAgJiYgKGt1cmwucHJvdG9j
b2xJcygiaHR0cCIpIHx8IGt1cmwucHJvdG9jb2xJcygiaHR0cHMiKSkpIHsKKyAgICAgICAgICAg
ICAgICBpbnB1dC0+c2V0VmFsdWUoa3VybC5wcmV0dHlVUkwoKSk7CisgICAgICAgICAgICAgICAg
aW5wdXQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBW
YWxpZGl0eVN0YXRlOjp2YWxpZCgpCiB7CiAgICAgYm9vbCBzb21lRXJyb3IgPSB0eXBlTWlzbWF0
Y2goKSB8fCBzdGVwTWlzbWF0Y2goKSB8fCByYW5nZVVuZGVyZmxvdygpIHx8IHJhbmdlT3ZlcmZs
b3coKSB8fApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaCBiL1dlYkNv
cmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKaW5kZXggNGIyZjAyMi4uNjM1YWNiNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaAorKysgYi9XZWJDb3JlL2h0bWwvVmFsaWRp
dHlTdGF0ZS5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
SFRNTEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJv
bDsgfQogCiAgICAgICAgIGJvb2wgdmFsdWVNaXNzaW5nKCkgeyByZXR1cm4gY29udHJvbCgpLT52
YWx1ZU1pc3NpbmcoKTsgfQotICAgICAgICBib29sIHR5cGVNaXNtYXRjaCgpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgICAgIGJvb2wgdHlwZU1pc21hdGNoKCk7CiAgICAgICAgIGJvb2wgcGF0dGVy
bk1pc21hdGNoKCkgeyByZXR1cm4gY29udHJvbCgpLT5wYXR0ZXJuTWlzbWF0Y2goKTsgfQogICAg
ICAgICBib29sIHRvb0xvbmcoKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICBib29sIHJhbmdl
VW5kZXJmbG93KCkgeyByZXR1cm4gZmFsc2U7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34996</attachid>
            <date>2009-08-17 16:00:07 -0700</date>
            <delta_ts>2009-09-11 09:12:09 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-27456-20090818010005.patch</filename>
            <type>text/plain</type>
            <size>10368</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMzRlYWJhLi4xMDc1MWQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDgt
MTcgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NDU2CisgICAgICAgIFN1cHBvcnQgZm9yIHN0YXRp
YyB2YWxpZGF0aW9uIG9uIHR5cGU9dXJsIGlucHV0IGVsZW1lbnRzLCBmcm9tCisgICAgICAgIEhU
TUw1IHNwZWNzOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMv
Y3VycmVudC13b3JrL211bHRpcGFnZS9mb3Jtcy5odG1sI3VybC1zdGF0ZQorCisgICAgICAgICog
ZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXR5cGVNaXNtYXRjaC0wMDEtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdHlwZU1pc21hdGNoLTAw
MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdHlwZU1p
c21hdGNoLTAwMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFs
aWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gtMDAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gtMDAzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXR5cGVNaXNtYXRjaC0wMDMuaHRt
bDogQWRkZWQuCisKIDIwMDktMDgtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdHlwZU1pc21hdGNoLTAwMS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdHlwZU1pc21hdGNoLTAw
MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdiMjA3
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0
ZS10eXBlTWlzbWF0Y2gtMDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACitUaGlzIHRl
c3QgcGVyZm9ybXMgYSBuZWdhdGl2ZSBjaGVjayBvbiB0eXBlPXVybCBpbnB1dCBlbGVtZW50cy4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKyAgICAgICAgIAorUEFTUyB2W2ldLnZh
bGlkaXR5LnR5cGVNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyB2W2ldLnZhbGlkaXR5LnR5cGVNaXNt
YXRjaCBpcyBmYWxzZQorUEFTUyB2W2ldLnZhbGlkaXR5LnR5cGVNaXNtYXRjaCBpcyBmYWxzZQor
UEFTUyB2W2ldLnZhbGlkaXR5LnR5cGVNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyB2W2ldLnZhbGlk
aXR5LnR5cGVNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyB2W2ldLnZhbGlkaXR5LnR5cGVNaXNtYXRj
aCBpcyBmYWxzZQorUEFTUyB2W2ldLnZhbGlkaXR5LnR5cGVNaXNtYXRjaCBpcyBmYWxzZQorUEFT
UyB2W2ldLnZhbGlkaXR5LnR5cGVNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyB2W2ldLnZhbGlkaXR5
LnR5cGVNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyB2W2ldLnZhbGlkaXR5LnR5cGVNaXNtYXRjaCBp
cyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBl
TWlzbWF0Y2gtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
dHlwZU1pc21hdGNoLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
Ljg3OWIxOTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlk
aXR5U3RhdGUtdHlwZU1pc21hdGNoLTAwMS5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8aW5wdXQg
bmFtZT0idmljdGltIiB0eXBlPSJ1cmwiIHZhbHVlPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20iIC8+
Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ1cmwiIHZhbHVlPSJodHRwOi8vbG9jYWxob3N0
IiAvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idXJsIiB2YWx1ZT0iaHR0cDovLzEyNy4w
LjAuMSIgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InVybCIgdmFsdWU9Imh0dHA6Ly93
d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cmxzPWVuJnE9V2ViS2l0JmllPVVURi04Jm9lPVVURi04IiAv
PgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idXJsIiB2YWx1ZT0iaHR0cDovL3d3dy5nb29n
bGUuY29tOjgwL3NlYXJjaD9ybHM9ZW4mcT1XZWJLaXQmaWU9VVRGLTgmb2U9VVRGLTgiIC8+Cis8
aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ1cmwiIHZhbHVlPSJodHRwOi8vYSIgLz4KKzxpbnB1
dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InVybCIgdmFsdWU9ImZ0cDovL2Z0cC5teWhvc3QuY29tIiAv
PgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idXJsIiB2YWx1ZT0ic3NoOi8vc3NoLm15aG9z
dC5jb20iIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ1cmwiIHZhbHVlPSJzb21lc2No
ZW1lOi8vc3NoLm15aG9zdC5jb20iIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ1cmwi
IC8+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IHBlcmZvcm1zIGEgbmVnYXRpdmUgY2hlY2sgb24gdHlwZT11cmwgaW5wdXQgZWxlbWVu
dHMuIik7CisKK3YgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7Citmb3Ig
KGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykKKyAgICBzaG91bGRCZSgidltpXS52YWxpZGl0eS50
eXBlTWlzbWF0Y2giLCAiZmFsc2UiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gtMDAyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gtMDAyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjJkNzBhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXR5cGVN
aXNtYXRjaC0wMDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1RoaXMgdGVzdCBwZXJm
b3JtcyBhIHBvc2l0aXZlIGNoZWNrIG9uIHR5cGU9dXJsIGlucHV0IGVsZW1lbnRzLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworICAgICAgICAgICAKK1BBU1MgdltpXS52YWxpZGl0
eS50eXBlTWlzbWF0Y2ggaXMgdHJ1ZQorUEFTUyB2W2ldLnZhbGlkaXR5LnR5cGVNaXNtYXRjaCBp
cyB0cnVlCitQQVNTIHZbaV0udmFsaWRpdHkudHlwZU1pc21hdGNoIGlzIHRydWUKK1BBU1Mgdltp
XS52YWxpZGl0eS50eXBlTWlzbWF0Y2ggaXMgdHJ1ZQorUEFTUyB2W2ldLnZhbGlkaXR5LnR5cGVN
aXNtYXRjaCBpcyB0cnVlCitQQVNTIHZbaV0udmFsaWRpdHkudHlwZU1pc21hdGNoIGlzIHRydWUK
K1BBU1MgdltpXS52YWxpZGl0eS50eXBlTWlzbWF0Y2ggaXMgdHJ1ZQorUEFTUyB2W2ldLnZhbGlk
aXR5LnR5cGVNaXNtYXRjaCBpcyB0cnVlCitQQVNTIHZbaV0udmFsaWRpdHkudHlwZU1pc21hdGNo
IGlzIHRydWUKK1BBU1MgdltpXS52YWxpZGl0eS50eXBlTWlzbWF0Y2ggaXMgdHJ1ZQorUEFTUyB2
W2ldLnZhbGlkaXR5LnR5cGVNaXNtYXRjaCBpcyB0cnVlCitQQVNTIHZbaV0udmFsaWRpdHkudHlw
ZU1pc21hdGNoIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtdHlwZU1pc21hdGNoLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXR5cGVNaXNtYXRjaC0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yMmVhMThmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9WYWxpZGl0eVN0YXRlLXR5cGVNaXNtYXRjaC0wMDIuaHRtbApAQCAtMCwwICsxLDMzIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idXJsIiB2YWx1ZT0id3d3Lmdvb2dsZS5jb20i
IC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ1cmwiIHZhbHVlPSIxMjcuMC4wLjEiIC8+
Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ1cmwiIHZhbHVlPSIuY29tIiAvPgorPGlucHV0
IG5hbWU9InZpY3RpbSIgdHlwZT0idXJsIiB2YWx1ZT0iaHR0cDovL3d3dy5nKipnbGUuY29tIiAv
PgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idXJsIiB2YWx1ZT0iaHR0cDovL3d3dy5nb29n
bGUuY29tOmFhYWEiIC8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ1cmwiIHZhbHVlPSJo
dHRwOi93d3cuZ29vZ2xlLmNvbSIgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InVybCIg
dmFsdWU9Imh0dHA6L3d3dy5nb29nbGUuY29tIiAvPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlw
ZT0idXJsIiB2YWx1ZT0iaHR0cDovLyIgLz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InVy
bCIgdmFsdWU9Imh0dHA6L3d3dy5nb29nbGUuY29tIiAvPgorPGlucHV0IG5hbWU9InZpY3RpbSIg
dHlwZT0idXJsIiB2YWx1ZT0iaHR0cDovLyB3d3cuZ29vZ2xlLmNvbSIgLz4KKzxpbnB1dCBuYW1l
PSJ2aWN0aW0iIHR5cGU9InVybCIgdmFsdWU9Imh0dHA6Ly93d3cgLmdvb2dsZS5jb20iIC8+Cis8
aW5wdXQgbmFtZT0idmljdGltIiB0eXBlPSJ1cmwiIHZhbHVlPSJodHRwOi8vd3d3LiYjMTA7Z29v
Z2xlLiYjMTM7Y29tIiAvPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdCBwZXJmb3JtcyBhIHBvc2l0aXZlIGNoZWNrIG9uIHR5cGU9dXJs
IGlucHV0IGVsZW1lbnRzLiIpOworCit2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZp
Y3RpbSIpOworZm9yIChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspCisgICAgc2hvdWxkQmUoInZb
aV0udmFsaWRpdHkudHlwZU1pc21hdGNoIiwgInRydWUiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gtMDAzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0
Y2gtMDAzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
YWRhNzgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0
eVN0YXRlLXR5cGVNaXNtYXRjaC0wMDMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Ro
aXMgdGVzdCBwZXJmb3JtcyBhIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBjaGVjayBvbiB0eXBlPXVy
bCBpbnB1dCBlbGVtZW50cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFT
UyB2LnZhbGlkaXR5LnR5cGVNaXNtYXRjaCBpcyB0cnVlCitQQVNTIHYudmFsaWRpdHkudHlwZU1p
c21hdGNoIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0
YXRlLXR5cGVNaXNtYXRjaC0wMDMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRp
dHlTdGF0ZS10eXBlTWlzbWF0Y2gtMDAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMjU0NzYyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gtMDAzLmh0bWwKQEAgLTAsMCArMSwyMyBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxpbnB1dCBpZD0idmljdGltIiB0eXBlPSJ1cmwiIHZhbHVlPSJpbnZhbGlkdXJsIiAvPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBw
ZXJmb3JtcyBhIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBjaGVjayBvbiB0eXBlPXVybCBpbnB1dCBl
bGVtZW50cy4iKTsKKwordiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWN0aW0iKTsKK3No
b3VsZEJlKCJ2LnZhbGlkaXR5LnR5cGVNaXNtYXRjaCIsICJ0cnVlIik7Cit2LnZhbHVlID0gImh0
dHA6Ly93d3cudmFsaWR1cmwuY29tIjsKK3Nob3VsZEJlKCJ2LnZhbGlkaXR5LnR5cGVNaXNtYXRj
aCIsICJmYWxzZSIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAwZTU0YjIyLi5jMmYyMzY5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDA5
LTA4LTE3ICBNaWNoZWxhbmdlbG8gRGUgU2ltb25lICA8bWljZGVzaW1AZ21haWwuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzQ1NgorICAgICAgICBBZGQgc3VwcG9ydCBm
b3Igc3RhdGljIHZhbGlkYXRpb24gb24gdHlwZT11cmwgaW5wdXQgZWxlbWVudHMsIGZyb20KKyAg
ICAgICAgSFRNTDUgc3BlY3M6CisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93
ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjdXJsLXN0YXRlCisKKyAg
ICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gtMDAxLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gt
MDAyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlz
bWF0Y2gtMDAzLmh0bWwKKworICAgICAgICAqIGh0bWwvVmFsaWRpdHlTdGF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp0eXBlTWlzbWF0Y2gpOiB2YWxpZGF0aW9uIGZs
YWcKKyAgICAgICAgKiBodG1sL1ZhbGlkaXR5U3RhdGUuaDoKKwogMjAwOS0wOC0xNyAgR3VzdGF2
byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAg
ICAgICBVbnJldmlld2VkLiBSZXZlcnRzIDQ3MzcxLCBzaW5jZSBpdCBicmVha3MgR1RLKy4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBiL1dlYkNvcmUvaHRtbC9W
YWxpZGl0eVN0YXRlLmNwcAppbmRleCA4NjIyN2Q0Li44ZTlkNDY0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3Rh
dGUuY3BwCkBAIC0yMywxNCArMjMsNDAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJWYWxpZGl0eVN0YXRlLmgiCiAKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiS1VSTC5oIgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKIFZhbGlkaXR5U3RhdGU6OlZhbGlk
aXR5U3RhdGUoSFRNTEZvcm1Db250cm9sRWxlbWVudCogcGFyZW50KQogICAgIDogbV9jb250cm9s
KHBhcmVudCkKIHsKICAgICBBU1NFUlQocGFyZW50KTsKIH0KIAorYm9vbCBWYWxpZGl0eVN0YXRl
Ojp0eXBlTWlzbWF0Y2goKQoreworICAgIGlmICghY29udHJvbCgpLT5oYXNUYWdOYW1lKGlucHV0
VGFnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSFRNTElucHV0RWxlbWVudCogaW5w
dXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oY29udHJvbCgpKTsKKyAgICBTdHJp
bmcgdmFsdWUgPSBpbnB1dC0+dmFsdWUoKTsKKyAgICAKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaW5wdXQtPmlucHV0VHlwZSgpID09
IEhUTUxJbnB1dEVsZW1lbnQ6OlVSTCkgeworICAgICAgICBLVVJMIGt1cmwoS1VSTCgpLCB2YWx1
ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gIWt1cmwuaXNWYWxpZCgpIHx8IGt1cmwuaG9z
dCgpLmlzRW1wdHkoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgVmFs
aWRpdHlTdGF0ZTo6dmFsaWQoKQogewogICAgIGJvb2wgc29tZUVycm9yID0gdHlwZU1pc21hdGNo
KCkgfHwgc3RlcE1pc21hdGNoKCkgfHwgcmFuZ2VVbmRlcmZsb3coKSB8fCByYW5nZU92ZXJmbG93
KCkgfHwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmggYi9XZWJDb3Jl
L2h0bWwvVmFsaWRpdHlTdGF0ZS5oCmluZGV4IDc5NDgyMmEuLjE5YmVmNDEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKKysrIGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5
U3RhdGUuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgc2V0Q3VzdG9tRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeyBtX2N1c3Rv
bUVycm9yTWVzc2FnZSA9IG1lc3NhZ2U7IH0KIAogICAgICAgICBib29sIHZhbHVlTWlzc2luZygp
IHsgcmV0dXJuIGNvbnRyb2woKS0+dmFsdWVNaXNzaW5nKCk7IH0KLSAgICAgICAgYm9vbCB0eXBl
TWlzbWF0Y2goKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICBib29sIHR5cGVNaXNtYXRjaCgp
OwogICAgICAgICBib29sIHBhdHRlcm5NaXNtYXRjaCgpIHsgcmV0dXJuIGNvbnRyb2woKS0+cGF0
dGVybk1pc21hdGNoKCk7IH0KICAgICAgICAgYm9vbCB0b29Mb25nKCkgeyByZXR1cm4gZmFsc2U7
IH0KICAgICAgICAgYm9vbCByYW5nZVVuZGVyZmxvdygpIHsgcmV0dXJuIGZhbHNlOyB9
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39440</attachid>
            <date>2009-09-11 09:12:25 -0700</date>
            <delta_ts>2009-09-11 09:13:37 -0700</delta_ts>
            <desc>Patch v1, rebased</desc>
            <filename>bug-27456-20090911181221.patch</filename>
            <type>text/plain</type>
            <size>6582</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODMwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDktMTEgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNk
ZXNpbUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NDU2Cisg
ICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHN0YXRpYyB2YWxpZGF0aW9uIG9mIHVybCBpbgorICAg
ICAgICBWYWxpZGl0eVN0YXRlLCBmb3IgdXJsIHN0YXRlIGlucHV0cy4KKyAgICAgICAgRnJvbSBI
VE1MNSBzcGVjczoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay8jdXJsLXN0YXRlCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXR5cGVNaXNtYXRjaC11cmwuaHRtbAorCisgICAgICAgICogaHRtbC9WYWxpZGl0
eVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnR5cGVNaXNtYXRj
aCk6CisKIDIwMDktMDktMTEgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYkNvcmUvaHRtbC9WYWxp
ZGl0eVN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5j
cHAJKHJldmlzaW9uIDQ4MzAxKQorKysgV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiS1VSTC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDkgKzUzLDE0IEBAIGJvb2wgVmFsaWRpdHlTdGF0ZTo6
dHlwZU1pc21hdGNoKCkKICAgICAgICAgcmV0dXJuICFpc1ZhbGlkQ29sb3JTdHJpbmcodmFsdWUp
OwogICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6TlVNQkVSOgogICAgICAgICByZXR1cm4gIUhU
TUxJbnB1dEVsZW1lbnQ6OmZvcm1TdHJpbmdUb0RvdWJsZSh2YWx1ZSwgMCk7CisgICAgY2FzZSBI
VE1MSW5wdXRFbGVtZW50OjpVUkw6CisgICAgICAgIHJldHVybiAhS1VSTChLVVJMKCksIHZhbHVl
KS5pc1ZhbGlkKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
KworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9v
bCBWYWxpZGl0eVN0YXRlOjp2YWxpZCgpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0ODMwMSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA5
LTA5LTExICBNaWNoZWxhbmdlbG8gRGUgU2ltb25lICA8bWljZGVzaW1AZ21haWwuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzQ1NgorICAgICAgICBUZXN0IGNhc2UgZm9y
IHVybCB2YWxpZGF0aW9uIGluIFZhbGlkaXR5U3RhdGUuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdHlwZU1pc21hdGNoLXVybC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gtdXJsLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVzb3VyY2VzL1ZhbGlkaXR5U3RhdGUtdHlwZU1p
c21hdGNoLXVybC5qczogQWRkZWQuCisgICAgICAgIChjaGVjayk6CisKIDIwMDktMDktMTAgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0g
V2VpbmlnLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXR5cGVN
aXNtYXRjaC11cmwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gtdXJsLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0
Y2gtdXJsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorSW5wdXQg
dHlwZT11cmwgdmFsaWRhdGlvbiB0ZXN0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbSBpcyBhIGNvcnJlY3QgdmFsaWQgdXJsLgorUEFT
UyBodHRwOi8vbG9jYWxob3N0IGlzIGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly8x
MjcuMC4wLjEgaXMgYSBjb3JyZWN0IHZhbGlkIHVybC4KK1BBU1MgaHR0cDovL2EgaXMgYSBjb3Jy
ZWN0IHZhbGlkIHVybC4KK1BBU1MgaHR0cDovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9ybHM9ZW4m
cT1XZWJLaXQmaWU9VVRGLTgmb2U9VVRGLTggaXMgYSBjb3JyZWN0IHZhbGlkIHVybC4KK1BBU1Mg
ZnRwOi8vZnRwLm15aG9zdC5jb20gaXMgYSBjb3JyZWN0IHZhbGlkIHVybC4KK1BBU1Mgc3NoOi8v
c3NoLm15aG9zdC5jb20gaXMgYSBjb3JyZWN0IHZhbGlkIHVybC4KK1BBU1Mgc29tZXNjaGVtZTov
L3NzaC5teWhvc3QuY29tIGlzIGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly9hL1wv
JycqPD4vIGlzIGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly9hL2Rmcy9rZHNAc2Rz
IGlzIGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly9hLmE6MS9zZWFyY2g/YSZiIGlz
IGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNTIHd3dy5nb29nbGUuY29tIGlzIGEgY29ycmVjdCBp
bnZhbGlkIHVybC4KK1BBU1MgMTI3LjAuMC4xIGlzIGEgY29ycmVjdCBpbnZhbGlkIHVybC4KK1BB
U1MgLmNvbSBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly93d3cuZyoqZ2xl
LmNvbSBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly93d3cuZ29vZ2xlLmNv
bTphYWFhIGlzIGEgY29ycmVjdCBpbnZhbGlkIHVybC4KK1BBU1MgaHR0cDovLyB3d3cuZ29vZ2xl
LmNvbSBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly93d3cgLmdvb2dsZS5j
b20gaXMgYSBjb3JyZWN0IGludmFsaWQgdXJsLgorUEFTUyBodHRwOi8vd3d3LiYjMTA7Z29vZ2xl
LiYjMTM7Y29tIGlzIGEgY29ycmVjdCBpbnZhbGlkIHVybC4KK1BBU1MgOi8vIGlzIGEgY29ycmVj
dCBpbnZhbGlkIHVybC4KK1BBU1MgL2h0dHA6Ly93d3cuZ29vZ2xlLmNvbSBpcyBhIGNvcnJlY3Qg
aW52YWxpZCB1cmwuCitQQVNTIC0tLS1mdHA6Ly9hIGlzIGEgY29ycmVjdCBpbnZhbGlkIHVybC4K
K1BBU1Mgc2NoZW1lLy9hIGlzIGEgY29ycmVjdCBpbnZhbGlkIHVybC4KK1BBU1MgaHR0cDovL2hv
c3QrIGlzIGEgY29ycmVjdCBpbnZhbGlkIHVybC4KK1BBU1MgaHR0cDovL215dXJsISBpcyBhIGNv
cnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRl
LXR5cGVNaXNtYXRjaC11cmwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdHlwZU1pc21hdGNoLXVybC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXR5cGVNaXNtYXRjaC11cmwuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvVmFsaWRpdHlTdGF0ZS10
eXBlTWlzbWF0Y2gtdXJsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvVmFsaWRpdHlTdGF0ZS10eXBl
TWlzbWF0Y2gtdXJsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVz
b3VyY2VzL1ZhbGlkaXR5U3RhdGUtdHlwZU1pc21hdGNoLXVybC5qcwkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL1ZhbGlkaXR5U3RhdGUtdHlwZU1pc21h
dGNoLXVybC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorZGVzY3JpcHRpb24oIklu
cHV0IHR5cGU9dXJsIHZhbGlkYXRpb24gdGVzdCIpOworCitmdW5jdGlvbiBjaGVjayh2YWx1ZSwg
bWlzbWF0Y2hFeHBlY3RlZCkgeworICAgIGkudmFsdWUgPSB2YWx1ZTsKKyAgICB2YXIgYWN0dWFs
ID0gaS52YWxpZGl0eS50eXBlTWlzbWF0Y2g7CisgICAgdmFyIGRpZFBhc3MgPSBhY3R1YWwgPT0g
bWlzbWF0Y2hFeHBlY3RlZDsKKyAgICB2YXIgcmVzdWx0VGV4dCA9IHZhbHVlICsgJyBpcyAnICsg
KGRpZFBhc3MgPyAnYSBjb3JyZWN0ICcgOiAnYW4gaW5jb3JyZWN0ICcpICsgKGFjdHVhbCA/ICdp
bnZhbGlkJyA6ICd2YWxpZCcpICsgJyB1cmwuJzsKKyAgICBpZiAoZGlkUGFzcykKKyAgICAgICAg
dGVzdFBhc3NlZChyZXN1bHRUZXh0KTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQocmVz
dWx0VGV4dCk7Cit9CisKK3ZhciBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsK
K2kudHlwZSA9ICd1cmwnOworCisvLyBWYWxpZCB2YWx1ZXMKK2NoZWNrKCdodHRwOi8vd3d3Lmdv
b2dsZS5jb20nLCBmYWxzZSk7CitjaGVjaygnaHR0cDovL2xvY2FsaG9zdCcsIGZhbHNlKTsKK2No
ZWNrKCdodHRwOi8vMTI3LjAuMC4xJywgZmFsc2UpOworY2hlY2soJ2h0dHA6Ly9hJywgZmFsc2Up
OworY2hlY2soJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cmxzPWVuJnE9V2ViS2l0Jmll
PVVURi04Jm9lPVVURi04JywgZmFsc2UpOworY2hlY2soJ2Z0cDovL2Z0cC5teWhvc3QuY29tJywg
ZmFsc2UpOworY2hlY2soJ3NzaDovL3NzaC5teWhvc3QuY29tJywgZmFsc2UpOworY2hlY2soJ3Nv
bWVzY2hlbWU6Ly9zc2gubXlob3N0LmNvbScsIGZhbHNlKTsKK2NoZWNrKCdodHRwOi8vYS9cXFwv
XCdcJyo8Pi8nLCBmYWxzZSk7CitjaGVjaygnaHR0cDovL2EvZGZzL1xrZHNAc2RzJywgZmFsc2Up
OworY2hlY2soJ2h0dHA6Ly9hLmE6MS9zZWFyY2g/YSZiJywgZmFsc2UpOworCisvLyBJbnZhbGlk
IHZhbHVlcworY2hlY2soJ3d3dy5nb29nbGUuY29tJywgdHJ1ZSk7CitjaGVjaygnMTI3LjAuMC4x
JywgdHJ1ZSk7CitjaGVjaygnLmNvbScsIHRydWUpOworY2hlY2soJ2h0dHA6Ly93d3cuZyoqZ2xl
LmNvbScsIHRydWUpOworY2hlY2soJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbTphYWFhJywgdHJ1ZSk7
CitjaGVjaygnaHR0cDovLyB3d3cuZ29vZ2xlLmNvbScsIHRydWUpOworY2hlY2soJ2h0dHA6Ly93
d3cgLmdvb2dsZS5jb20nLCB0cnVlKTsKK2NoZWNrKCdodHRwOi8vd3d3LiYjMTA7Z29vZ2xlLiYj
MTM7Y29tJywgdHJ1ZSk7CitjaGVjaygnOi8vJywgdHJ1ZSk7CitjaGVjaygnL2h0dHA6Ly93d3cu
Z29vZ2xlLmNvbScsIHRydWUpOworY2hlY2soJy0tLS1mdHA6Ly9hJywgdHJ1ZSk7CitjaGVjaygn
c2NoZW1lLy9hJywgdHJ1ZSk7CitjaGVjaygnaHR0cDovL2hvc3QrJywgdHJ1ZSk7CitjaGVjaygn
aHR0cDovL215dXJsIScsIHRydWUpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39441</attachid>
            <date>2009-09-11 09:13:47 -0700</date>
            <delta_ts>2009-09-11 14:18:25 -0700</delta_ts>
            <desc>Patch v1, rebased</desc>
            <filename>bug-27456-20090911181344.patch</filename>
            <type>text/plain</type>
            <size>6554</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODMwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDktMTEgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNk
ZXNpbUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NDU2Cisg
ICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHN0YXRpYyB2YWxpZGF0aW9uIG9mIHVybCBpbgorICAg
ICAgICBWYWxpZGl0eVN0YXRlLCBmb3IgdXJsIHN0YXRlIGlucHV0cy4KKyAgICAgICAgRnJvbSBI
VE1MNSBzcGVjczoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay8jdXJsLXN0YXRlCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXR5cGVNaXNtYXRjaC11cmwuaHRtbAorCisgICAgICAgICogaHRtbC9WYWxpZGl0
eVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnR5cGVNaXNtYXRj
aCk6CisKIDIwMDktMDktMTEgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYkNvcmUvaHRtbC9WYWxp
ZGl0eVN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5j
cHAJKHJldmlzaW9uIDQ4MzAxKQorKysgV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiS1VSTC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDkgKzUzLDE0IEBAIGJvb2wgVmFsaWRpdHlTdGF0ZTo6
dHlwZU1pc21hdGNoKCkKICAgICAgICAgcmV0dXJuICFpc1ZhbGlkQ29sb3JTdHJpbmcodmFsdWUp
OwogICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6TlVNQkVSOgogICAgICAgICByZXR1cm4gIUhU
TUxJbnB1dEVsZW1lbnQ6OmZvcm1TdHJpbmdUb0RvdWJsZSh2YWx1ZSwgMCk7CisgICAgY2FzZSBI
VE1MSW5wdXRFbGVtZW50OjpVUkw6CisgICAgICAgIHJldHVybiAhS1VSTChLVVJMKCksIHZhbHVl
KS5pc1ZhbGlkKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
KworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9v
bCBWYWxpZGl0eVN0YXRlOjp2YWxpZCgpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0ODMwMSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA5
LTA5LTExICBNaWNoZWxhbmdlbG8gRGUgU2ltb25lICA8bWljZGVzaW1AZ21haWwuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzQ1NgorICAgICAgICBUZXN0IGNhc2UgZm9y
IHVybCB2YWxpZGF0aW9uIGluIFZhbGlkaXR5U3RhdGUuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdHlwZU1pc21hdGNoLXVybC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gtdXJsLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVzb3VyY2VzL1ZhbGlkaXR5U3RhdGUtdHlwZU1p
c21hdGNoLXVybC5qczogQWRkZWQuCisgICAgICAgIChjaGVjayk6CisKIDIwMDktMDktMTAgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0g
V2VpbmlnLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXR5cGVN
aXNtYXRjaC11cmwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gtdXJsLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0
Y2gtdXJsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorSW5wdXQg
dHlwZT11cmwgdmFsaWRhdGlvbiB0ZXN0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbSBpcyBhIGNvcnJlY3QgdmFsaWQgdXJsLgorUEFT
UyBodHRwOi8vbG9jYWxob3N0IGlzIGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly8x
MjcuMC4wLjEgaXMgYSBjb3JyZWN0IHZhbGlkIHVybC4KK1BBU1MgaHR0cDovL2EgaXMgYSBjb3Jy
ZWN0IHZhbGlkIHVybC4KK1BBU1MgaHR0cDovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9ybHM9ZW4m
cT1XZWJLaXQmaWU9VVRGLTgmb2U9VVRGLTggaXMgYSBjb3JyZWN0IHZhbGlkIHVybC4KK1BBU1Mg
ZnRwOi8vZnRwLm15aG9zdC5jb20gaXMgYSBjb3JyZWN0IHZhbGlkIHVybC4KK1BBU1Mgc3NoOi8v
c3NoLm15aG9zdC5jb20gaXMgYSBjb3JyZWN0IHZhbGlkIHVybC4KK1BBU1Mgc29tZXNjaGVtZTov
L3NzaC5teWhvc3QuY29tIGlzIGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly9hL1wv
JycqPD4vIGlzIGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly9hL2Rmcy9rZHNAc2Rz
IGlzIGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly9hLmE6MS9zZWFyY2g/YSZiIGlz
IGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNTIHd3dy5nb29nbGUuY29tIGlzIGEgY29ycmVjdCBp
bnZhbGlkIHVybC4KK1BBU1MgMTI3LjAuMC4xIGlzIGEgY29ycmVjdCBpbnZhbGlkIHVybC4KK1BB
U1MgLmNvbSBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly93d3cuZyoqZ2xl
LmNvbSBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly93d3cuZ29vZ2xlLmNv
bTphYWFhIGlzIGEgY29ycmVjdCBpbnZhbGlkIHVybC4KK1BBU1MgaHR0cDovLyB3d3cuZ29vZ2xl
LmNvbSBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly93d3cgLmdvb2dsZS5j
b20gaXMgYSBjb3JyZWN0IGludmFsaWQgdXJsLgorUEFTUyBodHRwOi8vd3d3LiYjMTA7Z29vZ2xl
LiYjMTM7Y29tIGlzIGEgY29ycmVjdCBpbnZhbGlkIHVybC4KK1BBU1MgOi8vIGlzIGEgY29ycmVj
dCBpbnZhbGlkIHVybC4KK1BBU1MgL2h0dHA6Ly93d3cuZ29vZ2xlLmNvbSBpcyBhIGNvcnJlY3Qg
aW52YWxpZCB1cmwuCitQQVNTIC0tLS1mdHA6Ly9hIGlzIGEgY29ycmVjdCBpbnZhbGlkIHVybC4K
K1BBU1Mgc2NoZW1lLy9hIGlzIGEgY29ycmVjdCBpbnZhbGlkIHVybC4KK1BBU1MgaHR0cDovL2hv
c3QrIGlzIGEgY29ycmVjdCBpbnZhbGlkIHVybC4KK1BBU1MgaHR0cDovL215dXJsISBpcyBhIGNv
cnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRl
LXR5cGVNaXNtYXRjaC11cmwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtdHlwZU1pc21hdGNoLXVybC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXR5cGVNaXNtYXRjaC11cmwuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvVmFsaWRpdHlTdGF0ZS10
eXBlTWlzbWF0Y2gtdXJsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvVmFsaWRpdHlTdGF0ZS10eXBl
TWlzbWF0Y2gtdXJsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVz
b3VyY2VzL1ZhbGlkaXR5U3RhdGUtdHlwZU1pc21hdGNoLXVybC5qcwkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL1ZhbGlkaXR5U3RhdGUtdHlwZU1pc21h
dGNoLXVybC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorZGVzY3JpcHRpb24oIklu
cHV0IHR5cGU9dXJsIHZhbGlkYXRpb24gdGVzdCIpOworCitmdW5jdGlvbiBjaGVjayh2YWx1ZSwg
bWlzbWF0Y2hFeHBlY3RlZCkgeworICAgIGkudmFsdWUgPSB2YWx1ZTsKKyAgICB2YXIgYWN0dWFs
ID0gaS52YWxpZGl0eS50eXBlTWlzbWF0Y2g7CisgICAgdmFyIGRpZFBhc3MgPSBhY3R1YWwgPT0g
bWlzbWF0Y2hFeHBlY3RlZDsKKyAgICB2YXIgcmVzdWx0VGV4dCA9IHZhbHVlICsgJyBpcyAnICsg
KGRpZFBhc3MgPyAnYSBjb3JyZWN0ICcgOiAnYW4gaW5jb3JyZWN0ICcpICsgKGFjdHVhbCA/ICdp
bnZhbGlkJyA6ICd2YWxpZCcpICsgJyB1cmwuJzsKKyAgICBpZiAoZGlkUGFzcykKKyAgICAgICAg
dGVzdFBhc3NlZChyZXN1bHRUZXh0KTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQocmVz
dWx0VGV4dCk7Cit9CisKK3ZhciBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsK
K2kudHlwZSA9ICd1cmwnOworCisvLyBWYWxpZCB2YWx1ZXMKK2NoZWNrKCdodHRwOi8vd3d3Lmdv
b2dsZS5jb20nLCBmYWxzZSk7CitjaGVjaygnaHR0cDovL2xvY2FsaG9zdCcsIGZhbHNlKTsKK2No
ZWNrKCdodHRwOi8vMTI3LjAuMC4xJywgZmFsc2UpOworY2hlY2soJ2h0dHA6Ly9hJywgZmFsc2Up
OworY2hlY2soJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cmxzPWVuJnE9V2ViS2l0Jmll
PVVURi04Jm9lPVVURi04JywgZmFsc2UpOworY2hlY2soJ2Z0cDovL2Z0cC5teWhvc3QuY29tJywg
ZmFsc2UpOworY2hlY2soJ3NzaDovL3NzaC5teWhvc3QuY29tJywgZmFsc2UpOworY2hlY2soJ3Nv
bWVzY2hlbWU6Ly9zc2gubXlob3N0LmNvbScsIGZhbHNlKTsKK2NoZWNrKCdodHRwOi8vYS9cXFwv
XCdcJyo8Pi8nLCBmYWxzZSk7CitjaGVjaygnaHR0cDovL2EvZGZzL1xrZHNAc2RzJywgZmFsc2Up
OworY2hlY2soJ2h0dHA6Ly9hLmE6MS9zZWFyY2g/YSZiJywgZmFsc2UpOworCisvLyBJbnZhbGlk
IHZhbHVlcworY2hlY2soJ3d3dy5nb29nbGUuY29tJywgdHJ1ZSk7CitjaGVjaygnMTI3LjAuMC4x
JywgdHJ1ZSk7CitjaGVjaygnLmNvbScsIHRydWUpOworY2hlY2soJ2h0dHA6Ly93d3cuZyoqZ2xl
LmNvbScsIHRydWUpOworY2hlY2soJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbTphYWFhJywgdHJ1ZSk7
CitjaGVjaygnaHR0cDovLyB3d3cuZ29vZ2xlLmNvbScsIHRydWUpOworY2hlY2soJ2h0dHA6Ly93
d3cgLmdvb2dsZS5jb20nLCB0cnVlKTsKK2NoZWNrKCdodHRwOi8vd3d3LiYjMTA7Z29vZ2xlLiYj
MTM7Y29tJywgdHJ1ZSk7CitjaGVjaygnOi8vJywgdHJ1ZSk7CitjaGVjaygnL2h0dHA6Ly93d3cu
Z29vZ2xlLmNvbScsIHRydWUpOworY2hlY2soJy0tLS1mdHA6Ly9hJywgdHJ1ZSk7CitjaGVjaygn
c2NoZW1lLy9hJywgdHJ1ZSk7CitjaGVjaygnaHR0cDovL2hvc3QrJywgdHJ1ZSk7CitjaGVjaygn
aHR0cDovL215dXJsIScsIHRydWUpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTs=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39474</attachid>
            <date>2009-09-11 14:19:07 -0700</date>
            <delta_ts>2009-09-11 14:30:19 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-27456-20090911231903.patch</filename>
            <type>text/plain</type>
            <size>6617</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODMxNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDktMTEgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNk
ZXNpbUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NDU2Cisg
ICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHN0YXRpYyB2YWxpZGF0aW9uIG9mIHVybCBpbgorICAg
ICAgICBWYWxpZGl0eVN0YXRlLCBmb3IgdXJsIHN0YXRlIGlucHV0cy4KKyAgICAgICAgRnJvbSBI
VE1MNSBzcGVjczoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay8jdXJsLXN0YXRlCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXR5cGVNaXNtYXRjaC11cmwuaHRtbAorCisgICAgICAgICogaHRtbC9WYWxpZGl0
eVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnR5cGVNaXNtYXRj
aCk6CisKIDIwMDktMDktMTEgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5kZXg6IFdlYkNvcmUv
aHRtbC9WYWxpZGl0eVN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvVmFsaWRp
dHlTdGF0ZS5jcHAJKHJldmlzaW9uIDQ4MzE0KQorKysgV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3Rh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJIVE1M
SW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiS1VSTC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDkgKzUzLDE0IEBAIGJvb2wgVmFsaWRp
dHlTdGF0ZTo6dHlwZU1pc21hdGNoKCkKICAgICAgICAgcmV0dXJuICFpc1ZhbGlkQ29sb3JTdHJp
bmcodmFsdWUpOwogICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6TlVNQkVSOgogICAgICAgICBy
ZXR1cm4gIUhUTUxJbnB1dEVsZW1lbnQ6OmZvcm1TdHJpbmdUb0RvdWJsZSh2YWx1ZSwgMCk7Cisg
ICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpVUkw6CisgICAgICAgIHJldHVybiAhS1VSTChLVVJM
KCksIHZhbHVlKS5pc1ZhbGlkKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
IH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjp2YWxpZCgpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0ODMx
NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDA5LTA5LTExICBNaWNoZWxhbmdlbG8gRGUgU2ltb25lICA8bWljZGVzaW1AZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzQ1NgorICAgICAgICBUZXN0
IGNhc2UgZm9yIHVybCB2YWxpZGF0aW9uIGluIFZhbGlkaXR5U3RhdGUuCisKKyAgICAgICAgKiBm
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdHlwZU1pc21hdGNoLXVybC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gtdXJs
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVzb3VyY2VzL1ZhbGlkaXR5U3Rh
dGUtdHlwZU1pc21hdGNoLXVybC5qczogQWRkZWQuCisgICAgICAgIChjaGVjayk6CisKIDIwMDkt
MDktMTEgIENhbWVyb24gTWNDb3JtYWNrICA8Y2FtQG1jYy5pZC5hdT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRp
dHlTdGF0ZS10eXBlTWlzbWF0Y2gtdXJsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdHlwZU1pc21hdGNoLXVybC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdHlwZU1pc21hdGNoLXVybC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzQgQEAKK0lucHV0IHR5cGU9dXJsIHZhbGlkYXRpb24gdGVzdAorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBodHRwOi8vd3d3Lmdvb2dsZS5jb20gaXMgYSBjb3JyZWN0IHZh
bGlkIHVybC4KK1BBU1MgaHR0cDovL2xvY2FsaG9zdCBpcyBhIGNvcnJlY3QgdmFsaWQgdXJsLgor
UEFTUyBodHRwOi8vMTI3LjAuMC4xIGlzIGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNTIGh0dHA6
Ly9hIGlzIGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9z
ZWFyY2g/cmxzPWVuJnE9V2ViS2l0JmllPVVURi04Jm9lPVVURi04IGlzIGEgY29ycmVjdCB2YWxp
ZCB1cmwuCitQQVNTIGZ0cDovL2Z0cC5teWhvc3QuY29tIGlzIGEgY29ycmVjdCB2YWxpZCB1cmwu
CitQQVNTIHNzaDovL3NzaC5teWhvc3QuY29tIGlzIGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNT
IHNvbWVzY2hlbWU6Ly9zc2gubXlob3N0LmNvbSBpcyBhIGNvcnJlY3QgdmFsaWQgdXJsLgorUEFT
UyBodHRwOi8vYS9cLycnKjw+LyBpcyBhIGNvcnJlY3QgdmFsaWQgdXJsLgorUEFTUyBodHRwOi8v
YS9kZnMva2RzQHNkcyBpcyBhIGNvcnJlY3QgdmFsaWQgdXJsLgorUEFTUyBodHRwOi8vYS5hOjEv
c2VhcmNoP2EmYiBpcyBhIGNvcnJlY3QgdmFsaWQgdXJsLgorUEFTUyB3d3cuZ29vZ2xlLmNvbSBp
cyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIDEyNy4wLjAuMSBpcyBhIGNvcnJlY3QgaW52
YWxpZCB1cmwuCitQQVNTIC5jb20gaXMgYSBjb3JyZWN0IGludmFsaWQgdXJsLgorUEFTUyBodHRw
Oi8vd3d3LmcqKmdsZS5jb20gaXMgYSBjb3JyZWN0IGludmFsaWQgdXJsLgorUEFTUyBodHRwOi8v
d3d3Lmdvb2dsZS5jb206YWFhYSBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIGh0dHA6
Ly8gd3d3Lmdvb2dsZS5jb20gaXMgYSBjb3JyZWN0IGludmFsaWQgdXJsLgorUEFTUyBodHRwOi8v
d3d3IC5nb29nbGUuY29tIGlzIGEgY29ycmVjdCBpbnZhbGlkIHVybC4KK1BBU1MgaHR0cDovL3d3
dy4mIzEwO2dvb2dsZS4mIzEzO2NvbSBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIDov
LyBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIC9odHRwOi8vd3d3Lmdvb2dsZS5jb20g
aXMgYSBjb3JyZWN0IGludmFsaWQgdXJsLgorUEFTUyAtLS0tZnRwOi8vYSBpcyBhIGNvcnJlY3Qg
aW52YWxpZCB1cmwuCitQQVNTIHNjaGVtZS8vYSBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQ
QVNTIGh0dHA6Ly9ob3N0KyBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly9t
eXVybCEgaXMgYSBjb3JyZWN0IGludmFsaWQgdXJsLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
VmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gtdXJsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXR5cGVNaXNtYXRjaC11cmwuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlz
bWF0Y2gtdXJsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL1Zh
bGlkaXR5U3RhdGUtdHlwZU1pc21hdGNoLXVybC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL1ZhbGlk
aXR5U3RhdGUtdHlwZU1pc21hdGNoLXVybC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3Jlc291cmNlcy9WYWxpZGl0eVN0YXRlLXR5cGVNaXNtYXRjaC11cmwuanMJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9WYWxpZGl0eVN0
YXRlLXR5cGVNaXNtYXRjaC11cmwuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKK2Rl
c2NyaXB0aW9uKCJJbnB1dCB0eXBlPXVybCB2YWxpZGF0aW9uIHRlc3QiKTsKKworZnVuY3Rpb24g
Y2hlY2sodmFsdWUsIG1pc21hdGNoRXhwZWN0ZWQpIHsKKyAgICBpLnZhbHVlID0gdmFsdWU7Cisg
ICAgdmFyIGFjdHVhbCA9IGkudmFsaWRpdHkudHlwZU1pc21hdGNoOworICAgIHZhciBkaWRQYXNz
ID0gYWN0dWFsID09IG1pc21hdGNoRXhwZWN0ZWQ7CisgICAgdmFyIHJlc3VsdFRleHQgPSB2YWx1
ZSArICcgaXMgJyArIChkaWRQYXNzID8gJ2EgY29ycmVjdCAnIDogJ2FuIGluY29ycmVjdCAnKSAr
IChhY3R1YWwgPyAnaW52YWxpZCcgOiAndmFsaWQnKSArICcgdXJsLic7CisgICAgaWYgKGRpZFBh
c3MpCisgICAgICAgIHRlc3RQYXNzZWQocmVzdWx0VGV4dCk7CisgICAgZWxzZQorICAgICAgICB0
ZXN0RmFpbGVkKHJlc3VsdFRleHQpOworfQorCit2YXIgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2lucHV0Jyk7CitpLnR5cGUgPSAndXJsJzsKKworLy8gVmFsaWQgdmFsdWVzCitjaGVjaygn
aHR0cDovL3d3dy5nb29nbGUuY29tJywgZmFsc2UpOworY2hlY2soJ2h0dHA6Ly9sb2NhbGhvc3Qn
LCBmYWxzZSk7CitjaGVjaygnaHR0cDovLzEyNy4wLjAuMScsIGZhbHNlKTsKK2NoZWNrKCdodHRw
Oi8vYScsIGZhbHNlKTsKK2NoZWNrKCdodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3Jscz1l
biZxPVdlYktpdCZpZT1VVEYtOCZvZT1VVEYtOCcsIGZhbHNlKTsKK2NoZWNrKCdmdHA6Ly9mdHAu
bXlob3N0LmNvbScsIGZhbHNlKTsKK2NoZWNrKCdzc2g6Ly9zc2gubXlob3N0LmNvbScsIGZhbHNl
KTsKK2NoZWNrKCdzb21lc2NoZW1lOi8vc3NoLm15aG9zdC5jb20nLCBmYWxzZSk7CitjaGVjaygn
aHR0cDovL2EvXFxcL1wnXCcqPD4vJywgZmFsc2UpOworY2hlY2soJ2h0dHA6Ly9hL2Rmcy9ca2Rz
QHNkcycsIGZhbHNlKTsKK2NoZWNrKCdodHRwOi8vYS5hOjEvc2VhcmNoP2EmYicsIGZhbHNlKTsK
KworLy8gSW52YWxpZCB2YWx1ZXMKKy8vIEZJWE1FOiBOb3QgYWxsIGludmFsaWQgY2FzZXMgbWln
aHQgYmUgY292ZXJlZAorY2hlY2soJ3d3dy5nb29nbGUuY29tJywgdHJ1ZSk7CitjaGVjaygnMTI3
LjAuMC4xJywgdHJ1ZSk7CitjaGVjaygnLmNvbScsIHRydWUpOworY2hlY2soJ2h0dHA6Ly93d3cu
ZyoqZ2xlLmNvbScsIHRydWUpOworY2hlY2soJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbTphYWFhJywg
dHJ1ZSk7CitjaGVjaygnaHR0cDovLyB3d3cuZ29vZ2xlLmNvbScsIHRydWUpOworY2hlY2soJ2h0
dHA6Ly93d3cgLmdvb2dsZS5jb20nLCB0cnVlKTsKK2NoZWNrKCdodHRwOi8vd3d3LiYjMTA7Z29v
Z2xlLiYjMTM7Y29tJywgdHJ1ZSk7CitjaGVjaygnOi8vJywgdHJ1ZSk7CitjaGVjaygnL2h0dHA6
Ly93d3cuZ29vZ2xlLmNvbScsIHRydWUpOworY2hlY2soJy0tLS1mdHA6Ly9hJywgdHJ1ZSk7Citj
aGVjaygnc2NoZW1lLy9hJywgdHJ1ZSk7CitjaGVjaygnaHR0cDovL2hvc3QrJywgdHJ1ZSk7Citj
aGVjaygnaHR0cDovL215dXJsIScsIHRydWUpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTs=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39475</attachid>
            <date>2009-09-11 14:31:30 -0700</date>
            <delta_ts>2009-09-11 15:01:10 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-27456-20090911233127.patch</filename>
            <type>text/plain</type>
            <size>6567</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODMxNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDktMTEgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNk
ZXNpbUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NDU2Cisg
ICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHN0YXRpYyB2YWxpZGF0aW9uIG9mIHVybCBpbgorICAg
ICAgICBWYWxpZGl0eVN0YXRlLCBmb3IgdXJsIHN0YXRlIGlucHV0cy4KKyAgICAgICAgRnJvbSBI
VE1MNSBzcGVjczoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay8jdXJsLXN0YXRlCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXR5cGVNaXNtYXRjaC11cmwuaHRtbAorCisgICAgICAgICogaHRtbC9WYWxpZGl0
eVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnR5cGVNaXNtYXRj
aCk6CisKIDIwMDktMDktMTEgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5kZXg6IFdlYkNvcmUv
aHRtbC9WYWxpZGl0eVN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvVmFsaWRp
dHlTdGF0ZS5jcHAJKHJldmlzaW9uIDQ4MzE0KQorKysgV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3Rh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJIVE1M
SW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiS1VSTC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDkgKzUzLDE0IEBAIGJvb2wgVmFsaWRp
dHlTdGF0ZTo6dHlwZU1pc21hdGNoKCkKICAgICAgICAgcmV0dXJuICFpc1ZhbGlkQ29sb3JTdHJp
bmcodmFsdWUpOwogICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6TlVNQkVSOgogICAgICAgICBy
ZXR1cm4gIUhUTUxJbnB1dEVsZW1lbnQ6OmZvcm1TdHJpbmdUb0RvdWJsZSh2YWx1ZSwgMCk7Cisg
ICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpVUkw6CisgICAgICAgIHJldHVybiAhS1VSTChLVVJM
KCksIHZhbHVlKS5pc1ZhbGlkKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
IH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjp2YWxpZCgpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0ODMx
NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDA5LTA5LTExICBNaWNoZWxhbmdlbG8gRGUgU2ltb25lICA8bWljZGVzaW1AZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzQ1NgorICAgICAgICBUZXN0
IGNhc2UgZm9yIHVybCB2YWxpZGF0aW9uIGluIFZhbGlkaXR5U3RhdGUuCisKKyAgICAgICAgKiBm
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdHlwZU1pc21hdGNoLXVybC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gtdXJs
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVzb3VyY2VzL1ZhbGlkaXR5U3Rh
dGUtdHlwZU1pc21hdGNoLXVybC5qczogQWRkZWQuCisgICAgICAgIChjaGVjayk6CisKIDIwMDkt
MDktMTEgIENhbWVyb24gTWNDb3JtYWNrICA8Y2FtQG1jYy5pZC5hdT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRp
dHlTdGF0ZS10eXBlTWlzbWF0Y2gtdXJsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdHlwZU1pc21hdGNoLXVybC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtdHlwZU1pc21hdGNoLXVybC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzQgQEAKK0lucHV0IHR5cGU9dXJsIHZhbGlkYXRpb24gdGVzdAorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBodHRwOi8vd3d3Lmdvb2dsZS5jb20gaXMgYSBjb3JyZWN0IHZh
bGlkIHVybC4KK1BBU1MgaHR0cDovL2xvY2FsaG9zdCBpcyBhIGNvcnJlY3QgdmFsaWQgdXJsLgor
UEFTUyBodHRwOi8vMTI3LjAuMC4xIGlzIGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNTIGh0dHA6
Ly9hIGlzIGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9z
ZWFyY2g/cmxzPWVuJnE9V2ViS2l0JmllPVVURi04Jm9lPVVURi04IGlzIGEgY29ycmVjdCB2YWxp
ZCB1cmwuCitQQVNTIGZ0cDovL2Z0cC5teWhvc3QuY29tIGlzIGEgY29ycmVjdCB2YWxpZCB1cmwu
CitQQVNTIHNzaDovL3NzaC5teWhvc3QuY29tIGlzIGEgY29ycmVjdCB2YWxpZCB1cmwuCitQQVNT
IHNvbWVzY2hlbWU6Ly9zc2gubXlob3N0LmNvbSBpcyBhIGNvcnJlY3QgdmFsaWQgdXJsLgorUEFT
UyBodHRwOi8vYS9cLycnKjw+LyBpcyBhIGNvcnJlY3QgdmFsaWQgdXJsLgorUEFTUyBodHRwOi8v
YS9kZnMva2RzQHNkcyBpcyBhIGNvcnJlY3QgdmFsaWQgdXJsLgorUEFTUyBodHRwOi8vYS5hOjEv
c2VhcmNoP2EmYiBpcyBhIGNvcnJlY3QgdmFsaWQgdXJsLgorUEFTUyB3d3cuZ29vZ2xlLmNvbSBp
cyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIDEyNy4wLjAuMSBpcyBhIGNvcnJlY3QgaW52
YWxpZCB1cmwuCitQQVNTIC5jb20gaXMgYSBjb3JyZWN0IGludmFsaWQgdXJsLgorUEFTUyBodHRw
Oi8vd3d3LmcqKmdsZS5jb20gaXMgYSBjb3JyZWN0IGludmFsaWQgdXJsLgorUEFTUyBodHRwOi8v
d3d3Lmdvb2dsZS5jb206YWFhYSBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIGh0dHA6
Ly8gd3d3Lmdvb2dsZS5jb20gaXMgYSBjb3JyZWN0IGludmFsaWQgdXJsLgorUEFTUyBodHRwOi8v
d3d3IC5nb29nbGUuY29tIGlzIGEgY29ycmVjdCBpbnZhbGlkIHVybC4KK1BBU1MgaHR0cDovL3d3
dy4mIzEwO2dvb2dsZS4mIzEzO2NvbSBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIDov
LyBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIC9odHRwOi8vd3d3Lmdvb2dsZS5jb20g
aXMgYSBjb3JyZWN0IGludmFsaWQgdXJsLgorUEFTUyAtLS0tZnRwOi8vYSBpcyBhIGNvcnJlY3Qg
aW52YWxpZCB1cmwuCitQQVNTIHNjaGVtZS8vYSBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQ
QVNTIGh0dHA6Ly9ob3N0KyBpcyBhIGNvcnJlY3QgaW52YWxpZCB1cmwuCitQQVNTIGh0dHA6Ly9t
eXVybCEgaXMgYSBjb3JyZWN0IGludmFsaWQgdXJsLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
VmFsaWRpdHlTdGF0ZS10eXBlTWlzbWF0Y2gtdXJsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXR5cGVNaXNtYXRjaC11cmwuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS10eXBlTWlz
bWF0Y2gtdXJsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL1Zh
bGlkaXR5U3RhdGUtdHlwZU1pc21hdGNoLXVybC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL1ZhbGlk
aXR5U3RhdGUtdHlwZU1pc21hdGNoLXVybC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3Jlc291cmNlcy9WYWxpZGl0eVN0YXRlLXR5cGVNaXNtYXRjaC11cmwuanMJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9WYWxpZGl0eVN0
YXRlLXR5cGVNaXNtYXRjaC11cmwuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKK2Rl
c2NyaXB0aW9uKCJJbnB1dCB0eXBlPXVybCB2YWxpZGF0aW9uIHRlc3QiKTsKKworZnVuY3Rpb24g
Y2hlY2sodmFsdWUsIG1pc21hdGNoRXhwZWN0ZWQpIHsKKyAgICBpLnZhbHVlID0gdmFsdWU7Cisg
ICAgdmFyIGFjdHVhbCA9IGkudmFsaWRpdHkudHlwZU1pc21hdGNoOworICAgIHZhciBkaWRQYXNz
ID0gYWN0dWFsID09IG1pc21hdGNoRXhwZWN0ZWQ7CisgICAgdmFyIHJlc3VsdFRleHQgPSB2YWx1
ZSArICcgaXMgJyArIChkaWRQYXNzID8gJ2EgY29ycmVjdCAnIDogJ2FuIGluY29ycmVjdCAnKSAr
IChhY3R1YWwgPyAnaW52YWxpZCcgOiAndmFsaWQnKSArICcgdXJsLic7CisgICAgaWYgKGRpZFBh
c3MpCisgICAgICAgIHRlc3RQYXNzZWQocmVzdWx0VGV4dCk7CisgICAgZWxzZQorICAgICAgICB0
ZXN0RmFpbGVkKHJlc3VsdFRleHQpOworfQorCit2YXIgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2lucHV0Jyk7CitpLnR5cGUgPSAndXJsJzsKKworLy8gVmFsaWQgdmFsdWVzCitjaGVjaygn
aHR0cDovL3d3dy5nb29nbGUuY29tJywgZmFsc2UpOworY2hlY2soJ2h0dHA6Ly9sb2NhbGhvc3Qn
LCBmYWxzZSk7CitjaGVjaygnaHR0cDovLzEyNy4wLjAuMScsIGZhbHNlKTsKK2NoZWNrKCdodHRw
Oi8vYScsIGZhbHNlKTsKK2NoZWNrKCdodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3Jscz1l
biZxPVdlYktpdCZpZT1VVEYtOCZvZT1VVEYtOCcsIGZhbHNlKTsKK2NoZWNrKCdmdHA6Ly9mdHAu
bXlob3N0LmNvbScsIGZhbHNlKTsKK2NoZWNrKCdzc2g6Ly9zc2gubXlob3N0LmNvbScsIGZhbHNl
KTsKK2NoZWNrKCdzb21lc2NoZW1lOi8vc3NoLm15aG9zdC5jb20nLCBmYWxzZSk7CitjaGVjaygn
aHR0cDovL2EvXFxcL1wnXCcqPD4vJywgZmFsc2UpOworY2hlY2soJ2h0dHA6Ly9hL2Rmcy9ca2Rz
QHNkcycsIGZhbHNlKTsKK2NoZWNrKCdodHRwOi8vYS5hOjEvc2VhcmNoP2EmYicsIGZhbHNlKTsK
KworLy8gSW52YWxpZCB2YWx1ZXMKK2NoZWNrKCd3d3cuZ29vZ2xlLmNvbScsIHRydWUpOworY2hl
Y2soJzEyNy4wLjAuMScsIHRydWUpOworY2hlY2soJy5jb20nLCB0cnVlKTsKK2NoZWNrKCdodHRw
Oi8vd3d3LmcqKmdsZS5jb20nLCB0cnVlKTsKK2NoZWNrKCdodHRwOi8vd3d3Lmdvb2dsZS5jb206
YWFhYScsIHRydWUpOworY2hlY2soJ2h0dHA6Ly8gd3d3Lmdvb2dsZS5jb20nLCB0cnVlKTsKK2No
ZWNrKCdodHRwOi8vd3d3IC5nb29nbGUuY29tJywgdHJ1ZSk7CitjaGVjaygnaHR0cDovL3d3dy4m
IzEwO2dvb2dsZS4mIzEzO2NvbScsIHRydWUpOworY2hlY2soJzovLycsIHRydWUpOworY2hlY2so
Jy9odHRwOi8vd3d3Lmdvb2dsZS5jb20nLCB0cnVlKTsKK2NoZWNrKCctLS0tZnRwOi8vYScsIHRy
dWUpOworY2hlY2soJ3NjaGVtZS8vYScsIHRydWUpOworY2hlY2soJ2h0dHA6Ly9ob3N0KycsIHRy
dWUpOworY2hlY2soJ2h0dHA6Ly9teXVybCEnLCB0cnVlKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7
</data>

          </attachment>
      

    </bug>

</bugzilla>