@bitgo-beta/sdk-coin-flrp 1.0.1-beta.369 → 1.0.1-beta.370

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/src/lib/ExportInCTxBuilder.d.ts +5 -13
  2. package/dist/src/lib/ExportInCTxBuilder.d.ts.map +1 -1
  3. package/dist/src/lib/ExportInCTxBuilder.js +24 -64
  4. package/dist/src/lib/ExportInPTxBuilder.d.ts +2 -25
  5. package/dist/src/lib/ExportInPTxBuilder.d.ts.map +1 -1
  6. package/dist/src/lib/ExportInPTxBuilder.js +34 -160
  7. package/dist/src/lib/ImportInCTxBuilder.d.ts +1 -19
  8. package/dist/src/lib/ImportInCTxBuilder.d.ts.map +1 -1
  9. package/dist/src/lib/ImportInCTxBuilder.js +32 -134
  10. package/dist/src/lib/ImportInPTxBuilder.d.ts +13 -12
  11. package/dist/src/lib/ImportInPTxBuilder.d.ts.map +1 -1
  12. package/dist/src/lib/ImportInPTxBuilder.js +81 -100
  13. package/dist/src/lib/atomicInCTransactionBuilder.d.ts +0 -6
  14. package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +1 -1
  15. package/dist/src/lib/atomicInCTransactionBuilder.js +1 -14
  16. package/dist/src/lib/atomicTransactionBuilder.d.ts +15 -17
  17. package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
  18. package/dist/src/lib/atomicTransactionBuilder.js +22 -138
  19. package/dist/src/lib/iface.d.ts +31 -0
  20. package/dist/src/lib/iface.d.ts.map +1 -1
  21. package/dist/src/lib/iface.js +9 -2
  22. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +0 -2
  23. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -1
  24. package/dist/src/lib/permissionlessValidatorTxBuilder.js +1 -7
  25. package/dist/src/lib/transaction.d.ts +10 -6
  26. package/dist/src/lib/transaction.d.ts.map +1 -1
  27. package/dist/src/lib/transaction.js +10 -13
  28. package/dist/src/lib/transactionBuilder.d.ts +24 -16
  29. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  30. package/dist/src/lib/transactionBuilder.js +46 -28
  31. package/dist/src/lib/utils.d.ts +31 -2
  32. package/dist/src/lib/utils.d.ts.map +1 -1
  33. package/dist/src/lib/utils.js +71 -1
  34. package/dist/test/resources/account.d.ts +30 -0
  35. package/dist/test/resources/account.d.ts.map +1 -1
  36. package/dist/test/resources/account.js +27 -2
  37. package/dist/test/resources/transactionData/exportInC.d.ts +30 -0
  38. package/dist/test/resources/transactionData/exportInC.d.ts.map +1 -1
  39. package/dist/test/resources/transactionData/exportInC.js +32 -13
  40. package/dist/test/resources/transactionData/exportInP.d.ts +39 -48
  41. package/dist/test/resources/transactionData/exportInP.d.ts.map +1 -1
  42. package/dist/test/resources/transactionData/exportInP.js +70 -109
  43. package/dist/test/resources/transactionData/importInC.d.ts +39 -10
  44. package/dist/test/resources/transactionData/importInC.d.ts.map +1 -1
  45. package/dist/test/resources/transactionData/importInC.js +102 -25
  46. package/dist/test/resources/transactionData/importInP.d.ts +46 -15
  47. package/dist/test/resources/transactionData/importInP.d.ts.map +1 -1
  48. package/dist/test/resources/transactionData/importInP.js +65 -39
  49. package/dist/test/unit/flrp.js +15 -12
  50. package/dist/test/unit/lib/exportInCTxBuilder.js +32 -31
  51. package/dist/test/unit/lib/exportInPTxBuilder.js +50 -253
  52. package/dist/test/unit/lib/importInCTxBuilder.js +470 -363
  53. package/dist/test/unit/lib/importInPTxBuilder.js +46 -227
  54. package/dist/test/unit/lib/signFlowTestSuit.d.ts.map +1 -1
  55. package/dist/test/unit/lib/signFlowTestSuit.js +1 -1
  56. package/dist/test/unit/lib/transactionBuilderFactory.js +2 -2
  57. package/dist/test/unit/lib/utils.js +94 -32
  58. package/dist/tsconfig.tsbuildinfo +1 -1
  59. package/package.json +7 -6
@@ -22,23 +22,11 @@ class ExportInPTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBui
22
22
  get transactionType() {
23
23
  return sdk_core_1.TransactionType.Export;
24
24
  }
