@bitgo-beta/sdk-coin-flrp 1.0.0-alpha.73 → 1.0.0-alpha.75
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/ExportInPTxBuilder.d.ts +14 -1
- package/dist/src/lib/ExportInPTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/ExportInPTxBuilder.js +68 -21
- package/dist/src/lib/ImportInCTxBuilder.d.ts +0 -1
- package/dist/src/lib/ImportInCTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/ImportInCTxBuilder.js +30 -19
- package/dist/src/lib/ImportInPTxBuilder.d.ts +0 -10
- package/dist/src/lib/ImportInPTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/ImportInPTxBuilder.js +29 -32
- package/dist/src/lib/atomicTransactionBuilder.d.ts +29 -27
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicTransactionBuilder.js +89 -58
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +13 -4
- package/dist/src/lib/utils.d.ts +25 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +42 -3
- package/dist/test/resources/account.d.ts +21 -0
- package/dist/test/resources/account.d.ts.map +1 -1
- package/dist/test/resources/account.js +23 -2
- package/dist/test/resources/transactionData/exportInP.d.ts.map +1 -1
- package/dist/test/resources/transactionData/exportInP.js +5 -6
- package/dist/test/resources/transactionData/importInC.js +5 -5
- package/dist/test/resources/transactionData/importInP.js +5 -5
- package/dist/test/unit/flrp.js +3 -3
- package/dist/test/unit/lib/exportInPTxBuilder.js +144 -34
- package/dist/test/unit/lib/importInCTxBuilder.js +51 -74
- package/dist/test/unit/lib/importInPTxBuilder.js +48 -182
- package/dist/test/unit/lib/utils.js +82 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/dist/test/unit/lib/signatureIndex.d.ts +0 -13
- package/dist/test/unit/lib/signatureIndex.d.ts.map +0 -1
- package/dist/test/unit/lib/signatureIndex.js +0 -591
|
@@ -15,6 +15,20 @@ export declare class ExportInPTxBuilder extends AtomicTransactionBuilder {
|
|
|
15
15
|
* @protected
|
|
16
16
|
*/
|
|
17
17
|
protected buildFlareTransaction(): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Create a corrected ExportTx with the given change outputs.
|
|
20
|
+
* This is necessary because FlareJS's newExportTx doesn't support setting
|
|
21
|
+
* the threshold and locktime for change outputs.
|
|
22
|
+
*
|
|
23
|
+
* FlareJS declares baseTx.outputs as readonly, so we use Object.defineProperty
|
|
24
|
+
* to override the property with the corrected outputs. This is a workaround until
|
|
25
|
+
* FlareJS adds proper support for change output thresholds.
|
|
26
|
+
*
|
|
27
|
+
* @param originalTx - The original ExportTx
|
|
28
|
+
* @param correctedOutputs - The corrected change outputs with proper threshold
|
|
29
|
+
* @returns A new ExportTx with the corrected change outputs
|
|
30
|
+
*/
|
|
31
|
+
private createCorrectedExportTx;
|
|
18
32
|
/**
|
|
19
33
|
* Recover UTXOs from inputs.
|
|
20
34
|
* Uses output addresses as proxy for UTXO addresses.
|
|
@@ -24,6 +38,5 @@ export declare class ExportInPTxBuilder extends AtomicTransactionBuilder {
|
|
|
24
38
|
* @returns Array of decoded UTXO objects
|
|
25
39
|
*/
|
|
26
40
|
private recoverUtxos;
|
|
27
|
-
private computeAddressesIndexFromParsed;
|
|
28
41
|
}
|
|
29
42
|
//# sourceMappingURL=ExportInPTxBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExportInPTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/ExportInPTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAuC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAQL,UAAU,EAEX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAmE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE9F,qBAAa,kBAAmB,SAAQ,wBAAwB;gBAClD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAY7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"ExportInPTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/ExportInPTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAuC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAQL,UAAU,EAEX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAmE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE9F,qBAAa,kBAAmB,SAAQ,wBAAwB;gBAClD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAY7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IA2E9E,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAItC;;;;OAIG;cACa,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IA+HtD;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;CA4BrB"}
|
|
@@ -56,15 +56,28 @@ class ExportInPTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBui
|
|
|
56
56
|
if (rawBytes && hasCredentials) {
|
|
57
57
|
this.transaction._rawSignedBytes = rawBytes;
|
|
58
58
|
}
|
|
59
|
-
this.
|
|
59
|
+
this.computeAddressesIndex(true);
|
|
60
|
+
// Use parsed credentials if available, otherwise create new ones based on sigIndices
|
|
61
|
+
// The sigIndices from the parsed transaction (stored in addressesIndex) determine
|
|
62
|
+
// the correct credential ordering for on-chain verification
|
|
60
63
|
const txCredentials = credentials.length > 0
|
|
61
64
|
? credentials
|
|
62
65
|
: this.transaction._utxos.map((utxo) => {
|
|
63
66
|
const utxoThreshold = utxo.threshold || this.transaction._threshold;
|
|
67
|
+
const sigIndices = utxo.addressesIndex ?? [];
|
|
68
|
+
// Use sigIndices-based method if we have valid sigIndices from parsed transaction
|
|
69
|
+
if (sigIndices.length >= utxoThreshold && sigIndices.every((idx) => idx >= 0)) {
|
|
70
|
+
return this.createCredentialForUtxo(utxo, utxoThreshold, sigIndices);
|
|
71
|
+
}
|
|
64
72
|
return this.createCredentialForUtxo(utxo, utxoThreshold);
|
|
65
73
|
});
|
|
74
|
+
// Create addressMaps using sigIndices from parsed transaction for consistency
|
|
66
75
|
const addressMaps = this.transaction._utxos.map((utxo) => {
|
|
67
76
|
const utxoThreshold = utxo.threshold || this.transaction._threshold;
|
|
77
|
+
const sigIndices = utxo.addressesIndex ?? [];
|
|
78
|
+
if (sigIndices.length >= utxoThreshold && sigIndices.every((idx) => idx >= 0)) {
|
|
79
|
+
return this.createAddressMapForUtxo(utxo, utxoThreshold, sigIndices);
|
|
80
|
+
}
|
|
68
81
|
return this.createAddressMapForUtxo(utxo, utxoThreshold);
|
|
69
82
|
});
|
|
70
83
|
const unsignedTx = new flarejs_1.UnsignedTx(exportTx, [], new flarejs_1.utils.AddressMaps(addressMaps), txCredentials);
|
|
@@ -110,32 +123,77 @@ class ExportInPTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBui
|
|
|
110
123
|
throw new sdk_core_1.BuildTransactionError(`Insufficient UTXO balance: have ${totalUtxoAmount.toString()} nFLR, need at least ${this.transaction._amount.toString()} nFLR (plus fee)`);
|
|
111
124
|
}
|
|
112
125
|
const assetId = utils_1.default.flareIdString(this.transaction._assetId).toString();
|
|
113
|
-
const
|
|
114
|
-
const transferableOutput = flarejs_1.TransferableOutput.fromNative(assetId, this.transaction._amount,
|
|
126
|
+
const allFromAddresses = this.transaction._fromAddresses.map((addr) => Buffer.from(addr));
|
|
127
|
+
const transferableOutput = flarejs_1.TransferableOutput.fromNative(assetId, this.transaction._amount, allFromAddresses, this.transaction._locktime, this.transaction._threshold);
|
|
128
|
+
const signingAddresses = this.getSigningAddresses();
|
|
115
129
|
const exportTx = flarejs_1.pvm.e.newExportTx({
|
|
116
130
|
feeState,
|
|
117
|
-
fromAddressesBytes:
|
|
131
|
+
fromAddressesBytes: signingAddresses,
|
|
118
132
|
destinationChainId: this.transaction._network.cChainBlockchainID,
|
|
119
133
|
outputs: [transferableOutput],
|
|
120
134
|
utxos: nativeUtxos,
|
|
121
135
|
}, this.transaction._context);
|
|
122
136
|
const flareUnsignedTx = exportTx;
|
|
123
137
|
const innerTx = flareUnsignedTx.getTx();
|
|
124
|
-
const
|
|
125
|
-
|
|
138
|
+
const changeOutputs = innerTx.baseTx.outputs;
|
|
139
|
+
let correctedExportTx = innerTx;
|
|
140
|
+
if (changeOutputs.length > 0) {
|
|
141
|
+
const allWalletAddresses = this.transaction._fromAddresses.map((addr) => Buffer.from(addr));
|
|
142
|
+
const correctedChangeOutputs = changeOutputs.map((output) => {
|
|
143
|
+
const transferOut = output.output;
|
|
144
|
+
const assetIdStr = utils_1.default.flareIdString(Buffer.from(output.assetId.toBytes()).toString('hex')).toString();
|
|
145
|
+
return flarejs_1.TransferableOutput.fromNative(assetIdStr, transferOut.amount(), allWalletAddresses, this.transaction._locktime, this.transaction._threshold);
|
|
146
|
+
});
|
|
147
|
+
correctedExportTx = this.createCorrectedExportTx(innerTx, correctedChangeOutputs);
|
|
148
|
+
}
|
|
149
|
+
const utxosWithIndex = correctedExportTx.baseTx.inputs.map((input) => {
|
|
150
|
+
const inputTxid = utils_1.default.cb58Encode(Buffer.from(input.utxoID.txID.toBytes()));
|
|
151
|
+
const inputOutputIdx = input.utxoID.outputIdx.value().toString();
|
|
152
|
+
const originalUtxo = this.transaction._utxos.find((utxo) => utxo.txid === inputTxid && utxo.outputidx === inputOutputIdx);
|
|
153
|
+
if (!originalUtxo) {
|
|
154
|
+
throw new sdk_core_1.BuildTransactionError(`Could not find matching UTXO for input ${inputTxid}:${inputOutputIdx}`);
|
|
155
|
+
}
|
|
156
|
+
const transferInput = input.input;
|
|
157
|
+
const actualSigIndices = transferInput.sigIndicies();
|
|
126
158
|
return {
|
|
127
159
|
...originalUtxo,
|
|
128
160
|
addressesIndex: originalUtxo.addressesIndex,
|
|
129
161
|
addresses: originalUtxo.addresses,
|
|
130
162
|
threshold: originalUtxo.threshold || this.transaction._threshold,
|
|
163
|
+
actualSigIndices,
|
|
131
164
|
};
|
|
132
165
|
});
|
|
133
166
|
this.transaction._utxos = utxosWithIndex;
|
|
134
|
-
const txCredentials = utxosWithIndex.map((utxo) => this.createCredentialForUtxo(utxo, utxo.threshold));
|
|
135
|
-
const addressMaps = utxosWithIndex.map((utxo) => this.createAddressMapForUtxo(utxo, utxo.threshold));
|
|
136
|
-
const fixedUnsignedTx = new flarejs_1.UnsignedTx(
|
|
167
|
+
const txCredentials = utxosWithIndex.map((utxo) => this.createCredentialForUtxo(utxo, utxo.threshold, utxo.actualSigIndices));
|
|
168
|
+
const addressMaps = utxosWithIndex.map((utxo) => this.createAddressMapForUtxo(utxo, utxo.threshold, utxo.actualSigIndices));
|
|
169
|
+
const fixedUnsignedTx = new flarejs_1.UnsignedTx(correctedExportTx, [], new flarejs_1.utils.AddressMaps(addressMaps), txCredentials);
|
|
137
170
|
this.transaction.setTransaction(fixedUnsignedTx);
|
|
138
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Create a corrected ExportTx with the given change outputs.
|
|
174
|
+
* This is necessary because FlareJS's newExportTx doesn't support setting
|
|
175
|
+
* the threshold and locktime for change outputs.
|
|
176
|
+
*
|
|
177
|
+
* FlareJS declares baseTx.outputs as readonly, so we use Object.defineProperty
|
|
178
|
+
* to override the property with the corrected outputs. This is a workaround until
|
|
179
|
+
* FlareJS adds proper support for change output thresholds.
|
|
180
|
+
*
|
|
181
|
+
* @param originalTx - The original ExportTx
|
|
182
|
+
* @param correctedOutputs - The corrected change outputs with proper threshold
|
|
183
|
+
* @returns A new ExportTx with the corrected change outputs
|
|
184
|
+
*/
|
|
185
|
+
createCorrectedExportTx(originalTx, correctedOutputs) {
|
|
186
|
+
// FlareJS declares baseTx.outputs as `public readonly outputs: readonly TransferableOutput[]`
|
|
187
|
+
// We use Object.defineProperty to override the readonly property with our corrected outputs.
|
|
188
|
+
// This is necessary because FlareJS's newExportTx doesn't support change output threshold/locktime.
|
|
189
|
+
Object.defineProperty(originalTx.baseTx, 'outputs', {
|
|
190
|
+
value: correctedOutputs,
|
|
191
|
+
writable: false,
|
|
192
|
+
enumerable: true,
|
|
193
|
+
configurable: true,
|
|
194
|
+
});
|
|
195
|
+
return originalTx;
|
|
196
|
+
}
|
|
139
197
|
/**
|
|
140
198
|
* Recover UTXOs from inputs.
|
|
141
199
|
* Uses output addresses as proxy for UTXO addresses.
|
|
@@ -164,17 +222,6 @@ class ExportInPTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBui
|
|
|
164
222
|
return utxo;
|
|
165
223
|
});
|
|
166
224
|
}
|
|
167
|
-
computeAddressesIndexFromParsed() {
|
|
168
|
-
const sender = this.transaction._fromAddresses;
|
|
169
|
-
if (!sender || sender.length === 0)
|
|
170
|
-
return;
|
|
171
|
-
this.transaction._utxos.forEach((utxo) => {
|
|
172
|
-
if (utxo.addresses && utxo.addresses.length > 0) {
|
|
173
|
-
const utxoAddresses = utxo.addresses.map((a) => utils_1.default.parseAddress(a));
|
|
174
|
-
utxo.addressesIndex = sender.map((senderAddr) => utxoAddresses.findIndex((utxoAddr) => Buffer.compare(Buffer.from(utxoAddr), Buffer.from(senderAddr)) === 0));
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
225
|
}
|
|
179
226
|
exports.ExportInPTxBuilder = ExportInPTxBuilder;
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwb3J0SW5QVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9FeHBvcnRJblBUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsbURBQTRGO0FBQzVGLHlFQUFzRTtBQUN0RSxtREFVK0I7QUFDL0Isb0RBQTRCO0FBQzVCLG1DQUE4RjtBQUU5RixNQUFhLGtCQUFtQixTQUFRLG1EQUF3QjtJQUM5RCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQiwyQkFBMkI7UUFDM0IsNENBQTRDO1FBQzVDLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZGLHdFQUF3RTtRQUN4RSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQzdHLEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBTSxFQUFFLFFBQWlCLEVBQUUsaUJBQWdDO1FBQ3JFLE1BQU0sUUFBUSxHQUFHLEVBQXdCLENBQUM7UUFFMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLHVCQUFZLENBQUMscUVBQXFFLENBQUMsQ0FBQztRQUNoRyxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUM5QixJQUFJLE9B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QUFXLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVTtnQkFDNUQsU0FBUyxFQUFFLGNBQWM7Z0JBQ3pCLGNBQWMsRUFBRSxXQUFXO2FBQzVCLENBQUM7WUFDRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLCtCQUErQjtRQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQztRQUMvQyxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU87UUFFM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2RSxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUM5QyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUM1RyxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBOU5ELGdEQThOQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgTm90U3VwcG9ydGVkLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBBdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2F0b21pY1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQge1xuICBwdm1TZXJpYWwsXG4gIFVuc2lnbmVkVHgsXG4gIFRyYW5zZmVyYWJsZUlucHV0LFxuICBUcmFuc2ZlcmFibGVPdXRwdXQsXG4gIFRyYW5zZmVySW5wdXQsXG4gIHV0aWxzIGFzIEZsYXJlVXRpbHMsXG4gIFRyYW5zZmVyT3V0cHV0LFxuICBDcmVkZW50aWFsLFxuICBwdm0sXG59IGZyb20gJ0BmbGFyZW5ldHdvcmsvZmxhcmVqcyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBEZWNvZGVkVXR4b09iaiwgU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCwgRmxhcmVUcmFuc2FjdGlvblR5cGUsIFR4IH0gZnJvbSAnLi9pZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBFeHBvcnRJblBUeEJ1aWxkZXIgZXh0ZW5kcyBBdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgLy8gRm9yIEV4cG9ydCBGUk9NIFAtY2hhaW46XG4gICAgLy8gLSBleHRlcm5hbCBjaGFpbiAoZGVzdGluYXRpb24pIGlzIEMtY2hhaW5cbiAgICAvLyAtIGJsb2NrY2hhaW4gSUQgKHNvdXJjZSkgaXMgUC1jaGFpblxuICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCA9IHV0aWxzLmNiNThEZWNvZGUodGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5jQ2hhaW5CbG9ja2NoYWluSUQpO1xuICAgIC8vIFAtY2hhaW4gYmxvY2tjaGFpbiBJRCAoZnJvbSBuZXR3b3JrIGNvbmZpZyAtIGRlY29kZSBmcm9tIGNiNTggdG8gaGV4KVxuICAgIHRoaXMudHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRCA9IEJ1ZmZlci5mcm9tKHV0aWxzLmNiNThEZWNvZGUodGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5ibG9ja2NoYWluSUQpKS50b1N0cmluZyhcbiAgICAgICdoZXgnXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQ7XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHgsIHJhd0J5dGVzPzogQnVmZmVyLCBwYXJzZWRDcmVkZW50aWFscz86IENyZWRlbnRpYWxbXSk6IHRoaXMge1xuICAgIGNvbnN0IGV4cG9ydFR4ID0gdHggYXMgcHZtU2VyaWFsLkV4cG9ydFR4O1xuXG4gICAgaWYgKCF0aGlzLnZlcmlmeVR4VHlwZShleHBvcnRUeC5fdHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ1RyYW5zYWN0aW9uIGNhbm5vdCBiZSBwYXJzZWQgb3IgaGFzIGFuIHVuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgICB9XG4gICAgY29uc3Qgb3V0cHV0cyA9IGV4cG9ydFR4Lm91dHM7XG4gICAgaWYgKG91dHB1dHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBjYW4gaGF2ZSBvbmUgZXh0ZXJuYWwgb3V0cHV0Jyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1swXTtcbiAgICBjb25zdCBvdXRwdXRUcmFuc2ZlciA9IG91dHB1dC5vdXRwdXQgYXMgVHJhbnNmZXJPdXRwdXQ7XG4gICAgY29uc3QgYXNzZXRJZCA9IG91dHB1dC5hc3NldElkLnRvQnl0ZXMoKTtcbiAgICBpZiAoQnVmZmVyLmNvbXBhcmUoQnVmZmVyLmZyb20oYXNzZXRJZCksIEJ1ZmZlci5mcm9tKHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQsICdoZXgnKSkgIT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEFzc2V0IElEIG9mIHRoZSBvdXRwdXQgZG9lcyBub3QgbWF0Y2ggdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0T3duZXJzID0gb3V0cHV0VHJhbnNmZXIub3V0cHV0T3duZXJzO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lID0gb3V0cHV0T3duZXJzLmxvY2t0aW1lLnZhbHVlKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkID0gb3V0cHV0T3duZXJzLnRocmVzaG9sZC52YWx1ZSgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMgPSBvdXRwdXRPd25lcnMuYWRkcnMubWFwKChhZGRyKSA9PiBCdWZmZXIuZnJvbShhZGRyLnRvQnl0ZXMoKSkpO1xuICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCA9IEJ1ZmZlci5mcm9tKGV4cG9ydFR4LmRlc3RpbmF0aW9uLnRvQnl0ZXMoKSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fYW1vdW50ID0gb3V0cHV0VHJhbnNmZXIuYW1vdW50KCk7XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcyA9IHRoaXMucmVjb3ZlclV0eG9zKFsuLi5leHBvcnRUeC5iYXNlVHguaW5wdXRzXSwgb3V0cHV0T3duZXJzLmFkZHJzKTtcblxuICAgIGNvbnN0IHRvdGFsSW5wdXRBbW91bnQgPSBleHBvcnRUeC5iYXNlVHguaW5wdXRzLnJlZHVjZSgoc3VtLCBpbnB1dCkgPT4gc3VtICsgaW5wdXQuYW1vdW50KCksIEJpZ0ludCgwKSk7XG4gICAgY29uc3QgY2hhbmdlT3V0cHV0QW1vdW50ID0gZXhwb3J0VHguYmFzZVR4Lm91dHB1dHMucmVkdWNlKChzdW0sIG91dCkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNmZXJPdXQgPSBvdXQub3V0cHV0IGFzIFRyYW5zZmVyT3V0cHV0O1xuICAgICAgcmV0dXJuIHN1bSArIHRyYW5zZmVyT3V0LmFtb3VudCgpO1xuICAgIH0sIEJpZ0ludCgwKSk7XG4gICAgY29uc3QgZmVlID0gdG90YWxJbnB1dEFtb3VudCAtIGNoYW5nZU91dHB1dEFtb3VudCAtIHRoaXMudHJhbnNhY3Rpb24uX2Ftb3VudDtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlID0gZmVlLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHBhcnNlZENyZWRlbnRpYWxzIHx8IFtdO1xuICAgIGNvbnN0IGhhc0NyZWRlbnRpYWxzID0gY3JlZGVudGlhbHMubGVuZ3RoID4gMDtcblxuICAgIGlmIChyYXdCeXRlcyAmJiBoYXNDcmVkZW50aWFscykge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5fcmF3U2lnbmVkQnl0ZXMgPSByYXdCeXRlcztcbiAgICB9XG5cbiAgICB0aGlzLmNvbXB1dGVBZGRyZXNzZXNJbmRleEZyb21QYXJzZWQoKTtcblxuICAgIGNvbnN0IHR4Q3JlZGVudGlhbHMgPVxuICAgICAgY3JlZGVudGlhbHMubGVuZ3RoID4gMFxuICAgICAgICA/IGNyZWRlbnRpYWxzXG4gICAgICAgIDogdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MubWFwKCh1dHhvKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1dHhvVGhyZXNob2xkID0gdXR4by50aHJlc2hvbGQgfHwgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ3JlZGVudGlhbEZvclV0eG8odXR4bywgdXR4b1RocmVzaG9sZCk7XG4gICAgICAgICAgfSk7XG5cbiAgICBjb25zdCBhZGRyZXNzTWFwcyA9IHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLm1hcCgodXR4bykgPT4ge1xuICAgICAgY29uc3QgdXR4b1RocmVzaG9sZCA9IHV0eG8udGhyZXNob2xkIHx8IHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZDtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUFkZHJlc3NNYXBGb3JVdHhvKHV0eG8sIHV0eG9UaHJlc2hvbGQpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgdW5zaWduZWRUeCA9IG5ldyBVbnNpZ25lZFR4KGV4cG9ydFR4LCBbXSwgbmV3IEZsYXJlVXRpbHMuQWRkcmVzc01hcHMoYWRkcmVzc01hcHMpLCB0eENyZWRlbnRpYWxzKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKHVuc2lnbmVkVHgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3RhdGljIHZlcmlmeVR4VHlwZSh0eG5UeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHhuVHlwZSA9PT0gRmxhcmVUcmFuc2FjdGlvblR5cGUuUHZtRXhwb3J0VHg7XG4gIH1cblxuICB2ZXJpZnlUeFR5cGUodHhuVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEV4cG9ydEluUFR4QnVpbGRlci52ZXJpZnlUeFR5cGUodHhuVHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIGV4cG9ydCB0cmFuc2FjdGlvbiBmb3IgUC1jaGFpblxuICAgKiBGb2xsb3dpbmcgQVZBWCBQIGFwcHJvYWNoIGZvciBVVFhPIGhhbmRsaW5nIGFuZCBzaWduYXR1cmUgc2xvdCBhc3NpZ25tZW50LlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRGbGFyZVRyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmhhc0NyZWRlbnRpYWxzKSByZXR1cm47XG5cbiAgICBjb25zdCBmZWVTdGF0ZSA9IHRoaXMudHJhbnNhY3Rpb24uX2ZlZVN0YXRlO1xuICAgIGlmICghZmVlU3RhdGUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ZlZSBzdGF0ZSBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uX2NvbnRleHQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ2NvbnRleHQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uX2Ftb3VudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdhbW91bnQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLl91dHhvcyB8fCB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1VUWE9zIGFyZSByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIHRoaXMuY29tcHV0ZUFkZHJlc3Nlc0luZGV4KCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlVXR4b0FkZHJlc3NlcygpO1xuXG4gICAgY29uc3QgYXNzZXRJZENiNTggPSB1dGlscy5jYjU4RW5jb2RlKEJ1ZmZlci5mcm9tKHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQsICdoZXgnKSk7XG4gICAgY29uc3QgbmF0aXZlVXR4b3MgPSB1dGlscy5kZWNvZGVkVG9VdHhvcyh0aGlzLnRyYW5zYWN0aW9uLl91dHhvcywgYXNzZXRJZENiNTgpO1xuXG4gICAgY29uc3QgdG90YWxVdHhvQW1vdW50ID0gbmF0aXZlVXR4b3MucmVkdWNlKChzdW0sIHV0eG8pID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IHV0eG8ub3V0cHV0IGFzIFRyYW5zZmVyT3V0cHV0O1xuICAgICAgcmV0dXJuIHN1bSArIG91dHB1dC5hbW91bnQoKTtcbiAgICB9LCBCaWdJbnQoMCkpO1xuXG4gICAgaWYgKHRvdGFsVXR4b0Ftb3VudCA8IHRoaXMudHJhbnNhY3Rpb24uX2Ftb3VudCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEluc3VmZmljaWVudCBVVFhPIGJhbGFuY2U6IGhhdmUgJHt0b3RhbFV0eG9BbW91bnQudG9TdHJpbmcoKX0gbkZMUiwgbmVlZCBhdCBsZWFzdCAke3RoaXMudHJhbnNhY3Rpb24uX2Ftb3VudC50b1N0cmluZygpfSBuRkxSIChwbHVzIGZlZSlgXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc2V0SWQgPSB1dGlscy5mbGFyZUlkU3RyaW5nKHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQpLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZnJvbUFkZHJlc3NlcyA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMubWFwKChhZGRyKSA9PiBCdWZmZXIuZnJvbShhZGRyKSk7XG4gICAgY29uc3QgdHJhbnNmZXJhYmxlT3V0cHV0ID0gVHJhbnNmZXJhYmxlT3V0cHV0LmZyb21OYXRpdmUoXG4gICAgICBhc3NldElkLFxuICAgICAgdGhpcy50cmFuc2FjdGlvbi5fYW1vdW50LFxuICAgICAgZnJvbUFkZHJlc3NlcyxcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLFxuICAgICAgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkXG4gICAgKTtcblxuICAgIGNvbnN0IGV4cG9ydFR4ID0gcHZtLmUubmV3RXhwb3J0VHgoXG4gICAgICB7XG4gICAgICAgIGZlZVN0YXRlLFxuICAgICAgICBmcm9tQWRkcmVzc2VzQnl0ZXM6IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMubWFwKChhZGRyKSA9PiBCdWZmZXIuZnJvbShhZGRyKSksXG4gICAgICAgIGRlc3RpbmF0aW9uQ2hhaW5JZDogdGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5jQ2hhaW5CbG9ja2NoYWluSUQsXG4gICAgICAgIG91dHB1dHM6IFt0cmFuc2ZlcmFibGVPdXRwdXRdLFxuICAgICAgICB1dHhvczogbmF0aXZlVXR4b3MsXG4gICAgICB9LFxuICAgICAgdGhpcy50cmFuc2FjdGlvbi5fY29udGV4dFxuICAgICk7XG5cbiAgICBjb25zdCBmbGFyZVVuc2lnbmVkVHggPSBleHBvcnRUeCBhcyBVbnNpZ25lZFR4O1xuICAgIGNvbnN0IGlubmVyVHggPSBmbGFyZVVuc2lnbmVkVHguZ2V0VHgoKSBhcyBwdm1TZXJpYWwuRXhwb3J0VHg7XG5cbiAgICBjb25zdCB1dHhvc1dpdGhJbmRleCA9IGlubmVyVHguYmFzZVR4LmlucHV0cy5tYXAoKGlucHV0LCBpZHgpID0+IHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsVXR4byA9IHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zW2lkeF07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vcmlnaW5hbFV0eG8sXG4gICAgICAgIGFkZHJlc3Nlc0luZGV4OiBvcmlnaW5hbFV0eG8uYWRkcmVzc2VzSW5kZXgsXG4gICAgICAgIGFkZHJlc3Nlczogb3JpZ2luYWxVdHhvLmFkZHJlc3NlcyxcbiAgICAgICAgdGhyZXNob2xkOiBvcmlnaW5hbFV0eG8udGhyZXNob2xkIHx8IHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZCxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcyA9IHV0eG9zV2l0aEluZGV4O1xuXG4gICAgY29uc3QgdHhDcmVkZW50aWFscyA9IHV0eG9zV2l0aEluZGV4Lm1hcCgodXR4bykgPT4gdGhpcy5jcmVhdGVDcmVkZW50aWFsRm9yVXR4byh1dHhvLCB1dHhvLnRocmVzaG9sZCkpO1xuXG4gICAgY29uc3QgYWRkcmVzc01hcHMgPSB1dHhvc1dpdGhJbmRleC5tYXAoKHV0eG8pID0+IHRoaXMuY3JlYXRlQWRkcmVzc01hcEZvclV0eG8odXR4bywgdXR4by50aHJlc2hvbGQpKTtcblxuICAgIGNvbnN0IGZpeGVkVW5zaWduZWRUeCA9IG5ldyBVbnNpZ25lZFR4KGlubmVyVHgsIFtdLCBuZXcgRmxhcmVVdGlscy5BZGRyZXNzTWFwcyhhZGRyZXNzTWFwcyksIHR4Q3JlZGVudGlhbHMpO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbihmaXhlZFVuc2lnbmVkVHgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY292ZXIgVVRYT3MgZnJvbSBpbnB1dHMuXG4gICAqIFVzZXMgb3V0cHV0IGFkZHJlc3NlcyBhcyBwcm94eSBmb3IgVVRYTyBhZGRyZXNzZXMuXG4gICAqXG4gICAqIEBwYXJhbSBpbnB1dHMgQXJyYXkgb2YgVHJhbnNmZXJhYmxlSW5wdXRcbiAgICogQHBhcmFtIG91dHB1dEFkZHJzIE91dHB1dCBvd25lciBhZGRyZXNzZXMgdG8gdXNlIGFzIHByb3h5XG4gICAqIEByZXR1cm5zIEFycmF5IG9mIGRlY29kZWQgVVRYTyBvYmplY3RzXG4gICAqL1xuICBwcml2YXRlIHJlY292ZXJVdHhvcyhpbnB1dHM6IFRyYW5zZmVyYWJsZUlucHV0W10sIG91dHB1dEFkZHJzPzogeyB0b0J5dGVzKCk6IFVpbnQ4QXJyYXkgfVtdKTogRGVjb2RlZFV0eG9PYmpbXSB7XG4gICAgY29uc3QgcHJveHlBZGRyZXNzZXMgPSBvdXRwdXRBZGRyc1xuICAgICAgPyBvdXRwdXRBZGRycy5tYXAoKGFkZHIpID0+XG4gICAgICAgICAgdXRpbHMuYWRkcmVzc1RvU3RyaW5nKFxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5ocnAsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLmFsaWFzLFxuICAgICAgICAgICAgQnVmZmVyLmZyb20oYWRkci50b0J5dGVzKCkpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICA6IFtdO1xuXG4gICAgcmV0dXJuIGlucHV0cy5tYXAoKGlucHV0KSA9PiB7XG4gICAgICBjb25zdCB1dHhvSWQgPSBpbnB1dC51dHhvSUQ7XG4gICAgICBjb25zdCB0cmFuc2ZlcklucHV0ID0gaW5wdXQuaW5wdXQgYXMgVHJhbnNmZXJJbnB1dDtcbiAgICAgIGNvbnN0IHNpZ0luZGljaWVzID0gdHJhbnNmZXJJbnB1dC5zaWdJbmRpY2llcygpO1xuXG4gICAgICBjb25zdCB1dHhvOiBEZWNvZGVkVXR4b09iaiA9IHtcbiAgICAgICAgb3V0cHV0SUQ6IFNFQ1AyNTZLMV9UcmFuc2Zlcl9PdXRwdXQsXG4gICAgICAgIGFtb3VudDogaW5wdXQuYW1vdW50KCkudG9TdHJpbmcoKSxcbiAgICAgICAgdHhpZDogdXRpbHMuY2I1OEVuY29kZShCdWZmZXIuZnJvbSh1dHhvSWQudHhJRC50b0J5dGVzKCkpKSxcbiAgICAgICAgb3V0cHV0aWR4OiB1dHhvSWQub3V0cHV0SWR4LnZhbHVlKCkudG9TdHJpbmcoKSxcbiAgICAgICAgdGhyZXNob2xkOiBzaWdJbmRpY2llcy5sZW5ndGggfHwgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkLFxuICAgICAgICBhZGRyZXNzZXM6IHByb3h5QWRkcmVzc2VzLFxuICAgICAgICBhZGRyZXNzZXNJbmRleDogc2lnSW5kaWNpZXMsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHV0eG87XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVBZGRyZXNzZXNJbmRleEZyb21QYXJzZWQoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VuZGVyID0gdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcztcbiAgICBpZiAoIXNlbmRlciB8fCBzZW5kZXIubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcy5mb3JFYWNoKCh1dHhvKSA9PiB7XG4gICAgICBpZiAodXR4by5hZGRyZXNzZXMgJiYgdXR4by5hZGRyZXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB1dHhvQWRkcmVzc2VzID0gdXR4by5hZGRyZXNzZXMubWFwKChhKSA9PiB1dGlscy5wYXJzZUFkZHJlc3MoYSkpO1xuICAgICAgICB1dHhvLmFkZHJlc3Nlc0luZGV4ID0gc2VuZGVyLm1hcCgoc2VuZGVyQWRkcikgPT5cbiAgICAgICAgICB1dHhvQWRkcmVzc2VzLmZpbmRJbmRleCgodXR4b0FkZHIpID0+IEJ1ZmZlci5jb21wYXJlKEJ1ZmZlci5mcm9tKHV0eG9BZGRyKSwgQnVmZmVyLmZyb20oc2VuZGVyQWRkcikpID09PSAwKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwb3J0SW5QVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9FeHBvcnRJblBUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsbURBQTRGO0FBQzVGLHlFQUFzRTtBQUN0RSxtREFVK0I7QUFDL0Isb0RBQTRCO0FBQzVCLG1DQUE4RjtBQUU5RixNQUFhLGtCQUFtQixTQUFRLG1EQUF3QjtJQUM5RCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQiwyQkFBMkI7UUFDM0IsNENBQTRDO1FBQzVDLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZGLHdFQUF3RTtRQUN4RSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQzdHLEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBTSxFQUFFLFFBQWlCLEVBQUUsaUJBQWdDO1FBQ3JFLE1BQU0sUUFBUSxHQUFHLEVBQXdCLENBQUM7UUFFMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLHVCQUFZLENBQUMscUVBQXFFLENBQUMsQ0FBQztRQUNoRyxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUM5QixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDOUUsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBd0IsQ0FBQztRQUN2RCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5RixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUM7UUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVuRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3RixNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEcsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDckUsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLE1BQXdCLENBQUM7WUFDakQsT0FBTyxHQUFHLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNkLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixHQUFHLGtCQUFrQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO1FBQzdFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFM0MsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLElBQUksRUFBRSxDQUFDO1FBQzVDLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRTlDLElBQUksUUFBUSxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQztRQUM5QyxDQUFDO1FBRUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpDLHFGQUFxRjtRQUNyRixrRkFBa0Y7UUFDbEYsNERBQTREO1FBQzVELE1BQU0sYUFBYSxHQUNqQixXQUFXLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDcEIsQ0FBQyxDQUFDLFdBQVc7WUFDYixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ25DLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7Z0JBQ3BFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO2dCQUM3QyxrRkFBa0Y7Z0JBQ2xGLElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxhQUFhLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzlFLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ3ZFLENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzNELENBQUMsQ0FBQyxDQUFDO1FBRVQsOEVBQThFO1FBQzlFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3ZELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDcEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7WUFDN0MsSUFBSSxVQUFVLENBQUMsTUFBTSxJQUFJLGFBQWEsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDOUUsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN2RSxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQUcsSUFBSSxvQkFBVSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxlQUFVLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3hHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBZTtRQUNqQyxPQUFPLE9BQU8sS0FBSyw0QkFBb0IsQ0FBQyxXQUFXLENBQUM7SUFDdEQsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFlO1FBQzFCLE9BQU8sa0JBQWtCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7OztPQUlHO0lBQ08sS0FBSyxDQUFDLHFCQUFxQjtRQUNuQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYztZQUFFLE9BQU87UUFFNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7UUFDNUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixNQUFNLFdBQVcsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRixNQUFNLFdBQVcsR0FBRyxlQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRS9FLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDdkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQXdCLENBQUM7WUFDN0MsT0FBTyxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQy9CLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVkLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLGdDQUFxQixDQUM3QixtQ0FBbUMsZUFBZSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUMzSSxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFGLE1BQU0sa0JBQWtCLEdBQUcsNEJBQWtCLENBQUMsVUFBVSxDQUN0RCxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQ3hCLGdCQUFnQixFQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQzVCLENBQUM7UUFFRixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRXBELE1BQU0sUUFBUSxHQUFHLGFBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUNoQztZQUNFLFFBQVE7WUFDUixrQkFBa0IsRUFBRSxnQkFBZ0I7WUFDcEMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsa0JBQWtCO1lBQ2hFLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO1lBQzdCLEtBQUssRUFBRSxXQUFXO1NBQ25CLEVBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQzFCLENBQUM7UUFFRixNQUFNLGVBQWUsR0FBRyxRQUFzQixDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxLQUFLLEVBQXdCLENBQUM7UUFFOUQsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDN0MsSUFBSSxpQkFBaUIsR0FBdUIsT0FBTyxDQUFDO1FBRXBELElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRTVGLE1BQU0sc0JBQXNCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUMxRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBd0IsQ0FBQztnQkFFcEQsTUFBTSxVQUFVLEdBQUcsZUFBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDekcsT0FBTyw0QkFBa0IsQ0FBQyxVQUFVLENBQ2xDLFVBQVUsRUFDVixXQUFXLENBQUMsTUFBTSxFQUFFLEVBQ3BCLGtCQUFrQixFQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQzVCLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILGlCQUFpQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuRSxNQUFNLFNBQVMsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdFLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRWpFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDL0MsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssY0FBYyxDQUN2RSxDQUFDO1lBRUYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNsQixNQUFNLElBQUksZ0NBQXFCLENBQUMsMENBQTBDLFNBQVMsSUFBSSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQzNHLENBQUM7WUFFRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBc0IsQ0FBQztZQUNuRCxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVyRCxPQUFPO2dCQUNMLEdBQUcsWUFBWTtnQkFDZixjQUFjLEVBQUUsWUFBWSxDQUFDLGNBQWM7Z0JBQzNDLFNBQVMsRUFBRSxZQUFZLENBQUMsU0FBUztnQkFDakMsU0FBUyxFQUFFLFlBQVksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVO2dCQUNoRSxnQkFBZ0I7YUFDakIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDO1FBRXpDLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNoRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQzFFLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDOUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUMxRSxDQUFDO1FBRUYsTUFBTSxlQUFlLEdBQUcsSUFBSSxvQkFBVSxDQUNwQyxpQkFBaUIsRUFDakIsRUFBRSxFQUNGLElBQUksZUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsRUFDdkMsYUFBYSxDQUNkLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0ssdUJBQXVCLENBQzdCLFVBQThCLEVBQzlCLGdCQUFzQztRQUV0Qyw4RkFBOEY7UUFDOUYsNkZBQTZGO1FBQzdGLG9HQUFvRztRQUNwRyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFO1lBQ2xELEtBQUssRUFBRSxnQkFBZ0I7WUFDdkIsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsSUFBSTtZQUNoQixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFFSCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLFlBQVksQ0FBQyxNQUEyQixFQUFFLFdBQXlDO1FBQ3pGLE1BQU0sY0FBYyxHQUFHLFdBQVc7WUFDaEMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUN2QixlQUFLLENBQUMsZUFBZSxDQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssRUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FDNUIsQ0FDRjtZQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFUCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMxQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzVCLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUFzQixDQUFDO1lBQ25ELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVoRCxNQUFNLElBQUksR0FBbUI7Z0JBQzNCLFFBQVEsRUFBRSxpQ0FBeUI7Z0JBQ25DLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO2dCQUNqQyxJQUFJLEVBQUUsZUFBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDMUQsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFO2dCQUM5QyxTQUFTLEVBQUUsV0FBVyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVU7Z0JBQzVELFNBQVMsRUFBRSxjQUFjO2dCQUN6QixjQUFjLEVBQUUsV0FBVzthQUM1QixDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTFTRCxnREEwU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIE5vdFN1cHBvcnRlZCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgcHZtU2VyaWFsLFxuICBVbnNpZ25lZFR4LFxuICBUcmFuc2ZlcmFibGVJbnB1dCxcbiAgVHJhbnNmZXJhYmxlT3V0cHV0LFxuICBUcmFuc2ZlcklucHV0LFxuICB1dGlscyBhcyBGbGFyZVV0aWxzLFxuICBUcmFuc2Zlck91dHB1dCxcbiAgQ3JlZGVudGlhbCxcbiAgcHZtLFxufSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRGVjb2RlZFV0eG9PYmosIFNFQ1AyNTZLMV9UcmFuc2Zlcl9PdXRwdXQsIEZsYXJlVHJhbnNhY3Rpb25UeXBlLCBUeCB9IGZyb20gJy4vaWZhY2UnO1xuXG5leHBvcnQgY2xhc3MgRXhwb3J0SW5QVHhCdWlsZGVyIGV4dGVuZHMgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIC8vIEZvciBFeHBvcnQgRlJPTSBQLWNoYWluOlxuICAgIC8vIC0gZXh0ZXJuYWwgY2hhaW4gKGRlc3RpbmF0aW9uKSBpcyBDLWNoYWluXG4gICAgLy8gLSBibG9ja2NoYWluIElEIChzb3VyY2UpIGlzIFAtY2hhaW5cbiAgICB0aGlzLl9leHRlcm5hbENoYWluSWQgPSB1dGlscy5jYjU4RGVjb2RlKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsuY0NoYWluQmxvY2tjaGFpbklEKTtcbiAgICAvLyBQLWNoYWluIGJsb2NrY2hhaW4gSUQgKGZyb20gbmV0d29yayBjb25maWcgLSBkZWNvZGUgZnJvbSBjYjU4IHRvIGhleClcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9ibG9ja2NoYWluSUQgPSBCdWZmZXIuZnJvbSh1dGlscy5jYjU4RGVjb2RlKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsuYmxvY2tjaGFpbklEKSkudG9TdHJpbmcoXG4gICAgICAnaGV4J1xuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuRXhwb3J0O1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFR4LCByYXdCeXRlcz86IEJ1ZmZlciwgcGFyc2VkQ3JlZGVudGlhbHM/OiBDcmVkZW50aWFsW10pOiB0aGlzIHtcbiAgICBjb25zdCBleHBvcnRUeCA9IHR4IGFzIHB2bVNlcmlhbC5FeHBvcnRUeDtcblxuICAgIGlmICghdGhpcy52ZXJpZnlUeFR5cGUoZXhwb3J0VHguX3R5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdUcmFuc2FjdGlvbiBjYW5ub3QgYmUgcGFyc2VkIG9yIGhhcyBhbiB1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgfVxuICAgIGNvbnN0IG91dHB1dHMgPSBleHBvcnRUeC5vdXRzO1xuICAgIGlmIChvdXRwdXRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gY2FuIGhhdmUgb25lIGV4dGVybmFsIG91dHB1dCcpO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbMF07XG4gICAgY29uc3Qgb3V0cHV0VHJhbnNmZXIgPSBvdXRwdXQub3V0cHV0IGFzIFRyYW5zZmVyT3V0cHV0O1xuICAgIGNvbnN0IGFzc2V0SWQgPSBvdXRwdXQuYXNzZXRJZC50b0J5dGVzKCk7XG4gICAgaWYgKEJ1ZmZlci5jb21wYXJlKEJ1ZmZlci5mcm9tKGFzc2V0SWQpLCBCdWZmZXIuZnJvbSh0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLCAnaGV4JykpICE9PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBc3NldCBJRCBvZiB0aGUgb3V0cHV0IGRvZXMgbm90IG1hdGNoIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dE93bmVycyA9IG91dHB1dFRyYW5zZmVyLm91dHB1dE93bmVycztcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9sb2NrdGltZSA9IG91dHB1dE93bmVycy5sb2NrdGltZS52YWx1ZSgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZCA9IG91dHB1dE93bmVycy50aHJlc2hvbGQudmFsdWUoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzID0gb3V0cHV0T3duZXJzLmFkZHJzLm1hcCgoYWRkcikgPT4gQnVmZmVyLmZyb20oYWRkci50b0J5dGVzKCkpKTtcbiAgICB0aGlzLl9leHRlcm5hbENoYWluSWQgPSBCdWZmZXIuZnJvbShleHBvcnRUeC5kZXN0aW5hdGlvbi50b0J5dGVzKCkpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2Ftb3VudCA9IG91dHB1dFRyYW5zZmVyLmFtb3VudCgpO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MgPSB0aGlzLnJlY292ZXJVdHhvcyhbLi4uZXhwb3J0VHguYmFzZVR4LmlucHV0c10sIG91dHB1dE93bmVycy5hZGRycyk7XG5cbiAgICBjb25zdCB0b3RhbElucHV0QW1vdW50ID0gZXhwb3J0VHguYmFzZVR4LmlucHV0cy5yZWR1Y2UoKHN1bSwgaW5wdXQpID0+IHN1bSArIGlucHV0LmFtb3VudCgpLCBCaWdJbnQoMCkpO1xuICAgIGNvbnN0IGNoYW5nZU91dHB1dEFtb3VudCA9IGV4cG9ydFR4LmJhc2VUeC5vdXRwdXRzLnJlZHVjZSgoc3VtLCBvdXQpID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zZmVyT3V0ID0gb3V0Lm91dHB1dCBhcyBUcmFuc2Zlck91dHB1dDtcbiAgICAgIHJldHVybiBzdW0gKyB0cmFuc2Zlck91dC5hbW91bnQoKTtcbiAgICB9LCBCaWdJbnQoMCkpO1xuICAgIGNvbnN0IGZlZSA9IHRvdGFsSW5wdXRBbW91bnQgLSBjaGFuZ2VPdXRwdXRBbW91bnQgLSB0aGlzLnRyYW5zYWN0aW9uLl9hbW91bnQ7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZSA9IGZlZS50b1N0cmluZygpO1xuXG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSBwYXJzZWRDcmVkZW50aWFscyB8fCBbXTtcbiAgICBjb25zdCBoYXNDcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzLmxlbmd0aCA+IDA7XG5cbiAgICBpZiAocmF3Qnl0ZXMgJiYgaGFzQ3JlZGVudGlhbHMpIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uX3Jhd1NpZ25lZEJ5dGVzID0gcmF3Qnl0ZXM7XG4gICAgfVxuXG4gICAgdGhpcy5jb21wdXRlQWRkcmVzc2VzSW5kZXgodHJ1ZSk7XG5cbiAgICAvLyBVc2UgcGFyc2VkIGNyZWRlbnRpYWxzIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGNyZWF0ZSBuZXcgb25lcyBiYXNlZCBvbiBzaWdJbmRpY2VzXG4gICAgLy8gVGhlIHNpZ0luZGljZXMgZnJvbSB0aGUgcGFyc2VkIHRyYW5zYWN0aW9uIChzdG9yZWQgaW4gYWRkcmVzc2VzSW5kZXgpIGRldGVybWluZVxuICAgIC8vIHRoZSBjb3JyZWN0IGNyZWRlbnRpYWwgb3JkZXJpbmcgZm9yIG9uLWNoYWluIHZlcmlmaWNhdGlvblxuICAgIGNvbnN0IHR4Q3JlZGVudGlhbHMgPVxuICAgICAgY3JlZGVudGlhbHMubGVuZ3RoID4gMFxuICAgICAgICA/IGNyZWRlbnRpYWxzXG4gICAgICAgIDogdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MubWFwKCh1dHhvKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1dHhvVGhyZXNob2xkID0gdXR4by50aHJlc2hvbGQgfHwgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkO1xuICAgICAgICAgICAgY29uc3Qgc2lnSW5kaWNlcyA9IHV0eG8uYWRkcmVzc2VzSW5kZXggPz8gW107XG4gICAgICAgICAgICAvLyBVc2Ugc2lnSW5kaWNlcy1iYXNlZCBtZXRob2QgaWYgd2UgaGF2ZSB2YWxpZCBzaWdJbmRpY2VzIGZyb20gcGFyc2VkIHRyYW5zYWN0aW9uXG4gICAgICAgICAgICBpZiAoc2lnSW5kaWNlcy5sZW5ndGggPj0gdXR4b1RocmVzaG9sZCAmJiBzaWdJbmRpY2VzLmV2ZXJ5KChpZHgpID0+IGlkeCA+PSAwKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVDcmVkZW50aWFsRm9yVXR4byh1dHhvLCB1dHhvVGhyZXNob2xkLCBzaWdJbmRpY2VzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNyZWRlbnRpYWxGb3JVdHhvKHV0eG8sIHV0eG9UaHJlc2hvbGQpO1xuICAgICAgICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIGFkZHJlc3NNYXBzIHVzaW5nIHNpZ0luZGljZXMgZnJvbSBwYXJzZWQgdHJhbnNhY3Rpb24gZm9yIGNvbnNpc3RlbmN5XG4gICAgY29uc3QgYWRkcmVzc01hcHMgPSB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcy5tYXAoKHV0eG8pID0+IHtcbiAgICAgIGNvbnN0IHV0eG9UaHJlc2hvbGQgPSB1dHhvLnRocmVzaG9sZCB8fCB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQ7XG4gICAgICBjb25zdCBzaWdJbmRpY2VzID0gdXR4by5hZGRyZXNzZXNJbmRleCA/PyBbXTtcbiAgICAgIGlmIChzaWdJbmRpY2VzLmxlbmd0aCA+PSB1dHhvVGhyZXNob2xkICYmIHNpZ0luZGljZXMuZXZlcnkoKGlkeCkgPT4gaWR4ID49IDApKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUFkZHJlc3NNYXBGb3JVdHhvKHV0eG8sIHV0eG9UaHJlc2hvbGQsIHNpZ0luZGljZXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQWRkcmVzc01hcEZvclV0eG8odXR4bywgdXR4b1RocmVzaG9sZCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB1bnNpZ25lZFR4ID0gbmV3IFVuc2lnbmVkVHgoZXhwb3J0VHgsIFtdLCBuZXcgRmxhcmVVdGlscy5BZGRyZXNzTWFwcyhhZGRyZXNzTWFwcyksIHR4Q3JlZGVudGlhbHMpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24odW5zaWduZWRUeCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdGF0aWMgdmVyaWZ5VHhUeXBlKHR4blR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eG5UeXBlID09PSBGbGFyZVRyYW5zYWN0aW9uVHlwZS5Qdm1FeHBvcnRUeDtcbiAgfVxuXG4gIHZlcmlmeVR4VHlwZSh0eG5UeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRXhwb3J0SW5QVHhCdWlsZGVyLnZlcmlmeVR4VHlwZSh0eG5UeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgZXhwb3J0IHRyYW5zYWN0aW9uIGZvciBQLWNoYWluXG4gICAqIEZvbGxvd2luZyBBVkFYIFAgYXBwcm9hY2ggZm9yIFVUWE8gaGFuZGxpbmcgYW5kIHNpZ25hdHVyZSBzbG90IGFzc2lnbm1lbnQuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEZsYXJlVHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaGFzQ3JlZGVudGlhbHMpIHJldHVybjtcblxuICAgIGNvbnN0IGZlZVN0YXRlID0gdGhpcy50cmFuc2FjdGlvbi5fZmVlU3RhdGU7XG4gICAgaWYgKCFmZWVTdGF0ZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRmVlIHN0YXRlIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbi5fY29udGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignY29udGV4dCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5fYW1vdW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ2Ftb3VudCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uX3V0eG9zIHx8IHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVVRYT3MgYXJlIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jb21wdXRlQWRkcmVzc2VzSW5kZXgoKTtcblxuICAgIHRoaXMudmFsaWRhdGVVdHhvQWRkcmVzc2VzKCk7XG5cbiAgICBjb25zdCBhc3NldElkQ2I1OCA9IHV0aWxzLmNiNThFbmNvZGUoQnVmZmVyLmZyb20odGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCwgJ2hleCcpKTtcbiAgICBjb25zdCBuYXRpdmVVdHhvcyA9IHV0aWxzLmRlY29kZWRUb1V0eG9zKHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLCBhc3NldElkQ2I1OCk7XG5cbiAgICBjb25zdCB0b3RhbFV0eG9BbW91bnQgPSBuYXRpdmVVdHhvcy5yZWR1Y2UoKHN1bSwgdXR4bykgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gdXR4by5vdXRwdXQgYXMgVHJhbnNmZXJPdXRwdXQ7XG4gICAgICByZXR1cm4gc3VtICsgb3V0cHV0LmFtb3VudCgpO1xuICAgIH0sIEJpZ0ludCgwKSk7XG5cbiAgICBpZiAodG90YWxVdHhvQW1vdW50IDwgdGhpcy50cmFuc2FjdGlvbi5fYW1vdW50KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgSW5zdWZmaWNpZW50IFVUWE8gYmFsYW5jZTogaGF2ZSAke3RvdGFsVXR4b0Ftb3VudC50b1N0cmluZygpfSBuRkxSLCBuZWVkIGF0IGxlYXN0ICR7dGhpcy50cmFuc2FjdGlvbi5fYW1vdW50LnRvU3RyaW5nKCl9IG5GTFIgKHBsdXMgZmVlKWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgYXNzZXRJZCA9IHV0aWxzLmZsYXJlSWRTdHJpbmcodGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBhbGxGcm9tQWRkcmVzc2VzID0gdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlcy5tYXAoKGFkZHIpID0+IEJ1ZmZlci5mcm9tKGFkZHIpKTtcbiAgICBjb25zdCB0cmFuc2ZlcmFibGVPdXRwdXQgPSBUcmFuc2ZlcmFibGVPdXRwdXQuZnJvbU5hdGl2ZShcbiAgICAgIGFzc2V0SWQsXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hbW91bnQsXG4gICAgICBhbGxGcm9tQWRkcmVzc2VzLFxuICAgICAgdGhpcy50cmFuc2FjdGlvbi5fbG9ja3RpbWUsXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGRcbiAgICApO1xuXG4gICAgY29uc3Qgc2lnbmluZ0FkZHJlc3NlcyA9IHRoaXMuZ2V0U2lnbmluZ0FkZHJlc3NlcygpO1xuXG4gICAgY29uc3QgZXhwb3J0VHggPSBwdm0uZS5uZXdFeHBvcnRUeChcbiAgICAgIHtcbiAgICAgICAgZmVlU3RhdGUsXG4gICAgICAgIGZyb21BZGRyZXNzZXNCeXRlczogc2lnbmluZ0FkZHJlc3NlcyxcbiAgICAgICAgZGVzdGluYXRpb25DaGFpbklkOiB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLmNDaGFpbkJsb2NrY2hhaW5JRCxcbiAgICAgICAgb3V0cHV0czogW3RyYW5zZmVyYWJsZU91dHB1dF0sXG4gICAgICAgIHV0eG9zOiBuYXRpdmVVdHhvcyxcbiAgICAgIH0sXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl9jb250ZXh0XG4gICAgKTtcblxuICAgIGNvbnN0IGZsYXJlVW5zaWduZWRUeCA9IGV4cG9ydFR4IGFzIFVuc2lnbmVkVHg7XG4gICAgY29uc3QgaW5uZXJUeCA9IGZsYXJlVW5zaWduZWRUeC5nZXRUeCgpIGFzIHB2bVNlcmlhbC5FeHBvcnRUeDtcblxuICAgIGNvbnN0IGNoYW5nZU91dHB1dHMgPSBpbm5lclR4LmJhc2VUeC5vdXRwdXRzO1xuICAgIGxldCBjb3JyZWN0ZWRFeHBvcnRUeDogcHZtU2VyaWFsLkV4cG9ydFR4ID0gaW5uZXJUeDtcblxuICAgIGlmIChjaGFuZ2VPdXRwdXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGFsbFdhbGxldEFkZHJlc3NlcyA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMubWFwKChhZGRyKSA9PiBCdWZmZXIuZnJvbShhZGRyKSk7XG5cbiAgICAgIGNvbnN0IGNvcnJlY3RlZENoYW5nZU91dHB1dHMgPSBjaGFuZ2VPdXRwdXRzLm1hcCgob3V0cHV0KSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYW5zZmVyT3V0ID0gb3V0cHV0Lm91dHB1dCBhcyBUcmFuc2Zlck91dHB1dDtcblxuICAgICAgICBjb25zdCBhc3NldElkU3RyID0gdXRpbHMuZmxhcmVJZFN0cmluZyhCdWZmZXIuZnJvbShvdXRwdXQuYXNzZXRJZC50b0J5dGVzKCkpLnRvU3RyaW5nKCdoZXgnKSkudG9TdHJpbmcoKTtcbiAgICAgICAgcmV0dXJuIFRyYW5zZmVyYWJsZU91dHB1dC5mcm9tTmF0aXZlKFxuICAgICAgICAgIGFzc2V0SWRTdHIsXG4gICAgICAgICAgdHJhbnNmZXJPdXQuYW1vdW50KCksXG4gICAgICAgICAgYWxsV2FsbGV0QWRkcmVzc2VzLFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZFxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGNvcnJlY3RlZEV4cG9ydFR4ID0gdGhpcy5jcmVhdGVDb3JyZWN0ZWRFeHBvcnRUeChpbm5lclR4LCBjb3JyZWN0ZWRDaGFuZ2VPdXRwdXRzKTtcbiAgICB9XG5cbiAgICBjb25zdCB1dHhvc1dpdGhJbmRleCA9IGNvcnJlY3RlZEV4cG9ydFR4LmJhc2VUeC5pbnB1dHMubWFwKChpbnB1dCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXRUeGlkID0gdXRpbHMuY2I1OEVuY29kZShCdWZmZXIuZnJvbShpbnB1dC51dHhvSUQudHhJRC50b0J5dGVzKCkpKTtcbiAgICAgIGNvbnN0IGlucHV0T3V0cHV0SWR4ID0gaW5wdXQudXR4b0lELm91dHB1dElkeC52YWx1ZSgpLnRvU3RyaW5nKCk7XG5cbiAgICAgIGNvbnN0IG9yaWdpbmFsVXR4byA9IHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmZpbmQoXG4gICAgICAgICh1dHhvKSA9PiB1dHhvLnR4aWQgPT09IGlucHV0VHhpZCAmJiB1dHhvLm91dHB1dGlkeCA9PT0gaW5wdXRPdXRwdXRJZHhcbiAgICAgICk7XG5cbiAgICAgIGlmICghb3JpZ2luYWxVdHhvKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYENvdWxkIG5vdCBmaW5kIG1hdGNoaW5nIFVUWE8gZm9yIGlucHV0ICR7aW5wdXRUeGlkfToke2lucHV0T3V0cHV0SWR4fWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0cmFuc2ZlcklucHV0ID0gaW5wdXQuaW5wdXQgYXMgVHJhbnNmZXJJbnB1dDtcbiAgICAgIGNvbnN0IGFjdHVhbFNpZ0luZGljZXMgPSB0cmFuc2ZlcklucHV0LnNpZ0luZGljaWVzKCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm9yaWdpbmFsVXR4byxcbiAgICAgICAgYWRkcmVzc2VzSW5kZXg6IG9yaWdpbmFsVXR4by5hZGRyZXNzZXNJbmRleCxcbiAgICAgICAgYWRkcmVzc2VzOiBvcmlnaW5hbFV0eG8uYWRkcmVzc2VzLFxuICAgICAgICB0aHJlc2hvbGQ6IG9yaWdpbmFsVXR4by50aHJlc2hvbGQgfHwgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkLFxuICAgICAgICBhY3R1YWxTaWdJbmRpY2VzLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zID0gdXR4b3NXaXRoSW5kZXg7XG5cbiAgICBjb25zdCB0eENyZWRlbnRpYWxzID0gdXR4b3NXaXRoSW5kZXgubWFwKCh1dHhvKSA9PlxuICAgICAgdGhpcy5jcmVhdGVDcmVkZW50aWFsRm9yVXR4byh1dHhvLCB1dHhvLnRocmVzaG9sZCwgdXR4by5hY3R1YWxTaWdJbmRpY2VzKVxuICAgICk7XG5cbiAgICBjb25zdCBhZGRyZXNzTWFwcyA9IHV0eG9zV2l0aEluZGV4Lm1hcCgodXR4bykgPT5cbiAgICAgIHRoaXMuY3JlYXRlQWRkcmVzc01hcEZvclV0eG8odXR4bywgdXR4by50aHJlc2hvbGQsIHV0eG8uYWN0dWFsU2lnSW5kaWNlcylcbiAgICApO1xuXG4gICAgY29uc3QgZml4ZWRVbnNpZ25lZFR4ID0gbmV3IFVuc2lnbmVkVHgoXG4gICAgICBjb3JyZWN0ZWRFeHBvcnRUeCxcbiAgICAgIFtdLFxuICAgICAgbmV3IEZsYXJlVXRpbHMuQWRkcmVzc01hcHMoYWRkcmVzc01hcHMpLFxuICAgICAgdHhDcmVkZW50aWFsc1xuICAgICk7XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKGZpeGVkVW5zaWduZWRUeCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY29ycmVjdGVkIEV4cG9ydFR4IHdpdGggdGhlIGdpdmVuIGNoYW5nZSBvdXRwdXRzLlxuICAgKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIEZsYXJlSlMncyBuZXdFeHBvcnRUeCBkb2Vzbid0IHN1cHBvcnQgc2V0dGluZ1xuICAgKiB0aGUgdGhyZXNob2xkIGFuZCBsb2NrdGltZSBmb3IgY2hhbmdlIG91dHB1dHMuXG4gICAqXG4gICAqIEZsYXJlSlMgZGVjbGFyZXMgYmFzZVR4Lm91dHB1dHMgYXMgcmVhZG9ubHksIHNvIHdlIHVzZSBPYmplY3QuZGVmaW5lUHJvcGVydHlcbiAgICogdG8gb3ZlcnJpZGUgdGhlIHByb3BlcnR5IHdpdGggdGhlIGNvcnJlY3RlZCBvdXRwdXRzLiBUaGlzIGlzIGEgd29ya2Fyb3VuZCB1bnRpbFxuICAgKiBGbGFyZUpTIGFkZHMgcHJvcGVyIHN1cHBvcnQgZm9yIGNoYW5nZSBvdXRwdXQgdGhyZXNob2xkcy5cbiAgICpcbiAgICogQHBhcmFtIG9yaWdpbmFsVHggLSBUaGUgb3JpZ2luYWwgRXhwb3J0VHhcbiAgICogQHBhcmFtIGNvcnJlY3RlZE91dHB1dHMgLSBUaGUgY29ycmVjdGVkIGNoYW5nZSBvdXRwdXRzIHdpdGggcHJvcGVyIHRocmVzaG9sZFxuICAgKiBAcmV0dXJucyBBIG5ldyBFeHBvcnRUeCB3aXRoIHRoZSBjb3JyZWN0ZWQgY2hhbmdlIG91dHB1dHNcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQ29ycmVjdGVkRXhwb3J0VHgoXG4gICAgb3JpZ2luYWxUeDogcHZtU2VyaWFsLkV4cG9ydFR4LFxuICAgIGNvcnJlY3RlZE91dHB1dHM6IFRyYW5zZmVyYWJsZU91dHB1dFtdXG4gICk6IHB2bVNlcmlhbC5FeHBvcnRUeCB7XG4gICAgLy8gRmxhcmVKUyBkZWNsYXJlcyBiYXNlVHgub3V0cHV0cyBhcyBgcHVibGljIHJlYWRvbmx5IG91dHB1dHM6IHJlYWRvbmx5IFRyYW5zZmVyYWJsZU91dHB1dFtdYFxuICAgIC8vIFdlIHVzZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgdG8gb3ZlcnJpZGUgdGhlIHJlYWRvbmx5IHByb3BlcnR5IHdpdGggb3VyIGNvcnJlY3RlZCBvdXRwdXRzLlxuICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgRmxhcmVKUydzIG5ld0V4cG9ydFR4IGRvZXNuJ3Qgc3VwcG9ydCBjaGFuZ2Ugb3V0cHV0IHRocmVzaG9sZC9sb2NrdGltZS5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3JpZ2luYWxUeC5iYXNlVHgsICdvdXRwdXRzJywge1xuICAgICAgdmFsdWU6IGNvcnJlY3RlZE91dHB1dHMsXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9yaWdpbmFsVHg7XG4gIH1cblxuICAvKipcbiAgICogUmVjb3ZlciBVVFhPcyBmcm9tIGlucHV0cy5cbiAgICogVXNlcyBvdXRwdXQgYWRkcmVzc2VzIGFzIHByb3h5IGZvciBVVFhPIGFkZHJlc3Nlcy5cbiAgICpcbiAgICogQHBhcmFtIGlucHV0cyBBcnJheSBvZiBUcmFuc2ZlcmFibGVJbnB1dFxuICAgKiBAcGFyYW0gb3V0cHV0QWRkcnMgT3V0cHV0IG93bmVyIGFkZHJlc3NlcyB0byB1c2UgYXMgcHJveHlcbiAgICogQHJldHVybnMgQXJyYXkgb2YgZGVjb2RlZCBVVFhPIG9iamVjdHNcbiAgICovXG4gIHByaXZhdGUgcmVjb3ZlclV0eG9zKGlucHV0czogVHJhbnNmZXJhYmxlSW5wdXRbXSwgb3V0cHV0QWRkcnM/OiB7IHRvQnl0ZXMoKTogVWludDhBcnJheSB9W10pOiBEZWNvZGVkVXR4b09ialtdIHtcbiAgICBjb25zdCBwcm94eUFkZHJlc3NlcyA9IG91dHB1dEFkZHJzXG4gICAgICA/IG91dHB1dEFkZHJzLm1hcCgoYWRkcikgPT5cbiAgICAgICAgICB1dGlscy5hZGRyZXNzVG9TdHJpbmcoXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLmhycCxcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsuYWxpYXMsXG4gICAgICAgICAgICBCdWZmZXIuZnJvbShhZGRyLnRvQnl0ZXMoKSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIDogW107XG5cbiAgICByZXR1cm4gaW5wdXRzLm1hcCgoaW5wdXQpID0+IHtcbiAgICAgIGNvbnN0IHV0eG9JZCA9IGlucHV0LnV0eG9JRDtcbiAgICAgIGNvbnN0IHRyYW5zZmVySW5wdXQgPSBpbnB1dC5pbnB1dCBhcyBUcmFuc2ZlcklucHV0O1xuICAgICAgY29uc3Qgc2lnSW5kaWNpZXMgPSB0cmFuc2ZlcklucHV0LnNpZ0luZGljaWVzKCk7XG5cbiAgICAgIGNvbnN0IHV0eG86IERlY29kZWRVdHhvT2JqID0ge1xuICAgICAgICBvdXRwdXRJRDogU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCxcbiAgICAgICAgYW1vdW50OiBpbnB1dC5hbW91bnQoKS50b1N0cmluZygpLFxuICAgICAgICB0eGlkOiB1dGlscy5jYjU4RW5jb2RlKEJ1ZmZlci5mcm9tKHV0eG9JZC50eElELnRvQnl0ZXMoKSkpLFxuICAgICAgICBvdXRwdXRpZHg6IHV0eG9JZC5vdXRwdXRJZHgudmFsdWUoKS50b1N0cmluZygpLFxuICAgICAgICB0aHJlc2hvbGQ6IHNpZ0luZGljaWVzLmxlbmd0aCB8fCB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQsXG4gICAgICAgIGFkZHJlc3NlczogcHJveHlBZGRyZXNzZXMsXG4gICAgICAgIGFkZHJlc3Nlc0luZGV4OiBzaWdJbmRpY2llcyxcbiAgICAgIH07XG4gICAgICByZXR1cm4gdXR4bztcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportInCTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/ImportInCTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAuC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAGL,UAAU,EAMX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAmE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE9F,qBAAa,kBAAmB,SAAQ,2BAA2B;gBACrD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;OAIG;IACH,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK1B,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"ImportInCTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/ImportInCTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAuC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAGL,UAAU,EAMX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAmE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE9F,qBAAa,kBAAmB,SAAQ,2BAA2B;gBACrD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;OAIG;IACH,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK1B,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IA4E9E,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAItC;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAiGvC;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;CAyBrB"}
|
|
@@ -55,18 +55,31 @@ class ImportInCTxBuilder extends atomicInCTransactionBuilder_1.AtomicInCTransact
|
|
|
55
55
|
this.transaction._fee = {
|
|
56
56
|
fee: fee.toString(),
|
|
57
57
|
};
|
|
58
|
-
this.
|
|
58
|
+
this.computeAddressesIndex(true);
|
|
59
|
+
// Create addressMaps using sigIndices from parsed transaction for consistency
|
|
59
60
|
const addressMaps = this.transaction._utxos.map((utxo) => {
|
|
60
61
|
const utxoThreshold = utxo.threshold || this.transaction._threshold;
|
|
62
|
+
const sigIndices = utxo.addressesIndex ?? [];
|
|
63
|
+
if (sigIndices.length >= utxoThreshold && sigIndices.every((idx) => idx >= 0)) {
|
|
64
|
+
return this.createAddressMapForUtxo(utxo, utxoThreshold, sigIndices);
|
|
65
|
+
}
|
|
61
66
|
return this.createAddressMapForUtxo(utxo, utxoThreshold);
|
|
62
67
|
});
|
|
63
68
|
const flareAddressMaps = new flarejs_1.utils.AddressMaps(addressMaps);
|
|
69
|
+
// Use parsed credentials if available, otherwise create new ones based on sigIndices
|
|
64
70
|
let txCredentials;
|
|
65
71
|
if (credentials.length > 0) {
|
|
66
72
|
txCredentials = credentials;
|
|
67
73
|
}
|
|
68
74
|
else {
|
|
69
|
-
txCredentials = this.transaction._utxos.map((utxo) =>
|
|
75
|
+
txCredentials = this.transaction._utxos.map((utxo) => {
|
|
76
|
+
const utxoThreshold = utxo.threshold || this.transaction._threshold;
|
|
77
|
+
const sigIndices = utxo.addressesIndex ?? [];
|
|
78
|
+
if (sigIndices.length >= utxoThreshold && sigIndices.every((idx) => idx >= 0)) {
|
|
79
|
+
return this.createCredentialForUtxo(utxo, utxoThreshold, sigIndices);
|
|
80
|
+
}
|
|
81
|
+
return this.createCredentialForUtxo(utxo, utxoThreshold);
|
|
82
|
+
});
|
|
70
83
|
}
|
|
71
84
|
const unsignedTx = new flarejs_1.UnsignedTx(baseTx, [], flareAddressMaps, txCredentials);
|
|
72
85
|
this.transaction.setTransaction(unsignedTx);
|
|
@@ -119,21 +132,30 @@ class ImportInCTxBuilder extends atomicInCTransactionBuilder_1.AtomicInCTransact
|
|
|
119
132
|
if (totalUtxoAmount <= actualFeeNFlr) {
|
|
120
133
|
throw new sdk_core_1.BuildTransactionError(`Insufficient UTXO balance: have ${totalUtxoAmount.toString()} nFLR, need more than ${actualFeeNFlr.toString()} nFLR to cover import fee`);
|
|
121
134
|
}
|
|
122
|
-
const
|
|
135
|
+
const signingAddresses = this.getSigningAddresses();
|
|
136
|
+
const importTx = flarejs_1.evm.newImportTx(this.transaction._context, this.transaction._to[0], signingAddresses, nativeUtxos, sourceChain, actualFeeNFlr);
|
|
123
137
|
const flareUnsignedTx = importTx;
|
|
124
138
|
const innerTx = flareUnsignedTx.getTx();
|
|
125
|
-
const utxosWithIndex = innerTx.importedInputs.map((input
|
|
126
|
-
const
|
|
139
|
+
const utxosWithIndex = innerTx.importedInputs.map((input) => {
|
|
140
|
+
const inputTxid = utils_1.default.cb58Encode(Buffer.from(input.utxoID.txID.toBytes()));
|
|
141
|
+
const inputOutputIdx = input.utxoID.outputIdx.value().toString();
|
|
142
|
+
const originalUtxo = this.transaction._utxos.find((utxo) => utxo.txid === inputTxid && utxo.outputidx === inputOutputIdx);
|
|
143
|
+
if (!originalUtxo) {
|
|
144
|
+
throw new sdk_core_1.BuildTransactionError(`Could not find matching UTXO for input ${inputTxid}:${inputOutputIdx}`);
|
|
145
|
+
}
|
|
146
|
+
const transferInput = input.input;
|
|
147
|
+
const actualSigIndices = transferInput.sigIndicies();
|
|
127
148
|
return {
|
|
128
149
|
...originalUtxo,
|
|
129
150
|
addressesIndex: originalUtxo.addressesIndex,
|
|
130
151
|
addresses: originalUtxo.addresses,
|
|
131
152
|
threshold: originalUtxo.threshold || this.transaction._threshold,
|
|
153
|
+
actualSigIndices,
|
|
132
154
|
};
|
|
133
155
|
});
|
|
134
156
|
this.transaction._utxos = utxosWithIndex;
|
|
135
|
-
const txCredentials = utxosWithIndex.map((utxo) => this.createCredentialForUtxo(utxo, utxo.threshold));
|
|
136
|
-
const addressMaps = utxosWithIndex.map((utxo) => this.createAddressMapForUtxo(utxo, utxo.threshold));
|
|
157
|
+
const txCredentials = utxosWithIndex.map((utxo) => this.createCredentialForUtxo(utxo, utxo.threshold, utxo.actualSigIndices));
|
|
158
|
+
const addressMaps = utxosWithIndex.map((utxo) => this.createAddressMapForUtxo(utxo, utxo.threshold, utxo.actualSigIndices));
|
|
137
159
|
const fixedUnsignedTx = new flarejs_1.UnsignedTx(innerTx, [], new flarejs_1.utils.AddressMaps(addressMaps), txCredentials);
|
|
138
160
|
this.transaction.setTransaction(fixedUnsignedTx);
|
|
139
161
|
}
|
|
@@ -165,17 +187,6 @@ class ImportInCTxBuilder extends atomicInCTransactionBuilder_1.AtomicInCTransact
|
|
|
165
187
|
};
|
|
166
188
|
});
|
|
167
189
|
}
|
|
168
|
-
computeAddressesIndexFromParsed() {
|
|
169
|
-
const sender = this.transaction._fromAddresses;
|
|
170
|
-
if (!sender || sender.length === 0)
|
|
171
|
-
return;
|
|
172
|
-
this.transaction._utxos.forEach((utxo) => {
|
|
173
|
-
if (utxo.addresses && utxo.addresses.length > 0) {
|
|
174
|
-
const utxoAddresses = utxo.addresses.map((a) => utils_1.default.parseAddress(a));
|
|
175
|
-
utxo.addressesIndex = sender.map((senderAddr) => utxoAddresses.findIndex((utxoAddr) => Buffer.compare(Buffer.from(utxoAddr), Buffer.from(senderAddr)) === 0));
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
190
|
}
|
|
180
191
|
exports.ImportInCTxBuilder = ImportInCTxBuilder;
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1wb3J0SW5DVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9JbXBvcnRJbkNUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsbURBQTRGO0FBQzVGLCtFQUE0RTtBQUM1RSxtREFTK0I7QUFDL0Isb0RBQTRCO0FBQzVCLG1DQUE4RjtBQUU5RixNQUFhLGtCQUFtQixTQUFRLHlEQUEyQjtJQUNqRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEVBQUUsQ0FBQyxRQUFnQjtRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxDQUFDLGVBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQU0sRUFBRSxRQUFpQixFQUFFLGlCQUFnQztRQUNyRSxNQUFNLE1BQU0sR0FBRyxFQUF3QixDQUFDO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSx1QkFBWSxDQUFDLHFFQUFxRSxDQUFDLENBQUM7UUFDaEcsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDNUIsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4RixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBRXJDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBQ3RGLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLGNBQWMsQ0FBQztRQUU3QyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWhELE1BQU0sR0FBRyxHQUFHLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDO1FBRWpELE1BQU0sV0FBVyxHQUFHLGlCQUFpQixJQUFJLEVBQUUsQ0FBQztRQUM1QyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUU5QyxJQUFJLGNBQWMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUM7UUFDOUMsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHO1lBQ3RCLEdBQUcsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFO1NBQ3BCLENBQUM7UUFFRixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztRQUV2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQ3BFLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxlQUFVLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWpFLElBQUksYUFBMkIsQ0FBQztRQUNoQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0IsYUFBYSxHQUFHLFdBQVcsQ0FBQztRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNOLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNuRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FDbEYsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLG9CQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQWU7UUFDakMsT0FBTyxPQUFPLEtBQUssNEJBQW9CLENBQUMsV0FBVyxDQUFDO0lBQ3RELENBQUM7SUFFRCxZQUFZLENBQUMsT0FBZTtRQUMxQixPQUFPLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLHFCQUFxQjtRQUM3QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYztZQUFFLE9BQU87UUFDNUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksZ0NBQXFCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekQsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDckYsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDckUsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFRCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEQsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBRXhCLHVEQUF1RDtRQUN2RCxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRixNQUFNLFdBQVcsR0FBRyxlQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTNFLDhEQUE4RDtRQUM5RCxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3ZELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUF3QixDQUFDO1lBQzdDLE9BQU8sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMvQixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFZCxJQUFJLGVBQWUsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksZ0NBQXFCLENBQzdCLG1DQUFtQyxlQUFlLENBQUMsUUFBUSxFQUFFLHlCQUF5QixhQUFhLENBQUMsUUFBUSxFQUFFLDJCQUEyQixDQUMxSSxDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLGFBQUcsQ0FBQyxXQUFXLENBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ2hFLFdBQVcsRUFDWCxXQUFXLEVBQ1gsYUFBYSxDQUNkLENBQUM7UUFFRixNQUFNLGVBQWUsR0FBRyxRQUFzQixDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxLQUFLLEVBQXdCLENBQUM7UUFFOUQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDL0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEQsT0FBTztnQkFDTCxHQUFHLFlBQVk7Z0JBQ2YsY0FBYyxFQUFFLFlBQVksQ0FBQyxjQUFjO2dCQUMzQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFNBQVM7Z0JBQ2pDLFNBQVMsRUFBRSxZQUFZLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVTthQUNqRSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUM7UUFFekMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUV2RyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBRXJHLE1BQU0sZUFBZSxHQUFHLElBQUksb0JBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksZUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUU1RyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLFlBQVksQ0FBQyxjQUFtQztRQUN0RCxNQUFNLGNBQWMsR0FDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDM0UsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQzNDLGVBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzdFO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVULE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEQsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQXNCLENBQUM7WUFDbkQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRWhELE9BQU87Z0JBQ0wsUUFBUSxFQUFFLGlDQUF5QjtnQkFDbkMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pDLElBQUksRUFBRSxlQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNoRCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVO2dCQUM1RCxTQUFTLEVBQUUsY0FBYztnQkFDekIsY0FBYyxFQUFFLFdBQVc7YUFDNUIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLCtCQUErQjtRQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQztRQUMvQyxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU87UUFFM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2RSxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUM5QyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUM1RyxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBNU5ELGdEQTROQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgTm90U3VwcG9ydGVkLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBBdG9taWNJbkNUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2F0b21pY0luQ1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQge1xuICBldm1TZXJpYWwsXG4gIFVuc2lnbmVkVHgsXG4gIENyZWRlbnRpYWwsXG4gIFRyYW5zZmVyYWJsZUlucHV0LFxuICBUcmFuc2ZlcklucHV0LFxuICBUcmFuc2Zlck91dHB1dCxcbiAgdXRpbHMgYXMgRmxhcmVVdGlscyxcbiAgZXZtLFxufSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRGVjb2RlZFV0eG9PYmosIEZsYXJlVHJhbnNhY3Rpb25UeXBlLCBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0LCBUeCB9IGZyb20gJy4vaWZhY2UnO1xuXG5leHBvcnQgY2xhc3MgSW1wb3J0SW5DVHhCdWlsZGVyIGV4dGVuZHMgQXRvbWljSW5DVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEMtY2hhaW4gYWRkcmVzcyB3aG8gaXMgdGFyZ2V0IG9mIHRoZSBpbXBvcnQuXG4gICAqIEFkZHJlc3MgZm9ybWF0IGlzIGV0aCBsaWtlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjQWRkcmVzc1xuICAgKi9cbiAgdG8oY0FkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3RvID0gW3V0aWxzLnBhcnNlQWRkcmVzcyhjQWRkcmVzcyldO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkltcG9ydDtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBUeCwgcmF3Qnl0ZXM/OiBCdWZmZXIsIHBhcnNlZENyZWRlbnRpYWxzPzogQ3JlZGVudGlhbFtdKTogdGhpcyB7XG4gICAgY29uc3QgYmFzZVR4ID0gdHggYXMgZXZtU2VyaWFsLkltcG9ydFR4O1xuICAgIGlmICghdGhpcy52ZXJpZnlUeFR5cGUoYmFzZVR4Ll90eXBlKSkge1xuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnVHJhbnNhY3Rpb24gY2Fubm90IGJlIHBhcnNlZCBvciBoYXMgYW4gdW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dHMgPSBiYXNlVHguT3V0cztcbiAgICBpZiAob3V0cHV0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGNhbiBoYXZlIG9uZSBvdXRwdXQnKTtcbiAgICB9XG4gICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1swXTtcblxuICAgIGlmIChCdWZmZXIuZnJvbShvdXRwdXQuYXNzZXRJZC50b0J5dGVzKCkpLnRvU3RyaW5nKCdoZXgnKSAhPT0gdGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3NldElEIGFyZSBub3QgZXF1YWxzJyk7XG4gICAgfVxuICAgIHRoaXMudHJhbnNhY3Rpb24uX3RvID0gW0J1ZmZlci5mcm9tKG91dHB1dC5hZGRyZXNzLnRvQnl0ZXMoKSldO1xuXG4gICAgY29uc3QgaW5wdXRzID0gYmFzZVR4LmltcG9ydGVkSW5wdXRzO1xuXG4gICAgY29uc3QgZmlyc3RJbnB1dCA9IGlucHV0c1swXTtcbiAgICBjb25zdCBpbnB1dFRocmVzaG9sZCA9IGZpcnN0SW5wdXQuc2lnSW5kaWNpZXMoKS5sZW5ndGggfHwgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZCA9IGlucHV0VGhyZXNob2xkO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MgPSB0aGlzLnJlY292ZXJVdHhvcyhpbnB1dHMpO1xuXG4gICAgY29uc3QgdG90YWxJbnB1dEFtb3VudCA9IGlucHV0cy5yZWR1Y2UoKHQsIGkpID0+IHQgKyBpLmFtb3VudCgpLCBCaWdJbnQoMCkpO1xuICAgIGNvbnN0IHRvdGFsT3V0cHV0QW1vdW50ID0gb3V0cHV0LmFtb3VudC52YWx1ZSgpO1xuXG4gICAgY29uc3QgZmVlID0gdG90YWxJbnB1dEFtb3VudCAtIHRvdGFsT3V0cHV0QW1vdW50O1xuXG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSBwYXJzZWRDcmVkZW50aWFscyB8fCBbXTtcbiAgICBjb25zdCBoYXNDcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzLmxlbmd0aCA+IDA7XG5cbiAgICBpZiAoaGFzQ3JlZGVudGlhbHMgJiYgcmF3Qnl0ZXMpIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uX3Jhd1NpZ25lZEJ5dGVzID0gcmF3Qnl0ZXM7XG4gICAgfVxuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlID0ge1xuICAgICAgZmVlOiBmZWUudG9TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgdGhpcy5jb21wdXRlQWRkcmVzc2VzSW5kZXhGcm9tUGFyc2VkKCk7XG5cbiAgICBjb25zdCBhZGRyZXNzTWFwcyA9IHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLm1hcCgodXR4bykgPT4ge1xuICAgICAgY29uc3QgdXR4b1RocmVzaG9sZCA9IHV0eG8udGhyZXNob2xkIHx8IHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZDtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUFkZHJlc3NNYXBGb3JVdHhvKHV0eG8sIHV0eG9UaHJlc2hvbGQpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZmxhcmVBZGRyZXNzTWFwcyA9IG5ldyBGbGFyZVV0aWxzLkFkZHJlc3NNYXBzKGFkZHJlc3NNYXBzKTtcblxuICAgIGxldCB0eENyZWRlbnRpYWxzOiBDcmVkZW50aWFsW107XG4gICAgaWYgKGNyZWRlbnRpYWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIHR4Q3JlZGVudGlhbHMgPSBjcmVkZW50aWFscztcbiAgICB9IGVsc2Uge1xuICAgICAgdHhDcmVkZW50aWFscyA9IHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLm1hcCgodXR4bykgPT5cbiAgICAgICAgdGhpcy5jcmVhdGVDcmVkZW50aWFsRm9yVXR4byh1dHhvLCB1dHhvLnRocmVzaG9sZCB8fCB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQpXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHVuc2lnbmVkVHggPSBuZXcgVW5zaWduZWRUeChiYXNlVHgsIFtdLCBmbGFyZUFkZHJlc3NNYXBzLCB0eENyZWRlbnRpYWxzKTtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24odW5zaWduZWRUeCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdGF0aWMgdmVyaWZ5VHhUeXBlKHR4blR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eG5UeXBlID09PSBGbGFyZVRyYW5zYWN0aW9uVHlwZS5Fdm1JbXBvcnRUeDtcbiAgfVxuXG4gIHZlcmlmeVR4VHlwZSh0eG5UeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gSW1wb3J0SW5DVHhCdWlsZGVyLnZlcmlmeVR4VHlwZSh0eG5UeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgaW1wb3J0IGluIEMtY2hhaW4gdHJhbnNhY3Rpb25cbiAgICogRm9sbG93aW5nIEFWQVggUCBhcHByb2FjaCBmb3IgVVRYTyBoYW5kbGluZyBhbmQgc2lnbmF0dXJlIHNsb3QgYXNzaWdubWVudC5cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkRmxhcmVUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5oYXNDcmVkZW50aWFscykgcmV0dXJuO1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLl90by5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3RvIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignZmVlIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbi5fY29udGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignY29udGV4dCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMgfHwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ2Zyb21BZGRyZXNzZXMgYXJlIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MgfHwgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVVFhPcyBhcmUgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3RocmVzaG9sZCBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIHRoaXMuY29tcHV0ZUFkZHJlc3Nlc0luZGV4KCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlVXR4b0FkZHJlc3NlcygpO1xuXG4gICAgY29uc3QgYWN0dWFsRmVlTkZsciA9IEJpZ0ludCh0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlKTtcbiAgICBjb25zdCBzb3VyY2VDaGFpbiA9ICdQJztcblxuICAgIC8vIENvbnZlcnQgZGVjb2RlZCBVVFhPcyB0byBuYXRpdmUgRmxhcmVKUyBVdHhvIG9iamVjdHNcbiAgICBjb25zdCBhc3NldElkID0gdXRpbHMuY2I1OEVuY29kZShCdWZmZXIuZnJvbSh0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLCAnaGV4JykpO1xuICAgIGNvbnN0IG5hdGl2ZVV0eG9zID0gdXRpbHMuZGVjb2RlZFRvVXR4b3ModGhpcy50cmFuc2FjdGlvbi5fdXR4b3MsIGFzc2V0SWQpO1xuXG4gICAgLy8gVmFsaWRhdGUgVVRYTyBiYWxhbmNlIGlzIHN1ZmZpY2llbnQgdG8gY292ZXIgdGhlIGltcG9ydCBmZWVcbiAgICBjb25zdCB0b3RhbFV0eG9BbW91bnQgPSBuYXRpdmVVdHhvcy5yZWR1Y2UoKHN1bSwgdXR4bykgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gdXR4by5vdXRwdXQgYXMgVHJhbnNmZXJPdXRwdXQ7XG4gICAgICByZXR1cm4gc3VtICsgb3V0cHV0LmFtb3VudCgpO1xuICAgIH0sIEJpZ0ludCgwKSk7XG5cbiAgICBpZiAodG90YWxVdHhvQW1vdW50IDw9IGFjdHVhbEZlZU5GbHIpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBJbnN1ZmZpY2llbnQgVVRYTyBiYWxhbmNlOiBoYXZlICR7dG90YWxVdHhvQW1vdW50LnRvU3RyaW5nKCl9IG5GTFIsIG5lZWQgbW9yZSB0aGFuICR7YWN0dWFsRmVlTkZsci50b1N0cmluZygpfSBuRkxSIHRvIGNvdmVyIGltcG9ydCBmZWVgXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBpbXBvcnRUeCA9IGV2bS5uZXdJbXBvcnRUeChcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2NvbnRleHQsXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl90b1swXSxcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMubWFwKChhZGRyKSA9PiBCdWZmZXIuZnJvbShhZGRyKSksXG4gICAgICBuYXRpdmVVdHhvcyxcbiAgICAgIHNvdXJjZUNoYWluLFxuICAgICAgYWN0dWFsRmVlTkZsclxuICAgICk7XG5cbiAgICBjb25zdCBmbGFyZVVuc2lnbmVkVHggPSBpbXBvcnRUeCBhcyBVbnNpZ25lZFR4O1xuICAgIGNvbnN0IGlubmVyVHggPSBmbGFyZVVuc2lnbmVkVHguZ2V0VHgoKSBhcyBldm1TZXJpYWwuSW1wb3J0VHg7XG5cbiAgICBjb25zdCB1dHhvc1dpdGhJbmRleCA9IGlubmVyVHguaW1wb3J0ZWRJbnB1dHMubWFwKChpbnB1dCwgaWR4KSA9PiB7XG4gICAgICBjb25zdCBvcmlnaW5hbFV0eG8gPSB0aGlzLnRyYW5zYWN0aW9uLl91dHhvc1tpZHhdO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3JpZ2luYWxVdHhvLFxuICAgICAgICBhZGRyZXNzZXNJbmRleDogb3JpZ2luYWxVdHhvLmFkZHJlc3Nlc0luZGV4LFxuICAgICAgICBhZGRyZXNzZXM6IG9yaWdpbmFsVXR4by5hZGRyZXNzZXMsXG4gICAgICAgIHRocmVzaG9sZDogb3JpZ2luYWxVdHhvLnRocmVzaG9sZCB8fCB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MgPSB1dHhvc1dpdGhJbmRleDtcblxuICAgIGNvbnN0IHR4Q3JlZGVudGlhbHMgPSB1dHhvc1dpdGhJbmRleC5tYXAoKHV0eG8pID0+IHRoaXMuY3JlYXRlQ3JlZGVudGlhbEZvclV0eG8odXR4bywgdXR4by50aHJlc2hvbGQpKTtcblxuICAgIGNvbnN0IGFkZHJlc3NNYXBzID0gdXR4b3NXaXRoSW5kZXgubWFwKCh1dHhvKSA9PiB0aGlzLmNyZWF0ZUFkZHJlc3NNYXBGb3JVdHhvKHV0eG8sIHV0eG8udGhyZXNob2xkKSk7XG5cbiAgICBjb25zdCBmaXhlZFVuc2lnbmVkVHggPSBuZXcgVW5zaWduZWRUeChpbm5lclR4LCBbXSwgbmV3IEZsYXJlVXRpbHMuQWRkcmVzc01hcHMoYWRkcmVzc01hcHMpLCB0eENyZWRlbnRpYWxzKTtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24oZml4ZWRVbnNpZ25lZFR4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvdmVyIFVUWE9zIGZyb20gaW1wb3J0ZWQgaW5wdXRzLlxuICAgKiBVc2VzIGZyb21BZGRyZXNzZXMgYXMgcHJveHkgZm9yIFVUWE8gYWRkcmVzc2VzIHNpbmNlIHRoZXkgc2hvdWxkIGJlIHRoZSBzYW1lXG4gICAqIGFkZHJlc3NlcyBjb250cm9sbGluZyB0aGUgbXVsdGlzaWcuXG4gICAqXG4gICAqIEBwYXJhbSBpbXBvcnRlZElucHV0cyBBcnJheSBvZiB0cmFuc2ZlcmFibGUgaW5wdXRzXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIGRlY29kZWQgVVRYTyBvYmplY3RzXG4gICAqL1xuICBwcml2YXRlIHJlY292ZXJVdHhvcyhpbXBvcnRlZElucHV0czogVHJhbnNmZXJhYmxlSW5wdXRbXSk6IERlY29kZWRVdHhvT2JqW10ge1xuICAgIGNvbnN0IHByb3h5QWRkcmVzc2VzID1cbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMgJiYgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlcy5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlcy5tYXAoKGFkZHIpID0+XG4gICAgICAgICAgICB1dGlscy5hZGRyZXNzVG9TdHJpbmcodGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5ocnAsICdQJywgQnVmZmVyLmZyb20oYWRkcikpXG4gICAgICAgICAgKVxuICAgICAgICA6IFtdO1xuXG4gICAgcmV0dXJuIGltcG9ydGVkSW5wdXRzLm1hcCgoaW5wdXQpID0+IHtcbiAgICAgIGNvbnN0IHR4aWQgPSBpbnB1dC51dHhvSUQudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IG91dHB1dGlkeCA9IGlucHV0LnV0eG9JRC5vdXRwdXRJZHgudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IHRyYW5zZmVySW5wdXQgPSBpbnB1dC5pbnB1dCBhcyBUcmFuc2ZlcklucHV0O1xuICAgICAgY29uc3Qgc2lnSW5kaWNpZXMgPSB0cmFuc2ZlcklucHV0LnNpZ0luZGljaWVzKCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG91dHB1dElEOiBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0LFxuICAgICAgICBhbW91bnQ6IGlucHV0LmFtb3VudCgpLnRvU3RyaW5nKCksXG4gICAgICAgIHR4aWQ6IHV0aWxzLmNiNThFbmNvZGUoQnVmZmVyLmZyb20odHhpZCwgJ2hleCcpKSxcbiAgICAgICAgb3V0cHV0aWR4OiBvdXRwdXRpZHgsXG4gICAgICAgIHRocmVzaG9sZDogc2lnSW5kaWNpZXMubGVuZ3RoIHx8IHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZCxcbiAgICAgICAgYWRkcmVzc2VzOiBwcm94eUFkZHJlc3NlcyxcbiAgICAgICAgYWRkcmVzc2VzSW5kZXg6IHNpZ0luZGljaWVzLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZUFkZHJlc3Nlc0luZGV4RnJvbVBhcnNlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBzZW5kZXIgPSB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzO1xuICAgIGlmICghc2VuZGVyIHx8IHNlbmRlci5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmZvckVhY2goKHV0eG8pID0+IHtcbiAgICAgIGlmICh1dHhvLmFkZHJlc3NlcyAmJiB1dHhvLmFkZHJlc3Nlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHV0eG9BZGRyZXNzZXMgPSB1dHhvLmFkZHJlc3Nlcy5tYXAoKGEpID0+IHV0aWxzLnBhcnNlQWRkcmVzcyhhKSk7XG4gICAgICAgIHV0eG8uYWRkcmVzc2VzSW5kZXggPSBzZW5kZXIubWFwKChzZW5kZXJBZGRyKSA9PlxuICAgICAgICAgIHV0eG9BZGRyZXNzZXMuZmluZEluZGV4KCh1dHhvQWRkcikgPT4gQnVmZmVyLmNvbXBhcmUoQnVmZmVyLmZyb20odXR4b0FkZHIpLCBCdWZmZXIuZnJvbShzZW5kZXJBZGRyKSkgPT09IDApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1wb3J0SW5DVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9JbXBvcnRJbkNUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsbURBQTRGO0FBQzVGLCtFQUE0RTtBQUM1RSxtREFTK0I7QUFDL0Isb0RBQTRCO0FBQzVCLG1DQUE4RjtBQUU5RixNQUFhLGtCQUFtQixTQUFRLHlEQUEyQjtJQUNqRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEVBQUUsQ0FBQyxRQUFnQjtRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxDQUFDLGVBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQU0sRUFBRSxRQUFpQixFQUFFLGlCQUFnQztRQUNyRSxNQUFNLE1BQU0sR0FBRyxFQUF3QixDQUFDO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSx1QkFBWSxDQUFDLHFFQUFxRSxDQUFDLENBQUM7UUFDaEcsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDNUIsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUIsSUFBSSxNQUFNLENB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S0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEQsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQXNCLENBQUM7WUFDbkQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRWhELE9BQU87Z0JBQ0wsUUFBUSxFQUFFLGlDQUF5QjtnQkFDbkMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pDLElBQUksRUFBRSxlQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNoRCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVO2dCQUM1RCxTQUFTLEVBQUUsY0FBYztnQkFDekIsY0FBYyxFQUFFLFdBQVc7YUFDNUIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBOU9ELGdEQThPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgTm90U3VwcG9ydGVkLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBBdG9taWNJbkNUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2F0b21pY0luQ1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQge1xuICBldm1TZXJpYWwsXG4gIFVuc2lnbmVkVHgsXG4gIENyZWRlbnRpYWwsXG4gIFRyYW5zZmVyYWJsZUlucHV0LFxuICBUcmFuc2ZlcklucHV0LFxuICBUcmFuc2Zlck91dHB1dCxcbiAgdXRpbHMgYXMgRmxhcmVVdGlscyxcbiAgZXZtLFxufSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRGVjb2RlZFV0eG9PYmosIEZsYXJlVHJhbnNhY3Rpb25UeXBlLCBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0LCBUeCB9IGZyb20gJy4vaWZhY2UnO1xuXG5leHBvcnQgY2xhc3MgSW1wb3J0SW5DVHhCdWlsZGVyIGV4dGVuZHMgQXRvbWljSW5DVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEMtY2hhaW4gYWRkcmVzcyB3aG8gaXMgdGFyZ2V0IG9mIHRoZSBpbXBvcnQuXG4gICAqIEFkZHJlc3MgZm9ybWF0IGlzIGV0aCBsaWtlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjQWRkcmVzc1xuICAgKi9cbiAgdG8oY0FkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3RvID0gW3V0aWxzLnBhcnNlQWRkcmVzcyhjQWRkcmVzcyldO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkltcG9ydDtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBUeCwgcmF3Qnl0ZXM/OiBCdWZmZXIsIHBhcnNlZENyZWRlbnRpYWxzPzogQ3JlZGVudGlhbFtdKTogdGhpcyB7XG4gICAgY29uc3QgYmFzZVR4ID0gdHggYXMgZXZtU2VyaWFsLkltcG9ydFR4O1xuICAgIGlmICghdGhpcy52ZXJpZnlUeFR5cGUoYmFzZVR4Ll90eXBlKSkge1xuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnVHJhbnNhY3Rpb24gY2Fubm90IGJlIHBhcnNlZCBvciBoYXMgYW4gdW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dHMgPSBiYXNlVHguT3V0cztcbiAgICBpZiAob3V0cHV0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGNhbiBoYXZlIG9uZSBvdXRwdXQnKTtcbiAgICB9XG4gICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1swXTtcblxuICAgIGlmIChCdWZmZXIuZnJvbShvdXRwdXQuYXNzZXRJZC50b0J5dGVzKCkpLnRvU3RyaW5nKCdoZXgnKSAhPT0gdGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3NldElEIGFyZSBub3QgZXF1YWxzJyk7XG4gICAgfVxuICAgIHRoaXMudHJhbnNhY3Rpb24uX3RvID0gW0J1ZmZlci5mcm9tKG91dHB1dC5hZGRyZXNzLnRvQnl0ZXMoKSldO1xuXG4gICAgY29uc3QgaW5wdXRzID0gYmFzZVR4LmltcG9ydGVkSW5wdXRzO1xuXG4gICAgY29uc3QgZmlyc3RJbnB1dCA9IGlucHV0c1swXTtcbiAgICBjb25zdCBpbnB1dFRocmVzaG9sZCA9IGZpcnN0SW5wdXQuc2lnSW5kaWNpZXMoKS5sZW5ndGggfHwgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZCA9IGlucHV0VGhyZXNob2xkO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MgPSB0aGlzLnJlY292ZXJVdHhvcyhpbnB1dHMpO1xuXG4gICAgY29uc3QgdG90YWxJbnB1dEFtb3VudCA9IGlucHV0cy5yZWR1Y2UoKHQsIGkpID0+IHQgKyBpLmFtb3VudCgpLCBCaWdJbnQoMCkpO1xuICAgIGNvbnN0IHRvdGFsT3V0cHV0QW1vdW50ID0gb3V0cHV0LmFtb3VudC52YWx1ZSgpO1xuXG4gICAgY29uc3QgZmVlID0gdG90YWxJbnB1dEFtb3VudCAtIHRvdGFsT3V0cHV0QW1vdW50O1xuXG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSBwYXJzZWRDcmVkZW50aWFscyB8fCBbXTtcbiAgICBjb25zdCBoYXNDcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzLmxlbmd0aCA+IDA7XG5cbiAgICBpZiAoaGFzQ3JlZGVudGlhbHMgJiYgcmF3Qnl0ZXMpIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uX3Jhd1NpZ25lZEJ5dGVzID0gcmF3Qnl0ZXM7XG4gICAgfVxuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlID0ge1xuICAgICAgZmVlOiBmZWUudG9TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgdGhpcy5jb21wdXRlQWRkcmVzc2VzSW5kZXgodHJ1ZSk7XG5cbiAgICAvLyBDcmVhdGUgYWRkcmVzc01hcHMgdXNpbmcgc2lnSW5kaWNlcyBmcm9tIHBhcnNlZCB0cmFuc2FjdGlvbiBmb3IgY29uc2lzdGVuY3lcbiAgICBjb25zdCBhZGRyZXNzTWFwcyA9IHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLm1hcCgodXR4bykgPT4ge1xuICAgICAgY29uc3QgdXR4b1RocmVzaG9sZCA9IHV0eG8udGhyZXNob2xkIHx8IHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZDtcbiAgICAgIGNvbnN0IHNpZ0luZGljZXMgPSB1dHhvLmFkZHJlc3Nlc0luZGV4ID8/IFtdO1xuICAgICAgaWYgKHNpZ0luZGljZXMubGVuZ3RoID49IHV0eG9UaHJlc2hvbGQgJiYgc2lnSW5kaWNlcy5ldmVyeSgoaWR4KSA9PiBpZHggPj0gMCkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQWRkcmVzc01hcEZvclV0eG8odXR4bywgdXR4b1RocmVzaG9sZCwgc2lnSW5kaWNlcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVBZGRyZXNzTWFwRm9yVXR4byh1dHhvLCB1dHhvVGhyZXNob2xkKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZsYXJlQWRkcmVzc01hcHMgPSBuZXcgRmxhcmVVdGlscy5BZGRyZXNzTWFwcyhhZGRyZXNzTWFwcyk7XG5cbiAgICAvLyBVc2UgcGFyc2VkIGNyZWRlbnRpYWxzIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGNyZWF0ZSBuZXcgb25lcyBiYXNlZCBvbiBzaWdJbmRpY2VzXG4gICAgbGV0IHR4Q3JlZGVudGlhbHM6IENyZWRlbnRpYWxbXTtcbiAgICBpZiAoY3JlZGVudGlhbHMubGVuZ3RoID4gMCkge1xuICAgICAgdHhDcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eENyZWRlbnRpYWxzID0gdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MubWFwKCh1dHhvKSA9PiB7XG4gICAgICAgIGNvbnN0IHV0eG9UaHJlc2hvbGQgPSB1dHhvLnRocmVzaG9sZCB8fCB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQ7XG4gICAgICAgIGNvbnN0IHNpZ0luZGljZXMgPSB1dHhvLmFkZHJlc3Nlc0luZGV4ID8/IFtdO1xuICAgICAgICBpZiAoc2lnSW5kaWNlcy5sZW5ndGggPj0gdXR4b1RocmVzaG9sZCAmJiBzaWdJbmRpY2VzLmV2ZXJ5KChpZHgpID0+IGlkeCA+PSAwKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNyZWRlbnRpYWxGb3JVdHhvKHV0eG8sIHV0eG9UaHJlc2hvbGQsIHNpZ0luZGljZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNyZWRlbnRpYWxGb3JVdHhvKHV0eG8sIHV0eG9UaHJlc2hvbGQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgdW5zaWduZWRUeCA9IG5ldyBVbnNpZ25lZFR4KGJhc2VUeCwgW10sIGZsYXJlQWRkcmVzc01hcHMsIHR4Q3JlZGVudGlhbHMpO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbih1bnNpZ25lZFR4KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyB2ZXJpZnlUeFR5cGUodHhuVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR4blR5cGUgPT09IEZsYXJlVHJhbnNhY3Rpb25UeXBlLkV2bUltcG9ydFR4O1xuICB9XG5cbiAgdmVyaWZ5VHhUeXBlKHR4blR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBJbXBvcnRJbkNUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKHR4blR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBpbXBvcnQgaW4gQy1jaGFpbiB0cmFuc2FjdGlvblxuICAgKiBGb2xsb3dpbmcgQVZBWCBQIGFwcHJvYWNoIGZvciBVVFhPIGhhbmRsaW5nIGFuZCBzaWduYXR1cmUgc2xvdCBhc3NpZ25tZW50LlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRGbGFyZVRyYW5zYWN0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmhhc0NyZWRlbnRpYWxzKSByZXR1cm47XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uX3RvLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcigndG8gaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdmZWUgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLl9jb250ZXh0KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdjb250ZXh0IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyB8fCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignZnJvbUFkZHJlc3NlcyBhcmUgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLl91dHhvcyB8fCB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1VUWE9zIGFyZSByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcigndGhyZXNob2xkIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jb21wdXRlQWRkcmVzc2VzSW5kZXgoKTtcblxuICAgIHRoaXMudmFsaWRhdGVVdHhvQWRkcmVzc2VzKCk7XG5cbiAgICBjb25zdCBhY3R1YWxGZWVORmxyID0gQmlnSW50KHRoaXMudHJhbnNhY3Rpb24uX2ZlZS5mZWUpO1xuICAgIGNvbnN0IHNvdXJjZUNoYWluID0gJ1AnO1xuXG4gICAgLy8gQ29udmVydCBkZWNvZGVkIFVUWE9zIHRvIG5hdGl2ZSBGbGFyZUpTIFV0eG8gb2JqZWN0c1xuICAgIGNvbnN0IGFzc2V0SWQgPSB1dGlscy5jYjU4RW5jb2RlKEJ1ZmZlci5mcm9tKHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQsICdoZXgnKSk7XG4gICAgY29uc3QgbmF0aXZlVXR4b3MgPSB1dGlscy5kZWNvZGVkVG9VdHhvcyh0aGlzLnRyYW5zYWN0aW9uLl91dHhvcywgYXNzZXRJZCk7XG5cbiAgICAvLyBWYWxpZGF0ZSBVVFhPIGJhbGFuY2UgaXMgc3VmZmljaWVudCB0byBjb3ZlciB0aGUgaW1wb3J0IGZlZVxuICAgIGNvbnN0IHRvdGFsVXR4b0Ftb3VudCA9IG5hdGl2ZVV0eG9zLnJlZHVjZSgoc3VtLCB1dHhvKSA9PiB7XG4gICAgICBjb25zdCBvdXRwdXQgPSB1dHhvLm91dHB1dCBhcyBUcmFuc2Zlck91dHB1dDtcbiAgICAgIHJldHVybiBzdW0gKyBvdXRwdXQuYW1vdW50KCk7XG4gICAgfSwgQmlnSW50KDApKTtcblxuICAgIGlmICh0b3RhbFV0eG9BbW91bnQgPD0gYWN0dWFsRmVlTkZscikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEluc3VmZmljaWVudCBVVFhPIGJhbGFuY2U6IGhhdmUgJHt0b3RhbFV0eG9BbW91bnQudG9TdHJpbmcoKX0gbkZMUiwgbmVlZCBtb3JlIHRoYW4gJHthY3R1YWxGZWVORmxyLnRvU3RyaW5nKCl9IG5GTFIgdG8gY292ZXIgaW1wb3J0IGZlZWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2lnbmluZ0FkZHJlc3NlcyA9IHRoaXMuZ2V0U2lnbmluZ0FkZHJlc3NlcygpO1xuXG4gICAgY29uc3QgaW1wb3J0VHggPSBldm0ubmV3SW1wb3J0VHgoXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl9jb250ZXh0LFxuICAgICAgdGhpcy50cmFuc2FjdGlvbi5fdG9bMF0sXG4gICAgICBzaWduaW5nQWRkcmVzc2VzLFxuICAgICAgbmF0aXZlVXR4b3MsXG4gICAgICBzb3VyY2VDaGFpbixcbiAgICAgIGFjdHVhbEZlZU5GbHJcbiAgICApO1xuXG4gICAgY29uc3QgZmxhcmVVbnNpZ25lZFR4ID0gaW1wb3J0VHggYXMgVW5zaWduZWRUeDtcbiAgICBjb25zdCBpbm5lclR4ID0gZmxhcmVVbnNpZ25lZFR4LmdldFR4KCkgYXMgZXZtU2VyaWFsLkltcG9ydFR4O1xuXG4gICAgY29uc3QgdXR4b3NXaXRoSW5kZXggPSBpbm5lclR4LmltcG9ydGVkSW5wdXRzLm1hcCgoaW5wdXQpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0VHhpZCA9IHV0aWxzLmNiNThFbmNvZGUoQnVmZmVyLmZyb20oaW5wdXQudXR4b0lELnR4SUQudG9CeXRlcygpKSk7XG4gICAgICBjb25zdCBpbnB1dE91dHB1dElkeCA9IGlucHV0LnV0eG9JRC5vdXRwdXRJZHgudmFsdWUoKS50b1N0cmluZygpO1xuXG4gICAgICBjb25zdCBvcmlnaW5hbFV0eG8gPSB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcy5maW5kKFxuICAgICAgICAodXR4bykgPT4gdXR4by50eGlkID09PSBpbnB1dFR4aWQgJiYgdXR4by5vdXRwdXRpZHggPT09IGlucHV0T3V0cHV0SWR4XG4gICAgICApO1xuXG4gICAgICBpZiAoIW9yaWdpbmFsVXR4bykge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBDb3VsZCBub3QgZmluZCBtYXRjaGluZyBVVFhPIGZvciBpbnB1dCAke2lucHV0VHhpZH06JHtpbnB1dE91dHB1dElkeH1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHJhbnNmZXJJbnB1dCA9IGlucHV0LmlucHV0IGFzIFRyYW5zZmVySW5wdXQ7XG4gICAgICBjb25zdCBhY3R1YWxTaWdJbmRpY2VzID0gdHJhbnNmZXJJbnB1dC5zaWdJbmRpY2llcygpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vcmlnaW5hbFV0eG8sXG4gICAgICAgIGFkZHJlc3Nlc0luZGV4OiBvcmlnaW5hbFV0eG8uYWRkcmVzc2VzSW5kZXgsXG4gICAgICAgIGFkZHJlc3Nlczogb3JpZ2luYWxVdHhvLmFkZHJlc3NlcyxcbiAgICAgICAgdGhyZXNob2xkOiBvcmlnaW5hbFV0eG8udGhyZXNob2xkIHx8IHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZCxcbiAgICAgICAgYWN0dWFsU2lnSW5kaWNlcyxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcyA9IHV0eG9zV2l0aEluZGV4O1xuXG4gICAgY29uc3QgdHhDcmVkZW50aWFscyA9IHV0eG9zV2l0aEluZGV4Lm1hcCgodXR4bykgPT5cbiAgICAgIHRoaXMuY3JlYXRlQ3JlZGVudGlhbEZvclV0eG8odXR4bywgdXR4by50aHJlc2hvbGQsIHV0eG8uYWN0dWFsU2lnSW5kaWNlcylcbiAgICApO1xuXG4gICAgY29uc3QgYWRkcmVzc01hcHMgPSB1dHhvc1dpdGhJbmRleC5tYXAoKHV0eG8pID0+XG4gICAgICB0aGlzLmNyZWF0ZUFkZHJlc3NNYXBGb3JVdHhvKHV0eG8sIHV0eG8udGhyZXNob2xkLCB1dHhvLmFjdHVhbFNpZ0luZGljZXMpXG4gICAgKTtcblxuICAgIGNvbnN0IGZpeGVkVW5zaWduZWRUeCA9IG5ldyBVbnNpZ25lZFR4KGlubmVyVHgsIFtdLCBuZXcgRmxhcmVVdGlscy5BZGRyZXNzTWFwcyhhZGRyZXNzTWFwcyksIHR4Q3JlZGVudGlhbHMpO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbihmaXhlZFVuc2lnbmVkVHgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY292ZXIgVVRYT3MgZnJvbSBpbXBvcnRlZCBpbnB1dHMuXG4gICAqIFVzZXMgZnJvbUFkZHJlc3NlcyBhcyBwcm94eSBmb3IgVVRYTyBhZGRyZXNzZXMgc2luY2UgdGhleSBzaG91bGQgYmUgdGhlIHNhbWVcbiAgICogYWRkcmVzc2VzIGNvbnRyb2xsaW5nIHRoZSBtdWx0aXNpZy5cbiAgICpcbiAgICogQHBhcmFtIGltcG9ydGVkSW5wdXRzIEFycmF5IG9mIHRyYW5zZmVyYWJsZSBpbnB1dHNcbiAgICogQHJldHVybnMgQXJyYXkgb2YgZGVjb2RlZCBVVFhPIG9iamVjdHNcbiAgICovXG4gIHByaXZhdGUgcmVjb3ZlclV0eG9zKGltcG9ydGVkSW5wdXRzOiBUcmFuc2ZlcmFibGVJbnB1dFtdKTogRGVjb2RlZFV0eG9PYmpbXSB7XG4gICAgY29uc3QgcHJveHlBZGRyZXNzZXMgPVxuICAgICAgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyAmJiB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzLmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzLm1hcCgoYWRkcikgPT5cbiAgICAgICAgICAgIHV0aWxzLmFkZHJlc3NUb1N0cmluZyh0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLmhycCwgJ1AnLCBCdWZmZXIuZnJvbShhZGRyKSlcbiAgICAgICAgICApXG4gICAgICAgIDogW107XG5cbiAgICByZXR1cm4gaW1wb3J0ZWRJbnB1dHMubWFwKChpbnB1dCkgPT4ge1xuICAgICAgY29uc3QgdHhpZCA9IGlucHV0LnV0eG9JRC50b1N0cmluZygpO1xuICAgICAgY29uc3Qgb3V0cHV0aWR4ID0gaW5wdXQudXR4b0lELm91dHB1dElkeC50b1N0cmluZygpO1xuICAgICAgY29uc3QgdHJhbnNmZXJJbnB1dCA9IGlucHV0LmlucHV0IGFzIFRyYW5zZmVySW5wdXQ7XG4gICAgICBjb25zdCBzaWdJbmRpY2llcyA9IHRyYW5zZmVySW5wdXQuc2lnSW5kaWNpZXMoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3V0cHV0SUQ6IFNFQ1AyNTZLMV9UcmFuc2Zlcl9PdXRwdXQsXG4gICAgICAgIGFtb3VudDogaW5wdXQuYW1vdW50KCkudG9TdHJpbmcoKSxcbiAgICAgICAgdHhpZDogdXRpbHMuY2I1OEVuY29kZShCdWZmZXIuZnJvbSh0eGlkLCAnaGV4JykpLFxuICAgICAgICBvdXRwdXRpZHg6IG91dHB1dGlkeCxcbiAgICAgICAgdGhyZXNob2xkOiBzaWdJbmRpY2llcy5sZW5ndGggfHwgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkLFxuICAgICAgICBhZGRyZXNzZXM6IHByb3h5QWRkcmVzc2VzLFxuICAgICAgICBhZGRyZXNzZXNJbmRleDogc2lnSW5kaWNpZXMsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -34,15 +34,5 @@ export declare class ImportInPTxBuilder extends AtomicTransactionBuilder {
|
|
|
34
34
|
* @returns Array of decoded UTXO objects
|
|
35
35
|
*/
|
|
36
36
|
private recoverUtxos;
|
|
37
|
-
/**
|
|
38
|
-
* Compute proper addressesIndex from parsed transaction's sigIndicies.
|
|
39
|
-
* Following AVAX P approach: addressesIndex[senderIdx] = position of sender in UTXO addresses.
|
|
40
|
-
*
|
|
41
|
-
* For parsed transactions:
|
|
42
|
-
* - sigIndicies tells us which UTXO positions need to sign for each slot
|
|
43
|
-
* - We use output addresses as proxy for UTXO addresses
|
|
44
|
-
* - We compute addressesIndex as sender -> utxo position mapping
|
|
45
|
-
*/
|
|
46
|
-
private computeAddressesIndexFromParsed;
|
|
47
37
|
}
|
|
48
38
|
//# sourceMappingURL=ImportInPTxBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportInPTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/ImportInPTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAuC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAOL,UAAU,EAEX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAmE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE9F,qBAAa,kBAAmB,SAAQ,wBAAwB;gBAClD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAQ7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;OAGG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAUjD;;;OAGG;IACH,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAS7B,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"ImportInPTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/ImportInPTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAuC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAOL,UAAU,EAEX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAmE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE9F,qBAAa,kBAAmB,SAAQ,wBAAwB;gBAClD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAQ7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;OAGG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAUjD;;;OAGG;IACH,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAS7B,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI;IAyE9E,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAItC;;;OAGG;cACa,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwGtD;;;;;;;;OAQG;IACH,OAAO,CAAC,YAAY;CA+BrB"}
|