<?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>34653</bug_id>
          
          <creation_ts>2010-02-05 10:51:20 -0800</creation_ts>
          <short_desc>Charset parameter set by setRequestHeader as &quot;KOI8-R&quot; is NOT changed to UTF-8</short_desc>
          <delta_ts>2010-08-31 17:36:35 -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>XML</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>sangeetha.sugavanam</reporter>
          <assigned_to name="Chang Shu">cshu</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>cshu</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>188221</commentid>
    <comment_count>0</comment_count>
    <who name="">sangeetha.sugavanam</who>
    <bug_when>2010-02-05 10:51:20 -0800</bug_when>
    <thetext>Steps to Reproduce:
1. Launch QtLauncher.
2. Load the webpage attached to the bug report(from the zip file).
3. Click the Button to execute the test.
4. Content-Type Header received from the server is displayed in the green box above the button.  

Expected Result:
===============
- Should display content-type and charset as &quot;application/xml; charset=UTF-8&quot;.

Actual Result:
==============
- content-type and charset displayed as &quot;application/xml; charset=KOI8-R&quot;.


Additional Info:
================
1. Test Assertion : Invoke Send with in parameter Data as Document - 
   If Content-Type header is set using setRequestHeader() and its value is not
malformed, 
   set the charset parameter of the header, by either changing the charset
parameter(if one is present) 
   or appending one, to the  encoding used to encode the document

2. The encoding used to encode the document is UTF-8


3. W3c spec link -
  
http://dev.w3.org/cvsweb/~checkout~/2006/webapi/XMLHttpRequest/Overview.html?rev=1.209&amp;content-type=text/html;%20charset=iso-8859-1

4. Pls refer : Section 4.6.3 - Alogorithm 3 under &quot;data is a Document&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188225</commentid>
    <comment_count>1</comment_count>
      <attachid>48243</attachid>
    <who name="">sangeetha.sugavanam</who>
    <bug_when>2010-02-05 11:01:21 -0800</bug_when>
    <thetext>Created attachment 48243
Test files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188409</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-02-05 21:52:13 -0800</bug_when>
    <thetext>&gt; - content-type and charset displayed as &quot;application/xml; charset=KOI8-R&quot;.

The attached test doesn&apos;t mention KOI8-R anywhere. Is it the right test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198050</commentid>
    <comment_count>3</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-03-10 06:30:38 -0800</bug_when>
    <thetext>
Please follow the QtWebKit bug reporting guidelines when reporting bugs.

See http://trac.webkit.org/wiki/QtWebKitBugs

Specifically:

  - The &apos;QtWebKit&apos; component should only be used for bugs/features in the
    public QtWebKit API layer, not to signify that the bug is specific to
    the Qt port of WebKit

      http://trac.webkit.org/wiki/QtWebKitBugs#Component

  - Add the keyword &apos;Qt&apos; to signal that it&apos;s a Qt-related bug

      http://trac.webkit.org/wiki/QtWebKitBugs#Keywords</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198700</commentid>
    <comment_count>4</comment_count>
      <attachid>50520</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-03-11 11:33:49 -0800</bug_when>
    <thetext>Created attachment 50520
fix patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198701</commentid>
    <comment_count>5</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-03-11 11:35:23 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; - content-type and charset displayed as &quot;application/xml; charset=KOI8-R&quot;.
&gt; 
&gt; The attached test doesn&apos;t mention KOI8-R anywhere. Is it the right test?

KIO8-R can be found in the attached htm file around line 54:
client.setRequestHeader(&quot;Content-Type&quot;, &quot;text/plain;charset=KOI8-R&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198702</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-11 11:36:30 -0800</bug_when>
    <thetext>Attachment 50520 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/xml/XMLHttpRequest.cpp:435:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198719</commentid>
    <comment_count>7</comment_count>
      <attachid>50520</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-11 11:58:43 -0800</bug_when>
    <thetext>Comment on attachment 50520
fix patch

&gt; KIO8-R can be found in the attached htm file around line 54:
&gt;client.setRequestHeader(&quot;Content-Type&quot;, &quot;text/plain;charset=KOI8-R&quot;);

Sorry, I was probably looking at some other test.

This bug has all Qt flags set on it, but the change is in cross-platform code. Please correct the bug&apos;s component and keywords.

Whether we want to make this change depends on what Firefox and IE do, not just on what the spec says. Please research their behavior, and post the results in the bug.

+        }
+        else {

The should be on the same line.

+            contentType = contentType.stripWhiteSpace();
+            int start = contentType.find(&quot;charset&quot;, 0);

HTTP header modification should abstracted out into a separate function. We don&apos;t have a great place to put it currently - HTTPParsers.{h,cpp} is the closest, but it&apos;s only about parsing. Maybe you should just make it a static funciton in XMLHttpRequest.cpp for now.

-                setRequestHeaderInternal(&quot;Content-Type&quot;, &quot;application/xml&quot;);
+                setRequestHeaderInternal(&quot;Content-Type&quot;, &quot;text/plain;charset=UTF-8&quot;);

This is a change that is not asked for in this bug, and one that is not explained in ChangeLog. Is there a reason you are making it in the same patch? It will need to be discussed on its own.

+        No new tests have been created. The orginal test case, 
+        http://waplabdc.nokia-boston.com/browser/users/akancher/sf_XHR/Send/Send_strData_Charset_Not_UTF8.htm,
+        requires ALL-HTTP echoing back from an asp server. However, cgi does not support this.

It is certainly possible to access a request Content-Type from a cgi, see e.g. LayoutTests/http/tests/xmlhttprequest/print-content-type.cgi.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198724</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-11 12:00:30 -0800</bug_when>
    <thetext>&gt; This bug has all Qt flags set on it, but the change is in cross-platform code.
&gt; Please correct the bug&apos;s component and keywords.

I see that you did this while I was reviewing. Also changing platform now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198727</commentid>
    <comment_count>9</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-03-11 12:05:06 -0800</bug_when>
    <thetext>&gt; 
&gt; +            contentType = contentType.stripWhiteSpace();
&gt; +            int start = contentType.find(&quot;charset&quot;, 0);
&gt; 
&gt; HTTP header modification should abstracted out into a separate function. We
&gt; don&apos;t have a great place to put it currently - HTTPParsers.{h,cpp} is the
&gt; closest, but it&apos;s only about parsing. Maybe you should just make it a static
&gt; funciton in XMLHttpRequest.cpp for now.

Sure. will do.

&gt; 
&gt; -                setRequestHeaderInternal(&quot;Content-Type&quot;, &quot;application/xml&quot;);
&gt; +                setRequestHeaderInternal(&quot;Content-Type&quot;,
&gt; &quot;text/plain;charset=UTF-8&quot;);
&gt; 
&gt; This is a change that is not asked for in this bug, and one that is not
&gt; explained in ChangeLog. Is there a reason you are making it in the same patch?
&gt; It will need to be discussed on its own.

Right. I planned to take this line out but forgot to do it while submitting the patch. I understand this is addressed in another bug
https://bugs.webkit.org/show_bug.cgi?id=11049

&gt; 
&gt; +        No new tests have been created. The orginal test case, 
&gt; +       
&gt; http://waplabdc.nokia-boston.com/browser/users/akancher/sf_XHR/Send/Send_strData_Charset_Not_UTF8.htm,
&gt; +        requires ALL-HTTP echoing back from an asp server. However, cgi does
&gt; not support this.
&gt; 
&gt; It is certainly possible to access a request Content-Type from a cgi, see e.g.
&gt; LayoutTests/http/tests/xmlhttprequest/print-content-type.cgi.

wow, I will create a new test case then. thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198768</commentid>
    <comment_count>10</comment_count>
      <attachid>50538</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-03-11 14:11:24 -0800</bug_when>
    <thetext>Created attachment 50538
fix patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198787</commentid>
    <comment_count>11</comment_count>
      <attachid>50538</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-11 14:40:46 -0800</bug_when>
    <thetext>Comment on attachment 50538
fix patch 2

+            m_requestHeaders.remove(&quot;Content-Type&quot;);
+            m_requestHeaders.set(&quot;Content-Type&quot;, contentType);

Is there actually necessary to remove before setting?

+    req.open(&quot;POST&quot;, &quot;print-content-type.cgi&quot;, false);

This can&apos;t work - the cgi script is in resources/ subdirectory. Please fix and make the test resilient against such errors.

This can&apos;t go in without an answer to my question about other browsers&apos; behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198898</commentid>
    <comment_count>12</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-03-11 19:03:32 -0800</bug_when>
    <thetext>&gt; +    req.open(&quot;POST&quot;, &quot;print-content-type.cgi&quot;, false);
&gt; 
&gt; This can&apos;t work - the cgi script is in resources/ subdirectory. Please fix and
&gt; make the test resilient against such errors.

For some reason, this cgi script is under xmlhttprequest, along with a couple of others. Most other cgi scripts are under xmlhttprequest/resources indeed.

&gt; 
&gt; This can&apos;t go in without an answer to my question about other browsers&apos;
&gt; behavior.

I tried on Firefox and IE. Firefox shows UTF-8, which is as specified, but IE shows KOI8-R.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198915</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-11 19:58:03 -0800</bug_when>
    <thetext>&gt; For some reason, this cgi script is under xmlhttprequest, along with a couple

Indeed it is!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198916</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-11 20:00:39 -0800</bug_when>
    <thetext>OK. Siding with Firefox seems fine here.

Does it match the behavior of this patch in all these cases?

- setRequestHeader wasn&apos;t called;
- setRequestHeader was called, and Content-Type without a charset was passed;
- setRequestHeader was called, and Content-Type with a different charset was passed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199013</commentid>
    <comment_count>15</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-03-12 06:49:52 -0800</bug_when>
    <thetext>Thanks for the comments! Please see my findings below:

&gt; Does it match the behavior of this patch in all these cases?
&gt; 
&gt; - setRequestHeader wasn&apos;t called;

This is not covered by this patch. The current webkit behavior is showing &quot;application/xml&quot;. But Firefox shows &quot;text/plain; charset=UTF-8&quot;.

&gt; - setRequestHeader was called, and Content-Type without a charset was passed;
&gt; - setRequestHeader was called, and Content-Type with a different charset was
&gt; passed.

Yes, after my patch, webkit shows &quot;text/plain; charset=UTF-8&quot; in both cases and so does firefox. I will go ahead submit the new patch after removing the &quot;remove&quot; line. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199048</commentid>
    <comment_count>16</comment_count>
      <attachid>50598</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-03-12 07:42:26 -0800</bug_when>
    <thetext>Created attachment 50598
fix patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199196</commentid>
    <comment_count>17</comment_count>
      <attachid>50598</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-12 13:42:38 -0800</bug_when>
    <thetext>Comment on attachment 50598
fix patch 3

1. We usually don&apos;t fix coding style for code that isn&apos;t touched by a change, like isValidToken here. But it&apos;s fine to keep these, I&apos;m just commenting in general.

2. &quot;setCharsetinContentType&quot; should be &quot;setCharsetInMediaType&quot;. Note the capitalization, and matching the naming of existing functions.

3. This function doesn&apos;t do what it says. Instead of setting charset, it re-creates the media type string, potentially losing lots of other parameters.

#2 must be fixed before landing. But I can&apos;t decide if #3 is important enough to be fixed right away. This part regresses behavior and doesn&apos;t match the spec, but it may be harmless in practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199200</commentid>
    <comment_count>18</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-03-12 13:55:40 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 50598 [details])
&gt; 1. We usually don&apos;t fix coding style for code that isn&apos;t touched by a change,
&gt; like isValidToken here. But it&apos;s fine to keep these, I&apos;m just commenting in
&gt; general.

I was running check-webkit-style against the cpp file. So looks like I should run against the patch file.

&gt; 
&gt; 2. &quot;setCharsetinContentType&quot; should be &quot;setCharsetInMediaType&quot;. Note the
&gt; capitalization, and matching the naming of existing functions.

Sure.

&gt; 3. This function doesn&apos;t do what it says. Instead of setting charset, it
&gt; re-creates the media type string, potentially losing lots of other parameters.

Yeah, I assumed the media type is composed of two parts. Just wanted to simplified the code, otherwise I have to almost copy the whole extractcharsetfrommediatype over.

&gt; 
&gt; #2 must be fixed before landing. But I can&apos;t decide if #3 is important enough
&gt; to be fixed right away. This part regresses behavior and doesn&apos;t match the
&gt; spec, but it may be harmless in practice.

Is it ok I don&apos;t touch #3 in the next patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199212</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-12 14:14:22 -0800</bug_when>
    <thetext>&gt; Is it ok I don&apos;t touch #3 in the next patch?

I don&apos;t understand the question. But anyway, I&apos;d like someone who is more familiar with real world HTTP usage (Darin Fisher?) to make this call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199219</commentid>
    <comment_count>20</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-03-12 14:18:44 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; Is it ok I don&apos;t touch #3 in the next patch?
&gt; 
&gt; I don&apos;t understand the question. But anyway, I&apos;d like someone who is more
&gt; familiar with real world HTTP usage (Darin Fisher?) to make this call.