25
- /**
26
- * Amount is a bigint that specifies the quantity of the asset that this output owns. Must be positive.
27
- * @param {bigint | string} amount The withdrawal amount
28
- */
29
- amount(value) {
30
- const valueBigInt = typeof value === 'string' ? BigInt(value) : value;
31
- this.validateAmount(valueBigInt);
32
- this._amount = valueBigInt;
33
- return this;
34
- }
35
25
  initBuilder(tx, rawBytes, parsedCredentials) {
36
26
  const exportTx = tx;
37
27
  if (!this.verifyTxType(exportTx._type)) {
38
28
  throw new sdk_core_1.NotSupported('Transaction cannot be parsed or has an unsupported transaction type');
39
29
  }
40
- // The exportedOutputs is a TransferableOutput array.
41
- // It's expected to have only one output with the addresses of the sender.
42
30
  const outputs = exportTx.outs;
43
31
  if (outputs.length !== 1) {
44
32
  throw new sdk_core_1.BuildTransactionError('Transaction can have one external output');
@@ -50,50 +38,34 @@ class ExportInPTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBui
50
38
  throw new Error('The Asset ID of the output does not match the transaction');
51
39
  }
52
40
  const outputOwners = outputTransfer.outputOwners;
53
- // Set locktime from output
54
41
  this.transaction._locktime = outputOwners.locktime.value();
55
- // Set threshold from output
56
42
  this.transaction._threshold = outputOwners.threshold.value();
57
- // Convert output addresses to buffers and set as fromAddresses
58
43
  this.transaction._fromAddresses = outputOwners.addrs.map((addr) => Buffer.from(addr.toBytes()));
59
- // Set external chain ID from the destination chain
60
44
  this._externalChainId = Buffer.from(exportTx.destination.toBytes());
61
- // Set amount from exported output
62
- this._amount = outputTransfer.amount();
63
- // Recover UTXOs from base tx inputs
45
+ this.transaction._amount = outputTransfer.amount();
64
46
  this.transaction._utxos = this.recoverUtxos([...exportTx.baseTx.inputs]);
65
- // Calculate and set fee from input/output difference
66
47
  const totalInputAmount = exportTx.baseTx.inputs.reduce((sum, input) => sum + input.amount(), BigInt(0));
67
48
  const changeOutputAmount = exportTx.baseTx.outputs.reduce((sum, out) => {
68
49
  const transferOut = out.output;
69
50
  return sum + transferOut.amount();
70
51
  }, BigInt(0));
71
- const fee = totalInputAmount - changeOutputAmount - this._amount;
52
+ const fee = totalInputAmount - changeOutputAmount - this.transaction._amount;
72
53
  this.transaction._fee.fee = fee.toString();
73
- // Use credentials passed from TransactionBuilderFactory (properly extracted using codec)
74
54
  const credentials = parsedCredentials || [];
75
55
  const hasCredentials = credentials.length > 0;
76
- // If there are credentials, store the original bytes to preserve exact format
77
56
  if (rawBytes && hasCredentials) {
78
57
  this.transaction._rawSignedBytes = rawBytes;
79
58
  }
80
- // When credentials were extracted, use them directly to preserve existing signatures
81
- // Otherwise, create empty credentials with dynamic ordering based on addressesIndex
82
- // Match avaxp behavior: order depends on UTXO address positions
83
- // Use centralized method for credential creation
84
59
  const txCredentials = credentials.length > 0
85
60
  ? credentials
86
61
  : exportTx.baseTx.inputs.map((input, inputIdx) => {
87
62
  const transferInput = input.input;
88
63
  const inputThreshold = transferInput.sigIndicies().length || this.transaction._threshold;
89
- // Get UTXO for this input to determine addressesIndex
90
64
  const utxo = this.transaction._utxos[inputIdx];
91
- // Use centralized method, but handle case where inputThreshold might differ
92
65
  if (inputThreshold === this.transaction._threshold) {
93
66
  return this.createCredentialForUtxo(utxo, this.transaction._threshold);
94
67
  }
95
68
  else {
96
- // Fallback: use all zeros if threshold differs (shouldn't happen normally)
97
69
  const sigSlots = [];
98
70
  for (let i = 0; i < inputThreshold; i++) {
99
71
  sigSlots.push(utils_1.default.createNewSig(''));
@@ -101,12 +73,7 @@ class ExportInPTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBui
101
73
  return new flarejs_1.Credential(sigSlots);
102
74
  }
103
75
  });
104
- // Create AddressMaps based on signature slot order (matching credential order), not sorted addresses
105
- // This matches the approach used in credentials: addressesIndex determines signature order
106
- // AddressMaps should map addresses to signature slots in the same order as credentials
107
- // Use centralized method for AddressMap creation
108
76
  const addressMaps = txCredentials.map((credential, credIdx) => this.createAddressMapForUtxo(this.transaction._utxos[credIdx], this.transaction._threshold));
109
- // Always create a new UnsignedTx with properly structured credentials
110
77
  const unsignedTx = new flarejs_1.UnsignedTx(exportTx, [], new flarejs_1.utils.AddressMaps(addressMaps), txCredentials);
111
78
  this.transaction.setTransaction(unsignedTx);
112
79
  return this;
@@ -121,135 +88,43 @@ class ExportInPTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBui
121
88
  * Build the export transaction for P-chain
122
89
  * @protected
123
90
  */
124
- buildFlareTransaction() {
125
- // if tx has credentials, tx shouldn't change
91
+ async buildFlareTransaction() {
126
92
  if (this.transaction.hasCredentials)
127
93
  return;
128
- const { inputs, changeOutputs, credentials, totalAmount } = this.createExportInputs();
129
- // Calculate fee from transaction fee settings
130
- const fee = BigInt(this.transaction.fee.fee);
131
- const targetAmount = this._amount + fee;
132
- // Verify we have enough funds
133
- if (totalAmount < targetAmount) {
134
- throw new sdk_core_1.BuildTransactionError(`Insufficient funds: have ${totalAmount}, need ${targetAmount}`);
94
+ const feeState = this.transaction._feeState;
95
+ if (!feeState) {
96
+ throw new sdk_core_1.BuildTransactionError('Fee state is required');
135
97
  }
136
- // Create the BaseTx for the P-chain export transaction
137
- const baseTx = new flarejs_1.avaxSerial.BaseTx(new flarejs_1.Int(this.transaction._networkID), new flarejs_1.Id(Buffer.from(this.transaction._blockchainID, 'hex')), changeOutputs, // change outputs
138
- inputs, // inputs
139
- new flarejs_1.Bytes(new Uint8Array(0)) // empty memo
140
- );
141
- // Create the P-chain export transaction using pvmSerial.ExportTx
142
- const exportTx = new flarejs_1.pvmSerial.ExportTx(baseTx, new flarejs_1.Id(this._externalChainId), // destinationChain (C-chain)
143
- this.exportedOutputs() // exportedOutputs
144
- );
145
- // Create AddressMaps based on signature slot order (matching credential order), not sorted addresses
146
- // This matches the approach used in credentials: addressesIndex determines signature order
147
- // AddressMaps should map addresses to signature slots in the same order as credentials
148
- // Use centralized method for AddressMap creation
149
- const addressMaps = credentials.map((credential, credIdx) => this.createAddressMapForUtxo(this.transaction._utxos[credIdx], this.transaction._threshold));
150
- // Create unsigned transaction
151
- const unsignedTx = new flarejs_1.UnsignedTx(exportTx, [], // Empty UTXOs array
152
- new flarejs_1.utils.AddressMaps(addressMaps), credentials);
153
- this.transaction.setTransaction(unsignedTx);
154
- }
155
- /**
156
- * Create inputs from UTXOs for P-chain export
157
- * Only selects enough UTXOs to cover the target amount (amount + fee)
158
- * @returns inputs, change outputs, credentials, and total amount
159
- */
160
- createExportInputs() {
161
- const sender = [...this.transaction._fromAddresses];
162
- if (this.recoverSigner) {
163
- // switch first and last signer
164
- const tmp = sender.pop();
165
- sender.push(sender[0]);
166
- if (tmp) {
167
- sender[0] = tmp;
168
- }
98
+ if (!this.transaction._context) {
99
+ throw new sdk_core_1.BuildTransactionError('context is required');
169
100
  }
170
- const fee = BigInt(this.transaction.fee.fee);
171
- const targetAmount = this._amount + fee;
172
- let totalAmount = BigInt(0);
173
- const inputs = [];
174
- const credentials = [];
175
- // Change output threshold is always 1 (matching Flare protocol behavior)
176
- // This allows easier spending of change while maintaining security for export outputs
177
- const changeOutputThreshold = 1;
178
- // Only consume enough UTXOs to cover the target amount (in array order)
179
- // Inputs will be sorted after selection
180
- for (const utxo of this.transaction._utxos) {
181
- // Stop if we already have enough
182
- if (totalAmount >= targetAmount) {
183
- break;
184
- }
185
- const amount = BigInt(utxo.amount);
186
- totalAmount += amount;
187
- // Use the UTXO's own threshold for signature indices
188
- const utxoThreshold = utxo.threshold || this.transaction._threshold;
189
- // Create signature indices for the UTXO's threshold
190
- const sigIndices = [];
191
- for (let i = 0; i < utxoThreshold; i++) {
192
- sigIndices.push(i);
193
- }
194
- // Use fromNative to create TransferableInput
195
- const txIdCb58 = utxo.txid; // Already cb58 encoded
196
- const assetIdCb58 = utils_1.default.cb58Encode(Buffer.from(this.transaction._assetId, 'hex'));
197
- const transferableInput = flarejs_1.TransferableInput.fromNative(txIdCb58, Number(utxo.outputidx), assetIdCb58, amount, sigIndices);
198
- inputs.push(transferableInput);
199
- // Create credential with empty signatures for slot identification
200
- // Match avaxp behavior: dynamic ordering based on addressesIndex from UTXO
201
- // Use centralized method for credential creation
202
- // Note: Use utxoThreshold if it differs from transaction threshold (should be rare)
203
- const thresholdToUse = utxoThreshold === this.transaction._threshold ? this.transaction._threshold : utxoThreshold;
204
- if (thresholdToUse === this.transaction._threshold) {
205
- credentials.push(this.createCredentialForUtxo(utxo, thresholdToUse));
206
- }
207
- else {
208
- // Fallback: use all zeros if threshold differs (shouldn't happen normally)
209
- const emptySignatures = sigIndices.map(() => utils_1.default.createNewSig(''));
210
- credentials.push(new flarejs_1.Credential(emptySignatures));
211
- }
101
+ if (this.transaction._amount === undefined) {
102
+ throw new sdk_core_1.BuildTransactionError('amount is required');
212
103
  }
213
- // Create change output if there is remaining amount after export and fee
214
- const changeOutputs = [];
215
- const changeAmount = totalAmount - this._amount - fee;
216
- if (changeAmount > BigInt(0)) {
217
- const assetIdBytes = new Uint8Array(Buffer.from(this.transaction._assetId, 'hex'));
218
- // Create OutputOwners with the P-chain addresses (sorted by byte value as per AVAX protocol)
219
- // Use threshold=1 for change outputs (matching Flare protocol behavior)
220
- const sortedAddresses = [...this.transaction._fromAddresses].sort((a, b) => Buffer.compare(a, b));
221
- const outputOwners = new flarejs_1.OutputOwners(new flarejs_1.BigIntPr(this.transaction._locktime), new flarejs_1.Int(changeOutputThreshold), sortedAddresses.map((addr) => new flarejs_1.Address(addr)));
222
- const transferOutput = new flarejs_1.TransferOutput(new flarejs_1.BigIntPr(changeAmount), outputOwners);
223
- const changeOutput = new flarejs_1.TransferableOutput(new flarejs_1.Id(assetIdBytes), transferOutput);
224
- changeOutputs.push(changeOutput);
104
+ if (!this.transaction._utxos || this.transaction._utxos.length === 0) {
105
+ throw new sdk_core_1.BuildTransactionError('UTXOs are required');
225
106
  }
226
- // Sort inputs lexicographically by txid (Avalanche protocol requirement)
227
- const sortedInputsWithCredentials = inputs
228
- .map((input, i) => ({ input, credential: credentials[i] }))
229
- .sort((a, b) => {
230
- const aTxId = Buffer.from(a.input.utxoID.txID.toBytes());
231
- const bTxId = Buffer.from(b.input.utxoID.txID.toBytes());
232
- return Buffer.compare(aTxId, bTxId);
233
- });
234
- return {
235
- inputs: sortedInputsWithCredentials.map((x) => x.input),
236
- changeOutputs,
237
- credentials: sortedInputsWithCredentials.map((x) => x.credential),
238
- totalAmount,
239
- };
240
- }
241
- /**
242
- * Create the ExportedOutputs where the recipient address are the sender.
243
- * Later an importTx should complete the operations signing with the same keys.
244
- * @protected
245
- */
246
- exportedOutputs() {
247
- const assetIdBytes = new Uint8Array(Buffer.from(this.transaction._assetId, 'hex'));
248
- // Create OutputOwners with sorted addresses
249
- const sortedAddresses = [...this.transaction._fromAddresses].sort((a, b) => Buffer.compare(a, b));
250
- const outputOwners = new flarejs_1.OutputOwners(new flarejs_1.BigIntPr(this.transaction._locktime), new flarejs_1.Int(this.transaction._threshold), sortedAddresses.map((addr) => new flarejs_1.Address(addr)));
251
- const output = new flarejs_1.TransferOutput(new flarejs_1.BigIntPr(this._amount), outputOwners);
252
- return [new flarejs_1.TransferableOutput(new flarejs_1.Id(assetIdBytes), output)];
107
+ // Convert decoded UTXOs to native FlareJS Utxo objects
108
+ const assetIdCb58 = utils_1.default.cb58Encode(Buffer.from(this.transaction._assetId, 'hex'));
109
+ const nativeUtxos = utils_1.default.decodedToUtxos(this.transaction._utxos, assetIdCb58);
110
+ const totalUtxoAmount = nativeUtxos.reduce((sum, utxo) => {
111
+ const output = utxo.output;
112
+ return sum + output.amount();
113
+ }, BigInt(0));
114
+ if (totalUtxoAmount < this.transaction._amount) {
115
+ throw new sdk_core_1.BuildTransactionError(`Insufficient UTXO balance: have ${totalUtxoAmount.toString()} nFLR, need at least ${this.transaction._amount.toString()} nFLR (plus fee)`);
116
+ }
117
+ const assetId = utils_1.default.flareIdString(this.transaction._assetId).toString();
118
+ const fromAddresses = this.transaction._fromAddresses.map((addr) => Buffer.from(addr));
119
+ const transferableOutput = flarejs_1.TransferableOutput.fromNative(assetId, this.transaction._amount, fromAddresses, this.transaction._locktime, this.transaction._threshold);
120
+ const exportTx = flarejs_1.pvm.e.newExportTx({
121
+ feeState,
122
+ fromAddressesBytes: this.transaction._fromAddresses.map((addr) => Buffer.from(addr)),
123
+ destinationChainId: this.transaction._network.cChainBlockchainID,
124
+ outputs: [transferableOutput],
125
+ utxos: nativeUtxos,
126
+ }, this.transaction._context);
127
+ this.transaction.setTransaction(exportTx);
253
128
  }
254
129
  /**
255
130
  * Recover UTXOs from inputs
@@ -259,7 +134,6 @@ class ExportInPTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBui
259
134
  recoverUtxos(inputs) {
260
135
  return inputs.map((input) => {
261
136
  const utxoId = input.utxoID;
262
- // Get the threshold from the input's sigIndices length
263
137
  const transferInput = input.input;
264
138
  const inputThreshold = transferInput.sigIndicies().length;
265
139
  return {
@@ -274,4 +148,4 @@ class ExportInPTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBui
274
148
  }
275
149
  }
276
150
  exports.ExportInPTxBuilder = ExportInPTxBuilder;
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwb3J0SW5QVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9FeHBvcnRJblBUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsbURBQTRGO0FBQzVGLHlFQUFzRTtBQUN0RSxtREFnQitCO0FBQy9CLG9EQUE0QjtBQUM1QixtQ0FBOEY7QUFFOUYsTUFBYSxrQkFBbUIsU0FBUSxtREFBd0I7SUFHOUQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsMkJBQTJCO1FBQzNCLDRDQUE0QztRQUM1QyxzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN2Rix3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUM3RyxLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQXNCO1FBQzNCLE1BQU0sV0FBVyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBTSxFQUFFLFFBQWlCLEVBQUUsaUJBQWdDO1FBQ3JFLE1BQU0sUUFBUSxHQUFHLEVBQXdCLENBQUM7UUFFMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLHVCQUFZLENBQUMscUVBQXFFLENBQUMsQ0FBQztRQUNoRyxDQUFDO1FBRUQscURBQXFEO1FBQ3JELDBFQUEwRTtRQUMxRSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzlCLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksZ0NBQXFCLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUF3QixDQUFDO1FBQ3ZELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlGLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztRQUMvRSxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQztRQUVqRCwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUzRCw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUU3RCwrREFBK0Q7UUFDL0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVoRyxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRXBFLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUV2QyxvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRXpFLHFEQUFxRDtRQUNyRCxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEcsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDckUsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLE1BQXdCLENBQUM7WUFDakQsT0FBTyxHQUFHLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNkLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixHQUFHLGtCQUFrQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUzQyx5RkFBeUY7UUFDekYsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLElBQUksRUFBRSxDQUFDO1FBQzVDLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRTlDLDhFQUE4RTtRQUM5RSxJQUFJLFFBQVEsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUM7UUFDOUMsQ0FBQztRQUVELHFGQUFxRjtRQUNyRixvRkFBb0Y7UUFDcEYsZ0VBQWdFO1FBQ2hFLGlEQUFpRDtRQUNqRCxNQUFNLGFBQWEsR0FDakIsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxXQUFXO1lBQ2IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDN0MsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQXNCLENBQUM7Z0JBQ25ELE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7Z0JBRXpGLHNEQUFzRDtnQkFDdEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRS9DLDRFQUE0RTtnQkFDNUUsSUFBSSxjQUFjLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDbkQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3pFLENBQUM7cUJBQU0sQ0FBQztvQkFDTiwyRUFBMkU7b0JBQzNFLE1BQU0sUUFBUSxHQUE0QyxFQUFFLENBQUM7b0JBQzdELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQzt3QkFDeEMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3hDLENBQUM7b0JBQ0QsT0FBTyxJQUFJLG9CQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUVULHFHQUFxRztRQUNyRywyRkFBMkY7UUFDM0YsdUZBQXVGO1FBQ3ZGLGlEQUFpRDtRQUNqRCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQzVELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUM1RixDQUFDO1FBRUYsc0VBQXNFO1FBQ3RFLE1BQU0sVUFBVSxHQUFHLElBQUksb0JBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksZUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUV4RyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQWU7UUFDakMsT0FBTyxPQUFPLEtBQUssNEJBQW9CLENBQUMsV0FBVyxDQUFDO0lBQ3RELENBQUM7SUFFRCxZQUFZLENBQUMsT0FBZTtRQUMxQixPQUFPLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08scUJBQXFCO1FBQzdCLDZDQUE2QztRQUM3QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYztZQUFFLE9BQU87UUFFNUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRXRGLDhDQUE4QztRQUM5QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFFeEMsOEJBQThCO1FBQzlCLElBQUksV0FBVyxHQUFHLFlBQVksRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyw0QkFBNEIsV0FBVyxVQUFVLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDbkcsQ0FBQztRQUVELHVEQUF1RDtRQUN2RCxNQUFNLE1BQU0sR0FBRyxJQUFJLG9CQUFVLENBQUMsTUFBTSxDQUNsQyxJQUFJLGFBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUNwQyxJQUFJLFlBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQzFELGFBQWEsRUFBRSxpQkFBaUI7UUFDaEMsTUFBTSxFQUFFLFNBQVM7UUFDakIsSUFBSSxlQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhO1NBQzNDLENBQUM7UUFFRixpRUFBaUU7UUFDakUsTUFBTSxRQUFRLEdBQUcsSUFBSSxtQkFBUyxDQUFDLFFBQVEsQ0FDckMsTUFBTSxFQUNOLElBQUksWUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLDZCQUE2QjtRQUM1RCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsa0JBQWtCO1NBQzFDLENBQUM7UUFFRixxR0FBcUc7UUFDckcsMkZBQTJGO1FBQzNGLHVGQUF1RjtRQUN2RixpREFBaUQ7UUFDakQsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUMxRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FDNUYsQ0FBQztRQUVGLDhCQUE4QjtRQUM5QixNQUFNLFVBQVUsR0FBRyxJQUFJLG9CQUFVLENBQy9CLFFBQVEsRUFDUixFQUFFLEVBQUUsb0JBQW9CO1FBQ3hCLElBQUksZUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsRUFDdkMsV0FBVyxDQUNaLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGtCQUFrQjtRQU0xQixNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QiwrQkFBK0I7WUFDL0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBRXhDLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QixNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sV0FBVyxHQUFpQixFQUFFLENBQUM7UUFFckMseUVBQXlFO1FBQ3pFLHNGQUFzRjtRQUN0RixNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztRQUVoQyx3RUFBd0U7UUFDeEUsd0NBQXdDO1FBQ3hDLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQyxpQ0FBaUM7WUFDakMsSUFBSSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU07WUFDUixDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQyxXQUFXLElBQUksTUFBTSxDQUFDO1lBRXRCLHFEQUFxRDtZQUNyRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBRXBFLG9EQUFvRDtZQUNwRCxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7WUFDaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN2QyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7WUFFRCw2Q0FBNkM7WUFDN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLHVCQUF1QjtZQUNuRCxNQUFNLFdBQVcsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUVwRixNQUFNLGlCQUFpQixHQUFHLDJCQUFpQixDQUFDLFVBQVUsQ0FDcEQsUUFBUSxFQUNSLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ3RCLFdBQVcsRUFDWCxNQUFNLEVBQ04sVUFBVSxDQUNYLENBQUM7WUFFRixNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFFL0Isa0VBQWtFO1lBQ2xFLDJFQUEyRTtZQUMzRSxpREFBaUQ7WUFDakQsb0ZBQW9GO1lBQ3BGLE1BQU0sY0FBYyxHQUNsQixhQUFhLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFDOUYsSUFBSSxjQUFjLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDbkQsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDdkUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLDJFQUEyRTtnQkFDM0UsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JFLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxvQkFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNILENBQUM7UUFFRCx5RUFBeUU7UUFDekUsTUFBTSxhQUFhLEdBQXlCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLFlBQVksR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFFdEQsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRW5GLDZGQUE2RjtZQUM3Rix3RUFBd0U7WUFDeEUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRyxNQUFNLFlBQVksR0FBRyxJQUFJLHNCQUFZLENBQ25DLElBQUksa0JBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUN4QyxJQUFJLGFBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxFQUM5QixlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLGlCQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDakQsQ0FBQztZQUVGLE1BQU0sY0FBYyxHQUFHLElBQUksd0JBQWMsQ0FBQyxJQUFJLGtCQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDcEYsTUFBTSxZQUFZLEdBQUcsSUFBSSw0QkFBa0IsQ0FBQyxJQUFJLFlBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUNsRixhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCx5RUFBeUU7UUFDekUsTUFBTSwyQkFBMkIsR0FBRyxNQUFNO2FBQ3ZDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDMUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN6RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFFTCxPQUFPO1lBQ0wsTUFBTSxFQUFFLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUN2RCxhQUFhO1lBQ2IsV0FBVyxFQUFFLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUNqRSxXQUFXO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sZUFBZTtRQUN2QixNQUFNLFlBQVksR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFbkYsNENBQTRDO1FBQzVDLE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEcsTUFBTSxZQUFZLEdBQUcsSUFBSSxzQkFBWSxDQUNuQyxJQUFJLGtCQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFDeEMsSUFBSSxhQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFDcEMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxpQkFBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ2pELENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxJQUFJLHdCQUFjLENBQUMsSUFBSSxrQkFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU1RSxPQUFPLENBQUMsSUFBSSw0QkFBa0IsQ0FBQyxJQUFJLFlBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssWUFBWSxDQUFDLE1BQTJCO1FBQzlDLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDNUIsdURBQXVEO1lBQ3ZELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUFzQixDQUFDO1lBQ25ELE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDMUQsT0FBTztnQkFDTCxRQUFRLEVBQUUsaUNBQXlCO2dCQUNuQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtnQkFDakMsSUFBSSxFQUFFLGVBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQzFELFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRTtnQkFDOUMsU0FBUyxFQUFFLGNBQWMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVU7Z0JBQ3hELFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUN0RCxlQUFLLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN6RzthQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXBXRCxnREFvV0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIE5vdFN1cHBvcnRlZCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgcHZtU2VyaWFsLFxuICBhdmF4U2VyaWFsLFxuICBVbnNpZ25lZFR4LFxuICBCaWdJbnRQcixcbiAgSW50LFxuICBJZCxcbiAgVHJhbnNmZXJhYmxlSW5wdXQsXG4gIFRyYW5zZmVyYWJsZU91dHB1dCxcbiAgVHJhbnNmZXJJbnB1dCxcbiAgQWRkcmVzcyxcbiAgdXRpbHMgYXMgRmxhcmVVdGlscyxcbiAgVHJhbnNmZXJPdXRwdXQsXG4gIE91dHB1dE93bmVycyxcbiAgQ3JlZGVudGlhbCxcbiAgQnl0ZXMsXG59IGZyb20gJ0BmbGFyZW5ldHdvcmsvZmxhcmVqcyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBEZWNvZGVkVXR4b09iaiwgU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCwgRmxhcmVUcmFuc2FjdGlvblR5cGUsIFR4IH0gZnJvbSAnLi9pZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBFeHBvcnRJblBUeEJ1aWxkZXIgZXh0ZW5kcyBBdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF9hbW91bnQ6IGJpZ2ludDtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgLy8gRm9yIEV4cG9ydCBGUk9NIFAtY2hhaW46XG4gICAgLy8gLSBleHRlcm5hbCBjaGFpbiAoZGVzdGluYXRpb24pIGlzIEMtY2hhaW5cbiAgICAvLyAtIGJsb2NrY2hhaW4gSUQgKHNvdXJjZSkgaXMgUC1jaGFpblxuICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCA9IHV0aWxzLmNiNThEZWNvZGUodGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5jQ2hhaW5CbG9ja2NoYWluSUQpO1xuICAgIC8vIFAtY2hhaW4gYmxvY2tjaGFpbiBJRCAoZnJvbSBuZXR3b3JrIGNvbmZpZyAtIGRlY29kZSBmcm9tIGNiNTggdG8gaGV4KVxuICAgIHRoaXMudHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRCA9IEJ1ZmZlci5mcm9tKHV0aWxzLmNiNThEZWNvZGUodGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5ibG9ja2NoYWluSUQpKS50b1N0cmluZyhcbiAgICAgICdoZXgnXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQ7XG4gIH1cblxuICAvKipcbiAgICogQW1vdW50IGlzIGEgYmlnaW50IHRoYXQgc3BlY2lmaWVzIHRoZSBxdWFudGl0eSBvZiB0aGUgYXNzZXQgdGhhdCB0aGlzIG91dHB1dCBvd25zLiBNdXN0IGJlIHBvc2l0aXZlLlxuICAgKiBAcGFyYW0ge2JpZ2ludCB8IHN0cmluZ30gYW1vdW50IFRoZSB3aXRoZHJhd2FsIGFtb3VudFxuICAgKi9cbiAgYW1vdW50KHZhbHVlOiBiaWdpbnQgfCBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCB2YWx1ZUJpZ0ludCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBCaWdJbnQodmFsdWUpIDogdmFsdWU7XG4gICAgdGhpcy52YWxpZGF0ZUFtb3VudCh2YWx1ZUJpZ0ludCk7XG4gICAgdGhpcy5fYW1vdW50ID0gdmFsdWVCaWdJbnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHgsIHJhd0J5dGVzPzogQnVmZmVyLCBwYXJzZWRDcmVkZW50aWFscz86IENyZWRlbnRpYWxbXSk6IHRoaXMge1xuICAgIGNvbnN0IGV4cG9ydFR4ID0gdHggYXMgcHZtU2VyaWFsLkV4cG9ydFR4O1xuXG4gICAgaWYgKCF0aGlzLnZlcmlmeVR4VHlwZShleHBvcnRUeC5fdHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ1RyYW5zYWN0aW9uIGNhbm5vdCBiZSBwYXJzZWQgb3IgaGFzIGFuIHVuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZXhwb3J0ZWRPdXRwdXRzIGlzIGEgVHJhbnNmZXJhYmxlT3V0cHV0IGFycmF5LlxuICAgIC8vIEl0J3MgZXhwZWN0ZWQgdG8gaGF2ZSBvbmx5IG9uZSBvdXRwdXQgd2l0aCB0aGUgYWRkcmVzc2VzIG9mIHRoZSBzZW5kZXIuXG4gICAgY29uc3Qgb3V0cHV0cyA9IGV4cG9ydFR4Lm91dHM7XG4gICAgaWYgKG91dHB1dHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBjYW4gaGF2ZSBvbmUgZXh0ZXJuYWwgb3V0cHV0Jyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1swXTtcbiAgICBjb25zdCBvdXRwdXRUcmFuc2ZlciA9IG91dHB1dC5vdXRwdXQgYXMgVHJhbnNmZXJPdXRwdXQ7XG4gICAgY29uc3QgYXNzZXRJZCA9IG91dHB1dC5hc3NldElkLnRvQnl0ZXMoKTtcbiAgICBpZiAoQnVmZmVyLmNvbXBhcmUoQnVmZmVyLmZyb20oYXNzZXRJZCksIEJ1ZmZlci5mcm9tKHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQsICdoZXgnKSkgIT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEFzc2V0IElEIG9mIHRoZSBvdXRwdXQgZG9lcyBub3QgbWF0Y2ggdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0T3duZXJzID0gb3V0cHV0VHJhbnNmZXIub3V0cHV0T3duZXJzO1xuXG4gICAgLy8gU2V0IGxvY2t0aW1lIGZyb20gb3V0cHV0XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fbG9ja3RpbWUgPSBvdXRwdXRPd25lcnMubG9ja3RpbWUudmFsdWUoKTtcblxuICAgIC8vIFNldCB0aHJlc2hvbGQgZnJvbSBvdXRwdXRcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQgPSBvdXRwdXRPd25lcnMudGhyZXNob2xkLnZhbHVlKCk7XG5cbiAgICAvLyBDb252ZXJ0IG91dHB1dCBhZGRyZXNzZXMgdG8gYnVmZmVycyBhbmQgc2V0IGFzIGZyb21BZGRyZXNzZXNcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzID0gb3V0cHV0T3duZXJzLmFkZHJzLm1hcCgoYWRkcikgPT4gQnVmZmVyLmZyb20oYWRkci50b0J5dGVzKCkpKTtcblxuICAgIC8vIFNldCBleHRlcm5hbCBjaGFpbiBJRCBmcm9tIHRoZSBkZXN0aW5hdGlvbiBjaGFpblxuICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCA9IEJ1ZmZlci5mcm9tKGV4cG9ydFR4LmRlc3RpbmF0aW9uLnRvQnl0ZXMoKSk7XG5cbiAgICAvLyBTZXQgYW1vdW50IGZyb20gZXhwb3J0ZWQgb3V0cHV0XG4gICAgdGhpcy5fYW1vdW50ID0gb3V0cHV0VHJhbnNmZXIuYW1vdW50KCk7XG5cbiAgICAvLyBSZWNvdmVyIFVUWE9zIGZyb20gYmFzZSB0eCBpbnB1dHNcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcyA9IHRoaXMucmVjb3ZlclV0eG9zKFsuLi5leHBvcnRUeC5iYXNlVHguaW5wdXRzXSk7XG5cbiAgICAvLyBDYWxjdWxhdGUgYW5kIHNldCBmZWUgZnJvbSBpbnB1dC9vdXRwdXQgZGlmZmVyZW5jZVxuICAgIGNvbnN0IHRvdGFsSW5wdXRBbW91bnQgPSBleHBvcnRUeC5iYXNlVHguaW5wdXRzLnJlZHVjZSgoc3VtLCBpbnB1dCkgPT4gc3VtICsgaW5wdXQuYW1vdW50KCksIEJpZ0ludCgwKSk7XG4gICAgY29uc3QgY2hhbmdlT3V0cHV0QW1vdW50ID0gZXhwb3J0VHguYmFzZVR4Lm91dHB1dHMucmVkdWNlKChzdW0sIG91dCkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNmZXJPdXQgPSBvdXQub3V0cHV0IGFzIFRyYW5zZmVyT3V0cHV0O1xuICAgICAgcmV0dXJuIHN1bSArIHRyYW5zZmVyT3V0LmFtb3VudCgpO1xuICAgIH0sIEJpZ0ludCgwKSk7XG4gICAgY29uc3QgZmVlID0gdG90YWxJbnB1dEFtb3VudCAtIGNoYW5nZU91dHB1dEFtb3VudCAtIHRoaXMuX2Ftb3VudDtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlID0gZmVlLnRvU3RyaW5nKCk7XG5cbiAgICAvLyBVc2UgY3JlZGVudGlhbHMgcGFzc2VkIGZyb20gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSAocHJvcGVybHkgZXh0cmFjdGVkIHVzaW5nIGNvZGVjKVxuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gcGFyc2VkQ3JlZGVudGlhbHMgfHwgW107XG4gICAgY29uc3QgaGFzQ3JlZGVudGlhbHMgPSBjcmVkZW50aWFscy5sZW5ndGggPiAwO1xuXG4gICAgLy8gSWYgdGhlcmUgYXJlIGNyZWRlbnRpYWxzLCBzdG9yZSB0aGUgb3JpZ2luYWwgYnl0ZXMgdG8gcHJlc2VydmUgZXhhY3QgZm9ybWF0XG4gICAgaWYgKHJhd0J5dGVzICYmIGhhc0NyZWRlbnRpYWxzKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl9yYXdTaWduZWRCeXRlcyA9IHJhd0J5dGVzO1xuICAgIH1cblxuICAgIC8vIFdoZW4gY3JlZGVudGlhbHMgd2VyZSBleHRyYWN0ZWQsIHVzZSB0aGVtIGRpcmVjdGx5IHRvIHByZXNlcnZlIGV4aXN0aW5nIHNpZ25hdHVyZXNcbiAgICAvLyBPdGhlcndpc2UsIGNyZWF0ZSBlbXB0eSBjcmVkZW50aWFscyB3aXRoIGR5bmFtaWMgb3JkZXJpbmcgYmFzZWQgb24gYWRkcmVzc2VzSW5kZXhcbiAgICAvLyBNYXRjaCBhdmF4cCBiZWhhdmlvcjogb3JkZXIgZGVwZW5kcyBvbiBVVFhPIGFkZHJlc3MgcG9zaXRpb25zXG4gICAgLy8gVXNlIGNlbnRyYWxpemVkIG1ldGhvZCBmb3IgY3JlZGVudGlhbCBjcmVhdGlvblxuICAgIGNvbnN0IHR4Q3JlZGVudGlhbHMgPVxuICAgICAgY3JlZGVudGlhbHMubGVuZ3RoID4gMFxuICAgICAgICA/IGNyZWRlbnRpYWxzXG4gICAgICAgIDogZXhwb3J0VHguYmFzZVR4LmlucHV0cy5tYXAoKGlucHV0LCBpbnB1dElkeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmZXJJbnB1dCA9IGlucHV0LmlucHV0IGFzIFRyYW5zZmVySW5wdXQ7XG4gICAgICAgICAgICBjb25zdCBpbnB1dFRocmVzaG9sZCA9IHRyYW5zZmVySW5wdXQuc2lnSW5kaWNpZXMoKS5sZW5ndGggfHwgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkO1xuXG4gICAgICAgICAgICAvLyBHZXQgVVRYTyBmb3IgdGhpcyBpbnB1dCB0byBkZXRlcm1pbmUgYWRkcmVzc2VzSW5kZXhcbiAgICAgICAgICAgIGNvbnN0IHV0eG8gPSB0aGlzLnRyYW5zYWN0aW9uLl91dHhvc1tpbnB1dElkeF07XG5cbiAgICAgICAgICAgIC8vIFVzZSBjZW50cmFsaXplZCBtZXRob2QsIGJ1dCBoYW5kbGUgY2FzZSB3aGVyZSBpbnB1dFRocmVzaG9sZCBtaWdodCBkaWZmZXJcbiAgICAgICAgICAgIGlmIChpbnB1dFRocmVzaG9sZCA9PT0gdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNyZWRlbnRpYWxGb3JVdHhvKHV0eG8sIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBGYWxsYmFjazogdXNlIGFsbCB6ZXJvcyBpZiB0aHJlc2hvbGQgZGlmZmVycyAoc2hvdWxkbid0IGhhcHBlbiBub3JtYWxseSlcbiAgICAgICAgICAgICAgY29uc3Qgc2lnU2xvdHM6IFJldHVyblR5cGU8dHlwZW9mIHV0aWxzLmNyZWF0ZU5ld1NpZz5bXSA9IFtdO1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0VGhyZXNob2xkOyBpKyspIHtcbiAgICAgICAgICAgICAgICBzaWdTbG90cy5wdXNoKHV0aWxzLmNyZWF0ZU5ld1NpZygnJykpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgQ3JlZGVudGlhbChzaWdTbG90cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgQWRkcmVzc01hcHMgYmFzZWQgb24gc2lnbmF0dXJlIHNsb3Qgb3JkZXIgKG1hdGNoaW5nIGNyZWRlbnRpYWwgb3JkZXIpLCBub3Qgc29ydGVkIGFkZHJlc3Nlc1xuICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgYXBwcm9hY2ggdXNlZCBpbiBjcmVkZW50aWFsczogYWRkcmVzc2VzSW5kZXggZGV0ZXJtaW5lcyBzaWduYXR1cmUgb3JkZXJcbiAgICAvLyBBZGRyZXNzTWFwcyBzaG91bGQgbWFwIGFkZHJlc3NlcyB0byBzaWduYXR1cmUgc2xvdHMgaW4gdGhlIHNhbWUgb3JkZXIgYXMgY3JlZGVudGlhbHNcbiAgICAvLyBVc2UgY2VudHJhbGl6ZWQgbWV0aG9kIGZvciBBZGRyZXNzTWFwIGNyZWF0aW9uXG4gICAgY29uc3QgYWRkcmVzc01hcHMgPSB0eENyZWRlbnRpYWxzLm1hcCgoY3JlZGVudGlhbCwgY3JlZElkeCkgPT5cbiAgICAgIHRoaXMuY3JlYXRlQWRkcmVzc01hcEZvclV0eG8odGhpcy50cmFuc2FjdGlvbi5fdXR4b3NbY3JlZElkeF0sIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZClcbiAgICApO1xuXG4gICAgLy8gQWx3YXlzIGNyZWF0ZSBhIG5ldyBVbnNpZ25lZFR4IHdpdGggcHJvcGVybHkgc3RydWN0dXJlZCBjcmVkZW50aWFsc1xuICAgIGNvbnN0IHVuc2lnbmVkVHggPSBuZXcgVW5zaWduZWRUeChleHBvcnRUeCwgW10sIG5ldyBGbGFyZVV0aWxzLkFkZHJlc3NNYXBzKGFkZHJlc3NNYXBzKSwgdHhDcmVkZW50aWFscyk7XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKHVuc2lnbmVkVHgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3RhdGljIHZlcmlmeVR4VHlwZSh0eG5UeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHhuVHlwZSA9PT0gRmxhcmVUcmFuc2FjdGlvblR5cGUuUHZtRXhwb3J0VHg7XG4gIH1cblxuICB2ZXJpZnlUeFR5cGUodHhuVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEV4cG9ydEluUFR4QnVpbGRlci52ZXJpZnlUeFR5cGUodHhuVHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIGV4cG9ydCB0cmFuc2FjdGlvbiBmb3IgUC1jaGFpblxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRGbGFyZVRyYW5zYWN0aW9uKCk6IHZvaWQge1xuICAgIC8vIGlmIHR4IGhhcyBjcmVkZW50aWFscywgdHggc2hvdWxkbid0IGNoYW5nZVxuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmhhc0NyZWRlbnRpYWxzKSByZXR1cm47XG5cbiAgICBjb25zdCB7IGlucHV0cywgY2hhbmdlT3V0cHV0cywgY3JlZGVudGlhbHMsIHRvdGFsQW1vdW50IH0gPSB0aGlzLmNyZWF0ZUV4cG9ydElucHV0cygpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIGZlZSBmcm9tIHRyYW5zYWN0aW9uIGZlZSBzZXR0aW5nc1xuICAgIGNvbnN0IGZlZSA9IEJpZ0ludCh0aGlzLnRyYW5zYWN0aW9uLmZlZS5mZWUpO1xuICAgIGNvbnN0IHRhcmdldEFtb3VudCA9IHRoaXMuX2Ftb3VudCArIGZlZTtcblxuICAgIC8vIFZlcmlmeSB3ZSBoYXZlIGVub3VnaCBmdW5kc1xuICAgIGlmICh0b3RhbEFtb3VudCA8IHRhcmdldEFtb3VudCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW5zdWZmaWNpZW50IGZ1bmRzOiBoYXZlICR7dG90YWxBbW91bnR9LCBuZWVkICR7dGFyZ2V0QW1vdW50fWApO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgQmFzZVR4IGZvciB0aGUgUC1jaGFpbiBleHBvcnQgdHJhbnNhY3Rpb25cbiAgICBjb25zdCBiYXNlVHggPSBuZXcgYXZheFNlcmlhbC5CYXNlVHgoXG4gICAgICBuZXcgSW50KHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmtJRCksXG4gICAgICBuZXcgSWQoQnVmZmVyLmZyb20odGhpcy50cmFuc2FjdGlvbi5fYmxvY2tjaGFpbklELCAnaGV4JykpLFxuICAgICAgY2hhbmdlT3V0cHV0cywgLy8gY2hhbmdlIG91dHB1dHNcbiAgICAgIGlucHV0cywgLy8gaW5wdXRzXG4gICAgICBuZXcgQnl0ZXMobmV3IFVpbnQ4QXJyYXkoMCkpIC8vIGVtcHR5IG1lbW9cbiAgICApO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBQLWNoYWluIGV4cG9ydCB0cmFuc2FjdGlvbiB1c2luZyBwdm1TZXJpYWwuRXhwb3J0VHhcbiAgICBjb25zdCBleHBvcnRUeCA9IG5ldyBwdm1TZXJpYWwuRXhwb3J0VHgoXG4gICAgICBiYXNlVHgsXG4gICAgICBuZXcgSWQodGhpcy5fZXh0ZXJuYWxDaGFpbklkKSwgLy8gZGVzdGluYXRpb25DaGFpbiAoQy1jaGFpbilcbiAgICAgIHRoaXMuZXhwb3J0ZWRPdXRwdXRzKCkgLy8gZXhwb3J0ZWRPdXRwdXRzXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBBZGRyZXNzTWFwcyBiYXNlZCBvbiBzaWduYXR1cmUgc2xvdCBvcmRlciAobWF0Y2hpbmcgY3JlZGVudGlhbCBvcmRlciksIG5vdCBzb3J0ZWQgYWRkcmVzc2VzXG4gICAgLy8gVGhpcyBtYXRjaGVzIHRoZSBhcHByb2FjaCB1c2VkIGluIGNyZWRlbnRpYWxzOiBhZGRyZXNzZXNJbmRleCBkZXRlcm1pbmVzIHNpZ25hdHVyZSBvcmRlclxuICAgIC8vIEFkZHJlc3NNYXBzIHNob3VsZCBtYXAgYWRkcmVzc2VzIHRvIHNpZ25hdHVyZSBzbG90cyBpbiB0aGUgc2FtZSBvcmRlciBhcyBjcmVkZW50aWFsc1xuICAgIC8vIFVzZSBjZW50cmFsaXplZCBtZXRob2QgZm9yIEFkZHJlc3NNYXAgY3JlYXRpb25cbiAgICBjb25zdCBhZGRyZXNzTWFwcyA9IGNyZWRlbnRpYWxzLm1hcCgoY3JlZGVudGlhbCwgY3JlZElkeCkgPT5cbiAgICAgIHRoaXMuY3JlYXRlQWRkcmVzc01hcEZvclV0eG8odGhpcy50cmFuc2FjdGlvbi5fdXR4b3NbY3JlZElkeF0sIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZClcbiAgICApO1xuXG4gICAgLy8gQ3JlYXRlIHVuc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAgY29uc3QgdW5zaWduZWRUeCA9IG5ldyBVbnNpZ25lZFR4KFxuICAgICAgZXhwb3J0VHgsXG4gICAgICBbXSwgLy8gRW1wdHkgVVRYT3MgYXJyYXlcbiAgICAgIG5ldyBGbGFyZVV0aWxzLkFkZHJlc3NNYXBzKGFkZHJlc3NNYXBzKSxcbiAgICAgIGNyZWRlbnRpYWxzXG4gICAgKTtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24odW5zaWduZWRUeCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGlucHV0cyBmcm9tIFVUWE9zIGZvciBQLWNoYWluIGV4cG9ydFxuICAgKiBPbmx5IHNlbGVjdHMgZW5vdWdoIFVUWE9zIHRvIGNvdmVyIHRoZSB0YXJnZXQgYW1vdW50IChhbW91bnQgKyBmZWUpXG4gICAqIEByZXR1cm5zIGlucHV0cywgY2hhbmdlIG91dHB1dHMsIGNyZWRlbnRpYWxzLCBhbmQgdG90YWwgYW1vdW50XG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlRXhwb3J0SW5wdXRzKCk6IHtcbiAgICBpbnB1dHM6IFRyYW5zZmVyYWJsZUlucHV0W107XG4gICAgY2hhbmdlT3V0cHV0czogVHJhbnNmZXJhYmxlT3V0cHV0W107XG4gICAgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxbXTtcbiAgICB0b3RhbEFtb3VudDogYmlnaW50O1xuICB9IHtcbiAgICBjb25zdCBzZW5kZXIgPSBbLi4udGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc107XG4gICAgaWYgKHRoaXMucmVjb3ZlclNpZ25lcikge1xuICAgICAgLy8gc3dpdGNoIGZpcnN0IGFuZCBsYXN0IHNpZ25lclxuICAgICAgY29uc3QgdG1wID0gc2VuZGVyLnBvcCgpO1xuICAgICAgc2VuZGVyLnB1c2goc2VuZGVyWzBdKTtcbiAgICAgIGlmICh0bXApIHtcbiAgICAgICAgc2VuZGVyWzBdID0gdG1wO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZlZSA9IEJpZ0ludCh0aGlzLnRyYW5zYWN0aW9uLmZlZS5mZWUpO1xuICAgIGNvbnN0IHRhcmdldEFtb3VudCA9IHRoaXMuX2Ftb3VudCArIGZlZTtcblxuICAgIGxldCB0b3RhbEFtb3VudCA9IEJpZ0ludCgwKTtcbiAgICBjb25zdCBpbnB1dHM6IFRyYW5zZmVyYWJsZUlucHV0W10gPSBbXTtcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbFtdID0gW107XG5cbiAgICAvLyBDaGFuZ2Ugb3V0cHV0IHRocmVzaG9sZCBpcyBhbHdheXMgMSAobWF0Y2hpbmcgRmxhcmUgcHJvdG9jb2wgYmVoYXZpb3IpXG4gICAgLy8gVGhpcyBhbGxvd3MgZWFzaWVyIHNwZW5kaW5nIG9mIGNoYW5nZSB3aGlsZSBtYWludGFpbmluZyBzZWN1cml0eSBmb3IgZXhwb3J0IG91dHB1dHNcbiAgICBjb25zdCBjaGFuZ2VPdXRwdXRUaHJlc2hvbGQgPSAxO1xuXG4gICAgLy8gT25seSBjb25zdW1lIGVub3VnaCBVVFhPcyB0byBjb3ZlciB0aGUgdGFyZ2V0IGFtb3VudCAoaW4gYXJyYXkgb3JkZXIpXG4gICAgLy8gSW5wdXRzIHdpbGwgYmUgc29ydGVkIGFmdGVyIHNlbGVjdGlvblxuICAgIGZvciAoY29uc3QgdXR4byBvZiB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcykge1xuICAgICAgLy8gU3RvcCBpZiB3ZSBhbHJlYWR5IGhhdmUgZW5vdWdoXG4gICAgICBpZiAodG90YWxBbW91bnQgPj0gdGFyZ2V0QW1vdW50KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhbW91bnQgPSBCaWdJbnQodXR4by5hbW91bnQpO1xuICAgICAgdG90YWxBbW91bnQgKz0gYW1vdW50O1xuXG4gICAgICAvLyBVc2UgdGhlIFVUWE8ncyBvd24gdGhyZXNob2xkIGZvciBzaWduYXR1cmUgaW5kaWNlc1xuICAgICAgY29uc3QgdXR4b1RocmVzaG9sZCA9IHV0eG8udGhyZXNob2xkIHx8IHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZDtcblxuICAgICAgLy8gQ3JlYXRlIHNpZ25hdHVyZSBpbmRpY2VzIGZvciB0aGUgVVRYTydzIHRocmVzaG9sZFxuICAgICAgY29uc3Qgc2lnSW5kaWNlczogbnVtYmVyW10gPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXR4b1RocmVzaG9sZDsgaSsrKSB7XG4gICAgICAgIHNpZ0luZGljZXMucHVzaChpKTtcbiAgICAgIH1cblxuICAgICAgLy8gVXNlIGZyb21OYXRpdmUgdG8gY3JlYXRlIFRyYW5zZmVyYWJsZUlucHV0XG4gICAgICBjb25zdCB0eElkQ2I1OCA9IHV0eG8udHhpZDsgLy8gQWxyZWFkeSBjYjU4IGVuY29kZWRcbiAgICAgIGNvbnN0IGFzc2V0SWRDYjU4ID0gdXRpbHMuY2I1OEVuY29kZShCdWZmZXIuZnJvbSh0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLCAnaGV4JykpO1xuXG4gICAgICBjb25zdCB0cmFuc2ZlcmFibGVJbnB1dCA9IFRyYW5zZmVyYWJsZUlucHV0LmZyb21OYXRpdmUoXG4gICAgICAgIHR4SWRDYjU4LFxuICAgICAgICBOdW1iZXIodXR4by5vdXRwdXRpZHgpLFxuICAgICAgICBhc3NldElkQ2I1OCxcbiAgICAgICAgYW1vdW50LFxuICAgICAgICBzaWdJbmRpY2VzXG4gICAgICApO1xuXG4gICAgICBpbnB1dHMucHVzaCh0cmFuc2ZlcmFibGVJbnB1dCk7XG5cbiAgICAgIC8vIENyZWF0ZSBjcmVkZW50aWFsIHdpdGggZW1wdHkgc2lnbmF0dXJlcyBmb3Igc2xvdCBpZGVudGlmaWNhdGlvblxuICAgICAgLy8gTWF0Y2ggYXZheHAgYmVoYXZpb3I6IGR5bmFtaWMgb3JkZXJpbmcgYmFzZWQgb24gYWRkcmVzc2VzSW5kZXggZnJvbSBVVFhPXG4gICAgICAvLyBVc2UgY2VudHJhbGl6ZWQgbWV0aG9kIGZvciBjcmVkZW50aWFsIGNyZWF0aW9uXG4gICAgICAvLyBOb3RlOiBVc2UgdXR4b1RocmVzaG9sZCBpZiBpdCBkaWZmZXJzIGZyb20gdHJhbnNhY3Rpb24gdGhyZXNob2xkIChzaG91bGQgYmUgcmFyZSlcbiAgICAgIGNvbnN0IHRocmVzaG9sZFRvVXNlID1cbiAgICAgICAgdXR4b1RocmVzaG9sZCA9PT0gdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkID8gdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkIDogdXR4b1RocmVzaG9sZDtcbiAgICAgIGlmICh0aHJlc2hvbGRUb1VzZSA9PT0gdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkKSB7XG4gICAgICAgIGNyZWRlbnRpYWxzLnB1c2godGhpcy5jcmVhdGVDcmVkZW50aWFsRm9yVXR4byh1dHhvLCB0aHJlc2hvbGRUb1VzZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRmFsbGJhY2s6IHVzZSBhbGwgemVyb3MgaWYgdGhyZXNob2xkIGRpZmZlcnMgKHNob3VsZG4ndCBoYXBwZW4gbm9ybWFsbHkpXG4gICAgICAgIGNvbnN0IGVtcHR5U2lnbmF0dXJlcyA9IHNpZ0luZGljZXMubWFwKCgpID0+IHV0aWxzLmNyZWF0ZU5ld1NpZygnJykpO1xuICAgICAgICBjcmVkZW50aWFscy5wdXNoKG5ldyBDcmVkZW50aWFsKGVtcHR5U2lnbmF0dXJlcykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENyZWF0ZSBjaGFuZ2Ugb3V0cHV0IGlmIHRoZXJlIGlzIHJlbWFpbmluZyBhbW91bnQgYWZ0ZXIgZXhwb3J0IGFuZCBmZWVcbiAgICBjb25zdCBjaGFuZ2VPdXRwdXRzOiBUcmFuc2ZlcmFibGVPdXRwdXRbXSA9IFtdO1xuICAgIGNvbnN0IGNoYW5nZUFtb3VudCA9IHRvdGFsQW1vdW50IC0gdGhpcy5fYW1vdW50IC0gZmVlO1xuXG4gICAgaWYgKGNoYW5nZUFtb3VudCA+IEJpZ0ludCgwKSkge1xuICAgICAgY29uc3QgYXNzZXRJZEJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20odGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCwgJ2hleCcpKTtcblxuICAgICAgLy8gQ3JlYXRlIE91dHB1dE93bmVycyB3aXRoIHRoZSBQLWNoYWluIGFkZHJlc3NlcyAoc29ydGVkIGJ5IGJ5dGUgdmFsdWUgYXMgcGVyIEFWQVggcHJvdG9jb2wpXG4gICAgICAvLyBVc2UgdGhyZXNob2xkPTEgZm9yIGNoYW5nZSBvdXRwdXRzIChtYXRjaGluZyBGbGFyZSBwcm90b2NvbCBiZWhhdmlvcilcbiAgICAgIGNvbnN0IHNvcnRlZEFkZHJlc3NlcyA9IFsuLi50aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzXS5zb3J0KChhLCBiKSA9PiBCdWZmZXIuY29tcGFyZShhLCBiKSk7XG4gICAgICBjb25zdCBvdXRwdXRPd25lcnMgPSBuZXcgT3V0cHV0T3duZXJzKFxuICAgICAgICBuZXcgQmlnSW50UHIodGhpcy50cmFuc2FjdGlvbi5fbG9ja3RpbWUpLFxuICAgICAgICBuZXcgSW50KGNoYW5nZU91dHB1dFRocmVzaG9sZCksXG4gICAgICAgIHNvcnRlZEFkZHJlc3Nlcy5tYXAoKGFkZHIpID0+IG5ldyBBZGRyZXNzKGFkZHIpKVxuICAgICAgKTtcblxuICAgICAgY29uc3QgdHJhbnNmZXJPdXRwdXQgPSBuZXcgVHJhbnNmZXJPdXRwdXQobmV3IEJpZ0ludFByKGNoYW5nZUFtb3VudCksIG91dHB1dE93bmVycyk7XG4gICAgICBjb25zdCBjaGFuZ2VPdXRwdXQgPSBuZXcgVHJhbnNmZXJhYmxlT3V0cHV0KG5ldyBJZChhc3NldElkQnl0ZXMpLCB0cmFuc2Zlck91dHB1dCk7XG4gICAgICBjaGFuZ2VPdXRwdXRzLnB1c2goY2hhbmdlT3V0cHV0KTtcbiAgICB9XG5cbiAgICAvLyBTb3J0IGlucHV0cyBsZXhpY29ncmFwaGljYWxseSBieSB0eGlkIChBdmFsYW5jaGUgcHJvdG9jb2wgcmVxdWlyZW1lbnQpXG4gICAgY29uc3Qgc29ydGVkSW5wdXRzV2l0aENyZWRlbnRpYWxzID0gaW5wdXRzXG4gICAgICAubWFwKChpbnB1dCwgaSkgPT4gKHsgaW5wdXQsIGNyZWRlbnRpYWw6IGNyZWRlbnRpYWxzW2ldIH0pKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYVR4SWQgPSBCdWZmZXIuZnJvbShhLmlucHV0LnV0eG9JRC50eElELnRvQnl0ZXMoKSk7XG4gICAgICAgIGNvbnN0IGJUeElkID0gQnVmZmVyLmZyb20oYi5pbnB1dC51dHhvSUQudHhJRC50b0J5dGVzKCkpO1xuICAgICAgICByZXR1cm4gQnVmZmVyLmNvbXBhcmUoYVR4SWQsIGJUeElkKTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlucHV0czogc29ydGVkSW5wdXRzV2l0aENyZWRlbnRpYWxzLm1hcCgoeCkgPT4geC5pbnB1dCksXG4gICAgICBjaGFuZ2VPdXRwdXRzLFxuICAgICAgY3JlZGVudGlhbHM6IHNvcnRlZElucHV0c1dpdGhDcmVkZW50aWFscy5tYXAoKHgpID0+IHguY3JlZGVudGlhbCksXG4gICAgICB0b3RhbEFtb3VudCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgRXhwb3J0ZWRPdXRwdXRzIHdoZXJlIHRoZSByZWNpcGllbnQgYWRkcmVzcyBhcmUgdGhlIHNlbmRlci5cbiAgICogTGF0ZXIgYW4gaW1wb3J0VHggc2hvdWxkIGNvbXBsZXRlIHRoZSBvcGVyYXRpb25zIHNpZ25pbmcgd2l0aCB0aGUgc2FtZSBrZXlzLlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZXhwb3J0ZWRPdXRwdXRzKCk6IFRyYW5zZmVyYWJsZU91dHB1dFtdIHtcbiAgICBjb25zdCBhc3NldElkQnl0ZXMgPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbSh0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLCAnaGV4JykpO1xuXG4gICAgLy8gQ3JlYXRlIE91dHB1dE93bmVycyB3aXRoIHNvcnRlZCBhZGRyZXNzZXNcbiAgICBjb25zdCBzb3J0ZWRBZGRyZXNzZXMgPSBbLi4udGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc10uc29ydCgoYSwgYikgPT4gQnVmZmVyLmNvbXBhcmUoYSwgYikpO1xuICAgIGNvbnN0IG91dHB1dE93bmVycyA9IG5ldyBPdXRwdXRPd25lcnMoXG4gICAgICBuZXcgQmlnSW50UHIodGhpcy50cmFuc2FjdGlvbi5fbG9ja3RpbWUpLFxuICAgICAgbmV3IEludCh0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQpLFxuICAgICAgc29ydGVkQWRkcmVzc2VzLm1hcCgoYWRkcikgPT4gbmV3IEFkZHJlc3MoYWRkcikpXG4gICAgKTtcblxuICAgIGNvbnN0IG91dHB1dCA9IG5ldyBUcmFuc2Zlck91dHB1dChuZXcgQmlnSW50UHIodGhpcy5fYW1vdW50KSwgb3V0cHV0T3duZXJzKTtcblxuICAgIHJldHVybiBbbmV3IFRyYW5zZmVyYWJsZU91dHB1dChuZXcgSWQoYXNzZXRJZEJ5dGVzKSwgb3V0cHV0KV07XG4gIH1cblxuICAvKipcbiAgICogUmVjb3ZlciBVVFhPcyBmcm9tIGlucHV0c1xuICAgKiBAcGFyYW0gaW5wdXRzIEFycmF5IG9mIFRyYW5zZmVyYWJsZUlucHV0XG4gICAqIEByZXR1cm5zIEFycmF5IG9mIGRlY29kZWQgVVRYTyBvYmplY3RzXG4gICAqL1xuICBwcml2YXRlIHJlY292ZXJVdHhvcyhpbnB1dHM6IFRyYW5zZmVyYWJsZUlucHV0W10pOiBEZWNvZGVkVXR4b09ialtdIHtcbiAgICByZXR1cm4gaW5wdXRzLm1hcCgoaW5wdXQpID0+IHtcbiAgICAgIGNvbnN0IHV0eG9JZCA9IGlucHV0LnV0eG9JRDtcbiAgICAgIC8vIEdldCB0aGUgdGhyZXNob2xkIGZyb20gdGhlIGlucHV0J3Mgc2lnSW5kaWNlcyBsZW5ndGhcbiAgICAgIGNvbnN0IHRyYW5zZmVySW5wdXQgPSBpbnB1dC5pbnB1dCBhcyBUcmFuc2ZlcklucHV0O1xuICAgICAgY29uc3QgaW5wdXRUaHJlc2hvbGQgPSB0cmFuc2ZlcklucHV0LnNpZ0luZGljaWVzKCkubGVuZ3RoO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3V0cHV0SUQ6IFNFQ1AyNTZLMV9UcmFuc2Zlcl9PdXRwdXQsXG4gICAgICAgIGFtb3VudDogaW5wdXQuYW1vdW50KCkudG9TdHJpbmcoKSxcbiAgICAgICAgdHhpZDogdXRpbHMuY2I1OEVuY29kZShCdWZmZXIuZnJvbSh1dHhvSWQudHhJRC50b0J5dGVzKCkpKSxcbiAgICAgICAgb3V0cHV0aWR4OiB1dHhvSWQub3V0cHV0SWR4LnZhbHVlKCkudG9TdHJpbmcoKSxcbiAgICAgICAgdGhyZXNob2xkOiBpbnB1dFRocmVzaG9sZCB8fCB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQsXG4gICAgICAgIGFkZHJlc3NlczogdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlcy5tYXAoKGFkZHIpID0+XG4gICAgICAgICAgdXRpbHMuYWRkcmVzc1RvU3RyaW5nKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsuaHJwLCB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLmFsaWFzLCBCdWZmZXIuZnJvbShhZGRyKSlcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwb3J0SW5QVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9FeHBvcnRJblBUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsbURBQTRGO0FBQzVGLHlFQUFzRTtBQUN0RSxtREFVK0I7QUFDL0Isb0RBQTRCO0FBQzVCLG1DQUE4RjtBQUU5RixNQUFhLGtCQUFtQixTQUFRLG1EQUF3QjtJQUM5RCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQiwyQkFBMkI7UUFDM0IsNENBQTRDO1FBQzVDLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZGLHdFQUF3RTtRQUN4RSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQzdHLEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBTSxFQUFFLFFBQWlCLEVBQUUsaUJBQWdDO1FBQ3JFLE1BQU0sUUFBUSxHQUFHLEVBQXdCLENBQUM7UUFFMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLHVCQUFZLENBQUMscUVBQXFFLENBQUMsQ0FBQztRQUNoRyxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUM5QixJQUFJLE9B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QUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQzFELFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRTtnQkFDOUMsU0FBUyxFQUFFLGNBQWMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVU7Z0JBQ3hELFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUN0RCxlQUFLLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN6RzthQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWpMRCxnREFpTEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIE5vdFN1cHBvcnRlZCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgcHZtU2VyaWFsLFxuICBVbnNpZ25lZFR4LFxuICBUcmFuc2ZlcmFibGVJbnB1dCxcbiAgVHJhbnNmZXJhYmxlT3V0cHV0LFxuICBUcmFuc2ZlcklucHV0LFxuICB1dGlscyBhcyBGbGFyZVV0aWxzLFxuICBUcmFuc2Zlck91dHB1dCxcbiAgQ3JlZGVudGlhbCxcbiAgcHZtLFxufSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRGVjb2RlZFV0eG9PYmosIFNFQ1AyNTZLMV9UcmFuc2Zlcl9PdXRwdXQsIEZsYXJlVHJhbnNhY3Rpb25UeXBlLCBUeCB9IGZyb20gJy4vaWZhY2UnO1xuXG5leHBvcnQgY2xhc3MgRXhwb3J0SW5QVHhCdWlsZGVyIGV4dGVuZHMgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIC8vIEZvciBFeHBvcnQgRlJPTSBQLWNoYWluOlxuICAgIC8vIC0gZXh0ZXJuYWwgY2hhaW4gKGRlc3RpbmF0aW9uKSBpcyBDLWNoYWluXG4gICAgLy8gLSBibG9ja2NoYWluIElEIChzb3VyY2UpIGlzIFAtY2hhaW5cbiAgICB0aGlzLl9leHRlcm5hbENoYWluSWQgPSB1dGlscy5jYjU4RGVjb2RlKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsuY0NoYWluQmxvY2tjaGFpbklEKTtcbiAgICAvLyBQLWNoYWluIGJsb2NrY2hhaW4gSUQgKGZyb20gbmV0d29yayBjb25maWcgLSBkZWNvZGUgZnJvbSBjYjU4IHRvIGhleClcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9ibG9ja2NoYWluSUQgPSBCdWZmZXIuZnJvbSh1dGlscy5jYjU4RGVjb2RlKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsuYmxvY2tjaGFpbklEKSkudG9TdHJpbmcoXG4gICAgICAnaGV4J1xuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuRXhwb3J0O1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFR4LCByYXdCeXRlcz86IEJ1ZmZlciwgcGFyc2VkQ3JlZGVudGlhbHM/OiBDcmVkZW50aWFsW10pOiB0aGlzIHtcbiAgICBjb25zdCBleHBvcnRUeCA9IHR4IGFzIHB2bVNlcmlhbC5FeHBvcnRUeDtcblxuICAgIGlmICghdGhpcy52ZXJpZnlUeFR5cGUoZXhwb3J0VHguX3R5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdUcmFuc2FjdGlvbiBjYW5ub3QgYmUgcGFyc2VkIG9yIGhhcyBhbiB1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgfVxuICAgIGNvbnN0IG91dHB1dHMgPSBleHBvcnRUeC5vdXRzO1xuICAgIGlmIChvdXRwdXRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gY2FuIGhhdmUgb25lIGV4dGVybmFsIG91dHB1dCcpO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbMF07XG4gICAgY29uc3Qgb3V0cHV0VHJhbnNmZXIgPSBvdXRwdXQub3V0cHV0IGFzIFRyYW5zZmVyT3V0cHV0O1xuICAgIGNvbnN0IGFzc2V0SWQgPSBvdXRwdXQuYXNzZXRJZC50b0J5dGVzKCk7XG4gICAgaWYgKEJ1ZmZlci5jb21wYXJlKEJ1ZmZlci5mcm9tKGFzc2V0SWQpLCBCdWZmZXIuZnJvbSh0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLCAnaGV4JykpICE9PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBc3NldCBJRCBvZiB0aGUgb3V0cHV0IGRvZXMgbm90IG1hdGNoIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dE93bmVycyA9IG91dHB1dFRyYW5zZmVyLm91dHB1dE93bmVycztcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9sb2NrdGltZSA9IG91dHB1dE93bmVycy5sb2NrdGltZS52YWx1ZSgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZCA9IG91dHB1dE93bmVycy50aHJlc2hvbGQudmFsdWUoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzID0gb3V0cHV0T3duZXJzLmFkZHJzLm1hcCgoYWRkcikgPT4gQnVmZmVyLmZyb20oYWRkci50b0J5dGVzKCkpKTtcbiAgICB0aGlzLl9leHRlcm5hbENoYWluSWQgPSBCdWZmZXIuZnJvbShleHBvcnRUeC5kZXN0aW5hdGlvbi50b0J5dGVzKCkpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2Ftb3VudCA9IG91dHB1dFRyYW5zZmVyLmFtb3VudCgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zID0gdGhpcy5yZWNvdmVyVXR4b3MoWy4uLmV4cG9ydFR4LmJhc2VUeC5pbnB1dHNdKTtcblxuICAgIGNvbnN0IHRvdGFsSW5wdXRBbW91bnQgPSBleHBvcnRUeC5iYXNlVHguaW5wdXRzLnJlZHVjZSgoc3VtLCBpbnB1dCkgPT4gc3VtICsgaW5wdXQuYW1vdW50KCksIEJpZ0ludCgwKSk7XG4gICAgY29uc3QgY2hhbmdlT3V0cHV0QW1vdW50ID0gZXhwb3J0VHguYmFzZVR4Lm91dHB1dHMucmVkdWNlKChzdW0sIG91dCkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNmZXJPdXQgPSBvdXQub3V0cHV0IGFzIFRyYW5zZmVyT3V0cHV0O1xuICAgICAgcmV0dXJuIHN1bSArIHRyYW5zZmVyT3V0LmFtb3VudCgpO1xuICAgIH0sIEJpZ0ludCgwKSk7XG4gICAgY29uc3QgZmVlID0gdG90YWxJbnB1dEFtb3VudCAtIGNoYW5nZU91dHB1dEFtb3VudCAtIHRoaXMudHJhbnNhY3Rpb24uX2Ftb3VudDtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlID0gZmVlLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHBhcnNlZENyZWRlbnRpYWxzIHx8IFtdO1xuICAgIGNvbnN0IGhhc0NyZWRlbnRpYWxzID0gY3JlZGVudGlhbHMubGVuZ3RoID4gMDtcblxuICAgIGlmIChyYXdCeXRlcyAmJiBoYXNDcmVkZW50aWFscykge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5fcmF3U2lnbmVkQnl0ZXMgPSByYXdCeXRlcztcbiAgICB9XG5cbiAgICBjb25zdCB0eENyZWRlbnRpYWxzID1cbiAgICAgIGNyZWRlbnRpYWxzLmxlbmd0aCA+IDBcbiAgICAgICAgPyBjcmVkZW50aWFsc1xuICAgICAgICA6IGV4cG9ydFR4LmJhc2VUeC5pbnB1dHMubWFwKChpbnB1dCwgaW5wdXRJZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZmVySW5wdXQgPSBpbnB1dC5pbnB1dCBhcyBUcmFuc2ZlcklucHV0O1xuICAgICAgICAgICAgY29uc3QgaW5wdXRUaHJlc2hvbGQgPSB0cmFuc2ZlcklucHV0LnNpZ0luZGljaWVzKCkubGVuZ3RoIHx8IHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZDtcblxuICAgICAgICAgICAgY29uc3QgdXR4byA9IHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zW2lucHV0SWR4XTtcblxuICAgICAgICAgICAgaWYgKGlucHV0VGhyZXNob2xkID09PSB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ3JlZGVudGlhbEZvclV0eG8odXR4bywgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IHNpZ1Nsb3RzOiBSZXR1cm5UeXBlPHR5cGVvZiB1dGlscy5jcmVhdGVOZXdTaWc+W10gPSBbXTtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dFRocmVzaG9sZDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgc2lnU2xvdHMucHVzaCh1dGlscy5jcmVhdGVOZXdTaWcoJycpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoc2lnU2xvdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgY29uc3QgYWRkcmVzc01hcHMgPSB0eENyZWRlbnRpYWxzLm1hcCgoY3JlZGVudGlhbCwgY3JlZElkeCkgPT5cbiAgICAgIHRoaXMuY3JlYXRlQWRkcmVzc01hcEZvclV0eG8odGhpcy50cmFuc2FjdGlvbi5fdXR4b3NbY3JlZElkeF0sIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZClcbiAgICApO1xuXG4gICAgY29uc3QgdW5zaWduZWRUeCA9IG5ldyBVbnNpZ25lZFR4KGV4cG9ydFR4LCBbXSwgbmV3IEZsYXJlVXRpbHMuQWRkcmVzc01hcHMoYWRkcmVzc01hcHMpLCB0eENyZWRlbnRpYWxzKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKHVuc2lnbmVkVHgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3RhdGljIHZlcmlmeVR4VHlwZSh0eG5UeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHhuVHlwZSA9PT0gRmxhcmVUcmFuc2FjdGlvblR5cGUuUHZtRXhwb3J0VHg7XG4gIH1cblxuICB2ZXJpZnlUeFR5cGUodHhuVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEV4cG9ydEluUFR4QnVpbGRlci52ZXJpZnlUeFR5cGUodHhuVHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIGV4cG9ydCB0cmFuc2FjdGlvbiBmb3IgUC1jaGFpblxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRGbGFyZVRyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmhhc0NyZWRlbnRpYWxzKSByZXR1cm47XG5cbiAgICBjb25zdCBmZWVTdGF0ZSA9IHRoaXMudHJhbnNhY3Rpb24uX2ZlZVN0YXRlO1xuICAgIGlmICghZmVlU3RhdGUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ZlZSBzdGF0ZSBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uX2NvbnRleHQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ2NvbnRleHQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uX2Ftb3VudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdhbW91bnQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLl91dHhvcyB8fCB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1VUWE9zIGFyZSByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgZGVjb2RlZCBVVFhPcyB0byBuYXRpdmUgRmxhcmVKUyBVdHhvIG9iamVjdHNcbiAgICBjb25zdCBhc3NldElkQ2I1OCA9IHV0aWxzLmNiNThFbmNvZGUoQnVmZmVyLmZyb20odGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCwgJ2hleCcpKTtcbiAgICBjb25zdCBuYXRpdmVVdHhvcyA9IHV0aWxzLmRlY29kZWRUb1V0eG9zKHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLCBhc3NldElkQ2I1OCk7XG5cbiAgICBjb25zdCB0b3RhbFV0eG9BbW91bnQgPSBuYXRpdmVVdHhvcy5yZWR1Y2UoKHN1bSwgdXR4bykgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gdXR4by5vdXRwdXQgYXMgVHJhbnNmZXJPdXRwdXQ7XG4gICAgICByZXR1cm4gc3VtICsgb3V0cHV0LmFtb3VudCgpO1xuICAgIH0sIEJpZ0ludCgwKSk7XG5cbiAgICBpZiAodG90YWxVdHhvQW1vdW50IDwgdGhpcy50cmFuc2FjdGlvbi5fYW1vdW50KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgSW5zdWZmaWNpZW50IFVUWE8gYmFsYW5jZTogaGF2ZSAke3RvdGFsVXR4b0Ftb3VudC50b1N0cmluZygpfSBuRkxSLCBuZWVkIGF0IGxlYXN0ICR7dGhpcy50cmFuc2FjdGlvbi5fYW1vdW50LnRvU3RyaW5nKCl9IG5GTFIgKHBsdXMgZmVlKWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgYXNzZXRJZCA9IHV0aWxzLmZsYXJlSWRTdHJpbmcodGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmcm9tQWRkcmVzc2VzID0gdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlcy5tYXAoKGFkZHIpID0+IEJ1ZmZlci5mcm9tKGFkZHIpKTtcbiAgICBjb25zdCB0cmFuc2ZlcmFibGVPdXRwdXQgPSBUcmFuc2ZlcmFibGVPdXRwdXQuZnJvbU5hdGl2ZShcbiAgICAgIGFzc2V0SWQsXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hbW91bnQsXG4gICAgICBmcm9tQWRkcmVzc2VzLFxuICAgICAgdGhpcy50cmFuc2FjdGlvbi5fbG9ja3RpbWUsXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGRcbiAgICApO1xuXG4gICAgY29uc3QgZXhwb3J0VHggPSBwdm0uZS5uZXdFeHBvcnRUeChcbiAgICAgIHtcbiAgICAgICAgZmVlU3RhdGUsXG4gICAgICAgIGZyb21BZGRyZXNzZXNCeXRlczogdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlcy5tYXAoKGFkZHIpID0+IEJ1ZmZlci5mcm9tKGFkZHIpKSxcbiAgICAgICAgZGVzdGluYXRpb25DaGFpbklkOiB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLmNDaGFpbkJsb2NrY2hhaW5JRCxcbiAgICAgICAgb3V0cHV0czogW3RyYW5zZmVyYWJsZU91dHB1dF0sXG4gICAgICAgIHV0eG9zOiBuYXRpdmVVdHhvcyxcbiAgICAgIH0sXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl9jb250ZXh0XG4gICAgKTtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24oZXhwb3J0VHgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY292ZXIgVVRYT3MgZnJvbSBpbnB1dHNcbiAgICogQHBhcmFtIGlucHV0cyBBcnJheSBvZiBUcmFuc2ZlcmFibGVJbnB1dFxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBkZWNvZGVkIFVUWE8gb2JqZWN0c1xuICAgKi9cbiAgcHJpdmF0ZSByZWNvdmVyVXR4b3MoaW5wdXRzOiBUcmFuc2ZlcmFibGVJbnB1dFtdKTogRGVjb2RlZFV0eG9PYmpbXSB7XG4gICAgcmV0dXJuIGlucHV0cy5tYXAoKGlucHV0KSA9PiB7XG4gICAgICBjb25zdCB1dHhvSWQgPSBpbnB1dC51dHhvSUQ7XG4gICAgICBjb25zdCB0cmFuc2ZlcklucHV0ID0gaW5wdXQuaW5wdXQgYXMgVHJhbnNmZXJJbnB1dDtcbiAgICAgIGNvbnN0IGlucHV0VGhyZXNob2xkID0gdHJhbnNmZXJJbnB1dC5zaWdJbmRpY2llcygpLmxlbmd0aDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG91dHB1dElEOiBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0LFxuICAgICAgICBhbW91bnQ6IGlucHV0LmFtb3VudCgpLnRvU3RyaW5nKCksXG4gICAgICAgIHR4aWQ6IHV0aWxzLmNiNThFbmNvZGUoQnVmZmVyLmZyb20odXR4b0lkLnR4SUQudG9CeXRlcygpKSksXG4gICAgICAgIG91dHB1dGlkeDogdXR4b0lkLm91dHB1dElkeC52YWx1ZSgpLnRvU3RyaW5nKCksXG4gICAgICAgIHRocmVzaG9sZDogaW5wdXRUaHJlc2hvbGQgfHwgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkLFxuICAgICAgICBhZGRyZXNzZXM6IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMubWFwKChhZGRyKSA9PlxuICAgICAgICAgIHV0aWxzLmFkZHJlc3NUb1N0cmluZyh0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLmhycCwgdGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5hbGlhcywgQnVmZmVyLmZyb20oYWRkcikpXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
2
  import { TransactionType } from '@bitgo-beta/sdk-core';
3
3
  import { AtomicInCTransactionBuilder } from './atomicInCTransactionBuilder';
4
- import { Credential, TransferableInput } from '@flarenetwork/flarejs';
4
+ import { Credential } from '@flarenetwork/flarejs';
5
5
  import { Tx } from './iface';
6
6
  export declare class ImportInCTxBuilder extends AtomicInCTransactionBuilder {
7
7
  constructor(_coinConfig: Readonly<CoinConfig>);
@@ -20,24 +20,6 @@ export declare class ImportInCTxBuilder extends AtomicInCTransactionBuilder {
20
20
  * @protected
21
21
  */
22
22
  protected buildFlareTransaction(): void;
23
- /**
24
- * Create inputs from UTXOs
25
- * @return {
26
- * inputs: TransferableInput[];
27
- * credentials: Credential[];
28
- * amount: bigint;
29
- * }
30
- */
31
- protected createInputs(): {
32
- inputs: TransferableInput[];
33
- credentials: Credential[];
34
- amount: bigint;
35
- };
36
- /**
37
- * @param unsignedTx The UnsignedTx to calculate the cost for (includes ImportTx, AddressMaps, and Credentials)
38
- * @returns The total cost units
39
- */
40
- private calculateImportCost;
41
23
  /**
42
24
  * Recover UTXOs from imported inputs
43
25
  * @param importedInputs Array of transferable inputs
@@ -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,EAIV,iBAAiB,EAGlB,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;IAwH9E,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAItC;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAgFvC;;;;;;;OAOG;IACH,SAAS,CAAC,YAAY,IAAI;QACxB,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAC5B,WAAW,EAAE,UAAU,EAAE,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC;KAChB;IAqDD;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;;;OAIG;IACH,OAAO,CAAC,YAAY;CAiBrB"}
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;IAiF9E,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAItC;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAsDvC;;;;OAIG;IACH,OAAO,CAAC,YAAY;CAiBrB"}