@bitgo-beta/sdk-coin-avaxp 2.0.1-beta.3 → 2.0.1-beta.30
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/src/lib/atomicInCTransactionBuilder.d.ts +22 -0
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/atomicInCTransactionBuilder.js +49 -0
- package/dist/src/lib/atomicTransactionBuilder.d.ts +7 -0
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicTransactionBuilder.js +11 -2
- package/dist/src/lib/delegatorTxBuilder.d.ts +1 -1
- package/dist/src/lib/delegatorTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/delegatorTxBuilder.js +2 -2
- package/dist/src/lib/exportInCTxBuilder.d.ts +56 -0
- package/dist/src/lib/exportInCTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/exportInCTxBuilder.js +160 -0
- package/dist/src/lib/exportTxBuilder.d.ts +1 -1
- package/dist/src/lib/exportTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/exportTxBuilder.js +2 -2
- package/dist/src/lib/iface.d.ts +2 -0
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +4 -2
- package/dist/src/lib/importInCTxBuilder.d.ts +10 -13
- package/dist/src/lib/importInCTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/importInCTxBuilder.js +14 -35
- package/dist/src/lib/importTxBuilder.d.ts +1 -1
- package/dist/src/lib/importTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/importTxBuilder.js +2 -2
- package/dist/src/lib/transaction.d.ts +1 -1
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +24 -8
- package/dist/src/lib/transactionBuilder.d.ts +2 -2
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +3 -3
- package/dist/src/lib/transactionBuilderFactory.d.ts +7 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +14 -1
- package/dist/src/lib/utils.d.ts +6 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +15 -3
- package/dist/src/lib/validatorTxBuilder.d.ts +1 -1
- package/dist/src/lib/validatorTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/validatorTxBuilder.js +2 -2
- package/dist/test/resources/avaxp.js +23 -23
- package/dist/test/resources/errors.d.ts +1 -0
- package/dist/test/resources/errors.d.ts.map +1 -1
- package/dist/test/resources/errors.js +3 -2
- package/dist/test/resources/tx/exportC.d.ts +14 -0
- package/dist/test/resources/tx/exportC.d.ts.map +1 -0
- package/dist/test/resources/tx/exportC.js +21 -0
- package/dist/test/resources/tx/importC.js +7 -7
- package/dist/test/resources/tx/importP.js +7 -7
- package/dist/test/unit/avaxp.js +37 -12
- package/dist/test/unit/lib/exportC2PTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/exportC2PTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/exportC2PTxBuilder.js +111 -0
- package/dist/test/unit/lib/exportP2CTxBuilder.js +3 -3
- package/dist/test/unit/lib/importP2CTxBuilder.js +3 -3
- package/dist/test/unit/lib/keyPair.js +24 -24
- package/dist/test/unit/lib/validateTxBuilder.js +5 -5
- package/dist/tsconfig.tsbuildinfo +194 -76
- package/package.json +7 -7
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/// <reference types="bn.js" />
|
|
2
|
+
import { AtomicTransactionBuilder } from './atomicTransactionBuilder';
|
|
3
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
4
|
+
import { BN } from 'avalanche';
|
|
5
|
+
import { Transaction } from './transaction';
|
|
6
|
+
export declare abstract class AtomicInCTransactionBuilder extends AtomicTransactionBuilder {
|
|
7
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
8
|
+
/**
|
|
9
|
+
* C-Chain base fee with decimal places converted form 18 to 9.
|
|
10
|
+
*
|
|
11
|
+
* @param {string | number} baseFee
|
|
12
|
+
*/
|
|
13
|
+
feeRate(baseFee: string | number): this;
|
|
14
|
+
/** @inheritdoc */
|
|
15
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
16
|
+
/**
|
|
17
|
+
* Check that fee is grater than 0.
|
|
18
|
+
* @param {BN} fee
|
|
19
|
+
*/
|
|
20
|
+
validateFee(fee: BN): void;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=atomicInCTransactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomicInCTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/atomicInCTransactionBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,EAAE,EAAwB,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,8BAAsB,2BAA4B,SAAQ,wBAAwB;gBACpE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAQ7C;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOvC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAOjE;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI;CAK3B"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AtomicInCTransactionBuilder = void 0;
|
|
7
|
+
const atomicTransactionBuilder_1 = require("./atomicTransactionBuilder");
|
|
8
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
9
|
+
const avalanche_1 = require("avalanche");
|
|
10
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
11
|
+
const tx_1 = require("avalanche/dist/apis/evm/tx");
|
|
12
|
+
class AtomicInCTransactionBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilder {
|
|
13
|
+
constructor(_coinConfig) {
|
|
14
|
+
super(_coinConfig);
|
|
15
|
+
// external chain id is P
|
|
16
|
+
this._externalChainId = utils_1.default.cb58Decode(this.transaction._network.blockchainID);
|
|
17
|
+
// chain id is C
|
|
18
|
+
this.transaction._blockchainID = utils_1.default.cb58Decode(this.transaction._network.cChainBlockchainID);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* C-Chain base fee with decimal places converted form 18 to 9.
|
|
22
|
+
*
|
|
23
|
+
* @param {string | number} baseFee
|
|
24
|
+
*/
|
|
25
|
+
feeRate(baseFee) {
|
|
26
|
+
const bnValue = new avalanche_1.BN(baseFee);
|
|
27
|
+
this.validateFee(bnValue);
|
|
28
|
+
this.transaction._fee.feeRate = bnValue.toNumber();
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
/** @inheritdoc */
|
|
32
|
+
fromImplementation(rawTransaction) {
|
|
33
|
+
const tx = new tx_1.Tx();
|
|
34
|
+
tx.fromBuffer(avalanche_1.Buffer.from(rawTransaction, 'hex'));
|
|
35
|
+
this.initBuilder(tx);
|
|
36
|
+
return this.transaction;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check that fee is grater than 0.
|
|
40
|
+
* @param {BN} fee
|
|
41
|
+
*/
|
|
42
|
+
validateFee(fee) {
|
|
43
|
+
if (fee.lten(0)) {
|
|
44
|
+
throw new sdk_core_1.BuildTransactionError('Fee must be greater than 0');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.AtomicInCTransactionBuilder = AtomicInCTransactionBuilder;
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljSW5DVHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hdG9taWNJbkNUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEseUVBQXNFO0FBRXRFLG9EQUE0QjtBQUM1Qix5Q0FBcUQ7QUFDckQsbURBQTZEO0FBRTdELG1EQUF5RDtBQUV6RCxNQUFzQiwyQkFBNEIsU0FBUSxtREFBd0I7SUFDaEYsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pGLGdCQUFnQjtRQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsT0FBd0I7UUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxjQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNSLGtCQUFrQixDQUFDLGNBQXNCO1FBQ2pELE1BQU0sRUFBRSxHQUFHLElBQUksT0FBSyxFQUFFLENBQUM7UUFDdkIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxrQkFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxDQUFDLEdBQU87UUFDakIsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2YsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDO0NBQ0Y7QUF0Q0Qsa0VBc0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQk4sIEJ1ZmZlciBhcyBCdWZmZXJBdmF4IH0gZnJvbSAnYXZhbGFuY2hlJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUeCBhcyBFVk1UeCB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvZXZtL3R4JztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF0b21pY0luQ1RyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICAvLyBleHRlcm5hbCBjaGFpbiBpZCBpcyBQXG4gICAgdGhpcy5fZXh0ZXJuYWxDaGFpbklkID0gdXRpbHMuY2I1OERlY29kZSh0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLmJsb2NrY2hhaW5JRCk7XG4gICAgLy8gY2hhaW4gaWQgaXMgQ1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRCA9IHV0aWxzLmNiNThEZWNvZGUodGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5jQ2hhaW5CbG9ja2NoYWluSUQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEMtQ2hhaW4gYmFzZSBmZWUgd2l0aCBkZWNpbWFsIHBsYWNlcyBjb252ZXJ0ZWQgZm9ybSAxOCB0byA5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gYmFzZUZlZVxuICAgKi9cbiAgZmVlUmF0ZShiYXNlRmVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICBjb25zdCBiblZhbHVlID0gbmV3IEJOKGJhc2VGZWUpO1xuICAgIHRoaXMudmFsaWRhdGVGZWUoYm5WYWx1ZSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZVJhdGUgPSBiblZhbHVlLnRvTnVtYmVyKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gbmV3IEVWTVR4KCk7XG4gICAgdHguZnJvbUJ1ZmZlcihCdWZmZXJBdmF4LmZyb20ocmF3VHJhbnNhY3Rpb24sICdoZXgnKSk7XG4gICAgdGhpcy5pbml0QnVpbGRlcih0eCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhhdCBmZWUgaXMgZ3JhdGVyIHRoYW4gMC5cbiAgICogQHBhcmFtIHtCTn0gZmVlXG4gICAqL1xuICB2YWxpZGF0ZUZlZShmZWU6IEJOKTogdm9pZCB7XG4gICAgaWYgKGZlZS5sdGVuKDApKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdGZWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCcpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -18,6 +18,13 @@ export declare abstract class AtomicTransactionBuilder extends TransactionBuilde
|
|
|
18
18
|
* @param {string} chainId - id of the external chain
|
|
19
19
|
*/
|
|
20
20
|
externalChainId(chainId: string | Buffer): this;
|
|
21
|
+
/**
|
|
22
|
+
* Fee is fix for AVM atomic tx.
|
|
23
|
+
*
|
|
24
|
+
* @returns network.txFee
|
|
25
|
+
* @protected
|
|
26
|
+
*/
|
|
27
|
+
protected get fixedFee(): string;
|
|
21
28
|
/**
|
|
22
29
|
* Threshold must be 2 and since output always get reordered we want to make sure we can always add signatures in the correct location
|
|
23
30
|
* To find the correct location for the signature, we use the output's addresses to create the signatureIdx in the order that we desire
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atomicTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/atomicTransactionBuilder.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,EAAE,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAIL,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAInD;;GAEG;AACH,8BAAsB,wBAAyB,SAAQ,kBAAkB;IACvE,SAAS,CAAC,gBAAgB,EAAE,UAAU,CAAC;gBAE3B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"atomicTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/atomicTransactionBuilder.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,EAAE,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAIL,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAInD;;GAEG;AACH,8BAAsB,wBAAyB,SAAQ,kBAAkB;IACvE,SAAS,CAAC,gBAAgB,EAAE,UAAU,CAAC;gBAE3B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAO/C;;;;;OAKG;IACH,SAAS,KAAK,QAAQ,IAAI,MAAM,CAE/B;IAGD;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,GAAG;QACvC,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAC9B,WAAW,EAAE,UAAU,EAAE,CAAC;KAC3B;CAmHF"}
|
|
@@ -16,7 +16,7 @@ const iface_1 = require("./iface");
|
|
|
16
16
|
class AtomicTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
17
17
|
constructor(_coinConfig) {
|
|
18
18
|
super(_coinConfig);
|
|
19
|
-
this.transaction._fee.fee = this.
|
|
19
|
+
this.transaction._fee.fee = this.fixedFee;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* The internal chain is the one set for the coin in coinConfig.network. The external chain is the other chain involved.
|
|
@@ -30,6 +30,15 @@ class AtomicTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
|
30
30
|
this._externalChainId = newTargetChainId;
|
|
31
31
|
return this;
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Fee is fix for AVM atomic tx.
|
|
35
|
+
*
|
|
36
|
+
* @returns network.txFee
|
|
37
|
+
* @protected
|
|
38
|
+
*/
|
|
39
|
+
get fixedFee() {
|
|
40
|
+
return this.transaction._network.txFee;
|
|
41
|
+
}
|
|
33
42
|
// region utxo engine
|
|
34
43
|
/**
|
|
35
44
|
* Threshold must be 2 and since output always get reordered we want to make sure we can always add signatures in the correct location
|
|
@@ -119,4 +128,4 @@ class AtomicTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
|
119
128
|
}
|
|
120
129
|
}
|
|
121
130
|
exports.AtomicTransactionBuilder = AtomicTransactionBuilder;
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EseUNBQXFEO0FBQ3JELG9EQUE0QjtBQUM1Qiw2REFBMEQ7QUFDMUQsK0RBTXdDO0FBRXhDLG1EQUE2RDtBQUM3RCxtQ0FBb0Q7QUFFcEQ7O0dBRUc7QUFDSCxNQUFzQix3QkFBeUIsU0FBUSx1Q0FBa0I7SUFHdkUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlLENBQUMsT0FBd0I7UUFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCOzs7OztPQUtHO0lBQ08saUJBQWlCLENBQUMsTUFBVTtRQUtwQyxNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUF5QixFQUFFLENBQUM7UUFFekMsc0JBQXNCO1FBQ3RCLElBQUksWUFBWSxHQUFPLElBQUksY0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpDLHlDQUF5QztRQUN6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SyxDQUFDLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoQyxNQUFNLElBQUksZ0NBQXFCLENBQzdCLG9CQUFvQixZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsV0FBVyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQ3hGLENBQUM7U0FDSDthQUFNLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN2QyxPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksK0JBQWtCLENBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUN6QixJQUFJLCtCQUFrQixDQUNwQixZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUM1QixDQUNGLENBQ0YsQ0FBQztTQUNIO1FBQ0QsT0FBTztZQUNMLE1BQU07WUFDTixPQUFPO1lBQ1AsV0FBVztTQUNaLENBQUM7SUFDSixDQUFDO0NBR0Y7QUFuSkQsNERBbUpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQk4sIEJ1ZmZlciBhcyBCdWZmZXJBdmF4IH0gZnJvbSAnYXZhbGFuY2hlJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7XG4gIFNFQ1BUcmFuc2ZlcklucHV0LFxuICBTRUNQVHJhbnNmZXJPdXRwdXQsXG4gIFNlbGVjdENyZWRlbnRpYWxDbGFzcyxcbiAgVHJhbnNmZXJhYmxlSW5wdXQsXG4gIFRyYW5zZmVyYWJsZU91dHB1dCxcbn0gZnJvbSAnYXZhbGFuY2hlL2Rpc3QvYXBpcy9wbGF0Zm9ybXZtJztcbmltcG9ydCB7IENyZWRlbnRpYWwgfSBmcm9tICdhdmFsYW5jaGUvZGlzdC9jb21tb24nO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCB9IGZyb20gJy4vaWZhY2UnO1xuXG4vKipcbiAqIENyb3NzLWNoYWluIHRyYW5zYWN0aW9ucyAoZXhwb3J0IGFuZCBpbXBvcnQpIGFyZSBhdG9taWMgb3BlcmF0aW9ucy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfZXh0ZXJuYWxDaGFpbklkOiBCdWZmZXJBdmF4O1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlID0gdGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay50eEZlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuYWwgY2hhaW4gaXMgdGhlIG9uZSBzZXQgZm9yIHRoZSBjb2luIGluIGNvaW5Db25maWcubmV0d29yay4gVGhlIGV4dGVybmFsIGNoYWluIGlzIHRoZSBvdGhlciBjaGFpbiBpbnZvbHZlZC5cbiAgICogVGhlIGV4dGVybmFsIGNoYWluIGlkIGlzIHRoZSBzb3VyY2Ugb24gaW1wb3J0IGFuZCB0aGUgZGVzdGluYXRpb24gb24gZXhwb3J0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhaW5JZCAtIGlkIG9mIHRoZSBleHRlcm5hbCBjaGFpblxuICAgKi9cbiAgZXh0ZXJuYWxDaGFpbklkKGNoYWluSWQ6IHN0cmluZyB8IEJ1ZmZlcik6IHRoaXMge1xuICAgIGNvbnN0IG5ld1RhcmdldENoYWluSWQgPSB0eXBlb2YgY2hhaW5JZCA9PT0gJ3N0cmluZycgPyB1dGlscy5jYjU4RGVjb2RlKGNoYWluSWQpIDogQnVmZmVyQXZheC5mcm9tKGNoYWluSWQpO1xuICAgIHRoaXMudmFsaWRhdGVDaGFpbklkKG5ld1RhcmdldENoYWluSWQpO1xuICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCA9IG5ld1RhcmdldENoYWluSWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyByZWdpb24gdXR4byBlbmdpbmVcbiAgLyoqXG4gICAqIFRocmVzaG9sZCBtdXN0IGJlIDIgYW5kIHNpbmNlIG91dHB1dCBhbHdheXMgZ2V0IHJlb3JkZXJlZCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBjYW4gYWx3YXlzIGFkZCBzaWduYXR1cmVzIGluIHRoZSBjb3JyZWN0IGxvY2F0aW9uXG4gICAqIFRvIGZpbmQgdGhlIGNvcnJlY3QgbG9jYXRpb24gZm9yIHRoZSBzaWduYXR1cmUsIHdlIHVzZSB0aGUgb3V0cHV0J3MgYWRkcmVzc2VzIHRvIGNyZWF0ZSB0aGUgc2lnbmF0dXJlSWR4IGluIHRoZSBvcmRlciB0aGF0IHdlIGRlc2lyZVxuICAgKiAwOiB1c2VyIGtleSwgMTogaHNtIGtleSwgMjogcmVjb3Zlcnkga2V5XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVJbnB1dE91dHB1dChhbW91bnQ6IEJOKToge1xuICAgIGlucHV0czogVHJhbnNmZXJhYmxlSW5wdXRbXTtcbiAgICBvdXRwdXRzOiBUcmFuc2ZlcmFibGVPdXRwdXRbXTtcbiAgICBjcmVkZW50aWFsczogQ3JlZGVudGlhbFtdO1xuICB9IHtcbiAgICBjb25zdCBpbnB1dHM6IFRyYW5zZmVyYWJsZUlucHV0W10gPSBbXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2ZlcmFibGVPdXRwdXRbXSA9IFtdO1xuXG4gICAgLy8gYW1vdW50IHNwZW50IHNvIGZhclxuICAgIGxldCBjdXJyZW50VG90YWw6IEJOID0gbmV3IEJOKDApO1xuXG4gICAgLy8gZGVsZWdhdGluZyBhbmQgdmFsaWRhdGluZyBoYXZlIG5vIGZlZXNcbiAgICBjb25zdCB0b3RhbFRhcmdldCA9IGFtb3VudC5jbG9uZSgpO1xuXG4gICAgY29uc3QgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxbXSA9IFtdO1xuXG4gICAgLypcbiAgICBBID0gdXNlciBrZXlcbiAgICBCID0gaHNtIGtleVxuICAgIEMgPSBiYWNrdXAga2V5XG4gICAgYml0Z29BZGRyZXNzZXMgPSBiaXRnbyBhZGRyZXNzZXMgWyBBLCBCLCBDIF1cbiAgICB1dHhvLmFkZHJlc3NlcyA9IElNUyBhZGRyZXNzZXMgWyBCLCBDLCBBIF1cbiAgICB1dHhvLmFkZHJlc3Nlc0luZGV4ID0gWyAyLCAwLCAxIF1cbiAgICB3ZSBwaWNrIDAsIDEgZm9yIG5vbi1yZWNvdmVyeVxuICAgIHdlIHBpY2sgMSwgMiBmb3IgcmVjb3ZlcnlcbiAgICAqL1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmZvckVhY2goKHV0eG8pID0+IHtcbiAgICAgIC8vIGluIFdQLCBvdXRwdXQuYWRkcmVzc2VzSW5kZXggaXMgZW1wdHksIHNvIGZpbGwgaXRcbiAgICAgIGlmICghdXR4by5hZGRyZXNzZXNJbmRleCB8fCB1dHhvLmFkZHJlc3Nlc0luZGV4Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCB1dHhvQWRkcmVzc2VzOiBCdWZmZXJBdmF4W10gPSB1dHhvLmFkZHJlc3Nlcy5tYXAoKGEpID0+IHV0aWxzLnBhcnNlQWRkcmVzcyhhKSk7XG4gICAgICAgIHV0eG8uYWRkcmVzc2VzSW5kZXggPSB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzLm1hcCgoYSkgPT4gdXR4b0FkZHJlc3Nlcy5maW5kSW5kZXgoKHUpID0+IGEuZXF1YWxzKHUpKSk7XG4gICAgICB9XG4gICAgICAvLyBpbiBPVkMsIG91dHB1dC5hZGRyZXNzZXNJbmRleCBpcyBkZWZpbmVkIGNvcnJlY3RseSBmcm9tIHRoZSBwcmV2aW91cyBpdGVyYXRpb25cbiAgICB9KTtcblxuICAgIC8vIHZhbGlkYXRlIHRoZSB1dHhvc1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmZvckVhY2goKHV0eG8pID0+IHtcbiAgICAgIGlmICghdXR4bykge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVdHhvIGlzIHVuZGVmaW5lZCcpO1xuICAgICAgfVxuICAgICAgLy8gYWRkcmVzc2VzSW5kZXggc2hvdWxkIG5ldmVyIGhhdmUgYSBtaXNtYXRjaFxuICAgICAgaWYgKHV0eG8uYWRkcmVzc2VzSW5kZXg/LmluY2x1ZGVzKC0xKSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdBZGRyZXNzZXMgYXJlIGluY29uc2lzdGVudDogJyArIHV0eG8udHhpZCk7XG4gICAgICB9XG4gICAgICBpZiAodXR4by50aHJlc2hvbGQgIT09IHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZCkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUaHJlc2hvbGQgaXMgaW5jb25zaXN0ZW50Jyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcy5mb3JFYWNoKCh1dHhvLCBpKSA9PiB7XG4gICAgICBpZiAodXR4by5vdXRwdXRJRCA9PT0gU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCkge1xuICAgICAgICBjb25zdCB0eGlkQnVmID0gdXRpbHMuY2I1OERlY29kZSh1dHhvLnR4aWQpO1xuICAgICAgICBjb25zdCBhbXQ6IEJOID0gbmV3IEJOKHV0eG8uYW1vdW50KTtcbiAgICAgICAgY29uc3Qgb3V0cHV0aWR4ID0gdXRpbHMuY2I1OERlY29kZSh1dHhvLm91dHB1dGlkeCk7XG4gICAgICAgIGNvbnN0IGFkZHJlc3Nlc0luZGV4ID0gdXR4by5hZGRyZXNzZXNJbmRleCA/PyBbXTtcblxuICAgICAgICAvLyBlaXRoZXIgdXNlciAoMCkgb3IgcmVjb3ZlcnkgKDIpXG4gICAgICAgIGNvbnN0IGZpcnN0SW5kZXggPSB0aGlzLnJlY292ZXJTaWduZXIgPyAyIDogMDtcbiAgICAgICAgY29uc3QgYml0Z29JbmRleCA9IDE7XG4gICAgICAgIGN1cnJlbnRUb3RhbCA9IGN1cnJlbnRUb3RhbC5hZGQoYW10KTtcblxuICAgICAgICBjb25zdCBzZWNwVHJhbnNmZXJJbnB1dCA9IG5ldyBTRUNQVHJhbnNmZXJJbnB1dChhbXQpO1xuXG4gICAgICAgIC8vIGlmIHVzZXIvYmFja3VwID4gYml0Z29cbiAgICAgICAgaWYgKGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdIDwgYWRkcmVzc2VzSW5kZXhbZmlyc3RJbmRleF0pIHtcbiAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5hZGRTaWduYXR1cmVJZHgoYWRkcmVzc2VzSW5kZXhbYml0Z29JbmRleF0sIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbYml0Z29JbmRleF0pO1xuICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0LmFkZFNpZ25hdHVyZUlkeChhZGRyZXNzZXNJbmRleFtmaXJzdEluZGV4XSwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XSk7XG4gICAgICAgICAgY3JlZGVudGlhbHMucHVzaChcbiAgICAgICAgICAgIFNlbGVjdENyZWRlbnRpYWxDbGFzcyhcbiAgICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuZ2V0Q3JlZGVudGlhbElEKCksIC8vIDlcbiAgICAgICAgICAgICAgWycnLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2ZpcnN0SW5kZXhdLnRvU3RyaW5nKCdoZXgnKV0ubWFwKHV0aWxzLmNyZWF0ZVNpZylcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0LmFkZFNpZ25hdHVyZUlkeChhZGRyZXNzZXNJbmRleFtmaXJzdEluZGV4XSwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XSk7XG4gICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2JpdGdvSW5kZXhdKTtcbiAgICAgICAgICBjcmVkZW50aWFscy5wdXNoKFxuICAgICAgICAgICAgU2VsZWN0Q3JlZGVudGlhbENsYXNzKFxuICAgICAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5nZXRDcmVkZW50aWFsSUQoKSxcbiAgICAgICAgICAgICAgW3RoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbZmlyc3RJbmRleF0udG9TdHJpbmcoJ2hleCcpLCAnJ10ubWFwKHV0aWxzLmNyZWF0ZVNpZylcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5wdXQ6IFRyYW5zZmVyYWJsZUlucHV0ID0gbmV3IFRyYW5zZmVyYWJsZUlucHV0KFxuICAgICAgICAgIHR4aWRCdWYsXG4gICAgICAgICAgb3V0cHV0aWR4LFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQsXG4gICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXRcbiAgICAgICAgKTtcbiAgICAgICAgaW5wdXRzLnB1c2goaW5wdXQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGN1cnJlbnRUb3RhbC5sdCh0b3RhbFRhcmdldCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBVdHhvIG91dHB1dHMgZ2V0ICR7Y3VycmVudFRvdGFsLnRvU3RyaW5nKCl9IGFuZCAke3RvdGFsVGFyZ2V0LnRvU3RyaW5nKCl9IGlzIHJlcXVpcmVkYFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRUb3RhbC5ndCh0b3RhbFRhcmdldCkpIHtcbiAgICAgIG91dHB1dHMucHVzaChcbiAgICAgICAgbmV3IFRyYW5zZmVyYWJsZU91dHB1dChcbiAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLFxuICAgICAgICAgIG5ldyBTRUNQVHJhbnNmZXJPdXRwdXQoXG4gICAgICAgICAgICBjdXJyZW50VG90YWwuc3ViKHRvdGFsVGFyZ2V0KSxcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9sb2NrdGltZSxcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZFxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGlucHV0cyxcbiAgICAgIG91dHB1dHMsXG4gICAgICBjcmVkZW50aWFscyxcbiAgICB9O1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EseUNBQXFEO0FBQ3JELG9EQUE0QjtBQUM1Qiw2REFBMEQ7QUFDMUQsK0RBTXdDO0FBRXhDLG1EQUE2RDtBQUM3RCxtQ0FBb0Q7QUFFcEQ7O0dBRUc7QUFDSCxNQUFzQix3QkFBeUIsU0FBUSx1Q0FBa0I7SUFHdkUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFDLE9BQXdCO1FBQ3RDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1RyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBYyxRQUFRO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxxQkFBcUI7SUFDckI7Ozs7O09BS0c7SUFDTyxpQkFBaUIsQ0FBQyxNQUFVO1FBS3BDLE1BQU0sTUFBTSxHQUF3QixFQUFFLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQXlCLEVBQUUsQ0FBQztRQUV6QyxzQkFB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QUMsV0FBVyxDQUFDLFFBQVEsRUFDekIsaUJBQWlCLENBQ2xCLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxZQUFZLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0Isb0JBQW9CLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxXQUFXLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FDeEYsQ0FBQztTQUNIO2FBQU0sSUFBSSxZQUFZLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBSSwrQkFBa0IsQ0FDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQ3pCLElBQUksK0JBQWtCLENBQ3BCLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQzVCLENBQ0YsQ0FDRixDQUFDO1NBQ0g7UUFDRCxPQUFPO1lBQ0wsTUFBTTtZQUNOLE9BQU87WUFDUCxXQUFXO1NBQ1osQ0FBQztJQUNKLENBQUM7Q0FHRjtBQTdKRCw0REE2SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCTiwgQnVmZmVyIGFzIEJ1ZmZlckF2YXggfSBmcm9tICdhdmFsYW5jaGUnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgU0VDUFRyYW5zZmVySW5wdXQsXG4gIFNFQ1BUcmFuc2Zlck91dHB1dCxcbiAgU2VsZWN0Q3JlZGVudGlhbENsYXNzLFxuICBUcmFuc2ZlcmFibGVJbnB1dCxcbiAgVHJhbnNmZXJhYmxlT3V0cHV0LFxufSBmcm9tICdhdmFsYW5jaGUvZGlzdC9hcGlzL3BsYXRmb3Jtdm0nO1xuaW1wb3J0IHsgQ3JlZGVudGlhbCB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2NvbW1vbic7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0IH0gZnJvbSAnLi9pZmFjZSc7XG5cbi8qKlxuICogQ3Jvc3MtY2hhaW4gdHJhbnNhY3Rpb25zIChleHBvcnQgYW5kIGltcG9ydCkgYXJlIGF0b21pYyBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9leHRlcm5hbENoYWluSWQ6IEJ1ZmZlckF2YXg7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2ZlZS5mZWUgPSB0aGlzLmZpeGVkRmVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcm5hbCBjaGFpbiBpcyB0aGUgb25lIHNldCBmb3IgdGhlIGNvaW4gaW4gY29pbkNvbmZpZy5uZXR3b3JrLiBUaGUgZXh0ZXJuYWwgY2hhaW4gaXMgdGhlIG90aGVyIGNoYWluIGludm9sdmVkLlxuICAgKiBUaGUgZXh0ZXJuYWwgY2hhaW4gaWQgaXMgdGhlIHNvdXJjZSBvbiBpbXBvcnQgYW5kIHRoZSBkZXN0aW5hdGlvbiBvbiBleHBvcnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFpbklkIC0gaWQgb2YgdGhlIGV4dGVybmFsIGNoYWluXG4gICAqL1xuICBleHRlcm5hbENoYWluSWQoY2hhaW5JZDogc3RyaW5nIHwgQnVmZmVyKTogdGhpcyB7XG4gICAgY29uc3QgbmV3VGFyZ2V0Q2hhaW5JZCA9IHR5cGVvZiBjaGFpbklkID09PSAnc3RyaW5nJyA/IHV0aWxzLmNiNThEZWNvZGUoY2hhaW5JZCkgOiBCdWZmZXJBdmF4LmZyb20oY2hhaW5JZCk7XG4gICAgdGhpcy52YWxpZGF0ZUNoYWluSWQobmV3VGFyZ2V0Q2hhaW5JZCk7XG4gICAgdGhpcy5fZXh0ZXJuYWxDaGFpbklkID0gbmV3VGFyZ2V0Q2hhaW5JZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBGZWUgaXMgZml4IGZvciBBVk0gYXRvbWljIHR4LlxuICAgKlxuICAgKiBAcmV0dXJucyBuZXR3b3JrLnR4RmVlXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZml4ZWRGZWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay50eEZlZTtcbiAgfVxuXG4gIC8vIHJlZ2lvbiB1dHhvIGVuZ2luZVxuICAvKipcbiAgICogVGhyZXNob2xkIG11c3QgYmUgMiBhbmQgc2luY2Ugb3V0cHV0IGFsd2F5cyBnZXQgcmVvcmRlcmVkIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlIGNhbiBhbHdheXMgYWRkIHNpZ25hdHVyZXMgaW4gdGhlIGNvcnJlY3QgbG9jYXRpb25cbiAgICogVG8gZmluZCB0aGUgY29ycmVjdCBsb2NhdGlvbiBmb3IgdGhlIHNpZ25hdHVyZSwgd2UgdXNlIHRoZSBvdXRwdXQncyBhZGRyZXNzZXMgdG8gY3JlYXRlIHRoZSBzaWduYXR1cmVJZHggaW4gdGhlIG9yZGVyIHRoYXQgd2UgZGVzaXJlXG4gICAqIDA6IHVzZXIga2V5LCAxOiBoc20ga2V5LCAyOiByZWNvdmVyeSBrZXlcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUlucHV0T3V0cHV0KGFtb3VudDogQk4pOiB7XG4gICAgaW5wdXRzOiBUcmFuc2ZlcmFibGVJbnB1dFtdO1xuICAgIG91dHB1dHM6IFRyYW5zZmVyYWJsZU91dHB1dFtdO1xuICAgIGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW107XG4gIH0ge1xuICAgIGNvbnN0IGlucHV0czogVHJhbnNmZXJhYmxlSW5wdXRbXSA9IFtdO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zZmVyYWJsZU91dHB1dFtdID0gW107XG5cbiAgICAvLyBhbW91bnQgc3BlbnQgc28gZmFyXG4gICAgbGV0IGN1cnJlbnRUb3RhbDogQk4gPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBkZWxlZ2F0aW5nIGFuZCB2YWxpZGF0aW5nIGhhdmUgbm8gZmVlc1xuICAgIGNvbnN0IHRvdGFsVGFyZ2V0ID0gYW1vdW50LmNsb25lKCk7XG5cbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbFtdID0gW107XG5cbiAgICAvKlxuICAgIEEgPSB1c2VyIGtleVxuICAgIEIgPSBoc20ga2V5XG4gICAgQyA9IGJhY2t1cCBrZXlcbiAgICBiaXRnb0FkZHJlc3NlcyA9IGJpdGdvIGFkZHJlc3NlcyBbIEEsIEIsIEMgXVxuICAgIHV0eG8uYWRkcmVzc2VzID0gSU1TIGFkZHJlc3NlcyBbIEIsIEMsIEEgXVxuICAgIHV0eG8uYWRkcmVzc2VzSW5kZXggPSBbIDIsIDAsIDEgXVxuICAgIHdlIHBpY2sgMCwgMSBmb3Igbm9uLXJlY292ZXJ5XG4gICAgd2UgcGljayAxLCAyIGZvciByZWNvdmVyeVxuICAgICovXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MuZm9yRWFjaCgodXR4bykgPT4ge1xuICAgICAgLy8gaW4gV1AsIG91dHB1dC5hZGRyZXNzZXNJbmRleCBpcyBlbXB0eSwgc28gZmlsbCBpdFxuICAgICAgaWYgKCF1dHhvLmFkZHJlc3Nlc0luZGV4IHx8IHV0eG8uYWRkcmVzc2VzSW5kZXgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnN0IHV0eG9BZGRyZXNzZXM6IEJ1ZmZlckF2YXhbXSA9IHV0eG8uYWRkcmVzc2VzLm1hcCgoYSkgPT4gdXRpbHMucGFyc2VBZGRyZXNzKGEpKTtcbiAgICAgICAgdXR4by5hZGRyZXNzZXNJbmRleCA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMubWFwKChhKSA9PiB1dHhvQWRkcmVzc2VzLmZpbmRJbmRleCgodSkgPT4gYS5lcXVhbHModSkpKTtcbiAgICAgIH1cbiAgICAgIC8vIGluIE9WQywgb3V0cHV0LmFkZHJlc3Nlc0luZGV4IGlzIGRlZmluZWQgY29ycmVjdGx5IGZyb20gdGhlIHByZXZpb3VzIGl0ZXJhdGlvblxuICAgIH0pO1xuXG4gICAgLy8gdmFsaWRhdGUgdGhlIHV0eG9zXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MuZm9yRWFjaCgodXR4bykgPT4ge1xuICAgICAgaWYgKCF1dHhvKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1V0eG8gaXMgdW5kZWZpbmVkJyk7XG4gICAgICB9XG4gICAgICAvLyBhZGRyZXNzZXNJbmRleCBzaG91bGQgbmV2ZXIgaGF2ZSBhIG1pc21hdGNoXG4gICAgICBpZiAodXR4by5hZGRyZXNzZXNJbmRleD8uaW5jbHVkZXMoLTEpKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0FkZHJlc3NlcyBhcmUgaW5jb25zaXN0ZW50OiAnICsgdXR4by50eGlkKTtcbiAgICAgIH1cbiAgICAgIGlmICh1dHhvLnRocmVzaG9sZCAhPT0gdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RocmVzaG9sZCBpcyBpbmNvbnNpc3RlbnQnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmZvckVhY2goKHV0eG8sIGkpID0+IHtcbiAgICAgIGlmICh1dHhvLm91dHB1dElEID09PSBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0KSB7XG4gICAgICAgIGNvbnN0IHR4aWRCdWYgPSB1dGlscy5jYjU4RGVjb2RlKHV0eG8udHhpZCk7XG4gICAgICAgIGNvbnN0IGFtdDogQk4gPSBuZXcgQk4odXR4by5hbW91bnQpO1xuICAgICAgICBjb25zdCBvdXRwdXRpZHggPSB1dGlscy5jYjU4RGVjb2RlKHV0eG8ub3V0cHV0aWR4KTtcbiAgICAgICAgY29uc3QgYWRkcmVzc2VzSW5kZXggPSB1dHhvLmFkZHJlc3Nlc0luZGV4ID8/IFtdO1xuXG4gICAgICAgIC8vIGVpdGhlciB1c2VyICgwKSBvciByZWNvdmVyeSAoMilcbiAgICAgICAgY29uc3QgZmlyc3RJbmRleCA9IHRoaXMucmVjb3ZlclNpZ25lciA/IDIgOiAwO1xuICAgICAgICBjb25zdCBiaXRnb0luZGV4ID0gMTtcbiAgICAgICAgY3VycmVudFRvdGFsID0gY3VycmVudFRvdGFsLmFkZChhbXQpO1xuXG4gICAgICAgIGNvbnN0IHNlY3BUcmFuc2ZlcklucHV0ID0gbmV3IFNFQ1BUcmFuc2ZlcklucHV0KGFtdCk7XG5cbiAgICAgICAgLy8gaWYgdXNlci9iYWNrdXAgPiBiaXRnb1xuICAgICAgICBpZiAoYWRkcmVzc2VzSW5kZXhbYml0Z29JbmRleF0gPCBhZGRyZXNzZXNJbmRleFtmaXJzdEluZGV4XSkge1xuICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0LmFkZFNpZ25hdHVyZUlkeChhZGRyZXNzZXNJbmRleFtiaXRnb0luZGV4XSwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tiaXRnb0luZGV4XSk7XG4gICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4W2ZpcnN0SW5kZXhdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2ZpcnN0SW5kZXhdKTtcbiAgICAgICAgICBjcmVkZW50aWFscy5wdXNoKFxuICAgICAgICAgICAgU2VsZWN0Q3JlZGVudGlhbENsYXNzKFxuICAgICAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5nZXRDcmVkZW50aWFsSUQoKSwgLy8gOVxuICAgICAgICAgICAgICBbJycsIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbZmlyc3RJbmRleF0udG9TdHJpbmcoJ2hleCcpXS5tYXAodXRpbHMuY3JlYXRlU2lnKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4W2ZpcnN0SW5kZXhdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2ZpcnN0SW5kZXhdKTtcbiAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5hZGRTaWduYXR1cmVJZHgoYWRkcmVzc2VzSW5kZXhbYml0Z29JbmRleF0sIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbYml0Z29JbmRleF0pO1xuICAgICAgICAgIGNyZWRlbnRpYWxzLnB1c2goXG4gICAgICAgICAgICBTZWxlY3RDcmVkZW50aWFsQ2xhc3MoXG4gICAgICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0LmdldENyZWRlbnRpYWxJRCgpLFxuICAgICAgICAgICAgICBbdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XS50b1N0cmluZygnaGV4JyksICcnXS5tYXAodXRpbHMuY3JlYXRlU2lnKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbnB1dDogVHJhbnNmZXJhYmxlSW5wdXQgPSBuZXcgVHJhbnNmZXJhYmxlSW5wdXQoXG4gICAgICAgICAgdHhpZEJ1ZixcbiAgICAgICAgICBvdXRwdXRpZHgsXG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCxcbiAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dFxuICAgICAgICApO1xuICAgICAgICBpbnB1dHMucHVzaChpbnB1dCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoY3VycmVudFRvdGFsLmx0KHRvdGFsVGFyZ2V0KSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYFV0eG8gb3V0cHV0cyBnZXQgJHtjdXJyZW50VG90YWwudG9TdHJpbmcoKX0gYW5kICR7dG90YWxUYXJnZXQudG9TdHJpbmcoKX0gaXMgcmVxdWlyZWRgXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudFRvdGFsLmd0KHRvdGFsVGFyZ2V0KSkge1xuICAgICAgb3V0cHV0cy5wdXNoKFxuICAgICAgICBuZXcgVHJhbnNmZXJhYmxlT3V0cHV0KFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQsXG4gICAgICAgICAgbmV3IFNFQ1BUcmFuc2Zlck91dHB1dChcbiAgICAgICAgICAgIGN1cnJlbnRUb3RhbC5zdWIodG90YWxUYXJnZXQpLFxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyxcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLFxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaW5wdXRzLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIGNyZWRlbnRpYWxzLFxuICAgIH07XG4gIH1cblxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
|
|
@@ -73,7 +73,7 @@ export declare class DelegatorTxBuilder extends TransactionBuilder {
|
|
|
73
73
|
*
|
|
74
74
|
* @protected
|
|
75
75
|
*/
|
|
76
|
-
protected
|
|
76
|
+
protected buildAvaxTransaction(): void;
|
|
77
77
|
/**
|
|
78
78
|
* Create the StakeOut where the recipient address are the sender.
|
|
79
79
|
* @protected
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegatorTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/delegatorTxBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EAAuC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAoB,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,cAAc,EAEd,eAAe,EAMf,iBAAiB,EACjB,kBAAkB,EAGnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAY,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAA6B,EAAE,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,qBAAa,kBAAmB,SAAQ,kBAAkB;IACxD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC;IACzB,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;IACvB,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;IAE3B;;;OAGG;gBACS,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM5C;;;OAGG;IACH,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAMjD;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM3B;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvC;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKrC;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI;IAQrC;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYpC;;;;;;;OAOG;IACH,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI;IAgBvD;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI;IASrC,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IA6BzB,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc;IAI7D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc;IAItD;;;OAGG;IACH,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"delegatorTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/delegatorTxBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EAAuC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAoB,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,cAAc,EAEd,eAAe,EAMf,iBAAiB,EACjB,kBAAkB,EAGnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAY,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAA6B,EAAE,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,qBAAa,kBAAmB,SAAQ,kBAAkB;IACxD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC;IACzB,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;IACvB,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;IAE3B;;;OAGG;gBACS,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM5C;;;OAGG;IACH,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAMjD;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM3B;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvC;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKrC;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI;IAQrC;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYpC;;;;;;;OAOG;IACH,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI;IAgBvD;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI;IASrC,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IA6BzB,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc;IAI7D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc;IAItD;;;OAGG;IACH,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAyBtC;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,IAAI,kBAAkB;IAYhD,SAAS,CAAC,kBAAkB,IAAI,eAAe;IAW/C;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,IAAI;QAC7B,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAC9B,WAAW,EAAE,UAAU,EAAE,CAAC;KAC3B;CAkIF"}
|
|
@@ -162,7 +162,7 @@ class DelegatorTxBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
|
162
162
|
*
|
|
163
163
|
* @protected
|
|
164
164
|
*/
|
|
165
|
-
|
|
165
|
+
buildAvaxTransaction() {
|
|
166
166
|
this.validateStakeDuration(this._startTime, this._endTime);
|
|
167
167
|
const { inputs, outputs, credentials } = this.createInputOutput();
|
|
168
168
|
this.transaction.setTransaction(new platformvm_1.Tx(new platformvm_1.UnsignedTx(new platformvm_1.AddDelegatorTx(this.transaction._networkID, this.transaction._blockchainID, outputs, inputs, this.transaction._memo, utils_1.default.NodeIDStringToBuffer(this._nodeID), this._startTime, this._endTime, this._stakeAmount, [this.stakeTransferOut()], this.rewardOwnersOutput())), credentials));
|
|
@@ -284,4 +284,4 @@ class DelegatorTxBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
|
284
284
|
}
|
|
285
285
|
}
|
|
286
286
|
exports.DelegatorTxBuilder = DelegatorTxBuilder;
|
|
287
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdG9yVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9kZWxlZ2F0b3JUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQTRGO0FBRTVGLDZEQUEwRDtBQUMxRCwrREFhd0M7QUFDeEMseUNBQXlDO0FBQ3pDLG1DQUFnRTtBQUNoRSxvREFBNEI7QUFFNUIsNkNBQTRDO0FBRTVDLE1BQWEsa0JBQW1CLFNBQVEsdUNBQWtCO0lBTXhEOzs7T0FHRztJQUNILFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUEyQixDQUFDO1FBQ3ZELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxjQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLFlBQVksQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZUFBZSxDQUFDLE9BQTBCO1FBQ3hDLE1BQU0sZUFBZSxHQUFHLE9BQU8sWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdH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QUMsVUFBVSxDQUM1QixDQUNGLENBQ0YsQ0FBQzthQUNIO1NBQ0Y7UUFDRCxpRkFBaUY7UUFDakYsT0FBTztZQUNMLE1BQU07WUFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQThCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFDN0YsV0FBVyxFQUFFLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVztTQUNuRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBMVdELGdEQTBXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgTm90U3VwcG9ydGVkLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBBdmFsYW5jaGVOZXR3b3JrLCBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQge1xuICBBZGREZWxlZ2F0b3JUeCxcbiAgQmFzZVR4IGFzIFBWTUJhc2VUeCxcbiAgUGFyc2VhYmxlT3V0cHV0LFxuICBQbGF0Zm9ybVZNQ29uc3RhbnRzLFxuICBTRUNQT3duZXJPdXRwdXQsXG4gIFNFQ1BUcmFuc2ZlcklucHV0LFxuICBTRUNQVHJhbnNmZXJPdXRwdXQsXG4gIFNlbGVjdENyZWRlbnRpYWxDbGFzcyxcbiAgVHJhbnNmZXJhYmxlSW5wdXQsXG4gIFRyYW5zZmVyYWJsZU91dHB1dCxcbiAgVHggYXMgUFZNVHgsXG4gIFVuc2lnbmVkVHgsXG59IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvcGxhdGZvcm12bSc7XG5pbXBvcnQgeyBCaW5Ub29scywgQk4gfSBmcm9tICdhdmFsYW5jaGUnO1xuaW1wb3J0IHsgU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCwgVHgsIEJhc2VUeCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQ3JlZGVudGlhbCB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2NvbW1vbic7XG5pbXBvcnQgeyByZWNvdmVyVXR4b3MgfSBmcm9tICcuL3V0eG9FbmdpbmUnO1xuXG5leHBvcnQgY2xhc3MgRGVsZWdhdG9yVHhCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9ub2RlSUQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9zdGFydFRpbWU6IEJOO1xuICBwcm90ZWN0ZWQgX2VuZFRpbWU6IEJOO1xuICBwcm90ZWN0ZWQgX3N0YWtlQW1vdW50OiBCTjtcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGNvaW5Db25maWdcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgY29uc3QgbmV0d29yayA9IGNvaW5Db25maWcubmV0d29yayBhcyBBdmFsYW5jaGVOZXR3b3JrO1xuICAgIHRoaXMuX3N0YWtlQW1vdW50ID0gbmV3IEJOKG5ldHdvcmsubWluU3Rha2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0cmFuc2FjdGlvbiB0eXBlXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5BZGREZWxlZ2F0b3I7XG4gIH1cblxuICAvKipcbiAgICogQWRkcmVzc2VzIHdoZXJlIHJld2FyZCBzaG91bGQgYmUgZGVwb3NpdFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBhZGRyZXNzIC0gc2luZ2xlIGFkZHJlc3Mgb3IgYXJyYXkgb2YgYWRkcmVzc2VzIHRvIHJlY2VpdmUgcmV3YXJkc1xuICAgKi9cbiAgcmV3YXJkQWRkcmVzc2VzKGFkZHJlc3M6IHN0cmluZyB8IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgY29uc3QgcmV3YXJkQWRkcmVzc2VzID0gYWRkcmVzcyBpbnN0YW5jZW9mIEFycmF5ID8gYWRkcmVzcyA6IFthZGRyZXNzXTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMgPSByZXdhcmRBZGRyZXNzZXMubWFwKHV0aWxzLnBhcnNlQWRkcmVzcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIG5vZGVJRFxuICAgKi9cbiAgbm9kZUlEKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTm9kZUlEKHZhbHVlKTtcbiAgICB0aGlzLl9ub2RlSUQgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBzdGFydCB0aW1lIG9mIHN0YWtpbmcgcGVyaW9kXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgc3RhcnRUaW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBuZXcgQk4odmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIGVuZCB0aW1lIG9mIHN0YWtpbmcgcGVyaW9kXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgZW5kVGltZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5fZW5kVGltZSA9IG5ldyBCTih2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBzdGFrZUFtb3VudCh2YWx1ZTogQk4gfCBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCB2YWx1ZUJOID0gQk4uaXNCTih2YWx1ZSkgPyB2YWx1ZSA6IG5ldyBCTih2YWx1ZSk7XG4gICAgdGhpcy52YWxpZGF0ZVN0YWtlQW1vdW50KHZhbHVlQk4pO1xuICAgIHRoaXMuX3N0YWtlQW1vdW50ID0gdmFsdWVCTjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG4gIC8qKlxuICAgKiB2YWxpZGF0ZXMgYSBjb3JyZWN0IE5vZGVJRCBpcyB1c2VkXG4gICAqIEBwYXJhbSBub2RlSURcbiAgICovXG4gIHZhbGlkYXRlTm9kZUlEKG5vZGVJRDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFub2RlSUQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3Npbmcgbm9kZUlEJyk7XG4gICAgfVxuICAgIGlmIChub2RlSUQuc2xpY2UoMCwgNikgIT09ICdOb2RlSUQnKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBpbnZhbGlkIE5vZGVJRCB0YWcnKTtcbiAgICB9XG4gICAgY29uc3QgYmludG9vbHMgPSBCaW5Ub29scy5nZXRJbnN0YW5jZSgpO1xuICAgIGlmICghKGJpbnRvb2xzLmI1OFRvQnVmZmVyKG5vZGVJRC5zbGljZSg3KSkubGVuZ3RoID09PSAyNCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IE5vZGVJRCBpcyBub3QgaW4gY2I1OCBmb3JtYXQnKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqICAgcHJvdGVjdGVkIF9zdGFydFRpbWU6IERhdGU7XG4gICAqICAgcHJvdGVjdGVkIF9lbmRUaW1lOiBEYXRlO1xuICAgKiAgIDIgd2Vla3MgPSAxMjA5NjAwXG4gICAqICAgMSB5ZWFyID0gMzE1NTY5MjZcbiAgICogICB1bml4IHRpbWUgc3RhbXAgYmFzZWQgb2ZmIHNlY29uZHNcbiAgICovXG4gIHZhbGlkYXRlU3Rha2VEdXJhdGlvbihzdGFydFRpbWU6IEJOLCBlbmRUaW1lOiBCTik6IHZvaWQge1xuICAgIGNvbnN0IG9uZURheUxhdGVyID0gbmV3IEJOKERhdGUubm93KCkpLmFkZChuZXcgQk4oODY0MDApKTtcbiAgICBpZiAoIXN0YXJ0VGltZS5ndChvbmVEYXlMYXRlcikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1N0YXJ0IHRpbWUgbmVlZHMgdG8gYmUgb25lIGRheSBncmVhdGVyIHRoYW4gY3VycmVudCB0aW1lJyk7XG4gICAgfVxuICAgIGlmIChlbmRUaW1lIDwgc3RhcnRUaW1lKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgZGF0ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHN0YXJ0IGRhdGUnKTtcbiAgICB9XG4gICAgaWYgKHN0YXJ0VGltZS5hZGQobmV3IEJOKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsubWluU3Rha2VEdXJhdGlvbikpLmd0KGVuZFRpbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgZGF0ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0d28gd2Vla3MnKTtcbiAgICB9XG4gICAgaWYgKGVuZFRpbWUuZ3Qoc3RhcnRUaW1lLmFkZChuZXcgQk4odGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5tYXhTdGFrZUR1cmF0aW9uKSkpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgZGF0ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBvbmUgeWVhcicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gYW1vdW50XG4gICAqL1xuICB2YWxpZGF0ZVN0YWtlQW1vdW50KGFtb3VudDogQk4pOiB2b2lkIHtcbiAgICBjb25zdCBtaW5TdGFrZSA9IG5ldyBCTih0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLm1pblN0YWtlKTtcbiAgICBpZiAoYW1vdW50Lmx0KG1pblN0YWtlKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWluaW11bSBzdGFraW5nIGFtb3VudCBpcyAnICsgTnVtYmVyKG1pblN0YWtlKSAvIDEwMDAwMDAwMDAgKyAnIEFWQVguJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUeCk6IHRoaXMge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBjb25zdCBiYXNlVHg6IEJhc2VUeCA9IHR4LmdldFVuc2lnbmVkVHgoKS5nZXRUcmFuc2FjdGlvbigpO1xuICAgIGlmICghdGhpcy52ZXJpZnlUeFR5cGUoYmFzZVR4KSkge1xuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnVHJhbnNhY3Rpb24gY2Fubm90IGJlIHBhcnNlZCBvciBoYXMgYW4gdW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgIH1cbiAgICAvLyBUaGUgU3Rha2VPdXRzIGlzIGEge0BsaW5rIHN0YWtlVHJhbnNmZXJPdXR9IHJlc3VsdC5cbiAgICAvLyBJdCdzIGV4cGVjdGVkIHRvIGhhdmUgb25seSBvbmUgb3V0cHV0cyB3aXRoIHRoZSBhZGRyZXNzZXMgb2YgdGhlIHNlbmRlci5cbiAgICBjb25zdCBvdXRwdXRzID0gYmFzZVR4LmdldFN0YWtlT3V0cygpO1xuICAgIGlmIChvdXRwdXRzLmxlbmd0aCAhPSAxKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBjYW4gaGF2ZSBvbmUgZXh0ZXJuYWwgb3V0cHV0Jyk7XG4gICAgfVxuICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbMF07XG4gICAgaWYgKCFvdXRwdXQuZ2V0QXNzZXRJRCgpLmVxdWFscyh0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXNzZXQgSUQgb2YgdGhlIG91dHB1dCBkb2VzIG5vdCBtYXRjaCB0aGUgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3Qgc2VjcE91dCA9IG91dHB1dC5nZXRPdXRwdXQoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9sb2NrdGltZSA9IHNlY3BPdXQuZ2V0TG9ja3RpbWUoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQgPSBzZWNwT3V0LmdldFRocmVzaG9sZCgpO1xuICAgIC8vIG91dHB1dCBhZGRyZXNzZXMgYXJlIHRoZSBzZW5kZXIgYWRkcmVzc2VzXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyA9IHNlY3BPdXQuZ2V0QWRkcmVzc2VzKCk7XG4gICAgdGhpcy5fbm9kZUlEID0gYmFzZVR4LmdldE5vZGVJRFN0cmluZygpO1xuICAgIHRoaXMuX3N0YXJ0VGltZSA9IGJhc2VUeC5nZXRTdGFydFRpbWUoKTtcbiAgICB0aGlzLl9lbmRUaW1lID0gYmFzZVR4LmdldEVuZFRpbWUoKTtcbiAgICB0aGlzLl9zdGFrZUFtb3VudCA9IGJhc2VUeC5nZXRTdGFrZUFtb3VudCgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zID0gcmVjb3ZlclV0eG9zKGJhc2VUeC5nZXRJbnMoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdGF0aWMgdmVyaWZ5VHhUeXBlKGJhc2VUeDogQmFzZVR4KTogYmFzZVR4IGlzIEFkZERlbGVnYXRvclR4IHtcbiAgICByZXR1cm4gYmFzZVR4LmdldFR5cGVJRCgpID09PSBQbGF0Zm9ybVZNQ29uc3RhbnRzLkFERFZBTElEQVRPUlRYO1xuICB9XG5cbiAgdmVyaWZ5VHhUeXBlKGJhc2VUeDogQmFzZVR4KTogYmFzZVR4IGlzIEFkZERlbGVnYXRvclR4IHtcbiAgICByZXR1cm4gRGVsZWdhdG9yVHhCdWlsZGVyLnZlcmlmeVR4VHlwZShiYXNlVHgpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZEF2YXhwVHJhbnNhY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZVN0YWtlRHVyYXRpb24odGhpcy5fc3RhcnRUaW1lLCB0aGlzLl9lbmRUaW1lKTtcbiAgICBjb25zdCB7IGlucHV0cywgb3V0cHV0cywgY3JlZGVudGlhbHMgfSA9IHRoaXMuY3JlYXRlSW5wdXRPdXRwdXQoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKFxuICAgICAgbmV3IFBWTVR4KFxuICAgICAgICBuZXcgVW5zaWduZWRUeChcbiAgICAgICAgICBuZXcgQWRkRGVsZWdhdG9yVHgoXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrSUQsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9ibG9ja2NoYWluSUQsXG4gICAgICAgICAgICBvdXRwdXRzLFxuICAgICAgICAgICAgaW5wdXRzLFxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fbWVtbyxcbiAgICAgICAgICAgIHV0aWxzLk5vZGVJRFN0cmluZ1RvQnVmZmVyKHRoaXMuX25vZGVJRCksXG4gICAgICAgICAgICB0aGlzLl9zdGFydFRpbWUsXG4gICAgICAgICAgICB0aGlzLl9lbmRUaW1lLFxuICAgICAgICAgICAgdGhpcy5fc3Rha2VBbW91bnQsXG4gICAgICAgICAgICBbdGhpcy5zdGFrZVRyYW5zZmVyT3V0KCldLFxuICAgICAgICAgICAgdGhpcy5yZXdhcmRPd25lcnNPdXRwdXQoKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgY3JlZGVudGlhbHNcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgU3Rha2VPdXQgd2hlcmUgdGhlIHJlY2lwaWVudCBhZGRyZXNzIGFyZSB0aGUgc2VuZGVyLlxuICAgKiBAcHJvdGVjdGVkXG4gICAqXG4gICAqL1xuICBwcm90ZWN0ZWQgc3Rha2VUcmFuc2Zlck91dCgpOiBUcmFuc2ZlcmFibGVPdXRwdXQge1xuICAgIHJldHVybiBuZXcgVHJhbnNmZXJhYmxlT3V0cHV0KFxuICAgICAgdGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCxcbiAgICAgIG5ldyBTRUNQVHJhbnNmZXJPdXRwdXQoXG4gICAgICAgIHRoaXMuX3N0YWtlQW1vdW50LFxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzLFxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9sb2NrdGltZSxcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXdhcmRPd25lcnNPdXRwdXQoKTogUGFyc2VhYmxlT3V0cHV0IHtcbiAgICAvLyBpZiB0aGVyZSBhcmUgbm8gcmV3YXJkIGFkZHJlc3NlcywgdGhlIHNlbmRlciBnZXRzIHRoZSByZXdhcmRzXG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMgfHwgdGhpcy50cmFuc2FjdGlvbi5fcmV3YXJkQWRkcmVzc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5fcmV3YXJkQWRkcmVzc2VzID0gdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFBhcnNlYWJsZU91dHB1dChcbiAgICAgIG5ldyBTRUNQT3duZXJPdXRwdXQodGhpcy50cmFuc2FjdGlvbi5fcmV3YXJkQWRkcmVzc2VzLCB0aGlzLnRyYW5zYWN0aW9uLl9sb2NrdGltZSwgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGhyZXNob2xkIG11c3QgYmUgMiBhbmQgc2luY2Ugb3V0cHV0IGFsd2F5cyBnZXQgcmVvcmRlcmVkIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlIGNhbiBhbHdheXMgYWRkIHNpZ25hdHVyZXMgaW4gdGhlIGNvcnJlY3QgbG9jYXRpb25cbiAgICogVG8gZmluZCB0aGUgY29ycmVjdCBsb2NhdGlvbiBmb3IgdGhlIHNpZ25hdHVyZSwgd2UgdXNlIHRoZSBvdXB1dCdzIGFkZHJlc3NlcyB0byBjcmVhdGUgdGhlIHNpZ25hdHVyZUlkeCBpbiB0aGUgb3JkZXIgdGhhdCB3ZSBkZXNpcmVcbiAgICogMDogdXNlciBrZXksIDE6IGhzbSBrZXksIDI6IHJlY292ZXJ5IGtleVxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlSW5wdXRPdXRwdXQoKToge1xuICAgIGlucHV0czogVHJhbnNmZXJhYmxlSW5wdXRbXTtcbiAgICBvdXRwdXRzOiBUcmFuc2ZlcmFibGVPdXRwdXRbXTtcbiAgICBjcmVkZW50aWFsczogQ3JlZGVudGlhbFtdO1xuICB9IHtcbiAgICBjb25zdCBpbnB1dHM6IFRyYW5zZmVyYWJsZUlucHV0W10gPSBbXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2ZlcmFibGVPdXRwdXRbXSA9IFtdO1xuXG4gICAgLy8gYW1vdW50IHNwZW50IHNvIGZhclxuICAgIGxldCBjdXJyZW50VG90YWw6IEJOID0gbmV3IEJOKDApO1xuXG4gICAgLy8gZGVsZWdhdGluZyBhbmQgdmFsaWRhdGluZyBoYXZlIG5vIGZlZXNcbiAgICBjb25zdCB0b3RhbFRhcmdldCA9IHRoaXMuX3N0YWtlQW1vdW50LmNsb25lKCk7XG5cbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbFtdID0gW107XG5cbiAgICAvLyBjb252ZXJ0IGZyb21BZGRyZXNzZXMgdG8gc3RyaW5nXG4gICAgLy8gZnJvbUFkZHJlc3NlcyA9IGJpdGdvIG9yZGVyIGlmIHdlIGFyZSBpbiBXUFxuICAgIC8vIGZyb21BZGRyZXNzZXMgPSBvbmNoYWluIG9yZGVyIGlmIHdlIGFyZSBpbiBmcm9tXG4gICAgY29uc3QgYml0Z29BZGRyZXNzZXMgPSB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzLm1hcCgoYikgPT5cbiAgICAgIHV0aWxzLmFkZHJlc3NUb1N0cmluZyh0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLmhycCwgdGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5hbGlhcywgYilcbiAgICApO1xuXG4gICAgLypcbiAgICBBID0gdXNlciBrZXlcbiAgICBCID0gaHNtIGtleVxuICAgIEMgPSBiYWNrdXAga2V5XG4gICAgYml0Z29BZGRyZXNzZXMgPSBiaXRnbyBhZGRyZXNzZXMgWyBBLCBCLCBDIF1cbiAgICB1dHhvLmFkZHJlc3NlcyA9IElNUyBhZGRyZXNzZXMgWyBCLCBDLCBBIF1cbiAgICB1dHhvLmFkZHJlc3Nlc0luZGV4ID0gWyAyLCAwLCAxIF1cbiAgICB3ZSBwaWNrIDAsIDEgZm9yIG5vbi1yZWNvdmVyeVxuICAgIHdlIHBpY2sgMSwgMiBmb3IgcmVjb3ZlcnlcbiAgICAqL1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmZvckVhY2goKHV0eG8pID0+IHtcbiAgICAgIC8vIGluIFdQLCBvdXRwdXQuYWRkcmVzc2VzSW5kZXggaXMgZW1wdHksIHNvIGZpbGwgaXRcbiAgICAgIGlmICghdXR4by5hZGRyZXNzZXNJbmRleCB8fCB1dHhvLmFkZHJlc3Nlc0luZGV4Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB1dHhvLmFkZHJlc3Nlc0luZGV4ID0gYml0Z29BZGRyZXNzZXMubWFwKChhKSA9PiB1dHhvLmFkZHJlc3Nlcy5pbmRleE9mKGEpKTtcbiAgICAgIH1cbiAgICAgIC8vIGluIE9WQywgb3V0cHV0LmFkZHJlc3Nlc0luZGV4IGlzIGRlZmluZWQgY29ycmVjdGx5IGZyb20gdGhlIHByZXZpb3VzIGl0ZXJhdGlvblxuICAgIH0pO1xuXG4gICAgLy8gdmFsaWRhdGUgdGhlIHV0eG9zXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MuZm9yRWFjaCgodXR4bykgPT4ge1xuICAgICAgaWYgKCF1dHhvKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1V0eG8gaXMgdW5kZWZpbmVkJyk7XG4gICAgICB9XG4gICAgICAvLyBhZGRyZXNzZXNJbmRleCBzaG91bGQgbmV2ZSBoYXZlIGEgbWlzbWF0Y2hcbiAgICAgIGlmICh1dHhvLmFkZHJlc3Nlc0luZGV4Py5pbmNsdWRlcygtMSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQWRkcmVzc2VzIGFyZSBpbmNvbnNpc3RlbnQnKTtcbiAgICAgIH1cbiAgICAgIGlmICh1dHhvLnRocmVzaG9sZCAhPT0gdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RocmVzaG9sZCBpcyBpbmNvbnNpc3RlbnQnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIGlmIHdlIGFyZSBpbiBPVkMsIG5vbmUgb2YgdGhlIHV0eG9zIHdpbGwgaGF2ZSBhZGRyZXNzZXMgc2luY2UgdGhleSBjb21lIGZyb21cbiAgICAvLyBkZXNlcmlhbGl6ZWQgaW5wdXRzICh3aGljaCBkb24ndCBoYXZlIGFkZHJlc3NlcyksIG5vdCB0aGUgSU1TXG4gICAgY29uc3QgYnVpbGRPdXRwdXRzID0gdGhpcy50cmFuc2FjdGlvbi5fdXR4b3NbMF0uYWRkcmVzc2VzLmxlbmd0aCAhPT0gMDtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmZvckVhY2goKHV0eG8sIGkpID0+IHtcbiAgICAgIGlmICh1dHhvLm91dHB1dElEID09PSBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0KSB7XG4gICAgICAgIGNvbnN0IHR4aWRCdWYgPSB1dGlscy5jYjU4RGVjb2RlKHV0eG8udHhpZCk7XG4gICAgICAgIGNvbnN0IGFtdDogQk4gPSBuZXcgQk4odXR4by5hbW91bnQpO1xuICAgICAgICBjb25zdCBvdXRwdXRpZHggPSB1dGlscy5jYjU4RGVjb2RlKHV0eG8ub3V0cHV0aWR4KTtcbiAgICAgICAgY29uc3QgYWRkcmVzc2VzSW5kZXggPSB1dHhvLmFkZHJlc3Nlc0luZGV4ID8/IFtdO1xuXG4gICAgICAgIC8vIGVpdGhlciB1c2VyICgwKSBvciByZWNvdmVyeSAoMilcbiAgICAgICAgY29uc3QgZmlyc3RJbmRleCA9IHRoaXMucmVjb3ZlclNpZ25lciA/IDIgOiAwO1xuICAgICAgICBjb25zdCBiaXRnb0luZGV4ID0gMTtcbiAgICAgICAgY3VycmVudFRvdGFsID0gY3VycmVudFRvdGFsLmFkZChhbXQpO1xuXG4gICAgICAgIGNvbnN0IHNlY3BUcmFuc2ZlcklucHV0ID0gbmV3IFNFQ1BUcmFuc2ZlcklucHV0KGFtdCk7XG5cbiAgICAgICAgaWYgKCFidWlsZE91dHB1dHMpIHtcbiAgICAgICAgICBhZGRyZXNzZXNJbmRleC5mb3JFYWNoKChpKSA9PiBzZWNwVHJhbnNmZXJJbnB1dC5hZGRTaWduYXR1cmVJZHgoaSwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tpXSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGlmIHVzZXIvYmFja3VwID4gYml0Z29cbiAgICAgICAgICBpZiAoYWRkcmVzc2VzSW5kZXhbYml0Z29JbmRleF0gPCBhZGRyZXNzZXNJbmRleFtmaXJzdEluZGV4XSkge1xuICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2JpdGdvSW5kZXhdKTtcbiAgICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0LmFkZFNpZ25hdHVyZUlkeChhZGRyZXNzZXNJbmRleFtmaXJzdEluZGV4XSwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XSk7XG4gICAgICAgICAgICBjcmVkZW50aWFscy5wdXNoKFxuICAgICAgICAgICAgICBTZWxlY3RDcmVkZW50aWFsQ2xhc3MoXG4gICAgICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuZ2V0Q3JlZGVudGlhbElEKCksIC8vIDlcbiAgICAgICAgICAgICAgICBbJycsIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbZmlyc3RJbmRleF0udG9TdHJpbmcoJ2hleCcpXS5tYXAodXRpbHMuY3JlYXRlU2lnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5hZGRTaWduYXR1cmVJZHgoYWRkcmVzc2VzSW5kZXhbZmlyc3RJbmRleF0sIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbZmlyc3RJbmRleF0pO1xuICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2JpdGdvSW5kZXhdKTtcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzLnB1c2goXG4gICAgICAgICAgICAgIFNlbGVjdENyZWRlbnRpYWxDbGFzcyhcbiAgICAgICAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5nZXRDcmVkZW50aWFsSUQoKSxcbiAgICAgICAgICAgICAgICBbdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XS50b1N0cmluZygnaGV4JyksICcnXS5tYXAodXRpbHMuY3JlYXRlU2lnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlucHV0OiBUcmFuc2ZlcmFibGVJbnB1dCA9IG5ldyBUcmFuc2ZlcmFibGVJbnB1dChcbiAgICAgICAgICB0eGlkQnVmLFxuICAgICAgICAgIG91dHB1dGlkeCxcbiAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLFxuICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0XG4gICAgICAgICk7XG4gICAgICAgIGlucHV0cy5wdXNoKGlucHV0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChidWlsZE91dHB1dHMpIHtcbiAgICAgIGlmIChjdXJyZW50VG90YWwubHQodG90YWxUYXJnZXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgYFV0eG8gb3V0cHV0cyBnZXQgJHtjdXJyZW50VG90YWwudG9TdHJpbmcoKX0gYW5kICR7dG90YWxUYXJnZXQudG9TdHJpbmcoKX0gaXMgcmVxdWlyZWRgXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRUb3RhbC5ndCh0b3RhbFRhcmdldCkpIHtcbiAgICAgICAgb3V0cHV0cy5wdXNoKFxuICAgICAgICAgIG5ldyBUcmFuc2ZlcmFibGVPdXRwdXQoXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLFxuICAgICAgICAgICAgbmV3IFNFQ1BUcmFuc2Zlck91dHB1dChcbiAgICAgICAgICAgICAgY3VycmVudFRvdGFsLnN1Yih0b3RhbFRhcmdldCksXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMsXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLFxuICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGRcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGdldCBvdXRwdXRzIGFuZCBjcmVkZW50aWFscyBmcm9tIHRoZSBkZXNlcmlhbGl6ZWQgdHJhbnNhY3Rpb24gaWYgd2UgYXJlIGluIE9WQ1xuICAgIHJldHVybiB7XG4gICAgICBpbnB1dHMsXG4gICAgICBvdXRwdXRzOiAhYnVpbGRPdXRwdXRzID8gKHRoaXMudHJhbnNhY3Rpb24uYXZheFBUcmFuc2FjdGlvbiBhcyBQVk1CYXNlVHgpLmdldE91dHMoKSA6IG91dHB1dHMsXG4gICAgICBjcmVkZW50aWFsczogY3JlZGVudGlhbHMubGVuZ3RoID09PSAwID8gdGhpcy50cmFuc2FjdGlvbi5jcmVkZW50aWFscyA6IGNyZWRlbnRpYWxzLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdG9yVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9kZWxlZ2F0b3JUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQTRGO0FBRTVGLDZEQUEwRDtBQUMxRCwrREFhd0M7QUFDeEMseUNBQXlDO0FBQ3pDLG1DQUFnRTtBQUNoRSxvREFBNEI7QUFFNUIsNkNBQTRDO0FBRTVDLE1BQWEsa0JBQW1CLFNBQVEsdUNBQWtCO0lBTXhEOzs7T0FHRztJQUNILFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUEyQixDQUFDO1FBQ3ZELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxjQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLFlBQVksQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZUFBZSxDQUFDLE9BQTBCO1FBQ3hDLE1BQU0sZUFBZSxHQUFHLE9BQU8sWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdH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QUMsVUFBVSxDQUM1QixDQUNGLENBQ0YsQ0FBQzthQUNIO1NBQ0Y7UUFDRCxpRkFBaUY7UUFDakYsT0FBTztZQUNMLE1BQU07WUFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQThCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFDN0YsV0FBVyxFQUFFLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVztTQUNuRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBMVdELGdEQTBXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgTm90U3VwcG9ydGVkLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBBdmFsYW5jaGVOZXR3b3JrLCBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQge1xuICBBZGREZWxlZ2F0b3JUeCxcbiAgQmFzZVR4IGFzIFBWTUJhc2VUeCxcbiAgUGFyc2VhYmxlT3V0cHV0LFxuICBQbGF0Zm9ybVZNQ29uc3RhbnRzLFxuICBTRUNQT3duZXJPdXRwdXQsXG4gIFNFQ1BUcmFuc2ZlcklucHV0LFxuICBTRUNQVHJhbnNmZXJPdXRwdXQsXG4gIFNlbGVjdENyZWRlbnRpYWxDbGFzcyxcbiAgVHJhbnNmZXJhYmxlSW5wdXQsXG4gIFRyYW5zZmVyYWJsZU91dHB1dCxcbiAgVHggYXMgUFZNVHgsXG4gIFVuc2lnbmVkVHgsXG59IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvcGxhdGZvcm12bSc7XG5pbXBvcnQgeyBCaW5Ub29scywgQk4gfSBmcm9tICdhdmFsYW5jaGUnO1xuaW1wb3J0IHsgU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCwgVHgsIEJhc2VUeCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQ3JlZGVudGlhbCB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2NvbW1vbic7XG5pbXBvcnQgeyByZWNvdmVyVXR4b3MgfSBmcm9tICcuL3V0eG9FbmdpbmUnO1xuXG5leHBvcnQgY2xhc3MgRGVsZWdhdG9yVHhCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9ub2RlSUQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9zdGFydFRpbWU6IEJOO1xuICBwcm90ZWN0ZWQgX2VuZFRpbWU6IEJOO1xuICBwcm90ZWN0ZWQgX3N0YWtlQW1vdW50OiBCTjtcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGNvaW5Db25maWdcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgY29uc3QgbmV0d29yayA9IGNvaW5Db25maWcubmV0d29yayBhcyBBdmFsYW5jaGVOZXR3b3JrO1xuICAgIHRoaXMuX3N0YWtlQW1vdW50ID0gbmV3IEJOKG5ldHdvcmsubWluU3Rha2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0cmFuc2FjdGlvbiB0eXBlXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5BZGREZWxlZ2F0b3I7XG4gIH1cblxuICAvKipcbiAgICogQWRkcmVzc2VzIHdoZXJlIHJld2FyZCBzaG91bGQgYmUgZGVwb3NpdFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBhZGRyZXNzIC0gc2luZ2xlIGFkZHJlc3Mgb3IgYXJyYXkgb2YgYWRkcmVzc2VzIHRvIHJlY2VpdmUgcmV3YXJkc1xuICAgKi9cbiAgcmV3YXJkQWRkcmVzc2VzKGFkZHJlc3M6IHN0cmluZyB8IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgY29uc3QgcmV3YXJkQWRkcmVzc2VzID0gYWRkcmVzcyBpbnN0YW5jZW9mIEFycmF5ID8gYWRkcmVzcyA6IFthZGRyZXNzXTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMgPSByZXdhcmRBZGRyZXNzZXMubWFwKHV0aWxzLnBhcnNlQWRkcmVzcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIG5vZGVJRFxuICAgKi9cbiAgbm9kZUlEKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTm9kZUlEKHZhbHVlKTtcbiAgICB0aGlzLl9ub2RlSUQgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBzdGFydCB0aW1lIG9mIHN0YWtpbmcgcGVyaW9kXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgc3RhcnRUaW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBuZXcgQk4odmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIGVuZCB0aW1lIG9mIHN0YWtpbmcgcGVyaW9kXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgZW5kVGltZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5fZW5kVGltZSA9IG5ldyBCTih2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBzdGFrZUFtb3VudCh2YWx1ZTogQk4gfCBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCB2YWx1ZUJOID0gQk4uaXNCTih2YWx1ZSkgPyB2YWx1ZSA6IG5ldyBCTih2YWx1ZSk7XG4gICAgdGhpcy52YWxpZGF0ZVN0YWtlQW1vdW50KHZhbHVlQk4pO1xuICAgIHRoaXMuX3N0YWtlQW1vdW50ID0gdmFsdWVCTjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG4gIC8qKlxuICAgKiB2YWxpZGF0ZXMgYSBjb3JyZWN0IE5vZGVJRCBpcyB1c2VkXG4gICAqIEBwYXJhbSBub2RlSURcbiAgICovXG4gIHZhbGlkYXRlTm9kZUlEKG5vZGVJRDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFub2RlSUQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3Npbmcgbm9kZUlEJyk7XG4gICAgfVxuICAgIGlmIChub2RlSUQuc2xpY2UoMCwgNikgIT09ICdOb2RlSUQnKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBpbnZhbGlkIE5vZGVJRCB0YWcnKTtcbiAgICB9XG4gICAgY29uc3QgYmludG9vbHMgPSBCaW5Ub29scy5nZXRJbnN0YW5jZSgpO1xuICAgIGlmICghKGJpbnRvb2xzLmI1OFRvQnVmZmVyKG5vZGVJRC5zbGljZSg3KSkubGVuZ3RoID09PSAyNCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IE5vZGVJRCBpcyBub3QgaW4gY2I1OCBmb3JtYXQnKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqICAgcHJvdGVjdGVkIF9zdGFydFRpbWU6IERhdGU7XG4gICAqICAgcHJvdGVjdGVkIF9lbmRUaW1lOiBEYXRlO1xuICAgKiAgIDIgd2Vla3MgPSAxMjA5NjAwXG4gICAqICAgMSB5ZWFyID0gMzE1NTY5MjZcbiAgICogICB1bml4IHRpbWUgc3RhbXAgYmFzZWQgb2ZmIHNlY29uZHNcbiAgICovXG4gIHZhbGlkYXRlU3Rha2VEdXJhdGlvbihzdGFydFRpbWU6IEJOLCBlbmRUaW1lOiBCTik6IHZvaWQge1xuICAgIGNvbnN0IG9uZURheUxhdGVyID0gbmV3IEJOKERhdGUubm93KCkpLmFkZChuZXcgQk4oODY0MDApKTtcbiAgICBpZiAoIXN0YXJ0VGltZS5ndChvbmVEYXlMYXRlcikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1N0YXJ0IHRpbWUgbmVlZHMgdG8gYmUgb25lIGRheSBncmVhdGVyIHRoYW4gY3VycmVudCB0aW1lJyk7XG4gICAgfVxuICAgIGlmIChlbmRUaW1lIDwgc3RhcnRUaW1lKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgZGF0ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHN0YXJ0IGRhdGUnKTtcbiAgICB9XG4gICAgaWYgKHN0YXJ0VGltZS5hZGQobmV3IEJOKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsubWluU3Rha2VEdXJhdGlvbikpLmd0KGVuZFRpbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgZGF0ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0d28gd2Vla3MnKTtcbiAgICB9XG4gICAgaWYgKGVuZFRpbWUuZ3Qoc3RhcnRUaW1lLmFkZChuZXcgQk4odGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5tYXhTdGFrZUR1cmF0aW9uKSkpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgZGF0ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBvbmUgeWVhcicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gYW1vdW50XG4gICAqL1xuICB2YWxpZGF0ZVN0YWtlQW1vdW50KGFtb3VudDogQk4pOiB2b2lkIHtcbiAgICBjb25zdCBtaW5TdGFrZSA9IG5ldyBCTih0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLm1pblN0YWtlKTtcbiAgICBpZiAoYW1vdW50Lmx0KG1pblN0YWtlKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWluaW11bSBzdGFraW5nIGFtb3VudCBpcyAnICsgTnVtYmVyKG1pblN0YWtlKSAvIDEwMDAwMDAwMDAgKyAnIEFWQVguJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUeCk6IHRoaXMge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBjb25zdCBiYXNlVHg6IEJhc2VUeCA9IHR4LmdldFVuc2lnbmVkVHgoKS5nZXRUcmFuc2FjdGlvbigpO1xuICAgIGlmICghdGhpcy52ZXJpZnlUeFR5cGUoYmFzZVR4KSkge1xuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnVHJhbnNhY3Rpb24gY2Fubm90IGJlIHBhcnNlZCBvciBoYXMgYW4gdW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgIH1cbiAgICAvLyBUaGUgU3Rha2VPdXRzIGlzIGEge0BsaW5rIHN0YWtlVHJhbnNmZXJPdXR9IHJlc3VsdC5cbiAgICAvLyBJdCdzIGV4cGVjdGVkIHRvIGhhdmUgb25seSBvbmUgb3V0cHV0cyB3aXRoIHRoZSBhZGRyZXNzZXMgb2YgdGhlIHNlbmRlci5cbiAgICBjb25zdCBvdXRwdXRzID0gYmFzZVR4LmdldFN0YWtlT3V0cygpO1xuICAgIGlmIChvdXRwdXRzLmxlbmd0aCAhPSAxKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBjYW4gaGF2ZSBvbmUgZXh0ZXJuYWwgb3V0cHV0Jyk7XG4gICAgfVxuICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbMF07XG4gICAgaWYgKCFvdXRwdXQuZ2V0QXNzZXRJRCgpLmVxdWFscyh0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXNzZXQgSUQgb2YgdGhlIG91dHB1dCBkb2VzIG5vdCBtYXRjaCB0aGUgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3Qgc2VjcE91dCA9IG91dHB1dC5nZXRPdXRwdXQoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9sb2NrdGltZSA9IHNlY3BPdXQuZ2V0TG9ja3RpbWUoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQgPSBzZWNwT3V0LmdldFRocmVzaG9sZCgpO1xuICAgIC8vIG91dHB1dCBhZGRyZXNzZXMgYXJlIHRoZSBzZW5kZXIgYWRkcmVzc2VzXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyA9IHNlY3BPdXQuZ2V0QWRkcmVzc2VzKCk7XG4gICAgdGhpcy5fbm9kZUlEID0gYmFzZVR4LmdldE5vZGVJRFN0cmluZygpO1xuICAgIHRoaXMuX3N0YXJ0VGltZSA9IGJhc2VUeC5nZXRTdGFydFRpbWUoKTtcbiAgICB0aGlzLl9lbmRUaW1lID0gYmFzZVR4LmdldEVuZFRpbWUoKTtcbiAgICB0aGlzLl9zdGFrZUFtb3VudCA9IGJhc2VUeC5nZXRTdGFrZUFtb3VudCgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zID0gcmVjb3ZlclV0eG9zKGJhc2VUeC5nZXRJbnMoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdGF0aWMgdmVyaWZ5VHhUeXBlKGJhc2VUeDogQmFzZVR4KTogYmFzZVR4IGlzIEFkZERlbGVnYXRvclR4IHtcbiAgICByZXR1cm4gYmFzZVR4LmdldFR5cGVJRCgpID09PSBQbGF0Zm9ybVZNQ29uc3RhbnRzLkFERFZBTElEQVRPUlRYO1xuICB9XG5cbiAgdmVyaWZ5VHhUeXBlKGJhc2VUeDogQmFzZVR4KTogYmFzZVR4IGlzIEFkZERlbGVnYXRvclR4IHtcbiAgICByZXR1cm4gRGVsZWdhdG9yVHhCdWlsZGVyLnZlcmlmeVR4VHlwZShiYXNlVHgpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZEF2YXhUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlU3Rha2VEdXJhdGlvbih0aGlzLl9zdGFydFRpbWUsIHRoaXMuX2VuZFRpbWUpO1xuICAgIGNvbnN0IHsgaW5wdXRzLCBvdXRwdXRzLCBjcmVkZW50aWFscyB9ID0gdGhpcy5jcmVhdGVJbnB1dE91dHB1dCgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24oXG4gICAgICBuZXcgUFZNVHgoXG4gICAgICAgIG5ldyBVbnNpZ25lZFR4KFxuICAgICAgICAgIG5ldyBBZGREZWxlZ2F0b3JUeChcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmtJRCxcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRCxcbiAgICAgICAgICAgIG91dHB1dHMsXG4gICAgICAgICAgICBpbnB1dHMsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9tZW1vLFxuICAgICAgICAgICAgdXRpbHMuTm9kZUlEU3RyaW5nVG9CdWZmZXIodGhpcy5fbm9kZUlEKSxcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0VGltZSxcbiAgICAgICAgICAgIHRoaXMuX2VuZFRpbWUsXG4gICAgICAgICAgICB0aGlzLl9zdGFrZUFtb3VudCxcbiAgICAgICAgICAgIFt0aGlzLnN0YWtlVHJhbnNmZXJPdXQoKV0sXG4gICAgICAgICAgICB0aGlzLnJld2FyZE93bmVyc091dHB1dCgpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBjcmVkZW50aWFsc1xuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBTdGFrZU91dCB3aGVyZSB0aGUgcmVjaXBpZW50IGFkZHJlc3MgYXJlIHRoZSBzZW5kZXIuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICpcbiAgICovXG4gIHByb3RlY3RlZCBzdGFrZVRyYW5zZmVyT3V0KCk6IFRyYW5zZmVyYWJsZU91dHB1dCB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2ZlcmFibGVPdXRwdXQoXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLFxuICAgICAgbmV3IFNFQ1BUcmFuc2Zlck91dHB1dChcbiAgICAgICAgdGhpcy5fc3Rha2VBbW91bnQsXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMsXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLFxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGRcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJld2FyZE93bmVyc091dHB1dCgpOiBQYXJzZWFibGVPdXRwdXQge1xuICAgIC8vIGlmIHRoZXJlIGFyZSBubyByZXdhcmQgYWRkcmVzc2VzLCB0aGUgc2VuZGVyIGdldHMgdGhlIHJld2FyZHNcbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uX3Jld2FyZEFkZHJlc3NlcyB8fCB0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMgPSB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUGFyc2VhYmxlT3V0cHV0KFxuICAgICAgbmV3IFNFQ1BPd25lck91dHB1dCh0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMsIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLCB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgbXVzdCBiZSAyIGFuZCBzaW5jZSBvdXRwdXQgYWx3YXlzIGdldCByZW9yZGVyZWQgd2Ugd2FudCB0byBtYWtlIHN1cmUgd2UgY2FuIGFsd2F5cyBhZGQgc2lnbmF0dXJlcyBpbiB0aGUgY29ycmVjdCBsb2NhdGlvblxuICAgKiBUbyBmaW5kIHRoZSBjb3JyZWN0IGxvY2F0aW9uIGZvciB0aGUgc2lnbmF0dXJlLCB3ZSB1c2UgdGhlIG91cHV0J3MgYWRkcmVzc2VzIHRvIGNyZWF0ZSB0aGUgc2lnbmF0dXJlSWR4IGluIHRoZSBvcmRlciB0aGF0IHdlIGRlc2lyZVxuICAgKiAwOiB1c2VyIGtleSwgMTogaHNtIGtleSwgMjogcmVjb3Zlcnkga2V5XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVJbnB1dE91dHB1dCgpOiB7XG4gICAgaW5wdXRzOiBUcmFuc2ZlcmFibGVJbnB1dFtdO1xuICAgIG91dHB1dHM6IFRyYW5zZmVyYWJsZU91dHB1dFtdO1xuICAgIGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW107XG4gIH0ge1xuICAgIGNvbnN0IGlucHV0czogVHJhbnNmZXJhYmxlSW5wdXRbXSA9IFtdO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zZmVyYWJsZU91dHB1dFtdID0gW107XG5cbiAgICAvLyBhbW91bnQgc3BlbnQgc28gZmFyXG4gICAgbGV0IGN1cnJlbnRUb3RhbDogQk4gPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBkZWxlZ2F0aW5nIGFuZCB2YWxpZGF0aW5nIGhhdmUgbm8gZmVlc1xuICAgIGNvbnN0IHRvdGFsVGFyZ2V0ID0gdGhpcy5fc3Rha2VBbW91bnQuY2xvbmUoKTtcblxuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW10gPSBbXTtcblxuICAgIC8vIGNvbnZlcnQgZnJvbUFkZHJlc3NlcyB0byBzdHJpbmdcbiAgICAvLyBmcm9tQWRkcmVzc2VzID0gYml0Z28gb3JkZXIgaWYgd2UgYXJlIGluIFdQXG4gICAgLy8gZnJvbUFkZHJlc3NlcyA9IG9uY2hhaW4gb3JkZXIgaWYgd2UgYXJlIGluIGZyb21cbiAgICBjb25zdCBiaXRnb0FkZHJlc3NlcyA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMubWFwKChiKSA9PlxuICAgICAgdXRpbHMuYWRkcmVzc1RvU3RyaW5nKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsuaHJwLCB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLmFsaWFzLCBiKVxuICAgICk7XG5cbiAgICAvKlxuICAgIEEgPSB1c2VyIGtleVxuICAgIEIgPSBoc20ga2V5XG4gICAgQyA9IGJhY2t1cCBrZXlcbiAgICBiaXRnb0FkZHJlc3NlcyA9IGJpdGdvIGFkZHJlc3NlcyBbIEEsIEIsIEMgXVxuICAgIHV0eG8uYWRkcmVzc2VzID0gSU1TIGFkZHJlc3NlcyBbIEIsIEMsIEEgXVxuICAgIHV0eG8uYWRkcmVzc2VzSW5kZXggPSBbIDIsIDAsIDEgXVxuICAgIHdlIHBpY2sgMCwgMSBmb3Igbm9uLXJlY292ZXJ5XG4gICAgd2UgcGljayAxLCAyIGZvciByZWNvdmVyeVxuICAgICovXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MuZm9yRWFjaCgodXR4bykgPT4ge1xuICAgICAgLy8gaW4gV1AsIG91dHB1dC5hZGRyZXNzZXNJbmRleCBpcyBlbXB0eSwgc28gZmlsbCBpdFxuICAgICAgaWYgKCF1dHhvLmFkZHJlc3Nlc0luZGV4IHx8IHV0eG8uYWRkcmVzc2VzSW5kZXgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHV0eG8uYWRkcmVzc2VzSW5kZXggPSBiaXRnb0FkZHJlc3Nlcy5tYXAoKGEpID0+IHV0eG8uYWRkcmVzc2VzLmluZGV4T2YoYSkpO1xuICAgICAgfVxuICAgICAgLy8gaW4gT1ZDLCBvdXRwdXQuYWRkcmVzc2VzSW5kZXggaXMgZGVmaW5lZCBjb3JyZWN0bHkgZnJvbSB0aGUgcHJldmlvdXMgaXRlcmF0aW9uXG4gICAgfSk7XG5cbiAgICAvLyB2YWxpZGF0ZSB0aGUgdXR4b3NcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcy5mb3JFYWNoKCh1dHhvKSA9PiB7XG4gICAgICBpZiAoIXV0eG8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVXR4byBpcyB1bmRlZmluZWQnKTtcbiAgICAgIH1cbiAgICAgIC8vIGFkZHJlc3Nlc0luZGV4IHNob3VsZCBuZXZlIGhhdmUgYSBtaXNtYXRjaFxuICAgICAgaWYgKHV0eG8uYWRkcmVzc2VzSW5kZXg/LmluY2x1ZGVzKC0xKSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdBZGRyZXNzZXMgYXJlIGluY29uc2lzdGVudCcpO1xuICAgICAgfVxuICAgICAgaWYgKHV0eG8udGhyZXNob2xkICE9PSB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVGhyZXNob2xkIGlzIGluY29uc2lzdGVudCcpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gaWYgd2UgYXJlIGluIE9WQywgbm9uZSBvZiB0aGUgdXR4b3Mgd2lsbCBoYXZlIGFkZHJlc3NlcyBzaW5jZSB0aGV5IGNvbWUgZnJvbVxuICAgIC8vIGRlc2VyaWFsaXplZCBpbnB1dHMgKHdoaWNoIGRvbid0IGhhdmUgYWRkcmVzc2VzKSwgbm90IHRoZSBJTVNcbiAgICBjb25zdCBidWlsZE91dHB1dHMgPSB0aGlzLnRyYW5zYWN0aW9uLl91dHhvc1swXS5hZGRyZXNzZXMubGVuZ3RoICE9PSAwO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MuZm9yRWFjaCgodXR4bywgaSkgPT4ge1xuICAgICAgaWYgKHV0eG8ub3V0cHV0SUQgPT09IFNFQ1AyNTZLMV9UcmFuc2Zlcl9PdXRwdXQpIHtcbiAgICAgICAgY29uc3QgdHhpZEJ1ZiA9IHV0aWxzLmNiNThEZWNvZGUodXR4by50eGlkKTtcbiAgICAgICAgY29uc3QgYW10OiBCTiA9IG5ldyBCTih1dHhvLmFtb3VudCk7XG4gICAgICAgIGNvbnN0IG91dHB1dGlkeCA9IHV0aWxzLmNiNThEZWNvZGUodXR4by5vdXRwdXRpZHgpO1xuICAgICAgICBjb25zdCBhZGRyZXNzZXNJbmRleCA9IHV0eG8uYWRkcmVzc2VzSW5kZXggPz8gW107XG5cbiAgICAgICAgLy8gZWl0aGVyIHVzZXIgKDApIG9yIHJlY292ZXJ5ICgyKVxuICAgICAgICBjb25zdCBmaXJzdEluZGV4ID0gdGhpcy5yZWNvdmVyU2lnbmVyID8gMiA6IDA7XG4gICAgICAgIGNvbnN0IGJpdGdvSW5kZXggPSAxO1xuICAgICAgICBjdXJyZW50VG90YWwgPSBjdXJyZW50VG90YWwuYWRkKGFtdCk7XG5cbiAgICAgICAgY29uc3Qgc2VjcFRyYW5zZmVySW5wdXQgPSBuZXcgU0VDUFRyYW5zZmVySW5wdXQoYW10KTtcblxuICAgICAgICBpZiAoIWJ1aWxkT3V0cHV0cykge1xuICAgICAgICAgIGFkZHJlc3Nlc0luZGV4LmZvckVhY2goKGkpID0+IHNlY3BUcmFuc2ZlcklucHV0LmFkZFNpZ25hdHVyZUlkeChpLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2ldKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gaWYgdXNlci9iYWNrdXAgPiBiaXRnb1xuICAgICAgICAgIGlmIChhZGRyZXNzZXNJbmRleFtiaXRnb0luZGV4XSA8IGFkZHJlc3Nlc0luZGV4W2ZpcnN0SW5kZXhdKSB7XG4gICAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5hZGRTaWduYXR1cmVJZHgoYWRkcmVzc2VzSW5kZXhbYml0Z29JbmRleF0sIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbYml0Z29JbmRleF0pO1xuICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4W2ZpcnN0SW5kZXhdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2ZpcnN0SW5kZXhdKTtcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzLnB1c2goXG4gICAgICAgICAgICAgIFNlbGVjdENyZWRlbnRpYWxDbGFzcyhcbiAgICAgICAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5nZXRDcmVkZW50aWFsSUQoKSwgLy8gOVxuICAgICAgICAgICAgICAgIFsnJywgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XS50b1N0cmluZygnaGV4JyldLm1hcCh1dGlscy5jcmVhdGVTaWcpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0LmFkZFNpZ25hdHVyZUlkeChhZGRyZXNzZXNJbmRleFtmaXJzdEluZGV4XSwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XSk7XG4gICAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5hZGRTaWduYXR1cmVJZHgoYWRkcmVzc2VzSW5kZXhbYml0Z29JbmRleF0sIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbYml0Z29JbmRleF0pO1xuICAgICAgICAgICAgY3JlZGVudGlhbHMucHVzaChcbiAgICAgICAgICAgICAgU2VsZWN0Q3JlZGVudGlhbENsYXNzKFxuICAgICAgICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0LmdldENyZWRlbnRpYWxJRCgpLFxuICAgICAgICAgICAgICAgIFt0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2ZpcnN0SW5kZXhdLnRvU3RyaW5nKCdoZXgnKSwgJyddLm1hcCh1dGlscy5jcmVhdGVTaWcpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5wdXQ6IFRyYW5zZmVyYWJsZUlucHV0ID0gbmV3IFRyYW5zZmVyYWJsZUlucHV0KFxuICAgICAgICAgIHR4aWRCdWYsXG4gICAgICAgICAgb3V0cHV0aWR4LFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQsXG4gICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXRcbiAgICAgICAgKTtcbiAgICAgICAgaW5wdXRzLnB1c2goaW5wdXQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGJ1aWxkT3V0cHV0cykge1xuICAgICAgaWYgKGN1cnJlbnRUb3RhbC5sdCh0b3RhbFRhcmdldCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICBgVXR4byBvdXRwdXRzIGdldCAke2N1cnJlbnRUb3RhbC50b1N0cmluZygpfSBhbmQgJHt0b3RhbFRhcmdldC50b1N0cmluZygpfSBpcyByZXF1aXJlZGBcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudFRvdGFsLmd0KHRvdGFsVGFyZ2V0KSkge1xuICAgICAgICBvdXRwdXRzLnB1c2goXG4gICAgICAgICAgbmV3IFRyYW5zZmVyYWJsZU91dHB1dChcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQsXG4gICAgICAgICAgICBuZXcgU0VDUFRyYW5zZmVyT3V0cHV0KFxuICAgICAgICAgICAgICBjdXJyZW50VG90YWwuc3ViKHRvdGFsVGFyZ2V0KSxcbiAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyxcbiAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fbG9ja3RpbWUsXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZFxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gZ2V0IG91dHB1dHMgYW5kIGNyZWRlbnRpYWxzIGZyb20gdGhlIGRlc2VyaWFsaXplZCB0cmFuc2FjdGlvbiBpZiB3ZSBhcmUgaW4gT1ZDXG4gICAgcmV0dXJuIHtcbiAgICAgIGlucHV0cyxcbiAgICAgIG91dHB1dHM6ICFidWlsZE91dHB1dHMgPyAodGhpcy50cmFuc2FjdGlvbi5hdmF4UFRyYW5zYWN0aW9uIGFzIFBWTUJhc2VUeCkuZ2V0T3V0cygpIDogb3V0cHV0cyxcbiAgICAgIGNyZWRlbnRpYWxzOiBjcmVkZW50aWFscy5sZW5ndGggPT09IDAgPyB0aGlzLnRyYW5zYWN0aW9uLmNyZWRlbnRpYWxzIDogY3JlZGVudGlhbHMsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/// <reference types="bn.js" />
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { TransactionType } from '@bitgo-beta/sdk-core';
|
|
4
|
+
import { ExportTx } from 'avalanche/dist/apis/evm';
|
|
5
|
+
import { BN } from 'avalanche';
|
|
6
|
+
import { Transaction } from './transaction';
|
|
7
|
+
import { Tx, BaseTx, DecodedUtxoObj } from './iface';
|
|
8
|
+
import { AtomicInCTransactionBuilder } from './atomicInCTransactionBuilder';
|
|
9
|
+
export declare class ExportInCTxBuilder extends AtomicInCTransactionBuilder {
|
|
10
|
+
private _amount;
|
|
11
|
+
private _nonce;
|
|
12
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
13
|
+
/**
|
|
14
|
+
* Utxos are not required in Export Tx in C-Chain.
|
|
15
|
+
* Override utxos to prevent used by throwing a error.
|
|
16
|
+
*
|
|
17
|
+
* @param {DecodedUtxoObj[]} value ignored
|
|
18
|
+
*/
|
|
19
|
+
utxos(value: DecodedUtxoObj[]): this;
|
|
20
|
+
/**
|
|
21
|
+
* Amount is a long that specifies the quantity of the asset that this output owns. Must be positive.
|
|
22
|
+
* The transaction output amount add a fixed fee that will be paid upon import.
|
|
23
|
+
*
|
|
24
|
+
* @param {BN | string} amount The withdrawal amount
|
|
25
|
+
*/
|
|
26
|
+
amount(amount: BN | string): this;
|
|
27
|
+
/**
|
|
28
|
+
* Set the nonce of C-Chain sender address
|
|
29
|
+
*
|
|
30
|
+
* @param {number | string} nonce - number that can be only used once
|
|
31
|
+
*/
|
|
32
|
+
nonce(nonce: number | string): this;
|
|
33
|
+
/**
|
|
34
|
+
* Export tx target P wallet.
|
|
35
|
+
*
|
|
36
|
+
* @param pAddresses
|
|
37
|
+
*/
|
|
38
|
+
to(pAddresses: string | string[]): this;
|
|
39
|
+
protected get transactionType(): TransactionType;
|
|
40
|
+
initBuilder(tx: Tx): this;
|
|
41
|
+
static verifyTxType(baseTx: BaseTx): baseTx is ExportTx;
|
|
42
|
+
verifyTxType(baseTx: BaseTx): baseTx is ExportTx;
|
|
43
|
+
/**
|
|
44
|
+
* Build the export in C-chain transaction
|
|
45
|
+
* @protected
|
|
46
|
+
*/
|
|
47
|
+
protected buildAvaxTransaction(): void;
|
|
48
|
+
/** @inheritdoc */
|
|
49
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
50
|
+
/**
|
|
51
|
+
* Check the amount is positive.
|
|
52
|
+
* @param amount
|
|
53
|
+
*/
|
|
54
|
+
validateNonce(nonce: BN): void;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=exportInCTxBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exportInCTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/exportInCTxBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAuC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAKL,QAAQ,EAKT,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,EAAE,EAAwB,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,qBAAa,kBAAmB,SAAQ,2BAA2B;IACjE,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,MAAM,CAAK;gBAEP,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAIpC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI;IAOjC;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOnC;;;;OAIG;IACH,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAMvC,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAgDzB,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,QAAQ;IAIvD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,QAAQ;IAIhD;;;OAGG;IACH,SAAS,CAAC,oBAAoB,IAAI,IAAI;IA6DtC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAOjE;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI;CAK/B"}
|