@aztec/simulator 0.55.1 → 0.56.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.
- package/dest/avm/avm_execution_environment.d.ts +0 -8
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +1 -19
- package/dest/avm/avm_gas.d.ts +2 -2
- package/dest/avm/avm_gas.d.ts.map +1 -1
- package/dest/avm/avm_gas.js +31 -115
- package/dest/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/avm/avm_machine_state.js +6 -6
- package/dest/avm/avm_memory_types.d.ts +35 -7
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_memory_types.js +25 -11
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +5 -6
- package/dest/avm/bytecode_utils.d.ts +1 -2
- package/dest/avm/bytecode_utils.d.ts.map +1 -1
- package/dest/avm/bytecode_utils.js +3 -17
- package/dest/avm/fixtures/index.d.ts +4 -16
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +9 -25
- package/dest/avm/journal/index.d.ts +0 -1
- package/dest/avm/journal/index.d.ts.map +1 -1
- package/dest/avm/journal/index.js +1 -2
- package/dest/avm/journal/journal.d.ts +4 -4
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +14 -13
- package/dest/avm/opcodes/bitwise.d.ts +10 -4
- package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/avm/opcodes/bitwise.js +17 -11
- package/dest/avm/opcodes/commitment.js +2 -2
- package/dest/avm/opcodes/comparators.js +2 -2
- package/dest/avm/opcodes/conversion.d.ts +3 -2
- package/dest/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/avm/opcodes/conversion.js +18 -11
- package/dest/avm/opcodes/environment_getters.d.ts +27 -63
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +75 -80
- package/dest/avm/opcodes/hashing.d.ts +7 -5
- package/dest/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/avm/opcodes/hashing.js +40 -24
- package/dest/avm/opcodes/index.d.ts +3 -0
- package/dest/avm/opcodes/index.d.ts.map +1 -1
- package/dest/avm/opcodes/index.js +4 -1
- package/dest/avm/opcodes/instruction_impl.d.ts +0 -26
- package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction_impl.js +1 -51
- package/dest/avm/opcodes/memory.d.ts +7 -2
- package/dest/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/avm/opcodes/memory.js +23 -6
- package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +1 -1
- package/dest/avm/opcodes/multi_scalar_mul.js +7 -6
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +5 -24
- package/dest/avm/serialization/instruction_serialization.d.ts +48 -60
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +50 -63
- package/dest/avm/test_utils.d.ts +8 -8
- package/dest/avm/test_utils.d.ts.map +1 -1
- package/dest/avm/test_utils.js +15 -15
- package/dest/client/simulator.d.ts +1 -1
- package/dest/client/test_utils.d.ts.map +1 -1
- package/dest/client/test_utils.js +12 -6
- package/dest/client/unconstrained_execution.d.ts +2 -2
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +3 -3
- package/dest/public/enqueued_call_simulator.d.ts +43 -0
- package/dest/public/enqueued_call_simulator.d.ts.map +1 -0
- package/dest/public/enqueued_call_simulator.js +155 -0
- package/dest/public/enqueued_calls_processor.d.ts +44 -0
- package/dest/public/enqueued_calls_processor.d.ts.map +1 -0
- package/dest/public/enqueued_calls_processor.js +218 -0
- package/dest/public/execution.d.ts +4 -9
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +5 -10
- package/dest/public/executor.d.ts +3 -5
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +5 -9
- package/dest/public/hints_builder.d.ts +4 -3
- package/dest/public/hints_builder.d.ts.map +1 -1
- package/dest/public/hints_builder.js +4 -4
- package/dest/public/index.d.ts +3 -2
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +3 -3
- package/dest/public/public_db_sources.d.ts +17 -24
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +58 -65
- package/dest/public/public_kernel.d.ts +3 -9
- package/dest/public/public_kernel.d.ts.map +1 -1
- package/dest/public/public_kernel.js +13 -40
- package/dest/public/public_kernel_circuit_simulator.d.ts +5 -11
- package/dest/public/public_kernel_circuit_simulator.d.ts.map +1 -1
- package/dest/public/public_kernel_tail_simulator.d.ts +19 -0
- package/dest/public/public_kernel_tail_simulator.d.ts.map +1 -0
- package/dest/public/public_kernel_tail_simulator.js +45 -0
- package/dest/public/public_processor.d.ts +8 -5
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +31 -48
- package/dest/public/public_processor_metrics.d.ts +3 -3
- package/dest/public/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor_metrics.js +1 -1
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +4 -8
- package/package.json +9 -9
- package/src/avm/avm_execution_environment.ts +1 -21
- package/src/avm/avm_gas.ts +30 -114
- package/src/avm/avm_machine_state.ts +5 -5
- package/src/avm/avm_memory_types.ts +31 -9
- package/src/avm/avm_simulator.ts +4 -5
- package/src/avm/bytecode_utils.ts +2 -17
- package/src/avm/fixtures/index.ts +12 -44
- package/src/avm/journal/index.ts +0 -1
- package/src/avm/journal/journal.ts +13 -18
- package/src/avm/opcodes/bitwise.ts +14 -10
- package/src/avm/opcodes/commitment.ts +1 -1
- package/src/avm/opcodes/comparators.ts +2 -2
- package/src/avm/opcodes/conversion.ts +19 -10
- package/src/avm/opcodes/environment_getters.ts +72 -99
- package/src/avm/opcodes/hashing.ts +47 -22
- package/src/avm/opcodes/index.ts +3 -0
- package/src/avm/opcodes/instruction_impl.ts +0 -62
- package/src/avm/opcodes/memory.ts +20 -6
- package/src/avm/opcodes/multi_scalar_mul.ts +6 -6
- package/src/avm/serialization/bytecode_serialization.ts +11 -33
- package/src/avm/serialization/instruction_serialization.ts +5 -18
- package/src/avm/test_utils.ts +20 -16
- package/src/client/test_utils.ts +36 -9
- package/src/client/unconstrained_execution.ts +3 -8
- package/src/public/enqueued_call_simulator.ts +336 -0
- package/src/public/enqueued_calls_processor.ts +388 -0
- package/src/public/execution.ts +5 -12
- package/src/public/executor.ts +4 -12
- package/src/public/hints_builder.ts +14 -12
- package/src/public/index.ts +3 -2
- package/src/public/public_db_sources.ts +62 -67
- package/src/public/public_kernel.ts +15 -49
- package/src/public/public_kernel_circuit_simulator.ts +6 -10
- package/src/public/public_kernel_tail_simulator.ts +106 -0
- package/src/public/public_processor.ts +61 -86
- package/src/public/public_processor_metrics.ts +3 -3
- package/src/public/side_effect_trace.ts +5 -12
- package/dest/avm/journal/host_storage.d.ts +0 -13
- package/dest/avm/journal/host_storage.d.ts.map +0 -1
- package/dest/avm/journal/host_storage.js +0 -13
- package/dest/avm/opcodes/context_getters.d.ts +0 -15
- package/dest/avm/opcodes/context_getters.d.ts.map +0 -1
- package/dest/avm/opcodes/context_getters.js +0 -19
- package/dest/public/abstract_phase_manager.d.ts +0 -93
- package/dest/public/abstract_phase_manager.d.ts.map +0 -1
- package/dest/public/abstract_phase_manager.js +0 -285
- package/dest/public/app_logic_phase_manager.d.ts +0 -25
- package/dest/public/app_logic_phase_manager.d.ts.map +0 -1
- package/dest/public/app_logic_phase_manager.js +0 -52
- package/dest/public/phase_manager_factory.d.ts +0 -18
- package/dest/public/phase_manager_factory.d.ts.map +0 -1
- package/dest/public/phase_manager_factory.js +0 -56
- package/dest/public/setup_phase_manager.d.ts +0 -25
- package/dest/public/setup_phase_manager.d.ts.map +0 -1
- package/dest/public/setup_phase_manager.js +0 -39
- package/dest/public/tail_phase_manager.d.ts +0 -23
- package/dest/public/tail_phase_manager.d.ts.map +0 -1
- package/dest/public/tail_phase_manager.js +0 -50
- package/dest/public/teardown_phase_manager.d.ts +0 -27
- package/dest/public/teardown_phase_manager.d.ts.map +0 -1
- package/dest/public/teardown_phase_manager.js +0 -56
- package/src/avm/journal/host_storage.ts +0 -14
- package/src/avm/opcodes/context_getters.ts +0 -23
- package/src/public/abstract_phase_manager.ts +0 -522
- package/src/public/app_logic_phase_manager.ts +0 -81
- package/src/public/phase_manager_factory.ts +0 -126
- package/src/public/setup_phase_manager.ts +0 -61
- package/src/public/tail_phase_manager.ts +0 -127
- package/src/public/teardown_phase_manager.ts +0 -86
|
@@ -3,9 +3,6 @@ import {
|
|
|
3
3
|
NestedProcessReturnValues,
|
|
4
4
|
type ProcessedTx,
|
|
5
5
|
type ProcessedTxHandler,
|
|
6
|
-
PublicKernelType,
|
|
7
|
-
type PublicProvingRequest,
|
|
8
|
-
type SimulationError,
|
|
9
6
|
Tx,
|
|
10
7
|
type TxValidator,
|
|
11
8
|
makeProcessedTx,
|
|
@@ -17,7 +14,6 @@ import {
|
|
|
17
14
|
FEE_JUICE_ADDRESS,
|
|
18
15
|
type GlobalVariables,
|
|
19
16
|
type Header,
|
|
20
|
-
type KernelCircuitPublicInputs,
|
|
21
17
|
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
22
18
|
PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
23
19
|
PublicDataUpdateRequest,
|
|
@@ -25,22 +21,16 @@ import {
|
|
|
25
21
|
import { times } from '@aztec/foundation/collection';
|
|
26
22
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
27
23
|
import { Timer } from '@aztec/foundation/timer';
|
|
28
|
-
import { type ProtocolArtifact } from '@aztec/noir-protocol-circuits-types';
|
|
29
24
|
import { ClassRegistererAddress } from '@aztec/protocol-contracts/class-registerer';
|
|
30
|
-
import {
|
|
31
|
-
PublicExecutor,
|
|
32
|
-
type PublicStateDB,
|
|
33
|
-
type SimulationProvider,
|
|
34
|
-
computeFeePayerBalanceLeafSlot,
|
|
35
|
-
computeFeePayerBalanceStorageSlot,
|
|
36
|
-
} from '@aztec/simulator';
|
|
37
25
|
import { Attributes, type TelemetryClient, type Tracer, trackSpan } from '@aztec/telemetry-client';
|
|
38
26
|
import { type ContractDataSource } from '@aztec/types/contracts';
|
|
39
27
|
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
40
28
|
|
|
41
|
-
import { type
|
|
42
|
-
import {
|
|
43
|
-
import {
|
|
29
|
+
import { type SimulationProvider } from '../providers/index.js';
|
|
30
|
+
import { EnqueuedCallsProcessor } from './enqueued_calls_processor.js';
|
|
31
|
+
import { PublicExecutor } from './executor.js';
|
|
32
|
+
import { computeFeePayerBalanceLeafSlot, computeFeePayerBalanceStorageSlot } from './fee_payment.js';
|
|
33
|
+
import { WorldStateDB } from './public_db_sources.js';
|
|
44
34
|
import { RealPublicKernelCircuitSimulator } from './public_kernel.js';
|
|
45
35
|
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
46
36
|
import { PublicProcessorMetrics } from './public_processor_metrics.js';
|
|
@@ -65,25 +55,18 @@ export class PublicProcessorFactory {
|
|
|
65
55
|
public create(maybeHistoricalHeader: Header | undefined, globalVariables: GlobalVariables): PublicProcessor {
|
|
66
56
|
const { merkleTree, telemetryClient } = this;
|
|
67
57
|
const historicalHeader = maybeHistoricalHeader ?? merkleTree.getInitialHeader();
|
|
68
|
-
const publicContractsDB = new ContractsDataSourcePublicDB(this.contractDataSource);
|
|
69
58
|
|
|
70
|
-
const
|
|
71
|
-
const
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
worldStateDB,
|
|
76
|
-
historicalHeader,
|
|
77
|
-
telemetryClient,
|
|
78
|
-
);
|
|
79
|
-
return new PublicProcessor(
|
|
59
|
+
const worldStateDB = new WorldStateDB(merkleTree, this.contractDataSource);
|
|
60
|
+
const publicExecutor = new PublicExecutor(worldStateDB, historicalHeader, telemetryClient);
|
|
61
|
+
const publicKernelSimulator = new RealPublicKernelCircuitSimulator(this.simulator);
|
|
62
|
+
|
|
63
|
+
return PublicProcessor.create(
|
|
80
64
|
merkleTree,
|
|
81
65
|
publicExecutor,
|
|
82
|
-
|
|
66
|
+
publicKernelSimulator,
|
|
83
67
|
globalVariables,
|
|
84
68
|
historicalHeader,
|
|
85
|
-
|
|
86
|
-
worldStatePublicDB,
|
|
69
|
+
worldStateDB,
|
|
87
70
|
this.telemetryClient,
|
|
88
71
|
);
|
|
89
72
|
}
|
|
@@ -101,14 +84,44 @@ export class PublicProcessor {
|
|
|
101
84
|
protected publicKernel: PublicKernelCircuitSimulator,
|
|
102
85
|
protected globalVariables: GlobalVariables,
|
|
103
86
|
protected historicalHeader: Header,
|
|
104
|
-
protected
|
|
105
|
-
protected
|
|
87
|
+
protected worldStateDB: WorldStateDB,
|
|
88
|
+
protected enqueuedCallsProcessor: EnqueuedCallsProcessor,
|
|
106
89
|
telemetryClient: TelemetryClient,
|
|
107
90
|
private log = createDebugLogger('aztec:sequencer:public-processor'),
|
|
108
91
|
) {
|
|
109
92
|
this.metrics = new PublicProcessorMetrics(telemetryClient, 'PublicProcessor');
|
|
110
93
|
}
|
|
111
94
|
|
|
95
|
+
static create(
|
|
96
|
+
db: MerkleTreeOperations,
|
|
97
|
+
publicExecutor: PublicExecutor,
|
|
98
|
+
publicKernelSimulator: PublicKernelCircuitSimulator,
|
|
99
|
+
globalVariables: GlobalVariables,
|
|
100
|
+
historicalHeader: Header,
|
|
101
|
+
worldStateDB: WorldStateDB,
|
|
102
|
+
telemetryClient: TelemetryClient,
|
|
103
|
+
) {
|
|
104
|
+
const enqueuedCallsProcessor = EnqueuedCallsProcessor.create(
|
|
105
|
+
db,
|
|
106
|
+
publicExecutor,
|
|
107
|
+
publicKernelSimulator,
|
|
108
|
+
globalVariables,
|
|
109
|
+
historicalHeader,
|
|
110
|
+
worldStateDB,
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
return new PublicProcessor(
|
|
114
|
+
db,
|
|
115
|
+
publicExecutor,
|
|
116
|
+
publicKernelSimulator,
|
|
117
|
+
globalVariables,
|
|
118
|
+
historicalHeader,
|
|
119
|
+
worldStateDB,
|
|
120
|
+
enqueuedCallsProcessor,
|
|
121
|
+
telemetryClient,
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
112
125
|
get tracer(): Tracer {
|
|
113
126
|
return this.metrics.tracer;
|
|
114
127
|
}
|
|
@@ -151,7 +164,7 @@ export class PublicProcessor {
|
|
|
151
164
|
processedTx.finalPublicDataUpdateRequests = await this.createFinalDataUpdateRequests(processedTx);
|
|
152
165
|
|
|
153
166
|
// Commit the state updates from this transaction
|
|
154
|
-
await this.
|
|
167
|
+
await this.worldStateDB.commit();
|
|
155
168
|
validateProcessedTx(processedTx);
|
|
156
169
|
|
|
157
170
|
// Re-validate the transaction
|
|
@@ -217,14 +230,14 @@ export class PublicProcessor {
|
|
|
217
230
|
const balance =
|
|
218
231
|
existingBalanceWriteIndex > -1
|
|
219
232
|
? finalPublicDataUpdateRequests[existingBalanceWriteIndex].newValue
|
|
220
|
-
: await this.
|
|
233
|
+
: await this.worldStateDB.storageRead(feeJuiceAddress, balanceSlot);
|
|
221
234
|
|
|
222
235
|
if (balance.lt(txFee)) {
|
|
223
236
|
throw new Error(`Not enough balance for fee payer to pay for transaction (got ${balance} needs ${txFee})`);
|
|
224
237
|
}
|
|
225
238
|
|
|
226
239
|
const updatedBalance = balance.sub(txFee);
|
|
227
|
-
await this.
|
|
240
|
+
await this.worldStateDB.storageWrite(feeJuiceAddress, balanceSlot, updatedBalance);
|
|
228
241
|
|
|
229
242
|
finalPublicDataUpdateRequests[
|
|
230
243
|
existingBalanceWriteIndex > -1 ? existingBalanceWriteIndex : MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
|
|
@@ -238,69 +251,31 @@ export class PublicProcessor {
|
|
|
238
251
|
}))
|
|
239
252
|
private async processTxWithPublicCalls(tx: Tx): Promise<[ProcessedTx, NestedProcessReturnValues[]]> {
|
|
240
253
|
const timer = new Timer();
|
|
241
|
-
let returnValues: NestedProcessReturnValues[] = [];
|
|
242
|
-
const publicProvingRequests: PublicProvingRequest[] = [];
|
|
243
|
-
let phase: AbstractPhaseManager | undefined = PhaseManagerFactory.phaseFromTx(
|
|
244
|
-
tx,
|
|
245
|
-
this.db,
|
|
246
|
-
this.publicExecutor,
|
|
247
|
-
this.publicKernel,
|
|
248
|
-
this.globalVariables,
|
|
249
|
-
this.historicalHeader,
|
|
250
|
-
this.publicContractsDB,
|
|
251
|
-
this.publicStateDB,
|
|
252
|
-
);
|
|
253
|
-
this.log.debug(`Beginning processing in phase ${phase?.phase} for tx ${tx.getTxHash()}`);
|
|
254
|
-
let publicKernelPublicInput = tx.data.toPublicKernelCircuitPublicInputs();
|
|
255
|
-
let lastKernelArtifact: ProtocolArtifact = 'PrivateKernelTailToPublicArtifact'; // All txs with public calls must carry tail to public proofs
|
|
256
|
-
let finalKernelOutput: KernelCircuitPublicInputs | undefined;
|
|
257
|
-
let revertReason: SimulationError | undefined;
|
|
258
|
-
const gasUsed: ProcessedTx['gasUsed'] = {};
|
|
259
|
-
let phaseCount = 0;
|
|
260
|
-
while (phase) {
|
|
261
|
-
phaseCount++;
|
|
262
|
-
const phaseTimer = new Timer();
|
|
263
|
-
const output = await phase.handle(tx, publicKernelPublicInput, lastKernelArtifact);
|
|
264
|
-
|
|
265
|
-
if (output.revertReason) {
|
|
266
|
-
this.metrics.recordRevertedPhase(phase.phase);
|
|
267
|
-
} else {
|
|
268
|
-
this.metrics.recordPhaseDuration(phase.phase, phaseTimer.ms());
|
|
269
|
-
}
|
|
270
254
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
returnValues = output.returnValues;
|
|
274
|
-
}
|
|
275
|
-
publicProvingRequests.push(...output.publicProvingRequests);
|
|
276
|
-
publicKernelPublicInput = output.publicKernelOutput;
|
|
277
|
-
lastKernelArtifact = output.lastKernelArtifact;
|
|
278
|
-
finalKernelOutput = output.finalKernelOutput;
|
|
279
|
-
revertReason ??= output.revertReason;
|
|
280
|
-
phase = PhaseManagerFactory.phaseFromOutput(
|
|
281
|
-
publicKernelPublicInput,
|
|
282
|
-
phase,
|
|
283
|
-
this.db,
|
|
284
|
-
this.publicExecutor,
|
|
285
|
-
this.publicKernel,
|
|
286
|
-
this.globalVariables,
|
|
287
|
-
this.historicalHeader,
|
|
288
|
-
this.publicContractsDB,
|
|
289
|
-
this.publicStateDB,
|
|
290
|
-
);
|
|
291
|
-
}
|
|
255
|
+
const { tailKernelOutput, returnValues, revertReason, provingRequests, gasUsed, processedPhases } =
|
|
256
|
+
await this.enqueuedCallsProcessor.process(tx);
|
|
292
257
|
|
|
293
|
-
if (!
|
|
258
|
+
if (!tailKernelOutput) {
|
|
294
259
|
this.metrics.recordFailedTx();
|
|
295
260
|
throw new Error('Final public kernel was not executed.');
|
|
296
261
|
}
|
|
297
262
|
|
|
263
|
+
processedPhases.forEach(phase => {
|
|
264
|
+
if (phase.revertReason) {
|
|
265
|
+
this.metrics.recordRevertedPhase(phase.phase);
|
|
266
|
+
} else {
|
|
267
|
+
this.metrics.recordPhaseDuration(phase.phase, phase.durationMs);
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
|
|
298
271
|
this.metrics.recordClassRegistration(
|
|
299
272
|
...ContractClassRegisteredEvent.fromLogs(tx.unencryptedLogs.unrollLogs(), ClassRegistererAddress),
|
|
300
273
|
);
|
|
301
274
|
|
|
275
|
+
const phaseCount = processedPhases.length;
|
|
302
276
|
this.metrics.recordTx(phaseCount, timer.ms());
|
|
303
|
-
|
|
277
|
+
|
|
278
|
+
const processedTx = makeProcessedTx(tx, tailKernelOutput, provingRequests, revertReason, gasUsed);
|
|
304
279
|
return [processedTx, returnValues];
|
|
305
280
|
}
|
|
306
281
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type PublicKernelPhase } from '@aztec/circuit-types';
|
|
2
2
|
import { type ContractClassRegisteredEvent } from '@aztec/circuits.js';
|
|
3
3
|
import {
|
|
4
4
|
Attributes,
|
|
@@ -56,7 +56,7 @@ export class PublicProcessorMetrics {
|
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
recordPhaseDuration(phaseName:
|
|
59
|
+
recordPhaseDuration(phaseName: PublicKernelPhase, durationMs: number) {
|
|
60
60
|
this.phaseCount.add(1, { [Attributes.TX_PHASE_NAME]: phaseName, [Attributes.OK]: true });
|
|
61
61
|
this.phaseDuration.record(Math.ceil(durationMs), { [Attributes.TX_PHASE_NAME]: phaseName });
|
|
62
62
|
}
|
|
@@ -75,7 +75,7 @@ export class PublicProcessorMetrics {
|
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
recordRevertedPhase(phaseName:
|
|
78
|
+
recordRevertedPhase(phaseName: PublicKernelPhase) {
|
|
79
79
|
this.phaseCount.add(1, { [Attributes.TX_PHASE_NAME]: phaseName, [Attributes.OK]: false });
|
|
80
80
|
}
|
|
81
81
|
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
LogHash,
|
|
15
15
|
NoteHash,
|
|
16
16
|
Nullifier,
|
|
17
|
-
type
|
|
17
|
+
type PublicInnerCallRequest,
|
|
18
18
|
ReadRequest,
|
|
19
19
|
TreeLeafReadRequest,
|
|
20
20
|
} from '@aztec/circuits.js';
|
|
@@ -53,7 +53,7 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
53
53
|
private allUnencryptedLogs: UnencryptedL2Log[] = [];
|
|
54
54
|
private unencryptedLogsHashes: LogHash[] = [];
|
|
55
55
|
|
|
56
|
-
private publicCallRequests:
|
|
56
|
+
private publicCallRequests: PublicInnerCallRequest[] = [];
|
|
57
57
|
|
|
58
58
|
private gotContractInstances: ContractInstanceWithAddress[] = [];
|
|
59
59
|
|
|
@@ -183,10 +183,8 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
183
183
|
const basicLogHash = Fr.fromBuffer(ulog.hash());
|
|
184
184
|
this.unencryptedLogs.push(ulog);
|
|
185
185
|
this.allUnencryptedLogs.push(ulog);
|
|
186
|
-
//
|
|
187
|
-
// The
|
|
188
|
-
// we need to add four to the length here.
|
|
189
|
-
// https://github.com/AztecProtocol/aztec-packages/issues/6578#issuecomment-2125003435
|
|
186
|
+
// This length is for charging DA and is checked on-chain - has to be length of log preimage + 4 bytes.
|
|
187
|
+
// The .length call also has a +4 but that is unrelated
|
|
190
188
|
this.unencryptedLogsHashes.push(new LogHash(basicLogHash, this.sideEffectCounter, new Fr(ulog.length + 4)));
|
|
191
189
|
this.logger.debug(`NEW_UNENCRYPTED_LOG cnt: ${this.sideEffectCounter}`);
|
|
192
190
|
this.incrementSideEffectCounter();
|
|
@@ -331,10 +329,5 @@ function createPublicExecutionRequest(avmEnvironment: AvmExecutionEnvironment):
|
|
|
331
329
|
isDelegateCall: avmEnvironment.isDelegateCall,
|
|
332
330
|
isStaticCall: avmEnvironment.isStaticCall,
|
|
333
331
|
});
|
|
334
|
-
return new PublicExecutionRequest(
|
|
335
|
-
avmEnvironment.address,
|
|
336
|
-
callContext,
|
|
337
|
-
// execution request does not contain AvmContextInputs prefix
|
|
338
|
-
avmEnvironment.getCalldataWithoutPrefix(),
|
|
339
|
-
);
|
|
332
|
+
return new PublicExecutionRequest(avmEnvironment.address, callContext, avmEnvironment.calldata);
|
|
340
333
|
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type CommitmentsDB, type PublicContractsDB, type PublicStateDB } from '../../public/db_interfaces.js';
|
|
2
|
-
/**
|
|
3
|
-
* Host storage
|
|
4
|
-
*
|
|
5
|
-
* A wrapper around the node dbs
|
|
6
|
-
*/
|
|
7
|
-
export declare class HostStorage {
|
|
8
|
-
readonly publicStateDb: PublicStateDB;
|
|
9
|
-
readonly contractsDb: PublicContractsDB;
|
|
10
|
-
readonly commitmentsDb: CommitmentsDB;
|
|
11
|
-
constructor(publicStateDb: PublicStateDB, contractsDb: PublicContractsDB, commitmentsDb: CommitmentsDB);
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=host_storage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"host_storage.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/host_storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE/G;;;;GAIG;AACH,qBAAa,WAAW;aAEJ,aAAa,EAAE,aAAa;aAC5B,WAAW,EAAE,iBAAiB;aAC9B,aAAa,EAAE,aAAa;gBAF5B,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EAAE,aAAa;CAE/C"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Host storage
|
|
3
|
-
*
|
|
4
|
-
* A wrapper around the node dbs
|
|
5
|
-
*/
|
|
6
|
-
export class HostStorage {
|
|
7
|
-
constructor(publicStateDb, contractsDb, commitmentsDb) {
|
|
8
|
-
this.publicStateDb = publicStateDb;
|
|
9
|
-
this.contractsDb = contractsDb;
|
|
10
|
-
this.commitmentsDb = commitmentsDb;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdF9zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F2bS9qb3VybmFsL2hvc3Rfc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFDa0IsYUFBNEIsRUFDNUIsV0FBOEIsRUFDOUIsYUFBNEI7UUFGNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQzlCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQzNDLENBQUM7Q0FDTCJ9
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { AvmContext } from '../avm_context.js';
|
|
2
|
-
import { type MemoryValue } from '../avm_memory_types.js';
|
|
3
|
-
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
4
|
-
import { GetterInstruction } from './instruction_impl.js';
|
|
5
|
-
export declare class L2GasLeft extends GetterInstruction {
|
|
6
|
-
static type: string;
|
|
7
|
-
static readonly opcode: Opcode;
|
|
8
|
-
protected getValue(context: AvmContext): MemoryValue;
|
|
9
|
-
}
|
|
10
|
-
export declare class DAGasLeft extends GetterInstruction {
|
|
11
|
-
static type: string;
|
|
12
|
-
static readonly opcode: Opcode;
|
|
13
|
-
protected getValue(context: AvmContext): MemoryValue;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=context_getters.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context_getters.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/context_getters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAS,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,qBAAa,SAAU,SAAQ,iBAAiB;IAC9C,MAAM,CAAC,IAAI,EAAE,MAAM,CAAe;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAoB;IAGlD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW;CAGrD;AAED,qBAAa,SAAU,SAAQ,iBAAiB;IAC9C,MAAM,CAAC,IAAI,EAAE,MAAM,CAAe;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAoB;IAElD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW;CAGrD"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Field } from '../avm_memory_types.js';
|
|
2
|
-
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
3
|
-
import { GetterInstruction } from './instruction_impl.js';
|
|
4
|
-
export class L2GasLeft extends GetterInstruction {
|
|
5
|
-
// TODO(@spalladino) Protocol specs specifies that the value should be an Uint32, not a Field.
|
|
6
|
-
getValue(context) {
|
|
7
|
-
return new Field(context.machineState.l2GasLeft);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
L2GasLeft.type = 'L2GASLEFT';
|
|
11
|
-
L2GasLeft.opcode = Opcode.L2GASLEFT;
|
|
12
|
-
export class DAGasLeft extends GetterInstruction {
|
|
13
|
-
getValue(context) {
|
|
14
|
-
return new Field(context.machineState.daGasLeft);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
DAGasLeft.type = 'DAGASLEFT';
|
|
18
|
-
DAGasLeft.opcode = Opcode.DAGASLEFT;
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dF9nZXR0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F2bS9vcGNvZGVzL2NvbnRleHRfZ2V0dGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxNQUFNLE9BQU8sU0FBVSxTQUFRLGlCQUFpQjtJQUk5Qyw4RkFBOEY7SUFDcEYsUUFBUSxDQUFDLE9BQW1CO1FBQ3BDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuRCxDQUFDOztBQU5NLGNBQUksR0FBVyxXQUFXLENBQUM7QUFDbEIsZ0JBQU0sR0FBVyxNQUFNLENBQUMsU0FBUyxDQUFDO0FBUXBELE1BQU0sT0FBTyxTQUFVLFNBQVEsaUJBQWlCO0lBSXBDLFFBQVEsQ0FBQyxPQUFtQjtRQUNwQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7QUFMTSxjQUFJLEdBQVcsV0FBVyxDQUFDO0FBQ2xCLGdCQUFNLEdBQVcsTUFBTSxDQUFDLFNBQVMsQ0FBQyJ9
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { type AvmProvingRequest, type NestedProcessReturnValues, type PublicExecutionRequest, type PublicKernelNonTailRequest, PublicKernelType, type PublicProvingRequest, type SimulationError, type Tx, type UnencryptedFunctionL2Logs } from '@aztec/circuit-types';
|
|
3
|
-
import { type AvmExecutionHints, Fr, Gas, type GlobalVariables, type Header, type KernelCircuitPublicInputs, PublicCallData, PublicCallStackItem, PublicKernelCircuitPrivateInputs, type PublicKernelCircuitPublicInputs, PublicKernelData } from '@aztec/circuits.js';
|
|
4
|
-
import { type DebugLogger } from '@aztec/foundation/log';
|
|
5
|
-
import { type ProtocolArtifact } from '@aztec/noir-protocol-circuits-types';
|
|
6
|
-
import { type PublicExecutionResult, type PublicExecutor } from '@aztec/simulator';
|
|
7
|
-
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
8
|
-
import { HintsBuilder } from './hints_builder.js';
|
|
9
|
-
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
10
|
-
export declare const PhaseIsRevertible: Record<PublicKernelType, boolean>;
|
|
11
|
-
export type PublicProvingInformation = {
|
|
12
|
-
functionName: string;
|
|
13
|
-
calldata: Fr[];
|
|
14
|
-
bytecode: Buffer;
|
|
15
|
-
inputs: PublicKernelCircuitPrivateInputs;
|
|
16
|
-
avmHints: AvmExecutionHints;
|
|
17
|
-
};
|
|
18
|
-
export declare function makeAvmProvingRequest(info: PublicProvingInformation, kernelType: PublicKernelNonTailRequest['type']): AvmProvingRequest;
|
|
19
|
-
export type TxPublicCallsResult = {
|
|
20
|
-
/** Inputs to be used for proving */
|
|
21
|
-
publicProvingInformation: PublicProvingInformation[];
|
|
22
|
-
/** The public kernel output at the end of the Tx */
|
|
23
|
-
kernelOutput: PublicKernelCircuitPublicInputs;
|
|
24
|
-
/** The last circuit ran by this phase */
|
|
25
|
-
lastKernelArtifact: ProtocolArtifact;
|
|
26
|
-
/** Unencrypted logs generated during the execution of this Tx */
|
|
27
|
-
newUnencryptedLogs: UnencryptedFunctionL2Logs[];
|
|
28
|
-
/** Revert reason, if any */
|
|
29
|
-
revertReason?: SimulationError;
|
|
30
|
-
/** Return values of simulating complete callstack */
|
|
31
|
-
returnValues: NestedProcessReturnValues[];
|
|
32
|
-
/** Gas used during the execution this Tx */
|
|
33
|
-
gasUsed?: Gas;
|
|
34
|
-
};
|
|
35
|
-
export type PhaseResult = {
|
|
36
|
-
/** The collection of public proving requests */
|
|
37
|
-
publicProvingRequests: PublicProvingRequest[];
|
|
38
|
-
/** The output of the public kernel circuit simulation for this phase */
|
|
39
|
-
publicKernelOutput: PublicKernelCircuitPublicInputs;
|
|
40
|
-
/** The last circuit ran by this phase */
|
|
41
|
-
lastKernelArtifact: ProtocolArtifact;
|
|
42
|
-
/** The final output of the public kernel circuit for this phase */
|
|
43
|
-
finalKernelOutput?: KernelCircuitPublicInputs;
|
|
44
|
-
/** Revert reason, if any */
|
|
45
|
-
revertReason?: SimulationError;
|
|
46
|
-
/** Return values of simulating complete callstack */
|
|
47
|
-
returnValues: NestedProcessReturnValues[];
|
|
48
|
-
/** Gas used during the execution this phase */
|
|
49
|
-
gasUsed?: Gas;
|
|
50
|
-
};
|
|
51
|
-
export declare abstract class AbstractPhaseManager {
|
|
52
|
-
protected db: MerkleTreeOperations;
|
|
53
|
-
protected publicExecutor: PublicExecutor;
|
|
54
|
-
protected publicKernel: PublicKernelCircuitSimulator;
|
|
55
|
-
protected globalVariables: GlobalVariables;
|
|
56
|
-
protected historicalHeader: Header;
|
|
57
|
-
phase: PublicKernelType;
|
|
58
|
-
protected hintsBuilder: HintsBuilder;
|
|
59
|
-
protected log: DebugLogger;
|
|
60
|
-
constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, phase: PublicKernelType);
|
|
61
|
-
/**
|
|
62
|
-
* @param tx - the tx to be processed
|
|
63
|
-
* @param publicKernelPublicInputs - the output of the public kernel circuit for the previous phase
|
|
64
|
-
*/
|
|
65
|
-
abstract handle(tx: Tx, publicKernelPublicInputs: PublicKernelCircuitPublicInputs, previousKernelArtifact: ProtocolArtifact): Promise<PhaseResult>;
|
|
66
|
-
static extractEnqueuedPublicCallsByPhase(tx: Tx): Record<PublicKernelType, PublicExecutionRequest[]>;
|
|
67
|
-
protected extractEnqueuedPublicCalls(tx: Tx): PublicExecutionRequest[];
|
|
68
|
-
protected processEnqueuedPublicCalls(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs, previousKernelArtifact: ProtocolArtifact): Promise<TxPublicCallsResult>;
|
|
69
|
-
/** Returns all pending private and public nullifiers. */
|
|
70
|
-
private getSiloedPendingNullifiers;
|
|
71
|
-
protected getAvailableGas(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs): Gas;
|
|
72
|
-
protected getTransactionFee(_tx: Tx, _previousPublicKernelOutput: PublicKernelCircuitPublicInputs): Fr;
|
|
73
|
-
private runKernelCircuit;
|
|
74
|
-
protected getPreviousKernelData(previousOutput: PublicKernelCircuitPublicInputs, previousCircuit: ProtocolArtifact): PublicKernelData;
|
|
75
|
-
protected getPublicCallStackItem(result: PublicExecutionResult, isExecutionRequest?: boolean): Promise<PublicCallStackItem>;
|
|
76
|
-
/**
|
|
77
|
-
* Looks at the side effects of a transaction and returns the highest counter
|
|
78
|
-
* @param tx - A transaction
|
|
79
|
-
* @returns The highest side effect counter in the transaction so far
|
|
80
|
-
*/
|
|
81
|
-
static getMaxSideEffectCounter(inputs: PublicKernelCircuitPublicInputs): number;
|
|
82
|
-
protected getBytecodeHash(_result: PublicExecutionResult): Promise<Fr>;
|
|
83
|
-
/**
|
|
84
|
-
* Calculates the PublicCircuitOutput for this execution result along with its proof,
|
|
85
|
-
* and assembles a PublicCallData object from it.
|
|
86
|
-
* @param result - The execution result.
|
|
87
|
-
* @param preimages - The preimages of the callstack items.
|
|
88
|
-
* @param isExecutionRequest - Whether the current callstack item should be considered a public fn execution request.
|
|
89
|
-
* @returns A corresponding PublicCallData object.
|
|
90
|
-
*/
|
|
91
|
-
protected getPublicCallData(result: PublicExecutionResult, isExecutionRequest?: boolean): Promise<PublicCallData>;
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=abstract_phase_manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abstract_phase_manager.d.ts","sourceRoot":"","sources":["../../src/public/abstract_phase_manager.ts"],"names":[],"mappings":";AAAA,OAAO,EAEL,KAAK,iBAAiB,EAEtB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,EAAE,EACP,KAAK,yBAAyB,EAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,iBAAiB,EAItB,EAAE,EAEF,GAAG,EACH,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,yBAAyB,EAiB9B,cAAc,EAEd,mBAAmB,EAEnB,gCAAgC,EAChC,KAAK,+BAA+B,EACpC,gBAAgB,EAMjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EACL,KAAK,gBAAgB,EAKtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EAGpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEzF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAM/D,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,EAAE,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,gCAAgC,CAAC;IACzC,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,wBAAwB,EAC9B,UAAU,EAAE,0BAA0B,CAAC,MAAM,CAAC,GAC7C,iBAAiB,CAYnB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,oCAAoC;IACpC,wBAAwB,EAAE,wBAAwB,EAAE,CAAC;IACrD,oDAAoD;IACpD,YAAY,EAAE,+BAA+B,CAAC;IAC9C,yCAAyC;IACzC,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,iEAAiE;IACjE,kBAAkB,EAAE,yBAAyB,EAAE,CAAC;IAChD,4BAA4B;IAC5B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,qDAAqD;IACrD,YAAY,EAAE,yBAAyB,EAAE,CAAC;IAC1C,4CAA4C;IAC5C,OAAO,CAAC,EAAE,GAAG,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,gDAAgD;IAChD,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;IAC9C,wEAAwE;IACxE,kBAAkB,EAAE,+BAA+B,CAAC;IACpD,yCAAyC;IACzC,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;IAC9C,4BAA4B;IAC5B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,qDAAqD;IACrD,YAAY,EAAE,yBAAyB,EAAE,CAAC;IAC1C,+CAA+C;IAC/C,OAAO,CAAC,EAAE,GAAG,CAAC;CACf,CAAC;AAEF,8BAAsB,oBAAoB;IAItC,SAAS,CAAC,EAAE,EAAE,oBAAoB;IAClC,SAAS,CAAC,cAAc,EAAE,cAAc;IACxC,SAAS,CAAC,YAAY,EAAE,4BAA4B;IACpD,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,SAAS,CAAC,gBAAgB,EAAE,MAAM;IAC3B,KAAK,EAAE,gBAAgB;IARhC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACrC,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC;gBAEf,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EAC3B,KAAK,EAAE,gBAAgB;IAMhC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CACb,EAAE,EAAE,EAAE,EACN,wBAAwB,EAAE,+BAA+B,EACzD,sBAAsB,EAAE,gBAAgB,GACvC,OAAO,CAAC,WAAW,CAAC;WAET,iCAAiC,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,CAAC;IAW3G,SAAS,CAAC,0BAA0B,CAAC,EAAE,EAAE,EAAE,GAAG,sBAAsB,EAAE;cAMtD,0BAA0B,CACxC,EAAE,EAAE,EAAE,EACN,0BAA0B,EAAE,+BAA+B,EAC3D,sBAAsB,EAAE,gBAAgB,GACvC,OAAO,CAAC,mBAAmB,CAAC;IAwJ/B,yDAAyD;IACzD,OAAO,CAAC,0BAA0B;IAIlC,SAAS,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,0BAA0B,EAAE,+BAA+B;IAO7F,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAE,EAAE,2BAA2B,EAAE,+BAA+B;YAInF,gBAAgB;IA6B9B,SAAS,CAAC,qBAAqB,CAC7B,cAAc,EAAE,+BAA+B,EAC/C,eAAe,EAAE,gBAAgB,GAChC,gBAAgB;cAYH,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,EAAE,kBAAkB,UAAQ;IAmEhG;;;;OAIG;IACH,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,+BAA+B,GAAG,MAAM;IA8B/E,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,qBAAqB;IAOxD;;;;;;;OAOG;cACa,iBAAiB,CAAC,MAAM,EAAE,qBAAqB,EAAE,kBAAkB,UAAQ;CAK5F"}
|