<?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>87802</bug_id>
          
          <creation_ts>2012-05-29 18:14:48 -0700</creation_ts>
          <short_desc>webkitpy: add support for an ordered dict of test expectations</short_desc>
          <delta_ts>2012-06-06 17:49:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>65834</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>636665</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-29 18:14:48 -0700</bug_when>
    <thetext>webkitpy: add support for an ordered dict of test expectations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636673</commentid>
    <comment_count>1</comment_count>
      <attachid>144666</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-29 18:19:52 -0700</bug_when>
    <thetext>Created attachment 144666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636678</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-29 18:21:52 -0700</bug_when>
    <thetext>Attachment 144666 did not pass style-queue:

Traceback (most recent call last):
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkit-patch&quot;, line 44, in &lt;module&gt;
    from webkitpy.tool.main import WebKitPatch
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/tool/main.py&quot;, line 37, in &lt;module&gt;
    from webkitpy.common.host import Host
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/common/host.py&quot;, line 38, in &lt;module&gt;
    from webkitpy.common.net.buildbot.chromiumbuildbot import ChromiumBuildBot
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/common/net/buildbot/chromiumbuildbot.py&quot;, line 32, in &lt;module&gt;
    from webkitpy.layout_tests.port.builders import builder_path_from_name
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/port/__init__.py&quot;, line 34, in &lt;module&gt;
    from base import Port  # It&apos;s possible we don&apos;t need to export this virtual baseclass outside the module.
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/port/base.py&quot;, line 44, in &lt;module&gt;
    from webkitpy.third_party.ordered_dict import OrderedDict
ImportError: No module named third_party.ordered_dict


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636683</commentid>
    <comment_count>3</comment_count>
      <attachid>144667</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-29 18:28:38 -0700</bug_when>
    <thetext>Created attachment 144667
actually test on python2.6, fix names</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636769</commentid>
    <comment_count>4</comment_count>
      <attachid>144667</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-05-29 20:08:40 -0700</bug_when>
    <thetext>Comment on attachment 144667
actually test on python2.6, fix names

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:895
&gt; +        &quot;&quot;&quot;Returns an OrderedDict of name -&gt; expectations strings. The names
&gt; +        are expected to be (but not required to be) paths in the filesystem.
&gt; +        If the name is a path, the file can be considered updatable for things
&gt; +        like rebaselining, so don&apos;t use names that are paths if they&apos;re not paths.
&gt; +        Generally speaking the ordering should be files in the filesystem in
&gt; +        cascade order (test_expectations.txt followed by Skipped, if the port
&gt; +        honors both formats), then any built-in expectations (e.g., from compile-time
&gt; +        exclusions), then --additional-expectations options.&quot;&quot;&quot;

This has more information than is useful I think. Something like the following would be better IMO:
&quot;&quot;&quot;Returns an OrderedDict of name -&gt; expectations strings. If that set of expectations corresponds to a file, name is the path to the file. Files are ordered in cascade order test_expectations.txt, then cascade order Skipped, then compile-time exclusions, then --additional-expectations.&quot;&quot;&quot;

Up to you, but all the business about rebaselining seems extraneous to me. I&apos;m not really sure we need any of this comment actually. It&apos;s all &quot;what&quot; and no &quot;why&quot;.

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:897
&gt; +        overrides = OrderedDict()

overrides is a weird name for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637665</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-05-30 13:55:42 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 144667 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144667&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:895
&gt; &gt; +        &quot;&quot;&quot;Returns an OrderedDict of name -&gt; expectations strings. The names
&gt; &gt; +        are expected to be (but not required to be) paths in the filesystem.
&gt; &gt; +        If the name is a path, the file can be considered updatable for things
&gt; &gt; +        like rebaselining, so don&apos;t use names that are paths if they&apos;re not paths.
&gt; &gt; +        Generally speaking the ordering should be files in the filesystem in
&gt; &gt; +        cascade order (test_expectations.txt followed by Skipped, if the port
&gt; &gt; +        honors both formats), then any built-in expectations (e.g., from compile-time
&gt; &gt; +        exclusions), then --additional-expectations options.&quot;&quot;&quot;
&gt; 
&gt; This has more information than is useful I think. Something like the following would be better IMO:
&gt; &quot;&quot;&quot;Returns an OrderedDict of name -&gt; expectations strings. If that set of expectations corresponds to a file, name is the path to the file. Files are ordered in cascade order test_expectations.txt, then cascade order Skipped, then compile-time exclusions, then --additional-expectations.&quot;&quot;&quot;
&gt; 
&gt; Up to you, but all the business about rebaselining seems extraneous to me. I&apos;m not really sure we need any of this comment actually. It&apos;s all &quot;what&quot; and no &quot;why&quot;.
&gt; 

I&apos;ll prune it down as you suggest. I added all the comments because this is a base class method that I expect to be overridden and it&apos;s hard to see what the contract for the method is supposed to be (it does a fair number of things). I agree that it&apos;s all &quot;what&quot; but that didn&apos;t seem bad in this case. I tried to add unit tests for some of the things in the contract, but it wasn&apos;t clear to me (yet at least) how to add tests for all of them. Any ideas for other ways to check these things?

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:897
&gt; &gt; +        overrides = OrderedDict()
&gt; 
&gt; overrides is a weird name for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637693</commentid>
    <comment_count>6</comment_count>
      <attachid>144667</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-05-30 14:30:32 -0700</bug_when>
    <thetext>Comment on attachment 144667
actually test on python2.6, fix names

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:895
&gt;&gt;&gt; +        exclusions), then --additional-expectations options.&quot;&quot;&quot;
&gt;&gt; 
&gt;&gt; This has more information than is useful I think. Something like the following would be better IMO:
&gt;&gt; &quot;&quot;&quot;Returns an OrderedDict of name -&gt; expectations strings. If that set of expectations corresponds to a file, name is the path to the file. Files are ordered in cascade order test_expectations.txt, then cascade order Skipped, then compile-time exclusions, then --additional-expectations.&quot;&quot;&quot;
&gt;&gt; 
&gt;&gt; Up to you, but all the business about rebaselining seems extraneous to me. I&apos;m not really sure we need any of this comment actually. It&apos;s all &quot;what&quot; and no &quot;why&quot;.
&gt; 
&gt; I&apos;ll prune it down as you suggest. I added all the comments because this is a base class method that I expect to be overridden and it&apos;s hard to see what the contract for the method is supposed to be (it does a fair number of things). I agree that it&apos;s all &quot;what&quot; but that didn&apos;t seem bad in this case. I tried to add unit tests for some of the things in the contract, but it wasn&apos;t clear to me (yet at least) how to add tests for all of them. Any ideas for other ways to check these things?

No. I think it&apos;s fine. You&apos;ll add tests when you add the other expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643021</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-06 17:49:20 -0700</bug_when>
    <thetext>Committed r119654: &lt;http://trac.webkit.org/changeset/119654&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144666</attachid>
            <date>2012-05-29 18:19:52 -0700</date>
            <delta_ts>2012-05-29 18:28:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87802-20120529181951.patch</filename>
            <type>text/plain</type>
            <size>11510</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4ODU1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTQwYmE2NDgzZmNlMDVlMDMyNGFjZGRiMjA2ZmVmY2Q5
