<?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>149267</bug_id>
          
          <creation_ts>2015-09-17 10:50:15 -0700</creation_ts>
          <short_desc>[Streams API] Add transform stream general tests</short_desc>
          <delta_ts>2015-09-23 04:34:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>
          <dependson>149268</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xabier Rodríguez Calvar">calvaris</reporter>
          <assigned_to name="Xabier Rodríguez Calvar">calvaris</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1126737</commentid>
    <comment_count>0</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-09-17 10:50:15 -0700</bug_when>
    <thetext>[Streams API] Add transform stream general tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126738</commentid>
    <comment_count>1</comment_count>
      <attachid>261399</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-09-17 10:50:41 -0700</bug_when>
    <thetext>Created attachment 261399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128280</commentid>
    <comment_count>2</comment_count>
      <attachid>261817</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-09-23 04:17:56 -0700</bug_when>
    <thetext>Created attachment 261817
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128294</commentid>
    <comment_count>3</comment_count>
      <attachid>261817</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-23 04:34:01 -0700</bug_when>
    <thetext>Comment on attachment 261817
Patch for landing

Clearing flags on attachment: 261817

Committed r190167: &lt;http://trac.webkit.org/changeset/190167&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128295</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-23 04:34:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261399</attachid>
            <date>2015-09-17 10:50:41 -0700</date>
            <delta_ts>2015-09-23 04:17:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149267-20150917195028.patch</filename>
            <type>text/plain</type>
            <size>20047</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5OTE1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzMwZGIzMjhmOWQ0ZGVkYmFhZmUx
