<?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>47879</bug_id>
          
          <creation_ts>2010-10-18 21:22:31 -0700</creation_ts>
          <short_desc>FAIL: test_reset_results (webkitpy.layout_tests.run_webkit_tests_unittest.RebaselineTest)</short_desc>
          <delta_ts>2011-01-20 20:09:20 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>48072</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>kbr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>295970</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-18 21:22:31 -0700</bug_when>
    <thetext>======================================================================
FAIL: test_reset_results (webkitpy.layout_tests.run_webkit_tests_unittest.RebaselineTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File &quot;/Volumes/Data/WebKit-BuildSlave/snowleopard-intel-release-tests/build/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py&quot;, line 298, in test_reset_results
    &quot;data/passes/image&quot;)
  File &quot;/Volumes/Data/WebKit-BuildSlave/snowleopard-intel-release-tests/build/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py&quot;, line 281, in assertBaselines
    self.assertTrue(any(f.find(baseline) != -1 for f in file_list))
AssertionError

----------------------------------------------------------------------

I&apos;m disabling the test for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296008</commentid>
    <comment_count>1</comment_count>
      <attachid>71134</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 22:49:20 -0700</bug_when>
    <thetext>Created attachment 71134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296011</commentid>
    <comment_count>2</comment_count>
      <attachid>71134</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-18 22:54:31 -0700</bug_when>
    <thetext>Comment on attachment 71134
Patch

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

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/test.py:171
&gt; +        return base.Port.maybe_make_directory(self, *path)

Call-through mocks are dangerous because they can have unexpected side-effects.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:71
&gt; +# FIXME: This makes StringIO objects work with &quot;with&quot;. Remove
&gt; +# when we upgrade to 2.6.
&gt; +class NewStringIO(StringIO.StringIO):
&gt; +    def __enter__(self):
&gt; +        return self
&gt; +
&gt; +    def __exit__(self, type, value, traceback):
&gt; +        pass

This seems like a very general concept.  Is there a reason it&apos;s in this very specific file?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:306
&gt; +                         &apos;--child-processes=1&apos;,

I don&apos;t understand why this is related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296018</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 22:57:57 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 71134 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=71134&amp;action=review
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/test.py:171
&gt; &gt; +        return base.Port.maybe_make_directory(self, *path)
&gt; 
&gt; Call-through mocks are dangerous because they can have unexpected side-effects.
&gt;

Agreed. Hence the FIXME. If we don&apos;t have the fallthrough, all sorts of weird things will break in the meantime.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:71
&gt; &gt; +# FIXME: This makes StringIO objects work with &quot;with&quot;. Remove
&gt; &gt; +# when we upgrade to 2.6.
&gt; &gt; +class NewStringIO(StringIO.StringIO):
&gt; &gt; +    def __enter__(self):
&gt; &gt; +        return self
&gt; &gt; +
&gt; &gt; +    def __exit__(self, type, value, traceback):
&gt; &gt; +        pass
&gt; 
&gt; This seems like a very general concept.  Is there a reason it&apos;s in this very specific file?
&gt; 

No, in fact this was cloned from port/base_unittest.py. I would be happy to put it in webkitpy/common somewhere if you thought that was a better place for it.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:306
&gt; &gt; +                         &apos;--child-processes=1&apos;,
&gt; 
&gt; I don&apos;t understand why this is related.

It&apos;s not. I accidentally left that in from debugging the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296019</commentid>
    <comment_count>4</comment_count>
      <attachid>71136</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 22:59:33 -0700</bug_when>
    <thetext>Created attachment 71136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296020</commentid>
    <comment_count>5</comment_count>
      <attachid>71136</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-18 23:00:26 -0700</bug_when>
    <thetext>Comment on attachment 71136
Patch

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

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:71
&gt; +# FIXME: This makes StringIO objects work with &quot;with&quot;. Remove
&gt; +# when we upgrade to 2.6.
&gt; +class NewStringIO(StringIO.StringIO):
&gt; +    def __enter__(self):
&gt; +        return self
&gt; +
&gt; +    def __exit__(self, type, value, traceback):
&gt; +        pass

If this is copy/pasted from somewhere else, that&apos;s pretty strong evidence we should move it into somewhere more general.  Maybe webkitpy.common.system ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296021</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 23:02:19 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 71136 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=71136&amp;action=review
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:71
&gt; &gt; +# FIXME: This makes StringIO objects work with &quot;with&quot;. Remove
&gt; &gt; +# when we upgrade to 2.6.
&gt; &gt; +class NewStringIO(StringIO.StringIO):
&gt; &gt; +    def __enter__(self):
&gt; &gt; +        return self
&gt; &gt; +
&gt; &gt; +    def __exit__(self, type, value, traceback):
&gt; &gt; +        pass
&gt; 
&gt; If this is copy/pasted from somewhere else, that&apos;s pretty strong evidence we should move it into somewhere more general.  Maybe webkitpy.common.system ?

There&apos;s nothing system-y about it. How about just webkitpy.common.newstringio ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296024</commentid>
    <comment_count>7</comment_count>
      <attachid>71137</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 23:20:49 -0700</bug_when>
    <thetext>Created attachment 71137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296025</commentid>
    <comment_count>8</comment_count>
      <attachid>71138</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 23:23:12 -0700</bug_when>
    <thetext>Created attachment 71138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296284</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-10-19 11:01:58 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; ======================================================================
&gt; FAIL: test_reset_results (webkitpy.layout_tests.run_webkit_tests_unittest.RebaselineTest)
&gt; ----------------------------------------------------------------------
&gt; Traceback (most recent call last):
&gt;   File &quot;/Volumes/Data/WebKit-BuildSlave/snowleopard-intel-release-tests/build/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py&quot;, line 298, in test_reset_results
&gt;     &quot;data/passes/image&quot;)
&gt;   File &quot;/Volumes/Data/WebKit-BuildSlave/snowleopard-intel-release-tests/build/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py&quot;, line 281, in assertBaselines
&gt;     self.assertTrue(any(f.find(baseline) != -1 for f in file_list))
&gt; AssertionError
&gt; 
&gt; ----------------------------------------------------------------------
&gt; 
&gt; I&apos;m disabling the test for now.

Did my change in http://trac.webkit.org/changeset/70021 provoke this failure? It didn&apos;t occur on my machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296339</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-19 12:40:12 -0700</bug_when>
    <thetext>&gt; Did my change in http://trac.webkit.org/changeset/70021 provoke this failure? It didn&apos;t occur on my machine.

Yes.  It didn&apos;t occur on my machine either.  The problem is that this test touch the real file system so it has dependencies on the state of your checkout.  That means it&apos;s likely to pass locally but fail elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296350</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-10-19 13:04:58 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Did my change in http://trac.webkit.org/changeset/70021 provoke this failure? It didn&apos;t occur on my machine.
&gt; 
&gt; Yes.  It didn&apos;t occur on my machine either.  The problem is that this test touch the real file system so it has dependencies on the state of your checkout.  That means it&apos;s likely to pass locally but fail elsewhere.

Sorry about the breakage. Adam, do you want to complete the review? Dirk&apos;s changes look like an improvement to me even though there&apos;s a remaining FIXME about fully virtualizing the file system for these unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296366</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-19 13:32:38 -0700</bug_when>
    <thetext>&gt; Sorry about the breakage.

No problem.  We all break things.

&gt; Adam, do you want to complete the review? Dirk&apos;s changes look like an improvement to me even though there&apos;s a remaining FIXME about fully virtualizing the file system for these unit tests.

