@bitgo/account-lib 2.16.0 → 2.17.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/bitgo-account-lib.min.js +1 -1
- package/dist/browser/bitgo-account-lib.min.js.LICENSE.txt +18 -0
- package/dist/package.json +6 -3
- package/dist/src/coin/algo/index.d.ts +7 -0
- package/dist/src/coin/algo/index.d.ts.map +1 -1
- package/dist/src/coin/algo/index.js +18 -2
- package/dist/src/coin/algo/keyPair.d.ts +15 -4
- package/dist/src/coin/algo/keyPair.d.ts.map +1 -1
- package/dist/src/coin/algo/keyPair.js +57 -7
- package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +1 -1
- package/dist/src/coin/algo/keyRegistrationBuilder.js +1 -2
- package/dist/src/coin/algo/seedEncoding.d.ts +1 -1
- package/dist/src/coin/algo/seedEncoding.d.ts.map +1 -1
- package/dist/src/coin/algo/seedEncoding.js +2 -3
- package/dist/src/coin/algo/transaction.d.ts +67 -4
- package/dist/src/coin/algo/transaction.d.ts.map +1 -1
- package/dist/src/coin/algo/transaction.js +239 -6
- package/dist/src/coin/algo/transactionBuilder.d.ts +189 -6
- package/dist/src/coin/algo/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/algo/transactionBuilder.js +394 -8
- package/dist/src/coin/algo/transactionBuilderFactory.d.ts +10 -3
- package/dist/src/coin/algo/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/algo/transactionBuilderFactory.js +40 -8
- package/dist/src/coin/algo/utils.d.ts +1 -9
- package/dist/src/coin/algo/utils.d.ts.map +1 -1
- package/dist/src/coin/algo/utils.js +7 -18
- package/dist/src/coin/baseCoin/ed25519KeyPair.d.ts +1 -1
- package/dist/src/coin/baseCoin/ed25519KeyPair.d.ts.map +1 -1
- package/dist/src/coin/baseCoin/ed25519KeyPair.js +8 -2
- package/dist/src/coin/celo/transactionBuilder.d.ts +6 -0
- package/dist/src/coin/celo/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/celo/transactionBuilder.js +10 -1
- package/dist/src/coin/eth/transactionBuilder.d.ts +6 -0
- package/dist/src/coin/eth/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/eth/transactionBuilder.js +12 -3
- package/dist/src/coin/eth/types.d.ts.map +1 -1
- package/dist/src/coin/eth/types.js +5 -3
- package/dist/src/utils/crypto.js +2 -2
- package/package.json +6 -3
|
@@ -96,6 +96,7 @@ var keyPair_1 = require("./keyPair");
|
|
|
96
96
|
var iface_1 = require("./iface");
|
|
97
97
|
var utils_1 = require("./utils");
|
|
98
98
|
var walletUtil_1 = require("./walletUtil");
|
|
99
|
+
var ethereumjs_util_1 = require("ethereumjs-util");
|
|
99
100
|
var DEFAULT_M = 3;
|
|
100
101
|
/**
|
|
101
102
|
* Ethereum transaction builder.
|
|
@@ -461,7 +462,7 @@ var TransactionBuilder = /** @class */ (function (_super) {
|
|
|
461
462
|
gasLimit: this._fee.gasLimit,
|
|
462
463
|
nonce: this._counter,
|
|
463
464
|
data: data,
|
|
464
|
-
chainId: this._common.
|
|
465
|
+
chainId: this._common.chainIdBN().toString(),
|
|
465
466
|
value: this._value,
|
|
466
467
|
to: this._contractAddress,
|
|
467
468
|
};
|
|
@@ -469,7 +470,7 @@ var TransactionBuilder = /** @class */ (function (_super) {
|
|
|
469
470
|
return __assign(__assign({}, baseParams), { _type: iface_1.ETHTransactionType.EIP1559, maxFeePerGas: this._fee.eip1559.maxFeePerGas, maxPriorityFeePerGas: this._fee.eip1559.maxPriorityFeePerGas });
|
|
470
471
|
}
|
|
471
472
|
else {
|
|
472
|
-
return __assign(__assign({}, baseParams), { _type: iface_1.ETHTransactionType.LEGACY, gasPrice: (_b = (_a = this._fee) === null || _a === void 0 ? void 0 : _a.gasPrice) !== null && _b !== void 0 ? _b : this._fee.fee });
|
|
473
|
+
return __assign(__assign({}, baseParams), { _type: iface_1.ETHTransactionType.LEGACY, gasPrice: (_b = (_a = this._fee) === null || _a === void 0 ? void 0 : _a.gasPrice) !== null && _b !== void 0 ? _b : this._fee.fee, v: this.getFinalV() });
|
|
473
474
|
}
|
|
474
475
|
};
|
|
475
476
|
// endregion
|
|
@@ -646,7 +647,15 @@ var TransactionBuilder = /** @class */ (function (_super) {
|
|
|
646
647
|
enumerable: false,
|
|
647
648
|
configurable: true
|
|
648
649
|
});
|
|
650
|
+
/**
|
|
651
|
+
* Get the final v value. Final v is described in EIP-155.
|
|
652
|
+
*
|
|
653
|
+
* @protected for internal use when the enableFinalVField flag is true.
|
|
654
|
+
*/
|
|
655
|
+
TransactionBuilder.prototype.getFinalV = function () {
|
|
656
|
+
return ethereumjs_util_1.addHexPrefix(this._common.chainIdBN().muln(2).addn(35).toString(16));
|
|
657
|
+
};
|
|
649
658
|
return TransactionBuilder;
|
|
650
659
|
}(baseCoin_1.BaseTransactionBuilder));
|
|
651
660
|
exports.TransactionBuilder = TransactionBuilder;
|
|
652
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vZXRoL3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxrRUFBeUM7QUFDekMsOERBQXFDO0FBQ3JDLDZDQUFpQztBQUVqQyx5REFBNkM7QUFDN0Msd0NBQXVGO0FBRXZGLDhCQUE2RDtBQUM3RCw2Q0FLNEI7QUFDNUIscUNBQW9DO0FBQ3BDLGlDQUEwRTtBQUMxRSxpQ0FRaUI7QUFDakIsMkNBQTZFO0FBRTdFLElBQU0sU0FBUyxHQUFHLENBQUMsQ0FBQztBQUVwQjs7R0FFRztBQUNIO0lBQXdDLHNDQUFzQjtJQTRCNUQ7Ozs7T0FJRztJQUNILDRCQUFZLFdBQWlDO1FBQTdDLFlBQ0Usa0JBQU0sV0FBVyxDQUFDLFNBT25CO1FBTkMsS0FBSSxDQUFDLE9BQU8sR0FBRyxpQkFBUyxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUMsT0FBMEIsQ0FBQyxDQUFDO1FBQ3RFLEtBQUksQ0FBQyxLQUFLLEdBQUcsMEJBQWUsQ0FBQyxJQUFJLENBQUM7UUFDbEMsS0FBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbEIsS0FBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDbEIsS0FBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztRQUNoQyxLQUFJLENBQUMsV0FBVyxHQUFHLElBQUksaUJBQVcsQ0FBQyxLQUFJLENBQUMsV0FBVyxFQUFFLEtBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzs7SUFDckUsQ0FBQztJQUVELGtCQUFrQjtJQUNGLGdEQUFtQixHQUFuQzs7Ozs7O3dCQUNRLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUs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LFlBQVksR0FBRyxXQUFXLENBQUM7UUFDbEMsQ0FBQzs7O09BTEE7SUFNSCx5QkFBQztBQUFELENBQUMsQUFybUJELENBQXdDLGlDQUFzQixHQXFtQjdEO0FBcm1CWSxnREFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnLCBFdGhlcmV1bU5ldHdvcmsgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgRXRoZXJldW1Db21tb24gZnJvbSAnQGV0aGVyZXVtanMvY29tbW9uJztcbmltcG9ydCBFdGhlcmV1bUFiaSBmcm9tICdldGhlcmV1bWpzLWFiaSc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgKiBhcyBldGhlcnMgZnJvbSAnZXRoZXJzJztcblxuaW1wb3J0ICogYXMgQ3J5cHRvIGZyb20gJy4uLy4uL3V0aWxzL2NyeXB0byc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb24sIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJhc2VBZGRyZXNzLCBCYXNlS2V5IH0gZnJvbSAnLi4vYmFzZUNvaW4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24sIFRyYW5zZmVyQnVpbGRlciwgVXRpbHMgfSBmcm9tICcuLi9ldGgnO1xuaW1wb3J0IHtcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBTaWduaW5nRXJyb3IsXG59IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IEVUSFRyYW5zYWN0aW9uVHlwZSwgRmVlLCBTaWduYXR1cmVQYXJ0cywgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQge1xuICBjYWxjdWxhdGVGb3J3YXJkZXJBZGRyZXNzLFxuICBmbHVzaENvaW5zRGF0YSxcbiAgZmx1c2hUb2tlbnNEYXRhLFxuICBnZXRBZGRyZXNzSW5pdGlhbGl6YXRpb25EYXRhLFxuICBnZXRDb21tb24sXG4gIGhhc1NpZ25hdHVyZSxcbiAgaXNWYWxpZEV0aEFkZHJlc3MsXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgd2FsbGV0U2ltcGxlQnl0ZUNvZGUsIHdhbGxldFNpbXBsZUNvbnN0cnVjdG9yIH0gZnJvbSAnLi93YWxsZXRVdGlsJztcblxuY29uc3QgREVGQVVMVF9NID0gMztcblxuLyoqXG4gKiBFdGhlcmV1bSB0cmFuc2FjdGlvbiBidWlsZGVyLlxuICovXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBwcm90ZWN0ZWQgX2NvbW1vbjogRXRoZXJldW1Db21tb247XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcbiAgcHJpdmF0ZSBfc291cmNlS2V5UGFpcjogS2V5UGFpcjtcbiAgcHJpdmF0ZSBfY291bnRlcjogbnVtYmVyO1xuICBwcml2YXRlIF9mZWU6IEZlZTtcbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZztcblxuICAvLyB0aGUgc2lnbmF0dXJlIG9uIHRoZSBleHRlcm5hbCBFVEggdHJhbnNhY3Rpb25cbiAgcHJpdmF0ZSBfdHhTaWduYXR1cmU6IFNpZ25hdHVyZVBhcnRzO1xuXG4gIC8vIFdhbGxldCBpbml0aWFsaXphdGlvbiB0cmFuc2FjdGlvbiBwYXJhbWV0ZXJzXG4gIHByaXZhdGUgX3dhbGxldE93bmVyQWRkcmVzc2VzOiBzdHJpbmdbXTtcblxuICAvLyBmbHVzaCB0b2tlbnMgcGFyYW1ldGVyc1xuICBwcml2YXRlIF9mb3J3YXJkZXJBZGRyZXNzOiBzdHJpbmc7XG4gIHByaXZhdGUgX3Rva2VuQWRkcmVzczogc3RyaW5nO1xuXG4gIC8vIFNlbmQgYW5kIEFkZHJlc3NJbml0aWFsaXphdGlvbiB0cmFuc2FjdGlvbiBzcGVjaWZpYyBwYXJhbWV0ZXJzXG4gIHByb3RlY3RlZCBfdHJhbnNmZXI6IFRyYW5zZmVyQnVpbGRlcjtcbiAgcHJpdmF0ZSBfY29udHJhY3RBZGRyZXNzOiBzdHJpbmc7XG4gIHByaXZhdGUgX2NvbnRyYWN0Q291bnRlcjogbnVtYmVyO1xuXG4gIC8vIGdlbmVyaWMgY29udHJhY3QgY2FsbCBidWlsZGVyXG4gIC8vIGVuY29kZWQgY29udHJhY3QgY2FsbCBoZXhcbiAgcHJpdmF0ZSBfZGF0YTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBfY29pbkNvbmZpZ1xuICAgKi9cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX2NvbW1vbiA9IGdldENvbW1vbih0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsgYXMgRXRoZXJldW1OZXR3b3JrKTtcbiAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gICAgdGhpcy5fY291bnRlciA9IDA7XG4gICAgdGhpcy5fdmFsdWUgPSAnMCc7XG4gICAgdGhpcy5fd2FsbGV0T3duZXJBZGRyZXNzZXMgPSBbXTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcsIHRoaXMuX2NvbW1vbik7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxCYXNlVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCB0cmFuc2FjdGlvbkRhdGEgPSB0aGlzLmdldFRyYW5zYWN0aW9uRGF0YSgpO1xuXG4gICAgaWYgKHRoaXMuX3R4U2lnbmF0dXJlKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHRyYW5zYWN0aW9uRGF0YSwgdGhpcy5fdHhTaWduYXR1cmUpO1xuICAgIH1cblxuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKHRoaXMuX3R5cGUpO1xuICAgIHRyYW5zYWN0aW9uRGF0YS5mcm9tID0gdGhpcy5fc291cmNlS2V5UGFpciA/IHRoaXMuX3NvdXJjZUtleVBhaXIuZ2V0QWRkcmVzcygpIDogdW5kZWZpbmVkO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25EYXRhKHRyYW5zYWN0aW9uRGF0YSk7XG5cbiAgICAvLyBCdWlsZCBhbmQgc2lnbiBhIG5ldyB0cmFuc2FjdGlvbiBiYXNlZCBvbiB0aGUgbGF0ZXN0IGNoYW5nZXNcbiAgICBpZiAodGhpcy5fc291cmNlS2V5UGFpciAmJiB0aGlzLl9zb3VyY2VLZXlQYWlyLmdldEtleXMoKS5wcnYpIHtcbiAgICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uc2lnbih0aGlzLl9zb3VyY2VLZXlQYWlyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VHJhbnNhY3Rpb25EYXRhKCk6IFR4RGF0YSB7XG4gICAgc3dpdGNoICh0aGlzLl90eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRXYWxsZXRJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uKCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFNlbmRUcmFuc2FjdGlvbigpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEFkZHJlc3NJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uKCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5GbHVzaFRva2VuczpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRGbHVzaFRva2Vuc1RyYW5zYWN0aW9uKCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5GbHVzaENvaW5zOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEZsdXNoQ29pbnNUcmFuc2FjdGlvbigpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2luZ2xlU2lnU2VuZDpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRCYXNlKCcweCcpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEdlbmVyaWNDb250cmFjdENhbGxUcmFuc2FjdGlvbigpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgbGV0IHR4OiBUcmFuc2FjdGlvbjtcbiAgICBpZiAoL14weD9bMC05YS1mXXsxLH0kLy50ZXN0KHJhd1RyYW5zYWN0aW9uLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICB0eCA9IFRyYW5zYWN0aW9uLmZyb21TZXJpYWxpemVkKHRoaXMuX2NvaW5Db25maWcsIHRoaXMuX2NvbW1vbiwgcmF3VHJhbnNhY3Rpb24pO1xuICAgICAgdGhpcy5sb2FkQnVpbGRlcklucHV0KHR4LnRvSnNvbigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHhEYXRhID0gSlNPTi5wYXJzZShyYXdUcmFuc2FjdGlvbik7XG4gICAgICB0eCA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnLCB0eERhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgYnVpbGRlciBkYXRhIHVzaW5nIHRoZSBkZXNlcmlhbGl6ZWQgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUeERhdGF9IHRyYW5zYWN0aW9uSnNvbiB0aGUgZGVzZXJpYWxpemVkIHRyYW5zYWN0aW9uIGpzb25cbiAgICovXG4gIHByb3RlY3RlZCBsb2FkQnVpbGRlcklucHV0KHRyYW5zYWN0aW9uSnNvbjogVHhEYXRhKTogdm9pZCB7XG4gICAgY29uc3QgZGVjb2RlZFR5cGUgPSBVdGlscy5jbGFzc2lmeVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSnNvbi5kYXRhKTtcbiAgICB0aGlzLnR5cGUoZGVjb2RlZFR5cGUpO1xuICAgIHRoaXMuY291bnRlcih0cmFuc2FjdGlvbkpzb24ubm9uY2UpO1xuICAgIHRoaXMudmFsdWUodHJhbnNhY3Rpb25Kc29uLnZhbHVlKTtcblxuICAgIGlmICh0cmFuc2FjdGlvbkpzb24uX3R5cGUgPT09IEVUSFRyYW5zYWN0aW9uVHlwZS5MRUdBQ1kpIHtcbiAgICAgIHRoaXMuZmVlKHtcbiAgICAgICAgZmVlOiB0cmFuc2FjdGlvbkpzb24uZ2FzUHJpY2UsXG4gICAgICAgIGdhc1ByaWNlOiB0cmFuc2FjdGlvbkpzb24uZ2FzUHJpY2UsXG4gICAgICAgIGdhc0xpbWl0OiB0cmFuc2FjdGlvbkpzb24uZ2FzTGltaXQsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mZWUoe1xuICAgICAgICBnYXNMaW1pdDogdHJhbnNhY3Rpb25Kc29uLmdhc0xpbWl0LFxuICAgICAgICBmZWU6IHRyYW5zYWN0aW9uSnNvbi5tYXhGZWVQZXJHYXMsXG4gICAgICAgIGVpcDE1NTk6IHtcbiAgICAgICAgICBtYXhGZWVQZXJHYXM6IHRyYW5zYWN0aW9uSnNvbi5tYXhGZWVQZXJHYXMsXG4gICAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXM6IHRyYW5zYWN0aW9uSnNvbi5tYXhQcmlvcml0eUZlZVBlckdhcyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChoYXNTaWduYXR1cmUodHJhbnNhY3Rpb25Kc29uKSkge1xuICAgICAgdGhpcy5fdHhTaWduYXR1cmUgPSB7IHY6IHRyYW5zYWN0aW9uSnNvbi52ISwgcjogdHJhbnNhY3Rpb25Kc29uLnIhLCBzOiB0cmFuc2FjdGlvbkpzb24ucyEgfTtcbiAgICB9XG4gICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGVGaWVsZHMoZGVjb2RlZFR5cGUsIHRyYW5zYWN0aW9uSnNvbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0VHJhbnNhY3Rpb25UeXBlRmllbGRzKGRlY29kZWRUeXBlOiBUcmFuc2FjdGlvblR5cGUsIHRyYW5zYWN0aW9uSnNvbjogVHhEYXRhKTogdm9pZCB7XG4gICAgc3dpdGNoIChkZWNvZGVkVHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb246XG4gICAgICAgIGNvbnN0IG93bmVycyA9IFV0aWxzLmRlY29kZVdhbGxldENyZWF0aW9uRGF0YSh0cmFuc2FjdGlvbkpzb24uZGF0YSk7XG4gICAgICAgIG93bmVycy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5vd25lcihlbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuRmx1c2hUb2tlbnM6XG4gICAgICAgIHRoaXMuc2V0Q29udHJhY3QodHJhbnNhY3Rpb25Kc29uLnRvKTtcbiAgICAgICAgY29uc3QgeyBmb3J3YXJkZXJBZGRyZXNzLCB0b2tlbkFkZHJlc3MgfSA9IFV0aWxzLmRlY29kZUZsdXNoVG9rZW5zRGF0YSh0cmFuc2FjdGlvbkpzb24uZGF0YSk7XG4gICAgICAgIHRoaXMuZm9yd2FyZGVyQWRkcmVzcyhmb3J3YXJkZXJBZGRyZXNzKTtcbiAgICAgICAgdGhpcy50b2tlbkFkZHJlc3ModG9rZW5BZGRyZXNzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5GbHVzaENvaW5zOlxuICAgICAgICB0aGlzLnNldENvbnRyYWN0KHRyYW5zYWN0aW9uSnNvbi50byk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgdGhpcy5zZXRDb250cmFjdCh0cmFuc2FjdGlvbkpzb24udG8pO1xuICAgICAgICB0aGlzLl90cmFuc2ZlciA9IHRoaXMudHJhbnNmZXIodHJhbnNhY3Rpb25Kc29uLmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFkZHJlc3NJbml0aWFsaXphdGlvbjpcbiAgICAgICAgdGhpcy5zZXRDb250cmFjdCh0cmFuc2FjdGlvbkpzb24udG8pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNpbmdsZVNpZ1NlbmQ6XG4gICAgICAgIHRoaXMuc2V0Q29udHJhY3QodHJhbnNhY3Rpb25Kc29uLnRvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGw6XG4gICAgICAgIHRoaXMuc2V0Q29udHJhY3QodHJhbnNhY3Rpb25Kc29uLnRvKTtcbiAgICAgICAgdGhpcy5kYXRhKHRyYW5zYWN0aW9uSnNvbi5kYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVbnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgICAvLyBUT0RPOiBBZGQgb3RoZXIgY2FzZXMgb2YgZGVzZXJpYWxpemF0aW9uXG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oa2V5OiBCYXNlS2V5KTogQmFzZVRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCBzaWduZXIgPSBuZXcgS2V5UGFpcih7IHBydjoga2V5LmtleSB9KTtcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uICYmIHRoaXMuX3dhbGxldE93bmVyQWRkcmVzc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignQ2Fubm90IHNpZ24gYW4gd2FsbGV0IGluaXRpYWxpemF0aW9uIHRyYW5zYWN0aW9uIHdpdGhvdXQgb3duZXJzJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zb3VyY2VLZXlQYWlyKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdDYW5ub3Qgc2lnbiBtdWx0aXBsZSB0aW1lcyBhIG5vbiBzZW5kLXR5cGUgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgLy8gU2lnbmluZyB0aGUgdHJhbnNhY3Rpb24gaXMgYW4gYXN5bmMgb3BlcmF0aW9uLCBzbyBzYXZlIHRoZSBzb3VyY2UgYW5kIGxlYXZlIHRoZSBhY3R1YWxcbiAgICAvLyBzaWduaW5nIGZvciB0aGUgYnVpbGQgc3RlcFxuICAgIHRoaXMuX3NvdXJjZUtleVBhaXIgPSBzaWduZXI7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IEJhc2VBZGRyZXNzKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3MgJyArIGFkZHJlc3MuYWRkcmVzcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIGlmICghKENyeXB0by5pc1ZhbGlkWHBydihrZXkua2V5KSB8fCBDcnlwdG8uaXNWYWxpZFBydihrZXkua2V5KSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQga2V5Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoZSByYXcgdHJhbnNhY3Rpb24gaXMgZWl0aGVyIGEgSlNPTiBvclxuICAgKiBhIGhleCBlbmNvZGVkIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSByYXdUcmFuc2FjdGlvbiBUaGUgcmF3IHRyYW5zYWN0aW9uIHRvIGJlIHZhbGlkYXRlZFxuICAgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogYW55KTogdm9pZCB7XG4gICAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdSYXcgdHJhbnNhY3Rpb24gaXMgZW1wdHknKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiByYXdUcmFuc2FjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICgvXjB4P1swLTlhLWZdezEsfSQvLnRlc3QocmF3VHJhbnNhY3Rpb24udG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBldGhlcnMudXRpbHMuUkxQLmRlY29kZShyYXdUcmFuc2FjdGlvbik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdUaGVyZSB3YXMgZXJyb3IgaW4gZGVjb2RpbmcgdGhlIGhleCBzdHJpbmcnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBKU09OLnBhcnNlKHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ1RoZXJlIHdhcyBlcnJvciBpbiBwYXJzaW5nIHRoZSBKU09OIHN0cmluZycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gaXMgbm90IGEgaGV4IHN0cmluZyBvciBzdHJpbmdpZmllZCBqc29uJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlQmFzZVRyYW5zYWN0aW9uRmllbGRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9mZWUgPT09IHVuZGVmaW5lZCB8fCAoIXRoaXMuX2ZlZS5mZWUgJiYgIXRoaXMuX2ZlZS5nYXNQcmljZSAmJiAhdGhpcy5fZmVlLmVpcDE1NTkpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGZlZScpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fY29tbW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG5ldHdvcmsgY29tbW9uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9jb3VudGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgYWRkcmVzcyBjb3VudGVyJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IEJhc2VUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVCYXNlVHJhbnNhY3Rpb25GaWVsZHMoKTtcbiAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uOlxuICAgICAgICB0aGlzLnZhbGlkYXRlV2FsbGV0SW5pdGlhbGl6YXRpb25GaWVsZHMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICB0aGlzLnZhbGlkYXRlQ29udHJhY3RBZGRyZXNzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uOlxuICAgICAgICB0aGlzLnZhbGlkYXRlQ29udHJhY3RBZGRyZXNzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuRmx1c2hDb2luczpcbiAgICAgICAgdGhpcy52YWxpZGF0ZUNvbnRyYWN0QWRkcmVzcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkZsdXNoVG9rZW5zOlxuICAgICAgICB0aGlzLnZhbGlkYXRlQ29udHJhY3RBZGRyZXNzKCk7XG4gICAgICAgIHRoaXMudmFsaWRhdGVGb3J3YXJkZXJBZGRyZXNzKCk7XG4gICAgICAgIHRoaXMudmFsaWRhdGVUb2tlbkFkZHJlc3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TaW5nbGVTaWdTZW5kOlxuICAgICAgICAvLyBmb3Igc2luZ2xlIHNpZyBzZW5kcywgdGhlIGNvbnRyYWN0IGFkZHJlc3MgaXMgYWN0dWFsbHkgdGhlIHJlY2lwaWVudFxuICAgICAgICB0aGlzLnZhbGlkYXRlQ29udHJhY3RBZGRyZXNzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0xvY2s6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW5sb2NrOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1ZvdGU6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW52b3RlOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbDpcbiAgICAgICAgdGhpcy52YWxpZGF0ZUNvbnRyYWN0QWRkcmVzcygpO1xuICAgICAgICB0aGlzLnZhbGlkYXRlRGF0YUZpZWxkKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3YWxsZXQgb3duZXIgYWRkcmVzc2VzIGZvciB3YWxsZXQgaW5pdGlhbGl6YXRpb24gdHJhbnNhY3Rpb25zIGFyZSB2YWxpZCBvciB0aHJvdy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVXYWxsZXRJbml0aWFsaXphdGlvbkZpZWxkcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fd2FsbGV0T3duZXJBZGRyZXNzZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyB3YWxsZXQgb3duZXJzJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3dhbGxldE93bmVyQWRkcmVzc2VzLmxlbmd0aCAhPT0gMykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgdHJhbnNhY3Rpb246IHdyb25nIG51bWJlciBvZiBvd25lcnMgLS0gcmVxdWlyZWQ6IDMsIGZvdW5kOiAke3RoaXMuX3dhbGxldE93bmVyQWRkcmVzc2VzLmxlbmd0aH1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSB0b2tlbiBhZGRyZXNzIGZvciB0aGUgdHggd2FzIGRlZmluZWQgb3IgdGhyb3cuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVG9rZW5BZGRyZXNzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90b2tlbkFkZHJlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyB0b2tlbiBhZGRyZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgZm9yd2FyZGVyIGFkZHJlc3MgZm9yIHRoZSB0eCB3YXMgZGVmaW5lZCBvciB0aHJvdy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVGb3J3YXJkZXJBZGRyZXNzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9mb3J3YXJkZXJBZGRyZXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgZm9yd2FyZGVyIGFkZHJlc3MnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBjb250cmFjdCBhZGRyZXNzIGZvciB0aGUgd2FsbGV0IHdhcyBkZWZpbmVkIG9yIHRocm93LlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUNvbnRyYWN0QWRkcmVzcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY29udHJhY3RBZGRyZXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgY29udHJhY3QgYWRkcmVzcycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBjb250cmFjdCBjYWxsIGRhdGEgZmllbGQgd2FzIGRlZmluZWQgb3IgdGhyb3dzIG90aGVyd2lzZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZURhdGFGaWVsZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2RhdGEpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgY29udHJhY3QgY2FsbCBkYXRhIGZpZWxkJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb250cmFjdChhZGRyZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAoYWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVbmRlZmluZWQgcmVjaXBpZW50IGFkZHJlc3MnKTtcbiAgICB9XG4gICAgdGhpcy5jb250cmFjdChhZGRyZXNzKTtcbiAgfVxuXG4gIHZhbGlkYXRlVmFsdWUodmFsdWU6IEJpZ051bWJlcik6IHZvaWQge1xuICAgIGlmICh2YWx1ZS5pc0xlc3NUaGFuKDApKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWYWx1ZSBjYW5ub3QgYmUgYmVsb3cgbGVzcyB0aGFuIHplcm8nKTtcbiAgICB9XG4gICAgLy8gVE9ETzogdmFsaWRhdGUgdGhlIGFtb3VudCBpcyBub3QgYmlnZ2VyIHRoYW4gdGhlIG1heCBhbW91bnQgaW4gZWFjaCBFdGggZmFtaWx5IGNvaW5cbiAgfVxuXG4gIC8vIHJlZ2lvbiBDb21tb24gYnVpbGRlciBtZXRob2RzXG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRyYW5zYWN0aW9uIGJlaW5nIGJ1aWx0LlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHlwZVxuICAgKi9cbiAgdHlwZSh0eXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLl90eXBlID0gdHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIGZlZXMuIExvdyBmZWVzIG1heSBnZXQgYSB0cmFuc2FjdGlvbiByZWplY3RlZCBvciBuZXZlciBwaWNrZWQgdXAgYnkgYmFrZXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge0ZlZX0gZmVlIEJha2VyIGZlZXMuIE1heSBhbHNvIGluY2x1ZGUgdGhlIG1heGltdW0gZ2FzIHRvIHBheVxuICAgKi9cbiAgZmVlKGZlZTogRmVlKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoZmVlLmZlZSkpO1xuICAgIGlmIChmZWUuZ2FzTGltaXQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKGZlZS5nYXNMaW1pdCkpO1xuICAgIH1cbiAgICBpZiAoZmVlLmVpcDE1NTkpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKGZlZS5laXAxNTU5Lm1heEZlZVBlckdhcykpO1xuICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoZmVlLmVpcDE1NTkubWF4UHJpb3JpdHlGZWVQZXJHYXMpKTtcbiAgICB9XG4gICAgaWYgKGZlZS5nYXNQcmljZSkge1xuICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoZmVlLmdhc1ByaWNlKSk7XG4gICAgfVxuICAgIHRoaXMuX2ZlZSA9IGZlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIGNvdW50ZXIgdG8gcHJldmVudCBzdWJtaXR0aW5nIHJlcGVhdGVkIHRyYW5zYWN0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvdW50ZXIgVGhlIGNvdW50ZXIgdG8gdXNlXG4gICAqL1xuICBjb3VudGVyKGNvdW50ZXI6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChjb3VudGVyIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBjb3VudGVyOiAke2NvdW50ZXJ9YCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY291bnRlciA9IGNvdW50ZXI7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHZhbHVlIHRvIHNlbmQgYWxvbmcgd2l0aCB0aGlzIHRyYW5zYWN0aW9uLiAwIGJ5IGRlZmF1bHRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZW5kIGFsb25nIHdpdGggdGhpcyB0cmFuc2FjdGlvblxuICAgKi9cbiAgdmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gIH1cblxuICAvLyBzZXQgYXJncyB0aGF0IGFyZSByZXF1aXJlZCBmb3IgYWxsIHR5cGVzIG9mIGV0aCB0cmFuc2FjdGlvbnNcbiAgcHJvdGVjdGVkIGJ1aWxkQmFzZShkYXRhOiBzdHJpbmcpOiBUeERhdGEge1xuICAgIGNvbnN0IGJhc2VQYXJhbXMgPSB7XG4gICAgICBnYXNMaW1pdDogdGhpcy5fZmVlLmdhc0xpbWl0LFxuICAgICAgbm9uY2U6IHRoaXMuX2NvdW50ZXIsXG4gICAgICBkYXRhOiBkYXRhLFxuICAgICAgY2hhaW5JZDogdGhpcy5fY29tbW9uLmNoYWluSWQoKS50b1N0cmluZygpLFxuICAgICAgdmFsdWU6IHRoaXMuX3ZhbHVlLFxuICAgICAgdG86IHRoaXMuX2NvbnRyYWN0QWRkcmVzcyxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuX2ZlZS5laXAxNTU5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlUGFyYW1zLFxuICAgICAgICBfdHlwZTogRVRIVHJhbnNhY3Rpb25UeXBlLkVJUDE1NTksXG4gICAgICAgIG1heEZlZVBlckdhczogdGhpcy5fZmVlLmVpcDE1NTkubWF4RmVlUGVyR2FzLFxuICAgICAgICBtYXhQcmlvcml0eUZlZVBlckdhczogdGhpcy5fZmVlLmVpcDE1NTkubWF4UHJpb3JpdHlGZWVQZXJHYXMsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlUGFyYW1zLFxuICAgICAgICBfdHlwZTogRVRIVHJhbnNhY3Rpb25UeXBlLkxFR0FDWSxcbiAgICAgICAgZ2FzUHJpY2U6IHRoaXMuX2ZlZT8uZ2FzUHJpY2UgPz8gdGhpcy5fZmVlLmZlZSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFdhbGxldEluaXRpYWxpemF0aW9uIGJ1aWxkZXIgbWV0aG9kc1xuICAvKipcbiAgICogU2V0IG9uZSBvZiB0aGUgb3duZXJzIG9mIHRoZSBtdWx0aXNpZyB3YWxsZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIEFuIEV0aGVyZXVtIGFkZHJlc3NcbiAgICovXG4gIG93bmVyKGFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90eXBlICE9PSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ011bHRpc2lnIHdhbGxldCBvd25lciBjYW4gb25seSBiZSBzZXQgZm9yIGluaXRpYWxpemF0aW9uIHRyYW5zYWN0aW9ucycpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fd2FsbGV0T3duZXJBZGRyZXNzZXMubGVuZ3RoID49IERFRkFVTFRfTSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQSBtYXhpbXVtIG9mICcgKyBERUZBVUxUX00gKyAnIG93bmVycyBjYW4gYmUgc2V0IGZvciBhIG11bHRpc2lnIHdhbGxldCcpO1xuICAgIH1cbiAgICBpZiAoIWlzVmFsaWRFdGhBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3M6ICcgKyBhZGRyZXNzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3dhbGxldE93bmVyQWRkcmVzc2VzLmluY2x1ZGVzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdSZXBlYXRlZCBvd25lciBhZGRyZXNzOiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX3dhbGxldE93bmVyQWRkcmVzc2VzLnB1c2goYWRkcmVzcyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSB0cmFuc2FjdGlvbiBmb3IgYSBnZW5lcmljIG11bHRpc2lnIGNvbnRyYWN0LlxuICAgKlxuICAgKiBAcmV0dXJucyB7VHhEYXRhfSBUaGUgRXRoZXJldW0gdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkV2FsbGV0SW5pdGlhbGl6YXRpb25UcmFuc2FjdGlvbigpOiBUeERhdGEge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkQmFzZSh0aGlzLmdldENvbnRyYWN0RGF0YSh0aGlzLl93YWxsZXRPd25lckFkZHJlc3NlcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNtYXJ0IGNvbnRyYWN0IGVuY29kZWQgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhZGRyZXNzZXMgLSB0aGUgY29udHJhY3Qgc2lnbmVyc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBzbWFydCBjb250cmFjdCBlbmNvZGVkIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBnZXRDb250cmFjdERhdGEoYWRkcmVzc2VzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyYW1zID0gW2FkZHJlc3Nlc107XG4gICAgY29uc3QgcmVzdWx0RW5jb2RlZFBhcmFtZXRlcnMgPSBFdGhlcmV1bUFiaS5yYXdFbmNvZGUod2FsbGV0U2ltcGxlQ29uc3RydWN0b3IsIHBhcmFtcylcbiAgICAgIC50b1N0cmluZygnaGV4JylcbiAgICAgIC5yZXBsYWNlKCcweCcsICcnKTtcbiAgICByZXR1cm4gd2FsbGV0U2ltcGxlQnl0ZUNvZGUgKyByZXN1bHRFbmNvZGVkUGFyYW1ldGVycztcbiAgfVxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gU2VuZCBidWlsZGVyIG1ldGhvZHNcblxuICBjb250cmFjdChhZGRyZXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWlzVmFsaWRFdGhBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3M6ICcgKyBhZGRyZXNzKTtcbiAgICB9XG4gICAgdGhpcy5fY29udHJhY3RBZGRyZXNzID0gYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0cmFuc2ZlciBmdW5kcyBidWlsZGVyIGlmIGV4aXN0LCBvciBjcmVhdGVzIGEgbmV3IG9uZSBmb3IgdGhpcyB0cmFuc2FjdGlvbiBhbmQgcmV0dXJucyBpdFxuICAgKlxuICAgKiBAcGFyYW0gW2RhdGFdIHRyYW5zZmVyIGRhdGEgdG8gaW5pdGlhbGl6ZSB0aGUgdHJhbnNmZXIgYnVpbGRlciB3aXRoLCBlbXB0eSBpZiBub25lIGdpdmVuXG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckJ1aWxkZXJ9IHRoZSB0cmFuc2ZlciBidWlsZGVyXG4gICAqL1xuICB0cmFuc2ZlcihkYXRhPzogc3RyaW5nKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICBpZiAodGhpcy5fdHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zZmVycyBjYW4gb25seSBiZSBzZXQgZm9yIHNlbmQgdHJhbnNhY3Rpb25zJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fdHJhbnNmZXIpIHtcbiAgICAgIHRoaXMuX3RyYW5zZmVyID0gbmV3IFRyYW5zZmVyQnVpbGRlcihkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zZmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNlcmlhbGl6ZWQgc2VuZE11bHRpU2lnIGNvbnRyYWN0IG1ldGhvZCBkYXRhXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IHNlcmlhbGl6ZWQgc2VuZE11bHRpU2lnIGRhdGFcbiAgICovXG4gIHByaXZhdGUgZ2V0U2VuZERhdGEoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3RyYW5zZmVyKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIHRyYW5zZmVyIGluZm9ybWF0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl90cmFuc2Zlci5zaWduQW5kQnVpbGQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTZW5kVHJhbnNhY3Rpb24oKTogVHhEYXRhIHtcbiAgICBjb25zdCBzZW5kRGF0YSA9IHRoaXMuZ2V0U2VuZERhdGEoKTtcbiAgICBjb25zdCB0eDogVHhEYXRhID0gdGhpcy5idWlsZEJhc2Uoc2VuZERhdGEpO1xuICAgIHR4LnRvID0gdGhpcy5fY29udHJhY3RBZGRyZXNzO1xuICAgIHJldHVybiB0eDtcbiAgfVxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gQWRkcmVzc0luaXRpYWxpemF0aW9uIGJ1aWxkZXIgbWV0aG9kc1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbnRyYWN0IHRyYW5zYWN0aW9uIG5vbmNlIHRvIGNhbGN1bGF0ZSB0aGUgZm9yd2FyZGVyIGFkZHJlc3MuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb250cmFjdENvdW50ZXIgVGhlIGNvdW50ZXIgdG8gdXNlXG4gICAqL1xuICBjb250cmFjdENvdW50ZXIoY29udHJhY3RDb3VudGVyOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoY29udHJhY3RDb3VudGVyIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBjb250cmFjdCBjb3VudGVyOiAke2NvbnRyYWN0Q291bnRlcn1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jb250cmFjdENvdW50ZXIgPSBjb250cmFjdENvdW50ZXI7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSB0cmFuc2FjdGlvbiB0byBjcmVhdGUgYSBmb3J3YXJkZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIHtUeERhdGF9IFRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkQWRkcmVzc0luaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24oKTogVHhEYXRhIHtcbiAgICBjb25zdCBhZGRyZXNzSW5pdERhdGEgPSBnZXRBZGRyZXNzSW5pdGlhbGl6YXRpb25EYXRhKCk7XG4gICAgY29uc3QgdHg6IFR4RGF0YSA9IHRoaXMuYnVpbGRCYXNlKGFkZHJlc3NJbml0RGF0YSk7XG4gICAgdHgudG8gPSB0aGlzLl9jb250cmFjdEFkZHJlc3M7XG4gICAgaWYgKHRoaXMuX2NvbnRyYWN0Q291bnRlcikge1xuICAgICAgdHguZGVwbG95ZWRBZGRyZXNzID0gY2FsY3VsYXRlRm9yd2FyZGVyQWRkcmVzcyh0aGlzLl9jb250cmFjdEFkZHJlc3MsIHRoaXMuX2NvbnRyYWN0Q291bnRlcik7XG4gICAgfVxuICAgIHJldHVybiB0eDtcbiAgfVxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gZmx1c2ggbWV0aG9kc1xuICAvKipcbiAgICogU2V0IHRoZSBmb3J3YXJkZXIgYWRkcmVzcyB0byBmbHVzaFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyBUaGUgYWRkcmVzcyB0byBmbHVzaFxuICAgKi9cbiAgZm9yd2FyZGVyQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWlzVmFsaWRFdGhBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3M6ICcgKyBhZGRyZXNzKTtcbiAgICB9XG4gICAgdGhpcy5fZm9yd2FyZGVyQWRkcmVzcyA9IGFkZHJlc3M7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBhZGRyZXNzIG9mIHRoZSBFUkMyMCB0b2tlbiBjb250cmFjdCB0aGF0IHdlIGFyZSBmbHVzaGluZyB0b2tlbnMgZm9yXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIHRoZSBjb250cmFjdCBhZGRyZXNzIG9mIHRoZSB0b2tlbiB0byBmbHVzaFxuICAgKi9cbiAgdG9rZW5BZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghaXNWYWxpZEV0aEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzczogJyArIGFkZHJlc3MpO1xuICAgIH1cbiAgICB0aGlzLl90b2tlbkFkZHJlc3MgPSBhZGRyZXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgdHJhbnNhY3Rpb24gdG8gZmx1c2ggdG9rZW5zIGZyb20gYSBmb3J3YXJkZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIHtUeERhdGF9IFRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkRmx1c2hUb2tlbnNUcmFuc2FjdGlvbigpOiBUeERhdGEge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkQmFzZShmbHVzaFRva2Vuc0RhdGEodGhpcy5fZm9yd2FyZGVyQWRkcmVzcywgdGhpcy5fdG9rZW5BZGRyZXNzKSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSB0cmFuc2FjdGlvbiB0byBmbHVzaCB0b2tlbnMgZnJvbSBhIGZvcndhcmRlci5cbiAgICpcbiAgICogQHJldHVybnMge1R4RGF0YX0gVGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIHByaXZhdGUgYnVpbGRGbHVzaENvaW5zVHJhbnNhY3Rpb24oKTogVHhEYXRhIHtcbiAgICByZXR1cm4gdGhpcy5idWlsZEJhc2UoZmx1c2hDb2luc0RhdGEoKSk7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIGdlbmVyaWMgY29udHJhY3QgY2FsbFxuICBkYXRhKGVuY29kZWRDYWxsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignZGF0YSBjYW4gb25seSBiZSBzZXQgZm9yIGNvbnRyYWN0IGNhbGwgdHJhbnNhY3Rpb24gdHlwZXMnKTtcbiAgICB9XG4gICAgdGhpcy5fZGF0YSA9IGVuY29kZWRDYWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEdlbmVyaWNDb250cmFjdENhbGxUcmFuc2FjdGlvbigpOiBUeERhdGEge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkQmFzZSh0aGlzLl9kYXRhKTtcbiAgfVxuICAvLyBlbmRyZWdpb25cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxufVxuIl19
|
|
661
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vZXRoL3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxrRUFBeUM7QUFDekMsOERBQXFDO0FBQ3JDLDZDQUFpQztBQUVqQyx5REFBNkM7QUFDN0Msd0NBQXVGO0FBRXZGLDhCQUE2RDtBQUM3RCw2Q0FLNEI7QUFDNUIscUNBQW9DO0FBQ3BDLGlDQUEwRTtBQUMxRSxpQ0FRaUI7QUFDakIsMkNBQTZFO0FBQzdFLG1EQUErQztBQUUvQyxJQUFNLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFFcEI7O0dBRUc7QUFDSDtJQUF3QyxzQ0FBc0I7SUE0QjVEOzs7O09BSUc7SUFDSCw0QkFBWSxXQUFpQztRQUE3QyxZQUNFLGtCQUFNLFdBQVcsQ0FBQyxTQU9uQjtRQU5DLEtBQUksQ0FBQyxPQUFPLEdBQUcsaUJBQVMsQ0FBQyxLQUFJLENBQUMsV0FBVyxDQUFDLE9BQTBCLENBQUMsQ0FBQztRQUN0RSxLQUFJLENBQUMsS0FBSyxHQUFHLDBCQUFlLENBQUMsSUFBSSxDQUFDO1FBQ2xDLEtBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLEtBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2xCLEtBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFDaEMsS0FBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGlCQUFXLENBQUMsS0FBSSxDQUFDLFdBQVcsRUFBRSxLQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7O0lBQ3JFLENBQUM7SUFFRCxrQkFBa0I7SUFDRixnREFBbUIsR0FBbkM7Ozs7Ozt3QkFDUSxlQUFlLEdBQUcsSUFBSSxDQUFD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QUFDO1FBRUQsa0JBQWtCO2FBQ2xCLFVBQTBCLFdBQXdCO1lBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2xDLENBQUM7OztPQUxBO0lBT0Q7Ozs7T0FJRztJQUNPLHNDQUFTLEdBQW5CO1FBQ0UsT0FBTyw4QkFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBQ0gseUJBQUM7QUFBRCxDQUFDLEFBL21CRCxDQUF3QyxpQ0FBc0IsR0ErbUI3RDtBQS9tQlksZ0RBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgRXRoZXJldW1OZXR3b3JrIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IEV0aGVyZXVtQ29tbW9uIGZyb20gJ0BldGhlcmV1bWpzL2NvbW1vbic7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0ICogYXMgZXRoZXJzIGZyb20gJ2V0aGVycyc7XG5cbmltcG9ydCAqIGFzIENyeXB0byBmcm9tICcuLi8uLi91dGlscy9jcnlwdG8nO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uLCBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCYXNlQWRkcmVzcywgQmFzZUtleSB9IGZyb20gJy4uL2Jhc2VDb2luL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uLCBUcmFuc2ZlckJ1aWxkZXIsIFV0aWxzIH0gZnJvbSAnLi4vZXRoJztcbmltcG9ydCB7XG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgU2lnbmluZ0Vycm9yLFxufSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBFVEhUcmFuc2FjdGlvblR5cGUsIEZlZSwgU2lnbmF0dXJlUGFydHMsIFR4RGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHtcbiAgY2FsY3VsYXRlRm9yd2FyZGVyQWRkcmVzcyxcbiAgZmx1c2hDb2luc0RhdGEsXG4gIGZsdXNoVG9rZW5zRGF0YSxcbiAgZ2V0QWRkcmVzc0luaXRpYWxpemF0aW9uRGF0YSxcbiAgZ2V0Q29tbW9uLFxuICBoYXNTaWduYXR1cmUsXG4gIGlzVmFsaWRFdGhBZGRyZXNzLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IHdhbGxldFNpbXBsZUJ5dGVDb2RlLCB3YWxsZXRTaW1wbGVDb25zdHJ1Y3RvciB9IGZyb20gJy4vd2FsbGV0VXRpbCc7XG5pbXBvcnQgeyBhZGRIZXhQcmVmaXggfSBmcm9tICdldGhlcmV1bWpzLXV0aWwnO1xuXG5jb25zdCBERUZBVUxUX00gPSAzO1xuXG4vKipcbiAqIEV0aGVyZXVtIHRyYW5zYWN0aW9uIGJ1aWxkZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF90eXBlOiBUcmFuc2FjdGlvblR5cGU7XG4gIHByb3RlY3RlZCBfY29tbW9uOiBFdGhlcmV1bUNvbW1vbjtcbiAgcHJpdmF0ZSBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcml2YXRlIF9zb3VyY2VLZXlQYWlyOiBLZXlQYWlyO1xuICBwcml2YXRlIF9jb3VudGVyOiBudW1iZXI7XG4gIHByaXZhdGUgX2ZlZTogRmVlO1xuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nO1xuXG4gIC8vIHRoZSBzaWduYXR1cmUgb24gdGhlIGV4dGVybmFsIEVUSCB0cmFuc2FjdGlvblxuICBwcml2YXRlIF90eFNpZ25hdHVyZTogU2lnbmF0dXJlUGFydHM7XG5cbiAgLy8gV2FsbGV0IGluaXRpYWxpemF0aW9uIHRyYW5zYWN0aW9uIHBhcmFtZXRlcnNcbiAgcHJpdmF0ZSBfd2FsbGV0T3duZXJBZGRyZXNzZXM6IHN0cmluZ1tdO1xuXG4gIC8vIGZsdXNoIHRva2VucyBwYXJhbWV0ZXJzXG4gIHByaXZhdGUgX2ZvcndhcmRlckFkZHJlc3M6IHN0cmluZztcbiAgcHJpdmF0ZSBfdG9rZW5BZGRyZXNzOiBzdHJpbmc7XG5cbiAgLy8gU2VuZCBhbmQgQWRkcmVzc0luaXRpYWxpemF0aW9uIHRyYW5zYWN0aW9uIHNwZWNpZmljIHBhcmFtZXRlcnNcbiAgcHJvdGVjdGVkIF90cmFuc2ZlcjogVHJhbnNmZXJCdWlsZGVyO1xuICBwcml2YXRlIF9jb250cmFjdEFkZHJlc3M6IHN0cmluZztcbiAgcHJpdmF0ZSBfY29udHJhY3RDb3VudGVyOiBudW1iZXI7XG5cbiAgLy8gZ2VuZXJpYyBjb250cmFjdCBjYWxsIGJ1aWxkZXJcbiAgLy8gZW5jb2RlZCBjb250cmFjdCBjYWxsIGhleFxuICBwcml2YXRlIF9kYXRhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIF9jb2luQ29uZmlnXG4gICAqL1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fY29tbW9uID0gZ2V0Q29tbW9uKHRoaXMuX2NvaW5Db25maWcubmV0d29yayBhcyBFdGhlcmV1bU5ldHdvcmspO1xuICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICB0aGlzLl9jb3VudGVyID0gMDtcbiAgICB0aGlzLl92YWx1ZSA9ICcwJztcbiAgICB0aGlzLl93YWxsZXRPd25lckFkZHJlc3NlcyA9IFtdO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZywgdGhpcy5fY29tbW9uKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPEJhc2VUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uRGF0YSA9IHRoaXMuZ2V0VHJhbnNhY3Rpb25EYXRhKCk7XG5cbiAgICBpZiAodGhpcy5fdHhTaWduYXR1cmUpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24odHJhbnNhY3Rpb25EYXRhLCB0aGlzLl90eFNpZ25hdHVyZSk7XG4gICAgfVxuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUodGhpcy5fdHlwZSk7XG4gICAgdHJhbnNhY3Rpb25EYXRhLmZyb20gPSB0aGlzLl9zb3VyY2VLZXlQYWlyID8gdGhpcy5fc291cmNlS2V5UGFpci5nZXRBZGRyZXNzKCkgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbkRhdGEodHJhbnNhY3Rpb25EYXRhKTtcblxuICAgIC8vIEJ1aWxkIGFuZCBzaWduIGEgbmV3IHRyYW5zYWN0aW9uIGJhc2VkIG9uIHRoZSBsYXRlc3QgY2hhbmdlc1xuICAgIGlmICh0aGlzLl9zb3VyY2VLZXlQYWlyICYmIHRoaXMuX3NvdXJjZUtleVBhaXIuZ2V0S2V5cygpLnBydikge1xuICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvbi5zaWduKHRoaXMuX3NvdXJjZUtleVBhaXIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUcmFuc2FjdGlvbkRhdGEoKTogVHhEYXRhIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFdhbGxldEluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24oKTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkU2VuZFRyYW5zYWN0aW9uKCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb246XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkQWRkcmVzc0luaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24oKTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkZsdXNoVG9rZW5zOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEZsdXNoVG9rZW5zVHJhbnNhY3Rpb24oKTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkZsdXNoQ29pbnM6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkRmx1c2hDb2luc1RyYW5zYWN0aW9uKCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TaW5nbGVTaWdTZW5kOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEJhc2UoJzB4Jyk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGw6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkR2VuZXJpY0NvbnRyYWN0Q2FsbFRyYW5zYWN0aW9uKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVbnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBsZXQgdHg6IFRyYW5zYWN0aW9uO1xuICAgIGlmICgvXjB4P1swLTlhLWZdezEsfSQvLnRlc3QocmF3VHJhbnNhY3Rpb24udG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgIHR4ID0gVHJhbnNhY3Rpb24uZnJvbVNlcmlhbGl6ZWQodGhpcy5fY29pbkNvbmZpZywgdGhpcy5fY29tbW9uLCByYXdUcmFuc2FjdGlvbik7XG4gICAgICB0aGlzLmxvYWRCdWlsZGVySW5wdXQodHgudG9Kc29uKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eERhdGEgPSBKU09OLnBhcnNlKHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgIHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcsIHR4RGF0YSk7XG4gICAgfVxuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBidWlsZGVyIGRhdGEgdXNpbmcgdGhlIGRlc2VyaWFsaXplZCB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1R4RGF0YX0gdHJhbnNhY3Rpb25Kc29uIHRoZSBkZXNlcmlhbGl6ZWQgdHJhbnNhY3Rpb24ganNvblxuICAgKi9cbiAgcHJvdGVjdGVkIGxvYWRCdWlsZGVySW5wdXQodHJhbnNhY3Rpb25Kc29uOiBUeERhdGEpOiB2b2lkIHtcbiAgICBjb25zdCBkZWNvZGVkVHlwZSA9IFV0aWxzLmNsYXNzaWZ5VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25Kc29uLmRhdGEpO1xuICAgIHRoaXMudHlwZShkZWNvZGVkVHlwZSk7XG4gICAgdGhpcy5jb3VudGVyKHRyYW5zYWN0aW9uSnNvbi5ub25jZSk7XG4gICAgdGhpcy52YWx1ZSh0cmFuc2FjdGlvbkpzb24udmFsdWUpO1xuXG4gICAgaWYgKHRyYW5zYWN0aW9uSnNvbi5fdHlwZSA9PT0gRVRIVHJhbnNhY3Rpb25UeXBlLkxFR0FDWSkge1xuICAgICAgdGhpcy5mZWUoe1xuICAgICAgICBmZWU6IHRyYW5zYWN0aW9uSnNvbi5nYXNQcmljZSxcbiAgICAgICAgZ2FzUHJpY2U6IHRyYW5zYWN0aW9uSnNvbi5nYXNQcmljZSxcbiAgICAgICAgZ2FzTGltaXQ6IHRyYW5zYWN0aW9uSnNvbi5nYXNMaW1pdCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZlZSh7XG4gICAgICAgIGdhc0xpbWl0OiB0cmFuc2FjdGlvbkpzb24uZ2FzTGltaXQsXG4gICAgICAgIGZlZTogdHJhbnNhY3Rpb25Kc29uLm1heEZlZVBlckdhcyxcbiAgICAgICAgZWlwMTU1OToge1xuICAgICAgICAgIG1heEZlZVBlckdhczogdHJhbnNhY3Rpb25Kc29uLm1heEZlZVBlckdhcyxcbiAgICAgICAgICBtYXhQcmlvcml0eUZlZVBlckdhczogdHJhbnNhY3Rpb25Kc29uLm1heFByaW9yaXR5RmVlUGVyR2FzLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGhhc1NpZ25hdHVyZSh0cmFuc2FjdGlvbkpzb24pKSB7XG4gICAgICB0aGlzLl90eFNpZ25hdHVyZSA9IHsgdjogdHJhbnNhY3Rpb25Kc29uLnYhLCByOiB0cmFuc2FjdGlvbkpzb24uciEsIHM6IHRyYW5zYWN0aW9uSnNvbi5zISB9O1xuICAgIH1cbiAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZUZpZWxkcyhkZWNvZGVkVHlwZSwgdHJhbnNhY3Rpb25Kc29uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRUcmFuc2FjdGlvblR5cGVGaWVsZHMoZGVjb2RlZFR5cGU6IFRyYW5zYWN0aW9uVHlwZSwgdHJhbnNhY3Rpb25Kc29uOiBUeERhdGEpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGRlY29kZWRUeXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgICAgY29uc3Qgb3duZXJzID0gVXRpbHMuZGVjb2RlV2FsbGV0Q3JlYXRpb25EYXRhKHRyYW5zYWN0aW9uSnNvbi5kYXRhKTtcbiAgICAgICAgb3duZXJzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICB0aGlzLm93bmVyKGVsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5GbHVzaFRva2VuczpcbiAgICAgICAgdGhpcy5zZXRDb250cmFjdCh0cmFuc2FjdGlvbkpzb24udG8pO1xuICAgICAgICBjb25zdCB7IGZvcndhcmRlckFkZHJlc3MsIHRva2VuQWRkcmVzcyB9ID0gVXRpbHMuZGVjb2RlRmx1c2hUb2tlbnNEYXRhKHRyYW5zYWN0aW9uSnNvbi5kYXRhKTtcbiAgICAgICAgdGhpcy5mb3J3YXJkZXJBZGRyZXNzKGZvcndhcmRlckFkZHJlc3MpO1xuICAgICAgICB0aGlzLnRva2VuQWRkcmVzcyh0b2tlbkFkZHJlc3MpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkZsdXNoQ29pbnM6XG4gICAgICAgIHRoaXMuc2V0Q29udHJhY3QodHJhbnNhY3Rpb25Kc29uLnRvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICB0aGlzLnNldENvbnRyYWN0KHRyYW5zYWN0aW9uSnNvbi50byk7XG4gICAgICAgIHRoaXMuX3RyYW5zZmVyID0gdGhpcy50cmFuc2Zlcih0cmFuc2FjdGlvbkpzb24uZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uOlxuICAgICAgICB0aGlzLnNldENvbnRyYWN0KHRyYW5zYWN0aW9uSnNvbi50byk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2luZ2xlU2lnU2VuZDpcbiAgICAgICAgdGhpcy5zZXRDb250cmFjdCh0cmFuc2FjdGlvbkpzb24udG8pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbDpcbiAgICAgICAgdGhpcy5zZXRDb250cmFjdCh0cmFuc2FjdGlvbkpzb24udG8pO1xuICAgICAgICB0aGlzLmRhdGEodHJhbnNhY3Rpb25Kc29uLmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1Vuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgICAgIC8vIFRPRE86IEFkZCBvdGhlciBjYXNlcyBvZiBkZXNlcmlhbGl6YXRpb25cbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBCYXNlVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHNpZ25lciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuICAgIGlmICh0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24gJiYgdGhpcy5fd2FsbGV0T3duZXJBZGRyZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdDYW5ub3Qgc2lnbiBhbiB3YWxsZXQgaW5pdGlhbGl6YXRpb24gdHJhbnNhY3Rpb24gd2l0aG91dCBvd25lcnMnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NvdXJjZUtleVBhaXIpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0Nhbm5vdCBzaWduIG11bHRpcGxlIHRpbWVzIGEgbm9uIHNlbmQtdHlwZSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICAvLyBTaWduaW5nIHRoZSB0cmFuc2FjdGlvbiBpcyBhbiBhc3luYyBvcGVyYXRpb24sIHNvIHNhdmUgdGhlIHNvdXJjZSBhbmQgbGVhdmUgdGhlIGFjdHVhbFxuICAgIC8vIHNpZ25pbmcgZm9yIHRoZSBidWlsZCBzdGVwXG4gICAgdGhpcy5fc291cmNlS2V5UGFpciA9IHNpZ25lcjtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MpOiB2b2lkIHtcbiAgICBpZiAoIWlzVmFsaWRFdGhBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzcyAnICsgYWRkcmVzcy5hZGRyZXNzKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgaWYgKCEoQ3J5cHRvLmlzVmFsaWRYcHJ2KGtleS5rZXkpIHx8IENyeXB0by5pc1ZhbGlkUHJ2KGtleS5rZXkpKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBrZXknKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIHJhdyB0cmFuc2FjdGlvbiBpcyBlaXRoZXIgYSBKU09OIG9yXG4gICAqIGEgaGV4IGVuY29kZWQgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IHJhd1RyYW5zYWN0aW9uIFRoZSByYXcgdHJhbnNhY3Rpb24gdG8gYmUgdmFsaWRhdGVkXG4gICAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1JhdyB0cmFuc2FjdGlvbiBpcyBlbXB0eScpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHJhd1RyYW5zYWN0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKC9eMHg/WzAtOWEtZl17MSx9JC8udGVzdChyYXdUcmFuc2FjdGlvbi50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGV0aGVycy51dGlscy5STFAuZGVjb2RlKHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ1RoZXJlIHdhcyBlcnJvciBpbiBkZWNvZGluZyB0aGUgaGV4IHN0cmluZycpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIEpTT04ucGFyc2UocmF3VHJhbnNhY3Rpb24pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignVGhlcmUgd2FzIGVycm9yIGluIHBhcnNpbmcgdGhlIEpTT04gc3RyaW5nJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBpcyBub3QgYSBoZXggc3RyaW5nIG9yIHN0cmluZ2lmaWVkIGpzb24nKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVCYXNlVHJhbnNhY3Rpb25GaWVsZHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2ZlZSA9PT0gdW5kZWZpbmVkIHx8ICghdGhpcy5fZmVlLmZlZSAmJiAhdGhpcy5fZmVlLmdhc1ByaWNlICYmICF0aGlzLl9mZWUuZWlwMTU1OSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgZmVlJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9jb21tb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbmV0d29yayBjb21tb24nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2NvdW50ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBhZGRyZXNzIGNvdW50ZXInKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogQmFzZVRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZUJhc2VUcmFuc2FjdGlvbkZpZWxkcygpO1xuICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb246XG4gICAgICAgIHRoaXMudmFsaWRhdGVXYWxsZXRJbml0aWFsaXphdGlvbkZpZWxkcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIHRoaXMudmFsaWRhdGVDb250cmFjdEFkZHJlc3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb246XG4gICAgICAgIHRoaXMudmFsaWRhdGVDb250cmFjdEFkZHJlc3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5GbHVzaENvaW5zOlxuICAgICAgICB0aGlzLnZhbGlkYXRlQ29udHJhY3RBZGRyZXNzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuRmx1c2hUb2tlbnM6XG4gICAgICAgIHRoaXMudmFsaWRhdGVDb250cmFjdEFkZHJlc3MoKTtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUZvcndhcmRlckFkZHJlc3MoKTtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVRva2VuQWRkcmVzcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNpbmdsZVNpZ1NlbmQ6XG4gICAgICAgIC8vIGZvciBzaW5nbGUgc2lnIHNlbmRzLCB0aGUgY29udHJhY3QgYWRkcmVzcyBpcyBhY3R1YWxseSB0aGUgcmVjaXBpZW50XG4gICAgICAgIHRoaXMudmFsaWRhdGVDb250cmFjdEFkZHJlc3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nTG9jazpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2s6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVm90ZTpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbnZvdGU6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsOlxuICAgICAgICB0aGlzLnZhbGlkYXRlQ29udHJhY3RBZGRyZXNzKCk7XG4gICAgICAgIHRoaXMudmFsaWRhdGVEYXRhRmllbGQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVbnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdhbGxldCBvd25lciBhZGRyZXNzZXMgZm9yIHdhbGxldCBpbml0aWFsaXphdGlvbiB0cmFuc2FjdGlvbnMgYXJlIHZhbGlkIG9yIHRocm93LlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVdhbGxldEluaXRpYWxpemF0aW9uRmllbGRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93YWxsZXRPd25lckFkZHJlc3NlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHdhbGxldCBvd25lcnMnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fd2FsbGV0T3duZXJBZGRyZXNzZXMubGVuZ3RoICE9PSAzKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgSW52YWxpZCB0cmFuc2FjdGlvbjogd3JvbmcgbnVtYmVyIG9mIG93bmVycyAtLSByZXF1aXJlZDogMywgZm91bmQ6ICR7dGhpcy5fd2FsbGV0T3duZXJBZGRyZXNzZXMubGVuZ3RofWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHRva2VuIGFkZHJlc3MgZm9yIHRoZSB0eCB3YXMgZGVmaW5lZCBvciB0aHJvdy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVUb2tlbkFkZHJlc3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3Rva2VuQWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHRva2VuIGFkZHJlc3MnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBmb3J3YXJkZXIgYWRkcmVzcyBmb3IgdGhlIHR4IHdhcyBkZWZpbmVkIG9yIHRocm93LlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZvcndhcmRlckFkZHJlc3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2ZvcndhcmRlckFkZHJlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBmb3J3YXJkZXIgYWRkcmVzcycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoZSB3YWxsZXQgd2FzIGRlZmluZWQgb3IgdGhyb3cuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlQ29udHJhY3RBZGRyZXNzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jb250cmFjdEFkZHJlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBjb250cmFjdCBhZGRyZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGNvbnRyYWN0IGNhbGwgZGF0YSBmaWVsZCB3YXMgZGVmaW5lZCBvciB0aHJvd3Mgb3RoZXJ3aXNlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRGF0YUZpZWxkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBjb250cmFjdCBjYWxsIGRhdGEgZmllbGQnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENvbnRyYWN0KGFkZHJlc3M6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGlmIChhZGRyZXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1VuZGVmaW5lZCByZWNpcGllbnQgYWRkcmVzcycpO1xuICAgIH1cbiAgICB0aGlzLmNvbnRyYWN0KGFkZHJlc3MpO1xuICB9XG5cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlLmlzTGVzc1RoYW4oMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBiZWxvdyBsZXNzIHRoYW4gemVybycpO1xuICAgIH1cbiAgICAvLyBUT0RPOiB2YWxpZGF0ZSB0aGUgYW1vdW50IGlzIG5vdCBiaWdnZXIgdGhhbiB0aGUgbWF4IGFtb3VudCBpbiBlYWNoIEV0aCBmYW1pbHkgY29pblxuICB9XG5cbiAgLy8gcmVnaW9uIENvbW1vbiBidWlsZGVyIG1ldGhvZHNcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdHJhbnNhY3Rpb24gYmVpbmcgYnVpbHQuXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0eXBlXG4gICAqL1xuICB0eXBlKHR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gZmVlcy4gTG93IGZlZXMgbWF5IGdldCBhIHRyYW5zYWN0aW9uIHJlamVjdGVkIG9yIG5ldmVyIHBpY2tlZCB1cCBieSBiYWtlcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7RmVlfSBmZWUgQmFrZXIgZmVlcy4gTWF5IGFsc28gaW5jbHVkZSB0aGUgbWF4aW11bSBnYXMgdG8gcGF5XG4gICAqL1xuICBmZWUoZmVlOiBGZWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihmZWUuZmVlKSk7XG4gICAgaWYgKGZlZS5nYXNMaW1pdCkge1xuICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoZmVlLmdhc0xpbWl0KSk7XG4gICAgfVxuICAgIGlmIChmZWUuZWlwMTU1OSkge1xuICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoZmVlLmVpcDE1NTkubWF4RmVlUGVyR2FzKSk7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihmZWUuZWlwMTU1OS5tYXhQcmlvcml0eUZlZVBlckdhcykpO1xuICAgIH1cbiAgICBpZiAoZmVlLmdhc1ByaWNlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihmZWUuZ2FzUHJpY2UpKTtcbiAgICB9XG4gICAgdGhpcy5fZmVlID0gZmVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gY291bnRlciB0byBwcmV2ZW50IHN1Ym1pdHRpbmcgcmVwZWF0ZWQgdHJhbnNhY3Rpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY291bnRlciBUaGUgY291bnRlciB0byB1c2VcbiAgICovXG4gIGNvdW50ZXIoY291bnRlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGNvdW50ZXIgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIGNvdW50ZXI6ICR7Y291bnRlcn1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jb3VudGVyID0gY291bnRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgdG8gc2VuZCBhbG9uZyB3aXRoIHRoaXMgdHJhbnNhY3Rpb24uIDAgYnkgZGVmYXVsdFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgVGhlIHZhbHVlIHRvIHNlbmQgYWxvbmcgd2l0aCB0aGlzIHRyYW5zYWN0aW9uXG4gICAqL1xuICB2YWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8vIHNldCBhcmdzIHRoYXQgYXJlIHJlcXVpcmVkIGZvciBhbGwgdHlwZXMgb2YgZXRoIHRyYW5zYWN0aW9uc1xuICBwcm90ZWN0ZWQgYnVpbGRCYXNlKGRhdGE6IHN0cmluZyk6IFR4RGF0YSB7XG4gICAgY29uc3QgYmFzZVBhcmFtcyA9IHtcbiAgICAgIGdhc0xpbWl0OiB0aGlzLl9mZWUuZ2FzTGltaXQsXG4gICAgICBub25jZTogdGhpcy5fY291bnRlcixcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICBjaGFpbklkOiB0aGlzLl9jb21tb24uY2hhaW5JZEJOKCkudG9TdHJpbmcoKSxcbiAgICAgIHZhbHVlOiB0aGlzLl92YWx1ZSxcbiAgICAgIHRvOiB0aGlzLl9jb250cmFjdEFkZHJlc3MsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLl9mZWUuZWlwMTU1OSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYmFzZVBhcmFtcyxcbiAgICAgICAgX3R5cGU6IEVUSFRyYW5zYWN0aW9uVHlwZS5FSVAxNTU5LFxuICAgICAgICBtYXhGZWVQZXJHYXM6IHRoaXMuX2ZlZS5laXAxNTU5Lm1heEZlZVBlckdhcyxcbiAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXM6IHRoaXMuX2ZlZS5laXAxNTU5Lm1heFByaW9yaXR5RmVlUGVyR2FzLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYmFzZVBhcmFtcyxcbiAgICAgICAgX3R5cGU6IEVUSFRyYW5zYWN0aW9uVHlwZS5MRUdBQ1ksXG4gICAgICAgIGdhc1ByaWNlOiB0aGlzLl9mZWU/Lmdhc1ByaWNlID8/IHRoaXMuX2ZlZS5mZWUsXG4gICAgICAgIHY6IHRoaXMuZ2V0RmluYWxWKCksXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBXYWxsZXRJbml0aWFsaXphdGlvbiBidWlsZGVyIG1ldGhvZHNcbiAgLyoqXG4gICAqIFNldCBvbmUgb2YgdGhlIG93bmVycyBvZiB0aGUgbXVsdGlzaWcgd2FsbGV0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyBBbiBFdGhlcmV1bSBhZGRyZXNzXG4gICAqL1xuICBvd25lcihhZGRyZXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNdWx0aXNpZyB3YWxsZXQgb3duZXIgY2FuIG9ubHkgYmUgc2V0IGZvciBpbml0aWFsaXphdGlvbiB0cmFuc2FjdGlvbnMnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3dhbGxldE93bmVyQWRkcmVzc2VzLmxlbmd0aCA+PSBERUZBVUxUX00pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0EgbWF4aW11bSBvZiAnICsgREVGQVVMVF9NICsgJyBvd25lcnMgY2FuIGJlIHNldCBmb3IgYSBtdWx0aXNpZyB3YWxsZXQnKTtcbiAgICB9XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzOiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl93YWxsZXRPd25lckFkZHJlc3Nlcy5pbmNsdWRlcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignUmVwZWF0ZWQgb3duZXIgYWRkcmVzczogJyArIGFkZHJlc3MpO1xuICAgIH1cbiAgICB0aGlzLl93YWxsZXRPd25lckFkZHJlc3Nlcy5wdXNoKGFkZHJlc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgdHJhbnNhY3Rpb24gZm9yIGEgZ2VuZXJpYyBtdWx0aXNpZyBjb250cmFjdC5cbiAgICpcbiAgICogQHJldHVybnMge1R4RGF0YX0gVGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZFdhbGxldEluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24oKTogVHhEYXRhIHtcbiAgICByZXR1cm4gdGhpcy5idWlsZEJhc2UodGhpcy5nZXRDb250cmFjdERhdGEodGhpcy5fd2FsbGV0T3duZXJBZGRyZXNzZXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzbWFydCBjb250cmFjdCBlbmNvZGVkIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gYWRkcmVzc2VzIC0gdGhlIGNvbnRyYWN0IHNpZ25lcnNcbiAgICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgc21hcnQgY29udHJhY3QgZW5jb2RlZCBkYXRhXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Q29udHJhY3REYXRhKGFkZHJlc3Nlczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcmFtcyA9IFthZGRyZXNzZXNdO1xuICAgIGNvbnN0IHJlc3VsdEVuY29kZWRQYXJhbWV0ZXJzID0gRXRoZXJldW1BYmkucmF3RW5jb2RlKHdhbGxldFNpbXBsZUNvbnN0cnVjdG9yLCBwYXJhbXMpXG4gICAgICAudG9TdHJpbmcoJ2hleCcpXG4gICAgICAucmVwbGFjZSgnMHgnLCAnJyk7XG4gICAgcmV0dXJuIHdhbGxldFNpbXBsZUJ5dGVDb2RlICsgcmVzdWx0RW5jb2RlZFBhcmFtZXRlcnM7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFNlbmQgYnVpbGRlciBtZXRob2RzXG5cbiAgY29udHJhY3QoYWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzOiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX2NvbnRyYWN0QWRkcmVzcyA9IGFkZHJlc3M7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdHJhbnNmZXIgZnVuZHMgYnVpbGRlciBpZiBleGlzdCwgb3IgY3JlYXRlcyBhIG5ldyBvbmUgZm9yIHRoaXMgdHJhbnNhY3Rpb24gYW5kIHJldHVybnMgaXRcbiAgICpcbiAgICogQHBhcmFtIFtkYXRhXSB0cmFuc2ZlciBkYXRhIHRvIGluaXRpYWxpemUgdGhlIHRyYW5zZmVyIGJ1aWxkZXIgd2l0aCwgZW1wdHkgaWYgbm9uZSBnaXZlblxuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJCdWlsZGVyfSB0aGUgdHJhbnNmZXIgYnVpbGRlclxuICAgKi9cbiAgdHJhbnNmZXIoZGF0YT86IHN0cmluZyk6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgaWYgKHRoaXMuX3R5cGUgIT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2ZlcnMgY2FuIG9ubHkgYmUgc2V0IGZvciBzZW5kIHRyYW5zYWN0aW9ucycpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3RyYW5zZmVyKSB7XG4gICAgICB0aGlzLl90cmFuc2ZlciA9IG5ldyBUcmFuc2ZlckJ1aWxkZXIoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl90cmFuc2ZlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzZXJpYWxpemVkIHNlbmRNdWx0aVNpZyBjb250cmFjdCBtZXRob2QgZGF0YVxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBzZXJpYWxpemVkIHNlbmRNdWx0aVNpZyBkYXRhXG4gICAqL1xuICBwcml2YXRlIGdldFNlbmREYXRhKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl90cmFuc2Zlcikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyB0cmFuc2ZlciBpbmZvcm1hdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdHJhbnNmZXIuc2lnbkFuZEJ1aWxkKCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU2VuZFRyYW5zYWN0aW9uKCk6IFR4RGF0YSB7XG4gICAgY29uc3Qgc2VuZERhdGEgPSB0aGlzLmdldFNlbmREYXRhKCk7XG4gICAgY29uc3QgdHg6IFR4RGF0YSA9IHRoaXMuYnVpbGRCYXNlKHNlbmREYXRhKTtcbiAgICB0eC50byA9IHRoaXMuX2NvbnRyYWN0QWRkcmVzcztcbiAgICByZXR1cm4gdHg7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIEFkZHJlc3NJbml0aWFsaXphdGlvbiBidWlsZGVyIG1ldGhvZHNcblxuICAvKipcbiAgICogU2V0IHRoZSBjb250cmFjdCB0cmFuc2FjdGlvbiBub25jZSB0byBjYWxjdWxhdGUgdGhlIGZvcndhcmRlciBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29udHJhY3RDb3VudGVyIFRoZSBjb3VudGVyIHRvIHVzZVxuICAgKi9cbiAgY29udHJhY3RDb3VudGVyKGNvbnRyYWN0Q291bnRlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGNvbnRyYWN0Q291bnRlciA8IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgY29udHJhY3QgY291bnRlcjogJHtjb250cmFjdENvdW50ZXJ9YCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY29udHJhY3RDb3VudGVyID0gY29udHJhY3RDb3VudGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgdHJhbnNhY3Rpb24gdG8gY3JlYXRlIGEgZm9yd2FyZGVyLlxuICAgKlxuICAgKiBAcmV0dXJucyB7VHhEYXRhfSBUaGUgRXRoZXJldW0gdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEFkZHJlc3NJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uKCk6IFR4RGF0YSB7XG4gICAgY29uc3QgYWRkcmVzc0luaXREYXRhID0gZ2V0QWRkcmVzc0luaXRpYWxpemF0aW9uRGF0YSgpO1xuICAgIGNvbnN0IHR4OiBUeERhdGEgPSB0aGlzLmJ1aWxkQmFzZShhZGRyZXNzSW5pdERhdGEpO1xuICAgIHR4LnRvID0gdGhpcy5fY29udHJhY3RBZGRyZXNzO1xuICAgIGlmICh0aGlzLl9jb250cmFjdENvdW50ZXIpIHtcbiAgICAgIHR4LmRlcGxveWVkQWRkcmVzcyA9IGNhbGN1bGF0ZUZvcndhcmRlckFkZHJlc3ModGhpcy5fY29udHJhY3RBZGRyZXNzLCB0aGlzLl9jb250cmFjdENvdW50ZXIpO1xuICAgIH1cbiAgICByZXR1cm4gdHg7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIGZsdXNoIG1ldGhvZHNcbiAgLyoqXG4gICAqIFNldCB0aGUgZm9yd2FyZGVyIGFkZHJlc3MgdG8gZmx1c2hcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgVGhlIGFkZHJlc3MgdG8gZmx1c2hcbiAgICovXG4gIGZvcndhcmRlckFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzOiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX2ZvcndhcmRlckFkZHJlc3MgPSBhZGRyZXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYWRkcmVzcyBvZiB0aGUgRVJDMjAgdG9rZW4gY29udHJhY3QgdGhhdCB3ZSBhcmUgZmx1c2hpbmcgdG9rZW5zIGZvclxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyB0aGUgY29udHJhY3QgYWRkcmVzcyBvZiB0aGUgdG9rZW4gdG8gZmx1c2hcbiAgICovXG4gIHRva2VuQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWlzVmFsaWRFdGhBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3M6ICcgKyBhZGRyZXNzKTtcbiAgICB9XG4gICAgdGhpcy5fdG9rZW5BZGRyZXNzID0gYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIHRyYW5zYWN0aW9uIHRvIGZsdXNoIHRva2VucyBmcm9tIGEgZm9yd2FyZGVyLlxuICAgKlxuICAgKiBAcmV0dXJucyB7VHhEYXRhfSBUaGUgRXRoZXJldW0gdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEZsdXNoVG9rZW5zVHJhbnNhY3Rpb24oKTogVHhEYXRhIHtcbiAgICByZXR1cm4gdGhpcy5idWlsZEJhc2UoZmx1c2hUb2tlbnNEYXRhKHRoaXMuX2ZvcndhcmRlckFkZHJlc3MsIHRoaXMuX3Rva2VuQWRkcmVzcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgdHJhbnNhY3Rpb24gdG8gZmx1c2ggdG9rZW5zIGZyb20gYSBmb3J3YXJkZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIHtUeERhdGF9IFRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkRmx1c2hDb2luc1RyYW5zYWN0aW9uKCk6IFR4RGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRCYXNlKGZsdXNoQ29pbnNEYXRhKCkpO1xuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBnZW5lcmljIGNvbnRyYWN0IGNhbGxcbiAgZGF0YShlbmNvZGVkQ2FsbDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3R5cGUgIT09IFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ2RhdGEgY2FuIG9ubHkgYmUgc2V0IGZvciBjb250cmFjdCBjYWxsIHRyYW5zYWN0aW9uIHR5cGVzJyk7XG4gICAgfVxuICAgIHRoaXMuX2RhdGEgPSBlbmNvZGVkQ2FsbDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRHZW5lcmljQ29udHJhY3RDYWxsVHJhbnNhY3Rpb24oKTogVHhEYXRhIHtcbiAgICByZXR1cm4gdGhpcy5idWlsZEJhc2UodGhpcy5fZGF0YSk7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmaW5hbCB2IHZhbHVlLiBGaW5hbCB2IGlzIGRlc2NyaWJlZCBpbiBFSVAtMTU1LlxuICAgKlxuICAgKiBAcHJvdGVjdGVkIGZvciBpbnRlcm5hbCB1c2Ugd2hlbiB0aGUgZW5hYmxlRmluYWxWRmllbGQgZmxhZyBpcyB0cnVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldEZpbmFsVigpOiBzdHJpbmcge1xuICAgIHJldHVybiBhZGRIZXhQcmVmaXgodGhpcy5fY29tbW9uLmNoYWluSWRCTigpLm11bG4oMikuYWRkbigzNSkudG9TdHJpbmcoMTYpKTtcbiAgfVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/coin/eth/types.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,gBAAgB,EAIjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAA6B,sBAAsB,EAAoC,MAAM,EAAE,MAAM,SAAS,CAAC;AACtH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;GAEG;AACH,qBAAa,kBAAmB,YAAW,sBAAsB;IAC/D,OAAO,CAAC,EAAE,CAAmB;IAC7B,SAAS,CAAC,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;gBAEpD,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAKvF;;;;;;OAMG;WACW,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,kBAAkB;IAuC9E;;;;;OAKG;WACW,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,kBAAkB;IAIpF,IAAI,CAAC,OAAO,EAAE,OAAO;IAKrB,kBAAkB;IAClB,MAAM,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/coin/eth/types.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,gBAAgB,EAIjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAA6B,sBAAsB,EAAoC,MAAM,EAAE,MAAM,SAAS,CAAC;AACtH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;GAEG;AACH,qBAAa,kBAAmB,YAAW,sBAAsB;IAC/D,OAAO,CAAC,EAAE,CAAmB;IAC7B,SAAS,CAAC,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;gBAEpD,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAKvF;;;;;;OAMG;WACW,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,kBAAkB;IAuC9E;;;;;OAKG;WACW,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,kBAAkB;IAIpF,IAAI,CAAC,OAAO,EAAE,OAAO;IAKrB,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAuDhB,kBAAkB;IAClB,YAAY,IAAI,MAAM;CAGvB"}
|
|
@@ -98,11 +98,13 @@ var EthTransactionData = /** @class */ (function () {
|
|
|
98
98
|
}
|
|
99
99
|
if (this.tx.verifySignature()) {
|
|
100
100
|
result.from = ethereumjs_utils_old_1.bufferToHex(this.tx.getSenderAddress().toBuffer());
|
|
101
|
-
result.v = ethereumjs_utils_old_1.bufferToHex(this.tx.v);
|
|
102
101
|
result.r = ethereumjs_utils_old_1.bufferToHex(this.tx.r);
|
|
103
102
|
result.s = ethereumjs_utils_old_1.bufferToHex(this.tx.s);
|
|
104
103
|
}
|
|
105
|
-
|
|
104
|
+
if (this.tx.v) {
|
|
105
|
+
result.v = ethereumjs_utils_old_1.bufferToHex(this.tx.v);
|
|
106
|
+
}
|
|
107
|
+
result.chainId = ethereumjs_utils_old_1.addHexPrefix(this.tx.common.chainIdBN().toString(16));
|
|
106
108
|
if (this.args && this.args.deployedAddress) {
|
|
107
109
|
result.deployedAddress = this.args.deployedAddress;
|
|
108
110
|
}
|
|
@@ -133,4 +135,4 @@ function isLegacyTx(tx) {
|
|
|
133
135
|
function isEIP1559Txn(tx) {
|
|
134
136
|
return tx._type === iface_1.ETHTransactionType.EIP1559;
|
|
135
137
|
}
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9ldGgvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4REFBcUM7QUFDckMscUNBTXdCO0FBRXhCLDZEQUF3RjtBQUN4RixpQ0FBc0g7QUFHdEgsMEdBQTBHO0FBQzFHLElBQU0sY0FBYyxHQUFHLENBQUMsQ0FBQztBQUN6QixJQUFNLGVBQWUsR0FBRyxDQUFDLENBQUM7QUFFMUI7O0dBRUc7QUFDSDtJQUlFLDRCQUFZLEVBQW9CLEVBQUUsSUFBcUQ7UUFDckYsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ1csMkJBQVEsR0FBdEIsVUFBdUIsRUFBVSxFQUFFLE1BQXNCO1FBQ3ZELElBQU0sS0FBSyxHQUFHLG1DQUFZLENBQUMsSUFBSSxzQkFBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFNLEtBQUssR0FBRyxtQ0FBWSxDQUFDLElBQUksc0JBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakUsSUFBTSxRQUFRLEdBQUcsbUNBQVksQ0FBQyxJQUFJLHNCQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLG1DQUFZLENBQUMsSUFBSSxzQkFBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxD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QUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDSCx5QkFBQztBQUFELENBQUMsQUFoSUQsSUFnSUM7QUFoSVksZ0RBQWtCO0FBa0kvQixTQUFTLFVBQVUsQ0FBQyxFQUFVO0lBQzVCLE9BQU8sRUFBRSxDQUFDLEtBQUssS0FBSywwQkFBa0IsQ0FBQyxNQUFNLENBQUM7QUFDaEQsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEVBQVU7SUFDOUIsT0FBTyxFQUFFLENBQUMsS0FBSyxLQUFLLDBCQUFrQixDQUFDLE9BQU8sQ0FBQztBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25GYWN0b3J5LFxuICBUeXBlZFRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvbiBhcyBMZWdhY3lUcmFuc2FjdGlvbixcbiAgRmVlTWFya2V0RUlQMTU1OVRyYW5zYWN0aW9uLFxuICBBY2Nlc3NMaXN0RUlQMjkzMFRyYW5zYWN0aW9uLFxufSBmcm9tICdAZXRoZXJldW1qcy90eCc7XG5pbXBvcnQgRXRoZXJldW1Db21tb24gZnJvbSAnQGV0aGVyZXVtanMvY29tbW9uJztcbmltcG9ydCB7IGFkZEhleFByZWZpeCwgYnVmZmVyVG9IZXgsIGJ1ZmZlclRvSW50LCB0b0J1ZmZlciB9IGZyb20gJ2V0aGVyZXVtanMtdXRpbHMtb2xkJztcbmltcG9ydCB7IEJhc2VUeERhdGEsIEVJUDE1NTlUeERhdGEsIEV0aExpa2VUcmFuc2FjdGlvbkRhdGEsIExlZ2FjeVR4RGF0YSwgRVRIVHJhbnNhY3Rpb25UeXBlLCBUeERhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW1qcy9ldGhlcmV1bWpzLW1vbm9yZXBvL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL3R4L3NyYy90cmFuc2FjdGlvbkZhY3RvcnkudHMjTDMxXG5jb25zdCBMRUdBQ1lfVFhfVFlQRSA9IDA7XG5jb25zdCBFSVAxNTU5X1RYX1RZUEUgPSAyO1xuXG4vKipcbiAqIEFuIEV0aGVyZXVtIHRyYW5zYWN0aW9uIHdpdGggaGVscGVycyBmb3Igc2VyaWFsaXphdGlvbiBhbmQgZGVzZXJpYWxpemF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRXRoVHJhbnNhY3Rpb25EYXRhIGltcGxlbWVudHMgRXRoTGlrZVRyYW5zYWN0aW9uRGF0YSB7XG4gIHByaXZhdGUgdHg6IFR5cGVkVHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBhcmdzPzogeyBkZXBsb3llZEFkZHJlc3M/OiBzdHJpbmc7IGNoYWluSWQ/OiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3Rvcih0eDogVHlwZWRUcmFuc2FjdGlvbiwgYXJncz86IHsgZGVwbG95ZWRBZGRyZXNzPzogc3RyaW5nOyBjaGFpbklkPzogc3RyaW5nIH0pIHtcbiAgICB0aGlzLnR4ID0gdHg7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbiB0aGVyZXVtIHRyYW5zYWN0aW9uIGZyb20gaXRzIEpTT04gcmVwcmVzZW50YXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtUeERhdGF9IHR4IFRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge0V0aGVyZXVtQ29tbW9ufSBjb21tb24gQ2xhc3MgdG8gYWNjZXNzIGNoYWluIGFuZCBoYXJkZm9yayBwYXJhbWV0ZXJzXG4gICAqIEByZXR1cm5zIHtFdGhUcmFuc2FjdGlvbkRhdGF9IGEgbmV3IGV0aGVyZXVtIHRyYW5zYWN0aW9uIG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSnNvbih0eDogVHhEYXRhLCBjb21tb246IEV0aGVyZXVtQ29tbW9uKTogRXRoVHJhbnNhY3Rpb25EYXRhIHtcbiAgICBjb25zdCBub25jZSA9IGFkZEhleFByZWZpeChuZXcgQmlnTnVtYmVyKHR4Lm5vbmNlKS50b1N0cmluZygxNikpO1xuICAgIGNvbnN0IHZhbHVlID0gYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIodHgudmFsdWUpLnRvU3RyaW5nKDE2KSk7XG4gICAgY29uc3QgZ2FzTGltaXQgPSBhZGRIZXhQcmVmaXgobmV3IEJpZ051bWJlcih0eC5nYXNMaW1pdCkudG9TdHJpbmcoMTYpKTtcbiAgICBjb25zdCBjaGFpbklkID0gdHguY2hhaW5JZCA/IGFkZEhleFByZWZpeChuZXcgQmlnTnVtYmVyKHR4LmNoYWluSWQpLnRvU3RyaW5nKDE2KSkgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBnYXNQcmljZSA9IGlzTGVnYWN5VHgodHgpID8gYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIodHguZ2FzUHJpY2UpLnRvU3RyaW5nKDE2KSkgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBtYXhGZWVQZXJHYXMgPSBpc0VJUDE1NTlUeG4odHgpID8gYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIodHgubWF4RmVlUGVyR2FzKS50b1N0cmluZygxNikpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG1heFByaW9yaXR5RmVlUGVyR2FzID0gaXNFSVAxNTU5VHhuKHR4KVxuICAgICAgPyBhZGRIZXhQcmVmaXgobmV3IEJpZ051bWJlcih0eC5tYXhQcmlvcml0eUZlZVBlckdhcykudG9TdHJpbmcoMTYpKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gbmV3IEV0aFRyYW5zYWN0aW9uRGF0YShcbiAgICAgIFRyYW5zYWN0aW9uRmFjdG9yeS5mcm9tVHhEYXRhKFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogaXNMZWdhY3lUeCh0eCkgPyBMRUdBQ1lfVFhfVFlQRSA6IEVJUDE1NTlfVFhfVFlQRSxcbiAgICAgICAgICBjaGFpbklkLFxuICAgICAgICAgIG5vbmNlLFxuICAgICAgICAgIHRvOiB0eC50byxcbiAgICAgICAgICBnYXNQcmljZSxcbiAgICAgICAgICBnYXNMaW1pdCxcbiAgICAgICAgICBtYXhGZWVQZXJHYXMsXG4gICAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXMsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgZGF0YTogdHguZGF0YSxcbiAgICAgICAgICB2OiB0eC52LFxuICAgICAgICAgIHI6IHR4LnIsXG4gICAgICAgICAgczogdHgucyxcbiAgICAgICAgfSxcbiAgICAgICAgeyBjb21tb246IGNvbW1vbiB9LFxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgZGVwbG95ZWRBZGRyZXNzOiB0eC5kZXBsb3llZEFkZHJlc3MsXG4gICAgICAgIGNoYWluSWQ6IGFkZEhleFByZWZpeChuZXcgQmlnTnVtYmVyKE51bWJlcih0eC5jaGFpbklkKSkudG9TdHJpbmcoMTYpKSxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbiBldGhlcmV1bSB0cmFuc2FjdGlvbiBmcm9tIGl0cyBzdHJpbmcgc2VyaWFsaXphdGlvblxuICAgKlxuICAgKiBAcGFyYW0gdHggVGhlIHN0cmluZyBzZXJpYWxpemF0aW9uIG9mIHRoZSBldGhlcmV1bSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gY29tbW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TZXJpYWxpemVkKHR4OiBzdHJpbmcsIGNvbW1vbjogRXRoZXJldW1Db21tb24pOiBFdGhUcmFuc2FjdGlvbkRhdGEge1xuICAgIHJldHVybiBuZXcgRXRoVHJhbnNhY3Rpb25EYXRhKFRyYW5zYWN0aW9uRmFjdG9yeS5mcm9tU2VyaWFsaXplZERhdGEodG9CdWZmZXIodHgpLCB7IGNvbW1vbjogY29tbW9uIH0pKTtcbiAgfVxuXG4gIHNpZ24oa2V5UGFpcjogS2V5UGFpcikge1xuICAgIGNvbnN0IHByaXZhdGVLZXkgPSBCdWZmZXIuZnJvbShrZXlQYWlyLmdldEtleXMoKS5wcnYgYXMgc3RyaW5nLCAnaGV4Jyk7XG4gICAgdGhpcy50eCA9IHRoaXMudHguc2lnbihwcml2YXRlS2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBjb25zdCByZXN1bHQ6IEJhc2VUeERhdGEgPSB7XG4gICAgICBub25jZTogYnVmZmVyVG9JbnQodGhpcy50eC5ub25jZSksXG4gICAgICBnYXNMaW1pdDogbmV3IEJpZ051bWJlcihidWZmZXJUb0hleCh0aGlzLnR4Lmdhc0xpbWl0KSwgMTYpLnRvU3RyaW5nKDEwKSxcbiAgICAgIHZhbHVlOiB0aGlzLnR4LnZhbHVlLnRvU3RyaW5nKDEwKSxcbiAgICAgIGRhdGE6IGJ1ZmZlclRvSGV4KHRoaXMudHguZGF0YSksXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnR4LmlzU2lnbmVkKCkpIHtcbiAgICAgIHJlc3VsdC5pZCA9IGFkZEhleFByZWZpeChidWZmZXJUb0hleCh0aGlzLnR4Lmhhc2goKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQuaWQgPSBhZGRIZXhQcmVmaXgoYnVmZmVyVG9IZXgodGhpcy50eC5nZXRNZXNzYWdlVG9TaWduKCkpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eC50bykge1xuICAgICAgcmVzdWx0LnRvID0gYnVmZmVyVG9IZXgodGhpcy50eC50by50b0J1ZmZlcigpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eC52ZXJpZnlTaWduYXR1cmUoKSkge1xuICAgICAgcmVzdWx0LmZyb20gPSBidWZmZXJUb0hleCh0aGlzLnR4LmdldFNlbmRlckFkZHJlc3MoKS50b0J1ZmZlcigpKTtcbiAgICAgIHJlc3VsdC52ID0gYnVmZmVyVG9IZXgodGhpcy50eC52KTtcbiAgICAgIHJlc3VsdC5yID0gYnVmZmVyVG9IZXgodGhpcy50eC5yKTtcbiAgICAgIHJlc3VsdC5zID0gYnVmZmVyVG9IZXgodGhpcy50eC5zKTtcbiAgICB9XG4gICAgcmVzdWx0LmNoYWluSWQgPSBhZGRIZXhQcmVmaXgodGhpcy50eC5jb21tb24uY2hhaW5JZCgpLnRvU3RyaW5nKDE2KSk7XG5cbiAgICBpZiAodGhpcy5hcmdzICYmIHRoaXMuYXJncy5kZXBsb3llZEFkZHJlc3MpIHtcbiAgICAgIHJlc3VsdC5kZXBsb3llZEFkZHJlc3MgPSB0aGlzLmFyZ3MuZGVwbG95ZWRBZGRyZXNzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR4IGluc3RhbmNlb2YgTGVnYWN5VHJhbnNhY3Rpb24pIHtcbiAgICAgIGNvbnN0IGdhc1ByaWNlID0gbmV3IEJpZ051bWJlcihidWZmZXJUb0hleCh0aGlzLnR4Lmdhc1ByaWNlKSwgMTYpLnRvU3RyaW5nKDEwKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICBfdHlwZTogRVRIVHJhbnNhY3Rpb25UeXBlLkxFR0FDWSxcbiAgICAgICAgZ2FzUHJpY2UsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodGhpcy50eCBpbnN0YW5jZW9mIEZlZU1hcmtldEVJUDE1NTlUcmFuc2FjdGlvbikge1xuICAgICAgY29uc3QgbWF4RmVlUGVyR2FzID0gbmV3IEJpZ051bWJlcihidWZmZXJUb0hleCh0aGlzLnR4Lm1heEZlZVBlckdhcyksIDE2KS50b1N0cmluZygxMCk7XG4gICAgICBjb25zdCBtYXhQcmlvcml0eUZlZVBlckdhcyA9IG5ldyBCaWdOdW1iZXIoYnVmZmVyVG9IZXgodGhpcy50eC5tYXhQcmlvcml0eUZlZVBlckdhcyksIDE2KS50b1N0cmluZygxMCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgX3R5cGU6IEVUSFRyYW5zYWN0aW9uVHlwZS5FSVAxNTU5LFxuICAgICAgICBtYXhGZWVQZXJHYXMsXG4gICAgICAgIG1heFByaW9yaXR5RmVlUGVyR2FzLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB0eCB0eXBlOiAke0FjY2Vzc0xpc3RFSVAyOTMwVHJhbnNhY3Rpb24ubmFtZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9TZXJpYWxpemVkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFkZEhleFByZWZpeCh0aGlzLnR4LnNlcmlhbGl6ZSgpLnRvU3RyaW5nKCdoZXgnKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNMZWdhY3lUeCh0eDogVHhEYXRhKTogdHggaXMgTGVnYWN5VHhEYXRhIHtcbiAgcmV0dXJuIHR4Ll90eXBlID09PSBFVEhUcmFuc2FjdGlvblR5cGUuTEVHQUNZO1xufVxuXG5mdW5jdGlvbiBpc0VJUDE1NTlUeG4odHg6IFR4RGF0YSk6IHR4IGlzIEVJUDE1NTlUeERhdGEge1xuICByZXR1cm4gdHguX3R5cGUgPT09IEVUSFRyYW5zYWN0aW9uVHlwZS5FSVAxNTU5O1xufVxuIl19
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9ldGgvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4REFBcUM7QUFDckMscUNBTXdCO0FBRXhCLDZEQUF3RjtBQUN4RixpQ0FBc0g7QUFHdEgsMEdBQTBHO0FBQzFHLElBQU0sY0FBYyxHQUFHLENBQUMsQ0FBQztBQUN6QixJQUFNLGVBQWUsR0FBRyxDQUFDLENBQUM7QUFFMUI7O0dBRUc7QUFDSDtJQUlFLDRCQUFZLEVBQW9CLEVBQUUsSUFBcUQ7UUFDckYsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ1csMkJBQVEsR0FBdEIsVUFBdUIsRUFBVSxFQUFFLE1BQXNCO1FBQ3ZELElBQU0sS0FBSyxHQUFHLG1DQUFZLENBQUMsSUFBSSxzQkFBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFNLEtBQUssR0FBRyxtQ0FBWSxDQUFDLElBQUksc0JBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakUsSUFBTSxRQUFRLEdBQUcsbUNBQVksQ0FBQyxJQUFJLHNCQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLG1DQUFZLENBQUMsSUFBSSxzQkFBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxD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QUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDSCx5QkFBQztBQUFELENBQUMsQUFsSUQsSUFrSUM7QUFsSVksZ0RBQWtCO0FBb0kvQixTQUFTLFVBQVUsQ0FBQyxFQUFVO0lBQzVCLE9BQU8sRUFBRSxDQUFDLEtBQUssS0FBSywwQkFBa0IsQ0FBQyxNQUFNLENBQUM7QUFDaEQsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEVBQVU7SUFDOUIsT0FBTyxFQUFFLENBQUMsS0FBSyxLQUFLLDBCQUFrQixDQUFDLE9BQU8sQ0FBQztBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25GYWN0b3J5LFxuICBUeXBlZFRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvbiBhcyBMZWdhY3lUcmFuc2FjdGlvbixcbiAgRmVlTWFya2V0RUlQMTU1OVRyYW5zYWN0aW9uLFxuICBBY2Nlc3NMaXN0RUlQMjkzMFRyYW5zYWN0aW9uLFxufSBmcm9tICdAZXRoZXJldW1qcy90eCc7XG5pbXBvcnQgRXRoZXJldW1Db21tb24gZnJvbSAnQGV0aGVyZXVtanMvY29tbW9uJztcbmltcG9ydCB7IGFkZEhleFByZWZpeCwgYnVmZmVyVG9IZXgsIGJ1ZmZlclRvSW50LCB0b0J1ZmZlciB9IGZyb20gJ2V0aGVyZXVtanMtdXRpbHMtb2xkJztcbmltcG9ydCB7IEJhc2VUeERhdGEsIEVJUDE1NTlUeERhdGEsIEV0aExpa2VUcmFuc2FjdGlvbkRhdGEsIExlZ2FjeVR4RGF0YSwgRVRIVHJhbnNhY3Rpb25UeXBlLCBUeERhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW1qcy9ldGhlcmV1bWpzLW1vbm9yZXBvL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL3R4L3NyYy90cmFuc2FjdGlvbkZhY3RvcnkudHMjTDMxXG5jb25zdCBMRUdBQ1lfVFhfVFlQRSA9IDA7XG5jb25zdCBFSVAxNTU5X1RYX1RZUEUgPSAyO1xuXG4vKipcbiAqIEFuIEV0aGVyZXVtIHRyYW5zYWN0aW9uIHdpdGggaGVscGVycyBmb3Igc2VyaWFsaXphdGlvbiBhbmQgZGVzZXJpYWxpemF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRXRoVHJhbnNhY3Rpb25EYXRhIGltcGxlbWVudHMgRXRoTGlrZVRyYW5zYWN0aW9uRGF0YSB7XG4gIHByaXZhdGUgdHg6IFR5cGVkVHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBhcmdzPzogeyBkZXBsb3llZEFkZHJlc3M/OiBzdHJpbmc7IGNoYWluSWQ/OiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3Rvcih0eDogVHlwZWRUcmFuc2FjdGlvbiwgYXJncz86IHsgZGVwbG95ZWRBZGRyZXNzPzogc3RyaW5nOyBjaGFpbklkPzogc3RyaW5nIH0pIHtcbiAgICB0aGlzLnR4ID0gdHg7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbiB0aGVyZXVtIHRyYW5zYWN0aW9uIGZyb20gaXRzIEpTT04gcmVwcmVzZW50YXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtUeERhdGF9IHR4IFRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge0V0aGVyZXVtQ29tbW9ufSBjb21tb24gQ2xhc3MgdG8gYWNjZXNzIGNoYWluIGFuZCBoYXJkZm9yayBwYXJhbWV0ZXJzXG4gICAqIEByZXR1cm5zIHtFdGhUcmFuc2FjdGlvbkRhdGF9IGEgbmV3IGV0aGVyZXVtIHRyYW5zYWN0aW9uIG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSnNvbih0eDogVHhEYXRhLCBjb21tb246IEV0aGVyZXVtQ29tbW9uKTogRXRoVHJhbnNhY3Rpb25EYXRhIHtcbiAgICBjb25zdCBub25jZSA9IGFkZEhleFByZWZpeChuZXcgQmlnTnVtYmVyKHR4Lm5vbmNlKS50b1N0cmluZygxNikpO1xuICAgIGNvbnN0IHZhbHVlID0gYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIodHgudmFsdWUpLnRvU3RyaW5nKDE2KSk7XG4gICAgY29uc3QgZ2FzTGltaXQgPSBhZGRIZXhQcmVmaXgobmV3IEJpZ051bWJlcih0eC5nYXNMaW1pdCkudG9TdHJpbmcoMTYpKTtcbiAgICBjb25zdCBjaGFpbklkID0gdHguY2hhaW5JZCA/IGFkZEhleFByZWZpeChuZXcgQmlnTnVtYmVyKHR4LmNoYWluSWQpLnRvU3RyaW5nKDE2KSkgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBnYXNQcmljZSA9IGlzTGVnYWN5VHgodHgpID8gYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIodHguZ2FzUHJpY2UpLnRvU3RyaW5nKDE2KSkgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBtYXhGZWVQZXJHYXMgPSBpc0VJUDE1NTlUeG4odHgpID8gYWRkSGV4UHJlZml4KG5ldyBCaWdOdW1iZXIodHgubWF4RmVlUGVyR2FzKS50b1N0cmluZygxNikpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG1heFByaW9yaXR5RmVlUGVyR2FzID0gaXNFSVAxNTU5VHhuKHR4KVxuICAgICAgPyBhZGRIZXhQcmVmaXgobmV3IEJpZ051bWJlcih0eC5tYXhQcmlvcml0eUZlZVBlckdhcykudG9TdHJpbmcoMTYpKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gbmV3IEV0aFRyYW5zYWN0aW9uRGF0YShcbiAgICAgIFRyYW5zYWN0aW9uRmFjdG9yeS5mcm9tVHhEYXRhKFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogaXNMZWdhY3lUeCh0eCkgPyBMRUdBQ1lfVFhfVFlQRSA6IEVJUDE1NTlfVFhfVFlQRSxcbiAgICAgICAgICBjaGFpbklkLFxuICAgICAgICAgIG5vbmNlLFxuICAgICAgICAgIHRvOiB0eC50byxcbiAgICAgICAgICBnYXNQcmljZSxcbiAgICAgICAgICBnYXNMaW1pdCxcbiAgICAgICAgICBtYXhGZWVQZXJHYXMsXG4gICAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXMsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgZGF0YTogdHguZGF0YSxcbiAgICAgICAgICB2OiB0eC52LFxuICAgICAgICAgIHI6IHR4LnIsXG4gICAgICAgICAgczogdHgucyxcbiAgICAgICAgfSxcbiAgICAgICAgeyBjb21tb246IGNvbW1vbiB9LFxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgZGVwbG95ZWRBZGRyZXNzOiB0eC5kZXBsb3llZEFkZHJlc3MsXG4gICAgICAgIGNoYWluSWQ6IGFkZEhleFByZWZpeChuZXcgQmlnTnVtYmVyKE51bWJlcih0eC5jaGFpbklkKSkudG9TdHJpbmcoMTYpKSxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbiBldGhlcmV1bSB0cmFuc2FjdGlvbiBmcm9tIGl0cyBzdHJpbmcgc2VyaWFsaXphdGlvblxuICAgKlxuICAgKiBAcGFyYW0gdHggVGhlIHN0cmluZyBzZXJpYWxpemF0aW9uIG9mIHRoZSBldGhlcmV1bSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gY29tbW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TZXJpYWxpemVkKHR4OiBzdHJpbmcsIGNvbW1vbjogRXRoZXJldW1Db21tb24pOiBFdGhUcmFuc2FjdGlvbkRhdGEge1xuICAgIHJldHVybiBuZXcgRXRoVHJhbnNhY3Rpb25EYXRhKFRyYW5zYWN0aW9uRmFjdG9yeS5mcm9tU2VyaWFsaXplZERhdGEodG9CdWZmZXIodHgpLCB7IGNvbW1vbjogY29tbW9uIH0pKTtcbiAgfVxuXG4gIHNpZ24oa2V5UGFpcjogS2V5UGFpcikge1xuICAgIGNvbnN0IHByaXZhdGVLZXkgPSBCdWZmZXIuZnJvbShrZXlQYWlyLmdldEtleXMoKS5wcnYgYXMgc3RyaW5nLCAnaGV4Jyk7XG4gICAgdGhpcy50eCA9IHRoaXMudHguc2lnbihwcml2YXRlS2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBjb25zdCByZXN1bHQ6IEJhc2VUeERhdGEgPSB7XG4gICAgICBub25jZTogYnVmZmVyVG9JbnQodGhpcy50eC5ub25jZSksXG4gICAgICBnYXNMaW1pdDogbmV3IEJpZ051bWJlcihidWZmZXJUb0hleCh0aGlzLnR4Lmdhc0xpbWl0KSwgMTYpLnRvU3RyaW5nKDEwKSxcbiAgICAgIHZhbHVlOiB0aGlzLnR4LnZhbHVlLnRvU3RyaW5nKDEwKSxcbiAgICAgIGRhdGE6IGJ1ZmZlclRvSGV4KHRoaXMudHguZGF0YSksXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnR4LmlzU2lnbmVkKCkpIHtcbiAgICAgIHJlc3VsdC5pZCA9IGFkZEhleFByZWZpeChidWZmZXJUb0hleCh0aGlzLnR4Lmhhc2goKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQuaWQgPSBhZGRIZXhQcmVmaXgoYnVmZmVyVG9IZXgodGhpcy50eC5nZXRNZXNzYWdlVG9TaWduKCkpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eC50bykge1xuICAgICAgcmVzdWx0LnRvID0gYnVmZmVyVG9IZXgodGhpcy50eC50by50b0J1ZmZlcigpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eC52ZXJpZnlTaWduYXR1cmUoKSkge1xuICAgICAgcmVzdWx0LmZyb20gPSBidWZmZXJUb0hleCh0aGlzLnR4LmdldFNlbmRlckFkZHJlc3MoKS50b0J1ZmZlcigpKTtcbiAgICAgIHJlc3VsdC5yID0gYnVmZmVyVG9IZXgodGhpcy50eC5yKTtcbiAgICAgIHJlc3VsdC5zID0gYnVmZmVyVG9IZXgodGhpcy50eC5zKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHgudikge1xuICAgICAgcmVzdWx0LnYgPSBidWZmZXJUb0hleCh0aGlzLnR4LnYpO1xuICAgIH1cbiAgICByZXN1bHQuY2hhaW5JZCA9IGFkZEhleFByZWZpeCh0aGlzLnR4LmNvbW1vbi5jaGFpbklkQk4oKS50b1N0cmluZygxNikpO1xuXG4gICAgaWYgKHRoaXMuYXJncyAmJiB0aGlzLmFyZ3MuZGVwbG95ZWRBZGRyZXNzKSB7XG4gICAgICByZXN1bHQuZGVwbG95ZWRBZGRyZXNzID0gdGhpcy5hcmdzLmRlcGxveWVkQWRkcmVzcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eCBpbnN0YW5jZW9mIExlZ2FjeVRyYW5zYWN0aW9uKSB7XG4gICAgICBjb25zdCBnYXNQcmljZSA9IG5ldyBCaWdOdW1iZXIoYnVmZmVyVG9IZXgodGhpcy50eC5nYXNQcmljZSksIDE2KS50b1N0cmluZygxMCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgX3R5cGU6IEVUSFRyYW5zYWN0aW9uVHlwZS5MRUdBQ1ksXG4gICAgICAgIGdhc1ByaWNlLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHggaW5zdGFuY2VvZiBGZWVNYXJrZXRFSVAxNTU5VHJhbnNhY3Rpb24pIHtcbiAgICAgIGNvbnN0IG1heEZlZVBlckdhcyA9IG5ldyBCaWdOdW1iZXIoYnVmZmVyVG9IZXgodGhpcy50eC5tYXhGZWVQZXJHYXMpLCAxNikudG9TdHJpbmcoMTApO1xuICAgICAgY29uc3QgbWF4UHJpb3JpdHlGZWVQZXJHYXMgPSBuZXcgQmlnTnVtYmVyKGJ1ZmZlclRvSGV4KHRoaXMudHgubWF4UHJpb3JpdHlGZWVQZXJHYXMpLCAxNikudG9TdHJpbmcoMTApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgIF90eXBlOiBFVEhUcmFuc2FjdGlvblR5cGUuRUlQMTU1OSxcbiAgICAgICAgbWF4RmVlUGVyR2FzLFxuICAgICAgICBtYXhQcmlvcml0eUZlZVBlckdhcyxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgdHggdHlwZTogJHtBY2Nlc3NMaXN0RUlQMjkzMFRyYW5zYWN0aW9uLm5hbWV9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvU2VyaWFsaXplZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBhZGRIZXhQcmVmaXgodGhpcy50eC5zZXJpYWxpemUoKS50b1N0cmluZygnaGV4JykpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzTGVnYWN5VHgodHg6IFR4RGF0YSk6IHR4IGlzIExlZ2FjeVR4RGF0YSB7XG4gIHJldHVybiB0eC5fdHlwZSA9PT0gRVRIVHJhbnNhY3Rpb25UeXBlLkxFR0FDWTtcbn1cblxuZnVuY3Rpb24gaXNFSVAxNTU5VHhuKHR4OiBUeERhdGEpOiB0eCBpcyBFSVAxNTU5VHhEYXRhIHtcbiAgcmV0dXJuIHR4Ll90eXBlID09PSBFVEhUcmFuc2FjdGlvblR5cGUuRUlQMTU1OTtcbn1cbiJdfQ==
|
package/dist/src/utils/crypto.js
CHANGED
|
@@ -174,7 +174,7 @@ exports.isValidEd25519SecretKey = isValidEd25519SecretKey;
|
|
|
174
174
|
*/
|
|
175
175
|
function isValidEd25519PublicKey(pub) {
|
|
176
176
|
try {
|
|
177
|
-
var decodedPub =
|
|
177
|
+
var decodedPub = new Uint8Array(Buffer.from(pub, 'hex'));
|
|
178
178
|
return decodedPub.length === nacl.sign.publicKeyLength;
|
|
179
179
|
}
|
|
180
180
|
catch (e) {
|
|
@@ -182,4 +182,4 @@ function isValidEd25519PublicKey(pub) {
|
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
exports.isValidEd25519PublicKey = isValidEd25519PublicKey;
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2NyeXB0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQStCO0FBQy9CLCtDQUFpRDtBQUNqRCw4Q0FBa0M7QUFFbEMsNENBQWtEO0FBRWxEOzs7R0FHRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLElBQVk7SUFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQ2pDO0lBQ0QsT0FBTyxzQkFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSx3QkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRTtRQUM5RSxVQUFVLEVBQUUsS0FBSztLQUNsQixDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBUEQsc0RBT0M7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixZQUFZLENBQUMsSUFBWTtJQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDakM7SUFFTyxJQUFBLFVBQVUsR0FBSyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSx3QkFBUSxDQUFDLE9BQU8sQ0FBQyxXQUE3QyxDQUE4QztJQUNoRSxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUNqQztJQUNELE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBVkQsb0NBVUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxHQUFXO0lBQzlD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QUtHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsR0FBVztJQUNqRCxJQUFJO1FBQ0YsSUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzRCxPQUFPLFVBQVUsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7S0FDeEQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBUEQsMERBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiaXAzMiBmcm9tICdiaXAzMic7XG5pbXBvcnQgeyBFQ1BhaXIsIG5ldHdvcmtzIH0gZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgKiBhcyBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgeyBFeHRlbmRlZEtleXMgfSBmcm9tICcuLi9jb2luL2Jhc2VDb2luL2lmYWNlJztcbmltcG9ydCB7IHRvVWludDhBcnJheSB9IGZyb20gJy4uL2NvaW4vaGJhci91dGlscyc7XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHhwdWIgLSBhIGJhc2UtNTggZW5jb2RlZCBleHRlbmRlZCBwdWJsaWMga2V5IChCSVAzMilcbiAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSB1bmNvbXByZXNzZWQgcHVibGljIGtleSBpbiBoZXhhZGVjaW1hbFxuICovXG5leHBvcnQgZnVuY3Rpb24geHB1YlRvVW5jb21wcmVzc2VkUHViKHhwdWI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghaXNWYWxpZFhwdWIoeHB1YikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgeHB1YicpO1xuICB9XG4gIHJldHVybiBFQ1BhaXIuZnJvbVB1YmxpY0tleShiaXAzMi5mcm9tQmFzZTU4KHhwdWIsIG5ldHdvcmtzLmJpdGNvaW4pLnB1YmxpY0tleSwge1xuICAgIGNvbXByZXNzZWQ6IGZhbHNlLFxuICB9KS5wdWJsaWNLZXkudG9TdHJpbmcoJ2hleCcpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB4cHJ2IC0gYmFzZTU4LWVuY29kZWQgZXh0ZW5kZWQgcHJpdmF0ZSBrZXkgKEJJUDMyKVxuICogQHJldHVybnMge3N0cmluZ30gdGhlIGhleC1lbmNvZGVkIHJhdyBwcml2YXRlIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24geHBydlRvUmF3UHJ2KHhwcnY6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghaXNWYWxpZFhwcnYoeHBydikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgeHBydicpO1xuICB9XG5cbiAgY29uc3QgeyBwcml2YXRlS2V5IH0gPSBiaXAzMi5mcm9tQmFzZTU4KHhwcnYsIG5ldHdvcmtzLmJpdGNvaW4pO1xuICBpZiAoIXByaXZhdGVLZXkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgeHBydicpO1xuICB9XG4gIHJldHVybiBwcml2YXRlS2V5LnRvU3RyaW5nKCdoZXgnKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJ2IC0gUHJpdmF0ZSBrZXkgaW4gaGV4IGZvcm1hdCB0byBnZXQgdGhlIGV4dGVuZGVkIGtleXMgZm9yXG4gKiBAcmV0dXJucyB7RXh0ZW5kZWRLZXlzfSB4cHJ2IGFuZCB4cHViIGluIHN0cmluZyBmb3JtYXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhd1BydlRvRXh0ZW5kZWRLZXlzKHBydjogc3RyaW5nKTogRXh0ZW5kZWRLZXlzIHtcbiAgY29uc3QgaGQgPSBiaXAzMi5mcm9tUHJpdmF0ZUtleShCdWZmZXIuZnJvbShwcnYsICdoZXgnKSwgQnVmZmVyLmFsbG9jKDMyKSk7XG4gIHJldHVybiB7XG4gICAgeHBydjogaGQudG9CYXNlNTgoKSxcbiAgICB4cHViOiBoZC5uZXV0ZXJlZCgpLnRvQmFzZTU4KCksXG4gIH07XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBCSVAzMiB4cHViIG9yIG5vdFxuICpcbiAqIEBwYXJhbSB4cHViXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkWHB1Yih4cHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKHhwdWIuc3Vic3RyKDAsIDQpICE9PSAneHB1YicpIHtcbiAgICAvLyBjaGVjayBmb3IgeHB1YiBmb3JtYXRzIHdlIGRvbid0IHN1cHBvcnQsIHN1Y2ggYXMgdHB1YlxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGJpcDMyLmZyb21CYXNlNTgoeHB1YiwgbmV0d29ya3MuYml0Y29pbik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBpZiBIRCBnZW5lcmF0aW9uIGRpZG4ndCB0aHJvdywgaXQgaXMgYSB2YWxpZCB4cHViXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgQklQMzIgeHBydiBvciBub3RcbiAqXG4gKiBAcGFyYW0geHBydlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFhwcnYoeHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICh4cHJ2LnN1YnN0cigwLCA0KSAhPT0gJ3hwcnYnKSB7XG4gICAgLy8gY2hlY2sgZm9yIHhwcnYgZm9ybWF0cyB3ZSBkb24ndCBzdXBwb3J0XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgYmlwMzIuZnJvbUJhc2U1OCh4cHJ2LCBuZXR3b3Jrcy5iaXRjb2luKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIGlmIEhEIGdlbmVyYXRpb24gZGlkbid0IHRocm93LCBpdCBpcyBhIHZhbGlkIHhwcnZcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBzZWNwMjU2azEgcHVibGljIGtleVxuICpcbiAqIEBwYXJhbSBwdWJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBFQ1BhaXIuZnJvbVB1YmxpY0tleShCdWZmZXIuZnJvbShwdWIsICdoZXgnKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBzZWNwMjU2azEgcHJpdmF0ZSBrZXlcbiAqXG4gKiBAcGFyYW0gcHJ2XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHJ2KHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgRUNQYWlyLmZyb21Qcml2YXRlS2V5KEJ1ZmZlci5mcm9tKHBydiwgJ2hleCcpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIGVkMjU1MTkgcHJpdmF0ZSBrZXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJ2IEEgaGV4YWRlY2ltYWwgcHJpdmF0ZSBrZXkgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIHB1YmxpYyBrZXkgb3Igbm90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkRWQyNTUxOVNlZWQocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkZWNvZGVkUHJ2ID0gdG9VaW50OEFycmF5KHBydik7XG4gICAgcmV0dXJuIGRlY29kZWRQcnYubGVuZ3RoID09PSBuYWNsLnNpZ24uc2VlZExlbmd0aDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgZWQyNTUxOSBwcml2YXRlIGtleVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgQSBoZXhhZGVjaW1hbCBwcml2YXRlIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHVibGljIGtleSBvciBub3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRFZDI1NTE5U2VjcmV0S2V5KHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGVjb2RlZFBydiA9IHRvVWludDhBcnJheShwcnYpO1xuICAgIHJldHVybiBkZWNvZGVkUHJ2Lmxlbmd0aCA9PT0gbmFjbC5zaWduLnNlY3JldEtleUxlbmd0aDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgZWQyNTUxOSBwdWJsaWMga2V5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHB1YiBBIGhleGFkZWNpbWFsIHB1YmxpYyBrZXkgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIHB1YmxpYyBrZXkgb3Igbm90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRlY29kZWRQdWIgPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShwdWIsICdoZXgnKSk7XG4gICAgcmV0dXJuIGRlY29kZWRQdWIubGVuZ3RoID09PSBuYWNsLnNpZ24ucHVibGljS2V5TGVuZ3RoO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo/account-lib",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.17.0-rc.0",
|
|
4
4
|
"description": "BitGo's account library functions",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@bitgo/blake2b": "^3.0.1",
|
|
38
38
|
"@bitgo/bls": "^0.1.0",
|
|
39
|
-
"@bitgo/statics": "^6.
|
|
39
|
+
"@bitgo/statics": "^6.14.0-rc.0",
|
|
40
40
|
"@bitgo/utxo-lib": "^2.0.0",
|
|
41
41
|
"@celo/contractkit": "^1.2.4",
|
|
42
42
|
"@ethereumjs/common": "^2.4.0",
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
"@taquito/local-forging": "6.3.5-beta.0",
|
|
49
49
|
"@taquito/signer": "6.3.5-beta.0",
|
|
50
50
|
"@types/lodash": "^4.14.151",
|
|
51
|
+
"algosdk": "^1.9.1",
|
|
51
52
|
"bignumber.js": "^9.0.0",
|
|
52
53
|
"bip32": "^2.0.6",
|
|
53
54
|
"bitcoinjs-lib": "^5.2.0",
|
|
@@ -58,6 +59,8 @@
|
|
|
58
59
|
"ethereumjs-util": "6.2.1",
|
|
59
60
|
"ethereumjs-utils-old": "npm:ethereumjs-util@5.2.0",
|
|
60
61
|
"ethers": "^5.1.3",
|
|
62
|
+
"hi-base32": "^0.5.1",
|
|
63
|
+
"joi": "^17.4.0",
|
|
61
64
|
"libsodium-wrappers": "^0.7.6",
|
|
62
65
|
"lodash": "^4.17.15",
|
|
63
66
|
"long": "^4.0.0",
|
|
@@ -107,5 +110,5 @@
|
|
|
107
110
|
"git add"
|
|
108
111
|
]
|
|
109
112
|
},
|
|
110
|
-
"gitHead": "
|
|
113
|
+
"gitHead": "d8717494e43d94705608f6a948e4647fe8f62611"
|
|
111
114
|
}
|