ODEzOGU3MWJkNzRjZDQ4ZWJjZi4uMzc2YTQ1MTA5NGU5ZThmYzczMjE5NmM0OTkzMTY5ZjI0MGEx
ZjljZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA5LTE3ICBYYWJpZXIgUm9kcmlndWV6
IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBB
ZGQgdHJhbnNmb3JtIHN0cmVhbSBnZW5lcmFsIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDkyNjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL3RyYW5zZm9ybS1zdHJlYW0tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi90cmFuc2Zvcm0tc3RyZWFtLmh0bWw6IEFkZGVk
LgorCiAyMDE1LTA5LTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgTWFrZSBXaW5kb3dzIHRlc3RzIGdyZWVuLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtLXN0cmVh
bS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi90cmFuc2Zvcm0tc3RyZWFtLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTdmOTNlMzJh
ZTM4MmM5ZTQxYzhmOTU5YWJiMDYxYzE0Y2I2N2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtLXN0cmVhbS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorCitGQUlMIFRyYW5zZm9ybVN0cmVhbSBjYW4g
YmUgY29uc3RydWN0ZWQgd2l0aCBhIHRyYW5zZm9ybSBmdW5jdGlvbiBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBiZSBjb25z
dHJ1Y3RlZCB3aXRoIG5vIHRyYW5zZm9ybSBmdW5jdGlvbiBhc3NlcnRfdGhyb3dzOiBUcmFuc2Zv
cm1TdHJlYW0gY2Fubm90IGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gYXJndW1lbnRzIGZ1bmN0aW9u
ICJmdW5jdGlvbiAoKSB7IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsgfSIgdGhyZXcgb2JqZWN0ICJS
ZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtIiAoIlJl
ZmVyZW5jZUVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJUeXBlRXJyb3IiICgiVHlwZUVycm9yIikK
K0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGluc3RhbmNlcyBtdXN0IGhhdmUgd3JpdGFibGUgYW5kIHJl
YWRhYmxlIHByb3BlcnRpZXMgb2YgdGhlIGNvcnJlY3QgdHlwZXMgQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9ybVN0cmVhbSB3cml0YWJsZSBzdGFydHMg
aW4gdGhlIHdyaXRhYmxlIHN0YXRlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVh
bQorRkFJTCBQYXNzLXRocm91Z2ggc3luYyBUcmFuc2Zvcm1TdHJlYW06IGNhbiByZWFkIGZyb20g
cmVhZGFibGUgd2hhdCBpcyBwdXQgaW50byB3cml0YWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBU
cmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVXBwZXJjYXNlciBzeW5jIFRyYW5zZm9ybVN0cmVhbTogY2Fu
IHJlYWQgZnJvbSByZWFkYWJsZSB0cmFuc2Zvcm1lZCB2ZXJzaW9uIG9mIHdoYXQgaXMgcHV0IGlu
dG8gd3JpdGFibGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFVw
cGVyY2FzZXItZG91YmxlciBzeW5jIFRyYW5zZm9ybVN0cmVhbTogY2FuIHJlYWQgYm90aCBjaHVu
a3MgcHV0IGludG8gdGhlIHJlYWRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBVcHBlcmNhc2VyIGFzeW5jIFRyYW5zZm9ybVN0cmVhbTogY2FuIHJlYWQgZnJv
bSByZWFkYWJsZSB0cmFuc2Zvcm1lZCB2ZXJzaW9uIG9mIHdoYXQgaXMgcHV0IGludG8gd3JpdGFi
bGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFVwcGVyY2FzZXIt
ZG91YmxlciBhc3luYyBUcmFuc2Zvcm1TdHJlYW06IGNhbiByZWFkIGJvdGggY2h1bmtzIHB1dCBp
bnRvIHRoZSByZWFkYWJsZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZB
SUwgVHJhbnNmb3JtU3RyZWFtOiBieSBkZWZhdWx0LCBjbG9zaW5nIHRoZSB3cml0YWJsZSBjbG9z
ZXMgdGhlIHJlYWRhYmxlICh3aGVuIHRoZXJlIGFyZSBubyBxdWV1ZWQgd3JpdGVzKSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtOiBieSBk
ZWZhdWx0LCBjbG9zaW5nIHRoZSB3cml0YWJsZSB3YWl0cyBmb3IgdHJhbnNmb3JtcyB0byBmaW5p
c2ggYmVmb3JlIGNsb3NpbmcgYm90aCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJl
YW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtOiBieSBkZWZhdWx0LCBjbG9zaW5nIHRoZSB3cml0YWJs
ZSBjbG9zZXMgdGhlIHJlYWRhYmxlIGFmdGVyIHN5bmMgZW5xdWV1ZXMgYW5kIGFzeW5jIGRvbmUg
Q2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9ybVN0cmVh
bTogYnkgZGVmYXVsdCwgY2xvc2luZyB0aGUgd3JpdGFibGUgY2xvc2VzIHRoZSByZWFkYWJsZSBh
ZnRlciBhc3luYyBlbnF1ZXVlcyBhbmQgYXN5bmMgZG9uZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBU
cmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGZsdXNoIGlzIGNhbGxlZCBpbW1l
ZGlhdGVseSB3aGVuIHRoZSB3cml0YWJsZSBpcyBjbG9zZWQsIGlmIG5vIHdyaXRlcyBhcmUgcXVl
dWVkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1T
dHJlYW0gZmx1c2ggaXMgY2FsbGVkIGFmdGVyIGFsbCBxdWV1ZWQgd3JpdGVzIGZpbmlzaCwgb25j
ZSB0aGUgd3JpdGFibGUgaXMgY2xvc2VkIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0
cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0gZmx1c2ggZ2V0cyBhIGNoYW5jZSB0byBlbnF1ZXVl
IG1vcmUgaW50byB0aGUgcmVhZGFibGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3Ry
ZWFtCitGQUlMIFRyYW5zZm9ybVN0cmVhbSBmbHVzaCBnZXRzIGEgY2hhbmNlIHRvIGVucXVldWUg
bW9yZSBpbnRvIHRoZSByZWFkYWJsZSwgYW5kIGNhbiB0aGVuIGFzeW5jIGNsb3NlIENhbid0IGZp
bmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm0gc3RyZWFtIHNob3Vs
ZCBjYWxsIHRyYW5zZm9ybWVyIG1ldGhvZHMgYXMgbWV0aG9kcyBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBUcmFuc2Zvcm1TdHJlYW0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtLXN0cmVhbS5odG1sIGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtLXN0cmVhbS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUxYjEzNWIwMGJkNzhiZWJkMmFiMjBjOWJkNjYwODVjZjc2YmNkNTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi90cmFuc2Zvcm0tc3RyZWFtLmh0bWwKQEAgLTAsMCArMSwzOTkgQEAKKzwhRE9DVFlQRSBodG1s
PgorPHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvc3RyZWFtcy11dGlscy5qcyc+PC9zY3JpcHQ+
Cis8c2NyaXB0PgordGVzdChmdW5jdGlvbigpIHsKKyAgICBuZXcgVHJhbnNmb3JtU3RyZWFtKHsg
dHJhbnNmb3JtOiBmdW5jdGlvbigpIHsgfSB9KTsgLy8gVHJhbnNmb3JtU3RyZWFtIGNvbnN0cnVj
dGVkIHdpdGggbm8gZXJyb3JzLgorfSwgJ1RyYW5zZm9ybVN0cmVhbSBjYW4gYmUgY29uc3RydWN0
ZWQgd2l0aCBhIHRyYW5zZm9ybSBmdW5jdGlvbicpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IFRyYW5zZm9y
bVN0cmVhbSgpOyB9LCAnVHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCB3aXRo
IG5vIGFyZ3VtZW50cycpOworICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5j
dGlvbigpIHsgbmV3IFRyYW5zZm9ybVN0cmVhbSh7fSk7IH0sICdUcmFuc2Zvcm1TdHJlYW0gY2Fu
bm90IGJlIGNvbnN0cnVjdGVkIHdpdGggYW4gZW1wdHkgb2JqZWN0Jyk7Cit9LCAnVHJhbnNmb3Jt
U3RyZWFtIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIHRyYW5zZm9ybSBmdW5jdGlvbicp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZhciB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0o
eyB0cmFuc2Zvcm06IGZ1bmN0aW9uKCkgeyB9IH0pOworCisgICAgYXNzZXJ0X3RydWUoT2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRzLCAnd3JpdGFibGUnKSwgJ2l0IGhhcyBh
IHdyaXRhYmxlIHByb3BlcnR5Jyk7CisgICAgYXNzZXJ0X3RydWUodHMud3JpdGFibGUgaW5zdGFu
Y2VvZiBXcml0YWJsZVN0cmVhbSwgJ3dyaXRhYmxlIGlzIGFuIGluc3RhbmNlIG9mIFdyaXRhYmxl
U3RyZWFtJyk7CisKKyAgICBhc3NlcnRfdHJ1ZShPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LmNhbGwodHMsICdyZWFkYWJsZScpLCAnaXQgaGFzIGEgcmVhZGFibGUgcHJvcGVydHknKTsK
KyAgICBhc3NlcnRfdHJ1ZSh0cy5yZWFkYWJsZSBpbnN0YW5jZW9mIFJlYWRhYmxlU3RyZWFtLCAn
cmVhZGFibGUgaXMgYW4gaW5zdGFuY2Ugb2YgUmVhZGFibGVTdHJlYW0nKTsKK30sICdUcmFuc2Zv
cm1TdHJlYW0gaW5zdGFuY2VzIG11c3QgaGF2ZSB3cml0YWJsZSBhbmQgcmVhZGFibGUgcHJvcGVy
dGllcyBvZiB0aGUgY29ycmVjdCB0eXBlcycpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZh
ciB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeyB0cmFuc2Zvcm06IGZ1bmN0aW9uKCkgeyB9IH0p
OworCisgICAgYXNzZXJ0X2VxdWFscyh0cy53cml0YWJsZS5zdGF0ZSwgJ3dyaXRhYmxlJywgJ3dy
aXRhYmxlIHN0YXJ0cyB3cml0YWJsZScpOworfSwgJ1RyYW5zZm9ybVN0cmVhbSB3cml0YWJsZSBz
dGFydHMgaW4gdGhlIHdyaXRhYmxlIHN0YXRlJyk7CisKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rlc3Qo
J1Bhc3MtdGhyb3VnaCBzeW5jIFRyYW5zZm9ybVN0cmVhbTogY2FuIHJlYWQgZnJvbSByZWFkYWJs
ZSB3aGF0IGlzIHB1dCBpbnRvIHdyaXRhYmxlJyk7Cit0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkKK3sK
KyAgICB2YXIgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICAgICAgdHJhbnNmb3JtOiBm
dW5jdGlvbihjaHVuaywgZW5xdWV1ZSwgZG9uZSkgeworICAgICAgICAgICAgZW5xdWV1ZShjaHVu
ayk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHRzLndy
aXRhYmxlLndyaXRlKCdhJyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHRzLndyaXRhYmxlLnN0YXRl
LCAnd2FpdGluZycsICd3cml0YWJsZSBpcyB3YWl0aW5nIGFmdGVyIG9uZSB3cml0ZScpOworICAg
IHRzLnJlYWRhYmxlLmdldFJlYWRlcigpLnJlYWQoKS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5j
dGlvbihyZXN1bHQpIHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZh
bHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZXN1bHQgZnJvbSByZWFkaW5nIHRoZSByZWFkYWJs
ZSBpcyB0aGUgc2FtZSBhcyB3YXMgd3JpdHRlbiB0byB3cml0YWJsZScpOworCisgICAgICAgIHJl
dHVybiB0cy53cml0YWJsZS5yZWFkeS50aGVuKHRlc3QxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHMud3JpdGFibGUuc3RhdGUsICd3cml0YWJsZScs
ICd3cml0YWJsZSBiZWNvbWVzIHdyaXRhYmxlIGFnYWluJyk7CisgICAgICAgICAgICB0ZXN0MS5k
b25lKCk7CisgICAgICAgIH0pKTsKKyAgICB9KSkuY2F0Y2godGVzdDEuc3RlcF9mdW5jKGZ1bmN0
aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOworfSk7CisKK3ZhciB0ZXN0MiA9IGFz
eW5jX3Rlc3QoJ1VwcGVyY2FzZXIgc3luYyBUcmFuc2Zvcm1TdHJlYW06IGNhbiByZWFkIGZyb20g
cmVhZGFibGUgdHJhbnNmb3JtZWQgdmVyc2lvbiBvZiB3aGF0IGlzIHB1dCBpbnRvIHdyaXRhYmxl
Jyk7Cit0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgdHMgPSBuZXcgVHJhbnNmb3Jt
U3RyZWFtKHsKKyAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbihjaHVuaywgZW5xdWV1ZSwgZG9u
ZSkgeworICAgICAgICAgICAgZW5xdWV1ZShjaHVuay50b1VwcGVyQ2FzZSgpKTsKKyAgICAgICAg
ICAgIGRvbmUoKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgdHMud3JpdGFibGUud3JpdGUo
J2EnKTsKKworICAgIGFzc2VydF9lcXVhbHModHMud3JpdGFibGUuc3RhdGUsICd3YWl0aW5nJywg
J3dyaXRhYmxlIGlzIHdhaXRpbmcgYWZ0ZXIgb25lIHdyaXRlJyk7CisKKyAgICB0cy5yZWFkYWJs
ZS5nZXRSZWFkZXIoKS5yZWFkKCkudGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0
KSB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ0EnLCBk
b25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzdWx0IGZyb20g
cmVhZGluZyB0aGUgcmVhZGFibGUgaXMgdGhlIHRyYW5zZm9ybWF0aW9uIG9mIHdoYXQgd2FzIHdy
aXR0ZW4gdG8gd3JpdGFibGUnKTsKKworICAgICAgICByZXR1cm4gdHMud3JpdGFibGUucmVhZHku
dGhlbih0ZXN0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHRzLndyaXRhYmxlLnN0YXRlLCAnd3JpdGFibGUnLCAnd3JpdGFibGUgYmVjb21lcyB3cml0
YWJsZSBhZ2FpbicpOworICAgICAgICAgICAgdGVzdDIuZG9uZSgpOworICAgICAgICB9KSk7Cisg
ICAgfSkpLmNhdGNoKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNo
ZWQoZSk7IH0pKTsKK30pOworCit2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdVcHBlcmNhc2VyLWRv
dWJsZXIgc3luYyBUcmFuc2Zvcm1TdHJlYW06IGNhbiByZWFkIGJvdGggY2h1bmtzIHB1dCBpbnRv
IHRoZSByZWFkYWJsZScpOwordGVzdDMuc3RlcChmdW5jdGlvbigpCit7CisgICAgdmFyIHRzID0g
bmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24oY2h1bmss
IGVucXVldWUsIGRvbmUpIHsKKyAgICAgICAgICAgIGVucXVldWUoY2h1bmsudG9VcHBlckNhc2Uo
KSk7CisgICAgICAgICAgICBlbnF1ZXVlKGNodW5rLnRvVXBwZXJDYXNlKCkpOworICAgICAgICAg
ICAgZG9uZSgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB0cy53cml0YWJsZS53cml0ZSgn
YScpOworCisgICAgYXNzZXJ0X2VxdWFscyh0cy53cml0YWJsZS5zdGF0ZSwgJ3dhaXRpbmcnLCAn
d3JpdGFibGUgaXMgd2FpdGluZyBhZnRlciBvbmUgd3JpdGUnKTsKKworICAgIHZhciByZWFkZXIg
PSB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKKworICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0
My5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0MSkgeworICAgICAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyZXN1bHQxLCB7IHZhbHVlOiAnQScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd0aGUgZmlyc3QgY2h1bmsgcmVhZCBpcyB0aGUgdHJhbnNmb3JtYXRp
b24gb2YgdGhlIHNpbmdsZSBjaHVuayB3cml0dGVuJyk7CisKKyAgICAgICAgcmV0dXJuIHJlYWRl
ci5yZWFkKCkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0MikgeworICAgICAg
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTogJ0EnLCBkb25lOiBm
YWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzZWNvbmQgY2h1
bmsgcmVhZCBpcyBhbHNvIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUgc2luZ2xlIGNodW5rIHdy
aXR0ZW4nKTsKKworICAgICAgICAgICAgcmV0dXJuIHRzLndyaXRhYmxlLnJlYWR5LnRoZW4odGVz
dDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
dHMud3JpdGFibGUuc3RhdGUsICd3cml0YWJsZScsICd3cml0YWJsZSBiZWNvbWVzIHdyaXRhYmxl
IGFnYWluJyk7CisgICAgICAgICAgICAgICAgdGVzdDMuZG9uZSgpOworICAgICAgICAgICAgfSkp
OworICAgICAgICB9KSk7CisgICAgfSkpLmNhdGNoKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihl
KSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKK30pOworCit2YXIgdGVzdDQgPSBhc3luY190
ZXN0KCdVcHBlcmNhc2VyIGFzeW5jIFRyYW5zZm9ybVN0cmVhbTogY2FuIHJlYWQgZnJvbSByZWFk
YWJsZSB0cmFuc2Zvcm1lZCB2ZXJzaW9uIG9mIHdoYXQgaXMgcHV0IGludG8gd3JpdGFibGUnKTsK
K3Rlc3Q0LnN0ZXAoZnVuY3Rpb24oKQoreworICAgIHZhciB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJl
YW0oeworICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGNodW5rLCBlbnF1ZXVlLCBkb25lKSB7
CisgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgZW5x
dWV1ZShjaHVuay50b1VwcGVyQ2FzZSgpKTsgfSksIDEwMCk7CisgICAgICAgICAgICBzZXRUaW1l
b3V0KHRlc3Q0LnN0ZXBfZnVuYyhkb25lKSwgNTAwKTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgdHMud3JpdGFibGUud3JpdGUoJ2EnKTsKKworICAgIGFzc2VydF9lcXVhbHModHMud3JpdGFi
bGUuc3RhdGUsICd3YWl0aW5nJywgJ3dyaXRhYmxlIGlzIHdhaXRpbmcgYWZ0ZXIgb25lIHdyaXRl
Jyk7CisKKyAgICB0cy5yZWFkYWJsZS5nZXRSZWFkZXIoKS5yZWFkKCkudGhlbih0ZXN0NC5zdGVw
X2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdCwgeyB2YWx1ZTogJ0EnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAncmVzdWx0IGZyb20gcmVhZGluZyB0aGUgcmVhZGFibGUgaXMgdGhlIHRyYW5zZm9y
bWF0aW9uIG9mIHdoYXQgd2FzIHdyaXR0ZW4gdG8gd3JpdGFibGUnKTsKKworICAgICAgICByZXR1
cm4gdHMud3JpdGFibGUucmVhZHkudGhlbih0ZXN0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRzLndyaXRhYmxlLnN0YXRlLCAnd3JpdGFibGUnLCAn
d3JpdGFibGUgYmVjb21lcyB3cml0YWJsZSBhZ2FpbicpOworICAgICAgICAgICAgdGVzdDQuZG9u
ZSgpOworICAgICAgICB9KSk7CisgICAgfSkpLmNhdGNoKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlv
bihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKK30pOworCit2YXIgdGVzdDUgPSBhc3lu
Y190ZXN0KCdVcHBlcmNhc2VyLWRvdWJsZXIgYXN5bmMgVHJhbnNmb3JtU3RyZWFtOiBjYW4gcmVh
ZCBib3RoIGNodW5rcyBwdXQgaW50byB0aGUgcmVhZGFibGUnKTsKK3Rlc3Q1LnN0ZXAoZnVuY3Rp
b24oKQoreworICAgIHZhciB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgICAgICB0cmFu
c2Zvcm06IGZ1bmN0aW9uKGNodW5rLCBlbnF1ZXVlLCBkb25lKSB7CisgICAgICAgICAgICBzZXRU
aW1lb3V0KHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgZW5xdWV1ZShjaHVuay50b1VwcGVy
Q2FzZSgpKTsgfSksIDEwMCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3Q1LnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsgZW5xdWV1ZShjaHVuay50b1VwcGVyQ2FzZSgpKTsgfSksIDUwMCk7Cisg
ICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3Q1LnN0ZXBfZnVuYyhkb25lKSwgOTAwKTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgdmFyIHJlYWRlciA9IHRzLnJlYWRhYmxlLmdldFJlYWRlcigp
OworCisgICAgdHMud3JpdGFibGUud3JpdGUoJ2EnKTsKKworICAgIGFzc2VydF9lcXVhbHModHMu
d3JpdGFibGUuc3RhdGUsICd3YWl0aW5nJywgJ3dyaXRhYmxlIGlzIHdhaXRpbmcgYWZ0ZXIgb25l
IHdyaXRlJyk7CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlv
bihyZXN1bHQxKSB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDEsIHsgdmFs
dWU6ICdBJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Ro
ZSBmaXJzdCBjaHVuayByZWFkIGlzIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUgc2luZ2xlIGNo
dW5rIHdyaXR0ZW4nKTsKKworICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3Q1
LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQyKSB7CisgICAgICAgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyZXN1bHQyLCB7IHZhbHVlOiAnQScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndGhlIHNlY29uZCBjaHVuayByZWFkIGlzIGFsc28gdGhl
IHRyYW5zZm9ybWF0aW9uIG9mIHRoZSBzaW5nbGUgY2h1bmsgd3JpdHRlbicpOworCisgICAgICAg
ICAgICByZXR1cm4gdHMud3JpdGFibGUucmVhZHkudGhlbih0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0cy53cml0YWJsZS5zdGF0ZSwg
J3dyaXRhYmxlJywgJ3dyaXRhYmxlIGJlY29tZXMgd3JpdGFibGUgYWdhaW4nKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0NS5kb25lKCk7CisgICAgICAgICAgICB9KSk7CisgICAgICAgIH0pKTsKKyAg
ICB9KSkuY2F0Y2godGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hl
ZChlKTsgfSkpOworfSk7CisKK3ZhciB0ZXN0NiA9IGFzeW5jX3Rlc3QoJ1RyYW5zZm9ybVN0cmVh
bTogYnkgZGVmYXVsdCwgY2xvc2luZyB0aGUgd3JpdGFibGUgY2xvc2VzIHRoZSByZWFkYWJsZSAo
d2hlbiB0aGVyZSBhcmUgbm8gcXVldWVkIHdyaXRlcyknKTsKK3Rlc3Q2LnN0ZXAoZnVuY3Rpb24o
KQoreworICAgIHZhciB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeyB0cmFuc2Zvcm06IGZ1bmN0
aW9uKCkgeyB9IH0pOworCisgICAgdHMud3JpdGFibGUuY2xvc2UoKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHRzLndyaXRhYmxlLnN0YXRlLCAnY2xvc2luZycsICd3cml0YWJsZSBpcyBjbG9zaW5nJyk7
CisKKyAgICBQcm9taXNlLmFsbChbdHMud3JpdGFibGUuY2xvc2VkLCB0cy5yZWFkYWJsZS5nZXRS
ZWFkZXIoKS5jbG9zZWRdKS50aGVuKHRlc3Q2LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyh0cy53cml0YWJsZS5zdGF0ZSwgJ2Nsb3NlZCcsICd3cml0YWJsZSBz
dGF0ZSBiZWNvbWVzIGNsb3NlZCBldmVudHVhbGx5Jyk7CisgICAgICAgIHRlc3Q2LmRvbmUoJ2Jv
dGggd3JpdGFibGUgYW5kIHJlYWRhYmxlIGNsb3NlZCBwcm9taXNlcyBmdWxmaWxsJyk7CisgICAg
fSkpLmNhdGNoKHRlc3Q2LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQo
ZSk7IH0pKTsKK30pOworCit2YXIgdGVzdDcgPSBhc3luY190ZXN0KCdUcmFuc2Zvcm1TdHJlYW06
IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhlIHdyaXRhYmxlIHdhaXRzIGZvciB0cmFuc2Zvcm1zIHRv
IGZpbmlzaCBiZWZvcmUgY2xvc2luZyBib3RoJyk7Cit0ZXN0Ny5zdGVwKGZ1bmN0aW9uKCkKK3sK
KyAgICB2YXIgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICAgICAgdHJhbnNmb3JtOiBm
dW5jdGlvbihjaHVuaywgZW5xdWV1ZSwgZG9uZSkgeworICAgICAgICAgICAgc2V0VGltZW91dCh0
ZXN0Ny5zdGVwX2Z1bmMoZG9uZSksIDUwMCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHRz
LndyaXRhYmxlLndyaXRlKCdhJyk7CisgICAgdHMud3JpdGFibGUuY2xvc2UoKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHRzLndyaXRhYmxlLnN0YXRlLCAnY2xvc2luZycsICd3cml0YWJsZSBpcyBjbG9z
aW5nJyk7CisKKyAgICB2YXIgcnNDbG9zZWQgPSBmYWxzZTsKKyAgICB0cy5yZWFkYWJsZS5nZXRS
ZWFkZXIoKS5jbG9zZWQudGhlbih0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAg
IHJzQ2xvc2VkID0gdHJ1ZTsKKyAgICB9KSk7CisKKyAgICBzZXRUaW1lb3V0KHRlc3Q3LnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyc0Nsb3NlZCwgZmFsc2Us
ICdyZWFkYWJsZSBpcyBub3QgY2xvc2VkIGFmdGVyIGEgdGljaycpOworCisgICAgICAgIHRzLndy
aXRhYmxlLmNsb3NlZC50aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHModHMud3JpdGFibGUuc3RhdGUsICdjbG9zZWQnLCAnd3JpdGFibGUg
YmVjb21lcyBjbG9zZWQgZXZlbnR1YWxseScpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUocnND
bG9zZWQsICdyZWFkYWJsZSBpcyBjbG9zZWQgYXQgdGhhdCBwb2ludCcpOworICAgICAgICAgICAg
dGVzdDcuZG9uZSgpOworICAgICAgICB9KSkuY2F0Y2godGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9u
KGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOworICAgIH0pLCAwKTsKK30pOworCit2YXIg
dGVzdDggPSBhc3luY190ZXN0KCdUcmFuc2Zvcm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNsb3Npbmcg
dGhlIHdyaXRhYmxlIGNsb3NlcyB0aGUgcmVhZGFibGUgYWZ0ZXIgc3luYyBlbnF1ZXVlcyBhbmQg
YXN5bmMgZG9uZScpOwordGVzdDguc3RlcChmdW5jdGlvbigpCit7CisgICAgdmFyIHRzID0gbmV3
IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24oY2h1bmssIGVu
cXVldWUsIGRvbmUpIHsKKyAgICAgICAgICAgIGVucXVldWUoJ3gnKTsKKyAgICAgICAgICAgIGVu
cXVldWUoJ3knKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDguc3RlcF9mdW5jKGRvbmUp
LCA1MDApOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB0cy53cml0YWJsZS53cml0ZSgnYScp
OworICAgIHRzLndyaXRhYmxlLmNsb3NlKCk7CisgICAgYXNzZXJ0X2VxdWFscyh0cy53cml0YWJs
ZS5zdGF0ZSwgJ2Nsb3NpbmcnLCAnd3JpdGFibGUgaXMgY2xvc2luZycpOworCisgICAgdHMud3Jp
dGFibGUuY2xvc2VkLnRoZW4odGVzdDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBh
c3NlcnRfZXF1YWxzKHRzLndyaXRhYmxlLnN0YXRlLCAnY2xvc2VkJywgJ3dyaXRhYmxlIGJlY29t
ZXMgY2xvc2VkIGV2ZW50dWFsbHknKTsKKworICAgICAgICByZXR1cm4gcmVhZGFibGVTdHJlYW1U
b0FycmF5KHRzLnJlYWRhYmxlKS50aGVuKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbihjaHVua3Mp
IHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbJ3gnLCAneSddLCAn
Ym90aCBlbnF1ZXVlZCBjaHVua3MgY2FuIGJlIHJlYWQgZnJvbSB0aGUgcmVhZGFibGUnKTsKKyAg
ICAgICAgICAgIHRlc3Q4LmRvbmUoKTsKKyAgICAgICAgfSkpOworICAgIH0pKS5jYXRjaCh0ZXN0
OC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Cit9KTsK
KwordmFyIHRlc3Q5ID0gYXN5bmNfdGVzdCgnVHJhbnNmb3JtU3RyZWFtOiBieSBkZWZhdWx0LCBj
bG9zaW5nIHRoZSB3cml0YWJsZSBjbG9zZXMgdGhlIHJlYWRhYmxlIGFmdGVyIGFzeW5jIGVucXVl
dWVzIGFuZCBhc3luYyBkb25lJyk7Cit0ZXN0OS5zdGVwKGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIg
dHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbihj
aHVuaywgZW5xdWV1ZSwgZG9uZSkgeworICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0OS5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7IGVucXVldWUoJ3gnKTsgfSksIDEwMCk7CisgICAgICAgICAgICBz
ZXRUaW1lb3V0KHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgZW5xdWV1ZSgneScpOyB9KSwg
NTAwKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDkuc3RlcF9mdW5jKGRvbmUpLCA5MDAp
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICB0cy53cml0YWJsZS53cml0ZSgnYScpOworICAg
IHRzLndyaXRhYmxlLmNsb3NlKCk7CisgICAgYXNzZXJ0X2VxdWFscyh0cy53cml0YWJsZS5zdGF0
ZSwgJ2Nsb3NpbmcnLCAnd3JpdGFibGUgaXMgY2xvc2luZycpOworCisgICAgdHMud3JpdGFibGUu
Y2xvc2VkLnRoZW4odGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRf
ZXF1YWxzKHRzLndyaXRhYmxlLnN0YXRlLCAnY2xvc2VkJywgJ3dyaXRhYmxlIGJlY29tZXMgY2xv
c2VkIGV2ZW50dWFsbHknKTsKKworICAgICAgICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5
KHRzLnJlYWRhYmxlKS50aGVuKHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihjaHVua3MpIHsKKyAg
ICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbJ3gnLCAneSddLCAnYm90aCBl
bnF1ZXVlZCBjaHVua3MgY2FuIGJlIHJlYWQgZnJvbSB0aGUgcmVhZGFibGUnKTsKKyAgICAgICAg
ICAgIHRlc3Q5LmRvbmUoKTsKKyAgICAgICAgfSkpOworICAgIH0pKS5jYXRjaCh0ZXN0OS5zdGVw
X2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Cit9KTsKKwordmFy
IHRlc3QxMCA9IGFzeW5jX3Rlc3QoJ1RyYW5zZm9ybVN0cmVhbSBmbHVzaCBpcyBjYWxsZWQgaW1t
ZWRpYXRlbHkgd2hlbiB0aGUgd3JpdGFibGUgaXMgY2xvc2VkLCBpZiBubyB3cml0ZXMgYXJlIHF1
ZXVlZCcpOwordGVzdDEwLnN0ZXAoZnVuY3Rpb24oKQoreworICAgIHZhciBmbHVzaENhbGxlZCA9
IGZhbHNlOworICAgIHZhciB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgICAgICB0cmFu
c2Zvcm06IGZ1bmN0aW9uKCkgeyB9LAorICAgICAgICBmbHVzaDogZnVuY3Rpb24oZW5xdWV1ZSkg
eworICAgICAgICAgICAgZmx1c2hDYWxsZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICB0cy53cml0YWJsZS5jbG9zZSgpLnRoZW4odGVzdDEwLnN0ZXBfZnVuYyhmdW5jdGlvbigp
IHsKKyAgICAgICAgYXNzZXJ0X3RydWUoZmx1c2hDYWxsZWQsICdjbG9zaW5nIHRoZSB3cml0YWJs
ZSB0cmlnZ2VycyB0aGUgdHJhbnNmb3JtIGZsdXNoIGltbWVkaWF0ZWx5Jyk7CisgICAgICAgIHRl
c3QxMC5kb25lKCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0ZXN0MTEgPSBhc3luY190ZXN0KCdU
cmFuc2Zvcm1TdHJlYW0gZmx1c2ggaXMgY2FsbGVkIGFmdGVyIGFsbCBxdWV1ZWQgd3JpdGVzIGZp
bmlzaCwgb25jZSB0aGUgd3JpdGFibGUgaXMgY2xvc2VkJyk7Cit0ZXN0MTEuc3RlcChmdW5jdGlv
bigpCit7CisgICAgdmFyIGZsdXNoQ2FsbGVkID0gZmFsc2U7CisgICAgdmFyIHRzID0gbmV3IFRy
YW5zZm9ybVN0cmVhbSh7CisgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24oY2h1bmssIGVucXVl
dWUsIGRvbmUpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDExLnN0ZXBfZnVuYyhkb25l
KSwgMTAwKTsKKyAgICAgICAgfSwKKyAgICAgICAgZmx1c2g6IGZ1bmN0aW9uKGVucXVldWUpIHsK
KyAgICAgICAgICAgIGZsdXNoQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgdHMud3JpdGFibGUud3JpdGUoJ2EnKTsKKyAgICB0cy53cml0YWJsZS5jbG9zZSgpOworICAg
IGFzc2VydF9mYWxzZShmbHVzaENhbGxlZCwgJ2Nsb3NpbmcgdGhlIHdyaXRhYmxlIGRvZXMgbm90
IGltbWVkaWF0ZWx5IGNhbGwgZmx1c2ggaWYgd3JpdGVzIGFyZSBub3QgZmluaXNoZWQnKTsKKwor
ICAgIHZhciByc0Nsb3NlZCA9IGZhbHNlOworICAgIHRzLnJlYWRhYmxlLmdldFJlYWRlcigpLmNs
b3NlZC50aGVuKHRlc3QxMS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHJzQ2xvc2Vk
ID0gdHJ1ZTsKKyAgICB9KSk7CisKKyAgICBzZXRUaW1lb3V0KHRlc3QxMS5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90cnVlKGZsdXNoQ2FsbGVkLCAnZmx1c2ggaXMgZXZl
bnR1YWxseSBjYWxsZWQnKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKHJzQ2xvc2VkLCAnaWYgZmx1
c2ggZG9lcyBub3QgY2FsbCBjbG9zZSwgdGhlIHJlYWRhYmxlIGRvZXMgbm90IGJlY29tZSBjbG9z
ZWQnKTsKKyAgICAgICAgdGVzdDExLmRvbmUoKTsKKyAgICB9KSwgNTAwKTsKK30pOworCit2YXIg
dGVzdDEyID0gYXN5bmNfdGVzdCgnVHJhbnNmb3JtU3RyZWFtIGZsdXNoIGdldHMgYSBjaGFuY2Ug
dG8gZW5xdWV1ZSBtb3JlIGludG8gdGhlIHJlYWRhYmxlJyk7Cit0ZXN0MTIuc3RlcChmdW5jdGlv
bigpCit7CisgICAgdmFyIHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgICAgIHRyYW5z
Zm9ybTogZnVuY3Rpb24oY2h1bmssIGVucXVldWUsIGRvbmUpIHsKKyAgICAgICAgICAgIGRvbmUo
KTsKKyAgICAgICAgfSwKKyAgICAgICAgZmx1c2g6IGZ1bmN0aW9uKGVucXVldWUpIHsKKyAgICAg
ICAgICAgIGVucXVldWUoJ3gnKTsKKyAgICAgICAgICAgIGVucXVldWUoJ3knKTsKKyAgICAgICAg
fQorICAgIH0pOworCisgICAgdmFyIHJlYWRlciA9IHRzLnJlYWRhYmxlLmdldFJlYWRlcigpOwor
CisgICAgdHMud3JpdGFibGUud3JpdGUoJ2EnKTsKKyAgICB0cy53cml0YWJsZS5jbG9zZSgpOwor
ICAgIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDEp
IHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ3gnLCBk
b25lOiBmYWxzZSB9LCAndGhlIGZpcnN0IGNodW5rIHJlYWQgaXMgdGhlIGZpcnN0IG9uZSBlbnF1
ZXVlZCBpbiBmbHVzaCcpOworCisgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4odGVz
dDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQyKSB7CisgICAgICAgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQyLCB7IHZhbHVlOiAneScsIGRvbmU6IGZhbHNlIH0sICd0aGUgc2Vj
b25kIGNodW5rIHJlYWQgaXMgdGhlIHNlY29uZCBvbmUgZW5xdWV1ZWQgaW4gZmx1c2gnKTsKKyAg
ICAgICAgICAgIHRlc3QxMi5kb25lKCk7CisgICAgICAgIH0pKTsKKyAgICB9KSkuY2F0Y2godGVz
dDEyLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0pKTsKK30p
OworCit2YXIgdGVzdDEzID0gYXN5bmNfdGVzdCgnVHJhbnNmb3JtU3RyZWFtIGZsdXNoIGdldHMg
YSBjaGFuY2UgdG8gZW5xdWV1ZSBtb3JlIGludG8gdGhlIHJlYWRhYmxlLCBhbmQgY2FuIHRoZW4g
YXN5bmMgY2xvc2UnKTsKK3Rlc3QxMy5zdGVwKGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgcHJvbWlz
ZUNhbGxzID0gMDsKKyAgICB2YXIgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICAgICAg
dHJhbnNmb3JtOiBmdW5jdGlvbihjaHVuaywgZW5xdWV1ZSwgZG9uZSkgeworICAgICAgICAgICAg
ZG9uZSgpOworICAgICAgICB9LAorICAgICAgICBmbHVzaDogZnVuY3Rpb24oZW5xdWV1ZSwgY2xv
c2UpIHsKKyAgICAgICAgICAgIGVucXVldWUoJ3gnKTsKKyAgICAgICAgICAgIGVucXVldWUoJ3kn
KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDEzLnN0ZXBfZnVuYyhjbG9zZSksIDEwMCk7
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciByZWFkZXIgPSB0cy5yZWFkYWJsZS5nZXRS
ZWFkZXIoKTsKKworICAgIHRzLndyaXRhYmxlLndyaXRlKCdhJyk7CisgICAgdHMud3JpdGFibGUu
Y2xvc2UoKTsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odGVzdDEzLnN0ZXBfZnVuYyhmdW5jdGlv
bihyZXN1bHQxKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoKytwcm9taXNlQ2FsbHMsIDEpOwor
ICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAneCcsIGRvbmU6
IGZhbHNlIH0sICd0aGUgZmlyc3QgY2h1bmsgcmVhZCBpcyB0aGUgZmlyc3Qgb25lIGVucXVldWVk
IGluIGZsdXNoJyk7CisKKyAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTMu
c3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDIpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
Kytwcm9taXNlQ2FsbHMsIDIpOworICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVz
dWx0MiwgeyB2YWx1ZTogJ3knLCBkb25lOiBmYWxzZSB9LCAndGhlIHNlY29uZCBjaHVuayByZWFk
IGlzIHRoZSBzZWNvbmQgb25lIGVucXVldWVkIGluIGZsdXNoJyk7CisgICAgICAgIH0pKTsKKyAg
ICB9KSkuY2F0Y2godGVzdDEzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNo
ZWQoZSk7IH0pKTsKKworICAgIHJlYWRlci5jbG9zZWQudGhlbih0ZXN0MTMuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKCsrcHJvbWlzZUNhbGxzLCAzKTsKKyAg
ICAgICAgdGVzdDEzLmRvbmUoJ3JlYWRhYmxlIHJlYWRlciBiZWNvbWVzIGNsb3NlZCcpOworICAg
IH0pKS5jYXRjaCh0ZXN0MTMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hl
ZChlKTsgfSkpOworfSk7CisKK3ZhciB0ZXN0MTQgPSBhc3luY190ZXN0KCdUcmFuc2Zvcm0gc3Ry
ZWFtIHNob3VsZCBjYWxsIHRyYW5zZm9ybWVyIG1ldGhvZHMgYXMgbWV0aG9kcycpOwordGVzdDE0
LnN0ZXAoZnVuY3Rpb24oKQoreworICAgIHZhciB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oewor
ICAgICAgICBzdWZmaXg6ICctc3VmZml4JywKKworICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9u
KGNodW5rLCBlbnF1ZXVlLCBkb25lKSB7CisgICAgICAgICAgICBlbnF1ZXVlKGNodW5rICsgdGhp
cy5zdWZmaXgpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9LAorCisgICAgICAgIGZs
dXNoOiBmdW5jdGlvbihlbnF1ZXVlLCBjbG9zZSkgeworICAgICAgICAgICAgZW5xdWV1ZSgnZmx1
c2hlZCcgKyB0aGlzLnN1ZmZpeCk7CisgICAgICAgICAgICBjbG9zZSgpOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICB0cy53cml0YWJsZS53cml0ZSgnYScpOworICAgIHRzLndyaXRhYmxlLmNs
b3NlKCk7CisgICAgdHMud3JpdGFibGUuY2xvc2VkLnRoZW4oCisgICAgICAgIHRlc3QxNC5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0Fy
cmF5KHRzLnJlYWRhYmxlKS50aGVuKHRlc3QxNC5zdGVwX2Z1bmMoZnVuY3Rpb24oY2h1bmtzKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsnYS1zdWZmaXgn
LCAnZmx1c2hlZC1zdWZmaXgnXSwgJ2JvdGggZW5xdWV1ZWQgY2h1bmtzIGhhdmUgc3VmZml4ZXMn
KTsKKyAgICAgICAgICAgICAgICB0ZXN0MTQuZG9uZSgpOworICAgICAgICAgICAgfSkpOworICAg
ICAgICB9KSwKKyAgICAgICAgdGVzdDE0LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91
bnJlYWNoZWQoZSk7IH0pCisgICAgKTsKK30pOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261817</attachid>
            <date>2015-09-23 04:17:56 -0700</date>
            <delta_ts>2015-09-23 04:34:01 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-149267-20150923131737.patch</filename>
            <type>text/plain</type>
            <size>20184</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMTU3CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmQ5YTZmN2ZjN2RlOTk0MDdkYjlj
