<?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>106231</bug_id>
          
          <creation_ts>2013-01-07 10:22:59 -0800</creation_ts>
          <short_desc>Web Inspector: Refactor InspectorTest to create output interface</short_desc>
          <delta_ts>2013-01-10 10:27:08 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="johnjbarton">johnjbarton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>dglazkov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>801387</commentid>
    <comment_count>0</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2013-01-07 10:22:59 -0800</bug_when>
    <thetext>InspectorTest is complex and hard to understand. The StandaloneTestrunnerStub (related to bug 92429) helped clarify the components. Along the same lines, separating the output functions, ie the functions used by InspectorTest to communicate test results and completion would help. (Also the code involved is incorrectly formatted).

Patch ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801403</commentid>
    <comment_count>1</comment_count>
      <attachid>181523</attachid>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2013-01-07 10:34:56 -0800</bug_when>
    <thetext>Created attachment 181523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801406</commentid>
    <comment_count>2</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2013-01-07 10:35:46 -0800</bug_when>
    <thetext>Hmm, the patch is hard to read, let me know if you want the re-indent separate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801459</commentid>
    <comment_count>3</comment_count>
      <attachid>181523</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 11:17:58 -0800</bug_when>
    <thetext>Comment on attachment 181523
Patch

Attachment 181523 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15731857

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801484</commentid>
    <comment_count>4</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2013-01-07 11:38:11 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; New failing tests:
&gt; inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html


Passes for me on linux. output says DumpRenderTree crashed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803261</commentid>
    <comment_count>5</comment_count>
      <attachid>181523</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-09 05:49:15 -0800</bug_when>
    <thetext>Comment on attachment 181523
Patch

We don&apos;t really indent within the namespaces to save some horizontal space. Could you split (or drop) the formatting and upload the refactoring changes only? Otherwise it is really hard to follow them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803536</commentid>
    <comment_count>6</comment_count>
      <attachid>181959</attachid>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2013-01-09 11:38:43 -0800</bug_when>
    <thetext>Created attachment 181959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803537</commentid>
    <comment_count>7</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2013-01-09 11:39:39 -0800</bug_when>
    <thetext>Re-indent removed to bug 106475</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804293</commentid>
    <comment_count>8</comment_count>
      <attachid>181959</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-10 05:46:49 -0800</bug_when>
    <thetext>Comment on attachment 181959
Patch

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

&gt; LayoutTests/http/tests/inspector/inspector-test.js:20
&gt; +    addResult: function(text) 

Please add blank line between methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804432</commentid>
    <comment_count>9</comment_count>
      <attachid>182154</attachid>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2013-01-10 09:21:50 -0800</bug_when>
    <thetext>Created attachment 182154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804510</commentid>
    <comment_count>10</comment_count>
      <attachid>182154</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-10 10:27:04 -0800</bug_when>
    <thetext>Comment on attachment 182154
Patch

Clearing flags on attachment: 182154

Committed r139332: &lt;http://trac.webkit.org/changeset/139332&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804511</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-10 10:27:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181523</attachid>
            <date>2013-01-07 10:34:56 -0800</date>
            <delta_ts>2013-01-09 11:38:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106231-20130107103201.patch</filename>
            <type>text/plain</type>
            <size>29512</size>
            <attacher name="johnjbarton">johnjbarton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NjIyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTM1Yzg5ZTFlOGIxZmU2N2VjYWRl
