<?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>50635</bug_id>
          
          <creation_ts>2010-12-07 09:37:58 -0800</creation_ts>
          <short_desc>[new-run-webkit-tests] expectations parsing is slow</short_desc>
          <delta_ts>2017-02-14 05:08:47 -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>PC</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>
          <dependson>168304</dependson>
          <blocked>50681</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alex</cc>
    
    <cc>annulen</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>318257</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-12-07 09:37:58 -0800</bug_when>
    <thetext>In the _read method of the TestExpectationsFile class in test_expectations.py the full list of tests is iterated once for each expectation in _expand_tests(). This could be optimized by checking if the expectation is a test case file or a test category. In the first case the list iteration can be avoided.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318264</commentid>
    <comment_count>1</comment_count>
      <attachid>75825</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-12-07 09:47:49 -0800</bug_when>
    <thetext>Created attachment 75825
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318292</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 10:21:46 -0800</bug_when>
    <thetext>Attachment 75825 did not pass style-queue:

Failed to run &quot;[u&apos;git&apos;, u&apos;reset&apos;, u&apos;--hard&apos;, u&apos;refs/remotes/trunk&apos;]&quot; exit_code: 128
error: Could not write new index file.
fatal: Could not reset index file to revision &apos;refs/remotes/trunk&apos;.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318344</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 11:22:55 -0800</bug_when>
    <thetext>Attachment 75825 did not pass style-queue:

Failed to run &quot;[u&apos;git&apos;, u&apos;reset&apos;, u&apos;--hard&apos;, u&apos;refs/remotes/trunk&apos;]&quot; exit_code: 128
error: Could not write new index file.
fatal: Could not reset index file to revision &apos;refs/remotes/trunk&apos;.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318391</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 12:24:15 -0800</bug_when>
    <thetext>Attachment 75825 did not pass style-queue:

Failed to run &quot;[u&apos;git&apos;, u&apos;reset&apos;, u&apos;--hard&apos;, u&apos;refs/remotes/trunk&apos;]&quot; exit_code: 128
error: Could not write new index file.
fatal: Could not reset index file to revision &apos;refs/remotes/trunk&apos;.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318612</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 21:42:36 -0800</bug_when>
    <thetext>Attachment 75825 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/update-webkit&apos;]&quot; exit_code: 2
Updating OpenSource
Incomplete data: Delta source ended unexpectedly at /usr/lib/git-core/git-svn line 5061

Died at WebKitTools/Scripts/update-webkit line 132.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320774</commentid>
    <comment_count>6</comment_count>
      <attachid>75825</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-12 02:23:09 -0800</bug_when>
    <thetext>Comment on attachment 75825
proposed patch

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

Well, instead this causes us to stat the file system for each path.  I guess we&apos;re doing so right above, so the inode should be cached...

Would this be faster/just as fast if we just compiled a regexp for the path first?

How did you perf test this?  How much speedup did you see?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:723
&gt; +        if not os.path.isfile(path):

I guess I would have reversed this if to be positive instead of negative.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:725
&gt; +            result = [ test for test in self._full_test_list if test.startswith(path) ]

I don&apos;t think PEP8 says we put extra spaces around [ ] like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320782</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-12-12 02:35:09 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; 
&gt; How did you perf test this?  How much speedup did you see?
&gt; 

This is easy to perf :) Just try new-run-webkit-tests --platform=gtk with and without the patch. We (Alexg and I) profiled this with the python hotshot profiler.

Without the patch parsing the expectations takes about 20 seconds here and with the patch less than 2 seconds.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:723
&gt; &gt; +        if not os.path.isfile(path):
&gt; 
&gt; I guess I would have reversed this if to be positive instead of negative.
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:725
&gt; &gt; +            result = [ test for test in self._full_test_list if test.startswith(path) ]
&gt; 
&gt; I don&apos;t think PEP8 says we put extra spaces around [ ] like this.

OK I can fix those. Thanks for the review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320812</commentid>
    <comment_count>8</comment_count>
      <attachid>76320</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-12-12 03:36:46 -0800</bug_when>
    <thetext>Created attachment 76320
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320813</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-12 03:39:25 -0800</bug_when>
    <thetext>Attachment 76320 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebKitTools/ChangeLog&apos;, u&apos;WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py&apos;]&quot; exit_code: 1
WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:739:  missing whitespace after &apos;,&apos;  [pep8/E231] [5]
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>321077</commentid>
    <comment_count>10</comment_count>
      <attachid>76377</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-12-13 05:55:23 -0800</bug_when>
    <thetext>Created attachment 76377
updated patch

and &quot;style&quot; fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321138</commentid>
    <comment_count>11</comment_count>
      <attachid>76377</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-12-13 08:31:32 -0800</bug_when>
    <thetext>Comment on attachment 76377
updated patch

I assume you ran the unittests for this. If not, please make sure to do so before committing.

Also, it would be nice if you could add a test for this case. The closest thing I could find was test_precedence, but that doesn&apos;t test the case of a file being listed without it&apos;s parent directory also being listed. Minor edge case, but more tests make me feel safer. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321165</commentid>
    <comment_count>12</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-12-13 09:44:00 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 76377 [details])
&gt; I assume you ran the unittests for this. If not, please make sure to do so before committing.
&gt; 

Yes I did check that before sending the patch for review.

&gt; Also, it would be nice if you could add a test for this case. The closest thing I could find was test_precedence, but that doesn&apos;t test the case of a file being listed without it&apos;s parent directory also being listed. Minor edge case, but more tests make me feel safer. :)

Hum now I figured out my patch should rely on port&apos;s filesystem API :) Will send a new patch with a test!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321166</commentid>
    <comment_count>13</comment_count>
      <attachid>76397</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-12-13 09:45:53 -0800</bug_when>
    <thetext>Created attachment 76397
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321181</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-13 10:02:57 -0800</bug_when>
    <thetext>Nice catch! I knew there had to be a reason chromium&apos;s parsing was getting quadratically slower but I hadn&apos;t had the time to look into it.

The change basically looks fine but I would make one minor modification. We already know whether the path points to a directory or a file from the check on line 732, so you can merge the two if blocks together and save yourself an extra os call.

Seems like we could probably still speed up the directory/category branch of the loop by switching to a more tree-based storage mechanism for the file list, or by revamping the calling code to do a merge join instead of a nested-loop join but it&apos;s probably not worth it for now, so I would leave the code as is since it&apos;s a lot more obviously correct. You could consider adding a #FIXME that there&apos;s an opportunity for a speed up here.

As far as using a regexp goes, I&apos;d be more than a little surprised if a regexp was faster than a string prefix match.

-- Dirk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321203</commentid>
    <comment_count>15</comment_count>
      <attachid>76397</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-12-13 10:12:15 -0800</bug_when>
    <thetext>Comment on attachment 76397
updated patch

r- per Dirk&apos;s comments. Specifically, making use of the is_dir check above, which will mean we don&apos;t need to add isfile to port either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321765</commentid>
    <comment_count>16</comment_count>
      <attachid>76377</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-14 01:26:48 -0800</bug_when>
    <thetext>Comment on attachment 76377
updated patch

