<?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>34173</bug_id>
          
          <creation_ts>2010-01-26 11:19:43 -0800</creation_ts>
          <short_desc>style tool: Improve treatment of conditions and rest of the line for if, else, switch and alikes</short_desc>
          <delta_ts>2010-01-28 00:29:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="anton muhin">antonm</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>184643</commentid>
    <comment_count>0</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-01-26 11:19:43 -0800</bug_when>
    <thetext>Improve treatment of conditions and rest of the line for if, else, switch and alikes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184651</commentid>
    <comment_count>1</comment_count>
      <attachid>47426</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-01-26 11:27:44 -0800</bug_when>
    <thetext>Created attachment 47426
First take</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184988</commentid>
    <comment_count>2</comment_count>
      <attachid>47426</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-27 00:45:40 -0800</bug_when>
    <thetext>Comment on attachment 47426
First take

Thanks for this fix! Some nitpicks:

&gt; +def up_to_matching_paren(s):

Please add a docstring for this function.

&gt; +    # And rules for macro definitions are relaxed.
&gt; +    if not match(r&apos;\s*#define&apos;, line):

I think we still want to complain about &apos;#define if ( wrong_spacing)&apos; ?

&gt; +        matched = search(r&apos;\b(if|for|foreach|while|switch)\s*\((.*)$&apos;, line)

The code was more difficult to read before your change, thanks. However, could you use &apos;(?P&lt;statement&gt;if|for|foreach|while|switch)&apos; and matched.group(&apos;steatement&apos;) instead of &apos;(if|for|foreach|while|switch)&apos; and matched.group(1) ? We are using this style in new code. The same comment would apply for other matched.group()s, too.

&gt; +                if not match(r&apos;(\s*{\s*}?$)|(\s*;?$)&apos;, rest):
&gt; +                    error(line_number, &apos;whitespace/parens&apos;, 4,
&gt; +                          &apos;More than one command on the same line&apos;)

I think it would be better if the error message contains the value of statement.

Could you add more test cases? We may want to check there are no alarms for &apos;if ((a &amp; b)&apos; (so we can check up_to_matching_paren explicitly).

Also, if you haven&apos;t done yet, please run your modified style checker for a bunch of code and check if there are no false alarms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185121</commentid>
    <comment_count>3</comment_count>
      <attachid>47541</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-01-27 08:48:32 -0800</bug_when>
    <thetext>Created attachment 47541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185123</commentid>
    <comment_count>4</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-01-27 08:53:26 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 47426 [details])
&gt; Thanks for this fix! Some nitpicks:
&gt; 
&gt; &gt; +def up_to_matching_paren(s):
&gt; 
&gt; Please add a docstring for this function.

Done.

&gt; 
&gt; &gt; +    # And rules for macro definitions are relaxed.
&gt; &gt; +    if not match(r&apos;\s*#define&apos;, line):
&gt; 
&gt; I think we still want to complain about &apos;#define if ( wrong_spacing)&apos; ?

Good catch.  Fixed.

&gt; &gt; +        matched = search(r&apos;\b(if|for|foreach|while|switch)\s*\((.*)$&apos;, line)
&gt; 
&gt; The code was more difficult to read before your change, thanks. However, could
&gt; you use &apos;(?P&lt;statement&gt;if|for|foreach|while|switch)&apos; and
&gt; matched.group(&apos;steatement&apos;) instead of &apos;(if|for|foreach|while|switch)&apos; and
&gt; matched.group(1) ? We are using this style in new code. The same comment would
&gt; apply for other matched.group()s, too.

For sure.  I prefer named groups too, but didn&apos;t think it&apos;s a common style.

&gt; &gt; +                if not match(r&apos;(\s*{\s*}?$)|(\s*;?$)&apos;, rest):
&gt; &gt; +                    error(line_number, &apos;whitespace/parens&apos;, 4,
&gt; &gt; +                          &apos;More than one command on the same line&apos;)
&gt; 
&gt; I think it would be better if the error message contains the value of
&gt; statement.

Done.

&gt; Could you add more test cases? We may want to check there are no alarms for &apos;if
&gt; ((a &amp; b)&apos; (so we can check up_to_matching_paren explicitly).

Added some more tests.  Please, let me know if it&apos;s not enough.

&gt; Also, if you haven&apos;t done yet, please run your modified style checker for a
&gt; bunch of code and check if there are no false alarms.

How can I do it?  Running against full source tree seems kind of useless---too difficult to say noise from real problems?  Is there some other approach?

E.g. it might be convenient to have &apos;best of the breed&apos; sample of sources to check modified linter against.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185126</commentid>
    <comment_count>5</comment_count>
      <attachid>47541</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-27 09:18:42 -0800</bug_when>
    <thetext>Comment on attachment 47541
Patch

Thanks for fixes! Please feel free to land this patch if you agree with my comments and fix them.

&gt; +def up_to_unmatched_closing_paren(s):
&gt; +    &quot;&quot;&quot;Splits a string into two parts up to first unmatched ) (assuming
&gt; +    that |s| is a rest right after (.
&gt; +
&gt; +    Returns None, None if there is no unmatched )
&gt; +    &quot;&quot;&quot;

Please follow conventions of docstrings. It should be like

&quot;&quot;&quot;Splits a string into two parts up to first unmatched &apos;)&apos;.

Args:
  s: a string which is a substring of line after &quot;(&quot;.
     (e.g., &quot;a == (b + c)) {&quot;).

Returns:
  A pair of strings (e.g., &quot;a == (b + c))&quot; and &quot; {&quot;).

&quot;&quot;&quot;

or something like this. It would be nicer if the argument s has a better name, I couldn&apos;t come up with one though.

&gt; +    in_macro = match(r&apos;\s*#define&apos;, line)

I think we can move this line to just before the check of single line statements (line 1350).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185128</commentid>
    <comment_count>6</comment_count>
      <attachid>47544</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-01-27 09:29:22 -0800</bug_when>
    <thetext>Created attachment 47544
Next round</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185129</commentid>
    <comment_count>7</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-01-27 09:31:46 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 47541 [details])
&gt; Thanks for fixes! Please feel free to land this patch if you agree with my
&gt; comments and fix them.
&gt; 
&gt; &gt; +def up_to_unmatched_closing_paren(s):
&gt; &gt; +    &quot;&quot;&quot;Splits a string into two parts up to first unmatched ) (assuming
&gt; &gt; +    that |s| is a rest right after (.
&gt; &gt; +
&gt; &gt; +    Returns None, None if there is no unmatched )
&gt; &gt; +    &quot;&quot;&quot;
&gt; 
&gt; Please follow conventions of docstrings. It should be like
&gt; 
&gt; &quot;&quot;&quot;Splits a string into two parts up to first unmatched &apos;)&apos;.
&gt; 
&gt; Args:
&gt;   s: a string which is a substring of line after &quot;(&quot;.
&gt;      (e.g., &quot;a == (b + c)) {&quot;).
&gt; 
&gt; Returns:
&gt;   A pair of strings (e.g., &quot;a == (b + c))&quot; and &quot; {&quot;).
&gt; 
&gt; &quot;&quot;&quot;
&gt; 
&gt; or something like this. It would be nicer if the argument s has a better name,
&gt; I couldn&apos;t come up with one though.
&gt; 
&gt; &gt; +    in_macro = match(r&apos;\s*#define&apos;, line)
&gt; 
&gt; I think we can move this line to just before the check of single line
&gt; statements (line 1350).

Hopefully all the comments are addressed, but I&apos;d appreciate if you have a
final look.

Regarding in macro: I thought it might be a useful thing for the rest of the
code, but yes, I agree that at least for now we&apos;d better move it closer to the
use.

Thanks a lot for review, Shinichiro!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185133</commentid>
    <comment_count>8</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-01-27 10:12:25 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2) 
&gt; &gt; Also, if you haven&apos;t done yet, please run your modified style checker for a
&gt; &gt; bunch of code and check if there are no false alarms.
&gt; 
&gt; How can I do it?  Running against full source tree seems kind of useless---too
&gt; difficult to say noise from real problems?  Is there some other approach?

Personally when I do a change of this sort, 
1. I run it against a lot of WebKit code (WebCore and JavaScriptCore). 
2. If there are warnings, I&apos;ll randomly check around 5 of them to ensure that they are real warnings.
3. If any warnings are false positives, then the checker should be fixed and this process repeated (go to step 1).
It may seem like a bit of overhead but it is worse to accidently flag correct code and then have to deal with people&apos;s frustration with that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185149</commentid>
    <comment_count>9</comment_count>
      <attachid>47544</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-27 11:01:08 -0800</bug_when>
    <thetext>Comment on attachment 47544
Next round

Thanks again for your fix! Looks good assuming you&apos;ll land this after you check this patch with some code as David suggested (thanks David for your comment, I somehow missed Anton&apos;s question). By the way, I think people rarely ignores these rules so I guess checking a lot of source code won&apos;t be so painful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185167</commentid>
    <comment_count>10</comment_count>
      <attachid>47553</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-01-27 11:51:05 -0800</bug_when>
    <thetext>Created attachment 47553
Additionally support lines ending with \---useful for macros</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185170</commentid>
    <comment_count>11</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-01-27 11:53:24 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #2) 
&gt; &gt; &gt; Also, if you haven&apos;t done yet, please run your modified style checker for a
&gt; &gt; &gt; bunch of code and check if there are no false alarms.
&gt; &gt; 
&gt; &gt; How can I do it?  Running against full source tree seems kind of useless---too
&gt; &gt; difficult to say noise from real problems?  Is there some other approach?
&gt; 
&gt; Personally when I do a change of this sort, 
&gt; 1. I run it against a lot of WebKit code (WebCore and JavaScriptCore). 
&gt; 2. If there are warnings, I&apos;ll randomly check around 5 of them to ensure that
&gt; they are real warnings.
&gt; 3. If any warnings are false positives, then the checker should be fixed and
&gt; this process repeated (go to step 1).
&gt; It may seem like a bit of overhead but it is worse to accidently flag correct
&gt; code and then have to deal with people&apos;s frustration with that.

Thanks a lot, David.  So I ran it through all the sources and inspected several warnings, most of them are correct, but I still decided to allow lines terminating with \ as multiline macros are too painful to write.  And \ are kind of legitime C code.

Spotted a nice case of macro to inline function conversion which kept \ at the end :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185172</commentid>
    <comment_count>12</comment_count>
      <attachid>47555</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-01-27 11:56:52 -0800</bug_when>
    <thetext>Created attachment 47555
Removing traces of incorrect redirects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185349</commentid>
    <comment_count>13</comment_count>
      <attachid>47555</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-27 23:34:14 -0800</bug_when>
    <thetext>Comment on attachment 47555
Removing traces of incorrect redirects

&gt; but I still decided to allow lines
&gt; terminating with \ as multiline macros are too painful to write.  And \ are
&gt; kind of legitime C code.
&gt; 
&gt; Spotted a nice case of macro to inline function conversion which kept \ at the
&gt; end :)

Ah, very nice catch. Thanks for doing this check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185354</commentid>
    <comment_count>14</comment_count>
      <attachid>47555</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-01-27 23:43:34 -0800</bug_when>
    <thetext>Comment on attachment 47555
Removing traces of incorrect redirects

Thanks a lot for review, Shinichiro and David.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185370</commentid>
    <comment_count>15</comment_count>
      <attachid>47555</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-28 00:29:11 -0800</bug_when>
    <thetext>Comment on attachment 47555
Removing traces of incorrect redirects

Clearing flags on attachment: 47555

Committed r53989: &lt;http://trac.webkit.org/changeset/53989&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185371</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-28 00:29:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47426</attachid>
            <date>2010-01-26 11:27:44 -0800</date>
            <delta_ts>2010-01-27 08:48:25 -0800</delta_ts>
            <desc>First take</desc>
            <filename>bug-34173-20100126222742.patch</filename>
            <type>text/plain</type>
            <size>6056</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0NDI3YTlkLi5hZjdmN2E2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDEt
MjYgIGFudG9uIG11aGluICA8YW50b25tQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wcm92ZSB0cmVhdG1lbnQgb2YgY29uZGl0
aW9ucyBhbmQgcmVzdCBvZiB0aGUgbGluZSBmb3IgaWYsIGVsc2UsIHN3aXRjaCBhbmQgYWxpa2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDE3Mwor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGUucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGVfdW5pdHRlc3QucHk6CisKIDIwMTAt
MDEtMjUgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2hpbmljaGlybyBIYW1hamkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5CmluZGV4IDk1MzYwZjcuLjBhMzg3ZmYgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5CkBAIC0x
NTIsNiArMTUyLDE3IEBAIGRlZiBzdWJuKHBhdHRlcm4sIHJlcGxhY2VtZW50LCBzKToKICAgICBy
ZXR1cm4gX3JlZ2V4cF9jb21waWxlX2NhY2hlW3BhdHRlcm5dLnN1Ym4ocmVwbGFjZW1lbnQsIHMp
CiAKIAorZGVmIHVwX3RvX21hdGNoaW5nX3BhcmVuKHMpOgorICAgIGkgPSAxCisgICAgZm9yIHBv
cywgYyBpbiBlbnVtZXJhdGUocyk6CisgICAgICBpZiBjID09ICcoJzoKKyAgICAgICAgaSArPSAx
CisgICAgICBlbGlmIGMgPT0gJyknOgorICAgICAgICBpIC09IDEKKyAgICAgICAgaWYgaSA9PSAw
OgorICAgICAgICAgIHJldHVybiBzWzpwb3NdLCBzW3BvcyArIDE6XQorICAgIHJldHVybiBOb25l
LCBOb25lCisKIGNsYXNzIF9JbmNsdWRlU3RhdGUoZGljdCk6CiAgICAgIiIiVHJhY2tzIGxpbmUg
bnVtYmVycyBmb3IgaW5jbHVkZXMsIGFuZCB0aGUgb3JkZXIgaW4gd2hpY2ggaW5jbHVkZXMgYXBw
ZWFyLgogCkBAIC0xMzA5LDE5ICsxMzIwLDMxIEBAIGRlZiBjaGVja19zcGFjaW5nKGZpbGVuYW1l
LCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKICAgICAjIHRoZXJlIHNob3VsZCBl
aXRoZXIgYmUgemVybyBvciBvbmUgc3BhY2VzIGluc2lkZSB0aGUgcGFyZW5zLgogICAgICMgV2Ug
ZG9uJ3Qgd2FudDogImlmICggZm9vKSIgb3IgImlmICggZm9vICAgKSIuCiAgICAgIyBFeGNlcHRp
b246ICJmb3IgKCA7IGZvbzsgYmFyKSIgYW5kICJmb3IgKGZvbzsgYmFyOyApIiBhcmUgYWxsb3dl
ZC4KLSAgICBtYXRjaGVkID0gc2VhcmNoKHInXGIoaWZ8Zm9yfGZvcmVhY2h8d2hpbGV8c3dpdGNo
KVxzKlwoKFsgXSopKC4pLipbXiBdKyhbIF0qKVwpXHMqe1xzKiQnLAotICAgICAgICAgICAgICAg
ICAgICAgbGluZSkKLSAgICBpZiBtYXRjaGVkOgotICAgICAgICBpZiBsZW4obWF0Y2hlZC5ncm91
cCgyKSkgIT0gbGVuKG1hdGNoZWQuZ3JvdXAoNCkpOgotICAgICAgICAgICAgaWYgbm90IChtYXRj
aGVkLmdyb3VwKDMpID09ICc7JwotICAgICAgICAgICAgICAgICAgICBhbmQgbGVuKG1hdGNoZWQu
Z3JvdXAoMikpID09IDEgKyBsZW4obWF0Y2hlZC5ncm91cCg0KSkKLSAgICAgICAgICAgICAgICAg
ICAgb3Igbm90IG1hdGNoZWQuZ3JvdXAoMikgYW5kIHNlYXJjaChyJ1xiZm9yXHMqXCguKjsgXCkn
LCBsaW5lKSk6Ci0gICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNl
L3BhcmVucycsIDUsCi0gICAgICAgICAgICAgICAgICAgICAgJ01pc21hdGNoaW5nIHNwYWNlcyBp
bnNpZGUgKCkgaW4gJXMnICUgbWF0Y2hlZC5ncm91cCgxKSkKLSAgICAgICAgaWYgbm90IGxlbiht
YXRjaGVkLmdyb3VwKDIpKSBpbiBbMCwgMV06Ci0gICAgICAgICAgICBlcnJvcihsaW5lX251bWJl
ciwgJ3doaXRlc3BhY2UvcGFyZW5zJywgNSwKLSAgICAgICAgICAgICAgICAgICdTaG91bGQgaGF2
ZSB6ZXJvIG9yIG9uZSBzcGFjZXMgaW5zaWRlICggYW5kICkgaW4gJXMnICUKLSAgICAgICAgICAg
ICAgICAgIG1hdGNoZWQuZ3JvdXAoMSkpCisgICAgIyBBbmQgcnVsZXMgZm9yIG1hY3JvIGRlZmlu
aXRpb25zIGFyZSByZWxheGVkLgorICAgIGlmIG5vdCBtYXRjaChyJ1xzKiNkZWZpbmUnLCBsaW5l
KToKKyAgICAgICAgbWF0Y2hlZCA9IHNlYXJjaChyJ1xiKGlmfGZvcnxmb3JlYWNofHdoaWxlfHN3
aXRjaClccypcKCguKikkJywgbGluZSkKKworICAgICAgICBpZiBtYXRjaGVkOgorICAgICAgICAg
ICAgc3RhdGVtZW50ID0gbWF0Y2hlZC5ncm91cCgxKQorICAgICAgICAgICAgY29uZGl0aW9uLCBy
ZXN0ID0gdXBfdG9fbWF0Y2hpbmdfcGFyZW4obWF0Y2hlZC5ncm91cCgyKSkKKyAgICAgICAgICAg
IGlmIGNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICBtYXRjaGVkID0gc2VhcmNoKHInKFsgXSop
KC4pLipbXiBdKyhbIF0qKScsIGNvbmRpdGlvbikKKyAgICAgICAgICAgICAgICBpZiBtYXRjaGVk
OgorICAgICAgICAgICAgICAgICAgICBpZiBsZW4obWF0Y2hlZC5ncm91cCgxKSkgIT0gbGVuKG1h
dGNoZWQuZ3JvdXAoMykpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IChtYXRjaGVk
Lmdyb3VwKDIpID09ICc7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGVu
KG1hdGNoZWQuZ3JvdXAoMSkpID09IDEgKyBsZW4obWF0Y2hlZC5ncm91cCgzKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3Igbm90IG1hdGNoZWQuZ3JvdXAoMSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlYXJjaChyJ1xiZm9yXHMqXCguKjsgXCknLCBs
aW5lKSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3
aGl0ZXNwYWNlL3BhcmVucycsIDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J01pc21hdGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4gJXMnICUgc3RhdGVtZW50KQorICAgICAg
ICAgICAgICAgICAgICBpZiBub3QgbGVuKG1hdGNoZWQuZ3JvdXAoMSkpIGluIFswLCAxXToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJl
bnMnLCA1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Nob3VsZCBoYXZlIHplcm8g
b3Igb25lIHNwYWNlcyBpbnNpZGUgKCBhbmQgKSBpbiAlcycgJQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGVtZW50KQorCisgICAgICAgICAgICAgICAgaWYgbm90IG1hdGNoKHIn
KFxzKntccyp9PyQpfChccyo7PyQpJywgcmVzdCk6CisgICAgICAgICAgICAgICAgICAgIGVycm9y
KGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJlbnMnLCA0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAnTW9yZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRoZSBzYW1lIGxpbmUnKQogCiAgICAg
IyBZb3Ugc2hvdWxkIGFsd2F5cyBoYXZlIGEgc3BhY2UgYWZ0ZXIgYSBjb21tYSAoZWl0aGVyIGFz
IGZuIGFyZyBvciBvcGVyYXRvcikKICAgICBpZiBzZWFyY2gocicsW15cc10nLCBsaW5lKToKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlX3Vu
aXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGVf
dW5pdHRlc3QucHkKaW5kZXggMGE1NjA1Ny4uMTcwNTc5OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGVfdW5pdHRlc3QucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGVfdW5pdHRlc3QucHkKQEAg
LTMwMDAsMTAgKzMwMDAsOSBAQCBjbGFzcyBXZWJLaXRTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFz
ZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKICAgICAgICAgICAgICcg
ICAgeCsrOyB5Kys7JywKICAgICAgICAgICAgICdNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24gdGhl
IHNhbWUgbGluZSAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJykKLSAgICAgICAgIyBGSVhNRTog
TWFrZSB0aGlzIGZhaWwuCi0gICAgICAgICMgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAot
ICAgICAgICAjICAgICAnICAgIGlmIChjb25kaXRpb24pIGRvSXQoKTtcbicsCi0gICAgICAgICMg
ICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAg
ICAnICAgIGlmIChjb25kaXRpb24pIGRvSXQoKTtcbicsCisgICAgICAgICAgICAnTW9yZSB0aGFu
IG9uZSBjb21tYW5kIG9uIHRoZSBzYW1lIGxpbmUgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzRdJykK
IAogICAgICAgICAjIDIuIEFuIGVsc2Ugc3RhdGVtZW50IHNob3VsZCBnbyBvbiB0aGUgc2FtZSBs
aW5lIGFzIGEgcHJlY2VkaW5nCiAgICAgICAgICMgICBjbG9zZSBicmFjZSBpZiBvbmUgaXMgcHJl
c2VudCwgZWxzZSBpdCBzaG91bGQgbGluZSB1cCB3aXRoIHRoZQpAQCAtMzA0NywxMyArMzA0Niwx
NCBAQCBjbGFzcyBXZWJLaXRTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKICAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKSBk
b1NvbWV0aGluZygpOyBlbHNlIGRvU29tZXRoaW5nRWxzZSgpO1xuJywKICAgICAgICAgICAgIFsn
TW9yZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRoZSBzYW1lIGxpbmUgIFt3aGl0ZXNwYWNlL25ld2xp
bmVdIFs0XScsCi0gICAgICAgICAgICAgJ0Vsc2UgY2xhdXNlIHNob3VsZCBuZXZlciBiZSBvbiBz
YW1lIGxpbmUgYXMgZWxzZSAodXNlIDIgbGluZXMpICBbd2hpdGVzcGFjZS9uZXdsaW5lXSBbNF0n
XSkKLSAgICAgICAgIyBGSVhNRTogTWFrZSB0aGlzIGZhaWwuCi0gICAgICAgICMgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAjICAgICAnaWYgKGNvbmRpdGlvbikgZG9Tb21l
dGhpbmcoKTsgZWxzZSB7XG4nCi0gICAgICAgICMgICAgICcgICAgZG9Tb21ldGhpbmdFbHNlKCk7
XG4nCi0gICAgICAgICMgICAgICd9XG4nLAotICAgICAgICAjICAgICAnJykKKyAgICAgICAgICAg
ICAnRWxzZSBjbGF1c2Ugc2hvdWxkIG5ldmVyIGJlIG9uIHNhbWUgbGluZSBhcyBlbHNlICh1c2Ug
MiBsaW5lcykgIFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScsCisgICAgICAgICAgICAgJ01vcmUg
dGhhbiBvbmUgY29tbWFuZCBvbiB0aGUgc2FtZSBsaW5lICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs0
XSddKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAn
aWYgKGNvbmRpdGlvbikgZG9Tb21ldGhpbmcoKTsgZWxzZSB7XG4nCisgICAgICAgICAgICAnICAg
IGRvU29tZXRoaW5nRWxzZSgpO1xuJworICAgICAgICAgICAgJ31cbicsCisgICAgICAgICAgICBb
J01vcmUgdGhhbiBvbmUgY29tbWFuZCBvbiB0aGUgc2FtZSBsaW5lICBbd2hpdGVzcGFjZS9wYXJl
bnNdIFs0XScsCisgICAgICAgICAgICAgJ09uZSBsaW5lIGNvbnRyb2wgY2xhdXNlcyBzaG91bGQg
bm90IHVzZSBicmFjZXMuICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XSddKQogCiAgICAgICAgICMg
My4gQW4gZWxzZSBpZiBzdGF0ZW1lbnQgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgYW4gaWYgc3RhdGVt
ZW50CiAgICAgICAgICMgICAgd2hlbiB0aGUgcHJpb3IgaWYgY29uY2x1ZGVzIHdpdGggYSByZXR1
cm4gc3RhdGVtZW50Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47541</attachid>
            <date>2010-01-27 08:48:32 -0800</date>
            <delta_ts>2010-01-27 09:29:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-34173-20100127194830.patch</filename>
            <type>text/plain</type>
            <size>8638</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBmZGNmMDNjLi45NjFkYmUxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDEt
MjcgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXByb3ZlIHRyZWF0bWVudCBvZiBjb25k
aXRpb25zIGFuZCByZXN0IG9mIHRoZSBsaW5lIGZvciBpZiwgZWxzZSwgc3dpdGNoIGFuZCBhbGlr
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MTcz
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZV91bml0dGVzdC5weToKKwogMjAx
MC0wMS0yNyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEFkZGluZyBteXNlbGYgYXMgY29tbWl0dGVyLiBObyByZXZpZXcgbmVjZXNzYXJ5LgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2Nw
cC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHAu
cHkKaW5kZXggOTUzNjBmNy4uOTkwYTQyOCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2NwcC5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwLnB5CkBAIC0xNTIsNiArMTUyLDIyIEBA
IGRlZiBzdWJuKHBhdHRlcm4sIHJlcGxhY2VtZW50LCBzKToKICAgICByZXR1cm4gX3JlZ2V4cF9j
b21waWxlX2NhY2hlW3BhdHRlcm5dLnN1Ym4ocmVwbGFjZW1lbnQsIHMpCiAKIAorZGVmIHVwX3Rv
X3VubWF0Y2hlZF9jbG9zaW5nX3BhcmVuKHMpOgorICAgICIiIlNwbGl0cyBhIHN0cmluZyBpbnRv
IHR3byBwYXJ0cyB1cCB0byBmaXJzdCB1bm1hdGNoZWQgKSAoYXNzdW1pbmcKKyAgICB0aGF0IHxz
fCBpcyBhIHJlc3QgcmlnaHQgYWZ0ZXIgKC4KKworICAgIFJldHVybnMgTm9uZSwgTm9uZSBpZiB0
aGVyZSBpcyBubyB1bm1hdGNoZWQgKQorICAgICIiIgorICAgIGkgPSAxCisgICAgZm9yIHBvcywg
YyBpbiBlbnVtZXJhdGUocyk6CisgICAgICBpZiBjID09ICcoJzoKKyAgICAgICAgaSArPSAxCisg
ICAgICBlbGlmIGMgPT0gJyknOgorICAgICAgICBpIC09IDEKKyAgICAgICAgaWYgaSA9PSAwOgor
ICAgICAgICAgIHJldHVybiBzWzpwb3NdLCBzW3BvcyArIDE6XQorICAgIHJldHVybiBOb25lLCBO
b25lCisKIGNsYXNzIF9JbmNsdWRlU3RhdGUoZGljdCk6CiAgICAgIiIiVHJhY2tzIGxpbmUgbnVt
YmVycyBmb3IgaW5jbHVkZXMsIGFuZCB0aGUgb3JkZXIgaW4gd2hpY2ggaW5jbHVkZXMgYXBwZWFy
LgogCkBAIC0xMzA5LDE5ICsxMzI1LDMyIEBAIGRlZiBjaGVja19zcGFjaW5nKGZpbGVuYW1lLCBj
bGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKICAgICAjIHRoZXJlIHNob3VsZCBlaXRo
ZXIgYmUgemVybyBvciBvbmUgc3BhY2VzIGluc2lkZSB0aGUgcGFyZW5zLgogICAgICMgV2UgZG9u
J3Qgd2FudDogImlmICggZm9vKSIgb3IgImlmICggZm9vICAgKSIuCiAgICAgIyBFeGNlcHRpb246
ICJmb3IgKCA7IGZvbzsgYmFyKSIgYW5kICJmb3IgKGZvbzsgYmFyOyApIiBhcmUgYWxsb3dlZC4K
LSAgICBtYXRjaGVkID0gc2VhcmNoKHInXGIoaWZ8Zm9yfGZvcmVhY2h8d2hpbGV8c3dpdGNoKVxz
KlwoKFsgXSopKC4pLipbXiBdKyhbIF0qKVwpXHMqe1xzKiQnLAotICAgICAgICAgICAgICAgICAg
ICAgbGluZSkKKyAgICBpbl9tYWNybyA9IG1hdGNoKHInXHMqI2RlZmluZScsIGxpbmUpCisgICAg
bWF0Y2hlZCA9IHNlYXJjaChyJ1xiKD9QPHN0YXRlbWVudD5pZnxmb3J8Zm9yZWFjaHx3aGlsZXxz
d2l0Y2gpXHMqXCgoP1A8cmVtaW5kZXI+LiopJCcsIGxpbmUpCiAgICAgaWYgbWF0Y2hlZDoKLSAg
ICAgICAgaWYgbGVuKG1hdGNoZWQuZ3JvdXAoMikpICE9IGxlbihtYXRjaGVkLmdyb3VwKDQpKToK
LSAgICAgICAgICAgIGlmIG5vdCAobWF0Y2hlZC5ncm91cCgzKSA9PSAnOycKLSAgICAgICAgICAg
ICAgICAgICAgYW5kIGxlbihtYXRjaGVkLmdyb3VwKDIpKSA9PSAxICsgbGVuKG1hdGNoZWQuZ3Jv
dXAoNCkpCi0gICAgICAgICAgICAgICAgICAgIG9yIG5vdCBtYXRjaGVkLmdyb3VwKDIpIGFuZCBz
ZWFyY2gocidcYmZvclxzKlwoLio7IFwpJywgbGluZSkpOgotICAgICAgICAgICAgICAgIGVycm9y
KGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJlbnMnLCA1LAotICAgICAgICAgICAgICAgICAg
ICAgICdNaXNtYXRjaGluZyBzcGFjZXMgaW5zaWRlICgpIGluICVzJyAlIG1hdGNoZWQuZ3JvdXAo
MSkpCi0gICAgICAgIGlmIG5vdCBsZW4obWF0Y2hlZC5ncm91cCgyKSkgaW4gWzAsIDFdOgotICAg
ICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVucycsIDUsCi0gICAg
ICAgICAgICAgICAgICAnU2hvdWxkIGhhdmUgemVybyBvciBvbmUgc3BhY2VzIGluc2lkZSAoIGFu
ZCApIGluICVzJyAlCi0gICAgICAgICAgICAgICAgICBtYXRjaGVkLmdyb3VwKDEpKQorICAgICAg
ICBzdGF0ZW1lbnQgPSBtYXRjaGVkLmdyb3VwKCdzdGF0ZW1lbnQnKQorICAgICAgICBjb25kaXRp
b24sIHJlc3QgPSB1cF90b191bm1hdGNoZWRfY2xvc2luZ19wYXJlbihtYXRjaGVkLmdyb3VwKCdy
ZW1pbmRlcicpKQorICAgICAgICBpZiBjb25kaXRpb24gaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICBjb25kaXRpb25fbWF0Y2ggPSBzZWFyY2gocicoP1A8bGVhZGluZz5bIF0qKSg/UDxzZXBhcmF0
b3I+LikuKlteIF0rKD9QPHRyYWlsaW5nPlsgXSopJywgY29uZGl0aW9uKQorICAgICAgICAgICAg
aWYgY29uZGl0aW9uX21hdGNoOgorICAgICAgICAgICAgICAgIG5fbGVhZGluZyA9IGxlbihjb25k
aXRpb25fbWF0Y2guZ3JvdXAoJ2xlYWRpbmcnKSkKKyAgICAgICAgICAgICAgICBuX3RyYWlsaW5n
ID0gbGVuKGNvbmRpdGlvbl9tYXRjaC5ncm91cCgndHJhaWxpbmcnKSkKKyAgICAgICAgICAgICAg
ICBpZiBuX2xlYWRpbmcgIT0gbl90cmFpbGluZzoKKyAgICAgICAgICAgICAgICAgICAgZm9yX2V4
Y2VwdGlvbiA9IHN0YXRlbWVudCA9PSAnZm9yJyBhbmQgKAorICAgICAgICAgICAgICAgICAgICAg
ICAgKGNvbmRpdGlvbi5zdGFydHN3aXRoKCcgOycpIGFuZCBuX3RyYWlsaW5nID09IDApIG9yCisg
ICAgICAgICAgICAgICAgICAgICAgICAoY29uZGl0aW9uLmVuZHN3aXRoKCc7ICcpICAgYW5kIG5f
bGVhZGluZyA9PSAwKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGZvcl9leGNlcHRpb246
CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uv
cGFyZW5zJywgNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNaXNtYXRjaGluZyBz
cGFjZXMgaW5zaWRlICgpIGluICVzJyAlIHN0YXRlbWVudCkKKyAgICAgICAgICAgICAgICBpZiBu
X2xlYWRpbmcgPiAxOgorICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3do
aXRlc3BhY2UvcGFyZW5zJywgNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Nob3VsZCBo
YXZlIHplcm8gb3Igb25lIHNwYWNlcyBpbnNpZGUgKCBhbmQgKSBpbiAlcycgJQorICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQpCisKKyAgICAgICAgICAgICMgRG8gbm90IGNoZWNr
IGZvciBtb3JlIHRoYW4gb25lIGNvbW1hbmQgaW4gbWFjcm9zCisgICAgICAgICAgICBpZiBub3Qg
aW5fbWFjcm8gYW5kIG5vdCBtYXRjaChyJyhccyp7XHMqfT8kKXwoXHMqOz8kKScsIHJlc3QpOgor
ICAgICAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJlbnMnLCA0
LAorICAgICAgICAgICAgICAgICAgICAgICdNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24gdGhlIHNh
bWUgbGluZSBpbiAlcycgJSBzdGF0ZW1lbnQpCiAKICAgICAjIFlvdSBzaG91bGQgYWx3YXlzIGhh
dmUgYSBzcGFjZSBhZnRlciBhIGNvbW1hIChlaXRoZXIgYXMgZm4gYXJnIG9yIG9wZXJhdG9yKQog
ICAgIGlmIHNlYXJjaChyJyxbXlxzXScsIGxpbmUpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2NwcF91bml0dGVzdC5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHBfdW5pdHRlc3QucHkK
aW5kZXggNTY4YWMxNi4uZWZhMjY3NyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2NwcF91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwX3VuaXR0ZXN0LnB5CkBAIC0x
MTY3LDEwICsxMTY3LDE2IEBAIGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToK
ICAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoZm9vOyBiYTsgYmFyICkgeycsICdNaXNtYXRj
aGluZyBzcGFjZXMgaW5zaWRlICgpIGluIGZvcicKICAgICAgICAgICAgICAgICAgICAgICAgICAn
ICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2Zv
ciAoKGZvbyk7IChiYSk7IChiYXIpICkgeycsICdNaXNtYXRjaGluZyBzcGFjZXMgaW5zaWRlICgp
IGluIGZvcicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9wYXJlbnNd
IFs1XScpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoOyBmb287IGJhcikgeycsICcn
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKDsgKGZvbyk7IChiYXIpKSB7JywgJycp
CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoIDsgZm9vOyBiYXIpIHsnLCAnJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICggOyAoZm9vKTsgKGJhcikpIHsnLCAnJykKICAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICggOyBmb287IGJhciApIHsnLCAnJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICggOyAoZm9vKTsgKGJhcikgKSB7JywgJycpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoZm9vOyBiYXI7ICkgeycsICcnKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdmb3IgKChmb28pOyAoYmFyKTsgKSB7JywgJycpCiAgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ2ZvcmVhY2ggKGZvbywgZm9vcyApIHsnLCAnTWlzbWF0Y2hpbmcgc3Bh
Y2VzIGluc2lkZSAoKSBpbiBmb3JlYWNoJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3
aGl0ZXNwYWNlL3BhcmVuc10gWzVdJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yZWFj
aCAoIGZvbywgZm9vcykgeycsICdNaXNtYXRjaGluZyBzcGFjZXMgaW5zaWRlICgpIGluIGZvcmVh
Y2gnCkBAIC0zMDAwLDEwICszMDA2LDkgQEAgY2xhc3MgV2ViS2l0U3R5bGVUZXN0KENwcFN0eWxl
VGVzdEJhc2UpOgogICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCiAgICAgICAg
ICAgICAnICAgIHgrKzsgeSsrOycsCiAgICAgICAgICAgICAnTW9yZSB0aGFuIG9uZSBjb21tYW5k
IG9uIHRoZSBzYW1lIGxpbmUgIFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScpCi0gICAgICAgICMg
RklYTUU6IE1ha2UgdGhpcyBmYWlsLgotICAgICAgICAjIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKLSAgICAgICAgIyAgICAgJyAgICBpZiAoY29uZGl0aW9uKSBkb0l0KCk7XG4nLAotICAg
ICAgICAjICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAg
ICAgICAgICAgJyAgICBpZiAoY29uZGl0aW9uKSBkb0l0KCk7XG4nLAorICAgICAgICAgICAgJ01v
cmUgdGhhbiBvbmUgY29tbWFuZCBvbiB0aGUgc2FtZSBsaW5lIGluIGlmICBbd2hpdGVzcGFjZS9w
YXJlbnNdIFs0XScpCiAKICAgICAgICAgIyAyLiBBbiBlbHNlIHN0YXRlbWVudCBzaG91bGQgZ28g
b24gdGhlIHNhbWUgbGluZSBhcyBhIHByZWNlZGluZwogICAgICAgICAjICAgY2xvc2UgYnJhY2Ug
aWYgb25lIGlzIHByZXNlbnQsIGVsc2UgaXQgc2hvdWxkIGxpbmUgdXAgd2l0aCB0aGUKQEAgLTMw
MzUsNiArMzA0MCwxMyBAQCBjbGFzcyBXZWJLaXRTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6
CiAgICAgICAgICAgICAnI2RlZmluZSBURVNUX0FTU0VSVChleHByZXNzaW9uKSBkbyB7IGlmICgh
KGV4cHJlc3Npb24pKSB7IFRlc3RzQ29udHJvbGxlcjo6c2hhcmVkKCkudGVzdEZhaWxlZChfX0ZJ
TEVfXywgX19MSU5FX18sICNleHByZXNzaW9uKTsgcmV0dXJuOyB9IH0gd2hpbGUgKDApXG4nLAog
ICAgICAgICAgICAgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAg
ICAgICAgICAgICcjZGVmaW5lIFRFU1RfQVNTRVJUKGV4cHJlc3Npb24pIGRvIHsgaWYgKCAhKGV4
cHJlc3Npb24pKSB7IFRlc3RzQ29udHJvbGxlcjo6c2hhcmVkKCkudGVzdEZhaWxlZChfX0ZJTEVf
XywgX19MSU5FX18sICNleHByZXNzaW9uKTsgcmV0dXJuOyB9IH0gd2hpbGUgKDApXG4nLAorICAg
ICAgICAgICAgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4gaWYgIFt3aGl0ZXNwYWNl
L3BhcmVuc10gWzVdJykKKyAgICAgICAgIyBGSVhNRTogY3VycmVudGx5IHdlIG9ubHkgY2hlY2sg
Zmlyc3QgY29uZGl0aW9uYWwsIHNvIHdlIGNhbm5vdCBkZXRlY3QgZXJyb3JzIGluIG5leHQgb25l
cy4KKyAgICAgICAgIyBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICMgICAg
ICcjZGVmaW5lIFRFU1RfQVNTRVJUKGV4cHJlc3Npb24pIGRvIHsgaWYgKCEoZXhwcmVzc2lvbikp
IHsgVGVzdHNDb250cm9sbGVyOjpzaGFyZWQoKS50ZXN0RmFpbGVkKF9fRklMRV9fLCBfX0xJTkVf
XywgI2V4cHJlc3Npb24pOyByZXR1cm47IH0gfSB3aGlsZSAoMCApXG4nLAorICAgICAgICAjICAg
ICAnTWlzbWF0Y2hpbmcgc3BhY2VzIGluc2lkZSAoKSBpbiBpZiAgW3doaXRlc3BhY2UvcGFyZW5z
XSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCiAgICAgICAgICAg
ICAnaWYgKGNvbmRpdGlvbikge1xuJwogICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZygpO1xu
JwogICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZ0FnYWluKCk7XG4nCkBAIC0zMDQ3LDEzICsz
MDU5LDE0IEBAIGNsYXNzIFdlYktpdFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAogICAgICAgICAgICAgJ2lmIChjb25kaXRp
b24pIGRvU29tZXRoaW5nKCk7IGVsc2UgZG9Tb21ldGhpbmdFbHNlKCk7XG4nLAogICAgICAgICAg
ICAgWydNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24gdGhlIHNhbWUgbGluZSAgW3doaXRlc3BhY2Uv
bmV3bGluZV0gWzRdJywKLSAgICAgICAgICAgICAnRWxzZSBjbGF1c2Ugc2hvdWxkIG5ldmVyIGJl
IG9uIHNhbWUgbGluZSBhcyBlbHNlICh1c2UgMiBsaW5lcykgIFt3aGl0ZXNwYWNlL25ld2xpbmVd
IFs0XSddKQotICAgICAgICAjIEZJWE1FOiBNYWtlIHRoaXMgZmFpbC4KLSAgICAgICAgIyBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICMgICAgICdpZiAoY29uZGl0aW9uKSBk
b1NvbWV0aGluZygpOyBlbHNlIHtcbicKLSAgICAgICAgIyAgICAgJyAgICBkb1NvbWV0aGluZ0Vs
c2UoKTtcbicKLSAgICAgICAgIyAgICAgJ31cbicsCi0gICAgICAgICMgICAgICcnKQorICAgICAg
ICAgICAgICdFbHNlIGNsYXVzZSBzaG91bGQgbmV2ZXIgYmUgb24gc2FtZSBsaW5lIGFzIGVsc2Ug
KHVzZSAyIGxpbmVzKSAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJywKKyAgICAgICAgICAgICAn
TW9yZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRoZSBzYW1lIGxpbmUgaW4gaWYgIFt3aGl0ZXNwYWNl
L3BhcmVuc10gWzRdJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAg
ICAgICAgICAgICdpZiAoY29uZGl0aW9uKSBkb1NvbWV0aGluZygpOyBlbHNlIHtcbicKKyAgICAg
ICAgICAgICcgICAgZG9Tb21ldGhpbmdFbHNlKCk7XG4nCisgICAgICAgICAgICAnfVxuJywKKyAg
ICAgICAgICAgIFsnTW9yZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRoZSBzYW1lIGxpbmUgaW4gaWYg
IFt3aGl0ZXNwYWNlL3BhcmVuc10gWzRdJywKKyAgICAgICAgICAgICAnT25lIGxpbmUgY29udHJv
bCBjbGF1c2VzIHNob3VsZCBub3QgdXNlIGJyYWNlcy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRd
J10pCiAKICAgICAgICAgIyAzLiBBbiBlbHNlIGlmIHN0YXRlbWVudCBzaG91bGQgYmUgd3JpdHRl
biBhcyBhbiBpZiBzdGF0ZW1lbnQKICAgICAgICAgIyAgICB3aGVuIHRoZSBwcmlvciBpZiBjb25j
bHVkZXMgd2l0aCBhIHJldHVybiBzdGF0ZW1lbnQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47544</attachid>
            <date>2010-01-27 09:29:22 -0800</date>
            <delta_ts>2010-01-27 11:50:58 -0800</delta_ts>
            <desc>Next round</desc>
            <filename>bug-34173-20100127202920.patch</filename>
            <type>text/plain</type>
            <size>8933</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBmZGNmMDNjLi45NjFkYmUxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDEt
MjcgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXByb3ZlIHRyZWF0bWVudCBvZiBjb25k
aXRpb25zIGFuZCByZXN0IG9mIHRoZSBsaW5lIGZvciBpZiwgZWxzZSwgc3dpdGNoIGFuZCBhbGlr
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MTcz
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZV91bml0dGVzdC5weToKKwogMjAx
MC0wMS0yNyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEFkZGluZyBteXNlbGYgYXMgY29tbWl0dGVyLiBObyByZXZpZXcgbmVjZXNzYXJ5LgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2Nw
cC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHAu
cHkKaW5kZXggOTUzNjBmNy4uZWI3ZTZmZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2NwcC5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwLnB5CkBAIC0xNTIsNiArMTUyLDMxIEBA
IGRlZiBzdWJuKHBhdHRlcm4sIHJlcGxhY2VtZW50LCBzKToKICAgICByZXR1cm4gX3JlZ2V4cF9j
b21waWxlX2NhY2hlW3BhdHRlcm5dLnN1Ym4ocmVwbGFjZW1lbnQsIHMpCiAKIAorZGVmIHVwX3Rv
X3VubWF0Y2hlZF9jbG9zaW5nX3BhcmVuKHMpOgorICAgICIiIlNwbGl0cyBhIHN0cmluZyBpbnRv
IHR3byBwYXJ0cyB1cCB0byBmaXJzdCB1bm1hdGNoZWQgJyknLgorCisgICAgQXJnczoKKyAgICAg
IHM6IGEgc3RyaW5nIHdoaWNoIGlzIGEgc3Vic3RyaW5nIG9mIGxpbmUgYWZ0ZXIgJygnCisgICAg
ICAoZS5nLiwgImEgPT0gKGIgKyBjKSkiKS4KKworICAgIFJldHVybnM6CisgICAgICBBIHBhaXIg
b2Ygc3RyaW5ncyAocHJlZml4IGJlZm9yZSBmaXJzdCB1bm1hdGNoZWQgJyknLAorICAgICAgcmVt
aW5kZXIgb2YgcyBhZnRlciBmaXJzdCB1bm1hdGNoZWQgJyknKSwgZS5nLiwKKyAgICAgIHVwX3Rv
X3VubWF0Y2hlZF9jbG9zaW5nX3BhcmVuKCJhID09IChiICsgYykpIHsgIikKKyAgICAgIHJldHVy
bnMgImEgPT0gKGIgKyBjKSIsICIgeyIuCisgICAgICBSZXR1cm5zIE5vbmUsIE5vbmUgaWYgdGhl
cmUgaXMgbm8gdW5tYXRjaGVkICcpJworCisgICAgIiIiCisgICAgaSA9IDEKKyAgICBmb3IgcG9z
LCBjIGluIGVudW1lcmF0ZShzKToKKyAgICAgIGlmIGMgPT0gJygnOgorICAgICAgICBpICs9IDEK
KyAgICAgIGVsaWYgYyA9PSAnKSc6CisgICAgICAgIGkgLT0gMQorICAgICAgICBpZiBpID09IDA6
CisgICAgICAgICAgcmV0dXJuIHNbOnBvc10sIHNbcG9zICsgMTpdCisgICAgcmV0dXJuIE5vbmUs
IE5vbmUKKwogY2xhc3MgX0luY2x1ZGVTdGF0ZShkaWN0KToKICAgICAiIiJUcmFja3MgbGluZSBu
dW1iZXJzIGZvciBpbmNsdWRlcywgYW5kIHRoZSBvcmRlciBpbiB3aGljaCBpbmNsdWRlcyBhcHBl
YXIuCiAKQEAgLTEzMDksMTkgKzEzMzQsMzIgQEAgZGVmIGNoZWNrX3NwYWNpbmcoZmlsZW5hbWUs
IGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgogICAgICMgdGhlcmUgc2hvdWxkIGVp
dGhlciBiZSB6ZXJvIG9yIG9uZSBzcGFjZXMgaW5zaWRlIHRoZSBwYXJlbnMuCiAgICAgIyBXZSBk
b24ndCB3YW50OiAiaWYgKCBmb28pIiBvciAiaWYgKCBmb28gICApIi4KICAgICAjIEV4Y2VwdGlv
bjogImZvciAoIDsgZm9vOyBiYXIpIiBhbmQgImZvciAoZm9vOyBiYXI7ICkiIGFyZSBhbGxvd2Vk
LgotICAgIG1hdGNoZWQgPSBzZWFyY2gocidcYihpZnxmb3J8Zm9yZWFjaHx3aGlsZXxzd2l0Y2gp
XHMqXCgoWyBdKikoLikuKlteIF0rKFsgXSopXClccyp7XHMqJCcsCi0gICAgICAgICAgICAgICAg
ICAgICBsaW5lKQorICAgIG1hdGNoZWQgPSBzZWFyY2gocidcYig/UDxzdGF0ZW1lbnQ+aWZ8Zm9y
fGZvcmVhY2h8d2hpbGV8c3dpdGNoKVxzKlwoKD9QPHJlbWluZGVyPi4qKSQnLCBsaW5lKQogICAg
IGlmIG1hdGNoZWQ6Ci0gICAgICAgIGlmIGxlbihtYXRjaGVkLmdyb3VwKDIpKSAhPSBsZW4obWF0
Y2hlZC5ncm91cCg0KSk6Ci0gICAgICAgICAgICBpZiBub3QgKG1hdGNoZWQuZ3JvdXAoMykgPT0g
JzsnCi0gICAgICAgICAgICAgICAgICAgIGFuZCBsZW4obWF0Y2hlZC5ncm91cCgyKSkgPT0gMSAr
IGxlbihtYXRjaGVkLmdyb3VwKDQpKQotICAgICAgICAgICAgICAgICAgICBvciBub3QgbWF0Y2hl
ZC5ncm91cCgyKSBhbmQgc2VhcmNoKHInXGJmb3JccypcKC4qOyBcKScsIGxpbmUpKToKLSAgICAg
ICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvcGFyZW5zJywgNSwKLSAg
ICAgICAgICAgICAgICAgICAgICAnTWlzbWF0Y2hpbmcgc3BhY2VzIGluc2lkZSAoKSBpbiAlcycg
JSBtYXRjaGVkLmdyb3VwKDEpKQotICAgICAgICBpZiBub3QgbGVuKG1hdGNoZWQuZ3JvdXAoMikp
IGluIFswLCAxXToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9w
YXJlbnMnLCA1LAotICAgICAgICAgICAgICAgICAgJ1Nob3VsZCBoYXZlIHplcm8gb3Igb25lIHNw
YWNlcyBpbnNpZGUgKCBhbmQgKSBpbiAlcycgJQotICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5n
cm91cCgxKSkKKyAgICAgICAgc3RhdGVtZW50ID0gbWF0Y2hlZC5ncm91cCgnc3RhdGVtZW50JykK
KyAgICAgICAgY29uZGl0aW9uLCByZXN0ID0gdXBfdG9fdW5tYXRjaGVkX2Nsb3NpbmdfcGFyZW4o
bWF0Y2hlZC5ncm91cCgncmVtaW5kZXInKSkKKyAgICAgICAgaWYgY29uZGl0aW9uIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgY29uZGl0aW9uX21hdGNoID0gc2VhcmNoKHInKD9QPGxlYWRpbmc+
WyBdKikoP1A8c2VwYXJhdG9yPi4pLipbXiBdKyg/UDx0cmFpbGluZz5bIF0qKScsIGNvbmRpdGlv
bikKKyAgICAgICAgICAgIGlmIGNvbmRpdGlvbl9tYXRjaDoKKyAgICAgICAgICAgICAgICBuX2xl
YWRpbmcgPSBsZW4oY29uZGl0aW9uX21hdGNoLmdyb3VwKCdsZWFkaW5nJykpCisgICAgICAgICAg
ICAgICAgbl90cmFpbGluZyA9IGxlbihjb25kaXRpb25fbWF0Y2guZ3JvdXAoJ3RyYWlsaW5nJykp
CisgICAgICAgICAgICAgICAgaWYgbl9sZWFkaW5nICE9IG5fdHJhaWxpbmc6CisgICAgICAgICAg
ICAgICAgICAgIGZvcl9leGNlcHRpb24gPSBzdGF0ZW1lbnQgPT0gJ2ZvcicgYW5kICgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIChjb25kaXRpb24uc3RhcnRzd2l0aCgnIDsnKSBhbmQgbl90cmFp
bGluZyA9PSAwKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbi5lbmRzd2l0
aCgnOyAnKSAgIGFuZCBuX2xlYWRpbmcgPT0gMCkpCisgICAgICAgICAgICAgICAgICAgIGlmIG5v
dCBmb3JfZXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1i
ZXIsICd3aGl0ZXNwYWNlL3BhcmVucycsIDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnTWlzbWF0Y2hpbmcgc3BhY2VzIGluc2lkZSAoKSBpbiAlcycgJSBzdGF0ZW1lbnQpCisgICAg
ICAgICAgICAgICAgaWYgbl9sZWFkaW5nID4gMToKKyAgICAgICAgICAgICAgICAgICAgZXJyb3Io
bGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVucycsIDUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICdTaG91bGQgaGF2ZSB6ZXJvIG9yIG9uZSBzcGFjZXMgaW5zaWRlICggYW5kICkgaW4g
JXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50KQorCisgICAgICAgICAg
ICAjIERvIG5vdCBjaGVjayBmb3IgbW9yZSB0aGFuIG9uZSBjb21tYW5kIGluIG1hY3JvcworICAg
ICAgICAgICAgaW5fbWFjcm8gPSBtYXRjaChyJ1xzKiNkZWZpbmUnLCBsaW5lKQorICAgICAgICAg
ICAgaWYgbm90IGluX21hY3JvIGFuZCBub3QgbWF0Y2gocicoXHMqe1xzKn0/JCl8KFxzKjs/JCkn
LCByZXN0KToKKyAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uv
cGFyZW5zJywgNCwKKyAgICAgICAgICAgICAgICAgICAgICAnTW9yZSB0aGFuIG9uZSBjb21tYW5k
IG9uIHRoZSBzYW1lIGxpbmUgaW4gJXMnICUgc3RhdGVtZW50KQogCiAgICAgIyBZb3Ugc2hvdWxk
IGFsd2F5cyBoYXZlIGEgc3BhY2UgYWZ0ZXIgYSBjb21tYSAoZWl0aGVyIGFzIGZuIGFyZyBvciBv
cGVyYXRvcikKICAgICBpZiBzZWFyY2gocicsW15cc10nLCBsaW5lKToKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHBfdW5pdHRlc3Qu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwX3Vu
aXR0ZXN0LnB5CmluZGV4IDU2OGFjMTYuLmVmYTI2NzcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHBfdW5pdHRlc3QucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2NwcF91bml0dGVz
dC5weQpAQCAtMTE2NywxMCArMTE2NywxNiBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVU
ZXN0QmFzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFyZW5z
XSBbNV0nKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKGZvbzsgYmE7IGJhciApIHsn
LCAnTWlzbWF0Y2hpbmcgc3BhY2VzIGluc2lkZSAoKSBpbiBmb3InCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0nKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdmb3IgKChmb28pOyAoYmEpOyAoYmFyKSApIHsnLCAnTWlzbWF0Y2hpbmcgc3BhY2Vz
IGluc2lkZSAoKSBpbiBmb3InCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3Bh
Y2UvcGFyZW5zXSBbNV0nKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKDsgZm9vOyBi
YXIpIHsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICg7IChmb28pOyAoYmFy
KSkgeycsICcnKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKCA7IGZvbzsgYmFyKSB7
JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoIDsgKGZvbyk7IChiYXIpKSB7
JywgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoIDsgZm9vOyBiYXIgKSB7Jywg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoIDsgKGZvbyk7IChiYXIpICkgeycs
ICcnKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKGZvbzsgYmFyOyApIHsnLCAnJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICgoZm9vKTsgKGJhcik7ICkgeycsICcnKQog
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3JlYWNoIChmb28sIGZvb3MgKSB7JywgJ01pc21h
dGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4gZm9yZWFjaCcKICAgICAgICAgICAgICAgICAgICAg
ICAgICAnICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2ZvcmVhY2ggKCBmb28sIGZvb3MpIHsnLCAnTWlzbWF0Y2hpbmcgc3BhY2VzIGluc2lkZSAo
KSBpbiBmb3JlYWNoJwpAQCAtMzAwMCwxMCArMzAwNiw5IEBAIGNsYXNzIFdlYktpdFN0eWxlVGVz
dChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAogICAgICAgICAgICAgJyAgICB4Kys7IHkrKzsnLAogICAgICAgICAgICAgJ01vcmUgdGhhbiBv
bmUgY29tbWFuZCBvbiB0aGUgc2FtZSBsaW5lICBbd2hpdGVzcGFjZS9uZXdsaW5lXSBbNF0nKQot
ICAgICAgICAjIEZJWE1FOiBNYWtlIHRoaXMgZmFpbC4KLSAgICAgICAgIyBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCi0gICAgICAgICMgICAgICcgICAgaWYgKGNvbmRpdGlvbikgZG9JdCgp
O1xuJywKLSAgICAgICAgIyAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKKyAgICAgICAgICAgICcgICAgaWYgKGNvbmRpdGlvbikgZG9JdCgpO1xuJywKKyAgICAg
ICAgICAgICdNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24gdGhlIHNhbWUgbGluZSBpbiBpZiAgW3do
aXRlc3BhY2UvcGFyZW5zXSBbNF0nKQogCiAgICAgICAgICMgMi4gQW4gZWxzZSBzdGF0ZW1lbnQg
c2hvdWxkIGdvIG9uIHRoZSBzYW1lIGxpbmUgYXMgYSBwcmVjZWRpbmcKICAgICAgICAgIyAgIGNs
b3NlIGJyYWNlIGlmIG9uZSBpcyBwcmVzZW50LCBlbHNlIGl0IHNob3VsZCBsaW5lIHVwIHdpdGgg
dGhlCkBAIC0zMDM1LDYgKzMwNDAsMTMgQEAgY2xhc3MgV2ViS2l0U3R5bGVUZXN0KENwcFN0eWxl
VGVzdEJhc2UpOgogICAgICAgICAgICAgJyNkZWZpbmUgVEVTVF9BU1NFUlQoZXhwcmVzc2lvbikg
ZG8geyBpZiAoIShleHByZXNzaW9uKSkgeyBUZXN0c0NvbnRyb2xsZXI6OnNoYXJlZCgpLnRlc3RG
YWlsZWQoX19GSUxFX18sIF9fTElORV9fLCAjZXhwcmVzc2lvbik7IHJldHVybjsgfSB9IHdoaWxl
ICgwKVxuJywKICAgICAgICAgICAgICcnKQogICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCisgICAgICAgICAgICAnI2RlZmluZSBURVNUX0FTU0VSVChleHByZXNzaW9uKSBkbyB7
IGlmICggIShleHByZXNzaW9uKSkgeyBUZXN0c0NvbnRyb2xsZXI6OnNoYXJlZCgpLnRlc3RGYWls
ZWQoX19GSUxFX18sIF9fTElORV9fLCAjZXhwcmVzc2lvbik7IHJldHVybjsgfSB9IHdoaWxlICgw
KVxuJywKKyAgICAgICAgICAgICdNaXNtYXRjaGluZyBzcGFjZXMgaW5zaWRlICgpIGluIGlmICBb
d2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCisgICAgICAgICMgRklYTUU6IGN1cnJlbnRseSB3ZSBv
bmx5IGNoZWNrIGZpcnN0IGNvbmRpdGlvbmFsLCBzbyB3ZSBjYW5ub3QgZGV0ZWN0IGVycm9ycyBp
biBuZXh0IG9uZXMuCisgICAgICAgICMgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAg
ICAgICAjICAgICAnI2RlZmluZSBURVNUX0FTU0VSVChleHByZXNzaW9uKSBkbyB7IGlmICghKGV4
cHJlc3Npb24pKSB7IFRlc3RzQ29udHJvbGxlcjo6c2hhcmVkKCkudGVzdEZhaWxlZChfX0ZJTEVf
XywgX19MSU5FX18sICNleHByZXNzaW9uKTsgcmV0dXJuOyB9IH0gd2hpbGUgKDAgKVxuJywKKyAg
ICAgICAgIyAgICAgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4gaWYgIFt3aGl0ZXNw
YWNlL3BhcmVuc10gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAog
ICAgICAgICAgICAgJ2lmIChjb25kaXRpb24pIHtcbicKICAgICAgICAgICAgICcgICAgZG9Tb21l
dGhpbmcoKTtcbicKICAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmdBZ2FpbigpO1xuJwpAQCAt
MzA0NywxMyArMzA1OSwxNCBAQCBjbGFzcyBXZWJLaXRTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFz
ZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKICAgICAgICAgICAgICdp
ZiAoY29uZGl0aW9uKSBkb1NvbWV0aGluZygpOyBlbHNlIGRvU29tZXRoaW5nRWxzZSgpO1xuJywK
ICAgICAgICAgICAgIFsnTW9yZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRoZSBzYW1lIGxpbmUgIFt3
aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScsCi0gICAgICAgICAgICAgJ0Vsc2UgY2xhdXNlIHNob3Vs
ZCBuZXZlciBiZSBvbiBzYW1lIGxpbmUgYXMgZWxzZSAodXNlIDIgbGluZXMpICBbd2hpdGVzcGFj
ZS9uZXdsaW5lXSBbNF0nXSkKLSAgICAgICAgIyBGSVhNRTogTWFrZSB0aGlzIGZhaWwuCi0gICAg
ICAgICMgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAjICAgICAnaWYgKGNv
bmRpdGlvbikgZG9Tb21ldGhpbmcoKTsgZWxzZSB7XG4nCi0gICAgICAgICMgICAgICcgICAgZG9T
b21ldGhpbmdFbHNlKCk7XG4nCi0gICAgICAgICMgICAgICd9XG4nLAotICAgICAgICAjICAgICAn
JykKKyAgICAgICAgICAgICAnRWxzZSBjbGF1c2Ugc2hvdWxkIG5ldmVyIGJlIG9uIHNhbWUgbGlu
ZSBhcyBlbHNlICh1c2UgMiBsaW5lcykgIFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScsCisgICAg
ICAgICAgICAgJ01vcmUgdGhhbiBvbmUgY29tbWFuZCBvbiB0aGUgc2FtZSBsaW5lIGluIGlmICBb
d2hpdGVzcGFjZS9wYXJlbnNdIFs0XSddKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCisgICAgICAgICAgICAnaWYgKGNvbmRpdGlvbikgZG9Tb21ldGhpbmcoKTsgZWxzZSB7
XG4nCisgICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nRWxzZSgpO1xuJworICAgICAgICAgICAg
J31cbicsCisgICAgICAgICAgICBbJ01vcmUgdGhhbiBvbmUgY29tbWFuZCBvbiB0aGUgc2FtZSBs
aW5lIGluIGlmICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs0XScsCisgICAgICAgICAgICAgJ09uZSBs
aW5lIGNvbnRyb2wgY2xhdXNlcyBzaG91bGQgbm90IHVzZSBicmFjZXMuICBbd2hpdGVzcGFjZS9i
cmFjZXNdIFs0XSddKQogCiAgICAgICAgICMgMy4gQW4gZWxzZSBpZiBzdGF0ZW1lbnQgc2hvdWxk
IGJlIHdyaXR0ZW4gYXMgYW4gaWYgc3RhdGVtZW50CiAgICAgICAgICMgICAgd2hlbiB0aGUgcHJp
b3IgaWYgY29uY2x1ZGVzIHdpdGggYSByZXR1cm4gc3RhdGVtZW50Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47553</attachid>
            <date>2010-01-27 11:51:05 -0800</date>
            <delta_ts>2010-01-27 11:56:43 -0800</delta_ts>
            <desc>Additionally support lines ending with \---useful for macros</desc>
            <filename>bug-34173-20100127225103.patch</filename>
            <type>text/plain</type>
            <size>9256</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhLzEgYi8xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2
OWRlMjkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0No
YW5nZUxvZwppbmRleCBmZGNmMDNjLi45NjFkYmUxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTAtMDEtMjcgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXByb3ZlIHRyZWF0bWVudCBv
ZiBjb25kaXRpb25zIGFuZCByZXN0IG9mIHRoZSBsaW5lIGZvciBpZiwgZWxzZSwgc3dpdGNoIGFu
ZCBhbGlrZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM0MTczCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZS5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZV91bml0dGVzdC5weToK
KwogMjAxMC0wMS0yNyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEFkZGluZyBteXNlbGYgYXMgY29tbWl0dGVyLiBObyByZXZpZXcgbmVjZXNzYXJ5
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNz
b3JzL2NwcC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29y
cy9jcHAucHkKaW5kZXggOTUzNjBmNy4uMGFlMmY2YiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2NwcC5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwLnB5CkBAIC0xNTIsNiArMTUy
LDMxIEBAIGRlZiBzdWJuKHBhdHRlcm4sIHJlcGxhY2VtZW50LCBzKToKICAgICByZXR1cm4gX3Jl
Z2V4cF9jb21waWxlX2NhY2hlW3BhdHRlcm5dLnN1Ym4ocmVwbGFjZW1lbnQsIHMpCiAKIAorZGVm
IHVwX3RvX3VubWF0Y2hlZF9jbG9zaW5nX3BhcmVuKHMpOgorICAgICIiIlNwbGl0cyBhIHN0cmlu
ZyBpbnRvIHR3byBwYXJ0cyB1cCB0byBmaXJzdCB1bm1hdGNoZWQgJyknLgorCisgICAgQXJnczoK
KyAgICAgIHM6IGEgc3RyaW5nIHdoaWNoIGlzIGEgc3Vic3RyaW5nIG9mIGxpbmUgYWZ0ZXIgJygn
CisgICAgICAoZS5nLiwgImEgPT0gKGIgKyBjKSkiKS4KKworICAgIFJldHVybnM6CisgICAgICBB
IHBhaXIgb2Ygc3RyaW5ncyAocHJlZml4IGJlZm9yZSBmaXJzdCB1bm1hdGNoZWQgJyknLAorICAg
ICAgcmVtaW5kZXIgb2YgcyBhZnRlciBmaXJzdCB1bm1hdGNoZWQgJyknKSwgZS5nLiwKKyAgICAg
IHVwX3RvX3VubWF0Y2hlZF9jbG9zaW5nX3BhcmVuKCJhID09IChiICsgYykpIHsgIikKKyAgICAg
IHJldHVybnMgImEgPT0gKGIgKyBjKSIsICIgeyIuCisgICAgICBSZXR1cm5zIE5vbmUsIE5vbmUg
aWYgdGhlcmUgaXMgbm8gdW5tYXRjaGVkICcpJworCisgICAgIiIiCisgICAgaSA9IDEKKyAgICBm
b3IgcG9zLCBjIGluIGVudW1lcmF0ZShzKToKKyAgICAgIGlmIGMgPT0gJygnOgorICAgICAgICBp
ICs9IDEKKyAgICAgIGVsaWYgYyA9PSAnKSc6CisgICAgICAgIGkgLT0gMQorICAgICAgICBpZiBp
ID09IDA6CisgICAgICAgICAgcmV0dXJuIHNbOnBvc10sIHNbcG9zICsgMTpdCisgICAgcmV0dXJu
IE5vbmUsIE5vbmUKKwogY2xhc3MgX0luY2x1ZGVTdGF0ZShkaWN0KToKICAgICAiIiJUcmFja3Mg
bGluZSBudW1iZXJzIGZvciBpbmNsdWRlcywgYW5kIHRoZSBvcmRlciBpbiB3aGljaCBpbmNsdWRl
cyBhcHBlYXIuCiAKQEAgLTEzMDksMTkgKzEzMzQsMzIgQEAgZGVmIGNoZWNrX3NwYWNpbmcoZmls
ZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgogICAgICMgdGhlcmUgc2hv
dWxkIGVpdGhlciBiZSB6ZXJvIG9yIG9uZSBzcGFjZXMgaW5zaWRlIHRoZSBwYXJlbnMuCiAgICAg
IyBXZSBkb24ndCB3YW50OiAiaWYgKCBmb28pIiBvciAiaWYgKCBmb28gICApIi4KICAgICAjIEV4
Y2VwdGlvbjogImZvciAoIDsgZm9vOyBiYXIpIiBhbmQgImZvciAoZm9vOyBiYXI7ICkiIGFyZSBh
bGxvd2VkLgotICAgIG1hdGNoZWQgPSBzZWFyY2gocidcYihpZnxmb3J8Zm9yZWFjaHx3aGlsZXxz
d2l0Y2gpXHMqXCgoWyBdKikoLikuKlteIF0rKFsgXSopXClccyp7XHMqJCcsCi0gICAgICAgICAg
ICAgICAgICAgICBsaW5lKQorICAgIG1hdGNoZWQgPSBzZWFyY2gocidcYig/UDxzdGF0ZW1lbnQ+
aWZ8Zm9yfGZvcmVhY2h8d2hpbGV8c3dpdGNoKVxzKlwoKD9QPHJlbWluZGVyPi4qKSQnLCBsaW5l
KQogICAgIGlmIG1hdGNoZWQ6Ci0gICAgICAgIGlmIGxlbihtYXRjaGVkLmdyb3VwKDIpKSAhPSBs
ZW4obWF0Y2hlZC5ncm91cCg0KSk6Ci0gICAgICAgICAgICBpZiBub3QgKG1hdGNoZWQuZ3JvdXAo
MykgPT0gJzsnCi0gICAgICAgICAgICAgICAgICAgIGFuZCBsZW4obWF0Y2hlZC5ncm91cCgyKSkg
PT0gMSArIGxlbihtYXRjaGVkLmdyb3VwKDQpKQotICAgICAgICAgICAgICAgICAgICBvciBub3Qg
bWF0Y2hlZC5ncm91cCgyKSBhbmQgc2VhcmNoKHInXGJmb3JccypcKC4qOyBcKScsIGxpbmUpKToK
LSAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvcGFyZW5zJywg
NSwKLSAgICAgICAgICAgICAgICAgICAgICAnTWlzbWF0Y2hpbmcgc3BhY2VzIGluc2lkZSAoKSBp
biAlcycgJSBtYXRjaGVkLmdyb3VwKDEpKQotICAgICAgICBpZiBub3QgbGVuKG1hdGNoZWQuZ3Jv
dXAoMikpIGluIFswLCAxXToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVz
cGFjZS9wYXJlbnMnLCA1LAotICAgICAgICAgICAgICAgICAgJ1Nob3VsZCBoYXZlIHplcm8gb3Ig
b25lIHNwYWNlcyBpbnNpZGUgKCBhbmQgKSBpbiAlcycgJQotICAgICAgICAgICAgICAgICAgbWF0
Y2hlZC5ncm91cCgxKSkKKyAgICAgICAgc3RhdGVtZW50ID0gbWF0Y2hlZC5ncm91cCgnc3RhdGVt
ZW50JykKKyAgICAgICAgY29uZGl0aW9uLCByZXN0ID0gdXBfdG9fdW5tYXRjaGVkX2Nsb3Npbmdf
cGFyZW4obWF0Y2hlZC5ncm91cCgncmVtaW5kZXInKSkKKyAgICAgICAgaWYgY29uZGl0aW9uIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgY29uZGl0aW9uX21hdGNoID0gc2VhcmNoKHInKD9QPGxl
YWRpbmc+WyBdKikoP1A8c2VwYXJhdG9yPi4pLipbXiBdKyg/UDx0cmFpbGluZz5bIF0qKScsIGNv
bmRpdGlvbikKKyAgICAgICAgICAgIGlmIGNvbmRpdGlvbl9tYXRjaDoKKyAgICAgICAgICAgICAg
ICBuX2xlYWRpbmcgPSBsZW4oY29uZGl0aW9uX21hdGNoLmdyb3VwKCdsZWFkaW5nJykpCisgICAg
ICAgICAgICAgICAgbl90cmFpbGluZyA9IGxlbihjb25kaXRpb25fbWF0Y2guZ3JvdXAoJ3RyYWls
aW5nJykpCisgICAgICAgICAgICAgICAgaWYgbl9sZWFkaW5nICE9IG5fdHJhaWxpbmc6CisgICAg
ICAgICAgICAgICAgICAgIGZvcl9leGNlcHRpb24gPSBzdGF0ZW1lbnQgPT0gJ2ZvcicgYW5kICgK
KyAgICAgICAgICAgICAgICAgICAgICAgIChjb25kaXRpb24uc3RhcnRzd2l0aCgnIDsnKSBhbmQg
bl90cmFpbGluZyA9PSAwKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbi5l
bmRzd2l0aCgnOyAnKSAgIGFuZCBuX2xlYWRpbmcgPT0gMCkpCisgICAgICAgICAgICAgICAgICAg
IGlmIG5vdCBmb3JfZXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IobGlu
ZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVucycsIDUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnTWlzbWF0Y2hpbmcgc3BhY2VzIGluc2lkZSAoKSBpbiAlcycgJSBzdGF0ZW1lbnQp
CisgICAgICAgICAgICAgICAgaWYgbl9sZWFkaW5nID4gMToKKyAgICAgICAgICAgICAgICAgICAg
ZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVucycsIDUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICdTaG91bGQgaGF2ZSB6ZXJvIG9yIG9uZSBzcGFjZXMgaW5zaWRlICggYW5k
ICkgaW4gJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50KQorCisgICAg
ICAgICAgICAjIERvIG5vdCBjaGVjayBmb3IgbW9yZSB0aGFuIG9uZSBjb21tYW5kIGluIG1hY3Jv
cworICAgICAgICAgICAgaW5fbWFjcm8gPSBtYXRjaChyJ1xzKiNkZWZpbmUnLCBsaW5lKQorICAg
ICAgICAgICAgaWYgbm90IGluX21hY3JvIGFuZCBub3QgbWF0Y2gocicoKFxzKntccyp9Pyl8KFxz
Kjs/KSlccypcXD8kJywgcmVzdCk6CisgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIs
ICd3aGl0ZXNwYWNlL3BhcmVucycsIDQsCisgICAgICAgICAgICAgICAgICAgICAgJ01vcmUgdGhh
biBvbmUgY29tbWFuZCBvbiB0aGUgc2FtZSBsaW5lIGluICVzJyAlIHN0YXRlbWVudCkKIAogICAg
ICMgWW91IHNob3VsZCBhbHdheXMgaGF2ZSBhIHNwYWNlIGFmdGVyIGEgY29tbWEgKGVpdGhlciBh
cyBmbiBhcmcgb3Igb3BlcmF0b3IpCiAgICAgaWYgc2VhcmNoKHInLFteXHNdJywgbGluZSk6CmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMv
Y3BwX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9j
ZXNzb3JzL2NwcF91bml0dGVzdC5weQppbmRleCA1NjhhYzE2Li4yYWEzOGYzIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwX3VuaXR0
ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29y
cy9jcHBfdW5pdHRlc3QucHkKQEAgLTExNjcsMTAgKzExNjcsMTYgQEAgY2xhc3MgQ3BwU3R5bGVU
ZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0
ZXNwYWNlL3BhcmVuc10gWzVdJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChmb287
IGJhOyBiYXIgKSB7JywgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4gZm9yJwogICAg
ICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzVdJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICgoZm9vKTsgKGJhKTsgKGJhcikgKSB7JywgJ01pc21h
dGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4gZm9yJworICAgICAgICAgICAgICAgICAgICAgICAg
ICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzVdJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
Zm9yICg7IGZvbzsgYmFyKSB7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAo
OyAoZm9vKTsgKGJhcikpIHsnLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICgg
OyBmb287IGJhcikgeycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKCA7IChm
b28pOyAoYmFyKSkgeycsICcnKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKCA7IGZv
bzsgYmFyICkgeycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKCA7IChmb28p
OyAoYmFyKSApIHsnLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChmb287IGJh
cjsgKSB7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoKGZvbyk7IChiYXIp
OyApIHsnLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yZWFjaCAoZm9vLCBmb29z
ICkgeycsICdNaXNtYXRjaGluZyBzcGFjZXMgaW5zaWRlICgpIGluIGZvcmVhY2gnCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0nKQogICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdmb3JlYWNoICggZm9vLCBmb29zKSB7JywgJ01pc21hdGNoaW5nIHNw
YWNlcyBpbnNpZGUgKCkgaW4gZm9yZWFjaCcKQEAgLTI5OTgsMTIgKzMwMDQsMTUgQEAgY2xhc3Mg
V2ViS2l0U3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICAgICAgJyAgICAgICAg
ZG9JdCgpO1xuJywKICAgICAgICAgICAgICcnKQogICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoCisgICAgICAgICAgICAnICAgIGlmIChjb25kaXRpb24pIFxcXG4nCisgICAgICAg
ICAgICAnICAgICAgICBkb0l0KCk7XG4nLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKICAgICAgICAgICAgICcgICAgeCsrOyB5Kys7JywKICAg
ICAgICAgICAgICdNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24gdGhlIHNhbWUgbGluZSAgW3doaXRl
c3BhY2UvbmV3bGluZV0gWzRdJykKLSAgICAgICAgIyBGSVhNRTogTWFrZSB0aGlzIGZhaWwuCi0g
ICAgICAgICMgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAjICAgICAnICAg
IGlmIChjb25kaXRpb24pIGRvSXQoKTtcbicsCi0gICAgICAgICMgICAgICcnKQorICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnICAgIGlmIChjb25kaXRp
b24pIGRvSXQoKTtcbicsCisgICAgICAgICAgICAnTW9yZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRo
ZSBzYW1lIGxpbmUgaW4gaWYgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzRdJykKIAogICAgICAgICAj
IDIuIEFuIGVsc2Ugc3RhdGVtZW50IHNob3VsZCBnbyBvbiB0aGUgc2FtZSBsaW5lIGFzIGEgcHJl
Y2VkaW5nCiAgICAgICAgICMgICBjbG9zZSBicmFjZSBpZiBvbmUgaXMgcHJlc2VudCwgZWxzZSBp
dCBzaG91bGQgbGluZSB1cCB3aXRoIHRoZQpAQCAtMzAzNSw2ICszMDQ0LDEzIEBAIGNsYXNzIFdl
YktpdFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgICAgICcjZGVmaW5lIFRF
U1RfQVNTRVJUKGV4cHJlc3Npb24pIGRvIHsgaWYgKCEoZXhwcmVzc2lvbikpIHsgVGVzdHNDb250
cm9sbGVyOjpzaGFyZWQoKS50ZXN0RmFpbGVkKF9fRklMRV9fLCBfX0xJTkVfXywgI2V4cHJlc3Np
b24pOyByZXR1cm47IH0gfSB3aGlsZSAoMClcbicsCiAgICAgICAgICAgICAnJykKICAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJyNkZWZpbmUgVEVTVF9B
U1NFUlQoZXhwcmVzc2lvbikgZG8geyBpZiAoICEoZXhwcmVzc2lvbikpIHsgVGVzdHNDb250cm9s
bGVyOjpzaGFyZWQoKS50ZXN0RmFpbGVkKF9fRklMRV9fLCBfX0xJTkVfXywgI2V4cHJlc3Npb24p
OyByZXR1cm47IH0gfSB3aGlsZSAoMClcbicsCisgICAgICAgICAgICAnTWlzbWF0Y2hpbmcgc3Bh
Y2VzIGluc2lkZSAoKSBpbiBpZiAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0nKQorICAgICAgICAj
IEZJWE1FOiBjdXJyZW50bHkgd2Ugb25seSBjaGVjayBmaXJzdCBjb25kaXRpb25hbCwgc28gd2Ug
Y2Fubm90IGRldGVjdCBlcnJvcnMgaW4gbmV4dCBvbmVzLgorICAgICAgICAjIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgIyAgICAgJyNkZWZpbmUgVEVTVF9BU1NFUlQoZXhw
cmVzc2lvbikgZG8geyBpZiAoIShleHByZXNzaW9uKSkgeyBUZXN0c0NvbnRyb2xsZXI6OnNoYXJl
ZCgpLnRlc3RGYWlsZWQoX19GSUxFX18sIF9fTElORV9fLCAjZXhwcmVzc2lvbik7IHJldHVybjsg
fSB9IHdoaWxlICgwIClcbicsCisgICAgICAgICMgICAgICdNaXNtYXRjaGluZyBzcGFjZXMgaW5z
aWRlICgpIGluIGlmICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X211bHRpX2xpbmVfbGludCgKICAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKSB7XG4nCiAg
ICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nKCk7XG4nCiAgICAgICAgICAgICAnICAgIGRvU29t
ZXRoaW5nQWdhaW4oKTtcbicKQEAgLTMwNDcsMTMgKzMwNjMsMTQgQEAgY2xhc3MgV2ViS2l0U3R5
bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCiAgICAgICAgICAgICAnaWYgKGNvbmRpdGlvbikgZG9Tb21ldGhpbmcoKTsgZWxzZSBk
b1NvbWV0aGluZ0Vsc2UoKTtcbicsCiAgICAgICAgICAgICBbJ01vcmUgdGhhbiBvbmUgY29tbWFu
ZCBvbiB0aGUgc2FtZSBsaW5lICBbd2hpdGVzcGFjZS9uZXdsaW5lXSBbNF0nLAotICAgICAgICAg
ICAgICdFbHNlIGNsYXVzZSBzaG91bGQgbmV2ZXIgYmUgb24gc2FtZSBsaW5lIGFzIGVsc2UgKHVz
ZSAyIGxpbmVzKSAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJ10pCi0gICAgICAgICMgRklYTUU6
IE1ha2UgdGhpcyBmYWlsLgotICAgICAgICAjIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
LSAgICAgICAgIyAgICAgJ2lmIChjb25kaXRpb24pIGRvU29tZXRoaW5nKCk7IGVsc2Uge1xuJwot
ICAgICAgICAjICAgICAnICAgIGRvU29tZXRoaW5nRWxzZSgpO1xuJwotICAgICAgICAjICAgICAn
fVxuJywKLSAgICAgICAgIyAgICAgJycpCisgICAgICAgICAgICAgJ0Vsc2UgY2xhdXNlIHNob3Vs
ZCBuZXZlciBiZSBvbiBzYW1lIGxpbmUgYXMgZWxzZSAodXNlIDIgbGluZXMpICBbd2hpdGVzcGFj
ZS9uZXdsaW5lXSBbNF0nLAorICAgICAgICAgICAgICdNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24g
dGhlIHNhbWUgbGluZSBpbiBpZiAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNF0nXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2lmIChjb25kaXRpb24p
IGRvU29tZXRoaW5nKCk7IGVsc2Uge1xuJworICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZ0Vs
c2UoKTtcbicKKyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAgWydNb3JlIHRoYW4gb25l
IGNvbW1hbmQgb24gdGhlIHNhbWUgbGluZSBpbiBpZiAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNF0n
LAorICAgICAgICAgICAgICdPbmUgbGluZSBjb250cm9sIGNsYXVzZXMgc2hvdWxkIG5vdCB1c2Ug
YnJhY2VzLiAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nXSkKIAogICAgICAgICAjIDMuIEFuIGVs
c2UgaWYgc3RhdGVtZW50IHNob3VsZCBiZSB3cml0dGVuIGFzIGFuIGlmIHN0YXRlbWVudAogICAg
ICAgICAjICAgIHdoZW4gdGhlIHByaW9yIGlmIGNvbmNsdWRlcyB3aXRoIGEgcmV0dXJuIHN0YXRl
bWVudC4KZGlmZiAtLWdpdCBhL3Jlc3VsdCBiL3Jlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5lNjlkZTI5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47555</attachid>
            <date>2010-01-27 11:56:52 -0800</date>
            <delta_ts>2010-01-28 00:29:10 -0800</delta_ts>
            <desc>Removing traces of incorrect redirects</desc>
            <filename>bug-34173-20100127225650.patch</filename>
            <type>text/plain</type>
            <size>9120</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBmZGNmMDNjLi45NjFkYmUxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDEt
MjcgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXByb3ZlIHRyZWF0bWVudCBvZiBjb25k
aXRpb25zIGFuZCByZXN0IG9mIHRoZSBsaW5lIGZvciBpZiwgZWxzZSwgc3dpdGNoIGFuZCBhbGlr
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MTcz
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZV91bml0dGVzdC5weToKKwogMjAx
MC0wMS0yNyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEFkZGluZyBteXNlbGYgYXMgY29tbWl0dGVyLiBObyByZXZpZXcgbmVjZXNzYXJ5LgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2Nw
cC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHAu
cHkKaW5kZXggOTUzNjBmNy4uMGFlMmY2YiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2NwcC5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwLnB5CkBAIC0xNTIsNiArMTUyLDMxIEBA
IGRlZiBzdWJuKHBhdHRlcm4sIHJlcGxhY2VtZW50LCBzKToKICAgICByZXR1cm4gX3JlZ2V4cF9j
b21waWxlX2NhY2hlW3BhdHRlcm5dLnN1Ym4ocmVwbGFjZW1lbnQsIHMpCiAKIAorZGVmIHVwX3Rv
X3VubWF0Y2hlZF9jbG9zaW5nX3BhcmVuKHMpOgorICAgICIiIlNwbGl0cyBhIHN0cmluZyBpbnRv
IHR3byBwYXJ0cyB1cCB0byBmaXJzdCB1bm1hdGNoZWQgJyknLgorCisgICAgQXJnczoKKyAgICAg
IHM6IGEgc3RyaW5nIHdoaWNoIGlzIGEgc3Vic3RyaW5nIG9mIGxpbmUgYWZ0ZXIgJygnCisgICAg
ICAoZS5nLiwgImEgPT0gKGIgKyBjKSkiKS4KKworICAgIFJldHVybnM6CisgICAgICBBIHBhaXIg
b2Ygc3RyaW5ncyAocHJlZml4IGJlZm9yZSBmaXJzdCB1bm1hdGNoZWQgJyknLAorICAgICAgcmVt
aW5kZXIgb2YgcyBhZnRlciBmaXJzdCB1bm1hdGNoZWQgJyknKSwgZS5nLiwKKyAgICAgIHVwX3Rv
X3VubWF0Y2hlZF9jbG9zaW5nX3BhcmVuKCJhID09IChiICsgYykpIHsgIikKKyAgICAgIHJldHVy
bnMgImEgPT0gKGIgKyBjKSIsICIgeyIuCisgICAgICBSZXR1cm5zIE5vbmUsIE5vbmUgaWYgdGhl
cmUgaXMgbm8gdW5tYXRjaGVkICcpJworCisgICAgIiIiCisgICAgaSA9IDEKKyAgICBmb3IgcG9z
LCBjIGluIGVudW1lcmF0ZShzKToKKyAgICAgIGlmIGMgPT0gJygnOgorICAgICAgICBpICs9IDEK
KyAgICAgIGVsaWYgYyA9PSAnKSc6CisgICAgICAgIGkgLT0gMQorICAgICAgICBpZiBpID09IDA6
CisgICAgICAgICAgcmV0dXJuIHNbOnBvc10sIHNbcG9zICsgMTpdCisgICAgcmV0dXJuIE5vbmUs
IE5vbmUKKwogY2xhc3MgX0luY2x1ZGVTdGF0ZShkaWN0KToKICAgICAiIiJUcmFja3MgbGluZSBu
dW1iZXJzIGZvciBpbmNsdWRlcywgYW5kIHRoZSBvcmRlciBpbiB3aGljaCBpbmNsdWRlcyBhcHBl
YXIuCiAKQEAgLTEzMDksMTkgKzEzMzQsMzIgQEAgZGVmIGNoZWNrX3NwYWNpbmcoZmlsZW5hbWUs
IGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgogICAgICMgdGhlcmUgc2hvdWxkIGVp
dGhlciBiZSB6ZXJvIG9yIG9uZSBzcGFjZXMgaW5zaWRlIHRoZSBwYXJlbnMuCiAgICAgIyBXZSBk
b24ndCB3YW50OiAiaWYgKCBmb28pIiBvciAiaWYgKCBmb28gICApIi4KICAgICAjIEV4Y2VwdGlv
bjogImZvciAoIDsgZm9vOyBiYXIpIiBhbmQgImZvciAoZm9vOyBiYXI7ICkiIGFyZSBhbGxvd2Vk
LgotICAgIG1hdGNoZWQgPSBzZWFyY2gocidcYihpZnxmb3J8Zm9yZWFjaHx3aGlsZXxzd2l0Y2gp
XHMqXCgoWyBdKikoLikuKlteIF0rKFsgXSopXClccyp7XHMqJCcsCi0gICAgICAgICAgICAgICAg
ICAgICBsaW5lKQorICAgIG1hdGNoZWQgPSBzZWFyY2gocidcYig/UDxzdGF0ZW1lbnQ+aWZ8Zm9y
fGZvcmVhY2h8d2hpbGV8c3dpdGNoKVxzKlwoKD9QPHJlbWluZGVyPi4qKSQnLCBsaW5lKQogICAg
IGlmIG1hdGNoZWQ6Ci0gICAgICAgIGlmIGxlbihtYXRjaGVkLmdyb3VwKDIpKSAhPSBsZW4obWF0
Y2hlZC5ncm91cCg0KSk6Ci0gICAgICAgICAgICBpZiBub3QgKG1hdGNoZWQuZ3JvdXAoMykgPT0g
JzsnCi0gICAgICAgICAgICAgICAgICAgIGFuZCBsZW4obWF0Y2hlZC5ncm91cCgyKSkgPT0gMSAr
IGxlbihtYXRjaGVkLmdyb3VwKDQpKQotICAgICAgICAgICAgICAgICAgICBvciBub3QgbWF0Y2hl
ZC5ncm91cCgyKSBhbmQgc2VhcmNoKHInXGJmb3JccypcKC4qOyBcKScsIGxpbmUpKToKLSAgICAg
ICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvcGFyZW5zJywgNSwKLSAg
ICAgICAgICAgICAgICAgICAgICAnTWlzbWF0Y2hpbmcgc3BhY2VzIGluc2lkZSAoKSBpbiAlcycg
JSBtYXRjaGVkLmdyb3VwKDEpKQotICAgICAgICBpZiBub3QgbGVuKG1hdGNoZWQuZ3JvdXAoMikp
IGluIFswLCAxXToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9w
YXJlbnMnLCA1LAotICAgICAgICAgICAgICAgICAgJ1Nob3VsZCBoYXZlIHplcm8gb3Igb25lIHNw
YWNlcyBpbnNpZGUgKCBhbmQgKSBpbiAlcycgJQotICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5n
cm91cCgxKSkKKyAgICAgICAgc3RhdGVtZW50ID0gbWF0Y2hlZC5ncm91cCgnc3RhdGVtZW50JykK
KyAgICAgICAgY29uZGl0aW9uLCByZXN0ID0gdXBfdG9fdW5tYXRjaGVkX2Nsb3NpbmdfcGFyZW4o
bWF0Y2hlZC5ncm91cCgncmVtaW5kZXInKSkKKyAgICAgICAgaWYgY29uZGl0aW9uIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgY29uZGl0aW9uX21hdGNoID0gc2VhcmNoKHInKD9QPGxlYWRpbmc+
WyBdKikoP1A8c2VwYXJhdG9yPi4pLipbXiBdKyg/UDx0cmFpbGluZz5bIF0qKScsIGNvbmRpdGlv
bikKKyAgICAgICAgICAgIGlmIGNvbmRpdGlvbl9tYXRjaDoKKyAgICAgICAgICAgICAgICBuX2xl
YWRpbmcgPSBsZW4oY29uZGl0aW9uX21hdGNoLmdyb3VwKCdsZWFkaW5nJykpCisgICAgICAgICAg
ICAgICAgbl90cmFpbGluZyA9IGxlbihjb25kaXRpb25fbWF0Y2guZ3JvdXAoJ3RyYWlsaW5nJykp
CisgICAgICAgICAgICAgICAgaWYgbl9sZWFkaW5nICE9IG5fdHJhaWxpbmc6CisgICAgICAgICAg
ICAgICAgICAgIGZvcl9leGNlcHRpb24gPSBzdGF0ZW1lbnQgPT0gJ2ZvcicgYW5kICgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIChjb25kaXRpb24uc3RhcnRzd2l0aCgnIDsnKSBhbmQgbl90cmFp
bGluZyA9PSAwKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbi5lbmRzd2l0
aCgnOyAnKSAgIGFuZCBuX2xlYWRpbmcgPT0gMCkpCisgICAgICAgICAgICAgICAgICAgIGlmIG5v
dCBmb3JfZXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1i
ZXIsICd3aGl0ZXNwYWNlL3BhcmVucycsIDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnTWlzbWF0Y2hpbmcgc3BhY2VzIGluc2lkZSAoKSBpbiAlcycgJSBzdGF0ZW1lbnQpCisgICAg
ICAgICAgICAgICAgaWYgbl9sZWFkaW5nID4gMToKKyAgICAgICAgICAgICAgICAgICAgZXJyb3Io
bGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVucycsIDUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICdTaG91bGQgaGF2ZSB6ZXJvIG9yIG9uZSBzcGFjZXMgaW5zaWRlICggYW5kICkgaW4g
JXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50KQorCisgICAgICAgICAg
ICAjIERvIG5vdCBjaGVjayBmb3IgbW9yZSB0aGFuIG9uZSBjb21tYW5kIGluIG1hY3JvcworICAg
ICAgICAgICAgaW5fbWFjcm8gPSBtYXRjaChyJ1xzKiNkZWZpbmUnLCBsaW5lKQorICAgICAgICAg
ICAgaWYgbm90IGluX21hY3JvIGFuZCBub3QgbWF0Y2gocicoKFxzKntccyp9Pyl8KFxzKjs/KSlc
cypcXD8kJywgcmVzdCk6CisgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0
ZXNwYWNlL3BhcmVucycsIDQsCisgICAgICAgICAgICAgICAgICAgICAgJ01vcmUgdGhhbiBvbmUg
Y29tbWFuZCBvbiB0aGUgc2FtZSBsaW5lIGluICVzJyAlIHN0YXRlbWVudCkKIAogICAgICMgWW91
IHNob3VsZCBhbHdheXMgaGF2ZSBhIHNwYWNlIGFmdGVyIGEgY29tbWEgKGVpdGhlciBhcyBmbiBh
cmcgb3Igb3BlcmF0b3IpCiAgICAgaWYgc2VhcmNoKHInLFteXHNdJywgbGluZSk6CmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwX3Vu
aXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3Jz
L2NwcF91bml0dGVzdC5weQppbmRleCA1NjhhYzE2Li4yYWEzOGYzIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwX3VuaXR0ZXN0LnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHBf
dW5pdHRlc3QucHkKQEAgLTExNjcsMTAgKzExNjcsMTYgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENw
cFN0eWxlVGVzdEJhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNl
L3BhcmVuc10gWzVdJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChmb287IGJhOyBi
YXIgKSB7JywgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4gZm9yJwogICAgICAgICAg
ICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzVdJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnZm9yICgoZm9vKTsgKGJhKTsgKGJhcikgKSB7JywgJ01pc21hdGNoaW5n
IHNwYWNlcyBpbnNpZGUgKCkgaW4gZm9yJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3
aGl0ZXNwYWNlL3BhcmVuc10gWzVdJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICg7
IGZvbzsgYmFyKSB7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoOyAoZm9v
KTsgKGJhcikpIHsnLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICggOyBmb287
IGJhcikgeycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKCA7IChmb28pOyAo
YmFyKSkgeycsICcnKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKCA7IGZvbzsgYmFy
ICkgeycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKCA7IChmb28pOyAoYmFy
KSApIHsnLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChmb287IGJhcjsgKSB7
JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoKGZvbyk7IChiYXIpOyApIHsn
LCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yZWFjaCAoZm9vLCBmb29zICkgeycs
ICdNaXNtYXRjaGluZyBzcGFjZXMgaW5zaWRlICgpIGluIGZvcmVhY2gnCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0nKQogICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdmb3JlYWNoICggZm9vLCBmb29zKSB7JywgJ01pc21hdGNoaW5nIHNwYWNlcyBp
bnNpZGUgKCkgaW4gZm9yZWFjaCcKQEAgLTI5OTgsMTIgKzMwMDQsMTUgQEAgY2xhc3MgV2ViS2l0
U3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICAgICAgJyAgICAgICAgZG9JdCgp
O1xuJywKICAgICAgICAgICAgICcnKQogICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoCisgICAgICAgICAgICAnICAgIGlmIChjb25kaXRpb24pIFxcXG4nCisgICAgICAgICAgICAn
ICAgICAgICBkb0l0KCk7XG4nLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKICAgICAgICAgICAgICcgICAgeCsrOyB5Kys7JywKICAgICAgICAg
ICAgICdNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24gdGhlIHNhbWUgbGluZSAgW3doaXRlc3BhY2Uv
bmV3bGluZV0gWzRdJykKLSAgICAgICAgIyBGSVhNRTogTWFrZSB0aGlzIGZhaWwuCi0gICAgICAg
ICMgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAjICAgICAnICAgIGlmIChj
b25kaXRpb24pIGRvSXQoKTtcbicsCi0gICAgICAgICMgICAgICcnKQorICAgICAgICBzZWxmLmFz
c2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnICAgIGlmIChjb25kaXRpb24pIGRv
SXQoKTtcbicsCisgICAgICAgICAgICAnTW9yZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRoZSBzYW1l
IGxpbmUgaW4gaWYgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzRdJykKIAogICAgICAgICAjIDIuIEFu
IGVsc2Ugc3RhdGVtZW50IHNob3VsZCBnbyBvbiB0aGUgc2FtZSBsaW5lIGFzIGEgcHJlY2VkaW5n
CiAgICAgICAgICMgICBjbG9zZSBicmFjZSBpZiBvbmUgaXMgcHJlc2VudCwgZWxzZSBpdCBzaG91
bGQgbGluZSB1cCB3aXRoIHRoZQpAQCAtMzAzNSw2ICszMDQ0LDEzIEBAIGNsYXNzIFdlYktpdFN0
eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgICAgICcjZGVmaW5lIFRFU1RfQVNT
RVJUKGV4cHJlc3Npb24pIGRvIHsgaWYgKCEoZXhwcmVzc2lvbikpIHsgVGVzdHNDb250cm9sbGVy
OjpzaGFyZWQoKS50ZXN0RmFpbGVkKF9fRklMRV9fLCBfX0xJTkVfXywgI2V4cHJlc3Npb24pOyBy
ZXR1cm47IH0gfSB3aGlsZSAoMClcbicsCiAgICAgICAgICAgICAnJykKICAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJyNkZWZpbmUgVEVTVF9BU1NFUlQo
ZXhwcmVzc2lvbikgZG8geyBpZiAoICEoZXhwcmVzc2lvbikpIHsgVGVzdHNDb250cm9sbGVyOjpz
aGFyZWQoKS50ZXN0RmFpbGVkKF9fRklMRV9fLCBfX0xJTkVfXywgI2V4cHJlc3Npb24pOyByZXR1
cm47IH0gfSB3aGlsZSAoMClcbicsCisgICAgICAgICAgICAnTWlzbWF0Y2hpbmcgc3BhY2VzIGlu
c2lkZSAoKSBpbiBpZiAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0nKQorICAgICAgICAjIEZJWE1F
OiBjdXJyZW50bHkgd2Ugb25seSBjaGVjayBmaXJzdCBjb25kaXRpb25hbCwgc28gd2UgY2Fubm90
IGRldGVjdCBlcnJvcnMgaW4gbmV4dCBvbmVzLgorICAgICAgICAjIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludCgKKyAgICAgICAgIyAgICAgJyNkZWZpbmUgVEVTVF9BU1NFUlQoZXhwcmVzc2lv
bikgZG8geyBpZiAoIShleHByZXNzaW9uKSkgeyBUZXN0c0NvbnRyb2xsZXI6OnNoYXJlZCgpLnRl
c3RGYWlsZWQoX19GSUxFX18sIF9fTElORV9fLCAjZXhwcmVzc2lvbik7IHJldHVybjsgfSB9IHdo
aWxlICgwIClcbicsCisgICAgICAgICMgICAgICdNaXNtYXRjaGluZyBzcGFjZXMgaW5zaWRlICgp
IGluIGlmICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKICAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKSB7XG4nCiAgICAgICAg
ICAgICAnICAgIGRvU29tZXRoaW5nKCk7XG4nCiAgICAgICAgICAgICAnICAgIGRvU29tZXRoaW5n
QWdhaW4oKTtcbicKQEAgLTMwNDcsMTMgKzMwNjMsMTQgQEAgY2xhc3MgV2ViS2l0U3R5bGVUZXN0
KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQo
CiAgICAgICAgICAgICAnaWYgKGNvbmRpdGlvbikgZG9Tb21ldGhpbmcoKTsgZWxzZSBkb1NvbWV0
aGluZ0Vsc2UoKTtcbicsCiAgICAgICAgICAgICBbJ01vcmUgdGhhbiBvbmUgY29tbWFuZCBvbiB0
aGUgc2FtZSBsaW5lICBbd2hpdGVzcGFjZS9uZXdsaW5lXSBbNF0nLAotICAgICAgICAgICAgICdF
bHNlIGNsYXVzZSBzaG91bGQgbmV2ZXIgYmUgb24gc2FtZSBsaW5lIGFzIGVsc2UgKHVzZSAyIGxp
bmVzKSAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJ10pCi0gICAgICAgICMgRklYTUU6IE1ha2Ug
dGhpcyBmYWlsLgotICAgICAgICAjIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAg
ICAgIyAgICAgJ2lmIChjb25kaXRpb24pIGRvU29tZXRoaW5nKCk7IGVsc2Uge1xuJwotICAgICAg
ICAjICAgICAnICAgIGRvU29tZXRoaW5nRWxzZSgpO1xuJwotICAgICAgICAjICAgICAnfVxuJywK
LSAgICAgICAgIyAgICAgJycpCisgICAgICAgICAgICAgJ0Vsc2UgY2xhdXNlIHNob3VsZCBuZXZl
ciBiZSBvbiBzYW1lIGxpbmUgYXMgZWxzZSAodXNlIDIgbGluZXMpICBbd2hpdGVzcGFjZS9uZXds
aW5lXSBbNF0nLAorICAgICAgICAgICAgICdNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24gdGhlIHNh
bWUgbGluZSBpbiBpZiAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNF0nXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2lmIChjb25kaXRpb24pIGRvU29t
ZXRoaW5nKCk7IGVsc2Uge1xuJworICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZ0Vsc2UoKTtc
bicKKyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAgWydNb3JlIHRoYW4gb25lIGNvbW1h
bmQgb24gdGhlIHNhbWUgbGluZSBpbiBpZiAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNF0nLAorICAg
ICAgICAgICAgICdPbmUgbGluZSBjb250cm9sIGNsYXVzZXMgc2hvdWxkIG5vdCB1c2UgYnJhY2Vz
LiAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nXSkKIAogICAgICAgICAjIDMuIEFuIGVsc2UgaWYg
c3RhdGVtZW50IHNob3VsZCBiZSB3cml0dGVuIGFzIGFuIGlmIHN0YXRlbWVudAogICAgICAgICAj
ICAgIHdoZW4gdGhlIHByaW9yIGlmIGNvbmNsdWRlcyB3aXRoIGEgcmV0dXJuIHN0YXRlbWVudC4K
</data>

          </attachment>
      

    </bug>

</bugzilla>