@aztec/simulator 0.32.1 → 0.34.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/README.md +5 -3
- package/dest/acvm/acvm.js +2 -2
- package/dest/acvm/oracle/index.d.ts +0 -1
- package/dest/acvm/oracle/index.d.ts.map +1 -1
- package/dest/acvm/oracle/index.js +1 -2
- package/dest/acvm/oracle/oracle.d.ts +1 -1
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +4 -5
- package/dest/avm/avm_context.d.ts +4 -14
- package/dest/avm/avm_context.d.ts.map +1 -1
- package/dest/avm/avm_context.js +10 -22
- package/dest/avm/avm_execution_environment.d.ts +4 -3
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +8 -7
- package/dest/avm/avm_gas.d.ts +71 -0
- package/dest/avm/avm_gas.d.ts.map +1 -0
- package/dest/avm/avm_gas.js +161 -0
- package/dest/avm/avm_machine_state.d.ts +4 -2
- package/dest/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/avm/avm_machine_state.js +8 -2
- package/dest/avm/avm_memory_types.d.ts +53 -1
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_memory_types.js +99 -6
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +15 -13
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +3 -3
- package/dest/avm/journal/journal.d.ts +14 -13
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +5 -5
- package/dest/avm/journal/trace.d.ts +8 -19
- package/dest/avm/journal/trace.d.ts.map +1 -1
- package/dest/avm/journal/trace.js +48 -116
- package/dest/avm/journal/trace_types.d.ts +23 -4
- package/dest/avm/journal/trace_types.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.js +45 -17
- package/dest/avm/opcodes/addressing_mode.d.ts +5 -3
- package/dest/avm/opcodes/addressing_mode.d.ts.map +1 -1
- package/dest/avm/opcodes/addressing_mode.js +5 -1
- package/dest/avm/opcodes/arithmetic.d.ts +7 -3
- package/dest/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/avm/opcodes/arithmetic.js +27 -16
- package/dest/avm/opcodes/bitwise.d.ts +21 -20
- package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/avm/opcodes/bitwise.js +43 -65
- package/dest/avm/opcodes/comparators.d.ts +12 -9
- package/dest/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/avm/opcodes/comparators.js +22 -32
- package/dest/avm/opcodes/context_getters.d.ts +20 -0
- package/dest/avm/opcodes/context_getters.d.ts.map +1 -0
- package/dest/avm/opcodes/context_getters.js +26 -0
- package/dest/avm/opcodes/contract.d.ts +14 -0
- package/dest/avm/opcodes/contract.d.ts.map +1 -0
- package/dest/avm/opcodes/contract.js +49 -0
- package/dest/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/avm/opcodes/control_flow.js +12 -2
- package/dest/avm/opcodes/environment_getters.d.ts +30 -33
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +34 -43
- package/dest/avm/opcodes/external_calls.d.ts +13 -19
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +69 -72
- package/dest/avm/opcodes/hashing.d.ts +2 -1
- package/dest/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/avm/opcodes/hashing.js +37 -18
- package/dest/avm/opcodes/index.d.ts +1 -0
- package/dest/avm/opcodes/index.d.ts.map +1 -1
- package/dest/avm/opcodes/index.js +2 -1
- package/dest/avm/opcodes/instruction.d.ts +10 -15
- package/dest/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction.js +12 -22
- package/dest/avm/opcodes/instruction_impl.d.ts +14 -0
- package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction_impl.js +37 -16
- package/dest/avm/opcodes/memory.d.ts +4 -3
- package/dest/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/avm/opcodes/memory.js +38 -19
- package/dest/avm/opcodes/storage.d.ts +5 -0
- package/dest/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/avm/opcodes/storage.js +21 -7
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +7 -5
- package/dest/avm/serialization/instruction_serialization.d.ts +12 -11
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +13 -12
- package/dest/client/client_execution_context.d.ts +2 -2
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +6 -6
- package/dest/client/private_execution.d.ts +1 -1
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +8 -4
- package/dest/client/unconstrained_execution.d.ts +1 -1
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +2 -2
- package/dest/client/view_data_oracle.d.ts +2 -2
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +2 -2
- package/dest/public/executor.d.ts +2 -8
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +101 -69
- package/dest/public/index.d.ts +1 -1
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/public_execution_context.d.ts +6 -6
- package/dest/public/public_execution_context.d.ts.map +1 -1
- package/dest/public/public_execution_context.js +8 -12
- package/dest/public/transitional_adaptors.d.ts +32 -0
- package/dest/public/transitional_adaptors.d.ts.map +1 -0
- package/dest/public/transitional_adaptors.js +161 -0
- package/package.json +15 -9
- package/src/acvm/acvm.ts +1 -1
- package/src/acvm/oracle/index.ts +0 -1
- package/src/acvm/oracle/oracle.ts +3 -4
- package/src/avm/avm_context.ts +11 -33
- package/src/avm/avm_execution_environment.ts +9 -17
- package/src/avm/{avm_gas_cost.ts → avm_gas.ts} +75 -21
- package/src/avm/avm_machine_state.ts +9 -2
- package/src/avm/avm_memory_types.ts +134 -6
- package/src/avm/avm_simulator.ts +14 -12
- package/src/avm/fixtures/index.ts +2 -1
- package/src/avm/journal/journal.ts +24 -17
- package/src/avm/journal/trace.ts +59 -121
- package/src/avm/journal/trace_types.ts +39 -39
- package/src/avm/opcodes/accrued_substate.ts +58 -23
- package/src/avm/opcodes/addressing_mode.ts +8 -3
- package/src/avm/opcodes/arithmetic.ts +32 -22
- package/src/avm/opcodes/bitwise.ts +49 -83
- package/src/avm/opcodes/comparators.ts +28 -43
- package/src/avm/opcodes/context_getters.ts +32 -0
- package/src/avm/opcodes/contract.ts +58 -0
- package/src/avm/opcodes/control_flow.ts +23 -5
- package/src/avm/opcodes/environment_getters.ts +35 -44
- package/src/avm/opcodes/external_calls.ts +90 -89
- package/src/avm/opcodes/hashing.ts +45 -22
- package/src/avm/opcodes/index.ts +1 -0
- package/src/avm/opcodes/instruction.ts +14 -26
- package/src/avm/opcodes/instruction_impl.ts +45 -15
- package/src/avm/opcodes/memory.ts +48 -28
- package/src/avm/opcodes/storage.ts +26 -12
- package/src/avm/serialization/bytecode_serialization.ts +6 -3
- package/src/avm/serialization/instruction_serialization.ts +1 -0
- package/src/client/client_execution_context.ts +5 -5
- package/src/client/private_execution.ts +10 -4
- package/src/client/unconstrained_execution.ts +1 -1
- package/src/client/view_data_oracle.ts +1 -1
- package/src/public/executor.ts +123 -75
- package/src/public/index.ts +2 -2
- package/src/public/public_execution_context.ts +14 -19
- package/src/public/transitional_adaptors.ts +240 -0
- package/dest/acvm/oracle/debug.d.ts +0 -19
- package/dest/acvm/oracle/debug.d.ts.map +0 -1
- package/dest/acvm/oracle/debug.js +0 -95
- package/dest/avm/avm_gas_cost.d.ts +0 -322
- package/dest/avm/avm_gas_cost.d.ts.map +0 -1
- package/dest/avm/avm_gas_cost.js +0 -118
- package/dest/avm/temporary_executor_migration.d.ts +0 -25
- package/dest/avm/temporary_executor_migration.d.ts.map +0 -1
- package/dest/avm/temporary_executor_migration.js +0 -83
- package/src/acvm/oracle/debug.ts +0 -109
- package/src/avm/temporary_executor_migration.ts +0 -122
|
@@ -1,105 +1,96 @@
|
|
|
1
1
|
import { Field } from '../avm_memory_types.js';
|
|
2
|
-
import { Opcode
|
|
3
|
-
import {
|
|
4
|
-
class
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
this.indirect = indirect;
|
|
8
|
-
this.dstOffset = dstOffset;
|
|
9
|
-
}
|
|
10
|
-
async execute(context) {
|
|
11
|
-
const res = new Field(this.getIt(context.environment));
|
|
12
|
-
context.machineState.memory.set(this.dstOffset, res);
|
|
13
|
-
context.machineState.incrementPc();
|
|
2
|
+
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
3
|
+
import { GetterInstruction } from './instruction_impl.js';
|
|
4
|
+
class EnvironmentGetterInstruction extends GetterInstruction {
|
|
5
|
+
getValue(context) {
|
|
6
|
+
return new Field(this.getEnvironmentValue(context.environment));
|
|
14
7
|
}
|
|
15
8
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export class Address extends GetterInstruction {
|
|
19
|
-
getIt(env) {
|
|
9
|
+
export class Address extends EnvironmentGetterInstruction {
|
|
10
|
+
getEnvironmentValue(env) {
|
|
20
11
|
return env.address;
|
|
21
12
|
}
|
|
22
13
|
}
|
|
23
14
|
Address.type = 'ADDRESS';
|
|
24
15
|
Address.opcode = Opcode.ADDRESS;
|
|
25
|
-
export class StorageAddress extends
|
|
26
|
-
|
|
16
|
+
export class StorageAddress extends EnvironmentGetterInstruction {
|
|
17
|
+
getEnvironmentValue(env) {
|
|
27
18
|
return env.storageAddress;
|
|
28
19
|
}
|
|
29
20
|
}
|
|
30
21
|
StorageAddress.type = 'STORAGEADDRESS';
|
|
31
22
|
StorageAddress.opcode = Opcode.STORAGEADDRESS;
|
|
32
|
-
export class Sender extends
|
|
33
|
-
|
|
23
|
+
export class Sender extends EnvironmentGetterInstruction {
|
|
24
|
+
getEnvironmentValue(env) {
|
|
34
25
|
return env.sender;
|
|
35
26
|
}
|
|
36
27
|
}
|
|
37
28
|
Sender.type = 'SENDER';
|
|
38
29
|
Sender.opcode = Opcode.SENDER;
|
|
39
|
-
export class Origin extends
|
|
40
|
-
|
|
30
|
+
export class Origin extends EnvironmentGetterInstruction {
|
|
31
|
+
getEnvironmentValue(env) {
|
|
41
32
|
return env.origin;
|
|
42
33
|
}
|
|
43
34
|
}
|
|
44
35
|
Origin.type = 'ORIGIN';
|
|
45
36
|
Origin.opcode = Opcode.ORIGIN;
|
|
46
|
-
export class FeePerL1Gas extends
|
|
47
|
-
|
|
37
|
+
export class FeePerL1Gas extends EnvironmentGetterInstruction {
|
|
38
|
+
getEnvironmentValue(env) {
|
|
48
39
|
return env.feePerL1Gas;
|
|
49
40
|
}
|
|
50
41
|
}
|
|
51
42
|
FeePerL1Gas.type = 'FEEPERL1GAS';
|
|
52
43
|
FeePerL1Gas.opcode = Opcode.FEEPERL1GAS;
|
|
53
|
-
export class FeePerL2Gas extends
|
|
54
|
-
|
|
44
|
+
export class FeePerL2Gas extends EnvironmentGetterInstruction {
|
|
45
|
+
getEnvironmentValue(env) {
|
|
55
46
|
return env.feePerL2Gas;
|
|
56
47
|
}
|
|
57
48
|
}
|
|
58
49
|
FeePerL2Gas.type = 'FEEPERL2GAS';
|
|
59
50
|
FeePerL2Gas.opcode = Opcode.FEEPERL2GAS;
|
|
60
|
-
export class FeePerDAGas extends
|
|
61
|
-
|
|
51
|
+
export class FeePerDAGas extends EnvironmentGetterInstruction {
|
|
52
|
+
getEnvironmentValue(env) {
|
|
62
53
|
return env.feePerDaGas;
|
|
63
54
|
}
|
|
64
55
|
}
|
|
65
56
|
FeePerDAGas.type = 'FEEPERDAGAS';
|
|
66
57
|
FeePerDAGas.opcode = Opcode.FEEPERDAGAS;
|
|
67
|
-
export class Portal extends
|
|
68
|
-
|
|
58
|
+
export class Portal extends EnvironmentGetterInstruction {
|
|
59
|
+
getEnvironmentValue(env) {
|
|
69
60
|
return env.portal.toField();
|
|
70
61
|
}
|
|
71
62
|
}
|
|
72
63
|
Portal.type = 'PORTAL';
|
|
73
64
|
Portal.opcode = Opcode.PORTAL;
|
|
74
|
-
export class ChainId extends
|
|
75
|
-
|
|
65
|
+
export class ChainId extends EnvironmentGetterInstruction {
|
|
66
|
+
getEnvironmentValue(env) {
|
|
76
67
|
return env.globals.chainId;
|
|
77
68
|
}
|
|
78
69
|
}
|
|
79
70
|
ChainId.type = 'CHAINID';
|
|
80
71
|
ChainId.opcode = Opcode.CHAINID;
|
|
81
|
-
export class Version extends
|
|
82
|
-
|
|
72
|
+
export class Version extends EnvironmentGetterInstruction {
|
|
73
|
+
getEnvironmentValue(env) {
|
|
83
74
|
return env.globals.version;
|
|
84
75
|
}
|
|
85
76
|
}
|
|
86
77
|
Version.type = 'VERSION';
|
|
87
78
|
Version.opcode = Opcode.VERSION;
|
|
88
|
-
export class BlockNumber extends
|
|
89
|
-
|
|
79
|
+
export class BlockNumber extends EnvironmentGetterInstruction {
|
|
80
|
+
getEnvironmentValue(env) {
|
|
90
81
|
return env.globals.blockNumber;
|
|
91
82
|
}
|
|
92
83
|
}
|
|
93
84
|
BlockNumber.type = 'BLOCKNUMBER';
|
|
94
85
|
BlockNumber.opcode = Opcode.BLOCKNUMBER;
|
|
95
|
-
export class Timestamp extends
|
|
96
|
-
|
|
86
|
+
export class Timestamp extends EnvironmentGetterInstruction {
|
|
87
|
+
getEnvironmentValue(env) {
|
|
97
88
|
return env.globals.timestamp;
|
|
98
89
|
}
|
|
99
90
|
}
|
|
100
91
|
Timestamp.type = 'TIMESTAMP';
|
|
101
92
|
Timestamp.opcode = Opcode.TIMESTAMP;
|
|
102
|
-
// export class Coinbase extends
|
|
93
|
+
// export class Coinbase extends EnvironmentGetterInstruction {
|
|
103
94
|
// static type: string = 'COINBASE';
|
|
104
95
|
// static numberOfOperands = 1;
|
|
105
96
|
// constructor(private destOffset: number) {
|
|
@@ -112,7 +103,7 @@ Timestamp.opcode = Opcode.TIMESTAMP;
|
|
|
112
103
|
// }
|
|
113
104
|
// }
|
|
114
105
|
// // TODO: are these even needed within the block? (both block gas limit variables - why does the execution env care?)
|
|
115
|
-
// export class BlockL1GasLimit extends
|
|
106
|
+
// export class BlockL1GasLimit extends EnvironmentGetterInstruction {
|
|
116
107
|
// static type: string = 'BLOCKL1GASLIMIT';
|
|
117
108
|
// static numberOfOperands = 1;
|
|
118
109
|
// constructor(private destOffset: number) {
|
|
@@ -124,7 +115,7 @@ Timestamp.opcode = Opcode.TIMESTAMP;
|
|
|
124
115
|
// this.incrementPc(machineState);
|
|
125
116
|
// }
|
|
126
117
|
// }
|
|
127
|
-
// export class BlockL2GasLimit extends
|
|
118
|
+
// export class BlockL2GasLimit extends EnvironmentGetterInstruction {
|
|
128
119
|
// static type: string = 'BLOCKL2GASLIMIT';
|
|
129
120
|
// static numberOfOperands = 1;
|
|
130
121
|
// constructor(private destOffset: number) {
|
|
@@ -136,7 +127,7 @@ Timestamp.opcode = Opcode.TIMESTAMP;
|
|
|
136
127
|
// this.incrementPc(machineState);
|
|
137
128
|
// }
|
|
138
129
|
// }
|
|
139
|
-
// export class BlockDAGasLimit extends
|
|
130
|
+
// export class BlockDAGasLimit extends EnvironmentGetterInstruction {
|
|
140
131
|
// static type: string = 'BLOCKDAGASLIMIT';
|
|
141
132
|
// static numberOfOperands = 1;
|
|
142
133
|
// constructor(private destOffset: number) {
|
|
@@ -148,4 +139,4 @@ Timestamp.opcode = Opcode.TIMESTAMP;
|
|
|
148
139
|
// this.incrementPc(machineState);
|
|
149
140
|
// }
|
|
150
141
|
// }
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnRfZ2V0dGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9lbnZpcm9ubWVudF9nZXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxLQUFLLEVBQW9CLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE1BQWUsNEJBQTZCLFNBQVEsaUJBQWlCO0lBQ3pELFFBQVEsQ0FBQyxPQUFtQjtRQUNwQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBR0Y7QUFFRCxNQUFNLE9BQU8sT0FBUSxTQUFRLDRCQUE0QjtJQUk3QyxtQkFBbUIsQ0FBQyxHQUE0QjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDckIsQ0FBQzs7QUFMTSxZQUFJLEdBQVcsU0FBUyxDQUFDO0FBQ2hCLGNBQU0sR0FBVyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBT2xELE1BQU0sT0FBTyxjQUFlLFNBQVEsNEJBQTRCO0lBSXBELG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQztJQUM1QixDQUFDOztBQUxNLG1CQUFJLEdBQVcsZ0JBQWdCLENBQUM7QUFDdkIscUJBQU0sR0FBVyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBT3pELE1BQU0sT0FBTyxNQUFPLFNBQVEsNEJBQTRCO0lBSTVDLG1CQUFtQixDQUFDLEdBQTRCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUNwQixDQUFDOztBQUxNLFdBQUksR0FBVyxRQUFRLENBQUM7QUFDZixhQUFNLEdBQVcsTUFBTSxDQUFDLE1B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
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { AvmContext } from '../avm_context.js';
|
|
2
2
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
3
3
|
import { Instruction } from './instruction.js';
|
|
4
|
-
|
|
4
|
+
declare abstract class ExternalCall extends Instruction {
|
|
5
5
|
private indirect;
|
|
6
|
-
private
|
|
6
|
+
private gasOffset;
|
|
7
7
|
private addrOffset;
|
|
8
8
|
private argsOffset;
|
|
9
9
|
private argsSize;
|
|
@@ -11,27 +11,20 @@ export declare class Call extends Instruction {
|
|
|
11
11
|
private retSize;
|
|
12
12
|
private successOffset;
|
|
13
13
|
private temporaryFunctionSelectorOffset;
|
|
14
|
-
static type: string;
|
|
15
|
-
static readonly opcode: Opcode;
|
|
16
14
|
static readonly wireFormat: OperandType[];
|
|
17
|
-
constructor(indirect: number,
|
|
15
|
+
constructor(indirect: number, gasOffset: number, addrOffset: number, argsOffset: number, argsSize: number, retOffset: number, retSize: number, successOffset: number, temporaryFunctionSelectorOffset: number);
|
|
18
16
|
execute(context: AvmContext): Promise<void>;
|
|
17
|
+
abstract get type(): 'CALL' | 'STATICCALL';
|
|
19
18
|
}
|
|
20
|
-
export declare class
|
|
21
|
-
|
|
22
|
-
private _gasOffset;
|
|
23
|
-
private addrOffset;
|
|
24
|
-
private argsOffset;
|
|
25
|
-
private argsSize;
|
|
26
|
-
private retOffset;
|
|
27
|
-
private retSize;
|
|
28
|
-
private successOffset;
|
|
29
|
-
private temporaryFunctionSelectorOffset;
|
|
30
|
-
static type: string;
|
|
19
|
+
export declare class Call extends ExternalCall {
|
|
20
|
+
static type: "CALL";
|
|
31
21
|
static readonly opcode: Opcode;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
22
|
+
get type(): "CALL";
|
|
23
|
+
}
|
|
24
|
+
export declare class StaticCall extends ExternalCall {
|
|
25
|
+
static type: "STATICCALL";
|
|
26
|
+
static readonly opcode: Opcode;
|
|
27
|
+
get type(): "STATICCALL";
|
|
35
28
|
}
|
|
36
29
|
export declare class Return extends Instruction {
|
|
37
30
|
private indirect;
|
|
@@ -53,4 +46,5 @@ export declare class Revert extends Instruction {
|
|
|
53
46
|
constructor(indirect: number, returnOffset: number, retSize: number);
|
|
54
47
|
execute(context: AvmContext): Promise<void>;
|
|
55
48
|
}
|
|
49
|
+
export {};
|
|
56
50
|
//# sourceMappingURL=external_calls.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external_calls.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/external_calls.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"external_calls.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/external_calls.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,uBAAe,YAAa,SAAQ,WAAW;IAiB3C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,+BAA+B;IA1BzC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAYvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EAIrB,+BAA+B,EAAE,MAAM;IAKpC,OAAO,CAAC,OAAO,EAAE,UAAU;IAuExC,aAAoB,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC;CACnD;AAED,qBAAa,IAAK,SAAQ,YAAY;IACpC,MAAM,CAAC,IAAI,SAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAe;IAE7C,IAAW,IAAI,WAEd;CACF;AAED,qBAAa,UAAW,SAAQ,YAAY;IAC1C,MAAM,CAAC,IAAI,eAAyB;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAqB;IAEnD,IAAW,IAAI,iBAEd;CACF;AAED,qBAAa,MAAO,SAAQ,WAAW;IAWzB,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,YAAY;IAAU,OAAO,CAAC,QAAQ;IAVpF,MAAM,CAAC,IAAI,EAAE,MAAM,CAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAiB;IAE/C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAEkB,QAAQ,EAAE,MAAM,EAAU,YAAY,EAAE,MAAM,EAAU,QAAQ,EAAE,MAAM;IAI/E,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAYzD;AAED,qBAAa,MAAO,SAAQ,WAAW;IAWzB,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,YAAY;IAAU,OAAO,CAAC,OAAO;IAVnF,MAAM,CAAC,IAAI,EAAE,MAAM,CAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAiB;IAE/C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAEkB,QAAQ,EAAE,MAAM,EAAU,YAAY,EAAE,MAAM,EAAU,OAAO,EAAE,MAAM;IAI9E,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAYzD"}
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import { FunctionSelector } from '@aztec/circuits.js';
|
|
2
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
|
+
import { executePublicFunction } from '../../public/executor.js';
|
|
4
|
+
import { convertPublicExecutionResult, createPublicExecutionContext, updateAvmContextFromPublicExecutionResult, } from '../../public/transitional_adaptors.js';
|
|
5
|
+
import { gasLeftToGas, sumGas } from '../avm_gas.js';
|
|
2
6
|
import { Field, Uint8 } from '../avm_memory_types.js';
|
|
3
|
-
import { AvmSimulator } from '../avm_simulator.js';
|
|
4
7
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
5
8
|
import { Addressing } from './addressing_mode.js';
|
|
6
9
|
import { Instruction } from './instruction.js';
|
|
7
|
-
|
|
8
|
-
constructor(indirect,
|
|
10
|
+
class ExternalCall extends Instruction {
|
|
11
|
+
constructor(indirect, gasOffset /* Unused due to no formal gas implementation at this moment */, addrOffset, argsOffset, argsSize, retOffset, retSize, successOffset,
|
|
9
12
|
// Function selector is temporary since eventually public contract bytecode will be one blob
|
|
10
13
|
// containing all functions, and function selector will become an application-level mechanism
|
|
11
14
|
// (e.g. first few bytes of calldata + compiler-generated jump table)
|
|
12
15
|
temporaryFunctionSelectorOffset) {
|
|
13
16
|
super();
|
|
14
17
|
this.indirect = indirect;
|
|
15
|
-
this.
|
|
18
|
+
this.gasOffset = gasOffset;
|
|
16
19
|
this.addrOffset = addrOffset;
|
|
17
20
|
this.argsOffset = argsOffset;
|
|
18
21
|
this.argsSize = argsSize;
|
|
@@ -21,34 +24,58 @@ export class Call extends Instruction {
|
|
|
21
24
|
this.successOffset = successOffset;
|
|
22
25
|
this.temporaryFunctionSelectorOffset = temporaryFunctionSelectorOffset;
|
|
23
26
|
}
|
|
24
|
-
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/3992): there is no concept of remaining / available gas at this moment
|
|
25
27
|
async execute(context) {
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const
|
|
28
|
+
const memory = context.machineState.memory.track(this.type);
|
|
29
|
+
const [gasOffset, addrOffset, argsOffset, retOffset, successOffset] = Addressing.fromWire(this.indirect).resolve([this.gasOffset, this.addrOffset, this.argsOffset, this.retOffset, this.successOffset], memory);
|
|
30
|
+
const callAddress = memory.getAs(addrOffset);
|
|
31
|
+
const calldata = memory.getSlice(argsOffset, this.argsSize).map(f => f.toFr());
|
|
32
|
+
const l1Gas = memory.get(gasOffset).toNumber();
|
|
33
|
+
const l2Gas = memory.getAs(gasOffset + 1).toNumber();
|
|
34
|
+
const daGas = memory.getAs(gasOffset + 2).toNumber();
|
|
35
|
+
const functionSelector = memory.getAs(this.temporaryFunctionSelectorOffset).toFr();
|
|
36
|
+
const allocatedGas = { l1Gas, l2Gas, daGas };
|
|
37
|
+
const memoryOperations = { reads: this.argsSize + 5, writes: 1 + this.retSize, indirect: this.indirect };
|
|
38
|
+
const totalGas = sumGas(this.gasCost(memoryOperations), allocatedGas);
|
|
39
|
+
context.machineState.consumeGas(totalGas);
|
|
40
|
+
// TRANSITIONAL: This should be removed once the AVM is fully operational and the public executor is gone.
|
|
41
|
+
const nestedContext = context.createNestedContractCallContext(callAddress.toFr(), calldata, allocatedGas, this.type, FunctionSelector.fromField(functionSelector));
|
|
42
|
+
const pxContext = createPublicExecutionContext(nestedContext, calldata);
|
|
43
|
+
const pxResults = await executePublicFunction(pxContext, /*nested=*/ true);
|
|
44
|
+
const nestedCallResults = convertPublicExecutionResult(pxResults);
|
|
45
|
+
updateAvmContextFromPublicExecutionResult(nestedContext, pxResults);
|
|
46
|
+
const nestedPersistableState = nestedContext.persistableState;
|
|
47
|
+
// const nestedContext = context.createNestedContractCallContext(
|
|
48
|
+
// callAddress.toFr(),
|
|
49
|
+
// calldata,
|
|
50
|
+
// allocatedGas,
|
|
51
|
+
// this.type,
|
|
52
|
+
// FunctionSelector.fromField(functionSelector),
|
|
53
|
+
// );
|
|
54
|
+
// const nestedCallResults: AvmContractCallResults = await new AvmSimulator(nestedContext).execute();
|
|
55
|
+
// const nestedPersistableState = nestedContext.persistableState;
|
|
32
56
|
const success = !nestedCallResults.reverted;
|
|
33
|
-
// We only take as much data as was specified in the return size
|
|
57
|
+
// We only take as much data as was specified in the return size and pad with zeroes if the return data is smaller
|
|
58
|
+
// than the specified size in order to prevent that memory to be left with garbage
|
|
34
59
|
const returnData = nestedCallResults.output.slice(0, this.retSize);
|
|
35
|
-
const convertedReturnData = returnData.map(f => new Field(f));
|
|
60
|
+
const convertedReturnData = padArrayEnd(returnData.map(f => new Field(f)), new Field(0), this.retSize);
|
|
36
61
|
// Write our return data into memory
|
|
37
|
-
|
|
38
|
-
|
|
62
|
+
memory.set(successOffset, new Uint8(success ? 1 : 0));
|
|
63
|
+
memory.setSlice(retOffset, convertedReturnData);
|
|
64
|
+
// Refund unused gas
|
|
65
|
+
context.machineState.refundGas(gasLeftToGas(nestedContext.machineState));
|
|
66
|
+
// TODO: Should we merge the changes from a nested call in the case of a STATIC call?
|
|
39
67
|
if (success) {
|
|
40
|
-
context.persistableState.acceptNestedCallState(
|
|
68
|
+
context.persistableState.acceptNestedCallState(nestedPersistableState);
|
|
41
69
|
}
|
|
42
70
|
else {
|
|
43
|
-
context.persistableState.rejectNestedCallState(
|
|
71
|
+
context.persistableState.rejectNestedCallState(nestedPersistableState);
|
|
44
72
|
}
|
|
73
|
+
memory.assert(memoryOperations);
|
|
45
74
|
context.machineState.incrementPc();
|
|
46
75
|
}
|
|
47
76
|
}
|
|
48
|
-
Call.type = 'CALL';
|
|
49
|
-
Call.opcode = Opcode.CALL;
|
|
50
77
|
// Informs (de)serialization. See Instruction.deserialize.
|
|
51
|
-
|
|
78
|
+
ExternalCall.wireFormat = [
|
|
52
79
|
OperandType.UINT8,
|
|
53
80
|
OperandType.UINT8,
|
|
54
81
|
OperandType.UINT32,
|
|
@@ -61,58 +88,20 @@ Call.wireFormat = [
|
|
|
61
88
|
/* temporary function selector */
|
|
62
89
|
OperandType.UINT32,
|
|
63
90
|
];
|
|
64
|
-
export class
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
this.indirect = indirect;
|
|
68
|
-
this._gasOffset = _gasOffset;
|
|
69
|
-
this.addrOffset = addrOffset;
|
|
70
|
-
this.argsOffset = argsOffset;
|
|
71
|
-
this.argsSize = argsSize;
|
|
72
|
-
this.retOffset = retOffset;
|
|
73
|
-
this.retSize = retSize;
|
|
74
|
-
this.successOffset = successOffset;
|
|
75
|
-
this.temporaryFunctionSelectorOffset = temporaryFunctionSelectorOffset;
|
|
91
|
+
export class Call extends ExternalCall {
|
|
92
|
+
get type() {
|
|
93
|
+
return Call.type;
|
|
76
94
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const nestedCallResults = await new AvmSimulator(nestedContext).execute();
|
|
84
|
-
const success = !nestedCallResults.reverted;
|
|
85
|
-
// We only take as much data as was specified in the return size -> TODO: should we be reverting here
|
|
86
|
-
const returnData = nestedCallResults.output.slice(0, this.retSize);
|
|
87
|
-
const convertedReturnData = returnData.map(f => new Field(f));
|
|
88
|
-
// Write our return data into memory
|
|
89
|
-
context.machineState.memory.set(successOffset, new Uint8(success ? 1 : 0));
|
|
90
|
-
context.machineState.memory.setSlice(retOffset, convertedReturnData);
|
|
91
|
-
if (success) {
|
|
92
|
-
context.persistableState.acceptNestedCallState(nestedContext.persistableState);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
context.persistableState.rejectNestedCallState(nestedContext.persistableState);
|
|
96
|
-
}
|
|
97
|
-
context.machineState.incrementPc();
|
|
95
|
+
}
|
|
96
|
+
Call.type = 'CALL';
|
|
97
|
+
Call.opcode = Opcode.CALL;
|
|
98
|
+
export class StaticCall extends ExternalCall {
|
|
99
|
+
get type() {
|
|
100
|
+
return StaticCall.type;
|
|
98
101
|
}
|
|
99
102
|
}
|
|
100
103
|
StaticCall.type = 'STATICCALL';
|
|
101
104
|
StaticCall.opcode = Opcode.STATICCALL;
|
|
102
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
103
|
-
StaticCall.wireFormat = [
|
|
104
|
-
OperandType.UINT8,
|
|
105
|
-
OperandType.UINT8,
|
|
106
|
-
OperandType.UINT32,
|
|
107
|
-
OperandType.UINT32,
|
|
108
|
-
OperandType.UINT32,
|
|
109
|
-
OperandType.UINT32,
|
|
110
|
-
OperandType.UINT32,
|
|
111
|
-
OperandType.UINT32,
|
|
112
|
-
OperandType.UINT32,
|
|
113
|
-
/* temporary function selector */
|
|
114
|
-
OperandType.UINT32,
|
|
115
|
-
];
|
|
116
105
|
export class Return extends Instruction {
|
|
117
106
|
constructor(indirect, returnOffset, copySize) {
|
|
118
107
|
super();
|
|
@@ -121,9 +110,13 @@ export class Return extends Instruction {
|
|
|
121
110
|
this.copySize = copySize;
|
|
122
111
|
}
|
|
123
112
|
async execute(context) {
|
|
124
|
-
const
|
|
125
|
-
const
|
|
113
|
+
const memoryOperations = { reads: this.copySize, indirect: this.indirect };
|
|
114
|
+
const memory = context.machineState.memory.track(this.type);
|
|
115
|
+
context.machineState.consumeGas(this.gasCost(memoryOperations));
|
|
116
|
+
const [returnOffset] = Addressing.fromWire(this.indirect).resolve([this.returnOffset], memory);
|
|
117
|
+
const output = memory.getSlice(returnOffset, this.copySize).map(word => word.toFr());
|
|
126
118
|
context.machineState.return(output);
|
|
119
|
+
memory.assert(memoryOperations);
|
|
127
120
|
}
|
|
128
121
|
}
|
|
129
122
|
Return.type = 'RETURN';
|
|
@@ -143,9 +136,13 @@ export class Revert extends Instruction {
|
|
|
143
136
|
this.retSize = retSize;
|
|
144
137
|
}
|
|
145
138
|
async execute(context) {
|
|
146
|
-
const
|
|
147
|
-
const
|
|
139
|
+
const memoryOperations = { reads: this.retSize, indirect: this.indirect };
|
|
140
|
+
const memory = context.machineState.memory.track(this.type);
|
|
141
|
+
context.machineState.consumeGas(this.gasCost(memoryOperations));
|
|
142
|
+
const [returnOffset] = Addressing.fromWire(this.indirect).resolve([this.returnOffset], memory);
|
|
143
|
+
const output = memory.getSlice(returnOffset, this.retSize).map(word => word.toFr());
|
|
148
144
|
context.machineState.revert(output);
|
|
145
|
+
memory.assert(memoryOperations);
|
|
149
146
|
}
|
|
150
147
|
}
|
|
151
148
|
Revert.type = 'REVERT';
|
|
@@ -157,4 +154,4 @@ Revert.wireFormat = [
|
|
|
157
154
|
OperandType.UINT32,
|
|
158
155
|
OperandType.UINT32,
|
|
159
156
|
];
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWxfY2FsbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvZXh0ZXJuYWxfY2FsbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLHlDQUF5QyxHQUMxQyxNQUFNLHVDQUF1QyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE1BQWUsWUFBYSxTQUFRLFdBQVc7SUFnQjdDLFlBQ1UsUUFBZ0IsRUFDaEIsU0FBaUIsQ0FBQywrREFBK0QsRUFDakYsVUFBa0IsRUFDbEIsVUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsU0FBaUIsRUFDakIsT0FBZSxFQUNmLGFBQXFCO0lBQzdCLDRGQUE0RjtJQUM1Riw2RkFBNkY7SUFDN0YscUVBQXFFO0lBQzdELCtCQUF1QztRQUUvQyxLQUFLLEVBQUUsQ0FBQztRQWJBLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFD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
|
|
@@ -36,13 +36,14 @@ export declare class Sha256 extends Instruction {
|
|
|
36
36
|
}
|
|
37
37
|
export declare class Pedersen extends Instruction {
|
|
38
38
|
private indirect;
|
|
39
|
+
private genIndexOffset;
|
|
39
40
|
private dstOffset;
|
|
40
41
|
private messageOffset;
|
|
41
42
|
private messageSizeOffset;
|
|
42
43
|
static type: string;
|
|
43
44
|
static readonly opcode: Opcode;
|
|
44
45
|
static readonly wireFormat: OperandType[];
|
|
45
|
-
constructor(indirect: number, dstOffset: number, messageOffset: number, messageSizeOffset: number);
|
|
46
|
+
constructor(indirect: number, genIndexOffset: number, dstOffset: number, messageOffset: number, messageSizeOffset: number);
|
|
46
47
|
execute(context: AvmContext): Promise<void>;
|
|
47
48
|
}
|
|
48
49
|
//# sourceMappingURL=hashing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hashing.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/hashing.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,SAAU,SAAQ,WAAW;IActC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,WAAW;IAhBrB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAe;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAmB;IAGjD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAMvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"hashing.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/hashing.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,SAAU,SAAQ,WAAW;IActC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,WAAW;IAhBrB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAe;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAmB;IAGjD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAMvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM;IAKhB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBzD;AAED,qBAAa,MAAO,SAAQ,WAAW;IAcnC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,WAAW;IAhBrB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAiB;IAG/C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAMvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM;IAMhB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAyBzD;AAED,qBAAa,MAAO,SAAQ,WAAW;IAcnC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,WAAW;IAhBrB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAiB;IAG/C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAMvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM;IAMhB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAyBzD;AAED,qBAAa,QAAS,SAAQ,WAAW;IAerC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,iBAAiB;IAlB3B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAc;IACjC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAmB;IAGjD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAOvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM;IAKtB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAsBzD"}
|