@bitgo-beta/bitgo 14.2.1-beta.2202 → 14.2.1-beta.2204
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/BitGoJS.min.js +2 -2
- package/dist/package.json +94 -94
- package/dist/test/unit/keychains.js +48 -1
- package/dist/test/v2/unit/accountConsolidations.js +31 -1
- package/dist/test/v2/unit/keychains.js +122 -1
- package/dist/test/v2/unit/wallet.js +193 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +94 -94
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
[diffend] Oversized file quarantined before diffing.
|
|
2
2
|
name: package/dist/browser/BitGoJS.min.js
|
|
3
|
-
size:
|
|
4
|
-
sha256:
|
|
3
|
+
size: 41336702 bytes
|
|
4
|
+
sha256: ae7d722c80e6f43fb27d10896c6e990f82b01781d1d65568fc88944f96e6c8c7
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo-beta/bitgo",
|
|
3
|
-
"version": "14.2.1-beta.
|
|
3
|
+
"version": "14.2.1-beta.2204",
|
|
4
4
|
"description": "BitGo JavaScript SDK",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/types/src/index.d.ts",
|
|
@@ -45,95 +45,95 @@
|
|
|
45
45
|
"gen-docs": "typedoc"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@bitgo-beta/abstract-lightning": "1.0.1-beta.
|
|
49
|
-
"@bitgo-beta/abstract-utxo": "1.1.1-beta.
|
|
50
|
-
"@bitgo-beta/account-lib": "2.20.1-beta.
|
|
51
|
-
"@bitgo-beta/sdk-api": "1.10.1-beta.
|
|
52
|
-
"@bitgo-beta/sdk-coin-ada": "2.3.14-beta.
|
|
53
|
-
"@bitgo-beta/sdk-coin-algo": "2.8.9-beta.
|
|
54
|
-
"@bitgo-beta/sdk-coin-apechain": "1.0.1-beta.
|
|
55
|
-
"@bitgo-beta/sdk-coin-apt": "1.0.1-beta.
|
|
56
|
-
"@bitgo-beta/sdk-coin-arbeth": "1.0.1-beta.
|
|
57
|
-
"@bitgo-beta/sdk-coin-asi": "1.0.1-beta.
|
|
58
|
-
"@bitgo-beta/sdk-coin-atom": "3.1.2-beta.
|
|
59
|
-
"@bitgo-beta/sdk-coin-avaxc": "1.1.1-beta.
|
|
60
|
-
"@bitgo-beta/sdk-coin-avaxp": "5.7.3-beta.
|
|
61
|
-
"@bitgo-beta/sdk-coin-baby": "1.0.1-beta.
|
|
62
|
-
"@bitgo-beta/sdk-coin-bch": "1.1.1-beta.
|
|
63
|
-
"@bitgo-beta/sdk-coin-bcha": "1.1.1-beta.
|
|
64
|
-
"@bitgo-beta/sdk-coin-bera": "1.0.1-beta.
|
|
65
|
-
"@bitgo-beta/sdk-coin-bld": "1.0.1-beta.
|
|
66
|
-
"@bitgo-beta/sdk-coin-bsc": "1.0.1-beta.
|
|
67
|
-
"@bitgo-beta/sdk-coin-bsv": "1.1.1-beta.
|
|
68
|
-
"@bitgo-beta/sdk-coin-btc": "1.0.2-beta.
|
|
69
|
-
"@bitgo-beta/sdk-coin-btg": "1.1.1-beta.
|
|
70
|
-
"@bitgo-beta/sdk-coin-canton": "1.0.1-beta.
|
|
71
|
-
"@bitgo-beta/sdk-coin-celo": "1.1.1-beta.
|
|
72
|
-
"@bitgo-beta/sdk-coin-coredao": "1.0.0-beta.
|
|
73
|
-
"@bitgo-beta/sdk-coin-coreum": "1.0.1-beta.
|
|
74
|
-
"@bitgo-beta/sdk-coin-cosmos": "1.0.0-beta.
|
|
75
|
-
"@bitgo-beta/sdk-coin-cronos": "1.0.1-beta.
|
|
76
|
-
"@bitgo-beta/sdk-coin-cspr": "1.2.19-beta.
|
|
77
|
-
"@bitgo-beta/sdk-coin-dash": "1.1.1-beta.
|
|
78
|
-
"@bitgo-beta/sdk-coin-doge": "1.0.2-beta.
|
|
79
|
-
"@bitgo-beta/sdk-coin-dot": "2.2.8-beta.
|
|
80
|
-
"@bitgo-beta/sdk-coin-eos": "1.3.19-beta.
|
|
81
|
-
"@bitgo-beta/sdk-coin-etc": "1.0.2-beta.
|
|
82
|
-
"@bitgo-beta/sdk-coin-eth": "4.4.1-beta.
|
|
83
|
-
"@bitgo-beta/sdk-coin-ethlike": "2.5.1-beta.
|
|
84
|
-
"@bitgo-beta/sdk-coin-ethw": "20.0.76-beta.
|
|
85
|
-
"@bitgo-beta/sdk-coin-evm": "1.0.1-beta.
|
|
86
|
-
"@bitgo-beta/sdk-coin-flr": "1.0.1-beta.
|
|
87
|
-
"@bitgo-beta/sdk-coin-flrp": "1.0.1-beta.
|
|
88
|
-
"@bitgo-beta/sdk-coin-hash": "1.0.1-beta.
|
|
89
|
-
"@bitgo-beta/sdk-coin-hbar": "1.0.2-beta.
|
|
90
|
-
"@bitgo-beta/sdk-coin-icp": "1.0.1-beta.
|
|
91
|
-
"@bitgo-beta/sdk-coin-initia": "1.1.1-beta.
|
|
92
|
-
"@bitgo-beta/sdk-coin-injective": "1.1.3-beta.
|
|
93
|
-
"@bitgo-beta/sdk-coin-iota": "1.0.1-beta.
|
|
94
|
-
"@bitgo-beta/sdk-coin-islm": "1.0.1-beta.
|
|
95
|
-
"@bitgo-beta/sdk-coin-kaspa": "0.0.1-beta.
|
|
96
|
-
"@bitgo-beta/sdk-coin-lnbtc": "1.0.1-beta.
|
|
97
|
-
"@bitgo-beta/sdk-coin-ltc": "1.1.1-beta.
|
|
98
|
-
"@bitgo-beta/sdk-coin-mon": "1.0.1-beta.
|
|
99
|
-
"@bitgo-beta/sdk-coin-near": "1.3.19-beta.
|
|
100
|
-
"@bitgo-beta/sdk-coin-oas": "1.0.1-beta.
|
|
101
|
-
"@bitgo-beta/sdk-coin-opeth": "1.0.1-beta.
|
|
102
|
-
"@bitgo-beta/sdk-coin-osmo": "1.0.1-beta.
|
|
103
|
-
"@bitgo-beta/sdk-coin-pearl": "0.0.1-beta.
|
|
104
|
-
"@bitgo-beta/sdk-coin-polygon": "1.0.2-beta.
|
|
105
|
-
"@bitgo-beta/sdk-coin-polyx": "1.0.1-beta.
|
|
106
|
-
"@bitgo-beta/sdk-coin-rbtc": "1.1.1-beta.
|
|
107
|
-
"@bitgo-beta/sdk-coin-rune": "1.0.0-beta.
|
|
108
|
-
"@bitgo-beta/sdk-coin-sei": "1.0.1-beta.
|
|
109
|
-
"@bitgo-beta/sdk-coin-sgb": "1.1.1-beta.
|
|
110
|
-
"@bitgo-beta/sdk-coin-sol": "7.6.4-beta.
|
|
111
|
-
"@bitgo-beta/sdk-coin-soneium": "1.0.1-beta.
|
|
112
|
-
"@bitgo-beta/sdk-coin-starknet": "0.0.1-beta.
|
|
113
|
-
"@bitgo-beta/sdk-coin-stt": "1.0.1-beta.
|
|
114
|
-
"@bitgo-beta/sdk-coin-stx": "1.1.1-beta.
|
|
115
|
-
"@bitgo-beta/sdk-coin-sui": "3.0.3-beta.
|
|
116
|
-
"@bitgo-beta/sdk-coin-tao": "1.0.0-beta.
|
|
117
|
-
"@bitgo-beta/sdk-coin-tempo": "1.0.1-beta.
|
|
118
|
-
"@bitgo-beta/sdk-coin-tia": "3.1.8-beta.
|
|
119
|
-
"@bitgo-beta/sdk-coin-ton": "1.0.1-beta.
|
|
120
|
-
"@bitgo-beta/sdk-coin-trx": "1.0.2-beta.
|
|
121
|
-
"@bitgo-beta/sdk-coin-vet": "1.0.1-beta.
|
|
122
|
-
"@bitgo-beta/sdk-coin-wemix": "1.0.1-beta.
|
|
123
|
-
"@bitgo-beta/sdk-coin-world": "1.0.1-beta.
|
|
124
|
-
"@bitgo-beta/sdk-coin-xdc": "1.0.1-beta.
|
|
125
|
-
"@bitgo-beta/sdk-coin-xlm": "2.0.5-beta.
|
|
126
|
-
"@bitgo-beta/sdk-coin-xrp": "1.1.1-beta.
|
|
127
|
-
"@bitgo-beta/sdk-coin-xtz": "1.1.1-beta.
|
|
128
|
-
"@bitgo-beta/sdk-coin-zec": "1.1.1-beta.
|
|
129
|
-
"@bitgo-beta/sdk-coin-zeta": "1.0.1-beta.
|
|
130
|
-
"@bitgo-beta/sdk-coin-zketh": "1.0.1-beta.
|
|
131
|
-
"@bitgo-beta/sdk-core": "8.2.1-beta.
|
|
132
|
-
"@bitgo-beta/sdk-lib-mpc": "8.2.0-beta.
|
|
133
|
-
"@bitgo-beta/sjcl": "1.0.2-beta.
|
|
134
|
-
"@bitgo-beta/statics": "15.1.1-beta.
|
|
135
|
-
"@bitgo-beta/unspents": "0.13.2-beta.
|
|
136
|
-
"@bitgo-beta/utxo-lib": "8.0.3-beta.
|
|
48
|
+
"@bitgo-beta/abstract-lightning": "1.0.1-beta.1714",
|
|
49
|
+
"@bitgo-beta/abstract-utxo": "1.1.1-beta.2329",
|
|
50
|
+
"@bitgo-beta/account-lib": "2.20.1-beta.2286",
|
|
51
|
+
"@bitgo-beta/sdk-api": "1.10.1-beta.2093",
|
|
52
|
+
"@bitgo-beta/sdk-coin-ada": "2.3.14-beta.2092",
|
|
53
|
+
"@bitgo-beta/sdk-coin-algo": "2.8.9-beta.571",
|
|
54
|
+
"@bitgo-beta/sdk-coin-apechain": "1.0.1-beta.1150",
|
|
55
|
+
"@bitgo-beta/sdk-coin-apt": "1.0.1-beta.1533",
|
|
56
|
+
"@bitgo-beta/sdk-coin-arbeth": "1.0.1-beta.1946",
|
|
57
|
+
"@bitgo-beta/sdk-coin-asi": "1.0.1-beta.1178",
|
|
58
|
+
"@bitgo-beta/sdk-coin-atom": "3.1.2-beta.2089",
|
|
59
|
+
"@bitgo-beta/sdk-coin-avaxc": "1.1.1-beta.2313",
|
|
60
|
+
"@bitgo-beta/sdk-coin-avaxp": "5.7.3-beta.409",
|
|
61
|
+
"@bitgo-beta/sdk-coin-baby": "1.0.1-beta.1434",
|
|
62
|
+
"@bitgo-beta/sdk-coin-bch": "1.1.1-beta.2318",
|
|
63
|
+
"@bitgo-beta/sdk-coin-bcha": "1.1.1-beta.2314",
|
|
64
|
+
"@bitgo-beta/sdk-coin-bera": "1.0.1-beta.1945",
|
|
65
|
+
"@bitgo-beta/sdk-coin-bld": "1.0.1-beta.2052",
|
|
66
|
+
"@bitgo-beta/sdk-coin-bsc": "1.0.1-beta.2315",
|
|
67
|
+
"@bitgo-beta/sdk-coin-bsv": "1.1.1-beta.2316",
|
|
68
|
+
"@bitgo-beta/sdk-coin-btc": "1.0.2-beta.2315",
|
|
69
|
+
"@bitgo-beta/sdk-coin-btg": "1.1.1-beta.2313",
|
|
70
|
+
"@bitgo-beta/sdk-coin-canton": "1.0.1-beta.861",
|
|
71
|
+
"@bitgo-beta/sdk-coin-celo": "1.1.1-beta.2314",
|
|
72
|
+
"@bitgo-beta/sdk-coin-coredao": "1.0.0-beta.1523",
|
|
73
|
+
"@bitgo-beta/sdk-coin-coreum": "1.0.1-beta.1932",
|
|
74
|
+
"@bitgo-beta/sdk-coin-cosmos": "1.0.0-beta.1071",
|
|
75
|
+
"@bitgo-beta/sdk-coin-cronos": "1.0.1-beta.1223",
|
|
76
|
+
"@bitgo-beta/sdk-coin-cspr": "1.2.19-beta.2090",
|
|
77
|
+
"@bitgo-beta/sdk-coin-dash": "1.1.1-beta.2315",
|
|
78
|
+
"@bitgo-beta/sdk-coin-doge": "1.0.2-beta.2315",
|
|
79
|
+
"@bitgo-beta/sdk-coin-dot": "2.2.8-beta.2090",
|
|
80
|
+
"@bitgo-beta/sdk-coin-eos": "1.3.19-beta.2087",
|
|
81
|
+
"@bitgo-beta/sdk-coin-etc": "1.0.2-beta.2314",
|
|
82
|
+
"@bitgo-beta/sdk-coin-eth": "4.4.1-beta.2086",
|
|
83
|
+
"@bitgo-beta/sdk-coin-ethlike": "2.5.1-beta.606",
|
|
84
|
+
"@bitgo-beta/sdk-coin-ethw": "20.0.76-beta.1252",
|
|
85
|
+
"@bitgo-beta/sdk-coin-evm": "1.0.1-beta.1150",
|
|
86
|
+
"@bitgo-beta/sdk-coin-flr": "1.0.1-beta.1428",
|
|
87
|
+
"@bitgo-beta/sdk-coin-flrp": "1.0.1-beta.936",
|
|
88
|
+
"@bitgo-beta/sdk-coin-hash": "1.0.1-beta.2048",
|
|
89
|
+
"@bitgo-beta/sdk-coin-hbar": "1.0.2-beta.2317",
|
|
90
|
+
"@bitgo-beta/sdk-coin-icp": "1.0.1-beta.1445",
|
|
91
|
+
"@bitgo-beta/sdk-coin-initia": "1.1.1-beta.1204",
|
|
92
|
+
"@bitgo-beta/sdk-coin-injective": "1.1.3-beta.2042",
|
|
93
|
+
"@bitgo-beta/sdk-coin-iota": "1.0.1-beta.971",
|
|
94
|
+
"@bitgo-beta/sdk-coin-islm": "1.0.1-beta.1945",
|
|
95
|
+
"@bitgo-beta/sdk-coin-kaspa": "0.0.1-beta.382",
|
|
96
|
+
"@bitgo-beta/sdk-coin-lnbtc": "1.0.1-beta.1702",
|
|
97
|
+
"@bitgo-beta/sdk-coin-ltc": "1.1.1-beta.2315",
|
|
98
|
+
"@bitgo-beta/sdk-coin-mon": "1.0.1-beta.1261",
|
|
99
|
+
"@bitgo-beta/sdk-coin-near": "1.3.19-beta.2088",
|
|
100
|
+
"@bitgo-beta/sdk-coin-oas": "1.0.1-beta.1524",
|
|
101
|
+
"@bitgo-beta/sdk-coin-opeth": "1.0.1-beta.1943",
|
|
102
|
+
"@bitgo-beta/sdk-coin-osmo": "1.0.1-beta.2073",
|
|
103
|
+
"@bitgo-beta/sdk-coin-pearl": "0.0.1-beta.167",
|
|
104
|
+
"@bitgo-beta/sdk-coin-polygon": "1.0.2-beta.2315",
|
|
105
|
+
"@bitgo-beta/sdk-coin-polyx": "1.0.1-beta.1287",
|
|
106
|
+
"@bitgo-beta/sdk-coin-rbtc": "1.1.1-beta.2313",
|
|
107
|
+
"@bitgo-beta/sdk-coin-rune": "1.0.0-beta.1556",
|
|
108
|
+
"@bitgo-beta/sdk-coin-sei": "1.0.1-beta.2043",
|
|
109
|
+
"@bitgo-beta/sdk-coin-sgb": "1.1.1-beta.1430",
|
|
110
|
+
"@bitgo-beta/sdk-coin-sol": "7.6.4-beta.736",
|
|
111
|
+
"@bitgo-beta/sdk-coin-soneium": "1.0.1-beta.1239",
|
|
112
|
+
"@bitgo-beta/sdk-coin-starknet": "0.0.1-beta.326",
|
|
113
|
+
"@bitgo-beta/sdk-coin-stt": "1.0.1-beta.1248",
|
|
114
|
+
"@bitgo-beta/sdk-coin-stx": "1.1.1-beta.2321",
|
|
115
|
+
"@bitgo-beta/sdk-coin-sui": "3.0.3-beta.2085",
|
|
116
|
+
"@bitgo-beta/sdk-coin-tao": "1.0.0-beta.1458",
|
|
117
|
+
"@bitgo-beta/sdk-coin-tempo": "1.0.1-beta.621",
|
|
118
|
+
"@bitgo-beta/sdk-coin-tia": "3.1.8-beta.1057",
|
|
119
|
+
"@bitgo-beta/sdk-coin-ton": "1.0.1-beta.1951",
|
|
120
|
+
"@bitgo-beta/sdk-coin-trx": "1.0.2-beta.2319",
|
|
121
|
+
"@bitgo-beta/sdk-coin-vet": "1.0.1-beta.1203",
|
|
122
|
+
"@bitgo-beta/sdk-coin-wemix": "1.0.1-beta.1421",
|
|
123
|
+
"@bitgo-beta/sdk-coin-world": "1.0.1-beta.1249",
|
|
124
|
+
"@bitgo-beta/sdk-coin-xdc": "1.0.1-beta.1431",
|
|
125
|
+
"@bitgo-beta/sdk-coin-xlm": "2.0.5-beta.2083",
|
|
126
|
+
"@bitgo-beta/sdk-coin-xrp": "1.1.1-beta.2316",
|
|
127
|
+
"@bitgo-beta/sdk-coin-xtz": "1.1.1-beta.2319",
|
|
128
|
+
"@bitgo-beta/sdk-coin-zec": "1.1.1-beta.2315",
|
|
129
|
+
"@bitgo-beta/sdk-coin-zeta": "1.0.1-beta.2008",
|
|
130
|
+
"@bitgo-beta/sdk-coin-zketh": "1.0.1-beta.1873",
|
|
131
|
+
"@bitgo-beta/sdk-core": "8.2.1-beta.2105",
|
|
132
|
+
"@bitgo-beta/sdk-lib-mpc": "8.2.0-beta.2115",
|
|
133
|
+
"@bitgo-beta/sjcl": "1.0.2-beta.2371",
|
|
134
|
+
"@bitgo-beta/statics": "15.1.1-beta.2136",
|
|
135
|
+
"@bitgo-beta/unspents": "0.13.2-beta.2115",
|
|
136
|
+
"@bitgo-beta/utxo-lib": "8.0.3-beta.2118",
|
|
137
137
|
"@types/superagent": "^4.1.3",
|
|
138
138
|
"bignumber.js": "^9.1.1",
|
|
139
139
|
"cbor-x": "1.5.9",
|
|
@@ -143,9 +143,9 @@
|
|
|
143
143
|
"superagent": "^9.0.1"
|
|
144
144
|
},
|
|
145
145
|
"devDependencies": {
|
|
146
|
-
"@bitgo-beta/sdk-opensslbytes": "1.0.0-beta.
|
|
147
|
-
"@bitgo-beta/sdk-test": "^9.1.
|
|
148
|
-
"@bitgo/public-types": "6.
|
|
146
|
+
"@bitgo-beta/sdk-opensslbytes": "1.0.0-beta.1688",
|
|
147
|
+
"@bitgo-beta/sdk-test": "^9.1.84",
|
|
148
|
+
"@bitgo/public-types": "6.83.0",
|
|
149
149
|
"@openpgp/web-stream-tools": "0.0.14",
|
|
150
150
|
"@types/create-hmac": "^1.1.0",
|
|
151
151
|
"@types/debug": "^4.1.4",
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
"publishConfig": {
|
|
183
183
|
"access": "public"
|
|
184
184
|
},
|
|
185
|
-
"gitHead": "
|
|
185
|
+
"gitHead": "c47eac88ae0a95c855293dbc10dc1bf86392b406",
|
|
186
186
|
"files": [
|
|
187
187
|
"dist",
|
|
188
188
|
"npm-shrinkwrap.json"
|
|
@@ -61,9 +61,56 @@ describe('Keychains', function v2keychains() {
|
|
|
61
61
|
}
|
|
62
62
|
result.should.hasOwnProperty('version');
|
|
63
63
|
});
|
|
64
|
+
it('should emit progressCallback outcomes for updated and skipped keychains', async function () {
|
|
65
|
+
const oldPassword = 'oldPassword';
|
|
66
|
+
const newPassword = 'newPassword';
|
|
67
|
+
const otherPassword = 'otherPassword';
|
|
68
|
+
const encryptedXprv1 = await bitgo.encrypt({ input: 'xprv1', password: oldPassword });
|
|
69
|
+
const encryptedXprv2 = await bitgo.encrypt({ input: 'xprv2', password: otherPassword });
|
|
70
|
+
nock(bgUrl)
|
|
71
|
+
.post('/api/v1/user/encrypted')
|
|
72
|
+
.reply(200, {
|
|
73
|
+
keychains: {
|
|
74
|
+
xpub1: encryptedXprv1,
|
|
75
|
+
xpub2: encryptedXprv2,
|
|
76
|
+
},
|
|
77
|
+
version: 1,
|
|
78
|
+
});
|
|
79
|
+
const events = [];
|
|
80
|
+
await keychains.updatePassword({
|
|
81
|
+
oldPassword,
|
|
82
|
+
newPassword,
|
|
83
|
+
progressCallback: (progress) => events.push(progress),
|
|
84
|
+
});
|
|
85
|
+
events.should.have.length(2);
|
|
86
|
+
events.should.containEql({ status: 'updated', currentKeychainId: 'xpub1' });
|
|
87
|
+
events.should.containEql({ status: 'skipped', currentKeychainId: 'xpub2' });
|
|
88
|
+
});
|
|
89
|
+
it('should not let a throwing progressCallback affect the rotation result', async function () {
|
|
90
|
+
const oldPassword = 'oldPassword';
|
|
91
|
+
const newPassword = 'newPassword';
|
|
92
|
+
const encryptedXprv1 = await bitgo.encrypt({ input: 'xprv1', password: oldPassword });
|
|
93
|
+
nock(bgUrl)
|
|
94
|
+
.post('/api/v1/user/encrypted')
|
|
95
|
+
.reply(200, {
|
|
96
|
+
keychains: {
|
|
97
|
+
xpub1: encryptedXprv1,
|
|
98
|
+
},
|
|
99
|
+
version: 1,
|
|
100
|
+
});
|
|
101
|
+
const result = await keychains.updatePassword({
|
|
102
|
+
oldPassword,
|
|
103
|
+
newPassword,
|
|
104
|
+
progressCallback: () => {
|
|
105
|
+
throw new Error('observer boom');
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
const decryptedPrv = await bitgo.decrypt({ input: result.keychains.xpub1, password: newPassword });
|
|
109
|
+
decryptedPrv.should.equal('xprv1');
|
|
110
|
+
});
|
|
64
111
|
});
|
|
65
112
|
after(function afterKeychains() {
|
|
66
113
|
nock.pendingMocks().should.be.empty();
|
|
67
114
|
});
|
|
68
115
|
});
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2tleWNoYWlucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsRUFBRTtBQUNGLHFCQUFxQjtBQUNyQixFQUFFOztBQUVGLGtCQUFnQjtBQUNoQiw2QkFBOEI7QUFFOUIsbURBQThDO0FBRTlDLG1EQUFpRDtBQUNqRCwyQ0FBd0M7QUFFeEMsUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLFdBQVc7SUFDeEMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsY0FBYztRQUNqRCxJQUFJLEtBQUssQ0FBQztRQUNWLElBQUksU0FBUyxDQUFDO1FBQ2QsSUFBSSxLQUFLLENBQUM7UUFFVixNQUFNLENBQUMsU0FBUyxjQUFjO1lBQzVCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRXRDLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxhQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNuRCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMzQixLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFOUIsS0FBSyxHQUFHLGlCQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxLQUFLO1lBQzVDLE1BQU0sU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7WUFFakgsTUFBTSxTQUFTO2lCQUNaLGNBQWMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO2lCQUMxRCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1lBRXRGLE1BQU0sU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7WUFFakgsTUFBTSxTQUFTO2lCQUNaLGNBQWMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUMxRCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1FBQ3hGLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDRCQUE0QixFQUFFLEtBQUs7WUFDcEMsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDO1lBQ2xDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQztZQUNsQyxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUM7WUFFdEMsTUFBTSxjQUFjLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN0RixNQUFNLGNBQWMsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBRXhGLElBQUksQ0FBQyxLQUFLLENBQUM7aUJBQ1IsSUFBSSxDQUFDLHdCQUF3QixDQUFDO2lCQUM5QixLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNWLFNBQVMsRUFBRTtvQkFDVCxLQUFLLEVBQUUsY0FBYztvQkFDckIsS0FBSyxFQUFFLGNBQWM7aUJBQ3RCO2dCQUNELE9BQU8sRUFBRSxDQUFDO2FBQ1gsQ0FBQyxDQUFDO1lBRUwsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN0RyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBbUMsQ0FBQyxFQUFFLENBQUM7Z0JBQy9GLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUM7b0JBQ0gsTUFBTSxZQUFZLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztvQkFDMUYsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDWCwyR0FBMkc7b0JBQzNHLG1CQUFtQjtvQkFDbkIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQy9DLENBQUM7WUFDSCxDQUFDO1lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxTQUFTLGNBQWM7UUFDM0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vXG4vLyBUZXN0IGZvciBLZXljaGFpbnNcbi8vXG5cbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCBub2NrID0gcmVxdWlyZSgnbm9jaycpO1xuXG5pbXBvcnQgeyBjb21tb24gfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmltcG9ydCB7IFRlc3RCaXRHbyB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvIH0gZnJvbSAnLi4vLi4vc3JjL2JpdGdvJztcblxuZGVzY3JpYmUoJ0tleWNoYWlucycsIGZ1bmN0aW9uIHYya2V5Y2hhaW5zKCkge1xuICBkZXNjcmliZSgnVXBkYXRlIFBhc3N3b3JkJywgZnVuY3Rpb24gdXBkYXRlUGFzc3dvcmQoKSB7XG4gICAgbGV0IGJpdGdvO1xuICAgIGxldCBrZXljaGFpbnM7XG4gICAgbGV0IGJnVXJsO1xuXG4gICAgYmVmb3JlKGZ1bmN0aW9uIGJlZm9yZURlc2NyaWJlKCkge1xuICAgICAgbm9jay5wZW5kaW5nTW9ja3MoKS5zaG91bGQuYmUuZW1wdHkoKTtcblxuICAgICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R28sIHsgZW52OiAnbW9jaycgfSk7XG4gICAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICAgIGJpdGdvLnNldFZhbGlkYXRlKGZhbHNlKTtcbiAgICAgIGtleWNoYWlucyA9IGJpdGdvLmtleWNoYWlucygpO1xuXG4gICAgICBiZ1VybCA9IGNvbW1vbi5FbnZpcm9ubWVudHNbYml0Z28uZ2V0RW52KCldLnVyaTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byB1cGRhdGUgdGhlIHBhc3N3b3JkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQga2V5Y2hhaW5zLnVwZGF0ZVBhc3N3b3JkKHsgbmV3UGFzc3dvcmQ6ICc1Njc4JyB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdNaXNzaW5nIHBhcmFtZXRlcjogb2xkUGFzc3dvcmQnKTtcblxuICAgICAgYXdhaXQga2V5Y2hhaW5zXG4gICAgICAgIC51cGRhdGVQYXNzd29yZCh7IG9sZFBhc3N3b3JkOiAxMjM0LCBuZXdQYXNzd29yZDogJzU2NzgnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdFeHBlY3RpbmcgcGFyYW1ldGVyIHN0cmluZzogb2xkUGFzc3dvcmQgYnV0IGZvdW5kIG51bWJlcicpO1xuXG4gICAgICBhd2FpdCBrZXljaGFpbnMudXBkYXRlUGFzc3dvcmQoeyBvbGRQYXNzd29yZDogJzEyMzQnIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ01pc3NpbmcgcGFyYW1ldGVyOiBuZXdQYXNzd29yZCcpO1xuXG4gICAgICBhd2FpdCBrZXljaGFpbnNcbiAgICAgICAgLnVwZGF0ZVBhc3N3b3JkKHsgb2xkUGFzc3dvcmQ6ICcxMjM0JywgbmV3UGFzc3dvcmQ6IDU2NzggfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0V4cGVjdGluZyBwYXJhbWV0ZXIgc3RyaW5nOiBuZXdQYXNzd29yZCBidXQgZm91bmQgbnVtYmVyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc3VjY2Vzc2Z1bCBwYXNzd29yZCB1cGRhdGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBvbGRQYXNzd29yZCA9ICdvbGRQYXNzd29yZCc7XG4gICAgICBjb25zdCBuZXdQYXNzd29yZCA9ICduZXdQYXNzd29yZCc7XG4gICAgICBjb25zdCBvdGhlclBhc3N3b3JkID0gJ290aGVyUGFzc3dvcmQnO1xuXG4gICAgICBjb25zdCBlbmNyeXB0ZWRYcHJ2MSA9IGF3YWl0IGJpdGdvLmVuY3J5cHQoeyBpbnB1dDogJ3hwcnYxJywgcGFzc3dvcmQ6IG9sZFBhc3N3b3JkIH0pO1xuICAgICAgY29uc3QgZW5jcnlwdGVkWHBydjIgPSBhd2FpdCBiaXRnby5lbmNyeXB0KHsgaW5wdXQ6ICd4cHJ2MicsIHBhc3N3b3JkOiBvdGhlclBhc3N3b3JkIH0pO1xuXG4gICAgICBub2NrKGJnVXJsKVxuICAgICAgICAucG9zdCgnL2FwaS92MS91c2VyL2VuY3J5cHRlZCcpXG4gICAgICAgIC5yZXBseSgyMDAsIHtcbiAgICAgICAgICBrZXljaGFpbnM6IHtcbiAgICAgICAgICAgIHhwdWIxOiBlbmNyeXB0ZWRYcHJ2MSxcbiAgICAgICAgICAgIHhwdWIyOiBlbmNyeXB0ZWRYcHJ2MixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBrZXljaGFpbnMudXBkYXRlUGFzc3dvcmQoeyBvbGRQYXNzd29yZDogb2xkUGFzc3dvcmQsIG5ld1Bhc3N3b3JkOiBuZXdQYXNzd29yZCB9KTtcbiAgICAgIGZvciAoY29uc3QgW3hwdWIsIGVuY3J5cHRlZFhwcnZdIG9mIE9iamVjdC5lbnRyaWVzKHJlc3VsdC5rZXljaGFpbnMgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPikpIHtcbiAgICAgICAgeHB1Yi5zaG91bGQuc3RhcnRXaXRoKCd4cHViJyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGVjcnlwdGVkUHJ2ID0gYXdhaXQgYml0Z28uZGVjcnlwdCh7IGlucHV0OiBlbmNyeXB0ZWRYcHJ2LCBwYXNzd29yZDogbmV3UGFzc3dvcmQgfSk7XG4gICAgICAgICAgZGVjcnlwdGVkUHJ2LnNob3VsZC5zdGFydFdpdGgoJ3hwcnYnKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIHRoZSBkZWNyeXB0aW9uIGRpZG4ndCB3b3JrIGJlY2F1c2Ugb2YgdGhlIHdyb25nIHBhc3N3b3JkLCB0aGlzIGlzIG9uZSBvZiB0aGUga2V5Y2hhaW5zIHRoYXQgZGlkbid0IG1hdGNoXG4gICAgICAgICAgLy8gdGhlIG9sZCBwYXNzd29yZFxuICAgICAgICAgIGUubWVzc2FnZS5zaG91bGQuZXF1YWwoJ2luY29ycmVjdCBwYXNzd29yZCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXN1bHQuc2hvdWxkLmhhc093blByb3BlcnR5KCd2ZXJzaW9uJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFmdGVyKGZ1bmN0aW9uIGFmdGVyS2V5Y2hhaW5zKCkge1xuICAgIG5vY2sucGVuZGluZ01vY2tzKCkuc2hvdWxkLmJlLmVtcHR5KCk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2tleWNoYWlucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsRUFBRTtBQUNGLHFCQUFxQjtBQUNyQixFQUFFOztBQUVGLGtCQUFnQjtBQUNoQiw2QkFBOEI7QUFFOUIsbURBQThDO0FBRTlDLG1EQUFpRDtBQUNqRCwyQ0FBd0M7QUFFeEMsUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLFdBQVc7SUFDeEMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsY0FBYztRQUNqRCxJQUFJLEtBQUssQ0FBQztRQUNWLElBQUksU0FBUyxDQUFDO1FBQ2QsSUFBSSxLQUFLLENBQUM7UUFFVixNQUFNLENBQUMsU0FBUyxjQUFjO1lBQzVCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRXRDLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxhQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNuRCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMzQixLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFOUIsS0FBSyxHQUFHLGlCQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxLQUFLO1lBQzVDLE1BQU0sU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7WUFFakgsTUFBTSxTQUFT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QUFDLEtBQUssQ0FBQztpQkFDUixJQUFJLENBQUMsd0JBQXdCLENBQUM7aUJBQzlCLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ1YsU0FBUyxFQUFFO29CQUNULEtBQUssRUFBRSxjQUFjO2lCQUN0QjtnQkFDRCxPQUFPLEVBQUUsQ0FBQzthQUNYLENBQUMsQ0FBQztZQUVMLE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLGNBQWMsQ0FBQztnQkFDNUMsV0FBVztnQkFDWCxXQUFXO2dCQUNYLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtvQkFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDbkMsQ0FBQzthQUNGLENBQUMsQ0FBQztZQUVILE1BQU0sWUFBWSxHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUNuRyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsS0FBSyxDQUFDLFNBQVMsY0FBYztRQUMzQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vIFRlc3QgZm9yIEtleWNoYWluc1xuLy9cblxuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5cbmltcG9ydCB7IGNvbW1vbiB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgVGVzdEJpdEdvIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuaW1wb3J0IHsgQml0R28gfSBmcm9tICcuLi8uLi9zcmMvYml0Z28nO1xuXG5kZXNjcmliZSgnS2V5Y2hhaW5zJywgZnVuY3Rpb24gdjJrZXljaGFpbnMoKSB7XG4gIGRlc2NyaWJlKCdVcGRhdGUgUGFzc3dvcmQnLCBmdW5jdGlvbiB1cGRhdGVQYXNzd29yZCgpIHtcbiAgICBsZXQgYml0Z287XG4gICAgbGV0IGtleWNoYWlucztcbiAgICBsZXQgYmdVcmw7XG5cbiAgICBiZWZvcmUoZnVuY3Rpb24gYmVmb3JlRGVzY3JpYmUoKSB7XG4gICAgICBub2NrLnBlbmRpbmdNb2NrcygpLnNob3VsZC5iZS5lbXB0eSgpO1xuXG4gICAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHbywgeyBlbnY6ICdtb2NrJyB9KTtcbiAgICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgICAgYml0Z28uc2V0VmFsaWRhdGUoZmFsc2UpO1xuICAgICAga2V5Y2hhaW5zID0gYml0Z28ua2V5Y2hhaW5zKCk7XG5cbiAgICAgIGJnVXJsID0gY29tbW9uLkVudmlyb25tZW50c1tiaXRnby5nZXRFbnYoKV0udXJpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIHVwZGF0ZSB0aGUgcGFzc3dvcmQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBrZXljaGFpbnMudXBkYXRlUGFzc3dvcmQoeyBuZXdQYXNzd29yZDogJzU2NzgnIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ01pc3NpbmcgcGFyYW1ldGVyOiBvbGRQYXNzd29yZCcpO1xuXG4gICAgICBhd2FpdCBrZXljaGFpbnNcbiAgICAgICAgLnVwZGF0ZVBhc3N3b3JkKHsgb2xkUGFzc3dvcmQ6IDEyMzQsIG5ld1Bhc3N3b3JkOiAnNTY3OCcgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0V4cGVjdGluZyBwYXJhbWV0ZXIgc3RyaW5nOiBvbGRQYXNzd29yZCBidXQgZm91bmQgbnVtYmVyJyk7XG5cbiAgICAgIGF3YWl0IGtleWNoYWlucy51cGRhdGVQYXNzd29yZCh7IG9sZFBhc3N3b3JkOiAnMTIzNCcgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnTWlzc2luZyBwYXJhbWV0ZXI6IG5ld1Bhc3N3b3JkJyk7XG5cbiAgICAgIGF3YWl0IGtleWNoYWluc1xuICAgICAgICAudXBkYXRlUGFzc3dvcmQoeyBvbGRQYXNzd29yZDogJzEyMzQnLCBuZXdQYXNzd29yZDogNTY3OCB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnRXhwZWN0aW5nIHBhcmFtZXRlciBzdHJpbmc6IG5ld1Bhc3N3b3JkIGJ1dCBmb3VuZCBudW1iZXInKTtcbiAgICB9KTtcblxuICAgIGl0KCdzdWNjZXNzZnVsIHBhc3N3b3JkIHVwZGF0ZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG9sZFBhc3N3b3JkID0gJ29sZFBhc3N3b3JkJztcbiAgICAgIGNvbnN0IG5ld1Bhc3N3b3JkID0gJ25ld1Bhc3N3b3JkJztcbiAgICAgIGNvbnN0IG90aGVyUGFzc3dvcmQgPSAnb3RoZXJQYXNzd29yZCc7XG5cbiAgICAgIGNvbnN0IGVuY3J5cHRlZFhwcnYxID0gYXdhaXQgYml0Z28uZW5jcnlwdCh7IGlucHV0OiAneHBydjEnLCBwYXNzd29yZDogb2xkUGFzc3dvcmQgfSk7XG4gICAgICBjb25zdCBlbmNyeXB0ZWRYcHJ2MiA9IGF3YWl0IGJpdGdvLmVuY3J5cHQoeyBpbnB1dDogJ3hwcnYyJywgcGFzc3dvcmQ6IG90aGVyUGFzc3dvcmQgfSk7XG5cbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5wb3N0KCcvYXBpL3YxL3VzZXIvZW5jcnlwdGVkJylcbiAgICAgICAgLnJlcGx5KDIwMCwge1xuICAgICAgICAgIGtleWNoYWluczoge1xuICAgICAgICAgICAgeHB1YjE6IGVuY3J5cHRlZFhwcnYxLFxuICAgICAgICAgICAgeHB1YjI6IGVuY3J5cHRlZFhwcnYyLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdmVyc2lvbjogMSxcbiAgICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGtleWNoYWlucy51cGRhdGVQYXNzd29yZCh7IG9sZFBhc3N3b3JkOiBvbGRQYXNzd29yZCwgbmV3UGFzc3dvcmQ6IG5ld1Bhc3N3b3JkIH0pO1xuICAgICAgZm9yIChjb25zdCBbeHB1YiwgZW5jcnlwdGVkWHBydl0gb2YgT2JqZWN0LmVudHJpZXMocmVzdWx0LmtleWNoYWlucyBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSkge1xuICAgICAgICB4cHViLnNob3VsZC5zdGFydFdpdGgoJ3hwdWInKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkZWNyeXB0ZWRQcnYgPSBhd2FpdCBiaXRnby5kZWNyeXB0KHsgaW5wdXQ6IGVuY3J5cHRlZFhwcnYsIHBhc3N3b3JkOiBuZXdQYXNzd29yZCB9KTtcbiAgICAgICAgICBkZWNyeXB0ZWRQcnYuc2hvdWxkLnN0YXJ0V2l0aCgneHBydicpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gdGhlIGRlY3J5cHRpb24gZGlkbid0IHdvcmsgYmVjYXVzZSBvZiB0aGUgd3JvbmcgcGFzc3dvcmQsIHRoaXMgaXMgb25lIG9mIHRoZSBrZXljaGFpbnMgdGhhdCBkaWRuJ3QgbWF0Y2hcbiAgICAgICAgICAvLyB0aGUgb2xkIHBhc3N3b3JkXG4gICAgICAgICAgZS5tZXNzYWdlLnNob3VsZC5lcXVhbCgnaW5jb3JyZWN0IHBhc3N3b3JkJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlc3VsdC5zaG91bGQuaGFzT3duUHJvcGVydHkoJ3ZlcnNpb24nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZW1pdCBwcm9ncmVzc0NhbGxiYWNrIG91dGNvbWVzIGZvciB1cGRhdGVkIGFuZCBza2lwcGVkIGtleWNoYWlucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG9sZFBhc3N3b3JkID0gJ29sZFBhc3N3b3JkJztcbiAgICAgIGNvbnN0IG5ld1Bhc3N3b3JkID0gJ25ld1Bhc3N3b3JkJztcbiAgICAgIGNvbnN0IG90aGVyUGFzc3dvcmQgPSAnb3RoZXJQYXNzd29yZCc7XG5cbiAgICAgIGNvbnN0IGVuY3J5cHRlZFhwcnYxID0gYXdhaXQgYml0Z28uZW5jcnlwdCh7IGlucHV0OiAneHBydjEnLCBwYXNzd29yZDogb2xkUGFzc3dvcmQgfSk7XG4gICAgICBjb25zdCBlbmNyeXB0ZWRYcHJ2MiA9IGF3YWl0IGJpdGdvLmVuY3J5cHQoeyBpbnB1dDogJ3hwcnYyJywgcGFzc3dvcmQ6IG90aGVyUGFzc3dvcmQgfSk7XG5cbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5wb3N0KCcvYXBpL3YxL3VzZXIvZW5jcnlwdGVkJylcbiAgICAgICAgLnJlcGx5KDIwMCwge1xuICAgICAgICAgIGtleWNoYWluczoge1xuICAgICAgICAgICAgeHB1YjE6IGVuY3J5cHRlZFhwcnYxLFxuICAgICAgICAgICAgeHB1YjI6IGVuY3J5cHRlZFhwcnYyLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdmVyc2lvbjogMSxcbiAgICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGV2ZW50czogQXJyYXk8eyBzdGF0dXM6IHN0cmluZzsgY3VycmVudEtleWNoYWluSWQ/OiBzdHJpbmcgfT4gPSBbXTtcbiAgICAgIGF3YWl0IGtleWNoYWlucy51cGRhdGVQYXNzd29yZCh7XG4gICAgICAgIG9sZFBhc3N3b3JkLFxuICAgICAgICBuZXdQYXNzd29yZCxcbiAgICAgICAgcHJvZ3Jlc3NDYWxsYmFjazogKHByb2dyZXNzKSA9PiBldmVudHMucHVzaChwcm9ncmVzcyksXG4gICAgICB9KTtcblxuICAgICAgZXZlbnRzLnNob3VsZC5oYXZlLmxlbmd0aCgyKTtcbiAgICAgIGV2ZW50cy5zaG91bGQuY29udGFpbkVxbCh7IHN0YXR1czogJ3VwZGF0ZWQnLCBjdXJyZW50S2V5Y2hhaW5JZDogJ3hwdWIxJyB9KTtcbiAgICAgIGV2ZW50cy5zaG91bGQuY29udGFpbkVxbCh7IHN0YXR1czogJ3NraXBwZWQnLCBjdXJyZW50S2V5Y2hhaW5JZDogJ3hwdWIyJyB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IGxldCBhIHRocm93aW5nIHByb2dyZXNzQ2FsbGJhY2sgYWZmZWN0IHRoZSByb3RhdGlvbiByZXN1bHQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBvbGRQYXNzd29yZCA9ICdvbGRQYXNzd29yZCc7XG4gICAgICBjb25zdCBuZXdQYXNzd29yZCA9ICduZXdQYXNzd29yZCc7XG5cbiAgICAgIGNvbnN0IGVuY3J5cHRlZFhwcnYxID0gYXdhaXQgYml0Z28uZW5jcnlwdCh7IGlucHV0OiAneHBydjEnLCBwYXNzd29yZDogb2xkUGFzc3dvcmQgfSk7XG5cbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5wb3N0KCcvYXBpL3YxL3VzZXIvZW5jcnlwdGVkJylcbiAgICAgICAgLnJlcGx5KDIwMCwge1xuICAgICAgICAgIGtleWNoYWluczoge1xuICAgICAgICAgICAgeHB1YjE6IGVuY3J5cHRlZFhwcnYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdmVyc2lvbjogMSxcbiAgICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGtleWNoYWlucy51cGRhdGVQYXNzd29yZCh7XG4gICAgICAgIG9sZFBhc3N3b3JkLFxuICAgICAgICBuZXdQYXNzd29yZCxcbiAgICAgICAgcHJvZ3Jlc3NDYWxsYmFjazogKCkgPT4ge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignb2JzZXJ2ZXIgYm9vbScpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGRlY3J5cHRlZFBydiA9IGF3YWl0IGJpdGdvLmRlY3J5cHQoeyBpbnB1dDogcmVzdWx0LmtleWNoYWlucy54cHViMSwgcGFzc3dvcmQ6IG5ld1Bhc3N3b3JkIH0pO1xuICAgICAgZGVjcnlwdGVkUHJ2LnNob3VsZC5lcXVhbCgneHBydjEnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYWZ0ZXIoZnVuY3Rpb24gYWZ0ZXJLZXljaGFpbnMoKSB7XG4gICAgbm9jay5wZW5kaW5nTW9ja3MoKS5zaG91bGQuYmUuZW1wdHkoKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -51,6 +51,18 @@ describe('Account Consolidations:', function () {
|
|
|
51
51
|
accountConsolidationBuild.length.should.equal(2);
|
|
52
52
|
scope.isDone().should.be.True();
|
|
53
53
|
});
|
|
54
|
+
it('should forward an explicit consolidation mode', async function () {
|
|
55
|
+
const scope = nock(bgUrl)
|
|
56
|
+
.post(`/api/v2/${wallet.coin()}/wallet/${wallet.id()}/consolidateAccount/build`, {
|
|
57
|
+
consolidationMode: 'single-asset',
|
|
58
|
+
})
|
|
59
|
+
.reply(200, fixtures.buildAccountConsolidation);
|
|
60
|
+
const accountConsolidationBuild = await wallet.buildAccountConsolidations({
|
|
61
|
+
consolidationMode: 'single-asset',
|
|
62
|
+
});
|
|
63
|
+
accountConsolidationBuild.length.should.equal(2);
|
|
64
|
+
scope.isDone().should.be.True();
|
|
65
|
+
});
|
|
54
66
|
it('should throw if the result is an empty array', async function () {
|
|
55
67
|
const scope = nock(bgUrl)
|
|
56
68
|
.post(`/api/v2/${wallet.coin()}/wallet/${wallet.id()}/consolidateAccount/build`)
|
|
@@ -98,6 +110,24 @@ describe('Account Consolidations:', function () {
|
|
|
98
110
|
sinon.assert.calledWith(sendAccountConsolidationStub, sinon.match({ apiVersion: 'full' }));
|
|
99
111
|
scope.isDone().should.be.True();
|
|
100
112
|
});
|
|
113
|
+
it('should forward consolidationMode when sending consolidations', async function () {
|
|
114
|
+
const scope = nock(bgUrl)
|
|
115
|
+
.post(`/api/v2/${wallet.coin()}/wallet/${wallet.id()}/consolidateAccount/build`, {
|
|
116
|
+
apiVersion: 'full',
|
|
117
|
+
consolidationMode: 'single-asset',
|
|
118
|
+
})
|
|
119
|
+
.reply(200, fixtures.buildAccountConsolidation);
|
|
120
|
+
const sendAccountConsolidationStub = sinon
|
|
121
|
+
.stub(wallet, 'sendAccountConsolidation')
|
|
122
|
+
.resolves(fixtures.signedAccountConsolidationBuilds);
|
|
123
|
+
sinon.stub(wallet, 'getKeychainsAndValidatePassphrase').resolves([]);
|
|
124
|
+
wallet.tssUtils = {
|
|
125
|
+
supportedTxRequestVersions: () => ['lite', 'full'],
|
|
126
|
+
};
|
|
127
|
+
await wallet.sendAccountConsolidations({ consolidationMode: 'single-asset' });
|
|
128
|
+
sinon.assert.called(sendAccountConsolidationStub);
|
|
129
|
+
scope.isDone().should.be.True();
|
|
130
|
+
});
|
|
101
131
|
it('should utilize codec for custodial consolidation', async function () {
|
|
102
132
|
const custodialWallet = new sdk_core_1.Wallet(bitgo, basecoin, {
|
|
103
133
|
id: '5f4168f4403d0c5c1c3bdd15486e757f',
|
|
@@ -235,4 +265,4 @@ describe('Account Consolidations:', function () {
|
|
|
235
265
|
});
|
|
236
266
|
}
|
|
237
267
|
});
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudENvbnNvbGlkYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC92Mi91bml0L2FjY291bnRDb25zb2xpZGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsRUFBRTtBQUNGLDhCQUE4QjtBQUM5QixFQUFFOztBQUVGLCtCQUErQjtBQUMvQixPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFeEIsMEJBQXdCO0FBQ3hCLDZCQUE4QjtBQUU5QixtREFBc0Q7QUFFdEQsbURBQWlEO0FBQ2pELDhDQUEyQztBQUMzQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsOENBQThDLENBQUMsQ0FBQztBQUU3RSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztBQUV6QixRQUFRLENBQUMseUJBQXlCLEVBQUU7SUFDbEMsSUFBSSxLQUFLLENBQUM7SUFDVixJQUFJLE1BQU0sQ0FBQztJQUNYLElBQUksUUFBUSxDQUFDO0lBQ2IsSUFBSSxLQUFLLENBQUM7SUFDVixJQUFJLFFBQVEsQ0FBQztJQUViLEtBQUssTUFBTSxRQUFRLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN6QyxRQUFRLENBQUMsUUFBUSxHQUFHLDJCQUEyQixFQUFFO1lBQy9DLE1BQU0sQ0FBQztnQkFDTCxLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsYUFBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ25ELEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMzQixRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFaEMsTUFBTSxVQUFVLEdBQUc7b0JBQ2pCLEVBQUUsRUFBRSxrQ0FBa0M7b0JBQ3RDLElBQUksRUFBRSxRQUFRO2lCQUNmLENBQUM7Z0JBRUYsTUFBTSxHQUFHLElBQUksaUJBQU0sQ0FBQyxLQUFL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YyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO29CQUNyRSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7b0JBQ3RFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUVqRSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vIEFjY291bnQgY29uc29saWRhdGlvbiB0ZXN0c1xuLy9cblxuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xucmVxdWlyZSgnc2hvdWxkLXNpbm9uJyk7XG5cbmltcG9ydCAnLi4vbGliL2Fzc2VydHMnO1xuaW1wb3J0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5cbmltcG9ydCB7IGNvbW1vbiwgV2FsbGV0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBUZXN0Qml0R28gfSBmcm9tICdAYml0Z28tYmV0YS9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHbyB9IGZyb20gJy4uLy4uLy4uL3NyYy9iaXRnbyc7XG5jb25zdCBhbGdvRml4dHVyZXMgPSByZXF1aXJlKCcuLi8uLi8uLi8uLi9zZGstY29pbi1hbGdvL3Rlc3QvZml4dHVyZXMvYWxnbycpO1xuXG5ub2NrLmRpc2FibGVOZXRDb25uZWN0KCk7XG5cbmRlc2NyaWJlKCdBY2NvdW50IENvbnNvbGlkYXRpb25zOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvO1xuICBsZXQgd2FsbGV0O1xuICBsZXQgYmFzZWNvaW47XG4gIGxldCBiZ1VybDtcbiAgbGV0IGZpeHR1cmVzO1xuXG4gIGZvciAoY29uc3QgY29pbk5hbWUgb2YgWyd0YWxnbycsICd0eHR6J10pIHtcbiAgICBkZXNjcmliZShjb2luTmFtZSArICcgQWNjb3VudCBDb25zb2xpZGF0aW9uczogJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R28sIHsgZW52OiAndGVzdCcgfSk7XG4gICAgICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgICAgICBiYXNlY29pbiA9IGJpdGdvLmNvaW4oY29pbk5hbWUpO1xuXG4gICAgICAgIGNvbnN0IHdhbGxldERhdGEgPSB7XG4gICAgICAgICAgaWQ6ICc1ZTQxNjhmNDQwM2QwYzVjMWMzYmRkMTU0ODZlNzU3ZicsXG4gICAgICAgICAgY29pbjogY29pbk5hbWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuICAgICAgICBiZ1VybCA9IGNvbW1vbi5FbnZpcm9ubWVudHNbYml0Z28uZ2V0RW52KCldLnVyaTtcbiAgICAgICAgaWYgKGNvaW5OYW1lID09PSAndGFsZ28nKSB7XG4gICAgICAgICAgZml4dHVyZXMgPSBhbGdvRml4dHVyZXMucHJlYnVpbGQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCdCdWlsZGluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBub3QgYWxsb3cgYSBub24tYWNjb3VudCBjb25zb2xpZGF0aW9uIGNvaW4gYnVpbGQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgdW5zdXBwb3J0ZWRDb2luID0gYml0Z28uY29pbigndGJ0YycpO1xuICAgICAgICAgIGNvbnN0IGludmFsaWRXYWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB1bnN1cHBvcnRlZENvaW4sIHt9KTtcbiAgICAgICAgICBhd2FpdCBpbnZhbGlkV2FsbGV0LmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb25zKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCh7XG4gICAgICAgICAgICBtZXNzYWdlOiBgJHt1bnN1cHBvcnRlZENvaW4uZ2V0RnVsbE5hbWUoKX0gZG9lcyBub3QgYWxsb3cgYWNjb3VudCBjb25zb2xpZGF0aW9ucy5gLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIGJ1aWxkIHdpdGggbm8gcGFyYW1zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHNjb3BlID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2NvbnNvbGlkYXRlQWNjb3VudC9idWlsZGApXG4gICAgICAgICAgICAucXVlcnkoe30pXG4gICAgICAgICAgICAucmVwbHkoMjAwLCBmaXh0dXJlcy5idWlsZEFjY291bnRDb25zb2xpZGF0aW9uKTtcblxuICAgICAgICAgIGNvbnN0IGFjY291bnRDb25zb2xpZGF0aW9uQnVpbGQgPSBhd2FpdCB3YWxsZXQuYnVpbGRBY2NvdW50Q29uc29saWRhdGlvbnMoKTtcblxuICAgICAgICAgIGFjY291bnRDb25zb2xpZGF0aW9uQnVpbGQubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcblxuICAgICAgICAgIHNjb3BlLmlzRG9uZSgpLnNob3VsZC5iZS5UcnVlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgdGhyb3cgaWYgdGhlIHJlc3VsdCBpcyBhbiBlbXB0eSBhcnJheScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBzY29wZSA9IG5vY2soYmdVcmwpXG4gICAgICAgICAgICAucG9zdChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS9jb25zb2xpZGF0ZUFjY291bnQvYnVpbGRgKVxuICAgICAgICAgICAgLnF1ZXJ5KHt9KVxuICAgICAgICAgICAgLnJlcGx5KDIwMCwgW10pO1xuXG4gICAgICAgICAgYXdhaXQgd2FsbGV0XG4gICAgICAgICAgICAuYnVpbGRBY2NvdW50Q29uc29saWRhdGlvbnMoKVxuICAgICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ05vIHJlY2VpdmUgYWRkcmVzc2VzIHdpdGggYmFsYW5jZSBmb3VuZCB0byBjb25zb2xpZGF0ZS4nKTtcblxuICAgICAgICAgIHNjb3BlLmlzRG9uZSgpLnNob3VsZC5iZS5UcnVlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCdTZW5kaW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCB1c2UgcGFyYW1zLmFwaVZlcnNpb24gaWYgc3BlY2lmaWVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHNjb3BlID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2NvbnNvbGlkYXRlQWNjb3VudC9idWlsZGAsIHsgYXBpVmVyc2lvbjogJ2xpdGUnIH0pXG4gICAgICAgICAgICAucmVwbHkoMjAwLCBmaXh0dXJlcy5idWlsZEFjY291bnRDb25zb2xpZGF0aW9uKTtcbiAgICAgICAgICBjb25zdCBzZW5kQWNjb3VudENvbnNvbGlkYXRpb25TdHViID0gc2lub25cbiAgICAgICAgICAgIC5zdHViKHdhbGxldCwgJ3NlbmRBY2NvdW50Q29uc29saWRhdGlvbicpXG4gICAgICAgICAgICAucmVzb2x2ZXMoZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZHMpO1xuICAgICAgICAgIHNpbm9uLnN0dWIod2FsbGV0LCAnZ2V0S2V5Y2hhaW5zQW5kVmFsaWRhdGVQYXNzcGhyYXNlJykucmVzb2x2ZXMoW10pO1xuXG4gICAgICAgICAgd2FsbGV0LnRzc1V0aWxzID0ge1xuICAgICAgICAgICAgc3VwcG9ydGVkVHhSZXF1ZXN0VmVyc2lvbnM6ICgpID0+IFsnbGl0ZScsICdmdWxsJ10sXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgYXBpVmVyc2lvbjogJ2xpdGUnIH07XG4gICAgICAgICAgYXdhaXQgd2FsbGV0LnNlbmRBY2NvdW50Q29uc29saWRhdGlvbnMocGFyYW1zKTtcbiAgICAgICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChzZW5kQWNjb3VudENvbnNvbGlkYXRpb25TdHViLCBzaW5vbi5tYXRjaCh7IGFwaVZlcnNpb246ICdsaXRlJyB9KSk7XG5cbiAgICAgICAgICBzY29wZS5pc0RvbmUoKS5zaG91bGQuYmUuVHJ1ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHVzZSBhcGlWZXJzaW9uIGZ1bGwgZm9yIHRoZSB0cmFuc2FjdGlvbiBpZiBpdCBpcyBzdXBwb3J0ZWQgYW5kIG5vIGFwaVZlcnNpb24gaXMgcGFzc2VkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHNjb3BlID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2NvbnNvbGlkYXRlQWNjb3VudC9idWlsZGAsIHsgYXBpVmVyc2lvbjogJ2Z1bGwnIH0pXG4gICAgICAgICAgICAucmVwbHkoMjAwLCBmaXh0dXJlcy5idWlsZEFjY291bnRDb25zb2xpZGF0aW9uKTtcbiAgICAgICAgICBjb25zdCBzZW5kQWNjb3VudENvbnNvbGlkYXRpb25TdHViID0gc2lub25cbiAgICAgICAgICAgIC5zdHViKHdhbGxldCwgJ3NlbmRBY2NvdW50Q29uc29saWRhdGlvbicpXG4gICAgICAgICAgICAucmVzb2x2ZXMoZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZHMpO1xuICAgICAgICAgIHNpbm9uLnN0dWIod2FsbGV0LCAnZ2V0S2V5Y2hhaW5zQW5kVmFsaWRhdGVQYXNzcGhyYXNlJykucmVzb2x2ZXMoW10pO1xuXG4gICAgICAgICAgd2FsbGV0LnRzc1V0aWxzID0ge1xuICAgICAgICAgICAgc3VwcG9ydGVkVHhSZXF1ZXN0VmVyc2lvbnM6ICgpID0+IFsnbGl0ZScsICdmdWxsJ10sXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgICAgICAgIGF3YWl0IHdhbGxldC5zZW5kQWNjb3VudENvbnNvbGlkYXRpb25zKHBhcmFtcyk7XG4gICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgoc2VuZEFjY291bnRDb25zb2xpZGF0aW9uU3R1Yiwgc2lub24ubWF0Y2goeyBhcGlWZXJzaW9uOiAnZnVsbCcgfSkpO1xuXG4gICAgICAgICAgc2NvcGUuaXNEb25lKCkuc2hvdWxkLmJlLlRydWUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCB1dGlsaXplIGNvZGVjIGZvciBjdXN0b2RpYWwgY29uc29saWRhdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBjdXN0b2RpYWxXYWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwge1xuICAgICAgICAgICAgaWQ6ICc1ZjQxNjhmNDQwM2QwYzVjMWMzYmRkMTU0ODZlNzU3ZicsXG4gICAgICAgICAgICBjb2luOiBjb2luTmFtZSxcbiAgICAgICAgICAgIHR5cGU6ICdjdXN0b2RpYWwnLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgaW5pdGlhdGVUeFBhdGggPSBgL2FwaS92Mi8ke2N1c3RvZGlhbFdhbGxldC5jb2luKCl9L3dhbGxldC8ke2N1c3RvZGlhbFdhbGxldC5pZCgpfS90eC9pbml0aWF0ZWA7XG4gICAgICAgICAgbGV0IHJlcTtcbiAgICAgICAgICBub2NrKGJnVXJsKVxuICAgICAgICAgICAgLnBvc3QoaW5pdGlhdGVUeFBhdGgsIChib2R5KSA9PiB7XG4gICAgICAgICAgICAgIHJlcSA9IGJvZHk7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZXBseSgyMDApO1xuXG4gICAgICAgICAgY29uc3QgcGFyYW1zID0geyBwcmVidWlsZFR4OiBmaXh0dXJlcy5idWlsZEFjY291bnRDb25zb2xpZGF0aW9uWzBdIH07XG4gICAgICAgICAgY29uc3QgcGFyYW1zV2l0aEp1bmsgPSB7IC4uLnBhcmFtcywganVuazogJ2p1bmsnLCBvdHA6ICcwMDAwMDAnIH07XG4gICAgICAgICAgY29uc3QgcGFyYW1zQWZ0ZXJDb2RlYyA9IHsgdHlwZTogJ2NvbnNvbGlkYXRlJywgb3RwOiAnMDAwMDAwJyB9O1xuXG4gICAgICAgICAgc2lub24uc3R1Yih3YWxsZXQsICdwcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbicpLnJlc29sdmVzKGZpeHR1cmVzLnNpZ25lZEFjY291bnRDb25zb2xpZGF0aW9uQnVpbGRzWzBdKTtcbiAgICAgICAgICBhd2FpdCBjdXN0b2RpYWxXYWxsZXQuc2VuZEFjY291bnRDb25zb2xpZGF0aW9uKHBhcmFtc1dpdGhKdW5rKTtcblxuICAgICAgICAgIHJlcS5zaG91bGQuZGVlcEVxdWFsKHBhcmFtc0FmdGVyQ29kZWMpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIG5vdCBhbGxvdyBhIG5vbi1hY2NvdW50IGNvbnNvbGlkYXRpb24gY29pbiBzZW5kJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHVuc3VwcG9ydGVkQ29pbiA9IGJpdGdvLmNvaW4oJ3RidGMnKTtcbiAgICAgICAgICBjb25zdCBpbnZhbGlkV2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgdW5zdXBwb3J0ZWRDb2luLCB7fSk7XG4gICAgICAgICAgYXdhaXQgaW52YWxpZFdhbGxldC5zZW5kQWNjb3VudENvbnNvbGlkYXRpb24oe30pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoe1xuICAgICAgICAgICAgbWVzc2FnZTogYCR7dW5zdXBwb3J0ZWRDb2luLmdldEZ1bGxOYW1lKCl9IGRvZXMgbm90IGFsbG93IGFjY291bnQgY29uc29saWRhdGlvbnMuYCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBub3QgYWxsb3cgYSBub24tYWNjb3VudCBjb25zb2xpZGF0aW9uIGNvaW4gc2VuZCBtdWx0aXBsZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgdW5zdXBwb3J0ZWRDb2luID0gYml0Z28uY29pbigndGJ0YycpO1xuICAgICAgICAgIGNvbnN0IGludmFsaWRXYWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB1bnN1cHBvcnRlZENvaW4sIHt9KTtcbiAgICAgICAgICBhd2FpdCBpbnZhbGlkV2FsbGV0LnNlbmRBY2NvdW50Q29uc29saWRhdGlvbnMoe30pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoe1xuICAgICAgICAgICAgbWVzc2FnZTogYCR7dW5zdXBwb3J0ZWRDb2luLmdldEZ1bGxOYW1lKCl9IGRvZXMgbm90IGFsbG93IGFjY291bnQgY29uc29saWRhdGlvbnMuYCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBub3QgYWxsb3cgYSBiYWQgcHJlLWJ1aWxkIHRvIGJlIHBhc3NlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhd2FpdCB3YWxsZXRcbiAgICAgICAgICAgIC5zZW5kQWNjb3VudENvbnNvbGlkYXRpb24oeyBwcmVidWlsZFR4OiAnc29tZSBzdHJpbmcnIH0pXG4gICAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCh7IG1lc3NhZ2U6ICdJbnZhbGlkIGJ1aWxkIG9mIGFjY291bnQgY29uc29saWRhdGlvbi4nIH0pO1xuICAgICAgICAgIGF3YWl0IHdhbGxldFxuICAgICAgICAgICAgLnNlbmRBY2NvdW50Q29uc29saWRhdGlvbih7IHByZWJ1aWxkVHg6IHVuZGVmaW5lZCB9KVxuICAgICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoeyBtZXNzYWdlOiAnSW52YWxpZCBidWlsZCBvZiBhY2NvdW50IGNvbnNvbGlkYXRpb24uJyB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCByZXF1aXJlIGEgY29uc29saWRhdGlvbiBpZCB0byBiZSBwYXNzZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgd2FsbGV0XG4gICAgICAgICAgICAuc2VuZEFjY291bnRDb25zb2xpZGF0aW9uKHsgcHJlYnVpbGRUeDoge30gfSlcbiAgICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKHsgbWVzc2FnZTogJ0ZhaWxlZCB0byBmaW5kIGNvbnNvbGlkYXRpb24gaWQgb24gY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbi4nIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHN1Ym1pdCBhIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgcGFyYW1zID0geyBwcmVidWlsZFR4OiBmaXh0dXJlcy5idWlsZEFjY291bnRDb25zb2xpZGF0aW9uWzBdIH07XG5cbiAgICAgICAgICBzaW5vbi5zdHViKHdhbGxldCwgJ3ByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uJykucmVzb2x2ZXMoZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZHNbMF0pO1xuXG4gICAgICAgICAgY29uc3Qgc2NvcGUgPSBub2NrKGJnVXJsKVxuICAgICAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vdHgvc2VuZGAsIGZpeHR1cmVzLnNpZ25lZEFjY291bnRDb25zb2xpZGF0aW9uQnVpbGQpXG4gICAgICAgICAgICAucmVwbHkoMjAwKTtcblxuICAgICAgICAgIGF3YWl0IHdhbGxldC5zZW5kQWNjb3VudENvbnNvbGlkYXRpb24ocGFyYW1zKTtcblxuICAgICAgICAgIHNjb3BlLmlzRG9uZSgpLnNob3VsZC5iZS5UcnVlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgc3VibWl0IGEgY29uc29saWRhdGlvbiBhY2NvdW50IHNlbmQgKGJ1aWxkICsgc2VuZCkgd2l0aCB0d28gc3VjY2Vzc2VzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHNjb3BlQnVpbGQgPSBub2NrKGJnVXJsKVxuICAgICAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vY29uc29saWRhdGVBY2NvdW50L2J1aWxkYClcbiAgICAgICAgICAgIC5xdWVyeSh7fSlcbiAgICAgICAgICAgIC5yZXBseSgyMDAsIGZpeHR1cmVzLmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb24pO1xuXG4gICAgICAgICAgc2lub25cbiAgICAgICAgICAgIC5zdHViKHdhbGxldCwgJ3ByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uJylcbiAgICAgICAgICAgIC5vbkNhbGwoMClcbiAgICAgICAgICAgIC5yZXNvbHZlcyhmaXh0dXJlcy5zaWduZWRBY2NvdW50Q29uc29saWRhdGlvbkJ1aWxkc1swXSlcbiAgICAgICAgICAgIC5vbkNhbGwoMSlcbiAgICAgICAgICAgIC5yZXNvbHZlcyhmaXh0dXJlcy5zaWduZWRBY2NvdW50Q29uc29saWRhdGlvbkJ1aWxkc1sxXSk7XG5cbiAgICAgICAgICBzaW5vbi5zdHViKHdhbGxldCwgJ2dldEtleWNoYWluc0FuZFZhbGlkYXRlUGFzc3BocmFzZScpLnJlc29sdmVzKFtdKTtcblxuICAgICAgICAgIGNvbnN0IHNjb3BlRmlyc3RTaWduZWQgPSBub2NrKGJnVXJsKVxuICAgICAgICAgICAgLnBvc3QoXG4gICAgICAgICAgICAgIGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L3R4L3NlbmRgLFxuICAgICAgICAgICAgICBmaXh0dXJlcy5zaWduZWRBY2NvdW50Q29uc29saWRhdGlvbkJ1aWxkc1swXVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlcGx5KDIwMCk7XG5cbiAgICAgICAgICBjb25zdCBzY29wZVR3b1NpZ25lZCA9IG5vY2soYmdVcmwpXG4gICAgICAgICAgICAucG9zdChcbiAgICAgICAgICAgICAgYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vdHgvc2VuZGAsXG4gICAgICAgICAgICAgIGZpeHR1cmVzLnNpZ25lZEFjY291bnRDb25zb2xpZGF0aW9uQnVpbGRzWzFdXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucmVwbHkoMjAwKTtcblxuICAgICAgICAgIGNvbnN0IGNvbnNvbGlkYXRpb25zID0gYXdhaXQgd2FsbGV0LnNlbmRBY2NvdW50Q29uc29saWRhdGlvbnMoKTtcblxuICAgICAgICAgIGNvbnNvbGlkYXRpb25zLnN1Y2Nlc3MubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcbiAgICAgICAgICBjb25zb2xpZGF0aW9ucy5mYWlsdXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG5cbiAgICAgICAgICBzY29wZUZpcnN0U2lnbmVkLmlzRG9uZSgpLnNob3VsZC5iZS5UcnVlKCk7XG4gICAgICAgICAgc2NvcGVUd29TaWduZWQuaXNEb25lKCkuc2hvdWxkLmJlLlRydWUoKTtcbiAgICAgICAgICBzY29wZUJ1aWxkLmlzRG9uZSgpLnNob3VsZC5iZS5UcnVlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgc3VibWl0IGEgY29uc29saWRhdGlvbiBhY2NvdW50IHNlbmQgKGJ1aWxkICsgc2VuZCkgd2l0aCBvbmUgc3VjY2Vzcywgb25lIGZhaWx1cmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3Qgc2NvcGVCdWlsZCA9IG5vY2soYmdVcmwpXG4gICAgICAgICAgICAucG9zdChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS9jb25zb2xpZGF0ZUFjY291bnQvYnVpbGRgKVxuICAgICAgICAgICAgLnF1ZXJ5KHt9KVxuICAgICAgICAgICAgLnJlcGx5KDIwMCwgZml4dHVyZXMuYnVpbGRBY2NvdW50Q29uc29saWRhdGlvbik7XG5cbiAgICAgICAgICBzaW5vblxuICAgICAgICAgICAgLnN0dWIod2FsbGV0LCAncHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24nKVxuICAgICAgICAgICAgLm9uQ2FsbCgwKVxuICAgICAgICAgICAgLnJlc29sdmVzKGZpeHR1cmVzLnNpZ25lZEFjY291bnRDb25zb2xpZGF0aW9uQnVpbGRzWzBdKVxuICAgICAgICAgICAgLm9uQ2FsbCgxKVxuICAgICAgICAgICAgLnJlc29sdmVzKGZpeHR1cmVzLnNpZ25lZEFjY291bnRDb25zb2xpZGF0aW9uQnVpbGRzWzFdKTtcblxuICAgICAgICAgIHNpbm9uLnN0dWIod2FsbGV0LCAnZ2V0S2V5Y2hhaW5zQW5kVmFsaWRhdGVQYXNzcGhyYXNlJykucmVzb2x2ZXMoW10pO1xuXG4gICAgICAgICAgY29uc3Qgc2NvcGVXaXRoU3VjY2VzcyA9IG5vY2soYmdVcmwpXG4gICAgICAgICAgICAucG9zdChcbiAgICAgICAgICAgICAgYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vdHgvc2VuZGAsXG4gICAgICAgICAgICAgIGZpeHR1cmVzLnNpZ25lZEFjY291bnRDb25zb2xpZGF0aW9uQnVpbGRzWzBdXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucmVwbHkoMjAwKTtcblxuICAgICAgICAgIGNvbnN0IHNjb3BlV2l0aEVycm9yID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KFxuICAgICAgICAgICAgICBgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS90eC9zZW5kYCxcbiAgICAgICAgICAgICAgZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZHNbMV1cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5yZXBseSg1MDApO1xuXG4gICAgICAgICAgY29uc3QgY29uc29saWRhdGlvbnMgPSBhd2FpdCB3YWxsZXQuc2VuZEFjY291bnRDb25zb2xpZGF0aW9ucygpO1xuXG4gICAgICAgICAgY29uc29saWRhdGlvbnMuc3VjY2Vzcy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgICAgIGNvbnNvbGlkYXRpb25zLmZhaWx1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgICAgICBjb25zb2xpZGF0aW9ucy5mYWlsdXJlWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtZXNzYWdlJyk7XG4gICAgICAgICAgY29uc29saWRhdGlvbnMuZmFpbHVyZVswXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbmFtZScpO1xuXG4gICAgICAgICAgc2NvcGVXaXRoU3VjY2Vzcy5pc0RvbmUoKS5zaG91bGQuYmUuVHJ1ZSgpO1xuICAgICAgICAgIHNjb3BlV2l0aEVycm9yLmlzRG9uZSgpLnNob3VsZC5iZS5UcnVlKCk7XG4gICAgICAgICAgc2NvcGVCdWlsZC5pc0RvbmUoKS5zaG91bGQuYmUuVHJ1ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBzZXJpYWxpemFibGUgZXJyb3Igb2JqZWN0cyBpbiB0aGUgZmFpbHVyZSBhcnJheScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBzY29wZUJ1aWxkID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2NvbnNvbGlkYXRlQWNjb3VudC9idWlsZGApXG4gICAgICAgICAgICAucXVlcnkoe30pXG4gICAgICAgICAgICAucmVwbHkoMjAwLCBmaXh0dXJlcy5idWlsZEFjY291bnRDb25zb2xpZGF0aW9uKTtcblxuICAgICAgICAgIHNpbm9uLnN0dWIod2FsbGV0LCAnZ2V0S2V5Y2hhaW5zQW5kVmFsaWRhdGVQYXNzcGhyYXNlJykucmVzb2x2ZXMoW10pO1xuXG4gICAgICAgICAgY29uc3QgZmlyc3RFcnJvciA9IG5ldyBFcnJvcigndW5hYmxlIHRvIGRlY3J5cHQga2V5Y2hhaW4gd2l0aCB0aGUgZ2l2ZW4gd2FsbGV0IHBhc3NwaHJhc2UnKTtcbiAgICAgICAgICBmaXJzdEVycm9yLm5hbWUgPSAnS2V5RGVjcnlwdGlvbkVycm9yJztcbiAgICAgICAgICBjb25zdCBzZWNvbmRFcnJvciA9IG5ldyBFcnJvcignaW5zdWZmaWNpZW50IGZ1bmRzJyk7XG4gICAgICAgICAgc2Vjb25kRXJyb3IubmFtZSA9ICdJbnN1ZmZpY2llbnRGdW5kc0Vycm9yJztcblxuICAgICAgICAgIHNpbm9uLnN0dWIod2FsbGV0LCAnc2VuZEFjY291bnRDb25zb2xpZGF0aW9uJykub25DYWxsKDApLnJlamVjdHMoZmlyc3RFcnJvcikub25DYWxsKDEpLnJlamVjdHMoc2Vjb25kRXJyb3IpO1xuXG4gICAgICAgICAgY29uc3QgY29uc29saWRhdGlvbnMgPSBhd2FpdCB3YWxsZXQuc2VuZEFjY291bnRDb25zb2xpZGF0aW9ucygpO1xuXG4gICAgICAgICAgY29uc29saWRhdGlvbnMuZmFpbHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuXG4gICAgICAgICAgLy8gZmFpbHVyZSBlbnRyaWVzIG11c3QgYmUgcGxhaW4gc2VyaWFsaXphYmxlIG9iamVjdHMsIG5vdCBFcnJvciBpbnN0YW5jZXNcbiAgICAgICAgICAoY29uc29saWRhdGlvbnMuZmFpbHVyZVswXSBpbnN0YW5jZW9mIEVycm9yKS5zaG91bGQuYmUuRmFsc2UoKTtcbiAgICAgICAgICBjb25zb2xpZGF0aW9ucy5mYWlsdXJlWzBdLm1lc3NhZ2Uuc2hvdWxkLmVxdWFsKCd1bmFibGUgdG8gZGVjcnlwdCBrZXljaGFpbiB3aXRoIHRoZSBnaXZlbiB3YWxsZXQgcGFzc3BocmFzZScpO1xuICAgICAgICAgIGNvbnNvbGlkYXRpb25zLmZhaWx1cmVbMF0ubmFtZS5zaG91bGQuZXF1YWwoJ0tleURlY3J5cHRpb25FcnJvcicpO1xuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGNvbnNvbGlkYXRpb25zLmZhaWx1cmVbMF0pLnNob3VsZC5ub3QuZXF1YWwoJ3t9Jyk7XG5cbiAgICAgICAgICAoY29uc29saWRhdGlvbnMuZmFpbHVyZVsxXSBpbnN0YW5jZW9mIEVycm9yKS5zaG91bGQuYmUuRmFsc2UoKTtcbiAgICAgICAgICBjb25zb2xpZGF0aW9ucy5mYWlsdXJlWzFdLm1lc3NhZ2Uuc2hvdWxkLmVxdWFsKCdpbnN1ZmZpY2llbnQgZnVuZHMnKTtcbiAgICAgICAgICBjb25zb2xpZGF0aW9ucy5mYWlsdXJlWzFdLm5hbWUuc2hvdWxkLmVxdWFsKCdJbnN1ZmZpY2llbnRGdW5kc0Vycm9yJyk7XG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoY29uc29saWRhdGlvbnMuZmFpbHVyZVsxXSkuc2hvdWxkLm5vdC5lcXVhbCgne30nKTtcblxuICAgICAgICAgIHNjb3BlQnVpbGQuaXNEb25lKCkuc2hvdWxkLmJlLlRydWUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSk7XG4iXX0=
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudENvbnNvbGlkYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC92Mi91bml0L2FjY291bnRDb25zb2xpZGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsRUFBRTtBQUNGLDhCQUE4QjtBQUM5QixFQUFFOztBQUVGLCtCQUErQjtBQUMvQixPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFeEIsMEJBQXdCO0FBQ3hCLDZCQUE4QjtBQUU5QixtREFBc0Q7QUFFdEQsbURBQWlEO0FBQ2pELDhDQUEyQztBQUMzQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsOENBQThDLENBQUMsQ0FBQztBQUU3RSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztBQUV6QixRQUFRLENBQUMseUJBQXlCLEVBQUU7SUFDbEMsSUFBSSxLQUFLLENBQUM7SUFDVixJQUFJLE1BQU0sQ0FBQztJQUNYLElBQUksUUFBUSxDQUFDO0lBQ2IsSUFBSSxLQUFLLENBQUM7SUFDVixJQUFJLFFBQVEsQ0FBQztJQUViLEtBQUssTUFBTSxRQUFRLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN6QyxRQUFRLENBQUMsUUFBUSxHQUFHLDJCQUEyQixFQUFFO1lBQy9DLE1BQU0sQ0FBQztnQkFDTCxLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsYUFBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ25ELEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMzQixRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFaEMsTUFBTSxVQUFVLEdBQUc7b0JBQ2pCLEVBQUUsRUFBRSxrQ0FBa0M7b0JBQ3RDLElBQUksRUFBRSxRQUFRO2lCQUNmLENBQUM7Z0JBRUYsTUFBTSxHQUFHLElBQUksaUJBQU0sQ0FBQyxLQUFL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QUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO29CQUM5RyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7b0JBQ2xFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUVqRSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDL0QsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO29CQUNyRSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7b0JBQ3RFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUVqRSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vIEFjY291bnQgY29uc29saWRhdGlvbiB0ZXN0c1xuLy9cblxuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xucmVxdWlyZSgnc2hvdWxkLXNpbm9uJyk7XG5cbmltcG9ydCAnLi4vbGliL2Fzc2VydHMnO1xuaW1wb3J0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5cbmltcG9ydCB7IGNvbW1vbiwgV2FsbGV0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBUZXN0Qml0R28gfSBmcm9tICdAYml0Z28tYmV0YS9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHbyB9IGZyb20gJy4uLy4uLy4uL3NyYy9iaXRnbyc7XG5jb25zdCBhbGdvRml4dHVyZXMgPSByZXF1aXJlKCcuLi8uLi8uLi8uLi9zZGstY29pbi1hbGdvL3Rlc3QvZml4dHVyZXMvYWxnbycpO1xuXG5ub2NrLmRpc2FibGVOZXRDb25uZWN0KCk7XG5cbmRlc2NyaWJlKCdBY2NvdW50IENvbnNvbGlkYXRpb25zOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvO1xuICBsZXQgd2FsbGV0O1xuICBsZXQgYmFzZWNvaW47XG4gIGxldCBiZ1VybDtcbiAgbGV0IGZpeHR1cmVzO1xuXG4gIGZvciAoY29uc3QgY29pbk5hbWUgb2YgWyd0YWxnbycsICd0eHR6J10pIHtcbiAgICBkZXNjcmliZShjb2luTmFtZSArICcgQWNjb3VudCBDb25zb2xpZGF0aW9uczogJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R28sIHsgZW52OiAndGVzdCcgfSk7XG4gICAgICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgICAgICBiYXNlY29pbiA9IGJpdGdvLmNvaW4oY29pbk5hbWUpO1xuXG4gICAgICAgIGNvbnN0IHdhbGxldERhdGEgPSB7XG4gICAgICAgICAgaWQ6ICc1ZTQxNjhmNDQwM2QwYzVjMWMzYmRkMTU0ODZlNzU3ZicsXG4gICAgICAgICAgY29pbjogY29pbk5hbWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuICAgICAgICBiZ1VybCA9IGNvbW1vbi5FbnZpcm9ubWVudHNbYml0Z28uZ2V0RW52KCldLnVyaTtcbiAgICAgICAgaWYgKGNvaW5OYW1lID09PSAndGFsZ28nKSB7XG4gICAgICAgICAgZml4dHVyZXMgPSBhbGdvRml4dHVyZXMucHJlYnVpbGQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCdCdWlsZGluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBub3QgYWxsb3cgYSBub24tYWNjb3VudCBjb25zb2xpZGF0aW9uIGNvaW4gYnVpbGQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgdW5zdXBwb3J0ZWRDb2luID0gYml0Z28uY29pbigndGJ0YycpO1xuICAgICAgICAgIGNvbnN0IGludmFsaWRXYWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB1bnN1cHBvcnRlZENvaW4sIHt9KTtcbiAgICAgICAgICBhd2FpdCBpbnZhbGlkV2FsbGV0LmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb25zKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCh7XG4gICAgICAgICAgICBtZXNzYWdlOiBgJHt1bnN1cHBvcnRlZENvaW4uZ2V0RnVsbE5hbWUoKX0gZG9lcyBub3QgYWxsb3cgYWNjb3VudCBjb25zb2xpZGF0aW9ucy5gLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIGJ1aWxkIHdpdGggbm8gcGFyYW1zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHNjb3BlID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2NvbnNvbGlkYXRlQWNjb3VudC9idWlsZGApXG4gICAgICAgICAgICAucXVlcnkoe30pXG4gICAgICAgICAgICAucmVwbHkoMjAwLCBmaXh0dXJlcy5idWlsZEFjY291bnRDb25zb2xpZGF0aW9uKTtcblxuICAgICAgICAgIGNvbnN0IGFjY291bnRDb25zb2xpZGF0aW9uQnVpbGQgPSBhd2FpdCB3YWxsZXQuYnVpbGRBY2NvdW50Q29uc29saWRhdGlvbnMoKTtcblxuICAgICAgICAgIGFjY291bnRDb25zb2xpZGF0aW9uQnVpbGQubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcblxuICAgICAgICAgIHNjb3BlLmlzRG9uZSgpLnNob3VsZC5iZS5UcnVlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIGZvcndhcmQgYW4gZXhwbGljaXQgY29uc29saWRhdGlvbiBtb2RlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHNjb3BlID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2NvbnNvbGlkYXRlQWNjb3VudC9idWlsZGAsIHtcbiAgICAgICAgICAgICAgY29uc29saWRhdGlvbk1vZGU6ICdzaW5nbGUtYXNzZXQnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZXBseSgyMDAsIGZpeHR1cmVzLmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb24pO1xuXG4gICAgICAgICAgY29uc3QgYWNjb3VudENvbnNvbGlkYXRpb25CdWlsZCA9IGF3YWl0IHdhbGxldC5idWlsZEFjY291bnRDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgICAgICBjb25zb2xpZGF0aW9uTW9kZTogJ3NpbmdsZS1hc3NldCcsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBhY2NvdW50Q29uc29saWRhdGlvbkJ1aWxkLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG4gICAgICAgICAgc2NvcGUuaXNEb25lKCkuc2hvdWxkLmJlLlRydWUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBpZiB0aGUgcmVzdWx0IGlzIGFuIGVtcHR5IGFycmF5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHNjb3BlID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2NvbnNvbGlkYXRlQWNjb3VudC9idWlsZGApXG4gICAgICAgICAgICAucXVlcnkoe30pXG4gICAgICAgICAgICAucmVwbHkoMjAwLCBbXSk7XG5cbiAgICAgICAgICBhd2FpdCB3YWxsZXRcbiAgICAgICAgICAgIC5idWlsZEFjY291bnRDb25zb2xpZGF0aW9ucygpXG4gICAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnTm8gcmVjZWl2ZSBhZGRyZXNzZXMgd2l0aCBiYWxhbmNlIGZvdW5kIHRvIGNvbnNvbGlkYXRlLicpO1xuXG4gICAgICAgICAgc2NvcGUuaXNEb25lKCkuc2hvdWxkLmJlLlRydWUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJ1NlbmRpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgc2lub24ucmVzdG9yZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHVzZSBwYXJhbXMuYXBpVmVyc2lvbiBpZiBzcGVjaWZpZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3Qgc2NvcGUgPSBub2NrKGJnVXJsKVxuICAgICAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vY29uc29saWRhdGVBY2NvdW50L2J1aWxkYCwgeyBhcGlWZXJzaW9uOiAnbGl0ZScgfSlcbiAgICAgICAgICAgIC5yZXBseSgyMDAsIGZpeHR1cmVzLmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb24pO1xuICAgICAgICAgIGNvbnN0IHNlbmRBY2NvdW50Q29uc29saWRhdGlvblN0dWIgPSBzaW5vblxuICAgICAgICAgICAgLnN0dWIod2FsbGV0LCAnc2VuZEFjY291bnRDb25zb2xpZGF0aW9uJylcbiAgICAgICAgICAgIC5yZXNvbHZlcyhmaXh0dXJlcy5zaWduZWRBY2NvdW50Q29uc29saWRhdGlvbkJ1aWxkcyk7XG4gICAgICAgICAgc2lub24uc3R1Yih3YWxsZXQsICdnZXRLZXljaGFpbnNBbmRWYWxpZGF0ZVBhc3NwaHJhc2UnKS5yZXNvbHZlcyhbXSk7XG5cbiAgICAgICAgICB3YWxsZXQudHNzVXRpbHMgPSB7XG4gICAgICAgICAgICBzdXBwb3J0ZWRUeFJlcXVlc3RWZXJzaW9uczogKCkgPT4gWydsaXRlJywgJ2Z1bGwnXSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgcGFyYW1zID0geyBhcGlWZXJzaW9uOiAnbGl0ZScgfTtcbiAgICAgICAgICBhd2FpdCB3YWxsZXQuc2VuZEFjY291bnRDb25zb2xpZGF0aW9ucyhwYXJhbXMpO1xuICAgICAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKHNlbmRBY2NvdW50Q29uc29saWRhdGlvblN0dWIsIHNpbm9uLm1hdGNoKHsgYXBpVmVyc2lvbjogJ2xpdGUnIH0pKTtcblxuICAgICAgICAgIHNjb3BlLmlzRG9uZSgpLnNob3VsZC5iZS5UcnVlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgdXNlIGFwaVZlcnNpb24gZnVsbCBmb3IgdGhlIHRyYW5zYWN0aW9uIGlmIGl0IGlzIHN1cHBvcnRlZCBhbmQgbm8gYXBpVmVyc2lvbiBpcyBwYXNzZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3Qgc2NvcGUgPSBub2NrKGJnVXJsKVxuICAgICAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vY29uc29saWRhdGVBY2NvdW50L2J1aWxkYCwgeyBhcGlWZXJzaW9uOiAnZnVsbCcgfSlcbiAgICAgICAgICAgIC5yZXBseSgyMDAsIGZpeHR1cmVzLmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb24pO1xuICAgICAgICAgIGNvbnN0IHNlbmRBY2NvdW50Q29uc29saWRhdGlvblN0dWIgPSBzaW5vblxuICAgICAgICAgICAgLnN0dWIod2FsbGV0LCAnc2VuZEFjY291bnRDb25zb2xpZGF0aW9uJylcbiAgICAgICAgICAgIC5yZXNvbHZlcyhmaXh0dXJlcy5zaWduZWRBY2NvdW50Q29uc29saWRhdGlvbkJ1aWxkcyk7XG4gICAgICAgICAgc2lub24uc3R1Yih3YWxsZXQsICdnZXRLZXljaGFpbnNBbmRWYWxpZGF0ZVBhc3NwaHJhc2UnKS5yZXNvbHZlcyhbXSk7XG5cbiAgICAgICAgICB3YWxsZXQudHNzVXRpbHMgPSB7XG4gICAgICAgICAgICBzdXBwb3J0ZWRUeFJlcXVlc3RWZXJzaW9uczogKCkgPT4gWydsaXRlJywgJ2Z1bGwnXSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgICAgICAgYXdhaXQgd2FsbGV0LnNlbmRBY2NvdW50Q29uc29saWRhdGlvbnMocGFyYW1zKTtcbiAgICAgICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChzZW5kQWNjb3VudENvbnNvbGlkYXRpb25TdHViLCBzaW5vbi5tYXRjaCh7IGFwaVZlcnNpb246ICdmdWxsJyB9KSk7XG5cbiAgICAgICAgICBzY29wZS5pc0RvbmUoKS5zaG91bGQuYmUuVHJ1ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBmb3J3YXJkIGNvbnNvbGlkYXRpb25Nb2RlIHdoZW4gc2VuZGluZyBjb25zb2xpZGF0aW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBzY29wZSA9IG5vY2soYmdVcmwpXG4gICAgICAgICAgICAucG9zdChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS9jb25zb2xpZGF0ZUFjY291bnQvYnVpbGRgLCB7XG4gICAgICAgICAgICAgIGFwaVZlcnNpb246ICdmdWxsJyxcbiAgICAgICAgICAgICAgY29uc29saWRhdGlvbk1vZGU6ICdzaW5nbGUtYXNzZXQnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZXBseSgyMDAsIGZpeHR1cmVzLmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb24pO1xuICAgICAgICAgIGNvbnN0IHNlbmRBY2NvdW50Q29uc29saWRhdGlvblN0dWIgPSBzaW5vblxuICAgICAgICAgICAgLnN0dWIod2FsbGV0LCAnc2VuZEFjY291bnRDb25zb2xpZGF0aW9uJylcbiAgICAgICAgICAgIC5yZXNvbHZlcyhmaXh0dXJlcy5zaWduZWRBY2NvdW50Q29uc29saWRhdGlvbkJ1aWxkcyk7XG4gICAgICAgICAgc2lub24uc3R1Yih3YWxsZXQsICdnZXRLZXljaGFpbnNBbmRWYWxpZGF0ZVBhc3NwaHJhc2UnKS5yZXNvbHZlcyhbXSk7XG5cbiAgICAgICAgICB3YWxsZXQudHNzVXRpbHMgPSB7XG4gICAgICAgICAgICBzdXBwb3J0ZWRUeFJlcXVlc3RWZXJzaW9uczogKCkgPT4gWydsaXRlJywgJ2Z1bGwnXSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgYXdhaXQgd2FsbGV0LnNlbmRBY2NvdW50Q29uc29saWRhdGlvbnMoeyBjb25zb2xpZGF0aW9uTW9kZTogJ3NpbmdsZS1hc3NldCcgfSk7XG4gICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZChzZW5kQWNjb3VudENvbnNvbGlkYXRpb25TdHViKTtcbiAgICAgICAgICBzY29wZS5pc0RvbmUoKS5zaG91bGQuYmUuVHJ1ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHV0aWxpemUgY29kZWMgZm9yIGN1c3RvZGlhbCBjb25zb2xpZGF0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGN1c3RvZGlhbFdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB7XG4gICAgICAgICAgICBpZDogJzVmNDE2OGY0NDAzZDBjNWMxYzNiZGQxNTQ4NmU3NTdmJyxcbiAgICAgICAgICAgIGNvaW46IGNvaW5OYW1lLFxuICAgICAgICAgICAgdHlwZTogJ2N1c3RvZGlhbCcsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBpbml0aWF0ZVR4UGF0aCA9IGAvYXBpL3YyLyR7Y3VzdG9kaWFsV2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7Y3VzdG9kaWFsV2FsbGV0LmlkKCl9L3R4L2luaXRpYXRlYDtcbiAgICAgICAgICBsZXQgcmVxO1xuICAgICAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgICAgICAucG9zdChpbml0aWF0ZVR4UGF0aCwgKGJvZHkpID0+IHtcbiAgICAgICAgICAgICAgcmVxID0gYm9keTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnJlcGx5KDIwMCk7XG5cbiAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IHByZWJ1aWxkVHg6IGZpeHR1cmVzLmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb25bMF0gfTtcbiAgICAgICAgICBjb25zdCBwYXJhbXNXaXRoSnVuayA9IHsgLi4ucGFyYW1zLCBqdW5rOiAnanVuaycsIG90cDogJzAwMDAwMCcgfTtcbiAgICAgICAgICBjb25zdCBwYXJhbXNBZnRlckNvZGVjID0geyB0eXBlOiAnY29uc29saWRhdGUnLCBvdHA6ICcwMDAwMDAnIH07XG5cbiAgICAgICAgICBzaW5vbi5zdHViKHdhbGxldCwgJ3ByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uJykucmVzb2x2ZXMoZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZHNbMF0pO1xuICAgICAgICAgIGF3YWl0IGN1c3RvZGlhbFdhbGxldC5zZW5kQWNjb3VudENvbnNvbGlkYXRpb24ocGFyYW1zV2l0aEp1bmspO1xuXG4gICAgICAgICAgcmVxLnNob3VsZC5kZWVwRXF1YWwocGFyYW1zQWZ0ZXJDb2RlYyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgbm90IGFsbG93IGEgbm9uLWFjY291bnQgY29uc29saWRhdGlvbiBjb2luIHNlbmQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgdW5zdXBwb3J0ZWRDb2luID0gYml0Z28uY29pbigndGJ0YycpO1xuICAgICAgICAgIGNvbnN0IGludmFsaWRXYWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB1bnN1cHBvcnRlZENvaW4sIHt9KTtcbiAgICAgICAgICBhd2FpdCBpbnZhbGlkV2FsbGV0LnNlbmRBY2NvdW50Q29uc29saWRhdGlvbih7fSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCh7XG4gICAgICAgICAgICBtZXNzYWdlOiBgJHt1bnN1cHBvcnRlZENvaW4uZ2V0RnVsbE5hbWUoKX0gZG9lcyBub3QgYWxsb3cgYWNjb3VudCBjb25zb2xpZGF0aW9ucy5gLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIG5vdCBhbGxvdyBhIG5vbi1hY2NvdW50IGNvbnNvbGlkYXRpb24gY29pbiBzZW5kIG11bHRpcGxlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCB1bnN1cHBvcnRlZENvaW4gPSBiaXRnby5jb2luKCd0YnRjJyk7XG4gICAgICAgICAgY29uc3QgaW52YWxpZFdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIHVuc3VwcG9ydGVkQ29pbiwge30pO1xuICAgICAgICAgIGF3YWl0IGludmFsaWRXYWxsZXQuc2VuZEFjY291bnRDb25zb2xpZGF0aW9ucyh7fSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCh7XG4gICAgICAgICAgICBtZXNzYWdlOiBgJHt1bnN1cHBvcnRlZENvaW4uZ2V0RnVsbE5hbWUoKX0gZG9lcyBub3QgYWxsb3cgYWNjb3VudCBjb25zb2xpZGF0aW9ucy5gLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIG5vdCBhbGxvdyBhIGJhZCBwcmUtYnVpbGQgdG8gYmUgcGFzc2VkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGF3YWl0IHdhbGxldFxuICAgICAgICAgICAgLnNlbmRBY2NvdW50Q29uc29saWRhdGlvbih7IHByZWJ1aWxkVHg6ICdzb21lIHN0cmluZycgfSlcbiAgICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKHsgbWVzc2FnZTogJ0ludmFsaWQgYnVpbGQgb2YgYWNjb3VudCBjb25zb2xpZGF0aW9uLicgfSk7XG4gICAgICAgICAgYXdhaXQgd2FsbGV0XG4gICAgICAgICAgICAuc2VuZEFjY291bnRDb25zb2xpZGF0aW9uKHsgcHJlYnVpbGRUeDogdW5kZWZpbmVkIH0pXG4gICAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCh7IG1lc3NhZ2U6ICdJbnZhbGlkIGJ1aWxkIG9mIGFjY291bnQgY29uc29saWRhdGlvbi4nIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHJlcXVpcmUgYSBjb25zb2xpZGF0aW9uIGlkIHRvIGJlIHBhc3NlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhd2FpdCB3YWxsZXRcbiAgICAgICAgICAgIC5zZW5kQWNjb3VudENvbnNvbGlkYXRpb24oeyBwcmVidWlsZFR4OiB7fSB9KVxuICAgICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoeyBtZXNzYWdlOiAnRmFpbGVkIHRvIGZpbmQgY29uc29saWRhdGlvbiBpZCBvbiBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9uLicgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgc3VibWl0IGEgY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IHByZWJ1aWxkVHg6IGZpeHR1cmVzLmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb25bMF0gfTtcblxuICAgICAgICAgIHNpbm9uLnN0dWIod2FsbGV0LCAncHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24nKS5yZXNvbHZlcyhmaXh0dXJlcy5zaWduZWRBY2NvdW50Q29uc29saWRhdGlvbkJ1aWxkc1swXSk7XG5cbiAgICAgICAgICBjb25zdCBzY29wZSA9IG5vY2soYmdVcmwpXG4gICAgICAgICAgICAucG9zdChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS90eC9zZW5kYCwgZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZClcbiAgICAgICAgICAgIC5yZXBseSgyMDApO1xuXG4gICAgICAgICAgYXdhaXQgd2FsbGV0LnNlbmRBY2NvdW50Q29uc29saWRhdGlvbihwYXJhbXMpO1xuXG4gICAgICAgICAgc2NvcGUuaXNEb25lKCkuc2hvdWxkLmJlLlRydWUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBzdWJtaXQgYSBjb25zb2xpZGF0aW9uIGFjY291bnQgc2VuZCAoYnVpbGQgKyBzZW5kKSB3aXRoIHR3byBzdWNjZXNzZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3Qgc2NvcGVCdWlsZCA9IG5vY2soYmdVcmwpXG4gICAgICAgICAgICAucG9zdChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS9jb25zb2xpZGF0ZUFjY291bnQvYnVpbGRgKVxuICAgICAgICAgICAgLnF1ZXJ5KHt9KVxuICAgICAgICAgICAgLnJlcGx5KDIwMCwgZml4dHVyZXMuYnVpbGRBY2NvdW50Q29uc29saWRhdGlvbik7XG5cbiAgICAgICAgICBzaW5vblxuICAgICAgICAgICAgLnN0dWIod2FsbGV0LCAncHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24nKVxuICAgICAgICAgICAgLm9uQ2FsbCgwKVxuICAgICAgICAgICAgLnJlc29sdmVzKGZpeHR1cmVzLnNpZ25lZEFjY291bnRDb25zb2xpZGF0aW9uQnVpbGRzWzBdKVxuICAgICAgICAgICAgLm9uQ2FsbCgxKVxuICAgICAgICAgICAgLnJlc29sdmVzKGZpeHR1cmVzLnNpZ25lZEFjY291bnRDb25zb2xpZGF0aW9uQnVpbGRzWzFdKTtcblxuICAgICAgICAgIHNpbm9uLnN0dWIod2FsbGV0LCAnZ2V0S2V5Y2hhaW5zQW5kVmFsaWRhdGVQYXNzcGhyYXNlJykucmVzb2x2ZXMoW10pO1xuXG4gICAgICAgICAgY29uc3Qgc2NvcGVGaXJzdFNpZ25lZCA9IG5vY2soYmdVcmwpXG4gICAgICAgICAgICAucG9zdChcbiAgICAgICAgICAgICAgYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vdHgvc2VuZGAsXG4gICAgICAgICAgICAgIGZpeHR1cmVzLnNpZ25lZEFjY291bnRDb25zb2xpZGF0aW9uQnVpbGRzWzBdXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucmVwbHkoMjAwKTtcblxuICAgICAgICAgIGNvbnN0IHNjb3BlVHdvU2lnbmVkID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KFxuICAgICAgICAgICAgICBgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS90eC9zZW5kYCxcbiAgICAgICAgICAgICAgZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZHNbMV1cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5yZXBseSgyMDApO1xuXG4gICAgICAgICAgY29uc3QgY29uc29saWRhdGlvbnMgPSBhd2FpdCB3YWxsZXQuc2VuZEFjY291bnRDb25zb2xpZGF0aW9ucygpO1xuXG4gICAgICAgICAgY29uc29saWRhdGlvbnMuc3VjY2Vzcy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuICAgICAgICAgIGNvbnNvbGlkYXRpb25zLmZhaWx1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcblxuICAgICAgICAgIHNjb3BlRmlyc3RTaWduZWQuaXNEb25lKCkuc2hvdWxkLmJlLlRydWUoKTtcbiAgICAgICAgICBzY29wZVR3b1NpZ25lZC5pc0RvbmUoKS5zaG91bGQuYmUuVHJ1ZSgpO1xuICAgICAgICAgIHNjb3BlQnVpbGQuaXNEb25lKCkuc2hvdWxkLmJlLlRydWUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBzdWJtaXQgYSBjb25zb2xpZGF0aW9uIGFjY291bnQgc2VuZCAoYnVpbGQgKyBzZW5kKSB3aXRoIG9uZSBzdWNjZXNzLCBvbmUgZmFpbHVyZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBzY29wZUJ1aWxkID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2NvbnNvbGlkYXRlQWNjb3VudC9idWlsZGApXG4gICAgICAgICAgICAucXVlcnkoe30pXG4gICAgICAgICAgICAucmVwbHkoMjAwLCBmaXh0dXJlcy5idWlsZEFjY291bnRDb25zb2xpZGF0aW9uKTtcblxuICAgICAgICAgIHNpbm9uXG4gICAgICAgICAgICAuc3R1Yih3YWxsZXQsICdwcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbicpXG4gICAgICAgICAgICAub25DYWxsKDApXG4gICAgICAgICAgICAucmVzb2x2ZXMoZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZHNbMF0pXG4gICAgICAgICAgICAub25DYWxsKDEpXG4gICAgICAgICAgICAucmVzb2x2ZXMoZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZHNbMV0pO1xuXG4gICAgICAgICAgc2lub24uc3R1Yih3YWxsZXQsICdnZXRLZXljaGFpbnNBbmRWYWxpZGF0ZVBhc3NwaHJhc2UnKS5yZXNvbHZlcyhbXSk7XG5cbiAgICAgICAgICBjb25zdCBzY29wZVdpdGhTdWNjZXNzID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KFxuICAgICAgICAgICAgICBgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS90eC9zZW5kYCxcbiAgICAgICAgICAgICAgZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZHNbMF1cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5yZXBseSgyMDApO1xuXG4gICAgICAgICAgY29uc3Qgc2NvcGVXaXRoRXJyb3IgPSBub2NrKGJnVXJsKVxuICAgICAgICAgICAgLnBvc3QoXG4gICAgICAgICAgICAgIGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L3R4L3NlbmRgLFxuICAgICAgICAgICAgICBmaXh0dXJlcy5zaWduZWRBY2NvdW50Q29uc29saWRhdGlvbkJ1aWxkc1sxXVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlcGx5KDUwMCk7XG5cbiAgICAgICAgICBjb25zdCBjb25zb2xpZGF0aW9ucyA9IGF3YWl0IHdhbGxldC5zZW5kQWNjb3VudENvbnNvbGlkYXRpb25zKCk7XG5cbiAgICAgICAgICBjb25zb2xpZGF0aW9ucy5zdWNjZXNzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICAgICAgY29uc29saWRhdGlvbnMuZmFpbHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgICAgIGNvbnNvbGlkYXRpb25zLmZhaWx1cmVbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ21lc3NhZ2UnKTtcbiAgICAgICAgICBjb25zb2xpZGF0aW9ucy5mYWlsdXJlWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCduYW1lJyk7XG5cbiAgICAgICAgICBzY29wZVdpdGhTdWNjZXNzLmlzRG9uZSgpLnNob3VsZC5iZS5UcnVlKCk7XG4gICAgICAgICAgc2NvcGVXaXRoRXJyb3IuaXNEb25lKCkuc2hvdWxkLmJlLlRydWUoKTtcbiAgICAgICAgICBzY29wZUJ1aWxkLmlzRG9uZSgpLnNob3VsZC5iZS5UcnVlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHNlcmlhbGl6YWJsZSBlcnJvciBvYmplY3RzIGluIHRoZSBmYWlsdXJlIGFycmF5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHNjb3BlQnVpbGQgPSBub2NrKGJnVXJsKVxuICAgICAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vY29uc29saWRhdGVBY2NvdW50L2J1aWxkYClcbiAgICAgICAgICAgIC5xdWVyeSh7fSlcbiAgICAgICAgICAgIC5yZXBseSgyMDAsIGZpeHR1cmVzLmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb24pO1xuXG4gICAgICAgICAgc2lub24uc3R1Yih3YWxsZXQsICdnZXRLZXljaGFpbnNBbmRWYWxpZGF0ZVBhc3NwaHJhc2UnKS5yZXNvbHZlcyhbXSk7XG5cbiAgICAgICAgICBjb25zdCBmaXJzdEVycm9yID0gbmV3IEVycm9yKCd1bmFibGUgdG8gZGVjcnlwdCBrZXljaGFpbiB3aXRoIHRoZSBnaXZlbiB3YWxsZXQgcGFzc3BocmFzZScpO1xuICAgICAgICAgIGZpcnN0RXJyb3IubmFtZSA9ICdLZXlEZWNyeXB0aW9uRXJyb3InO1xuICAgICAgICAgIGNvbnN0IHNlY29uZEVycm9yID0gbmV3IEVycm9yKCdpbnN1ZmZpY2llbnQgZnVuZHMnKTtcbiAgICAgICAgICBzZWNvbmRFcnJvci5uYW1lID0gJ0luc3VmZmljaWVudEZ1bmRzRXJyb3InO1xuXG4gICAgICAgICAgc2lub24uc3R1Yih3YWxsZXQsICdzZW5kQWNjb3VudENvbnNvbGlkYXRpb24nKS5vbkNhbGwoMCkucmVqZWN0cyhmaXJzdEVycm9yKS5vbkNhbGwoMSkucmVqZWN0cyhzZWNvbmRFcnJvcik7XG5cbiAgICAgICAgICBjb25zdCBjb25zb2xpZGF0aW9ucyA9IGF3YWl0IHdhbGxldC5zZW5kQWNjb3VudENvbnNvbGlkYXRpb25zKCk7XG5cbiAgICAgICAgICBjb25zb2xpZGF0aW9ucy5mYWlsdXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG5cbiAgICAgICAgICAvLyBmYWlsdXJlIGVudHJpZXMgbXVzdCBiZSBwbGFpbiBzZXJpYWxpemFibGUgb2JqZWN0cywgbm90IEVycm9yIGluc3RhbmNlc1xuICAgICAgICAgIChjb25zb2xpZGF0aW9ucy5mYWlsdXJlWzBdIGluc3RhbmNlb2YgRXJyb3IpLnNob3VsZC5iZS5GYWxzZSgpO1xuICAgICAgICAgIGNvbnNvbGlkYXRpb25zLmZhaWx1cmVbMF0ubWVzc2FnZS5zaG91bGQuZXF1YWwoJ3VuYWJsZSB0byBkZWNyeXB0IGtleWNoYWluIHdpdGggdGhlIGdpdmVuIHdhbGxldCBwYXNzcGhyYXNlJyk7XG4gICAgICAgICAgY29uc29saWRhdGlvbnMuZmFpbHVyZVswXS5uYW1lLnNob3VsZC5lcXVhbCgnS2V5RGVjcnlwdGlvbkVycm9yJyk7XG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoY29uc29saWRhdGlvbnMuZmFpbHVyZVswXSkuc2hvdWxkLm5vdC5lcXVhbCgne30nKTtcblxuICAgICAgICAgIChjb25zb2xpZGF0aW9ucy5mYWlsdXJlWzFdIGluc3RhbmNlb2YgRXJyb3IpLnNob3VsZC5iZS5GYWxzZSgpO1xuICAgICAgICAgIGNvbnNvbGlkYXRpb25zLmZhaWx1cmVbMV0ubWVzc2FnZS5zaG91bGQuZXF1YWwoJ2luc3VmZmljaWVudCBmdW5kcycpO1xuICAgICAgICAgIGNvbnNvbGlkYXRpb25zLmZhaWx1cmVbMV0ubmFtZS5zaG91bGQuZXF1YWwoJ0luc3VmZmljaWVudEZ1bmRzRXJyb3InKTtcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShjb25zb2xpZGF0aW9ucy5mYWlsdXJlWzFdKS5zaG91bGQubm90LmVxdWFsKCd7fScpO1xuXG4gICAgICAgICAgc2NvcGVCdWlsZC5pc0RvbmUoKS5zaG91bGQuYmUuVHJ1ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59KTtcbiJdfQ==
|