Cleared Ojan Vafai&apos;s review+ from obsolete attachment 76377 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321944</commentid>
    <comment_count>17</comment_count>
      <attachid>76532</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-12-14 06:55:00 -0800</bug_when>
    <thetext>Created attachment 76532
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321946</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-14 06:56:16 -0800</bug_when>
    <thetext>Attachment 76532 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebKitTools/ChangeLog&apos;, u&apos;WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py&apos;, u&apos;WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py&apos;, u&apos;WebKitTools/Scripts/webkitpy/layout_tests/port/test.py&apos;]&quot; exit_code: 1
WebKitTools/Scripts/webkitpy/layout_tests/port/test.py:222:  missing whitespace around operator  [pep8/E225] [5]
Total errors found: 1 in 4 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>321948</commentid>
    <comment_count>19</comment_count>
      <attachid>76533</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-12-14 07:04:13 -0800</bug_when>
    <thetext>Created attachment 76533
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321954</commentid>
    <comment_count>20</comment_count>
      <attachid>76533</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-12-14 07:25:20 -0800</bug_when>
    <thetext>Comment on attachment 76533
updated patch

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

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:742
&gt; +            result = [test for test in self._full_test_list if test.startswith(path)]

nit: I would make this an early return, then you can drop the &quot;else:&quot; line.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/test.py:214
&gt; +        if path.find(&apos;.&apos;) != -1:

This is fine for now given that this is just for testing, but in the real webkit tree, we have the CSS2.1 directory, which we may want to add tests for in the future. Please add a FIXME to make this work for that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322021</commentid>
    <comment_count>21</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-12-14 09:55:12 -0800</bug_when>
    <thetext>Committed r74036: &lt;http://trac.webkit.org/changeset/74036&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322111</commentid>
    <comment_count>22</comment_count>
      <attachid>76533</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-14 12:22:55 -0800</bug_when>
    <thetext>Comment on attachment 76533
updated patch

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

&gt;&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/test.py:214
&gt;&gt; +        if path.find(&apos;.&apos;) != -1:
&gt; 
&gt; This is fine for now given that this is just for testing, but in the real webkit tree, we have the CSS2.1 directory, which we may want to add tests for in the future. Please add a FIXME to make this work for that case.

In particular, since the list of files and directories is fixed and small in this case, all you are doing is speeding up the check in line 224, but I doubt that produces a noticeable speedup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322165</commentid>
    <comment_count>23</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-12-14 13:33:56 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 76533 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76533&amp;action=review
&gt; 
&gt; &gt;&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/test.py:214
&gt; &gt;&gt; +        if path.find(&apos;.&apos;) != -1:
&gt; &gt; 
&gt; &gt; This is fine for now given that this is just for testing, but in the real webkit tree, we have the CSS2.1 directory, which we may want to add tests for in the future. Please add a FIXME to make this work for that case.
&gt; 
&gt; In particular, since the list of files and directories is fixed and small in this case, all you are doing is speeding up the check in line 224, but I doubt that produces a noticeable speedup.

I had to make this change to actually make the tests pass...

The noticeable speedup is in the real tests expectations parsing, eg. avoiding the expensive iteration over the *BIG* list of tests, when possible. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322170</commentid>
    <comment_count>24</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-12-14 13:40:14 -0800</bug_when>
    <thetext>FWIW, this cut parse expectations time on the chromium linux bot from 9 seconds to 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322315</commentid>
    <comment_count>25</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-14 15:56:48 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; (From update of attachment 76533 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76533&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/test.py:214
&gt; &gt; &gt;&gt; +        if path.find(&apos;.&apos;) != -1:
&gt; &gt; &gt; 
&gt; &gt; &gt; This is fine for now given that this is just for testing, but in the real webkit tree, we have the CSS2.1 directory, which we may want to add tests for in the future. Please add a FIXME to make this work for that case.
&gt; &gt; 
&gt; &gt; In particular, since the list of files and directories is fixed and small in this case, all you are doing is speeding up the check in line 224, but I doubt that produces a noticeable speedup.
&gt; 
&gt; I had to make this change to actually make the tests pass...
&gt; 
&gt; The noticeable speedup is in the real tests expectations parsing, eg. avoiding the expensive iteration over the *BIG* list of tests, when possible. :)

Oh, yeah, obviously there&apos;s a big speedup in the real parsing. I&apos;m just surprised that you would need to make a change to test.py for the tests to pass. I&apos;ll have to look into that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322535</commentid>
    <comment_count>26</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-15 01:08:15 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; &gt; &gt; &gt;&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/test.py:214
&gt; &gt; &gt; &gt;&gt; +        if path.find(&apos;.&apos;) != -1:
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; This is fine for now given that this is just for testing, but in the real webkit tree, we have the CSS2.1 directory, which we may want to add tests for in the future. Please add a FIXME to make this work for that case.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; I had to make this change to actually make the tests pass...
&gt; &gt; 
&gt; &gt; 
&gt; I&apos;m just surprised that you would need to make a change to test.py for the tests to pass. I&apos;ll have to look into that.

I guess I was justifiably surprised. That line actually causes test-webkitpy to fail for me, because my source tree is rooted in a directory with a &quot;.&quot; in it (e.g. /src/foo.bar/WebKit/WebKitTools/...). However, if I comment out those two lines, it passes for me. What fails for you without those lines?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322759</commentid>
    <comment_count>27</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-12-15 12:44:37 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; &gt; &gt; &gt;&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/test.py:214
&gt; &gt; &gt; &gt; &gt;&gt; +        if path.find(&apos;.&apos;) != -1:
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; This is fine for now given that this is just for testing, but in the real webkit tree, we have the CSS2.1 directory, which we may want to add tests for in the future. Please add a FIXME to make this work for that case.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; I had to make this change to actually make the tests pass...
&gt; &gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; I&apos;m just surprised that you would need to make a change to test.py for the tests to pass. I&apos;ll have to look into that.
&gt; 
&gt; I guess I was justifiably surprised. That line actually causes test-webkitpy to fail for me, because my source tree is rooted in a directory with a &quot;.&quot; in it (e.g. /src/foo.bar/WebKit/WebKitTools/...). However, if I comment out those two lines, it passes for me. What fails for you without those lines?

Oh I see what happened :) I made that change before doing the early return in the expand_tests code. It was needed in that case because path_isdir() was returning False and the wrong code path was taken, making two test-cases fail.

With the early return in expand_tests that dummy code in test.py is no longer needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322763</commentid>
    <comment_count>28</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-15 12:51:29 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; 
&gt; Oh I see what happened :) I made that change before doing the early return in the expand_tests code. It was needed in that case because path_isdir() was returning False and the wrong code path was taken, making two test-cases fail.
&gt; 
&gt; With the early return in expand_tests that dummy code in test.py is no longer needed.

That makes sense. I remember doing something similarly before. Of course, my testing has reviewed that test.py is sensitive to where it is being run from (using a real layout_tests_dir()), which it shouldn&apos;t be.

So, I&apos;ll upload a separate patch that fixes that and removes this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322764</commentid>
    <comment_count>29</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-15 12:52:05 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; 
