<?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>155814</bug_id>
          
          <creation_ts>2016-03-23 15:48:29 -0700</creation_ts>
          <short_desc>Add a model for parsing buildbot JSON with unit tests</short_desc>
          <delta_ts>2016-03-23 20:25:09 -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>joepeck</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1177514</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-23 15:48:29 -0700</bug_when>
    <thetext>In order to improve our A/B testing infrastructure, add a new model class for parsing JSON fetched from buildbot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177519</commentid>
    <comment_count>1</comment_count>
      <attachid>274788</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-23 15:57:10 -0700</bug_when>
    <thetext>Created attachment 274788
Adds the classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177591</commentid>
    <comment_count>2</comment_count>
      <attachid>274788</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-23 20:18:43 -0700</bug_when>
    <thetext>Comment on attachment 274788
Adds the classes

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

r=me

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:14
&gt; +        this._isInProgress = &apos;currentStep&apos; in rawData;

This state never changes and is never checked. Will it eventually?

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:112
&gt; +            }

Nit: Semicolon.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:157
&gt; +                assert.equal(typeof(value), &apos;object&apos;, `arguments should be a dictionary`);

Nit: Assert message here could be a string instead of a template string.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:165
&gt; +                for (let part of value)
&gt; +                    assert.equal(typeof(part), &apos;string&apos;, &apos;test should be an array of strings&apos;)