I&apos;m not that excited about the patch because it doesn&apos;t fix the underlying problem, but someone else should feel free to review it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296384</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-19 14:00:10 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; Sorry about the breakage.
&gt; 
&gt; No problem.  We all break things.
&gt; 
&gt; &gt; Adam, do you want to complete the review? Dirk&apos;s changes look like an improvement to me even though there&apos;s a remaining FIXME about fully virtualizing the file system for these unit tests.
&gt; 
&gt; I&apos;m not that excited about the patch because it doesn&apos;t fix the underlying problem, but someone else should feel free to review it.

Well, I wouldn&apos;t go that far. (a) it&apos;s not 100% clear what caused this test to fail, since none of us have been able to reproduce it locally. (b) the test was definitely broken in one way, in that stuff was getting written out when it shouldn&apos;t have been. That is now fixed.

It is true that there are still places where things get written out, but they&apos;re not places that are going to cause this test to fail, so I&apos;m as sure as I can be that it&apos;s fixed without being able to reproduce the exact failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296496</commentid>
    <comment_count>14</comment_count>
      <attachid>71138</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-10-19 16:06:09 -0700</bug_when>
    <thetext>Comment on attachment 71138
Patch

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

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:275
&gt;          return original_open(name, mode, encoding)

If we are just tossing the contents of the baselines into this in-memory buffer, then for the case of reading them, does it make sense to ever call original_open? Or should we do something similar to the writing case, perhaps adding an entry to a map from name to StringIO object?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296506</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-19 16:17:48 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 71138 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=71138&amp;action=review
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:275
&gt; &gt;          return original_open(name, mode, encoding)
&gt; 
&gt; If we are just tossing the contents of the baselines into this in-memory buffer, then for the case of reading them, does it make sense to ever call original_open? Or should we do something similar to the writing case, perhaps adding an entry to a map from name to StringIO object?

The problem is that by overwriting codecs.open, this affects anything that attempts to write anywhere, and there are parts of the code that write to the layout-test-results directory, and I&apos;m not 100% sure what will happen if those get mocked as well, since we aren&apos;t symmetrically also trying to read from the stringio buffers.

The other patch I have (posted to bug 46776) is the full solution that does all of the above, but it&apos;s much more involved so I don&apos;t want to try and splice it in here. If no one is happy with the fix above, it won&apos;t kill us to just wait for the proper variant of 46776 to land to fix the &quot;root cause&quot; :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296877</commentid>
    <comment_count>16</comment_count>
      <attachid>71138</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-10-20 11:02:18 -0700</bug_when>
    <thetext>Comment on attachment 71138
Patch

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

&gt;&gt;&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:275
&gt;&gt;&gt;          return original_open(name, mode, encoding)
&gt;&gt; 
&gt;&gt; If we are just tossing the contents of the baselines into this in-memory buffer, then for the case of reading them, does it make sense to ever call original_open? Or should we do something similar to the writing case, perhaps adding an entry to a map from name to StringIO object?
&gt; 
&gt; The problem is that by overwriting codecs.open, this affects anything that attempts to write anywhere, and there are parts of the code that write to the layout-test-results directory, and I&apos;m not 100% sure what will happen if those get mocked as well, since we aren&apos;t symmetrically also trying to read from the stringio buffers.
&gt; 
&gt; The other patch I have (posted to bug 46776) is the full solution that does all of the above, but it&apos;s much more involved so I don&apos;t want to try and splice it in here. If no one is happy with the fix above, it won&apos;t kill us to just wait for the proper variant of 46776 to land to fix the &quot;root cause&quot; :)

Given this I think the right thing to do is to land all of the pieces associated with bug 46776. I have a feeling that these partial fixes won&apos;t really fix the underlying test failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304851</commentid>
    <comment_count>17</comment_count>
      <attachid>71138</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-04 13:53:01 -0700</bug_when>
    <thetext>Comment on attachment 71138
Patch

will resubmit a new patch once the other refactorings have landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337837</commentid>
    <comment_count>18</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-20 20:09:20 -0800</bug_when>
    <thetext>Closing. This was fixed as of r76321 (bug 52762), if not slightly earlier. These tests no longer have any side effects on the environment / file system / etc.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71134</attachid>
            <date>2010-10-18 22:49:20 -0700</date>
            <delta_ts>2010-10-18 22:59:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47879-20101018224919.patch</filename>
            <type>text/plain</type>
            <size>5103</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1MDBiNzdkN2Y2NmE3ZDUwYTdiMGE2NGI0YzViMmU1YjY3ZDRhZjMyLi45NjYyMmE0
