@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.
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
2
  name: package/dist/browser/BitGoJS.min.js
3
- size: 41743002 bytes
4
- sha256: 915db0732f256ea25656f2898863da477e50b50296a049528fa4721764177a3b
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.2202",
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.1701",
49
- "@bitgo-beta/abstract-utxo": "1.1.1-beta.2315",
50
- "@bitgo-beta/account-lib": "2.20.1-beta.2273",
51
- "@bitgo-beta/sdk-api": "1.10.1-beta.2080",
52
- "@bitgo-beta/sdk-coin-ada": "2.3.14-beta.2078",
53
- "@bitgo-beta/sdk-coin-algo": "2.8.9-beta.558",
54
- "@bitgo-beta/sdk-coin-apechain": "1.0.1-beta.1137",
55
- "@bitgo-beta/sdk-coin-apt": "1.0.1-beta.1519",
56
- "@bitgo-beta/sdk-coin-arbeth": "1.0.1-beta.1933",
57
- "@bitgo-beta/sdk-coin-asi": "1.0.1-beta.1165",
58
- "@bitgo-beta/sdk-coin-atom": "3.1.2-beta.2074",
59
- "@bitgo-beta/sdk-coin-avaxc": "1.1.1-beta.2301",
60
- "@bitgo-beta/sdk-coin-avaxp": "5.7.3-beta.393",
61
- "@bitgo-beta/sdk-coin-baby": "1.0.1-beta.1421",
62
- "@bitgo-beta/sdk-coin-bch": "1.1.1-beta.2302",
63
- "@bitgo-beta/sdk-coin-bcha": "1.1.1-beta.2302",
64
- "@bitgo-beta/sdk-coin-bera": "1.0.1-beta.1931",
65
- "@bitgo-beta/sdk-coin-bld": "1.0.1-beta.2039",
66
- "@bitgo-beta/sdk-coin-bsc": "1.0.1-beta.2302",
67
- "@bitgo-beta/sdk-coin-bsv": "1.1.1-beta.2303",
68
- "@bitgo-beta/sdk-coin-btc": "1.0.2-beta.2303",
69
- "@bitgo-beta/sdk-coin-btg": "1.1.1-beta.2301",
70
- "@bitgo-beta/sdk-coin-canton": "1.0.1-beta.849",
71
- "@bitgo-beta/sdk-coin-celo": "1.1.1-beta.2300",
72
- "@bitgo-beta/sdk-coin-coredao": "1.0.0-beta.1510",
73
- "@bitgo-beta/sdk-coin-coreum": "1.0.1-beta.1919",
74
- "@bitgo-beta/sdk-coin-cosmos": "1.0.0-beta.1058",
75
- "@bitgo-beta/sdk-coin-cronos": "1.0.1-beta.1210",
76
- "@bitgo-beta/sdk-coin-cspr": "1.2.19-beta.2077",
77
- "@bitgo-beta/sdk-coin-dash": "1.1.1-beta.2303",
78
- "@bitgo-beta/sdk-coin-doge": "1.0.2-beta.2303",
79
- "@bitgo-beta/sdk-coin-dot": "2.2.8-beta.2077",
80
- "@bitgo-beta/sdk-coin-eos": "1.3.19-beta.2074",
81
- "@bitgo-beta/sdk-coin-etc": "1.0.2-beta.2300",
82
- "@bitgo-beta/sdk-coin-eth": "4.4.1-beta.2073",
83
- "@bitgo-beta/sdk-coin-ethlike": "2.5.1-beta.593",
84
- "@bitgo-beta/sdk-coin-ethw": "20.0.76-beta.1239",
85
- "@bitgo-beta/sdk-coin-evm": "1.0.1-beta.1137",
86
- "@bitgo-beta/sdk-coin-flr": "1.0.1-beta.1416",
87
- "@bitgo-beta/sdk-coin-flrp": "1.0.1-beta.924",
88
- "@bitgo-beta/sdk-coin-hash": "1.0.1-beta.2035",
89
- "@bitgo-beta/sdk-coin-hbar": "1.0.2-beta.2304",
90
- "@bitgo-beta/sdk-coin-icp": "1.0.1-beta.1432",
91
- "@bitgo-beta/sdk-coin-initia": "1.1.1-beta.1191",
92
- "@bitgo-beta/sdk-coin-injective": "1.1.3-beta.2029",
93
- "@bitgo-beta/sdk-coin-iota": "1.0.1-beta.958",
94
- "@bitgo-beta/sdk-coin-islm": "1.0.1-beta.1932",
95
- "@bitgo-beta/sdk-coin-kaspa": "0.0.1-beta.370",
96
- "@bitgo-beta/sdk-coin-lnbtc": "1.0.1-beta.1690",
97
- "@bitgo-beta/sdk-coin-ltc": "1.1.1-beta.2302",
98
- "@bitgo-beta/sdk-coin-mon": "1.0.1-beta.1248",
99
- "@bitgo-beta/sdk-coin-near": "1.3.19-beta.2075",
100
- "@bitgo-beta/sdk-coin-oas": "1.0.1-beta.1511",
101
- "@bitgo-beta/sdk-coin-opeth": "1.0.1-beta.1930",
102
- "@bitgo-beta/sdk-coin-osmo": "1.0.1-beta.2060",
103
- "@bitgo-beta/sdk-coin-pearl": "0.0.1-beta.155",
104
- "@bitgo-beta/sdk-coin-polygon": "1.0.2-beta.2303",
105
- "@bitgo-beta/sdk-coin-polyx": "1.0.1-beta.1275",
106
- "@bitgo-beta/sdk-coin-rbtc": "1.1.1-beta.2300",
107
- "@bitgo-beta/sdk-coin-rune": "1.0.0-beta.1543",
108
- "@bitgo-beta/sdk-coin-sei": "1.0.1-beta.2030",
109
- "@bitgo-beta/sdk-coin-sgb": "1.1.1-beta.1417",
110
- "@bitgo-beta/sdk-coin-sol": "7.6.4-beta.723",
111
- "@bitgo-beta/sdk-coin-soneium": "1.0.1-beta.1226",
112
- "@bitgo-beta/sdk-coin-starknet": "0.0.1-beta.313",
113
- "@bitgo-beta/sdk-coin-stt": "1.0.1-beta.1235",
114
- "@bitgo-beta/sdk-coin-stx": "1.1.1-beta.2308",
115
- "@bitgo-beta/sdk-coin-sui": "3.0.3-beta.2072",
116
- "@bitgo-beta/sdk-coin-tao": "1.0.0-beta.1441",
117
- "@bitgo-beta/sdk-coin-tempo": "1.0.1-beta.608",
118
- "@bitgo-beta/sdk-coin-tia": "3.1.8-beta.1044",
119
- "@bitgo-beta/sdk-coin-ton": "1.0.1-beta.1939",
120
- "@bitgo-beta/sdk-coin-trx": "1.0.2-beta.2306",
121
- "@bitgo-beta/sdk-coin-vet": "1.0.1-beta.1190",
122
- "@bitgo-beta/sdk-coin-wemix": "1.0.1-beta.1408",
123
- "@bitgo-beta/sdk-coin-world": "1.0.1-beta.1236",
124
- "@bitgo-beta/sdk-coin-xdc": "1.0.1-beta.1417",
125
- "@bitgo-beta/sdk-coin-xlm": "2.0.5-beta.2070",
126
- "@bitgo-beta/sdk-coin-xrp": "1.1.1-beta.2303",
127
- "@bitgo-beta/sdk-coin-xtz": "1.1.1-beta.2306",
128
- "@bitgo-beta/sdk-coin-zec": "1.1.1-beta.2303",
129
- "@bitgo-beta/sdk-coin-zeta": "1.0.1-beta.1995",
130
- "@bitgo-beta/sdk-coin-zketh": "1.0.1-beta.1860",
131
- "@bitgo-beta/sdk-core": "8.2.1-beta.2091",
132
- "@bitgo-beta/sdk-lib-mpc": "8.2.0-beta.2100",
133
- "@bitgo-beta/sjcl": "1.0.2-beta.2354",
134
- "@bitgo-beta/statics": "15.1.1-beta.2119",
135
- "@bitgo-beta/unspents": "0.13.2-beta.2097",
136
- "@bitgo-beta/utxo-lib": "8.0.3-beta.2101",
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.1667",
147
- "@bitgo-beta/sdk-test": "^9.1.83",
148
- "@bitgo/public-types": "6.79.0",
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": "dd43f4347efb400454ca6978edfbca1d6bde4dfc",
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudENvbnNvbGlkYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC92Mi91bml0L2FjY291bnRDb25zb2xpZGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsRUFBRTtBQUNGLDhCQUE4QjtBQUM5QixFQUFFOztBQUVGLCtCQUErQjtBQUMvQixPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFeEIsMEJBQXdCO0FBQ3hCLDZCQUE4QjtBQUU5QixtREFBc0Q7QUFFdEQsbURBQWlEO0FBQ2pELDhDQUEyQztBQUMzQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsOENBQThDLENBQUMsQ0FBQztBQUU3RSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztBQUV6QixRQUFRLENBQUMseUJBQXlCLEVBQUU7SUFDbEMsSUFBSSxLQUFLLENBQUM7SUFDVixJQUFJLE1BQU0sQ0FBQztJQUNYLElBQUksUUFBUSxDQUFDO0lBQ2IsSUFBSSxLQUFLLENBQUM7SUFDVixJQUFJLFFBQVEsQ0FBQztJQUViLEtBQUssTUFBTSxRQUFRLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN6QyxRQUFRLENBQUMsUUFBUSxHQUFHLDJCQUEyQixFQUFFO1lBQy9DLE1BQU0sQ0FBQztnQkFDTCxLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsYUFBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ25ELEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMzQixRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFaEMsTUFBTSxVQUFVLEdBQUc7b0JBQ2pCLEVBQUUsRUFBRSxrQ0FBa0M7b0JBQ3RDLElBQUksRUFBRSxRQUFRO2lCQUNmLENBQUM7Z0JBRUYsTUFBTSxHQUFHLElBQUksaUJBQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUNqRCxLQUFLLEdBQUcsaUJBQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUNoRCxJQUFJLFFBQVEsS0FBSyxPQUFPLEVBQUUsQ0FBQztvQkFDekIsUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDckMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsUUFBUSxDQUFDLFVBQVUsRUFBRTtnQkFDbkIsRUFBRSxDQUFDLHlEQUF5RCxFQUFFLEtBQUs7b0JBQ2pFLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzNDLE1BQU0sYUFBYSxHQUFHLElBQUksaUJBQU0sQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUM3RCxNQUFNLGFBQWEsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDO3dCQUN0RSxPQUFPLEVBQUUsR0FBRyxlQUFlLENBQUMsV0FBVyxFQUFFLHlDQUF5QztxQkFDbkYsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUVILEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxLQUFLO29CQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO3lCQUN0QixJQUFJLENBQUMsV0FBVyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsTUFBTSxDQUFDLEVBQUUsRUFBRSwyQkFBMkIsQ0FBQzt5QkFDL0UsS0FBSyxDQUFDLEVBQUUsQ0FBQzt5QkFDVCxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO29CQUVsRCxNQUFNLHlCQUF5QixHQUFHLE1BQU0sTUFBTSxDQUFDLDBCQUEwQixFQUFFLENBQUM7b0JBRTVFLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUVqRCxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsRUFBRSxDQUFDLCtDQUErQyxFQUFFLEtBQUs7b0JBQ3ZELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7eUJBQ3RCLElBQUksQ0FBQyxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxNQUFNLENBQUMsRUFBRSxFQUFFLDJCQUEyQixFQUFFO3dCQUMvRSxpQkFBaUIsRUFBRSxjQUFjO3FCQUNsQyxDQUFDO3lCQUNELEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQUM7b0JBRWxELE1BQU0seUJBQXlCLEdBQUcsTUFBTSxNQUFNLENBQUMsMEJBQTBCLENBQUM7d0JBQ3hFLGlCQUFpQixFQUFFLGNBQWM7cUJBQ2xDLENBQUMsQ0FBQztvQkFFSCx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakQsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLENBQUMsQ0FBQyxDQUFDO2dCQUVILEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxLQUFLO29CQUN0RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO3lCQUN0QixJQUFJLENBQUMsV0FBVyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsTUFBTSxDQUFDLEVBQUUsRUFBRSwyQkFBMkIsQ0FBQzt5QkFDL0UsS0FBSyxDQUFDLEVBQUUsQ0FBQzt5QkFDVCxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUVsQixNQUFNLE1BQU07eUJBQ1QsMEJBQTBCLEVBQUU7eUJBQzVCLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHlEQUF5RCxDQUFDLENBQUM7b0JBRXJGLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNsQyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsUUFBUSxDQUFDLFNBQVMsRUFBRTtnQkFDbEIsU0FBUyxDQUFDO29CQUNSLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbEIsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsRUFBRSxDQUFDLDJDQUEyQyxFQUFFLEtBQUs7b0JBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7eUJBQ3RCLElBQUksQ0FBQyxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxNQUFNLENBQUMsRUFBRSxFQUFFLDJCQUEyQixFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO3lCQUN2RyxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO29CQUNsRCxNQUFNLDRCQUE0QixHQUFHLEtBQUs7eUJBQ3ZDLElBQUksQ0FBQyxNQUFNLEVBQUUsMEJBQTBCLENBQUM7eUJBQ3hDLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztvQkFDdkQsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsbUNBQW1DLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBRXJFLE1BQU0sQ0FBQyxRQUFRLEdBQUc7d0JBQ2hCLDBCQUEwQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztxQkFDbkQsQ0FBQztvQkFFRixNQUFNLE1BQU0sR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDdEMsTUFBTSxNQUFNLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQy9DLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLDRCQUE0QixFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUUzRixLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsRUFBRSxDQUFDLCtGQUErRixFQUFFLEtBQUs7b0JBQ3ZHLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7eUJBQ3RCLElBQUksQ0FBQyxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxNQUFNLENBQUMsRUFBRSxFQUFFLDJCQUEyQixFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO3lCQUN2RyxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO29CQUNsRCxNQUFNLDRCQUE0QixHQUFHLEtBQUs7eUJBQ3ZDLElBQUksQ0FBQyxNQUFNLEVBQUUsMEJBQTBCLENBQUM7eUJBQ3hDLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztvQkFDdkQsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsbUNBQW1DLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBRXJFLE1BQU0sQ0FBQyxRQUFRLEdBQUc7d0JBQ2hCLDBCQUEwQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztxQkFDbkQsQ0FBQztvQkFFRixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7b0JBQ2xCLE1BQU0sTUFBTSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUMvQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFFM0YsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLENBQUMsQ0FBQyxDQUFDO2dCQUNILEVBQUUsQ0FBQyw4REFBOEQsRUFBRSxLQUFLO29CQUN0RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO3lCQUN0QixJQUFJLENBQUMsV0FBVyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsTUFBTSxDQUFDLEVBQUUsRUFBRSwyQkFBMkIsRUFBRTt3QkFDL0UsVUFBVSxFQUFFLE1BQU07d0JBQ2xCLGlCQUFpQixFQUFFLGNBQWM7cUJBQ2xDLENBQUM7eUJBQ0QsS0FBSyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztvQkFDbEQsTUFBTSw0QkFBNEIsR0FBRyxLQUFLO3lCQUN2QyxJQUFJLENBQUMsTUFBTSxFQUFFLDBCQUEwQixDQUFDO3lCQUN4QyxRQUFRLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7b0JBQ3ZELEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLG1DQUFtQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUVyRSxNQUFNLENBQUMsUUFBUSxHQUFHO3dCQUNoQiwwQkFBMEIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7cUJBQ25ELENBQUM7b0JBRUYsTUFBTSxNQUFNLENBQUMseUJBQXlCLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO29CQUM5RSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO29CQUNsRCxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsRUFBRSxDQUFDLGtEQUFrRCxFQUFFLEtBQUs7b0JBQzFELE1BQU0sZUFBZSxHQUFHLElBQUksaUJBQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFO3dCQUNsRCxFQUFFLEVBQUUsa0NBQWtDO3dCQUN0QyxJQUFJLEVBQUUsUUFBUTt3QkFDZCxJQUFJLEVBQUUsV0FBVztxQkFDbEIsQ0FBQyxDQUFDO29CQUVILE1BQU0sY0FBYyxHQUFHLFdBQVcsZUFBZSxDQUFDLElBQUksRUFBRSxXQUFXLGVBQWUsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDO29CQUN0RyxJQUFJLEdBQUcsQ0FBQztvQkFDUixJQUFJLENBQUMsS0FBSyxDQUFDO3lCQUNSLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTt3QkFDN0IsR0FBRyxHQUFHLElBQUksQ0FBQzt3QkFDWCxPQUFPLElBQUksQ0FBQztvQkFDZCxDQUFDLENBQUM7eUJBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUVkLE1BQU0sTUFBTSxHQUFHLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNyRSxNQUFNLGNBQWMsR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDO29CQUNsRSxNQUFNLGdCQUFnQixHQUFHLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUM7b0JBRWhFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLDRCQUE0QixDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN4RyxNQUFNLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFFL0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDekMsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsRUFBRSxDQUFDLHdEQUF3RCxFQUFFLEtBQUs7b0JBQ2hFLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzNDLE1BQU0sYUFBYSxHQUFHLElBQUksaUJBQU0sQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUM3RCxNQUFNLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQzt3QkFDdEUsT0FBTyxFQUFFLEdBQUcsZUFBZSxDQUFDLFdBQVcsRUFBRSx5Q0FBeUM7cUJBQ25GLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFFSCxFQUFFLENBQUMsa0VBQWtFLEVBQUUsS0FBSztvQkFDMUUsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDM0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxpQkFBTSxDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzdELE1BQU0sYUFBYSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDO3dCQUN2RSxPQUFPLEVBQUUsR0FBRyxlQUFlLENBQUMsV0FBVyxFQUFFLHlDQUF5QztxQkFDbkYsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUVILEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxLQUFLO29CQUN2RCxNQUFNLE1BQU07eUJBQ1Qsd0JBQXdCLENBQUMsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUM7eUJBQ3ZELE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLENBQUMsQ0FBQztvQkFDbEYsTUFBTSxNQUFNO3lCQUNULHdCQUF3QixDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDO3lCQUNuRCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3BGLENBQUMsQ0FBQyxDQUFDO2dCQUVILEVBQUUsQ0FBQyxnREFBZ0QsRUFBRSxLQUFLO29CQUN4RCxNQUFNLE1BQU07eUJBQ1Qsd0JBQXdCLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUM7eUJBQzVDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUFFLCtEQUErRCxFQUFFLENBQUMsQ0FBQztnQkFDMUcsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsRUFBRSxDQUFDLDJDQUEyQyxFQUFFLEtBQUs7b0JBQ25ELE1BQU0sTUFBTSxHQUFHLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUVyRSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSw0QkFBNEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFFeEcsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzt5QkFDdEIsSUFBSSxDQUFDLFdBQVcsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLE1BQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQzt5QkFDeEcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUVkLE1BQU0sTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUU5QyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsRUFBRSxDQUFDLDhFQUE4RSxFQUFFLEtBQUs7b0JBQ3RGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7eUJBQzNCLElBQUksQ0FBQyxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxNQUFNLENBQUMsRUFBRSxFQUFFLDJCQUEyQixDQUFDO3lCQUMvRSxLQUFLLENBQUMsRUFBRSxDQUFDO3lCQUNULEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQUM7b0JBRWxELEtBQUs7eUJBQ0YsSUFBSSxDQUFDLE1BQU0sRUFBRSw0QkFBNEIsQ0FBQzt5QkFDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQzt5QkFDVCxRQUFRLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3lCQUN0RCxNQUFNLENBQUMsQ0FBQyxDQUFDO3lCQUNULFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFFMUQsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsbUNBQW1DLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBRXJFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzt5QkFDakMsSUFBSSxDQUNILFdBQVcsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLE1BQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUN4RCxRQUFRLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLENBQzdDO3lCQUNBLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFFZCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO3lCQUMvQixJQUFJLENBQ0gsV0FBVyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsTUFBTSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQ3hELFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMsQ0FDN0M7eUJBQ0EsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUVkLE1BQU0sY0FBYyxHQUFHLE1BQU0sTUFBTSxDQUFDLHlCQUF5QixFQUFFLENBQUM7b0JBRWhFLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlDLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBRTlDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzNDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUN6QyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsRUFBRSxDQUFDLHlGQUF5RixFQUFFLEtBQUs7b0JBQ2pHLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7eUJBQzNCLElBQUksQ0FBQyxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxNQUFNLENBQUMsRUFBRSxFQUFFLDJCQUEyQixDQUFDO3lCQUMvRSxLQUFLLENBQUMsRUFBRSxDQUFDO3lCQUNULEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQUM7b0JBRWxELEtBQUs7eUJBQ0YsSUFBSSxDQUFDLE1BQU0sRUFBRSw0QkFBNEIsQ0FBQzt5QkFDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQzt5QkFDVCxRQUFRLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3lCQUN0RCxNQUFNLENBQUMsQ0FBQyxDQUFDO3lCQUNULFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFFMUQsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsbUNBQW1DLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBRXJFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzt5QkFDakMsSUFBSSxDQUNILFdBQVcsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLE1BQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUN4RCxRQUFRLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLENBQzdDO3lCQUNBLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFFZCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO3lCQUMvQixJQUFJLENBQ0gsV0FBVyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsTUFBTSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQ3hELFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMsQ0FDN0M7eUJBQ0EsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUVkLE1BQU0sY0FBYyxHQUFHLE1BQU0sTUFBTSxDQUFDLHlCQUF5QixFQUFFLENBQUM7b0JBRWhFLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlDLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQzFELGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBRXZELGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzNDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUN6QyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsRUFBRSxDQUFDLCtEQUErRCxFQUFFLEtBQUs7b0JBQ3ZFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7eUJBQzNCLElBQUksQ0FBQyxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxNQUFNLENBQUMsRUFBRSxFQUFFLDJCQUEyQixDQUFDO3lCQUMvRSxLQUFLLENBQUMsRUFBRSxDQUFDO3lCQUNULEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQUM7b0JBRWxELEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLG1DQUFtQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUVyRSxNQUFNLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO29CQUM1RixVQUFVLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDO29CQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO29CQUNwRCxXQUFXLENBQUMsSUFBSSxHQUFHLHdCQUF3QixDQUFDO29CQUU1QyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSwwQkFBMEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFFNUcsTUFBTSxjQUFjLEdBQUcsTUFBTSxNQUFNLENBQUMseUJBQXlCLEVBQUUsQ0FBQztvQkFFaEUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFFOUMsMEVBQTBFO29CQUMxRSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDL0QsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO29CQUM5RyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7b0JBQ2xFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUVqRSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDL0QsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO29CQUNyRSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7b0JBQ3RFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUVqRSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vIEFjY291bnQgY29uc29saWRhdGlvbiB0ZXN0c1xuLy9cblxuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xucmVxdWlyZSgnc2hvdWxkLXNpbm9uJyk7XG5cbmltcG9ydCAnLi4vbGliL2Fzc2VydHMnO1xuaW1wb3J0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5cbmltcG9ydCB7IGNvbW1vbiwgV2FsbGV0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBUZXN0Qml0R28gfSBmcm9tICdAYml0Z28tYmV0YS9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHbyB9IGZyb20gJy4uLy4uLy4uL3NyYy9iaXRnbyc7XG5jb25zdCBhbGdvRml4dHVyZXMgPSByZXF1aXJlKCcuLi8uLi8uLi8uLi9zZGstY29pbi1hbGdvL3Rlc3QvZml4dHVyZXMvYWxnbycpO1xuXG5ub2NrLmRpc2FibGVOZXRDb25uZWN0KCk7XG5cbmRlc2NyaWJlKCdBY2NvdW50IENvbnNvbGlkYXRpb25zOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvO1xuICBsZXQgd2FsbGV0O1xuICBsZXQgYmFzZWNvaW47XG4gIGxldCBiZ1VybDtcbiAgbGV0IGZpeHR1cmVzO1xuXG4gIGZvciAoY29uc3QgY29pbk5hbWUgb2YgWyd0YWxnbycsICd0eHR6J10pIHtcbiAgICBkZXNjcmliZShjb2luTmFtZSArICcgQWNjb3VudCBDb25zb2xpZGF0aW9uczogJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R28sIHsgZW52OiAndGVzdCcgfSk7XG4gICAgICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgICAgICBiYXNlY29pbiA9IGJpdGdvLmNvaW4oY29pbk5hbWUpO1xuXG4gICAgICAgIGNvbnN0IHdhbGxldERhdGEgPSB7XG4gICAgICAgICAgaWQ6ICc1ZTQxNjhmNDQwM2QwYzVjMWMzYmRkMTU0ODZlNzU3ZicsXG4gICAgICAgICAgY29pbjogY29pbk5hbWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgd2FsbGV0ID0gbmV3IFdhbGxldChiaXRnbywgYmFzZWNvaW4sIHdhbGxldERhdGEpO1xuICAgICAgICBiZ1VybCA9IGNvbW1vbi5FbnZpcm9ubWVudHNbYml0Z28uZ2V0RW52KCldLnVyaTtcbiAgICAgICAgaWYgKGNvaW5OYW1lID09PSAndGFsZ28nKSB7XG4gICAgICAgICAgZml4dHVyZXMgPSBhbGdvRml4dHVyZXMucHJlYnVpbGQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCdCdWlsZGluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBub3QgYWxsb3cgYSBub24tYWNjb3VudCBjb25zb2xpZGF0aW9uIGNvaW4gYnVpbGQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgdW5zdXBwb3J0ZWRDb2luID0gYml0Z28uY29pbigndGJ0YycpO1xuICAgICAgICAgIGNvbnN0IGludmFsaWRXYWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB1bnN1cHBvcnRlZENvaW4sIHt9KTtcbiAgICAgICAgICBhd2FpdCBpbnZhbGlkV2FsbGV0LmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb25zKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCh7XG4gICAgICAgICAgICBtZXNzYWdlOiBgJHt1bnN1cHBvcnRlZENvaW4uZ2V0RnVsbE5hbWUoKX0gZG9lcyBub3QgYWxsb3cgYWNjb3VudCBjb25zb2xpZGF0aW9ucy5gLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIGJ1aWxkIHdpdGggbm8gcGFyYW1zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHNjb3BlID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2NvbnNvbGlkYXRlQWNjb3VudC9idWlsZGApXG4gICAgICAgICAgICAucXVlcnkoe30pXG4gICAgICAgICAgICAucmVwbHkoMjAwLCBmaXh0dXJlcy5idWlsZEFjY291bnRDb25zb2xpZGF0aW9uKTtcblxuICAgICAgICAgIGNvbnN0IGFjY291bnRDb25zb2xpZGF0aW9uQnVpbGQgPSBhd2FpdCB3YWxsZXQuYnVpbGRBY2NvdW50Q29uc29saWRhdGlvbnMoKTtcblxuICAgICAgICAgIGFjY291bnRDb25zb2xpZGF0aW9uQnVpbGQubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcblxuICAgICAgICAgIHNjb3BlLmlzRG9uZSgpLnNob3VsZC5iZS5UcnVlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIGZvcndhcmQgYW4gZXhwbGljaXQgY29uc29saWRhdGlvbiBtb2RlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHNjb3BlID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2NvbnNvbGlkYXRlQWNjb3VudC9idWlsZGAsIHtcbiAgICAgICAgICAgICAgY29uc29saWRhdGlvbk1vZGU6ICdzaW5nbGUtYXNzZXQnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZXBseSgyMDAsIGZpeHR1cmVzLmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb24pO1xuXG4gICAgICAgICAgY29uc3QgYWNjb3VudENvbnNvbGlkYXRpb25CdWlsZCA9IGF3YWl0IHdhbGxldC5idWlsZEFjY291bnRDb25zb2xpZGF0aW9ucyh7XG4gICAgICAgICAgICBjb25zb2xpZGF0aW9uTW9kZTogJ3NpbmdsZS1hc3NldCcsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBhY2NvdW50Q29uc29saWRhdGlvbkJ1aWxkLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG4gICAgICAgICAgc2NvcGUuaXNEb25lKCkuc2hvdWxkLmJlLlRydWUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBpZiB0aGUgcmVzdWx0IGlzIGFuIGVtcHR5IGFycmF5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHNjb3BlID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2NvbnNvbGlkYXRlQWNjb3VudC9idWlsZGApXG4gICAgICAgICAgICAucXVlcnkoe30pXG4gICAgICAgICAgICAucmVwbHkoMjAwLCBbXSk7XG5cbiAgICAgICAgICBhd2FpdCB3YWxsZXRcbiAgICAgICAgICAgIC5idWlsZEFjY291bnRDb25zb2xpZGF0aW9ucygpXG4gICAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnTm8gcmVjZWl2ZSBhZGRyZXNzZXMgd2l0aCBiYWxhbmNlIGZvdW5kIHRvIGNvbnNvbGlkYXRlLicpO1xuXG4gICAgICAgICAgc2NvcGUuaXNEb25lKCkuc2hvdWxkLmJlLlRydWUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJ1NlbmRpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgc2lub24ucmVzdG9yZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHVzZSBwYXJhbXMuYXBpVmVyc2lvbiBpZiBzcGVjaWZpZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3Qgc2NvcGUgPSBub2NrKGJnVXJsKVxuICAgICAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vY29uc29saWRhdGVBY2NvdW50L2J1aWxkYCwgeyBhcGlWZXJzaW9uOiAnbGl0ZScgfSlcbiAgICAgICAgICAgIC5yZXBseSgyMDAsIGZpeHR1cmVzLmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb24pO1xuICAgICAgICAgIGNvbnN0IHNlbmRBY2NvdW50Q29uc29saWRhdGlvblN0dWIgPSBzaW5vblxuICAgICAgICAgICAgLnN0dWIod2FsbGV0LCAnc2VuZEFjY291bnRDb25zb2xpZGF0aW9uJylcbiAgICAgICAgICAgIC5yZXNvbHZlcyhmaXh0dXJlcy5zaWduZWRBY2NvdW50Q29uc29saWRhdGlvbkJ1aWxkcyk7XG4gICAgICAgICAgc2lub24uc3R1Yih3YWxsZXQsICdnZXRLZXljaGFpbnNBbmRWYWxpZGF0ZVBhc3NwaHJhc2UnKS5yZXNvbHZlcyhbXSk7XG5cbiAgICAgICAgICB3YWxsZXQudHNzVXRpbHMgPSB7XG4gICAgICAgICAgICBzdXBwb3J0ZWRUeFJlcXVlc3RWZXJzaW9uczogKCkgPT4gWydsaXRlJywgJ2Z1bGwnXSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgcGFyYW1zID0geyBhcGlWZXJzaW9uOiAnbGl0ZScgfTtcbiAgICAgICAgICBhd2FpdCB3YWxsZXQuc2VuZEFjY291bnRDb25zb2xpZGF0aW9ucyhwYXJhbXMpO1xuICAgICAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKHNlbmRBY2NvdW50Q29uc29saWRhdGlvblN0dWIsIHNpbm9uLm1hdGNoKHsgYXBpVmVyc2lvbjogJ2xpdGUnIH0pKTtcblxuICAgICAgICAgIHNjb3BlLmlzRG9uZSgpLnNob3VsZC5iZS5UcnVlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgdXNlIGFwaVZlcnNpb24gZnVsbCBmb3IgdGhlIHRyYW5zYWN0aW9uIGlmIGl0IGlzIHN1cHBvcnRlZCBhbmQgbm8gYXBpVmVyc2lvbiBpcyBwYXNzZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3Qgc2NvcGUgPSBub2NrKGJnVXJsKVxuICAgICAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vY29uc29saWRhdGVBY2NvdW50L2J1aWxkYCwgeyBhcGlWZXJzaW9uOiAnZnVsbCcgfSlcbiAgICAgICAgICAgIC5yZXBseSgyMDAsIGZpeHR1cmVzLmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb24pO1xuICAgICAgICAgIGNvbnN0IHNlbmRBY2NvdW50Q29uc29saWRhdGlvblN0dWIgPSBzaW5vblxuICAgICAgICAgICAgLnN0dWIod2FsbGV0LCAnc2VuZEFjY291bnRDb25zb2xpZGF0aW9uJylcbiAgICAgICAgICAgIC5yZXNvbHZlcyhmaXh0dXJlcy5zaWduZWRBY2NvdW50Q29uc29saWRhdGlvbkJ1aWxkcyk7XG4gICAgICAgICAgc2lub24uc3R1Yih3YWxsZXQsICdnZXRLZXljaGFpbnNBbmRWYWxpZGF0ZVBhc3NwaHJhc2UnKS5yZXNvbHZlcyhbXSk7XG5cbiAgICAgICAgICB3YWxsZXQudHNzVXRpbHMgPSB7XG4gICAgICAgICAgICBzdXBwb3J0ZWRUeFJlcXVlc3RWZXJzaW9uczogKCkgPT4gWydsaXRlJywgJ2Z1bGwnXSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgICAgICAgYXdhaXQgd2FsbGV0LnNlbmRBY2NvdW50Q29uc29saWRhdGlvbnMocGFyYW1zKTtcbiAgICAgICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChzZW5kQWNjb3VudENvbnNvbGlkYXRpb25TdHViLCBzaW5vbi5tYXRjaCh7IGFwaVZlcnNpb246ICdmdWxsJyB9KSk7XG5cbiAgICAgICAgICBzY29wZS5pc0RvbmUoKS5zaG91bGQuYmUuVHJ1ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBmb3J3YXJkIGNvbnNvbGlkYXRpb25Nb2RlIHdoZW4gc2VuZGluZyBjb25zb2xpZGF0aW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBzY29wZSA9IG5vY2soYmdVcmwpXG4gICAgICAgICAgICAucG9zdChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS9jb25zb2xpZGF0ZUFjY291bnQvYnVpbGRgLCB7XG4gICAgICAgICAgICAgIGFwaVZlcnNpb246ICdmdWxsJyxcbiAgICAgICAgICAgICAgY29uc29saWRhdGlvbk1vZGU6ICdzaW5nbGUtYXNzZXQnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZXBseSgyMDAsIGZpeHR1cmVzLmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb24pO1xuICAgICAgICAgIGNvbnN0IHNlbmRBY2NvdW50Q29uc29saWRhdGlvblN0dWIgPSBzaW5vblxuICAgICAgICAgICAgLnN0dWIod2FsbGV0LCAnc2VuZEFjY291bnRDb25zb2xpZGF0aW9uJylcbiAgICAgICAgICAgIC5yZXNvbHZlcyhmaXh0dXJlcy5zaWduZWRBY2NvdW50Q29uc29saWRhdGlvbkJ1aWxkcyk7XG4gICAgICAgICAgc2lub24uc3R1Yih3YWxsZXQsICdnZXRLZXljaGFpbnNBbmRWYWxpZGF0ZVBhc3NwaHJhc2UnKS5yZXNvbHZlcyhbXSk7XG5cbiAgICAgICAgICB3YWxsZXQudHNzVXRpbHMgPSB7XG4gICAgICAgICAgICBzdXBwb3J0ZWRUeFJlcXVlc3RWZXJzaW9uczogKCkgPT4gWydsaXRlJywgJ2Z1bGwnXSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgYXdhaXQgd2FsbGV0LnNlbmRBY2NvdW50Q29uc29saWRhdGlvbnMoeyBjb25zb2xpZGF0aW9uTW9kZTogJ3NpbmdsZS1hc3NldCcgfSk7XG4gICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZChzZW5kQWNjb3VudENvbnNvbGlkYXRpb25TdHViKTtcbiAgICAgICAgICBzY29wZS5pc0RvbmUoKS5zaG91bGQuYmUuVHJ1ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHV0aWxpemUgY29kZWMgZm9yIGN1c3RvZGlhbCBjb25zb2xpZGF0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGN1c3RvZGlhbFdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIGJhc2Vjb2luLCB7XG4gICAgICAgICAgICBpZDogJzVmNDE2OGY0NDAzZDBjNWMxYzNiZGQxNTQ4NmU3NTdmJyxcbiAgICAgICAgICAgIGNvaW46IGNvaW5OYW1lLFxuICAgICAgICAgICAgdHlwZTogJ2N1c3RvZGlhbCcsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBpbml0aWF0ZVR4UGF0aCA9IGAvYXBpL3YyLyR7Y3VzdG9kaWFsV2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7Y3VzdG9kaWFsV2FsbGV0LmlkKCl9L3R4L2luaXRpYXRlYDtcbiAgICAgICAgICBsZXQgcmVxO1xuICAgICAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgICAgICAucG9zdChpbml0aWF0ZVR4UGF0aCwgKGJvZHkpID0+IHtcbiAgICAgICAgICAgICAgcmVxID0gYm9keTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnJlcGx5KDIwMCk7XG5cbiAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IHByZWJ1aWxkVHg6IGZpeHR1cmVzLmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb25bMF0gfTtcbiAgICAgICAgICBjb25zdCBwYXJhbXNXaXRoSnVuayA9IHsgLi4ucGFyYW1zLCBqdW5rOiAnanVuaycsIG90cDogJzAwMDAwMCcgfTtcbiAgICAgICAgICBjb25zdCBwYXJhbXNBZnRlckNvZGVjID0geyB0eXBlOiAnY29uc29saWRhdGUnLCBvdHA6ICcwMDAwMDAnIH07XG5cbiAgICAgICAgICBzaW5vbi5zdHViKHdhbGxldCwgJ3ByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uJykucmVzb2x2ZXMoZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZHNbMF0pO1xuICAgICAgICAgIGF3YWl0IGN1c3RvZGlhbFdhbGxldC5zZW5kQWNjb3VudENvbnNvbGlkYXRpb24ocGFyYW1zV2l0aEp1bmspO1xuXG4gICAgICAgICAgcmVxLnNob3VsZC5kZWVwRXF1YWwocGFyYW1zQWZ0ZXJDb2RlYyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgbm90IGFsbG93IGEgbm9uLWFjY291bnQgY29uc29saWRhdGlvbiBjb2luIHNlbmQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgdW5zdXBwb3J0ZWRDb2luID0gYml0Z28uY29pbigndGJ0YycpO1xuICAgICAgICAgIGNvbnN0IGludmFsaWRXYWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCB1bnN1cHBvcnRlZENvaW4sIHt9KTtcbiAgICAgICAgICBhd2FpdCBpbnZhbGlkV2FsbGV0LnNlbmRBY2NvdW50Q29uc29saWRhdGlvbih7fSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCh7XG4gICAgICAgICAgICBtZXNzYWdlOiBgJHt1bnN1cHBvcnRlZENvaW4uZ2V0RnVsbE5hbWUoKX0gZG9lcyBub3QgYWxsb3cgYWNjb3VudCBjb25zb2xpZGF0aW9ucy5gLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIG5vdCBhbGxvdyBhIG5vbi1hY2NvdW50IGNvbnNvbGlkYXRpb24gY29pbiBzZW5kIG11bHRpcGxlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCB1bnN1cHBvcnRlZENvaW4gPSBiaXRnby5jb2luKCd0YnRjJyk7XG4gICAgICAgICAgY29uc3QgaW52YWxpZFdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z28sIHVuc3VwcG9ydGVkQ29pbiwge30pO1xuICAgICAgICAgIGF3YWl0IGludmFsaWRXYWxsZXQuc2VuZEFjY291bnRDb25zb2xpZGF0aW9ucyh7fSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCh7XG4gICAgICAgICAgICBtZXNzYWdlOiBgJHt1bnN1cHBvcnRlZENvaW4uZ2V0RnVsbE5hbWUoKX0gZG9lcyBub3QgYWxsb3cgYWNjb3VudCBjb25zb2xpZGF0aW9ucy5gLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIG5vdCBhbGxvdyBhIGJhZCBwcmUtYnVpbGQgdG8gYmUgcGFzc2VkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGF3YWl0IHdhbGxldFxuICAgICAgICAgICAgLnNlbmRBY2NvdW50Q29uc29saWRhdGlvbih7IHByZWJ1aWxkVHg6ICdzb21lIHN0cmluZycgfSlcbiAgICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKHsgbWVzc2FnZTogJ0ludmFsaWQgYnVpbGQgb2YgYWNjb3VudCBjb25zb2xpZGF0aW9uLicgfSk7XG4gICAgICAgICAgYXdhaXQgd2FsbGV0XG4gICAgICAgICAgICAuc2VuZEFjY291bnRDb25zb2xpZGF0aW9uKHsgcHJlYnVpbGRUeDogdW5kZWZpbmVkIH0pXG4gICAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCh7IG1lc3NhZ2U6ICdJbnZhbGlkIGJ1aWxkIG9mIGFjY291bnQgY29uc29saWRhdGlvbi4nIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHJlcXVpcmUgYSBjb25zb2xpZGF0aW9uIGlkIHRvIGJlIHBhc3NlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhd2FpdCB3YWxsZXRcbiAgICAgICAgICAgIC5zZW5kQWNjb3VudENvbnNvbGlkYXRpb24oeyBwcmVidWlsZFR4OiB7fSB9KVxuICAgICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoeyBtZXNzYWdlOiAnRmFpbGVkIHRvIGZpbmQgY29uc29saWRhdGlvbiBpZCBvbiBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9uLicgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgc3VibWl0IGEgY29uc29saWRhdGlvbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IHByZWJ1aWxkVHg6IGZpeHR1cmVzLmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb25bMF0gfTtcblxuICAgICAgICAgIHNpbm9uLnN0dWIod2FsbGV0LCAncHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24nKS5yZXNvbHZlcyhmaXh0dXJlcy5zaWduZWRBY2NvdW50Q29uc29saWRhdGlvbkJ1aWxkc1swXSk7XG5cbiAgICAgICAgICBjb25zdCBzY29wZSA9IG5vY2soYmdVcmwpXG4gICAgICAgICAgICAucG9zdChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS90eC9zZW5kYCwgZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZClcbiAgICAgICAgICAgIC5yZXBseSgyMDApO1xuXG4gICAgICAgICAgYXdhaXQgd2FsbGV0LnNlbmRBY2NvdW50Q29uc29saWRhdGlvbihwYXJhbXMpO1xuXG4gICAgICAgICAgc2NvcGUuaXNEb25lKCkuc2hvdWxkLmJlLlRydWUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBzdWJtaXQgYSBjb25zb2xpZGF0aW9uIGFjY291bnQgc2VuZCAoYnVpbGQgKyBzZW5kKSB3aXRoIHR3byBzdWNjZXNzZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3Qgc2NvcGVCdWlsZCA9IG5vY2soYmdVcmwpXG4gICAgICAgICAgICAucG9zdChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS9jb25zb2xpZGF0ZUFjY291bnQvYnVpbGRgKVxuICAgICAgICAgICAgLnF1ZXJ5KHt9KVxuICAgICAgICAgICAgLnJlcGx5KDIwMCwgZml4dHVyZXMuYnVpbGRBY2NvdW50Q29uc29saWRhdGlvbik7XG5cbiAgICAgICAgICBzaW5vblxuICAgICAgICAgICAgLnN0dWIod2FsbGV0LCAncHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24nKVxuICAgICAgICAgICAgLm9uQ2FsbCgwKVxuICAgICAgICAgICAgLnJlc29sdmVzKGZpeHR1cmVzLnNpZ25lZEFjY291bnRDb25zb2xpZGF0aW9uQnVpbGRzWzBdKVxuICAgICAgICAgICAgLm9uQ2FsbCgxKVxuICAgICAgICAgICAgLnJlc29sdmVzKGZpeHR1cmVzLnNpZ25lZEFjY291bnRDb25zb2xpZGF0aW9uQnVpbGRzWzFdKTtcblxuICAgICAgICAgIHNpbm9uLnN0dWIod2FsbGV0LCAnZ2V0S2V5Y2hhaW5zQW5kVmFsaWRhdGVQYXNzcGhyYXNlJykucmVzb2x2ZXMoW10pO1xuXG4gICAgICAgICAgY29uc3Qgc2NvcGVGaXJzdFNpZ25lZCA9IG5vY2soYmdVcmwpXG4gICAgICAgICAgICAucG9zdChcbiAgICAgICAgICAgICAgYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vdHgvc2VuZGAsXG4gICAgICAgICAgICAgIGZpeHR1cmVzLnNpZ25lZEFjY291bnRDb25zb2xpZGF0aW9uQnVpbGRzWzBdXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucmVwbHkoMjAwKTtcblxuICAgICAgICAgIGNvbnN0IHNjb3BlVHdvU2lnbmVkID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KFxuICAgICAgICAgICAgICBgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS90eC9zZW5kYCxcbiAgICAgICAgICAgICAgZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZHNbMV1cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5yZXBseSgyMDApO1xuXG4gICAgICAgICAgY29uc3QgY29uc29saWRhdGlvbnMgPSBhd2FpdCB3YWxsZXQuc2VuZEFjY291bnRDb25zb2xpZGF0aW9ucygpO1xuXG4gICAgICAgICAgY29uc29saWRhdGlvbnMuc3VjY2Vzcy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuICAgICAgICAgIGNvbnNvbGlkYXRpb25zLmZhaWx1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcblxuICAgICAgICAgIHNjb3BlRmlyc3RTaWduZWQuaXNEb25lKCkuc2hvdWxkLmJlLlRydWUoKTtcbiAgICAgICAgICBzY29wZVR3b1NpZ25lZC5pc0RvbmUoKS5zaG91bGQuYmUuVHJ1ZSgpO1xuICAgICAgICAgIHNjb3BlQnVpbGQuaXNEb25lKCkuc2hvdWxkLmJlLlRydWUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBzdWJtaXQgYSBjb25zb2xpZGF0aW9uIGFjY291bnQgc2VuZCAoYnVpbGQgKyBzZW5kKSB3aXRoIG9uZSBzdWNjZXNzLCBvbmUgZmFpbHVyZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBzY29wZUJ1aWxkID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2NvbnNvbGlkYXRlQWNjb3VudC9idWlsZGApXG4gICAgICAgICAgICAucXVlcnkoe30pXG4gICAgICAgICAgICAucmVwbHkoMjAwLCBmaXh0dXJlcy5idWlsZEFjY291bnRDb25zb2xpZGF0aW9uKTtcblxuICAgICAgICAgIHNpbm9uXG4gICAgICAgICAgICAuc3R1Yih3YWxsZXQsICdwcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbicpXG4gICAgICAgICAgICAub25DYWxsKDApXG4gICAgICAgICAgICAucmVzb2x2ZXMoZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZHNbMF0pXG4gICAgICAgICAgICAub25DYWxsKDEpXG4gICAgICAgICAgICAucmVzb2x2ZXMoZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZHNbMV0pO1xuXG4gICAgICAgICAgc2lub24uc3R1Yih3YWxsZXQsICdnZXRLZXljaGFpbnNBbmRWYWxpZGF0ZVBhc3NwaHJhc2UnKS5yZXNvbHZlcyhbXSk7XG5cbiAgICAgICAgICBjb25zdCBzY29wZVdpdGhTdWNjZXNzID0gbm9jayhiZ1VybClcbiAgICAgICAgICAgIC5wb3N0KFxuICAgICAgICAgICAgICBgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS90eC9zZW5kYCxcbiAgICAgICAgICAgICAgZml4dHVyZXMuc2lnbmVkQWNjb3VudENvbnNvbGlkYXRpb25CdWlsZHNbMF1cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5yZXBseSgyMDApO1xuXG4gICAgICAgICAgY29uc3Qgc2NvcGVXaXRoRXJyb3IgPSBub2NrKGJnVXJsKVxuICAgICAgICAgICAgLnBvc3QoXG4gICAgICAgICAgICAgIGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L3R4L3NlbmRgLFxuICAgICAgICAgICAgICBmaXh0dXJlcy5zaWduZWRBY2NvdW50Q29uc29saWRhdGlvbkJ1aWxkc1sxXVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlcGx5KDUwMCk7XG5cbiAgICAgICAgICBjb25zdCBjb25zb2xpZGF0aW9ucyA9IGF3YWl0IHdhbGxldC5zZW5kQWNjb3VudENvbnNvbGlkYXRpb25zKCk7XG5cbiAgICAgICAgICBjb25zb2xpZGF0aW9ucy5zdWNjZXNzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICAgICAgY29uc29saWRhdGlvbnMuZmFpbHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgICAgIGNvbnNvbGlkYXRpb25zLmZhaWx1cmVbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ21lc3NhZ2UnKTtcbiAgICAgICAgICBjb25zb2xpZGF0aW9ucy5mYWlsdXJlWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCduYW1lJyk7XG5cbiAgICAgICAgICBzY29wZVdpdGhTdWNjZXNzLmlzRG9uZSgpLnNob3VsZC5iZS5UcnVlKCk7XG4gICAgICAgICAgc2NvcGVXaXRoRXJyb3IuaXNEb25lKCkuc2hvdWxkLmJlLlRydWUoKTtcbiAgICAgICAgICBzY29wZUJ1aWxkLmlzRG9uZSgpLnNob3VsZC5iZS5UcnVlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHNlcmlhbGl6YWJsZSBlcnJvciBvYmplY3RzIGluIHRoZSBmYWlsdXJlIGFycmF5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHNjb3BlQnVpbGQgPSBub2NrKGJnVXJsKVxuICAgICAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vY29uc29saWRhdGVBY2NvdW50L2J1aWxkYClcbiAgICAgICAgICAgIC5xdWVyeSh7fSlcbiAgICAgICAgICAgIC5yZXBseSgyMDAsIGZpeHR1cmVzLmJ1aWxkQWNjb3VudENvbnNvbGlkYXRpb24pO1xuXG4gICAgICAgICAgc2lub24uc3R1Yih3YWxsZXQsICdnZXRLZXljaGFpbnNBbmRWYWxpZGF0ZVBhc3NwaHJhc2UnKS5yZXNvbHZlcyhbXSk7XG5cbiAgICAgICAgICBjb25zdCBmaXJzdEVycm9yID0gbmV3IEVycm9yKCd1bmFibGUgdG8gZGVjcnlwdCBrZXljaGFpbiB3aXRoIHRoZSBnaXZlbiB3YWxsZXQgcGFzc3BocmFzZScpO1xuICAgICAgICAgIGZpcnN0RXJyb3IubmFtZSA9ICdLZXlEZWNyeXB0aW9uRXJyb3InO1xuICAgICAgICAgIGNvbnN0IHNlY29uZEVycm9yID0gbmV3IEVycm9yKCdpbnN1ZmZpY2llbnQgZnVuZHMnKTtcbiAgICAgICAgICBzZWNvbmRFcnJvci5uYW1lID0gJ0luc3VmZmljaWVudEZ1bmRzRXJyb3InO1xuXG4gICAgICAgICAgc2lub24uc3R1Yih3YWxsZXQsICdzZW5kQWNjb3VudENvbnNvbGlkYXRpb24nKS5vbkNhbGwoMCkucmVqZWN0cyhmaXJzdEVycm9yKS5vbkNhbGwoMSkucmVqZWN0cyhzZWNvbmRFcnJvcik7XG5cbiAgICAgICAgICBjb25zdCBjb25zb2xpZGF0aW9ucyA9IGF3YWl0IHdhbGxldC5zZW5kQWNjb3VudENvbnNvbGlkYXRpb25zKCk7XG5cbiAgICAgICAgICBjb25zb2xpZGF0aW9ucy5mYWlsdXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG5cbiAgICAgICAgICAvLyBmYWlsdXJlIGVudHJpZXMgbXVzdCBiZSBwbGFpbiBzZXJpYWxpemFibGUgb2JqZWN0cywgbm90IEVycm9yIGluc3RhbmNlc1xuICAgICAgICAgIChjb25zb2xpZGF0aW9ucy5mYWlsdXJlWzBdIGluc3RhbmNlb2YgRXJyb3IpLnNob3VsZC5iZS5GYWxzZSgpO1xuICAgICAgICAgIGNvbnNvbGlkYXRpb25zLmZhaWx1cmVbMF0ubWVzc2FnZS5zaG91bGQuZXF1YWwoJ3VuYWJsZSB0byBkZWNyeXB0IGtleWNoYWluIHdpdGggdGhlIGdpdmVuIHdhbGxldCBwYXNzcGhyYXNlJyk7XG4gICAgICAgICAgY29uc29saWRhdGlvbnMuZmFpbHVyZVswXS5uYW1lLnNob3VsZC5lcXVhbCgnS2V5RGVjcnlwdGlvbkVycm9yJyk7XG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoY29uc29saWRhdGlvbnMuZmFpbHVyZVswXSkuc2hvdWxkLm5vdC5lcXVhbCgne30nKTtcblxuICAgICAgICAgIChjb25zb2xpZGF0aW9ucy5mYWlsdXJlWzFdIGluc3RhbmNlb2YgRXJyb3IpLnNob3VsZC5iZS5GYWxzZSgpO1xuICAgICAgICAgIGNvbnNvbGlkYXRpb25zLmZhaWx1cmVbMV0ubWVzc2FnZS5zaG91bGQuZXF1YWwoJ2luc3VmZmljaWVudCBmdW5kcycpO1xuICAgICAgICAgIGNvbnNvbGlkYXRpb25zLmZhaWx1cmVbMV0ubmFtZS5zaG91bGQuZXF1YWwoJ0luc3VmZmljaWVudEZ1bmRzRXJyb3InKTtcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShjb25zb2xpZGF0aW9ucy5mYWlsdXJlWzFdKS5zaG91bGQubm90LmVxdWFsKCd7fScpO1xuXG4gICAgICAgICAgc2NvcGVCdWlsZC5pc0RvbmUoKS5zaG91bGQuYmUuVHJ1ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59KTtcbiJdfQ==