&gt; &gt; Oh I see what happened :) I made that change before doing the early return in the expand_tests code. It was needed in that case because path_isdir() was returning False and the wrong code path was taken, making two test-cases fail.
&gt; &gt; 
&gt; &gt; With the early return in expand_tests that dummy code in test.py is no longer needed.
&gt; 
&gt; That makes sense. I remember doing something similarly before. Of course, my testing has reviewed that test.py is sensitive to where it is being run from (using a real layout_tests_dir()), which it shouldn&apos;t be.
&gt; 
&gt; So, I&apos;ll upload a separate patch that fixes that and removes this line.

Oh, and add some tests to make sure that we handle directories with &quot;.&quot; in them properly.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75825</attachid>
            <date>2010-12-07 09:47:49 -0800</date>
            <delta_ts>2010-12-12 03:36:46 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>2195</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBhMTA2OTM5NGE4N2RhZTU3YzZiOGIzNzZjY2ZhYjQ2NTU1MTU4MTRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDcgRGVjIDIwMTAgMTg6NDU6MDAgKzAxMDAKU3ViamVjdDogW1BBVENIXSBw
cm9wb3NlZCBwYXRjaAoKLS0tCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTIgKysrKysrKysrKysrCiAuLi4vbGF5b3V0X3BhY2thZ2UvdGVz
dF9leHBlY3RhdGlvbnMucHkgICAgICAgICAgICB8ICAgMTIgKysrKysrKystLS0tCiAyIGZpbGVz
IGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU2OTM0
ZDUuLjg0YmRkNGQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0xMi0wNyAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW25ldy1ydW4td2Via2l0LXRlc3RzXSBleHBlY3RhdGlv
bnMgcGFyc2luZyBpcyBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MDYzNQorCisgICAgICAgIEF2b2lkIGV4cGVuc2l2ZSBpdGVyYXRpb24gb2Yg
YWxsIHRoZSB0ZXN0cyB3aGVuIGNoZWNraW5nIGlmIGEgdGVzdAorICAgICAgICBmaWxlIGlzIHRv
IGJlIHNraXBwZWQgb3Igbm90LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHk6CisKIDIwMTAtMTItMDYg
IFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRl
cnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhw
ZWN0YXRpb25zLnB5CmluZGV4IDY3ODczYTguLjc0NjA4YTUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhw
ZWN0YXRpb25zLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBAIC03MjAsMTAgKzcyMCwx
NCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgaWYgc2VsZi5fcG9ydC5w
YXRoX2lzZGlyKHBhdGgpOgogICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoLCAn
JykKIAotICAgICAgICByZXN1bHQgPSBbXQotICAgICAgICBmb3IgdGVzdCBpbiBzZWxmLl9mdWxs
X3Rlc3RfbGlzdDoKLSAgICAgICAgICAgIGlmIHRlc3Quc3RhcnRzd2l0aChwYXRoKToKLSAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRlc3QpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlz
ZmlsZShwYXRoKToKKyAgICAgICAgICAgICMgdGhpcyBpcyBhIHRlc3QgY2F0ZWdvcnksIHJldHVy
biBhbGwgdGhlIHRlc3RzIG9mIHRoZSBjYXRlZ29yeS4KKyAgICAgICAgICAgIHJlc3VsdCA9IFsg
dGVzdCBmb3IgdGVzdCBpbiBzZWxmLl9mdWxsX3Rlc3RfbGlzdCBpZiB0ZXN0LnN0YXJ0c3dpdGgo
cGF0aCkgXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyB0aGlzIGlzIGEgdGVzdCBmaWxl
LCBkbyBhIHF1aWNrIGNoZWNrIGlmIGl0J3MgaW4gdGhlIGZ1bGwgdGVzdC4KKyAgICAgICAgICAg
IHJlc3VsdCA9IFtdCisgICAgICAgICAgICBpZiBwYXRoIGluIHNlbGYuX2Z1bGxfdGVzdF9saXN0
OgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtwYXRoLF0KICAgICAgICAgcmV0dXJuIHJlc3Vs
dAogCiAgICAgZGVmIF9hZGRfdGVzdHMoc2VsZiwgdGVzdHMsIGV4cGVjdGF0aW9ucywgdGVzdF9s
aXN0X3BhdGgsIGxpbmVubywKLS0gCjEuNy4zLjM=
</data>
<flag name="review"
          id="66669"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76320</attachid>
            <date>2010-12-12 03:36:46 -0800</date>
            <delta_ts>2010-12-13 05:55:23 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>updated-patch.patch</filename>
            <type>text/plain</type>
            <size>2214</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA3MTEyMjkwNTc5YTI2ZmRlZWNhZjc3NzdkNjI3ZThkZmI4NGM1M2Q2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDcgRGVjIDIwMTAgMTg6NDU6MDAgKzAxMDAKU3ViamVjdDogW1BBVENIXSB1
cGRhdGVkIHBhdGNoCgotLS0KIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAxMiArKysrKysrKysrKysKIC4uLi9sYXlvdXRfcGFja2FnZS90ZXN0
X2V4cGVjdGF0aW9ucy5weSAgICAgICAgICAgIHwgICAxMiArKysrKysrKy0tLS0KIDIgZmlsZXMg
Y2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggYmYxMWEw
MS4uNDMxZTJkMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEwLTEyLTA3ICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbbmV3LXJ1bi13ZWJraXQtdGVzdHNdIGV4cGVjdGF0aW9u
cyBwYXJzaW5nIGlzIHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUwNjM1CisKKyAgICAgICAgQXZvaWQgZXhwZW5zaXZlIGl0ZXJhdGlvbiBvZiBh
bGwgdGhlIHRlc3RzIHdoZW4gY2hlY2tpbmcgaWYgYSB0ZXN0CisgICAgICAgIGZpbGUgaXMgdG8g
YmUgc2tpcHBlZCBvciBub3QuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weToKKwogMjAxMC0xMC0xMSAg
RGllZ28gR29uemFsZXogIDxkaWVnb2hjZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3Rh
dGlvbnMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRleCA3ZTFlNTNhLi5mYmQyMmZmIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5w
eQpAQCAtNzMyLDEwICs3MzIsMTQgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAg
ICAgIGlmIHNlbGYuX3BvcnQucGF0aF9pc2RpcihwYXRoKToKICAgICAgICAgICAgIHBhdGggPSBv
cy5wYXRoLmpvaW4ocGF0aCwgJycpCiAKLSAgICAgICAgcmVzdWx0ID0gW10KLSAgICAgICAgZm9y
IHRlc3QgaW4gc2VsZi5fZnVsbF90ZXN0X2xpc3Q6Ci0gICAgICAgICAgICBpZiB0ZXN0LnN0YXJ0
c3dpdGgocGF0aCk6Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0ZXN0KQorICAgICAg
ICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKToKKyAgICAgICAgICAgICMgdGhpcyBpcyBhIHRlc3Qg
ZmlsZSwgZG8gYSBxdWljayBjaGVjayBpZiBpdCdzIGluIHRoZSBmdWxsIHRlc3Qgc3VpdGUuCisg
ICAgICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICAgICAgaWYgcGF0aCBpbiBzZWxmLl9mdWxs
X3Rlc3RfbGlzdDoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBbcGF0aCxdCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAjIHRoaXMgaXMgYSB0ZXN0IGNhdGVnb3J5LCByZXR1cm4gYWxsIHRo
ZSB0ZXN0cyBvZiB0aGUgY2F0ZWdvcnkuCisgICAgICAgICAgICByZXN1bHQgPSBbdGVzdCBmb3Ig
dGVzdCBpbiBzZWxmLl9mdWxsX3Rlc3RfbGlzdCBpZiB0ZXN0LnN0YXJ0c3dpdGgocGF0aCldCiAg
ICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBfYWRkX3Rlc3RzKHNlbGYsIHRlc3RzLCBl
eHBlY3RhdGlvbnMsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCi0tIAoxLjcuMy4z
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76377</attachid>
            <date>2010-12-13 05:55:23 -0800</date>
            <delta_ts>2010-12-14 01:26:48 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>updated-patch.patch</filename>
            <type>text/plain</type>
            <size>2203</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBkNWRkYTM0NzllN2Q1NjczZjhmY2M1ZTQ0NmEzODEwMjczODEyOTk5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDcgRGVjIDIwMTAgMTg6NDU6MDAgKzAxMDAKU3ViamVjdDogW1BBVENIXSB1