NTVkZGIzZjk2MzJhNDhjMDc2NjgyOGQ4NmZmZmFiMmQ3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTAtMTggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IFJlYmFzZWxpbmVU
ZXN0IHNvIHRoYXQgd2UncmUgbm90IGFjdHVhbGx5IHRyeWluZyB0byB3cml0ZQorICAgICAgICB0
byB0aGUgZmlsZXN5c3RlbS4gSSB0aGluayB0aGlzIHNob3VsZCBmaXggdGhlIGVycm9ycyB3ZQor
ICAgICAgICB3ZXJlIHNlZWluZyBpbiB0aGlzIGJ1ZyAoYXQgc29tZSBwb2ludCB0aGlzIHdvcmtl
ZCBjb3JyZWN0bHksCisgICAgICAgIGJ1dCBpdCBtdXN0J3ZlIHJlZ3Jlc3NlZCBhbmQgb25seSBz
aG93biB1cCBzcG9yYWRpY2FsbHkpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00Nzg3OQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisKIDIwMTAtMTAtMTggIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3QucHkKaW5kZXggMzY5MWM1YWFlOWZjMzIxYzk1MTc4NjM2Y2RjZDAzYjY5YmRk
ZDczZi4uYjBjMDRhMzFhZDgyYWI3MWZjNjU5MWE5ZTc1YzkwZDMzYjg5OGU2NyAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVz
dC5weQpAQCAtMTYwLDYgKzE2MCwxNiBAQCBjbGFzcyBUZXN0UG9ydChiYXNlLlBvcnQpOgogICAg
ICAgICAgICAgdGV4dCA9ICcnCiAgICAgICAgIHJldHVybiB0ZXh0CiAKKyAgICBkZWYgbWF5YmVf
bWFrZV9kaXJlY3Rvcnkoc2VsZiwgKnBhdGgpOgorICAgICAgICBhYnNwYXRoID0gb3MucGF0aC5q
b2luKCpwYXRoKQorICAgICAgICBpZiBhYnNwYXRoLnN0YXJ0c3dpdGgoc2VsZi5fd2Via2l0X2Jh
c2VfZGlyKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICMgRklYTUU6IHdlIGxl
YXZlIHRoZSBiYXNlIGNhc2UgaW4gc28gd2UgY2FuIHdyaXRlIHRvCisgICAgICAgICMgdGhlIG91
dHB1dCBkaXJlY3RvcnksIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgdW5pdCB0ZXN0cyB3aWxsCisg
ICAgICAgICMgZmFpbC4gSWRlYWxseSBhbGwgb2YgdGhpcyB3b3VsZCBiZSBrZXB0IGluIG1lbW9y
eSBzbyB0aGUgdW5pdCB0ZXN0cworICAgICAgICAjIG5ldmVyIHdyaXRlIHRvIHRoZSBmaWxlc3lz
dGVtLgorICAgICAgICByZXR1cm4gYmFzZS5Qb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYs
ICpwYXRoKQorCiAgICAgZGVmIHRlc3RzKHNlbGYsIHBhdGhzKToKICAgICAgICAgIyBUZXN0IHRo
ZSBpZGVhIG9mIHBvcnQtc3BlY2lmaWMgb3ZlcnJpZGVzIGZvciB0ZXN0IGxpc3RzLiBBbHNvCiAg
ICAgICAgICMga2VlcCBpbiBtZW1vcnkgdG8gc3BlZWQgdXAgdGhlIHRlc3QgaGFybmVzcy4KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93
ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IGE3MTZjZWM4YzZi
NmIxNTI5ZmNiNTJiNDMxZDExNzJiY2NlZDAzMTMuLmRkNjE2OTFlYTJiMGI4MGEzNWIxMTA0NGU1
NTI1M2RmYzliZTkzYTggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVz
dC5weQpAQCAtMzUsNiArMzUsNyBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQg
UXVldWUKIGltcG9ydCBzaHV0aWwKK2ltcG9ydCBTdHJpbmdJTwogaW1wb3J0IHN5cwogaW1wb3J0
IHRlbXBmaWxlCiBpbXBvcnQgdGhyZWFkCkBAIC02MCw2ICs2MSwxNiBAQCBjbGFzcyBNb2NrVXNl
cigpOgogICAgICAgICBzZWxmLnVybCA9IHVybAogCiAKKyMgRklYTUU6IFRoaXMgbWFrZXMgU3Ry
aW5nSU8gb2JqZWN0cyB3b3JrIHdpdGggIndpdGgiLiBSZW1vdmUKKyMgd2hlbiB3ZSB1cGdyYWRl
IHRvIDIuNi4KK2NsYXNzIE5ld1N0cmluZ0lPKFN0cmluZ0lPLlN0cmluZ0lPKToKKyAgICBkZWYg
X19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9f
KHNlbGYsIHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spOgorICAgICAgICBwYXNzCisKKwogZGVmIHBh
c3NpbmdfcnVuKGFyZ3M9W10sIHBvcnRfb2JqPU5vbmUsIHJlY29yZF9yZXN1bHRzPUZhbHNlLAog
ICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPUZhbHNlKToKICAgICBuZXdfYXJncyA9IFsn
LS1wcmludCcsICdub3RoaW5nJ10KQEAgLTI2MSwxNCArMjcyLDE2IEBAIGNsYXNzIE1haW5UZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLnVybCwg
Jy90bXAvZm9vL3Jlc3VsdHMuaHRtbCcpCiAKIAotCiBkZWYgX21vY2tlZF9vcGVuKG9yaWdpbmFs
X29wZW4sIGZpbGVfbGlzdCk6CiAgICAgZGVmIF93cmFwcGVyKG5hbWUsIG1vZGUsIGVuY29kaW5n
KToKKyAgICAgICAgIyBGSVhNRTogaWRlYWxseSBub3RoaW5nIHNob3VsZCB3cml0ZSB0byB0aGUg
ZmlsZSBzeXN0ZW0sIGJ1dAorICAgICAgICAjIHRoaXMgd2lsbCBuZWVkIHRvIHdhaXQgdW50aWwg
d2UgaGF2ZSBhIGNvbnNpc3RlbnQgZmlsZQorICAgICAgICAjIHN5c3RlbSB3cmFwcGVyLgogICAg
ICAgICBpZiBuYW1lLmZpbmQoIi1leHBlY3RlZC4iKSAhPSAtMSBhbmQgbW9kZS5maW5kKCJ3Iikg
IT0gLTE6CiAgICAgICAgICAgICAjIHdlIGRvbid0IHdhbnQgdG8gYWN0dWFsbHkgd3JpdGUgbmV3
IGJhc2VsaW5lcywgc28gc3R1YiB0aGVzZSBvdXQKICAgICAgICAgICAgIG5hbWUucmVwbGFjZSgn
XFwnLCAnLycpCiAgICAgICAgICAgICBmaWxlX2xpc3QuYXBwZW5kKG5hbWUpCi0gICAgICAgICAg
ICByZXR1cm4gb3JpZ2luYWxfb3Blbihvcy5kZXZudWxsLCBtb2RlLCBlbmNvZGluZykKKyAgICAg
ICAgICAgIHJldHVybiBOZXdTdHJpbmdJTygpCiAgICAgICAgIHJldHVybiBvcmlnaW5hbF9vcGVu
KG5hbWUsIG1vZGUsIGVuY29kaW5nKQogICAgIHJldHVybiBfd3JhcHBlcgogCkBAIC0yODAsMTAg
KzI5Myw3IEBAIGNsYXNzIFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgICAgIGJhc2VsaW5lID0gZmlsZSArICItZXhwZWN0ZWQiICsgZXh0CiAgICAgICAgICAgICBz
ZWxmLmFzc2VydFRydWUoYW55KGYuZmluZChiYXNlbGluZSkgIT0gLTEgZm9yIGYgaW4gZmlsZV9s
aXN0KSkKIAotICAgICMgRklYTUU6IFRoaXMgdGVzdCBpcyBmYWlsaW5nIG9uIHRoZSBib3RzLiBB
bHNvLCB0aGlzIHRlc3QgdG91Y2hlcyB0aGUKLSAgICAjICAgICAgICBmaWxlIHN5c3RlbS4gIFVu
aXQgdGVzdHMgc2hvdWxkIG5vdCByZWFkIG9yIHdyaXRlIHRoZSBmaWxlIHN5c3RlbS4KLSAgICAj
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc4NzkKLSAg
ICBkZWYgZGlzYWJsZWRfdGVzdF9yZXNldF9yZXN1bHRzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3Jl
c2V0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIGZpbGVfbGlzdCA9IFtdCiAgICAgICAgIG9yaWdp
bmFsX29wZW4gPSBjb2RlY3Mub3BlbgogICAgICAgICB0cnk6CkBAIC0yOTMsNiArMzAzLDcgQEAg
Y2xhc3MgUmViYXNlbGluZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgY29k
ZWNzLm9wZW4gPSBfbW9ja2VkX29wZW4ob3JpZ2luYWxfb3BlbiwgZmlsZV9saXN0KQogICAgICAg
ICAgICAgcGFzc2luZ19ydW4oWyctLXBpeGVsLXRlc3RzJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAnLS1yZXNldC1yZXN1bHRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnLS1jaGls
ZC1wcm9jZXNzZXM9MScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3Nlcy9pbWFnZS5o
dG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2lu
Z19pbWFnZS5odG1sJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9
VHJ1ZSkKQEAgLTMxNCw2ICszMjUsNyBAQCBjbGFzcyBSZWJhc2VsaW5lVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgICAgICBjb2RlY3Mub3BlbiA9IF9tb2NrZWRfb3BlbihvcmlnaW5h
bF9vcGVuLCBmaWxlX2xpc3QpCiAgICAgICAgICAgICBwYXNzaW5nX3J1bihbJy0tcGl4ZWwtdGVz
dHMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICctLW5ldy1iYXNlbGluZScsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgJy0tY2hpbGQtcHJvY2Vzc2VzPTEnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICdwYXNzZXMvaW1hZ2UuaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
J2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfaW1hZ2UuaHRtbCddLAogICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71136</attachid>
            <date>2010-10-18 22:59:33 -0700</date>
            <delta_ts>2010-10-18 23:20:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47879-20101018225932.patch</filename>
            <type>text/plain</type>
            <size>4255</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1MDBiNzdkN2Y2NmE3ZDUwYTdiMGE2NGI0YzViMmU1YjY3ZDRhZjMyLi45NjYyMmE0
