<?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>33039</bug_id>
          
          <creation_ts>2009-12-29 20:38:34 -0800</creation_ts>
          <short_desc>[bzt] Bugzilla-tool dies with an error if it cannot find a keychain entry for bugs.webkit.org</short_desc>
          <delta_ts>2010-01-04 13:27:43 -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>Mac</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32728</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>175773</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-29 20:38:34 -0800</bug_when>
    <thetext>Under Mac OS X, bugzilla-tool tries to query the keychain and Security framework (via /usr/sbin/security) for an internet-password entry for bugs.webkit.org so that it can use it to login to bugs.webkit.org. However, if no such entry exists then bugzilla-tool dies with an error:

Failed to run &quot;[&apos;/usr/bin/security&apos;, &apos;find-internet-password&apos;, &apos;-g&apos;, &apos;-s&apos;, &apos;bugs.webkit.org&apos;]&quot; exit_code: 44
security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.

Failed to run &quot;[&apos;/usr/bin/security&apos;, &apos;find-internet-password&apos;, &apos;-g&apos;, &apos;-s&apos;, &apos;bugs.webkit.org&apos;]&quot; exit_code: 44</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175774</commentid>
    <comment_count>1</comment_count>
      <attachid>45635</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-29 20:39:53 -0800</bug_when>
    <thetext>Created attachment 45635
Patch with unit test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175776</commentid>
    <comment_count>2</comment_count>
      <attachid>45635</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-29 20:42:49 -0800</bug_when>
    <thetext>Comment on attachment 45635
Patch with unit test

Thanks Dan.  It seems kind of silly to have that text twice, but I guess that makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175777</commentid>
    <comment_count>3</comment_count>
      <attachid>45635</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-29 20:44:46 -0800</bug_when>
    <thetext>Comment on attachment 45635
Patch with unit test

The unit test shoudl just use Credentials.keychain_entry_not_found instead of re-defining it, no?

In reality, what we should do is that we should prompt the user for username and password (which I think might be broken?) and then store those in the keychain for them.  See 32728.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175780</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-29 20:49:50 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 45635 [details])
&gt; The unit test shoudl just use Credentials.keychain_entry_not_found instead of
&gt; re-defining it, no?
Yes, will use Credentials.keychain_entry_not_found instead of redefining. Will fix before I land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175781</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-29 20:49:57 -0800</bug_when>
    <thetext>Attachment 45635 was posted by a committer and has review+, assigning to Daniel Bates for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175793</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-29 22:05:27 -0800</bug_when>
    <thetext>Committed in &lt;http://trac.webkit.org/changeset/52643&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175807</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-29 22:33:45 -0800</bug_when>
    <thetext>The patch &lt;https://bugs.webkit.org/attachment.cgi?id=45635&gt; did not fix this issue.

The following is the terminal output when I commited bug #33041:

noric:WebKit dbates$ WebKitTools/Scripts/bugzilla-tool land-diff 33041 --no-build
Fetching: https://bugs.webkit.org/show_bug.cgi?id=33041&amp;ctype=xml
Guessing &quot;Eric Seidel&quot; as reviewer from attachment 45639 on bug 33041.
Parsing ChangeLog: WebKitTools/ChangeLog
Updating bug 33041
Reading Keychain for bugs.webkit.org account and password.  Click &quot;Allow&quot; to continue...
Failed to run &quot;[&apos;/usr/bin/security&apos;, &apos;find-internet-password&apos;, &apos;-g&apos;, &apos;-s&apos;, &apos;bugs.webkit.org&apos;]&quot; exit_code: 44
security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.

Failed to run &quot;[&apos;/usr/bin/security&apos;, &apos;find-internet-password&apos;, &apos;-g&apos;, &apos;-s&apos;, &apos;bugs.webkit.org&apos;]&quot; exit_code: 44</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175810</commentid>
    <comment_count>8</comment_count>
      <attachid>45635</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-29 22:37:38 -0800</bug_when>
    <thetext>Comment on attachment 45635
Patch with unit test

Clearing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175817</commentid>
    <comment_count>9</comment_count>
      <attachid>45644</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-29 23:13:28 -0800</bug_when>
    <thetext>Created attachment 45644
Patch with unit test

Second attempt to fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175818</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-29 23:16:30 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45644 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175819</commentid>
    <comment_count>11</comment_count>
      <attachid>45645</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-29 23:18:32 -0800</bug_when>
    <thetext>Created attachment 45645
Patch with unit test

Minor correction. Removed &apos;;&apos; from method CredentialsTest.test_security_output_parse_entry_not_found</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175823</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-29 23:21:54 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45645 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175824</commentid>
    <comment_count>13</comment_count>
      <attachid>45645</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-29 23:25:49 -0800</bug_when>
    <thetext>Comment on attachment 45645
Patch with unit test

I think that run_command actually throws an OSError if it can&apos;t find the command.

So you&apos;re only going to get a script error, with exit code 44 when it can&apos;t find the keychain item.  You only get ScriptErrors when the command runs but exits non-zero AFAIK.

Why does your test work?  And does it work on non mac?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175825</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-29 23:32:18 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 45645 [details])
&gt; I think that run_command actually throws an OSError if it can&apos;t find the
&gt; command.

No, it longer does because of the patch for bug #32896. We now catch OSErrors, by line 126 &lt;http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/modules/executive.py?rev=52587#L126&gt;. 

&gt; So you&apos;re only going to get a script error, with exit code 44 when it can&apos;t
&gt; find the keychain item.  You only get ScriptErrors when the command runs but
&gt; exits non-zero AFAIK.

Should we then test by output like I originally did? I changed it because the output message could change but I think it is less likely for the error code to change.

&gt; Why does your test work?  And does it work on non mac?

What do you mean? No, I haven&apos;t tested this under Windows, yet (will do).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175829</commentid>
    <comment_count>15</comment_count>
      <attachid>45645</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-29 23:42:49 -0800</bug_when>
    <thetext>Comment on attachment 45645
Patch with unit test

OK.  So I now understand that the OSError will be caught.  We should capture and ASSERT output in the unit test.  Seems silly to capture output if we&apos;re not going to look at it.  We can point the tool to /does/not/exist and try that, and also have a mac-only test which searches for a non-existant keychain entry?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175834</commentid>
    <comment_count>16</comment_count>
      <attachid>45645</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-30 00:00:54 -0800</bug_when>
    <thetext>Comment on attachment 45645