cGRhdGVkIHBhdGNoCgotLS0KIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAxMiArKysrKysrKysrKysKIC4uLi9sYXlvdXRfcGFja2FnZS90ZXN0
X2V4cGVjdGF0aW9ucy5weSAgICAgICAgICAgIHwgICAxMiArKysrKysrKy0tLS0KIDIgZmlsZXMg
Y2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggNWY1M2M5
Yy4uNDZhYzE5NiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEwLTEyLTA3ICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbbmV3LXJ1bi13ZWJraXQtdGVzdHNdIGV4cGVjdGF0aW9u
cyBwYXJzaW5nIGlzIHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUwNjM1CisKKyAgICAgICAgQXZvaWQgZXhwZW5zaXZlIGl0ZXJhdGlvbiBvZiBh
bGwgdGhlIHRlc3RzIHdoZW4gY2hlY2tpbmcgaWYgYSB0ZXN0CisgICAgICAgIGZpbGUgaXMgdG8g
YmUgc2tpcHBlZCBvciBub3QuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weToKKwogMjAxMC0xMi0xMyAg
QW5kcmFzIEJlY3NpICA8YWJlY3NpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Q3NhYmEgT3N6dHJvZ29uw6FjLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90
ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRleCA3ZTFlNTNhLi4xZmJmMTc0IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90
ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQpAQCAtNzMyLDEw
ICs3MzIsMTQgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgIGlmIHNlbGYu
X3BvcnQucGF0aF9pc2RpcihwYXRoKToKICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4o
cGF0aCwgJycpCiAKLSAgICAgICAgcmVzdWx0ID0gW10KLSAgICAgICAgZm9yIHRlc3QgaW4gc2Vs
Zi5fZnVsbF90ZXN0X2xpc3Q6Ci0gICAgICAgICAgICBpZiB0ZXN0LnN0YXJ0c3dpdGgocGF0aCk6
Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0ZXN0KQorICAgICAgICBpZiBvcy5wYXRo
LmlzZmlsZShwYXRoKToKKyAgICAgICAgICAgICMgdGhpcyBpcyBhIHRlc3QgZmlsZSwgZG8gYSBx
dWljayBjaGVjayBpZiBpdCdzIGluIHRoZSBmdWxsIHRlc3Qgc3VpdGUuCisgICAgICAgICAgICBy
ZXN1bHQgPSBbXQorICAgICAgICAgICAgaWYgcGF0aCBpbiBzZWxmLl9mdWxsX3Rlc3RfbGlzdDoK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSBbcGF0aCwgXQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgIyB0aGlzIGlzIGEgdGVzdCBjYXRlZ29yeSwgcmV0dXJuIGFsbCB0aGUgdGVzdHMgb2Yg
dGhlIGNhdGVnb3J5LgorICAgICAgICAgICAgcmVzdWx0ID0gW3Rlc3QgZm9yIHRlc3QgaW4gc2Vs
Zi5fZnVsbF90ZXN0X2xpc3QgaWYgdGVzdC5zdGFydHN3aXRoKHBhdGgpXQogICAgICAgICByZXR1
cm4gcmVzdWx0CiAKICAgICBkZWYgX2FkZF90ZXN0cyhzZWxmLCB0ZXN0cywgZXhwZWN0YXRpb25z
LCB0ZXN0X2xpc3RfcGF0aCwgbGluZW5vLAotLSAKMS43LjMuMw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76397</attachid>
            <date>2010-12-13 09:45:53 -0800</date>
            <delta_ts>2010-12-14 06:55:00 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>updated-patch.patch</filename>
            <type>text/plain</type>
            <size>5645</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA5ZDFlYjkxNWJjY2NmM2VmNTQ2MTdiMWU4YTMyMGEzMGI1MTU1NGU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDcgRGVjIDIwMTAgMTg6NDU6MDAgKzAxMDAKU3ViamVjdDogW1BBVENIXSB1