You could assert value.every((function (part) { return typeof part == &apos;string&apos;; }). Whatever suits your style.

&gt; Websites/perf.webkit.org/tools/js/buildbot-syncer.js:206
&gt; +                assert(false, `Unrecognized named arguemnt ${keys[0]}`);

Typo: &quot;arguemnt&quot;

&gt; Websites/perf.webkit.org/unit-tests/buildbot-syncer-tests.js:3
&gt; +let assert = require(&apos;assert&apos;);

I see you are starting to use `let`!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177593</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-23 20:25:09 -0700</bug_when>
    <thetext>Committed r198614: &lt;http://trac.webkit.org/changeset/198614&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274788</attachid>
            <date>2016-03-23 15:57:10 -0700</date>
            <delta_ts>2016-03-23 20:18:43 -0700</delta_ts>
            <desc>Adds the classes</desc>
            <filename>bug-155814-20160323155711.patch</filename>
            <type>text/plain</type>
            <size>36365</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4NjAyKQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ0IEBACisyMDE2LTAzLTIzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEFkZCBhIG1vZGVsIGZvciBwYXJzaW5nIGJ1aWxkYm90IEpTT04gd2l0aCB1bml0
IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTU4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBCdWlsZGJvdFN5bmNlciBhbmQgQnVpbGRib3RCdWlsZEVudHJ5IGNsYXNzZXMgdG8gcGFy
c2UgYnVpbGRib3QgSlNPTiBmaWxlcyB3aXRoIHVuaXQgdGVzdHMuCisgICAgICAgIFRoZXkgd2ls
bCBiZSB1c2VkIGluIHRoZSBuZXcgc3luY2luZyBzY3JpcHRzIHRvIGltcHJvdmUgQS9CIHRlc3Rp
bmcuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanM6CisgICAg
ICAgIChCdWlsZFJlcXVlc3QpOgorICAgICAgICAqIHRvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5q
czogQWRkZWQuCisgICAgICAgIChCdWlsZGJvdEJ1aWxkRW50cnkpOiBBZGRlZC4KKyAgICAgICAg
KEJ1aWxkYm90QnVpbGRFbnRyeS5wcm90b3R5cGUuc2xhdmVOYW1lKTogQWRkZWQuCisgICAgICAg
IChCdWlsZGJvdEJ1aWxkRW50cnkucHJvdG90eXBlLmJ1aWxkUmVxdWVzdElkKTogQWRkZWQuCisg
ICAgICAgIChCdWlsZGJvdEJ1aWxkRW50cnkucHJvdG90eXBlLmlzSW5Qcm9ncmVzcyk6IEFkZGVk
LgorICAgICAgICAoQnVpbGRib3RTeW5jZXIpOiBBZGRlZC4KKyAgICAgICAgKEJ1aWxkYm90U3lu
Y2VyLnByb3RvdHlwZS50ZXN0UGF0aCk6IEFkZGVkLgorICAgICAgICAoQnVpbGRib3RTeW5jZXIu
cHJvdG90eXBlLmJ1aWxkZXJOYW1lKTogQWRkZWQuCisgICAgICAgIChCdWlsZGJvdFN5bmNlci5w
cm90b3R5cGUucGxhdGZvcm1OYW1lKTogQWRkZWQuCisgICAgICAgIChCdWlsZGJvdFN5bmNlci5w
cm90b3R5cGUuZmV0Y2hQZW5kaW5nUmVxdWVzdHMpOiBBZGRlZC4KKyAgICAgICAgKEJ1aWxkYm90
U3luY2VyLnByb3RvdHlwZS5fcHJvcGVydGllc0ZvckJ1aWxkUmVxdWVzdCk6IEFkZGVkLgorICAg
ICAgICAoQnVpbGRib3RTeW5jZXIucHJvdG90eXBlLl9yZXZpc2lvblNldEZyb21Sb290U2V0V2l0
aEV4Y2x1c2lvbkxpc3QpOiBBZGRlZC4KKyAgICAgICAgKEJ1aWxkYm90U3luY2VyLl9sb2FkQ29u
ZmlnKTogQWRkZWQuCisgICAgICAgIChCdWlsZGJvdFN5bmNlci5fdmFsaWRhdGVBbmRNZXJnZUNv
bmZpZyk6IEFkZGVkLgorICAgICAgICAoQnVpbGRib3RTeW5jZXIuX3ZhbGlkYXRlQW5kTWVyZ2VQ
cm9wZXJ0aWVzKTogQWRkZWQuCisgICAgICAgICogdG9vbHMvanMvdjMtbW9kZWxzLmpzOiBDb3Bp
ZWQgZnJvbSB1bml0LXRlc3RzL3Jlc291cmNlcy92My1tb2RlbHMuanMuCisgICAgICAgIChiZWZv
cmVFYWNoKTogRGVsZXRlZCBzaW5jZSB0aGlzIG9ubHkgZGVmaW5lZCBpbnNpZGUgbW9jaGEuCisg
ICAgICAgICogdW5pdC10ZXN0cy9hbmFseXNpcy10YXNrLXRlc3RzLmpzOgorICAgICAgICAqIHVu
aXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRlc3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNhbXBs
ZWlPU0NvbmZpZyk6CisgICAgICAgIChjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QpOgorICAgICAg
ICAoLnNtYWxsQ29uZmlndXJhdGlvbik6CisgICAgICAgICogdW5pdC10ZXN0cy9tZWFzdXJlbWVu
dC1hZGFwdG9yLXRlc3RzLmpzOgorICAgICAgICAqIHVuaXQtdGVzdHMvbWVhc3VyZW1lbnQtc2V0
LXRlc3RzLmpzOgorICAgICAgICAqIHVuaXQtdGVzdHMvcmVzb3VyY2VzL21vY2stdjMtbW9kZWxz
LmpzOiBSZW5hbWVkIGZyb20gdW5pdC10ZXN0cy9yZXNvdXJjZXMvdjMtbW9kZWxzLmpzLgorICAg
ICAgICAoYmVmb3JlRWFjaCk6CisgICAgICAgICogdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0
cy5qczoKKyAgICAgICAgKHNhbXBsZVRlc3RHcm91cCk6CisKIDIwMTYtMDMtMjIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHVuaXQgdGVzdHMgZm9yIHRl
c3QtZ3JvdXAuanMKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9k
ZWxzL2J1aWxkLXJlcXVlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcwkocmV2aXNpb24gMTk4NTk4KQor
KysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVz
dC5qcwkod29ya2luZyBjb3B5KQpAQCAtNSw5ICs1LDEwIEBAIGNsYXNzIEJ1aWxkUmVxdWVzdCBl
eHRlbmRzIERhdGFNb2RlbE9iamUKICAgICBjb25zdHJ1Y3RvcihpZCwgb2JqZWN0KQogICAgIHsK
ICAgICAgICAgc3VwZXIoaWQsIG9iamVjdCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KG9iamVj
dC50ZXN0R3JvdXAgaW5zdGFuY2VvZiBUZXN0R3JvdXApOworICAgICAgICBjb25zb2xlLmFzc2Vy
dCghb2JqZWN0LnRlc3RHcm91cCB8fCBvYmplY3QudGVzdEdyb3VwIGluc3RhbmNlb2YgVGVzdEdy
b3VwKTsKICAgICAgICAgdGhpcy5fdGVzdEdyb3VwID0gb2JqZWN0LnRlc3RHcm91cDsKLSAgICAg
ICAgdGhpcy5fdGVzdEdyb3VwLmFkZEJ1aWxkUmVxdWVzdCh0aGlzKTsKKyAgICAgICAgaWYgKHRo
aXMuX3Rlc3RHcm91cCkKKyAgICAgICAgICAgIHRoaXMuX3Rlc3RHcm91cC5hZGRCdWlsZFJlcXVl
c3QodGhpcyk7CiAgICAgICAgIHRoaXMuX29yZGVyID0gb2JqZWN0Lm9yZGVyOwogICAgICAgICBj
b25zb2xlLmFzc2VydChvYmplY3Qucm9vdFNldCBpbnN0YW5jZW9mIFJvb3RTZXQpOwogICAgICAg
ICB0aGlzLl9yb290U2V0ID0gb2JqZWN0LnJvb3RTZXQ7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanMJKHJldmlzaW9u
IDApCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qtc3luY2Vy
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjE3IEBACisndXNlIHN0cmljdCc7CisKK2xl
dCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTsKKworcmVxdWlyZSgnLi92My1tb2RlbHMuanMn
KTsKKworY2xhc3MgQnVpbGRib3RCdWlsZEVudHJ5IHsKKyAgICBjb25zdHJ1Y3RvcihzeW5jZXIs
IHR5cGUsIHJhd0RhdGEpCisgICAgeworICAgICAgICBhc3NlcnQuZXF1YWwoc3luY2VyLmJ1aWxk
ZXJOYW1lKCksIHJhd0RhdGFbJ2J1aWxkZXJOYW1lJ10pOworCisgICAgICAgIHRoaXMuX3NsYXZl
TmFtZSA9IG51bGw7CisgICAgICAgIHRoaXMuX2J1aWxkUmVxdWVzdElkID0gbnVsbDsKKyAgICAg
ICAgdGhpcy5faXNJblByb2dyZXNzID0gJ2N1cnJlbnRTdGVwJyBpbiByYXdEYXRhOworICAgICAg
ICB0aGlzLl9idWlsZE51bWJlciA9IHJhd0RhdGFbJ251bWJlciddOworCisgICAgICAgIGZvciAo
dmFyIHByb3BlcnR5VHVwbGUgb2YgKHJhd0RhdGFbJ3Byb3BlcnRpZXMnXSB8fCBbXSkpIHsKKyAg
ICAgICAgICAgIC8vIGUuZy4gWydidWlsZF9yZXF1ZXN0X2lkJywgJzE2NzMzJywgJ0ZvcmNlIEJ1
aWxkIEZvcm0nXQorICAgICAgICAgICAgdmFyIG5hbWUgPSBwcm9wZXJ0eVR1cGxlWzBdOworICAg
ICAgICAgICAgdmFyIHZhbHVlID0gcHJvcGVydHlUdXBsZVsxXTsKKyAgICAgICAgICAgIGlmIChu
YW1lID09IHN5bmNlci5fc2xhdmVQcm9wZXJ0eU5hbWUpCisgICAgICAgICAgICAgICAgdGhpcy5f
c2xhdmVOYW1lID0gdmFsdWU7CisgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09IHN5bmNlci5f
YnVpbGRSZXF1ZXN0UHJvcGVydHlOYW1lKQorICAgICAgICAgICAgICAgIHRoaXMuX2J1aWxkUmVx
dWVzdElkID0gdmFsdWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzbGF2ZU5hbWUoKSB7IHJl
dHVybiB0aGlzLl9zbGF2ZU5hbWU7IH0KKyAgICBidWlsZFJlcXVlc3RJZCgpIHsgcmV0dXJuIHRo
aXMuX2J1aWxkUmVxdWVzdElkOyB9CisgICAgaXNJblByb2dyZXNzKCkgeyByZXR1cm4gdGhpcy5f
aXNJblByb2dyZXNzOyB9Cit9CisKK2NsYXNzIEJ1aWxkYm90U3luY2VyIHsKKworICAgIGNvbnN0
cnVjdG9yKHVybCwgb2JqZWN0KQorICAgIHsKKyAgICAgICAgdGhpcy5fdXJsID0gdXJsOworICAg
ICAgICB0aGlzLl9idWlsZGVyTmFtZSA9IG9iamVjdC5idWlsZGVyOworICAgICAgICB0aGlzLl9w
bGF0Zm9ybU5hbWUgPSBvYmplY3QucGxhdGZvcm07CisgICAgICAgIHRoaXMuX3Rlc3RQYXRoID0g
b2JqZWN0LnRlc3Q7CisgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZW1wbGF0ZSA9IG9iamVjdC5w
cm9wZXJ0aWVzOworICAgICAgICB0aGlzLl9zbGF2ZVByb3BlcnR5TmFtZSA9IG9iamVjdC5zbGF2
ZUFyZ3VtZW50OworICAgICAgICB0aGlzLl9idWlsZFJlcXVlc3RQcm9wZXJ0eU5hbWUgPSBvYmpl
Y3QuYnVpbGRSZXF1ZXN0QXJndW1lbnQ7CisgICAgfQorCisgICAgdGVzdFBhdGgoKSB7IHJldHVy
biB0aGlzLl90ZXN0UGF0aCB9CisgICAgYnVpbGRlck5hbWUoKSB7IHJldHVybiB0aGlzLl9idWls
ZGVyTmFtZTsgfQorICAgIHBsYXRmb3JtTmFtZSgpIHsgcmV0dXJuIHRoaXMuX3BsYXRmb3JtTmFt
ZTsgfQorCisgICAgZmV0Y2hQZW5kaW5nUmVxdWVzdHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFJlbW90ZUFQSS5mZXRjaEpTT04oYCR7dGhpcy5fdXJsfS9qc29uL2J1aWxkZXJzLyR7dGhpcy5f
bmFtZX0vcGVuZGluZ0J1aWxkc2ApLnRoZW4oZnVuY3Rpb24gKGNvbnRlbnQpIHsKKyAgICAgICAg
ICAgIHZhciByZXF1ZXN0cyA9IFtdOworICAgICAgICAgICAgZm9yICh2YXIgZW50cnkgb2YgY29u
dGVudCkgeworICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZW50cnlbJ3Byb3BlcnRp
ZXMnXTsKKyAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3BlcnR5VHVwbGUgb2Yg
cHJvcGVydGllcykgeworICAgICAgICAgICAgICAgICAgICAvLyBlLmcuIFsnYnVpbGRfcmVxdWVz
dF9pZCcsICcxNjczMycsICdGb3JjZSBCdWlsZCBGb3JtJ10KKyAgICAgICAgICAgICAgICAgICAg
aWYgKHByb3BlcnR5VHVwbGVbMF0gPT0gdGhpcy5fYnVpbGRSZXF1ZXN0UHJvcGVydHlOYW1lKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMucHVzaChwcm9wZXJ0eVR1cGxlWzFdKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVx
dWVzdHM7CisgICAgICAgIH0pOworICAgIH0KKworICAgIF9wcm9wZXJ0aWVzRm9yQnVpbGRSZXF1
ZXN0KGJ1aWxkUmVxdWVzdCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJ1aWxkUmVx
dWVzdCBpbnN0YW5jZW9mIEJ1aWxkUmVxdWVzdCk7CisKKyAgICAgICAgbGV0IHJvb3RTZXQgPSBi
dWlsZFJlcXVlc3Qucm9vdFNldCgpOworICAgICAgICBjb25zb2xlLmFzc2VydChyb290U2V0IGlu
c3RhbmNlb2YgUm9vdFNldCk7CisKKyAgICAgICAgbGV0IHJlcG9zaXRvcnlCeU5hbWUgPSB7fTsK
KyAgICAgICAgZm9yIChsZXQgcmVwb3NpdG9yeSBvZiByb290U2V0LnJlcG9zaXRvcmllcygpKQor
ICAgICAgICAgICAgcmVwb3NpdG9yeUJ5TmFtZVtyZXBvc2l0b3J5Lm5hbWUoKV0gPSByZXBvc2l0
b3J5OworCisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0ge307CisgICAgICAgIGZvciAobGV0IGtl
eSBpbiB0aGlzLl9wcm9wZXJ0aWVzVGVtcGxhdGUpIHsKKyAgICAgICAgICAgIGxldCB2YWx1ZSA9
IHRoaXMuX3Byb3BlcnRpZXNUZW1wbGF0ZVtrZXldOworICAgICAgICAgICAgaWYgKHR5cGVvZih2
YWx1ZSkgIT0gJ29iamVjdCcpCisgICAgICAgICAgICAgICAgcHJvcGVydGllc1trZXldID0gdmFs
dWU7CisgICAgICAgICAgICBlbHNlIGlmICgncm9vdCcgaW4gdmFsdWUpIHsKKyAgICAgICAgICAg
ICAgICBsZXQgcmVwb3NpdG9yeU5hbWUgPSB2YWx1ZVsncm9vdCddOworICAgICAgICAgICAgICAg
IGxldCByZXBvc2l0b3J5ID0gcmVwb3NpdG9yeUJ5TmFtZVtyZXBvc2l0b3J5TmFtZV07CisgICAg
ICAgICAgICAgICAgYXNzZXJ0KHJlcG9zaXRvcnksICciJHtyZXBvc2l0b3J5TmFtZX0iIG11c3Qg
YmUgc3BlY2lmaWVkJyk7CisgICAgICAgICAgICAgICAgcHJvcGVydGllc1trZXldID0gcm9vdFNl
dC5yZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKCdyb290c0V4Y2x1ZGluZycgaW4gdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBsZXQgcmV2
aXNpb25TZXQgPSB0aGlzLl9yZXZpc2lvblNldEZyb21Sb290U2V0V2l0aEV4Y2x1c2lvbkxpc3Qo
cm9vdFNldCwgdmFsdWVbJ3Jvb3RzRXhjbHVkaW5nJ10pOworICAgICAgICAgICAgICAgIHByb3Bl
cnRpZXNba2V5XSA9IEpTT04uc3RyaW5naWZ5KHJldmlzaW9uU2V0KTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHByb3BlcnRpZXNbdGhpcy5fYnVpbGRSZXF1ZXN0UHJvcGVy
dHlOYW1lXSA9IGJ1aWxkUmVxdWVzdC5pZCgpOworCisgICAgICAgIHJldHVybiBwcm9wZXJ0aWVz
OworICAgIH0KKworICAgIF9yZXZpc2lvblNldEZyb21Sb290U2V0V2l0aEV4Y2x1c2lvbkxpc3Qo
cm9vdFNldCwgZXhjbHVzaW9uTGlzdCkKKyAgICB7CisgICAgICAgIGxldCByZXZpc2lvblNldCA9
IHt9OworICAgICAgICBmb3IgKGxldCByZXBvc2l0b3J5IG9mIHJvb3RTZXQucmVwb3NpdG9yaWVz
KCkpIHsKKyAgICAgICAgICAgIGlmIChleGNsdXNpb25MaXN0LmluZGV4T2YocmVwb3NpdG9yeS5u
YW1lKCkpID49IDApCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBsZXQg
Y29tbWl0ID0gcm9vdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpOworICAgICAg
ICAgICAgcmV2aXNpb25TZXRbcmVwb3NpdG9yeS5uYW1lKCldID0geworICAgICAgICAgICAgICAg
IGlkOiBjb21taXQuaWQoKSwKKyAgICAgICAgICAgICAgICB0aW1lOiArY29tbWl0LnRpbWUoKSwK
KyAgICAgICAgICAgICAgICByZXBvc2l0b3J5OiByZXBvc2l0b3J5Lm5hbWUoKSwKKyAgICAgICAg
ICAgICAgICByZXZpc2lvbjogY29tbWl0LnJldmlzaW9uKCksCisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHJldmlzaW9uU2V0OworICAgIH0KKworICAgIHN0YXRpYyBf
bG9hZENvbmZpZyh1cmwsIGNvbmZpZykKKyAgICB7CisgICAgICAgIGxldCBzaGFyZWQgPSBjb25m
aWdbJ3NoYXJlZCddIHx8IHt9OworICAgICAgICBsZXQgdHlwZXMgPSBjb25maWdbJ3R5cGVzJ10g
fHwge307CisgICAgICAgIGxldCBidWlsZGVycyA9IGNvbmZpZ1snYnVpbGRlcnMnXSB8fCB7fTsK
KworICAgICAgICBsZXQgc3luY2VycyA9IFtdOworICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiBj
b25maWdbJ2NvbmZpZ3VyYXRpb25zJ10pIHsKKyAgICAgICAgICAgIGxldCBuZXdDb25maWcgPSB7
fTsKKyAgICAgICAgICAgIHRoaXMuX3ZhbGlkYXRlQW5kTWVyZ2VDb25maWcobmV3Q29uZmlnLCBz
aGFyZWQpOworCisgICAgICAgICAgICB0aGlzLl92YWxpZGF0ZUFuZE1lcmdlQ29uZmlnKG5ld0Nv
bmZpZywgZW50cnkpOworCisgICAgICAgICAgICBsZXQgdHlwZSA9IGVudHJ5Wyd0eXBlJ107Cisg
ICAgICAgICAgICBpZiAodHlwZSkgeworICAgICAgICAgICAgICAgIGFzc2VydCh0eXBlc1t0eXBl
XSk7CisgICAgICAgICAgICAgICAgdGhpcy5fdmFsaWRhdGVBbmRNZXJnZUNvbmZpZyhuZXdDb25m
aWcsIHR5cGVzW3R5cGVdKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGV0IGJ1aWxk
ZXIgPSBlbnRyeVsnYnVpbGRlciddOworICAgICAgICAgICAgaWYgKGJ1aWxkZXJzW2J1aWxkZXJd
KQorICAgICAgICAgICAgICAgIHRoaXMuX3ZhbGlkYXRlQW5kTWVyZ2VDb25maWcobmV3Q29uZmln
LCBidWlsZGVyc1tidWlsZGVyXSk7CisKKyAgICAgICAgICAgIGFzc2VydCgncGxhdGZvcm0nIGlu
IG5ld0NvbmZpZywgJ2NvbmZpZ3VyYXRpb24gbXVzdCBzcGVjaWZ5IGEgcGxhdGZvcm0nKTsKKyAg
ICAgICAgICAgIGFzc2VydCgndGVzdCcgaW4gbmV3Q29uZmlnLCAnY29uZmlndXJhdGlvbiBtdXN0
IHNwZWNpZnkgYSB0ZXN0Jyk7CisgICAgICAgICAgICBhc3NlcnQoJ2J1aWxkZXInIGluIG5ld0Nv
bmZpZywgJ2NvbmZpZ3VyYXRpb24gbXVzdCBzcGVjaWZ5IGEgYnVpbGRlcicpOworICAgICAgICAg
ICAgYXNzZXJ0KCdwcm9wZXJ0aWVzJyBpbiBuZXdDb25maWcsICdjb25maWd1cmF0aW9uIG11c3Qg
c3BlY2lmeSBhcmd1bWVudHMgdG8gcG9zdCBvbiBhIGJ1aWxkZXInKTsKKyAgICAgICAgICAgIGFz
c2VydCgnYnVpbGRSZXF1ZXN0QXJndW1lbnQnIGluIG5ld0NvbmZpZywgJ2NvbmZpZ3VyYXRpb24g
bXVzdCBzcGVjaWZ5IGJ1aWxkUmVxdWVzdEFyZ3VtZW50Jyk7CisgICAgICAgICAgICBzeW5jZXJz
LnB1c2gobmV3IEJ1aWxkYm90U3luY2VyKHVybCwgbmV3Q29uZmlnKSk7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gc3luY2VyczsKKyAgICB9CisKKyAgICBzdGF0aWMgX3ZhbGlkYXRlQW5k
TWVyZ2VDb25maWcoY29uZmlnLCB2YWx1ZXNUb01lcmdlKQorICAgIHsKKyAgICAgICAgZm9yIChs
ZXQgbmFtZSBpbiB2YWx1ZXNUb01lcmdlKSB7CisgICAgICAgICAgICBsZXQgdmFsdWUgPSB2YWx1
ZXNUb01lcmdlW25hbWVdOworICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7CisgICAgICAgICAg
ICBjYXNlICdhcmd1bWVudHMnOgorICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0eXBlb2Yo
dmFsdWUpLCAnb2JqZWN0JywgYGFyZ3VtZW50cyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5YCk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFjb25maWdbJ3Byb3BlcnRpZXMnXSkKKyAgICAgICAgICAgICAg
ICAgICAgY29uZmlnWydwcm9wZXJ0aWVzJ10gPSB7fTsKKyAgICAgICAgICAgICAgICB0aGlzLl92
YWxpZGF0ZUFuZE1lcmdlUHJvcGVydGllcyhjb25maWdbJ3Byb3BlcnRpZXMnXSwgdmFsdWUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAndGVzdCc6CisgICAgICAg
ICAgICAgICAgYXNzZXJ0KHZhbHVlIGluc3RhbmNlb2YgQXJyYXksICd0ZXN0IHNob3VsZCBiZSBh
biBhcnJheScpOworICAgICAgICAgICAgICAgIGZvciAobGV0IHBhcnQgb2YgdmFsdWUpCisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0eXBlb2YocGFydCksICdzdHJpbmcnLCAndGVz
dCBzaG91bGQgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncycpCisgICAgICAgICAgICAgICAgY29uZmln
W25hbWVdID0gdmFsdWUuc2xpY2UoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgJ3R5cGUnOiAvLyBmYWxsdGhyb3VnaAorICAgICAgICAgICAgY2FzZSAnYnVpbGRl
cic6IC8vIGZhbGx0aHJvdWdoCisgICAgICAgICAgICBjYXNlICdwbGF0Zm9ybSc6IC8vIGZhbGx0
aHJvdWdoCisgICAgICAgICAgICBjYXNlICdzbGF2ZUFyZ3VtZW50JzogLy8gZmFsbHRocm91Z2gK
KyAgICAgICAgICAgIGNhc2UgJ2J1aWxkUmVxdWVzdEFyZ3VtZW50JzoKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwodHlwZW9mKHZhbHVlKSwgJ3N0cmluZycsIGAke25hbWV9IHNob3VsZCBi
ZSBvZiBzdHJpbmcgdHlwZWApOworICAgICAgICAgICAgICAgIGNvbmZpZ1tuYW1lXSA9IHZhbHVl
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICBhc3NlcnQoZmFsc2UsIGBVbnJlY29nbml6ZWQgcGFyYW1ldGVyICR7bmFtZX1gKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBfdmFsaWRhdGVB
bmRNZXJnZVByb3BlcnRpZXMocHJvcGVydGllcywgY29uZmlnQXJndW1lbnRzKQorICAgIHsKKyAg
ICAgICAgZm9yIChsZXQgbmFtZSBpbiBjb25maWdBcmd1bWVudHMpIHsKKyAgICAgICAgICAgIGxl
dCB2YWx1ZSA9IGNvbmZpZ0FyZ3VtZW50c1tuYW1lXTsKKyAgICAgICAgICAgIGlmICh0eXBlb2Yo
dmFsdWUpID09ICdzdHJpbmcnKSB7CisgICAgICAgICAgICAgICAgcHJvcGVydGllc1tuYW1lXSA9
IHZhbHVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHR5cGVvZih2YWx1ZSksICdvYmplY3QnLCAnQSBhcmd1bWVudCB2
YWx1ZSBtdXN0IGJlIGVpdGhlciBhIHN0cmluZyBvciBhIGRpY3Rpb25hcnknKTsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGtleXMubGVuZ3RoLCAxLCAnYXJndW1lbnRzIHZhbHVlIGNh
bm5vdCBjb250YWluIG1vcmUgdGhhbiBvbmUga2V5Jyk7CisgICAgICAgICAgICBsZXQgbmFtZWRW
YWx1ZSA9IHZhbHVlW2tleXNbMF1dOworICAgICAgICAgICAgc3dpdGNoIChrZXlzWzBdKSB7Cisg
ICAgICAgICAgICBjYXNlICdyb290JzoKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwodHlw
ZW9mKG5hbWVkVmFsdWUpLCAnc3RyaW5nJywgJ3Jvb3QgbmFtZSBtdXN0IGJlIGEgc3RyaW5nJyk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdyb290c0V4Y2x1ZGlu
Zyc6CisgICAgICAgICAgICAgICAgYXNzZXJ0KG5hbWVkVmFsdWUgaW5zdGFuY2VvZiBBcnJheSwg
J3Jvb3RzRXhjbHVkaW5nIG11c3Qgc3BlY2lmeSBhbiBhcnJheScpOworICAgICAgICAgICAgICAg
IGZvciAobGV0IGV4Y2x1ZGVkUm9vdE5hbWUgb2YgbmFtZWRWYWx1ZSkKKyAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHR5cGVvZihleGNsdWRlZFJvb3ROYW1lKSwgJ3N0cmluZycsICdy
b290c0V4Y2x1ZGluZyBtdXN0IHNwZWNpZnkgYW4gYXJyYXkgb2Ygc3RyaW5ncycpOworICAgICAg
ICAgICAgICAgIG5hbWVkVmFsdWUgPSBuYW1lZFZhbHVlLnNsaWNlKCk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGFzc2VydChm
YWxzZSwgYFVucmVjb2duaXplZCBuYW1lZCBhcmd1ZW1udCAke2tleXNbMF19YCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBwcm9wZXJ0aWVzW25hbWVdID0ge1trZXlzWzBdXTogbmFtZWRW
YWx1ZX07CisgICAgICAgIH0KKyAgICB9CisKK30KKworaWYgKHR5cGVvZiBtb2R1bGUgIT0gJ3Vu
ZGVmaW5lZCcpIHsKKyAgICBtb2R1bGUuZXhwb3J0cy5CdWlsZGJvdFN5bmNlciA9IEJ1aWxkYm90
U3luY2VyOworICAgIG1vZHVsZS5leHBvcnRzLkJ1aWxkYm90QnVpbGRFbnRyeSA9IEJ1aWxkYm90
QnVpbGRFbnRyeTsKK30KSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy92
My1tb2RlbHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xz
L2pzL3YzLW1vZGVscy5qcwkocmV2aXNpb24gMTk4NTk4KQkoZnJvbSBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdW5pdC10ZXN0cy9yZXNvdXJjZXMvdjMtbW9kZWxzLmpzOjE5ODU5OCkKKysrIFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy92My1tb2RlbHMuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NyBAQAorJ3VzZSBzdHJpY3QnOworCitmdW5jdGlvbiBpbXBvcnRGcm9t
VjMoZmlsZSwgbmFtZSkgeworICAgIGNvbnN0IG1vZGVsc0RpcmVjdG9yeSA9ICcuLi8uLi9wdWJs
aWMvdjMvJzsKKworICAgIGdsb2JhbFtuYW1lXSA9IHJlcXVpcmUobW9kZWxzRGlyZWN0b3J5ICsg
ZmlsZSlbbmFtZV07Cit9CisKK2ltcG9ydEZyb21WMygnbW9kZWxzL2RhdGEtbW9kZWwuanMnLCAn
RGF0YU1vZGVsT2JqZWN0Jyk7CitpbXBvcnRGcm9tVjMoJ21vZGVscy9kYXRhLW1vZGVsLmpzJywg
J0xhYmVsZWRPYmplY3QnKTsKKworaW1wb3J0RnJvbVYzKCdtb2RlbHMvYW5hbHlzaXMtdGFzay5q
cycsICdBbmFseXNpc1Rhc2snKTsKK2ltcG9ydEZyb21WMygnbW9kZWxzL2J1aWxkLXJlcXVlc3Qu
anMnLCAnQnVpbGRSZXF1ZXN0Jyk7CitpbXBvcnRGcm9tVjMoJ21vZGVscy9idWlsZGVyLmpzJywg
J0J1aWxkJyk7CitpbXBvcnRGcm9tVjMoJ21vZGVscy9idWlsZGVyLmpzJywgJ0J1aWxkZXInKTsK
K2ltcG9ydEZyb21WMygnbW9kZWxzL2NvbW1pdC1sb2cuanMnLCAnQ29tbWl0TG9nJyk7CitpbXBv
cnRGcm9tVjMoJ21vZGVscy9tZWFzdXJlbWVudC1hZGFwdG9yLmpzJywgJ01lYXN1cmVtZW50QWRh
cHRvcicpOworaW1wb3J0RnJvbVYzKCdtb2RlbHMvbWVhc3VyZW1lbnQtY2x1c3Rlci5qcycsICdN
ZWFzdXJlbWVudENsdXN0ZXInKTsKK2ltcG9ydEZyb21WMygnbW9kZWxzL21lYXN1cmVtZW50LXNl
dC5qcycsICdNZWFzdXJlbWVudFNldCcpOworaW1wb3J0RnJvbVYzKCdtb2RlbHMvbWV0cmljLmpz
JywgJ01ldHJpYycpOworaW1wb3J0RnJvbVYzKCdtb2RlbHMvcGxhdGZvcm0uanMnLCAnUGxhdGZv
cm0nKTsKK2ltcG9ydEZyb21WMygnbW9kZWxzL3JlcG9zaXRvcnkuanMnLCAnUmVwb3NpdG9yeScp
OworaW1wb3J0RnJvbVYzKCdtb2RlbHMvcm9vdC1zZXQuanMnLCAnTWVhc3VyZW1lbnRSb290U2V0
Jyk7CitpbXBvcnRGcm9tVjMoJ21vZGVscy9yb290LXNldC5qcycsICdSb290U2V0Jyk7CitpbXBv
cnRGcm9tVjMoJ21vZGVscy90ZXN0LmpzJywgJ1Rlc3QnKTsKK2ltcG9ydEZyb21WMygnbW9kZWxz
L3Rlc3QtZ3JvdXAuanMnLCAnVGVzdEdyb3VwJyk7CisKK2ltcG9ydEZyb21WMygnaW5zdHJ1bWVu
dGF0aW9uLmpzJywgJ0luc3RydW1lbnRhdGlvbicpOworCitnbG9iYWwuU3RhdGlzdGljcyA9IHJl
cXVpcmUoJy4uLy4uL3B1YmxpYy9zaGFyZWQvc3RhdGlzdGljcy5qcycpOworCitiZWZvcmVFYWNo
KGZ1bmN0aW9uICgpIHsKKyAgICBBbmFseXNpc1Rhc2suX2ZldGNoQWxsUHJvbWlzZSA9IG51bGw7
CisgICAgQW5hbHlzaXNUYXNrLmNsZWFyU3RhdGljTWFwKCk7CisgICAgQ29tbWl0TG9nLmNsZWFy
U3RhdGljTWFwKCk7CisgICAgUm9vdFNldC5jbGVhclN0YXRpY01hcCgpOworICAgIFRlc3RHcm91
cC5jbGVhclN0YXRpY01hcCgpOworICAgIEJ1aWxkUmVxdWVzdC5jbGVhclN0YXRpY01hcCgpOwor
CisgICAgZ2xvYmFsLm9zeCA9IFJlcG9zaXRvcnkuZW5zdXJlU2luZ2xldG9uKDksIHtuYW1lOiAn
T1MgWCd9KTsKKyAgICBnbG9iYWwud2Via2l0ID0gUmVwb3NpdG9yeS5lbnN1cmVTaW5nbGV0b24o
MTEsIHtuYW1lOiAnV2ViS2l0JywgdXJsOiAnaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvJDEnfSk7CisgICAgZ2xvYmFsLmJ1aWxkZXIgPSBuZXcgQnVpbGRlcigxNzYsIHtuYW1lOiAn
V2ViS2l0IFBlcmYgQnVpbGRlcicsIGJ1aWxkVXJsOiAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcv
YnVpbGRlcnMvJGJ1aWxkZXJOYW1lLyRidWlsZE51bWJlcid9KTsKKworICAgIGdsb2JhbC5zb21l
VGVzdCA9IFRlc3QuZW5zdXJlU2luZ2xldG9uKDE5MjgsIHtuYW1lOiAnU29tZSB0ZXN0J30pOwor
ICAgIGdsb2JhbC5zb21lTWV0cmljID0gTWV0cmljLmVuc3VyZVNpbmdsZXRvbigyODg0LCB7bmFt
ZTogJ1NvbWUgbWV0cmljJywgdGVzdDogc29tZVRlc3R9KTsKKyAgICBnbG9iYWwuc29tZVBsYXRm
b3JtID0gUGxhdGZvcm0uZW5zdXJlU2luZ2xldG9uKDY1LCB7bmFtZTogJ1NvbWUgcGxhdGZvcm0n
LCBtZXRyaWNzOiBbc29tZU1ldHJpY119KTsKK30pOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3Rvb2xzL2pzL3YzLW1vZGVscy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdG9vbHMvanMvdjMtbW9kZWxzLmpzCSh3b3JraW5nIGNvcHkpCisrKyBXZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvdjMtbW9kZWxzLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCwyMCArMjgsMyBAQCBpbXBvcnRGcm9tVjMoJ21vZGVscy90ZXN0LWdyb3VwLmpzJywg
J1RlCiBpbXBvcnRGcm9tVjMoJ2luc3RydW1lbnRhdGlvbi5qcycsICdJbnN0cnVtZW50YXRpb24n
KTsKIAogZ2xvYmFsLlN0YXRpc3RpY3MgPSByZXF1aXJlKCcuLi8uLi9wdWJsaWMvc2hhcmVkL3N0
YXRpc3RpY3MuanMnKTsKLQotYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7Ci0gICAgQW5hbHlzaXNU
YXNrLl9mZXRjaEFsbFByb21pc2UgPSBudWxsOwotICAgIEFuYWx5c2lzVGFzay5jbGVhclN0YXRp
Y01hcCgpOwotICAgIENvbW1pdExvZy5jbGVhclN0YXRpY01hcCgpOwotICAgIFJvb3RTZXQuY2xl
YXJTdGF0aWNNYXAoKTsKLSAgICBUZXN0R3JvdXAuY2xlYXJTdGF0aWNNYXAoKTsKLSAgICBCdWls
ZFJlcXVlc3QuY2xlYXJTdGF0aWNNYXAoKTsKLQotICAgIGdsb2JhbC5vc3ggPSBSZXBvc2l0b3J5
LmVuc3VyZVNpbmdsZXRvbig5LCB7bmFtZTogJ09TIFgnfSk7Ci0gICAgZ2xvYmFsLndlYmtpdCA9
IFJlcG9zaXRvcnkuZW5zdXJlU2luZ2xldG9uKDExLCB7bmFtZTogJ1dlYktpdCcsIHVybDogJ2h0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LyQxJ30pOwotICAgIGdsb2JhbC5idWlsZGVy
ID0gbmV3IEJ1aWxkZXIoMTc2LCB7bmFtZTogJ1dlYktpdCBQZXJmIEJ1aWxkZXInLCBidWlsZFVy
bDogJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzLyRidWlsZGVyTmFtZS8kYnVpbGRO
dW1iZXInfSk7Ci0KLSAgICBnbG9iYWwuc29tZVRlc3QgPSBUZXN0LmVuc3VyZVNpbmdsZXRvbigx
OTI4LCB7bmFtZTogJ1NvbWUgdGVzdCd9KTsKLSAgICBnbG9iYWwuc29tZU1ldHJpYyA9IE1ldHJp
Yy5lbnN1cmVTaW5nbGV0b24oMjg4NCwge25hbWU6ICdTb21lIG1ldHJpYycsIHRlc3Q6IHNvbWVU
ZXN0fSk7Ci0gICAgZ2xvYmFsLnNvbWVQbGF0Zm9ybSA9IFBsYXRmb3JtLmVuc3VyZVNpbmdsZXRv
big2NSwge25hbWU6ICdTb21lIHBsYXRmb3JtJywgbWV0cmljczogW3NvbWVNZXRyaWNdfSk7Ci19
KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5c2lzLXRh
c2stdGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQt
dGVzdHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qcwkocmV2aXNpb24gMTk4NTk4KQorKysgV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYW5hbHlzaXMtdGFzay10ZXN0cy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMiw3ICsyLDggQEAKIAogdmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2Vy
dCcpOwogCi1yZXF1aXJlKCcuL3Jlc291cmNlcy92My1tb2RlbHMuanMnKTsKK3JlcXVpcmUoJy4u
L3Rvb2xzL2pzL3YzLW1vZGVscy5qcycpOworcmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay12My1t
b2RlbHMuanMnKTsKIHJlcXVpcmUoJy4vcmVzb3VyY2VzL21vY2stcmVtb3RlLWFwaS5qcycpOwog
CiBmdW5jdGlvbiBzYW1wbGVBbmFseXNpc1Rhc2soKQpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3VuaXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRlc3RzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0
cy5qcwkocmV2aXNpb24gMCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3Rz
L2J1aWxkYm90LXN5bmNlci10ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5NSBA
QAorJ3VzZSBzdHJpY3QnOworCitsZXQgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7CisKK3Jl
cXVpcmUoJy4vcmVzb3VyY2VzL21vY2stcmVtb3RlLWFwaS5qcycpOworcmVxdWlyZSgnLi4vdG9v
bHMvanMvdjMtbW9kZWxzLmpzJyk7CityZXF1aXJlKCcuL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVs
cy5qcycpOworCitsZXQgQnVpbGRib3RCdWlsZEVudHJ5ID0gcmVxdWlyZSgnLi4vdG9vbHMvanMv
YnVpbGRib3Qtc3luY2VyLmpzJykuQnVpbGRib3RCdWlsZEVudHJ5OworbGV0IEJ1aWxkYm90U3lu
Y2VyID0gcmVxdWlyZSgnLi4vdG9vbHMvanMvYnVpbGRib3Qtc3luY2VyLmpzJykuQnVpbGRib3RT
eW5jZXI7CisKK2Z1bmN0aW9uIHNhbXBsZWlPU0NvbmZpZygpCit7CisgICAgcmV0dXJuIHsKKyAg
ICAgICAgJ3NoYXJlZCc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgJ2FyZ3VtZW50
cyc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ2Rlc2lyZWRfaW1hZ2UnOiB7J3Jvb3QnOiAnaU9T
J30sCisgICAgICAgICAgICAgICAgICAgICdyb290c19kaWN0Jzogeydyb290c0V4Y2x1ZGluZyc6
IFsnaU9TJ119CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAnc2xhdmVBcmd1
bWVudCc6ICdzbGF2ZW5hbWUnLAorICAgICAgICAgICAgICAgICdidWlsZFJlcXVlc3RBcmd1bWVu
dCc6ICdidWlsZF9yZXF1ZXN0X2lkJworICAgICAgICAgICAgfSwKKyAgICAgICAgJ3R5cGVzJzog
eworICAgICAgICAgICAgJ3NwZWVkb21ldGVyJzogeworICAgICAgICAgICAgICAgICd0ZXN0Jzog
WydTcGVlZG9tZXRlciddLAorICAgICAgICAgICAgICAgICdhcmd1bWVudHMnOiB7J3Rlc3RfbmFt
ZSc6ICdzcGVlZG9tZXRlcid9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgJ2pldHN0cmVh
bSc6IHsKKyAgICAgICAgICAgICAgICAndGVzdCc6IFsnSmV0U3RyZWFtJ10sCisgICAgICAgICAg
ICAgICAgJ2FyZ3VtZW50cyc6IHsndGVzdF9uYW1lJzogJ2pldHN0cmVhbSd9CisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgImRyb21hZW8tZG9tIjogeworICAgICAgICAgICAgICAgICJ0ZXN0
IjogWyJEcm9tYWVvIiwgIkRPTSBDb3JlIFRlc3RzIl0sCisgICAgICAgICAgICAgICAgImFyZ3Vt
ZW50cyI6IHsidGVzdHMiOiAiZHJvbWFlby1kb20ifQorICAgICAgICAgICAgfSwKKyAgICAgICAg
fSwKKyAgICAgICAgJ2J1aWxkZXJzJzogeworICAgICAgICAgICAgJ2lQaG9uZS1iZW5jaCc6IHsK
KyAgICAgICAgICAgICAgICAnYnVpbGRlcic6ICdBQlRlc3QtaVBob25lLVJ1bkJlbmNobWFyay1U
ZXN0cycsCisgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyc6IHsgJ2ZvcmNlc2NoZWR1bGVyJzog
J0FCVGVzdC1pUGhvbmUtUnVuQmVuY2htYXJrLVRlc3RzLUZvcmNlU2NoZWR1bGVyJyB9CisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgJ2lQYWQtYmVuY2gnOiB7CisgICAgICAgICAgICAgICAg
J2J1aWxkZXInOiAnQUJUZXN0LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzJywKKyAgICAgICAgICAg
ICAgICAnYXJndW1lbnRzJzogeyAnZm9yY2VzY2hlZHVsZXInOiAnQUJUZXN0LWlQYWQtUnVuQmVu
Y2htYXJrLVRlc3RzLUZvcmNlU2NoZWR1bGVyJyB9CisgICAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICdjb25maWd1cmF0aW9ucyc6IFsKKyAgICAgICAgICAgIHsndHlwZSc6ICdzcGVl
ZG9tZXRlcicsICdidWlsZGVyJzogJ2lQaG9uZS1iZW5jaCcsICdwbGF0Zm9ybSc6ICdpUGhvbmUn
fSwKKyAgICAgICAgICAgIHsndHlwZSc6ICdqZXRzdHJlYW0nLCAnYnVpbGRlcic6ICdpUGhvbmUt
YmVuY2gnLCAncGxhdGZvcm0nOiAnaVBob25lJ30sCisgICAgICAgICAgICB7J3R5cGUnOiAnZHJv
bWFlby1kb20nLCAnYnVpbGRlcic6ICdpUGhvbmUtYmVuY2gnLCAncGxhdGZvcm0nOiAnaVBob25l
J30sCisKKyAgICAgICAgICAgIHsndHlwZSc6ICdzcGVlZG9tZXRlcicsICdidWlsZGVyJzogJ2lQ
YWQtYmVuY2gnLCAncGxhdGZvcm0nOiAnaVBhZCd9LAorICAgICAgICAgICAgeyd0eXBlJzogJ2pl
dHN0cmVhbScsICdidWlsZGVyJzogJ2lQYWQtYmVuY2gnLCAncGxhdGZvcm0nOiAnaVBhZCd9LAor
ICAgICAgICBdCisgICAgfTsKK30KKworbGV0IHNhbXBsZVJvb3RTZXREYXRhID0geworICAgICdX
ZWJLaXQnOiB7CisgICAgICAgICdpZCc6ICcxMTExMjcnLAorICAgICAgICAndGltZSc6IDE0NTY5
NTU4MDczMzQsCisgICAgICAgICdyZXBvc2l0b3J5JzogJ1dlYktpdCcsCisgICAgICAgICdyZXZp
c2lvbic6ICcxOTc0NjMnLAorICAgIH0sCisgICAgJ1NoYXJlZCc6IHsKKyAgICAgICAgJ2lkJzog
JzExMTIzNycsCisgICAgICAgICd0aW1lJzogMTQ1NjkzMTg3NDAwMCwKKyAgICAgICAgJ3JlcG9z
aXRvcnknOiAnU2hhcmVkJywKKyAgICAgICAgJ3JldmlzaW9uJzogJzgwMjI5JywKKyAgICB9Cit9
OworCitmdW5jdGlvbiBjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoKQoreworICAgIHZhciByb290
U2V0ID0gUm9vdFNldC5lbnN1cmVTaW5nbGV0b24oJzQxOTcnLCB7cm9vdHM6IFsKKyAgICAgICAg
eydpZCc6ICcxMTExMjcnLCAndGltZSc6IDE0NTY5NTU4MDczMzQsICdyZXBvc2l0b3J5Jzogd2Vi
a2l0LCAncmV2aXNpb24nOiAnMTk3NDYzJ30sCisgICAgICAgIHsnaWQnOiAnMTExMjM3JywgJ3Rp
bWUnOiAxNDU2OTMxODc0MDAwLCAncmVwb3NpdG9yeSc6IHNoYXJlZFJlcG9zaXRvcnksICdyZXZp
c2lvbic6ICc4MDIyOSd9LAorICAgICAgICB7J2lkJzogJzg4OTMwJywgJ3RpbWUnOiAwLCAncmVw
b3NpdG9yeSc6IGlvcywgJ3JldmlzaW9uJzogJzEzQTQ1Mid9LAorICAgIF19KTsKKworICAgIHZh
ciByZXF1ZXN0ID0gQnVpbGRSZXF1ZXN0LmVuc3VyZVNpbmdsZXRvbignMTY3MzMnLCB7J3Jvb3RT
ZXQnOiByb290U2V0LCAnc3RhdHVzJzogJ3BlbmRpbmcnfSk7CisgICAgcmV0dXJuIHJlcXVlc3Q7
Cit9CisKK2xldCBzYW1wbGVQZW5kaW5nQnVpbGRzID0gWworICAgIHsKKyAgICAgICAgJ2J1aWxk
ZXJOYW1lJzogJ0FCVGVzdC1pUGFkLVJ1bkJlbmNobWFyay1UZXN0cycsCisgICAgICAgICdidWls
ZHMnOiBbXSwKKyAgICAgICAgJ3Byb3BlcnRpZXMnOiBbCisgICAgICAgICAgICBbJ2J1aWxkX3Jl
cXVlc3RfaWQnLCAnMTY3MzMnLCAnRm9yY2UgQnVpbGQgRm9ybSddLAorICAgICAgICAgICAgWydk
ZXNpcmVkX2ltYWdlJywgJzEzQTQ1MicsICdGb3JjZSBCdWlsZCBGb3JtJ10sCisgICAgICAgICAg
ICBbJ293bmVyJywgJzx1bmtub3duPicsICdGb3JjZSBCdWlsZCBGb3JtJ10sCisgICAgICAgICAg
ICBbJ3Rlc3RfbmFtZScsICdzcGVlZG9tZXRlcicsICdGb3JjZSBCdWlsZCBGb3JtJ10sCisgICAg
ICAgICAgICBbJ3JlYXNvbicsICdmb3JjZSBidWlsZCcsJ0ZvcmNlIEJ1aWxkIEZvcm0nXSwKKyAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAncm9vdHNfZGljdCcsCisgICAgICAgICAgICAg
ICAgSlNPTi5zdHJpbmdpZnkoc2FtcGxlUm9vdFNldERhdGEpLAorICAgICAgICAgICAgICAgICdG
b3JjZSBCdWlsZCBGb3JtJworICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIFsnc2NoZWR1bGVy
JywgJ0FCVGVzdC1KODUtUGVyZm9ybWFuY2UtVGVzdHMtRm9yY2VTY2hlZHVsZXInLCAnU2NoZWR1
bGVyJ10KKyAgICAgICAgXSwKKyAgICAgICAgJ3NvdXJjZSc6IHsKKyAgICAgICAgICAgICdicmFu
Y2gnOiAnJywKKyAgICAgICAgICAgICdjaGFuZ2VzJzogW10sCisgICAgICAgICAgICAnY29kZWJh
c2UnOiAnY29tcGlsZXItcnQnLAorICAgICAgICAgICAgJ2hhc1BhdGNoJzogZmFsc2UsCisgICAg
ICAgICAgICAncHJvamVjdCc6ICcnLAorICAgICAgICAgICAgJ3JlcG9zaXRvcnknOiAnJywKKyAg
ICAgICAgICAgICdyZXZpc2lvbic6ICcnCisgICAgICAgIH0sCisgICAgICAgICdzdWJtaXR0ZWRB
dCc6IDE0NTg3MDQ5ODMKKyAgICB9CitdOworCitkZXNjcmliZSgnQnVpbGRib3RTeW5jZXInLCBm
dW5jdGlvbiAoKSB7CisgICAgZGVzY3JpYmUoJ2ZldGNoUGVuZGluZ0J1aWxkcycsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgQnVpbGRib3RTeW5jZXIuZmV0Y2hQZW5kaW5nQnVpbGRzCisgICAgfSk7
CisKKyAgICBkZXNjcmliZSgnX2xvYWRDb25maWcnLCBmdW5jdGlvbiAoKSB7CisKKyAgICAgICAg
ZnVuY3Rpb24gc21hbGxDb25maWd1cmF0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgICAgICAnYnVpbGRlcic6ICdzb21lIGJ1aWxkZXInLAorICAgICAg
ICAgICAgICAgICdwbGF0Zm9ybSc6ICdzb21lIHBsYXRmb3JtJywKKyAgICAgICAgICAgICAgICAn
dGVzdCc6IFsnc29tZSB0ZXN0J10sCisgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyc6IHt9LAor
ICAgICAgICAgICAgICAgICdidWlsZFJlcXVlc3RBcmd1bWVudCc6ICdpZCd9OworICAgICAgICB9
CisKKyAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgQnVpbGRib3RTeW5jZXIgb2JqZWN0cyBmb3Ig
YSBjb25maWd1cmF0aW9uIHRoYXQgc3BlY2lmeSBhbGwgcmVxdWlyZWQgb3B0aW9ucycsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIGxldCBzeW5jZXJzID0gQnVpbGRib3RTeW5jZXIuX2xvYWRD
b25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLycsIHsnY29uZmlndXJhdGlvbnMnOiBbc21h
bGxDb25maWd1cmF0aW9uKCldfSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc3luY2Vycy5s
ZW5ndGgsIDEpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4g
c29tZSByZXF1aXJlZCBvcHRpb25zIGFyZSBtaXNzaW5nJywgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgYXNzZXJ0LnRocm93cyhmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIGNv
bmZpZyA9IHNtYWxsQ29uZmlndXJhdGlvbigpOworICAgICAgICAgICAgICAgIGRlbGV0ZSBjb25m
aWdbJ2J1aWxkZXInXTsKKyAgICAgICAgICAgICAgICBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZp
ZygnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvJywgeydjb25maWd1cmF0aW9ucyc6IFtjb25maWdd
fSk7CisgICAgICAgICAgICB9LCAnYnVpbGRlciBzaG91bGQgYmUgYSByZXF1aXJlZCBvcHRpb24n
KTsKKyAgICAgICAgICAgIGFzc2VydC50aHJvd3MoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgIHZhciBjb25maWcgPSBzbWFsbENvbmZpZ3VyYXRpb24oKTsKKyAgICAgICAgICAgICAgICBk
ZWxldGUgY29uZmlnWydwbGF0Zm9ybSddOworICAgICAgICAgICAgICAgIEJ1aWxkYm90U3luY2Vy
Ll9sb2FkQ29uZmlnKCdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8nLCB7J2NvbmZpZ3VyYXRpb25z
JzogW2NvbmZpZ119KTsKKyAgICAgICAgICAgIH0sICdwbGF0Zm9ybSBzaG91bGQgYmUgYSByZXF1
aXJlZCBvcHRpb24nKTsKKyAgICAgICAgICAgIGFzc2VydC50aHJvd3MoZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIHZhciBjb25maWcgPSBzbWFsbENvbmZpZ3VyYXRpb24oKTsKKyAgICAg
ICAgICAgICAgICBkZWxldGUgY29uZmlnWyd0ZXN0J107CisgICAgICAgICAgICAgICAgQnVpbGRi
b3RTeW5jZXIuX2xvYWRDb25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLycsIHsnY29uZmln
dXJhdGlvbnMnOiBbY29uZmlnXX0pOworICAgICAgICAgICAgfSwgJ3Rlc3Qgc2hvdWxkIGJlIGEg
cmVxdWlyZWQgb3B0aW9uJyk7CisgICAgICAgICAgICBhc3NlcnQudGhyb3dzKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICB2YXIgY29uZmlnID0gc21hbGxDb25maWd1cmF0aW9uKCk7Cisg
ICAgICAgICAgICAgICAgZGVsZXRlIGNvbmZpZ1snYXJndW1lbnRzJ107CisgICAgICAgICAgICAg
ICAgQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLycs
IHsnY29uZmlndXJhdGlvbnMnOiBbY29uZmlnXX0pOworICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICBhc3NlcnQudGhyb3dzKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY29u
ZmlnID0gc21hbGxDb25maWd1cmF0aW9uKCk7CisgICAgICAgICAgICAgICAgZGVsZXRlIGNvbmZp
Z1snYnVpbGRSZXF1ZXN0QXJndW1lbnQnXTsKKyAgICAgICAgICAgICAgICBCdWlsZGJvdFN5bmNl
ci5fbG9hZENvbmZpZygnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvJywgeydjb25maWd1cmF0aW9u
cyc6IFtjb25maWddfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
aXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGEgdGVzdCBuYW1lIGlzIG5vdCBhbiBhcnJheSBvZiBzdHJp
bmdzJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYXNzZXJ0LnRocm93cyhmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgdmFyIGNvbmZpZyA9IHNtYWxsQ29uZmlndXJhdGlvbigpOwor
ICAgICAgICAgICAgICAgIGNvbmZpZy50ZXN0ID0gJ3NvbWUgdGVzdCc7CisgICAgICAgICAgICAg
ICAgQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLycs
IHsnY29uZmlndXJhdGlvbnMnOiBbY29uZmlnXX0pOworICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICBhc3NlcnQudGhyb3dzKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY29u
ZmlnID0gc21hbGxDb25maWd1cmF0aW9uKCk7CisgICAgICAgICAgICAgICAgY29uZmlnLnRlc3Qg
PSBbMV07CisgICAgICAgICAgICAgICAgQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoJ2h0dHA6
Ly9idWlsZC53ZWJraXQub3JnLycsIHsnY29uZmlndXJhdGlvbnMnOiBbY29uZmlnXX0pOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgdGhyb3cgd2hl
biBhcmd1bWVudHMgaXMgbm90IGFuIG9iamVjdCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IGFzc2VydC50aHJvd3MoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciBjb25maWcg
PSBzbWFsbENvbmZpZ3VyYXRpb24oKTsKKyAgICAgICAgICAgICAgICBjb25maWcuYXJndW1lbnRz
ID0gJ2hlbGxvJzsKKyAgICAgICAgICAgICAgICBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygn
aHR0cDovL2J1aWxkLndlYmtpdC5vcmcvJywgeydjb25maWd1cmF0aW9ucyc6IFtjb25maWddfSk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCB0aHJv
dyB3aGVuIGFyZ3VtZW50c1wncyB2YWx1ZXMgYXJlIG1hbGZvcm1lZCcsIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIGFzc2VydC50aHJvd3MoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IHZhciBjb25maWcgPSBzbWFsbENvbmZpZ3VyYXRpb24oKTsKKyAgICAgICAgICAgICAgICBjb25m
aWcuYXJndW1lbnRzID0geydzb21lJzogeydyb290JzogJ3NvbWUgcm9vdCcsICdyb290c0V4Y2x1
ZGluZyc6IFsnb3RoZXIgcm9vdCddfX07CisgICAgICAgICAgICAgICAgQnVpbGRib3RTeW5jZXIu
X2xvYWRDb25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLycsIHsnY29uZmlndXJhdGlvbnMn
OiBbY29uZmlnXX0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBhc3NlcnQudGhyb3dz
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY29uZmlnID0gc21hbGxDb25maWd1
cmF0aW9uKCk7CisgICAgICAgICAgICAgICAgY29uZmlnLmFyZ3VtZW50cyA9IHsnc29tZSc6IHsn
b3RoZXJLZXknOiAnc29tZSByb290J319OworICAgICAgICAgICAgICAgIEJ1aWxkYm90U3luY2Vy
Ll9sb2FkQ29uZmlnKCdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8nLCB7J2NvbmZpZ3VyYXRpb25z
JzogW2NvbmZpZ119KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYXNzZXJ0LnRocm93
cyhmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIGNvbmZpZyA9IHNtYWxsQ29uZmln
dXJhdGlvbigpOworICAgICAgICAgICAgICAgIGNvbmZpZy5hcmd1bWVudHMgPSB7J3NvbWUnOiB7
J3Jvb3QnOiBbJ2EnLCAnYiddfX07CisgICAgICAgICAgICAgICAgQnVpbGRib3RTeW5jZXIuX2xv
YWRDb25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLycsIHsnY29uZmlndXJhdGlvbnMnOiBb
Y29uZmlnXX0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBhc3NlcnQudGhyb3dzKGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY29uZmlnID0gc21hbGxDb25maWd1cmF0
aW9uKCk7CisgICAgICAgICAgICAgICAgY29uZmlnLmFyZ3VtZW50cyA9IHsnc29tZSc6IHsncm9v
dCc6IDF9fTsKKyAgICAgICAgICAgICAgICBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0
cDovL2J1aWxkLndlYmtpdC5vcmcvJywgeydjb25maWd1cmF0aW9ucyc6IFtjb25maWddfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGFzc2VydC50aHJvd3MoZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIHZhciBjb25maWcgPSBzbWFsbENvbmZpZ3VyYXRpb24oKTsKKyAgICAg
ICAgICAgICAgICBjb25maWcuYXJndW1lbnRzID0geydzb21lJzogeydyb290c0V4Y2x1ZGluZyc6
ICdhJ319OworICAgICAgICAgICAgICAgIEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKCdodHRw
Oi8vYnVpbGQud2Via2l0Lm9yZy8nLCB7J2NvbmZpZ3VyYXRpb25zJzogW2NvbmZpZ119KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgYXNzZXJ0LnRocm93cyhmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIGNvbmZpZyA9IHNtYWxsQ29uZmlndXJhdGlvbigpOworICAgICAg
ICAgICAgICAgIGNvbmZpZy5hcmd1bWVudHMgPSB7J3NvbWUnOiB7J3Jvb3RzRXhjbHVkaW5nJzog
WzFdfX07CisgICAgICAgICAgICAgICAgQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoJ2h0dHA6
Ly9idWlsZC53ZWJraXQub3JnLycsIHsnY29uZmlndXJhdGlvbnMnOiBbY29uZmlnXX0pOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIEJ1
aWxkYm90U3luY2VyIG9iamVjdHMgZm9yIHZhbGlkIGNvbmZpZ3VyYXRpb25zJywgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgbGV0IHN5bmNlcnMgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZp
ZygnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvJywgc2FtcGxlaU9TQ29uZmlnKCkpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHN5bmNlcnMubGVuZ3RoLCA1KTsKKyAgICAgICAgICAgIGFzc2Vy
dC5vayhzeW5jZXJzWzBdIGluc3RhbmNlb2YgQnVpbGRib3RTeW5jZXIpOworICAgICAgICAgICAg
YXNzZXJ0Lm9rKHN5bmNlcnNbMV0gaW5zdGFuY2VvZiBCdWlsZGJvdFN5bmNlcik7CisgICAgICAg
ICAgICBhc3NlcnQub2soc3luY2Vyc1syXSBpbnN0YW5jZW9mIEJ1aWxkYm90U3luY2VyKTsKKyAg
ICAgICAgICAgIGFzc2VydC5vayhzeW5jZXJzWzNdIGluc3RhbmNlb2YgQnVpbGRib3RTeW5jZXIp
OworICAgICAgICAgICAgYXNzZXJ0Lm9rKHN5bmNlcnNbNF0gaW5zdGFuY2VvZiBCdWlsZGJvdFN5
bmNlcik7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgcGFyc2UgYnVpbGRlciBu
YW1lcyBjb3JyZWN0bHknLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBsZXQgc3luY2VycyA9
IEJ1aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKCdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8nLCBz
YW1wbGVpT1NDb25maWcoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc3luY2Vyc1swXS5i
dWlsZGVyTmFtZSgpLCAnQUJUZXN0LWlQaG9uZS1SdW5CZW5jaG1hcmstVGVzdHMnKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChzeW5jZXJzWzFdLmJ1aWxkZXJOYW1lKCksICdBQlRlc3QtaVBo
b25lLVJ1bkJlbmNobWFyay1UZXN0cycpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHN5bmNl
cnNbMl0uYnVpbGRlck5hbWUoKSwgJ0FCVGVzdC1pUGhvbmUtUnVuQmVuY2htYXJrLVRlc3RzJyk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc3luY2Vyc1szXS5idWlsZGVyTmFtZSgpLCAnQUJU
ZXN0LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
c3luY2Vyc1s0XS5idWlsZGVyTmFtZSgpLCAnQUJUZXN0LWlQYWQtUnVuQmVuY2htYXJrLVRlc3Rz
Jyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgcGFyc2UgcGxhdGZvcm0gbmFt
ZXMgY29ycmVjdGx5JywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbGV0IHN5bmNlcnMgPSBC
dWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvJywgc2Ft
cGxlaU9TQ29uZmlnKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHN5bmNlcnNbMF0ucGxh
dGZvcm1OYW1lKCksICdpUGhvbmUnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzeW5jZXJz
WzFdLnBsYXRmb3JtTmFtZSgpLCAnaVBob25lJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
c3luY2Vyc1syXS5wbGF0Zm9ybU5hbWUoKSwgJ2lQaG9uZScpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHN5bmNlcnNbM10ucGxhdGZvcm1OYW1lKCksICdpUGFkJyk7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoc3luY2Vyc1s0XS5wbGF0Zm9ybU5hbWUoKSwgJ2lQYWQnKTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBwYXJzZSB0ZXN0IG5hbWVzIGNvcnJlY3RseScsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGxldCBzeW5jZXJzID0gQnVpbGRib3RTeW5jZXIuX2xv
YWRDb25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLycsIHNhbXBsZWlPU0NvbmZpZygpKTsK
KyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc3luY2Vyc1swXS50ZXN0UGF0aCgpLCBbJ1Nw
ZWVkb21ldGVyJ10pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChzeW5jZXJzWzFdLnRl
c3RQYXRoKCksIFsnSmV0U3RyZWFtJ10pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChz
eW5jZXJzWzJdLnRlc3RQYXRoKCksIFsnRHJvbWFlbycsICdET00gQ29yZSBUZXN0cyddKTsKKyAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc3luY2Vyc1szXS50ZXN0UGF0aCgpLCBbJ1NwZWVk
b21ldGVyJ10pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChzeW5jZXJzWzRdLnRlc3RQ
YXRoKCksIFsnSmV0U3RyZWFtJ10pOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2Ny
aWJlKCdfcHJvcGVydGllc0ZvckJ1aWxkUmVxdWVzdCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
aXQoJ3Nob3VsZCBpbmNsdWRlIGFsbCBwcm9wZXJ0aWVzIHNwZWNpZmllZCBpbiBhIGdpdmVuIGNv
bmZpZ3VyYXRpb24nLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBsZXQgc3luY2VycyA9IEJ1
aWxkYm90U3luY2VyLl9sb2FkQ29uZmlnKCdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8nLCBzYW1w
bGVpT1NDb25maWcoKSk7CisgICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IHN5bmNlcnNbMF0u
X3Byb3BlcnRpZXNGb3JCdWlsZFJlcXVlc3QoY3JlYXRlU2FtcGxlQnVpbGRSZXF1ZXN0KCkpOwor
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChPYmplY3Qua2V5cyhwcm9wZXJ0aWVzKSwgWydk
ZXNpcmVkX2ltYWdlJywgJ3Jvb3RzX2RpY3QnLCAndGVzdF9uYW1lJywgJ2ZvcmNlc2NoZWR1bGVy
JywgJ2J1aWxkX3JlcXVlc3RfaWQnXSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91
bGQgcHJlc2VydmUgbm9uLXBhcmFtZXRyaWMgcHJvcGVydHkgdmFsdWVzJywgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgbGV0IHN5bmNlcnMgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygn
aHR0cDovL2J1aWxkLndlYmtpdC5vcmcvJywgc2FtcGxlaU9TQ29uZmlnKCkpOworICAgICAgICAg
ICAgdmFyIHByb3BlcnRpZXMgPSBzeW5jZXJzWzBdLl9wcm9wZXJ0aWVzRm9yQnVpbGRSZXF1ZXN0
KGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVzdCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChw
cm9wZXJ0aWVzWyd0ZXN0X25hbWUnXSwgJ3NwZWVkb21ldGVyJyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocHJvcGVydGllc1snZm9yY2VzY2hlZHVsZXInXSwgJ0FCVGVzdC1pUGhvbmUtUnVu
QmVuY2htYXJrLVRlc3RzLUZvcmNlU2NoZWR1bGVyJyk7CisKKyAgICAgICAgICAgIHZhciBwcm9w
ZXJ0aWVzID0gc3luY2Vyc1sxXS5fcHJvcGVydGllc0ZvckJ1aWxkUmVxdWVzdChjcmVhdGVTYW1w
bGVCdWlsZFJlcXVlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocHJvcGVydGllc1sn
dGVzdF9uYW1lJ10sICdqZXRzdHJlYW0nKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChwcm9w
ZXJ0aWVzWydmb3JjZXNjaGVkdWxlciddLCAnQUJUZXN0LWlQaG9uZS1SdW5CZW5jaG1hcmstVGVz
dHMtRm9yY2VTY2hlZHVsZXInKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBy
ZXNvbHZlICJyb290IicsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGxldCBzeW5jZXJzID0g
QnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnLycsIHNh
bXBsZWlPU0NvbmZpZygpKTsKKyAgICAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gc3luY2Vyc1sw
XS5fcHJvcGVydGllc0ZvckJ1aWxkUmVxdWVzdChjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoKSk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocHJvcGVydGllc1snZGVzaXJlZF9pbWFnZSddLCAn
MTNBNDUyJyk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgcmVzb2x2ZSAicm9v
dHNFeGNsdWRpbmciJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbGV0IHN5bmNlcnMgPSBC
dWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZygnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvJywgc2Ft
cGxlaU9TQ29uZmlnKCkpOworICAgICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBzeW5jZXJzWzBd
Ll9wcm9wZXJ0aWVzRm9yQnVpbGRSZXF1ZXN0KGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVzdCgpKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChwcm9wZXJ0aWVzWydyb290c19kaWN0J10sIEpTT04u
c3RyaW5naWZ5KHNhbXBsZVJvb3RTZXREYXRhKSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0
KCdzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSBmb3IgdGhlIGJ1aWxkIHJlcXVlc3QgaWQnLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBsZXQgc3luY2VycyA9IEJ1aWxkYm90U3luY2VyLl9sb2Fk
Q29uZmlnKCdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy8nLCBzYW1wbGVpT1NDb25maWcoKSk7Cisg
ICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IHN5bmNlcnNbMF0uX3Byb3BlcnRpZXNGb3JCdWls
ZFJlcXVlc3QoY3JlYXRlU2FtcGxlQnVpbGRSZXF1ZXN0KCkpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHByb3BlcnRpZXNbJ2J1aWxkX3JlcXVlc3RfaWQnXSwgY3JlYXRlU2FtcGxlQnVpbGRS
ZXF1ZXN0KCkuaWQoKSk7CisgICAgICAgIH0pOworICAgIH0pOworCit9KTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0
cy9tZWFzdXJlbWVudC1hZGFwdG9yLXRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21lYXN1cmVtZW50LWFkYXB0b3ItdGVzdHMuanMJKHJl
dmlzaW9uIDE5ODU5OCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21l
YXN1cmVtZW50LWFkYXB0b3ItdGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw4IEBA
CiAKIHZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKTsKIAotcmVxdWlyZSgnLi9yZXNvdXJj
ZXMvdjMtbW9kZWxzJyk7CityZXF1aXJlKCcuLi90b29scy9qcy92My1tb2RlbHMuanMnKTsKK3Jl
cXVpcmUoJy4vcmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzJyk7CiAKIHZhciBzYW1wbGVDbHVz
dGVyID0gewogICAgICdjbHVzdGVyU3RhcnQnOiA5NDY2ODQ4MDAwMDAsCkluZGV4OiBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtdGVzdHMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1l
bnQtc2V0LXRlc3RzLmpzCShyZXZpc2lvbiAxOTg1OTgpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtdGVzdHMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTMsNyArMyw4IEBACiB2YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7CiAKIHJlcXVp
cmUoJy4vcmVzb3VyY2VzL21vY2stcmVtb3RlLWFwaS5qcycpOwotcmVxdWlyZSgnLi9yZXNvdXJj
ZXMvdjMtbW9kZWxzLmpzJyk7CityZXF1aXJlKCcuLi90b29scy9qcy92My1tb2RlbHMuanMnKTsK
K3JlcXVpcmUoJy4vcmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzJyk7CiAKIGRlc2NyaWJlKCdN
ZWFzdXJlbWVudFNldCcsIGZ1bmN0aW9uICgpIHsKICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgp
IHsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3QtZ3JvdXBz
LXRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRl
c3RzL3Rlc3QtZ3JvdXBzLXRlc3RzLmpzCShyZXZpc2lvbiAxOTg1OTgpCisrKyBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0cy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMiw3ICsyLDggQEAKIAogdmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpOwog
Ci1yZXF1aXJlKCcuL3Jlc291cmNlcy92My1tb2RlbHMuanMnKTsKK3JlcXVpcmUoJy4uL3Rvb2xz
L2pzL3YzLW1vZGVscy5qcycpOworcmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay12My1tb2RlbHMu
anMnKTsKIAogZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKCkgewogICAgIHJldHVybiB7CkluZGV4
OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXNvdXJjZXMvbW9jay12My1t
b2RlbHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVz
dHMvcmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzCShyZXZpc2lvbiAxOTg1OTgpCShmcm9tIFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Jlc291cmNlcy92My1tb2RlbHMuanM6
MTk4NTk4KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmVzb3VyY2Vz
L21vY2stdjMtbW9kZWxzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKyd1c2Ug
c3RyaWN0JzsKKworZnVuY3Rpb24gaW1wb3J0RnJvbVYzKGZpbGUsIG5hbWUpIHsKKyAgICBjb25z
dCBtb2RlbHNEaXJlY3RvcnkgPSAnLi4vLi4vcHVibGljL3YzLyc7CisKKyAgICBnbG9iYWxbbmFt
ZV0gPSByZXF1aXJlKG1vZGVsc0RpcmVjdG9yeSArIGZpbGUpW25hbWVdOworfQorCitpbXBvcnRG
cm9tVjMoJ21vZGVscy9kYXRhLW1vZGVsLmpzJywgJ0RhdGFNb2RlbE9iamVjdCcpOworaW1wb3J0
RnJvbVYzKCdtb2RlbHMvZGF0YS1tb2RlbC5qcycsICdMYWJlbGVkT2JqZWN0Jyk7CisKK2ltcG9y
dEZyb21WMygnbW9kZWxzL2FuYWx5c2lzLXRhc2suanMnLCAnQW5hbHlzaXNUYXNrJyk7CitpbXBv
cnRGcm9tVjMoJ21vZGVscy9idWlsZC1yZXF1ZXN0LmpzJywgJ0J1aWxkUmVxdWVzdCcpOworaW1w
b3J0RnJvbVYzKCdtb2RlbHMvYnVpbGRlci5qcycsICdCdWlsZCcpOworaW1wb3J0RnJvbVYzKCdt
b2RlbHMvYnVpbGRlci5qcycsICdCdWlsZGVyJyk7CitpbXBvcnRGcm9tVjMoJ21vZGVscy9jb21t
aXQtbG9nLmpzJywgJ0NvbW1pdExvZycpOworaW1wb3J0RnJvbVYzKCdtb2RlbHMvbWVhc3VyZW1l
bnQtYWRhcHRvci5qcycsICdNZWFzdXJlbWVudEFkYXB0b3InKTsKK2ltcG9ydEZyb21WMygnbW9k
ZWxzL21lYXN1cmVtZW50LWNsdXN0ZXIuanMnLCAnTWVhc3VyZW1lbnRDbHVzdGVyJyk7CitpbXBv
cnRGcm9tVjMoJ21vZGVscy9tZWFzdXJlbWVudC1zZXQuanMnLCAnTWVhc3VyZW1lbnRTZXQnKTsK
K2ltcG9ydEZyb21WMygnbW9kZWxzL21ldHJpYy5qcycsICdNZXRyaWMnKTsKK2ltcG9ydEZyb21W
MygnbW9kZWxzL3BsYXRmb3JtLmpzJywgJ1BsYXRmb3JtJyk7CitpbXBvcnRGcm9tVjMoJ21vZGVs
cy9yZXBvc2l0b3J5LmpzJywgJ1JlcG9zaXRvcnknKTsKK2ltcG9ydEZyb21WMygnbW9kZWxzL3Jv
b3Qtc2V0LmpzJywgJ01lYXN1cmVtZW50Um9vdFNldCcpOworaW1wb3J0RnJvbVYzKCdtb2RlbHMv
cm9vdC1zZXQuanMnLCAnUm9vdFNldCcpOworaW1wb3J0RnJvbVYzKCdtb2RlbHMvdGVzdC5qcycs
ICdUZXN0Jyk7CitpbXBvcnRGcm9tVjMoJ21vZGVscy90ZXN0LWdyb3VwLmpzJywgJ1Rlc3RHcm91
cCcpOworCitpbXBvcnRGcm9tVjMoJ2luc3RydW1lbnRhdGlvbi5qcycsICdJbnN0cnVtZW50YXRp
b24nKTsKKworZ2xvYmFsLlN0YXRpc3RpY3MgPSByZXF1aXJlKCcuLi8uLi9wdWJsaWMvc2hhcmVk
L3N0YXRpc3RpY3MuanMnKTsKKworYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7CisgICAgQW5hbHlz
aXNUYXNrLl9mZXRjaEFsbFByb21pc2UgPSBudWxsOworICAgIEFuYWx5c2lzVGFzay5jbGVhclN0
YXRpY01hcCgpOworICAgIENvbW1pdExvZy5jbGVhclN0YXRpY01hcCgpOworICAgIFJvb3RTZXQu
Y2xlYXJTdGF0aWNNYXAoKTsKKyAgICBUZXN0R3JvdXAuY2xlYXJTdGF0aWNNYXAoKTsKKyAgICBC
dWlsZFJlcXVlc3QuY2xlYXJTdGF0aWNNYXAoKTsKKworICAgIGdsb2JhbC5vc3ggPSBSZXBvc2l0
b3J5LmVuc3VyZVNpbmdsZXRvbig5LCB7bmFtZTogJ09TIFgnfSk7CisgICAgZ2xvYmFsLndlYmtp
dCA9IFJlcG9zaXRvcnkuZW5zdXJlU2luZ2xldG9uKDExLCB7bmFtZTogJ1dlYktpdCcsIHVybDog
J2h0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LyQxJ30pOworICAgIGdsb2JhbC5idWls
ZGVyID0gbmV3IEJ1aWxkZXIoMTc2LCB7bmFtZTogJ1dlYktpdCBQZXJmIEJ1aWxkZXInLCBidWls
ZFVybDogJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzLyRidWlsZGVyTmFtZS8kYnVp
bGROdW1iZXInfSk7CisKKyAgICBnbG9iYWwuc29tZVRlc3QgPSBUZXN0LmVuc3VyZVNpbmdsZXRv
bigxOTI4LCB7bmFtZTogJ1NvbWUgdGVzdCd9KTsKKyAgICBnbG9iYWwuc29tZU1ldHJpYyA9IE1l
dHJpYy5lbnN1cmVTaW5nbGV0b24oMjg4NCwge25hbWU6ICdTb21lIG1ldHJpYycsIHRlc3Q6IHNv
bWVUZXN0fSk7CisgICAgZ2xvYmFsLnNvbWVQbGF0Zm9ybSA9IFBsYXRmb3JtLmVuc3VyZVNpbmds
ZXRvbig2NSwge25hbWU6ICdTb21lIHBsYXRmb3JtJywgbWV0cmljczogW3NvbWVNZXRyaWNdfSk7
Cit9KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Jlc291cmNl
cy9tb2NrLXYzLW1vZGVscy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvdW5pdC10ZXN0cy9yZXNvdXJjZXMvbW9jay12My1tb2RlbHMuanMJKHdvcmtpbmcgY29weSkK
KysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Jlc291cmNlcy9tb2NrLXYz
LW1vZGVscy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzNCArMSw1IEBACiAndXNlIHN0cmljdCc7
CiAKLWZ1bmN0aW9uIGltcG9ydEZyb21WMyhmaWxlLCBuYW1lKSB7Ci0gICAgY29uc3QgbW9kZWxz
RGlyZWN0b3J5ID0gJy4uLy4uL3B1YmxpYy92My8nOwotCi0gICAgZ2xvYmFsW25hbWVdID0gcmVx
dWlyZShtb2RlbHNEaXJlY3RvcnkgKyBmaWxlKVtuYW1lXTsKLX0KLQotaW1wb3J0RnJvbVYzKCdt
b2RlbHMvZGF0YS1tb2RlbC5qcycsICdEYXRhTW9kZWxPYmplY3QnKTsKLWltcG9ydEZyb21WMygn
bW9kZWxzL2RhdGEtbW9kZWwuanMnLCAnTGFiZWxlZE9iamVjdCcpOwotCi1pbXBvcnRGcm9tVjMo
J21vZGVscy9hbmFseXNpcy10YXNrLmpzJywgJ0FuYWx5c2lzVGFzaycpOwotaW1wb3J0RnJvbVYz
KCdtb2RlbHMvYnVpbGQtcmVxdWVzdC5qcycsICdCdWlsZFJlcXVlc3QnKTsKLWltcG9ydEZyb21W
MygnbW9kZWxzL2J1aWxkZXIuanMnLCAnQnVpbGQnKTsKLWltcG9ydEZyb21WMygnbW9kZWxzL2J1
aWxkZXIuanMnLCAnQnVpbGRlcicpOwotaW1wb3J0RnJvbVYzKCdtb2RlbHMvY29tbWl0LWxvZy5q
cycsICdDb21taXRMb2cnKTsKLWltcG9ydEZyb21WMygnbW9kZWxzL21lYXN1cmVtZW50LWFkYXB0
b3IuanMnLCAnTWVhc3VyZW1lbnRBZGFwdG9yJyk7Ci1pbXBvcnRGcm9tVjMoJ21vZGVscy9tZWFz
dXJlbWVudC1jbHVzdGVyLmpzJywgJ01lYXN1cmVtZW50Q2x1c3RlcicpOwotaW1wb3J0RnJvbVYz
KCdtb2RlbHMvbWVhc3VyZW1lbnQtc2V0LmpzJywgJ01lYXN1cmVtZW50U2V0Jyk7Ci1pbXBvcnRG
cm9tVjMoJ21vZGVscy9tZXRyaWMuanMnLCAnTWV0cmljJyk7Ci1pbXBvcnRGcm9tVjMoJ21vZGVs
cy9wbGF0Zm9ybS5qcycsICdQbGF0Zm9ybScpOwotaW1wb3J0RnJvbVYzKCdtb2RlbHMvcmVwb3Np
dG9yeS5qcycsICdSZXBvc2l0b3J5Jyk7Ci1pbXBvcnRGcm9tVjMoJ21vZGVscy9yb290LXNldC5q
cycsICdNZWFzdXJlbWVudFJvb3RTZXQnKTsKLWltcG9ydEZyb21WMygnbW9kZWxzL3Jvb3Qtc2V0
LmpzJywgJ1Jvb3RTZXQnKTsKLWltcG9ydEZyb21WMygnbW9kZWxzL3Rlc3QuanMnLCAnVGVzdCcp
OwotaW1wb3J0RnJvbVYzKCdtb2RlbHMvdGVzdC1ncm91cC5qcycsICdUZXN0R3JvdXAnKTsKLQot
aW1wb3J0RnJvbVYzKCdpbnN0cnVtZW50YXRpb24uanMnLCAnSW5zdHJ1bWVudGF0aW9uJyk7Ci0K
LWdsb2JhbC5TdGF0aXN0aWNzID0gcmVxdWlyZSgnLi4vLi4vcHVibGljL3NoYXJlZC9zdGF0aXN0
aWNzLmpzJyk7Ci0KIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewogICAgIEFuYWx5c2lzVGFzay5f
ZmV0Y2hBbGxQcm9taXNlID0gbnVsbDsKICAgICBBbmFseXNpc1Rhc2suY2xlYXJTdGF0aWNNYXAo
KTsKQEAgLTM4LDcgKzksOSBAQCBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKICAgICBCdWlsZFJl
cXVlc3QuY2xlYXJTdGF0aWNNYXAoKTsKIAogICAgIGdsb2JhbC5vc3ggPSBSZXBvc2l0b3J5LmVu
c3VyZVNpbmdsZXRvbig5LCB7bmFtZTogJ09TIFgnfSk7CisgICAgZ2xvYmFsLmlvcyA9IFJlcG9z
aXRvcnkuZW5zdXJlU2luZ2xldG9uKDIyLCB7bmFtZTogJ2lPUyd9KTsKICAgICBnbG9iYWwud2Vi
a2l0ID0gUmVwb3NpdG9yeS5lbnN1cmVTaW5nbGV0b24oMTEsIHtuYW1lOiAnV2ViS2l0JywgdXJs
OiAnaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvJDEnfSk7CisgICAgZ2xvYmFsLnNo
YXJlZFJlcG9zaXRvcnkgPSBSZXBvc2l0b3J5LmVuc3VyZVNpbmdsZXRvbigxNiwge25hbWU6ICdT
aGFyZWQnfSk7CiAgICAgZ2xvYmFsLmJ1aWxkZXIgPSBuZXcgQnVpbGRlcigxNzYsIHtuYW1lOiAn
V2ViS2l0IFBlcmYgQnVpbGRlcicsIGJ1aWxkVXJsOiAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcv
YnVpbGRlcnMvJGJ1aWxkZXJOYW1lLyRidWlsZE51bWJlcid9KTsKIAogICAgIGdsb2JhbC5zb21l
VGVzdCA9IFRlc3QuZW5zdXJlU2luZ2xldG9uKDE5MjgsIHtuYW1lOiAnU29tZSB0ZXN0J30pOwo=
</data>
<flag name="review"
          id="299199"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>