NzQ4YjkxYy4uMzA2MGYwNDEzNTVjYzdjNjQ4YjdmMjdkMzdiMTIzOTQ3ZGMxMjU5NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU1
IEBACiAyMDEyLTA1LTI5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBhZGQgc3VwcG9ydCBmb3IgYW4gb3JkZXJlZCBkaWN0IG9mIHRlc3Qg
ZXhwZWN0YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NzgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFzIHBlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU4MzQg
d2Ugd2FudCB0bworICAgICAgICBzdXBwb3J0IGEgY2FzY2FkZWQgbGlzdCBvZiB0ZXN0IGV4cGVj
dGF0aW9ucyBmaWxlcy4gQW4gZWFzeSB3YXkKKyAgICAgICAgdG8gdGhpbmsgb2YgdGhpcyBpcyBh
cyBhbiBvcmRlcmVkIGRpY3Rpb25hcnkgb2YgbmFtZSAtPiBjb250ZW50cworICAgICAgICBmb3Ig
ZmlsZXMsIHdoZXJlIHRoZSBuYW1lIGlzIHVzdWFsbHkgYSBwYXRoIG9uIGRpc2sgKEkgc2F5Cisg
ICAgICAgIHVzdWFsbHkgYmVjYXVzZSB3ZSB3YW50IHRvIHN1cHBvcnQgb3RoZXIga2luZHMgb2Yg
ZXhwZWN0YXRpb25zCisgICAgICAgIGxpa2UgdGhlIGNvbXBpbGUtdGltZSBza2lwcyBmb3IgdW5z
dXBwb3J0ZWQgZmVhdHVyZXMgaW4KKyAgICAgICAgd2Via2l0LnB5LCBhbmQgd2Ugd2FudCB0byBj
b250aW51ZSB0byBzdXBwb3J0ICJpbi1tZW1vcnkiIHRlc3QKKyAgICAgICAgZXhwZWN0YXRpb25z
IHRoYXQgZG9uJ3QgcmVxdWlyZSBhIGZpbGVzeXN0ZW0pLgorCisgICAgICAgIENvbnZlbmllbnRs
eSB0aGVyZSBpcyBhbiBPcmRlcmVkRGljdCBpbXBsZW1lbnRhdGlvbiBpbiBQeXRob24KKyAgICAg
ICAgMi43KyBhbmQgaXQgaXMgYXZhaWxhYmxlIGFzIGEgYmFja3BvcnQsIHNvIHRoZSBmaXJzdCBz
dGVwIGluCisgICAgICAgIGFkZGluZyB0aGlzIHN1cHBvcnQgaXMgdG8gdXNlIHRoYXQgaW1wbGVt
ZW50YXRpb24uIFN1YnNlcXVlbnQKKyAgICAgICAgcGF0Y2hlcyB3aWxsIHVwZGF0ZSB0aGUgdGVz
dF9leHBlY3RhdGlvbnMucHkgbW9kdWxlIChhbmQgb3RoZXIKKyAgICAgICAgY2FsbGVycykgdG8g
YWNjZXNzIHRoZSBkaWN0IGRpcmVjdGx5LgorCisgICAgICAgIFRoaXMgcGF0Y2gganVzdCBjaGFu
Z2VzIHRoZSBiYXNlIGludGVybmFsIGltcGxlbWVudGF0aW9uIGFuZAorICAgICAgICBwcm92aWRl
cyB3cmFwcGVycyBmb3IgY29tcGF0aWJpbGl0eS4gVGhlIGRlcml2ZWQgcG9ydHMKKyAgICAgICAg
KFdlYktpdFBvcnQsIFRlc3RQb3J0LCBldGMuKSBzdGlsbCBuZWVkIHRvIGJlIHVwZGF0ZWQuCisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6Cisg
ICAgICAgIChQb3J0Ll9leHBlY3RhdGlvbnNfZGljdCk6CisgICAgICAgIChQb3J0LnRlc3RfZXhw
ZWN0YXRpb25zKToKKyAgICAgICAgKFBvcnQpOgorICAgICAgICAoUG9ydC5fZXhwZWN0YXRpb25z
X292ZXJyaWRlc19kaWN0KToKKyAgICAgICAgKFBvcnQudGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJp
ZGVzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRf
dGVzdGNhc2UucHk6CisgICAgICAgIChQb3J0VGVzdENhc2UudGVzdF9leHBlY3RhdGlvbnNfb3Jk
ZXJpbmcpOgorICAgICAgICAoUG9ydFRlc3RDYXNlKToKKyAgICAgICAgKFBvcnRUZXN0Q2FzZS50
ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXNfb3JkZXJpbmcpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9vcmRlcmVkZGljdC5weTogQWRkZWQuCisgICAgICAgIChPcmRl
cmVkRGljdCk6CisgICAgICAgIChPcmRlcmVkRGljdC5fX2luaXRfXyk6CisgICAgICAgIChPcmRl
cmVkRGljdC5jbGVhcik6CisgICAgICAgIChPcmRlcmVkRGljdC5fX3NldGl0ZW1fXyk6CisgICAg
ICAgIChPcmRlcmVkRGljdC5fX2RlbGl0ZW1fXyk6CisgICAgICAgIChPcmRlcmVkRGljdC5fX2l0
ZXJfXyk6CisgICAgICAgIChPcmRlcmVkRGljdC5fX3JldmVyc2VkX18pOgorICAgICAgICAoT3Jk
ZXJlZERpY3QucG9waXRlbSk6CisgICAgICAgIChPcmRlcmVkRGljdC5fX3JlZHVjZV9fKToKKyAg
ICAgICAgKE9yZGVyZWREaWN0Ll9fcmVwcl9fKToKKyAgICAgICAgKE9yZGVyZWREaWN0LmNvcHkp
OgorICAgICAgICAoT3JkZXJlZERpY3QuZnJvbWtleXMpOgorCisyMDEyLTA1LTI5ICBEaXJrIFBy
YW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIHdlYmtpdHB5OiByZW5hbWUg
J3JtJyB0byAnZGVsZXRlJyBpbiByZWJhc2VsaW5lIHNjbSBvdXRwdXQKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3Nzc5CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCA2NGFkMTM2ODY3
MzE2YzEzNGU2MjYxODI0NzdjZjdjMDM2NThkZjA3Li4wOWUxOTI3MWRhMzU0ZWM3Yzc5MGMwOTY4
MTEyMzM2ZWUzZjgxZDExIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9iYXNlLnB5CkBAIC0zNiw2ICszNiwxNCBAQCBpbXBvcnQgZXJybm8KIGltcG9y
dCBvcwogaW1wb3J0IHJlCiAKKwordHJ5OgorICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9y
ZGVyZWREaWN0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgIyBOZWVkZWQgZm9yIFB5dGhvbiA8
IDIuNworICAgIGZyb20gd2Via2l0cHkudGhpcmRfcGFydHkub3JkZXJlZF9kaWN0IGltcG9ydCBP
cmRlcmVkRGljdAorCisKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1v
aXplZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbiBpbXBvcnQgZmluZF9maWxlcwpAQCAtODc2LDEyICs4ODQsMzkgQEAgY2xhc3Mg
UG9ydChvYmplY3QpOgogICAgICAgICAjIHNvbWUgcG9ydHMgaGF2ZSBTa2lwcGVkIGZpbGVzIHdo
aWNoIGFyZSByZXR1cm5lZCBhcyBwYXJ0IG9mIHRlc3RfZXhwZWN0YXRpb25zKCkuCiAgICAgICAg
IHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLnBhdGhfdG9fdGVzdF9leHBlY3Rh
dGlvbnNfZmlsZSgpKQogCisgICAgZGVmIF9leHBlY3RhdGlvbnNfZGljdChzZWxmKToKKyAgICAg
ICAgIiIiUmV0dXJucyBhbiBPcmRlcmVkRGljdCBvZiBuYW1lIC0+IGV4cGVjdGF0aW9ucyBzdHJp
bmdzLiBUaGUgbmFtZXMKKyAgICAgICAgYXJlIGV4cGVjdGVkIHRvIGJlIChidXQgbm90IHJlcXVp
cmVkIHRvIGJlKSBwYXRocyBpbiB0aGUgZmlsZXN5c3RlbS4KKyAgICAgICAgSWYgdGhlIG5hbWUg
aXMgYSBwYXRoLCB0aGUgZmlsZSBjYW4gYmUgY29uc2lkZXJlZCB1cGRhdGFibGUgZm9yIHRoaW5n
cworICAgICAgICBsaWtlIHJlYmFzZWxpbmluZywgc28gZG9uJ3QgdXNlIG5hbWVzIHRoYXQgYXJl
IHBhdGhzIGlmIHRoZXkncmUgbm90IHBhdGhzLgorICAgICAgICBHZW5lcmFsbHkgc3BlYWtpbmcg
dGhlIG9yZGVyaW5nIHNob3VsZCBiZSBmaWxlcyBpbiB0aGUgZmlsZXN5c3RlbSBpbgorICAgICAg
ICBjYXNjYWRlIG9yZGVyICh0ZXN0X2V4cGVjdGF0aW9ucy50eHQgZm9sbG93ZWQgYnkgU2tpcHBl
ZCwgaWYgdGhlIHBvcnQKKyAgICAgICAgaG9ub3JzIGJvdGggZm9ybWF0cyksIHRoZW4gYW55IGJ1
aWx0LWluIGV4cGVjdGF0aW9ucyAoZS5nLiwgZnJvbSBjb21waWxlLXRpbWUKKyAgICAgICAgZXhj
bHVzaW9ucyksIHRoZW4gLS1hZGRpdGlvbmFsLWV4cGVjdGF0aW9ucyBvcHRpb25zLiIiIgorICAg
ICAgICAjIEZJWE1FOiByZW5hbWUgdGhpcyB0byB0ZXN0X2V4cGVjdGF0aW9ucygpIG9uY2UgYWxs
IHRoZSBjYWxsZXJzIGFyZSB1cGRhdGVkIHRvIGtub3cgYWJvdXQgdGhlIG9yZGVyZWQgZGljdC4K
KyAgICAgICAgb3ZlcnJpZGVzID0gT3JkZXJlZERpY3QoKQorICAgICAgICBwYXRoID0gc2VsZi5w
YXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKQorICAgICAgICBvdmVycmlkZXNbcGF0aF0g
PSBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHBhdGgpCisgICAgICAgIHJldHVybiBv
dmVycmlkZXMKKwogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9ucyhzZWxmKToKICAgICAgICAgIiIi
UmV0dXJucyB0aGUgdGVzdCBleHBlY3RhdGlvbnMgZm9yIHRoaXMgcG9ydC4KIAogICAgICAgICBC
YXNpY2FsbHkgdGhpcyBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gdGhlIGVxdWl2YWxlbnQgb2YgYQog
ICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucyBmaWxlLiBTZWUgdGVzdF9leHBlY3RhdGlvbnMucHkg
Zm9yIG1vcmUgZGV0YWlscy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ucmVh
ZF90ZXh0X2ZpbGUoc2VsZi5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSkKKyAgICAg
ICAgcmV0dXJuICcnLmpvaW4oc2VsZi5fZXhwZWN0YXRpb25zX2RpY3QoKS52YWx1ZXMoKSkKKwor
ICAgIGRlZiBfZXhwZWN0YXRpb25zX292ZXJyaWRlc19kaWN0KHNlbGYpOgorICAgICAgICAjIEZJ
WE1FOiBtZXJnZSB0aGlzIGludG8gdGVzdF9leHBlY3RhdGlvbnMoKSB3aGVuIF9leHBlY3RhdGlv
bnNfZGljdCgpIGlzIHJlbmFtZWQuCisgICAgICAgIG92ZXJyaWRlcyA9IE9yZGVyZWREaWN0KCkK
KyAgICAgICAgZm9yIHBhdGggaW4gc2VsZi5nZXRfb3B0aW9uKCdhZGRpdGlvbmFsX2V4cGVjdGF0
aW9ucycsIFtdKToKKyAgICAgICAgICAgIGV4cGFuZGVkX3BhdGggPSBzZWxmLl9maWxlc3lzdGVt
LmV4cGFuZHVzZXIocGF0aCkKKyAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3Rz
KGV4cGFuZGVkX3BhdGgpOgorICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoInJlYWRpbmcgYWRk
aXRpb25hbF9leHBlY3RhdGlvbnMgZnJvbSBwYXRoICclcyciICUgcGF0aCkKKyAgICAgICAgICAg
ICAgICBvdmVycmlkZXNbcGF0aF0gPSBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHBh
dGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygiYWRk
aXRpb25hbF9leHBlY3RhdGlvbnMgcGF0aCAnJXMnIGRvZXMgbm90IGV4aXN0IiAlIHBhdGgpCisg
ICAgICAgIHJldHVybiBvdmVycmlkZXMKIAogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19vdmVy
cmlkZXMoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgYW4gb3B0aW9uYWwgc2V0IG9mIG92ZXJy
aWRlcyBmb3IgdGhlIHRlc3RfZXhwZWN0YXRpb25zLgpAQCAtODkwLDE0ICs5MjUsMTAgQEAgY2xh
c3MgUG9ydChvYmplY3QpOgogICAgICAgICBpdCBpcyBwb3NzaWJsZSB0aGF0IHlvdSBtaWdodCBu
ZWVkICJkb3duc3RyZWFtIiBleHBlY3RhdGlvbnMgdGhhdAogICAgICAgICB0ZW1wb3JhcmlseSBv
dmVycmlkZSB0aGUgInVwc3RyZWFtIiBleHBlY3RhdGlvbnMgdW50aWwgdGhlIHBvcnQgY2FuCiAg
ICAgICAgIHN5bmMgdXAgdGhlIHR3byByZXBvcy4iIiIKLSAgICAgICAgb3ZlcnJpZGVzID0gJycK
LSAgICAgICAgZm9yIHBhdGggaW4gc2VsZi5nZXRfb3B0aW9uKCdhZGRpdGlvbmFsX2V4cGVjdGF0
aW9ucycsIFtdKToKLSAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNlbGYu
X2ZpbGVzeXN0ZW0uZXhwYW5kdXNlcihwYXRoKSk6Ci0gICAgICAgICAgICAgICAgX2xvZy5kZWJ1
ZygicmVhZGluZyBhZGRpdGlvbmFsX2V4cGVjdGF0aW9ucyBmcm9tIHBhdGggJyVzJyIgJSBwYXRo
KQotICAgICAgICAgICAgICAgIG92ZXJyaWRlcyArPSBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4
dF9maWxlKHNlbGYuX2ZpbGVzeXN0ZW0uZXhwYW5kdXNlcihwYXRoKSkKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCJhZGRpdGlvbmFsX2V4cGVjdGF0aW9u
cyBwYXRoICclcycgZG9lcyBub3QgZXhpc3QiICUgcGF0aCkKLSAgICAgICAgcmV0dXJuIG92ZXJy
aWRlcyBvciBOb25lCisgICAgICAgIG92ZXJyaWRlcyA9IHNlbGYuX2V4cGVjdGF0aW9uc19vdmVy
cmlkZXNfZGljdCgpCisgICAgICAgIGlmIG92ZXJyaWRlczoKKyAgICAgICAgICAgIHJldHVybiAn
Jy5qb2luKG92ZXJyaWRlcy52YWx1ZXMoKSkKKyAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRl
ZiByZXBvc2l0b3J5X3BhdGhzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiAo
cmVwb3NpdG9yeV9uYW1lLCByZXBvc2l0b3J5X3BhdGgpIHR1cGxlcyBvZiBpdHMgZGVwZW5kaW5n
IGNvZGUgYmFzZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQppbmRleCA0YmRjM2VkMTM4NzA2YjQ5M2UxMTQ4
N2UzOGI4OGQ3ZWIxMTk3MTZkLi5lYTQxMjM0YjhhYzMzMzAwYjJjNmM3ZTliZWQxYmM3YTc2YzIz
ZjkzIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3BvcnRfdGVzdGNhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CkBAIC0zMzMsNiArMzMzLDI0IEBAIGNsYXNzIFBvcnRU
ZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgdSdTVERPVVQ6IGZvb1x1
ZmZmZGJhclxuJwogICAgICAgICAgICAgIHUnU1RERVJSOiBmb29cdWZmZmRiYXJcbicpKQogCisg
ICAgZGVmIHRlc3RfZXhwZWN0YXRpb25zX29yZGVyaW5nKHNlbGYpOgorICAgICAgICBwb3J0ID0g
c2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBwYXRoID0gcG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0
YXRpb25zX2ZpbGUoKQorICAgICAgICBpZiBub3QgcG9ydC5fZmlsZXN5c3RlbS5leGlzdHMocGF0
aCk6CisgICAgICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwYXRoLCAn
JykKKyAgICAgICAgb3JkZXJlZF9kaWN0ID0gcG9ydC5fZXhwZWN0YXRpb25zX2RpY3QoKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhwYXRoLCBvcmRlcmVkX2RpY3Qua2V5cygpWzBdKQorCisg
ICAgZGVmIHRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlc19vcmRlcmluZyhzZWxmKToKKyAgICAg
ICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKGFkZGl0aW9uYWxfZXhwZWN0YXRpb25zPVsnL3RtcC9m
b28nLCAnL3RtcC9iYXInXSkKKyAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KG9wdGlvbnM9
b3B0aW9ucykKKyAgICAgICAgcG9ydC5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy90bXAv
Zm9vJywgJ2ZvbycpCisgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcv
dG1wL2JhcicsICdiYXInKQorICAgICAgICBvcmRlcmVkX2RpY3QgPSBwb3J0Ll9leHBlY3RhdGlv
bnNfb3ZlcnJpZGVzX2RpY3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcmRlcmVkX2Rp
Y3Qua2V5cygpLCBvcHRpb25zLmFkZGl0aW9uYWxfZXhwZWN0YXRpb25zKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhvcmRlcmVkX2RpY3QudmFsdWVzKCksIFsnZm9vJywgJ2JhciddKQorCisK
ICMgRklYTUU6IFRoaXMgY2xhc3MgYW5kIG1haW4oKSBzaG91bGQgYmUgbWVyZ2VkIGludG8gdGVz
dC13ZWJraXRweS4KIGNsYXNzIEVuaGFuY2VkVGVzdExvYWRlcih1bml0dGVzdC5UZXN0TG9hZGVy
KToKICAgICBpbnRlZ3JhdGlvbl90ZXN0cyA9IEZhbHNlCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvb3JkZXJlZGRpY3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3RoaXJkcGFydHkvb3JkZXJlZGRpY3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RjNzM1YTRhZDcw
Nzk5NzJiMzhiMjFiYzNhMWI5NjFhODczYmVmOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9vcmRlcmVkZGljdC5weQpAQCAtMCwwICsxLDg5IEBA
CisjIENvcHlyaWdodCAoYykgMjAwOSBSYXltb25kIEhldHRpbmdlci4KKyMKKyMgUGVybWlzc2lv
biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu
aW5nIGEgY29weQorIyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp
b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorIyBpbiB0aGUgU29mdHdhcmUgd2l0
aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRz
CisjIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yIHNlbGwKKyMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl
cm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBkbyBz
bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisjCisjIFRoZSBhYm92ZSBj
b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1
ZGVkIGluCisjIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3
YXJlLgorIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS
QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P
VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyMgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFCisjIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP
UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFO
IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyMg
T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP
VEhFUiBERUFMSU5HUyBJTiBUSEUKKyMgU09GVFdBUkUuCisKKyMgVGhpcyBjb2RlIGlzIG9idGFp
bmVkIGZyb20gaHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc2NjY5LworCitm
cm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNdXRhYmxlTWFwcGluZworCitjbGFzcyBPcmRlcmVkRGlj
dChkaWN0LCBNdXRhYmxlTWFwcGluZyk6CisKKyAgICAjIE1ldGhvZHMgd2l0aCBkaXJlY3QgYWNj
ZXNzIHRvIHVuZGVybHlpbmcgYXR0cmlidXRlcworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICph
cmdzLCAqKmt3ZHMpOgorICAgICAgICBpZiBsZW4oYXJncykgPiAxOgorICAgICAgICAgICAgcmFp
c2UgVHlwZUVycm9yKCdleHBlY3RlZCBhdCAxIGFyZ3VtZW50LCBnb3QgJWQnLCBsZW4oYXJncykp
CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICdfa2V5cycpOgorICAgICAgICAgICAgc2Vs
Zi5fa2V5cyA9IFtdCisgICAgICAgIHNlbGYudXBkYXRlKCphcmdzLCAqKmt3ZHMpCisKKyAgICBk
ZWYgY2xlYXIoc2VsZik6CisgICAgICAgIGRlbCBzZWxmLl9rZXlzWzpdCisgICAgICAgIGRpY3Qu
Y2xlYXIoc2VsZikKKworICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKKyAg
ICAgICAgaWYga2V5IG5vdCBpbiBzZWxmOgorICAgICAgICAgICAgc2VsZi5fa2V5cy5hcHBlbmQo
a2V5KQorICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpCisKKyAgICBk
ZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgZGljdC5fX2RlbGl0ZW1fXyhzZWxm
LCBrZXkpCisgICAgICAgIHNlbGYuX2tleXMucmVtb3ZlKGtleSkKKworICAgIGRlZiBfX2l0ZXJf
XyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fa2V5cykKKworICAgIGRlZiBfX3Jl
dmVyc2VkX18oc2VsZik6CisgICAgICAgIHJldHVybiByZXZlcnNlZChzZWxmLl9rZXlzKQorCisg
ICAgZGVmIHBvcGl0ZW0oc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAg
cmFpc2UgS2V5RXJyb3IKKyAgICAgICAga2V5ID0gc2VsZi5fa2V5cy5wb3AoKQorICAgICAgICB2
YWx1ZSA9IGRpY3QucG9wKHNlbGYsIGtleSkKKyAgICAgICAgcmV0dXJuIGtleSwgdmFsdWUKKwor
ICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICBpdGVtcyA9IFtbaywgc2VsZltrXV0g
Zm9yIGsgaW4gc2VsZl0KKyAgICAgICAgaW5zdF9kaWN0ID0gdmFycyhzZWxmKS5jb3B5KCkKKyAg
ICAgICAgaW5zdF9kaWN0LnBvcCgnX2tleXMnLCBOb25lKQorICAgICAgICByZXR1cm4gKHNlbGYu
X19jbGFzc19fLCAoaXRlbXMsKSwgaW5zdF9kaWN0KQorCisgICAgIyBNZXRob2RzIHdpdGggaW5k
aXJlY3QgYWNjZXNzIHZpYSB0aGUgYWJvdmUgbWV0aG9kcworCisgICAgc2V0ZGVmYXVsdCA9IE11
dGFibGVNYXBwaW5nLnNldGRlZmF1bHQKKyAgICB1cGRhdGUgPSBNdXRhYmxlTWFwcGluZy51cGRh
dGUKKyAgICBwb3AgPSBNdXRhYmxlTWFwcGluZy5wb3AKKyAgICBrZXlzID0gTXV0YWJsZU1hcHBp
bmcua2V5cworICAgIHZhbHVlcyA9IE11dGFibGVNYXBwaW5nLnZhbHVlcworICAgIGl0ZW1zID0g
TXV0YWJsZU1hcHBpbmcuaXRlbXMKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAg
cGFpcnMgPSAnLCAnLmpvaW4obWFwKCclcjogJXInLl9fbW9kX18sIHNlbGYuaXRlbXMoKSkpCisg
ICAgICAgIHJldHVybiAnJXMoeyVzfSknICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBwYWly
cykKKworICAgIGRlZiBjb3B5KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18o
c2VsZikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9ta2V5cyhjbHMsIGl0ZXJhYmxl
LCB2YWx1ZT1Ob25lKToKKyAgICAgICAgZCA9IGNscygpCisgICAgICAgIGZvciBrZXkgaW4gaXRl
cmFibGU6CisgICAgICAgICAgICBkW2tleV0gPSB2YWx1ZQorICAgICAgICByZXR1cm4gZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144667</attachid>
            <date>2012-05-29 18:28:38 -0700</date>
            <delta_ts>2012-05-30 14:30:32 -0700</delta_ts>
            <desc>actually test on python2.6, fix names</desc>
            <filename>bug-87802-20120529182837.patch</filename>
            <type>text/plain</type>
            <size>11513</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4ODU1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTQwYmE2NDgzZmNlMDVlMDMyNGFjZGRiMjA2ZmVmY2Q5
