@bitgo/account-lib 2.17.0-rc.8 → 2.17.1-rc.10

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 (47) hide show
  1. package/dist/browser/bitgo-account-lib.min.js +1 -1
  2. package/dist/browser/bitgo-account-lib.min.js.LICENSE.txt +76 -0
  3. package/dist/package.json +6 -6
  4. package/dist/src/coin/algo/ifaces.d.ts +2 -0
  5. package/dist/src/coin/algo/ifaces.d.ts.map +1 -1
  6. package/dist/src/coin/algo/ifaces.js +1 -1
  7. package/dist/src/coin/algo/transaction.d.ts.map +1 -1
  8. package/dist/src/coin/algo/transaction.js +5 -1
  9. package/dist/src/coin/algo/utils.d.ts +6 -34
  10. package/dist/src/coin/algo/utils.d.ts.map +1 -1
  11. package/dist/src/coin/algo/utils.js +18 -89
  12. package/dist/src/coin/baseCoin/blsKeyPair.d.ts.map +1 -1
  13. package/dist/src/coin/baseCoin/blsKeyPair.js +3 -6
  14. package/dist/src/coin/dot/index.d.ts +5 -0
  15. package/dist/src/coin/dot/index.d.ts.map +1 -0
  16. package/dist/src/coin/dot/index.js +29 -0
  17. package/dist/src/coin/dot/keyPair.d.ts +16 -0
  18. package/dist/src/coin/dot/keyPair.d.ts.map +1 -0
  19. package/dist/src/coin/dot/keyPair.js +45 -0
  20. package/dist/src/coin/dot/transaction.d.ts +11 -0
  21. package/dist/src/coin/dot/transaction.d.ts.map +1 -0
  22. package/dist/src/coin/dot/transaction.js +41 -0
  23. package/dist/src/coin/dot/transactionBuilder.d.ts +28 -0
  24. package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -0
  25. package/dist/src/coin/dot/transactionBuilder.js +68 -0
  26. package/dist/src/coin/dot/transactionBuilderFactory.d.ts +24 -0
  27. package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -0
  28. package/dist/src/coin/dot/transactionBuilderFactory.js +56 -0
  29. package/dist/src/coin/dot/transferBuilder.d.ts +14 -0
  30. package/dist/src/coin/dot/transferBuilder.d.ts.map +1 -0
  31. package/dist/src/coin/dot/transferBuilder.js +81 -0
  32. package/dist/src/coin/dot/utils.d.ts +16 -0
  33. package/dist/src/coin/dot/utils.d.ts.map +1 -0
  34. package/dist/src/coin/dot/utils.js +35 -0
  35. package/dist/src/coin/dot/walletInitializationBuilder.d.ts +14 -0
  36. package/dist/src/coin/dot/walletInitializationBuilder.d.ts.map +1 -0
  37. package/dist/src/coin/dot/walletInitializationBuilder.js +81 -0
  38. package/dist/src/coin/eth/transactionBuilder.d.ts +2 -0
  39. package/dist/src/coin/eth/transactionBuilder.d.ts.map +1 -1
  40. package/dist/src/coin/eth/transactionBuilder.js +24 -8
  41. package/dist/src/coin/eth/types.d.ts.map +1 -1
  42. package/dist/src/coin/eth/types.js +15 -14
  43. package/dist/src/coin/stx/transaction.js +2 -2
  44. package/dist/src/coin/stx/utils.d.ts +3 -3
  45. package/dist/src/coin/stx/utils.d.ts.map +1 -1
  46. package/dist/src/coin/stx/utils.js +22 -7
  47. package/package.json +6 -6
@@ -37,7 +37,6 @@ var seedEncoding_1 = require("./seedEncoding");
37
37
  var algoNacl = __importStar(require("algosdk/dist/cjs/src/nacl/naclWrappers"));
38
38
  var encoding = __importStar(require("algosdk/dist/cjs/src/encoding/encoding"));
39
39
  var ALGORAND_CHECKSUM_BYTE_LENGTH = 4;
40
- var ALGORAND_MINIMUM_FEE = 1000;
41
40
  var ALGORAND_SEED_LENGTH = 58;
42
41
  var ALGORAND_SEED_BYTE_LENGTH = 36;
43
42
  var ALGORAND_TRANSACTION_LENGTH = 52;
@@ -53,8 +52,9 @@ function allHexChars(maybe) {
53
52
  }
54
53
  /**
55
54
  * ConcatArrays takes two array and returns a joint array of both
56
- * @param a
57
- * @param b
55
+ *
56
+ * @param a {Buffer}
57
+ * @param b {Buffer}
58
58
  * @returns {Uint8Array} [a,b]
59
59
  */
