<?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>137510</bug_id>
          
          <creation_ts>2014-10-07 20:48:40 -0700</creation_ts>
          <short_desc>Perf dashboard should store commit logs</short_desc>
          <delta_ts>2016-02-16 13:53:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Perf Dashboard</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1040194</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-10-07 20:48:40 -0700</bug_when>
    <thetext>For the v2 version of the perf dashboard, we would like to be able to see commit logs in the dashboard itself.

Change the database schema to support this, add a tool to submit commit logs from a subversion repository,
and add Web API to report and retrieve commit logs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040210</commentid>
    <comment_count>1</comment_count>
      <attachid>239454</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-10-07 22:12:13 -0700</bug_when>
    <thetext>Created attachment 239454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040329</commentid>
    <comment_count>2</comment_count>
      <attachid>239454</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-08 10:20:35 -0700</bug_when>
    <thetext>Comment on attachment 239454
Patch

Clearing flags on attachment: 239454

Committed r174459: &lt;http://trac.webkit.org/changeset/174459&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040330</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-08 10:20:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239454</attachid>
            <date>2014-10-07 22:12:13 -0700</date>
            <delta_ts>2014-10-08 10:20:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137510-20141007221200.patch</filename>
            <type>text/plain</type>
            <size>47756</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMTc0NDE1KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDExMCBAQAorMjAxNC0xMC0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBQZXJmIGRhc2hib2FyZCBzaG91bGQgc3RvcmUgY29tbWl0IGxvZ3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzUxMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvciB0aGUgdjIgdmVy