NTVkZGIzZjk2MzJhNDhjMDc2NjgyOGQ4NmZmZmFiMmQ3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTAtMTggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IFJlYmFzZWxpbmVU
ZXN0IHNvIHRoYXQgd2UncmUgbm90IGFjdHVhbGx5IHRyeWluZyB0byB3cml0ZQorICAgICAgICB0
byB0aGUgZmlsZXN5c3RlbS4gSSB0aGluayB0aGlzIHNob3VsZCBmaXggdGhlIGVycm9ycyB3ZQor
ICAgICAgICB3ZXJlIHNlZWluZyBpbiB0aGlzIGJ1ZyAoYXQgc29tZSBwb2ludCB0aGlzIHdvcmtl
ZCBjb3JyZWN0bHksCisgICAgICAgIGJ1dCBpdCBtdXN0J3ZlIHJlZ3Jlc3NlZCBhbmQgb25seSBz
aG93biB1cCBzcG9yYWRpY2FsbHkpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00Nzg3OQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisKIDIwMTAtMTAtMTggIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3QucHkKaW5kZXggMzY5MWM1YWFlOWZjMzIxYzk1MTc4NjM2Y2RjZDAzYjY5YmRk
ZDczZi4uYjBjMDRhMzFhZDgyYWI3MWZjNjU5MWE5ZTc1YzkwZDMzYjg5OGU2NyAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVz
dC5weQpAQCAtMTYwLDYgKzE2MCwxNiBAQCBjbGFzcyBUZXN0UG9ydChiYXNlLlBvcnQpOgogICAg
ICAgICAgICAgdGV4dCA9ICcnCiAgICAgICAgIHJldHVybiB0ZXh0CiAKKyAgICBkZWYgbWF5YmVf
bWFrZV9kaXJlY3Rvcnkoc2VsZiwgKnBhdGgpOgorICAgICAgICBhYnNwYXRoID0gb3MucGF0aC5q
b2luKCpwYXRoKQorICAgICAgICBpZiBhYnNwYXRoLnN0YXJ0c3dpdGgoc2VsZi5fd2Via2l0X2Jh
c2VfZGlyKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICMgRklYTUU6IHdlIGxl
YXZlIHRoZSBiYXNlIGNhc2UgaW4gc28gd2UgY2FuIHdyaXRlIHRvCisgICAgICAgICMgdGhlIG91
dHB1dCBkaXJlY3RvcnksIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgdW5pdCB0ZXN0cyB3aWxsCisg
ICAgICAgICMgZmFpbC4gSWRlYWxseSBhbGwgb2YgdGhpcyB3b3VsZCBiZSBrZXB0IGluIG1lbW9y
eSBzbyB0aGUgdW5pdCB0ZXN0cworICAgICAgICAjIG5ldmVyIHdyaXRlIHRvIHRoZSBmaWxlc3lz
dGVtLgorICAgICAgICByZXR1cm4gYmFzZS5Qb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYs
ICpwYXRoKQorCiAgICAgZGVmIHRlc3RzKHNlbGYsIHBhdGhzKToKICAgICAgICAgIyBUZXN0IHRo
ZSBpZGVhIG9mIHBvcnQtc3BlY2lmaWMgb3ZlcnJpZGVzIGZvciB0ZXN0IGxpc3RzLiBBbHNvCiAg
ICAgICAgICMga2VlcCBpbiBtZW1vcnkgdG8gc3BlZWQgdXAgdGhlIHRlc3QgaGFybmVzcy4KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93
ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IGE3MTZjZWM4YzZi
NmIxNTI5ZmNiNTJiNDMxZDExNzJiY2NlZDAzMTMuLmNhMTgyYzFhNzA0MjY1MDEyNjk2MjVlMDIy
OTk2Yjg1OTNiYjU4NzQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVz
dC5weQpAQCAtMzUsNiArMzUsNyBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQg
UXVldWUKIGltcG9ydCBzaHV0aWwKK2ltcG9ydCBTdHJpbmdJTwogaW1wb3J0IHN5cwogaW1wb3J0
IHRlbXBmaWxlCiBpbXBvcnQgdGhyZWFkCkBAIC02MCw2ICs2MSwxNiBAQCBjbGFzcyBNb2NrVXNl
cigpOgogICAgICAgICBzZWxmLnVybCA9IHVybAogCiAKKyMgRklYTUU6IFRoaXMgbWFrZXMgU3Ry
aW5nSU8gb2JqZWN0cyB3b3JrIHdpdGggIndpdGgiLiBSZW1vdmUKKyMgd2hlbiB3ZSB1cGdyYWRl
IHRvIDIuNi4KK2NsYXNzIE5ld1N0cmluZ0lPKFN0cmluZ0lPLlN0cmluZ0lPKToKKyAgICBkZWYg
X19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9f
KHNlbGYsIHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spOgorICAgICAgICBwYXNzCisKKwogZGVmIHBh
c3NpbmdfcnVuKGFyZ3M9W10sIHBvcnRfb2JqPU5vbmUsIHJlY29yZF9yZXN1bHRzPUZhbHNlLAog
ICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPUZhbHNlKToKICAgICBuZXdfYXJncyA9IFsn
LS1wcmludCcsICdub3RoaW5nJ10KQEAgLTI2MSwxNCArMjcyLDE2IEBAIGNsYXNzIE1haW5UZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLnVybCwg
Jy90bXAvZm9vL3Jlc3VsdHMuaHRtbCcpCiAKIAotCiBkZWYgX21vY2tlZF9vcGVuKG9yaWdpbmFs
X29wZW4sIGZpbGVfbGlzdCk6CiAgICAgZGVmIF93cmFwcGVyKG5hbWUsIG1vZGUsIGVuY29kaW5n
KToKKyAgICAgICAgIyBGSVhNRTogaWRlYWxseSBub3RoaW5nIHNob3VsZCB3cml0ZSB0byB0aGUg
ZmlsZSBzeXN0ZW0sIGJ1dAorICAgICAgICAjIHRoaXMgd2lsbCBuZWVkIHRvIHdhaXQgdW50aWwg
d2UgaGF2ZSBhIGNvbnNpc3RlbnQgZmlsZQorICAgICAgICAjIHN5c3RlbSB3cmFwcGVyLgogICAg
ICAgICBpZiBuYW1lLmZpbmQoIi1leHBlY3RlZC4iKSAhPSAtMSBhbmQgbW9kZS5maW5kKCJ3Iikg
IT0gLTE6CiAgICAgICAgICAgICAjIHdlIGRvbid0IHdhbnQgdG8gYWN0dWFsbHkgd3JpdGUgbmV3
IGJhc2VsaW5lcywgc28gc3R1YiB0aGVzZSBvdXQKICAgICAgICAgICAgIG5hbWUucmVwbGFjZSgn
XFwnLCAnLycpCiAgICAgICAgICAgICBmaWxlX2xpc3QuYXBwZW5kKG5hbWUpCi0gICAgICAgICAg
ICByZXR1cm4gb3JpZ2luYWxfb3Blbihvcy5kZXZudWxsLCBtb2RlLCBlbmNvZGluZykKKyAgICAg
ICAgICAgIHJldHVybiBOZXdTdHJpbmdJTygpCiAgICAgICAgIHJldHVybiBvcmlnaW5hbF9vcGVu
KG5hbWUsIG1vZGUsIGVuY29kaW5nKQogICAgIHJldHVybiBfd3JhcHBlcgogCkBAIC0yODAsMTAg
KzI5Myw3IEBAIGNsYXNzIFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgICAgIGJhc2VsaW5lID0gZmlsZSArICItZXhwZWN0ZWQiICsgZXh0CiAgICAgICAgICAgICBz
ZWxmLmFzc2VydFRydWUoYW55KGYuZmluZChiYXNlbGluZSkgIT0gLTEgZm9yIGYgaW4gZmlsZV9s
aXN0KSkKIAotICAgICMgRklYTUU6IFRoaXMgdGVzdCBpcyBmYWlsaW5nIG9uIHRoZSBib3RzLiBB
bHNvLCB0aGlzIHRlc3QgdG91Y2hlcyB0aGUKLSAgICAjICAgICAgICBmaWxlIHN5c3RlbS4gIFVu
aXQgdGVzdHMgc2hvdWxkIG5vdCByZWFkIG9yIHdyaXRlIHRoZSBmaWxlIHN5c3RlbS4KLSAgICAj
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc4NzkKLSAg
ICBkZWYgZGlzYWJsZWRfdGVzdF9yZXNldF9yZXN1bHRzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3Jl
c2V0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIGZpbGVfbGlzdCA9IFtdCiAgICAgICAgIG9yaWdp
bmFsX29wZW4gPSBjb2RlY3Mub3BlbgogICAgICAgICB0cnk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71137</attachid>
            <date>2010-10-18 23:20:49 -0700</date>
            <delta_ts>2010-10-18 23:23:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47879-20101018232048.patch</filename>
            <type>text/plain</type>
            <size>11234</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1MDBiNzdkN2Y2NmE3ZDUwYTdiMGE2NGI0YzViMmU1YjY3ZDRhZjMyLi42ZGUzNzUz