MTc1ZGE2OTUxZTUyMDA4YTc0MS4uZjllYzJiZDRmYjM2YmZlNzA2OGVlZjFkMzAwMjQxYmQ3NDlk
ZDkyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEzLTAxLTA3ICBKb2huIEouIEJhcnRvbiAg
PGpvaG5qYmFydG9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWZh
Y3RvciBJbnNwZWN0b3JUZXN0IHRvIGNyZWF0ZSBvdXRwdXQgaW50ZXJmYWNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBJbnNwZWN0b3JU
ZXN0IHRvIGV4dHJhY3QgSW5zcGVjdG9yVGVzdC5PdXRwdXQsIHRoZSBBUEkgCisgICAgICAgIHVz
ZWQgYmV0d2VlbiBJbnNwZWN0b3JUZXN0IGFuZCB0aGUgdGVzdCBvdXRwdXQgcmVjaWV2ZXIgKHRo
ZSAKKyAgICAgICAgdGVzdC1zY3JpcHQgcGFnZSBieSBkZWZhdWx0KS4gCisKKyAgICAgICAgRHJp
dmUtYnk6IHJlZm9ybWF0IGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdCB0byBpbmRlbnQgZnVuY3Rp
b24gYm9keS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yaW5nIG9ubHkuIAorCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanM6CisgICAgICAg
IChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuY29uc29sZU91dHB1dEhvb2spOgorICAgICAgICAo
aW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QuT3V0cHV0LnRlc3RDb21wbGV0
ZSk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5PdXRw
dXQuYWRkUmVzdWx0KToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0
b3JUZXN0Lk91dHB1dC5jbGVhclJlc3VsdHMpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0
b3JUZXN0Lkluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVf
SW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKToKKyAgICAgICAg
KGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5teWNhbGxiYWNrKToKKyAgICAgICAgKGluaXRpYWxp
emVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlQW5kRHVtcCk6
CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZSk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVz
dC5ldmFsdWF0ZUluUGFnZVdpdGhUaW1lb3V0KToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVj
dG9yVGVzdC5JbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCk6CisgICAgICAgIChpbml0aWFsaXplX0lu
c3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHRzKToKKyAgICAgICAgKGluaXRpYWxp
emVfSW5zcGVjdG9yVGVzdC5vbkVycm9yKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9y
VGVzdC5JbnNwZWN0b3JUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5J
bnNwZWN0b3JUZXN0LmZvcm1hdHRlcnMuZm9ybWF0QXNUeXBlTmFtZSk6CisgICAgICAgIChpbml0
aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5mb3JtYXR0ZXJzLmZvcm1hdEFzUmVj
ZW50VGltZSk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVz
dC5hZGRPYmplY3QpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3Rv
clRlc3QuYWRkQXJyYXkpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3Bl
Y3RvclRlc3QuZHVtcCk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVj
dG9yVGVzdC5hc3NlcnRHcmVhdGVyT3JFcXVhbCk6CisgICAgICAgIChpbml0aWFsaXplX0luc3Bl
Y3RvclRlc3QuSW5zcGVjdG9yVGVzdC5uYXZpZ2F0ZSk6CisgICAgICAgIChpbml0aWFsaXplX0lu
c3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5oYXJkUmVsb2FkUGFnZSk6CisgICAgICAgIChpbml0
aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKToKKyAgICAgICAg
KGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0Ll9pbm5lclJlbG9hZFBhZ2Up
OgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QucGFnZUxv
YWRlZCk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5y
dW5XaGVuUGFnZUxvYWRzLmNoYWluZWRDYWxsYmFjayk6CisgICAgICAgIChpbml0aWFsaXplX0lu
c3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5ydW5XaGVuUGFnZUxvYWRzKToKKyAgICAgICAgKGlu
aXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3Bh
dGNoZXMpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3Qu
Y3JlYXRlS2V5RXZlbnQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3Bl
Y3RvclRlc3QucnVuVGVzdFN1aXRlLnJ1bm5lcik6CisgICAgICAgIChpbml0aWFsaXplX0luc3Bl
Y3RvclRlc3QuSW5zcGVjdG9yVGVzdC5ydW5UZXN0U3VpdGUpOgorICAgICAgICAoaW5pdGlhbGl6
ZV9JbnNwZWN0b3JUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC4pOgor
CiAyMDEzLTAxLTAyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM4NjAxLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCA2OTg3
YjkyNzUzMDNkNGRlNjVkMTYzY2FkOGJmYTllZmFmY2NhOTE5Li5iODE5MDJlZjBmZWE5YzlhYTEz
MzBmYzA2NGUwNjk3NmM5YmY1NzVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwpAQCAtMSwzOTcgKzEsNDAyIEBACi12YXIgaW5p
dGlhbGl6ZV9JbnNwZWN0b3JUZXN0ID0gZnVuY3Rpb24oKSB7Cit2YXIgaW5pdGlhbGl6ZV9JbnNw
ZWN0b3JUZXN0ID0gZnVuY3Rpb24oKSB7ICAvLyBSdW5zIGluIHRoZSBzYW1lIHNjb3BlIGFzIFdl
Ykluc3BlY3RvcgogCi12YXIgcmVzdWx0cyA9IFtdOwotdmFyIHJlc3VsdHNTeW5jaHJvbml6ZWQg
PSBmYWxzZTsKKyAgICB2YXIgcmVzdWx0cyA9IFtdOworICAgIHZhciByZXN1bHRzU3luY2hyb25p
emVkID0gZmFsc2U7CiAKLWZ1bmN0aW9uIGNvbnNvbGVPdXRwdXRIb29rKG1lc3NhZ2VUeXBlKQot
ewotICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KG1lc3NhZ2VUeXBlICsgIjogIiArIEFycmF5
LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpOwotfQotCi1jb25zb2xlLmxvZyA9
IGNvbnNvbGVPdXRwdXRIb29rLmJpbmQoSW5zcGVjdG9yVGVzdCwgImxvZyIpOwotY29uc29sZS5l
cnJvciA9IGNvbnNvbGVPdXRwdXRIb29rLmJpbmQoSW5zcGVjdG9yVGVzdCwgImVycm9yIik7Ci1j
b25zb2xlLmluZm8gPSBjb25zb2xlT3V0cHV0SG9vay5iaW5kKEluc3BlY3RvclRlc3QsICJpbmZv
Iik7Ci0KLUluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0ID0gZnVuY3Rpb24oKQotewotICAgIGZ1
bmN0aW9uIHRlc3REaXNwYXRjaFF1ZXVlSXNFbXB0eSgpIHsKLSAgICAgICAgaWYgKCFXZWJJbnNw
ZWN0b3IuZGlzcGF0Y2hRdWV1ZUlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gV2FpdCBmb3Ig
dW5wcm9jZXNzZWQgbWVzc2FnZXMuCi0gICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3REaXNwYXRj
aFF1ZXVlSXNFbXB0eSwgMTApOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgiZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCgi
ICsgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3RDYWxsSWQgKyAiLCBcIlwiKSIsICJ0ZXN0Iik7
CisgICAgZnVuY3Rpb24gY29uc29sZU91dHB1dEhvb2sobWVzc2FnZVR5cGUpCisgICAgeworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChtZXNzYWdlVHlwZSArICI6ICIgKyBBcnJheS5w
cm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTsKICAgICB9Ci0gICAgdGVzdERpc3Bh
dGNoUXVldWVJc0VtcHR5KCk7Ci19CiAKLUluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUg
PSBmdW5jdGlvbihjb2RlLCBjYWxsYmFjaykKLXsKLSAgICBjYWxsYmFjayA9IEluc3BlY3RvclRl
c3Quc2FmZVdyYXAoY2FsbGJhY2spOwotCi0gICAgV2ViSW5zcGVjdG9yLmNvbnNvbGVWaWV3LnZp
c2libGUgPSB0cnVlOwotICAgIFdlYkluc3BlY3Rvci5jb25zb2xlVmlldy5wcm9tcHQudGV4dCA9
IGNvZGU7Ci0gICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIktleWJvYXJkRXZl
bnQiKTsKLSAgICBldmVudC5pbml0S2V5Ym9hcmRFdmVudCgia2V5ZG93biIsIHRydWUsIHRydWUs
IG51bGwsICJFbnRlciIsICIiKTsKLSAgICBXZWJJbnNwZWN0b3IuY29uc29sZVZpZXcucHJvbXB0
LnByb3h5RWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKLSAgICBJbnNwZWN0b3JUZXN0LmFk
ZENvbnNvbGVTbmlmZmVyKAotICAgICAgICBmdW5jdGlvbihjb21tYW5kUmVzdWx0KSB7Ci0gICAg
ICAgICAgICBjYWxsYmFjayhjb21tYW5kUmVzdWx0LnRvTWVzc2FnZUVsZW1lbnQoKS50ZXh0Q29u
dGVudCk7Ci0gICAgICAgIH0pOwotfQorICAgIGNvbnNvbGUubG9nID0gY29uc29sZU91dHB1dEhv
b2suYmluZChJbnNwZWN0b3JUZXN0LCAibG9nIik7CisgICAgY29uc29sZS5lcnJvciA9IGNvbnNv
bGVPdXRwdXRIb29rLmJpbmQoSW5zcGVjdG9yVGVzdCwgImVycm9yIik7CisgICAgY29uc29sZS5p
bmZvID0gY29uc29sZU91dHB1dEhvb2suYmluZChJbnNwZWN0b3JUZXN0LCAiaW5mbyIpOwogCi1J
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlQW5kRHVtcCA9IGZ1bmN0aW9uKGNvZGUsIGNh
bGxiYWNrKQotewotICAgIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFj
ayk7CisgICAgSW5zcGVjdG9yVGVzdC5PdXRwdXQgPSB7ICAgLy8gb3ZlcnJpZGUgaW4gd2luZG93
LmluaXRpYWxpemVfeW91ck5hbWUKKyAgICAgICAgdGVzdENvbXBsZXRlOiBmdW5jdGlvbigpIAor
ICAgICAgICB7CisgICAgICAgICAgICBSdW50aW1lQWdlbnQuZXZhbHVhdGUoImRpZEV2YWx1YXRl
Rm9yVGVzdEluRnJvbnRlbmQoIiArIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0Q2FsbElkICsg
IiwgXCJcIikiLCAidGVzdCIpOworICAgICAgICB9LAorICAgICAgICBhZGRSZXN1bHQ6IGZ1bmN0
aW9uKHRleHQpIAorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
SW5QYWdlKCJvdXRwdXQodW5lc2NhcGUoJyIgKyBlc2NhcGUodGV4dCkgKyAiJykpIik7CisgICAg
ICAgIH0sCisgICAgICAgIGNsZWFyUmVzdWx0czogZnVuY3Rpb24oKSAKKyAgICAgICAgeworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2xlYXJPdXRwdXQoKSIpOwor
ICAgICAgICB9CisgICAgfTsKIAotICAgIGZ1bmN0aW9uIG15Y2FsbGJhY2sodGV4dCkKKyAgICBJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCA9IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KGNvZGUgKyAiID0gIiArIHRleHQpOwotICAgICAgICBjYWxs
YmFjayh0ZXh0KTsKKyAgICAgICAgZnVuY3Rpb24gdGVzdERpc3BhdGNoUXVldWVJc0VtcHR5KCkg
eworICAgICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuZGlzcGF0Y2hRdWV1ZUlzRW1wdHkoKSkg
eworICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9yIHVucHJvY2Vzc2VkIG1lc3NhZ2VzLgorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdERpc3BhdGNoUXVldWVJc0VtcHR5LCAxMCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5PdXRwdXQudGVzdENvbXBsZXRlKCk7CisgICAgICAgIH0KKyAgICAgICAgdGVzdERp
c3BhdGNoUXVldWVJc0VtcHR5KCk7CiAgICAgfQotICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
bkNvbnNvbGUoY29kZSwgbXljYWxsYmFjayk7Ci19CiAKLUluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UgPSBmdW5jdGlvbihjb2RlLCBjYWxsYmFjaykKLXsKLSAgICBjYWxsYmFjayA9IEluc3Bl
Y3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOwotCi0gICAgZnVuY3Rpb24gbXljYWxsYmFjayhl
cnJvciwgcmVzdWx0LCB3YXNUaHJvd24pCisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29u
c29sZSA9IGZ1bmN0aW9uKGNvZGUsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgaWYgKCFlcnJv
cikKLSAgICAgICAgICAgIGNhbGxiYWNrKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBh
eWxvYWQocmVzdWx0KSwgd2FzVGhyb3duKTsKKyAgICAgICAgY2FsbGJhY2sgPSBJbnNwZWN0b3JU
ZXN0LnNhZmVXcmFwKGNhbGxiYWNrKTsKKworICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZVZp
ZXcudmlzaWJsZSA9IHRydWU7CisgICAgICAgIFdlYkluc3BlY3Rvci5jb25zb2xlVmlldy5wcm9t
cHQudGV4dCA9IGNvZGU7CisgICAgICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50
KCJLZXlib2FyZEV2ZW50Iik7CisgICAgICAgIGV2ZW50LmluaXRLZXlib2FyZEV2ZW50KCJrZXlk
b3duIiwgdHJ1ZSwgdHJ1ZSwgbnVsbCwgIkVudGVyIiwgIiIpOworICAgICAgICBXZWJJbnNwZWN0
b3IuY29uc29sZVZpZXcucHJvbXB0LnByb3h5RWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRDb25zb2xlU25pZmZlcigKKyAgICAgICAgICAgIGZ1
bmN0aW9uKGNvbW1hbmRSZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhjb21tYW5k
UmVzdWx0LnRvTWVzc2FnZUVsZW1lbnQoKS50ZXh0Q29udGVudCk7CisgICAgICAgICAgICB9KTsK
ICAgICB9Ci0gICAgUnVudGltZUFnZW50LmV2YWx1YXRlKGNvZGUsICJjb25zb2xlIiwgZmFsc2Us
IG15Y2FsbGJhY2spOwotfQogCi1JbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlV2l0aFRpbWVv
dXQgPSBmdW5jdGlvbihjb2RlKQotewotICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
InNldFRpbWVvdXQodW5lc2NhcGUoJyIgKyBlc2NhcGUoY29kZSkgKyAiJykpIik7Ci19CisgICAg
SW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZUFuZER1bXAgPSBmdW5jdGlvbihjb2RlLCBj
YWxsYmFjaykKKyAgICB7CisgICAgICAgIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5zYWZlV3Jh
cChjYWxsYmFjayk7CiAKLUluc3BlY3RvclRlc3QuYWRkUmVzdWx0ID0gZnVuY3Rpb24odGV4dCkK
LXsKLSAgICByZXN1bHRzLnB1c2godGV4dCk7Ci0gICAgaWYgKHJlc3VsdHNTeW5jaHJvbml6ZWQp
Ci0gICAgICAgIGFkZFJlc3VsdFRvUGFnZSh0ZXh0KTsKLSAgICBlbHNlIHsKLSAgICAgICAgY2xl
YXJSZXN1bHRzKCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7
ICsraSkKLSAgICAgICAgICAgIGFkZFJlc3VsdFRvUGFnZShyZXN1bHRzW2ldKTsKLSAgICAgICAg
cmVzdWx0c1N5bmNocm9uaXplZCA9IHRydWU7CisgICAgICAgIGZ1bmN0aW9uIG15Y2FsbGJhY2so
dGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY29k
ZSArICIgPSAiICsgdGV4dCk7CisgICAgICAgICAgICBjYWxsYmFjayh0ZXh0KTsKKyAgICAgICAg
fQorICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKGNvZGUsIG15Y2FsbGJh
Y2spOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGNsZWFyUmVzdWx0cygpCisgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZSA9IGZ1bmN0aW9uKGNvZGUsIGNhbGxiYWNrKQogICAgIHsKLSAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2xlYXJPdXRwdXQoKSIpOworICAg
ICAgICBjYWxsYmFjayA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOworCisgICAg
ICAgIGZ1bmN0aW9uIG15Y2FsbGJhY2soZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3duKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoIWVycm9yKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVzdWx0KSwgd2FzVGhyb3duKTsK
KyAgICAgICAgfQorICAgICAgICBSdW50aW1lQWdlbnQuZXZhbHVhdGUoY29kZSwgImNvbnNvbGUi
LCBmYWxzZSwgbXljYWxsYmFjayk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gYWRkUmVzdWx0VG9Q
YWdlKHRleHQpCisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZVdpdGhUaW1lb3V0ID0g
ZnVuY3Rpb24oY29kZSkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoIm91dHB1dCh1bmVzY2FwZSgnIiArIGVzY2FwZSh0ZXh0KSArICInKSkiKTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgic2V0VGltZW91dCh1bmVzY2FwZSgnIiArIGVz
Y2FwZShjb2RlKSArICInKSkiKTsKICAgICB9Ci19CiAKLUluc3BlY3RvclRlc3QuYWRkUmVzdWx0
cyA9IGZ1bmN0aW9uKHRleHRBcnJheSkKLXsKLSAgICBpZiAoIXRleHRBcnJheSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGZvciAodmFyIGkgPSAwLCBzaXplID0gdGV4dEFycmF5Lmxlbmd0aDsgaSA8
IHNpemU7ICsraSkKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQodGV4dEFycmF5W2ld
KTsKLX0KLQotZnVuY3Rpb24gb25FcnJvcihldmVudCkKLXsKLSAgICB3aW5kb3cucmVtb3ZlRXZl
bnRMaXN0ZW5lcigiZXJyb3IiLCBvbkVycm9yKTsKLSAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiVW5jYXVnaHQgZXhjZXB0aW9uIGluIGluc3BlY3RvciBmcm9udC1lbmQ6ICIgKyBldmVudC5t
ZXNzYWdlICsgIiBbIiArIGV2ZW50LmZpbGVuYW1lICsgIjoiICsgZXZlbnQubGluZW5vICsgIl0i
KTsKLSAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotfQorICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0ID0gZnVuY3Rpb24odGV4dCkKKyAgICB7CisgICAgICAgIHJlc3VsdHMucHVz
aCh0ZXh0KTsKKyAgICAgICAgaWYgKHJlc3VsdHNTeW5jaHJvbml6ZWQpCisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0Lk91dHB1dC5hZGRSZXN1bHQodGV4dCk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5PdXRwdXQuY2xlYXJSZXN1bHRzKCk7CisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5PdXRwdXQuYWRkUmVzdWx0KHJlc3VsdHNbaV0pOworICAgICAgICAg
ICAgcmVzdWx0c1N5bmNocm9uaXplZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CiAKLXdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsIG9uRXJyb3IpOworICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0cyA9IGZ1bmN0aW9uKHRleHRBcnJheSkKKyAgICB7CisgICAgICAgIGlmICghdGV4
dEFycmF5KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmb3IgKHZhciBpID0gMCwgc2l6
ZSA9IHRleHRBcnJheS5sZW5ndGg7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCh0ZXh0QXJyYXlbaV0pOworICAgIH0KIAotSW5zcGVjdG9yVGVzdC5m
b3JtYXR0ZXJzID0ge307CisgICAgZnVuY3Rpb24gb25FcnJvcihldmVudCkKKyAgICB7CisgICAg
ICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsIG9uRXJyb3IpOworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiVW5jYXVnaHQgZXhjZXB0aW9uIGluIGluc3BlY3Rv
ciBmcm9udC1lbmQ6ICIgKyBldmVudC5tZXNzYWdlICsgIiBbIiArIGV2ZW50LmZpbGVuYW1lICsg
IjoiICsgZXZlbnQubGluZW5vICsgIl0iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZVRlc3QoKTsKKyAgICB9CiAKLUluc3BlY3RvclRlc3QuZm9ybWF0dGVycy5mb3JtYXRBc1R5cGVO
YW1lID0gZnVuY3Rpb24odmFsdWUpCi17Ci0gICAgcmV0dXJuICI8IiArIHR5cGVvZiB2YWx1ZSAr
ICI+IjsKLX0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBvbkVycm9yKTsK
IAotSW5zcGVjdG9yVGVzdC5mb3JtYXR0ZXJzLmZvcm1hdEFzUmVjZW50VGltZSA9IGZ1bmN0aW9u
KHZhbHVlKQotewotICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICJvYmplY3QiIHx8ICEodmFsdWUg
aW5zdGFuY2VvZiBEYXRlKSkKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuZm9ybWF0QXNU
eXBlTmFtZSh2YWx1ZSk7Ci0gICAgdmFyIGRlbHRhID0gRGF0ZS5ub3coKSAtIHZhbHVlOwotICAg
IHJldHVybiAwIDw9IGRlbHRhICYmIGRlbHRhIDwgMzAgKiA2MCAqIDEwMDAgPyAiPHBsYXVzaWJs
ZT4iIDogdmFsdWU7Ci19CisgICAgSW5zcGVjdG9yVGVzdC5mb3JtYXR0ZXJzID0ge307CiAKLUlu
c3BlY3RvclRlc3QuYWRkT2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0LCBjdXN0b21Gb3JtYXR0ZXJz
LCBwcmVmaXgsIGZpcnN0TGluZVByZWZpeCkKLXsKLSAgICBwcmVmaXggPSBwcmVmaXggfHwgIiI7
Ci0gICAgZmlyc3RMaW5lUHJlZml4ID0gZmlyc3RMaW5lUHJlZml4IHx8IHByZWZpeDsKLSAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdChmaXJzdExpbmVQcmVmaXggKyAieyIpOwotICAgIHZhciBw
cm9wZXJ0eU5hbWVzID0gT2JqZWN0LmtleXMob2JqZWN0KTsKLSAgICBwcm9wZXJ0eU5hbWVzLnNv
cnQoKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgdmFyIHByb3AgPSBwcm9wZXJ0eU5hbWVzW2ldOwotICAgICAgICBpZiAodHlw
ZW9mIG9iamVjdC5oYXNPd25Qcm9wZXJ0eSA9PT0gImZ1bmN0aW9uIiAmJiAhb2JqZWN0Lmhhc093
blByb3BlcnR5KHByb3ApKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHZhciBwcmVm
aXhXaXRoTmFtZSA9ICIgICAgIiArIHByZWZpeCArIHByb3AgKyAiIDogIjsKLSAgICAgICAgdmFy
IHByb3BWYWx1ZSA9IG9iamVjdFtwcm9wXTsKLSAgICAgICAgaWYgKGN1c3RvbUZvcm1hdHRlcnMg
JiYgY3VzdG9tRm9ybWF0dGVyc1twcm9wXSkgewotICAgICAgICAgICAgdmFyIGZvcm1hdHRlck5h
bWUgPSBjdXN0b21Gb3JtYXR0ZXJzW3Byb3BdOwotICAgICAgICAgICAgaWYgKGZvcm1hdHRlck5h
bWUgIT09ICJza2lwIikgewotICAgICAgICAgICAgICAgIHZhciBmb3JtYXR0ZXIgPSBJbnNwZWN0
b3JUZXN0LmZvcm1hdHRlcnNbZm9ybWF0dGVyTmFtZV07Ci0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQocHJlZml4V2l0aE5hbWUgKyBmb3JtYXR0ZXIocHJvcFZhbHVlKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wKHByb3BWYWx1ZSwgY3VzdG9tRm9ybWF0dGVycywgIiAgICAiICsgcHJlZml4LCBwcmVm
aXhXaXRoTmFtZSk7CisgICAgSW5zcGVjdG9yVGVzdC5mb3JtYXR0ZXJzLmZvcm1hdEFzVHlwZU5h
bWUgPSBmdW5jdGlvbih2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiAiPCIgKyB0eXBlb2Yg
dmFsdWUgKyAiPiI7CiAgICAgfQotICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHByZWZpeCAr
ICJ9Iik7Ci19Ci0KLUluc3BlY3RvclRlc3QuYWRkQXJyYXkgPSBmdW5jdGlvbihhcnJheSwgY3Vz
dG9tRm9ybWF0dGVycywgcHJlZml4LCBmaXJzdExpbmVQcmVmaXgpCi17Ci0gICAgcHJlZml4ID0g
cHJlZml4IHx8ICIiOwotICAgIGZpcnN0TGluZVByZWZpeCA9IGZpcnN0TGluZVByZWZpeCB8fCBw
cmVmaXg7Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoZmlyc3RMaW5lUHJlZml4ICsgIlsi
KTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKQotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmR1bXAoYXJyYXlbaV0sIGN1c3RvbUZvcm1hdHRlcnMsIHByZWZpeCArICIg
ICAgIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocHJlZml4ICsgIl0iKTsKLX0KIAot
SW5zcGVjdG9yVGVzdC5kdW1wID0gZnVuY3Rpb24odmFsdWUsIGN1c3RvbUZvcm1hdHRlcnMsIHBy
ZWZpeCwgcHJlZml4V2l0aE5hbWUpCi17Ci0gICAgcHJlZml4V2l0aE5hbWUgPSBwcmVmaXhXaXRo
TmFtZSB8fCBwcmVmaXg7Ci0gICAgaWYgKHByZWZpeFdpdGhOYW1lICYmIHByZWZpeFdpdGhOYW1l
Lmxlbmd0aCA+IDgwKSB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHByZWZpeFdp
dGhOYW1lICsgIndhcyBza2lwcGVkIGR1ZSB0byBwcmVmaXggbGVuZ3RoIGxpbWl0Iik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICBJbnNwZWN0b3JUZXN0LmZvcm1hdHRlcnMuZm9ybWF0QXNSZWNlbnRU
aW1lID0gZnVuY3Rpb24odmFsdWUpCisgICAgeworICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9
PSAib2JqZWN0IiB8fCAhKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpCisgICAgICAgICAgICByZXR1
cm4gSW5zcGVjdG9yVGVzdC5mb3JtYXRBc1R5cGVOYW1lKHZhbHVlKTsKKyAgICAgICAgdmFyIGRl
bHRhID0gRGF0ZS5ub3coKSAtIHZhbHVlOworICAgICAgICByZXR1cm4gMCA8PSBkZWx0YSAmJiBk
ZWx0YSA8IDMwICogNjAgKiAxMDAwID8gIjxwbGF1c2libGU+IiA6IHZhbHVlOwogICAgIH0KLSAg
ICBpZiAodmFsdWUgPT09IG51bGwpCi0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHBy
ZWZpeFdpdGhOYW1lICsgIm51bGwiKTsKLSAgICBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFy
cmF5KQotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZEFycmF5KHZhbHVlLCBjdXN0b21Gb3JtYXR0
ZXJzLCBwcmVmaXgsIHByZWZpeFdpdGhOYW1lKTsKLSAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUg
PT09ICJvYmplY3QiKQotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZE9iamVjdCh2YWx1ZSwgY3Vz
dG9tRm9ybWF0dGVycywgcHJlZml4LCBwcmVmaXhXaXRoTmFtZSk7Ci0gICAgZWxzZSBpZiAodHlw
ZW9mIHZhbHVlID09PSAic3RyaW5nIikKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
cHJlZml4V2l0aE5hbWUgKyAiXCIiICsgdmFsdWUgKyAiXCIiKTsKLSAgICBlbHNlCi0gICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHByZWZpeFdpdGhOYW1lICsgdmFsdWUpOwotfQogCi1J
bnNwZWN0b3JUZXN0LmFzc2VydEdyZWF0ZXJPckVxdWFsID0gZnVuY3Rpb24oYSwgYiwgbWVzc2Fn
ZSkKLXsKLSAgICBpZiAoYSA8IGIpCi0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJG
QUlMRUQ6ICIgKyAobWVzc2FnZSA/IG1lc3NhZ2UgKyAiOiAiIDogIiIpICsgYSArICIgPCAiICsg
Yik7Ci19Ci0KLUluc3BlY3RvclRlc3QubmF2aWdhdGUgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNr
KQotewotICAgIEluc3BlY3RvclRlc3QuX3BhZ2VMb2FkZWRDYWxsYmFjayA9IEluc3BlY3RvclRl
c3Quc2FmZVdyYXAoY2FsbGJhY2spOwotCi0gICAgV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3Jr
IikuX3Jlc2V0KCk7Ci0gICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgid2luZG93
LmxvY2F0aW9uID0gJyIgKyB1cmwgKyAiJyIpOwotfQorICAgIEluc3BlY3RvclRlc3QuYWRkT2Jq
ZWN0ID0gZnVuY3Rpb24ob2JqZWN0LCBjdXN0b21Gb3JtYXR0ZXJzLCBwcmVmaXgsIGZpcnN0TGlu
ZVByZWZpeCkKKyAgICB7CisgICAgICAgIHByZWZpeCA9IHByZWZpeCB8fCAiIjsKKyAgICAgICAg
Zmlyc3RMaW5lUHJlZml4ID0gZmlyc3RMaW5lUHJlZml4IHx8IHByZWZpeDsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoZmlyc3RMaW5lUHJlZml4ICsgInsiKTsKKyAgICAgICAgdmFy
IHByb3BlcnR5TmFtZXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOworICAgICAgICBwcm9wZXJ0eU5h
bWVzLnNvcnQoKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcHJvcCA9IHByb3BlcnR5TmFtZXNbaV07Cisg
ICAgICAgICAgICBpZiAodHlwZW9mIG9iamVjdC5oYXNPd25Qcm9wZXJ0eSA9PT0gImZ1bmN0aW9u
IiAmJiAhb2JqZWN0Lmhhc093blByb3BlcnR5KHByb3ApKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgdmFyIHByZWZpeFdpdGhOYW1lID0gIiAgICAiICsgcHJlZml4ICsg
cHJvcCArICIgOiAiOworICAgICAgICAgICAgdmFyIHByb3BWYWx1ZSA9IG9iamVjdFtwcm9wXTsK
KyAgICAgICAgICAgIGlmIChjdXN0b21Gb3JtYXR0ZXJzICYmIGN1c3RvbUZvcm1hdHRlcnNbcHJv
cF0pIHsKKyAgICAgICAgICAgICAgICB2YXIgZm9ybWF0dGVyTmFtZSA9IGN1c3RvbUZvcm1hdHRl
cnNbcHJvcF07CisgICAgICAgICAgICAgICAgaWYgKGZvcm1hdHRlck5hbWUgIT09ICJza2lwIikg
eworICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0dGVyID0gSW5zcGVjdG9yVGVzdC5mb3Jt
YXR0ZXJzW2Zvcm1hdHRlck5hbWVdOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdChwcmVmaXhXaXRoTmFtZSArIGZvcm1hdHRlcihwcm9wVmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmR1bXAocHJvcFZhbHVlLCBjdXN0b21Gb3JtYXR0ZXJzLCAiICAgICIgKyBwcmVmaXgs
IHByZWZpeFdpdGhOYW1lKTsKKyAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdChwcmVmaXggKyAifSIpOworICAgIH0KIAotSW5zcGVjdG9yVGVzdC5oYXJkUmVsb2FkUGFn
ZSA9IGZ1bmN0aW9uKGNhbGxiYWNrLCBzY3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVw
cm9jZXNzb3IpCi17Ci0gICAgSW5zcGVjdG9yVGVzdC5faW5uZXJSZWxvYWRQYWdlKHRydWUsIGNh
bGxiYWNrLCBzY3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVwcm9jZXNzb3IpOwotfQor
ICAgIEluc3BlY3RvclRlc3QuYWRkQXJyYXkgPSBmdW5jdGlvbihhcnJheSwgY3VzdG9tRm9ybWF0
dGVycywgcHJlZml4LCBmaXJzdExpbmVQcmVmaXgpCisgICAgeworICAgICAgICBwcmVmaXggPSBw
cmVmaXggfHwgIiI7CisgICAgICAgIGZpcnN0TGluZVByZWZpeCA9IGZpcnN0TGluZVByZWZpeCB8
fCBwcmVmaXg7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGZpcnN0TGluZVByZWZp
eCArICJbIik7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kp
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXAoYXJyYXlbaV0sIGN1c3RvbUZvcm1hdHRl
cnMsIHByZWZpeCArICIgICAgIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHBy
ZWZpeCArICJdIik7CisgICAgfQogCi1JbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UgPSBmdW5jdGlv
bihjYWxsYmFjaywgc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJvY2Vzc29yKQot
ewotICAgIEluc3BlY3RvclRlc3QuX2lubmVyUmVsb2FkUGFnZShmYWxzZSwgY2FsbGJhY2ssIHNj
cmlwdFRvRXZhbHVhdGVPbkxvYWQsIHNjcmlwdFByZXByb2Nlc3Nvcik7Ci19CisgICAgSW5zcGVj
dG9yVGVzdC5kdW1wID0gZnVuY3Rpb24odmFsdWUsIGN1c3RvbUZvcm1hdHRlcnMsIHByZWZpeCwg
cHJlZml4V2l0aE5hbWUpCisgICAgeworICAgICAgICBwcmVmaXhXaXRoTmFtZSA9IHByZWZpeFdp
dGhOYW1lIHx8IHByZWZpeDsKKyAgICAgICAgaWYgKHByZWZpeFdpdGhOYW1lICYmIHByZWZpeFdp
dGhOYW1lLmxlbmd0aCA+IDgwKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dChwcmVmaXhXaXRoTmFtZSArICJ3YXMgc2tpcHBlZCBkdWUgdG8gcHJlZml4IGxlbmd0aCBsaW1p
dCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSA9
PT0gbnVsbCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHByZWZpeFdpdGhO
YW1lICsgIm51bGwiKTsKKyAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkQXJyYXkodmFsdWUsIGN1c3RvbUZvcm1hdHRl
cnMsIHByZWZpeCwgcHJlZml4V2l0aE5hbWUpOworICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFs
dWUgPT09ICJvYmplY3QiKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRPYmplY3QodmFs
dWUsIGN1c3RvbUZvcm1hdHRlcnMsIHByZWZpeCwgcHJlZml4V2l0aE5hbWUpOworICAgICAgICBl
bHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQocHJlZml4V2l0aE5hbWUgKyAiXCIiICsgdmFsdWUgKyAiXCIiKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocHJlZml4V2l0
aE5hbWUgKyB2YWx1ZSk7CisgICAgfQogCi1JbnNwZWN0b3JUZXN0Ll9pbm5lclJlbG9hZFBhZ2Ug
PSBmdW5jdGlvbihoYXJkUmVsb2FkLCBjYWxsYmFjaywgc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwg
c2NyaXB0UHJlcHJvY2Vzc29yKQotewotICAgIEluc3BlY3RvclRlc3QuX3BhZ2VMb2FkZWRDYWxs
YmFjayA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOworICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0R3JlYXRlck9yRXF1YWwgPSBmdW5jdGlvbihhLCBiLCBtZXNzYWdlKQorICAgIHsK
KyAgICAgICAgaWYgKGEgPCBiKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IkZBSUxFRDogIiArIChtZXNzYWdlID8gbWVzc2FnZSArICI6ICIgOiAiIikgKyBhICsgIiA8ICIg
KyBiKTsKKyAgICB9CiAKLSAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrKQotICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX3Jlc2V0KCk7Ci0gICAgUGFnZUFnZW50
LnJlbG9hZChoYXJkUmVsb2FkLCBzY3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVwcm9j
ZXNzb3IpOwotfQorICAgIEluc3BlY3RvclRlc3QubmF2aWdhdGUgPSBmdW5jdGlvbih1cmwsIGNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5fcGFnZUxvYWRlZENhbGxiYWNr
ID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjayk7CiAKLUluc3BlY3RvclRlc3QucGFn
ZUxvYWRlZCA9IGZ1bmN0aW9uKCkKLXsKLSAgICByZXN1bHRzU3luY2hyb25pemVkID0gZmFsc2U7
Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlBhZ2UgcmVsb2FkZWQuIik7Ci0gICAgaWYg
KEluc3BlY3RvclRlc3QuX3BhZ2VMb2FkZWRDYWxsYmFjaykgewotICAgICAgICB2YXIgY2FsbGJh
Y2sgPSBJbnNwZWN0b3JUZXN0Ll9wYWdlTG9hZGVkQ2FsbGJhY2s7Ci0gICAgICAgIGRlbGV0ZSBJ
bnNwZWN0b3JUZXN0Ll9wYWdlTG9hZGVkQ2FsbGJhY2s7Ci0gICAgICAgIGNhbGxiYWNrKCk7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLl9yZXNldCgpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJ3aW5kb3cubG9jYXRpb24gPSAnIiArIHVy
bCArICInIik7CiAgICAgfQotfQogCi1JbnNwZWN0b3JUZXN0LnJ1bldoZW5QYWdlTG9hZHMgPSBm
dW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICB2YXIgb2xkQ2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0
Ll9wYWdlTG9hZGVkQ2FsbGJhY2s7Ci0gICAgZnVuY3Rpb24gY2hhaW5lZENhbGxiYWNrKCkKKyAg
ICBJbnNwZWN0b3JUZXN0LmhhcmRSZWxvYWRQYWdlID0gZnVuY3Rpb24oY2FsbGJhY2ssIHNjcmlw
dFRvRXZhbHVhdGVPbkxvYWQsIHNjcmlwdFByZXByb2Nlc3NvcikKICAgICB7Ci0gICAgICAgIGlm
IChvbGRDYWxsYmFjaykKLSAgICAgICAgICAgIG9sZENhbGxiYWNrKCk7Ci0gICAgICAgIGNhbGxi
YWNrKCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuX2lubmVyUmVsb2FkUGFnZSh0cnVlLCBjYWxs
YmFjaywgc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJvY2Vzc29yKTsKICAgICB9
Ci0gICAgSW5zcGVjdG9yVGVzdC5fcGFnZUxvYWRlZENhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5z
YWZlV3JhcChjaGFpbmVkQ2FsbGJhY2spOwotfQogCi1JbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVu
ZGluZ0Rpc3BhdGNoZXMgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICBjYWxsYmFjayA9IElu
c3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOwotICAgIEluc3BlY3RvckJhY2tlbmQucnVu
QWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhjYWxsYmFjayk7Ci19CisgICAgSW5zcGVjdG9yVGVzdC5y
ZWxvYWRQYWdlID0gZnVuY3Rpb24oY2FsbGJhY2ssIHNjcmlwdFRvRXZhbHVhdGVPbkxvYWQsIHNj
cmlwdFByZXByb2Nlc3NvcikKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuX2lubmVyUmVs
b2FkUGFnZShmYWxzZSwgY2FsbGJhY2ssIHNjcmlwdFRvRXZhbHVhdGVPbkxvYWQsIHNjcmlwdFBy
ZXByb2Nlc3Nvcik7CisgICAgfQogCi1JbnNwZWN0b3JUZXN0LmNyZWF0ZUtleUV2ZW50ID0gZnVu
Y3Rpb24oa2V5SWRlbnRpZmllciwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSkK
LXsKLSAgICB2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIktleWJvYXJkRXZlbnQiKTsK
LSAgICBldnQuaW5pdEtleWJvYXJkRXZlbnQoImtleWRvd24iLCB0cnVlIC8qIGNhbiBidWJibGUg
Ki8sIHRydWUgLyogY2FuIGNhbmNlbCAqLywgbnVsbCAvKiB2aWV3ICovLCBrZXlJZGVudGlmaWVy
LCAiIiwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSk7Ci0gICAgcmV0dXJuIGV2
dDsKLX0KKyAgICBJbnNwZWN0b3JUZXN0Ll9pbm5lclJlbG9hZFBhZ2UgPSBmdW5jdGlvbihoYXJk
UmVsb2FkLCBjYWxsYmFjaywgc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJvY2Vz
c29yKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5fcGFnZUxvYWRlZENhbGxiYWNrID0g
SW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjayk7CiAKLUluc3BlY3RvclRlc3QucnVuVGVz
dFN1aXRlID0gZnVuY3Rpb24odGVzdFN1aXRlKQotewotICAgIHZhciB0ZXN0U3VpdGVUZXN0cyA9
IHRlc3RTdWl0ZS5zbGljZSgpOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3
b3JrKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9yZXNldCgpOwor
ICAgICAgICBQYWdlQWdlbnQucmVsb2FkKGhhcmRSZWxvYWQsIHNjcmlwdFRvRXZhbHVhdGVPbkxv
YWQsIHNjcmlwdFByZXByb2Nlc3Nvcik7CisgICAgfQogCi0gICAgZnVuY3Rpb24gcnVubmVyKCkK
KyAgICBJbnNwZWN0b3JUZXN0LnBhZ2VMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICBpZiAoIXRlc3RTdWl0ZVRlc3RzLmxlbmd0aCkgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcmVzdWx0c1N5
bmNocm9uaXplZCA9IGZhbHNlOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUGFn
ZSByZWxvYWRlZC4iKTsKKyAgICAgICAgaWYgKEluc3BlY3RvclRlc3QuX3BhZ2VMb2FkZWRDYWxs
YmFjaykgeworICAgICAgICAgICAgdmFyIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5fcGFnZUxv
YWRlZENhbGxiYWNrOworICAgICAgICAgICAgZGVsZXRlIEluc3BlY3RvclRlc3QuX3BhZ2VMb2Fk
ZWRDYWxsYmFjazsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgIH0KLSAgICAgICAg
dmFyIG5leHRUZXN0ID0gdGVzdFN1aXRlVGVzdHMuc2hpZnQoKTsKLSAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIiIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUnVu
bmluZzogIiArIC9mdW5jdGlvblxzKFteKF0qKS8uZXhlYyhuZXh0VGVzdClbMV0pOwotICAgICAg
ICBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKG5leHRUZXN0KShydW5uZXIsIHJ1bm5lcik7CiAgICAg
fQotICAgIHJ1bm5lcigpOwotfQogCi1JbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyA9IGZ1bmN0
aW9uKGV4cGVjdGVkLCBmb3VuZCwgbWVzc2FnZSkKLXsKLSAgICBpZiAoZXhwZWN0ZWQgPT09IGZv
dW5kKQotICAgICAgICByZXR1cm47CisgICAgSW5zcGVjdG9yVGVzdC5ydW5XaGVuUGFnZUxvYWRz
ID0gZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICB2YXIgb2xkQ2FsbGJhY2sgPSBJ
bnNwZWN0b3JUZXN0Ll9wYWdlTG9hZGVkQ2FsbGJhY2s7CisgICAgICAgIGZ1bmN0aW9uIGNoYWlu
ZWRDYWxsYmFjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChvbGRDYWxsYmFjaykKKyAg
ICAgICAgICAgICAgICBvbGRDYWxsYmFjaygpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAg
ICAgICAgfQorICAgICAgICBJbnNwZWN0b3JUZXN0Ll9wYWdlTG9hZGVkQ2FsbGJhY2sgPSBJbnNw
ZWN0b3JUZXN0LnNhZmVXcmFwKGNoYWluZWRDYWxsYmFjayk7CisgICAgfQogCi0gICAgdmFyIGVy
cm9yOwotICAgIGlmIChtZXNzYWdlKQotICAgICAgICBlcnJvciA9ICJGYWlsdXJlICgiICsgbWVz
c2FnZSArICIpOiI7Ci0gICAgZWxzZQotICAgICAgICBlcnJvciA9ICJGYWlsdXJlOiI7Ci0gICAg
dGhyb3cgbmV3IEVycm9yKGVycm9yICsgIiBleHBlY3RlZCA8IiArIGV4cGVjdGVkICsgIj4gZm91
bmQgPCIgKyBmb3VuZCArICI+Iik7Ci19CisgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRp
bmdEaXNwYXRjaGVzID0gZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICBjYWxsYmFj
ayA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOworICAgICAgICBJbnNwZWN0b3JC
YWNrZW5kLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoY2FsbGJhY2spOworICAgIH0KIAotSW5z
cGVjdG9yVGVzdC5hc3NlcnRUcnVlID0gZnVuY3Rpb24oZm91bmQsIG1lc3NhZ2UpCi17Ci0gICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFmb3VuZCwgbWVzc2FnZSk7Ci19Cisg
ICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVLZXlFdmVudCA9IGZ1bmN0aW9uKGtleUlkZW50aWZpZXIs
IGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpCisgICAgeworICAgICAgICB2YXIg
ZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIktleWJvYXJkRXZlbnQiKTsKKyAgICAgICAgZXZ0
LmluaXRLZXlib2FyZEV2ZW50KCJrZXlkb3duIiwgdHJ1ZSAvKiBjYW4gYnViYmxlICovLCB0cnVl
IC8qIGNhbiBjYW5jZWwgKi8sIG51bGwgLyogdmlldyAqLywga2V5SWRlbnRpZmllciwgIiIsIGN0
cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpOworICAgICAgICByZXR1cm4gZXZ0Owor
ICAgIH0KIAotSW5zcGVjdG9yVGVzdC5zYWZlV3JhcCA9IGZ1bmN0aW9uKGZ1bmMsIG9uZXhjZXB0
aW9uKQotewotICAgIGZ1bmN0aW9uIHJlc3VsdCgpCisgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0
U3VpdGUgPSBmdW5jdGlvbih0ZXN0U3VpdGUpCiAgICAgewotICAgICAgICBpZiAoIWZ1bmMpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHZhciB3cmFwVGhpcyA9IHRoaXM7Ci0gICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh3cmFwVGhpcywgYXJndW1lbnRz
KTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiRXhjZXB0aW9uIHdoaWxlIHJ1bm5pbmc6ICIgKyBmdW5jICsgIlxuIiArIChlLnN0YWNr
IHx8IGUpKTsKLSAgICAgICAgICAgIGlmIChvbmV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LnNhZmVXcmFwKG9uZXhjZXB0aW9uKSgpOwotICAgICAgICAgICAgZWxzZQor
ICAgICAgICB2YXIgdGVzdFN1aXRlVGVzdHMgPSB0ZXN0U3VpdGUuc2xpY2UoKTsKKworICAgICAg
ICBmdW5jdGlvbiBydW5uZXIoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXRlc3RTdWl0
ZVRlc3RzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVU
ZXN0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdmFyIG5leHRUZXN0ID0gdGVzdFN1aXRlVGVzdHMuc2hpZnQoKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJSdW5uaW5nOiAiICsgL2Z1bmN0aW9uXHMoW14oXSopLy5leGVjKG5leHRUZXN0KVsx
XSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKG5leHRUZXN0KShydW5uZXIs
IHJ1bm5lcik7CiAgICAgICAgIH0KKyAgICAgICAgcnVubmVyKCk7CiAgICAgfQotICAgIHJldHVy
biByZXN1bHQ7Ci19CiAKLUluc3BlY3RvclRlc3QuYWRkU25pZmZlciA9IGZ1bmN0aW9uKHJlY2Vp
dmVyLCBtZXRob2ROYW1lLCBvdmVycmlkZSwgb3B0X3N0aWNreSkKLXsKLSAgICBvdmVycmlkZSA9
IEluc3BlY3RvclRlc3Quc2FmZVdyYXAob3ZlcnJpZGUpOworICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzID0gZnVuY3Rpb24oZXhwZWN0ZWQsIGZvdW5kLCBtZXNzYWdlKQorICAgIHsKKyAg
ICAgICAgaWYgKGV4cGVjdGVkID09PSBmb3VuZCkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAg
IHZhciBvcmlnaW5hbCA9IHJlY2VpdmVyW21ldGhvZE5hbWVdOwotICAgIGlmICh0eXBlb2Ygb3Jp
Z2luYWwgIT09ICJmdW5jdGlvbiIpCi0gICAgICAgIHRocm93ICgiQ2Fubm90IGZpbmQgbWV0aG9k
IHRvIG92ZXJyaWRlOiAiICsgbWV0aG9kTmFtZSk7CisgICAgICAgIHZhciBlcnJvcjsKKyAgICAg
ICAgaWYgKG1lc3NhZ2UpCisgICAgICAgICAgICBlcnJvciA9ICJGYWlsdXJlICgiICsgbWVzc2Fn
ZSArICIpOiI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVycm9yID0gIkZhaWx1cmU6IjsK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yICsgIiBleHBlY3RlZCA8IiArIGV4cGVjdGVk
ICsgIj4gZm91bmQgPCIgKyBmb3VuZCArICI+Iik7CisgICAgfQogCi0gICAgcmVjZWl2ZXJbbWV0
aG9kTmFtZV0gPSBmdW5jdGlvbih2YXJfYXJncykgewotICAgICAgICB0cnkgewotICAgICAgICAg
ICAgdmFyIHJlc3VsdCA9IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAg
IH0gZmluYWxseSB7Ci0gICAgICAgICAgICBpZiAoIW9wdF9zdGlja3kpCi0gICAgICAgICAgICAg
ICAgcmVjZWl2ZXJbbWV0aG9kTmFtZV0gPSBvcmlnaW5hbDsKLSAgICAgICAgfQotICAgICAgICAv
LyBJbiBjYXNlIG9mIGV4Y2VwdGlvbiB0aGUgb3ZlcnJpZGUgd29uJ3QgYmUgY2FsbGVkLgotICAg
ICAgICB0cnkgewotICAgICAgICAgICAgb3ZlcnJpZGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsK
LSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgdGhyb3cgKCJFeGNlcHRpb24gaW4g
b3ZlcnJpZGVuIG1ldGhvZCAnIiArIG1ldGhvZE5hbWUgKyAiJzogIiArIGUpOworICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0VHJ1ZSA9IGZ1bmN0aW9uKGZvdW5kLCBtZXNzYWdlKQorICAgIHsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFmb3VuZCwgbWVzc2FnZSk7
CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5zYWZlV3JhcCA9IGZ1bmN0aW9uKGZ1bmMsIG9u
ZXhjZXB0aW9uKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gcmVzdWx0KCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKCFmdW5jKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIHZhciB3cmFwVGhpcyA9IHRoaXM7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAg
ICAgIHJldHVybiBmdW5jLmFwcGx5KHdyYXBUaGlzLCBhcmd1bWVudHMpOworICAgICAgICAgICAg
fSBjYXRjaChlKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkV4
Y2VwdGlvbiB3aGlsZSBydW5uaW5nOiAiICsgZnVuYyArICJcbiIgKyAoZS5zdGFjayB8fCBlKSk7
CisgICAgICAgICAgICAgICAgaWYgKG9uZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LnNhZmVXcmFwKG9uZXhjZXB0aW9uKSgpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH07Ci19
Ci0KLUluc3BlY3RvclRlc3QuYWRkQ29uc29sZVNuaWZmZXIgPSBmdW5jdGlvbihvdmVycmlkZSwg
b3B0X3N0aWNreSkKLXsKLSAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9y
LkNvbnNvbGVWaWV3LnByb3RvdHlwZSwgIl9hcHBlbmRDb25zb2xlTWVzc2FnZSIsIG92ZXJyaWRl
LCBvcHRfc3RpY2t5KTsKLX0KKyAgICB9CiAKLUluc3BlY3RvclRlc3Qub3ZlcnJpZGUgPSBmdW5j
dGlvbihyZWNlaXZlciwgbWV0aG9kTmFtZSwgb3ZlcnJpZGUsIG9wdF9zdGlja3kpCi17Ci0gICAg
b3ZlcnJpZGUgPSBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKG92ZXJyaWRlKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmFkZFNuaWZmZXIgPSBmdW5jdGlvbihyZWNlaXZlciwgbWV0aG9kTmFtZSwgb3ZlcnJp
ZGUsIG9wdF9zdGlja3kpCisgICAgeworICAgICAgICBvdmVycmlkZSA9IEluc3BlY3RvclRlc3Qu
c2FmZVdyYXAob3ZlcnJpZGUpOwogCi0gICAgdmFyIG9yaWdpbmFsID0gcmVjZWl2ZXJbbWV0aG9k
TmFtZV07Ci0gICAgaWYgKHR5cGVvZiBvcmlnaW5hbCAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAg
dGhyb3cgKCJDYW5ub3QgZmluZCBtZXRob2QgdG8gb3ZlcnJpZGU6ICIgKyBtZXRob2ROYW1lKTsK
KyAgICAgICAgdmFyIG9yaWdpbmFsID0gcmVjZWl2ZXJbbWV0aG9kTmFtZV07CisgICAgICAgIGlm
ICh0eXBlb2Ygb3JpZ2luYWwgIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0aHJvdyAoIkNh
bm5vdCBmaW5kIG1ldGhvZCB0byBvdmVycmlkZTogIiArIG1ldGhvZE5hbWUpOwogCi0gICAgcmVj
ZWl2ZXJbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbih2YXJfYXJncykgewotICAgICAgICB0cnkgewor
ICAgICAgICByZWNlaXZlclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKHZhcl9hcmdzKSB7CisgICAg
ICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBvcmlnaW5hbC5hcHBs
eSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAg
ICAgICBpZiAoIW9wdF9zdGlja3kpCisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyW21ldGhv
ZE5hbWVdID0gb3JpZ2luYWw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBJbiBjYXNl
IG9mIGV4Y2VwdGlvbiB0aGUgb3ZlcnJpZGUgd29uJ3QgYmUgY2FsbGVkLgogICAgICAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb3ZlcnJpZGUuYXBwbHkodGhpcywg
YXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICBvdmVycmlkZS5hcHBseSh0aGlzLCBhcmd1bWVu
dHMpOwogICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgIHRocm93ICgi
RXhjZXB0aW9uIGluIG92ZXJyaWRlbiBtZXRob2QgJyIgKyBtZXRob2ROYW1lICsgIic6ICIgKyBl
KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGlmICgh
b3B0X3N0aWNreSkKLSAgICAgICAgICAgICAgICByZWNlaXZlclttZXRob2ROYW1lXSA9IG9yaWdp
bmFsOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfTsKKyAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH07CisgICAgfQogCi0gICAgcmV0dXJuIG9yaWdp
bmFsOwotfQorICAgIEluc3BlY3RvclRlc3QuYWRkQ29uc29sZVNuaWZmZXIgPSBmdW5jdGlvbihv
dmVycmlkZSwgb3B0X3N0aWNreSkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25p
ZmZlcihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiX2FwcGVuZENvbnNvbGVN
ZXNzYWdlIiwgb3ZlcnJpZGUsIG9wdF9zdGlja3kpOworICAgIH0KIAotSW5zcGVjdG9yVGVzdC50
ZXh0Q29udGVudFdpdGhMaW5lQnJlYWtzID0gZnVuY3Rpb24obm9kZSkKLXsKLSAgICB2YXIgYnVm
ZmVyID0gIiI7Ci0gICAgdmFyIGN1cnJlbnROb2RlID0gbm9kZTsKLSAgICB3aGlsZSAoY3VycmVu
dE5vZGUgPSBjdXJyZW50Tm9kZS50cmF2ZXJzZU5leHROb2RlKG5vZGUpKSB7Ci0gICAgICAgIGlm
IChjdXJyZW50Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpCi0gICAgICAgICAgICBi
dWZmZXIgKz0gY3VycmVudE5vZGUubm9kZVZhbHVlOwotICAgICAgICBlbHNlIGlmIChjdXJyZW50
Tm9kZS5ub2RlTmFtZSA9PT0gIkxJIikKLSAgICAgICAgICAgIGJ1ZmZlciArPSAiXG4gICAgIjsK
LSAgICAgICAgZWxzZSBpZiAoY3VycmVudE5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJjb25zb2xl
LW1lc3NhZ2UiKSkKLSAgICAgICAgICAgIGJ1ZmZlciArPSAiXG5cbiI7Ci0gICAgfQotICAgIHJl
dHVybiBidWZmZXI7Ci19CisgICAgSW5zcGVjdG9yVGVzdC5vdmVycmlkZSA9IGZ1bmN0aW9uKHJl
Y2VpdmVyLCBtZXRob2ROYW1lLCBvdmVycmlkZSwgb3B0X3N0aWNreSkKKyAgICB7CisgICAgICAg
IG92ZXJyaWRlID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChvdmVycmlkZSk7CiAKLUluc3BlY3Rv
clRlc3QuU3RyaW5nT3V0cHV0U3RyZWFtID0gZnVuY3Rpb24oY2FsbGJhY2spCi17Ci0gICAgdGhp
cy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKLSAgICB0aGlzLl9idWZmZXIgPSAiIjsKLX07CisgICAg
ICAgIHZhciBvcmlnaW5hbCA9IHJlY2VpdmVyW21ldGhvZE5hbWVdOworICAgICAgICBpZiAodHlw
ZW9mIG9yaWdpbmFsICE9PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgdGhyb3cgKCJDYW5ub3Qg
ZmluZCBtZXRob2QgdG8gb3ZlcnJpZGU6ICIgKyBtZXRob2ROYW1lKTsKIAotSW5zcGVjdG9yVGVz
dC5TdHJpbmdPdXRwdXRTdHJlYW0ucHJvdG90eXBlID0gewotICAgIHdyaXRlOiBmdW5jdGlvbihj
aHVuaywgY2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLl9idWZmZXIgKz0gY2h1bms7Ci0g
ICAgICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMpOwotICAgIH0s
CisgICAgICAgIHJlY2VpdmVyW21ldGhvZE5hbWVdID0gZnVuY3Rpb24odmFyX2FyZ3MpIHsKKyAg
ICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIHJlc3VsdCA9IG92ZXJyaWRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAg
ICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyAoIkV4Y2Vw
dGlvbiBpbiBvdmVycmlkZW4gbWV0aG9kICciICsgbWV0aG9kTmFtZSArICInOiAiICsgZSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAg
ICBpZiAoIW9wdF9zdGlja3kpCisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyW21ldGhvZE5h
bWVdID0gb3JpZ2luYWw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICB9OworCisgICAgICAgIHJldHVybiBvcmlnaW5hbDsKKyAgICB9CiAKLSAgICBj
bG9zZTogZnVuY3Rpb24oKQorICAgIEluc3BlY3RvclRlc3QudGV4dENvbnRlbnRXaXRoTGluZUJy
ZWFrcyA9IGZ1bmN0aW9uKG5vZGUpCiAgICAgewotICAgICAgICB0aGlzLl9jYWxsYmFjayh0aGlz
Ll9idWZmZXIpOworICAgICAgICB2YXIgYnVmZmVyID0gIiI7CisgICAgICAgIHZhciBjdXJyZW50
Tm9kZSA9IG5vZGU7CisgICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnRy
YXZlcnNlTmV4dE5vZGUobm9kZSkpIHsKKyAgICAgICAgICAgIGlmIChjdXJyZW50Tm9kZS5ub2Rl
VHlwZSA9PT0gTm9kZS5URVhUX05PREUpCisgICAgICAgICAgICAgICAgYnVmZmVyICs9IGN1cnJl
bnROb2RlLm5vZGVWYWx1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnROb2RlLm5vZGVO
YW1lID09PSAiTEkiKQorICAgICAgICAgICAgICAgIGJ1ZmZlciArPSAiXG4gICAgIjsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGN1cnJlbnROb2RlLmNsYXNzTGlzdC5jb250YWlucygiY29uc29sZS1t
ZXNzYWdlIikpCisgICAgICAgICAgICAgICAgYnVmZmVyICs9ICJcblxuIjsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gYnVmZmVyOwogICAgIH0KLX07CisKKyAgICBJbnNwZWN0b3JUZXN0LlN0
cmluZ091dHB1dFN0cmVhbSA9IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhp
cy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgdGhpcy5fYnVmZmVyID0gIiI7CisgICAg
fTsKKworICAgIEluc3BlY3RvclRlc3QuU3RyaW5nT3V0cHV0U3RyZWFtLnByb3RvdHlwZSA9IHsK
KyAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGNodW5rLCBjYWxsYmFjaykKKyAgICAgICAgeworICAg
ICAgICAgICAgdGhpcy5fYnVmZmVyICs9IGNodW5rOworICAgICAgICAgICAgaWYgKGNhbGxiYWNr
KQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMpOworICAgICAgICB9LAorCisgICAgICAg
IGNsb3NlOiBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNr
KHRoaXMuX2J1ZmZlcik7CisgICAgICAgIH0KKyAgICB9OwogCiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181959</attachid>
            <date>2013-01-09 11:38:43 -0800</date>
            <delta_ts>2013-01-10 09:21:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106231-20130109113546.patch</filename>
            <type>text/plain</type>
            <size>3438</size>
            <attacher name="johnjbarton">johnjbarton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MjEwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGMyMDRiNzRlZGVkYmFhNGFmNjJh
