<?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>168962</bug_id>
          
          <creation_ts>2017-02-27 22:36:18 -0800</creation_ts>
          <short_desc>Add the ability to report a commit with sub-commits.</short_desc>
          <delta_ts>2017-03-13 02:10:37 -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>dewei_zhu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1281722</commentid>
    <comment_count>0</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2017-02-27 22:36:18 -0800</bug_when>
    <thetext>Add the ability to report a commit with sub-commits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281724</commentid>
    <comment_count>1</comment_count>
      <attachid>302923</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-02-27 22:40:53 -0800</bug_when>
    <thetext>Created attachment 302923
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281729</commentid>
    <comment_count>2</comment_count>
      <attachid>302923</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-02-27 23:36:14 -0800</bug_when>
    <thetext>Comment on attachment 302923
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:9
&gt; +        On existing production server, run &apos;&apos;&apos;

You should probably use ``` instead.

&gt; Websites/perf.webkit.org/ChangeLog:11
&gt; +                commit_owner integer NOT NULL REFERENCES commits ON DELETE CASCADE,

We should rename repository_parent to repository_owner if we&apos;re going with owner/owned.

&gt; Websites/perf.webkit.org/public/api/report-commits.php:5
&gt; +function get_repository_id($repository_name, $parent_repoistory_id, $db) {

$db must be the first argument.
Also { should appear on the following line on its own: https://webkit.org/code-style-guidelines/#braces
and no get_ prefix: https://webkit.org/code-style-guidelines/#names-out-argument

We should probably call this ensure_repository_id or select_or_insert_repository_row.

&gt; Websites/perf.webkit.org/public/api/report-commits.php:10
&gt; +    $repository_id = $db-&gt;select_or_insert_row(&apos;repositories&apos;, &apos;repository&apos;, $repository_info);

This would happily insert (WebKit, non-null) value yet that would break
ReportProcessor::resolve_build_id, ManifestGenerator::repositories (we should include all repositories there with parent repository set),
and CommitLogFetcher::repository_id_from_name (should only find top-level repository).

&gt; Websites/perf.webkit.org/public/api/report-commits.php:18
&gt; +function process_one_commit($commit_info, $repository_id, $owner_commit_id, $db) {

We should probably call insert_commit.
Again, $db should be the first argument.

&gt; Websites/perf.webkit.org/public/api/report-commits.php:59
&gt; +        $db-&gt;insert_row(&apos;commit_ownerships&apos;, &apos;&apos;, array(&apos;commit_owner&apos; =&gt; $owner_commit_id, &apos;commit_ownee&apos; =&gt; $inserted_commit_id), NULL);

Just pass in &quot;commit&quot; as the prefix.

&gt; Websites/perf.webkit.org/server-tests/api-report-commits-tests.js:90
&gt; +                    &quot;WebKit&quot;: {

We should add a test case where WebKit is a non-sub repository,
and make sure submitting it as a sub commit would either fail or insert a new repository.

&gt; Websites/perf.webkit.org/server-tests/api-report-commits-tests.js:92
&gt; +                        &quot;time&quot;: &quot;2013-02-06T08:55:20.9Z&quot;,

I think we should enforce that sub-commit never specifies commit time
because it makes no sense for a sub-commit to have a time and its parent to not have one or them to be different.
I think it&apos;s best to forbid altogether for simplify for now.

&gt; Websites/perf.webkit.org/server-tests/api-report-commits-tests.js:198
&gt; +            const osxCommit = find_first_matching(commits, {&apos;revision&apos;: &apos;Sierra16D32&apos;});

This would not catch this particular revision getting inserted into a wrong repository.
It&apos;s probably better if we manually fetched repository list, and fetch commit for each instead.

Something like this would catch more bugs:
(() =&gt;  {
    return Promise.all[db.selectAll(&apos;repositories&apos;), db.selectAll(&apos;commits&apos;)];
}).then((result) =&gt; {
    const repositories = result[0];
    const repositoryNames = repositories.map((row) =&gt; row[&apos;repository_name&apos;]).sort();
    asset.deepEqual(repositoryNames, [&quot;WebKit&quot;, ...]);

    const repositoryIdByName = {};

    const commitByRepository = {};
    for (let commit of result[1]) {
        const repsoitoryId = commit[&apos;commit_repository&apos;];
        assert(!(repsoitoryId in commitByRepository));
        commitByRepository[repsoitoryId] = commit;
    }

    assert(repsoitoryId[repositoryIdByName[&quot;WebKit&quot;]][&apos;commit_revision&apos;], &apos;1235&apos;);
});</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283403</commentid>
    <comment_count>3</comment_count>
      <attachid>303388</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-03-03 23:46:52 -0800</bug_when>
    <thetext>Created attachment 303388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283415</commentid>
    <comment_count>4</comment_count>
      <attachid>303388</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-04 00:25:32 -0800</bug_when>
    <thetext>Comment on attachment 303388
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:18
&gt; +            CREATE UNIQUE INDEX repository_name_unique_index ON repositories (repository_name) WHERE repository_owner IS NOT NULL;

Please also fix this to say &quot;IS NULL&quot;.

&gt; Websites/perf.webkit.org/init-database.sql:48
&gt; +WHERE repository_owner IS NOT NULL;

Nit: indent WHERE by 4 spaces.

&gt; Websites/perf.webkit.org/init-database.sql:50
&gt; +WHERE repository_owner IS NOT NULL;

Ditto. This should be WHERE repository_owner IS NULL;

&gt; Websites/perf.webkit.org/public/api/report-commits.php:5
&gt; -function main($post_data) {
&gt; +function insert_commit($db, $commit_info, $repository_id, $owner_commit_id)

Please put this after main before calling main so that they appear in the order of execution.

&gt; Websites/perf.webkit.org/public/api/report-commits.php:76
&gt; +        $owner_repository_id = $db-&gt;select_or_insert_repository_row($commit_info[&apos;repository&apos;], NULL);
&gt; +        if (!$owner_repository_id) {

I think we should keep this repository_id. It&apos;s confusing to talk about owner_repository_id when we&apos;re in the midst of inserting the owner itself.

&gt; Websites/perf.webkit.org/public/api/report-commits.php:80
&gt; +        $owner_commit_id = insert_commit($db, $commit_info, $owner_repository_id, NULL);

Ditto about keeping this just commit_id.

&gt; Websites/perf.webkit.org/public/include/db.php:190
&gt; +    // FIXME: Should improve _select_update_or_insert_row to handle the NULL column case.

Nit: there should be a blank line above this comment.

&gt; Websites/perf.webkit.org/public/include/db.php:193
&gt; +        $condition = $repository_owner_id != NULL ? &apos;(repository_name, repository_owner) = ($1, $2)&apos; : &apos;repository_name = $1 AND repository_owner IS NULL&apos;;

I think it&apos;s cleaner to rewrite this function where we just have two set of queries for when repository_owner_id is null and when it&apos;s not.

&gt; Websites/perf.webkit.org/public/include/db.php:204
&gt; +
&gt;  

Nit: two blank lines here.

&gt; Websites/perf.webkit.org/server-tests/admin-reprocess-report-tests.js:42
&gt; +                }

Just place this curly bracket at the end of the pervious line.

&gt; Websites/perf.webkit.org/server-tests/admin-reprocess-report-tests.js:56
&gt; +            assert.equal(repositories.length, 2);

You should assert that the only commit that you can get is assigned to the second repository we just inserted.

&gt; Websites/perf.webkit.org/server-tests/api-manifest.js:315
&gt; +            let webkit1 = Repository.findById(101);

Why don&apos;t we call this osWebkit or instead of webkit1?

&gt; Websites/perf.webkit.org/server-tests/api-report-commits-tests.js:81
&gt; +    const systemVersionCommitWithSubcommits = {

Please move this to where it&apos;s used.

&gt; Websites/perf.webkit.org/server-tests/api-report-commits-tests.js:180
&gt; +    const sameRepositoryNameInSubCommitAndMajorCommit = {

It&apos;s better to have this right next to the test.

&gt; Websites/perf.webkit.org/server-tests/api-report-commits-tests.js:419
&gt; +    it(&quot;should distinguish between repository with same name but different owner&quot;, function (done) {

Nit: repositories with the asme name but with a different owner.

&gt; Websites/perf.webkit.org/server-tests/api-report-commits-tests.js:429
&gt; +            let webkitRepository0 = result[0];
&gt; +            let webkitRepository1 = result[1];

I think we should call one of the osWebKit or something.

&gt; Websites/perf.webkit.org/server-tests/api-report-commits-tests.js:433
&gt; +            done();

You should verify that each commit is associated with the right repositories.

&gt; Websites/perf.webkit.org/server-tests/api-report-commits-tests.js:444
&gt; +                db.selectRows(&apos;commits&apos;, {&apos;message&apos;: &apos;WebKit Commit&apos;}),

We should get the list of all commits for WebKit and verify that we have exactly one commit for WebKit.

&gt; Websites/perf.webkit.org/server-tests/api-report-commits-tests.js:457
&gt; +            const osxCommit = result[0][0];

Move each of these right next to where length is asserted so that when one of them fails, it&apos;s clear which one it is.

&gt; Websites/perf.webkit.org/server-tests/api-report-commits-tests.js:464
&gt; +            assert.notEqual(osxCommit, null);

Also move these next to where the variable is declared so that they&apos;re next to each other.

&gt; Websites/perf.webkit.org/server-tests/api-report-commits-tests.js:480
&gt; +            const ownerCommitForWebKitCommit = result[0][0];

Ditto.

&gt; Websites/perf.webkit.org/server-tests/api-report-commits-tests.js:496
&gt; +                db.selectRows(&apos;commits&apos;, {&apos;message&apos;: &apos;WebKit Commit&apos;}),

Please check the number of commits here again.

&gt; Websites/perf.webkit.org/server-tests/api-report-commits-tests.js:568
&gt; +            assert.equal(commits.length, 1);

Please assert that the one commit we have is for the OS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287099</commentid>
    <comment_count>5</comment_count>
      <attachid>304239</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2017-03-13 01:17:35 -0700</bug_when>
    <thetext>Created attachment 304239
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287113</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 02:10:07 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 304239:

media/track/track-in-band-style.html bug 153143 (authors: dgorbik@apple.com, eric.carlson@apple.com, and jer.noble@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287114</commentid>
    <comment_count>7</comment_count>
      <attachid>304239</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 02:10:32 -0700</bug_when>
    <thetext>Comment on attachment 304239
Patch for landing

Clearing flags on attachment: 304239

Committed r213788: &lt;http://trac.webkit.org/changeset/213788&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287115</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 02:10:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302923</attachid>
            <date>2017-02-27 22:40:53 -0800</date>
            <delta_ts>2017-03-03 23:46:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168962-20170227223758.patch</filename>
            <type>text/plain</type>
            <size>19779</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMTIyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAzYjc1ZDk5ZmQzOTI4ZDczNzNlZjczNGQwMDMyYTlkZWVhMzM4YTBlLi5jOWIzZWFkYjcx
NzA5ZDdlMDlkNzVhMWVmNjQ2NjljYjU3ZWMxNDJhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNy0wMi0yNyAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gcmVwb3J0IGEgY29tbWl0
IHdpdGggc3ViLWNvbW1pdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjg5NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgJ2NvbW1pdF9vd25lcnNoaXBzJyB3aGljaCByZWNvcmRzIG93
bmVyc2hpcCBiZXR3ZWVuIGNvbW1pdHMuCisgICAgICAgIE9uIGV4aXN0aW5nIHByb2R1Y3Rpb24g
c2VydmVyLCBydW4gJycnCisgICAgICAgICAgICBDUkVBVEUgVEFCTEUgY29tbWl0X293bmVyc2hp
cHMgKAorICAgICAgICAgICAgICAgIGNvbW1pdF9vd25lciBpbnRlZ2VyIE5PVCBOVUxMIFJFRkVS
RU5DRVMgY29tbWl0cyBPTiBERUxFVEUgQ0FTQ0FERSwKKyAgICAgICAgICAgICAgICBjb21taXRf
b3duZWUgaW50ZWdlciBOT1QgTlVMTCBSRUZFUkVOQ0VTIGNvbW1pdHMgT04gREVMRVRFIENBU0NB
REUsCisgICAgICAgICAgICAgICAgUFJJTUFSWSBLRVkgKGNvbW1pdF9vd25lciwgY29tbWl0X293
bmVlKQorICAgICAgICAgICAgKTsnJycgdG8gdXBkYXRlIGRhdGFiYXNlLgorICAgICAgICBBZGQg
dW5pdC10ZXN0cyB0byBjb3ZlciB0aGlzIGNoYW5nZS4KKworICAgICAgICAqIGluaXQtZGF0YWJh
c2Uuc3FsOgorICAgICAgICAqIHB1YmxpYy9hcGkvcmVwb3J0LWNvbW1pdHMucGhwOgorICAgICAg
ICAqIHNlcnZlci10ZXN0cy9hcGktcmVwb3J0LWNvbW1pdHMtdGVzdHMuanM6CisgICAgICAgIChm
aW5kX2ZpcnN0X21hdGNoaW5nKToKKyAgICAgICAgKGFkZFNsYXZlRm9yUmVwb3J0LnN5c3RlbVZl
cnNpb25Db21taXRXaXRoU3ViY29tbWl0cy50aGVuKToKKyAgICAgICAgKHRoZW4pOgorICAgICAg
ICAoYWRkU2xhdmVGb3JSZXBvcnQubXVsdGlwbGVTeXN0ZW1WZXJzaW9uQ29tbWl0c1dpdGhTdWJj
b21taXRzLnRoZW4pOgorICAgICAgICAoYWRkU2xhdmVGb3JSZXBvcnQuc3lzdGVtVmVyc2lvbkNv
bW1pdFdpdGhFbXB0eVN1YmNvbW1pdHMudGhlbik6CisKIDIwMTctMDItMjcgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHRlc3RzIGFmdGVyIHIyMTMxMTkg
YW5kIHIyMTMxMjAuCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1k
YXRhYmFzZS5zcWwgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwK
aW5kZXggNWEzZGZjZjZjNTg0MzI1NzE5NGQ2OGM0NmVhMzNhYTg4YzVhZjhiYS4uYjVmNTgxZWFm
OTkwNzVkZTNlZTBiMzVjZDFjODc4ZDZjNzA3YjlmYiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9pbml0LWRhdGFiYXNlLnNxbApAQCAtNyw2ICs3LDcgQEAgRFJPUCBUQUJMRSBJRiBFWElT
VFMgYnVpbGRzIENBU0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBjb21taXR0ZXJzIENBU0NB
REU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBjb21taXRzIENBU0NBREU7CiBEUk9QIFRBQkxFIElG
IEVYSVNUUyBidWlsZF9jb21taXRzIENBU0NBREU7CitEUk9QIFRBQkxFIElGIEVYSVNUUyBjb21t
aXRfb3duZXJzaGlwcyBDQVNDQURFOwogRFJPUCBUQUJMRSBJRiBFWElTVFMgYnVpbGRfc2xhdmVz
IENBU0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBidWlsZGVycyBDQVNDQURFOwogRFJPUCBU
QUJMRSBJRiBFWElTVFMgcmVwb3NpdG9yaWVzIENBU0NBREU7CkBAIC05OCw2ICs5OSwxMiBAQCBD
UkVBVEUgVEFCTEUgY29tbWl0cyAoCiBDUkVBVEUgSU5ERVggY29tbWl0X3RpbWVfaW5kZXggT04g
Y29tbWl0cyhjb21taXRfdGltZSk7CiBDUkVBVEUgSU5ERVggY29tbWl0X29yZGVyX2luZGV4IE9O
IGNvbW1pdHMoY29tbWl0X29yZGVyKTsKIAorQ1JFQVRFIFRBQkxFIGNvbW1pdF9vd25lcnNoaXBz
ICgKKyAgICBjb21taXRfb3duZXIgaW50ZWdlciBOT1QgTlVMTCBSRUZFUkVOQ0VTIGNvbW1pdHMg
T04gREVMRVRFIENBU0NBREUsCisgICAgY29tbWl0X293bmVlIGludGVnZXIgTk9UIE5VTEwgUkVG
RVJFTkNFUyBjb21taXRzIE9OIERFTEVURSBDQVNDQURFLAorICAgIFBSSU1BUlkgS0VZIChjb21t
aXRfb3duZXIsIGNvbW1pdF9vd25lZSkKKyk7CisKIENSRUFURSBUQUJMRSBidWlsZF9jb21taXRz
ICgKICAgICBjb21taXRfYnVpbGQgaW50ZWdlciBOT1QgTlVMTCBSRUZFUkVOQ0VTIGJ1aWxkcyBP
TiBERUxFVEUgQ0FTQ0FERSwKICAgICBidWlsZF9jb21taXQgaW50ZWdlciBOT1QgTlVMTCBSRUZF
UkVOQ0VTIGNvbW1pdHMgT04gREVMRVRFIENBU0NBREUsCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9yZXBvcnQtY29tbWl0cy5waHAgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9yZXBvcnQtY29tbWl0cy5waHAKaW5kZXggZmIyY2Fi
NDBkMWIzOWRlNTA2MTE1ODIzYzcyYmZmZGEwNDEyMGViYS4uM2VhZGI0NDgwMWZmNzc1ZTYxMjI0
NTg5M2M5NGQ0NWVmMzM3NDA2ZCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9hcGkvcmVwb3J0LWNvbW1pdHMucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvYXBpL3JlcG9ydC1jb21taXRzLnBocApAQCAtMiw2ICsyLDY0IEBACiAKIHJl
cXVpcmUoJy4uL2luY2x1ZGUvanNvbi1oZWFkZXIucGhwJyk7CiAKK2Z1bmN0aW9uIGdldF9yZXBv
c2l0b3J5X2lkKCRyZXBvc2l0b3J5X25hbWUsICRwYXJlbnRfcmVwb2lzdG9yeV9pZCwgJGRiKSB7
CisgICAgJHJlcG9zaXRvcnlfaW5mbyA9IGFycmF5KCduYW1lJyA9PiAkcmVwb3NpdG9yeV9uYW1l
KTsKKyAgICBpZiAoJHBhcmVudF9yZXBvaXN0b3J5X2lkKQorICAgICAgICAkcmVwb3NpdG9yeV9p
bmZvWydwYXJlbnQnXSA9ICRwYXJlbnRfcmVwb2lzdG9yeV9pZDsKKworICAgICRyZXBvc2l0b3J5
X2lkID0gJGRiLT5zZWxlY3Rfb3JfaW5zZXJ0X3JvdygncmVwb3NpdG9yaWVzJywgJ3JlcG9zaXRv
cnknLCAkcmVwb3NpdG9yeV9pbmZvKTsKKyAgICBpZiAoISRyZXBvc2l0b3J5X2lkKSB7CisgICAg
ICAgICRkYi0+cm9sbGJhY2tfdHJhbnNhY3Rpb24oKTsKKyAgICAgICAgZXhpdF93aXRoX2Vycm9y
KCdGYWlsZWRUb0luc2VydFJlcG9zaXRvcnknLCBhcnJheSgncmVwb3NpdG9yeV9uYW1lJyA9PiAk
cmVwb3NpdG9yeV9uYW1lKSk7CisgICAgfQorICAgIHJldHVybiAkcmVwb3NpdG9yeV9pZDsKK30K
KworZnVuY3Rpb24gcHJvY2Vzc19vbmVfY29tbWl0KCRjb21taXRfaW5mbywgJHJlcG9zaXRvcnlf
aWQsICRvd25lcl9jb21taXRfaWQsICRkYikgeworICAgICRhdXRob3IgPSBhcnJheV9nZXQoJGNv
bW1pdF9pbmZvLCAnYXV0aG9yJyk7CisgICAgJGNvbW1pdHRlcl9pZCA9IE5VTEw7CisgICAgaWYg
KCRhdXRob3IpIHsKKyAgICAgICAgJGFjY291bnQgPSBhcnJheV9nZXQoJGF1dGhvciwgJ2FjY291
bnQnKTsKKyAgICAgICAgJGNvbW1pdHRlcl9xdWVyeSA9IGFycmF5KCdyZXBvc2l0b3J5JyA9PiAk
cmVwb3NpdG9yeV9pZCwgJ2FjY291bnQnID0+ICRhY2NvdW50KTsKKyAgICAgICAgJGNvbW1pdHRl
cl9kYXRhID0gJGNvbW1pdHRlcl9xdWVyeTsKKyAgICAgICAgJG5hbWUgPSBhcnJheV9nZXQoJGF1
dGhvciwgJ25hbWUnKTsKKyAgICAgICAgaWYgKCRuYW1lKQorICAgICAgICAgICAgJGNvbW1pdHRl
cl9kYXRhWyduYW1lJ10gPSAkbmFtZTsKKyAgICAgICAgJGNvbW1pdHRlcl9pZCA9ICRkYi0+dXBk
YXRlX29yX2luc2VydF9yb3coJ2NvbW1pdHRlcnMnLCAnY29tbWl0dGVyJywgJGNvbW1pdHRlcl9x
dWVyeSwgJGNvbW1pdHRlcl9kYXRhKTsKKyAgICAgICAgaWYgKCEkY29tbWl0dGVyX2lkKSB7Cisg
ICAgICAgICAgICAkZGItPnJvbGxiYWNrX3RyYW5zYWN0aW9uKCk7CisgICAgICAgICAgICBleGl0
X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvSW5zZXJ0Q29tbWl0dGVyJywgYXJyYXkoJ2NvbW1pdHRlcicg
PT4gJGNvbW1pdHRlcl9kYXRhKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAkcHJldmlvdXNf
Y29tbWl0X3JldmlzaW9uID0gYXJyYXlfZ2V0KCRjb21taXRfaW5mbywgJ3ByZXZpb3VzQ29tbWl0
Jyk7CisgICAgJHByZXZpb3VzX2NvbW1pdF9pZCA9IE5VTEw7CisgICAgaWYgKCRwcmV2aW91c19j
b21taXRfcmV2aXNpb24pIHsKKyAgICAgICAgJHByZXZpb3VzX2NvbW1pdCA9ICRkYi0+c2VsZWN0
X2ZpcnN0X3JvdygnY29tbWl0cycsICdjb21taXQnLCBhcnJheSgncmVwb3NpdG9yeScgPT4gJHJl
cG9zaXRvcnlfaWQsICdyZXZpc2lvbicgPT4gJHByZXZpb3VzX2NvbW1pdF9yZXZpc2lvbikpOwor
ICAgICAgICBpZiAoISRwcmV2aW91c19jb21taXQpIHsKKyAgICAgICAgICAgICRkYi0+cm9sbGJh
Y2tfdHJhbnNhY3Rpb24oKTsKKyAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9G
aW5kUHJldmlvdXNDb21taXQnLCBhcnJheSgnY29tbWl0JyA9PiAkY29tbWl0X2luZm8pKTsKKyAg
ICAgICAgfQorICAgICAgICAkcHJldmlvdXNfY29tbWl0X2lkID0gJHByZXZpb3VzX2NvbW1pdFsn
Y29tbWl0X2lkJ107CisgICAgfQorCisgICAgJGRhdGEgPSBhcnJheSgKKyAgICAgICAgJ3JlcG9z
aXRvcnknID0+ICRyZXBvc2l0b3J5X2lkLAorICAgICAgICAncmV2aXNpb24nID0+ICRjb21taXRf
aW5mb1sncmV2aXNpb24nXSwKKyAgICAgICAgJ3ByZXZpb3VzX2NvbW1pdCcgPT4gJHByZXZpb3Vz
X2NvbW1pdF9pZCwKKyAgICAgICAgJ29yZGVyJyA9PiBhcnJheV9nZXQoJGNvbW1pdF9pbmZvLCAn
b3JkZXInKSwKKyAgICAgICAgJ3RpbWUnID0+IGFycmF5X2dldCgkY29tbWl0X2luZm8sICd0aW1l
JyksCisgICAgICAgICdjb21taXR0ZXInID0+ICRjb21taXR0ZXJfaWQsCisgICAgICAgICdtZXNz
YWdlJyA9PiBhcnJheV9nZXQoJGNvbW1pdF9pbmZvLCAnbWVzc2FnZScpLAorICAgICAgICAncmVw
b3J0ZWQnID0+IHRydWUsCisgICAgKTsKKyAgICAkaW5zZXJ0ZWRfY29tbWl0X2lkID0gJGRiLT51
cGRhdGVfb3JfaW5zZXJ0X3JvdygnY29tbWl0cycsICdjb21taXQnLCBhcnJheSgncmVwb3NpdG9y
eScgPT4gJHJlcG9zaXRvcnlfaWQsICdyZXZpc2lvbicgPT4gJGRhdGFbJ3JldmlzaW9uJ10pLCAk
ZGF0YSk7CisKKyAgICBpZiAoJG93bmVyX2NvbW1pdF9pZCkKKyAgICAgICAgJGRiLT5pbnNlcnRf
cm93KCdjb21taXRfb3duZXJzaGlwcycsICcnLCBhcnJheSgnY29tbWl0X293bmVyJyA9PiAkb3du
ZXJfY29tbWl0X2lkLCAnY29tbWl0X293bmVlJyA9PiAkaW5zZXJ0ZWRfY29tbWl0X2lkKSwgTlVM
TCk7CisgICAgcmV0dXJuICRpbnNlcnRlZF9jb21taXRfaWQ7Cit9CisKIGZ1bmN0aW9uIG1haW4o
JHBvc3RfZGF0YSkgewogICAgICRkYiA9IG5ldyBEYXRhYmFzZTsKICAgICBpZiAoISRkYi0+Y29u
bmVjdCgpKQpAQCAtMjUsNTAgKzgzLDE1IEBAIGZ1bmN0aW9uIG1haW4oJHBvc3RfZGF0YSkgewog
CiAgICAgJGRiLT5iZWdpbl90cmFuc2FjdGlvbigpOwogICAgIGZvcmVhY2ggKCRjb21taXRzIGFz
ICRjb21taXRfaW5mbykgewotICAgICAgICAkcmVwb3NpdG9yeV9pZCA9ICRkYi0+c2VsZWN0X29y
X2luc2VydF9yb3coJ3JlcG9zaXRvcmllcycsICdyZXBvc2l0b3J5JywgYXJyYXkoJ25hbWUnID0+
ICRjb21taXRfaW5mb1sncmVwb3NpdG9yeSddKSk7Ci0gICAgICAgIGlmICghJHJlcG9zaXRvcnlf
aWQpIHsKLSAgICAgICAgICAgICRkYi0+cm9sbGJhY2tfdHJhbnNhY3Rpb24oKTsKLSAgICAgICAg
ICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9JbnNlcnRSZXBvc2l0b3J5JywgYXJyYXkoJ2Nv
bW1pdCcgPT4gJGNvbW1pdF9pbmZvKSk7Ci0gICAgICAgIH0KKyAgICAgICAgJG93bmVyX3JlcG9z
aXRvcnlfaWQgPSBnZXRfcmVwb3NpdG9yeV9pZCgkY29tbWl0X2luZm9bJ3JlcG9zaXRvcnknXSwg
TlVMTCwgJGRiKTsKKyAgICAgICAgJG93bmVyX2NvbW1pdF9pZCA9IHByb2Nlc3Nfb25lX2NvbW1p
dCgkY29tbWl0X2luZm8sICRvd25lcl9yZXBvc2l0b3J5X2lkLCBOVUxMLCAkZGIpOworICAgICAg
ICBpZiAoIWFycmF5X2tleV9leGlzdHMoJ3N1YkNvbW1pdHMnLCAkY29tbWl0X2luZm8pKQorICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgJGF1dGhvciA9IGFycmF5X2dldCgkY29tbWl0
X2luZm8sICdhdXRob3InKTsKLSAgICAgICAgJGNvbW1pdHRlcl9pZCA9IE5VTEw7Ci0gICAgICAg
IGlmICgkYXV0aG9yKSB7Ci0gICAgICAgICAgICAkYWNjb3VudCA9IGFycmF5X2dldCgkYXV0aG9y
LCAnYWNjb3VudCcpOwotICAgICAgICAgICAgJGNvbW1pdHRlcl9xdWVyeSA9IGFycmF5KCdyZXBv
c2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ2FjY291bnQnID0+ICRhY2NvdW50KTsKLSAgICAg
ICAgICAgICRjb21taXR0ZXJfZGF0YSA9ICRjb21taXR0ZXJfcXVlcnk7Ci0gICAgICAgICAgICAk
bmFtZSA9IGFycmF5X2dldCgkYXV0aG9yLCAnbmFtZScpOwotICAgICAgICAgICAgaWYgKCRuYW1l
KQotICAgICAgICAgICAgICAgICRjb21taXR0ZXJfZGF0YVsnbmFtZSddID0gJG5hbWU7Ci0gICAg
ICAgICAgICAkY29tbWl0dGVyX2lkID0gJGRiLT51cGRhdGVfb3JfaW5zZXJ0X3JvdygnY29tbWl0
dGVycycsICdjb21taXR0ZXInLCAkY29tbWl0dGVyX3F1ZXJ5LCAkY29tbWl0dGVyX2RhdGEpOwot
ICAgICAgICAgICAgaWYgKCEkY29tbWl0dGVyX2lkKSB7Ci0gICAgICAgICAgICAgICAgJGRiLT5y
b2xsYmFja190cmFuc2FjdGlvbigpOwotICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcign
RmFpbGVkVG9JbnNlcnRDb21taXR0ZXInLCBhcnJheSgnY29tbWl0dGVyJyA9PiAkY29tbWl0dGVy
X2RhdGEpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgZm9yZWFjaCgkY29tbWl0X2luZm9bJ3N1
YkNvbW1pdHMnXSBhcyAkc3ViX2NvbW1pdF9yZXBvc2l0b3J5X25hbWUgPT4gJHN1Yl9jb21taXRf
aW5mbykgeworICAgICAgICAgICAgJHN1Yl9jb21taXRfcmVwb3NpdG9yeV9pZCA9IGdldF9yZXBv
c2l0b3J5X2lkKCRzdWJfY29tbWl0X3JlcG9zaXRvcnlfbmFtZSwgJG93bmVyX3JlcG9zaXRvcnlf
aWQsICRkYik7CisgICAgICAgICAgICBwcm9jZXNzX29uZV9jb21taXQoJHN1Yl9jb21taXRfaW5m
bywgJHN1Yl9jb21taXRfcmVwb3NpdG9yeV9pZCwgJG93bmVyX2NvbW1pdF9pZCwgJGRiKTsKICAg
ICAgICAgfQotCi0gICAgICAgICRwcmV2aW91c19jb21taXRfcmV2aXNpb24gPSBhcnJheV9nZXQo
JGNvbW1pdF9pbmZvLCAncHJldmlvdXNDb21taXQnKTsKLSAgICAgICAgJHByZXZpb3VzX2NvbW1p
dF9pZCA9IE5VTEw7Ci0gICAgICAgIGlmICgkcHJldmlvdXNfY29tbWl0X3JldmlzaW9uKSB7Ci0g
ICAgICAgICAgICAkcHJldmlvdXNfY29tbWl0ID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdjb21t
aXRzJywgJ2NvbW1pdCcsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ3Jl
dmlzaW9uJyA9PiAkcHJldmlvdXNfY29tbWl0X3JldmlzaW9uKSk7Ci0gICAgICAgICAgICBpZiAo
ISRwcmV2aW91c19jb21taXQpIHsKLSAgICAgICAgICAgICAgICAkZGItPnJvbGxiYWNrX3RyYW5z
YWN0aW9uKCk7Ci0gICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb0ZpbmRQ
cmV2aW91c0NvbW1pdCcsIGFycmF5KCdjb21taXQnID0+ICRjb21taXRfaW5mbykpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgJHByZXZpb3VzX2NvbW1pdF9pZCA9ICRwcmV2aW91c19jb21t
aXRbJ2NvbW1pdF9pZCddOwotICAgICAgICB9Ci0KLSAgICAgICAgJGRhdGEgPSBhcnJheSgKLSAg
ICAgICAgICAgICdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwKLSAgICAgICAgICAgICdy
ZXZpc2lvbicgPT4gJGNvbW1pdF9pbmZvWydyZXZpc2lvbiddLAotICAgICAgICAgICAgJ3ByZXZp
b3VzX2NvbW1pdCcgPT4gJHByZXZpb3VzX2NvbW1pdF9pZCwKLSAgICAgICAgICAgICdvcmRlcicg
PT4gYXJyYXlfZ2V0KCRjb21taXRfaW5mbywgJ29yZGVyJyksCi0gICAgICAgICAgICAndGltZScg
PT4gYXJyYXlfZ2V0KCRjb21taXRfaW5mbywgJ3RpbWUnKSwKLSAgICAgICAgICAgICdjb21taXR0
ZXInID0+ICRjb21taXR0ZXJfaWQsCi0gICAgICAgICAgICAnbWVzc2FnZScgPT4gYXJyYXlfZ2V0
KCRjb21taXRfaW5mbywgJ21lc3NhZ2UnKSwKLSAgICAgICAgICAgICdyZXBvcnRlZCcgPT4gdHJ1
ZSwKLSAgICAgICAgKTsKLSAgICAgICAgJGRiLT51cGRhdGVfb3JfaW5zZXJ0X3JvdygnY29tbWl0
cycsICdjb21taXQnLCBhcnJheSgncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQsICdyZXZp
c2lvbicgPT4gJGRhdGFbJ3JldmlzaW9uJ10pLCAkZGF0YSk7CiAgICAgfQogICAgICRkYi0+Y29t
bWl0X3RyYW5zYWN0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvYXBpLXJlcG9ydC1jb21taXRzLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktcmVwb3J0LWNvbW1pdHMtdGVzdHMuanMKaW5k
ZXggOTNkMWFkOWZhYTMzZGZhNDIyODI1ZWNkMzA1MWEzNzkwNGEwMzY4YS4uZDI0MTM3MjlhODhl
ZDcwMmQwM2RhMmQ5NDhlYzM2ZTdiODliMWIxYiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktcmVwb3J0LWNvbW1pdHMtdGVzdHMuanMKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktcmVwb3J0LWNvbW1pdHMt
dGVzdHMuanMKQEAgLTc4LDYgKzc4LDIxNCBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQtY29tbWl0
cy8iLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIF0KICAgICB9CiAKKyAgICBjb25zdCBzeXN0ZW1W
ZXJzaW9uQ29tbWl0V2l0aFN1YmNvbW1pdHMgPSB7CisgICAgICAgICJzbGF2ZU5hbWUiOiAic29t
ZVNsYXZlIiwKKyAgICAgICAgInNsYXZlUGFzc3dvcmQiOiAic29tZVBhc3N3b3JkIiwKKyAgICAg
ICAgImNvbW1pdHMiOiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgInJlcG9zaXRv
cnkiOiAiT1NYIiwKKyAgICAgICAgICAgICAgICAicmV2aXNpb24iOiAiU2llcnJhMTZEMzIiLAor
ICAgICAgICAgICAgICAgICJvcmRlciI6IDEsCisgICAgICAgICAgICAgICAgInN1YkNvbW1pdHMi
OiB7CisgICAgICAgICAgICAgICAgICAgICJXZWJLaXQiOiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAicmV2aXNpb24iOiAiMTQxOTc4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1l
IjogIjIwMTMtMDItMDZUMDg6NTU6MjAuOVoiLAorICAgICAgICAgICAgICAgICAgICAgICAgImF1
dGhvciI6IHsibmFtZSI6ICJDb21taXQgUXVldWUiLCAiYWNjb3VudCI6ICJjb21taXQtcXVldWVA
d2Via2l0Lm9yZyJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiOiAiV2ViS2l0
IENvbW1pdCIsCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJK
YXZhU2NyaXB0Q29yZSI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIx
NDE5NzgiLAorICAgICAgICAgICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxMy0wMi0wNlQwOTo1
NDo1Ni4wWiIsCisgICAgICAgICAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIk1p
a2hhaWwgUG96ZG55YWtvdiIsICJhY2NvdW50IjogIm1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5j
b20ifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIjogIkphdmFTY3JpcHRDb3Jl
IGNvbW1pdCIsCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIF0KKyAgICB9CisKKyAgICBjb25zdCBzeXN0ZW1WZXJzaW9uQ29t
bWl0V2l0aEVtcHR5U3ViY29tbWl0cyA9IHsKKyAgICAgICAgInNsYXZlTmFtZSI6ICJzb21lU2xh
dmUiLAorICAgICAgICAic2xhdmVQYXNzd29yZCI6ICJzb21lUGFzc3dvcmQiLAorICAgICAgICAi
Y29tbWl0cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6
ICJPU1giLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICJTaWVycmExNkQzMiIsCisgICAg
ICAgICAgICAgICAgIm9yZGVyIjogMSwKKyAgICAgICAgICAgICAgICAic3ViQ29tbWl0cyI6IHsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9CisKKyAg
ICBjb25zdCBtdWx0aXBsZVN5c3RlbVZlcnNpb25Db21taXRzV2l0aFN1YmNvbW1pdHMgPSB7Cisg
ICAgICAgICJzbGF2ZU5hbWUiOiAic29tZVNsYXZlIiwKKyAgICAgICAgInNsYXZlUGFzc3dvcmQi
OiAic29tZVBhc3N3b3JkIiwKKyAgICAgICAgImNvbW1pdHMiOiBbCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiT1NYIiwKKyAgICAgICAgICAgICAgICAicmV2
aXNpb24iOiAiU2llcnJhMTZEMzIiLAorICAgICAgICAgICAgICAgICJvcmRlciI6IDIsCisgICAg
ICAgICAgICAgICAgInN1YkNvbW1pdHMiOiB7CisgICAgICAgICAgICAgICAgICAgICJXZWJLaXQi
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAicmV2aXNpb24iOiAiMTQxOTc4IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJ0aW1lIjogIjIwMTMtMDItMDZUMDg6NTU6MjAuOVoiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJDb21taXQgUXVldWUiLCAi
YWNjb3VudCI6ICJjb21taXQtcXVldWVAd2Via2l0Lm9yZyJ9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgIm1lc3NhZ2UiOiAiV2ViS2l0IENvbW1pdCIsCisgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgICJKYXZhU2NyaXB0Q29yZSI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJyZXZpc2lvbiI6ICIxNDE5NzgiLAorICAgICAgICAgICAgICAgICAgICAgICAg
InRpbWUiOiAiMjAxMy0wMi0wNlQwOTo1NDo1Ni4wWiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAiYXV0aG9yIjogeyJuYW1lIjogIk1pa2hhaWwgUG96ZG55YWtvdiIsICJhY2NvdW50IjogIm1p
a2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20ifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJt
ZXNzYWdlIjogIkphdmFTY3JpcHRDb3JlIGNvbW1pdCIsCisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICJyZXBvc2l0b3J5IjogIk9TWCIsCisgICAgICAgICAgICAgICAgInJldmlzaW9u
IjogIlNpZXJyYTE2QzY3IiwKKyAgICAgICAgICAgICAgICAib3JkZXIiOiAxLAorICAgICAgICAg
ICAgICAgICJzdWJDb21taXRzIjogeworICAgICAgICAgICAgICAgICAgICAiV2ViS2l0Ijogewor
ICAgICAgICAgICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE0MTk3OCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAidGltZSI6ICIyMDEzLTAyLTA2VDA4OjU1OjIwLjlaIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJhdXRob3IiOiB7Im5hbWUiOiAiQ29tbWl0IFF1ZXVlIiwgImFjY291
bnQiOiAiY29tbWl0LXF1ZXVlQHdlYmtpdC5vcmcifSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJtZXNzYWdlIjogIldlYktpdCBDb21taXQiLAorICAgICAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgICAgICAiSmF2YVNjcmlwdENvcmUiOiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAicmV2aXNpb24iOiAiMTQxOTk5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1l
IjogIjIwMTMtMDItMDlUMDk6NTQ6NTYuMFoiLAorICAgICAgICAgICAgICAgICAgICAgICAgImF1
dGhvciI6IHsibmFtZSI6ICJNaWtoYWlsIFBvemRueWFrb3YiLCAiYWNjb3VudCI6ICJtaWtoYWls
LnBvemRueWFrb3ZAaW50ZWwuY29tIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2Fn
ZSI6ICJuZXcgSmF2YVNjcmlwdENvcmUgY29tbWl0IiwKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXQorICAgIH0KKworICAg
IGZ1bmN0aW9uIGZpbmRfZmlyc3RfbWF0Y2hpbmcoZW50cmllcywgY3JpdGVyaWEpIHsKKyAgICAg
ICAgZm9yKHZhciBlbnRyeSBvZiBlbnRyaWVzKSB7CisgICAgICAgICAgICB2YXIgZm91bmQgPSB0
cnVlOworICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gY3JpdGVyaWEpIHsKKyAgICAgICAgICAg
ICAgICBpZighZW50cnkuaGFzT3duUHJvcGVydHkoa2V5KSB8fCBlbnRyeVtrZXldICE9IGNyaXRl
cmlhW2tleV0pIHsKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYoZm91bmQpeworICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBp
dCgic2hvdWxkIGFjY2VwdCBpbnNlcnRpbmcgb25lIGNvbW1pdCB3aXRoIHNvbWUgc3ViIGNvbW1p
dHMiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0
YWJhc2UoKTsKKyAgICAgICAgYWRkU2xhdmVGb3JSZXBvcnQoc3lzdGVtVmVyc2lvbkNvbW1pdFdp
dGhTdWJjb21taXRzKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3Rl
bVZlcnNpb25Db21taXRXaXRoU3ViY29tbWl0cyk7CisgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KHJlc3BvbnNlKSB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cydd
LCAnT0snKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbZGIuc2VsZWN0QWxsKCdj
b21taXRzJyksIGRiLnNlbGVjdEFsbCgncmVwb3NpdG9yaWVzJyksIGRiLnNlbGVjdEFsbCgnY29t
bWl0X293bmVyc2hpcHMnLCAnY29tbWl0X293bmVyJyldKTsKKyAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAocmVzdWx0KSB7CisgICAgICAgICAgICBsZXQgY29tbWl0cyA9IHJlc3VsdFswXTsKKyAg
ICAgICAgICAgIGxldCByZXBvc2l0b3JpZXMgPSByZXN1bHRbMV07CisgICAgICAgICAgICBsZXQg
Y29tbWl0X293bmVyc2hpcHMgPSByZXN1bHRbMl07CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
Y29tbWl0cy5sZW5ndGgsIDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcmll
cy5sZW5ndGgsIDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdF9vd25lcnNoaXBz
Lmxlbmd0aCwgMik7CisKKyAgICAgICAgICAgIGxldCByZXBvcnRlZERhdGEgPSBzeXN0ZW1WZXJz
aW9uQ29tbWl0V2l0aFN1YmNvbW1pdHNbJ2NvbW1pdHMnXVswXTsKKyAgICAgICAgICAgIGNvbnN0
IG9zeENvbW1pdCA9IGZpbmRfZmlyc3RfbWF0Y2hpbmcoY29tbWl0cywgeydyZXZpc2lvbic6ICdT
aWVycmExNkQzMid9KTsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdENvbW1pdCA9IGZpbmRfZmly
c3RfbWF0Y2hpbmcoY29tbWl0cywgeydtZXNzYWdlJzogJ1dlYktpdCBDb21taXQnfSk7CisgICAg
ICAgICAgICBjb25zdCBqc2NDb21taXQgPSBmaW5kX2ZpcnN0X21hdGNoaW5nKGNvbW1pdHMsIHsn
bWVzc2FnZSc6ICdKYXZhU2NyaXB0Q29yZSBjb21taXQnfSk7CisgICAgICAgICAgICBhc3NlcnQu
bm90RXF1YWwob3N4Q29tbWl0LCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbCh3
ZWJraXRDb21taXQsIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKGpzY0NvbW1p
dCwgbnVsbCk7CisKKyAgICAgICAgICAgIGNvbnN0IG9zeFJlcG9zaXRvcnkgPSBmaW5kX2ZpcnN0
X21hdGNoaW5nKHJlcG9zaXRvcmllcywgeyduYW1lJzogJ09TWCd9KTsKKyAgICAgICAgICAgIGNv
bnN0IHdlYmtpdFJlcG9zaXRvcnkgPSBmaW5kX2ZpcnN0X21hdGNoaW5nKHJlcG9zaXRvcmllcywg
eyduYW1lJzogIldlYktpdCJ9KTsKKyAgICAgICAgICAgIGNvbnN0IGpzY1JlcG9zaXRvcnkgPSBm
aW5kX2ZpcnN0X21hdGNoaW5nKHJlcG9zaXRvcmllcywgeyduYW1lJzogJ0phdmFTY3JpcHRDb3Jl
J30pOworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKG9zeFJlcG9zaXRvcnksIG51bGwpOwor
ICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKHdlYmtpdFJlcG9zaXRvcnksIG51bGwpOworICAg
ICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKGpzY1JlcG9zaXRvcnksIG51bGwpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKG9zeFJlcG9zaXRvcnkucGFyZW50LCBudWxsKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbCh3ZWJraXRSZXBvc2l0b3J5LnBhcmVudCwgb3N4UmVwb3NpdG9yeS5pZCk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoanNjUmVwb3NpdG9yeS5wYXJlbnQsIG9zeFJlcG9z
aXRvcnkuaWQpOworCisgICAgICAgICAgICBjb25zdCBvd25lckNvbW1pdEZvcldlYktpdENvbW1p
dCA9IGZpbmRfZmlyc3RfbWF0Y2hpbmcoY29tbWl0X293bmVyc2hpcHMsIHsnY29tbWl0X293bmVl
Jzogd2Via2l0Q29tbWl0LmlkfSk7CisgICAgICAgICAgICBjb25zdCBvd25lckNvbW1pdEZvckpT
Q0NvbW1pdCA9IGZpbmRfZmlyc3RfbWF0Y2hpbmcoY29tbWl0X293bmVyc2hpcHMsIHsnY29tbWl0
X293bmVlJzoganNjQ29tbWl0LmlkfSk7CisgICAgICAgICAgICBhc3NlcnQubm90RXF1YWwob3du
ZXJDb21taXRGb3JXZWJLaXRDb21taXQsIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVx
dWFsKG93bmVyQ29tbWl0Rm9ySlNDQ29tbWl0LCBudWxsKTsKKyAgICAgICAgICAgIGRvbmUoKTsK
KyAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgfSk7CisKKyAgICBpdCgic2hvdWxkIGFjY2Vw
dCBpbnNlcnRpbmcgbXVsdGlwbGUgY29tbWl0cyB3aXRoIG11bHRpcGxlIHN1Yi1jb21taXRzIiwg
ZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNl
KCk7CisgICAgICAgIGFkZFNsYXZlRm9yUmVwb3J0KG11bHRpcGxlU3lzdGVtVmVyc2lvbkNvbW1p
dHNXaXRoU3ViY29tbWl0cykudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4g
VGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBt
dWx0aXBsZVN5c3RlbVZlcnNpb25Db21taXRzV2l0aFN1YmNvbW1pdHMpOworICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3Bv
bnNlWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW2Ri
LnNlbGVjdEFsbCgnY29tbWl0cycpLCBkYi5zZWxlY3RBbGwoJ3JlcG9zaXRvcmllcycpLCBkYi5z
ZWxlY3RBbGwoJ2NvbW1pdF9vd25lcnNoaXBzJywgJ2NvbW1pdF9vd25lcicpXSk7CisgICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICAgICAgbGV0IGNvbW1pdHMgPSBy
ZXN1bHRbMF07CisgICAgICAgICAgICBsZXQgcmVwb3NpdG9yaWVzID0gcmVzdWx0WzFdOworICAg
ICAgICAgICAgbGV0IGNvbW1pdF9vd25lcnNoaXBzID0gcmVzdWx0WzJdOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGNvbW1pdHMubGVuZ3RoLCA1KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXBvc2l0b3JpZXMubGVuZ3RoLCAzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21t
aXRfb3duZXJzaGlwcy5sZW5ndGgsIDQpOworCisgICAgICAgICAgICBjb25zdCBvc3hDb21taXQw
ID0gZmluZF9maXJzdF9tYXRjaGluZyhjb21taXRzLCB7J3JldmlzaW9uJzogJ1NpZXJyYTE2RDMy
J30pOworICAgICAgICAgICAgY29uc3Qgb3N4Q29tbWl0MSA9IGZpbmRfZmlyc3RfbWF0Y2hpbmco
Y29tbWl0cywgeydyZXZpc2lvbic6ICdTaWVycmExNkM2Nyd9KTsKKyAgICAgICAgICAgIGNvbnN0
IHdlYmtpdENvbW1pdCA9IGZpbmRfZmlyc3RfbWF0Y2hpbmcoY29tbWl0cywgeydtZXNzYWdlJzog
J1dlYktpdCBDb21taXQnfSk7CisgICAgICAgICAgICBjb25zdCBqc2NDb21taXQwID0gZmluZF9m
aXJzdF9tYXRjaGluZyhjb21taXRzLCB7J21lc3NhZ2UnOiAnSmF2YVNjcmlwdENvcmUgY29tbWl0
J30pOworICAgICAgICAgICAgY29uc3QganNjQ29tbWl0MSA9IGZpbmRfZmlyc3RfbWF0Y2hpbmco
Y29tbWl0cywgeydtZXNzYWdlJzogJ25ldyBKYXZhU2NyaXB0Q29yZSBjb21taXQnfSk7CisgICAg
ICAgICAgICBhc3NlcnQubm90RXF1YWwob3N4Q29tbWl0MCwgbnVsbCk7CisgICAgICAgICAgICBh
c3NlcnQubm90RXF1YWwob3N4Q29tbWl0MSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQubm90
RXF1YWwod2Via2l0Q29tbWl0LCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChq
c2NDb21taXQwLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChqc2NDb21taXQx
LCBudWxsKTsKKworICAgICAgICAgICAgY29uc3Qgb3N4UmVwb3NpdG9yeSA9IGZpbmRfZmlyc3Rf
bWF0Y2hpbmcocmVwb3NpdG9yaWVzLCB7J25hbWUnOiAnT1NYJ30pOworICAgICAgICAgICAgY29u
c3Qgd2Via2l0UmVwb3NpdG9yeSA9IGZpbmRfZmlyc3RfbWF0Y2hpbmcocmVwb3NpdG9yaWVzLCB7
J25hbWUnOiAiV2ViS2l0In0pOworICAgICAgICAgICAgY29uc3QganNjUmVwb3NpdG9yeSA9IGZp
bmRfZmlyc3RfbWF0Y2hpbmcocmVwb3NpdG9yaWVzLCB7J25hbWUnOiAnSmF2YVNjcmlwdENvcmUn
fSk7CisgICAgICAgICAgICBhc3NlcnQubm90RXF1YWwob3N4UmVwb3NpdG9yeSwgbnVsbCk7Cisg
ICAgICAgICAgICBhc3NlcnQubm90RXF1YWwod2Via2l0UmVwb3NpdG9yeSwgbnVsbCk7CisgICAg
ICAgICAgICBhc3NlcnQubm90RXF1YWwoanNjUmVwb3NpdG9yeSwgbnVsbCk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwob3N4UmVwb3NpdG9yeS5wYXJlbnQsIG51bGwpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHdlYmtpdFJlcG9zaXRvcnkucGFyZW50LCBvc3hSZXBvc2l0b3J5LmlkKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChqc2NSZXBvc2l0b3J5LnBhcmVudCwgb3N4UmVwb3Np
dG9yeS5pZCk7CisKKyAgICAgICAgICAgIGNvbnN0IG93bmVyQ29tbWl0Rm9yV2ViS2l0Q29tbWl0
MCA9IGZpbmRfZmlyc3RfbWF0Y2hpbmcoY29tbWl0X293bmVyc2hpcHMsIHsnY29tbWl0X293bmVl
Jzp3ZWJraXRDb21taXQuaWQsICdjb21taXRfb3duZXInOiBvc3hDb21taXQwLmlkfSk7CisgICAg
ICAgICAgICBjb25zdCBvd25lckNvbW1pdEZvcldlYktpdENvbW1pdDEgPSBmaW5kX2ZpcnN0X21h
dGNoaW5nKGNvbW1pdF9vd25lcnNoaXBzLCB7J2NvbW1pdF9vd25lZSc6d2Via2l0Q29tbWl0Lmlk
LCAnY29tbWl0X293bmVyJzogb3N4Q29tbWl0MS5pZH0pOworICAgICAgICAgICAgY29uc3Qgb3du
ZXJDb21taXRGb3JKU0NDb21taXQwID0gZmluZF9maXJzdF9tYXRjaGluZyhjb21taXRfb3duZXJz
aGlwcywgeydjb21taXRfb3duZWUnOiBqc2NDb21taXQwLmlkLCAnY29tbWl0X293bmVyJzogb3N4
Q29tbWl0MC5pZH0pOworICAgICAgICAgICAgY29uc3Qgb3duZXJDb21taXRGb3JKU0NDb21taXQx
ID0gZmluZF9maXJzdF9tYXRjaGluZyhjb21taXRfb3duZXJzaGlwcywgeydjb21taXRfb3duZWUn
OiBqc2NDb21taXQxLmlkLCAnY29tbWl0X293bmVyJzogb3N4Q29tbWl0MS5pZH0pOworICAgICAg
ICAgICAgYXNzZXJ0Lm5vdEVxdWFsKG93bmVyQ29tbWl0Rm9yV2ViS2l0Q29tbWl0MCwgbnVsbCk7
CisgICAgICAgICAgICBhc3NlcnQubm90RXF1YWwob3duZXJDb21taXRGb3JXZWJLaXRDb21taXQx
LCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChvd25lckNvbW1pdEZvckpTQ0Nv
bW1pdDAsIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKG93bmVyQ29tbWl0Rm9y
SlNDQ29tbWl0MSwgbnVsbCk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0pLmNhdGNo
KGRvbmUpOworICAgIH0pOworCisgICAgaXQoInNob3VsZCBhY2NlcHQgaW5zZXJ0aW5nIG9uZSBj
b21taXQgd2l0aCBubyBzdWIgY29tbWl0cyIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIGNv
bnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBhZGRTbGF2ZUZvclJlcG9y
dChzeXN0ZW1WZXJzaW9uQ29tbWl0V2l0aEVtcHR5U3ViY29tbWl0cykudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTign
L2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzeXN0ZW1WZXJzaW9uQ29tbWl0V2l0aEVtcHR5U3ViY29t
bWl0cyk7CisgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgIHJl
dHVybiBQcm9taXNlLmFsbChbZGIuc2VsZWN0QWxsKCdjb21taXRzJyksIGRiLnNlbGVjdEFsbCgn
cmVwb3NpdG9yaWVzJyksIGRiLnNlbGVjdEFsbCgnY29tbWl0X293bmVyc2hpcHMnLCAnY29tbWl0
X293bmVyJyldKTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAg
ICAgICBsZXQgY29tbWl0cyA9IHJlc3VsdFswXTsKKyAgICAgICAgICAgIGxldCByZXBvc2l0b3Jp
ZXMgPSByZXN1bHRbMV07CisgICAgICAgICAgICBsZXQgY29tbWl0X293bmVyc2hpcHMgPSByZXN1
bHRbMl07CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0cy5sZW5ndGgsIDEpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcmllcy5sZW5ndGgsIDEpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNvbW1pdF9vd25lcnNoaXBzLmxlbmd0aCwgMCk7CisgICAgICAgICAg
ICBkb25lKCk7CisgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgIH0pOworCiAgICAgaXQoInNo
b3VsZCByZWplY3QgZXJyb3Igd2hlbiBzbGF2ZSBuYW1lIGlzIG1pc3NpbmciLCBmdW5jdGlvbiAo
ZG9uZSkgewogICAgICAgICBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3Jl
cG9ydC1jb21taXRzLycsIHt9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ01pc3NpbmdTbGF2ZU5hbWUnKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303388</attachid>
            <date>2017-03-03 23:46:52 -0800</date>
            <delta_ts>2017-03-13 01:17:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168962-20170303234651.patch</filename>
            <type>text/plain</type>
            <size>35218</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNDE3CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA0MWJiOTU2ZDFkOTNmYWNmYzljMjJlM2I1ZjY5MDA2ZWQ3ZGQ1M2M2Li5kODc1MTZlMTgy
NWUxZjNmZDdiN2JlMTc0OGI1MGY4NjI1OGIxNWI5IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxNy0wMy0wMyAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gcmVwb3J0IGEgY29tbWl0
IHdpdGggc3ViLWNvbW1pdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjg5NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgJ2NvbW1pdF9vd25lcnNoaXBzJyB3aGljaCByZWNvcmRzIG93
bmVyc2hpcCBiZXR3ZWVuIGNvbW1pdHMuCisgICAgICAgIE9uIGV4aXN0aW5nIHByb2R1Y3Rpb24g
c2VydmVyLCBydW4gYGBgCisgICAgICAgICAgICBDUkVBVEUgVEFCTEUgY29tbWl0X293bmVyc2hp
cHMgKAorICAgICAgICAgICAgICAgIGNvbW1pdF9vd25lciBpbnRlZ2VyIE5PVCBOVUxMIFJFRkVS
RU5DRVMgY29tbWl0cyBPTiBERUxFVEUgQ0FTQ0FERSwKKyAgICAgICAgICAgICAgICBjb21taXRf
b3duZWUgaW50ZWdlciBOT1QgTlVMTCBSRUZFUkVOQ0VTIGNvbW1pdHMgT04gREVMRVRFIENBU0NB
REUsCisgICAgICAgICAgICAgICAgUFJJTUFSWSBLRVkgKGNvbW1pdF9vd25lciwgY29tbWl0X293
bmVlKQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIEFMVEVSIFRBQkxFIHJlcG9zaXRvcmll
cyBSRU5BTUUgcmVwb3NpdG9yeV9wYXJlbnQgVE8gcmVwb3NpdG9yeV9vd25lcjsKKyAgICAgICAg
ICAgIEFMVEVSIFRBQkxFIHJlcG9zaXRvcmllcyBEUk9QIHJlcG9zaXRvcnlfbmFtZV9tdXN0X2Jl
X3VuaXF1ZTsKKyAgICAgICAgICAgIENSRUFURSBVTklRVUUgSU5ERVggcmVwb3NpdG9yeV9uYW1l
X293bmVyX3VuaXF1ZV9pbmRleCBPTiByZXBvc2l0b3JpZXMgKHJlcG9zaXRvcnlfb3duZXIsIHJl
cG9zaXRvcnlfbmFtZSkgV0hFUkUgcmVwb3NpdG9yeV9vd25lciBJUyBOT1QgTlVMTDsKKyAgICAg
ICAgICAgIENSRUFURSBVTklRVUUgSU5ERVggcmVwb3NpdG9yeV9uYW1lX3VuaXF1ZV9pbmRleCBP
TiByZXBvc2l0b3JpZXMgKHJlcG9zaXRvcnlfbmFtZSkgV0hFUkUgcmVwb3NpdG9yeV9vd25lciBJ
UyBOT1QgTlVMTDsKKyAgICAgICAgYGBgIHRvIHVwZGF0ZSBkYXRhYmFzZS4KKyAgICAgICAgQWRk
IHVuaXQtdGVzdHMgdG8gY292ZXIgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBpbml0LWRhdGFi
YXNlLnNxbDoKKyAgICAgICAgKiBwdWJsaWMvYXBpL3JlcG9ydC1jb21taXRzLnBocDoKKyAgICAg
ICAgKiBwdWJsaWMvaW5jbHVkZS9jb21taXQtbG9nLWZldGNoZXIucGhwOgorICAgICAgICAqIHB1
YmxpYy9pbmNsdWRlL2RiLnBocDoKKyAgICAgICAgKiBwdWJsaWMvaW5jbHVkZS9tYW5pZmVzdC1n
ZW5lcmF0b3IucGhwOgorICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL3JlcG9ydC1wcm9jZXNzb3Iu
cGhwOgorICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvcmVwb3NpdG9yeS5qczoKKyAgICAgICAg
KFJlcG9zaXRvcnkpOgorICAgICAgICAoUmVwb3NpdG9yeS5wcm90b3R5cGUub3duZXIpOgorICAg
ICAgICAqIHNlcnZlci10ZXN0cy9hZG1pbi1yZXByb2Nlc3MtcmVwb3J0LXRlc3RzLmpzOgorICAg
ICAgICAoYWRkQnVpbGRlckZvclJlcG9ydC5zaW1wbGVSZXBvcnRXaXRoUmV2aXNpb25zLjAudGhl
bik6CisgICAgICAgICh0aGVuKToKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvYXBpLW1hbmlmZXN0
LmpzOgorICAgICAgICAodGhlbik6CisgICAgICAgICogc2VydmVyLXRlc3RzL2FwaS1yZXBvcnQt
Y29tbWl0cy10ZXN0cy5qczoKKyAgICAgICAgKGFkZFNsYXZlRm9yUmVwb3J0LnNhbWVSZXBvc2l0
b3J5TmFtZUluU3ViQ29tbWl0QW5kTWFqb3JDb21taXQudGhlbik6CisgICAgICAgICh0aGVuKToK
KyAgICAgICAgKGFkZFNsYXZlRm9yUmVwb3J0LnN5c3RlbVZlcnNpb25Db21taXRXaXRoU3ViY29t
bWl0cy50aGVuKToKKyAgICAgICAgKGFkZFNsYXZlRm9yUmVwb3J0Lm11bHRpcGxlU3lzdGVtVmVy
c2lvbkNvbW1pdHNXaXRoU3ViY29tbWl0cy50aGVuKToKKyAgICAgICAgKGFkZFNsYXZlRm9yUmVw
b3J0LnN5c3RlbVZlcnNpb25Db21taXRXaXRoRW1wdHlTdWJjb21taXRzLnRoZW4pOgorICAgICAg
ICAoYWRkU2xhdmVGb3JSZXBvcnQuc3lzdGVtVmVyc2lvbkNvbW1pdEFuZFN1YmNvbW1pdFdpdGhU
aW1lc3RhbXAudGhlbik6CisgICAgICAgICogdG9vbHMvanMvZGF0YWJhc2UuanM6CisKIDIwMTct
MDMtMDIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBi
YXNlbGluZSBkYXRhIHBvaW50cyBzZWxlY3RhYmxlCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
aW5pdC1kYXRhYmFzZS5zcWwKaW5kZXggNWEzZGZjZjZjNTg0MzI1NzE5NGQ2OGM0NmVhMzNhYTg4
YzVhZjhiYS4uMTNmNmExN2EwYWUzYTE3NTM4MzM2MDdjYTFhYjM3NGE1NDUxNTE0MiAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsCisrKyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbApAQCAtNyw2ICs3LDcgQEAg
RFJPUCBUQUJMRSBJRiBFWElTVFMgYnVpbGRzIENBU0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNU
UyBjb21taXR0ZXJzIENBU0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBjb21taXRzIENBU0NB
REU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBidWlsZF9jb21taXRzIENBU0NBREU7CitEUk9QIFRB
QkxFIElGIEVYSVNUUyBjb21taXRfb3duZXJzaGlwcyBDQVNDQURFOwogRFJPUCBUQUJMRSBJRiBF
WElTVFMgYnVpbGRfc2xhdmVzIENBU0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBidWlsZGVy
cyBDQVNDQURFOwogRFJPUCBUQUJMRSBJRiBFWElTVFMgcmVwb3NpdG9yaWVzIENBU0NBREU7CkBA
IC0zOCwxMSArMzksMTUgQEAgQ1JFQVRFIFRBQkxFIHBsYXRmb3JtcyAoCiAKIENSRUFURSBUQUJM
RSByZXBvc2l0b3JpZXMgKAogICAgIHJlcG9zaXRvcnlfaWQgc2VyaWFsIFBSSU1BUlkgS0VZLAot
ICAgIHJlcG9zaXRvcnlfcGFyZW50IGludGVnZXIgUkVGRVJFTkNFUyByZXBvc2l0b3JpZXMgT04g
REVMRVRFIENBU0NBREUsCisgICAgcmVwb3NpdG9yeV9vd25lciBpbnRlZ2VyIFJFRkVSRU5DRVMg
cmVwb3NpdG9yaWVzIE9OIERFTEVURSBDQVNDQURFLAogICAgIHJlcG9zaXRvcnlfbmFtZSB2YXJj
aGFyKDY0KSBOT1QgTlVMTCwKICAgICByZXBvc2l0b3J5X3VybCB2YXJjaGFyKDEwMjQpLAotICAg
IHJlcG9zaXRvcnlfYmxhbWVfdXJsIHZhcmNoYXIoMTAyNCksCi0gICAgQ09OU1RSQUlOVCByZXBv
c2l0b3J5X25hbWVfbXVzdF9iZV91bmlxdWUgVU5JUVVFKHJlcG9zaXRvcnlfcGFyZW50LCByZXBv
c2l0b3J5X25hbWUpKTsKKyAgICByZXBvc2l0b3J5X2JsYW1lX3VybCB2YXJjaGFyKDEwMjQpKTsK
KworQ1JFQVRFIFVOSVFVRSBJTkRFWCByZXBvc2l0b3J5X25hbWVfb3duZXJfdW5pcXVlX2luZGV4
IE9OIHJlcG9zaXRvcmllcyAocmVwb3NpdG9yeV9vd25lciwgcmVwb3NpdG9yeV9uYW1lKQorV0hF
UkUgcmVwb3NpdG9yeV9vd25lciBJUyBOT1QgTlVMTDsKK0NSRUFURSBVTklRVUUgSU5ERVggcmVw
b3NpdG9yeV9uYW1lX3VuaXF1ZV9pbmRleCBPTiByZXBvc2l0b3JpZXMgKHJlcG9zaXRvcnlfbmFt
ZSkKK1dIRVJFIHJlcG9zaXRvcnlfb3duZXIgSVMgTk9UIE5VTEw7CiAKIENSRUFURSBUQUJMRSBi
dWdfdHJhY2tlcnMgKAogICAgIHRyYWNrZXJfaWQgc2VyaWFsIFBSSU1BUlkgS0VZLApAQCAtOTgs
NiArMTAzLDEyIEBAIENSRUFURSBUQUJMRSBjb21taXRzICgKIENSRUFURSBJTkRFWCBjb21taXRf
dGltZV9pbmRleCBPTiBjb21taXRzKGNvbW1pdF90aW1lKTsKIENSRUFURSBJTkRFWCBjb21taXRf
b3JkZXJfaW5kZXggT04gY29tbWl0cyhjb21taXRfb3JkZXIpOwogCitDUkVBVEUgVEFCTEUgY29t
bWl0X293bmVyc2hpcHMgKAorICAgIGNvbW1pdF9vd25lciBpbnRlZ2VyIE5PVCBOVUxMIFJFRkVS
RU5DRVMgY29tbWl0cyBPTiBERUxFVEUgQ0FTQ0FERSwKKyAgICBjb21taXRfb3duZWQgaW50ZWdl
ciBOT1QgTlVMTCBSRUZFUkVOQ0VTIGNvbW1pdHMgT04gREVMRVRFIENBU0NBREUsCisgICAgUFJJ
TUFSWSBLRVkgKGNvbW1pdF9vd25lciwgY29tbWl0X293bmVkKQorKTsKKwogQ1JFQVRFIFRBQkxF
IGJ1aWxkX2NvbW1pdHMgKAogICAgIGNvbW1pdF9idWlsZCBpbnRlZ2VyIE5PVCBOVUxMIFJFRkVS
RU5DRVMgYnVpbGRzIE9OIERFTEVURSBDQVNDQURFLAogICAgIGJ1aWxkX2NvbW1pdCBpbnRlZ2Vy
IE5PVCBOVUxMIFJFRkVSRU5DRVMgY29tbWl0cyBPTiBERUxFVEUgQ0FTQ0FERSwKZGlmZiAtLWdp
dCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL3JlcG9ydC1jb21taXRzLnBo
cCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL3JlcG9ydC1jb21taXRzLnBo
cAppbmRleCBmYjJjYWI0MGQxYjM5ZGU1MDYxMTU4MjNjNzJiZmZkYTA0MTIwZWJhLi44MmJhMDU4
N2M0YTFlZDJlMzJmMzJhYzA5OTEyNmY1NmVlZWQzN2VlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9yZXBvcnQtY29tbWl0cy5waHAKKysrIGIvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvcmVwb3J0LWNvbW1pdHMucGhwCkBAIC0yLDcg
KzIsNTQgQEAKIAogcmVxdWlyZSgnLi4vaW5jbHVkZS9qc29uLWhlYWRlci5waHAnKTsKIAotZnVu
Y3Rpb24gbWFpbigkcG9zdF9kYXRhKSB7CitmdW5jdGlvbiBpbnNlcnRfY29tbWl0KCRkYiwgJGNv
bW1pdF9pbmZvLCAkcmVwb3NpdG9yeV9pZCwgJG93bmVyX2NvbW1pdF9pZCkKK3sKKyAgICAkYXV0
aG9yID0gYXJyYXlfZ2V0KCRjb21taXRfaW5mbywgJ2F1dGhvcicpOworICAgICRjb21taXR0ZXJf
aWQgPSBOVUxMOworICAgIGlmICgkYXV0aG9yKSB7CisgICAgICAgICRhY2NvdW50ID0gYXJyYXlf
Z2V0KCRhdXRob3IsICdhY2NvdW50Jyk7CisgICAgICAgICRjb21taXR0ZXJfcXVlcnkgPSBhcnJh
eSgncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQsICdhY2NvdW50JyA9PiAkYWNjb3VudCk7
CisgICAgICAgICRjb21taXR0ZXJfZGF0YSA9ICRjb21taXR0ZXJfcXVlcnk7CisgICAgICAgICRu
YW1lID0gYXJyYXlfZ2V0KCRhdXRob3IsICduYW1lJyk7CisgICAgICAgIGlmICgkbmFtZSkKKyAg
ICAgICAgICAgICRjb21taXR0ZXJfZGF0YVsnbmFtZSddID0gJG5hbWU7CisgICAgICAgICRjb21t
aXR0ZXJfaWQgPSAkZGItPnVwZGF0ZV9vcl9pbnNlcnRfcm93KCdjb21taXR0ZXJzJywgJ2NvbW1p
dHRlcicsICRjb21taXR0ZXJfcXVlcnksICRjb21taXR0ZXJfZGF0YSk7CisgICAgICAgIGlmICgh
JGNvbW1pdHRlcl9pZCkgeworICAgICAgICAgICAgJGRiLT5yb2xsYmFja190cmFuc2FjdGlvbigp
OworICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb0luc2VydENvbW1pdHRlcics
IGFycmF5KCdjb21taXR0ZXInID0+ICRjb21taXR0ZXJfZGF0YSkpOworICAgICAgICB9CisgICAg
fQorCisgICAgJHByZXZpb3VzX2NvbW1pdF9yZXZpc2lvbiA9IGFycmF5X2dldCgkY29tbWl0X2lu
Zm8sICdwcmV2aW91c0NvbW1pdCcpOworICAgICRwcmV2aW91c19jb21taXRfaWQgPSBOVUxMOwor
ICAgIGlmICgkcHJldmlvdXNfY29tbWl0X3JldmlzaW9uKSB7CisgICAgICAgICRwcmV2aW91c19j
b21taXQgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2NvbW1pdHMnLCAnY29tbWl0JywgYXJyYXko
J3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X2lkLCAncmV2aXNpb24nID0+ICRwcmV2aW91c19j
b21taXRfcmV2aXNpb24pKTsKKyAgICAgICAgaWYgKCEkcHJldmlvdXNfY29tbWl0KSB7CisgICAg
ICAgICAgICAkZGItPnJvbGxiYWNrX3RyYW5zYWN0aW9uKCk7CisgICAgICAgICAgICBleGl0X3dp
dGhfZXJyb3IoJ0ZhaWxlZFRvRmluZFByZXZpb3VzQ29tbWl0JywgYXJyYXkoJ2NvbW1pdCcgPT4g
JGNvbW1pdF9pbmZvKSk7CisgICAgICAgIH0KKyAgICAgICAgJHByZXZpb3VzX2NvbW1pdF9pZCA9
ICRwcmV2aW91c19jb21taXRbJ2NvbW1pdF9pZCddOworICAgIH0KKworICAgICRkYXRhID0gYXJy
YXkoCisgICAgICAgICdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwKKyAgICAgICAgJ3Jl
dmlzaW9uJyA9PiAkY29tbWl0X2luZm9bJ3JldmlzaW9uJ10sCisgICAgICAgICdwcmV2aW91c19j
b21taXQnID0+ICRwcmV2aW91c19jb21taXRfaWQsCisgICAgICAgICdvcmRlcicgPT4gYXJyYXlf
Z2V0KCRjb21taXRfaW5mbywgJ29yZGVyJyksCisgICAgICAgICd0aW1lJyA9PiBhcnJheV9nZXQo
JGNvbW1pdF9pbmZvLCAndGltZScpLAorICAgICAgICAnY29tbWl0dGVyJyA9PiAkY29tbWl0dGVy
X2lkLAorICAgICAgICAnbWVzc2FnZScgPT4gYXJyYXlfZ2V0KCRjb21taXRfaW5mbywgJ21lc3Nh
Z2UnKSwKKyAgICAgICAgJ3JlcG9ydGVkJyA9PiB0cnVlLAorICAgICk7CisgICAgJGluc2VydGVk
X2NvbW1pdF9pZCA9ICRkYi0+dXBkYXRlX29yX2luc2VydF9yb3coJ2NvbW1pdHMnLCAnY29tbWl0
JywgYXJyYXkoJ3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X2lkLCAncmV2aXNpb24nID0+ICRk
YXRhWydyZXZpc2lvbiddKSwgJGRhdGEpOworCisgICAgaWYgKCRvd25lcl9jb21taXRfaWQpCisg
ICAgICAgICRkYi0+c2VsZWN0X29yX2luc2VydF9yb3coJ2NvbW1pdF9vd25lcnNoaXBzJywgJ2Nv
bW1pdCcsIGFycmF5KCdvd25lcicgPT4gJG93bmVyX2NvbW1pdF9pZCwgJ293bmVkJyA9PiAkaW5z
ZXJ0ZWRfY29tbWl0X2lkKSwgTlVMTCwgJyonKTsKKyAgICByZXR1cm4gJGluc2VydGVkX2NvbW1p
dF9pZDsKK30KKworZnVuY3Rpb24gbWFpbigkcG9zdF9kYXRhKQorewogICAgICRkYiA9IG5ldyBE
YXRhYmFzZTsKICAgICBpZiAoISRkYi0+Y29ubmVjdCgpKQogICAgICAgICBleGl0X3dpdGhfZXJy
b3IoJ0RhdGFiYXNlQ29ubmVjdGlvbkZhaWx1cmUnKTsKQEAgLTI1LDUwICs3MiwyNyBAQCBmdW5j
dGlvbiBtYWluKCRwb3N0X2RhdGEpIHsKIAogICAgICRkYi0+YmVnaW5fdHJhbnNhY3Rpb24oKTsK
ICAgICBmb3JlYWNoICgkY29tbWl0cyBhcyAkY29tbWl0X2luZm8pIHsKLSAgICAgICAgJHJlcG9z
aXRvcnlfaWQgPSAkZGItPnNlbGVjdF9vcl9pbnNlcnRfcm93KCdyZXBvc2l0b3JpZXMnLCAncmVw
b3NpdG9yeScsIGFycmF5KCduYW1lJyA9PiAkY29tbWl0X2luZm9bJ3JlcG9zaXRvcnknXSkpOwot
ICAgICAgICBpZiAoISRyZXBvc2l0b3J5X2lkKSB7CisgICAgICAgICRvd25lcl9yZXBvc2l0b3J5
X2lkID0gJGRiLT5zZWxlY3Rfb3JfaW5zZXJ0X3JlcG9zaXRvcnlfcm93KCRjb21taXRfaW5mb1sn
cmVwb3NpdG9yeSddLCBOVUxMKTsKKyAgICAgICAgaWYgKCEkb3duZXJfcmVwb3NpdG9yeV9pZCkg
ewogICAgICAgICAgICAgJGRiLT5yb2xsYmFja190cmFuc2FjdGlvbigpOwogICAgICAgICAgICAg
ZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb0luc2VydFJlcG9zaXRvcnknLCBhcnJheSgnY29tbWl0
JyA9PiAkY29tbWl0X2luZm8pKTsKICAgICAgICAgfQorICAgICAgICAkb3duZXJfY29tbWl0X2lk
ID0gaW5zZXJ0X2NvbW1pdCgkZGIsICRjb21taXRfaW5mbywgJG93bmVyX3JlcG9zaXRvcnlfaWQs
IE5VTEwpOworICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJ3N1YkNvbW1pdHMnLCAkY29t
bWl0X2luZm8pKQorICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgJGF1dGhvciA9IGFy
cmF5X2dldCgkY29tbWl0X2luZm8sICdhdXRob3InKTsKLSAgICAgICAgJGNvbW1pdHRlcl9pZCA9
IE5VTEw7Ci0gICAgICAgIGlmICgkYXV0aG9yKSB7Ci0gICAgICAgICAgICAkYWNjb3VudCA9IGFy
cmF5X2dldCgkYXV0aG9yLCAnYWNjb3VudCcpOwotICAgICAgICAgICAgJGNvbW1pdHRlcl9xdWVy
eSA9IGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ2FjY291bnQnID0+ICRh
Y2NvdW50KTsKLSAgICAgICAgICAgICRjb21taXR0ZXJfZGF0YSA9ICRjb21taXR0ZXJfcXVlcnk7
Ci0gICAgICAgICAgICAkbmFtZSA9IGFycmF5X2dldCgkYXV0aG9yLCAnbmFtZScpOwotICAgICAg
ICAgICAgaWYgKCRuYW1lKQotICAgICAgICAgICAgICAgICRjb21taXR0ZXJfZGF0YVsnbmFtZSdd
ID0gJG5hbWU7Ci0gICAgICAgICAgICAkY29tbWl0dGVyX2lkID0gJGRiLT51cGRhdGVfb3JfaW5z
ZXJ0X3JvdygnY29tbWl0dGVycycsICdjb21taXR0ZXInLCAkY29tbWl0dGVyX3F1ZXJ5LCAkY29t
bWl0dGVyX2RhdGEpOwotICAgICAgICAgICAgaWYgKCEkY29tbWl0dGVyX2lkKSB7CisgICAgICAg
IGZvcmVhY2goJGNvbW1pdF9pbmZvWydzdWJDb21taXRzJ10gYXMgJHN1Yl9jb21taXRfcmVwb3Np
dG9yeV9uYW1lID0+ICRzdWJfY29tbWl0X2luZm8pIHsKKyAgICAgICAgICAgIGlmIChhcnJheV9r
ZXlfZXhpc3RzKCd0aW1lJywgJHN1Yl9jb21taXRfaW5mbykpIHsKICAgICAgICAgICAgICAgICAk
ZGItPnJvbGxiYWNrX3RyYW5zYWN0aW9uKCk7Ci0gICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vy
cm9yKCdGYWlsZWRUb0luc2VydENvbW1pdHRlcicsIGFycmF5KCdjb21taXR0ZXInID0+ICRjb21t
aXR0ZXJfZGF0YSkpOworICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignU3ViQ29tbWl0
U2hvdWxkTm90Q29udGFpblRpbWVzdGFtcCcsIGFycmF5KCdjb21taXQnID0+ICRzdWJfY29tbWl0
X2luZm8pKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgICRwcmV2aW91c19j
b21taXRfcmV2aXNpb24gPSBhcnJheV9nZXQoJGNvbW1pdF9pbmZvLCAncHJldmlvdXNDb21taXQn
KTsKLSAgICAgICAgJHByZXZpb3VzX2NvbW1pdF9pZCA9IE5VTEw7Ci0gICAgICAgIGlmICgkcHJl
dmlvdXNfY29tbWl0X3JldmlzaW9uKSB7Ci0gICAgICAgICAgICAkcHJldmlvdXNfY29tbWl0ID0g
JGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdjb21taXRzJywgJ2NvbW1pdCcsIGFycmF5KCdyZXBvc2l0
b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ3JldmlzaW9uJyA9PiAkcHJldmlvdXNfY29tbWl0X3Jl
dmlzaW9uKSk7Ci0gICAgICAgICAgICBpZiAoISRwcmV2aW91c19jb21taXQpIHsKKyAgICAgICAg
ICAgICRzdWJfY29tbWl0X3JlcG9zaXRvcnlfaWQgPSAkZGItPnNlbGVjdF9vcl9pbnNlcnRfcmVw
b3NpdG9yeV9yb3coJHN1Yl9jb21taXRfcmVwb3NpdG9yeV9uYW1lLCAkb3duZXJfcmVwb3NpdG9y
eV9pZCk7CisgICAgICAgICAgICBpZiAoISRzdWJfY29tbWl0X3JlcG9zaXRvcnlfaWQpIHsKICAg
ICAgICAgICAgICAgICAkZGItPnJvbGxiYWNrX3RyYW5zYWN0aW9uKCk7Ci0gICAgICAgICAgICAg
ICAgZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb0ZpbmRQcmV2aW91c0NvbW1pdCcsIGFycmF5KCdj
b21taXQnID0+ICRjb21taXRfaW5mbykpOworICAgICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJv
cignRmFpbGVkVG9JbnNlcnRSZXBvc2l0b3J5JywgYXJyYXkoJ2NvbW1pdCcgPT4gJHN1Yl9jb21t
aXRfaW5mbykpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgJHByZXZpb3VzX2NvbW1pdF9p
ZCA9ICRwcmV2aW91c19jb21taXRbJ2NvbW1pdF9pZCddOworICAgICAgICAgICAgaW5zZXJ0X2Nv
bW1pdCgkZGIsICRzdWJfY29tbWl0X2luZm8sICRzdWJfY29tbWl0X3JlcG9zaXRvcnlfaWQsICRv
d25lcl9jb21taXRfaWQpOwogICAgICAgICB9Ci0KLSAgICAgICAgJGRhdGEgPSBhcnJheSgKLSAg
ICAgICAgICAgICdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwKLSAgICAgICAgICAgICdy
ZXZpc2lvbicgPT4gJGNvbW1pdF9pbmZvWydyZXZpc2lvbiddLAotICAgICAgICAgICAgJ3ByZXZp
b3VzX2NvbW1pdCcgPT4gJHByZXZpb3VzX2NvbW1pdF9pZCwKLSAgICAgICAgICAgICdvcmRlcicg
PT4gYXJyYXlfZ2V0KCRjb21taXRfaW5mbywgJ29yZGVyJyksCi0gICAgICAgICAgICAndGltZScg
PT4gYXJyYXlfZ2V0KCRjb21taXRfaW5mbywgJ3RpbWUnKSwKLSAgICAgICAgICAgICdjb21taXR0
ZXInID0+ICRjb21taXR0ZXJfaWQsCi0gICAgICAgICAgICAnbWVzc2FnZScgPT4gYXJyYXlfZ2V0
KCRjb21taXRfaW5mbywgJ21lc3NhZ2UnKSwKLSAgICAgICAgICAgICdyZXBvcnRlZCcgPT4gdHJ1
ZSwKLSAgICAgICAgKTsKLSAgICAgICAgJGRiLT51cGRhdGVfb3JfaW5zZXJ0X3JvdygnY29tbWl0
cycsICdjb21taXQnLCBhcnJheSgncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQsICdyZXZp
c2lvbicgPT4gJGRhdGFbJ3JldmlzaW9uJ10pLCAkZGF0YSk7CiAgICAgfQogICAgICRkYi0+Y29t
bWl0X3RyYW5zYWN0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvaW5jbHVkZS9jb21taXQtbG9nLWZldGNoZXIucGhwIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1sb2ctZmV0Y2hlci5waHAKaW5kZXggNzQ3
MjgxOWZhOTNkZWQ3YTg1YWE3OGIwMTE1YWMxNjM1MTI2ZGVlMy4uMGQ0MjA1YWRhMDM2M2IwNGFh
NmQ4YWNmNmYzZTFiZDUwM2FiNGRhYiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1sb2ctZmV0Y2hlci5waHAKKysrIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1pdC1sb2ctZmV0Y2hlci5waHAKQEAg
LTI3LDEwICsyNywxMCBAQCBjbGFzcyBDb21taXRMb2dGZXRjaGVyIHsKIAogICAgIGZ1bmN0aW9u
IHJlcG9zaXRvcnlfaWRfZnJvbV9uYW1lKCRuYW1lKQogICAgIHsKLSAgICAgICAgJHJlcG9zaXRv
cnlfcm93ID0gJHRoaXMtPmRiLT5zZWxlY3RfZmlyc3Rfcm93KCdyZXBvc2l0b3JpZXMnLCAncmVw
b3NpdG9yeScsIGFycmF5KCduYW1lJyA9PiAkbmFtZSkpOworICAgICAgICAkcmVwb3NpdG9yeV9y
b3cgPSAkdGhpcy0+ZGItPnF1ZXJ5X2FuZF9mZXRjaF9hbGwoJ1NFTEVDVCByZXBvc2l0b3J5X2lk
IEZST00gcmVwb3NpdG9yaWVzIFdIRVJFIHJlcG9zaXRvcnlfbmFtZSA9ICQxIEFORCByZXBvc2l0
b3J5X293bmVyIGlzIE5VTEwnLCBhcnJheSgkbmFtZSkpOwogICAgICAgICBpZiAoISRyZXBvc2l0
b3J5X3JvdykKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXR1cm4gJHJlcG9z
aXRvcnlfcm93WydyZXBvc2l0b3J5X2lkJ107CisgICAgICAgIHJldHVybiAkcmVwb3NpdG9yeV9y
b3dbMF1bJ3JlcG9zaXRvcnlfaWQnXTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBmZXRjaF9iZXR3
ZWVuKCRyZXBvc2l0b3J5X2lkLCAkZmlyc3QsICRzZWNvbmQsICRrZXl3b3JkID0gTlVMTCkgewpk
aWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2RiLnBo
cCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9kYi5waHAKaW5kZXgg
ZDgwNWQ2NzYyMjNjY2I4NDUzOTIyNDRhM2Y3ZjYwZGRjNDU5OTgyNC4uMmU4MzIyODY1NDY1ZGRj
NTRlMWU3ZDhiYWMzMWJiYWM2OGM1MGJhMyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9pbmNsdWRlL2RiLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL2luY2x1ZGUvZGIucGhwCkBAIC0xODcsNiArMTg3LDIwIEBAIGNsYXNzIERhdGFi
YXNlCiAKICAgICAgICAgcmV0dXJuICRyb3dzID8gKCRyZXR1cm5pbmcgPT0gJyonID8gJHJvd3Nb
MF0gOiAkcm93c1swXVskcmV0dXJuaW5nX2NvbHVtbl9uYW1lXSkgOiBOVUxMOwogICAgIH0KKyAg
ICAvLyBGSVhNRTogU2hvdWxkIGltcHJvdmUgX3NlbGVjdF91cGRhdGVfb3JfaW5zZXJ0X3JvdyB0
byBoYW5kbGUgdGhlIE5VTEwgY29sdW1uIGNhc2UuCisgICAgZnVuY3Rpb24gc2VsZWN0X29yX2lu
c2VydF9yZXBvc2l0b3J5X3JvdygkcmVwb3NpdG9yeV9uYW1lLCAkcmVwb3NpdG9yeV9vd25lcl9p
ZCkKKyAgICB7CisgICAgICAgICRjb25kaXRpb24gPSAkcmVwb3NpdG9yeV9vd25lcl9pZCAhPSBO
VUxMID8gJyhyZXBvc2l0b3J5X25hbWUsIHJlcG9zaXRvcnlfb3duZXIpID0gKCQxLCAkMiknIDog
J3JlcG9zaXRvcnlfbmFtZSA9ICQxIEFORCByZXBvc2l0b3J5X293bmVyIElTIE5VTEwnOworCisg
ICAgICAgICRyZXN1bHQgPSAkdGhpcy0+cXVlcnlfYW5kX2ZldGNoX2FsbCgnSU5TRVJUIElOVE8g
cmVwb3NpdG9yaWVzIChyZXBvc2l0b3J5X25hbWUsIHJlcG9zaXRvcnlfb3duZXIpIFNFTEVDVCBD
QVNUKCQxIEFTIFZBUkNIQVIpLCAkMgorICAgICAgICAgICAgV0hFUkUgTk9UIEVYSVNUUyAoU0VM
RUNUIHJlcG9zaXRvcnlfaWQgRlJPTSByZXBvc2l0b3JpZXMgV0hFUkUgJyAuJGNvbmRpdGlvbi4g
JykgUkVUVVJOSU5HIHJlcG9zaXRvcnlfaWQnLAorICAgICAgICAgICAgYXJyYXkoJHJlcG9zaXRv
cnlfbmFtZSwgJHJlcG9zaXRvcnlfb3duZXJfaWQpKTsKKworICAgICAgICBpZiAoISRyZXN1bHQp
CisgICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnF1ZXJ5X2FuZF9mZXRjaF9hbGwoJ1NFTEVD
VCByZXBvc2l0b3J5X2lkIEZST00gcmVwb3NpdG9yaWVzIFdIRVJFICcgLiAkY29uZGl0aW9uLCAk
cmVwb3NpdG9yeV9vd25lcl9pZCAhPSBOVUxMID8gYXJyYXkoJHJlcG9zaXRvcnlfbmFtZSwgJHJl
cG9zaXRvcnlfb3duZXJfaWQpIDogYXJyYXkoJHJlcG9zaXRvcnlfbmFtZSkpOworICAgICAgICBy
ZXR1cm4gJHJlc3VsdCA/ICRyZXN1bHRbMF1bJ3JlcG9zaXRvcnlfaWQnXSA6IE5VTEw7CisgICAg
fQorCiAKICAgICBmdW5jdGlvbiBzZWxlY3RfZmlyc3Rfcm93KCR0YWJsZSwgJHByZWZpeCwgJHBh
cmFtcywgJG9yZGVyX2J5ID0gTlVMTCkgewogICAgICAgICByZXR1cm4gJHRoaXMtPnNlbGVjdF9m
aXJzdF9vcl9sYXN0X3JvdygkdGFibGUsICRwcmVmaXgsICRwYXJhbXMsICRvcmRlcl9ieSwgRkFM
U0UpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRl
L21hbmlmZXN0LWdlbmVyYXRvci5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L2luY2x1ZGUvbWFuaWZlc3QtZ2VuZXJhdG9yLnBocAppbmRleCBlODk0MGZkNmRiNDRhOTAzMGZk
MTVkYjJlZDA2NzRjNWZjZGQ4Mjg1Li45ZWM3NzJjNWUzMzI4ZjZlZjA3N2JkZjQ0Zjk2NTdlZDJh
NmIzZjQxIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1
ZGUvbWFuaWZlc3QtZ2VuZXJhdG9yLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL2luY2x1ZGUvbWFuaWZlc3QtZ2VuZXJhdG9yLnBocApAQCAtMTM4LDYgKzEzOCw3IEBA
IGNsYXNzIE1hbmlmZXN0R2VuZXJhdG9yIHsKICAgICAgICAgICAgICAgICAnbmFtZScgPT4gJHJv
d1sncmVwb3NpdG9yeV9uYW1lJ10sCiAgICAgICAgICAgICAgICAgJ3VybCcgPT4gJHJvd1sncmVw
b3NpdG9yeV91cmwnXSwKICAgICAgICAgICAgICAgICAnYmxhbWVVcmwnID0+ICRyb3dbJ3JlcG9z
aXRvcnlfYmxhbWVfdXJsJ10sCisgICAgICAgICAgICAgICAgJ293bmVyJz0+ICRyb3dbJ3JlcG9z
aXRvcnlfb3duZXInXSwKICAgICAgICAgICAgICAgICAnaGFzUmVwb3J0ZWRDb21taXRzJyA9PiBp
bl9hcnJheSgkcm93WydyZXBvc2l0b3J5X2lkJ10sICRyZXBvc2l0b3JpZXNfd2l0aF9jb21taXQp
KTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL2luY2x1ZGUvcmVwb3J0LXByb2Nlc3Nvci5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL2luY2x1ZGUvcmVwb3J0LXByb2Nlc3Nvci5waHAKaW5kZXggYjU4Y2E4MTE1ZTIy
OGI3Y2FiYzRhMjExMzYzNTBkOWQ5OTFjNmMwOC4uNDkwODk4MGI4MTQ2ZDVhMTRkMWQ4NWU5NWY3
NmE0NDliODUzY2E4NSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy9pbmNsdWRlL3JlcG9ydC1wcm9jZXNzb3IucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvaW5jbHVkZS9yZXBvcnQtcHJvY2Vzc29yLnBocApAQCAtMTUwLDcgKzE1MCw3
IEBAIGNsYXNzIFJlcG9ydFByb2Nlc3NvciB7CiAKIAogICAgICAgICBmb3JlYWNoICgkcmV2aXNp
b25zIGFzICRyZXBvc2l0b3J5X25hbWUgPT4gJHJldmlzaW9uX2RhdGEpIHsKLSAgICAgICAgICAg
ICRyZXBvc2l0b3J5X2lkID0gJHRoaXMtPmRiLT5zZWxlY3Rfb3JfaW5zZXJ0X3JvdygncmVwb3Np
dG9yaWVzJywgJ3JlcG9zaXRvcnknLCBhcnJheSgnbmFtZScgPT4gJHJlcG9zaXRvcnlfbmFtZSkp
OworICAgICAgICAgICAgJHJlcG9zaXRvcnlfaWQgPSAkdGhpcy0+ZGItPnNlbGVjdF9vcl9pbnNl
cnRfcmVwb3NpdG9yeV9yb3coJHJlcG9zaXRvcnlfbmFtZSwgTlVMTCk7CiAgICAgICAgICAgICBp
ZiAoISRyZXBvc2l0b3J5X2lkKQogICAgICAgICAgICAgICAgICR0aGlzLT5leGl0X3dpdGhfZXJy
b3IoJ0ZhaWxlZFRvSW5zZXJ0UmVwb3NpdG9yeScsIGFycmF5KCduYW1lJyA9PiAkcmVwb3NpdG9y
eV9uYW1lKSk7CiAKQEAgLTMwOSw3ICszMDksNyBAQCBjbGFzcyBUZXN0UnVuc0dlbmVyYXRvciB7
CiAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFnZ3JlZ2F0b3JzX2FuZF92YWx1ZXMgYXMgJGFn
Z3JlZ2F0b3JfYW5kX3ZhbHVlcykgewogICAgICAgICAgICAgICAgICAgICBpZiAoJGFnZ3JlZ2F0
b3JfYW5kX3ZhbHVlc1snYWdncmVnYXRvciddID09ICRhZ2dyZWdhdG9yKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAkdmFsdWVzID0gJGFnZ3JlZ2F0b3JfYW5kX3ZhbHVlc1sndmFsdWVzJ107
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghJHZhbHVlcykgewpAQCAtNDA0
LDcgKzQwNCw3IEBAIGNsYXNzIFRlc3RSdW5zR2VuZXJhdG9yIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICRpdGVyYXRpb25fdmFsdWUgPSAkaXRl
cmF0aW9uX3ZhbHVlWzFdOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGFycmF5X3B1c2goJGZsYXR0ZW5lZF92YWx1ZSwgJGl0ZXJhdGlvbl92YWx1ZSk7ICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkZmxhdHRlbmVk
X3ZhbHVlLCAkaXRlcmF0aW9uX3ZhbHVlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAkdGhpcy0+dmFsdWVzX3RvX2NvbW1pdFskaV1bJ21lYW4nXSA9ICR0
aGlzLT5hZ2dyZWdhdGVfdmFsdWVzKCdBcml0aG1ldGljJywgJGZsYXR0ZW5lZF92YWx1ZSk7CmRp
ZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9yZXBv
c2l0b3J5LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvcmVw
b3NpdG9yeS5qcwppbmRleCA1MTkyZmQwYmVjMDk4N2Y5ZTYwMzJkOWM0YThmMWY2OGE2ZmJlYTlm
Li44YzJhY2FlZjMzY2Q3ZjgzMzVhMmViODJjYTkwZmQ3ODBkYjZkYmM2IDEwMDY0NAotLS0gYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9yZXBvc2l0b3J5LmpzCisr
KyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3JlcG9zaXRvcnku
anMKQEAgLTcsNiArNyw3IEBAIGNsYXNzIFJlcG9zaXRvcnkgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0
IHsKICAgICAgICAgdGhpcy5fdXJsID0gb2JqZWN0LnVybDsKICAgICAgICAgdGhpcy5fYmxhbWVV
cmwgPSBvYmplY3QuYmxhbWVVcmw7CiAgICAgICAgIHRoaXMuX2hhc1JlcG9ydGVkQ29tbWl0cyA9
IG9iamVjdC5oYXNSZXBvcnRlZENvbW1pdHM7CisgICAgICAgIHRoaXMuX293bmVyID0gb2JqZWN0
Lm93bmVyOwogICAgIH0KIAogICAgIGhhc1VybEZvclJldmlzaW9uKCkgeyByZXR1cm4gISF0aGlz
Ll91cmw7IH0KQEAgLTIxLDYgKzIyLDExIEBAIGNsYXNzIFJlcG9zaXRvcnkgZXh0ZW5kcyBMYWJl
bGVkT2JqZWN0IHsKICAgICAgICAgcmV0dXJuICh0aGlzLl9ibGFtZVVybCB8fCAnJykucmVwbGFj
ZSgvXCQxL2csIGZyb20pLnJlcGxhY2UoL1wkMi9nLCB0byk7CiAgICAgfQogCisgICAgb3duZXIo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX293bmVyOworICAgIH0KKwogICAgIHN0YXRp
YyBzb3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKHJlcG9zaXRvcmllcykKICAgICB7CiAg
ICAgICAgIHJldHVybiByZXBvc2l0b3JpZXMuc29ydChmdW5jdGlvbiAoYSwgYikgewpkaWZmIC0t
Z2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hZG1pbi1yZXByb2Nl
c3MtcmVwb3J0LXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0
cy9hZG1pbi1yZXByb2Nlc3MtcmVwb3J0LXRlc3RzLmpzCmluZGV4IGRlZjRkY2Y1NzM2OWE3Zjk2
NDBmODI3YjI0ZWU4MDJiNmNmNmZmYTguLmYyYjZmYjQ4OGU1MTQ2NmMzNzY2MWUyZjc2YTEzZmFi
N2UwNzEwYTcgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVz
dHMvYWRtaW4tcmVwcm9jZXNzLXJlcG9ydC10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvc2VydmVyLXRlc3RzL2FkbWluLXJlcHJvY2Vzcy1yZXBvcnQtdGVzdHMuanMKQEAg
LTI0LDYgKzI0LDQwIEBAIGRlc2NyaWJlKCIvYWRtaW4vcmVwcm9jZXNzLXJlcG9ydCIsIGZ1bmN0
aW9uICgpIHsKICAgICAgICAgICAgIH0sCiAgICAgICAgIH1dOwogCisgICAgY29uc3Qgc2ltcGxl
UmVwb3J0V2l0aFJldmlzaW9ucyA9IFt7CisgICAgICAgICJidWlsZE51bWJlciI6ICIxOTg2IiwK
KyAgICAgICAgImJ1aWxkVGltZSI6ICIyMDEzLTAyLTI4VDEwOjEyOjAzIiwKKyAgICAgICAgImJ1
aWxkZXJOYW1lIjogInNvbWVCdWlsZGVyIiwKKyAgICAgICAgImJ1aWxkZXJQYXNzd29yZCI6ICJz
b21lUGFzc3dvcmQiLAorICAgICAgICAicGxhdGZvcm0iOiAiTW91bnRhaW4gTGlvbiIsCisgICAg
ICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgIm1ldHJpY3MiOiB7IkZyYW1lUmF0ZSI6IHsgImN1cnJlbnQiOiBbWzEsIDIsIDNdLCBb
NCwgNSwgNl1dIH19CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICJyZXZpc2lvbnMiOiB7CisgICAgICAgICAgICAgICAgIldlYktpdCI6IHsKKyAgICAgICAgICAg
ICAgICAidGltZXN0YW1wIjogIjIwMTctMDMtMDFUMDk6Mzg6NDQuODI2ODMzWiIsCisgICAgICAg
ICAgICAgICAgInJldmlzaW9uIjogIjIxMzIxNCIKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH1dOworCisgICAgaXQoInNob3VsZCBzdGlsbCBjcmVhdGUgbmV3IHJl
cG9zaXRvcnkgd2hlbiByZXBvc2l0b3J5IG93bmVyc2hpcHMgYXJlIGRpZmZlcmVudCIsIGZ1bmN0
aW9uIChkb25lKSB7CisgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAg
ICAgICAgYWRkQnVpbGRlckZvclJlcG9ydChzaW1wbGVSZXBvcnRXaXRoUmV2aXNpb25zWzBdKS50
aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBkYi5pbnNlcnQoJ3JlcG9zaXRv
cmllcycsIHsnbmFtZSc6ICdXZWJLaXQnLCAnb3duZXInOiAxfSk7CisgICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCku
cG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHNpbXBsZVJlcG9ydFdpdGhSZXZpc2lvbnMpOworICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICByZXR1cm4gZGIuc2Vs
ZWN0Um93cygncmVwb3NpdG9yaWVzJywgeyduYW1lJzogJ1dlYktpdCd9KTsKKyAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAocmVwb3NpdG9yaWVzKSB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVwb3NpdG9yaWVzLmxlbmd0aCwgMik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0p
LmNhdGNoKGRvbmUpOworICAgIH0pOworCiAgICAgaXQoInNob3VsZCBhZGQgYnVpbGQiLCBmdW5j
dGlvbiAoZG9uZSkgewogICAgICAgICBsZXQgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAg
ICAgICAgIGxldCByZXBvcnRJZDsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvYXBpLW1hbmlmZXN0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3NlcnZlci10ZXN0cy9hcGktbWFuaWZlc3QuanMKaW5kZXggZjVhNTBiZWFmYjYxZWFiMDhiY2My
MGVmODM4MmZlNjJkNWNhY2RiZi4uNzZiYTJkZTU2OThlZjczOWUxMGEzYTBmYTA0NGVmMzcwOTVh
YWE0ZSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9h
cGktbWFuaWZlc3QuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0
cy9hcGktbWFuaWZlc3QuanMKQEAgLTI4Miw2ICsyODIsNyBAQCBkZXNjcmliZSgnL2FwaS9tYW5p
ZmVzdCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgUHJvbWlzZS5hbGwoWwogICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IDExLCBuYW1lOiAnV2ViS2l0JywgdXJsOiAn
aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvJDEnfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3Jl
cG9zaXRvcmllcycsIHtpZDogOSwgbmFtZTogJ09TIFgnfSksCisgICAgICAgICAgICBkYi5pbnNl
cnQoJ3JlcG9zaXRvcmllcycsIHtpZDogMTAxLCBuYW1lOiAnV2ViS2l0Jywgb3duZXI6IDksIHVy
bDogJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnLyQxJ30pLAogICAgICAgICAgICAgZGIuaW5zZXJ0
KCdidWlsZF90cmlnZ2VyYWJsZXMnLCB7aWQ6IDIwMCwgbmFtZTogJ2J1aWxkLndlYmtpdC5vcmcn
fSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3RyaWdnZXJhYmxlcycsIHtpZDogMjAx
LCBuYW1lOiAnaW9zLWJ1aWxkLndlYmtpdC5vcmcnfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQo
J3Rlc3RzJywge2lkOiAxLCBuYW1lOiAnU29tZVRlc3QnfSksCkBAIC0zMTEsNiArMzEyLDExIEBA
IGRlc2NyaWJlKCcvYXBpL21hbmlmZXN0JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHdlYmtpdC5uYW1lKCksICdXZWJLaXQnKTsKICAgICAgICAgICAgIGFzc2VydC5l
cXVhbCh3ZWJraXQudXJsRm9yUmV2aXNpb24oMTIzKSwgJ2h0dHBzOi8vdHJhYy53ZWJraXQub3Jn
LzEyMycpOwogCisgICAgICAgICAgICBsZXQgd2Via2l0MSA9IFJlcG9zaXRvcnkuZmluZEJ5SWQo
MTAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXQxLm5hbWUoKSwgJ1dlYktpdCcp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdDEub3duZXIoKSwgOSk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwod2Via2l0MS51cmxGb3JSZXZpc2lvbigxMjMpLCAnaHR0cHM6Ly90
cmFjLndlYmtpdC5vcmcvMTIzJyk7CisKICAgICAgICAgICAgIGxldCBvc3ggPSBSZXBvc2l0b3J5
LmZpbmRCeUlkKDkpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeC5uYW1lKCksICdPUyBY
Jyk7CiAKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMv
YXBpLXJlcG9ydC1jb21taXRzLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Nl
cnZlci10ZXN0cy9hcGktcmVwb3J0LWNvbW1pdHMtdGVzdHMuanMKaW5kZXggOTNkMWFkOWZhYTMz
ZGZhNDIyODI1ZWNkMzA1MWEzNzkwNGEwMzY4YS4uZWMyOWU2MzIzMzc0MTcwYjRlNDQ5N2NiMjRl
ZjQzNDNiZGRiNGY3ZSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZl
ci10ZXN0cy9hcGktcmVwb3J0LWNvbW1pdHMtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktcmVwb3J0LWNvbW1pdHMtdGVzdHMuanMKQEAgLTc4
LDYgKzc4LDEzNSBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQtY29tbWl0cy8iLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgIF0KICAgICB9CiAKKyAgICBjb25zdCBzeXN0ZW1WZXJzaW9uQ29tbWl0V2l0
aFN1YmNvbW1pdHMgPSB7CisgICAgICAgICJzbGF2ZU5hbWUiOiAic29tZVNsYXZlIiwKKyAgICAg
ICAgInNsYXZlUGFzc3dvcmQiOiAic29tZVBhc3N3b3JkIiwKKyAgICAgICAgImNvbW1pdHMiOiBb
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiT1NYIiwKKyAg
ICAgICAgICAgICAgICAicmV2aXNpb24iOiAiU2llcnJhMTZEMzIiLAorICAgICAgICAgICAgICAg
ICJvcmRlciI6IDEsCisgICAgICAgICAgICAgICAgInN1YkNvbW1pdHMiOiB7CisgICAgICAgICAg
ICAgICAgICAgICJXZWJLaXQiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAicmV2aXNpb24i
OiAiMTQxOTc4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJhdXRob3IiOiB7Im5hbWUiOiAi
Q29tbWl0IFF1ZXVlIiwgImFjY291bnQiOiAiY29tbWl0LXF1ZXVlQHdlYmtpdC5vcmcifSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIjogIldlYktpdCBDb21taXQiLAorICAgICAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiSmF2YVNjcmlwdENvcmUiOiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAicmV2aXNpb24iOiAiMTQxOTc4IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJhdXRob3IiOiB7Im5hbWUiOiAiTWlraGFpbCBQb3pkbnlha292Iiwg
ImFjY291bnQiOiAibWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbSJ9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgIm1lc3NhZ2UiOiAiSmF2YVNjcmlwdENvcmUgY29tbWl0IiwKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
XQorICAgIH0KKworICAgIGNvbnN0IHN5c3RlbVZlcnNpb25Db21taXRXaXRoRW1wdHlTdWJjb21t
aXRzID0geworICAgICAgICAic2xhdmVOYW1lIjogInNvbWVTbGF2ZSIsCisgICAgICAgICJzbGF2
ZVBhc3N3b3JkIjogInNvbWVQYXNzd29yZCIsCisgICAgICAgICJjb21taXRzIjogWworICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIk9TWCIsCisgICAgICAgICAg
ICAgICAgInJldmlzaW9uIjogIlNpZXJyYTE2RDMyIiwKKyAgICAgICAgICAgICAgICAib3JkZXIi
OiAxLAorICAgICAgICAgICAgICAgICJzdWJDb21taXRzIjogeworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgXQorICAgIH0KKworICAgIGNvbnN0IHN5c3RlbVZlcnNp
b25Db21taXRBbmRTdWJjb21taXRXaXRoVGltZXN0YW1wID0geworICAgICAgICAic2xhdmVOYW1l
IjogInNvbWVTbGF2ZSIsCisgICAgICAgICJzbGF2ZVBhc3N3b3JkIjogInNvbWVQYXNzd29yZCIs
CisgICAgICAgICJjb21taXRzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJy
ZXBvc2l0b3J5IjogIk9TWCIsCisgICAgICAgICAgICAgICAgInJldmlzaW9uIjogIlNpZXJyYTE2
RDMyIiwKKyAgICAgICAgICAgICAgICAib3JkZXIiOiAxLAorICAgICAgICAgICAgICAgICJzdWJD
b21taXRzIjogeworICAgICAgICAgICAgICAgICAgICAiV2ViS2l0IjogeworICAgICAgICAgICAg
ICAgICAgICAgICAgInJldmlzaW9uIjogIjE0MTk3OCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAidGltZSI6ICIyMDEzLTAyLTA2VDA4OjU1OjIwLjlaIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJhdXRob3IiOiB7Im5hbWUiOiAiQ29tbWl0IFF1ZXVlIiwgImFjY291bnQiOiAiY29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmcifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIjog
IldlYktpdCBDb21taXQiLAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICBdCisgICAgfQorCisgICAgY29uc3QgbXVsdGlwbGVT
eXN0ZW1WZXJzaW9uQ29tbWl0c1dpdGhTdWJjb21taXRzID0geworICAgICAgICAic2xhdmVOYW1l
IjogInNvbWVTbGF2ZSIsCisgICAgICAgICJzbGF2ZVBhc3N3b3JkIjogInNvbWVQYXNzd29yZCIs
CisgICAgICAgICJjb21taXRzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJy
ZXBvc2l0b3J5IjogIk9TWCIsCisgICAgICAgICAgICAgICAgInJldmlzaW9uIjogIlNpZXJyYTE2
RDMyIiwKKyAgICAgICAgICAgICAgICAib3JkZXIiOiAyLAorICAgICAgICAgICAgICAgICJzdWJD
b21taXRzIjogeworICAgICAgICAgICAgICAgICAgICAiV2ViS2l0IjogeworICAgICAgICAgICAg
ICAgICAgICAgICAgInJldmlzaW9uIjogIjE0MTk3OCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAiYXV0aG9yIjogeyJuYW1lIjogIkNvbW1pdCBRdWV1ZSIsICJhY2NvdW50IjogImNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSI6ICJX
ZWJLaXQgQ29tbWl0IiwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgIkphdmFTY3JpcHRDb3JlIjogeworICAgICAgICAgICAgICAgICAgICAgICAgInJldmlzaW9u
IjogIjE0MTk3OCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjog
Ik1pa2hhaWwgUG96ZG55YWtvdiIsICJhY2NvdW50IjogIm1pa2hhaWwucG96ZG55YWtvdkBpbnRl
bC5jb20ifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIjogIkphdmFTY3JpcHRD
b3JlIGNvbW1pdCIsCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5
IjogIk9TWCIsCisgICAgICAgICAgICAgICAgInJldmlzaW9uIjogIlNpZXJyYTE2QzY3IiwKKyAg
ICAgICAgICAgICAgICAib3JkZXIiOiAxLAorICAgICAgICAgICAgICAgICJzdWJDb21taXRzIjog
eworICAgICAgICAgICAgICAgICAgICAiV2ViS2l0IjogeworICAgICAgICAgICAgICAgICAgICAg
ICAgInJldmlzaW9uIjogIjE0MTk3OCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiYXV0aG9y
IjogeyJuYW1lIjogIkNvbW1pdCBRdWV1ZSIsICJhY2NvdW50IjogImNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSI6ICJXZWJLaXQgQ29t
bWl0IiwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgIkphdmFT
Y3JpcHRDb3JlIjogeworICAgICAgICAgICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE0MTk5
OSIsCisgICAgICAgICAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIk1pa2hhaWwg
UG96ZG55YWtvdiIsICJhY2NvdW50IjogIm1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20ifSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIjogIm5ldyBKYXZhU2NyaXB0Q29yZSBj
b21taXQiLAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICBdCisgICAgfQorCisgICAgY29uc3Qgc2FtZVJlcG9zaXRvcnlOYW1l
SW5TdWJDb21taXRBbmRNYWpvckNvbW1pdCA9IHsKKyAgICAgICAgInNsYXZlTmFtZSI6ICJzb21l
U2xhdmUiLAorICAgICAgICAic2xhdmVQYXNzd29yZCI6ICJzb21lUGFzc3dvcmQiLAorICAgICAg
ICAiY29tbWl0cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9y
eSI6ICJPU1giLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICJTaWVycmExNkQzMiIsCisg
ICAgICAgICAgICAgICAgIm9yZGVyIjogMSwKKyAgICAgICAgICAgICAgICAic3ViQ29tbWl0cyI6
IHsKKyAgICAgICAgICAgICAgICAgICAgIldlYktpdCI6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJyZXZpc2lvbiI6ICIxNDE5NzgiLAorICAgICAgICAgICAgICAgICAgICAgICAgImF1dGhv
ciI6IHsibmFtZSI6ICJDb21taXQgUXVldWUiLCAiYWNjb3VudCI6ICJjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZyJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiOiAiV2ViS2l0IENv
bW1pdCIsCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJKYXZh
U2NyaXB0Q29yZSI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNDE5
NzgiLAorICAgICAgICAgICAgICAgICAgICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJNaWtoYWls
IFBvemRueWFrb3YiLCAiYWNjb3VudCI6ICJtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tIn0s
CisgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSI6ICJKYXZhU2NyaXB0Q29yZSBjb21t
aXQiLAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJXZWJL
aXQiLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNDE5NzgiLAorICAgICAgICAgICAg
ICAgICJhdXRob3IiOiB7Im5hbWUiOiAiQ29tbWl0IFF1ZXVlIiwgImFjY291bnQiOiAiY29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmcifSwKKyAgICAgICAgICAgICAgICAibWVzc2FnZSI6ICJXZWJLaXQg
Q29tbWl0IiwKKyAgICAgICAgICAgIH0KKyAgICAgICAgXQorICAgIH0KKwogICAgIGl0KCJzaG91
bGQgcmVqZWN0IGVycm9yIHdoZW4gc2xhdmUgbmFtZSBpcyBtaXNzaW5nIiwgZnVuY3Rpb24gKGRv
bmUpIHsKICAgICAgICAgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBv
cnQtY29tbWl0cy8nLCB7fSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdNaXNzaW5nU2xhdmVOYW1lJyk7CkBA
IC0yODcsNCArNDE2LDE3MSBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQtY29tbWl0cy8iLCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgIH0pLmNhdGNoKGRvbmUpOwogICAgIH0pOwogCisgICAgaXQoInNo
b3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHJlcG9zaXRvcnkgd2l0aCBzYW1lIG5hbWUgYnV0IGRp
ZmZlcmVudCBvd25lciIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIGNvbnN0IGRiID0gVGVz
dFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBhZGRTbGF2ZUZvclJlcG9ydChzYW1lUmVwb3Np
dG9yeU5hbWVJblN1YkNvbW1pdEFuZE1ham9yQ29tbWl0KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3Jl
cG9ydC1jb21taXRzLycsIHNhbWVSZXBvc2l0b3J5TmFtZUluU3ViQ29tbWl0QW5kTWFqb3JDb21t
aXQpOworICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICByZXR1
cm4gZGIuc2VsZWN0Um93cygncmVwb3NpdG9yaWVzJywgeyduYW1lJzogJ1dlYktpdCd9KTsKKyAg
ICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzdWx0Lmxlbmd0aCwgMik7CisgICAgICAgICAgICBsZXQgd2Via2l0UmVwb3NpdG9yeTAg
PSByZXN1bHRbMF07CisgICAgICAgICAgICBsZXQgd2Via2l0UmVwb3NpdG9yeTEgPSByZXN1bHRb
MV07CisgICAgICAgICAgICBhc3NlcnQubm90RXF1YWwod2Via2l0UmVwb3NpdG9yeTAuaWQsIHdl
YmtpdFJlcG9zaXRvcnkxLmlkKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXRSZXBv
c2l0b3J5MC5uYW1lLCB3ZWJraXRSZXBvc2l0b3J5MS5uYW1lKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbCh3ZWJraXRSZXBvc2l0b3J5MS5vd25lciwgbnVsbCk7CisgICAgICAgICAgICBkb25l
KCk7CisgICAgICAgIH0pCisgICAgfSk7CisKKyAgICBpdCgic2hvdWxkIGFjY2VwdCBpbnNlcnRp
bmcgb25lIGNvbW1pdCB3aXRoIHNvbWUgc3ViIGNvbW1pdHMiLCBmdW5jdGlvbiAoZG9uZSkgewor
ICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgYWRkU2xh
dmVGb3JSZXBvcnQoc3lzdGVtVmVyc2lvbkNvbW1pdFdpdGhTdWJjb21taXRzKS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RK
U09OKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNpb25Db21taXRXaXRoU3ViY29t
bWl0cyk7CisgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgIHJl
dHVybiBQcm9taXNlLmFsbChbZGIuc2VsZWN0Um93cygnY29tbWl0cycsIHsncmV2aXNpb24nOiAn
U2llcnJhMTZEMzInfSksCisgICAgICAgICAgICAgICAgZGIuc2VsZWN0Um93cygnY29tbWl0cycs
IHsnbWVzc2FnZSc6ICdXZWJLaXQgQ29tbWl0J30pLAorICAgICAgICAgICAgICAgIGRiLnNlbGVj
dFJvd3MoJ2NvbW1pdHMnLCB7J21lc3NhZ2UnOiAnSmF2YVNjcmlwdENvcmUgY29tbWl0J30pLAor
ICAgICAgICAgICAgICAgIGRiLnNlbGVjdFJvd3MoJ3JlcG9zaXRvcmllcycsIHsnbmFtZSc6ICdP
U1gnfSksCisgICAgICAgICAgICAgICAgZGIuc2VsZWN0Um93cygncmVwb3NpdG9yaWVzJywgeydu
YW1lJzogIldlYktpdCJ9KSwKKyAgICAgICAgICAgICAgICBkYi5zZWxlY3RSb3dzKCdyZXBvc2l0
b3JpZXMnLCB7J25hbWUnOiAnSmF2YVNjcmlwdENvcmUnfSldKQorICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHQubGVuZ3RoLCA2KTsK
KyAgICAgICAgICAgIGFzc2VydChyZXN1bHRbMF0ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFz
c2VydChyZXN1bHRbMV0ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHRbMl0u
bGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHRbM10ubGVuZ3RoLCAxKTsKKyAg
ICAgICAgICAgIGFzc2VydChyZXN1bHRbNF0ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2Vy
dChyZXN1bHRbNV0ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGNvbnN0IG9zeENvbW1pdCA9IHJl
c3VsdFswXVswXTsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdENvbW1pdCA9IHJlc3VsdFsxXVsw
XTsKKyAgICAgICAgICAgIGNvbnN0IGpzY0NvbW1pdCA9IHJlc3VsdFsyXVswXTsKKyAgICAgICAg
ICAgIGNvbnN0IG9zeFJlcG9zaXRvcnkgPSByZXN1bHRbM11bMF07CisgICAgICAgICAgICBjb25z
dCB3ZWJraXRSZXBvc2l0b3J5ID0gcmVzdWx0WzRdWzBdOworICAgICAgICAgICAgY29uc3QganNj
UmVwb3NpdG9yeSA9IHJlc3VsdFs1XVswXTsKKworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFs
KG9zeENvbW1pdCwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQubm90RXF1YWwod2Via2l0Q29t
bWl0LCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChqc2NDb21taXQsIG51bGwp
OworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKG9zeFJlcG9zaXRvcnksIG51bGwpOworICAg
ICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKHdlYmtpdFJlcG9zaXRvcnksIG51bGwpOworICAgICAg
ICAgICAgYXNzZXJ0Lm5vdEVxdWFsKGpzY1JlcG9zaXRvcnksIG51bGwpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKG9zeFJlcG9zaXRvcnkub3duZXIsIG51bGwpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHdlYmtpdFJlcG9zaXRvcnkub3duZXIsIG9zeFJlcG9zaXRvcnkuaWQpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGpzY1JlcG9zaXRvcnkub3duZXIsIG9zeFJlcG9zaXRvcnku
aWQpOworCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW2RiLnNlbGVjdFJvd3MoJ2Nv
bW1pdF9vd25lcnNoaXBzJywgeydvd25lcic6IG9zeENvbW1pdC5pZCwgJ293bmVkJzogd2Via2l0
Q29tbWl0LmlkfSwgeydzb3J0QnknOiAnb3duZXInfSksCisgICAgICAgICAgICAgICAgZGIuc2Vs
ZWN0Um93cygnY29tbWl0X293bmVyc2hpcHMnLCB7J293bmVyJzogb3N4Q29tbWl0LmlkLCAnb3du
ZWQnOiBqc2NDb21taXQuaWR9LCB7J3NvcnRCeSc6ICdvd25lcid9KV0pOworICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHQubGVuZ3Ro
LCAyKTsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHRbMF0ubGVuZ3RoLCAxKTsKKyAgICAgICAg
ICAgIGFzc2VydChyZXN1bHRbMV0ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGNvbnN0IG93bmVy
Q29tbWl0Rm9yV2ViS2l0Q29tbWl0ID0gcmVzdWx0WzBdWzBdOworICAgICAgICAgICAgY29uc3Qg
b3duZXJDb21taXRGb3JKU0NDb21taXQgPSAgcmVzdWx0WzFdWzBdOworICAgICAgICAgICAgYXNz
ZXJ0Lm5vdEVxdWFsKG93bmVyQ29tbWl0Rm9yV2ViS2l0Q29tbWl0LCBudWxsKTsKKyAgICAgICAg
ICAgIGFzc2VydC5ub3RFcXVhbChvd25lckNvbW1pdEZvckpTQ0NvbW1pdCwgbnVsbCk7CisgICAg
ICAgICAgICBkb25lKCk7CisgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgIH0pOworCisgICAg
aXQoInNob3VsZCBhY2NlcHQgaW5zZXJ0aW5nIG11bHRpcGxlIGNvbW1pdHMgd2l0aCBtdWx0aXBs
ZSBzdWItY29tbWl0cyIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIGNvbnN0IGRiID0gVGVz
dFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBhZGRTbGF2ZUZvclJlcG9ydChtdWx0aXBsZVN5
c3RlbVZlcnNpb25Db21taXRzV2l0aFN1YmNvbW1pdHMpLnRoZW4oZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVw
b3J0LWNvbW1pdHMvJywgbXVsdGlwbGVTeXN0ZW1WZXJzaW9uQ29tbWl0c1dpdGhTdWJjb21taXRz
KTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgcmV0dXJu
IFByb21pc2UuYWxsKFtkYi5zZWxlY3RSb3dzKCdjb21taXRzJywgeydyZXZpc2lvbic6ICdTaWVy
cmExNkQzMid9KSwKKyAgICAgICAgICAgICAgICBkYi5zZWxlY3RSb3dzKCdjb21taXRzJywgeydy
ZXZpc2lvbic6ICdTaWVycmExNkM2Nyd9KSwKKyAgICAgICAgICAgICAgICBkYi5zZWxlY3RSb3dz
KCdjb21taXRzJywgeydtZXNzYWdlJzogJ1dlYktpdCBDb21taXQnfSksCisgICAgICAgICAgICAg
ICAgZGIuc2VsZWN0Um93cygnY29tbWl0cycsIHsnbWVzc2FnZSc6ICdKYXZhU2NyaXB0Q29yZSBj
b21taXQnfSksCisgICAgICAgICAgICAgICAgZGIuc2VsZWN0Um93cygnY29tbWl0cycsIHsnbWVz
c2FnZSc6ICduZXcgSmF2YVNjcmlwdENvcmUgY29tbWl0J30pLAorICAgICAgICAgICAgICAgIGRi
LnNlbGVjdFJvd3MoJ3JlcG9zaXRvcmllcycsIHsnbmFtZSc6ICdPU1gnfSksCisgICAgICAgICAg
ICAgICAgZGIuc2VsZWN0Um93cygncmVwb3NpdG9yaWVzJywgeyduYW1lJzogIldlYktpdCJ9KSwK
KyAgICAgICAgICAgICAgICBkYi5zZWxlY3RSb3dzKCdyZXBvc2l0b3JpZXMnLCB7J25hbWUnOiAn
SmF2YVNjcmlwdENvcmUnfSldKQorICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsK
KyAgICAgICAgICAgIGFzc2VydChyZXN1bHQubGVuZ3RoLCA4KTsKKyAgICAgICAgICAgIGFzc2Vy
dChyZXN1bHRbMF0ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHRbMV0ubGVu
Z3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHRbMl0ubGVuZ3RoLCAxKTsKKyAgICAg
ICAgICAgIGFzc2VydChyZXN1bHRbM10ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydChy
ZXN1bHRbNF0ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHRbNV0ubGVuZ3Ro
LCAxKTsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHRbNl0ubGVuZ3RoLCAxKTsKKyAgICAgICAg
ICAgIGFzc2VydChyZXN1bHRbN10ubGVuZ3RoLCAxKTsKKworICAgICAgICAgICAgY29uc3Qgb3N4
Q29tbWl0MCA9IHJlc3VsdFswXVswXTsKKyAgICAgICAgICAgIGNvbnN0IG9zeENvbW1pdDEgPSBy
ZXN1bHRbMV1bMF07CisgICAgICAgICAgICBjb25zdCB3ZWJraXRDb21taXQgPSByZXN1bHRbMl1b
MF07CisgICAgICAgICAgICBjb25zdCBqc2NDb21taXQwID0gcmVzdWx0WzNdWzBdOworICAgICAg
ICAgICAgY29uc3QganNjQ29tbWl0MSA9IHJlc3VsdFs0XVswXTsKKyAgICAgICAgICAgIGNvbnN0
IG9zeFJlcG9zaXRvcnkgPSByZXN1bHRbNV1bMF07CisgICAgICAgICAgICBjb25zdCB3ZWJraXRS
ZXBvc2l0b3J5ID0gcmVzdWx0WzZdWzBdOworICAgICAgICAgICAgY29uc3QganNjUmVwb3NpdG9y
eSA9IHJlc3VsdFs3XVswXTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChvc3hSZXBvc2l0
b3J5LCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChvc3hDb21taXQwLCBudWxs
KTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChvc3hDb21taXQxLCBudWxsKTsKKyAgICAg
ICAgICAgIGFzc2VydC5ub3RFcXVhbCh3ZWJraXRDb21taXQsIG51bGwpOworICAgICAgICAgICAg
YXNzZXJ0Lm5vdEVxdWFsKGpzY0NvbW1pdDAsIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0Lm5v
dEVxdWFsKGpzY0NvbW1pdDEsIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKHdl
YmtpdFJlcG9zaXRvcnksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKGpzY1Jl
cG9zaXRvcnksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeFJlcG9zaXRvcnku
b3duZXIsIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdFJlcG9zaXRvcnku
b3duZXIsIG9zeFJlcG9zaXRvcnkuaWQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGpzY1Jl
cG9zaXRvcnkub3duZXIsIG9zeFJlcG9zaXRvcnkuaWQpOworCisgICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5hbGwoW2RiLnNlbGVjdFJvd3MoJ2NvbW1pdF9vd25lcnNoaXBzJywgeydvd25lcic6
IG9zeENvbW1pdDAuaWQsICdvd25lZCc6IHdlYmtpdENvbW1pdC5pZH0sIHsnc29ydEJ5JzogJ293
bmVyJ30pLAorICAgICAgICAgICAgICAgIGRiLnNlbGVjdFJvd3MoJ2NvbW1pdF9vd25lcnNoaXBz
Jywgeydvd25lcic6IG9zeENvbW1pdDEuaWQsICdvd25lZCc6IHdlYmtpdENvbW1pdC5pZH0sIHsn
c29ydEJ5JzogJ293bmVyJ30pLAorICAgICAgICAgICAgICAgIGRiLnNlbGVjdFJvd3MoJ2NvbW1p
dF9vd25lcnNoaXBzJywgeydvd25lcic6IG9zeENvbW1pdDAuaWQsICdvd25lZCc6IGpzY0NvbW1p
dDAuaWR9LCB7J3NvcnRCeSc6ICdvd25lcid9KSwKKyAgICAgICAgICAgICAgICBkYi5zZWxlY3RS
b3dzKCdjb21taXRfb3duZXJzaGlwcycsIHsnb3duZXInOiBvc3hDb21taXQxLmlkLCAnb3duZWQn
OiBqc2NDb21taXQxLmlkfSwgeydzb3J0QnknOiAnb3duZXInfSldKTsKKyAgICAgICAgfSkudGhl
bihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgICAgICBhc3NlcnQocmVzdWx0Lmxlbmd0aCwg
NCk7CisgICAgICAgICAgICBhc3NlcnQocmVzdWx0WzBdLmxlbmd0aCwgMSk7CisgICAgICAgICAg
ICBhc3NlcnQocmVzdWx0WzFdLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQocmVzdWx0
WzJdLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQocmVzdWx0WzNdLmxlbmd0aCwgMSk7
CisKKyAgICAgICAgICAgIGNvbnN0IG93bmVyQ29tbWl0Rm9yV2ViS2l0Q29tbWl0MCA9IHJlc3Vs
dFswXVswXTsKKyAgICAgICAgICAgIGNvbnN0IG93bmVyQ29tbWl0Rm9yV2ViS2l0Q29tbWl0MSA9
IHJlc3VsdFsxXVswXTsKKyAgICAgICAgICAgIGNvbnN0IG93bmVyQ29tbWl0Rm9ySlNDQ29tbWl0
MCA9IHJlc3VsdFsyXVswXTsKKyAgICAgICAgICAgIGNvbnN0IG93bmVyQ29tbWl0Rm9ySlNDQ29t
bWl0MSA9IHJlc3VsdFszXVswXTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChvd25lckNv
bW1pdEZvcldlYktpdENvbW1pdDAsIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFs
KG93bmVyQ29tbWl0Rm9yV2ViS2l0Q29tbWl0MSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQu
bm90RXF1YWwob3duZXJDb21taXRGb3JKU0NDb21taXQwLCBudWxsKTsKKyAgICAgICAgICAgIGFz
c2VydC5ub3RFcXVhbChvd25lckNvbW1pdEZvckpTQ0NvbW1pdDEsIG51bGwpOworCisgICAgICAg
ICAgICBkb25lKCk7CisgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgIH0pOworCisgICAgaXQo
InNob3VsZCBhY2NlcHQgaW5zZXJ0aW5nIG9uZSBjb21taXQgd2l0aCBubyBzdWIgY29tbWl0cyIs
IGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFz
ZSgpOworICAgICAgICBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJzaW9uQ29tbWl0V2l0aEVt
cHR5U3ViY29tbWl0cykudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzeXN0
ZW1WZXJzaW9uQ29tbWl0V2l0aEVtcHR5U3ViY29tbWl0cyk7CisgICAgICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0
YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbZGIuc2VsZWN0
QWxsKCdjb21taXRzJyksIGRiLnNlbGVjdEFsbCgncmVwb3NpdG9yaWVzJyksIGRiLnNlbGVjdEFs
bCgnY29tbWl0X293bmVyc2hpcHMnLCAnb3duZXInKV0pOworICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgIGxldCBjb21taXRzID0gcmVzdWx0WzBdOworICAg
ICAgICAgICAgbGV0IHJlcG9zaXRvcmllcyA9IHJlc3VsdFsxXTsKKyAgICAgICAgICAgIGxldCBj
b21taXRfb3duZXJzaGlwcyA9IHJlc3VsdFsyXTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChj
b21taXRzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yaWVz
Lmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0X293bmVyc2hpcHMu
bGVuZ3RoLCAwKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSkuY2F0Y2goZG9uZSk7
CisgICAgfSk7CisKKyAgICBpdCgic2hvdWxkIHJlamVjdCBpbnNlcnRpbmcgb25lIGNvbW1pdCB3
aXRoIHN1YiBjb21taXRzIHRoYXQgY29udGFpbnMgdGltZXN0YW1wIiwgZnVuY3Rpb24gKGRvbmUp
IHsKKyAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgIGFk
ZFNsYXZlRm9yUmVwb3J0KHN5c3RlbVZlcnNpb25Db21taXRBbmRTdWJjb21taXRXaXRoVGltZXN0
YW1wKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJl
bW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNpb25D
b21taXRBbmRTdWJjb21taXRXaXRoVGltZXN0YW1wKTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlv
biAocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVz
J10sICdTdWJDb21taXRTaG91bGROb3RDb250YWluVGltZXN0YW1wJyk7CisgICAgICAgICAgICBk
b25lKCk7CisgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgIH0pOworCisKIH0pOwpkaWZmIC0t
Z2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2RhdGFiYXNlLmpzIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2RhdGFiYXNlLmpzCmluZGV4IDgwMmFkZDZl
NGIzOWI4OWQ1Y2IxODQ0ZTMxMjY2ZjdjZTk4ODY0NDAuLjZkZmVkMzhlMDIyMjc2Y2Q3NmE3NzQ5
MzVlYWFkOTM0NWNiMzY3NmIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90
b29scy9qcy9kYXRhYmFzZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMv
anMvZGF0YWJhc2UuanMKQEAgLTEzNiw2ICsxMzYsNyBAQCBjb25zdCB0YWJsZVRvUHJlZml4TWFw
ID0gewogICAgICdidWlsZHMnOiAnYnVpbGQnLAogICAgICdidWlsZGVycyc6ICdidWlsZGVyJywK
ICAgICAnY29tbWl0cyc6ICdjb21taXQnLAorICAgICdjb21taXRfb3duZXJzaGlwcyc6ICdjb21t
aXQnLAogICAgICdjb21taXR0ZXJzJzogJ2NvbW1pdHRlcicsCiAgICAgJ3Rlc3RfY29uZmlndXJh
dGlvbnMnOiAnY29uZmlnJywKICAgICAndGVzdF9tZXRyaWNzJzogJ21ldHJpYycsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304239</attachid>
            <date>2017-03-13 01:17:35 -0700</date>
            <delta_ts>2017-03-13 02:10:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-168962-20170313011734.patch</filename>
            <type>text/plain</type>
            <size>36946</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzg3CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA1OTU2OGNmMWY4YzVmZWQ2ZGE0MGYwODc3Zjk1MGY5MWI4MDM4ODllLi5hYjA1YmZjOWIw
NzkyNzE5YzJlMzdkYmVkNGY4YTVkODhmYTAxOTM2IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxNy0wMy0wNyAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gcmVwb3J0IGEgY29tbWl0
IHdpdGggc3ViLWNvbW1pdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjg5NjIKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisK
KyAgICAgICAgSW50cm9kdWNlICdjb21taXRfb3duZXJzaGlwcycgd2hpY2ggcmVjb3JkcyBvd25l
cnNoaXAgYmV0d2VlbiBjb21taXRzLgorICAgICAgICBPbiBleGlzdGluZyBwcm9kdWN0aW9uIHNl
cnZlciwgcnVuIGBgYAorICAgICAgICAgICAgQ1JFQVRFIFRBQkxFIGNvbW1pdF9vd25lcnNoaXBz
ICgKKyAgICAgICAgICAgICAgICBjb21taXRfb3duZXIgaW50ZWdlciBOT1QgTlVMTCBSRUZFUkVO
Q0VTIGNvbW1pdHMgT04gREVMRVRFIENBU0NBREUsCisgICAgICAgICAgICAgICAgY29tbWl0X293
bmVlIGludGVnZXIgTk9UIE5VTEwgUkVGRVJFTkNFUyBjb21taXRzIE9OIERFTEVURSBDQVNDQURF
LAorICAgICAgICAgICAgICAgIFBSSU1BUlkgS0VZIChjb21taXRfb3duZXIsIGNvbW1pdF9vd25l
ZSkKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBBTFRFUiBUQUJMRSByZXBvc2l0b3JpZXMg
UkVOQU1FIHJlcG9zaXRvcnlfcGFyZW50IFRPIHJlcG9zaXRvcnlfb3duZXI7CisgICAgICAgICAg
ICBBTFRFUiBUQUJMRSByZXBvc2l0b3JpZXMgRFJPUCByZXBvc2l0b3J5X25hbWVfbXVzdF9iZV91
bmlxdWU7CisgICAgICAgICAgICBDUkVBVEUgVU5JUVVFIElOREVYIHJlcG9zaXRvcnlfbmFtZV9v
d25lcl91bmlxdWVfaW5kZXggT04gcmVwb3NpdG9yaWVzIChyZXBvc2l0b3J5X293bmVyLCByZXBv
c2l0b3J5X25hbWUpIFdIRVJFIHJlcG9zaXRvcnlfb3duZXIgSVMgTk9UIE5VTEw7CisgICAgICAg
ICAgICBDUkVBVEUgVU5JUVVFIElOREVYIHJlcG9zaXRvcnlfbmFtZV91bmlxdWVfaW5kZXggT04g
cmVwb3NpdG9yaWVzIChyZXBvc2l0b3J5X25hbWUpIFdIRVJFIHJlcG9zaXRvcnlfb3duZXIgSVMg
TlVMTDsKKyAgICAgICAgYGBgIHRvIHVwZGF0ZSBkYXRhYmFzZS4KKyAgICAgICAgQWRkIHVuaXQt
dGVzdHMgdG8gY292ZXIgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBpbml0LWRhdGFiYXNlLnNx
bDoKKyAgICAgICAgKiBwdWJsaWMvYXBpL3JlcG9ydC1jb21taXRzLnBocDoKKyAgICAgICAgKiBw
dWJsaWMvaW5jbHVkZS9jb21taXQtbG9nLWZldGNoZXIucGhwOgorICAgICAgICAqIHB1YmxpYy9p
bmNsdWRlL2RiLnBocDoKKyAgICAgICAgKiBwdWJsaWMvaW5jbHVkZS9tYW5pZmVzdC1nZW5lcmF0
b3IucGhwOgorICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL3JlcG9ydC1wcm9jZXNzb3IucGhwOgor
ICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvcmVwb3NpdG9yeS5qczoKKyAgICAgICAgKFJlcG9z
aXRvcnkpOgorICAgICAgICAoUmVwb3NpdG9yeS5wcm90b3R5cGUub3duZXIpOgorICAgICAgICAq
IHNlcnZlci10ZXN0cy9hZG1pbi1yZXByb2Nlc3MtcmVwb3J0LXRlc3RzLmpzOgorICAgICAgICAo
YWRkQnVpbGRlckZvclJlcG9ydC5zaW1wbGVSZXBvcnRXaXRoUmV2aXNpb25zLjAudGhlbik6Cisg
ICAgICAgICh0aGVuKToKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvYXBpLW1hbmlmZXN0LmpzOgor
ICAgICAgICAodGhlbik6CisgICAgICAgICogc2VydmVyLXRlc3RzL2FwaS1yZXBvcnQtY29tbWl0
cy10ZXN0cy5qczoKKyAgICAgICAgKGFkZFNsYXZlRm9yUmVwb3J0LnNhbWVSZXBvc2l0b3J5TmFt
ZUluU3ViQ29tbWl0QW5kTWFqb3JDb21taXQudGhlbik6CisgICAgICAgICh0aGVuKToKKyAgICAg
ICAgKGFkZFNsYXZlRm9yUmVwb3J0LnN5c3RlbVZlcnNpb25Db21taXRXaXRoU3ViY29tbWl0cy50
aGVuKToKKyAgICAgICAgKGFkZFNsYXZlRm9yUmVwb3J0Lm11bHRpcGxlU3lzdGVtVmVyc2lvbkNv
bW1pdHNXaXRoU3ViY29tbWl0cy50aGVuKToKKyAgICAgICAgKGFkZFNsYXZlRm9yUmVwb3J0LnN5
c3RlbVZlcnNpb25Db21taXRXaXRoRW1wdHlTdWJjb21taXRzLnRoZW4pOgorICAgICAgICAoYWRk
U2xhdmVGb3JSZXBvcnQuc3lzdGVtVmVyc2lvbkNvbW1pdEFuZFN1YmNvbW1pdFdpdGhUaW1lc3Rh
bXAudGhlbik6CisgICAgICAgICogdG9vbHMvanMvZGF0YWJhc2UuanM6CisKIDIwMTctMDMtMDcg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIFJlYWRN
ZS5tZCB0byB1c2UgZGlyZWN0b3J5IGZvcm1hdCBmb3IgYmFja2luZyB1cCAmIHJlc3RvcmluZyB0
aGUgZGF0YWJhc2UKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRh
dGFiYXNlLnNxbCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbApp
bmRleCA1YTNkZmNmNmM1ODQzMjU3MTk0ZDY4YzQ2ZWEzM2FhODhjNWFmOGJhLi42YmNmN2UwNTU3
NDJiODBhYWQyMGMwMzBiOGJlZTY4ODI3Yzk4NTZkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL2luaXQtZGF0YWJhc2Uuc3FsCkBAIC03LDYgKzcsNyBAQCBEUk9QIFRBQkxFIElGIEVYSVNU
UyBidWlsZHMgQ0FTQ0FERTsKIERST1AgVEFCTEUgSUYgRVhJU1RTIGNvbW1pdHRlcnMgQ0FTQ0FE
RTsKIERST1AgVEFCTEUgSUYgRVhJU1RTIGNvbW1pdHMgQ0FTQ0FERTsKIERST1AgVEFCTEUgSUYg
RVhJU1RTIGJ1aWxkX2NvbW1pdHMgQ0FTQ0FERTsKK0RST1AgVEFCTEUgSUYgRVhJU1RTIGNvbW1p
dF9vd25lcnNoaXBzIENBU0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBidWlsZF9zbGF2ZXMg
Q0FTQ0FERTsKIERST1AgVEFCTEUgSUYgRVhJU1RTIGJ1aWxkZXJzIENBU0NBREU7CiBEUk9QIFRB
QkxFIElGIEVYSVNUUyByZXBvc2l0b3JpZXMgQ0FTQ0FERTsKQEAgLTM4LDExICszOSwxNSBAQCBD
UkVBVEUgVEFCTEUgcGxhdGZvcm1zICgKIAogQ1JFQVRFIFRBQkxFIHJlcG9zaXRvcmllcyAoCiAg
ICAgcmVwb3NpdG9yeV9pZCBzZXJpYWwgUFJJTUFSWSBLRVksCi0gICAgcmVwb3NpdG9yeV9wYXJl
bnQgaW50ZWdlciBSRUZFUkVOQ0VTIHJlcG9zaXRvcmllcyBPTiBERUxFVEUgQ0FTQ0FERSwKKyAg
ICByZXBvc2l0b3J5X293bmVyIGludGVnZXIgUkVGRVJFTkNFUyByZXBvc2l0b3JpZXMgT04gREVM
RVRFIENBU0NBREUsCiAgICAgcmVwb3NpdG9yeV9uYW1lIHZhcmNoYXIoNjQpIE5PVCBOVUxMLAog
ICAgIHJlcG9zaXRvcnlfdXJsIHZhcmNoYXIoMTAyNCksCi0gICAgcmVwb3NpdG9yeV9ibGFtZV91
cmwgdmFyY2hhcigxMDI0KSwKLSAgICBDT05TVFJBSU5UIHJlcG9zaXRvcnlfbmFtZV9tdXN0X2Jl
X3VuaXF1ZSBVTklRVUUocmVwb3NpdG9yeV9wYXJlbnQsIHJlcG9zaXRvcnlfbmFtZSkpOworICAg
IHJlcG9zaXRvcnlfYmxhbWVfdXJsIHZhcmNoYXIoMTAyNCkpOworCitDUkVBVEUgVU5JUVVFIElO
REVYIHJlcG9zaXRvcnlfbmFtZV9vd25lcl91bmlxdWVfaW5kZXggT04gcmVwb3NpdG9yaWVzIChy
ZXBvc2l0b3J5X293bmVyLCByZXBvc2l0b3J5X25hbWUpCisgICAgV0hFUkUgcmVwb3NpdG9yeV9v
d25lciBJUyBOT1QgTlVMTDsKK0NSRUFURSBVTklRVUUgSU5ERVggcmVwb3NpdG9yeV9uYW1lX3Vu
aXF1ZV9pbmRleCBPTiByZXBvc2l0b3JpZXMgKHJlcG9zaXRvcnlfbmFtZSkKKyAgICBXSEVSRSBy
ZXBvc2l0b3J5X293bmVyIElTIE5VTEw7CiAKIENSRUFURSBUQUJMRSBidWdfdHJhY2tlcnMgKAog
ICAgIHRyYWNrZXJfaWQgc2VyaWFsIFBSSU1BUlkgS0VZLApAQCAtOTgsNiArMTAzLDEyIEBAIENS
RUFURSBUQUJMRSBjb21taXRzICgKIENSRUFURSBJTkRFWCBjb21taXRfdGltZV9pbmRleCBPTiBj
b21taXRzKGNvbW1pdF90aW1lKTsKIENSRUFURSBJTkRFWCBjb21taXRfb3JkZXJfaW5kZXggT04g
Y29tbWl0cyhjb21taXRfb3JkZXIpOwogCitDUkVBVEUgVEFCTEUgY29tbWl0X293bmVyc2hpcHMg
KAorICAgIGNvbW1pdF9vd25lciBpbnRlZ2VyIE5PVCBOVUxMIFJFRkVSRU5DRVMgY29tbWl0cyBP
TiBERUxFVEUgQ0FTQ0FERSwKKyAgICBjb21taXRfb3duZWQgaW50ZWdlciBOT1QgTlVMTCBSRUZF
UkVOQ0VTIGNvbW1pdHMgT04gREVMRVRFIENBU0NBREUsCisgICAgUFJJTUFSWSBLRVkgKGNvbW1p
dF9vd25lciwgY29tbWl0X293bmVkKQorKTsKKwogQ1JFQVRFIFRBQkxFIGJ1aWxkX2NvbW1pdHMg
KAogICAgIGNvbW1pdF9idWlsZCBpbnRlZ2VyIE5PVCBOVUxMIFJFRkVSRU5DRVMgYnVpbGRzIE9O
IERFTEVURSBDQVNDQURFLAogICAgIGJ1aWxkX2NvbW1pdCBpbnRlZ2VyIE5PVCBOVUxMIFJFRkVS
RU5DRVMgY29tbWl0cyBPTiBERUxFVEUgQ0FTQ0FERSwKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL3JlcG9ydC1jb21taXRzLnBocCBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL3JlcG9ydC1jb21taXRzLnBocAppbmRleCBmYjJjYWI0
MGQxYjM5ZGU1MDYxMTU4MjNjNzJiZmZkYTA0MTIwZWJhLi41MWE5NGMyYTc4NDczNDJiOWYxOTlj
NzczNGZhZTMxZWJjMzQxODFkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL2FwaS9yZXBvcnQtY29tbWl0cy5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy9hcGkvcmVwb3J0LWNvbW1pdHMucGhwCkBAIC0yLDcgKzIsOCBAQAogCiByZXF1
aXJlKCcuLi9pbmNsdWRlL2pzb24taGVhZGVyLnBocCcpOwogCi1mdW5jdGlvbiBtYWluKCRwb3N0
X2RhdGEpIHsKK2Z1bmN0aW9uIG1haW4oJHBvc3RfZGF0YSkKK3sKICAgICAkZGIgPSBuZXcgRGF0
YWJhc2U7CiAgICAgaWYgKCEkZGItPmNvbm5lY3QoKSkKICAgICAgICAgZXhpdF93aXRoX2Vycm9y
KCdEYXRhYmFzZUNvbm5lY3Rpb25GYWlsdXJlJyk7CkBAIC0yNSw1NiArMjYsNzkgQEAgZnVuY3Rp
b24gbWFpbigkcG9zdF9kYXRhKSB7CiAKICAgICAkZGItPmJlZ2luX3RyYW5zYWN0aW9uKCk7CiAg
ICAgZm9yZWFjaCAoJGNvbW1pdHMgYXMgJGNvbW1pdF9pbmZvKSB7Ci0gICAgICAgICRyZXBvc2l0
b3J5X2lkID0gJGRiLT5zZWxlY3Rfb3JfaW5zZXJ0X3JvdygncmVwb3NpdG9yaWVzJywgJ3JlcG9z
aXRvcnknLCBhcnJheSgnbmFtZScgPT4gJGNvbW1pdF9pbmZvWydyZXBvc2l0b3J5J10pKTsKKyAg
ICAgICAgJHJlcG9zaXRvcnlfaWQgPSAkZGItPnNlbGVjdF9vcl9pbnNlcnRfcmVwb3NpdG9yeV9y
b3coJGNvbW1pdF9pbmZvWydyZXBvc2l0b3J5J10sIE5VTEwpOwogICAgICAgICBpZiAoISRyZXBv
c2l0b3J5X2lkKSB7CiAgICAgICAgICAgICAkZGItPnJvbGxiYWNrX3RyYW5zYWN0aW9uKCk7CiAg
ICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvSW5zZXJ0UmVwb3NpdG9yeScsIGFy
cmF5KCdjb21taXQnID0+ICRjb21taXRfaW5mbykpOwogICAgICAgICB9CisgICAgICAgICRvd25l
cl9jb21taXRfaWQgPSBpbnNlcnRfY29tbWl0KCRkYiwgJGNvbW1pdF9pbmZvLCAkcmVwb3NpdG9y
eV9pZCwgTlVMTCk7CisgICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygnc3ViQ29tbWl0cycs
ICRjb21taXRfaW5mbykpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAkYXV0aG9y
ID0gYXJyYXlfZ2V0KCRjb21taXRfaW5mbywgJ2F1dGhvcicpOwotICAgICAgICAkY29tbWl0dGVy
X2lkID0gTlVMTDsKLSAgICAgICAgaWYgKCRhdXRob3IpIHsKLSAgICAgICAgICAgICRhY2NvdW50
ID0gYXJyYXlfZ2V0KCRhdXRob3IsICdhY2NvdW50Jyk7Ci0gICAgICAgICAgICAkY29tbWl0dGVy
X3F1ZXJ5ID0gYXJyYXkoJ3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X2lkLCAnYWNjb3VudCcg
PT4gJGFjY291bnQpOwotICAgICAgICAgICAgJGNvbW1pdHRlcl9kYXRhID0gJGNvbW1pdHRlcl9x
dWVyeTsKLSAgICAgICAgICAgICRuYW1lID0gYXJyYXlfZ2V0KCRhdXRob3IsICduYW1lJyk7Ci0g
ICAgICAgICAgICBpZiAoJG5hbWUpCi0gICAgICAgICAgICAgICAgJGNvbW1pdHRlcl9kYXRhWydu
YW1lJ10gPSAkbmFtZTsKLSAgICAgICAgICAgICRjb21taXR0ZXJfaWQgPSAkZGItPnVwZGF0ZV9v
cl9pbnNlcnRfcm93KCdjb21taXR0ZXJzJywgJ2NvbW1pdHRlcicsICRjb21taXR0ZXJfcXVlcnks
ICRjb21taXR0ZXJfZGF0YSk7Ci0gICAgICAgICAgICBpZiAoISRjb21taXR0ZXJfaWQpIHsKKyAg
ICAgICAgZm9yZWFjaCgkY29tbWl0X2luZm9bJ3N1YkNvbW1pdHMnXSBhcyAkc3ViX2NvbW1pdF9y
ZXBvc2l0b3J5X25hbWUgPT4gJHN1Yl9jb21taXRfaW5mbykgeworICAgICAgICAgICAgaWYgKGFy
cmF5X2tleV9leGlzdHMoJ3RpbWUnLCAkc3ViX2NvbW1pdF9pbmZvKSkgewogICAgICAgICAgICAg
ICAgICRkYi0+cm9sbGJhY2tfdHJhbnNhY3Rpb24oKTsKLSAgICAgICAgICAgICAgICBleGl0X3dp
dGhfZXJyb3IoJ0ZhaWxlZFRvSW5zZXJ0Q29tbWl0dGVyJywgYXJyYXkoJ2NvbW1pdHRlcicgPT4g
JGNvbW1pdHRlcl9kYXRhKSk7CisgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdTdWJD
b21taXRTaG91bGROb3RDb250YWluVGltZXN0YW1wJywgYXJyYXkoJ2NvbW1pdCcgPT4gJHN1Yl9j
b21taXRfaW5mbykpOwogICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgJHByZXZp
b3VzX2NvbW1pdF9yZXZpc2lvbiA9IGFycmF5X2dldCgkY29tbWl0X2luZm8sICdwcmV2aW91c0Nv
bW1pdCcpOwotICAgICAgICAkcHJldmlvdXNfY29tbWl0X2lkID0gTlVMTDsKLSAgICAgICAgaWYg
KCRwcmV2aW91c19jb21taXRfcmV2aXNpb24pIHsKLSAgICAgICAgICAgICRwcmV2aW91c19jb21t
aXQgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2NvbW1pdHMnLCAnY29tbWl0JywgYXJyYXkoJ3Jl
cG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X2lkLCAncmV2aXNpb24nID0+ICRwcmV2aW91c19jb21t
aXRfcmV2aXNpb24pKTsKLSAgICAgICAgICAgIGlmICghJHByZXZpb3VzX2NvbW1pdCkgeworICAg
ICAgICAgICAgJHN1Yl9jb21taXRfcmVwb3NpdG9yeV9pZCA9ICRkYi0+c2VsZWN0X29yX2luc2Vy
dF9yZXBvc2l0b3J5X3Jvdygkc3ViX2NvbW1pdF9yZXBvc2l0b3J5X25hbWUsICRyZXBvc2l0b3J5
X2lkKTsKKyAgICAgICAgICAgIGlmICghJHN1Yl9jb21taXRfcmVwb3NpdG9yeV9pZCkgewogICAg
ICAgICAgICAgICAgICRkYi0+cm9sbGJhY2tfdHJhbnNhY3Rpb24oKTsKLSAgICAgICAgICAgICAg
ICBleGl0X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvRmluZFByZXZpb3VzQ29tbWl0JywgYXJyYXkoJ2Nv
bW1pdCcgPT4gJGNvbW1pdF9pbmZvKSk7CisgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9y
KCdGYWlsZWRUb0luc2VydFJlcG9zaXRvcnknLCBhcnJheSgnY29tbWl0JyA9PiAkc3ViX2NvbW1p
dF9pbmZvKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAkcHJldmlvdXNfY29tbWl0X2lk
ID0gJHByZXZpb3VzX2NvbW1pdFsnY29tbWl0X2lkJ107CisgICAgICAgICAgICBpbnNlcnRfY29t
bWl0KCRkYiwgJHN1Yl9jb21taXRfaW5mbywgJHN1Yl9jb21taXRfcmVwb3NpdG9yeV9pZCwgJG93
bmVyX2NvbW1pdF9pZCk7CiAgICAgICAgIH0KLQotICAgICAgICAkZGF0YSA9IGFycmF5KAotICAg
ICAgICAgICAgJ3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X2lkLAotICAgICAgICAgICAgJ3Jl
dmlzaW9uJyA9PiAkY29tbWl0X2luZm9bJ3JldmlzaW9uJ10sCi0gICAgICAgICAgICAncHJldmlv
dXNfY29tbWl0JyA9PiAkcHJldmlvdXNfY29tbWl0X2lkLAotICAgICAgICAgICAgJ29yZGVyJyA9
PiBhcnJheV9nZXQoJGNvbW1pdF9pbmZvLCAnb3JkZXInKSwKLSAgICAgICAgICAgICd0aW1lJyA9
PiBhcnJheV9nZXQoJGNvbW1pdF9pbmZvLCAndGltZScpLAotICAgICAgICAgICAgJ2NvbW1pdHRl
cicgPT4gJGNvbW1pdHRlcl9pZCwKLSAgICAgICAgICAgICdtZXNzYWdlJyA9PiBhcnJheV9nZXQo
JGNvbW1pdF9pbmZvLCAnbWVzc2FnZScpLAotICAgICAgICAgICAgJ3JlcG9ydGVkJyA9PiB0cnVl
LAotICAgICAgICApOwotICAgICAgICAkZGItPnVwZGF0ZV9vcl9pbnNlcnRfcm93KCdjb21taXRz
JywgJ2NvbW1pdCcsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ3Jldmlz
aW9uJyA9PiAkZGF0YVsncmV2aXNpb24nXSksICRkYXRhKTsKICAgICB9CiAgICAgJGRiLT5jb21t
aXRfdHJhbnNhY3Rpb24oKTsKIAogICAgIGV4aXRfd2l0aF9zdWNjZXNzKCk7CiB9CiAKK2Z1bmN0
aW9uIGluc2VydF9jb21taXQoJGRiLCAkY29tbWl0X2luZm8sICRyZXBvc2l0b3J5X2lkLCAkb3du
ZXJfY29tbWl0X2lkKQoreworICAgICRhdXRob3IgPSBhcnJheV9nZXQoJGNvbW1pdF9pbmZvLCAn
YXV0aG9yJyk7CisgICAgJGNvbW1pdHRlcl9pZCA9IE5VTEw7CisgICAgaWYgKCRhdXRob3IpIHsK
KyAgICAgICAgJGFjY291bnQgPSBhcnJheV9nZXQoJGF1dGhvciwgJ2FjY291bnQnKTsKKyAgICAg
ICAgJGNvbW1pdHRlcl9xdWVyeSA9IGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9p
ZCwgJ2FjY291bnQnID0+ICRhY2NvdW50KTsKKyAgICAgICAgJGNvbW1pdHRlcl9kYXRhID0gJGNv
bW1pdHRlcl9xdWVyeTsKKyAgICAgICAgJG5hbWUgPSBhcnJheV9nZXQoJGF1dGhvciwgJ25hbWUn
KTsKKyAgICAgICAgaWYgKCRuYW1lKQorICAgICAgICAgICAgJGNvbW1pdHRlcl9kYXRhWyduYW1l
J10gPSAkbmFtZTsKKyAgICAgICAgJGNvbW1pdHRlcl9pZCA9ICRkYi0+dXBkYXRlX29yX2luc2Vy
dF9yb3coJ2NvbW1pdHRlcnMnLCAnY29tbWl0dGVyJywgJGNvbW1pdHRlcl9xdWVyeSwgJGNvbW1p
dHRlcl9kYXRhKTsKKyAgICAgICAgaWYgKCEkY29tbWl0dGVyX2lkKSB7CisgICAgICAgICAgICAk
ZGItPnJvbGxiYWNrX3RyYW5zYWN0aW9uKCk7CisgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3Io
J0ZhaWxlZFRvSW5zZXJ0Q29tbWl0dGVyJywgYXJyYXkoJ2NvbW1pdHRlcicgPT4gJGNvbW1pdHRl
cl9kYXRhKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAkcHJldmlvdXNfY29tbWl0X3Jldmlz
aW9uID0gYXJyYXlfZ2V0KCRjb21taXRfaW5mbywgJ3ByZXZpb3VzQ29tbWl0Jyk7CisgICAgJHBy
ZXZpb3VzX2NvbW1pdF9pZCA9IE5VTEw7CisgICAgaWYgKCRwcmV2aW91c19jb21taXRfcmV2aXNp
b24pIHsKKyAgICAgICAgJHByZXZpb3VzX2NvbW1pdCA9ICRkYi0+c2VsZWN0X2ZpcnN0X3Jvdygn
Y29tbWl0cycsICdjb21taXQnLCBhcnJheSgncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQs
ICdyZXZpc2lvbicgPT4gJHByZXZpb3VzX2NvbW1pdF9yZXZpc2lvbikpOworICAgICAgICBpZiAo
ISRwcmV2aW91c19jb21taXQpIHsKKyAgICAgICAgICAgICRkYi0+cm9sbGJhY2tfdHJhbnNhY3Rp
b24oKTsKKyAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9GaW5kUHJldmlvdXND
b21taXQnLCBhcnJheSgnY29tbWl0JyA9PiAkY29tbWl0X2luZm8pKTsKKyAgICAgICAgfQorICAg
ICAgICAkcHJldmlvdXNfY29tbWl0X2lkID0gJHByZXZpb3VzX2NvbW1pdFsnY29tbWl0X2lkJ107
CisgICAgfQorCisgICAgJGRhdGEgPSBhcnJheSgKKyAgICAgICAgJ3JlcG9zaXRvcnknID0+ICRy
ZXBvc2l0b3J5X2lkLAorICAgICAgICAncmV2aXNpb24nID0+ICRjb21taXRfaW5mb1sncmV2aXNp
b24nXSwKKyAgICAgICAgJ3ByZXZpb3VzX2NvbW1pdCcgPT4gJHByZXZpb3VzX2NvbW1pdF9pZCwK
KyAgICAgICAgJ29yZGVyJyA9PiBhcnJheV9nZXQoJGNvbW1pdF9pbmZvLCAnb3JkZXInKSwKKyAg
ICAgICAgJ3RpbWUnID0+IGFycmF5X2dldCgkY29tbWl0X2luZm8sICd0aW1lJyksCisgICAgICAg
ICdjb21taXR0ZXInID0+ICRjb21taXR0ZXJfaWQsCisgICAgICAgICdtZXNzYWdlJyA9PiBhcnJh
eV9nZXQoJGNvbW1pdF9pbmZvLCAnbWVzc2FnZScpLAorICAgICAgICAncmVwb3J0ZWQnID0+IHRy
dWUsCisgICAgKTsKKyAgICAkaW5zZXJ0ZWRfY29tbWl0X2lkID0gJGRiLT51cGRhdGVfb3JfaW5z
ZXJ0X3JvdygnY29tbWl0cycsICdjb21taXQnLCBhcnJheSgncmVwb3NpdG9yeScgPT4gJHJlcG9z
aXRvcnlfaWQsICdyZXZpc2lvbicgPT4gJGRhdGFbJ3JldmlzaW9uJ10pLCAkZGF0YSk7CisKKyAg
ICBpZiAoJG93bmVyX2NvbW1pdF9pZCkKKyAgICAgICAgJGRiLT5zZWxlY3Rfb3JfaW5zZXJ0X3Jv
dygnY29tbWl0X293bmVyc2hpcHMnLCAnY29tbWl0JywgYXJyYXkoJ293bmVyJyA9PiAkb3duZXJf
Y29tbWl0X2lkLCAnb3duZWQnID0+ICRpbnNlcnRlZF9jb21taXRfaWQpLCBOVUxMLCAnKicpOwor
ICAgIHJldHVybiAkaW5zZXJ0ZWRfY29tbWl0X2lkOworfQorCiBtYWluKCRIVFRQX1JBV19QT1NU
X0RBVEEpOwogCiA/PgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy9pbmNsdWRlL2NvbW1pdC1sb2ctZmV0Y2hlci5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL2luY2x1ZGUvY29tbWl0LWxvZy1mZXRjaGVyLnBocAppbmRleCA3NDcyODE5ZmE5
M2RlZDdhODVhYTc4YjAxMTVhYzE2MzUxMjZkZWUzLi4wZDQyMDVhZGEwMzYzYjA0YWE2ZDhhY2Y2
ZjNlMWJkNTAzYWI0ZGFiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL2luY2x1ZGUvY29tbWl0LWxvZy1mZXRjaGVyLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LWxvZy1mZXRjaGVyLnBocApAQCAtMjcsMTAg
KzI3LDEwIEBAIGNsYXNzIENvbW1pdExvZ0ZldGNoZXIgewogCiAgICAgZnVuY3Rpb24gcmVwb3Np
dG9yeV9pZF9mcm9tX25hbWUoJG5hbWUpCiAgICAgewotICAgICAgICAkcmVwb3NpdG9yeV9yb3cg
PSAkdGhpcy0+ZGItPnNlbGVjdF9maXJzdF9yb3coJ3JlcG9zaXRvcmllcycsICdyZXBvc2l0b3J5
JywgYXJyYXkoJ25hbWUnID0+ICRuYW1lKSk7CisgICAgICAgICRyZXBvc2l0b3J5X3JvdyA9ICR0
aGlzLT5kYi0+cXVlcnlfYW5kX2ZldGNoX2FsbCgnU0VMRUNUIHJlcG9zaXRvcnlfaWQgRlJPTSBy
ZXBvc2l0b3JpZXMgV0hFUkUgcmVwb3NpdG9yeV9uYW1lID0gJDEgQU5EIHJlcG9zaXRvcnlfb3du
ZXIgaXMgTlVMTCcsIGFycmF5KCRuYW1lKSk7CiAgICAgICAgIGlmICghJHJlcG9zaXRvcnlfcm93
KQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJldHVybiAkcmVwb3NpdG9yeV9y
b3dbJ3JlcG9zaXRvcnlfaWQnXTsKKyAgICAgICAgcmV0dXJuICRyZXBvc2l0b3J5X3Jvd1swXVsn
cmVwb3NpdG9yeV9pZCddOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGZldGNoX2JldHdlZW4oJHJl
cG9zaXRvcnlfaWQsICRmaXJzdCwgJHNlY29uZCwgJGtleXdvcmQgPSBOVUxMKSB7CmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvZGIucGhwIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2RiLnBocAppbmRleCBkODA1ZDY3
NjIyM2NjYjg0NTM5MjI0NGEzZjdmNjBkZGM0NTk5ODI0Li4yOTE4ZGIzMDZkMzZlZjk1MTlmYzRh
ZDhkYjZlOTQxZDRkZjBmZDJiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL2luY2x1ZGUvZGIucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvaW5jbHVkZS9kYi5waHAKQEAgLTE4OCw2ICsxODgsMjYgQEAgY2xhc3MgRGF0YWJhc2UKICAg
ICAgICAgcmV0dXJuICRyb3dzID8gKCRyZXR1cm5pbmcgPT0gJyonID8gJHJvd3NbMF0gOiAkcm93
c1swXVskcmV0dXJuaW5nX2NvbHVtbl9uYW1lXSkgOiBOVUxMOwogICAgIH0KIAorICAgIC8vIEZJ
WE1FOiBTaG91bGQgaW1wcm92ZSBfc2VsZWN0X3VwZGF0ZV9vcl9pbnNlcnRfcm93IHRvIGhhbmRs
ZSB0aGUgTlVMTCBjb2x1bW4gY2FzZS4KKyAgICBmdW5jdGlvbiBzZWxlY3Rfb3JfaW5zZXJ0X3Jl
cG9zaXRvcnlfcm93KCRyZXBvc2l0b3J5X25hbWUsICRyZXBvc2l0b3J5X293bmVyX2lkKQorICAg
IHsKKyAgICAgICAgJHJlc3VsdCA9IE5VTEw7CisgICAgICAgIGlmICgkcmVwb3NpdG9yeV9vd25l
cl9pZCA9PSBOVUxMKSB7CisgICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnF1ZXJ5X2FuZF9m
ZXRjaF9hbGwoJ0lOU0VSVCBJTlRPIHJlcG9zaXRvcmllcyAocmVwb3NpdG9yeV9uYW1lKSBTRUxF
Q1QgJDEKKyAgICAgICAgICAgICAgICBXSEVSRSBOT1QgRVhJU1RTIChTRUxFQ1QgcmVwb3NpdG9y
eV9pZCBGUk9NIHJlcG9zaXRvcmllcyBXSEVSRSByZXBvc2l0b3J5X25hbWUgPSAkMiBBTkQgcmVw
b3NpdG9yeV9vd25lciBJUyBOVUxMKSBSRVRVUk5JTkcgcmVwb3NpdG9yeV9pZCcsCisgICAgICAg
ICAgICAgICAgYXJyYXkoJHJlcG9zaXRvcnlfbmFtZSwgJHJlcG9zaXRvcnlfbmFtZSkpOworICAg
ICAgICAgICAgaWYgKCEkcmVzdWx0KQorICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+
cXVlcnlfYW5kX2ZldGNoX2FsbCgnU0VMRUNUIHJlcG9zaXRvcnlfaWQgRlJPTSByZXBvc2l0b3Jp
ZXMgV0hFUkUgcmVwb3NpdG9yeV9uYW1lID0gJDEgQU5EIHJlcG9zaXRvcnlfb3duZXIgSVMgTlVM
TCcsIGFycmF5KCRyZXBvc2l0b3J5X25hbWUpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICRyZXN1bHQgPSAkdGhpcy0+cXVlcnlfYW5kX2ZldGNoX2FsbCgnSU5TRVJUIElOVE8gcmVw
b3NpdG9yaWVzIChyZXBvc2l0b3J5X25hbWUsIHJlcG9zaXRvcnlfb3duZXIpIFNFTEVDVCAkMSwg
JDIKKyAgICAgICAgICAgICAgICBXSEVSRSBOT1QgRVhJU1RTIChTRUxFQ1QgcmVwb3NpdG9yeV9p
ZCBGUk9NIHJlcG9zaXRvcmllcyBXSEVSRSAocmVwb3NpdG9yeV9uYW1lLCByZXBvc2l0b3J5X293
bmVyKSA9ICgkMywgJDQpKSBSRVRVUk5JTkcgcmVwb3NpdG9yeV9pZCcsCisgICAgICAgICAgICAg
ICAgYXJyYXkoJHJlcG9zaXRvcnlfbmFtZSwgJHJlcG9zaXRvcnlfb3duZXJfaWQsICRyZXBvc2l0
b3J5X25hbWUsICRyZXBvc2l0b3J5X293bmVyX2lkKSk7CisgICAgICAgICAgICBpZiAoISRyZXN1
bHQpCisgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5xdWVyeV9hbmRfZmV0Y2hfYWxs
KCdTRUxFQ1QgcmVwb3NpdG9yeV9pZCBGUk9NIHJlcG9zaXRvcmllcyBXSEVSRSAocmVwb3NpdG9y
eV9uYW1lLCByZXBvc2l0b3J5X293bmVyKSA9ICgkMSwgJDIpJywgYXJyYXkoJHJlcG9zaXRvcnlf
bmFtZSwgJHJlcG9zaXRvcnlfb3duZXJfaWQpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
JHJlc3VsdCA/ICRyZXN1bHRbMF1bJ3JlcG9zaXRvcnlfaWQnXSA6IE5VTEw7CisgICAgfQorCiAg
ICAgZnVuY3Rpb24gc2VsZWN0X2ZpcnN0X3JvdygkdGFibGUsICRwcmVmaXgsICRwYXJhbXMsICRv
cmRlcl9ieSA9IE5VTEwpIHsKICAgICAgICAgcmV0dXJuICR0aGlzLT5zZWxlY3RfZmlyc3Rfb3Jf
bGFzdF9yb3coJHRhYmxlLCAkcHJlZml4LCAkcGFyYW1zLCAkb3JkZXJfYnksIEZBTFNFKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUv
bWFuaWZlc3QtZ2VuZXJhdG9yLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
aW5jbHVkZS9tYW5pZmVzdC1nZW5lcmF0b3IucGhwCmluZGV4IGU4OTQwZmQ2ZGI0NGE5MDMwZmQx
NWRiMmVkMDY3NGM1ZmNkZDgyODUuLjllYzc3MmM1ZTMzMjhmNmVmMDc3YmRmNDRmOTY1N2VkMmE2
YjNmNDEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVk
ZS9tYW5pZmVzdC1nZW5lcmF0b3IucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvaW5jbHVkZS9tYW5pZmVzdC1nZW5lcmF0b3IucGhwCkBAIC0xMzgsNiArMTM4LDcgQEAg
Y2xhc3MgTWFuaWZlc3RHZW5lcmF0b3IgewogICAgICAgICAgICAgICAgICduYW1lJyA9PiAkcm93
WydyZXBvc2l0b3J5X25hbWUnXSwKICAgICAgICAgICAgICAgICAndXJsJyA9PiAkcm93WydyZXBv
c2l0b3J5X3VybCddLAogICAgICAgICAgICAgICAgICdibGFtZVVybCcgPT4gJHJvd1sncmVwb3Np
dG9yeV9ibGFtZV91cmwnXSwKKyAgICAgICAgICAgICAgICAnb3duZXInPT4gJHJvd1sncmVwb3Np
dG9yeV9vd25lciddLAogICAgICAgICAgICAgICAgICdoYXNSZXBvcnRlZENvbW1pdHMnID0+IGlu
X2FycmF5KCRyb3dbJ3JlcG9zaXRvcnlfaWQnXSwgJHJlcG9zaXRvcmllc193aXRoX2NvbW1pdCkp
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvaW5jbHVkZS9yZXBvcnQtcHJvY2Vzc29yLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvaW5jbHVkZS9yZXBvcnQtcHJvY2Vzc29yLnBocAppbmRleCBiNThjYTgxMTVlMjI4
YjdjYWJjNGEyMTEzNjM1MGQ5ZDk5MWM2YzA4Li40OTA4OTgwYjgxNDZkNWExNGQxZDg1ZTk1Zjc2
YTQ0OWI4NTNjYTg1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L2luY2x1ZGUvcmVwb3J0LXByb2Nlc3Nvci5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy9pbmNsdWRlL3JlcG9ydC1wcm9jZXNzb3IucGhwCkBAIC0xNTAsNyArMTUwLDcg
QEAgY2xhc3MgUmVwb3J0UHJvY2Vzc29yIHsKIAogCiAgICAgICAgIGZvcmVhY2ggKCRyZXZpc2lv
bnMgYXMgJHJlcG9zaXRvcnlfbmFtZSA9PiAkcmV2aXNpb25fZGF0YSkgewotICAgICAgICAgICAg
JHJlcG9zaXRvcnlfaWQgPSAkdGhpcy0+ZGItPnNlbGVjdF9vcl9pbnNlcnRfcm93KCdyZXBvc2l0
b3JpZXMnLCAncmVwb3NpdG9yeScsIGFycmF5KCduYW1lJyA9PiAkcmVwb3NpdG9yeV9uYW1lKSk7
CisgICAgICAgICAgICAkcmVwb3NpdG9yeV9pZCA9ICR0aGlzLT5kYi0+c2VsZWN0X29yX2luc2Vy
dF9yZXBvc2l0b3J5X3JvdygkcmVwb3NpdG9yeV9uYW1lLCBOVUxMKTsKICAgICAgICAgICAgIGlm
ICghJHJlcG9zaXRvcnlfaWQpCiAgICAgICAgICAgICAgICAgJHRoaXMtPmV4aXRfd2l0aF9lcnJv
cignRmFpbGVkVG9JbnNlcnRSZXBvc2l0b3J5JywgYXJyYXkoJ25hbWUnID0+ICRyZXBvc2l0b3J5
X25hbWUpKTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIGNsYXNzIFRlc3RSdW5zR2VuZXJhdG9yIHsK
ICAgICAgICAgICAgICAgICBmb3JlYWNoICgkYWdncmVnYXRvcnNfYW5kX3ZhbHVlcyBhcyAkYWdn
cmVnYXRvcl9hbmRfdmFsdWVzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkYWdncmVnYXRv
cl9hbmRfdmFsdWVzWydhZ2dyZWdhdG9yJ10gPT0gJGFnZ3JlZ2F0b3IpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICR2YWx1ZXMgPSAkYWdncmVnYXRvcl9hbmRfdmFsdWVzWyd2YWx1ZXMnXTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCEkdmFsdWVzKSB7CkBAIC00MDQs
NyArNDA0LDcgQEAgY2xhc3MgVGVzdFJ1bnNHZW5lcmF0b3IgewogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZXJhdGlvbl92YWx1ZSA9ICRpdGVy
YXRpb25fdmFsdWVbMV07CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgYXJyYXlfcHVzaCgkZmxhdHRlbmVkX3ZhbHVlLCAkaXRlcmF0aW9uX3ZhbHVlKTsgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRmbGF0dGVuZWRf
dmFsdWUsICRpdGVyYXRpb25fdmFsdWUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICR0aGlzLT52YWx1ZXNfdG9fY29tbWl0WyRpXVsnbWVhbiddID0gJHRo
aXMtPmFnZ3JlZ2F0ZV92YWx1ZXMoJ0FyaXRobWV0aWMnLCAkZmxhdHRlbmVkX3ZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3JlcG9z
aXRvcnkuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9yZXBv
c2l0b3J5LmpzCmluZGV4IDUxOTJmZDBiZWMwOTg3ZjllNjAzMmQ5YzRhOGYxZjY4YTZmYmVhOWYu
LjhjMmFjYWVmMzNjZDdmODMzNWEyZWI4MmNhOTBmZDc4MGRiNmRiYzYgMTAwNjQ0Ci0tLSBhL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3JlcG9zaXRvcnkuanMKKysr
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvcmVwb3NpdG9yeS5q
cwpAQCAtNyw2ICs3LDcgQEAgY2xhc3MgUmVwb3NpdG9yeSBleHRlbmRzIExhYmVsZWRPYmplY3Qg
ewogICAgICAgICB0aGlzLl91cmwgPSBvYmplY3QudXJsOwogICAgICAgICB0aGlzLl9ibGFtZVVy
bCA9IG9iamVjdC5ibGFtZVVybDsKICAgICAgICAgdGhpcy5faGFzUmVwb3J0ZWRDb21taXRzID0g
b2JqZWN0Lmhhc1JlcG9ydGVkQ29tbWl0czsKKyAgICAgICAgdGhpcy5fb3duZXIgPSBvYmplY3Qu
b3duZXI7CiAgICAgfQogCiAgICAgaGFzVXJsRm9yUmV2aXNpb24oKSB7IHJldHVybiAhIXRoaXMu
X3VybDsgfQpAQCAtMjEsNiArMjIsMTEgQEAgY2xhc3MgUmVwb3NpdG9yeSBleHRlbmRzIExhYmVs
ZWRPYmplY3QgewogICAgICAgICByZXR1cm4gKHRoaXMuX2JsYW1lVXJsIHx8ICcnKS5yZXBsYWNl
KC9cJDEvZywgZnJvbSkucmVwbGFjZSgvXCQyL2csIHRvKTsKICAgICB9CiAKKyAgICBvd25lcigp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fb3duZXI7CisgICAgfQorCiAgICAgc3RhdGlj
IHNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwocmVwb3NpdG9yaWVzKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHJlcG9zaXRvcmllcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FkbWluLXJlcHJvY2Vz
cy1yZXBvcnQtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3Rz
L2FkbWluLXJlcHJvY2Vzcy1yZXBvcnQtdGVzdHMuanMKaW5kZXggZGVmNGRjZjU3MzY5YTdmOTY0
MGY4MjdiMjRlZTgwMmI2Y2Y2ZmZhOC4uNDdjZTFiMGEzMDRjYWE3ZmUxNjhkZWU0MTE4MTFmM2U5
OGNjYzM0ZCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0
cy9hZG1pbi1yZXByb2Nlc3MtcmVwb3J0LXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYWRtaW4tcmVwcm9jZXNzLXJlcG9ydC10ZXN0cy5qcwpAQCAt
MjQsNiArMjQsNDQgQEAgZGVzY3JpYmUoIi9hZG1pbi9yZXByb2Nlc3MtcmVwb3J0IiwgZnVuY3Rp
b24gKCkgewogICAgICAgICAgICAgfSwKICAgICAgICAgfV07CiAKKyAgICBjb25zdCBzaW1wbGVS
ZXBvcnRXaXRoUmV2aXNpb25zID0gW3sKKyAgICAgICAgImJ1aWxkTnVtYmVyIjogIjE5ODYiLAor
ICAgICAgICAiYnVpbGRUaW1lIjogIjIwMTMtMDItMjhUMTA6MTI6MDMiLAorICAgICAgICAiYnVp
bGRlck5hbWUiOiAic29tZUJ1aWxkZXIiLAorICAgICAgICAiYnVpbGRlclBhc3N3b3JkIjogInNv
bWVQYXNzd29yZCIsCisgICAgICAgICJwbGF0Zm9ybSI6ICJNb3VudGFpbiBMaW9uIiwKKyAgICAg
ICAgInRlc3RzIjogeworICAgICAgICAgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgICAg
ICAgICAibWV0cmljcyI6IHsiRnJhbWVSYXRlIjogeyAiY3VycmVudCI6IFtbMSwgMiwgM10sIFs0
LCA1LCA2XV0gfX0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAg
InJldmlzaW9ucyI6IHsKKyAgICAgICAgICAgICAgICAiV2ViS2l0IjogeworICAgICAgICAgICAg
ICAgICAgICAidGltZXN0YW1wIjogIjIwMTctMDMtMDFUMDk6Mzg6NDQuODI2ODMzWiIsCisgICAg
ICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIyMTMyMTQiCisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9XTsKKworICAgIGl0KCJzaG91bGQgc3RpbGwgY3JlYXRl
IG5ldyByZXBvc2l0b3J5IHdoZW4gcmVwb3NpdG9yeSBvd25lcnNoaXBzIGFyZSBkaWZmZXJlbnQi
LCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICBsZXQgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNl
KCk7CisgICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQoc2ltcGxlUmVwb3J0V2l0aFJldmlzaW9u
c1swXSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gZGIuaW5zZXJ0KCdy
ZXBvc2l0b3JpZXMnLCB7J25hbWUnOiAnV2ViS2l0JywgJ293bmVyJzogMX0pOworICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBzaW1wbGVSZXBvcnRXaXRoUmV2aXNpb25z
KTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgcmV0dXJu
IGRiLnNlbGVjdFJvd3MoJ3JlcG9zaXRvcmllcycsIHsnbmFtZSc6ICdXZWJLaXQnfSk7CisgICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcG9zaXRvcmllcykgeworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcG9zaXRvcmllcy5sZW5ndGgsIDIpOworICAgICAgICAgICAgY29uc3Qgd2Via2l0
UmVwc2l0b3J5SWQgPSByZXBvc2l0b3JpZXNbMF0ub3duZXIgPT0gMSA/IHJlcG9zaXRvcmllc1sx
XS5pZCA6IHJlcG9zaXRvcmllc1swXS5pZDsKKyAgICAgICAgICAgIHJldHVybiBkYi5zZWxlY3RS
b3dzKCdjb21taXRzJywgeydyZXZpc2lvbic6ICcyMTMyMTQnLCAncmVwb3NpdG9yeSc6IHdlYmtp
dFJlcHNpdG9yeUlkfSk7CisgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAg
ICAgICAgICAgYXNzZXJ0KHJlc3VsdC5sZW5ndGgsIDEpOworICAgICAgICAgICAgZG9uZSgpOwor
ICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICB9KTsKKwogICAgIGl0KCJzaG91bGQgYWRkIGJ1
aWxkIiwgZnVuY3Rpb24gKGRvbmUpIHsKICAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRh
YmFzZSgpOwogICAgICAgICBsZXQgcmVwb3J0SWQ7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1tYW5pZmVzdC5qcyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLW1hbmlmZXN0LmpzCmluZGV4IGY1YTUwYmVhZmI2
MWVhYjA4YmNjMjBlZjgzODJmZTYyZDVjYWNkYmYuLjdiZDNlY2MzZWJhYzczOTUzYmVhY2NlYTli
MDE5ODE3MGE1MTgxMDAgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2
ZXItdGVzdHMvYXBpLW1hbmlmZXN0LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9z
ZXJ2ZXItdGVzdHMvYXBpLW1hbmlmZXN0LmpzCkBAIC0yODIsNiArMjgyLDcgQEAgZGVzY3JpYmUo
Jy9hcGkvbWFuaWZlc3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIFByb21pc2UuYWxsKFsKICAg
ICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywge2lkOiAxMSwgbmFtZTogJ1dlYktp
dCcsIHVybDogJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnLyQxJ30pLAogICAgICAgICAgICAgZGIu
aW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IDksIG5hbWU6ICdPUyBYJ30pLAorICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IDEwMSwgbmFtZTogJ1dlYktpdCcsIG93
bmVyOiA5LCB1cmw6ICdodHRwczovL3RyYWMud2Via2l0Lm9yZy8kMSd9KSwKICAgICAgICAgICAg
IGRiLmluc2VydCgnYnVpbGRfdHJpZ2dlcmFibGVzJywge2lkOiAyMDAsIG5hbWU6ICdidWlsZC53
ZWJraXQub3JnJ30pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJsZXMn
LCB7aWQ6IDIwMSwgbmFtZTogJ2lvcy1idWlsZC53ZWJraXQub3JnJ30pLAogICAgICAgICAgICAg
ZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDogMSwgbmFtZTogJ1NvbWVUZXN0J30pLApAQCAtMzExLDYg
KzMxMiwxMSBAQCBkZXNjcmliZSgnL2FwaS9tYW5pZmVzdCcsIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXQubmFtZSgpLCAnV2ViS2l0Jyk7CiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwod2Via2l0LnVybEZvclJldmlzaW9uKDEyMyksICdodHRwczovL3RyYWMu
d2Via2l0Lm9yZy8xMjMnKTsKIAorICAgICAgICAgICAgbGV0IG9zV2Via2l0MSA9IFJlcG9zaXRv
cnkuZmluZEJ5SWQoMTAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvc1dlYmtpdDEubmFt
ZSgpLCAnV2ViS2l0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3NXZWJraXQxLm93bmVy
KCksIDkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zV2Via2l0MS51cmxGb3JSZXZpc2lv
bigxMjMpLCAnaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvMTIzJyk7CisKICAgICAgICAgICAgIGxl
dCBvc3ggPSBSZXBvc2l0b3J5LmZpbmRCeUlkKDkpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KG9zeC5uYW1lKCksICdPUyBYJyk7CiAKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLXJlcG9ydC1jb21taXRzLXRlc3RzLmpzIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktcmVwb3J0LWNvbW1pdHMtdGVzdHMuanMK
aW5kZXggOTNkMWFkOWZhYTMzZGZhNDIyODI1ZWNkMzA1MWEzNzkwNGEwMzY4YS4uY2ZkMzlhMmRm
YWY2YzQ4NTBkMWE1ZTc0N2NkOGFhOWY2MWE5MWVlNCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktcmVwb3J0LWNvbW1pdHMtdGVzdHMuanMKKysr
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktcmVwb3J0LWNvbW1p
dHMtdGVzdHMuanMKQEAgLTI4Nyw0ICsyODcsMzM0IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydC1j
b21taXRzLyIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CiAgICAgfSk7
CiAKKyAgICBjb25zdCBzYW1lUmVwb3NpdG9yeU5hbWVJblN1YkNvbW1pdEFuZE1ham9yQ29tbWl0
ID0geworICAgICAgICAic2xhdmVOYW1lIjogInNvbWVTbGF2ZSIsCisgICAgICAgICJzbGF2ZVBh
c3N3b3JkIjogInNvbWVQYXNzd29yZCIsCisgICAgICAgICJjb21taXRzIjogWworICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIk9TWCIsCisgICAgICAgICAgICAg
ICAgInJldmlzaW9uIjogIlNpZXJyYTE2RDMyIiwKKyAgICAgICAgICAgICAgICAib3JkZXIiOiAx
LAorICAgICAgICAgICAgICAgICJzdWJDb21taXRzIjogeworICAgICAgICAgICAgICAgICAgICAi
V2ViS2l0IjogeworICAgICAgICAgICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE0MTk3OCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIkNvbW1pdCBRdWV1
ZSIsICJhY2NvdW50IjogImNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnIn0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAibWVzc2FnZSI6ICJXZWJLaXQgQ29tbWl0IiwKKyAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAgICAgIkphdmFTY3JpcHRDb3JlIjogeworICAgICAgICAg
ICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE0MTk3OCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAiYXV0aG9yIjogeyJuYW1lIjogIk1pa2hhaWwgUG96ZG55YWtvdiIsICJhY2NvdW50Ijog
Im1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20ifSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJtZXNzYWdlIjogIkphdmFTY3JpcHRDb3JlIGNvbW1pdCIsCisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIldlYktpdCIsCisgICAgICAgICAgICAgICAgInJl
dmlzaW9uIjogIjE0MTk3OCIsCisgICAgICAgICAgICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJD
b21taXQgUXVldWUiLCAiYWNjb3VudCI6ICJjb21taXQtcXVldWVAd2Via2l0Lm9yZyJ9LAorICAg
ICAgICAgICAgICAgICJtZXNzYWdlIjogIldlYktpdCBDb21taXQiLAorICAgICAgICAgICAgfQor
ICAgICAgICBdCisgICAgfQorCisgICAgaXQoInNob3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHJl
cG9zaXRvcmllcyB3aXRoIHRoZSBhc21lIG5hbWUgYnV0IHdpdGggYSBkaWZmZXJlbnQgb3duZXIu
IiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFi
YXNlKCk7CisgICAgICAgIGFkZFNsYXZlRm9yUmVwb3J0KHNhbWVSZXBvc2l0b3J5TmFtZUluU3Vi
Q29tbWl0QW5kTWFqb3JDb21taXQpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0
dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LWNvbW1pdHMv
Jywgc2FtZVJlcG9zaXRvcnlOYW1lSW5TdWJDb21taXRBbmRNYWpvckNvbW1pdCk7CisgICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgIHJldHVybiBkYi5zZWxlY3RS
b3dzKCdyZXBvc2l0b3JpZXMnLCB7J25hbWUnOiAnV2ViS2l0J30pOworICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHQubGVu
Z3RoLCAyKTsKKyAgICAgICAgICAgIGxldCBvc1dlYktpdCA9IHJlc3VsdFswXTsKKyAgICAgICAg
ICAgIGxldCB3ZWJraXRSZXBvc2l0b3J5ID0gcmVzdWx0WzFdOworICAgICAgICAgICAgYXNzZXJ0
Lm5vdEVxdWFsKG9zV2ViS2l0LmlkLCB3ZWJraXRSZXBvc2l0b3J5LmlkKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChvc1dlYktpdC5uYW1lLCB3ZWJraXRSZXBvc2l0b3J5Lm5hbWUpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdFJlcG9zaXRvcnkub3duZXIsIG51bGwpOworICAg
ICAgICAgICAgZG9uZSgpOworICAgICAgICB9KQorICAgIH0pOworCisgICAgY29uc3Qgc3lzdGVt
VmVyc2lvbkNvbW1pdFdpdGhTdWJjb21taXRzID0geworICAgICAgICAic2xhdmVOYW1lIjogInNv
bWVTbGF2ZSIsCisgICAgICAgICJzbGF2ZVBhc3N3b3JkIjogInNvbWVQYXNzd29yZCIsCisgICAg
ICAgICJjb21taXRzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJyZXBvc2l0
b3J5IjogIk9TWCIsCisgICAgICAgICAgICAgICAgInJldmlzaW9uIjogIlNpZXJyYTE2RDMyIiwK
KyAgICAgICAgICAgICAgICAib3JkZXIiOiAxLAorICAgICAgICAgICAgICAgICJzdWJDb21taXRz
IjogeworICAgICAgICAgICAgICAgICAgICAiV2ViS2l0IjogeworICAgICAgICAgICAgICAgICAg
ICAgICAgInJldmlzaW9uIjogIjE0MTk3OCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiYXV0
aG9yIjogeyJuYW1lIjogIkNvbW1pdCBRdWV1ZSIsICJhY2NvdW50IjogImNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSI6ICJXZWJLaXQg
Q29tbWl0IiwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgIkph
dmFTY3JpcHRDb3JlIjogeworICAgICAgICAgICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE0
MTk3OCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiYXV0aG9yIjogeyJuYW1lIjogIk1pa2hh
aWwgUG96ZG55YWtvdiIsICJhY2NvdW50IjogIm1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20i
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIjogIkphdmFTY3JpcHRDb3JlIGNv
bW1pdCIsCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIF0KKyAgICB9CisKKyAgICBpdCgic2hvdWxkIGFjY2VwdCBpbnNlcnRp
bmcgb25lIGNvbW1pdCB3aXRoIHNvbWUgc3ViIGNvbW1pdHMiLCBmdW5jdGlvbiAoZG9uZSkgewor
ICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgYWRkU2xh
dmVGb3JSZXBvcnQoc3lzdGVtVmVyc2lvbkNvbW1pdFdpdGhTdWJjb21taXRzKS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RK
U09OKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNpb25Db21taXRXaXRoU3ViY29t
bWl0cyk7CisgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgIHJl
dHVybiBQcm9taXNlLmFsbChbZGIuc2VsZWN0Um93cygnY29tbWl0cycsIHsncmV2aXNpb24nOiAn
U2llcnJhMTZEMzInfSksCisgICAgICAgICAgICAgICAgZGIuc2VsZWN0Um93cygnY29tbWl0cycs
IHsnbWVzc2FnZSc6ICdXZWJLaXQgQ29tbWl0J30pLAorICAgICAgICAgICAgICAgIGRiLnNlbGVj
dFJvd3MoJ2NvbW1pdHMnLCB7J21lc3NhZ2UnOiAnSmF2YVNjcmlwdENvcmUgY29tbWl0J30pLAor
ICAgICAgICAgICAgICAgIGRiLnNlbGVjdFJvd3MoJ3JlcG9zaXRvcmllcycsIHsnbmFtZSc6ICdP
U1gnfSksCisgICAgICAgICAgICAgICAgZGIuc2VsZWN0Um93cygncmVwb3NpdG9yaWVzJywgeydu
YW1lJzogIldlYktpdCJ9KSwKKyAgICAgICAgICAgICAgICBkYi5zZWxlY3RSb3dzKCdyZXBvc2l0
b3JpZXMnLCB7J25hbWUnOiAnSmF2YVNjcmlwdENvcmUnfSldKQorICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHQubGVuZ3Ro
LCA2KTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFswXS5sZW5ndGgsIDEpOwor
ICAgICAgICAgICAgY29uc3Qgb3N4Q29tbWl0ID0gcmVzdWx0WzBdWzBdOworICAgICAgICAgICAg
YXNzZXJ0Lm5vdEVxdWFsKG9zeENvbW1pdCwgbnVsbCk7CisKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXN1bHRbMV0ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdENvbW1p
dCA9IHJlc3VsdFsxXVswXTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbCh3ZWJraXRDb21t
aXQsIG51bGwpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WzJdLmxlbmd0aCwg
MSk7CisgICAgICAgICAgICBjb25zdCBqc2NDb21taXQgPSByZXN1bHRbMl1bMF07CisgICAgICAg
ICAgICBhc3NlcnQubm90RXF1YWwoanNjQ29tbWl0LCBudWxsKTsKKworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlc3VsdFszXS5sZW5ndGgsIDEpOworICAgICAgICAgICAgY29uc3Qgb3N4UmVw
b3NpdG9yeSA9IHJlc3VsdFszXVswXTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChvc3hS
ZXBvc2l0b3J5LCBudWxsKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFs0XS5s
ZW5ndGgsIDEpOworICAgICAgICAgICAgY29uc3Qgd2Via2l0UmVwb3NpdG9yeSA9IHJlc3VsdFs0
XVswXTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbCh3ZWJraXRSZXBvc2l0b3J5LCBudWxs
KTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFs1XS5sZW5ndGgsIDEpOworICAg
ICAgICAgICAgY29uc3QganNjUmVwb3NpdG9yeSA9IHJlc3VsdFs1XVswXTsKKyAgICAgICAgICAg
IGFzc2VydC5ub3RFcXVhbChqc2NSZXBvc2l0b3J5LCBudWxsKTsKKworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKG9zeENvbW1pdC5yZXBvc2l0b3J5LCBvc3hSZXBvc2l0b3J5LmlkKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXRDb21taXQucmVwb3NpdG9yeSwgd2Via2l0UmVwb3Np
dG9yeS5pZCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoanNjQ29tbWl0LnJlcG9zaXRvcnks
IGpzY1JlcG9zaXRvcnkuaWQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeFJlcG9zaXRv
cnkub3duZXIsIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdFJlcG9zaXRv
cnkub3duZXIsIG9zeFJlcG9zaXRvcnkuaWQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGpz
Y1JlcG9zaXRvcnkub3duZXIsIG9zeFJlcG9zaXRvcnkuaWQpOworCisgICAgICAgICAgICByZXR1
cm4gUHJvbWlzZS5hbGwoW2RiLnNlbGVjdFJvd3MoJ2NvbW1pdF9vd25lcnNoaXBzJywgeydvd25l
cic6IG9zeENvbW1pdC5pZCwgJ293bmVkJzogd2Via2l0Q29tbWl0LmlkfSwgeydzb3J0QnknOiAn
b3duZXInfSksCisgICAgICAgICAgICAgICAgZGIuc2VsZWN0Um93cygnY29tbWl0X293bmVyc2hp
cHMnLCB7J293bmVyJzogb3N4Q29tbWl0LmlkLCAnb3duZWQnOiBqc2NDb21taXQuaWR9LCB7J3Nv
cnRCeSc6ICdvd25lcid9KSwKKyAgICAgICAgICAgICAgICBkYi5zZWxlY3RSb3dzKCdjb21taXRz
JywgeydyZXBvc2l0b3J5Jzogd2Via2l0UmVwb3NpdG9yeS5pZH0pXSk7CisgICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdC5s
ZW5ndGgsIDMpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WzBdLmxlbmd0aCwg
MSk7CisgICAgICAgICAgICBjb25zdCBvd25lckNvbW1pdEZvcldlYktpdENvbW1pdCA9IHJlc3Vs
dFswXVswXTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChvd25lckNvbW1pdEZvcldlYktp
dENvbW1pdCwgbnVsbCk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbMV0ubGVu
Z3RoLCAxKTsKKyAgICAgICAgICAgIGNvbnN0IG93bmVyQ29tbWl0Rm9ySlNDQ29tbWl0ID0gIHJl
c3VsdFsxXVswXTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChvd25lckNvbW1pdEZvckpT
Q0NvbW1pdCwgbnVsbCk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbMl0ubGVu
Z3RoLCAxKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSkuY2F0Y2goZG9uZSk7Cisg
ICAgfSkKKworICAgIGNvbnN0IG11bHRpcGxlU3lzdGVtVmVyc2lvbkNvbW1pdHNXaXRoU3ViY29t
bWl0cyA9IHsKKyAgICAgICAgInNsYXZlTmFtZSI6ICJzb21lU2xhdmUiLAorICAgICAgICAic2xh
dmVQYXNzd29yZCI6ICJzb21lUGFzc3dvcmQiLAorICAgICAgICAiY29tbWl0cyI6IFsKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJPU1giLAorICAgICAgICAg
ICAgICAgICJyZXZpc2lvbiI6ICJTaWVycmExNkQzMiIsCisgICAgICAgICAgICAgICAgIm9yZGVy
IjogMiwKKyAgICAgICAgICAgICAgICAic3ViQ29tbWl0cyI6IHsKKyAgICAgICAgICAgICAgICAg
ICAgIldlYktpdCI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNDE5
NzgiLAorICAgICAgICAgICAgICAgICAgICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJDb21taXQg
UXVldWUiLCAiYWNjb3VudCI6ICJjb21taXQtcXVldWVAd2Via2l0Lm9yZyJ9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgIm1lc3NhZ2UiOiAiV2ViS2l0IENvbW1pdCIsCisgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJKYXZhU2NyaXB0Q29yZSI6IHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNDE5NzgiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJNaWtoYWlsIFBvemRueWFrb3YiLCAiYWNjb3Vu
dCI6ICJtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tIn0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAibWVzc2FnZSI6ICJKYXZhU2NyaXB0Q29yZSBjb21taXQiLAorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJPU1giLAorICAgICAgICAgICAgICAgICJy
ZXZpc2lvbiI6ICJTaWVycmExNkM2NyIsCisgICAgICAgICAgICAgICAgIm9yZGVyIjogMSwKKyAg
ICAgICAgICAgICAgICAic3ViQ29tbWl0cyI6IHsKKyAgICAgICAgICAgICAgICAgICAgIldlYktp
dCI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNDE5NzgiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJDb21taXQgUXVldWUiLCAi
YWNjb3VudCI6ICJjb21taXQtcXVldWVAd2Via2l0Lm9yZyJ9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgIm1lc3NhZ2UiOiAiV2ViS2l0IENvbW1pdCIsCisgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgICJKYXZhU2NyaXB0Q29yZSI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJyZXZpc2lvbiI6ICIxNDE5OTkiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ImF1dGhvciI6IHsibmFtZSI6ICJNaWtoYWlsIFBvemRueWFrb3YiLCAiYWNjb3VudCI6ICJtaWto
YWlsLnBvemRueWFrb3ZAaW50ZWwuY29tIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAibWVz
c2FnZSI6ICJuZXcgSmF2YVNjcmlwdENvcmUgY29tbWl0IiwKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXQorICAgIH07CisK
KyAgICBpdCgic2hvdWxkIGFjY2VwdCBpbnNlcnRpbmcgbXVsdGlwbGUgY29tbWl0cyB3aXRoIG11
bHRpcGxlIHN1Yi1jb21taXRzIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgY29uc3QgZGIg
PSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgIGFkZFNsYXZlRm9yUmVwb3J0KG11bHRp
cGxlU3lzdGVtVmVyc2lvbkNvbW1pdHNXaXRoU3ViY29tbWl0cykudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2Fw
aS9yZXBvcnQtY29tbWl0cy8nLCBtdWx0aXBsZVN5c3RlbVZlcnNpb25Db21taXRzV2l0aFN1YmNv
bW1pdHMpOworICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5hbGwoW2RiLnNlbGVjdFJvd3MoJ2NvbW1pdHMnLCB7J3JldmlzaW9uJzog
J1NpZXJyYTE2RDMyJ30pLAorICAgICAgICAgICAgICAgIGRiLnNlbGVjdFJvd3MoJ2NvbW1pdHMn
LCB7J3JldmlzaW9uJzogJ1NpZXJyYTE2QzY3J30pLAorICAgICAgICAgICAgICAgIGRiLnNlbGVj
dFJvd3MoJ2NvbW1pdHMnLCB7J21lc3NhZ2UnOiAnV2ViS2l0IENvbW1pdCd9KSwKKyAgICAgICAg
ICAgICAgICBkYi5zZWxlY3RSb3dzKCdjb21taXRzJywgeydtZXNzYWdlJzogJ0phdmFTY3JpcHRD
b3JlIGNvbW1pdCd9KSwKKyAgICAgICAgICAgICAgICBkYi5zZWxlY3RSb3dzKCdjb21taXRzJywg
eydtZXNzYWdlJzogJ25ldyBKYXZhU2NyaXB0Q29yZSBjb21taXQnfSksCisgICAgICAgICAgICAg
ICAgZGIuc2VsZWN0Um93cygncmVwb3NpdG9yaWVzJywgeyduYW1lJzogJ09TWCd9KSwKKyAgICAg
ICAgICAgICAgICBkYi5zZWxlY3RSb3dzKCdyZXBvc2l0b3JpZXMnLCB7J25hbWUnOiAiV2ViS2l0
In0pLAorICAgICAgICAgICAgICAgIGRiLnNlbGVjdFJvd3MoJ3JlcG9zaXRvcmllcycsIHsnbmFt
ZSc6ICdKYXZhU2NyaXB0Q29yZSd9KV0pCisgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3Vs
dCkgeworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdC5sZW5ndGgsIDgpOworCisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WzBdLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBj
b25zdCBvc3hDb21taXQwID0gcmVzdWx0WzBdWzBdOworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVx
dWFsKG9zeENvbW1pdDAsIG51bGwpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0
WzFdLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBjb25zdCBvc3hDb21taXQxID0gcmVzdWx0WzFd
WzBdOworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKG9zeENvbW1pdDEsIG51bGwpOworCisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WzJdLmxlbmd0aCwgMSk7CisgICAgICAgICAg
ICBjb25zdCB3ZWJraXRDb21taXQgPSByZXN1bHRbMl1bMF07CisgICAgICAgICAgICBhc3NlcnQu
bm90RXF1YWwod2Via2l0Q29tbWl0LCBudWxsKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3VsdFszXS5sZW5ndGgsIDEpOworICAgICAgICAgICAgY29uc3QganNjQ29tbWl0MCA9IHJl
c3VsdFszXVswXTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChqc2NDb21taXQwLCBudWxs
KTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFs0XS5sZW5ndGgsIDEpOworICAg
ICAgICAgICAgY29uc3QganNjQ29tbWl0MSA9IHJlc3VsdFs0XVswXTsKKyAgICAgICAgICAgIGFz
c2VydC5ub3RFcXVhbChqc2NDb21taXQxLCBudWxsKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3VsdFs1XS5sZW5ndGgsIDEpCisgICAgICAgICAgICBjb25zdCBvc3hSZXBvc2l0b3J5
ID0gcmVzdWx0WzVdWzBdOworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKG9zeFJlcG9zaXRv
cnksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeFJlcG9zaXRvcnkub3duZXIs
IG51bGwpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WzZdLmxlbmd0aCwgMSkK
KyAgICAgICAgICAgIGNvbnN0IHdlYmtpdFJlcG9zaXRvcnkgPSByZXN1bHRbNl1bMF07CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwod2Via2l0UmVwb3NpdG9yeS5vd25lciwgb3N4UmVwb3NpdG9y
eS5pZCk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbN10ubGVuZ3RoLCAxKTsK
KyAgICAgICAgICAgIGNvbnN0IGpzY1JlcG9zaXRvcnkgPSByZXN1bHRbN11bMF07CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoanNjUmVwb3NpdG9yeS5vd25lciwgb3N4UmVwb3NpdG9yeS5pZCk7
CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvc3hDb21taXQwLnJlcG9zaXRvcnksIG9zeFJl
cG9zaXRvcnkuaWQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeENvbW1pdDEucmVwb3Np
dG9yeSwgb3N4UmVwb3NpdG9yeS5pZCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwod2Via2l0
Q29tbWl0LnJlcG9zaXRvcnksIHdlYmtpdFJlcG9zaXRvcnkuaWQpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGpzY0NvbW1pdDAucmVwb3NpdG9yeSwganNjUmVwb3NpdG9yeS5pZCk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoanNjQ29tbWl0MS5yZXBvc2l0b3J5LCBqc2NSZXBvc2l0b3J5
LmlkKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvc3hSZXBvc2l0b3J5Lm93bmVyLCBudWxs
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXRSZXBvc2l0b3J5Lm93bmVyLCBvc3hS
ZXBvc2l0b3J5LmlkKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChqc2NSZXBvc2l0b3J5Lm93
bmVyLCBvc3hSZXBvc2l0b3J5LmlkKTsKKworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxs
KFtkYi5zZWxlY3RSb3dzKCdjb21taXRfb3duZXJzaGlwcycsIHsnb3duZXInOiBvc3hDb21taXQw
LmlkLCAnb3duZWQnOiB3ZWJraXRDb21taXQuaWR9LCB7J3NvcnRCeSc6ICdvd25lcid9KSwKKyAg
ICAgICAgICAgICAgICBkYi5zZWxlY3RSb3dzKCdjb21taXRfb3duZXJzaGlwcycsIHsnb3duZXIn
OiBvc3hDb21taXQxLmlkLCAnb3duZWQnOiB3ZWJraXRDb21taXQuaWR9LCB7J3NvcnRCeSc6ICdv
d25lcid9KSwKKyAgICAgICAgICAgICAgICBkYi5zZWxlY3RSb3dzKCdjb21taXRfb3duZXJzaGlw
cycsIHsnb3duZXInOiBvc3hDb21taXQwLmlkLCAnb3duZWQnOiBqc2NDb21taXQwLmlkfSwgeydz
b3J0QnknOiAnb3duZXInfSksCisgICAgICAgICAgICAgICAgZGIuc2VsZWN0Um93cygnY29tbWl0
X293bmVyc2hpcHMnLCB7J293bmVyJzogb3N4Q29tbWl0MS5pZCwgJ293bmVkJzoganNjQ29tbWl0
MS5pZH0sIHsnc29ydEJ5JzogJ293bmVyJ30pLAorICAgICAgICAgICAgICAgIGRiLnNlbGVjdFJv
d3MoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiB3ZWJraXRSZXBvc2l0b3J5LmlkfSldKTsKKyAg
ICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzdWx0Lmxlbmd0aCwgNSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRb
MF0ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGNvbnN0IG93bmVyQ29tbWl0Rm9yV2ViS2l0Q29t
bWl0MCA9IHJlc3VsdFswXVswXTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChvd25lckNv
bW1pdEZvcldlYktpdENvbW1pdDAsIG51bGwpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzdWx0WzFdLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBjb25zdCBvd25lckNvbW1pdEZvcldl
YktpdENvbW1pdDEgPSByZXN1bHRbMV1bMF07CisgICAgICAgICAgICBhc3NlcnQubm90RXF1YWwo
b3duZXJDb21taXRGb3JXZWJLaXRDb21taXQxLCBudWxsKTsKKworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlc3VsdFsyXS5sZW5ndGgsIDEpOworICAgICAgICAgICAgY29uc3Qgb3duZXJDb21t
aXRGb3JKU0NDb21taXQwID0gcmVzdWx0WzJdWzBdOworICAgICAgICAgICAgYXNzZXJ0Lm5vdEVx
dWFsKG93bmVyQ29tbWl0Rm9ySlNDQ29tbWl0MCwgbnVsbCk7CisKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXN1bHRbM10ubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGNvbnN0IG93bmVyQ29t
bWl0Rm9ySlNDQ29tbWl0MSA9IHJlc3VsdFszXVswXTsKKyAgICAgICAgICAgIGFzc2VydC5ub3RF
cXVhbChvd25lckNvbW1pdEZvckpTQ0NvbW1pdDEsIG51bGwpOworCisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzdWx0WzRdLmxlbmd0aCwgMSk7CisKKyAgICAgICAgICAgIGRvbmUoKTsKKyAg
ICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgfSk7CisKKyAgICBjb25zdCBzeXN0ZW1WZXJzaW9u
Q29tbWl0V2l0aEVtcHR5U3ViY29tbWl0cyA9IHsKKyAgICAgICAgInNsYXZlTmFtZSI6ICJzb21l
U2xhdmUiLAorICAgICAgICAic2xhdmVQYXNzd29yZCI6ICJzb21lUGFzc3dvcmQiLAorICAgICAg
ICAiY29tbWl0cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAicmVwb3NpdG9y
eSI6ICJPU1giLAorICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICJTaWVycmExNkQzMiIsCisg
ICAgICAgICAgICAgICAgIm9yZGVyIjogMSwKKyAgICAgICAgICAgICAgICAic3ViQ29tbWl0cyI6
IHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9CisK
KyAgICBpdCgic2hvdWxkIGFjY2VwdCBpbnNlcnRpbmcgb25lIGNvbW1pdCB3aXRoIG5vIHN1YiBj
b21taXRzIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVy
LmRhdGFiYXNlKCk7CisgICAgICAgIGFkZFNsYXZlRm9yUmVwb3J0KHN5c3RlbVZlcnNpb25Db21t
aXRXaXRoRW1wdHlTdWJjb21taXRzKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC1jb21taXRz
LycsIHN5c3RlbVZlcnNpb25Db21taXRXaXRoRW1wdHlTdWJjb21taXRzKTsKKyAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNw
b25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtk
Yi5zZWxlY3RBbGwoJ2NvbW1pdHMnKSwgZGIuc2VsZWN0QWxsKCdyZXBvc2l0b3JpZXMnKSwgZGIu
c2VsZWN0QWxsKCdjb21taXRfb3duZXJzaGlwcycsICdvd25lcicpXSk7CisgICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICAgICAgbGV0IGNvbW1pdHMgPSByZXN1bHRb
MF07CisgICAgICAgICAgICBsZXQgcmVwb3NpdG9yaWVzID0gcmVzdWx0WzFdOworICAgICAgICAg
ICAgbGV0IGNvbW1pdF9vd25lcnNoaXBzID0gcmVzdWx0WzJdOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbW1pdHMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBv
c2l0b3JpZXMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRzWzBd
LnJlcG9zaXRvcnksIHJlcG9zaXRvcmllc1swXS5pZCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVwb3NpdG9yaWVzWzBdLm5hbWUsICdPU1gnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChjb21taXRfb3duZXJzaGlwcy5sZW5ndGgsIDApOworICAgICAgICAgICAgZG9uZSgpOworICAg
ICAgICB9KS5jYXRjaChkb25lKTsKKyAgICB9KTsKKworICAgIGNvbnN0IHN5c3RlbVZlcnNpb25D
b21taXRBbmRTdWJjb21taXRXaXRoVGltZXN0YW1wID0geworICAgICAgICAic2xhdmVOYW1lIjog
InNvbWVTbGF2ZSIsCisgICAgICAgICJzbGF2ZVBhc3N3b3JkIjogInNvbWVQYXNzd29yZCIsCisg
ICAgICAgICJjb21taXRzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJyZXBv
c2l0b3J5IjogIk9TWCIsCisgICAgICAgICAgICAgICAgInJldmlzaW9uIjogIlNpZXJyYTE2RDMy
IiwKKyAgICAgICAgICAgICAgICAib3JkZXIiOiAxLAorICAgICAgICAgICAgICAgICJzdWJDb21t
aXRzIjogeworICAgICAgICAgICAgICAgICAgICAiV2ViS2l0IjogeworICAgICAgICAgICAgICAg
ICAgICAgICAgInJldmlzaW9uIjogIjE0MTk3OCIsCisgICAgICAgICAgICAgICAgICAgICAgICAi
dGltZSI6ICIyMDEzLTAyLTA2VDA4OjU1OjIwLjlaIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJhdXRob3IiOiB7Im5hbWUiOiAiQ29tbWl0IFF1ZXVlIiwgImFjY291bnQiOiAiY29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmcifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIjogIldl
YktpdCBDb21taXQiLAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICBdCisgICAgfQorCisgICAgaXQoInNob3VsZCByZWplY3Qg
aW5zZXJ0aW5nIG9uZSBjb21taXQgd2l0aCBzdWIgY29tbWl0cyB0aGF0IGNvbnRhaW5zIHRpbWVz
dGFtcCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5k
YXRhYmFzZSgpOworICAgICAgICBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJzaW9uQ29tbWl0
QW5kU3ViY29tbWl0V2l0aFRpbWVzdGFtcCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQtY29t
bWl0cy8nLCBzeXN0ZW1WZXJzaW9uQ29tbWl0QW5kU3ViY29tbWl0V2l0aFRpbWVzdGFtcCk7Cisg
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnU3ViQ29tbWl0U2hvdWxkTm90Q29udGFpblRpbWVz
dGFtcCcpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAg
ICB9KTsKIH0pOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pz
L2RhdGFiYXNlLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2RhdGFiYXNl
LmpzCmluZGV4IDgwMmFkZDZlNGIzOWI4OWQ1Y2IxODQ0ZTMxMjY2ZjdjZTk4ODY0NDAuLjZkZmVk
MzhlMDIyMjc2Y2Q3NmE3NzQ5MzVlYWFkOTM0NWNiMzY3NmIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9kYXRhYmFzZS5qcworKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdG9vbHMvanMvZGF0YWJhc2UuanMKQEAgLTEzNiw2ICsxMzYsNyBAQCBjb25z
dCB0YWJsZVRvUHJlZml4TWFwID0gewogICAgICdidWlsZHMnOiAnYnVpbGQnLAogICAgICdidWls
ZGVycyc6ICdidWlsZGVyJywKICAgICAnY29tbWl0cyc6ICdjb21taXQnLAorICAgICdjb21taXRf
b3duZXJzaGlwcyc6ICdjb21taXQnLAogICAgICdjb21taXR0ZXJzJzogJ2NvbW1pdHRlcicsCiAg
ICAgJ3Rlc3RfY29uZmlndXJhdGlvbnMnOiAnY29uZmlnJywKICAgICAndGVzdF9tZXRyaWNzJzog
J21ldHJpYycsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>