ZmU3ZjZiYzAwMWUwOTZmYTUxZjRjZDg5MzFjNjAxY2FjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMTAtMTAtMTggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IFJlYmFzZWxpbmVU
ZXN0IHNvIHRoYXQgd2UncmUgbm90IGFjdHVhbGx5IHRyeWluZyB0byB3cml0ZQorICAgICAgICB0
byB0aGUgZmlsZXN5c3RlbS4gSSB0aGluayB0aGlzIHNob3VsZCBmaXggdGhlIGVycm9ycyB3ZQor
ICAgICAgICB3ZXJlIHNlZWluZyBpbiB0aGlzIGJ1ZyAoYXQgc29tZSBwb2ludCB0aGlzIHdvcmtl
ZCBjb3JyZWN0bHksCisgICAgICAgIGJ1dCBpdCBtdXN0J3ZlIHJlZ3Jlc3NlZCBhbmQgb25seSBz
aG93biB1cCBzcG9yYWRpY2FsbHkpLgorCisgICAgICAgIEFsc28sIHNwbGl0IG91dCB0aGUgIk5l
d1N0cmluZ0lPIiB3b3JrYXJvdW5kIGludG8gaXRzIG93biBmaWxlCisgICAgICAgIHNvIHRoYXQg
d2UgY2FuIHJldXNlIHRoaXMgY2xhc3MgaW4gbXVsdGlwbGUgZmlsZXMuIFRoaXMgY2xhc3MKKyAg
ICAgICAgc3ViY2xhc3NlcyBTdHJpbmdJTyBhbmQgY3JlYXRlcyBvYmplY3RzIHRoYXQgd29yayB3
aXRoICd3aXRoJworICAgICAgICBzdGF0ZW1lbnRzOyBpdCB3aWxsIG5vIGxvbmdlciBiZSBuZWNl
c3Nhcnkgd2hlbiBldmVyeW9uZSBpcworICAgICAgICBydW5uaW5nIFB5dGhvbiAyLjYuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODc5CisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXdzdHJpbmdpby5weTogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW9fdW5pdHRlc3QucHk6
IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVz
dC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Vf
dW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9nb29nbGVfY2hyb21lX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisKIDIwMTAtMTAtMTgg
IEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXdzdHJpbmdpby5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
d3N0cmluZ2lvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1MTBkYThkNDRhYzU4OTJmZWM5MmJiZWYyZjJjMmJm
MDBjZWE2ODQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXdzdHJpbmdpby5weQpAQCAtMCwwICsxLDM5IEBACisjIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
aW1wb3J0IFN0cmluZ0lPIGFzIE9sZFN0cmluZ0lPCisKKworIyBGSVhNRTogVGhpcyBtYWtlcyBT
dHJpbmdJTyBvYmplY3RzIHdvcmsgd2l0aCAid2l0aCIuIFJlbW92ZQorIyB3aGVuIHdlIHVwZ3Jh
ZGUgdG8gMi42LgorY2xhc3MgU3RyaW5nSU8oT2xkU3RyaW5nSU8uU3RyaW5nSU8pOgorICAgIGRl
ZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0
X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgIHBhc3MKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ld3N0cmluZ2lvX3VuaXR0
ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW9f
dW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQyNDFlYTllYmQ4YThjMDAzNDBmNzkwOTI5YmUyNTI5
MTJjYTJlYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ld3N0cmluZ2lvX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNDMgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0IG5ld3N0cmluZ2lvCisKKworY2xhc3Mg
TmV3U3RyaW5nSU9UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9uZXdzdHJp
bmdpbyhzZWxmKToKKyAgICAgICAgcyA9ICJoZWxsbywgd29ybGQiCisgICAgICAgIHdpdGggbmV3
c3RyaW5naW8uU3RyaW5nSU8ocykgYXMgc19oYW5kbGU6CisgICAgICAgICAgICBuZXdfcyA9IHNf
aGFuZGxlLnJlYWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIG5ld19zKQorCisKK2lm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5p
dHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2VfdW5pdHRlc3QucHkKaW5kZXggOTNmODgwODJhYjM4YTZmZTkyZGNkM2Y5YTNiM2MyNDNh
NGU5MDVmYS4uZmQ2NWI1NGE5NjlhZGZiZjU1MDYxNGVhMDQ0NDE5OTVkNTE3NzAyZCAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
X3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQpAQCAtMjgsMTEgKzI4LDExIEBACiAKIGltcG9ydCBv
cHRwYXJzZQogaW1wb3J0IG9zCi1pbXBvcnQgU3RyaW5nSU8KIGltcG9ydCBzeXMKIGltcG9ydCB0
ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBu
ZXdzdHJpbmdpbwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBhdGggaW1wb3J0IGFic3Bh
dGhfdG9fdXJpCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBF
eGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBv
cnQgTW9jawpAQCAtNDAsMTUgKzQwLDYgQEAgZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBtb2Nr
dG9vbAogCiBpbXBvcnQgYmFzZQogCi0jIEZJWE1FOiBUaGlzIG1ha2VzIFN0cmluZ0lPIG9iamVj
dHMgd29yayB3aXRoICJ3aXRoIi4gUmVtb3ZlCi0jIHdoZW4gd2UgdXBncmFkZSB0byAyLjYuCi1j
bGFzcyBOZXdTdHJpbmdJTyhTdHJpbmdJTy5TdHJpbmdJTyk6Ci0gICAgZGVmIF9fZW50ZXJfXyhz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBl
LCB2YWx1ZSwgdHJhY2ViYWNrKToKLSAgICAgICAgcGFzcwotCiAKIGNsYXNzIE1vY2tFeGVjdXRp
dmUoKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZXhjZXB0aW9uKToKQEAgLTY5LDcgKzYwLDcg
QEAgY2xhc3MgVW5pdFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAKICAgICBkZWYgX29wZW5fY29uZmln
dXJhdGlvbl9maWxlKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9jb25maWd1cmF0aW9uX2NvbnRl
bnRzOgotICAgICAgICAgICAgcmV0dXJuIE5ld1N0cmluZ0lPKHNlbGYuX2NvbmZpZ3VyYXRpb25f
Y29udGVudHMpCisgICAgICAgICAgICByZXR1cm4gbmV3c3RyaW5naW8uU3RyaW5nSU8oc2VsZi5f
Y29uZmlndXJhdGlvbl9jb250ZW50cykKICAgICAgICAgcmFpc2Ugc2VsZi5fY29uZmlndXJhdGlv
bl9leGNlcHRpb24KIAogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRl
c3QucHkKaW5kZXggYzRjODg1ZDYzMjlhYjNkMGJiYWZhYWVjYTE3MzQzYTQ2NGVlN2EzNS4uZjA3
ZTFmYjIzODRmMDI0NzFkOWRhNmUyOWU0MTM2YjljNTRkYjVmYiAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lX3Vu
aXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5weQpAQCAtMjgsNyArMjgsNyBAQCBpbXBvcnQg
Y29kZWNzCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogCi1pbXBvcnQgYmFzZV91bml0dGVz
dAorZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IG5ld3N0cmluZ2lvCiBpbXBvcnQgZmFjdG9y
eQogaW1wb3J0IGdvb2dsZV9jaHJvbWUKIApAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBHZXRHb29n
bGVDaHJvbWVQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAgZGVmIG1vY2tf
b3BlbihwYXRoLCBtb2RlLCBlbmNvZGluZyk6CiAgICAgICAgICAgICBpZiAndGVzdF9leHBlY3Rh
dGlvbnNfY2hyb21lLnR4dCcgaW4gcGF0aDoKLSAgICAgICAgICAgICAgICByZXR1cm4gYmFzZV91
bml0dGVzdC5OZXdTdHJpbmdJTyhleHBlY3RlZF9zdHJpbmcpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG5ld3N0cmluZ2lvLlN0cmluZ0lPKGV4cGVjdGVkX3N0cmluZykKICAgICAgICAgICAgIHJl
dHVybiBvcmlnX29wZW4ocGF0aCwgbW9kZSwgZW5jb2RpbmcpCiAKICAgICAgICAgdHJ5OgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90
ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90
ZXN0LnB5CmluZGV4IDM2OTFjNWFhZTlmYzMyMWM5NTE3ODYzNmNkY2QwM2I2OWJkZGQ3M2YuLmIw
YzA0YTMxYWQ4MmFiNzFmYzY1OTFhOWU3NWM5MGQzM2I4OThlNjcgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAg
LTE2MCw2ICsxNjAsMTYgQEAgY2xhc3MgVGVzdFBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAg
IHRleHQgPSAnJwogICAgICAgICByZXR1cm4gdGV4dAogCisgICAgZGVmIG1heWJlX21ha2VfZGly
ZWN0b3J5KHNlbGYsICpwYXRoKToKKyAgICAgICAgYWJzcGF0aCA9IG9zLnBhdGguam9pbigqcGF0
aCkKKyAgICAgICAgaWYgYWJzcGF0aC5zdGFydHN3aXRoKHNlbGYuX3dlYmtpdF9iYXNlX2Rpcik6
CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAjIEZJWE1FOiB3ZSBsZWF2ZSB0aGUg
YmFzZSBjYXNlIGluIHNvIHdlIGNhbiB3cml0ZSB0bworICAgICAgICAjIHRoZSBvdXRwdXQgZGly
ZWN0b3J5LCBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHVuaXQgdGVzdHMgd2lsbAorICAgICAgICAj
IGZhaWwuIElkZWFsbHkgYWxsIG9mIHRoaXMgd291bGQgYmUga2VwdCBpbiBtZW1vcnkgc28gdGhl
IHVuaXQgdGVzdHMKKyAgICAgICAgIyBuZXZlciB3cml0ZSB0byB0aGUgZmlsZXN5c3RlbS4KKyAg
ICAgICAgcmV0dXJuIGJhc2UuUG9ydC5tYXliZV9tYWtlX2RpcmVjdG9yeShzZWxmLCAqcGF0aCkK
KwogICAgIGRlZiB0ZXN0cyhzZWxmLCBwYXRocyk6CiAgICAgICAgICMgVGVzdCB0aGUgaWRlYSBv
ZiBwb3J0LXNwZWNpZmljIG92ZXJyaWRlcyBmb3IgdGVzdCBsaXN0cy4gQWxzbwogICAgICAgICAj
IGtlZXAgaW4gbWVtb3J5IHRvIHNwZWVkIHVwIHRoZSB0ZXN0IGhhcm5lc3MuCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rl
c3RzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQppbmRleCBhNzE2Y2VjOGM2YjZiMTUyOWZj
YjUyYjQzMWQxMTcyYmNjZWQwMzEzLi45YmY3MGUwODlmZGI1Y2IzOTAxMDY0MWE3ZWM0MzcwZTM3
MjM1YmJmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAg
LTQzLDYgKzQzLDcgQEAgaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20g
d2Via2l0cHkuY29tbW9uIGltcG9ydCBhcnJheV9zdHJlYW0KK2Zyb20gd2Via2l0cHkuY29tbW9u
IGltcG9ydCBuZXdzdHJpbmdpbwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBv
dXRwdXRjYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHVzZXIKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0CkBAIC0yNjEsMTQgKzI2MiwxNiBA
QCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwodXNlci51cmwsICcvdG1wL2Zvby9yZXN1bHRzLmh0bWwnKQogCiAKLQogZGVmIF9tb2Nr
ZWRfb3BlbihvcmlnaW5hbF9vcGVuLCBmaWxlX2xpc3QpOgogICAgIGRlZiBfd3JhcHBlcihuYW1l
LCBtb2RlLCBlbmNvZGluZyk6CisgICAgICAgICMgRklYTUU6IGlkZWFsbHkgbm90aGluZyBzaG91
bGQgd3JpdGUgdG8gdGhlIGZpbGUgc3lzdGVtLCBidXQKKyAgICAgICAgIyB0aGlzIHdpbGwgbmVl
ZCB0byB3YWl0IHVudGlsIHdlIGhhdmUgYSBjb25zaXN0ZW50IGZpbGUKKyAgICAgICAgIyBzeXN0
ZW0gd3JhcHBlci4KICAgICAgICAgaWYgbmFtZS5maW5kKCItZXhwZWN0ZWQuIikgIT0gLTEgYW5k
IG1vZGUuZmluZCgidyIpICE9IC0xOgogICAgICAgICAgICAgIyB3ZSBkb24ndCB3YW50IHRvIGFj
dHVhbGx5IHdyaXRlIG5ldyBiYXNlbGluZXMsIHNvIHN0dWIgdGhlc2Ugb3V0CiAgICAgICAgICAg
ICBuYW1lLnJlcGxhY2UoJ1xcJywgJy8nKQogICAgICAgICAgICAgZmlsZV9saXN0LmFwcGVuZChu
YW1lKQotICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsX29wZW4ob3MuZGV2bnVsbCwgbW9kZSwg
ZW5jb2RpbmcpCisgICAgICAgICAgICByZXR1cm4gbmV3c3RyaW5naW8uU3RyaW5nSU8oKQogICAg
ICAgICByZXR1cm4gb3JpZ2luYWxfb3BlbihuYW1lLCBtb2RlLCBlbmNvZGluZykKICAgICByZXR1
cm4gX3dyYXBwZXIKIApAQCAtMjgwLDEwICsyODMsNyBAQCBjbGFzcyBSZWJhc2VsaW5lVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBiYXNlbGluZSA9IGZpbGUgKyAiLWV4cGVj
dGVkIiArIGV4dAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFueShmLmZpbmQoYmFzZWxp
bmUpICE9IC0xIGZvciBmIGluIGZpbGVfbGlzdCkpCiAKLSAgICAjIEZJWE1FOiBUaGlzIHRlc3Qg
aXMgZmFpbGluZyBvbiB0aGUgYm90cy4gQWxzbywgdGhpcyB0ZXN0IHRvdWNoZXMgdGhlCi0gICAg
IyAgICAgICAgZmlsZSBzeXN0ZW0uICBVbml0IHRlc3RzIHNob3VsZCBub3QgcmVhZCBvciB3cml0
ZSB0aGUgZmlsZSBzeXN0ZW0uCi0gICAgIyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ3ODc5Ci0gICAgZGVmIGRpc2FibGVkX3Rlc3RfcmVzZXRfcmVzdWx0
cyhzZWxmKToKKyAgICBkZWYgdGVzdF9yZXNldF9yZXN1bHRzKHNlbGYpOgogICAgICAgICBmaWxl
X2xpc3QgPSBbXQogICAgICAgICBvcmlnaW5hbF9vcGVuID0gY29kZWNzLm9wZW4KICAgICAgICAg
dHJ5Ogo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71138</attachid>
            <date>2010-10-18 23:23:12 -0700</date>
            <delta_ts>2010-11-04 13:53:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47879-20101018232311.patch</filename>
            <type>text/plain</type>
            <size>11275</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1MDBiNzdkN2Y2NmE3ZDUwYTdiMGE2NGI0YzViMmU1YjY3ZDRhZjMyLi42ZGUzNzUz