NzQ4YjkxYy4uZGFlMzhkNWZkNGFlY2MyNmYyMWY0ZDI3M2UwNjhlN2IxZGU0MzMzOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU1
IEBACiAyMDEyLTA1LTI5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBhZGQgc3VwcG9ydCBmb3IgYW4gb3JkZXJlZCBkaWN0IG9mIHRlc3Qg
ZXhwZWN0YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NzgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFzIHBlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU4MzQg
d2Ugd2FudCB0bworICAgICAgICBzdXBwb3J0IGEgY2FzY2FkZWQgbGlzdCBvZiB0ZXN0IGV4cGVj
dGF0aW9ucyBmaWxlcy4gQW4gZWFzeSB3YXkKKyAgICAgICAgdG8gdGhpbmsgb2YgdGhpcyBpcyBh
cyBhbiBvcmRlcmVkIGRpY3Rpb25hcnkgb2YgbmFtZSAtPiBjb250ZW50cworICAgICAgICBmb3Ig
ZmlsZXMsIHdoZXJlIHRoZSBuYW1lIGlzIHVzdWFsbHkgYSBwYXRoIG9uIGRpc2sgKEkgc2F5Cisg
ICAgICAgIHVzdWFsbHkgYmVjYXVzZSB3ZSB3YW50IHRvIHN1cHBvcnQgb3RoZXIga2luZHMgb2Yg
ZXhwZWN0YXRpb25zCisgICAgICAgIGxpa2UgdGhlIGNvbXBpbGUtdGltZSBza2lwcyBmb3IgdW5z
dXBwb3J0ZWQgZmVhdHVyZXMgaW4KKyAgICAgICAgd2Via2l0LnB5LCBhbmQgd2Ugd2FudCB0byBj
b250aW51ZSB0byBzdXBwb3J0ICJpbi1tZW1vcnkiIHRlc3QKKyAgICAgICAgZXhwZWN0YXRpb25z
IHRoYXQgZG9uJ3QgcmVxdWlyZSBhIGZpbGVzeXN0ZW0pLgorCisgICAgICAgIENvbnZlbmllbnRs
eSB0aGVyZSBpcyBhbiBPcmRlcmVkRGljdCBpbXBsZW1lbnRhdGlvbiBpbiBQeXRob24KKyAgICAg
ICAgMi43KyBhbmQgaXQgaXMgYXZhaWxhYmxlIGFzIGEgYmFja3BvcnQsIHNvIHRoZSBmaXJzdCBz
dGVwIGluCisgICAgICAgIGFkZGluZyB0aGlzIHN1cHBvcnQgaXMgdG8gdXNlIHRoYXQgaW1wbGVt
ZW50YXRpb24uIFN1YnNlcXVlbnQKKyAgICAgICAgcGF0Y2hlcyB3aWxsIHVwZGF0ZSB0aGUgdGVz
dF9leHBlY3RhdGlvbnMucHkgbW9kdWxlIChhbmQgb3RoZXIKKyAgICAgICAgY2FsbGVycykgdG8g
YWNjZXNzIHRoZSBkaWN0IGRpcmVjdGx5LgorCisgICAgICAgIFRoaXMgcGF0Y2gganVzdCBjaGFu
Z2VzIHRoZSBiYXNlIGludGVybmFsIGltcGxlbWVudGF0aW9uIGFuZAorICAgICAgICBwcm92aWRl
cyB3cmFwcGVycyBmb3IgY29tcGF0aWJpbGl0eS4gVGhlIGRlcml2ZWQgcG9ydHMKKyAgICAgICAg
KFdlYktpdFBvcnQsIFRlc3RQb3J0LCBldGMuKSBzdGlsbCBuZWVkIHRvIGJlIHVwZGF0ZWQuCisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6Cisg
ICAgICAgIChQb3J0Ll9leHBlY3RhdGlvbnNfZGljdCk6CisgICAgICAgIChQb3J0LnRlc3RfZXhw
ZWN0YXRpb25zKToKKyAgICAgICAgKFBvcnQpOgorICAgICAgICAoUG9ydC5fZXhwZWN0YXRpb25z
X292ZXJyaWRlc19kaWN0KToKKyAgICAgICAgKFBvcnQudGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJp
ZGVzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRf
dGVzdGNhc2UucHk6CisgICAgICAgIChQb3J0VGVzdENhc2UudGVzdF9leHBlY3RhdGlvbnNfb3Jk
ZXJpbmcpOgorICAgICAgICAoUG9ydFRlc3RDYXNlKToKKyAgICAgICAgKFBvcnRUZXN0Q2FzZS50
ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXNfb3JkZXJpbmcpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9vcmRlcmVkX2RpY3QucHk6IEFkZGVkLgorICAgICAgICAoT3Jk
ZXJlZERpY3QpOgorICAgICAgICAoT3JkZXJlZERpY3QuX19pbml0X18pOgorICAgICAgICAoT3Jk
ZXJlZERpY3QuY2xlYXIpOgorICAgICAgICAoT3JkZXJlZERpY3QuX19zZXRpdGVtX18pOgorICAg
ICAgICAoT3JkZXJlZERpY3QuX19kZWxpdGVtX18pOgorICAgICAgICAoT3JkZXJlZERpY3QuX19p
dGVyX18pOgorICAgICAgICAoT3JkZXJlZERpY3QuX19yZXZlcnNlZF9fKToKKyAgICAgICAgKE9y
ZGVyZWREaWN0LnBvcGl0ZW0pOgorICAgICAgICAoT3JkZXJlZERpY3QuX19yZWR1Y2VfXyk6Cisg
ICAgICAgIChPcmRlcmVkRGljdC5fX3JlcHJfXyk6CisgICAgICAgIChPcmRlcmVkRGljdC5jb3B5
KToKKyAgICAgICAgKE9yZGVyZWREaWN0LmZyb21rZXlzKToKKworMjAxMi0wNS0yOSAgRGlyayBQ
cmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAgICB3ZWJraXRweTogcmVuYW1l
ICdybScgdG8gJ2RlbGV0ZScgaW4gcmViYXNlbGluZSBzY20gb3V0cHV0CiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzc3OQogCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggNjRhZDEzNjg2
NzMxNmMxMzRlNjI2MTgyNDc3Y2Y3YzAzNjU4ZGYwNy4uOWYzYjFjYWE5M2Q5Y2FiMTczYzRjNTQx
MzQ2MmFmMmUzNmZkYmM2ZSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtMzYsNiArMzYsMTQgQEAgaW1wb3J0IGVycm5vCiBpbXBv
cnQgb3MKIGltcG9ydCByZQogCisKK3RyeToKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBP
cmRlcmVkRGljdAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgICMgTmVlZGVkIGZvciBQeXRob24g
PCAyLjcKKyAgICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkub3JkZXJlZF9kaWN0IGltcG9ydCBP
cmRlcmVkRGljdAorCisKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1v
aXplZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbiBpbXBvcnQgZmluZF9maWxlcwpAQCAtODc2LDEyICs4ODQsMzkgQEAgY2xhc3Mg
UG9ydChvYmplY3QpOgogICAgICAgICAjIHNvbWUgcG9ydHMgaGF2ZSBTa2lwcGVkIGZpbGVzIHdo
aWNoIGFyZSByZXR1cm5lZCBhcyBwYXJ0IG9mIHRlc3RfZXhwZWN0YXRpb25zKCkuCiAgICAgICAg
IHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLnBhdGhfdG9fdGVzdF9leHBlY3Rh
dGlvbnNfZmlsZSgpKQogCisgICAgZGVmIF9leHBlY3RhdGlvbnNfZGljdChzZWxmKToKKyAgICAg
ICAgIiIiUmV0dXJucyBhbiBPcmRlcmVkRGljdCBvZiBuYW1lIC0+IGV4cGVjdGF0aW9ucyBzdHJp
bmdzLiBUaGUgbmFtZXMKKyAgICAgICAgYXJlIGV4cGVjdGVkIHRvIGJlIChidXQgbm90IHJlcXVp
cmVkIHRvIGJlKSBwYXRocyBpbiB0aGUgZmlsZXN5c3RlbS4KKyAgICAgICAgSWYgdGhlIG5hbWUg
aXMgYSBwYXRoLCB0aGUgZmlsZSBjYW4gYmUgY29uc2lkZXJlZCB1cGRhdGFibGUgZm9yIHRoaW5n
cworICAgICAgICBsaWtlIHJlYmFzZWxpbmluZywgc28gZG9uJ3QgdXNlIG5hbWVzIHRoYXQgYXJl
IHBhdGhzIGlmIHRoZXkncmUgbm90IHBhdGhzLgorICAgICAgICBHZW5lcmFsbHkgc3BlYWtpbmcg
dGhlIG9yZGVyaW5nIHNob3VsZCBiZSBmaWxlcyBpbiB0aGUgZmlsZXN5c3RlbSBpbgorICAgICAg
ICBjYXNjYWRlIG9yZGVyICh0ZXN0X2V4cGVjdGF0aW9ucy50eHQgZm9sbG93ZWQgYnkgU2tpcHBl
ZCwgaWYgdGhlIHBvcnQKKyAgICAgICAgaG9ub3JzIGJvdGggZm9ybWF0cyksIHRoZW4gYW55IGJ1
aWx0LWluIGV4cGVjdGF0aW9ucyAoZS5nLiwgZnJvbSBjb21waWxlLXRpbWUKKyAgICAgICAgZXhj
bHVzaW9ucyksIHRoZW4gLS1hZGRpdGlvbmFsLWV4cGVjdGF0aW9ucyBvcHRpb25zLiIiIgorICAg
ICAgICAjIEZJWE1FOiByZW5hbWUgdGhpcyB0byB0ZXN0X2V4cGVjdGF0aW9ucygpIG9uY2UgYWxs
IHRoZSBjYWxsZXJzIGFyZSB1cGRhdGVkIHRvIGtub3cgYWJvdXQgdGhlIG9yZGVyZWQgZGljdC4K
KyAgICAgICAgb3ZlcnJpZGVzID0gT3JkZXJlZERpY3QoKQorICAgICAgICBwYXRoID0gc2VsZi5w
YXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKQorICAgICAgICBvdmVycmlkZXNbcGF0aF0g
PSBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHBhdGgpCisgICAgICAgIHJldHVybiBv
dmVycmlkZXMKKwogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9ucyhzZWxmKToKICAgICAgICAgIiIi
UmV0dXJucyB0aGUgdGVzdCBleHBlY3RhdGlvbnMgZm9yIHRoaXMgcG9ydC4KIAogICAgICAgICBC
YXNpY2FsbHkgdGhpcyBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gdGhlIGVxdWl2YWxlbnQgb2YgYQog
ICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucyBmaWxlLiBTZWUgdGVzdF9leHBlY3RhdGlvbnMucHkg
Zm9yIG1vcmUgZGV0YWlscy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ucmVh
ZF90ZXh0X2ZpbGUoc2VsZi5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSkKKyAgICAg
ICAgcmV0dXJuICcnLmpvaW4oc2VsZi5fZXhwZWN0YXRpb25zX2RpY3QoKS52YWx1ZXMoKSkKKwor
ICAgIGRlZiBfZXhwZWN0YXRpb25zX292ZXJyaWRlc19kaWN0KHNlbGYpOgorICAgICAgICAjIEZJ
WE1FOiBtZXJnZSB0aGlzIGludG8gdGVzdF9leHBlY3RhdGlvbnMoKSB3aGVuIF9leHBlY3RhdGlv
bnNfZGljdCgpIGlzIHJlbmFtZWQuCisgICAgICAgIG92ZXJyaWRlcyA9IE9yZGVyZWREaWN0KCkK
KyAgICAgICAgZm9yIHBhdGggaW4gc2VsZi5nZXRfb3B0aW9uKCdhZGRpdGlvbmFsX2V4cGVjdGF0
aW9ucycsIFtdKToKKyAgICAgICAgICAgIGV4cGFuZGVkX3BhdGggPSBzZWxmLl9maWxlc3lzdGVt
LmV4cGFuZHVzZXIocGF0aCkKKyAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3Rz
KGV4cGFuZGVkX3BhdGgpOgorICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoInJlYWRpbmcgYWRk
aXRpb25hbF9leHBlY3RhdGlvbnMgZnJvbSBwYXRoICclcyciICUgcGF0aCkKKyAgICAgICAgICAg
ICAgICBvdmVycmlkZXNbcGF0aF0gPSBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHBh
dGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygiYWRk
aXRpb25hbF9leHBlY3RhdGlvbnMgcGF0aCAnJXMnIGRvZXMgbm90IGV4aXN0IiAlIHBhdGgpCisg
ICAgICAgIHJldHVybiBvdmVycmlkZXMKIAogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19vdmVy
cmlkZXMoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgYW4gb3B0aW9uYWwgc2V0IG9mIG92ZXJy
aWRlcyBmb3IgdGhlIHRlc3RfZXhwZWN0YXRpb25zLgpAQCAtODkwLDE0ICs5MjUsMTAgQEAgY2xh
c3MgUG9ydChvYmplY3QpOgogICAgICAgICBpdCBpcyBwb3NzaWJsZSB0aGF0IHlvdSBtaWdodCBu
ZWVkICJkb3duc3RyZWFtIiBleHBlY3RhdGlvbnMgdGhhdAogICAgICAgICB0ZW1wb3JhcmlseSBv
dmVycmlkZSB0aGUgInVwc3RyZWFtIiBleHBlY3RhdGlvbnMgdW50aWwgdGhlIHBvcnQgY2FuCiAg
ICAgICAgIHN5bmMgdXAgdGhlIHR3byByZXBvcy4iIiIKLSAgICAgICAgb3ZlcnJpZGVzID0gJycK
LSAgICAgICAgZm9yIHBhdGggaW4gc2VsZi5nZXRfb3B0aW9uKCdhZGRpdGlvbmFsX2V4cGVjdGF0
aW9ucycsIFtdKToKLSAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNlbGYu
X2ZpbGVzeXN0ZW0uZXhwYW5kdXNlcihwYXRoKSk6Ci0gICAgICAgICAgICAgICAgX2xvZy5kZWJ1
ZygicmVhZGluZyBhZGRpdGlvbmFsX2V4cGVjdGF0aW9ucyBmcm9tIHBhdGggJyVzJyIgJSBwYXRo
KQotICAgICAgICAgICAgICAgIG92ZXJyaWRlcyArPSBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4
dF9maWxlKHNlbGYuX2ZpbGVzeXN0ZW0uZXhwYW5kdXNlcihwYXRoKSkKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCJhZGRpdGlvbmFsX2V4cGVjdGF0aW9u
cyBwYXRoICclcycgZG9lcyBub3QgZXhpc3QiICUgcGF0aCkKLSAgICAgICAgcmV0dXJuIG92ZXJy
aWRlcyBvciBOb25lCisgICAgICAgIG92ZXJyaWRlcyA9IHNlbGYuX2V4cGVjdGF0aW9uc19vdmVy
cmlkZXNfZGljdCgpCisgICAgICAgIGlmIG92ZXJyaWRlczoKKyAgICAgICAgICAgIHJldHVybiAn
Jy5qb2luKG92ZXJyaWRlcy52YWx1ZXMoKSkKKyAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRl
ZiByZXBvc2l0b3J5X3BhdGhzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiAo
cmVwb3NpdG9yeV9uYW1lLCByZXBvc2l0b3J5X3BhdGgpIHR1cGxlcyBvZiBpdHMgZGVwZW5kaW5n
IGNvZGUgYmFzZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQppbmRleCA0YmRjM2VkMTM4NzA2YjQ5M2UxMTQ4
N2UzOGI4OGQ3ZWIxMTk3MTZkLi5lYTQxMjM0YjhhYzMzMzAwYjJjNmM3ZTliZWQxYmM3YTc2YzIz
ZjkzIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3BvcnRfdGVzdGNhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CkBAIC0zMzMsNiArMzMzLDI0IEBAIGNsYXNzIFBvcnRU
ZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgdSdTVERPVVQ6IGZvb1x1
ZmZmZGJhclxuJwogICAgICAgICAgICAgIHUnU1RERVJSOiBmb29cdWZmZmRiYXJcbicpKQogCisg
ICAgZGVmIHRlc3RfZXhwZWN0YXRpb25zX29yZGVyaW5nKHNlbGYpOgorICAgICAgICBwb3J0ID0g
c2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBwYXRoID0gcG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0
YXRpb25zX2ZpbGUoKQorICAgICAgICBpZiBub3QgcG9ydC5fZmlsZXN5c3RlbS5leGlzdHMocGF0
aCk6CisgICAgICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwYXRoLCAn
JykKKyAgICAgICAgb3JkZXJlZF9kaWN0ID0gcG9ydC5fZXhwZWN0YXRpb25zX2RpY3QoKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhwYXRoLCBvcmRlcmVkX2RpY3Qua2V5cygpWzBdKQorCisg
ICAgZGVmIHRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlc19vcmRlcmluZyhzZWxmKToKKyAgICAg
ICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKGFkZGl0aW9uYWxfZXhwZWN0YXRpb25zPVsnL3RtcC9m
b28nLCAnL3RtcC9iYXInXSkKKyAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KG9wdGlvbnM9
b3B0aW9ucykKKyAgICAgICAgcG9ydC5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy90bXAv
Zm9vJywgJ2ZvbycpCisgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcv
dG1wL2JhcicsICdiYXInKQorICAgICAgICBvcmRlcmVkX2RpY3QgPSBwb3J0Ll9leHBlY3RhdGlv
bnNfb3ZlcnJpZGVzX2RpY3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcmRlcmVkX2Rp
Y3Qua2V5cygpLCBvcHRpb25zLmFkZGl0aW9uYWxfZXhwZWN0YXRpb25zKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhvcmRlcmVkX2RpY3QudmFsdWVzKCksIFsnZm9vJywgJ2JhciddKQorCisK
ICMgRklYTUU6IFRoaXMgY2xhc3MgYW5kIG1haW4oKSBzaG91bGQgYmUgbWVyZ2VkIGludG8gdGVz
dC13ZWJraXRweS4KIGNsYXNzIEVuaGFuY2VkVGVzdExvYWRlcih1bml0dGVzdC5UZXN0TG9hZGVy
KToKICAgICBpbnRlZ3JhdGlvbl90ZXN0cyA9IEZhbHNlCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvb3JkZXJlZF9kaWN0LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L29yZGVyZWRfZGljdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGM3MzVhNGFk
NzA3OTk3MmIzOGIyMWJjM2ExYjk2MWE4NzNiZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L29yZGVyZWRfZGljdC5weQpAQCAtMCwwICsxLDg5
IEBACisjIENvcHlyaWdodCAoYykgMjAwOSBSYXltb25kIEhldHRpbmdlci4KKyMKKyMgUGVybWlz
c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0
YWluaW5nIGEgY29weQorIyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50
YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorIyBpbiB0aGUgU29mdHdhcmUg
d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmln
aHRzCisjIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg
c3VibGljZW5zZSwgYW5kL29yIHNlbGwKKyMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv
IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBk
byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisjCisjIFRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu
Y2x1ZGVkIGluCisjIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv
ZnR3YXJlLgorIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX
QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorIyBJTVBMSUVELCBJTkNMVURJTkcgQlVU
IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyMgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFCisjIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyMgTElBQklMSVRZLCBXSEVUSEVSIElO
IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwK
KyMgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP
UiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKyMgU09GVFdBUkUuCisKKyMgVGhpcyBjb2RlIGlzIG9i
dGFpbmVkIGZyb20gaHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc2NjY5Lwor
Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNdXRhYmxlTWFwcGluZworCitjbGFzcyBPcmRlcmVk
RGljdChkaWN0LCBNdXRhYmxlTWFwcGluZyk6CisKKyAgICAjIE1ldGhvZHMgd2l0aCBkaXJlY3Qg
YWNjZXNzIHRvIHVuZGVybHlpbmcgYXR0cmlidXRlcworCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
ICphcmdzLCAqKmt3ZHMpOgorICAgICAgICBpZiBsZW4oYXJncykgPiAxOgorICAgICAgICAgICAg
cmFpc2UgVHlwZUVycm9yKCdleHBlY3RlZCBhdCAxIGFyZ3VtZW50LCBnb3QgJWQnLCBsZW4oYXJn
cykpCisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICdfa2V5cycpOgorICAgICAgICAgICAg
c2VsZi5fa2V5cyA9IFtdCisgICAgICAgIHNlbGYudXBkYXRlKCphcmdzLCAqKmt3ZHMpCisKKyAg
ICBkZWYgY2xlYXIoc2VsZik6CisgICAgICAgIGRlbCBzZWxmLl9rZXlzWzpdCisgICAgICAgIGRp
Y3QuY2xlYXIoc2VsZikKKworICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToK
KyAgICAgICAgaWYga2V5IG5vdCBpbiBzZWxmOgorICAgICAgICAgICAgc2VsZi5fa2V5cy5hcHBl
bmQoa2V5KQorICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpCisKKyAg
ICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgZGljdC5fX2RlbGl0ZW1fXyhz
ZWxmLCBrZXkpCisgICAgICAgIHNlbGYuX2tleXMucmVtb3ZlKGtleSkKKworICAgIGRlZiBfX2l0
ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fa2V5cykKKworICAgIGRlZiBf
X3JldmVyc2VkX18oc2VsZik6CisgICAgICAgIHJldHVybiByZXZlcnNlZChzZWxmLl9rZXlzKQor
CisgICAgZGVmIHBvcGl0ZW0oc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAg
ICAgcmFpc2UgS2V5RXJyb3IKKyAgICAgICAga2V5ID0gc2VsZi5fa2V5cy5wb3AoKQorICAgICAg
ICB2YWx1ZSA9IGRpY3QucG9wKHNlbGYsIGtleSkKKyAgICAgICAgcmV0dXJuIGtleSwgdmFsdWUK
KworICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICBpdGVtcyA9IFtbaywgc2VsZltr
XV0gZm9yIGsgaW4gc2VsZl0KKyAgICAgICAgaW5zdF9kaWN0ID0gdmFycyhzZWxmKS5jb3B5KCkK
KyAgICAgICAgaW5zdF9kaWN0LnBvcCgnX2tleXMnLCBOb25lKQorICAgICAgICByZXR1cm4gKHNl
bGYuX19jbGFzc19fLCAoaXRlbXMsKSwgaW5zdF9kaWN0KQorCisgICAgIyBNZXRob2RzIHdpdGgg
aW5kaXJlY3QgYWNjZXNzIHZpYSB0aGUgYWJvdmUgbWV0aG9kcworCisgICAgc2V0ZGVmYXVsdCA9
IE11dGFibGVNYXBwaW5nLnNldGRlZmF1bHQKKyAgICB1cGRhdGUgPSBNdXRhYmxlTWFwcGluZy51
cGRhdGUKKyAgICBwb3AgPSBNdXRhYmxlTWFwcGluZy5wb3AKKyAgICBrZXlzID0gTXV0YWJsZU1h
cHBpbmcua2V5cworICAgIHZhbHVlcyA9IE11dGFibGVNYXBwaW5nLnZhbHVlcworICAgIGl0ZW1z
ID0gTXV0YWJsZU1hcHBpbmcuaXRlbXMKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAg
ICAgcGFpcnMgPSAnLCAnLmpvaW4obWFwKCclcjogJXInLl9fbW9kX18sIHNlbGYuaXRlbXMoKSkp
CisgICAgICAgIHJldHVybiAnJXMoeyVzfSknICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBw
YWlycykKKworICAgIGRlZiBjb3B5KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNz
X18oc2VsZikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9ta2V5cyhjbHMsIGl0ZXJh
YmxlLCB2YWx1ZT1Ob25lKToKKyAgICAgICAgZCA9IGNscygpCisgICAgICAgIGZvciBrZXkgaW4g
aXRlcmFibGU6CisgICAgICAgICAgICBkW2tleV0gPSB2YWx1ZQorICAgICAgICByZXR1cm4gZAo=
</data>
<flag name="review"
          id="151570"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>