60
60
  function concatArrays(a, b) {
@@ -155,9 +155,7 @@ var Utils = /** @class */ (function () {
155
155
  // get seed
156
156
  var seed = secretKey.slice(0, SEED_BYTES_LENGTH);
157
157
  // compute checksum
158
- var checksum = js_sha512_1.default.sha512_256
159
- .array(seed)
160
- .slice(SEED_BYTES_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, SEED_BYTES_LENGTH);
158
+ var checksum = Buffer.from(js_sha512_1.default.sha512_256.array(seed).slice(SEED_BYTES_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, SEED_BYTES_LENGTH));
161
159
  var encodedSeed = hi_base32_1.default.encode(concatArrays(seed, checksum));
162
160
  return encodedSeed.toString().slice(0, ALGORAND_SEED_LENGTH); // removing the extra '===='
163
161
  };
@@ -262,7 +260,7 @@ var Utils = /** @class */ (function () {
262
260
  if (decodedTx.txn && decodedTx.txn.type === 'keyreg') {
263
261
  decodedTx.txn.votekey = decodedTx.txn.votekey || decodedTx.msig.subsig[0].pk;
264
262
  decodedTx.txn.selkey = decodedTx.txn.selkey || decodedTx.msig.subsig[0].pk;
265
- buffer = encoding.encode(decodedTx);
263
+ buffer = decodedTx.msig || decodedTx.sig ? encoding.encode(decodedTx) : encoding.encode(decodedTx.txn);
266
264
  }
267
265
  if (this.isDecodableUnsignedAlgoTxn(buffer)) {
268
266
  return {
@@ -302,34 +300,6 @@ var Utils = /** @class */ (function () {
302
300
  throw new errors_1.InvalidTransactionError('Transaction cannot be decoded');
303
301
  }
304
302
  };
305
- /**
306
- * Estimate the transaction byte size by signing it with a random hey and calculating the byte length
307
- *
308
- * @param txInfo {Object} required fields to build a multisig transaction
309
- * @returns {number} estimated byte size of the signed transaction
310
- */
311
- Utils.prototype.getTransactionByteSize = function (txInfo) {
312
- // The txInfo for keyreg txes only contain the object for encoding with no metadata so we can't use the normal
313
- // createMultisigTransaction constructor because it will fail to construct the tx without the metadata. Since we
314
- // already have the object for encoding we can instead just estimate its size directly.
315
- if (!lodash_1.default.isUndefined(txInfo.objForEncoding)) {
316
- return txInfo.estimateSize();
317
- }
318
- var transaction = this.createMultisigTransaction(Object.assign({}, { fee: 1 }, txInfo));
319
- return transaction.estimateSize();
320
- };
321
- /**
322
- * Create a Multisig transaction object using Algorand SDK.
323
- *
324
- * @param txInfo {Object} required fields to build a multisig transaction
325
- * @returns {MultiSigTransaction} as defined in Algorand SDK
326
- */
327
- Utils.prototype.createMultisigTransaction = function (txInfo) {
328
- var note = lodash_1.default.get(txInfo, 'note', '');
329
- var convertedNote = new Uint8Array(Buffer.from(note, 'utf-8'));
330
- var refinedTx = Object.assign({}, txInfo, { note: convertedNote });
331
- return new algosdk_1.default.Transaction(refinedTx);
332
- };
333
303
  /*
334
304
  * encodeObj takes a javascript object and returns its msgpack encoding
335
305
  * Note that the encoding sorts the fields alphabetically
@@ -471,59 +441,6 @@ var Utils = /** @class */ (function () {
471
441
  }
472
442
  throw new Error('Neither an Algorand address nor a stellar pubkey.');
473
443
  };
474
- /**
475
- * Build correct fee info and fee rate for Algorand transactions.
476
- *
477
- * @param tx {Object} required fields or building fee info.
478
- * @param feeRate {number} required fee rate for building fee info.
479
- * @returns {Object} The fee information for algorand txn.
480
- */
481
- Utils.prototype.getFeeData = function (tx, feeRate) {
482
- var size = this.getTransactionByteSize(tx);
483
- var feeInfo = this.validateFeeInfo(size, { feeRate: feeRate, fee: undefined, baseFactor: 1 });
484
- if (feeInfo.fee < ALGORAND_MINIMUM_FEE) {
485
- feeInfo = this.validateFeeInfo(size, { feeRate: undefined, fee: ALGORAND_MINIMUM_FEE, baseFactor: 1 });
486
- feeRate = feeInfo.feeRate;
487
- }
488
- return { feeInfo: feeInfo, feeRate: feeRate };
489
- };
490
- /**
491
- * Check values for feeInfo building
492
- *
493
- * @param size {number} required size to check.
494
- * @param feeData {Object} required fees to check.
495
- * @returns {Object} with fee data validated.
496
- */
497
- Utils.prototype.validateFeeInfo = function (size, _a) {
498
- var feeRate = _a.feeRate, fee = _a.fee, _b = _a.baseFactor, baseFactor = _b === void 0 ? 1000 : _b;
499
- if (!Number.isSafeInteger(size) || size < 0) {
500
- throw new Error('Size must be integer positive number');
501
- }
502
- if (lodash_1.default.isUndefined(feeRate) && lodash_1.default.isUndefined(fee)) {
503
- throw new Error('Fee rate or fee are missed');
504
- }
505
- var fee_value, fee_rate;
506
- if (!lodash_1.default.isUndefined(feeRate)) {
507
- if (!Number.isSafeInteger(feeRate) || feeRate < 0) {
508
- throw new Error('FeeRate must be integer positive number');
509
- }
510
- fee_rate = feeRate;
511
- fee_value = Math.ceil((fee_rate * size) / baseFactor);
512
- }
513
- else {
514
- if (!Number.isSafeInteger(fee) || fee < 0) {
515
- throw new Error('Fee must be integer positive number');
516
- }
517
- fee_value = fee;
518
- fee_rate = Math.round((fee / size) * baseFactor);
519
- }
520
- var feeObj = {
521
- feeRate: fee_rate,
522
- fee: fee_value,
523
- size: size,
524
- };
525
- return feeObj;
526
- };
527
444
  /**
528
445
  * multisigAddress takes multisig metadata (preimage) and returns the corresponding human readable Algorand address.
529
446
  *
@@ -575,9 +492,21 @@ var Utils = /** @class */ (function () {
575
492
  var hash = Buffer.from(algoNacl.genericHash(gh));
576
493
  return hi_base32_1.default.encode(hash).slice(0, ALGORAND_TRANSACTION_LENGTH);
577
494
  };
495
+ /**
496
+ * returns if a tx is an enable or disable token tx
497
+ * @param tx - tx in JSON format
498
+ * @returns true if it's a token tx
499
+ */
500
+ Utils.prototype.getTokenTxType = function (amount, from, to, closeRemainderTo) {
501
+ var type = 'transferToken';
502
+ if (amount === '0' && from === to) {
503
+ type = !closeRemainderTo ? 'enableToken' : 'disableToken';
504
+ }
505
+ return type;
506
+ };
578
507
  return Utils;
579
508
  }());
580
509
  exports.Utils = Utils;
581
510
  var utils = new Utils();
582
511
  exports.default = utils;
583
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9hbGdvL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBOEI7QUFDOUIsNERBQWtDO0FBQ2xDLGtEQUFzQztBQUN0Qyw4Q0FBa0M7QUFDbEMsd0RBQStCO0FBQy9CLHdEQUErQjtBQUMvQixrREFBdUI7QUFDdkIsNkNBQXNGO0FBRXRGLDZDQUE4RjtBQUU5RixxQ0FBb0M7QUFDcEMsK0NBQThDO0FBQzlDLCtFQUFtRTtBQUNuRSwrRUFBbUU7QUFFbkUsSUFBTSw2QkFBNkIsR0FBRyxDQUFDLENBQUM7QUFDeEMsSUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFDbEMsSUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDaEMsSUFBTSx5QkFBeUIsR0FBRyxFQUFFLENBQUM7QUFDckMsSUFBTSwyQkFBMkIsR0FBRyxFQUFFLENBQUM7QUFDdkMsSUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFFN0I7Ozs7O0dBS0c7QUFDSCxTQUFTLFdBQVcsQ0FBQyxLQUFhO0lBQ2hDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3hCLElBQU0sQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDVCxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkIsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQ7SUFBQTtJQW9pQkEsQ0FBQztJQW5pQkMs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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFsZ29zZGsgZnJvbSAnYWxnb3Nkayc7XG5pbXBvcnQgc3RlbGxhciBmcm9tICdzdGVsbGFyLXNkayc7XG5pbXBvcnQgKiBhcyBoZXggZnJvbSAnQHN0YWJsZWxpYi9oZXgnO1xuaW1wb3J0ICogYXMgbmFjbCBmcm9tICd0d2VldG5hY2wnO1xuaW1wb3J0IGJhc2UzMiBmcm9tICdoaS1iYXNlMzInO1xuaW1wb3J0IHNoYTUxMiBmcm9tICdqcy1zaGE1MTInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGlzVmFsaWRFZDI1NTE5UHVibGljS2V5LCBpc1ZhbGlkRWQyNTUxOVNlY3JldEtleSB9IGZyb20gJy4uLy4uL3V0aWxzL2NyeXB0byc7XG5pbXBvcnQgeyBCYXNlVXRpbHMgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBJbnZhbGlkS2V5LCBOb3RJbXBsZW1lbnRlZEVycm9yLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBFbmNvZGVkVHgsIEFkZHJlc3MsIFNlZWQgfSBmcm9tICcuL2lmYWNlcyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IFNlZWRFbmNvZGluZyB9IGZyb20gJy4vc2VlZEVuY29kaW5nJztcbmltcG9ydCAqIGFzIGFsZ29OYWNsIGZyb20gJ2FsZ29zZGsvZGlzdC9janMvc3JjL25hY2wvbmFjbFdyYXBwZXJzJztcbmltcG9ydCAqIGFzIGVuY29kaW5nIGZyb20gJ2FsZ29zZGsvZGlzdC9janMvc3JjL2VuY29kaW5nL2VuY29kaW5nJztcblxuY29uc3QgQUxHT1JBTkRfQ0hFQ0tTVU1fQllURV9MRU5HVEggPSA0O1xuY29uc3QgQUxHT1JBTkRfTUlOSU1VTV9GRUUgPSAxMDAwO1xuY29uc3QgQUxHT1JBTkRfU0VFRF9MRU5HVEggPSA1ODtcbmNvbnN0IEFMR09SQU5EX1NFRURfQllURV9MRU5HVEggPSAzNjtcbmNvbnN0IEFMR09SQU5EX1RSQU5TQUNUSU9OX0xFTkdUSCA9IDUyO1xuY29uc3QgU0VFRF9CWVRFU19MRU5HVEggPSAzMjtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHN0cmluZyBpcyBhIGNvbXBvc2VkIG9mIGhleCBjaGFycyBvbmx5LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXliZSBUaGUgc3RyaW5nIHRvIGJlIHZhbGlkYXRlZC5cbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSBzdHJpbmcgY29uc2lzdHMgb2Ygb25seSBoZXggY2hhcmFjdGVycywgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5mdW5jdGlvbiBhbGxIZXhDaGFycyhtYXliZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXihbMC05YS1mXXsyfSkrJC9pLnRlc3QobWF5YmUpO1xufVxuXG4vKipcbiAqIENvbmNhdEFycmF5cyB0YWtlcyB0d28gYXJyYXkgYW5kIHJldHVybnMgYSBqb2ludCBhcnJheSBvZiBib3RoXG4gKiBAcGFyYW0gYVxuICogQHBhcmFtIGJcbiAqIEByZXR1cm5zIHtVaW50OEFycmF5fSBbYSxiXVxuICovXG5mdW5jdGlvbiBjb25jYXRBcnJheXMoYSwgYikge1xuICBjb25zdCBjID0gbmV3IFVpbnQ4QXJyYXkoYS5sZW5ndGggKyBiLmxlbmd0aCk7XG4gIGMuc2V0KGEpO1xuICBjLnNldChiLCBhLmxlbmd0aCk7XG4gIHJldHVybiBjO1xufVxuXG5leHBvcnQgY2xhc3MgVXRpbHMgaW1wbGVtZW50cyBCYXNlVXRpbHMge1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGFsZ29zZGsuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHR4SWQubGVuZ3RoICE9PSAxMDQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWxsSGV4Q2hhcnModHhJZCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShrZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5U2VjcmV0S2V5KGtleSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBoZXggc3RyaW5nIG9mIHRoZSBnaXZlbiBidWZmZXJcbiAgICpcbiAgICogQHBhcmFtIHtCdWZmZXIgfCBVaW50OEFycmF5fSBidWZmZXIgLSB0aGUgYnVmZmVyIHRvIGJlIGNvbnZlcnRlZCB0byBoZXhcbiAgICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgaGV4IHZhbHVlXG4gICAqL1xuICB0b0hleChidWZmZXI6IEJ1ZmZlciB8IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiBoZXguZW5jb2RlKGJ1ZmZlciwgdHJ1ZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdpc1ZhbGlkU2lnbmF0dXJlIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignaGFzaCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZSB0d28gS2V5c1xuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGtleTEgLSBrZXkgdG8gYmUgY29tcGFyZVxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGtleTIgLSBrZXkgdG8gYmUgY29tcGFyZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSByZXR1cm5zIHRydWUgaWYgYm90aCBrZXlzIGFyZSBlcXVhbFxuICAgKi9cbiAgYXJlS2V5c0VxdWFsKGtleTE6IFVpbnQ4QXJyYXksIGtleTI6IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbmFjbC52ZXJpZnkoa2V5MSwga2V5Mik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIFVpbnQ4QXJyYXkgb2YgdGhlIGdpdmVuIGhleCBzdHJpbmdcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0ciAtIHRoZSBoZXggc3RyaW5nIHRvIGJlIGNvbnZlcnRlZFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBVaW50OEFycmF5IHZhbHVlXG4gICAqL1xuICB0b1VpbnQ4QXJyYXkoc3RyOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oc3RyLCAnaGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgc2VlZCBpcyB2YWxpZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlZWQgLSB0aGUgc2VlZCB0byBiZSB2YWxpZGF0ZWRcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gdHJ1ZSBpZiB0aGUgc2VlZCBpcyB2YWxpZFxuICAgKi9cbiAgaXNWYWxpZFNlZWQoc2VlZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBzZWVkICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKHNlZWQubGVuZ3RoICE9PSBBTEdPUkFORF9TRUVEX0xFTkdUSCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gVHJ5IHRvIGRlY29kZVxuICAgIGxldCBkZWNvZGVkO1xuICAgIHRyeSB7XG4gICAgICBkZWNvZGVkID0gdGhpcy5kZWNvZGVTZWVkKHNlZWQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDb21wdXRlIGNoZWNrc3VtXG4gICAgY29uc3QgY2hlY2tzdW0gPSBuZXcgVWludDhBcnJheShcbiAgICAgIHNoYTUxMi5zaGE1MTJfMjU2LmFycmF5KGRlY29kZWQuc2VlZCkuc2xpY2UoU0VFRF9CWVRFU19MRU5HVEggLSBBTEdPUkFORF9DSEVDS1NVTV9CWVRFX0xFTkdUSCwgU0VFRF9CWVRFU19MRU5HVEgpLFxuICAgICk7XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgY2hlY2tzdW0gbWF0Y2hlcyB0aGUgb25lIGZyb20gdGhlIGRlY29kZWQgc2VlZFxuICAgIHJldHVybiBfLmlzRXF1YWwoY2hlY2tzdW0sIGRlY29kZWQuY2hlY2tzdW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZSBhbiBhbGdvIHNlZWRcbiAgICpcbiAgICogQHBhcmFtICB7QnVmZmVyfSBzZWNyZXRLZXkgLSB0aGUgdmFsaWQgc2VjcmV0S2V5IC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgc2VlZCB0byBiZSB2YWxpZGF0ZWQuXG4gICAqL1xuICBlbmNvZGVTZWVkKHNlY3JldEtleTogQnVmZmVyKTogc3RyaW5nIHtcbiAgICAvLyBnZXQgc2VlZFxuICAgIGNvbnN0IHNlZWQgPSBzZWNyZXRLZXkuc2xpY2UoMCwgU0VFRF9CWVRFU19MRU5HVEgpO1xuICAgIC8vIGNvbXB1dGUgY2hlY2tzdW1cbiAgICBjb25zdCBjaGVja3N1bSA9IHNoYTUxMi5zaGE1MTJfMjU2XG4gICAgICAuYXJyYXkoc2VlZClcbiAgICAgIC5zbGljZShTRUVEX0JZVEVTX0xFTkdUSCAtIEFMR09SQU5EX0NIRUNLU1VNX0JZVEVfTEVOR1RILCBTRUVEX0JZVEVTX0xFTkdUSCk7XG4gICAgY29uc3QgZW5jb2RlZFNlZWQgPSBiYXNlMzIuZW5jb2RlKGNvbmNhdEFycmF5cyhzZWVkLCBjaGVja3N1bSkpO1xuXG4gICAgcmV0dXJuIGVuY29kZWRTZWVkLnRvU3RyaW5nKCkuc2xpY2UoMCwgQUxHT1JBTkRfU0VFRF9MRU5HVEgpOyAvLyByZW1vdmluZyB0aGUgZXh0cmEgJz09PT0nXG4gIH1cblxuICAvKipcbiAgICogZGVjb2RlU2VlZCBkZWNvZGVzIGFuIGFsZ28gc2VlZFxuICAgKlxuICAgKiBEZWNvZGluZyBhbGdvIHNlZWQgaXMgc2FuZSBhcyBkZWNvZGluZyBhZGRyZXNzLlxuICAgKiBMYXRlc3QgdmVyc2lvbiBvZiBhbGdvIHNkayAoMS45LCBhdCB0aGlzIHdyaXRpbmcpIGRvZXMgbm90IGV4cG9zZSBleHBsaWNpdCBtZXRob2QgZm9yIGRlY29kaW5nIHNlZWRcbiAgICogaGVuY2UsIHRoaXMgcm91dGluZSB1c2VzIGRlY29kZUFkZHJlc3MgYW5kIGNoYW5nZXMgdGhlIHJldHVybiBzdHJ1Y3R1cmVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlZWQgLSB0aGUgc2VlZCB0byBiZSB2YWxpZGF0ZWQuXG4gICAqIEByZXR1cm5zIHtTZWVkfSAtIHRoZSBvYmplY3QgU2VlZFxuICAgKi9cbiAgZGVjb2RlU2VlZChzZWVkOiBzdHJpbmcpOiBTZWVkIHtcbiAgICAvLyB0cnkgdG8gZGVjb2RlXG4gICAgY29uc3QgZGVjb2RlZCA9IGJhc2UzMi5kZWNvZGUuYXNCeXRlcyhzZWVkKTtcblxuICAgIC8vIFNhbml0eSBjaGVja1xuICAgIGlmIChkZWNvZGVkLmxlbmd0aCAhPT0gQUxHT1JBTkRfU0VFRF9CWVRFX0xFTkdUSCkgdGhyb3cgbmV3IEVycm9yKCdzZWVkIHNlZW1zIHRvIGJlIG1hbGZvcm1lZCcpO1xuICAgIHJldHVybiB7XG4gICAgICBzZWVkOiBuZXcgVWludDhBcnJheShkZWNvZGVkLnNsaWNlKDAsIEFMR09SQU5EX1NFRURfQllURV9MRU5HVEggLSBBTEdPUkFORF9DSEVDS1NVTV9CWVRFX0xFTkdUSCkpLFxuICAgICAgY2hlY2tzdW06IG5ldyBVaW50OEFycmF5KGRlY29kZWQuc2xpY2UoU0VFRF9CWVRFU19MRU5HVEgsIEFMR09SQU5EX1NFRURfQllURV9MRU5HVEgpKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIHNpZ25hdHVyZSBmb3IgbWVzc2FnZSBpcyB2YWxpZC5cbiAgICpcbiAgICogQHBhcmFtIHB1YiB7VWludDhBcnJheX0gcHVibGljIGtleVxuICAgKiBAcGFyYW0gbWVzc2FnZSB7VWludDhBcnJheX0gc2lnbmVkIG1lc3NhZ2VcbiAgICogQHBhcmFtIHNpZ25hdHVyZSB7QnVmZmVyfSBzaWduYXR1cmUgdG8gdmVyaWZ5XG4gICAqIEByZXR1cm5zIHtCb29sZWFufSB0cnVlIGlmIHNpZ25hdHVyZSBpcyB2YWxpZC5cbiAgICovXG4gIHZlcmlmeVNpZ25hdHVyZShtZXNzYWdlOiBVaW50OEFycmF5LCBzaWduYXR1cmU6IEJ1ZmZlciwgcHViOiBVaW50OEFycmF5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5hY2wuc2lnbi5kZXRhY2hlZC52ZXJpZnkobWVzc2FnZSwgc2lnbmF0dXJlLCBwdWIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgYW4gRWQyNTUxOSBwdWJsaWMga2V5IGludG8gYW4gYWxnb3JhbmQgYWRkcmVzcy5cbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBwayBUaGUgRWQyNTUxOSBwdWJsaWMga2V5LlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmFsZ29yYW5kLm9yZy9kb2NzL2ZlYXR1cmVzL2FjY291bnRzLyN0cmFuc2Zvcm1hdGlvbi1wdWJsaWMta2V5LXRvLWFsZ29yYW5kLWFkZHJlc3NcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGFsZ29yYW5kIGFkZHJlc3MuXG4gICAqL1xuICBwdWJsaWNLZXlUb0FsZ29BZGRyZXNzKHBrOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEtleVBhaXIoeyBwdWI6IEJ1ZmZlci5mcm9tKHBrKS50b1N0cmluZygnaGV4JykgfSkuZ2V0QWRkcmVzcygpO1xuICB9XG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSB1bnNpZ25lZCBhbGdvIHRyYW5zYWN0aW9uIGNhbiBiZSBkZWNvZGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IHR4biBUaGUgZW5jb2RlZCB1bnNpZ25lZCB0cmFuc2FjdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHRyYW5zYWN0aW9uIGNhbiBiZSBkZWNvZGVkLCBvdGhlcndpc2UgZmFsc2VcbiAgICovXG4gIHByb3RlY3RlZCBpc0RlY29kYWJsZVVuc2lnbmVkQWxnb1R4bih0eG46IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgYWxnb3Nkay5kZWNvZGVVbnNpZ25lZFRyYW5zYWN0aW9uKHR4bik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChfOiB1bmtub3duKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHNpZ25lZCBhbGdvIHRyYW5zYWN0aW9uIGNhbiBiZSBkZWNvZGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IHR4biBUaGUgZW5jb2RlZCBzaWduZWQgdHJhbnNhY3Rpb24uXG4gICAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSB0cmFuc2FjdGlvbiBjYW4gYmUgZGVjb2RlZCwgb3RoZXJ3aXNlIGZhbHNlXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNEZWNvZGFibGVTaWduZWRUcmFuc2FjdGlvbih0eG46IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgYWxnb3Nkay5kZWNvZGVTaWduZWRUcmFuc2FjdGlvbih0eG4pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoXzogdW5rbm93bikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIGEgc2lnbmVkIG9yIHVuc2lnbmVkIGFsZ28gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheSB8IHN0cmluZ30gdHhuQnl0ZXMgVGhlIGVuY29kZWQgdW5zaWduZWQgb3Igc2lnbmVkIHR4bi5cbiAgICogQHJldHVybnMge0VuY29kZWRUeH0gVGhlIGRlY29kZWQgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBkZWNvZGVBbGdvVHhuKHR4bkJ5dGVzOiBVaW50OEFycmF5IHwgc3RyaW5nKTogRW5jb2RlZFR4IHtcbiAgICBsZXQgYnVmZmVyOiBCdWZmZXI7XG4gICAgaWYgKHR5cGVvZiB0eG5CeXRlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChhbGxIZXhDaGFycyh0eG5CeXRlcykpIHtcbiAgICAgICAgYnVmZmVyID0gQnVmZmVyLmZyb20odHhuQnl0ZXMsICdoZXgnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHR4bkJ5dGVzLCAnYmFzZTY0Jyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHR4bkJ5dGVzKTtcbiAgICB9XG5cbiAgICAvLyBJbiBvcmRlciB0byBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGtleXJlZyB0cmFuc2FjdGlvbnMgZW5jb2RlZCB3aXRoXG4gICAgLy8gZm9ya2VkIGFsZ29zZGsgMS4yLjAgKGh0dHBzOi8vZ2l0aHViLmNvbS9CaXRHby9hbGdvc2RrLWJpdGdvKSxcbiAgICAvLyB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb24gaXMgZXh0cmFjdGVkIGFuZCBwYXJzZWQgZm9sbG93aW5nIHRoZSBsYXRlc3QgYWxnb3Nka1xuICAgIC8vIHJlbGVhc2Ugc3RhbmRhcmQuXG4gICAgLy8gVGhpcyB3YXkgd2UgY2FuIGRlY29kZSB0cmFuc2FjdGlvbnMgc3VjY2Vzc2Z1bGx5IGJ5IHN0aWxsIG1haW50YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAgY29uc3QgZGVjb2RlZFR4ID0gZW5jb2RpbmcuZGVjb2RlKGJ1ZmZlcik7XG4gICAgaWYgKGRlY29kZWRUeC50eG4gJiYgZGVjb2RlZFR4LnR4bi50eXBlID09PSAna2V5cmVnJykge1xuICAgICAgZGVjb2RlZFR4LnR4bi52b3Rla2V5ID0gZGVjb2RlZFR4LnR4bi52b3Rla2V5IHx8IGRlY29kZWRUeC5tc2lnLnN1YnNpZ1swXS5waztcbiAgICAgIGRlY29kZWRUeC50eG4uc2Vsa2V5ID0gZGVjb2RlZFR4LnR4bi5zZWxrZXkgfHwgZGVjb2RlZFR4Lm1zaWcuc3Vic2lnWzBdLnBrO1xuICAgICAgYnVmZmVyID0gZW5jb2RpbmcuZW5jb2RlKGRlY29kZWRUeCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNEZWNvZGFibGVVbnNpZ25lZEFsZ29UeG4oYnVmZmVyKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmF3VHJhbnNhY3Rpb246IG5ldyBVaW50OEFycmF5KGJ1ZmZlciksXG4gICAgICAgIHR4bjogYWxnb3Nkay5kZWNvZGVVbnNpZ25lZFRyYW5zYWN0aW9uKGJ1ZmZlciksXG4gICAgICAgIHNpZ25lZDogZmFsc2UsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0RlY29kYWJsZVNpZ25lZFRyYW5zYWN0aW9uKGJ1ZmZlcikpIHtcbiAgICAgIC8vIFRPRE86IFJlcGxhY2Ugd2l0aFxuICAgICAgLy8gcmV0dXJuIGFsZ29zZGsuVHJhbnNhY3Rpb24uZnJvbV9vYmpfZm9yX2VuY29kaW5nKGFsZ29zZGsuZGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24oYnVmZmVyKS50eG4pO1xuICAgICAgLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmQvanMtYWxnb3JhbmQtc2RrL2lzc3Vlcy8zNjRcbiAgICAgIC8vIFwiLi4uc29tZSBwYXJ0cyBvZiB0aGUgY29kZWJhc2UgdHJlYXQgdGhlIG91dHB1dCBvZiBUcmFuc2FjdGlvbi5mcm9tX29ial9mb3JfZW5jb2RpbmcgYXMgRW5jb2RlZFRyYW5zYWN0aW9uLlxuICAgICAgLy8gVGhleSBuZWVkIHRvIGJlIGZpeGVkKG9yIHdlIGF0IGxlYXN0IG5lZWQgdG8gbWFrZSBpdCBzbyBUcmFuc2FjdGlvbiBjb25mb3JtcyB0byBFbmNvZGVkVHJhbnNhY3Rpb24pLlwiXG4gICAgICBjb25zdCB0eCA9IGFsZ29zZGsuZGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24oYnVmZmVyKTtcblxuICAgICAgY29uc3Qgc2lnbmVyczogc3RyaW5nW10gPSBbXTtcbiAgICAgIGNvbnN0IHNpZ25lZEJ5OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgaWYgKHR4Lm1zaWcgJiYgdHgubXNpZy5zdWJzaWcpIHtcbiAgICAgICAgZm9yIChjb25zdCBzaWcgb2YgdHgubXNpZy5zdWJzaWcpIHtcbiAgICAgICAgICBjb25zdCBhZGRyID0gYWxnb3Nkay5lbmNvZGVBZGRyZXNzKHNpZy5wayk7XG4gICAgICAgICAgc2lnbmVycy5wdXNoKGFkZHIpO1xuICAgICAgICAgIGlmIChzaWcucykge1xuICAgICAgICAgICAgc2lnbmVkQnkucHVzaChhZGRyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmF3VHJhbnNhY3Rpb246IG5ldyBVaW50OEFycmF5KGJ1ZmZlciksXG4gICAgICAgIHR4bjogdHgudHhuLFxuICAgICAgICBzaWduZWQ6IHRydWUsXG4gICAgICAgIHNpZ25lcnM6IHNpZ25lcnMsXG4gICAgICAgIHNpZ25lZEJ5OiBzaWduZWRCeSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gY2Fubm90IGJlIGRlY29kZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXN0aW1hdGUgdGhlIHRyYW5zYWN0aW9uIGJ5dGUgc2l6ZSBieSBzaWduaW5nIGl0IHdpdGggYSByYW5kb20gaGV5IGFuZCBjYWxjdWxhdGluZyB0aGUgYnl0ZSBsZW5ndGhcbiAgICpcbiAgICogQHBhcmFtIHR4SW5mbyB7T2JqZWN0fSByZXF1aXJlZCBmaWVsZHMgdG8gYnVpbGQgYSBtdWx0aXNpZyB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBlc3RpbWF0ZWQgYnl0ZSBzaXplIG9mIHRoZSBzaWduZWQgdHJhbnNhY3Rpb25cbiAgICovXG4gIGdldFRyYW5zYWN0aW9uQnl0ZVNpemUodHhJbmZvKTogbnVtYmVyIHtcbiAgICAvLyBUaGUgdHhJbmZvIGZvciBrZXlyZWcgdHhlcyBvbmx5IGNvbnRhaW4gdGhlIG9iamVjdCBmb3IgZW5jb2Rpbmcgd2l0aCBubyBtZXRhZGF0YSBzbyB3ZSBjYW4ndCB1c2UgdGhlIG5vcm1hbFxuICAgIC8vIGNyZWF0ZU11bHRpc2lnVHJhbnNhY3Rpb24gY29uc3RydWN0b3IgYmVjYXVzZSBpdCB3aWxsIGZhaWwgdG8gY29uc3RydWN0IHRoZSB0eCB3aXRob3V0IHRoZSBtZXRhZGF0YS4gU2luY2Ugd2VcbiAgICAvLyBhbHJlYWR5IGhhdmUgdGhlIG9iamVjdCBmb3IgZW5jb2Rpbmcgd2UgY2FuIGluc3RlYWQganVzdCBlc3RpbWF0ZSBpdHMgc2l6ZSBkaXJlY3RseS5cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQodHhJbmZvLm9iakZvckVuY29kaW5nKSkge1xuICAgICAgcmV0dXJuIHR4SW5mby5lc3RpbWF0ZVNpemUoKTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuY3JlYXRlTXVsdGlzaWdUcmFuc2FjdGlvbihPYmplY3QuYXNzaWduKHt9LCB7IGZlZTogMSB9LCB0eEluZm8pKTtcbiAgICByZXR1cm4gdHJhbnNhY3Rpb24uZXN0aW1hdGVTaXplKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgTXVsdGlzaWcgdHJhbnNhY3Rpb24gb2JqZWN0IHVzaW5nIEFsZ29yYW5kIFNESy5cbiAgICpcbiAgICogQHBhcmFtIHR4SW5mbyB7T2JqZWN0fSByZXF1aXJlZCBmaWVsZHMgdG8gYnVpbGQgYSBtdWx0aXNpZyB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7TXVsdGlTaWdUcmFuc2FjdGlvbn0gYXMgZGVmaW5lZCBpbiBBbGdvcmFuZCBTREtcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVNdWx0aXNpZ1RyYW5zYWN0aW9uKHR4SW5mbyk6IGFueSB7XG4gICAgY29uc3Qgbm90ZSA9IF8uZ2V0KHR4SW5mbywgJ25vdGUnLCAnJyk7XG4gICAgY29uc3QgY29udmVydGVkTm90ZSA9IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKG5vdGUsICd1dGYtOCcpKTtcbiAgICBjb25zdCByZWZpbmVkVHggPSBPYmplY3QuYXNzaWduKHt9LCB0eEluZm8sIHsgbm90ZTogY29udmVydGVkTm90ZSB9KTtcblxuICAgIHJldHVybiBuZXcgYWxnb3Nkay5UcmFuc2FjdGlvbihyZWZpbmVkVHgpO1xuICB9XG4gIC8qXG4gICAqIGVuY29kZU9iaiB0YWtlcyBhIGphdmFzY3JpcHQgb2JqZWN0IGFuZCByZXR1cm5zIGl0cyBtc2dwYWNrIGVuY29kaW5nXG4gICAqIE5vdGUgdGhhdCB0aGUgZW5jb2Rpbmcgc29ydHMgdGhlIGZpZWxkcyBhbHBoYWJldGljYWxseVxuICAgKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsIGFueT59IG9iaiBqcyBvYmpcbiAgICogQHJldHVybnMge1VpbnQ4QXJyYXl9IFVpbnQ4QXJyYXkgYmluYXJ5IHJlcHJlc2VudGF0aW9uXG4gICAqL1xuICBlbmNvZGVPYmoob2JqOiBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLCBhbnk+KTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIGFsZ29zZGsuZW5jb2RlT2JqKG9iaik7XG4gIH1cblxuICAvKipcbiAgICogZGVjb2RlT2JqIHRha2VzIGEgVWludDhBcnJheSBhbmQgcmV0dXJucyBpdHMgamF2YXNjcmlwdCBvYmpcbiAgICogQHBhcmFtIG8gLSBVaW50OEFycmF5IHRvIGRlY29kZVxuICAgKiBAcmV0dXJucyBvYmplY3RcbiAgICovXG4gIGRlY29kZU9iaihvOiBBcnJheUxpa2U8bnVtYmVyPik6IHVua25vd24ge1xuICAgIHJldHVybiBhbGdvc2RrLmRlY29kZU9iaihvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzZWNyZXRLZXlUb01uZW1vbmljIHRha2UgYW4gQWxnb3JhbnQgc2VjcmV0IGtleSBhbmQgcmV0dXJucyB0aGUgY29ycmVzc3BvbmRpbmcgbW5lbW9uaWNcbiAgICpcbiAgICogQHBhcmFtIHNrIC0gQWxnb3JhbnQgc2VjcmV0IGtleVxuICAgKiBAcmV0dXJuIFNlY3JldCBrZXkgaXMgYXNzb2NpYXRlZCBtbmVtb25pY1xuICAgKi9cbiAgc2VjcmV0S2V5VG9NbmVtb25pYyhzazogQnVmZmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBza1ZhbGlkID0gQnVmZmVyLmZyb20oc2sudG9TdHJpbmcoJ2hleCcpKTtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZFByaXZhdGVLZXkoc2tWYWxpZC50b1N0cmluZygnaGV4JykpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEtleShgVGhlIHNlY3JldCBrZXk6ICR7c2sudG9TdHJpbmcoJ2hleCcpfSBpcyBpbnZhbGlkYCk7XG4gICAgfVxuICAgIGNvbnN0IHNrVW5pdDhBcnJheSA9IEJ1ZmZlci5mcm9tKHNrKTtcbiAgICByZXR1cm4gYWxnb3Nkay5zZWNyZXRLZXlUb01uZW1vbmljKHNrVW5pdDhBcnJheSk7XG4gIH1cblxuICAvKipcbiAgICogc2VlZEZyb21NbmVtb25pYyBjb252ZXJ0cyBhIG1uZW1vbmljIGdlbmVyYXRlZCB1c2luZyB0aGlzIGxpYnJhcnkgaW50byB0aGUgc291cmNlIGtleSB1c2VkIHRvIGNyZWF0ZSBpdFxuICAgKiBJdCByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBwYXNzZWQgbW5lbW9uaWMgaGFzIGFuIGluY29ycmVjdCBjaGVja3N1bSwgaWYgdGhlIG51bWJlciBvZiB3b3JkcyBpcyB1bmV4cGVjdGVkLCBvciBpZiBvbmVcbiAgICogb2YgdGhlIHBhc3NlZCB3b3JkcyBpcyBub3QgZm91bmQgaW4gdGhlIHdvcmRzIGxpc3RcbiAgICpcbiAgICogQHBhcmFtIG1uZW1vbmljIC0gMjUgd29yZHMgbW5lbW9uaWNcbiAgICogQHJldHVybnMgMzIgYnl0ZXMgbG9uZyBzZWVkXG4gICAqL1xuICBzZWVkRnJvbU1uZW1vbmljKG1uZW1vbmljOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gYWxnb3Nkay5tbmVtb25pY1RvTWFzdGVyRGVyaXZhdGlvbktleShtbmVtb25pYyk7XG4gIH1cblxuICAvKipcbiAgICoga2V5UGFpckZyb21TZWVkIGdlbmVyYXRlcyBhbiBvYmplY3Qgd2l0aCBzZWNyZXRLZXkgYW5kIHB1YmxpY0tleSB1c2luZyB0aGUgYWxnb3Nka1xuICAgKiBAcGFyYW0gc2VlZCAzMiBieXRlcyBsb25nIHNlZWRcbiAgICogQHJldHVybnMgS2V5UGFpclxuICAgKi9cbiAga2V5UGFpckZyb21TZWVkKHNlZWQ6IFVpbnQ4QXJyYXkpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBtbiA9IHRoaXMubW5lbW9uaWNGcm9tU2VlZChzZWVkKTtcbiAgICBjb25zdCBiYXNlNjRQcml2YXRlS2V5ID0gYWxnb3Nkay5tbmVtb25pY1RvU2VjcmV0S2V5KG1uKS5zaztcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVLZXlQYWlyKGJhc2U2NFByaXZhdGVLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEgbmV3IGBLZXlQYWlyYCBvYmplY3QgZnJvbSB0aGUgZ2l2ZW4gcHJpdmF0ZSBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSBiYXNlNjRQcml2YXRlS2V5IDY0IGJ5dGVzIGxvbmcgcHJpdmF0ZUtleVxuICAgKiBAcmV0dXJucyBLZXlQYWlyXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlS2V5UGFpcihiYXNlNjRQcml2YXRlS2V5OiBVaW50OEFycmF5KTogS2V5UGFpciB7XG4gICAgY29uc3Qgc2sgPSBiYXNlNjRQcml2YXRlS2V5LnNsaWNlKDAsIDMyKTtcbiAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwcnY6IEJ1ZmZlci5mcm9tKHNrKS50b1N0cmluZygnaGV4JykgfSk7XG4gICAgcmV0dXJuIGtleVBhaXI7XG4gIH1cblxuICAvKipcbiAgICogZGVjb2RlUHJpdmF0ZUtleSBnZW5lcmF0ZXMgYSBzZWVkIHdpdGggYSBtbmVtb25pYyBhbmQgdXNpbmcgYWxnb3Nkay5cbiAgICpcbiAgICogQHBhcmFtIHNlZWQgMzIgYnl0ZXMgbG9uZyBzZWVkXG4gICAqIEByZXR1cm5zIG1uZW1vbmljIC0gMjUgd29yZHMgbW5lbW9uaWMgLSAyNSB3b3JkcyBtbmVtb25pY1xuICAgKi9cbiAgcHJvdGVjdGVkIG1uZW1vbmljRnJvbVNlZWQoc2VlZDogVWludDhBcnJheSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFsZ29zZGsubWFzdGVyRGVyaXZhdGlvbktleVRvTW5lbW9uaWMoc2VlZCk7XG4gIH1cblxuICAvKipcbiAgICogaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXlTdGVsbGFyIHZhbGlkYXRlIHRoZSBrZXkgd2l0aCB0aGUgc3RlbGxhci1zZGtcbiAgICpcbiAgICogQHBhcmFtIHB1YmxpY0tleVxuICAgKiBAcmV0dXJucyBib29sZGVhblxuICAgKi9cbiAgcHJvdGVjdGVkIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5U3RlbGxhcihwdWJsaWNLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGVsbGFyLlN0cktleS5pc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShwdWJsaWNLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGRlY29kZUVkMjU1MTlQdWJsaWNLZXlTdGVsbGFyIGRlY29kZSB0aGUga2V5IHdpdGggdGhlIHN0ZWxsYXItc2RrXG4gICAqXG4gICAqIEBwYXJhbSBwdWJsaWNLZXlcbiAgICogQHJldHVybnMgQnVmZmVyXG4gICAqL1xuICBwcm90ZWN0ZWQgZGVjb2RlRWQyNTUxOVB1YmxpY0tleVN0ZWxsYXIocHVibGljS2V5OiBzdHJpbmcpOiBCdWZmZXIge1xuICAgIHJldHVybiBzdGVsbGFyLlN0cktleS5kZWNvZGVFZDI1NTE5UHVibGljS2V5KHB1YmxpY0tleSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIHN0ZWxsYXIgc2VlZCB0byBhbGdvcmFuZCBlbmNvZGluZ1xuICAgKlxuICAgKiBAcGFyYW0gc2VlZFxuICAgKiBAcmV0dXJucyBzdHJpbmcgdGhlIGVuY29kZWQgc2VlZFxuICAgKi9cbiAgY29udmVydEZyb21TdGVsbGFyU2VlZChzZWVkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBTZWVkRW5jb2RpbmcuZW5jb2RlKHN0ZWxsYXIuU3RyS2V5LmRlY29kZUVkMjU1MTlTZWNyZXRTZWVkKHNlZWQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBlbmNvZGVBZGRyZXNzIHJldHVybiBhbiBhZGRyZXMgZW5jb2Rpbmcgd2l0aCBhbGdvc2RrXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyXG4gICAqIEByZXR1cm5zIHN0cmluZ1xuICAgKi9cbiAgZW5jb2RlQWRkcmVzcyhhZGRyOiBCdWZmZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBhbGdvc2RrLmVuY29kZUFkZHJlc3MoYWRkcik7XG4gIH1cblxuICAvKipcbiAgICogZGVjb2RlQWRkcmVzcyByZXR1cm4gYW4gYWRkcmVzIGRlY29kaW5nIHdpdGggYWxnb3Nka1xuICAgKlxuICAgKiBAcGFyYW0gYWRkclxuICAgKiBAcmV0dXJucyBBZGRyZXNzXG4gICAqL1xuICBkZWNvZGVBZGRyZXNzKGFkZHI6IHN0cmluZyk6IEFkZHJlc3Mge1xuICAgIHJldHVybiBhbGdvc2RrLmRlY29kZUFkZHJlc3MoYWRkcik7XG4gIH1cblxuICAvKipcbiAgICpzdGVsbGFyQWRkcmVzc1RvQWxnb0FkZHJlc3MgcmV0dXJucyBhbiBhZGRyZXNzIGFsZ28gb2YgYWxnb1xuICAgKmlmIGlzIHNlbnQgYW4geG1sQWRkcmVzcyBpZiBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHNhbWUgYWRkcmVzcy5cbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3NPclB1YktleVxuICAgKiBAcmV0dXJucyBhZGRyZXNzIGFsZ28gc3RyaW5nXG4gICAqL1xuICBzdGVsbGFyQWRkcmVzc1RvQWxnb0FkZHJlc3MoYWRkcmVzc09yUHViS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIHdlIGhhdmUgYW4gQWxnb3JhbmQgYWRkcmVzc1xuICAgIGlmICh0aGlzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3NPclB1YktleSkpIHtcbiAgICAgIHJldHVybiBhZGRyZXNzT3JQdWJLZXk7XG4gICAgfVxuICAgIC8vIHdlIGhhdmUgYSBzdGVsbGFyIGtleVxuICAgIGlmICh0aGlzLmlzVmFsaWRFZDI1NTE5UHVibGljS2V5U3RlbGxhcihhZGRyZXNzT3JQdWJLZXkpKSB7XG4gICAgICBjb25zdCBzdGVsbGFyUHViID0gdGhpcy5kZWNvZGVFZDI1NTE5UHVibGljS2V5U3RlbGxhcihhZGRyZXNzT3JQdWJLZXkpO1xuICAgICAgY29uc3QgYWxnb0FkZHJlc3MgPSB0aGlzLmVuY29kZUFkZHJlc3Moc3RlbGxhclB1Yik7XG4gICAgICBpZiAodGhpcy5pc1ZhbGlkQWRkcmVzcyhhbGdvQWRkcmVzcykpIHtcbiAgICAgICAgcmV0dXJuIGFsZ29BZGRyZXNzO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29udmVydCBTdGVsbGFyIGFkZHJlc3MgdG8gYW4gQWxnb3JhbmQgYWRkcmVzcyB2aWEgcHVia2V5LicpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05laXRoZXIgYW4gQWxnb3JhbmQgYWRkcmVzcyBub3IgYSBzdGVsbGFyIHB1YmtleS4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBjb3JyZWN0IGZlZSBpbmZvIGFuZCBmZWUgcmF0ZSBmb3IgQWxnb3JhbmQgdHJhbnNhY3Rpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gdHgge09iamVjdH0gcmVxdWlyZWQgZmllbGRzIG9yIGJ1aWxkaW5nIGZlZSBpbmZvLlxuICAgKiBAcGFyYW0gZmVlUmF0ZSB7bnVtYmVyfSByZXF1aXJlZCBmZWUgcmF0ZSBmb3IgYnVpbGRpbmcgZmVlIGluZm8uXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBmZWUgaW5mb3JtYXRpb24gZm9yIGFsZ29yYW5kIHR4bi5cbiAgICovXG4gIGdldEZlZURhdGEodHgsIGZlZVJhdGU6IG51bWJlcik6IGFueSB7XG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMuZ2V0VHJhbnNhY3Rpb25CeXRlU2l6ZSh0eCk7XG4gICAgbGV0IGZlZUluZm8gPSB0aGlzLnZhbGlkYXRlRmVlSW5mbyhzaXplLCB7IGZlZVJhdGU6IGZlZVJhdGUsIGZlZTogdW5kZWZpbmVkLCBiYXNlRmFjdG9yOiAxIH0pO1xuICAgIGlmIChmZWVJbmZvLmZlZSA8IEFMR09SQU5EX01JTklNVU1fRkVFKSB7XG4gICAgICBmZWVJbmZvID0gdGhpcy52YWxpZGF0ZUZlZUluZm8oc2l6ZSwgeyBmZWVSYXRlOiB1bmRlZmluZWQsIGZlZTogQUxHT1JBTkRfTUlOSU1VTV9GRUUsIGJhc2VGYWN0b3I6IDEgfSk7XG4gICAgICBmZWVSYXRlID0gZmVlSW5mby5mZWVSYXRlO1xuICAgIH1cbiAgICByZXR1cm4geyBmZWVJbmZvLCBmZWVSYXRlIH07XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdmFsdWVzIGZvciBmZWVJbmZvIGJ1aWxkaW5nXG4gICAqXG4gICAqIEBwYXJhbSBzaXplIHtudW1iZXJ9IHJlcXVpcmVkIHNpemUgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBmZWVEYXRhIHtPYmplY3R9IHJlcXVpcmVkIGZlZXMgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IHdpdGggZmVlIGRhdGEgdmFsaWRhdGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlRmVlSW5mbyhzaXplOiBudW1iZXIsIHsgZmVlUmF0ZSwgZmVlLCBiYXNlRmFjdG9yID0gMTAwMCB9KTogYW55IHtcbiAgICBpZiAoIU51bWJlci5pc1NhZmVJbnRlZ2VyKHNpemUpIHx8IHNpemUgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NpemUgbXVzdCBiZSBpbnRlZ2VyIHBvc2l0aXZlIG51bWJlcicpO1xuICAgIH1cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChmZWVSYXRlKSAmJiBfLmlzVW5kZWZpbmVkKGZlZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmVlIHJhdGUgb3IgZmVlIGFyZSBtaXNzZWQnKTtcbiAgICB9XG4gICAgbGV0IGZlZV92YWx1ZSwgZmVlX3JhdGU7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGZlZVJhdGUpKSB7XG4gICAgICBpZiAoIU51bWJlci5pc1NhZmVJbnRlZ2VyKGZlZVJhdGUpIHx8IGZlZVJhdGUgPCAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmVlUmF0ZSBtdXN0IGJlIGludGVnZXIgcG9zaXRpdmUgbnVtYmVyJyk7XG4gICAgICB9XG4gICAgICBmZWVfcmF0ZSA9IGZlZVJhdGU7XG4gICAgICBmZWVfdmFsdWUgPSBNYXRoLmNlaWwoKGZlZV9yYXRlICogc2l6ZSkgLyBiYXNlRmFjdG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihmZWUpIHx8IGZlZSA8IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGZWUgbXVzdCBiZSBpbnRlZ2VyIHBvc2l0aXZlIG51bWJlcicpO1xuICAgICAgfVxuICAgICAgZmVlX3ZhbHVlID0gZmVlO1xuICAgICAgZmVlX3JhdGUgPSBNYXRoLnJvdW5kKChmZWUgLyBzaXplKSAqIGJhc2VGYWN0b3IpO1xuICAgIH1cbiAgICBjb25zdCBmZWVPYmogPSB7XG4gICAgICBmZWVSYXRlOiBmZWVfcmF0ZSxcbiAgICAgIGZlZTogZmVlX3ZhbHVlLFxuICAgICAgc2l6ZTogc2l6ZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZlZU9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiBtdWx0aXNpZ0FkZHJlc3MgdGFrZXMgbXVsdGlzaWcgbWV0YWRhdGEgKHByZWltYWdlKSBhbmQgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyBodW1hbiByZWFkYWJsZSBBbGdvcmFuZCBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmVyc2lvbiBtdXRsaXNpZyB2ZXJzaW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aHJlc2hvbGQgbXVsdGlzaWcgdGhyZXNob2xkXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFkZHJzIGxpc3Qgb2YgQWxnb3JhbmQgYWRkcmVzc2VzXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IGh1bWFuIHJlYWRhYmxlIEFsZ29yYW5kIGFkZHJlc3MuXG4gICAqL1xuICBtdWx0aXNpZ0FkZHJlc3ModmVyc2lvbjogbnVtYmVyLCB0aHJlc2hvbGQ6IG51bWJlciwgYWRkcnM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYWxnb3Nkay5tdWx0aXNpZ0FkZHJlc3Moe1xuICAgICAgdmVyc2lvbixcbiAgICAgIHRocmVzaG9sZCxcbiAgICAgIGFkZHJzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGdlbmVyYXRlQWNjb3VudCBnZW5lcmF0ZXMgdW4gYWNjb3VudCB3aXRoIGEgc2VjcmV0S2V5IGFuZCBhbiBhZGRyZXNzXG4gICAqXG4gICAqIEZ1bmN0aW9uIGhhcyBub3QgcGFyYW1zXG4gICAqIEByZXR1cm5zIEFjY291bnRcbiAgICovXG4gIGdlbmVyYXRlQWNjb3VudCgpOiBhbGdvc2RrLkFjY291bnQge1xuICAgIHJldHVybiBhbGdvc2RrLmdlbmVyYXRlQWNjb3VudCgpO1xuICB9XG5cbiAgZ2VuZXJhdGVBY2NvdW50RnJvbVNlZWQoc2VlZDogVWludDhBcnJheSk6IGFsZ29zZGsuQWNjb3VudCB7XG4gICAgY29uc3Qga2V5cyA9IG5hY2wuc2lnbi5rZXlQYWlyLmZyb21TZWVkKHNlZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBhZGRyOiBhbGdvc2RrLmVuY29kZUFkZHJlc3Moa2V5cy5wdWJsaWNLZXkpLFxuICAgICAgc2s6IGtleXMuc2VjcmV0S2V5LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIFR4IElEIGZyb20gYW4gZW5jb2RlZCBtdWx0aXNpZyB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBUaGlzIGlzIGRvbmUgYmVjYXVzZSBvZiBhIGNoYW5nZSBtYWRlIG9uIHZlcnNpb24gMS4xMC4xIG9uIGFsZ29zZGsgc28gbWV0aG9kIHR4SUQoKSBvbmx5IHN1cHBvcnRzIFNpZ25lZFRyYW5zYWN0aW9uIHR5cGUuXG4gICAqIChodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmQvanMtYWxnb3JhbmQtc2RrL2Jsb2IvZGV2ZWxvcC9DSEFOR0VMT0cubWQjMTEwMSlcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR4QmFzZTY0IC0gZW5jb2RlZCBiYXNlNjQgbXVsdGlzaWcgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMge3N0cmluZ30gLSB0cmFuc2FjdGlvbiBJRFxuICAgKi9cbiAgZ2V0TXVsdGlzaWdUeElEKHR4QmFzZTY0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR4Qnl0ZXMgPSBCdWZmZXIuZnJvbSh0eEJhc2U2NCwgJ2Jhc2U2NCcpO1xuICAgIGNvbnN0IGRlY29kZVNpZ25UeCA9IGFsZ29zZGsuZGVjb2RlU2lnbmVkVHJhbnNhY3Rpb24odHhCeXRlcyk7XG4gICAgY29uc3Qgd2VsbEZvcm1lZERlY29kZWRTaWduVHggPSBkZWNvZGVTaWduVHgudHhuLmdldF9vYmpfZm9yX2VuY29kaW5nKCk7XG4gICAgY29uc3QgdHhGb3JFbmNvZGluZyA9IHsgbXNpZzogZGVjb2RlU2lnblR4Lm1zaWcsIHR4bjogd2VsbEZvcm1lZERlY29kZWRTaWduVHggfTtcbiAgICBjb25zdCBlbl9tc2cgPSBlbmNvZGluZy5lbmNvZGUodHhGb3JFbmNvZGluZyk7XG4gICAgY29uc3QgdGFnID0gQnVmZmVyLmZyb20oWzg0LCA4OF0pO1xuICAgIGNvbnN0IGdoID0gQnVmZmVyLmZyb20oY29uY2F0QXJyYXlzKHRhZywgZW5fbXNnKSk7XG4gICAgY29uc3QgaGFzaCA9IEJ1ZmZlci5mcm9tKGFsZ29OYWNsLmdlbmVyaWNIYXNoKGdoKSk7XG4gICAgcmV0dXJuIGJhc2UzMi5lbmNvZGUoaGFzaCkuc2xpY2UoMCwgQUxHT1JBTkRfVFJBTlNBQ1RJT05fTEVOR1RIKTtcbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
512
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9hbGdvL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBOEI7QUFDOUIsNERBQWtDO0FBQ2xDLGtEQUFzQztBQUN0Qyw4Q0FBa0M7QUFDbEMsd0RBQStCO0FBQy9CLHdEQUErQjtBQUMvQixrREFBdUI7QUFDdkIsNkNBQXNGO0FBRXRGLDZDQUE4RjtBQUU5RixxQ0FBb0M7QUFDcEMsK0NBQThDO0FBQzlDLCtFQUFtRTtBQUNuRSwrRUFBbUU7QUFFbkUsSUFBTSw2QkFBNkIsR0FBRyxDQUFDLENBQUM7QUFDeEMsSUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDaEMsSUFBTSx5QkFBeUIsR0FBRyxFQUFFLENBQUM7QUFDckMsSUFBTSwyQkFBMkIsR0FBRyxFQUFFLENBQUM7QUFDdkMsSUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFFN0I7Ozs7O0dBS0c7QUFDSCxTQUFTLFdBQVcsQ0FBQyxLQUFhO0lBQ2hDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUN4QyxJQUFNLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25CLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVEO0lBQUE7SUE0ZEEsQ0FBQztJQTNkQyxrQkFBa0I7SUFDbEIsOEJBQWMsR0FBZCxVQUFlLE9BQWU7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dUJBQXVCLEVBQUUsQ0FBQztRQUNoRixJQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLElBQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRCxPQUFPLG1CQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDhCQUFjLEdBQWQsVUFBZSxNQUFjLEVBQUUsSUFBWSxFQUFFLEVBQVUsRUFBRSxnQkFBeUI7UUFDaEYsSUFBSSxJQUFJLEdBQUcsZUFBZSxDQUFDO1FBQzNCLElBQUksTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO1lBQ2pDLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztTQUMzRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNILFlBQUM7QUFBRCxDQUFDLEFBNWRELElBNGRDO0FBNWRZLHNCQUFLO0FBOGRsQixJQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBRTFCLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhbGdvc2RrIGZyb20gJ2FsZ29zZGsnO1xuaW1wb3J0IHN0ZWxsYXIgZnJvbSAnc3RlbGxhci1zZGsnO1xuaW1wb3J0ICogYXMgaGV4IGZyb20gJ0BzdGFibGVsaWIvaGV4JztcbmltcG9ydCAqIGFzIG5hY2wgZnJvbSAndHdlZXRuYWNsJztcbmltcG9ydCBiYXNlMzIgZnJvbSAnaGktYmFzZTMyJztcbmltcG9ydCBzaGE1MTIgZnJvbSAnanMtc2hhNTEyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleSwgaXNWYWxpZEVkMjU1MTlTZWNyZXRLZXkgfSBmcm9tICcuLi8uLi91dGlscy9jcnlwdG8nO1xuaW1wb3J0IHsgQmFzZVV0aWxzIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgSW52YWxpZEtleSwgTm90SW1wbGVtZW50ZWRFcnJvciwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgRW5jb2RlZFR4LCBBZGRyZXNzLCBTZWVkIH0gZnJvbSAnLi9pZmFjZXMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBTZWVkRW5jb2RpbmcgfSBmcm9tICcuL3NlZWRFbmNvZGluZyc7XG5pbXBvcnQgKiBhcyBhbGdvTmFjbCBmcm9tICdhbGdvc2RrL2Rpc3QvY2pzL3NyYy9uYWNsL25hY2xXcmFwcGVycyc7XG5pbXBvcnQgKiBhcyBlbmNvZGluZyBmcm9tICdhbGdvc2RrL2Rpc3QvY2pzL3NyYy9lbmNvZGluZy9lbmNvZGluZyc7XG5cbmNvbnN0IEFMR09SQU5EX0NIRUNLU1VNX0JZVEVfTEVOR1RIID0gNDtcbmNvbnN0IEFMR09SQU5EX1NFRURfTEVOR1RIID0gNTg7XG5jb25zdCBBTEdPUkFORF9TRUVEX0JZVEVfTEVOR1RIID0gMzY7XG5jb25zdCBBTEdPUkFORF9UUkFOU0FDVElPTl9MRU5HVEggPSA1MjtcbmNvbnN0IFNFRURfQllURVNfTEVOR1RIID0gMzI7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzdHJpbmcgaXMgYSBjb21wb3NlZCBvZiBoZXggY2hhcnMgb25seS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWF5YmUgVGhlIHN0cmluZyB0byBiZSB2YWxpZGF0ZWQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgc3RyaW5nIGNvbnNpc3RzIG9mIG9ubHkgaGV4IGNoYXJhY3RlcnMsIG90aGVyd2lzZSBmYWxzZS5cbiAqL1xuZnVuY3Rpb24gYWxsSGV4Q2hhcnMobWF5YmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL14oWzAtOWEtZl17Mn0pKyQvaS50ZXN0KG1heWJlKTtcbn1cblxuLyoqXG4gKiBDb25jYXRBcnJheXMgdGFrZXMgdHdvIGFycmF5IGFuZCByZXR1cm5zIGEgam9pbnQgYXJyYXkgb2YgYm90aFxuICpcbiAqIEBwYXJhbSBhIHtCdWZmZXJ9XG4gKiBAcGFyYW0gYiB7QnVmZmVyfVxuICogQHJldHVybnMge1VpbnQ4QXJyYXl9IFthLGJdXG4gKi9cbmZ1bmN0aW9uIGNvbmNhdEFycmF5cyhhOiBCdWZmZXIsIGI6IEJ1ZmZlcik6IFVpbnQ4QXJyYXkge1xuICBjb25zdCBjID0gbmV3IFVpbnQ4QXJyYXkoYS5sZW5ndGggKyBiLmxlbmd0aCk7XG4gIGMuc2V0KGEpO1xuICBjLnNldChiLCBhLmxlbmd0aCk7XG4gIHJldHVybiBjO1xufVxuXG5leHBvcnQgY2xhc3MgVXRpbHMgaW1wbGVtZW50cyBCYXNlVXRpbHMge1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGFsZ29zZGsuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHR4SWQubGVuZ3RoICE9PSAxMDQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWxsSGV4Q2hhcnModHhJZCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShrZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5U2VjcmV0S2V5KGtleSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBoZXggc3RyaW5nIG9mIHRoZSBnaXZlbiBidWZmZXJcbiAgICpcbiAgICogQHBhcmFtIHtCdWZmZXIgfCBVaW50OEFycmF5fSBidWZmZXIgLSB0aGUgYnVmZmVyIHRvIGJlIGNvbnZlcnRlZCB0byBoZXhcbiAgICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgaGV4IHZhbHVlXG4gICAqL1xuICB0b0hleChidWZmZXI6IEJ1ZmZlciB8IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiBoZXguZW5jb2RlKGJ1ZmZlciwgdHJ1ZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdpc1ZhbGlkU2lnbmF0dXJlIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignaGFzaCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZSB0d28gS2V5c1xuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGtleTEgLSBrZXkgdG8gYmUgY29tcGFyZVxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGtleTIgLSBrZXkgdG8gYmUgY29tcGFyZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSByZXR1cm5zIHRydWUgaWYgYm90aCBrZXlzIGFyZSBlcXVhbFxuICAgKi9cbiAgYXJlS2V5c0VxdWFsKGtleTE6IFVpbnQ4QXJyYXksIGtleTI6IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbmFjbC52ZXJpZnkoa2V5MSwga2V5Mik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIFVpbnQ4QXJyYXkgb2YgdGhlIGdpdmVuIGhleCBzdHJpbmdcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0ciAtIHRoZSBoZXggc3RyaW5nIHRvIGJlIGNvbnZlcnRlZFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBVaW50OEFycmF5IHZhbHVlXG4gICAqL1xuICB0b1VpbnQ4QXJyYXkoc3RyOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oc3RyLCAnaGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgc2VlZCBpcyB2YWxpZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlZWQgLSB0aGUgc2VlZCB0byBiZSB2YWxpZGF0ZWRcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gdHJ1ZSBpZiB0aGUgc2VlZCBpcyB2YWxpZFxuICAgKi9cbiAgaXNWYWxpZFNlZWQoc2VlZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBzZWVkICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKHNlZWQubGVuZ3RoICE9PSBBTEdPUkFORF9TRUVEX0xFTkdUSCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gVHJ5IHRvIGRlY29kZVxuICAgIGxldCBkZWNvZGVkO1xuICAgIHRyeSB7XG4gICAgICBkZWNvZGVkID0gdGhpcy5kZWNvZGVTZWVkKHNlZWQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDb21wdXRlIGNoZWNrc3VtXG4gICAgY29uc3QgY2hlY2tzdW0gPSBuZXcgVWludDhBcnJheShcbiAgICAgIHNoYTUxMi5zaGE1MTJfMjU2LmFycmF5KGRlY29kZWQuc2VlZCkuc2xpY2UoU0VFRF9CWVRFU19MRU5HVEggLSBBTEdPUkFORF9DSEVDS1NVTV9CWVRFX0xFTkdUSCwgU0VFRF9CWVRFU19MRU5HVEgpLFxuICAgICk7XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgY2hlY2tzdW0gbWF0Y2hlcyB0aGUgb25lIGZyb20gdGhlIGRlY29kZWQgc2VlZFxuICAgIHJldHVybiBfLmlzRXF1YWwoY2hlY2tzdW0sIGRlY29kZWQuY2hlY2tzdW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZSBhbiBhbGdvIHNlZWRcbiAgICpcbiAgICogQHBhcmFtICB7QnVmZmVyfSBzZWNyZXRLZXkgLSB0aGUgdmFsaWQgc2VjcmV0S2V5IC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgc2VlZCB0byBiZSB2YWxpZGF0ZWQuXG4gICAqL1xuICBlbmNvZGVTZWVkKHNlY3JldEtleTogQnVmZmVyKTogc3RyaW5nIHtcbiAgICAvLyBnZXQgc2VlZFxuICAgIGNvbnN0IHNlZWQgPSBzZWNyZXRLZXkuc2xpY2UoMCwgU0VFRF9CWVRFU19MRU5HVEgpO1xuICAgIC8vIGNvbXB1dGUgY2hlY2tzdW1cbiAgICBjb25zdCBjaGVja3N1bSA9IEJ1ZmZlci5mcm9tKFxuICAgICAgc2hhNTEyLnNoYTUxMl8yNTYuYXJyYXkoc2VlZCkuc2xpY2UoU0VFRF9CWVRFU19MRU5HVEggLSBBTEdPUkFORF9DSEVDS1NVTV9CWVRFX0xFTkdUSCwgU0VFRF9CWVRFU19MRU5HVEgpLFxuICAgICk7XG4gICAgY29uc3QgZW5jb2RlZFNlZWQgPSBiYXNlMzIuZW5jb2RlKGNvbmNhdEFycmF5cyhzZWVkLCBjaGVja3N1bSkpO1xuXG4gICAgcmV0dXJuIGVuY29kZWRTZWVkLnRvU3RyaW5nKCkuc2xpY2UoMCwgQUxHT1JBTkRfU0VFRF9MRU5HVEgpOyAvLyByZW1vdmluZyB0aGUgZXh0cmEgJz09PT0nXG4gIH1cblxuICAvKipcbiAgICogZGVjb2RlU2VlZCBkZWNvZGVzIGFuIGFsZ28gc2VlZFxuICAgKlxuICAgKiBEZWNvZGluZyBhbGdvIHNlZWQgaXMgc2FuZSBhcyBkZWNvZGluZyBhZGRyZXNzLlxuICAgKiBMYXRlc3QgdmVyc2lvbiBvZiBhbGdvIHNkayAoMS45LCBhdCB0aGlzIHdyaXRpbmcpIGRvZXMgbm90IGV4cG9zZSBleHBsaWNpdCBtZXRob2QgZm9yIGRlY29kaW5nIHNlZWRcbiAgICogaGVuY2UsIHRoaXMgcm91dGluZSB1c2VzIGRlY29kZUFkZHJlc3MgYW5kIGNoYW5nZXMgdGhlIHJldHVybiBzdHJ1Y3R1cmVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlZWQgLSB0aGUgc2VlZCB0byBiZSB2YWxpZGF0ZWQuXG4gICAqIEByZXR1cm5zIHtTZWVkfSAtIHRoZSBvYmplY3QgU2VlZFxuICAgKi9cbiAgZGVjb2RlU2VlZChzZWVkOiBzdHJpbmcpOiBTZWVkIHtcbiAgICAvLyB0cnkgdG8gZGVjb2RlXG4gICAgY29uc3QgZGVjb2RlZCA9IGJhc2UzMi5kZWNvZGUuYXNCeXRlcyhzZWVkKTtcblxuICAgIC8vIFNhbml0eSBjaGVja1xuICAgIGlmIChkZWNvZGVkLmxlbmd0aCAhPT0gQUxHT1JBTkRfU0VFRF9CWVRFX0xFTkdUSCkgdGhyb3cgbmV3IEVycm9yKCdzZWVkIHNlZW1zIHRvIGJlIG1hbGZvcm1lZCcpO1xuICAgIHJldHVybiB7XG4gICAgICBzZWVkOiBuZXcgVWludDhBcnJheShkZWNvZGVkLnNsaWNlKDAsIEFMR09SQU5EX1NFRURfQllURV9MRU5HVEggLSBBTEdPUkFORF9DSEVDS1NVTV9CWVRFX0xFTkdUSCkpLFxuICAgICAgY2hlY2tzdW06IG5ldyBVaW50OEFycmF5KGRlY29kZWQuc2xpY2UoU0VFRF9CWVRFU19MRU5HVEgsIEFMR09SQU5EX1NFRURfQllURV9MRU5HVEgpKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIHNpZ25hdHVyZSBmb3IgbWVzc2FnZSBpcyB2YWxpZC5cbiAgICpcbiAgICogQHBhcmFtIHB1YiB7VWludDhBcnJheX0gcHVibGljIGtleVxuICAgKiBAcGFyYW0gbWVzc2FnZSB7VWludDhBcnJheX0gc2lnbmVkIG1lc3NhZ2VcbiAgICogQHBhcmFtIHNpZ25hdHVyZSB7QnVmZmVyfSBzaWduYXR1cmUgdG8gdmVyaWZ5XG4gICAqIEByZXR1cm5zIHtCb29sZWFufSB0cnVlIGlmIHNpZ25hdHVyZSBpcyB2YWxpZC5cbiAgICovXG4gIHZlcmlmeVNpZ25hdHVyZShtZXNzYWdlOiBVaW50OEFycmF5LCBzaWduYXR1cmU6IEJ1ZmZlciwgcHViOiBVaW50OEFycmF5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5hY2wuc2lnbi5kZXRhY2hlZC52ZXJpZnkobWVzc2FnZSwgc2lnbmF0dXJlLCBwdWIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgYW4gRWQyNTUxOSBwdWJsaWMga2V5IGludG8gYW4gYWxnb3JhbmQgYWRkcmVzcy5cbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBwayBUaGUgRWQyNTUxOSBwdWJsaWMga2V5LlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmFsZ29yYW5kLm9yZy9kb2NzL2ZlYXR1cmVzL2FjY291bnRzLyN0cmFuc2Zvcm1hdGlvbi1wdWJsaWMta2V5LXRvLWFsZ29yYW5kLWFkZHJlc3NcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGFsZ29yYW5kIGFkZHJlc3MuXG4gICAqL1xuICBwdWJsaWNLZXlUb0FsZ29BZGRyZXNzKHBrOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEtleVBhaXIoeyBwdWI6IEJ1ZmZlci5mcm9tKHBrKS50b1N0cmluZygnaGV4JykgfSkuZ2V0QWRkcmVzcygpO1xuICB9XG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSB1bnNpZ25lZCBhbGdvIHRyYW5zYWN0aW9uIGNhbiBiZSBkZWNvZGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IHR4biBUaGUgZW5jb2RlZCB1bnNpZ25lZCB0cmFuc2FjdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHRyYW5zYWN0aW9uIGNhbiBiZSBkZWNvZGVkLCBvdGhlcndpc2UgZmFsc2VcbiAgICovXG4gIHByb3RlY3RlZCBpc0RlY29kYWJsZVVuc2lnbmVkQWxnb1R4bih0eG46IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgYWxnb3Nkay5kZWNvZGVVbnNpZ25lZFRyYW5zYWN0aW9uKHR4bik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChfOiB1bmtub3duKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHNpZ25lZCBhbGdvIHRyYW5zYWN0aW9uIGNhbiBiZSBkZWNvZGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IHR4biBUaGUgZW5jb2RlZCBzaWduZWQgdHJhbnNhY3Rpb24uXG4gICAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSB0cmFuc2FjdGlvbiBjYW4gYmUgZGVjb2RlZCwgb3RoZXJ3aXNlIGZhbHNlXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNEZWNvZGFibGVTaWduZWRUcmFuc2FjdGlvbih0eG46IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgYWxnb3Nkay5kZWNvZGVTaWduZWRUcmFuc2FjdGlvbih0eG4pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoXzogdW5rbm93bikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIGEgc2lnbmVkIG9yIHVuc2lnbmVkIGFsZ28gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheSB8IHN0cmluZ30gdHhuQnl0ZXMgVGhlIGVuY29kZWQgdW5zaWduZWQgb3Igc2lnbmVkIHR4bi5cbiAgICogQHJldHVybnMge0VuY29kZWRUeH0gVGhlIGRlY29kZWQgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBkZWNvZGVBbGdvVHhuKHR4bkJ5dGVzOiBVaW50OEFycmF5IHwgc3RyaW5nKTogRW5jb2RlZFR4IHtcbiAgICBsZXQgYnVmZmVyOiBCdWZmZXI7XG4gICAgaWYgKHR5cGVvZiB0eG5CeXRlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChhbGxIZXhDaGFycyh0eG5CeXRlcykpIHtcbiAgICAgICAgYnVmZmVyID0gQnVmZmVyLmZyb20odHhuQnl0ZXMsICdoZXgnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHR4bkJ5dGVzLCAnYmFzZTY0Jyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHR4bkJ5dGVzKTtcbiAgICB9XG5cbiAgICAvLyBJbiBvcmRlciB0byBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGtleXJlZyB0cmFuc2FjdGlvbnMgZW5jb2RlZCB3aXRoXG4gICAgLy8gZm9ya2VkIGFsZ29zZGsgMS4yLjAgKGh0dHBzOi8vZ2l0aHViLmNvbS9CaXRHby9hbGdvc2RrLWJpdGdvKSxcbiAgICAvLyB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb24gaXMgZXh0cmFjdGVkIGFuZCBwYXJzZWQgZm9sbG93aW5nIHRoZSBsYXRlc3QgYWxnb3Nka1xuICAgIC8vIHJlbGVhc2Ugc3RhbmRhcmQuXG4gICAgLy8gVGhpcyB3YXkgd2UgY2FuIGRlY29kZSB0cmFuc2FjdGlvbnMgc3VjY2Vzc2Z1bGx5IGJ5IHN0aWxsIG1haW50YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAgY29uc3QgZGVjb2RlZFR4ID0gZW5jb2RpbmcuZGVjb2RlKGJ1ZmZlcik7XG4gICAgaWYgKGRlY29kZWRUeC50eG4gJiYgZGVjb2RlZFR4LnR4bi50eXBlID09PSAna2V5cmVnJykge1xuICAgICAgZGVjb2RlZFR4LnR4bi52b3Rla2V5ID0gZGVjb2RlZFR4LnR4bi52b3Rla2V5IHx8IGRlY29kZWRUeC5tc2lnLnN1YnNpZ1swXS5waztcbiAgICAgIGRlY29kZWRUeC50eG4uc2Vsa2V5ID0gZGVjb2RlZFR4LnR4bi5zZWxrZXkgfHwgZGVjb2RlZFR4Lm1zaWcuc3Vic2lnWzBdLnBrO1xuICAgICAgYnVmZmVyID0gZGVjb2RlZFR4Lm1zaWcgfHwgZGVjb2RlZFR4LnNpZyA/IGVuY29kaW5nLmVuY29kZShkZWNvZGVkVHgpIDogZW5jb2RpbmcuZW5jb2RlKGRlY29kZWRUeC50eG4pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRGVjb2RhYmxlVW5zaWduZWRBbGdvVHhuKGJ1ZmZlcikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJhd1RyYW5zYWN0aW9uOiBuZXcgVWludDhBcnJheShidWZmZXIpLFxuICAgICAgICB0eG46IGFsZ29zZGsuZGVjb2RlVW5zaWduZWRUcmFuc2FjdGlvbihidWZmZXIpLFxuICAgICAgICBzaWduZWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNEZWNvZGFibGVTaWduZWRUcmFuc2FjdGlvbihidWZmZXIpKSB7XG4gICAgICAvLyBUT0RPOiBSZXBsYWNlIHdpdGhcbiAgICAgIC8vIHJldHVybiBhbGdvc2RrLlRyYW5zYWN0aW9uLmZyb21fb2JqX2Zvcl9lbmNvZGluZyhhbGdvc2RrLmRlY29kZVNpZ25lZFRyYW5zYWN0aW9uKGJ1ZmZlcikudHhuKTtcbiAgICAgIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kL2pzLWFsZ29yYW5kLXNkay9pc3N1ZXMvMzY0XG4gICAgICAvLyBcIi4uLnNvbWUgcGFydHMgb2YgdGhlIGNvZGViYXNlIHRyZWF0IHRoZSBvdXRwdXQgb2YgVHJhbnNhY3Rpb24uZnJvbV9vYmpfZm9yX2VuY29kaW5nIGFzIEVuY29kZWRUcmFuc2FjdGlvbi5cbiAgICAgIC8vIFRoZXkgbmVlZCB0byBiZSBmaXhlZChvciB3ZSBhdCBsZWFzdCBuZWVkIHRvIG1ha2UgaXQgc28gVHJhbnNhY3Rpb24gY29uZm9ybXMgdG8gRW5jb2RlZFRyYW5zYWN0aW9uKS5cIlxuICAgICAgY29uc3QgdHggPSBhbGdvc2RrLmRlY29kZVNpZ25lZFRyYW5zYWN0aW9uKGJ1ZmZlcik7XG5cbiAgICAgIGNvbnN0IHNpZ25lcnM6IHN0cmluZ1tdID0gW107XG4gICAgICBjb25zdCBzaWduZWRCeTogc3RyaW5nW10gPSBbXTtcbiAgICAgIGlmICh0eC5tc2lnICYmIHR4Lm1zaWcuc3Vic2lnKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc2lnIG9mIHR4Lm1zaWcuc3Vic2lnKSB7XG4gICAgICAgICAgY29uc3QgYWRkciA9IGFsZ29zZGsuZW5jb2RlQWRkcmVzcyhzaWcucGspO1xuICAgICAgICAgIHNpZ25lcnMucHVzaChhZGRyKTtcbiAgICAgICAgICBpZiAoc2lnLnMpIHtcbiAgICAgICAgICAgIHNpZ25lZEJ5LnB1c2goYWRkcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJhd1RyYW5zYWN0aW9uOiBuZXcgVWludDhBcnJheShidWZmZXIpLFxuICAgICAgICB0eG46IHR4LnR4bixcbiAgICAgICAgc2lnbmVkOiB0cnVlLFxuICAgICAgICBzaWduZXJzOiBzaWduZXJzLFxuICAgICAgICBzaWduZWRCeTogc2lnbmVkQnksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGNhbm5vdCBiZSBkZWNvZGVkJyk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogZW5jb2RlT2JqIHRha2VzIGEgamF2YXNjcmlwdCBvYmplY3QgYW5kIHJldHVybnMgaXRzIG1zZ3BhY2sgZW5jb2RpbmdcbiAgICogTm90ZSB0aGF0IHRoZSBlbmNvZGluZyBzb3J0cyB0aGUgZmllbGRzIGFscGhhYmV0aWNhbGx5XG4gICAqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCwgYW55Pn0gb2JqIGpzIG9ialxuICAgKiBAcmV0dXJucyB7VWludDhBcnJheX0gVWludDhBcnJheSBiaW5hcnkgcmVwcmVzZW50YXRpb25cbiAgICovXG4gIGVuY29kZU9iaihvYmo6IFJlY29yZDxzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsIGFueT4pOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gYWxnb3Nkay5lbmNvZGVPYmoob2JqKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBkZWNvZGVPYmogdGFrZXMgYSBVaW50OEFycmF5IGFuZCByZXR1cm5zIGl0cyBqYXZhc2NyaXB0IG9ialxuICAgKiBAcGFyYW0gbyAtIFVpbnQ4QXJyYXkgdG8gZGVjb2RlXG4gICAqIEByZXR1cm5zIG9iamVjdFxuICAgKi9cbiAgZGVjb2RlT2JqKG86IEFycmF5TGlrZTxudW1iZXI+KTogdW5rbm93biB7XG4gICAgcmV0dXJuIGFsZ29zZGsuZGVjb2RlT2JqKG8pO1xuICB9XG5cbiAgLyoqXG4gICAqIHNlY3JldEtleVRvTW5lbW9uaWMgdGFrZSBhbiBBbGdvcmFudCBzZWNyZXQga2V5IGFuZCByZXR1cm5zIHRoZSBjb3JyZXNzcG9uZGluZyBtbmVtb25pY1xuICAgKlxuICAgKiBAcGFyYW0gc2sgLSBBbGdvcmFudCBzZWNyZXQga2V5XG4gICAqIEByZXR1cm4gU2VjcmV0IGtleSBpcyBhc3NvY2lhdGVkIG1uZW1vbmljXG4gICAqL1xuICBzZWNyZXRLZXlUb01uZW1vbmljKHNrOiBCdWZmZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNrVmFsaWQgPSBCdWZmZXIuZnJvbShzay50b1N0cmluZygnaGV4JykpO1xuICAgIGlmICghdGhpcy5pc1ZhbGlkUHJpdmF0ZUtleShza1ZhbGlkLnRvU3RyaW5nKCdoZXgnKSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkS2V5KGBUaGUgc2VjcmV0IGtleTogJHtzay50b1N0cmluZygnaGV4Jyl9IGlzIGludmFsaWRgKTtcbiAgICB9XG4gICAgY29uc3Qgc2tVbml0OEFycmF5ID0gQnVmZmVyLmZyb20oc2spO1xuICAgIHJldHVybiBhbGdvc2RrLnNlY3JldEtleVRvTW5lbW9uaWMoc2tVbml0OEFycmF5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzZWVkRnJvbU1uZW1vbmljIGNvbnZlcnRzIGEgbW5lbW9uaWMgZ2VuZXJhdGVkIHVzaW5nIHRoaXMgbGlicmFyeSBpbnRvIHRoZSBzb3VyY2Uga2V5IHVzZWQgdG8gY3JlYXRlIGl0XG4gICAqIEl0IHJldHVybnMgYW4gZXJyb3IgaWYgdGhlIHBhc3NlZCBtbmVtb25pYyBoYXMgYW4gaW5jb3JyZWN0IGNoZWNrc3VtLCBpZiB0aGUgbnVtYmVyIG9mIHdvcmRzIGlzIHVuZXhwZWN0ZWQsIG9yIGlmIG9uZVxuICAgKiBvZiB0aGUgcGFzc2VkIHdvcmRzIGlzIG5vdCBmb3VuZCBpbiB0aGUgd29yZHMgbGlzdFxuICAgKlxuICAgKiBAcGFyYW0gbW5lbW9uaWMgLSAyNSB3b3JkcyBtbmVtb25pY1xuICAgKiBAcmV0dXJucyAzMiBieXRlcyBsb25nIHNlZWRcbiAgICovXG4gIHNlZWRGcm9tTW5lbW9uaWMobW5lbW9uaWM6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiBhbGdvc2RrLm1uZW1vbmljVG9NYXN0ZXJEZXJpdmF0aW9uS2V5KG1uZW1vbmljKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBrZXlQYWlyRnJvbVNlZWQgZ2VuZXJhdGVzIGFuIG9iamVjdCB3aXRoIHNlY3JldEtleSBhbmQgcHVibGljS2V5IHVzaW5nIHRoZSBhbGdvc2RrXG4gICAqIEBwYXJhbSBzZWVkIDMyIGJ5dGVzIGxvbmcgc2VlZFxuICAgKiBAcmV0dXJucyBLZXlQYWlyXG4gICAqL1xuICBrZXlQYWlyRnJvbVNlZWQoc2VlZDogVWludDhBcnJheSk6IEtleVBhaXIge1xuICAgIGNvbnN0IG1uID0gdGhpcy5tbmVtb25pY0Zyb21TZWVkKHNlZWQpO1xuICAgIGNvbnN0IGJhc2U2NFByaXZhdGVLZXkgPSBhbGdvc2RrLm1uZW1vbmljVG9TZWNyZXRLZXkobW4pLnNrO1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZUtleVBhaXIoYmFzZTY0UHJpdmF0ZUtleSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgYSBuZXcgYEtleVBhaXJgIG9iamVjdCBmcm9tIHRoZSBnaXZlbiBwcml2YXRlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIGJhc2U2NFByaXZhdGVLZXkgNjQgYnl0ZXMgbG9uZyBwcml2YXRlS2V5XG4gICAqIEByZXR1cm5zIEtleVBhaXJcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVLZXlQYWlyKGJhc2U2NFByaXZhdGVLZXk6IFVpbnQ4QXJyYXkpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBzayA9IGJhc2U2NFByaXZhdGVLZXkuc2xpY2UoMCwgMzIpO1xuICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHBydjogQnVmZmVyLmZyb20oc2spLnRvU3RyaW5nKCdoZXgnKSB9KTtcbiAgICByZXR1cm4ga2V5UGFpcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBkZWNvZGVQcml2YXRlS2V5IGdlbmVyYXRlcyBhIHNlZWQgd2l0aCBhIG1uZW1vbmljIGFuZCB1c2luZyBhbGdvc2RrLlxuICAgKlxuICAgKiBAcGFyYW0gc2VlZCAzMiBieXRlcyBsb25nIHNlZWRcbiAgICogQHJldHVybnMgbW5lbW9uaWMgLSAyNSB3b3JkcyBtbmVtb25pYyAtIDI1IHdvcmRzIG1uZW1vbmljXG4gICAqL1xuICBwcm90ZWN0ZWQgbW5lbW9uaWNGcm9tU2VlZChzZWVkOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYWxnb3Nkay5tYXN0ZXJEZXJpdmF0aW9uS2V5VG9NbmVtb25pYyhzZWVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleVN0ZWxsYXIgdmFsaWRhdGUgdGhlIGtleSB3aXRoIHRoZSBzdGVsbGFyLXNka1xuICAgKlxuICAgKiBAcGFyYW0gcHVibGljS2V5XG4gICAqIEByZXR1cm5zIGJvb2xkZWFuXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXlTdGVsbGFyKHB1YmxpY0tleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0ZWxsYXIuU3RyS2V5LmlzVmFsaWRFZDI1NTE5UHVibGljS2V5KHB1YmxpY0tleSk7XG4gIH1cblxuICAvKipcbiAgICogZGVjb2RlRWQyNTUxOVB1YmxpY0tleVN0ZWxsYXIgZGVjb2RlIHRoZSBrZXkgd2l0aCB0aGUgc3RlbGxhci1zZGtcbiAgICpcbiAgICogQHBhcmFtIHB1YmxpY0tleVxuICAgKiBAcmV0dXJucyBCdWZmZXJcbiAgICovXG4gIHByb3RlY3RlZCBkZWNvZGVFZDI1NTE5UHVibGljS2V5U3RlbGxhcihwdWJsaWNLZXk6IHN0cmluZyk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIHN0ZWxsYXIuU3RyS2V5LmRlY29kZUVkMjU1MTlQdWJsaWNLZXkocHVibGljS2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgc3RlbGxhciBzZWVkIHRvIGFsZ29yYW5kIGVuY29kaW5nXG4gICAqXG4gICAqIEBwYXJhbSBzZWVkXG4gICAqIEByZXR1cm5zIHN0cmluZyB0aGUgZW5jb2RlZCBzZWVkXG4gICAqL1xuICBjb252ZXJ0RnJvbVN0ZWxsYXJTZWVkKHNlZWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNlZWRFbmNvZGluZy5lbmNvZGUoc3RlbGxhci5TdHJLZXkuZGVjb2RlRWQyNTUxOVNlY3JldFNlZWQoc2VlZCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGVuY29kZUFkZHJlc3MgcmV0dXJuIGFuIGFkZHJlcyBlbmNvZGluZyB3aXRoIGFsZ29zZGtcbiAgICpcbiAgICogQHBhcmFtIGFkZHJcbiAgICogQHJldHVybnMgc3RyaW5nXG4gICAqL1xuICBlbmNvZGVBZGRyZXNzKGFkZHI6IEJ1ZmZlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFsZ29zZGsuZW5jb2RlQWRkcmVzcyhhZGRyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBkZWNvZGVBZGRyZXNzIHJldHVybiBhbiBhZGRyZXMgZGVjb2Rpbmcgd2l0aCBhbGdvc2RrXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyXG4gICAqIEByZXR1cm5zIEFkZHJlc3NcbiAgICovXG4gIGRlY29kZUFkZHJlc3MoYWRkcjogc3RyaW5nKTogQWRkcmVzcyB7XG4gICAgcmV0dXJuIGFsZ29zZGsuZGVjb2RlQWRkcmVzcyhhZGRyKTtcbiAgfVxuXG4gIC8qKlxuICAgKnN0ZWxsYXJBZGRyZXNzVG9BbGdvQWRkcmVzcyByZXR1cm5zIGFuIGFkZHJlc3MgYWxnbyBvZiBhbGdvXG4gICAqaWYgaXMgc2VudCBhbiB4bWxBZGRyZXNzIGlmIGl0IGRvZXMgbm90IHJldHVybiB0aGUgc2FtZSBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0gYWRkcmVzc09yUHViS2V5XG4gICAqIEByZXR1cm5zIGFkZHJlc3MgYWxnbyBzdHJpbmdcbiAgICovXG4gIHN0ZWxsYXJBZGRyZXNzVG9BbGdvQWRkcmVzcyhhZGRyZXNzT3JQdWJLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gd2UgaGF2ZSBhbiBBbGdvcmFuZCBhZGRyZXNzXG4gICAgaWYgKHRoaXMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzc09yUHViS2V5KSkge1xuICAgICAgcmV0dXJuIGFkZHJlc3NPclB1YktleTtcbiAgICB9XG4gICAgLy8gd2UgaGF2ZSBhIHN0ZWxsYXIga2V5XG4gICAgaWYgKHRoaXMuaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXlTdGVsbGFyKGFkZHJlc3NPclB1YktleSkpIHtcbiAgICAgIGNvbnN0IHN0ZWxsYXJQdWIgPSB0aGlzLmRlY29kZUVkMjU1MTlQdWJsaWNLZXlTdGVsbGFyKGFkZHJlc3NPclB1YktleSk7XG4gICAgICBjb25zdCBhbGdvQWRkcmVzcyA9IHRoaXMuZW5jb2RlQWRkcmVzcyhzdGVsbGFyUHViKTtcbiAgICAgIGlmICh0aGlzLmlzVmFsaWRBZGRyZXNzKGFsZ29BZGRyZXNzKSkge1xuICAgICAgICByZXR1cm4gYWxnb0FkZHJlc3M7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IFN0ZWxsYXIgYWRkcmVzcyB0byBhbiBBbGdvcmFuZCBhZGRyZXNzIHZpYSBwdWJrZXkuJyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignTmVpdGhlciBhbiBBbGdvcmFuZCBhZGRyZXNzIG5vciBhIHN0ZWxsYXIgcHVia2V5LicpO1xuICB9XG5cbiAgLyoqXG4gICAqIG11bHRpc2lnQWRkcmVzcyB0YWtlcyBtdWx0aXNpZyBtZXRhZGF0YSAocHJlaW1hZ2UpIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIGh1bWFuIHJlYWRhYmxlIEFsZ29yYW5kIGFkZHJlc3MuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB2ZXJzaW9uIG11dGxpc2lnIHZlcnNpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IHRocmVzaG9sZCBtdWx0aXNpZyB0aHJlc2hvbGRcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gYWRkcnMgbGlzdCBvZiBBbGdvcmFuZCBhZGRyZXNzZXNcbiAgICogQHJldHVybnMge3N0cmluZ30gaHVtYW4gcmVhZGFibGUgQWxnb3JhbmQgYWRkcmVzcy5cbiAgICovXG4gIG11bHRpc2lnQWRkcmVzcyh2ZXJzaW9uOiBudW1iZXIsIHRocmVzaG9sZDogbnVtYmVyLCBhZGRyczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIHJldHVybiBhbGdvc2RrLm11bHRpc2lnQWRkcmVzcyh7XG4gICAgICB2ZXJzaW9uLFxuICAgICAgdGhyZXNob2xkLFxuICAgICAgYWRkcnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogZ2VuZXJhdGVBY2NvdW50IGdlbmVyYXRlcyB1biBhY2NvdW50IHdpdGggYSBzZWNyZXRLZXkgYW5kIGFuIGFkZHJlc3NcbiAgICpcbiAgICogRnVuY3Rpb24gaGFzIG5vdCBwYXJhbXNcbiAgICogQHJldHVybnMgQWNjb3VudFxuICAgKi9cbiAgZ2VuZXJhdGVBY2NvdW50KCk6IGFsZ29zZGsuQWNjb3VudCB7XG4gICAgcmV0dXJuIGFsZ29zZGsuZ2VuZXJhdGVBY2NvdW50KCk7XG4gIH1cblxuICBnZW5lcmF0ZUFjY291bnRGcm9tU2VlZChzZWVkOiBVaW50OEFycmF5KTogYWxnb3Nkay5BY2NvdW50IHtcbiAgICBjb25zdCBrZXlzID0gbmFjbC5zaWduLmtleVBhaXIuZnJvbVNlZWQoc2VlZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZHI6IGFsZ29zZGsuZW5jb2RlQWRkcmVzcyhrZXlzLnB1YmxpY0tleSksXG4gICAgICBzazoga2V5cy5zZWNyZXRLZXksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgVHggSUQgZnJvbSBhbiBlbmNvZGVkIG11bHRpc2lnIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIFRoaXMgaXMgZG9uZSBiZWNhdXNlIG9mIGEgY2hhbmdlIG1hZGUgb24gdmVyc2lvbiAxLjEwLjEgb24gYWxnb3NkayBzbyBtZXRob2QgdHhJRCgpIG9ubHkgc3VwcG9ydHMgU2lnbmVkVHJhbnNhY3Rpb24gdHlwZS5cbiAgICogKGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZC9qcy1hbGdvcmFuZC1zZGsvYmxvYi9kZXZlbG9wL0NIQU5HRUxPRy5tZCMxMTAxKVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHhCYXNlNjQgLSBlbmNvZGVkIGJhc2U2NCBtdWx0aXNpZyB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRyYW5zYWN0aW9uIElEXG4gICAqL1xuICBnZXRNdWx0aXNpZ1R4SUQodHhCYXNlNjQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdHhCeXRlcyA9IEJ1ZmZlci5mcm9tKHR4QmFzZTY0LCAnYmFzZTY0Jyk7XG4gICAgY29uc3QgZGVjb2RlU2lnblR4ID0gYWxnb3Nkay5kZWNvZGVTaWduZWRUcmFuc2FjdGlvbih0eEJ5dGVzKTtcbiAgICBjb25zdCB3ZWxsRm9ybWVkRGVjb2RlZFNpZ25UeCA9IGRlY29kZVNpZ25UeC50eG4uZ2V0X29ial9mb3JfZW5jb2RpbmcoKTtcbiAgICBjb25zdCB0eEZvckVuY29kaW5nID0geyBtc2lnOiBkZWNvZGVTaWduVHgubXNpZywgdHhuOiB3ZWxsRm9ybWVkRGVjb2RlZFNpZ25UeCB9O1xuICAgIGNvbnN0IGVuX21zZyA9IGVuY29kaW5nLmVuY29kZSh0eEZvckVuY29kaW5nKTtcbiAgICBjb25zdCB0YWcgPSBCdWZmZXIuZnJvbShbODQsIDg4XSk7XG4gICAgY29uc3QgZ2ggPSBCdWZmZXIuZnJvbShjb25jYXRBcnJheXModGFnLCBlbl9tc2cpKTtcbiAgICBjb25zdCBoYXNoID0gQnVmZmVyLmZyb20oYWxnb05hY2wuZ2VuZXJpY0hhc2goZ2gpKTtcbiAgICByZXR1cm4gYmFzZTMyLmVuY29kZShoYXNoKS5zbGljZSgwLCBBTEdPUkFORF9UUkFOU0FDVElPTl9MRU5HVEgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHJldHVybnMgaWYgYSB0eCBpcyBhbiBlbmFibGUgb3IgZGlzYWJsZSB0b2tlbiB0eFxuICAgKiBAcGFyYW0gdHggLSB0eCBpbiBKU09OIGZvcm1hdFxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGl0J3MgYSB0b2tlbiB0eFxuICAgKi9cbiAgZ2V0VG9rZW5UeFR5cGUoYW1vdW50OiBzdHJpbmcsIGZyb206IHN0cmluZywgdG86IHN0cmluZywgY2xvc2VSZW1haW5kZXJUbz86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHR5cGUgPSAndHJhbnNmZXJUb2tlbic7XG4gICAgaWYgKGFtb3VudCA9PT0gJzAnICYmIGZyb20gPT09IHRvKSB7XG4gICAgICB0eXBlID0gIWNsb3NlUmVtYWluZGVyVG8gPyAnZW5hYmxlVG9rZW4nIDogJ2Rpc2FibGVUb2tlbic7XG4gICAgfVxuICAgIHJldHVybiB0eXBlO1xuICB9XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"blsKeyPair.d.ts","sourceRoot":"","sources":["../../../../src/coin/baseCoin/blsKeyPair.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAoBvC;;GAEG;AACH,8BAAsB,UAAW,YAAW,WAAW;IACrD,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;IAE/B;;;OAGG;IACH,SAAS;IAKT;;;;OAIG;IACH,wBAAwB,CAAC,GAAG,EAAE,MAAM;IASpC;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI1C,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM;IAI1C,OAAO,IAAI,GAAG;IAId;;;;OAIG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIzB;;;;;OAKG;WACW,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUjD;;;;;OAKG;WACW,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;WAUnC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;IAS7D;;;;;;OAMG;WACW,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAKpF"}
1
+ {"version":3,"file":"blsKeyPair.d.ts","sourceRoot":"","sources":["../../../../src/coin/baseCoin/blsKeyPair.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAiBvC;;GAEG;AACH,8BAAsB,UAAW,YAAW,WAAW;IACrD,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;IAE/B;;;OAGG;IACH,SAAS;IAKT;;;;OAIG;IACH,wBAAwB,CAAC,GAAG,EAAE,MAAM;IASpC;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI1C,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM;IAI1C,OAAO,IAAI,GAAG;IAId;;;;OAIG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIzB;;;;;OAKG;WACW,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUjD;;;;;OAKG;WACW,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;WAUnC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;IAS7D;;;;;;OAMG;WACW,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAKpF"}
@@ -67,14 +67,11 @@ var initialized = false;
67
67
  var initialize = function () { return __awaiter(void 0, void 0, void 0, function () {
68
68
  return __generator(this, function (_a) {
69
69
  switch (_a.label) {
70
- case 0:
71
- if (!(typeof (BLS === null || BLS === void 0 ? void 0 : BLS.initBLS) !== 'undefined')) return [3 /*break*/, 2];
72
- return [4 /*yield*/, BLS.initBLS()];
70
+ case 0: return [4 /*yield*/, BLS.initBLS()];
73
71
  case 1:
74
72
  _a.sent();
75
73
  initialized = true;
76
- _a.label = 2;
77
- case 2: return [2 /*return*/];
74
+ return [2 /*return*/];
78
75
  }
79
76
  });
80
77
  }); };
@@ -188,4 +185,4 @@ var BlsKeyPair = /** @class */ (function () {
188
185
  return BlsKeyPair;
189
186
  }());
190
187
  exports.BlsKeyPair = BlsKeyPair;
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxzS2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL2Jhc2VDb2luL2Jsc0tleVBhaXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUE0QjtBQUM1Qiw4Q0FBa0M7QUFDbEMsNkRBQXNEO0FBR3RELG1DQUErQztBQUUvQyxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFDeEIsSUFBTSxVQUFVLEdBQUc7Ozs7cUJBRWIsQ0FBQSxPQUFPLENBQUEsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLE9BQU8sQ0FBQSxLQUFLLFdBQVcsQ0FBQSxFQUFuQyx3QkFBbUM7Z0JBQ3JDLHFCQUFNLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBQTs7Z0JBQW5CLFNBQW1CLENBQUM7Z0JBQ3BCLFdBQVcsR0FBRyxJQUFJLENBQUM7Ozs7O0tBRXRCLENBQUM7QUFFRixVQUFVLEVBQUUsQ0FBQztBQUViLFNBQVMsaUJBQWlCO0lBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0tBQzlEO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0g7SUFHRTs7O09BR0c7SUFDSDtRQUNFLGlCQUFpQixFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw2Q0FBd0IsR0FBeEIsVUFBeUIsR0FBVztRQUNsQyxJQUFJLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakMsSUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDNUM7YUFBTTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsNENBQXVCLEdBQXZCLFVBQXdCLEdBQVc7UUFDakMsTUFBTSxJQUFJLDRCQUFtQixDQUFDLCtDQUErQyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELCtCQUFVLEdBQVYsVUFBVyxNQUFzQjtRQUMvQixNQUFNLElBQUksNEJBQW1CLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsNEJBQU8sR0FBUDtRQUNFLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gseUJBQUksR0FBSixVQUFLLEdBQVc7UUFDZCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ1csd0JBQWEsR0FBM0IsVUFBNEIsR0FBVztRQUNyQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3BCLElBQUk7WUFDRixHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ1csd0JBQWEsR0FBM0IsVUFBNEIsR0FBVztRQUNyQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3BCLElBQUk7WUFDRixHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVhLDJCQUFnQixHQUE5QixVQUErQixPQUFxQjtRQUNsRCxpQkFBaUIsRUFBRSxDQUFDO1FBQ3BCLElBQUk7WUFDRixPQUFPLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN0QztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDVywwQkFBZSxHQUE3QixVQUE4QixHQUFXLEVBQUUsR0FBVyxFQUFFLFNBQWlCO1FBQ3ZFLGlCQUFpQixFQUFFLENBQUM7UUFDcEIsZ0JBQU0sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLHlCQUF1QixHQUFLLENBQUMsQ0FBQztRQUNwRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQ0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBQ0gsaUJBQUM7QUFBRCxDQUFDLEFBekdELElBeUdDO0FBekdxQixnQ0FBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIEJMUyBmcm9tICdAYml0Z28vYmxzJztcbmltcG9ydCB7IHN0cmlwSGV4UHJlZml4IH0gZnJvbSAnZXRoZXJldW1qcy11dGlscy1vbGQnO1xuaW1wb3J0IHsgQmFzZUtleVBhaXIgfSBmcm9tICcuL2Jhc2VLZXlQYWlyJztcbmltcG9ydCB7IEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuL2VudW0nO1xuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gJy4vZXJyb3JzJztcblxubGV0IGluaXRpYWxpemVkID0gZmFsc2U7XG5jb25zdCBpbml0aWFsaXplID0gYXN5bmMgKCkgPT4ge1xuICAvLyBCTFMgaXMgcmVtb3ZlZCBmb3Igc2VjdXJlIGJyb3dzZXJzIGJ5IG91ciB3ZWJwYWNrIGNvbmZpZywgY2hlY2sgaWYgaXQgZXhpc3RzIGZpcnN0LlxuICBpZiAodHlwZW9mIEJMUz8uaW5pdEJMUyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBhd2FpdCBCTFMuaW5pdEJMUygpO1xuICAgIGluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxufTtcblxuaW5pdGlhbGl6ZSgpO1xuXG5mdW5jdGlvbiBlbnN1cmVJbml0aWFsaXplZCgpIHtcbiAgaWYgKCFpbml0aWFsaXplZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQkxTIGxpYiBub3QgeWV0IGluaXRpYWxpemVkLCBwbGVhc2UgcmV0cnknKTtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIEJMUyBrZXlwYWlycy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsc0tleVBhaXIgaW1wbGVtZW50cyBCYXNlS2V5UGFpciB7XG4gIHByb3RlY3RlZCBrZXlQYWlyOiBCTFMuS2V5cGFpcjtcblxuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLiBCeSBkZWZhdWx0LCBjcmVhdGVzIGEga2V5IHBhaXIgd2l0aCBhIHJhbmRvbSBtYXN0ZXIgc2VlZC5cbiAgICpcbiAgICovXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICBlbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIHRoaXMua2V5UGFpciA9IEJMUy5nZW5lcmF0ZUtleVBhaXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGtleVBhaXIgZnJvbSBwcml2YXRlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiBhIGhleGFkZWNpbWFsIHByaXZhdGUga2V5XG4gICAqL1xuICByZWNvcmRLZXlzRnJvbVByaXZhdGVLZXkocHJ2OiBzdHJpbmcpIHtcbiAgICBpZiAoQmxzS2V5UGFpci5pc1ZhbGlkQkxTUHJ2KHBydikpIHtcbiAgICAgIGNvbnN0IHByaXZhdGVLZXkgPSBCTFMuUHJpdmF0ZUtleS5mcm9tSGV4U3RyaW5nKHBydik7XG4gICAgICB0aGlzLmtleVBhaXIgPSBuZXcgQkxTLktleXBhaXIocHJpdmF0ZUtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwcml2YXRlIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RlIC0gdGhpcyBpcyBub3QgcG9zc2libGUgdXNpbmcgQkxTLiBCTFMgZG9lcyBub3Qgc3VwcG9ydCBwdWJrZXkgZGVyaXZlZCBrZXkgZ2VuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwdWIgLSBBbiBleHRlbmRlZCwgY29tcHJlc3NlZCwgb3IgdW5jb21wcmVzc2VkIHB1YmxpYyBrZXlcbiAgICovXG4gIHJlY29yZEtleXNGcm9tUHVibGljS2V5KHB1Yjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ1B1YmxpYyBrZXkgZGVyaXZhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGJscycpO1xuICB9XG5cbiAgZ2V0QWRkcmVzcyhmb3JtYXQ/OiBBZGRyZXNzRm9ybWF0KTogc3RyaW5nIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignZ2V0QWRkcmVzcyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGdldEtleXMoKTogYW55IHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignZ2V0S2V5cyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyBieXRlcyB1c2luZyB0aGUga2V5IHBhaXJcbiAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSBieXRlcyB0byBzaWduXG4gICAqIEByZXR1cm4gc2lnbmF0dXJlIG9mIHRoZSBieXRlcyB1c2luZyB0aGlzIGtleXBhaXJcbiAgICovXG4gIHNpZ24obXNnOiBCdWZmZXIpOiBCdWZmZXIge1xuICAgIHJldHVybiBCTFMuc2lnbih0aGlzLmtleVBhaXIucHJpdmF0ZUtleS50b0J5dGVzKCksIG1zZyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBCTFMgcHJpdmF0ZSBrZXlcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiBBIGhleGFkZWNpbWFsIHB1YmxpYyBrZXkgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHJpdmF0ZSBrZXkgb3Igbm90XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVmFsaWRCTFNQcnYocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBlbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIHRyeSB7XG4gICAgICBCTFMuUHJpdmF0ZUtleS5mcm9tSGV4U3RyaW5nKHBydik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwdWJsaWMga2V5IGZvciB0aGUgY29pbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1YiB0aGUgcHViIHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMge2Jvb2xlYW59IGlzIGl0IHZhbGlkP1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1ZhbGlkQkxTUHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICB0cnkge1xuICAgICAgQkxTLlB1YmxpY0tleS5mcm9tSGV4KHB1Yik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhZ2dyZWdhdGVQdWJrZXlzKHB1YktleXM6IFVpbnQ4QXJyYXlbXSk6IEJ1ZmZlciB7XG4gICAgZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEJMUy5hZ2dyZWdhdGVQdWJrZXlzKHB1YktleXMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgYWdncmVnYXRpbmcgcHVia2V5czogJyArIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyB0aGUgc2lnbmF0dXJlIGZvciB0aGlzIGtleSBwYWlyXG4gICAqIEBwYXJhbSBwdWIgVGhlIHB1YmxpYyBrZXkgd2l0aCB3aGljaCB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZVxuICAgKiBAcGFyYW0gbXNnIFRoZSBtZXNzYWdlIHRvIHZlcmlmeSB0aGUgc2lnbmF0dXJlIHdpdGhcbiAgICogQHBhcmFtIHNpZ25hdHVyZSB0aGUgc2lnbmF0dXJlIHRvIHZlcmlmeVxuICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHNpZ25hdHVyZSBpcyB2YWxpZCwgZWxzZSBmYWxzZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2ZXJpZnlTaWduYXR1cmUocHViOiBzdHJpbmcsIG1zZzogQnVmZmVyLCBzaWduYXR1cmU6IEJ1ZmZlcik6IGJvb2xlYW4ge1xuICAgIGVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgYXNzZXJ0KEJsc0tleVBhaXIuaXNWYWxpZEJMU1B1YihwdWIpLCBgSW52YWxpZCBwdWJsaWMga2V5OiAke3B1Yn1gKTtcbiAgICByZXR1cm4gQkxTLnZlcmlmeShCdWZmZXIuZnJvbShzdHJpcEhleFByZWZpeChwdWIpLCAnaGV4JyksIG1zZywgc2lnbmF0dXJlKTtcbiAgfVxufVxuIl19
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxzS2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL2Jhc2VDb2luL2Jsc0tleVBhaXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUE0QjtBQUM1Qiw4Q0FBa0M7QUFDbEMsNkRBQXNEO0FBR3RELG1DQUErQztBQUUvQyxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFDeEIsSUFBTSxVQUFVLEdBQUc7OztvQkFDakIscUJBQU0sR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFBOztnQkFBbkIsU0FBbUIsQ0FBQztnQkFDcEIsV0FBVyxHQUFHLElBQUksQ0FBQzs7OztLQUNwQixDQUFDO0FBRUYsVUFBVSxFQUFFLENBQUM7QUFFYixTQUFTLGlCQUFpQjtJQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztLQUM5RDtBQUNILENBQUM7QUFFRDs7R0FFRztBQUNIO0lBR0U7OztPQUdHO0lBQ0g7UUFDRSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsNkNBQXdCLEdBQXhCLFVBQXlCLEdBQVc7UUFDbEMsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2pDLElBQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzVDO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDRDQUF1QixHQUF2QixVQUF3QixHQUFXO1FBQ2pDLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCwrQkFBVSxHQUFWLFVBQVcsTUFBc0I7UUFDL0IsTUFBTSxJQUFJLDRCQUFtQixDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELDRCQUFPLEdBQVA7UUFDRSxNQUFNLElBQUksNEJBQW1CLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHlCQUFJLEdBQUosVUFBSyxHQUFXO1FBQ2QsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNXLHdCQUFhLEdBQTNCLFVBQTRCLEdBQVc7UUFDckMsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixJQUFJO1lBQ0YsR0FBRyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNXLHdCQUFhLEdBQTNCLFVBQTRCLEdBQVc7UUFDckMsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixJQUFJO1lBQ0YsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFYSwyQkFBZ0IsR0FBOUIsVUFBK0IsT0FBcUI7UUFDbEQsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixJQUFJO1lBQ0YsT0FBTyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ1csMEJBQWUsR0FBN0IsVUFBOEIsR0FBVyxFQUFFLEdBQVcsRUFBRSxTQUFpQjtRQUN2RSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3BCLGdCQUFNLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSx5QkFBdUIsR0FBSyxDQUFDLENBQUM7UUFDcEUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUNILGlCQUFDO0FBQUQsQ0FBQyxBQXpHRCxJQXlHQztBQXpHcUIsZ0NBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBCTFMgZnJvbSAnQGJpdGdvL2Jscyc7XG5pbXBvcnQgeyBzdHJpcEhleFByZWZpeCB9IGZyb20gJ2V0aGVyZXVtanMtdXRpbHMtb2xkJztcbmltcG9ydCB7IEJhc2VLZXlQYWlyIH0gZnJvbSAnLi9iYXNlS2V5UGFpcic7XG5pbXBvcnQgeyBBZGRyZXNzRm9ybWF0IH0gZnJvbSAnLi9lbnVtJztcbmltcG9ydCB7IE5vdEltcGxlbWVudGVkRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xuY29uc3QgaW5pdGlhbGl6ZSA9IGFzeW5jICgpID0+IHtcbiAgYXdhaXQgQkxTLmluaXRCTFMoKTtcbiAgaW5pdGlhbGl6ZWQgPSB0cnVlO1xufTtcblxuaW5pdGlhbGl6ZSgpO1xuXG5mdW5jdGlvbiBlbnN1cmVJbml0aWFsaXplZCgpIHtcbiAgaWYgKCFpbml0aWFsaXplZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQkxTIGxpYiBub3QgeWV0IGluaXRpYWxpemVkLCBwbGVhc2UgcmV0cnknKTtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIEJMUyBrZXlwYWlycy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsc0tleVBhaXIgaW1wbGVtZW50cyBCYXNlS2V5UGFpciB7XG4gIHByb3RlY3RlZCBrZXlQYWlyOiBCTFMuS2V5cGFpcjtcblxuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLiBCeSBkZWZhdWx0LCBjcmVhdGVzIGEga2V5IHBhaXIgd2l0aCBhIHJhbmRvbSBtYXN0ZXIgc2VlZC5cbiAgICpcbiAgICovXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICBlbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIHRoaXMua2V5UGFpciA9IEJMUy5nZW5lcmF0ZUtleVBhaXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGtleVBhaXIgZnJvbSBwcml2YXRlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiBhIGhleGFkZWNpbWFsIHByaXZhdGUga2V5XG4gICAqL1xuICByZWNvcmRLZXlzRnJvbVByaXZhdGVLZXkocHJ2OiBzdHJpbmcpIHtcbiAgICBpZiAoQmxzS2V5UGFpci5pc1ZhbGlkQkxTUHJ2KHBydikpIHtcbiAgICAgIGNvbnN0IHByaXZhdGVLZXkgPSBCTFMuUHJpdmF0ZUtleS5mcm9tSGV4U3RyaW5nKHBydik7XG4gICAgICB0aGlzLmtleVBhaXIgPSBuZXcgQkxTLktleXBhaXIocHJpdmF0ZUtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwcml2YXRlIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RlIC0gdGhpcyBpcyBub3QgcG9zc2libGUgdXNpbmcgQkxTLiBCTFMgZG9lcyBub3Qgc3VwcG9ydCBwdWJrZXkgZGVyaXZlZCBrZXkgZ2VuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwdWIgLSBBbiBleHRlbmRlZCwgY29tcHJlc3NlZCwgb3IgdW5jb21wcmVzc2VkIHB1YmxpYyBrZXlcbiAgICovXG4gIHJlY29yZEtleXNGcm9tUHVibGljS2V5KHB1Yjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ1B1YmxpYyBrZXkgZGVyaXZhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGJscycpO1xuICB9XG5cbiAgZ2V0QWRkcmVzcyhmb3JtYXQ/OiBBZGRyZXNzRm9ybWF0KTogc3RyaW5nIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignZ2V0QWRkcmVzcyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGdldEtleXMoKTogYW55IHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcignZ2V0S2V5cyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyBieXRlcyB1c2luZyB0aGUga2V5IHBhaXJcbiAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSBieXRlcyB0byBzaWduXG4gICAqIEByZXR1cm4gc2lnbmF0dXJlIG9mIHRoZSBieXRlcyB1c2luZyB0aGlzIGtleXBhaXJcbiAgICovXG4gIHNpZ24obXNnOiBCdWZmZXIpOiBCdWZmZXIge1xuICAgIHJldHVybiBCTFMuc2lnbih0aGlzLmtleVBhaXIucHJpdmF0ZUtleS50b0J5dGVzKCksIG1zZyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBCTFMgcHJpdmF0ZSBrZXlcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiBBIGhleGFkZWNpbWFsIHB1YmxpYyBrZXkgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHJpdmF0ZSBrZXkgb3Igbm90XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVmFsaWRCTFNQcnYocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBlbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIHRyeSB7XG4gICAgICBCTFMuUHJpdmF0ZUtleS5mcm9tSGV4U3RyaW5nKHBydik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwdWJsaWMga2V5IGZvciB0aGUgY29pbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1YiB0aGUgcHViIHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMge2Jvb2xlYW59IGlzIGl0IHZhbGlkP1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1ZhbGlkQkxTUHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICB0cnkge1xuICAgICAgQkxTLlB1YmxpY0tleS5mcm9tSGV4KHB1Yik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhZ2dyZWdhdGVQdWJrZXlzKHB1YktleXM6IFVpbnQ4QXJyYXlbXSk6IEJ1ZmZlciB7XG4gICAgZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEJMUy5hZ2dyZWdhdGVQdWJrZXlzKHB1YktleXMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgYWdncmVnYXRpbmcgcHVia2V5czogJyArIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyB0aGUgc2lnbmF0dXJlIGZvciB0aGlzIGtleSBwYWlyXG4gICAqIEBwYXJhbSBwdWIgVGhlIHB1YmxpYyBrZXkgd2l0aCB3aGljaCB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZVxuICAgKiBAcGFyYW0gbXNnIFRoZSBtZXNzYWdlIHRvIHZlcmlmeSB0aGUgc2lnbmF0dXJlIHdpdGhcbiAgICogQHBhcmFtIHNpZ25hdHVyZSB0aGUgc2lnbmF0dXJlIHRvIHZlcmlmeVxuICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHNpZ25hdHVyZSBpcyB2YWxpZCwgZWxzZSBmYWxzZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2ZXJpZnlTaWduYXR1cmUocHViOiBzdHJpbmcsIG1zZzogQnVmZmVyLCBzaWduYXR1cmU6IEJ1ZmZlcik6IGJvb2xlYW4ge1xuICAgIGVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgYXNzZXJ0KEJsc0tleVBhaXIuaXNWYWxpZEJMU1B1YihwdWIpLCBgSW52YWxpZCBwdWJsaWMga2V5OiAke3B1Yn1gKTtcbiAgICByZXR1cm4gQkxTLnZlcmlmeShCdWZmZXIuZnJvbShzdHJpcEhleFByZWZpeChwdWIpLCAnaGV4JyksIG1zZywgc2lnbmF0dXJlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ import * as Utils from './utils';
2
+ export { KeyPair } from './keyPair';
3
+ export { TransactionBuilderFactory } from './transactionBuilderFactory';
4
+ export { Utils };
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.Utils = exports.TransactionBuilderFactory = exports.KeyPair = void 0;
23
+ var Utils = __importStar(require("./utils"));
24
+ exports.Utils = Utils;
25
+ var keyPair_1 = require("./keyPair");
26
+ Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return keyPair_1.KeyPair; } });
27
+ var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
28
+ Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9kb3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUFpQztBQUl4QixzQkFBSztBQUZkLHFDQUFvQztBQUEzQixrR0FBQSxPQUFPLE9BQUE7QUFDaEIseUVBQXdFO0FBQS9ELHNJQUFBLHlCQUF5QixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSc7XG5leHBvcnQgeyBVdGlscyB9O1xuIl19
@@ -0,0 +1,16 @@
1
+ import { DefaultKeys, KeyPairOptions } from '../baseCoin/iface';
2
+ import { Ed25519KeyPair } from '../baseCoin';
3
+ import { AddressFormat } from '../baseCoin/enum';
4
+ export declare class KeyPair extends Ed25519KeyPair {
5
+ /**
6
+ * Public constructor. By default, creates a key pair with a random master seed.
7
+ *
8
+ * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
9
+ */
10
+ constructor(source?: KeyPairOptions);
11
+ getAddress(format?: AddressFormat): string;
12
+ getKeys(): DefaultKeys;
13
+ recordKeysFromPrivateKeyInProtocolFormat(prv: string): DefaultKeys;
14
+ recordKeysFromPublicKeyInProtocolFormat(prv: string): DefaultKeys;
15
+ }
16
+ //# sourceMappingURL=keyPair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/keyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,OAAQ,SAAQ,cAAc;IACzC;;;;OAIG;gBACS,MAAM,CAAC,EAAE,cAAc;IAInC,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM;IAI1C,OAAO,IAAI,WAAW;IAItB,wCAAwC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAGlE,uCAAuC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;CAGlE"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.KeyPair = void 0;
19
+ var baseCoin_1 = require("../baseCoin");
20
+ var KeyPair = /** @class */ (function (_super) {
21
+ __extends(KeyPair, _super);
22
+ /**
23
+ * Public constructor. By default, creates a key pair with a random master seed.
24
+ *
25
+ * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
26
+ */
27
+ function KeyPair(source) {
28
+ return _super.call(this, source) || this;
29
+ }
30
+ KeyPair.prototype.getAddress = function (format) {
31
+ throw new Error('Method not implemented.');
32
+ };
33
+ KeyPair.prototype.getKeys = function () {
34
+ throw new Error('Method not implemented.');
35
+ };
36
+ KeyPair.prototype.recordKeysFromPrivateKeyInProtocolFormat = function (prv) {
37
+ throw new Error('Method not implemented.');
38
+ };
39
+ KeyPair.prototype.recordKeysFromPublicKeyInProtocolFormat = function (prv) {
40
+ throw new Error('Method not implemented.');
41
+ };
42
+ return KeyPair;
43
+ }(baseCoin_1.Ed25519KeyPair));
44
+ exports.KeyPair = KeyPair;
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL2RvdC9rZXlQYWlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHdDQUE2QztBQUc3QztJQUE2QiwyQkFBYztJQUN6Qzs7OztPQUlHO0lBQ0gsaUJBQVksTUFBdUI7ZUFDakMsa0JBQU0sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVELDRCQUFVLEdBQVYsVUFBVyxNQUFzQjtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELHlCQUFPLEdBQVA7UUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELDBEQUF3QyxHQUF4QyxVQUF5QyxHQUFXO1FBQ2xELE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QseURBQXVDLEdBQXZDLFVBQXdDLEdBQVc7UUFDakQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDSCxjQUFDO0FBQUQsQ0FBQyxBQXhCRCxDQUE2Qix5QkFBYyxHQXdCMUM7QUF4QlksMEJBQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWZhdWx0S2V5cywgS2V5UGFpck9wdGlvbnMgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgeyBFZDI1NTE5S2V5UGFpciB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuLi9iYXNlQ29pbi9lbnVtJztcblxuZXhwb3J0IGNsYXNzIEtleVBhaXIgZXh0ZW5kcyBFZDI1NTE5S2V5UGFpciB7XG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuIEJ5IGRlZmF1bHQsIGNyZWF0ZXMgYSBrZXkgcGFpciB3aXRoIGEgcmFuZG9tIG1hc3RlciBzZWVkLlxuICAgKlxuICAgKiBAcGFyYW0geyBLZXlQYWlyT3B0aW9ucyB9IHNvdXJjZSBFaXRoZXIgYSBtYXN0ZXIgc2VlZCwgYSBwcml2YXRlIGtleSwgb3IgYSBwdWJsaWMga2V5XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucykge1xuICAgIHN1cGVyKHNvdXJjZSk7XG4gIH1cblxuICBnZXRBZGRyZXNzKGZvcm1hdD86IEFkZHJlc3NGb3JtYXQpOiBzdHJpbmcge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGdldEtleXMoKTogRGVmYXVsdEtleXMge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHJlY29yZEtleXNGcm9tUHJpdmF0ZUtleUluUHJvdG9jb2xGb3JtYXQocHJ2OiBzdHJpbmcpOiBEZWZhdWx0S2V5cyB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIHJlY29yZEtleXNGcm9tUHVibGljS2V5SW5Qcm90b2NvbEZvcm1hdChwcnY6IHN0cmluZyk6IERlZmF1bHRLZXlzIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,11 @@
1
+ import { BaseTransaction } from '../baseCoin';
2
+ import { BaseKey } from '../baseCoin/iface';
3
+ export declare class Transaction extends BaseTransaction {
4
+ /** @inheritdoc */
5
+ canSign(key: BaseKey): boolean;
6
+ /** @inheritdoc */
7
+ toBroadcastFormat(): string;
8
+ /** @inheritdoc */
9
+ toJson(): any;
10
+ }
11
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG5C,qBAAa,WAAY,SAAQ,eAAe;IAC9C,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAI3B,kBAAkB;IAClB,MAAM,IAAI,GAAG;CAGd"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.Transaction = void 0;
19
+ var baseCoin_1 = require("../baseCoin");
20
+ var errors_1 = require("../baseCoin/errors");
21
+ var Transaction = /** @class */ (function (_super) {
22
+ __extends(Transaction, _super);
23
+ function Transaction() {
24
+ return _super !== null && _super.apply(this, arguments) || this;
25
+ }
26
+ /** @inheritdoc */
27
+ Transaction.prototype.canSign = function (key) {
28
+ throw new errors_1.NotImplementedError('canSign not implemented');
29
+ };
30
+ /** @inheritdoc */
31
+ Transaction.prototype.toBroadcastFormat = function () {
32
+ throw new errors_1.NotImplementedError('toBroadcastFormat not implemented');
33
+ };
34
+ /** @inheritdoc */
35
+ Transaction.prototype.toJson = function () {
36
+ throw new errors_1.NotImplementedError('toJson not implemented');
37
+ };
38
+ return Transaction;
39
+ }(baseCoin_1.BaseTransaction));
40
+ exports.Transaction = Transaction;
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9kb3QvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0NBQThDO0FBRTlDLDZDQUF5RDtBQUV6RDtJQUFpQywrQkFBZTtJQUFoRDs7SUFlQSxDQUFDO0lBZEMsa0JBQWtCO0lBQ2xCLDZCQUFPLEdBQVAsVUFBUSxHQUFZO1FBQ2xCLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsdUNBQWlCLEdBQWpCO1FBQ0UsTUFBTSxJQUFJLDRCQUFtQixDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiw0QkFBTSxHQUFOO1FBQ0UsTUFBTSxJQUFJLDRCQUFtQixDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNILGtCQUFDO0FBQUQsQ0FBQyxBQWZELENBQWlDLDBCQUFlLEdBZS9DO0FBZlksa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb24gfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCYXNlS2V5IH0gZnJvbSAnLi4vYmFzZUNvaW4vaWZhY2UnO1xuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdjYW5TaWduIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ3RvQnJvYWRjYXN0Rm9ybWF0IG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBhbnkge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCd0b0pzb24gbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
3
+ import { BaseTransactionBuilder } from '../baseCoin';
4
+ import { BaseAddress, BaseKey } from '../baseCoin/iface';
5
+ import { Transaction } from './transaction';
6
+ export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
7
+ private _transaction;
8
+ constructor(_coinConfig: Readonly<CoinConfig>);
9
+ /**
10
+ * Initialize the transaction builder fields using the decoded transaction data
11
+ *
12
+ * @param {Transaction} tx the transaction data
13
+ */
14
+ initBuilder(tx: Transaction): void;
15
+ /** @inheritdoc */
16
+ protected get transaction(): Transaction;
17
+ /** @inheritdoc */
18
+ validateAddress(address: BaseAddress, addressFormat?: string): void;
19
+ /** @inheritdoc */
20
+ validateKey(key: BaseKey): void;
21
+ /** @inheritdoc */
22
+ validateRawTransaction(rawTransaction: any): void;
23
+ /** @inheritdoc */
24
+ validateTransaction(transaction?: Transaction): void;
25
+ /** @inheritdoc */
26
+ validateValue(value: BigNumber): void;
27
+ }
28
+ //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,OAAO,CAAC,YAAY,CAAc;gBAEtB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAKlC,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAID,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAInE,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAI/B,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,GAAG,GAAG,IAAI;IAIjD,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAIpD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAItC"}