<?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>82290</bug_id>
          
          <creation_ts>2012-03-26 20:09:28 -0700</creation_ts>
          <short_desc>test-webkitpy: prepare for better test run output</short_desc>
          <delta_ts>2012-03-27 13:23:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>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>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>588512</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-26 20:09:28 -0700</bug_when>
    <thetext>test-webkitpy: prepare for better test run output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588515</commentid>
    <comment_count>1</comment_count>
      <attachid>133967</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-26 20:13:01 -0700</bug_when>
    <thetext>Created attachment 133967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588523</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-26 20:18:24 -0700</bug_when>
    <thetext>This change is a prelude to me landing logging changes for per-test timing information and a MeteredStream-style form of output. It will also be the basis for implementing parallel testing, if we decide that&apos;s worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588576</commentid>
    <comment_count>3</comment_count>
      <attachid>133967</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-26 22:49:09 -0700</bug_when>
    <thetext>Comment on attachment 133967
Patch

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

&gt; Tools/Scripts/webkitpy/test/runner.py:68
&gt; +            # FIXME: it&apos;s kinda lame that we re-load the test suites for each
&gt; +            # test, and this may slow things down, but this makes implementing
&gt; +            # the logging easy and will also allow us to parallelize nicely.

Have you measured how much this slows us down?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589094</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-27 11:45:57 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 133967 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133967&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/test/runner.py:68
&gt; &gt; +            # FIXME: it&apos;s kinda lame that we re-load the test suites for each
&gt; &gt; +            # test, and this may slow things down, but this makes implementing
&gt; &gt; +            # the logging easy and will also allow us to parallelize nicely.
&gt; 
&gt; Have you measured how much this slows us down?

A couple of unscientific tests seem to point to about a half-second slowdown on my mac pro (18.2 seconds -&gt; 18.7). I&apos;m actually a bit surprised that it&apos;s noticeable at all, so I&apos;ll have to dig into it further to see what the cause of this is, but I think this is well within the noise for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589097</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-27 11:46:44 -0700</bug_when>
    <thetext>Also, I notice that this patch doesn&apos;t have the unit tests I wrote in it ... will upload those as well and then land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589104</commentid>
    <comment_count>6</comment_count>
      <attachid>134110</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-27 11:53:35 -0700</bug_when>
    <thetext>Created attachment 134110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589126</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-27 12:16:10 -0700</bug_when>
    <thetext>Committed r112298: &lt;http://trac.webkit.org/changeset/112298&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589211</commentid>
    <comment_count>8</comment_count>
      <attachid>134110</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-27 13:23:28 -0700</bug_when>
    <thetext>Comment on attachment 134110
Patch

Cleared review? from attachment 134110 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133967</attachid>
            <date>2012-03-26 20:13:01 -0700</date>
            <delta_ts>2012-03-27 11:53:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82290-20120326201300.patch</filename>
            <type>text/plain</type>
            <size>10293</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMTczCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWQ4NDNmNmNlZjNhYmVmMDdjNjFhYmE4Y2FiYThhMTU5