OTQ4MjIxMWFlNzFjMGYxYmJhMS4uNWQ2ZGQzNmIxMGQ3MDYwMDU2ZDE2MDVjMWM5YmNjZmU1MTk0
Njg5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA5LTE3ICBYYWJpZXIgUm9kcmlndWV6
IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBB
ZGQgdHJhbnNmb3JtIHN0cmVhbSBnZW5lcmFsIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDkyNjcKKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L3RyYW5zZm9ybS1zdHJlYW0tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi90cmFuc2Zvcm0tc3RyZWFtLmh0bWw6IEFkZGVkLgor
CiAyMDE1LTA5LTIzICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4K
IAogICAgICAgICBbR1RLXSBtZWRpYS9tZWRpYS1jb250cm9scy10aW1lbGluZS11cGRhdGVzLmh0
bWwgdGltZW91dHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL3RyYW5zZm9ybS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtLXN0cmVhbS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2U3ZjkzZTMyYWUzODJjOWU0MWM4Zjk1OWFiYjA2MWMxNGNiNjdk
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL3RyYW5zZm9ybS1zdHJlYW0tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAK
KworRkFJTCBUcmFuc2Zvcm1TdHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggYSB0cmFuc2Zv
cm0gZnVuY3Rpb24gQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRy
YW5zZm9ybVN0cmVhbSBjYW5ub3QgYmUgY29uc3RydWN0ZWQgd2l0aCBubyB0cmFuc2Zvcm0gZnVu
Y3Rpb24gYXNzZXJ0X3Rocm93czogVHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBiZSBjb25zdHJ1Y3Rl
ZCB3aXRoIG5vIGFyZ3VtZW50cyBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyBuZXcgVHJhbnNmb3Jt
U3RyZWFtKCk7IH0iIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IFRyYW5zZm9ybVN0cmVhbSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVjdGVkIG9iamVj
dCAiVHlwZUVycm9yIiAoIlR5cGVFcnJvciIpCitGQUlMIFRyYW5zZm9ybVN0cmVhbSBpbnN0YW5j
ZXMgbXVzdCBoYXZlIHdyaXRhYmxlIGFuZCByZWFkYWJsZSBwcm9wZXJ0aWVzIG9mIHRoZSBjb3Jy
ZWN0IHR5cGVzIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFu
c2Zvcm1TdHJlYW0gd3JpdGFibGUgc3RhcnRzIGluIHRoZSB3cml0YWJsZSBzdGF0ZSBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgUGFzcy10aHJvdWdoIHN5bmMgVHJh
bnNmb3JtU3RyZWFtOiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxlIHdoYXQgaXMgcHV0IGludG8gd3Jp
dGFibGUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFVwcGVyY2Fz
ZXIgc3luYyBUcmFuc2Zvcm1TdHJlYW06IGNhbiByZWFkIGZyb20gcmVhZGFibGUgdHJhbnNmb3Jt
ZWQgdmVyc2lvbiBvZiB3aGF0IGlzIHB1dCBpbnRvIHdyaXRhYmxlIENhbid0IGZpbmQgdmFyaWFi
bGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBVcHBlcmNhc2VyLWRvdWJsZXIgc3luYyBUcmFuc2Zv
cm1TdHJlYW06IGNhbiByZWFkIGJvdGggY2h1bmtzIHB1dCBpbnRvIHRoZSByZWFkYWJsZSBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVXBwZXJjYXNlciBhc3luYyBU
cmFuc2Zvcm1TdHJlYW06IGNhbiByZWFkIGZyb20gcmVhZGFibGUgdHJhbnNmb3JtZWQgdmVyc2lv
biBvZiB3aGF0IGlzIHB1dCBpbnRvIHdyaXRhYmxlIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5z
Zm9ybVN0cmVhbQorRkFJTCBVcHBlcmNhc2VyLWRvdWJsZXIgYXN5bmMgVHJhbnNmb3JtU3RyZWFt
OiBjYW4gcmVhZCBib3RoIGNodW5rcyBwdXQgaW50byB0aGUgcmVhZGFibGUgQ2FuJ3QgZmluZCB2
YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9ybVN0cmVhbTogYnkgZGVmYXVs
dCwgY2xvc2luZyB0aGUgd3JpdGFibGUgY2xvc2VzIHRoZSByZWFkYWJsZSAod2hlbiB0aGVyZSBh
cmUgbm8gcXVldWVkIHdyaXRlcykgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFt
CitGQUlMIFRyYW5zZm9ybVN0cmVhbTogYnkgZGVmYXVsdCwgY2xvc2luZyB0aGUgd3JpdGFibGUg
d2FpdHMgZm9yIHRyYW5zZm9ybXMgdG8gZmluaXNoIGJlZm9yZSBjbG9zaW5nIGJvdGggQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9ybVN0cmVhbTogYnkg
ZGVmYXVsdCwgY2xvc2luZyB0aGUgd3JpdGFibGUgY2xvc2VzIHRoZSByZWFkYWJsZSBhZnRlciBz
eW5jIGVucXVldWVzIGFuZCBhc3luYyBkb25lIENhbid0IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9y
bVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhlIHdy
aXRhYmxlIGNsb3NlcyB0aGUgcmVhZGFibGUgYWZ0ZXIgYXN5bmMgZW5xdWV1ZXMgYW5kIGFzeW5j
IGRvbmUgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCitGQUlMIFRyYW5zZm9y
bVN0cmVhbSBmbHVzaCBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgd2hlbiB0aGUgd3JpdGFibGUgaXMg
Y2xvc2VkLCBpZiBubyB3cml0ZXMgYXJlIHF1ZXVlZCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFu
c2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGZsdXNoIGlzIGNhbGxlZCBhZnRlciBh
bGwgcXVldWVkIHdyaXRlcyBmaW5pc2gsIG9uY2UgdGhlIHdyaXRhYmxlIGlzIGNsb3NlZCBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0KK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGZs
dXNoIGdldHMgYSBjaGFuY2UgdG8gZW5xdWV1ZSBtb3JlIGludG8gdGhlIHJlYWRhYmxlIENhbid0
IGZpbmQgdmFyaWFibGU6IFRyYW5zZm9ybVN0cmVhbQorRkFJTCBUcmFuc2Zvcm1TdHJlYW0gZmx1
c2ggZ2V0cyBhIGNoYW5jZSB0byBlbnF1ZXVlIG1vcmUgaW50byB0aGUgcmVhZGFibGUsIGFuZCBj
YW4gdGhlbiBhc3luYyBjbG9zZSBDYW4ndCBmaW5kIHZhcmlhYmxlOiBUcmFuc2Zvcm1TdHJlYW0K
K0ZBSUwgVHJhbnNmb3JtIHN0cmVhbSBzaG91bGQgY2FsbCB0cmFuc2Zvcm1lciBtZXRob2RzIGFz
IG1ldGhvZHMgQ2FuJ3QgZmluZCB2YXJpYWJsZTogVHJhbnNmb3JtU3RyZWFtCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3RyYW5zZm9y
bS1zdHJlYW0uaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL3RyYW5zZm9ybS1zdHJlYW0uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWI3OTI2NGQzMTgyMjVlN2Ji
MTBjNTRiNGEwNWFmYTcxODY4MTA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtLXN0cmVhbS5odG1sCkBAIC0w
LDAgKzEsNDAxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2Vz
L3N0cmVhbXMtdXRpbHMuanMnPjwvc2NyaXB0PgorPHNjcmlwdD4KKy8vIFRoaXMgaXMgdXBkYXRl
ZCB0aWxsIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvc3RyZWFtcy9jb21taXQvZWM1ZmZhMDM2
MzA4ZDlmNjM1MGQyOTQ2NTYwZDQ4Y2RiZjA5MDkzOQorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeyB0cmFuc2Zvcm06IGZ1bmN0aW9uKCkgeyB9IH0pOyAvLyBU
cmFuc2Zvcm1TdHJlYW0gY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMuCit9LCAnVHJhbnNmb3Jt
U3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIGEgdHJhbnNmb3JtIGZ1bmN0aW9uJyk7CisK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1
bmN0aW9uKCkgeyBuZXcgVHJhbnNmb3JtU3RyZWFtKCk7IH0sICdUcmFuc2Zvcm1TdHJlYW0gY2Fu
bm90IGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gYXJndW1lbnRzJyk7CisgICAgYXNzZXJ0X3Rocm93
cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgVHJhbnNmb3JtU3RyZWFtKHt9KTsg
fSwgJ1RyYW5zZm9ybVN0cmVhbSBjYW5ub3QgYmUgY29uc3RydWN0ZWQgd2l0aCBhbiBlbXB0eSBv
YmplY3QnKTsKK30sICdUcmFuc2Zvcm1TdHJlYW0gY2Fubm90IGJlIGNvbnN0cnVjdGVkIHdpdGgg
bm8gdHJhbnNmb3JtIGZ1bmN0aW9uJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdmFyIHRz
ID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7IHRyYW5zZm9ybTogZnVuY3Rpb24oKSB7IH0gfSk7CisK
KyAgICBhc3NlcnRfdHJ1ZShPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHMs
ICd3cml0YWJsZScpLCAnaXQgaGFzIGEgd3JpdGFibGUgcHJvcGVydHknKTsKKyAgICBhc3NlcnRf
dHJ1ZSh0cy53cml0YWJsZSBpbnN0YW5jZW9mIFdyaXRhYmxlU3RyZWFtLCAnd3JpdGFibGUgaXMg
YW4gaW5zdGFuY2Ugb2YgV3JpdGFibGVTdHJlYW0nKTsKKworICAgIGFzc2VydF90cnVlKE9iamVj
dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0cywgJ3JlYWRhYmxlJyksICdpdCBoYXMg
YSByZWFkYWJsZSBwcm9wZXJ0eScpOworICAgIGFzc2VydF90cnVlKHRzLnJlYWRhYmxlIGluc3Rh
bmNlb2YgUmVhZGFibGVTdHJlYW0sICdyZWFkYWJsZSBpcyBhbiBpbnN0YW5jZSBvZiBSZWFkYWJs
ZVN0cmVhbScpOworfSwgJ1RyYW5zZm9ybVN0cmVhbSBpbnN0YW5jZXMgbXVzdCBoYXZlIHdyaXRh
YmxlIGFuZCByZWFkYWJsZSBwcm9wZXJ0aWVzIG9mIHRoZSBjb3JyZWN0IHR5cGVzJyk7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgdmFyIHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7IHRyYW5z
Zm9ybTogZnVuY3Rpb24oKSB7IH0gfSk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHRzLndyaXRhYmxl
LnN0YXRlLCAnd3JpdGFibGUnLCAnd3JpdGFibGUgc3RhcnRzIHdyaXRhYmxlJyk7Cit9LCAnVHJh
bnNmb3JtU3RyZWFtIHdyaXRhYmxlIHN0YXJ0cyBpbiB0aGUgd3JpdGFibGUgc3RhdGUnKTsKKwor
dmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnUGFzcy10aHJvdWdoIHN5bmMgVHJhbnNmb3JtU3RyZWFt
OiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxlIHdoYXQgaXMgcHV0IGludG8gd3JpdGFibGUnKTsKK3Rl
c3QxLnN0ZXAoZnVuY3Rpb24oKQoreworICAgIHZhciB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0o
eworICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGNodW5rLCBlbnF1ZXVlLCBkb25lKSB7Cisg
ICAgICAgICAgICBlbnF1ZXVlKGNodW5rKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAg
fQorICAgIH0pOworCisgICAgdHMud3JpdGFibGUud3JpdGUoJ2EnKTsKKworICAgIGFzc2VydF9l
cXVhbHModHMud3JpdGFibGUuc3RhdGUsICd3YWl0aW5nJywgJ3dyaXRhYmxlIGlzIHdhaXRpbmcg
YWZ0ZXIgb25lIHdyaXRlJyk7CisgICAgdHMucmVhZGFibGUuZ2V0UmVhZGVyKCkucmVhZCgpLnRo
ZW4odGVzdDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3Jlc3VsdCBm
cm9tIHJlYWRpbmcgdGhlIHJlYWRhYmxlIGlzIHRoZSBzYW1lIGFzIHdhcyB3cml0dGVuIHRvIHdy
aXRhYmxlJyk7CisKKyAgICAgICAgcmV0dXJuIHRzLndyaXRhYmxlLnJlYWR5LnRoZW4odGVzdDEu
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0cy53cml0
YWJsZS5zdGF0ZSwgJ3dyaXRhYmxlJywgJ3dyaXRhYmxlIGJlY29tZXMgd3JpdGFibGUgYWdhaW4n
KTsKKyAgICAgICAgICAgIHRlc3QxLmRvbmUoKTsKKyAgICAgICAgfSkpOworICAgIH0pKS5jYXRj
aCh0ZXN0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7
Cit9KTsKKwordmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnVXBwZXJjYXNlciBzeW5jIFRyYW5zZm9y
bVN0cmVhbTogY2FuIHJlYWQgZnJvbSByZWFkYWJsZSB0cmFuc2Zvcm1lZCB2ZXJzaW9uIG9mIHdo
YXQgaXMgcHV0IGludG8gd3JpdGFibGUnKTsKK3Rlc3QyLnN0ZXAoZnVuY3Rpb24oKQoreworICAg
IHZhciB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0
aW9uKGNodW5rLCBlbnF1ZXVlLCBkb25lKSB7CisgICAgICAgICAgICBlbnF1ZXVlKGNodW5rLnRv
VXBwZXJDYXNlKCkpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICB0cy53cml0YWJsZS53cml0ZSgnYScpOworCisgICAgYXNzZXJ0X2VxdWFscyh0cy53cml0
YWJsZS5zdGF0ZSwgJ3dhaXRpbmcnLCAnd3JpdGFibGUgaXMgd2FpdGluZyBhZnRlciBvbmUgd3Jp
dGUnKTsKKworICAgIHRzLnJlYWRhYmxlLmdldFJlYWRlcigpLnJlYWQoKS50aGVuKHRlc3QyLnN0
ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
cmVzdWx0LCB7IHZhbHVlOiAnQScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdyZXN1bHQgZnJvbSByZWFkaW5nIHRoZSByZWFkYWJsZSBpcyB0aGUgdHJhbnNm
b3JtYXRpb24gb2Ygd2hhdCB3YXMgd3JpdHRlbiB0byB3cml0YWJsZScpOworCisgICAgICAgIHJl
dHVybiB0cy53cml0YWJsZS5yZWFkeS50aGVuKHRlc3QyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHMud3JpdGFibGUuc3RhdGUsICd3cml0YWJsZScs
ICd3cml0YWJsZSBiZWNvbWVzIHdyaXRhYmxlIGFnYWluJyk7CisgICAgICAgICAgICB0ZXN0Mi5k
b25lKCk7CisgICAgICAgIH0pKTsKKyAgICB9KSkuY2F0Y2godGVzdDIuc3RlcF9mdW5jKGZ1bmN0
aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOworfSk7CisKK3ZhciB0ZXN0MyA9IGFz
eW5jX3Rlc3QoJ1VwcGVyY2FzZXItZG91YmxlciBzeW5jIFRyYW5zZm9ybVN0cmVhbTogY2FuIHJl
YWQgYm90aCBjaHVua3MgcHV0IGludG8gdGhlIHJlYWRhYmxlJyk7Cit0ZXN0My5zdGVwKGZ1bmN0
aW9uKCkKK3sKKyAgICB2YXIgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICAgICAgdHJh
bnNmb3JtOiBmdW5jdGlvbihjaHVuaywgZW5xdWV1ZSwgZG9uZSkgeworICAgICAgICAgICAgZW5x
dWV1ZShjaHVuay50b1VwcGVyQ2FzZSgpKTsKKyAgICAgICAgICAgIGVucXVldWUoY2h1bmsudG9V
cHBlckNhc2UoKSk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKyAgICB9KTsKKwor
ICAgIHRzLndyaXRhYmxlLndyaXRlKCdhJyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHRzLndyaXRh
YmxlLnN0YXRlLCAnd2FpdGluZycsICd3cml0YWJsZSBpcyB3YWl0aW5nIGFmdGVyIG9uZSB3cml0
ZScpOworCisgICAgdmFyIHJlYWRlciA9IHRzLnJlYWRhYmxlLmdldFJlYWRlcigpOworCisgICAg
cmVhZGVyLnJlYWQoKS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQxKSB7Cisg
ICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDEsIHsgdmFsdWU6ICdBJywgZG9uZTog
ZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBmaXJzdCBjaHVuayBy
ZWFkIGlzIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUgc2luZ2xlIGNodW5rIHdyaXR0ZW4nKTsK
KworICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QzLnN0ZXBfZnVuYyhmdW5j
dGlvbihyZXN1bHQyKSB7CisgICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQy
LCB7IHZhbHVlOiAnQScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAndGhlIHNlY29uZCBjaHVuayByZWFkIGlzIGFsc28gdGhlIHRyYW5zZm9ybWF0aW9u
IG9mIHRoZSBzaW5nbGUgY2h1bmsgd3JpdHRlbicpOworCisgICAgICAgICAgICByZXR1cm4gdHMu
d3JpdGFibGUucmVhZHkudGhlbih0ZXN0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyh0cy53cml0YWJsZS5zdGF0ZSwgJ3dyaXRhYmxlJywgJ3dy
aXRhYmxlIGJlY29tZXMgd3JpdGFibGUgYWdhaW4nKTsKKyAgICAgICAgICAgICAgICB0ZXN0My5k
b25lKCk7CisgICAgICAgICAgICB9KSk7CisgICAgICAgIH0pKTsKKyAgICB9KSkuY2F0Y2godGVz
dDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOworfSk7
CisKK3ZhciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ1VwcGVyY2FzZXIgYXN5bmMgVHJhbnNmb3JtU3Ry
ZWFtOiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxlIHRyYW5zZm9ybWVkIHZlcnNpb24gb2Ygd2hhdCBp
cyBwdXQgaW50byB3cml0YWJsZScpOwordGVzdDQuc3RlcChmdW5jdGlvbigpCit7CisgICAgdmFy
IHRzID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24o
Y2h1bmssIGVucXVldWUsIGRvbmUpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDQuc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgeyBlbnF1ZXVlKGNodW5rLnRvVXBwZXJDYXNlKCkpOyB9KSwgMTAw
KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDQuc3RlcF9mdW5jKGRvbmUpLCA1MDApOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICB0cy53cml0YWJsZS53cml0ZSgnYScpOworCisgICAg
YXNzZXJ0X2VxdWFscyh0cy53cml0YWJsZS5zdGF0ZSwgJ3dhaXRpbmcnLCAnd3JpdGFibGUgaXMg
d2FpdGluZyBhZnRlciBvbmUgd3JpdGUnKTsKKworICAgIHRzLnJlYWRhYmxlLmdldFJlYWRlcigp
LnJlYWQoKS50aGVuKHRlc3Q0LnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnQScsIGRvbmU6IGZhbHNlIH0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXN1bHQgZnJvbSByZWFkaW5nIHRoZSBy
ZWFkYWJsZSBpcyB0aGUgdHJhbnNmb3JtYXRpb24gb2Ygd2hhdCB3YXMgd3JpdHRlbiB0byB3cml0
YWJsZScpOworCisgICAgICAgIHJldHVybiB0cy53cml0YWJsZS5yZWFkeS50aGVuKHRlc3Q0LnN0
ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHMud3JpdGFi
bGUuc3RhdGUsICd3cml0YWJsZScsICd3cml0YWJsZSBiZWNvbWVzIHdyaXRhYmxlIGFnYWluJyk7
CisgICAgICAgICAgICB0ZXN0NC5kb25lKCk7CisgICAgICAgIH0pKTsKKyAgICB9KSkuY2F0Y2go
dGVzdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOwor
fSk7CisKK3ZhciB0ZXN0NSA9IGFzeW5jX3Rlc3QoJ1VwcGVyY2FzZXItZG91YmxlciBhc3luYyBU
cmFuc2Zvcm1TdHJlYW06IGNhbiByZWFkIGJvdGggY2h1bmtzIHB1dCBpbnRvIHRoZSByZWFkYWJs
ZScpOwordGVzdDUuc3RlcChmdW5jdGlvbigpCit7CisgICAgdmFyIHRzID0gbmV3IFRyYW5zZm9y
bVN0cmVhbSh7CisgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24oY2h1bmssIGVucXVldWUsIGRv
bmUpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eyBlbnF1ZXVlKGNodW5rLnRvVXBwZXJDYXNlKCkpOyB9KSwgMTAwKTsKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQodGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeyBlbnF1ZXVlKGNodW5rLnRvVXBw
ZXJDYXNlKCkpOyB9KSwgNTAwKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDUuc3RlcF9m
dW5jKGRvbmUpLCA5MDApOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgcmVhZGVyID0g
dHMucmVhZGFibGUuZ2V0UmVhZGVyKCk7CisKKyAgICB0cy53cml0YWJsZS53cml0ZSgnYScpOwor
CisgICAgYXNzZXJ0X2VxdWFscyh0cy53cml0YWJsZS5zdGF0ZSwgJ3dhaXRpbmcnLCAnd3JpdGFi
bGUgaXMgd2FpdGluZyBhZnRlciBvbmUgd3JpdGUnKTsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4o
dGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDEpIHsKKyAgICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ0EnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGhlIGZpcnN0IGNodW5rIHJlYWQgaXMgdGhlIHRyYW5zZm9y
bWF0aW9uIG9mIHRoZSBzaW5nbGUgY2h1bmsgd3JpdHRlbicpOworCisgICAgICAgIHJldHVybiBy
ZWFkZXIucmVhZCgpLnRoZW4odGVzdDUuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDIpIHsKKyAg
ICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDIsIHsgdmFsdWU6ICdBJywgZG9u
ZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgc2Vjb25k
IGNodW5rIHJlYWQgaXMgYWxzbyB0aGUgdHJhbnNmb3JtYXRpb24gb2YgdGhlIHNpbmdsZSBjaHVu
ayB3cml0dGVuJyk7CisKKyAgICAgICAgICAgIHJldHVybiB0cy53cml0YWJsZS5yZWFkeS50aGVu
KHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHRzLndyaXRhYmxlLnN0YXRlLCAnd3JpdGFibGUnLCAnd3JpdGFibGUgYmVjb21lcyB3cml0
YWJsZSBhZ2FpbicpOworICAgICAgICAgICAgICAgIHRlc3Q1LmRvbmUoKTsKKyAgICAgICAgICAg
IH0pKTsKKyAgICAgICAgfSkpOworICAgIH0pKS5jYXRjaCh0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rp
b24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Cit9KTsKKwordmFyIHRlc3Q2ID0gYXN5
bmNfdGVzdCgnVHJhbnNmb3JtU3RyZWFtOiBieSBkZWZhdWx0LCBjbG9zaW5nIHRoZSB3cml0YWJs
ZSBjbG9zZXMgdGhlIHJlYWRhYmxlICh3aGVuIHRoZXJlIGFyZSBubyBxdWV1ZWQgd3JpdGVzKScp
OwordGVzdDYuc3RlcChmdW5jdGlvbigpCit7CisgICAgdmFyIHRzID0gbmV3IFRyYW5zZm9ybVN0
cmVhbSh7IHRyYW5zZm9ybTogZnVuY3Rpb24oKSB7IH0gfSk7CisKKyAgICB0cy53cml0YWJsZS5j
bG9zZSgpOworICAgIGFzc2VydF9lcXVhbHModHMud3JpdGFibGUuc3RhdGUsICdjbG9zaW5nJywg
J3dyaXRhYmxlIGlzIGNsb3NpbmcnKTsKKworICAgIFByb21pc2UuYWxsKFt0cy53cml0YWJsZS5j
bG9zZWQsIHRzLnJlYWRhYmxlLmdldFJlYWRlcigpLmNsb3NlZF0pLnRoZW4odGVzdDYuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHRzLndyaXRhYmxlLnN0YXRl
LCAnY2xvc2VkJywgJ3dyaXRhYmxlIHN0YXRlIGJlY29tZXMgY2xvc2VkIGV2ZW50dWFsbHknKTsK
KyAgICAgICAgdGVzdDYuZG9uZSgnYm90aCB3cml0YWJsZSBhbmQgcmVhZGFibGUgY2xvc2VkIHBy
b21pc2VzIGZ1bGZpbGwnKTsKKyAgICB9KSkuY2F0Y2godGVzdDYuc3RlcF9mdW5jKGZ1bmN0aW9u
KGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOworfSk7CisKK3ZhciB0ZXN0NyA9IGFzeW5j
X3Rlc3QoJ1RyYW5zZm9ybVN0cmVhbTogYnkgZGVmYXVsdCwgY2xvc2luZyB0aGUgd3JpdGFibGUg
d2FpdHMgZm9yIHRyYW5zZm9ybXMgdG8gZmluaXNoIGJlZm9yZSBjbG9zaW5nIGJvdGgnKTsKK3Rl
c3Q3LnN0ZXAoZnVuY3Rpb24oKQoreworICAgIHZhciB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0o
eworICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGNodW5rLCBlbnF1ZXVlLCBkb25lKSB7Cisg
ICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3Q3LnN0ZXBfZnVuYyhkb25lKSwgNTAwKTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgdHMud3JpdGFibGUud3JpdGUoJ2EnKTsKKyAgICB0cy53cml0
YWJsZS5jbG9zZSgpOworICAgIGFzc2VydF9lcXVhbHModHMud3JpdGFibGUuc3RhdGUsICdjbG9z
aW5nJywgJ3dyaXRhYmxlIGlzIGNsb3NpbmcnKTsKKworICAgIHZhciByc0Nsb3NlZCA9IGZhbHNl
OworICAgIHRzLnJlYWRhYmxlLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKHRlc3Q3LnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKKyAgICAgICAgcnNDbG9zZWQgPSB0cnVlOworICAgIH0pKTsKKworICAg
IHNldFRpbWVvdXQodGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJzQ2xvc2VkLCBmYWxzZSwgJ3JlYWRhYmxlIGlzIG5vdCBjbG9zZWQgYWZ0ZXIgYSB0
aWNrJyk7CisKKyAgICAgICAgdHMud3JpdGFibGUuY2xvc2VkLnRoZW4odGVzdDcuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0cy53cml0YWJsZS5zdGF0
ZSwgJ2Nsb3NlZCcsICd3cml0YWJsZSBiZWNvbWVzIGNsb3NlZCBldmVudHVhbGx5Jyk7CisgICAg
ICAgICAgICBhc3NlcnRfdHJ1ZShyc0Nsb3NlZCwgJ3JlYWRhYmxlIGlzIGNsb3NlZCBhdCB0aGF0
IHBvaW50Jyk7CisgICAgICAgICAgICB0ZXN0Ny5kb25lKCk7CisgICAgICAgIH0pKS5jYXRjaCh0
ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Cisg
ICAgfSksIDApOworfSk7CisKK3ZhciB0ZXN0OCA9IGFzeW5jX3Rlc3QoJ1RyYW5zZm9ybVN0cmVh
bTogYnkgZGVmYXVsdCwgY2xvc2luZyB0aGUgd3JpdGFibGUgY2xvc2VzIHRoZSByZWFkYWJsZSBh
ZnRlciBzeW5jIGVucXVldWVzIGFuZCBhc3luYyBkb25lJyk7Cit0ZXN0OC5zdGVwKGZ1bmN0aW9u
KCkKK3sKKyAgICB2YXIgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICAgICAgdHJhbnNm
b3JtOiBmdW5jdGlvbihjaHVuaywgZW5xdWV1ZSwgZG9uZSkgeworICAgICAgICAgICAgZW5xdWV1
ZSgneCcpOworICAgICAgICAgICAgZW5xdWV1ZSgneScpOworICAgICAgICAgICAgc2V0VGltZW91
dCh0ZXN0OC5zdGVwX2Z1bmMoZG9uZSksIDUwMCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHRzLndyaXRhYmxlLndyaXRlKCdhJyk7CisgICAgdHMud3JpdGFibGUuY2xvc2UoKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHRzLndyaXRhYmxlLnN0YXRlLCAnY2xvc2luZycsICd3cml0YWJsZSBpcyBj
bG9zaW5nJyk7CisKKyAgICB0cy53cml0YWJsZS5jbG9zZWQudGhlbih0ZXN0OC5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHModHMud3JpdGFibGUuc3RhdGUsICdj
bG9zZWQnLCAnd3JpdGFibGUgYmVjb21lcyBjbG9zZWQgZXZlbnR1YWxseScpOworCisgICAgICAg
IHJldHVybiByZWFkYWJsZVN0cmVhbVRvQXJyYXkodHMucmVhZGFibGUpLnRoZW4odGVzdDguc3Rl
cF9mdW5jKGZ1bmN0aW9uKGNodW5rcykgeworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhjaHVua3MsIFsneCcsICd5J10sICdib3RoIGVucXVldWVkIGNodW5rcyBjYW4gYmUgcmVhZCBm
cm9tIHRoZSByZWFkYWJsZScpOworICAgICAgICAgICAgdGVzdDguZG9uZSgpOworICAgICAgICB9
KSk7CisgICAgfSkpLmNhdGNoKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91
bnJlYWNoZWQoZSk7IH0pKTsKK30pOworCit2YXIgdGVzdDkgPSBhc3luY190ZXN0KCdUcmFuc2Zv
cm1TdHJlYW06IGJ5IGRlZmF1bHQsIGNsb3NpbmcgdGhlIHdyaXRhYmxlIGNsb3NlcyB0aGUgcmVh
ZGFibGUgYWZ0ZXIgYXN5bmMgZW5xdWV1ZXMgYW5kIGFzeW5jIGRvbmUnKTsKK3Rlc3Q5LnN0ZXAo
ZnVuY3Rpb24oKQoreworICAgIHZhciB0cyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oeworICAgICAg
ICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGNodW5rLCBlbnF1ZXVlLCBkb25lKSB7CisgICAgICAgICAg
ICBzZXRUaW1lb3V0KHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsgZW5xdWV1ZSgneCcpOyB9
KSwgMTAwKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9u
KCkgeyBlbnF1ZXVlKCd5Jyk7IH0pLCA1MDApOworICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0
OS5zdGVwX2Z1bmMoZG9uZSksIDkwMCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHRzLndy
aXRhYmxlLndyaXRlKCdhJyk7CisgICAgdHMud3JpdGFibGUuY2xvc2UoKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKHRzLndyaXRhYmxlLnN0YXRlLCAnY2xvc2luZycsICd3cml0YWJsZSBpcyBjbG9zaW5n
Jyk7CisKKyAgICB0cy53cml0YWJsZS5jbG9zZWQudGhlbih0ZXN0OS5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHModHMud3JpdGFibGUuc3RhdGUsICdjbG9zZWQn
LCAnd3JpdGFibGUgYmVjb21lcyBjbG9zZWQgZXZlbnR1YWxseScpOworCisgICAgICAgIHJldHVy
biByZWFkYWJsZVN0cmVhbVRvQXJyYXkodHMucmVhZGFibGUpLnRoZW4odGVzdDkuc3RlcF9mdW5j
KGZ1bmN0aW9uKGNodW5rcykgeworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVu
a3MsIFsneCcsICd5J10sICdib3RoIGVucXVldWVkIGNodW5rcyBjYW4gYmUgcmVhZCBmcm9tIHRo
ZSByZWFkYWJsZScpOworICAgICAgICAgICAgdGVzdDkuZG9uZSgpOworICAgICAgICB9KSk7Cisg
ICAgfSkpLmNhdGNoKHRlc3Q5LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNo
ZWQoZSk7IH0pKTsKK30pOworCit2YXIgdGVzdDEwID0gYXN5bmNfdGVzdCgnVHJhbnNmb3JtU3Ry
ZWFtIGZsdXNoIGlzIGNhbGxlZCBpbW1lZGlhdGVseSB3aGVuIHRoZSB3cml0YWJsZSBpcyBjbG9z
ZWQsIGlmIG5vIHdyaXRlcyBhcmUgcXVldWVkJyk7Cit0ZXN0MTAuc3RlcChmdW5jdGlvbigpCit7
CisgICAgdmFyIGZsdXNoQ2FsbGVkID0gZmFsc2U7CisgICAgdmFyIHRzID0gbmV3IFRyYW5zZm9y
bVN0cmVhbSh7CisgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24oKSB7IH0sCisgICAgICAgIGZs
dXNoOiBmdW5jdGlvbihlbnF1ZXVlKSB7CisgICAgICAgICAgICBmbHVzaENhbGxlZCA9IHRydWU7
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHRzLndyaXRhYmxlLmNsb3NlKCkudGhlbih0ZXN0
MTAuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdHJ1ZShmbHVzaENhbGxl
ZCwgJ2Nsb3NpbmcgdGhlIHdyaXRhYmxlIHRyaWdnZXJzIHRoZSB0cmFuc2Zvcm0gZmx1c2ggaW1t
ZWRpYXRlbHknKTsKKyAgICAgICAgdGVzdDEwLmRvbmUoKTsKKyAgICB9KSk7Cit9KTsKKwordmFy
IHRlc3QxMSA9IGFzeW5jX3Rlc3QoJ1RyYW5zZm9ybVN0cmVhbSBmbHVzaCBpcyBjYWxsZWQgYWZ0
ZXIgYWxsIHF1ZXVlZCB3cml0ZXMgZmluaXNoLCBvbmNlIHRoZSB3cml0YWJsZSBpcyBjbG9zZWQn
KTsKK3Rlc3QxMS5zdGVwKGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgZmx1c2hDYWxsZWQgPSBmYWxz
ZTsKKyAgICB2YXIgdHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKKyAgICAgICAgdHJhbnNmb3Jt
OiBmdW5jdGlvbihjaHVuaywgZW5xdWV1ZSwgZG9uZSkgeworICAgICAgICAgICAgc2V0VGltZW91
dCh0ZXN0MTEuc3RlcF9mdW5jKGRvbmUpLCAxMDApOworICAgICAgICB9LAorICAgICAgICBmbHVz
aDogZnVuY3Rpb24oZW5xdWV1ZSkgeworICAgICAgICAgICAgZmx1c2hDYWxsZWQgPSB0cnVlOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICB0cy53cml0YWJsZS53cml0ZSgnYScpOworICAgIHRz
LndyaXRhYmxlLmNsb3NlKCk7CisgICAgYXNzZXJ0X2ZhbHNlKGZsdXNoQ2FsbGVkLCAnY2xvc2lu
ZyB0aGUgd3JpdGFibGUgZG9lcyBub3QgaW1tZWRpYXRlbHkgY2FsbCBmbHVzaCBpZiB3cml0ZXMg
YXJlIG5vdCBmaW5pc2hlZCcpOworCisgICAgdmFyIHJzQ2xvc2VkID0gZmFsc2U7CisgICAgdHMu
cmVhZGFibGUuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4odGVzdDExLnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsKKyAgICAgICAgcnNDbG9zZWQgPSB0cnVlOworICAgIH0pKTsKKworICAgIHNldFRpbWVv
dXQodGVzdDExLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3RydWUoZmx1
c2hDYWxsZWQsICdmbHVzaCBpcyBldmVudHVhbGx5IGNhbGxlZCcpOworICAgICAgICBhc3NlcnRf
ZmFsc2UocnNDbG9zZWQsICdpZiBmbHVzaCBkb2VzIG5vdCBjYWxsIGNsb3NlLCB0aGUgcmVhZGFi
bGUgZG9lcyBub3QgYmVjb21lIGNsb3NlZCcpOworICAgICAgICB0ZXN0MTEuZG9uZSgpOworICAg
IH0pLCA1MDApOworfSk7CisKK3ZhciB0ZXN0MTIgPSBhc3luY190ZXN0KCdUcmFuc2Zvcm1TdHJl
YW0gZmx1c2ggZ2V0cyBhIGNoYW5jZSB0byBlbnF1ZXVlIG1vcmUgaW50byB0aGUgcmVhZGFibGUn
KTsKK3Rlc3QxMi5zdGVwKGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgdHMgPSBuZXcgVHJhbnNmb3Jt
U3RyZWFtKHsKKyAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbihjaHVuaywgZW5xdWV1ZSwgZG9u
ZSkgeworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9LAorICAgICAgICBmbHVzaDogZnVu
Y3Rpb24oZW5xdWV1ZSkgeworICAgICAgICAgICAgZW5xdWV1ZSgneCcpOworICAgICAgICAgICAg
ZW5xdWV1ZSgneScpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgcmVhZGVyID0gdHMu
cmVhZGFibGUuZ2V0UmVhZGVyKCk7CisKKyAgICB0cy53cml0YWJsZS53cml0ZSgnYScpOworICAg
IHRzLndyaXRhYmxlLmNsb3NlKCk7CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHRlc3QxMi5zdGVw
X2Z1bmMoZnVuY3Rpb24ocmVzdWx0MSkgeworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhy
ZXN1bHQxLCB7IHZhbHVlOiAneCcsIGRvbmU6IGZhbHNlIH0sICd0aGUgZmlyc3QgY2h1bmsgcmVh
ZCBpcyB0aGUgZmlyc3Qgb25lIGVucXVldWVkIGluIGZsdXNoJyk7CisKKyAgICAgICAgcmV0dXJu
IHJlYWRlci5yZWFkKCkudGhlbih0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDIpIHsK
KyAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDIsIHsgdmFsdWU6ICd5Jywg
ZG9uZTogZmFsc2UgfSwgJ3RoZSBzZWNvbmQgY2h1bmsgcmVhZCBpcyB0aGUgc2Vjb25kIG9uZSBl
bnF1ZXVlZCBpbiBmbHVzaCcpOworICAgICAgICAgICAgdGVzdDEyLmRvbmUoKTsKKyAgICAgICAg
fSkpOworICAgIH0pKS5jYXRjaCh0ZXN0MTIuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0
X3VucmVhY2hlZChlKTsgfSkpOworfSk7CisKK3ZhciB0ZXN0MTMgPSBhc3luY190ZXN0KCdUcmFu
c2Zvcm1TdHJlYW0gZmx1c2ggZ2V0cyBhIGNoYW5jZSB0byBlbnF1ZXVlIG1vcmUgaW50byB0aGUg
cmVhZGFibGUsIGFuZCBjYW4gdGhlbiBhc3luYyBjbG9zZScpOwordGVzdDEzLnN0ZXAoZnVuY3Rp
b24oKQoreworICAgIHZhciBwcm9taXNlQ2FsbHMgPSAwOworICAgIHZhciB0cyA9IG5ldyBUcmFu
c2Zvcm1TdHJlYW0oeworICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGNodW5rLCBlbnF1ZXVl
LCBkb25lKSB7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0sCisgICAgICAgIGZsdXNo
OiBmdW5jdGlvbihlbnF1ZXVlLCBjbG9zZSkgeworICAgICAgICAgICAgZW5xdWV1ZSgneCcpOwor
ICAgICAgICAgICAgZW5xdWV1ZSgneScpOworICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0MTMu
c3RlcF9mdW5jKGNsb3NlKSwgMTAwKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgdmFyIHJl
YWRlciA9IHRzLnJlYWRhYmxlLmdldFJlYWRlcigpOworCisgICAgdHMud3JpdGFibGUud3JpdGUo
J2EnKTsKKyAgICB0cy53cml0YWJsZS5jbG9zZSgpOworICAgIHJlYWRlci5yZWFkKCkudGhlbih0
ZXN0MTMuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdDEpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cygrK3Byb21pc2VDYWxscywgMSk7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3Vs
dDEsIHsgdmFsdWU6ICd4JywgZG9uZTogZmFsc2UgfSwgJ3RoZSBmaXJzdCBjaHVuayByZWFkIGlz
IHRoZSBmaXJzdCBvbmUgZW5xdWV1ZWQgaW4gZmx1c2gnKTsKKworICAgICAgICByZXR1cm4gcmVh
ZGVyLnJlYWQoKS50aGVuKHRlc3QxMy5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0MikgeworICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscygrK3Byb21pc2VDYWxscywgMik7CisgICAgICAgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQyLCB7IHZhbHVlOiAneScsIGRvbmU6IGZhbHNlIH0s
ICd0aGUgc2Vjb25kIGNodW5rIHJlYWQgaXMgdGhlIHNlY29uZCBvbmUgZW5xdWV1ZWQgaW4gZmx1
c2gnKTsKKyAgICAgICAgfSkpOworICAgIH0pKS5jYXRjaCh0ZXN0MTMuc3RlcF9mdW5jKGZ1bmN0
aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkpOworCisgICAgcmVhZGVyLmNsb3NlZC50
aGVuKHRlc3QxMy5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
Kytwcm9taXNlQ2FsbHMsIDMpOworICAgICAgICB0ZXN0MTMuZG9uZSgncmVhZGFibGUgcmVhZGVy
IGJlY29tZXMgY2xvc2VkJyk7CisgICAgfSkpLmNhdGNoKHRlc3QxMy5zdGVwX2Z1bmMoZnVuY3Rp
b24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9KSk7Cit9KTsKKwordmFyIHRlc3QxNCA9IGFz
eW5jX3Rlc3QoJ1RyYW5zZm9ybSBzdHJlYW0gc2hvdWxkIGNhbGwgdHJhbnNmb3JtZXIgbWV0aG9k
cyBhcyBtZXRob2RzJyk7Cit0ZXN0MTQuc3RlcChmdW5jdGlvbigpCit7CisgICAgdmFyIHRzID0g
bmV3IFRyYW5zZm9ybVN0cmVhbSh7CisgICAgICAgIHN1ZmZpeDogJy1zdWZmaXgnLAorCisgICAg
ICAgIHRyYW5zZm9ybTogZnVuY3Rpb24oY2h1bmssIGVucXVldWUsIGRvbmUpIHsKKyAgICAgICAg
ICAgIGVucXVldWUoY2h1bmsgKyB0aGlzLnN1ZmZpeCk7CisgICAgICAgICAgICBkb25lKCk7Cisg
ICAgICAgIH0sCisKKyAgICAgICAgZmx1c2g6IGZ1bmN0aW9uKGVucXVldWUsIGNsb3NlKSB7Cisg
ICAgICAgICAgICBlbnF1ZXVlKCdmbHVzaGVkJyArIHRoaXMuc3VmZml4KTsKKyAgICAgICAgICAg
IGNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHRzLndyaXRhYmxlLndyaXRlKCdh
Jyk7CisgICAgdHMud3JpdGFibGUuY2xvc2UoKTsKKyAgICB0cy53cml0YWJsZS5jbG9zZWQudGhl
bigKKyAgICAgICAgdGVzdDE0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJl
dHVybiByZWFkYWJsZVN0cmVhbVRvQXJyYXkodHMucmVhZGFibGUpLnRoZW4odGVzdDE0LnN0ZXBf
ZnVuYyhmdW5jdGlvbihjaHVua3MpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGNodW5rcywgWydhLXN1ZmZpeCcsICdmbHVzaGVkLXN1ZmZpeCddLCAnYm90aCBlbnF1ZXVl
ZCBjaHVua3MgaGF2ZSBzdWZmaXhlcycpOworICAgICAgICAgICAgICAgIHRlc3QxNC5kb25lKCk7
CisgICAgICAgICAgICB9KSk7CisgICAgICAgIH0pLAorICAgICAgICB0ZXN0MTQuc3RlcF9mdW5j
KGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSkKKyAgICApOworfSk7Cis8L3Nj
cmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>