@bitgo/sdk-coin-flrp 1.8.0 → 1.9.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.
Files changed (30) hide show
  1. package/dist/src/flrp.d.ts +8 -0
  2. package/dist/src/flrp.d.ts.map +1 -1
  3. package/dist/src/flrp.js +43 -1
  4. package/dist/src/lib/iface.d.ts +12 -2
  5. package/dist/src/lib/iface.d.ts.map +1 -1
  6. package/dist/src/lib/iface.js +1 -1
  7. package/dist/src/lib/index.d.ts +1 -0
  8. package/dist/src/lib/index.d.ts.map +1 -1
  9. package/dist/src/lib/index.js +4 -2
  10. package/dist/src/lib/permissionlessDelegatorTxBuilder.d.ts +108 -0
  11. package/dist/src/lib/permissionlessDelegatorTxBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/permissionlessDelegatorTxBuilder.js +268 -0
  13. package/dist/src/lib/transaction.d.ts.map +1 -1
  14. package/dist/src/lib/transaction.js +30 -8
  15. package/dist/src/lib/transactionBuilderFactory.d.ts +6 -0
  16. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  17. package/dist/src/lib/transactionBuilderFactory.js +14 -1
  18. package/dist/src/lib/utils.d.ts +6 -0
  19. package/dist/src/lib/utils.d.ts.map +1 -1
  20. package/dist/src/lib/utils.js +24 -1
  21. package/dist/test/resources/transactionData/delegatorTx.d.ts +83 -0
  22. package/dist/test/resources/transactionData/delegatorTx.d.ts.map +1 -0
  23. package/dist/test/resources/transactionData/delegatorTx.js +77 -0
  24. package/dist/test/unit/flrp.js +72 -1
  25. package/dist/test/unit/lib/permissionlessDelegatorTxBuilder.d.ts +2 -0
  26. package/dist/test/unit/lib/permissionlessDelegatorTxBuilder.d.ts.map +1 -0
  27. package/dist/test/unit/lib/permissionlessDelegatorTxBuilder.js +235 -0
  28. package/dist/test/unit/lib/utils.js +11 -1
  29. package/dist/tsconfig.tsbuildinfo +1 -1
  30. package/package.json +6 -6