I asked if I really needed to re-implement the function. I will wait for Darin Fisher&apos; comments then. Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199283</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-12 19:42:48 -0800</bug_when>
    <thetext>Yeah, completely overriding the Content-Type header seems risky to me.  That said, I don&apos;t know of any real world examples where someone is using custom modifiers in the Content-Type header, but there is nothing to prevent someone from doing so today.

Does Firefox also set the charset on the request header?  How do they handle this case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199656</commentid>
    <comment_count>22</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-03-15 08:14:29 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Yeah, completely overriding the Content-Type header seems risky to me.  That
&gt; said, I don&apos;t know of any real world examples where someone is using custom
&gt; modifiers in the Content-Type header, but there is nothing to prevent someone
&gt; from doing so today.
&gt; 
&gt; Does Firefox also set the charset on the request header?  How do they handle
&gt; this case?

Thanks for the comment, Darin. I have no problem to reimplement the setcharset function. I guess we should always favor a solid implementation over a simplified one. :)

From the test result, I can see Firefox always set the charset on the request header. I also read the code: https://hg.mozilla.org/mozilla-central/file/249428fdc4a8/content/base/src/nsXMLHttpRequest.cpp and believe they modified the header based on certain logic. However, since I didn&apos;t debug through the code, I wasn&apos;t 100% sure if we match their implementation exactly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201487</commentid>
    <comment_count>23</comment_count>
      <attachid>51076</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-03-18 12:54:53 -0700</bug_when>
    <thetext>Created attachment 51076
fix patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201489</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-18 12:55:42 -0700</bug_when>
    <thetext>Attachment 51076 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/xml/XMLHttpRequest.cpp:136:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/xml/XMLHttpRequest.cpp:141:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201493</commentid>
    <comment_count>25</comment_count>
      <attachid>51079</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-03-18 12:58:19 -0700</bug_when>
    <thetext>Created attachment 51079
fix patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201496</commentid>
    <comment_count>26</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-18 13:00:04 -0700</bug_when>
    <thetext>Note that XHR spec explicitly says that all occurrences of charset in media type string should be replaced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207729</commentid>
    <comment_count>27</comment_count>
      <attachid>51079</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-04-01 23:53:23 -0700</bug_when>
    <thetext>Comment on attachment 51079
fix patch 4

Sorry for the super slow turnaround on this code review.