ODYwMmEwMS4uZDhkZDkxZTEwNzFkMWNlMWZkOGM2N2RhYjAwMzAxNjM1ZjJkZTliMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQx
IEBACiAyMDEyLTAzLTI2ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHRlc3Qtd2Via2l0cHk6IHByZXBhcmUgZm9yIGJldHRlciB0ZXN0IHJ1biBvdXRwdXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMjkwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjb2Rl
IGJhc2ljYWxseSByZS1pbXBsZW1lbnRzIHRoZSBvdXRwdXQgb2YgdGhlIFRleHRUZXN0UnVubmVy
IGRlZmF1bHQKKyAgICAgICAgcnVubmVyIGNvZGUgZnJvbSB1bml0dGVzdCwgYWx0aG91Z2ggdGhl
IGltcGxlbWVudGF0aW9uIGlzIHF1aXRlCisgICAgICAgIGRpZmZlcmVudCwgaW4gcHJlcGFyYXRp
b24gZm9yIGNoYW5naW5nIHRoZSB0ZXN0IG91dHB1dCB0byBiZQorICAgICAgICBtZXRlcmVkIGFu
ZCBwb3NzaWJseSBydW5uaW5nIGluIHBhcmFsbGVsLgorCisgICAgICAgIFRoZSBvdXRwdXQgaXMg
YWxtb3N0IGlkZW50aWNhbCB0byBiZWZvcmUsIGV4Y2VwdCB0aGF0IGluc3RlYWQgb2YKKyAgICAg
ICAgbG9nZ2luZyAidGVzdF9yZWd1bGFyICh3ZWJraXRweS5tYWluLlJ1bm5lclRlc3QpIHBhc3Nl
ZCIgd2UgbG9nCisgICAgICAgICJ3ZWJraXRweS5tYWluLlJ1bm5lclRlc3QudGVzdF9yZWd1bGFy
IHBhc3NlZCIuIEl0IGhhcyBhbHdheXMKKyAgICAgICAgYW5ub3llZCBtZSB0aGF0IHRoZXkgaW52
ZXJ0IHRoZSBuYW1lcyB0byBiZSBoYXJkZXIgdG8gcmVhZCBhbmQKKyAgICAgICAgc28gdGhhdCB5
b3UgY2FuJ3QgY29weSAmIHBhc3RlIGJhY2sgdG8gdGhlIGlucHV0IGZvcgorICAgICAgICB0ZXN0
LXdlYmtpdHB5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgcHJvdmlkZWQgdG8gYWRkIGEgc2tl
bGV0b24gZm9yIHVuaXQgdGVzdHMgYW5kIGZvcgorICAgICAgICBjb21wYXJpc29uIHRvIGFuIHVw
Y29taW5nIHBhdGNoIHRoYXQgd2lsbCBhY3R1YWxseSBhZGQgbmV3CisgICAgICAgIGZ1bmN0aW9u
YWxpdHkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weToKKyAgICAg
ICAgKFRlc3Rlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0ZXIuX2NvbmZpZ3VyZV9sb2dnaW5n
KToKKyAgICAgICAgKFRlc3Rlci5fcnVuX3Rlc3RzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3Rlc3QvcnVubmVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAg
ICAoVGVzdFJ1bm5lci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0UnVubmVyLnRlc3RfbmFtZSk6
CisgICAgICAgIChUZXN0UnVubmVyLmFsbF90ZXN0X25hbWVzKToKKyAgICAgICAgKFRlc3RSdW5u
ZXIucnVuKToKKyAgICAgICAgKFRlc3RSdW5uZXIud3JpdGVfcmVzdWx0KToKKyAgICAgICAgKFRl
c3RSdW5uZXIud3JpdGVfc3VtbWFyeSk6CisKKzIwMTItMDMtMjYgIERpcmsgUHJhbmtlICA8ZHBy
YW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgRml4IGR1cGxpY2F0ZWQgQ2hhbmdlTG9nIGVu
dHJ5IGZyb20gcjExMjE3MS4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXguCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CmluZGV4IGIyZWJhYmU0Y2YxOWZjYmQwYjEyYjYyMDRl
NDEzOTRmYmM5ZmRjMTQuLmEwMzU3OTQ2MDI5MjRkZWNlMTc5ODM0OWU1M2I4ODM5ZDU1OWNlZGIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CkBAIC0zMiw2ICszMiw3IEBAIGltcG9y
dCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBv
cnQgRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS50ZXN0LnRlc3RfZmluZGVyIGltcG9ydCBUZXN0
RmluZGVyCitmcm9tIHdlYmtpdHB5LnRlc3QucnVubmVyIGltcG9ydCBUZXN0UnVubmVyCiAKIF9s
b2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIApAQCAtNDAsNiArNDEsNyBAQCBjbGFz
cyBUZXN0ZXIob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZXN5c3RlbT1Ob25l
KToKICAgICAgICAgc2VsZi5fdmVyYm9zaXR5ID0gMQogICAgICAgICBzZWxmLmZpbmRlciA9IFRl
c3RGaW5kZXIoZmlsZXN5c3RlbSBvciBGaWxlU3lzdGVtKCkpCisgICAgICAgIHNlbGYuc3RyZWFt
ID0gc3lzLnN0ZGVycgogCiAgICAgZGVmIGFkZF90cmVlKHNlbGYsIHRvcF9kaXJlY3RvcnksIHN0
YXJ0aW5nX3N1YmRpcmVjdG9yeT1Ob25lKToKICAgICAgICAgc2VsZi5maW5kZXIuYWRkX3RyZWUo
dG9wX2RpcmVjdG9yeSwgc3RhcnRpbmdfc3ViZGlyZWN0b3J5KQpAQCAtOTIsNyArOTQsNyBAQCBj
bGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgZXhjZXB0IGZvciBtZXNzYWdlcyBmcm9tIHRo
ZSBhdXRvaW5zdGFsbCBtb2R1bGUuICBBbHNvIHNldCB0aGUKICAgICAgICAgbG9nZ2luZyBsZXZl
bCBhcyBkZXNjcmliZWQgYmVsb3cuCiAgICAgICAgICIiIgotICAgICAgICBoYW5kbGVyID0gbG9n
Z2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRlcnIpCisgICAgICAgIGhhbmRsZXIgPSBsb2dnaW5n
LlN0cmVhbUhhbmRsZXIoc2VsZi5zdHJlYW0pCiAgICAgICAgICMgV2UgY29uc3RyYWluIHRoZSBs
ZXZlbCBvbiB0aGUgaGFuZGxlciByYXRoZXIgdGhhbiBvbiB0aGUgcm9vdAogICAgICAgICAjIGxv
Z2dlciBpdHNlbGYuICBUaGlzIGlzIHByb2JhYmx5IGJldHRlciBiZWNhdXNlIHRoZSBoYW5kbGVy
IGlzCiAgICAgICAgICMgY29uZmlndXJlZCBhbmQga25vd24gb25seSB0byB0aGlzIG1vZHVsZSwg
d2hlcmVhcyB0aGUgcm9vdCBsb2dnZXIKQEAgLTE0Miw3ICsxNDQsNyBAQCBjbGFzcyBUZXN0ZXIo
b2JqZWN0KToKICAgICAgICAgbmFtZXMgPSBzZWxmLmZpbmRlci5maW5kX25hbWVzKGFyZ3MsIHNl
bGYuX29wdGlvbnMuc2tpcF9pbnRlZ3JhdGlvbnRlc3RzLCBzZWxmLl9vcHRpb25zLmFsbCkKICAg
ICAgICAgcmV0dXJuIHNlbGYuX3J1bl90ZXN0cyhuYW1lcykKIAotICAgIGRlZiBfcnVuX3Rlc3Rz
KHNlbGYsIGFyZ3MpOgorICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVzKToKICAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5jb3ZlcmFnZToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAg
ICAgICBpbXBvcnQgd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLmNvdmVyYWdlIGFz
IGNvdmVyYWdlCkBAIC0xNTksMTYgKzE2MSwxOCBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKIAog
ICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5kZWZhdWx0VGVzdExvYWRlcgogICAgICAgICBzdWl0
ZXMgPSBbXQotICAgICAgICBmb3IgbmFtZSBpbiBhcmdzOgorICAgICAgICBmb3IgbmFtZSBpbiBu
YW1lczoKICAgICAgICAgICAgIGlmIHNlbGYuZmluZGVyLmlzX21vZHVsZShuYW1lKToKLSAgICAg
ICAgICAgICAgICAjIGltcG9ydCBtb2R1bGVzIGV4cGxpY2l0bHkgYmVmb3JlIGxvYWRpbmcgdGhl
aXIgdGVzdHMgYmVjYXVzZQotICAgICAgICAgICAgICAgICMgbG9hZFRlc3RzRnJvbU5hbWUoKSBw
cm9kdWNlcyBsb3VzeSBlcnJvciBtZXNzYWdlcyBmb3IgYmFkIG1vZHVsZXMuCisgICAgICAgICAg
ICAgICAgIyBpZiB3ZSBmYWlsZWQgdG8gbG9hZCBhIG5hbWUgYW5kIGl0IGxvb2tzIGxpa2UgYSBt
b2R1bGUsCisgICAgICAgICAgICAgICAgIyB0cnkgaW1wb3J0aW5nIGl0IGRpcmVjdGx5LCBiZWNh
dXNlIGxvYWRUZXN0c0Zyb21OYW1lKCkKKyAgICAgICAgICAgICAgICAjIHByb2R1Y2VzIGxvdXN5
IGVycm9yIG1lc3NhZ2VzIGZvciBiYWQgbW9kdWxlcy4KICAgICAgICAgICAgICAgICB0cnk6CiAg
ICAgICAgICAgICAgICAgICAgIF9faW1wb3J0X18obmFtZSkKICAgICAgICAgICAgICAgICBleGNl
cHQgSW1wb3J0RXJyb3IsIGU6CiAgICAgICAgICAgICAgICAgICAgIF9sb2cuZmF0YWwoJ0ZhaWxl
ZCB0byBpbXBvcnQgJXM6JyAlIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ19l
eGNlcHRpb24oKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgICAgICAg
ICAgc3VpdGVzLmFwcGVuZChsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUobmFtZSwgTm9uZSkpCiAK
ICAgICAgICAgdGVzdF9zdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZShzdWl0ZXMpCkBAIC0xNzYs
NyArMTgwLDcgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmcm9tIHdlYmtp
dHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC54bWxydW5uZXIgaW1wb3J0IFhNTFRlc3RSdW5u
ZXIKICAgICAgICAgICAgIHRlc3RfcnVubmVyID0gWE1MVGVzdFJ1bm5lcihvdXRwdXQ9J3Rlc3Qt
d2Via2l0cHkteG1sLXJlcG9ydHMnKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdF9y
dW5uZXIgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcih2ZXJib3NpdHk9c2VsZi5fdmVyYm9zaXR5
KQorICAgICAgICAgICAgdGVzdF9ydW5uZXIgPSBUZXN0UnVubmVyKHNlbGYuc3RyZWFtLCBzZWxm
Ll9vcHRpb25zLCBsb2FkZXIpCiAKICAgICAgICAgX2xvZy5kZWJ1ZygiUnVubmluZyB0aGUgdGVz
dHMuIikKICAgICAgICAgcmVzdWx0ID0gdGVzdF9ydW5uZXIucnVuKHRlc3Rfc3VpdGUpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90ZXN0L3J1bm5lci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmIwZGZjNTA0YTk2ZWY1
NGIxOTMwZjZmNzA2NGZjZWQzZDBiZDA4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90ZXN0L3J1bm5lci5weQpAQCAtMCwwICsxLDEyOSBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlLCBJbmMuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
IyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyIiImNvZGUgdG8gYWN0dWFsbHkgcnVuIGEgbGlzdCBvZiBweXRob24gdGVzdHMu
IiIiCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCB0aW1lCitpbXBvcnQgdW5p
dHRlc3QKKworCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworY2xhc3Mg
VGVzdFJ1bm5lcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW0sIG9wdGlv
bnMsIGxvYWRlcik6CisgICAgICAgIHNlbGYub3B0aW9ucyA9IG9wdGlvbnMKKyAgICAgICAgc2Vs
Zi5zdHJlYW0gPSBzdHJlYW0KKyAgICAgICAgc2VsZi5sb2FkZXIgPSBsb2FkZXIKKyAgICAgICAg
c2VsZi50ZXN0X2Rlc2NyaXB0aW9uID0gcmUuY29tcGlsZSgiKFx3KykgXCgoW1x3Ll0rKVwpIikK
KworICAgIGRlZiB0ZXN0X25hbWUoc2VsZiwgdGVzdCk6CisgICAgICAgIG0gPSBzZWxmLnRlc3Rf
ZGVzY3JpcHRpb24ubWF0Y2goc3RyKHRlc3QpKQorICAgICAgICByZXR1cm4gIiVzLiVzIiAlICht
Lmdyb3VwKDIpLCBtLmdyb3VwKDEpKQorCisgICAgZGVmIGFsbF90ZXN0X25hbWVzKHNlbGYsIHN1
aXRlKToKKyAgICAgICAgbmFtZXMgPSBbXQorICAgICAgICBpZiBoYXNhdHRyKHN1aXRlLCAnX3Rl
c3RzJyk6CisgICAgICAgICAgICBmb3IgdCBpbiBzdWl0ZS5fdGVzdHM6CisgICAgICAgICAgICAg
ICAgbmFtZXMuZXh0ZW5kKHNlbGYuYWxsX3Rlc3RfbmFtZXModCkpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBuYW1lcy5hcHBlbmQoc2VsZi50ZXN0X25hbWUoc3VpdGUpKQorICAgICAgICBy
ZXR1cm4gbmFtZXMKKworICAgIGRlZiBydW4oc2VsZiwgc3VpdGUpOgorICAgICAgICBydW5fc3Rh
cnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIGFsbF90ZXN0X25hbWVzID0gc2VsZi5hbGxf
dGVzdF9uYW1lcyhzdWl0ZSkKKyAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgp
CisgICAgICAgIHN0b3AgPSBydW5fc3RhcnRfdGltZQorICAgICAgICBmb3IgdGVzdF9uYW1lIGlu
IGFsbF90ZXN0X25hbWVzOgorICAgICAgICAgICAgaWYgc2VsZi5vcHRpb25zLnZlcmJvc2U6Cisg
ICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUodGVzdF9uYW1lKQorICAgICAgICAgICAg
bnVtX2ZhaWx1cmVzID0gbGVuKHJlc3VsdC5mYWlsdXJlcykKKyAgICAgICAgICAgIG51bV9lcnJv
cnMgPSBsZW4ocmVzdWx0LmVycm9ycykKKworICAgICAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUo
KQorICAgICAgICAgICAgIyBGSVhNRTogaXQncyBraW5kYSBsYW1lIHRoYXQgd2UgcmUtbG9hZCB0
aGUgdGVzdCBzdWl0ZXMgZm9yIGVhY2gKKyAgICAgICAgICAgICMgdGVzdCwgYW5kIHRoaXMgbWF5
IHNsb3cgdGhpbmdzIGRvd24sIGJ1dCB0aGlzIG1ha2VzIGltcGxlbWVudGluZworICAgICAgICAg
ICAgIyB0aGUgbG9nZ2luZyBlYXN5IGFuZCB3aWxsIGFsc28gYWxsb3cgdXMgdG8gcGFyYWxsZWxp
emUgbmljZWx5LgorICAgICAgICAgICAgc2VsZi5sb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUodGVz
dF9uYW1lLCBOb25lKS5ydW4ocmVzdWx0KQorICAgICAgICAgICAgc3RvcCA9IHRpbWUudGltZSgp
CisKKyAgICAgICAgICAgIGVyciA9IE5vbmUKKyAgICAgICAgICAgIGZhaWx1cmUgPSBOb25lCisg
ICAgICAgICAgICBpZiBsZW4ocmVzdWx0LmZhaWx1cmVzKSA+IG51bV9mYWlsdXJlczoKKyAgICAg
ICAgICAgICAgICBmYWlsdXJlID0gcmVzdWx0LmZhaWx1cmVzW251bV9mYWlsdXJlc11bMV0KKyAg
ICAgICAgICAgIGVsaWYgbGVuKHJlc3VsdC5lcnJvcnMpID4gbnVtX2Vycm9yczoKKyAgICAgICAg
ICAgICAgICBlcnIgPSByZXN1bHQuZXJyb3JzW251bV9lcnJvcnNdWzFdCisgICAgICAgICAgICBz
ZWxmLndyaXRlX3Jlc3VsdChyZXN1bHQsIHRlc3RfbmFtZSwgc3RvcCAtIHN0YXJ0LCBmYWlsdXJl
LCBlcnIpCisKKyAgICAgICAgc2VsZi53cml0ZV9zdW1tYXJ5KHJlc3VsdCwgc3RvcCAtIHJ1bl9z
dGFydF90aW1lKQorCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiB3cml0ZV9yZXN1
bHQoc2VsZiwgcmVzdWx0LCB0ZXN0X25hbWUsIHRlc3RfdGltZSwgZmFpbHVyZT1Ob25lLCBlcnI9
Tm9uZSk6CisgICAgICAgIGlmIHNlbGYub3B0aW9ucy52ZXJib3NlOgorICAgICAgICAgICAgaWYg
ZmFpbHVyZToKKyAgICAgICAgICAgICAgICBtc2cgPSAnIGZhaWxlZCcKKyAgICAgICAgICAgIGVs
aWYgZXJyOgorICAgICAgICAgICAgICAgIG1zZyA9ICcgZXJyZWQnCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIG1zZyA9ICcgcGFzc2VkJworICAgICAgICAgICAgc2VsZi5zdHJl
YW0ud3JpdGUobXNnICsgJ1xuJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGZhaWx1
cmU6CisgICAgICAgICAgICAgICAgbXNnID0gJ0YnCisgICAgICAgICAgICBlbGlmIGVycjoKKyAg
ICAgICAgICAgICAgICBtc2cgPSAnRScKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgbXNnID0gJy4nCisgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZShtc2cpCisKKyAgICBk
ZWYgd3JpdGVfc3VtbWFyeShzZWxmLCByZXN1bHQsIHJ1bl90aW1lKToKKyAgICAgICAgc2VsZi5z
dHJlYW0ud3JpdGUoJ1xuJykKKworICAgICAgICBmb3IgKHRlc3QsIGVycikgaW4gcmVzdWx0LmVy
cm9yczoKKyAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCI9IiAqIDgwICsgJ1xuJykKKyAg
ICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCJFUlJPUjogIiArIHNlbGYudGVzdF9uYW1lKHRl
c3QpICsgJ1xuJykKKyAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCItIiAqIDgwICsgJ1xu
JykKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGVyci5zcGxpdGxpbmVzKCk6CisgICAgICAgICAg
ICAgICAgc2VsZi5zdHJlYW0ud3JpdGUobGluZSArICdcbicpCisgICAgICAgICAgICBzZWxmLnN0
cmVhbS53cml0ZSgnXG4nKQorCisgICAgICAgIGZvciAodGVzdCwgZmFpbHVyZSkgaW4gcmVzdWx0
LmZhaWx1cmVzOgorICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoIj0iICogODAgKyAnXG4n
KQorICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoIkZBSUxVUkU6ICIgKyBzZWxmLnRlc3Rf
bmFtZSh0ZXN0KSArICdcbicpCisgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZSgiLSIgKiA4
MCArICdcbicpCisgICAgICAgICAgICBmb3IgbGluZSBpbiBmYWlsdXJlLnNwbGl0bGluZXMoKToK
KyAgICAgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZShsaW5lICsgJ1xuJykKKyAgICAgICAg
ICAgIHNlbGYuc3RyZWFtLndyaXRlKCdcbicpCisKKyAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUo
Jy0nICogODAgKyAnXG4nKQorICAgICAgICBzZWxmLnN0cmVhbS53cml0ZSgnUmFuICVkIHRlc3Ql
cyBpbiAlLjNmc1xuJyAlCisgICAgICAgICAgICAocmVzdWx0LnRlc3RzUnVuLCByZXN1bHQudGVz
dHNSdW4gIT0gMSBhbmQgInMiIG9yICIiLCBydW5fdGltZSkpCisKKyAgICAgICAgaWYgcmVzdWx0
Lndhc1N1Y2Nlc3NmdWwoKToKKyAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCdcbk9LXG4n
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoJ0ZBSUxFRCAo
ZmFpbHVyZXM9JWQsIGVycm9ycz0lZClcbicgJQorICAgICAgICAgICAgICAgIChsZW4ocmVzdWx0
LmZhaWx1cmVzKSwgbGVuKHJlc3VsdC5lcnJvcnMpKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134110</attachid>
            <date>2012-03-27 11:53:35 -0700</date>
            <delta_ts>2012-03-27 13:23:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82290-20120327115334.patch</filename>
            <type>text/plain</type>
            <size>14996</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMTczCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWQ4NDNmNmNlZjNhYmVmMDdjNjFhYmE4Y2FiYThhMTU5
