diff --git a/crates/blockifier/resources/blockifier_versioned_constants_0_14_4.json b/crates/blockifier/resources/blockifier_versioned_constants_0_14_4.json index 53e6ba0d099..06fabebc056 100644 --- a/crates/blockifier/resources/blockifier_versioned_constants_0_14_4.json +++ b/crates/blockifier/resources/blockifier_versioned_constants_0_14_4.json @@ -493,10 +493,10 @@ }, "execute_txs_inner": { "Declare": { - "n_steps": 3523, + "n_steps": 3938, "n_memory_holes": 0, "builtin_instance_counter": { - "range_check_builtin": 72, + "range_check_builtin": 92, "pedersen_builtin": 4, "poseidon_builtin": 15 } diff --git a/crates/blockifier_test_utils/resources/feature_contracts/cairo1/os_resources_test_contract.cairo b/crates/blockifier_test_utils/resources/feature_contracts/cairo1/os_resources_test_contract.cairo index 2bde243870a..dbf4b9ac329 100644 --- a/crates/blockifier_test_utils/resources/feature_contracts/cairo1/os_resources_test_contract.cairo +++ b/crates/blockifier_test_utils/resources/feature_contracts/cairo1/os_resources_test_contract.cairo @@ -7,18 +7,12 @@ mod OsResourcesTestContract { use starknet::info::SyscallResultTrait; use starknet::secp256_trait::Secp256Trait; use starknet::secp256k1::{ - secp256k1_add_syscall, - secp256k1_get_point_from_x_syscall, - secp256k1_get_xy_syscall, - secp256k1_mul_syscall, - secp256k1_new_syscall, + secp256k1_add_syscall, secp256k1_get_point_from_x_syscall, secp256k1_get_xy_syscall, + secp256k1_mul_syscall, secp256k1_new_syscall, }; use starknet::secp256r1::{ - secp256r1_add_syscall, - secp256r1_get_point_from_x_syscall, - secp256r1_get_xy_syscall, - secp256r1_mul_syscall, - secp256r1_new_syscall, + secp256r1_add_syscall, secp256r1_get_point_from_x_syscall, secp256r1_get_xy_syscall, + secp256r1_mul_syscall, secp256r1_new_syscall, }; use starknet::syscalls::{ call_contract_syscall, deploy_syscall, emit_event_syscall, get_execution_info_v2_syscall, @@ -31,16 +25,16 @@ mod OsResourcesTestContract { const EXECUTE_FUNCTION_SELECTOR: felt252 = selector!("__execute__"); // SECP constants. - const MULT_CONSTANT: u256 - = 115792089237316195423570985008687907853269984665640564039457584007913129639935; - const X_FOR_K: u256 - = 111793196543967404139194827996419963236210979610743141064269745943111491389389; - const Y_FOR_K: u256 - = 64271137072396112709852516195602121116634737731930508083758518861847052748305; - const X_FOR_R: u256 - = 36259703446750261746963965979921905598426482711143882545997285073084044643087; - const Y_FOR_R: u256 - = 99074502569356486940077471307887399820854676440660107539358273498981469249968; + const MULT_CONSTANT: u256 = + 115792089237316195423570985008687907853269984665640564039457584007913129639935; + const X_FOR_K: u256 = + 111793196543967404139194827996419963236210979610743141064269745943111491389389; + const Y_FOR_K: u256 = + 64271137072396112709852516195602121116634737731930508083758518861847052748305; + const X_FOR_R: u256 = + 36259703446750261746963965979921905598426482711143882545997285073084044643087; + const Y_FOR_R: u256 = + 99074502569356486940077471307887399820854676440660107539358273498981469249968; #[storage] struct Storage {} @@ -152,8 +146,8 @@ mod OsResourcesTestContract { secp256k1_add_syscall(p0, k_p1).unwrap_syscall(); // secp256k1_get_point_from_x syscall. - let x:u256 = X_FOR_K; - let _ = secp256k1_get_point_from_x_syscall(:x, y_parity: true).unwrap_syscall(); + let x: u256 = X_FOR_K; + let _ = secp256k1_get_point_from_x_syscall(:x, y_parity: true).unwrap_syscall(); // secp256k1_get_xy syscall. secp256k1_get_xy_syscall(k_p1).unwrap_syscall(); diff --git a/crates/starknet_os_flow_tests/resources/deployable_for_resource_measurement.cairo b/crates/starknet_os_flow_tests/resources/deployable_for_resource_measurement.cairo index 6fbef07c8f2..d6c3c6f52d5 100644 --- a/crates/starknet_os_flow_tests/resources/deployable_for_resource_measurement.cairo +++ b/crates/starknet_os_flow_tests/resources/deployable_for_resource_measurement.cairo @@ -2,6 +2,8 @@ /// Originally compiled with compiler v2.17.0-rc.4. #[starknet::contract(account)] mod DeployableForResourceMeasurement { + use starknet::ClassHash; + #[storage] struct Storage {} @@ -20,6 +22,11 @@ mod DeployableForResourceMeasurement { starknet::VALIDATED } + #[external(v0)] + fn __validate_declare__(self: @ContractState, class_hash: ClassHash) -> felt252 { + starknet::VALIDATED + } + /// Main execute entry point should have variable input length to measure meta-tx linear factor. #[external(v0)] fn __execute__(ref self: ContractState, some_args: Span) {} diff --git a/crates/starknet_os_flow_tests/resources/deployable_for_resource_measurement.casm.json b/crates/starknet_os_flow_tests/resources/deployable_for_resource_measurement.casm.json index 5568258af4e..80068ae0108 100644 --- a/crates/starknet_os_flow_tests/resources/deployable_for_resource_measurement.casm.json +++ b/crates/starknet_os_flow_tests/resources/deployable_for_resource_measurement.casm.json @@ -87,7 +87,7 @@ "0x10780017fff7fff", "0xd", "0x1104800180018000", - "0x480", + "0x502", "0x482680017ff98000", "0x6", "0x48127fe17fff8000", @@ -98,9 +98,9 @@ "0x48127ffa7fff8000", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x495", + "0x517", "0x482480017fff8000", - "0x494", + "0x516", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -165,7 +165,7 @@ "0x482480017ffd8000", "0x1dce", "0x1104800180018000", - "0x437", + "0x4b9", "0x48127ff67fff8000", "0x48127ff67fff8000", "0x480a7ffb7fff8000", @@ -179,7 +179,7 @@ "0x482680017ffa8000", "0x1e96", "0x1104800180018000", - "0x42e", + "0x4b0", "0x48127ff67fff8000", "0x48127ff67fff8000", "0x480a7ffb7fff8000", @@ -289,7 +289,7 @@ "0x10780017fff7fff", "0xd", "0x1104800180018000", - "0x3b6", + "0x438", "0x482680017ff98000", "0x6", "0x48127fdb7fff8000", @@ -300,9 +300,9 @@ "0x48127ffa7fff8000", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3cb", + "0x44d", "0x482480017fff8000", - "0x3ca", + "0x44c", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -367,7 +367,7 @@ "0x482480017ff78000", "0x1aae", "0x1104800180018000", - "0x377", + "0x3f9", "0x48127ff67fff8000", "0x48127ff67fff8000", "0x480a7ffb7fff8000", @@ -377,7 +377,7 @@ "0x48127ffa7fff8000", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x372", + "0x3f4", "0x482680017ff98000", "0x1", "0x48127ff27fff8000", @@ -388,7 +388,7 @@ "0x48127ffa7fff8000", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x358", + "0x3da", "0x482680017ff98000", "0x1", "0x48127ff57fff8000", @@ -403,6 +403,136 @@ "0x482680017ffa8000", "0x1e96", "0x1104800180018000", + "0x3d0", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x6f", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x59", + "0x480280007ffc8000", + "0xa0680017fff8004", + "0xe", + "0x4824800180047ffe", + "0x800000000000000000000000000000000000000000000000000000000000000", + "0x484480017ffe8000", + "0x110000000000000000", + "0x48307ffe7fff8002", + "0x480280017ff97ffc", + "0x480280027ff97ffc", + "0x402480017ffb7ffd", + "0xffffffffffffffeeffffffffffffffff", + "0x400280037ff97ffd", + "0x10780017fff7fff", + "0x44", + "0x484480017fff8001", + "0x8000000000000000000000000000000", + "0x48307fff80007ffd", + "0x480280017ff97ffd", + "0x480280027ff97ffd", + "0x402480017ffc7ffe", + "0xf8000000000000000000000000000000", + "0x400280037ff97ffe", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x48307ffe80007fff", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xd", + "0x1104800180018000", + "0x38e", + "0x482680017ff98000", + "0x4", + "0x48127fec7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x3a3", + "0x482480017fff8000", + "0x3a2", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff0", + "0x0", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400280047ff97fff", + "0x10780017fff7fff", + "0x15", + "0x4824800180007ff0", + "0x0", + "0x400280047ff97fff", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x56414c4944", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x5", + "0x482480017ffc8000", + "0x186a", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x482680017ff98000", + "0x5", + "0x482480017fed8000", + "0x141e", + "0x10780017fff7fff", + "0x1a", + "0x482680017ff98000", + "0x4", + "0x482480017ff68000", + "0x1914", + "0x10780017fff7fff", + "0x6", + "0x482680017ff98000", + "0x1", + "0x482480017ffd8000", + "0x1dce", + "0x1104800180018000", + "0x357", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x482680017ff98000", + "0x1", + "0x482680017ffa8000", + "0x1e96", + "0x1104800180018000", "0x34e", "0x48127ff67fff8000", "0x48127ff67fff8000", @@ -1274,6 +1404,7 @@ "bytecode_segment_lengths": [ 186, 224, + 130, 182, 79, 182, @@ -1682,7 +1813,144 @@ ] ], [ - 429, + 426, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x800000000000000000000000000000000000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 430, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": 3 + } + }, + "scalar": { + "Immediate": "0x110000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -2 + }, + "y": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 440, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "scalar": { + "Immediate": "0x8000000000000000000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -1 + }, + "y": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 472, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -15 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 484, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 540, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 559, [ { "TestLessThan": { @@ -1710,7 +1978,7 @@ ] ], [ - 433, + 563, [ { "LinearSplit": { @@ -1739,7 +2007,7 @@ ] ], [ - 455, + 585, [ { "TestLessThanOrEqual": { @@ -1764,7 +2032,7 @@ ] ], [ - 467, + 597, [ { "TestLessThan": { @@ -1786,7 +2054,7 @@ ] ], [ - 477, + 607, [ { "TestLessThanOrEqual": { @@ -1811,7 +2079,7 @@ ] ], [ - 510, + 640, [ { "TestLessThanOrEqual": { @@ -1833,7 +2101,7 @@ ] ], [ - 522, + 652, [ { "AllocSegment": { @@ -1846,7 +2114,7 @@ ] ], [ - 592, + 722, [ { "TestLessThanOrEqual": { @@ -1868,7 +2136,7 @@ ] ], [ - 623, + 753, [ { "TestLessThanOrEqual": { @@ -1890,7 +2158,7 @@ ] ], [ - 635, + 765, [ { "AllocSegment": { @@ -1903,7 +2171,7 @@ ] ], [ - 671, + 801, [ { "TestLessThanOrEqual": { @@ -1925,7 +2193,7 @@ ] ], [ - 690, + 820, [ { "TestLessThan": { @@ -1953,7 +2221,7 @@ ] ], [ - 694, + 824, [ { "LinearSplit": { @@ -1982,7 +2250,7 @@ ] ], [ - 716, + 846, [ { "TestLessThanOrEqual": { @@ -2007,7 +2275,7 @@ ] ], [ - 728, + 858, [ { "TestLessThan": { @@ -2029,7 +2297,7 @@ ] ], [ - 738, + 868, [ { "TestLessThanOrEqual": { @@ -2054,7 +2322,7 @@ ] ], [ - 771, + 901, [ { "TestLessThanOrEqual": { @@ -2076,7 +2344,7 @@ ] ], [ - 783, + 913, [ { "AllocSegment": { @@ -2089,7 +2357,7 @@ ] ], [ - 853, + 983, [ { "TestLessThanOrEqual": { @@ -2111,7 +2379,7 @@ ] ], [ - 880, + 1010, [ { "TestLessThan": { @@ -2139,7 +2407,7 @@ ] ], [ - 884, + 1014, [ { "LinearSplit": { @@ -2168,7 +2436,7 @@ ] ], [ - 906, + 1036, [ { "TestLessThanOrEqual": { @@ -2193,7 +2461,7 @@ ] ], [ - 918, + 1048, [ { "TestLessThan": { @@ -2215,7 +2483,7 @@ ] ], [ - 928, + 1058, [ { "TestLessThanOrEqual": { @@ -2240,7 +2508,7 @@ ] ], [ - 961, + 1091, [ { "TestLessThanOrEqual": { @@ -2262,7 +2530,7 @@ ] ], [ - 973, + 1103, [ { "AllocSegment": { @@ -2275,7 +2543,7 @@ ] ], [ - 1054, + 1184, [ { "TestLessThanOrEqual": { @@ -2297,7 +2565,7 @@ ] ], [ - 1073, + 1203, [ { "TestLessThan": { @@ -2325,7 +2593,7 @@ ] ], [ - 1077, + 1207, [ { "LinearSplit": { @@ -2354,7 +2622,7 @@ ] ], [ - 1099, + 1229, [ { "TestLessThanOrEqual": { @@ -2379,7 +2647,7 @@ ] ], [ - 1111, + 1241, [ { "TestLessThan": { @@ -2401,7 +2669,7 @@ ] ], [ - 1121, + 1251, [ { "TestLessThanOrEqual": { @@ -2426,7 +2694,7 @@ ] ], [ - 1154, + 1284, [ { "TestLessThanOrEqual": { @@ -2448,7 +2716,7 @@ ] ], [ - 1166, + 1296, [ { "AllocSegment": { @@ -2461,7 +2729,7 @@ ] ], [ - 1261, + 1391, [ { "AllocSegment": { @@ -2478,14 +2746,14 @@ "EXTERNAL": [ { "selector": "0xd3748737d66b52a90ed3c1798b3f51d9a9266e607fdbc86e44f659bb173acd", - "offset": 592, + "offset": 722, "builtins": [ "range_check" ] }, { "selector": "0x15d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad", - "offset": 410, + "offset": 540, "builtins": [ "range_check" ] @@ -2497,6 +2765,13 @@ "range_check" ] }, + { + "selector": "0x289da278a8dc833409cabfdad1581e8e7d40e42dcaed693fa4008dcdb4963b3", + "offset": 410, + "builtins": [ + "range_check" + ] + }, { "selector": "0x36fcbf06cd96843058359e1a75928beacfac10727dab22a3972f0af8aa92895", "offset": 186, @@ -2506,7 +2781,7 @@ }, { "selector": "0x3ee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea0632", - "offset": 671, + "offset": 801, "builtins": [ "range_check" ] @@ -2515,7 +2790,7 @@ "L1_HANDLER": [ { "selector": "0xc10b615ab0621b7ae6a538821d80b200471946eb24ab7e4663f81aead3a0f", - "offset": 853, + "offset": 983, "builtins": [ "range_check" ] @@ -2524,7 +2799,7 @@ "CONSTRUCTOR": [ { "selector": "0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194", - "offset": 1054, + "offset": 1184, "builtins": [ "range_check" ] diff --git a/crates/starknet_os_flow_tests/resources/deployable_for_resource_measurement.sierra.json b/crates/starknet_os_flow_tests/resources/deployable_for_resource_measurement.sierra.json index d7b439691d6..8e97be5abd4 100644 --- a/crates/starknet_os_flow_tests/resources/deployable_for_resource_measurement.sierra.json +++ b/crates/starknet_os_flow_tests/resources/deployable_for_resource_measurement.sierra.json @@ -6,9 +6,9 @@ "0x2", "0x11", "0x0", - "0xd8", - "0x28", - "0x16", + "0xe2", + "0x1e", + "0x17", "0x52616e6765436865636b", "0x800000000000000100000000000000000000000000000000", "0x537472756374", @@ -18,38 +18,39 @@ "0x436f6e7374", "0x800000000000000000000000000000000000000000000002", "0x1", - "0x13", + "0x14", "0x2", "0x4661696c656420746f20646573657269616c697a6520706172616d202332", "0x4661696c656420746f20646573657269616c697a6520706172616d202333", "0x4f7574206f6620676173", "0x4661696c656420746f20646573657269616c697a6520706172616d202331", "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x436c61737348617368", + "0x800000000000000700000000000000000000000000000000", "0x4172726179", "0x800000000000000300000000000000000000000000000001", "0x536e617073686f74", "0x800000000000000700000000000000000000000000000001", - "0x8", + "0x9", "0x800000000000000700000000000000000000000000000002", "0x1baeba72e79e9db2587cf44fedb2f3700b2075a5e8e39a562584862c4b71f62", - "0x9", - "0x2ee1e2b1b89f8c495f200e4956278a4d47395fe262f27b52e5865c9524c08c3", "0xa", + "0x2ee1e2b1b89f8c495f200e4956278a4d47395fe262f27b52e5865c9524c08c3", + "0xb", "0x56414c4944", "0x4275696c74696e436f737473", - "0x800000000000000700000000000000000000000000000000", "0x53797374656d", "0x800000000000000300000000000000000000000000000003", "0x456e756d", "0x9931c641b913035ae674b400b61a51476d506bbe8bba2ff8a6272790aba9e6", - "0xb", - "0xf", - "0x12", + "0xc", + "0x10", + "0x13", "0x753332", "0x66656c74323532", "0x426f78", "0x4761734275696c74696e", - "0x38", + "0x3a", "0x7265766f6b655f61705f747261636b696e67", "0x77697468647261775f676173", "0x6272616e63685f616c69676e", @@ -60,40 +61,41 @@ "0x73746f72655f74656d70", "0x7533325f7472795f66726f6d5f66656c74323532", "0x636f6e73745f61735f696d6d656469617465", - "0x11", + "0x12", "0x647570", "0x61727261795f736c696365", "0x64726f70", "0x61727261795f6c656e", "0x7533325f6f766572666c6f77696e675f737562", - "0x14", + "0x15", "0x66756e6374696f6e5f63616c6c", "0x3", - "0x7", + "0x8", "0x656e756d5f696e6974", - "0x10", - "0x15", - "0xe", + "0x11", + "0x16", + "0xf", "0x6765745f6275696c74696e5f636f737473", - "0xd", + "0xe", "0x77697468647261775f6761735f616c6c", "0x72656465706f7369745f676173", - "0xc", + "0xd", "0x61727261795f6e6577", "0x61727261795f617070656e64", "0x736e617073686f745f74616b65", "0x7374727563745f636f6e737472756374", "0x6a756d70", + "0x636c6173735f686173685f7472795f66726f6d5f66656c74323532", + "0x7", "0x6", "0x5", "0x4", - "0x328", + "0x378", "0xffffffffffffffff", "0x69", "0x5d", "0x55", "0x4e", - "0x17", "0x18", "0x19", "0x1a", @@ -130,9 +132,9 @@ "0x36", "0x6e", "0x37", + "0x38", "0x39", "0x5a", - "0x3a", "0x3b", "0x3d", "0x3e", @@ -163,286 +165,315 @@ "0x4b", "0x4c", "0x4d", - "0x16a", - "0x15e", - "0x156", - "0x14f", - "0x147", - "0x142", - "0x12b", - "0x13d", - "0x16f", - "0x15b", - "0x163", + "0x148", + "0x13c", + "0x136", + "0x11c", + "0x131", + "0x14d", + "0x141", + "0x1ba", + "0x1ae", + "0x1a6", "0x19f", - "0x185", - "0x19a", - "0x1a4", - "0x211", - "0x205", - "0x1fd", - "0x1f6", - "0x1ee", - "0x1e9", - "0x1d2", - "0x1e4", - "0x216", - "0x202", - "0x20a", - "0x290", - "0x287", - "0x27b", - "0x273", - "0x26c", - "0x264", - "0x25f", - "0x248", + "0x197", + "0x192", + "0x17b", + "0x18d", + "0x1bf", + "0x1ab", + "0x1b3", + "0x1ef", + "0x1d5", + "0x1ea", + "0x1f4", + "0x261", + "0x255", + "0x24d", + "0x246", + "0x23e", + "0x239", + "0x222", + "0x234", + "0x266", + "0x252", "0x25a", - "0x295", - "0x278", - "0x280", - "0x302", - "0x2f6", - "0x2ee", - "0x2e7", - "0x2df", - "0x2da", + "0x2e0", + "0x2d7", + "0x2cb", "0x2c3", - "0x2d5", - "0x307", - "0x2f3", - "0x2fb", + "0x2bc", + "0x2b4", + "0x2af", + "0x298", + "0x2aa", + "0x2e5", + "0x2c8", + "0x2d0", + "0x352", + "0x346", + "0x33e", + "0x337", + "0x32f", + "0x32a", + "0x313", + "0x325", + "0x357", + "0x343", + "0x34b", "0x75", "0x104", - "0x176", - "0x1ab", - "0x21d", - "0x29c", - "0x30e", - "0x312", - "0x316", - "0x31a", - "0x31e", - "0x322", - "0x1a50", + "0x154", + "0x1c6", + "0x1fb", + "0x26d", + "0x2ec", + "0x35e", + "0x362", + "0x366", + "0x36a", + "0x36e", + "0x372", + "0x1cd3", "0xf0b0a0908070e0b0a0908070d0b0a0908070c0b0a09080706050403020100", - "0x919051603180917051603150914130a091211050b0a090807100b0a090807", - "0x240908072309220921051f201509090919051f03021e1d1c1b0b0a0908071a", - "0xa09092f0a09092e1a09092d052c052b052a2902280a0914271d261d25050b", - "0x36240909312409093518090935340909330532180909310a0909310a090930", - "0x5090931090b3f090b3e3d3c093b3a09093705390a090938180909370a0909", - "0x480a09094746090933054505444309093105423f0909314109093140090931", - "0x24090937054b050b3f090b3e2209094a1a09094a15090937150909490a0909", - "0x90933223c093b1a3c093b183c093b1a090937153c093b4009093005090930", - "0x94a0909094a0b0909333c0909334e0909334d090933463c093b4c0909333d", - "0x9050b053d4c0b514d4e0b500b09050b09050550090505054f230909312309", - "0x94d05055009050b052209521a180b500b15094e05150950093c093c050550", - "0x180518095009180915054309500943093d054309500946094c05460950091a", - "0xb50091809220534095009051a05055009050b053f095323410b500b434e0b", - "0x403a0b500b0a3424414e410534095009340943050a230b5009230946052418", - "0x500955093f0555180b50091809220505500940092305055009050b05000954", - "0x5a59580b500b57563a3c3405560950095609430557230b5009230946055609", - "0x5055009050b0560095f5e5d0b500b592318584e4105055009050b055c5b0b", - "0x500961092305055009050b0564096362610b500b5e094e055e0950095e0915", - "0x5d0950095d0940056609500965093a0565095009050a050550096209240505", - "0x5660b4d5d4e0966095009660956050b0950090b0955054d0950094d090005", - "0x5d3c590567095009670958056709500905570505500964092305055009050b", - "0x95009055c056c09500968095b05055009050b056b6a0b6968630b500b674d", - "0x50096f0960056f0950096d6e0b5e056d0950096d093d056e095009055d056d", - "0x973096505730950097209640572095009710962050550097009610571700b", - "0x740956050b0950090b0955056c0950096c0900056309500963094005740950", - "0x950096a094005750950096b095b05055009050b05740b6c634e0974095009", - "0x4005790950094d095b05055009050b05057809056605770950097509000576", - "0x95c096705055009050b05057b090566057a09500979090005290950096009", - "0x950095b0940057c0950094d095b0505500923096705055009180923050550", - "0x9670505500918092305055009050b05057b090566057a0950097c09000529", - "0x566057a0950097d09000529095009000940057d0950094d095b0505500923", - "0x950093f094005690950094d095b0505500918092305055009050b05057b09", - "0x580090566057f0950097a0968057e095009290963057a0950096909000529", - "0x57e0950094e094005810950094d095b0505500922092305055009050b05", - "0x57e0950097e0940055f09500982093a0582095009056a057f0950098109", - "0x50b055f0b7f7e4e095f0950095f0956050b0950090b0955057f0950097f09", - "0x983090005760950094c094005830950093d095b050550093c096b05055009", - "0x97709000576095009760940058509500984093a0584095009056c05770950", - "0x55009050505850b77764e0985095009850956050b0950090b095505770950", - "0x94e05150950093c093c05055009050b053d4c0b864d4e0b500b09050b0905", - "0x518095009180915050550091a092405055009050b052209871a180b500b15", - "0x950094609150505500943092405055009050b0541098843460b500b18094e", - "0x24094c05240950093f094d05055009050b053409893f230b500b46094e0546", - "0x8a403a0b500b0a4e0b180523095009230915050a0950090a093d050a095009", - "0xb50094009460556230b50092309220555095009051a05055009050b050009", - "0x55009050b055b098b59580b500b5755563a4e410555095009550943055740", - "0xb5009400946055d0950095c093f055c230b50092309220505500959092305", - "0x55009050b0564620b8c61600b500b5e5d583c34055d0950095d0943055e40", - "0x4e056609500966091505055009050b0567098d66650b500b614023604e4105", - "0x50550096809240505500963092305055009050b056a098e68630b500b6609", - "0x54d0950094d09000565095009650940056c0950096b093a056b095009050a", - "0x6a092305055009050b056c0b4d654e096c0950096c0956050b0950090b0955", - "0xb8f6f6e0b500b6d4d653c59056d0950096d0958056d095009055705055009", - "0x574095009055d0573095009055c05720950096f095b05055009050b057170", - "0x50097609610577760b5009750960057509500973740b5e057309500973093d", - "0x50096e0940057a095009290965052909500979096405790950097709620505", - "0xb726e4e097a0950097a0956050b0950090b09550572095009720900056e09", - "0x690950097c0900057d095009700940057c09500971095b05055009050b057a", - "0x900057f095009670940057e0950094d095b05055009050b05059009056605", - "0x550092309230505500964096705055009050b05059109056605810950097e", - "0x81095009820900057f09500962094005820950094d095b0505500940096705", - "0x94d095b050550094009670505500923092305055009050b05059109056605", - "0x55009050b05059109056605810950095f0900057f0950095b0940055f0950", - "0x81095009830900057f09500900094005830950094d095b0505500923092305", - "0x92305055009050b050592090566058509500981096805840950097f096305", - "0x56d058509500993090005840950094e094005930950094d095b0505500934", - "0x9550585095009850900058409500984094005940950095a093a055a095009", - "0x500941092305055009050b05940b85844e0994095009940956050b0950090b", - "0x950094d0900054e0950094e0940059609500995093a0595095009056e0505", - "0x2305055009050b05960b4d4e4e0996095009960956050b0950090b0955054d", - "0x900054e0950094e0940059809500997093a0597095009056a050550092209", - "0x9050b05980b4d4e4e0998095009980956050b0950090b0955054d0950094d", - "0x5009990900057d0950094c094005990950093d095b050550093c096b050550", - "0x5009690900057d0950097d094005540950099a093a059a095009056c056909", - "0x5055009050505540b697d4e0954095009540956050b0950090b0955056909", - "0x15094e05150950093c093c05055009050b053d4c0b9b4d4e0b500b09050b09", - "0x54309500946094c05460950091a094d05055009050b0522099c1a180b500b", - "0x50b053f099d23410b500b434e0b180518095009180915054309500943093d", - "0x943050a230b50092309460524180b50091809220534095009051a05055009", - "0x940092305055009050b0500099e403a0b500b0a3424414e41053409500934", - "0x9430557230b5009230946055609500955093f0555180b5009180922050550", - "0x18584e4105055009050b055c5b0b9f59580b500b57563a3c34055609500956", - "0xb500b5e094e055e0950095e091505055009050b056009a05e5d0b500b5923", - "0x95009050a050550096209240505500961092305055009050b056409a16261", - "0x50090b0955054d0950094d0900055d0950095d0940056609500965093a0565", - "0x570505500964092305055009050b05660b4d5d4e0966095009660956050b09", - "0x50b056b6a0ba268630b500b674d5d3c590567095009670958056709500905", - "0x6e0961056f6e0b50096d0960056d095009055d056c09500968095b05055009", - "0x6309400572095009710965057109500970096405700950096f096205055009", - "0x634e0972095009720956050b0950090b0955056c0950096c09000563095009", - "0x500973090005740950096a094005730950096b095b05055009050b05720b6c", - "0x57709500960094005760950094d095b05055009050b0505a3090566057509", - "0x9180923050550095c096705055009050b0505a40905660579095009760900", - "0x500929090005770950095b094005290950094d095b05055009230967050550", - "0x95b050550092309670505500918092305055009050b0505a4090566057909", - "0x9050b0505a409056605790950097a09000577095009000940057a0950094d", - "0x50097c090005770950093f0940057c0950094d095b05055009180923050550", - "0x5055009050b0505a50905660569095009790968057d095009770963057909", - "0x5690950097e0900057d0950094e0940057e0950094d095b05055009220923", - "0x569095009690900057d0950097d094005810950097f093a057f095009056a", - "0x3c096b05055009050b05810b697d4e0981095009810956050b0950090b0955", - "0x9056c057509500982090005740950094c094005820950093d095b05055009", - "0xb09550575095009750900057409500974094005830950095f093a055f0950", - "0x500b09050b0905055009050505830b75744e0983095009830956050b095009", - "0xa71a180b500b15094e05150950093c093c05055009050b053d4c0ba64d4e0b", - "0x3a0546095009050a050550091a09240505500918092305055009050b052209", - "0x50b0950090b0955054d0950094d0900054e0950094e094005430950094609", - "0x500905570505500922092305055009050b05430b4d4e4e0943095009430956", - "0x55009050b0524340ba83f230b500b414d4e3c590541095009410958054109", - "0x53a0950093a093d0540095009055d053a095009056f050a0950093f095b05", - "0x95009560962050550095509610556550b500900096005000950093a400b5e", - "0x50090a09000523095009230940055909500958096505580950095709640557", - "0x5055009050b05590b0a234e0959095009590956050b0950090b0955050a09", - "0xb0505a9090566055d0950095b0900055c095009340940055b09500924095b", - "0x5e0900055c0950094c0940055e0950093d095b050550093c096b0505500905", - "0x5d0900055c0950095c0940056109500960093a0560095009056c055d095009", - "0x5009050505610b5d5c4e0961095009610956050b0950090b0955055d095009", - "0x4e05150950093c093c05055009050b053d4c0baa4d4e0b500b09050b090505", - "0x9500946094c05460950091a094d05055009050b052209ab1a180b500b1509", - "0x53f09ac23410b500b434e0b180518095009180915054309500943093d0543", - "0x50a230b50092309460524180b50091809220534095009051a05055009050b", - "0x92305055009050b050009ad403a0b500b0a3424414e410534095009340943", - "0x557230b5009230946055609500955093f0555180b50091809220505500940", - "0x4e4105055009050b055c5b0bae59580b500b57563a3c340556095009560943", - "0xb5e094e055e0950095e091505055009050b056009af5e5d0b500b59231858", - "0x9050a050550096209240505500961092305055009050b056409b062610b50", - "0xb0955054d0950094d0900055d0950095d0940056609500965093a05650950", - "0x5500964092305055009050b05660b4d5d4e0966095009660956050b095009", - "0x56b6a0bb168630b500b674d5d3c5905670950096709580567095009055705", - "0x61056f6e0b50096d0960056d095009055d056c09500968095b05055009050b", - "0x400572095009710965057109500970096405700950096f0962050550096e09", - "0x972095009720956050b0950090b0955056c0950096c090005630950096309", - "0x73090005740950096a094005730950096b095b05055009050b05720b6c634e", - "0x9500960094005760950094d095b05055009050b0505b20905660575095009", - "0x923050550095c096705055009050b0505b309056605790950097609000577", - "0x29090005770950095b094005290950094d095b050550092309670505500918", - "0x50550092309670505500918092305055009050b0505b30905660579095009", - "0xb0505b309056605790950097a09000577095009000940057a0950094d095b", - "0x7c090005770950093f0940057c0950094d095b050550091809230505500905", - "0x5009050b0505b40905660569095009790968057d0950097709630579095009", - "0x950097e0900057d0950094e0940057e0950094d095b050550092209230505", - "0x95009690900057d0950097d094005810950097f093a057f095009056a0569", - "0x6b05055009050b05810b697d4e0981095009810956050b0950090b09550569", - "0x6c057509500982090005740950094c094005820950093d095b050550093c09", - "0x550575095009750900057409500974094005830950095f093a055f09500905", - "0x9050b0905055009050505830b75744e0983095009830956050b0950090b09", - "0x180b500b15094e05150950093c093c05055009050b053d4c0bb54d4e0b500b", - "0x500b18094e0518095009180915050550091a092405055009050b052209b61a", - "0x93d053f09500923094c052309500943094d05055009050b054109b743460b", - "0x5009050b050a09b824340b500b3f4e0b180546095009460915053f0950093f", - "0x93a09430500240b50092409460540460b5009460922053a095009051a0505", - "0x5500956092305055009050b055709b956550b500b003a40344e41053a0950", - "0x9590943055b240b5009240946055909500958093f0558460b500946092205", - "0x5d24465c4e4105055009050b05605e0bba5d5c0b500b5b59553c3405590950", - "0x66650b500b62094e056209500962091505055009050b056409bb62610b500b", - "0x563095009050a050550096609240505500965092305055009050b056709bc", - "0xb0950090b0955054d0950094d09000561095009610940056809500963093a", - "0x905570505500967092305055009050b05680b4d614e096809500968095605", - "0x5009050b056e6d0bbd6c6b0b500b6a4d613c59056a0950096a0958056a0950", - "0x50097109610572710b50097009600570095009055d056f0950096c095b0505", - "0x50096b09400575095009740965057409500973096405730950097209620505", - "0xb6f6b4e0975095009750956050b0950090b0955056f0950096f0900056b09", - "0x7909500976090005770950096d094005760950096e095b05055009050b0575", - "0x900057a09500964094005290950094d095b05055009050b0505be09056605", - "0x550094609230505500960096705055009050b0505bf090566057c09500929", - "0x7c0950097d0900057a0950095e0940057d0950094d095b0505500924096705", - "0x94d095b050550092409670505500946092305055009050b0505bf09056605", - "0x55009050b0505bf090566057c095009690900057a09500957094005690950", - "0x7c0950097e0900057a0950090a0940057e0950094d095b0505500946092305", - "0x92305055009050b0505c009056605810950097c0968057f0950097a096305", - "0x56e0581095009820900057f0950094e094005820950094d095b0505500941", - "0x9550581095009810900057f0950097f094005830950095f093a055f095009", - "0x500922092305055009050b05830b817f4e0983095009830956050b0950090b", - "0x950094d0900054e0950094e0940058509500984093a0584095009056a0505", - "0x6b05055009050b05850b4d4e4e0985095009850956050b0950090b0955054d", - "0x6c057909500993090005770950094c094005930950093d095b050550093c09", - "0x550579095009790900057709500977094005940950095a093a055a09500905", - "0x9050b0905055009050505940b79774e0994095009940956050b0950090b09", - "0x180b500b15094e05150950093c093c05055009050b053d4c0bc14d4e0b500b", - "0x943093d054309500946094c05460950091a094d05055009050b052209c21a", - "0x5055009050b053f09c323410b500b434e0b18051809500918091505430950", - "0x95009340943050a230b50092309460524180b50091809220534095009051a", - "0x220505500940092305055009050b050009c4403a0b500b0a3424414e410534", - "0x950095609430557230b5009230946055609500955093f0555180b50091809", - "0x500b592318584e4105055009050b055c5b0bc559580b500b57563a3c340556", - "0x9c762610b500b5e094e055e0950095e091505055009050b056009c65e5d0b", - "0x93a0565095009050a050550096209240505500961092305055009050b0564", - "0x56050b0950090b0955054d0950094d0900055d0950095d0940056609500965", - "0x9500905570505500964092305055009050b05660b4d5d4e09660950096609", - "0x5055009050b056b6a0bc868630b500b674d5d3c5905670950096709580567", - "0x50550096e0961056f6e0b50096d0960056d095009055d056c09500968095b", - "0x630950096309400572095009710965057109500970096405700950096f0962", - "0x5720b6c634e0972095009720956050b0950090b0955056c0950096c090005", - "0x66057509500973090005740950096a094005730950096b095b05055009050b", - "0x9760900057709500960094005760950094d095b05055009050b0505c90905", - "0x6705055009180923050550095c096705055009050b0505ca09056605790950", - "0x66057909500929090005770950095b094005290950094d095b050550092309", - "0x950094d095b050550092309670505500918092305055009050b0505ca0905", - "0x2305055009050b0505ca09056605790950097a09000577095009000940057a", - "0x6305790950097c090005770950093f0940057c0950094d095b050550091809", - "0x922092305055009050b0505cb0905660569095009790968057d0950097709", - "0x5009056a05690950097e0900057d0950094e0940057e0950094d095b050550", - "0x90b09550569095009690900057d0950097d094005810950097f093a057f09", - "0x50550093c096b05055009050b05810b697d4e0981095009810956050b0950", - "0x55f095009056c057509500982090005740950094c094005820950093d095b", - "0xb0950090b09550575095009750900057409500974094005830950095f093a", - "0x71050509500905093d0505095009057005830b75744e098309500983095605", - "0x95009050971050509500905093d0505095009057205090909090950090509", - "0x509090909095009050971050509500905093d050509500905730509090909", - "0x9500905750509090909095009050971050509500905093d05050950090574", - "0x90b5e0509095009055d0509090909095009050971050509500905093d0505", - "0x9094e0950094e0979054e0950090b3c0b77053c0950090576050b09500905", - "0x3c0b09053f4140054e1a4140054e053c0b09053f4140054e1a4140054e434e", - "0xce3c0b09053f4140054e1a4140054ecd3c0b09053f4140054e1a4140054ecc", - "0x4ed03c0b09053f4140054e1a4140054ecf3c0b09053f4140054e1a4140054e", - "0x5d5230905d4230905d3230905d2230905d13c0b09053f4140054e1a414005", - "0xd70523090a09d62309" + "0x518031a0919051803170916150a0914131211050b0a090807100b0a090807", + "0x8072409230922052021170909091b052003021f121e1d0b0a0908071c091b", + "0x9300a09092f1c09092e052d052c052b2a02290a09162812271226050b2509", + "0x90932250909361a0909363509093405331a0909320a0909320a0909310a09", + "0x932090b40090b3f3e3d093c3b090938053a0a0909391a0909380a09093725", + "0x9094847090934054605454409093205434009093242090932410909320509", + "0x938054c050b40090b3f2309094b1c09094b170909381709094a0a0909490a", + "0x4d233d093c1c3d093c1a3d093c1c090938173d093c41090931050909312509", + "0x9343d0909345109093450090934473d093c4f0909344e0909343e09093805", + "0x50510b530b09050b090505530905050552240909322409094b0909094b0b09", + "0x51c09551a170b530b3e0951053e0953093d093d05055309050b054e4f0b54", + "0x3e054709530947094e054709530923094f05230953091a095005055309050b", + "0x95309051a05055309050b0524095642440b530b47510b1705170953091709", + "0x44514405400953094009470525420b53094209230535170b530917091c0540", + "0xb530917091c050553093b094205055309050b054109573b0a0b530b254035", + "0xa3d4005580953095809470559420b53094209230558095309000924050017", + "0x961605f0b530b5b42175a514405055309050b055e5d0b5c5b5a0b530b5958", + "0x9050b0566096564630b530b600951056009530960093e05055309050b0562", + "0x6809530967090a056709530905250505530964093505055309630942050553", + "0x95309680958050b0953090b09000550095309500941055f0953095f093b05", + "0x69095a056909530905590505530966094205055309050b05680b505f510968", + "0x53096a095d05055309050b056d6c0b6b6a650b530b69505f3d5b0569095309", + "0x53096f700b60056f0953096f094e0570095309055f056f095309055e056e09", + "0x97409660574095309730964050553097209630573720b5309710962057109", + "0xb0900056e0953096e0941056509530965093b057609530975096705750953", + "0x953096d095d05055309050b05760b6e65510976095309760958050b095309", + "0x5d05055309050b05057a090568057909530977094105780953096c093b0577", + "0x50b05057e090568057d0953097b0941057c09530962093b057b0953095009", + "0x9530950095d0505530942096905055309170942050553095e096905055309", + "0x4205055309050b05057e090568057d0953092a0941057c0953095d093b052a", + "0x941057c09530941093b057f09530950095d05055309420969050553091709", + "0x9530950095d0505530917094205055309050b05057e090568057d0953097f", + "0x53097d096a05800953097c0965057d0953096b0941057c09530924093b056b", + "0x3b058309530950095d050553091c094205055309050b050582090568058109", + "0x3b056109530984090a0584095309056c058109530983094105800953095109", + "0x961095309610958050b0953090b0900058109530981094105800953098009", + "0x94f093b05850953094e095d050553093d096d05055309050b05610b818051", + "0x978093b058709530986090a0586095309056e057909530985094105780953", + "0x7978510987095309870958050b0953090b0900057909530979094105780953", + "0x93d05055309050b054e4f0b8850510b530b09050b0905055309050505870b", + "0x50553091a093505055309050b051c09891a170b530b3e0951053e0953093d", + "0x530947093505055309050b0544098a47230b530b170951051709530917093e", + "0x24095005055309050b0540098b24420b530b230951052309530923093e0505", + "0xb17054209530942093e052509530925094e052509530935094f0535095309", + "0x420b530942091c0500095309051a05055309050b0541098c3b0a0b530b2551", + "0x8d5b5a0b530b5900580a5144050009530900094705593b0b53093b09230558", + "0x953095e0924055e420b530942091c050553095b094205055309050b055d09", + "0xb8e63620b530b605f5a3d40055f0953095f094705603b0b53093b0923055f", + "0x3e05055309050b0569098f68670b530b633b4262514405055309050b056664", + "0x5530965094205055309050b056c09906a650b530b68095105680953096809", + "0x56709530967093b056e0953096d090a056d0953090525050553096a093505", + "0xb056e0b506751096e0953096e0958050b0953090b09000550095309500941", + "0x50673d5b056f0953096f095a056f0953090559050553096c09420505530905", + "0x75095309055e057409530971095d05055309050b0573720b9171700b530b6f", + "0xb5309770962057709530975760b60057509530975094e0576095309055f05", + "0x53097c0967057c0953097b0966057b09530979096405055309780963057978", + "0x97d0958050b0953090b09000574095309740941057009530970093b057d09", + "0x7f09530972093b052a09530973095d05055309050b057d0b747051097d0953", + "0x93b058009530950095d05055309050b050592090568056b0953092a094105", + "0x530966096905055309050b0505930905680583095309800941058109530969", + "0x8109530964093b058409530950095d050553093b0969050553094209420505", + "0x3b09690505530942094205055309050b050593090568058309530984094105", + "0x90568058309530961094105810953095d093b056109530950095d05055309", + "0x8109530941093b058509530950095d0505530942094205055309050b050593", + "0x50594090568058709530983096a0586095309810965058309530985094105", + "0x941058609530951093b059509530950095d0505530940094205055309050b", + "0x941058609530986093b05960953095c090a055c095309056f058709530995", + "0x9050b05960b8786510996095309960958050b0953090b0900058709530987", + "0x9530951093b059809530997090a0597095309057005055309440942050553", + "0x980b5051510998095309980958050b0953090b090005500953095009410551", + "0x93b059a09530999090a0599095309056c050553091c094205055309050b05", + "0x51099a0953099a0958050b0953090b09000550095309500941055109530951", + "0x53094f093b059b0953094e095d050553093d096d05055309050b059a0b5051", + "0x53097f093b05570953099c090a059c095309056e056b0953099b0941057f09", + "0xb6b7f510957095309570958050b0953090b0900056b0953096b0941057f09", + "0x3d093d05055309050b054e4f0b9d50510b530b09050b090505530905050557", + "0x5230953091a095005055309050b051c099e1a170b530b3e0951053e095309", + "0x50b0524099f42440b530b47510b71054709530947094e054709530923094f", + "0x52509a035400b530b170951051709530917093e0505530942097205055309", + "0x90a090a050a0953090525050553093509350505530940094205055309050b", + "0x3b0958050b0953090b09000550095309500941054409530944093b053b0953", + "0x54109530905590505530925094205055309050b053b0b504451093b095309", + "0x95d05055309050b055a590ba158000b530b4150443d5b054109530941095a", + "0x5e0b60055d0953095d094e055e095309055f055d095309055e055b09530958", + "0x660563095309620964050553096009630562600b53095f0962055f0953095d", + "0x55b0953095b0941050009530900093b056609530964096705640953096309", + "0x5a095d05055309050b05660b5b00510966095309660958050b0953090b0900", + "0x5309050b0505a20905680569095309670941056809530959093b0567095309", + "0x95309650941056a09530924093b056509530950095d050553091709420505", + "0x93b056d09530950095d050553091c094205055309050b0505a3090568056c", + "0x93b056f0953096e090a056e095309056c056c0953096d0941056a09530951", + "0x51096f0953096f0958050b0953090b0900056c0953096c0941056a0953096a", + "0x53094f093b05700953094e095d050553093d096d05055309050b056f0b6c6a", + "0x530968093b057209530971090a0571095309056e0569095309700941056809", + "0xb6968510972095309720958050b0953090b09000569095309690941056809", + "0x3d093d05055309050b054e4f0ba450510b530b09050b090505530905050572", + "0x5230953091a095005055309050b051c09a51a170b530b3e0951053e095309", + "0xb530b47510b17051709530917093e054709530947094e054709530923094f", + "0x4209230535170b530917091c0540095309051a05055309050b052409a64244", + "0x50b054109a73b0a0b530b25403544514405400953094009470525420b5309", + "0x42092305580953090009240500170b530917091c050553093b094205055309", + "0x50b055e5d0ba85b5a0b530b59580a3d4005580953095809470559420b5309", + "0x9530960093e05055309050b056209a9605f0b530b5b42175a514405055309", + "0x96409350505530963094205055309050b056609aa64630b530b6009510560", + "0x5309500941055f0953095f093b056809530967090a05670953090525050553", + "0x5055309050b05680b505f510968095309680958050b0953090b0900055009", + "0x650b530b69505f3d5b056909530969095a0569095309055905055309660942", + "0x96f0962056f095309055f056e0953096a095d05055309050b056d6c0bab6a", + "0x73096705730953097209660572095309710964050553097009630571700b53", + "0x958050b0953090b0900056e0953096e0941056509530965093b0574095309", + "0x53096c093b05750953096d095d05055309050b05740b6e6551097409530974", + "0x57809530950095d05055309050b0505ac0905680577095309750941057609", + "0x5e096905055309050b0505ad090568057b095309780941057909530962093b", + "0x53095d093b057c09530950095d050553094209690505530917094205055309", + "0x690505530917094205055309050b0505ad090568057b0953097c0941057909", + "0x68057b0953097d0941057909530941093b057d09530950095d050553094209", + "0x530924093b052a09530950095d0505530917094205055309050b0505ad0905", + "0xae090568056b0953097b096a057f095309790965057b0953092a0941057909", + "0x57f09530951093b058009530950095d050553091c094205055309050b0505", + "0x57f0953097f093b058309530981090a0581095309056c056b095309800941", + "0xb05830b6b7f510983095309830958050b0953090b0900056b0953096b0941", + "0x84094105760953094f093b05840953094e095d050553093d096d0505530905", + "0x770941057609530976093b058509530961090a0561095309056e0577095309", + "0x5309050505850b7776510985095309850958050b0953090b09000577095309", + "0x51053e0953093d093d05055309050b054e4f0baf50510b530b09050b090505", + "0x50553091a09350505530917094205055309050b051c09b01a170b530b3e09", + "0x550095309500941055109530951093b054709530923090a05230953090525", + "0x1c094205055309050b05470b5051510947095309470958050b0953090b0900", + "0xbb124420b530b4450513d5b054409530944095a0544095309055905055309", + "0x53b095309055f050a0953090573052509530924095d05055309050b053540", + "0x53090009630558000b530941096205410953090a3b0b60050a0953090a094e", + "0x530942093b055b0953095a0967055a09530959096605590953095809640505", + "0xb254251095b0953095b0958050b0953090b09000525095309250941054209", + "0x5f0953095d0941055e09530940093b055d09530935095d05055309050b055b", + "0x4f093b05600953094e095d050553093d096d05055309050b0505b209056805", + "0x5e093b056309530962090a0562095309056e055f095309600941055e095309", + "0x5e510963095309630958050b0953090b0900055f0953095f0941055e095309", + "0x3d05055309050b054e4f0bb350510b530b09050b0905055309050505630b5f", + "0x953091a095005055309050b051c09b41a170b530b3e0951053e0953093d09", + "0xb47510b17051709530917093e054709530947094e054709530923094f0523", + "0x230535170b530917091c0540095309051a05055309050b052409b542440b53", + "0x54109b63b0a0b530b25403544514405400953094009470525420b53094209", + "0x2305580953090009240500170b530917091c050553093b094205055309050b", + "0x55e5d0bb75b5a0b530b59580a3d4005580953095809470559420b53094209", + "0x960093e05055309050b056209b8605f0b530b5b42175a514405055309050b", + "0x9350505530963094205055309050b056609b964630b530b60095105600953", + "0x500941055f0953095f093b056809530967090a056709530905250505530964", + "0x5309050b05680b505f510968095309680958050b0953090b09000550095309", + "0x530b69505f3d5b056909530969095a05690953090559050553096609420505", + "0x962056f095309055f056e0953096a095d05055309050b056d6c0bba6a650b", + "0x6705730953097209660572095309710964050553097009630571700b53096f", + "0x50b0953090b0900056e0953096e0941056509530965093b05740953097309", + "0x6c093b05750953096d095d05055309050b05740b6e65510974095309740958", + "0x9530950095d05055309050b0505bb09056805770953097509410576095309", + "0x6905055309050b0505bc090568057b095309780941057909530962093b0578", + "0x5d093b057c09530950095d0505530942096905055309170942050553095e09", + "0x5530917094205055309050b0505bc090568057b0953097c09410579095309", + "0x7b0953097d0941057909530941093b057d09530950095d0505530942096905", + "0x24093b052a09530950095d0505530917094205055309050b0505bc09056805", + "0x568056b0953097b096a057f095309790965057b0953092a09410579095309", + "0x9530951093b058009530950095d050553091c094205055309050b0505bd09", + "0x953097f093b058309530981090a0581095309056c056b095309800941057f", + "0x830b6b7f510983095309830958050b0953090b0900056b0953096b0941057f", + "0x4105760953094f093b05840953094e095d050553093d096d05055309050b05", + "0x41057609530976093b058509530961090a0561095309056e05770953098409", + "0x50505850b7776510985095309850958050b0953090b090005770953097709", + "0x3e0953093d093d05055309050b054e4f0bbe50510b530b09050b0905055309", + "0x530917093e050553091a093505055309050b051c09bf1a170b530b3e095105", + "0x94f054209530947095005055309050b054409c047230b530b170951051709", + "0x35400b530b24510b17052309530923093e052409530924094e052409530942", + "0x5309350923053b230b530923091c050a095309051a05055309050b052509c1", + "0x5309050b055909c258000b530b410a3b405144050a0953090a09470541350b", + "0x5309350923055b0953095a0924055a230b530923091c050553095809420505", + "0x5309050b0562600bc35f5e0b530b5d5b003d40055b0953095b0947055d350b", + "0x56409530964093e05055309050b056609c464630b530b5f35235e51440505", + "0x553096809350505530967094205055309050b056909c568670b530b640951", + "0x50095309500941056309530963093b056a09530965090a0565095309052505", + "0x94205055309050b056a0b506351096a0953096a0958050b0953090b090005", + "0xc66e6d0b530b6c50633d5b056c0953096c095a056c09530905590505530969", + "0xb53097209620572095309055f05710953096e095d05055309050b05706f0b", + "0x53097609670576095309750966057509530974096405055309730963057473", + "0x9770958050b0953090b09000571095309710941056d0953096d093b057709", + "0x790953096f093b057809530970095d05055309050b05770b716d5109770953", + "0x93b057c09530950095d05055309050b0505c7090568057b09530978094105", + "0x530962096905055309050b0505c8090568052a0953097c0941057d09530966", + "0x7d09530960093b057f09530950095d05055309350969050553092309420505", + "0x3509690505530923094205055309050b0505c8090568052a0953097f094105", + "0x90568052a0953096b0941057d09530959093b056b09530950095d05055309", + "0x7d09530925093b058009530950095d0505530923094205055309050b0505c8", + "0x505c909056805830953092a096a05810953097d0965052a09530980094105", + "0x941058109530951093b058409530950095d0505530944094205055309050b", + "0x941058109530981093b058509530961090a05610953090570058309530984", + "0x9050b05850b8381510985095309850958050b0953090b0900058309530983", + "0x9530951093b058709530986090a0586095309056c050553091c0942050553", + "0x870b5051510987095309870958050b0953090b090005500953095009410551", + "0x4105790953094f093b05950953094e095d050553093d096d05055309050b05", + "0x41057909530979093b05960953095c090a055c095309056e057b0953099509", + "0x50505960b7b79510996095309960958050b0953090b0900057b0953097b09", + "0x3e0953093d093d05055309050b054e4f0bca50510b530b09050b0905055309", + "0x923094f05230953091a095005055309050b051c09cb1a170b530b3e095105", + "0x9cc42440b530b47510b17051709530917093e054709530947094e05470953", + "0x420b53094209230535170b530917091c0540095309051a05055309050b0524", + "0x5055309050b054109cd3b0a0b530b25403544514405400953094009470525", + "0x420b530942092305580953090009240500170b530917091c050553093b0942", + "0x5055309050b055e5d0bce5b5a0b530b59580a3d4005580953095809470559", + "0x951056009530960093e05055309050b056209cf605f0b530b5b42175a5144", + "0x25050553096409350505530963094205055309050b056609d064630b530b60", + "0x550095309500941055f0953095f093b056809530967090a056709530905", + "0x966094205055309050b05680b505f510968095309680958050b0953090b09", + "0x6c0bd16a650b530b69505f3d5b056909530969095a05690953090559050553", + "0x71700b53096f0962056f095309055f056e0953096a095d05055309050b056d", + "0x74095309730967057309530972096605720953097109640505530970096305", + "0x95309740958050b0953090b0900056e0953096e0941056509530965093b05", + "0x4105760953096c093b05750953096d095d05055309050b05740b6e65510974", + "0x962093b057809530950095d05055309050b0505d209056805770953097509", + "0x50553095e096905055309050b0505d3090568057b09530978094105790953", + "0x4105790953095d093b057c09530950095d0505530942096905055309170942", + "0x53094209690505530917094205055309050b0505d3090568057b0953097c09", + "0x5d3090568057b0953097d0941057909530941093b057d09530950095d0505", + "0x41057909530924093b052a09530950095d0505530917094205055309050b05", + "0x50b0505d4090568056b0953097b096a057f095309790965057b0953092a09", + "0x9800941057f09530951093b058009530950095d050553091c094205055309", + "0x96b0941057f0953097f093b058309530981090a0581095309056c056b0953", + "0x55309050b05830b6b7f510983095309830958050b0953090b0900056b0953", + "0x7709530984094105760953094f093b05840953094e095d050553093d096d05", + "0x77095309770941057609530976093b058509530961090a0561095309056e05", + "0x4e0505095309057405850b7776510985095309850958050b0953090b090005", + "0x9530905094e05050953090576050909090909530905097505050953090509", + "0x50975050509530905094e0505095309057705090909090953090509750505", + "0x909095309050975050509530905094e050509530905780509090909095309", + "0x55f0509090909095309050975050509530905094e05050953090579050909", + "0x7d05510953090b3d0b7c053d095309057b050b09530905090b600509095309", + "0x511c42410551053d0b090540424105511c4241055144510909510953095109", + "0x5511c42410551d63d0b090540424105511c42410551d53d0b090540424105", + "0x4105511c42410551d83d0b090540424105511c42410551d73d0b0905404241", + "0x424105511c42410551da3d0b090540424105511c42410551d93d0b09054042", + "0x524090a09e0240905df240905de240905dd240905dc240905db3d0b090540", + "0xe1" ], "sierra_program_debug_info": { "type_names": [], @@ -454,35 +485,39 @@ "EXTERNAL": [ { "selector": "0xd3748737d66b52a90ed3c1798b3f51d9a9266e607fdbc86e44f659bb173acd", - "function_idx": 3 + "function_idx": 4 }, { "selector": "0x15d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad", - "function_idx": 2 + "function_idx": 3 }, { "selector": "0x162da33a4585851fe8d3af3c2a9c60b557814e221e0d4f30ff0b2189d9c7775", "function_idx": 0 }, + { + "selector": "0x289da278a8dc833409cabfdad1581e8e7d40e42dcaed693fa4008dcdb4963b3", + "function_idx": 2 + }, { "selector": "0x36fcbf06cd96843058359e1a75928beacfac10727dab22a3972f0af8aa92895", "function_idx": 1 }, { "selector": "0x3ee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea0632", - "function_idx": 4 + "function_idx": 5 } ], "L1_HANDLER": [ { "selector": "0xc10b615ab0621b7ae6a538821d80b200471946eb24ab7e4663f81aead3a0f", - "function_idx": 5 + "function_idx": 6 } ], "CONSTRUCTOR": [ { "selector": "0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194", - "function_idx": 6 + "function_idx": 7 } ] }, @@ -537,6 +572,22 @@ ], "state_mutability": "view" }, + { + "type": "function", + "name": "__validate_declare__", + "inputs": [ + { + "name": "class_hash", + "type": "core::starknet::class_hash::ClassHash" + } + ], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, { "type": "function", "name": "__execute__", diff --git a/crates/starknet_os_flow_tests/src/os_resources_test.rs b/crates/starknet_os_flow_tests/src/os_resources_test.rs index 4601018806b..02f61837cf9 100644 --- a/crates/starknet_os_flow_tests/src/os_resources_test.rs +++ b/crates/starknet_os_flow_tests/src/os_resources_test.rs @@ -1,5 +1,6 @@ use std::collections::HashSet; +use assert_matches::assert_matches; use blockifier::blockifier_versioned_constants::{ RawStepGasCost, RawVersionedConstants, @@ -36,6 +37,8 @@ use crate::initial_state::{ get_deploy_contract_tx_and_address_with_salt_and_deployer, }; use crate::special_contracts::{ + DATA_GAS_ACCOUNT_CONTRACT_CASM, + DATA_GAS_ACCOUNT_CONTRACT_SIERRA, DEPLOYABLE_FOR_RESOURCE_MEASUREMENT_CONTRACT_CASM, DEPLOYABLE_FOR_RESOURCE_MEASUREMENT_CONTRACT_SIERRA, }; @@ -477,30 +480,41 @@ async fn test_execute_txs_inner_resources() { let version = StarknetVersion::LATEST; let mut raw_vc: RawVersionedConstants = serde_json::from_str(VersionedConstants::json_str(&version).unwrap()).unwrap(); - // TODO(Dori): Declare, DeployAccount, L1Handler. - const N_TXS: usize = 1; + // TODO(Dori): DeployAccount, L1Handler. + const N_TXS: usize = 2; let OsResourcesTestSetup { stable_contract_address, mut test_builder, .. } = setup_test_builder().await; // Invoke. + let invoke_args = invoke_tx_args! { + sender_address: stable_contract_address, + calldata: calldata![Felt::ZERO], + resource_bounds: *NON_TRIVIAL_RESOURCE_BOUNDS, + nonce: test_builder.next_nonce(stable_contract_address), + }; test_builder.add_invoke_tx( - InvokeTransaction::create( - invoke_tx(invoke_tx_args! { - sender_address: stable_contract_address, - calldata: calldata![Felt::ZERO], - resource_bounds: *NON_TRIVIAL_RESOURCE_BOUNDS, - }), - &test_builder.chain_id(), - ) - .unwrap(), + InvokeTransaction::create(invoke_tx(invoke_args), &test_builder.chain_id()).unwrap(), None, None, ); + // Declare. Choose a contract that is not edited or recompiled, to keep measurements stable. + let declare_args = declare_tx_args! { + sender_address: stable_contract_address, + nonce: test_builder.next_nonce(stable_contract_address), + resource_bounds: *NON_TRIVIAL_RESOURCE_BOUNDS, + }; + test_builder.add_explicit_cairo1_declare_tx( + &DATA_GAS_ACCOUNT_CONTRACT_SIERRA, + (*DATA_GAS_ACCOUNT_CONTRACT_CASM).clone(), + declare_args, + &test_builder.chain_id(), + ); + // Execute the business logic and extract the business logic resources for each tx. let test_runner = test_builder.build().await; - let [invoke_business_logic_resources]: [ExecutionResources; N_TXS] = test_runner + let business_logic_resources: [ExecutionResources; N_TXS] = test_runner .os_hints .os_input .os_block_inputs @@ -530,7 +544,7 @@ async fn test_execute_txs_inner_resources() { test_output.perform_default_validations(); // Fetch the OS resources for each tx. - let [invoke_os_resources]: [ExecutionResources; N_TXS] = test_output + let [invoke_overhead, declare_overhead]: [ExecutionResources; N_TXS] = test_output .runner_output .txs_trace .iter() @@ -538,11 +552,13 @@ async fn test_execute_txs_inner_resources() { .take(N_TXS) .rev() .map(|trace| trace.get_resources().unwrap().clone()) + .zip(business_logic_resources) + .map(|(os_resources, business_logic_resources)| { + (&os_resources - &business_logic_resources).filter_unused_builtins() + }) .collect::>() .try_into() .unwrap(); - let invoke_overhead = - (&invoke_os_resources - &invoke_business_logic_resources).filter_unused_builtins(); // Invoke: variable cost, with scaling of 2. // TODO(Dori): Compute linear factor cost. @@ -577,6 +593,18 @@ async fn test_execute_txs_inner_resources() { VariableResourceParams::WithFactor(invoke_resources_params), ); + // Declare: constant cost. + assert_matches!( + raw_vc.os_resources.execute_txs_inner.get(&TransactionType::Declare).unwrap(), + VariableResourceParams::Constant(_), + "Declare resources params has unexpected structure: {:?}", + raw_vc.os_resources.execute_txs_inner.get(&TransactionType::Declare).unwrap() + ); + raw_vc + .os_resources + .execute_txs_inner + .insert(TransactionType::Declare, VariableResourceParams::Constant(declare_overhead)); + // Verify computation. expect_file![VersionedConstants::json_path(&version).unwrap()] .assert_eq(&raw_vc.to_string_pretty());