<?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>60964</bug_id>
          
          <creation_ts>2011-05-17 08:53:10 -0700</creation_ts>
          <short_desc>Allow sorting in RebaselineServer based on &apos;metric&apos; field in unexpected_results.json</short_desc>
          <delta_ts>2011-06-08 13:43:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>0</everconfirmed>
          <reporter name="Tom Hudson">tomhudson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dpranke</cc>
    
    <cc>mihaip</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>405076</commentid>
    <comment_count>0</comment_count>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-05-17 08:53:10 -0700</bug_when>
    <thetext>Allow sorting in RebaselineServer based on &apos;metric&apos; field in unexpected_results.json</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405079</commentid>
    <comment_count>1</comment_count>
      <attachid>93776</attachid>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-05-17 08:57:50 -0700</bug_when>
    <thetext>Created attachment 93776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409816</commentid>
    <comment_count>2</comment_count>
      <attachid>93776</attachid>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-05-25 12:11:45 -0700</bug_when>
    <thetext>Comment on attachment 93776
Patch

Takes input from bug 60569 via bug 60957.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410974</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-05-26 16:23:54 -0700</bug_when>
    <thetext>I&apos;m probably not the right person to review this, since my javascript-fu is pretty weak. However, it looks like this code will assume we&apos;re only ever writing one metric into the JSON file from a given run (and hence can only sort on one column).

Does it make more sense to modify this so that we can handle N different sortable metrics? I don&apos;t really know what you have in mind so if it&apos;s easier to just start with one metric, that&apos;s fine too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410975</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-05-26 16:25:39 -0700</bug_when>
    <thetext>Oh, also cc&apos;ing other people that might be interested and/or reviewers.

For what it&apos;s worth, you get much faster turnaround times on reviews in my experience if you explicitly CC people than you do by just marking a change for review and hoping someone will notice. I forget to do this all the time, myself, but I try to usually cc people.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411350</commentid>
    <comment_count>5</comment_count>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-05-27 05:33:28 -0700</bug_when>
    <thetext>On multiple metrics: Yes, that&apos;s the next large feature we want, and I&apos;ve already got that code half-drafted. I uploaded this set of patches because we seemed to be stuck on the middle step (bug 60957), and it seems to me that the next set of patches will be incremental on top of this, but I didn&apos;t want to sink more time into them until we&apos;d come to some agreement on 60957.

Given that Tony, Ojan, and Mihai are CC&apos;d on some of the email threads, I should have thought to ask them to review, I was just (1) waiting for 60957 and (2) still not feeling like I understand the norms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411596</commentid>
    <comment_count>6</comment_count>
      <attachid>93776</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-05-27 11:54:50 -0700</bug_when>
    <thetext>Comment on attachment 93776
Patch

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

&gt; Tools/Scripts/webkitpy/tool/commands/data/rebaselineserver/index.html:54
&gt; +    &lt;span id=&quot;toggle-sort&quot; class=&quot;link&quot;&gt;Sort Tests&lt;/span&gt;

Call this &quot;Sort tests by metric&quot;?

&gt; Tools/Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:49
&gt; +var shouldSortImages = false;

There&apos;s image-specific about this code, this should be called &quot;shouldSortTestsByMetric&quot;.

&gt; Tools/Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:50
&gt; +var wasSortingImages = false;

Do you actually need this variable? If you only check shouldSortTestsByMetric in the selectedTypeIsSortable branch, you don&apos;t need to clear it to false and restore it.

&gt; Tools/Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:157
&gt; +    $(&apos;toggle-sort&apos;).style.color = &apos;&apos;;

Rather than manually setting the color style, can you add/remove a &apos;disabled&apos; class and then control the disabled appearance from the CSS?

&gt; Tools/Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:254
&gt; +    var selectedTypeIsSortable = results.tests[sampleSelectedTest][&apos;metric&apos;];

&quot;&apos;metric&apos; in results.tests[sampleSelectedTest]&quot; is a better test (your current test will return false if the metric value is 0).