ZmU3ZjZiYzAwMWUwOTZmYTUxZjRjZDg5MzFjNjAxY2FjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMTAtMTAtMTggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IFJlYmFzZWxpbmVU
ZXN0IHNvIHRoYXQgd2UncmUgbm90IGFjdHVhbGx5IHRyeWluZyB0byB3cml0ZQorICAgICAgICB0
byB0aGUgZmlsZXN5c3RlbS4gSSB0aGluayB0aGlzIHNob3VsZCBmaXggdGhlIGVycm9ycyB3ZQor
ICAgICAgICB3ZXJlIHNlZWluZyBpbiB0aGlzIGJ1ZyAoYXQgc29tZSBwb2ludCB0aGlzIHdvcmtl
ZCBjb3JyZWN0bHksCisgICAgICAgIGJ1dCBpdCBtdXN0J3ZlIHJlZ3Jlc3NlZCBhbmQgb25seSBz
aG93biB1cCBzcG9yYWRpY2FsbHkpLgorCisgICAgICAgIEFsc28sIHNwbGl0IG91dCB0aGUgIk5l
d1N0cmluZ0lPIiB3b3JrYXJvdW5kIGludG8gaXRzIG93biBmaWxlCisgICAgICAgIHNvIHRoYXQg
d2UgY2FuIHJldXNlIHRoaXMgY2xhc3MgaW4gbXVsdGlwbGUgZmlsZXMuIFRoaXMgY2xhc3MKKyAg
ICAgICAgc3ViY2xhc3NlcyBTdHJpbmdJTyBhbmQgY3JlYXRlcyBvYmplY3RzIHRoYXQgd29yayB3
aXRoICd3aXRoJworICAgICAgICBzdGF0ZW1lbnRzOyBpdCB3aWxsIG5vIGxvbmdlciBiZSBuZWNl
c3Nhcnkgd2hlbiBldmVyeW9uZSBpcworICAgICAgICBydW5uaW5nIFB5dGhvbiAyLjYuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODc5CisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXdzdHJpbmdpby5weTogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW9fdW5pdHRlc3QucHk6
IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVz
dC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Vf
dW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9nb29nbGVfY2hyb21lX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisKIDIwMTAtMTAtMTgg
IEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXdzdHJpbmdpby5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
d3N0cmluZ2lvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1MTBkYThkNDRhYzU4OTJmZWM5MmJiZWYyZjJjMmJm
MDBjZWE2ODQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXdzdHJpbmdpby5weQpAQCAtMCwwICsxLDM5IEBACisjIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
aW1wb3J0IFN0cmluZ0lPIGFzIE9sZFN0cmluZ0lPCisKKworIyBGSVhNRTogVGhpcyBtYWtlcyBT
dHJpbmdJTyBvYmplY3RzIHdvcmsgd2l0aCAid2l0aCIuIFJlbW92ZQorIyB3aGVuIHdlIHVwZ3Jh
ZGUgdG8gMi42LgorY2xhc3MgU3RyaW5nSU8oT2xkU3RyaW5nSU8uU3RyaW5nSU8pOgorICAgIGRl
ZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0
X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgIHBhc3MKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ld3N0cmluZ2lvX3VuaXR0
ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW9f
dW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGVlMGFiZDljOWEwYmQxNGEzMTJiOTBlY2VlMjE5NWJi
MjBkMTY5ZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ld3N0cmluZ2lvX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNDUgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CisKK2ltcG9ydCB1
bml0dGVzdAorCitpbXBvcnQgbmV3c3RyaW5naW8KKworCitjbGFzcyBOZXdTdHJpbmdJT1Rlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X25ld3N0cmluZ2lvKHNlbGYpOgorICAg
ICAgICBzID0gImhlbGxvLCB3b3JsZCIKKyAgICAgICAgd2l0aCBuZXdzdHJpbmdpby5TdHJpbmdJ
TyhzKSBhcyBzX2hhbmRsZToKKyAgICAgICAgICAgIG5ld19zID0gc19oYW5kbGUucmVhZCgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgbmV3X3MpCisKKworaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5w
eQppbmRleCA5M2Y4ODA4MmFiMzhhNmZlOTJkY2QzZjlhM2IzYzI0M2E0ZTkwNWZhLi5mZDY1YjU0
YTk2OWFkZmJmNTUwNjE0ZWEwNDQ0MTk5NWQ1MTc3MDJkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3Vu
aXR0ZXN0LnB5CkBAIC0yOCwxMSArMjgsMTEgQEAKIAogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQg
b3MKLWltcG9ydCBTdHJpbmdJTwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQg
dW5pdHRlc3QKIAorZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IG5ld3N0cmluZ2lvCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGF0aCBpbXBvcnQgYWJzcGF0aF90b191cmkKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0
RXJyb3IKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCkBAIC00MCwx
NSArNDAsNiBAQCBmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCiAKIGltcG9ydCBi
YXNlCiAKLSMgRklYTUU6IFRoaXMgbWFrZXMgU3RyaW5nSU8gb2JqZWN0cyB3b3JrIHdpdGggIndp
dGgiLiBSZW1vdmUKLSMgd2hlbiB3ZSB1cGdyYWRlIHRvIDIuNi4KLWNsYXNzIE5ld1N0cmluZ0lP
KFN0cmluZ0lPLlN0cmluZ0lPKToKLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gc2VsZgotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0cmFjZWJh
Y2spOgotICAgICAgICBwYXNzCi0KIAogY2xhc3MgTW9ja0V4ZWN1dGl2ZSgpOgogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBleGNlcHRpb24pOgpAQCAtNjksNyArNjAsNyBAQCBjbGFzcyBVbml0VGVz
dFBvcnQoYmFzZS5Qb3J0KToKIAogICAgIGRlZiBfb3Blbl9jb25maWd1cmF0aW9uX2ZpbGUoc2Vs
Zik6CiAgICAgICAgIGlmIHNlbGYuX2NvbmZpZ3VyYXRpb25fY29udGVudHM6Ci0gICAgICAgICAg
ICByZXR1cm4gTmV3U3RyaW5nSU8oc2VsZi5fY29uZmlndXJhdGlvbl9jb250ZW50cykKKyAgICAg
ICAgICAgIHJldHVybiBuZXdzdHJpbmdpby5TdHJpbmdJTyhzZWxmLl9jb25maWd1cmF0aW9uX2Nv
bnRlbnRzKQogICAgICAgICByYWlzZSBzZWxmLl9jb25maWd1cmF0aW9uX2V4Y2VwdGlvbgogCiAK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5weQppbmRleCBjNGM4
ODVkNjMyOWFiM2QwYmJhZmFhZWNhMTczNDNhNDY0ZWU3YTM1Li5mMDdlMWZiMjM4NGYwMjQ3MWQ5
ZGE2ZTI5ZTQxMzZiOWM1NGRiNWZiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hy
b21lX3VuaXR0ZXN0LnB5CkBAIC0yOCw3ICsyOCw3IEBAIGltcG9ydCBjb2RlY3MKIGltcG9ydCBv
cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWltcG9ydCBiYXNlX3VuaXR0ZXN0Citmcm9tIHdlYmtpdHB5
LmNvbW1vbiBpbXBvcnQgbmV3c3RyaW5naW8KIGltcG9ydCBmYWN0b3J5CiBpbXBvcnQgZ29vZ2xl
X2Nocm9tZQogCkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIEdldEdvb2dsZUNocm9tZVBvcnRUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICAgICBkZWYgbW9ja19vcGVuKHBhdGgsIG1vZGUs
IGVuY29kaW5nKToKICAgICAgICAgICAgIGlmICd0ZXN0X2V4cGVjdGF0aW9uc19jaHJvbWUudHh0
JyBpbiBwYXRoOgotICAgICAgICAgICAgICAgIHJldHVybiBiYXNlX3VuaXR0ZXN0Lk5ld1N0cmlu
Z0lPKGV4cGVjdGVkX3N0cmluZykKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3c3RyaW5naW8u
U3RyaW5nSU8oZXhwZWN0ZWRfc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIG9yaWdfb3Blbihw
YXRoLCBtb2RlLCBlbmNvZGluZykKIAogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggMzY5
MWM1YWFlOWZjMzIxYzk1MTc4NjM2Y2RjZDAzYjY5YmRkZDczZi4uYjBjMDRhMzFhZDgyYWI3MWZj
NjU5MWE5ZTc1YzkwZDMzYjg5OGU2NyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtMTYwLDYgKzE2MCwxNiBA
QCBjbGFzcyBUZXN0UG9ydChiYXNlLlBvcnQpOgogICAgICAgICAgICAgdGV4dCA9ICcnCiAgICAg
ICAgIHJldHVybiB0ZXh0CiAKKyAgICBkZWYgbWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZiwgKnBh
dGgpOgorICAgICAgICBhYnNwYXRoID0gb3MucGF0aC5qb2luKCpwYXRoKQorICAgICAgICBpZiBh
YnNwYXRoLnN0YXJ0c3dpdGgoc2VsZi5fd2Via2l0X2Jhc2VfZGlyKToKKyAgICAgICAgICAgIHJl
dHVybiBUcnVlCisgICAgICAgICMgRklYTUU6IHdlIGxlYXZlIHRoZSBiYXNlIGNhc2UgaW4gc28g
d2UgY2FuIHdyaXRlIHRvCisgICAgICAgICMgdGhlIG91dHB1dCBkaXJlY3RvcnksIGJlY2F1c2Ug
b3RoZXJ3aXNlIHNvbWUgdW5pdCB0ZXN0cyB3aWxsCisgICAgICAgICMgZmFpbC4gSWRlYWxseSBh
bGwgb2YgdGhpcyB3b3VsZCBiZSBrZXB0IGluIG1lbW9yeSBzbyB0aGUgdW5pdCB0ZXN0cworICAg
ICAgICAjIG5ldmVyIHdyaXRlIHRvIHRoZSBmaWxlc3lzdGVtLgorICAgICAgICByZXR1cm4gYmFz
ZS5Qb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYsICpwYXRoKQorCiAgICAgZGVmIHRlc3Rz
KHNlbGYsIHBhdGhzKToKICAgICAgICAgIyBUZXN0IHRoZSBpZGVhIG9mIHBvcnQtc3BlY2lmaWMg
b3ZlcnJpZGVzIGZvciB0ZXN0IGxpc3RzLiBBbHNvCiAgICAgICAgICMga2VlcCBpbiBtZW1vcnkg
dG8gc3BlZWQgdXAgdGhlIHRlc3QgaGFybmVzcy4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rl
c3RzX3VuaXR0ZXN0LnB5CmluZGV4IGE3MTZjZWM4YzZiNmIxNTI5ZmNiNTJiNDMxZDExNzJiY2Nl
ZDAzMTMuLjliZjcwZTA4OWZkYjVjYjM5MDEwNjQxYTdlYzQzNzBlMzcyMzViYmYgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRf
dGVzdHNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpAQCAtNDMsNiArNDMsNyBAQCBp
bXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24g
aW1wb3J0IGFycmF5X3N0cmVhbQorZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IG5ld3N0cmlu
Z2lvCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG91dHB1dGNhcHR1cmUKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgdXNlcgogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMgaW1wb3J0IHBvcnQKQEAgLTI2MSwxNCArMjYyLDE2IEBAIGNsYXNzIE1haW5UZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLnVybCwg
Jy90bXAvZm9vL3Jlc3VsdHMuaHRtbCcpCiAKIAotCiBkZWYgX21vY2tlZF9vcGVuKG9yaWdpbmFs
X29wZW4sIGZpbGVfbGlzdCk6CiAgICAgZGVmIF93cmFwcGVyKG5hbWUsIG1vZGUsIGVuY29kaW5n
KToKKyAgICAgICAgIyBGSVhNRTogaWRlYWxseSBub3RoaW5nIHNob3VsZCB3cml0ZSB0byB0aGUg
ZmlsZSBzeXN0ZW0sIGJ1dAorICAgICAgICAjIHRoaXMgd2lsbCBuZWVkIHRvIHdhaXQgdW50aWwg
d2UgaGF2ZSBhIGNvbnNpc3RlbnQgZmlsZQorICAgICAgICAjIHN5c3RlbSB3cmFwcGVyLgogICAg
ICAgICBpZiBuYW1lLmZpbmQoIi1leHBlY3RlZC4iKSAhPSAtMSBhbmQgbW9kZS5maW5kKCJ3Iikg
IT0gLTE6CiAgICAgICAgICAgICAjIHdlIGRvbid0IHdhbnQgdG8gYWN0dWFsbHkgd3JpdGUgbmV3
IGJhc2VsaW5lcywgc28gc3R1YiB0aGVzZSBvdXQKICAgICAgICAgICAgIG5hbWUucmVwbGFjZSgn
XFwnLCAnLycpCiAgICAgICAgICAgICBmaWxlX2xpc3QuYXBwZW5kKG5hbWUpCi0gICAgICAgICAg
ICByZXR1cm4gb3JpZ2luYWxfb3Blbihvcy5kZXZudWxsLCBtb2RlLCBlbmNvZGluZykKKyAgICAg
ICAgICAgIHJldHVybiBuZXdzdHJpbmdpby5TdHJpbmdJTygpCiAgICAgICAgIHJldHVybiBvcmln
aW5hbF9vcGVuKG5hbWUsIG1vZGUsIGVuY29kaW5nKQogICAgIHJldHVybiBfd3JhcHBlcgogCkBA
IC0yODAsMTAgKzI4Myw3IEBAIGNsYXNzIFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgICAgIGJhc2VsaW5lID0gZmlsZSArICItZXhwZWN0ZWQiICsgZXh0CiAgICAg
ICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KGYuZmluZChiYXNlbGluZSkgIT0gLTEgZm9yIGYg
aW4gZmlsZV9saXN0KSkKIAotICAgICMgRklYTUU6IFRoaXMgdGVzdCBpcyBmYWlsaW5nIG9uIHRo
ZSBib3RzLiBBbHNvLCB0aGlzIHRlc3QgdG91Y2hlcyB0aGUKLSAgICAjICAgICAgICBmaWxlIHN5
c3RlbS4gIFVuaXQgdGVzdHMgc2hvdWxkIG5vdCByZWFkIG9yIHdyaXRlIHRoZSBmaWxlIHN5c3Rl
bS4KLSAgICAjICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDc4NzkKLSAgICBkZWYgZGlzYWJsZWRfdGVzdF9yZXNldF9yZXN1bHRzKHNlbGYpOgorICAgIGRl
ZiB0ZXN0X3Jlc2V0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIGZpbGVfbGlzdCA9IFtdCiAgICAg
ICAgIG9yaWdpbmFsX29wZW4gPSBjb2RlY3Mub3BlbgogICAgICAgICB0cnk6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>