@aztec/simulator 0.74.0 → 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2
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/acvm/acvm.js +18 -21
- package/dest/acvm/acvm_types.js +3 -2
- package/dest/acvm/deserialize.js +9 -13
- package/dest/acvm/index.js +0 -1
- package/dest/acvm/oracle/index.js +0 -1
- package/dest/acvm/oracle/oracle.js +42 -23
- package/dest/acvm/oracle/typed_oracle.js +36 -38
- package/dest/acvm/serialize.js +7 -14
- package/dest/avm/avm_context.js +24 -27
- package/dest/avm/avm_contract_call_result.js +12 -7
- package/dest/avm/avm_execution_environment.js +10 -7
- package/dest/avm/avm_gas.js +93 -56
- package/dest/avm/avm_machine_state.js +60 -61
- package/dest/avm/avm_memory_types.js +166 -255
- package/dest/avm/avm_simulator.js +68 -47
- package/dest/avm/avm_tree.js +282 -276
- package/dest/avm/bytecode_utils.js +8 -6
- package/dest/avm/errors.js +46 -63
- package/dest/avm/fixtures/avm_simulation_tester.js +18 -17
- package/dest/avm/fixtures/base_avm_simulation_tester.js +21 -16
- package/dest/avm/fixtures/index.js +27 -26
- package/dest/avm/fixtures/simple_contract_data_source.js +9 -13
- package/dest/avm/index.js +0 -1
- package/dest/avm/journal/index.js +0 -1
- package/dest/avm/journal/journal.js +147 -200
- package/dest/avm/journal/nullifiers.js +43 -46
- package/dest/avm/journal/public_storage.js +73 -87
- package/dest/avm/opcodes/accrued_substate.js +140 -110
- package/dest/avm/opcodes/addressing_mode.js +29 -31
- package/dest/avm/opcodes/arithmetic.js +17 -15
- package/dest/avm/opcodes/bitwise.js +40 -26
- package/dest/avm/opcodes/comparators.js +12 -10
- package/dest/avm/opcodes/contract.js +31 -29
- package/dest/avm/opcodes/control_flow.js +47 -43
- package/dest/avm/opcodes/conversion.js +30 -26
- package/dest/avm/opcodes/ec_add.js +35 -34
- package/dest/avm/opcodes/environment_getters.js +33 -33
- package/dest/avm/opcodes/external_calls.js +83 -74
- package/dest/avm/opcodes/hashing.js +69 -61
- package/dest/avm/opcodes/index.js +0 -1
- package/dest/avm/opcodes/instruction.js +31 -40
- package/dest/avm/opcodes/instruction_impl.js +12 -15
- package/dest/avm/opcodes/memory.js +177 -156
- package/dest/avm/opcodes/misc.js +27 -25
- package/dest/avm/opcodes/multi_scalar_mul.js +43 -41
- package/dest/avm/opcodes/storage.js +28 -25
- package/dest/avm/serialization/buffer_cursor.js +4 -4
- package/dest/avm/serialization/bytecode_serialization.js +292 -89
- package/dest/avm/serialization/instruction_serialization.js +67 -28
- package/dest/avm/test_utils.js +6 -9
- package/dest/client/client_execution_context.js +197 -219
- package/dest/client/db_oracle.js +4 -7
- package/dest/client/execution_note_cache.js +80 -81
- package/dest/client/index.js +0 -1
- package/dest/client/pick_notes.js +27 -30
- package/dest/client/private_execution.js +13 -14
- package/dest/client/simulator.js +44 -48
- package/dest/client/unconstrained_execution.js +8 -11
- package/dest/client/view_data_oracle.js +130 -139
- package/dest/common/debug_fn_name.js +1 -4
- package/dest/common/errors.js +30 -39
- package/dest/common/hashed_values_cache.js +16 -20
- package/dest/common/index.js +0 -1
- package/dest/common/message_load_oracle_inputs.js +7 -7
- package/dest/common/simulation_provider.js +3 -6
- package/dest/common.js +0 -1
- package/dest/providers/acvm_native.js +46 -32
- package/dest/providers/acvm_wasm.js +18 -10
- package/dest/providers/acvm_wasm_with_blobs.js +2 -5
- package/dest/providers/factory.js +5 -5
- package/dest/providers/index.js +0 -1
- package/dest/public/bytecode_errors.js +1 -2
- package/dest/public/db_interfaces.js +1 -2
- package/dest/public/execution.js +2 -4
- package/dest/public/executor_metrics.js +16 -12
- package/dest/public/fee_payment.js +2 -5
- package/dest/public/fixtures/index.js +0 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +13 -17
- package/dest/public/fixtures/utils.js +11 -14
- package/dest/public/index.js +0 -1
- package/dest/public/public_db_sources.js +79 -87
- package/dest/public/public_processor.js +310 -306
- package/dest/public/public_processor_metrics.js +46 -27
- package/dest/public/public_tx_context.js +97 -118
- package/dest/public/public_tx_simulator.js +299 -314
- package/dest/public/side_effect_errors.js +1 -2
- package/dest/public/side_effect_trace.js +44 -71
- package/dest/public/side_effect_trace_interface.js +1 -2
- package/dest/public/unique_class_ids.js +22 -27
- package/dest/public/utils.js +16 -11
- package/dest/server.js +0 -1
- package/dest/stats/index.js +0 -1
- package/dest/stats/stats.js +1 -2
- package/dest/test/utils.js +5 -4
- package/package.json +11 -11
- package/src/acvm/oracle/typed_oracle.ts +34 -34
- package/src/avm/avm_machine_state.ts +18 -14
- package/src/avm/avm_memory_types.ts +43 -183
- package/src/avm/avm_simulator.ts +37 -11
- package/src/avm/opcodes/accrued_substate.ts +7 -21
- package/src/avm/opcodes/addressing_mode.ts +9 -2
- package/src/avm/opcodes/arithmetic.ts +1 -3
- package/src/avm/opcodes/bitwise.ts +2 -6
- package/src/avm/opcodes/comparators.ts +1 -3
- package/src/avm/opcodes/contract.ts +1 -3
- package/src/avm/opcodes/control_flow.ts +1 -9
- package/src/avm/opcodes/conversion.ts +1 -3
- package/src/avm/opcodes/ec_add.ts +1 -3
- package/src/avm/opcodes/environment_getters.ts +1 -3
- package/src/avm/opcodes/external_calls.ts +3 -6
- package/src/avm/opcodes/hashing.ts +3 -9
- package/src/avm/opcodes/memory.ts +6 -20
- package/src/avm/opcodes/misc.ts +1 -3
- package/src/avm/opcodes/multi_scalar_mul.ts +1 -7
- package/src/avm/opcodes/storage.ts +2 -6
- package/src/client/index.ts +2 -2
- package/dest/acvm/acvm.d.ts +0 -35
- package/dest/acvm/acvm.d.ts.map +0 -1
- package/dest/acvm/acvm_types.d.ts +0 -10
- package/dest/acvm/acvm_types.d.ts.map +0 -1
- package/dest/acvm/deserialize.d.ts +0 -36
- package/dest/acvm/deserialize.d.ts.map +0 -1
- package/dest/acvm/index.d.ts +0 -6
- package/dest/acvm/index.d.ts.map +0 -1
- package/dest/acvm/oracle/index.d.ts +0 -14
- package/dest/acvm/oracle/index.d.ts.map +0 -1
- package/dest/acvm/oracle/oracle.d.ts +0 -49
- package/dest/acvm/oracle/oracle.d.ts.map +0 -1
- package/dest/acvm/oracle/typed_oracle.d.ts +0 -75
- package/dest/acvm/oracle/typed_oracle.d.ts.map +0 -1
- package/dest/acvm/serialize.d.ts +0 -20
- package/dest/acvm/serialize.d.ts.map +0 -1
- package/dest/avm/avm_context.d.ts +0 -39
- package/dest/avm/avm_context.d.ts.map +0 -1
- package/dest/avm/avm_contract_call_result.d.ts +0 -30
- package/dest/avm/avm_contract_call_result.d.ts.map +0 -1
- package/dest/avm/avm_execution_environment.d.ts +0 -21
- package/dest/avm/avm_execution_environment.d.ts.map +0 -1
- package/dest/avm/avm_gas.d.ts +0 -60
- package/dest/avm/avm_gas.d.ts.map +0 -1
- package/dest/avm/avm_machine_state.d.ts +0 -93
- package/dest/avm/avm_machine_state.d.ts.map +0 -1
- package/dest/avm/avm_memory_types.d.ts +0 -310
- package/dest/avm/avm_memory_types.d.ts.map +0 -1
- package/dest/avm/avm_simulator.d.ts +0 -37
- package/dest/avm/avm_simulator.d.ts.map +0 -1
- package/dest/avm/avm_tree.d.ts +0 -281
- package/dest/avm/avm_tree.d.ts.map +0 -1
- package/dest/avm/bytecode_utils.d.ts +0 -5
- package/dest/avm/bytecode_utils.d.ts.map +0 -1
- package/dest/avm/errors.d.ts +0 -121
- package/dest/avm/errors.d.ts.map +0 -1
- package/dest/avm/fixtures/avm_simulation_tester.d.ts +0 -21
- package/dest/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
- package/dest/avm/fixtures/base_avm_simulation_tester.d.ts +0 -35
- package/dest/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
- package/dest/avm/fixtures/index.d.ts +0 -67
- package/dest/avm/fixtures/index.d.ts.map +0 -1
- package/dest/avm/fixtures/simple_contract_data_source.d.ts +0 -31
- package/dest/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
- package/dest/avm/index.d.ts +0 -4
- package/dest/avm/index.d.ts.map +0 -1
- package/dest/avm/journal/index.d.ts +0 -2
- package/dest/avm/journal/index.d.ts.map +0 -1
- package/dest/avm/journal/journal.d.ts +0 -176
- package/dest/avm/journal/journal.d.ts.map +0 -1
- package/dest/avm/journal/nullifiers.d.ts +0 -62
- package/dest/avm/journal/nullifiers.d.ts.map +0 -1
- package/dest/avm/journal/public_storage.d.ts +0 -66
- package/dest/avm/journal/public_storage.d.ts.map +0 -1
- package/dest/avm/opcodes/accrued_substate.d.ts +0 -75
- package/dest/avm/opcodes/accrued_substate.d.ts.map +0 -1
- package/dest/avm/opcodes/addressing_mode.d.ts +0 -27
- package/dest/avm/opcodes/addressing_mode.d.ts.map +0 -1
- package/dest/avm/opcodes/arithmetic.d.ts +0 -37
- package/dest/avm/opcodes/arithmetic.d.ts.map +0 -1
- package/dest/avm/opcodes/bitwise.d.ts +0 -50
- package/dest/avm/opcodes/bitwise.d.ts.map +0 -1
- package/dest/avm/opcodes/comparators.d.ts +0 -25
- package/dest/avm/opcodes/comparators.d.ts.map +0 -1
- package/dest/avm/opcodes/contract.d.ts +0 -21
- package/dest/avm/opcodes/contract.d.ts.map +0 -1
- package/dest/avm/opcodes/control_flow.d.ts +0 -41
- package/dest/avm/opcodes/control_flow.d.ts.map +0 -1
- package/dest/avm/opcodes/conversion.d.ts +0 -17
- package/dest/avm/opcodes/conversion.d.ts.map +0 -1
- package/dest/avm/opcodes/ec_add.d.ts +0 -19
- package/dest/avm/opcodes/ec_add.d.ts.map +0 -1
- package/dest/avm/opcodes/environment_getters.d.ts +0 -28
- package/dest/avm/opcodes/environment_getters.d.ts.map +0 -1
- package/dest/avm/opcodes/external_calls.d.ts +0 -50
- package/dest/avm/opcodes/external_calls.d.ts.map +0 -1
- package/dest/avm/opcodes/hashing.d.ts +0 -36
- package/dest/avm/opcodes/hashing.d.ts.map +0 -1
- package/dest/avm/opcodes/index.d.ts +0 -16
- package/dest/avm/opcodes/index.d.ts.map +0 -1
- package/dest/avm/opcodes/instruction.d.ts +0 -70
- package/dest/avm/opcodes/instruction.d.ts.map +0 -1
- package/dest/avm/opcodes/instruction_impl.d.ts +0 -19
- package/dest/avm/opcodes/instruction_impl.d.ts.map +0 -1
- package/dest/avm/opcodes/memory.d.ts +0 -74
- package/dest/avm/opcodes/memory.d.ts.map +0 -1
- package/dest/avm/opcodes/misc.d.ts +0 -17
- package/dest/avm/opcodes/misc.d.ts.map +0 -1
- package/dest/avm/opcodes/multi_scalar_mul.d.ts +0 -16
- package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +0 -1
- package/dest/avm/opcodes/storage.d.ts +0 -24
- package/dest/avm/opcodes/storage.d.ts.map +0 -1
- package/dest/avm/serialization/buffer_cursor.d.ts +0 -28
- package/dest/avm/serialization/buffer_cursor.d.ts.map +0 -1
- package/dest/avm/serialization/bytecode_serialization.d.ts +0 -21
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +0 -1
- package/dest/avm/serialization/instruction_serialization.d.ts +0 -105
- package/dest/avm/serialization/instruction_serialization.d.ts.map +0 -1
- package/dest/avm/test_utils.d.ts +0 -16
- package/dest/avm/test_utils.d.ts.map +0 -1
- package/dest/client/client_execution_context.d.ts +0 -214
- package/dest/client/client_execution_context.d.ts.map +0 -1
- package/dest/client/db_oracle.d.ts +0 -229
- package/dest/client/db_oracle.d.ts.map +0 -1
- package/dest/client/execution_note_cache.d.ts +0 -93
- package/dest/client/execution_note_cache.d.ts.map +0 -1
- package/dest/client/index.d.ts +0 -15
- package/dest/client/index.d.ts.map +0 -1
- package/dest/client/pick_notes.d.ts +0 -85
- package/dest/client/pick_notes.d.ts.map +0 -1
- package/dest/client/private_execution.d.ts +0 -19
- package/dest/client/private_execution.d.ts.map +0 -1
- package/dest/client/simulator.d.ts +0 -60
- package/dest/client/simulator.d.ts.map +0 -1
- package/dest/client/unconstrained_execution.d.ts +0 -10
- package/dest/client/unconstrained_execution.d.ts.map +0 -1
- package/dest/client/view_data_oracle.d.ts +0 -159
- package/dest/client/view_data_oracle.d.ts.map +0 -1
- package/dest/common/debug_fn_name.d.ts +0 -4
- package/dest/common/debug_fn_name.d.ts.map +0 -1
- package/dest/common/errors.d.ts +0 -54
- package/dest/common/errors.d.ts.map +0 -1
- package/dest/common/hashed_values_cache.d.ts +0 -28
- package/dest/common/hashed_values_cache.d.ts.map +0 -1
- package/dest/common/index.d.ts +0 -3
- package/dest/common/index.d.ts.map +0 -1
- package/dest/common/message_load_oracle_inputs.d.ts +0 -15
- package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
- package/dest/common/simulation_provider.d.ts +0 -19
- package/dest/common/simulation_provider.d.ts.map +0 -1
- package/dest/common.d.ts +0 -2
- package/dest/common.d.ts.map +0 -1
- package/dest/providers/acvm_native.d.ts +0 -40
- package/dest/providers/acvm_native.d.ts.map +0 -1
- package/dest/providers/acvm_wasm.d.ts +0 -15
- package/dest/providers/acvm_wasm.d.ts.map +0 -1
- package/dest/providers/acvm_wasm_with_blobs.d.ts +0 -19
- package/dest/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
- package/dest/providers/factory.d.ts +0 -12
- package/dest/providers/factory.d.ts.map +0 -1
- package/dest/providers/index.d.ts +0 -5
- package/dest/providers/index.d.ts.map +0 -1
- package/dest/public/bytecode_errors.d.ts +0 -4
- package/dest/public/bytecode_errors.d.ts.map +0 -1
- package/dest/public/db_interfaces.d.ts +0 -105
- package/dest/public/db_interfaces.d.ts.map +0 -1
- package/dest/public/execution.d.ts +0 -102
- package/dest/public/execution.d.ts.map +0 -1
- package/dest/public/executor_metrics.d.ts +0 -13
- package/dest/public/executor_metrics.d.ts.map +0 -1
- package/dest/public/fee_payment.d.ts +0 -11
- package/dest/public/fee_payment.d.ts.map +0 -1
- package/dest/public/fixtures/index.d.ts +0 -3
- package/dest/public/fixtures/index.d.ts.map +0 -1
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +0 -21
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +0 -1
- package/dest/public/fixtures/utils.d.ts +0 -17
- package/dest/public/fixtures/utils.d.ts.map +0 -1
- package/dest/public/index.d.ts +0 -9
- package/dest/public/index.d.ts.map +0 -1
- package/dest/public/public_db_sources.d.ts +0 -81
- package/dest/public/public_db_sources.d.ts.map +0 -1
- package/dest/public/public_processor.d.ts +0 -72
- package/dest/public/public_processor.d.ts.map +0 -1
- package/dest/public/public_processor_metrics.d.ts +0 -27
- package/dest/public/public_processor_metrics.d.ts.map +0 -1
- package/dest/public/public_tx_context.d.ts +0 -131
- package/dest/public/public_tx_context.d.ts.map +0 -1
- package/dest/public/public_tx_simulator.d.ts +0 -99
- package/dest/public/public_tx_simulator.d.ts.map +0 -1
- package/dest/public/side_effect_errors.d.ts +0 -4
- package/dest/public/side_effect_errors.d.ts.map +0 -1
- package/dest/public/side_effect_trace.d.ts +0 -126
- package/dest/public/side_effect_trace.d.ts.map +0 -1
- package/dest/public/side_effect_trace_interface.d.ts +0 -32
- package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
- package/dest/public/unique_class_ids.d.ts +0 -37
- package/dest/public/unique_class_ids.d.ts.map +0 -1
- package/dest/public/utils.d.ts +0 -5
- package/dest/public/utils.d.ts.map +0 -1
- package/dest/server.d.ts +0 -6
- package/dest/server.d.ts.map +0 -1
- package/dest/stats/index.d.ts +0 -2
- package/dest/stats/index.d.ts.map +0 -1
- package/dest/stats/stats.d.ts +0 -4
- package/dest/stats/stats.d.ts.map +0 -1
- package/dest/test/utils.d.ts +0 -12
- package/dest/test/utils.d.ts.map +0 -1
|
@@ -5,9 +5,13 @@ import { Instruction } from './instruction.js';
|
|
|
5
5
|
import { ThreeOperandInstruction } from './instruction_impl.js';
|
|
6
6
|
class ThreeOperandBitwiseInstruction extends ThreeOperandInstruction {
|
|
7
7
|
async execute(context) {
|
|
8
|
-
const memory = context.machineState.memory
|
|
8
|
+
const memory = context.machineState.memory;
|
|
9
9
|
context.machineState.consumeGas(this.gasCost());
|
|
10
|
-
const operands = [
|
|
10
|
+
const operands = [
|
|
11
|
+
this.aOffset,
|
|
12
|
+
this.bOffset,
|
|
13
|
+
this.dstOffset
|
|
14
|
+
];
|
|
11
15
|
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
12
16
|
const [aOffset, bOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
13
17
|
this.checkTags(memory, aOffset, bOffset);
|
|
@@ -15,7 +19,6 @@ class ThreeOperandBitwiseInstruction extends ThreeOperandInstruction {
|
|
|
15
19
|
const b = memory.getAs(bOffset);
|
|
16
20
|
const res = this.compute(a, b);
|
|
17
21
|
memory.set(dstOffset, res);
|
|
18
|
-
memory.assert({ reads: 2, writes: 1, addressing });
|
|
19
22
|
}
|
|
20
23
|
checkTags(memory, aOffset, bOffset) {
|
|
21
24
|
TaggedMemory.checkIsIntegralTag(memory.getTag(aOffset));
|
|
@@ -23,27 +26,29 @@ class ThreeOperandBitwiseInstruction extends ThreeOperandInstruction {
|
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
28
|
export class And extends ThreeOperandBitwiseInstruction {
|
|
29
|
+
static type = 'AND';
|
|
30
|
+
static opcode = Opcode.AND_8;
|
|
26
31
|
compute(a, b) {
|
|
27
32
|
return a.and(b);
|
|
28
33
|
}
|
|
29
34
|
}
|
|
30
|
-
And.type = 'AND';
|
|
31
|
-
And.opcode = Opcode.AND_8; // FIXME: needed for gas.
|
|
32
35
|
export class Or extends ThreeOperandBitwiseInstruction {
|
|
36
|
+
static type = 'OR';
|
|
37
|
+
static opcode = Opcode.OR_8;
|
|
33
38
|
compute(a, b) {
|
|
34
39
|
return a.or(b);
|
|
35
40
|
}
|
|
36
41
|
}
|
|
37
|
-
Or.type = 'OR';
|
|
38
|
-
Or.opcode = Opcode.OR_8; // FIXME: needed for gas.
|
|
39
42
|
export class Xor extends ThreeOperandBitwiseInstruction {
|
|
43
|
+
static type = 'XOR';
|
|
44
|
+
static opcode = Opcode.XOR_8;
|
|
40
45
|
compute(a, b) {
|
|
41
46
|
return a.xor(b);
|
|
42
47
|
}
|
|
43
48
|
}
|
|
44
|
-
Xor.type = 'XOR';
|
|
45
|
-
Xor.opcode = Opcode.XOR_8; // FIXME: needed for gas.
|
|
46
49
|
export class Shl extends ThreeOperandBitwiseInstruction {
|
|
50
|
+
static type = 'SHL';
|
|
51
|
+
static opcode = Opcode.SHL_8;
|
|
47
52
|
compute(a, b) {
|
|
48
53
|
return a.shl(b);
|
|
49
54
|
}
|
|
@@ -52,9 +57,9 @@ export class Shl extends ThreeOperandBitwiseInstruction {
|
|
|
52
57
|
memory.checkTag(TypeTag.UINT8, bOffset);
|
|
53
58
|
}
|
|
54
59
|
}
|
|
55
|
-
Shl.type = 'SHL';
|
|
56
|
-
Shl.opcode = Opcode.SHL_8; // FIXME: needed for gas.
|
|
57
60
|
export class Shr extends ThreeOperandBitwiseInstruction {
|
|
61
|
+
static type = 'SHR';
|
|
62
|
+
static opcode = Opcode.SHR_8;
|
|
58
63
|
compute(a, b) {
|
|
59
64
|
return a.shr(b);
|
|
60
65
|
}
|
|
@@ -63,30 +68,39 @@ export class Shr extends ThreeOperandBitwiseInstruction {
|
|
|
63
68
|
memory.checkTag(TypeTag.UINT8, bOffset);
|
|
64
69
|
}
|
|
65
70
|
}
|
|
66
|
-
Shr.type = 'SHR';
|
|
67
|
-
Shr.opcode = Opcode.SHR_8; // FIXME: needed for gas.
|
|
68
71
|
export class Not extends Instruction {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
indirect;
|
|
73
|
+
srcOffset;
|
|
74
|
+
dstOffset;
|
|
75
|
+
static type = 'NOT';
|
|
76
|
+
static opcode = Opcode.NOT_8;
|
|
77
|
+
static wireFormat8 = [
|
|
78
|
+
OperandType.UINT8,
|
|
79
|
+
OperandType.UINT8,
|
|
80
|
+
OperandType.UINT8,
|
|
81
|
+
OperandType.UINT8
|
|
82
|
+
];
|
|
83
|
+
static wireFormat16 = [
|
|
84
|
+
OperandType.UINT8,
|
|
85
|
+
OperandType.UINT8,
|
|
86
|
+
OperandType.UINT16,
|
|
87
|
+
OperandType.UINT16
|
|
88
|
+
];
|
|
89
|
+
constructor(indirect, srcOffset, dstOffset){
|
|
90
|
+
super(), this.indirect = indirect, this.srcOffset = srcOffset, this.dstOffset = dstOffset;
|
|
74
91
|
}
|
|
75
92
|
async execute(context) {
|
|
76
|
-
const memory = context.machineState.memory
|
|
93
|
+
const memory = context.machineState.memory;
|
|
77
94
|
context.machineState.consumeGas(this.gasCost());
|
|
78
|
-
const operands = [
|
|
95
|
+
const operands = [
|
|
96
|
+
this.srcOffset,
|
|
97
|
+
this.dstOffset
|
|
98
|
+
];
|
|
79
99
|
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
80
100
|
const [srcOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
81
101
|
TaggedMemory.checkIsIntegralTag(memory.getTag(srcOffset));
|
|
82
102
|
const value = memory.getAs(srcOffset);
|
|
83
103
|
const res = value.not();
|
|
84
104
|
memory.set(dstOffset, res);
|
|
85
|
-
memory.assert({ reads: 1, writes: 1, addressing });
|
|
86
105
|
}
|
|
87
106
|
}
|
|
88
|
-
Not.type = 'NOT';
|
|
89
|
-
Not.opcode = Opcode.NOT_8;
|
|
90
|
-
Not.wireFormat8 = [OperandType.UINT8, OperandType.UINT8, OperandType.UINT8, OperandType.UINT8];
|
|
91
|
-
Not.wireFormat16 = [OperandType.UINT8, OperandType.UINT8, OperandType.UINT16, OperandType.UINT16];
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0d2lzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9iaXR3aXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBc0IsWUFBWSxFQUE4QixPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFaEUsTUFBZSw4QkFBK0IsU0FBUSx1QkFBdUI7SUFDcEUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFtQjtRQUN0QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVELE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRWhELE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RCxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLENB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
|
|
@@ -4,9 +4,13 @@ import { Addressing } from './addressing_mode.js';
|
|
|
4
4
|
import { ThreeOperandInstruction } from './instruction_impl.js';
|
|
5
5
|
class ComparatorInstruction extends ThreeOperandInstruction {
|
|
6
6
|
async execute(context) {
|
|
7
|
-
const memory = context.machineState.memory
|
|
7
|
+
const memory = context.machineState.memory;
|
|
8
8
|
context.machineState.consumeGas(this.gasCost());
|
|
9
|
-
const operands = [
|
|
9
|
+
const operands = [
|
|
10
|
+
this.aOffset,
|
|
11
|
+
this.bOffset,
|
|
12
|
+
this.dstOffset
|
|
13
|
+
];
|
|
10
14
|
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
11
15
|
const [aOffset, bOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
12
16
|
memory.checkTagsAreSame(aOffset, bOffset);
|
|
@@ -14,28 +18,26 @@ class ComparatorInstruction extends ThreeOperandInstruction {
|
|
|
14
18
|
const b = memory.get(bOffset);
|
|
15
19
|
const dest = new Uint1(this.compare(a, b) ? 1 : 0);
|
|
16
20
|
memory.set(dstOffset, dest);
|
|
17
|
-
memory.assert({ reads: 2, writes: 1, addressing });
|
|
18
21
|
}
|
|
19
22
|
}
|
|
20
23
|
export class Eq extends ComparatorInstruction {
|
|
24
|
+
static type = 'EQ';
|
|
25
|
+
static opcode = Opcode.EQ_8;
|
|
21
26
|
compare(a, b) {
|
|
22
27
|
return a.equals(b);
|
|
23
28
|
}
|
|
24
29
|
}
|
|
25
|
-
Eq.type = 'EQ';
|
|
26
|
-
Eq.opcode = Opcode.EQ_8; // FIXME: needed for gas.
|
|
27
30
|
export class Lt extends ComparatorInstruction {
|
|
31
|
+
static type = 'LT';
|
|
32
|
+
static opcode = Opcode.LT_8;
|
|
28
33
|
compare(a, b) {
|
|
29
34
|
return a.lt(b);
|
|
30
35
|
}
|
|
31
36
|
}
|
|
32
|
-
Lt.type = 'LT';
|
|
33
|
-
Lt.opcode = Opcode.LT_8; // FIXME: needed for gas.
|
|
34
37
|
export class Lte extends ComparatorInstruction {
|
|
38
|
+
static type = 'LTE';
|
|
39
|
+
static opcode = Opcode.LTE_8;
|
|
35
40
|
compare(a, b) {
|
|
36
41
|
return a.lt(b) || a.equals(b);
|
|
37
42
|
}
|
|
38
43
|
}
|
|
39
|
-
Lte.type = 'LTE';
|
|
40
|
-
Lte.opcode = Opcode.LTE_8; // FIXME: needed for gas.
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvY29tcGFyYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFvQixLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWhFLE1BQWUscUJBQXNCLFNBQVEsdUJBQXVCO0lBQzNELEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBbUI7UUFDdEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUVoRCxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUQsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QixNQUFNLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU1QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUdGO0FBRUQsTUFBTSxPQUFPLEVBQUcsU0FBUSxxQkFBcUI7SUFJakMsT0FBTyxDQUFDLENBQWMsRUFBRSxDQUFjO1FBQzlDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixDQUFDOztBQUxlLE9BQUksR0FBVyxJQUFJLENBQUM7QUFDcEIsU0FBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyx5QkFBeUI7QUFPakUsTUFBTSxPQUFPLEVBQUcsU0FBUSxxQkFBcUI7SUFJakMsT0FBTyxDQUFDLENBQWMsRUFBRSxDQUFjO1FBQzlDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixDQUFDOztBQUxlLE9BQUksR0FBVyxJQUFJLENBQUM7QUFDcEIsU0FBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyx5QkFBeUI7QUFPakUsTUFBTSxPQUFPLEdBQUksU0FBUSxxQkFBcUI7SUFJbEMsT0FBTyxDQUFDLENBQWMsRUFBRSxDQUFjO1FBQzlDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O0FBTGUsUUFBSSxHQUFXLEtBQUssQ0FBQztBQUNyQixVQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLHlCQUF5QiJ9
|
|
@@ -3,28 +3,43 @@ import { InstructionExecutionError } from '../errors.js';
|
|
|
3
3
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
4
4
|
import { Addressing } from './addressing_mode.js';
|
|
5
5
|
import { Instruction } from './instruction.js';
|
|
6
|
-
export var ContractInstanceMember
|
|
7
|
-
(function (ContractInstanceMember) {
|
|
6
|
+
export var ContractInstanceMember = /*#__PURE__*/ function(ContractInstanceMember) {
|
|
8
7
|
ContractInstanceMember[ContractInstanceMember["DEPLOYER"] = 0] = "DEPLOYER";
|
|
9
8
|
ContractInstanceMember[ContractInstanceMember["CLASS_ID"] = 1] = "CLASS_ID";
|
|
10
9
|
ContractInstanceMember[ContractInstanceMember["INIT_HASH"] = 2] = "INIT_HASH";
|
|
11
|
-
|
|
10
|
+
return ContractInstanceMember;
|
|
11
|
+
}({});
|
|
12
12
|
export class GetContractInstance extends Instruction {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
indirect;
|
|
14
|
+
addressOffset;
|
|
15
|
+
dstOffset;
|
|
16
|
+
existsOffset;
|
|
17
|
+
memberEnum;
|
|
18
|
+
static type = 'GETCONTRACTINSTANCE';
|
|
19
|
+
static opcode = Opcode.GETCONTRACTINSTANCE;
|
|
20
|
+
// Informs (de)serialization. See Instruction.deserialize.
|
|
21
|
+
static wireFormat = [
|
|
22
|
+
OperandType.UINT8,
|
|
23
|
+
OperandType.UINT8,
|
|
24
|
+
OperandType.UINT16,
|
|
25
|
+
OperandType.UINT16,
|
|
26
|
+
OperandType.UINT16,
|
|
27
|
+
OperandType.UINT8
|
|
28
|
+
];
|
|
29
|
+
constructor(indirect, addressOffset, dstOffset, existsOffset, memberEnum){
|
|
30
|
+
super(), this.indirect = indirect, this.addressOffset = addressOffset, this.dstOffset = dstOffset, this.existsOffset = existsOffset, this.memberEnum = memberEnum;
|
|
20
31
|
}
|
|
21
32
|
async execute(context) {
|
|
22
|
-
const memory = context.machineState.memory
|
|
33
|
+
const memory = context.machineState.memory;
|
|
23
34
|
context.machineState.consumeGas(this.gasCost());
|
|
24
35
|
if (!(this.memberEnum in ContractInstanceMember)) {
|
|
25
36
|
throw new InstructionExecutionError(`Invalid GETCONSTRACTINSTANCE member enum ${this.memberEnum}`);
|
|
26
37
|
}
|
|
27
|
-
const operands = [
|
|
38
|
+
const operands = [
|
|
39
|
+
this.addressOffset,
|
|
40
|
+
this.dstOffset,
|
|
41
|
+
this.existsOffset
|
|
42
|
+
];
|
|
28
43
|
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
29
44
|
const [addressOffset, dstOffset, existsOffset] = addressing.resolve(operands, memory);
|
|
30
45
|
memory.checkTag(TypeTag.FIELD, addressOffset);
|
|
@@ -33,32 +48,19 @@ export class GetContractInstance extends Instruction {
|
|
|
33
48
|
const exists = instance !== undefined;
|
|
34
49
|
let memberValue = new Field(0);
|
|
35
50
|
if (exists) {
|
|
36
|
-
switch
|
|
37
|
-
case
|
|
51
|
+
switch(this.memberEnum){
|
|
52
|
+
case 0:
|
|
38
53
|
memberValue = new Field(instance.deployer.toField());
|
|
39
54
|
break;
|
|
40
|
-
case
|
|
55
|
+
case 1:
|
|
41
56
|
memberValue = new Field(instance.contractClassId.toField());
|
|
42
57
|
break;
|
|
43
|
-
case
|
|
58
|
+
case 2:
|
|
44
59
|
memberValue = new Field(instance.initializationHash);
|
|
45
60
|
break;
|
|
46
61
|
}
|
|
47
62
|
}
|
|
48
63
|
memory.set(existsOffset, new Uint1(exists ? 1 : 0));
|
|
49
64
|
memory.set(dstOffset, memberValue);
|
|
50
|
-
memory.assert({ reads: 1, writes: 2, addressing });
|
|
51
65
|
}
|
|
52
66
|
}
|
|
53
|
-
GetContractInstance.type = 'GETCONTRACTINSTANCE';
|
|
54
|
-
GetContractInstance.opcode = Opcode.GETCONTRACTINSTANCE;
|
|
55
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
56
|
-
GetContractInstance.wireFormat = [
|
|
57
|
-
OperandType.UINT8, // opcode
|
|
58
|
-
OperandType.UINT8, // indirect bits
|
|
59
|
-
OperandType.UINT16, // addressOffset
|
|
60
|
-
OperandType.UINT16, // dstOffset
|
|
61
|
-
OperandType.UINT16, // existsOfsset
|
|
62
|
-
OperandType.UINT8, // member enum (immediate)
|
|
63
|
-
];
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxNQUFNLENBQU4sSUFBWSxzQkFJWDtBQUpELFdBQVksc0JBQXNCO0lBQ2hDLDJFQUFRLENBQUE7SUFDUiwyRUFBUSxDQUFBO0lBQ1IsNkVBQVMsQ0FBQTtBQUNYLENBQUMsRUFKVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBSWpDO0FBRUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFdBQVc7SUFhbEQsWUFDVSxRQUFnQixFQUNoQixhQUFxQixFQUNyQixTQUFpQixFQUNqQixZQUFvQixFQUNwQixVQUFrQjtRQUUxQixLQUFLLEVBQUUsQ0FBQztRQU5BLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFRO0lBRzVCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQW1CO1FBQy9CLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsT0FBTyxDQUFDLFlBQVks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
|
|
@@ -3,82 +3,92 @@ import { Opcode, OperandType } from '../serialization/instruction_serialization.
|
|
|
3
3
|
import { Addressing } from './addressing_mode.js';
|
|
4
4
|
import { Instruction } from './instruction.js';
|
|
5
5
|
export class Jump extends Instruction {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
jumpOffset;
|
|
7
|
+
static type = 'JUMP';
|
|
8
|
+
static opcode = Opcode.JUMP_32;
|
|
9
|
+
// Informs (de)serialization. See Instruction.deserialize.
|
|
10
|
+
static wireFormat = [
|
|
11
|
+
OperandType.UINT8,
|
|
12
|
+
OperandType.UINT32
|
|
13
|
+
];
|
|
14
|
+
constructor(jumpOffset){
|
|
15
|
+
super(), this.jumpOffset = jumpOffset;
|
|
9
16
|
}
|
|
10
17
|
async execute(context) {
|
|
11
18
|
context.machineState.consumeGas(this.gasCost());
|
|
12
19
|
context.machineState.pc = this.jumpOffset;
|
|
13
|
-
context.machineState.memory.assert({});
|
|
14
20
|
}
|
|
15
21
|
handlesPC() {
|
|
16
22
|
return true;
|
|
17
23
|
}
|
|
18
24
|
}
|
|
19
|
-
Jump.type = 'JUMP';
|
|
20
|
-
Jump.opcode = Opcode.JUMP_32;
|
|
21
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
22
|
-
Jump.wireFormat = [OperandType.UINT8, OperandType.UINT32];
|
|
23
25
|
export class JumpI extends Instruction {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
indirect;
|
|
27
|
+
condOffset;
|
|
28
|
+
loc;
|
|
29
|
+
static type = 'JUMPI';
|
|
30
|
+
static opcode = Opcode.JUMPI_32;
|
|
31
|
+
// Instruction wire format with opcode.
|
|
32
|
+
static wireFormat = [
|
|
33
|
+
OperandType.UINT8,
|
|
34
|
+
OperandType.UINT8,
|
|
35
|
+
OperandType.UINT16,
|
|
36
|
+
OperandType.UINT32
|
|
37
|
+
];
|
|
38
|
+
constructor(indirect, condOffset, loc){
|
|
39
|
+
super(), this.indirect = indirect, this.condOffset = condOffset, this.loc = loc;
|
|
29
40
|
}
|
|
30
41
|
async execute(context) {
|
|
31
|
-
const memory = context.machineState.memory
|
|
42
|
+
const memory = context.machineState.memory;
|
|
32
43
|
context.machineState.consumeGas(this.gasCost());
|
|
33
|
-
const operands = [
|
|
44
|
+
const operands = [
|
|
45
|
+
this.condOffset
|
|
46
|
+
];
|
|
34
47
|
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
35
48
|
const [condOffset] = addressing.resolve(operands, memory);
|
|
36
49
|
const condition = memory.getAs(condOffset);
|
|
37
50
|
if (condition.toBigInt() == 0n) {
|
|
38
51
|
context.machineState.pc = context.machineState.nextPc;
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
52
|
+
} else {
|
|
41
53
|
context.machineState.pc = this.loc;
|
|
42
54
|
}
|
|
43
|
-
memory.assert({ reads: 1, addressing });
|
|
44
55
|
}
|
|
45
56
|
handlesPC() {
|
|
46
57
|
return true;
|
|
47
58
|
}
|
|
48
59
|
}
|
|
49
|
-
JumpI.type = 'JUMPI';
|
|
50
|
-
JumpI.opcode = Opcode.JUMPI_32;
|
|
51
|
-
// Instruction wire format with opcode.
|
|
52
|
-
JumpI.wireFormat = [
|
|
53
|
-
OperandType.UINT8,
|
|
54
|
-
OperandType.UINT8,
|
|
55
|
-
OperandType.UINT16,
|
|
56
|
-
OperandType.UINT32,
|
|
57
|
-
];
|
|
58
60
|
export class InternalCall extends Instruction {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
loc;
|
|
62
|
+
static type = 'INTERNALCALL';
|
|
63
|
+
static opcode = Opcode.INTERNALCALL;
|
|
64
|
+
// Informs (de)serialization. See Instruction.deserialize.
|
|
65
|
+
static wireFormat = [
|
|
66
|
+
OperandType.UINT8,
|
|
67
|
+
OperandType.UINT32
|
|
68
|
+
];
|
|
69
|
+
constructor(loc){
|
|
70
|
+
super(), this.loc = loc;
|
|
62
71
|
}
|
|
63
72
|
async execute(context) {
|
|
64
73
|
context.machineState.consumeGas(this.gasCost());
|
|
65
74
|
context.machineState.internalCallStack.push({
|
|
66
75
|
callPc: context.machineState.pc,
|
|
67
|
-
returnPc: context.machineState.nextPc
|
|
76
|
+
returnPc: context.machineState.nextPc
|
|
68
77
|
});
|
|
69
78
|
context.machineState.pc = this.loc;
|
|
70
|
-
context.machineState.memory.assert({});
|
|
71
79
|
}
|
|
72
80
|
handlesPC() {
|
|
73
81
|
return true;
|
|
74
82
|
}
|
|
75
83
|
}
|
|
76
|
-
InternalCall.type = 'INTERNALCALL';
|
|
77
|
-
InternalCall.opcode = Opcode.INTERNALCALL;
|
|
78
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
79
|
-
InternalCall.wireFormat = [OperandType.UINT8, OperandType.UINT32];
|
|
80
84
|
export class InternalReturn extends Instruction {
|
|
81
|
-
|
|
85
|
+
static type = 'INTERNALRETURN';
|
|
86
|
+
static opcode = Opcode.INTERNALRETURN;
|
|
87
|
+
// Informs (de)serialization. See Instruction.deserialize.
|
|
88
|
+
static wireFormat = [
|
|
89
|
+
OperandType.UINT8
|
|
90
|
+
];
|
|
91
|
+
constructor(){
|
|
82
92
|
super();
|
|
83
93
|
}
|
|
84
94
|
async execute(context) {
|
|
@@ -88,14 +98,8 @@ export class InternalReturn extends Instruction {
|
|
|
88
98
|
throw new InstructionExecutionError('Internal call stack empty!');
|
|
89
99
|
}
|
|
90
100
|
context.machineState.pc = stackEntry.returnPc;
|
|
91
|
-
context.machineState.memory.assert({});
|
|
92
101
|
}
|
|
93
102
|
handlesPC() {
|
|
94
103
|
return true;
|
|
95
104
|
}
|
|
96
105
|
}
|
|
97
|
-
InternalReturn.type = 'INTERNALRETURN';
|
|
98
|
-
InternalReturn.opcode = Opcode.INTERNALRETURN;
|
|
99
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
100
|
-
InternalReturn.wireFormat = [OperandType.UINT8];
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbF9mbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F2bS9vcGNvZGVzL2NvbnRyb2xfZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE1BQU0sT0FBTyxJQUFLLFNBQVEsV0FBVztJQU1uQyxZQUFvQixVQUFrQjtRQUNwQyxLQUFLLEVBQUUsQ0FBQztRQURVLGVBQVUsR0FBVixVQUFVLENBQVE7SUFFdEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBbUI7UUFDdEMsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFaEQsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUUxQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVlLFNBQVM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztBQW5CTSxTQUFJLEdBQVcsTUFBTSxDQUFDO0FBQ2IsV0FBTSxHQUFXLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDaEQsMERBQTBEO0FBQzFDLGVBQVUsR0FBa0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQW1CdEYsTUFBTSxPQUFPLEtBQU0sU0FBUSxXQUFXO0lBWXBDLFlBQW9CLFFBQWdCLEVBQVUsVUFBa0IsRUFBVSxHQUFXO1FB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
|
|
@@ -4,18 +4,36 @@ import { Opcode, OperandType } from '../serialization/instruction_serialization.
|
|
|
4
4
|
import { Addressing } from './addressing_mode.js';
|
|
5
5
|
import { Instruction } from './instruction.js';
|
|
6
6
|
export class ToRadixBE extends Instruction {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
indirect;
|
|
8
|
+
srcOffset;
|
|
9
|
+
radixOffset;
|
|
10
|
+
numLimbsOffset;
|
|
11
|
+
outputBitsOffset;
|
|
12
|
+
dstOffset;
|
|
13
|
+
static type = 'TORADIXBE';
|
|
14
|
+
static opcode = Opcode.TORADIXBE;
|
|
15
|
+
// Informs (de)serialization. See Instruction.deserialize.
|
|
16
|
+
static wireFormat = [
|
|
17
|
+
OperandType.UINT8,
|
|
18
|
+
OperandType.UINT16,
|
|
19
|
+
OperandType.UINT16,
|
|
20
|
+
OperandType.UINT16,
|
|
21
|
+
OperandType.UINT16,
|
|
22
|
+
OperandType.UINT16,
|
|
23
|
+
OperandType.UINT16
|
|
24
|
+
];
|
|
25
|
+
constructor(indirect, srcOffset, radixOffset, numLimbsOffset, outputBitsOffset, dstOffset){
|
|
26
|
+
super(), this.indirect = indirect, this.srcOffset = srcOffset, this.radixOffset = radixOffset, this.numLimbsOffset = numLimbsOffset, this.outputBitsOffset = outputBitsOffset, this.dstOffset = dstOffset;
|
|
15
27
|
}
|
|
16
28
|
async execute(context) {
|
|
17
|
-
const memory = context.machineState.memory
|
|
18
|
-
const operands = [
|
|
29
|
+
const memory = context.machineState.memory;
|
|
30
|
+
const operands = [
|
|
31
|
+
this.srcOffset,
|
|
32
|
+
this.radixOffset,
|
|
33
|
+
this.numLimbsOffset,
|
|
34
|
+
this.outputBitsOffset,
|
|
35
|
+
this.dstOffset
|
|
36
|
+
];
|
|
19
37
|
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
20
38
|
const [srcOffset, radixOffset, numLimbsOffset, outputBitsOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
21
39
|
// The radix gadget only takes in a Field
|
|
@@ -39,27 +57,13 @@ export class ToRadixBE extends Instruction {
|
|
|
39
57
|
}
|
|
40
58
|
const radixBN = BigInt(radix);
|
|
41
59
|
const limbArray = new Array(numLimbs);
|
|
42
|
-
for
|
|
60
|
+
for(let i = numLimbs - 1; i >= 0; i--){
|
|
43
61
|
const limb = value % radixBN;
|
|
44
62
|
limbArray[i] = limb;
|
|
45
63
|
value /= radixBN;
|
|
46
64
|
}
|
|
47
65
|
const outputType = outputBits != 0 ? Uint1 : Uint8;
|
|
48
|
-
const res = limbArray.map(byte
|
|
66
|
+
const res = limbArray.map((byte)=>new outputType(byte));
|
|
49
67
|
memory.setSlice(dstOffset, res);
|
|
50
|
-
memory.assert({ reads: 4, writes: numLimbs, addressing });
|
|
51
68
|
}
|
|
52
69
|
}
|
|
53
|
-
ToRadixBE.type = 'TORADIXBE';
|
|
54
|
-
ToRadixBE.opcode = Opcode.TORADIXBE;
|
|
55
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
56
|
-
ToRadixBE.wireFormat = [
|
|
57
|
-
OperandType.UINT8, // Opcode
|
|
58
|
-
OperandType.UINT16, // Indirect
|
|
59
|
-
OperandType.UINT16, // src memory address
|
|
60
|
-
OperandType.UINT16, // radix memory address
|
|
61
|
-
OperandType.UINT16, // number of limbs address
|
|
62
|
-
OperandType.UINT16, // output is in "bits" mode memory address (boolean/Uint1 is stored)
|
|
63
|
-
OperandType.UINT16, // dst memory address
|
|
64
|
-
];
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9jb252ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFL0MsTUFBTSxPQUFPLFNBQVUsU0FBUSxXQUFXO0lBZXhDLFlBQ1UsUUFBZ0IsRUFDaEIsU0FBaUIsRUFDakIsV0FBbUIsRUFDbkIsY0FBc0IsRUFDdEIsZ0JBQXdCLEVBQ3hCLFNBQWlCO1FBRXpCLEtBQUssRUFBRSxDQUFDO1FBUEEsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFRO1FBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBRzNCLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQW1CO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUs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
|
|
@@ -5,19 +5,33 @@ import { Opcode, OperandType } from '../serialization/instruction_serialization.
|
|
|
5
5
|
import { Addressing } from './addressing_mode.js';
|
|
6
6
|
import { Instruction } from './instruction.js';
|
|
7
7
|
export class EcAdd extends Instruction {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
8
|
+
indirect;
|
|
9
|
+
p1XOffset;
|
|
10
|
+
p1YOffset;
|
|
11
|
+
p1IsInfiniteOffset;
|
|
12
|
+
p2XOffset;
|
|
13
|
+
p2YOffset;
|
|
14
|
+
p2IsInfiniteOffset;
|
|
15
|
+
dstOffset;
|
|
16
|
+
static type = 'ECADD';
|
|
17
|
+
static opcode = Opcode.ECADD;
|
|
18
|
+
// Informs (de)serialization. See Instruction.deserialize.
|
|
19
|
+
static wireFormat = [
|
|
20
|
+
OperandType.UINT8,
|
|
21
|
+
OperandType.UINT16,
|
|
22
|
+
OperandType.UINT16,
|
|
23
|
+
OperandType.UINT16,
|
|
24
|
+
OperandType.UINT16,
|
|
25
|
+
OperandType.UINT16,
|
|
26
|
+
OperandType.UINT16,
|
|
27
|
+
OperandType.UINT16,
|
|
28
|
+
OperandType.UINT16
|
|
29
|
+
];
|
|
30
|
+
constructor(indirect, p1XOffset, p1YOffset, p1IsInfiniteOffset, p2XOffset, p2YOffset, p2IsInfiniteOffset, dstOffset){
|
|
31
|
+
super(), this.indirect = indirect, this.p1XOffset = p1XOffset, this.p1YOffset = p1YOffset, this.p1IsInfiniteOffset = p1IsInfiniteOffset, this.p2XOffset = p2XOffset, this.p2YOffset = p2YOffset, this.p2IsInfiniteOffset = p2IsInfiniteOffset, this.dstOffset = dstOffset;
|
|
18
32
|
}
|
|
19
33
|
async execute(context) {
|
|
20
|
-
const memory = context.machineState.memory
|
|
34
|
+
const memory = context.machineState.memory;
|
|
21
35
|
context.machineState.consumeGas(this.gasCost());
|
|
22
36
|
const operands = [
|
|
23
37
|
this.p1XOffset,
|
|
@@ -26,7 +40,7 @@ export class EcAdd extends Instruction {
|
|
|
26
40
|
this.p2XOffset,
|
|
27
41
|
this.p2YOffset,
|
|
28
42
|
this.p2IsInfiniteOffset,
|
|
29
|
-
this.dstOffset
|
|
43
|
+
this.dstOffset
|
|
30
44
|
];
|
|
31
45
|
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
32
46
|
const [p1XOffset, p1YOffset, p1IsInfiniteOffset, p2XOffset, p2YOffset, p2IsInfiniteOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
@@ -51,33 +65,20 @@ export class EcAdd extends Instruction {
|
|
|
51
65
|
let dest;
|
|
52
66
|
if (p1IsInfinite) {
|
|
53
67
|
dest = p2;
|
|
54
|
-
}
|
|
55
|
-
else if (p2IsInfinite) {
|
|
68
|
+
} else if (p2IsInfinite) {
|
|
56
69
|
dest = p1;
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
70
|
+
} else {
|
|
59
71
|
dest = await grumpkin.add(p1, p2);
|
|
60
72
|
}
|
|
61
73
|
// Important to use setSlice() and not set() in the two following statements as
|
|
62
74
|
// this checks that the offsets lie within memory range.
|
|
63
|
-
memory.setSlice(dstOffset, [
|
|
75
|
+
memory.setSlice(dstOffset, [
|
|
76
|
+
new Field(dest.x),
|
|
77
|
+
new Field(dest.y)
|
|
78
|
+
]);
|
|
64
79
|
// Check representation of infinity for grumpkin
|
|
65
|
-
memory.setSlice(dstOffset + 2, [
|
|
66
|
-
|
|
80
|
+
memory.setSlice(dstOffset + 2, [
|
|
81
|
+
new Uint1(dest.equals(Point.ZERO) ? 1 : 0)
|
|
82
|
+
]);
|
|
67
83
|
}
|
|
68
84
|
}
|
|
69
|
-
EcAdd.type = 'ECADD';
|
|
70
|
-
EcAdd.opcode = Opcode.ECADD;
|
|
71
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
72
|
-
EcAdd.wireFormat = [
|
|
73
|
-
OperandType.UINT8, // reserved
|
|
74
|
-
OperandType.UINT16, // indirect
|
|
75
|
-
OperandType.UINT16, // p1X
|
|
76
|
-
OperandType.UINT16, // p1Y
|
|
77
|
-
OperandType.UINT16, // p1IsInfinite
|
|
78
|
-
OperandType.UINT16, // p2X
|
|
79
|
-
OperandType.UINT16, // p2Y
|
|
80
|
-
OperandType.UINT16, // p2IsInfinite
|
|
81
|
-
OperandType.UINT16, // dst
|
|
82
|
-
];
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNfYWRkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F2bS9vcGNvZGVzL2VjX2FkZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR2pELE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxNQUFNLE9BQU8sS0FBTSxTQUFRLFdBQVc7SUFpQnBDLFlBQ1UsUUFBZ0IsRUFDaEIsU0FBaUIsRUFDakIsU0FBaUIsRUFDakIsa0JBQTBCLEVBQzFCLFNBQWlCLEVBQ2pCLFNBQWlCLEVBQ2pCLGtCQUEwQixFQUMxQixTQUFpQjtRQUV6QixLQUFLLEVBQUUsQ0FBQztRQVRBLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtRQUMxQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBQzFCLGNBQVMsR0FBVCxTQUFTLENBQVE7SUFHM0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBbUI7UUFDdEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUVoRCxNQUFNLFFBQVEsR0FBRztZQUNmLElBQUksQ0FBQyxTQUFTO1lBQ2QsSUFBSSxDQUFDLFNBQVM7WUFDZCxJQUFJLENBQUMsa0JBQWtCO1lBQ3ZCLElBQUksQ0FBQyxTQUFTO1lBQ2QsSUFBSSxDQUFDLFNBQVM7WUFDZCxJQUFJLENBQUMsa0JBQWtCO1lBQ3ZCLElBQUksQ0FBQyxTQUFTO1NBQ2YsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkUsTUFBTSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLENBQUMsR0FDbkcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFdkMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBRXhFLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLCtDQUErQztRQUMvQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNoQyxJQUFJLElBQUksQ0FBQztRQUNULElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNaLENBQUM7YUFBTSxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ3hCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDWixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFFRCwrRUFBK0U7UUFDL0Usd0RBQXdEO1FBQ3hELE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsZ0RBQWdEO1FBQ2hELE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU3RSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQzs7QUFuRk0sVUFBSSxHQUFXLE9BQU8sQ0FBQztBQUNkLFlBQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBRXRDLDBEQUEwRDtBQUMxQyxnQkFBVSxHQUFrQjtJQUMxQyxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVc7SUFDOUIsV0FBVyxDQUFDLE1BQU0sRUFBRSxXQUFXO0lBQy9CLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTTtJQUMxQixXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU07SUFDMUIsV0FBVyxDQUFDLE1BQU0sRUFBRSxlQUFlO0lBQ25DLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTTtJQUMxQixXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU07SUFDMUIsV0FBVyxDQUFDLE1BQU0sRUFBRSxlQUFlO0lBQ25DLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTTtDQUMzQixDQUFDIn0=
|