diff --git a/Cargo.lock b/Cargo.lock index 3ef97fa355e0b..8ee3d0fc3dc0d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2886,6 +2886,7 @@ version = "0.1.1" dependencies = [ "aptos-gas-schedule", "aptos-native-interface", + "aptos-types", "dir-diff", "file_diff", "move-cli", diff --git a/aptos-move/aptos-gas-calibration/src/measurements.rs b/aptos-move/aptos-gas-calibration/src/measurements.rs index fa0257ce29a0c..92b8688b141cb 100644 --- a/aptos-move/aptos-gas-calibration/src/measurements.rs +++ b/aptos-move/aptos-gas-calibration/src/measurements.rs @@ -162,15 +162,17 @@ fn compile_and_run_samples_ir( .equation_names .push(format!("{}::{}", &identifier, func_identifier.0)); - let elapsed = executor.exec_func_record_running_time( - &module_id, - &func_identifier.0, - vec![], - func_identifier.1.clone(), - iterations, - ExecFuncTimerDynamicArgs::NoArgs, - GasMeterType::UnmeteredGasMeter, - ); + let elapsed = executor + .exec_func_record_running_time( + &module_id, + &func_identifier.0, + vec![], + func_identifier.1.clone(), + iterations, + ExecFuncTimerDynamicArgs::NoArgs, + GasMeterType::UnmeteredGasMeter, + ) + .elapsed_micros; gas_measurement.regular_meter.push(elapsed); // record with abstract gas meter diff --git a/aptos-move/aptos-gas-calibration/src/measurements_helpers.rs b/aptos-move/aptos-gas-calibration/src/measurements_helpers.rs index 3f242b4457d4e..cfcc0952696a2 100644 --- a/aptos-move/aptos-gas-calibration/src/measurements_helpers.rs +++ b/aptos-move/aptos-gas-calibration/src/measurements_helpers.rs @@ -94,15 +94,17 @@ pub fn execute_user_txn( iterations: u64, args: Vec>, ) -> u128 { - let elapsed = executor.exec_func_record_running_time( - module_name, - function_name, - vec![], - args, - iterations, - ExecFuncTimerDynamicArgs::NoArgs, - GasMeterType::UnmeteredGasMeter, - ); + let elapsed = executor + .exec_func_record_running_time( + module_name, + function_name, + vec![], + args, + iterations, + ExecFuncTimerDynamicArgs::NoArgs, + GasMeterType::UnmeteredGasMeter, + ) + .elapsed_micros; println!("running time (microseconds): {}", elapsed); elapsed } diff --git a/aptos-move/aptos-gas-schedule/src/gas_schedule/move_stdlib.rs b/aptos-move/aptos-gas-schedule/src/gas_schedule/move_stdlib.rs index c25afc6e515ba..b8507adfd1848 100644 --- a/aptos-move/aptos-gas-schedule/src/gas_schedule/move_stdlib.rs +++ b/aptos-move/aptos-gas-schedule/src/gas_schedule/move_stdlib.rs @@ -3,8 +3,14 @@ //! This module defines the gas parameters for Move Stdlib. -use crate::{gas_feature_versions::RELEASE_V1_18, gas_schedule::NativeGasParameters}; -use aptos_gas_algebra::{InternalGas, InternalGasPerByte}; +use crate::{ + gas_feature_versions::{RELEASE_V1_18, RELEASE_V1_24}, + gas_schedule::NativeGasParameters, +}; +use aptos_gas_algebra::{ + InternalGas, InternalGasPerAbstractValueUnit, InternalGasPerArg, InternalGasPerByte, + InternalGasPerTypeNode, +}; crate::gas_schedule::macros::define_gas_parameters!( MoveStdlibGasParameters, @@ -36,5 +42,15 @@ crate::gas_schedule::macros::define_gas_parameters!( [bcs_serialized_size_base: InternalGas, { RELEASE_V1_18.. => "bcs.serialized_size.base" }, 735], [bcs_serialized_size_per_byte_serialized: InternalGasPerByte, { RELEASE_V1_18.. => "bcs.serialized_size.per_byte_serialized" }, 36], [bcs_serialized_size_failure: InternalGas, { RELEASE_V1_18.. => "bcs.serialized_size.failure" }, 3676], + [bcs_constant_serialized_size_base: InternalGas, { RELEASE_V1_24.. => "bcs.constant_serialized_size.base" }, 735], + [bcs_constant_serialized_size_per_type_node: InternalGasPerTypeNode, { RELEASE_V1_24.. => "bcs.constant_serialized_size.per_type_node" }, 40], + + [mem_swap_base: InternalGas, { RELEASE_V1_24.. => "mem.swap.base" }, 1500], + + [vector_move_range_base: InternalGas, { RELEASE_V1_24.. => "vector.move_range.base" }, 4000], + [vector_move_range_per_index_moved: InternalGasPerArg, { RELEASE_V1_24.. => "vector.move_range.per_index_moved" }, 10], + + [cmp_compare_base: InternalGas, { RELEASE_V1_24.. => "cmp.compare.base" }, 367], + [cmp_compare_per_abs_val_unit: InternalGasPerAbstractValueUnit, { RELEASE_V1_24.. => "cmp.compare.per_abs_val_unit"}, 14], ] ); diff --git a/aptos-move/aptos-gas-schedule/src/ver.rs b/aptos-move/aptos-gas-schedule/src/ver.rs index cb8fc432fe52f..9e40e1d833880 100644 --- a/aptos-move/aptos-gas-schedule/src/ver.rs +++ b/aptos-move/aptos-gas-schedule/src/ver.rs @@ -69,7 +69,7 @@ /// global operations. /// - V1 /// - TBA -pub const LATEST_GAS_FEATURE_VERSION: u64 = gas_feature_versions::RELEASE_V1_23; +pub const LATEST_GAS_FEATURE_VERSION: u64 = gas_feature_versions::RELEASE_V1_24; pub mod gas_feature_versions { pub const RELEASE_V1_8: u64 = 11; diff --git a/aptos-move/aptos-native-interface/src/context.rs b/aptos-move/aptos-native-interface/src/context.rs index 1e4b116b748cd..91c46d92c304b 100644 --- a/aptos-move/aptos-native-interface/src/context.rs +++ b/aptos-move/aptos-native-interface/src/context.rs @@ -94,6 +94,13 @@ impl<'a, 'b, 'c, 'd> SafeNativeContext<'a, 'b, 'c, 'd> { .abstract_value_size(val, self.gas_feature_version) } + /// Computes the abstract size of the input value. + pub fn abs_val_size_dereferenced(&self, val: &Value) -> AbstractValueSize { + self.misc_gas_params + .abs_val + .abstract_value_size_dereferenced(val, self.gas_feature_version) + } + /// Returns the current gas feature version. pub fn gas_feature_version(&self) -> u64 { self.gas_feature_version diff --git a/aptos-move/aptos-release-builder/src/components/feature_flags.rs b/aptos-move/aptos-release-builder/src/components/feature_flags.rs index 4cd1b2a9db29d..0c22da831f93b 100644 --- a/aptos-move/aptos-release-builder/src/components/feature_flags.rs +++ b/aptos-move/aptos-release-builder/src/components/feature_flags.rs @@ -132,6 +132,7 @@ pub enum FeatureFlag { TransactionSimulationEnhancement, CollectionOwner, EnableLoaderV2, + NativeMemoryOperations, } fn generate_features_blob(writer: &CodeWriter, data: &[u64]) { @@ -349,6 +350,7 @@ impl From for AptosFeatureFlag { }, FeatureFlag::CollectionOwner => AptosFeatureFlag::COLLECTION_OWNER, FeatureFlag::EnableLoaderV2 => AptosFeatureFlag::ENABLE_LOADER_V2, + FeatureFlag::NativeMemoryOperations => AptosFeatureFlag::NATIVE_MEMORY_OPERATIONS, } } } @@ -493,6 +495,7 @@ impl From for FeatureFlag { }, AptosFeatureFlag::COLLECTION_OWNER => FeatureFlag::CollectionOwner, AptosFeatureFlag::ENABLE_LOADER_V2 => FeatureFlag::EnableLoaderV2, + AptosFeatureFlag::NATIVE_MEMORY_OPERATIONS => FeatureFlag::NativeMemoryOperations, } } } diff --git a/aptos-move/aptos-vm-benchmarks/src/helper.rs b/aptos-move/aptos-vm-benchmarks/src/helper.rs index aea964f3e20e2..25d12122a61a5 100644 --- a/aptos-move/aptos-vm-benchmarks/src/helper.rs +++ b/aptos-move/aptos-vm-benchmarks/src/helper.rs @@ -64,15 +64,17 @@ pub fn execute_module_txn( // sign user transaction and only records the body of the transaction pub fn execute_user_txn(executor: &mut FakeExecutor, module_name: &ModuleId, function_name: &str) { - let elapsed = executor.exec_func_record_running_time( - module_name, - function_name, - vec![], - vec![], - 10, - ExecFuncTimerDynamicArgs::NoArgs, - GasMeterType::UnmeteredGasMeter, - ); + let elapsed = executor + .exec_func_record_running_time( + module_name, + function_name, + vec![], + vec![], + 10, + ExecFuncTimerDynamicArgs::NoArgs, + GasMeterType::UnmeteredGasMeter, + ) + .elapsed_micros; println!("running time (microseconds): {}", elapsed); } diff --git a/aptos-move/aptos-vm-environment/src/natives.rs b/aptos-move/aptos-vm-environment/src/natives.rs index 4e11d2f21e9cb..d138ca40c2d2d 100644 --- a/aptos-move/aptos-vm-environment/src/natives.rs +++ b/aptos-move/aptos-vm-environment/src/natives.rs @@ -4,16 +4,35 @@ use aptos_native_interface::SafeNativeBuilder; use move_core_types::language_storage::CORE_CODE_ADDRESS; use move_vm_runtime::native_functions::NativeFunctionTable; +use std::collections::HashSet; /// Builds and returns all Aptos native functions. pub fn aptos_natives_with_builder( builder: &mut SafeNativeBuilder, inject_create_signer_for_gov_sim: bool, ) -> NativeFunctionTable { + let vector_bytecode_instruction_methods = HashSet::from([ + "empty", + "length", + "borrow", + "borrow_mut", + "push_back", + "pop_back", + "destroy_empty", + "swap", + ]); + #[allow(unreachable_code)] aptos_move_stdlib::natives::all_natives(CORE_CODE_ADDRESS, builder) .into_iter() - .filter(|(_, name, _, _)| name.as_str() != "vector") + .filter(|(_, name, func_name, _)| + if name.as_str() == "vector" && vector_bytecode_instruction_methods.contains(func_name.as_str()) { + println!("ERROR: Tried to register as native a vector bytecode_instruction method {}, skipping.", func_name.as_str()); + false + } else { + true + } + ) .chain(aptos_framework::natives::all_natives( CORE_CODE_ADDRESS, builder, diff --git a/aptos-move/e2e-benchmark/src/main.rs b/aptos-move/e2e-benchmark/src/main.rs index 6ac46ffd3f785..c80223ef0f110 100644 --- a/aptos-move/e2e-benchmark/src/main.rs +++ b/aptos-move/e2e-benchmark/src/main.rs @@ -3,7 +3,7 @@ use aptos_language_e2e_tests::{ account::Account, - executor::{ExecFuncTimerDynamicArgs, FakeExecutor, GasMeterType}, + executor::{ExecFuncTimerDynamicArgs, FakeExecutor, GasMeterType, TimeAndGas}, }; use aptos_transaction_generator_lib::{ publishing::{ @@ -46,7 +46,7 @@ fn execute_and_time_entry_point( publisher_address: &AccountAddress, executor: &mut FakeExecutor, iterations: u64, -) -> u128 { +) -> TimeAndGas { let mut rng = StdRng::seed_from_u64(14); let entry_fun = entry_point .create_payload( @@ -102,6 +102,78 @@ TokenV1MintAndTransferNFTSequential 6 0.991 1.067 543.7 TokenV2AmbassadorMint { numbered: true } 6 0.987 1.052 474.4 LiquidityPoolSwap { is_stable: true } 6 0.970 1.042 555.4 LiquidityPoolSwap { is_stable: false } 6 0.925 1.001 535.3 + + + +(146, EntryPoints::CoinInitAndMint), + (154, EntryPoints::FungibleAssetMint), + (23, EntryPoints::IncGlobalMilestoneAggV2 { + milestone_every: 1, + }), + (12, EntryPoints::IncGlobalMilestoneAggV2 { + milestone_every: 2, + }), + (6871, EntryPoints::EmitEvents { count: 1000 }), + // long vectors with small elements + (15890, EntryPoints::VectorTrimAppend { + // baseline, only vector creation + vec_len: 3000, + element_len: 1, + index: 0, + repeats: 0, + }), + (38047, EntryPoints::VectorTrimAppend { + vec_len: 3000, + element_len: 1, + index: 100, + repeats: 1000, + }), + (25923, EntryPoints::VectorTrimAppend { + vec_len: 3000, + element_len: 1, + index: 2990, + repeats: 1000, + }), + (35590, EntryPoints::VectorRemoveInsert { + vec_len: 3000, + element_len: 1, + index: 100, + repeats: 1000, + }), + (28141, EntryPoints::VectorRemoveInsert { + vec_len: 3000, + element_len: 1, + index: 2998, + repeats: 1000, + }), + (53500, EntryPoints::VectorRangeMove { + vec_len: 3000, + element_len: 1, + index: 1000, + move_len: 500, + repeats: 1000, + }), + // vectors with large elements + (654, EntryPoints::VectorTrimAppend { + // baseline, only vector creation + vec_len: 100, + element_len: 100, + index: 0, + repeats: 0, + }), + (11147, EntryPoints::VectorTrimAppend { + vec_len: 100, + element_len: 100, + index: 10, + repeats: 1000, + }), + (5545, EntryPoints::VectorRangeMove { + vec_len: 100, + element_len: 100, + index: 50, + move_len: 10, + repeats: 1000, + }), "; struct CalibrationInfo { @@ -145,7 +217,7 @@ fn main() { loop_type: LoopType::Arithmetic, }, // This is a cheap bcs (serializing vec), so not representative of what BCS native call should cost. - // (, EntryPoints::Loop { loop_count: Some(1000), loop_type: LoopType::BCS { len: 1024 }}), + // (, EntryPoints::Loop { loop_count: Some(1000), loop_type: LoopType::BcsToBytes { len: 1024 }}), EntryPoints::CreateObjects { num_objects: 10, object_payload_size: 0, @@ -162,9 +234,9 @@ fn main() { num_objects: 100, object_payload_size: 10 * 1024, }, - EntryPoints::InitializeVectorPicture { length: 40 }, - EntryPoints::VectorPicture { length: 40 }, - EntryPoints::VectorPictureRead { length: 40 }, + EntryPoints::InitializeVectorPicture { length: 128 }, + EntryPoints::VectorPicture { length: 128 }, + EntryPoints::VectorPictureRead { length: 128 }, EntryPoints::InitializeVectorPicture { length: 30 * 1024 }, EntryPoints::VectorPicture { length: 30 * 1024 }, EntryPoints::VectorPictureRead { length: 30 * 1024 }, @@ -187,14 +259,83 @@ fn main() { EntryPoints::TokenV2AmbassadorMint { numbered: true }, EntryPoints::LiquidityPoolSwap { is_stable: true }, EntryPoints::LiquidityPoolSwap { is_stable: false }, + EntryPoints::CoinInitAndMint, + EntryPoints::FungibleAssetMint, + EntryPoints::IncGlobalMilestoneAggV2 { + milestone_every: 1, + }, + EntryPoints::IncGlobalMilestoneAggV2 { + milestone_every: 2, + }, + EntryPoints::EmitEvents { count: 1000 }, + // long vectors with small elements + EntryPoints::VectorSplitOffAppend { + // baseline, only vector creation + vec_len: 3000, + element_len: 1, + index: 0, + repeats: 0, + }, + EntryPoints::VectorSplitOffAppend { + vec_len: 3000, + element_len: 1, + index: 100, + repeats: 1000, + }, + EntryPoints::VectorSplitOffAppend { + vec_len: 3000, + element_len: 1, + index: 2990, + repeats: 1000, + }, + EntryPoints::VectorRemoveInsert { + vec_len: 3000, + element_len: 1, + index: 100, + repeats: 1000, + }, + EntryPoints::VectorRemoveInsert { + vec_len: 3000, + element_len: 1, + index: 2998, + repeats: 1000, + }, + EntryPoints::VectorRangeMove { + vec_len: 3000, + element_len: 1, + index: 1000, + move_len: 500, + repeats: 1000, + }, + // vectors with large elements + EntryPoints::VectorSplitOffAppend { + // baseline, only vector creation + vec_len: 100, + element_len: 100, + index: 0, + repeats: 0, + }, + EntryPoints::VectorSplitOffAppend { + vec_len: 100, + element_len: 100, + index: 10, + repeats: 1000, + }, + EntryPoints::VectorRangeMove { + vec_len: 100, + element_len: 100, + index: 50, + move_len: 10, + repeats: 1000, + }, ]; let mut failures = Vec::new(); let mut json_lines = Vec::new(); println!( - "{:>15} {:>15} {:>15} entry point", - "wall time (us)", "expected (us)", "diff(- is impr)" + "{:>13} {:>13} {:>13}{:>13} {:>13} {:>13} entry point", + "walltime(us)", "expected(us)", "dif(- is impr)", "gas/s", "exe gas", "io gas", ); for (index, entry_point) in entry_points.into_iter().enumerate() { @@ -214,7 +355,6 @@ fn main() { 0, package.publish_transaction_payload(), ); - println!("Published package: {:?}", entry_point.package_name()); if let Some(init_entry_point) = entry_point.initialize_entry_point() { execute_txn( &mut executor, @@ -226,13 +366,9 @@ fn main() { Some(publisher.address()), ), ); - println!( - "Executed init entry point: {:?}", - entry_point.initialize_entry_point() - ); } - let elapsed_micros = execute_and_time_entry_point( + let measurement = execute_and_time_entry_point( &entry_point, &package, publisher.address(), @@ -245,33 +381,44 @@ fn main() { 100 }, ); - let diff = (elapsed_micros as f32 - expected_time) / expected_time * 100.0; + let diff = (measurement.elapsed_micros as f32 - expected_time as f32) + / (expected_time as f32) + * 100.0; println!( - "{:15} {:15.1} {:14.1}% {:?}", - elapsed_micros, expected_time, diff, entry_point + "{:13} {:13.1} {:12.1}% {:13} {:13} {:13} {:?}", + measurement.elapsed_micros, + expected_time, + diff, + (measurement.execution_gas + measurement.io_gas) as u128 / measurement.elapsed_micros, + measurement.execution_gas, + measurement.io_gas, + entry_point ); json_lines.push(json!({ "grep": "grep_json_aptos_move_vm_perf", "transaction_type": entry_point_name, - "wall_time_us": elapsed_micros, + "wall_time_us": measurement.elapsed_micros, + "gps": (measurement.execution_gas + measurement.io_gas) as u128 / measurement.elapsed_micros, + "execution_gas": measurement.execution_gas, + "io_gas": measurement.io_gas, "expected_wall_time_us": expected_time, "test_index": index, })); - if elapsed_micros as f32 + if measurement.elapsed_micros as f32 > expected_time as f32 * (1.0 + ALLOWED_REGRESSION) + ABSOLUTE_BUFFER_US { failures.push(format!( "Performance regression detected: {}us, expected: {}us, diff: {}%, for {:?}", - elapsed_micros, expected_time, diff, entry_point + measurement.elapsed_micros, expected_time, diff, entry_point )); - } else if elapsed_micros as f32 + ABSOLUTE_BUFFER_US + } else if measurement.elapsed_micros as f32 + ABSOLUTE_BUFFER_US < expected_time as f32 * (1.0 - ALLOWED_IMPROVEMENT) { failures.push(format!( "Performance improvement detected: {}us, expected {}us, diff: {}%, for {:?}. You need to adjust expected time!", - elapsed_micros, expected_time, diff, entry_point + measurement.elapsed_micros, expected_time, diff, entry_point )); } } diff --git a/aptos-move/e2e-move-tests/src/tests/code_publishing.data/pack_stdlib/sources/mem.move b/aptos-move/e2e-move-tests/src/tests/code_publishing.data/pack_stdlib/sources/mem.move new file mode 120000 index 0000000000000..13c1b4e1d1a8f --- /dev/null +++ b/aptos-move/e2e-move-tests/src/tests/code_publishing.data/pack_stdlib/sources/mem.move @@ -0,0 +1 @@ +../../../../../../framework/move-stdlib/sources/mem.move \ No newline at end of file diff --git a/aptos-move/e2e-move-tests/src/tests/code_publishing.data/pack_stdlib_incompat/sources/mem.move b/aptos-move/e2e-move-tests/src/tests/code_publishing.data/pack_stdlib_incompat/sources/mem.move new file mode 120000 index 0000000000000..13c1b4e1d1a8f --- /dev/null +++ b/aptos-move/e2e-move-tests/src/tests/code_publishing.data/pack_stdlib_incompat/sources/mem.move @@ -0,0 +1 @@ +../../../../../../framework/move-stdlib/sources/mem.move \ No newline at end of file diff --git a/aptos-move/e2e-move-tests/src/tests/transaction_context.data/pack/sources/transaction_context_test.move b/aptos-move/e2e-move-tests/src/tests/transaction_context.data/pack/sources/transaction_context_test.move index 0116d1035c9b0..de1ef952205a5 100644 --- a/aptos-move/e2e-move-tests/src/tests/transaction_context.data/pack/sources/transaction_context_test.move +++ b/aptos-move/e2e-move-tests/src/tests/transaction_context.data/pack/sources/transaction_context_test.move @@ -110,6 +110,10 @@ module admin::transaction_context_test { ), type_info::type_name()], 13 ); + + assert!(option::some(option::destroy_some(payload_opt)) == transaction_context::entry_function_payload(), 13); + } else { + assert!(option::none() == payload_opt, 14); } } @@ -128,7 +132,10 @@ module admin::transaction_context_test { store.function_name = transaction_context::function_name(entry); store.type_arg_names = transaction_context::type_arg_names(entry); store.args = transaction_context::args(entry); - } + }; + assert!(option::some(option::destroy_some(multisig_opt)) == transaction_context::multisig_payload(), 1); + } else { + assert!(option::none() == multisig_opt, 2); } } diff --git a/aptos-move/e2e-tests/src/executor.rs b/aptos-move/e2e-tests/src/executor.rs index b97961dad4efc..eeb73581e6831 100644 --- a/aptos-move/e2e-tests/src/executor.rs +++ b/aptos-move/e2e-tests/src/executor.rs @@ -18,7 +18,7 @@ use aptos_block_executor::txn_commit_hook::NoOpTransactionCommitHook; use aptos_crypto::HashValue; use aptos_framework::ReleaseBundle; use aptos_gas_algebra::DynamicExpression; -use aptos_gas_meter::{StandardGasAlgebra, StandardGasMeter}; +use aptos_gas_meter::{AptosGasMeter, GasAlgebra, StandardGasAlgebra, StandardGasMeter}; use aptos_gas_profiling::{GasProfiler, TransactionGasLog}; use aptos_keygen::KeyGen; use aptos_types::{ @@ -137,6 +137,13 @@ pub enum GasMeterType { UnmeteredGasMeter, } +#[derive(Clone)] +pub struct TimeAndGas { + pub elapsed_micros: u128, + pub execution_gas: u64, + pub io_gas: u64, +} + pub enum ExecFuncTimerDynamicArgs { NoArgs, DistinctSigners, @@ -960,7 +967,7 @@ impl FakeExecutor { iterations: u64, dynamic_args: ExecFuncTimerDynamicArgs, gas_meter_type: GasMeterType, - ) -> u128 { + ) -> TimeAndGas { let mut extra_accounts = match &dynamic_args { ExecFuncTimerDynamicArgs::DistinctSigners | ExecFuncTimerDynamicArgs::DistinctSignersAndFixed(_) => (0..iterations) @@ -1049,21 +1056,36 @@ impl FakeExecutor { let elapsed = start.elapsed(); if let Err(err) = result { if !should_error { - println!("Shouldn't error, but ignoring for now... {}", err); + println!( + "Entry function under measurement failed with an error. Continuing, but measurements are probably not what is expected. Error: {}", + err + ); } } - times.push(elapsed.as_micros()); + times.push(TimeAndGas { + elapsed_micros: elapsed.as_micros(), + execution_gas: regular + .as_ref() + .map_or(0, |gas| gas.algebra().execution_gas_used().into()), + io_gas: regular + .as_ref() + .map_or(0, |gas| gas.algebra().io_gas_used().into()), + }); i += 1; } // take median of all running time iterations as a more robust measurement - times.sort(); + times.sort_by_key(|v| v.elapsed_micros); let length = times.len(); let mid = length / 2; - let mut running_time = times[mid]; + let mut running_time = times[mid].clone(); if length % 2 == 0 { - running_time = (times[mid - 1] + times[mid]) / 2; + running_time = TimeAndGas { + elapsed_micros: (times[mid - 1].elapsed_micros + times[mid].elapsed_micros) / 2, + execution_gas: (times[mid - 1].execution_gas + times[mid].execution_gas) / 2, + io_gas: (times[mid - 1].io_gas + times[mid].io_gas) / 2, + }; } running_time diff --git a/aptos-move/framework/aptos-stdlib/doc/big_vector.md b/aptos-move/framework/aptos-stdlib/doc/big_vector.md index 7d785a5b730a1..da978bc07ff9e 100644 --- a/aptos-move/framework/aptos-stdlib/doc/big_vector.md +++ b/aptos-move/framework/aptos-stdlib/doc/big_vector.md @@ -502,7 +502,7 @@ Aborts if i is out of bounds. if (self.end_index == i) { return last_val }; - // because the lack of mem::swap, here we swap remove the requested value from the bucket + // because the lack of mem::swap, here we swap remove the requested value from the bucket // and append the last_val to the bucket then swap the last bucket val back let bucket = table_with_length::borrow_mut(&mut self.buckets, i / self.bucket_size); let bucket_len = vector::length(bucket); diff --git a/aptos-move/framework/move-stdlib/Cargo.toml b/aptos-move/framework/move-stdlib/Cargo.toml index e02f9290530f3..461367954b16d 100644 --- a/aptos-move/framework/move-stdlib/Cargo.toml +++ b/aptos-move/framework/move-stdlib/Cargo.toml @@ -11,8 +11,10 @@ publish = false # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +aptos-types = { workspace = true } aptos-gas-schedule = { workspace = true } aptos-native-interface = { workspace = true } +aptos-types = { workspace = true } move-core-types = { path = "../../../third_party/move/move-core/types" } move-vm-runtime = { path = "../../../third_party/move/move-vm/runtime" } move-vm-types = { path = "../../../third_party/move/move-vm/types" } diff --git a/aptos-move/framework/move-stdlib/doc/bcs.md b/aptos-move/framework/move-stdlib/doc/bcs.md index 9bdcf7f45f7d3..05e8c1d9b6e59 100644 --- a/aptos-move/framework/move-stdlib/doc/bcs.md +++ b/aptos-move/framework/move-stdlib/doc/bcs.md @@ -11,11 +11,13 @@ details on BCS. - [Function `to_bytes`](#0x1_bcs_to_bytes) - [Function `serialized_size`](#0x1_bcs_serialized_size) +- [Function `constant_serialized_size`](#0x1_bcs_constant_serialized_size) - [Specification](#@Specification_0) - [Function `serialized_size`](#@Specification_0_serialized_size) -
+
use 0x1::option;
+
@@ -65,6 +67,38 @@ Aborts with 0x1c5 error code if there is a failure when calculating + + + + +## Function `constant_serialized_size` + +If the type has known constant (always the same, independent of instance) serialized size +in BCS (Binary Canonical Serialization) format, returns it, otherwise returns None. +Aborts with 0x1c5 error code if there is a failure when calculating serialized size. + +Note: +For some types it might not be known they have constant size, and function might return None. +For example, signer appears to have constant size, but it's size might change. +If this function returned Some() for some type before - it is guaranteed to continue returning Some() +On the other hand, if function has returned None for some type, +it might change in the future to return Some() instead, if size becomes "known". + + +
public(friend) fun constant_serialized_size<MoveValue>(): option::Option<u64>
+
+ + + +
+Implementation + + +
native public(friend) fun constant_serialized_size<MoveValue>(): std::option::Option<u64>;
+
+ + +
diff --git a/aptos-move/framework/move-stdlib/doc/features.md b/aptos-move/framework/move-stdlib/doc/features.md index 3919625f4ff9c..e5604063b6071 100644 --- a/aptos-move/framework/move-stdlib/doc/features.md +++ b/aptos-move/framework/move-stdlib/doc/features.md @@ -133,6 +133,8 @@ return true. - [Function `transaction_simulation_enhancement_enabled`](#0x1_features_transaction_simulation_enhancement_enabled) - [Function `get_collection_owner_feature`](#0x1_features_get_collection_owner_feature) - [Function `is_collection_owner_enabled`](#0x1_features_is_collection_owner_enabled) +- [Function `get_native_memory_operations_feature`](#0x1_features_get_native_memory_operations_feature) +- [Function `is_native_memory_operations_enabled`](#0x1_features_is_native_memory_operations_enabled) - [Function `change_feature_flags`](#0x1_features_change_feature_flags) - [Function `change_feature_flags_internal`](#0x1_features_change_feature_flags_internal) - [Function `change_feature_flags_for_next_epoch`](#0x1_features_change_feature_flags_for_next_epoch) @@ -671,6 +673,15 @@ Lifetime: transient + + + + +
const NATIVE_MEMORY_OPERATIONS: u64 = 80;
+
+ + + Lifetime: transient @@ -3274,6 +3285,52 @@ Deprecated feature + + + + +## Function `get_native_memory_operations_feature` + + + +
public fun get_native_memory_operations_feature(): u64
+
+ + + +
+Implementation + + +
public fun get_native_memory_operations_feature(): u64 { NATIVE_MEMORY_OPERATIONS }
+
+ + + +
+ + + +## Function `is_native_memory_operations_enabled` + + + +
public fun is_native_memory_operations_enabled(): bool
+
+ + + +
+Implementation + + +
public fun is_native_memory_operations_enabled(): bool acquires Features {
+    is_enabled(NATIVE_MEMORY_OPERATIONS)
+}
+
+ + +
diff --git a/aptos-move/framework/move-stdlib/doc/mem.md b/aptos-move/framework/move-stdlib/doc/mem.md new file mode 100644 index 0000000000000..35123d575c9d1 --- /dev/null +++ b/aptos-move/framework/move-stdlib/doc/mem.md @@ -0,0 +1,112 @@ + + + +# Module `0x1::mem` + +Module with methods for safe memory manipulation. + + +- [Function `swap`](#0x1_mem_swap) +- [Function `replace`](#0x1_mem_replace) +- [Specification](#@Specification_0) + - [Function `swap`](#@Specification_0_swap) + - [Function `replace`](#@Specification_0_replace) + + +
+ + + + + +## Function `swap` + +Swap contents of two passed mutable references. + + +
public(friend) fun swap<T>(left: &mut T, right: &mut T)
+
+ + + +
+Implementation + + +
public(friend) native fun swap<T>(left: &mut T, right: &mut T);
+
+ + + +
+ + + +## Function `replace` + +Replace the value reference points to with the given new value, +and return the value it had before. + + +
public(friend) fun replace<T>(ref: &mut T, new: T): T
+
+ + + +
+Implementation + + +
public(friend) fun replace<T>(ref: &mut T, new: T): T {
+    swap(ref, &mut new);
+    new
+}
+
+ + + +
+ + + +## Specification + + + + +### Function `swap` + + +
public(friend) fun swap<T>(left: &mut T, right: &mut T)
+
+ + + + +
pragma opaque;
+aborts_if false;
+ensures right == old(left);
+ensures left == old(right);
+
+ + + + + +### Function `replace` + + +
public(friend) fun replace<T>(ref: &mut T, new: T): T
+
+ + + + +
pragma opaque;
+aborts_if false;
+ensures result == old(ref);
+ensures ref == new;
+
+ + +[move-book]: https://aptos.dev/move/book/SUMMARY diff --git a/aptos-move/framework/move-stdlib/doc/overview.md b/aptos-move/framework/move-stdlib/doc/overview.md index 8eb0c67f05113..649873e8ab2f5 100644 --- a/aptos-move/framework/move-stdlib/doc/overview.md +++ b/aptos-move/framework/move-stdlib/doc/overview.md @@ -20,6 +20,7 @@ For on overview of the Move language, see the [Move Book][move-book]. - [`0x1::features`](features.md#0x1_features) - [`0x1::fixed_point32`](fixed_point32.md#0x1_fixed_point32) - [`0x1::hash`](hash.md#0x1_hash) +- [`0x1::mem`](mem.md#0x1_mem) - [`0x1::option`](option.md#0x1_option) - [`0x1::signer`](signer.md#0x1_signer) - [`0x1::string`](string.md#0x1_string) diff --git a/aptos-move/framework/move-stdlib/doc/vector.md b/aptos-move/framework/move-stdlib/doc/vector.md index d5e6a7bfa2ecd..616fa0abf21aa 100644 --- a/aptos-move/framework/move-stdlib/doc/vector.md +++ b/aptos-move/framework/move-stdlib/doc/vector.md @@ -24,6 +24,7 @@ the return on investment didn't seem worth it for these simple functions. - [Function `pop_back`](#0x1_vector_pop_back) - [Function `destroy_empty`](#0x1_vector_destroy_empty) - [Function `swap`](#0x1_vector_swap) +- [Function `move_range`](#0x1_vector_move_range) - [Function `singleton`](#0x1_vector_singleton) - [Function `reverse`](#0x1_vector_reverse) - [Function `reverse_slice`](#0x1_vector_reverse_slice) @@ -39,6 +40,7 @@ the return on investment didn't seem worth it for these simple functions. - [Function `remove`](#0x1_vector_remove) - [Function `remove_value`](#0x1_vector_remove_value) - [Function `swap_remove`](#0x1_vector_swap_remove) +- [Function `replace`](#0x1_vector_replace) - [Function `for_each`](#0x1_vector_for_each) - [Function `for_each_reverse`](#0x1_vector_for_each_reverse) - [Function `for_each_ref`](#0x1_vector_for_each_ref) @@ -86,7 +88,8 @@ the return on investment didn't seem worth it for these simple functions. - [Function `rotate_slice`](#@Specification_1_rotate_slice) -
+
use 0x1::mem;
+
@@ -145,6 +148,18 @@ The length of the vectors are not equal. + + +Whether to utilize native vector::move_range +Vector module cannot call features module, due to cyclic dependency, +so this is a constant. + + +
const USE_MOVE_RANGE: bool = true;
+
+ + + ## Function `empty` @@ -340,6 +355,35 @@ Aborts if i or j is out of bounds. + + + + +## Function `move_range` + +Moves range of elements [removal_position, removal_position + length) from vector from, +to vector to, inserting them starting at the insert_position. +In the from vector, elements after the selected range are moved left to fill the hole +(i.e. range is removed, while the order of the rest of the elements is kept) +In the to vector, elements after the insert_position are moved the the right to make space for new elements +(i.e. range is inserted, while the order of the rest of the elements is kept). +Move prevents from having two mutable references to the same value, so from and to vectors are always distinct. + + +
public(friend) fun move_range<T>(from: &mut vector<T>, removal_position: u64, length: u64, to: &mut vector<T>, insert_position: u64)
+
+ + + +
+Implementation + + +
native public(friend) fun move_range<T>(from: &mut vector<T>, removal_position: u64, length: u64, to: &mut vector<T>, insert_position: u64);
+
+ + +
@@ -444,8 +488,15 @@ Pushes all of the elements of the other vector into the self<
public fun append<Element>(self: &mut vector<Element>, other: vector<Element>) {
-    reverse(&mut other);
-    reverse_append(self, other);
+    if (USE_MOVE_RANGE) {
+        let self_length = length(self);
+        let other_length = length(&other);
+        move_range(&mut other, 0, other_length, self, self_length);
+        destroy_empty(other);
+    } else {
+        reverse(&mut other);
+        reverse_append(self, other);
+    }
 }
 
@@ -487,7 +538,11 @@ Pushes all of the elements of the other vector into the self< ## Function `trim` -Trim a vector to a smaller size, returning the evicted elements in order +Splits (trims) the collection into two at the given index. +Returns a newly allocated vector containing the elements in the range [new_len, len). +After the call, the original vector will be left containing the elements [0, new_len) +with its previous capacity unchanged. +In many languages this is also called split_off.
public fun trim<Element>(self: &mut vector<Element>, new_len: u64): vector<Element>
@@ -500,9 +555,21 @@ Trim a vector to a smaller size, returning the evicted elements in order
 
 
 
public fun trim<Element>(self: &mut vector<Element>, new_len: u64): vector<Element> {
-    let res = trim_reverse(self, new_len);
-    reverse(&mut res);
-    res
+    let len = length(self);
+    assert!(new_len <= len, EINDEX_OUT_OF_BOUNDS);
+
+    let other = empty();
+    if (USE_MOVE_RANGE) {
+        move_range(self, new_len, len - new_len, &mut other, 0);
+    } else {
+        while (len > new_len) {
+            push_back(&mut other, pop_back(self));
+            len = len - 1;
+        };
+        reverse(&mut other);
+    };
+
+    other
 }
 
@@ -690,10 +757,27 @@ Aborts if out of bounds.
public fun insert<Element>(self: &mut vector<Element>, i: u64, e: Element) {
     let len = length(self);
     assert!(i <= len, EINDEX_OUT_OF_BOUNDS);
-    push_back(self, e);
-    while (i < len) {
-        swap(self, i, len);
-        i = i + 1;
+
+    if (USE_MOVE_RANGE) {
+        if (i + 2 >= len) {
+            // When we are close to the end, it is cheaper to not create
+            // a temporary vector, and swap directly
+            push_back(self, e);
+            while (i < len) {
+                swap(self, i, len);
+                i = i + 1;
+            };
+        } else {
+            let other = singleton(e);
+            move_range(&mut other, 0, 1, self, i);
+            destroy_empty(other);
+        }
+    } else {
+        push_back(self, e);
+        while (i < len) {
+            swap(self, i, len);
+            i = i + 1;
+        };
     };
 }
 
@@ -725,9 +809,25 @@ Aborts if i is out of bounds. // i out of bounds; abort if (i >= len) abort EINDEX_OUT_OF_BOUNDS; - len = len - 1; - while (i < len) swap(self, i, { i = i + 1; i }); - pop_back(self) + if (USE_MOVE_RANGE) { + // When we are close to the end, it is cheaper to not create + // a temporary vector, and swap directly + if (i + 3 >= len) { + len = len - 1; + while (i < len) swap(self, i, { i = i + 1; i }); + pop_back(self) + } else { + let other = empty(); + move_range(self, i, 1, &mut other, 0); + let result = pop_back(&mut other); + destroy_empty(other); + result + } + } else { + len = len - 1; + while (i < len) swap(self, i, { i = i + 1; i }); + pop_back(self) + } }
@@ -800,6 +900,41 @@ Aborts if i is out of bounds. + + + + +## Function `replace` + +Replace the ith element of the vector self with the given value, and return +to the caller the value that was there before. +Aborts if i is out of bounds. + + +
public fun replace<Element>(self: &mut vector<Element>, i: u64, val: Element): Element
+
+ + + +
+Implementation + + +
public fun replace<Element>(self: &mut vector<Element>, i: u64, val: Element): Element {
+    let last_idx = length(self);
+    assert!(i < last_idx, EINDEX_OUT_OF_BOUNDS);
+    if (USE_MOVE_RANGE) {
+        mem::replace(borrow_mut(self, i), val)
+    } else {
+        push_back(self, val);
+        swap(self, i, last_idx);
+        pop_back(self)
+    }
+}
+
+ + +
diff --git a/aptos-move/framework/move-stdlib/doc/vector_ext.md b/aptos-move/framework/move-stdlib/doc/vector_ext.md new file mode 100644 index 0000000000000..1fa207f777813 --- /dev/null +++ b/aptos-move/framework/move-stdlib/doc/vector_ext.md @@ -0,0 +1,201 @@ + + + +# Module `0x1::vector_ext` + + + +- [Constants](#@Constants_0) +- [Function `range_move`](#0x1_vector_ext_range_move) +- [Function `split_off`](#0x1_vector_ext_split_off) +- [Function `append`](#0x1_vector_ext_append) +- [Function `insert`](#0x1_vector_ext_insert) +- [Function `remove`](#0x1_vector_ext_remove) + + +
use 0x1::vector;
+
+ + + + + +## Constants + + + + +The index into the vector is out of bounds + + +
const EINDEX_OUT_OF_BOUNDS: u64 = 131072;
+
+ + + + + +## Function `range_move` + + + +
public fun range_move<T>(from: &mut vector<T>, removal_position: u64, length: u64, to: &mut vector<T>, insert_position: u64)
+
+ + + +
+Implementation + + +
public native fun range_move<T>(from: &mut vector<T>, removal_position: u64, length: u64, to: &mut vector<T>, insert_position: u64);
+
+ + + +
+ + + +## Function `split_off` + +Splits the collection into two at the given index. +Returns a newly allocated vector containing the elements in the range [at, len). +After the call, the original vector will be left containing the elements [0, at) +with its previous capacity unchanged. + + +
public fun split_off<Element>(self: &mut vector<Element>, at: u64): vector<Element>
+
+ + + +
+Implementation + + +
public fun split_off<Element>(self: &mut vector<Element>, at: u64): vector<Element> {
+    let len = vector::length(self);
+    assert!(at <= len, EINDEX_OUT_OF_BOUNDS);
+
+    let other = vector::empty();
+    range_move(self, at, len - at, &mut other, 0);
+
+    // let other = empty();
+    // while (len > at) {
+    //     push_back(&mut other, pop_back(self));
+    //     len = len - 1;
+    // };
+    // reverse(&mut other);
+    other
+}
+
+ + + +
+ + + +## Function `append` + +Pushes all of the elements of the other vector into the self vector. + + +
public fun append<Element>(self: &mut vector<Element>, other: vector<Element>)
+
+ + + +
+Implementation + + +
public fun append<Element>(self: &mut vector<Element>, other: vector<Element>) {
+    let self_length = self.length();
+    let other_length = other.length();
+    range_move(&mut other, 0, other_length, self, self_length);
+    other.destroy_empty();
+    // reverse(&mut other);
+    // reverse_append(self, other);
+}
+
+ + + +
+ + + +## Function `insert` + + + +
public fun insert<Element>(self: &mut vector<Element>, i: u64, e: Element)
+
+ + + +
+Implementation + + +
public fun insert<Element>(self: &mut vector<Element>, i: u64, e: Element) {
+    let len = self.length();
+    assert!(i <= len, EINDEX_OUT_OF_BOUNDS);
+
+    if (i == len) {
+        self.push_back(e);
+    } else {
+        let other = vector::singleton(e);
+        range_move(&mut other, 0, 1, self, i);
+        other.destroy_empty();
+    }
+}
+
+ + + +
+ + + +## Function `remove` + +Remove the ith element of the vector self, shifting all subsequent elements. +This is O(n) and preserves ordering of elements in the vector. +Aborts if i is out of bounds. + + +
public fun remove<Element>(self: &mut vector<Element>, i: u64): Element
+
+ + + +
+Implementation + + +
public fun remove<Element>(self: &mut vector<Element>, i: u64): Element {
+    let len = self.length();
+    // i out of bounds; abort
+    if (i >= len) abort EINDEX_OUT_OF_BOUNDS;
+
+    if (i + 1 == len) {
+        self.pop_back()
+    } else {
+        let other = vector::empty();
+        range_move(self, i, 1, &mut other, 0);
+        let result = other.pop_back();
+        other.destroy_empty();
+        result
+    }
+}
+
+ + + +
+ + +[move-book]: https://aptos.dev/move/book/SUMMARY diff --git a/aptos-move/framework/move-stdlib/sources/bcs.move b/aptos-move/framework/move-stdlib/sources/bcs.move index 478cbed627f24..1c589a77a5c19 100644 --- a/aptos-move/framework/move-stdlib/sources/bcs.move +++ b/aptos-move/framework/move-stdlib/sources/bcs.move @@ -11,6 +11,23 @@ module std::bcs { /// Aborts with `0x1c5` error code if there is a failure when calculating serialized size. native public fun serialized_size(v: &MoveValue): u64; + // TODO - function `constant_serialized_size1 is `public(friend)` here for one release, + // and to be changed to `public` one release later. + #[test_only] + friend std::bcs_tests; + + /// If the type has known constant (always the same, independent of instance) serialized size + /// in BCS (Binary Canonical Serialization) format, returns it, otherwise returns None. + /// Aborts with `0x1c5` error code if there is a failure when calculating serialized size. + /// + /// Note: + /// For some types it might not be known they have constant size, and function might return None. + /// For example, signer appears to have constant size, but it's size might change. + /// If this function returned Some() for some type before - it is guaranteed to continue returning Some() + /// On the other hand, if function has returned None for some type, + /// it might change in the future to return Some() instead, if size becomes "known". + native public(friend) fun constant_serialized_size(): std::option::Option; + // ============================== // Module Specification spec module {} // switch to module documentation context diff --git a/aptos-move/framework/move-stdlib/sources/configs/features.move b/aptos-move/framework/move-stdlib/sources/configs/features.move index 2bdba4056eaae..2b3a5291c600d 100644 --- a/aptos-move/framework/move-stdlib/sources/configs/features.move +++ b/aptos-move/framework/move-stdlib/sources/configs/features.move @@ -607,6 +607,14 @@ module std::features { is_enabled(COLLECTION_OWNER) } + const NATIVE_MEMORY_OPERATIONS: u64 = 80; + + public fun get_native_memory_operations_feature(): u64 { NATIVE_MEMORY_OPERATIONS } + + public fun is_native_memory_operations_enabled(): bool acquires Features { + is_enabled(NATIVE_MEMORY_OPERATIONS) + } + // ============================================================================================ // Feature Flag Implementation diff --git a/aptos-move/framework/move-stdlib/sources/mem.move b/aptos-move/framework/move-stdlib/sources/mem.move new file mode 100644 index 0000000000000..4ca36f4191a19 --- /dev/null +++ b/aptos-move/framework/move-stdlib/sources/mem.move @@ -0,0 +1,32 @@ +/// Module with methods for safe memory manipulation. +module std::mem { + // TODO - functions here are `public(friend)` here for one release, + // and to be changed to `public` one release later. + friend std::vector; + #[test_only] + friend std::mem_tests; + + /// Swap contents of two passed mutable references. + public(friend) native fun swap(left: &mut T, right: &mut T); + + /// Replace the value reference points to with the given new value, + /// and return the value it had before. + public(friend) fun replace(ref: &mut T, new: T): T { + swap(ref, &mut new); + new + } + + spec swap(left: &mut T, right: &mut T) { + pragma opaque; + aborts_if false; + ensures right == old(left); + ensures left == old(right); + } + + spec replace(ref: &mut T, new: T): T { + pragma opaque; + aborts_if false; + ensures result == old(ref); + ensures ref == new; + } +} diff --git a/aptos-move/framework/move-stdlib/sources/vector.move b/aptos-move/framework/move-stdlib/sources/vector.move index 1f7754a2a4cb8..2a050294e17f0 100644 --- a/aptos-move/framework/move-stdlib/sources/vector.move +++ b/aptos-move/framework/move-stdlib/sources/vector.move @@ -9,6 +9,8 @@ /// Move functions here because many have loops, requiring loop invariants to prove, and /// the return on investment didn't seem worth it for these simple functions. module std::vector { + use std::mem; + /// The index into the vector is out of bounds const EINDEX_OUT_OF_BOUNDS: u64 = 0x20000; @@ -24,6 +26,11 @@ module std::vector { /// The range in `slice` is invalid. const EINVALID_SLICE_RANGE: u64 = 0x20004; + /// Whether to utilize native vector::move_range + /// Vector module cannot call features module, due to cyclic dependency, + /// so this is a constant. + const USE_MOVE_RANGE: bool = true; + #[bytecode_instruction] /// Create an empty vector. native public fun empty(): vector; @@ -61,6 +68,20 @@ module std::vector { /// Aborts if `i` or `j` is out of bounds. native public fun swap(self: &mut vector, i: u64, j: u64); + // TODO - functions here are `public(friend)` here for one release, + // and to be changed to `public` one release later. + #[test_only] + friend std::vector_tests; + + /// Moves range of elements `[removal_position, removal_position + length)` from vector `from`, + /// to vector `to`, inserting them starting at the `insert_position`. + /// In the `from` vector, elements after the selected range are moved left to fill the hole + /// (i.e. range is removed, while the order of the rest of the elements is kept) + /// In the `to` vector, elements after the `insert_position` are moved the the right to make space for new elements + /// (i.e. range is inserted, while the order of the rest of the elements is kept). + /// Move prevents from having two mutable references to the same value, so `from` and `to` vectors are always distinct. + native public(friend) fun move_range(from: &mut vector, removal_position: u64, length: u64, to: &mut vector, insert_position: u64); + /// Return an vector of size one containing element `e`. public fun singleton(e: Element): vector { let v = empty(); @@ -99,8 +120,15 @@ module std::vector { /// Pushes all of the elements of the `other` vector into the `self` vector. public fun append(self: &mut vector, other: vector) { - reverse(&mut other); - reverse_append(self, other); + if (USE_MOVE_RANGE) { + let self_length = length(self); + let other_length = length(&other); + move_range(&mut other, 0, other_length, self, self_length); + destroy_empty(other); + } else { + reverse(&mut other); + reverse_append(self, other); + } } spec append { pragma intrinsic = true; @@ -122,11 +150,27 @@ module std::vector { pragma intrinsic = true; } - /// Trim a vector to a smaller size, returning the evicted elements in order + /// Splits (trims) the collection into two at the given index. + /// Returns a newly allocated vector containing the elements in the range [new_len, len). + /// After the call, the original vector will be left containing the elements [0, new_len) + /// with its previous capacity unchanged. + /// In many languages this is also called `split_off`. public fun trim(self: &mut vector, new_len: u64): vector { - let res = trim_reverse(self, new_len); - reverse(&mut res); - res + let len = length(self); + assert!(new_len <= len, EINDEX_OUT_OF_BOUNDS); + + let other = empty(); + if (USE_MOVE_RANGE) { + move_range(self, new_len, len - new_len, &mut other, 0); + } else { + while (len > new_len) { + push_back(&mut other, pop_back(self)); + len = len - 1; + }; + reverse(&mut other); + }; + + other } spec trim { pragma intrinsic = true; @@ -207,10 +251,27 @@ module std::vector { public fun insert(self: &mut vector, i: u64, e: Element) { let len = length(self); assert!(i <= len, EINDEX_OUT_OF_BOUNDS); - push_back(self, e); - while (i < len) { - swap(self, i, len); - i = i + 1; + + if (USE_MOVE_RANGE) { + if (i + 2 >= len) { + // When we are close to the end, it is cheaper to not create + // a temporary vector, and swap directly + push_back(self, e); + while (i < len) { + swap(self, i, len); + i = i + 1; + }; + } else { + let other = singleton(e); + move_range(&mut other, 0, 1, self, i); + destroy_empty(other); + } + } else { + push_back(self, e); + while (i < len) { + swap(self, i, len); + i = i + 1; + }; }; } spec insert { @@ -225,9 +286,25 @@ module std::vector { // i out of bounds; abort if (i >= len) abort EINDEX_OUT_OF_BOUNDS; - len = len - 1; - while (i < len) swap(self, i, { i = i + 1; i }); - pop_back(self) + if (USE_MOVE_RANGE) { + // When we are close to the end, it is cheaper to not create + // a temporary vector, and swap directly + if (i + 3 >= len) { + len = len - 1; + while (i < len) swap(self, i, { i = i + 1; i }); + pop_back(self) + } else { + let other = empty(); + move_range(self, i, 1, &mut other, 0); + let result = pop_back(&mut other); + destroy_empty(other); + result + } + } else { + len = len - 1; + while (i < len) swap(self, i, { i = i + 1; i }); + pop_back(self) + } } spec remove { pragma intrinsic = true; @@ -266,6 +343,21 @@ module std::vector { pragma intrinsic = true; } + /// Replace the `i`th element of the vector `self` with the given value, and return + /// to the caller the value that was there before. + /// Aborts if `i` is out of bounds. + public fun replace(self: &mut vector, i: u64, val: Element): Element { + let last_idx = length(self); + assert!(i < last_idx, EINDEX_OUT_OF_BOUNDS); + if (USE_MOVE_RANGE) { + mem::replace(borrow_mut(self, i), val) + } else { + push_back(self, val); + swap(self, i, last_idx); + pop_back(self) + } + } + /// Apply the function to each element in the vector, consuming it. public inline fun for_each(self: vector, f: |Element|) { reverse(&mut self); // We need to reverse the vector to consume it efficiently diff --git a/aptos-move/framework/move-stdlib/src/natives/bcs.rs b/aptos-move/framework/move-stdlib/src/natives/bcs.rs index 283e890c1cdf7..fdb9c5807b90f 100644 --- a/aptos-move/framework/move-stdlib/src/natives/bcs.rs +++ b/aptos-move/framework/move-stdlib/src/natives/bcs.rs @@ -11,18 +11,26 @@ use aptos_native_interface::{ SafeNativeResult, }; use move_core_types::{ - gas_algebra::NumBytes, vm_status::sub_status::NFE_BCS_SERIALIZATION_FAILURE, + gas_algebra::{NumBytes, NumTypeNodes}, + vm_status::sub_status::NFE_BCS_SERIALIZATION_FAILURE, }; use move_vm_runtime::native_functions::NativeFunction; use move_vm_types::{ loaded_data::runtime_types::Type, natives::function::PartialVMResult, - value_serde::serialized_size_allowing_delayed_values, - values::{values_impl::Reference, Value}, + value_serde::{ + constant_serialized_size, serialized_size_allowing_delayed_values, + type_visit_count_for_constant_serialized_size, + }, + values::{values_impl::Reference, Struct, Value}, }; use smallvec::{smallvec, SmallVec}; use std::collections::VecDeque; +pub fn create_option_u64(value: Option) -> Value { + Value::struct_(Struct::pack(vec![Value::vector_u64(value)])) +} + /*************************************************************************************************** * native fun to_bytes * @@ -126,6 +134,38 @@ fn serialized_size_impl( serialized_size_allowing_delayed_values(&value, &ty_layout) } +fn native_constant_serialized_size( + context: &mut SafeNativeContext, + mut ty_args: Vec, + _args: VecDeque, +) -> SafeNativeResult> { + debug_assert!(ty_args.len() == 1); + + context.charge(BCS_CONSTANT_SERIALIZED_SIZE_BASE)?; + + let ty = ty_args.pop().unwrap(); + let ty_layout = context.type_to_type_layout(&ty)?; + + context.charge( + BCS_CONSTANT_SERIALIZED_SIZE_PER_TYPE_NODE + * NumTypeNodes::new(type_visit_count_for_constant_serialized_size(&ty_layout)), + )?; + + let result = match constant_serialized_size(&ty_layout) { + Ok(value) => create_option_u64(value.map(|v| v as u64)), + Err(_) => { + context.charge(BCS_SERIALIZED_SIZE_FAILURE)?; + + // Re-use the same abort code as bcs::to_bytes. + return Err(SafeNativeError::Abort { + abort_code: NFE_BCS_SERIALIZATION_FAILURE, + }); + }, + }; + + Ok(smallvec![result]) +} + /*************************************************************************************************** * module **************************************************************************************************/ @@ -135,6 +175,7 @@ pub fn make_all( let funcs = [ ("to_bytes", native_to_bytes as RawSafeNative), ("serialized_size", native_serialized_size), + ("constant_serialized_size", native_constant_serialized_size), ]; builder.make_named_natives(funcs) diff --git a/aptos-move/framework/move-stdlib/src/natives/cmp.rs b/aptos-move/framework/move-stdlib/src/natives/cmp.rs new file mode 100644 index 0000000000000..d867e8a5dc0e4 --- /dev/null +++ b/aptos-move/framework/move-stdlib/src/natives/cmp.rs @@ -0,0 +1,75 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +// Copyright (c) The Diem Core Contributors +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +//! Implementation of native functions for value comparison. + +use aptos_gas_schedule::gas_params::natives::move_stdlib::{ + CMP_COMPARE_BASE, CMP_COMPARE_PER_ABS_VAL_UNIT, +}; +use aptos_native_interface::{ + RawSafeNative, SafeNativeBuilder, SafeNativeContext, SafeNativeError, SafeNativeResult, +}; +use move_core_types::vm_status::StatusCode; +use move_vm_runtime::native_functions::NativeFunction; +use move_vm_types::{ + loaded_data::runtime_types::Type, + natives::function::PartialVMError, + values::{Struct, Value}, +}; +use smallvec::{smallvec, SmallVec}; +use std::collections::VecDeque; + +const ORDERING_LESS_THAN_VARIANT: u16 = 0; +const ORDERING_EQUAL_VARIANT: u16 = 1; +const ORDERING_GREATER_THAN_VARIANT: u16 = 2; + +/*************************************************************************************************** + * native fun native_compare + * + * gas cost: CMP_COMPARE_BASE + CMP_COMPARE_PER_ABS_VAL_UNIT * dereferenced_size_of_both_values + * + **************************************************************************************************/ +fn native_compare( + context: &mut SafeNativeContext, + _ty_args: Vec, + args: VecDeque, +) -> SafeNativeResult> { + debug_assert!(args.len() == 2); + if args.len() != 2 { + return Err(SafeNativeError::InvariantViolation(PartialVMError::new( + StatusCode::UNKNOWN_INVARIANT_VIOLATION_ERROR, + ))); + } + + let cost = CMP_COMPARE_BASE + + CMP_COMPARE_PER_ABS_VAL_UNIT + * (context.abs_val_size_dereferenced(&args[0]) + + context.abs_val_size_dereferenced(&args[1])); + context.charge(cost)?; + + let ordering = args[0].compare(&args[1])?; + let ordering_move_variant = match ordering { + std::cmp::Ordering::Less => ORDERING_LESS_THAN_VARIANT, + std::cmp::Ordering::Equal => ORDERING_EQUAL_VARIANT, + std::cmp::Ordering::Greater => ORDERING_GREATER_THAN_VARIANT, + }; + + Ok(smallvec![Value::struct_(Struct::pack(vec![Value::u16( + ordering_move_variant + )]))]) +} + +/*************************************************************************************************** + * module + **************************************************************************************************/ +pub fn make_all( + builder: &SafeNativeBuilder, +) -> impl Iterator + '_ { + let natives = [("compare", native_compare as RawSafeNative)]; + + builder.make_named_natives(natives) +} diff --git a/aptos-move/framework/move-stdlib/src/natives/mem.rs b/aptos-move/framework/move-stdlib/src/natives/mem.rs new file mode 100644 index 0000000000000..578d4dc02d685 --- /dev/null +++ b/aptos-move/framework/move-stdlib/src/natives/mem.rs @@ -0,0 +1,64 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +//! Implementation of native functions for memory manipulation. + +use aptos_gas_schedule::gas_params::natives::move_stdlib::MEM_SWAP_BASE; +use aptos_native_interface::{ + safely_pop_arg, RawSafeNative, SafeNativeBuilder, SafeNativeContext, SafeNativeError, + SafeNativeResult, +}; +use aptos_types::error; +use move_vm_runtime::native_functions::NativeFunction; +use move_vm_types::{ + loaded_data::runtime_types::Type, + values::{Reference, Value}, +}; +use smallvec::{smallvec, SmallVec}; +use std::collections::VecDeque; + +/// The feature is not enabled. +pub const EFEATURE_NOT_ENABLED: u64 = 1; + +/*************************************************************************************************** + * native fun native_swap + * + * gas cost: MEM_SWAP_BASE + * + **************************************************************************************************/ +fn native_swap( + context: &mut SafeNativeContext, + _ty_args: Vec, + mut args: VecDeque, +) -> SafeNativeResult> { + if !context + .get_feature_flags() + .is_native_memory_operations_enabled() + { + return Err(SafeNativeError::Abort { + abort_code: error::unavailable(EFEATURE_NOT_ENABLED), + }); + } + + debug_assert!(args.len() == 2); + + context.charge(MEM_SWAP_BASE)?; + + let left = safely_pop_arg!(args, Reference); + let right = safely_pop_arg!(args, Reference); + + left.swap_values(right)?; + + Ok(smallvec![]) +} + +/*************************************************************************************************** + * module + **************************************************************************************************/ +pub fn make_all( + builder: &SafeNativeBuilder, +) -> impl Iterator + '_ { + let natives = [("swap", native_swap as RawSafeNative)]; + + builder.make_named_natives(natives) +} diff --git a/aptos-move/framework/move-stdlib/src/natives/mod.rs b/aptos-move/framework/move-stdlib/src/natives/mod.rs index 56b37bd332960..1ea4a32ebc93d 100644 --- a/aptos-move/framework/move-stdlib/src/natives/mod.rs +++ b/aptos-move/framework/move-stdlib/src/natives/mod.rs @@ -6,11 +6,14 @@ // SPDX-License-Identifier: Apache-2.0 pub mod bcs; +pub mod cmp; pub mod hash; +pub mod mem; pub mod signer; pub mod string; #[cfg(feature = "testing")] pub mod unit_test; +pub mod vector; use aptos_native_interface::SafeNativeBuilder; use move_core_types::account_address::AccountAddress; @@ -32,9 +35,12 @@ pub fn all_natives( builder.with_incremental_gas_charging(false, |builder| { add_natives!("bcs", bcs::make_all(builder)); + add_natives!("cmp", cmp::make_all(builder)); add_natives!("hash", hash::make_all(builder)); + add_natives!("mem", mem::make_all(builder)); add_natives!("signer", signer::make_all(builder)); add_natives!("string", string::make_all(builder)); + add_natives!("vector", vector::make_all(builder)); #[cfg(feature = "testing")] { add_natives!("unit_test", unit_test::make_all(builder)); diff --git a/aptos-move/framework/move-stdlib/src/natives/vector.rs b/aptos-move/framework/move-stdlib/src/natives/vector.rs new file mode 100644 index 0000000000000..ab57a87b86262 --- /dev/null +++ b/aptos-move/framework/move-stdlib/src/natives/vector.rs @@ -0,0 +1,112 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +// Copyright (c) The Diem Core Contributors +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +//! Implementation of native functions (non-bytecode instructions) for vector. + +use super::mem::get_feature_not_available_error; +use aptos_gas_schedule::gas_params::natives::move_stdlib::{ + VECTOR_MOVE_RANGE_BASE, VECTOR_MOVE_RANGE_PER_INDEX_MOVED, +}; +use aptos_native_interface::{ + safely_pop_arg, RawSafeNative, SafeNativeBuilder, SafeNativeContext, SafeNativeError, + SafeNativeResult, +}; +use aptos_types::error; +use move_core_types::gas_algebra::NumArgs; +use move_vm_runtime::native_functions::NativeFunction; +use move_vm_types::{ + loaded_data::runtime_types::Type, + values::{Value, VectorRef}, +}; +use smallvec::{smallvec, SmallVec}; +use std::collections::VecDeque; + +/// Given input positions/lengths are outside of vector boundaries. +pub const EINDEX_OUT_OF_BOUNDS: u64 = 1; + +/*************************************************************************************************** + * native fun move_range(from: &mut vector, removal_position: u64, length: u64, to: &mut vector, insert_position: u64) + * + * gas cost: VECTOR_MOVE_RANGE_BASE + VECTOR_MOVE_RANGE_PER_INDEX_MOVED * num_elements_to_move + * + **************************************************************************************************/ +fn native_move_range( + context: &mut SafeNativeContext, + ty_args: Vec, + mut args: VecDeque, +) -> SafeNativeResult> { + if !context + .get_feature_flags() + .is_native_memory_operations_enabled() + { + return Err(get_feature_not_available_error()); + } + + context.charge(VECTOR_MOVE_RANGE_BASE)?; + + let map_err = |_| SafeNativeError::Abort { + abort_code: error::invalid_argument(EINDEX_OUT_OF_BOUNDS), + }; + let insert_position = usize::try_from(safely_pop_arg!(args, u64)).map_err(map_err)?; + let to = safely_pop_arg!(args, VectorRef); + let length = usize::try_from(safely_pop_arg!(args, u64)).map_err(map_err)?; + let removal_position = usize::try_from(safely_pop_arg!(args, u64)).map_err(map_err)?; + let from = safely_pop_arg!(args, VectorRef); + + // We need to charge before executing, so fetching and checking sizes here. + // We repeat fetching and checking of the sizes inside VectorRef::move_range call as well. + // Not sure if possible to combine (as we are never doing charging there). + let to_len = to.length_as_usize(&ty_args[0])?; + let from_len = from.length_as_usize(&ty_args[0])?; + + if removal_position + .checked_add(length) + .map_or(true, |end| end > from_len) + || insert_position > to_len + { + return Err(SafeNativeError::Abort { + abort_code: EINDEX_OUT_OF_BOUNDS, + }); + } + + // We are moving all elements in the range, all elements after range, and all elements after insertion point. + // We are counting "length" of moving block twice, as it both gets moved out and moved in. + // From calibration testing, this seems to be a reasonable approximation of the cost of the operation. + context.charge( + VECTOR_MOVE_RANGE_PER_INDEX_MOVED + * NumArgs::new( + (from_len - removal_position) + .checked_add(to_len - insert_position) + .and_then(|v| v.checked_add(length)) + .ok_or_else(|| SafeNativeError::Abort { + abort_code: EINDEX_OUT_OF_BOUNDS, + })? as u64, + ), + )?; + + VectorRef::move_range( + &from, + removal_position, + length, + &to, + insert_position, + &ty_args[0], + )?; + + Ok(smallvec![]) +} + +/*************************************************************************************************** + * module + **************************************************************************************************/ +pub fn make_all( + builder: &SafeNativeBuilder, +) -> impl Iterator + '_ { + let natives = [("move_range", native_move_range as RawSafeNative)]; + + builder.make_named_natives(natives) +} diff --git a/aptos-move/framework/move-stdlib/tests/bcs_tests.move b/aptos-move/framework/move-stdlib/tests/bcs_tests.move index 367f504044694..7fb6b0b57b0a9 100644 --- a/aptos-move/framework/move-stdlib/tests/bcs_tests.move +++ b/aptos-move/framework/move-stdlib/tests/bcs_tests.move @@ -2,6 +2,8 @@ module std::bcs_tests { use std::bcs; use std::vector; + use std::option; + use std::signer; struct Box has copy, drop, store { x: T } struct Box3 has copy, drop, store { x: Box> } @@ -20,6 +22,8 @@ module std::bcs_tests { let expected_size = vector::length(&actual_bytes); let actual_size = bcs::serialized_size(&true); assert!(actual_size == expected_size, 1); + + assert!(option::some(actual_size) == bcs::constant_serialized_size(), 2); } #[test] @@ -31,6 +35,8 @@ module std::bcs_tests { let expected_size = vector::length(&actual_bytes); let actual_size = bcs::serialized_size(&1u8); assert!(actual_size == expected_size, 1); + + assert!(option::some(actual_size) == bcs::constant_serialized_size(), 2); } #[test] @@ -42,6 +48,8 @@ module std::bcs_tests { let expected_size = vector::length(&actual_bytes); let actual_size = bcs::serialized_size(&1); assert!(actual_size == expected_size, 1); + + assert!(option::some(actual_size) == bcs::constant_serialized_size(), 2); } #[test] @@ -53,6 +61,8 @@ module std::bcs_tests { let expected_size = vector::length(&actual_bytes); let actual_size = bcs::serialized_size(&1u128); assert!(actual_size == expected_size, 1); + + assert!(option::some(actual_size) == bcs::constant_serialized_size(), 2); } #[test] @@ -66,6 +76,23 @@ module std::bcs_tests { let expected_size = vector::length(&actual_bytes); let actual_size = bcs::serialized_size(&v); assert!(actual_size == expected_size, 1); + + assert!(option::none() == bcs::constant_serialized_size>(), 2); + } + + #[test(creator = @0xcafe)] + fun bcs_address(creator: &signer) { + let v = signer::address_of(creator); + + let expected_bytes = x"000000000000000000000000000000000000000000000000000000000000CAFE"; + let actual_bytes = bcs::to_bytes(&v); + assert!(actual_bytes == expected_bytes, 0); + + let expected_size = vector::length(&actual_bytes); + let actual_size = bcs::serialized_size(&v); + assert!(actual_size == expected_size, 1); + + assert!(option::some(actual_size) == bcs::constant_serialized_size
(), 2); } fun box3(x: T): Box3 { @@ -101,5 +128,18 @@ module std::bcs_tests { let actual_size = bcs::serialized_size(&box); assert!(actual_size == expected_size, 0); + + assert!(option::some(actual_size) == bcs::constant_serialized_size>(), 1); + assert!(option::none() == bcs::constant_serialized_size>>(), 2); + assert!(option::none() == bcs::constant_serialized_size>>(), 3); } + + // enum Singleton { + // V1(u64), + // } + + // fun encode_enum() { + // assert!(option::none() == bcs::constant_serialized_size()); + // assert!(option::none() == bcs::constant_serialized_size>()); + // } } diff --git a/aptos-move/framework/move-stdlib/tests/mem_tests.move b/aptos-move/framework/move-stdlib/tests/mem_tests.move new file mode 100644 index 0000000000000..89d00b4430348 --- /dev/null +++ b/aptos-move/framework/move-stdlib/tests/mem_tests.move @@ -0,0 +1,97 @@ +#[test_only] +module std::mem_tests { + use std::vector; + use std::mem::{swap, replace}; + + #[test] + fun test_swap_ints() { + let a = 1; + let b = 2; + let v = vector[3, 4, 5, 6]; + + swap(&mut a, &mut b); + assert!(a == 2, 0); + assert!(b == 1, 1); + + swap(&mut a, vector::borrow_mut(&mut v, 0)); + assert!(a == 3, 0); + assert!(vector::borrow(&v, 0) == &2, 1); + + swap(vector::borrow_mut(&mut v, 2), &mut a); + assert!(a == 5, 0); + assert!(vector::borrow(&v, 2) == &3, 1); + } + + #[test] + fun test_replace_ints() { + let a = 1; + let b = 2; + + assert!(replace(&mut a, b) == 1, 0); + assert!(a == 2, 1); + } + + #[test_only] + struct SomeStruct has drop, key { + f: u64, + v: vector, + } + + #[test] + fun test_swap_struct() { + let a = 1; + let v = vector[20, 21]; + let s1 = SomeStruct { f: 2, v: vector[3, 4]}; + let s2 = SomeStruct { f: 5, v: vector[6, 7]}; + let vs = vector[SomeStruct { f: 8, v: vector[9, 10]}, SomeStruct { f: 11, v: vector[12, 13]}]; + + swap(&mut s1, &mut s2); + assert!(&s1 == &SomeStruct { f: 5, v: vector[6, 7]}, 0); + assert!(&s2 == &SomeStruct { f: 2, v: vector[3, 4]}, 1); + + swap(&mut s1.f, &mut a); + assert!(s1.f == 1, 2); + assert!(a == 5, 3); + + swap(&mut s1.f, vector::borrow_mut(&mut s1.v, 0)); + assert!(s1.f == 6, 4); + assert!(vector::borrow(&s1.v, 0) == &1, 5); + + swap(&mut s2, vector::borrow_mut(&mut vs, 0)); + assert!(&s2 == &SomeStruct { f: 8, v: vector[9, 10]}, 6); + assert!(vector::borrow(&vs, 0) == &SomeStruct { f: 2, v: vector[3, 4]}, 7); + + swap(&mut s1.f, vector::borrow_mut(&mut v, 0)); + assert!(&s1.f == &20, 8); + assert!(vector::borrow(&v, 0) == &6, 9); + } + + #[test(creator = @0xcafe)] + fun test_swap_resource(creator: &signer) acquires SomeStruct { + use std::signer; + { + move_to(creator, SomeStruct { f: 5, v: vector[6, 7]}); + }; + + { + let value = borrow_global_mut(signer::address_of(creator)); + let s1 = SomeStruct { f: 2, v: vector[3, 4]}; + let vs = vector[SomeStruct { f: 8, v: vector[9, 10]}, SomeStruct { f: 11, v: vector[12, 13]}]; + + swap(&mut s1, value); + assert!(&s1 == &SomeStruct { f: 5, v: vector[6, 7]}, 0); + assert!(value == &SomeStruct { f: 2, v: vector[3, 4]}, 1); + + swap(value, vector::borrow_mut(&mut vs, 0)); + assert!(value == &SomeStruct { f: 8, v: vector[9, 10]}, 2); + assert!(vector::borrow(&vs, 0) == &SomeStruct { f: 2, v: vector[3, 4]}, 3); + + let v_ref = &mut value.v; + let other_v = vector[11,12]; + swap(v_ref, &mut other_v); + + assert!(v_ref == &vector[11, 12], 4); + assert!(&other_v == &vector[9, 10], 5); + } + } +} diff --git a/aptos-move/framework/move-stdlib/tests/vector_tests.move b/aptos-move/framework/move-stdlib/tests/vector_tests.move index b8c9e19a4dd84..da2bc17dee7c9 100644 --- a/aptos-move/framework/move-stdlib/tests/vector_tests.move +++ b/aptos-move/framework/move-stdlib/tests/vector_tests.move @@ -105,7 +105,18 @@ module std::vector_tests { let v = vector[1, 2]; assert!(&V::trim(&mut v, 0) == &vector[1, 2], 3); }; + { + let v = vector[1, 2, 3, 4, 5, 6]; + let other = V::trim(&mut v, 4); + assert!(v == vector[1, 2, 3, 4], 4); + assert!(other == vector[5, 6], 5); + + let other_empty = V::trim(&mut v, 4); + assert!(v == vector[1, 2, 3, 4], 6); + assert!(other_empty == vector[], 7); + }; } + #[test] #[expected_failure(abort_code = V::EINDEX_OUT_OF_BOUNDS)] fun test_trim_fail() { @@ -113,6 +124,13 @@ module std::vector_tests { V::trim(&mut v, 2); } + #[test] + #[expected_failure(abort_code = V::EINDEX_OUT_OF_BOUNDS)] + fun test_trim_fail_2() { + let v = vector[1, 2, 3]; + V::trim(&mut v, 4); + } + #[test] #[expected_failure(vector_error, minor_status = 1, location = Self)] fun borrow_out_of_range() { @@ -952,6 +970,31 @@ module std::vector_tests { #[test] fun test_destroy() { let v = vector[MoveOnly {}]; - vector::destroy(v, |m| { let MoveOnly {} = m; }) + V::destroy(v, |m| { let MoveOnly {} = m; }) + } + + #[test] + fun test_move_range_ints() { + let v = vector[3, 4, 5, 6]; + let w = vector[1, 2]; + + V::move_range(&mut v, 1, 2, &mut w, 1); + assert!(&v == &vector[3, 6], 0); + assert!(&w == &vector[1, 4, 5, 2], 0); + } + + #[test] + #[expected_failure(abort_code = V::EINDEX_OUT_OF_BOUNDS)] + fun test_replace_empty_abort() { + let v = vector[]; + let MoveOnly {} = V::replace(&mut v, 0, MoveOnly {}); + V::destroy_empty(v); + } + + #[test] + fun test_replace() { + let v = vector[1, 2, 3, 4]; + V::replace(&mut v, 1, 17); + assert!(v == vector[1, 17, 3, 4], 0); } } diff --git a/crates/transaction-generator-lib/src/args.rs b/crates/transaction-generator-lib/src/args.rs index b19bf2651e8b4..e29da0a80fc87 100644 --- a/crates/transaction-generator-lib/src/args.rs +++ b/crates/transaction-generator-lib/src/args.rs @@ -44,6 +44,8 @@ pub enum TransactionTypeArg { CreateObjects100, CreateObjects100WithPayload10k, CreateObjectsConflict100WithPayload10k, + VectorTrimAppendLen3000Size1, + VectorRemoveInsertLen3000Size1, ResourceGroupsGlobalWriteTag1KB, ResourceGroupsGlobalWriteAndReadTag1KB, ResourceGroupsSenderWriteTag1KB, @@ -216,6 +218,22 @@ impl TransactionTypeArg { object_payload_size: 10 * 1024, }) }, + TransactionTypeArg::VectorTrimAppendLen3000Size1 => { + call_custom_module(EntryPoints::VectorTrimAppend { + vec_len: 3000, + element_len: 1, + index: 100, + repeats: 1000, + }) + }, + TransactionTypeArg::VectorRemoveInsertLen3000Size1 => { + call_custom_module(EntryPoints::VectorRemoveInsert { + vec_len: 3000, + element_len: 1, + index: 100, + repeats: 1000, + }) + }, TransactionTypeArg::ResourceGroupsGlobalWriteTag1KB => { call_custom_module(EntryPoints::ResourceGroupsGlobalWriteTag { string_length: 1024, diff --git a/crates/transaction-generator-lib/src/publishing/module_simple.rs b/crates/transaction-generator-lib/src/publishing/module_simple.rs index 0bc7b959fb408..aef670d039003 100644 --- a/crates/transaction-generator-lib/src/publishing/module_simple.rs +++ b/crates/transaction-generator-lib/src/publishing/module_simple.rs @@ -227,6 +227,25 @@ pub enum EntryPoints { num_objects: u64, object_payload_size: u64, }, + VectorTrimAppend { + vec_len: u64, + element_len: u64, + index: u64, + repeats: u64, + }, + VectorRemoveInsert { + vec_len: u64, + element_len: u64, + index: u64, + repeats: u64, + }, + VectorRangeMove { + vec_len: u64, + element_len: u64, + index: u64, + move_len: u64, + repeats: u64, + }, /// Initialize Token V1 NFT collection TokenV1InitializeCollection, /// Mint an NFT token. Should be called only after InitializeCollection is called @@ -303,6 +322,9 @@ impl EntryPoints { | EntryPoints::ModifyGlobalBoundedAggV2 { .. } | EntryPoints::CreateObjects { .. } | EntryPoints::CreateObjectsConflict { .. } + | EntryPoints::VectorTrimAppend { .. } + | EntryPoints::VectorRemoveInsert { .. } + | EntryPoints::VectorRangeMove { .. } | EntryPoints::TokenV1InitializeCollection | EntryPoints::TokenV1MintAndStoreNFTParallel | EntryPoints::TokenV1MintAndStoreNFTSequential @@ -361,6 +383,9 @@ impl EntryPoints { EntryPoints::CreateObjects { .. } | EntryPoints::CreateObjectsConflict { .. } => { "objects" }, + EntryPoints::VectorTrimAppend { .. } + | EntryPoints::VectorRemoveInsert { .. } + | EntryPoints::VectorRangeMove { .. } => "vector_example", EntryPoints::TokenV1InitializeCollection | EntryPoints::TokenV1MintAndStoreNFTParallel | EntryPoints::TokenV1MintAndStoreNFTSequential @@ -543,6 +568,51 @@ impl EntryPoints { bcs::to_bytes(other.expect("Must provide other")).unwrap(), ], ), + EntryPoints::VectorTrimAppend { + vec_len, + element_len, + index, + repeats, + } + | EntryPoints::VectorRemoveInsert { + vec_len, + element_len, + index, + repeats, + } => get_payload( + module_id, + ident_str!( + if let EntryPoints::VectorTrimAppend { .. } = self { + "test_trim_append" + } else { + "test_remove_insert" + } + ) + .to_owned(), + vec![ + bcs::to_bytes(vec_len).unwrap(), + bcs::to_bytes(element_len).unwrap(), + bcs::to_bytes(index).unwrap(), + bcs::to_bytes(repeats).unwrap(), + ], + ), + EntryPoints::VectorRangeMove { + vec_len, + element_len, + index, + move_len, + repeats, + } => get_payload( + module_id, + ident_str!("test_middle_range_move").to_owned(), + vec![ + bcs::to_bytes(vec_len).unwrap(), + bcs::to_bytes(element_len).unwrap(), + bcs::to_bytes(index).unwrap(), + bcs::to_bytes(move_len).unwrap(), + bcs::to_bytes(repeats).unwrap(), + ], + ), EntryPoints::TokenV1InitializeCollection => get_payload_void( module_id, ident_str!("token_v1_initialize_collection").to_owned(), @@ -810,6 +880,9 @@ impl EntryPoints { EntryPoints::CreateObjects { .. } | EntryPoints::CreateObjectsConflict { .. } => { AutomaticArgs::Signer }, + EntryPoints::VectorTrimAppend { .. } + | EntryPoints::VectorRemoveInsert { .. } + | EntryPoints::VectorRangeMove { .. } => AutomaticArgs::None, EntryPoints::TokenV1InitializeCollection | EntryPoints::TokenV1MintAndStoreNFTParallel | EntryPoints::TokenV1MintAndStoreNFTSequential diff --git a/crates/transaction-generator-lib/src/publishing/raw_module_data.rs b/crates/transaction-generator-lib/src/publishing/raw_module_data.rs index 4deb1a72d1709..b85c2da43e6ca 100644 --- a/crates/transaction-generator-lib/src/publishing/raw_module_data.rs +++ b/crates/transaction-generator-lib/src/publishing/raw_module_data.rs @@ -15,14 +15,16 @@ use once_cell::sync::Lazy; use std::collections::HashMap; +<<<<<<< HEAD +======= #[rustfmt::skip] pub static PACKAGE_COMPLEX_METADATA: Lazy> = Lazy::new(|| { vec![ 7, 99, 111, 109, 112, 108, 101, 120, 1, 0, 0, 0, 0, 0, 0, 0, 0, 64, - 67, 48, 56, 54, 51, 53, 54, 52, 53, 50, 54, 68, 66, 70, 66, 68, 48, 52, - 49, 52, 56, 49, 51, 68, 48, 53, 66, 52, 55, 50, 51, 70, 51, 49, 67, 65, - 48, 67, 69, 57, 57, 56, 48, 68, 68, 68, 54, 54, 49, 70, 67, 51, 51, 49, - 48, 67, 67, 49, 66, 56, 57, 52, 55, 51, 156, 1, 31, 139, 8, 0, 0, 0, + 53, 51, 55, 56, 49, 65, 49, 50, 49, 55, 53, 56, 66, 55, 56, 70, 54, 56, + 54, 56, 53, 69, 54, 70, 68, 66, 51, 55, 67, 57, 70, 48, 48, 57, 49, 68, + 53, 57, 52, 52, 55, 50, 54, 57, 69, 57, 48, 51, 70, 48, 53, 65, 49, 65, + 66, 66, 51, 50, 66, 66, 67, 66, 70, 50, 156, 1, 31, 139, 8, 0, 0, 0, 0, 0, 2, 255, 77, 141, 77, 14, 194, 32, 16, 133, 247, 156, 130, 116, 195, 74, 138, 7, 112, 81, 53, 94, 162, 105, 12, 194, 168, 164, 192, 16, 70, 107, 19, 227, 221, 133, 164, 154, 38, 179, 152, 247, 229, 253, 244, 73, 155, 81, 223, 96, 96, 81, @@ -51,441 +53,443 @@ pub static PACKAGE_COMPLEX_METADATA: Lazy> = Lazy::new(|| { pub static MODULE_COMPLEX_LIQUIDITY_POOL: Lazy> = Lazy::new(|| { vec![ 161, 28, 235, 11, 7, 0, 0, 10, 13, 1, 0, 30, 2, 30, 82, 3, 112, 131, - 4, 4, 243, 4, 86, 5, 201, 5, 215, 6, 7, 160, 12, 232, 12, 8, 136, 25, - 64, 6, 200, 25, 56, 16, 128, 26, 180, 9, 10, 180, 35, 131, 1, 12, 183, 36, - 250, 23, 13, 177, 60, 38, 15, 215, 60, 2, 0, 0, 1, 4, 1, 8, 1, 16, - 1, 37, 1, 55, 1, 58, 1, 64, 1, 66, 1, 69, 1, 72, 1, 83, 1, 91, - 1, 95, 1, 97, 0, 1, 6, 0, 1, 3, 7, 1, 0, 1, 0, 5, 8, 0, - 2, 7, 11, 0, 0, 11, 8, 0, 3, 15, 4, 2, 0, 0, 0, 0, 0, 20, - 4, 0, 2, 22, 6, 0, 2, 24, 6, 0, 2, 26, 6, 0, 2, 28, 8, 0, - 0, 34, 8, 0, 4, 36, 4, 1, 0, 0, 0, 41, 6, 0, 2, 45, 0, 0, - 6, 60, 7, 0, 1, 68, 2, 0, 9, 71, 7, 1, 0, 0, 0, 44, 0, 1, - 0, 1, 2, 46, 3, 4, 0, 1, 2, 47, 3, 5, 0, 1, 0, 48, 6, 7, - 0, 1, 2, 49, 8, 1, 0, 1, 1, 50, 10, 11, 1, 8, 1, 2, 51, 13, - 5, 1, 8, 1, 2, 52, 13, 4, 1, 8, 1, 2, 53, 14, 2, 1, 8, 1, - 2, 54, 15, 1, 1, 8, 1, 5, 56, 17, 2, 1, 6, 1, 0, 57, 19, 20, - 0, 1, 6, 59, 21, 22, 0, 1, 2, 61, 13, 22, 1, 8, 1, 6, 62, 24, - 2, 0, 1, 6, 63, 25, 2, 0, 1, 7, 65, 27, 21, 1, 0, 1, 8, 62, - 28, 2, 1, 0, 1, 1, 67, 30, 31, 0, 1, 9, 70, 2, 33, 1, 0, 1, - 10, 73, 34, 2, 0, 1, 1, 74, 35, 36, 0, 1, 1, 75, 35, 13, 1, 8, - 1, 2, 76, 37, 38, 1, 8, 1, 1, 77, 39, 31, 0, 1, 0, 78, 35, 40, - 0, 1, 3, 79, 2, 42, 2, 7, 4, 1, 1, 80, 13, 44, 2, 8, 8, 1, - 4, 81, 45, 2, 1, 4, 1, 0, 82, 48, 2, 0, 1, 11, 84, 39, 11, 0, - 1, 0, 85, 49, 38, 1, 8, 1, 0, 86, 50, 2, 0, 1, 2, 87, 51, 2, - 1, 8, 1, 0, 88, 53, 2, 0, 1, 0, 0, 54, 20, 0, 1, 2, 89, 13, - 55, 1, 8, 1, 9, 90, 33, 17, 1, 0, 1, 12, 92, 32, 32, 0, 1, 2, - 93, 56, 2, 1, 8, 1, 2, 88, 57, 1, 0, 1, 2, 94, 58, 2, 1, 8, - 1, 13, 96, 7, 5, 0, 1, 14, 98, 5, 5, 0, 1, 0, 99, 54, 11, 0, - 1, 1, 100, 11, 13, 1, 8, 1, 0, 35, 2, 60, 0, 1, 4, 101, 61, 5, - 1, 0, 1, 4, 102, 62, 27, 1, 0, 1, 0, 103, 64, 65, 0, 1, 3, 104, - 66, 29, 2, 2, 0, 1, 3, 105, 67, 68, 2, 3, 0, 1, 2, 106, 13, 1, - 1, 8, 1, 0, 107, 50, 70, 0, 1, 3, 108, 71, 72, 2, 3, 0, 1, 0, - 10, 20, 29, 0, 1, 2, 109, 35, 74, 0, 1, 2, 110, 35, 75, 0, 1, 2, - 111, 35, 76, 0, 1, 10, 112, 49, 38, 1, 8, 1, 10, 113, 49, 38, 1, 8, - 1, 2, 114, 13, 29, 1, 8, 1, 2, 115, 77, 2, 1, 8, 1, 0, 116, 79, - 80, 0, 1, 0, 117, 39, 2, 0, 1, 4, 79, 2, 83, 1, 4, 1, 1, 118, - 85, 11, 0, 1, 0, 119, 54, 87, 0, 1, 0, 120, 13, 32, 1, 8, 1, 0, - 121, 2, 5, 0, 1, 0, 122, 13, 7, 1, 8, 1, 0, 123, 20, 89, 0, 1, - 0, 33, 20, 5, 0, 1, 0, 124, 2, 5, 0, 1, 10, 51, 49, 5, 1, 8, - 1, 3, 102, 66, 72, 2, 2, 0, 1, 3, 125, 90, 91, 2, 3, 2, 1, 3, - 126, 90, 2, 2, 3, 2, 1, 5, 9, 6, 12, 7, 12, 8, 12, 9, 12, 10, - 16, 13, 23, 5, 23, 16, 11, 17, 26, 16, 29, 19, 32, 22, 23, 23, 23, 26, - 41, 27, 43, 28, 20, 10, 46, 31, 9, 33, 12, 36, 9, 37, 32, 39, 9, 41, - 12, 45, 9, 47, 20, 48, 20, 50, 41, 51, 41, 52, 23, 54, 41, 59, 17, 60, - 17, 61, 12, 5, 17, 62, 12, 65, 20, 36, 17, 74, 9, 68, 9, 75, 41, 76, - 41, 77, 41, 3, 6, 12, 11, 1, 1, 8, 2, 8, 14, 1, 8, 14, 0, 1, - 6, 8, 14, 1, 11, 1, 1, 8, 3, 1, 3, 3, 11, 1, 1, 8, 2, 11, - 1, 1, 8, 3, 3, 2, 3, 3, 2, 7, 8, 14, 3, 1, 8, 2, 1, 6, - 11, 1, 1, 9, 0, 1, 5, 1, 8, 10, 1, 11, 1, 1, 9, 0, 2, 11, - 1, 1, 9, 0, 8, 14, 3, 6, 12, 11, 1, 1, 9, 0, 3, 1, 8, 13, - 1, 9, 0, 21, 11, 1, 1, 8, 3, 3, 3, 3, 8, 14, 6, 8, 2, 6, - 8, 2, 15, 15, 15, 7, 8, 4, 11, 1, 1, 8, 10, 11, 1, 1, 8, 10, - 4, 11, 1, 1, 8, 3, 11, 1, 1, 8, 3, 8, 14, 15, 15, 15, 8, 14, - 4, 6, 12, 11, 1, 1, 8, 3, 11, 1, 1, 8, 3, 1, 1, 11, 1, 1, - 8, 2, 1, 10, 2, 1, 8, 15, 1, 8, 3, 2, 7, 8, 15, 8, 15, 2, - 7, 8, 15, 10, 2, 1, 2, 1, 6, 9, 0, 2, 7, 10, 9, 0, 10, 9, - 0, 1, 1, 2, 6, 12, 10, 2, 1, 8, 16, 1, 4, 1, 11, 17, 1, 9, - 0, 7, 6, 8, 16, 11, 17, 1, 4, 8, 15, 8, 15, 2, 8, 15, 8, 15, - 1, 6, 8, 16, 1, 12, 2, 6, 8, 16, 11, 1, 1, 9, 0, 1, 11, 1, - 1, 8, 10, 1, 6, 12, 1, 8, 6, 2, 5, 4, 1, 11, 5, 2, 9, 0, - 9, 1, 2, 8, 3, 8, 2, 1, 11, 1, 1, 9, 1, 2, 7, 11, 12, 1, - 9, 0, 9, 0, 1, 8, 0, 39, 7, 8, 11, 11, 1, 1, 8, 3, 11, 1, - 1, 8, 3, 1, 11, 1, 1, 8, 3, 11, 1, 1, 8, 3, 8, 15, 8, 15, - 11, 1, 1, 8, 3, 11, 1, 1, 8, 3, 1, 10, 2, 5, 5, 10, 2, 8, - 16, 6, 8, 16, 6, 8, 16, 8, 15, 8, 15, 2, 8, 15, 11, 17, 1, 4, - 12, 6, 12, 6, 12, 8, 16, 11, 1, 1, 8, 10, 8, 16, 11, 1, 1, 8, - 10, 8, 16, 11, 1, 1, 8, 10, 8, 16, 11, 1, 1, 8, 10, 8, 6, 3, - 8, 2, 8, 4, 11, 1, 1, 8, 2, 4, 6, 12, 11, 1, 1, 8, 2, 5, - 3, 2, 5, 11, 1, 1, 9, 0, 2, 5, 11, 1, 1, 8, 2, 4, 6, 8, - 9, 11, 1, 1, 9, 0, 11, 1, 1, 9, 0, 3, 4, 3, 5, 11, 1, 1, - 8, 10, 11, 1, 1, 8, 10, 4, 6, 12, 8, 14, 8, 14, 1, 3, 11, 1, - 1, 8, 3, 11, 1, 1, 8, 3, 1, 1, 11, 17, 1, 4, 3, 6, 8, 8, - 11, 1, 1, 9, 0, 3, 2, 6, 8, 8, 3, 3, 6, 8, 9, 11, 1, 1, - 9, 0, 8, 14, 21, 11, 1, 1, 8, 2, 11, 1, 1, 8, 10, 3, 3, 3, - 6, 8, 2, 11, 1, 1, 8, 10, 11, 1, 1, 8, 10, 3, 4, 6, 8, 8, - 4, 3, 3, 8, 14, 3, 3, 3, 3, 3, 3, 1, 10, 11, 1, 1, 8, 2, - 1, 6, 11, 12, 1, 9, 0, 2, 6, 11, 12, 1, 9, 0, 3, 6, 6, 11, - 12, 1, 11, 1, 1, 8, 2, 10, 11, 1, 1, 8, 2, 3, 3, 3, 10, 11, - 1, 1, 8, 2, 3, 6, 12, 6, 12, 11, 1, 1, 8, 2, 2, 8, 14, 8, - 14, 2, 6, 11, 5, 2, 9, 0, 9, 1, 9, 0, 2, 7, 11, 5, 2, 9, - 0, 9, 1, 9, 0, 1, 9, 1, 12, 5, 6, 8, 2, 7, 8, 4, 4, 4, - 4, 3, 11, 1, 1, 8, 10, 8, 14, 8, 14, 8, 14, 8, 14, 2, 4, 4, - 3, 6, 11, 5, 2, 9, 0, 9, 1, 9, 0, 6, 9, 1, 1, 6, 9, 1, - 5, 6, 8, 4, 4, 6, 4, 6, 11, 5, 2, 5, 4, 4, 1, 8, 7, 1, - 8, 8, 1, 8, 9, 3, 6, 8, 9, 11, 1, 1, 9, 0, 1, 3, 11, 1, - 1, 8, 10, 1, 6, 8, 9, 3, 15, 15, 15, 1, 15, 18, 6, 8, 2, 15, - 15, 11, 1, 1, 8, 3, 15, 15, 3, 3, 3, 15, 6, 8, 2, 15, 15, 15, - 15, 15, 3, 3, 7, 3, 3, 15, 15, 15, 15, 15, 1, 11, 12, 1, 9, 0, - 1, 8, 11, 2, 6, 5, 10, 2, 8, 5, 11, 1, 1, 8, 3, 11, 1, 1, - 8, 3, 1, 10, 2, 5, 5, 10, 2, 2, 1, 5, 1, 6, 8, 2, 1, 10, - 11, 1, 1, 8, 3, 3, 7, 11, 5, 2, 9, 0, 9, 1, 9, 0, 9, 1, - 1, 7, 9, 1, 17, 7, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 7, 11, 5, 2, 5, 4, 7, 4, 14, 108, 105, 113, 117, 105, - 100, 105, 116, 121, 95, 112, 111, 111, 108, 10, 67, 114, 101, 97, 116, 101, 80, 111, - 111, 108, 4, 112, 111, 111, 108, 6, 79, 98, 106, 101, 99, 116, 6, 111, 98, 106, - 101, 99, 116, 13, 76, 105, 113, 117, 105, 100, 105, 116, 121, 80, 111, 111, 108, 7, - 116, 111, 107, 101, 110, 95, 49, 8, 77, 101, 116, 97, 100, 97, 116, 97, 14, 102, - 117, 110, 103, 105, 98, 108, 101, 95, 97, 115, 115, 101, 116, 7, 116, 111, 107, 101, - 110, 95, 50, 9, 105, 115, 95, 115, 116, 97, 98, 108, 101, 14, 70, 101, 101, 115, - 65, 99, 99, 111, 117, 110, 116, 105, 110, 103, 12, 116, 111, 116, 97, 108, 95, 102, - 101, 101, 115, 95, 49, 12, 116, 111, 116, 97, 108, 95, 102, 101, 101, 115, 95, 50, - 26, 116, 111, 116, 97, 108, 95, 102, 101, 101, 115, 95, 97, 116, 95, 108, 97, 115, - 116, 95, 99, 108, 97, 105, 109, 95, 49, 10, 83, 109, 97, 114, 116, 84, 97, 98, - 108, 101, 11, 115, 109, 97, 114, 116, 95, 116, 97, 98, 108, 101, 26, 116, 111, 116, + 4, 4, 243, 4, 86, 5, 201, 5, 226, 6, 7, 171, 12, 232, 12, 8, 147, 25, + 64, 6, 211, 25, 169, 1, 16, 252, 26, 149, 9, 10, 145, 36, 131, 1, 12, 148, + 37, 199, 23, 13, 219, 60, 38, 15, 129, 61, 2, 0, 1, 1, 2, 1, 3, 1, + 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12, 1, + 13, 1, 14, 1, 15, 0, 16, 6, 0, 0, 17, 8, 0, 0, 18, 4, 0, 0, + 19, 8, 0, 0, 20, 8, 0, 0, 21, 6, 0, 7, 22, 7, 1, 0, 1, 4, + 24, 0, 0, 4, 27, 11, 0, 7, 29, 2, 0, 4, 31, 8, 0, 11, 55, 4, + 2, 0, 0, 0, 0, 4, 60, 6, 0, 4, 62, 6, 0, 4, 64, 6, 0, 12, + 70, 4, 1, 0, 0, 13, 86, 7, 0, 8, 93, 7, 1, 0, 0, 0, 23, 0, + 1, 0, 1, 0, 25, 2, 3, 0, 1, 0, 26, 4, 5, 0, 1, 0, 28, 6, + 7, 0, 1, 0, 30, 8, 9, 0, 1, 0, 32, 10, 11, 1, 8, 1, 0, 33, + 12, 13, 0, 1, 0, 34, 14, 15, 0, 1, 0, 35, 16, 0, 0, 1, 0, 36, + 7, 17, 0, 1, 0, 1, 18, 7, 0, 1, 0, 37, 18, 19, 0, 1, 0, 38, + 18, 20, 0, 1, 0, 39, 21, 22, 1, 8, 1, 0, 40, 0, 23, 0, 1, 0, + 41, 24, 0, 0, 1, 0, 42, 21, 13, 1, 8, 1, 0, 43, 7, 25, 0, 1, + 0, 44, 26, 27, 0, 1, 0, 45, 7, 23, 0, 1, 0, 46, 0, 23, 0, 1, + 0, 47, 28, 0, 0, 1, 0, 48, 4, 0, 0, 1, 12, 76, 30, 23, 1, 0, + 1, 12, 77, 31, 32, 1, 0, 1, 10, 78, 16, 19, 0, 1, 7, 79, 35, 19, + 1, 8, 1, 11, 80, 37, 17, 2, 2, 0, 1, 11, 81, 38, 39, 2, 3, 0, + 1, 4, 82, 41, 27, 1, 8, 1, 4, 83, 21, 42, 1, 8, 1, 4, 84, 21, + 27, 1, 8, 1, 11, 85, 45, 46, 2, 3, 0, 1, 13, 87, 48, 49, 0, 1, + 4, 88, 21, 49, 1, 8, 1, 13, 89, 50, 0, 0, 1, 13, 90, 51, 0, 0, + 1, 1, 91, 32, 48, 1, 0, 1, 14, 89, 53, 0, 1, 0, 1, 7, 92, 54, + 55, 0, 1, 8, 94, 0, 56, 1, 0, 1, 9, 95, 57, 0, 0, 1, 7, 96, + 8, 58, 0, 1, 7, 97, 8, 21, 1, 8, 1, 4, 98, 59, 11, 1, 8, 1, + 7, 99, 16, 55, 0, 1, 11, 100, 0, 60, 2, 7, 4, 1, 7, 101, 21, 62, + 2, 8, 8, 1, 12, 102, 63, 0, 1, 4, 1, 3, 103, 65, 0, 1, 6, 1, + 4, 104, 8, 66, 0, 1, 4, 105, 8, 67, 0, 1, 4, 106, 8, 68, 0, 1, + 9, 107, 10, 11, 1, 8, 1, 9, 108, 10, 11, 1, 8, 1, 4, 109, 21, 17, + 1, 8, 1, 4, 110, 69, 0, 1, 8, 1, 4, 111, 21, 23, 1, 8, 1, 2, + 112, 23, 23, 0, 1, 12, 100, 0, 72, 1, 4, 1, 7, 113, 19, 21, 1, 8, + 1, 7, 114, 74, 19, 0, 1, 4, 115, 21, 75, 1, 8, 1, 8, 116, 56, 65, + 1, 0, 1, 4, 117, 77, 42, 0, 1, 4, 118, 77, 23, 0, 1, 5, 119, 22, + 22, 0, 1, 4, 120, 78, 0, 1, 8, 1, 6, 121, 13, 23, 0, 1, 4, 122, + 79, 0, 1, 8, 1, 4, 41, 80, 27, 0, 1, 4, 123, 81, 0, 1, 8, 1, + 4, 124, 84, 27, 0, 1, 4, 125, 87, 0, 1, 8, 1, 9, 111, 10, 23, 1, + 8, 1, 11, 77, 37, 46, 2, 2, 0, 1, 11, 126, 89, 90, 2, 3, 2, 1, + 11, 127, 89, 0, 2, 3, 2, 1, 23, 7, 24, 7, 26, 34, 27, 36, 28, 36, + 29, 40, 30, 40, 31, 43, 32, 36, 34, 43, 26, 43, 37, 19, 38, 52, 37, 17, + 40, 22, 43, 43, 44, 43, 46, 36, 47, 61, 48, 7, 49, 64, 53, 65, 54, 65, + 55, 40, 26, 65, 56, 40, 57, 40, 59, 7, 60, 34, 62, 65, 63, 22, 5, 34, + 62, 34, 67, 34, 69, 40, 71, 40, 49, 85, 73, 40, 74, 34, 13, 34, 75, 36, + 76, 36, 77, 36, 0, 1, 10, 11, 6, 1, 8, 3, 3, 6, 12, 6, 12, 11, + 6, 1, 8, 3, 2, 8, 7, 8, 7, 2, 5, 11, 6, 1, 8, 3, 2, 4, + 4, 4, 6, 12, 11, 6, 1, 8, 8, 11, 6, 1, 8, 8, 1, 1, 11, 6, + 1, 8, 3, 1, 6, 8, 9, 1, 8, 2, 2, 5, 11, 6, 1, 9, 0, 1, + 11, 6, 1, 8, 10, 3, 11, 6, 1, 8, 3, 11, 6, 1, 8, 8, 3, 2, + 3, 3, 3, 15, 15, 15, 1, 15, 1, 6, 12, 1, 1, 3, 11, 6, 1, 8, + 8, 11, 6, 1, 8, 8, 1, 1, 5, 2, 1, 5, 1, 11, 6, 1, 9, 0, + 1, 4, 1, 3, 4, 6, 12, 8, 7, 8, 7, 1, 1, 10, 11, 6, 1, 8, + 8, 3, 6, 12, 11, 6, 1, 8, 3, 8, 7, 1, 8, 7, 4, 6, 12, 11, + 6, 1, 8, 3, 5, 3, 4, 6, 11, 15, 1, 11, 6, 1, 8, 3, 3, 3, + 10, 11, 6, 1, 8, 3, 1, 6, 11, 15, 1, 9, 0, 2, 6, 11, 15, 1, + 9, 0, 3, 1, 6, 9, 0, 11, 4, 4, 8, 7, 8, 7, 4, 4, 8, 7, + 8, 7, 7, 8, 1, 5, 6, 8, 3, 1, 8, 3, 1, 6, 11, 6, 1, 9, + 0, 2, 5, 4, 2, 6, 11, 11, 2, 9, 0, 9, 1, 9, 0, 2, 7, 11, + 11, 2, 9, 0, 9, 1, 9, 0, 1, 9, 1, 1, 8, 10, 3, 6, 12, 11, + 6, 1, 9, 0, 3, 1, 11, 6, 1, 8, 8, 1, 8, 8, 8, 4, 5, 6, + 11, 11, 2, 5, 4, 4, 5, 6, 11, 11, 2, 5, 4, 4, 6, 8, 1, 3, + 6, 11, 11, 2, 9, 0, 9, 1, 9, 0, 6, 9, 1, 1, 6, 9, 1, 40, + 5, 11, 6, 1, 8, 10, 8, 9, 11, 6, 1, 8, 10, 8, 9, 11, 6, 1, + 8, 10, 8, 9, 11, 6, 1, 8, 10, 6, 12, 7, 10, 2, 5, 7, 10, 2, + 8, 9, 12, 3, 8, 2, 8, 9, 7, 8, 4, 1, 1, 11, 6, 1, 8, 8, + 6, 8, 9, 11, 6, 1, 8, 3, 6, 8, 9, 6, 12, 6, 12, 10, 2, 10, + 2, 11, 6, 1, 8, 8, 11, 6, 1, 8, 8, 11, 6, 1, 8, 8, 11, 6, + 1, 8, 8, 11, 6, 1, 8, 8, 11, 6, 1, 8, 8, 11, 6, 1, 8, 8, + 11, 6, 1, 8, 8, 11, 6, 1, 8, 8, 11, 6, 1, 8, 8, 8, 16, 8, + 16, 1, 10, 2, 1, 8, 16, 2, 7, 8, 16, 8, 16, 2, 7, 8, 16, 10, + 2, 1, 2, 2, 7, 10, 9, 0, 10, 9, 0, 2, 6, 12, 10, 2, 1, 8, + 9, 1, 11, 17, 1, 9, 0, 7, 6, 8, 9, 11, 17, 1, 4, 8, 16, 8, + 16, 2, 8, 16, 8, 16, 1, 12, 2, 6, 8, 9, 11, 6, 1, 9, 0, 1, + 11, 11, 2, 9, 0, 9, 1, 2, 8, 8, 8, 3, 1, 11, 6, 1, 9, 1, + 2, 7, 11, 15, 1, 9, 0, 9, 0, 1, 8, 0, 1, 9, 0, 1, 8, 12, + 1, 8, 13, 1, 8, 14, 3, 6, 8, 14, 11, 6, 1, 9, 0, 1, 18, 15, + 15, 15, 15, 3, 15, 3, 3, 3, 15, 6, 8, 3, 6, 8, 3, 15, 15, 15, + 15, 15, 15, 11, 15, 15, 3, 15, 15, 15, 15, 15, 15, 15, 15, 1, 11, 15, + 1, 9, 0, 10, 5, 7, 10, 2, 5, 7, 10, 2, 5, 6, 5, 1, 10, 2, + 11, 6, 1, 8, 8, 11, 6, 1, 8, 8, 2, 6, 5, 10, 2, 1, 11, 17, + 1, 4, 26, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 11, 6, 1, 8, + 10, 4, 8, 7, 6, 8, 13, 11, 6, 1, 8, 3, 6, 8, 3, 3, 3, 11, + 6, 1, 8, 10, 11, 6, 1, 8, 10, 11, 6, 1, 8, 8, 3, 11, 6, 1, + 8, 8, 3, 3, 1, 6, 8, 7, 3, 6, 8, 13, 11, 6, 1, 9, 0, 3, + 2, 11, 6, 1, 9, 0, 8, 7, 2, 6, 8, 13, 3, 3, 6, 8, 14, 11, + 6, 1, 9, 0, 8, 7, 1, 6, 8, 3, 22, 15, 8, 7, 15, 3, 3, 8, + 7, 7, 8, 1, 3, 4, 11, 6, 1, 8, 8, 15, 15, 8, 7, 6, 8, 3, + 6, 8, 3, 6, 8, 3, 15, 15, 15, 15, 11, 6, 1, 8, 10, 11, 6, 1, + 8, 10, 2, 7, 8, 7, 3, 1, 8, 5, 3, 5, 11, 6, 1, 8, 10, 11, + 6, 1, 8, 10, 4, 6, 8, 14, 11, 6, 1, 9, 0, 11, 6, 1, 9, 0, + 3, 19, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 7, 8, 1, 4, + 4, 4, 4, 7, 4, 7, 4, 3, 7, 11, 11, 2, 9, 0, 9, 1, 9, 0, + 9, 1, 1, 7, 9, 1, 22, 108, 105, 113, 117, 105, 100, 105, 116, 121, 95, 112, + 111, 111, 108, 95, 119, 114, 97, 112, 112, 101, 114, 14, 108, 105, 113, 117, 105, 100, + 105, 116, 121, 95, 112, 111, 111, 108, 3, 98, 99, 115, 5, 101, 114, 114, 111, 114, + 5, 101, 118, 101, 110, 116, 14, 102, 117, 110, 103, 105, 98, 108, 101, 95, 97, 115, + 115, 101, 116, 7, 109, 97, 116, 104, 49, 50, 56, 6, 109, 97, 116, 104, 54, 52, + 6, 111, 98, 106, 101, 99, 116, 6, 111, 112, 116, 105, 111, 110, 22, 112, 114, 105, + 109, 97, 114, 121, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, 115, 116, 111, 114, + 101, 6, 115, 105, 103, 110, 101, 114, 11, 115, 109, 97, 114, 116, 95, 116, 97, 98, + 108, 101, 12, 115, 109, 97, 114, 116, 95, 118, 101, 99, 116, 111, 114, 6, 115, 116, + 114, 105, 110, 103, 6, 118, 101, 99, 116, 111, 114, 10, 67, 114, 101, 97, 116, 101, + 80, 111, 111, 108, 14, 70, 101, 101, 115, 65, 99, 99, 111, 117, 110, 116, 105, 110, + 103, 11, 76, 80, 84, 111, 107, 101, 110, 82, 101, 102, 115, 13, 76, 105, 113, 117, + 105, 100, 105, 116, 121, 80, 111, 111, 108, 20, 76, 105, 113, 117, 105, 100, 105, 116, + 121, 80, 111, 111, 108, 67, 111, 110, 102, 105, 103, 115, 4, 83, 119, 97, 112, 6, + 79, 98, 106, 101, 99, 116, 9, 97, 108, 108, 95, 112, 111, 111, 108, 115, 13, 70, + 117, 110, 103, 105, 98, 108, 101, 65, 115, 115, 101, 116, 10, 99, 108, 97, 105, 109, + 95, 102, 101, 101, 115, 14, 99, 108, 97, 105, 109, 97, 98, 108, 101, 95, 102, 101, + 101, 115, 8, 77, 101, 116, 97, 100, 97, 116, 97, 6, 99, 114, 101, 97, 116, 101, + 14, 67, 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, 82, 101, 102, 20, 99, 114, + 101, 97, 116, 101, 95, 108, 112, 95, 116, 111, 107, 101, 110, 95, 114, 101, 102, 115, + 13, 70, 117, 110, 103, 105, 98, 108, 101, 83, 116, 111, 114, 101, 21, 101, 110, 115, + 117, 114, 101, 95, 108, 112, 95, 116, 111, 107, 101, 110, 95, 115, 116, 111, 114, 101, + 14, 103, 101, 116, 95, 97, 109, 111, 117, 110, 116, 95, 111, 117, 116, 5, 103, 101, + 116, 95, 121, 11, 105, 110, 105, 116, 95, 109, 111, 100, 117, 108, 101, 9, 105, 115, + 95, 115, 116, 97, 98, 108, 101, 22, 108, 105, 113, 117, 105, 100, 105, 116, 121, 95, + 112, 111, 111, 108, 95, 97, 100, 100, 114, 101, 115, 115, 27, 108, 105, 113, 117, 105, + 100, 105, 116, 121, 95, 112, 111, 111, 108, 95, 97, 100, 100, 114, 101, 115, 115, 95, + 115, 97, 102, 101, 15, 108, 112, 95, 116, 111, 107, 101, 110, 95, 115, 117, 112, 112, + 108, 121, 13, 109, 105, 110, 95, 108, 105, 113, 117, 105, 100, 105, 116, 121, 4, 109, + 105, 110, 116, 13, 112, 111, 111, 108, 95, 114, 101, 115, 101, 114, 118, 101, 115, 22, + 115, 117, 112, 112, 111, 114, 116, 101, 100, 95, 105, 110, 110, 101, 114, 95, 97, 115, + 115, 101, 116, 115, 4, 115, 119, 97, 112, 12, 115, 119, 97, 112, 95, 102, 101, 101, + 95, 98, 112, 115, 21, 116, 111, 116, 97, 108, 95, 110, 117, 109, 98, 101, 114, 95, + 111, 102, 95, 112, 111, 111, 108, 115, 8, 116, 114, 97, 110, 115, 102, 101, 114, 21, + 117, 112, 100, 97, 116, 101, 95, 99, 108, 97, 105, 109, 97, 98, 108, 101, 95, 102, + 101, 101, 115, 4, 112, 111, 111, 108, 7, 116, 111, 107, 101, 110, 95, 49, 7, 116, + 111, 107, 101, 110, 95, 50, 12, 116, 111, 116, 97, 108, 95, 102, 101, 101, 115, 95, + 49, 12, 116, 111, 116, 97, 108, 95, 102, 101, 101, 115, 95, 50, 26, 116, 111, 116, 97, 108, 95, 102, 101, 101, 115, 95, 97, 116, 95, 108, 97, 115, 116, 95, 99, 108, - 97, 105, 109, 95, 50, 11, 99, 108, 97, 105, 109, 97, 98, 108, 101, 95, 49, 11, - 99, 108, 97, 105, 109, 97, 98, 108, 101, 95, 50, 11, 76, 80, 84, 111, 107, 101, - 110, 82, 101, 102, 115, 8, 98, 117, 114, 110, 95, 114, 101, 102, 7, 66, 117, 114, - 110, 82, 101, 102, 8, 109, 105, 110, 116, 95, 114, 101, 102, 7, 77, 105, 110, 116, - 82, 101, 102, 12, 116, 114, 97, 110, 115, 102, 101, 114, 95, 114, 101, 102, 11, 84, - 114, 97, 110, 115, 102, 101, 114, 82, 101, 102, 13, 116, 111, 107, 101, 110, 95, 115, - 116, 111, 114, 101, 95, 49, 13, 70, 117, 110, 103, 105, 98, 108, 101, 83, 116, 111, - 114, 101, 13, 116, 111, 107, 101, 110, 95, 115, 116, 111, 114, 101, 95, 50, 12, 102, - 101, 101, 115, 95, 115, 116, 111, 114, 101, 95, 49, 12, 102, 101, 101, 115, 95, 115, - 116, 111, 114, 101, 95, 50, 13, 108, 112, 95, 116, 111, 107, 101, 110, 95, 114, 101, - 102, 115, 12, 115, 119, 97, 112, 95, 102, 101, 101, 95, 98, 112, 115, 20, 76, 105, - 113, 117, 105, 100, 105, 116, 121, 80, 111, 111, 108, 67, 111, 110, 102, 105, 103, 115, - 9, 97, 108, 108, 95, 112, 111, 111, 108, 115, 11, 83, 109, 97, 114, 116, 86, 101, - 99, 116, 111, 114, 12, 115, 109, 97, 114, 116, 95, 118, 101, 99, 116, 111, 114, 9, - 105, 115, 95, 112, 97, 117, 115, 101, 100, 14, 115, 116, 97, 98, 108, 101, 95, 102, - 101, 101, 95, 98, 112, 115, 16, 118, 111, 108, 97, 116, 105, 108, 101, 95, 102, 101, - 101, 95, 98, 112, 115, 4, 83, 119, 97, 112, 10, 102, 114, 111, 109, 95, 116, 111, - 107, 101, 110, 9, 97, 109, 111, 117, 110, 116, 95, 105, 110, 4, 115, 119, 97, 112, - 13, 70, 117, 110, 103, 105, 98, 108, 101, 65, 115, 115, 101, 116, 19, 109, 101, 116, - 97, 100, 97, 116, 97, 95, 102, 114, 111, 109, 95, 97, 115, 115, 101, 116, 6, 97, - 109, 111, 117, 110, 116, 14, 103, 101, 116, 95, 97, 109, 111, 117, 110, 116, 95, 111, - 117, 116, 7, 101, 120, 116, 114, 97, 99, 116, 14, 111, 98, 106, 101, 99, 116, 95, - 97, 100, 100, 114, 101, 115, 115, 7, 98, 97, 108, 97, 110, 99, 101, 14, 115, 116, - 111, 114, 101, 95, 109, 101, 116, 97, 100, 97, 116, 97, 7, 100, 101, 112, 111, 115, - 105, 116, 8, 119, 105, 116, 104, 100, 114, 97, 119, 5, 101, 118, 101, 110, 116, 4, - 101, 109, 105, 116, 6, 99, 114, 101, 97, 116, 101, 6, 115, 116, 114, 105, 110, 103, - 4, 117, 116, 102, 56, 6, 83, 116, 114, 105, 110, 103, 6, 115, 121, 109, 98, 111, - 108, 6, 97, 112, 112, 101, 110, 100, 11, 97, 112, 112, 101, 110, 100, 95, 117, 116, - 102, 56, 3, 98, 99, 115, 8, 116, 111, 95, 98, 121, 116, 101, 115, 6, 118, 101, - 99, 116, 111, 114, 19, 99, 114, 101, 97, 116, 101, 95, 110, 97, 109, 101, 100, 95, - 111, 98, 106, 101, 99, 116, 14, 67, 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, - 82, 101, 102, 6, 111, 112, 116, 105, 111, 110, 4, 110, 111, 110, 101, 6, 79, 112, - 116, 105, 111, 110, 22, 112, 114, 105, 109, 97, 114, 121, 95, 102, 117, 110, 103, 105, - 98, 108, 101, 95, 115, 116, 111, 114, 101, 43, 99, 114, 101, 97, 116, 101, 95, 112, - 114, 105, 109, 97, 114, 121, 95, 115, 116, 111, 114, 101, 95, 101, 110, 97, 98, 108, - 101, 100, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, 97, 115, 115, 101, 116, 15, - 103, 101, 110, 101, 114, 97, 116, 101, 95, 115, 105, 103, 110, 101, 114, 27, 111, 98, - 106, 101, 99, 116, 95, 102, 114, 111, 109, 95, 99, 111, 110, 115, 116, 114, 117, 99, - 116, 111, 114, 95, 114, 101, 102, 12, 99, 114, 101, 97, 116, 101, 95, 115, 116, 111, - 114, 101, 25, 99, 114, 101, 97, 116, 101, 95, 111, 98, 106, 101, 99, 116, 95, 102, - 114, 111, 109, 95, 111, 98, 106, 101, 99, 116, 20, 99, 114, 101, 97, 116, 101, 95, - 108, 112, 95, 116, 111, 107, 101, 110, 95, 114, 101, 102, 115, 3, 110, 101, 119, 7, - 99, 111, 110, 118, 101, 114, 116, 9, 112, 117, 115, 104, 95, 98, 97, 99, 107, 8, - 116, 114, 97, 110, 115, 102, 101, 114, 6, 115, 105, 103, 110, 101, 114, 10, 97, 100, - 100, 114, 101, 115, 115, 95, 111, 102, 21, 101, 110, 115, 117, 114, 101, 95, 108, 112, - 95, 116, 111, 107, 101, 110, 95, 115, 116, 111, 114, 101, 21, 117, 112, 100, 97, 116, - 101, 95, 99, 108, 97, 105, 109, 97, 98, 108, 101, 95, 102, 101, 101, 115, 17, 116, - 114, 97, 110, 115, 102, 101, 114, 95, 119, 105, 116, 104, 95, 114, 101, 102, 4, 109, - 105, 110, 116, 6, 115, 117, 112, 112, 108, 121, 12, 100, 101, 115, 116, 114, 111, 121, - 95, 115, 111, 109, 101, 7, 109, 97, 116, 104, 49, 50, 56, 4, 115, 113, 114, 116, - 7, 109, 105, 110, 116, 95, 116, 111, 16, 100, 101, 112, 111, 115, 105, 116, 95, 119, - 105, 116, 104, 95, 114, 101, 102, 6, 109, 97, 116, 104, 54, 52, 3, 109, 105, 110, - 5, 101, 114, 114, 111, 114, 16, 105, 110, 118, 97, 108, 105, 100, 95, 97, 114, 103, - 117, 109, 101, 110, 116, 22, 108, 105, 113, 117, 105, 100, 105, 116, 121, 95, 112, 111, - 111, 108, 95, 97, 100, 100, 114, 101, 115, 115, 17, 97, 100, 100, 114, 101, 115, 115, - 95, 116, 111, 95, 111, 98, 106, 101, 99, 116, 6, 108, 101, 110, 103, 116, 104, 6, - 98, 111, 114, 114, 111, 119, 10, 99, 108, 97, 105, 109, 95, 102, 101, 101, 115, 8, - 99, 111, 110, 116, 97, 105, 110, 115, 6, 114, 101, 109, 111, 118, 101, 4, 122, 101, - 114, 111, 14, 99, 108, 97, 105, 109, 97, 98, 108, 101, 95, 102, 101, 101, 115, 19, - 98, 111, 114, 114, 111, 119, 95, 119, 105, 116, 104, 95, 100, 101, 102, 97, 117, 108, - 116, 17, 103, 101, 110, 101, 114, 97, 116, 101, 95, 98, 117, 114, 110, 95, 114, 101, - 102, 17, 103, 101, 110, 101, 114, 97, 116, 101, 95, 109, 105, 110, 116, 95, 114, 101, - 102, 21, 103, 101, 110, 101, 114, 97, 116, 101, 95, 116, 114, 97, 110, 115, 102, 101, - 114, 95, 114, 101, 102, 27, 101, 110, 115, 117, 114, 101, 95, 112, 114, 105, 109, 97, - 114, 121, 95, 115, 116, 111, 114, 101, 95, 101, 120, 105, 115, 116, 115, 13, 112, 114, - 105, 109, 97, 114, 121, 95, 115, 116, 111, 114, 101, 9, 105, 115, 95, 102, 114, 111, - 122, 101, 110, 15, 115, 101, 116, 95, 102, 114, 111, 122, 101, 110, 95, 102, 108, 97, - 103, 5, 103, 101, 116, 95, 121, 11, 105, 110, 105, 116, 95, 109, 111, 100, 117, 108, - 101, 21, 99, 114, 101, 97, 116, 101, 95, 111, 98, 106, 101, 99, 116, 95, 97, 100, - 100, 114, 101, 115, 115, 27, 108, 105, 113, 117, 105, 100, 105, 116, 121, 95, 112, 111, - 111, 108, 95, 97, 100, 100, 114, 101, 115, 115, 95, 115, 97, 102, 101, 15, 108, 112, - 95, 116, 111, 107, 101, 110, 95, 115, 117, 112, 112, 108, 121, 13, 109, 105, 110, 95, - 108, 105, 113, 117, 105, 100, 105, 116, 121, 13, 112, 111, 111, 108, 95, 114, 101, 115, - 101, 114, 118, 101, 115, 22, 115, 117, 112, 112, 111, 114, 116, 101, 100, 95, 105, 110, - 110, 101, 114, 95, 97, 115, 115, 101, 116, 115, 21, 116, 111, 116, 97, 108, 95, 110, - 117, 109, 98, 101, 114, 95, 111, 102, 95, 112, 111, 111, 108, 115, 23, 98, 111, 114, - 114, 111, 119, 95, 109, 117, 116, 95, 119, 105, 116, 104, 95, 100, 101, 102, 97, 117, - 108, 116, 6, 117, 112, 115, 101, 114, 116, 22, 108, 105, 113, 117, 105, 100, 105, 116, - 121, 95, 112, 111, 111, 108, 95, 119, 114, 97, 112, 112, 101, 114, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, + 97, 105, 109, 95, 49, 10, 83, 109, 97, 114, 116, 84, 97, 98, 108, 101, 26, 116, + 111, 116, 97, 108, 95, 102, 101, 101, 115, 95, 97, 116, 95, 108, 97, 115, 116, 95, + 99, 108, 97, 105, 109, 95, 50, 11, 99, 108, 97, 105, 109, 97, 98, 108, 101, 95, + 49, 11, 99, 108, 97, 105, 109, 97, 98, 108, 101, 95, 50, 8, 98, 117, 114, 110, + 95, 114, 101, 102, 7, 66, 117, 114, 110, 82, 101, 102, 8, 109, 105, 110, 116, 95, + 114, 101, 102, 7, 77, 105, 110, 116, 82, 101, 102, 12, 116, 114, 97, 110, 115, 102, + 101, 114, 95, 114, 101, 102, 11, 84, 114, 97, 110, 115, 102, 101, 114, 82, 101, 102, + 13, 116, 111, 107, 101, 110, 95, 115, 116, 111, 114, 101, 95, 49, 13, 116, 111, 107, + 101, 110, 95, 115, 116, 111, 114, 101, 95, 50, 12, 102, 101, 101, 115, 95, 115, 116, + 111, 114, 101, 95, 49, 12, 102, 101, 101, 115, 95, 115, 116, 111, 114, 101, 95, 50, + 13, 108, 112, 95, 116, 111, 107, 101, 110, 95, 114, 101, 102, 115, 11, 83, 109, 97, + 114, 116, 86, 101, 99, 116, 111, 114, 9, 105, 115, 95, 112, 97, 117, 115, 101, 100, + 14, 115, 116, 97, 98, 108, 101, 95, 102, 101, 101, 95, 98, 112, 115, 16, 118, 111, + 108, 97, 116, 105, 108, 101, 95, 102, 101, 101, 95, 98, 112, 115, 10, 102, 114, 111, + 109, 95, 116, 111, 107, 101, 110, 9, 97, 109, 111, 117, 110, 116, 95, 105, 110, 6, + 108, 101, 110, 103, 116, 104, 6, 98, 111, 114, 114, 111, 119, 10, 97, 100, 100, 114, + 101, 115, 115, 95, 111, 102, 14, 111, 98, 106, 101, 99, 116, 95, 97, 100, 100, 114, + 101, 115, 115, 8, 99, 111, 110, 116, 97, 105, 110, 115, 6, 114, 101, 109, 111, 118, + 101, 8, 119, 105, 116, 104, 100, 114, 97, 119, 14, 115, 116, 111, 114, 101, 95, 109, + 101, 116, 97, 100, 97, 116, 97, 4, 122, 101, 114, 111, 19, 98, 111, 114, 114, 111, + 119, 95, 119, 105, 116, 104, 95, 100, 101, 102, 97, 117, 108, 116, 6, 83, 116, 114, + 105, 110, 103, 4, 117, 116, 102, 56, 6, 115, 121, 109, 98, 111, 108, 6, 97, 112, + 112, 101, 110, 100, 11, 97, 112, 112, 101, 110, 100, 95, 117, 116, 102, 56, 8, 116, + 111, 95, 98, 121, 116, 101, 115, 19, 99, 114, 101, 97, 116, 101, 95, 110, 97, 109, + 101, 100, 95, 111, 98, 106, 101, 99, 116, 6, 79, 112, 116, 105, 111, 110, 4, 110, + 111, 110, 101, 43, 99, 114, 101, 97, 116, 101, 95, 112, 114, 105, 109, 97, 114, 121, + 95, 115, 116, 111, 114, 101, 95, 101, 110, 97, 98, 108, 101, 100, 95, 102, 117, 110, + 103, 105, 98, 108, 101, 95, 97, 115, 115, 101, 116, 15, 103, 101, 110, 101, 114, 97, + 116, 101, 95, 115, 105, 103, 110, 101, 114, 27, 111, 98, 106, 101, 99, 116, 95, 102, + 114, 111, 109, 95, 99, 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, 95, 114, 101, + 102, 12, 99, 114, 101, 97, 116, 101, 95, 115, 116, 111, 114, 101, 25, 99, 114, 101, + 97, 116, 101, 95, 111, 98, 106, 101, 99, 116, 95, 102, 114, 111, 109, 95, 111, 98, + 106, 101, 99, 116, 3, 110, 101, 119, 7, 99, 111, 110, 118, 101, 114, 116, 9, 112, + 117, 115, 104, 95, 98, 97, 99, 107, 4, 101, 109, 105, 116, 17, 103, 101, 110, 101, + 114, 97, 116, 101, 95, 98, 117, 114, 110, 95, 114, 101, 102, 17, 103, 101, 110, 101, + 114, 97, 116, 101, 95, 109, 105, 110, 116, 95, 114, 101, 102, 21, 103, 101, 110, 101, + 114, 97, 116, 101, 95, 116, 114, 97, 110, 115, 102, 101, 114, 95, 114, 101, 102, 27, + 101, 110, 115, 117, 114, 101, 95, 112, 114, 105, 109, 97, 114, 121, 95, 115, 116, 111, + 114, 101, 95, 101, 120, 105, 115, 116, 115, 13, 112, 114, 105, 109, 97, 114, 121, 95, + 115, 116, 111, 114, 101, 9, 105, 115, 95, 102, 114, 111, 122, 101, 110, 15, 115, 101, + 116, 95, 102, 114, 111, 122, 101, 110, 95, 102, 108, 97, 103, 7, 98, 97, 108, 97, + 110, 99, 101, 16, 105, 110, 118, 97, 108, 105, 100, 95, 97, 114, 103, 117, 109, 101, + 110, 116, 17, 97, 100, 100, 114, 101, 115, 115, 95, 116, 111, 95, 111, 98, 106, 101, + 99, 116, 21, 99, 114, 101, 97, 116, 101, 95, 111, 98, 106, 101, 99, 116, 95, 97, + 100, 100, 114, 101, 115, 115, 6, 115, 117, 112, 112, 108, 121, 12, 100, 101, 115, 116, + 114, 111, 121, 95, 115, 111, 109, 101, 19, 109, 101, 116, 97, 100, 97, 116, 97, 95, + 102, 114, 111, 109, 95, 97, 115, 115, 101, 116, 6, 97, 109, 111, 117, 110, 116, 4, + 115, 113, 114, 116, 7, 109, 105, 110, 116, 95, 116, 111, 3, 109, 105, 110, 7, 100, + 101, 112, 111, 115, 105, 116, 16, 100, 101, 112, 111, 115, 105, 116, 95, 119, 105, 116, + 104, 95, 114, 101, 102, 7, 101, 120, 116, 114, 97, 99, 116, 17, 116, 114, 97, 110, + 115, 102, 101, 114, 95, 119, 105, 116, 104, 95, 114, 101, 102, 23, 98, 111, 114, 114, + 111, 119, 95, 109, 117, 116, 95, 119, 105, 116, 104, 95, 100, 101, 102, 97, 117, 108, + 116, 6, 117, 112, 115, 101, 114, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 3, 8, 4, 0, 0, 0, 0, 0, 0, 0, 3, 8, 2, 0, 0, 0, 0, 0, + 0, 0, 3, 8, 3, 0, 0, 0, 0, 0, 0, 0, 3, 8, 8, 0, 0, 0, + 0, 0, 0, 0, 3, 8, 6, 0, 0, 0, 0, 0, 0, 0, 3, 8, 5, 0, + 0, 0, 0, 0, 0, 0, 3, 8, 7, 0, 0, 0, 0, 0, 0, 0, 3, 8, + 1, 0, 0, 0, 0, 0, 0, 0, 3, 8, 16, 39, 0, 0, 0, 0, 0, 0, + 2, 1, 8, 3, 8, 25, 0, 0, 0, 0, 0, 0, 0, 3, 8, 232, 3, 0, + 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 171, 205, 10, 2, 4, 3, 76, 80, 45, 10, 2, 2, 1, 45, 10, 2, - 3, 2, 76, 80, 10, 2, 1, 0, 20, 99, 111, 109, 112, 105, 108, 97, 116, 105, - 111, 110, 95, 109, 101, 116, 97, 100, 97, 116, 97, 9, 0, 3, 50, 46, 48, 3, - 50, 46, 49, 18, 97, 112, 116, 111, 115, 58, 58, 109, 101, 116, 97, 100, 97, 116, - 97, 95, 118, 49, 128, 9, 8, 1, 0, 0, 0, 0, 0, 0, 0, 12, 69, 90, - 69, 82, 79, 95, 65, 77, 79, 85, 78, 84, 52, 65, 109, 111, 117, 110, 116, 32, - 111, 102, 32, 116, 111, 107, 101, 110, 115, 32, 112, 114, 111, 118, 105, 100, 101, 100, - 32, 109, 117, 115, 116, 32, 98, 101, 32, 103, 114, 101, 97, 116, 101, 114, 32, 116, - 104, 97, 110, 32, 122, 101, 114, 111, 46, 2, 0, 0, 0, 0, 0, 0, 0, 30, - 69, 73, 78, 83, 85, 70, 70, 73, 67, 73, 69, 78, 84, 95, 76, 73, 81, 85, - 73, 68, 73, 84, 89, 95, 77, 73, 78, 84, 69, 68, 99, 84, 104, 101, 32, 97, - 109, 111, 117, 110, 116, 32, 111, 102, 32, 108, 105, 113, 117, 105, 100, 105, 116, 121, - 32, 112, 114, 111, 118, 105, 100, 101, 100, 32, 105, 115, 32, 115, 111, 32, 115, 109, - 97, 108, 108, 32, 116, 104, 97, 116, 32, 99, 111, 114, 114, 101, 115, 112, 111, 110, - 100, 105, 110, 103, 32, 76, 80, 32, 116, 111, 107, 101, 110, 32, 97, 109, 111, 117, - 110, 116, 32, 105, 115, 32, 114, 111, 117, 110, 100, 101, 100, 32, 116, 111, 32, 122, - 101, 114, 111, 46, 3, 0, 0, 0, 0, 0, 0, 0, 32, 69, 73, 78, 83, 85, - 70, 70, 73, 67, 73, 69, 78, 84, 95, 76, 73, 81, 85, 73, 68, 73, 84, 89, - 95, 82, 69, 68, 69, 69, 77, 69, 68, 98, 65, 109, 111, 117, 110, 116, 32, 111, - 102, 32, 76, 80, 32, 116, 111, 107, 101, 110, 115, 32, 114, 101, 100, 101, 101, 109, - 101, 100, 32, 105, 115, 32, 116, 111, 111, 32, 115, 109, 97, 108, 108, 44, 32, 115, - 111, 32, 97, 109, 111, 117, 110, 116, 115, 32, 111, 102, 32, 116, 111, 107, 101, 110, - 115, 32, 114, 101, 99, 101, 105, 118, 101, 100, 32, 98, 97, 99, 107, 32, 97, 114, - 101, 32, 114, 111, 117, 110, 100, 101, 100, 32, 116, 111, 32, 122, 101, 114, 111, 46, - 4, 0, 0, 0, 0, 0, 0, 0, 22, 69, 73, 78, 67, 79, 82, 82, 69, 67, - 84, 95, 83, 87, 65, 80, 95, 65, 77, 79, 85, 78, 84, 94, 84, 104, 101, 32, - 115, 112, 101, 99, 105, 102, 105, 101, 100, 32, 97, 109, 111, 117, 110, 116, 32, 111, - 102, 32, 111, 117, 116, 112, 117, 116, 32, 116, 111, 107, 101, 110, 115, 32, 105, 115, - 32, 105, 110, 99, 111, 114, 114, 101, 99, 116, 32, 97, 110, 100, 32, 100, 111, 101, - 115, 32, 110, 111, 116, 32, 109, 97, 105, 110, 116, 97, 105, 110, 32, 116, 104, 101, - 32, 112, 111, 111, 108, 39, 115, 32, 105, 110, 118, 97, 114, 105, 97, 110, 116, 46, - 5, 0, 0, 0, 0, 0, 0, 0, 16, 69, 78, 79, 84, 95, 83, 84, 79, 82, - 69, 95, 79, 87, 78, 69, 82, 50, 84, 104, 101, 32, 99, 97, 108, 108, 101, 114, - 32, 105, 115, 32, 110, 111, 116, 32, 116, 104, 101, 32, 111, 119, 110, 101, 114, 32, - 111, 102, 32, 116, 104, 101, 32, 76, 80, 32, 116, 111, 107, 101, 110, 32, 115, 116, - 111, 114, 101, 46, 6, 0, 0, 0, 0, 0, 0, 0, 15, 69, 78, 79, 84, 95, - 65, 85, 84, 72, 79, 82, 73, 90, 69, 68, 50, 67, 108, 97, 108, 101, 114, 32, - 105, 115, 32, 110, 111, 116, 32, 97, 117, 116, 104, 111, 114, 105, 122, 101, 100, 32, - 116, 111, 32, 112, 101, 114, 102, 111, 114, 109, 32, 116, 104, 101, 32, 111, 112, 101, - 114, 97, 116, 105, 111, 110, 46, 7, 0, 0, 0, 0, 0, 0, 0, 17, 69, 83, - 87, 65, 80, 83, 95, 65, 82, 69, 95, 80, 65, 85, 83, 69, 68, 31, 65, 108, - 108, 32, 115, 119, 97, 112, 115, 32, 97, 114, 101, 32, 99, 117, 114, 114, 101, 110, - 116, 108, 121, 32, 112, 97, 117, 115, 101, 100, 46, 8, 0, 0, 0, 0, 0, 0, - 0, 41, 69, 75, 95, 66, 69, 70, 79, 82, 69, 95, 83, 87, 65, 80, 95, 71, - 82, 69, 65, 84, 69, 82, 95, 84, 72, 65, 78, 95, 69, 75, 95, 65, 70, 84, - 69, 82, 95, 83, 87, 65, 80, 46, 83, 119, 97, 112, 32, 108, 101, 97, 118, 101, - 115, 32, 112, 111, 111, 108, 32, 105, 110, 32, 97, 32, 119, 111, 114, 115, 101, 32, - 115, 116, 97, 116, 101, 32, 116, 104, 97, 110, 32, 98, 101, 102, 111, 114, 101, 46, - 4, 4, 83, 119, 97, 112, 1, 4, 0, 10, 67, 114, 101, 97, 116, 101, 80, 111, - 111, 108, 1, 4, 0, 13, 76, 105, 113, 117, 105, 100, 105, 116, 121, 80, 111, 111, - 108, 1, 3, 1, 24, 48, 120, 49, 58, 58, 111, 98, 106, 101, 99, 116, 58, 58, - 79, 98, 106, 101, 99, 116, 71, 114, 111, 117, 112, 14, 70, 101, 101, 115, 65, 99, - 99, 111, 117, 110, 116, 105, 110, 103, 1, 3, 1, 24, 48, 120, 49, 58, 58, 111, - 98, 106, 101, 99, 116, 58, 58, 79, 98, 106, 101, 99, 116, 71, 114, 111, 117, 112, - 13, 9, 97, 108, 108, 95, 112, 111, 111, 108, 115, 1, 1, 0, 9, 105, 115, 95, - 115, 116, 97, 98, 108, 101, 1, 1, 0, 12, 115, 119, 97, 112, 95, 102, 101, 101, - 95, 98, 112, 115, 1, 1, 0, 13, 109, 105, 110, 95, 108, 105, 113, 117, 105, 100, - 105, 116, 121, 1, 1, 0, 13, 112, 111, 111, 108, 95, 114, 101, 115, 101, 114, 118, - 101, 115, 1, 1, 0, 14, 99, 108, 97, 105, 109, 97, 98, 108, 101, 95, 102, 101, - 101, 115, 1, 1, 0, 14, 103, 101, 116, 95, 97, 109, 111, 117, 110, 116, 95, 111, - 117, 116, 1, 1, 0, 14, 108, 105, 113, 117, 105, 100, 105, 116, 121, 95, 112, 111, - 111, 108, 1, 1, 0, 15, 108, 112, 95, 116, 111, 107, 101, 110, 95, 115, 117, 112, - 112, 108, 121, 1, 1, 0, 21, 116, 111, 116, 97, 108, 95, 110, 117, 109, 98, 101, - 114, 95, 111, 102, 95, 112, 111, 111, 108, 115, 1, 1, 0, 22, 108, 105, 113, 117, - 105, 100, 105, 116, 121, 95, 112, 111, 111, 108, 95, 97, 100, 100, 114, 101, 115, 115, - 1, 1, 0, 22, 115, 117, 112, 112, 111, 114, 116, 101, 100, 95, 105, 110, 110, 101, - 114, 95, 97, 115, 115, 101, 116, 115, 1, 1, 0, 27, 108, 105, 113, 117, 105, 100, - 105, 116, 121, 95, 112, 111, 111, 108, 95, 97, 100, 100, 114, 101, 115, 115, 95, 115, - 97, 102, 101, 1, 1, 0, 0, 2, 4, 2, 11, 1, 1, 8, 2, 6, 11, 1, - 1, 8, 3, 9, 11, 1, 1, 8, 3, 10, 1, 4, 2, 6, 12, 4, 13, 4, - 14, 11, 5, 2, 5, 4, 17, 11, 5, 2, 5, 4, 18, 11, 5, 2, 5, 4, - 19, 11, 5, 2, 5, 4, 6, 2, 3, 21, 8, 7, 23, 8, 8, 25, 8, 9, - 2, 2, 7, 27, 11, 1, 1, 8, 10, 29, 11, 1, 1, 8, 10, 30, 11, 1, - 1, 8, 10, 31, 11, 1, 1, 8, 10, 32, 8, 6, 33, 3, 10, 1, 11, 2, - 4, 35, 11, 12, 1, 11, 1, 1, 8, 2, 38, 1, 39, 3, 40, 3, 13, 2, - 3, 2, 5, 42, 11, 1, 1, 8, 3, 43, 3, 0, 3, 0, 3, 1, 3, 4, - 18, 190, 1, 7, 0, 43, 4, 16, 0, 20, 3, 186, 1, 14, 2, 17, 1, 12, - 3, 14, 2, 17, 2, 12, 4, 10, 1, 10, 3, 10, 4, 17, 3, 12, 5, 12, - 6, 13, 2, 10, 5, 17, 4, 12, 7, 14, 1, 56, 0, 43, 3, 12, 8, 10, - 8, 12, 9, 10, 9, 16, 1, 20, 56, 1, 77, 12, 10, 10, 9, 16, 2, 20, - 56, 1, 77, 12, 11, 11, 9, 16, 3, 20, 4, 181, 1, 10, 10, 10, 10, 24, - 10, 10, 24, 10, 11, 24, 10, 11, 10, 11, 24, 11, 11, 24, 11, 10, 24, 22, - 12, 12, 14, 1, 56, 0, 42, 1, 12, 13, 10, 8, 16, 1, 20, 12, 14, 10, - 8, 16, 2, 20, 12, 15, 11, 5, 53, 12, 16, 10, 3, 12, 17, 10, 8, 16, - 1, 20, 56, 2, 12, 18, 11, 17, 11, 18, 33, 4, 159, 1, 11, 14, 11, 2, - 56, 3, 10, 8, 16, 4, 20, 11, 7, 56, 3, 10, 13, 16, 5, 20, 11, 16, - 22, 11, 13, 15, 5, 21, 11, 0, 11, 15, 11, 6, 56, 4, 12, 19, 11, 8, - 12, 9, 10, 9, 16, 1, 20, 56, 1, 77, 12, 20, 10, 9, 16, 2, 20, 56, - 1, 77, 12, 21, 11, 9, 16, 3, 20, 4, 154, 1, 10, 20, 10, 20, 24, 10, - 20, 24, 10, 21, 24, 10, 21, 10, 21, 24, 11, 21, 24, 11, 20, 24, 22, 12, - 22, 11, 12, 11, 22, 37, 4, 152, 1, 14, 1, 56, 0, 11, 3, 11, 4, 18, - 5, 56, 5, 11, 19, 2, 6, 8, 0, 0, 0, 0, 0, 0, 0, 39, 11, 20, - 11, 21, 24, 12, 22, 5, 140, 1, 11, 15, 11, 2, 56, 3, 10, 8, 16, 6, - 20, 11, 7, 56, 3, 10, 13, 16, 7, 20, 11, 16, 22, 11, 13, 15, 7, 21, - 11, 0, 11, 14, 11, 6, 56, 4, 12, 19, 5, 106, 11, 10, 11, 11, 24, 12, - 12, 5, 59, 11, 0, 1, 6, 7, 0, 0, 0, 0, 0, 0, 0, 39, 11, 1, - 0, 1, 4, 47, 198, 1, 7, 0, 42, 4, 12, 4, 10, 1, 12, 5, 10, 2, - 12, 6, 10, 3, 12, 7, 10, 5, 12, 8, 10, 6, 12, 9, 7, 1, 17, 12, - 12, 10, 13, 10, 11, 8, 56, 6, 17, 14, 13, 10, 7, 2, 17, 15, 13, 10, - 11, 9, 56, 6, 17, 14, 11, 10, 12, 11, 11, 5, 12, 12, 11, 6, 12, 13, - 11, 7, 12, 14, 64, 26, 0, 0, 0, 0, 0, 0, 0, 0, 12, 15, 13, 15, - 14, 12, 56, 7, 12, 16, 14, 16, 56, 8, 56, 9, 13, 15, 14, 13, 56, 7, - 12, 17, 14, 17, 56, 8, 56, 9, 13, 15, 14, 14, 56, 10, 56, 9, 11, 15, - 12, 18, 11, 0, 11, 18, 17, 18, 12, 19, 14, 19, 12, 20, 10, 20, 12, 21, - 56, 11, 7, 3, 17, 12, 49, 8, 7, 4, 17, 12, 7, 4, 17, 12, 12, 22, - 12, 23, 12, 24, 12, 25, 12, 26, 11, 21, 11, 26, 11, 11, 11, 25, 11, 24, - 11, 23, 11, 22, 17, 20, 10, 20, 17, 21, 12, 27, 14, 27, 12, 0, 10, 20, - 56, 12, 12, 5, 10, 20, 10, 5, 56, 13, 1, 10, 0, 12, 28, 10, 0, 12, - 29, 10, 1, 12, 6, 11, 29, 17, 24, 12, 30, 14, 30, 11, 6, 56, 13, 12, - 31, 10, 0, 12, 29, 10, 2, 12, 6, 11, 29, 17, 24, 12, 32, 14, 32, 11, - 6, 56, 13, 12, 33, 10, 0, 12, 29, 10, 1, 12, 6, 11, 29, 17, 24, 12, - 34, 14, 34, 11, 6, 56, 13, 12, 35, 10, 0, 12, 29, 10, 2, 12, 6, 11, - 29, 17, 24, 12, 36, 14, 36, 11, 6, 56, 13, 12, 37, 11, 20, 17, 25, 12, - 38, 10, 3, 4, 193, 1, 10, 4, 16, 8, 20, 12, 39, 11, 31, 11, 33, 11, - 35, 11, 37, 11, 38, 11, 39, 10, 3, 18, 3, 12, 40, 11, 28, 11, 40, 45, - 3, 11, 0, 12, 29, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 171, 205, 10, 2, 4, 3, 76, 80, 45, 10, 2, 2, 1, 45, 10, 2, 1, + 0, 10, 2, 3, 2, 76, 80, 18, 97, 112, 116, 111, 115, 58, 58, 109, 101, 116, + 97, 100, 97, 116, 97, 95, 118, 49, 128, 9, 8, 1, 0, 0, 0, 0, 0, 0, + 0, 12, 69, 90, 69, 82, 79, 95, 65, 77, 79, 85, 78, 84, 52, 65, 109, 111, + 117, 110, 116, 32, 111, 102, 32, 116, 111, 107, 101, 110, 115, 32, 112, 114, 111, 118, + 105, 100, 101, 100, 32, 109, 117, 115, 116, 32, 98, 101, 32, 103, 114, 101, 97, 116, + 101, 114, 32, 116, 104, 97, 110, 32, 122, 101, 114, 111, 46, 2, 0, 0, 0, 0, + 0, 0, 0, 30, 69, 73, 78, 83, 85, 70, 70, 73, 67, 73, 69, 78, 84, 95, + 76, 73, 81, 85, 73, 68, 73, 84, 89, 95, 77, 73, 78, 84, 69, 68, 99, 84, + 104, 101, 32, 97, 109, 111, 117, 110, 116, 32, 111, 102, 32, 108, 105, 113, 117, 105, + 100, 105, 116, 121, 32, 112, 114, 111, 118, 105, 100, 101, 100, 32, 105, 115, 32, 115, + 111, 32, 115, 109, 97, 108, 108, 32, 116, 104, 97, 116, 32, 99, 111, 114, 114, 101, + 115, 112, 111, 110, 100, 105, 110, 103, 32, 76, 80, 32, 116, 111, 107, 101, 110, 32, + 97, 109, 111, 117, 110, 116, 32, 105, 115, 32, 114, 111, 117, 110, 100, 101, 100, 32, + 116, 111, 32, 122, 101, 114, 111, 46, 3, 0, 0, 0, 0, 0, 0, 0, 32, 69, + 73, 78, 83, 85, 70, 70, 73, 67, 73, 69, 78, 84, 95, 76, 73, 81, 85, 73, + 68, 73, 84, 89, 95, 82, 69, 68, 69, 69, 77, 69, 68, 98, 65, 109, 111, 117, + 110, 116, 32, 111, 102, 32, 76, 80, 32, 116, 111, 107, 101, 110, 115, 32, 114, 101, + 100, 101, 101, 109, 101, 100, 32, 105, 115, 32, 116, 111, 111, 32, 115, 109, 97, 108, + 108, 44, 32, 115, 111, 32, 97, 109, 111, 117, 110, 116, 115, 32, 111, 102, 32, 116, + 111, 107, 101, 110, 115, 32, 114, 101, 99, 101, 105, 118, 101, 100, 32, 98, 97, 99, + 107, 32, 97, 114, 101, 32, 114, 111, 117, 110, 100, 101, 100, 32, 116, 111, 32, 122, + 101, 114, 111, 46, 4, 0, 0, 0, 0, 0, 0, 0, 22, 69, 73, 78, 67, 79, + 82, 82, 69, 67, 84, 95, 83, 87, 65, 80, 95, 65, 77, 79, 85, 78, 84, 94, + 84, 104, 101, 32, 115, 112, 101, 99, 105, 102, 105, 101, 100, 32, 97, 109, 111, 117, + 110, 116, 32, 111, 102, 32, 111, 117, 116, 112, 117, 116, 32, 116, 111, 107, 101, 110, + 115, 32, 105, 115, 32, 105, 110, 99, 111, 114, 114, 101, 99, 116, 32, 97, 110, 100, + 32, 100, 111, 101, 115, 32, 110, 111, 116, 32, 109, 97, 105, 110, 116, 97, 105, 110, + 32, 116, 104, 101, 32, 112, 111, 111, 108, 39, 115, 32, 105, 110, 118, 97, 114, 105, + 97, 110, 116, 46, 5, 0, 0, 0, 0, 0, 0, 0, 16, 69, 78, 79, 84, 95, + 83, 84, 79, 82, 69, 95, 79, 87, 78, 69, 82, 50, 84, 104, 101, 32, 99, 97, + 108, 108, 101, 114, 32, 105, 115, 32, 110, 111, 116, 32, 116, 104, 101, 32, 111, 119, + 110, 101, 114, 32, 111, 102, 32, 116, 104, 101, 32, 76, 80, 32, 116, 111, 107, 101, + 110, 32, 115, 116, 111, 114, 101, 46, 6, 0, 0, 0, 0, 0, 0, 0, 15, 69, + 78, 79, 84, 95, 65, 85, 84, 72, 79, 82, 73, 90, 69, 68, 50, 67, 108, 97, + 108, 101, 114, 32, 105, 115, 32, 110, 111, 116, 32, 97, 117, 116, 104, 111, 114, 105, + 122, 101, 100, 32, 116, 111, 32, 112, 101, 114, 102, 111, 114, 109, 32, 116, 104, 101, + 32, 111, 112, 101, 114, 97, 116, 105, 111, 110, 46, 7, 0, 0, 0, 0, 0, 0, + 0, 17, 69, 83, 87, 65, 80, 83, 95, 65, 82, 69, 95, 80, 65, 85, 83, 69, + 68, 31, 65, 108, 108, 32, 115, 119, 97, 112, 115, 32, 97, 114, 101, 32, 99, 117, + 114, 114, 101, 110, 116, 108, 121, 32, 112, 97, 117, 115, 101, 100, 46, 8, 0, 0, + 0, 0, 0, 0, 0, 41, 69, 75, 95, 66, 69, 70, 79, 82, 69, 95, 83, 87, + 65, 80, 95, 71, 82, 69, 65, 84, 69, 82, 95, 84, 72, 65, 78, 95, 69, 75, + 95, 65, 70, 84, 69, 82, 95, 83, 87, 65, 80, 46, 83, 119, 97, 112, 32, 108, + 101, 97, 118, 101, 115, 32, 112, 111, 111, 108, 32, 105, 110, 32, 97, 32, 119, 111, + 114, 115, 101, 32, 115, 116, 97, 116, 101, 32, 116, 104, 97, 110, 32, 98, 101, 102, + 111, 114, 101, 46, 4, 4, 83, 119, 97, 112, 1, 4, 0, 10, 67, 114, 101, 97, + 116, 101, 80, 111, 111, 108, 1, 4, 0, 13, 76, 105, 113, 117, 105, 100, 105, 116, + 121, 80, 111, 111, 108, 1, 3, 1, 24, 48, 120, 49, 58, 58, 111, 98, 106, 101, + 99, 116, 58, 58, 79, 98, 106, 101, 99, 116, 71, 114, 111, 117, 112, 14, 70, 101, + 101, 115, 65, 99, 99, 111, 117, 110, 116, 105, 110, 103, 1, 3, 1, 24, 48, 120, + 49, 58, 58, 111, 98, 106, 101, 99, 116, 58, 58, 79, 98, 106, 101, 99, 116, 71, + 114, 111, 117, 112, 13, 9, 97, 108, 108, 95, 112, 111, 111, 108, 115, 1, 1, 0, + 9, 105, 115, 95, 115, 116, 97, 98, 108, 101, 1, 1, 0, 12, 115, 119, 97, 112, + 95, 102, 101, 101, 95, 98, 112, 115, 1, 1, 0, 13, 109, 105, 110, 95, 108, 105, + 113, 117, 105, 100, 105, 116, 121, 1, 1, 0, 13, 112, 111, 111, 108, 95, 114, 101, + 115, 101, 114, 118, 101, 115, 1, 1, 0, 14, 99, 108, 97, 105, 109, 97, 98, 108, + 101, 95, 102, 101, 101, 115, 1, 1, 0, 14, 103, 101, 116, 95, 97, 109, 111, 117, + 110, 116, 95, 111, 117, 116, 1, 1, 0, 14, 108, 105, 113, 117, 105, 100, 105, 116, + 121, 95, 112, 111, 111, 108, 1, 1, 0, 15, 108, 112, 95, 116, 111, 107, 101, 110, + 95, 115, 117, 112, 112, 108, 121, 1, 1, 0, 21, 116, 111, 116, 97, 108, 95, 110, + 117, 109, 98, 101, 114, 95, 111, 102, 95, 112, 111, 111, 108, 115, 1, 1, 0, 22, + 108, 105, 113, 117, 105, 100, 105, 116, 121, 95, 112, 111, 111, 108, 95, 97, 100, 100, + 114, 101, 115, 115, 1, 1, 0, 22, 115, 117, 112, 112, 111, 114, 116, 101, 100, 95, + 105, 110, 110, 101, 114, 95, 97, 115, 115, 101, 116, 115, 1, 1, 0, 27, 108, 105, + 113, 117, 105, 100, 105, 116, 121, 95, 112, 111, 111, 108, 95, 97, 100, 100, 114, 101, + 115, 115, 95, 115, 97, 102, 101, 1, 1, 0, 0, 2, 4, 49, 11, 6, 1, 8, + 3, 50, 11, 6, 1, 8, 8, 51, 11, 6, 1, 8, 8, 36, 1, 1, 2, 6, + 52, 4, 53, 4, 54, 11, 11, 2, 5, 4, 56, 11, 11, 2, 5, 4, 57, 11, + 11, 2, 5, 4, 58, 11, 11, 2, 5, 4, 2, 2, 3, 59, 8, 12, 61, 8, + 13, 63, 8, 14, 3, 2, 7, 65, 11, 6, 1, 8, 10, 66, 11, 6, 1, 8, + 10, 67, 11, 6, 1, 8, 10, 68, 11, 6, 1, 8, 10, 69, 8, 2, 45, 3, + 36, 1, 4, 2, 4, 23, 11, 15, 1, 11, 6, 1, 8, 3, 71, 1, 72, 3, + 73, 3, 5, 2, 3, 49, 5, 74, 11, 6, 1, 8, 8, 75, 3, 0, 1, 0, + 1, 4, 29, 31, 7, 12, 43, 4, 16, 0, 12, 0, 64, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 3, 10, 0, 56, 0, 12, 2, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 12, 1, 10, 1, 10, 2, 35, 4, 27, 5, 16, 13, 3, 10, 0, + 10, 1, 56, 1, 20, 68, 7, 11, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, + 22, 12, 1, 5, 11, 11, 0, 1, 11, 3, 2, 1, 3, 0, 2, 1, 3, 33, + 93, 11, 1, 17, 25, 12, 12, 10, 12, 10, 2, 17, 22, 14, 2, 56, 2, 43, + 3, 12, 13, 14, 2, 56, 2, 42, 1, 12, 11, 10, 11, 16, 1, 10, 12, 56, + 3, 4, 25, 10, 11, 15, 1, 10, 12, 56, 4, 12, 3, 5, 27, 50, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 11, 3, + 12, 7, 10, 11, 16, 2, 10, 12, 56, 3, 4, 40, 11, 11, 15, 2, 11, 12, + 56, 4, 12, 4, 5, 44, 11, 11, 1, 50, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 11, 4, 12, 8, 10, 7, 50, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 4, 59, + 10, 0, 10, 13, 16, 3, 20, 11, 7, 52, 56, 5, 12, 5, 5, 65, 10, 13, + 16, 3, 20, 56, 6, 56, 7, 12, 5, 11, 5, 12, 9, 10, 8, 50, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 4, 80, 11, + 0, 11, 13, 16, 4, 20, 11, 8, 52, 56, 5, 12, 6, 5, 88, 11, 0, 1, + 11, 13, 16, 4, 20, 56, 6, 56, 7, 12, 6, 11, 6, 12, 10, 11, 9, 11, + 10, 2, 2, 1, 0, 1, 1, 44, 31, 14, 1, 56, 2, 43, 1, 12, 9, 10, + 9, 16, 1, 12, 7, 10, 0, 12, 6, 50, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 5, 11, 7, 11, 6, 14, 5, 56, 8, + 20, 12, 8, 11, 9, 16, 2, 12, 4, 11, 0, 12, 3, 50, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 11, 8, 11, 4, + 11, 3, 14, 2, 56, 8, 20, 2, 3, 1, 0, 1, 4, 47, 180, 1, 7, 12, + 42, 4, 12, 21, 11, 0, 10, 1, 10, 2, 10, 3, 12, 22, 12, 39, 12, 36, + 12, 29, 10, 36, 10, 39, 12, 40, 12, 37, 7, 13, 17, 33, 12, 43, 13, 43, + 11, 37, 56, 9, 17, 35, 13, 43, 7, 14, 17, 36, 13, 43, 11, 40, 56, 9, + 17, 35, 11, 43, 12, 42, 11, 36, 11, 39, 11, 22, 12, 23, 12, 41, 12, 38, + 7, 15, 12, 31, 13, 31, 12, 13, 14, 38, 56, 10, 12, 4, 11, 13, 14, 4, + 56, 11, 56, 12, 13, 31, 12, 15, 14, 41, 56, 10, 12, 14, 11, 15, 14, 14, + 56, 11, 56, 12, 13, 31, 14, 23, 56, 13, 56, 12, 11, 31, 12, 30, 11, 29, + 11, 30, 17, 39, 12, 16, 14, 16, 12, 25, 10, 25, 56, 14, 11, 42, 7, 16, + 17, 33, 7, 9, 7, 15, 17, 33, 7, 15, 17, 33, 17, 41, 11, 25, 12, 27, + 10, 27, 17, 42, 12, 17, 14, 17, 12, 28, 10, 27, 56, 15, 12, 24, 10, 27, + 10, 24, 56, 16, 1, 10, 28, 12, 12, 10, 28, 10, 1, 12, 34, 17, 45, 12, + 10, 14, 10, 11, 34, 56, 16, 12, 11, 10, 28, 10, 2, 12, 35, 17, 45, 12, + 8, 14, 8, 11, 35, 56, 16, 12, 9, 10, 28, 10, 1, 12, 32, 17, 45, 12, + 6, 14, 6, 11, 32, 56, 16, 12, 7, 10, 28, 10, 2, 12, 33, 17, 45, 12, + 20, 14, 20, 11, 33, 56, 16, 12, 5, 11, 27, 17, 4, 12, 19, 10, 3, 4, + 142, 1, 10, 21, 16, 5, 20, 12, 18, 5, 146, 1, 10, 21, 16, 6, 20, 12, + 18, 11, 12, 11, 11, 11, 9, 11, 7, 11, 5, 11, 19, 11, 18, 10, 3, 18, + 3, 45, 3, 11, 28, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 56, 14, 56, 14, 56, 14, 56, 14, 18, 1, 12, 41, 11, 29, 11, - 41, 45, 1, 11, 5, 56, 15, 12, 42, 11, 4, 15, 9, 10, 42, 56, 16, 10, - 42, 11, 1, 11, 2, 11, 3, 18, 0, 56, 17, 11, 42, 2, 10, 4, 16, 10, - 20, 12, 39, 5, 153, 1, 29, 1, 4, 2, 1, 3, 52, 35, 10, 3, 6, 0, - 0, 0, 0, 0, 0, 0, 0, 36, 4, 31, 11, 0, 17, 30, 12, 5, 10, 5, - 10, 1, 56, 18, 12, 6, 10, 2, 10, 1, 56, 18, 12, 7, 11, 5, 10, 1, - 17, 32, 11, 2, 10, 1, 17, 32, 14, 1, 56, 0, 43, 3, 16, 11, 16, 12, - 11, 6, 11, 7, 11, 3, 56, 19, 2, 11, 0, 1, 6, 1, 0, 0, 0, 0, - 0, 0, 0, 39, 34, 1, 0, 2, 1, 3, 59, 175, 1, 14, 1, 17, 1, 14, - 2, 17, 1, 11, 3, 17, 35, 12, 4, 10, 0, 17, 30, 10, 4, 56, 18, 12, - 5, 14, 1, 17, 2, 12, 6, 14, 2, 17, 2, 12, 7, 10, 6, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 36, 4, 172, 1, 10, 7, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 36, 12, 3, 11, 3, 4, 168, 1, 14, 4, 56, 0, 43, 3, 12, - 9, 10, 9, 16, 1, 20, 12, 10, 10, 9, 16, 2, 20, 12, 11, 10, 10, 56, - 1, 12, 8, 10, 11, 56, 1, 12, 12, 10, 4, 56, 20, 56, 21, 12, 13, 10, - 9, 16, 11, 16, 13, 12, 14, 10, 13, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 105, 11, 6, 53, 11, 7, 53, 24, - 17, 38, 52, 10, 14, 10, 4, 6, 232, 3, 0, 0, 0, 0, 0, 0, 56, 22, - 6, 232, 3, 0, 0, 0, 0, 0, 0, 23, 12, 17, 10, 17, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 36, 4, 97, 11, 10, 11, 1, 56, 3, 11, 11, 11, 2, - 56, 3, 11, 0, 17, 30, 11, 4, 17, 32, 11, 14, 11, 17, 17, 40, 12, 18, - 11, 9, 16, 11, 16, 12, 11, 5, 11, 18, 56, 23, 2, 11, 0, 1, 11, 9, - 1, 11, 14, 1, 6, 2, 0, 0, 0, 0, 0, 0, 0, 39, 11, 6, 12, 16, - 10, 13, 52, 12, 19, 10, 8, 6, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, - 159, 1, 11, 16, 53, 11, 19, 53, 24, 11, 8, 53, 26, 52, 12, 20, 11, 7, - 12, 21, 11, 13, 52, 12, 22, 11, 12, 12, 23, 10, 23, 6, 0, 0, 0, 0, - 0, 0, 0, 0, 34, 4, 150, 1, 11, 21, 53, 11, 22, 53, 24, 11, 23, 53, - 26, 52, 12, 24, 11, 20, 11, 24, 17, 42, 12, 17, 5, 72, 11, 0, 1, 11, - 9, 1, 11, 14, 1, 6, 4, 0, 0, 0, 0, 0, 0, 0, 17, 43, 39, 11, - 0, 1, 11, 9, 1, 11, 14, 1, 6, 4, 0, 0, 0, 0, 0, 0, 0, 17, - 43, 39, 11, 0, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 39, 9, 12, 3, - 5, 26, 35, 1, 0, 0, 2, 6, 11, 0, 11, 1, 11, 2, 17, 44, 56, 24, - 2, 46, 1, 0, 1, 4, 63, 30, 7, 0, 43, 4, 16, 9, 12, 0, 64, 20, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 10, 0, 56, 25, 12, 2, 6, 0, - 0, 0, 0, 0, 0, 0, 0, 12, 3, 10, 3, 10, 2, 35, 4, 26, 13, 1, - 10, 0, 10, 3, 56, 26, 20, 68, 20, 11, 3, 6, 1, 0, 0, 0, 0, 0, - 0, 0, 22, 12, 3, 5, 11, 11, 0, 1, 11, 1, 2, 49, 3, 0, 2, 1, - 3, 69, 97, 11, 1, 17, 30, 12, 3, 10, 3, 10, 2, 17, 32, 14, 2, 56, - 0, 43, 3, 12, 4, 14, 2, 56, 0, 42, 1, 12, 5, 10, 5, 16, 14, 10, - 3, 56, 27, 4, 94, 10, 5, 15, 14, 10, 3, 56, 28, 12, 6, 10, 5, 16, - 15, 10, 3, 56, 27, 4, 89, 11, 5, 15, 15, 11, 3, 56, 28, 12, 7, 10, - 6, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 36, 4, 82, 10, 4, 16, 4, 20, 11, 6, 52, 12, 9, 12, 10, 10, 0, 11, - 10, 11, 9, 56, 4, 12, 11, 10, 7, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 36, 4, 73, 11, 4, 16, 6, 20, 11, 7, - 52, 12, 9, 12, 10, 11, 0, 11, 10, 11, 9, 56, 4, 12, 12, 11, 11, 12, - 13, 11, 12, 12, 14, 11, 13, 11, 14, 2, 11, 0, 1, 11, 4, 16, 6, 20, - 56, 2, 56, 29, 12, 12, 5, 66, 10, 4, 16, 4, 20, 56, 2, 56, 29, 12, - 11, 5, 50, 11, 5, 1, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 12, 7, 5, 34, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 5, 24, 53, 1, 0, 1, 1, 73, - 25, 14, 1, 56, 0, 43, 1, 12, 2, 10, 2, 16, 14, 50, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 14, 3, 12, 4, - 10, 0, 11, 4, 56, 30, 20, 11, 2, 16, 15, 50, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 14, 6, 12, 4, 11, 0, - 11, 4, 56, 30, 20, 2, 55, 1, 0, 1, 3, 2, 6, 14, 0, 56, 0, 43, - 3, 16, 3, 20, 2, 25, 0, 0, 0, 2, 8, 10, 0, 17, 56, 10, 0, 17, - 57, 11, 0, 17, 58, 18, 2, 2, 31, 0, 0, 1, 3, 78, 22, 10, 0, 10, - 1, 56, 31, 1, 11, 0, 10, 1, 56, 32, 12, 2, 10, 2, 56, 33, 4, 12, - 5, 20, 14, 1, 56, 34, 43, 3, 16, 11, 16, 12, 10, 2, 8, 56, 35, 11, - 2, 2, 3, 1, 0, 1, 3, 81, 130, 1, 14, 0, 56, 0, 43, 3, 12, 3, - 10, 3, 16, 1, 20, 56, 1, 77, 12, 4, 10, 3, 16, 2, 20, 56, 1, 77, - 12, 5, 10, 3, 16, 1, 20, 56, 2, 12, 6, 11, 1, 11, 6, 33, 4, 125, - 11, 4, 12, 7, 11, 5, 12, 8, 10, 2, 12, 9, 10, 3, 16, 16, 20, 12, - 10, 11, 9, 53, 11, 10, 53, 24, 50, 16, 39, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 26, 52, 12, 11, 11, 2, 10, 11, 23, 77, 12, - 12, 10, 3, 16, 3, 20, 4, 109, 11, 3, 12, 13, 10, 13, 16, 1, 20, 56, - 1, 77, 12, 14, 10, 13, 16, 2, 20, 56, 1, 77, 12, 15, 11, 13, 16, 3, - 20, 4, 104, 10, 14, 10, 14, 24, 10, 14, 24, 10, 15, 24, 10, 15, 10, 15, - 24, 11, 15, 24, 11, 14, 24, 22, 12, 16, 10, 8, 12, 17, 11, 12, 11, 7, - 22, 11, 16, 11, 8, 17, 63, 12, 18, 11, 17, 11, 18, 23, 12, 17, 11, 17, - 52, 11, 11, 2, 11, 14, 11, 15, 24, 12, 16, 5, 87, 11, 3, 1, 10, 12, - 11, 8, 24, 11, 7, 11, 12, 22, 26, 12, 17, 5, 100, 11, 3, 1, 6, 4, - 0, 0, 0, 0, 0, 0, 0, 17, 43, 39, 11, 5, 12, 7, 11, 4, 12, 8, - 5, 29, 63, 0, 0, 0, 82, 116, 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 3, 10, 3, 6, 255, 0, 0, 0, 0, 0, 0, 0, 35, 4, 114, 10, 2, 12, - 5, 10, 0, 12, 6, 10, 2, 12, 7, 10, 7, 10, 7, 24, 10, 7, 24, 12, - 8, 10, 6, 11, 8, 24, 10, 6, 10, 6, 24, 11, 6, 24, 11, 7, 24, 22, - 12, 6, 10, 6, 10, 1, 35, 4, 87, 10, 1, 11, 6, 23, 10, 0, 12, 8, - 10, 2, 12, 9, 74, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 56, 17, 56, 17, 56, 17, 56, 17, 18, 1, 45, 1, 11, 24, 56, + 18, 12, 26, 11, 21, 15, 0, 10, 26, 56, 19, 10, 26, 11, 1, 11, 2, 11, + 3, 18, 0, 56, 20, 11, 26, 2, 4, 0, 0, 0, 0, 8, 10, 0, 17, 50, + 10, 0, 17, 51, 11, 0, 17, 52, 18, 2, 2, 5, 0, 0, 1, 3, 11, 22, + 10, 0, 10, 1, 56, 21, 1, 11, 0, 10, 1, 56, 22, 12, 2, 10, 2, 56, + 23, 32, 4, 20, 14, 1, 56, 24, 43, 3, 16, 7, 16, 8, 10, 2, 8, 56, + 25, 11, 2, 2, 6, 1, 0, 1, 3, 70, 138, 1, 14, 0, 56, 2, 43, 3, + 12, 14, 10, 14, 16, 9, 20, 56, 26, 77, 12, 17, 10, 14, 16, 10, 20, 56, + 26, 77, 12, 18, 11, 1, 10, 14, 16, 9, 20, 56, 6, 33, 4, 28, 11, 17, + 11, 18, 12, 4, 12, 3, 5, 32, 11, 18, 11, 17, 12, 4, 12, 3, 11, 3, + 11, 4, 12, 20, 12, 19, 10, 2, 10, 14, 16, 11, 20, 7, 8, 12, 10, 12, + 9, 12, 7, 10, 10, 6, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 49, 5, + 54, 11, 14, 1, 6, 4, 0, 0, 0, 0, 0, 0, 0, 17, 58, 39, 11, 7, + 53, 11, 9, 53, 24, 11, 10, 53, 26, 52, 12, 11, 11, 2, 10, 11, 23, 77, + 12, 8, 10, 14, 16, 12, 20, 4, 124, 11, 14, 12, 13, 10, 13, 16, 9, 20, + 56, 26, 77, 12, 15, 10, 13, 16, 10, 20, 56, 26, 77, 12, 16, 11, 13, 16, + 12, 20, 4, 108, 10, 15, 10, 15, 24, 10, 15, 24, 10, 16, 24, 10, 16, 10, + 16, 24, 11, 16, 24, 11, 15, 24, 22, 12, 5, 5, 112, 11, 15, 11, 16, 24, + 12, 5, 11, 5, 12, 12, 10, 20, 11, 8, 11, 19, 22, 11, 12, 11, 20, 17, + 7, 23, 12, 6, 5, 134, 1, 11, 14, 1, 10, 8, 11, 20, 24, 11, 19, 11, + 8, 22, 26, 12, 6, 11, 6, 52, 11, 11, 2, 7, 0, 0, 0, 71, 114, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 5, 10, 5, 6, 255, 0, 0, 0, 0, + 0, 0, 0, 35, 4, 112, 5, 7, 10, 2, 12, 13, 10, 0, 10, 2, 12, 10, + 12, 7, 10, 7, 10, 10, 10, 10, 24, 10, 10, 24, 24, 10, 7, 10, 7, 24, + 11, 7, 24, 11, 10, 24, 22, 12, 6, 10, 6, 10, 1, 35, 4, 60, 10, 0, + 10, 2, 12, 11, 12, 8, 10, 1, 11, 6, 23, 74, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 10, 8, 24, 10, 9, 11, 9, 24, 24, 10, 8, 10, 8, 24, 11, 8, 24, - 22, 26, 12, 7, 11, 2, 11, 7, 22, 12, 2, 10, 2, 10, 5, 36, 4, 78, - 10, 2, 11, 5, 23, 74, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 8, 24, 10, 11, 11, 11, 24, 24, 10, + 8, 10, 8, 24, 11, 8, 24, 22, 26, 12, 3, 11, 2, 11, 3, 22, 12, 2, + 5, 86, 10, 0, 10, 2, 12, 12, 12, 9, 11, 6, 10, 1, 23, 74, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 37, 3, 71, 5, 73, 11, 2, 2, 11, 3, 6, 1, 0, 0, 0, 0, - 0, 0, 0, 22, 12, 3, 5, 2, 11, 5, 10, 2, 23, 74, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 9, 24, 10, 12, 11, + 12, 24, 24, 10, 9, 10, 9, 24, 11, 9, 24, 22, 26, 12, 4, 11, 2, 11, + 4, 23, 12, 2, 10, 2, 10, 13, 36, 4, 99, 10, 2, 11, 13, 23, 74, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 3, 85, 5, 73, 11, 2, 2, - 11, 6, 10, 1, 23, 10, 0, 12, 8, 10, 2, 12, 9, 74, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 4, 98, 11, 2, + 2, 5, 107, 11, 13, 10, 2, 23, 74, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 8, 24, 10, 9, 11, 9, 24, - 24, 10, 8, 10, 8, 24, 11, 8, 24, 22, 26, 12, 6, 11, 2, 11, 6, 23, - 12, 2, 5, 60, 11, 2, 2, 64, 0, 0, 0, 84, 10, 56, 36, 9, 6, 10, - 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 0, 18, 4, - 12, 1, 11, 0, 11, 1, 45, 4, 2, 44, 1, 0, 0, 86, 32, 7, 0, 12, - 3, 14, 3, 11, 0, 12, 4, 11, 1, 12, 5, 11, 2, 12, 6, 64, 26, 0, - 0, 0, 0, 0, 0, 0, 0, 12, 7, 13, 7, 14, 4, 56, 7, 12, 8, 14, - 8, 56, 8, 56, 9, 13, 7, 14, 5, 56, 7, 12, 9, 14, 9, 56, 8, 56, - 9, 13, 7, 14, 6, 56, 10, 56, 9, 11, 7, 17, 66, 2, 67, 1, 0, 0, - 11, 9, 11, 0, 11, 1, 11, 2, 17, 44, 12, 3, 10, 3, 41, 3, 11, 3, - 2, 68, 1, 0, 0, 2, 4, 11, 0, 56, 37, 56, 21, 2, 69, 1, 0, 0, - 2, 2, 6, 232, 3, 0, 0, 0, 0, 0, 0, 2, 70, 1, 0, 1, 3, 88, - 13, 14, 0, 56, 34, 43, 3, 12, 1, 10, 1, 16, 1, 20, 56, 1, 11, 1, - 16, 2, 20, 56, 1, 2, 71, 1, 0, 1, 3, 88, 14, 14, 0, 56, 0, 43, - 3, 12, 1, 10, 1, 16, 1, 20, 56, 2, 11, 1, 16, 2, 20, 56, 2, 64, - 4, 2, 0, 0, 0, 0, 0, 0, 0, 2, 72, 1, 0, 1, 3, 2, 6, 14, - 0, 56, 0, 43, 3, 16, 16, 20, 2, 73, 1, 0, 1, 4, 2, 5, 7, 0, - 43, 4, 16, 9, 56, 25, 2, 32, 1, 4, 1, 1, 92, 138, 1, 14, 1, 56, - 0, 42, 1, 12, 2, 10, 2, 16, 5, 20, 12, 3, 10, 2, 16, 7, 20, 12, - 4, 10, 0, 10, 1, 56, 38, 53, 12, 5, 11, 1, 56, 39, 12, 6, 10, 5, + 0, 0, 0, 0, 0, 37, 4, 107, 11, 2, 2, 11, 5, 6, 1, 0, 0, 0, + 0, 0, 0, 0, 22, 12, 5, 5, 2, 11, 2, 2, 8, 0, 0, 0, 0, 8, + 11, 0, 56, 27, 9, 6, 10, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, + 0, 0, 0, 0, 0, 18, 4, 45, 4, 2, 9, 1, 0, 1, 3, 0, 6, 14, + 0, 56, 2, 43, 3, 16, 12, 20, 2, 10, 1, 0, 0, 0, 6, 11, 0, 11, + 1, 11, 2, 17, 11, 56, 28, 2, 11, 1, 0, 0, 73, 38, 7, 12, 12, 7, + 14, 7, 12, 8, 11, 0, 11, 1, 11, 2, 12, 9, 12, 12, 12, 11, 7, 15, + 12, 10, 13, 10, 12, 4, 14, 11, 56, 10, 12, 3, 11, 4, 14, 3, 56, 11, + 56, 12, 13, 10, 12, 6, 14, 12, 56, 10, 12, 5, 11, 6, 14, 5, 56, 11, + 56, 12, 13, 10, 14, 9, 56, 13, 56, 12, 11, 8, 11, 10, 17, 61, 2, 12, + 1, 0, 0, 19, 9, 11, 0, 11, 1, 11, 2, 17, 11, 12, 3, 10, 3, 41, + 3, 11, 3, 2, 13, 1, 0, 0, 0, 4, 11, 0, 56, 29, 56, 30, 2, 14, + 1, 0, 0, 0, 2, 7, 11, 2, 15, 1, 0, 2, 1, 3, 76, 189, 1, 14, + 1, 17, 64, 12, 25, 14, 2, 17, 64, 12, 27, 11, 25, 11, 27, 11, 3, 17, + 10, 12, 19, 10, 0, 17, 25, 10, 19, 56, 31, 12, 15, 14, 1, 17, 65, 12, + 8, 14, 2, 17, 65, 12, 9, 10, 8, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 36, 4, 31, 10, 9, 6, 0, 0, 0, 0, 0, 0, 0, 0, 36, 12, 4, 5, + 33, 9, 12, 4, 11, 4, 4, 36, 5, 40, 11, 0, 1, 7, 7, 39, 14, 19, + 56, 2, 43, 3, 12, 20, 10, 20, 16, 9, 20, 12, 23, 10, 20, 16, 10, 20, + 12, 24, 10, 23, 56, 26, 12, 21, 10, 24, 56, 26, 12, 22, 10, 19, 56, 32, + 56, 30, 12, 16, 10, 20, 16, 7, 16, 13, 12, 18, 10, 16, 50, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 87, 11, 8, + 53, 11, 9, 53, 24, 17, 66, 52, 12, 29, 10, 18, 10, 19, 7, 11, 56, 33, + 11, 29, 7, 11, 23, 12, 5, 5, 153, 1, 11, 8, 10, 16, 52, 11, 21, 12, + 12, 12, 10, 12, 6, 10, 12, 6, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, + 99, 5, 108, 11, 20, 1, 11, 18, 1, 11, 0, 1, 6, 4, 0, 0, 0, 0, + 0, 0, 0, 17, 58, 39, 11, 6, 53, 11, 10, 53, 24, 11, 12, 53, 26, 52, + 12, 26, 11, 9, 11, 16, 52, 11, 22, 12, 13, 12, 11, 12, 7, 10, 13, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 130, 1, 5, 139, 1, 11, 20, 1, + 11, 18, 1, 11, 0, 1, 6, 4, 0, 0, 0, 0, 0, 0, 0, 17, 58, 39, + 11, 7, 53, 11, 11, 53, 24, 11, 13, 53, 26, 52, 12, 28, 11, 26, 11, 28, + 17, 68, 12, 5, 11, 5, 12, 14, 10, 14, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 36, 4, 160, 1, 5, 168, 1, 11, 20, 1, 11, 18, 1, 11, 0, 1, 7, + 1, 39, 11, 23, 11, 1, 56, 34, 11, 24, 11, 2, 56, 34, 11, 0, 17, 25, + 11, 19, 17, 22, 11, 18, 11, 14, 17, 70, 12, 17, 11, 20, 16, 7, 16, 8, + 11, 15, 11, 17, 56, 35, 2, 16, 1, 0, 1, 3, 82, 13, 14, 0, 56, 24, + 43, 3, 12, 1, 10, 1, 16, 9, 20, 56, 26, 11, 1, 16, 10, 20, 56, 26, + 2, 17, 1, 0, 1, 3, 82, 14, 14, 0, 56, 2, 43, 3, 12, 1, 10, 1, + 16, 9, 20, 56, 6, 11, 1, 16, 10, 20, 56, 6, 64, 42, 2, 0, 0, 0, + 0, 0, 0, 0, 2, 18, 3, 0, 3, 1, 3, 4, 83, 195, 1, 7, 12, 43, + 4, 16, 14, 20, 32, 4, 7, 5, 11, 11, 0, 1, 7, 6, 39, 14, 2, 17, + 64, 12, 12, 14, 2, 17, 65, 12, 6, 10, 1, 10, 12, 10, 6, 17, 6, 12, + 10, 12, 7, 13, 2, 10, 10, 17, 72, 12, 8, 14, 1, 56, 2, 43, 3, 12, + 18, 10, 18, 12, 16, 10, 16, 16, 9, 20, 56, 26, 77, 12, 19, 10, 16, 16, + 10, 20, 56, 26, 77, 12, 21, 11, 16, 16, 12, 20, 4, 66, 10, 19, 10, 19, + 24, 10, 19, 24, 10, 21, 24, 10, 21, 10, 21, 24, 11, 21, 24, 11, 19, 24, + 22, 12, 3, 5, 70, 11, 19, 11, 21, 24, 12, 3, 11, 3, 12, 14, 14, 1, + 56, 2, 42, 1, 12, 9, 10, 18, 16, 9, 20, 12, 23, 10, 18, 16, 10, 20, + 12, 24, 11, 10, 53, 12, 11, 10, 12, 10, 18, 16, 9, 20, 56, 6, 33, 4, + 116, 11, 23, 11, 2, 56, 34, 10, 18, 16, 3, 20, 11, 8, 56, 34, 10, 9, + 16, 15, 20, 11, 11, 22, 11, 9, 15, 15, 21, 11, 0, 11, 24, 11, 7, 56, + 5, 12, 4, 5, 137, 1, 11, 24, 11, 2, 56, 34, 10, 18, 16, 4, 20, 11, + 8, 56, 34, 10, 9, 16, 16, 20, 11, 11, 22, 11, 9, 15, 16, 21, 11, 0, + 11, 23, 11, 7, 56, 5, 12, 4, 11, 4, 12, 15, 11, 18, 12, 17, 10, 17, + 16, 9, 20, 56, 26, 77, 12, 20, 10, 17, 16, 10, 20, 56, 26, 77, 12, 22, + 11, 17, 16, 12, 20, 4, 174, 1, 10, 20, 10, 20, 24, 10, 20, 24, 10, 22, + 24, 10, 22, 10, 22, 24, 11, 22, 24, 11, 20, 24, 22, 12, 5, 5, 178, 1, + 11, 20, 11, 22, 24, 12, 5, 11, 5, 12, 13, 11, 14, 11, 13, 37, 4, 185, + 1, 5, 187, 1, 7, 3, 39, 14, 1, 56, 2, 11, 12, 11, 6, 18, 5, 56, + 36, 11, 15, 2, 19, 1, 0, 1, 3, 0, 6, 14, 0, 56, 2, 43, 3, 16, + 11, 20, 2, 20, 1, 0, 1, 4, 0, 5, 7, 12, 43, 4, 16, 0, 56, 0, + 2, 21, 1, 4, 2, 1, 3, 86, 36, 10, 3, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 36, 4, 5, 5, 9, 11, 0, 1, 7, 7, 39, 11, 0, 17, 25, 12, + 4, 10, 4, 10, 1, 56, 31, 12, 5, 10, 2, 10, 1, 56, 31, 12, 6, 11, + 4, 10, 1, 17, 22, 11, 2, 10, 1, 17, 22, 14, 1, 56, 2, 43, 3, 16, + 7, 16, 8, 11, 5, 11, 6, 11, 3, 56, 37, 2, 22, 1, 4, 1, 1, 88, + 139, 1, 14, 1, 56, 2, 42, 1, 12, 14, 10, 14, 16, 15, 20, 12, 10, 10, + 14, 16, 16, 20, 12, 11, 10, 0, 10, 1, 56, 38, 53, 12, 17, 11, 1, 56, + 39, 12, 18, 10, 17, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 4, 128, 1, 10, 14, 16, 17, 10, 0, 56, 40, 20, 12, + 15, 10, 14, 16, 18, 10, 0, 56, 40, 20, 12, 16, 10, 10, 11, 15, 23, 12, + 12, 10, 11, 11, 16, 23, 12, 13, 11, 12, 10, 17, 10, 18, 12, 6, 12, 4, + 12, 2, 10, 6, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 34, 4, 55, 5, 60, 11, 14, 1, 6, 4, 0, 0, 0, 0, 0, + 0, 0, 17, 58, 39, 11, 2, 77, 11, 4, 77, 24, 11, 6, 77, 26, 53, 12, + 8, 11, 13, 11, 17, 11, 18, 12, 7, 12, 5, 12, 3, 10, 7, 50, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 81, 5, + 86, 11, 14, 1, 6, 4, 0, 0, 0, 0, 0, 0, 0, 17, 58, 39, 11, 3, + 77, 11, 5, 77, 24, 11, 7, 77, 26, 53, 12, 9, 10, 8, 50, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 4, 112, 10, 14, + 15, 1, 10, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 56, 41, 12, 19, 10, 19, 20, 11, 8, 22, 11, 19, 21, 10, 9, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, - 3, 25, 5, 117, 10, 2, 16, 17, 10, 0, 56, 40, 20, 10, 2, 16, 18, 10, - 0, 56, 40, 20, 12, 8, 12, 7, 10, 3, 11, 7, 23, 12, 7, 10, 4, 11, - 8, 23, 12, 8, 10, 5, 12, 9, 10, 6, 12, 10, 10, 10, 50, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 133, 1, 11, - 7, 77, 11, 9, 77, 24, 11, 10, 77, 26, 53, 12, 11, 11, 8, 12, 12, 11, - 5, 12, 13, 11, 6, 12, 14, 10, 14, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 128, 1, 11, 12, 77, 11, 13, 77, - 24, 11, 14, 77, 26, 53, 12, 15, 10, 11, 50, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 3, 88, 5, 100, 10, 2, 15, 14, - 10, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 56, 41, 12, 18, 10, 18, 20, 11, 11, 22, 11, 18, 21, 10, 15, 50, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 3, 105, - 5, 117, 10, 2, 15, 15, 10, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 56, 41, 12, 18, 10, 18, 20, 11, 15, 22, 11, - 18, 21, 10, 2, 15, 17, 10, 0, 11, 3, 56, 42, 11, 2, 15, 18, 11, 0, - 11, 4, 56, 42, 2, 11, 2, 1, 6, 4, 0, 0, 0, 0, 0, 0, 0, 17, - 43, 39, 11, 2, 1, 6, 4, 0, 0, 0, 0, 0, 0, 0, 17, 43, 39, 4, - 1, 3, 0, 3, 1, 3, 6, 3, 2, 1, 0, 3, 3, 1, 1, 4, 2, 4, - 0, 4, 3, 3, 4, 2, 2, 2, 1, 1, 4, 1, 5, 3, 5, 1, 2, 1, - 3, 0, 127, 0, + 4, 128, 1, 10, 14, 15, 2, 10, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 41, 12, 20, 10, 20, 20, 11, 9, 22, + 11, 20, 21, 10, 14, 15, 17, 10, 0, 11, 10, 56, 42, 11, 14, 15, 18, 11, + 0, 11, 11, 56, 42, 2, 4, 0, 1, 4, 1, 5, 3, 2, 3, 3, 4, 2, + 4, 3, 3, 4, 2, 2, 3, 0, 3, 1, 3, 5, 3, 6, 2, 1, 4, 1, + 1, 0, 1, 1, 1, 2, 1, 3, 0, 0, 0, ] }); @@ -493,237 +497,225 @@ pub static MODULE_COMPLEX_LIQUIDITY_POOL: Lazy> = Lazy::new(|| { pub static MODULE_COMPLEX_LIQUIDITY_POOL_WRAPPER: Lazy> = Lazy::new(|| { vec![ 161, 28, 235, 11, 7, 0, 0, 10, 12, 1, 0, 16, 2, 16, 40, 3, 56, 130, - 1, 4, 186, 1, 8, 5, 194, 1, 162, 2, 7, 228, 3, 250, 3, 8, 222, 7, - 64, 6, 158, 8, 56, 16, 214, 8, 108, 10, 194, 9, 27, 12, 221, 9, 245, 3, - 13, 210, 13, 10, 0, 0, 1, 4, 0, 6, 1, 9, 1, 15, 1, 17, 1, 27, - 1, 30, 0, 1, 8, 0, 1, 3, 7, 1, 0, 1, 2, 5, 8, 0, 3, 8, - 6, 0, 3, 12, 11, 0, 3, 20, 0, 0, 1, 26, 2, 0, 6, 29, 7, 1, - 0, 0, 7, 32, 7, 0, 0, 14, 0, 1, 0, 1, 4, 16, 2, 3, 0, 1, - 5, 18, 5, 6, 1, 8, 1, 5, 19, 7, 8, 1, 8, 1, 2, 14, 9, 8, - 0, 1, 5, 21, 10, 1, 0, 1, 3, 22, 11, 8, 0, 1, 0, 23, 13, 1, - 0, 1, 2, 22, 14, 1, 0, 1, 0, 24, 16, 17, 0, 1, 1, 25, 16, 18, - 0, 1, 6, 28, 1, 20, 1, 0, 1, 7, 31, 21, 22, 0, 1, 5, 33, 23, - 1, 0, 1, 3, 34, 24, 17, 0, 1, 0, 35, 26, 27, 0, 1, 3, 36, 28, - 29, 0, 1, 2, 37, 30, 31, 0, 1, 0, 38, 26, 1, 0, 1, 0, 39, 33, - 1, 0, 1, 2, 40, 36, 37, 1, 8, 1, 2, 4, 3, 4, 11, 19, 20, 35, - 4, 6, 12, 6, 12, 3, 1, 0, 1, 6, 12, 1, 5, 1, 8, 4, 2, 5, - 11, 1, 1, 9, 0, 1, 3, 3, 6, 12, 11, 1, 1, 9, 0, 3, 1, 8, - 5, 3, 6, 12, 11, 1, 1, 8, 2, 8, 5, 2, 5, 8, 5, 2, 6, 8, - 3, 3, 6, 6, 8, 0, 11, 1, 1, 8, 4, 6, 8, 3, 8, 5, 11, 1, - 1, 8, 2, 8, 5, 6, 6, 12, 6, 8, 3, 6, 8, 3, 3, 3, 1, 4, - 6, 12, 8, 5, 8, 5, 1, 2, 8, 5, 8, 5, 2, 6, 12, 10, 2, 1, - 8, 3, 1, 8, 6, 1, 4, 1, 11, 7, 1, 9, 0, 1, 10, 2, 1, 8, - 8, 7, 6, 8, 6, 11, 7, 1, 4, 8, 8, 8, 8, 2, 8, 8, 8, 8, - 1, 6, 8, 6, 9, 8, 6, 6, 8, 6, 6, 8, 6, 8, 8, 8, 8, 2, - 8, 8, 8, 8, 11, 7, 1, 4, 2, 6, 12, 1, 3, 11, 1, 1, 8, 2, - 8, 3, 8, 3, 1, 6, 8, 3, 1, 11, 1, 1, 8, 4, 4, 6, 12, 11, - 1, 1, 8, 4, 11, 1, 1, 8, 4, 1, 1, 11, 1, 1, 8, 2, 8, 10, - 2, 8, 3, 8, 3, 11, 1, 1, 8, 4, 11, 1, 1, 8, 4, 8, 3, 8, - 3, 11, 1, 1, 8, 2, 3, 11, 1, 1, 8, 2, 3, 3, 10, 8, 3, 8, - 3, 11, 1, 1, 8, 2, 3, 3, 6, 8, 3, 6, 8, 3, 11, 1, 1, 8, - 4, 11, 1, 1, 8, 4, 8, 0, 1, 8, 2, 1, 11, 1, 1, 9, 0, 2, - 3, 3, 22, 108, 105, 113, 117, 105, 100, 105, 116, 121, 95, 112, 111, 111, 108, 95, - 119, 114, 97, 112, 112, 101, 114, 9, 65, 100, 100, 114, 101, 115, 115, 101, 115, 4, - 112, 111, 111, 108, 6, 79, 98, 106, 101, 99, 116, 6, 111, 98, 106, 101, 99, 116, - 13, 76, 105, 113, 117, 105, 100, 105, 116, 121, 80, 111, 111, 108, 14, 108, 105, 113, - 117, 105, 100, 105, 116, 121, 95, 112, 111, 111, 108, 12, 116, 111, 107, 101, 110, 95, - 49, 95, 109, 105, 110, 116, 7, 77, 105, 110, 116, 82, 101, 102, 14, 102, 117, 110, - 103, 105, 98, 108, 101, 95, 97, 115, 115, 101, 116, 12, 116, 111, 107, 101, 110, 95, - 50, 95, 109, 105, 110, 116, 7, 116, 111, 107, 101, 110, 95, 49, 8, 77, 101, 116, - 97, 100, 97, 116, 97, 7, 116, 111, 107, 101, 110, 95, 50, 4, 115, 119, 97, 112, - 6, 115, 105, 103, 110, 101, 114, 10, 97, 100, 100, 114, 101, 115, 115, 95, 111, 102, - 22, 112, 114, 105, 109, 97, 114, 121, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, - 115, 116, 111, 114, 101, 7, 98, 97, 108, 97, 110, 99, 101, 8, 119, 105, 116, 104, - 100, 114, 97, 119, 13, 70, 117, 110, 103, 105, 98, 108, 101, 65, 115, 115, 101, 116, - 7, 100, 101, 112, 111, 115, 105, 116, 4, 109, 105, 110, 116, 13, 97, 100, 100, 95, - 108, 105, 113, 117, 105, 100, 105, 116, 121, 21, 99, 114, 101, 97, 116, 101, 95, 102, - 117, 110, 103, 105, 98, 108, 101, 95, 97, 115, 115, 101, 116, 19, 99, 114, 101, 97, - 116, 101, 95, 110, 97, 109, 101, 100, 95, 111, 98, 106, 101, 99, 116, 14, 67, 111, - 110, 115, 116, 114, 117, 99, 116, 111, 114, 82, 101, 102, 6, 111, 112, 116, 105, 111, - 110, 4, 110, 111, 110, 101, 6, 79, 112, 116, 105, 111, 110, 6, 115, 116, 114, 105, - 110, 103, 4, 117, 116, 102, 56, 6, 83, 116, 114, 105, 110, 103, 43, 99, 114, 101, - 97, 116, 101, 95, 112, 114, 105, 109, 97, 114, 121, 95, 115, 116, 111, 114, 101, 95, - 101, 110, 97, 98, 108, 101, 100, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, 97, - 115, 115, 101, 116, 17, 103, 101, 110, 101, 114, 97, 116, 101, 95, 109, 105, 110, 116, - 95, 114, 101, 102, 11, 99, 114, 101, 97, 116, 101, 95, 112, 111, 111, 108, 17, 109, - 105, 110, 116, 95, 114, 101, 102, 95, 109, 101, 116, 97, 100, 97, 116, 97, 6, 99, - 114, 101, 97, 116, 101, 22, 105, 110, 105, 116, 105, 97, 108, 105, 122, 101, 95, 108, - 105, 113, 117, 105, 100, 95, 112, 97, 105, 114, 15, 118, 101, 114, 105, 102, 121, 95, - 114, 101, 115, 101, 114, 118, 101, 115, 13, 112, 111, 111, 108, 95, 114, 101, 115, 101, - 114, 118, 101, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 205, + 1, 4, 186, 1, 8, 5, 194, 1, 243, 1, 7, 181, 3, 250, 3, 8, 175, 7, + 64, 6, 239, 7, 76, 16, 187, 8, 77, 10, 136, 9, 27, 12, 163, 9, 177, 3, + 13, 212, 12, 10, 0, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, + 0, 7, 0, 8, 8, 0, 1, 9, 6, 0, 2, 12, 7, 1, 0, 1, 7, 13, + 8, 0, 1, 22, 11, 0, 1, 24, 0, 0, 2, 26, 2, 0, 3, 28, 7, 1, + 0, 0, 6, 30, 7, 0, 0, 10, 0, 1, 0, 1, 0, 11, 2, 3, 0, 1, + 0, 14, 4, 5, 0, 1, 0, 15, 4, 1, 0, 1, 0, 16, 6, 1, 0, 1, + 0, 17, 7, 1, 0, 1, 1, 25, 8, 9, 0, 1, 7, 25, 10, 1, 0, 1, + 2, 27, 2, 12, 0, 1, 3, 29, 1, 14, 1, 0, 1, 6, 31, 15, 16, 0, + 1, 4, 32, 17, 1, 0, 1, 1, 33, 18, 3, 0, 1, 1, 34, 20, 21, 0, + 1, 7, 35, 22, 23, 0, 1, 5, 36, 25, 26, 0, 1, 4, 37, 29, 30, 1, + 8, 1, 4, 38, 31, 9, 1, 8, 1, 7, 16, 32, 9, 0, 1, 4, 39, 33, + 1, 0, 1, 7, 40, 35, 36, 1, 8, 1, 9, 13, 16, 28, 17, 28, 20, 34, + 6, 6, 12, 6, 8, 1, 6, 8, 1, 3, 3, 1, 0, 2, 6, 12, 10, 2, + 1, 8, 1, 2, 6, 12, 1, 3, 11, 2, 1, 8, 3, 8, 1, 8, 1, 4, + 6, 12, 6, 12, 3, 1, 3, 11, 2, 1, 8, 3, 3, 3, 2, 6, 8, 1, + 3, 1, 8, 5, 4, 6, 12, 8, 5, 8, 5, 1, 2, 8, 6, 6, 8, 6, + 1, 8, 6, 1, 4, 1, 11, 7, 1, 9, 0, 1, 10, 2, 1, 8, 8, 7, + 6, 8, 6, 11, 7, 1, 4, 8, 8, 8, 8, 2, 8, 8, 8, 8, 1, 6, + 8, 6, 2, 8, 1, 8, 1, 1, 6, 8, 1, 1, 11, 2, 1, 8, 4, 4, + 6, 12, 11, 2, 1, 8, 4, 11, 2, 1, 8, 4, 1, 1, 11, 2, 1, 8, + 3, 5, 11, 2, 1, 8, 3, 11, 2, 1, 8, 4, 8, 1, 11, 2, 1, 8, + 4, 8, 1, 1, 6, 12, 1, 5, 8, 11, 2, 1, 8, 4, 6, 8, 1, 8, + 5, 6, 8, 0, 6, 8, 1, 11, 2, 1, 8, 4, 8, 5, 8, 5, 1, 8, + 4, 2, 5, 11, 2, 1, 9, 0, 1, 3, 3, 6, 12, 11, 2, 1, 9, 0, + 3, 3, 6, 12, 11, 2, 1, 8, 3, 8, 5, 2, 5, 8, 5, 1, 8, 3, + 1, 11, 2, 1, 9, 0, 2, 3, 3, 22, 108, 105, 113, 117, 105, 100, 105, 116, + 121, 95, 112, 111, 111, 108, 95, 119, 114, 97, 112, 112, 101, 114, 14, 102, 117, 110, + 103, 105, 98, 108, 101, 95, 97, 115, 115, 101, 116, 6, 111, 98, 106, 101, 99, 116, + 6, 111, 112, 116, 105, 111, 110, 22, 112, 114, 105, 109, 97, 114, 121, 95, 102, 117, + 110, 103, 105, 98, 108, 101, 95, 115, 116, 111, 114, 101, 6, 115, 105, 103, 110, 101, + 114, 6, 115, 116, 114, 105, 110, 103, 14, 108, 105, 113, 117, 105, 100, 105, 116, 121, + 95, 112, 111, 111, 108, 9, 65, 100, 100, 114, 101, 115, 115, 101, 115, 7, 77, 105, + 110, 116, 82, 101, 102, 13, 97, 100, 100, 95, 108, 105, 113, 117, 105, 100, 105, 116, + 121, 21, 99, 114, 101, 97, 116, 101, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, + 97, 115, 115, 101, 116, 6, 79, 98, 106, 101, 99, 116, 13, 76, 105, 113, 117, 105, + 100, 105, 116, 121, 80, 111, 111, 108, 11, 99, 114, 101, 97, 116, 101, 95, 112, 111, + 111, 108, 22, 105, 110, 105, 116, 105, 97, 108, 105, 122, 101, 95, 108, 105, 113, 117, + 105, 100, 95, 112, 97, 105, 114, 4, 115, 119, 97, 112, 15, 118, 101, 114, 105, 102, + 121, 95, 114, 101, 115, 101, 114, 118, 101, 115, 4, 112, 111, 111, 108, 12, 116, 111, + 107, 101, 110, 95, 49, 95, 109, 105, 110, 116, 12, 116, 111, 107, 101, 110, 95, 50, + 95, 109, 105, 110, 116, 7, 116, 111, 107, 101, 110, 95, 49, 8, 77, 101, 116, 97, + 100, 97, 116, 97, 7, 116, 111, 107, 101, 110, 95, 50, 13, 70, 117, 110, 103, 105, + 98, 108, 101, 65, 115, 115, 101, 116, 4, 109, 105, 110, 116, 14, 67, 111, 110, 115, + 116, 114, 117, 99, 116, 111, 114, 82, 101, 102, 19, 99, 114, 101, 97, 116, 101, 95, + 110, 97, 109, 101, 100, 95, 111, 98, 106, 101, 99, 116, 6, 79, 112, 116, 105, 111, + 110, 4, 110, 111, 110, 101, 6, 83, 116, 114, 105, 110, 103, 4, 117, 116, 102, 56, + 43, 99, 114, 101, 97, 116, 101, 95, 112, 114, 105, 109, 97, 114, 121, 95, 115, 116, + 111, 114, 101, 95, 101, 110, 97, 98, 108, 101, 100, 95, 102, 117, 110, 103, 105, 98, + 108, 101, 95, 97, 115, 115, 101, 116, 17, 103, 101, 110, 101, 114, 97, 116, 101, 95, + 109, 105, 110, 116, 95, 114, 101, 102, 17, 109, 105, 110, 116, 95, 114, 101, 102, 95, + 109, 101, 116, 97, 100, 97, 116, 97, 6, 99, 114, 101, 97, 116, 101, 10, 97, 100, + 100, 114, 101, 115, 115, 95, 111, 102, 7, 98, 97, 108, 97, 110, 99, 101, 8, 119, + 105, 116, 104, 100, 114, 97, 119, 7, 100, 101, 112, 111, 115, 105, 116, 13, 112, 111, + 111, 108, 95, 114, 101, 115, 101, 114, 118, 101, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 32, 0, 0, + 0, 0, 0, 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 205, 10, 2, 1, 0, 10, 2, - 6, 5, 116, 101, 115, 116, 49, 10, 2, 6, 5, 116, 101, 115, 116, 50, 20, 99, - 111, 109, 112, 105, 108, 97, 116, 105, 111, 110, 95, 109, 101, 116, 97, 100, 97, 116, - 97, 9, 0, 3, 50, 46, 48, 3, 50, 46, 49, 18, 97, 112, 116, 111, 115, 58, - 58, 109, 101, 116, 97, 100, 97, 116, 97, 95, 118, 49, 57, 2, 1, 0, 0, 0, - 0, 0, 0, 0, 20, 69, 65, 68, 68, 82, 69, 83, 83, 69, 83, 95, 78, 79, - 84, 95, 70, 79, 85, 78, 68, 0, 2, 0, 0, 0, 0, 0, 0, 0, 14, 69, - 78, 79, 84, 95, 80, 85, 66, 76, 73, 83, 72, 69, 82, 0, 0, 0, 0, 2, - 5, 2, 11, 1, 1, 8, 2, 7, 8, 3, 10, 8, 3, 11, 11, 1, 1, 8, - 4, 13, 11, 1, 1, 8, 4, 0, 1, 4, 1, 0, 12, 73, 10, 1, 17, 1, - 7, 0, 33, 4, 67, 7, 0, 41, 0, 4, 61, 7, 0, 43, 0, 12, 4, 11, - 3, 4, 53, 10, 4, 16, 0, 20, 12, 5, 10, 4, 16, 1, 12, 6, 10, 0, - 17, 1, 10, 5, 56, 0, 10, 2, 38, 4, 48, 11, 6, 1, 10, 0, 11, 5, - 11, 2, 56, 1, 12, 7, 11, 4, 16, 2, 20, 12, 8, 11, 1, 11, 8, 11, - 7, 17, 4, 12, 9, 11, 0, 17, 1, 11, 9, 17, 5, 2, 11, 6, 11, 2, - 17, 6, 12, 7, 5, 34, 10, 4, 16, 3, 20, 12, 5, 10, 4, 16, 4, 12, - 6, 5, 20, 11, 0, 1, 11, 1, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, - 39, 11, 0, 1, 11, 1, 1, 6, 2, 0, 0, 0, 0, 0, 0, 0, 39, 7, - 1, 0, 0, 15, 14, 11, 1, 11, 3, 17, 6, 11, 2, 11, 4, 17, 6, 12, - 6, 12, 7, 11, 0, 11, 7, 11, 6, 11, 5, 17, 8, 2, 9, 1, 0, 0, - 25, 35, 11, 0, 10, 1, 17, 10, 12, 2, 14, 2, 12, 3, 10, 3, 12, 4, - 56, 2, 10, 1, 17, 12, 11, 1, 17, 12, 49, 8, 7, 1, 17, 12, 7, 1, - 17, 12, 12, 5, 12, 6, 12, 7, 12, 8, 12, 9, 12, 10, 11, 4, 11, 10, - 11, 9, 11, 8, 11, 7, 11, 6, 11, 5, 17, 13, 11, 3, 17, 14, 2, 15, - 1, 0, 0, 32, 26, 10, 0, 7, 2, 17, 9, 12, 3, 10, 0, 7, 3, 17, - 9, 12, 4, 14, 3, 17, 16, 14, 4, 17, 16, 12, 5, 12, 6, 11, 0, 11, - 6, 11, 5, 11, 1, 17, 17, 11, 3, 12, 7, 11, 4, 12, 8, 11, 7, 11, - 8, 2, 18, 1, 4, 0, 34, 50, 10, 0, 17, 1, 7, 0, 33, 4, 46, 10, - 0, 10, 1, 17, 15, 12, 2, 12, 3, 12, 4, 14, 3, 14, 2, 12, 7, 12, - 8, 10, 0, 11, 8, 11, 7, 6, 0, 225, 245, 5, 0, 0, 0, 0, 6, 0, - 194, 235, 11, 0, 0, 0, 0, 10, 1, 17, 7, 11, 1, 4, 25, 5, 29, 10, - 4, 6, 0, 225, 245, 5, 0, 0, 0, 0, 6, 0, 194, 235, 11, 0, 0, 0, - 0, 17, 19, 14, 3, 17, 16, 14, 2, 17, 16, 12, 9, 12, 10, 11, 4, 11, - 3, 11, 2, 11, 10, 11, 9, 18, 0, 12, 11, 11, 0, 11, 11, 45, 0, 2, - 11, 0, 1, 6, 2, 0, 0, 0, 0, 0, 0, 0, 39, 19, 0, 0, 0, 6, - 15, 11, 0, 56, 3, 12, 3, 11, 1, 33, 4, 13, 11, 3, 11, 2, 33, 4, - 11, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 39, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 39, 0, 3, 0, 1, 0, 0, 0, 4, 0, 2, 0, + 0, 0, 1, 3, 8, 1, 0, 0, 0, 0, 0, 0, 0, 3, 8, 2, 0, 0, + 0, 0, 0, 0, 0, 10, 2, 1, 0, 10, 2, 6, 5, 116, 101, 115, 116, 49, + 10, 2, 6, 5, 116, 101, 115, 116, 50, 5, 32, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 171, 205, 18, 97, 112, 116, 111, 115, 58, 58, 109, 101, 116, + 97, 100, 97, 116, 97, 95, 118, 49, 57, 2, 1, 0, 0, 0, 0, 0, 0, 0, + 20, 69, 65, 68, 68, 82, 69, 83, 83, 69, 83, 95, 78, 79, 84, 95, 70, 79, + 85, 78, 68, 0, 2, 0, 0, 0, 0, 0, 0, 0, 14, 69, 78, 79, 84, 95, + 80, 85, 66, 76, 73, 83, 72, 69, 82, 0, 0, 0, 0, 2, 5, 18, 11, 2, + 1, 8, 3, 19, 8, 1, 20, 8, 1, 21, 11, 2, 1, 8, 4, 23, 11, 2, + 1, 8, 4, 0, 1, 0, 0, 1, 10, 11, 0, 11, 1, 11, 3, 17, 6, 11, + 2, 11, 4, 17, 6, 11, 5, 17, 7, 2, 1, 1, 0, 0, 11, 21, 11, 0, + 10, 1, 17, 8, 12, 2, 14, 2, 12, 3, 10, 3, 56, 0, 10, 1, 17, 10, + 11, 1, 17, 10, 49, 8, 7, 2, 17, 10, 7, 2, 17, 10, 17, 11, 11, 3, + 17, 12, 2, 2, 1, 0, 0, 19, 18, 10, 0, 7, 3, 17, 1, 12, 2, 10, + 0, 7, 4, 17, 1, 12, 3, 11, 0, 14, 2, 17, 13, 14, 3, 17, 13, 11, + 1, 17, 14, 11, 2, 11, 3, 2, 3, 1, 4, 0, 24, 45, 10, 0, 17, 15, + 7, 5, 33, 4, 6, 5, 10, 11, 0, 1, 7, 1, 39, 10, 0, 10, 1, 17, + 2, 12, 6, 12, 4, 12, 2, 10, 0, 14, 4, 14, 6, 6, 0, 225, 245, 5, + 0, 0, 0, 0, 6, 0, 194, 235, 11, 0, 0, 0, 0, 10, 1, 17, 0, 11, + 1, 32, 4, 30, 10, 2, 6, 0, 225, 245, 5, 0, 0, 0, 0, 6, 0, 194, + 235, 11, 0, 0, 0, 0, 17, 5, 14, 4, 17, 13, 12, 3, 14, 6, 17, 13, + 12, 5, 11, 0, 11, 2, 11, 4, 11, 6, 11, 3, 11, 5, 18, 0, 45, 0, + 2, 4, 1, 4, 1, 0, 27, 79, 10, 1, 17, 15, 7, 5, 33, 4, 6, 5, + 12, 11, 0, 1, 11, 1, 1, 7, 1, 39, 7, 5, 41, 0, 4, 16, 5, 22, + 11, 0, 1, 11, 1, 1, 7, 0, 39, 7, 5, 43, 0, 12, 7, 11, 3, 4, + 35, 10, 7, 16, 0, 20, 10, 7, 16, 1, 12, 5, 12, 4, 5, 42, 10, 7, + 16, 2, 20, 10, 7, 16, 3, 12, 5, 12, 4, 11, 4, 11, 5, 12, 8, 12, + 9, 10, 0, 17, 15, 10, 9, 56, 1, 10, 2, 38, 4, 61, 11, 8, 1, 10, + 0, 11, 9, 11, 2, 56, 2, 12, 6, 5, 65, 11, 8, 11, 2, 17, 6, 12, + 6, 11, 6, 12, 11, 11, 1, 11, 7, 16, 4, 20, 11, 11, 17, 18, 12, 10, + 11, 0, 17, 15, 11, 10, 17, 19, 2, 5, 0, 0, 0, 30, 17, 11, 0, 56, + 3, 12, 3, 11, 1, 33, 4, 7, 5, 9, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 39, 11, 3, 11, 2, 33, 4, 14, 5, 16, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 39, 2, 0, 3, 0, 1, 0, 4, 0, 2, 0, 0, 0, ] }); #[rustfmt::skip] pub static MODULE_COMPLEX_SMART_TABLE_PICTURE: Lazy> = Lazy::new(|| { vec![ - 161, 28, 235, 11, 7, 0, 0, 10, 11, 1, 0, 10, 2, 10, 20, 3, 30, 65, - 4, 95, 8, 5, 103, 79, 7, 182, 1, 226, 1, 8, 152, 3, 64, 16, 216, 3, - 190, 1, 10, 150, 5, 15, 12, 165, 5, 144, 2, 13, 181, 7, 4, 0, 0, 1, - 6, 1, 8, 1, 12, 1, 15, 0, 1, 8, 0, 0, 3, 8, 0, 1, 5, 4, - 2, 0, 0, 0, 0, 4, 17, 2, 0, 0, 7, 0, 1, 0, 1, 2, 9, 5, - 6, 1, 0, 1, 1, 10, 8, 1, 2, 3, 2, 1, 0, 11, 10, 1, 0, 1, - 3, 13, 10, 2, 0, 1, 1, 14, 1, 11, 2, 7, 4, 1, 4, 16, 2, 12, - 0, 1, 4, 18, 13, 14, 0, 1, 4, 19, 13, 2, 0, 1, 0, 20, 10, 1, - 0, 1, 1, 3, 1, 4, 2, 7, 5, 7, 4, 5, 3, 10, 3, 10, 2, 0, - 1, 5, 1, 3, 1, 2, 1, 6, 10, 9, 0, 1, 1, 2, 14, 2, 3, 7, - 11, 2, 2, 9, 0, 9, 1, 9, 0, 9, 1, 5, 7, 8, 1, 3, 14, 2, - 3, 1, 6, 12, 1, 11, 2, 2, 9, 0, 9, 1, 1, 8, 3, 1, 6, 8, - 3, 1, 12, 6, 5, 8, 1, 8, 3, 12, 10, 5, 8, 0, 1, 8, 0, 19, - 115, 109, 97, 114, 116, 95, 116, 97, 98, 108, 101, 95, 112, 105, 99, 116, 117, 114, - 101, 11, 65, 108, 108, 80, 97, 108, 101, 116, 116, 101, 115, 3, 97, 108, 108, 7, - 80, 97, 108, 101, 116, 116, 101, 6, 112, 105, 120, 101, 108, 115, 10, 83, 109, 97, - 114, 116, 84, 97, 98, 108, 101, 11, 115, 109, 97, 114, 116, 95, 116, 97, 98, 108, - 101, 6, 117, 112, 100, 97, 116, 101, 6, 118, 101, 99, 116, 111, 114, 8, 105, 115, - 95, 101, 109, 112, 116, 121, 6, 117, 112, 115, 101, 114, 116, 6, 99, 114, 101, 97, - 116, 101, 6, 115, 105, 103, 110, 101, 114, 10, 97, 100, 100, 114, 101, 115, 115, 95, - 111, 102, 3, 110, 101, 119, 6, 111, 98, 106, 101, 99, 116, 13, 99, 114, 101, 97, - 116, 101, 95, 111, 98, 106, 101, 99, 116, 14, 67, 111, 110, 115, 116, 114, 117, 99, - 116, 111, 114, 82, 101, 102, 15, 103, 101, 110, 101, 114, 97, 116, 101, 95, 115, 105, - 103, 110, 101, 114, 28, 97, 100, 100, 114, 101, 115, 115, 95, 102, 114, 111, 109, 95, - 99, 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, 95, 114, 101, 102, 11, 105, 110, - 105, 116, 95, 109, 111, 100, 117, 108, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 161, 28, 235, 11, 7, 0, 0, 10, 12, 1, 0, 10, 2, 10, 20, 3, 30, 65, + 4, 95, 8, 5, 103, 74, 7, 177, 1, 226, 1, 8, 147, 3, 64, 6, 211, 3, + 10, 16, 221, 3, 159, 1, 10, 252, 4, 15, 12, 139, 5, 254, 1, 13, 137, 7, + 4, 0, 0, 1, 1, 1, 2, 1, 3, 1, 4, 0, 5, 8, 0, 0, 6, 8, + 0, 3, 12, 4, 2, 0, 0, 0, 0, 1, 13, 2, 0, 0, 7, 0, 1, 0, + 1, 0, 8, 0, 1, 0, 1, 0, 9, 2, 1, 0, 1, 2, 14, 0, 4, 0, + 1, 3, 15, 1, 6, 2, 7, 4, 1, 1, 16, 4, 7, 0, 1, 1, 17, 8, + 9, 0, 1, 1, 18, 8, 4, 0, 1, 4, 19, 13, 14, 1, 0, 1, 3, 20, + 15, 1, 2, 3, 2, 1, 4, 5, 8, 11, 8, 12, 9, 5, 1, 6, 12, 0, + 4, 5, 3, 10, 3, 10, 2, 5, 5, 8, 3, 12, 8, 1, 10, 5, 1, 5, + 2, 14, 2, 1, 11, 2, 2, 9, 0, 9, 1, 1, 8, 3, 1, 6, 8, 3, + 1, 12, 5, 2, 3, 14, 3, 7, 8, 1, 1, 3, 1, 2, 1, 6, 10, 9, + 0, 1, 1, 3, 7, 11, 2, 2, 9, 0, 9, 1, 9, 0, 9, 1, 19, 115, + 109, 97, 114, 116, 95, 116, 97, 98, 108, 101, 95, 112, 105, 99, 116, 117, 114, 101, + 6, 111, 98, 106, 101, 99, 116, 6, 115, 105, 103, 110, 101, 114, 11, 115, 109, 97, + 114, 116, 95, 116, 97, 98, 108, 101, 6, 118, 101, 99, 116, 111, 114, 11, 65, 108, + 108, 80, 97, 108, 101, 116, 116, 101, 115, 7, 80, 97, 108, 101, 116, 116, 101, 6, + 99, 114, 101, 97, 116, 101, 11, 105, 110, 105, 116, 95, 109, 111, 100, 117, 108, 101, + 6, 117, 112, 100, 97, 116, 101, 3, 97, 108, 108, 6, 112, 105, 120, 101, 108, 115, + 10, 83, 109, 97, 114, 116, 84, 97, 98, 108, 101, 14, 67, 111, 110, 115, 116, 114, + 117, 99, 116, 111, 114, 82, 101, 102, 10, 97, 100, 100, 114, 101, 115, 115, 95, 111, + 102, 3, 110, 101, 119, 13, 99, 114, 101, 97, 116, 101, 95, 111, 98, 106, 101, 99, + 116, 15, 103, 101, 110, 101, 114, 97, 116, 101, 95, 115, 105, 103, 110, 101, 114, 28, + 97, 100, 100, 114, 101, 115, 115, 95, 102, 114, 111, 109, 95, 99, 111, 110, 115, 116, + 114, 117, 99, 116, 111, 114, 95, 114, 101, 102, 8, 105, 115, 95, 101, 109, 112, 116, + 121, 6, 117, 112, 115, 101, 114, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 20, 99, 111, 109, 112, 105, 108, 97, 116, 105, 111, 110, 95, 109, 101, 116, 97, - 100, 97, 116, 97, 9, 0, 3, 50, 46, 48, 3, 50, 46, 49, 18, 97, 112, 116, - 111, 115, 58, 58, 109, 101, 116, 97, 100, 97, 116, 97, 95, 118, 49, 138, 1, 1, - 1, 0, 0, 0, 0, 0, 0, 0, 21, 69, 95, 73, 78, 68, 69, 88, 95, 79, - 85, 84, 95, 79, 70, 95, 66, 79, 85, 78, 68, 83, 68, 84, 104, 101, 32, 99, - 97, 108, 108, 101, 114, 32, 116, 114, 105, 101, 100, 32, 116, 111, 32, 109, 117, 116, - 97, 116, 101, 32, 97, 110, 32, 105, 116, 101, 109, 32, 111, 117, 116, 115, 105, 100, - 101, 32, 116, 104, 101, 32, 98, 111, 117, 110, 100, 115, 32, 111, 102, 32, 116, 104, - 101, 32, 118, 101, 99, 116, 111, 114, 46, 1, 7, 80, 97, 108, 101, 116, 116, 101, - 1, 3, 1, 24, 48, 120, 49, 58, 58, 111, 98, 106, 101, 99, 116, 58, 58, 79, - 98, 106, 101, 99, 116, 71, 114, 111, 117, 112, 0, 0, 2, 1, 2, 10, 5, 1, - 2, 1, 4, 11, 2, 2, 14, 2, 0, 1, 4, 2, 0, 1, 9, 61, 11, 0, - 43, 0, 16, 0, 11, 1, 66, 2, 20, 42, 1, 12, 4, 14, 2, 65, 3, 14, - 3, 65, 4, 33, 4, 57, 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 14, - 2, 65, 3, 12, 5, 10, 1, 10, 5, 35, 4, 54, 14, 2, 56, 0, 3, 50, - 13, 2, 69, 3, 76, 12, 6, 14, 3, 56, 1, 3, 46, 13, 3, 69, 4, 12, - 7, 10, 4, 15, 1, 11, 6, 11, 7, 56, 2, 11, 1, 6, 1, 0, 0, 0, - 0, 0, 0, 0, 22, 12, 1, 5, 19, 11, 4, 1, 6, 1, 0, 0, 0, 0, - 0, 0, 0, 39, 11, 4, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 39, 11, - 4, 1, 2, 11, 4, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 39, 3, 1, - 4, 1, 0, 15, 40, 10, 0, 17, 4, 12, 1, 56, 3, 18, 1, 12, 2, 10, - 1, 17, 6, 12, 3, 14, 3, 17, 7, 12, 4, 14, 4, 11, 2, 45, 1, 10, - 1, 41, 0, 3, 31, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 5, 13, - 5, 14, 3, 17, 8, 68, 2, 11, 5, 18, 0, 12, 6, 11, 0, 11, 6, 45, - 0, 2, 11, 0, 1, 11, 1, 42, 0, 15, 0, 14, 3, 17, 8, 68, 2, 5, - 30, 9, 0, 0, 0, 16, 7, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 18, - 0, 12, 1, 11, 0, 11, 1, 45, 0, 2, 0, 0, 1, 0, 0, + 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 3, 8, 1, 0, 0, 0, 0, 0, 0, 0, 18, 97, 112, 116, 111, 115, 58, 58, + 109, 101, 116, 97, 100, 97, 116, 97, 95, 118, 49, 138, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 21, 69, 95, 73, 78, 68, 69, 88, 95, 79, 85, 84, 95, 79, + 70, 95, 66, 79, 85, 78, 68, 83, 68, 84, 104, 101, 32, 99, 97, 108, 108, 101, + 114, 32, 116, 114, 105, 101, 100, 32, 116, 111, 32, 109, 117, 116, 97, 116, 101, 32, + 97, 110, 32, 105, 116, 101, 109, 32, 111, 117, 116, 115, 105, 100, 101, 32, 116, 104, + 101, 32, 98, 111, 117, 110, 100, 115, 32, 111, 102, 32, 116, 104, 101, 32, 118, 101, + 99, 116, 111, 114, 46, 1, 7, 80, 97, 108, 101, 116, 116, 101, 1, 3, 1, 24, + 48, 120, 49, 58, 58, 111, 98, 106, 101, 99, 116, 58, 58, 79, 98, 106, 101, 99, + 116, 71, 114, 111, 117, 112, 0, 0, 2, 1, 10, 10, 5, 1, 2, 1, 11, 11, + 2, 2, 14, 2, 0, 1, 4, 1, 0, 3, 39, 10, 0, 17, 3, 12, 1, 56, + 0, 18, 1, 12, 4, 10, 1, 17, 5, 12, 2, 14, 2, 17, 6, 12, 3, 14, + 3, 11, 4, 45, 1, 10, 1, 41, 0, 32, 4, 30, 64, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 5, 13, 5, 14, 2, 17, 7, 68, 4, 11, 0, 11, 5, + 18, 0, 45, 0, 5, 38, 11, 0, 1, 11, 1, 42, 0, 15, 0, 14, 2, 17, + 7, 68, 4, 2, 1, 0, 0, 0, 1, 5, 11, 0, 64, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 45, 0, 2, 2, 1, 4, 2, 0, 1, 10, 67, 11, + 0, 43, 0, 16, 0, 11, 1, 66, 4, 20, 42, 1, 12, 8, 14, 2, 65, 11, + 14, 3, 65, 12, 33, 4, 15, 5, 19, 11, 8, 1, 7, 0, 39, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 12, 5, 14, 2, 65, 11, 12, 7, 10, 5, 10, 7, + 35, 4, 64, 5, 29, 14, 2, 56, 1, 32, 4, 34, 5, 38, 11, 8, 1, 7, + 0, 39, 13, 2, 69, 11, 76, 12, 6, 14, 3, 56, 2, 32, 4, 47, 5, 51, + 11, 8, 1, 7, 0, 39, 13, 3, 69, 12, 12, 4, 10, 8, 15, 1, 11, 6, + 11, 4, 56, 3, 11, 5, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 12, 5, + 5, 24, 11, 8, 1, 2, 0, 0, 1, 0, 0, ] }); #[rustfmt::skip] pub static MODULE_COMPLEX_VECTOR_PICTURE: Lazy> = Lazy::new(|| { vec![ - 161, 28, 235, 11, 7, 0, 0, 10, 10, 1, 0, 8, 2, 8, 16, 3, 24, 54, - 5, 78, 71, 7, 149, 1, 209, 1, 8, 230, 2, 64, 16, 166, 3, 232, 1, 10, - 142, 5, 22, 12, 164, 5, 132, 3, 13, 168, 8, 10, 0, 0, 1, 10, 1, 13, - 1, 15, 0, 1, 8, 0, 0, 3, 8, 0, 0, 5, 7, 0, 3, 17, 2, 0, - 0, 9, 0, 1, 0, 1, 1, 11, 4, 4, 0, 1, 0, 12, 6, 1, 0, 1, - 2, 14, 7, 2, 0, 1, 3, 16, 2, 8, 0, 1, 3, 18, 9, 10, 0, 1, - 3, 19, 9, 2, 0, 1, 0, 20, 7, 1, 0, 1, 0, 21, 13, 1, 0, 1, - 6, 5, 3, 3, 2, 2, 2, 0, 1, 5, 1, 8, 2, 1, 3, 2, 7, 8, - 1, 3, 2, 6, 12, 3, 1, 6, 12, 1, 8, 3, 1, 6, 8, 3, 1, 12, - 10, 5, 8, 2, 10, 8, 2, 3, 3, 8, 1, 8, 3, 12, 10, 5, 8, 0, - 1, 8, 0, 3, 5, 3, 3, 5, 7, 8, 1, 3, 6, 8, 2, 1, 1, 14, - 118, 101, 99, 116, 111, 114, 95, 112, 105, 99, 116, 117, 114, 101, 11, 65, 108, 108, - 80, 97, 108, 101, 116, 116, 101, 115, 3, 97, 108, 108, 7, 80, 97, 108, 101, 116, - 116, 101, 3, 118, 101, 99, 5, 67, 111, 108, 111, 114, 1, 114, 1, 103, 1, 98, - 6, 117, 112, 100, 97, 116, 101, 5, 101, 114, 114, 111, 114, 16, 105, 110, 118, 97, - 108, 105, 100, 95, 97, 114, 103, 117, 109, 101, 110, 116, 6, 99, 114, 101, 97, 116, - 101, 6, 115, 105, 103, 110, 101, 114, 10, 97, 100, 100, 114, 101, 115, 115, 95, 111, - 102, 6, 111, 98, 106, 101, 99, 116, 13, 99, 114, 101, 97, 116, 101, 95, 111, 98, - 106, 101, 99, 116, 14, 67, 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, 82, 101, - 102, 15, 103, 101, 110, 101, 114, 97, 116, 101, 95, 115, 105, 103, 110, 101, 114, 28, - 97, 100, 100, 114, 101, 115, 115, 95, 102, 114, 111, 109, 95, 99, 111, 110, 115, 116, - 114, 117, 99, 116, 111, 114, 95, 114, 101, 102, 11, 105, 110, 105, 116, 95, 109, 111, - 100, 117, 108, 101, 5, 99, 104, 101, 99, 107, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 20, 99, 111, 109, 112, 105, 108, 97, 116, 105, 111, 110, 95, 109, 101, 116, - 97, 100, 97, 116, 97, 9, 0, 3, 50, 46, 48, 3, 50, 46, 49, 18, 97, 112, - 116, 111, 115, 58, 58, 109, 101, 116, 97, 100, 97, 116, 97, 95, 118, 49, 180, 1, - 2, 1, 0, 0, 0, 0, 0, 0, 0, 21, 69, 95, 73, 78, 68, 69, 88, 95, - 79, 85, 84, 95, 79, 70, 95, 66, 79, 85, 78, 68, 83, 68, 84, 104, 101, 32, - 99, 97, 108, 108, 101, 114, 32, 116, 114, 105, 101, 100, 32, 116, 111, 32, 109, 117, - 116, 97, 116, 101, 32, 97, 110, 32, 105, 116, 101, 109, 32, 111, 117, 116, 115, 105, - 100, 101, 32, 116, 104, 101, 32, 98, 111, 117, 110, 100, 115, 32, 111, 102, 32, 116, - 104, 101, 32, 118, 101, 99, 116, 111, 114, 46, 3, 0, 0, 0, 0, 0, 0, 0, - 11, 69, 95, 77, 65, 88, 95, 67, 79, 76, 79, 82, 21, 67, 111, 108, 111, 114, - 32, 99, 104, 101, 99, 107, 101, 100, 32, 105, 115, 32, 109, 97, 120, 46, 1, 7, - 80, 97, 108, 101, 116, 116, 101, 1, 3, 1, 24, 48, 120, 49, 58, 58, 111, 98, - 106, 101, 99, 116, 58, 58, 79, 98, 106, 101, 99, 116, 71, 114, 111, 117, 112, 0, - 0, 2, 1, 2, 10, 5, 1, 2, 1, 4, 10, 8, 2, 2, 2, 3, 6, 2, - 7, 2, 8, 2, 0, 1, 4, 2, 0, 1, 5, 33, 11, 0, 43, 0, 16, 0, - 11, 1, 66, 2, 20, 42, 1, 12, 6, 10, 2, 12, 1, 10, 6, 16, 1, 65, - 3, 12, 7, 11, 1, 11, 7, 35, 4, 28, 11, 3, 11, 4, 11, 5, 18, 2, - 11, 6, 15, 1, 11, 2, 67, 3, 21, 2, 11, 6, 1, 6, 1, 0, 0, 0, - 0, 0, 0, 0, 17, 1, 39, 2, 1, 4, 1, 0, 11, 61, 10, 0, 17, 3, - 12, 2, 49, 124, 49, 213, 49, 37, 18, 2, 12, 3, 64, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 12, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, 5, 10, - 5, 10, 1, 35, 4, 24, 13, 4, 10, 3, 68, 3, 11, 5, 6, 1, 0, 0, - 0, 0, 0, 0, 0, 22, 12, 5, 5, 12, 11, 4, 18, 1, 12, 7, 10, 2, - 17, 4, 12, 8, 14, 8, 17, 5, 12, 9, 14, 9, 11, 7, 45, 1, 10, 2, - 41, 0, 3, 52, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 10, 13, 10, - 14, 8, 17, 6, 68, 2, 11, 10, 18, 0, 12, 11, 11, 0, 11, 11, 45, 0, - 2, 11, 0, 1, 11, 2, 42, 0, 15, 0, 14, 8, 17, 6, 68, 2, 5, 51, - 7, 0, 0, 0, 12, 7, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, - 12, 1, 11, 0, 11, 1, 45, 0, 2, 8, 1, 4, 2, 0, 1, 14, 62, 11, - 0, 43, 0, 16, 0, 11, 1, 66, 2, 20, 42, 1, 12, 3, 10, 2, 12, 1, - 10, 3, 16, 1, 65, 3, 12, 4, 11, 1, 11, 4, 35, 4, 57, 11, 3, 16, - 1, 11, 2, 66, 3, 12, 5, 10, 5, 16, 2, 20, 49, 255, 34, 4, 50, 8, - 12, 6, 11, 6, 4, 43, 11, 5, 1, 8, 12, 7, 11, 7, 4, 40, 2, 6, - 3, 0, 0, 0, 0, 0, 0, 0, 17, 1, 39, 11, 5, 16, 3, 20, 49, 255, - 34, 12, 7, 5, 37, 10, 5, 16, 4, 20, 49, 255, 34, 12, 6, 5, 31, 11, - 3, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 17, 1, 39, 0, 0, 1, 0, - 2, 0, 2, 2, 2, 1, 0, + 161, 28, 235, 11, 7, 0, 0, 10, 11, 1, 0, 8, 2, 8, 16, 3, 24, 54, + 5, 78, 62, 7, 140, 1, 209, 1, 8, 221, 2, 64, 6, 157, 3, 20, 16, 177, + 3, 201, 1, 10, 250, 4, 22, 12, 144, 5, 225, 2, 13, 241, 7, 10, 0, 0, + 1, 1, 1, 2, 1, 3, 0, 4, 8, 0, 0, 5, 7, 0, 0, 6, 8, 0, + 2, 17, 2, 0, 0, 7, 0, 1, 0, 1, 0, 8, 2, 1, 0, 1, 0, 9, + 3, 1, 0, 1, 0, 10, 4, 1, 0, 1, 1, 16, 8, 8, 0, 1, 3, 18, + 3, 6, 0, 1, 2, 19, 6, 10, 0, 1, 2, 20, 11, 12, 0, 1, 2, 21, + 11, 6, 0, 1, 3, 5, 3, 3, 0, 2, 6, 12, 3, 1, 6, 12, 6, 5, + 3, 3, 2, 2, 2, 5, 3, 1, 1, 6, 8, 1, 7, 8, 2, 1, 5, 1, + 8, 1, 1, 3, 7, 5, 8, 3, 3, 12, 8, 2, 10, 8, 1, 10, 5, 1, + 8, 3, 1, 6, 8, 3, 1, 12, 1, 7, 8, 2, 14, 118, 101, 99, 116, 111, + 114, 95, 112, 105, 99, 116, 117, 114, 101, 5, 101, 114, 114, 111, 114, 6, 111, 98, + 106, 101, 99, 116, 6, 115, 105, 103, 110, 101, 114, 11, 65, 108, 108, 80, 97, 108, + 101, 116, 116, 101, 115, 5, 67, 111, 108, 111, 114, 7, 80, 97, 108, 101, 116, 116, + 101, 5, 99, 104, 101, 99, 107, 6, 99, 114, 101, 97, 116, 101, 11, 105, 110, 105, + 116, 95, 109, 111, 100, 117, 108, 101, 6, 117, 112, 100, 97, 116, 101, 3, 97, 108, + 108, 1, 114, 1, 103, 1, 98, 3, 118, 101, 99, 16, 105, 110, 118, 97, 108, 105, + 100, 95, 97, 114, 103, 117, 109, 101, 110, 116, 14, 67, 111, 110, 115, 116, 114, 117, + 99, 116, 111, 114, 82, 101, 102, 10, 97, 100, 100, 114, 101, 115, 115, 95, 111, 102, + 13, 99, 114, 101, 97, 116, 101, 95, 111, 98, 106, 101, 99, 116, 15, 103, 101, 110, + 101, 114, 97, 116, 101, 95, 115, 105, 103, 110, 101, 114, 28, 97, 100, 100, 114, 101, + 115, 115, 95, 102, 114, 111, 109, 95, 99, 111, 110, 115, 116, 114, 117, 99, 116, 111, + 114, 95, 114, 101, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, + 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 8, 1, + 0, 0, 0, 0, 0, 0, 0, 3, 8, 3, 0, 0, 0, 0, 0, 0, 0, 18, + 97, 112, 116, 111, 115, 58, 58, 109, 101, 116, 97, 100, 97, 116, 97, 95, 118, 49, + 180, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 21, 69, 95, 73, 78, 68, 69, + 88, 95, 79, 85, 84, 95, 79, 70, 95, 66, 79, 85, 78, 68, 83, 68, 84, 104, + 101, 32, 99, 97, 108, 108, 101, 114, 32, 116, 114, 105, 101, 100, 32, 116, 111, 32, + 109, 117, 116, 97, 116, 101, 32, 97, 110, 32, 105, 116, 101, 109, 32, 111, 117, 116, + 115, 105, 100, 101, 32, 116, 104, 101, 32, 98, 111, 117, 110, 100, 115, 32, 111, 102, + 32, 116, 104, 101, 32, 118, 101, 99, 116, 111, 114, 46, 3, 0, 0, 0, 0, 0, + 0, 0, 11, 69, 95, 77, 65, 88, 95, 67, 79, 76, 79, 82, 21, 67, 111, 108, + 111, 114, 32, 99, 104, 101, 99, 107, 101, 100, 32, 105, 115, 32, 109, 97, 120, 46, + 1, 7, 80, 97, 108, 101, 116, 116, 101, 1, 3, 1, 24, 48, 120, 49, 58, 58, + 111, 98, 106, 101, 99, 116, 58, 58, 79, 98, 106, 101, 99, 116, 71, 114, 111, 117, + 112, 0, 0, 2, 1, 11, 10, 5, 1, 2, 3, 12, 2, 13, 2, 14, 2, 2, + 2, 1, 15, 10, 8, 1, 0, 1, 4, 2, 0, 2, 5, 63, 11, 0, 43, 0, + 16, 0, 11, 1, 66, 6, 20, 42, 2, 12, 7, 10, 2, 10, 7, 16, 1, 65, + 7, 35, 4, 15, 5, 20, 11, 7, 1, 7, 0, 17, 4, 39, 11, 7, 15, 1, + 11, 2, 12, 3, 46, 11, 3, 66, 7, 12, 6, 10, 6, 16, 2, 20, 49, 255, + 34, 4, 37, 8, 12, 4, 5, 43, 10, 6, 16, 3, 20, 49, 255, 34, 12, 4, + 11, 4, 4, 50, 11, 6, 1, 8, 12, 5, 5, 56, 11, 6, 16, 4, 20, 49, + 255, 34, 12, 5, 11, 5, 4, 59, 5, 62, 7, 1, 17, 4, 39, 2, 1, 1, + 4, 1, 0, 9, 59, 10, 0, 17, 5, 12, 2, 64, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 12, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 10, 4, + 10, 1, 35, 4, 23, 5, 12, 13, 7, 49, 124, 49, 213, 49, 37, 18, 1, 68, + 7, 11, 4, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 12, 4, 5, 7, 11, + 7, 18, 2, 12, 6, 10, 2, 17, 6, 12, 3, 14, 3, 17, 7, 12, 5, 14, + 5, 11, 6, 45, 2, 10, 2, 41, 0, 32, 4, 50, 64, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 8, 13, 8, 14, 3, 17, 8, 68, 6, 11, 0, 11, 8, + 18, 0, 45, 0, 5, 58, 11, 0, 1, 11, 2, 42, 0, 15, 0, 14, 3, 17, + 8, 68, 6, 2, 2, 0, 0, 0, 1, 5, 11, 0, 64, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 45, 0, 2, 3, 1, 4, 2, 0, 2, 13, 30, 11, + 0, 43, 0, 16, 0, 11, 1, 66, 6, 20, 42, 2, 12, 6, 10, 2, 10, 6, + 16, 1, 65, 7, 35, 4, 15, 5, 20, 11, 6, 1, 7, 0, 17, 4, 39, 11, + 3, 11, 4, 11, 5, 18, 1, 11, 6, 15, 1, 11, 2, 67, 7, 21, 2, 0, + 0, 2, 0, 1, 0, 1, 1, 1, 2, 0, ] }); @@ -762,216 +754,197 @@ pub static PACKAGE_SIMPLE_METADATA: Lazy> = Lazy::new(|| { ] }); -#[rustfmt::skip] -pub static SCRIPT_SIMPLE: Lazy> = Lazy::new(|| { - vec![ - 161, 28, 235, 11, 7, 0, 0, 10, 2, 5, 0, 4, 6, 4, 34, 1, 6, 12, - 0, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 1, 3, 11, 0, 1, 2, - ] -}); - #[rustfmt::skip] pub static MODULE_SIMPLE_SIMPLE: Lazy> = Lazy::new(|| { vec![ 161, 28, 235, 11, 7, 0, 0, 10, 12, 1, 0, 16, 2, 16, 46, 3, 62, 193, - 1, 4, 255, 1, 10, 5, 137, 2, 169, 2, 7, 178, 4, 192, 4, 8, 242, 8, - 64, 6, 178, 9, 105, 16, 155, 10, 93, 10, 248, 10, 51, 12, 171, 11, 215, 15, - 13, 130, 27, 16, 0, 0, 1, 9, 1, 15, 1, 20, 1, 22, 1, 29, 1, 33, - 1, 40, 0, 1, 8, 0, 0, 3, 8, 0, 0, 5, 7, 0, 0, 6, 8, 0, - 1, 8, 4, 1, 6, 1, 0, 10, 6, 0, 0, 11, 8, 0, 2, 14, 7, 0, - 0, 17, 8, 0, 3, 19, 4, 2, 3, 1, 0, 1, 0, 21, 0, 1, 0, 1, - 4, 23, 0, 2, 0, 1, 2, 24, 3, 4, 0, 1, 0, 25, 7, 1, 0, 1, - 0, 26, 9, 1, 0, 1, 0, 27, 11, 12, 0, 1, 0, 28, 14, 1, 0, 1, - 5, 30, 0, 16, 1, 6, 1, 1, 31, 17, 1, 1, 6, 1, 0, 32, 0, 1, - 0, 1, 6, 34, 19, 19, 0, 1, 0, 35, 14, 1, 0, 1, 0, 36, 0, 1, - 0, 1, 0, 37, 0, 1, 0, 1, 0, 38, 14, 1, 0, 1, 0, 39, 23, 1, - 0, 1, 7, 41, 25, 3, 1, 0, 1, 0, 42, 14, 1, 0, 1, 0, 43, 27, - 1, 0, 1, 0, 44, 23, 1, 0, 1, 3, 45, 1, 30, 2, 3, 4, 1, 3, - 46, 31, 32, 2, 3, 2, 1, 0, 47, 34, 1, 0, 1, 0, 48, 34, 1, 0, - 1, 0, 49, 0, 1, 0, 1, 0, 50, 37, 1, 0, 1, 0, 51, 38, 1, 0, - 1, 0, 52, 0, 1, 0, 1, 0, 53, 14, 1, 0, 1, 0, 54, 41, 1, 0, - 1, 0, 55, 0, 1, 0, 1, 7, 15, 8, 15, 16, 24, 20, 29, 21, 29, 1, - 6, 12, 0, 1, 5, 1, 10, 2, 1, 8, 7, 1, 2, 4, 8, 2, 8, 6, - 7, 8, 6, 3, 2, 7, 10, 2, 6, 10, 2, 4, 3, 3, 7, 10, 2, 2, - 2, 6, 12, 10, 2, 2, 7, 10, 2, 8, 0, 4, 6, 8, 6, 6, 8, 6, - 6, 8, 1, 6, 8, 1, 1, 6, 3, 4, 6, 3, 6, 3, 6, 3, 6, 3, - 2, 6, 12, 3, 1, 8, 5, 1, 11, 4, 1, 9, 0, 2, 7, 11, 4, 1, - 9, 0, 9, 0, 5, 5, 6, 12, 8, 3, 7, 8, 3, 3, 1, 3, 4, 10, - 3, 3, 3, 10, 3, 1, 8, 1, 8, 3, 3, 3, 3, 3, 1, 1, 1, 3, - 6, 12, 3, 3, 1, 10, 3, 1, 6, 9, 0, 4, 10, 3, 3, 3, 10, 2, - 4, 6, 12, 3, 8, 7, 10, 2, 6, 7, 8, 6, 7, 3, 7, 8, 7, 7, - 10, 2, 8, 2, 8, 6, 2, 3, 3, 1, 11, 9, 2, 9, 0, 9, 1, 3, - 7, 11, 9, 2, 9, 0, 9, 1, 9, 0, 9, 1, 1, 7, 9, 1, 7, 5, - 6, 12, 8, 8, 7, 11, 9, 2, 3, 3, 3, 3, 7, 3, 2, 6, 12, 5, - 5, 8, 2, 8, 6, 10, 2, 7, 8, 6, 1, 8, 8, 2, 8, 6, 6, 8, - 6, 6, 8, 6, 3, 3, 3, 7, 8, 6, 2, 6, 12, 6, 12, 5, 6, 12, - 6, 12, 6, 12, 6, 12, 6, 12, 3, 7, 8, 6, 8, 2, 8, 6, 5, 8, - 2, 3, 8, 7, 8, 6, 7, 3, 2, 6, 12, 8, 7, 3, 8, 2, 8, 6, - 7, 8, 7, 2, 5, 7, 8, 1, 6, 115, 105, 109, 112, 108, 101, 12, 66, 121, - 116, 101, 82, 101, 115, 111, 117, 114, 99, 101, 4, 100, 97, 116, 97, 7, 67, 111, - 117, 110, 116, 101, 114, 5, 99, 111, 117, 110, 116, 4, 68, 97, 116, 97, 10, 69, - 118, 101, 110, 116, 83, 116, 111, 114, 101, 13, 115, 105, 109, 112, 108, 101, 95, 101, - 118, 101, 110, 116, 115, 11, 69, 118, 101, 110, 116, 72, 97, 110, 100, 108, 101, 5, - 101, 118, 101, 110, 116, 11, 83, 105, 109, 112, 108, 101, 69, 118, 101, 110, 116, 8, - 82, 101, 115, 111, 117, 114, 99, 101, 2, 105, 100, 4, 110, 97, 109, 101, 6, 83, - 116, 114, 105, 110, 103, 6, 115, 116, 114, 105, 110, 103, 8, 101, 118, 101, 110, 116, - 95, 105, 100, 10, 84, 97, 98, 108, 101, 83, 116, 111, 114, 101, 13, 116, 97, 98, - 108, 101, 95, 101, 110, 116, 114, 105, 101, 115, 5, 84, 97, 98, 108, 101, 5, 116, - 97, 98, 108, 101, 6, 100, 111, 117, 98, 108, 101, 6, 115, 105, 103, 110, 101, 114, - 10, 97, 100, 100, 114, 101, 115, 115, 95, 111, 102, 4, 117, 116, 102, 56, 11, 97, - 112, 112, 101, 110, 100, 95, 100, 97, 116, 97, 20, 98, 121, 116, 101, 115, 95, 109, - 97, 107, 101, 95, 111, 114, 95, 99, 104, 97, 110, 103, 101, 14, 99, 111, 112, 121, - 95, 112, 97, 115, 116, 97, 95, 114, 101, 102, 11, 101, 109, 105, 116, 95, 101, 118, - 101, 110, 116, 115, 7, 97, 99, 99, 111, 117, 110, 116, 16, 110, 101, 119, 95, 101, - 118, 101, 110, 116, 95, 104, 97, 110, 100, 108, 101, 10, 101, 109, 105, 116, 95, 101, - 118, 101, 110, 116, 11, 103, 101, 116, 95, 99, 111, 117, 110, 116, 101, 114, 5, 101, - 114, 114, 111, 114, 16, 105, 110, 118, 97, 108, 105, 100, 95, 97, 114, 103, 117, 109, - 101, 110, 116, 21, 103, 101, 116, 95, 102, 114, 111, 109, 95, 114, 97, 110, 100, 111, + 1, 4, 255, 1, 10, 5, 137, 2, 255, 1, 7, 136, 4, 192, 4, 8, 200, 8, + 64, 6, 136, 9, 115, 16, 251, 9, 62, 10, 185, 10, 51, 12, 236, 10, 251, 14, + 13, 231, 25, 16, 0, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, + 1, 7, 0, 8, 8, 0, 0, 9, 8, 0, 0, 10, 7, 0, 0, 11, 8, 0, + 0, 12, 8, 0, 0, 13, 6, 0, 0, 14, 8, 0, 6, 27, 7, 0, 4, 42, + 4, 1, 6, 1, 7, 47, 4, 2, 3, 1, 0, 1, 0, 15, 0, 1, 0, 1, + 0, 16, 2, 1, 0, 1, 0, 17, 3, 4, 0, 1, 0, 18, 5, 1, 0, 1, + 0, 19, 6, 1, 0, 1, 0, 20, 5, 1, 0, 1, 0, 21, 6, 1, 0, 1, + 0, 22, 5, 1, 0, 1, 0, 23, 5, 1, 0, 1, 0, 24, 6, 1, 0, 1, + 0, 25, 7, 1, 0, 1, 0, 26, 6, 1, 0, 1, 0, 28, 8, 1, 0, 1, + 0, 29, 7, 1, 0, 1, 0, 30, 9, 1, 0, 1, 0, 31, 9, 1, 0, 1, + 0, 32, 5, 1, 0, 1, 0, 33, 10, 1, 0, 1, 0, 34, 11, 1, 0, 1, + 0, 35, 5, 1, 0, 1, 0, 36, 6, 1, 0, 1, 0, 37, 12, 1, 0, 1, + 0, 38, 5, 1, 0, 1, 5, 48, 5, 16, 0, 1, 6, 49, 19, 20, 0, 1, + 1, 50, 5, 23, 1, 6, 1, 4, 51, 24, 1, 1, 6, 1, 3, 52, 13, 13, + 0, 1, 2, 53, 29, 19, 1, 0, 1, 7, 54, 1, 33, 2, 3, 4, 1, 7, + 55, 34, 35, 2, 3, 2, 1, 25, 22, 26, 22, 28, 28, 29, 32, 30, 32, 2, + 7, 10, 2, 6, 10, 2, 0, 2, 6, 12, 10, 2, 4, 6, 8, 4, 6, 8, + 4, 6, 8, 1, 6, 8, 1, 1, 6, 3, 1, 6, 12, 2, 6, 12, 3, 3, + 6, 12, 3, 3, 4, 6, 12, 3, 8, 7, 10, 2, 2, 6, 12, 5, 2, 6, + 12, 6, 12, 5, 6, 12, 6, 12, 6, 12, 6, 12, 6, 12, 2, 6, 12, 8, + 7, 1, 3, 1, 2, 2, 7, 8, 0, 8, 0, 1, 5, 3, 6, 3, 6, 3, + 6, 3, 3, 3, 8, 4, 7, 8, 4, 1, 10, 2, 1, 8, 7, 2, 7, 8, + 3, 5, 1, 8, 5, 1, 11, 8, 1, 9, 0, 2, 7, 11, 8, 1, 9, 0, + 9, 0, 3, 10, 3, 10, 3, 3, 7, 1, 1, 1, 3, 3, 3, 3, 4, 3, + 3, 10, 2, 10, 3, 1, 10, 3, 1, 6, 9, 0, 3, 8, 2, 7, 8, 4, + 8, 4, 3, 5, 7, 11, 9, 2, 3, 3, 7, 3, 2, 3, 3, 1, 11, 9, + 2, 9, 0, 9, 1, 3, 7, 11, 9, 2, 9, 0, 9, 1, 9, 0, 9, 1, + 1, 7, 9, 1, 8, 1, 10, 2, 7, 8, 4, 10, 2, 3, 3, 8, 4, 7, + 8, 4, 9, 3, 7, 8, 4, 3, 3, 3, 8, 4, 7, 8, 4, 6, 8, 4, + 6, 8, 4, 2, 7, 8, 4, 8, 4, 2, 8, 4, 7, 8, 4, 2, 5, 7, + 8, 1, 6, 115, 105, 109, 112, 108, 101, 7, 97, 99, 99, 111, 117, 110, 116, 3, + 98, 99, 115, 5, 101, 114, 114, 111, 114, 5, 101, 118, 101, 110, 116, 6, 115, 105, + 103, 110, 101, 114, 6, 115, 116, 114, 105, 110, 103, 5, 116, 97, 98, 108, 101, 12, + 66, 121, 116, 101, 82, 101, 115, 111, 117, 114, 99, 101, 7, 67, 111, 117, 110, 116, + 101, 114, 4, 68, 97, 116, 97, 10, 69, 118, 101, 110, 116, 83, 116, 111, 114, 101, + 8, 82, 101, 115, 111, 117, 114, 99, 101, 11, 83, 105, 109, 112, 108, 101, 69, 118, + 101, 110, 116, 10, 84, 97, 98, 108, 101, 83, 116, 111, 114, 101, 11, 97, 112, 112, + 101, 110, 100, 95, 100, 97, 116, 97, 20, 98, 121, 116, 101, 115, 95, 109, 97, 107, + 101, 95, 111, 114, 95, 99, 104, 97, 110, 103, 101, 14, 99, 111, 112, 121, 95, 112, + 97, 115, 116, 97, 95, 114, 101, 102, 6, 100, 111, 117, 98, 108, 101, 11, 101, 109, + 105, 116, 95, 101, 118, 101, 110, 116, 115, 11, 103, 101, 116, 95, 99, 111, 117, 110, + 116, 101, 114, 21, 103, 101, 116, 95, 102, 114, 111, 109, 95, 114, 97, 110, 100, 111, 109, 95, 99, 111, 110, 115, 116, 4, 104, 97, 108, 102, 11, 105, 110, 105, 116, 95, 109, 111, 100, 117, 108, 101, 15, 108, 111, 111, 112, 95, 97, 114, 105, 116, 104, 109, - 101, 116, 105, 99, 8, 108, 111, 111, 112, 95, 98, 99, 115, 3, 98, 99, 115, 8, - 116, 111, 95, 98, 121, 116, 101, 115, 8, 108, 111, 111, 112, 95, 110, 111, 112, 14, - 109, 97, 107, 101, 95, 111, 114, 95, 99, 104, 97, 110, 103, 101, 20, 109, 97, 107, - 101, 95, 111, 114, 95, 99, 104, 97, 110, 103, 101, 95, 116, 97, 98, 108, 101, 3, - 110, 101, 119, 23, 98, 111, 114, 114, 111, 119, 95, 109, 117, 116, 95, 119, 105, 116, - 104, 95, 100, 101, 102, 97, 117, 108, 116, 8, 109, 97, 120, 105, 109, 105, 122, 101, - 8, 109, 105, 110, 105, 109, 105, 122, 101, 3, 110, 111, 112, 13, 110, 111, 112, 95, - 50, 95, 115, 105, 103, 110, 101, 114, 115, 13, 110, 111, 112, 95, 53, 95, 115, 105, - 103, 110, 101, 114, 115, 10, 114, 101, 115, 101, 116, 95, 100, 97, 116, 97, 6, 115, - 101, 116, 95, 105, 100, 8, 115, 101, 116, 95, 110, 97, 109, 101, 11, 115, 116, 101, - 112, 95, 115, 105, 103, 110, 101, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 101, 116, 105, 99, 8, 108, 111, 111, 112, 95, 98, 99, 115, 8, 108, 111, 111, 112, + 95, 110, 111, 112, 6, 83, 116, 114, 105, 110, 103, 14, 109, 97, 107, 101, 95, 111, + 114, 95, 99, 104, 97, 110, 103, 101, 20, 109, 97, 107, 101, 95, 111, 114, 95, 99, + 104, 97, 110, 103, 101, 95, 116, 97, 98, 108, 101, 8, 109, 97, 120, 105, 109, 105, + 122, 101, 8, 109, 105, 110, 105, 109, 105, 122, 101, 3, 110, 111, 112, 13, 110, 111, + 112, 95, 50, 95, 115, 105, 103, 110, 101, 114, 115, 13, 110, 111, 112, 95, 53, 95, + 115, 105, 103, 110, 101, 114, 115, 10, 114, 101, 115, 101, 116, 95, 100, 97, 116, 97, + 6, 115, 101, 116, 95, 105, 100, 8, 115, 101, 116, 95, 110, 97, 109, 101, 11, 115, + 116, 101, 112, 95, 115, 105, 103, 110, 101, 114, 4, 100, 97, 116, 97, 5, 99, 111, + 117, 110, 116, 13, 115, 105, 109, 112, 108, 101, 95, 101, 118, 101, 110, 116, 115, 11, + 69, 118, 101, 110, 116, 72, 97, 110, 100, 108, 101, 2, 105, 100, 4, 110, 97, 109, + 101, 8, 101, 118, 101, 110, 116, 95, 105, 100, 13, 116, 97, 98, 108, 101, 95, 101, + 110, 116, 114, 105, 101, 115, 5, 84, 97, 98, 108, 101, 10, 97, 100, 100, 114, 101, + 115, 115, 95, 111, 102, 4, 117, 116, 102, 56, 16, 110, 101, 119, 95, 101, 118, 101, + 110, 116, 95, 104, 97, 110, 100, 108, 101, 10, 101, 109, 105, 116, 95, 101, 118, 101, + 110, 116, 16, 105, 110, 118, 97, 108, 105, 100, 95, 97, 114, 103, 117, 109, 101, 110, + 116, 8, 116, 111, 95, 98, 121, 116, 101, 115, 3, 110, 101, 119, 23, 98, 111, 114, + 114, 111, 119, 95, 109, 117, 116, 95, 119, 105, 116, 104, 95, 100, 101, 102, 97, 117, + 108, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 10, 2, 9, 8, 1, 35, 69, 103, 137, 171, 205, 239, 10, 2, 6, 5, 104, 101, - 108, 108, 111, 10, 3, 81, 10, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 8, - 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 20, 99, 111, - 109, 112, 105, 108, 97, 116, 105, 111, 110, 95, 109, 101, 116, 97, 100, 97, 116, 97, - 9, 0, 3, 50, 46, 48, 3, 50, 46, 49, 18, 97, 112, 116, 111, 115, 58, 58, - 109, 101, 116, 97, 100, 97, 116, 97, 95, 118, 49, 42, 1, 1, 0, 0, 0, 0, - 0, 0, 0, 29, 69, 67, 79, 85, 78, 84, 69, 82, 95, 82, 69, 83, 79, 85, - 82, 67, 69, 95, 78, 79, 84, 95, 80, 82, 69, 83, 69, 78, 84, 0, 0, 0, - 0, 2, 1, 2, 10, 2, 1, 2, 1, 4, 3, 2, 2, 1, 2, 10, 2, 3, - 2, 1, 7, 11, 4, 1, 8, 5, 6, 2, 3, 12, 3, 13, 8, 7, 2, 8, - 2, 5, 2, 1, 16, 3, 8, 2, 1, 18, 11, 9, 2, 3, 3, 0, 1, 4, - 1, 4, 6, 44, 10, 0, 17, 1, 41, 4, 3, 17, 7, 0, 18, 2, 12, 1, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 17, 2, 11, 1, 18, 4, 12, - 2, 11, 0, 11, 2, 45, 4, 2, 11, 0, 17, 1, 42, 4, 12, 3, 10, 3, - 16, 0, 16, 1, 65, 5, 6, 2, 0, 0, 0, 0, 0, 0, 0, 24, 12, 4, - 10, 3, 16, 0, 16, 1, 65, 5, 10, 4, 35, 4, 41, 10, 3, 15, 0, 15, - 1, 49, 255, 68, 5, 5, 28, 11, 3, 1, 5, 16, 3, 0, 0, 0, 8, 31, - 10, 1, 65, 5, 12, 2, 10, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 36, - 4, 26, 10, 0, 12, 4, 10, 2, 6, 1, 0, 0, 0, 0, 0, 0, 0, 23, - 12, 3, 10, 1, 11, 3, 66, 5, 20, 12, 5, 11, 4, 11, 5, 68, 5, 11, - 2, 6, 1, 0, 0, 0, 0, 0, 0, 0, 23, 12, 2, 5, 3, 11, 0, 1, - 11, 1, 1, 2, 4, 1, 4, 1, 0, 10, 20, 10, 0, 17, 1, 41, 0, 4, - 13, 11, 0, 17, 1, 42, 0, 15, 2, 12, 2, 11, 1, 11, 2, 21, 2, 11, - 1, 18, 0, 12, 3, 11, 0, 11, 3, 45, 0, 5, 12, 5, 0, 0, 0, 13, - 101, 10, 0, 16, 3, 12, 4, 10, 1, 16, 3, 12, 5, 11, 4, 20, 10, 5, - 20, 35, 4, 92, 11, 5, 12, 4, 10, 2, 16, 4, 12, 5, 10, 5, 20, 10, - 1, 16, 3, 20, 35, 4, 67, 11, 0, 1, 11, 1, 1, 11, 2, 1, 11, 4, - 1, 11, 5, 12, 4, 11, 3, 16, 4, 12, 5, 10, 4, 20, 10, 5, 20, 35, - 4, 62, 11, 5, 1, 10, 4, 12, 5, 10, 4, 10, 5, 33, 4, 57, 11, 5, - 1, 11, 4, 12, 7, 11, 7, 2, 11, 4, 1, 11, 5, 12, 7, 5, 55, 11, - 4, 1, 10, 5, 12, 4, 5, 47, 11, 3, 1, 11, 0, 16, 3, 12, 7, 10, - 4, 11, 7, 34, 4, 87, 11, 4, 1, 11, 5, 1, 11, 2, 16, 4, 12, 4, - 11, 1, 16, 3, 12, 5, 5, 37, 11, 1, 1, 11, 2, 1, 5, 37, 11, 5, - 1, 10, 1, 16, 3, 12, 4, 10, 3, 16, 4, 12, 5, 5, 17, 6, 0, 0, - 1, 3, 18, 38, 10, 0, 17, 1, 12, 2, 10, 2, 41, 3, 3, 35, 10, 0, - 12, 3, 11, 0, 56, 0, 18, 3, 12, 4, 11, 3, 11, 4, 45, 3, 11, 2, - 42, 3, 12, 5, 10, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 36, 4, 32, - 11, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 23, 12, 1, 10, 5, 15, 5, - 10, 1, 18, 5, 56, 1, 5, 18, 11, 5, 1, 2, 11, 0, 1, 5, 15, 9, - 1, 4, 1, 1, 2, 15, 11, 0, 17, 1, 12, 1, 10, 1, 41, 1, 4, 12, - 11, 1, 43, 1, 16, 4, 20, 1, 2, 6, 1, 0, 0, 0, 0, 0, 0, 0, - 17, 10, 39, 11, 1, 4, 0, 20, 29, 7, 2, 12, 2, 11, 0, 1, 14, 2, - 65, 19, 12, 3, 10, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 34, 3, 12, - 5, 28, 10, 1, 10, 3, 38, 3, 17, 5, 21, 11, 3, 6, 1, 0, 0, 0, - 0, 0, 0, 0, 23, 12, 1, 7, 2, 12, 5, 14, 5, 11, 1, 66, 19, 20, - 1, 2, 12, 1, 4, 1, 4, 6, 44, 10, 0, 17, 1, 41, 4, 3, 17, 7, - 0, 18, 2, 12, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 17, 2, - 11, 1, 18, 4, 12, 2, 11, 0, 11, 2, 45, 4, 2, 11, 0, 17, 1, 42, - 4, 12, 3, 10, 3, 16, 0, 16, 1, 65, 5, 6, 2, 0, 0, 0, 0, 0, - 0, 0, 26, 12, 4, 10, 3, 16, 0, 16, 1, 65, 5, 10, 4, 36, 4, 41, - 10, 3, 15, 0, 15, 1, 69, 5, 1, 5, 28, 11, 3, 1, 5, 16, 13, 0, - 0, 0, 21, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 18, 1, 12, 1, 11, - 0, 11, 1, 45, 1, 2, 14, 1, 4, 0, 22, 76, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 12, 2, 11, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 3, 10, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 36, 4, 75, 11, 1, 6, - 1, 0, 0, 0, 0, 0, 0, 0, 23, 12, 1, 11, 2, 6, 1, 0, 0, 0, - 0, 0, 0, 0, 22, 12, 4, 11, 3, 6, 1, 0, 0, 0, 0, 0, 0, 0, - 22, 12, 5, 10, 4, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 11, 4, 23, - 12, 3, 10, 5, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 10, 5, 23, 12, - 4, 10, 4, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 12, 2, 10, 4, 10, - 2, 36, 4, 72, 10, 2, 10, 5, 36, 12, 7, 11, 7, 4, 69, 11, 5, 10, - 3, 36, 12, 8, 11, 8, 4, 66, 10, 3, 11, 4, 36, 12, 9, 11, 9, 3, - 61, 5, 6, 11, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 12, 1, 5, - 6, 9, 12, 9, 5, 58, 9, 12, 8, 5, 52, 9, 12, 7, 5, 46, 2, 15, - 1, 4, 0, 26, 45, 64, 19, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 11, - 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 10, 4, 10, 2, 35, - 4, 18, 13, 3, 10, 4, 68, 19, 11, 4, 6, 1, 0, 0, 0, 0, 0, 0, - 0, 22, 12, 4, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 10, - 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 36, 4, 44, 14, 3, 56, 2, 12, - 6, 11, 2, 12, 4, 14, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 66, 5, - 20, 52, 12, 5, 11, 4, 11, 5, 22, 12, 2, 11, 1, 6, 1, 0, 0, 0, - 0, 0, 0, 0, 23, 12, 1, 5, 20, 2, 17, 1, 4, 0, 19, 10, 10, 1, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 36, 4, 9, 11, 1, 6, 1, 0, 0, - 0, 0, 0, 0, 0, 23, 12, 1, 5, 0, 2, 18, 1, 4, 1, 4, 28, 40, - 10, 0, 17, 1, 41, 4, 4, 28, 11, 0, 17, 1, 42, 4, 12, 4, 10, 4, - 15, 3, 12, 5, 11, 1, 11, 5, 21, 10, 4, 15, 6, 12, 6, 11, 2, 11, - 6, 21, 11, 4, 15, 0, 15, 1, 12, 7, 11, 3, 11, 7, 21, 2, 11, 3, - 18, 2, 12, 8, 11, 1, 11, 2, 11, 8, 18, 4, 12, 9, 11, 0, 11, 9, - 45, 4, 5, 27, 19, 0, 0, 1, 6, 33, 48, 10, 0, 17, 1, 12, 3, 10, - 3, 41, 6, 3, 45, 11, 0, 12, 4, 56, 3, 18, 6, 12, 5, 11, 4, 11, - 5, 45, 6, 11, 3, 42, 6, 15, 7, 12, 6, 10, 2, 6, 0, 0, 0, 0, - 0, 0, 0, 0, 36, 4, 42, 11, 2, 6, 1, 0, 0, 0, 0, 0, 0, 0, - 23, 12, 2, 10, 1, 10, 2, 22, 12, 7, 10, 6, 11, 7, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 56, 4, 12, 9, 10, 9, 20, 6, 1, 0, 0, 0, 0, - 0, 0, 0, 22, 11, 9, 21, 5, 18, 11, 6, 1, 2, 11, 0, 1, 5, 14, - 22, 1, 4, 1, 4, 35, 86, 10, 1, 41, 4, 4, 6, 11, 0, 1, 2, 10, - 0, 17, 1, 41, 4, 4, 11, 5, 23, 7, 0, 18, 2, 12, 2, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 1, 17, 2, 11, 2, 18, 4, 12, 3, 10, 0, - 11, 3, 45, 4, 10, 0, 17, 1, 43, 4, 16, 0, 16, 1, 65, 5, 10, 1, - 43, 4, 16, 0, 16, 1, 65, 5, 36, 4, 75, 11, 0, 17, 1, 43, 4, 16, - 0, 16, 1, 20, 12, 4, 11, 1, 42, 4, 12, 5, 14, 4, 65, 5, 10, 5, - 16, 0, 16, 1, 65, 5, 36, 4, 67, 8, 12, 6, 11, 6, 4, 64, 10, 5, - 15, 0, 15, 1, 14, 4, 17, 3, 5, 46, 11, 5, 1, 2, 10, 5, 16, 0, - 16, 1, 65, 5, 6, 16, 39, 0, 0, 0, 0, 0, 0, 35, 12, 6, 5, 56, - 11, 1, 43, 4, 16, 0, 16, 1, 20, 12, 4, 11, 0, 17, 1, 42, 4, 12, - 5, 5, 46, 23, 1, 4, 1, 4, 36, 76, 10, 1, 41, 4, 4, 6, 11, 0, - 1, 2, 10, 0, 17, 1, 41, 4, 4, 11, 5, 23, 7, 0, 18, 2, 12, 2, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 17, 2, 11, 2, 18, 4, 12, - 3, 10, 0, 11, 3, 45, 4, 10, 0, 17, 1, 43, 4, 10, 1, 43, 4, 12, - 4, 16, 0, 16, 1, 65, 5, 12, 6, 11, 4, 16, 0, 16, 1, 65, 5, 12, - 7, 10, 6, 10, 7, 36, 4, 66, 11, 7, 6, 2, 0, 0, 0, 0, 0, 0, - 0, 26, 12, 8, 11, 0, 17, 1, 42, 4, 12, 9, 10, 9, 16, 0, 16, 1, - 65, 5, 10, 8, 36, 4, 63, 10, 9, 15, 0, 15, 1, 69, 5, 1, 5, 50, - 11, 9, 1, 2, 11, 0, 1, 11, 6, 6, 2, 0, 0, 0, 0, 0, 0, 0, - 26, 12, 8, 11, 1, 42, 4, 12, 9, 5, 50, 24, 1, 4, 0, 1, 3, 11, - 0, 1, 2, 25, 1, 4, 0, 1, 5, 11, 0, 1, 11, 1, 1, 2, 26, 1, - 4, 0, 1, 11, 11, 0, 1, 11, 1, 1, 11, 2, 1, 11, 3, 1, 11, 4, - 1, 2, 27, 1, 4, 1, 4, 39, 36, 10, 0, 17, 1, 41, 4, 4, 23, 11, - 0, 17, 1, 42, 4, 12, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, - 15, 3, 21, 7, 1, 17, 2, 10, 1, 15, 6, 21, 7, 0, 11, 1, 15, 0, - 15, 1, 21, 2, 7, 0, 18, 2, 12, 2, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 7, 1, 17, 2, 11, 2, 18, 4, 12, 3, 11, 0, 11, 3, 45, 4, 5, - 22, 28, 1, 4, 1, 4, 40, 30, 10, 0, 17, 1, 41, 4, 3, 21, 7, 0, - 18, 2, 12, 2, 11, 1, 12, 3, 7, 1, 17, 2, 12, 4, 11, 3, 11, 4, - 11, 2, 18, 4, 12, 5, 11, 0, 11, 5, 45, 4, 2, 11, 0, 17, 1, 42, - 4, 15, 3, 12, 6, 11, 1, 11, 6, 21, 5, 20, 29, 1, 4, 1, 4, 42, - 25, 10, 0, 17, 1, 41, 4, 3, 16, 7, 0, 18, 2, 12, 2, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 11, 1, 11, 2, 18, 4, 12, 3, 11, 0, 11, 3, - 45, 4, 2, 11, 0, 17, 1, 42, 4, 15, 6, 12, 4, 11, 1, 11, 4, 21, - 5, 15, 30, 1, 4, 1, 1, 43, 21, 11, 0, 17, 1, 12, 1, 10, 1, 41, - 1, 4, 18, 11, 1, 42, 1, 12, 2, 10, 2, 16, 4, 20, 6, 1, 0, 0, - 0, 0, 0, 0, 0, 22, 11, 2, 15, 4, 21, 2, 6, 1, 0, 0, 0, 0, - 0, 0, 0, 17, 10, 39, 4, 2, 2, 0, 0, 0, 4, 0, 1, 0, 3, 0, - 4, 1, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 8, 1, 0, 0, 0, + 0, 0, 0, 0, 10, 2, 9, 8, 1, 35, 69, 103, 137, 171, 205, 239, 10, 2, + 6, 5, 104, 101, 108, 108, 111, 10, 3, 81, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, + 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, + 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, + 0, 18, 97, 112, 116, 111, 115, 58, 58, 109, 101, 116, 97, 100, 97, 116, 97, 95, + 118, 49, 42, 1, 1, 0, 0, 0, 0, 0, 0, 0, 29, 69, 67, 79, 85, 78, + 84, 69, 82, 95, 82, 69, 83, 79, 85, 82, 67, 69, 95, 78, 79, 84, 95, 80, + 82, 69, 83, 69, 78, 84, 0, 0, 0, 0, 2, 1, 39, 10, 2, 1, 2, 1, + 40, 3, 2, 2, 1, 39, 10, 2, 3, 2, 1, 41, 11, 8, 1, 8, 5, 4, + 2, 3, 43, 3, 44, 8, 7, 39, 8, 2, 5, 2, 1, 45, 3, 6, 2, 1, + 46, 11, 9, 2, 3, 3, 0, 0, 0, 0, 13, 26, 10, 1, 65, 14, 12, 2, + 10, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 36, 4, 21, 5, 8, 10, 0, + 10, 1, 10, 2, 6, 1, 0, 0, 0, 0, 0, 0, 0, 23, 66, 14, 20, 68, + 14, 11, 2, 6, 1, 0, 0, 0, 0, 0, 0, 0, 23, 12, 2, 5, 3, 11, + 1, 1, 11, 0, 1, 2, 1, 1, 4, 1, 0, 15, 20, 10, 0, 17, 23, 41, + 0, 4, 13, 11, 0, 17, 23, 42, 0, 12, 2, 11, 1, 11, 2, 15, 0, 21, + 5, 19, 11, 1, 18, 0, 12, 3, 11, 0, 11, 3, 45, 0, 2, 2, 0, 0, + 0, 17, 103, 10, 0, 16, 1, 12, 5, 10, 1, 16, 1, 12, 6, 11, 5, 20, + 10, 6, 20, 35, 4, 18, 11, 6, 12, 5, 10, 2, 16, 2, 12, 6, 5, 26, + 11, 6, 1, 10, 1, 16, 1, 12, 5, 10, 3, 16, 2, 12, 6, 10, 6, 20, + 10, 1, 16, 1, 20, 35, 4, 47, 11, 5, 1, 11, 1, 1, 11, 0, 1, 11, + 2, 1, 11, 6, 12, 5, 11, 3, 16, 2, 12, 6, 5, 69, 11, 3, 1, 10, + 5, 11, 0, 16, 1, 34, 4, 65, 11, 6, 1, 11, 5, 1, 11, 2, 16, 2, + 12, 5, 11, 1, 16, 1, 12, 6, 5, 69, 11, 1, 1, 11, 2, 1, 10, 5, + 20, 10, 6, 20, 35, 4, 82, 11, 6, 1, 10, 5, 12, 6, 10, 5, 1, 5, + 88, 11, 5, 1, 10, 6, 12, 5, 10, 6, 1, 10, 5, 10, 6, 33, 4, 97, + 11, 6, 1, 11, 5, 12, 4, 5, 101, 11, 5, 1, 11, 6, 12, 4, 11, 4, + 2, 3, 1, 4, 1, 4, 18, 44, 10, 0, 17, 23, 41, 4, 32, 4, 16, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 17, 24, 7, 1, 18, 2, 18, 4, + 12, 2, 11, 0, 11, 2, 45, 4, 5, 43, 11, 0, 17, 23, 42, 4, 12, 3, + 10, 3, 16, 3, 16, 4, 65, 14, 6, 2, 0, 0, 0, 0, 0, 0, 0, 24, + 12, 1, 10, 3, 16, 3, 16, 4, 65, 14, 10, 1, 35, 4, 41, 5, 35, 10, + 3, 15, 3, 15, 4, 49, 255, 68, 14, 5, 27, 11, 3, 1, 2, 4, 0, 0, + 1, 3, 21, 36, 10, 0, 17, 23, 12, 3, 10, 3, 41, 3, 32, 4, 13, 10, + 0, 11, 0, 56, 0, 18, 3, 45, 3, 5, 15, 11, 0, 1, 11, 3, 42, 3, + 12, 2, 10, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 36, 4, 33, 5, 23, + 11, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 23, 12, 1, 10, 2, 15, 5, + 10, 1, 18, 5, 56, 1, 5, 18, 11, 2, 1, 2, 5, 1, 4, 1, 1, 16, + 16, 11, 0, 17, 23, 12, 1, 10, 1, 41, 1, 4, 7, 5, 10, 7, 0, 17, + 27, 39, 11, 1, 43, 1, 16, 2, 20, 1, 2, 6, 1, 4, 0, 25, 25, 7, + 3, 12, 2, 14, 2, 65, 13, 12, 4, 10, 4, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 34, 4, 24, 10, 1, 10, 4, 38, 4, 17, 11, 4, 6, 1, 0, 0, + 0, 0, 0, 0, 0, 23, 12, 1, 7, 3, 12, 3, 14, 3, 11, 1, 66, 13, + 20, 1, 2, 7, 1, 4, 1, 4, 18, 44, 10, 0, 17, 23, 41, 4, 32, 4, + 16, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 17, 24, 7, 1, 18, 2, + 18, 4, 12, 2, 11, 0, 11, 2, 45, 4, 5, 43, 11, 0, 17, 23, 42, 4, + 12, 3, 10, 3, 16, 3, 16, 4, 65, 14, 6, 2, 0, 0, 0, 0, 0, 0, + 0, 26, 12, 1, 10, 3, 16, 3, 16, 4, 65, 14, 10, 1, 36, 4, 41, 5, + 35, 10, 3, 15, 3, 15, 4, 69, 14, 1, 5, 27, 11, 3, 1, 2, 8, 0, + 0, 0, 1, 5, 11, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 18, 1, 45, + 1, 2, 9, 1, 4, 0, 26, 74, 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, 8, 10, 1, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 36, 4, 73, 5, 9, 11, 1, 6, 1, 0, 0, 0, 0, + 0, 0, 0, 23, 12, 1, 11, 6, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, + 12, 5, 11, 8, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 12, 7, 10, 5, + 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 11, 5, 23, 12, 8, 10, 7, 6, + 1, 0, 0, 0, 0, 0, 0, 0, 22, 10, 7, 23, 12, 5, 10, 5, 6, 1, + 0, 0, 0, 0, 0, 0, 0, 22, 12, 6, 10, 5, 10, 6, 36, 4, 46, 10, + 6, 10, 7, 36, 12, 2, 5, 48, 9, 12, 2, 11, 2, 4, 55, 11, 7, 10, + 8, 36, 12, 3, 5, 57, 9, 12, 3, 11, 3, 4, 64, 10, 8, 11, 5, 36, + 12, 4, 5, 66, 9, 12, 4, 11, 4, 4, 72, 11, 1, 6, 1, 0, 0, 0, + 0, 0, 0, 0, 22, 12, 1, 5, 4, 2, 10, 1, 4, 0, 27, 41, 64, 13, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 12, 3, 10, 3, 10, 2, 35, 4, 17, 5, 9, 13, 6, 10, 3, 68, 13, + 11, 3, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 5, 4, 6, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 4, 10, 1, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 36, 4, 40, 5, 24, 14, 6, 56, 2, 12, 5, 11, 4, 14, 5, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 14, 20, 52, 22, 12, 4, 11, 1, 6, + 1, 0, 0, 0, 0, 0, 0, 0, 23, 12, 1, 5, 19, 2, 11, 1, 4, 0, + 1, 11, 10, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 36, 4, 10, 5, 5, + 11, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 23, 12, 1, 5, 0, 2, 12, + 1, 4, 1, 4, 30, 34, 10, 0, 17, 23, 41, 4, 4, 22, 11, 0, 17, 23, + 42, 4, 12, 5, 11, 1, 10, 5, 15, 1, 21, 11, 2, 10, 5, 15, 6, 21, + 11, 3, 11, 5, 15, 3, 15, 4, 21, 5, 33, 11, 3, 18, 2, 12, 4, 11, + 1, 11, 2, 11, 4, 18, 4, 12, 6, 11, 0, 11, 6, 45, 4, 2, 13, 0, + 0, 1, 6, 31, 44, 10, 0, 17, 23, 12, 3, 10, 3, 41, 6, 32, 4, 12, + 11, 0, 56, 3, 18, 6, 45, 6, 5, 14, 11, 0, 1, 11, 3, 42, 6, 15, + 7, 12, 4, 10, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 36, 4, 41, 5, + 23, 11, 2, 6, 1, 0, 0, 0, 0, 0, 0, 0, 23, 12, 2, 10, 4, 10, + 1, 10, 2, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 56, 4, 12, 5, 10, + 5, 20, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 11, 5, 21, 5, 18, 11, + 4, 1, 2, 14, 1, 4, 1, 4, 36, 93, 10, 1, 41, 4, 4, 6, 11, 0, + 1, 2, 10, 0, 17, 23, 41, 4, 32, 4, 21, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 2, 17, 24, 7, 1, 18, 2, 18, 4, 12, 8, 10, 0, 11, 8, + 45, 4, 10, 0, 17, 23, 43, 4, 16, 3, 16, 4, 65, 14, 12, 6, 10, 1, + 43, 4, 16, 3, 16, 4, 65, 14, 12, 7, 11, 6, 11, 7, 36, 4, 49, 11, + 0, 17, 23, 43, 4, 16, 3, 16, 4, 20, 11, 1, 42, 4, 12, 4, 12, 3, + 5, 59, 11, 1, 43, 4, 16, 3, 16, 4, 20, 11, 0, 17, 23, 42, 4, 12, + 4, 12, 3, 11, 3, 11, 4, 12, 9, 12, 5, 14, 5, 65, 14, 10, 9, 16, + 3, 16, 4, 65, 14, 36, 4, 75, 5, 72, 8, 12, 2, 5, 82, 10, 9, 16, + 3, 16, 4, 65, 14, 6, 16, 39, 0, 0, 0, 0, 0, 0, 35, 12, 2, 11, + 2, 4, 90, 10, 9, 15, 3, 15, 4, 14, 5, 17, 0, 5, 63, 11, 9, 1, + 2, 15, 1, 4, 1, 4, 37, 81, 10, 1, 41, 4, 4, 6, 11, 0, 1, 2, + 10, 0, 17, 23, 41, 4, 32, 4, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 2, 17, 24, 7, 1, 18, 2, 18, 4, 12, 7, 10, 0, 11, 7, 45, 4, + 10, 0, 17, 23, 43, 4, 12, 9, 10, 1, 43, 4, 12, 10, 11, 9, 16, 3, + 16, 4, 65, 14, 11, 10, 16, 3, 16, 4, 65, 14, 12, 5, 12, 4, 10, 4, + 10, 5, 36, 4, 51, 11, 5, 6, 2, 0, 0, 0, 0, 0, 0, 0, 26, 11, + 0, 17, 23, 42, 4, 12, 3, 12, 2, 5, 60, 11, 0, 1, 11, 4, 6, 2, + 0, 0, 0, 0, 0, 0, 0, 26, 11, 1, 42, 4, 12, 3, 12, 2, 11, 2, + 11, 3, 12, 8, 12, 6, 10, 8, 16, 3, 16, 4, 65, 14, 10, 6, 36, 4, + 78, 5, 72, 10, 8, 15, 3, 15, 4, 69, 14, 1, 5, 64, 11, 8, 1, 2, + 16, 1, 4, 0, 1, 1, 2, 17, 1, 4, 0, 1, 1, 2, 18, 1, 4, 0, + 1, 1, 2, 19, 1, 4, 1, 4, 38, 34, 10, 0, 17, 23, 41, 4, 4, 23, + 11, 0, 17, 23, 42, 4, 12, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 10, + 1, 15, 1, 21, 7, 2, 17, 24, 10, 1, 15, 6, 21, 7, 1, 11, 1, 15, + 3, 15, 4, 21, 5, 33, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 17, + 24, 7, 1, 18, 2, 18, 4, 12, 2, 11, 0, 11, 2, 45, 4, 2, 20, 1, + 4, 1, 4, 39, 25, 10, 0, 17, 23, 41, 4, 32, 4, 16, 11, 1, 7, 2, + 17, 24, 7, 1, 18, 2, 18, 4, 12, 2, 11, 0, 11, 2, 45, 4, 5, 24, + 11, 0, 17, 23, 42, 4, 12, 3, 11, 1, 11, 3, 15, 1, 21, 2, 21, 1, + 4, 1, 4, 39, 24, 10, 0, 17, 23, 41, 4, 32, 4, 15, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 11, 1, 7, 1, 18, 2, 18, 4, 12, 2, 11, 0, 11, + 2, 45, 4, 5, 23, 11, 0, 17, 23, 42, 4, 12, 3, 11, 1, 11, 3, 15, + 6, 21, 2, 22, 1, 4, 1, 1, 40, 22, 11, 0, 17, 23, 12, 1, 10, 1, + 41, 1, 4, 7, 5, 10, 7, 0, 17, 27, 39, 11, 1, 42, 1, 12, 2, 10, + 2, 16, 2, 20, 7, 0, 22, 11, 2, 15, 2, 21, 2, 0, 0, 4, 0, 1, + 0, 4, 2, 2, 0, 3, 0, 4, 1, 6, 0, 0, ] }); @@ -984,11 +957,11 @@ pub static MODULES_SIMPLE: Lazy>> = Lazy::new(|| { vec![ pub static PACKAGE_FRAMEWORK_USECASES_METADATA: Lazy> = Lazy::new(|| { vec![ 17, 70, 114, 97, 109, 101, 119, 111, 114, 107, 85, 115, 101, 99, 97, 115, 101, 115, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 64, 55, 49, 50, 55, 50, 50, 66, 65, - 65, 50, 67, 49, 53, 66, 70, 54, 65, 70, 53, 70, 55, 52, 65, 67, 69, 56, - 51, 68, 53, 66, 66, 54, 66, 67, 56, 56, 49, 69, 66, 67, 68, 66, 66, 57, - 52, 48, 49, 54, 66, 66, 53, 66, 67, 48, 49, 51, 56, 49, 49, 50, 51, 53, - 66, 50, 215, 1, 31, 139, 8, 0, 0, 0, 0, 0, 2, 255, 165, 144, 187, 142, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 64, 57, 70, 66, 56, 55, 53, 67, 49, + 50, 67, 69, 70, 53, 57, 66, 69, 55, 50, 52, 50, 52, 51, 51, 52, 55, 68, + 67, 70, 53, 51, 52, 70, 55, 69, 54, 56, 70, 54, 53, 57, 50, 65, 65, 54, + 69, 67, 52, 48, 66, 68, 54, 66, 53, 52, 67, 67, 54, 69, 66, 48, 70, 69, + 70, 50, 215, 1, 31, 139, 8, 0, 0, 0, 0, 0, 2, 255, 165, 144, 187, 142, 194, 64, 12, 69, 251, 249, 10, 107, 182, 38, 236, 15, 108, 193, 238, 138, 150, 6, 170, 8, 33, 51, 49, 33, 100, 176, 163, 241, 240, 144, 16, 255, 78, 44, 30, 130, 22, 100, 23, 215, 246, 189, 167, 112, 217, 97, 104, 177, 166, 185, 99, 220, 18, 252, @@ -1000,13 +973,14 @@ pub static PACKAGE_FRAMEWORK_USECASES_METADATA: Lazy> = Lazy::new(|| { 134, 107, 160, 99, 88, 35, 215, 38, 101, 5, 65, 88, 51, 114, 6, 172, 170, 68, 170, 96, 20, 5, 236, 5, 197, 88, 184, 242, 182, 183, 231, 117, 187, 101, 108, 116, 77, 105, 113, 55, 219, 163, 143, 163, 223, 191, 127, 239, 46, 112, 10, 188, 112, 161, - 1, 0, 0, 6, 18, 97, 103, 103, 114, 101, 103, 97, 116, 111, 114, 95, 101, 120, + 1, 0, 0, 7, 18, 97, 103, 103, 114, 101, 103, 97, 116, 111, 114, 95, 101, 120, 97, 109, 112, 108, 101, 0, 0, 0, 12, 99, 111, 105, 110, 95, 101, 120, 97, 109, 112, 108, 101, 0, 0, 0, 22, 102, 117, 110, 103, 105, 98, 108, 101, 95, 97, 115, 115, 101, 116, 95, 101, 120, 97, 109, 112, 108, 101, 0, 0, 0, 7, 111, 98, 106, 101, 99, 116, 115, 0, 0, 0, 23, 114, 101, 115, 111, 117, 114, 99, 101, 95, 103, 114, 111, 117, 112, 115, 95, 101, 120, 97, 109, 112, 108, 101, 0, 0, 0, 8, 116, - 111, 107, 101, 110, 95, 118, 49, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 111, 107, 101, 110, 95, 118, 49, 0, 0, 0, 14, 118, 101, 99, 116, 111, 114, 95, + 101, 120, 97, 109, 112, 108, 101, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 14, 65, 112, 116, 111, 115, 70, 114, 97, 109, 101, 119, 111, 114, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1027,95 +1001,90 @@ pub static PACKAGE_FRAMEWORK_USECASES_METADATA: Lazy> = Lazy::new(|| { pub static MODULE_FRAMEWORK_USECASES_AGGREGATOR_EXAMPLE: Lazy> = Lazy::new(|| { vec![ 161, 28, 235, 11, 7, 0, 0, 10, 12, 1, 0, 8, 2, 8, 18, 3, 26, 64, - 4, 90, 8, 5, 98, 48, 7, 146, 1, 248, 1, 8, 138, 3, 64, 6, 202, 3, - 34, 16, 236, 3, 238, 1, 10, 218, 5, 21, 12, 239, 5, 252, 1, 13, 235, 7, - 6, 0, 0, 1, 4, 1, 8, 1, 13, 0, 1, 8, 0, 1, 3, 6, 1, 0, - 0, 0, 5, 8, 0, 0, 6, 8, 0, 0, 7, 0, 0, 0, 1, 2, 9, 1, - 1, 0, 1, 0, 10, 0, 0, 0, 1, 1, 11, 3, 4, 1, 0, 1, 0, 12, - 5, 0, 0, 1, 3, 14, 5, 6, 0, 1, 1, 15, 0, 7, 1, 3, 1, 1, - 16, 8, 7, 1, 3, 1, 0, 17, 10, 0, 0, 1, 1, 18, 3, 4, 1, 0, - 1, 3, 1, 6, 1, 7, 1, 9, 1, 0, 1, 3, 1, 7, 8, 2, 2, 7, - 11, 1, 1, 9, 0, 9, 0, 1, 1, 1, 6, 12, 1, 5, 1, 11, 1, 1, - 9, 0, 1, 9, 0, 4, 8, 2, 6, 12, 8, 3, 8, 0, 2, 1, 3, 1, - 7, 8, 0, 18, 97, 103, 103, 114, 101, 103, 97, 116, 111, 114, 95, 101, 120, 97, - 109, 112, 108, 101, 12, 66, 111, 117, 110, 100, 101, 100, 65, 103, 103, 86, 50, 5, - 99, 111, 117, 110, 116, 10, 65, 103, 103, 114, 101, 103, 97, 116, 111, 114, 13, 97, - 103, 103, 114, 101, 103, 97, 116, 111, 114, 95, 118, 50, 7, 67, 111, 117, 110, 116, - 101, 114, 12, 67, 111, 117, 110, 116, 101, 114, 65, 103, 103, 86, 50, 9, 105, 110, - 99, 114, 101, 109, 101, 110, 116, 5, 101, 114, 114, 111, 114, 16, 105, 110, 118, 97, - 108, 105, 100, 95, 97, 114, 103, 117, 109, 101, 110, 116, 16, 105, 110, 99, 114, 101, - 109, 101, 110, 116, 95, 97, 103, 103, 95, 118, 50, 7, 116, 114, 121, 95, 97, 100, - 100, 11, 105, 110, 105, 116, 95, 109, 111, 100, 117, 108, 101, 6, 115, 105, 103, 110, - 101, 114, 10, 97, 100, 100, 114, 101, 115, 115, 95, 111, 102, 27, 99, 114, 101, 97, - 116, 101, 95, 117, 110, 98, 111, 117, 110, 100, 101, 100, 95, 97, 103, 103, 114, 101, - 103, 97, 116, 111, 114, 17, 99, 114, 101, 97, 116, 101, 95, 97, 103, 103, 114, 101, - 103, 97, 116, 111, 114, 21, 109, 111, 100, 105, 102, 121, 95, 98, 111, 117, 110, 100, - 101, 100, 95, 97, 103, 103, 95, 118, 50, 7, 116, 114, 121, 95, 115, 117, 98, 0, + 4, 90, 8, 5, 98, 39, 7, 137, 1, 248, 1, 8, 129, 3, 64, 6, 193, 3, + 84, 16, 149, 4, 207, 1, 10, 228, 5, 21, 12, 249, 5, 207, 1, 13, 200, 7, + 6, 0, 0, 1, 1, 1, 2, 1, 3, 0, 4, 8, 0, 0, 5, 8, 0, 0, + 6, 8, 0, 1, 12, 6, 1, 0, 0, 0, 7, 0, 0, 0, 1, 0, 8, 0, + 0, 0, 1, 0, 9, 1, 0, 0, 1, 0, 10, 2, 0, 0, 1, 2, 13, 4, + 4, 0, 1, 1, 14, 5, 6, 1, 0, 1, 3, 15, 1, 7, 0, 1, 1, 16, + 0, 8, 1, 3, 1, 1, 17, 9, 8, 1, 3, 1, 1, 18, 5, 6, 1, 0, + 1, 5, 4, 7, 4, 8, 4, 9, 4, 0, 1, 6, 12, 2, 1, 3, 1, 7, + 8, 1, 1, 3, 2, 7, 11, 3, 1, 9, 0, 9, 0, 1, 1, 1, 5, 1, + 11, 3, 1, 9, 0, 1, 9, 0, 1, 7, 8, 0, 18, 97, 103, 103, 114, 101, + 103, 97, 116, 111, 114, 95, 101, 120, 97, 109, 112, 108, 101, 13, 97, 103, 103, 114, + 101, 103, 97, 116, 111, 114, 95, 118, 50, 5, 101, 114, 114, 111, 114, 6, 115, 105, + 103, 110, 101, 114, 12, 66, 111, 117, 110, 100, 101, 100, 65, 103, 103, 86, 50, 7, + 67, 111, 117, 110, 116, 101, 114, 12, 67, 111, 117, 110, 116, 101, 114, 65, 103, 103, + 86, 50, 9, 105, 110, 99, 114, 101, 109, 101, 110, 116, 16, 105, 110, 99, 114, 101, + 109, 101, 110, 116, 95, 97, 103, 103, 95, 118, 50, 11, 105, 110, 105, 116, 95, 109, + 111, 100, 117, 108, 101, 21, 109, 111, 100, 105, 102, 121, 95, 98, 111, 117, 110, 100, + 101, 100, 95, 97, 103, 103, 95, 118, 50, 5, 99, 111, 117, 110, 116, 10, 65, 103, + 103, 114, 101, 103, 97, 116, 111, 114, 16, 105, 110, 118, 97, 108, 105, 100, 95, 97, + 114, 103, 117, 109, 101, 110, 116, 7, 116, 114, 121, 95, 97, 100, 100, 10, 97, 100, + 100, 114, 101, 115, 115, 95, 111, 102, 27, 99, 114, 101, 97, 116, 101, 95, 117, 110, + 98, 111, 117, 110, 100, 101, 100, 95, 97, 103, 103, 114, 101, 103, 97, 116, 111, 114, + 17, 99, 114, 101, 97, 116, 101, 95, 97, 103, 103, 114, 101, 103, 97, 116, 111, 114, + 7, 116, 114, 121, 95, 115, 117, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 205, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 32, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 3, 8, 3, 0, 0, 0, 0, 0, 0, 0, 3, 8, 2, 0, 0, 0, 0, 0, + 0, 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 0, 3, 8, 1, 0, 0, 0, + 0, 0, 0, 0, 3, 8, 5, 0, 0, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 171, 205, 20, 99, 111, 109, 112, 105, 108, 97, 116, 105, 111, - 110, 95, 109, 101, 116, 97, 100, 97, 116, 97, 9, 0, 3, 50, 46, 48, 3, 50, - 46, 49, 18, 97, 112, 116, 111, 115, 58, 58, 109, 101, 116, 97, 100, 97, 116, 97, - 95, 118, 49, 186, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 29, 69, 67, 79, - 85, 78, 84, 69, 82, 95, 82, 69, 83, 79, 85, 82, 67, 69, 95, 78, 79, 84, - 95, 80, 82, 69, 83, 69, 78, 84, 0, 2, 0, 0, 0, 0, 0, 0, 0, 33, - 69, 67, 79, 85, 78, 84, 69, 82, 95, 65, 71, 71, 95, 82, 69, 83, 79, 85, - 82, 67, 69, 95, 78, 79, 84, 95, 80, 82, 69, 83, 69, 78, 84, 0, 3, 0, - 0, 0, 0, 0, 0, 0, 33, 69, 66, 79, 85, 78, 68, 69, 68, 95, 65, 71, - 71, 95, 82, 69, 83, 79, 85, 82, 67, 69, 95, 78, 79, 84, 95, 80, 82, 69, - 83, 69, 78, 84, 0, 4, 0, 0, 0, 0, 0, 0, 0, 23, 69, 67, 79, 85, - 78, 84, 69, 82, 95, 73, 78, 67, 82, 69, 77, 69, 78, 84, 95, 70, 65, 73, - 76, 0, 5, 0, 0, 0, 0, 0, 0, 0, 15, 69, 78, 79, 84, 95, 65, 85, - 84, 72, 79, 82, 73, 90, 69, 68, 0, 0, 0, 0, 2, 1, 2, 11, 1, 1, - 3, 2, 2, 1, 2, 3, 3, 2, 1, 2, 11, 1, 1, 3, 0, 1, 4, 1, - 1, 2, 18, 7, 0, 41, 1, 4, 15, 7, 0, 42, 1, 12, 0, 10, 0, 16, - 0, 20, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 11, 0, 15, 0, 21, 2, - 6, 1, 0, 0, 0, 0, 0, 0, 0, 17, 1, 39, 2, 1, 4, 1, 2, 0, - 15, 7, 0, 41, 2, 4, 12, 7, 0, 42, 2, 15, 1, 6, 1, 0, 0, 0, - 0, 0, 0, 0, 56, 0, 4, 10, 2, 6, 4, 0, 0, 0, 0, 0, 0, 0, - 39, 6, 2, 0, 0, 0, 0, 0, 0, 0, 17, 1, 39, 4, 0, 0, 0, 9, - 33, 10, 0, 17, 5, 7, 0, 33, 4, 29, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 18, 1, 12, 1, 10, 0, 11, 1, 45, 1, 10, 0, 12, 2, 56, 1, 18, - 2, 12, 3, 11, 2, 11, 3, 45, 2, 11, 0, 12, 2, 6, 100, 0, 0, 0, - 0, 0, 0, 0, 56, 2, 18, 0, 12, 4, 11, 2, 11, 4, 45, 0, 2, 11, - 0, 1, 6, 5, 0, 0, 0, 0, 0, 0, 0, 39, 8, 1, 4, 1, 0, 11, - 23, 7, 0, 41, 0, 4, 20, 7, 0, 42, 0, 12, 2, 11, 0, 4, 14, 11, - 2, 15, 2, 11, 1, 56, 0, 1, 2, 11, 2, 15, 2, 11, 1, 56, 3, 1, - 5, 13, 6, 3, 0, 0, 0, 0, 0, 0, 0, 17, 1, 39, 1, 0, 2, 0, - 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 205, 18, 97, 112, 116, 111, 115, + 58, 58, 109, 101, 116, 97, 100, 97, 116, 97, 95, 118, 49, 186, 1, 5, 1, 0, + 0, 0, 0, 0, 0, 0, 29, 69, 67, 79, 85, 78, 84, 69, 82, 95, 82, 69, + 83, 79, 85, 82, 67, 69, 95, 78, 79, 84, 95, 80, 82, 69, 83, 69, 78, 84, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 33, 69, 67, 79, 85, 78, 84, 69, 82, + 95, 65, 71, 71, 95, 82, 69, 83, 79, 85, 82, 67, 69, 95, 78, 79, 84, 95, + 80, 82, 69, 83, 69, 78, 84, 0, 3, 0, 0, 0, 0, 0, 0, 0, 33, 69, + 66, 79, 85, 78, 68, 69, 68, 95, 65, 71, 71, 95, 82, 69, 83, 79, 85, 82, + 67, 69, 95, 78, 79, 84, 95, 80, 82, 69, 83, 69, 78, 84, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 23, 69, 67, 79, 85, 78, 84, 69, 82, 95, 73, 78, 67, + 82, 69, 77, 69, 78, 84, 95, 70, 65, 73, 76, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 15, 69, 78, 79, 84, 95, 65, 85, 84, 72, 79, 82, 73, 90, 69, 68, + 0, 0, 0, 0, 2, 1, 11, 11, 3, 1, 3, 1, 2, 1, 11, 3, 2, 2, + 1, 11, 11, 3, 1, 3, 0, 1, 4, 1, 1, 3, 19, 7, 5, 41, 1, 4, + 4, 5, 7, 7, 3, 17, 4, 39, 7, 5, 42, 1, 12, 0, 10, 0, 16, 0, + 20, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 11, 0, 15, 0, 21, 2, 1, + 1, 4, 1, 2, 0, 17, 7, 5, 41, 2, 4, 4, 5, 7, 7, 1, 17, 4, + 39, 7, 5, 42, 2, 15, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 56, 0, + 4, 14, 5, 16, 7, 2, 39, 2, 2, 0, 0, 0, 0, 24, 10, 0, 17, 6, + 7, 5, 33, 4, 6, 5, 10, 11, 0, 1, 7, 4, 39, 10, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 18, 1, 45, 1, 10, 0, 56, 1, 18, 2, 45, 2, + 11, 0, 6, 100, 0, 0, 0, 0, 0, 0, 0, 56, 2, 18, 0, 45, 0, 2, + 3, 1, 4, 1, 0, 10, 24, 7, 5, 41, 0, 4, 4, 5, 7, 7, 0, 17, + 4, 39, 7, 5, 42, 0, 12, 2, 11, 0, 4, 18, 11, 2, 15, 2, 11, 1, + 56, 0, 1, 5, 23, 11, 2, 15, 2, 11, 1, 56, 3, 1, 2, 1, 0, 2, + 0, 0, 0, 0, ] }); #[rustfmt::skip] pub static MODULE_FRAMEWORK_USECASES_COIN_EXAMPLE: Lazy> = Lazy::new(|| { vec![ - 161, 28, 235, 11, 7, 0, 0, 10, 11, 1, 0, 6, 2, 6, 4, 3, 10, 39, - 4, 49, 6, 5, 55, 36, 7, 91, 112, 8, 203, 1, 64, 6, 139, 2, 27, 16, - 166, 2, 31, 10, 197, 2, 5, 12, 202, 2, 43, 0, 0, 1, 4, 1, 8, 0, - 1, 0, 0, 0, 3, 0, 1, 0, 1, 1, 5, 3, 1, 1, 0, 1, 0, 6, - 5, 1, 0, 1, 1, 7, 0, 1, 1, 0, 1, 2, 9, 0, 6, 0, 1, 1, - 10, 7, 1, 1, 0, 1, 1, 2, 3, 2, 5, 2, 1, 6, 12, 0, 1, 8, - 0, 5, 6, 12, 10, 2, 10, 2, 2, 1, 4, 1, 2, 10, 2, 10, 2, 3, - 6, 12, 6, 12, 3, 1, 5, 3, 6, 12, 5, 3, 12, 99, 111, 105, 110, 95, - 101, 120, 97, 109, 112, 108, 101, 11, 69, 120, 97, 109, 112, 108, 101, 67, 111, 105, - 110, 11, 100, 117, 109, 109, 121, 95, 102, 105, 101, 108, 100, 11, 105, 110, 105, 116, - 95, 109, 111, 100, 117, 108, 101, 12, 109, 97, 110, 97, 103, 101, 100, 95, 99, 111, - 105, 110, 10, 105, 110, 105, 116, 105, 97, 108, 105, 122, 101, 6, 109, 105, 110, 116, - 95, 112, 8, 114, 101, 103, 105, 115, 116, 101, 114, 6, 115, 105, 103, 110, 101, 114, - 10, 97, 100, 100, 114, 101, 115, 115, 95, 111, 102, 4, 109, 105, 110, 116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 10, 2, 13, 12, 69, 120, 97, 109, 112, 108, - 101, 32, 67, 111, 105, 110, 10, 2, 8, 7, 69, 120, 97, 109, 112, 108, 101, 20, - 99, 111, 109, 112, 105, 108, 97, 116, 105, 111, 110, 95, 109, 101, 116, 97, 100, 97, - 116, 97, 9, 0, 3, 50, 46, 48, 3, 50, 46, 49, 0, 2, 1, 2, 1, 0, - 0, 0, 0, 4, 7, 11, 0, 7, 0, 7, 1, 49, 8, 9, 56, 0, 2, 2, - 1, 4, 0, 6, 10, 10, 0, 56, 1, 11, 0, 17, 4, 12, 3, 11, 1, 11, - 3, 11, 2, 56, 2, 2, 0, + 161, 28, 235, 11, 7, 0, 0, 10, 10, 1, 0, 6, 2, 6, 4, 3, 10, 39, + 4, 49, 6, 5, 55, 29, 7, 84, 112, 8, 196, 1, 64, 6, 132, 2, 27, 10, + 159, 2, 5, 12, 164, 2, 39, 0, 0, 1, 1, 1, 2, 0, 3, 0, 0, 0, + 4, 0, 1, 0, 1, 0, 5, 2, 1, 0, 1, 1, 7, 4, 1, 1, 0, 1, + 1, 8, 0, 1, 1, 0, 1, 2, 9, 0, 5, 0, 1, 1, 10, 6, 1, 1, + 0, 1, 2, 3, 3, 3, 5, 3, 1, 6, 12, 0, 3, 6, 12, 6, 12, 3, + 1, 8, 0, 5, 6, 12, 10, 2, 10, 2, 2, 1, 1, 5, 3, 6, 12, 5, + 3, 12, 99, 111, 105, 110, 95, 101, 120, 97, 109, 112, 108, 101, 12, 109, 97, 110, + 97, 103, 101, 100, 95, 99, 111, 105, 110, 6, 115, 105, 103, 110, 101, 114, 11, 69, + 120, 97, 109, 112, 108, 101, 67, 111, 105, 110, 11, 105, 110, 105, 116, 95, 109, 111, + 100, 117, 108, 101, 6, 109, 105, 110, 116, 95, 112, 11, 100, 117, 109, 109, 121, 95, + 102, 105, 101, 108, 100, 10, 105, 110, 105, 116, 105, 97, 108, 105, 122, 101, 8, 114, + 101, 103, 105, 115, 116, 101, 114, 10, 97, 100, 100, 114, 101, 115, 115, 95, 111, 102, + 4, 109, 105, 110, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, + 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 2, 13, + 12, 69, 120, 97, 109, 112, 108, 101, 32, 67, 111, 105, 110, 10, 2, 8, 7, 69, + 120, 97, 109, 112, 108, 101, 0, 2, 1, 6, 1, 0, 0, 0, 0, 1, 7, 11, + 0, 7, 0, 7, 1, 49, 8, 9, 56, 0, 2, 1, 1, 4, 0, 1, 8, 10, + 0, 56, 1, 11, 1, 11, 0, 17, 4, 11, 2, 56, 2, 2, 0, ] }); @@ -1123,157 +1092,150 @@ pub static MODULE_FRAMEWORK_USECASES_COIN_EXAMPLE: Lazy> = Lazy::new(|| pub static MODULE_FRAMEWORK_USECASES_FUNGIBLE_ASSET_EXAMPLE: Lazy> = Lazy::new(|| { vec![ 161, 28, 235, 11, 7, 0, 0, 10, 12, 1, 0, 16, 2, 16, 48, 3, 64, 152, - 1, 4, 216, 1, 16, 5, 232, 1, 240, 1, 7, 216, 3, 210, 4, 8, 170, 8, - 64, 6, 234, 8, 73, 16, 179, 9, 192, 1, 10, 243, 10, 12, 12, 255, 10, 143, - 2, 13, 142, 13, 4, 0, 0, 1, 4, 1, 12, 1, 14, 1, 16, 1, 25, 1, - 30, 1, 33, 0, 1, 8, 0, 1, 3, 6, 0, 1, 6, 6, 0, 1, 8, 6, - 0, 2, 11, 7, 1, 0, 1, 1, 13, 11, 0, 1, 18, 8, 0, 1, 23, 0, - 0, 2, 29, 2, 0, 6, 32, 7, 1, 0, 0, 7, 35, 7, 0, 0, 9, 0, - 1, 0, 1, 0, 10, 2, 3, 0, 1, 3, 15, 4, 2, 0, 1, 4, 17, 6, - 7, 1, 8, 1, 4, 19, 6, 7, 1, 8, 1, 1, 9, 9, 1, 1, 8, 1, - 0, 20, 11, 1, 0, 1, 2, 21, 12, 13, 1, 8, 1, 2, 22, 14, 2, 1, - 8, 1, 1, 20, 15, 16, 0, 1, 1, 24, 17, 1, 1, 8, 1, 5, 26, 18, - 18, 0, 1, 0, 27, 4, 1, 0, 1, 2, 28, 20, 21, 0, 1, 6, 31, 1, - 23, 1, 0, 1, 7, 34, 24, 25, 0, 1, 4, 36, 26, 1, 0, 1, 1, 37, - 27, 28, 0, 1, 1, 38, 27, 29, 0, 1, 1, 39, 27, 30, 0, 1, 2, 40, - 27, 31, 0, 1, 0, 41, 33, 1, 0, 1, 2, 42, 34, 2, 0, 1, 2, 43, - 2, 35, 1, 8, 1, 3, 5, 4, 5, 5, 8, 7, 5, 8, 5, 10, 8, 14, - 22, 23, 5, 4, 6, 12, 5, 5, 3, 0, 1, 5, 1, 11, 4, 1, 8, 5, - 1, 6, 12, 1, 8, 5, 2, 5, 11, 4, 1, 9, 0, 1, 11, 4, 1, 8, - 6, 1, 8, 6, 4, 6, 12, 11, 4, 1, 9, 0, 11, 4, 1, 9, 0, 3, - 3, 11, 4, 1, 8, 5, 11, 4, 1, 8, 6, 11, 4, 1, 8, 6, 3, 6, - 12, 5, 3, 2, 11, 4, 1, 9, 0, 5, 1, 1, 1, 6, 11, 4, 1, 9, - 0, 2, 6, 8, 1, 3, 1, 8, 7, 3, 6, 8, 2, 11, 4, 1, 9, 0, - 8, 7, 1, 3, 7, 11, 4, 1, 8, 5, 11, 4, 1, 8, 5, 11, 4, 1, - 8, 5, 5, 6, 8, 0, 11, 4, 1, 8, 6, 8, 7, 2, 6, 12, 10, 2, - 1, 8, 8, 1, 4, 1, 11, 9, 1, 9, 0, 1, 10, 2, 1, 8, 10, 7, - 6, 8, 8, 11, 9, 1, 4, 8, 10, 8, 10, 2, 8, 10, 8, 10, 1, 6, - 8, 8, 1, 8, 1, 1, 8, 3, 1, 8, 2, 1, 12, 15, 10, 2, 8, 8, - 6, 8, 8, 6, 8, 8, 8, 10, 8, 10, 2, 8, 10, 8, 10, 11, 9, 1, - 4, 8, 3, 12, 8, 2, 8, 1, 8, 0, 3, 6, 12, 6, 12, 3, 2, 6, - 5, 10, 2, 1, 11, 4, 1, 9, 0, 22, 102, 117, 110, 103, 105, 98, 108, 101, - 95, 97, 115, 115, 101, 116, 95, 101, 120, 97, 109, 112, 108, 101, 20, 77, 97, 110, - 97, 103, 101, 100, 70, 117, 110, 103, 105, 98, 108, 101, 65, 115, 115, 101, 116, 8, - 109, 105, 110, 116, 95, 114, 101, 102, 7, 77, 105, 110, 116, 82, 101, 102, 14, 102, - 117, 110, 103, 105, 98, 108, 101, 95, 97, 115, 115, 101, 116, 12, 116, 114, 97, 110, - 115, 102, 101, 114, 95, 114, 101, 102, 11, 84, 114, 97, 110, 115, 102, 101, 114, 82, - 101, 102, 8, 98, 117, 114, 110, 95, 114, 101, 102, 7, 66, 117, 114, 110, 82, 101, - 102, 8, 116, 114, 97, 110, 115, 102, 101, 114, 12, 103, 101, 116, 95, 109, 101, 116, - 97, 100, 97, 116, 97, 6, 79, 98, 106, 101, 99, 116, 6, 111, 98, 106, 101, 99, - 116, 8, 77, 101, 116, 97, 100, 97, 116, 97, 6, 115, 105, 103, 110, 101, 114, 10, - 97, 100, 100, 114, 101, 115, 115, 95, 111, 102, 22, 112, 114, 105, 109, 97, 114, 121, - 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, 115, 116, 111, 114, 101, 13, 112, 114, - 105, 109, 97, 114, 121, 95, 115, 116, 111, 114, 101, 13, 70, 117, 110, 103, 105, 98, - 108, 101, 83, 116, 111, 114, 101, 27, 101, 110, 115, 117, 114, 101, 95, 112, 114, 105, - 109, 97, 114, 121, 95, 115, 116, 111, 114, 101, 95, 101, 120, 105, 115, 116, 115, 4, - 109, 105, 110, 116, 8, 105, 115, 95, 111, 119, 110, 101, 114, 14, 111, 98, 106, 101, - 99, 116, 95, 97, 100, 100, 114, 101, 115, 115, 13, 70, 117, 110, 103, 105, 98, 108, - 101, 65, 115, 115, 101, 116, 16, 100, 101, 112, 111, 115, 105, 116, 95, 119, 105, 116, - 104, 95, 114, 101, 102, 5, 101, 114, 114, 111, 114, 17, 112, 101, 114, 109, 105, 115, - 115, 105, 111, 110, 95, 100, 101, 110, 105, 101, 100, 11, 105, 110, 105, 116, 95, 109, - 111, 100, 117, 108, 101, 19, 99, 114, 101, 97, 116, 101, 95, 110, 97, 109, 101, 100, - 95, 111, 98, 106, 101, 99, 116, 14, 67, 111, 110, 115, 116, 114, 117, 99, 116, 111, - 114, 82, 101, 102, 6, 111, 112, 116, 105, 111, 110, 4, 110, 111, 110, 101, 6, 79, - 112, 116, 105, 111, 110, 6, 115, 116, 114, 105, 110, 103, 4, 117, 116, 102, 56, 6, - 83, 116, 114, 105, 110, 103, 43, 99, 114, 101, 97, 116, 101, 95, 112, 114, 105, 109, - 97, 114, 121, 95, 115, 116, 111, 114, 101, 95, 101, 110, 97, 98, 108, 101, 100, 95, - 102, 117, 110, 103, 105, 98, 108, 101, 95, 97, 115, 115, 101, 116, 17, 103, 101, 110, - 101, 114, 97, 116, 101, 95, 109, 105, 110, 116, 95, 114, 101, 102, 17, 103, 101, 110, - 101, 114, 97, 116, 101, 95, 98, 117, 114, 110, 95, 114, 101, 102, 21, 103, 101, 110, - 101, 114, 97, 116, 101, 95, 116, 114, 97, 110, 115, 102, 101, 114, 95, 114, 101, 102, - 15, 103, 101, 110, 101, 114, 97, 116, 101, 95, 115, 105, 103, 110, 101, 114, 6, 109, - 105, 110, 116, 95, 112, 21, 99, 114, 101, 97, 116, 101, 95, 111, 98, 106, 101, 99, - 116, 95, 97, 100, 100, 114, 101, 115, 115, 17, 97, 100, 100, 114, 101, 115, 115, 95, - 116, 111, 95, 111, 98, 106, 101, 99, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 4, 216, 1, 16, 5, 232, 1, 216, 1, 7, 192, 3, 210, 4, 8, 146, 8, + 64, 6, 210, 8, 83, 16, 165, 9, 161, 1, 10, 198, 10, 12, 12, 210, 10, 230, + 1, 13, 184, 12, 4, 0, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, + 6, 1, 7, 0, 8, 8, 0, 3, 9, 7, 1, 0, 1, 2, 10, 11, 0, 2, + 17, 6, 0, 2, 19, 6, 0, 2, 21, 6, 0, 3, 24, 2, 0, 4, 26, 7, + 1, 0, 0, 7, 28, 7, 0, 2, 35, 0, 0, 2, 36, 8, 0, 0, 11, 0, + 1, 0, 1, 0, 12, 2, 3, 0, 1, 0, 13, 4, 3, 0, 1, 0, 14, 5, + 3, 0, 1, 0, 15, 6, 3, 0, 1, 3, 22, 7, 0, 0, 1, 3, 23, 0, + 9, 1, 8, 1, 3, 25, 11, 12, 0, 1, 4, 27, 3, 14, 1, 0, 1, 7, + 29, 15, 16, 0, 1, 5, 30, 17, 3, 0, 1, 2, 31, 18, 19, 0, 1, 2, + 32, 18, 20, 0, 1, 2, 33, 18, 21, 0, 1, 3, 34, 18, 22, 0, 1, 6, + 37, 2, 0, 0, 1, 3, 38, 24, 25, 1, 8, 1, 1, 39, 26, 26, 0, 1, + 3, 40, 27, 0, 1, 8, 1, 5, 41, 28, 29, 1, 8, 1, 2, 13, 30, 31, + 0, 1, 2, 42, 33, 3, 1, 8, 1, 5, 43, 28, 29, 1, 8, 1, 2, 15, + 35, 3, 1, 8, 1, 6, 8, 8, 13, 16, 8, 18, 8, 19, 8, 21, 32, 22, + 8, 23, 32, 1, 5, 1, 11, 1, 1, 8, 2, 1, 6, 12, 0, 3, 6, 12, + 5, 3, 3, 6, 12, 6, 12, 3, 4, 6, 12, 5, 5, 3, 2, 6, 5, 10, + 2, 1, 8, 2, 1, 11, 1, 1, 9, 0, 6, 8, 6, 8, 5, 6, 8, 6, + 12, 8, 3, 8, 4, 2, 6, 12, 10, 2, 1, 8, 6, 1, 4, 1, 11, 7, + 1, 9, 0, 1, 10, 2, 1, 8, 8, 7, 6, 8, 6, 11, 7, 1, 4, 8, + 8, 8, 8, 2, 8, 8, 8, 8, 1, 6, 8, 6, 1, 8, 3, 1, 8, 5, + 1, 8, 4, 1, 12, 6, 11, 1, 1, 8, 2, 11, 1, 1, 8, 2, 8, 9, + 6, 8, 0, 6, 12, 11, 1, 1, 8, 10, 2, 11, 1, 1, 9, 0, 5, 1, + 1, 1, 3, 1, 6, 11, 1, 1, 9, 0, 2, 5, 11, 1, 1, 9, 0, 1, + 11, 1, 1, 8, 10, 2, 6, 8, 3, 3, 1, 8, 9, 1, 8, 10, 3, 6, + 8, 4, 11, 1, 1, 9, 0, 8, 9, 3, 11, 1, 1, 8, 2, 11, 1, 1, + 8, 10, 11, 1, 1, 8, 10, 4, 6, 12, 11, 1, 1, 9, 0, 11, 1, 1, + 9, 0, 3, 22, 102, 117, 110, 103, 105, 98, 108, 101, 95, 97, 115, 115, 101, 116, + 95, 101, 120, 97, 109, 112, 108, 101, 5, 101, 114, 114, 111, 114, 14, 102, 117, 110, + 103, 105, 98, 108, 101, 95, 97, 115, 115, 101, 116, 6, 111, 98, 106, 101, 99, 116, + 6, 111, 112, 116, 105, 111, 110, 22, 112, 114, 105, 109, 97, 114, 121, 95, 102, 117, + 110, 103, 105, 98, 108, 101, 95, 115, 116, 111, 114, 101, 6, 115, 105, 103, 110, 101, + 114, 6, 115, 116, 114, 105, 110, 103, 20, 77, 97, 110, 97, 103, 101, 100, 70, 117, + 110, 103, 105, 98, 108, 101, 65, 115, 115, 101, 116, 6, 79, 98, 106, 101, 99, 116, + 8, 77, 101, 116, 97, 100, 97, 116, 97, 12, 103, 101, 116, 95, 109, 101, 116, 97, + 100, 97, 116, 97, 11, 105, 110, 105, 116, 95, 109, 111, 100, 117, 108, 101, 4, 109, + 105, 110, 116, 6, 109, 105, 110, 116, 95, 112, 8, 116, 114, 97, 110, 115, 102, 101, + 114, 8, 109, 105, 110, 116, 95, 114, 101, 102, 7, 77, 105, 110, 116, 82, 101, 102, + 12, 116, 114, 97, 110, 115, 102, 101, 114, 95, 114, 101, 102, 11, 84, 114, 97, 110, + 115, 102, 101, 114, 82, 101, 102, 8, 98, 117, 114, 110, 95, 114, 101, 102, 7, 66, + 117, 114, 110, 82, 101, 102, 21, 99, 114, 101, 97, 116, 101, 95, 111, 98, 106, 101, + 99, 116, 95, 97, 100, 100, 114, 101, 115, 115, 17, 97, 100, 100, 114, 101, 115, 115, + 95, 116, 111, 95, 111, 98, 106, 101, 99, 116, 14, 67, 111, 110, 115, 116, 114, 117, + 99, 116, 111, 114, 82, 101, 102, 19, 99, 114, 101, 97, 116, 101, 95, 110, 97, 109, + 101, 100, 95, 111, 98, 106, 101, 99, 116, 6, 79, 112, 116, 105, 111, 110, 4, 110, + 111, 110, 101, 6, 83, 116, 114, 105, 110, 103, 4, 117, 116, 102, 56, 43, 99, 114, + 101, 97, 116, 101, 95, 112, 114, 105, 109, 97, 114, 121, 95, 115, 116, 111, 114, 101, + 95, 101, 110, 97, 98, 108, 101, 100, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, + 97, 115, 115, 101, 116, 17, 103, 101, 110, 101, 114, 97, 116, 101, 95, 109, 105, 110, + 116, 95, 114, 101, 102, 17, 103, 101, 110, 101, 114, 97, 116, 101, 95, 98, 117, 114, + 110, 95, 114, 101, 102, 21, 103, 101, 110, 101, 114, 97, 116, 101, 95, 116, 114, 97, + 110, 115, 102, 101, 114, 95, 114, 101, 102, 15, 103, 101, 110, 101, 114, 97, 116, 101, + 95, 115, 105, 103, 110, 101, 114, 13, 70, 117, 110, 103, 105, 98, 108, 101, 65, 115, + 115, 101, 116, 13, 70, 117, 110, 103, 105, 98, 108, 101, 83, 116, 111, 114, 101, 10, + 97, 100, 100, 114, 101, 115, 115, 95, 111, 102, 8, 105, 115, 95, 111, 119, 110, 101, + 114, 17, 112, 101, 114, 109, 105, 115, 115, 105, 111, 110, 95, 100, 101, 110, 105, 101, + 100, 14, 111, 98, 106, 101, 99, 116, 95, 97, 100, 100, 114, 101, 115, 115, 27, 101, + 110, 115, 117, 114, 101, 95, 112, 114, 105, 109, 97, 114, 121, 95, 115, 116, 111, 114, + 101, 95, 101, 120, 105, 115, 116, 115, 16, 100, 101, 112, 111, 115, 105, 116, 95, 119, + 105, 116, 104, 95, 114, 101, 102, 13, 112, 114, 105, 109, 97, 114, 121, 95, 115, 116, + 111, 114, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 10, 2, 3, 2, 70, 65, 10, 2, 8, 7, 70, 65, 32, 67, 111, 105, 110, - 10, 2, 31, 30, 104, 116, 116, 112, 58, 47, 47, 101, 120, 97, 109, 112, 108, 101, - 46, 99, 111, 109, 47, 102, 97, 118, 105, 99, 111, 110, 46, 105, 99, 111, 10, 2, - 19, 18, 104, 116, 116, 112, 58, 47, 47, 101, 120, 97, 109, 112, 108, 101, 46, 99, - 111, 109, 20, 99, 111, 109, 112, 105, 108, 97, 116, 105, 111, 110, 95, 109, 101, 116, - 97, 100, 97, 116, 97, 9, 0, 3, 50, 46, 48, 3, 50, 46, 49, 18, 97, 112, - 116, 111, 115, 58, 58, 109, 101, 116, 97, 100, 97, 116, 97, 95, 118, 49, 140, 1, - 1, 1, 0, 0, 0, 0, 0, 0, 0, 10, 69, 78, 79, 84, 95, 79, 87, 78, - 69, 82, 52, 79, 110, 108, 121, 32, 102, 117, 110, 103, 105, 98, 108, 101, 32, 97, - 115, 115, 101, 116, 32, 109, 101, 116, 97, 100, 97, 116, 97, 32, 111, 119, 110, 101, - 114, 32, 99, 97, 110, 32, 109, 97, 107, 101, 32, 99, 104, 97, 110, 103, 101, 115, - 46, 1, 20, 77, 97, 110, 97, 103, 101, 100, 70, 117, 110, 103, 105, 98, 108, 101, - 65, 115, 115, 101, 116, 1, 3, 1, 24, 48, 120, 49, 58, 58, 111, 98, 106, 101, - 99, 116, 58, 58, 79, 98, 106, 101, 99, 116, 71, 114, 111, 117, 112, 1, 12, 103, - 101, 116, 95, 109, 101, 116, 97, 100, 97, 116, 97, 1, 1, 0, 0, 2, 3, 2, - 8, 1, 5, 8, 2, 7, 8, 3, 0, 1, 4, 0, 10, 18, 11, 1, 17, 1, - 12, 4, 10, 0, 17, 2, 10, 4, 56, 0, 11, 2, 11, 4, 56, 1, 12, 5, - 12, 6, 11, 0, 11, 6, 11, 5, 11, 3, 56, 2, 2, 6, 1, 4, 1, 0, - 19, 37, 10, 0, 17, 2, 17, 1, 12, 3, 10, 3, 12, 4, 10, 4, 12, 5, - 11, 0, 17, 2, 12, 6, 11, 5, 11, 6, 56, 3, 4, 34, 14, 4, 56, 4, - 43, 0, 12, 7, 11, 1, 11, 3, 56, 1, 12, 8, 10, 7, 16, 0, 11, 2, - 17, 9, 12, 9, 11, 7, 16, 1, 11, 8, 11, 9, 56, 5, 2, 6, 1, 0, - 0, 0, 0, 0, 0, 0, 17, 11, 39, 12, 0, 0, 0, 32, 51, 11, 0, 7, - 0, 17, 13, 12, 2, 14, 2, 12, 3, 10, 3, 12, 4, 56, 6, 7, 1, 17, - 15, 7, 0, 17, 15, 49, 8, 7, 2, 17, 15, 7, 3, 17, 15, 12, 5, 12, - 6, 12, 7, 12, 8, 12, 9, 12, 10, 11, 4, 11, 10, 11, 9, 11, 8, 11, - 7, 11, 6, 11, 5, 17, 16, 10, 3, 17, 17, 10, 3, 17, 18, 12, 11, 10, - 3, 17, 19, 11, 3, 17, 20, 12, 12, 14, 12, 12, 0, 11, 11, 18, 0, 12, - 15, 11, 0, 11, 15, 45, 0, 2, 21, 1, 4, 1, 0, 2, 8, 11, 0, 17, - 2, 12, 3, 11, 1, 11, 3, 11, 2, 17, 6, 2, 1, 1, 0, 0, 1, 5, - 14, 0, 7, 0, 17, 22, 56, 7, 2, 0, 0, 0, 1, 0, - ] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 2, 3, 2, 70, + 65, 3, 8, 1, 0, 0, 0, 0, 0, 0, 0, 10, 2, 8, 7, 70, 65, 32, + 67, 111, 105, 110, 10, 2, 31, 30, 104, 116, 116, 112, 58, 47, 47, 101, 120, 97, + 109, 112, 108, 101, 46, 99, 111, 109, 47, 102, 97, 118, 105, 99, 111, 110, 46, 105, + 99, 111, 10, 2, 19, 18, 104, 116, 116, 112, 58, 47, 47, 101, 120, 97, 109, 112, + 108, 101, 46, 99, 111, 109, 18, 97, 112, 116, 111, 115, 58, 58, 109, 101, 116, 97, + 100, 97, 116, 97, 95, 118, 49, 140, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 10, 69, 78, 79, 84, 95, 79, 87, 78, 69, 82, 52, 79, 110, 108, 121, 32, 102, + 117, 110, 103, 105, 98, 108, 101, 32, 97, 115, 115, 101, 116, 32, 109, 101, 116, 97, + 100, 97, 116, 97, 32, 111, 119, 110, 101, 114, 32, 99, 97, 110, 32, 109, 97, 107, + 101, 32, 99, 104, 97, 110, 103, 101, 115, 46, 1, 20, 77, 97, 110, 97, 103, 101, + 100, 70, 117, 110, 103, 105, 98, 108, 101, 65, 115, 115, 101, 116, 1, 3, 1, 24, + 48, 120, 49, 58, 58, 111, 98, 106, 101, 99, 116, 58, 58, 79, 98, 106, 101, 99, + 116, 71, 114, 111, 117, 112, 1, 12, 103, 101, 116, 95, 109, 101, 116, 97, 100, 97, + 116, 97, 1, 1, 0, 0, 2, 3, 16, 8, 3, 18, 8, 4, 20, 8, 5, 0, + 1, 0, 0, 3, 5, 14, 0, 7, 0, 17, 5, 56, 0, 2, 1, 0, 0, 0, + 10, 37, 11, 0, 7, 0, 17, 7, 12, 1, 14, 1, 12, 3, 10, 3, 56, 1, + 7, 2, 17, 9, 7, 0, 17, 9, 49, 8, 7, 3, 17, 9, 7, 4, 17, 9, + 17, 10, 10, 3, 17, 11, 12, 5, 10, 3, 17, 12, 12, 2, 10, 3, 17, 13, + 12, 6, 11, 3, 17, 14, 12, 4, 14, 4, 11, 5, 11, 6, 11, 2, 18, 0, + 45, 0, 2, 2, 1, 4, 1, 0, 23, 36, 10, 0, 17, 15, 17, 0, 12, 3, + 11, 0, 10, 3, 12, 4, 12, 7, 10, 4, 11, 7, 17, 15, 56, 2, 4, 14, + 5, 17, 7, 1, 17, 17, 39, 14, 4, 56, 3, 43, 0, 12, 6, 11, 1, 11, + 3, 56, 4, 12, 8, 10, 6, 16, 0, 11, 2, 17, 20, 12, 5, 11, 6, 16, + 1, 11, 8, 11, 5, 56, 5, 2, 3, 1, 4, 1, 0, 3, 6, 11, 1, 11, + 0, 17, 15, 11, 2, 17, 2, 2, 4, 1, 4, 0, 34, 18, 11, 1, 17, 0, + 12, 4, 10, 0, 17, 15, 10, 4, 56, 6, 12, 5, 11, 2, 11, 4, 56, 4, + 12, 6, 11, 0, 11, 5, 11, 6, 11, 3, 56, 7, 2, 0, 0, 0, 1, 0, + ] }); #[rustfmt::skip] pub static MODULE_FRAMEWORK_USECASES_OBJECTS: Lazy> = Lazy::new(|| { vec![ 161, 28, 235, 11, 7, 0, 0, 10, 11, 1, 0, 8, 2, 8, 12, 3, 20, 42, - 5, 62, 46, 7, 108, 186, 1, 8, 166, 2, 64, 6, 230, 2, 34, 16, 136, 3, - 161, 1, 10, 169, 4, 11, 12, 180, 4, 255, 1, 13, 179, 6, 2, 0, 0, 1, - 6, 1, 9, 1, 14, 0, 1, 8, 0, 0, 3, 8, 0, 2, 11, 2, 0, 0, - 5, 0, 1, 0, 1, 1, 7, 0, 2, 0, 1, 0, 8, 4, 1, 0, 1, 2, - 10, 2, 6, 0, 1, 2, 12, 7, 8, 0, 1, 0, 13, 10, 1, 0, 1, 3, - 15, 11, 11, 0, 1, 1, 6, 12, 0, 1, 5, 1, 8, 0, 3, 6, 12, 3, - 3, 1, 2, 1, 8, 2, 1, 6, 8, 2, 1, 12, 6, 5, 10, 2, 3, 3, - 8, 2, 12, 4, 6, 12, 3, 3, 5, 1, 3, 1, 7, 8, 0, 7, 111, 98, - 106, 101, 99, 116, 115, 7, 67, 111, 117, 110, 116, 101, 114, 5, 99, 111, 117, 110, - 116, 14, 65, 100, 100, 105, 116, 105, 111, 110, 97, 108, 68, 97, 116, 97, 4, 100, - 97, 116, 97, 11, 105, 110, 105, 116, 95, 109, 111, 100, 117, 108, 101, 6, 115, 105, - 103, 110, 101, 114, 10, 97, 100, 100, 114, 101, 115, 115, 95, 111, 102, 14, 99, 114, - 101, 97, 116, 101, 95, 111, 98, 106, 101, 99, 116, 115, 6, 111, 98, 106, 101, 99, - 116, 13, 99, 114, 101, 97, 116, 101, 95, 111, 98, 106, 101, 99, 116, 14, 67, 111, - 110, 115, 116, 114, 117, 99, 116, 111, 114, 82, 101, 102, 15, 103, 101, 110, 101, 114, - 97, 116, 101, 95, 115, 105, 103, 110, 101, 114, 23, 99, 114, 101, 97, 116, 101, 95, - 111, 98, 106, 101, 99, 116, 115, 95, 99, 111, 110, 102, 108, 105, 99, 116, 5, 101, - 114, 114, 111, 114, 16, 105, 110, 118, 97, 108, 105, 100, 95, 97, 114, 103, 117, 109, - 101, 110, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 205, 0, + 5, 62, 42, 7, 104, 186, 1, 8, 162, 2, 64, 6, 226, 2, 54, 16, 152, 3, + 130, 1, 10, 154, 4, 11, 12, 165, 4, 241, 1, 13, 150, 6, 2, 0, 0, 1, + 1, 1, 2, 1, 3, 0, 4, 8, 0, 0, 5, 8, 0, 2, 11, 2, 0, 0, + 6, 0, 1, 0, 1, 0, 7, 2, 1, 0, 1, 0, 8, 3, 1, 0, 1, 3, + 12, 3, 5, 0, 1, 2, 13, 5, 7, 0, 1, 2, 14, 8, 9, 0, 1, 1, + 15, 11, 11, 0, 1, 3, 6, 12, 3, 3, 0, 4, 6, 12, 3, 3, 5, 1, + 6, 12, 5, 8, 2, 3, 12, 5, 10, 2, 1, 5, 1, 2, 1, 8, 2, 1, + 6, 8, 2, 1, 12, 1, 7, 8, 1, 1, 3, 7, 111, 98, 106, 101, 99, 116, + 115, 5, 101, 114, 114, 111, 114, 6, 111, 98, 106, 101, 99, 116, 6, 115, 105, 103, + 110, 101, 114, 14, 65, 100, 100, 105, 116, 105, 111, 110, 97, 108, 68, 97, 116, 97, + 7, 67, 111, 117, 110, 116, 101, 114, 14, 99, 114, 101, 97, 116, 101, 95, 111, 98, + 106, 101, 99, 116, 115, 23, 99, 114, 101, 97, 116, 101, 95, 111, 98, 106, 101, 99, + 116, 115, 95, 99, 111, 110, 102, 108, 105, 99, 116, 11, 105, 110, 105, 116, 95, 109, + 111, 100, 117, 108, 101, 4, 100, 97, 116, 97, 5, 99, 111, 117, 110, 116, 14, 67, + 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, 82, 101, 102, 10, 97, 100, 100, 114, + 101, 115, 115, 95, 111, 102, 13, 99, 114, 101, 97, 116, 101, 95, 111, 98, 106, 101, + 99, 116, 15, 103, 101, 110, 101, 114, 97, 116, 101, 95, 115, 105, 103, 110, 101, 114, + 16, 105, 110, 118, 97, 108, 105, 100, 95, 97, 114, 103, 117, 109, 101, 110, 116, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 8, 1, 0, 0, 0, 0, 0, 0, + 0, 3, 8, 2, 0, 0, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 205, 20, 99, 111, 109, 112, 105, 108, - 97, 116, 105, 111, 110, 95, 109, 101, 116, 97, 100, 97, 116, 97, 9, 0, 3, 50, - 46, 48, 3, 50, 46, 49, 18, 97, 112, 116, 111, 115, 58, 58, 109, 101, 116, 97, - 100, 97, 116, 97, 95, 118, 49, 110, 2, 1, 0, 0, 0, 0, 0, 0, 0, 29, - 69, 67, 79, 85, 78, 84, 69, 82, 95, 82, 69, 83, 79, 85, 82, 67, 69, 95, - 78, 79, 84, 95, 80, 82, 69, 83, 69, 78, 84, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 15, 69, 78, 79, 84, 95, 65, 85, 84, 72, 79, 82, 73, 90, 69, 68, - 0, 1, 14, 65, 100, 100, 105, 116, 105, 111, 110, 97, 108, 68, 97, 116, 97, 1, - 3, 1, 24, 48, 120, 49, 58, 58, 111, 98, 106, 101, 99, 116, 58, 58, 79, 98, - 106, 101, 99, 116, 71, 114, 111, 117, 112, 0, 0, 2, 1, 2, 3, 1, 2, 1, - 4, 10, 2, 0, 0, 0, 0, 3, 16, 10, 0, 17, 1, 7, 0, 33, 4, 12, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 12, 1, 11, 0, 11, 1, 45, - 0, 2, 11, 0, 1, 6, 2, 0, 0, 0, 0, 0, 0, 0, 39, 2, 1, 4, - 0, 9, 48, 11, 0, 17, 1, 12, 3, 64, 5, 0, 0, 0, 0, 0, 0, 0, - 0, 12, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, 5, 10, 5, 10, 2, - 35, 3, 12, 5, 23, 13, 4, 10, 5, 6, 100, 0, 0, 0, 0, 0, 0, 0, - 25, 51, 68, 5, 11, 5, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 12, 5, - 5, 7, 10, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 36, 4, 47, 10, 3, - 17, 3, 12, 7, 10, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 36, 3, 35, - 5, 42, 14, 7, 17, 4, 12, 8, 14, 8, 10, 4, 18, 1, 45, 1, 11, 1, - 6, 1, 0, 0, 0, 0, 0, 0, 0, 23, 12, 1, 5, 23, 2, 5, 1, 4, - 1, 0, 12, 24, 10, 3, 41, 0, 4, 19, 11, 3, 42, 0, 12, 4, 10, 4, - 16, 0, 20, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 11, 4, 15, 0, 21, - 11, 0, 11, 1, 11, 2, 17, 2, 2, 11, 0, 1, 6, 1, 0, 0, 0, 0, - 0, 0, 0, 17, 6, 39, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 171, 205, 18, 97, 112, 116, 111, 115, 58, 58, 109, + 101, 116, 97, 100, 97, 116, 97, 95, 118, 49, 110, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 29, 69, 67, 79, 85, 78, 84, 69, 82, 95, 82, 69, 83, 79, 85, 82, + 67, 69, 95, 78, 79, 84, 95, 80, 82, 69, 83, 69, 78, 84, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 15, 69, 78, 79, 84, 95, 65, 85, 84, 72, 79, 82, 73, + 90, 69, 68, 0, 1, 14, 65, 100, 100, 105, 116, 105, 111, 110, 97, 108, 68, 97, + 116, 97, 1, 3, 1, 24, 48, 120, 49, 58, 58, 111, 98, 106, 101, 99, 116, 58, + 58, 79, 98, 106, 101, 99, 116, 71, 114, 111, 117, 112, 0, 0, 2, 1, 9, 10, + 2, 1, 2, 1, 10, 3, 0, 1, 4, 0, 4, 48, 11, 0, 17, 3, 12, 6, + 64, 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 12, 4, 10, 4, 10, 2, 35, 4, 23, 5, 12, 13, 7, 10, 4, + 6, 100, 0, 0, 0, 0, 0, 0, 0, 25, 51, 68, 6, 11, 4, 6, 1, 0, + 0, 0, 0, 0, 0, 0, 22, 12, 4, 5, 7, 10, 1, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 4, 47, 5, 28, 10, 6, 17, 4, 12, 3, 10, 2, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 36, 4, 42, 14, 3, 17, 5, 12, 5, 14, + 5, 10, 7, 18, 0, 45, 0, 11, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, + 23, 12, 1, 5, 23, 2, 1, 1, 4, 1, 1, 10, 25, 10, 3, 41, 1, 4, + 4, 5, 9, 11, 0, 1, 7, 0, 17, 6, 39, 11, 3, 42, 1, 12, 4, 10, + 4, 16, 0, 20, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 11, 4, 15, 0, + 21, 11, 0, 11, 1, 11, 2, 17, 0, 2, 2, 0, 0, 0, 1, 15, 10, 0, + 17, 3, 7, 2, 33, 4, 6, 5, 10, 11, 0, 1, 7, 1, 39, 11, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 1, 45, 1, 2, 1, 0, 0, ] }); @@ -1281,308 +1243,352 @@ pub static MODULE_FRAMEWORK_USECASES_OBJECTS: Lazy> = Lazy::new(|| { pub static MODULE_FRAMEWORK_USECASES_RESOURCE_GROUPS_EXAMPLE: Lazy> = Lazy::new(|| { vec![ 161, 28, 235, 11, 7, 0, 0, 10, 11, 1, 0, 8, 2, 8, 40, 3, 48, 60, - 5, 108, 97, 7, 205, 1, 199, 2, 8, 148, 4, 64, 6, 212, 4, 13, 16, 225, - 4, 146, 5, 10, 243, 9, 69, 12, 184, 10, 237, 10, 13, 165, 21, 32, 0, 0, - 1, 7, 1, 16, 1, 18, 0, 1, 0, 0, 0, 3, 8, 0, 1, 6, 7, 0, - 0, 8, 8, 0, 0, 9, 8, 0, 0, 10, 8, 0, 0, 11, 8, 0, 0, 12, - 8, 0, 0, 13, 8, 0, 0, 14, 8, 0, 0, 15, 0, 1, 0, 1, 2, 17, - 2, 3, 0, 1, 3, 19, 4, 4, 0, 1, 0, 20, 6, 1, 0, 1, 3, 21, - 4, 4, 0, 1, 1, 22, 7, 8, 0, 1, 0, 23, 10, 1, 0, 1, 0, 24, - 11, 1, 0, 1, 0, 25, 12, 1, 0, 1, 0, 26, 13, 1, 0, 1, 3, 6, - 12, 3, 8, 2, 0, 1, 6, 12, 1, 5, 1, 3, 11, 5, 3, 7, 8, 2, - 8, 1, 8, 3, 8, 4, 8, 5, 8, 6, 8, 7, 8, 8, 8, 9, 2, 6, - 12, 3, 1, 10, 2, 1, 8, 2, 10, 5, 3, 8, 1, 8, 3, 8, 4, 8, - 5, 8, 6, 8, 7, 8, 8, 8, 9, 5, 6, 12, 3, 3, 3, 8, 2, 4, - 6, 12, 3, 3, 8, 2, 5, 6, 12, 6, 12, 3, 3, 8, 2, 4, 6, 12, - 6, 12, 3, 8, 2, 23, 114, 101, 115, 111, 117, 114, 99, 101, 95, 103, 114, 111, - 117, 112, 115, 95, 101, 120, 97, 109, 112, 108, 101, 12, 69, 120, 97, 109, 112, 108, - 101, 71, 114, 111, 117, 112, 11, 100, 117, 109, 109, 121, 95, 102, 105, 101, 108, 100, - 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, 99, 101, 48, 5, - 118, 97, 108, 117, 101, 4, 110, 97, 109, 101, 6, 83, 116, 114, 105, 110, 103, 6, - 115, 116, 114, 105, 110, 103, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, - 117, 114, 99, 101, 49, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, - 114, 99, 101, 50, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, - 99, 101, 51, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, 99, - 101, 52, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, 99, 101, - 53, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, 99, 101, 54, - 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, 99, 101, 55, 3, - 115, 101, 116, 6, 115, 105, 103, 110, 101, 114, 10, 97, 100, 100, 114, 101, 115, 115, - 95, 111, 102, 5, 101, 114, 114, 111, 114, 16, 105, 110, 118, 97, 108, 105, 100, 95, - 97, 114, 103, 117, 109, 101, 110, 116, 12, 114, 101, 97, 100, 95, 111, 114, 95, 105, - 110, 105, 116, 13, 105, 110, 118, 97, 108, 105, 100, 95, 115, 116, 97, 116, 101, 4, - 117, 116, 102, 56, 5, 115, 101, 116, 95, 51, 12, 115, 101, 116, 95, 97, 110, 100, - 95, 114, 101, 97, 100, 14, 115, 101, 116, 95, 97, 110, 100, 95, 114, 101, 97, 100, - 95, 112, 5, 115, 101, 116, 95, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 108, 116, 7, 224, 1, 199, 2, 8, 167, 4, 64, 6, 231, 4, 33, 16, 136, + 5, 243, 4, 10, 251, 9, 69, 12, 192, 10, 208, 10, 13, 144, 21, 32, 0, 0, + 1, 1, 1, 2, 1, 3, 0, 4, 0, 0, 0, 5, 8, 0, 0, 6, 8, 0, + 0, 7, 8, 0, 0, 8, 8, 0, 0, 9, 8, 0, 0, 10, 8, 0, 0, 11, + 8, 0, 0, 12, 8, 0, 3, 14, 7, 0, 0, 13, 0, 1, 0, 1, 0, 15, + 2, 1, 0, 1, 0, 16, 3, 1, 0, 1, 0, 17, 4, 1, 0, 1, 0, 18, + 5, 1, 0, 1, 0, 19, 6, 1, 0, 1, 2, 23, 8, 9, 0, 1, 1, 24, + 10, 10, 0, 1, 1, 25, 10, 10, 0, 1, 3, 26, 11, 12, 0, 1, 2, 6, + 12, 3, 0, 3, 6, 12, 3, 8, 9, 5, 6, 12, 3, 3, 3, 8, 9, 4, + 6, 12, 3, 3, 8, 9, 5, 6, 12, 6, 12, 3, 3, 8, 9, 4, 6, 12, + 6, 12, 3, 8, 9, 9, 5, 8, 1, 8, 6, 8, 7, 8, 8, 8, 2, 8, + 3, 8, 4, 8, 5, 1, 6, 12, 1, 5, 1, 3, 1, 10, 2, 1, 8, 9, + 17, 5, 7, 8, 1, 8, 1, 7, 8, 6, 8, 6, 7, 8, 7, 8, 7, 7, + 8, 8, 8, 8, 7, 8, 2, 8, 2, 7, 8, 3, 8, 3, 7, 8, 4, 8, + 4, 7, 8, 5, 8, 5, 23, 114, 101, 115, 111, 117, 114, 99, 101, 95, 103, 114, + 111, 117, 112, 115, 95, 101, 120, 97, 109, 112, 108, 101, 5, 101, 114, 114, 111, 114, + 6, 115, 105, 103, 110, 101, 114, 6, 115, 116, 114, 105, 110, 103, 12, 69, 120, 97, + 109, 112, 108, 101, 71, 114, 111, 117, 112, 16, 69, 120, 97, 109, 112, 108, 101, 82, + 101, 115, 111, 117, 114, 99, 101, 48, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, + 115, 111, 117, 114, 99, 101, 49, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, + 111, 117, 114, 99, 101, 50, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, + 117, 114, 99, 101, 51, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, + 114, 99, 101, 52, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, + 99, 101, 53, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, 99, + 101, 54, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, 99, 101, + 55, 12, 114, 101, 97, 100, 95, 111, 114, 95, 105, 110, 105, 116, 6, 83, 116, 114, + 105, 110, 103, 3, 115, 101, 116, 5, 115, 101, 116, 95, 51, 12, 115, 101, 116, 95, + 97, 110, 100, 95, 114, 101, 97, 100, 14, 115, 101, 116, 95, 97, 110, 100, 95, 114, + 101, 97, 100, 95, 112, 5, 115, 101, 116, 95, 112, 11, 100, 117, 109, 109, 121, 95, + 102, 105, 101, 108, 100, 5, 118, 97, 108, 117, 101, 4, 110, 97, 109, 101, 10, 97, + 100, 100, 114, 101, 115, 115, 95, 111, 102, 16, 105, 110, 118, 97, 108, 105, 100, 95, + 97, 114, 103, 117, 109, 101, 110, 116, 13, 105, 110, 118, 97, 108, 105, 100, 95, 115, + 116, 97, 116, 101, 4, 117, 116, 102, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 10, 2, 10, 9, 105, 110, 105, 116, 95, 110, 97, 109, 101, 20, 99, 111, 109, 112, - 105, 108, 97, 116, 105, 111, 110, 95, 109, 101, 116, 97, 100, 97, 116, 97, 9, 0, - 3, 50, 46, 48, 3, 50, 46, 49, 18, 97, 112, 116, 111, 115, 58, 58, 109, 101, - 116, 97, 100, 97, 116, 97, 95, 118, 49, 222, 4, 2, 1, 0, 0, 0, 0, 0, - 0, 0, 16, 69, 73, 78, 68, 69, 88, 95, 84, 79, 79, 95, 76, 65, 82, 71, - 69, 0, 2, 0, 0, 0, 0, 0, 0, 0, 16, 69, 86, 65, 76, 85, 69, 95, - 84, 79, 79, 95, 76, 65, 82, 71, 69, 0, 9, 12, 69, 120, 97, 109, 112, 108, - 101, 71, 114, 111, 117, 112, 1, 2, 1, 6, 103, 108, 111, 98, 97, 108, 16, 69, - 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, 99, 101, 48, 1, 3, 1, - 45, 48, 120, 97, 98, 99, 100, 58, 58, 114, 101, 115, 111, 117, 114, 99, 101, 95, - 103, 114, 111, 117, 112, 115, 95, 101, 120, 97, 109, 112, 108, 101, 58, 58, 69, 120, - 97, 109, 112, 108, 101, 71, 114, 111, 117, 112, 16, 69, 120, 97, 109, 112, 108, 101, - 82, 101, 115, 111, 117, 114, 99, 101, 49, 1, 3, 1, 45, 48, 120, 97, 98, 99, - 100, 58, 58, 114, 101, 115, 111, 117, 114, 99, 101, 95, 103, 114, 111, 117, 112, 115, - 95, 101, 120, 97, 109, 112, 108, 101, 58, 58, 69, 120, 97, 109, 112, 108, 101, 71, - 114, 111, 117, 112, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, - 99, 101, 50, 1, 3, 1, 45, 48, 120, 97, 98, 99, 100, 58, 58, 114, 101, 115, - 111, 117, 114, 99, 101, 95, 103, 114, 111, 117, 112, 115, 95, 101, 120, 97, 109, 112, - 108, 101, 58, 58, 69, 120, 97, 109, 112, 108, 101, 71, 114, 111, 117, 112, 16, 69, - 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, 99, 101, 51, 1, 3, 1, - 45, 48, 120, 97, 98, 99, 100, 58, 58, 114, 101, 115, 111, 117, 114, 99, 101, 95, - 103, 114, 111, 117, 112, 115, 95, 101, 120, 97, 109, 112, 108, 101, 58, 58, 69, 120, - 97, 109, 112, 108, 101, 71, 114, 111, 117, 112, 16, 69, 120, 97, 109, 112, 108, 101, - 82, 101, 115, 111, 117, 114, 99, 101, 52, 1, 3, 1, 45, 48, 120, 97, 98, 99, - 100, 58, 58, 114, 101, 115, 111, 117, 114, 99, 101, 95, 103, 114, 111, 117, 112, 115, - 95, 101, 120, 97, 109, 112, 108, 101, 58, 58, 69, 120, 97, 109, 112, 108, 101, 71, - 114, 111, 117, 112, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, - 99, 101, 53, 1, 3, 1, 45, 48, 120, 97, 98, 99, 100, 58, 58, 114, 101, 115, - 111, 117, 114, 99, 101, 95, 103, 114, 111, 117, 112, 115, 95, 101, 120, 97, 109, 112, - 108, 101, 58, 58, 69, 120, 97, 109, 112, 108, 101, 71, 114, 111, 117, 112, 16, 69, - 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, 99, 101, 54, 1, 3, 1, - 45, 48, 120, 97, 98, 99, 100, 58, 58, 114, 101, 115, 111, 117, 114, 99, 101, 95, - 103, 114, 111, 117, 112, 115, 95, 101, 120, 97, 109, 112, 108, 101, 58, 58, 69, 120, - 97, 109, 112, 108, 101, 71, 114, 111, 117, 112, 16, 69, 120, 97, 109, 112, 108, 101, - 82, 101, 115, 111, 117, 114, 99, 101, 55, 1, 3, 1, 45, 48, 120, 97, 98, 99, - 100, 58, 58, 114, 101, 115, 111, 117, 114, 99, 101, 95, 103, 114, 111, 117, 112, 115, - 95, 101, 120, 97, 109, 112, 108, 101, 58, 58, 69, 120, 97, 109, 112, 108, 101, 71, - 114, 111, 117, 112, 0, 0, 2, 1, 2, 1, 1, 2, 2, 4, 3, 5, 8, 2, - 3, 2, 2, 4, 3, 5, 8, 2, 4, 2, 2, 4, 3, 5, 8, 2, 5, 2, - 2, 4, 3, 5, 8, 2, 6, 2, 2, 4, 3, 5, 8, 2, 7, 2, 2, 4, - 3, 5, 8, 2, 8, 2, 2, 4, 3, 5, 8, 2, 9, 2, 2, 4, 3, 5, - 8, 2, 0, 1, 4, 8, 1, 2, 3, 4, 5, 6, 7, 8, 5, 215, 1, 10, - 0, 17, 1, 12, 3, 10, 1, 6, 8, 0, 0, 0, 0, 0, 0, 0, 35, 4, - 210, 1, 10, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 32, 10, 3, - 41, 1, 4, 24, 11, 0, 1, 11, 3, 42, 1, 15, 0, 12, 5, 11, 2, 11, - 5, 21, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 18, 1, 12, 6, - 11, 0, 11, 6, 45, 1, 5, 23, 10, 1, 6, 1, 0, 0, 0, 0, 0, 0, - 0, 33, 4, 57, 10, 3, 41, 2, 4, 49, 11, 0, 1, 11, 3, 42, 2, 15, - 1, 12, 5, 11, 2, 11, 5, 21, 5, 23, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 2, 18, 2, 12, 7, 11, 0, 11, 7, 45, 2, 5, 23, 10, 1, 6, - 2, 0, 0, 0, 0, 0, 0, 0, 33, 4, 82, 10, 3, 41, 3, 4, 74, 11, - 0, 1, 11, 3, 42, 3, 15, 2, 12, 5, 11, 2, 11, 5, 21, 5, 23, 6, - 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 18, 3, 12, 8, 11, 0, 11, 8, - 45, 3, 5, 23, 10, 1, 6, 3, 0, 0, 0, 0, 0, 0, 0, 33, 4, 107, - 10, 3, 41, 4, 4, 99, 11, 0, 1, 11, 3, 42, 4, 15, 3, 12, 5, 11, - 2, 11, 5, 21, 5, 23, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 18, - 4, 12, 9, 11, 0, 11, 9, 45, 4, 5, 23, 10, 1, 6, 4, 0, 0, 0, - 0, 0, 0, 0, 33, 4, 132, 1, 10, 3, 41, 5, 4, 124, 11, 0, 1, 11, - 3, 42, 5, 15, 4, 12, 5, 11, 2, 11, 5, 21, 5, 23, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 2, 18, 5, 12, 10, 11, 0, 11, 10, 45, 5, 5, - 23, 10, 1, 6, 5, 0, 0, 0, 0, 0, 0, 0, 33, 4, 157, 1, 10, 3, - 41, 6, 4, 149, 1, 11, 0, 1, 11, 3, 42, 6, 15, 5, 12, 5, 11, 2, - 11, 5, 21, 5, 23, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 18, 6, - 12, 11, 11, 0, 11, 11, 45, 6, 5, 23, 10, 1, 6, 6, 0, 0, 0, 0, - 0, 0, 0, 33, 4, 182, 1, 10, 3, 41, 7, 4, 174, 1, 11, 0, 1, 11, - 3, 42, 7, 15, 6, 12, 5, 11, 2, 11, 5, 21, 5, 23, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 2, 18, 7, 12, 12, 11, 0, 11, 12, 45, 7, 5, - 23, 11, 1, 6, 7, 0, 0, 0, 0, 0, 0, 0, 33, 4, 207, 1, 10, 3, - 41, 8, 4, 199, 1, 11, 0, 1, 11, 3, 42, 8, 15, 7, 12, 5, 11, 2, - 11, 5, 21, 5, 23, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 18, 8, - 12, 13, 11, 0, 11, 13, 45, 8, 5, 23, 11, 0, 1, 5, 23, 11, 0, 1, - 6, 1, 0, 0, 0, 0, 0, 0, 0, 17, 2, 39, 3, 1, 4, 8, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 248, 1, 10, 0, 17, 1, 12, 2, 10, 1, 6, - 8, 0, 0, 0, 0, 0, 0, 0, 35, 4, 243, 1, 10, 1, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 33, 4, 37, 10, 2, 41, 1, 4, 28, 11, 0, 1, 11, - 2, 42, 1, 16, 8, 20, 6, 0, 16, 165, 212, 232, 0, 0, 0, 35, 4, 25, - 5, 24, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 17, 4, 39, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 0, 17, 5, 18, 1, 12, 4, 11, 0, 11, 4, - 45, 1, 5, 24, 10, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 33, 4, 66, - 10, 2, 41, 2, 4, 57, 11, 0, 1, 11, 2, 42, 2, 16, 9, 20, 6, 0, - 16, 165, 212, 232, 0, 0, 0, 35, 4, 54, 5, 24, 6, 2, 0, 0, 0, 0, - 0, 0, 0, 17, 4, 39, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 17, - 5, 18, 2, 12, 5, 11, 0, 11, 5, 45, 2, 5, 24, 10, 1, 6, 2, 0, - 0, 0, 0, 0, 0, 0, 33, 4, 95, 10, 2, 41, 3, 4, 86, 11, 0, 1, - 11, 2, 42, 3, 16, 10, 20, 6, 0, 16, 165, 212, 232, 0, 0, 0, 35, 4, - 83, 5, 24, 6, 2, 0, 0, 0, 0, 0, 0, 0, 17, 4, 39, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 0, 17, 5, 18, 3, 12, 6, 11, 0, 11, 6, - 45, 3, 5, 24, 10, 1, 6, 3, 0, 0, 0, 0, 0, 0, 0, 33, 4, 124, - 10, 2, 41, 4, 4, 115, 11, 0, 1, 11, 2, 42, 4, 16, 11, 20, 6, 0, - 16, 165, 212, 232, 0, 0, 0, 35, 4, 112, 5, 24, 6, 2, 0, 0, 0, 0, - 0, 0, 0, 17, 4, 39, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 17, - 5, 18, 4, 12, 7, 11, 0, 11, 7, 45, 4, 5, 24, 10, 1, 6, 4, 0, - 0, 0, 0, 0, 0, 0, 33, 4, 153, 1, 10, 2, 41, 5, 4, 144, 1, 11, - 0, 1, 11, 2, 42, 5, 16, 12, 20, 6, 0, 16, 165, 212, 232, 0, 0, 0, - 35, 4, 141, 1, 5, 24, 6, 2, 0, 0, 0, 0, 0, 0, 0, 17, 4, 39, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 17, 5, 18, 5, 12, 8, 11, - 0, 11, 8, 45, 5, 5, 24, 10, 1, 6, 5, 0, 0, 0, 0, 0, 0, 0, - 33, 4, 182, 1, 10, 2, 41, 6, 4, 173, 1, 11, 0, 1, 11, 2, 42, 6, - 16, 13, 20, 6, 0, 16, 165, 212, 232, 0, 0, 0, 35, 4, 170, 1, 5, 24, - 6, 2, 0, 0, 0, 0, 0, 0, 0, 17, 4, 39, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 7, 0, 17, 5, 18, 6, 12, 9, 11, 0, 11, 9, 45, 6, 5, - 24, 10, 1, 6, 6, 0, 0, 0, 0, 0, 0, 0, 33, 4, 211, 1, 10, 2, - 41, 7, 4, 202, 1, 11, 0, 1, 11, 2, 42, 7, 16, 14, 20, 6, 0, 16, - 165, 212, 232, 0, 0, 0, 35, 4, 199, 1, 5, 24, 6, 2, 0, 0, 0, 0, - 0, 0, 0, 17, 4, 39, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 17, - 5, 18, 7, 12, 10, 11, 0, 11, 10, 45, 7, 5, 24, 11, 1, 6, 7, 0, - 0, 0, 0, 0, 0, 0, 33, 4, 240, 1, 10, 2, 41, 8, 4, 231, 1, 11, - 0, 1, 11, 2, 42, 8, 16, 15, 20, 6, 0, 16, 165, 212, 232, 0, 0, 0, - 35, 4, 228, 1, 5, 24, 6, 2, 0, 0, 0, 0, 0, 0, 0, 17, 4, 39, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 17, 5, 18, 8, 12, 11, 11, - 0, 11, 11, 45, 8, 5, 24, 11, 0, 1, 5, 24, 11, 0, 1, 6, 1, 0, - 0, 0, 0, 0, 0, 0, 17, 2, 39, 6, 1, 4, 8, 1, 2, 3, 4, 5, - 6, 7, 8, 1, 13, 10, 0, 11, 1, 10, 4, 17, 0, 10, 0, 11, 2, 10, - 4, 17, 0, 11, 0, 11, 3, 11, 4, 17, 0, 2, 7, 1, 4, 8, 1, 2, - 3, 4, 5, 6, 7, 8, 1, 8, 10, 0, 11, 1, 11, 3, 17, 0, 11, 0, - 11, 2, 17, 3, 2, 8, 1, 4, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, - 8, 11, 1, 11, 2, 11, 3, 11, 4, 17, 7, 11, 0, 1, 2, 9, 1, 4, - 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 7, 11, 1, 11, 2, 11, 3, 17, - 0, 11, 0, 1, 2, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, - 1, 8, 1, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, - 0, 0, + 0, 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 3, 8, 1, 0, 0, 0, 0, 0, 0, 0, 3, 8, 2, 0, 0, 0, 0, + 0, 0, 0, 10, 2, 10, 9, 105, 110, 105, 116, 95, 110, 97, 109, 101, 18, 97, + 112, 116, 111, 115, 58, 58, 109, 101, 116, 97, 100, 97, 116, 97, 95, 118, 49, 222, + 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 16, 69, 73, 78, 68, 69, 88, 95, + 84, 79, 79, 95, 76, 65, 82, 71, 69, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 16, 69, 86, 65, 76, 85, 69, 95, 84, 79, 79, 95, 76, 65, 82, 71, 69, 0, + 9, 12, 69, 120, 97, 109, 112, 108, 101, 71, 114, 111, 117, 112, 1, 2, 1, 6, + 103, 108, 111, 98, 97, 108, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, + 117, 114, 99, 101, 48, 1, 3, 1, 45, 48, 120, 97, 98, 99, 100, 58, 58, 114, + 101, 115, 111, 117, 114, 99, 101, 95, 103, 114, 111, 117, 112, 115, 95, 101, 120, 97, + 109, 112, 108, 101, 58, 58, 69, 120, 97, 109, 112, 108, 101, 71, 114, 111, 117, 112, + 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, 99, 101, 49, 1, + 3, 1, 45, 48, 120, 97, 98, 99, 100, 58, 58, 114, 101, 115, 111, 117, 114, 99, + 101, 95, 103, 114, 111, 117, 112, 115, 95, 101, 120, 97, 109, 112, 108, 101, 58, 58, + 69, 120, 97, 109, 112, 108, 101, 71, 114, 111, 117, 112, 16, 69, 120, 97, 109, 112, + 108, 101, 82, 101, 115, 111, 117, 114, 99, 101, 50, 1, 3, 1, 45, 48, 120, 97, + 98, 99, 100, 58, 58, 114, 101, 115, 111, 117, 114, 99, 101, 95, 103, 114, 111, 117, + 112, 115, 95, 101, 120, 97, 109, 112, 108, 101, 58, 58, 69, 120, 97, 109, 112, 108, + 101, 71, 114, 111, 117, 112, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, + 117, 114, 99, 101, 51, 1, 3, 1, 45, 48, 120, 97, 98, 99, 100, 58, 58, 114, + 101, 115, 111, 117, 114, 99, 101, 95, 103, 114, 111, 117, 112, 115, 95, 101, 120, 97, + 109, 112, 108, 101, 58, 58, 69, 120, 97, 109, 112, 108, 101, 71, 114, 111, 117, 112, + 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, 99, 101, 52, 1, + 3, 1, 45, 48, 120, 97, 98, 99, 100, 58, 58, 114, 101, 115, 111, 117, 114, 99, + 101, 95, 103, 114, 111, 117, 112, 115, 95, 101, 120, 97, 109, 112, 108, 101, 58, 58, + 69, 120, 97, 109, 112, 108, 101, 71, 114, 111, 117, 112, 16, 69, 120, 97, 109, 112, + 108, 101, 82, 101, 115, 111, 117, 114, 99, 101, 53, 1, 3, 1, 45, 48, 120, 97, + 98, 99, 100, 58, 58, 114, 101, 115, 111, 117, 114, 99, 101, 95, 103, 114, 111, 117, + 112, 115, 95, 101, 120, 97, 109, 112, 108, 101, 58, 58, 69, 120, 97, 109, 112, 108, + 101, 71, 114, 111, 117, 112, 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, + 117, 114, 99, 101, 54, 1, 3, 1, 45, 48, 120, 97, 98, 99, 100, 58, 58, 114, + 101, 115, 111, 117, 114, 99, 101, 95, 103, 114, 111, 117, 112, 115, 95, 101, 120, 97, + 109, 112, 108, 101, 58, 58, 69, 120, 97, 109, 112, 108, 101, 71, 114, 111, 117, 112, + 16, 69, 120, 97, 109, 112, 108, 101, 82, 101, 115, 111, 117, 114, 99, 101, 55, 1, + 3, 1, 45, 48, 120, 97, 98, 99, 100, 58, 58, 114, 101, 115, 111, 117, 114, 99, + 101, 95, 103, 114, 111, 117, 112, 115, 95, 101, 120, 97, 109, 112, 108, 101, 58, 58, + 69, 120, 97, 109, 112, 108, 101, 71, 114, 111, 117, 112, 0, 0, 2, 1, 20, 1, + 1, 2, 2, 21, 3, 22, 8, 9, 2, 2, 2, 21, 3, 22, 8, 9, 3, 2, + 2, 21, 3, 22, 8, 9, 4, 2, 2, 21, 3, 22, 8, 9, 5, 2, 2, 21, + 3, 22, 8, 9, 6, 2, 2, 21, 3, 22, 8, 9, 7, 2, 2, 21, 3, 22, + 8, 9, 8, 2, 2, 21, 3, 22, 8, 9, 0, 1, 4, 8, 1, 2, 3, 4, + 5, 6, 7, 8, 7, 128, 2, 10, 0, 17, 6, 12, 2, 10, 1, 6, 8, 0, + 0, 0, 0, 0, 0, 0, 35, 4, 8, 5, 13, 11, 0, 1, 7, 0, 17, 7, + 39, 10, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 43, 10, 2, 41, + 1, 4, 34, 11, 0, 1, 11, 2, 42, 1, 16, 0, 20, 6, 0, 16, 165, 212, + 232, 0, 0, 0, 35, 4, 30, 5, 33, 7, 1, 17, 8, 39, 5, 42, 6, 0, + 0, 0, 0, 0, 0, 0, 0, 7, 2, 17, 9, 18, 1, 12, 3, 11, 0, 11, + 3, 45, 1, 5, 255, 1, 10, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 33, + 4, 73, 10, 2, 41, 2, 4, 64, 11, 0, 1, 11, 2, 42, 2, 16, 1, 20, + 6, 0, 16, 165, 212, 232, 0, 0, 0, 35, 4, 60, 5, 63, 7, 1, 17, 8, + 39, 5, 72, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 17, 9, 18, 2, + 12, 7, 11, 0, 11, 7, 45, 2, 5, 255, 1, 10, 1, 6, 2, 0, 0, 0, + 0, 0, 0, 0, 33, 4, 103, 10, 2, 41, 3, 4, 94, 11, 0, 1, 11, 2, + 42, 3, 16, 2, 20, 6, 0, 16, 165, 212, 232, 0, 0, 0, 35, 4, 90, 5, + 93, 7, 1, 17, 8, 39, 5, 102, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, + 2, 17, 9, 18, 3, 12, 8, 11, 0, 11, 8, 45, 3, 5, 255, 1, 10, 1, + 6, 3, 0, 0, 0, 0, 0, 0, 0, 33, 4, 133, 1, 10, 2, 41, 4, 4, + 124, 11, 0, 1, 11, 2, 42, 4, 16, 3, 20, 6, 0, 16, 165, 212, 232, 0, + 0, 0, 35, 4, 120, 5, 123, 7, 1, 17, 8, 39, 5, 132, 1, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 7, 2, 17, 9, 18, 4, 12, 9, 11, 0, 11, 9, + 45, 4, 5, 255, 1, 10, 1, 6, 4, 0, 0, 0, 0, 0, 0, 0, 33, 4, + 163, 1, 10, 2, 41, 5, 4, 154, 1, 11, 0, 1, 11, 2, 42, 5, 16, 4, + 20, 6, 0, 16, 165, 212, 232, 0, 0, 0, 35, 4, 150, 1, 5, 153, 1, 7, + 1, 17, 8, 39, 5, 162, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, + 17, 9, 18, 5, 12, 10, 11, 0, 11, 10, 45, 5, 5, 255, 1, 10, 1, 6, + 5, 0, 0, 0, 0, 0, 0, 0, 33, 4, 193, 1, 10, 2, 41, 6, 4, 184, + 1, 11, 0, 1, 11, 2, 42, 6, 16, 5, 20, 6, 0, 16, 165, 212, 232, 0, + 0, 0, 35, 4, 180, 1, 5, 183, 1, 7, 1, 17, 8, 39, 5, 192, 1, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 17, 9, 18, 6, 12, 4, 11, 0, + 11, 4, 45, 6, 5, 255, 1, 10, 1, 6, 6, 0, 0, 0, 0, 0, 0, 0, + 33, 4, 223, 1, 10, 2, 41, 7, 4, 214, 1, 11, 0, 1, 11, 2, 42, 7, + 16, 6, 20, 6, 0, 16, 165, 212, 232, 0, 0, 0, 35, 4, 210, 1, 5, 213, + 1, 7, 1, 17, 8, 39, 5, 222, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 2, 17, 9, 18, 7, 12, 5, 11, 0, 11, 5, 45, 7, 5, 255, 1, 11, + 1, 6, 7, 0, 0, 0, 0, 0, 0, 0, 33, 4, 253, 1, 10, 2, 41, 8, + 4, 244, 1, 11, 0, 1, 11, 2, 42, 8, 16, 7, 20, 6, 0, 16, 165, 212, + 232, 0, 0, 0, 35, 4, 240, 1, 5, 243, 1, 7, 1, 17, 8, 39, 5, 252, + 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 17, 9, 18, 8, 12, 6, + 11, 0, 11, 6, 45, 8, 5, 255, 1, 11, 0, 1, 2, 1, 1, 4, 8, 1, + 2, 3, 4, 5, 6, 7, 8, 13, 216, 1, 10, 0, 17, 6, 12, 3, 10, 1, + 6, 8, 0, 0, 0, 0, 0, 0, 0, 35, 4, 8, 5, 13, 11, 0, 1, 7, + 0, 17, 7, 39, 10, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 38, + 10, 3, 41, 1, 4, 30, 11, 0, 1, 11, 3, 42, 1, 12, 4, 11, 2, 11, + 4, 15, 8, 21, 5, 37, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 18, + 1, 12, 5, 11, 0, 11, 5, 45, 1, 5, 215, 1, 10, 1, 6, 1, 0, 0, + 0, 0, 0, 0, 0, 33, 4, 63, 10, 3, 41, 2, 4, 55, 11, 0, 1, 11, + 3, 42, 2, 12, 12, 11, 2, 11, 12, 15, 9, 21, 5, 62, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 11, 2, 18, 2, 12, 13, 11, 0, 11, 13, 45, 2, 5, + 215, 1, 10, 1, 6, 2, 0, 0, 0, 0, 0, 0, 0, 33, 4, 88, 10, 3, + 41, 3, 4, 80, 11, 0, 1, 11, 3, 42, 3, 12, 14, 11, 2, 11, 14, 15, + 10, 21, 5, 87, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 18, 3, 12, + 15, 11, 0, 11, 15, 45, 3, 5, 215, 1, 10, 1, 6, 3, 0, 0, 0, 0, + 0, 0, 0, 33, 4, 113, 10, 3, 41, 4, 4, 105, 11, 0, 1, 11, 3, 42, + 4, 12, 16, 11, 2, 11, 16, 15, 11, 21, 5, 112, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 11, 2, 18, 4, 12, 17, 11, 0, 11, 17, 45, 4, 5, 215, 1, + 10, 1, 6, 4, 0, 0, 0, 0, 0, 0, 0, 33, 4, 138, 1, 10, 3, 41, + 5, 4, 130, 1, 11, 0, 1, 11, 3, 42, 5, 12, 18, 11, 2, 11, 18, 15, + 12, 21, 5, 137, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 18, 5, + 12, 19, 11, 0, 11, 19, 45, 5, 5, 215, 1, 10, 1, 6, 5, 0, 0, 0, + 0, 0, 0, 0, 33, 4, 163, 1, 10, 3, 41, 6, 4, 155, 1, 11, 0, 1, + 11, 3, 42, 6, 12, 6, 11, 2, 11, 6, 15, 13, 21, 5, 162, 1, 6, 0, + 0, 0, 0, 0, 0, 0, 0, 11, 2, 18, 6, 12, 7, 11, 0, 11, 7, 45, + 6, 5, 215, 1, 10, 1, 6, 6, 0, 0, 0, 0, 0, 0, 0, 33, 4, 188, + 1, 10, 3, 41, 7, 4, 180, 1, 11, 0, 1, 11, 3, 42, 7, 12, 8, 11, + 2, 11, 8, 15, 14, 21, 5, 187, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 2, 18, 7, 12, 9, 11, 0, 11, 9, 45, 7, 5, 215, 1, 11, 1, 6, + 7, 0, 0, 0, 0, 0, 0, 0, 33, 4, 213, 1, 10, 3, 41, 8, 4, 205, + 1, 11, 0, 1, 11, 3, 42, 8, 12, 10, 11, 2, 11, 10, 15, 15, 21, 5, + 212, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 18, 8, 12, 11, 11, + 0, 11, 11, 45, 8, 5, 215, 1, 11, 0, 1, 2, 2, 1, 4, 8, 1, 2, + 3, 4, 5, 6, 7, 8, 1, 13, 10, 0, 11, 1, 10, 4, 17, 1, 10, 0, + 11, 2, 10, 4, 17, 1, 11, 0, 11, 3, 11, 4, 17, 1, 2, 3, 1, 4, + 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 8, 10, 0, 11, 1, 11, 3, 17, + 1, 11, 0, 11, 2, 17, 0, 2, 4, 1, 4, 8, 1, 2, 3, 4, 5, 6, + 7, 8, 1, 6, 11, 1, 11, 2, 11, 3, 11, 4, 17, 3, 2, 5, 1, 4, + 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 5, 11, 1, 11, 2, 11, 3, 17, + 1, 2, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, + 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 0, ] }); #[rustfmt::skip] pub static MODULE_FRAMEWORK_USECASES_TOKEN_V1: Lazy> = Lazy::new(|| { vec![ - 161, 28, 235, 11, 7, 0, 0, 10, 12, 1, 0, 16, 2, 16, 42, 3, 58, 199, - 1, 4, 129, 2, 12, 5, 141, 2, 205, 2, 7, 218, 4, 185, 6, 8, 147, 11, - 96, 6, 243, 11, 125, 16, 240, 12, 31, 10, 143, 13, 19, 12, 162, 13, 239, 5, - 13, 145, 19, 6, 0, 0, 1, 4, 1, 7, 1, 9, 2, 11, 1, 18, 1, 20, - 1, 25, 0, 1, 8, 0, 1, 3, 6, 0, 2, 6, 4, 2, 3, 1, 0, 1, - 3, 8, 7, 1, 0, 0, 4, 10, 4, 0, 4, 13, 7, 0, 5, 17, 7, 0, - 4, 24, 7, 0, 4, 38, 7, 0, 0, 14, 0, 1, 0, 1, 1, 15, 3, 1, - 0, 1, 0, 16, 4, 5, 0, 1, 5, 19, 6, 2, 0, 1, 6, 21, 8, 5, - 1, 0, 1, 5, 22, 9, 2, 0, 1, 0, 23, 10, 11, 0, 1, 7, 26, 12, - 0, 0, 1, 1, 27, 0, 7, 0, 1, 5, 28, 13, 5, 0, 1, 0, 29, 14, - 15, 0, 1, 4, 30, 16, 17, 0, 1, 0, 31, 0, 11, 0, 1, 4, 32, 19, - 20, 0, 1, 3, 33, 21, 22, 1, 0, 1, 0, 34, 24, 2, 0, 1, 3, 35, - 22, 26, 1, 0, 1, 2, 36, 28, 2, 2, 3, 0, 1, 4, 37, 30, 31, 0, - 1, 4, 39, 32, 15, 0, 1, 0, 40, 12, 2, 0, 1, 1, 41, 35, 36, 0, - 1, 4, 42, 37, 2, 0, 1, 2, 43, 2, 38, 2, 3, 4, 1, 0, 44, 10, - 2, 0, 1, 4, 45, 40, 25, 0, 1, 0, 46, 10, 2, 0, 1, 0, 47, 10, - 2, 0, 1, 0, 48, 10, 2, 0, 1, 4, 49, 43, 2, 0, 1, 0, 50, 10, - 2, 0, 1, 0, 51, 10, 2, 0, 1, 4, 7, 4, 0, 14, 7, 16, 25, 17, - 27, 23, 27, 1, 5, 1, 12, 0, 1, 6, 8, 1, 2, 8, 6, 3, 1, 8, - 6, 2, 7, 8, 6, 10, 2, 1, 3, 1, 6, 9, 0, 2, 7, 8, 6, 8, - 6, 2, 6, 12, 5, 2, 12, 8, 7, 1, 6, 12, 1, 10, 2, 4, 6, 12, - 8, 6, 8, 6, 3, 1, 8, 5, 3, 6, 12, 8, 5, 3, 1, 8, 7, 8, - 12, 5, 8, 6, 3, 8, 6, 8, 5, 8, 7, 12, 2, 5, 8, 6, 1, 11, - 3, 1, 3, 1, 7, 11, 3, 1, 9, 0, 1, 9, 0, 9, 12, 11, 3, 1, - 3, 3, 8, 6, 8, 6, 6, 12, 8, 5, 8, 7, 12, 3, 5, 5, 8, 4, - 1, 8, 4, 1, 11, 3, 1, 9, 0, 2, 5, 11, 3, 1, 8, 4, 3, 7, - 11, 2, 2, 9, 0, 9, 1, 9, 0, 9, 1, 2, 11, 3, 1, 8, 4, 7, - 11, 2, 2, 5, 11, 3, 1, 8, 4, 1, 6, 10, 1, 1, 8, 8, 13, 6, - 12, 8, 6, 8, 6, 8, 6, 3, 8, 6, 5, 3, 3, 8, 8, 10, 8, 6, - 10, 10, 2, 10, 8, 6, 10, 10, 1, 8, 8, 10, 8, 6, 10, 10, 2, 10, - 8, 6, 3, 3, 5, 8, 6, 8, 6, 1, 2, 2, 6, 12, 10, 2, 2, 12, - 8, 1, 6, 6, 12, 8, 6, 8, 6, 8, 6, 3, 10, 1, 1, 11, 2, 2, - 9, 0, 9, 1, 12, 6, 12, 10, 2, 8, 1, 12, 8, 6, 8, 6, 8, 6, - 10, 1, 3, 8, 5, 11, 2, 2, 5, 11, 3, 1, 8, 4, 8, 0, 3, 6, - 12, 8, 7, 3, 6, 12, 6, 12, 3, 8, 5, 8, 7, 8, 4, 5, 8, 7, - 12, 3, 6, 12, 8, 4, 4, 6, 12, 6, 12, 8, 7, 3, 5, 12, 6, 12, - 3, 8, 5, 8, 7, 4, 8, 7, 12, 3, 6, 12, 8, 116, 111, 107, 101, 110, - 95, 118, 49, 12, 77, 105, 110, 116, 101, 114, 67, 111, 110, 102, 105, 103, 10, 115, - 105, 103, 110, 101, 114, 95, 99, 97, 112, 16, 83, 105, 103, 110, 101, 114, 67, 97, - 112, 97, 98, 105, 108, 105, 116, 121, 7, 97, 99, 99, 111, 117, 110, 116, 13, 109, - 105, 110, 116, 101, 100, 95, 116, 111, 107, 101, 110, 115, 5, 84, 97, 98, 108, 101, - 5, 116, 97, 98, 108, 101, 6, 79, 112, 116, 105, 111, 110, 6, 111, 112, 116, 105, - 111, 110, 5, 84, 111, 107, 101, 110, 5, 116, 111, 107, 101, 110, 12, 116, 111, 107, - 101, 110, 100, 97, 116, 97, 95, 105, 100, 11, 84, 111, 107, 101, 110, 68, 97, 116, - 97, 73, 100, 10, 103, 101, 116, 95, 115, 105, 103, 110, 101, 114, 29, 99, 114, 101, - 97, 116, 101, 95, 115, 105, 103, 110, 101, 114, 95, 119, 105, 116, 104, 95, 99, 97, - 112, 97, 98, 105, 108, 105, 116, 121, 16, 98, 117, 105, 108, 100, 95, 116, 111, 107, - 101, 110, 95, 110, 97, 109, 101, 6, 83, 116, 114, 105, 110, 103, 6, 115, 116, 114, - 105, 110, 103, 11, 97, 112, 112, 101, 110, 100, 95, 117, 116, 102, 56, 12, 115, 116, - 114, 105, 110, 103, 95, 117, 116, 105, 108, 115, 9, 116, 111, 95, 115, 116, 114, 105, - 110, 103, 6, 97, 112, 112, 101, 110, 100, 17, 109, 105, 110, 116, 95, 110, 102, 116, - 95, 112, 97, 114, 97, 108, 108, 101, 108, 7, 84, 111, 107, 101, 110, 73, 100, 6, - 115, 105, 103, 110, 101, 114, 10, 97, 100, 100, 114, 101, 115, 115, 95, 111, 102, 19, - 103, 101, 116, 95, 115, 101, 113, 117, 101, 110, 99, 101, 95, 110, 117, 109, 98, 101, - 114, 4, 117, 116, 102, 56, 26, 116, 111, 107, 101, 110, 95, 118, 49, 95, 99, 114, - 101, 97, 116, 101, 95, 116, 111, 107, 101, 110, 95, 100, 97, 116, 97, 10, 109, 105, - 110, 116, 95, 116, 111, 107, 101, 110, 19, 109, 105, 110, 116, 95, 110, 102, 116, 95, - 115, 101, 113, 117, 101, 110, 116, 105, 97, 108, 21, 103, 101, 116, 95, 99, 111, 108, - 108, 101, 99, 116, 105, 111, 110, 95, 115, 117, 112, 112, 108, 121, 7, 101, 120, 116, - 114, 97, 99, 116, 16, 115, 101, 116, 95, 116, 111, 107, 101, 110, 95, 109, 105, 110, - 116, 101, 100, 4, 115, 111, 109, 101, 3, 97, 100, 100, 30, 99, 114, 101, 97, 116, - 101, 95, 116, 111, 107, 101, 110, 95, 109, 117, 116, 97, 98, 105, 108, 105, 116, 121, - 95, 99, 111, 110, 102, 105, 103, 21, 84, 111, 107, 101, 110, 77, 117, 116, 97, 98, - 105, 108, 105, 116, 121, 67, 111, 110, 102, 105, 103, 16, 99, 114, 101, 97, 116, 101, - 95, 116, 111, 107, 101, 110, 100, 97, 116, 97, 30, 116, 111, 107, 101, 110, 95, 118, - 49, 95, 105, 110, 105, 116, 105, 97, 108, 105, 122, 101, 95, 99, 111, 108, 108, 101, - 99, 116, 105, 111, 110, 23, 99, 114, 101, 97, 116, 101, 95, 114, 101, 115, 111, 117, - 114, 99, 101, 95, 97, 99, 99, 111, 117, 110, 116, 17, 99, 114, 101, 97, 116, 101, - 95, 99, 111, 108, 108, 101, 99, 116, 105, 111, 110, 3, 110, 101, 119, 26, 116, 111, - 107, 101, 110, 95, 118, 49, 95, 109, 105, 110, 116, 95, 97, 110, 100, 95, 115, 116, - 111, 114, 101, 95, 102, 116, 14, 119, 105, 116, 104, 100, 114, 97, 119, 95, 116, 111, - 107, 101, 110, 36, 116, 111, 107, 101, 110, 95, 118, 49, 95, 109, 105, 110, 116, 95, - 97, 110, 100, 95, 115, 116, 111, 114, 101, 95, 110, 102, 116, 95, 112, 97, 114, 97, - 108, 108, 101, 108, 38, 116, 111, 107, 101, 110, 95, 118, 49, 95, 109, 105, 110, 116, - 95, 97, 110, 100, 95, 115, 116, 111, 114, 101, 95, 110, 102, 116, 95, 115, 101, 113, - 117, 101, 110, 116, 105, 97, 108, 29, 116, 111, 107, 101, 110, 95, 118, 49, 95, 109, - 105, 110, 116, 95, 97, 110, 100, 95, 116, 114, 97, 110, 115, 102, 101, 114, 95, 102, - 116, 15, 100, 105, 114, 101, 99, 116, 95, 116, 114, 97, 110, 115, 102, 101, 114, 39, - 116, 111, 107, 101, 110, 95, 118, 49, 95, 109, 105, 110, 116, 95, 97, 110, 100, 95, - 116, 114, 97, 110, 115, 102, 101, 114, 95, 110, 102, 116, 95, 112, 97, 114, 97, 108, - 108, 101, 108, 41, 116, 111, 107, 101, 110, 95, 118, 49, 95, 109, 105, 110, 116, 95, - 97, 110, 100, 95, 116, 114, 97, 110, 115, 102, 101, 114, 95, 110, 102, 116, 95, 115, - 101, 113, 117, 101, 110, 116, 105, 97, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 161, 28, 235, 11, 7, 0, 0, 10, 11, 1, 0, 16, 2, 16, 42, 3, 58, 199, + 1, 4, 129, 2, 12, 5, 141, 2, 139, 2, 7, 152, 4, 185, 6, 8, 209, 10, + 96, 6, 177, 11, 150, 1, 10, 199, 12, 19, 12, 218, 12, 185, 5, 13, 147, 18, + 6, 0, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 2, 7, 0, + 8, 8, 0, 4, 9, 7, 0, 7, 12, 7, 0, 7, 15, 4, 0, 7, 17, 7, + 0, 1, 27, 6, 0, 6, 29, 4, 2, 3, 1, 0, 1, 2, 30, 7, 1, 0, + 0, 7, 44, 7, 0, 0, 10, 0, 1, 0, 1, 0, 11, 2, 3, 0, 1, 0, + 13, 4, 5, 0, 1, 0, 14, 2, 5, 0, 1, 0, 16, 6, 7, 0, 1, 0, + 18, 8, 9, 0, 1, 0, 19, 10, 7, 0, 1, 0, 20, 4, 7, 0, 1, 0, + 21, 4, 7, 0, 1, 0, 22, 4, 7, 0, 1, 0, 23, 4, 7, 0, 1, 0, + 24, 4, 7, 0, 1, 0, 25, 4, 7, 0, 1, 4, 32, 11, 7, 0, 1, 5, + 33, 13, 1, 1, 0, 1, 4, 34, 14, 7, 0, 1, 1, 35, 15, 3, 0, 1, + 3, 36, 10, 2, 0, 1, 1, 37, 2, 12, 0, 1, 4, 38, 17, 1, 0, 1, + 7, 39, 18, 19, 0, 1, 7, 40, 21, 22, 0, 1, 2, 41, 23, 24, 1, 0, + 1, 2, 42, 24, 26, 1, 0, 1, 6, 43, 28, 7, 2, 3, 0, 1, 7, 45, + 30, 31, 0, 1, 7, 46, 32, 9, 0, 1, 1, 47, 35, 36, 0, 1, 7, 48, + 37, 7, 0, 1, 6, 49, 7, 38, 2, 3, 4, 1, 7, 50, 40, 25, 0, 1, + 7, 51, 43, 7, 0, 1, 14, 12, 14, 2, 22, 12, 23, 25, 24, 27, 29, 27, + 2, 8, 1, 3, 1, 8, 1, 1, 5, 1, 12, 2, 6, 12, 5, 2, 12, 8, + 2, 3, 5, 5, 8, 3, 0, 4, 6, 12, 8, 1, 8, 1, 3, 1, 8, 4, + 1, 6, 12, 2, 7, 8, 1, 10, 2, 1, 3, 1, 6, 9, 0, 2, 7, 8, + 1, 8, 1, 1, 6, 8, 5, 5, 5, 12, 8, 2, 8, 1, 8, 4, 1, 10, + 2, 3, 6, 12, 8, 4, 3, 1, 8, 2, 6, 11, 7, 1, 3, 3, 12, 8, + 2, 8, 4, 8, 1, 2, 5, 8, 1, 1, 11, 7, 1, 3, 1, 7, 11, 7, + 1, 9, 0, 1, 9, 0, 1, 8, 3, 1, 11, 7, 1, 9, 0, 2, 5, 11, + 7, 1, 8, 3, 3, 7, 11, 6, 2, 9, 0, 9, 1, 9, 0, 9, 1, 5, + 10, 1, 8, 1, 5, 8, 8, 8, 1, 1, 6, 10, 1, 1, 8, 8, 13, 6, + 12, 8, 1, 8, 1, 8, 1, 3, 8, 1, 5, 3, 3, 8, 8, 10, 8, 1, + 10, 10, 2, 10, 8, 1, 6, 8, 1, 8, 1, 8, 1, 12, 8, 5, 8, 4, + 1, 2, 2, 6, 12, 10, 2, 2, 12, 8, 5, 6, 6, 12, 8, 1, 8, 1, + 8, 1, 3, 10, 1, 1, 11, 6, 2, 9, 0, 9, 1, 5, 12, 6, 12, 8, + 3, 8, 2, 8, 4, 3, 6, 12, 8, 2, 3, 3, 12, 8, 3, 8, 2, 4, + 12, 6, 12, 8, 2, 8, 4, 4, 6, 12, 6, 12, 8, 2, 3, 8, 116, 111, + 107, 101, 110, 95, 118, 49, 7, 97, 99, 99, 111, 117, 110, 116, 6, 111, 112, 116, + 105, 111, 110, 6, 115, 105, 103, 110, 101, 114, 6, 115, 116, 114, 105, 110, 103, 12, + 115, 116, 114, 105, 110, 103, 95, 117, 116, 105, 108, 115, 5, 116, 97, 98, 108, 101, + 5, 116, 111, 107, 101, 110, 12, 77, 105, 110, 116, 101, 114, 67, 111, 110, 102, 105, + 103, 6, 83, 116, 114, 105, 110, 103, 16, 98, 117, 105, 108, 100, 95, 116, 111, 107, + 101, 110, 95, 110, 97, 109, 101, 10, 103, 101, 116, 95, 115, 105, 103, 110, 101, 114, + 7, 84, 111, 107, 101, 110, 73, 100, 17, 109, 105, 110, 116, 95, 110, 102, 116, 95, + 112, 97, 114, 97, 108, 108, 101, 108, 19, 109, 105, 110, 116, 95, 110, 102, 116, 95, + 115, 101, 113, 117, 101, 110, 116, 105, 97, 108, 5, 84, 111, 107, 101, 110, 16, 115, + 101, 116, 95, 116, 111, 107, 101, 110, 95, 109, 105, 110, 116, 101, 100, 11, 84, 111, + 107, 101, 110, 68, 97, 116, 97, 73, 100, 26, 116, 111, 107, 101, 110, 95, 118, 49, + 95, 99, 114, 101, 97, 116, 101, 95, 116, 111, 107, 101, 110, 95, 100, 97, 116, 97, + 30, 116, 111, 107, 101, 110, 95, 118, 49, 95, 105, 110, 105, 116, 105, 97, 108, 105, + 122, 101, 95, 99, 111, 108, 108, 101, 99, 116, 105, 111, 110, 26, 116, 111, 107, 101, + 110, 95, 118, 49, 95, 109, 105, 110, 116, 95, 97, 110, 100, 95, 115, 116, 111, 114, + 101, 95, 102, 116, 36, 116, 111, 107, 101, 110, 95, 118, 49, 95, 109, 105, 110, 116, + 95, 97, 110, 100, 95, 115, 116, 111, 114, 101, 95, 110, 102, 116, 95, 112, 97, 114, + 97, 108, 108, 101, 108, 38, 116, 111, 107, 101, 110, 95, 118, 49, 95, 109, 105, 110, + 116, 95, 97, 110, 100, 95, 115, 116, 111, 114, 101, 95, 110, 102, 116, 95, 115, 101, + 113, 117, 101, 110, 116, 105, 97, 108, 29, 116, 111, 107, 101, 110, 95, 118, 49, 95, + 109, 105, 110, 116, 95, 97, 110, 100, 95, 116, 114, 97, 110, 115, 102, 101, 114, 95, + 102, 116, 39, 116, 111, 107, 101, 110, 95, 118, 49, 95, 109, 105, 110, 116, 95, 97, + 110, 100, 95, 116, 114, 97, 110, 115, 102, 101, 114, 95, 110, 102, 116, 95, 112, 97, + 114, 97, 108, 108, 101, 108, 41, 116, 111, 107, 101, 110, 95, 118, 49, 95, 109, 105, + 110, 116, 95, 97, 110, 100, 95, 116, 114, 97, 110, 115, 102, 101, 114, 95, 110, 102, + 116, 95, 115, 101, 113, 117, 101, 110, 116, 105, 97, 108, 10, 115, 105, 103, 110, 101, + 114, 95, 99, 97, 112, 16, 83, 105, 103, 110, 101, 114, 67, 97, 112, 97, 98, 105, + 108, 105, 116, 121, 13, 109, 105, 110, 116, 101, 100, 95, 116, 111, 107, 101, 110, 115, + 5, 84, 97, 98, 108, 101, 6, 79, 112, 116, 105, 111, 110, 12, 116, 111, 107, 101, + 110, 100, 97, 116, 97, 95, 105, 100, 11, 97, 112, 112, 101, 110, 100, 95, 117, 116, + 102, 56, 9, 116, 111, 95, 115, 116, 114, 105, 110, 103, 6, 97, 112, 112, 101, 110, + 100, 29, 99, 114, 101, 97, 116, 101, 95, 115, 105, 103, 110, 101, 114, 95, 119, 105, + 116, 104, 95, 99, 97, 112, 97, 98, 105, 108, 105, 116, 121, 10, 97, 100, 100, 114, + 101, 115, 115, 95, 111, 102, 19, 103, 101, 116, 95, 115, 101, 113, 117, 101, 110, 99, + 101, 95, 110, 117, 109, 98, 101, 114, 4, 117, 116, 102, 56, 10, 109, 105, 110, 116, + 95, 116, 111, 107, 101, 110, 21, 103, 101, 116, 95, 99, 111, 108, 108, 101, 99, 116, + 105, 111, 110, 95, 115, 117, 112, 112, 108, 121, 7, 101, 120, 116, 114, 97, 99, 116, + 4, 115, 111, 109, 101, 3, 97, 100, 100, 21, 84, 111, 107, 101, 110, 77, 117, 116, + 97, 98, 105, 108, 105, 116, 121, 67, 111, 110, 102, 105, 103, 30, 99, 114, 101, 97, + 116, 101, 95, 116, 111, 107, 101, 110, 95, 109, 117, 116, 97, 98, 105, 108, 105, 116, + 121, 95, 99, 111, 110, 102, 105, 103, 16, 99, 114, 101, 97, 116, 101, 95, 116, 111, + 107, 101, 110, 100, 97, 116, 97, 23, 99, 114, 101, 97, 116, 101, 95, 114, 101, 115, + 111, 117, 114, 99, 101, 95, 97, 99, 99, 111, 117, 110, 116, 17, 99, 114, 101, 97, + 116, 101, 95, 99, 111, 108, 108, 101, 99, 116, 105, 111, 110, 3, 110, 101, 119, 14, + 119, 105, 116, 104, 100, 114, 97, 119, 95, 116, 111, 107, 101, 110, 15, 100, 105, 114, + 101, 99, 116, 95, 116, 114, 97, 110, 115, 102, 101, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10, 2, 3, - 2, 32, 35, 10, 2, 18, 17, 104, 116, 116, 112, 115, 58, 47, 47, 97, 112, 116, - 111, 115, 46, 100, 101, 118, 10, 2, 23, 22, 65, 110, 32, 78, 70, 84, 32, 67, - 111, 108, 108, 101, 99, 116, 105, 111, 110, 32, 78, 97, 109, 101, 10, 2, 16, 15, - 78, 70, 84, 32, 67, 111, 108, 108, 101, 99, 116, 105, 98, 108, 101, 10, 2, 1, - 0, 10, 1, 6, 5, 1, 1, 1, 1, 1, 10, 2, 30, 29, 65, 110, 32, 78, - 70, 84, 32, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 32, 68, 101, 115, 99, - 114, 105, 112, 116, 105, 111, 110, 10, 1, 4, 3, 0, 0, 0, 20, 99, 111, 109, - 112, 105, 108, 97, 116, 105, 111, 110, 95, 109, 101, 116, 97, 100, 97, 116, 97, 9, - 0, 3, 50, 46, 48, 3, 50, 46, 49, 0, 2, 3, 2, 8, 1, 5, 11, 2, - 2, 5, 11, 3, 1, 8, 4, 12, 8, 5, 0, 0, 0, 1, 0, 2, 5, 11, - 0, 43, 0, 16, 0, 17, 1, 2, 2, 0, 0, 0, 5, 9, 13, 0, 7, 0, - 17, 3, 13, 0, 14, 1, 56, 0, 17, 5, 11, 0, 2, 6, 0, 0, 1, 0, - 18, 28, 11, 1, 17, 0, 12, 2, 10, 0, 17, 7, 12, 3, 14, 3, 56, 1, - 11, 0, 17, 7, 17, 8, 17, 2, 12, 4, 14, 2, 7, 1, 17, 9, 11, 4, - 6, 1, 0, 0, 0, 0, 0, 0, 0, 17, 10, 12, 7, 14, 2, 11, 7, 6, - 1, 0, 0, 0, 0, 0, 0, 0, 17, 11, 12, 8, 11, 2, 11, 8, 2, 12, - 0, 0, 1, 0, 23, 34, 11, 0, 17, 0, 12, 1, 14, 1, 17, 7, 7, 2, - 17, 9, 17, 13, 12, 2, 13, 2, 56, 2, 6, 1, 0, 0, 0, 0, 0, 0, - 0, 22, 12, 3, 7, 3, 17, 9, 11, 3, 17, 2, 12, 4, 14, 1, 7, 1, - 17, 9, 11, 4, 6, 1, 0, 0, 0, 0, 0, 0, 0, 17, 10, 12, 7, 14, - 1, 11, 7, 6, 1, 0, 0, 0, 0, 0, 0, 0, 17, 11, 12, 8, 11, 1, - 11, 8, 2, 15, 0, 0, 1, 0, 29, 10, 11, 1, 42, 0, 15, 1, 11, 2, - 56, 3, 12, 3, 11, 0, 11, 3, 56, 4, 2, 10, 0, 0, 0, 33, 35, 7, - 2, 17, 9, 7, 4, 17, 9, 10, 0, 17, 7, 7, 5, 12, 4, 14, 4, 17, - 18, 12, 5, 64, 5, 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 64, 13, 0, - 0, 0, 0, 0, 0, 0, 0, 12, 7, 64, 5, 0, 0, 0, 0, 0, 0, 0, - 0, 12, 8, 12, 11, 12, 12, 12, 13, 11, 0, 11, 13, 11, 2, 11, 12, 11, - 3, 11, 1, 11, 11, 6, 100, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 5, 11, 6, 11, 7, 11, 8, 17, 19, 2, 20, 1, - 4, 0, 39, 44, 10, 0, 12, 1, 64, 34, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 2, 11, 1, 11, 2, 17, 21, 12, 3, 12, 4, 7, 2, 17, 9, 12, 5, - 7, 6, 17, 9, 12, 6, 7, 4, 17, 9, 12, 7, 14, 4, 11, 5, 11, 6, - 11, 7, 6, 64, 66, 15, 0, 0, 0, 0, 0, 7, 7, 17, 22, 14, 4, 7, - 1, 17, 9, 7, 3, 17, 9, 6, 64, 75, 76, 0, 0, 0, 0, 0, 17, 10, - 12, 10, 56, 5, 12, 11, 11, 3, 11, 11, 11, 10, 18, 0, 12, 12, 11, 0, - 11, 12, 45, 0, 2, 24, 1, 4, 1, 0, 41, 26, 10, 1, 17, 0, 12, 2, - 14, 2, 12, 3, 10, 1, 43, 0, 16, 2, 20, 12, 5, 10, 3, 11, 5, 6, - 1, 0, 0, 0, 0, 0, 0, 0, 17, 11, 12, 6, 11, 3, 11, 6, 6, 1, - 0, 0, 0, 0, 0, 0, 0, 17, 25, 12, 7, 11, 0, 17, 7, 11, 1, 11, - 7, 17, 15, 2, 26, 1, 4, 1, 0, 42, 16, 10, 0, 10, 1, 17, 6, 12, - 2, 12, 3, 14, 3, 11, 2, 6, 1, 0, 0, 0, 0, 0, 0, 0, 17, 25, - 12, 6, 11, 0, 17, 7, 11, 1, 11, 6, 17, 15, 2, 27, 1, 4, 1, 0, - 42, 15, 10, 1, 17, 12, 12, 2, 12, 3, 14, 3, 11, 2, 6, 1, 0, 0, - 0, 0, 0, 0, 0, 17, 25, 12, 6, 11, 0, 17, 7, 11, 1, 11, 6, 17, - 15, 2, 28, 1, 4, 1, 0, 44, 21, 10, 1, 17, 0, 12, 2, 14, 2, 12, - 3, 11, 1, 43, 0, 16, 2, 20, 12, 5, 10, 3, 11, 5, 6, 1, 0, 0, - 0, 0, 0, 0, 0, 17, 11, 12, 6, 11, 3, 11, 0, 11, 6, 6, 1, 0, - 0, 0, 0, 0, 0, 0, 17, 29, 2, 30, 1, 4, 1, 0, 45, 11, 10, 0, - 11, 1, 17, 6, 12, 2, 12, 3, 14, 3, 11, 0, 11, 2, 6, 1, 0, 0, - 0, 0, 0, 0, 0, 17, 29, 2, 31, 1, 4, 1, 0, 45, 10, 11, 1, 17, - 12, 12, 2, 12, 3, 14, 3, 11, 0, 11, 2, 6, 1, 0, 0, 0, 0, 0, - 0, 0, 17, 29, 2, 0, 0, 0, 1, 0, 2, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 10, 2, 30, 29, 65, 110, 32, 78, 70, 84, 32, 67, 111, 108, 108, 101, 99, 116, + 105, 111, 110, 32, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 10, 2, 23, + 22, 65, 110, 32, 78, 70, 84, 32, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, + 32, 78, 97, 109, 101, 10, 2, 1, 0, 3, 8, 100, 0, 0, 0, 0, 0, 0, + 0, 3, 8, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 16, 15, 78, 70, 84, + 32, 67, 111, 108, 108, 101, 99, 116, 105, 98, 108, 101, 10, 2, 18, 17, 104, 116, + 116, 112, 115, 58, 47, 47, 97, 112, 116, 111, 115, 46, 100, 101, 118, 10, 2, 3, + 2, 32, 35, 10, 1, 6, 5, 1, 1, 1, 1, 1, 10, 10, 2, 1, 0, 10, + 1, 4, 3, 0, 0, 0, 0, 2, 3, 26, 8, 5, 28, 11, 6, 2, 5, 11, + 7, 1, 8, 3, 31, 8, 4, 0, 0, 0, 0, 7, 9, 13, 0, 7, 7, 17, + 13, 13, 0, 14, 1, 56, 0, 17, 15, 11, 0, 2, 1, 0, 0, 1, 0, 7, + 5, 11, 0, 43, 0, 16, 0, 17, 16, 2, 2, 0, 0, 1, 0, 16, 28, 11, + 1, 17, 1, 12, 3, 10, 0, 17, 17, 12, 2, 14, 2, 56, 1, 11, 0, 17, + 17, 17, 18, 17, 0, 12, 5, 14, 3, 7, 6, 17, 19, 11, 5, 6, 1, 0, + 0, 0, 0, 0, 0, 0, 17, 5, 12, 6, 14, 3, 11, 6, 6, 1, 0, 0, + 0, 0, 0, 0, 0, 17, 20, 12, 4, 11, 3, 11, 4, 2, 3, 0, 0, 1, + 0, 20, 34, 11, 0, 17, 1, 12, 3, 14, 3, 17, 17, 7, 1, 17, 19, 17, + 21, 12, 1, 13, 1, 56, 2, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 12, + 2, 7, 5, 17, 19, 11, 2, 17, 0, 12, 6, 14, 3, 7, 6, 17, 19, 11, + 6, 6, 1, 0, 0, 0, 0, 0, 0, 0, 17, 5, 12, 5, 14, 3, 11, 5, + 6, 1, 0, 0, 0, 0, 0, 0, 0, 17, 20, 12, 4, 11, 3, 11, 4, 2, + 4, 0, 0, 1, 0, 7, 8, 11, 1, 42, 0, 15, 1, 11, 0, 11, 2, 56, + 3, 56, 4, 2, 5, 0, 0, 0, 29, 29, 7, 1, 17, 19, 12, 5, 7, 2, + 17, 19, 12, 8, 10, 0, 17, 17, 12, 6, 7, 8, 12, 4, 14, 4, 17, 25, + 12, 7, 11, 0, 11, 5, 11, 2, 11, 8, 11, 3, 11, 1, 11, 6, 7, 3, + 7, 4, 11, 7, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 64, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 26, 2, 6, 1, 4, 0, 33, 36, 10, + 0, 64, 34, 0, 0, 0, 0, 0, 0, 0, 0, 17, 27, 12, 5, 12, 4, 7, + 1, 17, 19, 12, 1, 7, 0, 17, 19, 12, 3, 7, 2, 17, 19, 12, 2, 14, + 4, 11, 1, 11, 3, 11, 2, 6, 64, 66, 15, 0, 0, 0, 0, 0, 7, 10, + 17, 28, 14, 4, 7, 6, 17, 19, 7, 5, 17, 19, 6, 64, 75, 76, 0, 0, + 0, 0, 0, 17, 5, 12, 6, 11, 0, 11, 5, 56, 5, 11, 6, 18, 0, 45, + 0, 2, 7, 1, 4, 1, 0, 39, 26, 10, 1, 17, 1, 12, 2, 14, 2, 12, + 3, 10, 1, 43, 0, 16, 2, 20, 12, 6, 10, 3, 11, 6, 6, 1, 0, 0, + 0, 0, 0, 0, 0, 17, 20, 12, 5, 11, 3, 11, 5, 6, 1, 0, 0, 0, + 0, 0, 0, 0, 17, 30, 12, 4, 11, 0, 17, 17, 11, 1, 11, 4, 17, 4, + 2, 8, 1, 4, 1, 0, 41, 16, 10, 0, 10, 1, 17, 2, 12, 4, 12, 2, + 14, 2, 11, 4, 6, 1, 0, 0, 0, 0, 0, 0, 0, 17, 30, 12, 3, 11, + 0, 17, 17, 11, 1, 11, 3, 17, 4, 2, 9, 1, 4, 1, 0, 41, 15, 10, + 1, 17, 3, 12, 4, 12, 2, 14, 2, 11, 4, 6, 1, 0, 0, 0, 0, 0, + 0, 0, 17, 30, 12, 3, 11, 0, 17, 17, 11, 1, 11, 3, 17, 4, 2, 10, + 1, 4, 1, 0, 42, 21, 10, 1, 17, 1, 12, 2, 14, 2, 12, 3, 11, 1, + 43, 0, 16, 2, 20, 12, 5, 10, 3, 11, 5, 6, 1, 0, 0, 0, 0, 0, + 0, 0, 17, 20, 12, 4, 11, 3, 11, 0, 11, 4, 6, 1, 0, 0, 0, 0, + 0, 0, 0, 17, 31, 2, 11, 1, 4, 1, 0, 5, 11, 10, 0, 11, 1, 17, + 2, 12, 3, 12, 2, 14, 2, 11, 0, 11, 3, 6, 1, 0, 0, 0, 0, 0, + 0, 0, 17, 31, 2, 12, 1, 4, 1, 0, 5, 10, 11, 1, 17, 3, 12, 3, + 12, 2, 14, 2, 11, 0, 11, 3, 6, 1, 0, 0, 0, 0, 0, 0, 0, 17, + 31, 2, 0, 0, 0, 1, 0, 2, 0, + ] +}); + +#[rustfmt::skip] +pub static MODULE_FRAMEWORK_USECASES_VECTOR_EXAMPLE: Lazy> = Lazy::new(|| { + vec![ + 161, 28, 235, 11, 7, 0, 0, 10, 7, 1, 0, 4, 3, 4, 66, 4, 70, 12, + 5, 82, 98, 7, 180, 1, 139, 1, 8, 191, 2, 64, 12, 255, 2, 166, 3, 0, + 0, 1, 1, 0, 2, 0, 1, 0, 1, 0, 3, 2, 3, 0, 1, 0, 4, 4, + 3, 0, 1, 0, 5, 4, 3, 0, 1, 1, 6, 8, 9, 1, 0, 1, 1, 7, + 11, 3, 1, 0, 1, 1, 8, 13, 9, 1, 0, 1, 1, 9, 8, 3, 1, 0, + 1, 1, 10, 13, 14, 1, 0, 1, 1, 11, 15, 3, 1, 0, 1, 4, 6, 5, + 7, 6, 7, 7, 7, 8, 7, 9, 7, 2, 3, 3, 1, 10, 10, 3, 5, 3, + 3, 3, 3, 3, 0, 4, 3, 3, 3, 3, 9, 1, 1, 3, 3, 10, 3, 10, + 3, 3, 3, 10, 10, 3, 1, 3, 1, 10, 3, 3, 7, 10, 9, 0, 3, 9, + 0, 1, 9, 0, 5, 1, 3, 3, 10, 10, 3, 10, 10, 3, 5, 7, 10, 9, + 0, 3, 3, 7, 10, 9, 0, 3, 5, 1, 3, 3, 10, 3, 10, 10, 3, 2, + 7, 10, 9, 0, 3, 1, 10, 9, 0, 2, 7, 10, 9, 0, 10, 9, 0, 14, + 118, 101, 99, 116, 111, 114, 95, 101, 120, 97, 109, 112, 108, 101, 6, 118, 101, 99, + 116, 111, 114, 12, 103, 101, 110, 101, 114, 97, 116, 101, 95, 118, 101, 99, 22, 116, + 101, 115, 116, 95, 109, 105, 100, 100, 108, 101, 95, 114, 97, 110, 103, 101, 95, 109, + 111, 118, 101, 18, 116, 101, 115, 116, 95, 114, 101, 109, 111, 118, 101, 95, 105, 110, + 115, 101, 114, 116, 16, 116, 101, 115, 116, 95, 116, 114, 105, 109, 95, 97, 112, 112, + 101, 110, 100, 7, 114, 101, 112, 108, 97, 99, 101, 10, 114, 97, 110, 103, 101, 95, + 109, 111, 118, 101, 6, 114, 101, 109, 111, 118, 101, 6, 105, 110, 115, 101, 114, 116, + 4, 116, 114, 105, 109, 6, 97, 112, 112, 101, 110, 100, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 5, 59, 64, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, 8, 9, 12, 2, + 11, 1, 12, 4, 10, 2, 4, 15, 11, 8, 6, 1, 0, 0, 0, 0, 0, 0, + 0, 22, 12, 8, 5, 17, 8, 12, 2, 10, 8, 10, 4, 35, 4, 25, 13, 7, + 10, 8, 68, 6, 5, 8, 64, 7, 0, 0, 0, 0, 0, 0, 0, 0, 12, 10, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 9, 12, 3, 11, 0, 12, 5, + 10, 3, 4, 40, 11, 9, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 12, 9, + 5, 42, 8, 12, 3, 10, 9, 10, 5, 35, 4, 57, 10, 7, 12, 6, 13, 6, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 10, 9, 56, 0, 1, 13, 10, 11, 6, + 68, 7, 5, 33, 11, 10, 2, 1, 1, 4, 0, 10, 41, 10, 0, 10, 1, 17, + 0, 12, 8, 11, 0, 11, 1, 17, 0, 12, 9, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 7, 9, 12, 5, 11, 4, 12, 6, 10, 5, 4, 21, 11, 7, 6, + 1, 0, 0, 0, 0, 0, 0, 0, 22, 12, 7, 5, 23, 8, 12, 5, 10, 7, + 10, 6, 35, 4, 40, 13, 8, 10, 2, 10, 3, 13, 9, 10, 2, 56, 1, 13, + 9, 10, 2, 10, 3, 13, 8, 10, 2, 56, 1, 5, 14, 2, 2, 1, 4, 0, + 12, 33, 11, 0, 11, 1, 17, 0, 12, 8, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 12, 6, 9, 12, 4, 11, 3, 12, 5, 10, 4, 4, 17, 11, 6, 6, 1, + 0, 0, 0, 0, 0, 0, 0, 22, 12, 6, 5, 19, 8, 12, 4, 10, 6, 10, + 5, 35, 4, 32, 13, 8, 10, 2, 56, 2, 12, 7, 13, 8, 10, 2, 11, 7, + 56, 3, 5, 10, 2, 3, 1, 4, 0, 10, 32, 11, 0, 11, 1, 17, 0, 12, + 8, 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 9, 12, 4, 11, 3, 12, + 5, 10, 4, 4, 17, 11, 6, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 12, + 6, 5, 19, 8, 12, 4, 10, 6, 10, 5, 35, 4, 31, 13, 8, 10, 2, 56, + 4, 12, 7, 13, 8, 11, 7, 56, 5, 5, 10, 2, 0, ] }); @@ -1594,6 +1600,7 @@ pub static MODULES_FRAMEWORK_USECASES: Lazy>> = Lazy::new(|| { vec![ MODULE_FRAMEWORK_USECASES_OBJECTS.to_vec(), MODULE_FRAMEWORK_USECASES_RESOURCE_GROUPS_EXAMPLE.to_vec(), MODULE_FRAMEWORK_USECASES_TOKEN_V1.to_vec(), + MODULE_FRAMEWORK_USECASES_VECTOR_EXAMPLE.to_vec(), ]}); #[rustfmt::skip] pub static PACKAGE_AMBASSADOR_TOKEN_METADATA: Lazy> = Lazy::new(|| { @@ -1634,204 +1641,205 @@ pub static PACKAGE_AMBASSADOR_TOKEN_METADATA: Lazy> = Lazy::new(|| { pub static MODULE_AMBASSADOR_TOKEN_AMBASSADOR: Lazy> = Lazy::new(|| { vec![ 161, 28, 235, 11, 7, 0, 0, 10, 12, 1, 0, 24, 2, 24, 60, 3, 84, 157, - 2, 4, 241, 2, 18, 5, 131, 3, 236, 2, 7, 239, 5, 189, 8, 8, 172, 14, - 96, 6, 140, 15, 136, 1, 16, 148, 16, 249, 4, 10, 141, 21, 33, 12, 174, 21, - 129, 6, 13, 175, 27, 8, 0, 0, 1, 6, 1, 10, 2, 13, 2, 16, 2, 22, - 2, 24, 2, 34, 1, 39, 2, 40, 1, 43, 2, 69, 0, 1, 8, 0, 0, 3, - 8, 0, 1, 5, 6, 0, 1, 8, 6, 0, 2, 5, 6, 0, 3, 12, 7, 0, - 0, 14, 6, 0, 4, 15, 7, 1, 0, 1, 8, 38, 11, 0, 9, 42, 7, 1, - 0, 0, 4, 45, 2, 0, 4, 54, 6, 0, 4, 58, 2, 0, 2, 62, 10, 0, - 0, 19, 0, 1, 0, 1, 4, 20, 3, 4, 1, 8, 1, 1, 21, 5, 4, 1, - 8, 1, 5, 23, 6, 4, 0, 1, 2, 19, 7, 1, 0, 1, 1, 19, 8, 1, - 0, 1, 6, 25, 9, 9, 0, 1, 6, 26, 9, 9, 0, 1, 0, 2, 11, 9, - 0, 1, 0, 27, 4, 9, 0, 1, 4, 28, 4, 5, 1, 8, 1, 0, 29, 11, - 12, 0, 1, 3, 30, 13, 12, 0, 1, 2, 31, 14, 12, 1, 8, 1, 0, 32, - 4, 12, 0, 1, 0, 33, 15, 1, 0, 1, 7, 35, 16, 12, 1, 0, 1, 1, - 36, 17, 4, 0, 1, 0, 37, 6, 1, 0, 1, 9, 41, 1, 20, 1, 0, 1, - 10, 44, 21, 22, 0, 1, 0, 46, 6, 1, 0, 1, 0, 47, 24, 1, 0, 1, - 0, 48, 25, 1, 0, 1, 0, 49, 27, 1, 0, 1, 3, 50, 29, 1, 0, 1, - 1, 51, 30, 22, 0, 1, 4, 52, 31, 32, 0, 1, 4, 53, 31, 33, 0, 1, - 1, 55, 31, 34, 0, 1, 1, 56, 31, 8, 0, 1, 2, 55, 31, 7, 0, 1, - 4, 57, 35, 36, 0, 1, 4, 59, 37, 1, 0, 1, 4, 60, 35, 1, 0, 1, - 2, 61, 38, 39, 0, 1, 2, 63, 40, 1, 0, 1, 2, 64, 41, 1, 1, 2, - 1, 1, 65, 42, 22, 0, 1, 0, 66, 24, 1, 0, 1, 0, 67, 44, 1, 0, - 1, 0, 68, 45, 1, 0, 1, 11, 70, 47, 1, 1, 6, 1, 0, 71, 48, 1, - 0, 1, 2, 72, 50, 1, 1, 2, 1, 1, 73, 51, 1, 0, 1, 1, 2, 2, - 2, 10, 2, 13, 2, 16, 4, 19, 19, 37, 12, 42, 46, 44, 12, 2, 6, 12, - 11, 7, 1, 8, 1, 0, 1, 8, 1, 1, 6, 11, 7, 1, 9, 0, 1, 5, - 1, 11, 7, 1, 9, 0, 1, 6, 12, 1, 8, 4, 1, 8, 3, 1, 3, 1, - 6, 11, 7, 1, 8, 1, 1, 11, 7, 1, 8, 1, 1, 8, 5, 1, 10, 2, - 2, 6, 11, 7, 1, 9, 0, 6, 8, 5, 2, 6, 12, 6, 12, 1, 6, 9, - 0, 3, 6, 5, 6, 8, 5, 6, 8, 5, 5, 8, 5, 5, 5, 8, 5, 11, - 7, 1, 8, 1, 1, 8, 8, 1, 11, 9, 1, 9, 0, 5, 6, 12, 8, 5, - 8, 5, 11, 9, 1, 8, 8, 8, 5, 1, 8, 10, 4, 8, 5, 11, 9, 1, - 8, 8, 8, 5, 8, 5, 5, 6, 12, 8, 5, 8, 5, 8, 5, 5, 6, 6, - 12, 8, 5, 8, 5, 8, 5, 5, 1, 1, 1, 4, 6, 12, 6, 12, 8, 5, - 8, 5, 2, 5, 8, 5, 2, 7, 8, 5, 8, 5, 7, 6, 12, 8, 5, 8, - 5, 8, 5, 8, 5, 11, 9, 1, 8, 8, 8, 5, 1, 6, 8, 10, 1, 12, - 1, 8, 11, 1, 8, 2, 1, 6, 8, 11, 1, 8, 12, 2, 8, 12, 5, 3, - 10, 8, 5, 10, 8, 5, 10, 10, 2, 1, 8, 13, 2, 6, 8, 10, 8, 13, - 3, 6, 8, 4, 8, 5, 9, 0, 6, 6, 12, 8, 5, 8, 5, 8, 5, 11, - 9, 1, 8, 8, 8, 5, 14, 8, 5, 8, 5, 6, 12, 8, 5, 8, 5, 8, - 5, 11, 9, 1, 8, 8, 8, 5, 8, 10, 12, 8, 11, 8, 4, 8, 13, 8, - 1, 5, 6, 12, 6, 12, 8, 5, 8, 5, 8, 5, 3, 6, 12, 11, 7, 1, - 8, 1, 3, 1, 8, 6, 1, 9, 0, 2, 11, 7, 1, 8, 1, 3, 4, 6, - 11, 7, 1, 8, 1, 7, 8, 0, 3, 7, 3, 3, 6, 8, 4, 6, 8, 5, - 9, 0, 2, 6, 8, 2, 8, 5, 5, 3, 10, 2, 6, 8, 1, 8, 5, 8, - 5, 10, 97, 109, 98, 97, 115, 115, 97, 100, 111, 114, 15, 65, 109, 98, 97, 115, - 115, 97, 100, 111, 114, 76, 101, 118, 101, 108, 16, 97, 109, 98, 97, 115, 115, 97, - 100, 111, 114, 95, 108, 101, 118, 101, 108, 15, 65, 109, 98, 97, 115, 115, 97, 100, - 111, 114, 84, 111, 107, 101, 110, 11, 109, 117, 116, 97, 116, 111, 114, 95, 114, 101, - 102, 10, 77, 117, 116, 97, 116, 111, 114, 82, 101, 102, 5, 116, 111, 107, 101, 110, - 8, 98, 117, 114, 110, 95, 114, 101, 102, 7, 66, 117, 114, 110, 82, 101, 102, 20, - 112, 114, 111, 112, 101, 114, 116, 121, 95, 109, 117, 116, 97, 116, 111, 114, 95, 114, - 101, 102, 12, 112, 114, 111, 112, 101, 114, 116, 121, 95, 109, 97, 112, 8, 98, 97, - 115, 101, 95, 117, 114, 105, 6, 83, 116, 114, 105, 110, 103, 6, 115, 116, 114, 105, - 110, 103, 11, 76, 101, 118, 101, 108, 85, 112, 100, 97, 116, 101, 6, 79, 98, 106, - 101, 99, 116, 6, 111, 98, 106, 101, 99, 116, 9, 111, 108, 100, 95, 108, 101, 118, - 101, 108, 9, 110, 101, 119, 95, 108, 101, 118, 101, 108, 4, 98, 117, 114, 110, 14, - 111, 98, 106, 101, 99, 116, 95, 97, 100, 100, 114, 101, 115, 115, 7, 99, 114, 101, - 97, 116, 111, 114, 6, 115, 105, 103, 110, 101, 114, 10, 97, 100, 100, 114, 101, 115, - 115, 95, 111, 102, 5, 101, 114, 114, 111, 114, 17, 112, 101, 114, 109, 105, 115, 115, - 105, 111, 110, 95, 100, 101, 110, 105, 101, 100, 9, 110, 111, 116, 95, 102, 111, 117, - 110, 100, 29, 97, 109, 98, 97, 115, 115, 97, 100, 111, 114, 95, 108, 101, 118, 101, - 108, 95, 102, 114, 111, 109, 95, 97, 100, 100, 114, 101, 115, 115, 17, 97, 100, 100, - 114, 101, 115, 115, 95, 116, 111, 95, 111, 98, 106, 101, 99, 116, 15, 97, 109, 98, - 97, 115, 115, 97, 100, 111, 114, 95, 114, 97, 110, 107, 4, 117, 116, 102, 56, 11, - 114, 101, 97, 100, 95, 115, 116, 114, 105, 110, 103, 28, 97, 109, 98, 97, 115, 115, - 97, 100, 111, 114, 95, 114, 97, 110, 107, 95, 102, 114, 111, 109, 95, 97, 100, 100, - 114, 101, 115, 115, 18, 98, 117, 114, 110, 95, 110, 97, 109, 101, 100, 95, 98, 121, - 95, 117, 115, 101, 114, 12, 115, 116, 114, 105, 110, 103, 95, 117, 116, 105, 108, 115, - 9, 116, 111, 95, 115, 116, 114, 105, 110, 103, 20, 99, 114, 101, 97, 116, 101, 95, - 116, 111, 107, 101, 110, 95, 97, 100, 100, 114, 101, 115, 115, 28, 99, 114, 101, 97, - 116, 101, 95, 97, 109, 98, 97, 115, 115, 97, 100, 111, 114, 95, 99, 111, 108, 108, - 101, 99, 116, 105, 111, 110, 7, 82, 111, 121, 97, 108, 116, 121, 7, 114, 111, 121, - 97, 108, 116, 121, 6, 111, 112, 116, 105, 111, 110, 4, 110, 111, 110, 101, 6, 79, - 112, 116, 105, 111, 110, 10, 99, 111, 108, 108, 101, 99, 116, 105, 111, 110, 27, 99, - 114, 101, 97, 116, 101, 95, 117, 110, 108, 105, 109, 105, 116, 101, 100, 95, 99, 111, - 108, 108, 101, 99, 116, 105, 111, 110, 14, 67, 111, 110, 115, 116, 114, 117, 99, 116, - 111, 114, 82, 101, 102, 11, 105, 110, 105, 116, 95, 109, 111, 100, 117, 108, 101, 21, + 2, 4, 241, 2, 18, 5, 131, 3, 241, 2, 7, 244, 5, 189, 8, 8, 177, 14, + 96, 6, 145, 15, 201, 1, 16, 218, 16, 218, 4, 10, 180, 21, 33, 12, 213, 21, + 233, 5, 13, 190, 27, 8, 0, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, + 1, 6, 1, 7, 2, 8, 2, 9, 2, 10, 2, 11, 0, 12, 8, 0, 0, 13, + 8, 0, 0, 14, 6, 0, 3, 15, 7, 1, 0, 1, 6, 18, 7, 0, 11, 33, + 6, 0, 11, 35, 6, 0, 9, 33, 6, 0, 10, 50, 11, 0, 4, 51, 7, 1, + 0, 0, 3, 53, 2, 0, 9, 55, 10, 0, 3, 56, 6, 0, 3, 64, 2, 0, + 0, 16, 0, 1, 0, 1, 0, 17, 2, 1, 0, 1, 0, 19, 0, 3, 0, 1, + 0, 20, 2, 3, 0, 1, 0, 21, 4, 5, 0, 1, 0, 22, 6, 5, 0, 1, + 0, 23, 7, 5, 0, 1, 0, 24, 7, 5, 0, 1, 0, 25, 8, 5, 0, 1, + 0, 26, 9, 5, 0, 1, 0, 27, 10, 5, 0, 1, 0, 28, 8, 5, 0, 1, + 0, 29, 11, 5, 0, 1, 0, 30, 12, 5, 0, 1, 0, 31, 13, 5, 0, 1, + 3, 40, 15, 2, 1, 8, 1, 3, 41, 2, 16, 1, 8, 1, 6, 42, 18, 3, + 0, 1, 9, 43, 19, 3, 1, 8, 1, 1, 44, 1, 1, 0, 1, 11, 45, 16, + 2, 1, 8, 1, 5, 46, 7, 2, 0, 1, 1, 47, 1, 1, 0, 1, 9, 21, + 21, 5, 0, 1, 11, 21, 22, 5, 0, 1, 7, 48, 24, 3, 1, 0, 1, 11, + 49, 25, 2, 0, 1, 4, 52, 5, 28, 1, 0, 1, 8, 54, 29, 30, 0, 1, + 6, 57, 32, 5, 0, 1, 11, 58, 33, 30, 0, 1, 11, 59, 34, 30, 0, 1, + 3, 60, 35, 36, 0, 1, 3, 61, 35, 37, 0, 1, 11, 62, 35, 38, 0, 1, + 11, 63, 35, 22, 0, 1, 9, 62, 35, 21, 0, 1, 3, 65, 39, 40, 0, 1, + 3, 66, 41, 5, 0, 1, 3, 67, 39, 5, 0, 1, 9, 68, 42, 43, 0, 1, + 9, 69, 44, 5, 0, 1, 9, 70, 45, 5, 1, 2, 1, 2, 71, 48, 5, 1, + 6, 1, 9, 72, 50, 5, 1, 2, 1, 11, 73, 51, 5, 0, 1, 15, 14, 16, + 14, 18, 14, 20, 14, 25, 2, 27, 27, 42, 3, 43, 47, 44, 3, 1, 11, 3, + 1, 8, 1, 1, 3, 1, 5, 1, 8, 4, 2, 6, 12, 11, 3, 1, 8, 1, + 0, 2, 6, 12, 6, 12, 1, 6, 12, 5, 6, 12, 8, 4, 8, 4, 8, 4, + 5, 4, 6, 12, 6, 12, 8, 4, 8, 4, 6, 6, 12, 8, 4, 8, 4, 8, + 4, 5, 1, 5, 6, 12, 6, 12, 8, 4, 8, 4, 8, 4, 3, 6, 12, 11, + 3, 1, 8, 1, 3, 2, 11, 3, 1, 8, 1, 3, 1, 8, 1, 1, 6, 11, + 3, 1, 9, 0, 1, 11, 3, 1, 9, 0, 2, 8, 4, 6, 11, 3, 1, 8, + 1, 1, 10, 2, 2, 6, 11, 3, 1, 9, 0, 6, 8, 4, 4, 8, 6, 6, + 12, 8, 7, 6, 11, 3, 1, 8, 1, 1, 8, 7, 1, 8, 6, 7, 5, 8, + 4, 6, 8, 4, 5, 6, 5, 8, 4, 11, 3, 1, 8, 1, 1, 6, 9, 0, + 3, 6, 5, 6, 8, 4, 6, 8, 4, 3, 8, 4, 8, 4, 8, 4, 1, 8, + 8, 1, 11, 9, 1, 9, 0, 5, 6, 12, 8, 4, 8, 4, 11, 9, 1, 8, + 8, 8, 4, 1, 8, 10, 11, 8, 10, 8, 1, 8, 6, 8, 4, 8, 10, 8, + 5, 12, 8, 11, 8, 7, 8, 12, 8, 4, 2, 7, 8, 4, 8, 4, 7, 6, + 12, 8, 4, 8, 4, 8, 4, 8, 4, 11, 9, 1, 8, 8, 8, 4, 6, 6, + 12, 8, 4, 8, 4, 8, 4, 11, 9, 1, 8, 8, 8, 4, 1, 6, 8, 10, + 1, 12, 1, 8, 12, 1, 8, 5, 1, 6, 8, 12, 1, 8, 13, 2, 8, 13, + 5, 3, 10, 8, 4, 10, 8, 4, 10, 10, 2, 1, 8, 11, 2, 6, 8, 10, + 8, 11, 3, 6, 8, 7, 8, 4, 9, 0, 3, 7, 8, 0, 6, 12, 6, 11, + 3, 1, 8, 1, 1, 8, 2, 1, 9, 0, 7, 10, 2, 10, 2, 8, 4, 6, + 8, 7, 6, 8, 1, 10, 2, 8, 4, 3, 6, 8, 7, 6, 8, 4, 9, 0, + 2, 6, 8, 5, 8, 4, 10, 97, 109, 98, 97, 115, 115, 97, 100, 111, 114, 5, + 101, 114, 114, 111, 114, 5, 101, 118, 101, 110, 116, 6, 111, 98, 106, 101, 99, 116, + 6, 111, 112, 116, 105, 111, 110, 6, 115, 105, 103, 110, 101, 114, 6, 115, 116, 114, + 105, 110, 103, 12, 115, 116, 114, 105, 110, 103, 95, 117, 116, 105, 108, 115, 10, 99, + 111, 108, 108, 101, 99, 116, 105, 111, 110, 12, 112, 114, 111, 112, 101, 114, 116, 121, + 95, 109, 97, 112, 7, 114, 111, 121, 97, 108, 116, 121, 5, 116, 111, 107, 101, 110, + 15, 65, 109, 98, 97, 115, 115, 97, 100, 111, 114, 76, 101, 118, 101, 108, 15, 65, + 109, 98, 97, 115, 115, 97, 100, 111, 114, 84, 111, 107, 101, 110, 11, 76, 101, 118, + 101, 108, 85, 112, 100, 97, 116, 101, 6, 79, 98, 106, 101, 99, 116, 16, 97, 109, + 98, 97, 115, 115, 97, 100, 111, 114, 95, 108, 101, 118, 101, 108, 29, 97, 109, 98, + 97, 115, 115, 97, 100, 111, 114, 95, 108, 101, 118, 101, 108, 95, 102, 114, 111, 109, + 95, 97, 100, 100, 114, 101, 115, 115, 6, 83, 116, 114, 105, 110, 103, 15, 97, 109, + 98, 97, 115, 115, 97, 100, 111, 114, 95, 114, 97, 110, 107, 28, 97, 109, 98, 97, + 115, 115, 97, 100, 111, 114, 95, 114, 97, 110, 107, 95, 102, 114, 111, 109, 95, 97, + 100, 100, 114, 101, 115, 115, 4, 98, 117, 114, 110, 18, 98, 117, 114, 110, 95, 110, + 97, 109, 101, 100, 95, 98, 121, 95, 117, 115, 101, 114, 28, 99, 114, 101, 97, 116, + 101, 95, 97, 109, 98, 97, 115, 115, 97, 100, 111, 114, 95, 99, 111, 108, 108, 101, + 99, 116, 105, 111, 110, 11, 105, 110, 105, 116, 95, 109, 111, 100, 117, 108, 101, 21, 109, 105, 110, 116, 95, 97, 109, 98, 97, 115, 115, 97, 100, 111, 114, 95, 116, 111, - 107, 101, 110, 26, 109, 105, 110, 116, 95, 97, 109, 98, 97, 115, 115, 97, 100, 111, - 114, 95, 116, 111, 107, 101, 110, 95, 105, 109, 112, 108, 29, 109, 105, 110, 116, 95, - 97, 109, 98, 97, 115, 115, 97, 100, 111, 114, 95, 116, 111, 107, 101, 110, 95, 98, - 121, 95, 117, 115, 101, 114, 6, 97, 112, 112, 101, 110, 100, 21, 99, 114, 101, 97, - 116, 101, 95, 110, 117, 109, 98, 101, 114, 101, 100, 95, 116, 111, 107, 101, 110, 15, - 103, 101, 110, 101, 114, 97, 116, 101, 95, 115, 105, 103, 110, 101, 114, 21, 103, 101, - 110, 101, 114, 97, 116, 101, 95, 116, 114, 97, 110, 115, 102, 101, 114, 95, 114, 101, - 102, 11, 84, 114, 97, 110, 115, 102, 101, 114, 82, 101, 102, 20, 103, 101, 110, 101, - 114, 97, 116, 101, 95, 109, 117, 116, 97, 116, 111, 114, 95, 114, 101, 102, 17, 103, - 101, 110, 101, 114, 97, 116, 101, 95, 98, 117, 114, 110, 95, 114, 101, 102, 28, 103, - 101, 110, 101, 114, 97, 116, 101, 95, 108, 105, 110, 101, 97, 114, 95, 116, 114, 97, - 110, 115, 102, 101, 114, 95, 114, 101, 102, 17, 76, 105, 110, 101, 97, 114, 84, 114, - 97, 110, 115, 102, 101, 114, 82, 101, 102, 17, 116, 114, 97, 110, 115, 102, 101, 114, - 95, 119, 105, 116, 104, 95, 114, 101, 102, 24, 100, 105, 115, 97, 98, 108, 101, 95, - 117, 110, 103, 97, 116, 101, 100, 95, 116, 114, 97, 110, 115, 102, 101, 114, 13, 112, - 114, 101, 112, 97, 114, 101, 95, 105, 110, 112, 117, 116, 11, 80, 114, 111, 112, 101, - 114, 116, 121, 77, 97, 112, 4, 105, 110, 105, 116, 9, 97, 100, 100, 95, 116, 121, - 112, 101, 100, 18, 99, 114, 101, 97, 116, 101, 95, 110, 97, 109, 101, 100, 95, 116, - 111, 107, 101, 110, 30, 109, 105, 110, 116, 95, 110, 117, 109, 98, 101, 114, 101, 100, - 95, 97, 109, 98, 97, 115, 115, 97, 100, 111, 114, 95, 116, 111, 107, 101, 110, 38, - 109, 105, 110, 116, 95, 110, 117, 109, 98, 101, 114, 101, 100, 95, 97, 109, 98, 97, - 115, 115, 97, 100, 111, 114, 95, 116, 111, 107, 101, 110, 95, 98, 121, 95, 117, 115, - 101, 114, 20, 115, 101, 116, 95, 97, 109, 98, 97, 115, 115, 97, 100, 111, 114, 95, - 108, 101, 118, 101, 108, 5, 101, 118, 101, 110, 116, 4, 101, 109, 105, 116, 22, 117, - 112, 100, 97, 116, 101, 95, 97, 109, 98, 97, 115, 115, 97, 100, 111, 114, 95, 114, - 97, 110, 107, 12, 117, 112, 100, 97, 116, 101, 95, 116, 121, 112, 101, 100, 7, 115, - 101, 116, 95, 117, 114, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 107, 101, 110, 29, 109, 105, 110, 116, 95, 97, 109, 98, 97, 115, 115, 97, 100, 111, + 114, 95, 116, 111, 107, 101, 110, 95, 98, 121, 95, 117, 115, 101, 114, 26, 109, 105, + 110, 116, 95, 97, 109, 98, 97, 115, 115, 97, 100, 111, 114, 95, 116, 111, 107, 101, + 110, 95, 105, 109, 112, 108, 30, 109, 105, 110, 116, 95, 110, 117, 109, 98, 101, 114, + 101, 100, 95, 97, 109, 98, 97, 115, 115, 97, 100, 111, 114, 95, 116, 111, 107, 101, + 110, 38, 109, 105, 110, 116, 95, 110, 117, 109, 98, 101, 114, 101, 100, 95, 97, 109, + 98, 97, 115, 115, 97, 100, 111, 114, 95, 116, 111, 107, 101, 110, 95, 98, 121, 95, + 117, 115, 101, 114, 20, 115, 101, 116, 95, 97, 109, 98, 97, 115, 115, 97, 100, 111, + 114, 95, 108, 101, 118, 101, 108, 22, 117, 112, 100, 97, 116, 101, 95, 97, 109, 98, + 97, 115, 115, 97, 100, 111, 114, 95, 114, 97, 110, 107, 11, 109, 117, 116, 97, 116, + 111, 114, 95, 114, 101, 102, 10, 77, 117, 116, 97, 116, 111, 114, 82, 101, 102, 8, + 98, 117, 114, 110, 95, 114, 101, 102, 7, 66, 117, 114, 110, 82, 101, 102, 20, 112, + 114, 111, 112, 101, 114, 116, 121, 95, 109, 117, 116, 97, 116, 111, 114, 95, 114, 101, + 102, 8, 98, 97, 115, 101, 95, 117, 114, 105, 9, 111, 108, 100, 95, 108, 101, 118, + 101, 108, 9, 110, 101, 119, 95, 108, 101, 118, 101, 108, 14, 111, 98, 106, 101, 99, + 116, 95, 97, 100, 100, 114, 101, 115, 115, 17, 97, 100, 100, 114, 101, 115, 115, 95, + 116, 111, 95, 111, 98, 106, 101, 99, 116, 4, 117, 116, 102, 56, 11, 114, 101, 97, + 100, 95, 115, 116, 114, 105, 110, 103, 9, 110, 111, 116, 95, 102, 111, 117, 110, 100, + 7, 99, 114, 101, 97, 116, 111, 114, 10, 97, 100, 100, 114, 101, 115, 115, 95, 111, + 102, 17, 112, 101, 114, 109, 105, 115, 115, 105, 111, 110, 95, 100, 101, 110, 105, 101, + 100, 9, 116, 111, 95, 115, 116, 114, 105, 110, 103, 20, 99, 114, 101, 97, 116, 101, + 95, 116, 111, 107, 101, 110, 95, 97, 100, 100, 114, 101, 115, 115, 7, 82, 111, 121, + 97, 108, 116, 121, 6, 79, 112, 116, 105, 111, 110, 4, 110, 111, 110, 101, 14, 67, + 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, 82, 101, 102, 27, 99, 114, 101, 97, + 116, 101, 95, 117, 110, 108, 105, 109, 105, 116, 101, 100, 95, 99, 111, 108, 108, 101, + 99, 116, 105, 111, 110, 11, 80, 114, 111, 112, 101, 114, 116, 121, 77, 97, 112, 11, + 84, 114, 97, 110, 115, 102, 101, 114, 82, 101, 102, 6, 97, 112, 112, 101, 110, 100, + 21, 99, 114, 101, 97, 116, 101, 95, 110, 117, 109, 98, 101, 114, 101, 100, 95, 116, + 111, 107, 101, 110, 18, 99, 114, 101, 97, 116, 101, 95, 110, 97, 109, 101, 100, 95, + 116, 111, 107, 101, 110, 15, 103, 101, 110, 101, 114, 97, 116, 101, 95, 115, 105, 103, + 110, 101, 114, 21, 103, 101, 110, 101, 114, 97, 116, 101, 95, 116, 114, 97, 110, 115, + 102, 101, 114, 95, 114, 101, 102, 20, 103, 101, 110, 101, 114, 97, 116, 101, 95, 109, + 117, 116, 97, 116, 111, 114, 95, 114, 101, 102, 17, 103, 101, 110, 101, 114, 97, 116, + 101, 95, 98, 117, 114, 110, 95, 114, 101, 102, 17, 76, 105, 110, 101, 97, 114, 84, + 114, 97, 110, 115, 102, 101, 114, 82, 101, 102, 28, 103, 101, 110, 101, 114, 97, 116, + 101, 95, 108, 105, 110, 101, 97, 114, 95, 116, 114, 97, 110, 115, 102, 101, 114, 95, + 114, 101, 102, 17, 116, 114, 97, 110, 115, 102, 101, 114, 95, 119, 105, 116, 104, 95, + 114, 101, 102, 24, 100, 105, 115, 97, 98, 108, 101, 95, 117, 110, 103, 97, 116, 101, + 100, 95, 116, 114, 97, 110, 115, 102, 101, 114, 13, 112, 114, 101, 112, 97, 114, 101, + 95, 105, 110, 112, 117, 116, 4, 105, 110, 105, 116, 9, 97, 100, 100, 95, 116, 121, + 112, 101, 100, 4, 101, 109, 105, 116, 12, 117, 112, 100, 97, 116, 101, 95, 116, 121, + 112, 101, 100, 7, 115, 101, 116, 95, 117, 114, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 202, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 202, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 2, 5, 4, 82, 97, - 110, 107, 10, 2, 27, 26, 65, 109, 98, 97, 115, 115, 97, 100, 111, 114, 32, 67, - 111, 108, 108, 101, 99, 116, 105, 111, 110, 32, 78, 97, 109, 101, 10, 2, 34, 33, - 65, 109, 98, 97, 115, 115, 97, 100, 111, 114, 32, 67, 111, 108, 108, 101, 99, 116, - 105, 111, 110, 32, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 10, 2, 26, - 25, 65, 109, 98, 97, 115, 115, 97, 100, 111, 114, 32, 67, 111, 108, 108, 101, 99, - 116, 105, 111, 110, 32, 85, 82, 73, 10, 2, 7, 6, 66, 114, 111, 110, 122, 101, - 10, 2, 1, 0, 10, 2, 7, 6, 83, 105, 108, 118, 101, 114, 10, 2, 5, 4, - 71, 111, 108, 100, 20, 99, 111, 109, 112, 105, 108, 97, 116, 105, 111, 110, 95, 109, - 101, 116, 97, 100, 97, 116, 97, 9, 0, 3, 50, 46, 48, 3, 50, 46, 49, 18, - 97, 112, 116, 111, 115, 58, 58, 109, 101, 116, 97, 100, 97, 116, 97, 95, 118, 49, - 197, 4, 6, 1, 0, 0, 0, 0, 0, 0, 0, 21, 69, 84, 79, 75, 69, 78, - 95, 68, 79, 69, 83, 95, 78, 79, 84, 95, 69, 88, 73, 83, 84, 24, 84, 104, - 101, 32, 116, 111, 107, 101, 110, 32, 100, 111, 101, 115, 32, 110, 111, 116, 32, 101, - 120, 105, 115, 116, 2, 0, 0, 0, 0, 0, 0, 0, 12, 69, 78, 79, 84, 95, - 67, 82, 69, 65, 84, 79, 82, 38, 84, 104, 101, 32, 112, 114, 111, 118, 105, 100, - 101, 100, 32, 115, 105, 103, 110, 101, 114, 32, 105, 115, 32, 110, 111, 116, 32, 116, - 104, 101, 32, 99, 114, 101, 97, 116, 111, 114, 3, 0, 0, 0, 0, 0, 0, 0, - 18, 69, 70, 73, 69, 76, 68, 95, 78, 79, 84, 95, 77, 85, 84, 65, 66, 76, - 69, 38, 65, 116, 116, 101, 109, 112, 116, 101, 100, 32, 116, 111, 32, 109, 117, 116, - 97, 116, 101, 32, 97, 110, 32, 105, 109, 109, 117, 116, 97, 98, 108, 101, 32, 102, - 105, 101, 108, 100, 4, 0, 0, 0, 0, 0, 0, 0, 19, 69, 84, 79, 75, 69, - 78, 95, 78, 79, 84, 95, 66, 85, 82, 78, 65, 66, 76, 69, 38, 65, 116, 116, - 101, 109, 112, 116, 101, 100, 32, 116, 111, 32, 98, 117, 114, 110, 32, 97, 32, 110, - 111, 110, 45, 98, 117, 114, 110, 97, 98, 108, 101, 32, 116, 111, 107, 101, 110, 5, - 0, 0, 0, 0, 0, 0, 0, 23, 69, 80, 82, 79, 80, 69, 82, 84, 73, 69, - 83, 95, 78, 79, 84, 95, 77, 85, 84, 65, 66, 76, 69, 54, 65, 116, 116, 101, - 109, 112, 116, 101, 100, 32, 116, 111, 32, 109, 117, 116, 97, 116, 101, 32, 97, 32, - 112, 114, 111, 112, 101, 114, 116, 121, 32, 109, 97, 112, 32, 116, 104, 97, 116, 32, - 105, 115, 32, 110, 111, 116, 32, 109, 117, 116, 97, 98, 108, 101, 6, 0, 0, 0, - 0, 0, 0, 0, 26, 69, 67, 79, 76, 76, 69, 67, 84, 73, 79, 78, 95, 68, - 79, 69, 83, 95, 78, 79, 84, 95, 69, 88, 73, 83, 84, 0, 3, 11, 76, 101, - 118, 101, 108, 85, 112, 100, 97, 116, 101, 1, 4, 0, 15, 65, 109, 98, 97, 115, - 115, 97, 100, 111, 114, 76, 101, 118, 101, 108, 1, 3, 1, 24, 48, 120, 49, 58, - 58, 111, 98, 106, 101, 99, 116, 58, 58, 79, 98, 106, 101, 99, 116, 71, 114, 111, - 117, 112, 15, 65, 109, 98, 97, 115, 115, 97, 100, 111, 114, 84, 111, 107, 101, 110, - 1, 3, 1, 24, 48, 120, 49, 58, 58, 111, 98, 106, 101, 99, 116, 58, 58, 79, - 98, 106, 101, 99, 116, 71, 114, 111, 117, 112, 4, 15, 97, 109, 98, 97, 115, 115, - 97, 100, 111, 114, 95, 114, 97, 110, 107, 1, 1, 0, 16, 97, 109, 98, 97, 115, - 115, 97, 100, 111, 114, 95, 108, 101, 118, 101, 108, 1, 1, 0, 28, 97, 109, 98, - 97, 115, 115, 97, 100, 111, 114, 95, 114, 97, 110, 107, 95, 102, 114, 111, 109, 95, - 97, 100, 100, 114, 101, 115, 115, 1, 1, 0, 29, 97, 109, 98, 97, 115, 115, 97, - 100, 111, 114, 95, 108, 101, 118, 101, 108, 95, 102, 114, 111, 109, 95, 97, 100, 100, - 114, 101, 115, 115, 1, 1, 0, 0, 2, 1, 2, 3, 1, 2, 4, 4, 8, 2, - 7, 8, 3, 9, 8, 4, 11, 8, 5, 6, 2, 3, 6, 11, 7, 1, 8, 1, - 17, 3, 18, 3, 0, 1, 4, 2, 0, 1, 10, 37, 14, 1, 12, 2, 10, 2, - 56, 0, 41, 1, 4, 30, 11, 2, 20, 56, 1, 11, 0, 17, 3, 33, 4, 27, - 14, 1, 56, 0, 44, 1, 19, 1, 1, 14, 1, 56, 0, 44, 0, 19, 0, 1, - 17, 4, 17, 5, 1, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 17, 6, 39, - 11, 0, 1, 11, 2, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 17, 7, 39, - 8, 1, 0, 1, 0, 1, 6, 14, 0, 56, 0, 43, 0, 16, 0, 20, 2, 9, - 1, 0, 1, 0, 1, 4, 11, 0, 56, 2, 17, 8, 2, 11, 1, 0, 0, 12, - 7, 14, 0, 7, 0, 17, 12, 12, 1, 14, 1, 56, 3, 2, 14, 1, 0, 0, - 1, 4, 11, 0, 56, 2, 17, 11, 2, 15, 1, 4, 2, 0, 1, 18, 22, 7, - 1, 17, 12, 12, 2, 10, 1, 17, 3, 12, 3, 14, 3, 14, 2, 11, 0, 17, - 3, 12, 4, 14, 4, 56, 4, 12, 5, 14, 5, 17, 17, 56, 2, 12, 6, 11, - 1, 11, 6, 17, 0, 2, 18, 0, 0, 0, 23, 19, 7, 2, 17, 12, 7, 1, - 17, 12, 7, 3, 17, 12, 12, 1, 56, 5, 12, 2, 12, 3, 12, 4, 11, 0, - 11, 4, 11, 3, 11, 2, 11, 1, 17, 20, 1, 2, 21, 0, 0, 0, 1, 3, - 11, 0, 17, 18, 2, 22, 1, 4, 0, 26, 8, 11, 0, 11, 1, 11, 2, 11, - 3, 11, 4, 9, 17, 23, 2, 24, 1, 4, 0, 28, 13, 11, 0, 17, 3, 12, - 4, 14, 4, 56, 4, 12, 5, 11, 1, 11, 2, 11, 5, 11, 3, 11, 4, 17, - 22, 2, 23, 0, 0, 0, 43, 89, 7, 1, 17, 12, 12, 6, 10, 3, 12, 7, - 13, 7, 7, 4, 17, 12, 17, 25, 11, 5, 4, 78, 11, 0, 12, 8, 11, 6, - 12, 9, 11, 1, 12, 10, 11, 2, 12, 11, 7, 5, 17, 12, 56, 5, 12, 12, - 12, 13, 11, 8, 11, 9, 11, 10, 11, 11, 11, 13, 11, 12, 11, 7, 17, 26, - 12, 14, 14, 14, 17, 27, 12, 15, 14, 14, 17, 28, 12, 16, 14, 14, 17, 29, - 14, 14, 17, 30, 14, 14, 17, 31, 12, 17, 14, 16, 17, 32, 11, 4, 17, 33, - 14, 16, 17, 34, 14, 15, 6, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 45, - 0, 64, 12, 0, 0, 0, 0, 0, 0, 0, 0, 64, 12, 0, 0, 0, 0, 0, - 0, 0, 0, 64, 13, 0, 0, 0, 0, 0, 0, 0, 0, 17, 35, 12, 18, 14, - 14, 11, 18, 17, 36, 14, 17, 7, 0, 17, 12, 7, 4, 17, 12, 56, 6, 11, - 17, 11, 3, 18, 1, 12, 19, 14, 15, 11, 19, 45, 1, 2, 56, 5, 12, 12, - 11, 0, 11, 6, 11, 1, 11, 2, 11, 12, 11, 7, 17, 38, 12, 14, 5, 33, - 39, 1, 4, 0, 26, 8, 11, 0, 11, 1, 11, 2, 11, 3, 11, 4, 8, 17, - 23, 2, 40, 1, 4, 0, 4, 10, 11, 0, 17, 3, 12, 5, 11, 1, 11, 2, - 11, 3, 11, 4, 11, 5, 17, 39, 2, 41, 1, 4, 2, 0, 1, 49, 46, 14, - 1, 12, 3, 10, 3, 56, 0, 41, 1, 4, 39, 11, 3, 20, 56, 1, 11, 0, - 17, 3, 33, 4, 36, 14, 1, 56, 0, 42, 0, 12, 4, 10, 4, 16, 0, 20, - 12, 5, 10, 1, 11, 5, 10, 2, 18, 2, 56, 7, 11, 4, 15, 0, 12, 6, - 10, 2, 11, 6, 21, 11, 1, 11, 2, 17, 43, 2, 6, 2, 0, 0, 0, 0, - 0, 0, 0, 17, 6, 39, 11, 0, 1, 11, 3, 1, 6, 1, 0, 0, 0, 0, - 0, 0, 0, 17, 7, 39, 43, 0, 0, 1, 1, 52, 42, 10, 1, 6, 10, 0, - 0, 0, 0, 0, 0, 0, 35, 4, 32, 7, 4, 12, 3, 14, 0, 56, 0, 43, - 1, 12, 4, 10, 4, 16, 1, 7, 0, 17, 12, 12, 5, 14, 5, 10, 3, 17, - 12, 56, 8, 10, 4, 16, 2, 20, 12, 6, 13, 6, 11, 3, 17, 12, 17, 25, - 11, 4, 16, 3, 11, 6, 17, 45, 2, 11, 1, 6, 20, 0, 0, 0, 0, 0, - 0, 0, 35, 4, 39, 7, 6, 12, 3, 5, 6, 7, 7, 12, 3, 5, 6, 0, - 0, 1, 2, 1, 3, 1, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, + 2, 34, 33, 65, 109, 98, 97, 115, 115, 97, 100, 111, 114, 32, 67, 111, 108, 108, + 101, 99, 116, 105, 111, 110, 32, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, + 10, 2, 27, 26, 65, 109, 98, 97, 115, 115, 97, 100, 111, 114, 32, 67, 111, 108, + 108, 101, 99, 116, 105, 111, 110, 32, 78, 97, 109, 101, 10, 2, 26, 25, 65, 109, + 98, 97, 115, 115, 97, 100, 111, 114, 32, 67, 111, 108, 108, 101, 99, 116, 105, 111, + 110, 32, 85, 82, 73, 3, 8, 6, 0, 0, 0, 0, 0, 0, 0, 3, 8, 3, + 0, 0, 0, 0, 0, 0, 0, 3, 8, 2, 0, 0, 0, 0, 0, 0, 0, 3, + 8, 5, 0, 0, 0, 0, 0, 0, 0, 3, 8, 1, 0, 0, 0, 0, 0, 0, + 0, 3, 8, 4, 0, 0, 0, 0, 0, 0, 0, 10, 2, 7, 6, 66, 114, 111, + 110, 122, 101, 10, 2, 5, 4, 71, 111, 108, 100, 10, 2, 7, 6, 83, 105, 108, + 118, 101, 114, 10, 2, 5, 4, 82, 97, 110, 107, 10, 2, 1, 0, 10, 10, 2, + 1, 0, 18, 97, 112, 116, 111, 115, 58, 58, 109, 101, 116, 97, 100, 97, 116, 97, + 95, 118, 49, 197, 4, 6, 1, 0, 0, 0, 0, 0, 0, 0, 21, 69, 84, 79, + 75, 69, 78, 95, 68, 79, 69, 83, 95, 78, 79, 84, 95, 69, 88, 73, 83, 84, + 24, 84, 104, 101, 32, 116, 111, 107, 101, 110, 32, 100, 111, 101, 115, 32, 110, 111, + 116, 32, 101, 120, 105, 115, 116, 2, 0, 0, 0, 0, 0, 0, 0, 12, 69, 78, + 79, 84, 95, 67, 82, 69, 65, 84, 79, 82, 38, 84, 104, 101, 32, 112, 114, 111, + 118, 105, 100, 101, 100, 32, 115, 105, 103, 110, 101, 114, 32, 105, 115, 32, 110, 111, + 116, 32, 116, 104, 101, 32, 99, 114, 101, 97, 116, 111, 114, 3, 0, 0, 0, 0, + 0, 0, 0, 18, 69, 70, 73, 69, 76, 68, 95, 78, 79, 84, 95, 77, 85, 84, + 65, 66, 76, 69, 38, 65, 116, 116, 101, 109, 112, 116, 101, 100, 32, 116, 111, 32, + 109, 117, 116, 97, 116, 101, 32, 97, 110, 32, 105, 109, 109, 117, 116, 97, 98, 108, + 101, 32, 102, 105, 101, 108, 100, 4, 0, 0, 0, 0, 0, 0, 0, 19, 69, 84, + 79, 75, 69, 78, 95, 78, 79, 84, 95, 66, 85, 82, 78, 65, 66, 76, 69, 38, + 65, 116, 116, 101, 109, 112, 116, 101, 100, 32, 116, 111, 32, 98, 117, 114, 110, 32, + 97, 32, 110, 111, 110, 45, 98, 117, 114, 110, 97, 98, 108, 101, 32, 116, 111, 107, + 101, 110, 5, 0, 0, 0, 0, 0, 0, 0, 23, 69, 80, 82, 79, 80, 69, 82, + 84, 73, 69, 83, 95, 78, 79, 84, 95, 77, 85, 84, 65, 66, 76, 69, 54, 65, + 116, 116, 101, 109, 112, 116, 101, 100, 32, 116, 111, 32, 109, 117, 116, 97, 116, 101, + 32, 97, 32, 112, 114, 111, 112, 101, 114, 116, 121, 32, 109, 97, 112, 32, 116, 104, + 97, 116, 32, 105, 115, 32, 110, 111, 116, 32, 109, 117, 116, 97, 98, 108, 101, 6, + 0, 0, 0, 0, 0, 0, 0, 26, 69, 67, 79, 76, 76, 69, 67, 84, 73, 79, + 78, 95, 68, 79, 69, 83, 95, 78, 79, 84, 95, 69, 88, 73, 83, 84, 0, 3, + 11, 76, 101, 118, 101, 108, 85, 112, 100, 97, 116, 101, 1, 4, 0, 15, 65, 109, + 98, 97, 115, 115, 97, 100, 111, 114, 76, 101, 118, 101, 108, 1, 3, 1, 24, 48, + 120, 49, 58, 58, 111, 98, 106, 101, 99, 116, 58, 58, 79, 98, 106, 101, 99, 116, + 71, 114, 111, 117, 112, 15, 65, 109, 98, 97, 115, 115, 97, 100, 111, 114, 84, 111, + 107, 101, 110, 1, 3, 1, 24, 48, 120, 49, 58, 58, 111, 98, 106, 101, 99, 116, + 58, 58, 79, 98, 106, 101, 99, 116, 71, 114, 111, 117, 112, 4, 15, 97, 109, 98, + 97, 115, 115, 97, 100, 111, 114, 95, 114, 97, 110, 107, 1, 1, 0, 16, 97, 109, + 98, 97, 115, 115, 97, 100, 111, 114, 95, 108, 101, 118, 101, 108, 1, 1, 0, 28, + 97, 109, 98, 97, 115, 115, 97, 100, 111, 114, 95, 114, 97, 110, 107, 95, 102, 114, + 111, 109, 95, 97, 100, 100, 114, 101, 115, 115, 1, 1, 0, 29, 97, 109, 98, 97, + 115, 115, 97, 100, 111, 114, 95, 108, 101, 118, 101, 108, 95, 102, 114, 111, 109, 95, + 97, 100, 100, 114, 101, 115, 115, 1, 1, 0, 0, 2, 1, 16, 3, 1, 2, 4, + 32, 8, 5, 34, 8, 6, 36, 8, 7, 37, 8, 4, 2, 2, 3, 11, 11, 3, + 1, 8, 1, 38, 3, 39, 3, 0, 1, 0, 1, 0, 5, 6, 14, 0, 56, 0, + 43, 0, 16, 0, 20, 2, 1, 1, 0, 1, 0, 5, 4, 11, 0, 56, 1, 17, + 0, 2, 2, 1, 0, 0, 17, 9, 14, 0, 12, 2, 7, 12, 17, 17, 12, 1, + 11, 2, 14, 1, 56, 2, 2, 3, 1, 0, 0, 5, 4, 11, 0, 56, 1, 17, + 2, 2, 4, 1, 4, 2, 0, 1, 20, 45, 11, 0, 14, 1, 12, 5, 12, 3, + 10, 5, 56, 0, 41, 1, 4, 9, 5, 16, 11, 5, 1, 11, 3, 1, 7, 7, + 17, 19, 39, 11, 5, 20, 56, 3, 11, 3, 17, 21, 33, 4, 24, 5, 27, 7, + 5, 17, 22, 39, 14, 1, 56, 0, 44, 1, 19, 1, 1, 12, 4, 12, 2, 1, + 14, 1, 56, 0, 44, 0, 19, 0, 1, 11, 4, 17, 23, 11, 2, 17, 24, 2, + 5, 1, 4, 2, 0, 1, 23, 26, 7, 1, 17, 17, 12, 7, 10, 1, 17, 21, + 12, 5, 14, 5, 12, 6, 14, 7, 12, 4, 11, 0, 17, 21, 12, 2, 14, 2, + 56, 4, 12, 3, 11, 6, 11, 4, 14, 3, 17, 26, 56, 1, 12, 8, 11, 1, + 11, 8, 17, 4, 2, 6, 0, 0, 0, 26, 17, 7, 0, 17, 17, 12, 1, 7, + 1, 17, 17, 12, 2, 7, 2, 17, 17, 12, 3, 11, 0, 11, 1, 11, 2, 56, + 5, 11, 3, 17, 28, 1, 2, 7, 0, 0, 0, 5, 3, 11, 0, 17, 6, 2, + 8, 1, 4, 0, 5, 8, 11, 0, 11, 1, 11, 2, 11, 3, 11, 4, 9, 17, + 10, 2, 9, 1, 4, 0, 2, 11, 11, 0, 17, 21, 12, 4, 11, 1, 11, 2, + 14, 4, 56, 4, 11, 3, 11, 4, 17, 8, 2, 10, 0, 0, 0, 31, 81, 7, + 1, 17, 17, 12, 9, 10, 3, 12, 16, 13, 16, 7, 9, 17, 17, 17, 29, 11, + 5, 4, 22, 11, 0, 11, 9, 11, 1, 11, 2, 7, 13, 17, 17, 56, 5, 11, + 16, 17, 30, 12, 6, 5, 30, 11, 0, 11, 9, 11, 1, 11, 2, 56, 5, 11, + 16, 17, 31, 12, 6, 11, 6, 12, 10, 14, 10, 17, 32, 12, 12, 14, 10, 17, + 33, 12, 15, 14, 10, 17, 34, 12, 11, 14, 10, 17, 35, 12, 8, 14, 10, 17, + 36, 12, 14, 14, 15, 17, 37, 11, 4, 17, 38, 14, 15, 17, 39, 14, 12, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 45, 0, 64, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 3, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 17, 40, + 12, 13, 14, 10, 11, 13, 17, 41, 14, 14, 7, 12, 17, 17, 7, 9, 17, 17, + 56, 6, 11, 11, 11, 8, 11, 14, 11, 3, 18, 1, 12, 7, 14, 12, 11, 7, + 45, 1, 2, 11, 1, 4, 0, 5, 8, 11, 0, 11, 1, 11, 2, 11, 3, 11, + 4, 8, 17, 10, 2, 12, 1, 4, 0, 5, 8, 11, 1, 11, 2, 11, 3, 11, + 4, 11, 0, 17, 21, 17, 11, 2, 13, 1, 4, 2, 0, 1, 46, 46, 11, 0, + 14, 1, 12, 5, 12, 4, 10, 5, 56, 0, 41, 1, 4, 9, 5, 16, 11, 5, + 1, 11, 4, 1, 7, 7, 17, 19, 39, 11, 5, 20, 56, 3, 11, 4, 17, 21, + 33, 4, 24, 5, 27, 7, 5, 17, 22, 39, 14, 1, 56, 0, 42, 0, 12, 3, + 10, 1, 10, 3, 16, 0, 20, 10, 2, 18, 2, 56, 7, 10, 2, 11, 3, 15, + 0, 21, 11, 1, 11, 2, 17, 14, 2, 14, 0, 0, 1, 1, 49, 48, 10, 1, + 6, 10, 0, 0, 0, 0, 0, 0, 0, 35, 4, 7, 7, 9, 12, 3, 5, 18, + 11, 1, 6, 20, 0, 0, 0, 0, 0, 0, 0, 35, 4, 14, 7, 11, 12, 2, + 5, 16, 7, 10, 12, 2, 11, 2, 12, 3, 11, 3, 12, 7, 14, 0, 56, 0, + 43, 1, 12, 6, 10, 6, 16, 1, 12, 5, 7, 12, 17, 17, 12, 4, 11, 5, + 14, 4, 10, 7, 17, 17, 56, 8, 10, 6, 16, 2, 20, 12, 8, 13, 8, 11, + 7, 17, 17, 17, 29, 11, 6, 16, 3, 11, 8, 17, 45, 2, 0, 0, 1, 2, + 1, 3, 1, 0, 0, ] }); @@ -1873,58 +1881,55 @@ pub static PACKAGE_AGGREGATOR_EXAMPLES_METADATA: Lazy> = Lazy::new(|| { pub static MODULE_AGGREGATOR_EXAMPLES_COUNTER_WITH_MILESTONE: Lazy> = Lazy::new(|| { vec![ 161, 28, 235, 11, 7, 0, 0, 10, 12, 1, 0, 10, 2, 10, 14, 3, 24, 52, - 4, 76, 8, 5, 84, 60, 7, 144, 1, 128, 2, 8, 144, 3, 64, 6, 208, 3, - 34, 16, 242, 3, 163, 1, 10, 149, 5, 17, 12, 166, 5, 199, 1, 13, 237, 6, - 6, 0, 0, 1, 6, 1, 10, 1, 16, 1, 18, 0, 1, 8, 0, 1, 5, 6, - 1, 0, 0, 0, 7, 6, 0, 0, 9, 0, 1, 0, 1, 2, 11, 2, 3, 0, - 1, 1, 12, 1, 5, 1, 3, 1, 0, 13, 1, 1, 0, 1, 1, 14, 7, 8, - 1, 0, 1, 1, 15, 9, 8, 1, 0, 1, 3, 17, 11, 1, 1, 6, 1, 4, - 19, 4, 4, 0, 1, 2, 4, 4, 4, 5, 4, 6, 10, 2, 6, 12, 3, 0, - 1, 6, 12, 1, 5, 1, 3, 1, 11, 1, 1, 9, 0, 5, 6, 12, 3, 3, - 11, 1, 1, 3, 8, 0, 2, 7, 11, 1, 1, 9, 0, 9, 0, 1, 1, 2, - 6, 11, 1, 1, 9, 0, 9, 0, 1, 8, 2, 1, 9, 0, 2, 7, 8, 0, - 1, 22, 99, 111, 117, 110, 116, 101, 114, 95, 119, 105, 116, 104, 95, 109, 105, 108, - 101, 115, 116, 111, 110, 101, 16, 77, 105, 108, 101, 115, 116, 111, 110, 101, 67, 111, - 117, 110, 116, 101, 114, 14, 110, 101, 120, 116, 95, 109, 105, 108, 101, 115, 116, 111, - 110, 101, 15, 109, 105, 108, 101, 115, 116, 111, 110, 101, 95, 101, 118, 101, 114, 121, - 5, 99, 111, 117, 110, 116, 10, 65, 103, 103, 114, 101, 103, 97, 116, 111, 114, 13, - 97, 103, 103, 114, 101, 103, 97, 116, 111, 114, 95, 118, 50, 16, 77, 105, 108, 101, - 115, 116, 111, 110, 101, 82, 101, 97, 99, 104, 101, 100, 9, 109, 105, 108, 101, 115, - 116, 111, 110, 101, 6, 99, 114, 101, 97, 116, 101, 6, 115, 105, 103, 110, 101, 114, - 10, 97, 100, 100, 114, 101, 115, 115, 95, 111, 102, 27, 99, 114, 101, 97, 116, 101, - 95, 117, 110, 98, 111, 117, 110, 100, 101, 100, 95, 97, 103, 103, 114, 101, 103, 97, - 116, 111, 114, 19, 105, 110, 99, 114, 101, 109, 101, 110, 116, 95, 109, 105, 108, 101, - 115, 116, 111, 110, 101, 7, 116, 114, 121, 95, 97, 100, 100, 11, 105, 115, 95, 97, - 116, 95, 108, 101, 97, 115, 116, 5, 101, 118, 101, 110, 116, 4, 101, 109, 105, 116, - 5, 101, 114, 114, 111, 114, 16, 105, 110, 118, 97, 108, 105, 100, 95, 97, 114, 103, - 117, 109, 101, 110, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, - 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 32, 0, + 4, 76, 8, 5, 84, 49, 7, 133, 1, 128, 2, 8, 133, 3, 64, 6, 197, 3, + 64, 16, 133, 4, 132, 1, 10, 137, 5, 17, 12, 154, 5, 164, 1, 13, 190, 6, + 6, 0, 0, 1, 1, 1, 2, 1, 3, 1, 4, 0, 5, 8, 0, 0, 6, 6, + 0, 1, 12, 6, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, 8, 1, 1, 0, + 1, 4, 14, 2, 3, 0, 1, 1, 15, 1, 5, 1, 3, 1, 2, 16, 4, 4, + 0, 1, 1, 17, 7, 8, 1, 0, 1, 1, 18, 9, 8, 1, 0, 1, 3, 19, + 11, 1, 1, 6, 1, 3, 4, 5, 4, 6, 4, 7, 10, 2, 6, 12, 3, 0, + 1, 6, 12, 1, 5, 1, 3, 1, 11, 2, 1, 9, 0, 2, 1, 7, 8, 0, + 2, 7, 11, 2, 1, 9, 0, 9, 0, 1, 1, 2, 6, 11, 2, 1, 9, 0, + 9, 0, 1, 8, 1, 1, 9, 0, 22, 99, 111, 117, 110, 116, 101, 114, 95, 119, + 105, 116, 104, 95, 109, 105, 108, 101, 115, 116, 111, 110, 101, 13, 97, 103, 103, 114, + 101, 103, 97, 116, 111, 114, 95, 118, 50, 5, 101, 114, 114, 111, 114, 5, 101, 118, + 101, 110, 116, 6, 115, 105, 103, 110, 101, 114, 16, 77, 105, 108, 101, 115, 116, 111, + 110, 101, 67, 111, 117, 110, 116, 101, 114, 16, 77, 105, 108, 101, 115, 116, 111, 110, + 101, 82, 101, 97, 99, 104, 101, 100, 6, 99, 114, 101, 97, 116, 101, 19, 105, 110, + 99, 114, 101, 109, 101, 110, 116, 95, 109, 105, 108, 101, 115, 116, 111, 110, 101, 14, + 110, 101, 120, 116, 95, 109, 105, 108, 101, 115, 116, 111, 110, 101, 15, 109, 105, 108, + 101, 115, 116, 111, 110, 101, 95, 101, 118, 101, 114, 121, 5, 99, 111, 117, 110, 116, + 10, 65, 103, 103, 114, 101, 103, 97, 116, 111, 114, 9, 109, 105, 108, 101, 115, 116, + 111, 110, 101, 10, 97, 100, 100, 114, 101, 115, 115, 95, 111, 102, 27, 99, 114, 101, + 97, 116, 101, 95, 117, 110, 98, 111, 117, 110, 100, 101, 100, 95, 97, 103, 103, 114, + 101, 103, 97, 116, 111, 114, 16, 105, 110, 118, 97, 108, 105, 100, 95, 97, 114, 103, + 117, 109, 101, 110, 116, 7, 116, 114, 121, 95, 97, 100, 100, 11, 105, 115, 95, 97, + 116, 95, 108, 101, 97, 115, 116, 4, 101, 109, 105, 116, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 202, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 3, 8, 4, 0, 0, 0, 0, 0, 0, 0, 3, 8, 5, 0, + 0, 0, 0, 0, 0, 0, 3, 8, 2, 0, 0, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 254, 20, 99, 111, 109, 112, - 105, 108, 97, 116, 105, 111, 110, 95, 109, 101, 116, 97, 100, 97, 116, 97, 9, 0, - 3, 50, 46, 48, 3, 50, 46, 49, 18, 97, 112, 116, 111, 115, 58, 58, 109, 101, - 116, 97, 100, 97, 116, 97, 95, 118, 49, 112, 3, 2, 0, 0, 0, 0, 0, 0, - 0, 21, 69, 82, 69, 83, 79, 85, 82, 67, 69, 95, 78, 79, 84, 95, 80, 82, - 69, 83, 69, 78, 84, 0, 4, 0, 0, 0, 0, 0, 0, 0, 23, 69, 67, 79, - 85, 78, 84, 69, 82, 95, 73, 78, 67, 82, 69, 77, 69, 78, 84, 95, 70, 65, - 73, 76, 0, 5, 0, 0, 0, 0, 0, 0, 0, 15, 69, 78, 79, 84, 95, 65, - 85, 84, 72, 79, 82, 73, 90, 69, 68, 0, 1, 16, 77, 105, 108, 101, 115, 116, - 111, 110, 101, 82, 101, 97, 99, 104, 101, 100, 1, 4, 0, 0, 0, 2, 3, 2, - 3, 3, 3, 4, 11, 1, 1, 3, 2, 2, 1, 8, 3, 0, 1, 4, 0, 6, - 26, 10, 0, 17, 1, 7, 0, 33, 4, 22, 11, 0, 12, 2, 10, 1, 12, 3, - 11, 1, 12, 4, 56, 0, 12, 5, 11, 3, 11, 4, 11, 5, 18, 0, 12, 6, - 11, 2, 11, 6, 45, 0, 2, 11, 0, 1, 6, 5, 0, 0, 0, 0, 0, 0, - 0, 39, 3, 1, 4, 1, 0, 12, 59, 7, 0, 41, 0, 4, 56, 7, 0, 42, - 0, 12, 0, 10, 0, 15, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 56, 1, - 4, 52, 10, 0, 16, 0, 10, 0, 16, 1, 20, 56, 2, 4, 49, 10, 0, 16, - 0, 10, 0, 16, 1, 20, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 56, 2, - 32, 12, 1, 11, 1, 4, 46, 10, 0, 16, 1, 20, 18, 1, 56, 3, 10, 0, - 16, 1, 20, 10, 0, 16, 2, 20, 22, 11, 0, 15, 1, 21, 2, 11, 0, 1, - 5, 45, 9, 12, 1, 5, 28, 11, 0, 1, 6, 4, 0, 0, 0, 0, 0, 0, - 0, 39, 6, 2, 0, 0, 0, 0, 0, 0, 0, 17, 7, 39, 0, 2, 0, 0, - 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 254, 18, 97, 112, 116, + 111, 115, 58, 58, 109, 101, 116, 97, 100, 97, 116, 97, 95, 118, 49, 112, 3, 2, + 0, 0, 0, 0, 0, 0, 0, 21, 69, 82, 69, 83, 79, 85, 82, 67, 69, 95, + 78, 79, 84, 95, 80, 82, 69, 83, 69, 78, 84, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 23, 69, 67, 79, 85, 78, 84, 69, 82, 95, 73, 78, 67, 82, 69, 77, + 69, 78, 84, 95, 70, 65, 73, 76, 0, 5, 0, 0, 0, 0, 0, 0, 0, 15, + 69, 78, 79, 84, 95, 65, 85, 84, 72, 79, 82, 73, 90, 69, 68, 0, 1, 16, + 77, 105, 108, 101, 115, 116, 111, 110, 101, 82, 101, 97, 99, 104, 101, 100, 1, 4, + 0, 0, 0, 2, 3, 9, 3, 10, 3, 11, 11, 2, 1, 3, 1, 2, 1, 13, + 3, 0, 1, 4, 0, 1, 17, 10, 0, 17, 2, 7, 3, 33, 4, 6, 5, 10, + 11, 0, 1, 7, 1, 39, 11, 0, 10, 1, 11, 1, 56, 0, 18, 0, 45, 0, + 2, 1, 1, 4, 1, 0, 6, 61, 7, 3, 41, 0, 4, 4, 5, 7, 7, 2, + 17, 4, 39, 7, 3, 42, 0, 12, 1, 10, 1, 15, 0, 6, 1, 0, 0, 0, + 0, 0, 0, 0, 56, 1, 4, 16, 5, 20, 11, 1, 1, 7, 0, 39, 10, 1, + 16, 0, 10, 1, 16, 1, 20, 56, 2, 4, 38, 10, 1, 16, 0, 10, 1, 16, + 1, 20, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 56, 2, 32, 12, 0, 5, + 40, 9, 12, 0, 11, 0, 4, 58, 10, 1, 16, 1, 20, 18, 1, 56, 3, 10, + 1, 16, 1, 20, 10, 1, 16, 2, 20, 22, 11, 1, 15, 1, 21, 5, 60, 11, + 1, 1, 2, 0, 2, 0, 0, 0, 1, 0, ] }); @@ -1960,195 +1965,180 @@ pub static PACKAGE_BCS_STREAM_METADATA: Lazy> = Lazy::new(|| { #[rustfmt::skip] pub static MODULE_BCS_STREAM_BCS_STREAM: Lazy> = Lazy::new(|| { vec![ - 161, 28, 235, 11, 7, 0, 0, 10, 11, 1, 0, 10, 2, 10, 8, 3, 18, 103, - 4, 121, 2, 5, 123, 77, 7, 200, 1, 190, 2, 8, 134, 4, 64, 16, 198, 4, - 206, 1, 10, 148, 6, 8, 12, 156, 6, 236, 19, 13, 136, 26, 4, 0, 0, 1, - 6, 1, 8, 1, 10, 1, 16, 0, 1, 2, 0, 4, 15, 7, 0, 0, 4, 0, - 1, 0, 1, 0, 5, 3, 4, 0, 1, 1, 7, 6, 7, 1, 1, 1, 2, 9, - 0, 4, 0, 1, 3, 11, 2, 2, 0, 1, 0, 12, 3, 10, 0, 1, 3, 13, - 2, 2, 0, 1, 0, 14, 3, 12, 0, 1, 0, 17, 3, 2, 0, 1, 4, 18, - 0, 12, 0, 1, 0, 19, 3, 14, 0, 1, 0, 20, 3, 15, 0, 1, 0, 21, - 3, 16, 0, 1, 0, 22, 17, 8, 0, 1, 0, 23, 3, 18, 0, 1, 0, 24, - 3, 2, 0, 1, 0, 25, 3, 5, 0, 1, 2, 5, 1, 10, 2, 1, 8, 0, - 1, 3, 1, 7, 8, 0, 1, 5, 1, 2, 3, 6, 10, 9, 0, 3, 3, 1, - 10, 9, 0, 0, 3, 6, 10, 2, 3, 3, 1, 1, 3, 2, 2, 1, 1, 8, - 1, 4, 3, 6, 10, 2, 3, 3, 1, 4, 1, 13, 1, 15, 2, 10, 2, 3, - 1, 14, 4, 6, 10, 2, 3, 3, 3, 7, 3, 2, 2, 2, 3, 3, 1, 10, - 98, 99, 115, 95, 115, 116, 114, 101, 97, 109, 9, 66, 67, 83, 83, 116, 114, 101, - 97, 109, 4, 100, 97, 116, 97, 3, 99, 117, 114, 3, 110, 101, 119, 19, 100, 101, - 115, 101, 114, 105, 97, 108, 105, 122, 101, 95, 97, 100, 100, 114, 101, 115, 115, 6, - 118, 101, 99, 116, 111, 114, 5, 115, 108, 105, 99, 101, 8, 102, 114, 111, 109, 95, - 98, 99, 115, 10, 116, 111, 95, 97, 100, 100, 114, 101, 115, 115, 5, 101, 114, 114, - 111, 114, 12, 111, 117, 116, 95, 111, 102, 95, 114, 97, 110, 103, 101, 16, 100, 101, - 115, 101, 114, 105, 97, 108, 105, 122, 101, 95, 98, 111, 111, 108, 16, 105, 110, 118, - 97, 108, 105, 100, 95, 97, 114, 103, 117, 109, 101, 110, 116, 18, 100, 101, 115, 101, - 114, 105, 97, 108, 105, 122, 101, 95, 115, 116, 114, 105, 110, 103, 6, 83, 116, 114, - 105, 110, 103, 6, 115, 116, 114, 105, 110, 103, 19, 100, 101, 115, 101, 114, 105, 97, - 108, 105, 122, 101, 95, 117, 108, 101, 98, 49, 50, 56, 4, 117, 116, 102, 56, 16, + 161, 28, 235, 11, 7, 0, 0, 10, 12, 1, 0, 10, 2, 10, 8, 3, 18, 103, + 4, 121, 2, 5, 123, 104, 7, 227, 1, 190, 2, 8, 161, 4, 64, 6, 225, 4, + 20, 16, 245, 4, 175, 1, 10, 164, 6, 8, 12, 172, 6, 198, 17, 13, 242, 23, + 4, 0, 0, 1, 1, 1, 2, 1, 3, 1, 4, 0, 5, 2, 0, 3, 8, 7, + 0, 0, 6, 0, 1, 0, 1, 0, 7, 0, 2, 0, 1, 0, 9, 0, 3, 0, + 1, 0, 10, 0, 4, 0, 1, 0, 11, 0, 5, 0, 1, 0, 12, 0, 6, 0, + 1, 0, 13, 7, 8, 0, 1, 0, 14, 0, 9, 0, 1, 0, 15, 0, 10, 0, + 1, 0, 16, 0, 11, 0, 1, 0, 17, 0, 10, 0, 1, 0, 18, 12, 13, 0, + 1, 1, 21, 10, 10, 0, 1, 4, 22, 15, 16, 1, 1, 1, 2, 23, 12, 1, + 0, 1, 1, 24, 10, 10, 0, 1, 3, 25, 12, 3, 0, 1, 13, 11, 1, 7, + 8, 0, 1, 5, 1, 1, 1, 8, 1, 1, 4, 1, 13, 1, 15, 2, 10, 2, + 3, 0, 1, 14, 1, 3, 1, 2, 1, 10, 2, 1, 8, 0, 3, 3, 6, 10, + 2, 5, 3, 6, 10, 9, 0, 3, 3, 1, 10, 9, 0, 2, 1, 2, 4, 3, + 6, 10, 2, 3, 8, 1, 3, 3, 6, 10, 2, 4, 3, 3, 6, 10, 2, 13, + 3, 3, 6, 10, 2, 15, 3, 3, 6, 10, 2, 14, 3, 3, 6, 10, 2, 3, + 3, 3, 6, 10, 2, 2, 5, 1, 2, 3, 2, 3, 10, 98, 99, 115, 95, 115, + 116, 114, 101, 97, 109, 5, 101, 114, 114, 111, 114, 8, 102, 114, 111, 109, 95, 98, + 99, 115, 6, 115, 116, 114, 105, 110, 103, 6, 118, 101, 99, 116, 111, 114, 9, 66, + 67, 83, 83, 116, 114, 101, 97, 109, 19, 100, 101, 115, 101, 114, 105, 97, 108, 105, + 122, 101, 95, 97, 100, 100, 114, 101, 115, 115, 16, 100, 101, 115, 101, 114, 105, 97, + 108, 105, 122, 101, 95, 98, 111, 111, 108, 6, 83, 116, 114, 105, 110, 103, 18, 100, + 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 95, 115, 116, 114, 105, 110, 103, 16, 100, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 95, 117, 49, 50, 56, 15, 100, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 95, 117, 49, 54, 16, 100, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 95, 117, 50, 53, 54, 22, 100, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 95, 117, 50, 53, 54, 95, 101, 110, 116, 114, 121, 15, 100, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 95, 117, 51, 50, 15, 100, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 95, 117, 54, 52, 14, 100, 101, 115, - 101, 114, 105, 97, 108, 105, 122, 101, 95, 117, 56, 0, 0, 0, 0, 0, 0, 0, + 101, 114, 105, 97, 108, 105, 122, 101, 95, 117, 56, 19, 100, 101, 115, 101, 114, 105, + 97, 108, 105, 122, 101, 95, 117, 108, 101, 98, 49, 50, 56, 3, 110, 101, 119, 4, + 100, 97, 116, 97, 3, 99, 117, 114, 12, 111, 117, 116, 95, 111, 102, 95, 114, 97, + 110, 103, 101, 5, 115, 108, 105, 99, 101, 10, 116, 111, 95, 97, 100, 100, 114, 101, + 115, 115, 16, 105, 110, 118, 97, 108, 105, 100, 95, 97, 114, 103, 117, 109, 101, 110, + 116, 4, 117, 116, 102, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 202, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 20, 99, 111, 109, 112, 105, 108, 97, 116, 105, 111, 110, 95, 109, 101, - 116, 97, 100, 97, 116, 97, 9, 0, 3, 50, 46, 48, 3, 50, 46, 49, 18, 97, - 112, 116, 111, 115, 58, 58, 109, 101, 116, 97, 100, 97, 116, 97, 95, 118, 49, 154, - 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 15, 69, 77, 65, 76, 70, 79, 82, - 77, 69, 68, 95, 68, 65, 84, 65, 42, 84, 104, 101, 32, 100, 97, 116, 97, 32, - 100, 111, 101, 115, 32, 110, 111, 116, 32, 102, 105, 116, 32, 116, 104, 101, 32, 101, - 120, 112, 101, 99, 116, 101, 100, 32, 102, 111, 114, 109, 97, 116, 46, 2, 0, 0, - 0, 0, 0, 0, 0, 13, 69, 79, 85, 84, 95, 79, 70, 95, 66, 89, 84, 69, - 83, 61, 84, 104, 101, 114, 101, 32, 97, 114, 101, 32, 110, 111, 116, 32, 101, 110, - 111, 117, 103, 104, 32, 98, 121, 116, 101, 115, 32, 116, 111, 32, 100, 101, 115, 101, - 114, 105, 97, 108, 105, 122, 101, 32, 102, 111, 114, 32, 116, 104, 101, 32, 103, 105, - 118, 101, 110, 32, 116, 121, 112, 101, 46, 0, 0, 0, 2, 2, 2, 10, 2, 3, - 3, 0, 1, 0, 0, 2, 4, 11, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 0, 2, 1, 1, 0, 0, 9, 37, 10, 0, 16, 0, 12, 1, 10, 0, 16, - 1, 20, 12, 2, 10, 2, 6, 32, 0, 0, 0, 0, 0, 0, 0, 22, 10, 1, - 65, 5, 37, 4, 30, 10, 2, 6, 32, 0, 0, 0, 0, 0, 0, 0, 22, 12, - 3, 11, 1, 10, 2, 11, 3, 56, 0, 17, 3, 11, 2, 6, 32, 0, 0, 0, - 0, 0, 0, 0, 22, 11, 0, 15, 1, 21, 2, 11, 0, 1, 11, 1, 1, 6, - 2, 0, 0, 0, 0, 0, 0, 0, 17, 4, 39, 5, 1, 0, 0, 11, 47, 10, - 0, 16, 1, 20, 10, 0, 16, 0, 65, 5, 35, 4, 42, 10, 0, 16, 0, 10, - 0, 16, 1, 20, 66, 5, 20, 12, 1, 10, 0, 16, 1, 20, 6, 1, 0, 0, - 0, 0, 0, 0, 0, 22, 11, 0, 15, 1, 21, 10, 1, 49, 0, 33, 4, 32, - 9, 12, 3, 11, 3, 2, 11, 1, 49, 1, 33, 4, 39, 8, 12, 3, 5, 30, - 6, 1, 0, 0, 0, 0, 0, 0, 0, 17, 6, 39, 11, 0, 1, 6, 2, 0, - 0, 0, 0, 0, 0, 0, 17, 4, 39, 7, 1, 0, 0, 13, 40, 10, 0, 17, - 8, 12, 1, 10, 0, 16, 0, 12, 2, 10, 0, 16, 1, 20, 12, 3, 10, 3, - 10, 1, 22, 10, 2, 65, 5, 37, 4, 33, 10, 3, 10, 1, 22, 12, 4, 11, - 2, 10, 3, 11, 4, 56, 0, 17, 9, 11, 3, 11, 1, 22, 11, 0, 15, 1, - 21, 2, 11, 0, 1, 11, 2, 1, 6, 2, 0, 0, 0, 0, 0, 0, 0, 17, - 4, 39, 10, 1, 0, 0, 9, 215, 1, 10, 0, 16, 0, 12, 1, 10, 0, 16, - 1, 20, 12, 2, 10, 2, 6, 16, 0, 0, 0, 0, 0, 0, 0, 22, 10, 1, - 65, 5, 37, 4, 208, 1, 10, 1, 10, 2, 66, 5, 20, 53, 10, 2, 6, 1, - 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 53, - 49, 8, 47, 27, 10, 2, 6, 2, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, - 10, 1, 11, 3, 66, 5, 20, 53, 49, 16, 47, 27, 10, 2, 6, 3, 0, 0, - 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 53, 49, 24, - 47, 27, 10, 2, 6, 4, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, - 11, 3, 66, 5, 20, 53, 49, 32, 47, 27, 10, 2, 6, 5, 0, 0, 0, 0, - 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 53, 49, 40, 47, 27, - 10, 2, 6, 6, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, - 66, 5, 20, 53, 49, 48, 47, 27, 10, 2, 6, 7, 0, 0, 0, 0, 0, 0, - 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 53, 49, 56, 47, 27, 10, 2, - 6, 8, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, - 20, 53, 49, 64, 47, 27, 10, 2, 6, 9, 0, 0, 0, 0, 0, 0, 0, 22, - 12, 3, 10, 1, 11, 3, 66, 5, 20, 53, 49, 72, 47, 27, 10, 2, 6, 10, - 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 53, - 49, 80, 47, 27, 10, 2, 6, 11, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, - 10, 1, 11, 3, 66, 5, 20, 53, 49, 88, 47, 27, 10, 2, 6, 12, 0, 0, - 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 53, 49, 96, - 47, 27, 10, 2, 6, 13, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, - 11, 3, 66, 5, 20, 53, 49, 104, 47, 27, 10, 2, 6, 14, 0, 0, 0, 0, - 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 53, 49, 112, 47, 27, - 11, 2, 6, 15, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 11, 1, 11, 3, - 66, 5, 20, 53, 49, 120, 47, 27, 10, 0, 16, 1, 20, 6, 16, 0, 0, 0, - 0, 0, 0, 0, 22, 11, 0, 15, 1, 21, 2, 11, 0, 1, 11, 1, 1, 6, - 2, 0, 0, 0, 0, 0, 0, 0, 17, 4, 39, 11, 1, 0, 0, 9, 47, 10, - 0, 16, 0, 12, 1, 10, 0, 16, 1, 20, 12, 2, 10, 2, 6, 2, 0, 0, - 0, 0, 0, 0, 0, 22, 10, 1, 65, 5, 37, 4, 40, 10, 1, 10, 2, 66, - 5, 20, 75, 11, 2, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 11, - 1, 11, 3, 66, 5, 20, 75, 49, 8, 47, 27, 10, 0, 16, 1, 20, 6, 2, - 0, 0, 0, 0, 0, 0, 0, 22, 11, 0, 15, 1, 21, 2, 11, 0, 1, 11, - 1, 1, 6, 2, 0, 0, 0, 0, 0, 0, 0, 17, 4, 39, 12, 1, 0, 0, - 9, 151, 3, 10, 0, 16, 0, 12, 1, 10, 0, 16, 1, 20, 12, 2, 10, 2, - 6, 32, 0, 0, 0, 0, 0, 0, 0, 22, 10, 1, 65, 5, 37, 4, 144, 3, - 10, 1, 10, 2, 66, 5, 20, 77, 10, 2, 6, 1, 0, 0, 0, 0, 0, 0, - 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, 49, 8, 47, 27, 10, 2, - 6, 2, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, - 20, 77, 49, 16, 47, 27, 10, 2, 6, 3, 0, 0, 0, 0, 0, 0, 0, 22, - 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, 49, 24, 47, 27, 10, 2, 6, 4, - 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, - 49, 32, 47, 27, 10, 2, 6, 5, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, - 10, 1, 11, 3, 66, 5, 20, 77, 49, 40, 47, 27, 10, 2, 6, 6, 0, 0, - 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, 49, 48, - 47, 27, 10, 2, 6, 7, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, - 11, 3, 66, 5, 20, 77, 49, 56, 47, 27, 10, 2, 6, 8, 0, 0, 0, 0, - 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, 49, 64, 47, 27, - 10, 2, 6, 9, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, - 66, 5, 20, 77, 49, 72, 47, 27, 10, 2, 6, 10, 0, 0, 0, 0, 0, 0, - 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, 49, 80, 47, 27, 10, 2, - 6, 11, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, - 20, 77, 49, 88, 47, 27, 10, 2, 6, 12, 0, 0, 0, 0, 0, 0, 0, 22, - 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, 49, 96, 47, 27, 10, 2, 6, 13, - 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, - 49, 104, 47, 27, 10, 2, 6, 14, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, - 10, 1, 11, 3, 66, 5, 20, 77, 49, 112, 47, 27, 10, 2, 6, 15, 0, 0, - 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, 49, 120, - 47, 27, 10, 2, 6, 16, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, - 11, 3, 66, 5, 20, 77, 49, 128, 47, 27, 10, 2, 6, 17, 0, 0, 0, 0, - 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, 49, 136, 47, 27, - 10, 2, 6, 18, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, - 66, 5, 20, 77, 49, 144, 47, 27, 10, 2, 6, 19, 0, 0, 0, 0, 0, 0, - 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, 49, 152, 47, 27, 10, 2, - 6, 20, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, - 20, 77, 49, 160, 47, 27, 10, 2, 6, 21, 0, 0, 0, 0, 0, 0, 0, 22, - 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, 49, 168, 47, 27, 10, 2, 6, 22, - 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, - 49, 176, 47, 27, 10, 2, 6, 23, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, - 10, 1, 11, 3, 66, 5, 20, 77, 49, 184, 47, 27, 10, 2, 6, 24, 0, 0, - 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, 49, 192, - 47, 27, 10, 2, 6, 25, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, - 11, 3, 66, 5, 20, 77, 49, 200, 47, 27, 10, 2, 6, 26, 0, 0, 0, 0, - 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, 49, 208, 47, 27, - 10, 2, 6, 27, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, - 66, 5, 20, 77, 49, 216, 47, 27, 10, 2, 6, 28, 0, 0, 0, 0, 0, 0, - 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, 49, 224, 47, 27, 10, 2, - 6, 29, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, - 20, 77, 49, 232, 47, 27, 10, 2, 6, 30, 0, 0, 0, 0, 0, 0, 0, 22, - 12, 3, 10, 1, 11, 3, 66, 5, 20, 77, 49, 240, 47, 27, 11, 2, 6, 31, - 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 11, 1, 11, 3, 66, 5, 20, 77, - 49, 248, 47, 27, 10, 0, 16, 1, 20, 6, 32, 0, 0, 0, 0, 0, 0, 0, - 22, 11, 0, 15, 1, 21, 2, 11, 0, 1, 11, 1, 1, 6, 2, 0, 0, 0, - 0, 0, 0, 0, 17, 4, 39, 13, 1, 4, 0, 1, 8, 11, 0, 11, 1, 18, - 0, 12, 2, 13, 2, 17, 12, 1, 2, 14, 1, 0, 0, 9, 71, 10, 0, 16, - 0, 12, 1, 10, 0, 16, 1, 20, 12, 2, 10, 2, 6, 4, 0, 0, 0, 0, - 0, 0, 0, 22, 10, 1, 65, 5, 37, 4, 64, 10, 1, 10, 2, 66, 5, 20, - 76, 10, 2, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 10, 1, 11, - 3, 66, 5, 20, 76, 49, 8, 47, 27, 10, 2, 6, 2, 0, 0, 0, 0, 0, - 0, 0, 22, 12, 3, 10, 1, 11, 3, 66, 5, 20, 76, 49, 16, 47, 27, 11, - 2, 6, 3, 0, 0, 0, 0, 0, 0, 0, 22, 12, 3, 11, 1, 11, 3, 66, - 5, 20, 76, 49, 24, 47, 27, 10, 0, 16, 1, 20, 6, 4, 0, 0, 0, 0, - 0, 0, 0, 22, 11, 0, 15, 1, 21, 2, 11, 0, 1, 11, 1, 1, 6, 2, - 0, 0, 0, 0, 0, 0, 0, 17, 4, 39, 15, 1, 0, 0, 19, 119, 10, 0, - 16, 0, 12, 1, 10, 0, 16, 1, 20, 12, 2, 10, 2, 6, 8, 0, 0, 0, - 0, 0, 0, 0, 22, 10, 1, 65, 5, 37, 4, 112, 10, 1, 10, 2, 66, 5, - 20, 52, 10, 2, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 12, 4, 10, 1, - 11, 4, 66, 5, 20, 52, 49, 8, 47, 27, 10, 2, 6, 2, 0, 0, 0, 0, - 0, 0, 0, 22, 12, 4, 10, 1, 11, 4, 66, 5, 20, 52, 49, 16, 47, 27, - 10, 2, 6, 3, 0, 0, 0, 0, 0, 0, 0, 22, 12, 4, 10, 1, 11, 4, - 66, 5, 20, 52, 49, 24, 47, 27, 10, 2, 6, 4, 0, 0, 0, 0, 0, 0, - 0, 22, 12, 4, 10, 1, 11, 4, 66, 5, 20, 52, 49, 32, 47, 27, 10, 2, - 6, 5, 0, 0, 0, 0, 0, 0, 0, 22, 12, 4, 10, 1, 11, 4, 66, 5, - 20, 52, 49, 40, 47, 27, 10, 2, 6, 6, 0, 0, 0, 0, 0, 0, 0, 22, - 12, 4, 10, 1, 11, 4, 66, 5, 20, 52, 49, 48, 47, 27, 11, 2, 6, 7, - 0, 0, 0, 0, 0, 0, 0, 22, 12, 4, 11, 1, 11, 4, 66, 5, 20, 52, - 49, 56, 47, 27, 10, 0, 16, 1, 20, 6, 8, 0, 0, 0, 0, 0, 0, 0, - 22, 11, 0, 15, 1, 21, 2, 11, 0, 1, 11, 1, 1, 6, 2, 0, 0, 0, - 0, 0, 0, 0, 17, 4, 39, 16, 1, 0, 0, 19, 34, 10, 0, 16, 0, 12, - 1, 10, 0, 16, 1, 20, 12, 2, 10, 2, 12, 3, 10, 1, 65, 5, 12, 4, - 11, 3, 11, 4, 35, 4, 27, 11, 1, 10, 2, 66, 5, 20, 11, 2, 6, 1, - 0, 0, 0, 0, 0, 0, 0, 22, 11, 0, 15, 1, 21, 2, 11, 0, 1, 11, - 1, 1, 6, 2, 0, 0, 0, 0, 0, 0, 0, 17, 4, 39, 8, 1, 0, 0, - 20, 99, 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 49, 0, 12, 2, 10, - 0, 16, 1, 20, 10, 0, 16, 0, 65, 5, 35, 4, 94, 10, 0, 16, 0, 10, - 0, 16, 1, 20, 66, 5, 20, 12, 3, 10, 0, 16, 1, 20, 6, 1, 0, 0, - 0, 0, 0, 0, 0, 22, 10, 0, 15, 1, 21, 10, 3, 49, 127, 28, 52, 12, - 5, 10, 5, 10, 2, 47, 10, 2, 48, 10, 5, 34, 4, 46, 11, 0, 1, 6, - 1, 0, 0, 0, 0, 0, 0, 0, 17, 6, 39, 10, 5, 10, 2, 47, 12, 6, - 11, 1, 11, 6, 27, 12, 1, 11, 3, 49, 128, 28, 49, 0, 33, 4, 80, 11, - 0, 1, 11, 2, 49, 0, 36, 4, 77, 11, 5, 6, 0, 0, 0, 0, 0, 0, - 0, 0, 33, 12, 7, 11, 7, 4, 75, 6, 1, 0, 0, 0, 0, 0, 0, 0, - 17, 6, 39, 11, 1, 2, 9, 12, 7, 5, 70, 11, 2, 49, 7, 22, 12, 2, - 10, 2, 49, 64, 36, 3, 89, 5, 4, 11, 0, 1, 6, 1, 0, 0, 0, 0, - 0, 0, 0, 17, 6, 39, 11, 0, 1, 6, 2, 0, 0, 0, 0, 0, 0, 0, - 17, 4, 39, 0, 0, 0, 1, 0, + 202, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 8, + 1, 0, 0, 0, 0, 0, 0, 0, 3, 8, 2, 0, 0, 0, 0, 0, 0, 0, + 18, 97, 112, 116, 111, 115, 58, 58, 109, 101, 116, 97, 100, 97, 116, 97, 95, 118, + 49, 154, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 15, 69, 77, 65, 76, 70, + 79, 82, 77, 69, 68, 95, 68, 65, 84, 65, 42, 84, 104, 101, 32, 100, 97, 116, + 97, 32, 100, 111, 101, 115, 32, 110, 111, 116, 32, 102, 105, 116, 32, 116, 104, 101, + 32, 101, 120, 112, 101, 99, 116, 101, 100, 32, 102, 111, 114, 109, 97, 116, 46, 2, + 0, 0, 0, 0, 0, 0, 0, 13, 69, 79, 85, 84, 95, 79, 70, 95, 66, 89, + 84, 69, 83, 61, 84, 104, 101, 114, 101, 32, 97, 114, 101, 32, 110, 111, 116, 32, + 101, 110, 111, 117, 103, 104, 32, 98, 121, 116, 101, 115, 32, 116, 111, 32, 100, 101, + 115, 101, 114, 105, 97, 108, 105, 122, 101, 32, 102, 111, 114, 32, 116, 104, 101, 32, + 103, 105, 118, 101, 110, 32, 116, 121, 112, 101, 46, 0, 0, 0, 2, 2, 19, 10, + 2, 20, 3, 0, 1, 0, 0, 14, 38, 10, 0, 16, 0, 12, 2, 10, 0, 16, + 1, 20, 12, 1, 10, 1, 6, 32, 0, 0, 0, 0, 0, 0, 0, 22, 10, 2, + 65, 11, 37, 4, 15, 5, 22, 11, 0, 1, 11, 2, 1, 7, 1, 17, 12, 39, + 11, 2, 10, 1, 10, 1, 6, 32, 0, 0, 0, 0, 0, 0, 0, 22, 56, 0, + 17, 14, 12, 3, 11, 1, 6, 32, 0, 0, 0, 0, 0, 0, 0, 22, 11, 0, + 15, 1, 21, 11, 3, 2, 1, 1, 0, 0, 17, 49, 10, 0, 16, 1, 20, 10, + 0, 16, 0, 65, 11, 35, 4, 9, 5, 14, 11, 0, 1, 7, 1, 17, 12, 39, + 10, 0, 16, 0, 10, 0, 16, 1, 20, 66, 11, 20, 12, 2, 10, 0, 16, 1, + 20, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 11, 0, 15, 1, 21, 10, 2, + 49, 0, 33, 4, 37, 9, 12, 1, 5, 47, 11, 2, 49, 1, 33, 4, 42, 5, + 45, 7, 0, 17, 15, 39, 8, 12, 1, 11, 1, 2, 2, 1, 0, 0, 18, 41, + 10, 0, 17, 10, 12, 3, 10, 0, 16, 0, 12, 2, 10, 0, 16, 1, 20, 12, + 1, 10, 1, 10, 3, 22, 10, 2, 65, 11, 37, 4, 18, 5, 25, 11, 0, 1, + 11, 2, 1, 7, 1, 17, 12, 39, 11, 2, 10, 1, 10, 1, 10, 3, 22, 56, + 0, 17, 16, 12, 4, 11, 1, 11, 3, 22, 11, 0, 15, 1, 21, 11, 4, 2, + 3, 1, 0, 0, 19, 188, 1, 10, 0, 16, 0, 12, 2, 10, 0, 16, 1, 20, + 12, 1, 10, 1, 6, 16, 0, 0, 0, 0, 0, 0, 0, 22, 10, 2, 65, 11, + 37, 4, 15, 5, 22, 11, 0, 1, 11, 2, 1, 7, 1, 17, 12, 39, 10, 2, + 10, 1, 66, 11, 20, 53, 10, 2, 10, 1, 6, 1, 0, 0, 0, 0, 0, 0, + 0, 22, 66, 11, 20, 53, 49, 8, 47, 27, 10, 2, 10, 1, 6, 2, 0, 0, + 0, 0, 0, 0, 0, 22, 66, 11, 20, 53, 49, 16, 47, 27, 10, 2, 10, 1, + 6, 3, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 53, 49, 24, 47, 27, + 10, 2, 10, 1, 6, 4, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 53, + 49, 32, 47, 27, 10, 2, 10, 1, 6, 5, 0, 0, 0, 0, 0, 0, 0, 22, + 66, 11, 20, 53, 49, 40, 47, 27, 10, 2, 10, 1, 6, 6, 0, 0, 0, 0, + 0, 0, 0, 22, 66, 11, 20, 53, 49, 48, 47, 27, 10, 2, 10, 1, 6, 7, + 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 53, 49, 56, 47, 27, 10, 2, + 10, 1, 6, 8, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 53, 49, 64, + 47, 27, 10, 2, 10, 1, 6, 9, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, + 20, 53, 49, 72, 47, 27, 10, 2, 10, 1, 6, 10, 0, 0, 0, 0, 0, 0, + 0, 22, 66, 11, 20, 53, 49, 80, 47, 27, 10, 2, 10, 1, 6, 11, 0, 0, + 0, 0, 0, 0, 0, 22, 66, 11, 20, 53, 49, 88, 47, 27, 10, 2, 10, 1, + 6, 12, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 53, 49, 96, 47, 27, + 10, 2, 10, 1, 6, 13, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 53, + 49, 104, 47, 27, 10, 2, 10, 1, 6, 14, 0, 0, 0, 0, 0, 0, 0, 22, + 66, 11, 20, 53, 49, 112, 47, 27, 11, 2, 11, 1, 6, 15, 0, 0, 0, 0, + 0, 0, 0, 22, 66, 11, 20, 53, 49, 120, 47, 27, 12, 3, 10, 0, 16, 1, + 20, 6, 16, 0, 0, 0, 0, 0, 0, 0, 22, 11, 0, 15, 1, 21, 11, 3, + 2, 4, 1, 0, 0, 20, 48, 10, 0, 16, 0, 12, 2, 10, 0, 16, 1, 20, + 12, 1, 10, 1, 6, 2, 0, 0, 0, 0, 0, 0, 0, 22, 10, 2, 65, 11, + 37, 4, 15, 5, 22, 11, 0, 1, 11, 2, 1, 7, 1, 17, 12, 39, 10, 2, + 10, 1, 66, 11, 20, 75, 11, 2, 11, 1, 6, 1, 0, 0, 0, 0, 0, 0, + 0, 22, 66, 11, 20, 75, 49, 8, 47, 27, 12, 3, 10, 0, 16, 1, 20, 6, + 2, 0, 0, 0, 0, 0, 0, 0, 22, 11, 0, 15, 1, 21, 11, 3, 2, 5, + 1, 0, 0, 21, 220, 2, 10, 0, 16, 0, 12, 2, 10, 0, 16, 1, 20, 12, + 1, 10, 1, 6, 32, 0, 0, 0, 0, 0, 0, 0, 22, 10, 2, 65, 11, 37, + 4, 15, 5, 22, 11, 0, 1, 11, 2, 1, 7, 1, 17, 12, 39, 10, 2, 10, + 1, 66, 11, 20, 77, 10, 2, 10, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, + 22, 66, 11, 20, 77, 49, 8, 47, 27, 10, 2, 10, 1, 6, 2, 0, 0, 0, + 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, 16, 47, 27, 10, 2, 10, 1, 6, + 3, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, 24, 47, 27, 10, + 2, 10, 1, 6, 4, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, + 32, 47, 27, 10, 2, 10, 1, 6, 5, 0, 0, 0, 0, 0, 0, 0, 22, 66, + 11, 20, 77, 49, 40, 47, 27, 10, 2, 10, 1, 6, 6, 0, 0, 0, 0, 0, + 0, 0, 22, 66, 11, 20, 77, 49, 48, 47, 27, 10, 2, 10, 1, 6, 7, 0, + 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, 56, 47, 27, 10, 2, 10, + 1, 6, 8, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, 64, 47, + 27, 10, 2, 10, 1, 6, 9, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, + 77, 49, 72, 47, 27, 10, 2, 10, 1, 6, 10, 0, 0, 0, 0, 0, 0, 0, + 22, 66, 11, 20, 77, 49, 80, 47, 27, 10, 2, 10, 1, 6, 11, 0, 0, 0, + 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, 88, 47, 27, 10, 2, 10, 1, 6, + 12, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, 96, 47, 27, 10, + 2, 10, 1, 6, 13, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, + 104, 47, 27, 10, 2, 10, 1, 6, 14, 0, 0, 0, 0, 0, 0, 0, 22, 66, + 11, 20, 77, 49, 112, 47, 27, 10, 2, 10, 1, 6, 15, 0, 0, 0, 0, 0, + 0, 0, 22, 66, 11, 20, 77, 49, 120, 47, 27, 10, 2, 10, 1, 6, 16, 0, + 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, 128, 47, 27, 10, 2, 10, + 1, 6, 17, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, 136, 47, + 27, 10, 2, 10, 1, 6, 18, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, + 77, 49, 144, 47, 27, 10, 2, 10, 1, 6, 19, 0, 0, 0, 0, 0, 0, 0, + 22, 66, 11, 20, 77, 49, 152, 47, 27, 10, 2, 10, 1, 6, 20, 0, 0, 0, + 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, 160, 47, 27, 10, 2, 10, 1, 6, + 21, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, 168, 47, 27, 10, + 2, 10, 1, 6, 22, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, + 176, 47, 27, 10, 2, 10, 1, 6, 23, 0, 0, 0, 0, 0, 0, 0, 22, 66, + 11, 20, 77, 49, 184, 47, 27, 10, 2, 10, 1, 6, 24, 0, 0, 0, 0, 0, + 0, 0, 22, 66, 11, 20, 77, 49, 192, 47, 27, 10, 2, 10, 1, 6, 25, 0, + 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, 200, 47, 27, 10, 2, 10, + 1, 6, 26, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, 208, 47, + 27, 10, 2, 10, 1, 6, 27, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, + 77, 49, 216, 47, 27, 10, 2, 10, 1, 6, 28, 0, 0, 0, 0, 0, 0, 0, + 22, 66, 11, 20, 77, 49, 224, 47, 27, 10, 2, 10, 1, 6, 29, 0, 0, 0, + 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, 232, 47, 27, 10, 2, 10, 1, 6, + 30, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, 240, 47, 27, 11, + 2, 11, 1, 6, 31, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 77, 49, + 248, 47, 27, 12, 3, 10, 0, 16, 1, 20, 6, 32, 0, 0, 0, 0, 0, 0, + 0, 22, 11, 0, 15, 1, 21, 11, 3, 2, 6, 1, 4, 0, 13, 8, 11, 0, + 11, 1, 18, 0, 12, 2, 13, 2, 17, 5, 1, 2, 7, 1, 0, 0, 22, 68, + 10, 0, 16, 0, 12, 2, 10, 0, 16, 1, 20, 12, 1, 10, 1, 6, 4, 0, + 0, 0, 0, 0, 0, 0, 22, 10, 2, 65, 11, 37, 4, 15, 5, 22, 11, 0, + 1, 11, 2, 1, 7, 1, 17, 12, 39, 10, 2, 10, 1, 66, 11, 20, 76, 10, + 2, 10, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 76, 49, + 8, 47, 27, 10, 2, 10, 1, 6, 2, 0, 0, 0, 0, 0, 0, 0, 22, 66, + 11, 20, 76, 49, 16, 47, 27, 11, 2, 11, 1, 6, 3, 0, 0, 0, 0, 0, + 0, 0, 22, 66, 11, 20, 76, 49, 24, 47, 27, 12, 3, 10, 0, 16, 1, 20, + 6, 4, 0, 0, 0, 0, 0, 0, 0, 22, 11, 0, 15, 1, 21, 11, 3, 2, + 8, 1, 0, 0, 23, 108, 10, 0, 16, 0, 12, 2, 10, 0, 16, 1, 20, 12, + 1, 10, 1, 6, 8, 0, 0, 0, 0, 0, 0, 0, 22, 10, 2, 65, 11, 37, + 4, 15, 5, 22, 11, 0, 1, 11, 2, 1, 7, 1, 17, 12, 39, 10, 2, 10, + 1, 66, 11, 20, 52, 10, 2, 10, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, + 22, 66, 11, 20, 52, 49, 8, 47, 27, 10, 2, 10, 1, 6, 2, 0, 0, 0, + 0, 0, 0, 0, 22, 66, 11, 20, 52, 49, 16, 47, 27, 10, 2, 10, 1, 6, + 3, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 52, 49, 24, 47, 27, 10, + 2, 10, 1, 6, 4, 0, 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 52, 49, + 32, 47, 27, 10, 2, 10, 1, 6, 5, 0, 0, 0, 0, 0, 0, 0, 22, 66, + 11, 20, 52, 49, 40, 47, 27, 10, 2, 10, 1, 6, 6, 0, 0, 0, 0, 0, + 0, 0, 22, 66, 11, 20, 52, 49, 48, 47, 27, 11, 2, 11, 1, 6, 7, 0, + 0, 0, 0, 0, 0, 0, 22, 66, 11, 20, 52, 49, 56, 47, 27, 12, 3, 10, + 0, 16, 1, 20, 6, 8, 0, 0, 0, 0, 0, 0, 0, 22, 11, 0, 15, 1, + 21, 11, 3, 2, 9, 1, 0, 0, 24, 33, 10, 0, 16, 0, 12, 2, 10, 0, + 16, 1, 20, 12, 1, 10, 1, 10, 2, 65, 11, 35, 4, 13, 5, 20, 11, 0, + 1, 11, 2, 1, 7, 1, 17, 12, 39, 11, 2, 10, 1, 66, 11, 20, 12, 3, + 11, 1, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 11, 0, 15, 1, 21, 11, + 3, 2, 10, 1, 0, 0, 25, 98, 6, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 3, 49, 0, 12, 4, 10, 0, 16, 1, 20, 10, 0, 16, 0, 65, 11, 35, 4, + 93, 5, 13, 10, 0, 16, 0, 10, 0, 16, 1, 20, 66, 11, 20, 12, 2, 10, + 0, 16, 1, 20, 6, 1, 0, 0, 0, 0, 0, 0, 0, 22, 10, 0, 15, 1, + 21, 10, 2, 49, 127, 28, 52, 12, 5, 10, 5, 10, 4, 47, 10, 4, 48, 10, + 5, 34, 4, 47, 11, 0, 1, 7, 0, 17, 15, 39, 11, 3, 10, 5, 10, 4, + 47, 27, 12, 3, 11, 2, 49, 128, 28, 49, 0, 33, 4, 79, 11, 0, 1, 11, + 4, 49, 0, 36, 4, 70, 11, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 12, 1, 5, 72, 9, 12, 1, 11, 1, 4, 77, 7, 0, 17, 15, 39, 11, 3, + 2, 11, 4, 49, 7, 22, 12, 4, 10, 4, 49, 64, 36, 4, 92, 11, 0, 1, + 7, 0, 17, 15, 39, 5, 4, 11, 0, 1, 7, 1, 17, 12, 39, 11, 1, 0, + 0, 8, 4, 11, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 2, 0, + 0, 0, 1, 0, ] }); @@ -2176,3 +2166,4 @@ pub static PACKAGE_TO_MODULES: Lazy>>> = Lazy::new(| ("aggregator_examples".to_string(), MODULES_AGGREGATOR_EXAMPLES.to_vec()), ("bcs_stream".to_string(), MODULES_BCS_STREAM.to_vec()), ])}); +>>>>>>> b87ba278cc (split_off => trim) diff --git a/execution/executor/tests/internal_indexer_test.rs b/execution/executor/tests/internal_indexer_test.rs index dbc58d60d64d6..13d03f8092693 100644 --- a/execution/executor/tests/internal_indexer_test.rs +++ b/execution/executor/tests/internal_indexer_test.rs @@ -205,6 +205,7 @@ fn test_db_indexer_data() { ident_str!("any"), ident_str!("bcs"), ident_str!("dkg"), + ident_str!("mem"), ident_str!("code"), ident_str!("coin"), ident_str!("guid"), diff --git a/testsuite/module-publish/src/packages/framework_usecases/sources/vector_example.move b/testsuite/module-publish/src/packages/framework_usecases/sources/vector_example.move new file mode 100644 index 0000000000000..82502274302a7 --- /dev/null +++ b/testsuite/module-publish/src/packages/framework_usecases/sources/vector_example.move @@ -0,0 +1,47 @@ + +/// test speed of vector operations +module 0xABCD::vector_example { + use std::vector; + + fun generate_vec(vec_len: u64, element_len: u64): vector> { + let elem = vector::empty(); + for (i in 0..element_len) { + vector::push_back(&mut elem, i); + }; + let vec = vector::empty(); + for (i in 0..vec_len) { + let cur = elem; + vector::replace(&mut cur, 0, i); + vector::push_back(&mut vec, cur); + }; + vec + } + + public entry fun test_trim_append(vec_len: u64, element_len: u64, index: u64, repeats: u64) { + let vec = generate_vec(vec_len, element_len); + + for (i in 0..repeats) { + let part = vector::trim(&mut vec, index); + vector::append(&mut vec, part); + }; + } + + public entry fun test_remove_insert(vec_len: u64, element_len: u64, index: u64, repeats: u64) { + let vec = generate_vec(vec_len, element_len); + + for (i in 0..repeats) { + let part = vector::remove(&mut vec, index); + vector::insert(&mut vec, index, part); + }; + } + + public entry fun test_middle_range_move(vec_len: u64, element_len: u64, index: u64, move_len: u64, repeats: u64) { + let vec1 = generate_vec(vec_len, element_len); + let vec2 = generate_vec(vec_len, element_len); + + for (i in 0..repeats) { + vector::range_move(&mut vec1, index, move_len, &mut vec2, index); + vector::range_move(&mut vec2, index, move_len, &mut vec1, index); + }; + } +} diff --git a/testsuite/single_node_performance.py b/testsuite/single_node_performance.py index e17d8b9cef11b..53e46345c411a 100755 --- a/testsuite/single_node_performance.py +++ b/testsuite/single_node_performance.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright © Aptos Foundation # SPDX-License-Identifier: Apache-2.0 @@ -288,6 +288,9 @@ class RunGroupConfig: RunGroupConfig(key=RunGroupKey("no-op-fee-payer", module_working_set_size=DEFAULT_MODULE_WORKING_SET_SIZE), included_in=Flow.CONTINUOUS), RunGroupConfig(key=RunGroupKey("simple-script"), included_in=LAND_BLOCKING_AND_C, waived=True), + RunGroupConfig(expected_tps=394, key=RunGroupKey("vector-trim-append-len3000-size1"), included_in=Flow.CONTINUOUS, waived=True), + RunGroupConfig(expected_tps=398, key=RunGroupKey("vector-remove-insert-len3000-size1"), included_in=Flow.CONTINUOUS, waived=True), + RunGroupConfig(expected_tps=50000, key=RunGroupKey("coin_transfer_connected_components", executor_type="sharded"), key_extra=RunGroupKeyExtra(sharding_traffic_flags="--connected-tx-grps 5000", transaction_type_override=""), included_in=Flow.REPRESENTATIVE, waived=True), RunGroupConfig(expected_tps=50000, key=RunGroupKey("coin_transfer_hotspot", executor_type="sharded"), key_extra=RunGroupKeyExtra(sharding_traffic_flags="--hotspot-probability 0.8", transaction_type_override=""), included_in=Flow.REPRESENTATIVE, waived=True), diff --git a/third_party/move/move-vm/types/src/value_serde.rs b/third_party/move/move-vm/types/src/value_serde.rs index 5f17bfe9b3848..2898b8cba6c01 100644 --- a/third_party/move/move-vm/types/src/value_serde.rs +++ b/third_party/move/move-vm/types/src/value_serde.rs @@ -9,7 +9,9 @@ use crate::{ }; use move_binary_format::errors::{PartialVMError, PartialVMResult}; use move_core_types::{ - value::{IdentifierMappingKind, MoveTypeLayout}, + account_address::AccountAddress, + u256, + value::{IdentifierMappingKind, MoveStructLayout, MoveTypeLayout}, vm_status::StatusCode, }; use serde::{ @@ -172,6 +174,112 @@ pub fn serialized_size_allowing_delayed_values( }) } +/// Count number of types constant_serialized_size would visit, used for gas charging. +/// This is different done type.num_nodes(), as some types are not traversed (i.e. vector), +/// and for structs types and number of fields matter as well. +/// +/// Unclear if type_visit_count would be the same for other usages +/// (for example, whether vector types need to be traversed), +/// so name it very specifically, and on future usages see how it generalizes. +pub fn type_visit_count_for_constant_serialized_size(ty_layout: &MoveTypeLayout) -> u64 { + match ty_layout { + MoveTypeLayout::Bool + | MoveTypeLayout::U8 + | MoveTypeLayout::U16 + | MoveTypeLayout::U32 + | MoveTypeLayout::U128 + | MoveTypeLayout::U256 + | MoveTypeLayout::U64 + | MoveTypeLayout::Address + | MoveTypeLayout::Signer => 1, + // non-recursed: + MoveTypeLayout::Struct( + MoveStructLayout::RuntimeVariants(_) | MoveStructLayout::WithVariants(_), + ) + | MoveTypeLayout::Vector(_) => 1, + // recursed: + MoveTypeLayout::Struct(MoveStructLayout::Runtime(fields)) => { + let mut total = 1; // Count the current visit, and aggregate all children + for field in fields { + total += type_visit_count_for_constant_serialized_size(field); + } + total + }, + MoveTypeLayout::Struct(MoveStructLayout::WithFields(fields)) + | MoveTypeLayout::Struct(MoveStructLayout::WithTypes { fields, .. }) => { + let mut total = 1; // Count the current visit, and aggregate all children + for field in fields { + total += type_visit_count_for_constant_serialized_size(&field.layout); + } + total + }, + // Count the current visit, and inner visits + MoveTypeLayout::Native(_, inner) => { + 1 + type_visit_count_for_constant_serialized_size(inner) + }, + } +} + +/// If given type has a constant serialized size (irrespective of the instance), it returns the serialized +/// size in bytes any value would have. +/// Otherwise it returns None. +pub fn constant_serialized_size(ty_layout: &MoveTypeLayout) -> PartialVMResult> { + let bcs_size_result = match ty_layout { + MoveTypeLayout::Bool => bcs::serialized_size(&false).map(Some), + MoveTypeLayout::U8 => bcs::serialized_size(&0u8).map(Some), + MoveTypeLayout::U16 => bcs::serialized_size(&0u16).map(Some), + MoveTypeLayout::U32 => bcs::serialized_size(&0u32).map(Some), + MoveTypeLayout::U64 => bcs::serialized_size(&0u64).map(Some), + MoveTypeLayout::U128 => bcs::serialized_size(&0u128).map(Some), + MoveTypeLayout::U256 => bcs::serialized_size(&u256::U256::zero()).map(Some), + MoveTypeLayout::Address => bcs::serialized_size(&AccountAddress::ZERO).map(Some), + // signer's size is VM implementation detail, and can change at will. + MoveTypeLayout::Signer => Ok(None), + // vectors have no constant size + MoveTypeLayout::Vector(_) => Ok(None), + // enums have no constant size + MoveTypeLayout::Struct( + MoveStructLayout::RuntimeVariants(_) | MoveStructLayout::WithVariants(_), + ) => Ok(None), + MoveTypeLayout::Struct(MoveStructLayout::Runtime(fields)) => { + let mut total = Some(0); + for field in fields { + let cur = constant_serialized_size(field)?; + match cur { + Some(cur_value) => total = total.map(|v| v + cur_value), + None => { + total = None; + break; + }, + } + } + Ok(total) + }, + MoveTypeLayout::Struct(MoveStructLayout::WithFields(fields)) + | MoveTypeLayout::Struct(MoveStructLayout::WithTypes { fields, .. }) => { + let mut total = Some(0); + for field in fields { + let cur = constant_serialized_size(&field.layout)?; + match cur { + Some(cur_value) => total = total.map(|v| v + cur_value), + None => { + total = None; + break; + }, + } + } + Ok(total) + }, + MoveTypeLayout::Native(_, inner) => Ok(constant_serialized_size(inner)?), + }; + bcs_size_result.map_err(|e| { + PartialVMError::new(StatusCode::VALUE_SERIALIZATION_ERROR).with_message(format!( + "failed to compute serialized size of a value: {:?}", + e + )) + }) +} + /// Allow conversion between values and identifiers (delayed values). For example, /// this trait can be implemented to fetch a concrete Move value from the global /// state based on the identifier stored inside a delayed value. diff --git a/third_party/move/move-vm/types/src/values/value_tests.rs b/third_party/move/move-vm/types/src/values/value_tests.rs index 4e939be5c7a23..c5d7574e774c4 100644 --- a/third_party/move/move-vm/types/src/values/value_tests.rs +++ b/third_party/move/move-vm/types/src/values/value_tests.rs @@ -3,6 +3,7 @@ // SPDX-License-Identifier: Apache-2.0 use crate::{loaded_data::runtime_types::TypeBuilder, values::*, views::*}; +use claims::{assert_err, assert_ok}; use move_binary_format::errors::*; use move_core_types::{account_address::AccountAddress, u256::U256}; @@ -229,6 +230,86 @@ fn test_vm_value_vector_u64_casting() { ); } +#[test] +fn test_mem_swap() -> PartialVMResult<()> { + let mut locals = Locals::new(20); + // IndexedRef(Locals) + locals.store_loc(0, Value::u64(0), false)?; + locals.store_loc(1, Value::u64(1), false)?; + locals.store_loc(2, Value::address(AccountAddress::ZERO), false)?; + locals.store_loc(3, Value::address(AccountAddress::ONE), false)?; + + // ContainerRef + + // - Specialized + locals.store_loc(4, Value::vector_u64(vec![1, 2]), false)?; + locals.store_loc(5, Value::vector_u64(vec![3, 4, 5]), false)?; + locals.store_loc(6, Value::vector_address(vec![AccountAddress::ZERO]), false)?; + locals.store_loc(7, Value::vector_address(vec![AccountAddress::ONE]), false)?; + + // - Generic + // -- Container of container + locals.store_loc(8, Value::struct_(Struct::pack(vec![Value::u16(4)])), false)?; + locals.store_loc(9, Value::struct_(Struct::pack(vec![Value::u16(5)])), false)?; + locals.store_loc(10, Value::signer(AccountAddress::ZERO), false)?; + locals.store_loc(11, Value::signer(AccountAddress::ONE), false)?; + + // -- Container of vector + locals.store_loc( + 12, + Value::vector_for_testing_only(vec![Value::u64(1u64), Value::u64(2u64)]), + false, + )?; + locals.store_loc( + 13, + Value::vector_for_testing_only(vec![Value::u64(3u64), Value::u64(4u64)]), + false, + )?; + locals.store_loc( + 14, + Value::vector_for_testing_only(vec![Value::signer(AccountAddress::ZERO)]), + false, + )?; + locals.store_loc( + 15, + Value::vector_for_testing_only(vec![Value::signer(AccountAddress::ONE)]), + false, + )?; + + let mut locals2 = Locals::new(2); + locals2.store_loc(0, Value::u64(0), false)?; + + let get_local = + |ls: &Locals, idx: usize| ls.borrow_loc(idx).unwrap().value_as::().unwrap(); + + for i in (0..16).step_by(2) { + assert_ok!(get_local(&locals, i).swap_values(get_local(&locals, i + 1))); + } + + assert_ok!(get_local(&locals, 0).swap_values(get_local(&locals2, 0))); + + for i in (0..16).step_by(2) { + for j in ((i + 2)..16).step_by(2) { + let result = get_local(&locals, i).swap_values(get_local(&locals, j)); + + // These would all fail in `call_native` typing checks. + // But here some do pass: + if j < 4 // locals are not checked between each other + || (8 <= i && j < 12) // ContainerRef of containers is not checked between each other + || (12 <= i && j < 16) + // ContainerRef of vector is not checked between each other + // || i >= 8 // containers are also interchangeable + { + assert_ok!(result, "{} and {}", i, j); + } else { + assert_err!(result, "{} and {}", i, j); + } + } + } + + Ok(()) +} + #[cfg(test)] mod native_values { use super::*; diff --git a/third_party/move/move-vm/types/src/values/values_impl.rs b/third_party/move/move-vm/types/src/values/values_impl.rs index 006c16d6b9dd1..6bd290da2f360 100644 --- a/third_party/move/move-vm/types/src/values/values_impl.rs +++ b/third_party/move/move-vm/types/src/values/values_impl.rs @@ -23,8 +23,9 @@ use move_core_types::{ }; use std::{ cell::RefCell, + cmp::Ordering, fmt::{self, Debug, Display, Formatter}, - iter, + iter, mem, rc::Rc, }; @@ -536,8 +537,62 @@ impl ValueImpl { | (ContainerRef(_), _) | (IndexedRef(_), _) | (DelayedFieldID { .. }, _) => { - return Err(PartialVMError::new(StatusCode::INTERNAL_TYPE_ERROR) - .with_message(format!("cannot compare values: {:?}, {:?}", self, other))) + return Err( + PartialVMError::new(StatusCode::INTERNAL_TYPE_ERROR).with_message(format!( + "inconsistent argument types passed to equals check: {:?}, {:?}", + self, other + )), + ) + }, + }; + + Ok(res) + } + + fn compare(&self, other: &Self) -> PartialVMResult { + use ValueImpl::*; + + let res = match (self, other) { + (U8(l), U8(r)) => l.cmp(r), + (U16(l), U16(r)) => l.cmp(r), + (U32(l), U32(r)) => l.cmp(r), + (U64(l), U64(r)) => l.cmp(r), + (U128(l), U128(r)) => l.cmp(r), + (U256(l), U256(r)) => l.cmp(r), + (Bool(l), Bool(r)) => l.cmp(r), + (Address(l), Address(r)) => l.cmp(r), + + (Container(l), Container(r)) => l.compare(r)?, + + (ContainerRef(l), ContainerRef(r)) => l.compare(r)?, + (IndexedRef(l), IndexedRef(r)) => l.compare(r)?, + + // Disallow comparison for delayed values. + // (see `ValueImpl::equals` above for details on reasoning behind it) + (DelayedFieldID { .. }, DelayedFieldID { .. }) => { + return Err(PartialVMError::new(StatusCode::VM_EXTENSION_ERROR) + .with_message("cannot compare delayed values".to_string())) + }, + + (Invalid, _) + | (U8(_), _) + | (U16(_), _) + | (U32(_), _) + | (U64(_), _) + | (U128(_), _) + | (U256(_), _) + | (Bool(_), _) + | (Address(_), _) + | (Container(_), _) + | (ContainerRef(_), _) + | (IndexedRef(_), _) + | (DelayedFieldID { .. }, _) => { + return Err( + PartialVMError::new(StatusCode::INTERNAL_TYPE_ERROR).with_message(format!( + "inconsistent argument types passed to comparison: {:?}, {:?}", + self, other + )), + ) }, }; @@ -595,12 +650,65 @@ impl Container { Ok(res) } + + fn compare(&self, other: &Self) -> PartialVMResult { + use Container::*; + + let res = match (self, other) { + (Vec(l), Vec(r)) | (Struct(l), Struct(r)) => { + let l = &l.borrow(); + let r = &r.borrow(); + + for (v1, v2) in l.iter().zip(r.iter()) { + let value_cmp = v1.compare(v2)?; + if value_cmp.is_ne() { + return Ok(value_cmp); + } + } + + l.len().cmp(&r.len()) + }, + (VecU8(l), VecU8(r)) => l.borrow().cmp(&*r.borrow()), + (VecU16(l), VecU16(r)) => l.borrow().cmp(&*r.borrow()), + (VecU32(l), VecU32(r)) => l.borrow().cmp(&*r.borrow()), + (VecU64(l), VecU64(r)) => l.borrow().cmp(&*r.borrow()), + (VecU128(l), VecU128(r)) => l.borrow().cmp(&*r.borrow()), + (VecU256(l), VecU256(r)) => l.borrow().cmp(&*r.borrow()), + (VecBool(l), VecBool(r)) => l.borrow().cmp(&*r.borrow()), + (VecAddress(l), VecAddress(r)) => l.borrow().cmp(&*r.borrow()), + + (Locals(_), _) + | (Vec(_), _) + | (Struct(_), _) + | (VecU8(_), _) + | (VecU16(_), _) + | (VecU32(_), _) + | (VecU64(_), _) + | (VecU128(_), _) + | (VecU256(_), _) + | (VecBool(_), _) + | (VecAddress(_), _) => { + return Err( + PartialVMError::new(StatusCode::INTERNAL_TYPE_ERROR).with_message(format!( + "cannot compare container values: {:?}, {:?}", + self, other + )), + ) + }, + }; + + Ok(res) + } } impl ContainerRef { fn equals(&self, other: &Self) -> PartialVMResult { self.container().equals(other.container()) } + + fn compare(&self, other: &Self) -> PartialVMResult { + self.container().compare(other.container()) + } } impl IndexedRef { @@ -704,12 +812,117 @@ impl IndexedRef { }; Ok(res) } + + fn compare(&self, other: &Self) -> PartialVMResult { + use Container::*; + + let res = match ( + self.container_ref.container(), + other.container_ref.container(), + ) { + // VecC <=> VecR impossible + (Vec(r1), Vec(r2)) + | (Vec(r1), Struct(r2)) + | (Vec(r1), Locals(r2)) + | (Struct(r1), Vec(r2)) + | (Struct(r1), Struct(r2)) + | (Struct(r1), Locals(r2)) + | (Locals(r1), Vec(r2)) + | (Locals(r1), Struct(r2)) + | (Locals(r1), Locals(r2)) => r1.borrow()[self.idx].compare(&r2.borrow()[other.idx])?, + + (VecU8(r1), VecU8(r2)) => r1.borrow()[self.idx].cmp(&r2.borrow()[other.idx]), + (VecU16(r1), VecU16(r2)) => r1.borrow()[self.idx].cmp(&r2.borrow()[other.idx]), + (VecU32(r1), VecU32(r2)) => r1.borrow()[self.idx].cmp(&r2.borrow()[other.idx]), + (VecU64(r1), VecU64(r2)) => r1.borrow()[self.idx].cmp(&r2.borrow()[other.idx]), + (VecU128(r1), VecU128(r2)) => r1.borrow()[self.idx].cmp(&r2.borrow()[other.idx]), + (VecU256(r1), VecU256(r2)) => r1.borrow()[self.idx].cmp(&r2.borrow()[other.idx]), + (VecBool(r1), VecBool(r2)) => r1.borrow()[self.idx].cmp(&r2.borrow()[other.idx]), + (VecAddress(r1), VecAddress(r2)) => r1.borrow()[self.idx].cmp(&r2.borrow()[other.idx]), + + // Comparison between a generic and a specialized container. + (Locals(r1), VecU8(r2)) | (Struct(r1), VecU8(r2)) => r1.borrow()[self.idx] + .as_value_ref::()? + .cmp(&r2.borrow()[other.idx]), + (VecU8(r1), Locals(r2)) | (VecU8(r1), Struct(r2)) => { + r1.borrow()[self.idx].cmp(r2.borrow()[other.idx].as_value_ref::()?) + }, + + (Locals(r1), VecU16(r2)) | (Struct(r1), VecU16(r2)) => r1.borrow()[self.idx] + .as_value_ref::()? + .cmp(&r2.borrow()[other.idx]), + (VecU16(r1), Locals(r2)) | (VecU16(r1), Struct(r2)) => { + r1.borrow()[self.idx].cmp(r2.borrow()[other.idx].as_value_ref::()?) + }, + + (Locals(r1), VecU32(r2)) | (Struct(r1), VecU32(r2)) => r1.borrow()[self.idx] + .as_value_ref::()? + .cmp(&r2.borrow()[other.idx]), + (VecU32(r1), Locals(r2)) | (VecU32(r1), Struct(r2)) => { + r1.borrow()[self.idx].cmp(r2.borrow()[other.idx].as_value_ref::()?) + }, + + (Locals(r1), VecU64(r2)) | (Struct(r1), VecU64(r2)) => r1.borrow()[self.idx] + .as_value_ref::()? + .cmp(&r2.borrow()[other.idx]), + (VecU64(r1), Locals(r2)) | (VecU64(r1), Struct(r2)) => { + r1.borrow()[self.idx].cmp(r2.borrow()[other.idx].as_value_ref::()?) + }, + + (Locals(r1), VecU128(r2)) | (Struct(r1), VecU128(r2)) => r1.borrow()[self.idx] + .as_value_ref::()? + .cmp(&r2.borrow()[other.idx]), + (VecU128(r1), Locals(r2)) | (VecU128(r1), Struct(r2)) => { + r1.borrow()[self.idx].cmp(r2.borrow()[other.idx].as_value_ref::()?) + }, + + (Locals(r1), VecU256(r2)) | (Struct(r1), VecU256(r2)) => r1.borrow()[self.idx] + .as_value_ref::()? + .cmp(&r2.borrow()[other.idx]), + (VecU256(r1), Locals(r2)) | (VecU256(r1), Struct(r2)) => { + r1.borrow()[self.idx].cmp(r2.borrow()[other.idx].as_value_ref::()?) + }, + + (Locals(r1), VecBool(r2)) | (Struct(r1), VecBool(r2)) => r1.borrow()[self.idx] + .as_value_ref::()? + .cmp(&r2.borrow()[other.idx]), + (VecBool(r1), Locals(r2)) | (VecBool(r1), Struct(r2)) => { + r1.borrow()[self.idx].cmp(r2.borrow()[other.idx].as_value_ref::()?) + }, + + (Locals(r1), VecAddress(r2)) | (Struct(r1), VecAddress(r2)) => r1.borrow()[self.idx] + .as_value_ref::()? + .cmp(&r2.borrow()[other.idx]), + (VecAddress(r1), Locals(r2)) | (VecAddress(r1), Struct(r2)) => { + r1.borrow()[self.idx].cmp(r2.borrow()[other.idx].as_value_ref::()?) + }, + + // All other combinations are illegal. + (Vec(_), _) + | (VecU8(_), _) + | (VecU16(_), _) + | (VecU32(_), _) + | (VecU64(_), _) + | (VecU128(_), _) + | (VecU256(_), _) + | (VecBool(_), _) + | (VecAddress(_), _) => { + return Err(PartialVMError::new(StatusCode::INTERNAL_TYPE_ERROR) + .with_message(format!("cannot compare references {:?}, {:?}", self, other))) + }, + }; + Ok(res) + } } impl Value { pub fn equals(&self, other: &Self) -> PartialVMResult { self.0.equals(&other.0) } + + pub fn compare(&self, other: &Self) -> PartialVMResult { + self.0.compare(&other.0) + } } /*************************************************************************************** @@ -903,6 +1116,235 @@ impl Reference { } } +/************************************************************************************** + * + * Helpers: from primitive + * + *************************************************************************************/ +trait VMValueFromPrimitive { + fn from_primitive(val: T) -> Self; +} + +macro_rules! impl_vm_value_from_primitive { + ($ty:ty, $tc:ident) => { + impl VMValueFromPrimitive<$ty> for ValueImpl { + fn from_primitive(val: $ty) -> Self { + Self::$tc(val) + } + } + }; +} + +impl_vm_value_from_primitive!(u8, U8); +impl_vm_value_from_primitive!(u16, U16); +impl_vm_value_from_primitive!(u32, U32); +impl_vm_value_from_primitive!(u64, U64); +impl_vm_value_from_primitive!(u128, U128); +impl_vm_value_from_primitive!(u256::U256, U256); +impl_vm_value_from_primitive!(bool, Bool); +impl_vm_value_from_primitive!(AccountAddress, Address); + +/************************************************************************************** + * + * Swap reference (Move) + * + * Implementation of the Move operation to swap contents of a reference. + * + *************************************************************************************/ +impl Container { + /// Swaps contents of two mutable references. + /// + /// Precondition for this funciton is that `self` and `other` are required to be + /// distinct references. + /// Move will guarantee that invariant, because it prevents from having two + /// mutable references to the same value. + fn swap_contents(&self, other: &Self) -> PartialVMResult<()> { + use Container::*; + + match (self, other) { + (Vec(l), Vec(r)) => mem::swap(&mut *l.borrow_mut(), &mut *r.borrow_mut()), + (Struct(l), Struct(r)) => mem::swap(&mut *l.borrow_mut(), &mut *r.borrow_mut()), + + (VecBool(l), VecBool(r)) => mem::swap(&mut *l.borrow_mut(), &mut *r.borrow_mut()), + (VecAddress(l), VecAddress(r)) => mem::swap(&mut *l.borrow_mut(), &mut *r.borrow_mut()), + + (VecU8(l), VecU8(r)) => mem::swap(&mut *l.borrow_mut(), &mut *r.borrow_mut()), + (VecU16(l), VecU16(r)) => mem::swap(&mut *l.borrow_mut(), &mut *r.borrow_mut()), + (VecU32(l), VecU32(r)) => mem::swap(&mut *l.borrow_mut(), &mut *r.borrow_mut()), + (VecU64(l), VecU64(r)) => mem::swap(&mut *l.borrow_mut(), &mut *r.borrow_mut()), + (VecU128(l), VecU128(r)) => mem::swap(&mut *l.borrow_mut(), &mut *r.borrow_mut()), + (VecU256(l), VecU256(r)) => mem::swap(&mut *l.borrow_mut(), &mut *r.borrow_mut()), + + ( + Locals(_) | Vec(_) | Struct(_) | VecBool(_) | VecAddress(_) | VecU8(_) | VecU16(_) + | VecU32(_) | VecU64(_) | VecU128(_) | VecU256(_), + _, + ) => { + return Err( + PartialVMError::new(StatusCode::INTERNAL_TYPE_ERROR).with_message(format!( + "cannot swap container values: {:?}, {:?}", + self, other + )), + ) + }, + } + + Ok(()) + } +} + +impl ContainerRef { + fn swap_values(self, other: Self) -> PartialVMResult<()> { + self.container().swap_contents(other.container())?; + + self.mark_dirty(); + other.mark_dirty(); + + Ok(()) + } +} + +impl IndexedRef { + fn swap_values(self, other: Self) -> PartialVMResult<()> { + use Container::*; + + macro_rules! swap { + ($r1:ident, $r2:ident) => {{ + if Rc::ptr_eq($r1, $r2) { + if self.idx == other.idx { + return Err(PartialVMError::new(StatusCode::INTERNAL_TYPE_ERROR) + .with_message(format!( + "cannot swap references to the same item {:?}", + self + ))); + } + + $r1.borrow_mut().swap(self.idx, other.idx); + } else { + mem::swap( + &mut $r1.borrow_mut()[self.idx], + &mut $r2.borrow_mut()[other.idx], + ) + } + }}; + } + + macro_rules! swap_g_s { + ($r1:ident, $r2:ident) => {{ + let mut r1 = $r1.borrow_mut(); + let mut r2 = $r2.borrow_mut(); + + let v1 = *r1[self.idx].as_value_ref()?; + r1[self.idx] = ValueImpl::from_primitive(r2[other.idx]); + r2[other.idx] = v1; + }}; + } + + macro_rules! swap_s_g { + ($r1:ident, $r2:ident) => {{ + let mut r1 = $r1.borrow_mut(); + let mut r2 = $r2.borrow_mut(); + + let v2 = *r2[other.idx].as_value_ref()?; + r2[other.idx] = ValueImpl::from_primitive(r1[self.idx]); + r1[self.idx] = v2; + }}; + } + + match ( + self.container_ref.container(), + other.container_ref.container(), + ) { + // Case 1: (generic, generic) + (Vec(r1), Vec(r2)) + | (Vec(r1), Struct(r2)) + | (Vec(r1), Locals(r2)) + | (Struct(r1), Vec(r2)) + | (Struct(r1), Struct(r2)) + | (Struct(r1), Locals(r2)) + | (Locals(r1), Vec(r2)) + | (Locals(r1), Struct(r2)) + | (Locals(r1), Locals(r2)) => swap!(r1, r2), + + // Case 2: (specialized, specialized) + (VecU8(r1), VecU8(r2)) => swap!(r1, r2), + (VecU16(r1), VecU16(r2)) => swap!(r1, r2), + (VecU32(r1), VecU32(r2)) => swap!(r1, r2), + (VecU64(r1), VecU64(r2)) => swap!(r1, r2), + (VecU128(r1), VecU128(r2)) => swap!(r1, r2), + (VecU256(r1), VecU256(r2)) => swap!(r1, r2), + (VecBool(r1), VecBool(r2)) => swap!(r1, r2), + (VecAddress(r1), VecAddress(r2)) => swap!(r1, r2), + + // Case 3: (generic, specialized) or (specialized, generic) + (Locals(r1) | Struct(r1), VecU8(r2)) => swap_g_s!(r1, r2), + (VecU8(r1), Locals(r2) | Struct(r2)) => swap_s_g!(r1, r2), + + (Locals(r1) | Struct(r1), VecU16(r2)) => swap_g_s!(r1, r2), + (VecU16(r1), Locals(r2) | Struct(r2)) => swap_s_g!(r1, r2), + + (Locals(r1) | Struct(r1), VecU32(r2)) => swap_g_s!(r1, r2), + (VecU32(r1), Locals(r2) | Struct(r2)) => swap_s_g!(r1, r2), + + (Locals(r1) | Struct(r1), VecU64(r2)) => swap_g_s!(r1, r2), + (VecU64(r1), Locals(r2) | Struct(r2)) => swap_s_g!(r1, r2), + + (Locals(r1) | Struct(r1), VecU128(r2)) => swap_g_s!(r1, r2), + (VecU128(r1), Locals(r2) | Struct(r2)) => swap_s_g!(r1, r2), + + (Locals(r1) | Struct(r1), VecU256(r2)) => swap_g_s!(r1, r2), + (VecU256(r1), Locals(r2) | Struct(r2)) => swap_s_g!(r1, r2), + + (Locals(r1) | Struct(r1), VecBool(r2)) => swap_g_s!(r1, r2), + (VecBool(r1), Locals(r2) | Struct(r2)) => swap_s_g!(r1, r2), + + (Locals(r1) | Struct(r1), VecAddress(r2)) => swap_g_s!(r1, r2), + (VecAddress(r1), Locals(r2) | Struct(r2)) => swap_s_g!(r1, r2), + + // All other combinations are illegal. + (Vec(_), _) + | (VecU8(_), _) + | (VecU16(_), _) + | (VecU32(_), _) + | (VecU64(_), _) + | (VecU128(_), _) + | (VecU256(_), _) + | (VecBool(_), _) + | (VecAddress(_), _) => { + return Err(PartialVMError::new(StatusCode::INTERNAL_TYPE_ERROR) + .with_message(format!("cannot swap references {:?}, {:?}", self, other))) + }, + } + + self.container_ref.mark_dirty(); + other.container_ref.mark_dirty(); + + Ok(()) + } +} + +impl ReferenceImpl { + fn swap_values(self, other: Self) -> PartialVMResult<()> { + use ReferenceImpl::*; + + match (self, other) { + (ContainerRef(r1), ContainerRef(r2)) => r1.swap_values(r2), + (IndexedRef(r1), IndexedRef(r2)) => r1.swap_values(r2), + + (ContainerRef(_), IndexedRef(_)) | (IndexedRef(_), ContainerRef(_)) => { + Err(PartialVMError::new(StatusCode::INTERNAL_TYPE_ERROR) + .with_message("cannot swap references: reference type mismatch".to_string())) + }, + } + } +} + +impl Reference { + pub fn swap_values(self, other: Self) -> PartialVMResult<()> { + self.0.swap_values(other.0) + } +} + /*************************************************************************************** * * Borrows (Move) @@ -2082,7 +2524,7 @@ fn check_elem_layout(ty: &Type, v: &Container) -> PartialVMResult<()> { } impl VectorRef { - pub fn len(&self, type_param: &Type) -> PartialVMResult { + pub fn length_as_usize(&self, type_param: &Type) -> PartialVMResult { let c: &Container = self.0.container(); check_elem_layout(type_param, c)?; @@ -2098,7 +2540,11 @@ impl VectorRef { Container::Vec(r) => r.borrow().len(), Container::Locals(_) | Container::Struct(_) => unreachable!(), }; - Ok(Value::u64(len as u64)) + Ok(len) + } + + pub fn len(&self, type_param: &Type) -> PartialVMResult { + Ok(Value::u64(self.length_as_usize(type_param)? as u64)) } pub fn push_back(&self, e: Value, type_param: &Type) -> PartialVMResult<()> { @@ -2227,6 +2673,78 @@ impl VectorRef { self.0.mark_dirty(); Ok(()) } + + /// Moves range of elements `[removal_position, removal_position + length)` from vector `from`, + /// to vector `to`, inserting them starting at the `insert_position`. + /// In the `from` vector, elements after the selected range are moved left to fill the hole + /// (i.e. range is removed, while the order of the rest of the elements is kept) + /// In the `to` vector, elements after the `insert_position` are moved the the right to make space for new elements + /// (i.e. range is inserted, while the order of the rest of the elements is kept). + /// + /// Precondition for this function is that `from` and `to` vectors are required to be distinct + /// Move will guaranteee that invariant, because it prevents from having two mutable references to the same value. + pub fn move_range( + from_self: &Self, + removal_position: usize, + length: usize, + to_self: &Self, + insert_position: usize, + type_param: &Type, + ) -> PartialVMResult<()> { + let from_c = from_self.0.container(); + let to_c = to_self.0.container(); + + // potentially unnecessary as native call should've checked the types already + // (unlike other vector functions that are bytecodes) + // TODO: potentially unnecessary, can be removed - as these are only required for + // bytecode instructions, as types are checked when native functions are called. + check_elem_layout(type_param, from_c)?; + check_elem_layout(type_param, to_c)?; + + macro_rules! move_range { + ($from:expr, $to:expr) => {{ + let mut from_v = $from.borrow_mut(); + let mut to_v = $to.borrow_mut(); + + if removal_position.checked_add(length).map_or(true, |end| end > from_v.len()) + || insert_position > to_v.len() { + return Err(PartialVMError::new(StatusCode::VECTOR_OPERATION_ERROR) + .with_sub_status(INDEX_OUT_OF_BOUNDS)); + } + + // Short-circuit with faster implementation some of the common cases. + // This includes all non-direct calls to move-range (i.e. insert/remove/append/split_off inside vector). + if length == 1 { + to_v.insert(insert_position, from_v.remove(removal_position)); + } else if removal_position == 0 && length == from_v.len() && insert_position == to_v.len() { + to_v.append(&mut from_v); + } else if (removal_position + length == from_v.len() && insert_position == to_v.len()) { + to_v.append(&mut from_v.split_off(removal_position)); + } else { + to_v.splice(insert_position..insert_position, from_v.splice(removal_position..(removal_position + length), [])); + } + }}; + } + + match (from_c, to_c) { + (Container::VecU8(from_r), Container::VecU8(to_r)) => move_range!(from_r, to_r), + (Container::VecU16(from_r), Container::VecU16(to_r)) => move_range!(from_r, to_r), + (Container::VecU32(from_r), Container::VecU32(to_r)) => move_range!(from_r, to_r), + (Container::VecU64(from_r), Container::VecU64(to_r)) => move_range!(from_r, to_r), + (Container::VecU128(from_r), Container::VecU128(to_r)) => move_range!(from_r, to_r), + (Container::VecU256(from_r), Container::VecU256(to_r)) => move_range!(from_r, to_r), + (Container::VecBool(from_r), Container::VecBool(to_r)) => move_range!(from_r, to_r), + (Container::VecAddress(from_r), Container::VecAddress(to_r)) => { + move_range!(from_r, to_r) + }, + (Container::Vec(from_r), Container::Vec(to_r)) => move_range!(from_r, to_r), + (_, _) => unreachable!(), + } + + from_self.0.mark_dirty(); + to_self.0.mark_dirty(); + Ok(()) + } } impl Vector { diff --git a/types/src/on_chain_config/aptos_features.rs b/types/src/on_chain_config/aptos_features.rs index d1297014ad21f..60420b43161af 100644 --- a/types/src/on_chain_config/aptos_features.rs +++ b/types/src/on_chain_config/aptos_features.rs @@ -97,6 +97,8 @@ pub enum FeatureFlag { TRANSACTION_SIMULATION_ENHANCEMENT = 78, COLLECTION_OWNER = 79, ENABLE_LOADER_V2 = 81, + /// covers mem::swap and vector::move_range + NATIVE_MEMORY_OPERATIONS = 82, } impl FeatureFlag { @@ -176,6 +178,7 @@ impl FeatureFlag { FeatureFlag::TRANSACTION_SIMULATION_ENHANCEMENT, // TODO(loader_v2): Enable V2 loader. // FeatureFlag::ENABLE_LOADER_V2, + FeatureFlag::NATIVE_MEMORY_OPERATIONS, ] } } @@ -323,6 +326,10 @@ impl Features { pub fn is_loader_v2_enabled(&self) -> bool { self.is_enabled(FeatureFlag::ENABLE_LOADER_V2) } + + pub fn is_native_memory_operations_enabled(&self) -> bool { + self.is_enabled(FeatureFlag::NATIVE_MEMORY_OPERATIONS) + } pub fn get_max_identifier_size(&self) -> u64 { if self.is_enabled(FeatureFlag::LIMIT_MAX_IDENTIFIER_LENGTH) {