MDA1YmNlMjg0MjM1MTZjOTc3ZS4uNDU1NzA2N2VkMDgxMGE5N2UwNGJiZjYyNDk0ZGUxMzU2YjQx
MzJjMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAxLTA5ICBKb2huIEouIEJhcnRvbiAg
PGpvaG5qYmFydG9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWZh
Y3RvciBJbnNwZWN0b3JUZXN0IHRvIGNyZWF0ZSBvdXRwdXQgaW50ZXJmYWNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBJbnNwZWN0b3JU
ZXN0IHRvIGV4dHJhY3QgSW5zcGVjdG9yVGVzdC5PdXRwdXQsIHRoZSBBUEkgCisgICAgICAgIHVz
ZWQgYmV0d2VlbiBJbnNwZWN0b3JUZXN0IGFuZCB0aGUgdGVzdCBvdXRwdXQgcmVjaWV2ZXIgKHRo
ZSAKKyAgICAgICAgdGVzdC1zY3JpcHQgcGFnZSBieSBkZWZhdWx0KS4KKworICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6
ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QuT3V0cHV0LnRlc3RDb21wbGV0ZSk6CisgICAg
ICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5PdXRwdXQuYWRkUmVz
dWx0KToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0Lk91
dHB1dC5jbGVhclJlc3VsdHMpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lklu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9y
VGVzdC5JbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCk6CisKIDIwMTMtMDEtMDkgIERpbWl0cmkgR2xh
emtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIGZhc3Qv
aW1hZ2VzL2VtYmVkLWRvZXMtbm90LXByb3BhZ2F0ZS1kaW1lbnNpb25zLXRvLW9iamVjdC1hbmNl
c3Rvci5odG1sIGlzIGEgZmxha3kgY3Jhc2guCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCmluZGV4IDY5ODdiOTI3NTMwM2Q0ZGU2NWQx
NjNjYWQ4YmZhOWVmYWZjY2E5MTkuLmI0NjE1M2JjZGExN2NjYTk5OTlmNzQ3MjU4YmQ3ZmE1ZmU3
ZDM3YWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzCkBAIC0xMiw2ICsxMiwyMSBAQCBjb25zb2xlLmxvZyA9IGNvbnNvbGVPdXRw
dXRIb29rLmJpbmQoSW5zcGVjdG9yVGVzdCwgImxvZyIpOwogY29uc29sZS5lcnJvciA9IGNvbnNv
bGVPdXRwdXRIb29rLmJpbmQoSW5zcGVjdG9yVGVzdCwgImVycm9yIik7CiBjb25zb2xlLmluZm8g
PSBjb25zb2xlT3V0cHV0SG9vay5iaW5kKEluc3BlY3RvclRlc3QsICJpbmZvIik7CiAKK0luc3Bl
Y3RvclRlc3QuT3V0cHV0ID0geyAgIC8vIG92ZXJyaWRlIGluIHdpbmRvdy5pbml0aWFsaXplX3lv
dXJOYW1lCisgICAgdGVzdENvbXBsZXRlOiBmdW5jdGlvbigpIAorICAgIHsKKyAgICAgICAgUnVu
dGltZUFnZW50LmV2YWx1YXRlKCJkaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKCIgKyBJbnNw
ZWN0b3JUZXN0LmNvbXBsZXRlVGVzdENhbGxJZCArICIsIFwiXCIpIiwgInRlc3QiKTsKKyAgICB9
LAorICAgIGFkZFJlc3VsdDogZnVuY3Rpb24odGV4dCkgCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJvdXRwdXQodW5lc2NhcGUoJyIgKyBlc2NhcGUodGV4dCkg
KyAiJykpIik7CisgICAgfSwKKyAgICBjbGVhclJlc3VsdHM6IGZ1bmN0aW9uKCkgCisgICAgewor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjbGVhck91dHB1dCgpIik7Cisg
ICAgfQorfTsKKwogSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QgPSBmdW5jdGlvbigpCiB7CiAg
ICAgZnVuY3Rpb24gdGVzdERpc3BhdGNoUXVldWVJc0VtcHR5KCkgewpAQCAtMjAsNyArMzUsNyBA
QCBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHNl
dFRpbWVvdXQodGVzdERpc3BhdGNoUXVldWVJc0VtcHR5LCAxMCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgUnVudGltZUFnZW50LmV2YWx1YXRlKCJkaWRFdmFsdWF0
ZUZvclRlc3RJbkZyb250ZW5kKCIgKyBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdENhbGxJZCAr
ICIsIFwiXCIpIiwgInRlc3QiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5PdXRwdXQudGVzdENv
bXBsZXRlKCk7CiAgICAgfQogICAgIHRlc3REaXNwYXRjaFF1ZXVlSXNFbXB0eSgpOwogfQpAQCAt
NzMsMjMgKzg4LDEzIEBAIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0ID0gZnVuY3Rpb24odGV4dCkK
IHsKICAgICByZXN1bHRzLnB1c2godGV4dCk7CiAgICAgaWYgKHJlc3VsdHNTeW5jaHJvbml6ZWQp
Ci0gICAgICAgIGFkZFJlc3VsdFRvUGFnZSh0ZXh0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5P
dXRwdXQuYWRkUmVzdWx0KHRleHQpOwogICAgIGVsc2UgewotICAgICAgICBjbGVhclJlc3VsdHMo
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5PdXRwdXQuY2xlYXJSZXN1bHRzKCk7CiAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGFk
ZFJlc3VsdFRvUGFnZShyZXN1bHRzW2ldKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuT3V0
cHV0LmFkZFJlc3VsdChyZXN1bHRzW2ldKTsKICAgICAgICAgcmVzdWx0c1N5bmNocm9uaXplZCA9
IHRydWU7CiAgICAgfQotCi0gICAgZnVuY3Rpb24gY2xlYXJSZXN1bHRzKCkKLSAgICB7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNsZWFyT3V0cHV0KCkiKTsKLSAgICB9
Ci0KLSAgICBmdW5jdGlvbiBhZGRSZXN1bHRUb1BhZ2UodGV4dCkKLSAgICB7Ci0gICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIm91dHB1dCh1bmVzY2FwZSgnIiArIGVzY2FwZSh0
ZXh0KSArICInKSkiKTsKLSAgICB9CiB9CiAKIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0cyA9IGZ1
bmN0aW9uKHRleHRBcnJheSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182154</attachid>
            <date>2013-01-10 09:21:50 -0800</date>
            <delta_ts>2013-01-10 10:27:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106231-20130110091853.patch</filename>
            <type>text/plain</type>
            <size>3446</size>
            <attacher name="johnjbarton">johnjbarton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MjEwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGMyMDRiNzRlZGVkYmFhNGFmNjJh
