<?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>105391</bug_id>
          
          <creation_ts>2012-12-18 22:56:37 -0800</creation_ts>
          <short_desc>PerfTest.parse_output does too much</short_desc>
          <delta_ts>2012-12-19 13:32:07 -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>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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>morrita</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>794362</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-18 22:56:37 -0800</bug_when>
    <thetext>Right now, PerfTest.parse_output parses output.text, filter lines to be ignored, and outputs results. This method should focus on parsing the output instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794367</commentid>
    <comment_count>1</comment_count>
      <attachid>180096</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-18 23:09:08 -0800</bug_when>
    <thetext>Created attachment 180096
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794369</commentid>
    <comment_count>2</comment_count>
      <attachid>180098</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-18 23:09:48 -0800</bug_when>
    <thetext>Created attachment 180098
Added the missing change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794776</commentid>
    <comment_count>3</comment_count>
      <attachid>180098</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-12-19 10:06:30 -0800</bug_when>
    <thetext>Comment on attachment 180098
Added the missing change log

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

r- for what appears to be a typo.

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:175
&gt; +            if description_match:
&gt; +                description = description.group(&apos;description&apos;)

Is this correct?  Shouldn&apos;t it be description_match on the right side?  Can we add a test case with a description?

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:209
&gt; +        return results, description

Nit: Please make a class and return the class.  It makes the calling code much easier to understand rather than a tuple with unnamed values and makes it harder to accidentally return the wrong type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794785</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-19 10:17:06 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 180098 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180098&amp;action=review
&gt; 
&gt; r- for what appears to be a typo.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:175
&gt; &gt; +            if description_match:
&gt; &gt; +                description = description.group(&apos;description&apos;)
&gt; 
&gt; Is this correct?  Shouldn&apos;t it be description_match on the right side?  Can we add a test case with a description?

That&apos;s odd. Yeah, let&apos;s add a test case.

&gt; &gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:209
&gt; &gt; +        return results, description
&gt; 
&gt; Nit: Please make a class and return the class.  It makes the calling code much easier to understand rather than a tuple with unnamed values and makes it harder to accidentally return the wrong type.

I don&apos;t think I want to contribute to the proliferations of useless classes. I&apos;ll just store it on PerfTest object itself since we&apos;ll have exactly one test description per PerfTest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794805</commentid>
    <comment_count>5</comment_count>
      <attachid>180195</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-19 10:50:37 -0800</bug_when>
    <thetext>Created attachment 180195
Fixed a bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794818</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-19 11:19:41 -0800</bug_when>
    <thetext>Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794890</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-19 13:32:07 -0800</bug_when>
    <thetext>Committed r138192: &lt;http://trac.webkit.org/changeset/138192&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180096</attachid>
            <date>2012-12-18 23:09:08 -0800</date>
            <delta_ts>2012-12-18 23:09:48 -0800</delta_ts>
            <desc>Cleanup</desc>
            <filename>fix105391</filename>
            <type>text/plain</type>
            <size>9558</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3Rf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3Jt
