@bitgo-beta/abstract-cosmos 1.0.1-beta.19 → 1.0.1-beta.1900

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.
Files changed (53) hide show
  1. package/dist/resources/MsgCompiled.d.ts +1212 -0
  2. package/dist/resources/MsgCompiled.js +2761 -0
  3. package/dist/resources/ProposalCompiled.d.ts +314 -0
  4. package/dist/resources/ProposalCompiled.js +1090 -0
  5. package/dist/src/cosmosCoin.d.ts +87 -9
  6. package/dist/src/cosmosCoin.d.ts.map +1 -1
  7. package/dist/src/cosmosCoin.js +406 -34
  8. package/dist/src/index.js +6 -2
  9. package/dist/src/lib/ContractCallBuilder.d.ts +13 -0
  10. package/dist/src/lib/ContractCallBuilder.d.ts.map +1 -0
  11. package/dist/src/lib/ContractCallBuilder.js +75 -0
  12. package/dist/src/lib/StakingActivateBuilder.d.ts +3 -3
  13. package/dist/src/lib/StakingActivateBuilder.d.ts.map +1 -1
  14. package/dist/src/lib/StakingActivateBuilder.js +35 -2
  15. package/dist/src/lib/StakingDeactivateBuilder.d.ts +3 -3
  16. package/dist/src/lib/StakingDeactivateBuilder.d.ts.map +1 -1
  17. package/dist/src/lib/StakingDeactivateBuilder.js +35 -2
  18. package/dist/src/lib/StakingRedelegateBuilder.d.ts +13 -0
  19. package/dist/src/lib/StakingRedelegateBuilder.d.ts.map +1 -0
  20. package/dist/src/lib/StakingRedelegateBuilder.js +61 -0
  21. package/dist/src/lib/StakingWithdrawRewardsBuilder.d.ts +3 -3
  22. package/dist/src/lib/StakingWithdrawRewardsBuilder.d.ts.map +1 -1
  23. package/dist/src/lib/StakingWithdrawRewardsBuilder.js +35 -2
  24. package/dist/src/lib/constants.d.ts +6 -0
  25. package/dist/src/lib/constants.d.ts.map +1 -1
  26. package/dist/src/lib/constants.js +8 -2
  27. package/dist/src/lib/iface.d.ts +71 -7
  28. package/dist/src/lib/iface.d.ts.map +1 -1
  29. package/dist/src/lib/iface.js +18 -1
  30. package/dist/src/lib/index.d.ts +2 -0
  31. package/dist/src/lib/index.d.ts.map +1 -1
  32. package/dist/src/lib/index.js +34 -4
  33. package/dist/src/lib/keyPair.js +9 -10
  34. package/dist/src/lib/protobuf-init.d.ts +9 -0
  35. package/dist/src/lib/protobuf-init.d.ts.map +1 -0
  36. package/dist/src/lib/protobuf-init.js +25 -0
  37. package/dist/src/lib/transaction.d.ts +8 -9
  38. package/dist/src/lib/transaction.d.ts.map +1 -1
  39. package/dist/src/lib/transaction.js +151 -70
  40. package/dist/src/lib/transactionBuilder.d.ts +28 -17
  41. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  42. package/dist/src/lib/transactionBuilder.js +33 -8
  43. package/dist/src/lib/transferBuilder.d.ts +3 -3
  44. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  45. package/dist/src/lib/transferBuilder.js +35 -2
  46. package/dist/src/lib/utils.d.ts +143 -18
  47. package/dist/src/lib/utils.d.ts.map +1 -1
  48. package/dist/src/lib/utils.js +452 -31
  49. package/dist/tsconfig.tsbuildinfo +1 -10990
  50. package/package.json +17 -11
  51. package/.eslintignore +0 -5
  52. package/.mocharc.yml +0 -8
  53. package/CHANGELOG.md +0 -17
@@ -31,11 +31,10 @@ class CosmosTransaction extends sdk_core_1.BaseTransaction {
31
31
  }
32
32
  /** @inheritDoc **/
