<?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>169663</bug_id>
          
          <creation_ts>2017-03-14 23:55:01 -0700</creation_ts>
          <short_desc>Make unit tests return a promise instead of manually calling done</short_desc>
          <delta_ts>2017-03-15 11:16:03 -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>Perf Dashboard</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1288000</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-14 23:55:01 -0700</bug_when>
    <thetext>Make the existing unit tests always reutrn a promise instead of manually calling &quot;done&quot; callback.
The promise tests are a lot more stable and less error prone.

See ​https://bugs.webkit.org/show_bug.cgi?id=169648</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288001</commentid>
    <comment_count>1</comment_count>
      <attachid>304481</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-14 23:59:06 -0700</bug_when>
    <thetext>Created attachment 304481
Cleanup tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288040</commentid>
    <comment_count>2</comment_count>
      <attachid>304481</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-03-15 05:37:31 -0700</bug_when>
    <thetext>Comment on attachment 304481
Cleanup tests

Could some of these then() cascades be replaced with await?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288118</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-15 10:37:13 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 304481 [details]
&gt; Cleanup tests
&gt; 
&gt; Could some of these then() cascades be replaced with await?

Unfortunately not yet since the stable version of node doesn&apos;t support it yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288140</commentid>
    <comment_count>4</comment_count>
      <attachid>304481</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-15 11:15:50 -0700</bug_when>
    <thetext>Comment on attachment 304481
Cleanup tests

Clearing flags on attachment: 304481

Committed r213993: &lt;http://trac.webkit.org/changeset/213993&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288142</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-15 11:16:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304481</attachid>
            <date>2017-03-14 23:59:06 -0700</date>
            <delta_ts>2017-03-15 11:15:50 -0700</delta_ts>
            <desc>Cleanup tests</desc>
            <filename>bug-169663-20170314235906.patch</filename>
            <type>text/plain</type>
            <size>63638</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzOTc0KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDE3LTAzLTE1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIE1ha2UgdW5pdCB0ZXN0cyByZXR1cm4gYSBwcm9taXNlIGluc3RlYWQgb2YgbWFu