cGRhdGVkIHBhdGNoCgotLS0KIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAxNSArKysrKysrKysrKysrKysKIC4uLi9sYXlvdXRfcGFja2FnZS90
ZXN0X2V4cGVjdGF0aW9ucy5weSAgICAgICAgICAgIHwgICAxMiArKysrKysrKy0tLS0KIC4uLi9s
YXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weSAgIHwgICAxNCArKysr
KysrKysrKysrKwogLi4uL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5w
eSAgICAgfCAgICA2ICsrKysrKwogLi4uL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvdGVzdC5weSAgICAgfCAgICA4ICsrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDUxIGluc2Vy
dGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDVmNTNjOWMuLjc5NDE3ZWIgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxMC0xMi0xMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW25ldy1ydW4td2Via2l0LXRlc3RzXSBleHBlY3RhdGlvbnMgcGFyc2luZyBpcyBzbG93
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDYzNQor
CisgICAgICAgIEF2b2lkIGV4cGVuc2l2ZSBpdGVyYXRpb24gb2YgYWxsIHRoZSB0ZXN0cyB3aGVu
IGNoZWNraW5nIGlmIGEgdGVzdAorICAgICAgICBmaWxlIGlzIHRvIGJlIHNraXBwZWQgb3Igbm90
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvdGVzdF9leHBlY3RhdGlvbnMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKwogMjAx
MC0xMi0xMyAgQW5kcmFzIEJlY3NpICA8YWJlY3NpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlv
bnMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRleCA3ZTFlNTNhLi5lOGVmYjIzIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQpA
QCAtNzMyLDEwICs3MzIsMTQgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAg
IGlmIHNlbGYuX3BvcnQucGF0aF9pc2RpcihwYXRoKToKICAgICAgICAgICAgIHBhdGggPSBvcy5w
YXRoLmpvaW4ocGF0aCwgJycpCiAKLSAgICAgICAgcmVzdWx0ID0gW10KLSAgICAgICAgZm9yIHRl
c3QgaW4gc2VsZi5fZnVsbF90ZXN0X2xpc3Q6Ci0gICAgICAgICAgICBpZiB0ZXN0LnN0YXJ0c3dp
dGgocGF0aCk6Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0ZXN0KQorICAgICAgICBp
ZiBzZWxmLl9wb3J0LnBhdGhfaXNmaWxlKHBhdGgpOgorICAgICAgICAgICAgIyB0aGlzIGlzIGEg
dGVzdCBmaWxlLCBkbyBhIHF1aWNrIGNoZWNrIGlmIGl0J3MgaW4gdGhlIGZ1bGwgdGVzdCBzdWl0
ZS4KKyAgICAgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgICAgICBpZiBwYXRoIGluIHNlbGYu
X2Z1bGxfdGVzdF9saXN0OgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtwYXRoLCBdCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAjIHRoaXMgaXMgYSB0ZXN0IGNhdGVnb3J5LCByZXR1cm4g
YWxsIHRoZSB0ZXN0cyBvZiB0aGUgY2F0ZWdvcnkuCisgICAgICAgICAgICByZXN1bHQgPSBbdGVz
dCBmb3IgdGVzdCBpbiBzZWxmLl9mdWxsX3Rlc3RfbGlzdCBpZiB0ZXN0LnN0YXJ0c3dpdGgocGF0
aCldCiAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBfYWRkX3Rlc3RzKHNlbGYsIHRl
c3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90
ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0
LnB5CmluZGV4IGUwNGFjMzEuLjM0NzcxZjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25z
X3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CkBAIC0xNDUs
NiArMTQ1LDIwIEBAIEJVR1ggV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkID0gSU1BR0UKICAg
ICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhU
KQogICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwn
LCBJTUFHRSkKIAorICAgIGRlZiB0ZXN0X2NhdGVnb3J5X2V4cGVjdGF0aW9ucyhzZWxmKToKKyAg
ICAgICAgIyBUaGlzIHRlc3QgY2hlY2tzIHVua25vd24gdGVzdHMgYXJlIG5vdCBwcmVzZW50IGlu
IHRoZQorICAgICAgICAjIGV4cGVjdGF0aW9ucyBhbmQgdGhhdCBrbm93biB0ZXN0IHBhcnQgb2Yg
YSB0ZXN0IGNhdGVnb3J5IGlzCisgICAgICAgICMgcHJlc2VudCBpbiB0aGUgZXhwZWN0YXRpb25z
LgorICAgICAgICBleHBfc3RyID0gIiIiCitCVUdYIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3Rl
ZCA9IElNQUdFCisiIiIKKyAgICAgICAgc2VsZi5wYXJzZV9leHAoZXhwX3N0cikKKyAgICAgICAg
dGVzdF9uYW1lID0gJ2ZhaWx1cmVzL2V4cGVjdGVkL3Vua25vd24tdGVzdC5odG1sJworICAgICAg
ICB1bmtub3duX3Rlc3QgPSBzZWxmLmdldF90ZXN0KHRlc3RfbmFtZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNlbGYuX2V4cC5nZXRfZXhwZWN0YXRpb25zLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bmtub3duX3Rlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4
cCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQorCiAgICAgZGVmIHRlc3Rf
cmVsZWFzZV9tb2RlKHNlbGYpOgogICAgICAgICBzZWxmLnBhcnNlX2V4cCgnQlVHWCBERUJVRyA6
IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnLAogICAgICAgICAgICAgICAgICAg
ICAgICBpc19kZWJ1Z19tb2RlPVRydWUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggYmM1YTlhYS4uZTQ5ZTg2
NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9iYXNlLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weQpAQCAtMzc4LDYgKzM3OCwxMiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6
CiAgICAgICAgICMgVXNlZCBieSB0ZXN0X2V4cGVjdGF0aW9ucy5weSB0byBhcHBseSBydWxlcyB0
byB3aG9sZSBkaXJlY3Rvcmllcy4KICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uaXNk
aXIocGF0aCkKIAorICAgIGRlZiBwYXRoX2lzZmlsZShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIi
UmV0dXJuIFRydWUgaWYgdGhlIHBhdGggcmVmZXJzIHRvIGEgdGVzdCBmaWxlLiIiIgorICAgICAg
ICAjIFVzZWQgYnkgdGVzdF9leHBlY3RhdGlvbnMucHkgZGV0ZXJtaW5lIGlmIGFuIGVudHJ5IHJl
ZmVycyB0bworICAgICAgICAjIGEgdGVzdCBmaWxlIG9yIGNhdGVnb3J5LgorICAgICAgICByZXR1
cm4gc2VsZi5fZmlsZXN5c3RlbS5pc2ZpbGUocGF0aCkKKwogICAgIGRlZiBwYXRoX2V4aXN0cyhz
ZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIHBhdGggcmVmZXJzIHRv
IGFuIGV4aXN0aW5nIHRlc3Qgb3IgYmFzZWxpbmUuIiIiCiAgICAgICAgICMgVXNlZCBieSB0ZXN0
X2V4cGVjdGF0aW9ucy5weSB0byBkZXRlcm1pbmUgaWYgYW4gZW50cnkgcmVmZXJzIHRvIGEKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
dGVzdC5weQppbmRleCA4ZTI3ZjM1Li4zNzZjZjcwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CkBAIC0yMTEsNiAr
MjExLDE0IEBAIGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICBwYXRoICs9
ICcvJwogICAgICAgICByZXR1cm4gYW55KFt0LnN0YXJ0c3dpdGgocGF0aCkgZm9yIHQgaW4gc2Vs
Zi5fdGVzdHMua2V5cygpXSkKIAorICAgIGRlZiBwYXRoX2lzZmlsZShzZWxmLCBwYXRoKToKKyAg
ICAgICAgIyBVc2VkIGJ5IHRlc3RfZXhwZWN0YXRpb25zLnB5CisgICAgICAgICMKKyAgICAgICAg
IyBXZSBhc3N1bWUgdGhhdCBhIHBhdGggaXMgYSBmaWxlIGlmIHdlIGhhdmUgYW55IHRlc3RzIHRo
YXQKKyAgICAgICAgIyBtYXRjaGVzIGl0LgorICAgICAgICB0ZXN0X2RpciA9IHNlbGYubGF5b3V0
X3Rlc3RzX2RpcigpCisgICAgICAgIHJldHVybiBwYXRoIGluIFtvcy5wYXRoLmpvaW4odGVzdF9k
aXIsIHQpIGZvciB0IGluIHNlbGYuX3Rlc3RzLmtleXMoKV0KKwogICAgIGRlZiB0ZXN0X2RpcnMo
c2VsZik6CiAgICAgICAgIHJldHVybiBbJ3Bhc3NlcycsICdmYWlsdXJlcyddCiAKLS0gCjEuNy4z
LjM=
</data>
<flag name="review"
          id="67343"
          type_id="1"
          status="-"
          setter="ojan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76532</attachid>
            <date>2010-12-14 06:55:00 -0800</date>
            <delta_ts>2010-12-14 07:04:13 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>updated-patch.patch</filename>
            <type>text/plain</type>
            <size>5710</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA2NmQxZjZmYjk3Y2YxODI5Zjk1NDNjOTQxMjE5ZThiMTZlMzhiYzUwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDE0IERlYyAyMDEwIDE1OjUxOjU1ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