Patch with unit test

Clearing review patch while I work on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175983</commentid>
    <comment_count>17</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-30 11:09:09 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 45645 [details])
&gt; OK.  So I now understand that the OSError will be caught.  We should capture
&gt; and ASSERT output in the unit test.  Seems silly to capture output if we&apos;re not
&gt; going to look at it. 

This is redundant since we already capture and assert the output in the test method _assert_security_call, &lt;http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/modules/credentials_unittest.py?rev=52644#L85&gt;.

&gt;We can point the tool to /does/not/exist and try that,

I don&apos;t follow.  Are you implying to test for when the security tool does not exist? If so, we already have a generic test when the run_command is passed a command that does not exist, see methods est_run_command_with_bad_command_check_return_code and test_run_command_with_bad_command_check_calls_error_handler in file executive_unittest.py &lt;http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/modules/executive_unittest.py?rev=52587.

&gt; and also have a mac-only test which searches for a non-existant keychain entry?

I can add a check to the test to only run if the platform is Mac. Notice, if we are not on a Mac then we never call the method Credentials._run_security_tool since the calling method Credentials._credentials_from_keychain returns [username, None] by line 81 &lt;http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/modules/credentials.py?rev=52667#L81&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175989</commentid>
    <comment_count>18</comment_count>
      <attachid>45675</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-30 11:26:48 -0800</bug_when>
    <thetext>Created attachment 45675
Patch with unit tests

Modified CredentialTest.test_security_output_parse_entry_not_found to return (without running the security tool) if we are on a non-Mac, since the security tool is Mac-specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176355</commentid>
    <comment_count>19</comment_count>
      <attachid>45675</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-02 12:17:47 -0800</bug_when>
    <thetext>Comment on attachment 45675
Patch with unit tests

Hum.  Seems Credentials already has an is_mac() test, no?  It&apos;s probably fine to duplicated the code in the unit test too, it is only one-line. :)

Remind me why we&apos;re discarding the outputCapture output again?  Seems we should have a comment there to explain why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176378</commentid>
    <comment_count>20</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-01-02 13:24:55 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 45675 [details])
&gt; Hum.  Seems Credentials already has an is_mac() test, no?  It&apos;s probably fine
&gt; to duplicated the code in the unit test too, it is only one-line. :)

I&apos;ll change it to call Credentials._is_mac_os_x().

I didn&apos;t think it was good practice for a unit test to depend on the code it is testing.

&gt; Remind me why we&apos;re discarding the outputCapture output again?  Seems we should
&gt; have a comment there to explain why.

I can add a comment. We should not need to assert the output captured because we already did that in the method _assert_security_call, &lt;http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/modules/credentials_unittest.py?rev=52644#L80&gt;. See line 85 for the assertion.

I could assert the output, but then if we change it in the future, a person must now update two unit tests: Credentials._assert_security_call() and Credentials.test_security_output_parse_entry_not_found().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176392</commentid>
    <comment_count>21</comment_count>
      <attachid>45752</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-01-02 14:32:37 -0800</bug_when>
    <thetext>Created attachment 45752
Patch with unit test

Modified the unit test method CredentialsTest.test_security_output_parse_entry_not_found() to call Credentials._is_mac_os_x() instead of querying for the platform info. directly. Also, added a comment to explain why we are ignoring the captured output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176393</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-02 14:33:37 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45752 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176510</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-03 19:08:03 -0800</bug_when>
    <thetext>Is this the same as bug 32892?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176511</commentid>
    <comment_count>24</comment_count>
      <attachid>45752</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-03 19:08:40 -0800</bug_when>
    <thetext>Comment on attachment 45752
Patch with unit test

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176568</commentid>
    <comment_count>25</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-01-04 00:45:32 -0800</bug_when>
    <thetext>*** Bug 32892 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176570</commentid>
    <comment_count>26</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-01-04 00:47:35 -0800</bug_when>
    <thetext>Committed patch &lt;https://bugs.webkit.org/attachment.cgi?id=45752&gt; in &lt;http://trac.webkit.org/changeset/52710&gt;.

Committed unreviewed fix in &lt;http://trac.webkit.org/changeset/52712&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176572</commentid>
    <comment_count>27</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-01-04 00:48:20 -0800</bug_when>
    <thetext>Confirmed that the unreviewed fix works when I committed bug #33097.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45635</attachid>
            <date>2009-12-29 20:39:53 -0800</date>
            <delta_ts>2009-12-29 23:18:32 -0800</delta_ts>
            <desc>Patch with unit test</desc>
            <filename>Bug33039.patch</filename>
            <type>text/plain</type>
            <size>3465</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUyNjQwKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMTItMjkgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzAzOQor
CisgICAgICAgIFtienRdIEZpeGVzIGFuIGlzc3VlIHdoZXJlIGJ1Z3ppbGxhLXRvb2wgZGllcyB3
aGVuIHRoZSBrZXljaGFpbiBsb29rdXAKKyAgICAgICAgZmFpbHMgdG8gZmluZCBhbiBlbnRyeSBm
b3IgYnVncy53ZWJraXQub3JnLgorICAgICAgICAKKyAgICAgICAgVW5kZXIgTWFjIE9TIFgsIGJ1
Z3ppbGxhLXRvb2wgdHJpZXMgdG8gcXVlcnkgdGhlIGtleWNoYWluIGFuZCBTZWN1cml0eQorICAg
ICAgICBmcmFtZXdvcmsgKHZpYSAvdXNyL3NiaW4vc2VjdXJpdHkpIGZvciBhbiBpbnRlcm5ldC1w
YXNzd29yZCBlbnRyeSBmb3IKKyAgICAgICAgYnVncy53ZWJraXQub3JnIHNvIHRoYXQgaXQgY2Fu
IHVzZSBpdCB0byBsb2dpbiB0byBidWdzLndlYmtpdC5vcmcuCisgICAgICAgIEhvd2V2ZXIsIGlm
IG5vIHN1Y2ggZW50cnkgZXhpc3RzIHRoZW4gYnVnemlsbGEtdG9vbCBkaWVzIHdpdGggYW4gZXJy
b3IuCisKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY3JlZGVudGlhbHMucHk6IE1vZGlmaWVk
IG1ldGhvZCBfcGFyc2Vfc2VjdXJpdHlfdG9vbF9vdXRwdXQgdG8gcmV0dXJuCisgICAgICAgIFtO
b25lLCBOb25lXSBpZiAvdXNyL3NiaW4vc2VjdXJpdHkgY2Fubm90IGZpbmQga2V5Y2hhaW4gZW50
cnkgZm9yIGJ1Z3Mud2Via2l0Lm9yZy4KKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY3JlZGVu
dGlhbHNfdW5pdHRlc3QucHk6IEFkZGVkIG1ldGhvZCB0ZXN0X3NlY3VyaXR5X291dHB1dF9wYXJz
ZV9lbnRyeV9ub3RfZm91bmQuCisKIDIwMDktMTItMjkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktp
dFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFscy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3JlZGVudGlhbHMucHkJKHJldmlzaW9uIDUyNjI1KQor
KysgV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw4IEBAIGZyb20gbW9kdWxlcy5sb2dnaW5nIGltcG9ydCBsb2cKIGZy
b20gbW9kdWxlcy5zY20gaW1wb3J0IEdpdAogCiBjbGFzcyBDcmVkZW50aWFscyhvYmplY3QpOgor
ICAgIGtleWNoYWluX2VudHJ5X25vdF9mb3VuZCA9ICJzZWN1cml0eTogU2VjS2V5Y2hhaW5TZWFy
Y2hDb3B5TmV4dDogVGhlIHNwZWNpZmllZCBpdGVtIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiB0aGUg
a2V5Y2hhaW4uIgorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIGdpdF9wcmVmaXg9Tm9u
ZSwgZXhlY3V0aXZlPU5vbmUsIGN3ZD1vcy5nZXRjd2QoKSk6CiAgICAgICAgIHNlbGYuaG9zdCA9
IGhvc3QKICAgICAgICAgc2VsZi5naXRfcHJlZml4ID0gZ2l0X3ByZWZpeApAQCAtNjEsNiArNjMs
OCBAQCBjbGFzcyBDcmVkZW50aWFscyhvYmplY3QpOgogICAgICAgICByZXR1cm4gcGxhdGZvcm0u
bWFjX3ZlcigpWzBdCiAKICAgICBkZWYgX3BhcnNlX3NlY3VyaXR5X3Rvb2xfb3V0cHV0KHNlbGYs
IHNlY3VyaXR5X291dHB1dCk6CisgICAgICAgIGlmIHNlY3VyaXR5X291dHB1dCA9PSBzZWxmLmtl
eWNoYWluX2VudHJ5X25vdF9mb3VuZDoKKyAgICAgICAgICAgIHJldHVybiBbTm9uZSwgTm9uZV0K
ICAgICAgICAgdXNlcm5hbWUgPSBzZWxmLl9rZXljaGFpbl92YWx1ZV93aXRoX2xhYmVsKCJeXHMq
XCJhY2N0XCI8YmxvYj49Iiwgc2VjdXJpdHlfb3V0cHV0KQogICAgICAgICBwYXNzd29yZCA9IHNl
bGYuX2tleWNoYWluX3ZhbHVlX3dpdGhfbGFiZWwoIl5wYXNzd29yZDogIiwgc2VjdXJpdHlfb3V0
cHV0KQogICAgICAgICByZXR1cm4gW3VzZXJuYW1lLCBwYXNzd29yZF0KSW5kZXg6IFdlYktpdFRv
b2xzL1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFsc191bml0dGVzdC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3JlZGVudGlhbHNfdW5pdHRlc3QucHkJKHJl
dmlzaW9uIDUyNjI1KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxz
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBAIGF0dHJpYnV0ZXM6
CiAgICAgInR5cGUiPHVpbnQzMj49PE5VTEw+CiBwYXNzd29yZDogIlNFQ1JFVFNBVUNFIgogIiIi
CisgICAga2V5Y2hhaW5fZW50cnlfbm90X2ZvdW5kID0gInNlY3VyaXR5OiBTZWNLZXljaGFpblNl
YXJjaENvcHlOZXh0OiBUaGUgc3BlY2lmaWVkIGl0ZW0gY291bGQgbm90IGJlIGZvdW5kIGluIHRo
ZSBrZXljaGFpbi4iCiAKICAgICBkZWYgdGVzdF9rZXljaGFpbl9sb29rdXBfb25fbm9uX21hYyhz
ZWxmKToKICAgICAgICAgY2xhc3MgRmFrZUNyZWRlbnRpYWxzKENyZWRlbnRpYWxzKToKQEAgLTcy
LDYgKzczLDEwIEBAIHBhc3N3b3JkOiAiU0VDUkVUU0FVQ0UiCiAgICAgICAgIGNyZWRlbnRpYWxz
ID0gQ3JlZGVudGlhbHMoImJ1Z3Mud2Via2l0Lm9yZyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY3JlZGVudGlhbHMuX3BhcnNlX3NlY3VyaXR5X3Rvb2xfb3V0cHV0KHNlbGYuZXhhbXBsZV9z
ZWN1cml0eV9vdXRwdXQpLCBbInRlc3RAd2Via2l0Lm9yZyIsICJTRUNSRVRTQVVDRSJdKQogCisg
ICAgZGVmIHRlc3Rfc2VjdXJpdHlfb3V0cHV0X3BhcnNlX2VudHJ5X25vdF9mb3VuZChzZWxmKToK
KyAgICAgICAgY3JlZGVudGlhbHMgPSBDcmVkZW50aWFscygiZm9vLmV4YW1wbGUuY29tIikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVkZW50aWFscy5fcGFyc2Vfc2VjdXJpdHlfdG9vbF9v
dXRwdXQoc2VsZi5rZXljaGFpbl9lbnRyeV9ub3RfZm91bmQpLCBbTm9uZSwgTm9uZV0pCisKICAg
ICBkZWYgX2Fzc2VydF9zZWN1cml0eV9jYWxsKHNlbGYsIHVzZXJuYW1lPU5vbmUpOgogICAgICAg
ICBleGVjdXRpdmVfbW9jayA9IE1vY2soKQogICAgICAgICBjcmVkZW50aWFscyA9IENyZWRlbnRp
YWxzKCJleGFtcGxlLmNvbSIsIGV4ZWN1dGl2ZT1leGVjdXRpdmVfbW9jaykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45644</attachid>
            <date>2009-12-29 23:13:28 -0800</date>
            <delta_ts>2009-12-29 23:18:32 -0800</delta_ts>
            <desc>Patch with unit test</desc>
            <filename>Bug33039_1.patch</filename>
            <type>text/plain</type>
            <size>3468</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUyNjQ1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMTItMjkgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzAzOQor
CisgICAgICAgIFtienRdIFNlY29uZCBhdHRlbXB0IHRvIGZpeCBhbiBpc3N1ZSB3aGVyZSBidWd6
aWxsYS10b29sIGRpZXMKKyAgICAgICAgd2hlbiB0aGUga2V5Y2hhaW4gbG9va3VwIGZhaWxzIHRv
IGZpbmQgYW4gZW50cnkgZm9yIGJ1Z3Mud2Via2l0Lm9yZy4KKworICAgICAgICAqIFNjcmlwdHMv
bW9kdWxlcy9jcmVkZW50aWFscy5weToKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY3JlZGVu
dGlhbHNfdW5pdHRlc3QucHk6CisKIDIwMDktMTItMjkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJLaXRU
b29scy9TY3JpcHRzL21vZHVsZXMvY3JlZGVudGlhbHMucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzLnB5CShyZXZpc2lvbiA1MjY0NCkKKysr
IFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFscy5weQkod29ya2luZyBjb3B5
KQpAQCAtMzQsMTMgKzM0LDExIEBAIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQg
cmUKIAotZnJvbSBtb2R1bGVzLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCitmcm9tIG1vZHVs
ZXMuZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIG1vZHVsZXMu
bG9nZ2luZyBpbXBvcnQgbG9nCiBmcm9tIG1vZHVsZXMuc2NtIGltcG9ydCBHaXQKIAogY2xhc3Mg
Q3JlZGVudGlhbHMob2JqZWN0KToKLSAgICBrZXljaGFpbl9lbnRyeV9ub3RfZm91bmQgPSAic2Vj
dXJpdHk6IFNlY0tleWNoYWluU2VhcmNoQ29weU5leHQ6IFRoZSBzcGVjaWZpZWQgaXRlbSBjb3Vs
ZCBub3QgYmUgZm91bmQgaW4gdGhlIGtleWNoYWluLiIKLQogICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBob3N0LCBnaXRfcHJlZml4PU5vbmUsIGV4ZWN1dGl2ZT1Ob25lLCBjd2Q9b3MuZ2V0Y3dkKCkp
OgogICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgIHNlbGYuZ2l0X3ByZWZpeCA9IGdp
dF9wcmVmaXgKQEAgLTYzLDggKzYxLDYgQEAgY2xhc3MgQ3JlZGVudGlhbHMob2JqZWN0KToKICAg
ICAgICAgcmV0dXJuIHBsYXRmb3JtLm1hY192ZXIoKVswXQogCiAgICAgZGVmIF9wYXJzZV9zZWN1
cml0eV90b29sX291dHB1dChzZWxmLCBzZWN1cml0eV9vdXRwdXQpOgotICAgICAgICBpZiBzZWN1
cml0eV9vdXRwdXQgPT0gc2VsZi5rZXljaGFpbl9lbnRyeV9ub3RfZm91bmQ6Ci0gICAgICAgICAg
ICByZXR1cm4gW05vbmUsIE5vbmVdCiAgICAgICAgIHVzZXJuYW1lID0gc2VsZi5fa2V5Y2hhaW5f
dmFsdWVfd2l0aF9sYWJlbCgiXlxzKlwiYWNjdFwiPGJsb2I+PSIsIHNlY3VyaXR5X291dHB1dCkK
ICAgICAgICAgcGFzc3dvcmQgPSBzZWxmLl9rZXljaGFpbl92YWx1ZV93aXRoX2xhYmVsKCJecGFz
c3dvcmQ6ICIsIHNlY3VyaXR5X291dHB1dCkKICAgICAgICAgcmV0dXJuIFt1c2VybmFtZSwgcGFz
c3dvcmRdCkBAIC03NSw3ICs3MSwxMyBAQCBjbGFzcyBDcmVkZW50aWFscyhvYmplY3QpOgogICAg
ICAgICAgICAgc2VjdXJpdHlfY29tbWFuZCArPSBbIi1hIiwgdXNlcm5hbWVdCiAKICAgICAgICAg
bG9nKCJSZWFkaW5nIEtleWNoYWluIGZvciAlcyBhY2NvdW50IGFuZCBwYXNzd29yZC4gIENsaWNr
IFwiQWxsb3dcIiB0byBjb250aW51ZS4uLiIgJSBzZWxmLmhvc3QpCi0gICAgICAgIHJldHVybiBz
ZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChzZWN1cml0eV9jb21tYW5kKQorICAgICAgICB0cnk6
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoc2VjdXJpdHlf
Y29tbWFuZCkKKyAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yOgorICAgICAgICAgICAgIyBGYWls
ZWQgdG8gZWl0aGVyIGZpbmQgYSBrZXljaGFpbiBlbnRyeSBvciBzb21la2luZCBvZiBPUy1yZWxh
dGVkIGVycm9yCisgICAgICAgICAgICAjIG9jY3VyZWQgKGZvciBpbnN0YW5jZSwgY291bGRuJ3Qg
ZmluZCB0aGUgL3Vzci9zYmluL3NlY3VyaXR5IGNvbW1hbmQpLgorICAgICAgICAgICAgbG9nKCJD
b3VsZCBub3QgZmluZCBhIGtleWNoYWluIGVudHJ5IGZvciAlcy4iICUgc2VsZi5ob3N0KQorICAg
ICAgICAgICAgcmV0dXJuIFtOb25lLCBOb25lXQogCiAgICAgZGVmIF9jcmVkZW50aWFsc19mcm9t
X2tleWNoYWluKHNlbGYsIHVzZXJuYW1lPU5vbmUpOgogICAgICAgICBpZiBub3Qgc2VsZi5faXNf
bWFjX29zX3goKToKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFs
c191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
Y3JlZGVudGlhbHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDUyNjQ0KQorKysgV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC03NSw3ICs3NSwxMSBAQCBwYXNzd29yZDogIlNFQ1JFVFNBVUNFIgogCiAgICAgZGVmIHRlc3Rf
c2VjdXJpdHlfb3V0cHV0X3BhcnNlX2VudHJ5X25vdF9mb3VuZChzZWxmKToKICAgICAgICAgY3Jl
ZGVudGlhbHMgPSBDcmVkZW50aWFscygiZm9vLmV4YW1wbGUuY29tIikKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjcmVkZW50aWFscy5fcGFyc2Vfc2VjdXJpdHlfdG9vbF9vdXRwdXQoQ3JlZGVu
dGlhbHMua2V5Y2hhaW5fZW50cnlfbm90X2ZvdW5kKSwgW05vbmUsIE5vbmVdKQorICAgICAgICBv
dXRwdXRDYXB0dXJlID0gT3V0cHV0Q2FwdHVyZSgpCisKKyAgICAgICAgb3V0cHV0Q2FwdHVyZS5j
YXB0dXJlX291dHB1dCgpOworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWRlbnRpYWxzLl9y
dW5fc2VjdXJpdHlfdG9vbCgpLCBbTm9uZSwgTm9uZV0pCisgICAgICAgIG91dHB1dENhcHR1cmUu
cmVzdG9yZV9vdXRwdXQoKQogCiAgICAgZGVmIF9hc3NlcnRfc2VjdXJpdHlfY2FsbChzZWxmLCB1
c2VybmFtZT1Ob25lKToKICAgICAgICAgZXhlY3V0aXZlX21vY2sgPSBNb2NrKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45645</attachid>
            <date>2009-12-29 23:18:32 -0800</date>
            <delta_ts>2009-12-30 11:26:48 -0800</delta_ts>
            <desc>Patch with unit test</desc>
            <filename>Bug33039_2.patch</filename>
            <type>text/plain</type>
            <size>3467</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUyNjQ1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMTItMjkgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzAzOQor
CisgICAgICAgIFtienRdIFNlY29uZCBhdHRlbXB0IHRvIGZpeCBhbiBpc3N1ZSB3aGVyZSBidWd6
aWxsYS10b29sIGRpZXMKKyAgICAgICAgd2hlbiB0aGUga2V5Y2hhaW4gbG9va3VwIGZhaWxzIHRv
IGZpbmQgYW4gZW50cnkgZm9yIGJ1Z3Mud2Via2l0Lm9yZy4KKworICAgICAgICAqIFNjcmlwdHMv
bW9kdWxlcy9jcmVkZW50aWFscy5weToKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY3JlZGVu
dGlhbHNfdW5pdHRlc3QucHk6CisKIDIwMDktMTItMjkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJLaXRU
b29scy9TY3JpcHRzL21vZHVsZXMvY3JlZGVudGlhbHMucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzLnB5CShyZXZpc2lvbiA1MjY0NCkKKysr
IFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFscy5weQkod29ya2luZyBjb3B5
KQpAQCAtMzQsMTMgKzM0LDExIEBAIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQg
cmUKIAotZnJvbSBtb2R1bGVzLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCitmcm9tIG1vZHVs
ZXMuZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIG1vZHVsZXMu
bG9nZ2luZyBpbXBvcnQgbG9nCiBmcm9tIG1vZHVsZXMuc2NtIGltcG9ydCBHaXQKIAogY2xhc3Mg
Q3JlZGVudGlhbHMob2JqZWN0KToKLSAgICBrZXljaGFpbl9lbnRyeV9ub3RfZm91bmQgPSAic2Vj
dXJpdHk6IFNlY0tleWNoYWluU2VhcmNoQ29weU5leHQ6IFRoZSBzcGVjaWZpZWQgaXRlbSBjb3Vs
ZCBub3QgYmUgZm91bmQgaW4gdGhlIGtleWNoYWluLiIKLQogICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBob3N0LCBnaXRfcHJlZml4PU5vbmUsIGV4ZWN1dGl2ZT1Ob25lLCBjd2Q9b3MuZ2V0Y3dkKCkp
OgogICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgIHNlbGYuZ2l0X3ByZWZpeCA9IGdp
dF9wcmVmaXgKQEAgLTYzLDggKzYxLDYgQEAgY2xhc3MgQ3JlZGVudGlhbHMob2JqZWN0KToKICAg
ICAgICAgcmV0dXJuIHBsYXRmb3JtLm1hY192ZXIoKVswXQogCiAgICAgZGVmIF9wYXJzZV9zZWN1
cml0eV90b29sX291dHB1dChzZWxmLCBzZWN1cml0eV9vdXRwdXQpOgotICAgICAgICBpZiBzZWN1
cml0eV9vdXRwdXQgPT0gc2VsZi5rZXljaGFpbl9lbnRyeV9ub3RfZm91bmQ6Ci0gICAgICAgICAg
ICByZXR1cm4gW05vbmUsIE5vbmVdCiAgICAgICAgIHVzZXJuYW1lID0gc2VsZi5fa2V5Y2hhaW5f
dmFsdWVfd2l0aF9sYWJlbCgiXlxzKlwiYWNjdFwiPGJsb2I+PSIsIHNlY3VyaXR5X291dHB1dCkK
ICAgICAgICAgcGFzc3dvcmQgPSBzZWxmLl9rZXljaGFpbl92YWx1ZV93aXRoX2xhYmVsKCJecGFz
c3dvcmQ6ICIsIHNlY3VyaXR5X291dHB1dCkKICAgICAgICAgcmV0dXJuIFt1c2VybmFtZSwgcGFz
c3dvcmRdCkBAIC03NSw3ICs3MSwxMyBAQCBjbGFzcyBDcmVkZW50aWFscyhvYmplY3QpOgogICAg
ICAgICAgICAgc2VjdXJpdHlfY29tbWFuZCArPSBbIi1hIiwgdXNlcm5hbWVdCiAKICAgICAgICAg
bG9nKCJSZWFkaW5nIEtleWNoYWluIGZvciAlcyBhY2NvdW50IGFuZCBwYXNzd29yZC4gIENsaWNr
IFwiQWxsb3dcIiB0byBjb250aW51ZS4uLiIgJSBzZWxmLmhvc3QpCi0gICAgICAgIHJldHVybiBz
ZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChzZWN1cml0eV9jb21tYW5kKQorICAgICAgICB0cnk6
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoc2VjdXJpdHlf
Y29tbWFuZCkKKyAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yOgorICAgICAgICAgICAgIyBGYWls
ZWQgdG8gZWl0aGVyIGZpbmQgYSBrZXljaGFpbiBlbnRyeSBvciBzb21la2luZCBvZiBPUy1yZWxh
dGVkIGVycm9yCisgICAgICAgICAgICAjIG9jY3VyZWQgKGZvciBpbnN0YW5jZSwgY291bGRuJ3Qg
ZmluZCB0aGUgL3Vzci9zYmluL3NlY3VyaXR5IGNvbW1hbmQpLgorICAgICAgICAgICAgbG9nKCJD
b3VsZCBub3QgZmluZCBhIGtleWNoYWluIGVudHJ5IGZvciAlcy4iICUgc2VsZi5ob3N0KQorICAg
ICAgICAgICAgcmV0dXJuIFtOb25lLCBOb25lXQogCiAgICAgZGVmIF9jcmVkZW50aWFsc19mcm9t
X2tleWNoYWluKHNlbGYsIHVzZXJuYW1lPU5vbmUpOgogICAgICAgICBpZiBub3Qgc2VsZi5faXNf
bWFjX29zX3goKToKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFs
c191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
Y3JlZGVudGlhbHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDUyNjQ0KQorKysgV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC03NSw3ICs3NSwxMSBAQCBwYXNzd29yZDogIlNFQ1JFVFNBVUNFIgogCiAgICAgZGVmIHRlc3Rf
c2VjdXJpdHlfb3V0cHV0X3BhcnNlX2VudHJ5X25vdF9mb3VuZChzZWxmKToKICAgICAgICAgY3Jl
ZGVudGlhbHMgPSBDcmVkZW50aWFscygiZm9vLmV4YW1wbGUuY29tIikKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjcmVkZW50aWFscy5fcGFyc2Vfc2VjdXJpdHlfdG9vbF9vdXRwdXQoQ3JlZGVu
dGlhbHMua2V5Y2hhaW5fZW50cnlfbm90X2ZvdW5kKSwgW05vbmUsIE5vbmVdKQorICAgICAgICBv
dXRwdXRDYXB0dXJlID0gT3V0cHV0Q2FwdHVyZSgpCisKKyAgICAgICAgb3V0cHV0Q2FwdHVyZS5j
YXB0dXJlX291dHB1dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlZGVudGlhbHMuX3J1
bl9zZWN1cml0eV90b29sKCksIFtOb25lLCBOb25lXSkKKyAgICAgICAgb3V0cHV0Q2FwdHVyZS5y
ZXN0b3JlX291dHB1dCgpCiAKICAgICBkZWYgX2Fzc2VydF9zZWN1cml0eV9jYWxsKHNlbGYsIHVz
ZXJuYW1lPU5vbmUpOgogICAgICAgICBleGVjdXRpdmVfbW9jayA9IE1vY2soKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45675</attachid>
            <date>2009-12-30 11:26:48 -0800</date>
            <delta_ts>2010-01-02 14:32:37 -0800</delta_ts>
            <desc>Patch with unit tests</desc>
            <filename>Bug33039_f_1.patch</filename>
            <type>text/plain</type>
            <size>3700</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUyNjQ1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMTItMzAgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzAzOQor
CisgICAgICAgIFtienRdIFNlY29uZCBhdHRlbXB0IHRvIGZpeCBhbiBpc3N1ZSB3aGVyZSBidWd6
aWxsYS10b29sIGRpZXMKKyAgICAgICAgd2hlbiB0aGUga2V5Y2hhaW4gbG9va3VwIGZhaWxzIHRv
IGZpbmQgYW4gZW50cnkgZm9yIGJ1Z3Mud2Via2l0Lm9yZy4KKworICAgICAgICAqIFNjcmlwdHMv
bW9kdWxlcy9jcmVkZW50aWFscy5weToKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY3JlZGVu
dGlhbHNfdW5pdHRlc3QucHk6CisKIDIwMDktMTItMjkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJLaXRU
b29scy9TY3JpcHRzL21vZHVsZXMvY3JlZGVudGlhbHMucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzLnB5CShyZXZpc2lvbiA1MjY0NCkKKysr
IFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFscy5weQkod29ya2luZyBjb3B5
KQpAQCAtMzQsMTMgKzM0LDExIEBAIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQg
cmUKIAotZnJvbSBtb2R1bGVzLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCitmcm9tIG1vZHVs
ZXMuZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIG1vZHVsZXMu
bG9nZ2luZyBpbXBvcnQgbG9nCiBmcm9tIG1vZHVsZXMuc2NtIGltcG9ydCBHaXQKIAogY2xhc3Mg
Q3JlZGVudGlhbHMob2JqZWN0KToKLSAgICBrZXljaGFpbl9lbnRyeV9ub3RfZm91bmQgPSAic2Vj
dXJpdHk6IFNlY0tleWNoYWluU2VhcmNoQ29weU5leHQ6IFRoZSBzcGVjaWZpZWQgaXRlbSBjb3Vs
ZCBub3QgYmUgZm91bmQgaW4gdGhlIGtleWNoYWluLiIKLQogICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBob3N0LCBnaXRfcHJlZml4PU5vbmUsIGV4ZWN1dGl2ZT1Ob25lLCBjd2Q9b3MuZ2V0Y3dkKCkp
OgogICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgIHNlbGYuZ2l0X3ByZWZpeCA9IGdp
dF9wcmVmaXgKQEAgLTYzLDggKzYxLDYgQEAgY2xhc3MgQ3JlZGVudGlhbHMob2JqZWN0KToKICAg
ICAgICAgcmV0dXJuIHBsYXRmb3JtLm1hY192ZXIoKVswXQogCiAgICAgZGVmIF9wYXJzZV9zZWN1
cml0eV90b29sX291dHB1dChzZWxmLCBzZWN1cml0eV9vdXRwdXQpOgotICAgICAgICBpZiBzZWN1
cml0eV9vdXRwdXQgPT0gc2VsZi5rZXljaGFpbl9lbnRyeV9ub3RfZm91bmQ6Ci0gICAgICAgICAg
ICByZXR1cm4gW05vbmUsIE5vbmVdCiAgICAgICAgIHVzZXJuYW1lID0gc2VsZi5fa2V5Y2hhaW5f
dmFsdWVfd2l0aF9sYWJlbCgiXlxzKlwiYWNjdFwiPGJsb2I+PSIsIHNlY3VyaXR5X291dHB1dCkK
ICAgICAgICAgcGFzc3dvcmQgPSBzZWxmLl9rZXljaGFpbl92YWx1ZV93aXRoX2xhYmVsKCJecGFz
c3dvcmQ6ICIsIHNlY3VyaXR5X291dHB1dCkKICAgICAgICAgcmV0dXJuIFt1c2VybmFtZSwgcGFz
c3dvcmRdCkBAIC03NSw3ICs3MSwxMyBAQCBjbGFzcyBDcmVkZW50aWFscyhvYmplY3QpOgogICAg
ICAgICAgICAgc2VjdXJpdHlfY29tbWFuZCArPSBbIi1hIiwgdXNlcm5hbWVdCiAKICAgICAgICAg
bG9nKCJSZWFkaW5nIEtleWNoYWluIGZvciAlcyBhY2NvdW50IGFuZCBwYXNzd29yZC4gIENsaWNr
IFwiQWxsb3dcIiB0byBjb250aW51ZS4uLiIgJSBzZWxmLmhvc3QpCi0gICAgICAgIHJldHVybiBz
ZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChzZWN1cml0eV9jb21tYW5kKQorICAgICAgICB0cnk6
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoc2VjdXJpdHlf
Y29tbWFuZCkKKyAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yOgorICAgICAgICAgICAgIyBGYWls
ZWQgdG8gZWl0aGVyIGZpbmQgYSBrZXljaGFpbiBlbnRyeSBvciBzb21la2luZCBvZiBPUy1yZWxh
dGVkIGVycm9yCisgICAgICAgICAgICAjIG9jY3VyZWQgKGZvciBpbnN0YW5jZSwgY291bGRuJ3Qg
ZmluZCB0aGUgL3Vzci9zYmluL3NlY3VyaXR5IGNvbW1hbmQpLgorICAgICAgICAgICAgbG9nKCJD
b3VsZCBub3QgZmluZCBhIGtleWNoYWluIGVudHJ5IGZvciAlcy4iICUgc2VsZi5ob3N0KQorICAg
ICAgICAgICAgcmV0dXJuIFtOb25lLCBOb25lXQogCiAgICAgZGVmIF9jcmVkZW50aWFsc19mcm9t
X2tleWNoYWluKHNlbGYsIHVzZXJuYW1lPU5vbmUpOgogICAgICAgICBpZiBub3Qgc2VsZi5faXNf
bWFjX29zX3goKToKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFs
c191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
Y3JlZGVudGlhbHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDUyNjQ0KQorKysgV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC03NCw4ICs3NCwxNSBAQCBwYXNzd29yZDogIlNFQ1JFVFNBVUNFIgogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNyZWRlbnRpYWxzLl9wYXJzZV9zZWN1cml0eV90b29sX291dHB1dChzZWxmLmV4
YW1wbGVfc2VjdXJpdHlfb3V0cHV0KSwgWyJ0ZXN0QHdlYmtpdC5vcmciLCAiU0VDUkVUU0FVQ0Ui
XSkKIAogICAgIGRlZiB0ZXN0X3NlY3VyaXR5X291dHB1dF9wYXJzZV9lbnRyeV9ub3RfZm91bmQo
c2VsZik6CisgICAgICAgIGlmIG5vdCBwbGF0Zm9ybS5tYWNfdmVyKClbMF06CisgICAgICAgICAg
ICByZXR1cm4gIyBUaGlzIHRlc3QgZG9lcyBub3QgcnVuIG9uIGEgbm9uLU1hYy4KKwogICAgICAg
ICBjcmVkZW50aWFscyA9IENyZWRlbnRpYWxzKCJmb28uZXhhbXBsZS5jb20iKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNyZWRlbnRpYWxzLl9wYXJzZV9zZWN1cml0eV90b29sX291dHB1dChD
cmVkZW50aWFscy5rZXljaGFpbl9lbnRyeV9ub3RfZm91bmQpLCBbTm9uZSwgTm9uZV0pCisgICAg
ICAgIG91dHB1dENhcHR1cmUgPSBPdXRwdXRDYXB0dXJlKCkKKworICAgICAgICBvdXRwdXRDYXB0
dXJlLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVkZW50aWFs
cy5fcnVuX3NlY3VyaXR5X3Rvb2woKSwgW05vbmUsIE5vbmVdKQorICAgICAgICBvdXRwdXRDYXB0
dXJlLnJlc3RvcmVfb3V0cHV0KCkKIAogICAgIGRlZiBfYXNzZXJ0X3NlY3VyaXR5X2NhbGwoc2Vs
ZiwgdXNlcm5hbWU9Tm9uZSk6CiAgICAgICAgIGV4ZWN1dGl2ZV9tb2NrID0gTW9jaygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45752</attachid>
            <date>2010-01-02 14:32:37 -0800</date>
            <delta_ts>2010-01-03 19:08:40 -0800</delta_ts>
            <desc>Patch with unit test</desc>
            <filename>Bug33039_f_2.patch</filename>
            <type>text/plain</type>
            <size>3731</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUyNjg2KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDEtMDIgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzAzOQor
CisgICAgICAgIFtienRdIFNlY29uZCBhdHRlbXB0IHRvIGZpeCBhbiBpc3N1ZSB3aGVyZSBidWd6
aWxsYS10b29sIGRpZXMKKyAgICAgICAgd2hlbiB0aGUga2V5Y2hhaW4gbG9va3VwIGZhaWxzIHRv
IGZpbmQgYW4gZW50cnkgZm9yIGJ1Z3Mud2Via2l0Lm9yZy4KKworICAgICAgICAqIFNjcmlwdHMv
bW9kdWxlcy9jcmVkZW50aWFscy5weToKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY3JlZGVu
dGlhbHNfdW5pdHRlc3QucHk6CisKIDIwMDktMTItMzEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktp
dFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcmVkZW50aWFscy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3JlZGVudGlhbHMucHkJKHJldmlzaW9uIDUyNjg2KQor
KysgV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0zNCwxMyArMzQsMTEgQEAgaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9y
dCByZQogCi1mcm9tIG1vZHVsZXMuZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKK2Zyb20gbW9k
dWxlcy5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20gbW9kdWxl
cy53ZWJraXRfbG9nZ2luZyBpbXBvcnQgbG9nCiBmcm9tIG1vZHVsZXMuc2NtIGltcG9ydCBHaXQK
IAogY2xhc3MgQ3JlZGVudGlhbHMob2JqZWN0KToKLSAgICBrZXljaGFpbl9lbnRyeV9ub3RfZm91
bmQgPSAic2VjdXJpdHk6IFNlY0tleWNoYWluU2VhcmNoQ29weU5leHQ6IFRoZSBzcGVjaWZpZWQg
aXRlbSBjb3VsZCBub3QgYmUgZm91bmQgaW4gdGhlIGtleWNoYWluLiIKLQogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBob3N0LCBnaXRfcHJlZml4PU5vbmUsIGV4ZWN1dGl2ZT1Ob25lLCBjd2Q9b3Mu
Z2V0Y3dkKCkpOgogICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgIHNlbGYuZ2l0X3By
ZWZpeCA9IGdpdF9wcmVmaXgKQEAgLTYzLDggKzYxLDYgQEAgY2xhc3MgQ3JlZGVudGlhbHMob2Jq
ZWN0KToKICAgICAgICAgcmV0dXJuIHBsYXRmb3JtLm1hY192ZXIoKVswXQogCiAgICAgZGVmIF9w
YXJzZV9zZWN1cml0eV90b29sX291dHB1dChzZWxmLCBzZWN1cml0eV9vdXRwdXQpOgotICAgICAg
ICBpZiBzZWN1cml0eV9vdXRwdXQgPT0gc2VsZi5rZXljaGFpbl9lbnRyeV9ub3RfZm91bmQ6Ci0g
ICAgICAgICAgICByZXR1cm4gW05vbmUsIE5vbmVdCiAgICAgICAgIHVzZXJuYW1lID0gc2VsZi5f
a2V5Y2hhaW5fdmFsdWVfd2l0aF9sYWJlbCgiXlxzKlwiYWNjdFwiPGJsb2I+PSIsIHNlY3VyaXR5
X291dHB1dCkKICAgICAgICAgcGFzc3dvcmQgPSBzZWxmLl9rZXljaGFpbl92YWx1ZV93aXRoX2xh
YmVsKCJecGFzc3dvcmQ6ICIsIHNlY3VyaXR5X291dHB1dCkKICAgICAgICAgcmV0dXJuIFt1c2Vy
bmFtZSwgcGFzc3dvcmRdCkBAIC03NSw3ICs3MSwxMyBAQCBjbGFzcyBDcmVkZW50aWFscyhvYmpl
Y3QpOgogICAgICAgICAgICAgc2VjdXJpdHlfY29tbWFuZCArPSBbIi1hIiwgdXNlcm5hbWVdCiAK
ICAgICAgICAgbG9nKCJSZWFkaW5nIEtleWNoYWluIGZvciAlcyBhY2NvdW50IGFuZCBwYXNzd29y
ZC4gIENsaWNrIFwiQWxsb3dcIiB0byBjb250aW51ZS4uLiIgJSBzZWxmLmhvc3QpCi0gICAgICAg
IHJldHVybiBzZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChzZWN1cml0eV9jb21tYW5kKQorICAg
ICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQo
c2VjdXJpdHlfY29tbWFuZCkKKyAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yOgorICAgICAgICAg
ICAgIyBGYWlsZWQgdG8gZWl0aGVyIGZpbmQgYSBrZXljaGFpbiBlbnRyeSBvciBzb21la2luZCBv
ZiBPUy1yZWxhdGVkIGVycm9yCisgICAgICAgICAgICAjIG9jY3VyZWQgKGZvciBpbnN0YW5jZSwg
Y291bGRuJ3QgZmluZCB0aGUgL3Vzci9zYmluL3NlY3VyaXR5IGNvbW1hbmQpLgorICAgICAgICAg
ICAgbG9nKCJDb3VsZCBub3QgZmluZCBhIGtleWNoYWluIGVudHJ5IGZvciAlcy4iICUgc2VsZi5o
b3N0KQorICAgICAgICAgICAgcmV0dXJuIFtOb25lLCBOb25lXQogCiAgICAgZGVmIF9jcmVkZW50
aWFsc19mcm9tX2tleWNoYWluKHNlbGYsIHVzZXJuYW1lPU5vbmUpOgogICAgICAgICBpZiBub3Qg
c2VsZi5faXNfbWFjX29zX3goKToKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9j
cmVkZW50aWFsc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRz
L21vZHVsZXMvY3JlZGVudGlhbHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDUyNjg2KQorKysgV2Vi
S2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NyZWRlbnRpYWxzX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC03NSw3ICs3NSwxNSBAQCBwYXNzd29yZDogIlNFQ1JFVFNBVUNFIgogCiAgICAg
ZGVmIHRlc3Rfc2VjdXJpdHlfb3V0cHV0X3BhcnNlX2VudHJ5X25vdF9mb3VuZChzZWxmKToKICAg
ICAgICAgY3JlZGVudGlhbHMgPSBDcmVkZW50aWFscygiZm9vLmV4YW1wbGUuY29tIikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjcmVkZW50aWFscy5fcGFyc2Vfc2VjdXJpdHlfdG9vbF9vdXRw
dXQoQ3JlZGVudGlhbHMua2V5Y2hhaW5fZW50cnlfbm90X2ZvdW5kKSwgW05vbmUsIE5vbmVdKQor
ICAgICAgICBpZiBub3QgY3JlZGVudGlhbHMuX2lzX21hY19vc194KCk6CisgICAgICAgICAgICBy
ZXR1cm4gIyBUaGlzIHRlc3QgZG9lcyBub3QgcnVuIG9uIGEgbm9uLU1hYy4KKworICAgICAgICAj
IE5vdGUsIHdlIGlnbm9yZSB0aGUgY2FwdHVyZWQgb3V0cHV0IGJlY2F1c2UgaXQgaXMgYWxyZWFk
eSBjb3ZlcmVkCisgICAgICAgICMgYnkgdGhlIHRlc3QgY2FzZSBDcmVkZW50aWFsc1Rlc3QuX2Fz
c2VydF9zZWN1cml0eV9jYWxsIChiZWxvdykuCisgICAgICAgIG91dHB1dENhcHR1cmUgPSBPdXRw
dXRDYXB0dXJlKCkKKyAgICAgICAgb3V0cHV0Q2FwdHVyZS5jYXB0dXJlX291dHB1dCgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlZGVudGlhbHMuX3J1bl9zZWN1cml0eV90b29sKCksIFtO
b25lLCBOb25lXSkKKyAgICAgICAgb3V0cHV0Q2FwdHVyZS5yZXN0b3JlX291dHB1dCgpCiAKICAg
ICBkZWYgX2Fzc2VydF9zZWN1cml0eV9jYWxsKHNlbGYsIHVzZXJuYW1lPU5vbmUpOgogICAgICAg
ICBleGVjdXRpdmVfbW9jayA9IE1vY2soKQo=
</data>
<flag name="review"
          id="27865"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>