@bitgo-beta/sdk-coin-flrp 1.0.0-alpha.6 → 1.0.0-alpha.8
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/atomicTransactionBuilder.d.ts +10 -7
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicTransactionBuilder.js +155 -89
- package/dist/src/lib/constants.d.ts +160 -1
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +213 -3
- package/dist/src/lib/delegatorTxBuilder.d.ts +58 -0
- package/dist/src/lib/delegatorTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/delegatorTxBuilder.js +224 -0
- package/dist/src/lib/exportInCTxBuilder.d.ts +1 -1
- package/dist/src/lib/exportInCTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/exportInCTxBuilder.js +46 -17
- package/dist/src/lib/exportInPTxBuilder.d.ts +1 -1
- package/dist/src/lib/exportInPTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/exportInPTxBuilder.js +70 -6
- package/dist/src/lib/importInCTxBuilder.d.ts +67 -0
- package/dist/src/lib/importInCTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/importInCTxBuilder.js +403 -0
- package/dist/src/lib/importInPTxBuilder.d.ts +73 -0
- package/dist/src/lib/importInPTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/importInPTxBuilder.js +464 -0
- package/dist/src/lib/index.d.ts +5 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +11 -2
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +81 -0
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/permissionlessValidatorTxBuilder.js +248 -0
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +14 -13
- package/dist/src/lib/transactionBuilder.d.ts +85 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +167 -0
- package/dist/src/lib/types.d.ts +78 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +5 -0
- package/dist/src/lib/utils.d.ts +2 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +23 -12
- package/dist/src/lib/validatorTxBuilder.d.ts +40 -0
- package/dist/src/lib/validatorTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/validatorTxBuilder.js +180 -0
- package/dist/test/unit/delegatorTxBuilder.test.d.ts +2 -0
- package/dist/test/unit/delegatorTxBuilder.test.d.ts.map +1 -0
- package/dist/test/unit/delegatorTxBuilder.test.js +233 -0
- package/dist/test/unit/lib/exportInCTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/exportInCTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/exportInCTxBuilder.js +584 -0
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/exportInPTxBuilder.js +377 -0
- package/dist/test/unit/lib/importInCTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/importInCTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/importInCTxBuilder.js +257 -0
- package/dist/test/unit/lib/importInPTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/importInPTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/importInPTxBuilder.js +500 -0
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts +2 -0
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts.map +1 -0
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.js +271 -0
- package/dist/test/unit/transactionBuilder.test.d.ts +2 -0
- package/dist/test/unit/transactionBuilder.test.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder.test.js +114 -0
- package/dist/test/unit/validatorTxBuilder.test.d.ts +2 -0
- package/dist/test/unit/validatorTxBuilder.test.d.ts.map +1 -0
- package/dist/test/unit/validatorTxBuilder.test.js +293 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/dist/test/unit/lib/exportTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/exportTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/exportTxBuilder.js +0 -45
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { BaseTransactionBuilder } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { DecodedUtxoObj, Tx } from './iface';
|
|
4
|
+
import { KeyPair } from './keyPair';
|
|
5
|
+
import { Transaction } from './transaction';
|
|
6
|
+
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
|
|
7
|
+
protected _transaction: Transaction;
|
|
8
|
+
protected recoverSigner: boolean;
|
|
9
|
+
_signer: KeyPair[];
|
|
10
|
+
protected _recoveryMode: boolean;
|
|
11
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
12
|
+
/**
|
|
13
|
+
* Initialize the transaction builder fields using the decoded transaction data
|
|
14
|
+
*
|
|
15
|
+
* @param {Tx} tx the transaction data
|
|
16
|
+
* @returns itself
|
|
17
|
+
*/
|
|
18
|
+
initBuilder(tx: Tx): this;
|
|
19
|
+
/**
|
|
20
|
+
* Validates the threshold
|
|
21
|
+
* @param threshold
|
|
22
|
+
*/
|
|
23
|
+
validateThreshold(threshold: number): void;
|
|
24
|
+
/**
|
|
25
|
+
* Check the UTXO has expected fields.
|
|
26
|
+
* @param UTXO
|
|
27
|
+
*/
|
|
28
|
+
validateUtxo(value: DecodedUtxoObj): void;
|
|
29
|
+
/**
|
|
30
|
+
* Check the list of UTXOS is empty and check each UTXO.
|
|
31
|
+
* @param values
|
|
32
|
+
*/
|
|
33
|
+
validateUtxos(values: DecodedUtxoObj[]): void;
|
|
34
|
+
/**
|
|
35
|
+
* Validates locktime
|
|
36
|
+
* @param locktime
|
|
37
|
+
*/
|
|
38
|
+
validateLocktime(locktime: bigint): void;
|
|
39
|
+
/**
|
|
40
|
+
* Threshold is an int that names the number of unique signatures required to spend the output.
|
|
41
|
+
* Must be less than or equal to the length of Addresses.
|
|
42
|
+
* @param {number} value
|
|
43
|
+
*/
|
|
44
|
+
threshold(value: number): this;
|
|
45
|
+
/**
|
|
46
|
+
* Locktime is a long that contains the unix timestamp that this output can be spent after.
|
|
47
|
+
* The unix timestamp is specific to the second.
|
|
48
|
+
* @param value
|
|
49
|
+
*/
|
|
50
|
+
locktime(value: string | number): this;
|
|
51
|
+
/**
|
|
52
|
+
* When using recovery key must be set here
|
|
53
|
+
* @param {boolean}[recoverSigner=true] whether it's recovery signer
|
|
54
|
+
*/
|
|
55
|
+
recoverMode(recoverSigner?: boolean): this;
|
|
56
|
+
/**
|
|
57
|
+
* fromPubKey is a list of unique addresses that correspond to the private keys that can be used to spend this output
|
|
58
|
+
* @param {string | string[]} senderPubKey
|
|
59
|
+
*/
|
|
60
|
+
fromPubKey(senderPubKey: string | string[]): this;
|
|
61
|
+
/**
|
|
62
|
+
* List of UTXO required as inputs.
|
|
63
|
+
* A UTXO is a standalone representation of a transaction output.
|
|
64
|
+
*
|
|
65
|
+
* @param {DecodedUtxoObj[]} list of UTXOS
|
|
66
|
+
*/
|
|
67
|
+
utxos(value: DecodedUtxoObj[]): this;
|
|
68
|
+
/**
|
|
69
|
+
* Build the Flare transaction using FlareJS API
|
|
70
|
+
* @protected
|
|
71
|
+
*/
|
|
72
|
+
protected abstract buildFlareTransaction(): Promise<void> | void;
|
|
73
|
+
/** @inheritdoc */
|
|
74
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
75
|
+
/**
|
|
76
|
+
* Get the transaction instance
|
|
77
|
+
*/
|
|
78
|
+
get transaction(): Transaction;
|
|
79
|
+
/**
|
|
80
|
+
* Validate required fields before building transaction
|
|
81
|
+
* @protected
|
|
82
|
+
*/
|
|
83
|
+
protected validateRequiredFields(): void;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=transactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiB5C,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,aAAa,UAAS;IACzB,OAAO,EAAE,OAAO,EAAE,CAAM;IAG/B,SAAS,CAAC,aAAa,UAAS;gBAEpB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;;OAKG;IACH,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAyBzB;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM1C;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAMzC;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAO7C;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOxC;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM9B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMtC;;;OAGG;IACH,WAAW,CAAC,aAAa,UAAO,GAAG,IAAI;IAYvC;;;OAGG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAMjD;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAMpC;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAEhE,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAajE;;OAEG;IACH,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED;;;OAGG;IACH,SAAS,CAAC,sBAAsB,IAAI,IAAI;CAQzC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransactionBuilder = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
const transaction_1 = require("./transaction");
|
|
6
|
+
const constants_1 = require("./constants");
|
|
7
|
+
class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
8
|
+
constructor(_coinConfig) {
|
|
9
|
+
super(_coinConfig);
|
|
10
|
+
this.recoverSigner = false;
|
|
11
|
+
this._signer = [];
|
|
12
|
+
// Recovery mode flag for transaction building
|
|
13
|
+
this._recoveryMode = false;
|
|
14
|
+
this._transaction = new transaction_1.Transaction(_coinConfig);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Initialize the transaction builder fields using the decoded transaction data
|
|
18
|
+
*
|
|
19
|
+
* @param {Tx} tx the transaction data
|
|
20
|
+
* @returns itself
|
|
21
|
+
*/
|
|
22
|
+
initBuilder(tx) {
|
|
23
|
+
// Validate network and blockchain IDs if available
|
|
24
|
+
const txData = tx;
|
|
25
|
+
if (txData.networkID !== undefined && txData.networkID !== this._transaction._networkID) {
|
|
26
|
+
throw new Error(constants_1.ERROR_NETWORK_ID_MISMATCH);
|
|
27
|
+
}
|
|
28
|
+
if (txData.blockchainID) {
|
|
29
|
+
const blockchainID = Buffer.isBuffer(txData.blockchainID)
|
|
30
|
+
? txData.blockchainID
|
|
31
|
+
: Buffer.from(txData.blockchainID, constants_1.HEX_ENCODING);
|
|
32
|
+
const transactionBlockchainID = Buffer.isBuffer(this._transaction._blockchainID)
|
|
33
|
+
? this._transaction._blockchainID
|
|
34
|
+
: Buffer.from(this._transaction._blockchainID, constants_1.HEX_ENCODING);
|
|
35
|
+
if (!blockchainID.equals(transactionBlockchainID)) {
|
|
36
|
+
throw new Error(constants_1.ERROR_BLOCKCHAIN_ID_MISMATCH_BUILDER);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
this._transaction.setTransaction(tx);
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
// region Validators
|
|
43
|
+
/**
|
|
44
|
+
* Validates the threshold
|
|
45
|
+
* @param threshold
|
|
46
|
+
*/
|
|
47
|
+
validateThreshold(threshold) {
|
|
48
|
+
if (!threshold || threshold !== 2) {
|
|
49
|
+
throw new sdk_core_1.BuildTransactionError(constants_1.ERROR_INVALID_THRESHOLD);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Check the UTXO has expected fields.
|
|
54
|
+
* @param UTXO
|
|
55
|
+
*/
|
|
56
|
+
validateUtxo(value) {
|
|
57
|
+
constants_1.UTXO_REQUIRED_FIELDS.forEach((field) => {
|
|
58
|
+
if (!value.hasOwnProperty(field))
|
|
59
|
+
throw new sdk_core_1.BuildTransactionError(`${constants_1.ERROR_UTXOS_MISSING_FIELD} ${field}`);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Check the list of UTXOS is empty and check each UTXO.
|
|
64
|
+
* @param values
|
|
65
|
+
*/
|
|
66
|
+
validateUtxos(values) {
|
|
67
|
+
if (values.length === 0) {
|
|
68
|
+
throw new sdk_core_1.BuildTransactionError(constants_1.ERROR_UTXOS_EMPTY_ARRAY);
|
|
69
|
+
}
|
|
70
|
+
values.forEach(this.validateUtxo);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Validates locktime
|
|
74
|
+
* @param locktime
|
|
75
|
+
*/
|
|
76
|
+
validateLocktime(locktime) {
|
|
77
|
+
if (!locktime || locktime < BigInt(0)) {
|
|
78
|
+
throw new sdk_core_1.BuildTransactionError(constants_1.ERROR_INVALID_LOCKTIME);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// endregion
|
|
82
|
+
/**
|
|
83
|
+
* Threshold is an int that names the number of unique signatures required to spend the output.
|
|
84
|
+
* Must be less than or equal to the length of Addresses.
|
|
85
|
+
* @param {number} value
|
|
86
|
+
*/
|
|
87
|
+
threshold(value) {
|
|
88
|
+
this.validateThreshold(value);
|
|
89
|
+
this._transaction._threshold = value;
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Locktime is a long that contains the unix timestamp that this output can be spent after.
|
|
94
|
+
* The unix timestamp is specific to the second.
|
|
95
|
+
* @param value
|
|
96
|
+
*/
|
|
97
|
+
locktime(value) {
|
|
98
|
+
this.validateLocktime(BigInt(value));
|
|
99
|
+
this._transaction._locktime = BigInt(value);
|
|
100
|
+
return this;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* When using recovery key must be set here
|
|
104
|
+
* @param {boolean}[recoverSigner=true] whether it's recovery signer
|
|
105
|
+
*/
|
|
106
|
+
recoverMode(recoverSigner = true) {
|
|
107
|
+
this.recoverSigner = recoverSigner;
|
|
108
|
+
this._recoveryMode = recoverSigner;
|
|
109
|
+
// Recovery operations typically need single signature
|
|
110
|
+
if (recoverSigner && !this._transaction._threshold) {
|
|
111
|
+
this._transaction._threshold = 1;
|
|
112
|
+
}
|
|
113
|
+
return this;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* fromPubKey is a list of unique addresses that correspond to the private keys that can be used to spend this output
|
|
117
|
+
* @param {string | string[]} senderPubKey
|
|
118
|
+
*/
|
|
119
|
+
fromPubKey(senderPubKey) {
|
|
120
|
+
const pubKeys = senderPubKey instanceof Array ? senderPubKey : [senderPubKey];
|
|
121
|
+
this._transaction._fromAddresses = pubKeys; // Store as strings directly
|
|
122
|
+
return this;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* List of UTXO required as inputs.
|
|
126
|
+
* A UTXO is a standalone representation of a transaction output.
|
|
127
|
+
*
|
|
128
|
+
* @param {DecodedUtxoObj[]} list of UTXOS
|
|
129
|
+
*/
|
|
130
|
+
utxos(value) {
|
|
131
|
+
this.validateUtxos(value);
|
|
132
|
+
this._transaction._utxos = value;
|
|
133
|
+
return this;
|
|
134
|
+
}
|
|
135
|
+
/** @inheritdoc */
|
|
136
|
+
fromImplementation(rawTransaction) {
|
|
137
|
+
// Parse the raw transaction and initialize the builder
|
|
138
|
+
try {
|
|
139
|
+
const parsedTx = JSON.parse(rawTransaction);
|
|
140
|
+
this.initBuilder(parsedTx);
|
|
141
|
+
return this._transaction;
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
throw new Error(`${constants_1.ERROR_PARSE_RAW_TRANSACTION}: ${error instanceof Error ? error.message : constants_1.ERROR_UNKNOWN_PARSING}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get the transaction instance
|
|
149
|
+
*/
|
|
150
|
+
get transaction() {
|
|
151
|
+
return this._transaction;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Validate required fields before building transaction
|
|
155
|
+
* @protected
|
|
156
|
+
*/
|
|
157
|
+
validateRequiredFields() {
|
|
158
|
+
if (this._transaction._fromAddresses.length === 0) {
|
|
159
|
+
throw new Error(constants_1.ERROR_FROM_ADDRESSES_REQUIRED);
|
|
160
|
+
}
|
|
161
|
+
if (this._transaction._utxos.length === 0) {
|
|
162
|
+
throw new Error(constants_1.ERROR_UTXOS_REQUIRED_BUILDER);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
exports.TransactionBuilder = TransactionBuilder;
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQXFGO0FBSXJGLCtDQUE0QztBQUU1QywyQ0FhcUI7QUFFckIsTUFBc0Isa0JBQW1CLFNBQVEsaUNBQXNCO0lBUXJFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBUFgsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDekIsWUFBTyxHQUFjLEVBQUUsQ0FBQztRQUUvQiw4Q0FBOEM7UUFDcEMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFJOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLEVBQU07UUFDaEIsbURBQW1EO1FBQ25ELE1BQU0sTUFBTSxHQUFHLEVBQW1DLENBQUM7UUFFbkQsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBeUIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWTtnQkFDckIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSx3QkFBWSxDQUFDLENBQUM7WUFDbkQsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO2dCQUM5RSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhO2dCQUNqQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSx3QkFBWSxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFvQyxDQUFDLENBQUM7WUFDeEQsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxvQkFBb0I7SUFDcEI7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsU0FBaUI7UUFDakMsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1DQUF1QixDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsS0FBcUI7UUFDaEMsZ0NBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO2dCQUFFLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxHQUFHLHFDQUF5QixJQUFJLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDN0csQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYSxDQUFDLE1BQXdCO1FBQ3BDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksZ0NBQXFCLENBQUMsbUNBQXVCLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILGdCQUFnQixDQUFDLFFBQWdCO1FBQy9CLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxrQ0FBc0IsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBQ0QsWUFBWTtJQUVaOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsS0FBYTtRQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsS0FBc0I7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsYUFBYSxHQUFHLElBQUk7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFFbkMsc0RBQXNEO1FBQ3RELElBQUksYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxZQUErQjtRQUN4QyxNQUFNLE9BQU8sR0FBRyxZQUFZLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLENBQUMsNEJBQTRCO1FBQ3hFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLEtBQXVCO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQVFELGtCQUFrQjtJQUNSLGtCQUFrQixDQUFDLGNBQXNCO1FBQ2pELHVEQUF1RDtRQUN2RCxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzNCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLHVDQUEyQixLQUFLLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGlDQUFxQixFQUFFLENBQ3BHLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDTyxzQkFBc0I7UUFDOUIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBNkIsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUE0QixDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXpMRCxnREF5TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyLCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBEZWNvZGVkVXR4b09iaiwgVHggfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFJhd1RyYW5zYWN0aW9uRGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgRVJST1JfTkVUV09SS19JRF9NSVNNQVRDSCxcbiAgRVJST1JfQkxPQ0tDSEFJTl9JRF9NSVNNQVRDSF9CVUlMREVSLFxuICBFUlJPUl9JTlZBTElEX1RIUkVTSE9MRCxcbiAgRVJST1JfSU5WQUxJRF9MT0NLVElNRSxcbiAgRVJST1JfVVRYT1NfRU1QVFlfQVJSQVksXG4gIEVSUk9SX1VUWE9TX01JU1NJTkdfRklFTEQsXG4gIEVSUk9SX0ZST01fQUREUkVTU0VTX1JFUVVJUkVELFxuICBFUlJPUl9VVFhPU19SRVFVSVJFRF9CVUlMREVSLFxuICBFUlJPUl9QQVJTRV9SQVdfVFJBTlNBQ1RJT04sXG4gIEVSUk9SX1VOS05PV05fUEFSU0lORyxcbiAgVVRYT19SRVFVSVJFRF9GSUVMRFMsXG4gIEhFWF9FTkNPRElORyxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgcmVjb3ZlclNpZ25lciA9IGZhbHNlO1xuICBwdWJsaWMgX3NpZ25lcjogS2V5UGFpcltdID0gW107XG5cbiAgLy8gUmVjb3ZlcnkgbW9kZSBmbGFnIGZvciB0cmFuc2FjdGlvbiBidWlsZGluZ1xuICBwcm90ZWN0ZWQgX3JlY292ZXJ5TW9kZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge1R4fSB0eCB0aGUgdHJhbnNhY3Rpb24gZGF0YVxuICAgKiBAcmV0dXJucyBpdHNlbGZcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUeCk6IHRoaXMge1xuICAgIC8vIFZhbGlkYXRlIG5ldHdvcmsgYW5kIGJsb2NrY2hhaW4gSURzIGlmIGF2YWlsYWJsZVxuICAgIGNvbnN0IHR4RGF0YSA9IHR4IGFzIHVua25vd24gYXMgUmF3VHJhbnNhY3Rpb25EYXRhO1xuXG4gICAgaWYgKHR4RGF0YS5uZXR3b3JrSUQgIT09IHVuZGVmaW5lZCAmJiB0eERhdGEubmV0d29ya0lEICE9PSB0aGlzLl90cmFuc2FjdGlvbi5fbmV0d29ya0lEKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTkVUV09SS19JRF9NSVNNQVRDSCk7XG4gICAgfVxuXG4gICAgaWYgKHR4RGF0YS5ibG9ja2NoYWluSUQpIHtcbiAgICAgIGNvbnN0IGJsb2NrY2hhaW5JRCA9IEJ1ZmZlci5pc0J1ZmZlcih0eERhdGEuYmxvY2tjaGFpbklEKVxuICAgICAgICA/IHR4RGF0YS5ibG9ja2NoYWluSURcbiAgICAgICAgOiBCdWZmZXIuZnJvbSh0eERhdGEuYmxvY2tjaGFpbklELCBIRVhfRU5DT0RJTkcpO1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb25CbG9ja2NoYWluSUQgPSBCdWZmZXIuaXNCdWZmZXIodGhpcy5fdHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRClcbiAgICAgICAgPyB0aGlzLl90cmFuc2FjdGlvbi5fYmxvY2tjaGFpbklEXG4gICAgICAgIDogQnVmZmVyLmZyb20odGhpcy5fdHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRCwgSEVYX0VOQ09ESU5HKTtcbiAgICAgIGlmICghYmxvY2tjaGFpbklELmVxdWFscyh0cmFuc2FjdGlvbkJsb2NrY2hhaW5JRCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX0JMT0NLQ0hBSU5fSURfTUlTTUFUQ0hfQlVJTERFUik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24odHgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdGhyZXNob2xkXG4gICAqIEBwYXJhbSB0aHJlc2hvbGRcbiAgICovXG4gIHZhbGlkYXRlVGhyZXNob2xkKHRocmVzaG9sZDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aHJlc2hvbGQgfHwgdGhyZXNob2xkICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKEVSUk9SX0lOVkFMSURfVEhSRVNIT0xEKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhlIFVUWE8gaGFzIGV4cGVjdGVkIGZpZWxkcy5cbiAgICogQHBhcmFtIFVUWE9cbiAgICovXG4gIHZhbGlkYXRlVXR4byh2YWx1ZTogRGVjb2RlZFV0eG9PYmopOiB2b2lkIHtcbiAgICBVVFhPX1JFUVVJUkVEX0ZJRUxEUy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgaWYgKCF2YWx1ZS5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYCR7RVJST1JfVVRYT1NfTUlTU0lOR19GSUVMRH0gJHtmaWVsZH1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGUgbGlzdCBvZiBVVFhPUyBpcyBlbXB0eSBhbmQgY2hlY2sgZWFjaCBVVFhPLlxuICAgKiBAcGFyYW0gdmFsdWVzXG4gICAqL1xuICB2YWxpZGF0ZVV0eG9zKHZhbHVlczogRGVjb2RlZFV0eG9PYmpbXSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKEVSUk9SX1VUWE9TX0VNUFRZX0FSUkFZKTtcbiAgICB9XG4gICAgdmFsdWVzLmZvckVhY2godGhpcy52YWxpZGF0ZVV0eG8pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBsb2NrdGltZVxuICAgKiBAcGFyYW0gbG9ja3RpbWVcbiAgICovXG4gIHZhbGlkYXRlTG9ja3RpbWUobG9ja3RpbWU6IGJpZ2ludCk6IHZvaWQge1xuICAgIGlmICghbG9ja3RpbWUgfHwgbG9ja3RpbWUgPCBCaWdJbnQoMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoRVJST1JfSU5WQUxJRF9MT0NLVElNRSk7XG4gICAgfVxuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgaXMgYW4gaW50IHRoYXQgbmFtZXMgdGhlIG51bWJlciBvZiB1bmlxdWUgc2lnbmF0dXJlcyByZXF1aXJlZCB0byBzcGVuZCB0aGUgb3V0cHV0LlxuICAgKiBNdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIEFkZHJlc3Nlcy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gICAqL1xuICB0aHJlc2hvbGQodmFsdWU6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVUaHJlc2hvbGQodmFsdWUpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLl90aHJlc2hvbGQgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2NrdGltZSBpcyBhIGxvbmcgdGhhdCBjb250YWlucyB0aGUgdW5peCB0aW1lc3RhbXAgdGhhdCB0aGlzIG91dHB1dCBjYW4gYmUgc3BlbnQgYWZ0ZXIuXG4gICAqIFRoZSB1bml4IHRpbWVzdGFtcCBpcyBzcGVjaWZpYyB0byB0aGUgc2Vjb25kLlxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG4gIGxvY2t0aW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTG9ja3RpbWUoQmlnSW50KHZhbHVlKSk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uX2xvY2t0aW1lID0gQmlnSW50KHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHVzaW5nIHJlY292ZXJ5IGtleSBtdXN0IGJlIHNldCBoZXJlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn1bcmVjb3ZlclNpZ25lcj10cnVlXSB3aGV0aGVyIGl0J3MgcmVjb3Zlcnkgc2lnbmVyXG4gICAqL1xuICByZWNvdmVyTW9kZShyZWNvdmVyU2lnbmVyID0gdHJ1ZSk6IHRoaXMge1xuICAgIHRoaXMucmVjb3ZlclNpZ25lciA9IHJlY292ZXJTaWduZXI7XG4gICAgdGhpcy5fcmVjb3ZlcnlNb2RlID0gcmVjb3ZlclNpZ25lcjtcblxuICAgIC8vIFJlY292ZXJ5IG9wZXJhdGlvbnMgdHlwaWNhbGx5IG5lZWQgc2luZ2xlIHNpZ25hdHVyZVxuICAgIGlmIChyZWNvdmVyU2lnbmVyICYmICF0aGlzLl90cmFuc2FjdGlvbi5fdGhyZXNob2xkKSB7XG4gICAgICB0aGlzLl90cmFuc2FjdGlvbi5fdGhyZXNob2xkID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBmcm9tUHViS2V5IGlzIGEgbGlzdCBvZiB1bmlxdWUgYWRkcmVzc2VzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgcHJpdmF0ZSBrZXlzIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3BlbmQgdGhpcyBvdXRwdXRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gc2VuZGVyUHViS2V5XG4gICAqL1xuICBmcm9tUHViS2V5KHNlbmRlclB1YktleTogc3RyaW5nIHwgc3RyaW5nW10pOiB0aGlzIHtcbiAgICBjb25zdCBwdWJLZXlzID0gc2VuZGVyUHViS2V5IGluc3RhbmNlb2YgQXJyYXkgPyBzZW5kZXJQdWJLZXkgOiBbc2VuZGVyUHViS2V5XTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyA9IHB1YktleXM7IC8vIFN0b3JlIGFzIHN0cmluZ3MgZGlyZWN0bHlcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IG9mIFVUWE8gcmVxdWlyZWQgYXMgaW5wdXRzLlxuICAgKiBBIFVUWE8gaXMgYSBzdGFuZGFsb25lIHJlcHJlc2VudGF0aW9uIG9mIGEgdHJhbnNhY3Rpb24gb3V0cHV0LlxuICAgKlxuICAgKiBAcGFyYW0ge0RlY29kZWRVdHhvT2JqW119IGxpc3Qgb2YgVVRYT1NcbiAgICovXG4gIHV0eG9zKHZhbHVlOiBEZWNvZGVkVXR4b09ialtdKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVV0eG9zKHZhbHVlKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5fdXR4b3MgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgRmxhcmUgdHJhbnNhY3Rpb24gdXNpbmcgRmxhcmVKUyBBUElcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGJ1aWxkRmxhcmVUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIC8vIFBhcnNlIHRoZSByYXcgdHJhbnNhY3Rpb24gYW5kIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkVHggPSBKU09OLnBhcnNlKHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgIHRoaXMuaW5pdEJ1aWxkZXIocGFyc2VkVHgpO1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGAke0VSUk9SX1BBUlNFX1JBV19UUkFOU0FDVElPTn06ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBFUlJPUl9VTktOT1dOX1BBUlNJTkd9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB0cmFuc2FjdGlvbiBpbnN0YW5jZVxuICAgKi9cbiAgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgcmVxdWlyZWQgZmllbGRzIGJlZm9yZSBidWlsZGluZyB0cmFuc2FjdGlvblxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgdmFsaWRhdGVSZXF1aXJlZEZpZWxkcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfRlJPTV9BRERSRVNTRVNfUkVRVUlSRUQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24uX3V0eG9zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX1VUWE9TX1JFUVVJUkVEX0JVSUxERVIpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { DecodedUtxoObj } from './iface';
|
|
2
|
+
/**
|
|
3
|
+
* Base extended transaction interface with common optional properties
|
|
4
|
+
*/
|
|
5
|
+
export interface BaseExtendedTransaction {
|
|
6
|
+
_memo?: Uint8Array;
|
|
7
|
+
_outputAmount?: string;
|
|
8
|
+
_utxos?: DecodedUtxoObj[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Extended transaction for staking transactions (delegator/validator)
|
|
12
|
+
*/
|
|
13
|
+
export interface StakingExtendedTransaction extends BaseExtendedTransaction {
|
|
14
|
+
_rewardAddresses: string[];
|
|
15
|
+
_nodeID?: string;
|
|
16
|
+
_startTime?: bigint;
|
|
17
|
+
_endTime?: bigint;
|
|
18
|
+
_stakeAmount?: bigint;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Extended transaction for validator transactions
|
|
22
|
+
*/
|
|
23
|
+
export interface ValidatorExtendedTransaction extends StakingExtendedTransaction {
|
|
24
|
+
_delegationFeeRate?: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Extended transaction for permissionless validator transactions
|
|
28
|
+
*/
|
|
29
|
+
export interface PermissionlessValidatorExtendedTransaction extends ValidatorExtendedTransaction {
|
|
30
|
+
_blsPublicKey?: string;
|
|
31
|
+
_blsSignature?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Base raw transaction data structure from serialized transactions
|
|
35
|
+
*/
|
|
36
|
+
export interface BaseRawTransactionData {
|
|
37
|
+
memo?: Uint8Array | string;
|
|
38
|
+
utxos?: DecodedUtxoObj[];
|
|
39
|
+
outputAmount?: string;
|
|
40
|
+
networkID?: number;
|
|
41
|
+
blockchainID?: Buffer | string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Raw transaction data for delegator transactions
|
|
45
|
+
*/
|
|
46
|
+
export interface DelegatorRawTransactionData extends BaseRawTransactionData {
|
|
47
|
+
nodeID: string;
|
|
48
|
+
startTime: string | number | bigint;
|
|
49
|
+
endTime: string | number | bigint;
|
|
50
|
+
stakeAmount: string | number | bigint;
|
|
51
|
+
rewardAddresses: string[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Raw transaction data for validator transactions
|
|
55
|
+
*/
|
|
56
|
+
export interface ValidatorRawTransactionData extends DelegatorRawTransactionData {
|
|
57
|
+
delegationFeeRate: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Raw transaction data for permissionless validator transactions
|
|
61
|
+
*/
|
|
62
|
+
export interface PermissionlessValidatorRawTransactionData extends ValidatorRawTransactionData {
|
|
63
|
+
blsPublicKey: string;
|
|
64
|
+
blsSignature: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Raw transaction data structure from serialized transactions
|
|
68
|
+
* Union type supporting all transaction types with proper type safety
|
|
69
|
+
*/
|
|
70
|
+
export type RawTransactionData = BaseRawTransactionData | DelegatorRawTransactionData | ValidatorRawTransactionData | PermissionlessValidatorRawTransactionData;
|
|
71
|
+
/**
|
|
72
|
+
* Specific transaction extension types for better type safety
|
|
73
|
+
*/
|
|
74
|
+
export type TransactionWithBaseExtensions = BaseExtendedTransaction & Record<string, unknown>;
|
|
75
|
+
export type TransactionWithStakingExtensions = StakingExtendedTransaction & Record<string, unknown>;
|
|
76
|
+
export type TransactionWithValidatorExtensions = ValidatorExtendedTransaction & Record<string, unknown>;
|
|
77
|
+
export type TransactionWithPermissionlessValidatorExtensions = PermissionlessValidatorExtendedTransaction & Record<string, unknown>;
|
|
78
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,uBAAuB;IACzE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,0BAA0B;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,0CAA2C,SAAQ,4BAA4B;IAC9F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IAErC,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,sBAAsB;IAEzE,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACtC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,2BAA2B;IAE9E,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,yCAA0C,SAAQ,2BAA2B;IAE5F,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B,sBAAsB,GACtB,2BAA2B,GAC3B,2BAA2B,GAC3B,yCAAyC,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9F,MAAM,MAAM,gCAAgC,GAAG,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpG,MAAM,MAAM,kCAAkC,GAAG,4BAA4B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACxG,MAAM,MAAM,gDAAgD,GAAG,0CAA0C,GACvG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Type definitions for Flare P-chain transaction builders
|
|
3
|
+
// Replaces loose 'any' types with proper type safety
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwwREFBMEQ7QUFDMUQscURBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVHlwZSBkZWZpbml0aW9ucyBmb3IgRmxhcmUgUC1jaGFpbiB0cmFuc2FjdGlvbiBidWlsZGVyc1xuLy8gUmVwbGFjZXMgbG9vc2UgJ2FueScgdHlwZXMgd2l0aCBwcm9wZXIgdHlwZSBzYWZldHlcblxuaW1wb3J0IHsgRGVjb2RlZFV0eG9PYmogfSBmcm9tICcuL2lmYWNlJztcblxuLyoqXG4gKiBCYXNlIGV4dGVuZGVkIHRyYW5zYWN0aW9uIGludGVyZmFjZSB3aXRoIGNvbW1vbiBvcHRpb25hbCBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUV4dGVuZGVkVHJhbnNhY3Rpb24ge1xuICBfbWVtbz86IFVpbnQ4QXJyYXk7XG4gIF9vdXRwdXRBbW91bnQ/OiBzdHJpbmc7XG4gIF91dHhvcz86IERlY29kZWRVdHhvT2JqW107XG59XG5cbi8qKlxuICogRXh0ZW5kZWQgdHJhbnNhY3Rpb24gZm9yIHN0YWtpbmcgdHJhbnNhY3Rpb25zIChkZWxlZ2F0b3IvdmFsaWRhdG9yKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YWtpbmdFeHRlbmRlZFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZUV4dGVuZGVkVHJhbnNhY3Rpb24ge1xuICBfcmV3YXJkQWRkcmVzc2VzOiBzdHJpbmdbXTsgLy8gUmVxdWlyZWQgZm9yIGFsbCBzdGFraW5nIHRyYW5zYWN0aW9uc1xuICBfbm9kZUlEPzogc3RyaW5nO1xuICBfc3RhcnRUaW1lPzogYmlnaW50O1xuICBfZW5kVGltZT86IGJpZ2ludDtcbiAgX3N0YWtlQW1vdW50PzogYmlnaW50O1xufVxuXG4vKipcbiAqIEV4dGVuZGVkIHRyYW5zYWN0aW9uIGZvciB2YWxpZGF0b3IgdHJhbnNhY3Rpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdG9yRXh0ZW5kZWRUcmFuc2FjdGlvbiBleHRlbmRzIFN0YWtpbmdFeHRlbmRlZFRyYW5zYWN0aW9uIHtcbiAgX2RlbGVnYXRpb25GZWVSYXRlPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEV4dGVuZGVkIHRyYW5zYWN0aW9uIGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JFeHRlbmRlZFRyYW5zYWN0aW9uIGV4dGVuZHMgVmFsaWRhdG9yRXh0ZW5kZWRUcmFuc2FjdGlvbiB7XG4gIF9ibHNQdWJsaWNLZXk/OiBzdHJpbmc7XG4gIF9ibHNTaWduYXR1cmU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQmFzZSByYXcgdHJhbnNhY3Rpb24gZGF0YSBzdHJ1Y3R1cmUgZnJvbSBzZXJpYWxpemVkIHRyYW5zYWN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VSYXdUcmFuc2FjdGlvbkRhdGEge1xuICAvLyBPcHRpb25hbCBmaWVsZHMgY29tbW9uIHRvIGFsbCB0cmFuc2FjdGlvbiB0eXBlc1xuICBtZW1vPzogVWludDhBcnJheSB8IHN0cmluZztcbiAgdXR4b3M/OiBEZWNvZGVkVXR4b09ialtdO1xuICBvdXRwdXRBbW91bnQ/OiBzdHJpbmc7XG4gIG5ldHdvcmtJRD86IG51bWJlcjtcbiAgYmxvY2tjaGFpbklEPzogQnVmZmVyIHwgc3RyaW5nO1xufVxuXG4vKipcbiAqIFJhdyB0cmFuc2FjdGlvbiBkYXRhIGZvciBkZWxlZ2F0b3IgdHJhbnNhY3Rpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZWdhdG9yUmF3VHJhbnNhY3Rpb25EYXRhIGV4dGVuZHMgQmFzZVJhd1RyYW5zYWN0aW9uRGF0YSB7XG4gIC8vIFJlcXVpcmVkIGZpZWxkcyBmb3IgZGVsZWdhdG9yIHRyYW5zYWN0aW9uc1xuICBub2RlSUQ6IHN0cmluZztcbiAgc3RhcnRUaW1lOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQ7XG4gIGVuZFRpbWU6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludDtcbiAgc3Rha2VBbW91bnQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludDtcbiAgcmV3YXJkQWRkcmVzc2VzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBSYXcgdHJhbnNhY3Rpb24gZGF0YSBmb3IgdmFsaWRhdG9yIHRyYW5zYWN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvclJhd1RyYW5zYWN0aW9uRGF0YSBleHRlbmRzIERlbGVnYXRvclJhd1RyYW5zYWN0aW9uRGF0YSB7XG4gIC8vIEFkZGl0aW9uYWwgcmVxdWlyZWQgZmllbGQgZm9yIHZhbGlkYXRvciB0cmFuc2FjdGlvbnNcbiAgZGVsZWdhdGlvbkZlZVJhdGU6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSYXcgdHJhbnNhY3Rpb24gZGF0YSBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yUmF3VHJhbnNhY3Rpb25EYXRhIGV4dGVuZHMgVmFsaWRhdG9yUmF3VHJhbnNhY3Rpb25EYXRhIHtcbiAgLy8gQWRkaXRpb25hbCByZXF1aXJlZCBmaWVsZHMgZm9yIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvciB0cmFuc2FjdGlvbnNcbiAgYmxzUHVibGljS2V5OiBzdHJpbmc7XG4gIGJsc1NpZ25hdHVyZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJhdyB0cmFuc2FjdGlvbiBkYXRhIHN0cnVjdHVyZSBmcm9tIHNlcmlhbGl6ZWQgdHJhbnNhY3Rpb25zXG4gKiBVbmlvbiB0eXBlIHN1cHBvcnRpbmcgYWxsIHRyYW5zYWN0aW9uIHR5cGVzIHdpdGggcHJvcGVyIHR5cGUgc2FmZXR5XG4gKi9cbmV4cG9ydCB0eXBlIFJhd1RyYW5zYWN0aW9uRGF0YSA9XG4gIHwgQmFzZVJhd1RyYW5zYWN0aW9uRGF0YVxuICB8IERlbGVnYXRvclJhd1RyYW5zYWN0aW9uRGF0YVxuICB8IFZhbGlkYXRvclJhd1RyYW5zYWN0aW9uRGF0YVxuICB8IFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yUmF3VHJhbnNhY3Rpb25EYXRhO1xuXG4vKipcbiAqIFNwZWNpZmljIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiB0eXBlcyBmb3IgYmV0dGVyIHR5cGUgc2FmZXR5XG4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uV2l0aEJhc2VFeHRlbnNpb25zID0gQmFzZUV4dGVuZGVkVHJhbnNhY3Rpb24gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uV2l0aFN0YWtpbmdFeHRlbnNpb25zID0gU3Rha2luZ0V4dGVuZGVkVHJhbnNhY3Rpb24gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uV2l0aFZhbGlkYXRvckV4dGVuc2lvbnMgPSBWYWxpZGF0b3JFeHRlbmRlZFRyYW5zYWN0aW9uICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbldpdGhQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvckV4dGVuc2lvbnMgPSBQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvckV4dGVuZGVkVHJhbnNhY3Rpb24gJlxuICBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiJdfQ==
|
package/dist/src/lib/utils.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import { TransferableOutput } from '@flarenetwork/flarejs';
|
|
|
2
2
|
import { BaseUtils, Entry } from '@bitgo-beta/sdk-core';
|
|
3
3
|
import { FlareNetwork } from '@bitgo-beta/statics';
|
|
4
4
|
import { DeprecatedOutput, DeprecatedTx, Output } from './iface';
|
|
5
|
+
export declare const createHexRegex: (length: number, requirePrefix?: boolean) => RegExp;
|
|
6
|
+
export declare const createFlexibleHexRegex: (requirePrefix?: boolean) => RegExp;
|
|
5
7
|
export declare class Utils implements BaseUtils {
|
|
6
8
|
includeIn(walletAddresses: string[], otxoOutputAddresses: string[]): boolean;
|
|
7
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,SAAS,EACT,KAAK,EAMN,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|