YW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weQkocmV2aXNpb24gMTM4MTE0KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtNjMsMTUgKzYzLDE2IEBACiAgICAgICAgIG91dHB1dF9jYXB0
dXJlLmNhcHR1cmVfb3V0cHV0KCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdGVzdCA9IFBl
cmZUZXN0KE1vY2tQb3J0KCksICdzb21lLXRlc3QnLCAnL3BhdGgvc29tZS1kaXIvc29tZS10ZXN0
JykKKyAgICAgICAgICAgIHRlc3QuX2ZpbHRlcl9vdXRwdXQob3V0cHV0KQogICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCh0ZXN0LnBhcnNlX291dHB1dChvdXRwdXQpLAotICAgICAgICAgICAg
ICAgIHsnc29tZS10ZXN0JzogeydhdmcnOiAxMTAwLjAsICdtZWRpYW4nOiAxMTAxLjAsICdtaW4n
OiAxMDgwLjAsICdtYXgnOiAxMTIwLjAsICdzdGRldic6IDExLjAsICd1bml0JzogJ21zJywKLSAg
ICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyc6IFtpIGZvciBpIGluIHJhbmdlKDEsIDIwKV19fSkK
KyAgICAgICAgICAgICAgICAoeydzb21lLXRlc3QnOiB7J2F2Zyc6IDExMDAuMCwgJ21lZGlhbic6
IDExMDEuMCwgJ21pbic6IDEwODAuMCwgJ21heCc6IDExMjAuMCwgJ3N0ZGV2JzogMTEuMCwgJ3Vu
aXQnOiAnbXMnLAorICAgICAgICAgICAgICAgICAgICAndmFsdWVzJzogW2kgZm9yIGkgaW4gcmFu
Z2UoMSwgMjApXX19LCBOb25lKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHBhc3MK
ICAgICAgICAgICAgIGFjdHVhbF9zdGRvdXQsIGFjdHVhbF9zdGRlcnIsIGFjdHVhbF9sb2dzID0g
b3V0cHV0X2NhcHR1cmUucmVzdG9yZV9vdXRwdXQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGFjdHVhbF9zdGRvdXQsICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9zdGRl
cnIsICcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9sb2dzLCAnUkVTVUxUIHNv
bWUtdGVzdD0gMTEwMC4wIG1zXG5tZWRpYW49IDExMDEuMCBtcywgc3RkZXY9IDExLjAgbXMsIG1p
bj0gMTA4MC4wIG1zLCBtYXg9IDExMjAuMCBtc1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChhY3R1YWxfbG9ncywgJycpCiAKICAgICBkZWYgdGVzdF9wYXJzZV9vdXRwdXRfd2l0aF9mYWls
aW5nX2xpbmUoc2VsZik6CiAgICAgICAgIG91dHB1dCA9IERyaXZlck91dHB1dCgnXG4nLmpvaW4o
WwpAQCAtOTEsNyArOTIsOCBAQAogICAgICAgICBvdXRwdXRfY2FwdHVyZS5jYXB0dXJlX291dHB1
dCgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRlc3QgPSBQZXJmVGVzdChNb2NrUG9ydCgp
LCAnc29tZS10ZXN0JywgJy9wYXRoL3NvbWUtZGlyL3NvbWUtdGVzdCcpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHRlc3QucGFyc2Vfb3V0cHV0KG91dHB1dCksIE5vbmUpCisgICAgICAg
ICAgICB0ZXN0Ll9maWx0ZXJfb3V0cHV0KG91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwodGVzdC5wYXJzZV9vdXRwdXQob3V0cHV0KSwgKE5vbmUsIE5vbmUpKQogICAgICAgICBm
aW5hbGx5OgogICAgICAgICAgICAgYWN0dWFsX3N0ZG91dCwgYWN0dWFsX3N0ZGVyciwgYWN0dWFs
X2xvZ3MgPSBvdXRwdXRfY2FwdHVyZS5yZXN0b3JlX291dHB1dCgpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYWN0dWFsX3N0ZG91dCwgJycpCkBAIC0xMzMsMTUgKzEzNSwxNiBAQAogICAgICAg
ICBvdXRwdXRfY2FwdHVyZS5jYXB0dXJlX291dHB1dCgpCiAgICAgICAgIHRyeToKICAgICAgICAg
ICAgIHRlc3QgPSBQZXJmVGVzdChNb2NrUG9ydCgpLCAnc29tZS10ZXN0JywgJy9wYXRoL3NvbWUt
ZGlyL3NvbWUtdGVzdCcpCisgICAgICAgICAgICB0ZXN0Ll9maWx0ZXJfb3V0cHV0KG91dHB1dCkK
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdC5wYXJzZV9vdXRwdXQob3V0cHV0KSwK
LSAgICAgICAgICAgICAgICB7J3NvbWUtdGVzdCc6IHsnYXZnJzogMTEwMC4wLCAnbWVkaWFuJzog
MTEwMS4wLCAnbWluJzogMTA4MC4wLCAnbWF4JzogMTEyMC4wLCAnc3RkZXYnOiAxMS4wLCAndW5p
dCc6ICdtcycsCi0gICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnOiBbaSBmb3IgaSBpbiByYW5n
ZSgxLCAyMCldfX0pCisgICAgICAgICAgICAgICAgKHsnc29tZS10ZXN0JzogeydhdmcnOiAxMTAw
LjAsICdtZWRpYW4nOiAxMTAxLjAsICdtaW4nOiAxMDgwLjAsICdtYXgnOiAxMTIwLjAsICdzdGRl
dic6IDExLjAsICd1bml0JzogJ21zJywKKyAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyc6IFtp
IGZvciBpIGluIHJhbmdlKDEsIDIwKV19fSwgTm9uZSkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAg
ICAgICAgICBwYXNzCiAgICAgICAgICAgICBhY3R1YWxfc3Rkb3V0LCBhY3R1YWxfc3RkZXJyLCBh
Y3R1YWxfbG9ncyA9IG91dHB1dF9jYXB0dXJlLnJlc3RvcmVfb3V0cHV0KCkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChhY3R1YWxfc3Rkb3V0LCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChhY3R1YWxfc3RkZXJyLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfbG9n
cywgJ1JFU1VMVCBzb21lLXRlc3Q9IDExMDAuMCBtc1xubWVkaWFuPSAxMTAxLjAgbXMsIHN0ZGV2
PSAxMS4wIG1zLCBtaW49IDEwODAuMCBtcywgbWF4PSAxMTIwLjAgbXNcbicpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2xvZ3MsICcnKQogCiAKIGNsYXNzIFRlc3RQYWdlTG9hZGlu
Z1BlcmZUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weQkocmV2aXNpb24gMTM4
MTE0KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtNzYsMTEgKzc2LDIyIEBACiAKICAgICBkZWYgX3J1bl93
aXRoX2RyaXZlcihzZWxmLCBkcml2ZXIsIHRpbWVfb3V0X21zKToKICAgICAgICAgb3V0cHV0ID0g
c2VsZi5ydW5fc2luZ2xlKGRyaXZlciwgc2VsZi50ZXN0X3BhdGgoKSwgdGltZV9vdXRfbXMpCi0g
ICAgICAgIHNlbGYuX2ZpbHRlcl9zdGRlcnIob3V0cHV0KQorICAgICAgICBzZWxmLl9maWx0ZXJf
b3V0cHV0KG91dHB1dCkKICAgICAgICAgaWYgc2VsZi5ydW5fZmFpbGVkKG91dHB1dCk6CiAgICAg
ICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5wYXJzZV9vdXRwdXQob3V0
cHV0KQogCisgICAgICAgIHJlc3VsdHMsIGRlc2NyaXB0aW9uID0gc2VsZi5wYXJzZV9vdXRwdXQo
b3V0cHV0KQorICAgICAgICBpZiBub3QgcmVzdWx0czoKKyAgICAgICAgICAgIHJldHVybiBOb25l
CisKKyAgICAgICAgaWYgbm90IHNlbGYuX3BvcnQuZ2V0X29wdGlvbigncHJvZmlsZScpOgorICAg
ICAgICAgICAgaWYgZGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdERVND
UklQVElPTjogJXMnICUgZGVzY3JpcHRpb24pCisgICAgICAgICAgICBmb3IgcmVzdWx0X25hbWUg
aW4gc29ydGVkKHJlc3VsdHMua2V5cygpKToKKyAgICAgICAgICAgICAgICBzZWxmLm91dHB1dF9z
dGF0aXN0aWNzKHJlc3VsdF9uYW1lLCByZXN1bHRzW3Jlc3VsdF9uYW1lXSkKKworICAgICAgICBy
ZXR1cm4gcmVzdWx0cworCiAgICAgZGVmIHJ1bl9zaW5nbGUoc2VsZiwgZHJpdmVyLCB0ZXN0X3Bh
dGgsIHRpbWVfb3V0X21zLCBzaG91bGRfcnVuX3BpeGVsX3Rlc3Q9RmFsc2UpOgogICAgICAgICBy
ZXR1cm4gZHJpdmVyLnJ1bl90ZXN0KERyaXZlcklucHV0KHRlc3RfcGF0aCwgdGltZV9vdXRfbXMs
IGltYWdlX2hhc2g9Tm9uZSwgc2hvdWxkX3J1bl9waXhlbF90ZXN0PXNob3VsZF9ydW5fcGl4ZWxf
dGVzdCksIHN0b3Bfd2hlbl9kb25lPUZhbHNlKQogCkBAIC0xMTYsMTIgKzEyNyw2IEBACiAgICAg
ZGVmIF9zaG91bGRfaWdub3JlX2xpbmVfaW5fc3RkZXJyKHNlbGYsIGxpbmUpOgogICAgICAgICBy
ZXR1cm4gc2VsZi5fc2hvdWxkX2lnbm9yZV9saW5lKHNlbGYuX2xpbmVzX3RvX2lnbm9yZV9pbl9z
dGRlcnIsIGxpbmUpCiAKLSAgICBkZWYgX2ZpbHRlcl9zdGRlcnIoc2VsZiwgb3V0cHV0KToKLSAg
ICAgICAgaWYgbm90IG91dHB1dC5lcnJvcjoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBm
aWx0ZXJlZF9lcnJvciA9ICdcbicuam9pbihbbGluZSBmb3IgbGluZSBpbiByZS5zcGxpdCgnXG4n
LCBvdXRwdXQuZXJyb3IpIGlmIG5vdCBzZWxmLl9zaG91bGRfaWdub3JlX2xpbmVfaW5fc3RkZXJy
KGxpbmUpXSkKLSAgICAgICAgb3V0cHV0LmVycm9yID0gZmlsdGVyZWRfZXJyb3IgaWYgZmlsdGVy
ZWRfZXJyb3IgZWxzZSBOb25lCi0KICAgICBfbGluZXNfdG9faWdub3JlX2luX3BhcnNlcl9yZXN1
bHQgPSBbCiAgICAgICAgIHJlLmNvbXBpbGUocideUnVubmluZyBcZCsgdGltZXMkJyksCiAgICAg
ICAgIHJlLmNvbXBpbGUocideSWdub3Jpbmcgd2FybS11cCAnKSwKQEAgLTE0Miw2ICsxNDcsMTMg
QEAKICAgICBkZWYgX3Nob3VsZF9pZ25vcmVfbGluZV9pbl9wYXJzZXJfdGVzdF9yZXN1bHQoc2Vs
ZiwgbGluZSk6CiAgICAgICAgIHJldHVybiBzZWxmLl9zaG91bGRfaWdub3JlX2xpbmUoc2VsZi5f
bGluZXNfdG9faWdub3JlX2luX3BhcnNlcl9yZXN1bHQsIGxpbmUpCiAKKyAgICBkZWYgX2ZpbHRl
cl9vdXRwdXQoc2VsZiwgb3V0cHV0KToKKyAgICAgICAgaWYgb3V0cHV0LmVycm9yOgorICAgICAg
ICAgICAgZmlsdGVyZWRfZXJyb3IgPSAnXG4nLmpvaW4oW2xpbmUgZm9yIGxpbmUgaW4gcmUuc3Bs
aXQoJ1xuJywgb3V0cHV0LmVycm9yKSBpZiBub3Qgc2VsZi5fc2hvdWxkX2lnbm9yZV9saW5lX2lu
X3N0ZGVycihsaW5lKV0pCisgICAgICAgICAgICBvdXRwdXQuZXJyb3IgPSBmaWx0ZXJlZF9lcnJv
ciBpZiBmaWx0ZXJlZF9lcnJvciBlbHNlIE5vbmUKKyAgICAgICAgaWYgb3V0cHV0LnRleHQ6Cisg
ICAgICAgICAgICBvdXRwdXQudGV4dCA9ICdcbicuam9pbihbbGluZSBmb3IgbGluZSBpbiByZS5z
cGxpdCgnXG4nLCBvdXRwdXQudGV4dCkgaWYgbm90IHNlbGYuX3Nob3VsZF9pZ25vcmVfbGluZV9p
bl9wYXJzZXJfdGVzdF9yZXN1bHQobGluZSldKQorCiAgICAgX2Rlc2NyaXB0aW9uX3JlZ2V4ID0g
cmUuY29tcGlsZShyJ15EZXNjcmlwdGlvbjogKD9QPGRlc2NyaXB0aW9uPi4qKSQnLCByZS5JR05P
UkVDQVNFKQogICAgIF9yZXN1bHRfY2xhc3NlcyA9IFsnVGltZScsICdKUyBIZWFwJywgJ01hbGxv
YyddCiAgICAgX3Jlc3VsdF9jbGFzc19yZWdleCA9IHJlLmNvbXBpbGUocideKD9QPHJlc3VsdGNs
YXNzPicgKyByJ3wnLmpvaW4oX3Jlc3VsdF9jbGFzc2VzKSArICcpOicpCkBAIC0xNTEsMTYgKzE2
MywxOCBAQAogICAgIGRlZiBwYXJzZV9vdXRwdXQoc2VsZiwgb3V0cHV0KToKICAgICAgICAgdGVz
dF9mYWlsZWQgPSBGYWxzZQogICAgICAgICByZXN1bHRzID0ge30KLSAgICAgICAgb3JkZXJlZF9y
ZXN1bHRzX2tleXMgPSBbXQogICAgICAgICB0ZXN0X25hbWUgPSByZS5zdWIocidcLlx3KyQnLCAn
Jywgc2VsZi5fdGVzdF9uYW1lKQotICAgICAgICBkZXNjcmlwdGlvbl9zdHJpbmcgPSAiIgorICAg
ICAgICBkZXNjcmlwdGlvbiA9IE5vbmUKICAgICAgICAgcmVzdWx0X2NsYXNzID0gIiIKICAgICAg
ICAgZm9yIGxpbmUgaW4gcmUuc3BsaXQoJ1xuJywgb3V0cHV0LnRleHQpOgotICAgICAgICAgICAg
ZGVzY3JpcHRpb24gPSBzZWxmLl9kZXNjcmlwdGlvbl9yZWdleC5tYXRjaChsaW5lKQotICAgICAg
ICAgICAgaWYgZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRpb25fc3RyaW5n
ID0gZGVzY3JpcHRpb24uZ3JvdXAoJ2Rlc2NyaXB0aW9uJykKKyAgICAgICAgICAgIGlmIG5vdCBs
aW5lOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKKyAgICAgICAgICAgIGRlc2NyaXB0aW9u
X21hdGNoID0gc2VsZi5fZGVzY3JpcHRpb25fcmVnZXgubWF0Y2gobGluZSkKKyAgICAgICAgICAg
IGlmIGRlc2NyaXB0aW9uX21hdGNoOgorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVz
Y3JpcHRpb24uZ3JvdXAoJ2Rlc2NyaXB0aW9uJykKKyAgICAgICAgICAgICAgICBjb250aW51ZQor
CiAgICAgICAgICAgICByZXN1bHRfY2xhc3NfbWF0Y2ggPSBzZWxmLl9yZXN1bHRfY2xhc3NfcmVn
ZXgubWF0Y2gobGluZSkKICAgICAgICAgICAgIGlmIHJlc3VsdF9jbGFzc19tYXRjaDoKICAgICAg
ICAgICAgICAgICByZXN1bHRfY2xhc3MgPSByZXN1bHRfY2xhc3NfbWF0Y2guZ3JvdXAoJ3Jlc3Vs
dGNsYXNzJykKQEAgLTE3NywzNyArMTkxLDI1IEBACiAgICAgICAgICAgICAgICAgbmFtZSA9IHRl
c3RfbmFtZQogICAgICAgICAgICAgICAgIGlmIHJlc3VsdF9jbGFzcyAhPSAnVGltZSc6CiAgICAg
ICAgICAgICAgICAgICAgIG5hbWUgKz0gJzonICsgcmVzdWx0X2NsYXNzLnJlcGxhY2UoJyAnLCAn
JykKLSAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBvcmRlcmVkX3Jlc3VsdHNfa2V5czoK
LSAgICAgICAgICAgICAgICAgICAgb3JkZXJlZF9yZXN1bHRzX2tleXMuYXBwZW5kKG5hbWUpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0cy5zZXRkZWZhdWx0KG5hbWUsIHt9KQogICAgICAgICAgICAg
ICAgIHJlc3VsdHNbbmFtZV1bJ3VuaXQnXSA9IHVuaXQKICAgICAgICAgICAgICAgICByZXN1bHRz
W25hbWVdW2tleV0gPSB2YWx1ZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl9zaG91bGRfaWdub3JlX2xpbmVfaW5fcGFyc2VyX3Rlc3RfcmVzdWx0
KGxpbmUpOgotICAgICAgICAgICAgICAgIHRlc3RfZmFpbGVkID0gVHJ1ZQotICAgICAgICAgICAg
ICAgIF9sb2cuZXJyb3IobGluZSkKKyAgICAgICAgICAgIHRlc3RfZmFpbGVkID0gVHJ1ZQorICAg
ICAgICAgICAgX2xvZy5lcnJvcihsaW5lKQogCiAgICAgICAgIGlmIHRlc3RfZmFpbGVkOgotICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lCiAKLSAg
ICAgICAgaWYgc2V0KHNlbGYuX3N0YXRpc3RpY3Nfa2V5cykgIT0gc2V0KHJlc3VsdHNbdGVzdF9u
YW1lXS5rZXlzKCkgKyBbJ3ZhbHVlcyddKToKLSAgICAgICAgICAgICMgdmFsdWVzIGlzIG5vdCBw
cm92aWRlZCBieSBEcm9tYWVvIHRlc3RzLgorICAgICAgICBpZiBzZXQoc2VsZi5fc3RhdGlzdGlj
c19rZXlzKSAhPSBzZXQocmVzdWx0c1t0ZXN0X25hbWVdLmtleXMoKSk6CiAgICAgICAgICAgICBf
bG9nLmVycm9yKCJUaGUgdGVzdCBkaWRuJ3QgcmVwb3J0IGFsbCBzdGF0aXN0aWNzLiIpCi0gICAg
ICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKIAotICAg
ICAgICBpZiBub3Qgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdwcm9maWxlJyk6Ci0gICAgICAgICAg
ICBmb3IgcmVzdWx0X25hbWUgaW4gb3JkZXJlZF9yZXN1bHRzX2tleXM6Ci0gICAgICAgICAgICAg
ICAgaWYgcmVzdWx0X25hbWUgPT0gdGVzdF9uYW1lOgotICAgICAgICAgICAgICAgICAgICBzZWxm
Lm91dHB1dF9zdGF0aXN0aWNzKHJlc3VsdF9uYW1lLCByZXN1bHRzW3Jlc3VsdF9uYW1lXSwgZGVz
Y3JpcHRpb25fc3RyaW5nKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
ICAgIHNlbGYub3V0cHV0X3N0YXRpc3RpY3MocmVzdWx0X25hbWUsIHJlc3VsdHNbcmVzdWx0X25h
bWVdKQotICAgICAgICByZXR1cm4gcmVzdWx0cworICAgICAgICByZXR1cm4gcmVzdWx0cywgZGVz
Y3JpcHRpb24KIAotICAgIGRlZiBvdXRwdXRfc3RhdGlzdGljcyhzZWxmLCB0ZXN0X25hbWUsIHJl
c3VsdHMsIGRlc2NyaXB0aW9uX3N0cmluZz1Ob25lKToKKyAgICBkZWYgb3V0cHV0X3N0YXRpc3Rp
Y3Moc2VsZiwgdGVzdF9uYW1lLCByZXN1bHRzKToKICAgICAgICAgdW5pdCA9IHJlc3VsdHNbJ3Vu
aXQnXQotICAgICAgICBpZiBkZXNjcmlwdGlvbl9zdHJpbmc6Ci0gICAgICAgICAgICBfbG9nLmlu
Zm8oJ0RFU0NSSVBUSU9OOiAlcycgJSBkZXNjcmlwdGlvbl9zdHJpbmcpCiAgICAgICAgIF9sb2cu
aW5mbygnUkVTVUxUICVzPSAlcyAlcycgJSAodGVzdF9uYW1lLnJlcGxhY2UoJzonLCAnOiAnKS5y
ZXBsYWNlKCcvJywgJzogJyksIHJlc3VsdHNbJ2F2ZyddLCB1bml0KSkKICAgICAgICAgX2xvZy5p
bmZvKCcsICcuam9pbihbJyVzPSAlcyAlcycgJSAoa2V5LCByZXN1bHRzW2tleV0sIHVuaXQpIGZv
ciBrZXkgaW4gc2VsZi5fc3RhdGlzdGljc19rZXlzWzE6NV1dKSkKIApAQCAtMjE4LDcgKzIyMCwx
NSBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB0ZXN0X25hbWUsIHRlc3RfcGF0aCk6
CiAgICAgICAgIHN1cGVyKENocm9taXVtU3R5bGVQZXJmVGVzdCwgc2VsZikuX19pbml0X18ocG9y
dCwgdGVzdF9uYW1lLCB0ZXN0X3BhdGgpCiAKLSAgICBkZWYgcGFyc2Vfb3V0cHV0KHNlbGYsIG91
dHB1dCk6CisgICAgZGVmIF9ydW5fd2l0aF9kcml2ZXIoc2VsZiwgZHJpdmVyLCB0aW1lX291dF9t
cyk6CisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3NpbmdsZShkcml2ZXIsIHNlbGYudGVzdF9w
YXRoKCksIHRpbWVfb3V0X21zKQorICAgICAgICBzZWxmLl9maWx0ZXJfb3V0cHV0KG91dHB1dCkK
KyAgICAgICAgaWYgc2VsZi5ydW5fZmFpbGVkKG91dHB1dCk6CisgICAgICAgICAgICByZXR1cm4g
Tm9uZQorCisgICAgICAgIHJldHVybiBzZWxmLnBhcnNlX2FuZF9sb2dfb3V0cHV0KG91dHB1dCkK
KworICAgIGRlZiBwYXJzZV9hbmRfbG9nX291dHB1dChzZWxmLCBvdXRwdXQpOgogICAgICAgICB0
ZXN0X2ZhaWxlZCA9IEZhbHNlCiAgICAgICAgIHJlc3VsdHMgPSB7fQogICAgICAgICBmb3IgbGlu
ZSBpbiByZS5zcGxpdCgnXG4nLCBvdXRwdXQudGV4dCk6CkBAIC0yOTEsNyArMzAxLDcgQEAKIAog
ICAgICAgICBmb3IgcmVzdWx0X2NsYXNzIGluIHJlc3VsdHMua2V5cygpOgogICAgICAgICAgICAg
cmVzdWx0c1tyZXN1bHRfY2xhc3NdLnVwZGF0ZShzZWxmLmNhbGN1bGF0ZV9zdGF0aXN0aWNzKHJl
c3VsdHNbcmVzdWx0X2NsYXNzXVsndmFsdWVzJ10pKQotICAgICAgICAgICAgc2VsZi5vdXRwdXRf
c3RhdGlzdGljcyhyZXN1bHRfY2xhc3MsIHJlc3VsdHNbcmVzdWx0X2NsYXNzXSwgJycpCisgICAg
ICAgICAgICBzZWxmLm91dHB1dF9zdGF0aXN0aWNzKHJlc3VsdF9jbGFzcywgcmVzdWx0c1tyZXN1
bHRfY2xhc3NdKQogCiAgICAgICAgIHJldHVybiByZXN1bHRzCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180098</attachid>
            <date>2012-12-18 23:09:48 -0800</date>
            <delta_ts>2012-12-19 10:50:35 -0800</delta_ts>
            <desc>Added the missing change log</desc>
            <filename>fix105391b</filename>
            <type>text/plain</type>
            <size>11781</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzODExOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMxIEBACisyMDEyLTEyLTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIFBlcmZUZXN0LnBhcnNlX291dHB1dCBkb2VzIHRvbyBtdWNoCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUzOTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgY29kZSB0byBm
