@odatano/core 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/@cds-models/CardanoSignService/index.d.ts +6 -0
  2. package/@cds-models/CardanoSignService/index.d.ts.map +1 -1
  3. package/@cds-models/CardanoSignService/index.js.map +1 -1
  4. package/@cds-models/CardanoSignService/index.ts +1 -0
  5. package/@cds-models/CardanoTransactionService/index.d.ts +16 -2
  6. package/@cds-models/CardanoTransactionService/index.d.ts.map +1 -1
  7. package/@cds-models/CardanoTransactionService/index.js.map +1 -1
  8. package/@cds-models/CardanoTransactionService/index.ts +4 -3
  9. package/@cds-models/odatano/cardano/index.d.ts +6 -0
  10. package/@cds-models/odatano/cardano/index.d.ts.map +1 -1
  11. package/@cds-models/odatano/cardano/index.js.map +1 -1
  12. package/@cds-models/odatano/cardano/index.ts +1 -0
  13. package/db/schema.cds +4 -0
  14. package/package.json +1 -1
  15. package/srv/blockchain/transaction-building/buildooor-tx.d.ts.map +1 -1
  16. package/srv/blockchain/transaction-building/buildooor-tx.js +166 -38
  17. package/srv/blockchain/transaction-building/buildooor-tx.js.map +1 -1
  18. package/srv/blockchain/transaction-building/csl-tx.d.ts.map +1 -1
  19. package/srv/blockchain/transaction-building/csl-tx.js +93 -2
  20. package/srv/blockchain/transaction-building/csl-tx.js.map +1 -1
  21. package/srv/cardano-tx-service.cds +13 -1
  22. package/srv/cardano-tx-service.d.ts.map +1 -1
  23. package/srv/cardano-tx-service.js +120 -2
  24. package/srv/cardano-tx-service.js.map +1 -1
  25. package/srv/utils/mappers.d.ts.map +1 -1
  26. package/srv/utils/mappers.js +1 -0
  27. package/srv/utils/mappers.js.map +1 -1
  28. package/srv/utils/plutus-placeholders.d.ts.map +1 -0
  29. package/srv/utils/plutus-placeholders.js +87 -0
  30. package/srv/utils/plutus-placeholders.js.map +1 -0
  31. package/srv/utils/types.d.ts.map +1 -1
  32. package/srv/utils/types.js.map +1 -1
@@ -8,6 +8,7 @@ const buildooor_1 = require("@harmoniclabs/buildooor");
8
8
  const uint8array_utils_1 = require("@harmoniclabs/uint8array-utils");
9
9
  const tx_build_helper_1 = require("../../utils/tx-build-helper");
10
10
  const errors_1 = require("../../utils/errors");
11
+ const plutus_placeholders_1 = require("../../utils/plutus-placeholders");
11
12
  const cds_1 = __importDefault(require("@sap/cds"));
12
13
  const cardano_ledger_ts_1 = require("@harmoniclabs/cardano-ledger-ts");
13
14
  const TxMetadata_1 = require("@harmoniclabs/cardano-ledger-ts/dist/tx/metadata/TxMetadata");