@@ -0,0 +1,268 @@
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.PermissionlessDelegatorTxBuilder = void 0;
7
+ const flarejs_1 = require("@flarenetwork/flarejs");
8
+ const sdk_core_1 = require("@bitgo/sdk-core");
9
+ const transactionBuilder_1 = require("./transactionBuilder");
10
+ const utils_1 = __importDefault(require("./utils"));
11
+ /**
12
+ * Builder for AddPermissionlessDelegator transactions on Flare P-Chain.
13
+ *
14
+ * This builder creates delegation transactions where a user delegates stake
15
+ * to an existing validator. Unlike AddPermissionlessValidator:
16
+ * - No BLS keys required
17
+ * - Delegates to an existing validator's nodeID
18
+ * - Rewards go to corresponding C-chain address
19
+ */
20
+ class PermissionlessDelegatorTxBuilder extends transactionBuilder_1.TransactionBuilder {
21
+ constructor(coinConfig) {
22
+ super(coinConfig);
23
+ this.transaction._fee.fee = this.transaction._network.txFee;
24
+ }
25
+ get transactionType() {
26
+ return sdk_core_1.TransactionType.AddPermissionlessDelegator;
27
+ }
28
+ // Validation methods
29
+ validateNodeID(nodeID) {
30
+ if (!nodeID) {
31
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing nodeID');
32
+ }
33
+ if (!nodeID.startsWith('NodeID-')) {
34
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid NodeID tag');
35
+ }
36
+ if (!utils_1.default.isValidNodeID(nodeID)) {
37
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: NodeID is not in cb58 format');
38
+ }
39
+ }
40
+ validateStakeDuration(startTime, endTime) {
41
+ if (endTime < startTime) {
42
+ throw new sdk_core_1.BuildTransactionError('End date cannot be less than start date');
43
+ }
44
+ }
45
+ validateStakeAmount(amount) {
46
+ const minDelegationStake = BigInt(this.transaction._network.minDelegationStake || this.transaction._network.minStake);
47
+ if (amount < minDelegationStake) {
48
+ throw new sdk_core_1.BuildTransactionError('Minimum delegation amount is ' + Number(minDelegationStake) / 1000000000 + ' FLR.');
49
+ }
50
+ }
51
+ // Builder methods
52
+ /**
53
+ *
54
+ * NOTE: On Flare, staking rewards are distributed on C-chain (not P-chain).
55
+ * Rewards go to the C-chain address derived from the same public key as
56
+ * the P-chain staking address. This parameter is passed to the FlareJS API
57
+ * but has NO on-chain effect on reward distribution.
58
+ *
59
+ * @param address P-chain address in Bech32 format (e.g., "P-flare1..." or "P-costwo1...")
60
+ */
61
+ rewardAddress(address) {
62
+ this.transaction._rewardAddresses = [utils_1.default.parseAddress(address)];
63
+ return this;
64
+ }
65
+ /**
66
+ * Set the validator node ID to delegate to
67
+ * @param nodeID Validator node ID in format "NodeID-..."
68
+ */
69
+ nodeID(nodeID) {
70
+ this.validateNodeID(nodeID);
71
+ this._nodeID = nodeID;
72
+ return this;
73
+ }
74
+ /**
75
+ * Set the start time for the delegation period
76
+ * @param value Unix timestamp in seconds
77
+ */
78
+ startTime(value) {
79
+ this._startTime = BigInt(value);
80
+ return this;
81
+ }
82
+ /**
83
+ * Set the end time for the delegation period
84
+ * @param value Unix timestamp in seconds
85
+ */
86
+ endTime(value) {
87
+ this._endTime = BigInt(value);
88
+ return this;
89
+ }
90
+ /**
91
+ * Set the amount to stake/delegate
92
+ * @param value Amount in nanoFLR (wei)
93
+ */
94
+ stakeAmount(value) {
95
+ const valueBigInt = typeof value === 'bigint' ? value : BigInt(value);
96
+ this.validateStakeAmount(valueBigInt);
97
+ this._stakeAmount = valueBigInt;
98
+ return this;
99
+ }
100
+ /**
101
+ * @param feeState Fee state from P-chain
102
+ */
103
+ feeState(feeState) {
104
+ this._feeState = feeState;
105
+ this.transaction._feeState = feeState;
106
+ return this;
107
+ }
108
+ /**
109
+ * Initialize builder from a parsed AddPermissionlessDelegatorTx.
110
+ * Used to reconstruct the builder state from a raw transaction for signing.
111
+ *
112
+ * @param tx The parsed transaction
113
+ * @param rawBytes Optional raw transaction bytes
114
+ * @param parsedCredentials Optional credentials from the parsed transaction
115
+ */
116
+ initBuilder(tx, rawBytes, parsedCredentials) {
117
+ const delegatorTx = tx;
118
+ if (!this.verifyTxType(delegatorTx._type)) {
119
+ throw new sdk_core_1.NotSupported('Transaction cannot be parsed or has an unsupported transaction type');
120
+ }
121
+ // Extract validator info (nodeID, startTime, endTime, weight/stakeAmount)
122
+ const validator = delegatorTx.subnetValidator.validator;
123
+ this._nodeID = validator.nodeId.toString();
124
+ this._startTime = validator.startTime.value();
125
+ this._endTime = validator.endTime.value();
126
+ this._stakeAmount = validator.weight.value();
127
+ // Extract from addresses from stake outputs
128
+ // In delegation transactions, stake outputs contain the owner addresses
129
+ const stakeOutputs = delegatorTx.stake;
130
+ if (stakeOutputs.length > 0) {
131
+ const firstStakeOutput = stakeOutputs[0];
132
+ // Stake outputs use TransferOutput type with outputOwners property
133
+ const transferOutput = firstStakeOutput.output;
134
+ const outputOwners = transferOutput.outputOwners;
135
+ if (outputOwners) {
136
+ this.transaction._threshold = outputOwners.threshold.value();
137
+ this.transaction._fromAddresses = outputOwners.addrs.map((addr) => Buffer.from(addr.toBytes()));
138
+ }
139
+ }
140
+ // Extract reward addresses from delegatorRewardsOwner
141
+ const rewardsOwner = delegatorTx.getDelegatorRewardsOwner();
142
+ if (rewardsOwner && rewardsOwner.addrs && rewardsOwner.addrs.length > 0) {
143
+ this.transaction._rewardAddresses = rewardsOwner.addrs.map((addr) => Buffer.from(addr.toBytes()));
144
+ }
145
+ const credentials = parsedCredentials || [];
146
+ if (rawBytes && credentials.length > 0) {
147
+ this.transaction._rawSignedBytes = rawBytes;
148
+ }
149
+ // Create the UnsignedTx with parsed credentials
150
+ // AddressMaps will be empty as they're computed during signing
151
+ const unsignedTx = new flarejs_1.UnsignedTx(delegatorTx, [], new flarejs_1.utils.AddressMaps([]), credentials);
152
+ this.transaction.setTransaction(unsignedTx);
153
+ return this;
154
+ }
155
+ /**
156
+ * Instance method to verify transaction type
157
+ * @param type TypeSymbol from parsed transaction
158
+ */
159
+ verifyTxType(type) {
160
+ return PermissionlessDelegatorTxBuilder.verifyTxType(type);
161
+ }
162
+ async buildImplementation() {
163
+ this.buildFlareTransaction();
164
+ this.transaction.setTransactionType(this.transactionType);
165
+ if (this.hasSigner()) {
166
+ for (const keyPair of this._signer) {
167
+ await this.transaction.sign(keyPair);
168
+ }
169
+ }
170
+ return this.transaction;
171
+ }
172
+ /**
173
+ * Get the user's address (index 0) for delegation.
174
+ *
175
+ * For delegation transactions, we use only the user key because:
176
+ * 1. On-chain rewards go to the C-chain address derived from the delegator's public key
177
+ * 2. Using the user key ensures rewards go to the user's corresponding C-chain address
178
+ * 3. The user key is at index 0 in the fromAddresses array (BitGo convention: [user, bitgo, backup])
179
+ *
180
+ * @returns Buffer containing the user's address
181
+ * @protected
182
+ */
183
+ getUserAddress() {
184
+ const userIndex = 0;
185
+ if (!this.transaction._fromAddresses || this.transaction._fromAddresses.length <= userIndex) {
186
+ throw new sdk_core_1.BuildTransactionError('User address (index 0) is required for delegation');
187
+ }
188
+ const userAddress = Buffer.from(this.transaction._fromAddresses[userIndex]);
189
+ if (userAddress.length !== 20) {
190
+ throw new sdk_core_1.BuildTransactionError(`Invalid user address length: expected 20 bytes, got ${userAddress.length}`);
191
+ }
192
+ return userAddress;
193
+ }
194
+ /**
195
+ * Build the permissionless delegator transaction using FlareJS.
196
+ * Uses pvm.e.newAddPermissionlessDelegatorTx (post-Etna API).
197
+ *
198
+ * Note: The rewardAddresses parameter is accepted by the API but does NOT affect
199
+ * where rewards are sent on-chain - rewards always go to the C-chain address
200
+ * derived from the delegator's public key (user key at index 0).
201
+ * @protected
202
+ */
203
+ buildFlareTransaction() {
204
+ if (this.transaction.hasCredentials)
205
+ return;
206
+ // Validate required fields
207
+ if (!this._nodeID) {
208
+ throw new sdk_core_1.BuildTransactionError('NodeID is required for delegation');
209
+ }
210
+ if (!this._startTime) {
211
+ throw new sdk_core_1.BuildTransactionError('Start time is required for delegation');
212
+ }
213
+ if (!this._endTime) {
214
+ throw new sdk_core_1.BuildTransactionError('End time is required for delegation');
215
+ }
216
+ if (!this._stakeAmount) {
217
+ throw new sdk_core_1.BuildTransactionError('Stake amount is required for delegation');
218
+ }
219
+ if (!this.transaction._context) {
220
+ throw new sdk_core_1.BuildTransactionError('Context is required for delegation');
221
+ }
222
+ if (!this.transaction._fromAddresses || this.transaction._fromAddresses.length === 0) {
223
+ throw new sdk_core_1.BuildTransactionError('From addresses are required for delegation');
224
+ }
225
+ if (!this._feeState) {
226
+ throw new sdk_core_1.BuildTransactionError('Fee state is required for delegation');
227
+ }
228
+ this.validateStakeDuration(this._startTime, this._endTime);
229
+ // Convert decoded UTXOs to FlareJS Utxo objects
230
+ if (!this.transaction._utxos || this.transaction._utxos.length === 0) {
231
+ throw new sdk_core_1.BuildTransactionError('UTXOs are required for delegation');
232
+ }
233
+ const utxos = utils_1.default.decodedToUtxos(this.transaction._utxos, this.transaction._network.assetId);
234
+ // Use only the user key (index 0) for fromAddressesBytes
235
+ // This ensures the C-chain reward address is derived from the user's public key
236
+ const userAddress = this.getUserAddress();
237
+ const rewardAddresses = this.transaction._rewardAddresses.length > 0 ? this.transaction._rewardAddresses : [userAddress];
238
+ // Use Etna (post-fork) API - pvm.e.newAddPermissionlessDelegatorTx
239
+ const delegatorTx = flarejs_1.pvm.e.newAddPermissionlessDelegatorTx({
240
+ end: this._endTime,
241
+ feeState: this._feeState,
242
+ fromAddressesBytes: [userAddress],
243
+ nodeId: this._nodeID,
244
+ rewardAddresses: rewardAddresses,
245
+ start: this._startTime,
246
+ subnetId: flarejs_1.networkIDs.PrimaryNetworkID.toString(),
247
+ utxos,
248
+ weight: this._stakeAmount,
249
+ }, this.transaction._context);
250
+ this.transaction.setTransaction(delegatorTx);
251
+ }
252
+ /**
253
+ * Verify if the transaction type matches AddPermissionlessDelegatorTx
254
+ * @param type TypeSymbol from parsed transaction
255
+ */
256
+ static verifyTxType(type) {
257
+ return type === flarejs_1.TypeSymbols.AddPermissionlessDelegatorTx;
258
+ }
259
+ /** @inheritdoc */
260
+ get transaction() {
261
+ return this._transaction;
262
+ }
263
+ set transaction(transaction) {
264
+ this._transaction = transaction;
265
+ }
266
+ }
267
+ exports.PermissionlessDelegatorTxBuilder = PermissionlessDelegatorTxBuilder;
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbmxlc3NEZWxlZ2F0b3JUeEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Blcm1pc3Npb25sZXNzRGVsZWdhdG9yVHhCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVMrQjtBQUMvQiw4Q0FBdUY7QUFHdkYsNkRBQTBEO0FBQzFELG9EQUE0QjtBQUk1Qjs7Ozs7Ozs7R0FRRztBQUNILE1BQWEsZ0NBQWlDLFNBQVEsdUNBQWtCO0lBT3RFLFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsMEJBQTBCLENBQUM7SUFDcEQsQ0FBQztJQUVELHFCQUFxQjtJQUNyQixjQUFjLENBQUMsTUFBYztRQUMzQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksZ0NBQXFCLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksZ0NBQXFCLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsbURBQW1ELENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLFNBQWlCLEVBQUUsT0FBZTtRQUN0RCxJQUFJLE9BQU8sR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUN4QixN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SUFBSSxDQUFDLFNBQVM7WUFDeEIsa0JBQWtCLEVBQUUsQ0FBQyxXQUFXLENBQUM7WUFDakMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3BCLGVBQWUsRUFBRSxlQUFlO1lBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVTtZQUN0QixRQUFRLEVBQUUsb0JBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUU7WUFDaEQsS0FBSztZQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWTtTQUMxQixFQUNELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUMxQixDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsV0FBeUIsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLElBQWlCO1FBQ25DLE9BQU8sSUFBSSxLQUFLLHFCQUFXLENBQUMsNEJBQTRCLENBQUM7SUFDM0QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFjLFdBQVc7UUFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFjLFdBQVcsQ0FBQyxXQUF3QjtRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFwU0QsNEVBb1NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdXRpbHMgYXMgRmxhcmVVdGlscyxcbiAgVHlwZVN5bWJvbHMsXG4gIHB2bSxcbiAgbmV0d29ya0lEcyxcbiAgVW5zaWduZWRUeCxcbiAgcHZtU2VyaWFsLFxuICBDcmVkZW50aWFsLFxuICBUcmFuc2Zlck91dHB1dCxcbn0gZnJvbSAnQGZsYXJlbmV0d29yay9mbGFyZWpzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgTm90U3VwcG9ydGVkLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBGbHJwRmVlU3RhdGUgfSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IFR4IH0gZnJvbSAnLi9pZmFjZSc7XG5cbi8qKlxuICogQnVpbGRlciBmb3IgQWRkUGVybWlzc2lvbmxlc3NEZWxlZ2F0b3IgdHJhbnNhY3Rpb25zIG9uIEZsYXJlIFAtQ2hhaW4uXG4gKlxuICogVGhpcyBidWlsZGVyIGNyZWF0ZXMgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbnMgd2hlcmUgYSB1c2VyIGRlbGVnYXRlcyBzdGFrZVxuICogdG8gYW4gZXhpc3RpbmcgdmFsaWRhdG9yLiBVbmxpa2UgQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3I6XG4gKiAtIE5vIEJMUyBrZXlzIHJlcXVpcmVkXG4gKiAtIERlbGVnYXRlcyB0byBhbiBleGlzdGluZyB2YWxpZGF0b3IncyBub2RlSURcbiAqIC0gUmV3YXJkcyBnbyB0byBjb3JyZXNwb25kaW5nIEMtY2hhaW4gYWRkcmVzc1xuICovXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbmxlc3NEZWxlZ2F0b3JUeEJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX25vZGVJRDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3N0YXJ0VGltZTogYmlnaW50O1xuICBwcm90ZWN0ZWQgX2VuZFRpbWU6IGJpZ2ludDtcbiAgcHJvdGVjdGVkIF9zdGFrZUFtb3VudDogYmlnaW50O1xuICBwcm90ZWN0ZWQgX2ZlZVN0YXRlOiBGbHJwRmVlU3RhdGUgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlID0gdGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay50eEZlZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5BZGRQZXJtaXNzaW9ubGVzc0RlbGVnYXRvcjtcbiAgfVxuXG4gIC8vIFZhbGlkYXRpb24gbWV0aG9kc1xuICB2YWxpZGF0ZU5vZGVJRChub2RlSUQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghbm9kZUlEKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIG5vZGVJRCcpO1xuICAgIH1cbiAgICBpZiAoIW5vZGVJRC5zdGFydHNXaXRoKCdOb2RlSUQtJykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGludmFsaWQgTm9kZUlEIHRhZycpO1xuICAgIH1cbiAgICBpZiAoIXV0aWxzLmlzVmFsaWROb2RlSUQobm9kZUlEKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogTm9kZUlEIGlzIG5vdCBpbiBjYjU4IGZvcm1hdCcpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlU3Rha2VEdXJhdGlvbihzdGFydFRpbWU6IGJpZ2ludCwgZW5kVGltZTogYmlnaW50KTogdm9pZCB7XG4gICAgaWYgKGVuZFRpbWUgPCBzdGFydFRpbWUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0VuZCBkYXRlIGNhbm5vdCBiZSBsZXNzIHRoYW4gc3RhcnQgZGF0ZScpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlU3Rha2VBbW91bnQoYW1vdW50OiBiaWdpbnQpOiB2b2lkIHtcbiAgICBjb25zdCBtaW5EZWxlZ2F0aW9uU3Rha2UgPSBCaWdJbnQoXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLm1pbkRlbGVnYXRpb25TdGFrZSB8fCB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLm1pblN0YWtlXG4gICAgKTtcbiAgICBpZiAoYW1vdW50IDwgbWluRGVsZWdhdGlvblN0YWtlKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAnTWluaW11bSBkZWxlZ2F0aW9uIGFtb3VudCBpcyAnICsgTnVtYmVyKG1pbkRlbGVnYXRpb25TdGFrZSkgLyAxMDAwMDAwMDAwICsgJyBGTFIuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBCdWlsZGVyIG1ldGhvZHNcbiAgLyoqXG4gICAqXG4gICAqIE5PVEU6IE9uIEZsYXJlLCBzdGFraW5nIHJld2FyZHMgYXJlIGRpc3RyaWJ1dGVkIG9uIEMtY2hhaW4gKG5vdCBQLWNoYWluKS5cbiAgICogUmV3YXJkcyBnbyB0byB0aGUgQy1jaGFpbiBhZGRyZXNzIGRlcml2ZWQgZnJvbSB0aGUgc2FtZSBwdWJsaWMga2V5IGFzXG4gICAqIHRoZSBQLWNoYWluIHN0YWtpbmcgYWRkcmVzcy4gVGhpcyBwYXJhbWV0ZXIgaXMgcGFzc2VkIHRvIHRoZSBGbGFyZUpTIEFQSVxuICAgKiBidXQgaGFzIE5PIG9uLWNoYWluIGVmZmVjdCBvbiByZXdhcmQgZGlzdHJpYnV0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gYWRkcmVzcyBQLWNoYWluIGFkZHJlc3MgaW4gQmVjaDMyIGZvcm1hdCAoZS5nLiwgXCJQLWZsYXJlMS4uLlwiIG9yIFwiUC1jb3N0d28xLi4uXCIpXG4gICAqL1xuICByZXdhcmRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3Jld2FyZEFkZHJlc3NlcyA9IFt1dGlscy5wYXJzZUFkZHJlc3MoYWRkcmVzcyldO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdmFsaWRhdG9yIG5vZGUgSUQgdG8gZGVsZWdhdGUgdG9cbiAgICogQHBhcmFtIG5vZGVJRCBWYWxpZGF0b3Igbm9kZSBJRCBpbiBmb3JtYXQgXCJOb2RlSUQtLi4uXCJcbiAgICovXG4gIG5vZGVJRChub2RlSUQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVOb2RlSUQobm9kZUlEKTtcbiAgICB0aGlzLl9ub2RlSUQgPSBub2RlSUQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBzdGFydCB0aW1lIGZvciB0aGUgZGVsZWdhdGlvbiBwZXJpb2RcbiAgICogQHBhcmFtIHZhbHVlIFVuaXggdGltZXN0YW1wIGluIHNlY29uZHNcbiAgICovXG4gIHN0YXJ0VGltZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gQmlnSW50KHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGVuZCB0aW1lIGZvciB0aGUgZGVsZWdhdGlvbiBwZXJpb2RcbiAgICogQHBhcmFtIHZhbHVlIFVuaXggdGltZXN0YW1wIGluIHNlY29uZHNcbiAgICovXG4gIGVuZFRpbWUodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuX2VuZFRpbWUgPSBCaWdJbnQodmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYW1vdW50IHRvIHN0YWtlL2RlbGVnYXRlXG4gICAqIEBwYXJhbSB2YWx1ZSBBbW91bnQgaW4gbmFub0ZMUiAod2VpKVxuICAgKi9cbiAgc3Rha2VBbW91bnQodmFsdWU6IGJpZ2ludCB8IHN0cmluZyk6IHRoaXMge1xuICAgIGNvbnN0IHZhbHVlQmlnSW50ID0gdHlwZW9mIHZhbHVlID09PSAnYmlnaW50JyA/IHZhbHVlIDogQmlnSW50KHZhbHVlKTtcbiAgICB0aGlzLnZhbGlkYXRlU3Rha2VBbW91bnQodmFsdWVCaWdJbnQpO1xuICAgIHRoaXMuX3N0YWtlQW1vdW50ID0gdmFsdWVCaWdJbnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGZlZVN0YXRlIEZlZSBzdGF0ZSBmcm9tIFAtY2hhaW5cbiAgICovXG4gIGZlZVN0YXRlKGZlZVN0YXRlOiBGbHJwRmVlU3RhdGUpOiB0aGlzIHtcbiAgICB0aGlzLl9mZWVTdGF0ZSA9IGZlZVN0YXRlO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2ZlZVN0YXRlID0gZmVlU3RhdGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBidWlsZGVyIGZyb20gYSBwYXJzZWQgQWRkUGVybWlzc2lvbmxlc3NEZWxlZ2F0b3JUeC5cbiAgICogVXNlZCB0byByZWNvbnN0cnVjdCB0aGUgYnVpbGRlciBzdGF0ZSBmcm9tIGEgcmF3IHRyYW5zYWN0aW9uIGZvciBzaWduaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gdHggVGhlIHBhcnNlZCB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gcmF3Qnl0ZXMgT3B0aW9uYWwgcmF3IHRyYW5zYWN0aW9uIGJ5dGVzXG4gICAqIEBwYXJhbSBwYXJzZWRDcmVkZW50aWFscyBPcHRpb25hbCBjcmVkZW50aWFscyBmcm9tIHRoZSBwYXJzZWQgdHJhbnNhY3Rpb25cbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUeCwgcmF3Qnl0ZXM/OiBCdWZmZXIsIHBhcnNlZENyZWRlbnRpYWxzPzogQ3JlZGVudGlhbFtdKTogdGhpcyB7XG4gICAgY29uc3QgZGVsZWdhdG9yVHggPSB0eCBhcyBwdm1TZXJpYWwuQWRkUGVybWlzc2lvbmxlc3NEZWxlZ2F0b3JUeDtcblxuICAgIGlmICghdGhpcy52ZXJpZnlUeFR5cGUoZGVsZWdhdG9yVHguX3R5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdUcmFuc2FjdGlvbiBjYW5ub3QgYmUgcGFyc2VkIG9yIGhhcyBhbiB1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgfVxuXG4gICAgLy8gRXh0cmFjdCB2YWxpZGF0b3IgaW5mbyAobm9kZUlELCBzdGFydFRpbWUsIGVuZFRpbWUsIHdlaWdodC9zdGFrZUFtb3VudClcbiAgICBjb25zdCB2YWxpZGF0b3IgPSBkZWxlZ2F0b3JUeC5zdWJuZXRWYWxpZGF0b3IudmFsaWRhdG9yO1xuICAgIHRoaXMuX25vZGVJRCA9IHZhbGlkYXRvci5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSB2YWxpZGF0b3Iuc3RhcnRUaW1lLnZhbHVlKCk7XG4gICAgdGhpcy5fZW5kVGltZSA9IHZhbGlkYXRvci5lbmRUaW1lLnZhbHVlKCk7XG4gICAgdGhpcy5fc3Rha2VBbW91bnQgPSB2YWxpZGF0b3Iud2VpZ2h0LnZhbHVlKCk7XG5cbiAgICAvLyBFeHRyYWN0IGZyb20gYWRkcmVzc2VzIGZyb20gc3Rha2Ugb3V0cHV0c1xuICAgIC8vIEluIGRlbGVnYXRpb24gdHJhbnNhY3Rpb25zLCBzdGFrZSBvdXRwdXRzIGNvbnRhaW4gdGhlIG93bmVyIGFkZHJlc3Nlc1xuICAgIGNvbnN0IHN0YWtlT3V0cHV0cyA9IGRlbGVnYXRvclR4LnN0YWtlO1xuICAgIGlmIChzdGFrZU91dHB1dHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlyc3RTdGFrZU91dHB1dCA9IHN0YWtlT3V0cHV0c1swXTtcbiAgICAgIC8vIFN0YWtlIG91dHB1dHMgdXNlIFRyYW5zZmVyT3V0cHV0IHR5cGUgd2l0aCBvdXRwdXRPd25lcnMgcHJvcGVydHlcbiAgICAgIGNvbnN0IHRyYW5zZmVyT3V0cHV0ID0gZmlyc3RTdGFrZU91dHB1dC5vdXRwdXQgYXMgVHJhbnNmZXJPdXRwdXQ7XG4gICAgICBjb25zdCBvdXRwdXRPd25lcnMgPSB0cmFuc2Zlck91dHB1dC5vdXRwdXRPd25lcnM7XG4gICAgICBpZiAob3V0cHV0T3duZXJzKSB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZCA9IG91dHB1dE93bmVycy50aHJlc2hvbGQudmFsdWUoKTtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyA9IG91dHB1dE93bmVycy5hZGRycy5tYXAoKGFkZHIpID0+IEJ1ZmZlci5mcm9tKGFkZHIudG9CeXRlcygpKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXh0cmFjdCByZXdhcmQgYWRkcmVzc2VzIGZyb20gZGVsZWdhdG9yUmV3YXJkc093bmVyXG4gICAgY29uc3QgcmV3YXJkc093bmVyID0gZGVsZWdhdG9yVHguZ2V0RGVsZWdhdG9yUmV3YXJkc093bmVyKCk7XG4gICAgaWYgKHJld2FyZHNPd25lciAmJiByZXdhcmRzT3duZXIuYWRkcnMgJiYgcmV3YXJkc093bmVyLmFkZHJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uX3Jld2FyZEFkZHJlc3NlcyA9IHJld2FyZHNPd25lci5hZGRycy5tYXAoKGFkZHIpID0+IEJ1ZmZlci5mcm9tKGFkZHIudG9CeXRlcygpKSk7XG4gICAgfVxuXG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSBwYXJzZWRDcmVkZW50aWFscyB8fCBbXTtcblxuICAgIGlmIChyYXdCeXRlcyAmJiBjcmVkZW50aWFscy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl9yYXdTaWduZWRCeXRlcyA9IHJhd0J5dGVzO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgVW5zaWduZWRUeCB3aXRoIHBhcnNlZCBjcmVkZW50aWFsc1xuICAgIC8vIEFkZHJlc3NNYXBzIHdpbGwgYmUgZW1wdHkgYXMgdGhleSdyZSBjb21wdXRlZCBkdXJpbmcgc2lnbmluZ1xuICAgIGNvbnN0IHVuc2lnbmVkVHggPSBuZXcgVW5zaWduZWRUeChkZWxlZ2F0b3JUeCwgW10sIG5ldyBGbGFyZVV0aWxzLkFkZHJlc3NNYXBzKFtdKSwgY3JlZGVudGlhbHMpO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbih1bnNpZ25lZFR4KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YW5jZSBtZXRob2QgdG8gdmVyaWZ5IHRyYW5zYWN0aW9uIHR5cGVcbiAgICogQHBhcmFtIHR5cGUgVHlwZVN5bWJvbCBmcm9tIHBhcnNlZCB0cmFuc2FjdGlvblxuICAgKi9cbiAgdmVyaWZ5VHhUeXBlKHR5cGU6IFR5cGVTeW1ib2xzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFBlcm1pc3Npb25sZXNzRGVsZWdhdG9yVHhCdWlsZGVyLnZlcmlmeVR4VHlwZSh0eXBlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLmJ1aWxkRmxhcmVUcmFuc2FjdGlvbigpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKHRoaXMudHJhbnNhY3Rpb25UeXBlKTtcbiAgICBpZiAodGhpcy5oYXNTaWduZXIoKSkge1xuICAgICAgZm9yIChjb25zdCBrZXlQYWlyIG9mIHRoaXMuX3NpZ25lcikge1xuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uLnNpZ24oa2V5UGFpcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdXNlcidzIGFkZHJlc3MgKGluZGV4IDApIGZvciBkZWxlZ2F0aW9uLlxuICAgKlxuICAgKiBGb3IgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbnMsIHdlIHVzZSBvbmx5IHRoZSB1c2VyIGtleSBiZWNhdXNlOlxuICAgKiAxLiBPbi1jaGFpbiByZXdhcmRzIGdvIHRvIHRoZSBDLWNoYWluIGFkZHJlc3MgZGVyaXZlZCBmcm9tIHRoZSBkZWxlZ2F0b3IncyBwdWJsaWMga2V5XG4gICAqIDIuIFVzaW5nIHRoZSB1c2VyIGtleSBlbnN1cmVzIHJld2FyZHMgZ28gdG8gdGhlIHVzZXIncyBjb3JyZXNwb25kaW5nIEMtY2hhaW4gYWRkcmVzc1xuICAgKiAzLiBUaGUgdXNlciBrZXkgaXMgYXQgaW5kZXggMCBpbiB0aGUgZnJvbUFkZHJlc3NlcyBhcnJheSAoQml0R28gY29udmVudGlvbjogW3VzZXIsIGJpdGdvLCBiYWNrdXBdKVxuICAgKlxuICAgKiBAcmV0dXJucyBCdWZmZXIgY29udGFpbmluZyB0aGUgdXNlcidzIGFkZHJlc3NcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFVzZXJBZGRyZXNzKCk6IEJ1ZmZlciB7XG4gICAgY29uc3QgdXNlckluZGV4ID0gMDtcbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMgfHwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlcy5sZW5ndGggPD0gdXNlckluZGV4KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVc2VyIGFkZHJlc3MgKGluZGV4IDApIGlzIHJlcXVpcmVkIGZvciBkZWxlZ2F0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHVzZXJBZGRyZXNzID0gQnVmZmVyLmZyb20odGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1t1c2VySW5kZXhdKTtcbiAgICBpZiAodXNlckFkZHJlc3MubGVuZ3RoICE9PSAyMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB1c2VyIGFkZHJlc3MgbGVuZ3RoOiBleHBlY3RlZCAyMCBieXRlcywgZ290ICR7dXNlckFkZHJlc3MubGVuZ3RofWApO1xuICAgIH1cbiAgICByZXR1cm4gdXNlckFkZHJlc3M7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIHBlcm1pc3Npb25sZXNzIGRlbGVnYXRvciB0cmFuc2FjdGlvbiB1c2luZyBGbGFyZUpTLlxuICAgKiBVc2VzIHB2bS5lLm5ld0FkZFBlcm1pc3Npb25sZXNzRGVsZWdhdG9yVHggKHBvc3QtRXRuYSBBUEkpLlxuICAgKlxuICAgKiBOb3RlOiBUaGUgcmV3YXJkQWRkcmVzc2VzIHBhcmFtZXRlciBpcyBhY2NlcHRlZCBieSB0aGUgQVBJIGJ1dCBkb2VzIE5PVCBhZmZlY3RcbiAgICogd2hlcmUgcmV3YXJkcyBhcmUgc2VudCBvbi1jaGFpbiAtIHJld2FyZHMgYWx3YXlzIGdvIHRvIHRoZSBDLWNoYWluIGFkZHJlc3NcbiAgICogZGVyaXZlZCBmcm9tIHRoZSBkZWxlZ2F0b3IncyBwdWJsaWMga2V5ICh1c2VyIGtleSBhdCBpbmRleCAwKS5cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkRmxhcmVUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5oYXNDcmVkZW50aWFscykgcmV0dXJuO1xuXG4gICAgLy8gVmFsaWRhdGUgcmVxdWlyZWQgZmllbGRzXG4gICAgaWYgKCF0aGlzLl9ub2RlSUQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ05vZGVJRCBpcyByZXF1aXJlZCBmb3IgZGVsZWdhdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3N0YXJ0VGltZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignU3RhcnQgdGltZSBpcyByZXF1aXJlZCBmb3IgZGVsZWdhdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX2VuZFRpbWUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0VuZCB0aW1lIGlzIHJlcXVpcmVkIGZvciBkZWxlZ2F0aW9uJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fc3Rha2VBbW91bnQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1N0YWtlIGFtb3VudCBpcyByZXF1aXJlZCBmb3IgZGVsZWdhdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uX2NvbnRleHQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0NvbnRleHQgaXMgcmVxdWlyZWQgZm9yIGRlbGVnYXRpb24nKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzIHx8IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdGcm9tIGFkZHJlc3NlcyBhcmUgcmVxdWlyZWQgZm9yIGRlbGVnYXRpb24nKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9mZWVTdGF0ZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRmVlIHN0YXRlIGlzIHJlcXVpcmVkIGZvciBkZWxlZ2F0aW9uJyk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZVN0YWtlRHVyYXRpb24odGhpcy5fc3RhcnRUaW1lLCB0aGlzLl9lbmRUaW1lKTtcblxuICAgIC8vIENvbnZlcnQgZGVjb2RlZCBVVFhPcyB0byBGbGFyZUpTIFV0eG8gb2JqZWN0c1xuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MgfHwgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVVFhPcyBhcmUgcmVxdWlyZWQgZm9yIGRlbGVnYXRpb24nKTtcbiAgICB9XG4gICAgY29uc3QgdXR4b3MgPSB1dGlscy5kZWNvZGVkVG9VdHhvcyh0aGlzLnRyYW5zYWN0aW9uLl91dHhvcywgdGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5hc3NldElkKTtcblxuICAgIC8vIFVzZSBvbmx5IHRoZSB1c2VyIGtleSAoaW5kZXggMCkgZm9yIGZyb21BZGRyZXNzZXNCeXRlc1xuICAgIC8vIFRoaXMgZW5zdXJlcyB0aGUgQy1jaGFpbiByZXdhcmQgYWRkcmVzcyBpcyBkZXJpdmVkIGZyb20gdGhlIHVzZXIncyBwdWJsaWMga2V5XG4gICAgY29uc3QgdXNlckFkZHJlc3MgPSB0aGlzLmdldFVzZXJBZGRyZXNzKCk7XG5cbiAgICBjb25zdCByZXdhcmRBZGRyZXNzZXMgPVxuICAgICAgdGhpcy50cmFuc2FjdGlvbi5fcmV3YXJkQWRkcmVzc2VzLmxlbmd0aCA+IDAgPyB0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMgOiBbdXNlckFkZHJlc3NdO1xuXG4gICAgLy8gVXNlIEV0bmEgKHBvc3QtZm9yaykgQVBJIC0gcHZtLmUubmV3QWRkUGVybWlzc2lvbmxlc3NEZWxlZ2F0b3JUeFxuICAgIGNvbnN0IGRlbGVnYXRvclR4ID0gcHZtLmUubmV3QWRkUGVybWlzc2lvbmxlc3NEZWxlZ2F0b3JUeChcbiAgICAgIHtcbiAgICAgICAgZW5kOiB0aGlzLl9lbmRUaW1lLFxuICAgICAgICBmZWVTdGF0ZTogdGhpcy5fZmVlU3RhdGUsXG4gICAgICAgIGZyb21BZGRyZXNzZXNCeXRlczogW3VzZXJBZGRyZXNzXSxcbiAgICAgICAgbm9kZUlkOiB0aGlzLl9ub2RlSUQsXG4gICAgICAgIHJld2FyZEFkZHJlc3NlczogcmV3YXJkQWRkcmVzc2VzLFxuICAgICAgICBzdGFydDogdGhpcy5fc3RhcnRUaW1lLFxuICAgICAgICBzdWJuZXRJZDogbmV0d29ya0lEcy5QcmltYXJ5TmV0d29ya0lELnRvU3RyaW5nKCksXG4gICAgICAgIHV0eG9zLFxuICAgICAgICB3ZWlnaHQ6IHRoaXMuX3N0YWtlQW1vdW50LFxuICAgICAgfSxcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2NvbnRleHRcbiAgICApO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbihkZWxlZ2F0b3JUeCBhcyBVbnNpZ25lZFR4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZnkgaWYgdGhlIHRyYW5zYWN0aW9uIHR5cGUgbWF0Y2hlcyBBZGRQZXJtaXNzaW9ubGVzc0RlbGVnYXRvclR4XG4gICAqIEBwYXJhbSB0eXBlIFR5cGVTeW1ib2wgZnJvbSBwYXJzZWQgdHJhbnNhY3Rpb25cbiAgICovXG4gIHN0YXRpYyB2ZXJpZnlUeFR5cGUodHlwZTogVHlwZVN5bWJvbHMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZSA9PT0gVHlwZVN5bWJvbHMuQWRkUGVybWlzc2lvbmxlc3NEZWxlZ2F0b3JUeDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACL,OAAO,EACP,eAAe,EACf,KAAK,EAGL,eAAe,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,UAAU,EAOV,OAAO,EACR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,sBAAsB,EACtB,EAAE,EACF,MAAM,EAGN,kBAAkB,EAClB,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DpC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,iBAAiB,EAAE,EAAE,CAAC;IACzB,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,SAAK;IACf,SAAS,SAAa;IACtB,cAAc,EAAE,UAAU,EAAE,CAAM;IAClC,GAAG,EAAE,UAAU,EAAE,CAAM;IACvB,gBAAgB,EAAE,UAAU,EAAE,CAAM;IACpC,MAAM,EAAE,cAAc,EAAE,CAAM;IAC9B,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC;IAC1B,IAAI,EAAE,kBAAkB,CAAgB;IACxC,SAAS,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE/B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAS5C,IAAI,SAAS,IAAI,MAAM,EAAE,CAKxB;IAED,IAAI,WAAW,IAAI,UAAU,EAAE,CAE9B;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,kBAAkB;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO;IAI5B,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgG3C,iBAAiB,IAAI,MAAM;IAkB3B,MAAM,IAAI,MAAM;IAmBhB;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CA6BpC;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,MAAM,GAAG,SAAS,CA6BzC;IAED;;;;;OAKG;IACH,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM;IAWvD,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAI5B;;;OAGG;IACH,mBAAmB,IAAI,EAAE;IAIzB,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAO1D,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,EAAE,IAAI,MAAM,CAKf;IAED,IAAI,aAAa,IAAI,MAAM,EAAE,CAE5B;IAED,IAAI,eAAe,IAAI,MAAM,EAAE,CAE9B;IAED,IAAI,GAAG,IAAI,kBAAkB,CAE5B;IAED;;OAEG;IACH,IAAI,sBAAsB,IAAI,OAAO,CAIpC;IAED,IAAI,OAAO,IAAI,KAAK,EAAE,CAwCrB;IAED,IAAI,aAAa,IAAI,KAAK,EAAE,CAmB3B;IAED,IAAI,MAAM,IAAI,KAAK,EAAE,CAsDpB;IAED,kBAAkB,IAAI,sBAAsB;CA0B7C"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACL,OAAO,EACP,eAAe,EACf,KAAK,EAGL,eAAe,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,UAAU,EAOV,OAAO,EACR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,sBAAsB,EACtB,EAAE,EACF,MAAM,EAGN,kBAAkB,EAClB,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DpC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,iBAAiB,EAAE,EAAE,CAAC;IACzB,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,SAAK;IACf,SAAS,SAAa;IACtB,cAAc,EAAE,UAAU,EAAE,CAAM;IAClC,GAAG,EAAE,UAAU,EAAE,CAAM;IACvB,gBAAgB,EAAE,UAAU,EAAE,CAAM;IACpC,MAAM,EAAE,cAAc,EAAE,CAAM;IAC9B,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC;IAC1B,IAAI,EAAE,kBAAkB,CAAgB;IACxC,SAAS,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE/B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAS5C,IAAI,SAAS,IAAI,MAAM,EAAE,CAKxB;IAED,IAAI,WAAW,IAAI,UAAU,EAAE,CAE9B;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,kBAAkB;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO;IAI5B,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgG3C,iBAAiB,IAAI,MAAM;IAkB3B,MAAM,IAAI,MAAM;IAmBhB;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CA6BpC;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,MAAM,GAAG,SAAS,CA6BzC;IAED;;;;;OAKG;IACH,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM;IAWvD,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAI5B;;;OAGG;IACH,mBAAmB,IAAI,EAAE;IAIzB,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAW1D,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,EAAE,IAAI,MAAM,CAKf;IAED,IAAI,aAAa,IAAI,MAAM,EAAE,CAE5B;IAED,IAAI,eAAe,IAAI,MAAM,EAAE,CAE9B;IAED,IAAI,GAAG,IAAI,kBAAkB,CAE5B;IAED;;OAEG;IACH,IAAI,sBAAsB,IAAI,OAAO,CAIpC;IAED,IAAI,OAAO,IAAI,KAAK,EAAE,CAgDrB;IAED,IAAI,aAAa,IAAI,KAAK,EAAE,CAsB3B;IAED,IAAI,MAAM,IAAI,KAAK,EAAE,CAqEpB;IAED,kBAAkB,IAAI,sBAAsB;CA4B7C"}