c2lvbiBvZiB0aGUgcGVyZiBkYXNoYm9hcmQsIHdlIHdvdWxkIGxpa2UgdG8gYmUgYWJsZSB0byBz
ZWUgY29tbWl0IGxvZ3MgaW4gdGhlIGRhc2hib2FyZCBpdHNlbGYuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZXBsYWNlcyAiYnVpbGRfcmV2aXNpb25zIiB0YWJsZSB3aXRoICJjb21taXRzIiBhbmQg
ImJ1aWxkX2NvbW1pdHMiIHJlbGF0aW9ucyB0byBzdG9yZSBjb21taXQgbG9ncywKKyAgICAgICAg
YW5kIGFkZCBKU09OIEFQSXMgdG8gcmVwb3J0IGFuZCByZXRyaWV2ZSB0aGVtLiBJdCBhbHNvIGFk
ZHMgYSB0b29scy9wdWxsLXN2bi5weSB0byBwdWxsIGNvbW1pdCBsb2dzIGZyb20KKyAgICAgICAg
YSBzdWJ2ZXJzaW9uIGRpcmVjdG9yeS4gVGhlIGdpdCB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0IHdp
bGwgYmUgYWRkZWQgaW4gYSBmb2xsb3cgdXAgcGF0Y2guCisKKworICAgICAgICBJbiB0aGUgbmV3
IGRhdGFiYXNlIHNjaGVtYSwgZWFjaCByZXZpc2lvbiBpbiBlYWNoIHJlcG9zaXRvcnkgaXMgcmVw
cmVzZW50ZWQgYnkgZXhhY3RseSBvbmUgcm93IGluICJjb21taXRzIgorICAgICAgICBpbnN0ZWFk
IG9mIG9uZSByb3cgZm9yIGVhY2ggYnVpbGQgaW4gImJ1aWxkX3JldmlzaW9ucyIuICJjb21taXRz
IiBhbmQgImJ1aWxkcyIgbm93IGhhdmUgYSBwcm9wZXIgbWFueS10by1tYW55CisgICAgICAgIHJl
bGF0aW9uc2hpcCB2aWEgImJ1aWxkX2NvbW1pdHMiIHJlbGF0aW9ucy4KKworICAgICAgICBJbiBv
cmRlciB0byBtaWdyYXRlIGFuIGV4aXN0aW5nIGluc3RhbmNlIG9mIHRoaXMgYXBwbGljYXRpb24s
IHJ1biB0aGUgZm9sbG93aW5nIFNRTCBjb21tYW5kczoKKworICAgICAgICBCRUdJTjsKKworICAg
ICAgICBJTlNFUlQgSU5UTyBjb21taXRzIChjb21taXRfcmVwb3NpdG9yeSwgY29tbWl0X3Jldmlz
aW9uLCBjb21taXRfdGltZSkKKyAgICAgICAgICAgIChTRUxFQ1QgRElTVElOQ1QgT04gKHJldmlz
aW9uX3JlcG9zaXRvcnksIHJldmlzaW9uX3ZhbHVlKQorICAgICAgICAgICAgICAgIHJldmlzaW9u
X3JlcG9zaXRvcnksIHJldmlzaW9uX3ZhbHVlLCByZXZpc2lvbl90aW1lIEZST00gYnVpbGRfcmV2
aXNpb25zKTsKKworICAgICAgICBJTlNFUlQgSU5UTyBidWlsZF9jb21taXRzIChjb21taXRfYnVp
bGQsIGJ1aWxkX2NvbW1pdCkgU0VMRUNUIHJldmlzaW9uX2J1aWxkLCBjb21taXRfaWQKKyAgICAg
ICAgICAgIEZST00gY29tbWl0cywgYnVpbGRfcmV2aXNpb25zCisgICAgICAgICAgICBXSEVSRSBj
b21taXRfcmVwb3NpdG9yeSA9IHJldmlzaW9uX3JlcG9zaXRvcnkgQU5EIGNvbW1pdF9yZXZpc2lv
biA9IHJldmlzaW9uX3ZhbHVlOworCisgICAgICAgIERST1AgVEFCTEUgYnVpbGRfcmV2aXNpb25z
OworCisgICAgICAgIENPTU1JVDsKKworCisgICAgICAgIFRoZSBoZWxwZXIgc2NyaXB0IHRvIHN1
Ym1pdCBjb21taXQgbG9ncyBjYW4gYmUgdXNlZCBhcyBmb2xsb3dzOgorCisgICAgICAgIHB5dGhv
biAuL3Rvb2xzL3B1bGwtc3ZuLnB5ICJXZWJLaXQiIGh0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVw
b3NpdG9yeS93ZWJraXQvIGh0dHBzOi8vcGVyZi53ZWJraXQub3JnCisgICAgICAgICAgICBmZWVk
ZXItc2xhdmUgZmVlZGVyLXNsYXZlLXBhc3N3b3JkIDYwICJ3ZWJraXQtcGF0Y2ggZmluZC11c2Vy
cyIKKworICAgICAgICBUaGUgYWJvdmUgY29tbWFuZCB3aWxsIHB1bGwgdGhlIHN1YnZlcnNpb24g
c2VydmVyIGF0IGh0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvIGV2ZXJ5
IDYwIHNlY29uZHMKKyAgICAgICAgdG8gcmV0cmlldmUgYXQgbW9zdCAxMCBjb21taXRzLCBhbmQg
c3VibWl0cyB0aGUgcmVzdWx0cyB0byBodHRwczovL3BlcmYud2Via2l0Lm9yZyB1c2luZyAiZmVl
ZGVyLXNsYXZlIiBhbmQKKyAgICAgICAgImZlZWRlci1zbGF2ZS1wYXNzd29yZCIgYXMgdGhlIGJ1
aWxkZXIgbmFtZSBhbmQgdGhlIGJ1aWxkZXIgcGFzc3dvcmQgcmVzcGVjdGl2ZWx5LgorCisgICAg
ICAgIFRoZSBsYXN0LCBvcHRpb25hbCwgYXJndW1lbnQgaXMgdGhlIHNoZWxsIGNvbW1hbmQgdG8g
Y29udmVydCBhIHN1YnZlcnNpb24gYWNjb3VudCB0byB0aGUgY29ycmVzcG9uZGluZyB1c2VybmFt
ZS4KKyAgICAgICAgZS5nLiAid2Via2l0LXBhdGNoIGZpbmQtdXNlcnMgcm5pd2FAd2Via2l0Lm9y
ZyIgeWllbGRzICJSeW9zdWtlIE5pd2EiIDxybml3YUB3ZWJraXQub3JnPiBpbiB0aGUgc3Rkb3V0
LgorCisKKyAgICAgICAgKiBpbml0LWRhdGFiYXNlLnNxbDogUmVwbGFjZWQgImJ1aWxkX3Jldmlz
aW9ucyIgcmVsYXRpb24gd2l0aCAiY29tbWl0cyIgYW5kICJidWlsZF9jb21taXRzIiByZWxhdGlv
bnMuCisKKyAgICAgICAgKiBwdWJsaWMvYXBpL2NvbW1pdHMucGhwOiBBZGRlZC4gUmV0cmlldmVz
IGEgbGlzdCBvZiBjb21taXRzIGJhc2VkIG9uIGFyZ3VtZW50cyBpbiBpdHMgcGF0aCBvZiB0aGUg
Zm9ybQorICAgICAgICAgICAgL2FwaS9jb21taXRzLzxyZXBvc2l0b3J5LW5hbWU+LzxmaWx0ZXI+
LiBUaGUgYmVoYXZpb3Igb2YgdGhpcyBBUEkgZGVwZW5kcyBvbiA8ZmlsdGVyPiBhcyBmb2xsb3dz
OgorCisgICAgICAgICAgICAtIE5vdCBzcGVjaWZpZWQgLSBJdCByZXR1cm5zIGV2ZXJ5IHNpbmds
ZSBjb21taXQgZm9yIGEgZ2l2ZW4gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIC0gTWF0Y2hlcyAi
b2xkZXN0IiAtIEl0IHJldHVybnMgdGhlIGNvbW1pdCB3aXRoIHRoZSBvbGRlc3QgdGltZXN0YW1w
LgorICAgICAgICAgICAgLSBNYXRjaGVzICJsYXRlc3QiIC0gSXQgcmV0dXJucyB0aGUgY29tbWl0
IHdpdGggdGhlIGxhdGVzdCB0aW1lc3RhbXAuCisgICAgICAgICAgICAtIE1hdGNoZXMgImxhc3Qt
cmVwb3J0ZWQiIC0gSXQgcmV0dXJucyB0aGUgY29tbWl0IHdpdGggdGhlIGxhdGVzdCB0aW1lc3Rh
bXAgYWRkZWQgdmlhIHJlcG9ydC1jb21taXRzLnBocC4KKyAgICAgICAgICAgIC0gSXMgZW50aXJl
bHkgYWxwaGFudW1lcmljIC0gSXQgcmV0dXJucyB0aGUgY29tbWl0IHdob3NlIHJldmlzaW9uIG1h
dGNoZXMgdGhlIGZpbHRlci4KKyAgICAgICAgICAgIC0gSXMgb2YgdGhlIGZvcm0gPGFscGhhbnVt
ZXJpYz46PGFscGhhbnVtZXJpYz4gb3IgPGFscGhhbnVtZXJpYz4tPGFscGhhbnVtZXJpYz4gLSBJ
dCByZXRyaWV2ZXMgdGhlIGxpc3QKKyAgICAgICAgICAgIG9mIGNvbW1pdHMgYWRkZWQgdmlhIHJl
cG9ydC1jb21taXRzLnBocCBiZXR3ZWVuIHR3byB0aW1lc3RhbXBzIHJldHJpZXZlZCBmcm9tIGNv
bW1pdHMgd2hvc2UgcmV2aXNpb25zCisgICAgICAgICAgICBtYXRjaCB0aGUgdHdvIGFscGhhbnVt
ZXJpYyB2YWx1ZXMgc3BlY2lmaWVkLiBCZWNhdXNlIGl0IHJldHJpZXZlcyBjb21taXRzIGJhc2Vk
IG9uIHRoZWlyIHRpbWVzdGFtcHMsCisgICAgICAgICAgICB0aGUgbGlzdCBtYXkgY29udGFpbiBj
b21taXRzIHRoYXQgZG8gbm90IGFwcGVhciBhcyBuZWl0aGVyIGhhc2gncyBhbmNlc3RvciBpbiBn
aXQvbWVyY3VyaWFsLgorICAgICAgICAobWFpbik6CisgICAgICAgIChjb21taXRfZnJvbV9yZXZp
c2lvbik6CisgICAgICAgIChmZXRjaF9jb21taXRzX2JldHdlZW4pOgorICAgICAgICAoZm9ybWF0
X2NvbW1pdHMpOgorCisgICAgICAgICogcHVibGljL2FwaS9yZXBvcnQtY29tbWl0cy5waHA6IEFk
ZGVkLiBBIEpTT04gQVBJIHRvIHJlcG9ydCBuZXcgc3VidmVyc2lvbiwgZ2l0LCBvciBtZXJjdXJp
YWwgY29tbWl0cy4KKyAgICAgICAgU2VlIHRlc3RzL2FwaS1yZXBvcnQtY29tbWl0cy5qcyBmb3Ig
ZXhhbXBsZXMgb24gaG93IHRvIHVzZSB0aGlzIEFQSS4KKworICAgICAgICAqIHB1YmxpYy9hcGkv
cnVucy5waHA6IFVwZGF0ZWQgdGhlIHF1ZXJ5IHRvIHVzZSAiY29tbWl0X2J1aWxkcyIgYW5kICJj
b21taXRzIiByZWxhdGlvbnMgaW5zdGVhZCBvZgorICAgICAgICAiYnVpbGRfcmV2aXNpb25zIi4g
UmVncmV0dGFibHksIHRoZSBuZXcgcXVlcnkgaXMgMjAlIHNsb3dlciBidXQgSSdtIGdvaW5nIHRv
IHdhaXQgdW50aWwgdGhlIG5ldyBVSSBpcyByZWFkeQorICAgICAgICB0byBvcHRpbWl6ZSB0aGlz
IGFuZCBvdGhlciBKU09OIEFQSXMuCisKKyAgICAgICAgKiBwdWJsaWMvaW5jbHVkZS9kYi5waHA6
CisgICAgICAgIChEYXRhYmFzZTo6c2VsZWN0X29yX2luc2VydF9yb3cpOgorICAgICAgICAoRGF0
YWJhc2U6OnVwZGF0ZV9vcl9pbnNlcnRfcm93KTogQWRkZWQuCisgICAgICAgIChEYXRhYmFzZTo6
X3NlbGVjdF91cGRhdGVfb3JfaW5zZXJ0X3Jvdyk6IEV4dHJhY3RlZCBmcm9tIHNlbGVjdF9vcl9p
bnNlcnRfcm93LiBUcnkgdG8gdXBkYXRlIGZpcnN0IGFuZCB0aGVuCisgICAgICAgIGluc2VydCBp
ZiB0aGUgdXBkYXRlIGZhaWxzIGZvciB1cGRhdGVfb3JfaW5zZXJ0X3Jvdy4gUHJlc2VydmVzIHRo
ZSBvbGQgYmVoYXZpb3Igd2hlbiAkc2hvdWxkX3VwZGF0ZSBpcyBmYWxzZS4KKworICAgICAgICAo
RGF0YWJhc2U6OnNlbGVjdF9maXJzdF9yb3cpOgorICAgICAgICAoRGF0YWJhc2U6OnNlbGVjdF9s
YXN0X3Jvdyk6IEFkZGVkLgorICAgICAgICAoRGF0YWJhc2U6OnNlbGVjdF9maXJzdF9vcl9sYXN0
X3Jvdyk6IEV4dHJhY3RlZCBmcm9tIHNlbGVjdF9maXJzdF9yb3cuIEZpeGVkIGEgYnVnIHRoYXQg
d2Ugd2VyZSBhc3NlcnRpbmcKKyAgICAgICAgJG9yZGVyX2J5IHRvIGJlIG5vdCBhbHBoYW51bWVy
aWMvdW5kZXJzY29yZS4gUmV0cmlldmUgdGhlIGxhc3Qgcm93IGluc3RlYWQgb2YgdGhlIGZpcnN0
IGlmICRkZXNjZW5kaW5nX29yZGVyLgorCisgICAgICAgICogcHVibGljL2luY2x1ZGUvcmVwb3J0
LXByb2Nlc3Nvci5waHA6CisgICAgICAgIChSZXBvcnRQcm9jZXNzb3I6OnJlc29sdmVfYnVpbGRf
aWQpOiBTdG9yZSBjb21taXRzIGluc3RlYWQgb2YgYnVpbGRfcmV2aXNpb25zLiBXZSBkb24ndCB3
b3JyeSBhYm91dCB0aGUgcmFjZQorICAgICAgICBjb25kaXRpb24gZm9yIGFkZGluZyAiYnVpbGRf
Y29tbWl0cyIgcm93cyBzaW5jZSB3ZSBzaG91bGRuJ3QgaGF2ZSBhIHNpbmdsZSB0ZXN0ZXIgc3Vi
bWl0dGluZyB0aGUgc2FtZSByZXN1bHQKKyAgICAgICAgY29uY3VycmVudGx5LiBFdmVuIGlmIGl0
IGhhcHBlbmVkLCBpdCB3aWxsIG9ubHkgcmVzdWx0IGluIGEgUEhQIGVycm9yIGFuZCB0aGUgZGF0
YWJhc2Ugd2lsbCBzdGF5IGNvbnNpc3RlbnQuCisKKyAgICAgICAgKiBydW4tdGVzdHMuanM6Cisg
ICAgICAgIChwYXRoVG9UZXN0cyk6IERvbid0IGNhbGwgcGF0aC5yZXNvbHZlIHdpdGggInVuZGVm
aW5lZCIgdGVzdE5hbWU7IEl0IHRocm93cyBhbiBleGNlcHRpb24gaW4gdGhlIGxhdGVzdCBub2Rl
LmpzLgorCisgICAgICAgICogdGVzdHMvYXBpLXJlcG9ydC1jb21taXRzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiB0ZXN0cy9hcGktcmVwb3J0LmpzOiBGaXhlZCBhIHRlc3QgcGVyIGJ1aWxkX3Jldmlz
aW9ucyB0byBidWlsZF9jb21taXRzL2NvbW1pdHMgcmVwbGFjZW1lbnQuCisKKyAgICAgICAgKiB0
b29sczogQWRkZWQuCisgICAgICAgICogdG9vbHMvcHVsbC1zdm4ucHk6IEFkZGVkLiBTZWUgYWJv
dmUgZm9yIGhvdyB0byB1c2UgdGhpcyBzY3JpcHQuCisgICAgICAgIChtYWluKToKKyAgICAgICAg
KGRldGVybWluZV9maXJzdF9yZXZpc2lvbl90b19mZXRjaCk6CisgICAgICAgIChmZXRjaF9yZXZp
c2lvbl9mcm9tX2Rhc2Job2FyZCk6CisgICAgICAgIChmZXRjaF9jb21taXRfYW5kX3Jlc29sdmVf
YXV0aG9yKToKKyAgICAgICAgKGZldGNoX2NvbW1pdCk6CisgICAgICAgICh0ZXh0Q29udGVudCk6
CisgICAgICAgIChyZXNvbHZlX2F1dGhvcl9uYW1lX2Zyb21fZW1haWwpOgorICAgICAgICAoc3Vi
bWl0X2NvbW1pdHMpOgorCiAyMDE0LTA5LTMwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVwZGF0ZSBJbnN0YWxsLm1kIGZvciBNYXZlcmlja3MgYW5kIGZpeCB0
eXBvcwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbAko
cmV2aXNpb24gMTc0NDE0KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJh
c2Uuc3FsCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOSBAQCBEUk9QIFRBQkxFIHRlc3RfcnVu
cyBDQVNDQURFOwogRFJPUCBUQUJMRSB0ZXN0X2NvbmZpZ3VyYXRpb25zIENBU0NBREU7CiBEUk9Q
IFRZUEUgdGVzdF9jb25maWd1cmF0aW9uX3R5cGUgQ0FTQ0FERTsKIERST1AgVEFCTEUgYWdncmVn
YXRvcnMgQ0FTQ0FERTsKLURST1AgVEFCTEUgYnVpbGRfcmV2aXNpb25zIENBU0NBREU7CiBEUk9Q
IFRBQkxFIGJ1aWxkcyBDQVNDQURFOworRFJPUCBUQUJMRSBjb21taXRzIENBU0NBREU7CitEUk9Q
IFRBQkxFIGJ1aWxkX2NvbW1pdHMgQ0FTQ0FERTsKIERST1AgVEFCTEUgYnVpbGRlcnMgQ0FTQ0FE
RTsKIERST1AgVEFCTEUgcmVwb3NpdG9yaWVzIENBU0NBREU7CiBEUk9QIFRBQkxFIHBsYXRmb3Jt
cyBDQVNDQURFOwpAQCAtNTAsMTQgKzUxLDI2IEBAIENSRUFURSBUQUJMRSBidWlsZHMgKAogICAg
IENPTlNUUkFJTlQgYnVpbGRlcl9idWlsZF90aW1lX3R1cGxlX211c3RfYmVfdW5pcXVlIFVOSVFV
RShidWlsZF9idWlsZGVyLCBidWlsZF9udW1iZXIsIGJ1aWxkX3RpbWUpKTsKIENSRUFURSBJTkRF
WCBidWlsZF9idWlsZGVyX2luZGV4IE9OIGJ1aWxkcyhidWlsZF9idWlsZGVyKTsKIAotQ1JFQVRF
IFRBQkxFIGJ1aWxkX3JldmlzaW9ucyAoCi0gICAgcmV2aXNpb25fYnVpbGQgaW50ZWdlciBOT1Qg
TlVMTCBSRUZFUkVOQ0VTIGJ1aWxkcyBPTiBERUxFVEUgQ0FTQ0FERSwKLSAgICByZXZpc2lvbl9y
ZXBvc2l0b3J5IGludGVnZXIgTk9UIE5VTEwgUkVGRVJFTkNFUyByZXBvc2l0b3JpZXMgT04gREVM
RVRFIENBU0NBREUsCi0gICAgcmV2aXNpb25fdmFsdWUgdmFyY2hhcig2NCkgTk9UIE5VTEwsCi0g
ICAgcmV2aXNpb25fdGltZSB0aW1lc3RhbXAsCi0gICAgUFJJTUFSWSBLRVkgKHJldmlzaW9uX3Jl
cG9zaXRvcnksIHJldmlzaW9uX2J1aWxkKSk7Ci1DUkVBVEUgSU5ERVggcmV2aXNpb25fYnVpbGRf
aW5kZXggT04gYnVpbGRfcmV2aXNpb25zKHJldmlzaW9uX2J1aWxkKTsKLUNSRUFURSBJTkRFWCBy
ZXZpc2lvbl9yZXBvc2l0b3J5X2luZGV4IE9OIGJ1aWxkX3JldmlzaW9ucyhyZXZpc2lvbl9yZXBv
c2l0b3J5KTsKK0NSRUFURSBUQUJMRSBjb21taXRzICgKKyAgICBjb21taXRfaWQgc2VyaWFsIFBS
SU1BUlkgS0VZLAorICAgIGNvbW1pdF9yZXBvc2l0b3J5IGludGVnZXIgTk9UIE5VTEwgUkVGRVJF
TkNFUyByZXBvc2l0b3JpZXMgT04gREVMRVRFIENBU0NBREUsCisgICAgY29tbWl0X3JldmlzaW9u
IHZhcmNoYXIoNjQpIE5PVCBOVUxMLAorICAgIGNvbW1pdF9wYXJlbnQgaW50ZWdlciBSRUZFUkVO
Q0VTIGNvbW1pdHMgT04gREVMRVRFIENBU0NBREUsCisgICAgY29tbWl0X3RpbWUgdGltZXN0YW1w
LAorICAgIGNvbW1pdF9hdXRob3JfbmFtZSB2YXJjaGFyKDEyOCksCisgICAgY29tbWl0X2F1dGhv
cl9lbWFpbCB2YXJjaGFyKDMyMCksCisgICAgY29tbWl0X21lc3NhZ2UgdGV4dCwKKyAgICBjb21t
aXRfcmVwb3J0ZWQgYm9vbGVhbiBOT1QgTlVMTCBERUZBVUxUIEZBTFNFLAorICAgIENPTlNUUkFJ
TlQgY29tbWl0X2luX3JlcG9zaXRvcnlfbXVzdF9iZV91bmlxdWUgVU5JUVVFKGNvbW1pdF9yZXBv
c2l0b3J5LCBjb21taXRfcmV2aXNpb24pKTsKK0NSRUFURSBJTkRFWCBjb21taXRfdGltZV9pbmRl
eCBPTiBjb21taXRzKGNvbW1pdF90aW1lKTsKK0NSRUFURSBJTkRFWCBjb21taXRfYXV0aG9yX25h
bWVfaW5kZXggT04gY29tbWl0cyhjb21taXRfYXV0aG9yX25hbWUpOworQ1JFQVRFIElOREVYIGNv
bW1pdF9hdXRob3JfZW1haWxfaW5kZXggT04gY29tbWl0cyhjb21taXRfYXV0aG9yX2VtYWlsKTsK
KworQ1JFQVRFIFRBQkxFIGJ1aWxkX2NvbW1pdHMgKAorICAgIGNvbW1pdF9idWlsZCBpbnRlZ2Vy
IE5PVCBOVUxMIFJFRkVSRU5DRVMgYnVpbGRzIE9OIERFTEVURSBDQVNDQURFLAorICAgIGJ1aWxk
X2NvbW1pdCBpbnRlZ2VyIE5PVCBOVUxMIFJFRkVSRU5DRVMgY29tbWl0cyBPTiBERUxFVEUgQ0FT
Q0FERQorICAgIFBSSU1BUlkgS0VZIChjb21taXRfYnVpbGQsIGJ1aWxkX2NvbW1pdCkpOworQ1JF
QVRFIElOREVYIGJ1aWxkX2NvbW1pdHNfaW5kZXggT04gYnVpbGRfY29tbWl0cyhjb21taXRfYnVp
bGQsIGJ1aWxkX2NvbW1pdCk7CiAKIENSRUFURSBUQUJMRSBhZ2dyZWdhdG9ycyAoCiAgICAgYWdn
cmVnYXRvcl9pZCBzZXJpYWwgUFJJTUFSWSBLRVksCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcnVuLXRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9ydW4tdGVzdHMuanMJKHJldmlzaW9uIDE3NDQxNCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9ydW4tdGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAgZnVuY3Rp
b24gcGF0aFRvRGF0YWJzZVNRTChyZWxhdGl2ZVBhdGgpIAogfQogCiBmdW5jdGlvbiBwYXRoVG9U
ZXN0cyh0ZXN0TmFtZSkgewotICAgIHJldHVybiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAndGVz
dHMnLCB0ZXN0TmFtZSk7CisgICAgcmV0dXJuIHRlc3ROYW1lID8gcGF0aC5yZXNvbHZlKF9fZGly
bmFtZSwgJ3Rlc3RzJywgdGVzdE5hbWUpIDogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3Rlc3Rz
Jyk7CiB9CiAKIHZhciBjb25maWd1cmF0aW9uSlNPTiA9IHJlcXVpcmUoJy4vY29uZmlnLmpzb24n
KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL2NvbW1pdHMucGhw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL2NvbW1p
dHMucGhwCShyZXZpc2lvbiAwKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9h
cGkvY29tbWl0cy5waHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorPD9waHAKKwor
cmVxdWlyZV9vbmNlKCcuLi9pbmNsdWRlL2pzb24taGVhZGVyLnBocCcpOworCitmdW5jdGlvbiBt
YWluKCRwYXRocykgeworICAgIGlmIChjb3VudCgkcGF0aHMpIDwgMSB8fCBjb3VudCgkcGF0aHMp
ID4gMikKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkUmVxdWVzdCcpOworCisgICAg
JGRiID0gbmV3IERhdGFiYXNlOworICAgIGlmICghJGRiLT5jb25uZWN0KCkpCisgICAgICAgIGV4
aXRfd2l0aF9lcnJvcignRGF0YWJhc2VDb25uZWN0aW9uRmFpbHVyZScpOworCisgICAgJHJlcG9z
aXRvcnlfbmFtZSA9ICRwYXRoc1swXTsKKyAgICAkcmVwb3NpdG9yeV9yb3cgPSAkZGItPnNlbGVj
dF9maXJzdF9yb3coJ3JlcG9zaXRvcmllcycsICdyZXBvc2l0b3J5JywgYXJyYXkoJ25hbWUnID0+
ICRyZXBvc2l0b3J5X25hbWUpKTsKKyAgICBpZiAoISRyZXBvc2l0b3J5X3JvdykKKyAgICAgICAg
ZXhpdF93aXRoX2Vycm9yKCdSZXBvc2l0b3J5Tm90Rm91bmQnLCBhcnJheSgncmVwb3NpdG9yeU5h
bWUnID0+ICRyZXBvc2l0b3J5X25hbWUpKTsKKyAgICAkcmVwb3NpdG9yeV9pZCA9ICRyZXBvc2l0
b3J5X3Jvd1sncmVwb3NpdG9yeV9pZCddOworCisgICAgJGZpbHRlciA9IGFycmF5X2dldCgkcGF0
aHMsIDEpOworICAgICRzaW5nbGVfY29tbWl0ID0gTlVMTDsKKyAgICAkY29tbWl0cyA9IGFycmF5
KCk7CisgICAgaWYgKCEkZmlsdGVyKSB7CisgICAgICAgICRjb21taXRzID0gJGRiLT5mZXRjaF90
YWJsZSgnY29tbWl0cycsICdjb21taXRfdGltZScpOworICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9
PSAnb2xkZXN0JykgeworICAgICAgICAkc2luZ2xlX2NvbW1pdCA9ICRkYi0+c2VsZWN0X2ZpcnN0
X3JvdygnY29tbWl0cycsICdjb21taXQnLCBhcnJheSgncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRv
cnlfaWQpLCAndGltZScpOworICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnbGF0ZXN0Jykgewor
ICAgICAgICAkc2luZ2xlX2NvbW1pdCA9ICRkYi0+c2VsZWN0X2xhc3Rfcm93KCdjb21taXRzJywg
J2NvbW1pdCcsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCksICd0aW1lJyk7
CisgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdsYXN0LXJlcG9ydGVkJykgeworICAgICAgICAk
c2luZ2xlX2NvbW1pdCA9ICRkYi0+c2VsZWN0X2xhc3Rfcm93KCdjb21taXRzJywgJ2NvbW1pdCcs
IGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ3JlcG9ydGVkJyA9PiB0cnVl
KSwgJ3RpbWUnKTsKKyAgICB9IGVsc2UgaWYgKGN0eXBlX2FsbnVtKCRmaWx0ZXIpKSB7CisgICAg
ICAgICRzaW5nbGVfY29tbWl0ID0gY29tbWl0X2Zyb21fcmV2aXNpb24oJGRiLCAkcmVwb3NpdG9y
eV9pZCwgJHJlcG9zaXRvcnlfbmFtZSwgJGZpbHRlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
JG1hdGNoZXMgPSBhcnJheSgpOworICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy8oW0EtWmEtejAt
OV0rKVtcOlwtXShbQS1aYS16MC05XSspLycsICRmaWx0ZXIsICRtYXRjaGVzKSkKKyAgICAgICAg
ICAgIGV4aXRfd2l0aF9lcnJvcignVW5rbm93bkZpbHRlcicsIGFycmF5KCdyZXBvc2l0b3J5TmFt
ZScgPT4gJHJlcG9zaXRvcnlfbmFtZSwgJ2ZpbHRlcicgPT4gJGZpbHRlcikpOworCisgICAgICAg
ICRmaXJzdCA9IGNvbW1pdF9mcm9tX3JldmlzaW9uKCRkYiwgJHJlcG9zaXRvcnlfaWQsICRtYXRj
aGVzWzFdKVsnY29tbWl0X3RpbWUnXTsKKyAgICAgICAgJHNlY29uZCA9IGNvbW1pdF9mcm9tX3Jl
dmlzaW9uKCRkYiwgJHJlcG9zaXRvcnlfaWQsICRtYXRjaGVzWzJdKVsnY29tbWl0X3RpbWUnXTsK
KyAgICAgICAgJGluX29yZGVyID0gJGZpcnN0IDwgJHNlY29uZDsKKworICAgICAgICAkY29tbWl0
cyA9IGZldGNoX2NvbW1pdHNfYmV0d2VlbigkZGIsICRyZXBvc2l0b3J5X2lkLCAkaW5fb3JkZXIg
PyAkZmlyc3QgOiAkc2Vjb25kLCAkaW5fb3JkZXIgPyAkc2Vjb25kIDogJGZpcnN0KTsKKyAgICB9
CisKKyAgICBleGl0X3dpdGhfc3VjY2VzcyhhcnJheSgnY29tbWl0cycgPT4gZm9ybWF0X2NvbW1p
dHMoJHNpbmdsZV9jb21taXQgPyBhcnJheSgkc2luZ2xlX2NvbW1pdCkgOiAkY29tbWl0cykpKTsK
K30KKworZnVuY3Rpb24gY29tbWl0X2Zyb21fcmV2aXNpb24oJGRiLCAkcmVwb3NpdG9yeV9pZCwg
JHJldmlzaW9uKSB7CisgICAgJGFsbF9idXRfZmlyc3QgPSBzdWJzdHIoJHJldmlzaW9uLCAxKTsK
KyAgICBpZiAoJHJldmlzaW9uWzBdID09ICdyJyAmJiBjdHlwZV9kaWdpdCgkYWxsX2J1dF9maXJz
dCkpCisgICAgICAgICRyZXZpc2lvbiA9ICRhbGxfYnV0X2ZpcnN0OworICAgICRjb21taXRfaW5m
byA9IGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ3JldmlzaW9uJyA9PiAk
cmV2aXNpb24pOworICAgICRyb3cgPSAkZGItPnNlbGVjdF9sYXN0X3JvdygnY29tbWl0cycsICdj
b21taXQnLCAkY29tbWl0X2luZm8pOworICAgIGlmICghJHJvdykKKyAgICAgICAgZXhpdF93aXRo
X2Vycm9yKCdVbmtub3duQ29tbWl0JywgJGNvbW1pdF9pbmZvKTsKKyAgICByZXR1cm4gJHJvdzsK
K30KKworZnVuY3Rpb24gZmV0Y2hfY29tbWl0c19iZXR3ZWVuKCRkYiwgJHJlcG9zaXRvcnlfaWQs
ICRmcm9tLCAkdG8pIHsKKyAgICAkY29tbWl0cyA9ICRkYi0+cXVlcnlfYW5kX2ZldGNoX2FsbCgn
U0VMRUNUICogRlJPTSBjb21taXRzCisgICAgICAgIFdIRVJFIGNvbW1pdF9yZXBvc2l0b3J5ID0g
JDEgQU5EIGNvbW1pdF90aW1lID49ICQyIEFORCBjb21taXRfdGltZSA8PSAkMyBBTkQgY29tbWl0
X3JlcG9ydGVkID0gdHJ1ZSBPUkRFUiBCWSBjb21taXRfdGltZScsCisgICAgICAgIGFycmF5KCRy
ZXBvc2l0b3J5X2lkLCAkZnJvbSwgJHRvKSk7CisgICAgaWYgKCEkY29tbWl0cykKKyAgICAgICAg
ZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb0ZldGNoQ29tbWl0cycsIGFycmF5KCdyZXBvc2l0b3J5
JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ2Zyb20nID0+ICRmcm9tLCAndG8nID0+ICR0bykpOworICAg
IHJldHVybiAkY29tbWl0czsKK30KKworZnVuY3Rpb24gZm9ybWF0X2NvbW1pdHMoJGNvbW1pdHMp
IHsKKyAgICAkZm9ybWF0dGVkX2NvbW1pdHMgPSBhcnJheSgpOworICAgIGZvcmVhY2ggKCRjb21t
aXRzIGFzICRjb21taXRfcm93KSB7CisgICAgICAgIGFycmF5X3B1c2goJGZvcm1hdHRlZF9jb21t
aXRzLCBhcnJheSgKKyAgICAgICAgICAgICdpZCcgPT4gJGNvbW1pdF9yb3dbJ2NvbW1pdF9pZCdd
LAorICAgICAgICAgICAgJ3JldmlzaW9uJyA9PiAkY29tbWl0X3Jvd1snY29tbWl0X3JldmlzaW9u
J10sCisgICAgICAgICAgICAncGFyZW50JyA9PiAkY29tbWl0X3Jvd1snY29tbWl0X3BhcmVudCdd
LAorICAgICAgICAgICAgJ3RpbWUnID0+ICRjb21taXRfcm93Wydjb21taXRfdGltZSddLAorICAg
ICAgICAgICAgJ2F1dGhvcicgPT4gYXJyYXkoJ25hbWUnID0+ICRjb21taXRfcm93Wydjb21taXRf
YXV0aG9yX25hbWUnXSwgJ2VtYWlsJyA9PiAkY29tbWl0X3Jvd1snY29tbWl0X2F1dGhvcl9lbWFp
bCddKSwKKyAgICAgICAgICAgICdtZXNzYWdlJyA9PiAkY29tbWl0X3Jvd1snY29tbWl0X21lc3Nh
Z2UnXQorICAgICAgICApKTsKKyAgICB9CisgICAgcmV0dXJuICRmb3JtYXR0ZWRfY29tbWl0czsK
K30KKworbWFpbihhcnJheV9rZXlfZXhpc3RzKCdQQVRIX0lORk8nLCAkX1NFUlZFUikgPyBleHBs
b2RlKCcvJywgdHJpbSgkX1NFUlZFUlsnUEFUSF9JTkZPJ10sICcvJykpIDogYXJyYXkoKSk7CisK
Kz8+CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9yZXBvcnQtY29t
bWl0cy5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9h
cGkvcmVwb3J0LWNvbW1pdHMucGhwCShyZXZpc2lvbiAwKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9hcGkvcmVwb3J0LWNvbW1pdHMucGhwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTYyIEBACis8P3BocAorCityZXF1aXJlKCcuLi9pbmNsdWRlL2pzb24taGVhZGVyLnBo
cCcpOworCitmdW5jdGlvbiBtYWluKCRwb3N0X2RhdGEpIHsKKyAgICAkZGIgPSBuZXcgRGF0YWJh
c2U7CisgICAgaWYgKCEkZGItPmNvbm5lY3QoKSkKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdE
YXRhYmFzZUNvbm5lY3Rpb25GYWlsdXJlJyk7CisKKyAgICAkcmVwb3J0ID0ganNvbl9kZWNvZGUo
JHBvc3RfZGF0YSwgdHJ1ZSk7CisKKyAgICB2ZXJpZnlfYnVpbGRlcigkZGIsICRyZXBvcnQpOwor
CisgICAgJGNvbW1pdHMgPSBhcnJheV9nZXQoJHJlcG9ydCwgJ2NvbW1pdHMnLCBhcnJheSgpKTsK
KworICAgIGZvcmVhY2ggKCRjb21taXRzIGFzICRjb21taXRfaW5mbykgeworICAgICAgICBpZiAo
IWFycmF5X2tleV9leGlzdHMoJ3JlcG9zaXRvcnknLCAkY29tbWl0X2luZm8pKQorICAgICAgICAg
ICAgZXhpdF93aXRoX2Vycm9yKCdNaXNzaW5nUmVwb3NpdG9yeU5hbWUnLCBhcnJheSgnY29tbWl0
JyA9PiAkY29tbWl0X2luZm8pKTsKKyAgICAgICAgaWYgKCFhcnJheV9rZXlfZXhpc3RzKCdyZXZp
c2lvbicsICRjb21taXRfaW5mbykpCisgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ01pc3Np
bmdSZXZpc2lvbicsIGFycmF5KCdjb21taXQnID0+ICRjb21taXRfaW5mbykpOworICAgICAgICBp
ZiAoIWN0eXBlX2FsbnVtKCRjb21taXRfaW5mb1sncmV2aXNpb24nXSkpCisgICAgICAgICAgICBl
eGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXZpc2lvbicsIGFycmF5KCdjb21taXQnID0+ICRjb21t
aXRfaW5mbykpOworICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJ3RpbWUnLCAkY29tbWl0
X2luZm8pKQorICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdNaXNzaW5nVGltZXN0YW1wJywg
YXJyYXkoJ2NvbW1pdCcgPT4gJGNvbW1pdF9pbmZvKSk7CisgICAgICAgIGlmICghYXJyYXlfa2V5
X2V4aXN0cygnYXV0aG9yJywgJGNvbW1pdF9pbmZvKSB8fCAhaXNfYXJyYXkoJGNvbW1pdF9pbmZv
WydhdXRob3InXSkpCisgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ01pc3NpbmdBdXRob3JP
ckludmFsaWRGb3JtYXQnLCBhcnJheSgnY29tbWl0JyA9PiAkY29tbWl0X2luZm8pKTsKKyAgICB9
CisKKyAgICAkZGItPmJlZ2luX3RyYW5zYWN0aW9uKCk7CisgICAgZm9yZWFjaCAoJGNvbW1pdHMg
YXMgJGNvbW1pdF9pbmZvKSB7CisgICAgICAgICRyZXBvc2l0b3J5X2lkID0gJGRiLT5zZWxlY3Rf
b3JfaW5zZXJ0X3JvdygncmVwb3NpdG9yaWVzJywgJ3JlcG9zaXRvcnknLCBhcnJheSgnbmFtZScg
PT4gJGNvbW1pdF9pbmZvWydyZXBvc2l0b3J5J10pKTsKKyAgICAgICAgaWYgKCEkcmVwb3NpdG9y
eV9pZCkgeworICAgICAgICAgICAgJGRiLT5yb2xsYmFja190cmFuc2FjdGlvbigpOworICAgICAg
ICAgICAgZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb0luc2VydFJlcG9zaXRvcnknLCBhcnJheSgn
Y29tbWl0JyA9PiAkY29tbWl0X2luZm8pKTsKKyAgICAgICAgfQorCisgICAgICAgICRwYXJlbnRf
cmV2aXNpb24gPSBhcnJheV9nZXQoJGNvbW1pdF9pbmZvLCAncGFyZW50Jyk7CisgICAgICAgICRw
YXJlbnRfaWQgPSBOVUxMOworICAgICAgICBpZiAoJHBhcmVudF9yZXZpc2lvbikgeworICAgICAg
ICAgICAgJHBhcmVudF9jb21taXQgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2NvbW1pdHMnLCAn
Y29tbWl0JywgYXJyYXkoJ3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X2lkLCAncmV2aXNpb24n
ID0+ICRwYXJlbnRfcmV2aXNpb24pKTsKKyAgICAgICAgICAgIGlmICghJHBhcmVudF9jb21taXQp
IHsKKyAgICAgICAgICAgICAgICAkZGItPnJvbGxiYWNrX3RyYW5zYWN0aW9uKCk7CisgICAgICAg
ICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb0ZpbmRQYXJlbnRDb21taXQnLCBhcnJh
eSgnY29tbWl0JyA9PiAkY29tbWl0X2luZm8pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICRwYXJlbnRfaWQgPSAkcGFyZW50X2NvbW1pdFsnY29tbWl0X2lkJ107CisgICAgICAgIH0KKwor
ICAgICAgICAkZGF0YSA9IGFycmF5KAorICAgICAgICAgICAgJ3JlcG9zaXRvcnknID0+ICRyZXBv
c2l0b3J5X2lkLAorICAgICAgICAgICAgJ3JldmlzaW9uJyA9PiAkY29tbWl0X2luZm9bJ3Jldmlz
aW9uJ10sCisgICAgICAgICAgICAncGFyZW50JyA9PiAkcGFyZW50X2lkLAorICAgICAgICAgICAg
J3RpbWUnID0+ICRjb21taXRfaW5mb1sndGltZSddLAorICAgICAgICAgICAgJ2F1dGhvcl9uYW1l
JyA9PiBhcnJheV9nZXQoJGNvbW1pdF9pbmZvWydhdXRob3InXSwgJ25hbWUnKSwKKyAgICAgICAg
ICAgICdhdXRob3JfZW1haWwnID0+IGFycmF5X2dldCgkY29tbWl0X2luZm9bJ2F1dGhvciddLCAn
ZW1haWwnKSwKKyAgICAgICAgICAgICdtZXNzYWdlJyA9PiAkY29tbWl0X2luZm9bJ21lc3NhZ2Un
XSwKKyAgICAgICAgICAgICdyZXBvcnRlZCcgPT4gdHJ1ZSwKKyAgICAgICAgKTsKKyAgICAgICAg
JGRiLT51cGRhdGVfb3JfaW5zZXJ0X3JvdygnY29tbWl0cycsICdjb21taXQnLCBhcnJheSgncmVw
b3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQsICdyZXZpc2lvbicgPT4gJGRhdGFbJ3JldmlzaW9u
J10pLCAkZGF0YSk7CisgICAgfQorICAgICRkYi0+Y29tbWl0X3RyYW5zYWN0aW9uKCk7CisKKyAg
ICBleGl0X3dpdGhfc3VjY2VzcygpOworfQorCitmdW5jdGlvbiB2ZXJpZnlfYnVpbGRlcigkZGIs
ICRyZXBvcnQpIHsKKyAgICBhcnJheV9rZXlfZXhpc3RzKCdidWlsZGVyTmFtZScsICRyZXBvcnQp
IG9yIGV4aXRfd2l0aF9lcnJvcignTWlzc2luZ0J1aWxkZXJOYW1lJyk7CisgICAgYXJyYXlfa2V5
X2V4aXN0cygnYnVpbGRlclBhc3N3b3JkJywgJHJlcG9ydCkgb3IgZXhpdF93aXRoX2Vycm9yKCdN
aXNzaW5nQnVpbGRlclBhc3N3b3JkJyk7CisKKyAgICAkYnVpbGRlcl9pbmZvID0gYXJyYXkoCisg
ICAgICAgICduYW1lJyA9PiAkcmVwb3J0WydidWlsZGVyTmFtZSddLAorICAgICAgICAncGFzc3dv
cmRfaGFzaCcgPT4gaGFzaCgnc2hhMjU2JywgJHJlcG9ydFsnYnVpbGRlclBhc3N3b3JkJ10pCisg
ICAgKTsKKworICAgICRtYXRjaGVkX2J1aWxkZXIgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2J1
aWxkZXJzJywgJ2J1aWxkZXInLCAkYnVpbGRlcl9pbmZvKTsKKyAgICBpZiAoISRtYXRjaGVkX2J1
aWxkZXIpCisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignQnVpbGRlck5vdEZvdW5kJywgYXJyYXko
J25hbWUnID0+ICRidWlsZGVyX2luZm9bJ25hbWUnXSkpOworfQorCittYWluKCRIVFRQX1JBV19Q
T1NUX0RBVEEpOworCis/PgorPD9waHAKKworcmVxdWlyZSgnLi4vaW5jbHVkZS9qc29uLWhlYWRl
ci5waHAnKTsKKworZnVuY3Rpb24gbWFpbigkcG9zdF9kYXRhKSB7CisgICAgJGRiID0gbmV3IERh
dGFiYXNlOworICAgIGlmICghJGRiLT5jb25uZWN0KCkpCisgICAgICAgIGV4aXRfd2l0aF9lcnJv
cignRGF0YWJhc2VDb25uZWN0aW9uRmFpbHVyZScpOworCisgICAgJHJlcG9ydCA9IGpzb25fZGVj
b2RlKCRwb3N0X2RhdGEsIHRydWUpOworCisgICAgdmVyaWZ5X2J1aWxkZXIoJGRiLCAkcmVwb3J0
KTsKKworICAgICRjb21taXRzID0gYXJyYXlfZ2V0KCRyZXBvcnQsICdjb21taXRzJywgYXJyYXko
KSk7CisKKyAgICBmb3JlYWNoICgkY29tbWl0cyBhcyAkY29tbWl0X2luZm8pIHsKKyAgICAgICAg
aWYgKCFhcnJheV9rZXlfZXhpc3RzKCdyZXBvc2l0b3J5JywgJGNvbW1pdF9pbmZvKSkKKyAgICAg
ICAgICAgIGV4aXRfd2l0aF9lcnJvcignTWlzc2luZ1JlcG9zaXRvcnlOYW1lJywgYXJyYXkoJ2Nv
bW1pdCcgPT4gJGNvbW1pdF9pbmZvKSk7CisgICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygn
cmV2aXNpb24nLCAkY29tbWl0X2luZm8pKQorICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdN
aXNzaW5nUmV2aXNpb24nLCBhcnJheSgnY29tbWl0JyA9PiAkY29tbWl0X2luZm8pKTsKKyAgICAg
ICAgaWYgKCFjdHlwZV9hbG51bSgkY29tbWl0X2luZm9bJ3JldmlzaW9uJ10pKQorICAgICAgICAg
ICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkUmV2aXNpb24nLCBhcnJheSgnY29tbWl0JyA9PiAk
Y29tbWl0X2luZm8pKTsKKyAgICAgICAgaWYgKCFhcnJheV9rZXlfZXhpc3RzKCd0aW1lJywgJGNv
bW1pdF9pbmZvKSkKKyAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTWlzc2luZ1RpbWVzdGFt
cCcsIGFycmF5KCdjb21taXQnID0+ICRjb21taXRfaW5mbykpOworICAgICAgICBpZiAoIWFycmF5
X2tleV9leGlzdHMoJ2F1dGhvcicsICRjb21taXRfaW5mbykgfHwgIWlzX2FycmF5KCRjb21taXRf
aW5mb1snYXV0aG9yJ10pKQorICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdNaXNzaW5nQXV0
aG9yT3JJbnZhbGlkRm9ybWF0JywgYXJyYXkoJ2NvbW1pdCcgPT4gJGNvbW1pdF9pbmZvKSk7Cisg
ICAgfQorCisgICAgJGRiLT5iZWdpbl90cmFuc2FjdGlvbigpOworICAgIGZvcmVhY2ggKCRjb21t
aXRzIGFzICRjb21taXRfaW5mbykgeworICAgICAgICAkcmVwb3NpdG9yeV9pZCA9ICRkYi0+c2Vs
ZWN0X29yX2luc2VydF9yb3coJ3JlcG9zaXRvcmllcycsICdyZXBvc2l0b3J5JywgYXJyYXkoJ25h
bWUnID0+ICRjb21taXRfaW5mb1sncmVwb3NpdG9yeSddKSk7CisgICAgICAgIGlmICghJHJlcG9z
aXRvcnlfaWQpIHsKKyAgICAgICAgICAgICRkYi0+cm9sbGJhY2tfdHJhbnNhY3Rpb24oKTsKKyAg
ICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9JbnNlcnRSZXBvc2l0b3J5JywgYXJy
YXkoJ2NvbW1pdCcgPT4gJGNvbW1pdF9pbmZvKSk7CisgICAgICAgIH0KKworICAgICAgICAkcGFy
ZW50X3JldmlzaW9uID0gYXJyYXlfZ2V0KCRjb21taXRfaW5mbywgJ3BhcmVudCcpOworICAgICAg
ICAkcGFyZW50X2lkID0gTlVMTDsKKyAgICAgICAgaWYgKCRwYXJlbnRfcmV2aXNpb24pIHsKKyAg
ICAgICAgICAgICRwYXJlbnRfY29tbWl0ID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdjb21taXRz
JywgJ2NvbW1pdCcsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwgJ3Jldmlz
aW9uJyA9PiAkcGFyZW50X3JldmlzaW9uKSk7CisgICAgICAgICAgICBpZiAoISRwYXJlbnRfY29t
bWl0KSB7CisgICAgICAgICAgICAgICAgJGRiLT5yb2xsYmFja190cmFuc2FjdGlvbigpOworICAg
ICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9GaW5kUGFyZW50Q29tbWl0Jywg
YXJyYXkoJ2NvbW1pdCcgPT4gJGNvbW1pdF9pbmZvKSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAkcGFyZW50X2lkID0gJHBhcmVudF9jb21taXRbJ2NvbW1pdF9pZCddOworICAgICAgICB9
CisKKyAgICAgICAgJGRhdGEgPSBhcnJheSgKKyAgICAgICAgICAgICdyZXBvc2l0b3J5JyA9PiAk
cmVwb3NpdG9yeV9pZCwKKyAgICAgICAgICAgICdyZXZpc2lvbicgPT4gJGNvbW1pdF9pbmZvWydy
ZXZpc2lvbiddLAorICAgICAgICAgICAgJ3BhcmVudCcgPT4gJHBhcmVudF9pZCwKKyAgICAgICAg
ICAgICd0aW1lJyA9PiAkY29tbWl0X2luZm9bJ3RpbWUnXSwKKyAgICAgICAgICAgICdhdXRob3Jf
bmFtZScgPT4gYXJyYXlfZ2V0KCRjb21taXRfaW5mb1snYXV0aG9yJ10sICduYW1lJyksCisgICAg
ICAgICAgICAnYXV0aG9yX2VtYWlsJyA9PiBhcnJheV9nZXQoJGNvbW1pdF9pbmZvWydhdXRob3In
XSwgJ2VtYWlsJyksCisgICAgICAgICAgICAnbWVzc2FnZScgPT4gJGNvbW1pdF9pbmZvWydtZXNz
YWdlJ10sCisgICAgICAgICAgICAncmVwb3J0ZWQnID0+IHRydWUsCisgICAgICAgICk7CisgICAg
ICAgICRkYi0+dXBkYXRlX29yX2luc2VydF9yb3coJ2NvbW1pdHMnLCAnY29tbWl0JywgYXJyYXko
J3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X2lkLCAncmV2aXNpb24nID0+ICRkYXRhWydyZXZp
c2lvbiddKSwgJGRhdGEpOworICAgIH0KKyAgICAkZGItPmNvbW1pdF90cmFuc2FjdGlvbigpOwor
CisgICAgZXhpdF93aXRoX3N1Y2Nlc3MoKTsKK30KKworZnVuY3Rpb24gdmVyaWZ5X2J1aWxkZXIo
JGRiLCAkcmVwb3J0KSB7CisgICAgYXJyYXlfa2V5X2V4aXN0cygnYnVpbGRlck5hbWUnLCAkcmVw
b3J0KSBvciBleGl0X3dpdGhfZXJyb3IoJ01pc3NpbmdCdWlsZGVyTmFtZScpOworICAgIGFycmF5
X2tleV9leGlzdHMoJ2J1aWxkZXJQYXNzd29yZCcsICRyZXBvcnQpIG9yIGV4aXRfd2l0aF9lcnJv
cignTWlzc2luZ0J1aWxkZXJQYXNzd29yZCcpOworCisgICAgJGJ1aWxkZXJfaW5mbyA9IGFycmF5
KAorICAgICAgICAnbmFtZScgPT4gJHJlcG9ydFsnYnVpbGRlck5hbWUnXSwKKyAgICAgICAgJ3Bh
c3N3b3JkX2hhc2gnID0+IGhhc2goJ3NoYTI1NicsICRyZXBvcnRbJ2J1aWxkZXJQYXNzd29yZCdd
KQorICAgICk7CisKKyAgICAkbWF0Y2hlZF9idWlsZGVyID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93
KCdidWlsZGVycycsICdidWlsZGVyJywgJGJ1aWxkZXJfaW5mbyk7CisgICAgaWYgKCEkbWF0Y2hl
ZF9idWlsZGVyKQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0J1aWxkZXJOb3RGb3VuZCcsIGFy
cmF5KCduYW1lJyA9PiAkYnVpbGRlcl9pbmZvWyduYW1lJ10pKTsKK30KKworbWFpbigkSFRUUF9S
QVdfUE9TVF9EQVRBKTsKKworPz4KSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvYXBpL3J1bnMucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvYXBpL3J1bnMucGhwCShyZXZpc2lvbiAxNzQ0MTQpCisrKyBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL2FwaS9ydW5zLnBocAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMw
LDEwIEBAIGlmICgkcmVwb3NpdG9yeV90YWJsZSA9ICRkYi0+ZmV0Y2hfdGFibGUKIAogZnVuY3Rp
b24gZmV0Y2hfcnVuc19mb3JfY29uZmlnKCRkYiwgJGNvbmZpZykgewogICAgICRyYXdfcnVucyA9
ICRkYi0+cXVlcnlfYW5kX2ZldGNoX2FsbCgnCi0gICAgU0VMRUNUIHRlc3RfcnVucy4qLCBidWls
ZHMuKiwgYXJyYXlfYWdnKChyZXZpc2lvbl9yZXBvc2l0b3J5LCByZXZpc2lvbl92YWx1ZSwgcmV2
aXNpb25fdGltZSkpIEFTIHJldmlzaW9ucwotICAgICAgICBGUk9NIGJ1aWxkcyBMRUZUIE9VVEVS
IEpPSU4gYnVpbGRfcmV2aXNpb25zIE9OIHJldmlzaW9uX2J1aWxkID0gYnVpbGRfaWQsIHRlc3Rf
cnVucwotICAgICAgICBXSEVSRSBydW5fYnVpbGQgPSBidWlsZF9pZCBBTkQgcnVuX2NvbmZpZyA9
ICQxCi0gICAgICAgIEdST1VQIEJZIGJ1aWxkX2lkLCBidWlsZF9idWlsZGVyLCBidWlsZF9udW1i
ZXIsIGJ1aWxkX3RpbWUsIGJ1aWxkX2xhdGVzdF9yZXZpc2lvbiwKLSAgICAgICAgICAgIHJ1bl9p
ZCwgcnVuX2NvbmZpZywgcnVuX2J1aWxkLCBydW5faXRlcmF0aW9uX2NvdW50X2NhY2hlLAotICAg
ICAgICAgICAgcnVuX21lYW5fY2FjaGUsIHJ1bl9zdW1fY2FjaGUsIHJ1bl9zcXVhcmVfc3VtX2Nh
Y2hlJywgYXJyYXkoJGNvbmZpZ1snY29uZmlnX2lkJ10pKTsKKyAgICBTRUxFQ1QgdGVzdF9ydW5z
LiosIGJ1aWxkcy4qLCBhcnJheV9hZ2coKGNvbW1pdF9yZXBvc2l0b3J5LCBjb21taXRfcmV2aXNp
b24sIGNvbW1pdF90aW1lKSkgQVMgcmV2aXNpb25zCisgICAgICAgIEZST00gYnVpbGRzIExFRlQg
T1VURVIgSk9JTiBidWlsZF9jb21taXRzIE9OIGNvbW1pdF9idWlsZCA9IGJ1aWxkX2lkLCB0ZXN0
X3J1bnMsIGNvbW1pdHMKKyAgICAgICAgV0hFUkUgcnVuX2J1aWxkID0gYnVpbGRfaWQgQU5EIHJ1
bl9jb25maWcgPSAkMSBBTkQgYnVpbGRfY29tbWl0ID0gY29tbWl0X2lkCisgICAgICAgIEdST1VQ
IEJZIGJ1aWxkX2lkLCBydW5faWQnLCBhcnJheSgkY29uZmlnWydjb25maWdfaWQnXSkpOwogCiAg
ICAgJGZvcm1hdHRlZF9ydW5zID0gYXJyYXkoKTsKICAgICBpZiAoISRyYXdfcnVucykKSW5kZXg6
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9kYi5waHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2RiLnBocAkocmV2
aXNpb24gMTc0NDE0KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRl
L2RiLnBocAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCwxNCBAQCBjbGFzcyBEYXRhYmFz
ZQogICAgIH0KIAogICAgIGZ1bmN0aW9uIHNlbGVjdF9vcl9pbnNlcnRfcm93KCR0YWJsZSwgJHBy
ZWZpeCwgJHNlbGVjdF9wYXJhbXMsICRpbnNlcnRfcGFyYW1zID0gTlVMTCwgJHJldHVybmluZyA9
ICdpZCcpIHsKKyAgICAgICAgcmV0dXJuICR0aGlzLT5fc2VsZWN0X3VwZGF0ZV9vcl9pbnNlcnRf
cm93KCR0YWJsZSwgJHByZWZpeCwgJHNlbGVjdF9wYXJhbXMsICRpbnNlcnRfcGFyYW1zLCAkcmV0
dXJuaW5nLCBGQUxTRSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdXBkYXRlX29yX2luc2VydF9y
b3coJHRhYmxlLCAkcHJlZml4LCAkc2VsZWN0X3BhcmFtcywgJGluc2VydF9wYXJhbXMgPSBOVUxM
LCAkcmV0dXJuaW5nID0gJ2lkJykgeworICAgICAgICByZXR1cm4gJHRoaXMtPl9zZWxlY3RfdXBk
YXRlX29yX2luc2VydF9yb3coJHRhYmxlLCAkcHJlZml4LCAkc2VsZWN0X3BhcmFtcywgJGluc2Vy
dF9wYXJhbXMsICRyZXR1cm5pbmcsIFRSVUUpOworICAgIH0KKworICAgIHByaXZhdGUgZnVuY3Rp
b24gX3NlbGVjdF91cGRhdGVfb3JfaW5zZXJ0X3JvdygkdGFibGUsICRwcmVmaXgsICRzZWxlY3Rf
cGFyYW1zLCAkaW5zZXJ0X3BhcmFtcywgJHJldHVybmluZywgJHNob3VsZF91cGRhdGUpIHsKICAg
ICAgICAgJHZhbHVlcyA9IGFycmF5KCk7CiAKICAgICAgICAgJHNlbGVjdF9wbGFjZWhvbGRlcnMg
PSBhcnJheSgpOwpAQCAtMTI0LDIzICsxMzIsNDIgQEAgY2xhc3MgRGF0YWJhc2UKIAogICAgICAg
ICAkaW5zZXJ0X2NvbHVtbl9uYW1lcyA9ICR0aGlzLT5wcmVmaXhlZF9jb2x1bW5fbmFtZXMoJGlu
c2VydF9jb2x1bW5fbmFtZXMsICRwcmVmaXgpOwogICAgICAgICAkaW5zZXJ0X3BsYWNlaG9sZGVy
cyA9IGpvaW4oJywgJywgJGluc2VydF9wbGFjZWhvbGRlcnMpOwotICAgICAgICAkcm93cyA9ICR0
aGlzLT5xdWVyeV9hbmRfZmV0Y2hfYWxsKCJJTlNFUlQgSU5UTyAkdGFibGUgKCRpbnNlcnRfY29s
dW1uX25hbWVzKSBTRUxFQ1QgJGluc2VydF9wbGFjZWhvbGRlcnMgV0hFUkUgTk9UIEVYSVNUUwot
ICAgICAgICAgICAgKCRxdWVyeSkgUkVUVVJOSU5HICRyZXR1cm5pbmdfY29sdW1uX25hbWUiLCAk
dmFsdWVzKTsKLSAgICAgICAgaWYgKCEkcm93cykKKworICAgICAgICAvLyBodHRwOi8vc3RhY2tv
dmVyZmxvdy5jb20vcXVlc3Rpb25zLzExMDkwNjEvaW5zZXJ0LW9uLWR1cGxpY2F0ZS11cGRhdGUt
aW4tcG9zdGdyZXNxbAorICAgICAgICAkcm93cyA9IE5VTEw7CisgICAgICAgIGlmICgkc2hvdWxk
X3VwZGF0ZSkgeworICAgICAgICAgICAgJHJvd3MgPSAkdGhpcy0+cXVlcnlfYW5kX2ZldGNoX2Fs
bCgiVVBEQVRFICR0YWJsZSBTRVQgKCRpbnNlcnRfY29sdW1uX25hbWVzKSA9ICgkaW5zZXJ0X3Bs
YWNlaG9sZGVycykKKyAgICAgICAgICAgICAgICBXSEVSRSAoJHNlbGVjdF9jb2x1bW5fbmFtZXMp
ID0gKCRzZWxlY3RfcGxhY2Vob2xkZXJzKSBSRVRVUk5JTkcgJHJldHVybmluZ19jb2x1bW5fbmFt
ZSIsICR2YWx1ZXMpOworICAgICAgICB9CisgICAgICAgIGlmICghJHJvd3MpIHsKKyAgICAgICAg
ICAgICRyb3dzID0gJHRoaXMtPnF1ZXJ5X2FuZF9mZXRjaF9hbGwoIklOU0VSVCBJTlRPICR0YWJs
ZSAoJGluc2VydF9jb2x1bW5fbmFtZXMpIFNFTEVDVCAkaW5zZXJ0X3BsYWNlaG9sZGVycworICAg
ICAgICAgICAgICAgIFdIRVJFIE5PVCBFWElTVFMgKCRxdWVyeSkgUkVUVVJOSU5HICRyZXR1cm5p
bmdfY29sdW1uX25hbWUiLCAkdmFsdWVzKTsgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAg
ICBpZiAoISRzaG91bGRfdXBkYXRlICYmICEkcm93cykKICAgICAgICAgICAgICRyb3dzID0gJHRo
aXMtPnF1ZXJ5X2FuZF9mZXRjaF9hbGwoJHF1ZXJ5LCAkc2VsZWN0X3ZhbHVlcyk7CiAKICAgICAg
ICAgcmV0dXJuICRyb3dzID8gKCRyZXR1cm5pbmcgPT0gJyonID8gJHJvd3NbMF0gOiAkcm93c1sw
XVskcmV0dXJuaW5nX2NvbHVtbl9uYW1lXSkgOiBOVUxMOwogICAgIH0KIAogICAgIGZ1bmN0aW9u
IHNlbGVjdF9maXJzdF9yb3coJHRhYmxlLCAkcHJlZml4LCAkcGFyYW1zLCAkb3JkZXJfYnkgPSBO
VUxMKSB7CisgICAgICAgIHJldHVybiAkdGhpcy0+c2VsZWN0X2ZpcnN0X29yX2xhc3Rfcm93KCR0
YWJsZSwgJHByZWZpeCwgJHBhcmFtcywgJG9yZGVyX2J5LCBGQUxTRSk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gc2VsZWN0X2xhc3Rfcm93KCR0YWJsZSwgJHByZWZpeCwgJHBhcmFtcywgJG9yZGVy
X2J5ID0gTlVMTCkgeworICAgICAgICByZXR1cm4gJHRoaXMtPnNlbGVjdF9maXJzdF9vcl9sYXN0
X3JvdygkdGFibGUsICRwcmVmaXgsICRwYXJhbXMsICRvcmRlcl9ieSwgVFJVRSk7CisgICAgfQor
CisgICAgcHJpdmF0ZSBmdW5jdGlvbiBzZWxlY3RfZmlyc3Rfb3JfbGFzdF9yb3coJHRhYmxlLCAk
cHJlZml4LCAkcGFyYW1zLCAkb3JkZXJfYnksICRkZXNjZW5kaW5nX29yZGVyKSB7CiAgICAgICAg
ICRwbGFjZWhvbGRlcnMgPSBhcnJheSgpOwogICAgICAgICAkdmFsdWVzID0gYXJyYXkoKTsKICAg
ICAgICAgJGNvbHVtbl9uYW1lcyA9ICR0aGlzLT5wcmVmaXhlZF9jb2x1bW5fbmFtZXMoJHRoaXMt
PnByZXBhcmVfcGFyYW1zKCRwYXJhbXMsICRwbGFjZWhvbGRlcnMsICR2YWx1ZXMpLCAkcHJlZml4
KTsKICAgICAgICAgJHBsYWNlaG9sZGVycyA9IGpvaW4oJywgJywgJHBsYWNlaG9sZGVycyk7CiAg
ICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICR0YWJsZSBXSEVSRSAoJGNvbHVtbl9uYW1l
cykgPSAoJHBsYWNlaG9sZGVycykiOwogICAgICAgICBpZiAoJG9yZGVyX2J5KSB7Ci0gICAgICAg
ICAgICBhc3NlcnQoIWN0eXBlX2FsbnVtX3VuZGVyc2NvcmUoJG9yZGVyX2J5KSk7CisgICAgICAg
ICAgICBhc3NlcnQoY3R5cGVfYWxudW1fdW5kZXJzY29yZSgkb3JkZXJfYnkpKTsKICAgICAgICAg
ICAgICRxdWVyeSAuPSAnIE9SREVSIEJZICcgLiAkdGhpcy0+cHJlZml4ZWRfbmFtZSgkb3JkZXJf
YnksICRwcmVmaXgpOworICAgICAgICAgICAgaWYgKCRkZXNjZW5kaW5nX29yZGVyKQorICAgICAg
ICAgICAgICAgICRxdWVyeSAuPSAnIERFU0MnOwogICAgICAgICB9CiAgICAgICAgICRyb3dzID0g
JHRoaXMtPnF1ZXJ5X2FuZF9mZXRjaF9hbGwoJHF1ZXJ5IC4gJyBMSU1JVCAxJywgJHZhbHVlcyk7
CiAKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9yZXBvcnQt
cHJvY2Vzc29yLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL2luY2x1ZGUvcmVwb3J0LXByb2Nlc3Nvci5waHAJKHJldmlzaW9uIDE3NDQxNCkKKysrIFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9yZXBvcnQtcHJvY2Vzc29yLnBo
cAkod29ya2luZyBjb3B5KQpAQCAtOTgsMTMgKzk4LDI0IEBAIGNsYXNzIFJlcG9ydFByb2Nlc3Nv
ciB7CiAgICAgICAgICAgICBpZiAoISRyZXBvc2l0b3J5X2lkKQogICAgICAgICAgICAgICAgICR0
aGlzLT5leGl0X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvSW5zZXJ0UmVwb3NpdG9yeScsIGFycmF5KCdu
YW1lJyA9PiAkcmVwb3NpdG9yeV9uYW1lKSk7CiAKLSAgICAgICAgICAgICRyZXZpc2lvbl9kYXRh
ID0gYXJyYXkoJ3JlcG9zaXRvcnknID0+ICRyZXBvc2l0b3J5X2lkLCAnYnVpbGQnID0+ICRidWls
ZF9pZCwgJ3ZhbHVlJyA9PiAkcmV2aXNpb25fZGF0YVsncmV2aXNpb24nXSwKLSAgICAgICAgICAg
ICAgICAndGltZScgPT4gYXJyYXlfZ2V0KCRyZXZpc2lvbl9kYXRhLCAndGltZXN0YW1wJykpOwot
ICAgICAgICAgICAgJHJldmlzaW9uX3JvdyA9ICR0aGlzLT5kYi0+c2VsZWN0X29yX2luc2VydF9y
b3coJ2J1aWxkX3JldmlzaW9ucycsICdyZXZpc2lvbicsIGFycmF5KCdyZXBvc2l0b3J5JyA9PiAk
cmVwb3NpdG9yeV9pZCwgJ2J1aWxkJyA9PiAkYnVpbGRfaWQpLCAkcmV2aXNpb25fZGF0YSwgJyon
KTsKLSAgICAgICAgICAgIGlmICghJHJldmlzaW9uX3JvdykKLSAgICAgICAgICAgICAgICAkdGhp
cy0+ZXhpdF93aXRoX2Vycm9yKCdGYWlsZWRUb0luc2VydFJldmlzaW9uJywgJHJldmlzaW9uX2Rh
dGEpOwotICAgICAgICAgICAgaWYgKCRyZXZpc2lvbl9yb3dbJ3JldmlzaW9uX3ZhbHVlJ10gIT0g
JHJldmlzaW9uX2RhdGFbJ3ZhbHVlJ10pCi0gICAgICAgICAgICAgICAgJHRoaXMtPmV4aXRfd2l0
aF9lcnJvcignTWlzbWF0Y2hpbmdSZXZpc2lvbkRhdGEnLCBhcnJheSgnZXhpc3RpbmcnID0+ICRy
ZXZpc2lvbl9yb3csICduZXcnID0+ICRyZXZpc2lvbl9kYXRhKSk7CisgICAgICAgICAgICAkY29t
bWl0X2RhdGEgPSBhcnJheSgncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQsICdyZXZpc2lv
bicgPT4gJHJldmlzaW9uX2RhdGFbJ3JldmlzaW9uJ10sICd0aW1lJyA9PiBhcnJheV9nZXQoJHJl
dmlzaW9uX2RhdGEsICd0aW1lc3RhbXAnKSk7CisKKyAgICAgICAgICAgICRtaXNtYXRjaGluZ19j
b21taXQgPSAkdGhpcy0+ZGItPnF1ZXJ5X2FuZF9mZXRjaF9hbGwoJ1NFTEVDVCAqIEZST00gYnVp
bGRfY29tbWl0cywgY29tbWl0cworICAgICAgICAgICAgICAgIFdIRVJFIGJ1aWxkX2NvbW1pdCA9
IGNvbW1pdF9pZCBBTkQgY29tbWl0X2J1aWxkID0gJDEgQU5EIGNvbW1pdF9yZXBvc2l0b3J5ID0g
JDIgQU5EIGNvbW1pdF9yZXZpc2lvbiAhPSAkMyBMSU1JVCAxJywKKyAgICAgICAgICAgICAgICBh
cnJheSgkYnVpbGRfaWQsICRyZXBvc2l0b3J5X2lkLCAkcmV2aXNpb25fZGF0YVsncmV2aXNpb24n
XSkpOworICAgICAgICAgICAgaWYgKCRtaXNtYXRjaGluZ19jb21taXQpCisgICAgICAgICAgICAg
ICAgJHRoaXMtPmV4aXRfd2l0aF9lcnJvcignTWlzbWF0Y2hpbmdDb21taXRSZXZpc2lvbicsIGFy
cmF5KCdidWlsZCcgPT4gJGJ1aWxkX2lkLCAnZXhpc3RpbmcnID0+ICRtaXNtYXRjaGluZ19jb21t
aXQsICduZXcnID0+ICRjb21taXRfZGF0YSkpOworCisgICAgICAgICAgICAkY29tbWl0X3JvdyA9
ICR0aGlzLT5kYi0+c2VsZWN0X29yX2luc2VydF9yb3coJ2NvbW1pdHMnLCAnY29tbWl0JywKKyAg
ICAgICAgICAgICAgICBhcnJheSgncmVwb3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQsICdyZXZp
c2lvbicgPT4gJHJldmlzaW9uX2RhdGFbJ3JldmlzaW9uJ10pLCAkY29tbWl0X2RhdGEsICcqJyk7
CisgICAgICAgICAgICBpZiAoISRjb21taXRfcm93KQorICAgICAgICAgICAgICAgICR0aGlzLT5l
eGl0X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvUmVjb3JkQ29tbWl0JywgJGNvbW1pdF9kYXRhKTsKKyAg
ICAgICAgICAgIGlmIChhYnMoJGNvbW1pdF9yb3dbJ2NvbW1pdF90aW1lJ10gLSAkY29tbWl0X2Rh
dGFbJ3RpbWUnXSkgPiAxLjApCisgICAgICAgICAgICAgICAgJHRoaXMtPmV4aXRfd2l0aF9lcnJv
cignTWlzbWF0Y2hpbmdDb21taXRUaW1lJywgYXJyYXkoJ2V4aXN0aW5nJyA9PiAkY29tbWl0X3Jv
dywgJ25ldycgPT4gJGNvbW1pdF9kYXRhKSk7CisKKyAgICAgICAgICAgIGlmICghJHRoaXMtPmRi
LT5pbnNlcnRfcm93KCdidWlsZF9jb21taXRzJywgbnVsbCwKKyAgICAgICAgICAgICAgICBhcnJh
eSgnY29tbWl0X2J1aWxkJyA9PiAkYnVpbGRfaWQsICdidWlsZF9jb21taXQnID0+ICRjb21taXRf
cm93Wydjb21taXRfaWQnXSksIG51bGwpKQorICAgICAgICAgICAgICAgICR0aGlzLT5leGl0X3dp
dGhfZXJyb3IoJ0ZhaWxlZFRvUmVsYXRlQ29tbWl0VG9CdWlsZCcsIGFycmF5KCdjb21taXQnID0+
ICRjb21taXRfcm93LCAnYnVpbGQnID0+ICRidWlsZF9pZCkpOwogICAgICAgICB9CiAKICAgICAg
ICAgcmV0dXJuICRidWlsZF9pZDsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90ZXN0
cy9hcGktcmVwb3J0LWNvbW1pdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3Rlc3RzL2FwaS1yZXBvcnQtY29tbWl0cy5qcwkocmV2aXNpb24gMCkKKysrIFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy90ZXN0cy9hcGktcmVwb3J0LWNvbW1pdHMuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyMTkgQEAKK2Rlc2NyaWJlKCIvYXBpL3JlcG9ydC1jb21taXRzLyIs
IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgZW1wdHlSZXBvcnQgPSB7CisgICAgICAgICJidWlsZGVy
TmFtZSI6ICJzb21lQnVpbGRlciIsCisgICAgICAgICJidWlsZGVyUGFzc3dvcmQiOiAic29tZVBh
c3N3b3JkIiwKKyAgICB9OworICAgIHZhciBzdWJ2ZXJzaW9uQ29tbWl0ID0geworICAgICAgICAi
YnVpbGRlck5hbWUiOiAic29tZUJ1aWxkZXIiLAorICAgICAgICAiYnVpbGRlclBhc3N3b3JkIjog
InNvbWVQYXNzd29yZCIsCisgICAgICAgICJjb21taXRzIjogWworICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIldlYktpdCIsCisgICAgICAgICAgICAgICAgInJl
dmlzaW9uIjogIjE0MTk3NyIsCisgICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxMy0wMi0wNlQw
ODo1NToyMC45WiIsCisgICAgICAgICAgICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJDb21taXQg
UXVldWUiLCAiZW1haWwiOiAiY29tbWl0LXF1ZXVlQHdlYmtpdC5vcmcifSwKKyAgICAgICAgICAg
ICAgICAibWVzc2FnZSI6ICJzb21lIG1lc3NhZ2UiLAorICAgICAgICAgICAgfQorICAgICAgICBd
LAorICAgIH07CisgICAgdmFyIHN1YnZlcnNpb25JbnZhbGlkQ29tbWl0ID0geworICAgICAgICAi
YnVpbGRlck5hbWUiOiAic29tZUJ1aWxkZXIiLAorICAgICAgICAiYnVpbGRlclBhc3N3b3JkIjog
InNvbWVQYXNzd29yZCIsCisgICAgICAgICJjb21taXRzIjogWworICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIldlYktpdCIsCisgICAgICAgICAgICAgICAgInJl
dmlzaW9uIjogIl8xNDE5NzciLAorICAgICAgICAgICAgICAgICJ0aW1lIjogIjIwMTMtMDItMDZU
MDg6NTU6MjAuOVoiLAorICAgICAgICAgICAgICAgICJhdXRob3IiOiB7Im5hbWUiOiAiQ29tbWl0
IFF1ZXVlIiwgImVtYWlsIjogImNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnIn0sCisgICAgICAgICAg
ICAgICAgIm1lc3NhZ2UiOiAic29tZSBtZXNzYWdlIiwKKyAgICAgICAgICAgIH0KKyAgICAgICAg
XSwKKyAgICB9OworICAgIHZhciBzdWJ2ZXJzaW9uVHdvQ29tbWl0cyA9IHsKKyAgICAgICAgImJ1
aWxkZXJOYW1lIjogInNvbWVCdWlsZGVyIiwKKyAgICAgICAgImJ1aWxkZXJQYXNzd29yZCI6ICJz
b21lUGFzc3dvcmQiLAorICAgICAgICAiY29tbWl0cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJXZWJLaXQiLAorICAgICAgICAgICAgICAgICJyZXZp
c2lvbiI6ICIxNDE5NzciLAorICAgICAgICAgICAgICAgICJ0aW1lIjogIjIwMTMtMDItMDZUMDg6
NTU6MjAuOVoiLAorICAgICAgICAgICAgICAgICJhdXRob3IiOiB7Im5hbWUiOiAiQ29tbWl0IFF1
ZXVlIiwgImVtYWlsIjogImNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnIn0sCisgICAgICAgICAgICAg
ICAgIm1lc3NhZ2UiOiAic29tZSBtZXNzYWdlIiwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiV2ViS2l0IiwKKyAgICAgICAgICAg
ICAgICAicGFyZW50IjogIjE0MTk3NyIsCisgICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE0
MTk3OCIsCisgICAgICAgICAgICAgICAgInRpbWUiOiAiMjAxMy0wMi0wNlQwOTo1NDo1Ni4wWiIs
CisgICAgICAgICAgICAgICAgImF1dGhvciI6IHsibmFtZSI6ICJNaWtoYWlsIFBvemRueWFrb3Yi
LCAiZW1haWwiOiAibWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbSJ9LAorICAgICAgICAgICAg
ICAgICJtZXNzYWdlIjogImFub3RoZXIgbWVzc2FnZSIsCisgICAgICAgICAgICB9CisgICAgICAg
IF0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRCdWlsZGVyKHJlcG9ydCwgY2FsbGJhY2spIHsK
KyAgICAgICAgcXVlcnlBbmRGZXRjaEFsbCgnSU5TRVJUIElOVE8gYnVpbGRlcnMgKGJ1aWxkZXJf
bmFtZSwgYnVpbGRlcl9wYXNzd29yZF9oYXNoKSB2YWx1ZXMgKCQxLCAkMiknLAorICAgICAgICAg
ICAgW3JlcG9ydC5idWlsZGVyTmFtZSwgc2hhMjU2KHJlcG9ydC5idWlsZGVyUGFzc3dvcmQpXSwg
Y2FsbGJhY2spOworICAgIH0KKworICAgIGl0KCJzaG91bGQgcmVqZWN0IGVycm9yIHdoZW4gYnVp
bGRlciBuYW1lIGlzIG1pc3NpbmciLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHBvc3RKU09OKCcv
YXBpL3JlcG9ydC1jb21taXRzLycsIHt9LCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXNDb2RlLCAyMDApOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKEpTT04ucGFyc2UocmVzcG9uc2UucmVzcG9uc2VUZXh0KVsnc3RhdHVzJ10s
ICdNaXNzaW5nQnVpbGRlck5hbWUnKTsKKyAgICAgICAgICAgIG5vdGlmeURvbmUoKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgic2hvdWxkIHJlamVjdCB3aGVuIHRoZXJlIGFyZSBu
byBidWlsZGVycyIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcG9zdEpTT04oJy9hcGkvcmVwb3J0
LWNvbW1pdHMvJywgZW1wdHlSZXBvcnQsIGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwMCk7CisgICAgICAgICAgICBh
c3NlcnQubm90RXF1YWwoSlNPTi5wYXJzZShyZXNwb25zZS5yZXNwb25zZVRleHQpWydzdGF0dXMn
XSwgJ09LJyk7CisKKyAgICAgICAgICAgIHF1ZXJ5QW5kRmV0Y2hBbGwoJ1NFTEVDVCBDT1VOVCgq
KSBmcm9tIGNvbW1pdHMnLCBbXSwgZnVuY3Rpb24gKHJvd3MpIHsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocm93c1swXS5jb3VudCwgMCk7CisgICAgICAgICAgICAgICAgbm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoInNo
b3VsZCBhY2NlcHQgYW4gZW1wdHkgcmVwb3J0IiwgZnVuY3Rpb24gKCkgeworICAgICAgICBhZGRC
dWlsZGVyKGVtcHR5UmVwb3J0LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBwb3N0SlNPTign
L2FwaS9yZXBvcnQtY29tbWl0cy8nLCBlbXB0eVJlcG9ydCwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwMCk7
CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEpTT04ucGFyc2UocmVzcG9uc2UucmVzcG9u
c2VUZXh0KVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAgIG5vdGlmeURvbmUoKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCJzaG91bGQg
YWRkIGEgbWlzc2luZyByZXBvc2l0b3J5IiwgZnVuY3Rpb24gKCkgeworICAgICAgICBhZGRCdWls
ZGVyKHN1YnZlcnNpb25Db21taXQsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHBvc3RKU09O
KCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXQsIGZ1bmN0aW9uIChyZXNw
b25zZSkgeworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXNDb2Rl
LCAyMDApOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChKU09OLnBhcnNlKHJlc3BvbnNl
LnJlc3BvbnNlVGV4dClbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgICAgICBxdWVyeUFu
ZEZldGNoQWxsKCdTRUxFQ1QgKiBGUk9NIHJlcG9zaXRvcmllcycsIFtdLCBmdW5jdGlvbiAocm93
cykgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93cy5sZW5ndGgsIDEpOwor
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93c1swXVsncmVwb3NpdG9yeV9uYW1l
J10sIHN1YnZlcnNpb25Db21taXQuY29tbWl0c1swXVsncmVwb3NpdG9yeSddKTsKKyAgICAgICAg
ICAgICAgICAgICAgbm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoInNob3VsZCBzdG9yZSBhIGNv
bW1pdCBmcm9tIGEgdmFsaWQgYnVpbGRlciIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgYWRkQnVp
bGRlcihzdWJ2ZXJzaW9uQ29tbWl0LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBwb3N0SlNP
TignL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0LCBmdW5jdGlvbiAocmVz
cG9uc2UpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2Uuc3RhdHVzQ29k
ZSwgMjAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoSlNPTi5wYXJzZShyZXNwb25z
ZS5yZXNwb25zZVRleHQpWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgcXVlcnlB
bmRGZXRjaEFsbCgnU0VMRUNUICogRlJPTSBjb21taXRzJywgW10sIGZ1bmN0aW9uIChyb3dzKSB7
CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzLmxlbmd0aCwgMSk7CisgICAg
ICAgICAgICAgICAgICAgIHZhciByZXBvcnRlZERhdGEgPSBzdWJ2ZXJzaW9uQ29tbWl0LmNvbW1p
dHNbMF07CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzWzBdWydjb21taXRf
cmV2aXNpb24nXSwgcmVwb3J0ZWREYXRhWydyZXZpc2lvbiddKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJvd3NbMF1bJ2NvbW1pdF90aW1lJ10udG9TdHJpbmcoKSwgbmV3IERh
dGUoJzIwMTMtMDItMDYgMDg6NTU6MjAuOScpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocm93c1swXVsnY29tbWl0X2F1dGhvcl9uYW1lJ10sIHJlcG9ydGVk
RGF0YVsnYXV0aG9yJ11bJ25hbWUnXSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyb3dzWzBdWydjb21taXRfYXV0aG9yX2VtYWlsJ10sIHJlcG9ydGVkRGF0YVsnYXV0aG9yJ11b
J2VtYWlsJ10pOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93c1swXVsnY29t
bWl0X21lc3NhZ2UnXSwgcmVwb3J0ZWREYXRhWydtZXNzYWdlJ10pOworICAgICAgICAgICAgICAg
ICAgICBub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgic2hvdWxkIHJlamVjdCBhbiBpbnZhbGlk
IHJldmlzaW9uIG51bWJlciIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgYWRkQnVpbGRlcihzdWJ2
ZXJzaW9uQ29tbWl0LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBzdWJ2ZXJzaW9uQ29tbWl0
CisgICAgICAgICAgICBwb3N0SlNPTignL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9u
SW52YWxpZENvbW1pdCwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwMCk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0Lm5vdEVxdWFsKEpTT04ucGFyc2UocmVzcG9uc2UucmVzcG9uc2VUZXh0KVsnc3RhdHVzJ10s
ICdPSycpOworICAgICAgICAgICAgICAgIHF1ZXJ5QW5kRmV0Y2hBbGwoJ1NFTEVDVCAqIEZST00g
Y29tbWl0cycsIFtdLCBmdW5jdGlvbiAocm93cykgeworICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocm93cy5sZW5ndGgsIDApOworICAgICAgICAgICAgICAgICAgICBub3RpZnlEb25l
KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7CisKKyAgICBpdCgic2hvdWxkIHN0b3JlIHR3byBjb21taXRzIGZyb20gYSB2YWxpZCBi
dWlsZGVyIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBhZGRCdWlsZGVyKHN1YnZlcnNpb25Ud29D
b21taXRzLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBwb3N0SlNPTignL2FwaS9yZXBvcnQt
Y29tbWl0cy8nLCBzdWJ2ZXJzaW9uVHdvQ29tbWl0cywgZnVuY3Rpb24gKHJlc3BvbnNlKSB7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwMCk7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEpTT04ucGFyc2UocmVzcG9uc2UucmVzcG9uc2VU
ZXh0KVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgICAgIHF1ZXJ5QW5kRmV0Y2hBbGwo
J1NFTEVDVCAqIEZST00gY29tbWl0cyBPUkRFUiBCWSBjb21taXRfdGltZScsIFtdLCBmdW5jdGlv
biAocm93cykgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93cy5sZW5ndGgs
IDIpOworICAgICAgICAgICAgICAgICAgICB2YXIgcmVwb3J0ZWREYXRhID0gc3VidmVyc2lvblR3
b0NvbW1pdHMuY29tbWl0c1swXTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJv
d3NbMF1bJ2NvbW1pdF9yZXZpc2lvbiddLCByZXBvcnRlZERhdGFbJ3JldmlzaW9uJ10pOworICAg
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93c1swXVsnY29tbWl0X3RpbWUnXS50b1N0
cmluZygpLCBuZXcgRGF0ZSgnMjAxMy0wMi0wNiAwODo1NToyMC45JykudG9TdHJpbmcoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzWzBdWydjb21taXRfYXV0aG9yX25h
bWUnXSwgcmVwb3J0ZWREYXRhWydhdXRob3InXVsnbmFtZSddKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJvd3NbMF1bJ2NvbW1pdF9hdXRob3JfZW1haWwnXSwgcmVwb3J0ZWRE
YXRhWydhdXRob3InXVsnZW1haWwnXSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyb3dzWzBdWydjb21taXRfbWVzc2FnZSddLCByZXBvcnRlZERhdGFbJ21lc3NhZ2UnXSk7Cisg
ICAgICAgICAgICAgICAgICAgIHZhciByZXBvcnRlZERhdGEgPSBzdWJ2ZXJzaW9uVHdvQ29tbWl0
cy5jb21taXRzWzFdOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93c1sxXVsn
Y29tbWl0X3JldmlzaW9uJ10sIHJlcG9ydGVkRGF0YVsncmV2aXNpb24nXSk7CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzWzFdWydjb21taXRfdGltZSddLnRvU3RyaW5nKCks
IG5ldyBEYXRlKCcyMDEzLTAyLTA2IDA5OjU0OjU2LjAnKS50b1N0cmluZygpKTsKKyAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3NbMV1bJ2NvbW1pdF9hdXRob3JfbmFtZSddLCBy
ZXBvcnRlZERhdGFbJ2F1dGhvciddWyduYW1lJ10pOworICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocm93c1sxXVsnY29tbWl0X2F1dGhvcl9lbWFpbCddLCByZXBvcnRlZERhdGFbJ2F1
dGhvciddWydlbWFpbCddKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3Nb
MV1bJ2NvbW1pdF9tZXNzYWdlJ10sIHJlcG9ydGVkRGF0YVsnbWVzc2FnZSddKTsKKyAgICAgICAg
ICAgICAgICAgICAgbm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoInNob3VsZCB1cGRhdGUgYW4g
ZXhpc3RpbmcgY29tbWl0IGlmIHRoZXJlIGlzIG9uZSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
cXVlcnlBbmRGZXRjaEFsbCgnSU5TRVJUIElOVE8gcmVwb3NpdG9yaWVzIChyZXBvc2l0b3J5X25h
bWUpIFZBTFVFUyAoJDEpIFJFVFVSTklORyAqJywgWydXZWJLaXQnXSwgZnVuY3Rpb24gKHJlcG9z
aXRvcmllcykgeworICAgICAgICAgICAgdmFyIHJlcG9zaXRvcnlJZCA9IHJlcG9zaXRvcmllc1sw
XVsncmVwb3NpdG9yeV9pZCddOworICAgICAgICAgICAgdmFyIHJlcG9ydGVkRGF0YSA9IHN1YnZl
cnNpb25Db21taXQuY29tbWl0c1swXTsKKyAgICAgICAgICAgIHF1ZXJ5QW5kRmV0Y2hBbGwoJ0lO
U0VSVCBJTlRPIGNvbW1pdHMgKGNvbW1pdF9yZXBvc2l0b3J5LCBjb21taXRfcmV2aXNpb24sIGNv
bW1pdF90aW1lKSBWQUxVRVMgKCQxLCAkMiwgJDMpIFJFVFVSTklORyAqJywKKyAgICAgICAgICAg
ICAgICBbcmVwb3NpdG9yeUlkLCByZXBvcnRlZERhdGFbJ3JldmlzaW9uJ10sIHJlcG9ydGVkRGF0
YVsndGltZSddXSwgZnVuY3Rpb24gKGV4aXN0aW5nQ29tbWl0cykgeworICAgICAgICAgICAgICAg
IHZhciBjb21taXRJZCA9IGV4aXN0aW5nQ29tbWl0c1swXVsnY29tbWl0X2lkJ107CisgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGV4aXN0aW5nQ29tbWl0c1swXVsnY29tbWl0X2F1dGhvcl9u
YW1lJ10sIG51bGwpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChleGlzdGluZ0NvbW1p
dHNbMF1bJ2NvbW1pdF9hdXRob3JfZW1haWwnXSwgbnVsbCk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGV4aXN0aW5nQ29tbWl0c1swXVsnY29tbWl0X21lc3NhZ2UnXSwgbnVsbCk7Cisg
ICAgICAgICAgICAgICAgYWRkQnVpbGRlcihzdWJ2ZXJzaW9uQ29tbWl0LCBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIHBvc3RKU09OKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1
YnZlcnNpb25Db21taXQsIGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwMCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoSlNPTi5wYXJzZShyZXNwb25zZS5yZXNwb25zZVRl
eHQpWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeUFuZEZl
dGNoQWxsKCdTRUxFQ1QgKiBGUk9NIGNvbW1pdHMnLCBbXSwgZnVuY3Rpb24gKHJvd3MpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93cy5sZW5ndGgsIDEpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXBvcnRlZERhdGEgPSBzdWJ2ZXJzaW9u
Q29tbWl0LmNvbW1pdHNbMF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJvd3NbMF1bJ2NvbW1pdF9hdXRob3JfbmFtZSddLCByZXBvcnRlZERhdGFbJ2F1dGhvcidd
WyduYW1lJ10pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dz
WzBdWydjb21taXRfYXV0aG9yX2VtYWlsJ10sIHJlcG9ydGVkRGF0YVsnYXV0aG9yJ11bJ2VtYWls
J10pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzWzBdWydj
b21taXRfbWVzc2FnZSddLCByZXBvcnRlZERhdGFbJ21lc3NhZ2UnXSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoInNob3VsZCBub3QgdXBkYXRl
IGFuIHVucmVsYXRlZCBjb21taXQiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHF1ZXJ5QW5kRmV0
Y2hBbGwoJ0lOU0VSVCBJTlRPIHJlcG9zaXRvcmllcyAocmVwb3NpdG9yeV9uYW1lKSBWQUxVRVMg
KCQxKSBSRVRVUk5JTkcgKicsIFsnV2ViS2l0J10sIGZ1bmN0aW9uIChyZXBvc2l0b3JpZXMpIHsK
KyAgICAgICAgICAgIHZhciByZXBvc2l0b3J5SWQgPSByZXBvc2l0b3JpZXNbMF1bJ3JlcG9zaXRv
cnlfaWQnXTsKKyAgICAgICAgICAgIHZhciByZXBvcnRlZERhdGEgPSBzdWJ2ZXJzaW9uVHdvQ29t
bWl0cy5jb21taXRzWzFdOworICAgICAgICAgICAgcXVlcnlBbmRGZXRjaEFsbCgnSU5TRVJUIElO
VE8gY29tbWl0cyAoY29tbWl0X3JlcG9zaXRvcnksIGNvbW1pdF9yZXZpc2lvbiwgY29tbWl0X3Rp
bWUpIFZBTFVFUyAoJDEsICQyLCAkMykgUkVUVVJOSU5HIConLAorICAgICAgICAgICAgICAgIFty
ZXBvc2l0b3J5SWQsIHJlcG9ydGVkRGF0YVsncmV2aXNpb24nXSwgcmVwb3J0ZWREYXRhWyd0aW1l
J11dLCBmdW5jdGlvbiAoZXhpc3RpbmdDb21taXRzKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0
ZWREYXRhID0gc3VidmVyc2lvblR3b0NvbW1pdHMuY29tbWl0c1swXTsKKyAgICAgICAgICAgICAg
ICBxdWVyeUFuZEZldGNoQWxsKCdJTlNFUlQgSU5UTyBjb21taXRzIChjb21taXRfcmVwb3NpdG9y
eSwgY29tbWl0X3JldmlzaW9uLCBjb21taXRfdGltZSkgVkFMVUVTICgkMSwgJDIsICQzKSBSRVRV
Uk5JTkcgKicsCisgICAgICAgICAgICAgICAgICAgIFtyZXBvc2l0b3J5SWQsIHJlcG9ydGVkRGF0
YVsncmV2aXNpb24nXSwgcmVwb3J0ZWREYXRhWyd0aW1lJ11dLCBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRCdWlsZGVyKHN1YnZlcnNpb25Db21taXQsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0SlNPTignL2FwaS9yZXBvcnQt
Y29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0LCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0Nv
ZGUsIDIwMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChK
U09OLnBhcnNlKHJlc3BvbnNlLnJlc3BvbnNlVGV4dClbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlBbmRGZXRjaEFsbCgnU0VMRUNUICogRlJP
TSBjb21taXRzIE9SREVSIEJZIGNvbW1pdF90aW1lJywgW10sIGZ1bmN0aW9uIChyb3dzKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93cy5sZW5n
dGgsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJvd3NbMF1bJ2NvbW1pdF9hdXRob3JfbmFtZSddLCByZXBvcnRlZERhdGFbJ2F1dGhvciddWydu
YW1lJ10pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJvd3NbMF1bJ2NvbW1pdF9hdXRob3JfZW1haWwnXSwgcmVwb3J0ZWREYXRhWydhdXRob3InXVsn
ZW1haWwnXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocm93c1swXVsnY29tbWl0X21lc3NhZ2UnXSwgcmVwb3J0ZWREYXRhWydtZXNzYWdlJ10pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3NbMV1b
J2NvbW1pdF9hdXRob3JfbmFtZSddLCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzWzFdWydjb21taXRfYXV0aG9yX2VtYWlsJ10sIG51
bGwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJv
d3NbMV1bJ2NvbW1pdF9tZXNzYWdlJ10sIG51bGwpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworICAgIH0pOworCit9KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90ZXN0
cy9hcGktcmVwb3J0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90
ZXN0cy9hcGktcmVwb3J0LmpzCShyZXZpc2lvbiAxNzQ0MTQpCisrKyBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdGVzdHMvYXBpLXJlcG9ydC5qcwkod29ya2luZyBjb3B5KQpAQCAtMTExLDE0ICsx
MTEsMTQgQEAgZGVzY3JpYmUoIi9hcGkvcmVwb3J0IiwgZnVuY3Rpb24gKCkgewogCiAgICAgICAg
ICAgICAgICAgICAgIHZhciByZXBvc2l0b3J5SWRUb05hbWUgPSB7fTsKICAgICAgICAgICAgICAg
ICAgICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uIChyb3cpIHsgcmVwb3NpdG9yeUlkVG9OYW1lW3Jv
d1sncmVwb3NpdG9yeV9pZCddXSA9IHJvd1sncmVwb3NpdG9yeV9uYW1lJ107IH0pOwotICAgICAg
ICAgICAgICAgICAgICBxdWVyeUFuZEZldGNoQWxsKCdTRUxFQ1QgKiBGUk9NIGJ1aWxkX3Jldmlz
aW9ucycsIFtdLCBmdW5jdGlvbiAocm93cykgeworICAgICAgICAgICAgICAgICAgICBxdWVyeUFu
ZEZldGNoQWxsKCdTRUxFQ1QgKiBGUk9NIGJ1aWxkX2NvbW1pdHMsIGNvbW1pdHMgV0hFUkUgYnVp
bGRfY29tbWl0ID0gY29tbWl0X2lkJywgW10sIGZ1bmN0aW9uIChyb3dzKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgcmVwb3NpdG9yeU5hbWVUb1JldmlzaW9uUm93ID0ge307CiAgICAg
ICAgICAgICAgICAgICAgICAgICByb3dzLmZvckVhY2goZnVuY3Rpb24gKHJvdykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlOYW1lVG9SZXZpc2lvblJvd1tyZXBvc2l0
b3J5SWRUb05hbWVbcm93WydyZXZpc2lvbl9yZXBvc2l0b3J5J11dXSA9IHJvdzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5TmFtZVRvUmV2aXNpb25Sb3dbcmVwb3NpdG9y
eUlkVG9OYW1lW3Jvd1snY29tbWl0X3JlcG9zaXRvcnknXV1dID0gcm93OwogICAgICAgICAgICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVw
b3NpdG9yeU5hbWVUb1JldmlzaW9uUm93WydPUyBYJ11bJ3JldmlzaW9uX3ZhbHVlJ10sICcxMC44
LjIgMTJDNjAnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBvc2l0
b3J5TmFtZVRvUmV2aXNpb25Sb3dbJ1dlYktpdCddWydyZXZpc2lvbl92YWx1ZSddLCAnMTQxOTc3
Jyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeU5hbWVU
b1JldmlzaW9uUm93WydXZWJLaXQnXVsncmV2aXNpb25fdGltZSddLnRvU3RyaW5nKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeU5hbWVUb1JldmlzaW9u
Um93WydPUyBYJ11bJ2NvbW1pdF9yZXZpc2lvbiddLCAnMTAuOC4yIDEyQzYwJyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeU5hbWVUb1JldmlzaW9uUm93
WydXZWJLaXQnXVsnY29tbWl0X3JldmlzaW9uJ10sICcxNDE5NzcnKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBvc2l0b3J5TmFtZVRvUmV2aXNpb25Sb3dbJ1dlYktp
dCddWydjb21taXRfdGltZSddLnRvU3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3IERhdGUoJzIwMTMtMDItMDYgMDg6NTU6MjAuOScpLnRvU3RyaW5nKCkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgbm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgICAgICAgICB9KTsK
SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9wdWxsLXN2bi5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvcHVsbC1zdm4ucHkJKHJldmlz
aW9uIDApCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvcHVsbC1zdm4ucHkJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjMgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisKK2ltcG9y
dCBqc29uCitpbXBvcnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQg
dGltZQoraW1wb3J0IHVybGxpYjIKKworZnJvbSB4bWwuZG9tLm1pbmlkb20gaW1wb3J0IHBhcnNl
U3RyaW5nIGFzIHBhcnNlWG1sU3RyaW5nCisKKworZGVmIG1haW4oYXJndik6CisgICAgaWYgbGVu
KGFyZ3YpIDwgNzoKKyAgICAgICAgc3lzLmV4aXQoJ1VzYWdlOiBwdWxsLXN2biA8cmVwb3NpdG9y
eS1uYW1lPiA8cmVwb3NpdG9yeS1VUkw+IDxkYXNoYm9hcmQtVVJMPiA8YnVpbGRlci1uYW1lPiA8
YnVpbGRlci1wYXNzd29yZD4gPHNlY29uZHMtdG8tc2xlZXA+IFs8ZW1haWwtdG8tbmFtZS1oZWxw
ZXI+XScpCisKKyAgICByZXBvc2l0b3J5X25hbWUgPSBhcmd2WzFdCisgICAgcmVwb3NpdG9yeV91
cmwgPSBhcmd2WzJdCisgICAgZGFzaGJvYXJkX3VybCA9IGFyZ3ZbM10KKyAgICBidWlsZGVyX25h
bWUgPSBhcmd2WzRdCisgICAgYnVpbGRlcl9wYXNzd29yZCA9IGFyZ3ZbNV0KKyAgICBzZWNvbmRz
X3RvX3NsZWVwID0gZmxvYXQoYXJndls2XSkKKyAgICBlbWFpbF90b19uYW1lX2hlbHBlciA9IGFy
Z3ZbN10gaWYgbGVuKGFyZ3YpID4gNyBlbHNlIE5vbmUKKworICAgIHByaW50ICJTdWJtaXR0aW5n
IHJldmlzaW9uIGxvZ3MgZm9yICVzIGF0ICVzIHRvICVzIiAlIChyZXBvc2l0b3J5X25hbWUsIHJl
cG9zaXRvcnlfdXJsLCBkYXNoYm9hcmRfdXJsKQorCisgICAgcmV2aXNpb25fdG9fZmV0Y2ggPSBk
ZXRlcm1pbmVfZmlyc3RfcmV2aXNpb25fdG9fZmV0Y2goZGFzaGJvYXJkX3VybCwgcmVwb3NpdG9y
eV9uYW1lKQorICAgIHByaW50ICJTdGFydCBmZXRjaGluZyBjb21taXRzIGF0IHIlZCIgJSByZXZp
c2lvbl90b19mZXRjaAorCisgICAgcGVuZGluZ19jb21taXRzX3RvX3NlbmQgPSBbXQorCisgICAg
d2hpbGUgVHJ1ZToKKyAgICAgICAgY29tbWl0ID0gZmV0Y2hfY29tbWl0X2FuZF9yZXNvbHZlX2F1
dGhvcihyZXBvc2l0b3J5X25hbWUsIHJlcG9zaXRvcnlfdXJsLCBlbWFpbF90b19uYW1lX2hlbHBl
ciwgcmV2aXNpb25fdG9fZmV0Y2gpCisKKyAgICAgICAgaWYgY29tbWl0OgorICAgICAgICAgICAg
cHJpbnQgIkZldGNoZWQgciVkLiIgJSByZXZpc2lvbl90b19mZXRjaAorICAgICAgICAgICAgcGVu
ZGluZ19jb21taXRzX3RvX3NlbmQgKz0gW2NvbW1pdF0KKyAgICAgICAgICAgIHJldmlzaW9uX3Rv
X2ZldGNoICs9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByaW50ICJSZXZpc2lvbiAl
ZCBub3QgZm91bmQiICUgcmV2aXNpb25fdG9fZmV0Y2gKKworICAgICAgICBpZiBub3QgY29tbWl0
IG9yIGxlbihwZW5kaW5nX2NvbW1pdHNfdG9fc2VuZCkgPj0gMTA6CisgICAgICAgICAgICBpZiBw
ZW5kaW5nX2NvbW1pdHNfdG9fc2VuZDoKKyAgICAgICAgICAgICAgICBwcmludCAiU3VibWl0dGlu
ZyB0aGUgYWJvdmUgY29tbWl0cyB0byAlcy4uLiIgJSBkYXNoYm9hcmRfdXJsCisgICAgICAgICAg
ICAgICAgc3VibWl0X2NvbW1pdHMocGVuZGluZ19jb21taXRzX3RvX3NlbmQsIGRhc2hib2FyZF91
cmwsIGJ1aWxkZXJfbmFtZSwgYnVpbGRlcl9wYXNzd29yZCkKKyAgICAgICAgICAgICAgICBwcmlu
dCAiU3VjY2Vzc2Z1bGx5IHN1Ym1pdHRlZC4iCisgICAgICAgICAgICBwZW5kaW5nX2NvbW1pdHNf
dG9fc2VuZCA9IFtdCisgICAgICAgICAgICB0aW1lLnNsZWVwKHNlY29uZHNfdG9fc2xlZXApCisK
KworZGVmIGRldGVybWluZV9maXJzdF9yZXZpc2lvbl90b19mZXRjaChkYXNoYm9hcmRfdXJsLCBy
ZXBvc2l0b3J5X25hbWUpOgorICAgIHRyeToKKyAgICAgICAgbGFzdF9yZXBvcnRlZF9yZXZpc2lv
biA9IGZldGNoX3JldmlzaW9uX2Zyb21fZGFzYmhvYXJkKGRhc2hib2FyZF91cmwsIHJlcG9zaXRv
cnlfbmFtZSwgJ2xhc3QtcmVwb3J0ZWQnKQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6
CisgICAgICAgIHN5cy5leGl0KCdGYWlsZWQgdG8gZmV0Y2ggdGhlIGxhdGVzdCByZXBvcnRlZCBj
b21taXQ6ICcgKyBzdHIoZXJyb3IpKQorCisgICAgaWYgbGFzdF9yZXBvcnRlZF9yZXZpc2lvbjoK
KyAgICAgICAgcmV0dXJuIGxhc3RfcmVwb3J0ZWRfcmV2aXNpb24gKyAxCisKKyAgICAjIEZJWE1F
OiBUaGlzIGlzIGEgcHJvYmxlbWF0aWMgaWYgZGFzaGJvYXJkIGNhbiBnZXQgcmVzdWx0cyBmb3Ig
cmV2aXNpb25zIG9sZGVyIHRoYW4gb2xkZXN0X3JldmlzaW9uCisgICAgIyBpbiB0aGUgZnV0dXJl
IGJlY2F1c2Ugd2UgbmV2ZXIgcmVmZXRjaCBvbGRlciByZXZpc2lvbnMuCisgICAgdHJ5OgorICAg
ICAgICByZXR1cm4gZmV0Y2hfcmV2aXNpb25fZnJvbV9kYXNiaG9hcmQoZGFzaGJvYXJkX3VybCwg
cmVwb3NpdG9yeV9uYW1lLCAnb2xkZXN0Jykgb3IgMQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg
ZXJyb3I6CisgICAgICAgIHN5cy5leGl0KCdGYWlsZWQgdG8gZmV0Y2ggdGhlIG9sZGVzdCBjb21t
aXQ6ICcgKyBzdHIoZXJyb3IpKQorCisKK2RlZiBmZXRjaF9yZXZpc2lvbl9mcm9tX2Rhc2Job2Fy
ZChkYXNoYm9hcmRfdXJsLCByZXBvc2l0b3J5X25hbWUsIGZpbHRlcik6CisgICAgcmVzdWx0ID0g
dXJsbGliMi51cmxvcGVuKGRhc2hib2FyZF91cmwgKyAnL2FwaS9jb21taXRzLycgKyByZXBvc2l0
b3J5X25hbWUgKyAnLycgKyBmaWx0ZXIpLnJlYWQoKQorICAgIHBhcnNlZF9yZXN1bHQgPSBqc29u
LmxvYWRzKHJlc3VsdCkKKyAgICBpZiBwYXJzZWRfcmVzdWx0WydzdGF0dXMnXSAhPSAnT0snIGFu
ZCBwYXJzZWRfcmVzdWx0WydzdGF0dXMnXSAhPSAnUmVwb3NpdG9yeU5vdEZvdW5kJzoKKyAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKHJlc3VsdCkKKyAgICBjb21taXRzID0gcGFyc2VkX3Jlc3VsdC5n
ZXQoJ2NvbW1pdHMnKQorICAgIHJldHVybiBpbnQoY29tbWl0c1swXVsncmV2aXNpb24nXSkgaWYg
Y29tbWl0cyBlbHNlIE5vbmUKKworCitkZWYgZmV0Y2hfY29tbWl0X2FuZF9yZXNvbHZlX2F1dGhv
cihyZXBvc2l0b3J5X25hbWUsIHJlcG9zaXRvcnlfdXJsLCBlbWFpbF90b19uYW1lX2hlbHBlciwg
cmV2aXNpb25fdG9fZmV0Y2gpOgorICAgIHRyeToKKyAgICAgICAgY29tbWl0ID0gZmV0Y2hfY29t
bWl0KHJlcG9zaXRvcnlfbmFtZSwgcmVwb3NpdG9yeV91cmwsIHJldmlzaW9uX3RvX2ZldGNoKQor
ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6CisgICAgICAgIHN5cy5leGl0KCdGYWlsZWQg
dG8gZmV0Y2ggdGhlIGNvbW1pdCAlZDogJXMnICUgKHJldmlzaW9uX3RvX2ZldGNoLCBzdHIoZXJy
b3IpKSkKKworICAgIGlmIG5vdCBjb21taXQ6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBl
bWFpbCA9IGNvbW1pdFsnYXV0aG9yJ11bJ2VtYWlsJ10KKyAgICB0cnk6CisgICAgICAgIG5hbWUg
PSByZXNvbHZlX2F1dGhvcl9uYW1lX2Zyb21fZW1haWwoZW1haWxfdG9fbmFtZV9oZWxwZXIsIGVt
YWlsKSBpZiBlbWFpbF90b19uYW1lX2hlbHBlciBlbHNlIE5vbmUKKyAgICAgICAgaWYgbmFtZToK
KyAgICAgICAgICAgIGNvbW1pdFsnYXV0aG9yJ11bJ25hbWUnXSA9IG5hbWUKKyAgICBleGNlcHQg
RXhjZXB0aW9uIGFzIGVycm9yOgorICAgICAgICBzeXMuZXhpdCgnRmFpbGVkIHRvIHJlc29sdmUg
dGhlIGF1dGhvciBuYW1lIGZyb20gYW4gZW1haWwgJXM6ICVzJyAlIChlbWFpbCwgc3RyKGVycm9y
KSkpCisKKyAgICByZXR1cm4gY29tbWl0CisKKworZGVmIGZldGNoX2NvbW1pdChyZXBvc2l0b3J5
X25hbWUsIHJlcG9zaXRvcnlfdXJsLCByZXZpc2lvbik6CisgICAgYXJncyA9IFsnc3ZuJywgJ2xv
ZycsICctLXJldmlzaW9uJywgc3RyKHJldmlzaW9uKSwgJy0teG1sJywgcmVwb3NpdG9yeV91cmxd
CisgICAgdHJ5OgorICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChhcmdz
LCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVk
UHJvY2Vzc0Vycm9yIGFzIGVycm9yOgorICAgICAgICBpZiAoJzogTm8gc3VjaCByZXZpc2lvbiAn
ICsgc3RyKHJldmlzaW9uKSkgaW4gZXJyb3Iub3V0cHV0OgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKyAgICAgICAgcmFpc2UgZXJyb3IKKyAgICB4bWwgPSBwYXJzZVhtbFN0cmluZyhvdXRwdXQp
CisgICAgdGltZSA9IHRleHRDb250ZW50KHhtbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGF0ZSIp
WzBdKQorICAgIGF1dGhvcl9lbWFpbCA9IHRleHRDb250ZW50KHhtbC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYXV0aG9yIilbMF0pCisgICAgbWVzc2FnZSA9IHRleHRDb250ZW50KHhtbC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgibXNnIilbMF0pCisgICAgcmV0dXJuIHsKKyAgICAgICAgJ3JlcG9zaXRv
cnknOiByZXBvc2l0b3J5X25hbWUsCisgICAgICAgICdyZXZpc2lvbic6IHJldmlzaW9uLAorICAg
ICAgICAndGltZSc6IHRpbWUsCisgICAgICAgICdhdXRob3InOiB7J2VtYWlsJzogYXV0aG9yX2Vt
YWlsfSwKKyAgICAgICAgJ21lc3NhZ2UnOiBtZXNzYWdlLAorICAgIH0KKworCitkZWYgdGV4dENv
bnRlbnQoZWxlbWVudCk6CisgICAgdGV4dCA9ICcnCisgICAgZm9yIGNoaWxkIGluIGVsZW1lbnQu
Y2hpbGROb2RlczoKKyAgICAgICAgaWYgY2hpbGQubm9kZVR5cGUgPT0gY2hpbGQuVEVYVF9OT0RF
OgorICAgICAgICAgICAgdGV4dCArPSBjaGlsZC5kYXRhCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICB0ZXh0ICs9IHRleHRDb250ZW50KGNoaWxkKQorICAgIHJldHVybiB0ZXh0CisKKworbmFt
ZV9lbWFpbF9jb21wb3VuZF9yZWdleCA9IHJlLmNvbXBpbGUocideXHMqKD9QPG5hbWU+KFwiLitc
InxbXjxdKz8pKVxzKlw8KD9QPGVtYWlsPi4rKVw+XHMqJCcpCisKKworZGVmIHJlc29sdmVfYXV0
aG9yX25hbWVfZnJvbV9lbWFpbChoZWxwZXIsIGVtYWlsKToKKyAgICBvdXRwdXQgPSBzdWJwcm9j
ZXNzLmNoZWNrX291dHB1dChoZWxwZXIgKyAnICcgKyBlbWFpbCwgc2hlbGw9VHJ1ZSkKKyAgICBt
YXRjaCA9IG5hbWVfZW1haWxfY29tcG91bmRfcmVnZXgubWF0Y2gob3V0cHV0KQorICAgIGlmIG1h
dGNoOgorICAgICAgICByZXR1cm4gbWF0Y2guZ3JvdXAoJ25hbWUnKS5zdHJpcCgnIicpCisgICAg
cmV0dXJuIG91dHB1dC5zdHJpcCgpCisKKworZGVmIHN1Ym1pdF9jb21taXRzKGNvbW1pdHMsIGRh
c2hib2FyZF91cmwsIGJ1aWxkZXJfbmFtZSwgYnVpbGRlcl9wYXNzd29yZCk6CisgICAgdHJ5Ogor
ICAgICAgICBwYXlsb2FkID0ganNvbi5kdW1wcyh7CisgICAgICAgICAgICAnYnVpbGRlck5hbWUn
OiBidWlsZGVyX25hbWUsCisgICAgICAgICAgICAnYnVpbGRlclBhc3N3b3JkJzogYnVpbGRlcl9w
YXNzd29yZCwKKyAgICAgICAgICAgICdjb21taXRzJzogY29tbWl0cywKKyAgICAgICAgfSkKKyAg
ICAgICAgcmVxdWVzdCA9IHVybGxpYjIuUmVxdWVzdChkYXNoYm9hcmRfdXJsICsgJy9hcGkvcmVw
b3J0LWNvbW1pdHMnKQorICAgICAgICByZXF1ZXN0LmFkZF9oZWFkZXIoJ0NvbnRlbnQtVHlwZScs
ICdhcHBsaWNhdGlvbi9qc29uJykKKyAgICAgICAgcmVxdWVzdC5hZGRfaGVhZGVyKCdDb250ZW50
LUxlbmd0aCcsIGxlbihwYXlsb2FkKSkKKworICAgICAgICBvdXRwdXQgPSB1cmxsaWIyLnVybG9w
ZW4ocmVxdWVzdCwgcGF5bG9hZCkucmVhZCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJl
c3VsdCA9IGpzb24ubG9hZHMob3V0cHV0KQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlcnJv
cjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihlcnJvciwgb3V0cHV0KQorCisgICAgICAg
IGlmIHJlc3VsdC5nZXQoJ3N0YXR1cycpICE9ICdPSyc6CisgICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24ocmVzdWx0KQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6CisgICAgICAgIHN5
cy5leGl0KCdGYWlsZWQgdG8gc3VibWl0IGNvbW1pdHM6ICVzJyAlIHN0cihlcnJvcikpCisKKwor
aWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKHN5cy5hcmd2KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>