aWx0ZXIgbGluZXMgaW50byBQZXJmVGVzdC5fZmlsdGVyX291dHB1dCwgd2hpY2ggaGFzIGJlZW4g
cmVuYW1lZCBmcm9tIF9maWx0ZXJfc3RkZXJyLgorICAgICAgICBBbHNvIG1vdmVkIHRoZSBjb2Rl
IHRvIG91dHB1dCB0ZXN0IHJlc3VsdHMgaW50byBQZXJmVGVzdC5fcnVuX3dpdGhfZHJpdmVyLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5w
eToKKyAgICAgICAgKFBlcmZUZXN0Ll9ydW5fd2l0aF9kcml2ZXIpOiBNb3ZlZCB0aGUgY29kZSB0
byBvdXRwdXQgdGVzdCBkZXNjcmlwdGlvbiBhbmQgdGVzdCByZXN1bHRzLgorICAgICAgICAoUGVy
ZlRlc3QuX2ZpbHRlcl9vdXRwdXQpOiBNb3ZlZCBhbmQgcmVuYW1lZCBmcm9tIFBlcmZUZXN0Ll9m
aWx0ZXJfc3RkZXJyLgorICAgICAgICAoUGVyZlRlc3QucGFyc2Vfb3V0cHV0KTogUmVtb3ZlZCB0
aGUgY29kZSB0byBvdXRwdXQgdGVzdCByZXN1bHRzLiBSZXR1cm4gdGVzdCByZXN1bHRzIGFuZCBk
ZXNjcmlwdGlvbgorICAgICAgICByZXNwZWN0aXZlbHkuIEFsc28gcmVtb3ZlZCB0aGUgY29kZSB0
aGF0IGFsbG93ZWQgc29tZSB0ZXN0cyB0byBvbWl0IHZhbHVlcyBzaW5jZSBhbGwgdGVzdHMgcmVw
b3J0IGVhY2gKKyAgICAgICAgaXRlcmF0aW9uIG5vdyBzaW5jZSByMTM2NDkyLgorICAgICAgICAo
UGVyZlRlc3Qub3V0cHV0X3N0YXRpc3RpY3MpOiBSZW1vdmVkIHRoZSBjb2RlIHRvIHByaW50IHRl
c3QgZGVzY3JpcHRpb24sIG5vdyBkb25lIGluIF9ydW5fd2l0aF9kcml2ZXIuCisgICAgICAgIChD
aHJvbWl1bVN0eWxlUGVyZlRlc3QuX3J1bl93aXRoX2RyaXZlcik6IEFkZGVkLiBDaHJvbWl1bSBz
dHlsZSB0ZXN0cyBhcmUgc3VmZmljaWVudGx5IGRpZmZlcmVudCBmcm9tCisgICAgICAgIHJlZ3Vs
YXIgUGVyZlRlc3QgdGhhdCBpdCBkb2Vzbid0IG1ha2UgbXVjaCBzZW5zZSB0byBzaGFyZSBfcnVu
X3dpdGhfZHJpdmVyLiBCdXQgcmVhbGx5LCB3ZSBzaG91bGQganVzdAorICAgICAgICBnZXQgcmlk
IG9mIHRoaXMgdHlwZSBvZiB0ZXN0IGFsdG9nZXRoZXIgaW4gZmF2b3Igb2YgcmVndWxhciBwZXJm
b3JtYW5jZSB0ZXN0cyB0aGF0IHVzZXMgcnVubmVyLmpzLgorICAgICAgICAoQ2hyb21pdW1TdHls
ZVBlcmZUZXN0LnBhcnNlX2FuZF9sb2dfb3V0cHV0KTogUmVuYW1lZCBmcm9tIHBhcnNlX291dHB1
dC4KKyAgICAgICAgKFBhZ2VMb2FkaW5nUGVyZlRlc3QuX3J1bl93aXRoX2RyaXZlcik6IFJlbW92
ZWQgdGhlIGV4cGxpY2l0ICcnIGZvciB0aGUgdGVzdCBkZXNjcmlwdGlvbi4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAoTWFpblRlc3QudGVzdF9wYXJzZV9vdXRwdXQpOiBSZW1vdmVkIHRoZSBleHBlY3Rl
ZCBsb2dzIHNpbmNlIHBhcnNlX291dHB1dCBubyBsb25nZXIgcHJpbnRzIG91dCByZXN1bHRzLgor
ICAgICAgICBBbHNvIGFkZGVkIGEgY2FsbCB0byBfZmlsdGVyX291dHB1dCBzaW5jZSBwYXJzZV9v
dXRwdXQgZG9lc24ndCBmaWx0ZXIgdGhlIG91dHB1dCB0ZXh0IGFueW1vcmUuCisgICAgICAgIChN
YWluVGVzdC50ZXN0X3BhcnNlX291dHB1dF93aXRoX2ZhaWxpbmdfbGluZSk6IERpdHRvLgorICAg
ICAgICAoTWFpblRlc3QudGVzdF9wYXJzZV9vdXRwdXRfd2l0aF9zdWJ0ZXN0cyk6IERpdHRvLgor
CiAyMDEyLTEyLTE4ICBBbGljZSBMaXUgIDxhbGljZS5saXVAYXBwbGUuY29tPgogCiAgICAgICAg
IFRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUxMDYK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3Rf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3Jt
YW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weQkocmV2aXNpb24gMTM4MTE0KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtNjMsMTUgKzYzLDE2IEBACiAgICAgICAgIG91dHB1dF9jYXB0
dXJlLmNhcHR1cmVfb3V0cHV0KCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdGVzdCA9IFBl
cmZUZXN0KE1vY2tQb3J0KCksICdzb21lLXRlc3QnLCAnL3BhdGgvc29tZS1kaXIvc29tZS10ZXN0
JykKKyAgICAgICAgICAgIHRlc3QuX2ZpbHRlcl9vdXRwdXQob3V0cHV0KQogICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCh0ZXN0LnBhcnNlX291dHB1dChvdXRwdXQpLAotICAgICAgICAgICAg
ICAgIHsnc29tZS10ZXN0JzogeydhdmcnOiAxMTAwLjAsICdtZWRpYW4nOiAxMTAxLjAsICdtaW4n
OiAxMDgwLjAsICdtYXgnOiAxMTIwLjAsICdzdGRldic6IDExLjAsICd1bml0JzogJ21zJywKLSAg
ICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyc6IFtpIGZvciBpIGluIHJhbmdlKDEsIDIwKV19fSkK
KyAgICAgICAgICAgICAgICAoeydzb21lLXRlc3QnOiB7J2F2Zyc6IDExMDAuMCwgJ21lZGlhbic6
IDExMDEuMCwgJ21pbic6IDEwODAuMCwgJ21heCc6IDExMjAuMCwgJ3N0ZGV2JzogMTEuMCwgJ3Vu
aXQnOiAnbXMnLAorICAgICAgICAgICAgICAgICAgICAndmFsdWVzJzogW2kgZm9yIGkgaW4gcmFu
Z2UoMSwgMjApXX19LCBOb25lKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHBhc3MK
ICAgICAgICAgICAgIGFjdHVhbF9zdGRvdXQsIGFjdHVhbF9zdGRlcnIsIGFjdHVhbF9sb2dzID0g
b3V0cHV0X2NhcHR1cmUucmVzdG9yZV9vdXRwdXQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGFjdHVhbF9zdGRvdXQsICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9zdGRl
cnIsICcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9sb2dzLCAnUkVTVUxUIHNv
bWUtdGVzdD0gMTEwMC4wIG1zXG5tZWRpYW49IDExMDEuMCBtcywgc3RkZXY9IDExLjAgbXMsIG1p
bj0gMTA4MC4wIG1zLCBtYXg9IDExMjAuMCBtc1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChhY3R1YWxfbG9ncywgJycpCiAKICAgICBkZWYgdGVzdF9wYXJzZV9vdXRwdXRfd2l0aF9mYWls
aW5nX2xpbmUoc2VsZik6CiAgICAgICAgIG91dHB1dCA9IERyaXZlck91dHB1dCgnXG4nLmpvaW4o
WwpAQCAtOTEsNyArOTIsOCBAQAogICAgICAgICBvdXRwdXRfY2FwdHVyZS5jYXB0dXJlX291dHB1
dCgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRlc3QgPSBQZXJmVGVzdChNb2NrUG9ydCgp
LCAnc29tZS10ZXN0JywgJy9wYXRoL3NvbWUtZGlyL3NvbWUtdGVzdCcpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHRlc3QucGFyc2Vfb3V0cHV0KG91dHB1dCksIE5vbmUpCisgICAgICAg
ICAgICB0ZXN0Ll9maWx0ZXJfb3V0cHV0KG91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwodGVzdC5wYXJzZV9vdXRwdXQob3V0cHV0KSwgKE5vbmUsIE5vbmUpKQogICAgICAgICBm
aW5hbGx5OgogICAgICAgICAgICAgYWN0dWFsX3N0ZG91dCwgYWN0dWFsX3N0ZGVyciwgYWN0dWFs
X2xvZ3MgPSBvdXRwdXRfY2FwdHVyZS5yZXN0b3JlX291dHB1dCgpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYWN0dWFsX3N0ZG91dCwgJycpCkBAIC0xMzMsMTUgKzEzNSwxNiBAQAogICAgICAg
ICBvdXRwdXRfY2FwdHVyZS5jYXB0dXJlX291dHB1dCgpCiAgICAgICAgIHRyeToKICAgICAgICAg
ICAgIHRlc3QgPSBQZXJmVGVzdChNb2NrUG9ydCgpLCAnc29tZS10ZXN0JywgJy9wYXRoL3NvbWUt
ZGlyL3NvbWUtdGVzdCcpCisgICAgICAgICAgICB0ZXN0Ll9maWx0ZXJfb3V0cHV0KG91dHB1dCkK
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdC5wYXJzZV9vdXRwdXQob3V0cHV0KSwK
LSAgICAgICAgICAgICAgICB7J3NvbWUtdGVzdCc6IHsnYXZnJzogMTEwMC4wLCAnbWVkaWFuJzog
MTEwMS4wLCAnbWluJzogMTA4MC4wLCAnbWF4JzogMTEyMC4wLCAnc3RkZXYnOiAxMS4wLCAndW5p
dCc6ICdtcycsCi0gICAgICAgICAgICAgICAgICAgICd2YWx1ZXMnOiBbaSBmb3IgaSBpbiByYW5n
ZSgxLCAyMCldfX0pCisgICAgICAgICAgICAgICAgKHsnc29tZS10ZXN0JzogeydhdmcnOiAxMTAw
LjAsICdtZWRpYW4nOiAxMTAxLjAsICdtaW4nOiAxMDgwLjAsICdtYXgnOiAxMTIwLjAsICdzdGRl
dic6IDExLjAsICd1bml0JzogJ21zJywKKyAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyc6IFtp
IGZvciBpIGluIHJhbmdlKDEsIDIwKV19fSwgTm9uZSkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAg
ICAgICAgICBwYXNzCiAgICAgICAgICAgICBhY3R1YWxfc3Rkb3V0LCBhY3R1YWxfc3RkZXJyLCBh
Y3R1YWxfbG9ncyA9IG91dHB1dF9jYXB0dXJlLnJlc3RvcmVfb3V0cHV0KCkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChhY3R1YWxfc3Rkb3V0LCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChhY3R1YWxfc3RkZXJyLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfbG9n
cywgJ1JFU1VMVCBzb21lLXRlc3Q9IDExMDAuMCBtc1xubWVkaWFuPSAxMTAxLjAgbXMsIHN0ZGV2
PSAxMS4wIG1zLCBtaW49IDEwODAuMCBtcywgbWF4PSAxMTIwLjAgbXNcbicpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2xvZ3MsICcnKQogCiAKIGNsYXNzIFRlc3RQYWdlTG9hZGlu
Z1BlcmZUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weQkocmV2aXNpb24gMTM4
MTE0KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtNzYsMTEgKzc2LDIyIEBACiAKICAgICBkZWYgX3J1bl93
aXRoX2RyaXZlcihzZWxmLCBkcml2ZXIsIHRpbWVfb3V0X21zKToKICAgICAgICAgb3V0cHV0ID0g
c2VsZi5ydW5fc2luZ2xlKGRyaXZlciwgc2VsZi50ZXN0X3BhdGgoKSwgdGltZV9vdXRfbXMpCi0g
ICAgICAgIHNlbGYuX2ZpbHRlcl9zdGRlcnIob3V0cHV0KQorICAgICAgICBzZWxmLl9maWx0ZXJf
b3V0cHV0KG91dHB1dCkKICAgICAgICAgaWYgc2VsZi5ydW5fZmFpbGVkKG91dHB1dCk6CiAgICAg
ICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5wYXJzZV9vdXRwdXQob3V0
cHV0KQogCisgICAgICAgIHJlc3VsdHMsIGRlc2NyaXB0aW9uID0gc2VsZi5wYXJzZV9vdXRwdXQo
b3V0cHV0KQorICAgICAgICBpZiBub3QgcmVzdWx0czoKKyAgICAgICAgICAgIHJldHVybiBOb25l
CisKKyAgICAgICAgaWYgbm90IHNlbGYuX3BvcnQuZ2V0X29wdGlvbigncHJvZmlsZScpOgorICAg
ICAgICAgICAgaWYgZGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdERVND
UklQVElPTjogJXMnICUgZGVzY3JpcHRpb24pCisgICAgICAgICAgICBmb3IgcmVzdWx0X25hbWUg
aW4gc29ydGVkKHJlc3VsdHMua2V5cygpKToKKyAgICAgICAgICAgICAgICBzZWxmLm91dHB1dF9z
dGF0aXN0aWNzKHJlc3VsdF9uYW1lLCByZXN1bHRzW3Jlc3VsdF9uYW1lXSkKKworICAgICAgICBy
ZXR1cm4gcmVzdWx0cworCiAgICAgZGVmIHJ1bl9zaW5nbGUoc2VsZiwgZHJpdmVyLCB0ZXN0X3Bh
dGgsIHRpbWVfb3V0X21zLCBzaG91bGRfcnVuX3BpeGVsX3Rlc3Q9RmFsc2UpOgogICAgICAgICBy
ZXR1cm4gZHJpdmVyLnJ1bl90ZXN0KERyaXZlcklucHV0KHRlc3RfcGF0aCwgdGltZV9vdXRfbXMs
IGltYWdlX2hhc2g9Tm9uZSwgc2hvdWxkX3J1bl9waXhlbF90ZXN0PXNob3VsZF9ydW5fcGl4ZWxf
dGVzdCksIHN0b3Bfd2hlbl9kb25lPUZhbHNlKQogCkBAIC0xMTYsMTIgKzEyNyw2IEBACiAgICAg
ZGVmIF9zaG91bGRfaWdub3JlX2xpbmVfaW5fc3RkZXJyKHNlbGYsIGxpbmUpOgogICAgICAgICBy
ZXR1cm4gc2VsZi5fc2hvdWxkX2lnbm9yZV9saW5lKHNlbGYuX2xpbmVzX3RvX2lnbm9yZV9pbl9z
dGRlcnIsIGxpbmUpCiAKLSAgICBkZWYgX2ZpbHRlcl9zdGRlcnIoc2VsZiwgb3V0cHV0KToKLSAg
ICAgICAgaWYgbm90IG91dHB1dC5lcnJvcjoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBm
aWx0ZXJlZF9lcnJvciA9ICdcbicuam9pbihbbGluZSBmb3IgbGluZSBpbiByZS5zcGxpdCgnXG4n
LCBvdXRwdXQuZXJyb3IpIGlmIG5vdCBzZWxmLl9zaG91bGRfaWdub3JlX2xpbmVfaW5fc3RkZXJy
KGxpbmUpXSkKLSAgICAgICAgb3V0cHV0LmVycm9yID0gZmlsdGVyZWRfZXJyb3IgaWYgZmlsdGVy
ZWRfZXJyb3IgZWxzZSBOb25lCi0KICAgICBfbGluZXNfdG9faWdub3JlX2luX3BhcnNlcl9yZXN1
bHQgPSBbCiAgICAgICAgIHJlLmNvbXBpbGUocideUnVubmluZyBcZCsgdGltZXMkJyksCiAgICAg
ICAgIHJlLmNvbXBpbGUocideSWdub3Jpbmcgd2FybS11cCAnKSwKQEAgLTE0Miw2ICsxNDcsMTMg
QEAKICAgICBkZWYgX3Nob3VsZF9pZ25vcmVfbGluZV9pbl9wYXJzZXJfdGVzdF9yZXN1bHQoc2Vs
ZiwgbGluZSk6CiAgICAgICAgIHJldHVybiBzZWxmLl9zaG91bGRfaWdub3JlX2xpbmUoc2VsZi5f
bGluZXNfdG9faWdub3JlX2luX3BhcnNlcl9yZXN1bHQsIGxpbmUpCiAKKyAgICBkZWYgX2ZpbHRl
cl9vdXRwdXQoc2VsZiwgb3V0cHV0KToKKyAgICAgICAgaWYgb3V0cHV0LmVycm9yOgorICAgICAg
ICAgICAgZmlsdGVyZWRfZXJyb3IgPSAnXG4nLmpvaW4oW2xpbmUgZm9yIGxpbmUgaW4gcmUuc3Bs
aXQoJ1xuJywgb3V0cHV0LmVycm9yKSBpZiBub3Qgc2VsZi5fc2hvdWxkX2lnbm9yZV9saW5lX2lu
X3N0ZGVycihsaW5lKV0pCisgICAgICAgICAgICBvdXRwdXQuZXJyb3IgPSBmaWx0ZXJlZF9lcnJv
ciBpZiBmaWx0ZXJlZF9lcnJvciBlbHNlIE5vbmUKKyAgICAgICAgaWYgb3V0cHV0LnRleHQ6Cisg
ICAgICAgICAgICBvdXRwdXQudGV4dCA9ICdcbicuam9pbihbbGluZSBmb3IgbGluZSBpbiByZS5z
cGxpdCgnXG4nLCBvdXRwdXQudGV4dCkgaWYgbm90IHNlbGYuX3Nob3VsZF9pZ25vcmVfbGluZV9p
bl9wYXJzZXJfdGVzdF9yZXN1bHQobGluZSldKQorCiAgICAgX2Rlc2NyaXB0aW9uX3JlZ2V4ID0g
cmUuY29tcGlsZShyJ15EZXNjcmlwdGlvbjogKD9QPGRlc2NyaXB0aW9uPi4qKSQnLCByZS5JR05P
UkVDQVNFKQogICAgIF9yZXN1bHRfY2xhc3NlcyA9IFsnVGltZScsICdKUyBIZWFwJywgJ01hbGxv
YyddCiAgICAgX3Jlc3VsdF9jbGFzc19yZWdleCA9IHJlLmNvbXBpbGUocideKD9QPHJlc3VsdGNs
YXNzPicgKyByJ3wnLmpvaW4oX3Jlc3VsdF9jbGFzc2VzKSArICcpOicpCkBAIC0xNTEsMTYgKzE2
MywxOCBAQAogICAgIGRlZiBwYXJzZV9vdXRwdXQoc2VsZiwgb3V0cHV0KToKICAgICAgICAgdGVz
dF9mYWlsZWQgPSBGYWxzZQogICAgICAgICByZXN1bHRzID0ge30KLSAgICAgICAgb3JkZXJlZF9y
ZXN1bHRzX2tleXMgPSBbXQogICAgICAgICB0ZXN0X25hbWUgPSByZS5zdWIocidcLlx3KyQnLCAn
Jywgc2VsZi5fdGVzdF9uYW1lKQotICAgICAgICBkZXNjcmlwdGlvbl9zdHJpbmcgPSAiIgorICAg
ICAgICBkZXNjcmlwdGlvbiA9IE5vbmUKICAgICAgICAgcmVzdWx0X2NsYXNzID0gIiIKICAgICAg
ICAgZm9yIGxpbmUgaW4gcmUuc3BsaXQoJ1xuJywgb3V0cHV0LnRleHQpOgotICAgICAgICAgICAg
ZGVzY3JpcHRpb24gPSBzZWxmLl9kZXNjcmlwdGlvbl9yZWdleC5tYXRjaChsaW5lKQotICAgICAg
ICAgICAgaWYgZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRpb25fc3RyaW5n
ID0gZGVzY3JpcHRpb24uZ3JvdXAoJ2Rlc2NyaXB0aW9uJykKKyAgICAgICAgICAgIGlmIG5vdCBs
aW5lOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKKyAgICAgICAgICAgIGRlc2NyaXB0aW9u
X21hdGNoID0gc2VsZi5fZGVzY3JpcHRpb25fcmVnZXgubWF0Y2gobGluZSkKKyAgICAgICAgICAg
IGlmIGRlc2NyaXB0aW9uX21hdGNoOgorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVz
Y3JpcHRpb24uZ3JvdXAoJ2Rlc2NyaXB0aW9uJykKKyAgICAgICAgICAgICAgICBjb250aW51ZQor
CiAgICAgICAgICAgICByZXN1bHRfY2xhc3NfbWF0Y2ggPSBzZWxmLl9yZXN1bHRfY2xhc3NfcmVn
ZXgubWF0Y2gobGluZSkKICAgICAgICAgICAgIGlmIHJlc3VsdF9jbGFzc19tYXRjaDoKICAgICAg
ICAgICAgICAgICByZXN1bHRfY2xhc3MgPSByZXN1bHRfY2xhc3NfbWF0Y2guZ3JvdXAoJ3Jlc3Vs
dGNsYXNzJykKQEAgLTE3NywzNyArMTkxLDI1IEBACiAgICAgICAgICAgICAgICAgbmFtZSA9IHRl
c3RfbmFtZQogICAgICAgICAgICAgICAgIGlmIHJlc3VsdF9jbGFzcyAhPSAnVGltZSc6CiAgICAg
ICAgICAgICAgICAgICAgIG5hbWUgKz0gJzonICsgcmVzdWx0X2NsYXNzLnJlcGxhY2UoJyAnLCAn
JykKLSAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBvcmRlcmVkX3Jlc3VsdHNfa2V5czoK
LSAgICAgICAgICAgICAgICAgICAgb3JkZXJlZF9yZXN1bHRzX2tleXMuYXBwZW5kKG5hbWUpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0cy5zZXRkZWZhdWx0KG5hbWUsIHt9KQogICAgICAgICAgICAg
ICAgIHJlc3VsdHNbbmFtZV1bJ3VuaXQnXSA9IHVuaXQKICAgICAgICAgICAgICAgICByZXN1bHRz
W25hbWVdW2tleV0gPSB2YWx1ZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl9zaG91bGRfaWdub3JlX2xpbmVfaW5fcGFyc2VyX3Rlc3RfcmVzdWx0
KGxpbmUpOgotICAgICAgICAgICAgICAgIHRlc3RfZmFpbGVkID0gVHJ1ZQotICAgICAgICAgICAg
ICAgIF9sb2cuZXJyb3IobGluZSkKKyAgICAgICAgICAgIHRlc3RfZmFpbGVkID0gVHJ1ZQorICAg
ICAgICAgICAgX2xvZy5lcnJvcihsaW5lKQogCiAgICAgICAgIGlmIHRlc3RfZmFpbGVkOgotICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lCiAKLSAg
ICAgICAgaWYgc2V0KHNlbGYuX3N0YXRpc3RpY3Nfa2V5cykgIT0gc2V0KHJlc3VsdHNbdGVzdF9u
YW1lXS5rZXlzKCkgKyBbJ3ZhbHVlcyddKToKLSAgICAgICAgICAgICMgdmFsdWVzIGlzIG5vdCBw
cm92aWRlZCBieSBEcm9tYWVvIHRlc3RzLgorICAgICAgICBpZiBzZXQoc2VsZi5fc3RhdGlzdGlj
c19rZXlzKSAhPSBzZXQocmVzdWx0c1t0ZXN0X25hbWVdLmtleXMoKSk6CiAgICAgICAgICAgICBf
bG9nLmVycm9yKCJUaGUgdGVzdCBkaWRuJ3QgcmVwb3J0IGFsbCBzdGF0aXN0aWNzLiIpCi0gICAg
ICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKIAotICAg
ICAgICBpZiBub3Qgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdwcm9maWxlJyk6Ci0gICAgICAgICAg
ICBmb3IgcmVzdWx0X25hbWUgaW4gb3JkZXJlZF9yZXN1bHRzX2tleXM6Ci0gICAgICAgICAgICAg
ICAgaWYgcmVzdWx0X25hbWUgPT0gdGVzdF9uYW1lOgotICAgICAgICAgICAgICAgICAgICBzZWxm
Lm91dHB1dF9zdGF0aXN0aWNzKHJlc3VsdF9uYW1lLCByZXN1bHRzW3Jlc3VsdF9uYW1lXSwgZGVz
Y3JpcHRpb25fc3RyaW5nKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
ICAgIHNlbGYub3V0cHV0X3N0YXRpc3RpY3MocmVzdWx0X25hbWUsIHJlc3VsdHNbcmVzdWx0X25h
bWVdKQotICAgICAgICByZXR1cm4gcmVzdWx0cworICAgICAgICByZXR1cm4gcmVzdWx0cywgZGVz
Y3JpcHRpb24KIAotICAgIGRlZiBvdXRwdXRfc3RhdGlzdGljcyhzZWxmLCB0ZXN0X25hbWUsIHJl
c3VsdHMsIGRlc2NyaXB0aW9uX3N0cmluZz1Ob25lKToKKyAgICBkZWYgb3V0cHV0X3N0YXRpc3Rp
Y3Moc2VsZiwgdGVzdF9uYW1lLCByZXN1bHRzKToKICAgICAgICAgdW5pdCA9IHJlc3VsdHNbJ3Vu
aXQnXQotICAgICAgICBpZiBkZXNjcmlwdGlvbl9zdHJpbmc6Ci0gICAgICAgICAgICBfbG9nLmlu
Zm8oJ0RFU0NSSVBUSU9OOiAlcycgJSBkZXNjcmlwdGlvbl9zdHJpbmcpCiAgICAgICAgIF9sb2cu
aW5mbygnUkVTVUxUICVzPSAlcyAlcycgJSAodGVzdF9uYW1lLnJlcGxhY2UoJzonLCAnOiAnKS5y
ZXBsYWNlKCcvJywgJzogJyksIHJlc3VsdHNbJ2F2ZyddLCB1bml0KSkKICAgICAgICAgX2xvZy5p
bmZvKCcsICcuam9pbihbJyVzPSAlcyAlcycgJSAoa2V5LCByZXN1bHRzW2tleV0sIHVuaXQpIGZv
ciBrZXkgaW4gc2VsZi5fc3RhdGlzdGljc19rZXlzWzE6NV1dKSkKIApAQCAtMjE4LDcgKzIyMCwx
NSBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB0ZXN0X25hbWUsIHRlc3RfcGF0aCk6
CiAgICAgICAgIHN1cGVyKENocm9taXVtU3R5bGVQZXJmVGVzdCwgc2VsZikuX19pbml0X18ocG9y
dCwgdGVzdF9uYW1lLCB0ZXN0X3BhdGgpCiAKLSAgICBkZWYgcGFyc2Vfb3V0cHV0KHNlbGYsIG91
dHB1dCk6CisgICAgZGVmIF9ydW5fd2l0aF9kcml2ZXIoc2VsZiwgZHJpdmVyLCB0aW1lX291dF9t
cyk6CisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3NpbmdsZShkcml2ZXIsIHNlbGYudGVzdF9w
YXRoKCksIHRpbWVfb3V0X21zKQorICAgICAgICBzZWxmLl9maWx0ZXJfb3V0cHV0KG91dHB1dCkK
KyAgICAgICAgaWYgc2VsZi5ydW5fZmFpbGVkKG91dHB1dCk6CisgICAgICAgICAgICByZXR1cm4g
Tm9uZQorCisgICAgICAgIHJldHVybiBzZWxmLnBhcnNlX2FuZF9sb2dfb3V0cHV0KG91dHB1dCkK
KworICAgIGRlZiBwYXJzZV9hbmRfbG9nX291dHB1dChzZWxmLCBvdXRwdXQpOgogICAgICAgICB0
ZXN0X2ZhaWxlZCA9IEZhbHNlCiAgICAgICAgIHJlc3VsdHMgPSB7fQogICAgICAgICBmb3IgbGlu
ZSBpbiByZS5zcGxpdCgnXG4nLCBvdXRwdXQudGV4dCk6CkBAIC0yOTEsNyArMzAxLDcgQEAKIAog
ICAgICAgICBmb3IgcmVzdWx0X2NsYXNzIGluIHJlc3VsdHMua2V5cygpOgogICAgICAgICAgICAg
cmVzdWx0c1tyZXN1bHRfY2xhc3NdLnVwZGF0ZShzZWxmLmNhbGN1bGF0ZV9zdGF0aXN0aWNzKHJl
c3VsdHNbcmVzdWx0X2NsYXNzXVsndmFsdWVzJ10pKQotICAgICAgICAgICAgc2VsZi5vdXRwdXRf
c3RhdGlzdGljcyhyZXN1bHRfY2xhc3MsIHJlc3VsdHNbcmVzdWx0X2NsYXNzXSwgJycpCisgICAg
ICAgICAgICBzZWxmLm91dHB1dF9zdGF0aXN0aWNzKHJlc3VsdF9jbGFzcywgcmVzdWx0c1tyZXN1
bHRfY2xhc3NdKQogCiAgICAgICAgIHJldHVybiByZXN1bHRzCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180195</attachid>
            <date>2012-12-19 10:50:37 -0800</date>
            <delta_ts>2012-12-19 11:17:16 -0800</delta_ts>
            <desc>Fixed a bug</desc>
            <filename>bug-105391-20121219104754.patch</filename>
            <type>text/plain</type>
            <size>13554</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzODE3OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM1IEBACisyMDEyLTEyLTE5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIFBlcmZUZXN0LnBhcnNlX291dHB1dCBkb2VzIHRvbyBtdWNoCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUzOTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgY29kZSB0byBm