ODYwMmEwMS4uNGI4MGIyNjYzMDI4MjMxZmQwZjMyODhiNDVhOGYwNjRiZGNlMzJiOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUz
IEBACisyMDEyLTAzLTI3ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHRlc3Qtd2Via2l0cHk6IHByZXBhcmUgZm9yIGJldHRlciB0ZXN0IHJ1biBvdXRwdXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMjkwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBUaGlzIGNvZGUgYmFz
aWNhbGx5IHJlLWltcGxlbWVudHMgdGhlIG91dHB1dCBvZiB0aGUgVGV4dFRlc3RSdW5uZXIgZGVm
YXVsdAorICAgICAgICBydW5uZXIgY29kZSBmcm9tIHVuaXR0ZXN0LCBhbHRob3VnaCB0aGUgaW1w
bGVtZW50YXRpb24gaXMgcXVpdGUKKyAgICAgICAgZGlmZmVyZW50LCBpbiBwcmVwYXJhdGlvbiBm
b3IgY2hhbmdpbmcgdGhlIHRlc3Qgb3V0cHV0IHRvIGJlCisgICAgICAgIG1ldGVyZWQgYW5kIHBv
c3NpYmx5IHJ1bm5pbmcgaW4gcGFyYWxsZWwuCisKKyAgICAgICAgVGhlIG91dHB1dCBpcyBhbG1v
c3QgaWRlbnRpY2FsIHRvIGJlZm9yZSwgZXhjZXB0IHRoYXQgaW5zdGVhZCBvZgorICAgICAgICBs
b2dnaW5nICJ0ZXN0X3JlZ3VsYXIgKHdlYmtpdHB5Lm1haW4uUnVubmVyVGVzdCkgcGFzc2VkIiB3
ZSBsb2cKKyAgICAgICAgIndlYmtpdHB5Lm1haW4uUnVubmVyVGVzdC50ZXN0X3JlZ3VsYXIgcGFz
c2VkIi4gSXQgaGFzIGFsd2F5cworICAgICAgICBhbm5veWVkIG1lIHRoYXQgdGhleSBpbnZlcnQg
dGhlIG5hbWVzIHRvIGJlIGhhcmRlciB0byByZWFkIGFuZAorICAgICAgICBzbyB0aGF0IHlvdSBj
YW4ndCBjb3B5ICYgcGFzdGUgYmFjayB0byB0aGUgaW5wdXQgZm9yCisgICAgICAgIHRlc3Qtd2Vi
a2l0cHkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBwcm92aWRlZCB0byBhZGQgYSBza2VsZXRv
biBmb3IgdW5pdCB0ZXN0cyBhbmQgZm9yCisgICAgICAgIGNvbXBhcmlzb24gdG8gYW4gdXBjb21p
bmcgcGF0Y2ggdGhhdCB3aWxsIGFjdHVhbGx5IGFkZCBuZXcKKyAgICAgICAgZnVuY3Rpb25hbGl0
eS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5OgorICAgICAgICAo
VGVzdGVyLl9faW5pdF9fKToKKyAgICAgICAgKFRlc3Rlci5fY29uZmlndXJlX2xvZ2dpbmcpOgor
ICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dGVzdC9ydW5uZXIucHk6IEFkZGVkLgorICAgICAgICAoVGVzdFJ1bm5lcik6CisgICAgICAgIChU
ZXN0UnVubmVyLl9faW5pdF9fKToKKyAgICAgICAgKFRlc3RSdW5uZXIudGVzdF9uYW1lKToKKyAg
ICAgICAgKFRlc3RSdW5uZXIuYWxsX3Rlc3RfbmFtZXMpOgorICAgICAgICAoVGVzdFJ1bm5lci5y
dW4pOgorICAgICAgICAoVGVzdFJ1bm5lci53cml0ZV9yZXN1bHQpOgorICAgICAgICAoVGVzdFJ1
bm5lci53cml0ZV9zdW1tYXJ5KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVu
bmVyX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKEZha2VNb2R1bGVTdWl0ZSk6CisgICAg
ICAgIChGYWtlTW9kdWxlU3VpdGUuX19pbml0X18pOgorICAgICAgICAoRmFrZU1vZHVsZVN1aXRl
Ll9fc3RyX18pOgorICAgICAgICAoRmFrZU1vZHVsZVN1aXRlLnJ1bik6CisgICAgICAgIChGYWtl
VG9wU3VpdGUpOgorICAgICAgICAoRmFrZVRvcFN1aXRlLl9faW5pdF9fKToKKyAgICAgICAgKEZh
a2VMb2FkZXIpOgorICAgICAgICAoRmFrZUxvYWRlci5fX2luaXRfXyk6CisgICAgICAgIChGYWtl
TG9hZGVyLnRvcF9zdWl0ZSk6CisgICAgICAgIChGYWtlTG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1l
KToKKyAgICAgICAgKFJ1bm5lclRlc3QpOgorICAgICAgICAoUnVubmVyVGVzdC50ZXN0X3JlZ3Vs
YXIpOgorICAgICAgICAoUnVubmVyVGVzdC50ZXN0X3ZlcmJvc2UpOgorCiAyMDEyLTAzLTI2ICBE
aXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBkdXBsaWNh
dGVkIENoYW5nZUxvZyBlbnRyeSBmcm9tIHIxMTIxNzEuCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9t
YWluLnB5CmluZGV4IGIyZWJhYmU0Y2YxOWZjYmQwYjEyYjYyMDRlNDEzOTRmYmM5ZmRjMTQuLmEw
MzU3OTQ2MDI5MjRkZWNlMTc5ODM0OWU1M2I4ODM5ZDU1OWNlZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGVzdC9tYWluLnB5CkBAIC0zMiw2ICszMiw3IEBAIGltcG9ydCB1bml0dGVzdAogCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQogZnJv
bSB3ZWJraXRweS50ZXN0LnRlc3RfZmluZGVyIGltcG9ydCBUZXN0RmluZGVyCitmcm9tIHdlYmtp
dHB5LnRlc3QucnVubmVyIGltcG9ydCBUZXN0UnVubmVyCiAKIF9sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKIApAQCAtNDAsNiArNDEsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZXN5c3RlbT1Ob25lKToKICAgICAgICAgc2VsZi5f
dmVyYm9zaXR5ID0gMQogICAgICAgICBzZWxmLmZpbmRlciA9IFRlc3RGaW5kZXIoZmlsZXN5c3Rl
bSBvciBGaWxlU3lzdGVtKCkpCisgICAgICAgIHNlbGYuc3RyZWFtID0gc3lzLnN0ZGVycgogCiAg
ICAgZGVmIGFkZF90cmVlKHNlbGYsIHRvcF9kaXJlY3RvcnksIHN0YXJ0aW5nX3N1YmRpcmVjdG9y
eT1Ob25lKToKICAgICAgICAgc2VsZi5maW5kZXIuYWRkX3RyZWUodG9wX2RpcmVjdG9yeSwgc3Rh
cnRpbmdfc3ViZGlyZWN0b3J5KQpAQCAtOTIsNyArOTQsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0
KToKICAgICAgICAgZXhjZXB0IGZvciBtZXNzYWdlcyBmcm9tIHRoZSBhdXRvaW5zdGFsbCBtb2R1
bGUuICBBbHNvIHNldCB0aGUKICAgICAgICAgbG9nZ2luZyBsZXZlbCBhcyBkZXNjcmliZWQgYmVs
b3cuCiAgICAgICAgICIiIgotICAgICAgICBoYW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVy
KHN5cy5zdGRlcnIpCisgICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc2Vs
Zi5zdHJlYW0pCiAgICAgICAgICMgV2UgY29uc3RyYWluIHRoZSBsZXZlbCBvbiB0aGUgaGFuZGxl
ciByYXRoZXIgdGhhbiBvbiB0aGUgcm9vdAogICAgICAgICAjIGxvZ2dlciBpdHNlbGYuICBUaGlz
IGlzIHByb2JhYmx5IGJldHRlciBiZWNhdXNlIHRoZSBoYW5kbGVyIGlzCiAgICAgICAgICMgY29u
ZmlndXJlZCBhbmQga25vd24gb25seSB0byB0aGlzIG1vZHVsZSwgd2hlcmVhcyB0aGUgcm9vdCBs
b2dnZXIKQEAgLTE0Miw3ICsxNDQsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAg
bmFtZXMgPSBzZWxmLmZpbmRlci5maW5kX25hbWVzKGFyZ3MsIHNlbGYuX29wdGlvbnMuc2tpcF9p
bnRlZ3JhdGlvbnRlc3RzLCBzZWxmLl9vcHRpb25zLmFsbCkKICAgICAgICAgcmV0dXJuIHNlbGYu
X3J1bl90ZXN0cyhuYW1lcykKIAotICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIGFyZ3MpOgorICAg
IGRlZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVzKToKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5j
b3ZlcmFnZToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpbXBvcnQgd2Via2l0
cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLmNvdmVyYWdlIGFzIGNvdmVyYWdlCkBAIC0xNTks
MTYgKzE2MSwxOCBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKIAogICAgICAgICBsb2FkZXIgPSB1
bml0dGVzdC5kZWZhdWx0VGVzdExvYWRlcgogICAgICAgICBzdWl0ZXMgPSBbXQotICAgICAgICBm
b3IgbmFtZSBpbiBhcmdzOgorICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKICAgICAgICAgICAg
IGlmIHNlbGYuZmluZGVyLmlzX21vZHVsZShuYW1lKToKLSAgICAgICAgICAgICAgICAjIGltcG9y
dCBtb2R1bGVzIGV4cGxpY2l0bHkgYmVmb3JlIGxvYWRpbmcgdGhlaXIgdGVzdHMgYmVjYXVzZQot
ICAgICAgICAgICAgICAgICMgbG9hZFRlc3RzRnJvbU5hbWUoKSBwcm9kdWNlcyBsb3VzeSBlcnJv
ciBtZXNzYWdlcyBmb3IgYmFkIG1vZHVsZXMuCisgICAgICAgICAgICAgICAgIyBpZiB3ZSBmYWls
ZWQgdG8gbG9hZCBhIG5hbWUgYW5kIGl0IGxvb2tzIGxpa2UgYSBtb2R1bGUsCisgICAgICAgICAg
ICAgICAgIyB0cnkgaW1wb3J0aW5nIGl0IGRpcmVjdGx5LCBiZWNhdXNlIGxvYWRUZXN0c0Zyb21O
YW1lKCkKKyAgICAgICAgICAgICAgICAjIHByb2R1Y2VzIGxvdXN5IGVycm9yIG1lc3NhZ2VzIGZv
ciBiYWQgbW9kdWxlcy4KICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAg
IF9faW1wb3J0X18obmFtZSkKICAgICAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IsIGU6
CiAgICAgICAgICAgICAgICAgICAgIF9sb2cuZmF0YWwoJ0ZhaWxlZCB0byBpbXBvcnQgJXM6JyAl
IG5hbWUpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ19leGNlcHRpb24oKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgICAgICAgICAgc3VpdGVzLmFwcGVuZChs
b2FkZXIubG9hZFRlc3RzRnJvbU5hbWUobmFtZSwgTm9uZSkpCiAKICAgICAgICAgdGVzdF9zdWl0
ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZShzdWl0ZXMpCkBAIC0xNzYsNyArMTgwLDcgQEAgY2xhc3Mg
VGVzdGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0
b2luc3RhbGxlZC54bWxydW5uZXIgaW1wb3J0IFhNTFRlc3RSdW5uZXIKICAgICAgICAgICAgIHRl
c3RfcnVubmVyID0gWE1MVGVzdFJ1bm5lcihvdXRwdXQ9J3Rlc3Qtd2Via2l0cHkteG1sLXJlcG9y
dHMnKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdF9ydW5uZXIgPSB1bml0dGVzdC5U
ZXh0VGVzdFJ1bm5lcih2ZXJib3NpdHk9c2VsZi5fdmVyYm9zaXR5KQorICAgICAgICAgICAgdGVz
dF9ydW5uZXIgPSBUZXN0UnVubmVyKHNlbGYuc3RyZWFtLCBzZWxmLl9vcHRpb25zLCBsb2FkZXIp
CiAKICAgICAgICAgX2xvZy5kZWJ1ZygiUnVubmluZyB0aGUgdGVzdHMuIikKICAgICAgICAgcmVz
dWx0ID0gdGVzdF9ydW5uZXIucnVuKHRlc3Rfc3VpdGUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0
L3J1bm5lci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmIwZGZjNTA0YTk2ZWY1NGIxOTMwZjZmNzA2NGZjZWQz
ZDBiZDA4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3J1
bm5lci5weQpAQCAtMCwwICsxLDEyOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlLCBJ
bmMuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisj
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiImNvZGUg
dG8gYWN0dWFsbHkgcnVuIGEgbGlzdCBvZiBweXRob24gdGVzdHMuIiIiCisKK2ltcG9ydCBsb2dn
aW5nCitpbXBvcnQgcmUKK2ltcG9ydCB0aW1lCitpbXBvcnQgdW5pdHRlc3QKKworCitfbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworY2xhc3MgVGVzdFJ1bm5lcihvYmplY3Qp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW0sIG9wdGlvbnMsIGxvYWRlcik6CisgICAg
ICAgIHNlbGYub3B0aW9ucyA9IG9wdGlvbnMKKyAgICAgICAgc2VsZi5zdHJlYW0gPSBzdHJlYW0K
KyAgICAgICAgc2VsZi5sb2FkZXIgPSBsb2FkZXIKKyAgICAgICAgc2VsZi50ZXN0X2Rlc2NyaXB0
aW9uID0gcmUuY29tcGlsZSgiKFx3KykgXCgoW1x3Ll0rKVwpIikKKworICAgIGRlZiB0ZXN0X25h
bWUoc2VsZiwgdGVzdCk6CisgICAgICAgIG0gPSBzZWxmLnRlc3RfZGVzY3JpcHRpb24ubWF0Y2go
c3RyKHRlc3QpKQorICAgICAgICByZXR1cm4gIiVzLiVzIiAlIChtLmdyb3VwKDIpLCBtLmdyb3Vw
KDEpKQorCisgICAgZGVmIGFsbF90ZXN0X25hbWVzKHNlbGYsIHN1aXRlKToKKyAgICAgICAgbmFt
ZXMgPSBbXQorICAgICAgICBpZiBoYXNhdHRyKHN1aXRlLCAnX3Rlc3RzJyk6CisgICAgICAgICAg
ICBmb3IgdCBpbiBzdWl0ZS5fdGVzdHM6CisgICAgICAgICAgICAgICAgbmFtZXMuZXh0ZW5kKHNl
bGYuYWxsX3Rlc3RfbmFtZXModCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBuYW1lcy5h
cHBlbmQoc2VsZi50ZXN0X25hbWUoc3VpdGUpKQorICAgICAgICByZXR1cm4gbmFtZXMKKworICAg
IGRlZiBydW4oc2VsZiwgc3VpdGUpOgorICAgICAgICBydW5fc3RhcnRfdGltZSA9IHRpbWUudGlt
ZSgpCisgICAgICAgIGFsbF90ZXN0X25hbWVzID0gc2VsZi5hbGxfdGVzdF9uYW1lcyhzdWl0ZSkK
KyAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCisgICAgICAgIHN0b3AgPSBy
dW5fc3RhcnRfdGltZQorICAgICAgICBmb3IgdGVzdF9uYW1lIGluIGFsbF90ZXN0X25hbWVzOgor
ICAgICAgICAgICAgaWYgc2VsZi5vcHRpb25zLnZlcmJvc2U6CisgICAgICAgICAgICAgICAgc2Vs
Zi5zdHJlYW0ud3JpdGUodGVzdF9uYW1lKQorICAgICAgICAgICAgbnVtX2ZhaWx1cmVzID0gbGVu
KHJlc3VsdC5mYWlsdXJlcykKKyAgICAgICAgICAgIG51bV9lcnJvcnMgPSBsZW4ocmVzdWx0LmVy
cm9ycykKKworICAgICAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgIyBG
SVhNRTogaXQncyBraW5kYSBsYW1lIHRoYXQgd2UgcmUtbG9hZCB0aGUgdGVzdCBzdWl0ZXMgZm9y
IGVhY2gKKyAgICAgICAgICAgICMgdGVzdCwgYW5kIHRoaXMgbWF5IHNsb3cgdGhpbmdzIGRvd24s
IGJ1dCB0aGlzIG1ha2VzIGltcGxlbWVudGluZworICAgICAgICAgICAgIyB0aGUgbG9nZ2luZyBl
YXN5IGFuZCB3aWxsIGFsc28gYWxsb3cgdXMgdG8gcGFyYWxsZWxpemUgbmljZWx5LgorICAgICAg
ICAgICAgc2VsZi5sb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUodGVzdF9uYW1lLCBOb25lKS5ydW4o
cmVzdWx0KQorICAgICAgICAgICAgc3RvcCA9IHRpbWUudGltZSgpCisKKyAgICAgICAgICAgIGVy
ciA9IE5vbmUKKyAgICAgICAgICAgIGZhaWx1cmUgPSBOb25lCisgICAgICAgICAgICBpZiBsZW4o
cmVzdWx0LmZhaWx1cmVzKSA+IG51bV9mYWlsdXJlczoKKyAgICAgICAgICAgICAgICBmYWlsdXJl
ID0gcmVzdWx0LmZhaWx1cmVzW251bV9mYWlsdXJlc11bMV0KKyAgICAgICAgICAgIGVsaWYgbGVu
KHJlc3VsdC5lcnJvcnMpID4gbnVtX2Vycm9yczoKKyAgICAgICAgICAgICAgICBlcnIgPSByZXN1
bHQuZXJyb3JzW251bV9lcnJvcnNdWzFdCisgICAgICAgICAgICBzZWxmLndyaXRlX3Jlc3VsdChy
ZXN1bHQsIHRlc3RfbmFtZSwgc3RvcCAtIHN0YXJ0LCBmYWlsdXJlLCBlcnIpCisKKyAgICAgICAg
c2VsZi53cml0ZV9zdW1tYXJ5KHJlc3VsdCwgc3RvcCAtIHJ1bl9zdGFydF90aW1lKQorCisgICAg
ICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiB3cml0ZV9yZXN1bHQoc2VsZiwgcmVzdWx0LCB0
ZXN0X25hbWUsIHRlc3RfdGltZSwgZmFpbHVyZT1Ob25lLCBlcnI9Tm9uZSk6CisgICAgICAgIGlm
IHNlbGYub3B0aW9ucy52ZXJib3NlOgorICAgICAgICAgICAgaWYgZmFpbHVyZToKKyAgICAgICAg
ICAgICAgICBtc2cgPSAnIGZhaWxlZCcKKyAgICAgICAgICAgIGVsaWYgZXJyOgorICAgICAgICAg
ICAgICAgIG1zZyA9ICcgZXJyZWQnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
IG1zZyA9ICcgcGFzc2VkJworICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUobXNnICsgJ1xu
JykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGZhaWx1cmU6CisgICAgICAgICAgICAg
ICAgbXNnID0gJ0YnCisgICAgICAgICAgICBlbGlmIGVycjoKKyAgICAgICAgICAgICAgICBtc2cg
PSAnRScKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbXNnID0gJy4nCisgICAg
ICAgICAgICBzZWxmLnN0cmVhbS53cml0ZShtc2cpCisKKyAgICBkZWYgd3JpdGVfc3VtbWFyeShz
ZWxmLCByZXN1bHQsIHJ1bl90aW1lKToKKyAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoJ1xuJykK
KworICAgICAgICBmb3IgKHRlc3QsIGVycikgaW4gcmVzdWx0LmVycm9yczoKKyAgICAgICAgICAg
IHNlbGYuc3RyZWFtLndyaXRlKCI9IiAqIDgwICsgJ1xuJykKKyAgICAgICAgICAgIHNlbGYuc3Ry
ZWFtLndyaXRlKCJFUlJPUjogIiArIHNlbGYudGVzdF9uYW1lKHRlc3QpICsgJ1xuJykKKyAgICAg
ICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCItIiAqIDgwICsgJ1xuJykKKyAgICAgICAgICAgIGZv
ciBsaW5lIGluIGVyci5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0u
d3JpdGUobGluZSArICdcbicpCisgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZSgnXG4nKQor
CisgICAgICAgIGZvciAodGVzdCwgZmFpbHVyZSkgaW4gcmVzdWx0LmZhaWx1cmVzOgorICAgICAg
ICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoIj0iICogODAgKyAnXG4nKQorICAgICAgICAgICAgc2Vs
Zi5zdHJlYW0ud3JpdGUoIkZBSUxVUkU6ICIgKyBzZWxmLnRlc3RfbmFtZSh0ZXN0KSArICdcbicp
CisgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZSgiLSIgKiA4MCArICdcbicpCisgICAgICAg
ICAgICBmb3IgbGluZSBpbiBmYWlsdXJlLnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgICAgICBz
ZWxmLnN0cmVhbS53cml0ZShsaW5lICsgJ1xuJykKKyAgICAgICAgICAgIHNlbGYuc3RyZWFtLndy
aXRlKCdcbicpCisKKyAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoJy0nICogODAgKyAnXG4nKQor
ICAgICAgICBzZWxmLnN0cmVhbS53cml0ZSgnUmFuICVkIHRlc3QlcyBpbiAlLjNmc1xuJyAlCisg
ICAgICAgICAgICAocmVzdWx0LnRlc3RzUnVuLCByZXN1bHQudGVzdHNSdW4gIT0gMSBhbmQgInMi
IG9yICIiLCBydW5fdGltZSkpCisKKyAgICAgICAgaWYgcmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKToK
KyAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCdcbk9LXG4nKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoJ0ZBSUxFRCAoZmFpbHVyZXM9JWQsIGVycm9y
cz0lZClcbicgJQorICAgICAgICAgICAgICAgIChsZW4ocmVzdWx0LmZhaWx1cmVzKSwgbGVuKHJl
c3VsdC5lcnJvcnMpKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9y
dW5uZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyX3Vu
aXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwYzBiMzdlMTZhOWQ3MjI2OGY1YzNiNmJlNDg1Nzc1ODQ4
ZjQzYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVu
bmVyX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsOTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSwgSW5jLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitp
bXBvcnQgcmUKK2ltcG9ydCBTdHJpbmdJTworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0
cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKK2Zyb20gd2Via2l0cHkudGVzdC5y
dW5uZXIgaW1wb3J0IFRlc3RSdW5uZXIKKworCitjbGFzcyBGYWtlTW9kdWxlU3VpdGUob2JqZWN0
KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcmVzdWx0LCBtc2cpOgorICAgICAgICBz
ZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0CisgICAgICAgIHNl
bGYubXNnID0gbXNnCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNl
bGYubmFtZQorCisgICAgZGVmIHJ1bihzZWxmLCByZXN1bHQpOgorICAgICAgICByZXN1bHQudGVz
dHNSdW4gKz0gMQorICAgICAgICBpZiBzZWxmLnJlc3VsdCA9PSAnRic6CisgICAgICAgICAgICBy
ZXN1bHQuZmFpbHVyZXMuYXBwZW5kKChzZWxmLm5hbWUsIHNlbGYubXNnKSkKKyAgICAgICAgZWxp
ZiBzZWxmLnJlc3VsdCA9PSAnRSc6CisgICAgICAgICAgICByZXN1bHQuZXJyb3JzLmFwcGVuZCgo
c2VsZi5uYW1lLCBzZWxmLm1zZykpCisKKworY2xhc3MgRmFrZVRvcFN1aXRlKG9iamVjdCk6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzKToKKyAgICAgICAgc2VsZi5fdGVzdHMgPSB0ZXN0
cworCisKK2NsYXNzIEZha2VMb2FkZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
KnRlc3RfdHJpcGxlcyk6CisgICAgICAgIHNlbGYudHJpcGxlcyA9IHRlc3RfdHJpcGxlcworICAg
ICAgICBzZWxmLl90ZXN0cyA9IFtdCisgICAgICAgIHNlbGYuX3Jlc3VsdHMgPSB7fQorICAgICAg
ICBmb3IgdGVzdF9uYW1lLCByZXN1bHQsIG1zZyBpbiBzZWxmLnRyaXBsZXM6CisgICAgICAgICAg
ICBzZWxmLl90ZXN0cy5hcHBlbmQodGVzdF9uYW1lKQorICAgICAgICAgICAgbSA9IHJlLm1hdGNo
KCIoXHcrKSBcKChbXHcuXSspXCkiLCB0ZXN0X25hbWUpCisgICAgICAgICAgICBzZWxmLl9yZXN1
bHRzWyclcy4lcycgJSAobS5ncm91cCgyKSwgbS5ncm91cCgxKSldID0gdHVwbGUoW3Rlc3RfbmFt
ZSwgcmVzdWx0LCBtc2ddKQorCisgICAgZGVmIHRvcF9zdWl0ZShzZWxmKToKKyAgICAgICAgcmV0
dXJuIEZha2VUb3BTdWl0ZShzZWxmLl90ZXN0cykKKworICAgIGRlZiBsb2FkVGVzdHNGcm9tTmFt
ZShzZWxmLCBuYW1lLCBkdW1teSk6CisgICAgICAgIHJldHVybiBGYWtlTW9kdWxlU3VpdGUoKnNl
bGYuX3Jlc3VsdHNbbmFtZV0pCisKKworY2xhc3MgUnVubmVyVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CisgICAgZGVmIHRlc3RfcmVndWxhcihzZWxmKToKKyAgICAgICAgb3B0aW9ucyA9IE1vY2tP
cHRpb25zKHZlcmJvc2U9RmFsc2UpCisgICAgICAgIHN0cmVhbSA9IFN0cmluZ0lPLlN0cmluZ0lP
KCkKKyAgICAgICAgbG9hZGVyID0gRmFrZUxvYWRlcigoJ3Rlc3QxIChGb28pJywgJy4nLCAnJyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCd0ZXN0MiAoRm9vKScsICdGJywgJ3Rlc3Qy
XG5mYWlsZWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3Rlc3QzIChGb28pJywg
J0UnLCAndGVzdDNcbmVycmVkJykpCisgICAgICAgIHJlc3VsdCA9IFRlc3RSdW5uZXIoc3RyZWFt
LCBvcHRpb25zLCBsb2FkZXIpLnJ1bihsb2FkZXIudG9wX3N1aXRlKCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UocmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMocmVzdWx0LnRlc3RzUnVuLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4o
cmVzdWx0LmZhaWx1cmVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKHJlc3Vs
dC5lcnJvcnMpLCAxKQorICAgICAgICAjIEZJWE1FOiBjaGVjayB0aGUgb3V0cHV0IGZyb20gdGhl
IHRlc3QKKworICAgIGRlZiB0ZXN0X3ZlcmJvc2Uoc2VsZik6CisgICAgICAgIG9wdGlvbnMgPSBN
b2NrT3B0aW9ucyh2ZXJib3NlPVRydWUpCisgICAgICAgIHN0cmVhbSA9IFN0cmluZ0lPLlN0cmlu
Z0lPKCkKKyAgICAgICAgbG9hZGVyID0gRmFrZUxvYWRlcigoJ3Rlc3QxIChGb28pJywgJy4nLCAn
JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCd0ZXN0MiAoRm9vKScsICdGJywgJ3Rl
c3QyXG5mYWlsZWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3Rlc3QzIChGb28p
JywgJ0UnLCAndGVzdDNcbmVycmVkJykpCisgICAgICAgIHJlc3VsdCA9IFRlc3RSdW5uZXIoc3Ry
ZWFtLCBvcHRpb25zLCBsb2FkZXIpLnJ1bihsb2FkZXIudG9wX3N1aXRlKCkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UocmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMocmVzdWx0LnRlc3RzUnVuLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhs
ZW4ocmVzdWx0LmZhaWx1cmVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKHJl
c3VsdC5lcnJvcnMpLCAxKQorICAgICAgICAjIEZJWE1FOiBjaGVjayB0aGUgb3V0cHV0IGZyb20g
dGhlIHRlc3QKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1h
aW4oKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>