MDA1YmNlMjg0MjM1MTZjOTc3ZS4uNDU1NzA2N2VkMDgxMGE5N2UwNGJiZjYyNDk0ZGUxMzU2YjQx
MzJjMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAxLTA5ICBKb2huIEouIEJhcnRvbiAg
PGpvaG5qYmFydG9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWZh
Y3RvciBJbnNwZWN0b3JUZXN0IHRvIGNyZWF0ZSBvdXRwdXQgaW50ZXJmYWNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBJbnNwZWN0b3JU
ZXN0IHRvIGV4dHJhY3QgSW5zcGVjdG9yVGVzdC5PdXRwdXQsIHRoZSBBUEkgCisgICAgICAgIHVz
ZWQgYmV0d2VlbiBJbnNwZWN0b3JUZXN0IGFuZCB0aGUgdGVzdCBvdXRwdXQgcmVjaWV2ZXIgKHRo
ZSAKKyAgICAgICAgdGVzdC1zY3JpcHQgcGFnZSBieSBkZWZhdWx0KS4KKworICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6
ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QuT3V0cHV0LnRlc3RDb21wbGV0ZSk6CisgICAg
ICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5PdXRwdXQuYWRkUmVz
dWx0KToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0Lk91
dHB1dC5jbGVhclJlc3VsdHMpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lklu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9y
VGVzdC5JbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCk6CisKIDIwMTMtMDEtMDkgIERpbWl0cmkgR2xh
emtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIGZhc3Qv
aW1hZ2VzL2VtYmVkLWRvZXMtbm90LXByb3BhZ2F0ZS1kaW1lbnNpb25zLXRvLW9iamVjdC1hbmNl
c3Rvci5odG1sIGlzIGEgZmxha3kgY3Jhc2guCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCmluZGV4IDY5ODdiOTI3NTMwM2Q0ZGU2NWQx
NjNjYWQ4YmZhOWVmYWZjY2E5MTkuLjM5ZjUxM2M1ZmExNGFmZTUxYjY2OWQ0YjRlODc2N2MxOTMw
MzM1NzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzCkBAIC0xMiw2ICsxMiwyMyBAQCBjb25zb2xlLmxvZyA9IGNvbnNvbGVPdXRw
dXRIb29rLmJpbmQoSW5zcGVjdG9yVGVzdCwgImxvZyIpOwogY29uc29sZS5lcnJvciA9IGNvbnNv
bGVPdXRwdXRIb29rLmJpbmQoSW5zcGVjdG9yVGVzdCwgImVycm9yIik7CiBjb25zb2xlLmluZm8g
PSBjb25zb2xlT3V0cHV0SG9vay5iaW5kKEluc3BlY3RvclRlc3QsICJpbmZvIik7CiAKK0luc3Bl
Y3RvclRlc3QuT3V0cHV0ID0geyAgIC8vIG92ZXJyaWRlIGluIHdpbmRvdy5pbml0aWFsaXplX3lv
dXJOYW1lCisgICAgdGVzdENvbXBsZXRlOiBmdW5jdGlvbigpIAorICAgIHsKKyAgICAgICAgUnVu
dGltZUFnZW50LmV2YWx1YXRlKCJkaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKCIgKyBJbnNw
ZWN0b3JUZXN0LmNvbXBsZXRlVGVzdENhbGxJZCArICIsIFwiXCIpIiwgInRlc3QiKTsKKyAgICB9
LAorCisgICAgYWRkUmVzdWx0OiBmdW5jdGlvbih0ZXh0KSAKKyAgICB7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIm91dHB1dCh1bmVzY2FwZSgnIiArIGVzY2FwZSh0ZXh0
KSArICInKSkiKTsKKyAgICB9LAorICAgIAorICAgIGNsZWFyUmVzdWx0czogZnVuY3Rpb24oKSAK
KyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNsZWFyT3V0cHV0
KCkiKTsKKyAgICB9Cit9OworCiBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCA9IGZ1bmN0aW9u
KCkKIHsKICAgICBmdW5jdGlvbiB0ZXN0RGlzcGF0Y2hRdWV1ZUlzRW1wdHkoKSB7CkBAIC0yMCw3
ICszNyw3IEBAIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0ID0gZnVuY3Rpb24oKQogICAgICAg
ICAgICAgc2V0VGltZW91dCh0ZXN0RGlzcGF0Y2hRdWV1ZUlzRW1wdHksIDEwKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBSdW50aW1lQWdlbnQuZXZhbHVhdGUoImRp
ZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoIiArIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0
Q2FsbElkICsgIiwgXCJcIikiLCAidGVzdCIpOworICAgICAgICBJbnNwZWN0b3JUZXN0Lk91dHB1
dC50ZXN0Q29tcGxldGUoKTsKICAgICB9CiAgICAgdGVzdERpc3BhdGNoUXVldWVJc0VtcHR5KCk7
CiB9CkBAIC03MywyMyArOTAsMTMgQEAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQgPSBmdW5jdGlv
bih0ZXh0KQogewogICAgIHJlc3VsdHMucHVzaCh0ZXh0KTsKICAgICBpZiAocmVzdWx0c1N5bmNo
cm9uaXplZCkKLSAgICAgICAgYWRkUmVzdWx0VG9QYWdlKHRleHQpOworICAgICAgICBJbnNwZWN0
b3JUZXN0Lk91dHB1dC5hZGRSZXN1bHQodGV4dCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNsZWFy
UmVzdWx0cygpOworICAgICAgICBJbnNwZWN0b3JUZXN0Lk91dHB1dC5jbGVhclJlc3VsdHMoKTsK
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgKytpKQotICAgICAg
ICAgICAgYWRkUmVzdWx0VG9QYWdlKHJlc3VsdHNbaV0pOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5PdXRwdXQuYWRkUmVzdWx0KHJlc3VsdHNbaV0pOwogICAgICAgICByZXN1bHRzU3luY2hy
b25pemVkID0gdHJ1ZTsKICAgICB9Ci0KLSAgICBmdW5jdGlvbiBjbGVhclJlc3VsdHMoKQotICAg
IHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2xlYXJPdXRwdXQoKSIp
OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGFkZFJlc3VsdFRvUGFnZSh0ZXh0KQotICAgIHsKLSAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgib3V0cHV0KHVuZXNjYXBlKCciICsg
ZXNjYXBlKHRleHQpICsgIicpKSIpOwotICAgIH0KIH0KIAogSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHRzID0gZnVuY3Rpb24odGV4dEFycmF5KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>