&gt; Tools/Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:263
&gt; +            testsByState[state].sort(function(a, b) {

Given that this modifies testsByState, does turning off sorting actually work? It seems like you&apos;d need to re-sort alphabetically in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412628</commentid>
    <comment_count>7</comment_count>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-05-31 08:08:04 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 93776 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93776&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/data/rebaselineserver/index.html:54
&gt; &gt; +    &lt;span id=&quot;toggle-sort&quot; class=&quot;link&quot;&gt;Sort Tests&lt;/span&gt;
&gt; 
&gt; Call this &quot;Sort tests by metric&quot;?

Sure, for now. When we have support for multiple metrics, I expect to replace this with a drop-down box to choose which metric; then it makes sense to me to have the label be &quot;Sort tests by:&quot; and a default value of &quot;alphabetical order&quot;.

&gt; &gt; Tools/Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:50
&gt; &gt; +var wasSortingImages = false;
&gt; 
&gt; Do you actually need this variable? If you only check shouldSortTestsByMetric in the selectedTypeIsSortable branch, you don&apos;t need to clear it to false and restore it.

The intent was to have a bit of UI memory; if we change from looking at IMAGE to TEXT failure cases, and then back, we restore the sortedness/unsortedness from before.

I&apos;ll at least rename to wasSortingTestsByMetric to be consistent with shouldSortImages -&gt; shouldSortTestsByMetric.

&gt; &gt; Tools/Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:157
&gt; &gt; +    $(&apos;toggle-sort&apos;).style.color = &apos;&apos;;
&gt; 
&gt; Rather than manually setting the color style, can you add/remove a &apos;disabled&apos; class and then control the disabled appearance from the CSS?

My Javascript-fu is presumably far weaker than Dirk&apos;s; sounds like I need to learn a little CSS as well. This was just extrapolation from selectTest()/displayImageResults()/...

&gt; &gt; Tools/Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:263
&gt; &gt; +            testsByState[state].sort(function(a, b) {
&gt; 
&gt; Given that this modifies testsByState, does turning off sorting actually work? It seems like you&apos;d need to re-sort alphabetically in that case.

testsByState is being regenerated (in its default alphabetical order) every time selectDirectory() is called, and the $(&apos;toggle-sort&apos;).onclick calls selectDirectory() in part to make sure we end up alpha afterwards. Since that&apos;s a non-obvious reason I&apos;ve added a comment to explain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412798</commentid>
    <comment_count>8</comment_count>
      <attachid>95465</attachid>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-05-31 12:48:34 -0700</bug_when>
    <thetext>Created attachment 95465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412806</commentid>
    <comment_count>9</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-05-31 12:55:24 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; The intent was to have a bit of UI memory; if we change from looking at IMAGE to TEXT failure cases, and then back, we restore the sortedness/unsortedness from before.

Right, but if you only do the sorting (currently at lines 264 to 268) inside the selectedTypeIsSortableBranch (line 258), then I don&apos;t think you need to touch shouldSortTestsByMetric in enable/DisableSorting, hence you don&apos;t need wasSortingTestsByMetric.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412817</commentid>
    <comment_count>10</comment_count>
      <attachid>95465</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-05-31 13:22:18 -0700</bug_when>
    <thetext>Comment on attachment 95465
Patch

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

Mihai, you&apos;re comment makes me think this should be R-&apos;ed, no?

&gt; Tools/Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:261
&gt; +    if (selectedTypeIsSortable) {
&gt; +        enableSorting();
&gt; +    } else {
&gt; +        disableSorting();
&gt; +    }

Nit: WebKit style is to not use curly braces with single-line if/else statements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417371</commentid>
    <comment_count>11</comment_count>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-06-08 11:36:39 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; The intent was to have a bit of UI memory; if we change from looking at IMAGE to TEXT failure cases, and then back, we restore the sortedness/unsortedness from before.
&gt; 
&gt; Right, but if you only do the sorting (currently at lines 264 to 268) inside the selectedTypeIsSortableBranch (line 258), then I don&apos;t think you need to touch shouldSortTestsByMetric in enable/DisableSorting, hence you don&apos;t need wasSortingTestsByMetric.

Actually, the sorting currently checks selectedTypeIsSortable &amp;&amp; shouldSortByMetric, so it doesn&apos;t even need to be moved, but I went ahead and moved it to condense two consecutive similar conditionals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417372</commentid>
    <comment_count>12</comment_count>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-06-08 11:37:37 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Nit: WebKit style is to not use curly braces with single-line if/else statements.

Of course, my next Skia code reviewer wrote &quot;Nit: Skia style is to always use curly braces, even for single-line if/else statements.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417375</commentid>
    <comment_count>13</comment_count>
      <attachid>96446</attachid>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-06-08 11:39:24 -0700</bug_when>
    <thetext>Created attachment 96446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417472</commentid>
    <comment_count>14</comment_count>
      <attachid>96446</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-08 13:43:04 -0700</bug_when>
    <thetext>Comment on attachment 96446
Patch

Clearing flags on attachment: 96446

Committed r88381: &lt;http://trac.webkit.org/changeset/88381&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417474</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-08 13:43:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93776</attachid>
            <date>2011-05-17 08:57:50 -0700</date>
            <delta_ts>2011-05-31 12:48:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60964-20110517115749.patch</filename>
            <type>text/plain</type>
            <size>4089</size>
            <attacher name="Tom Hudson">tomhudson</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg2NjcyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTEtMDUtMTcgIFRvbSBIdWRzb24gIDx0b21odWRzb25AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBz
b3J0aW5nIGluIFJlYmFzZWxpbmVTZXJ2ZXIgYmFzZWQgb24gJ21ldHJpYycgZmllbGQgaW4gdW5l
eHBlY3RlZF9yZXN1bHRzLmpzb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYwOTY0CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvZGF0YS9yZWJhc2VsaW5lc2VydmVyL2luZGV4Lmh0bWw6CisgICAgICAgIEFkZCAnU29y
dCBUZXN0cycgbGluay4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
ZGF0YS9yZWJhc2VsaW5lc2VydmVyL21haW4uanM6CisgICAgICAgIChkaXNhYmxlU29ydGluZyk6
IEFjdGl2YXRlICdTb3J0IFRlc3RzJyBsaW5rLgorICAgICAgICAoZW5hYmxlU29ydGluZyk6IERl
YWN0aXZhdGUgJ1NvcnQgVGVzdHMnIGxpbmsuCisgICAgICAgIChzZWxlY3REaXJlY3RvcnkpOiBD
YWxsIGVuYWJsZVNvcnRpbmcoKS9kaXNhYmxlU29ydGluZygpIGRlcGVuZGluZworICAgICAgICBv
biBjdXJyZW50bHkgc2VsZWN0ZWQgZmFpbHVyZSB0eXBlLCBhbmQgc29ydCB0ZXN0cyBpZiByZXF1
ZXN0ZWQuCisKIDIwMTEtMDUtMTcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIE1ha2UgcnVuLWFwaS10ZXN0cyB3b3JrIG9uIFdpbmRvd3Mgd2hlbiB0aGVyZSBhcmUg
c3BhY2VzIGluIHRoZSBwYXRoCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvZGF0YS9yZWJhc2VsaW5lc2VydmVyL2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9p
bmRleC5odG1sCShyZXZpc2lvbiA4NjQzNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIvaW5kZXguaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNTEsNiArNTEsOCBAQAogICA8ZGl2IGlkPSJjb250cm9scyI+CiAgICAgPCEtLSBBZGQg
YSBkdW1teSA8c2VsZWN0PiBub2RlIHNvIHRoYXQgdGhpcyBsaW5lcyB1cCB3aXRoIHRoZSB0ZXh0
IG9uIHRoZSBsZWZ0IC0tPgogICAgIDxzZWxlY3Qgc3R5bGU9InZpc2liaWxpdHk6IGhpZGRlbiI+
PC9zZWxlY3Q+CisgICAgPHNwYW4gaWQ9InRvZ2dsZS1zb3J0IiBjbGFzcz0ibGluayI+U29ydCBU
ZXN0czwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0iZGl2aWRlciI+fDwvc3Bhbj4KICAgICA8c3Bh
biBpZD0idG9nZ2xlLWxvZyIgY2xhc3M9ImxpbmsiPkxvZzwvc3Bhbj4KICAgICA8c3BhbiBjbGFz
cz0iZGl2aWRlciI+fDwvc3Bhbj4KICAgICA8YSBocmVmPSIvcXVpdHF1aXRxdWl0Ij5FeGl0PC9h
PgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2RhdGEvcmViYXNl
bGluZXNlcnZlci9tYWluLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIvbWFpbi5qcwkocmV2aXNpb24gODY0
MzYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZGF0YS9yZWJhc2Vs
aW5lc2VydmVyL21haW4uanMJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDggQEAgdmFyIHRl
c3RzQnlEaXJlY3RvcnkgPSB7fTsKIHZhciBzZWxlY3RlZFRlc3RzID0gW107CiB2YXIgbG91cGU7
CiB2YXIgcXVldWU7Cit2YXIgc2hvdWxkU29ydEltYWdlcyA9IGZhbHNlOwordmFyIHdhc1NvcnRp
bmdJbWFnZXMgPSBmYWxzZTsKIAogZnVuY3Rpb24gbWFpbigpCiB7CkBAIC01Niw2ICs1OCw3IEBA
IGZ1bmN0aW9uIG1haW4oKQogICAgICQoJ3ByZXZpb3VzLXRlc3QnKS5hZGRFdmVudExpc3RlbmVy
KCdjbGljaycsIHByZXZpb3VzVGVzdCk7CiAKICAgICAkKCd0b2dnbGUtbG9nJykuYWRkRXZlbnRM
aXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsgdG9nZ2xlKCdsb2cnKTsgfSk7CisgICAgZGlz
YWJsZVNvcnRpbmcoKTsKIAogICAgIGxvdXBlID0gbmV3IExvdXBlKCk7CiAgICAgcXVldWUgPSBu
ZXcgUmViYXNlbGluZVF1ZXVlKCk7CkBAIC0xNDQsNiArMTQ3LDI1IEBAIGZ1bmN0aW9uIGRpc3Bs
YXlSZXN1bHRzKCkKICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICcnOwogfQogCitmdW5j
dGlvbiBlbmFibGVTb3J0aW5nKCkKK3sKKyAgICAkKCd0b2dnbGUtc29ydCcpLm9uY2xpY2sgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxkU29ydEltYWdlcyA9ICFzaG91bGRTb3J0SW1hZ2Vz
OworICAgICAgICB3YXNTb3J0aW5nSW1hZ2VzID0gc2hvdWxkU29ydEltYWdlczsKKyAgICAgICAg
c2VsZWN0RGlyZWN0b3J5KCk7CisgICAgfQorICAgICQoJ3RvZ2dsZS1zb3J0Jykuc3R5bGUuY29s
b3IgPSAnJzsKKyAgICBzaG91bGRTb3J0SW1hZ2VzID0gd2FzU29ydGluZ0ltYWdlczsKK30KKwor
ZnVuY3Rpb24gZGlzYWJsZVNvcnRpbmcoKQoreworICAgICQoJ3RvZ2dsZS1zb3J0Jykub25jbGlj
ayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAkKCd0b2dnbGUtc29ydCcpLnN0
eWxlLmNvbG9yID0gJ2dyYXknOworICAgIHdhc1NvcnRpbmdJbWFnZXMgPSBzaG91bGRTb3J0SW1h
Z2VzOworICAgIHNob3VsZFNvcnRJbWFnZXMgPSBmYWxzZTsKK30KKwogLyoqCiAgKiBGb3IgYSBn
aXZlbiBmYWlsdXJlIHR5cGUsIGdldHMgYWxsIHRoZSB0ZXN0cyBhbmQgZ3JvdXBzIHRoZW0gYnkg
ZGlyZWN0b3J5CiAgKiAocG9wdWxhdGluZyB0aGUgZGlyZWN0b3J5IHNlbGVjdG9yIHdpdGggdGhl
bSkuCkBAIC0yMjcsNiArMjQ5LDIzIEBAIGZ1bmN0aW9uIHNlbGVjdERpcmVjdG9yeSgpCiAgICAg
dmFyIHRlc3RTZWxlY3RvciA9ICQoJ3Rlc3Qtc2VsZWN0b3InKTsKICAgICB0ZXN0U2VsZWN0b3Iu
aW5uZXJIVE1MID0gJyc7CiAKKyAgICB2YXIgc2VsZWN0ZWRGYWlsdXJlVHlwZSA9IGdldFNlbGVj
dFZhbHVlKCdmYWlsdXJlLXR5cGUtc2VsZWN0b3InKTsKKyAgICB2YXIgc2FtcGxlU2VsZWN0ZWRU
ZXN0ID0gdGVzdHNCeUZhaWx1cmVUeXBlW3NlbGVjdGVkRmFpbHVyZVR5cGVdWzBdOworICAgIHZh
ciBzZWxlY3RlZFR5cGVJc1NvcnRhYmxlID0gcmVzdWx0cy50ZXN0c1tzYW1wbGVTZWxlY3RlZFRl
c3RdWydtZXRyaWMnXTsKKyAgICBpZiAoc2VsZWN0ZWRUeXBlSXNTb3J0YWJsZSkgeworICAgICAg
ICBlbmFibGVTb3J0aW5nKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGlzYWJsZVNvcnRpbmco
KTsKKyAgICB9CisKKyAgICBpZiAoc2hvdWxkU29ydEltYWdlcyAmJiBzZWxlY3RlZFR5cGVJc1Nv
cnRhYmxlKSB7CisgICAgICAgIGZvciAodmFyIHN0YXRlIGluIHRlc3RzQnlTdGF0ZSkgeworICAg
ICAgICAgICAgdGVzdHNCeVN0YXRlW3N0YXRlXS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0cy50ZXN0c1tiXS5tZXRyaWMgLSByZXN1bHRzLnRlc3Rz
W2FdLm1ldHJpYworICAgICAgICAgICAgfSkKKyAgICAgICAgfQorICAgIH0KKwogICAgIGZvciAo
dmFyIHN0YXRlIGluIHRlc3RzQnlTdGF0ZSkgewogICAgICAgICB2YXIgc3RhdGVPcHRpb24gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTsKICAgICAgICAgc3RhdGVPcHRpb24udGV4
dENvbnRlbnQgPSBTVEFURV9UT19ESVNQTEFZX1NUQVRFW3N0YXRlXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95465</attachid>
            <date>2011-05-31 12:48:34 -0700</date>
            <delta_ts>2011-06-08 11:39:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60964-20110531154833.patch</filename>
            <type>text/plain</type>
            <size>4968</size>
            <attacher name="Tom Hudson">tomhudson</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg3NzQ0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTEtMDUtMzEgIFRvbSBIdWRzb24gIDx0b21odWRzb25AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBz
b3J0aW5nIGluIFJlYmFzZWxpbmVTZXJ2ZXIgYmFzZWQgb24gJ21ldHJpYycgZmllbGQgaW4gdW5l
eHBlY3RlZF9yZXN1bHRzLmpzb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYwOTY0CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvZGF0YS9yZWJhc2VsaW5lc2VydmVyL2luZGV4Lmh0bWw6CisgICAgICAgIEFkZCAnU29y
dCB0ZXN0cyBieSBtZXRyaWMnIGxpbmsuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9tYWluLmpzOgorICAgICAgICAoZGlzYWJs
ZVNvcnRpbmcpOiBBY3RpdmF0ZSAnU29ydCB0ZXN0cyBieSBtZXRyaWMnIGxpbmsuCisgICAgICAg
IChlbmFibGVTb3J0aW5nKTogRGVhY3RpdmF0ZSAnU29ydCB0ZXN0cyBieSBtZXRyaWMnIGxpbmsu
CisgICAgICAgIChzZWxlY3REaXJlY3RvcnkpOiBDYWxsIGVuYWJsZVNvcnRpbmcoKS9kaXNhYmxl
U29ydGluZygpIGRlcGVuZGluZworICAgICAgICBvbiBjdXJyZW50bHkgc2VsZWN0ZWQgZmFpbHVy
ZSB0eXBlLCBhbmQgc29ydCB0ZXN0cyBpZiByZXF1ZXN0ZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9tYWluLmNzczoKKyAg
ICAgICAgTmV3IC5kaXNhYmxlZC1jb250cm9sIGNsYXNzIGZvciBkZWFjdGl2YXRlZCBsaW5rcy4K
KwogMjAxMS0wNS0zMSAgS3Jpc3TDs2YgS29zenR5w7MgIDxLb3N6dHlvLktyaXN0b2ZAc3R1ZC51
LXN6ZWdlZC5odT4KIAogICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZGF0YS9yZWJhc2VsaW5l
c2VydmVyL2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9pbmRleC5odG1sCShyZXZpc2lvbiA4
Nzc0NCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kYXRhL3JlYmFz
ZWxpbmVzZXJ2ZXIvaW5kZXguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQAog
ICA8ZGl2IGlkPSJjb250cm9scyI+CiAgICAgPCEtLSBBZGQgYSBkdW1teSA8c2VsZWN0PiBub2Rl
IHNvIHRoYXQgdGhpcyBsaW5lcyB1cCB3aXRoIHRoZSB0ZXh0IG9uIHRoZSBsZWZ0IC0tPgogICAg
IDxzZWxlY3Qgc3R5bGU9InZpc2liaWxpdHk6IGhpZGRlbiI+PC9zZWxlY3Q+CisgICAgPHNwYW4g
aWQ9InRvZ2dsZS1zb3J0IiBjbGFzcz0ibGluayI+U29ydCB0ZXN0cyBieSBtZXRyaWM8L3NwYW4+
CisgICAgPHNwYW4gY2xhc3M9ImRpdmlkZXIiPnw8L3NwYW4+CiAgICAgPHNwYW4gaWQ9InRvZ2ds
ZS1sb2ciIGNsYXNzPSJsaW5rIj5Mb2c8L3NwYW4+CiAgICAgPHNwYW4gY2xhc3M9ImRpdmlkZXIi
Pnw8L3NwYW4+CiAgICAgPGEgaHJlZj0iL3F1aXRxdWl0cXVpdCI+RXhpdDwvYT4KSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIv
bWFpbi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9tYWluLmNzcwkocmV2aXNpb24gODc3NDQpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZGF0YS9yZWJhc2VsaW5lc2VydmVy
L21haW4uY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDEwIEBAIGEsIC5saW5rIHsK
ICAgZmxvYXQ6IHJpZ2h0OwogfQogCisuZGlzYWJsZWQtY29udHJvbCB7CisgIGNvbG9yOiAjODg4
OworfQorCiAjdGVzdC1vdXRwdXQgewogICBib3JkZXItc3BhY2luZzogMDsKICAgYm9yZGVyLWNv
bGxhcHNlOiBjb2xsYXBzZTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIvbWFpbi5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZGF0YS9yZWJhc2VsaW5lc2VydmVyL21haW4u
anMJKHJldmlzaW9uIDg3NzQ0KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9tYWluLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2
ICs0Niw4IEBAIHZhciB0ZXN0c0J5RGlyZWN0b3J5ID0ge307CiB2YXIgc2VsZWN0ZWRUZXN0cyA9
IFtdOwogdmFyIGxvdXBlOwogdmFyIHF1ZXVlOwordmFyIHNob3VsZFNvcnRUZXN0c0J5TWV0cmlj
ID0gZmFsc2U7Cit2YXIgd2FzU29ydGluZ1Rlc3RzQnlNZXRyaWMgPSBmYWxzZTsKIAogZnVuY3Rp
b24gbWFpbigpCiB7CkBAIC01Niw2ICs1OCw3IEBAIGZ1bmN0aW9uIG1haW4oKQogICAgICQoJ3By
ZXZpb3VzLXRlc3QnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHByZXZpb3VzVGVzdCk7CiAK
ICAgICAkKCd0b2dnbGUtbG9nJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigp
IHsgdG9nZ2xlKCdsb2cnKTsgfSk7CisgICAgZGlzYWJsZVNvcnRpbmcoKTsKIAogICAgIGxvdXBl
ID0gbmV3IExvdXBlKCk7CiAgICAgcXVldWUgPSBuZXcgUmViYXNlbGluZVF1ZXVlKCk7CkBAIC0x
NDQsNiArMTQ3LDI3IEBAIGZ1bmN0aW9uIGRpc3BsYXlSZXN1bHRzKCkKICAgICBkb2N1bWVudC5i
b2R5LmNsYXNzTmFtZSA9ICcnOwogfQogCitmdW5jdGlvbiBlbmFibGVTb3J0aW5nKCkKK3sKKyAg
ICAkKCd0b2dnbGUtc29ydCcpLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxk
U29ydFRlc3RzQnlNZXRyaWMgPSAhc2hvdWxkU29ydFRlc3RzQnlNZXRyaWM7CisgICAgICAgIHdh
c1NvcnRpbmdUZXN0c0J5TWV0cmljID0gc2hvdWxkU29ydFRlc3RzQnlNZXRyaWM7CisgICAgICAg
IC8vIFJlZ2VuZXJhdGVzIHRoZSBsaXN0IG9mIHRlc3RzOyB0aGlzIGFscGhhYmV0aXplcywgYW5k
CisgICAgICAgIC8vIHRoZW4gcmUtc29ydHMgaWYgd2UgdHVybmVkIHNvcnRpbmcgb24uCisgICAg
ICAgIHNlbGVjdERpcmVjdG9yeSgpOworICAgIH0KKyAgICAkKCd0b2dnbGUtc29ydCcpLmNsYXNz
TGlzdC5yZW1vdmUoJ2Rpc2FibGVkLWNvbnRyb2wnKTsKKyAgICBzaG91bGRTb3J0VGVzdHNCeU1l
dHJpYyA9IHdhc1NvcnRpbmdUZXN0c0J5TWV0cmljOworfQorCitmdW5jdGlvbiBkaXNhYmxlU29y
dGluZygpCit7CisgICAgJCgndG9nZ2xlLXNvcnQnKS5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgICQoJ3RvZ2dsZS1zb3J0JykuY2xhc3NMaXN0LmFkZCgnZGlzYWJs
ZWQtY29udHJvbCcpOworICAgIHdhc1NvcnRpbmdUZXN0c0J5TWV0cmljID0gc2hvdWxkU29ydFRl
c3RzQnlNZXRyaWM7CisgICAgc2hvdWxkU29ydFRlc3RzQnlNZXRyaWMgPSBmYWxzZTsKK30KKwog
LyoqCiAgKiBGb3IgYSBnaXZlbiBmYWlsdXJlIHR5cGUsIGdldHMgYWxsIHRoZSB0ZXN0cyBhbmQg
Z3JvdXBzIHRoZW0gYnkgZGlyZWN0b3J5CiAgKiAocG9wdWxhdGluZyB0aGUgZGlyZWN0b3J5IHNl
bGVjdG9yIHdpdGggdGhlbSkuCkBAIC0yMjcsNiArMjUxLDIzIEBAIGZ1bmN0aW9uIHNlbGVjdERp
cmVjdG9yeSgpCiAgICAgdmFyIHRlc3RTZWxlY3RvciA9ICQoJ3Rlc3Qtc2VsZWN0b3InKTsKICAg
ICB0ZXN0U2VsZWN0b3IuaW5uZXJIVE1MID0gJyc7CiAKKyAgICB2YXIgc2VsZWN0ZWRGYWlsdXJl
VHlwZSA9IGdldFNlbGVjdFZhbHVlKCdmYWlsdXJlLXR5cGUtc2VsZWN0b3InKTsKKyAgICB2YXIg
c2FtcGxlU2VsZWN0ZWRUZXN0ID0gdGVzdHNCeUZhaWx1cmVUeXBlW3NlbGVjdGVkRmFpbHVyZVR5
cGVdWzBdOworICAgIHZhciBzZWxlY3RlZFR5cGVJc1NvcnRhYmxlID0gJ21ldHJpYycgaW4gcmVz
dWx0cy50ZXN0c1tzYW1wbGVTZWxlY3RlZFRlc3RdOworICAgIGlmIChzZWxlY3RlZFR5cGVJc1Nv
cnRhYmxlKSB7CisgICAgICAgIGVuYWJsZVNvcnRpbmcoKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBkaXNhYmxlU29ydGluZygpOworICAgIH0KKworICAgIGlmIChzaG91bGRTb3J0VGVzdHNCeU1l
dHJpYyAmJiBzZWxlY3RlZFR5cGVJc1NvcnRhYmxlKSB7CisgICAgICAgIGZvciAodmFyIHN0YXRl
IGluIHRlc3RzQnlTdGF0ZSkgeworICAgICAgICAgICAgdGVzdHNCeVN0YXRlW3N0YXRlXS5zb3J0
KGZ1bmN0aW9uKGEsIGIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0cy50ZXN0c1ti
XS5tZXRyaWMgLSByZXN1bHRzLnRlc3RzW2FdLm1ldHJpYworICAgICAgICAgICAgfSkKKyAgICAg
ICAgfQorICAgIH0KKwogICAgIGZvciAodmFyIHN0YXRlIGluIHRlc3RzQnlTdGF0ZSkgewogICAg
ICAgICB2YXIgc3RhdGVPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTsK
ICAgICAgICAgc3RhdGVPcHRpb24udGV4dENvbnRlbnQgPSBTVEFURV9UT19ESVNQTEFZX1NUQVRF
W3N0YXRlXTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96446</attachid>
            <date>2011-06-08 11:39:24 -0700</date>
            <delta_ts>2011-06-08 13:43:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60964-20110608143922.patch</filename>
            <type>text/plain</type>
            <size>4708</size>
            <attacher name="Tom Hudson">tomhudson</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg4MzU3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTEtMDYtMDggIFRvbSBIdWRzb24gIDx0b21odWRzb25AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBz
b3J0aW5nIGluIFJlYmFzZWxpbmVTZXJ2ZXIgYmFzZWQgb24gJ21ldHJpYycgZmllbGQgaW4gdW5l
eHBlY3RlZF9yZXN1bHRzLmpzb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYwOTY0CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvZGF0YS9yZWJhc2VsaW5lc2VydmVyL2luZGV4Lmh0bWw6CisgICAgICAgIEFkZCAnU29y
dCB0ZXN0cyBieSBtZXRyaWMnIGxpbmsuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9tYWluLmpzOgorICAgICAgICAoZGlzYWJs
ZVNvcnRpbmcpOiBBY3RpdmF0ZSAnU29ydCB0ZXN0cyBieSBtZXRyaWMnIGxpbmsuCisgICAgICAg
IChlbmFibGVTb3J0aW5nKTogRGVhY3RpdmF0ZSAnU29ydCB0ZXN0cyBieSBtZXRyaWMnIGxpbmsu
CisgICAgICAgIChzZWxlY3REaXJlY3RvcnkpOiBDYWxsIGVuYWJsZVNvcnRpbmcoKS9kaXNhYmxl
U29ydGluZygpIGRlcGVuZGluZworICAgICAgICBvbiBjdXJyZW50bHkgc2VsZWN0ZWQgZmFpbHVy
ZSB0eXBlLCBhbmQgc29ydCB0ZXN0cyBpZiByZXF1ZXN0ZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9tYWluLmNzczoKKyAg
ICAgICAgTmV3IC5kaXNhYmxlZC1jb250cm9sIGNsYXNzIGZvciBkZWFjdGl2YXRlZCBsaW5rcy4K
KwogMjAxMS0wNi0wOCAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQWRkIFBpZXJyZSBSb3NzaSB0byBjb250cmlidXRvcnMgbGlzdCBmb3IgRVotQ0MuCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZGF0YS9yZWJhc2VsaW5lc2Vy
dmVyL2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9pbmRleC5odG1sCShyZXZpc2lvbiA4ODM1
NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kYXRhL3JlYmFzZWxp
bmVzZXJ2ZXIvaW5kZXguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQAogICA8
ZGl2IGlkPSJjb250cm9scyI+CiAgICAgPCEtLSBBZGQgYSBkdW1teSA8c2VsZWN0PiBub2RlIHNv
IHRoYXQgdGhpcyBsaW5lcyB1cCB3aXRoIHRoZSB0ZXh0IG9uIHRoZSBsZWZ0IC0tPgogICAgIDxz
ZWxlY3Qgc3R5bGU9InZpc2liaWxpdHk6IGhpZGRlbiI+PC9zZWxlY3Q+CisgICAgPHNwYW4gaWQ9
InRvZ2dsZS1zb3J0IiBjbGFzcz0ibGluayI+U29ydCB0ZXN0cyBieSBtZXRyaWM8L3NwYW4+Cisg
ICAgPHNwYW4gY2xhc3M9ImRpdmlkZXIiPnw8L3NwYW4+CiAgICAgPHNwYW4gaWQ9InRvZ2dsZS1s
b2ciIGNsYXNzPSJsaW5rIj5Mb2c8L3NwYW4+CiAgICAgPHNwYW4gY2xhc3M9ImRpdmlkZXIiPnw8
L3NwYW4+CiAgICAgPGEgaHJlZj0iL3F1aXRxdWl0cXVpdCI+RXhpdDwvYT4KSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIvbWFp
bi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L2RhdGEvcmViYXNlbGluZXNlcnZlci9tYWluLmNzcwkocmV2aXNpb24gODgzNTcpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZGF0YS9yZWJhc2VsaW5lc2VydmVyL21h
aW4uY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDEwIEBAIGEsIC5saW5rIHsKICAg
ZmxvYXQ6IHJpZ2h0OwogfQogCisuZGlzYWJsZWQtY29udHJvbCB7CisgIGNvbG9yOiAjODg4Owor
fQorCiAjdGVzdC1vdXRwdXQgewogICBib3JkZXItc3BhY2luZzogMDsKICAgYm9yZGVyLWNvbGxh
cHNlOiBjb2xsYXBzZTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIvbWFpbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZGF0YS9yZWJhc2VsaW5lc2VydmVyL21haW4uanMJ
KHJldmlzaW9uIDg4MzU3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L2RhdGEvcmViYXNlbGluZXNlcnZlci9tYWluLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0
Niw3IEBAIHZhciB0ZXN0c0J5RGlyZWN0b3J5ID0ge307CiB2YXIgc2VsZWN0ZWRUZXN0cyA9IFtd
OwogdmFyIGxvdXBlOwogdmFyIHF1ZXVlOwordmFyIHNob3VsZFNvcnRUZXN0c0J5TWV0cmljID0g
ZmFsc2U7CiAKIGZ1bmN0aW9uIG1haW4oKQogewpAQCAtNTYsNiArNTcsNyBAQCBmdW5jdGlvbiBt
YWluKCkKICAgICAkKCdwcmV2aW91cy10ZXN0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBw
cmV2aW91c1Rlc3QpOwogCiAgICAgJCgndG9nZ2xlLWxvZycpLmFkZEV2ZW50TGlzdGVuZXIoJ2Ns
aWNrJywgZnVuY3Rpb24oKSB7IHRvZ2dsZSgnbG9nJyk7IH0pOworICAgIGRpc2FibGVTb3J0aW5n
KCk7CiAKICAgICBsb3VwZSA9IG5ldyBMb3VwZSgpOwogICAgIHF1ZXVlID0gbmV3IFJlYmFzZWxp
bmVRdWV1ZSgpOwpAQCAtMTQ0LDYgKzE0NiwyMyBAQCBmdW5jdGlvbiBkaXNwbGF5UmVzdWx0cygp
CiAgICAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAnJzsKIH0KIAorZnVuY3Rpb24gZW5hYmxl
U29ydGluZygpCit7CisgICAgJCgndG9nZ2xlLXNvcnQnKS5vbmNsaWNrID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHNob3VsZFNvcnRUZXN0c0J5TWV0cmljID0gIXNob3VsZFNvcnRUZXN0c0J5TWV0
cmljOworICAgICAgICAvLyBSZWdlbmVyYXRlcyB0aGUgbGlzdCBvZiB0ZXN0czsgdGhpcyBhbHBo
YWJldGl6ZXMsIGFuZAorICAgICAgICAvLyB0aGVuIHJlLXNvcnRzIGlmIHdlIHR1cm5lZCBzb3J0
aW5nIG9uLgorICAgICAgICBzZWxlY3REaXJlY3RvcnkoKTsKKyAgICB9CisgICAgJCgndG9nZ2xl
LXNvcnQnKS5jbGFzc0xpc3QucmVtb3ZlKCdkaXNhYmxlZC1jb250cm9sJyk7Cit9CisKK2Z1bmN0
aW9uIGRpc2FibGVTb3J0aW5nKCkKK3sKKyAgICAkKCd0b2dnbGUtc29ydCcpLm9uY2xpY2sgPSBm
dW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgJCgndG9nZ2xlLXNvcnQnKS5jbGFzc0xp
c3QuYWRkKCdkaXNhYmxlZC1jb250cm9sJyk7Cit9CisKIC8qKgogICogRm9yIGEgZ2l2ZW4gZmFp
bHVyZSB0eXBlLCBnZXRzIGFsbCB0aGUgdGVzdHMgYW5kIGdyb3VwcyB0aGVtIGJ5IGRpcmVjdG9y
eQogICogKHBvcHVsYXRpbmcgdGhlIGRpcmVjdG9yeSBzZWxlY3RvciB3aXRoIHRoZW0pLgpAQCAt
MjI3LDYgKzI0NiwyMSBAQCBmdW5jdGlvbiBzZWxlY3REaXJlY3RvcnkoKQogICAgIHZhciB0ZXN0
U2VsZWN0b3IgPSAkKCd0ZXN0LXNlbGVjdG9yJyk7CiAgICAgdGVzdFNlbGVjdG9yLmlubmVySFRN
TCA9ICcnOwogCisgICAgdmFyIHNlbGVjdGVkRmFpbHVyZVR5cGUgPSBnZXRTZWxlY3RWYWx1ZSgn
ZmFpbHVyZS10eXBlLXNlbGVjdG9yJyk7CisgICAgdmFyIHNhbXBsZVNlbGVjdGVkVGVzdCA9IHRl
c3RzQnlGYWlsdXJlVHlwZVtzZWxlY3RlZEZhaWx1cmVUeXBlXVswXTsKKyAgICB2YXIgc2VsZWN0
ZWRUeXBlSXNTb3J0YWJsZSA9ICdtZXRyaWMnIGluIHJlc3VsdHMudGVzdHNbc2FtcGxlU2VsZWN0
ZWRUZXN0XTsKKyAgICBpZiAoc2VsZWN0ZWRUeXBlSXNTb3J0YWJsZSkgeworICAgICAgICBlbmFi
bGVTb3J0aW5nKCk7CisgICAgICAgIGlmIChzaG91bGRTb3J0VGVzdHNCeU1ldHJpYykgeworICAg
ICAgICAgICAgZm9yICh2YXIgc3RhdGUgaW4gdGVzdHNCeVN0YXRlKSB7CisgICAgICAgICAgICAg
ICAgdGVzdHNCeVN0YXRlW3N0YXRlXS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdHMudGVzdHNbYl0ubWV0cmljIC0gcmVzdWx0cy50ZXN0c1th
XS5tZXRyaWMKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfSBlbHNlCisgICAgICAgIGRpc2FibGVTb3J0aW5nKCk7CisKICAgICBmb3IgKHZhciBzdGF0
ZSBpbiB0ZXN0c0J5U3RhdGUpIHsKICAgICAgICAgdmFyIHN0YXRlT3B0aW9uID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7CiAgICAgICAgIHN0YXRlT3B0aW9uLnRleHRDb250ZW50
ID0gU1RBVEVfVE9fRElTUExBWV9TVEFURVtzdGF0ZV07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>