@@ -97,24 +98,6 @@ class BuildooorTxBuilder {
97
98
  // Parse the minting policy script once
98
99
  const scriptBytes = Buffer.from(req.mintingPolicyScript, 'hex');
99
100
  const script = cardano_ledger_ts_1.Script.fromCbor(scriptBytes);
100
- // Helper to build mints array with specified execution units
101
- const buildMints = (exUnits) => {
102
- const mints = [];
103
- for (const mintAction of req.mintActions) {
104
- const { assetName } = (0, tx_build_helper_1.parseAssetUnit)(mintAction.assetUnit);
105
- mints.push({
106
- value: cardano_ledger_ts_1.Value.singleAsset(script.hash, Buffer.from(assetName, 'hex'), BigInt(mintAction.quantity)),
107
- script: {
108
- inline: script,
109
- redeemer: req.mintRedeemer
110
- ? (0, tx_build_helper_1.jsonToPlutusData)(req.mintRedeemer)
111
- : new plutus_data_1.DataI(mintAction.redeemer ?? 0),
112
- executionUnits: exUnits
113
- }
114
- });
115
- }
116
- return mints;
117
- };
118
101
  // Calculate total mint value for output (only positive quantities - mints, not burns)
119
102
  let mintValue = cardano_ledger_ts_1.Value.lovelaces(0n);
120
103
  for (const mintAction of req.mintActions) {
@@ -124,10 +107,6 @@ class BuildooorTxBuilder {
124
107
  mintValue = cardano_ledger_ts_1.Value.add(mintValue, cardano_ledger_ts_1.Value.singleAsset(script.hash, Buffer.from(assetName, 'hex'), quantity));
125
108
  }
126
109
  }
127
- // Build output — recipient gets the minted assets + min ADA
128
- let outputValue = cardano_ledger_ts_1.Value.lovelaces(BigInt(req.lovelaceAmount));
129
- outputValue = cardano_ledger_ts_1.Value.add(outputValue, mintValue);
130
- const outputs = [this._buildTxOut(recipientAddress, outputValue, req.inlineDatum)];
131
110
  // Partition forced vs candidate UTxOs. Forced inputs are already committed;
132
111
  // collateral and coin selection operate on the remainder only.
133
112
  const { forced, rest } = this._partitionForcedInputs(ctx.utxos, req.forceInputs);
@@ -141,6 +120,40 @@ class BuildooorTxBuilder {
141
120
  const selectedFunding = this.txBuilder.keepRelevant(requiredFundingValue, allFundingInputs);
142
121
  const inputs = [...forcedInputs, ...selectedFunding];
143
122
  logger.debug(`Coin selection: ${selectedFunding.length}/${allFundingInputs.length} UTxOs selected (${forcedInputs.length} forced) for mint`);
123
+ // FR-3: resolve __INPUT_IDX__ placeholders in mintRedeemer + inlineDatum after final input order is known.
124
+ const sortedInputs = (0, plutus_placeholders_1.sortInputsLikeBuildooor)([
125
+ ...forced.map(u => ({ txHash: u.txHash, outputIndex: u.outputIndex })),
126
+ ...this._extractFundingRefs(selectedFunding)
127
+ ]);
128
+ const resolveCtx = { sortedInputs };
129
+ const resolvedMintRedeemer = req.mintRedeemer
130
+ ? (0, plutus_placeholders_1.resolveIndexPlaceholders)(req.mintRedeemer, resolveCtx)
131
+ : undefined;
132
+ const resolvedInlineDatum = req.inlineDatum
133
+ ? (0, plutus_placeholders_1.resolveIndexPlaceholders)(req.inlineDatum, resolveCtx)
134
+ : undefined;
135
+ // Build output — recipient gets the minted assets + min ADA
136
+ let outputValue = cardano_ledger_ts_1.Value.lovelaces(BigInt(req.lovelaceAmount));
137
+ outputValue = cardano_ledger_ts_1.Value.add(outputValue, mintValue);
138
+ const outputs = [this._buildTxOut(recipientAddress, outputValue, resolvedInlineDatum)];
139
+ // Helper to build mints array with specified execution units (uses pre-resolved redeemer)
140
+ const buildMints = (exUnits) => {
141
+ const mints = [];
142
+ for (const mintAction of req.mintActions) {
143
+ const { assetName } = (0, tx_build_helper_1.parseAssetUnit)(mintAction.assetUnit);
144
+ mints.push({
145
+ value: cardano_ledger_ts_1.Value.singleAsset(script.hash, Buffer.from(assetName, 'hex'), BigInt(mintAction.quantity)),
146
+ script: {
147
+ inline: script,
148
+ redeemer: resolvedMintRedeemer
149
+ ? (0, tx_build_helper_1.jsonToPlutusData)(resolvedMintRedeemer)
150
+ : new plutus_data_1.DataI(mintAction.redeemer ?? 0),
151
+ executionUnits: exUnits
152
+ }
153
+ });
154
+ }
155
+ return mints;
156
+ };
144
157
  // Evaluate execution units
145
158
  const finalExUnits = await this._evaluateExUnits(async () => {
146
159
  const evalTx = await this.txBuilder.build({
@@ -168,17 +181,11 @@ class BuildooorTxBuilder {
168
181
  // Parse the validator script
169
182
  const scriptBytes = Buffer.from(plutusScriptExecution.validatorScript, 'hex');
170
183
  const script = cardano_ledger_ts_1.Script.fromCbor(scriptBytes);
171
- // Convert redeemer JSON to PlutusData
172
- const redeemerData = (0, tx_build_helper_1.jsonToPlutusData)(plutusScriptExecution.redeemer);
173
- // Determine datum: "inline" if no datum provided (assumes inline datum on UTxO), otherwise convert
174
184
  if (!plutusScriptExecution.datum) {
175
185
  // When no explicit datum is provided, the UTxO must have an inline datum.
176
186
  // If neither exists, the Plutus validator will fail with a cryptic error.
177
187
  logger.debug('No datumJson provided — expecting inline datum on script UTxO');
178
188
  }
179
- const datum = plutusScriptExecution.datum
180
- ? (0, tx_build_helper_1.jsonToPlutusData)(plutusScriptExecution.datum)
181
- : "inline";
182
189
  // Find the specific script UTxO in the provided context UTxOs
183
190
  const scriptUtxoRef = plutusScriptExecution.scriptUtxo;
184
191
  const scriptOdatanoUtxo = ctx.utxos.find(u => u.txHash === scriptUtxoRef.txHash && u.outputIndex === scriptUtxoRef.outputIndex);
@@ -190,13 +197,6 @@ class BuildooorTxBuilder {
190
197
  const senderUtxos = ctx.utxos.filter(u => !(u.txHash === scriptUtxoRef.txHash && u.outputIndex === scriptUtxoRef.outputIndex));
191
198
  const recipientAddress = cardano_ledger_ts_1.Address.fromString(req.recipientAddress);
192
199
  const changeAddress = cardano_ledger_ts_1.Address.fromString(req.changeAddress ?? req.senderAddress);
193
- // Build output — include multi-assets from script UTxO in continuing output
194
- const scriptNonAdaAssets = scriptOdatanoUtxo.amount.filter(a => a.unit.toLowerCase() !== 'lovelace' && BigInt(a.quantity) > 0n);
195
- let outputValue = cardano_ledger_ts_1.Value.lovelaces(BigInt(req.lovelaceAmount || const_1.MIN_CHANGE_LOVELACE));
196
- if (scriptNonAdaAssets.length > 0) {
197
- outputValue = this._buildLedgerValue(BigInt(req.lovelaceAmount || const_1.MIN_CHANGE_LOVELACE), scriptOdatanoUtxo.amount);
198
- }
199
- const outputs = [this._buildTxOut(recipientAddress, outputValue, req.inlineDatum)];
200
200
  // Partition forced inputs (excluding any ref that matches the script UTxO — silently ignored)
201
201
  const forceInputsFiltered = (req.forceInputs ?? []).filter(r => !(r.txHash === scriptUtxoRef.txHash && r.outputIndex === scriptUtxoRef.outputIndex));
202
202
  const { forced, rest } = this._partitionForcedInputs(senderUtxos, forceInputsFiltered);
@@ -204,11 +204,78 @@ class BuildooorTxBuilder {
204
204
  // Collateral + funding separation (from candidates only — forced inputs cannot double as collateral)
205
205
  const { collateralUtxos, fundingUtxos } = this._setupCollateral(rest);
206
206
  const fundingLedgerUtxos = fundingUtxos.map(utxo => this._mapMultiAssetUtxoToLedgerUtxo(utxo));
207
- // Coin selection: funding UTxOs only need to cover fee + min change (script UTxO covers the output)
207
+ // Coin selection: funding UTxOs only need to cover fee + min change (script UTxO covers the output).
208
+ // Extra outputs (FR-2) add their lovelace + assets to the requirement; assets that the script UTxO
209
+ // already provides will net out, so over-requesting is harmless — keepRelevant prefers smaller sets.
208
210
  const allFundingInputs = fundingLedgerUtxos.map(utxo => ({ utxo }));
209
- const requiredFundingValue = cardano_ledger_ts_1.Value.lovelaces(BigInt(req.lovelaceAmount || const_1.MIN_CHANGE_LOVELACE));
211
+ let requiredFundingValue = cardano_ledger_ts_1.Value.lovelaces(BigInt(req.lovelaceAmount || const_1.MIN_CHANGE_LOVELACE));
212
+ if (req.extraOutputs && req.extraOutputs.length > 0) {
213
+ for (const extra of req.extraOutputs) {
214
+ requiredFundingValue = cardano_ledger_ts_1.Value.add(requiredFundingValue, this._buildLedgerValue(BigInt(extra.lovelaceAmount), extra.assets));
215
+ }
216
+ }
210
217
  const selectedFundingInputs = this.txBuilder.keepRelevant(requiredFundingValue, allFundingInputs);
211
218
  logger.debug(`Coin selection: ${selectedFundingInputs.length}/${allFundingInputs.length} UTxOs selected (${forcedInputs.length} forced) for Plutus spend`);
219
+ // FR-3: compute the final input order (replicates Buildooor's lex sort) and resolve any
220
+ // __INPUT_IDX__ placeholders in redeemer / datum / output datums BEFORE PlutusData encoding.
221
+ const sortedInputs = this._computeSortedInputs(scriptUtxoRef, forced, this._extractFundingRefs(selectedFundingInputs));
222
+ const resolveCtx = { sortedInputs };
223
+ const resolvedRedeemer = (0, plutus_placeholders_1.resolveIndexPlaceholders)(plutusScriptExecution.redeemer, resolveCtx);
224
+ const redeemerData = (0, tx_build_helper_1.jsonToPlutusData)(resolvedRedeemer);
225
+ const datum = plutusScriptExecution.datum
226
+ ? (0, tx_build_helper_1.jsonToPlutusData)((0, plutus_placeholders_1.resolveIndexPlaceholders)(plutusScriptExecution.datum, resolveCtx))
227
+ : "inline";
228
+ const resolvedPrimaryInlineDatum = req.inlineDatum
229
+ ? (0, plutus_placeholders_1.resolveIndexPlaceholders)(req.inlineDatum, resolveCtx)
230
+ : undefined;
231
+ const resolvedExtraOutputs = this._resolveExtraOutputPlaceholders(req.extraOutputs, resolveCtx);
232
+ const resolvedMintRedeemer = req.mintRedeemer
233
+ ? (0, plutus_placeholders_1.resolveIndexPlaceholders)(req.mintRedeemer, resolveCtx)
234
+ : undefined;
235
+ // FR-1: combined spend+mint flow. When mintActions are present, build mints alongside the spend input.
236
+ const hasMint = !!(req.mintActions && req.mintActions.length > 0 && req.mintingPolicyScript);
237
+ let mintScript;
238
+ let mintScriptHash;
239
+ if (hasMint) {
240
+ mintScript = cardano_ledger_ts_1.Script.fromCbor(Buffer.from(req.mintingPolicyScript, 'hex'));
241
+ mintScriptHash = mintScript.hash.toString();
242
+ }
243
+ // Build outputs — include multi-assets from script UTxO in continuing output
244
+ const scriptNonAdaAssets = scriptOdatanoUtxo.amount.filter(a => a.unit.toLowerCase() !== 'lovelace' && BigInt(a.quantity) > 0n);
245
+ let outputValue = cardano_ledger_ts_1.Value.lovelaces(BigInt(req.lovelaceAmount || const_1.MIN_CHANGE_LOVELACE));
246
+ if (scriptNonAdaAssets.length > 0) {
247
+ outputValue = this._buildLedgerValue(BigInt(req.lovelaceAmount || const_1.MIN_CHANGE_LOVELACE), scriptOdatanoUtxo.amount);
248
+ }
249
+ // If mints are present and no extraOutputs handle the minted assets, attach positive mints to the primary output.
250
+ if (hasMint && (!resolvedExtraOutputs || resolvedExtraOutputs.length === 0)) {
251
+ for (const action of req.mintActions) {
252
+ const qty = BigInt(action.quantity);
253
+ if (qty > 0n) {
254
+ const { assetName } = (0, tx_build_helper_1.parseAssetUnit)(action.assetUnit);
255
+ outputValue = cardano_ledger_ts_1.Value.add(outputValue, cardano_ledger_ts_1.Value.singleAsset(mintScript.hash, Buffer.from(assetName, 'hex'), qty));
256
+ }
257
+ }
258
+ }
259
+ const outputs = [this._buildTxOut(recipientAddress, outputValue, resolvedPrimaryInlineDatum)];
260
+ // Append extra outputs (FR-2). Each is independently min-ADA checked so consumers
261
+ // get a clear, field-attributed error before Buildooor's coin selection runs.
262
+ this._appendExtraOutputs(outputs, resolvedExtraOutputs);
263
+ // Helper to build mints array (FR-1) with specified execution units
264
+ const buildMints = hasMint
265
+ ? (exUnits) => req.mintActions.map(action => {
266
+ const { assetName } = (0, tx_build_helper_1.parseAssetUnit)(action.assetUnit);
267
+ return {
268
+ value: cardano_ledger_ts_1.Value.singleAsset(mintScript.hash, Buffer.from(assetName, 'hex'), BigInt(action.quantity)),
269
+ script: {
270
+ inline: mintScript,
271
+ redeemer: resolvedMintRedeemer
272
+ ? (0, tx_build_helper_1.jsonToPlutusData)(resolvedMintRedeemer)
273
+ : new plutus_data_1.DataI(action.redeemer ?? 0),
274
+ executionUnits: exUnits
275
+ }
276
+ };
277
+ })
278
+ : undefined;
212
279
  // Helper to build inputs with specified execution units
213
280
  const buildInputs = (exUnits) => {
214
281
  const scriptInput = {
@@ -221,6 +288,7 @@ class BuildooorTxBuilder {
221
288
  const finalExUnits = await this._evaluateExUnits(async () => {
222
289
  const evalTx = await this.txBuilder.build({
223
290
  inputs: buildInputs(const_1.HIGH_EXECUTION_UNITS), outputs, changeAddress,
291
+ mints: buildMints?.(const_1.HIGH_EXECUTION_UNITS),
224
292
  collaterals: collateralUtxos, requiredSigners: req.requiredSigners
225
293
  });
226
294
  if (!evalTx) {
@@ -230,12 +298,18 @@ class BuildooorTxBuilder {
230
298
  }, ctx.evaluateTransaction);
231
299
  // Build with final execution units + witness buffer
232
300
  const inputs = buildInputs(finalExUnits);
301
+ const mints = buildMints?.(finalExUnits);
233
302
  const tx = await this._buildWithWitnessBuffer({
234
303
  inputs, outputs, changeAddress,
304
+ mints,
235
305
  collaterals: collateralUtxos, requiredSigners: req.requiredSigners
236
306
  });
237
307
  logger.debug(`Built unsigned Plutus spending transaction successfully with fee: ${tx.body.fee.toString()}`);
238
- return this._buildResult(req, ctx, this._extractTxDetails(tx), { scriptHash: script.hash.toString(), forcedInputsUsed: forcedInputs.length });
308
+ return this._buildResult(req, ctx, this._extractTxDetails(tx), {
309
+ scriptHash: script.hash.toString(),
310
+ mintScriptHash,
311
+ forcedInputsUsed: forcedInputs.length
312
+ });
239
313
  }
240
314
  catch (err) {
241
315
  (0, tx_build_helper_1.mapBuilderError)(err);
@@ -379,6 +453,60 @@ class BuildooorTxBuilder {
379
453
  }
380
454
  return new cardano_ledger_ts_1.TxOut(params);
381
455
  }
456
+ /**
457
+ * Compute the post-sort input order so __INPUT_IDX__ placeholders (FR-3) resolve to the
458
+ * same indices Buildooor will assign during build(). Order: script-input first by convention,
459
+ * then forced + funding sorted lexicographically on (txHash, outputIndex).
460
+ * Buildooor sorts ALL inputs together; we mirror that exact behaviour via sortInputsLikeBuildooor.
461
+ */
462
+ _computeSortedInputs(scriptUtxoRef, forcedUtxos, fundingRefs) {
463
+ const all = [
464
+ { txHash: scriptUtxoRef.txHash, outputIndex: scriptUtxoRef.outputIndex },
465
+ ...forcedUtxos.map(u => ({ txHash: u.txHash, outputIndex: u.outputIndex })),
466
+ ...fundingRefs
467
+ ];
468
+ return (0, plutus_placeholders_1.sortInputsLikeBuildooor)(all);
469
+ }
470
+ /** Extract InputRef list from the Buildooor-shaped funding inputs returned by keepRelevant. */
471
+ _extractFundingRefs(fundingInputs) {
472
+ return fundingInputs.map(i => ({
473
+ txHash: i.utxo.utxoRef.id.toString(),
474
+ outputIndex: i.utxo.utxoRef.index
475
+ }));
476
+ }
477
+ /**
478
+ * Resolve __INPUT_IDX__ placeholders (FR-3) inside each extraOutput.inlineDatum.
479
+ * Returns a new array with resolved datums; non-datum fields pass through unchanged.
480
+ */
481
+ _resolveExtraOutputPlaceholders(extraOutputs, resolveCtx) {
482
+ if (!extraOutputs || extraOutputs.length === 0)
483
+ return extraOutputs;
484
+ return extraOutputs.map(extra => ({
485
+ ...extra,
486
+ inlineDatum: extra.inlineDatum
487
+ ? (0, plutus_placeholders_1.resolveIndexPlaceholders)(extra.inlineDatum, resolveCtx)
488
+ : undefined
489
+ }));
490
+ }
491
+ /**
492
+ * Append parsed extraOutputs (FR-2) to the outputs array, enforcing min-ADA per entry.
493
+ * Throws TransactionValidationError with the required min-ADA in the message so consumers
494
+ * can adjust without having to inspect Buildooor internals.
495
+ */
496
+ _appendExtraOutputs(outputs, extraOutputs) {
497
+ if (!extraOutputs || extraOutputs.length === 0)
498
+ return;
499
+ for (let i = 0; i < extraOutputs.length; i++) {
500
+ const extra = extraOutputs[i];
501
+ const value = this._buildLedgerValue(BigInt(extra.lovelaceAmount), extra.assets);
502
+ const txOut = this._buildTxOut(cardano_ledger_ts_1.Address.fromString(extra.address), value, extra.inlineDatum);
503
+ const minLovelaces = this.txBuilder.getMinimumOutputLovelaces(txOut);
504
+ if (BigInt(extra.lovelaceAmount) < minLovelaces) {
505
+ throw new errors_1.TransactionValidationError(`extraOutputs[${i}].lovelaceAmount (${extra.lovelaceAmount}) is below required min-ADA ${minLovelaces.toString()} for the given address/assets/datum`);
506
+ }
507
+ outputs.push(txOut);
508
+ }
509
+ }
382
510
  //---------------------------------------------------------------------------
383
511
  // UTxO Mapping & Configuration Helpers
384
512
  //---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"buildooor-tx.js","sourceRoot":"","sources":["buildooor-tx.ts"],"names":[],"mappings":";;;;;;AAEA,uDAAuE;AACvE,qEAAuD;AACvD,iEAA4H;AAC5H,+CAA4D;AAE5D,mDAA2B;AAC3B,uEASyC;AAEzC,4FAAyF;AACzF,8FAMsE;AACtE,2DAAgE;AAEhE,6CAAmJ;AAEnJ,MAAM,MAAM,GAAG,aAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAa,kBAAkB;IACb,IAAI,GAAG,oBAAoB,CAAC;IACpC,SAAS,CAAa;IACtB,aAAa,CAAiB;IAEtC;;;;OAIG;IACI,KAAK,CAAC,IAAI,CAAC,MAAqB,EAAE,cAAyC;QAChF,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,MAAM,MAAM,GAAG,cAAc,IAAI,MAAM,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACtE,MAAM,aAAa,GAAG,IAAI,CAAC,qCAAqC,CAAC,MAAM,CAAC,CAAC;QACzE,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,qBAAqB,CAAC,GAAmB,EAAE,GAAmB;QACzE,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,+BAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpF,CAAC;YAED,MAAM,gBAAgB,GAAG,2BAAO,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAClE,MAAM,aAAa,GAAG,2BAAO,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;YACjF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;YAElD,yDAAyD;YACzD,IAAI,WAAW,GAAG,yBAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YAEnF,+EAA+E;YAC/E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;YACjF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAE1F,iFAAiF;YACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAC3E,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,QAAQ,CAAC,CAAC;YAC9C,MAAM,CAAC,KAAK,CAAC,mBAAmB,QAAQ,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,oBAAoB,YAAY,CAAC,MAAM,uBAAuB,CAAC,CAAC;YAEzI,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;YAE1E,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,gBAAgB,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5G,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAA,iCAAe,EAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,oCAAoC,CAAC,GAAmB,EAAE,GAAmB;QACxF,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,2BAAO,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAClE,MAAM,aAAa,GAAG,2BAAO,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;YACjF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAE5E,MAAM,WAAW,GAAG,yBAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,CAAC,IAAI,yBAAK,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;YAE/E,+EAA+E;YAC/E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;YACjF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAE1F,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAC3E,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,QAAQ,CAAC,CAAC;YAC9C,MAAM,CAAC,KAAK,CAAC,mBAAmB,QAAQ,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,oBAAoB,YAAY,CAAC,MAAM,gCAAgC,CAAC,CAAC;YAElJ,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;YAEpF,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,gBAAgB,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5G,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAA,iCAAe,EAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,4BAA4B,CAAC,GAAuB,EAAE,GAAmB;QACpF,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,2BAAO,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAClE,MAAM,aAAa,GAAG,2BAAO,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;YAEjF,uCAAuC;YACvC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,0BAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAE5C,6DAA6D;YAC7D,MAAM,UAAU,GAAG,CAAC,OAAqC,EAAE,EAAE;gBAC3D,MAAM,KAAK,GAAG,EAAE,CAAC;gBACjB,KAAK,MAAM,UAAU,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;oBACzC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,gCAAc,EAAC,UAAU,CAAC,SAAS,CAAC,CAAC;oBAC3D,KAAK,CAAC,IAAI,CAAC;wBACT,KAAK,EAAE,yBAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACjG,MAAM,EAAE;4BACN,MAAM,EAAE,MAAM;4BACd,QAAQ,EAAE,GAAG,CAAC,YAAY;gCACxB,CAAC,CAAC,IAAA,kCAAgB,EAAC,GAAG,CAAC,YAAY,CAAC;gCACpC,CAAC,CAAC,IAAI,mBAAK,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,CAAC;4BACvC,cAAc,EAAE,OAAO;yBACxB;qBACF,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;YAEF,sFAAsF;YACtF,IAAI,SAAS,GAAG,yBAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACpC,KAAK,MAAM,UAAU,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;gBACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC7C,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;oBAClB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,gCAAc,EAAC,UAAU,CAAC,SAAS,CAAC,CAAC;oBAC3D,SAAS,GAAG,yBAAK,CAAC,GAAG,CAAC,SAAS,EAAE,yBAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC5G,CAAC;YACH,CAAC;YAED,4DAA4D;YAC5D,IAAI,WAAW,GAAG,yBAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;YAC9D,WAAW,GAAG,yBAAK,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YAEnF,4EAA4E;YAC5E,+DAA+D;YAC/D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;YACjF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEzF,qGAAqG;YACrG,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,kBAAkB,GAAiB,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7G,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAEpE,6FAA6F;YAC7F,MAAM,oBAAoB,GAAG,yBAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;YACzE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;YAC5F,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,eAAe,CAAC,CAAC;YACrD,MAAM,CAAC,KAAK,CAAC,mBAAmB,eAAe,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,oBAAoB,YAAY,CAAC,MAAM,mBAAmB,CAAC,CAAC;YAE7I,2BAA2B;YAC3B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC9C,KAAK,IAAI,EAAE;gBACT,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;oBACxC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,4BAAoB,CAAC;oBACvE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe;iBACnE,CAAC,CAAC;gBACH,OAAO,IAAA,wBAAK,EAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3C,CAAC,EACD,GAAG,CAAC,mBAAmB,CACxB,CAAC;YAEF,oDAAoD;YACpD,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;YACvC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC;gBAC5C,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK;gBACrC,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe;aACnE,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,6DAA6D,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACpG,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAChJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAA,iCAAe,EAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,mCAAmC,CAAC,GAA8B,EAAE,GAAmB;QAClG,IAAI,CAAC;YACH,MAAM,EAAE,qBAAqB,EAAE,GAAG,GAAG,CAAC;YAEtC,6BAA6B;YAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YAC9E,MAAM,MAAM,GAAG,0BAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAE5C,sCAAsC;YACtC,MAAM,YAAY,GAAG,IAAA,kCAAgB,EAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAEtE,mGAAmG;YACnG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;gBACjC,0EAA0E;gBAC1E,0EAA0E;gBAC1E,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK;gBACvC,CAAC,CAAC,IAAA,kCAAgB,EAAC,qBAAqB,CAAC,KAAK,CAAC;gBAC/C,CAAC,CAAC,QAAiB,CAAC;YAEtB,8DAA8D;YAC9D,MAAM,aAAa,GAAG,qBAAqB,CAAC,UAAU,CAAC;YACvD,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC,WAAW,KAAK,aAAa,CAAC,WAAW,CACtF,CAAC;YACF,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,eAAe,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,WAAW,8BAA8B,CAAC,CAAC;YAClH,CAAC;YAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,8BAA8B,CAAC,iBAAiB,CAAC,CAAC;YAEhF,iEAAiE;YACjE,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC,WAAW,KAAK,aAAa,CAAC,WAAW,CAAC,CACzF,CAAC;YAEF,MAAM,gBAAgB,GAAG,2BAAO,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAClE,MAAM,aAAa,GAAG,2BAAO,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;YAEjF,4EAA4E;YAC5E,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,CACxD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CACpE,CAAC;YACF,IAAI,WAAW,GAAG,yBAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,IAAI,2BAAmB,CAAC,CAAC,CAAC;YACrF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,IAAI,2BAAmB,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACpH,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YAEnF,8FAA8F;YAC9F,MAAM,mBAAmB,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,CACxD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC,WAAW,KAAK,aAAa,CAAC,WAAW,CAAC,CACzF,CAAC;YACF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;YACvF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEzF,qGAAqG;YACrG,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,kBAAkB,GAAiB,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC;YAE7G,oGAAoG;YACpG,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACpE,MAAM,oBAAoB,GAAG,yBAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,IAAI,2BAAmB,CAAC,CAAC,CAAC;YAChG,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;YAClG,MAAM,CAAC,KAAK,CAAC,mBAAmB,qBAAqB,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,oBAAoB,YAAY,CAAC,MAAM,2BAA2B,CAAC,CAAC;YAE3J,wDAAwD;YACxD,MAAM,WAAW,GAAG,CAAC,OAAqC,EAAE,EAAE;gBAC5D,MAAM,WAAW,GAAG;oBAClB,IAAI,EAAE,gBAAgB;oBACtB,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE;iBAChF,CAAC;gBACF,OAAO,CAAC,WAAW,EAAE,GAAG,YAAY,EAAE,GAAG,qBAAqB,CAAC,CAAC;YAClE,CAAC,CAAC;YAEF,2BAA2B;YAC3B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC9C,KAAK,IAAI,EAAE;gBACT,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;oBACxC,MAAM,EAAE,WAAW,CAAC,4BAAoB,CAAC,EAAE,OAAO,EAAE,aAAa;oBACjE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe;iBACnE,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAAC;gBACnH,CAAC;gBACD,OAAO,IAAA,wBAAK,EAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3C,CAAC,EACD,GAAG,CAAC,mBAAmB,CACxB,CAAC;YAEF,oDAAoD;YACpD,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;YACzC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC;gBAC5C,MAAM,EAAE,OAAO,EAAE,aAAa;gBAC9B,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe;aACnE,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,qEAAqE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC5G,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAChJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAA,iCAAe,EAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,wBAAwB;IACxB,6EAA6E;IAE7E,kFAAkF;IAC1E,iBAAiB,CAAC,EAAO;QAM/B,MAAM,eAAe,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC/C,OAAO;YACL,cAAc,EAAE,IAAA,wBAAK,EAAC,eAAe,CAAC;YACtC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC9B,SAAS,EAAE,eAAe,CAAC,MAAM;YACjC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;YACnC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC;gBAC3C,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE;gBACjC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK;aACzB,CAAC,CAAC;YACH,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBACxC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE;gBACtC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,IAAI,GAAG;aAClD,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,8CAA8C;IACtC,YAAY,CAClB,GAAmB,EAAE,GAAmB,EACxC,SAA8D,EAC9D,KAA0D;QAE1D,oFAAoF;QACpF,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,WAAW,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;YAC5F,OAAO;gBACL,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAA,6BAAW,EAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG;aAC1D,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO;YACnC,aAAa,EAAE,IAAI,CAAC,IAAI;YACxB,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,MAAM;YACN,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,GAAG,KAAK;YACR,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,gBAAgB,CAC5B,WAAkC,EAClC,SAAyF;QAEzF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;YACtE,OAAO,+BAAuB,CAAC;QACjC,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,MAAM,WAAW,EAAE,CAAC;QAEvC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAEnE,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACrC,MAAM,MAAM,GAAG;oBACb,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,6BAAqB,CAAC;oBACrD,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,6BAAqB,CAAC;iBACnD,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,wCAAwC,MAAM,CAAC,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBACrF,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,OAAO,SAAc,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,2CAA2C,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,+BAAuB,CAAC;IACjC,CAAC;IAED,qFAAqF;IAC7E,KAAK,CAAC,uBAAuB,CAAC,WAAyB;QAC7D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9D,MAAM,cAAc,GAAG,aAAa,GAAG,MAAM,CAAC,4BAAoB,CAAC,CAAC;QACpE,MAAM,CAAC,KAAK,CAAC,mBAAmB,aAAa,qCAAqC,cAAc,EAAE,CAAC,CAAC;QACpG,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC;IACvE,CAAC;IAED;;;;OAIG;IACK,sBAAsB,CAC5B,KAAoB,EACpB,WAA4D;QAE5D,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACjF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACjF,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,IAAI,GAAkB,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;gBAC9D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACK,gBAAgB,CAAC,KAAoB;QAG3C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;QAC5G,CAAC;QACD,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,WAAW,CAAC,CACrF,CAAC;QACF,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;IAC3C,CAAC;IAED,sEAAsE;IAC9D,iBAAiB,CAAC,QAAgB,EAAE,MAAkD;QAC5F,IAAI,KAAK,GAAG,yBAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU;oBAAE,SAAS;gBACtD,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;oBAAE,SAAS;gBAC3C,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAA,gCAAc,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3D,KAAK,GAAG,yBAAK,CAAC,GAAG,CAAC,KAAK,EAAE,yBAAK,CAAC,WAAW,CAAC,IAAI,0BAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC3H,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,+CAA+C;IACvC,WAAW,CAAC,OAAgB,EAAE,KAAY,EAAE,KAAiB;QACnE,MAAM,MAAM,GAA2C,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC1E,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,KAAK,GAAG,IAAA,kCAAgB,EAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,yBAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,6EAA6E;IAC7E,uCAAuC;IACvC,6EAA6E;IAE7E;;OAEG;IACK,qCAAqC,CAAC,kBAA2C;QACvF,OAAO;YACL,GAAG,6CAAyB;YAC5B,YAAY,EAAE,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC;YAChD,UAAU,EAAE,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC;YAC9C,eAAe,EAAE,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;YAC5D,WAAW,EAAE,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC;YACnD,UAAU,EAAE,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC;YACjD,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC;YAC/C,YAAY,EAAE,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC;SACpD,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,2BAA2B,CAAC,KAAkB;QACpD,IAAA,+BAAa,EAAC,KAAK,CAAC,CAAC;QAErB,OAAO,IAAI,wBAAU,CAAC;YACpB,OAAO,EAAE,IAAI,4BAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;YACrE,QAAQ,EAAE,IAAI,yBAAK,CAAC;gBAClB,OAAO,EAAE,2BAAO,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC1C,KAAK,EAAE,yBAAK,CAAC,SAAS,CAAC,IAAA,6BAAW,EAAC,KAAK,CAAC,CAAC;gBAC1C,KAAK,EAAE,SAAS;gBAChB,SAAS,EAAE,SAAS;aACrB,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,8BAA8B,CAAC,IAAiB;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAA,6BAAW,EAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE3F,OAAO,IAAI,wBAAU,CAAC;YACpB,OAAO,EAAE,IAAI,4BAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;YACnE,QAAQ,EAAE,IAAI,yBAAK,CAAC;gBAClB,OAAO,EAAE,2BAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;gBACzC,KAAK;gBACL,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,SAAS;aACrB,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACK,iBAAiB,CAAC,WAA4B;QACpD,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpC,kDAAkD;YAClD,IAAI,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvE,OAAO,IAAA,0BAAY,EAAC,WAAW,CAAC,CAAC;YACnC,CAAC;YACD,mDAAmD;YACnD,OAAO,IAAA,kCAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,gFAAgF;QAChF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;QAC9G,CAAC;QACD,OAAO,IAAA,kCAAgB,EAAC,WAAwB,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACK,mCAAmC,CAAC,YAAmC;QAC7E,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,uBAAU,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,QAAQ,GAAqC,EAAE,CAAC;QAEtD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1D,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,iCAAiC,YAAY,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/F,QAAQ,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC;QACvC,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC;QAChF,MAAM,UAAU,GAAG,IAAI,uBAAU,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,uBAAuB,UAAU,CAAC,WAAW,CAAC,IAAI,uBAAuB,UAAU,YAAY,uBAAU,EAAE,CAAC,CAAC;QAC1H,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,KAAgB;QACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC3D,OAAO,IAAI,4BAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,6BAAe,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,6BAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,GAAG,GAA8C,EAAE,CAAC;YAC1D,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,GAAG,CAAC,IAAI,CAAC;oBACP,CAAC,EAAE,IAAI,6BAAe,CAAC,CAAC,CAAC;oBACzB,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;iBAC9B,CAAC,CAAC;YACL,CAAC;YACD,OAAO,IAAI,4BAAc,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;CACF;AA5jBD,gDA4jBC"}
1
+ {"version":3,"file":"buildooor-tx.js","sourceRoot":"","sources":["buildooor-tx.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"csl-tx.d.ts","sourceRoot":"","sources":["csl-tx.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAkC,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAIhM,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAMlD;;GAEG;AACH,qBAAa,YAAa,YAAW,gBAAgB;IACnD,SAAgB,IAAI,kBAAkB;IACtC,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,aAAa,CAAiB;IAEtC;;;;OAIG;IACU,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzG;;OAEG;IACU,qBAAqB,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAsCvF,oCAAoC,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAkCtG,4BAA4B,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAmB/G;;OAEG;IACH,OAAO,CAAC,YAAY;IAqJP,mCAAmC,CAAC,GAAG,EAAE,yBAAyB,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAuB7H;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoG3B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAqD5B,qEAAqE;IACrE,OAAO,CAAC,aAAa;IAIrB,wFAAwF;IACxF,OAAO,CAAC,mBAAmB;IAc3B,4DAA4D;IAC5D,OAAO,CAAC,cAAc;IAStB,+EAA+E;IAC/E,OAAO,CAAC,iBAAiB;IA6BzB,8CAA8C;IAC9C,OAAO,CAAC,YAAY;IA8BpB,2EAA2E;IAC3E,OAAO,CAAC,mBAAmB;IAQ3B,6DAA6D;IAC7D,OAAO,CAAC,kBAAkB;IAM1B,qDAAqD;IACrD,OAAO,CAAC,kBAAkB;IAM1B;;;OAGG;YACW,gBAAgB;IAyC9B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IAYjC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAkBrC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkD9B;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAkBxC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgDzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAiC5B"}
1
+ {"version":3,"file":"csl-tx.d.ts","sourceRoot":"","sources":["csl-tx.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAkC,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAKhM,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAMlD;;GAEG;AACH,qBAAa,YAAa,YAAW,gBAAgB;IACnD,SAAgB,IAAI,kBAAkB;IACtC,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,aAAa,CAAiB;IAEtC;;;;OAIG;IACU,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzG;;OAEG;IACU,qBAAqB,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAsCvF,oCAAoC,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAkCtG,4BAA4B,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAoB/G;;OAEG;IACH,OAAO,CAAC,YAAY;IAqJP,mCAAmC,CAAC,GAAG,EAAE,yBAAyB,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IA2B7H;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+I3B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAqD5B,qEAAqE;IACrE,OAAO,CAAC,aAAa;IAIrB,wFAAwF;IACxF,OAAO,CAAC,mBAAmB;IAc3B,4DAA4D;IAC5D,OAAO,CAAC,cAAc;IAStB,+EAA+E;IAC/E,OAAO,CAAC,iBAAiB;IA6BzB,8CAA8C;IAC9C,OAAO,CAAC,YAAY;IA8BpB,2EAA2E;IAC3E,OAAO,CAAC,mBAAmB;IAQ3B,6DAA6D;IAC7D,OAAO,CAAC,kBAAkB;IAM1B;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAmBhC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA4B9B,qDAAqD;IACrD,OAAO,CAAC,kBAAkB;IAM1B;;;OAGG;YACW,gBAAgB;IAyC9B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IAYjC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAkBrC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkD9B;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAkBxC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgDzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAiC5B"}
@@ -42,6 +42,7 @@ const CSL = __importStar(require("@emurgo/cardano-serialization-lib-nodejs"));
42
42
  const blake2b_1 = __importDefault(require("blake2b"));
43
43
  const tx_build_helper_1 = require("../../utils/tx-build-helper");
44
44
  const errors_1 = require("../../utils/errors");
45
+ const plutus_placeholders_1 = require("../../utils/plutus-placeholders");
45
46
  const const_1 = require("../../utils/const");
46
47
  const cardano_costmodels_ts_1 = require("@harmoniclabs/cardano-costmodels-ts");
47
48
  const logger = cds_1.default.log('CSLTxBuilder');
@@ -133,6 +134,7 @@ class CSLTxBuilder {
133
134
  }
134
135
  async buildUnsignedMintTransaction(req, ctx) {
135
136
  try {
137
+ this._rejectIndexPlaceholders(req);
136
138
  const finalExUnits = await this._evaluateExUnits((exUnits) => this._buildMintTx(req, ctx, exUnits), ctx.evaluateTransaction);
137
139
  const unsignedTx = this._buildMintTx(req, ctx, finalExUnits);
138
140
  const txDetails = this._extractTxDetails(unsignedTx);
@@ -278,14 +280,18 @@ class CSLTxBuilder {
278
280
  }
279
281
  async buildUnsignedPlutusSpendTransaction(req, ctx) {
280
282
  try {
283
+ this._rejectIndexPlaceholders(req);
281
284
  const finalExUnits = await this._evaluateExUnits((exUnits) => this._buildPlutusSpendTx(req, ctx, exUnits), ctx.evaluateTransaction);
282
285
  const unsignedTx = this._buildPlutusSpendTx(req, ctx, finalExUnits);
283
286
  const txDetails = this._extractTxDetails(unsignedTx);
284
287
  const { hashHex: scriptHash } = this._computeScriptHash(req.plutusScriptExecution.validatorScript);
288
+ const mintScriptHash = (req.mintActions && req.mintActions.length > 0 && req.mintingPolicyScript)
289
+ ? this._computeScriptHash(req.mintingPolicyScript).hashHex
290
+ : undefined;
285
291
  const scriptUtxoRef = req.plutusScriptExecution.scriptUtxo;
286
292
  const forcedUsed = (req.forceInputs ?? []).filter(r => !(r.txHash === scriptUtxoRef.txHash && r.outputIndex === scriptUtxoRef.outputIndex)).length;
287
293
  logger.info(`Built unsigned Plutus spending transaction. Fee: ${txDetails.feeLovelace}`);
288
- return this._buildResult(req, ctx, txDetails, { scriptHash, forcedInputsUsed: forcedUsed });
294
+ return this._buildResult(req, ctx, txDetails, { scriptHash, mintScriptHash, forcedInputsUsed: forcedUsed });
289
295
  }
290
296
  catch (error) {
291
297
  logger.error(`buildUnsignedPlutusSpendTransaction error: ${error?.message || error}`);
@@ -345,14 +351,50 @@ class CSLTxBuilder {
345
351
  txb.set_inputs(scriptInputsBuilder);
346
352
  // Collateral + funding UTxO separation (from candidate sender UTxOs only)
347
353
  const { fundingUtxos } = this._setupCollateral(txb, rest);
354
+ // FR-1: Combined spend+mint. When mintActions are present, set up a MintBuilder and
355
+ // (when no extraOutputs handle the assets) fold positive mints into the recipient output.
356
+ const hasMint = !!(req.mintActions && req.mintActions.length > 0 && req.mintingPolicyScript);
357
+ let mintedToPrimaryValue;
358
+ if (hasMint) {
359
+ const { plutusScript: mintScript, cslHash: mintScriptCslHash } = this._computeScriptHash(req.mintingPolicyScript);
360
+ const mintScriptSource = CSL.PlutusScriptSource.new(mintScript);
361
+ const mintBuilder = CSL.MintBuilder.new();
362
+ const mintExUnits = CSL.ExUnits.new(CSL.BigNum.from_str(exUnits.mem), CSL.BigNum.from_str(exUnits.cpu));
363
+ const mintRedeemerData = req.mintRedeemer
364
+ ? this._toPlutusData(req.mintRedeemer)
365
+ : CSL.PlutusData.new_integer(CSL.BigInt.from_str('0'));
366
+ const mintRedeemer = CSL.Redeemer.new(CSL.RedeemerTag.new_mint(), CSL.BigNum.from_str('0'), mintRedeemerData, mintExUnits);
367
+ const mintWitness = CSL.MintWitness.new_plutus_script(mintScriptSource, mintRedeemer);
368
+ const positiveAssetsForPrimary = [];
369
+ const mintScriptHashHex = Buffer.from(mintScriptCslHash.to_bytes()).toString('hex');
370
+ for (const action of req.mintActions) {
371
+ const { assetName } = (0, tx_build_helper_1.parseAssetUnit)(action.assetUnit);
372
+ const cslAssetName = CSL.AssetName.new(Buffer.from(assetName, 'hex'));
373
+ const qtyStr = String(action.quantity);
374
+ const mintQty = qtyStr.startsWith('-')
375
+ ? CSL.Int.new_negative(CSL.BigNum.from_str(qtyStr.slice(1)))
376
+ : CSL.Int.new(CSL.BigNum.from_str(qtyStr));
377
+ mintBuilder.add_asset(mintWitness, cslAssetName, mintQty);
378
+ if (!qtyStr.startsWith('-') && (!req.extraOutputs || req.extraOutputs.length === 0)) {
379
+ positiveAssetsForPrimary.push({ unit: mintScriptHashHex + assetName, quantity: qtyStr });
380
+ }
381
+ }
382
+ txb.set_mint_builder(mintBuilder);
383
+ if (positiveAssetsForPrimary.length > 0) {
384
+ mintedToPrimaryValue = this._buildCslValue('0', positiveAssetsForPrimary);
385
+ }
386
+ }
348
387
  // Create output for recipient with multi-assets from the script UTxO
349
388
  const outputValue = CSL.Value.new(CSL.BigNum.from_str(String(req.lovelaceAmount || const_1.MIN_CHANGE_LOVELACE)));
350
389
  if (scriptNonAdaAssets.length > 0) {
351
390
  outputValue.set_multiasset(this._buildCslMultiAsset(scriptNonAdaAssets));
352
391
  }
353
- const recipientOutput = CSL.TransactionOutput.new(recipientAddress, outputValue);
392
+ const finalOutputValue = mintedToPrimaryValue ? outputValue.checked_add(mintedToPrimaryValue) : outputValue;
393
+ const recipientOutput = CSL.TransactionOutput.new(recipientAddress, finalOutputValue);
354
394
  this._attachInlineDatum(recipientOutput, req.inlineDatum);
355
395
  txb.add_output(recipientOutput);
396
+ // Append extra outputs (FR-2) — each is min-ADA checked before being added.
397
+ this._appendExtraOutputsCsl(txb, req.extraOutputs);
356
398
  // Coin selection from candidate funding UTxOs
357
399
  const cslFundingUtxos = this._mapMultiAssetUtxosToCslUtxos(fundingUtxos);
358
400
  txb.add_inputs_from(cslFundingUtxos, CSL.CoinSelectionStrategyCIP2.LargestFirstMultiAsset);
@@ -500,6 +542,55 @@ class CSLTxBuilder {
500
542
  output.set_plutus_data(this._toPlutusData(datum));
501
543
  }
502
544
  }
545
+ /**
546
+ * FR-3 guard: the CSL builder cannot resolve __INPUT_IDX__ placeholders because
547
+ * CSL's add_inputs_from selects funding internally and we cannot enumerate the
548
+ * resulting input order without a throwaway first-pass build. Reject up-front so
549
+ * consumers get a clear error pointing at the active builder.
550
+ */
551
+ _rejectIndexPlaceholders(req) {
552
+ const candidates = [
553
+ req.plutusScriptExecution?.redeemer,
554
+ req.plutusScriptExecution?.datum,
555
+ req.inlineDatum,
556
+ req.mintRedeemer
557
+ ];
558
+ if (req.extraOutputs) {
559
+ for (const e of req.extraOutputs)
560
+ candidates.push(e.inlineDatum);
561
+ }
562
+ for (const c of candidates) {
563
+ if (c !== undefined && (0, plutus_placeholders_1.containsIndexPlaceholder)(c)) {
564
+ throw new errors_1.TransactionValidationError('Input-index placeholders (__INPUT_IDX:...__) require the Buildooor transaction builder. Pre-resolve indices client-side or set TX_BUILDERS=buildooor.');
565
+ }
566
+ }
567
+ }
568
+ /**
569
+ * Append parsed extraOutputs (FR-2) to a CSL TransactionBuilder, enforcing min-ADA per entry.
570
+ * Mirrors BuildooorTxBuilder._appendExtraOutputs so both engines produce equivalent layouts.
571
+ */
572
+ _appendExtraOutputsCsl(txb, extraOutputs) {
573
+ if (!extraOutputs || extraOutputs.length === 0)
574
+ return;
575
+ const coinsPerByte = this.protocolParameters.coinsPerUtxoSize;
576
+ if (!coinsPerByte) {
577
+ throw new errors_1.TransactionValidationError('Cannot enforce min-ADA on extraOutputs: coinsPerUtxoSize not set in protocol parameters');
578
+ }
579
+ const dataCost = CSL.DataCost.new_coins_per_byte(CSL.BigNum.from_str(String(coinsPerByte)));
580
+ for (let i = 0; i < extraOutputs.length; i++) {
581
+ const extra = extraOutputs[i];
582
+ const addr = CSL.Address.from_bech32(extra.address);
583
+ const value = this._buildCslValue(extra.lovelaceAmount, extra.assets);
584
+ const out = CSL.TransactionOutput.new(addr, value);
585
+ this._attachInlineDatum(out, extra.inlineDatum);
586
+ const requiredMin = CSL.min_ada_for_output(out, dataCost);
587
+ const requestedLovelace = CSL.BigNum.from_str(String(extra.lovelaceAmount));
588
+ if (requestedLovelace.compare(requiredMin) < 0) {
589
+ throw new errors_1.TransactionValidationError(`extraOutputs[${i}].lovelaceAmount (${extra.lovelaceAmount}) is below required min-ADA ${requiredMin.to_str()} for the given address/assets/datum`);
590
+ }
591
+ txb.add_output(out);
592
+ }
593
+ }
503
594
  /** Parse PlutusV3 script hex and compute its hash */
504
595
  _computeScriptHash(scriptHex) {
505
596
  const plutusScript = CSL.PlutusScript.new_v3(Buffer.from(scriptHex, 'hex'));