dXBkYXRlZCBwYXRjaAoKLS0tCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTQgKysrKysrKysrKysrKysKIC4uLi9sYXlvdXRfcGFja2FnZS90
ZXN0X2V4cGVjdGF0aW9ucy5weSAgICAgICAgICAgIHwgICAxOCArKysrKysrKysrKysrKy0tLS0K
IC4uLi9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weSAgIHwgICAx
NCArKysrKysrKysrKysrKwogLi4uL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
dGVzdC5weSAgICAgfCAgIDE2ICsrKysrKysrKysrKysrLS0KIDQgZmlsZXMgY2hhbmdlZCwgNTYg
aW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9D
aGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggNWY1M2M5Yy4uZjU4MzhkMSAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEwLTEyLTEzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5v
cm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbbmV3LXJ1bi13ZWJraXQtdGVzdHNdIGV4cGVjdGF0aW9ucyBwYXJzaW5nIGlz
IHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUw
NjM1CisKKyAgICAgICAgQXZvaWQgZXhwZW5zaXZlIGl0ZXJhdGlvbiBvZiBhbGwgdGhlIHRlc3Rz
IHdoZW4gY2hlY2tpbmcgaWYgYSB0ZXN0CisgICAgICAgIGZpbGUgaXMgdG8gYmUgc2tpcHBlZCBv
ciBub3QuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6
CisKIDIwMTAtMTItMTMgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhw
ZWN0YXRpb25zLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXggN2UxZTUzYS4uMDVlZmNl
NyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlv
bnMucHkKQEAgLTcyNywxNSArNzI3LDI1IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgog
ICAgIGRlZiBfZXhwYW5kX3Rlc3RzKHNlbGYsIHRlc3RfbGlzdF9wYXRoKToKICAgICAgICAgIiIi
Q29udmVydCB0aGUgdGVzdCBzcGVjaWZpY2F0aW9uIHRvIGFuIGFic29sdXRlLCBub3JtYWxpemVk
CiAgICAgICAgIHBhdGggYW5kIG1ha2Ugc3VyZSBkaXJlY3RvcmllcyBlbmQgd2l0aCB0aGUgT1Mg
cGF0aCBzZXBhcmF0b3IuIiIiCisgICAgICAgICMgRklYTUU6IGZ1bGxfdGVzdF9saXN0IGNhbiBx
dWlja2x5IGNvbnRhaW4gYSBiaWcgYW1vdW50IG9mCisgICAgICAgICMgZWxlbWVudHMuIFdlIHNo
b3VsZCBjb25zaWRlciBhdCBzb21lIHBvaW50IHRvIHVzZSBhIG1vcmUKKyAgICAgICAgIyBlZmZp
Y2llbnQgc3RydWN0dXJlIGluc3RlYWQgb2YgYSBsaXN0LiBNYXliZSBhIGRpY3Rpb25hcnkgb2YK
KyAgICAgICAgIyBsaXN0cyB0byByZXByZXNlbnQgdGhlIHRyZWUgb2YgdGVzdHMsIGxlYXZlcyBi
ZWluZyB0ZXN0CisgICAgICAgICMgZmlsZXMgYW5kIG5vZGVzIGJlaW5nIGNhdGVnb3JpZXMuCisK
ICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIo
KSwgdGVzdF9saXN0X3BhdGgpCiAgICAgICAgIHBhdGggPSBvcy5wYXRoLm5vcm1wYXRoKHBhdGgp
CiAgICAgICAgIGlmIHNlbGYuX3BvcnQucGF0aF9pc2RpcihwYXRoKToKKyAgICAgICAgICAgICMg
dGhpcyBpcyBhIHRlc3QgY2F0ZWdvcnksIHJldHVybiBhbGwgdGhlIHRlc3RzIG9mIHRoZSBjYXRl
Z29yeS4KICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgJycpCiAKLSAgICAg
ICAgcmVzdWx0ID0gW10KLSAgICAgICAgZm9yIHRlc3QgaW4gc2VsZi5fZnVsbF90ZXN0X2xpc3Q6
Ci0gICAgICAgICAgICBpZiB0ZXN0LnN0YXJ0c3dpdGgocGF0aCk6Ci0gICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCh0ZXN0KQorICAgICAgICAgICAgcmVzdWx0ID0gW3Rlc3QgZm9yIHRlc3Qg
aW4gc2VsZi5fZnVsbF90ZXN0X2xpc3QgaWYgdGVzdC5zdGFydHN3aXRoKHBhdGgpXQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgIyB0aGlzIGlzIGEgdGVzdCBmaWxlLCBkbyBhIHF1aWNrIGNo
ZWNrIGlmIGl0J3MgaW4gdGhlCisgICAgICAgICAgICAjIGZ1bGwgdGVzdCBzdWl0ZS4KKyAgICAg
ICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgICAgICBpZiBwYXRoIGluIHNlbGYuX2Z1bGxfdGVz
dF9saXN0OgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtwYXRoLCBdCiAgICAgICAgIHJldHVy
biByZXN1bHQKIAogICAgIGRlZiBfYWRkX3Rlc3RzKHNlbGYsIHRlc3RzLCBleHBlY3RhdGlvbnMs
IHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191
bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CmluZGV4IGUwNGFjMzEu
LjM0NzcxZjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CkBAIC0xNDUsNiArMTQ1LDIwIEBAIEJVR1gg
V09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkID0gSU1BR0UKICAgICAgICAgc2VsZi5hc3NlcnRf
ZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhUKQogICAgICAgICBzZWxmLmFz
c2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwnLCBJTUFHRSkKIAorICAgIGRl
ZiB0ZXN0X2NhdGVnb3J5X2V4cGVjdGF0aW9ucyhzZWxmKToKKyAgICAgICAgIyBUaGlzIHRlc3Qg
Y2hlY2tzIHVua25vd24gdGVzdHMgYXJlIG5vdCBwcmVzZW50IGluIHRoZQorICAgICAgICAjIGV4
cGVjdGF0aW9ucyBhbmQgdGhhdCBrbm93biB0ZXN0IHBhcnQgb2YgYSB0ZXN0IGNhdGVnb3J5IGlz
CisgICAgICAgICMgcHJlc2VudCBpbiB0aGUgZXhwZWN0YXRpb25zLgorICAgICAgICBleHBfc3Ry
ID0gIiIiCitCVUdYIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZCA9IElNQUdFCisiIiIKKyAg
ICAgICAgc2VsZi5wYXJzZV9leHAoZXhwX3N0cikKKyAgICAgICAgdGVzdF9uYW1lID0gJ2ZhaWx1
cmVzL2V4cGVjdGVkL3Vua25vd24tdGVzdC5odG1sJworICAgICAgICB1bmtub3duX3Rlc3QgPSBz
ZWxmLmdldF90ZXN0KHRlc3RfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJy
b3IsIHNlbGYuX2V4cC5nZXRfZXhwZWN0YXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bmtub3duX3Rlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0
ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQorCiAgICAgZGVmIHRlc3RfcmVsZWFzZV9tb2RlKHNlbGYp
OgogICAgICAgICBzZWxmLnBhcnNlX2V4cCgnQlVHWCBERUJVRyA6IGZhaWx1cmVzL2V4cGVjdGVk
L3RleHQuaHRtbCA9IFRFWFQnLAogICAgICAgICAgICAgICAgICAgICAgICBpc19kZWJ1Z19tb2Rl
PVRydWUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3Rlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggOGUyN2YzNS4uMGU4YzhiZiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpA
QCAtMjA1LDEwICsyMDUsMjIgQEAgY2xhc3MgVGVzdFBvcnQoYmFzZS5Qb3J0KToKICAgICBkZWYg
cGF0aF9pc2RpcihzZWxmLCBwYXRoKToKICAgICAgICAgIyBVc2VkIGJ5IHRlc3RfZXhwZWN0YXRp
b25zLnB5CiAgICAgICAgICMKLSAgICAgICAgIyBXZSBhc3N1bWUgdGhhdCBhIHBhdGggaXMgYSBk
aXJlY3RvcnkgaWYgd2UgaGF2ZSBhbnkgdGVzdHMgdGhhdAotICAgICAgICAjIHdob3NlIHByZWZp
eCBtYXRjaGVzIHRoZSBwYXRoIHBsdXMgYSBkaXJlY3RvcnkgbW9kaWZpZXIuCisgICAgICAgICMg
V2UgYXNzdW1lIHRoYXQgYSBwYXRoIGlzIGEgZGlyZWN0b3J5IGlmIHdlIGhhdmUgYW55IHRlc3Rz
CisgICAgICAgICMgdGhhdCB3aG9zZSBwcmVmaXggbWF0Y2hlcyB0aGUgcGF0aCBwbHVzIGEgZGly
ZWN0b3J5IG1vZGlmaWVyCisgICAgICAgICMgYW5kIG5vdCBhIGZpbGUgZXh0ZW5zaW9uLgogICAg
ICAgICBpZiBwYXRoWy0xXSAhPSAnLyc6CiAgICAgICAgICAgICBwYXRoICs9ICcvJworCisgICAg
ICAgIGlmIHBhdGguZmluZCgnLicpICE9IC0xOgorICAgICAgICAgICAgIyBleHRlbnNpb24gc2Vw
YXJhdG9yIGZvdW5kLCBhc3N1bWUgdGhpcyBpcyBhIGZpbGUKKyAgICAgICAgICAgIHJldHVybiBG
YWxzZQorCisgICAgICAgICMgc3RyaXAgb3V0IGxheW91dCB0ZXN0cyBkaXJlY3RvcnkgcGF0aCBp
ZiBmb3VuZC4gVGhlIHRlc3RzCisgICAgICAgICMga2V5cyBhcmUgcmVsYXRpdmUgdG8gaXQuCisg
ICAgICAgIHRlc3RzX2RpciA9IHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpCisgICAgICAgIGlmIHBh
dGguc3RhcnRzd2l0aCh0ZXN0c19kaXIpOgorICAgICAgICAgICAgcGF0aCA9IHBhdGhbbGVuKHRl
c3RzX2RpcikrMTpdCisKICAgICAgICAgcmV0dXJuIGFueShbdC5zdGFydHN3aXRoKHBhdGgpIGZv
ciB0IGluIHNlbGYuX3Rlc3RzLmtleXMoKV0pCiAKICAgICBkZWYgdGVzdF9kaXJzKHNlbGYpOgot
LSAKMS43LjMuMw==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76533</attachid>
            <date>2010-12-14 07:04:13 -0800</date>
            <delta_ts>2010-12-14 12:22:55 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>updated-patch.patch</filename>
            <type>text/plain</type>
            <size>5712</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA3MWY4OTYwYzhmMDUxN2ZhMTU1NTRiZDllZGJhNWY0OTQ0MzkyNDFjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDE0IERlYyAyMDEwIDE1OjUxOjU1ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