&gt; Index: WebCore/platform/network/HTTPParsers.cpp
...
&gt; +void findCharsetInMediaType(const String&amp; mediaType, int&amp; charsetStart, int&amp; charsetLen)
&gt; +{
&gt; +    charsetStart = 0;
&gt; +    charsetLen = 0;
&gt; +
&gt;      int pos = 0;
&gt;      int length = (int)mediaType.length();
&gt;      
&gt;      while (pos &lt; length) {
&gt;          pos = mediaType.find(&quot;charset&quot;, pos, false);
&gt; +        if (pos &lt;= 0) {
&gt; +            charsetLen = 0;
&gt; +            return;
&gt; +        }
&gt;          
&gt;          // is what we found a beginning of a word?
&gt;          if (mediaType[pos-1] &gt; &apos; &apos; &amp;&amp; mediaType[pos-1] != &apos;;&apos;) {
&gt; @@ -214,10 +226,12 @@ String extractCharsetFromMediaType(const
&gt;          int endpos = pos;
&gt;          while (pos != length &amp;&amp; mediaType[endpos] &gt; &apos; &apos; &amp;&amp; mediaType[endpos] != &apos;&quot;&apos; &amp;&amp; mediaType[endpos] != &apos;\&apos;&apos; &amp;&amp; mediaType[endpos] != &apos;;&apos;)
&gt;              ++endpos;
&gt; +
&gt; +        charsetStart = pos;
&gt; +        charsetLen = endpos - pos;
&gt; +        return;
&gt;      }
&gt; +
&gt; +    charsetLen = 0;
&gt;  }

^^^ it looks likes it is unnecessary to assign 0 here since contentLen is
initialized to 0 at the top of the function.


&gt; Index: WebCore/xml/XMLHttpRequest.cpp
&gt; ===================================================================
&gt; --- WebCore/xml/XMLHttpRequest.cpp	(revision 56125)
&gt; +++ WebCore/xml/XMLHttpRequest.cpp	(working copy)
&gt; @@ -128,6 +128,31 @@ static bool isSetCookieHeader(const Atom
&gt;      return equalIgnoringCase(name, &quot;set-cookie&quot;) || equalIgnoringCase(name, &quot;set-cookie2&quot;);
&gt;  }
&gt;  
&gt; +static void setCharsetInMediaType(String&amp; mediaType, const String&amp; charsetValue)
&gt; +{
&gt; +    int start, len;
&gt; +    findCharsetInMediaType(mediaType, start, len);
&gt; +
&gt; +    if (!len) {
&gt; +        // When no charset found, append new charset.
&gt; +        mediaType.stripWhiteSpace();
&gt; +        if (mediaType[mediaType.length() - 1] != &apos;;&apos;)
&gt; +            mediaType.append(&quot;;&quot;);
&gt; +        mediaType.append(&quot; charset=&quot;);
&gt; +        mediaType.append(charsetValue);
&gt; +    } else {
&gt; +        // Found existing charset, replace with new charset.
&gt; +        String newMediaType = mediaType.substring(0, start);
&gt; +        newMediaType.append(charsetValue);
&gt; +
&gt; +        if (start + len &lt; (int)mediaType.length()) {

^^^ nit: please use static_cast&lt;int&gt;(...) instead of the C-style cast.


&gt; +            newMediaType.append(&quot;; &quot;);
&gt; +            newMediaType.append(mediaType.substring(start + len));

maybe it would be better to use the String::replace method?

another approach here might be to strip out all occurrences of a charset
attribute and then append the desired charset attribute.


&gt; Index: LayoutTests/http/tests/xmlhttprequest/request-encoding2.html
...
&gt; +    function test1()
&gt; +    {
&gt; +        req = new XMLHttpRequest;
&gt; +        req.open(&quot;POST&quot;, &quot;print-content-type.cgi&quot;, false);
&gt; +
&gt; +        req.send(&quot;&quot;);
&gt; +
&gt; +        document.getElementById(&quot;result1&quot;).firstChild.data = &quot;Test1 (setRequestHeader was not called):&quot;;
&gt; +        if (req.responseText == &quot;application/xml\n&quot;)

Can you explain why this case does not have an implicit charset?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207730</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-04-01 23:54:22 -0700</bug_when>
    <thetext>Please also include tests for the case where there are other Content-Type attributes bracketing the charset attribute since the code attempts to deal with such.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207865</commentid>
    <comment_count>29</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-04-02 08:36:46 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; Please also include tests for the case where there are other Content-Type
&gt; attributes bracketing the charset attribute since the code attempts to deal
&gt; with such.

Thanks for the review, Darin. I will submit a new patch based on your comments.
For the above comment, I am not sure how to come up with a real-life case with attributes following charset. Can you give me an example, or I just use an imaginary content string, like content=&quot;text/html; charset=iso-8859-1; future-extension&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207870</commentid>
    <comment_count>30</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-02 08:47:38 -0700</bug_when>
    <thetext>&gt;&gt; +        if (req.responseText == &quot;application/xml\n&quot;)
&gt;Can you explain why this case does not have an implicit charset?

Perhaps because application/xml defaults to UTF-8 anyway, and since browsers didn&apos;t send charset before, it&apos;s safer not to send one. I don&apos;t know what Firefox does now though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207875</commentid>
    <comment_count>31</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-04-02 08:57:15 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; &gt;&gt; +        if (req.responseText == &quot;application/xml\n&quot;)
&gt; &gt;Can you explain why this case does not have an implicit charset?
&gt; 
&gt; Perhaps because application/xml defaults to UTF-8 anyway, and since browsers
&gt; didn&apos;t send charset before, it&apos;s safer not to send one. I don&apos;t know what
&gt; Firefox does now though.

Well, I noticed that with this patch if the user sets a Content-Type header without an explicit charset, we will add a charset attribute, but if they do not set a Content-Type header at all, then we will not add a charset attribute.  Is that how Firefox behaves?  Doesn&apos;t it seem a bit odd to be inconsistent in these two cases?  I agree that excluding UTF-8 shouldn&apos;t really matter though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207876</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-04-02 08:58:11 -0700</bug_when>
    <thetext>(In reply to comment #29)
...
&gt; attributes following charset. Can you give me an example, or I just use an
&gt; imaginary content string, like content=&quot;text/html; charset=iso-8859-1;
&gt; future-extension&quot;?

Yeah, making up a fake attribute was my intent.  That way you can test some of the cases the code is attempting to handle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208732</commentid>
    <comment_count>33</comment_count>
      <attachid>52579</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-04-05 15:17:17 -0700</bug_when>
    <thetext>Created attachment 52579
fix patch 5

This patch implements multiple charset and extra fields handling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208733</commentid>
    <comment_count>34</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-04-05 15:18:47 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #30)
&gt; &gt; &gt;&gt; +        if (req.responseText == &quot;application/xml\n&quot;)
&gt; &gt; &gt;Can you explain why this case does not have an implicit charset?
&gt; &gt; 
&gt; &gt; Perhaps because application/xml defaults to UTF-8 anyway, and since browsers
&gt; &gt; didn&apos;t send charset before, it&apos;s safer not to send one. I don&apos;t know what
&gt; &gt; Firefox does now though.
&gt; 
&gt; Well, I noticed that with this patch if the user sets a Content-Type header
&gt; without an explicit charset, we will add a charset attribute, but if they do
&gt; not set a Content-Type header at all, then we will not add a charset attribute.
&gt;  Is that how Firefox behaves?  Doesn&apos;t it seem a bit odd to be inconsistent in
&gt; these two cases?  I agree that excluding UTF-8 shouldn&apos;t really matter though.

This can probably be addressed in this bug:
https://bugs.webkit.org/show_bug.cgi?id=11049</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212087</commentid>
    <comment_count>35</comment_count>
      <attachid>52579</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-13 14:39:22 -0700</bug_when>
    <thetext>Comment on attachment 52579
fix patch 5

Rejecting patch 52579 from commit-queue.

Failed to run &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, &apos;--reviewer&apos;, &apos;Darin Fisher&apos;, &apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
form/network/HTTPParsers.h
Hunk #1 FAILED at 48.
1 out of 1 hunk FAILED -- saving rejects to file WebCore/platform/network/HTTPParsers.h.rej
patching file WebCore/xml/XMLHttpRequest.cpp
Hunk #1 succeeded at 129 (offset 1 line).
Hunk #2 succeeded at 456 (offset 1 line).
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/http/tests/xmlhttprequest/request-encoding2-expected.txt
patching file LayoutTests/http/tests/xmlhttprequest/request-encoding2.html

Full output: http://webkit-commit-queue.appspot.com/results/1584466</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212136</commentid>
    <comment_count>36</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-04-13 16:08:41 -0700</bug_when>
    <thetext>The commit was rejected due to conflict on merging.
I manually landed the patch after resolving conflict.

Committed revision: 57544</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212163</commentid>
    <comment_count>37</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-04-13 17:02:54 -0700</bug_when>
    <thetext>This broke tests on the build bots, such as &lt;http://build.webkit.org/results/Tiger%20Intel%20Release/r57547%20(10780)/http/tests/xmlhttprequest/access-control-basic-whitelist-request-headers-pretty-diff.html&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212197</commentid>
    <comment_count>38</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-04-13 20:27:22 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; This broke tests on the build bots, such as
&gt; &lt;http://build.webkit.org/results/Tiger%20Intel%20Release/r57547%20(10780)/http/tests/xmlhttprequest/access-control-basic-whitelist-request-headers-pretty-diff.html&gt;.

Hi, Mark, I see you have updated the test results for me. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272531</commentid>
    <comment_count>39</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-08-31 17:36:35 -0700</bug_when>
    <thetext>This has caused bug 40947.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>48243</attachid>
            <date>2010-02-05 11:01:21 -0800</date>
            <delta_ts>2010-02-05 11:01:21 -0800</delta_ts>
            <desc>Test files</desc>
            <filename>Test.zip</filename>
            <type>application/x-zip-compressed</type>
            <size>1589</size>
            <attacher>sangeetha.sugavanam</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAGdsRTwAAAAAAAAAAAAAAAARAAAAVGVzdC9TZW5kU3VwcG9ydC9QSwMEFAAAAAgA
xHX1OiiYLFhvAAAAFAEAACAAAABUZXN0L1NlbmRTdXBwb3J0L3NlbmRfaGVhZGVyLmFzcLNR5eVS
UFAAE+pFqcUKtgpBqYWlqcUlesGpRWWpRWGJRZmJSTmpxRpKzv5+Ia5+IfEhkQGuSppEafEICQmI
x6KPgDZHH594kFao6qDU4oL8vOJUvfCizJJUkGaQMFEOQDMJpAPTNAVEGPByqdoBAFBLAwQUAAAA
CABjcUg7mo79v8gDAAArBwAAJgAAAFRlc3QvU2VuZF9zdHJEYXRhX0NoYXJzZXRfTm90X1VURjgu
aHRtbVVtb9pIEP4Mv2K6J1Wgnm1yukq82JxISkTUJCBwpd6nyNhLbMXs+nbXJAj1v9/Mrk249hDC
45155u2ZWbphbvbltBvmPMmmXQj33CSQG1N5/J+6OETsRgrDhfHiY8UZpO4tYoa/mYCwkzRPlOYm
qs3OGzL0AaEpTMmnGy6ysTbqS0Iu0T9X0BjDoxTwLb4dhoGzxcgfPA/CshAvkCu+i5jvB9ocS+6n
WjNQvIyYfdc554aBwXyaNKxBMPU8Gxz94GNWm1yqMcz2UsPXRKQ5V2UC9MF8+BiuBsFgGPwxGIzQ
+vtiDTOtuTKFFGO4Ewf5wkFjAfBamBxsCYmGL8uHjVGFeAYPXnMuALEd+mBNa2wY12ZhC+31IUf7
pmqULtvofHYtEBvBqRPe8NybbW0I0fu6vBt6676PMWxpYeBIQmkrs2PTs7CahllxgCKLWCyra/lm
OUAbhU9CoXYaBtXUecGT1vwhKURj3wl3Uu2tQC1NFE8uPYKSrzpiVwOagBKlzyhZNiK2TdKXZyVr
kXmow57/Nhrd3o5GDIO2vmz2TYSwEBVW6PjDWo0UzMaSg8EVg0NS1qi4bhRSpGWRvkRsJyjdXp9N
gml4vUZHN6QAk3Nwxj6V7MpezTYb1BQaDFICxQ4Wcbx6ulk+xvPH+Cn+ezVvuckKXZXJkWfU850s
S6yUnFCjzv5+QY/t4CGwEOcFsCxeopCaiyTtaBsJlcSM6EBxXZdGE1kQJnbqIQIce/fFmVyhqZ9o
dEMSrB0gDBIbgDht+aXB16kqKkNi55AoWM833+7jDbpk8/V6uWaTVoMdxVFEheCv8P3hfoHr3kxv
rz/BwXQGvhRIXXbUBhcGixTPHDH4zEquJt3OrhYp7Ut71OufcKapmiBI8N30mMVvCA9j9sky4r+f
9Se0A0hO7ycFRBH8CR8/OgDFrzWd4bb2CQIn+2uLaWiMWue6kkLzGOmx3jtmi7pMpvWeSnrmZl5y
Eq+Pd1mvnW+XCaVutr6dQKrUem41QQBNUW7DoRA7eVnVe2Dn7UcXvwg8t6mdYDo8denXqCNJnXPD
Ky56bLXcxOx3YHR/buqqksoEdBU9uYRoIFBtVI0NBHhH/3IH/ffuRo//M7TuknENOPsR2BlaHHds
BxSrgTQxad7jSAGcgCKDbVnTlvlbyitbKDWlIfdiCG9nd/c4gw3INd4vhOBqET/co0VjO8GIHRtv
V4ikLI8nwvxs/27e7SA1nVJidhjcP/95uBXa1IXh7R791WAiBp8u8GB5+kGUhMF5i8LA3bJh4P4i
/wVQSwMECgAAAAAAQGxFPAAAAAAAAAAAAAAAAAUAAABUZXN0L1BLAQIUAAoAAAAAAGdsRTwAAAAA
AAAAAAAAAAARAAAAAAAAAAAAEAAAAAAAAABUZXN0L1NlbmRTdXBwb3J0L1BLAQIUABQAAAAIAMR1
9ToomCxYbwAAABQBAAAgAAAAAAAAAAEAIAAAAC8AAABUZXN0L1NlbmRTdXBwb3J0L3NlbmRfaGVh
ZGVyLmFzcFBLAQIUABQAAAAIAGNxSDuajv2/yAMAACsHAAAmAAAAAAAAAAEAIAAAANwAAABUZXN0
L1NlbmRfc3RyRGF0YV9DaGFyc2V0X05vdF9VVEY4Lmh0bVBLAQIUAAoAAAAAAEBsRTwAAAAAAAAA
AAAAAAAFAAAAAAAAAAAAEAAAAOgEAABUZXN0L1BLBQYAAAAABAAEABQBAAALBQAAAAA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50520</attachid>
            <date>2010-03-11 11:33:49 -0800</date>
            <delta_ts>2010-03-11 14:11:24 -0800</delta_ts>
            <desc>fix patch</desc>
            <filename>bug34653_1.patch</filename>
            <type>text/plain</type>
            <size>2330</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTg0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDMtMTEgIENoYW5nIFNodSAgPGNoYW5nLnNodUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hp
bGUgaW52b2tpbmcgWEhSIFNlbmQgd2l0aCBwYXJhbWV0ZXIgYXMgU3RyaW5nLCB0aGUgY2hhcnNl
dCB3aXRoaW4KKyAgICAgICAgQ29udGVudC1UeXBlIHNob3VsZCBiZSBzZXQgdG8gVVRGLTggYWxs
IHRoZSB0aW1lLgorICAgICAgICBXM0Mgc3BlY2lmaWNhdGlvbiBsaW5rOgorICAgICAgICBodHRw
Oi8vZGV2LnczLm9yZy9jdnN3ZWIvfmNoZWNrb3V0fi8yMDA2L3dlYmFwaS9YTUxIdHRwUmVxdWVz
dC9PdmVydmlldy5odG1sP3Jldj0xLjIwOSZjb250ZW50LXR5cGU9dGV4dC9odG1sOyUyMGNoYXJz
ZXQ9aXNvLTg4NTktMQorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM0NjUzCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGhhdmUgYmVlbiBj
cmVhdGVkLiBUaGUgb3JnaW5hbCB0ZXN0IGNhc2UsIAorICAgICAgICBodHRwOi8vd2FwbGFiZGMu
bm9raWEtYm9zdG9uLmNvbS9icm93c2VyL3VzZXJzL2FrYW5jaGVyL3NmX1hIUi9TZW5kL1NlbmRf
c3RyRGF0YV9DaGFyc2V0X05vdF9VVEY4Lmh0bSwKKyAgICAgICAgcmVxdWlyZXMgQUxMLUhUVFAg
ZWNob2luZyBiYWNrIGZyb20gYW4gYXNwIHNlcnZlci4gSG93ZXZlciwgY2dpIGRvZXMgbm90IHN1
cHBvcnQgdGhpcy4KKworICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2VuZCk6CisKIDIwMTAtMDMtMTEgIERpZWdvIEdv
bnphbGV6ICA8ZGllZ28uZ29uemFsZXpAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9u
IDU1Nzc2KQorKysgV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MjksNyArNDI5LDE5IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmQoY29uc3QgU3Ry
aW5nJiAKICAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKICAgICAgICAgICAg
IGVsc2UKICNlbmRpZgotICAgICAgICAgICAgICAgIHNldFJlcXVlc3RIZWFkZXJJbnRlcm5hbCgi
Q29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL3htbCIpOworICAgICAgICAgICAgICAgIHNldFJl
cXVlc3RIZWFkZXJJbnRlcm5hbCgiQ29udGVudC1UeXBlIiwgInRleHQvcGxhaW47Y2hhcnNldD1V
VEYtOCIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29udGVudFR5
cGUgPSBjb250ZW50VHlwZS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAgICAgICAgIGludCBzdGFy
dCA9IGNvbnRlbnRUeXBlLmZpbmQoImNoYXJzZXQiLCAwKTsKKyAgICAgICAgICAgIGlmIChzdGFy
dCA+PSAwKQorICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlLnJlbW92ZShzdGFydCwgY29udGVu
dFR5cGUubGVuZ3RoKCkgLSBzdGFydCk7CisgICAgICAgICAgICBlbHNlIGlmIChjb250ZW50VHlw
ZVtjb250ZW50VHlwZS5sZW5ndGgoKSAtIDFdICE9ICc7JykKKyAgICAgICAgICAgICAgICBjb250
ZW50VHlwZS5hcHBlbmQoIjsiKTsKKworICAgICAgICAgICAgY29udGVudFR5cGUuYXBwZW5kKCJj
aGFyc2V0PVVURi04Iik7CisgICAgICAgICAgICBtX3JlcXVlc3RIZWFkZXJzLnJlbW92ZSgiQ29u
dGVudC1UeXBlIik7CisgICAgICAgICAgICBtX3JlcXVlc3RIZWFkZXJzLnNldCgiQ29udGVudC1U
eXBlIiwgY29udGVudFR5cGUpOwogICAgICAgICB9CiAKICAgICAgICAgbV9yZXF1ZXN0RW50aXR5
Qm9keSA9IEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKGJvZHkuY2hhcmFj
dGVycygpLCBib2R5Lmxlbmd0aCgpLCBFbnRpdGllc0ZvclVuZW5jb2RhYmxlcykpOwo=
</data>
<flag name="review"
          id="33679"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50538</attachid>
            <date>2010-03-11 14:11:24 -0800</date>
            <delta_ts>2010-03-12 07:42:26 -0800</delta_ts>
            <desc>fix patch 2</desc>
            <filename>bug34653_2.patch</filename>
            <type>text/plain</type>
            <size>5540</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTg1NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDMtMTEgIENoYW5nIFNodSAgPGNoYW5nLnNodUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hp
bGUgaW52b2tpbmcgWEhSIFNlbmQgd2l0aCBwYXJhbWV0ZXIgYXMgU3RyaW5nLCB0aGUgY2hhcnNl
dCBpbgorICAgICAgICBDb250ZW50LVR5cGUgc2hvdWxkIGJlIGZvcmNlZCB0byBzZXQgdG8gVVRG
LTguCisgICAgICAgIFczQyBzcGVjaWZpY2F0aW9uIGxpbms6CisgICAgICAgIGh0dHA6Ly9kZXYu
dzMub3JnL2N2c3dlYi9+Y2hlY2tvdXR+LzIwMDYvd2ViYXBpL1hNTEh0dHBSZXF1ZXN0L092ZXJ2
aWV3Lmh0bWw/cmV2PTEuMjA5JmNvbnRlbnQtdHlwZT10ZXh0L2h0bWw7JTIwY2hhcnNldD1pc28t
ODg1OS0xCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzQ2NTMKKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3JlcXVlc3QtZW5jb2RpbmcyLmh0bWwKKworICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
c2V0Q2hhcnNldGluQ29udGVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OnNlbmQpOgorCiAyMDEwLTAzLTExICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCShyZXZpc2lvbiA1NTc3NikKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgIlhNTEh0
dHBSZXF1ZXN0LmgiCiAKICNpbmNsdWRlICJCbG9iLmgiCi0jaW5jbHVkZSAiQ2FjaGUuaCIKICNp
bmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiQ2FjaGUuaCIKICNpbmNsdWRlICJDcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuaCIKICNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCkBAIC00NCw4ICs0NCw4IEBACiAjaW5jbHVkZSAiWE1MSHR0cFJl
cXVlc3RQcm9ncmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RVcGxvYWQuaCIK
ICNpbmNsdWRlICJtYXJrdXAuaCIKLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KIAogI2lmIFVTRShKU0MpCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCkBAIC0x
MDQsMTAgKzEwNCwxMCBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVG9rZW4oY29uc3QgU3RyaW5nJiBu
CiAgICAgICAgIGlmIChjID49IDEyNyB8fCBjIDw9IDMyKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgICAgIGlmIChjID09ICcoJyB8fCBjID09ICcpJyB8fCBjID09ICc8JyB8fCBj
ID09ICc+JyB8fCBjID09ICdAJyB8fAotICAgICAgICAgICAgYyA9PSAnLCcgfHwgYyA9PSAnOycg
fHwgYyA9PSAnOicgfHwgYyA9PSAnXFwnIHx8IGMgPT0gJ1wiJyB8fAotICAgICAgICAgICAgYyA9
PSAnLycgfHwgYyA9PSAnWycgfHwgYyA9PSAnXScgfHwgYyA9PSAnPycgfHwgYyA9PSAnPScgfHwK
LSAgICAgICAgICAgIGMgPT0gJ3snIHx8IGMgPT0gJ30nKQorICAgICAgICBpZiAoYyA9PSAnKCcg
fHwgYyA9PSAnKScgfHwgYyA9PSAnPCcgfHwgYyA9PSAnPicgfHwgYyA9PSAnQCcKKyAgICAgICAg
ICAgIHx8IGMgPT0gJywnIHx8IGMgPT0gJzsnIHx8IGMgPT0gJzonIHx8IGMgPT0gJ1xcJyB8fCBj
ID09ICdcIicKKyAgICAgICAgICAgIHx8IGMgPT0gJy8nIHx8IGMgPT0gJ1snIHx8IGMgPT0gJ10n
IHx8IGMgPT0gJz8nIHx8IGMgPT0gJz0nCisgICAgICAgICAgICB8fCBjID09ICd7JyB8fCBjID09
ICd9JykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEyNyw2ICsxMjcs
MTMgQEAgc3RhdGljIGJvb2wgaXNTZXRDb29raWVIZWFkZXIoY29uc3QgQXRvbQogICAgIHJldHVy
biBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic2V0LWNvb2tpZSIpIHx8IGVxdWFsSWdub3JpbmdD
YXNlKG5hbWUsICJzZXQtY29va2llMiIpOwogfQogCitzdGF0aWMgdm9pZCBzZXRDaGFyc2V0aW5D
b250ZW50VHlwZShTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXRWYWx1
ZSkKK3sKKyAgICBjb250ZW50VHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29u
dGVudFR5cGUpOworICAgIGNvbnRlbnRUeXBlLmFwcGVuZCgiOyBjaGFyc2V0PSIpOworICAgIGNv
bnRlbnRUeXBlLmFwcGVuZChjaGFyc2V0VmFsdWUpOworfQorCiBzdGF0aWMgY29uc3QgWE1MSHR0
cFJlcXVlc3RTdGF0aWNEYXRhKiBzdGF0aWNEYXRhID0gMDsKIAogc3RhdGljIGNvbnN0IFhNTEh0
dHBSZXF1ZXN0U3RhdGljRGF0YSogY3JlYXRlWE1MSHR0cFJlcXVlc3RTdGF0aWNEYXRhKCkKQEAg
LTQzMCw2ICs0MzcsMTAgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2VuZChjb25zdCBTdHJpbmcm
IAogICAgICAgICAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgICAgICAgICAgc2V0UmVxdWVzdEhl
YWRlckludGVybmFsKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veG1sIik7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBzZXRDaGFyc2V0aW5Db250ZW50VHlwZShjb250ZW50VHlw
ZSwgIlVURi04Iik7CisgICAgICAgICAgICBtX3JlcXVlc3RIZWFkZXJzLnJlbW92ZSgiQ29udGVu
dC1UeXBlIik7CisgICAgICAgICAgICBtX3JlcXVlc3RIZWFkZXJzLnNldCgiQ29udGVudC1UeXBl
IiwgY29udGVudFR5cGUpOwogICAgICAgICB9CiAKICAgICAgICAgbV9yZXF1ZXN0RW50aXR5Qm9k
eSA9IEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKGJvZHkuY2hhcmFjdGVy
cygpLCBib2R5Lmxlbmd0aCgpLCBFbnRpdGllc0ZvclVuZW5jb2RhYmxlcykpOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNTU4NTQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMiBAQAorMjAxMC0wMy0xMSAgQ2hhbmcgU2h1ICA8Y2hhbmcuc2h1QG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCB0ZXN0IGZvciBmb3JjaW5nIFVURi04IGNoYXJzZXQuCisKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3JlcXVlc3QtZW5jb2RpbmcyLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXF1ZXN0LWVuY29kaW5nMi5o
dG1sOiBBZGRlZC4KKwogMjAxMC0wMy0xMSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aApJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXF1ZXN0LWVuY29kaW5nMi1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9yZXF1ZXN0LWVuY29kaW5nMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JlcXVlc3QtZW5jb2RpbmcyLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUZXN0IGZvciBidWcgMzQ2NTM6IFhN
TEh0dHBSZXF1ZXN0IHNob3VsZCBmb3JjZSB0byBzZW5kIGNvbnRlbnQtdHlwZSBhcyBjaGFyc2V0
IGVxdWFscyBVVEYtOC4KKworU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9yZXF1ZXN0LWVuY29kaW5nMi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVxdWVzdC1lbmNvZGluZzIuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVx
dWVzdC1lbmNvZGluZzIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9o
dG1sO2NoYXJzZXQ9dXRmLTgiPgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDY1MyI+YnVnIDM0NjUzPC9hPjoKK1hN
TEh0dHBSZXF1ZXN0IHNob3VsZCBmb3JjZSB0byBzZW5kIGNvbnRlbnQtdHlwZSBhcyBjaGFyc2V0
IGVxdWFscyBVVEYtOC48L3A+Cis8ZGl2IGlkPXJlc3VsdD5GQUlMOiBzY3JpcHQgZGlkbid0IHJ1
biB0byBjb21wbGV0aW9uLjwvZGl2PgorPHNjcmlwdD4KKworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKworICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICByZXEub3BlbigiUE9TVCIs
ICJwcmludC1jb250ZW50LXR5cGUuY2dpIiwgZmFsc2UpOworICAgIHJlcS5zZXRSZXF1ZXN0SGVh
ZGVyKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veG1sOyBjaGFyc2V0PUtPSTgtUiIpOwor
ICAgIHJlcS5zZW5kKCIiKTsKKyAgICBpZiAocmVxLnJlc3BvbnNlVGV4dCA9PSAiYXBwbGljYXRp
b24veG1sOyBjaGFyc2V0PVVURi04XG4iKQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0IikuZmlyc3RDaGlsZC5kYXRhID0gIlNVQ0NFU1MiOworICAgIGVsc2UKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9ICJG
QUlMVVJFOiAnIiArIHJlcS5yZXNwb25zZVRleHQgKyAiJyI7CisKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="33706"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50598</attachid>
            <date>2010-03-12 07:42:26 -0800</date>
            <delta_ts>2010-03-18 12:54:53 -0700</delta_ts>
            <desc>fix patch 3</desc>
            <filename>bug34653_3.patch</filename>
            <type>text/plain</type>
            <size>5585</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTg5NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDMtMTIgIENoYW5nIFNodSAgPGNoYW5nLnNodUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hp
bGUgaW52b2tpbmcgWEhSIFNlbmQgd2l0aCBwYXJhbWV0ZXIgYXMgU3RyaW5nLCB0aGUgY2hhcnNl
dCBpbgorICAgICAgICBDb250ZW50LVR5cGUgc2hvdWxkIGJlIGZvcmNlZCB0byBzZXQgdG8gVVRG
LTguCisgICAgICAgIFczQyBzcGVjaWZpY2F0aW9uIGxpbms6CisgICAgICAgIGh0dHA6Ly9kZXYu
dzMub3JnL2N2c3dlYi9+Y2hlY2tvdXR+LzIwMDYvd2ViYXBpL1hNTEh0dHBSZXF1ZXN0L092ZXJ2
aWV3Lmh0bWw/cmV2PTEuMjA5JmNvbnRlbnQtdHlwZT10ZXh0L2h0bWw7JTIwY2hhcnNldD1pc28t
ODg1OS0xCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzQ2NTMKKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3JlcXVlc3QtZW5jb2RpbmcyLmh0bWwKKworICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
c2V0Q2hhcnNldGluQ29udGVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OnNlbmQpOgorCiAyMDEwLTAzLTEyICBLZW50IEhhbnNlbiAgPGtlbnQuaGFuc2VuQG5va2lh
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAJKHJldmlzaW9uIDU1ODk2KQorKysgV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw4IEBACiAjaW5jbHVkZSAiWE1MSHR0
cFJlcXVlc3QuaCIKIAogI2luY2x1ZGUgIkJsb2IuaCIKLSNpbmNsdWRlICJDYWNoZS5oIgogI2lu
Y2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDYWNoZS5oIgogI2luY2x1ZGUgIkNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCiAjaW5jbHVkZSAi
RE9NSW1wbGVtZW50YXRpb24uaCIKQEAgLTQ1LDggKzQ1LDggQEAKICNpbmNsdWRlICJYTUxIdHRw
UmVxdWVzdFByb2dyZXNzRXZlbnQuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFVwbG9hZC5o
IgogI2luY2x1ZGUgIm1hcmt1cC5oIgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCiAjaWYgVVNFKEpTQykKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKQEAg
LTEwNSwxMCArMTA1LDEwIEBAIHN0YXRpYyBib29sIGlzVmFsaWRUb2tlbihjb25zdCBTdHJpbmcm
IG4KICAgICAgICAgaWYgKGMgPj0gMTI3IHx8IGMgPD0gMzIpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgaWYgKGMgPT0gJygnIHx8IGMgPT0gJyknIHx8IGMgPT0gJzwnIHx8
IGMgPT0gJz4nIHx8IGMgPT0gJ0AnIHx8Ci0gICAgICAgICAgICBjID09ICcsJyB8fCBjID09ICc7
JyB8fCBjID09ICc6JyB8fCBjID09ICdcXCcgfHwgYyA9PSAnXCInIHx8Ci0gICAgICAgICAgICBj
ID09ICcvJyB8fCBjID09ICdbJyB8fCBjID09ICddJyB8fCBjID09ICc/JyB8fCBjID09ICc9JyB8
fAotICAgICAgICAgICAgYyA9PSAneycgfHwgYyA9PSAnfScpCisgICAgICAgIGlmIChjID09ICco
JyB8fCBjID09ICcpJyB8fCBjID09ICc8JyB8fCBjID09ICc+JyB8fCBjID09ICdAJworICAgICAg
ICAgICAgfHwgYyA9PSAnLCcgfHwgYyA9PSAnOycgfHwgYyA9PSAnOicgfHwgYyA9PSAnXFwnIHx8
IGMgPT0gJ1wiJworICAgICAgICAgICAgfHwgYyA9PSAnLycgfHwgYyA9PSAnWycgfHwgYyA9PSAn
XScgfHwgYyA9PSAnPycgfHwgYyA9PSAnPScKKyAgICAgICAgICAgIHx8IGMgPT0gJ3snIHx8IGMg
PT0gJ30nKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTI4LDYgKzEy
OCwxMyBAQCBzdGF0aWMgYm9vbCBpc1NldENvb2tpZUhlYWRlcihjb25zdCBBdG9tCiAgICAgcmV0
dXJuIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJzZXQtY29va2llIikgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UobmFtZSwgInNldC1jb29raWUyIik7CiB9CiAKK3N0YXRpYyB2b2lkIHNldENoYXJzZXRp
bkNvbnRlbnRUeXBlKFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldFZh
bHVlKQoreworICAgIGNvbnRlbnRUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShj
b250ZW50VHlwZSk7CisgICAgY29udGVudFR5cGUuYXBwZW5kKCI7IGNoYXJzZXQ9Iik7CisgICAg
Y29udGVudFR5cGUuYXBwZW5kKGNoYXJzZXRWYWx1ZSk7Cit9CisKIHN0YXRpYyBjb25zdCBYTUxI
dHRwUmVxdWVzdFN0YXRpY0RhdGEqIHN0YXRpY0RhdGEgPSAwOwogCiBzdGF0aWMgY29uc3QgWE1M
SHR0cFJlcXVlc3RTdGF0aWNEYXRhKiBjcmVhdGVYTUxIdHRwUmVxdWVzdFN0YXRpY0RhdGEoKQpA
QCAtNDMxLDYgKzQzOCw5IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmQoY29uc3QgU3RyaW5n
JiAKICAgICAgICAgICAgIGVsc2UKICNlbmRpZgogICAgICAgICAgICAgICAgIHNldFJlcXVlc3RI
ZWFkZXJJbnRlcm5hbCgiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL3htbCIpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgc2V0Q2hhcnNldGluQ29udGVudFR5cGUoY29udGVudFR5
cGUsICJVVEYtOCIpOworICAgICAgICAgICAgbV9yZXF1ZXN0SGVhZGVycy5zZXQoIkNvbnRlbnQt
VHlwZSIsIGNvbnRlbnRUeXBlKTsKICAgICAgICAgfQogCiAgICAgICAgIG1fcmVxdWVzdEVudGl0
eUJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZShib2R5LmNoYXJh
Y3RlcnMoKSwgYm9keS5sZW5ndGgoKSwgRW50aXRpZXNGb3JVbmVuY29kYWJsZXMpKTsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU1ODk2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMtMTIgIENoYW5nIFNodSAgPGNoYW5nLnNodUBu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgdGVzdCBmb3IgZm9yY2luZyBVVEYtOCBjaGFyc2V0LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ2NTMKKworICAgICAgICAqIGh0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvcmVxdWVzdC1lbmNvZGluZzItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JlcXVlc3QtZW5jb2Rpbmcy
Lmh0bWw6IEFkZGVkLgorCiAyMDEwLTAzLTEyICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0
YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFtHVEtdIEZhaWxzIGZhc3Qv
ZG9tL0dlb2xvY2F0aW9uL21heGltdW0tYWdlLmh0bQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXF1ZXN0LWVuY29kaW5nMi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXF1ZXN0LWVu
Y29kaW5nMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3JlcXVlc3QtZW5jb2RpbmcyLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzIEBACitUZXN0IGZvciBidWcgMzQ2NTM6IFhNTEh0dHBSZXF1ZXN0
IHNob3VsZCBmb3JjZSB0byBzZW5kIGNvbnRlbnQtdHlwZSBhcyBjaGFyc2V0IGVxdWFscyBVVEYt
OC4KKworU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9yZXF1ZXN0LWVuY29kaW5nMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvcmVxdWVzdC1lbmNvZGluZzIuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVxdWVzdC1lbmNvZGlu
ZzIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9
dXRmLTgiPgorPGJvZHk+Cis8cD5UZXN0IGZvciA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNDY1MyI+YnVnIDM0NjUzPC9hPjoKK1hNTEh0dHBSZXF1ZXN0
IHNob3VsZCBmb3JjZSB0byBzZW5kIGNvbnRlbnQtdHlwZSBhcyBjaGFyc2V0IGVxdWFscyBVVEYt
OC48L3A+Cis8ZGl2IGlkPXJlc3VsdD5GQUlMOiBzY3JpcHQgZGlkbid0IHJ1biB0byBjb21wbGV0
aW9uLjwvZGl2PgorPHNjcmlwdD4KKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHJl
cSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICByZXEub3BlbigiUE9TVCIsICJwcmludC1jb250
ZW50LXR5cGUuY2dpIiwgZmFsc2UpOworICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50
LVR5cGUiLCAiYXBwbGljYXRpb24veG1sOyBjaGFyc2V0PUtPSTgtUiIpOworICAgIHJlcS5zZW5k
KCIiKTsKKyAgICBpZiAocmVxLnJlc3BvbnNlVGV4dCA9PSAiYXBwbGljYXRpb24veG1sOyBjaGFy
c2V0PVVURi04XG4iKQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iiku
Zmlyc3RDaGlsZC5kYXRhID0gIlNVQ0NFU1MiOworICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9ICJGQUlMVVJFOiAnIiAr
IHJlcS5yZXNwb25zZVRleHQgKyAiJyI7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="33805"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51076</attachid>
            <date>2010-03-18 12:54:53 -0700</date>
            <delta_ts>2010-03-18 12:58:19 -0700</delta_ts>
            <desc>fix patch 4</desc>
            <filename>bug34653_4.patch</filename>
            <type>text/plain</type>
            <size>8792</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjE4MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDMtMTggIENoYW5nIFNodSAgPGNoYW5nLnNodUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NjUzCisKKyAgICAgICAgQmFz
ZWQgb24gVzNDIHNwZWMgYW5kIEZpcmVmb3ggYmVoYXZpb3IsIHdoaWxlIGludm9raW5nIFhIUiBT
ZW5kIHdpdGggcGFyYW1ldGVyCisgICAgICAgIGFzIFN0cmluZywgdGhlIGNoYXJzZXQgaW4gQ29u
dGVudC1UeXBlIHNob3VsZCBiZSBmb3JjZWQgdG8gc2V0IHRvIFVURi04LgorCisgICAgICAgIFRl
c3Q6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVxdWVzdC1lbmNvZGluZzIuaHRtbAorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Zmlu
ZENoYXJzZXRJbk1lZGlhVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppc1ZhbGlkVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q2hhcnNldEluTWVkaWFU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKwogMjAxMC0w
My0xOCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAkocmV2aXNpb24gNTYxMjUpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODQsMTMgKzE4NCwyNSBAQCBTdHJpbmcgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShj
b25zCiAKIFN0cmluZyBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBt
ZWRpYVR5cGUpCiB7CisgICAgaW50IHN0YXJ0LCBsZW47CisgICAgZmluZENoYXJzZXRJbk1lZGlh
VHlwZShtZWRpYVR5cGUsIHN0YXJ0LCBsZW4pOworICAgIHJldHVybiBtZWRpYVR5cGUuc3Vic3Ry
aW5nKHN0YXJ0LCBsZW4pOworfQorCit2b2lkIGZpbmRDaGFyc2V0SW5NZWRpYVR5cGUoY29uc3Qg
U3RyaW5nJiBtZWRpYVR5cGUsIGludCYgY2hhcnNldFN0YXJ0LCBpbnQmIGNoYXJzZXRMZW4pCit7
CisgICAgY2hhcnNldFN0YXJ0ID0gMDsKKyAgICBjaGFyc2V0TGVuID0gMDsKKwogICAgIGludCBw
b3MgPSAwOwogICAgIGludCBsZW5ndGggPSAoaW50KW1lZGlhVHlwZS5sZW5ndGgoKTsKICAgICAK
ICAgICB3aGlsZSAocG9zIDwgbGVuZ3RoKSB7CiAgICAgICAgIHBvcyA9IG1lZGlhVHlwZS5maW5k
KCJjaGFyc2V0IiwgcG9zLCBmYWxzZSk7Ci0gICAgICAgIGlmIChwb3MgPD0gMCkKLSAgICAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgaWYgKHBvcyA8PSAwKSB7CisgICAgICAgICAg
ICBjaGFyc2V0TGVuID0gMDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgLy8gaXMgd2hhdCB3ZSBmb3VuZCBhIGJlZ2lubmluZyBvZiBhIHdvcmQ/CiAg
ICAgICAgIGlmIChtZWRpYVR5cGVbcG9zLTFdID4gJyAnICYmIG1lZGlhVHlwZVtwb3MtMV0gIT0g
JzsnKSB7CkBAIC0yMTQsMTAgKzIyNiwxMiBAQCBTdHJpbmcgZXh0cmFjdENoYXJzZXRGcm9tTWVk
aWFUeXBlKGNvbnN0CiAgICAgICAgIGludCBlbmRwb3MgPSBwb3M7CiAgICAgICAgIHdoaWxlIChw
b3MgIT0gbGVuZ3RoICYmIG1lZGlhVHlwZVtlbmRwb3NdID4gJyAnICYmIG1lZGlhVHlwZVtlbmRw
b3NdICE9ICciJyAmJiBtZWRpYVR5cGVbZW5kcG9zXSAhPSAnXCcnICYmIG1lZGlhVHlwZVtlbmRw
b3NdICE9ICc7JykKICAgICAgICAgICAgICsrZW5kcG9zOwotICAgIAotICAgICAgICByZXR1cm4g
bWVkaWFUeXBlLnN1YnN0cmluZyhwb3MsIGVuZHBvcy1wb3MpOworCisgICAgICAgIGNoYXJzZXRT
dGFydCA9IHBvczsKKyAgICAgICAgY2hhcnNldExlbiA9IGVuZHBvcyAtIHBvczsKKyAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICAKLSAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBjaGFyc2V0
TGVuID0gMDsKIH0KIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5o
CShyZXZpc2lvbiA1NjEyNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBTdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihjb25zdCBTdHJp
bmcmKTsgCiAgICAgU3RyaW5nIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29uc3QgU3Ry
aW5nJik7CiAgICAgU3RyaW5nIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb25zdCBTdHJp
bmcmKTsgCisgICAgdm9pZCBmaW5kQ2hhcnNldEluTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVk
aWFUeXBlLCBpbnQmIGNoYXJzZXRTdGFydCwgaW50JiBjaGFyc2V0TGVuKTsKIH0KIAogI2VuZGlm
CkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lvbiA1NjEyNSkKKysrIFdlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDYgKzEyOCwzMiBA
QCBzdGF0aWMgYm9vbCBpc1NldENvb2tpZUhlYWRlcihjb25zdCBBdG9tCiAgICAgcmV0dXJuIGVx
dWFsSWdub3JpbmdDYXNlKG5hbWUsICJzZXQtY29va2llIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uo
bmFtZSwgInNldC1jb29raWUyIik7CiB9CiAKK3N0YXRpYyB2b2lkIHNldENoYXJzZXRJbk1lZGlh
VHlwZShTdHJpbmcmIG1lZGlhVHlwZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0VmFsdWUpCit7Cisg
ICAgaW50IHN0YXJ0LCBsZW47CisgICAgZmluZENoYXJzZXRJbk1lZGlhVHlwZShtZWRpYVR5cGUs
IHN0YXJ0LCBsZW4pOworCisgICAgaWYgKGxlbiA9PSAwKSB7CisgICAgICAgIC8vIFdoZW4gbm8g
Y2hhcnNldCBmb3VuZCwgYXBwZW5kIG5ldyBjaGFyc2V0LgorICAgICAgICBtZWRpYVR5cGUuc3Ry
aXBXaGl0ZVNwYWNlKCk7CisgICAgICAgIGlmIChtZWRpYVR5cGVbbWVkaWFUeXBlLmxlbmd0aCgp
IC0gMV0gIT0gJzsnKSB7CisgICAgICAgICAgICBtZWRpYVR5cGUuYXBwZW5kKCI7Iik7CisgICAg
ICAgIH0KKyAgICAgICAgbWVkaWFUeXBlLmFwcGVuZCgiIGNoYXJzZXQ9Iik7CisgICAgICAgIG1l
ZGlhVHlwZS5hcHBlbmQoY2hhcnNldFZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBG
b3VuZCBleGlzdGluZyBjaGFyc2V0LCByZXBsYWNlIHdpdGggbmV3IGNoYXJzZXQuCisgICAgICAg
IFN0cmluZyBuZXdNZWRpYVR5cGUgPSBtZWRpYVR5cGUuc3Vic3RyaW5nKDAsIHN0YXJ0KTsKKyAg
ICAgICAgbmV3TWVkaWFUeXBlLmFwcGVuZChjaGFyc2V0VmFsdWUpOworCisgICAgICAgIGlmIChz
dGFydCArIGxlbiA8IChpbnQpbWVkaWFUeXBlLmxlbmd0aCgpKSB7CisgICAgICAgICAgICBuZXdN
ZWRpYVR5cGUuYXBwZW5kKCI7ICIpOworICAgICAgICAgICAgbmV3TWVkaWFUeXBlLmFwcGVuZCht
ZWRpYVR5cGUuc3Vic3RyaW5nKHN0YXJ0ICsgbGVuKSk7CisgICAgICAgIH0KKyAgICAgICAgbWVk
aWFUeXBlID0gbmV3TWVkaWFUeXBlOworICAgIH0KK30KKwogc3RhdGljIGNvbnN0IFhNTEh0dHBS
ZXF1ZXN0U3RhdGljRGF0YSogc3RhdGljRGF0YSA9IDA7CiAKIHN0YXRpYyBjb25zdCBYTUxIdHRw
UmVxdWVzdFN0YXRpY0RhdGEqIGNyZWF0ZVhNTEh0dHBSZXF1ZXN0U3RhdGljRGF0YSgpCkBAIC00
MzEsNiArNDU3LDkgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2VuZChjb25zdCBTdHJpbmcmIAog
ICAgICAgICAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgICAgICAgICAgc2V0UmVxdWVzdEhlYWRl
ckludGVybmFsKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veG1sIik7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBzZXRDaGFyc2V0SW5NZWRpYVR5cGUoY29udGVudFR5cGUsICJV
VEYtOCIpOworICAgICAgICAgICAgbV9yZXF1ZXN0SGVhZGVycy5zZXQoIkNvbnRlbnQtVHlwZSIs
IGNvbnRlbnRUeXBlKTsKICAgICAgICAgfQogCiAgICAgICAgIG1fcmVxdWVzdEVudGl0eUJvZHkg
PSBGb3JtRGF0YTo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZShib2R5LmNoYXJhY3RlcnMo
KSwgYm9keS5sZW5ndGgoKSwgRW50aXRpZXNGb3JVbmVuY29kYWJsZXMpKTsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDU2MTgwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMtMTggIENoYW5nIFNodSAgPGNoYW5nLnNodUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgdGVzdCBmb3IgZm9yY2luZyBVVEYtOCBjaGFyc2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ2NTMKKworICAgICAgICAqIGh0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVxdWVzdC1lbmNvZGluZzItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JlcXVlc3QtZW5jb2RpbmcyLmh0bWw6
IEFkZGVkLgorCiAyMDEwLTAzLTE4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVxdWVzdC1lbmNvZGluZzItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVxdWVzdC1lbmNvZGlu
ZzItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9yZXF1ZXN0LWVuY29kaW5nMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBmb3IgYnVnIDM0NjUzOiBYTUxIdHRwUmVxdWVzdCBzaG91
bGQgZm9yY2UgdG8gc2VuZCBjb250ZW50LXR5cGUgYXMgY2hhcnNldCBlcXVhbHMgVVRGLTguCisK
K1Rlc3QxIChzZXRSZXF1ZXN0SGVhZGVyIHdhcyBub3QgY2FsbGVkKTogU1VDQ0VTUworVGVzdDIg
KHNldFJlcXVlc3RIZWFkZXIgd2FzIGNhbGxlZCB3aXRob3V0IGEgY2hhcnNldCk6IFNVQ0NFU1MK
K1Rlc3QzIChzZXRSZXF1ZXN0SGVhZGVyIHdhcyBjYWxsZWQgd2l0aCBhIG5vbi1VVEY4IGNoYXJz
ZXQpOiBTVUNDRVNTCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3JlcXVlc3QtZW5jb2RpbmcyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXF1ZXN0LWVuY29kaW5nMi5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXF1ZXN0LWVuY29kaW5n
Mi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11
dGYtOCI+Cis8Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM0NjUzIj5idWcgMzQ2NTM8L2E+OgorWE1MSHR0cFJlcXVlc3Qg
c2hvdWxkIGZvcmNlIHRvIHNlbmQgY29udGVudC10eXBlIGFzIGNoYXJzZXQgZXF1YWxzIFVURi04
LjwvcD4KKzxkaXYgaWQ9cmVzdWx0MT5GQUlMOiBzY3JpcHQgZGlkbid0IHJ1biB0byBjb21wbGV0
aW9uLjwvZGl2PgorPGRpdiBpZD1yZXN1bHQyPkZBSUw6IHNjcmlwdCBkaWRuJ3QgcnVuIHRvIGNv
bXBsZXRpb24uPC9kaXY+Cis8ZGl2IGlkPXJlc3VsdDM+RkFJTDogc2NyaXB0IGRpZG4ndCBydW4g
dG8gY29tcGxldGlvbi48L2Rpdj4KKzxzY3JpcHQ+CisKKyAgICBmdW5jdGlvbiB0ZXN0MSgpCisg
ICAgeworICAgICAgICByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgICAgIHJlcS5vcGVu
KCJQT1NUIiwgInByaW50LWNvbnRlbnQtdHlwZS5jZ2kiLCBmYWxzZSk7CisKKyAgICAgICAgcmVx
LnNlbmQoIiIpOworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQxIiku
Zmlyc3RDaGlsZC5kYXRhID0gIlRlc3QxIChzZXRSZXF1ZXN0SGVhZGVyIHdhcyBub3QgY2FsbGVk
KToiOworICAgICAgICBpZiAocmVxLnJlc3BvbnNlVGV4dCA9PSAiYXBwbGljYXRpb24veG1sXG4i
KQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdDEiKS5maXJzdENo
aWxkLmRhdGEgKz0gIiBTVUNDRVNTIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdDEiKS5maXJzdENoaWxkLmRhdGEgKz0gIiBGQUlMVVJF
OiAnIiArIHJlcS5yZXNwb25zZVRleHQgKyAiJyI7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVz
dDIoKSB7CisgICAgICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICAgICAgcmVxLm9w
ZW4oIlBPU1QiLCAicHJpbnQtY29udGVudC10eXBlLmNnaSIsIGZhbHNlKTsKKworICAgICAgICBy
ZXEuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL3htbCIpOwor
ICAgICAgICByZXEuc2VuZCgiIik7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdDIiKS5maXJzdENoaWxkLmRhdGEgPSAiVGVzdDIgKHNldFJlcXVlc3RIZWFkZXIgd2Fz
IGNhbGxlZCB3aXRob3V0IGEgY2hhcnNldCk6IjsKKyAgICAgICAgaWYgKHJlcS5yZXNwb25zZVRl
eHQgPT0gImFwcGxpY2F0aW9uL3htbDsgY2hhcnNldD1VVEYtOFxuIikKKyAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQyIikuZmlyc3RDaGlsZC5kYXRhICs9ICIgU1VD
Q0VTUyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQyIikuZmlyc3RDaGlsZC5kYXRhICs9ICIgRkFJTFVSRTogJyIgKyByZXEucmVzcG9u
c2VUZXh0ICsgIiciOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QzKCkgeworICAgICAgICBy
ZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgICAgIHJlcS5vcGVuKCJQT1NUIiwgInByaW50
LWNvbnRlbnQtdHlwZS5jZ2kiLCBmYWxzZSk7CisKKyAgICAgICAgcmVxLnNldFJlcXVlc3RIZWFk
ZXIoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi94bWw7IGNoYXJzZXQ9S09JOC1SIik7Cisg
ICAgICAgIHJlcS5zZW5kKCIiKTsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0MyIpLmZpcnN0Q2hpbGQuZGF0YSA9ICJUZXN0MyAoc2V0UmVxdWVzdEhlYWRlciB3YXMg
Y2FsbGVkIHdpdGggYSBub24tVVRGOCBjaGFyc2V0KToiOworICAgICAgICBpZiAocmVxLnJlc3Bv
bnNlVGV4dCA9PSAiYXBwbGljYXRpb24veG1sOyBjaGFyc2V0PVVURi04XG4iKQorICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdDMiKS5maXJzdENoaWxkLmRhdGEgKz0g
IiBTVUNDRVNTIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlc3VsdDMiKS5maXJzdENoaWxkLmRhdGEgKz0gIiBGQUlMVVJFOiAnIiArIHJlcS5y
ZXNwb25zZVRleHQgKyAiJyI7CisgICAgfQorCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgdGVzdDEoKTsKKyAgICB0ZXN0MigpOworICAgIHRlc3QzKCk7CisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51079</attachid>
            <date>2010-03-18 12:58:19 -0700</date>
            <delta_ts>2010-04-05 15:17:17 -0700</delta_ts>
            <desc>fix patch 4</desc>
            <filename>bug34653_4.patch</filename>
            <type>text/plain</type>
            <size>8775</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjE4MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDMtMTggIENoYW5nIFNodSAgPGNoYW5nLnNodUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NjUzCisKKyAgICAgICAgQmFz
ZWQgb24gVzNDIHNwZWMgYW5kIEZpcmVmb3ggYmVoYXZpb3IsIHdoaWxlIGludm9raW5nIFhIUiBT
ZW5kIHdpdGggcGFyYW1ldGVyCisgICAgICAgIGFzIFN0cmluZywgdGhlIGNoYXJzZXQgaW4gQ29u
dGVudC1UeXBlIHNob3VsZCBiZSBmb3JjZWQgdG8gc2V0IHRvIFVURi04LgorCisgICAgICAgIFRl
c3Q6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVxdWVzdC1lbmNvZGluZzIuaHRtbAorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Zmlu
ZENoYXJzZXRJbk1lZGlhVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppc1ZhbGlkVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q2hhcnNldEluTWVkaWFU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKwogMjAxMC0w
My0xOCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAkocmV2aXNpb24gNTYxMjUpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODQsMTMgKzE4NCwyNSBAQCBTdHJpbmcgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShj
b25zCiAKIFN0cmluZyBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBt
ZWRpYVR5cGUpCiB7CisgICAgaW50IHN0YXJ0LCBsZW47CisgICAgZmluZENoYXJzZXRJbk1lZGlh
VHlwZShtZWRpYVR5cGUsIHN0YXJ0LCBsZW4pOworICAgIHJldHVybiBtZWRpYVR5cGUuc3Vic3Ry
aW5nKHN0YXJ0LCBsZW4pOworfQorCit2b2lkIGZpbmRDaGFyc2V0SW5NZWRpYVR5cGUoY29uc3Qg
U3RyaW5nJiBtZWRpYVR5cGUsIGludCYgY2hhcnNldFN0YXJ0LCBpbnQmIGNoYXJzZXRMZW4pCit7
CisgICAgY2hhcnNldFN0YXJ0ID0gMDsKKyAgICBjaGFyc2V0TGVuID0gMDsKKwogICAgIGludCBw
b3MgPSAwOwogICAgIGludCBsZW5ndGggPSAoaW50KW1lZGlhVHlwZS5sZW5ndGgoKTsKICAgICAK
ICAgICB3aGlsZSAocG9zIDwgbGVuZ3RoKSB7CiAgICAgICAgIHBvcyA9IG1lZGlhVHlwZS5maW5k
KCJjaGFyc2V0IiwgcG9zLCBmYWxzZSk7Ci0gICAgICAgIGlmIChwb3MgPD0gMCkKLSAgICAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgaWYgKHBvcyA8PSAwKSB7CisgICAgICAgICAg
ICBjaGFyc2V0TGVuID0gMDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgLy8gaXMgd2hhdCB3ZSBmb3VuZCBhIGJlZ2lubmluZyBvZiBhIHdvcmQ/CiAg
ICAgICAgIGlmIChtZWRpYVR5cGVbcG9zLTFdID4gJyAnICYmIG1lZGlhVHlwZVtwb3MtMV0gIT0g
JzsnKSB7CkBAIC0yMTQsMTAgKzIyNiwxMiBAQCBTdHJpbmcgZXh0cmFjdENoYXJzZXRGcm9tTWVk
aWFUeXBlKGNvbnN0CiAgICAgICAgIGludCBlbmRwb3MgPSBwb3M7CiAgICAgICAgIHdoaWxlIChw
b3MgIT0gbGVuZ3RoICYmIG1lZGlhVHlwZVtlbmRwb3NdID4gJyAnICYmIG1lZGlhVHlwZVtlbmRw
b3NdICE9ICciJyAmJiBtZWRpYVR5cGVbZW5kcG9zXSAhPSAnXCcnICYmIG1lZGlhVHlwZVtlbmRw
b3NdICE9ICc7JykKICAgICAgICAgICAgICsrZW5kcG9zOwotICAgIAotICAgICAgICByZXR1cm4g
bWVkaWFUeXBlLnN1YnN0cmluZyhwb3MsIGVuZHBvcy1wb3MpOworCisgICAgICAgIGNoYXJzZXRT
dGFydCA9IHBvczsKKyAgICAgICAgY2hhcnNldExlbiA9IGVuZHBvcyAtIHBvczsKKyAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICAKLSAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBjaGFyc2V0
TGVuID0gMDsKIH0KIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5o
CShyZXZpc2lvbiA1NjEyNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBTdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihjb25zdCBTdHJp
bmcmKTsgCiAgICAgU3RyaW5nIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29uc3QgU3Ry
aW5nJik7CiAgICAgU3RyaW5nIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb25zdCBTdHJp
bmcmKTsgCisgICAgdm9pZCBmaW5kQ2hhcnNldEluTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVk
aWFUeXBlLCBpbnQmIGNoYXJzZXRTdGFydCwgaW50JiBjaGFyc2V0TGVuKTsKIH0KIAogI2VuZGlm
CkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lvbiA1NjEyNSkKKysrIFdlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDYgKzEyOCwzMSBA
QCBzdGF0aWMgYm9vbCBpc1NldENvb2tpZUhlYWRlcihjb25zdCBBdG9tCiAgICAgcmV0dXJuIGVx
dWFsSWdub3JpbmdDYXNlKG5hbWUsICJzZXQtY29va2llIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uo
bmFtZSwgInNldC1jb29raWUyIik7CiB9CiAKK3N0YXRpYyB2b2lkIHNldENoYXJzZXRJbk1lZGlh
VHlwZShTdHJpbmcmIG1lZGlhVHlwZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0VmFsdWUpCit7Cisg
ICAgaW50IHN0YXJ0LCBsZW47CisgICAgZmluZENoYXJzZXRJbk1lZGlhVHlwZShtZWRpYVR5cGUs
IHN0YXJ0LCBsZW4pOworCisgICAgaWYgKCFsZW4pIHsKKyAgICAgICAgLy8gV2hlbiBubyBjaGFy
c2V0IGZvdW5kLCBhcHBlbmQgbmV3IGNoYXJzZXQuCisgICAgICAgIG1lZGlhVHlwZS5zdHJpcFdo
aXRlU3BhY2UoKTsKKyAgICAgICAgaWYgKG1lZGlhVHlwZVttZWRpYVR5cGUubGVuZ3RoKCkgLSAx
XSAhPSAnOycpCisgICAgICAgICAgICBtZWRpYVR5cGUuYXBwZW5kKCI7Iik7CisgICAgICAgIG1l
ZGlhVHlwZS5hcHBlbmQoIiBjaGFyc2V0PSIpOworICAgICAgICBtZWRpYVR5cGUuYXBwZW5kKGNo
YXJzZXRWYWx1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRm91bmQgZXhpc3RpbmcgY2hh
cnNldCwgcmVwbGFjZSB3aXRoIG5ldyBjaGFyc2V0LgorICAgICAgICBTdHJpbmcgbmV3TWVkaWFU
eXBlID0gbWVkaWFUeXBlLnN1YnN0cmluZygwLCBzdGFydCk7CisgICAgICAgIG5ld01lZGlhVHlw
ZS5hcHBlbmQoY2hhcnNldFZhbHVlKTsKKworICAgICAgICBpZiAoc3RhcnQgKyBsZW4gPCAoaW50
KW1lZGlhVHlwZS5sZW5ndGgoKSkgeworICAgICAgICAgICAgbmV3TWVkaWFUeXBlLmFwcGVuZCgi
OyAiKTsKKyAgICAgICAgICAgIG5ld01lZGlhVHlwZS5hcHBlbmQobWVkaWFUeXBlLnN1YnN0cmlu
ZyhzdGFydCArIGxlbikpOworICAgICAgICB9CisgICAgICAgIG1lZGlhVHlwZSA9IG5ld01lZGlh
VHlwZTsKKyAgICB9Cit9CisKIHN0YXRpYyBjb25zdCBYTUxIdHRwUmVxdWVzdFN0YXRpY0RhdGEq
IHN0YXRpY0RhdGEgPSAwOwogCiBzdGF0aWMgY29uc3QgWE1MSHR0cFJlcXVlc3RTdGF0aWNEYXRh
KiBjcmVhdGVYTUxIdHRwUmVxdWVzdFN0YXRpY0RhdGEoKQpAQCAtNDMxLDYgKzQ1Niw5IEBAIHZv
aWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmQoY29uc3QgU3RyaW5nJiAKICAgICAgICAgICAgIGVsc2UK
ICNlbmRpZgogICAgICAgICAgICAgICAgIHNldFJlcXVlc3RIZWFkZXJJbnRlcm5hbCgiQ29udGVu
dC1UeXBlIiwgImFwcGxpY2F0aW9uL3htbCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgc2V0Q2hhcnNldEluTWVkaWFUeXBlKGNvbnRlbnRUeXBlLCAiVVRGLTgiKTsKKyAgICAgICAg
ICAgIG1fcmVxdWVzdEhlYWRlcnMuc2V0KCJDb250ZW50LVR5cGUiLCBjb250ZW50VHlwZSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5ID0gRm9ybURhdGE6OmNyZWF0
ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUoYm9keS5jaGFyYWN0ZXJzKCksIGJvZHkubGVuZ3RoKCks
IEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NjE4MCkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDEwLTAzLTE4ICBDaGFuZyBTaHUgIDxjaGFuZy5zaHVAbm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3QgZm9yIGZvcmNp
bmcgVVRGLTggY2hhcnNldC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM0NjUzCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jl
cXVlc3QtZW5jb2RpbmcyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9yZXF1ZXN0LWVuY29kaW5nMi5odG1sOiBBZGRlZC4KKwogMjAxMC0w
My0xOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBOb3Qg
cmV2aWV3ZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jl
cXVlc3QtZW5jb2RpbmcyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JlcXVlc3QtZW5jb2RpbmcyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVx
dWVzdC1lbmNvZGluZzItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAK
K1Rlc3QgZm9yIGJ1ZyAzNDY1MzogWE1MSHR0cFJlcXVlc3Qgc2hvdWxkIGZvcmNlIHRvIHNlbmQg
Y29udGVudC10eXBlIGFzIGNoYXJzZXQgZXF1YWxzIFVURi04LgorCitUZXN0MSAoc2V0UmVxdWVz
dEhlYWRlciB3YXMgbm90IGNhbGxlZCk6IFNVQ0NFU1MKK1Rlc3QyIChzZXRSZXF1ZXN0SGVhZGVy
IHdhcyBjYWxsZWQgd2l0aG91dCBhIGNoYXJzZXQpOiBTVUNDRVNTCitUZXN0MyAoc2V0UmVxdWVz
dEhlYWRlciB3YXMgY2FsbGVkIHdpdGggYSBub24tVVRGOCBjaGFyc2V0KTogU1VDQ0VTUwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXF1ZXN0LWVuY29kaW5n
Mi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvcmVxdWVzdC1lbmNvZGluZzIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVxdWVzdC1lbmNvZGluZzIuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9ImNv
bnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPgorPGJvZHk+Cis8
cD5UZXN0IGZvciA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNDY1MyI+YnVnIDM0NjUzPC9hPjoKK1hNTEh0dHBSZXF1ZXN0IHNob3VsZCBmb3JjZSB0byBz
ZW5kIGNvbnRlbnQtdHlwZSBhcyBjaGFyc2V0IGVxdWFscyBVVEYtOC48L3A+Cis8ZGl2IGlkPXJl
c3VsdDE+RkFJTDogc2NyaXB0IGRpZG4ndCBydW4gdG8gY29tcGxldGlvbi48L2Rpdj4KKzxkaXYg
aWQ9cmVzdWx0Mj5GQUlMOiBzY3JpcHQgZGlkbid0IHJ1biB0byBjb21wbGV0aW9uLjwvZGl2Pgor
PGRpdiBpZD1yZXN1bHQzPkZBSUw6IHNjcmlwdCBkaWRuJ3QgcnVuIHRvIGNvbXBsZXRpb24uPC9k
aXY+Cis8c2NyaXB0PgorCisgICAgZnVuY3Rpb24gdGVzdDEoKQorICAgIHsKKyAgICAgICAgcmVx
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworICAgICAgICByZXEub3BlbigiUE9TVCIsICJwcmludC1j
b250ZW50LXR5cGUuY2dpIiwgZmFsc2UpOworCisgICAgICAgIHJlcS5zZW5kKCIiKTsKKworICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0MSIpLmZpcnN0Q2hpbGQuZGF0YSA9
ICJUZXN0MSAoc2V0UmVxdWVzdEhlYWRlciB3YXMgbm90IGNhbGxlZCk6IjsKKyAgICAgICAgaWYg
KHJlcS5yZXNwb25zZVRleHQgPT0gImFwcGxpY2F0aW9uL3htbFxuIikKKyAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQxIikuZmlyc3RDaGlsZC5kYXRhICs9ICIgU1VD
Q0VTUyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQxIikuZmlyc3RDaGlsZC5kYXRhICs9ICIgRkFJTFVSRTogJyIgKyByZXEucmVzcG9u
c2VUZXh0ICsgIiciOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QyKCkgeworICAgICAgICBy
ZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgICAgIHJlcS5vcGVuKCJQT1NUIiwgInByaW50
LWNvbnRlbnQtdHlwZS5jZ2kiLCBmYWxzZSk7CisKKyAgICAgICAgcmVxLnNldFJlcXVlc3RIZWFk
ZXIoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi94bWwiKTsKKyAgICAgICAgcmVxLnNlbmQo
IiIpOworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQyIikuZmlyc3RD
aGlsZC5kYXRhID0gIlRlc3QyIChzZXRSZXF1ZXN0SGVhZGVyIHdhcyBjYWxsZWQgd2l0aG91dCBh
IGNoYXJzZXQpOiI7CisgICAgICAgIGlmIChyZXEucmVzcG9uc2VUZXh0ID09ICJhcHBsaWNhdGlv
bi94bWw7IGNoYXJzZXQ9VVRGLThcbiIpCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzdWx0MiIpLmZpcnN0Q2hpbGQuZGF0YSArPSAiIFNVQ0NFU1MiOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0MiIpLmZpcnN0
Q2hpbGQuZGF0YSArPSAiIEZBSUxVUkU6ICciICsgcmVxLnJlc3BvbnNlVGV4dCArICInIjsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0MygpIHsKKyAgICAgICAgcmVxID0gbmV3IFhNTEh0dHBS
ZXF1ZXN0OworICAgICAgICByZXEub3BlbigiUE9TVCIsICJwcmludC1jb250ZW50LXR5cGUuY2dp
IiwgZmFsc2UpOworCisgICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUi
LCAiYXBwbGljYXRpb24veG1sOyBjaGFyc2V0PUtPSTgtUiIpOworICAgICAgICByZXEuc2VuZCgi
Iik7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdDMiKS5maXJzdENo
aWxkLmRhdGEgPSAiVGVzdDMgKHNldFJlcXVlc3RIZWFkZXIgd2FzIGNhbGxlZCB3aXRoIGEgbm9u
LVVURjggY2hhcnNldCk6IjsKKyAgICAgICAgaWYgKHJlcS5yZXNwb25zZVRleHQgPT0gImFwcGxp
Y2F0aW9uL3htbDsgY2hhcnNldD1VVEYtOFxuIikKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQzIikuZmlyc3RDaGlsZC5kYXRhICs9ICIgU1VDQ0VTUyI7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQzIiku
Zmlyc3RDaGlsZC5kYXRhICs9ICIgRkFJTFVSRTogJyIgKyByZXEucmVzcG9uc2VUZXh0ICsgIici
OworICAgIH0KKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHRlc3QxKCk7CisgICAg
dGVzdDIoKTsKKyAgICB0ZXN0MygpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="34286"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52579</attachid>
            <date>2010-04-05 15:17:17 -0700</date>
            <delta_ts>2010-04-13 14:39:22 -0700</delta_ts>
            <desc>fix patch 5</desc>
            <filename>bug34653_5.patch</filename>
            <type>text/plain</type>
            <size>10040</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzA5NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMDUgIENoYW5nIFNodSAgPGNoYW5nLnNodUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NjUzCisKKyAgICAgICAgQmFz
ZWQgb24gVzNDIHNwZWMgYW5kIEZpcmVmb3ggYmVoYXZpb3IsIHdoaWxlIGludm9raW5nIFhIUiBT
ZW5kIHdpdGggcGFyYW1ldGVyCisgICAgICAgIGFzIFN0cmluZywgdGhlIGNoYXJzZXQgaW4gQ29u
dGVudC1UeXBlIHNob3VsZCBiZSBmb3JjZWQgdG8gc2V0IHRvIFVURi04LgorCisgICAgICAgIFRl
c3Q6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVxdWVzdC1lbmNvZGluZzIuaHRtbAorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Zmlu
ZENoYXJzZXRJbk1lZGlhVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRDaGFyc2V0SW5NZWRpYVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OnNlbmQpOgorCiAyMDEwLTA0LTA1ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNTcwMzAu
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAJKHJldmlzaW9u
IDU3MDg4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjMzLDEzICsyMzMsMjUgQEAgU3RyaW5nIGV4dHJhY3RNSU1FVHlwZUZy
b21NZWRpYVR5cGUoY29ucwogCiBTdHJpbmcgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnN0IFN0cmluZyYgbWVkaWFUeXBlKQogewotICAgIGludCBwb3MgPSAwOworICAgIHVuc2lnbmVk
IGludCBwb3MsIGxlbjsKKyAgICBmaW5kQ2hhcnNldEluTWVkaWFUeXBlKG1lZGlhVHlwZSwgcG9z
LCBsZW4pOworICAgIHJldHVybiBtZWRpYVR5cGUuc3Vic3RyaW5nKHBvcywgbGVuKTsKK30KKwor
dm9pZCBmaW5kQ2hhcnNldEluTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNp
Z25lZCBpbnQmIGNoYXJzZXRQb3MsIHVuc2lnbmVkIGludCYgY2hhcnNldExlbiwgdW5zaWduZWQg
aW50IHN0YXJ0KQoreworICAgIGNoYXJzZXRQb3MgPSBzdGFydDsKKyAgICBjaGFyc2V0TGVuID0g
MDsKKworICAgIGludCBwb3MgPSBzdGFydDsKICAgICBpbnQgbGVuZ3RoID0gKGludCltZWRpYVR5
cGUubGVuZ3RoKCk7CiAgICAgCiAgICAgd2hpbGUgKHBvcyA8IGxlbmd0aCkgewogICAgICAgICBw
b3MgPSBtZWRpYVR5cGUuZmluZCgiY2hhcnNldCIsIHBvcywgZmFsc2UpOwotICAgICAgICBpZiAo
cG9zIDw9IDApCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIGlmIChwb3Mg
PD0gMCkgeworICAgICAgICAgICAgY2hhcnNldExlbiA9IDA7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIGlzIHdoYXQgd2UgZm91bmQgYSBiZWdp
bm5pbmcgb2YgYSB3b3JkPwogICAgICAgICBpZiAobWVkaWFUeXBlW3Bvcy0xXSA+ICcgJyAmJiBt
ZWRpYVR5cGVbcG9zLTFdICE9ICc7JykgewpAQCAtMjYzLDExICsyNzUsMTEgQEAgU3RyaW5nIGV4
dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb25zdAogICAgICAgICBpbnQgZW5kcG9zID0gcG9z
OwogICAgICAgICB3aGlsZSAocG9zICE9IGxlbmd0aCAmJiBtZWRpYVR5cGVbZW5kcG9zXSA+ICcg
JyAmJiBtZWRpYVR5cGVbZW5kcG9zXSAhPSAnIicgJiYgbWVkaWFUeXBlW2VuZHBvc10gIT0gJ1wn
JyAmJiBtZWRpYVR5cGVbZW5kcG9zXSAhPSAnOycpCiAgICAgICAgICAgICArK2VuZHBvczsKLSAg
ICAKLSAgICAgICAgcmV0dXJuIG1lZGlhVHlwZS5zdWJzdHJpbmcocG9zLCBlbmRwb3MtcG9zKTsK
KworICAgICAgICBjaGFyc2V0UG9zID0gcG9zOworICAgICAgICBjaGFyc2V0TGVuID0gZW5kcG9z
IC0gcG9zOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIHJldHVybiBTdHJpbmco
KTsKIH0KIAogWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9uIHBhcnNlWFNTUHJvdGVjdGlvbkhlYWRl
cihjb25zdCBTdHJpbmcmIGhlYWRlcikKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5oCShyZXZpc2lvbiA1NzA4OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw4IEBAIGRvdWJsZSBwYXJz
ZURhdGUoY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNw
b3NpdGlvbihjb25zdCBTdHJpbmcmKTsgCiBTdHJpbmcgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlh
VHlwZShjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUo
Y29uc3QgU3RyaW5nJik7IAordm9pZCBmaW5kQ2hhcnNldEluTWVkaWFUeXBlKGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBpbnQmIGNoYXJzZXRQb3MsIHVuc2lnbmVkIGludCYgY2hh
cnNldExlbiwgdW5zaWduZWQgaW50IHN0YXJ0ID0gMCk7CiBYU1NQcm90ZWN0aW9uRGlzcG9zaXRp
b24gcGFyc2VYU1NQcm90ZWN0aW9uSGVhZGVyKGNvbnN0IFN0cmluZyYpOwotCiB9CiAKICNlbmRp
ZgpJbmRleDogV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gNTcwODgpCisrKyBXZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgsMjkg
QEAgc3RhdGljIGJvb2wgaXNTZXRDb29raWVIZWFkZXIoY29uc3QgQXRvbQogICAgIHJldHVybiBl
cXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic2V0LWNvb2tpZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNl
KG5hbWUsICJzZXQtY29va2llMiIpOwogfQogCitzdGF0aWMgdm9pZCBzZXRDaGFyc2V0SW5NZWRp
YVR5cGUoU3RyaW5nJiBtZWRpYVR5cGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldFZhbHVlKQorewor
ICAgIHVuc2lnbmVkIGludCBwb3MgPSAwLCBsZW4gPSAwOworCisgICAgZmluZENoYXJzZXRJbk1l
ZGlhVHlwZShtZWRpYVR5cGUsIHBvcywgbGVuKTsKKworICAgIGlmICghbGVuKSB7CisgICAgICAg
IC8vIFdoZW4gbm8gY2hhcnNldCBmb3VuZCwgYXBwZW5kIG5ldyBjaGFyc2V0LgorICAgICAgICBt
ZWRpYVR5cGUuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAgIGlmIChtZWRpYVR5cGVbbWVkaWFU
eXBlLmxlbmd0aCgpIC0gMV0gIT0gJzsnKQorICAgICAgICAgICAgbWVkaWFUeXBlLmFwcGVuZCgi
OyIpOworICAgICAgICBtZWRpYVR5cGUuYXBwZW5kKCIgY2hhcnNldD0iKTsKKyAgICAgICAgbWVk
aWFUeXBlLmFwcGVuZChjaGFyc2V0VmFsdWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEZv
dW5kIGF0IGxlYXN0IG9uZSBleGlzdGluZyBjaGFyc2V0LCByZXBsYWNlIGFsbCBvY2N1cnJlbmNl
cyB3aXRoIG5ldyBjaGFyc2V0LgorICAgICAgICB3aGlsZSAobGVuKSB7CisgICAgICAgICAgICBt
ZWRpYVR5cGUucmVwbGFjZShwb3MsIGxlbiwgY2hhcnNldFZhbHVlKTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGludCBzdGFydCA9IHBvcyArIGNoYXJzZXRWYWx1ZS5sZW5ndGgoKTsKKyAgICAgICAg
ICAgIGZpbmRDaGFyc2V0SW5NZWRpYVR5cGUobWVkaWFUeXBlLCBwb3MsIGxlbiwgc3RhcnQpOwor
ICAgICAgICB9CisgICAgfQorfQorCiBzdGF0aWMgY29uc3QgWE1MSHR0cFJlcXVlc3RTdGF0aWNE
YXRhKiBzdGF0aWNEYXRhID0gMDsKIAogc3RhdGljIGNvbnN0IFhNTEh0dHBSZXF1ZXN0U3RhdGlj
RGF0YSogY3JlYXRlWE1MSHR0cFJlcXVlc3RTdGF0aWNEYXRhKCkKQEAgLTQzMiw2ICs0NTUsOSBA
QCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5kKGNvbnN0IFN0cmluZyYgCiAgICAgICAgICAgICBl
bHNlCiAjZW5kaWYKICAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoIkNv
bnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi94bWwiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHNldENoYXJzZXRJbk1lZGlhVHlwZShjb250ZW50VHlwZSwgIlVURi04Iik7CisgICAg
ICAgICAgICBtX3JlcXVlc3RIZWFkZXJzLnNldCgiQ29udGVudC1UeXBlIiwgY29udGVudFR5cGUp
OwogICAgICAgICB9CiAKICAgICAgICAgbV9yZXF1ZXN0RW50aXR5Qm9keSA9IEZvcm1EYXRhOjpj
cmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKGJvZHkuY2hhcmFjdGVycygpLCBib2R5Lmxlbmd0
aCgpLCBFbnRpdGllc0ZvclVuZW5jb2RhYmxlcykpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTcwODgp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxMC0wNC0wNSAgQ2hhbmcgU2h1ICA8Y2hhbmcuc2h1QG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0IGZvciBm
b3JjaW5nIFVURi04IGNoYXJzZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNDY1MworCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9yZXF1ZXN0LWVuY29kaW5nMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvcmVxdWVzdC1lbmNvZGluZzIuaHRtbDogQWRkZWQuCisKIDIw
MTAtMDQtMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXF1
ZXN0LWVuY29kaW5nMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXF1ZXN0LWVuY29kaW5nMi1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JlcXVl
c3QtZW5jb2RpbmcyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitU
ZXN0IGZvciBidWcgMzQ2NTM6IFhNTEh0dHBSZXF1ZXN0IHNob3VsZCBmb3JjZSB0byBzZW5kIGNv
bnRlbnQtdHlwZSBhcyBjaGFyc2V0IGVxdWFscyBVVEYtOC4KKworVGVzdDEgKHNldFJlcXVlc3RI
ZWFkZXIgd2FzIG5vdCBjYWxsZWQpOiBTVUNDRVNTCitUZXN0MiAoc2V0UmVxdWVzdEhlYWRlciB3
YXMgY2FsbGVkIHdpdGhvdXQgYSBjaGFyc2V0KTogU1VDQ0VTUworVGVzdDMgKHNldFJlcXVlc3RI
ZWFkZXIgd2FzIGNhbGxlZCB3aXRoIGEgbm9uLVVURjggY2hhcnNldCk6IFNVQ0NFU1MKK1Rlc3Q0
IChzZXRSZXF1ZXN0SGVhZGVyIHdhcyBjYWxsZWQgd2l0aCBtdWx0aXBsZSBjaGFyc2V0cyBhbmQg
b3RoZXIgYXR0cmlidXRlcyk6IFNVQ0NFU1MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVxdWVzdC1lbmNvZGluZzIuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JlcXVlc3QtZW5jb2RpbmcyLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jl
cXVlc3QtZW5jb2RpbmcyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKzxodG1s
PgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDtjaGFyc2V0PXV0Zi04Ij4KKzxib2R5PgorPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ2NTMiPmJ1ZyAzNDY1MzwvYT46CitY
TUxIdHRwUmVxdWVzdCBzaG91bGQgZm9yY2UgdG8gc2VuZCBjb250ZW50LXR5cGUgYXMgY2hhcnNl
dCBlcXVhbHMgVVRGLTguPC9wPgorPGRpdiBpZD1yZXN1bHQxPkZBSUw6IHNjcmlwdCBkaWRuJ3Qg
cnVuIHRvIGNvbXBsZXRpb24uPC9kaXY+Cis8ZGl2IGlkPXJlc3VsdDI+RkFJTDogc2NyaXB0IGRp
ZG4ndCBydW4gdG8gY29tcGxldGlvbi48L2Rpdj4KKzxkaXYgaWQ9cmVzdWx0Mz5GQUlMOiBzY3Jp
cHQgZGlkbid0IHJ1biB0byBjb21wbGV0aW9uLjwvZGl2PgorPGRpdiBpZD1yZXN1bHQ0PkZBSUw6
IHNjcmlwdCBkaWRuJ3QgcnVuIHRvIGNvbXBsZXRpb24uPC9kaXY+Cis8c2NyaXB0PgorCisgICAg
ZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgICAgIC8vIFRlc3Qgd2hlbiBjb250ZW50LXR5cGUgaXMg
bm90IHNldC4KKyAgICAgICAgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworICAgICAgICByZXEu
b3BlbigiUE9TVCIsICJwcmludC1jb250ZW50LXR5cGUuY2dpIiwgZmFsc2UpOworCisgICAgICAg
IHJlcS5zZW5kKCIiKTsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
MSIpLmZpcnN0Q2hpbGQuZGF0YSA9ICJUZXN0MSAoc2V0UmVxdWVzdEhlYWRlciB3YXMgbm90IGNh
bGxlZCk6IjsKKyAgICAgICAgaWYgKHJlcS5yZXNwb25zZVRleHQgPT0gImFwcGxpY2F0aW9uL3ht
bFxuIikKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQxIikuZmly
c3RDaGlsZC5kYXRhICs9ICIgU1VDQ0VTUyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQxIikuZmlyc3RDaGlsZC5kYXRhICs9ICIgRkFJ
TFVSRTogJyIgKyByZXEucmVzcG9uc2VUZXh0ICsgIiciOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHRlc3QyKCkgeworICAgICAgICAvLyBUZXN0IHdoZW4gY29udGVudC10eXBlIGlzIHNldCB3aXRo
b3V0IGNoYXJzZXQuCisgICAgICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICAgICAg
cmVxLm9wZW4oIlBPU1QiLCAicHJpbnQtY29udGVudC10eXBlLmNnaSIsIGZhbHNlKTsKKworICAg
ICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL3ht
bCIpOworICAgICAgICByZXEuc2VuZCgiIik7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlc3VsdDIiKS5maXJzdENoaWxkLmRhdGEgPSAiVGVzdDIgKHNldFJlcXVlc3RIZWFk
ZXIgd2FzIGNhbGxlZCB3aXRob3V0IGEgY2hhcnNldCk6IjsKKyAgICAgICAgaWYgKHJlcS5yZXNw
b25zZVRleHQgPT0gImFwcGxpY2F0aW9uL3htbDsgY2hhcnNldD1VVEYtOFxuIikKKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQyIikuZmlyc3RDaGlsZC5kYXRhICs9
ICIgU1VDQ0VTUyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQyIikuZmlyc3RDaGlsZC5kYXRhICs9ICIgRkFJTFVSRTogJyIgKyByZXEu
cmVzcG9uc2VUZXh0ICsgIiciOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3QzKCkgeworICAg
ICAgICAvLyBUZXN0IHdoZW4gY29udGVudC10eXBlIGlzIHNldCB3aXRoIG5vbi1VVEYtOCBjaGFy
c2V0LgorICAgICAgICByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgICAgIHJlcS5vcGVu
KCJQT1NUIiwgInByaW50LWNvbnRlbnQtdHlwZS5jZ2kiLCBmYWxzZSk7CisKKyAgICAgICAgcmVx
LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi94bWw7IGNoYXJz
ZXQ9S09JOC1SIik7CisgICAgICAgIHJlcS5zZW5kKCIiKTsKKworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0MyIpLmZpcnN0Q2hpbGQuZGF0YSA9ICJUZXN0MyAoc2V0UmVx
dWVzdEhlYWRlciB3YXMgY2FsbGVkIHdpdGggYSBub24tVVRGOCBjaGFyc2V0KToiOworICAgICAg
ICBpZiAocmVxLnJlc3BvbnNlVGV4dCA9PSAiYXBwbGljYXRpb24veG1sOyBjaGFyc2V0PVVURi04
XG4iKQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdDMiKS5maXJz
dENoaWxkLmRhdGEgKz0gIiBTVUNDRVNTIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdDMiKS5maXJzdENoaWxkLmRhdGEgKz0gIiBGQUlM
VVJFOiAnIiArIHJlcS5yZXNwb25zZVRleHQgKyAiJyI7CisgICAgfQorCisgICAgZnVuY3Rpb24g
dGVzdDQoKSB7CisgICAgICAgIC8vIFRlc3Qgd2hlbiBjb250ZW50LXR5cGUgaXMgc2V0IHdpdGgg
bXVsdGlwbGUgY2hhcnNldHMgYW5kIG90aGVyIGF0dHJpYnV0ZXMuCisgICAgICAgIHJlcSA9IG5l
dyBYTUxIdHRwUmVxdWVzdDsKKyAgICAgICAgcmVxLm9wZW4oIlBPU1QiLCAicHJpbnQtY29udGVu
dC10eXBlLmNnaSIsIGZhbHNlKTsKKworICAgICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL3htbDsgY2hhcnNldD1LT0k4LVI7IGNoYXJzZXQ9VVRG
LTg7IGNoYXJzZXQ9aXNvLTg4NTktMTsgS09JOC1SIik7CisgICAgICAgIHJlcS5zZW5kKCIiKTsK
KworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0NCIpLmZpcnN0Q2hpbGQu
ZGF0YSA9ICJUZXN0NCAoc2V0UmVxdWVzdEhlYWRlciB3YXMgY2FsbGVkIHdpdGggbXVsdGlwbGUg
Y2hhcnNldHMgYW5kIG90aGVyIGF0dHJpYnV0ZXMpOiI7CisgICAgICAgIGlmIChyZXEucmVzcG9u
c2VUZXh0ID09ICJhcHBsaWNhdGlvbi94bWw7IGNoYXJzZXQ9VVRGLTg7IGNoYXJzZXQ9VVRGLTg7
IGNoYXJzZXQ9VVRGLTg7IEtPSTgtUlxuIikKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQ0IikuZmlyc3RDaGlsZC5kYXRhICs9ICIgU1VDQ0VTUyI7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQ0IikuZmly
c3RDaGlsZC5kYXRhICs9ICIgRkFJTFVSRTogJyIgKyByZXEucmVzcG9uc2VUZXh0ICsgIiciOwor
ICAgIH0KKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHRlc3QxKCk7CisgICAgdGVz
dDIoKTsKKyAgICB0ZXN0MygpOworICAgIHRlc3Q0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>
<flag name="review"
          id="36093"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="36951"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>