33
33
  get id() {
34
- var _a;
35
34
  if (this._id) {
36
35
  return this._id;
37
36
  }
38
- else if (((_a = this._cosmosLikeTransaction) === null || _a === void 0 ? void 0 : _a.hash) !== undefined) {
37
+ else if (this._cosmosLikeTransaction?.hash !== undefined) {
39
38
  return this._cosmosLikeTransaction.hash;
40
39
  }
41
40
  return constants_1.UNAVAILABLE_TEXT;
@@ -108,17 +107,16 @@ class CosmosTransaction extends sdk_core_1.BaseTransaction {
108
107
  * @returns {string} serialized base64 encoded transaction
109
108
  */
110
109
  serialize() {
111
- var _a;
112
110
  const txRaw = this._utils.createTxRawFromCosmosLikeTransaction(this.cosmosLikeTransaction);
113
- if (((_a = this.cosmosLikeTransaction) === null || _a === void 0 ? void 0 : _a.publicKey) !== undefined && this._signatures.length > 0) {
111
+ if (this.cosmosLikeTransaction?.publicKey !== undefined && this._signatures.length > 0) {
114
112
  const signedRawTx = this._utils.createSignedTxRaw(this.cosmosLikeTransaction.publicKey, this._signatures[0], txRaw);
115
- return encoding_1.toBase64(tx_1.TxRaw.encode(signedRawTx).finish());
113
+ return (0, encoding_1.toBase64)(tx_1.TxRaw.encode(signedRawTx).finish());
116
114
  }
117
- return encoding_1.toBase64(tx_1.TxRaw.encode(txRaw).finish());
115
+ return (0, encoding_1.toBase64)(tx_1.TxRaw.encode(txRaw).finish());
118
116
  }
119
117
  /** @inheritdoc **/
120
118
  get signablePayload() {
121
- return Buffer.from(proto_signing_1.makeSignBytes(this._utils.createSignDoc(this.cosmosLikeTransaction, this._accountNumber, this._chainId)));
119
+ return Buffer.from((0, proto_signing_1.makeSignBytes)(this._utils.createSignDoc(this.cosmosLikeTransaction, this._accountNumber, this._chainId)));
122
120
  }
123
121
  /**
124
122
  * Returns a complete explanation for a transfer transaction
@@ -129,51 +127,84 @@ class CosmosTransaction extends sdk_core_1.BaseTransaction {
129
127
  */
130
128
  explainTransactionInternal(json, explanationResult) {
131
129
  let outputs;
132
- let message;
133
130
  let outputAmount;
134
131
  switch (json.type) {
135
132
  case sdk_core_1.TransactionType.Send:
136
133
  explanationResult.type = sdk_core_1.TransactionType.Send;
137
- message = json.sendMessages[0].value;
138
- outputAmount = message.amount[0].amount;
139
- outputs = [
140
- {
141
- address: message.toAddress,
142
- amount: outputAmount,
143
- },
144
- ];
134
+ outputAmount = BigInt(0);
135
+ outputs = json.sendMessages.map((message) => {
136
+ const sendMessage = message.value;
137
+ outputAmount = outputAmount + BigInt(sendMessage.amount[0].amount);
138
+ return {
139
+ address: sendMessage.toAddress,
140
+ amount: sendMessage.amount[0].amount,
141
+ };
142
+ });
145
143
  break;
146
144
  case sdk_core_1.TransactionType.StakingActivate:
147
145
  explanationResult.type = sdk_core_1.TransactionType.StakingActivate;
148
- message = json.sendMessages[0].value;
149
- outputAmount = message.amount.amount;
150
- outputs = [
151
- {
152
- address: message.validatorAddress,
153
- amount: outputAmount,
154
- },
155
- ];
146
+ outputAmount = BigInt(0);
147
+ outputs = json.sendMessages.map((message) => {
148
+ const delegateMessage = message.value;
149
+ outputAmount = outputAmount + BigInt(delegateMessage.amount.amount);
150
+ return {
151
+ address: delegateMessage.validatorAddress,
152
+ amount: delegateMessage.amount.amount,
153
+ };
154
+ });
156
155
  break;
157
156
  case sdk_core_1.TransactionType.StakingDeactivate:
158
157
  explanationResult.type = sdk_core_1.TransactionType.StakingDeactivate;
159
- message = json.sendMessages[0].value;
160
- outputAmount = message.amount.amount;
161
- outputs = [
162
- {
163
- address: message.validatorAddress,
164
- amount: outputAmount,
165
- },
166
- ];
158
+ outputAmount = BigInt(0);
159
+ outputs = json.sendMessages.map((message) => {
160
+ const delegateMessage = message.value;
161
+ outputAmount = outputAmount + BigInt(delegateMessage.amount.amount);
162
+ return {
163
+ address: delegateMessage.validatorAddress,
164
+ amount: delegateMessage.amount.amount,
165
+ };
166
+ });
167
167
  break;
168
168
  case sdk_core_1.TransactionType.StakingWithdraw:
169
169
  explanationResult.type = sdk_core_1.TransactionType.StakingWithdraw;
170
- message = json.sendMessages[0].value;
171
- outputs = [
172
- {
173
- address: message.validatorAddress,
170
+ outputs = json.sendMessages.map((message) => {
171
+ const withdrawMessage = message.value;
172
+ return {
173
+ address: withdrawMessage.validatorAddress,
174
174
  amount: constants_1.UNAVAILABLE_TEXT,
175
- },
176
- ];
175
+ };
176
+ });
177
+ break;
178
+ case sdk_core_1.TransactionType.ContractCall:
179
+ explanationResult.type = sdk_core_1.TransactionType.ContractCall;
180
+ outputAmount = BigInt(0);
181
+ outputs = json.sendMessages.map((message) => {
182
+ //TODO: Handle pre-encoded contract call messages.
183
+ if (message.value instanceof Uint8Array) {
184
+ return {
185
+ address: constants_1.UNAVAILABLE_TEXT,
186
+ amount: constants_1.UNAVAILABLE_TEXT,
187
+ };
188
+ }
189
+ const executeContractMessage = message.value;
190
+ outputAmount = outputAmount + BigInt(executeContractMessage.funds?.[0]?.amount ?? '0');
191
+ return {
192
+ address: executeContractMessage.contract,
193
+ amount: executeContractMessage.funds?.[0]?.amount ?? '0',
194
+ };
195
+ });
196
+ break;
197
+ case sdk_core_1.TransactionType.StakingRedelegate:
198
+ explanationResult.type = sdk_core_1.TransactionType.StakingRedelegate;
199
+ outputAmount = BigInt(0);
200
+ outputs = json.sendMessages.map((message) => {
201
+ const redelegateMessage = message.value;
202
+ outputAmount = outputAmount + BigInt(redelegateMessage.amount.amount);
203
+ return {
204
+ address: redelegateMessage.validatorDstAddress,
205
+ amount: redelegateMessage.amount.amount,
206
+ };
207
+ });
177
208
  break;
178
209
  default:
179
210
  throw new sdk_core_1.InvalidTransactionError('Transaction type not supported');
@@ -185,7 +216,7 @@ class CosmosTransaction extends sdk_core_1.BaseTransaction {
185
216
  }
186
217
  return {
187
218
  ...explanationResult,
188
- outputAmount,
219
+ outputAmount: outputAmount?.toString(),
189
220
  outputs,
190
221
  };
191
222
  }
@@ -202,43 +233,93 @@ class CosmosTransaction extends sdk_core_1.BaseTransaction {
202
233
  const inputs = [];
203
234
  switch (this.type) {
204
235
  case sdk_core_1.TransactionType.Send:
205
- const message = this.cosmosLikeTransaction.sendMessages[0].value;
206
- inputs.push({
207
- address: message.fromAddress,
208
- value: message.amount[0].amount,
209
- coin: this._coinConfig.name,
210
- });
211
- outputs.push({
212
- address: message.toAddress,
213
- value: message.amount[0].amount,
214
- coin: this._coinConfig.name,
236
+ this.cosmosLikeTransaction.sendMessages.forEach((message) => {
237
+ const sendMessage = message.value;
238
+ inputs.push({
239
+ address: sendMessage.fromAddress,
240
+ value: sendMessage.amount[0].amount,
241
+ coin: this._coinConfig.name,
242
+ });
243
+ outputs.push({
244
+ address: sendMessage.toAddress,
245
+ value: sendMessage.amount[0].amount,
246
+ coin: this._coinConfig.name,
247
+ });
215
248
  });
216
249
  break;
217
250
  case sdk_core_1.TransactionType.StakingActivate:
218
251
  case sdk_core_1.TransactionType.StakingDeactivate:
219
- const delegateMessage = this.cosmosLikeTransaction.sendMessages[0].value;
220
- inputs.push({
221
- address: delegateMessage.delegatorAddress,
222
- value: delegateMessage.amount.amount,
223
- coin: this._coinConfig.name,
224
- });
225
- outputs.push({
226
- address: delegateMessage.validatorAddress,
227
- value: delegateMessage.amount.amount,
228
- coin: this._coinConfig.name,
252
+ this.cosmosLikeTransaction.sendMessages.forEach((message) => {
253
+ const delegateMessage = message.value;
254
+ inputs.push({
255
+ address: delegateMessage.delegatorAddress,
256
+ value: delegateMessage.amount.amount,
257
+ coin: this._coinConfig.name,
258
+ });
259
+ outputs.push({
260
+ address: delegateMessage.validatorAddress,
261
+ value: delegateMessage.amount.amount,
262
+ coin: this._coinConfig.name,
263
+ });
229
264
  });
230
265
  break;
231
266
  case sdk_core_1.TransactionType.StakingWithdraw:
232
- const withdrawMessage = this.cosmosLikeTransaction.sendMessages[0].value;
233
- inputs.push({
234
- address: withdrawMessage.delegatorAddress,
235
- value: constants_1.UNAVAILABLE_TEXT,
236
- coin: this._coinConfig.name,
267
+ this.cosmosLikeTransaction.sendMessages.forEach((message) => {
268
+ const withdrawMessage = message.value;
269
+ inputs.push({
270
+ address: withdrawMessage.delegatorAddress,
271
+ value: constants_1.UNAVAILABLE_TEXT,
272
+ coin: this._coinConfig.name,
273
+ });
274
+ outputs.push({
275
+ address: withdrawMessage.validatorAddress,
276
+ value: constants_1.UNAVAILABLE_TEXT,
277
+ coin: this._coinConfig.name,
278
+ });
237
279
  });
238
- outputs.push({
239
- address: withdrawMessage.validatorAddress,
240
- value: constants_1.UNAVAILABLE_TEXT,
241
- coin: this._coinConfig.name,
280
+ break;
281
+ case sdk_core_1.TransactionType.ContractCall:
282
+ this.cosmosLikeTransaction.sendMessages.forEach((message) => {
283
+ if (message.value instanceof Uint8Array) {
284
+ //TODO: Handle pre-encoded contract call messages.
285
+ inputs.push({
286
+ address: constants_1.UNAVAILABLE_TEXT,
287
+ value: constants_1.UNAVAILABLE_TEXT,
288
+ coin: this._coinConfig.name,
289
+ });
290
+ outputs.push({
291
+ address: constants_1.UNAVAILABLE_TEXT,
292
+ value: constants_1.UNAVAILABLE_TEXT,
293
+ coin: this._coinConfig.name,
294
+ });
295
+ return;
296
+ }
297
+ const executeContractMessage = message.value;
298
+ inputs.push({
299
+ address: executeContractMessage.sender,
300
+ value: executeContractMessage.funds?.[0]?.amount ?? '0',
301
+ coin: this._coinConfig.name,
302
+ });
303
+ outputs.push({
304
+ address: executeContractMessage.contract,
305
+ value: executeContractMessage.funds?.[0]?.amount ?? '0',
306
+ coin: this._coinConfig.name,
307
+ });
308
+ });
309
+ break;
310
+ case sdk_core_1.TransactionType.StakingRedelegate:
311
+ this.cosmosLikeTransaction.sendMessages.forEach((message) => {
312
+ const redelegateMessage = message.value;
313
+ inputs.push({
314
+ address: redelegateMessage.delegatorAddress,
315
+ value: redelegateMessage.amount.amount,
316
+ coin: this._coinConfig.name,
317
+ });
318
+ outputs.push({
319
+ address: redelegateMessage.validatorDstAddress,
320
+ value: redelegateMessage.amount.amount,
321
+ coin: this._coinConfig.name,
322
+ });
242
323
  });
243
324
  break;
244
325
  default:
@@ -253,7 +334,7 @@ class CosmosTransaction extends sdk_core_1.BaseTransaction {
253
334
  */
254
335
  enrichTransactionDetailsFromRawTransaction(rawTransaction) {
255
336
  if (this._utils.isValidHexString(rawTransaction)) {
256
- this.cosmosLikeTransaction = this._utils.deserializeTransaction(encoding_1.toBase64(encoding_1.fromHex(rawTransaction)));
337
+ this.cosmosLikeTransaction = this._utils.deserializeTransaction((0, encoding_1.toBase64)((0, encoding_1.fromHex)(rawTransaction)));
257
338
  }
258
339
  else {
259
340
  this.cosmosLikeTransaction = this._utils.deserializeTransaction(rawTransaction);
@@ -270,4 +351,4 @@ class CosmosTransaction extends sdk_core_1.BaseTransaction {
270
351
  }
271
352
  }
272
353
  exports.CosmosTransaction = CosmosTransaction;
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQVE4QjtBQUU5QiwrQ0FBcUQ7QUFDckQseURBQXNEO0FBQ3RELDBEQUEwRDtBQUUxRCwyQ0FBK0M7QUFZL0MsTUFBYSxpQkFBa0IsU0FBUSwwQkFBZTtJQU9wRCxZQUFZLFdBQWlDLEVBQUUsS0FBa0I7UUFDL0QsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLHFCQUFxQjtRQUN2QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxxQkFBcUIsQ0FBQyxxQkFBc0Q7UUFDOUUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHFCQUFxQixDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLE9BQWU7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsYUFBcUI7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7SUFDdEMsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixJQUFJLEVBQUU7O1FBQ0osSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ2pCO2FBQU0sSUFBSSxDQUFBLE1BQUEsSUFBSSxDQUFDLHNCQUFzQiwwQ0FBRSxJQUFJLE1BQUssU0FBUyxFQUFFO1lBQzFELE9BQU8sSUFBSSxDQUFD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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEVudHJ5LFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBmcm9tSGV4LCB0b0Jhc2U2NCB9IGZyb20gJ0Bjb3NtanMvZW5jb2RpbmcnO1xuaW1wb3J0IHsgbWFrZVNpZ25CeXRlcyB9IGZyb20gJ0Bjb3NtanMvcHJvdG8tc2lnbmluZyc7XG5pbXBvcnQgeyBUeFJhdyB9IGZyb20gJ2Nvc21qcy10eXBlcy9jb3Ntb3MvdHgvdjFiZXRhMS90eCc7XG5cbmltcG9ydCB7IFVOQVZBSUxBQkxFX1RFWFQgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7XG4gIENvc21vc0xpa2VUcmFuc2FjdGlvbixcbiAgRGVsZWdhdGVPclVuZGVsZWdldGVNZXNzYWdlLFxuICBTZW5kTWVzc2FnZSxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgVHhEYXRhLFxuICBXaXRoZHJhd0RlbGVnYXRvclJld2FyZHNNZXNzYWdlLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IENvc21vc1V0aWxzIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBDb3Ntb3NUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByb3RlY3RlZCBfY29zbW9zTGlrZVRyYW5zYWN0aW9uOiBDb3Ntb3NMaWtlVHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBfYWNjb3VudE51bWJlcjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX2NoYWluSWQ6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgX3V0aWxzOiBDb3Ntb3NVdGlscztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4sIHV0aWxzOiBDb3Ntb3NVdGlscykge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl91dGlscyA9IHV0aWxzO1xuICB9XG5cbiAgZ2V0IGNvc21vc0xpa2VUcmFuc2FjdGlvbigpOiBDb3Ntb3NMaWtlVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9jb3Ntb3NMaWtlVHJhbnNhY3Rpb247XG4gIH1cblxuICBzZXQgY29zbW9zTGlrZVRyYW5zYWN0aW9uKGNvc21vc0xpa2VUcmFuc2FjdGlvbjogUmVhZG9ubHk8Q29zbW9zTGlrZVRyYW5zYWN0aW9uPikge1xuICAgIHRoaXMuX2Nvc21vc0xpa2VUcmFuc2FjdGlvbiA9IGNvc21vc0xpa2VUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIGdldCBjaGFpbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYWluSWQ7XG4gIH1cblxuICBzZXQgY2hhaW5JZChjaGFpbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jaGFpbklkID0gY2hhaW5JZDtcbiAgfVxuXG4gIGdldCBhY2NvdW50TnVtYmVyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2FjY291bnROdW1iZXI7XG4gIH1cblxuICBzZXQgYWNjb3VudE51bWJlcihhY2NvdW50TnVtYmVyOiBudW1iZXIpIHtcbiAgICB0aGlzLl9hY2NvdW50TnVtYmVyID0gYWNjb3VudE51bWJlcjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2lkKSB7XG4gICAgICByZXR1cm4gdGhpcy5faWQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9jb3Ntb3NMaWtlVHJhbnNhY3Rpb24/Lmhhc2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2Nvc21vc0xpa2VUcmFuc2FjdGlvbi5oYXNoO1xuICAgIH1cbiAgICByZXR1cm4gVU5BVkFJTEFCTEVfVEVYVDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9jb3Ntb3NMaWtlVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9jb3Ntb3NMaWtlVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHR4ID0gdGhpcy5fY29zbW9zTGlrZVRyYW5zYWN0aW9uO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHR5cGU6IHRoaXMuX3R5cGUsXG4gICAgICBzZXF1ZW5jZTogdHguc2VxdWVuY2UsXG4gICAgICBzZW5kTWVzc2FnZXM6IHR4LnNlbmRNZXNzYWdlcyxcbiAgICAgIGdhc0J1ZGdldDogdHguZ2FzQnVkZ2V0LFxuICAgICAgcHVibGljS2V5OiB0eC5wdWJsaWNLZXksXG4gICAgICBzaWduYXR1cmU6IHR4LnNpZ25hdHVyZSxcbiAgICAgIGFjY291bnROdW1iZXI6IHRoaXMuX2FjY291bnROdW1iZXIsXG4gICAgICBjaGFpbklkOiB0aGlzLl9jaGFpbklkLFxuICAgICAgaGFzaDogdHguaGFzaCxcbiAgICAgIG1lbW86IHR4Lm1lbW8sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBzaWduYXR1cmUgdG8gdGhlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgaW4gaGV4IGZvcm1hdFxuICAgKi9cbiAgYWRkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2lnbmF0dXJlcyA9IFtdO1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGV4cGxhaW5UcmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnaWQnLCAnb3V0cHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlT3V0cHV0cycsICdjaGFuZ2VBbW91bnQnLCAnZmVlJywgJ3R5cGUnXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG5cbiAgICBjb25zdCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIGZlZTogeyBmZWU6IHRoaXMuY29zbW9zTGlrZVRyYW5zYWN0aW9uLmdhc0J1ZGdldC5hbW91bnRbMF0uYW1vdW50IH0sXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5leHBsYWluVHJhbnNhY3Rpb25JbnRlcm5hbChyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0LlxuICAgKi9cbiAgc2V0IHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSkge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplIHRoZSB0cmFuc2FjdGlvbiB0byBhIEpTT04gc3RyaW5nXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IHNlcmlhbGl6ZWQgYmFzZTY0IGVuY29kZWQgdHJhbnNhY3Rpb25cbiAgICovXG4gIHNlcmlhbGl6ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR4UmF3ID0gdGhpcy5fdXRpbHMuY3JlYXRlVHhSYXdGcm9tQ29zbW9zTGlrZVRyYW5zYWN0aW9uKHRoaXMuY29zbW9zTGlrZVRyYW5zYWN0aW9uKTtcbiAgICBpZiAodGhpcy5jb3Ntb3NMaWtlVHJhbnNhY3Rpb24/LnB1YmxpY0tleSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX3NpZ25hdHVyZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc2lnbmVkUmF3VHggPSB0aGlzLl91dGlscy5jcmVhdGVTaWduZWRUeFJhdyhcbiAgICAgICAgdGhpcy5jb3Ntb3NMaWtlVHJhbnNhY3Rpb24ucHVibGljS2V5LFxuICAgICAgICB0aGlzLl9zaWduYXR1cmVzWzBdLFxuICAgICAgICB0eFJhd1xuICAgICAgKTtcbiAgICAgIHJldHVybiB0b0Jhc2U2NChUeFJhdy5lbmNvZGUoc2lnbmVkUmF3VHgpLmZpbmlzaCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRvQmFzZTY0KFR4UmF3LmVuY29kZSh0eFJhdykuZmluaXNoKCkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICoqL1xuICBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFxuICAgICAgbWFrZVNpZ25CeXRlcyh0aGlzLl91dGlscy5jcmVhdGVTaWduRG9jKHRoaXMuY29zbW9zTGlrZVRyYW5zYWN0aW9uLCB0aGlzLl9hY2NvdW50TnVtYmVyLCB0aGlzLl9jaGFpbklkKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBjb21wbGV0ZSBleHBsYW5hdGlvbiBmb3IgYSB0cmFuc2ZlciB0cmFuc2FjdGlvblxuICAgKiBDdXJyZW50bHkgb25seSBzdXBwb3J0cyBvbmUgbWVzc2FnZSBwZXIgdHJhbnNmZXIuXG4gICAqIEBwYXJhbSB7VHhEYXRhfSBqc29uIFRoZSB0cmFuc2FjdGlvbiBkYXRhIGluIGpzb24gZm9ybWF0XG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn0gZXhwbGFuYXRpb25SZXN1bHQgVGhlIHRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uIHRvIGJlIGNvbXBsZXRlZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn1cbiAgICovXG4gIGV4cGxhaW5UcmFuc2FjdGlvbkludGVybmFsKGpzb246IFR4RGF0YSwgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24pOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBsZXQgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXTtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBsZXQgb3V0cHV0QW1vdW50O1xuICAgIHN3aXRjaCAoanNvbi50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICBleHBsYW5hdGlvblJlc3VsdC50eXBlID0gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gICAgICAgIG1lc3NhZ2UgPSBqc29uLnNlbmRNZXNzYWdlc1swXS52YWx1ZSBhcyBTZW5kTWVzc2FnZTtcbiAgICAgICAgb3V0cHV0QW1vdW50ID0gbWVzc2FnZS5hbW91bnRbMF0uYW1vdW50O1xuICAgICAgICBvdXRwdXRzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IG1lc3NhZ2UudG9BZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiBvdXRwdXRBbW91bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICAgIGV4cGxhbmF0aW9uUmVzdWx0LnR5cGUgPSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlO1xuICAgICAgICBtZXNzYWdlID0ganNvbi5zZW5kTWVzc2FnZXNbMF0udmFsdWUgYXMgRGVsZWdhdGVPclVuZGVsZWdldGVNZXNzYWdlO1xuICAgICAgICBvdXRwdXRBbW91bnQgPSBtZXNzYWdlLmFtb3VudC5hbW91bnQ7XG4gICAgICAgIG91dHB1dHMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogbWVzc2FnZS52YWxpZGF0b3JBZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiBvdXRwdXRBbW91bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVhY3RpdmF0ZTpcbiAgICAgICAgZXhwbGFuYXRpb25SZXN1bHQudHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVhY3RpdmF0ZTtcbiAgICAgICAgbWVzc2FnZSA9IGpzb24uc2VuZE1lc3NhZ2VzWzBdLnZhbHVlIGFzIERlbGVnYXRlT3JVbmRlbGVnZXRlTWVzc2FnZTtcbiAgICAgICAgb3V0cHV0QW1vdW50ID0gbWVzc2FnZS5hbW91bnQuYW1vdW50O1xuICAgICAgICBvdXRwdXRzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IG1lc3NhZ2UudmFsaWRhdG9yQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogb3V0cHV0QW1vdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgICBleHBsYW5hdGlvblJlc3VsdC50eXBlID0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdztcbiAgICAgICAgbWVzc2FnZSA9IGpzb24uc2VuZE1lc3NhZ2VzWzBdLnZhbHVlIGFzIFdpdGhkcmF3RGVsZWdhdG9yUmV3YXJkc01lc3NhZ2U7XG4gICAgICAgIG91dHB1dHMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogbWVzc2FnZS52YWxpZGF0b3JBZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiBVTkFWQUlMQUJMRV9URVhULFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gICAgaWYgKGpzb24ubWVtbykge1xuICAgICAgb3V0cHV0cy5mb3JFYWNoKChvdXRwdXQpID0+IHtcbiAgICAgICAgb3V0cHV0Lm1lbW8gPSBqc29uLm1lbW87XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmV4cGxhbmF0aW9uUmVzdWx0LFxuICAgICAgb3V0cHV0QW1vdW50LFxuICAgICAgb3V0cHV0cyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uIHVzaW5nIHRoZSB0cmFuc2FjdGlvbiBqc29uXG4gICAqIGlmIHRoZXJlIGFyZSBvdXRwdXRzLiBGb3IgdHJhbnNhY3Rpb25zIHdpdGhvdXQgb3V0cHV0cyAoZS5nLiB3YWxsZXQgaW5pdGlhbGl6YXRpb25zKSxcbiAgICogdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBkbyBhbnl0aGluZ1xuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gdW5kZWZpbmVkIHx8ICF0aGlzLmNvc21vc0xpa2VUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiB0eXBlIG9yIGNvc21vc0xpa2VUcmFuc2FjdGlvbiBpcyBub3Qgc2V0Jyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0czogRW50cnlbXSA9IFtdO1xuICAgIGNvbnN0IGlucHV0czogRW50cnlbXSA9IFtdO1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5jb3Ntb3NMaWtlVHJhbnNhY3Rpb24uc2VuZE1lc3NhZ2VzWzBdLnZhbHVlIGFzIFNlbmRNZXNzYWdlO1xuICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgYWRkcmVzczogbWVzc2FnZS5mcm9tQWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogbWVzc2FnZS5hbW91bnRbMF0uYW1vdW50LFxuICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgYWRkcmVzczogbWVzc2FnZS50b0FkZHJlc3MsXG4gICAgICAgICAgdmFsdWU6IG1lc3NhZ2UuYW1vdW50WzBdLmFtb3VudCxcbiAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZTpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlOlxuICAgICAgICBjb25zdCBkZWxlZ2F0ZU1lc3NhZ2UgPSB0aGlzLmNvc21vc0xpa2VUcmFuc2FjdGlvbi5zZW5kTWVzc2FnZXNbMF0udmFsdWUgYXMgRGVsZWdhdGVPclVuZGVsZWdldGVNZXNzYWdlO1xuICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgYWRkcmVzczogZGVsZWdhdGVNZXNzYWdlLmRlbGVnYXRvckFkZHJlc3MsXG4gICAgICAgICAgdmFsdWU6IGRlbGVnYXRlTWVzc2FnZS5hbW91bnQuYW1vdW50LFxuICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgYWRkcmVzczogZGVsZWdhdGVNZXNzYWdlLnZhbGlkYXRvckFkZHJlc3MsXG4gICAgICAgICAgdmFsdWU6IGRlbGVnYXRlTWVzc2FnZS5hbW91bnQuYW1vdW50LFxuICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgICBjb25zdCB3aXRoZHJhd01lc3NhZ2UgPSB0aGlzLmNvc21vc0xpa2VUcmFuc2FjdGlvbi5zZW5kTWVzc2FnZXNbMF0udmFsdWUgYXMgV2l0aGRyYXdEZWxlZ2F0b3JSZXdhcmRzTWVzc2FnZTtcbiAgICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICAgIGFkZHJlc3M6IHdpdGhkcmF3TWVzc2FnZS5kZWxlZ2F0b3JBZGRyZXNzLFxuICAgICAgICAgIHZhbHVlOiBVTkFWQUlMQUJMRV9URVhULFxuICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgYWRkcmVzczogd2l0aGRyYXdNZXNzYWdlLnZhbGlkYXRvckFkZHJlc3MsXG4gICAgICAgICAgdmFsdWU6IFVOQVZBSUxBQkxFX1RFWFQsXG4gICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cbiAgICB0aGlzLl9pbnB1dHMgPSBpbnB1dHM7XG4gICAgdGhpcy5fb3V0cHV0cyA9IG91dHB1dHM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIHRyYW5zYWN0aW9uIHBheWxvYWRcbiAgICogQHBhcmFtIHJhd1RyYW5zYWN0aW9uIHJhdyB0cmFuc2FjdGlvbiBpbiBiYXNlNjQgZW5jb2RlZCBzdHJpbmdcbiAgICovXG4gIGVucmljaFRyYW5zYWN0aW9uRGV0YWlsc0Zyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3V0aWxzLmlzVmFsaWRIZXhTdHJpbmcocmF3VHJhbnNhY3Rpb24pKSB7XG4gICAgICB0aGlzLmNvc21vc0xpa2VUcmFuc2FjdGlvbiA9IHRoaXMuX3V0aWxzLmRlc2VyaWFsaXplVHJhbnNhY3Rpb24odG9CYXNlNjQoZnJvbUhleChyYXdUcmFuc2FjdGlvbikpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb3Ntb3NMaWtlVHJhbnNhY3Rpb24gPSB0aGlzLl91dGlscy5kZXNlcmlhbGl6ZVRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29zbW9zTGlrZVRyYW5zYWN0aW9uLnNpZ25hdHVyZSkge1xuICAgICAgdGhpcy5hZGRTaWduYXR1cmUoQnVmZmVyLmZyb20odGhpcy5jb3Ntb3NMaWtlVHJhbnNhY3Rpb24uc2lnbmF0dXJlKS50b1N0cmluZygnaGV4JykpO1xuICAgIH1cbiAgICBjb25zdCB0eXBlVXJsID0gdGhpcy5jb3Ntb3NMaWtlVHJhbnNhY3Rpb24uc2VuZE1lc3NhZ2VzWzBdLnR5cGVVcmw7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25UeXBlID0gdGhpcy5fdXRpbHMuZ2V0VHJhbnNhY3Rpb25UeXBlRnJvbVR5cGVVcmwodHlwZVVybCk7XG5cbiAgICBpZiAodHJhbnNhY3Rpb25UeXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJhbnNhY3Rpb24gdHlwZSBpcyBub3Qgc3VwcG9ydGVkICcgKyB0eXBlVXJsKTtcbiAgICB9XG4gICAgdGhpcy50cmFuc2FjdGlvblR5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cbn1cbiJdfQ==
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQVE4QjtBQUU5QiwrQ0FBcUQ7QUFDckQseURBQXNEO0FBQ3RELDBEQUEwRDtBQUMxRCwyQ0FBK0M7QUFhL0MsTUFBYSxpQkFBeUMsU0FBUSwwQkFBZTtJQU8zRSxZQUFZLFdBQWlDLEVBQUUsS0FBaUM7UUFDOUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLHFCQUFxQjtRQUN2QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxxQkFBcUIsQ0FBQyxxQkFBcUU7UUFDN0YsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHFCQUFxQixDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLE9BQWU7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsYUFBcUI7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7SUFDdEMsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixJQUFJLEVBQUU7UUFDSixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNsQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNELE9BQU8sSUFBSSxD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QUM7WUFDTixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsRixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2RixDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDbkUsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUzRSxJQUFJLGVBQWUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0NBQ0Y7QUF6WEQsOENBeVhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBFbnRyeSxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgZnJvbUhleCwgdG9CYXNlNjQgfSBmcm9tICdAY29zbWpzL2VuY29kaW5nJztcbmltcG9ydCB7IG1ha2VTaWduQnl0ZXMgfSBmcm9tICdAY29zbWpzL3Byb3RvLXNpZ25pbmcnO1xuaW1wb3J0IHsgVHhSYXcgfSBmcm9tICdjb3NtanMtdHlwZXMvY29zbW9zL3R4L3YxYmV0YTEvdHgnO1xuaW1wb3J0IHsgVU5BVkFJTEFCTEVfVEVYVCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIENvc21vc0xpa2VUcmFuc2FjdGlvbixcbiAgRGVsZWdhdGVPclVuZGVsZWdldGVNZXNzYWdlLFxuICBFeGVjdXRlQ29udHJhY3RNZXNzYWdlLFxuICBSZWRlbGVnYXRlTWVzc2FnZSxcbiAgU2VuZE1lc3NhZ2UsXG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIFR4RGF0YSxcbiAgV2l0aGRyYXdEZWxlZ2F0b3JSZXdhcmRzTWVzc2FnZSxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBDb3Ntb3NVdGlscyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQ29zbW9zVHJhbnNhY3Rpb248Q3VzdG9tTWVzc2FnZSA9IG5ldmVyPiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByb3RlY3RlZCBfY29zbW9zTGlrZVRyYW5zYWN0aW9uOiBDb3Ntb3NMaWtlVHJhbnNhY3Rpb248Q3VzdG9tTWVzc2FnZT47XG4gIHByb3RlY3RlZCBfYWNjb3VudE51bWJlcjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX2NoYWluSWQ6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgX3V0aWxzOiBDb3Ntb3NVdGlsczxDdXN0b21NZXNzYWdlPjtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4sIHV0aWxzOiBDb3Ntb3NVdGlsczxDdXN0b21NZXNzYWdlPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl91dGlscyA9IHV0aWxzO1xuICB9XG5cbiAgZ2V0IGNvc21vc0xpa2VUcmFuc2FjdGlvbigpOiBDb3Ntb3NMaWtlVHJhbnNhY3Rpb248Q3VzdG9tTWVzc2FnZT4ge1xuICAgIHJldHVybiB0aGlzLl9jb3Ntb3NMaWtlVHJhbnNhY3Rpb247XG4gIH1cblxuICBzZXQgY29zbW9zTGlrZVRyYW5zYWN0aW9uKGNvc21vc0xpa2VUcmFuc2FjdGlvbjogUmVhZG9ubHk8Q29zbW9zTGlrZVRyYW5zYWN0aW9uPEN1c3RvbU1lc3NhZ2U+Pikge1xuICAgIHRoaXMuX2Nvc21vc0xpa2VUcmFuc2FjdGlvbiA9IGNvc21vc0xpa2VUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIGdldCBjaGFpbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYWluSWQ7XG4gIH1cblxuICBzZXQgY2hhaW5JZChjaGFpbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jaGFpbklkID0gY2hhaW5JZDtcbiAgfVxuXG4gIGdldCBhY2NvdW50TnVtYmVyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2FjY291bnROdW1iZXI7XG4gIH1cblxuICBzZXQgYWNjb3VudE51bWJlcihhY2NvdW50TnVtYmVyOiBudW1iZXIpIHtcbiAgICB0aGlzLl9hY2NvdW50TnVtYmVyID0gYWNjb3VudE51bWJlcjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2lkKSB7XG4gICAgICByZXR1cm4gdGhpcy5faWQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9jb3Ntb3NMaWtlVHJhbnNhY3Rpb24/Lmhhc2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2Nvc21vc0xpa2VUcmFuc2FjdGlvbi5oYXNoO1xuICAgIH1cbiAgICByZXR1cm4gVU5BVkFJTEFCTEVfVEVYVDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9jb3Ntb3NMaWtlVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YTxDdXN0b21NZXNzYWdlPiB7XG4gICAgaWYgKCF0aGlzLl9jb3Ntb3NMaWtlVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHR4ID0gdGhpcy5fY29zbW9zTGlrZVRyYW5zYWN0aW9uO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHR5cGU6IHRoaXMuX3R5cGUsXG4gICAgICBzZXF1ZW5jZTogdHguc2VxdWVuY2UsXG4gICAgICBzZW5kTWVzc2FnZXM6IHR4LnNlbmRNZXNzYWdlcyxcbiAgICAgIGdhc0J1ZGdldDogdHguZ2FzQnVkZ2V0LFxuICAgICAgcHVibGljS2V5OiB0eC5wdWJsaWNLZXksXG4gICAgICBzaWduYXR1cmU6IHR4LnNpZ25hdHVyZSxcbiAgICAgIGFjY291bnROdW1iZXI6IHRoaXMuX2FjY291bnROdW1iZXIsXG4gICAgICBjaGFpbklkOiB0aGlzLl9jaGFpbklkLFxuICAgICAgaGFzaDogdHguaGFzaCxcbiAgICAgIG1lbW86IHR4Lm1lbW8sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBzaWduYXR1cmUgdG8gdGhlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgaW4gaGV4IGZvcm1hdFxuICAgKi9cbiAgYWRkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2lnbmF0dXJlcyA9IFtdO1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGV4cGxhaW5UcmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnaWQnLCAnb3V0cHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlT3V0cHV0cycsICdjaGFuZ2VBbW91bnQnLCAnZmVlJywgJ3R5cGUnXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG5cbiAgICBjb25zdCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIGZlZTogeyBmZWU6IHRoaXMuY29zbW9zTGlrZVRyYW5zYWN0aW9uLmdhc0J1ZGdldC5hbW91bnRbMF0uYW1vdW50IH0sXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5leHBsYWluVHJhbnNhY3Rpb25JbnRlcm5hbChyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0LlxuICAgKi9cbiAgc2V0IHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSkge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplIHRoZSB0cmFuc2FjdGlvbiB0byBhIEpTT04gc3RyaW5nXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IHNlcmlhbGl6ZWQgYmFzZTY0IGVuY29kZWQgdHJhbnNhY3Rpb25cbiAgICovXG4gIHNlcmlhbGl6ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR4UmF3ID0gdGhpcy5fdXRpbHMuY3JlYXRlVHhSYXdGcm9tQ29zbW9zTGlrZVRyYW5zYWN0aW9uKHRoaXMuY29zbW9zTGlrZVRyYW5zYWN0aW9uKTtcbiAgICBpZiAodGhpcy5jb3Ntb3NMaWtlVHJhbnNhY3Rpb24/LnB1YmxpY0tleSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX3NpZ25hdHVyZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc2lnbmVkUmF3VHggPSB0aGlzLl91dGlscy5jcmVhdGVTaWduZWRUeFJhdyhcbiAgICAgICAgdGhpcy5jb3Ntb3NMaWtlVHJhbnNhY3Rpb24ucHVibGljS2V5LFxuICAgICAgICB0aGlzLl9zaWduYXR1cmVzWzBdLFxuICAgICAgICB0eFJhd1xuICAgICAgKTtcbiAgICAgIHJldHVybiB0b0Jhc2U2NChUeFJhdy5lbmNvZGUoc2lnbmVkUmF3VHgpLmZpbmlzaCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRvQmFzZTY0KFR4UmF3LmVuY29kZSh0eFJhdykuZmluaXNoKCkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICoqL1xuICBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFxuICAgICAgbWFrZVNpZ25CeXRlcyh0aGlzLl91dGlscy5jcmVhdGVTaWduRG9jKHRoaXMuY29zbW9zTGlrZVRyYW5zYWN0aW9uLCB0aGlzLl9hY2NvdW50TnVtYmVyLCB0aGlzLl9jaGFpbklkKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBjb21wbGV0ZSBleHBsYW5hdGlvbiBmb3IgYSB0cmFuc2ZlciB0cmFuc2FjdGlvblxuICAgKiBDdXJyZW50bHkgb25seSBzdXBwb3J0cyBvbmUgbWVzc2FnZSBwZXIgdHJhbnNmZXIuXG4gICAqIEBwYXJhbSB7VHhEYXRhfSBqc29uIFRoZSB0cmFuc2FjdGlvbiBkYXRhIGluIGpzb24gZm9ybWF0XG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn0gZXhwbGFuYXRpb25SZXN1bHQgVGhlIHRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uIHRvIGJlIGNvbXBsZXRlZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn1cbiAgICovXG4gIGV4cGxhaW5UcmFuc2FjdGlvbkludGVybmFsKFxuICAgIGpzb246IFR4RGF0YTxDdXN0b21NZXNzYWdlPixcbiAgICBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvblxuICApOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBsZXQgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXTtcbiAgICBsZXQgb3V0cHV0QW1vdW50O1xuICAgIHN3aXRjaCAoanNvbi50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICBleHBsYW5hdGlvblJlc3VsdC50eXBlID0gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gICAgICAgIG91dHB1dEFtb3VudCA9IEJpZ0ludCgwKTtcbiAgICAgICAgb3V0cHV0cyA9IGpzb24uc2VuZE1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlbmRNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSBhcyBTZW5kTWVzc2FnZTtcbiAgICAgICAgICBvdXRwdXRBbW91bnQgPSBvdXRwdXRBbW91bnQgKyBCaWdJbnQoc2VuZE1lc3NhZ2UuYW1vdW50WzBdLmFtb3VudCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHNlbmRNZXNzYWdlLnRvQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogc2VuZE1lc3NhZ2UuYW1vdW50WzBdLmFtb3VudCxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICAgIGV4cGxhbmF0aW9uUmVzdWx0LnR5cGUgPSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlO1xuICAgICAgICBvdXRwdXRBbW91bnQgPSBCaWdJbnQoMCk7XG4gICAgICAgIG91dHB1dHMgPSBqc29uLnNlbmRNZXNzYWdlcy5tYXAoKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCBkZWxlZ2F0ZU1lc3NhZ2UgPSBtZXNzYWdlLnZhbHVlIGFzIERlbGVnYXRlT3JVbmRlbGVnZXRlTWVzc2FnZTtcbiAgICAgICAgICBvdXRwdXRBbW91bnQgPSBvdXRwdXRBbW91bnQgKyBCaWdJbnQoZGVsZWdhdGVNZXNzYWdlLmFtb3VudC5hbW91bnQpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhZGRyZXNzOiBkZWxlZ2F0ZU1lc3NhZ2UudmFsaWRhdG9yQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogZGVsZWdhdGVNZXNzYWdlLmFtb3VudC5hbW91bnQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGU6XG4gICAgICAgIGV4cGxhbmF0aW9uUmVzdWx0LnR5cGUgPSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGU7XG4gICAgICAgIG91dHB1dEFtb3VudCA9IEJpZ0ludCgwKTtcbiAgICAgICAgb3V0cHV0cyA9IGpzb24uc2VuZE1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRlbGVnYXRlTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUgYXMgRGVsZWdhdGVPclVuZGVsZWdldGVNZXNzYWdlO1xuICAgICAgICAgIG91dHB1dEFtb3VudCA9IG91dHB1dEFtb3VudCArIEJpZ0ludChkZWxlZ2F0ZU1lc3NhZ2UuYW1vdW50LmFtb3VudCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGRlbGVnYXRlTWVzc2FnZS52YWxpZGF0b3JBZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiBkZWxlZ2F0ZU1lc3NhZ2UuYW1vdW50LmFtb3VudCxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc6XG4gICAgICAgIGV4cGxhbmF0aW9uUmVzdWx0LnR5cGUgPSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3O1xuICAgICAgICBvdXRwdXRzID0ganNvbi5zZW5kTWVzc2FnZXMubWFwKChtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgd2l0aGRyYXdNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSBhcyBXaXRoZHJhd0RlbGVnYXRvclJld2FyZHNNZXNzYWdlO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhZGRyZXNzOiB3aXRoZHJhd01lc3NhZ2UudmFsaWRhdG9yQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogVU5BVkFJTEFCTEVfVEVYVCxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGw6XG4gICAgICAgIGV4cGxhbmF0aW9uUmVzdWx0LnR5cGUgPSBUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsO1xuICAgICAgICBvdXRwdXRBbW91bnQgPSBCaWdJbnQoMCk7XG4gICAgICAgIG91dHB1dHMgPSBqc29uLnNlbmRNZXNzYWdlcy5tYXAoKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAvL1RPRE86IEhhbmRsZSBwcmUtZW5jb2RlZCBjb250cmFjdCBjYWxsIG1lc3NhZ2VzLlxuICAgICAgICAgIGlmIChtZXNzYWdlLnZhbHVlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogVU5BVkFJTEFCTEVfVEVYVCxcbiAgICAgICAgICAgICAgYW1vdW50OiBVTkFWQUlMQUJMRV9URVhULFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZXhlY3V0ZUNvbnRyYWN0TWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUgYXMgRXhlY3V0ZUNvbnRyYWN0TWVzc2FnZTtcbiAgICAgICAgICBvdXRwdXRBbW91bnQgPSBvdXRwdXRBbW91bnQgKyBCaWdJbnQoZXhlY3V0ZUNvbnRyYWN0TWVzc2FnZS5mdW5kcz8uWzBdPy5hbW91bnQgPz8gJzAnKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWRkcmVzczogZXhlY3V0ZUNvbnRyYWN0TWVzc2FnZS5jb250cmFjdCxcbiAgICAgICAgICAgIGFtb3VudDogZXhlY3V0ZUNvbnRyYWN0TWVzc2FnZS5mdW5kcz8uWzBdPy5hbW91bnQgPz8gJzAnLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdSZWRlbGVnYXRlOlxuICAgICAgICBleHBsYW5hdGlvblJlc3VsdC50eXBlID0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdSZWRlbGVnYXRlO1xuICAgICAgICBvdXRwdXRBbW91bnQgPSBCaWdJbnQoMCk7XG4gICAgICAgIG91dHB1dHMgPSBqc29uLnNlbmRNZXNzYWdlcy5tYXAoKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCByZWRlbGVnYXRlTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUgYXMgUmVkZWxlZ2F0ZU1lc3NhZ2U7XG4gICAgICAgICAgb3V0cHV0QW1vdW50ID0gb3V0cHV0QW1vdW50ICsgQmlnSW50KHJlZGVsZWdhdGVNZXNzYWdlLmFtb3VudC5hbW91bnQpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhZGRyZXNzOiByZWRlbGVnYXRlTWVzc2FnZS52YWxpZGF0b3JEc3RBZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiByZWRlbGVnYXRlTWVzc2FnZS5hbW91bnQuYW1vdW50LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuICAgIGlmIChqc29uLm1lbW8pIHtcbiAgICAgIG91dHB1dHMuZm9yRWFjaCgob3V0cHV0KSA9PiB7XG4gICAgICAgIG91dHB1dC5tZW1vID0ganNvbi5tZW1vO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG91dHB1dEFtb3VudDogb3V0cHV0QW1vdW50Py50b1N0cmluZygpLFxuICAgICAgb3V0cHV0cyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uIHVzaW5nIHRoZSB0cmFuc2FjdGlvbiBqc29uXG4gICAqIGlmIHRoZXJlIGFyZSBvdXRwdXRzLiBGb3IgdHJhbnNhY3Rpb25zIHdpdGhvdXQgb3V0cHV0cyAoZS5nLiB3YWxsZXQgaW5pdGlhbGl6YXRpb25zKSxcbiAgICogdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBkbyBhbnl0aGluZ1xuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gdW5kZWZpbmVkIHx8ICF0aGlzLmNvc21vc0xpa2VUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiB0eXBlIG9yIGNvc21vc0xpa2VUcmFuc2FjdGlvbiBpcyBub3Qgc2V0Jyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0czogRW50cnlbXSA9IFtdO1xuICAgIGNvbnN0IGlucHV0czogRW50cnlbXSA9IFtdO1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICB0aGlzLmNvc21vc0xpa2VUcmFuc2FjdGlvbi5zZW5kTWVzc2FnZXMuZm9yRWFjaCgobWVzc2FnZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlbmRNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSBhcyBTZW5kTWVzc2FnZTtcbiAgICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBzZW5kTWVzc2FnZS5mcm9tQWRkcmVzcyxcbiAgICAgICAgICAgIHZhbHVlOiBzZW5kTWVzc2FnZS5hbW91bnRbMF0uYW1vdW50LFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBzZW5kTWVzc2FnZS50b0FkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogc2VuZE1lc3NhZ2UuYW1vdW50WzBdLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGU6XG4gICAgICAgIHRoaXMuY29zbW9zTGlrZVRyYW5zYWN0aW9uLnNlbmRNZXNzYWdlcy5mb3JFYWNoKChtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGVsZWdhdGVNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSBhcyBEZWxlZ2F0ZU9yVW5kZWxlZ2V0ZU1lc3NhZ2U7XG4gICAgICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogZGVsZWdhdGVNZXNzYWdlLmRlbGVnYXRvckFkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogZGVsZWdhdGVNZXNzYWdlLmFtb3VudC5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGRlbGVnYXRlTWVzc2FnZS52YWxpZGF0b3JBZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IGRlbGVnYXRlTWVzc2FnZS5hbW91bnQuYW1vdW50LFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc6XG4gICAgICAgIHRoaXMuY29zbW9zTGlrZVRyYW5zYWN0aW9uLnNlbmRNZXNzYWdlcy5mb3JFYWNoKChtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgd2l0aGRyYXdNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSBhcyBXaXRoZHJhd0RlbGVnYXRvclJld2FyZHNNZXNzYWdlO1xuICAgICAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHdpdGhkcmF3TWVzc2FnZS5kZWxlZ2F0b3JBZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IFVOQVZBSUxBQkxFX1RFWFQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHdpdGhkcmF3TWVzc2FnZS52YWxpZGF0b3JBZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IFVOQVZBSUxBQkxFX1RFWFQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbDpcbiAgICAgICAgdGhpcy5jb3Ntb3NMaWtlVHJhbnNhY3Rpb24uc2VuZE1lc3NhZ2VzLmZvckVhY2goKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICBpZiAobWVzc2FnZS52YWx1ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgICAgIC8vVE9ETzogSGFuZGxlIHByZS1lbmNvZGVkIGNvbnRyYWN0IGNhbGwgbWVzc2FnZXMuXG4gICAgICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgICAgIGFkZHJlc3M6IFVOQVZBSUxBQkxFX1RFWFQsXG4gICAgICAgICAgICAgIHZhbHVlOiBVTkFWQUlMQUJMRV9URVhULFxuICAgICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICAgIGFkZHJlc3M6IFVOQVZBSUxBQkxFX1RFWFQsXG4gICAgICAgICAgICAgIHZhbHVlOiBVTkFWQUlMQUJMRV9URVhULFxuICAgICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZXhlY3V0ZUNvbnRyYWN0TWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUgYXMgRXhlY3V0ZUNvbnRyYWN0TWVzc2FnZTtcbiAgICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBleGVjdXRlQ29udHJhY3RNZXNzYWdlLnNlbmRlcixcbiAgICAgICAgICAgIHZhbHVlOiBleGVjdXRlQ29udHJhY3RNZXNzYWdlLmZ1bmRzPy5bMF0/LmFtb3VudCA/PyAnMCcsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGV4ZWN1dGVDb250cmFjdE1lc3NhZ2UuY29udHJhY3QsXG4gICAgICAgICAgICB2YWx1ZTogZXhlY3V0ZUNvbnRyYWN0TWVzc2FnZS5mdW5kcz8uWzBdPy5hbW91bnQgPz8gJzAnLFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nUmVkZWxlZ2F0ZTpcbiAgICAgICAgdGhpcy5jb3Ntb3NMaWtlVHJhbnNhY3Rpb24uc2VuZE1lc3NhZ2VzLmZvckVhY2goKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCByZWRlbGVnYXRlTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUgYXMgUmVkZWxlZ2F0ZU1lc3NhZ2U7XG4gICAgICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogcmVkZWxlZ2F0ZU1lc3NhZ2UuZGVsZWdhdG9yQWRkcmVzcyxcbiAgICAgICAgICAgIHZhbHVlOiByZWRlbGVnYXRlTWVzc2FnZS5hbW91bnQuYW1vdW50LFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiByZWRlbGVnYXRlTWVzc2FnZS52YWxpZGF0b3JEc3RBZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IHJlZGVsZWdhdGVNZXNzYWdlLmFtb3VudC5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuICAgIHRoaXMuX2lucHV0cyA9IGlucHV0cztcbiAgICB0aGlzLl9vdXRwdXRzID0gb3V0cHV0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb24gcGF5bG9hZFxuICAgKiBAcGFyYW0gcmF3VHJhbnNhY3Rpb24gcmF3IHRyYW5zYWN0aW9uIGluIGJhc2U2NCBlbmNvZGVkIHN0cmluZ1xuICAgKi9cbiAgZW5yaWNoVHJhbnNhY3Rpb25EZXRhaWxzRnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdXRpbHMuaXNWYWxpZEhleFN0cmluZyhyYXdUcmFuc2FjdGlvbikpIHtcbiAgICAgIHRoaXMuY29zbW9zTGlrZVRyYW5zYWN0aW9uID0gdGhpcy5fdXRpbHMuZGVzZXJpYWxpemVUcmFuc2FjdGlvbih0b0Jhc2U2NChmcm9tSGV4KHJhd1RyYW5zYWN0aW9uKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvc21vc0xpa2VUcmFuc2FjdGlvbiA9IHRoaXMuX3V0aWxzLmRlc2VyaWFsaXplVHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb3Ntb3NMaWtlVHJhbnNhY3Rpb24uc2lnbmF0dXJlKSB7XG4gICAgICB0aGlzLmFkZFNpZ25hdHVyZShCdWZmZXIuZnJvbSh0aGlzLmNvc21vc0xpa2VUcmFuc2FjdGlvbi5zaWduYXR1cmUpLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgfVxuICAgIGNvbnN0IHR5cGVVcmwgPSB0aGlzLmNvc21vc0xpa2VUcmFuc2FjdGlvbi5zZW5kTWVzc2FnZXNbMF0udHlwZVVybDtcbiAgICBjb25zdCB0cmFuc2FjdGlvblR5cGUgPSB0aGlzLl91dGlscy5nZXRUcmFuc2FjdGlvblR5cGVGcm9tVHlwZVVybCh0eXBlVXJsKTtcblxuICAgIGlmICh0cmFuc2FjdGlvblR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUcmFuc2FjdGlvbiB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQgJyArIHR5cGVVcmwpO1xuICAgIH1cbiAgICB0aGlzLnRyYW5zYWN0aW9uVHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxufVxuIl19
@@ -1,15 +1,14 @@
1
- /// <reference types="node" />
2
- import { BaseAddress, BaseKey, PublicKey as BasePublicKey, BaseTransactionBuilder, TransactionType } from '@bitgo-beta/sdk-core';
1
+ import { BaseAddress, BaseKey, BaseTransactionBuilder, PublicKey as BasePublicKey, TransactionType } from '@bitgo-beta/sdk-core';
3
2
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
4
3
  import BigNumber from 'bignumber.js';
5
- import { DelegateOrUndelegeteMessage, FeeData, MessageData, SendMessage, WithdrawDelegatorRewardsMessage } from './iface';
4
+ import { CosmosTransactionMessage, FeeData, MessageData } from './iface';
6
5
  import { CosmosKeyPair as KeyPair } from './keyPair';
7
6
  import { CosmosTransaction } from './transaction';
8
7
  import { CosmosUtils } from './utils';
9
- export declare abstract class CosmosTransactionBuilder extends BaseTransactionBuilder {
10
- protected _transaction: CosmosTransaction;
8
+ export declare abstract class CosmosTransactionBuilder<CustomMessage = never> extends BaseTransactionBuilder {
9
+ protected _transaction: CosmosTransaction<CustomMessage>;
11
10
  protected _sequence: number;
12
- protected _messages: MessageData[];
11
+ protected _messages: MessageData<CustomMessage>[];
13
12
  protected _gasBudget: FeeData;
14
13
  protected _accountNumber?: number;
15
14
  protected _signature: Buffer;
@@ -17,16 +16,16 @@ export declare abstract class CosmosTransactionBuilder extends BaseTransactionBu
17
16
  protected _publicKey?: string;
18
17
  protected _signer: KeyPair;
19
18
  protected _memo?: string;
20
- protected _utils: CosmosUtils;
21
- constructor(_coinConfig: Readonly<CoinConfig>, _utils: CosmosUtils);
19
+ protected _utils: CosmosUtils<CustomMessage>;
20
+ constructor(_coinConfig: Readonly<CoinConfig>, _utils: CosmosUtils<CustomMessage>);
22
21
  /**
23
22
  * The transaction type.
24
23
  */
25
24
  protected abstract get transactionType(): TransactionType;
26
25
  /** @inheritdoc */
27
- protected get transaction(): CosmosTransaction;
26
+ protected get transaction(): CosmosTransaction<CustomMessage>;
28
27
  /** @inheritdoc */
29
- protected set transaction(transaction: CosmosTransaction);
28
+ protected set transaction(transaction: CosmosTransaction<CustomMessage>);
30
29
  /** @inheritDoc */
31
30
  addSignature(publicKey: BasePublicKey, signature: Buffer): void;
32
31
  /**
@@ -41,16 +40,17 @@ export declare abstract class CosmosTransactionBuilder extends BaseTransactionBu
41
40
  * - For @see TransactionType.StakingDeactivate required type is @see DelegateOrUndelegeteMessage
42
41
  * - For @see TransactionType.Send required type is @see SendMessage
43
42
  * - For @see TransactionType.StakingWithdraw required type is @see WithdrawDelegatorRewardsMessage
44
- * @param {(SendMessage | DelegateOrUndelegeteMessage | WithdrawDelegatorRewardsMessage)[]} messages
43
+ * - For @see TransactionType.ContractCall required type is @see ExecuteContractMessage
44
+ * @param {CosmosTransactionMessage[] | MessageData[]} messages
45
45
  * @returns {TransactionBuilder} This transaction builder
46
46
  */
47
- abstract messages(messages: (SendMessage | DelegateOrUndelegeteMessage | WithdrawDelegatorRewardsMessage)[]): this;
47
+ abstract messages(messages: (CosmosTransactionMessage<CustomMessage> | MessageData<CustomMessage>)[]): this;
48
48
  publicKey(publicKey: string | undefined): this;
49
49
  accountNumber(accountNumber: number | undefined): this;
50
50
  chainId(chainId: string | undefined): this;
51
51
  memo(memo: string | undefined): this;
52
52
  /** @inheritdoc */
53
- protected signImplementation(key: BaseKey): CosmosTransaction;
53
+ protected signImplementation(key: BaseKey): CosmosTransaction<CustomMessage>;
54
54
  /** @inheritdoc */
55
55
  validateValue(value: BigNumber): void;
56
56
  /** @inheritdoc */
@@ -63,20 +63,31 @@ export declare abstract class CosmosTransactionBuilder extends BaseTransactionBu
63
63
  * @returns {TransactionBuilder} this transaction builder
64
64
  */
65
65
  gasBudget(gasBudget: FeeData): this;
66
+ /**
67
+ * Sets the fee granter address for this transaction.
68
+ * The fee granter is the address that will pay the transaction fees on behalf of the signer.
69
+ * @param {string} address - The address that will pay the transaction fees
70
+ * @returns {TransactionBuilder} this transaction builder
71
+ */
72
+ feeGranter(address: string): this;
66
73
  /**
67
74
  * Initialize the transaction builder fields using the decoded transaction data
68
75
  * @param {CosmosTransaction} tx the transaction data
69
76
  */
70
- initBuilder(tx: CosmosTransaction): void;
77
+ initBuilder(tx: CosmosTransaction<CustomMessage>): void;
78
+ /**
79
+ * Creates a new CosmosTransaction instance
80
+ */
81
+ protected newTransaction(): CosmosTransaction<CustomMessage>;
71
82
  /** @inheritdoc */
72
- protected fromImplementation(rawTransaction: string): CosmosTransaction;
83
+ protected fromImplementation(rawTransaction: string): CosmosTransaction<CustomMessage>;
73
84
  /** @inheritdoc */
74
- protected buildImplementation(): Promise<CosmosTransaction>;
85
+ protected buildImplementation(): Promise<CosmosTransaction<CustomMessage>>;
75
86
  /** @inheritdoc */
76
87
  validateAddress(address: BaseAddress, addressFormat?: string): void;
77
88
  /** @inheritdoc */
78
89
  validateRawTransaction(rawTransaction: string): void;
79
90
  /** @inheritdoc */
80
- validateTransaction(transaction: CosmosTransaction): void;
91
+ validateTransaction(transaction: CosmosTransaction<CustomMessage>): void;
81
92
  }
82
93
  //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"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"}