dWFsbHkgY2FsbGluZyBkb25lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjk2NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNYWtlIHRoZSBleGlzdGluZyB1bml0IHRlc3RzIGFsd2F5cyByZXV0cm4gYSBw
cm9taXNlIGluc3RlYWQgb2YgbWFudWFsbHkgY2FsbGluZyAiZG9uZSIgY2FsbGJhY2sgYXMgZG9u
ZQorICAgICAgICBpbiByMjEzOTY5LiBUaGUgcHJvbWlzZSB0ZXN0cyBhcmUgYSBsb3QgbW9yZSBz
dGFibGUgYW5kIGxlc3MgZXJyb3IgcHJvbmUuCisKKyAgICAgICAgQWxzbyB1c2UgTW9ja1JlbW90
ZUFQSS53YWl0Rm9yUmVxdWVzdCgpIGluc3RlYWQgb2YgY2hhaW5pbmcgdHdvIHJlc29sdmVkIHBy
b21pc2VzIHdoZXJlIGFwcHJvcHJpYXRlLgorCisgICAgICAgICogdW5pdC10ZXN0cy9hbmFseXNp
cy10YXNrLXRlc3RzLmpzOgorICAgICAgICAqIHVuaXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRl
c3RzLmpzOgorICAgICAgICAqIHVuaXQtdGVzdHMvY2hlY2tjb25maWcuanM6CisgICAgICAgICog
dW5pdC10ZXN0cy9wcml2aWxlZ2VkLWFwaS10ZXN0cy5qczoKKwogMjAxNy0wMy0xNCAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIHNlcnZlciB0ZXN0cyBy
ZXR1cm4gYSBwcm9taXNlIGluc3RlYWQgb2YgbWFudWFsbHkgY2FsbGluZyBkb25lCkluZGV4OiBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9hbmFseXNpcy10YXNrLXRlc3RzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5
c2lzLXRhc2stdGVzdHMuanMJKHJldmlzaW9uIDIxMzk3NCkKKysrIFdlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAndXNlIHN0cmljdCc7CiAKLXZhciBhc3NlcnQgPSByZXF1aXJlKCdh
c3NlcnQnKTsKK2NvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpOwogCiByZXF1aXJlKCcu
Li90b29scy9qcy92My1tb2RlbHMuanMnKTsKIGxldCBNb2NrTW9kZWxzID0gcmVxdWlyZSgnLi9y
ZXNvdXJjZXMvbW9jay12My1tb2RlbHMuanMnKS5Nb2NrTW9kZWxzOwpAQCAtMTE2LDU3ICsxMTYs
NTYgQEAgZnVuY3Rpb24gbWVhc3VyZW1lbnRDbHVzdGVyKCkKICAgICB9OwogfQogCi1kZXNjcmli
ZSgnQW5hbHlzaXNUYXNrJywgZnVuY3Rpb24gKCkgeworZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycs
ICgpID0+IHsKICAgICBNb2NrTW9kZWxzLmluamVjdCgpOwogICAgIGxldCByZXF1ZXN0cyA9IE1v
Y2tSZW1vdGVBUEkuaW5qZWN0KCk7CiAKLSAgICBkZXNjcmliZSgnZmV0Y2hBbGwnLCBmdW5jdGlv
biAoKSB7Ci0gICAgICAgIGl0KCdzaG91bGQgcmVxdWVzdCBhbGwgYW5hbHlzaXMgdGFza3MnLCBm
dW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB2YXIgY2FsbENvdW50ID0gMDsKLSAgICAgICAgICAg
IEFuYWx5c2lzVGFzay5mZXRjaEFsbCgpLnRoZW4oZnVuY3Rpb24gKCkgeyBjYWxsQ291bnQrKzsg
fSk7CisgICAgZGVzY3JpYmUoJ2ZldGNoQWxsJywgKCkgPT4geworICAgICAgICBpdCgnc2hvdWxk
IHJlcXVlc3QgYWxsIGFuYWx5c2lzIHRhc2tzJywgKCkgPT4geworICAgICAgICAgICAgbGV0IGNh
bGxDb3VudCA9IDA7CisgICAgICAgICAgICBBbmFseXNpc1Rhc2suZmV0Y2hBbGwoKS50aGVuKCgp
ID0+IHsgY2FsbENvdW50Kys7IH0pOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNhbGxDb3Vu
dCwgMCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcuLi9hcGkvYW5hbHlzaXMt
dGFza3MnKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBub3QgcmVxdWVzdCBh
bGwgYW5hbHlzaXMgdGFza3MgbXVsdGlwbGUgdGltZXMnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICB2YXIgY2FsbENvdW50ID0gMDsKLSAgICAgICAgICAgIEFuYWx5c2lzVGFzay5mZXRjaEFs
bCgpLnRoZW4oZnVuY3Rpb24gKCkgeyBjYWxsQ291bnQrKzsgfSk7CisgICAgICAgIGl0KCdzaG91
bGQgbm90IHJlcXVlc3QgYWxsIGFuYWx5c2lzIHRhc2tzIG11bHRpcGxlIHRpbWVzJywgKCkgPT4g
eworICAgICAgICAgICAgbGV0IGNhbGxDb3VudCA9IDA7CisgICAgICAgICAgICBBbmFseXNpc1Rh
c2suZmV0Y2hBbGwoKS50aGVuKCgpID0+IHsgY2FsbENvdW50Kys7IH0pOwogICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGNhbGxDb3VudCwgMCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51
cmwsICcuLi9hcGkvYW5hbHlzaXMtdGFza3MnKTsKIAotICAgICAgICAgICAgQW5hbHlzaXNUYXNr
LmZldGNoQWxsKCkudGhlbihmdW5jdGlvbiAoKSB7IGNhbGxDb3VudCsrOyB9KTsKKyAgICAgICAg
ICAgIEFuYWx5c2lzVGFzay5mZXRjaEFsbCgpLnRoZW4oKCkgPT4geyBjYWxsQ291bnQrKzsgfSk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2FsbENvdW50LCAwKTsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwogICAgICAgICB9KTsKIAotICAgICAgICBp
dCgnc2hvdWxkIHJlc29sdmUgdGhlIHByb21pc2Ugd2hlbiB0aGUgcmVxdWVzdCBpcyBmdWxsZmls
bGVkJywgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgICAgIHZhciBjYWxsQ291bnQgPSAwOwot
ICAgICAgICAgICAgdmFyIHByb21pc2UgPSBBbmFseXNpc1Rhc2suZmV0Y2hBbGwoKS50aGVuKGZ1
bmN0aW9uICgpIHsgY2FsbENvdW50Kys7IH0pOworICAgICAgICBpdCgnc2hvdWxkIHJlc29sdmUg
dGhlIHByb21pc2Ugd2hlbiB0aGUgcmVxdWVzdCBpcyBmdWxsZmlsbGVkJywgKCkgPT4geworICAg
ICAgICAgICAgbGV0IGNhbGxDb3VudCA9IDA7CisgICAgICAgICAgICBjb25zdCBwcm9taXNlID0g
QW5hbHlzaXNUYXNrLmZldGNoQWxsKCkudGhlbigoKSA9PiB7IGNhbGxDb3VudCsrOyB9KTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnQsIDApOwogICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHNbMF0udXJsLCAnLi4vYXBpL2FuYWx5c2lzLXRhc2tzJyk7CiAKICAgICAgICAgICAgIHJl
cXVlc3RzWzBdLnJlc29sdmUoc2FtcGxlQW5hbHlzaXNUYXNrKCkpOwogCi0gICAgICAgICAgICB2
YXIgYW5vdGhlckNhbGxDb3VudCA9IDA7Ci0gICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgbGV0IGFub3RoZXJDYWxsQ291bnQgPSAwOworICAgICAgICAg
ICAgcmV0dXJuIHByb21pc2UudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGNhbGxDb3VudCwgMSk7Ci0gICAgICAgICAgICAgICAgQW5hbHlzaXNUYXNrLmZldGNoQWxs
KCkudGhlbihmdW5jdGlvbiAoKSB7IGFub3RoZXJDYWxsQ291bnQrKzsgfSk7Ci0gICAgICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBBbmFseXNpc1Rhc2suZmV0
Y2hBbGwoKS50aGVuKCgpID0+IHsgYW5vdGhlckNhbGxDb3VudCsrOyB9KTsKKyAgICAgICAgICAg
IH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjYWxsQ291bnQs
IDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChhbm90aGVyQ2FsbENvdW50LCAxKTsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKLSAgICAg
ICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3Ip
IHsgZG9uZShlcnJvcik7IH0pOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogCi0gICAg
ICAgIGl0KCdzaG91bGQgY3JlYXRlIEFuYWx5c2lzVGFzayBvYmplY3RzJywgZnVuY3Rpb24gKGRv
bmUpIHsKLSAgICAgICAgICAgIHZhciBwcm9taXNlID0gQW5hbHlzaXNUYXNrLmZldGNoQWxsKCk7
CisgICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIEFuYWx5c2lzVGFzayBvYmplY3RzJywgKCkgPT4g
eworICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IEFuYWx5c2lzVGFzay5mZXRjaEFsbCgpOwog
ICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVzb2x2ZShzYW1wbGVBbmFseXNpc1Rhc2soKSk7CiAK
LSAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1
cm4gcHJvbWlzZS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQW5h
bHlzaXNUYXNrLmFsbCgpLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgdmFyIHRhc2sgPSBB
bmFseXNpc1Rhc2suYWxsKClbMF07CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRhc2su
aWQoKSwgMTA4Mik7CkBAIC0xODEsMTUgKzE4MCwxNCBAQCBkZXNjcmliZSgnQW5hbHlzaXNUYXNr
JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0YXNrLnN0YXJ0
VGltZSgpLCAxNDU0NDQ0NDU4NzkxKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGFz
ay5lbmRNZWFzdXJlbWVudElkKCksIDM3MjUzNDQ4KTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwodGFzay5lbmRUaW1lKCksIDE0NTQ1MTUwMjAzMDMpOwotICAgICAgICAgICAgICAgIGRv
bmUoKTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgeyBkb25lKGVycm9y
KTsgfSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3Vs
ZCBjcmVhdGUgQ29tbWl0TG9nIG9iamVjdHMgZm9yIGBjYXVzZXNgJywgZnVuY3Rpb24gKGRvbmUp
IHsKLSAgICAgICAgICAgIHZhciBwcm9taXNlID0gQW5hbHlzaXNUYXNrLmZldGNoQWxsKCk7Cisg
ICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIENvbW1pdExvZyBvYmplY3RzIGZvciBgY2F1c2VzYCcs
ICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSBBbmFseXNpc1Rhc2suZmV0Y2hB
bGwoKTsKICAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoc2FtcGxlQW5hbHlzaXNUYXNr
KCkpOwogCi0gICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgcmV0dXJuIHByb21pc2UudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKEFuYWx5c2lzVGFzay5hbGwoKS5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIHZhciB0
YXNrID0gQW5hbHlzaXNUYXNrLmFsbCgpWzBdOwogCkBAIC0xOTksMjAgKzE5NywxOSBAQCBkZXNj
cmliZSgnQW5hbHlzaXNUYXNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXQucmV2aXNpb24oKSwgJzE5NjA1MScpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChjb21taXQucmVwb3NpdG9yeSgpLCBNb2NrTW9kZWxzLndlYmtpdCk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKCtjb21taXQudGltZSgpLCAxNDU0NDgxMjQ2MTA4KTsK
LSAgICAgICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAo
ZXJyb3IpIHsgZG9uZShlcnJvcik7IH0pOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwog
Ci0gICAgICAgIGl0KCdzaG91bGQgZmluZCBDb21taXRMb2cgb2JqZWN0cyBmb3IgYGNhdXNlc2Ag
d2hlbiBNZWFzdXJlbWVudEFkYXB0b3IgY3JlYXRlZCBtYXRjaGluZyBvYmplY3RzJywgZnVuY3Rp
b24gKGRvbmUpIHsKLSAgICAgICAgICAgIHZhciBhZGFwdG9yID0gbmV3IE1lYXN1cmVtZW50QWRh
cHRvcihtZWFzdXJlbWVudENsdXN0ZXIoKS5mb3JtYXRNYXApOwotICAgICAgICAgICAgdmFyIGFk
YXB0ZWRNZWFzdXJlbWVudCA9IGFkYXB0b3IuYXBwbHlUbyhtZWFzdXJlbWVudENsdXN0ZXIoKS5j
b25maWd1cmF0aW9ucy5jdXJyZW50WzBdKTsKKyAgICAgICAgaXQoJ3Nob3VsZCBmaW5kIENvbW1p
dExvZyBvYmplY3RzIGZvciBgY2F1c2VzYCB3aGVuIE1lYXN1cmVtZW50QWRhcHRvciBjcmVhdGVk
IG1hdGNoaW5nIG9iamVjdHMnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBhZGFwdG9yID0g
bmV3IE1lYXN1cmVtZW50QWRhcHRvcihtZWFzdXJlbWVudENsdXN0ZXIoKS5mb3JtYXRNYXApOwor
ICAgICAgICAgICAgY29uc3QgYWRhcHRlZE1lYXN1cmVtZW50ID0gYWRhcHRvci5hcHBseVRvKG1l
YXN1cmVtZW50Q2x1c3RlcigpLmNvbmZpZ3VyYXRpb25zLmN1cnJlbnRbMF0pOwogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGFkYXB0ZWRNZWFzdXJlbWVudC5pZCwgMzcxODgxNjEpOwogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGFkYXB0ZWRNZWFzdXJlbWVudC5jb21taXRTZXQoKS5jb21taXRG
b3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMud2Via2l0KS5yZXZpc2lvbigpLCAnMTk2MDUxJyk7CiAK
LSAgICAgICAgICAgIHZhciBwcm9taXNlID0gQW5hbHlzaXNUYXNrLmZldGNoQWxsKCk7CisgICAg
ICAgICAgICBjb25zdCBwcm9taXNlID0gQW5hbHlzaXNUYXNrLmZldGNoQWxsKCk7CiAgICAgICAg
ICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKHNhbXBsZUFuYWx5c2lzVGFzaygpKTsKIAotICAgICAg
ICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBwcm9t
aXNlLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChBbmFseXNpc1Rh
c2suYWxsKCkubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICB2YXIgdGFzayA9IEFuYWx5c2lz
VGFzay5hbGwoKVswXTsKIApAQCAtMjIxLDggKzIxOCw3IEBAIGRlc2NyaWJlKCdBbmFseXNpc1Rh
c2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC5y
ZXZpc2lvbigpLCAnMTk2MDUxJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1p
dC5yZXBvc2l0b3J5KCksIE1vY2tNb2RlbHMud2Via2l0KTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoK2NvbW1pdC50aW1lKCksIDE0NTQ0ODEyNDYxMDgpOwotICAgICAgICAgICAgICAg
IGRvbmUoKTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgeyBkb25lKGVy
cm9yKTsgfSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9KTsKSW5k
ZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10
ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0
cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanMJKHJldmlzaW9uIDIxMzk3NCkKKysrIFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcwkod29y
a2luZyBjb3B5KQpAQCAtNDE2LDExMyArNDE2LDExMyBAQCBmdW5jdGlvbiBzYW1wbGVGaW5pc2hl
ZEJ1aWxkKGJ1aWxkUmVxdWVzCiAgICAgfTsKIH0KIAotZGVzY3JpYmUoJ0J1aWxkYm90U3luY2Vy
JywgZnVuY3Rpb24gKCkgeworZGVzY3JpYmUoJ0J1aWxkYm90U3luY2VyJywgKCkgPT4gewogICAg
IE1vY2tNb2RlbHMuaW5qZWN0KCk7CiAgICAgbGV0IHJlcXVlc3RzID0gTW9ja1JlbW90ZUFQSS5p
bmplY3QoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnJyk7CiAKLSAgICBkZXNjcmliZSgnX2xvYWRD
b25maWcnLCBmdW5jdGlvbiAoKSB7CisgICAgZGVzY3JpYmUoJ19sb2FkQ29uZmlnJywgKCkgPT4g
ewogCi0gICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIEJ1aWxkYm90U3luY2VyIG9iamVjdHMgZm9y
IGEgY29uZmlndXJhdGlvbiB0aGF0IHNwZWNpZnkgYWxsIHJlcXVpcmVkIG9wdGlvbnMnLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIEJ1aWxkYm90U3luY2VyIG9iamVj
dHMgZm9yIGEgY29uZmlndXJhdGlvbiB0aGF0IHNwZWNpZnkgYWxsIHJlcXVpcmVkIG9wdGlvbnMn
LCAoKSA9PiB7CiAgICAgICAgICAgICBsZXQgc3luY2VycyA9IEJ1aWxkYm90U3luY2VyLl9sb2Fk
Q29uZmlnKE1vY2tSZW1vdGVBUEksIHsnY29uZmlndXJhdGlvbnMnOiBbc21hbGxDb25maWd1cmF0
aW9uKCldfSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc3luY2Vycy5sZW5ndGgsIDEpOwog
ICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gc29tZSByZXF1aXJl
ZCBvcHRpb25zIGFyZSBtaXNzaW5nJywgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgYXNzZXJ0
LnRocm93cyhmdW5jdGlvbiAoKSB7CisgICAgICAgIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBzb21l
IHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmcnLCAoKSA9PiB7CisgICAgICAgICAgICBhc3Nl
cnQudGhyb3dzKCgpID0+IHsKICAgICAgICAgICAgICAgICBsZXQgY29uZmlnID0gc21hbGxDb25m
aWd1cmF0aW9uKCk7CiAgICAgICAgICAgICAgICAgZGVsZXRlIGNvbmZpZ1snYnVpbGRlciddOwog
ICAgICAgICAgICAgICAgIEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKE1vY2tSZW1vdGVBUEks
IHsnY29uZmlndXJhdGlvbnMnOiBbY29uZmlnXX0pOwogICAgICAgICAgICAgfSwgJ2J1aWxkZXIg
c2hvdWxkIGJlIGEgcmVxdWlyZWQgb3B0aW9uJyk7Ci0gICAgICAgICAgICBhc3NlcnQudGhyb3dz
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gewogICAgICAg
ICAgICAgICAgIGxldCBjb25maWcgPSBzbWFsbENvbmZpZ3VyYXRpb24oKTsKICAgICAgICAgICAg
ICAgICBkZWxldGUgY29uZmlnWydwbGF0Zm9ybSddOwogICAgICAgICAgICAgICAgIEJ1aWxkYm90
U3luY2VyLl9sb2FkQ29uZmlnKE1vY2tSZW1vdGVBUEksIHsnY29uZmlndXJhdGlvbnMnOiBbY29u
ZmlnXX0pOwogICAgICAgICAgICAgfSwgJ3BsYXRmb3JtIHNob3VsZCBiZSBhIHJlcXVpcmVkIG9w
dGlvbicpOwotICAgICAgICAgICAgYXNzZXJ0LnRocm93cyhmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHsKICAgICAgICAgICAgICAgICBsZXQgY29uZmlnID0g
c21hbGxDb25maWd1cmF0aW9uKCk7CiAgICAgICAgICAgICAgICAgZGVsZXRlIGNvbmZpZ1sndGVz
dCddOwogICAgICAgICAgICAgICAgIEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKE1vY2tSZW1v
dGVBUEksIHsnY29uZmlndXJhdGlvbnMnOiBbY29uZmlnXX0pOwogICAgICAgICAgICAgfSwgJ3Rl
c3Qgc2hvdWxkIGJlIGEgcmVxdWlyZWQgb3B0aW9uJyk7Ci0gICAgICAgICAgICBhc3NlcnQudGhy
b3dzKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gewogICAg
ICAgICAgICAgICAgIGxldCBjb25maWcgPSBzbWFsbENvbmZpZ3VyYXRpb24oKTsKICAgICAgICAg
ICAgICAgICBkZWxldGUgY29uZmlnWydhcmd1bWVudHMnXTsKICAgICAgICAgICAgICAgICBCdWls
ZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVtb3RlQVBJLCB7J2NvbmZpZ3VyYXRpb25zJzog
W2NvbmZpZ119KTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgYXNzZXJ0LnRocm93cyhm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHsKICAgICAgICAg
ICAgICAgICBsZXQgY29uZmlnID0gc21hbGxDb25maWd1cmF0aW9uKCk7CiAgICAgICAgICAgICAg
ICAgZGVsZXRlIGNvbmZpZ1snYnVpbGRSZXF1ZXN0QXJndW1lbnQnXTsKICAgICAgICAgICAgICAg
ICBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVtb3RlQVBJLCB7J2NvbmZpZ3VyYXRp
b25zJzogW2NvbmZpZ119KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKIAotICAgICAg
ICBpdCgnc2hvdWxkIHRocm93IHdoZW4gYSB0ZXN0IG5hbWUgaXMgbm90IGFuIGFycmF5IG9mIHN0
cmluZ3MnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBhc3NlcnQudGhyb3dzKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGEgdGVzdCBuYW1lIGlzIG5vdCBh
biBhcnJheSBvZiBzdHJpbmdzJywgKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0LnRocm93cygo
KSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IHNtYWxsQ29uZmlndXJhdGlvbigp
OwogICAgICAgICAgICAgICAgIGNvbmZpZy50ZXN0ID0gJ3NvbWUgdGVzdCc7CiAgICAgICAgICAg
ICAgICAgQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoTW9ja1JlbW90ZUFQSSwgeydjb25maWd1
cmF0aW9ucyc6IFtjb25maWddfSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGFzc2Vy
dC50aHJvd3MoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB7
CiAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IHNtYWxsQ29uZmlndXJhdGlvbigpOwogICAg
ICAgICAgICAgICAgIGNvbmZpZy50ZXN0ID0gWzFdOwogICAgICAgICAgICAgICAgIEJ1aWxkYm90
U3luY2VyLl9sb2FkQ29uZmlnKE1vY2tSZW1vdGVBUEksIHsnY29uZmlndXJhdGlvbnMnOiBbY29u
ZmlnXX0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91
bGQgdGhyb3cgd2hlbiBhcmd1bWVudHMgaXMgbm90IGFuIG9iamVjdCcsIGZ1bmN0aW9uICgpIHsK
LSAgICAgICAgICAgIGFzc2VydC50aHJvd3MoZnVuY3Rpb24gKCkgeworICAgICAgICBpdCgnc2hv
dWxkIHRocm93IHdoZW4gYXJndW1lbnRzIGlzIG5vdCBhbiBvYmplY3QnLCAoKSA9PiB7CisgICAg
ICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHsKICAgICAgICAgICAgICAgICBsZXQgY29uZmln
ID0gc21hbGxDb25maWd1cmF0aW9uKCk7CiAgICAgICAgICAgICAgICAgY29uZmlnLmFyZ3VtZW50
cyA9ICdoZWxsbyc7CiAgICAgICAgICAgICAgICAgQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWco
TW9ja1JlbW90ZUFQSSwgeydjb25maWd1cmF0aW9ucyc6IFtjb25maWddfSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGFyZ3Vt
ZW50c1wncyB2YWx1ZXMgYXJlIG1hbGZvcm1lZCcsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
IGFzc2VydC50aHJvd3MoZnVuY3Rpb24gKCkgeworICAgICAgICBpdCgnc2hvdWxkIHRocm93IHdo
ZW4gYXJndW1lbnRzXCdzIHZhbHVlcyBhcmUgbWFsZm9ybWVkJywgKCkgPT4geworICAgICAgICAg
ICAgYXNzZXJ0LnRocm93cygoKSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IHNt
YWxsQ29uZmlndXJhdGlvbigpOwogICAgICAgICAgICAgICAgIGNvbmZpZy5hcmd1bWVudHMgPSB7
J3NvbWUnOiB7J3Jvb3QnOiAnc29tZSByb290JywgJ3Jvb3RzRXhjbHVkaW5nJzogWydvdGhlciBy
b290J119fTsKICAgICAgICAgICAgICAgICBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhSZW1v
dGVBUEksIHsnY29uZmlndXJhdGlvbnMnOiBbY29uZmlnXX0pOwogICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICBhc3NlcnQudGhyb3dzKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFzc2Vy
dC50aHJvd3MoKCkgPT4gewogICAgICAgICAgICAgICAgIGxldCBjb25maWcgPSBzbWFsbENvbmZp
Z3VyYXRpb24oKTsKICAgICAgICAgICAgICAgICBjb25maWcuYXJndW1lbnRzID0geydzb21lJzog
eydvdGhlcktleSc6ICdzb21lIHJvb3QnfX07CiAgICAgICAgICAgICAgICAgQnVpbGRib3RTeW5j
ZXIuX2xvYWRDb25maWcoUmVtb3RlQVBJLCB7J2NvbmZpZ3VyYXRpb25zJzogW2NvbmZpZ119KTsK
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgYXNzZXJ0LnRocm93cyhmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHsKICAgICAgICAgICAgICAgICBsZXQg
Y29uZmlnID0gc21hbGxDb25maWd1cmF0aW9uKCk7CiAgICAgICAgICAgICAgICAgY29uZmlnLmFy
Z3VtZW50cyA9IHsnc29tZSc6IHsncm9vdCc6IFsnYScsICdiJ119fTsKICAgICAgICAgICAgICAg
ICBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhSZW1vdGVBUEksIHsnY29uZmlndXJhdGlvbnMn
OiBbY29uZmlnXX0pOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBhc3NlcnQudGhyb3dz
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gewogICAgICAg
ICAgICAgICAgIGxldCBjb25maWcgPSBzbWFsbENvbmZpZ3VyYXRpb24oKTsKICAgICAgICAgICAg
ICAgICBjb25maWcuYXJndW1lbnRzID0geydzb21lJzogeydyb290JzogMX19OwogICAgICAgICAg
ICAgICAgIEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKFJlbW90ZUFQSSwgeydjb25maWd1cmF0
aW9ucyc6IFtjb25maWddfSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGFzc2VydC50
aHJvd3MoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB7CiAg
ICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IHNtYWxsQ29uZmlndXJhdGlvbigpOwogICAgICAg
ICAgICAgICAgIGNvbmZpZy5hcmd1bWVudHMgPSB7J3NvbWUnOiB7J3Jvb3RzRXhjbHVkaW5nJzog
J2EnfX07CiAgICAgICAgICAgICAgICAgQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoUmVtb3Rl
QVBJLCB7J2NvbmZpZ3VyYXRpb25zJzogW2NvbmZpZ119KTsKICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgYXNzZXJ0LnRocm93cyhmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3NlcnQu
dGhyb3dzKCgpID0+IHsKICAgICAgICAgICAgICAgICBsZXQgY29uZmlnID0gc21hbGxDb25maWd1
cmF0aW9uKCk7CiAgICAgICAgICAgICAgICAgY29uZmlnLmFyZ3VtZW50cyA9IHsnc29tZSc6IHsn
cm9vdHNFeGNsdWRpbmcnOiBbMV19fTsKICAgICAgICAgICAgICAgICBCdWlsZGJvdFN5bmNlci5f
bG9hZENvbmZpZyhSZW1vdGVBUEksIHsnY29uZmlndXJhdGlvbnMnOiBbY29uZmlnXX0pOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIEJ1
aWxkYm90U3luY2VyIG9iamVjdHMgZm9yIHZhbGlkIGNvbmZpZ3VyYXRpb25zJywgZnVuY3Rpb24g
KCkgeworICAgICAgICBpdCgnc2hvdWxkIGNyZWF0ZSBCdWlsZGJvdFN5bmNlciBvYmplY3RzIGZv
ciB2YWxpZCBjb25maWd1cmF0aW9ucycsICgpID0+IHsKICAgICAgICAgICAgIGxldCBzeW5jZXJz
ID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoUmVtb3RlQVBJLCBzYW1wbGVpT1NDb25maWco
KSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc3luY2Vycy5sZW5ndGgsIDIpOwogICAgICAg
ICAgICAgYXNzZXJ0Lm9rKHN5bmNlcnNbMF0gaW5zdGFuY2VvZiBCdWlsZGJvdFN5bmNlcik7CiAg
ICAgICAgICAgICBhc3NlcnQub2soc3luY2Vyc1sxXSBpbnN0YW5jZW9mIEJ1aWxkYm90U3luY2Vy
KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBwYXJzZSBidWlsZGVyIG5hbWVz
IGNvcnJlY3RseScsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCBwYXJzZSBidWls
ZGVyIG5hbWVzIGNvcnJlY3RseScsICgpID0+IHsKICAgICAgICAgICAgIGxldCBzeW5jZXJzID0g
QnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoUmVtb3RlQVBJLCBzYW1wbGVpT1NDb25maWcoKSk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc3luY2Vyc1swXS5idWlsZGVyTmFtZSgpLCAnQUJU
ZXN0LWlQaG9uZS1SdW5CZW5jaG1hcmstVGVzdHMnKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChzeW5jZXJzWzFdLmJ1aWxkZXJOYW1lKCksICdBQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVz
dHMnKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBwYXJzZSB0ZXN0IGNvbmZp
Z3VyYXRpb25zIGNvcnJlY3RseScsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCBw
YXJzZSB0ZXN0IGNvbmZpZ3VyYXRpb25zIGNvcnJlY3RseScsICgpID0+IHsKICAgICAgICAgICAg
IGxldCBzeW5jZXJzID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoUmVtb3RlQVBJLCBzYW1w
bGVpT1NDb25maWcoKSk7CiAKICAgICAgICAgICAgIGxldCBjb25maWd1cmF0aW9ucyA9IHN5bmNl
cnNbMF0udGVzdENvbmZpZ3VyYXRpb25zKCk7CkBAIC01NDIsNyArNTQyLDcgQEAgZGVzY3JpYmUo
J0J1aWxkYm90U3luY2VyJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGNvbmZpZ3VyYXRpb25zWzFdLnRlc3QsIE1vY2tNb2RlbHMuamV0c3RyZWFtKTsKICAgICAgICAg
fSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBwYXJzZSB0ZXN0IGNvbmZpZ3VyYXRpb25zIHdpdGgg
dHlwZXMgYW5kIHBsYXRmb3JtcyBleHBhbnNpb25zIGNvcnJlY3RseScsIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgaXQoJ3Nob3VsZCBwYXJzZSB0ZXN0IGNvbmZpZ3VyYXRpb25zIHdpdGggdHlwZXMg
YW5kIHBsYXRmb3JtcyBleHBhbnNpb25zIGNvcnJlY3RseScsICgpID0+IHsKICAgICAgICAgICAg
IGxldCBzeW5jZXJzID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoUmVtb3RlQVBJLCBzYW1w
bGVpT1NDb25maWdXaXRoRXhwYW5zaW9ucygpKTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHN5bmNlcnMubGVuZ3RoLCAyKTsKQEAgLTU2NywxNCArNTY3LDE0IEBAIGRlc2NyaWJlKCdCdWls
ZGJvdFN5bmNlcicsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBk
ZXNjcmliZSgnX3Byb3BlcnRpZXNGb3JCdWlsZFJlcXVlc3QnLCBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgIGl0KCdzaG91bGQgaW5jbHVkZSBhbGwgcHJvcGVydGllcyBzcGVjaWZpZWQgaW4gYSBnaXZl
biBjb25maWd1cmF0aW9uJywgZnVuY3Rpb24gKCkgeworICAgIGRlc2NyaWJlKCdfcHJvcGVydGll
c0ZvckJ1aWxkUmVxdWVzdCcsICgpID0+IHsKKyAgICAgICAgaXQoJ3Nob3VsZCBpbmNsdWRlIGFs
bCBwcm9wZXJ0aWVzIHNwZWNpZmllZCBpbiBhIGdpdmVuIGNvbmZpZ3VyYXRpb24nLCAoKSA9PiB7
CiAgICAgICAgICAgICBsZXQgc3luY2VycyA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKFJl
bW90ZUFQSSwgc2FtcGxlaU9TQ29uZmlnKCkpOwogICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMg
PSBzeW5jZXJzWzBdLl9wcm9wZXJ0aWVzRm9yQnVpbGRSZXF1ZXN0KGNyZWF0ZVNhbXBsZUJ1aWxk
UmVxdWVzdChNb2NrTW9kZWxzLmlwaG9uZSwgTW9ja01vZGVscy5zcGVlZG9tZXRlcikpOwogICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChPYmplY3Qua2V5cyhwcm9wZXJ0aWVzKSwgWydkZXNp
cmVkX2ltYWdlJywgJ29wZW5zb3VyY2UnLCAncm9vdHNfZGljdCcsICd0ZXN0X25hbWUnLCAnZm9y
Y2VzY2hlZHVsZXInLCAnYnVpbGRfcmVxdWVzdF9pZCddKTsKICAgICAgICAgfSk7CiAKLSAgICAg
ICAgaXQoJ3Nob3VsZCBwcmVzZXJ2ZSBub24tcGFyYW1ldHJpYyBwcm9wZXJ0eSB2YWx1ZXMnLCBm
dW5jdGlvbiAoKSB7CisgICAgICAgIGl0KCdzaG91bGQgcHJlc2VydmUgbm9uLXBhcmFtZXRyaWMg
cHJvcGVydHkgdmFsdWVzJywgKCkgPT4gewogICAgICAgICAgICAgbGV0IHN5bmNlcnMgPSBCdWls
ZGJvdFN5bmNlci5fbG9hZENvbmZpZyhSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKTsKICAg
ICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gc3luY2Vyc1swXS5fcHJvcGVydGllc0ZvckJ1aWxk
UmVxdWVzdChjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVscy5pcGhvbmUsIE1vY2tN
b2RlbHMuc3BlZWRvbWV0ZXIpKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwcm9wZXJ0aWVz
Wyd0ZXN0X25hbWUnXSwgJ3NwZWVkb21ldGVyJyk7CkBAIC01ODUsMjUgKzU4NSwyNSBAQCBkZXNj
cmliZSgnQnVpbGRib3RTeW5jZXInLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocHJvcGVydGllc1snZm9yY2VzY2hlZHVsZXInXSwgJ0FCVGVzdC1pUGFkLVJ1bkJlbmNo
bWFyay1UZXN0cy1Gb3JjZVNjaGVkdWxlcicpOwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgn
c2hvdWxkIHJlc29sdmUgInJvb3QiJywgZnVuY3Rpb24gKCkgeworICAgICAgICBpdCgnc2hvdWxk
IHJlc29sdmUgInJvb3QiJywgKCkgPT4gewogICAgICAgICAgICAgbGV0IHN5bmNlcnMgPSBCdWls
ZGJvdFN5bmNlci5fbG9hZENvbmZpZyhSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKTsKICAg
ICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gc3luY2Vyc1swXS5fcHJvcGVydGllc0ZvckJ1aWxk
UmVxdWVzdChjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVscy5pcGhvbmUsIE1vY2tN
b2RlbHMuc3BlZWRvbWV0ZXIpKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwcm9wZXJ0aWVz
WydkZXNpcmVkX2ltYWdlJ10sICcxM0E0NTInKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQo
J3Nob3VsZCByZXNvbHZlICJyb290T3B0aW9ucyInLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGl0
KCdzaG91bGQgcmVzb2x2ZSAicm9vdE9wdGlvbnMiJywgKCkgPT4gewogICAgICAgICAgICAgbGV0
IHN5bmNlcnMgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhSZW1vdGVBUEksIHNhbXBsZWlP
U0NvbmZpZygpKTsKICAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gc3luY2Vyc1swXS5fcHJv
cGVydGllc0ZvckJ1aWxkUmVxdWVzdChjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVs
cy5pcGhvbmUsIE1vY2tNb2RlbHMuc3BlZWRvbWV0ZXIpKTsKICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChwcm9wZXJ0aWVzWydyb290c19kaWN0J10sIEpTT04uc3RyaW5naWZ5KHNhbXBsZUNvbW1p
dFNldERhdGEpKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCByZXNvbHZlICJy
b290c0V4Y2x1ZGluZyInLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGl0KCdzaG91bGQgcmVzb2x2
ZSAicm9vdHNFeGNsdWRpbmciJywgKCkgPT4gewogICAgICAgICAgICAgbGV0IHN5bmNlcnMgPSBC
dWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKTsK
ICAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gc3luY2Vyc1swXS5fcHJvcGVydGllc0ZvckJ1
aWxkUmVxdWVzdChjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVscy5pcGhvbmUsIE1v
Y2tNb2RlbHMuc3BlZWRvbWV0ZXIpKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwcm9wZXJ0
aWVzWydyb290c19kaWN0J10sIEpTT04uc3RyaW5naWZ5KHNhbXBsZUNvbW1pdFNldERhdGEpKTsK
ICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBzZXQgdGhlIHByb3BlcnR5IGZvciB0
aGUgYnVpbGQgcmVxdWVzdCBpZCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCBz
ZXQgdGhlIHByb3BlcnR5IGZvciB0aGUgYnVpbGQgcmVxdWVzdCBpZCcsICgpID0+IHsKICAgICAg
ICAgICAgIGxldCBzeW5jZXJzID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoUmVtb3RlQVBJ
LCBzYW1wbGVpT1NDb25maWcoKSk7CiAgICAgICAgICAgICBsZXQgcmVxdWVzdCA9IGNyZWF0ZVNh
bXBsZUJ1aWxkUmVxdWVzdChNb2NrTW9kZWxzLmlwaG9uZSwgTW9ja01vZGVscy5zcGVlZG9tZXRl
cik7CiAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IHN5bmNlcnNbMF0uX3Byb3BlcnRpZXNG
b3JCdWlsZFJlcXVlc3QocmVxdWVzdCk7CkBAIC02MTEsOCArNjExLDggQEAgZGVzY3JpYmUoJ0J1
aWxkYm90U3luY2VyJywgZnVuY3Rpb24gKCkgewogICAgICAgICB9KTsKICAgICB9KTsKIAotICAg
IGRlc2NyaWJlKCdwdWxsQnVpbGRib3QnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIGl0KCdzaG91
bGQgZmV0Y2ggcGVuZGluZyBidWlsZHMgZnJvbSB0aGUgcmlnaHQgVVJMJywgZnVuY3Rpb24gKCkg
eworICAgIGRlc2NyaWJlKCdwdWxsQnVpbGRib3QnLCAoKSA9PiB7CisgICAgICAgIGl0KCdzaG91
bGQgZmV0Y2ggcGVuZGluZyBidWlsZHMgZnJvbSB0aGUgcmlnaHQgVVJMJywgKCkgPT4gewogICAg
ICAgICAgICAgbGV0IHN5bmNlciA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKE1vY2tSZW1v
dGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKVsxXTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChz
eW5jZXIuYnVpbGRlck5hbWUoKSwgJ0FCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cycpOwog
ICAgICAgICAgICAgbGV0IGV4cGVjdGVkVVJMID0gJy9qc29uL2J1aWxkZXJzL0FCVGVzdC1pUGFk
LVJ1bkJlbmNobWFyay1UZXN0cy9wZW5kaW5nQnVpbGRzJzsKQEAgLTYyMiw3ICs2MjIsNyBAQCBk
ZXNjcmliZSgnQnVpbGRib3RTeW5jZXInLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCBleHBlY3RlZFVSTCk7CiAgICAgICAgIH0pOwogCi0g
ICAgICAgIGl0KCdzaG91bGQgZmV0Y2ggcmVjZW50IGJ1aWxkcyBvbmNlIHBlbmRpbmcgYnVpbGRz
IGhhdmUgYmVlbiBmZXRjaGVkJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgaXQoJ3Nob3Vs
ZCBmZXRjaCByZWNlbnQgYnVpbGRzIG9uY2UgcGVuZGluZyBidWlsZHMgaGF2ZSBiZWVuIGZldGNo
ZWQnLCAoKSA9PiB7CiAgICAgICAgICAgICBsZXQgc3luY2VyID0gQnVpbGRib3RTeW5jZXIuX2xv
YWRDb25maWcoTW9ja1JlbW90ZUFQSSwgc2FtcGxlaU9TQ29uZmlnKCkpWzFdOwogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHN5bmNlci5idWlsZGVyTmFtZSgpLCAnQUJUZXN0LWlQYWQtUnVuQmVu
Y2htYXJrLVRlc3RzJyk7CiAKQEAgLTYzMCwzMiArNjMwLDMwIEBAIGRlc2NyaWJlKCdCdWlsZGJv
dFN5bmNlcicsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0
cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwg
Jy9qc29uL2J1aWxkZXJzL0FCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cy9wZW5kaW5nQnVp
bGRzJyk7CiAgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKFtdKTsKLSAgICAgICAgICAg
IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJu
IE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKS50aGVuKCgpID0+IHsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL2pzb24vYnVpbGRlcnMvQUJUZXN0LWlQYWQt
UnVuQmVuY2htYXJrLVRlc3RzL2J1aWxkcy8/c2VsZWN0PS0xJyk7Ci0gICAgICAgICAgICAgICAg
ZG9uZSgpOwotICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgICAgICB9KTsKICAg
ICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBmZXRjaCB0aGUgcmlnaHQgbnVtYmVyIG9m
IHJlY2VudCBidWlsZHMnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICBpdCgnc2hvdWxkIGZl
dGNoIHRoZSByaWdodCBudW1iZXIgb2YgcmVjZW50IGJ1aWxkcycsICgpID0+IHsKICAgICAgICAg
ICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVtb3RlQVBJ
LCBzYW1wbGVpT1NDb25maWcoKSlbMV07CiAKICAgICAgICAgICAgIHN5bmNlci5wdWxsQnVpbGRi
b3QoMyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvanNvbi9idWlsZGVycy9B
QlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMvcGVuZGluZ0J1aWxkcycpOwogICAgICAgICAg
ICAgcmVxdWVzdHNbMF0ucmVzb2x2ZShbXSk7Ci0gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUo
KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndh
aXRGb3JSZXF1ZXN0KCkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcXVlc3RzLmxlbmd0aCwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzWzFdLnVybCwgJy9qc29uL2J1aWxkZXJzL0FCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0
cy9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTImc2VsZWN0PS0zJyk7Ci0gICAgICAgICAgICAg
ICAgZG9uZSgpOwotICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgICAgICB9KTsK
ICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgQnVpbGRib3RCdWlsZEVu
dHJ5IGZvciBwZW5kaW5nIGJ1aWxkcycsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIGl0KCdz
aG91bGQgY3JlYXRlIEJ1aWxkYm90QnVpbGRFbnRyeSBmb3IgcGVuZGluZyBidWlsZHMnLCAoKSA9
PiB7CiAgICAgICAgICAgICBsZXQgc3luY2VyID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWco
TW9ja1JlbW90ZUFQSSwgc2FtcGxlaU9TQ29uZmlnKCkpWzFdOwogICAgICAgICAgICAgbGV0IHBy
b21pc2UgPSBzeW5jZXIucHVsbEJ1aWxkYm90KCk7CiAgICAgICAgICAgICByZXF1ZXN0c1swXS5y
ZXNvbHZlKFtzYW1wbGVQZW5kaW5nQnVpbGQoKV0pOwotICAgICAgICAgICAgcHJvbWlzZS50aGVu
KGZ1bmN0aW9uIChlbnRyaWVzKSB7CisgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKChl
bnRyaWVzKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVudHJpZXMubGVuZ3Ro
LCAxKTsKICAgICAgICAgICAgICAgICBsZXQgZW50cnkgPSBlbnRyaWVzWzBdOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5vayhlbnRyeSBpbnN0YW5jZW9mIEJ1aWxkYm90QnVpbGRFbnRyeSk7CkBA
IC02NjYsMjIgKzY2NCwyMCBAQCBkZXNjcmliZSgnQnVpbGRib3RTeW5jZXInLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFlbnRyeS5pc0luUHJvZ3Jlc3MoKSk7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKCFlbnRyeS5oYXNGaW5pc2hlZCgpKTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoZW50cnkudXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9y
Zy9idWlsZGVycy9BQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMvJyk7Ci0gICAgICAgICAg
ICAgICAgZG9uZSgpOwotICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgICAgICB9
KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgQnVpbGRib3RCdWls
ZEVudHJ5IGZvciBpbi1wcm9ncmVzcyBidWlsZHMnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAg
ICBpdCgnc2hvdWxkIGNyZWF0ZSBCdWlsZGJvdEJ1aWxkRW50cnkgZm9yIGluLXByb2dyZXNzIGJ1
aWxkcycsICgpID0+IHsKICAgICAgICAgICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5f
bG9hZENvbmZpZyhNb2NrUmVtb3RlQVBJLCBzYW1wbGVpT1NDb25maWcoKSlbMV07CiAKICAgICAg
ICAgICAgIGxldCBwcm9taXNlID0gc3luY2VyLnB1bGxCdWlsZGJvdCgxKTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgcmVxdWVzdHNb
MF0ucmVzb2x2ZShbXSk7Ci0gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0
KCkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMik7CiAgICAgICAgICAgICAgICAgcmVxdWVzdHNbMV0ucmVzb2x2ZSh7Wy0xXTogc2Ft
cGxlSW5Qcm9ncmVzc0J1aWxkKCl9KTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOwotCi0g
ICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKGVudHJpZXMpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICAgICAgICAgIH0pLnRoZW4oKGVudHJpZXMpID0+IHsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZW50cmllcy5sZW5ndGgsIDEpOwogICAgICAg
ICAgICAgICAgIGxldCBlbnRyeSA9IGVudHJpZXNbMF07CiAgICAgICAgICAgICAgICAgYXNzZXJ0
Lm9rKGVudHJ5IGluc3RhbmNlb2YgQnVpbGRib3RCdWlsZEVudHJ5KTsKQEAgLTY5MiwyMiArNjg4
LDIwIEBAIGRlc2NyaWJlKCdCdWlsZGJvdFN5bmNlcicsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgICAgICBhc3NlcnQub2soZW50cnkuaXNJblByb2dyZXNzKCkpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5vayghZW50cnkuaGFzRmluaXNoZWQoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGVudHJ5LnVybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvQUJU
ZXN0LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzL2J1aWxkcy82MTQnKTsKLSAgICAgICAgICAgICAg
ICBkb25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgICAgIH0pOwog
ICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIGNyZWF0ZSBCdWlsZGJvdEJ1aWxkRW50
cnkgZm9yIGZpbmlzaGVkIGJ1aWxkcycsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIGl0KCdz
aG91bGQgY3JlYXRlIEJ1aWxkYm90QnVpbGRFbnRyeSBmb3IgZmluaXNoZWQgYnVpbGRzJywgKCkg
PT4gewogICAgICAgICAgICAgbGV0IHN5bmNlciA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmln
KE1vY2tSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKVsxXTsKIAogICAgICAgICAgICAgbGV0
IHByb21pc2UgPSBzeW5jZXIucHVsbEJ1aWxkYm90KDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZl
KFtdKTsKLSAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKS50aGVuKCgp
ID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsK
ICAgICAgICAgICAgICAgICByZXF1ZXN0c1sxXS5yZXNvbHZlKHtbLTFdOiBzYW1wbGVGaW5pc2hl
ZEJ1aWxkKCl9KTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOwotCi0gICAgICAgICAgICBw
cm9taXNlLnRoZW4oZnVuY3Rpb24gKGVudHJpZXMpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
cHJvbWlzZTsKKyAgICAgICAgICAgIH0pLnRoZW4oKGVudHJpZXMpID0+IHsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKGVudHJpZXMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAg
ICBsZXQgZW50cnkgPSBlbnRyaWVzWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5vayhlbnRy
eSBpbnN0YW5jZW9mIEJ1aWxkYm90QnVpbGRFbnRyeSk7CkBAIC03MTgsMTEgKzcxMiwxMCBAQCBk
ZXNjcmliZSgnQnVpbGRib3RTeW5jZXInLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0Lm9rKCFlbnRyeS5pc0luUHJvZ3Jlc3MoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
Lm9rKGVudHJ5Lmhhc0ZpbmlzaGVkKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChl
bnRyeS51cmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL0FCVGVzdC1pUGFk
LVJ1bkJlbmNobWFyay1UZXN0cy9idWlsZHMvMTc1NScpOwotICAgICAgICAgICAgICAgIGRvbmUo
KTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIEJ1aWxkYm90QnVpbGRFbnRyeSBmb3Ig
bWl4ZWQgcGVuZGluZywgaW4tcHJvZ3Jlc3MsIGZpbmlzaGVkLCBhbmQgbWlzc2luZyBidWlsZHMn
LCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICBpdCgnc2hvdWxkIGNyZWF0ZSBCdWlsZGJvdEJ1
aWxkRW50cnkgZm9yIG1peGVkIHBlbmRpbmcsIGluLXByb2dyZXNzLCBmaW5pc2hlZCwgYW5kIG1p
c3NpbmcgYnVpbGRzJywgKCkgPT4gewogICAgICAgICAgICAgbGV0IHN5bmNlciA9IEJ1aWxkYm90
U3luY2VyLl9sb2FkQ29uZmlnKE1vY2tSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKVsxXTsK
IAogICAgICAgICAgICAgbGV0IHByb21pc2UgPSBzeW5jZXIucHVsbEJ1aWxkYm90KDUpOwpAQCAt
NzMwLDEyICs3MjMsMTEgQEAgZGVzY3JpYmUoJ0J1aWxkYm90U3luY2VyJywgZnVuY3Rpb24gKCkg
ewogCiAgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKFtzYW1wbGVQZW5kaW5nQnVpbGQo
MTIzKV0pOwogCi0gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCkudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwg
Mik7CiAgICAgICAgICAgICAgICAgcmVxdWVzdHNbMV0ucmVzb2x2ZSh7Wy0xXTogc2FtcGxlRmlu
aXNoZWRCdWlsZCgpLCBbLTJdOiB7J2Vycm9yJzogJ05vdCBhdmFpbGFibGUnfSwgWy00XTogc2Ft
cGxlSW5Qcm9ncmVzc0J1aWxkKCl9KTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOwotCi0g
ICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKGVudHJpZXMpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICAgICAgICAgIH0pLnRoZW4oKGVudHJpZXMpID0+IHsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGVudHJpZXMubGVuZ3RoLCAzKTsKIAog
ICAgICAgICAgICAgICAgIGxldCBlbnRyeSA9IGVudHJpZXNbMF07CkBAIC03NjcsMTIgKzc1OSwx
MCBAQCBkZXNjcmliZSgnQnVpbGRib3RTeW5jZXInLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0Lm9rKCFlbnRyeS5pc0luUHJvZ3Jlc3MoKSk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0Lm9rKGVudHJ5Lmhhc0ZpbmlzaGVkKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChlbnRyeS51cmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL0FCVGVz
dC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cy9idWlsZHMvMTc1NScpOwotCi0gICAgICAgICAgICAg
ICAgZG9uZSgpOwotICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgICAgICB9KTsK
ICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBzb3J0IEJ1aWxkYm90QnVpbGRFbnRy
eSBieSBvcmRlcicsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIGl0KCdzaG91bGQgc29ydCBC
dWlsZGJvdEJ1aWxkRW50cnkgYnkgb3JkZXInLCAoKSA9PiB7CiAgICAgICAgICAgICBsZXQgc3lu
Y2VyID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoTW9ja1JlbW90ZUFQSSwgc2FtcGxlaU9T
Q29uZmlnKCkpWzFdOwogCiAgICAgICAgICAgICBsZXQgcHJvbWlzZSA9IHN5bmNlci5wdWxsQnVp
bGRib3QoNSk7CkBAIC03ODAsMTIgKzc3MCwxMSBAQCBkZXNjcmliZSgnQnVpbGRib3RTeW5jZXIn
LCBmdW5jdGlvbiAoKSB7CiAKICAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoW3NhbXBs
ZVBlbmRpbmdCdWlsZCg0NTYsIDIpLCBzYW1wbGVQZW5kaW5nQnVpbGQoMTIzLCAxKV0pOwogCi0g
ICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCkudGhlbigoKSA9PiB7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CiAgICAgICAg
ICAgICAgICAgcmVxdWVzdHNbMV0ucmVzb2x2ZSh7Wy0zXTogc2FtcGxlRmluaXNoZWRCdWlsZCgp
LCBbLTFdOiB7J2Vycm9yJzogJ05vdCBhdmFpbGFibGUnfSwgWy0yXTogc2FtcGxlSW5Qcm9ncmVz
c0J1aWxkKCl9KTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOwotCi0gICAgICAgICAgICBw
cm9taXNlLnRoZW4oZnVuY3Rpb24gKGVudHJpZXMpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
cHJvbWlzZTsKKyAgICAgICAgICAgIH0pLnRoZW4oKGVudHJpZXMpID0+IHsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKGVudHJpZXMubGVuZ3RoLCA0KTsKIAogICAgICAgICAgICAg
ICAgIGxldCBlbnRyeSA9IGVudHJpZXNbMF07CkBAIC04MjcsMTIgKzgxNiwxMCBAQCBkZXNjcmli
ZSgnQnVpbGRib3RTeW5jZXInLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
Lm9rKCFlbnRyeS5pc0luUHJvZ3Jlc3MoKSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0Lm9rKGVu
dHJ5Lmhhc0ZpbmlzaGVkKCkpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlbnRyeS51
cmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL0FCVGVzdC1pUGFkLVJ1bkJl
bmNobWFyay1UZXN0cy9idWlsZHMvMTc1NScpOwotCi0gICAgICAgICAgICAgICAgZG9uZSgpOwot
ICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7
CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBvdmVycmlkZSBCdWlsZGJvdEJ1aWxkRW50cnkgZm9yIHBl
bmRpbmcgYnVpbGRzIGJ5IGluLXByb2dyZXNzIGJ1aWxkcycsIGZ1bmN0aW9uIChkb25lKSB7Cisg
ICAgICAgIGl0KCdzaG91bGQgb3ZlcnJpZGUgQnVpbGRib3RCdWlsZEVudHJ5IGZvciBwZW5kaW5n
IGJ1aWxkcyBieSBpbi1wcm9ncmVzcyBidWlsZHMnLCAoKSA9PiB7CiAgICAgICAgICAgICBsZXQg
c3luY2VyID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoTW9ja1JlbW90ZUFQSSwgc2FtcGxl
aU9TQ29uZmlnKCkpWzFdOwogCiAgICAgICAgICAgICBsZXQgcHJvbWlzZSA9IHN5bmNlci5wdWxs
QnVpbGRib3QoNSk7CkBAIC04NDAsMTIgKzgyNywxMSBAQCBkZXNjcmliZSgnQnVpbGRib3RTeW5j
ZXInLCBmdW5jdGlvbiAoKSB7CiAKICAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJlc29sdmUoW3Nh
bXBsZVBlbmRpbmdCdWlsZCgpXSk7CiAKLSAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZv
clJlcXVlc3QoKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgICAgICByZXF1ZXN0c1sxXS5yZXNvbHZlKHtb
LTFdOiBzYW1wbGVJblByb2dyZXNzQnVpbGQoKX0pOwotICAgICAgICAgICAgfSkuY2F0Y2goZG9u
ZSk7Ci0KLSAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoZW50cmllcykgeworICAg
ICAgICAgICAgICAgIHJldHVybiBwcm9taXNlOworICAgICAgICAgICAgfSkudGhlbigoZW50cmll
cykgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlbnRyaWVzLmxlbmd0aCwgMSk7
CiAKICAgICAgICAgICAgICAgICBsZXQgZW50cnkgPSBlbnRyaWVzWzBdOwpAQCAtODU3LDEyICs4
NDMsMTAgQEAgZGVzY3JpYmUoJ0J1aWxkYm90U3luY2VyJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgICAgIGFzc2VydC5vayhlbnRyeS5pc0luUHJvZ3Jlc3MoKSk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0Lm9rKCFlbnRyeS5oYXNGaW5pc2hlZCgpKTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoZW50cnkudXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9B
QlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMvYnVpbGRzLzYxNCcpOwotCi0gICAgICAgICAg
ICAgICAgZG9uZSgpOwotICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgICAgICB9
KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBvdmVycmlkZSBCdWlsZGJvdEJ1
aWxkRW50cnkgZm9yIHBlbmRpbmcgYnVpbGRzIGJ5IGZpbmlzaGVkIGJ1aWxkcycsIGZ1bmN0aW9u
IChkb25lKSB7CisgICAgICAgIGl0KCdzaG91bGQgb3ZlcnJpZGUgQnVpbGRib3RCdWlsZEVudHJ5
IGZvciBwZW5kaW5nIGJ1aWxkcyBieSBmaW5pc2hlZCBidWlsZHMnLCAoKSA9PiB7CiAgICAgICAg
ICAgICBsZXQgc3luY2VyID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoTW9ja1JlbW90ZUFQ
SSwgc2FtcGxlaU9TQ29uZmlnKCkpWzFdOwogCiAgICAgICAgICAgICBsZXQgcHJvbWlzZSA9IHN5
bmNlci5wdWxsQnVpbGRib3QoNSk7CkBAIC04NzAsMTIgKzg1NCwxMSBAQCBkZXNjcmliZSgnQnVp
bGRib3RTeW5jZXInLCBmdW5jdGlvbiAoKSB7CiAKICAgICAgICAgICAgIHJlcXVlc3RzWzBdLnJl
c29sdmUoW3NhbXBsZVBlbmRpbmdCdWlsZCgpXSk7CiAKLSAgICAgICAgICAgIFByb21pc2UucmVz
b2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVB
UEkud2FpdEZvclJlcXVlc3QoKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgICAgICByZXF1ZXN0c1sxXS5y
ZXNvbHZlKHtbLTFdOiBzYW1wbGVGaW5pc2hlZEJ1aWxkKDE2NzMzKX0pOwotICAgICAgICAgICAg
fSkuY2F0Y2goZG9uZSk7Ci0KLSAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoZW50
cmllcykgeworICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlOworICAgICAgICAgICAgfSku
dGhlbigoZW50cmllcykgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlbnRyaWVz
Lmxlbmd0aCwgMSk7CiAKICAgICAgICAgICAgICAgICBsZXQgZW50cnkgPSBlbnRyaWVzWzBdOwpA
QCAtODg3LDE4ICs4NzAsMTcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90U3luY2VyJywgZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5vayghZW50cnkuaXNJblByb2dyZXNzKCkpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5vayhlbnRyeS5oYXNGaW5pc2hlZCgpKTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoZW50cnkudXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9y
Zy9idWlsZGVycy9BQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMvYnVpbGRzLzE3NTUnKTsK
LQotICAgICAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOwor
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgZGVzY3JpYmUoJ3Nj
aGVkdWxlUmVxdWVzdCcsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgaXQoJ3Nob3VsZCBzY2hlZHVs
ZSBhIGJ1aWxkIHJlcXVlc3Qgb24gYSBzcGVjaWZpZWQgc2xhdmUnLCBmdW5jdGlvbiAoZG9uZSkg
eworICAgIGRlc2NyaWJlKCdzY2hlZHVsZVJlcXVlc3QnLCAoKSA9PiB7CisgICAgICAgIGl0KCdz
aG91bGQgc2NoZWR1bGUgYSBidWlsZCByZXF1ZXN0IG9uIGEgc3BlY2lmaWVkIHNsYXZlJywgKCkg
PT4gewogICAgICAgICAgICAgbGV0IHN5bmNlciA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmln
KE1vY2tSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKVswXTsKIAorICAgICAgICAgICAgY29u
c3Qgd2FpdEZvclJlcXVlc3QgPSBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CiAgICAg
ICAgICAgICBzeW5jZXIuc2NoZWR1bGVSZXF1ZXN0KGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVzdChN
b2NrTW9kZWxzLmlwaG9uZSwgTW9ja01vZGVscy5zcGVlZG9tZXRlciksICdzb21lLXNsYXZlJyk7
Ci0gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIHJldHVybiB3YWl0Rm9yUmVxdWVzdC50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL2J1aWxkZXJzL0FCVGVzdC1pUGhvbmUtUnVuQmVu
Y2htYXJrLVRlc3RzL2ZvcmNlJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzWzBdLm1ldGhvZCwgJ1BPU1QnKTsKQEAgLTkxMywxODggKzg5NSwxNjAgQEAgZGVzY3JpYmUo
J0J1aWxkYm90U3luY2VyJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAnc2xh
dmVuYW1lJzogJ3NvbWUtc2xhdmUnLAogICAgICAgICAgICAgICAgICAgICAndGVzdF9uYW1lJzog
J3NwZWVkb21ldGVyJwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGRvbmUo
KTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0pOwogICAgIH0pOwogCi0gICAgZGVzY3JpYmUoJ3NjaGVkdWxlUmVxdWVzdEluR3JvdXBJZkF2
YWlsYWJsZScsIGZ1bmN0aW9uICgpIHsKKyAgICBkZXNjcmliZSgnc2NoZWR1bGVSZXF1ZXN0SW5H
cm91cElmQXZhaWxhYmxlJywgKCkgPT4gewogCiAgICAgICAgIGZ1bmN0aW9uIHB1bGxCdWlsZGJv
dFdpdGhBc3NlcnRpb24oc3luY2VyLCBwZW5kaW5nQnVpbGRzLCBpblByb2dyZXNzQW5kRmluaXNo
ZWRCdWlsZHMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGxldCBwcm9taXNlID0gc3luY2VyLnB1
bGxCdWlsZGJvdCg1KTsKKyAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSBzeW5jZXIucHVsbEJ1
aWxkYm90KDUpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7
CiAgICAgICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKHBlbmRpbmdCdWlsZHMpOwotICAgICAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKS50aGVuKCgpID0+IHsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKICAgICAg
ICAgICAgICAgICByZXF1ZXN0c1sxXS5yZXNvbHZlKGluUHJvZ3Jlc3NBbmRGaW5pc2hlZEJ1aWxk
cyk7CiAgICAgICAgICAgICAgICAgcmVxdWVzdHMubGVuZ3RoID0gMDsKLSAgICAgICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0KIAotICAgICAgICBpdCgnc2hvdWxkIHNjaGVkdWxlIGEg
YnVpbGQgaWYgYnVpbGRlciBoYXMgbm8gYnVpbGRzIGlmIHNsYXZlTGlzdCBpcyBub3Qgc3BlY2lm
aWVkJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCBzY2hlZHVsZSBhIGJ1
aWxkIGlmIGJ1aWxkZXIgaGFzIG5vIGJ1aWxkcyBpZiBzbGF2ZUxpc3QgaXMgbm90IHNwZWNpZmll
ZCcsICgpID0+IHsKICAgICAgICAgICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9h
ZENvbmZpZyhNb2NrUmVtb3RlQVBJLCB7J2NvbmZpZ3VyYXRpb25zJzogW3NtYWxsQ29uZmlndXJh
dGlvbigpXX0pWzBdOwogCi0gICAgICAgICAgICBwdWxsQnVpbGRib3RXaXRoQXNzZXJ0aW9uKHN5
bmNlciwgW10sIHt9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBwdWxs
QnVpbGRib3RXaXRoQXNzZXJ0aW9uKHN5bmNlciwgW10sIHt9KS50aGVuKCgpID0+IHsKICAgICAg
ICAgICAgICAgICBzeW5jZXIuc2NoZWR1bGVSZXF1ZXN0SW5Hcm91cElmQXZhaWxhYmxlKGNyZWF0
ZVNhbXBsZUJ1aWxkUmVxdWVzdChNb2NrTW9kZWxzLnNvbWVQbGF0Zm9ybSwgTW9ja01vZGVscy5z
b21lVGVzdCkpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9idWlsZGVycy9zb21lJTIwYnVpbGRlci9m
b3JjZScpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS5tZXRob2Qs
ICdQT1NUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXF1ZXN0c1swXS5k
YXRhLCB7aWQ6ICcxNjczMy0nICsgTW9ja01vZGVscy5zb21lUGxhdGZvcm0uaWQoKX0pOwotICAg
ICAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgc2NoZWR1bGUgYSBi
dWlsZCBpZiBidWlsZGVyIG9ubHkgaGFzIGZpbmlzaGVkIGJ1aWxkcyBpZiBzbGF2ZUxpc3QgaXMg
bm90IHNwZWNpZmllZCcsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIGl0KCdzaG91bGQgc2No
ZWR1bGUgYSBidWlsZCBpZiBidWlsZGVyIG9ubHkgaGFzIGZpbmlzaGVkIGJ1aWxkcyBpZiBzbGF2
ZUxpc3QgaXMgbm90IHNwZWNpZmllZCcsICgpID0+IHsKICAgICAgICAgICAgIGxldCBzeW5jZXIg
PSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVtb3RlQVBJLCB7J2NvbmZpZ3VyYXRp
b25zJzogW3NtYWxsQ29uZmlndXJhdGlvbigpXX0pWzBdOwogCi0gICAgICAgICAgICBwdWxsQnVp
bGRib3RXaXRoQXNzZXJ0aW9uKHN5bmNlciwgW10sIHtbLTFdOiBzbWFsbEZpbmlzaGVkQnVpbGQo
KX0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHB1bGxCdWlsZGJvdFdp
dGhBc3NlcnRpb24oc3luY2VyLCBbXSwge1stMV06IHNtYWxsRmluaXNoZWRCdWlsZCgpfSkudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICAgICAgc3luY2VyLnNjaGVkdWxlUmVxdWVzdEluR3JvdXBJ
ZkF2YWlsYWJsZShjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVscy5zb21lUGxhdGZv
cm0sIE1vY2tNb2RlbHMuc29tZVRlc3QpKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvYnVpbGRlcnMv
c29tZSUyMGJ1aWxkZXIvZm9yY2UnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHNbMF0ubWV0aG9kLCAnUE9TVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwocmVxdWVzdHNbMF0uZGF0YSwge2lkOiAnMTY3MzMtJyArIE1vY2tNb2RlbHMuc29tZVBsYXRm
b3JtLmlkKCl9KTsKLSAgICAgICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRj
aChkb25lKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hv
dWxkIG5vdCBzY2hlZHVsZSBhIGJ1aWxkIGlmIGJ1aWxkZXIgaGFzIGEgcGVuZGluZyBidWlsZCBp
ZiBzbGF2ZUxpc3QgaXMgbm90IHNwZWNpZmllZCcsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAg
IGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIGEgYnVpbGQgaWYgYnVpbGRlciBoYXMgYSBwZW5kaW5n
IGJ1aWxkIGlmIHNsYXZlTGlzdCBpcyBub3Qgc3BlY2lmaWVkJywgKCkgPT4gewogICAgICAgICAg
ICAgbGV0IHN5bmNlciA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKE1vY2tSZW1vdGVBUEks
IHsnY29uZmlndXJhdGlvbnMnOiBbc21hbGxDb25maWd1cmF0aW9uKCldfSlbMF07CiAKLSAgICAg
ICAgICAgIHB1bGxCdWlsZGJvdFdpdGhBc3NlcnRpb24oc3luY2VyLCBbc21hbGxQZW5kaW5nQnVp
bGQoKV0sIHt9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBwdWxsQnVp
bGRib3RXaXRoQXNzZXJ0aW9uKHN5bmNlciwgW3NtYWxsUGVuZGluZ0J1aWxkKCldLCB7fSkudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICAgICAgc3luY2VyLnNjaGVkdWxlUmVxdWVzdEluR3JvdXBJ
ZkF2YWlsYWJsZShjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVscy5zb21lUGxhdGZv
cm0sIE1vY2tNb2RlbHMuc29tZVRlc3QpKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDApOwot
ICAgICAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgc2NoZWR1bGUg
YSBidWlsZCBpZiBidWlsZGVyIGRvZXMgbm90IGhhdmUgcGVuZGluZyBvciBjb21wbGV0ZWQgYnVp
bGRzIG9uIHRoZSBtYXRjaGluZyBzbGF2ZScsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIGl0
KCdzaG91bGQgc2NoZWR1bGUgYSBidWlsZCBpZiBidWlsZGVyIGRvZXMgbm90IGhhdmUgcGVuZGlu
ZyBvciBjb21wbGV0ZWQgYnVpbGRzIG9uIHRoZSBtYXRjaGluZyBzbGF2ZScsICgpID0+IHsKICAg
ICAgICAgICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVt
b3RlQVBJLCBzYW1wbGVpT1NDb25maWcoKSlbMF07CiAKLSAgICAgICAgICAgIHB1bGxCdWlsZGJv
dFdpdGhBc3NlcnRpb24oc3luY2VyLCBbXSwge30pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgcmV0dXJuIHB1bGxCdWlsZGJvdFdpdGhBc3NlcnRpb24oc3luY2VyLCBbXSwge30pLnRo
ZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIHN5bmNlci5zY2hlZHVsZVJlcXVlc3RJbkdyb3Vw
SWZBdmFpbGFibGUoY3JlYXRlU2FtcGxlQnVpbGRSZXF1ZXN0KE1vY2tNb2RlbHMuaXBob25lLCBN
b2NrTW9kZWxzLnNwZWVkb21ldGVyKSk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgp
IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL2J1aWxkZXJzL0FC
VGVzdC1pUGhvbmUtUnVuQmVuY2htYXJrLVRlc3RzL2ZvcmNlJyk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLm1ldGhvZCwgJ1BPU1QnKTsKLSAgICAgICAgICAgICAg
ICBkb25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgICAgIH0pOwog
ICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIHNjaGVkdWxlIGEgYnVpbGQgaWYgYnVp
bGRlciBvbmx5IGhhcyBmaW5pc2hlZCBidWlsZHMgb24gdGhlIG1hdGNoaW5nIHNsYXZlJywgZnVu
Y3Rpb24gKGRvbmUpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCBzY2hlZHVsZSBhIGJ1aWxkIGlmIGJ1
aWxkZXIgb25seSBoYXMgZmluaXNoZWQgYnVpbGRzIG9uIHRoZSBtYXRjaGluZyBzbGF2ZScsICgp
ID0+IHsKICAgICAgICAgICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZp
ZyhNb2NrUmVtb3RlQVBJLCBzYW1wbGVpT1NDb25maWcoKSlbMV07CiAKLSAgICAgICAgICAgIHB1
bGxCdWlsZGJvdFdpdGhBc3NlcnRpb24oc3luY2VyLCBbXSwge1stMV06IHNhbXBsZUZpbmlzaGVk
QnVpbGQoKX0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcHVsbEJ1aWxkYm90V2l0
aEFzc2VydGlvbihzeW5jZXIsIFtdLCB7Wy0xXTogc2FtcGxlRmluaXNoZWRCdWlsZCgpfSkudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICAgICAgc3luY2VyLnNjaGVkdWxlUmVxdWVzdEluR3JvdXBJ
ZkF2YWlsYWJsZShjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVscy5pcGFkLCBNb2Nr
TW9kZWxzLnNwZWVkb21ldGVyKSk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMF0udXJsLCAnL2J1aWxkZXJzL0FCVGVz
dC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cy9mb3JjZScpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1swXS5tZXRob2QsICdQT1NUJyk7Ci0gICAgICAgICAgICAgICAgZG9u
ZSgpOwotICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgICAgICB9KTsKICAgICAg
ICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgYSBidWlsZCBpZiBidWls
ZGVyIGhhcyBhIHBlbmRpbmcgYnVpbGQgb24gdGhlIG1hY2hpbmcgc2xhdmUnLCBmdW5jdGlvbiAo
ZG9uZSkgeworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBhIGJ1aWxkIGlmIGJ1aWxk
ZXIgaGFzIGEgcGVuZGluZyBidWlsZCBvbiB0aGUgbWFjaGluZyBzbGF2ZScsICgpID0+IHsKICAg
ICAgICAgICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVt
b3RlQVBJLCBzYW1wbGVpT1NDb25maWcoKSlbMV07CiAKLSAgICAgICAgICAgIHB1bGxCdWlsZGJv
dFdpdGhBc3NlcnRpb24oc3luY2VyLCBbc2FtcGxlUGVuZGluZ0J1aWxkKCldLCB7fSkudGhlbihm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICBwdWxsQnVpbGRib3RXaXRoQXNzZXJ0aW9uKHN5bmNl
ciwgW3NhbXBsZVBlbmRpbmdCdWlsZCgpXSwge30pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAg
ICAgIHN5bmNlci5zY2hlZHVsZVJlcXVlc3RJbkdyb3VwSWZBdmFpbGFibGUoY3JlYXRlU2FtcGxl
QnVpbGRSZXF1ZXN0KE1vY2tNb2RlbHMuaXBhZCwgTW9ja01vZGVscy5zcGVlZG9tZXRlcikpOwot
ICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMCk7Ci0gICAgICAgICAgICAgICAgZG9uZSgpOwotICAg
ICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAK
LSAgICAgICAgaXQoJ3Nob3VsZCBzY2hlZHVsZSBhIGJ1aWxkIGlmIGJ1aWxkZXIgb25seSBoYXMg
YSBwZW5kaW5nIGJ1aWxkIG9uIGEgbm9uLW1hY2hpbmcgc2xhdmUnLCBmdW5jdGlvbiAoZG9uZSkg
eworICAgICAgICBpdCgnc2hvdWxkIHNjaGVkdWxlIGEgYnVpbGQgaWYgYnVpbGRlciBvbmx5IGhh
cyBhIHBlbmRpbmcgYnVpbGQgb24gYSBub24tbWFjaGluZyBzbGF2ZScsICgpID0+IHsKICAgICAg
ICAgICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVtb3Rl
QVBJLCBzYW1wbGVpT1NDb25maWcoKSlbMV07CiAKLSAgICAgICAgICAgIHB1bGxCdWlsZGJvdFdp
dGhBc3NlcnRpb24oc3luY2VyLCBbc2FtcGxlUGVuZGluZ0J1aWxkKDEsIDEsICdhbm90aGVyLXNs
YXZlJyldLCB7fSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gcHVsbEJ1
aWxkYm90V2l0aEFzc2VydGlvbihzeW5jZXIsIFtzYW1wbGVQZW5kaW5nQnVpbGQoMSwgMSwgJ2Fu
b3RoZXItc2xhdmUnKV0sIHt9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBzeW5jZXIu
c2NoZWR1bGVSZXF1ZXN0SW5Hcm91cElmQXZhaWxhYmxlKGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVz
dChNb2NrTW9kZWxzLmlwYWQsIE1vY2tNb2RlbHMuc3BlZWRvbWV0ZXIpKTsKLSAgICAgICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0cy5sZW5ndGgsIDEpOwotICAgICAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgICAgIH0p
LmNhdGNoKGRvbmUpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0
KCdzaG91bGQgc2NoZWR1bGUgYSBidWlsZCBpZiBidWlsZGVyIG9ubHkgaGFzIGFuIGluLXByb2dy
ZXNzIGJ1aWxkIG9uIHRoZSBtYXRjaGluZyBzbGF2ZScsIGZ1bmN0aW9uIChkb25lKSB7CisgICAg
ICAgIGl0KCdzaG91bGQgc2NoZWR1bGUgYSBidWlsZCBpZiBidWlsZGVyIG9ubHkgaGFzIGFuIGlu
LXByb2dyZXNzIGJ1aWxkIG9uIHRoZSBtYXRjaGluZyBzbGF2ZScsICgpID0+IHsKICAgICAgICAg
ICAgIGxldCBzeW5jZXIgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhNb2NrUmVtb3RlQVBJ
LCBzYW1wbGVpT1NDb25maWcoKSlbMV07CiAKLSAgICAgICAgICAgIHB1bGxCdWlsZGJvdFdpdGhB
c3NlcnRpb24oc3luY2VyLCBbXSwge1stMV06IHNhbXBsZUluUHJvZ3Jlc3NCdWlsZCgpfSkudGhl
bihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gcHVsbEJ1aWxkYm90V2l0aEFzc2Vy
dGlvbihzeW5jZXIsIFtdLCB7Wy0xXTogc2FtcGxlSW5Qcm9ncmVzc0J1aWxkKCl9KS50aGVuKCgp
ID0+IHsKICAgICAgICAgICAgICAgICBzeW5jZXIuc2NoZWR1bGVSZXF1ZXN0SW5Hcm91cElmQXZh
aWxhYmxlKGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVzdChNb2NrTW9kZWxzLmlwYWQsIE1vY2tNb2Rl
bHMuc3BlZWRvbWV0ZXIpKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwotICAgICAgICAg
ICAgICAgIGRvbmUoKTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgc2NoZWR1bGUgYSBidWlsZCBp
ZiBidWlsZGVyIGhhcyBhbiBpbi1wcm9ncmVzcyBidWlsZCBvbiBhbm90aGVyIHNsYXZlJywgZnVu
Y3Rpb24gKGRvbmUpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCBzY2hlZHVsZSBhIGJ1aWxkIGlmIGJ1
aWxkZXIgaGFzIGFuIGluLXByb2dyZXNzIGJ1aWxkIG9uIGFub3RoZXIgc2xhdmUnLCAoKSA9PiB7
CiAgICAgICAgICAgICBsZXQgc3luY2VyID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoTW9j
a1JlbW90ZUFQSSwgc2FtcGxlaU9TQ29uZmlnKCkpWzFdOwogCi0gICAgICAgICAgICBwdWxsQnVp
bGRib3RXaXRoQXNzZXJ0aW9uKHN5bmNlciwgW10sIHtbLTFdOiBzYW1wbGVJblByb2dyZXNzQnVp
bGQoJ290aGVyLXNsYXZlJyl9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVy
biBwdWxsQnVpbGRib3RXaXRoQXNzZXJ0aW9uKHN5bmNlciwgW10sIHtbLTFdOiBzYW1wbGVJblBy
b2dyZXNzQnVpbGQoJ290aGVyLXNsYXZlJyl9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAg
ICBzeW5jZXIuc2NoZWR1bGVSZXF1ZXN0SW5Hcm91cElmQXZhaWxhYmxlKGNyZWF0ZVNhbXBsZUJ1
aWxkUmVxdWVzdChNb2NrTW9kZWxzLmlwYWQsIE1vY2tNb2RlbHMuc3BlZWRvbWV0ZXIpKTsKLSAg
ICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwotICAgICAgICAgICAgICAgIGRvbmUoKTsKLSAgICAg
ICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogCi0g
ICAgICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIGEgYnVpbGQgaWYgdGhlIHJlcXVlc3QgZG9l
cyBub3QgbWF0Y2ggYW55IGNvbmZpZ3VyYXRpb24nLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAg
ICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBhIGJ1aWxkIGlmIHRoZSByZXF1ZXN0IGRvZXMgbm90
IG1hdGNoIGFueSBjb25maWd1cmF0aW9uJywgKCkgPT4gewogICAgICAgICAgICAgbGV0IHN5bmNl
ciA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKE1vY2tSZW1vdGVBUEksIHNhbXBsZWlPU0Nv
bmZpZygpKVswXTsKIAotICAgICAgICAgICAgcHVsbEJ1aWxkYm90V2l0aEFzc2VydGlvbihzeW5j
ZXIsIFtdLCB7fSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gcHVsbEJ1
aWxkYm90V2l0aEFzc2VydGlvbihzeW5jZXIsIFtdLCB7fSkudGhlbigoKSA9PiB7CiAgICAgICAg
ICAgICAgICAgc3luY2VyLnNjaGVkdWxlUmVxdWVzdEluR3JvdXBJZkF2YWlsYWJsZShjcmVhdGVT
YW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVscy5pcGFkLCBNb2NrTW9kZWxzLnNwZWVkb21ldGVy
KSk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAwKTsKLSAgICAgICAgICAgICAgICBkb25lKCk7
Ci0gICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9
KTsKIAotICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBhIGJ1aWxkIGlmIGEgbmV3IHJl
cXVlc3QgaGFkIGJlZW4gc3VibWl0dGVkIHRvIHRoZSBzYW1lIHNsYXZlJywgZnVuY3Rpb24gKGRv
bmUpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgYSBidWlsZCBpZiBhIG5ldyBy
ZXF1ZXN0IGhhZCBiZWVuIHN1Ym1pdHRlZCB0byB0aGUgc2FtZSBzbGF2ZScsIChkb25lKSA9PiB7
CiAgICAgICAgICAgICBsZXQgc3luY2VyID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoTW9j
a1JlbW90ZUFQSSwgc2FtcGxlaU9TQ29uZmlnKCkpWzFdOwogCi0gICAgICAgICAgICBwdWxsQnVp
bGRib3RXaXRoQXNzZXJ0aW9uKHN5bmNlciwgW10sIHt9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIHB1bGxCdWlsZGJvdFdpdGhBc3NlcnRpb24oc3luY2VyLCBbXSwge30pLnRoZW4o
KCkgPT4gewogICAgICAgICAgICAgICAgIHN5bmNlci5zY2hlZHVsZVJlcXVlc3QoY3JlYXRlU2Ft
cGxlQnVpbGRSZXF1ZXN0KE1vY2tNb2RlbHMuaXBhZCwgTW9ja01vZGVscy5zcGVlZG9tZXRlciks
ICdBQlRlc3QtaVBhZC0wJyk7CiAgICAgICAgICAgICAgICAgc3luY2VyLnNjaGVkdWxlUmVxdWVz
dChjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVscy5pcGFkLCBNb2NrTW9kZWxzLnNw
ZWVkb21ldGVyKSwgJ0FCVGVzdC1pUGFkLTEnKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CiAgICAgICAgICAgICAgICAgc3luY2VyLnNj
aGVkdWxlUmVxdWVzdEluR3JvdXBJZkF2YWlsYWJsZShjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3Qo
TW9ja01vZGVscy5pcGFkLCBNb2NrTW9kZWxzLnNwZWVkb21ldGVyKSk7Ci0gICAgICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwogICAgICAgICAgICAg
ICAgIGRvbmUoKTsKICAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOwogICAgICAgICB9KTsKIAot
ICAgICAgICBpdCgnc2hvdWxkIHNjaGVkdWxlIGEgYnVpbGQgaWYgYSBuZXcgcmVxdWVzdCBoYWQg
YmVlbiBzdWJtaXR0ZWQgdG8gYW5vdGhlciBzbGF2ZScsIGZ1bmN0aW9uIChkb25lKSB7CisgICAg
ICAgIGl0KCdzaG91bGQgc2NoZWR1bGUgYSBidWlsZCBpZiBhIG5ldyByZXF1ZXN0IGhhZCBiZWVu
IHN1Ym1pdHRlZCB0byBhbm90aGVyIHNsYXZlJywgKCkgPT4gewogICAgICAgICAgICAgbGV0IHN5
bmNlciA9IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKE1vY2tSZW1vdGVBUEksIHNhbXBsZWlP
U0NvbmZpZygpKVsxXTsKIAotICAgICAgICAgICAgcHVsbEJ1aWxkYm90V2l0aEFzc2VydGlvbihz
eW5jZXIsIFtdLCB7fSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gcHVs
bEJ1aWxkYm90V2l0aEFzc2VydGlvbihzeW5jZXIsIFtdLCB7fSkudGhlbigoKSA9PiB7CiAgICAg
ICAgICAgICAgICAgc3luY2VyLnNjaGVkdWxlUmVxdWVzdChjcmVhdGVTYW1wbGVCdWlsZFJlcXVl
c3QoTW9ja01vZGVscy5pcGFkLCBNb2NrTW9kZWxzLnNwZWVkb21ldGVyKSwgJ0FCVGVzdC1pUGFk
LTAnKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIHN5bmNl
ci5zY2hlZHVsZVJlcXVlc3RJbkdyb3VwSWZBdmFpbGFibGUoY3JlYXRlU2FtcGxlQnVpbGRSZXF1
ZXN0KE1vY2tNb2RlbHMuaXBhZCwgTW9ja01vZGVscy5zcGVlZG9tZXRlciksICdBQlRlc3QtaVBh
ZC0xJyk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgICAgICBkb25l
KCk7Ci0gICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgICAgIH0pOwogICAgICAg
ICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSBhIGJ1aWxkIGlmIGEgbmV3
IHJlcXVlc3QgaGFkIGJlZW4gc3VibWl0dGVkIHRvIHRoZSBzYW1lIGJ1aWxkZXIgd2l0aG91dCBz
bGF2ZUxpc3QnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hl
ZHVsZSBhIGJ1aWxkIGlmIGEgbmV3IHJlcXVlc3QgaGFkIGJlZW4gc3VibWl0dGVkIHRvIHRoZSBz
YW1lIGJ1aWxkZXIgd2l0aG91dCBzbGF2ZUxpc3QnLCAoKSA9PiB7CiAgICAgICAgICAgICBsZXQg
c3luY2VyID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoTW9ja1JlbW90ZUFQSSwgeydjb25m
aWd1cmF0aW9ucyc6IFtzbWFsbENvbmZpZ3VyYXRpb24oKV19KVswXTsKIAotICAgICAgICAgICAg
cHVsbEJ1aWxkYm90V2l0aEFzc2VydGlvbihzeW5jZXIsIFtdLCB7fSkudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICByZXR1cm4gcHVsbEJ1aWxkYm90V2l0aEFzc2VydGlvbihzeW5jZXIs
IFtdLCB7fSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgc3luY2VyLnNjaGVkdWxlUmVx
dWVzdChjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVscy5zb21lUGxhdGZvcm0sIE1v
Y2tNb2RlbHMuc29tZVRlc3QpLCBudWxsKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwog
ICAgICAgICAgICAgICAgIHN5bmNlci5zY2hlZHVsZVJlcXVlc3RJbkdyb3VwSWZBdmFpbGFibGUo
Y3JlYXRlU2FtcGxlQnVpbGRSZXF1ZXN0KE1vY2tNb2RlbHMuc29tZVBsYXRmb3JtLCBNb2NrTW9k
ZWxzLnNvbWVUZXN0KSk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKLSAgICAgICAgICAg
ICAgICBkb25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKICAgICB9KTsKIH0pOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3VuaXQtdGVzdHMvY2hlY2tjb25maWcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3VuaXQtdGVzdHMvY2hlY2tjb25maWcuanMJKHJldmlzaW9uIDIxMzk3NCkK
KysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2NoZWNrY29uZmlnLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQ4ICsxLDQ4IEBACiAndXNlIHN0cmljdCc7CiAKLXZhciBhc3Nl
cnQgPSByZXF1aXJlKCdhc3NlcnQnKTsKLXZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7Citjb25zdCBh
c3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTsKK2NvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTsKIAot
dmFyIENvbmZpZyA9IHJlcXVpcmUoJy4uL3Rvb2xzL2pzL2NvbmZpZy5qcycpOwotdmFyIERhdGFi
YXNlID0gcmVxdWlyZSgnLi4vdG9vbHMvanMvZGF0YWJhc2UuanMnKTsKK2NvbnN0IENvbmZpZyA9
IHJlcXVpcmUoJy4uL3Rvb2xzL2pzL2NvbmZpZy5qcycpOworY29uc3QgRGF0YWJhc2UgPSByZXF1
aXJlKCcuLi90b29scy9qcy9kYXRhYmFzZS5qcycpOwogCi1kZXNjcmliZSgnY29uZmlnLmpzb24n
LCBmdW5jdGlvbiAoKSB7Ci0gICAgaXQoJ3Nob3VsZCBiZSBhIHZhbGlkIGZpbGUnLCBmdW5jdGlv
biAoKSB7Ci0gICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coZnVuY3Rpb24gKCkgeworZGVzY3Jp
YmUoJ2NvbmZpZy5qc29uJywgKCkgPT4geworICAgIGl0KCdzaG91bGQgYmUgYSB2YWxpZCBmaWxl
JywgKCkgPT4geworICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHsKICAgICAgICAg
ICAgIGZzLnJlYWRGaWxlU3luYyhDb25maWcuY29uZmlnRmlsZVBhdGgoKSkKICAgICAgICAgfSk7
CiAgICAgfSk7CiAKLSAgICBpdCgnc2hvdWxkIGJlIGEgdmFsaWQgSlNPTicsIGZ1bmN0aW9uICgp
IHsKLSAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAgaXQoJ3No
b3VsZCBiZSBhIHZhbGlkIEpTT04nLCAoKSA9PiB7CisgICAgICAgIGFzc2VydC5kb2VzTm90VGhy
b3coKCkgPT4gewogICAgICAgICAgICAgSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoQ29uZmln
LmNvbmZpZ0ZpbGVQYXRoKCkpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgnc2hv
dWxkIGRlZmluZSBgc2l0ZVRpdGxlYCcsIGZ1bmN0aW9uICgpIHsKKyAgICBpdCgnc2hvdWxkIGRl
ZmluZSBgc2l0ZVRpdGxlYCcsICgpID0+IHsKICAgICAgICAgYXNzZXJ0LmVxdWFsKHR5cGVvZiBD
b25maWcudmFsdWUoJ3NpdGVUaXRsZScpLCAnc3RyaW5nJyk7CiAgICAgfSk7CiAKLSAgICBpdCgn
c2hvdWxkIGRlZmluZSBgZGF0YURpcmVjdG9yeWAnLCBmdW5jdGlvbiAoKSB7CisgICAgaXQoJ3No
b3VsZCBkZWZpbmUgYGRhdGFEaXJlY3RvcnlgJywgKCkgPT4gewogICAgICAgICBhc3NlcnQub2so
Q29uZmlnLnZhbHVlKCdkYXRhRGlyZWN0b3J5JykpOwogICAgICAgICBhc3NlcnQub2soZnMuZXhp
c3RzU3luYyhDb25maWcucGF0aCgnZGF0YURpcmVjdG9yeScpKSwgJ2RhdGFEaXJlY3Rvcnkgc2hv
dWxkIGV4aXN0Jyk7CiAgICAgICAgIGFzc2VydC5vayhmcy5zdGF0U3luYyhDb25maWcucGF0aCgn
ZGF0YURpcmVjdG9yeScpKS5pc0RpcmVjdG9yeSgpLCAnZGF0YURpcmVjdG9yeSBzaG91bGQgYmUg
YSBkaWN0aW9uYXJ5Jyk7CiAgICAgfSk7CiAKLSAgICBpdCgnc2hvdWxkIGRlZmluZSBganNvbkNh
Y2hlTWF4QWdlYCcsIGZ1bmN0aW9uICgpIHsKKyAgICBpdCgnc2hvdWxkIGRlZmluZSBganNvbkNh
Y2hlTWF4QWdlYCcsICgpID0+IHsKICAgICAgICAgYXNzZXJ0LmVxdWFsKHR5cGVvZiBDb25maWcu
dmFsdWUoJ2pzb25DYWNoZU1heEFnZScpLCAnbnVtYmVyJyk7CiAgICAgfSk7CiAKLSAgICBpdCgn
c2hvdWxkIGRlZmluZSBganNvbkNhY2hlTWF4QWdlYCcsIGZ1bmN0aW9uICgpIHsKKyAgICBpdCgn
c2hvdWxkIGRlZmluZSBganNvbkNhY2hlTWF4QWdlYCcsICgpID0+IHsKICAgICAgICAgYXNzZXJ0
LmVxdWFsKHR5cGVvZiBDb25maWcudmFsdWUoJ2pzb25DYWNoZU1heEFnZScpLCAnbnVtYmVyJyk7
CiAgICAgfSk7CiAKLSAgICBpdCgnc2hvdWxkIGRlZmluZSBgY2x1c3RlclN0YXJ0YCcsIGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgdmFyIGNsdXN0ZXJTdGFydCA9IENvbmZpZy52YWx1ZSgnY2x1c3Rl
clN0YXJ0Jyk7CisgICAgaXQoJ3Nob3VsZCBkZWZpbmUgYGNsdXN0ZXJTdGFydGAnLCAoKSA9PiB7
CisgICAgICAgIGNvbnN0IGNsdXN0ZXJTdGFydCA9IENvbmZpZy52YWx1ZSgnY2x1c3RlclN0YXJ0
Jyk7CiAgICAgICAgIGFzc2VydC5vayhjbHVzdGVyU3RhcnQgaW5zdGFuY2VvZiBBcnJheSk7CiAg
ICAgICAgIGFzc2VydC5lcXVhbChjbHVzdGVyU3RhcnQubGVuZ3RoLCBbMjAwMCwgMSwgMSwgMCwg
MF0ubGVuZ3RoLAogICAgICAgICAgICAgJ011c3Qgc3BlY2lmeSB5ZWFyLCBtb250aCwgZGF0ZSwg
aG91ciwgYW5kIG1pbnV0ZScpOwotICAgICAgICB2YXIgbWF4WWVhciA9IChuZXcgRGF0ZSkuZ2V0
RnVsbFllYXIoKSArIDE7CisgICAgICAgIGNvbnN0IG1heFllYXIgPSAobmV3IERhdGUpLmdldEZ1
bGxZZWFyKCkgKyAxOwogICAgICAgICBhc3NlcnQub2soY2x1c3RlclN0YXJ0WzBdID49IDE5NzAg
JiYgY2x1c3RlclN0YXJ0WzBdIDw9IG1heFllYXIsIGB5ZWFyIG11c3QgYmUgYmV0d2VlbiAxOTcw
IGFuZCAke21heFllYXJ9YCk7CiAgICAgICAgIGFzc2VydC5vayhjbHVzdGVyU3RhcnRbMV0gPj0g
MSAmJiBjbHVzdGVyU3RhcnRbMV0gPD0gMTIsICdtb250aCBtdXN0IGJlIGJldHdlZW4gMSBhbmQg
MTInKTsKICAgICAgICAgYXNzZXJ0Lm9rKGNsdXN0ZXJTdGFydFsyXSA+PSAxICYmIGNsdXN0ZXJT
dGFydFsyXSA8PSAzMSwgJ2RhdGUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDMxJyk7CkBAIC01MCw4
ICs1MCw4IEBAIGRlc2NyaWJlKCdjb25maWcuanNvbicsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
YXNzZXJ0Lm9rKGNsdXN0ZXJTdGFydFs0XSA+PSAwICYmIGNsdXN0ZXJTdGFydFs0XSA8PSA2MCwg
J21pbnV0ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNjAnKTsKICAgICB9KTsKIAotICAgIGl0KCdz
aG91bGQgZGVmaW5lIGBjbHVzdGVyU2l6ZWAnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciBj
bHVzdGVyU2l6ZSA9IENvbmZpZy52YWx1ZSgnY2x1c3RlclNpemUnKTsKKyAgICBpdCgnc2hvdWxk
IGRlZmluZSBgY2x1c3RlclNpemVgJywgKCkgPT4geworICAgICAgICBjb25zdCBjbHVzdGVyU2l6
ZSA9IENvbmZpZy52YWx1ZSgnY2x1c3RlclNpemUnKTsKICAgICAgICAgYXNzZXJ0Lm9rKGNsdXN0
ZXJTaXplIGluc3RhbmNlb2YgQXJyYXkpOwogICAgICAgICBhc3NlcnQuZXF1YWwoY2x1c3RlclNp
emUubGVuZ3RoLCBbMCwgMiwgMF0ubGVuZ3RoLAogICAgICAgICAgICAgJ011c3Qgc3BlY2lmeSB0
aGUgbnVtYmVyIG9mIHllYXJzLCBtb250aHMsIGFuZCBkYXlzJyk7CkBAIC02MCwzNSArNjAsMzQg
QEAgZGVzY3JpYmUoJ2NvbmZpZy5qc29uJywgZnVuY3Rpb24gKCkgewogICAgICAgICBhc3NlcnQu
ZXF1YWwodHlwZW9mIGNsdXN0ZXJTaXplWzJdLCAnbnVtYmVyJywgJ3RoZSBudW1iZXIgb2YgZGF5
cyBtdXN0IGJlIGEgbnVtYmVyJyk7CiAgICAgfSk7CiAKLSAgICBkZXNjcmliZSgnYGRhc2hib2Fy
ZHNgJywgZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgZGFzaGJvYXJkcyA9IENvbmZpZy52YWx1
ZSgnZGFzaGJvYXJkcycpOworICAgIGRlc2NyaWJlKCdgZGFzaGJvYXJkc2AnLCAoKSA9PiB7Cisg
ICAgICAgIGNvbnN0IGRhc2hib2FyZHMgPSBDb25maWcudmFsdWUoJ2Rhc2hib2FyZHMnKTsKIAot
ICAgICAgICBpdCgnc2hvdWxkIGV4aXN0IGZvciB2MiBhbmQgdjMgVUknLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgIGl0KCdzaG91bGQgZXhpc3QgZm9yIHYyIGFuZCB2MyBVSScsICgpID0+IHsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbCh0eXBlb2YgZGFzaGJvYXJkcywgJ29iamVjdCcpOwogICAg
ICAgICB9KTsKIAotICAgICAgICBpdCgnZGFzaGJvYXJkIG5hbWVzIHRoYXQgZG8gbm90IGNvbnRh
aW4gLycsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gZGFzaGJv
YXJkcykKKyAgICAgICAgaXQoJ2Rhc2hib2FyZCBuYW1lcyB0aGF0IGRvIG5vdCBjb250YWluIC8n
LCAoKSA9PiB7CisgICAgICAgICAgICBmb3IgKGxldCBuYW1lIGluIGRhc2hib2FyZHMpCiAgICAg
ICAgICAgICAgICAgYXNzZXJ0Lm9rKG5hbWUuaW5kZXhPZignLycpIDwgMCwgJ0Rhc2hib2FyZCBu
YW1lICIke25hbWV9IiBzaG91bGQgbm90IGNvbnRhaW4gIi8iJyk7CiAgICAgICAgIH0pOwogCi0g
ICAgICAgIGl0KCdlYWNoIGRhc2hib2FyZCBtdXN0IGJlIGFuIGFycmF5JywgZnVuY3Rpb24gKCkg
ewotICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBkYXNoYm9hcmRzKQorICAgICAgICBpdCgn
ZWFjaCBkYXNoYm9hcmQgbXVzdCBiZSBhbiBhcnJheScsICgpID0+IHsKKyAgICAgICAgICAgIGZv
ciAobGV0IG5hbWUgaW4gZGFzaGJvYXJkcykKICAgICAgICAgICAgICAgICBhc3NlcnQub2soZGFz
aGJvYXJkc1tuYW1lXSBpbnN0YW5jZW9mIEFycmF5KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAg
aXQoJ2VhY2ggcm93IGluIGEgZGFzaGJvYXJkIG11c3QgYmUgYW4gYXJyYXknLCBmdW5jdGlvbiAo
KSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIGRhc2hib2FyZHMpIHsKLSAgICAgICAg
ICAgICAgICBmb3IgKHZhciByb3cgb2YgZGFzaGJvYXJkc1tuYW1lXSkgeworICAgICAgICBpdCgn
ZWFjaCByb3cgaW4gYSBkYXNoYm9hcmQgbXVzdCBiZSBhbiBhcnJheScsICgpID0+IHsKKyAgICAg
ICAgICAgIGZvciAobGV0IG5hbWUgaW4gZGFzaGJvYXJkcykgeworICAgICAgICAgICAgICAgIGZv
ciAobGV0IHJvdyBvZiBkYXNoYm9hcmRzW25hbWVdKQogICAgICAgICAgICAgICAgICAgICBjb25z
b2xlLmFzc2VydChyb3cgaW5zdGFuY2VvZiBBcnJheSk7Ci0gICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICB9KTsKIAotICAgICAgICBpdCgnZWFjaCBjZWxsIGluIGEgZGFz
aGJvYXJkIG11c3QgYmUgYW4gYXJyYXkgb3IgYSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgICAgICBmb3IgKHZhciBuYW1lIGluIGRhc2hib2FyZHMpIHsKLSAgICAgICAgICAgICAgICBm
b3IgKHZhciByb3cgb2YgZGFzaGJvYXJkc1tuYW1lXSkgewotICAgICAgICAgICAgICAgICAgICBm
b3IgKHZhciBjZWxsIG9mIHJvdykgeworICAgICAgICBpdCgnZWFjaCBjZWxsIGluIGEgZGFzaGJv
YXJkIG11c3QgYmUgYW4gYXJyYXkgb3IgYSBzdHJpbmcnLCAoKSA9PiB7CisgICAgICAgICAgICBm
b3IgKGxldCBuYW1lIGluIGRhc2hib2FyZHMpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBy
b3cgb2YgZGFzaGJvYXJkc1tuYW1lXSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBj
ZWxsIG9mIHJvdykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwgaW5zdGFuY2Vv
ZiBBcnJheSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQub2soY2VsbC5sZW5n
dGggPT0gMCB8fCBjZWxsLmxlbmd0aCA9PSAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnRWFjaCBjZWxsIG11c3QgYmUgZW1wdHkgb3Igc3BlY2lmeSBbcGxhdGZvcm0sIG1ldHJp
Y10gcGFpcicpOwpAQCAtMTAxLDY3ICsxMDAsNjYgQEAgZGVzY3JpYmUoJ2NvbmZpZy5qc29uJywg
ZnVuY3Rpb24gKCkgewogCiAgICAgfSk7CiAKLSAgICBkZXNjcmliZSgnYGRhdGFiYXNlYCcsIGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgaXQoJ3Nob3VsZCBleGlzdCcsIGZ1bmN0aW9uICgpIHsKKyAg
ICBkZXNjcmliZSgnYGRhdGFiYXNlYCcsICgpID0+IHsKKyAgICAgICAgaXQoJ3Nob3VsZCBleGlz
dCcsICgpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5vayhDb25maWcudmFsdWUoJ2RhdGFiYXNl
JykpOwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIGRlZmluZSBgZGF0YWJhc2Uu
aG9zdGAnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGl0KCdzaG91bGQgZGVmaW5lIGBkYXRhYmFz
ZS5ob3N0YCcsICgpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0eXBlb2YgQ29uZmln
LnZhbHVlKCdkYXRhYmFzZS5ob3N0JyksICdzdHJpbmcnKTsKICAgICAgICAgfSk7CiAKLSAgICAg
ICAgaXQoJ3Nob3VsZCBkZWZpbmUgYGRhdGFiYXNlLnBvcnRgJywgZnVuY3Rpb24gKCkgeworICAg
ICAgICBpdCgnc2hvdWxkIGRlZmluZSBgZGF0YWJhc2UucG9ydGAnLCAoKSA9PiB7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwodHlwZW9mIENvbmZpZy52YWx1ZSgnZGF0YWJhc2UucG9ydCcpLCAn
c3RyaW5nJyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgZGVmaW5lIGBkYXRh
YmFzZS51c2VybmFtZWAnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGl0KCdzaG91bGQgZGVmaW5l
IGBkYXRhYmFzZS51c2VybmFtZWAnLCAoKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
dHlwZW9mIENvbmZpZy52YWx1ZSgnZGF0YWJhc2UudXNlcm5hbWUnKSwgJ3N0cmluZycpOwogICAg
ICAgICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIGRlZmluZSBgZGF0YWJhc2UucGFzc3dvcmRg
JywgZnVuY3Rpb24gKCkgeworICAgICAgICBpdCgnc2hvdWxkIGRlZmluZSBgZGF0YWJhc2UucGFz
c3dvcmRgJywgKCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHR5cGVvZiBDb25maWcu
dmFsdWUoJ2RhdGFiYXNlLnBhc3N3b3JkJyksICdzdHJpbmcnKTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgaXQoJ3Nob3VsZCBkZWZpbmUgYGRhdGFiYXNlLm5hbWVgJywgZnVuY3Rpb24gKCkgewor
ICAgICAgICBpdCgnc2hvdWxkIGRlZmluZSBgZGF0YWJhc2UubmFtZWAnLCAoKSA9PiB7CiAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwodHlwZW9mIENvbmZpZy52YWx1ZSgnZGF0YWJhc2UubmFtZScp
LCAnc3RyaW5nJyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0
byBjb25uZWN0IHRvIHRoZSBkYXRhYmFzZScsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIGl0
KCdzaG91bGQgYmUgYWJsZSB0byBjb25uZWN0IHRvIHRoZSBkYXRhYmFzZScsICgpID0+IHsKICAg
ICAgICAgICAgIGxldCBkYXRhYmFzZSA9IG5ldyBEYXRhYmFzZTsKLSAgICAgICAgICAgIGRhdGFi
YXNlLmNvbm5lY3QoKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGRhdGFiYXNlLmNv
bm5lY3QoKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBkYXRhYmFzZS5kaXNjb25uZWN0
KCk7Ci0gICAgICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICAgICAgfSwgZnVuY3Rpb24gKGVy
cm9yKSB7CisgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHsKICAgICAgICAgICAgICAgICBkYXRh
YmFzZS5kaXNjb25uZWN0KCk7Ci0gICAgICAgICAgICAgICAgZG9uZShlcnJvcik7CisgICAgICAg
ICAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAg
fSk7CiAKLSAgICBkZXNjcmliZSgnb3B0aW9uYWwgY29uZmlndXJhdGlvbnMnLCBmdW5jdGlvbiAo
KSB7CisgICAgZGVzY3JpYmUoJ29wdGlvbmFsIGNvbmZpZ3VyYXRpb25zJywgKCkgPT4gewogICAg
ICAgICBmdW5jdGlvbiBhc3NlcnROdWxsT3JUeXBlKHZhbHVlLCB0eXBlKSB7CiAgICAgICAgICAg
ICBpZiAodmFsdWUgIT09IG51bGwpCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHR5cGVv
ZiB2YWx1ZSwgdHlwZSk7CiAgICAgICAgIH0KIAotICAgICAgICBpdCgnYGRlYnVnYCBzaG91bGQg
YmUgYG51bGxgIG9yIGEgYm9vbGVhbicsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaXQoJ2BkZWJ1
Z2Agc2hvdWxkIGJlIGBudWxsYCBvciBhIGJvb2xlYW4nLCAoKSA9PiB7CiAgICAgICAgICAgICBh
c3NlcnROdWxsT3JUeXBlKENvbmZpZy52YWx1ZSgnZGVidWcnKSwgJ2Jvb2xlYW4nKTsKICAgICAg
ICAgfSk7CiAKLSAgICAgICAgaXQoJ2BtYWludGVuYW5jZU1vZGVgIHNob3VsZCBiZSBgbnVsbGAg
b3IgYSBib29sZWFuJywgZnVuY3Rpb24gKCkgeworICAgICAgICBpdCgnYG1haW50ZW5hbmNlTW9k
ZWAgc2hvdWxkIGJlIGBudWxsYCBvciBhIGJvb2xlYW4nLCAoKSA9PiB7CiAgICAgICAgICAgICBh
c3NlcnROdWxsT3JUeXBlKENvbmZpZy52YWx1ZSgnbWFpbnRlbmFuY2VNb2RlJyksICdib29sZWFu
Jyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdgbWFpbnRlbmFuY2VEaXJlY3RvcnlgIHNo
b3VsZCBiZSBgbnVsbGAgb3IgYSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGl0KCdg
bWFpbnRlbmFuY2VEaXJlY3RvcnlgIHNob3VsZCBiZSBgbnVsbGAgb3IgYSBzdHJpbmcnLCAoKSA9
PiB7CiAgICAgICAgICAgICBhc3NlcnROdWxsT3JUeXBlKENvbmZpZy52YWx1ZSgnbWFpbnRlbmFu
Y2VEaXJlY3RvcnknKSwgJ3N0cmluZycpOwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgnYG1h
aW50ZW5hbmNlRGlyZWN0b3J5YCBzaG91bGQgYmUgYSBzdHJpbmcgaWYgYG1haW50ZW5hbmNlTW9k
ZWAgaXMgdHJ1ZScsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaXQoJ2BtYWludGVuYW5jZURpcmVj
dG9yeWAgc2hvdWxkIGJlIGEgc3RyaW5nIGlmIGBtYWludGVuYW5jZU1vZGVgIGlzIHRydWUnLCAo
KSA9PiB7CiAgICAgICAgICAgICBpZiAoQ29uZmlnLnZhbHVlKCdtYWludGVuYW5jZU1vZGUnKSkK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQ29uZmlnLnZhbHVlKCdtYWludGVuYW5jZURp
cmVjdG9yeScpLCAnc3RyaW5nJyk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdgdW5pdmVy
c2FsU2xhdmVQYXNzd29yZGAgc2hvdWxkIGJlIGBudWxsYCBvciBhIHN0cmluZycsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgaXQoJ2B1bml2ZXJzYWxTbGF2ZVBhc3N3b3JkYCBzaG91bGQgYmUgYG51
bGxgIG9yIGEgc3RyaW5nJywgKCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0TnVsbE9yVHlwZShD
b25maWcudmFsdWUoJ3VuaXZlcnNhbFNsYXZlUGFzc3dvcmQnKSwgJ3N0cmluZycpOwogICAgICAg
ICB9KTsKICAgICB9KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3Rz
L3ByaXZpbGVnZWQtYXBpLXRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy91bml0LXRlc3RzL3ByaXZpbGVnZWQtYXBpLXRlc3RzLmpzCShyZXZpc2lvbiAyMTM5
NzQpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9wcml2aWxlZ2VkLWFw
aS10ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMiwyNCArMiwyNCBAQAogCiBjb25zdCBhc3Nl
cnQgPSByZXF1aXJlKCdhc3NlcnQnKTsKIAotbGV0IE1vY2tSZW1vdGVBUEkgPSByZXF1aXJlKCcu
L3Jlc291cmNlcy9tb2NrLXJlbW90ZS1hcGkuanMnKS5Nb2NrUmVtb3RlQVBJOworY29uc3QgTW9j
a1JlbW90ZUFQSSA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL21vY2stcmVtb3RlLWFwaS5qcycpLk1v
Y2tSZW1vdGVBUEk7CiByZXF1aXJlKCcuLi90b29scy9qcy92My1tb2RlbHMuanMnKTsKIAotZGVz
Y3JpYmUoJ1ByaXZpbGVnZWRBUEknLCBmdW5jdGlvbiAoKSB7CitkZXNjcmliZSgnUHJpdmlsZWdl
ZEFQSScsICgpID0+IHsKICAgICBsZXQgcmVxdWVzdHMgPSBNb2NrUmVtb3RlQVBJLmluamVjdCgp
OwogCi0gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7
CiAgICAgICAgIFByaXZpbGVnZWRBUEkuX3Rva2VuID0gbnVsbDsKLSAgICB9KQorICAgIH0pOwog
Ci0gICAgZGVzY3JpYmUoJ3JlcXVlc3RDU1JGVG9rZW4nLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
IGl0KCdzaG91bGQgZ2VuZXJhdGUgYSBuZXcgdG9rZW4nLCBmdW5jdGlvbiAoKSB7CisgICAgZGVz
Y3JpYmUoJ3JlcXVlc3RDU1JGVG9rZW4nLCAoKSA9PiB7CisgICAgICAgIGl0KCdzaG91bGQgZ2Vu
ZXJhdGUgYSBuZXcgdG9rZW4nLCAoKSA9PiB7CiAgICAgICAgICAgICBQcml2aWxlZ2VkQVBJLnJl
cXVlc3RDU1JGVG9rZW4oKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5n
dGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVybCwgJy9wcml2
aWxlZ2VkLWFwaS9nZW5lcmF0ZS1jc3JmLXRva2VuJyk7CiAgICAgICAgIH0pOwogCi0gICAgICAg
IGl0KCdzaG91bGQgbm90IGdlbmVyYXRlIGEgbmV3IHRva2VuIGlmIHRoZSBleGlzdGluZyB0b2tl
biBoYWQgbm90IGV4cGlyZWQnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICBpdCgnc2hvdWxk
IG5vdCBnZW5lcmF0ZSBhIG5ldyB0b2tlbiBpZiB0aGUgZXhpc3RpbmcgdG9rZW4gaGFkIG5vdCBl
eHBpcmVkJywgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgdG9rZW5SZXF1ZXN0ID0gUHJpdmls
ZWdlZEFQSS5yZXF1ZXN0Q1NSRlRva2VuKCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVx
dWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51
cmwsICcvcHJpdmlsZWdlZC1hcGkvZ2VuZXJhdGUtY3NyZi10b2tlbicpOwpAQCAtMjcsMTUgKzI3
LDE0IEBAIGRlc2NyaWJlKCdQcml2aWxlZ2VkQVBJJywgZnVuY3Rpb24gKCkgewogICAgICAgICAg
ICAgICAgIHRva2VuOiAnYWJjJywKICAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBEYXRlLm5v
dygpICsgMzYwMCAqIDEwMDAsCiAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHRva2VuUmVx
dWVzdC50aGVuKGZ1bmN0aW9uICh0b2tlbikgeworICAgICAgICAgICAgcmV0dXJuIHRva2VuUmVx
dWVzdC50aGVuKCh0b2tlbikgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0b2tl
biwgJ2FiYycpOwogICAgICAgICAgICAgICAgIFByaXZpbGVnZWRBUEkucmVxdWVzdENTUkZUb2tl
bigpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwot
ICAgICAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUg
YSBuZXcgdG9rZW4gaWYgdGhlIGV4aXN0aW5nIHRva2VuIGhhZCBhbHJlYWR5IGV4cGlyZWQnLCBm
dW5jdGlvbiAoZG9uZSkgeworICAgICAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEgbmV3IHRva2Vu
IGlmIHRoZSBleGlzdGluZyB0b2tlbiBoYWQgYWxyZWFkeSBleHBpcmVkJywgKCkgPT4gewogICAg
ICAgICAgICAgY29uc3QgdG9rZW5SZXF1ZXN0ID0gUHJpdmlsZWdlZEFQSS5yZXF1ZXN0Q1NSRlRv
a2VuKCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdlZC1hcGkv
Z2VuZXJhdGUtY3NyZi10b2tlbicpOwpAQCAtNDMsMzYgKzQyLDMyIEBAIGRlc2NyaWJlKCdQcml2
aWxlZ2VkQVBJJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIHRva2VuOiAnYWJjJywK
ICAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBEYXRlLm5vdygpIC0gMSwKICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgdG9rZW5SZXF1ZXN0LnRoZW4oZnVuY3Rpb24gKHRva2VuKSB7Cisg
ICAgICAgICAgICByZXR1cm4gdG9rZW5SZXF1ZXN0LnRoZW4oKHRva2VuKSA9PiB7CiAgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHRva2VuLCAnYWJjJyk7CiAgICAgICAgICAgICAgICAgUHJp
dmlsZWdlZEFQSS5yZXF1ZXN0Q1NSRlRva2VuKCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cXVlc3RzWzFdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9nZW5lcmF0ZS1jc3JmLXRva2VuJyk7Ci0g
ICAgICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAg
ICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiAgICAgCi0gICAgZGVzY3JpYmUoJ3Nl
bmRSZXF1ZXN0JywgZnVuY3Rpb24gKCkgeworICAgIGRlc2NyaWJlKCdzZW5kUmVxdWVzdCcsICgp
ID0+IHsKIAotICAgICAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEgbmV3IHRva2VuIGlmIG5vIHRv
a2VuIGhhZCBiZWVuIGZldGNoZWQnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICAgICAgUHJp
dmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndGVzdCcsIHt9KTsKKyAgICAgICAgaXQoJ3Nob3VsZCBn
ZW5lcmF0ZSBhIG5ldyB0b2tlbiBpZiBubyB0b2tlbiBoYWQgYmVlbiBmZXRjaGVkJywgKCkgPT4g
eworICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3Qo
J3Rlc3QnLCB7fSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAx
KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmwsICcvcHJpdmlsZWdl
ZC1hcGkvZ2VuZXJhdGUtY3NyZi10b2tlbicpOwogICAgICAgICAgICAgcmVxdWVzdHNbMF0ucmVz
b2x2ZSh7CiAgICAgICAgICAgICAgICAgdG9rZW46ICdhYmMnLAogICAgICAgICAgICAgICAgIGV4
cGlyYXRpb246IERhdGUubm93KCkgKyAxMDAgKiAxMDAwLAogICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0
KCkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxl
bmd0aCwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwg
Jy9wcml2aWxlZ2VkLWFwaS90ZXN0Jyk7Ci0gICAgICAgICAgICAgICAgZG9uZSgpOwotICAgICAg
ICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgaXQoJ3Nob3VsZCBub3QgZ2VuZXJhdGUgYSBuZXcgdG9rZW4gaWYgdGhlIGV4aXN0aW5n
IHRva2VuIGhhZCBub3QgYmVlbiBleHBpcmVkJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAg
aXQoJ3Nob3VsZCBub3QgZ2VuZXJhdGUgYSBuZXcgdG9rZW4gaWYgdGhlIGV4aXN0aW5nIHRva2Vu
IGhhZCBub3QgYmVlbiBleHBpcmVkJywgKCkgPT4gewogICAgICAgICAgICAgUHJpdmlsZWdlZEFQ
SS5zZW5kUmVxdWVzdCgndGVzdCcsIHt9KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1
ZXN0cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzBdLnVy
bCwgJy9wcml2aWxlZ2VkLWFwaS9nZW5lcmF0ZS1jc3JmLXRva2VuJyk7CkBAIC04MCwzNyArNzUs
MzEgQEAgZGVzY3JpYmUoJ1ByaXZpbGVnZWRBUEknLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICAgICAgdG9rZW46ICdhYmMnLAogICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IERhdGUubm93
KCkgKyAzNjAwICogMTAwMCwKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgUHJvbWlzZS5y
ZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwogICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS51cmwsICcvcHJpdmlsZWdlZC1hcGkv
dGVzdCcpOwogICAgICAgICAgICAgICAgIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3Rlc3Qy
Jywge30pOwotICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLSAgICAg
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNb2Nr
UmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAzKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbMl0udXJsLCAnL3ByaXZpbGVnZWQtYXBp
L3Rlc3QyJyk7Ci0gICAgICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICAgICAgfSkuY2F0Y2go
ZG9uZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3Vs
ZCByZWplY3QgaW1tZWRpYXRlbHkgd2hlbiBhIHRva2VuIGdlbmVyYXRpb24gaGFkIGZhaWxlZCcs
IGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIGl0KCdzaG91bGQgcmVqZWN0IGltbWVkaWF0ZWx5
IHdoZW4gYSB0b2tlbiBnZW5lcmF0aW9uIGhhZCBmYWlsZWQnLCAoKSA9PiB7CiAgICAgICAgICAg
ICBjb25zdCByZXF1ZXN0ID0gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndGVzdCcsIHt9KTsK
ICAgICAgICAgICAgIGxldCBjYXVnaHQgPSBmYWxzZTsKLSAgICAgICAgICAgIHJlcXVlc3QuY2F0
Y2goZnVuY3Rpb24gKCkgeyBjYXVnaHQgPSB0cnVlOyB9KTsKKyAgICAgICAgICAgIHJlcXVlc3Qu
Y2F0Y2goKCkgPT4geyBjYXVnaHQgPSB0cnVlOyB9KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXF1ZXN0cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3Rz
WzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9nZW5lcmF0ZS1jc3JmLXRva2VuJyk7CiAgICAgICAg
ICAgICByZXF1ZXN0c1swXS5yZWplY3Qoe3N0YXR1czogJ0ZhaWxlZFRvR2VuZXJhdGVUb2tlbid9
KTsKLSAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgewotICAg
ICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLSAgICAgICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZl
KSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDApKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQoY2F1Z2h0KTsKLSAgICAgICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRj
aChkb25lKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hv
dWxkIHJlLWdlbmVyYXRlIHRva2VuIHdoZW4gaXQgaGFkIGJlY29tZSBpbnZhbGlkJywgZnVuY3Rp
b24gKGRvbmUpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCByZS1nZW5lcmF0ZSB0b2tlbiB3aGVuIGl0
IGhhZCBiZWNvbWUgaW52YWxpZCcsICgpID0+IHsKICAgICAgICAgICAgIFByaXZpbGVnZWRBUEku
c2VuZFJlcXVlc3QoJ3Rlc3QnLCB7fSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVz
dHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1swXS51cmws
ICcvcHJpdmlsZWdlZC1hcGkvZ2VuZXJhdGUtY3NyZi10b2tlbicpOwpAQCAtMTE4LDYzICsxMDcs
NjEgQEAgZGVzY3JpYmUoJ1ByaXZpbGVnZWRBUEknLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICAgICAgdG9rZW46ICdhYmMnLAogICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IERhdGUubm93
KCkgKyAzNjAwICogMTAwMCwKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgUHJvbWlzZS5y
ZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDIpOwogICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1sxXS5kYXRhLnRva2VuLCAnYWJjJyk7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzFdLnVybCwgJy9wcml2aWxlZ2Vk
LWFwaS90ZXN0Jyk7CiAgICAgICAgICAgICAgICAgcmVxdWVzdHNbMV0ucmVqZWN0KCdJbnZhbGlk
VG9rZW4nKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAg
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9j
a1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMyk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzJdLnVybCwgJy9wcml2aWxlZ2VkLWFw
aS9nZW5lcmF0ZS1jc3JmLXRva2VuJyk7CiAgICAgICAgICAgICAgICAgcmVxdWVzdHNbMl0ucmVz
b2x2ZSh7CiAgICAgICAgICAgICAgICAgICAgIHRva2VuOiAnZGVmJywKICAgICAgICAgICAgICAg
ICAgICAgZXhwaXJhdGlvbjogRGF0ZS5ub3coKSArIDM2MDAgKiAxMDAwLAogICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLSAgICAg
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNb2Nr
UmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHNbM10uZGF0YS50b2tlbiwgJ2RlZicpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0c1szXS51cmwsICcvcHJpdmlsZWdl
ZC1hcGkvdGVzdCcpOwotICAgICAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgICAgIH0pLmNh
dGNoKGRvbmUpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdz
aG91bGQgbm90IHJlLWdlbmVyYXRlIHRva2VuIHdoZW4gdGhlIHJlLWZldGNoZWQgdG9rZW4gd2Fz
IGludmFsaWQnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICAgICAgUHJpdmlsZWdlZEFQSS5z
ZW5kUmVxdWVzdCgndGVzdCcsIHt9KTsKKyAgICAgICAgaXQoJ3Nob3VsZCBub3QgcmUtZ2VuZXJh
dGUgdG9rZW4gd2hlbiB0aGUgcmUtZmV0Y2hlZCB0b2tlbiB3YXMgaW52YWxpZCcsICgpID0+IHsK
KyAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd0
ZXN0Jywge30pOworICAgICAgICAgICAgbGV0IGNhdWdodCA9IGZhbHNlOworICAgICAgICAgICAg
cmVxdWVzdC5jYXRjaCgoKSA9PiBjYXVnaHQgPSB0cnVlKTsKICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXF1ZXN0cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcXVl
c3RzWzBdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS9nZW5lcmF0ZS1jc3JmLXRva2VuJyk7CiAgICAg
ICAgICAgICByZXF1ZXN0c1swXS5yZXNvbHZlKHsKICAgICAgICAgICAgICAgICB0b2tlbjogJ2Fi
YycsCiAgICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogRGF0ZS5ub3coKSArIDM2MDAgKiAxMDAw
LAogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Ci0g
ICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBNb2Nr
UmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzLmxlbmd0aCwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcXVlc3RzWzFdLmRhdGEudG9rZW4sICdhYmMnKTsKICAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVxdWVzdHNbMV0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL3Rlc3QnKTsKICAg
ICAgICAgICAgICAgICByZXF1ZXN0c1sxXS5yZWplY3QoJ0ludmFsaWRUb2tlbicpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLSAgICAgICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRG
b3JSZXF1ZXN0KCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCAzKTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVxdWVzdHNbMl0udXJsLCAnL3ByaXZpbGVnZWQtYXBpL2dlbmVyYXRlLWNzcmYt
dG9rZW4nKTsKICAgICAgICAgICAgICAgICByZXF1ZXN0c1syXS5yZXNvbHZlKHsKICAgICAgICAg
ICAgICAgICAgICAgdG9rZW46ICdkZWYnLAogICAgICAgICAgICAgICAgICAgICBleHBpcmF0aW9u
OiBEYXRlLm5vdygpICsgMzYwMCAqIDEwMDAsCiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotICAgICAgICAgICAgfSkudGhlbihm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZv
clJlcXVlc3QoKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXF1ZXN0cy5sZW5ndGgsIDQpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXF1ZXN0c1szXS5kYXRhLnRva2VuLCAnZGVmJyk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcXVlc3RzWzNdLnVybCwgJy9wcml2aWxlZ2VkLWFwaS90ZXN0Jyk7CiAg
ICAgICAgICAgICAgICAgcmVxdWVzdHNbM10ucmVqZWN0KCdJbnZhbGlkVG9rZW4nKTsKLSAgICAg
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
UHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCAwKSk7CisgICAgICAgICAg
ICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoY2F1Z2h0KTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVxdWVzdHMubGVuZ3RoLCA0KTsKLSAgICAgICAgICAg
ICAgICBkb25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKIAogICAgIH0pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>