dXBkYXRlZCBwYXRjaAoKLS0tCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTQgKysrKysrKysrKysrKysKIC4uLi9sYXlvdXRfcGFja2FnZS90
ZXN0X2V4cGVjdGF0aW9ucy5weSAgICAgICAgICAgIHwgICAxOCArKysrKysrKysrKysrKy0tLS0K
IC4uLi9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weSAgIHwgICAx
NCArKysrKysrKysrKysrKwogLi4uL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
dGVzdC5weSAgICAgfCAgIDE2ICsrKysrKysrKysrKysrLS0KIDQgZmlsZXMgY2hhbmdlZCwgNTYg
aW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9D
aGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggNWY1M2M5Yy4uZjU4MzhkMSAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEwLTEyLTEzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5v
cm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbbmV3LXJ1bi13ZWJraXQtdGVzdHNdIGV4cGVjdGF0aW9ucyBwYXJzaW5nIGlz
IHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUw
NjM1CisKKyAgICAgICAgQXZvaWQgZXhwZW5zaXZlIGl0ZXJhdGlvbiBvZiBhbGwgdGhlIHRlc3Rz
IHdoZW4gY2hlY2tpbmcgaWYgYSB0ZXN0CisgICAgICAgIGZpbGUgaXMgdG8gYmUgc2tpcHBlZCBv
ciBub3QuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6
CisKIDIwMTAtMTItMTMgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhw
ZWN0YXRpb25zLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXggN2UxZTUzYS4uMDVlZmNl
NyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlv
bnMucHkKQEAgLTcyNywxNSArNzI3LDI1IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgog
ICAgIGRlZiBfZXhwYW5kX3Rlc3RzKHNlbGYsIHRlc3RfbGlzdF9wYXRoKToKICAgICAgICAgIiIi
Q29udmVydCB0aGUgdGVzdCBzcGVjaWZpY2F0aW9uIHRvIGFuIGFic29sdXRlLCBub3JtYWxpemVk
CiAgICAgICAgIHBhdGggYW5kIG1ha2Ugc3VyZSBkaXJlY3RvcmllcyBlbmQgd2l0aCB0aGUgT1Mg
cGF0aCBzZXBhcmF0b3IuIiIiCisgICAgICAgICMgRklYTUU6IGZ1bGxfdGVzdF9saXN0IGNhbiBx
dWlja2x5IGNvbnRhaW4gYSBiaWcgYW1vdW50IG9mCisgICAgICAgICMgZWxlbWVudHMuIFdlIHNo
b3VsZCBjb25zaWRlciBhdCBzb21lIHBvaW50IHRvIHVzZSBhIG1vcmUKKyAgICAgICAgIyBlZmZp
Y2llbnQgc3RydWN0dXJlIGluc3RlYWQgb2YgYSBsaXN0LiBNYXliZSBhIGRpY3Rpb25hcnkgb2YK
KyAgICAgICAgIyBsaXN0cyB0byByZXByZXNlbnQgdGhlIHRyZWUgb2YgdGVzdHMsIGxlYXZlcyBi
ZWluZyB0ZXN0CisgICAgICAgICMgZmlsZXMgYW5kIG5vZGVzIGJlaW5nIGNhdGVnb3JpZXMuCisK
ICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIo
KSwgdGVzdF9saXN0X3BhdGgpCiAgICAgICAgIHBhdGggPSBvcy5wYXRoLm5vcm1wYXRoKHBhdGgp
CiAgICAgICAgIGlmIHNlbGYuX3BvcnQucGF0aF9pc2RpcihwYXRoKToKKyAgICAgICAgICAgICMg
dGhpcyBpcyBhIHRlc3QgY2F0ZWdvcnksIHJldHVybiBhbGwgdGhlIHRlc3RzIG9mIHRoZSBjYXRl
Z29yeS4KICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgJycpCiAKLSAgICAg
ICAgcmVzdWx0ID0gW10KLSAgICAgICAgZm9yIHRlc3QgaW4gc2VsZi5fZnVsbF90ZXN0X2xpc3Q6
Ci0gICAgICAgICAgICBpZiB0ZXN0LnN0YXJ0c3dpdGgocGF0aCk6Ci0gICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCh0ZXN0KQorICAgICAgICAgICAgcmVzdWx0ID0gW3Rlc3QgZm9yIHRlc3Qg
aW4gc2VsZi5fZnVsbF90ZXN0X2xpc3QgaWYgdGVzdC5zdGFydHN3aXRoKHBhdGgpXQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgIyB0aGlzIGlzIGEgdGVzdCBmaWxlLCBkbyBhIHF1aWNrIGNo
ZWNrIGlmIGl0J3MgaW4gdGhlCisgICAgICAgICAgICAjIGZ1bGwgdGVzdCBzdWl0ZS4KKyAgICAg
ICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgICAgICBpZiBwYXRoIGluIHNlbGYuX2Z1bGxfdGVz
dF9saXN0OgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtwYXRoLCBdCiAgICAgICAgIHJldHVy
biByZXN1bHQKIAogICAgIGRlZiBfYWRkX3Rlc3RzKHNlbGYsIHRlc3RzLCBleHBlY3RhdGlvbnMs
IHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191
bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CmluZGV4IGUwNGFjMzEu
LjM0NzcxZjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CkBAIC0xNDUsNiArMTQ1LDIwIEBAIEJVR1gg
V09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkID0gSU1BR0UKICAgICAgICAgc2VsZi5hc3NlcnRf
ZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhUKQogICAgICAgICBzZWxmLmFz
c2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwnLCBJTUFHRSkKIAorICAgIGRl
ZiB0ZXN0X2NhdGVnb3J5X2V4cGVjdGF0aW9ucyhzZWxmKToKKyAgICAgICAgIyBUaGlzIHRlc3Qg
Y2hlY2tzIHVua25vd24gdGVzdHMgYXJlIG5vdCBwcmVzZW50IGluIHRoZQorICAgICAgICAjIGV4
cGVjdGF0aW9ucyBhbmQgdGhhdCBrbm93biB0ZXN0IHBhcnQgb2YgYSB0ZXN0IGNhdGVnb3J5IGlz
CisgICAgICAgICMgcHJlc2VudCBpbiB0aGUgZXhwZWN0YXRpb25zLgorICAgICAgICBleHBfc3Ry
ID0gIiIiCitCVUdYIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZCA9IElNQUdFCisiIiIKKyAg
ICAgICAgc2VsZi5wYXJzZV9leHAoZXhwX3N0cikKKyAgICAgICAgdGVzdF9uYW1lID0gJ2ZhaWx1
cmVzL2V4cGVjdGVkL3Vua25vd24tdGVzdC5odG1sJworICAgICAgICB1bmtub3duX3Rlc3QgPSBz
ZWxmLmdldF90ZXN0KHRlc3RfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJy
b3IsIHNlbGYuX2V4cC5nZXRfZXhwZWN0YXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bmtub3duX3Rlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0
ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQorCiAgICAgZGVmIHRlc3RfcmVsZWFzZV9tb2RlKHNlbGYp
OgogICAgICAgICBzZWxmLnBhcnNlX2V4cCgnQlVHWCBERUJVRyA6IGZhaWx1cmVzL2V4cGVjdGVk
L3RleHQuaHRtbCA9IFRFWFQnLAogICAgICAgICAgICAgICAgICAgICAgICBpc19kZWJ1Z19tb2Rl
PVRydWUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3Rlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggOGUyN2YzNS4uYjEyMDQyNiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpA
QCAtMjA1LDEwICsyMDUsMjIgQEAgY2xhc3MgVGVzdFBvcnQoYmFzZS5Qb3J0KToKICAgICBkZWYg
cGF0aF9pc2RpcihzZWxmLCBwYXRoKToKICAgICAgICAgIyBVc2VkIGJ5IHRlc3RfZXhwZWN0YXRp
b25zLnB5CiAgICAgICAgICMKLSAgICAgICAgIyBXZSBhc3N1bWUgdGhhdCBhIHBhdGggaXMgYSBk
aXJlY3RvcnkgaWYgd2UgaGF2ZSBhbnkgdGVzdHMgdGhhdAotICAgICAgICAjIHdob3NlIHByZWZp
eCBtYXRjaGVzIHRoZSBwYXRoIHBsdXMgYSBkaXJlY3RvcnkgbW9kaWZpZXIuCisgICAgICAgICMg
V2UgYXNzdW1lIHRoYXQgYSBwYXRoIGlzIGEgZGlyZWN0b3J5IGlmIHdlIGhhdmUgYW55IHRlc3Rz
CisgICAgICAgICMgdGhhdCB3aG9zZSBwcmVmaXggbWF0Y2hlcyB0aGUgcGF0aCBwbHVzIGEgZGly
ZWN0b3J5IG1vZGlmaWVyCisgICAgICAgICMgYW5kIG5vdCBhIGZpbGUgZXh0ZW5zaW9uLgogICAg
ICAgICBpZiBwYXRoWy0xXSAhPSAnLyc6CiAgICAgICAgICAgICBwYXRoICs9ICcvJworCisgICAg
ICAgIGlmIHBhdGguZmluZCgnLicpICE9IC0xOgorICAgICAgICAgICAgIyBleHRlbnNpb24gc2Vw
YXJhdG9yIGZvdW5kLCBhc3N1bWUgdGhpcyBpcyBhIGZpbGUKKyAgICAgICAgICAgIHJldHVybiBG
YWxzZQorCisgICAgICAgICMgc3RyaXAgb3V0IGxheW91dCB0ZXN0cyBkaXJlY3RvcnkgcGF0aCBp
ZiBmb3VuZC4gVGhlIHRlc3RzCisgICAgICAgICMga2V5cyBhcmUgcmVsYXRpdmUgdG8gaXQuCisg
ICAgICAgIHRlc3RzX2RpciA9IHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpCisgICAgICAgIGlmIHBh
dGguc3RhcnRzd2l0aCh0ZXN0c19kaXIpOgorICAgICAgICAgICAgcGF0aCA9IHBhdGhbbGVuKHRl
c3RzX2RpcikgKyAxOl0KKwogICAgICAgICByZXR1cm4gYW55KFt0LnN0YXJ0c3dpdGgocGF0aCkg
Zm9yIHQgaW4gc2VsZi5fdGVzdHMua2V5cygpXSkKIAogICAgIGRlZiB0ZXN0X2RpcnMoc2VsZik6
Ci0tIAoxLjcuMy4z
</data>
<flag name="review"
          id="67500"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>