aWx0ZXIgbGluZXMgaW50byBQZXJmVGVzdC5fZmlsdGVyX291dHB1dCwgd2hpY2ggaGFzIGJlZW4g
cmVuYW1lZCBmcm9tIF9maWx0ZXJfc3RkZXJyLgorICAgICAgICBBbHNvIG1vdmVkIHRoZSBjb2Rl
IHRvIG91dHB1dCB0ZXN0IHJlc3VsdHMgaW50byBQZXJmVGVzdC5fcnVuX3dpdGhfZHJpdmVyLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5w
eToKKyAgICAgICAgKFBlcmZUZXN0Ll9faW5pdF9fKTogQWRkZWQgX2Rlc2NyaXB0aW9uLgorICAg
ICAgICAoUGVyZlRlc3QuZGVzY3JpcHRpb24pOiBBZGRlZC4KKyAgICAgICAgKFBlcmZUZXN0Ll9y
dW5fd2l0aF9kcml2ZXIpOiBNb3ZlZCB0aGUgY29kZSB0byBvdXRwdXQgdGVzdCBkZXNjcmlwdGlv
biBhbmQgdGVzdCByZXN1bHRzLgorICAgICAgICAoUGVyZlRlc3QuX2ZpbHRlcl9vdXRwdXQpOiBN
b3ZlZCBhbmQgcmVuYW1lZCBmcm9tIFBlcmZUZXN0Ll9maWx0ZXJfc3RkZXJyLgorICAgICAgICAo
UGVyZlRlc3QucGFyc2Vfb3V0cHV0KTogUmVtb3ZlZCB0aGUgY29kZSB0byBvdXRwdXQgdGVzdCBy
ZXN1bHRzLiBSZXR1cm4gdGVzdCByZXN1bHRzIGFuZCBkZXNjcmlwdGlvbgorICAgICAgICByZXNw
ZWN0aXZlbHkuIEFsc28gcmVtb3ZlZCB0aGUgY29kZSB0aGF0IGFsbG93ZWQgc29tZSB0ZXN0cyB0
byBvbWl0IHZhbHVlcyBzaW5jZSBhbGwgdGVzdHMgcmVwb3J0IGVhY2gKKyAgICAgICAgaXRlcmF0
aW9uIG5vdyBzaW5jZSByMTM2NDkyLgorICAgICAgICAoUGVyZlRlc3Qub3V0cHV0X3N0YXRpc3Rp
Y3MpOiBSZW1vdmVkIHRoZSBjb2RlIHRvIHByaW50IHRlc3QgZGVzY3JpcHRpb24sIG5vdyBkb25l
IGluIF9ydW5fd2l0aF9kcml2ZXIuCisgICAgICAgIChDaHJvbWl1bVN0eWxlUGVyZlRlc3QuX3J1
bl93aXRoX2RyaXZlcik6IEFkZGVkLiBDaHJvbWl1bSBzdHlsZSB0ZXN0cyBhcmUgc3VmZmljaWVu
dGx5IGRpZmZlcmVudCBmcm9tCisgICAgICAgIHJlZ3VsYXIgUGVyZlRlc3QgdGhhdCBpdCBkb2Vz
bid0IG1ha2UgbXVjaCBzZW5zZSB0byBzaGFyZSBfcnVuX3dpdGhfZHJpdmVyLiBCdXQgcmVhbGx5
LCB3ZSBzaG91bGQganVzdAorICAgICAgICBnZXQgcmlkIG9mIHRoaXMgdHlwZSBvZiB0ZXN0IGFs
dG9nZXRoZXIgaW4gZmF2b3Igb2YgcmVndWxhciBwZXJmb3JtYW5jZSB0ZXN0cyB0aGF0IHVzZXMg
cnVubmVyLmpzLgorICAgICAgICAoQ2hyb21pdW1TdHlsZVBlcmZUZXN0LnBhcnNlX2FuZF9sb2df
b3V0cHV0KTogUmVuYW1lZCBmcm9tIHBhcnNlX291dHB1dC4KKyAgICAgICAgKFBhZ2VMb2FkaW5n
UGVyZlRlc3QuX3J1bl93aXRoX2RyaXZlcik6IFJlbW92ZWQgdGhlIGV4cGxpY2l0ICcnIGZvciB0
aGUgdGVzdCBkZXNjcmlwdGlvbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1h
bmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5OgorICAgICAgICAoTWFpblRlc3QudGVzdF9w
YXJzZV9vdXRwdXQpOiBSZW1vdmVkIHRoZSBleHBlY3RlZCBsb2dzIHNpbmNlIHBhcnNlX291dHB1
dCBubyBsb25nZXIgcHJpbnRzIG91dCByZXN1bHRzLgorICAgICAgICBBbHNvIGFkZGVkIGEgY2Fs
bCB0byBfZmlsdGVyX291dHB1dCBzaW5jZSBwYXJzZV9vdXRwdXQgZG9lc24ndCBmaWx0ZXIgdGhl
IG91dHB1dCB0ZXh0IGFueW1vcmUuCisgICAgICAgIChNYWluVGVzdC50ZXN0X3BhcnNlX291dHB1
dF93aXRoX2ZhaWxpbmdfbGluZSk6IEFkZGVkIGEgY2FsbCB0byBfZmlsdGVyX291dHB1dC4gQWxz
byBhZGRlZCAnLCcgYWZ0ZXIgJ1RpbWU6JworICAgICAgICBzbyB0aGF0IGl0J3Mgbm90IHN0cmlu
Zy1jb25jYXRlbmF0ZWQgd2l0aCB0aGUgbmV4dCBsaW5lLgorICAgICAgICAoTWFpblRlc3QudGVz
dF9wYXJzZV9vdXRwdXRfd2l0aF9kZXNjcmlwdGlvbik6IEFkZGVkOyBhIHRlc3QgZm9yIFBlcmZU
ZXN0LmRlc2NyaXB0aW9uKCkuCisgICAgICAgIChNYWluVGVzdC50ZXN0X3BhcnNlX291dHB1dF93
aXRoX3N1YnRlc3RzKTogUmVtb3ZlZCB0aGUgZXhwZWN0ZWQgbG9ncywgYW5kIGFkZGVkIGEgY2Fs
bCB0byBfZmlsdGVyX291dHB1dC4KKwogMjAxMi0xMi0xOSAgSnVsaWVuIENoYWZmcmFpeCAgPGpj
aGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICAyIGNsYW1wVG8gdW5pdCB0ZXN0cyBhcmUg
ZmFpbGluZwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9w
ZXJmdGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1h
bmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5CShyZXZpc2lvbiAxMzgxNzkpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC01Nyw2ICs1Nyw3IEBAIGNsYXNzIFBlcmZUZXN0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3Bv
cnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX3Rlc3RfbmFtZSA9IHRlc3RfbmFtZQogICAgICAgICBz
ZWxmLl90ZXN0X3BhdGggPSB0ZXN0X3BhdGgKKyAgICAgICAgc2VsZi5fZGVzY3JpcHRpb24gPSBO
b25lCiAKICAgICBkZWYgdGVzdF9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fdGVz
dF9uYW1lCkBAIC02NCw2ICs2NSw5IEBAIGNsYXNzIFBlcmZUZXN0KG9iamVjdCk6CiAgICAgZGVm
IHRlc3RfcGF0aChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfcGF0aAogCisgICAg
ZGVmIGRlc2NyaXB0aW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZGVzY3JpcHRpb24K
KwogICAgIGRlZiBwcmVwYXJlKHNlbGYsIHRpbWVfb3V0X21zKToKICAgICAgICAgcmV0dXJuIFRy
dWUKIApAQCAtNzYsMTAgKzgwLDIxIEBAIGNsYXNzIFBlcmZUZXN0KG9iamVjdCk6CiAKICAgICBk
ZWYgX3J1bl93aXRoX2RyaXZlcihzZWxmLCBkcml2ZXIsIHRpbWVfb3V0X21zKToKICAgICAgICAg
b3V0cHV0ID0gc2VsZi5ydW5fc2luZ2xlKGRyaXZlciwgc2VsZi50ZXN0X3BhdGgoKSwgdGltZV9v
dXRfbXMpCi0gICAgICAgIHNlbGYuX2ZpbHRlcl9zdGRlcnIob3V0cHV0KQorICAgICAgICBzZWxm
Ll9maWx0ZXJfb3V0cHV0KG91dHB1dCkKICAgICAgICAgaWYgc2VsZi5ydW5fZmFpbGVkKG91dHB1
dCk6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5wYXJzZV9v
dXRwdXQob3V0cHV0KQorCisgICAgICAgIHJlc3VsdHMgPSBzZWxmLnBhcnNlX291dHB1dChvdXRw
dXQpCisgICAgICAgIGlmIG5vdCByZXN1bHRzOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKwor
ICAgICAgICBpZiBub3Qgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdwcm9maWxlJyk6CisgICAgICAg
ICAgICBpZiBzZWxmLl9kZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBfbG9nLmluZm8oJ0RF
U0NSSVBUSU9OOiAlcycgJSBzZWxmLl9kZXNjcmlwdGlvbikKKyAgICAgICAgICAgIGZvciByZXN1
bHRfbmFtZSBpbiBzb3J0ZWQocmVzdWx0cy5rZXlzKCkpOgorICAgICAgICAgICAgICAgIHNlbGYu
b3V0cHV0X3N0YXRpc3RpY3MocmVzdWx0X25hbWUsIHJlc3VsdHNbcmVzdWx0X25hbWVdKQorCisg
ICAgICAgIHJldHVybiByZXN1bHRzCiAKICAgICBkZWYgcnVuX3NpbmdsZShzZWxmLCBkcml2ZXIs
IHRlc3RfcGF0aCwgdGltZV9vdXRfbXMsIHNob3VsZF9ydW5fcGl4ZWxfdGVzdD1GYWxzZSk6CiAg
ICAgICAgIHJldHVybiBkcml2ZXIucnVuX3Rlc3QoRHJpdmVySW5wdXQodGVzdF9wYXRoLCB0aW1l
X291dF9tcywgaW1hZ2VfaGFzaD1Ob25lLCBzaG91bGRfcnVuX3BpeGVsX3Rlc3Q9c2hvdWxkX3J1
bl9waXhlbF90ZXN0KSwgc3RvcF93aGVuX2RvbmU9RmFsc2UpCkBAIC0xMTYsMTIgKzEzMSw2IEBA
IGNsYXNzIFBlcmZUZXN0KG9iamVjdCk6CiAgICAgZGVmIF9zaG91bGRfaWdub3JlX2xpbmVfaW5f
c3RkZXJyKHNlbGYsIGxpbmUpOgogICAgICAgICByZXR1cm4gc2VsZi5fc2hvdWxkX2lnbm9yZV9s
aW5lKHNlbGYuX2xpbmVzX3RvX2lnbm9yZV9pbl9zdGRlcnIsIGxpbmUpCiAKLSAgICBkZWYgX2Zp
bHRlcl9zdGRlcnIoc2VsZiwgb3V0cHV0KToKLSAgICAgICAgaWYgbm90IG91dHB1dC5lcnJvcjoK
LSAgICAgICAgICAgIHJldHVybgotICAgICAgICBmaWx0ZXJlZF9lcnJvciA9ICdcbicuam9pbihb
bGluZSBmb3IgbGluZSBpbiByZS5zcGxpdCgnXG4nLCBvdXRwdXQuZXJyb3IpIGlmIG5vdCBzZWxm
Ll9zaG91bGRfaWdub3JlX2xpbmVfaW5fc3RkZXJyKGxpbmUpXSkKLSAgICAgICAgb3V0cHV0LmVy
cm9yID0gZmlsdGVyZWRfZXJyb3IgaWYgZmlsdGVyZWRfZXJyb3IgZWxzZSBOb25lCi0KICAgICBf
bGluZXNfdG9faWdub3JlX2luX3BhcnNlcl9yZXN1bHQgPSBbCiAgICAgICAgIHJlLmNvbXBpbGUo
cideUnVubmluZyBcZCsgdGltZXMkJyksCiAgICAgICAgIHJlLmNvbXBpbGUocideSWdub3Jpbmcg
d2FybS11cCAnKSwKQEAgLTE0Miw2ICsxNTEsMTMgQEAgY2xhc3MgUGVyZlRlc3Qob2JqZWN0KToK
ICAgICBkZWYgX3Nob3VsZF9pZ25vcmVfbGluZV9pbl9wYXJzZXJfdGVzdF9yZXN1bHQoc2VsZiwg
bGluZSk6CiAgICAgICAgIHJldHVybiBzZWxmLl9zaG91bGRfaWdub3JlX2xpbmUoc2VsZi5fbGlu
ZXNfdG9faWdub3JlX2luX3BhcnNlcl9yZXN1bHQsIGxpbmUpCiAKKyAgICBkZWYgX2ZpbHRlcl9v
dXRwdXQoc2VsZiwgb3V0cHV0KToKKyAgICAgICAgaWYgb3V0cHV0LmVycm9yOgorICAgICAgICAg
ICAgZmlsdGVyZWRfZXJyb3IgPSAnXG4nLmpvaW4oW2xpbmUgZm9yIGxpbmUgaW4gcmUuc3BsaXQo
J1xuJywgb3V0cHV0LmVycm9yKSBpZiBub3Qgc2VsZi5fc2hvdWxkX2lnbm9yZV9saW5lX2luX3N0
ZGVycihsaW5lKV0pCisgICAgICAgICAgICBvdXRwdXQuZXJyb3IgPSBmaWx0ZXJlZF9lcnJvciBp
ZiBmaWx0ZXJlZF9lcnJvciBlbHNlIE5vbmUKKyAgICAgICAgaWYgb3V0cHV0LnRleHQ6CisgICAg
ICAgICAgICBvdXRwdXQudGV4dCA9ICdcbicuam9pbihbbGluZSBmb3IgbGluZSBpbiByZS5zcGxp
dCgnXG4nLCBvdXRwdXQudGV4dCkgaWYgbm90IHNlbGYuX3Nob3VsZF9pZ25vcmVfbGluZV9pbl9w
YXJzZXJfdGVzdF9yZXN1bHQobGluZSldKQorCiAgICAgX2Rlc2NyaXB0aW9uX3JlZ2V4ID0gcmUu
Y29tcGlsZShyJ15EZXNjcmlwdGlvbjogKD9QPGRlc2NyaXB0aW9uPi4qKSQnLCByZS5JR05PUkVD
QVNFKQogICAgIF9yZXN1bHRfY2xhc3NlcyA9IFsnVGltZScsICdKUyBIZWFwJywgJ01hbGxvYydd
CiAgICAgX3Jlc3VsdF9jbGFzc19yZWdleCA9IHJlLmNvbXBpbGUocideKD9QPHJlc3VsdGNsYXNz
PicgKyByJ3wnLmpvaW4oX3Jlc3VsdF9jbGFzc2VzKSArICcpOicpCkBAIC0xNTEsMTQgKzE2Nywx
NSBAQCBjbGFzcyBQZXJmVGVzdChvYmplY3QpOgogICAgIGRlZiBwYXJzZV9vdXRwdXQoc2VsZiwg
b3V0cHV0KToKICAgICAgICAgdGVzdF9mYWlsZWQgPSBGYWxzZQogICAgICAgICByZXN1bHRzID0g
e30KLSAgICAgICAgb3JkZXJlZF9yZXN1bHRzX2tleXMgPSBbXQogICAgICAgICB0ZXN0X25hbWUg
PSByZS5zdWIocidcLlx3KyQnLCAnJywgc2VsZi5fdGVzdF9uYW1lKQotICAgICAgICBkZXNjcmlw
dGlvbl9zdHJpbmcgPSAiIgogICAgICAgICByZXN1bHRfY2xhc3MgPSAiIgogICAgICAgICBmb3Ig
bGluZSBpbiByZS5zcGxpdCgnXG4nLCBvdXRwdXQudGV4dCk6Ci0gICAgICAgICAgICBkZXNjcmlw
dGlvbiA9IHNlbGYuX2Rlc2NyaXB0aW9uX3JlZ2V4Lm1hdGNoKGxpbmUpCi0gICAgICAgICAgICBp
ZiBkZXNjcmlwdGlvbjoKLSAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbl9zdHJpbmcgPSBkZXNj
cmlwdGlvbi5ncm91cCgnZGVzY3JpcHRpb24nKQorICAgICAgICAgICAgaWYgbm90IGxpbmU6Cisg
ICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgZGVzY3JpcHRpb25fbWF0Y2gg
PSBzZWxmLl9kZXNjcmlwdGlvbl9yZWdleC5tYXRjaChsaW5lKQorICAgICAgICAgICAgaWYgZGVz
Y3JpcHRpb25fbWF0Y2g6CisgICAgICAgICAgICAgICAgc2VsZi5fZGVzY3JpcHRpb24gPSBkZXNj
cmlwdGlvbl9tYXRjaC5ncm91cCgnZGVzY3JpcHRpb24nKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlCiAKICAgICAgICAgICAgIHJlc3VsdF9jbGFzc19tYXRjaCA9IHNlbGYuX3Jlc3VsdF9jbGFz
c19yZWdleC5tYXRjaChsaW5lKQpAQCAtMTc3LDM3ICsxOTQsMjUgQEAgY2xhc3MgUGVyZlRlc3Qo
b2JqZWN0KToKICAgICAgICAgICAgICAgICBuYW1lID0gdGVzdF9uYW1lCiAgICAgICAgICAgICAg
ICAgaWYgcmVzdWx0X2NsYXNzICE9ICdUaW1lJzoKICAgICAgICAgICAgICAgICAgICAgbmFtZSAr
PSAnOicgKyByZXN1bHRfY2xhc3MucmVwbGFjZSgnICcsICcnKQotICAgICAgICAgICAgICAgIGlm
IG5hbWUgbm90IGluIG9yZGVyZWRfcmVzdWx0c19rZXlzOgotICAgICAgICAgICAgICAgICAgICBv
cmRlcmVkX3Jlc3VsdHNfa2V5cy5hcHBlbmQobmFtZSkKICAgICAgICAgICAgICAgICByZXN1bHRz
LnNldGRlZmF1bHQobmFtZSwge30pCiAgICAgICAgICAgICAgICAgcmVzdWx0c1tuYW1lXVsndW5p
dCddID0gdW5pdAogICAgICAgICAgICAgICAgIHJlc3VsdHNbbmFtZV1ba2V5XSA9IHZhbHVlCiAg
ICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3Nob3Vs
ZF9pZ25vcmVfbGluZV9pbl9wYXJzZXJfdGVzdF9yZXN1bHQobGluZSk6Ci0gICAgICAgICAgICAg
ICAgdGVzdF9mYWlsZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcihsaW5lKQor
ICAgICAgICAgICAgdGVzdF9mYWlsZWQgPSBUcnVlCisgICAgICAgICAgICBfbG9nLmVycm9yKCdF
UlJPUjogJyArIGxpbmUpCiAKICAgICAgICAgaWYgdGVzdF9mYWlsZWQ6CiAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQogCi0gICAgICAgIGlmIHNldChzZWxmLl9zdGF0aXN0aWNzX2tleXMpICE9IHNl
dChyZXN1bHRzW3Rlc3RfbmFtZV0ua2V5cygpICsgWyd2YWx1ZXMnXSk6Ci0gICAgICAgICAgICAj
IHZhbHVlcyBpcyBub3QgcHJvdmlkZWQgYnkgRHJvbWFlbyB0ZXN0cy4KKyAgICAgICAgaWYgc2V0
KHNlbGYuX3N0YXRpc3RpY3Nfa2V5cykgIT0gc2V0KHJlc3VsdHNbdGVzdF9uYW1lXS5rZXlzKCkp
OgogICAgICAgICAgICAgX2xvZy5lcnJvcigiVGhlIHRlc3QgZGlkbid0IHJlcG9ydCBhbGwgc3Rh
dGlzdGljcy4iKQogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICAgICBpZiBub3Qgc2Vs
Zi5fcG9ydC5nZXRfb3B0aW9uKCdwcm9maWxlJyk6Ci0gICAgICAgICAgICBmb3IgcmVzdWx0X25h
bWUgaW4gb3JkZXJlZF9yZXN1bHRzX2tleXM6Ci0gICAgICAgICAgICAgICAgaWYgcmVzdWx0X25h
bWUgPT0gdGVzdF9uYW1lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLm91dHB1dF9zdGF0aXN0
aWNzKHJlc3VsdF9uYW1lLCByZXN1bHRzW3Jlc3VsdF9uYW1lXSwgZGVzY3JpcHRpb25fc3RyaW5n
KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYub3V0cHV0
X3N0YXRpc3RpY3MocmVzdWx0X25hbWUsIHJlc3VsdHNbcmVzdWx0X25hbWVdKQogICAgICAgICBy
ZXR1cm4gcmVzdWx0cwogCi0gICAgZGVmIG91dHB1dF9zdGF0aXN0aWNzKHNlbGYsIHRlc3RfbmFt
ZSwgcmVzdWx0cywgZGVzY3JpcHRpb25fc3RyaW5nPU5vbmUpOgorICAgIGRlZiBvdXRwdXRfc3Rh
dGlzdGljcyhzZWxmLCB0ZXN0X25hbWUsIHJlc3VsdHMpOgogICAgICAgICB1bml0ID0gcmVzdWx0
c1sndW5pdCddCi0gICAgICAgIGlmIGRlc2NyaXB0aW9uX3N0cmluZzoKLSAgICAgICAgICAgIF9s
b2cuaW5mbygnREVTQ1JJUFRJT046ICVzJyAlIGRlc2NyaXB0aW9uX3N0cmluZykKICAgICAgICAg
X2xvZy5pbmZvKCdSRVNVTFQgJXM9ICVzICVzJyAlICh0ZXN0X25hbWUucmVwbGFjZSgnOicsICc6
ICcpLnJlcGxhY2UoJy8nLCAnOiAnKSwgcmVzdWx0c1snYXZnJ10sIHVuaXQpKQogICAgICAgICBf
bG9nLmluZm8oJywgJy5qb2luKFsnJXM9ICVzICVzJyAlIChrZXksIHJlc3VsdHNba2V5XSwgdW5p
dCkgZm9yIGtleSBpbiBzZWxmLl9zdGF0aXN0aWNzX2tleXNbMTo1XV0pKQogCkBAIC0yMTgsNyAr
MjIzLDE1IEBAIGNsYXNzIENocm9taXVtU3R5bGVQZXJmVGVzdChQZXJmVGVzdCk6CiAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHBvcnQsIHRlc3RfbmFtZSwgdGVzdF9wYXRoKToKICAgICAgICAgc3Vw
ZXIoQ2hyb21pdW1TdHlsZVBlcmZUZXN0LCBzZWxmKS5fX2luaXRfXyhwb3J0LCB0ZXN0X25hbWUs
IHRlc3RfcGF0aCkKIAotICAgIGRlZiBwYXJzZV9vdXRwdXQoc2VsZiwgb3V0cHV0KToKKyAgICBk
ZWYgX3J1bl93aXRoX2RyaXZlcihzZWxmLCBkcml2ZXIsIHRpbWVfb3V0X21zKToKKyAgICAgICAg
b3V0cHV0ID0gc2VsZi5ydW5fc2luZ2xlKGRyaXZlciwgc2VsZi50ZXN0X3BhdGgoKSwgdGltZV9v
dXRfbXMpCisgICAgICAgIHNlbGYuX2ZpbHRlcl9vdXRwdXQob3V0cHV0KQorICAgICAgICBpZiBz
ZWxmLnJ1bl9mYWlsZWQob3V0cHV0KToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAg
ICAgcmV0dXJuIHNlbGYucGFyc2VfYW5kX2xvZ19vdXRwdXQob3V0cHV0KQorCisgICAgZGVmIHBh
cnNlX2FuZF9sb2dfb3V0cHV0KHNlbGYsIG91dHB1dCk6CiAgICAgICAgIHRlc3RfZmFpbGVkID0g
RmFsc2UKICAgICAgICAgcmVzdWx0cyA9IHt9CiAgICAgICAgIGZvciBsaW5lIGluIHJlLnNwbGl0
KCdcbicsIG91dHB1dC50ZXh0KToKQEAgLTI5MSw3ICszMDQsNyBAQCBjbGFzcyBQYWdlTG9hZGlu
Z1BlcmZUZXN0KFBlcmZUZXN0KToKIAogICAgICAgICBmb3IgcmVzdWx0X2NsYXNzIGluIHJlc3Vs
dHMua2V5cygpOgogICAgICAgICAgICAgcmVzdWx0c1tyZXN1bHRfY2xhc3NdLnVwZGF0ZShzZWxm
LmNhbGN1bGF0ZV9zdGF0aXN0aWNzKHJlc3VsdHNbcmVzdWx0X2NsYXNzXVsndmFsdWVzJ10pKQot
ICAgICAgICAgICAgc2VsZi5vdXRwdXRfc3RhdGlzdGljcyhyZXN1bHRfY2xhc3MsIHJlc3VsdHNb
cmVzdWx0X2NsYXNzXSwgJycpCisgICAgICAgICAgICBzZWxmLm91dHB1dF9zdGF0aXN0aWNzKHJl
c3VsdF9jbGFzcywgcmVzdWx0c1tyZXN1bHRfY2xhc3NdKQogCiAgICAgICAgIHJldHVybiByZXN1
bHRzCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVy
ZnRlc3RfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
ZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weQkocmV2aXNpb24gMTM4MTc5KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBNYWluVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIG91dHB1dF9jYXB0dXJlLmNhcHR1cmVfb3V0cHV0
KCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdGVzdCA9IFBlcmZUZXN0KE1vY2tQb3J0KCks
ICdzb21lLXRlc3QnLCAnL3BhdGgvc29tZS1kaXIvc29tZS10ZXN0JykKKyAgICAgICAgICAgIHRl
c3QuX2ZpbHRlcl9vdXRwdXQob3V0cHV0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0
ZXN0LnBhcnNlX291dHB1dChvdXRwdXQpLAogICAgICAgICAgICAgICAgIHsnc29tZS10ZXN0Jzog
eydhdmcnOiAxMTAwLjAsICdtZWRpYW4nOiAxMTAxLjAsICdtaW4nOiAxMDgwLjAsICdtYXgnOiAx
MTIwLjAsICdzdGRldic6IDExLjAsICd1bml0JzogJ21zJywKICAgICAgICAgICAgICAgICAgICAg
J3ZhbHVlcyc6IFtpIGZvciBpIGluIHJhbmdlKDEsIDIwKV19fSkKQEAgLTcxLDcgKzcyLDcgQEAg
Y2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgYWN0dWFsX3N0
ZG91dCwgYWN0dWFsX3N0ZGVyciwgYWN0dWFsX2xvZ3MgPSBvdXRwdXRfY2FwdHVyZS5yZXN0b3Jl
X291dHB1dCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3N0ZG91dCwgJycpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3N0ZGVyciwgJycpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYWN0dWFsX2xvZ3MsICdSRVNVTFQgc29tZS10ZXN0PSAxMTAwLjAgbXNcbm1l
ZGlhbj0gMTEwMS4wIG1zLCBzdGRldj0gMTEuMCBtcywgbWluPSAxMDgwLjAgbXMsIG1heD0gMTEy
MC4wIG1zXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9sb2dzLCAnJykKIAog
ICAgIGRlZiB0ZXN0X3BhcnNlX291dHB1dF93aXRoX2ZhaWxpbmdfbGluZShzZWxmKToKICAgICAg
ICAgb3V0cHV0ID0gRHJpdmVyT3V0cHV0KCdcbicuam9pbihbCkBAIC04MCw3ICs4MSw3IEBAIGNs
YXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICcnLAogICAgICAg
ICAgICAgJ3NvbWUtdW5yZWNvZ25pemFibGUtbGluZScsCiAgICAgICAgICAgICAnJywKLSAgICAg
ICAgICAgICdUaW1lOicKKyAgICAgICAgICAgICdUaW1lOicsCiAgICAgICAgICAgICAndmFsdWVz
IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAx
NywgMTgsIDE5IG1zJywKICAgICAgICAgICAgICdhdmcgMTEwMCBtcycsCiAgICAgICAgICAgICAn
bWVkaWFuIDExMDEgbXMnLApAQCAtOTEsMTIgKzkyLDI3IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgb3V0cHV0X2NhcHR1cmUuY2FwdHVyZV9vdXRwdXQoKQog
ICAgICAgICB0cnk6CiAgICAgICAgICAgICB0ZXN0ID0gUGVyZlRlc3QoTW9ja1BvcnQoKSwgJ3Nv
bWUtdGVzdCcsICcvcGF0aC9zb21lLWRpci9zb21lLXRlc3QnKQorICAgICAgICAgICAgdGVzdC5f
ZmlsdGVyX291dHB1dChvdXRwdXQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3Qu
cGFyc2Vfb3V0cHV0KG91dHB1dCksIE5vbmUpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAg
ICBhY3R1YWxfc3Rkb3V0LCBhY3R1YWxfc3RkZXJyLCBhY3R1YWxfbG9ncyA9IG91dHB1dF9jYXB0
dXJlLnJlc3RvcmVfb3V0cHV0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3Rk
b3V0LCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3RkZXJyLCAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfbG9ncywgJ3NvbWUtdW5yZWNvZ25pemFibGUt
bGluZVxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfbG9ncywgJ0VSUk9SOiBz
b21lLXVucmVjb2duaXphYmxlLWxpbmVcbicpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9vdXRwdXRf
d2l0aF9kZXNjcmlwdGlvbihzZWxmKToKKyAgICAgICAgb3V0cHV0ID0gRHJpdmVyT3V0cHV0KCdc
bicuam9pbihbCisgICAgICAgICAgICAnRGVzY3JpcHRpb246IHRoaXMgaXMgYSB0ZXN0IGRlc2Ny
aXB0aW9uLicsCisgICAgICAgICAgICAnVGltZTonLAorICAgICAgICAgICAgJ3ZhbHVlcyAxLCAy
LCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4
LCAxOSBtcycsCisgICAgICAgICAgICAnYXZnIDExMDAgbXMnLAorICAgICAgICAgICAgJ21lZGlh
biAxMTAxIG1zJywKKyAgICAgICAgICAgICdzdGRldiAxMSBtcycsCisgICAgICAgICAgICAnbWlu
IDEwODAgbXMnLAorICAgICAgICAgICAgJ21heCAxMTIwIG1zJ10pLCBpbWFnZT1Ob25lLCBpbWFn
ZV9oYXNoPU5vbmUsIGF1ZGlvPU5vbmUpCisgICAgICAgIHRlc3QgPSBQZXJmVGVzdChNb2NrUG9y
dCgpLCAnc29tZS10ZXN0JywgJy9wYXRoL3NvbWUtZGlyL3NvbWUtdGVzdCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZSh0ZXN0LnBhcnNlX291dHB1dChvdXRwdXQpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHRlc3QuZGVzY3JpcHRpb24oKSwgJ3RoaXMgaXMgYSB0ZXN0IGRlc2NyaXB0aW9u
LicpCiAKICAgICBkZWYgdGVzdF9pZ25vcmVkX3N0ZGVycl9saW5lcyhzZWxmKToKICAgICAgICAg
dGVzdCA9IFBlcmZUZXN0KE1vY2tQb3J0KCksICdzb21lLXRlc3QnLCAnL3BhdGgvc29tZS1kaXIv
c29tZS10ZXN0JykKQEAgLTEzMyw2ICsxNDksNyBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIG91dHB1dF9jYXB0dXJlLmNhcHR1cmVfb3V0cHV0KCkKICAgICAg
ICAgdHJ5OgogICAgICAgICAgICAgdGVzdCA9IFBlcmZUZXN0KE1vY2tQb3J0KCksICdzb21lLXRl
c3QnLCAnL3BhdGgvc29tZS1kaXIvc29tZS10ZXN0JykKKyAgICAgICAgICAgIHRlc3QuX2ZpbHRl
cl9vdXRwdXQob3V0cHV0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0LnBhcnNl
X291dHB1dChvdXRwdXQpLAogICAgICAgICAgICAgICAgIHsnc29tZS10ZXN0JzogeydhdmcnOiAx
MTAwLjAsICdtZWRpYW4nOiAxMTAxLjAsICdtaW4nOiAxMDgwLjAsICdtYXgnOiAxMTIwLjAsICdz
dGRldic6IDExLjAsICd1bml0JzogJ21zJywKICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyc6
IFtpIGZvciBpIGluIHJhbmdlKDEsIDIwKV19fSkKQEAgLTE0MSw3ICsxNTgsNyBAQCBjbGFzcyBN
YWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBhY3R1YWxfc3Rkb3V0LCBh
Y3R1YWxfc3RkZXJyLCBhY3R1YWxfbG9ncyA9IG91dHB1dF9jYXB0dXJlLnJlc3RvcmVfb3V0cHV0
KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3Rkb3V0LCAnJykKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3RkZXJyLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChhY3R1YWxfbG9ncywgJ1JFU1VMVCBzb21lLXRlc3Q9IDExMDAuMCBtc1xubWVkaWFuPSAx
MTAxLjAgbXMsIHN0ZGV2PSAxMS4wIG1zLCBtaW49IDEwODAuMCBtcywgbWF4PSAxMTIwLjAgbXNc
bicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2xvZ3MsICcnKQogCiAKIGNsYXNz
IFRlc3RQYWdlTG9hZGluZ1BlcmZUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
</data>
<flag name="review"
          id="197381"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>