From 81e850441587f2c0e6896f75816a4b4edd3ff0d0 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Thu, 27 Jun 2024 12:58:26 +0000 Subject: [PATCH 01/23] first draft --- rs/cycles_account_manager/src/lib.rs | 27 +++++++ rs/embedders/src/wasm_utils/validation.rs | 10 +++ .../src/wasmtime_embedder/system_api.rs | 15 ++++ .../system_api_complexity.rs | 1 + rs/embedders/tests/validation.rs | 1 + .../benches/system_api/execute_update.rs | 9 +++ .../src/query_handler/tests.rs | 4 ++ rs/interfaces/src/execution_environment.rs | 19 +++++ rs/rust_canisters/dfn_core/src/api.rs | 14 ++++ rs/system_api/src/lib.rs | 51 +++++++++++++ .../src/sandbox_safe_system_state.rs | 24 +++++++ rs/system_api/tests/system_api.rs | 71 +++++++++++++++++++ rs/universal_canister/impl/src/api.rs | 7 ++ rs/universal_canister/impl/src/lib.rs | 1 + rs/universal_canister/impl/src/main.rs | 5 ++ rs/universal_canister/lib/src/lib.rs | 7 ++ 16 files changed, 266 insertions(+) diff --git a/rs/cycles_account_manager/src/lib.rs b/rs/cycles_account_manager/src/lib.rs index 0520050132e..7af170e87c5 100644 --- a/rs/cycles_account_manager/src/lib.rs +++ b/rs/cycles_account_manager/src/lib.rs @@ -392,6 +392,33 @@ impl CyclesAccountManager { reveal_top_up, ) } + #[allow(clippy::too_many_arguments)] + pub fn withdraw_up_to_cycles_for_transfer( + &self, + freeze_threshold: NumSeconds, + memory_allocation: MemoryAllocation, + canister_current_memory_usage: NumBytes, + canister_current_message_memory_usage: NumBytes, + canister_compute_allocation: ComputeAllocation, + cycles_balance: &mut Cycles, + cycles: Cycles, + subnet_size: usize, + reserved_balance: Cycles, + ) -> Cycles { + let threshold = self.freeze_threshold_cycles( + freeze_threshold, + memory_allocation, + canister_current_memory_usage, + canister_current_message_memory_usage, + canister_compute_allocation, + subnet_size, + reserved_balance, + ); + let available_for_withdrawal = *cycles_balance - threshold; + let withdrawn_cycles = Cycles::min(available_for_withdrawal, cycles); + *cycles_balance -= withdrawn_cycles; + withdrawn_cycles + } /// Charges the canister for ingress induction cost. /// diff --git a/rs/embedders/src/wasm_utils/validation.rs b/rs/embedders/src/wasm_utils/validation.rs index ba04134a90c..4bbb5c20828 100644 --- a/rs/embedders/src/wasm_utils/validation.rs +++ b/rs/embedders/src/wasm_utils/validation.rs @@ -543,6 +543,16 @@ fn get_valid_system_apis_common() -> HashMap, amount_high: u64, amount_low: u64, dst: u32| { + charge_for_cpu(&mut caller, overhead::CALL_CYCLES_ADD128_UP_TO)?; + with_memory_and_system_api(&mut caller, |system, memory| { + system.ic0_call_cycles_add128_up_to( + Cycles::from_parts(amount_high, amount_low), + dst as usize, + memory, + ) + }) + } + }) + .unwrap(); + linker .func_wrap("ic0", "call_perform", { move |mut caller: Caller<'_, StoreData>| { diff --git a/rs/embedders/src/wasmtime_embedder/system_api_complexity.rs b/rs/embedders/src/wasmtime_embedder/system_api_complexity.rs index 4dc8a107589..39cb0a9ed4d 100644 --- a/rs/embedders/src/wasmtime_embedder/system_api_complexity.rs +++ b/rs/embedders/src/wasmtime_embedder/system_api_complexity.rs @@ -21,6 +21,7 @@ pub mod overhead { pub const ACCEPT_MESSAGE: NumInstructions = NumInstructions::new(500); pub const CALL_CYCLES_ADD: NumInstructions = NumInstructions::new(500); pub const CALL_CYCLES_ADD128: NumInstructions = NumInstructions::new(500); + pub const CALL_CYCLES_ADD128_UP_TO: NumInstructions = NumInstructions::new(500); pub const CALL_DATA_APPEND: NumInstructions = NumInstructions::new(500); pub const CALL_NEW: NumInstructions = NumInstructions::new(1_500); pub const CALL_ON_CLEANUP: NumInstructions = NumInstructions::new(500); diff --git a/rs/embedders/tests/validation.rs b/rs/embedders/tests/validation.rs index a49972272db..10689e992db 100644 --- a/rs/embedders/tests/validation.rs +++ b/rs/embedders/tests/validation.rs @@ -930,6 +930,7 @@ fn can_validate_module_cycles_u128_related_imports() { let wasm = wat2wasm( r#"(module (import "ic0" "call_cycles_add128" (func $ic0_call_cycles_add128 (param i64 i64))) + (import "ic0" "call_cycles_add128_up_to" (func $ic0_call_cycles_add128_up_to (param i64 i64 i32))) (import "ic0" "canister_cycle_balance128" (func $ic0_canister_cycle_balance128 (param i32))) (import "ic0" "msg_cycles_available128" (func $ic0_msg_cycles_available128 (param i32))) (import "ic0" "msg_cycles_refunded128" (func $ic0_msg_cycles_refunded128 (param i32))) diff --git a/rs/execution_environment/benches/system_api/execute_update.rs b/rs/execution_environment/benches/system_api/execute_update.rs index c41d3c7c1ec..6515f2972a3 100644 --- a/rs/execution_environment/benches/system_api/execute_update.rs +++ b/rs/execution_environment/benches/system_api/execute_update.rs @@ -155,6 +155,15 @@ pub fn execute_update_bench(c: &mut Criterion) { Module::CallNewLoop.from_ic0("call_cycles_add128", Params2(0_i64, 100_i64), Result::No), 2059000006, ), + common::Benchmark( + "call_new+ic0_call_cycles_add128_up_to()".into(), + Module::CallNewLoop.from_ic0( + "call_cycles_add128_up_to", + Params3(0_i64, 100_i64, 0_i32), + Result::No, + ), + 2059000006, + ), common::Benchmark( "call_new+ic0_call_perform()".into(), Module::CallNewLoop.from_ic0("call_perform", NoParams, Result::I32), diff --git a/rs/execution_environment/src/query_handler/tests.rs b/rs/execution_environment/src/query_handler/tests.rs index 2c00dad75d1..3db337e8a96 100644 --- a/rs/execution_environment/src/query_handler/tests.rs +++ b/rs/execution_environment/src/query_handler/tests.rs @@ -1157,6 +1157,10 @@ fn composite_query_syscalls_from_reply_reject_callback() { wasm().call_cycles_add128(0, 0).build(), "call_cycles_add128", ), + ( + wasm().call_cycles_add128_up_to(0, 0).build(), + "call_cycles_add128_up_to", + ), ( wasm().msg_cycles_available128().build(), "cycles_available128", diff --git a/rs/interfaces/src/execution_environment.rs b/rs/interfaces/src/execution_environment.rs index 434b85087d7..d643b7ea399 100644 --- a/rs/interfaces/src/execution_environment.rs +++ b/rs/interfaces/src/execution_environment.rs @@ -131,6 +131,8 @@ pub enum SystemApiCallId { CallCyclesAdd, /// Tracker for `ic0.call_cycles_add128()` CallCyclesAdd128, + /// Tracker for `ic0.call_cycles_add128_up_to()` + CallCyclesAdd128UpTo, /// Tracker for `ic0.call_data_append()` CallDataAppend, /// Tracker for `ic0.call_new()` @@ -801,6 +803,23 @@ pub trait SystemApi { /// balance of the canister. fn ic0_call_cycles_add128(&mut self, amount: Cycles) -> HypervisorResult<()>; + /// Adds cycles to a call by moving them from the canister's balance onto + /// the call under construction. The cycles are deducted immediately + /// from the canister's balance and moved back if the call cannot be + /// performed (e.g. if `ic0.call_perform` signals an error or if the + /// canister invokes `ic0.call_new` or returns without invoking + /// `ic0.call_perform`). + /// + /// This system call also copies the actual amount of cycles that were moved + /// onto the call represented by a 128-bit value starting at the location + /// `dst` in the canister memory. + fn ic0_call_cycles_add128_up_to( + &mut self, + amount: Cycles, + dst: usize, + heap: &mut [u8], + ) -> HypervisorResult<()>; + /// This call concludes assembling the call. It queues the call message to /// the given destination, but does not actually act on it until the current /// WebAssembly function returns without trapping. diff --git a/rs/rust_canisters/dfn_core/src/api.rs b/rs/rust_canisters/dfn_core/src/api.rs index 6c2a333874b..7e1770e012c 100644 --- a/rs/rust_canisters/dfn_core/src/api.rs +++ b/rs/rust_canisters/dfn_core/src/api.rs @@ -57,6 +57,7 @@ pub mod ic0 { pub fn call_on_cleanup(fun: usize, env: u32); pub fn call_cycles_add(amount: u64); pub fn call_cycles_add128(amount_high: u64, amount_low: u64); + pub fn call_cycles_add128(amount_high: u64, amount_low: u64, dst: i32); pub fn call_perform() -> i32; pub fn stable_size() -> u32; pub fn stable_grow(additional_pages: u32) -> i32; @@ -180,6 +181,10 @@ pub mod ic0 { wrong_arch("call_cycles_add128") } + pub unsafe fn call_cycles_add128_up_to(_amount_high: u64, _amount_low: u64, _dst: i32) { + wrong_arch("call_cycles_add128_up_to") + } + pub unsafe fn call_perform() -> i32 { wrong_arch("call_perform") } @@ -643,6 +648,15 @@ pub fn call_cycles_add128(amount_high: u64, amount_low: u64) { } } +pub fn call_cycles_add128_up_to(amount_high: u64, amount_low: u64) -> u128 { + let size = 16; + let mut buf = vec![0u8; size]; + unsafe { + ic0::call_cycles_add128_up_to(amount_high, amount_low, buf.as_mut_ptr() as i32); + } + u128::from_le_bytes(buf.try_into().unwrap()) +} + /// Safe wrapper around an unsafe function pub fn arg_size() -> u32 { unsafe { ic0::msg_arg_data_size() } diff --git a/rs/system_api/src/lib.rs b/rs/system_api/src/lib.rs index 073ba833493..7ee6b1bd728 100644 --- a/rs/system_api/src/lib.rs +++ b/rs/system_api/src/lib.rs @@ -2200,6 +2200,57 @@ impl SystemApi for SystemApiImpl { result } + fn ic0_call_cycles_add128_up_to(&mut self, amount: Cycles, dst: usize, heap: &mut [u8]) -> HypervisorResult<()> { + let result = match &mut self.api_type { + ApiType::Start { .. } + | ApiType::Init { .. } + | ApiType::ReplicatedQuery { .. } + | ApiType::Cleanup { .. } + | ApiType::PreUpgrade { .. } + | ApiType::NonReplicatedQuery { .. } + | ApiType::InspectMessage { .. } => Err(self.error_for("ic0_call_cycles_add128_up_to")), + ApiType::Update { + outgoing_request, .. + } + | ApiType::SystemTask { + outgoing_request, .. + } + | ApiType::ReplyCallback { + outgoing_request, .. + } + | ApiType::RejectCallback { + outgoing_request, .. + } => { + // Reply and reject callbacks can be executed in non-replicated mode + // iff from within a composite query call. Always disallow in that case. + if self.execution_parameters.execution_mode == ExecutionMode::NonReplicated { + return Err(self.error_for("ic0_call_cycles_add128_up_to")); + } + + match outgoing_request { + None => Err(HypervisorError::ToolchainContractViolation { + error: + "ic0_call_cycles_add128_up_to called when no call is under construction.".to_string() + , + }), + Some(request) => { + let withdrawn_cycles = self.sandbox_safe_system_state + .withdraw_up_to_cycles_for_transfer( + self.memory_usage.current_usage, + self.memory_usage.current_message_usage, + amount, + ); + request.add_cycles(withdrawn_cycles); + copy_cycles_to_heap(withdrawn_cycles, dst, heap, "ic0_call_cycles_add128_up_to")?; + Ok(()) + } + } + } + }; + trace_syscall!(self, CallCyclesAdd128UpTo, result, amount); + result + } + // Note that if this function returns an error, then the canister will be // trapped and the state will be rolled back. Hence, we do not have to worry // about rolling back any modifications that previous calls like diff --git a/rs/system_api/src/sandbox_safe_system_state.rs b/rs/system_api/src/sandbox_safe_system_state.rs index 17afd32f008..58f4ccb771e 100644 --- a/rs/system_api/src/sandbox_safe_system_state.rs +++ b/rs/system_api/src/sandbox_safe_system_state.rs @@ -957,6 +957,30 @@ impl SandboxSafeSystemState { result } + pub(super) fn withdraw_up_to_cycles_for_transfer( + &mut self, + canister_current_memory_usage: NumBytes, + canister_current_message_memory_usage: NumBytes, + amount: Cycles, + ) -> Cycles { + let mut new_balance = self.cycles_balance(); + let result = self + .cycles_account_manager + .withdraw_up_to_cycles_for_transfer( + self.freeze_threshold, + self.memory_allocation, + canister_current_memory_usage, + canister_current_message_memory_usage, + self.compute_allocation, + &mut new_balance, + amount, + self.subnet_size, + self.reserved_balance(), + ); + self.update_balance_change(new_balance); + result + } + #[allow(clippy::result_large_err)] pub fn push_output_request( &mut self, diff --git a/rs/system_api/tests/system_api.rs b/rs/system_api/tests/system_api.rs index 9093e4fbe3e..23a384fa2d4 100644 --- a/rs/system_api/tests/system_api.rs +++ b/rs/system_api/tests/system_api.rs @@ -269,6 +269,7 @@ fn is_supported(api_type: SystemApiCallId, context: &str) -> bool { SystemApiCallId::CallDataAppend => vec!["U", "CQ", "Ry", "Rt", "CRy", "CRt", "T"], SystemApiCallId::CallCyclesAdd => vec!["U", "Ry", "Rt", "T"], SystemApiCallId::CallCyclesAdd128 => vec!["U", "Ry", "Rt", "T"], + SystemApiCallId::CallCyclesAdd128UpTo => vec!["U", "Ry", "Rt", "T"], SystemApiCallId::CallPerform => vec!["U", "CQ", "Ry", "Rt", "CRy", "CRt", "T"], SystemApiCallId::CallWithBestEffortResponse => vec!["U", "CQ", "Ry", "Rt", "CRy", "CRt", "T"], SystemApiCallId::StableSize => vec!["*", "s"], @@ -554,6 +555,19 @@ fn api_availability_test( context, ); } + SystemApiCallId::CallCyclesAdd128UpTo => { + assert_api_availability( + |mut api| { + let _ = api.ic0_call_new(0, 0, 0, 0, 0, 0, 0, 0, &[42; 128]); + api.ic0_call_cycles_add128_up_to(Cycles::new(0), 0, &mut [42; 128]) + }, + api_type, + &system_state, + cycles_account_manager, + api_type_enum, + context, + ); + } SystemApiCallId::CallPerform => { assert_api_availability( |mut api| { @@ -975,6 +989,63 @@ fn test_fail_adding_more_cycles_when_not_enough_balance() { ); } +fn call_cycles_add128_up_to_helper( + api: &mut SystemApiImpl, + amount: Cycles, +) -> Result { + let size = 16; + let mut buf = vec![0u8; size]; + api.ic0_call_cycles_add128_up_to(amount, 0, &mut buf)?; + let attached_cycles = u128::from_le_bytes(buf.try_into().unwrap()); + Ok(Cycles::from(attached_cycles)) +} + +#[test] +fn test_call_cycles_add_up_to() { + let cycles_amount = Cycles::from(1_000_000_000_000u128); + let max_num_instructions = NumInstructions::from(1 << 30); + let cycles_account_manager = CyclesAccountManagerBuilder::new() + .with_max_num_instructions(max_num_instructions) + .build(); + let mut api = get_system_api( + ApiTypeBuilder::build_update_api(), + &get_system_state_with_cycles(cycles_amount), + cycles_account_manager, + ); + + // Check ic0_canister_cycle_balance after first ic0_call_new. + assert_eq!(api.ic0_call_new(0, 0, 0, 0, 0, 0, 0, 0, &[]), Ok(())); + // Check cycles balance. + assert_eq!( + Cycles::from(api.ic0_canister_cycle_balance().unwrap()), + cycles_amount + ); + + // Add an avialable amount of cycles to call. + let amount1 = Cycles::new(49); + assert_eq!( + call_cycles_add128_up_to_helper(&mut api, amount1), + Ok(amount1) + ); + // Check cycles balance + assert_eq!( + Cycles::from(api.ic0_canister_cycle_balance().unwrap()), + cycles_amount - amount1 + ); + + // Adding more cycles than available to call means the rest of the available balance gets added + let amount2 = Cycles::new(u128::MAX); + assert_eq!( + call_cycles_add128_up_to_helper(&mut api, amount2), + Ok(cycles_amount - amount1) + ); + // Check cycles balance + assert_eq!( + Cycles::from(api.ic0_canister_cycle_balance().unwrap()), + Cycles::zero() + ); +} + #[test] fn test_canister_balance() { let cycles_amount = 100; diff --git a/rs/universal_canister/impl/src/api.rs b/rs/universal_canister/impl/src/api.rs index fc28d59d9ee..dff08d2ee5f 100644 --- a/rs/universal_canister/impl/src/api.rs +++ b/rs/universal_canister/impl/src/api.rs @@ -51,6 +51,7 @@ mod ic0 { pub fn msg_deadline() -> u64; pub fn call_cycles_add(amount: u64) -> (); pub fn call_cycles_add128(amount_high: u64, amount_low: u64) -> (); + pub fn call_cycles_add128_up_to(amount_high: u64, amount_low: u64, dst: u32) -> (); pub fn call_perform() -> u32; pub fn stable_size() -> u32; pub fn stable_grow(additional_pages: u32) -> u32; @@ -144,6 +145,12 @@ pub fn call_cycles_add128(amount_high: u64, amount_low: u64) { } } +pub fn call_cycles_add128_up_to(amount_high: u64, amount_low: u64) -> Vec { + let mut bytes = vec![0u8; CYCLES_SIZE]; + unsafe { ic0::call_cycles_add128_up_to(amount_high, amount_low, bytes.as_mut_ptr() as u32) } + bytes +} + pub fn call_perform() -> u32 { unsafe { ic0::call_perform() } } diff --git a/rs/universal_canister/impl/src/lib.rs b/rs/universal_canister/impl/src/lib.rs index 6e05535fadc..28f722aa7f0 100644 --- a/rs/universal_canister/impl/src/lib.rs +++ b/rs/universal_canister/impl/src/lib.rs @@ -111,5 +111,6 @@ try_from_u8!( InReplicatedExecution = 81, CallWithBestEffortResponse = 82, MsgDeadline = 83, + CallCyclesAdd128UpTo = 84, } ); diff --git a/rs/universal_canister/impl/src/main.rs b/rs/universal_canister/impl/src/main.rs index dfadb126bc8..02e80111445 100644 --- a/rs/universal_canister/impl/src/main.rs +++ b/rs/universal_canister/impl/src/main.rs @@ -415,6 +415,11 @@ fn eval(ops_bytes: OpsBytes) { Ops::InReplicatedExecution => stack.push_int(api::in_replicated_execution()), Ops::CallWithBestEffortResponse => api::call_with_best_effort_response(stack.pop_int()), Ops::MsgDeadline => stack.push_int64(api::msg_deadline()), + Ops::CallCyclesAdd128UpTo => { + let amount_low = stack.pop_int64(); + let amount_high = stack.pop_int64(); + stack.push_blob(api::call_cycles_add128_up_to(amount_high, amount_low)) + } } } } diff --git a/rs/universal_canister/lib/src/lib.rs b/rs/universal_canister/lib/src/lib.rs index 9b14bf1febc..d34b88aed49 100644 --- a/rs/universal_canister/lib/src/lib.rs +++ b/rs/universal_canister/lib/src/lib.rs @@ -359,6 +359,13 @@ impl PayloadBuilder { } pub fn call_cycles_add128(mut self, high_amount: u64, low_amount: u64) -> Self { + self = self.push_int64(high_amount); + self = self.push_int64(low_amount); + self.0.push(Ops::CallCyclesAdd128UpTo as u8); + self + } + + pub fn call_cycles_add128_up_to(mut self, high_amount: u64, low_amount: u64) -> Self { self = self.push_int64(high_amount); self = self.push_int64(low_amount); self.0.push(Ops::CallCyclesAdd128 as u8); From a97aedee7d2df371cc66d56f8ba6d5d3fbfa032b Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Thu, 27 Jun 2024 13:08:31 +0000 Subject: [PATCH 02/23] rustfmt --- rs/system_api/src/lib.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/rs/system_api/src/lib.rs b/rs/system_api/src/lib.rs index 7ee6b1bd728..f6d56801b88 100644 --- a/rs/system_api/src/lib.rs +++ b/rs/system_api/src/lib.rs @@ -2200,7 +2200,12 @@ impl SystemApi for SystemApiImpl { result } - fn ic0_call_cycles_add128_up_to(&mut self, amount: Cycles, dst: usize, heap: &mut [u8]) -> HypervisorResult<()> { + fn ic0_call_cycles_add128_up_to( + &mut self, + amount: Cycles, + dst: usize, + heap: &mut [u8], + ) -> HypervisorResult<()> { let result = match &mut self.api_type { ApiType::Start { .. } | ApiType::Init { .. } @@ -2229,7 +2234,7 @@ impl SystemApi for SystemApiImpl { match outgoing_request { None => Err(HypervisorError::ToolchainContractViolation { - error: + error: "ic0_call_cycles_add128_up_to called when no call is under construction.".to_string() , }), From 1e2afd5bf8d42b0b0b13970abe61b450c6251541 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Thu, 27 Jun 2024 13:24:57 +0000 Subject: [PATCH 03/23] fix dfn_core --- rs/rust_canisters/dfn_core/src/api.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rs/rust_canisters/dfn_core/src/api.rs b/rs/rust_canisters/dfn_core/src/api.rs index 7e1770e012c..0da93495b6b 100644 --- a/rs/rust_canisters/dfn_core/src/api.rs +++ b/rs/rust_canisters/dfn_core/src/api.rs @@ -57,7 +57,7 @@ pub mod ic0 { pub fn call_on_cleanup(fun: usize, env: u32); pub fn call_cycles_add(amount: u64); pub fn call_cycles_add128(amount_high: u64, amount_low: u64); - pub fn call_cycles_add128(amount_high: u64, amount_low: u64, dst: i32); + pub fn call_cycles_add128_up_to(amount_high: u64, amount_low: u64, dst: i32); pub fn call_perform() -> i32; pub fn stable_size() -> u32; pub fn stable_grow(additional_pages: u32) -> i32; From 1139523e2f1ee8085b5a25d1a1939a4d7c976184 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Thu, 27 Jun 2024 13:34:56 +0000 Subject: [PATCH 04/23] query_cache_future_proof_test --- rs/execution_environment/src/query_handler/query_cache/tests.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/rs/execution_environment/src/query_handler/query_cache/tests.rs b/rs/execution_environment/src/query_handler/query_cache/tests.rs index 1c835587fca..d4818231d33 100644 --- a/rs/execution_environment/src/query_handler/query_cache/tests.rs +++ b/rs/execution_environment/src/query_handler/query_cache/tests.rs @@ -1466,6 +1466,7 @@ fn query_cache_future_proof_test() { SystemApiCallId::AcceptMessage | SystemApiCallId::CallCyclesAdd | SystemApiCallId::CallCyclesAdd128 + | SystemApiCallId::CallCyclesAdd128UpTo | SystemApiCallId::CallDataAppend | SystemApiCallId::CallNew | SystemApiCallId::CallOnCleanup From a5e745b1ada71faa508311cf68df9f1162b9e59f Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Thu, 27 Jun 2024 14:37:41 +0000 Subject: [PATCH 05/23] update universal canister --- rs/universal_canister/lib/src/lib.rs | 2 +- .../lib/src/universal-canister.wasm | Bin 303344 -> 161535 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/rs/universal_canister/lib/src/lib.rs b/rs/universal_canister/lib/src/lib.rs index d34b88aed49..07fd4495363 100644 --- a/rs/universal_canister/lib/src/lib.rs +++ b/rs/universal_canister/lib/src/lib.rs @@ -17,7 +17,7 @@ use universal_canister::Ops; /// `rs/universal_canister`. pub const UNIVERSAL_CANISTER_WASM: &[u8] = include_bytes!("universal-canister.wasm"); pub const UNIVERSAL_CANISTER_WASM_SHA256: [u8; 32] = - hex!("b8501c0a7789bb6c8208a930bc9c03940f96497e1ea73673dbcc759f366f2210"); + hex!("8ef999073db5db1462841db81808a21ac980850c121e67ba64f5f24df0e8223c"); /// A succinct shortcut for creating a `PayloadBuilder`, which is used to encode /// instructions to be executed by the UC. diff --git a/rs/universal_canister/lib/src/universal-canister.wasm b/rs/universal_canister/lib/src/universal-canister.wasm index 623842f4b855fb22504c70ed5c235c80d4ae6c77..8d5f8a524cfe01a5bf7d713246819ad9783e9f11 100755 GIT binary patch literal 161535 zcmV)BK*PTuiwFP!000001MIyEoE%4WFWlADJ&&E4RqyOm@1D`xtbz?DF_Po>^0{@9 zjbn4|n>hLS-3Tn%61G;dEX!*nZX9c|1#E&67BC=)fh7nef(!x#h(v&F3nM_l5)=?Y z1citoz~pZ7If-tf#NYX!Q`L`|*@x_vf!r(bPIq;8)u~hGRi{p!a@O2+yK)>y{j*xK z+HqDpY8(A`-)gnZq5tTH{@l0P-A1?chwk+@T;ng@c-#1nf9TfVCin771-Wge#9UBO zep`H5Fqiav&bI77Y3M$#`ab@-53l9%V*o%g{xTT%-3NH@!+!*>zK?5g@e2Ln61;%F zbmQHJ=UjN7<33efuGimkN&A{xZdtc^=%(A(-F4TRTh}=b3JbTa*|_nhP3vCebl`Rl z-`=t5rdu|yTeIoz%}x%b0hg{_GqmQWHJdlD+q71S7jf~c)(_ow)6MJd8oFuSD_?oX zmZ6)rth;OT9h>f2=V-iCzWuISZ(6%<&DxFYH?4Erq>)=*O>NwD)0(wwop~s&Hk7{L zmoIY`;z3{YgPZQ&eACb!&SGwWA8%f_g&M!zQ7Gy_n`^e*Dj?sr{(r7(ResAIn_uk| z7$B6Rnsr-JZ>LL>cL~f*>+c%Eo9i~dGWB}HgH-LwgP}D;ci$ziccS(!>ju}|LL)+# zNkxrMlA5~Z$>xo(ZXS$c{7eS6EvZFbn3JmZmOIv(#=5u#gWG%7tlzli=8a~UdRslh zsOT6<^K{F)SKhs8?Ygz{T~CWA@n;?BN|_#=`Au+eIX>Y5?uqfo&u_YU&BisGZZSa4 zZT&EAuS7T}uv6%*NXfEGrOZvgb?cTpUgdb%x43M6`mHTQ%`za#TU=IWdNgmnYRmee zb@Ez!{F)Tjgp5C%%Xx&YliKW(U8WQ-sn;s{9Ykrmx zk2kdbcGKNX!!5uRy>a&@!k^>E!*Kh$q1*0Qd();hx2NlFdX!Wh+`91&Li|l=VGDO; zz7ZQ{Z0=dN<*xO2Y%<7RyYA+@Z>3JH-(-614Q*LtL`~^-Dm8>4wN%#MMNMrQ+Hwat z(aAGuuHVG8&V5{a)4HweZn=914KSqbhK_E&d&?%FqIdXj_j7GI{43{jULl{$tDKX| zImKc=*VUHuoUYznZ!TZpcc`$<%N6oozMPkj(*Ja!fWNt19(B>*LN4D{mS=7JdZCcd z7wCIxDW^+#y{Ax;7xLXjQ%#NRe4%{-H9)0GQ#*?OEuve~ zE4nHab%P7|pbL;nf%zxUGFtOFiwwTYmx16s5F`KR!A{=D@rU_T zf!q{Of1yBt7ITbkgDfQ|(?G04d}IE3d9_)Mx}&bImGgq!T)j<2!^4MEX`2)6`TAr0 zyAQwl{cd~i_I0=4vE|jSGmwbAJ8s{6$6X{vIPGraRIH)&%1rn@$?;xb0Y zzqsD*Yu0aa4!emMzk4%@sdb_J5P)3`09wE+san?$Q9;r^b#W*L_iMWCCXu0}4YexW z1fVyQD!6N%c8l-zloP4a8{J3zNBw_yAJG5xggT}E#Q&-HkKUO7r1zNjKL4=ydGB%W z3*MK!FMCJ5|K&aA9`U~D{gd|*@0Ndak9+Ucf9HMQ{TuZj{U7d+z0c_b-iUg)H>Mxc z@AOx`-+h-J)_>%_M*pe%sP{VkC;Ef#{rV~Q-@X6#9q(V=A9(N6yS+d5AM(EH9&kVH z{kwj|{gD5-|FHYF?!*2Eynpew>-)W@yf^y~c%Sz_t^dt?t^TI>AKpKBU-drcPk4Xk z{h{}1|6lZL{MUQOyffaXyobH_cz@~rZ|@Jhe{la*f5ZD{@9o}~^tk@AKCZr_PU-*8 z`@SA?|J*z1{f9p2e%Sw#|1Iyc>XiEt|6|@R{RRI+?tX8-KH~3lAJ%)+JKPWJ&v;+) zc6nddf1!Wm?ejnCf6@P;_dfS?-nZ2^-LL3B@JICbz5D%ddw;8+@P6NagMO{|T7SFu zhyK^R9sV2qKhPuo@9UG^UwMDzAJuR4{@nlH`t|;P{|(+j|DW~0dSBIl{-1h(>%HCor1v3j#QSUSLI3sod){09kLkbh-sbP{M)fPzU2 zliuLN_5SU(3!(y-T}WjoQ1+bdwSf?C9HqPMwWV}TMZd&F2f66E;e{c6c@Y)tbO$3f zSktIb57s>T9oK`AH(2xOaxeYnOwmPywY+`0rBw z3Ohh@PFQXKt>a3$+Vf!pw3W)0_BlaEwX>_cr?+qJy!i_jE?OMc>i=U&{{zL0pDUvk|MkVce(iNH{cqRb@ZW#qH*fr{ z-~NAJc3go5)iU=X7j$?3A-dd2mn(>qcA=;T97Df{9Aby%dQ^od9aV$N+%a4ob_Rub zgGY!n2Hcn6&vn6{`c4T~SJXRJR=$akI;caS-78Rh8QpqAbU)x0YSoZ_yjlPh47fz# zkp>1jBKPXbw+Oy~Yp6yl41zy&!Q4Mm<Up^ChhR(^**c2uoOwQ#!%KbKxz zfrz+tFnF^rQH?&3$?Yp?KddfuJ$gVwgdR{SI(7wN|91!L)X-^F{$X=NE;m(IT*j|f zL-o?iDjr2eqK8S4={#>kncR|wCR1P={>=8N|paM)$vu+b$nH; zj(4Nu>nkHCxG3zu zvEr1!rb^Pej;GtX>MVEeq$+=pD6NNug>-R}ilvj)FhEsR%ikSIRo_$PzfR%lcc#J< z3l~sC%*WK)nXf)Z{5B4Iz!`AQJdV3jxl^I_s`Yi>lY{g$|x-rNb4l)oc17pW^DEVo^qeX1bnf}uJKH4+E*2?Rt( zbpNn7XmEk{np>-Nq$&$LD&N77XW%x?2W>5>VpRiGtZJr;(kxTOcUAd>9m=W~$dEOtGgvaq zWc_VbKA!67%WY4qaZfu5h^)qD$e66V!?bag?Rsar>#yLhQy;p63xKT8i;n9sBy(Jq zzm*#2S4^ioU(rf=z5x7oIIBFrrOMxA+lpk5AnK>gB@eMo9CNca7{O7H#rV~VAgliZ=N^Ox}rMqXarM|Ui-2iybvmbp1dHwHOG94qdpIcKn( zzooljxjVpjk#o7TU#?VqMPMDGt1=`gP3bzIfRzQM)=_pu;erO+J?B?k<&>gbKRl$O zfoR7c9a6z-JSupIuA+`;UtB;+X+M9Tw1vK3?vQfosN7VNE=|!7$dplKAs0k44i9Cz zf>HZRRX%3a&o3N4fBBi>b5t=tAr&m}A~JAy$l^johlq{UY0Ez?KUQ0*0i!?ZofRR~ zNkm9BD?&P3iI8d{LXN5OH%N;89@!u-pud_JQNesK|HZkn^bA<*bcPg8r%B;-h7_Ji zNa4veDV%9Z3a2xq@MKI16EP`F#H4VxB`KV4MGBY9oD?Qfq%e_Xt<{FLrs#)dttT5< z>ujbg7?!_K<*%oP<)-O|<))1NVg!BXFD7d~e^yv?O-j@yEGgDlbbx!!#+ZFZ_L%J{ zOtPw&WP&j~XTz*P26nEjd{z`$r%_~ISLJass-9b0GE)=$(bC zzNX4wrK%RrLRDW?<*!gxb7!Hduc-3TbDy0C^Jk&yqpJL6wl@mKms5BtSMR8#@|I4c zVw2N|+vu=uBu=AOvD4_ws{Ex^eN61Oz{v5=)U@I>O%*!R0=AO{?CP*;ji38W6^&oR z@;TG`>&;>i;_Kg|59I64%#`L8py->zDnv;SelQiPLX=ebyL-*x1g)h{uSlP6kv?6) zgbN-${dmHoxK8otY9lfqXMqHLKv#tE2*1HwG;`zxz9Dt9(M)(&FXx#~0fyp9XOJ$W zqcFi4`>0Ns6wRff2r^Iv3`I~`lY%0c5{iJK=mQj+0Y#rcF_DELXaPmo9rlu`-4pfF zW5QDa?cRmCd^bstF3433&!=RHRyES(ORD_E6!ol`P7ADQWp8WP+n>zZ+h0`WBQvg8 zam8T09KJoG%3pZKKs^UQ?au=B1yz2WM9aV|Obj1a<#L||Yi8T$Li8alhiC>!K zDct8(`7m`an1${gR^`Xe%{rKY(Kh^e+DMQ)Vud-N^sJfIz#K-knRsIYyaX1TB=4Vv-V2Y4lIh~e$ zrD)muEHr&kmH)g|(?M#KgT!*=#tBKclC7uz}LgpQWh!w(0$&w?Q(j4?A8+ zqG!nr{iEnP^@e&LRv)HbTnPHvo%NCanJRxeh57Z<4f=Y)b ziPUmZFzs?ukSrMOZ(dGHJ$>fONl9hIz5CP4Nq`$Z-iFR^|3ch(Z~D&T?efQ-Zs$Mx zYCOZ0+3Ea8o^Izq{A_mq!{?{-d!KISKlE&N{zI)gKMR6-QXxGXsQuv6MeUwv z6SaG$K<%y5qxRO2b;k@)dmE#cR6rgwf4?e!oNR`+S(w^=+{iDZ$Znm+Ji8Sd=(cH> zG;f=3NprAaNn)^hNprSW>OZC+aD(zJAnl{7yswq^p9E>Qg{+vTL)!Z3khY-#X&ai6 zHro+B`&hyU9kYP6k0{9e7-{RLLE3sCZE#wo4Nix&jSWcK*o?H+k zq1!MMcgfC-yJTnDU9vOdE_o<%m+VSU&-b)+m+Z{AOLoPRxUtw>G8Vf__O^7F>}=&O zDb3tnGM1XEj%B?Jw;OlK6#cMnhFy(rhP|1tU|1eD3fm0J#_25OjWRuY{wz$7_NrLr zQx8sNmd8$}m&Z<;>!vc4uW}NF-P6>GEtD@nEQaB0Y%yS0_k6Kk00m` zxXH}paBkR%CFWA7jnJfuG(39MrP`63U=ZF0bJIPD6-sF@?7ZATY(CV$ar)jWjBy=p zt94lC+DhmkzR`EqyJ;BcS*Y1#7IxRF_Lhh|xR`3~xC#7 zv{NN$8a0z1;u|m6&7o!wDv7h-sp?gz{%ur$)Hg&|!~dc0j0!_rxN^RutG;`-Y+2?= zh>gcYw9^FafS)&no!7_X+<|d6ZPZK~i2e)^XP|`$IP|kKu7^b1;Ws`C_Bid<`853i%PllOllwmfX2MwPG@#lolV5&FVY2VP(zTxr4 z4IXB;G5f^1OyKo`9MSD+NKx_k+^aMClA)K zfbKY;u5Ridcal(WIa6DJ4IqMTVCJ> z{oO%!)moT;9sCSz(E}iBun`is-IDgMr+vIzK+fF~!q#<;fook; z1g=q4^DrQDsjYcD7$iU+RJ>|#V{Ue<@&{6a{m$tG`<+vp_Z$b6G4A)Jjr)BW<9>f) z+#gIE#fMrN_xm!&{lVBGJ`fxC2V&#?FpPV@(FEBS8}~3il%ri$nyLA5AZ6Ge$Qt&W zjA1`TAFN@2u+gwToaqJz_r2`^f0nq2X;0)RvIKBSnYxiWSapV3!1oz#tml z2E|4*3kS;ptg}h%Eou0^zT^g$fn@Xi&)tz4iYC;Z8=`v$gNGH~y*FHfCOXl}PI}RV z-F?kqlgRZc#nD4-;K00L0U7CgqWng*dJQP+Yj*7Se@$Z6&{vL2Gq#oV9hG0~jDGzw z#RQ6J+Se`ppmc>>>t8{JB&mrNWO(qL4lk%X=hymSXYTyEnJz#ZMPu$D3io~MkYZB> zR^1-i_NPy}u^o<&M3GLou_D!{U9oMB+p~6x!%Y3OZ6UZ zawo)ShZV?1r=`S9V3iwTax-?m&7)fqGxLM1Nc79(kUbH`PdLs2FYhwi__!--ecXi{ zDg|#6A#@CK(H$BLJJS2(j=QlhR07cpz`#z3mKz~ zv_I|E%yYBz;|YRxFgl_{O0&M~0CKTJ9j2-X;wlV2Vm)U7SiSh=G+K#&Qo{FK)Q*K#A;}N&EAnYNFOu}^O(z~8lQM>8C zUc9sb`@I8R+U|+&y|dn1>tczuiY?u4P{wVz#Kn-gz+ZYlh%SLt>q5j{SA{36GV@qK z7EgI2rY2(cOHKSm8DGQ_On~ne)6-7fy1|@xH!^3pu{`e<3oJIa!`@{ylJwh+wFc@# zd1I}MdS%-t;HddpPi!`KZeW1w-HGkoiP|kS_Zr)|Q_PjHhaQUU%;nS(L?-N1wliIX z7Vdu9_8wKW?qrZ-L!HN&ObTi2q+6>d2|dPslbjxNhASQ z`v=J$wT)F_RtHuLJmE445SSZ`#I7dw(xkDW-W{gTqim;B4^VS8?nc#!m!){IKO*~^ z#%uv|c~+vu{S54gXd8tT_tiey5kI0aUQmkVh#gFl9%9Wf!*mK6dV{PC*)T3yCWxo( zrjo;M+{h6(@;Ih70pTGMRp#kVx7I6#yJ+xavQ)qXqPL}a)eB9Mm{*-lW!30PsDwbQ zD}*c6>A|GdRh6x)GY*+nTN_NPlve41*c_?{gAq{>BZTJ0_#!GukXKj^zM)#tKZ_mI z3tY9p&3J;FV}cuZD8bE%jk%(Ju%QkUE;71a|Mo{!^jx!?x@&~y z3&XFW*}`Ax)SBt$=}h;{Vyw^4Y(JR`nRL1HpfUS)nBVQzM45|4+h{w%cNrs3p(YM% zBiJuC?6SZJ>xJb})dHZ&7jZYk{JS&ke4(3K#LX;J**EXRn_FbLw?7kaXji^$(9aeU z=n#c?^J12*{k!Yc*70j*s(g3D4EgS9;@8ab*gY*biP87>VDeG5F4Bt;NM!<$-jEGo zd$%gTOO=94X2Fg7E>(Ugh5Wmw4+OmnQB^|{(Ak>_=$twbbO_(wE#Fn;yRMl8g5E8G zpVg}??PkxDgqe4QU6A8`rQKRS9ab>f5YVo42k$CNp z=j~+%4CKo31dQmFmF=A9DBc3|c2$1clr3eW6kY{^xOLhng{`i!ojfwmvr@cMq_|n9 z`rY(86%qgMg7jKR@lNZM=g;nK=_jS{?_~qhNbz&@lTNq6_id{DRucR#oQ2qsx2p1k zDdu_glpDH_0wE ztV*S)(aw?;{=M}jD^6j?Aq)DbkYI*`JSeWL{9d%@ell!3C4WROS>TdL!c2Ry0yyEw zOb!<7c2GgzGWRHcFI?sx!S9nJNQ8D6>n(0{SPusO%PtZD`(q-)qPNi8dn*XbhYfyM zV|#`#+cW5!czXujz6oy{ii3x1l$}!1n8(hpSC^#eU0&Sum?u!}!S7pAU(+XX9l;UR z96>(frKx(%W2*MzFGsv4svh$URc|#^J>nUvhF8H78nZ(qRgY^B?yFi;wLEM^)p*i^ zs>gM6W0tD9GNS5Nm9juPm>c%mA=W05-Efk~&Xq)V;e}EylGw4M>Oz_O$4TvsKnT;x z?Z8|+sjA>j-p_gU)oH7Dg1^U_(4#cpi{=Twf=P=$h@!cfqS5A})Q6et)T@(SlPTF$ zMf%lAs^+x?#>k4-$ijnQ?8FX>F?MUoMEI@Vj6R5cV)8*VVCUTEIewf4AcOn!OLCJA z;M2!`12WIK^XZm9*qR<%k?naNp~*i!FK9al2BO((Bg0O1P3CnI%gx}k8C_4q<4R&6TvGdMK_;_sRRbxA^rKK0d znJ29=7h8HkD)D4&=>@R#0zp8KSb70HNG!cz5=$>gRTc&nRmy^m!AR9Cs71{g)CP>& zR+zxDYPvp59CIZOTqI07um2noJqIq*&31F+MtNChL%qke+{ae@$J|;q_$Rn*&)fKP z&tQDIry8H`*&LtlpT+pB_{T4O<$-_s%6C5f0~2;zXc&@0c1Qva@(Qlv`GRaB<^;)L z$*N4pXoh@33m@_#>f1>A4J=Pj&zho4Fh4t%Oby4)tnoMpp7^0%PCcT+hA++I!~FP- zJhas8QG?qMY2J_0H1J!>EVXtdp(oA%vpxqCjDng@cv5`K#e%Iwa}**h3va!PUhJa* zSa{8Ry6UpU+lY4eVrN*huci;{%s zO^qCrqu65-gn@yVW2p$qbMV?h_;~{?|7V)6a`)43x7&8BrrpHO_*F|NXLP+w`g}Fh zbwZ{Cc=wRQcMTDour&8^2@VmOja&xKux%rdmhwwR zLgLXbW0wX=8!b^oVg_1e20!3 zXUxo%Xp@X1P&hSq1h(YwW-V4Tf?O&eHn*oQZwY}UJnu}aw3ZUfi))0?Xq47?gVH*dQd-BGl~%cx(wch?N^8F>p+@5# zz7!=@jg?fZ*hhW2GlAcbG>MjXp1|*+Q|RDnQ*_+?j;A_!$}}3i?Y%tZxw+z{xqc+$ ztp*K`=oE+V7p9H5kcXPcwLF`;@r2QhC$qXyPof*U%ihycaEWYsxsi`mQKncu64H%3 zNK?`@^%IH5gSZY7OdcyT~J5BX%w^iGvErC8Zx|8SXt3Ve~RFEq=}gZS};@E0xaiB(w-1c z0~M95D9#h%TScoAMXQaXHEavQ4=-4*kDHbam5*x^k!L3r+Gy_JEttMPha~EhTzJ+ zK@NzvQHhA)mi-G}*c0{Hkjh?^K`Zo{0?zr_zdKI)ISDn=2tPlpl1bD-rp=Pt#ihgo zYL9~(k0rs4N8Q?DDLi6Gfut{oDj;NvbZ58$+aVD)i?G-FqHE{ZJ0#8@_tcfe*d;m? zhV*9xpJc{61VMk;6qDTvxG1c0tUA@UXafw3uzKx$)G_sU34k%w5zZ*m9AqidtrBmj zc*w0UNgEOgNZt0$Xlg~Ohe9Yb%Gp%HC#gQ&J@-{Gpwo!R!_FY&k)vDr=+D}J@a@<6w$PQz#eiMfR&w!Ccc!LybK0|(NvLpO`@rg(O*Vb^pY}qDQIQqTpF7>mqi8Ema<1I zn(zkuozjuDZr`>%j<4P4Z>W3yG_}B9*$Ef35S{^gh}t;qMrR))X_pH=OC`}5Vdum* z4`F!!nty@~k-LJv#pI6)z38FuQ?Va>TuFU^hwfRK>^ldFJ>&+uVq6R_SuGO2;jlWAHjLccg+5 zznVH8VXjgwH2~d9KrbbNt1XCjzKe;5NsRg_$c^qtsSX}ec6>+dNG#Q(etqGJZNF7f zljCvp3o#z^t?=k)@QAlzzgRrxrotmWO%URgg9MMh;4zoMqYpg#f=55WqfZYKJo=O1 z(N9$t`jw!R1)5|McMYx->0Q7Ma_yM%f-Nt^<-p*Gzg&-^DJ(}Y2fmA!Bj}QsBT$s* zGpZL#MF{3Pqw#Tc26J#`?IWILf;Tf093>`TY2XFla%I$xctUqR4ML8$6#nR)Jlx-K z%N0gAMthn2Bwei-hCAOE5%Cay@h(|lzKD}i`VANEuG7;UzDO1fH;q}3$9Q$Fj&vW zrJ*eilQ;WpSzl5X*s>rgE7-D>aBPFuyN%J6i!K{vGa}tfsMwf9OVY0zQsvYnlv>4)B)^lA%QE4@VFxuWoDi;R3^q2w8%^xAh>6Uv%f;i4Cb zoG?Pd$mqmedA|~|9ObU6c(Kli$skr9qBCMLNGp#c1P1F_!~%M;@_;^pOnS((%0sGQ z)gfZw3>ayrQ6fUAMs=Je%(2u=RL2=z&$Fr}DU>&PfGp;A`n81#Vg^Vb)N+EeS{~Lv zl!BI5PHTDPlqLmHAj;c=`hAga#Ng3o8%4y03)xFdC|s@qW0;rjL8zazu51#(GRTRp z+~JF^9QET4!|<3)SC&g6t7|N)cd^lmxDs@m(Bahl@CyIzPq!}~}S&$wwGQ6Y%<6gbC9IFDJX}Sa*MXDobnjioc?5>yNAP(j|kVhL) z3)QkEv}W1nG85H!vvn~B$DZQuxV$Av^yRDT~VW`(ORqFO)FL$xBQpdP9T`aK6U@Tqh8 zG$0!VklQM4god0DkmwJ{;Wud+>RL~U15K#no)9aJW>x|ro?{RTKzbo8!Vz7pIAynl zo;_rHR@Nm!bHCX2bQQ)>GGr$kAzLeut*#V>uy+~*YSh3t%J9W-F*y?$Ncd#H6GM+s zWuc0bx>EC()Ww5LQlQo&8#{fZRD6lx@S<8@dVi_{sbvu+opO&PoV3H-5=>k&zXBtJZa#N`|v z-HI-=+*A-Dggv_T0=ED5VIm;Z03jImS)Jx_5N8iv;-K|HngUiae(B<6urs~dT!;r& zJ4~E!H^f<=3xK_FF5q=Uz!GqT>#Hhaz+svkc|+0W!CG&)nC-lW@1?nnB56~u6$qy^ zN&vceJq&>ipv7iDamsrx4d{(Rsy9@yfiU05L>A84T%PO$nz_V8^**7~zUbaT13A-2 zJKZur-sKf(YZ854|gb3HI(cAGi?2g>4=JN<*`5UV@+@T#0 zHChwU$kSL5Jd4=xl7v>Aq{XaCkqm%GCTEtodVtHE6{rPS;wqRWF4nz0vcx5`o*t%g zj6hr&s-p5_i7UeGR(^<*(7euzT_giI>TfRd9m+{k6ijVJ0j+32EATK|(0T;49s^pD ztrY>S$e=;2)r(;{E0f3nn?dn^>uD*eRv7(6JI;KOaCeMQyPuuh1+z7&y z*GS>Io}9nHQGtk1Kk|oa-6$y6`=A9$)_}U^vcUIh^N6%bp4ED^e2MgAd6SRJXZyOA z<53j9r+r4|Qjbs)^&4-|$P~leHJHxVdvLiS?3o{J`*jmgjFBQnDvB#>+jW(EI#4PH znMr7!hX_cLW}MUylU7K3qUSUh4G9-*W-cl;a?wu9Me|D1&z^8z*o(noE-HeHa&onG zFq|(}L#9l0LA_uELkMKe#m`*gssK`<4|jdUE30h^qG@^T9kFtA(|mQPnXl^M+?Lk4 z7^^XF(XH^7&s^ehLLsmSVxPq98+C!C(0d_SGiGjR&B=*(Hky;+0+~Qq$3U}(!uS$Q zu^(Jl_hrH_hP%A?Fs~t#j_C?JX{uK54Ch=`$?^7U1lvT1K6OY1@AVyyg^0=!y7Rz^ zuHi*vj@or#HcIKfY}kSYVgYPX$g%~JAAv2{sSffIi#25qpyFaJPfVXjU3u6b`BYu8 zn}tCjYX}NgT=YUqSez9XOj9j67DZWz!0Ld=)`2l++>alMaqk*aet|JopA=J`ooetM zP00Op;{w;5RXd+>Ykg&b`Lq^Ohh|whnF-f8rYR@xG<)v31@po+@I$@*szqc0;Oh&2N^PU3wNEiJ@=oTh!hgb`b~9t95GR zKi{q(6gn|{e%SeZ^+{Eqk9>qQk{}vP1Vmhg^GRH}CH73zFwgP8`jCV4eG!ySQjTN? zq1Z=)H9y*hyaFsFS;~{Jrwb8@eYo5Z_RS|f=UffN@Dg0Y_JI1}4DHZO;ODtSQv`4) zH9}@;bbzz#a$1p+XiX;-6YEC{u4OUbcQwKby1{jtvjR8cD=mMXNaT-eyaWr=6DOg? zXc3o%4Wzi!(%g47(Hxsvmn4LMF}nne>0#;17v_MNJf-W4;CGR!A&s^1%7EU6jq8%7 z-y%!_)3mo}cYQM2WwOjC9^cl4Y{+#WO|F*c2AEW3251=Ur1(N1?U2_LBo;iV;-w{x zsBSOzc9}khsK*uD$BSOj24!nJmj_KYZ=l0@tGC?wiV^j}-zk89xpUML@Q)aWMer%G zHIYV*aDw@`IO>3oUB29%@mL-k1j1DhJUr-2MWd#Chk1M0H;CQirWD2Ft}Wqc3+bXow};mv-VyETJ8|^m3%22LozHg}r2EQ`rG@5cg zS@9?)q1c;b6XuLfn9JIPsF-F8d1{1epPE#Oo_I1I`WwO`iOWsKK=fk+(Qhyi1?;pL z)?*E@9+S>A7O?OOOfqSLg5hOI?9&mi=Si>DNAn}hjXK%c$gSxiG6fb(=O5mVg-)X& zNe+n@%@5l_hHS9-29Y_#4uuAfKpBgQq+2R5p8ToYYGz*86XplQqH(`~0DLo7F(&O+ zF=;LQhU_{m*?H*>QpLUHjD32h$v(y0fNj!6)7zrO23yol4|-(2EoQtY<`RvTpE8=| zJ@%-^Ml)jHzo-O2SrrOpStjc*KkY8p1hF4IMgR1j>@B1@q7eiFL5`hn`lSd_kRAID z2ahy+NHK-7k{evIM_`u+^dC-W) zQIETBK&|rt=GaLnutplmhkIqhowJ_80@G~|{Em!Cut1nIqSQyd!o7C#w9IZZ%d=w> zH(i5FK=H$1kbR1BvtW>?S@FZZL3S|8R=+^TD+H5)%IZXAiJK8_UhLX|OlgFxVBw%I zF|Do@?C>WpNY`ZK?2VAfF&=ueq3x`R<>B?wvo23-bIE0%HSTohA1qjb#IY^TKUff- zf3T261fSBBKK_80phjHMe+!di4?G-_5H_t-f=yf@NGzJ}G;^~(t`NXpSEy~DE33Zy zUGZ%maGAB-gXZ~RSA@k8R|w`PmtXFj;$M4A!Wo!~n&mfdpW>VHGGyYW%Zr`ha_1yp zviLscVvR)B*~&n6B`SpFc%3ae<_@w0wS;Hw^sHo~@I9PmA9-60cDyaoG0Bid(^WOd zWE3m(CzNb3GJ8-x*;s_CwU8k7`1|t9XC8-Qi2tLxnUXg z4H9Ka-6)ep=84nFTs%RRXy{+hAe^Uee$94MpJO*mAs?~#vd|I7yCXXSNVh3Sc8)Jm z;9^`ImM{@q9#pJ5*mgOj>ct4QbTPzITki(4B(NJAmcoX5&$aW>{i`_0%ilo4p^t=% z9>U6t*}B4l3983PqO_q97GA?!iDR5KA_4tofu`VOGQkg~5RW|!lNomF0RLYdP* zu(Yh;*>vRQK@$xFMkdo598t@yaB2(L%vmVARPx+<4!cySTiB(tkin?a1A3=nm&!uf zrIHI5+FdHX*`?x}T`CK)OJ(5$R7=W#R%A@oecq+Qaf~|&7{Ve+fSmPx9pm`AcEsIe zz3%OasXd9?O89mFJ5wN3ShoD%~FM6T}BK* zWM(9lI!ADU?`2BN@%uk0lum#4zawXD8h+cSPmlel)(P zn-O#4L0Gc6qqj?3h2(fLyc;ffk;_3BSc88NQX~9K<18dzt6t-P0KW<0wcRzWoJ09e zh$5AUk;Nur#Anky$G)todlJriAChPa>VQNv+z!Ftg@{{&s;$;|NZVaF`-n)s?vg>Li8%)en^ z78$&p(J@|PH12z(iRjE+>Wpqc-)KYl4&ll=E_MK4zASW19&SAn`@P6O_NNcHX5p$@ z1zgW4qO=pCWVS;LNK)WSeBBRZ`f^2wvYQQ?J2af&mZh}=9HY$7hmDd z+g9YAB<_Z~+mF34dx-8;@BuaLt_|c$QT9AD{)#Ykzngi&FRB6e#=6ED#M`X*h>C8g zdvVcK71bg;U5L%&Wb`q04kNL42k-V7=G{J_Ax#x$K10m*0kao?lSG7Q6=tqV(w-5Z zmM(cqjuvP^dUF!GR6>`jheVeObg6`Tlzmd5OO;A{rqEn-V>OkkEL4>_r3RR(fQ$k9 z57QM*GjQv|g8j%-9_OVTSyX^oqh&6|(Ly>|8TYV6&lYCA4UPp8nH4e*ks!M* zE;q6?hfL8v^Seh$E(j>agUU2`?89Wjb(vfc$1Nx$ zZc{D@cey?;6=3r8QMZnrl*D2+4LjbcwSkWbZKVMN^zO-IIiY@zc8(v0Ej5eC&w8+-ziolXxV0+}eP1&HhN7??c%+j&U z+GF-8O1d6o&LfRVL==462-3c$SLKkU1$CW>AUD)3c3L%7)7j5MYP=s3zWu)dCF^9pZV$H;={M4}zVS$nP&X?q39Mq)W_QD^ZSAN-&=VGl$y zq#^S5a2H-o*dBLy=2=7&H$bAAIiHp=E1hVP0ySVJkVTn57R>~b)1)YwKx&?aDNG%p2iz2Sffidw zxBfb`N%R`gf4t!!j|HY23&bL#v+{87YqH~w3l{+?xu|dr`=hts3A3GJT8q*5)J9mK zWUug*#C_TuH+`eiH(vV2Pv7LyH+jAxQE7x?j^pE4C>B;$a#;xYHHFu#tAM(~^x0qW zQZs8eI;NUZtC*vQC*E&Q8b0!{3HcFZ6wP^;19o_n9mAEC1ue&b*?y|G$5U_LAY|Lm zG~93aMh82Tm6KRAo{3=e?DU`w3JHczy^xH0!H&9O>48yiGiuOfiovM2Vbn3g2pwvZ zQE$VjL!Kd$wD9bVdclr*8%DiNJVi8@$U?xcDIpGVb8%oc_oYy3rFx=mkfT?NFvZNN z-Blc6DY1a4tuEY1!bx=Lgs>TLTb?@@4`#mzB%j1Y-UuWb^NJgtPRK_#`lKje$z&hx z`mp&Z6<>&xHC+hl`Zu zGmEGYaGE(ZQ5cM2HcPB%LL65%QN^Y#H zjQ6Dt-j|MPyf1b(Gl~19#at%#WmIhDdH38LFy&{_0aI>pz&P-~w9|jE+?DZORKekY8DW@utG6Y?2EVycgPdFN(4tpLi-bO3Mdjn0+Cc zGGmqHLzLQ33D1P~C_GfzCC3iagHGu|XSN4zC7U9xxd)wb5878Er#jW#IeR^5pIHxR z96Oh}IGD_y{V&yWuY0owY&DHjGLvww~-dC;@gPbEZb9V7TASwv+Qxj&0-I-!=Wq2 z%`)aD-WkrV!Krj%<(Q+N&|t>RGGReEs~X)bXGw5Qh&?wEyID@8+$@-?m}H9wlyRNx zW0u^ntnIp&WCN^W>pf96i=+ME5Pxu3S*?6fWqmV<%RrJP%s^VWTNo*^yJf^pxm(2a zM86tb#3OFn-4d|0J*!ggmZ0fXakq5Ul`SlYkb#$`MPoIU{Twrz7eHX7<`EbpRKdqv zTTx5ZU>>0$o#Ad_y>Oi%ENeC%Q6gRstBg^TLZ7e;V|Ws~=BWBb@Vdl^v4+i2)ynO{ zhHE>>1j4%=;HqQ-t}1``&0|dWoheS5J@oQ`z?GgdxfC)S~k+b8M!A80aum}9XYW`~>jVPFQw_CPc1JS|5IV?Z1+ zKmr^w4+1%h(~8?z181$l4o3{1urh2MG20VI%yA{Ua0*9EYiZo*i8&VgRmL-(m{DTa zlg1Ns!gykib9Y*PksYZ0Syi_;t?KqGGnA8fF<8~L_Q%YEW^LWv)NYyc*vz@<&S&bK zY3B3i$cz)-8R2wmBu?Ujdr%Ymp8&XASUrMBTlNr`!b!tU{#){r}?9oFCij64#`OYJB^J|Vn zA8?Xk140xuK<5hx{X~+5rFx*gDAW(vYvH1>cH{irb#)D&WnPETf-}u^^W2o^45(kY z!ut*E?FtvIQ1{jsE!P9=7T|16T+~lRXeq4cLN;}HwpWavazJ?fwM81<_m>`S*9CfH_6*GG>)TPWQXfq0V zGYUnFLQJ%7$&6~jjH))H%5@YP>L{j1vXl@Hu4Q|qME;hN0fr2(;8|BqX=4pJb+LNl zeX`mdsG-b(8s>43eoXg$n1EJb6jfL@O0J|X4nLIhG*a9HH@l#2yOB*J28BD2n{@;@E|MnUG?_6U*ddB}-HU8fY@hQMhjHQRLoR$Pw{lUq+EHMm_ zU(~#4!Oub%bGC6(_o*g+MQ4=r;p*+Jkh5q&%HM!4_CV^Q% ziXJJ9MtuzS%cRav&4>JJ%kpGuH|NU-s-; zc@&d-mY^*an$*X3aHwYmL4DyFj6j(6&c_3wSlOd|i_-kj?-rz!Q2fx(I<;aybAC%;m$>ye+jhsR5TI^Mbzx zJjkVVSuv$lS-ZKUcjt(^ArSw1d=@9!(wuUAu+B$h$e~P2b%9S|by(K1eLPHjw@Tm* ztI^*(VGuky?XH4&rsDFk6gd&uTt#rwwWU|_0@glB{vii{#MyGCyy3`M8xb(B<&a%? zyq<*cm)%Me<{-keIHztA@5gp!1bDlR8y#TNYa%|?^B_*7gn!1B9ZGObnpectbhnYz!b$3u6547`U}%C4q{ zyOvSKov>BQ^uwEdI&pv_7NhrZhX@RG_qOFOvc)YJjGH$tSFtUvAb40C)7(!JnwyTE z^v@jsUCsFC1JJq%|J|+dKcXhX|A_i|AgEdG(3BKq0{&M;N`^N@UA4{<5zNQA6Cqt) zG6-q|RbMm+g2UCoV5sG)e=ssvFvONpyUY3RioqDXMuKzG1oy;b1UDi3x`Gt8qhk!z zFdtaUg%esX`{bZi9M-ViGq|l9?Ea2m61~pF11s;OM>sx#^nlwq!UtSAZ4@KC--}0h zpE=9?AmFJj*W#nb-h0xNo{Y7Sjv3*H%m|MqBfN8(5$4o<-LT0{=vtlUOfM#0R^kvQ2}89UlMYgaLmP{aAl4HqWOKD1jlY{?KtJnR>Wz-S znf|q>c8lavdK#d!qj^g+4-VLCR01N`>5PqMt zyH4WbpaJKAD{}w_=Rge37~@(d!CL0-d$i2mcj?-KgmJslbbUmbW2^}bcC6&hVb4Ei zF!-40p%LVK zKBeNAba+fZ6RDW$Ft>e@9OJllqm&TfO8Im~7 zpi2jY9uLIyc)WogPZ)YUnb70$>F9BqQL1pb>BSDJ=A$^9BS??)nw-u1%9&fs>@yOK zAGaayU2#w-*q8IZmQ9E|pyVmRJ}(Jzhw?We?p>0dnl&q;*h@)>dzXZ`ryjBcJs6@V z?BVLNPYQI|l?rk1LUYZH(c~zpEbOY3N)15IFNt(M;)z9g7{C9(()o}lN&=&U`u7_H zg$~glAq(jI1N#=p?y*P=|BEl1c0~2b5FFE@SF_@o2>Yv5ck1HuDko z>SGtA`6x5+^EhP&dx}T#yMRxuWA8ewQ8?ydjdGX*_vLbD7k-~3#KPGaK{OYzA$tL@ z=*oKT<`}hr=a62lAHSnKF@Wuk z-u1=x9+HBtG=dJ0D!oB2;eNj|@@jlS_b-~gX^_@xN`F8Zw>#O?-NvgbqSX|=Mv5Xu zU2iW%WACzIg7KBCPaJmZ$lAjQ%a~2w;X+bC5(-N7xKvLm`*km}qogYdm$2t@^8?%K zOD3)G0aKx-3XACq(`+j#YrwV{$8;BGt!X7>YF$}o4ZApTa#wUACz84UCz3m+3!ZGc zKl@{Q-^ce)#`lul>xuYY649KB@9E}*xpCRAebVRTNMt*|$Q=eT)Hw;#c3gHz_OFvZ z&Y5t99AajlaKY@QaDgl~6v72IwH>b&%#E;3*p#>?uQ2^SsRg4GG|D&+qb{buEW=vv zs&@&(z*O}*hj)O8>RRRwd6^3Hy7mFX_7GW^Z_I$!4+yOvh-rOXXKDSIQL)Dp6+7Oj zVke<>ogs9@k_9E4svK*v2QY zgD&UF<%o)BW7`oXBbN`VK_hVZ_8}hF11&vWetK^9qgHb>o>ukqgo`Fg0q!o0_P-~Y zWXZRw!+|sI2dH$&NGztZ5p;o>Ncd(VaqvBMA^}x(oN1M(SI6)ad78Dra6zD zeB=PNwxH=eS+JT%n%0~r>#_`v7T`Ep7sts$$#5Ecrl!jsc6D52TpbRlE$90QWA&Cn zv7<(N4x3+VAQ!B4%p~?>Zry=x;NglCQu-j-p5!1|GGBhg+=B7k>89vf4wB8#_2L$E zO==;b>$%|tB$0GzCj9jtp+Y%0R@|vwHgcfLtkhA@c?fc5CB9oGxi-itG_IGuZerk# z$@RE45l+^YW%vak%zU>>qldhBRWfa$#plFMNLH~hvP)aZIk8DNuV!P})v8ks{ z3-fA1w=}ONbgLF|cw4%{kRa$Og?(((@Hw%4oWg~*aeR7dpD65o=@UBpL|N}kpUx@U z)wI|$yMT0$6TsOihTtv9a&M;?raZf9zta_JFarBPg7D!K!l89SIm*eZt*c|3t}FOs zZKnKv=wuJ1uZyEO(TbLyPNdIi)dJ-Nn>k#xWFyLK_m;HItvn@7{7isANAIQ9+z_^?l_Cz)-_1{ zSmxsb1|LeA=Cp{$n&iX$&y$gsm}vP}ZT);fI1@9HAWm6-@v%@M6i38Lf%W#fun))d z?$GJ^f;F$%T1i`>3zu_H1+mHmvC5Uw#}QqZ43Ia7srOoA>iJ~q`8Xh~Yp~X>MJeB# zL`8I`Ln69C&E3?OZA9P62?NCOMCiV;hF}Kpl;3gU=dm- zo8$sxlXO{|ge-u5wg8%d?&3&=Zse}~nHXKA2GILO5Z5o*U6+LxGr#M$#*;sZ@$?1B zSqkHcY#+PKvX3tN<#KOgJR!Kr_^)@VM*npVHWC{?7l;{jVRQ`kPg~ml`Rn&E=HJr1 z0ApNhuy-|?;kW%}#YFfrTKD{<5v}IzTAp`f6vlO;dYkpXaqkP&@Aq0y_K^ye2U!^5 z@Oc~8ydBqkGda>2_VdVfnGs%MMz{{AVxEI4fBt0HWIYm*JE`p}UX)*~-mt0OFLpRv z#-6c^_dgo17G7Z7bN#&J@TBn)PQE>ROvVezrbdnslNMrf4(x-@xQ&pIB&*AG6JT2kjh_Q8U!b44 zoWoY6umkm74jmj+Qk8-_z;d9e`sim72h1Xh1J##x#_!W0QL^eTUy7x9xWwo?BO*Dy zgeQ&?7M?q65$>SCL>{Py$OB_&MVGMmG-x6&D9{^{w}rqi33I_; zx?v8Zhvep6obEj0Y$9y-UxMM!VfX{%BYwSQ4+pMa#AS|qoaHzfd8hR0%iPK~g&@sg zW%3=*IM=b0Nof2sL~vg0Y~;=IQnae>MZb)_x>Q`(^CikN6A>9mK%~Ch2}9m56v%U| zsLBZ&eNs@6ALa`T)-tyXykk$+K;+MW;iD6ctm>}9-X*+%Q#G{YQ&RABGOun}=B`5a zPjfg3!M)o2uB~e}H)apu)KMVk0C2mB+jdf6+csny54kt1d7}_^kghG+F=?4(IyX(4 zBeWc6Ia(DbIXc1nxd)nZ9IY}bj_mr+0PoD@J*IX+#&{+(pF`W^}=j5d( zBaqjak=c(tIsAh&G8b^PMKPU`*)th|IHP*2jLao_AV{VR$D7q~o=rnWX6Eu%Ii+(` z^t`5!195u9nhLP{O>U=<}eYs>aSC>{+ zyk;SIg9t&%q%;txQ5vweV1p1GFiDi!jS%Ei{*H)GBcFh>v>^11Tyl6_J}U^5XRQR` zs+NLqRdYi%ozz5qt&}prIwm`F1t@4EY*Z%8&diR(3ifG~S+saamsXKHy=7#ILDn#j zw?c8Im@+cOluZ^f@7c-I>sj$qM(%+!ix+=orI>|)U*kNz_5?-hN@=z^BTg!IPMlGS zjIIY|;{Y00cEIr=AkRr{Qof=of6?TRWSBhSx~X1rdF11br#5xPVm#=#yHs%9oba-Y~ZF%(Kh=F7zd=R`1mIcJj=l?H6eXg?uEzd2=e$!NJGWpoLo2(shD z_=FToAVmlgIbZQvAw@sYbX%>aD@)R%6a@U55{li%6q}@s_9shPgsG)Su~gEc3I^FR z*+NXB2LwM>Og7toYNNtQnUbU=Xy>{L1WLuE2BHzoWGs?e({)}bd5*BrEc;P&!lGv? zNApidj^>^vIht#dqpq>M1H1C6Q^}H`r4(x^He{g0bevpC(zZCMj4EDi*?=27Gr`i5 z!p&r9@gz%&XR@?N)=on&cYgC7hnnVjga z$>g*;N#wLDmB%S7C{(LFPCDwNR*}a^+dNLXF^|*g(57)(B`$;8sGwrJx>vAM_XhFl zVp6r%5)&rykLU#Ki{vzjOE{g=Qi6GoOzw?uZJ_Qk(g*^NU05{8nbc0JOr3Vqc}A|; zUHFHj$goP14o3`{N+z?8k}*^1%sQ2HW}QmQ%sMDfjag;#F+&zs>gn1V=UzAzLwiN= zO)aytr$eMoX_lIYIZS|7l3Pgq%&3-+IKuSZ_BNE>F39w@E7jWtVk%DB+wp8~Z)oT( z0a%#5z7}TOSDM|OQ(~&L;2W@lFB6FcCs8Z$Y`16+B&Ve;Za6Jvt$e;(?kwxz3;;Kk znq0@puV{>j`O{hGo}Iz^nUdz@lBLnWDtj%mUN!6Eg=yqgV&n#l+;n2G{{#4b=3*PJ z?=KiwwO=Y?2Q@eUGNkE- zf5-SA3ir^QsME|P;OTjriZs7bS7}er%aS?a4d*^5WDBLq)zcQHVlbN4mE0RR_JZ{{ z`%5~2Yxec%#9OVbw^|!-wT7REO$;^bkjIXm;<-UCrw0o99gBXILORw4o*kT*&K2^> zajp%{wZVDCJ%0#4M^dR6uva6iUG#hGS`(44;!J=%y&&7S8n(z++%?IIjX4?9&1^Hx z@TT$L<<`7T%?o(c>5b<*7t?Fc$0V7iVq35pcd>I3C*PkU1M}1Kdpw(uj67lYjY{9K zaJq!;adGA3ab{_74>SYe_SYPre&#Ia#awl{@G5K=F;S}R8An%@04~fbGx^>SUMcFONR(jnCa?aV0Y05 z*>h5ZXMRlTWnpRsYh%2E^#mj4vL>g)#)d;uFEcAxLE>}>2AdbLu)doWkFbpT~0rj#!il-4$>L*3axsBwRY;X zJ?(Uk`3+d|gQCyn)Key*gumF{>@b=C#d7Mi<|cNO=rEtGtq?NGR9eAaUsEbHc}cxG zzt-kXbq?t2v={Kk*b8`!8S-Sa8}P;kH{j}ekvVc>!jVrjxB-iXJzBW|lV`11a$`%D z+}PX@jd@&C$_;p9b~z;n9AMs?n`}9SlZfRKA9j&Xuuu80ZQ}h#ANJ4Uu*;MWyFiAf zp6;+q&C4m58Jpz^r!fqFW4&*=z6_fG3b?+hhQ8fMc6?Q(RPHlqusQpm>G6@JpU>kX zOH&*lX@$zuJw7rghdvb3eu4p!I@ckgZ~EMVfyAHBk2^B{f2k?ErqKNU6t4gOLzq4h zn#IJcUug8|OSa6gBc9b4WL=C0s>sr|$kLXS1UNrEDKFYdc|j)S1v4oxrY7aZWKwR< zn%ZU)$e!b*Ty%=~{KsRT|7JG zb8Kf8(klxwSCyq#Wz(xds#k@iSH`GKRrRc_EZjKRNqx`LZp|B5IZe=Lw@HnOw?>4O@7aGpq`cswLz|BmY;IpG)A>ltM7tc&Rl-W?9dhOtu)BnO5)4zNdYbsd*G zLb|$DdK+Vs9{qwfNqeR>N%1bHY!Z`HO=ps-*zD|R?HZaDlT@Wl(vDIFSjSGDrkFQb zGmmFa=0p`^)+sxuQj*E0fd+%Q#5}Zp1?DWl+(*gESv;TsUrq z@4K^B1_4DUaEgK-e1MZ*6Xn1IT(DLeVx%IKDQY8v8gQKG?;ridhjP5u!?iVhSg?(x z%JS(~`JAbgt0eC1RTYmtv_q0#ZZl$WGBSz8NJk5a)Ijtzl}H^k*T5Z9ImCmv;Fd^% z8%5aHRrBdvHDCHnJuc03m9Igzo)06?tLc~^!KfaTz8e42IMqpKI3`hJ$wW1rNl19S~)p?AmEDR)U3Y2c(=;1NN*=TePFux+Gng% zTS@PfNGYH-IH1~IA&FYN-r9)YG7en;H7B-C_Xi} z(DN93`xcmVTnb^+-!SlIs~DmDs7~hjjfh~EXiz~!5Ud0t6^nxi?uR<*|%I)#zuK% zZ0~d3o^2kljJdKh#ts$e?WKBvw2i{5C?9da&W8Mgiu+>V|q}7=)c0>Ro`RBg}0GyRHX0;;8x>e=$_=q6hQ}iUz|j zf|QSe5BB);LQcoD)hw6{QDr%PsguZ=-q`KWliqZM)i4;W=OS(+?6_ury_=e*X2Utx za~FEdd!3w^r`ARCG)L163<|?SEQ5->>Fw-CGNzE7C;SqiAboBPpIH0SkvN-tT}k82}t~O5EqlOpM(9 zSWSS!!~dVXZ;!R>tn%CMz0cm~vCqBN_KmMe_TF6Rjp}GzdSge%O0zBEIM^fKQme8m zq()V$X3jNJJGdTCYvKz@2Dgfefxx6<)P@dVW`?v;6{`F(2oqju36lUrlc{LP%$Sn4 znZYAvgh!-x*Ke)w+mCbhIrm{hpp66foUr{TVhl7Rj_vLy z(=-6!bC5*X{AUv44$DBD%>#+*JwYvOPJNq;24Zx9*ax#d!vt;d9@@ib+8ioP9n%o{ z@-4s+kOYxn;sZ!NYxF%eYdYZUlcdEbi1ER0)}lcKgkcy2fn>&(s?2FfGmxH3^CS1s z2Zd2Sn#maGO00B>OQO@e*mZgGMU6;F55K6M9!C-7vXJBF%{?mQ73yy5QD zd~xcBnUEliRM_F|x+CDb^oFOyWJV^)$Ns)Hy;gc;J8BzNW={ZG_NYz9(s76$LuFcx zsa+Om@|SdhvP&aorDL4Un!N)`M@bI5_7IoIo&;NxEu%M(lH@vk#OYSegdC))$sc|G zf|*W%)3A+BwkyyxWBUOT-9Y!muV(TVEj-;xT6gl*zoG~HLmf*P4yQ^2`7~zpVqTfs z1Dq;OW_?MqWmJ=Td4(u(tdi4<7U%SF8q9?i6vw8&2j=n*(!r71iBHmz)2pQW((iRS zAoK)S5{Hkgdx$6ZxLDHZ0A*ao4+ZHyL3aX!b` zk!^GUVI7? z!S$6gJ=04jQUh?_&cotxu!MNkd$1wjXx~LMppPRs-*Oo1ZsVx71zO2^7ZHSDk+Dp3O9sya51SEfqP=Cv2m`QH5+$mt+kWVI1vH>_7ob@}Mj#*eFirymDa@@Lo)4AShnRRTJ%SAmry-r=y|p?E>GsGjir%B{A)`e9^tf1?KFRuIInjXh7RxL z-XNzRhj?Jn_b;bG@p{0i(}UfBHP*X_bRMNGl9e z5tO`WFBoXs;!hA-HV0B`!3QlA7bCqHakgb4MF9Q04iIliiBJv@5A#>;Jd^7lWo>iAl$;UCaeXbxi$^&{Xg(oXifki#sIvdfv zp{R%Zghj*kDzV~W;=`8}8EN>S^-@^~P-mLV_)s`i@K;M=usTxm>$iN9{U3p za>vl4xej{l3qAHVJ@(f^kHzrxi1nET7}e%-*Ft|B@}TEs=x8uSf2Po%*+_rp>p*`b zl@8ILS*JfS`O>VzQR)k?9rcB4rat)cKJiCdQ~9t{b)5Z>HCkM`G3!bzZxw#**PfJ~ z-6$!6Xj-KwY%P;PD?h3Ipf5>uvtZUSag`7rR3k34Agkan(3&g%<_&;ajlZCS07!unvUWVP;6F;hnth~>K ziwrhFzFl z4au>kmdwv*3IE{+7v%qVz=c;NsZy))As-K!2e7)MP8xmWTtb33I*x{;_no>5O#1B~Ml*p|C<6&_({=1P7Br2v~V51M6;+R`^lBvDdoz15AUNP?9tI5H< zFP%xI&g(eCKn^l+%!i+Pk5{%uKnad#K8iqPo06Favne7eYVFGZ{>hJj^!+bhx$pG- zH3FMj0_uPwlPMxG`()zN0q;0i4p3ERqf%T~z~_KRNy@4C?{Telj#{wb@4(kOgdJ0$ z%PH=_VpEl?BjcH^sI$RTlx(W;i>ch?gf_k0L@!gsG*YKFv@{0wPSJbjZ`?0D#phBD zSr>|aC+#8ViD3~Bwj1yPF!r-sDk_s#JL5*P82-XAw&3|>`h0%HIG#Ch1EC891L~3` z6~4rpF7_EdzO2eUGY=Tx5Z_`oEyE4wTTvz2tg~S7xnP*S_N*=gK4%G(KtLx)s!ReD zpVQeH0DorUzcBGGOEjjy5l1atJHcof->Q5bq?4Hae`=%Hi%5x`X*e<~x`2W;1&ac*57=q4`f18>Ve_?u6e`CnHLo~3s4m;OMr zD_6W~D%0TJTJf#&jj)4fL*wluF}$+JpL@3OpweT8#%QE9U$s(cEsi!c;N$Ab$*(vq*ti4%X>B|*+i{0K-Jf0NaZip&i15kF1}ne3;Zvieh zbXQ&Vqr{a3{`uaj8sW!I2(`owQ5$U=s_ASD@;h#>Z01eIHD_w57VR zpV7J4WhoriwudBtPnYfU$#nb;E5k*S*2F~yVIh+**%&qbj=yf#=9&lzarG%biHXCrWCcE#I?Tc)mlDw@g5BuK ztO_8kh}BALCV?KOS|5+vk-q0rW3wEB9v9ECpOLV&4%(iErPap=_%2oi zz{jtkBA9!}X)4P^b*C^6i34-;6ZnBua&K=w6wouL8+b($t$|VSq86;;^R~da#wxH2 zc9Py5g6z%A5Lt6WHUJV8VN@F370UdO9b)TifE7^458D6Uw>9mXLi^WGBJ_*K5T(-v zBK4^3&lg7)l|(qR*-)avO5Ni~CIrv6EJ6`mBCpP{Xn+GvkoforfzzBB7#}{&Zu=BP zf072BZ;mh6EGhtVXYprS{68!;(-tnZ^reSPd1@Yi7WmRR_0&B6$fcyRjJ$jT1xR7~ zd~!@Uv&+TfUHEG%6NsD73p07)TZ);8c+M;Wp!v5d(?hk3bEZOoTZ^{M#|KzV}f8CW0`s>!bbYD?6$cyH%m+nQg z@X|eZ)n2;cBro08&x4n4;xTcIcBe*#=!=&w z^^wHmymVvjrP~|v((O<5(&bm$X)FJkCou#z#!^?Xkn^9ixuA{RT%} zeqovTS=C>+cNPA+p$s>k=&!5BszyFD;;-AQ`0Mtn{<^&(e_eIP;CeqbsD%hYQ{A(# zZoFY%-CosKw+D0Ohz~0_9)rMI#iZBhrwcoOv!5;`obe92$fVR(U5)e6jnP#sKDxcC zk8W?sN4F;v8}FRUZgnHQP4LeJ=~A=eqI+qgi|!@mqC3OI-K(Cs-Z&RsZ=8#6N4w}U zd(keson{x^&b4#Vjen{xx~+A)=r)X}!9_PvF1me@U#7)Hw`VE$LtPOKv@+djKc6BZ zo_;-CbXyHBx~+=6og@_60-9ZP3#wSFi>_a~=w38OU34$4)kXKBS-9w4s=MgUY}`e6 zs^+5G5f|P51Q*>)?4tW|b9EoxOJ)|ckFI4JW`mFJch>2nJH199-8H!_z2T$#|BH{V zr~I2PHTk7}r*LeF*W}p5I2aFDtefQ6v_>3^1qWk|gYmU@Y>IzT9GhZxF<6UVsyB*p z-nGLxZ|$ygUX%Ox8l1niLuVcq8A^|7lg!s8EuN!m^6MMtIXeA@=jcSwQF9di&1;AL=GxI8s@pd>=r0flwSG=r zLtia@EiYGnE#s>DXI#2}UM}1}U%NW@&sWE~e~ufHx;5nfxiaMb`MYnmrlkVzB}1pN zcE+c%W<1lWtDSo4YUk=xS1-!JQ&LwSEK*lL!{YejNP?n+Dj&2yh%c%HMNXNZ$Z5z= z#Qrd?=KMr_uPHx~)0m&g8R+iV z24Q^${wk@f!)oek+PT-1x_V7BaMv~iTEvhKuUP0r&am6$VkJwpAz7+DIe_|7-Pn`^ zsHzzJOfA3CLGg04)ETU+&R{*ISl3!%0syOS7!z%zLf|@UGuiYU-E$M5&Qua5Q)R;G za4zjM(&coA0bq{O)NM+c!-;4Yi$t`Gy4?E^O)aWCv@Jzbx2Zg|2TPiIrYR5YK@d*R zoQL+{IHEe(NK^+$JJNY*4+>QUQEjlC(T^ZXJ958B+70BH0Zd@?nVFc4dZsMy$=Rr9 zD#bl@HtONxp07tX>Pm6Xb!4M<29-*ho7C)zB-0)33cX5_>CQ-!>5eWqi6qk<0Z#|u z>AX%!rnx#?r&@5bG0F63!O8U{nHKeJJ<0S|(QR#~o3$j+hcM}Uvt{_8fe=ob4#~|b4v%(_B5MRRpIO%Y$+Z}&xs5pu{D&- z@n@T86WauedhgJQrI)~4w6LpOqk9mWdr3=2EVS0{56MZTk;++;N*_!(sq~SgEFrm_ zeHvIf3k;FmUyLu$=n|68NU5n?B*pX|RYGz}(!?EPW+<|jE+J_)mXJKC+T?_lUCgP= z^<8B8^iyGfS?p0jF;lA>Ih3fGadM_wH*%)2ZY0u@RF-9CLbkycXF)uiZi* z-?b(2WryyDTIy{YiA)nadS53$qV?pXSuC04MjpqH$Iwr zcy#-W%dEgN0?g^59M1nwQS++2HUcFi(Hc@WUp2~i){OG9MwUW&t{3yuV@W@^7_G$t ztsqz1zgws~9OP6T5)Enx%~l!}H|fMoB*InZ{x&`J9iu2SXR6%|=`5ExACR`x%1lW<>)*NOlJ{8p43Qr<8GrQ=|PB zWhIV3Y0^*BW~>e%aF4m)76dn`@0_mByZ5e`8s#v9vPHudKhZwANUH zU#>Lv^!gi1YK`4cY3!TpZ|sIzW7k(2`}X=9yS~=gn<_B-uj_B@O|{0hRYvyW`WxF; zYizF4*q^SyvAJ4fTPuydy#B_v)*8DGzkF%z&(`1Ab+yK3D~-Ln{>El&jcuu{=9Tp~ zwx!nCW-j?DjeT(aENFABu}zf)_|WuBuaBTq>lcbtsdbm1mG z8Jl$U!^wDw&6`}07K4~aUmvmf;`|`~@0N6H6x}+iBk6KF0vm6q7CwShk6MoSY=|>t zE@~2O@dc4221aeR>WQdnp3}8?PE~N@iLb63Xj8Su`ceK#LW$gtzh=rb*yBD=4H@WR zdbqdSSdymiDTm!F`;+P3WN@ktf@?mDO@CIq81N-7dm3vGNxl@|QsFd-93A+!Lyhi? zI29Vh&7v-FL({n2(EM{%zfA68iM!zDWiq$OL>Doc-G;)P{c0U{6rfvVU~$s|xj2$V zxAkt`Mr1gwJu-5qY8$Z#?DSz&Eg~c&@!2EultrYUI4K=YQYd=8#9)8j!YX1($YE>9 zH?Y@G(6g6V61+je7Tg3|g_|G?wvgmfqv|AV!le&&*@YDG3rqZQosk?WpL14bfUu1C zUt66ZKM$nwfHVfjtp25qU=fWR3JZG`)K0AUMXSI@Ut?n{${#~het~}hO_qtukQD)i z22f|87;xhuNjP;Dj3`RK7a>pBm>VP;0@w$nVD*@SGJcF!v7am+uo|cY?^Y@e8*2# zprOIZP7OivIP zP*BlHb=ia+L0C4?*%|@Gl|QLNksBYuRY72M_%lS=;HQhS!32~YMcP2>+3(QMH(&=f zD%P0dn4bUYpd0ue{|ngHvL&E?a{c0URFlU-{PLu+vtL_xV_~ha7SF+vIXob4IDY=A zs=QYd_Qq}925sF+RI6cB9toF|+L!dalb~ z)e6r7o4I{Mxu#&&?8U+oMqNgsUO(R0t5chtt&l@;vzhu<5UhVvcCC3Uf~i9G>KAO8 zC99+ogLZU_HDs5rx1uvP9JzKZXZF1E19Y@ImiPe{0l-fDK`ZMv#QXM=?)lW^Fx%9V zXc+{mNbsb?ZakrlKrT0F9nT^T_l=X@gVflW2b1pDQ1dQ3y>-RMFizsed^k~&0>YJ0 zbBDIpu7u)71L{!4m}f2+V;7!t`K{JOog4e3eMGyc*+^();*W!z zYmUmfW+VKStH33QPUiG)?9v3kM=gK5;7{zuWQ%;=ia%|mb{s9wKSZ(+r*R#kRn`Id zfznXcfkO%{m3NTVp@XnFT8AR!|C+6X$3fp&r&tGAPP)}-e}BwMg!Pp`P>e6WOQ*#R zjF!|H0-28!2EpscW+lT7GhnOXX^)?_=xG7yV&>vwyOdU+<>n}oCvu@8 zM`uw6LAo5Gy(miMII;D;U=p$@l&MP^MB-#b6nHv+NG88myW2x*jj?O*< zpI?_*Vd@}l2;*Ji#(NpbfMP9%V=D3CD#I8*23ME8N8`V;;MJ1k&K(`6ypgnSCY1d{ zySV2T9dDIv7t-sX?3P~xI%C=XoAp@r?Jas_@(^qyZv38NjJ~>*(4)|#ZDgM9iSt~p z&eNYT&!Fh|x@$krur|-FP4jHa6r8d1oaPKn{Lrz{dHzaup3#JPwxwet10WuC7nJ?m z;!jG~Ir$HLGRejN)2=jV!!qpDX5Yib*;F}t1>)`1T27op9Yc+Rwu{fOp(_T{gQYBK z4Ul|P;^RO?+rak{=-T2sG%J9Nr3(ePC?`Uew1EPe0HA@}+I1Q@reqH!K+2nm4n47N zw35OIg-1&x)Rrn>f0Y1>S9z*dckFfx^MnJdb=$gN;7t4bmG z@ZrUQyN{Fj2)#lUVU`Mt_toAt`Y8ahj`nzk`L|cv^UynXBBw1 zH@uS3hTja;m=?se?Eqdtp}$JbLkNafF&uO9L?dCYB7_pU_leJvDy&99{|ceTFa z>c(n{DB@r}T2NrSbzuam8v8{48{SNm1|u~ayjuUPC3 z{hXm|yt2=>QTS{x?c`TDq6@!|@+?W<;+tK_3a@QLHUqc-$|0Dab8j;;L%g=D z_n-qgK{pKHPjUkc%g8^lGNZh<(b;H6X{Dva;ApPuaIyZCW|wrc=N^qqmmRvl)C_>M zKKsPrj9=DXXBT|;kkqLy?+1zGjamUBjRO510s4xrY@FM=nmqk|c@)}5ck;7>0rdMG z1??qSt5^?p6xvG_Xq!XOUK$7Or4riCpbC@Wj?zj?6=n+mkY**P`^Fh%+D}tSk;* z;7(+fwhhD#X@c*w=4mGNa}$xQ#5QrZFUq-(J)2{#=s{)$HyI9r+F~I)H;<=EX~V1` zXi8(oPVrJk8p^uknZ4UMG`=h1-rZhi_(99GI@2@o(MqyN7!OC=NAh`-DDg}Il0u)RK>wE76ut-NaysUE^9f^7cnE&a!6hjCke4c zP7*PjgLgigM1!&ew;k16ML~N6%97M~J$R)CbfB(EHv&}?Pz?apH%UqvSCWLldi=zn zU4W;k({CA_>p`&46`Cr;x+CxpGT5Z@UmtYscBdxi+=Q808EhDbC>Cr?bS1*jnv zoDCSZ5=L{}6c{p6-zCiFNK#bgTH?+M2>&u+j?^2bc_IFAL7%HRKFVeTjyh{6NhsIC zok(M-5tHd$qHipeRacP?a^u~_jk`F_yb1*uEeZ$rsHx9OLVZWTjz6@n`6*RKV*x2O ziNyN8A*xNI(}$0_jybW}eE}b$2EYWc02u_A>JqfI&#lS)OJ+J?p9fJ4;88dJmo|D0SvDKh$OvpDng* z@z9TIlxHbuA>o{@TvDUq(O$!&eSS1=4Pdmsp?I|0@Ms*>E@HrZy;qw}M~9lGTl}U(3Z@*!)H~LKvGGO22x0$Hijj5C2ey6h3~DzWs$={g%MF8bb1Gch z3%A2y#&Lji=T|o#gC#|bv`QB4a%O@oOd$*PETTkQ=yi=lk}X!c-X>im$cB4rA1%4> zLUC_9-?L7X_ZEwLw~X9t7uj6`9vL503~~8ZL2HU*uzvbMll>M)!`g74UV2zXAQ)Iw z)r^inAi92-BM{V4RkrgomxxmgGZ-1>tR$pB3_4r-d^Q##NeRmsEG^&x&dzH=D``(GeW#O${EMSjAtqfN(`9I ztjr8W`dtuqtYwk}gw4A}YKruJW*{5UHtr8LtyDjtfRP}g1Sk#R#E=JEjNIkpKqN;= zw4$Wlj`1@>yVrBM-axw&?ToaHC`pXy!#7w_S$WWsQatjYh?+AJ zBz#JeG7^|iHFl(9aMa6)7xO?0pQ0(`&r1l-#%JL)&mtI^MKJuJ5eb<%l}R{bC*jm5 z;qW9Ngv$(YvVPu>y1Z!RwEBHYT0+$mM;_Pe{x9z}MgN~_jQ&40+7U`+ z=$42?t*ACw9g=pc5^{FAnljF+hlU*)7aDe?5jqgeE4?LBAjM@becB)#(N~m-VU!OK z(xNw~Vc{%C)tY}rz^dd-6E4+!vx?WJks>TXlm{HpxRNI&9;Z(s441@|OQ zA(FMEjwHL`d;EC$s>2D7p=rUC?y5}bh=4l&uq|SzC&jAx2!Mh}?c7Qw8hwAKa2X*9 zdqq1E0RcLe>XU~TivAKkozSU^nMoWK#crENfa~v;>qiPT9Wd6;-IMg^hU4+OMMjYf z*W8@oDHOwAPB1j_{TOEnQ{{63gAZt?VR1l-HA>M z46wXQQ0<6l+5sUBTu?h9(y}0K`T|gpYn)%8!;d`#UV(TG%1*9$BA_ZAcp9W8D{ok^ zw+kp%=EdsTE{~Vl18@G){5KWv-(L*(V0E|!1nj($uiNHtXl+5y`Z*BbTL*k8?=g09 zJqHUhw>M|b+s%0ZZ6WQWj~%H8#&wgixZ41Ic|u?PUBcYoZghyudQuVs#zIRfsq@mm zTM%I^2JrGh>9Cg7vu__+K7p-WSve7n( zJXLNa4=E8RfBe$~lN;iH!0|;->*aW11f`DbviHjqT)|D8R9Q|lF~DU)T|lNNlf5up zCA$Wb5Gj>Zn(4dL=iS6>ZSXKt=m7~tZEE*!T32GItB63&0+7uLfvN!HML#7#KC1y~ ztq+jSMkF%(XC#r?BNCYi#_$SznMrxY1opCh>NL-00t#G}v}V_(HJl=pA-PiGDbPwH zMVV~G))HMPoR&p&TVyW?UTRZK>;WD3P_EixZLI9-4BHSKz{YQLAD{4%ww2BETm$Yt zFvi6Nlvtn+tbGYBmfKE-;S6KdU_Oyuu{m zbF%}k+x{7TI7!7`uq`v;e@uXb;~}P{Q&5SaU(EYjsUQhIwfO{iVb<`1b!13jDm!0U z4{4j#m3m0}NX{nx8b_D^AoE^+_RA)FQ_F>$jC0@mGPD(Yt-X9Of0TaCA?4$Z_9OH) z?K8|FGUJYX!z+8~)?O=(mEn~hfBboprl;7fO~(T6h@eYb?xWA~H`kI%0SGMc6QVhDQnt?+Y^Y!maAP;}6lh&8n_0iX`F#pv!%zdFXX9kO z7!fK%Em&vqEs$)Cd~z@n|9BQEZ}_PPsr54t(p<+CA?ufgG*L;Jz#>lW;egs%&S#Gf zG9y2xi#~$I9MwNu`f(3C+B&+hW*=_weQs5%kKu_-hnc{bjm+LE*hI8L2Bc)KdQdZP zPz$*hM+ln;Fg-UkwAqA(F9|h>eWTfhpBM^fLd{x()L@PO3;$W``QZSF`m7F2u6A`t z4kU-8pA#EAeLOSZHwg8)zYG@v755QxW|=+vI`9h+w#DU)psYVd9Ukb|I(8#sprxF= zY25=s$@p=^E2~;PUjF-+Fa5Fo-kcWm*9Od8jwc}}pRL~k-#dP9 z4v3rrABEb0CWFFWk(669^uX+h*B<@wu(;H^6#jz01C7ooMyJ?$gtpk==<2tm2CqCH z!C8~0zMR4uA01L}E3FzHdhx$pz&^W-t>^9L5pg;=TpX-LW{3yzZuJN`c#6HOQ zDeFvorvctCAy*;xk-vqifd(B)*m`f|e_s+_c_$M8-V|@q2EpR4k8AXbMX%h;N!N+2 z4vFC^Z=aBd?V*QlJWThePS7#%l5zar4Eb@s!g26G3a-eOfQG)$f3DD3KmX#HLB93Q zIr_ac$iqA5@Q!(>7M)js4J+}TsC?>BRs zz-Fa^$Z1ACbuz!y{Okuz-B{&qhu*g7ZM#r+`>ayELoF4_1WK10pa!BL^#V~SR@o(BW65LC-b?0g;jHOp&Iq?svK0(!LbDd3%qI(v%(2Os2 zNoYJNCkyp~aAD%zp$*7!+KzxS)OUx?oj%f=n@nCUU?Q@4u^@0Ei&|P{L4ofcp9S$|rhkQN$xXd4z7CmfN|19C*?bj8a(Bt^JDdin#|EdcZ52_$0cJ-s4eXs=jc-}3F^&^N0_W1cVCLg2 zqvb3YnkWMqFJYmtJDW|9$4HHWf}5<}>=feDwL?ci#%c}oP}MLWkCGwbp}6wE#{l_a z*>M1yUt9}->?<8l2M0OG!N$9Ys;k{gQO3Sn9uAZ&s;$x{7^NK)7Untk_^=p)g>ab) z6xbLpBAczbJ`W#J3IOK?KW zR4A@$oY6()c7gMhd}|9>l+973i;G$#k(D}$yLZ{g)Y%lTU|KqLRe zzW@(yLv2iBS27xj8iV*prkKYK6eHLpC5S(&_2vdD59l+8m==v2t@bYKAYJ^hB=p%& zU!Rr~m3Uzf$ItWPzI7*eB7N_XzTZI~A1z(CM__4HVTp$;u(T(_(qer|6D%!(W%VAg_(W#Oq^$y$Aea)CRx>QEvZchT!tyn( zVk}$Tqg$@+}Q9*$nz=0W+T zN#Z}iW=|)0ap!S%vg^;6m>gym1MzT)hW;s3j9(*f$=I7 zm>5#Vq1tH1+T}7+GBY`{;uil3M3 z_~}l>Pg}w*8t~KB;T9GAtgFB^epXfBtT}GNPrGc16UNqtTh(G~{2bC^bHjU@X3t9O zvMmNG+WV6iKl}|}u+b50v}KK)8aBG|U$Wq}LDpbTU=9B2p!X+$-oIv`_nSfg+PXmB z#2V~6YtW##2jB*OuDAg_bd3L1um-=j7=CRrp#12g>W7iv40mcHf9juupym~8m}k~t z3v0lrSezPV4clw1VSXHIuD|{X0{c$ncsf~&f4^%`6r$Lmc;rIh}Q6g9!$Abwt9$YgV51MiOfv>Lz#~Wr} z!SM%_r=7ELNg|lQE?N^o8A$P%22cjNcuWP90YDkZq=N#K^j`&(K{F_WvZW+wU>DU^ z_vlt@pbW;bi=fUf0zT9PEJ@sCyhI!VXE+>(jqerg!WDKA2)l4=?4lKa-@-w9gWF~> zVcU#WUyNwNVno+$F{0+hxV)~#XxcV|`nIVT|IM z62|B&voXv(h!0W@I?x7*@x@=DjMdL6 z8w&1J)rW&YwNdD_Jkb<-99qDkH>`qk_2v6UFMEkU$lu2o&%Bep5wX7ah*AVDV!ho4 zeDdDEa`v)O^+Ll3>{AxfLvr}zepp=PjCPxR+#>HUmhbP77q`p(1$lp7-rpt{Rc*y~ z&Fthcm%}y&qb?WAWbdoQ&e)e?`#z~OsR~Xe9)KPq`3aYDf`w5>A_dy5!;^P#FSDVs zbH%L11>vxqFl)K&ORUUV4qa4cEw^IUa_;5O4U68w(+;lL+N|a9!)(@alv#^w@C-dX zYSwaFp+C z5nhUaQ%-UVoS$hyEfqj2IR|mJZX?ship5W>>P>)3*2%+tydYibzo+WT&H`>-u}SsV z93aZQQZrTmk9LK&EJ0L(el!C8NI~Bg=sP9!1$g&zMm!CDn{7NA`gRF@#C;0%qXPQ+ zVS&EW2>nPyUt(@-g>I}b+->{~0(s2oykkxBG<1YiiV|>J;vP@|Jc-K|$D54#v@d2q z>g0;gF?00gig7%h%6~f|B>$Z#b(C*C-SST6{|7*K^3Of?lsWh%6Ls#K{NJe`%+m8K zS8RGhP!iv%jRQzYh#sh2$=TuLk9_sZX8b82kV8+%&rfp^!L$$X(mT0_eVcxC_RZ1X zaNitzr*KGl{<$wur|C2vSF@$9aygq3>J-NzJDH)Kbw->ciIGji0(KIysuEGX34RZo z>D5ijhQCE1vpI2pxx+SgC!tG+vMqD;jjkS;LqIQwTqj%RGFz6R#&N;d;_`^=S+E#l_Cd8f5a zU0uWizK#8jvHDCAX9iu%_jJe>P{cz%cSP0qbj+3TFISADv0S&6`LhpPC(hsXO$+}F zi!e0pN1}jkOUG}c*JBR0?2Xi=Ogb2YX9k901jguX?f~9vgKoFi>l$XyvJGR(al5c$ z=D$Yo_T6r`>vi$d-PdWeZLLImDO;7u7PD3odY2pS`Mz`S`|0i( z3_ysI6N)9w>-+AzKj)r%?z#7#^PPll*llG;!06Cs`}}xEbse2xp>*jhdL0cTYcjaa z@gr4^WqTbR;yOB1UHO#0w%5_iDvPYVS!w**!RzSI*)XIkbwiQ5Yw z+i(p(r64&s_0;(tEU!n&GIV}p==^f%K3onRxqry(eaT7x=^gfNut9{CO^C33K_V<% zkO&KnZqFe}NrWJ65&&H73!y~%>>znU)3$aJ_MQo1WfeJ&^HvI)(3?$O+;{Ks!oOQ& z1QSKbyje|?gYwBQGr}-1SDw?UBf@E4W9p>3VymMGFfVLo(FNXw3rlUyT{fjih*dys z0bU02q;zt*i!mZMf;&X##qIT|tyZij#L=7+YmU@e~ZtBH4$d$Kv z1P>9P!Ha2jPjf3@k(8j$qlJWoi8-VoH&M|s0#lkhT~#tQ>_xn8|0>UiqeTGSKOu0C zWDnJaVZagquN+zfVum17JK~mxCzB1*Ds0zY`n{SiMu^)7pDkGzx$XirYn05(Th+Vv z2Pcd7e(2MF@n2aR>qp>#@Yu8N)=x`p6`v|6!zFK3tO?K_FMV-muz0!$3)Y;sh}8n& z%rnP6_gy+bfitSajuYt-uC3#ujUda(k+ret3HQ9sPCR(8;l9?iWU&s^VlZH66JNNa zI1NMk6Gi(6WZwP{_h4iLdP@`lNP&Ke+4IDq)qBT_aBz@`vv>~nP`F-Cu<2uIb#ljkoRB=f}$gIOG|rKbeWf)ZTOJ)Ojg_hZ9IeV!RfON zV~0g&YYRnAt#3y|lL1kBG$_qx7uCq2%RnbS@Y$?`qB9xiw4Tjh^3RPIgwQYxX?(uSI%RZGr>Fz)iMLT|+KOpC=NndurktWy z**42sUrZyWpxW@Z=NV#v^>&y=p^AJNOhn@E6fVb97a3vgFbscl2;N2WUmDA0B7^O3 zVAV>y_VW&rXu(PO+r;*1fB_t!u?5egtO>R3vmewak!i=S2_AaJ9?(Kz$DBAPeJF%@ zG15em9TWZ`>>ZA9M?uK}ZA#S$E0=c@vs2EhMN15i0QpX~64)NlA}HV~LqKnLA7eDp%7k}{u@2uzymhpw<{{3(M z*8N|2{11QeFC=~S)Og1s^S;qevvR2SKC|QOc-NtY_l?$cR`sP>fAO2Y^M9Os|L^~A z-|)_k*3I&vKYHPVfARUR{r;!ECck$pQOShCIG>DDXcG7NdJ*QhMR>Xm^Za9$l_X_B zsC1X?=jD&gT3Sz;1#FE5vWJ)d9~mcWGCg|=mY%&u{w%8^s{4xIkSBXQ#FKrCERKr^ z8^w)>C=!OQ6Ebxt-$m{WPdxE}SvL=c)1HS;@a>hG$1hQo=t`sMakJY~}QO){?p$SGRl%%~dEE}5Tv*Ts61NAML#ZzPX zM@CPoJvDxVJTAOXijx|a*_LIrW!WrAU6K>cd4pEFq^+WG3-p)`06E8jqwNlj3YZ34 zf>Sl^m}CN)59iZd-qy%I6f!!pE75)Al1z2FBUdWKiFK8D)%z zlp6__C)4N+$ngf$P>s#9yp&?kvQ=-uS8tH-hG!)go9FVdfFTMP@)bWvXO?Yi<>j(_ z$?w>bsV_-`<*6^pm+}o?D3NxY!lM+U1cO2%k7v(~yTXZ7J8<+my$UUsE0;;IfO7PC z9BNlDQDu*hJG0+a3ud`YBIkCNEvf35$>pDS$rlifzDm^&G~|Q^lCqX{v3B)!EemBW z>o(W2QNaD|E4oVH%MMmv>(MI-xW8e74@WOa2xPi4L3Sho62j3y6T*WYf;M;5do4l! z0QJE(cYt@mUv%Y1z|#vfzOSUmE?w5zSkq&qw_LiY-z`mVA-(O=+Xub2rt|DQap_Wh zqUj0JJ1$)kI-1@=de@~(JG+|RMSAMe(}Ps#JNP5%nM==fThYNEN$XzTnaq4tfikzJT;am%ez=Th#PLq%XPj zrGws*rY|9V=+cJ=y`iQLk-qHGmk)Z&n!b$m9WH&xL2rkq@6bCAo4#_;Tha6tZYbfX zs4SOTma_@!>#_|^iGT#kyg{=h6VPEW=MF+xKfKARQ>{{UBA%-C*?VMnke>Fj<9V@! z(RpSDM(0BR(HY#r>;z4(?XZji2Bd;F7ruIJhiil(){BgNrgX`{A-l{G?6!?U9jMoU zbtb+;6D$(KQJ%nWO!OM&nYu?dl;Wp+Yqq;F?MJ+^KZKPQa=?+;*8r&2BU|PgJhIDU zfxtRi2kK}Y@?86}wz_nGjxMg%OBUqiXbt40isTj8c&FAO9EY%Q2zMiN8v&w<4>{}& zBCv#I(v7{kp_=m>XZ@m0KS@)P4cQlK;BcZnpyhR&R2-&g>~O#o@@V8K-x^XLb@%NJ zRA67vz5pi4M%Dpn`h$@R~v_I?NMwG&Gc&W6OW(w z6_&=|kDJS)XYII$G~?bVSrxpy?%;NR6)=bRo&O=pILtpEnhX|8P<-Ht7`i}M1nEul zuVG|UIQzvjy^VMgUEaO(G%do5K*P?lvsdf!)IKFVE=L32$YFqQnGrfsP3W|QFJ<^C zb)vO#yOcVQ`qcy`eu2zj_~l~?KWFFo3w}9?pSMZR*uQG#Sv&$0_b=LM*_1y|x|#fl zKRuNn@%M*M`kF_f47xQ5)G}>KAa`!&()oP-e1=afw-ggLG?5+*r&>5+j?)UO?^WE0Qj__)%Y>Q9tbK$?+qA zOoM;oudq3(&II~lv>GsJm>B@kfKT0ny0YG&U{HaACp$E)s1Wf1G%ZDEiHaS1J^SbX zR3SQwHm_49<++dBlt_>JgW{_$Pm8DCsG9H|G6A2)--uX)Jb1w1_f#sE5Y)P8ogLsiM3*gV1uSrlY_Ipr#{=+`>%~Ev9bKETU$9pK6a!;bfhW zourUw{80~yPx~TI5=WkOOP=-e-h#<{Z1Ns1!+zP4>-Iyx!qe4U+6a$Q5)#~d^pcd- zZ|brUUYxY$?a_?l8eH#G*O_G_d`;Gj=u&%8*HdwylYbvha4nAZiyyN%+Lz3^G{tjx zHx5qu?{nr#D^k_^BtbIv_SbOz@R?_?7?pdzSn5rI>P<;0@gfSieJbx}m8ddifdUX_ zB2#<^>5{7g>|?$1>+6+oK?p;_X39@R%`}Sji3xR^)pc#*pHz>up!A-K6b-?L2|>sb zMPkJk`m3%(Z_M$(V$mD(RQ-|P(46Vs#R9)31S&p5Cq^{nGoHdFGCYEJ2+Q^-k}{ml z)Tq43ySP7F3tFcG8<(|Vy11SHXd>Bfd43#(k=~3ZBY$>7gPmJx8o$>X#s|e-D^#Yy zUiU&hp=JD%-Oy}U@r!mh zv$tw0;-bn;r9edghgawESBfEOd2cQH+o>BE&{0Sc9dfV0;){XfkfTflSk{>@j<`#AlM@Z$yhgJ8?k(95BYbXfFt z03(hlei1D8@(ywPG7oWl!6BZBPFEY^_;L+#{F)7MJLM@MM)iyJA%1r2A(oxO2_5CU zG0HF=!*21_k8(A}F`D?aw8tce{_K~Z_=Vp(`|Q8}zr4S>rfHo+FTLj<{L2si`LF-l zFP;9IYZSZ0l7zV8siqD$%}yfTRMv%E+Z{ytH1<#_gu}l`wPwb$)SfELc&L&qRD;8L z)X7?xxBH=04$!ICsnwY~Lz>>Duro3J%i?-Bl5-c`54SV9yfb#*jYc(Nw>Mvd|5E3x z?(E!zeYieh-+$>77P=FIg8ta*tm!4edp_4Rx~y&Ss3txBxeJ{NNYs&Oe zGQa@LyP1cBw8N~d$R7LL>sDklR%CS}RSQ>o{&O?-WHh9F66wQ+J=wCgCtEQ~)}Cw? z_GCNtcB?yOPqxbp8}?*t4STY5GS2GuWGNA`g5m_sJz?Gf=PQ_z4fyi(yPzLJvdI9! za%_z0mBW}UT9ZK>s4-a|#$+_^GSP*N$&&3DlOt+{hcGhN$$yR7gHk7CJv!mTof-@#d%nq|!GbY>FFecNm57yZKhbNAtk#i!c8I!H6 zF&7?Z7+#$*YN$&%8TjHM@~ zF&Rzzh7Dt~-RSToQN`5=W3qKzpRGG%G9|v+Ye`+h(wIy~V#=6oXli3KERD%_*Nn;5 z&(iX1p~}Mo)=|K^H43w~ibLC4dAaOfmd0e$Uy=sHsV_@ovf*4~vfXuKvP3x18k0p^ z8Iwh?oiSN-%*dRWYfOf~rwQzF64>K(O=(P))Qrg>Z326%ySXu0G;K_lOdFHs^Nh(N zH6}~cm@I$YnCybaWHiRgtnF1-7KABdtSyYMG9B!o`K2|!O4ax(oi@Ju#OGXyt>}dF z-H2Yb??&>?^xcRq+IM5NIdgnB!pe6es`+j}x2^kbER;G|KdAd|3=H92yQaUH?*7{jd{H=?=U%s6fg zOUI4q;vF}7rQ^mxdBxHFAtrZkb!u`Nu!!95o)(r-hQ?okL>? zrVl2?PSu!UZwnAk>#0%MB+@6rOFzCEWT!)W{S#K#KN`a@vUi&{kamQqK}4C*SQA(I zzu?oAT3GKiLRkYBA{`MhfurBy&=apbbIw2!v_lKn-GR#3kwno>9)sOrHi_swMXD zaAYn2`FPyN<1y1;8~0>0AQbiv5Q4&0k+A5(3J-J8Q44Ke$L$&<3<$FFZ3h7A{dTyc%(sOZE+u$6sc%Qs4y!$ zR4ByN%8K|115Etzq#uM4&^Z>OqFOB7U$@L`UlVLGW1w#8Z~^w5LVE0I*%Oq^ysk ztmiyMV{qmCP@^2-DXCHmIByI1EDMOGfJafl(^5czH6IPyw4iv?f)G8fQJ54l5*lDy zNVfJB0pJl@JOSfe0*F6oECT{W^o+z6x>~v;Ei&Xh8I}k^wsp`IDYwTNELz;nbd=>_ zcFR%sl_`joz+ev@#3{Bz-^eXxW9VbXE}3x2!e74}`rh==_Xr`+cJ)grUEPIo3UNEq z;XdIU5!^*eXy8@L=u#r@QLgeo>DT9kiP@(v=K)ZZC!BCK<`?eQ=))y3dg|kwsaR5* z&W`D_07UPKfma)&tN?Przb(0yZIXP5z&JSnF+! zGqMO#k~)rSDE5SspJJ>q%H<3rn8=_0H576k3UHqR9(&YI>3oS<7*`Up@lEl5e_|(P zj8X2{OtymJJYUP0826^5LR*`H%82G9{2U&KJ028LdbJlX15TxdIBzz1Ne1|!7=?kB zeWBftC@uRS2bk)7_3GZKSD&q3ot}F2l)j45v`>=rklw|}2%DMKO{18cGv=NE3vyp- z9(82ab5XVn0a&#PF5b1JbzLotI&EF;Yn&G{WM9T`POaIoRl#1YYRr%qf91Siyrp>T zQ`Um1nYlnrh$(L10BZLd($NV76(+q(EcBeLTu|wEL9x)qCk?sT_>y9wTZ)BlDHghQ zvCyrHg{~C~-G*405(idJ1YnDv6%3xX|FR1PudM!CDHuv-;T-2sZv=Zpwj)%!hG|-t zMH8BoETJK6RLYenz~WM_JZY-hZ;yy?(09A}Zv-*{de^`-HnxgYZ1McLYN!F5T?@T> zOS@R80-ZLW!t~L(AFH5Y;JuF5PCop7AY`0dn zR*bLoy#8Rfmu5X*G=R9(PCDJ)DGcHx-IgZ0&%qXIWdgXRkn#bT+9BZ?u^ost7VGLH ze<~C)5yJh9oR$;!AjG{L?dN-JIL}YI{Yt7`E;%r1zzi-R*tG)`PwjXdOI#a0v6vypZbBt+L6 z&lVbuJ6Q3%8myX(*B`i7WzT4XDJ^5pnbssWpiqQx zLc&^9lC>pVEJ$t8YJ&xkbvKMXl-c_>;PdR9TVrf%^t8qpu_kJSC7(}R%rwnV)kv3} z4FnYPv^w&>R=1kY^i25f0zD&0*_NG?GUjz|CDpQeTIq1itIv#qqw^1G$fw*oU3E-i zg9a$T-YsD})qP5I_`cK_Dk5gVZKdn$`A46*HgipIBeA-qhw6T?R!lzvq zK2{>c^Ta{++E&M~l%2_(>aO(Oc=@aArm8OXRZUD(O|(;T@7PnYL`=UvkcLm-oKl9` z^sxx)F{PAtqzBgmPc0NYB6i>paK~CWJ@XvySlqxJOH@cCH))*Uw1zttTOq7Q5Z;Xr z#nV%eUhmkr<4Dn&M+(#_ZyYrc@($vOLXiTQlHHpp+1X8O(5?weSqX$@73;$OHUJnf zQ)BYy!++{D(oekL!g!WXhOsJTI==j;7D7zt4(Y1*B{f3u=(SD=K&_Y?JbwjsaHfDmgF zd+jStxXRmkt^Zc}>l>)cS9;%pJB=&7F(waa;Q)5R;@$OH!+Np5$zsDsv9fPFjAC(7 z>*1cYi$C3wZYCp!qeO}<;aal%%TpvhR;U;M+bn+2D86^Ce+!Bqilp+e=@{V84!|x# z4v!W};_MkOHVL-a?8#!is^4W*f4x!FU%S>nimLXGmQdbRqapr$=V+N#Z2*>5{$4*? zaW(E6uQsb#tyl4RR`FepD&BOhe;cYeFxrU%t{v^dpM#?{7JW5rF@U8%+KmDRFqeB8 zrgUW)GNkg)XPaq%-QhCS(!L96&oam5kvetyg*ghls=tc4llEIZ8%Q0pNCAyWG$V-V*|Ewwqftf0dY zP%f$>TtE;Ukt+mi^9scL?TQ)|@)!nb5L2n7WZM3|w!g#kQHJJKImA{W0g4(U@o4~I ze==e~N2wl{F1B8&vP21xT1hjZ$h&=vgr}6Fi4?>ku3l4nf$J4mi{+mU&%4I6<|E#; zu+pYx+SI<1Is&P?C8@hLQp2hP=-(n`l+dB;P=m~oB{QUtqjrc8axjlC2e$pQwA-PyYms(c z&@Okh>zf?38#MS*i1Z$7NCO&jov|wb+OI-*4@Q6$hgxxN7Y3d3c1=)XW}6dpnO#{l z!-|;8ASPwkq7pNy5p!s7pXG6x#N0t*?oeVbI$}x(sioA32^jS$VlGOyVS|`MA>Xh` zK4}LMqKbUWj(jY_ns)fk5GJ*@uFSyN`LS!oVRYS0neCL?5;Hq0;qfK!R z`ldS0sfBU&s^MN19`Nk_2O`nW9bOP!3$I2tRS9#|SjNgM*9SJR1FI~SBB`yzx@eX; zri;xnO_hD36eCKs<`t?DT#!>LC(2dtZqAT>6ANVN%$k=m7lxqEVo9IHiazpdjU{!> zF8n=W3u8F)HME$EeOHMkTY_arrCq|rc2dBsdeN+NQqb;p*>vl&d5UtF?Q2t$LjGz4 z%1I&3#T>XvzF%yRP#dJvWf>$Knl+MeI6E!S@Z#mOzv|~-QZS0=8SEwt z!}#1Uc{84!N3UUSB6)g~wb?OHVuq_BY1 z-0mZ5#l0{!BdeK~v|LBdLVJAp+!Q2QWFgU{iGcGs$$i&Lp2hR{tk(qeIP9F2Z_xn@ zu~Y|jH@VP)dBDTf`0C({Ta{2DGNM@*Dk<%)W8z)={GPzphEWbqfaMsSp!6!g16Hrk z|N41V6c4b#k>ti|gV4x2>HUM@OvDQ_DnPt?W?r zw?sJmrhmvkHSX^ZH{|<-v74(T8tOA{1S7Ra42MuQ>!h~yK0D_52gn|$#vOG7q%*iZ zTRl0BDoaJ#WNFMgj`fG3P<5^$W=)AiMdPjFVILQu@jV8CNbBX$EO@U zvTKBCt_}GuD~j$=t5SKovw)XeaKc6-e@Vl?hnB|)%oOtJB-dwK&gZ}v-#KBD9+Ds^ zly2<3zcG%uf4(Bvrvac202c+i#dX*iJ7g5o->ko*gx7`wYa@?wh8i14+cm^*BA~T&QF_?79jLPa zD)_KJ3LC_Dc!n4cTVjMa%u++!7}jVJR*bRF7Wq{t|1b?a#|7V0JK4EHxT~kAKwt*4 z0?w1#le~w|A)b&-HK?uqZS&?#wMaZ%Ow_dY@3k&YpA092G>NA!tuLw@! zcn%Nu`TI*oqciJ9aFU1Rv zWYhhTbNPD$t0+OY+j8Mh$n{W1%fnD_wR~De*6;TDdr&ipT_|#4nYS zWICfNCE2WIHLsqUX5|7^t6R1%VJ+q1+qH<>^w&{s$}_wa2y-BDZ3MTE8Ld#BZX1QE z702PEIE_09_z^Rv5Bzz#{1fyO*6*-Bhu?LiU?rysX(DT$u%lC=I~LkDWtnK~O^&hh ze-gSXfu}GjEDysr3n-_z+piHBai)2N?peNVrNQX&!q})d>&9si8C7NU0(L7S_EBc{i=o~|e_H9JVya3V)eINVSaUq_g zZQa;E2B58XnTVnPLY{x6wl}1RL*+8+?k)LsOcV*ufX!R>24rKTv4i%=YKB!vUYv_} z1=e#jv$b4?F?G&XYKy^Wn*| zz*Osim{3aOxFKGIGw>4QXmBiW4z|mzGG4`+*~ws{K93hp9v`=rKTqTE0mF?f$cj&P zLYXw8Y0^PBfJ5>wI3%yhTv$FOa&wtpr1FS>AaI3UHfv@VU14{@DRh_g7%rkAT)fxe z3X4yJvz)#O#)vnEW(Wsip&*=c=}Nhz(PL3H{DMVYAMxxggB00OX?g|XLawq)u{e22C+zGNT`cmd-DV@}AYc!U=)b1u^hc=_zPaVm^Q3r5VhO@ko;**dcv zhz$=}1UB5Jb$py{5)g@n+DJ$U+I)QMR}OXExej$22Ktz6liJ7LC10qlq!a=0fapZR zLGZFmH9Qg~p=6twR2@ZqHwk?T67>Rx1?UJKOukhZ6L(c23%=9kOQ^Pm^#UGPr(f9t+aa?FU?na$_To$iqw)eC=wMHMX?&^@eH9gb zgzuy2HXP}WSt}1;U4SXux>(BS0-V%cfWh=h!v#2Mx&S8yBXkDBZL-EhO&4Gdr;06A z!v#2j3vfag;H2&XoT&?N;#`2Eh6`{rvVCM-fbn0}Z~=~R<%}6H-5jhgwK7e{W1Y;p z0C&{|*oUzP=7_og`|1L$YQ<8Z=1J=Ro13LMj=#%h31N}p01RP(YXf!iO{rvLYNzSL z$#+>PFE7mUw3F|0<>ZSy>d-7zLSoFdwYWQn6h!zIFFasM|(Oci-P% z_IuWbKbm&-b>=`30U6_~{O^Y*dqTFWUnY72bk5LjPh}lQRLw$2YSXnY1M0q$KqX34 z1?xhsMXWfJq7EJpsY@@@j+tytrj>V-Ff&|wQ|r>3>c$E7yN{km&@1#eU_5z5J5WDE zgtJ7&G(yXNGZ=T_J@NfgG0&pAIMjIum`e@Wcr4QJuI*L_ychaUCIlU8S&LVzB~jPH zr1Gnc30{H=S7AJ;?~NAVf~ZUC!qGKDNf~@X2eJ(}8gG0L+?QbmhKucJ)Gxl`jRr*w zI0|)zvfuw;{d*ss+S{Q!$T}pPu8}2dGxSCvs{ydgz)--59>I`^^>Fy zB#EYcG3;HwpI9KY$uu3XYY+4ez-{WVM|y{;H5VSIER(}>Og3fV3F})`=Z_dQjk|QJ zg&62K|EgrdHt?u1w$7{H4=Sh$yhtoISk@;geBcUiG)0&hg$MB4LZ~$}(84>7!aKBp zm%_<*G4{fGS{LXhJuvymclZjHIXfnxRsB`|+o7$O=?SQksVi(pUG4+r*PwER4fF+_ zyQH5cAW1uVbZ9bu3+V$Jf4ZSb7Hu!IEyluQ>^C76gF+(Uvi5%JGxok?x)Y+v$Wv%@ zQEN*uoyP?KKEY$RRDF{4B#?wkU;*|0tjiUWrF-$MHBCLm7s->i^l#?!%V_17}s(cYN zUbxh-nVlG8KIQAU>)c)=xV`2X!#>A&3f&XTY7~4mA^Kb~oDf4U|H%OQ!1}lgPT)u< z7}guCu?G=!+(an;$b;KBMmDf1-(bp%Ja}`Xz?pIvF8EcvwsrcnbR-fPp@M-n?36pM zXPxROn5x?9N9vNi z#nh%hU~Otoea5K`2V~4XJcTyb_NVsLoYuL{y<-QHJ5&Evw!*($liOFWbd|rRlRK*> z_ts3KjL_vv7-VvUV{4Zc!oH&`O0HWdobzg@bY9K!rvlmebPy^nQQaj`-NmEOSM@T{ z13jmyV(U4GZ}TD^eBYS!>W-TtqbfMVPLMv83t z;8KvD4)4|TSlC$yg@0r7oYrZ(^0puPUcjgbveD1Dta^$YuEE`{QcUn0EG)Q7L8OfL zhw4ljs9Cr29>F&)+6IoK*zth{b&a${A41o{=fqCwPR1?VIGX6l8e)bV@<%=Se;-(Q z@<;Tn07>9T9CDyNeG|MT@DAb7cyRXAxPR_$*+@KbYTWy7T(c>kW6y*g@geh|6w#*K{Fmbv;{a7_#N#4Nl&4I(4oI8PUzS_(hE~}lj{>1QwiNx zLYM2C=UiP#=q~q}ZNQc4S$PW*gck=LsYMa)LU!J_{v{qa+qR#UwiOw%^@8vK{m>!V z@dLpC*S3miZwM&B!diH4lsH!1m&I1;Ni998rDtVHfksrgTd#O?(5Zz#EfUsxuS-9H zR@3Fx3fZ`OjJE~gRV(bq=`kE>1Y~Wf0hYDlt4j{2W+Vt@Fq31$wV{&w01RiOh=4mcQXL2D#_J4h64r8Kn(Uc!f9jaX5p?WxK6JXXNYDdISwKQ&%*ZrA3*91nt)^m24o!>OK zWUwDJiDN``)fa7HlLXiOhae8S+_3A}j&=7Gx1LzfxfAG`R zFr}r{%c^tFt-M7<{b(~S2NW?F)&tsp7wZ8>z%ebMb`b$dCjF1Xd90;JOMnZPqG8+T z!RRR)O!qXb_td}CX2jcTMo=}QoR~9<<_$V4?NZs7{}1eP+2qHW741xo=LV<712EhG zoHn@VWz-szMZ!M~J!3Nl3Z}^#)yW!M9tQI340Nd@6>V>%{A#2S?D$8AddT>YFRJ<; zPaTD6g^Y+mG7s}f{yVULguk78VX7BVbt;+EP9-rSd$7{^#pEP6;}l|P z{qcF)sfdh#$)1m`WB#+js5{D9H3TKd_;pPBm1XShedc#f7qDC8zpDsL|a z)&u43qYlmTkOx)pK+MNp93}qrC6*X8O62{;M>Z>JpjBOU;+ba)+P_-(t3a~6*W0`R#Hq(TykkV1tWmq#QyMrZPsb( z5~#qhRq)*W3Z9!^!E-Ye+^!XXDyLHrrfZ&~lBt@;j`;_a zVhO@uT8e2wJ(jXcLS!kAbcjdTab??*yJgw6lKlg4N2JAvjD;QsVTVCK;~pp9-U(H_ z`bR^!V3ssf^6(;Qf3T;bo?q-y4F*c3?GeMgUy4BCB1kCF^_23UI3$*?-Z{lQEXQ^Q==F*VL*C36S* zb~|SkAuiBRoGOGtR>zwqS?j{wYY1~Mouyi&RLka5E&AqDEqg7fmf4`!+oM|0pjt48 zYOnL!g?Y^qLIa?wG$<^=qK2@nP5Os?1$OwvQm}A3gE{4SuMueiMkvWeKIP)Y%JJqR_EO~$>-=n|*E(TQU~LYAjST$zOa?KC0MC(kUxS;jNN z{h^UROIYeWvtxe(eQ3(X%M(-cERj!?d*7$d{Y_(u9XIXJI%sb=7M40 zg63fX*5+_k#t;U93$Xdqmz517Uh+G$v-ag0zFgyXW)&}YRbS#ee8U&WfKTxVgFxn7 zph4im*>mH;R$)OFE-@^~LS^%_a7kf7vMs`b3}AjUm}L3F+sd7VuE;P zsx2-ch zD`Z$UJG5!gcFw{zqVDG4%QU2gq43o4aT}tHW~%*$r_VryN~LrTO#2vJdj^=7G^U}( z+2&PqZ%b#1WX2d7CONHn#>lhI63N9mODs%zO3>e7QSCM`=jS>}gw{!7(dtBWuR#0) z=OmFqCtB15>O>iIq9skBPLx3>8ft=dl1S7^Vo{wWmefgNh<6!uB3r(7l1T6;gHB}A zt&>E8KN)l)n{J&X68y=a6WMg@Bq8Z->J+(EA^I|6O(z4BRXRlO=rX9&1uhEoCm3wv zPY|9MtK*Ask4T1W#-D(K>5}~kx))28g(9R2#e#LA=);BL*=x=}nwH;T*Cu}KE5e`oP*7p>gsbcuWls>|hB9ZEWRazchiMYejm8_&Vx(abvCAHzO3h^#> z;OHtetH_zt|An5#G^fG|R$M-{OlZ%tLY`#}@t0>;InJ&^o@MQ<++uN-wT3_5sqwly zZQ6~@yCwS?1m61D@tS;7o@K2g!!k1LGQ+dX1+hBRJodPXCsI3QBq5TAX5GE4AA}9{ zI~+olU%KG9sCXw{u2o+$urK5+UN8o(e2Pb$WijWF@^vWkbrE(-Nig5JwG0>;m-uqgKsPwi)O{ny?B~75-7OUPCt8;6N`d}2g)X>{vtGC5ddRuJuws=Z!i>=-kPw8#3 z)!X7qZ`;&4G_LDy10_y8=xgQ*G<%0=jNa+&M}e)2#dvCREvb$ae#BB zcjqW9jTGK48qb>xpULCULDqw7fuvy_EpwbL9`t}7WGr^yH39I{&cAS;b{I@}hyJ;p zsBZ|mbf-48_{7J~`^6jc|BhF72P_^_K8-Dv!{7(+^G^mN9~OhYqW{1y7~0<3iSMso zrM%;O#|;ir@}02fyWGwGoNIRb5}J*RS{NE$6TFkQ?MGpRP4r737tR6NJ2vSD9&nV2 z!}mc2`s#A$=3o|ahswR)4ZTz`kv1GNfMtZSvPu30ALIUZ1**DT^p@}@LhH(x2iSf? zpseSaZRmmkP=My z=EUvgx6cMjvnP1aMYOBiYiL)Ml}q4dJ)7Yj3da>yaoSM*1`Ba?`zfVci_U3!`32W1 z*iCkoTe?)py|>xu6>Z%dKw?G!@2cPjqYBV)pO&{D4vi$%y^@(h&eLz=2#a;B9aGSTNIe5hHe>5O`B*xmR zM5#-|#NHr!D4q`NhxAo3*P3uY>U`MN8~_&q;uHkV~r#pbTq2F@+|Kd1L@dfBpA zI!%)vmdQ|jn%Kp@jQXd&nfdl8EPXR)L?2mvVvN&$Fl$O5di@mW^;0080(Eh!)1P-3 z)VxN*MT6{S=G`Q{iUXj=$SmfJ%iWJdz$Axd3oM5*y6k=Z=ClGn&&+OJ?|O3 ze%^Cw=RJL0Di#{&Jw3Capq2}Bk9`(+?6Y{8kA3pmu@6ulON*Ytx9LgGpgig6ZGO_T zfTNxINlydWt9jDX-}IP1Zp@rTagRY za8d&`L}|0NQR5r~-Kq{UoQ1xoCyfJ+XMC9G2Zi0QJoFFM&yV{v!lSosK!oQsAOgUu z<=0mME^!~;Kk2a8?LO^Oz5-{<*5eCybNZx)2&tfv(e(WHh>re!7`*>hsB$-sd#(uY z02Iy@;X7cDccu4s4WesVp?Ht9PBy(iVm-`zo{hUhrwC4@y647W?OcnKEU^sp#m@_wg5pd3lOHQ+HF_UR;Ul7<;1LaY z%*TNYPNUE@M~A0AG);%Z#l-MQhbNT|PnL9erbdSXNG)*@D0e^WYiO6}{QRH$ZphU7 z54-KyZaQVTMPFO8LGpD1Jnw7IzF4d41$}-6&(G=ebMT~pR-d26GiST8D`Cpcb~|C4XK}7v!#o?Rg1ApN-pNb9y#xPgG8R4#3H| z71iRS;9Jad^Lk!R9*OP`@4%6v z&S#y>aB067k+kJhv=cD26VQpIXSN}d(xxaT0dH4Q))%kaHw*W3``ks=#Y(VimaJkt z2nmZF6PzIa_P^x`A^~Oa`>FDG!r$l1-}2*0`y&8s_XixOSp^XR5;COV@ zJ>)YuFc=0NL>=`Y>Z%7(TW9xu0ZxTJmiyh)dJg2dTN;s0@_zS`wXwp{%-r7G2thSS zL(yFv^ufIQxZ>|k`rRPxMqb=W+J2YuXY^2s1xMrXrd}5@Z1fZgX&C|`O4;^k$|kWo zhI=5w0>4gf>a`Wo$|tN<{`2t-Ri;ccWj85;6+yC+GSf^u5Er~v`#82AN6Z=%R|1$b zT9`rzS&uIoSjv`5!7&(!W1JArti5zgB=rgdP zQl&!*I>4JTVqBBggbtCTLkDzF${m74${JiCA`44hIV+mIZ4F zQ~BSqJnu6^i@Gq}q`_|8&X)`sSS%!6XnFBx@dR&lfSH|Id4#j#P(}5jO3Nvc>y*eb zH6s8A&CI93SfEDKk7&2r1U!Y@PNUa1KziY#Ewo63@U-I-mubZ%G!~!GbYxm0S>~s# zcpYP%M=e@dr;KJ?oBWoD7W+=&Ry4{@z}Pd2IfHmEh%2maa|BTep-t+AWEa5Ab;&{# z;350Zn6vqxh8B}>oq#U{3t-SRc{7+JE<7hLyw}CW>*C^DFD^iOPWnU<+!6#84r&G& z^`$h|-wDqXwd7qa@x{K@E~8lmjPMOnI6~8d`ALYK?$z=~ce?u|J=4pF^c+k^_Nd}%w2f(DMzNkf z6+ix@RA|cGuI$-at_dEa$GuYFqgv&CsPb`r{xY5))n_wd$UZ!-PZ*++ z?a@Z&ANMi**B|ZGw%H*~h>(7Gl-5tUW#DoiB}=brN85>w--X88Gio;5aA&Kz%aa}^ zCoZ`>=m}BXdA+}Kv{vQ6M(ehvwIQkRtM&V^cBdkBh!}%oj_#vY^Owg*?3qTZI@7>% z1M4Kw|7FK$PXy!Iv3uF4{np$E`L6ufK^a05myPlRIzb!cAqMJ$q!{8YxAm`JQJ|LrUjy~?F?G41NZGRb(?o+*C+SE`s!$|0P~01dM3Z6m6Bi zcG2VJfX)a#donzEipZ0880wLhr66Muo*1`J=XcCg>e7rtrK6ooocnCv^;6-5TY5@e zy<-$V;m4NpW6Qosco|T!qm0CyiWnBdmPGKxMr&o+Isc0mgxS=~H?I8JK?18V^T@zJ z&{e6>L=xD*8I%_lU*Y`rxYHi>iqHP>d1+P=jsQi=knD}g$!jm($lIW&;J1CcENy5b z_Nctxz6jY;TC03+S^4Zl$oVZr2wD2-5kJ~DqKx0847ni-tU^K}$e^`=?46UW>A6v& zrX$jYp;{g0YIRr!a`D~yK@ZKhOZENI1N&v;lfvRHw%FGM9ZevQpVzR3Ui#6#-<=KX z(mX$?EO{Xg%V4nFvA3Y`Yp~cB*HNNECN!L&cGyxI6g7P8X1%m-5!iLGksWIhm=T#) zHX`SMFc29Fc;8mc`j)+(jT9`;_?1y?1n45q_Kvo?z8bNniiVz#Ge$sxt2oap8r`{Z zZQS9x#DoG1V3?wcwO!L?NwbDjBXx$9v4c6SLaOHgA>y$sdeSnz60lQrJPmf!gBy=* z2uJPkdW}cJFnz$4ZYdb;sflumf^h~66EX&lN9)KMd7>nnOyP*2v>+MD&9*6d)|FVR zrln}sYO>QRXwG*6NXSY4afBqH)GkOmYWE0QfE^mpo(z&A7`Rv%m*AL5Zsqy^D&vm; z0hrM87HGZ$J*Gq0+@9$Y%pBIO3{Rqi6A`^CaSErirq+QGV)q#7=a>>SbAbOMccX79 z(GkU@c=)F*cCKwbLN)~VU^~-OEL-X35w@j6ChypE;qR6+6402T<2J|ah90n?d#0`E zsJ$X0@c@vTfR>&HXP^+kwC`wm8RgVoOJjHNzLgQ1Wz38BKm2JQ!yX-q_RIKTpo-@u zE&o7tIosX3=yt;j@gf_maWoJhT5(#ja2&(0kg+m2DZ}Fk*)$pVT$GTm#$)IaP26rg z6PgycFwdpYCrrXMss#-7#Bi^lAX((_J@!ok3*uh&LG>ov^czB`BPRn_ow8eP+l{IP z-DV3$2=2shs`wv)2FL<;J50`uEYB-xY%f0$>P(RRWJ(b8iCT3KxF(x3RZxUl?`5;| zBvT%@^CWZg#J|8i$=p22be^PJa940K+!bB?tO#(nRZfkN0fhA|xd8GzKhJ`TWWh2r zglyTn6s{j1$hO;eHk-7Npg)V^;oV73i*ZD=b((O}0!WQF)#mwGPg3(IWYxj?eA^}) zaUXWgdZx%dEfXVR8CQodadr5jtP%%JFPj#;3y8(nHZhk0df7mogc;})hu(bexO2{Q zaH*lghqzXy1J2Nto-CQ6Ckw2Fjhc55jn;XxShEkKe^z<>l1=C%0D6}GH=(;h%%;6q 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[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 From 7d495c08977b617058a93a814623cff0d88e541b Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Fri, 5 Jul 2024 08:18:29 +0000 Subject: [PATCH 06/23] clarify SystemApi description --- rs/interfaces/src/execution_environment.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rs/interfaces/src/execution_environment.rs b/rs/interfaces/src/execution_environment.rs index 60e7d958598..f68ba5fd3cf 100644 --- a/rs/interfaces/src/execution_environment.rs +++ b/rs/interfaces/src/execution_environment.rs @@ -810,6 +810,9 @@ pub trait SystemApi { /// canister invokes `ic0.call_new` or returns without invoking /// `ic0.call_perform`). /// + /// The number of cycles added to the call will be `<= amount` and will + /// not put the canister's cycles balance below the freezing limit. + /// /// This system call also copies the actual amount of cycles that were moved /// onto the call represented by a 128-bit value starting at the location /// `dst` in the canister memory. From 859f07130028335a33cdcb2f303e459f3e320b21 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Fri, 5 Jul 2024 08:19:44 +0000 Subject: [PATCH 07/23] rm support from dfn_core --- rs/rust_canisters/dfn_core/src/api.rs | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/rs/rust_canisters/dfn_core/src/api.rs b/rs/rust_canisters/dfn_core/src/api.rs index 0da93495b6b..6c2a333874b 100644 --- a/rs/rust_canisters/dfn_core/src/api.rs +++ b/rs/rust_canisters/dfn_core/src/api.rs @@ -57,7 +57,6 @@ pub mod ic0 { pub fn call_on_cleanup(fun: usize, env: u32); pub fn call_cycles_add(amount: u64); pub fn call_cycles_add128(amount_high: u64, amount_low: u64); - pub fn call_cycles_add128_up_to(amount_high: u64, amount_low: u64, dst: i32); pub fn call_perform() -> i32; pub fn stable_size() -> u32; pub fn stable_grow(additional_pages: u32) -> i32; @@ -181,10 +180,6 @@ pub mod ic0 { wrong_arch("call_cycles_add128") } - pub unsafe fn call_cycles_add128_up_to(_amount_high: u64, _amount_low: u64, _dst: i32) { - wrong_arch("call_cycles_add128_up_to") - } - pub unsafe fn call_perform() -> i32 { wrong_arch("call_perform") } @@ -648,15 +643,6 @@ pub fn call_cycles_add128(amount_high: u64, amount_low: u64) { } } -pub fn call_cycles_add128_up_to(amount_high: u64, amount_low: u64) -> u128 { - let size = 16; - let mut buf = vec![0u8; size]; - unsafe { - ic0::call_cycles_add128_up_to(amount_high, amount_low, buf.as_mut_ptr() as i32); - } - u128::from_le_bytes(buf.try_into().unwrap()) -} - /// Safe wrapper around an unsafe function pub fn arg_size() -> u32 { unsafe { ic0::msg_arg_data_size() } From e376b8867543e4bcd20a75a8c559c60096981e91 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Fri, 5 Jul 2024 08:20:58 +0000 Subject: [PATCH 08/23] fix universal canister --- rs/universal_canister/lib/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rs/universal_canister/lib/src/lib.rs b/rs/universal_canister/lib/src/lib.rs index 07fd4495363..e353a1480d0 100644 --- a/rs/universal_canister/lib/src/lib.rs +++ b/rs/universal_canister/lib/src/lib.rs @@ -361,14 +361,14 @@ impl PayloadBuilder { pub fn call_cycles_add128(mut self, high_amount: u64, low_amount: u64) -> Self { self = self.push_int64(high_amount); self = self.push_int64(low_amount); - self.0.push(Ops::CallCyclesAdd128UpTo as u8); + self.0.push(Ops::CallCyclesAdd128 as u8); self } pub fn call_cycles_add128_up_to(mut self, high_amount: u64, low_amount: u64) -> Self { self = self.push_int64(high_amount); self = self.push_int64(low_amount); - self.0.push(Ops::CallCyclesAdd128 as u8); + self.0.push(Ops::CallCyclesAdd128UpTo as u8); self } From 671ededb230a8d3c0ab89bb35aee3290c53d4372 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Fri, 5 Jul 2024 08:24:09 +0000 Subject: [PATCH 09/23] nit --- rs/cycles_account_manager/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rs/cycles_account_manager/src/lib.rs b/rs/cycles_account_manager/src/lib.rs index 7af170e87c5..cc804455061 100644 --- a/rs/cycles_account_manager/src/lib.rs +++ b/rs/cycles_account_manager/src/lib.rs @@ -415,7 +415,7 @@ impl CyclesAccountManager { reserved_balance, ); let available_for_withdrawal = *cycles_balance - threshold; - let withdrawn_cycles = Cycles::min(available_for_withdrawal, cycles); + let withdrawn_cycles = available_for_withdrawal.min(cycles); *cycles_balance -= withdrawn_cycles; withdrawn_cycles } From d565cc42bfefbfb5ed8bda350e26bf1ee611c457 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Fri, 5 Jul 2024 08:44:28 +0000 Subject: [PATCH 10/23] ic0_call_cycles_add_helper supports UpTo version --- rs/system_api/src/lib.rs | 80 ++++++------------ .../src/sandbox_safe_system_state.rs | 84 +++++++++---------- 2 files changed, 67 insertions(+), 97 deletions(-) diff --git a/rs/system_api/src/lib.rs b/rs/system_api/src/lib.rs index 9bf1673cd9e..f46e0478ba2 100644 --- a/rs/system_api/src/lib.rs +++ b/rs/system_api/src/lib.rs @@ -32,7 +32,9 @@ use ic_types::{ }; use ic_utils::deterministic_operations::deterministic_copy_from_slice; use request_in_prep::{into_request, RequestInPrep}; -use sandbox_safe_system_state::{CanisterStatusView, SandboxSafeSystemState, SystemStateChanges}; +use sandbox_safe_system_state::{ + CanisterStatusView, CyclesAmountType, SandboxSafeSystemState, SystemStateChanges, +}; use serde::{Deserialize, Serialize}; use stable_memory::StableMemory; use std::{ @@ -1224,8 +1226,8 @@ impl SystemApiImpl { fn ic0_call_cycles_add_helper( &mut self, method_name: &str, - amount: Cycles, - ) -> HypervisorResult<()> { + amount: CyclesAmountType, + ) -> HypervisorResult { match &mut self.api_type { ApiType::Start { .. } | ApiType::Init { .. } @@ -1260,15 +1262,16 @@ impl SystemApiImpl { ), }), Some(request) => { - self.sandbox_safe_system_state + let amount_withdrawn = self + .sandbox_safe_system_state .withdraw_cycles_for_transfer( self.memory_usage.current_usage, self.memory_usage.current_message_usage, amount, false, // synchronous error => no need to reveal top up balance )?; - request.add_cycles(amount); - Ok(()) + request.add_cycles(amount_withdrawn); + Ok(amount_withdrawn) } } } @@ -2218,13 +2221,20 @@ impl SystemApi for SystemApiImpl { } fn ic0_call_cycles_add(&mut self, amount: u64) -> HypervisorResult<()> { - let result = self.ic0_call_cycles_add_helper("ic0_call_cycles_add", Cycles::from(amount)); + let result = self + .ic0_call_cycles_add_helper( + "ic0_call_cycles_add", + CyclesAmountType::Exact(Cycles::from(amount)), + ) + .map(|_| ()); trace_syscall!(self, CallCyclesAdd, result, amount); result } fn ic0_call_cycles_add128(&mut self, amount: Cycles) -> HypervisorResult<()> { - let result = self.ic0_call_cycles_add_helper("ic0_call_cycles_add128", amount); + let result = self + .ic0_call_cycles_add_helper("ic0_call_cycles_add128", CyclesAmountType::Exact(amount)) + .map(|_| ()); trace_syscall!(self, CallCyclesAdd128, result, amount); result } @@ -2235,54 +2245,14 @@ impl SystemApi for SystemApiImpl { dst: usize, heap: &mut [u8], ) -> HypervisorResult<()> { - let result = match &mut self.api_type { - ApiType::Start { .. } - | ApiType::Init { .. } - | ApiType::ReplicatedQuery { .. } - | ApiType::Cleanup { .. } - | ApiType::PreUpgrade { .. } - | ApiType::NonReplicatedQuery { .. } - | ApiType::InspectMessage { .. } => Err(self.error_for("ic0_call_cycles_add128_up_to")), - ApiType::Update { - outgoing_request, .. - } - | ApiType::SystemTask { - outgoing_request, .. - } - | ApiType::ReplyCallback { - outgoing_request, .. - } - | ApiType::RejectCallback { - outgoing_request, .. - } => { - // Reply and reject callbacks can be executed in non-replicated mode - // iff from within a composite query call. Always disallow in that case. - if self.execution_parameters.execution_mode == ExecutionMode::NonReplicated { - return Err(self.error_for("ic0_call_cycles_add128_up_to")); - } - - match outgoing_request { - None => Err(HypervisorError::ToolchainContractViolation { - error: - "ic0_call_cycles_add128_up_to called when no call is under construction.".to_string() - , - }), - Some(request) => { - let withdrawn_cycles = self.sandbox_safe_system_state - .withdraw_up_to_cycles_for_transfer( - self.memory_usage.current_usage, - self.memory_usage.current_message_usage, - amount, - ); - request.add_cycles(withdrawn_cycles); - copy_cycles_to_heap(withdrawn_cycles, dst, heap, "ic0_call_cycles_add128_up_to")?; - Ok(()) - } - } - } - }; + let result = self.ic0_call_cycles_add_helper( + "ic0_call_cycles_add128_up_to", + CyclesAmountType::UpTo(amount), + ); trace_syscall!(self, CallCyclesAdd128UpTo, result, amount); - result + let withdrawn_cycles = result?; + copy_cycles_to_heap(withdrawn_cycles, dst, heap, "ic0_call_cycles_add128_up_to")?; + Ok(()) } // Note that if this function returns an error, then the canister will be diff --git a/rs/system_api/src/sandbox_safe_system_state.rs b/rs/system_api/src/sandbox_safe_system_state.rs index 58f4ccb771e..2d00de1d633 100644 --- a/rs/system_api/src/sandbox_safe_system_state.rs +++ b/rs/system_api/src/sandbox_safe_system_state.rs @@ -543,6 +543,14 @@ impl SystemStateChanges { } } +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum CyclesAmountType { + /// Use exactly this many cycles or fail. + Exact(Cycles), + /// Use as many cycles as possible, up to this limit. + UpTo(Cycles), +} + /// A version of the `SystemState` that can be used in a sandboxed process. /// Changes are separately tracked so that we can verify the changes are valid /// before applying them to the actual system state. @@ -933,50 +941,42 @@ impl SandboxSafeSystemState { &mut self, canister_current_memory_usage: NumBytes, canister_current_message_memory_usage: NumBytes, - amount: Cycles, + amount: CyclesAmountType, reveal_top_up: bool, - ) -> HypervisorResult<()> { - let mut new_balance = self.cycles_balance(); - let result = self - .cycles_account_manager - .withdraw_cycles_for_transfer( - self.canister_id, - self.freeze_threshold, - self.memory_allocation, - canister_current_memory_usage, - canister_current_message_memory_usage, - self.compute_allocation, - &mut new_balance, - amount, - self.subnet_size, - self.reserved_balance(), - reveal_top_up, - ) - .map_err(HypervisorError::InsufficientCyclesBalance); - self.update_balance_change(new_balance); - result - } - - pub(super) fn withdraw_up_to_cycles_for_transfer( - &mut self, - canister_current_memory_usage: NumBytes, - canister_current_message_memory_usage: NumBytes, - amount: Cycles, - ) -> Cycles { + ) -> HypervisorResult { let mut new_balance = self.cycles_balance(); - let result = self - .cycles_account_manager - .withdraw_up_to_cycles_for_transfer( - self.freeze_threshold, - self.memory_allocation, - canister_current_memory_usage, - canister_current_message_memory_usage, - self.compute_allocation, - &mut new_balance, - amount, - self.subnet_size, - self.reserved_balance(), - ); + let result = match amount { + CyclesAmountType::Exact(amount) => self + .cycles_account_manager + .withdraw_cycles_for_transfer( + self.canister_id, + self.freeze_threshold, + self.memory_allocation, + canister_current_memory_usage, + canister_current_message_memory_usage, + self.compute_allocation, + &mut new_balance, + amount, + self.subnet_size, + self.reserved_balance(), + reveal_top_up, + ) + .map(|()| amount) + .map_err(HypervisorError::InsufficientCyclesBalance), + CyclesAmountType::UpTo(amount) => Ok(self + .cycles_account_manager + .withdraw_up_to_cycles_for_transfer( + self.freeze_threshold, + self.memory_allocation, + canister_current_memory_usage, + canister_current_message_memory_usage, + self.compute_allocation, + &mut new_balance, + amount, + self.subnet_size, + self.reserved_balance(), + )), + }; self.update_balance_change(new_balance); result } From 267ab2144067a3ebc918e9f69ed25dc62e3109ac Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Fri, 5 Jul 2024 09:55:14 +0000 Subject: [PATCH 11/23] add test for cycles_account_manager --- rs/cycles_account_manager/src/lib.rs | 7 +++ .../tests/cycles_account_manager.rs | 61 +++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/rs/cycles_account_manager/src/lib.rs b/rs/cycles_account_manager/src/lib.rs index cc804455061..86a7b9d3216 100644 --- a/rs/cycles_account_manager/src/lib.rs +++ b/rs/cycles_account_manager/src/lib.rs @@ -392,6 +392,13 @@ impl CyclesAccountManager { reveal_top_up, ) } + + /// Withdraws up to `cycles` worth of cycles from the canister's balance + /// without putting the canister below its freezing threshold. + /// + /// NOTE: This method is intended for use in inter-canister transfers. + /// It doesn't report these cycles as consumed. To withdraw cycles + /// and have them reported as consumed, use `consume_cycles`. #[allow(clippy::too_many_arguments)] pub fn withdraw_up_to_cycles_for_transfer( &self, diff --git a/rs/cycles_account_manager/tests/cycles_account_manager.rs b/rs/cycles_account_manager/tests/cycles_account_manager.rs index 7908b7a489d..fb01a8a775a 100644 --- a/rs/cycles_account_manager/tests/cycles_account_manager.rs +++ b/rs/cycles_account_manager/tests/cycles_account_manager.rs @@ -880,6 +880,67 @@ fn withdraw_cycles_for_transfer_checks_reserved_balance() { assert_eq!(Cycles::zero(), new_balance); } +#[test] +fn withdraw_up_to_respects_freezing_threshold() { + let cycles_account_manager = CyclesAccountManagerBuilder::new().build(); + let initial_cycles = Cycles::new(2_000_000_000); + let mut system_state = SystemState::new_running_for_testing( + canister_test_id(1), + canister_test_id(2).get(), + initial_cycles, + NumSeconds::from(1_000), + ); + let memory_usage = NumBytes::from(1_000_000); + let message_memory_usage = NumBytes::from(1_000); + let compute_allocation = ComputeAllocation::default(); + system_state.memory_allocation = MemoryAllocation::try_from(NumBytes::from(1 << 20)).unwrap(); + let freeze_threshold = cycles_account_manager.freeze_threshold_cycles( + system_state.freeze_threshold, + system_state.memory_allocation, + memory_usage, + message_memory_usage, + compute_allocation, + SMALL_APP_SUBNET_MAX_SIZE, + system_state.reserved_balance(), + ); + + // full amount can be withdrawn + let mut new_balance = system_state.balance(); + let withdraw_amount_1 = Cycles::new(1_000_000); + let withdrawn_amount_1 = cycles_account_manager.withdraw_up_to_cycles_for_transfer( + system_state.freeze_threshold, + system_state.memory_allocation, + memory_usage, + message_memory_usage, + compute_allocation, + &mut new_balance, + withdraw_amount_1, + SMALL_APP_SUBNET_MAX_SIZE, + system_state.reserved_balance(), + ); + assert_eq!(withdraw_amount_1, withdrawn_amount_1); + assert_eq!(initial_cycles - withdraw_amount_1, new_balance); + + // freezing threshold limits the amount that can be withdrawn + let withdraw_amount_2 = Cycles::new(u128::MAX); + let withdrawn_cycles_2 = cycles_account_manager.withdraw_up_to_cycles_for_transfer( + system_state.freeze_threshold, + system_state.memory_allocation, + memory_usage, + message_memory_usage, + compute_allocation, + &mut new_balance, + withdraw_amount_2, + SMALL_APP_SUBNET_MAX_SIZE, + system_state.reserved_balance(), + ); + assert_eq!( + initial_cycles - withdrawn_amount_1 - freeze_threshold, + withdrawn_cycles_2 + ); + assert_eq!(freeze_threshold, new_balance); +} + #[test] fn freezing_threshold_uses_reserved_balance() { let cycles_account_manager = CyclesAccountManagerBuilder::new().build(); From a54bdb52c10b8e7923346eb5b6ea36663fbd6cb3 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Fri, 5 Jul 2024 11:22:39 +0000 Subject: [PATCH 12/23] add integration test for freezing_threshold > 0 --- rs/system_api/tests/system_api.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/rs/system_api/tests/system_api.rs b/rs/system_api/tests/system_api.rs index 23a384fa2d4..ad7d8b2a63c 100644 --- a/rs/system_api/tests/system_api.rs +++ b/rs/system_api/tests/system_api.rs @@ -1034,9 +1034,8 @@ fn test_call_cycles_add_up_to() { ); // Adding more cycles than available to call means the rest of the available balance gets added - let amount2 = Cycles::new(u128::MAX); assert_eq!( - call_cycles_add128_up_to_helper(&mut api, amount2), + call_cycles_add128_up_to_helper(&mut api, Cycles::new(u128::MAX)), Ok(cycles_amount - amount1) ); // Check cycles balance @@ -1044,6 +1043,19 @@ fn test_call_cycles_add_up_to() { Cycles::from(api.ic0_canister_cycle_balance().unwrap()), Cycles::zero() ); + + assert_eq!(api.ic0_call_new(0, 0, 0, 0, 0, 0, 0, 0, &[]), Ok(())); + // Check cycles balance. + assert_eq!( + Cycles::from(api.ic0_canister_cycle_balance().unwrap()), + cycles_amount + ); + + // With some allocated memory the freezing threshold is no longer at 0. + api.try_grow_wasm_memory(0, 1).unwrap(); + assert!( + call_cycles_add128_up_to_helper(&mut api, Cycles::new(u128::MAX)).unwrap() < cycles_amount + ); } #[test] From e05baed264c5d7c84e85a2aefa8b61d9b9f3c2b7 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Fri, 5 Jul 2024 11:43:49 +0000 Subject: [PATCH 13/23] make test more precise --- rs/system_api/src/lib.rs | 8 ++++++++ .../src/sandbox_safe_system_state.rs | 19 ++++++++++++++++++- rs/system_api/tests/system_api.rs | 6 ++++-- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/rs/system_api/src/lib.rs b/rs/system_api/src/lib.rs index f46e0478ba2..948e95dc6ee 100644 --- a/rs/system_api/src/lib.rs +++ b/rs/system_api/src/lib.rs @@ -1123,6 +1123,14 @@ impl SystemApiImpl { self.memory_usage.allocated_message_memory } + /// Cycles limit under which the canister gets frozen. + pub fn get_freezing_threshold_cylces(&self) -> Cycles { + self.sandbox_safe_system_state.freezing_threshold_cycles( + self.get_current_memory_usage(), + self.get_allocated_message_bytes(), + ) + } + fn error_for(&self, method_name: &str) -> HypervisorError { HypervisorError::UserContractViolation { error: format!( diff --git a/rs/system_api/src/sandbox_safe_system_state.rs b/rs/system_api/src/sandbox_safe_system_state.rs index 2d00de1d633..2c329606f11 100644 --- a/rs/system_api/src/sandbox_safe_system_state.rs +++ b/rs/system_api/src/sandbox_safe_system_state.rs @@ -572,7 +572,7 @@ pub struct SandboxSafeSystemState { reserved_balance_limit: Option, call_context_balance: Option, call_context_deadline: Option, - cycles_account_manager: CyclesAccountManager, + pub(super) cycles_account_manager: CyclesAccountManager, // None indicates that we are in a context where the canister cannot // register callbacks (e.g. running the `start` method when installing a // canister.) @@ -794,6 +794,23 @@ impl SandboxSafeSystemState { cycles_change.apply(self.initial_cycles_balance) } + /// Computes the current cycles limit under which the canister gets frozen. + pub(super) fn freezing_threshold_cycles( + &self, + memory_usage: NumBytes, + message_memory_usage: NumBytes, + ) -> Cycles { + self.cycles_account_manager.freeze_threshold_cycles( + self.freeze_threshold, + self.memory_allocation, + memory_usage, + message_memory_usage, + self.compute_allocation, + self.subnet_size, + self.reserved_balance(), + ) + } + /// Computes the current reserved balance of the canister based /// on the initial value and the changes during the execution. pub(super) fn reserved_balance(&self) -> Cycles { diff --git a/rs/system_api/tests/system_api.rs b/rs/system_api/tests/system_api.rs index ad7d8b2a63c..b1c5b8c527e 100644 --- a/rs/system_api/tests/system_api.rs +++ b/rs/system_api/tests/system_api.rs @@ -1053,8 +1053,10 @@ fn test_call_cycles_add_up_to() { // With some allocated memory the freezing threshold is no longer at 0. api.try_grow_wasm_memory(0, 1).unwrap(); - assert!( - call_cycles_add128_up_to_helper(&mut api, Cycles::new(u128::MAX)).unwrap() < cycles_amount + let freezing_threshold = api.get_freezing_threshold_cylces(); + assert_eq!( + cycles_amount - freezing_threshold, + call_cycles_add128_up_to_helper(&mut api, Cycles::new(u128::MAX)).unwrap() ); } From d6825d08862eb929b68f0ad2eb470f575a8fc73a Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Tue, 27 Aug 2024 11:44:39 +0000 Subject: [PATCH 14/23] now caps such that call can be performed --- rs/cycles_account_manager/src/lib.rs | 24 ++- .../src/hypervisor/tests.rs | 179 ++++++++++++++++++ rs/system_api/src/lib.rs | 1 + rs/system_api/src/request_in_prep.rs | 4 + .../src/sandbox_safe_system_state.rs | 2 + 5 files changed, 205 insertions(+), 5 deletions(-) diff --git a/rs/cycles_account_manager/src/lib.rs b/rs/cycles_account_manager/src/lib.rs index 86a7b9d3216..9f39738fa27 100644 --- a/rs/cycles_account_manager/src/lib.rs +++ b/rs/cycles_account_manager/src/lib.rs @@ -25,7 +25,10 @@ use ic_replicated_state::{ }; use ic_types::{ canister_http::MAX_CANISTER_HTTP_RESPONSE_BYTES, - messages::{Request, Response, SignedIngressContent, MAX_INTER_CANISTER_PAYLOAD_IN_BYTES}, + messages::{ + Request, Response, SignedIngressContent, MAX_INTER_CANISTER_PAYLOAD_IN_BYTES, + MAX_RESPONSE_COUNT_BYTES, + }, CanisterId, ComputeAllocation, Cycles, MemoryAllocation, NumBytes, NumInstructions, SubnetId, }; use prometheus::IntCounter; @@ -394,7 +397,8 @@ impl CyclesAccountManager { } /// Withdraws up to `cycles` worth of cycles from the canister's balance - /// without putting the canister below its freezing threshold. + /// without putting the canister below its freezing threshold even if + /// the call currently under construction is performed. /// /// NOTE: This method is intended for use in inter-canister transfers. /// It doesn't report these cycles as consumed. To withdraw cycles @@ -404,6 +408,7 @@ impl CyclesAccountManager { &self, freeze_threshold: NumSeconds, memory_allocation: MemoryAllocation, + current_payload_size_bytes: NumBytes, canister_current_memory_usage: NumBytes, canister_current_message_memory_usage: NumBytes, canister_compute_allocation: ComputeAllocation, @@ -412,16 +417,24 @@ impl CyclesAccountManager { subnet_size: usize, reserved_balance: Cycles, ) -> Cycles { - let threshold = self.freeze_threshold_cycles( + let call_perform_cost = self.scale_cost( + self.config.xnet_call_fee + + self.config.xnet_byte_transmission_fee * current_payload_size_bytes.get(), + subnet_size, + ) + self.prepayment_for_response_transmission(subnet_size) + + self.prepayment_for_response_execution(subnet_size); + let memory_used_to_enqueue_message = + current_payload_size_bytes.max((MAX_RESPONSE_COUNT_BYTES as u64).into()); + let freeze_threshold = self.freeze_threshold_cycles( freeze_threshold, memory_allocation, canister_current_memory_usage, - canister_current_message_memory_usage, + canister_current_message_memory_usage + memory_used_to_enqueue_message, canister_compute_allocation, subnet_size, reserved_balance, ); - let available_for_withdrawal = *cycles_balance - threshold; + let available_for_withdrawal = *cycles_balance - freeze_threshold - call_perform_cost; let withdrawn_cycles = available_for_withdrawal.min(cycles); *cycles_balance -= withdrawn_cycles; withdrawn_cycles @@ -784,6 +797,7 @@ impl CyclesAccountManager { subnet_size, ) + prepayment_for_response_transmission; + // todo: can this be deduplicated? let fee = transmission_fee + prepayment_for_response_execution; self.withdraw_with_threshold( diff --git a/rs/execution_environment/src/hypervisor/tests.rs b/rs/execution_environment/src/hypervisor/tests.rs index 4203c9e9e1c..a157e579f95 100644 --- a/rs/execution_environment/src/hypervisor/tests.rs +++ b/rs/execution_environment/src/hypervisor/tests.rs @@ -2180,6 +2180,185 @@ fn ic0_call_cycles_add_has_no_effect_without_ic0_call_perform() { ); } +#[test] +fn ic0_call_cycles_add128_up_to_deducts_cycles() { + let mut test = ExecutionTestBuilder::new() + .with_instruction_limit(MAX_NUM_INSTRUCTIONS.get()) + .build(); + let wat = r#" + (module + (import "ic0" "call_new" + (func $ic0_call_new + (param i32 i32) + (param $method_name_src i32) (param $method_name_len i32) + (param $reply_fun i32) (param $reply_env i32) + (param $reject_fun i32) (param $reject_env i32) + ) + ) + (import "ic0" "call_cycles_add128_up_to" (func $ic0_call_cycles_add128_up_to (param i64 i64 i32))) + (import "ic0" "call_perform" (func $ic0_call_perform (result i32))) + (func (export "canister_update test") + (call $ic0_call_new + (i32.const 100) (i32.const 10) ;; callee canister id = 777 + (i32.const 0) (i32.const 18) ;; refers to "some_remote_method" on the heap + (i32.const 11) (i32.const 22) ;; fictive on_reply closure + (i32.const 33) (i32.const 44) ;; fictive on_reject closure + ) + (call $ic0_call_cycles_add128_up_to + (i64.const 0) ;; amount of cycles used to be added - high + (i64.const 10000000000) ;; amount of cycles used to be added - low + (i32.const 200) ;; where to write amount of cycles added + ) + (call $ic0_call_perform) + drop + ) + (memory 1) + (data (i32.const 0) "some_remote_method XYZ") + (data (i32.const 100) "\09\03\00\00\00\00\00\00\ff\01") + )"#; + let initial_cycles = Cycles::new(100_000_000_000); + let canister_id = test + .canister_from_cycles_and_wat(initial_cycles, wat) + .unwrap(); + let ingress_status = test.ingress_raw(canister_id, "test", vec![]).1; + let ingress_state = match ingress_status { + IngressStatus::Known { state, .. } => state, + IngressStatus::Unknown => unreachable!("Expected known ingress status"), + }; + assert_eq!(IngressState::Processing, ingress_state); + assert_eq!(1, test.xnet_messages().len()); + let mgr = test.cycles_account_manager(); + let messaging_fee = mgr.xnet_call_performed_fee(test.subnet_size()) + + mgr.xnet_call_bytes_transmitted_fee( + test.xnet_messages()[0].payload_size_bytes(), + test.subnet_size(), + ) + + mgr.xnet_call_bytes_transmitted_fee( + MAX_INTER_CANISTER_PAYLOAD_IN_BYTES, + test.subnet_size(), + ) + + mgr.execution_cost(MAX_NUM_INSTRUCTIONS, test.subnet_size()); + let transferred_cycles = Cycles::new(10_000_000_000); + assert_eq!( + initial_cycles - messaging_fee - transferred_cycles - test.execution_cost(), + test.canister_state(canister_id).system_state.balance(), + ); +} + +#[test] +fn ic0_call_cycles_add128_up_to_limit_allows_performing_call() { + let mut test = ExecutionTestBuilder::new() + .with_instruction_limit(MAX_NUM_INSTRUCTIONS.get()) + .build(); + let wat = r#" + (module + (import "ic0" "call_new" + (func $ic0_call_new + (param i32 i32) + (param $method_name_src i32) (param $method_name_len i32) + (param $reply_fun i32) (param $reply_env i32) + (param $reject_fun i32) (param $reject_env i32) + ) + ) + (import "ic0" "call_cycles_add128_up_to" (func $ic0_call_cycles_add128_up_to (param i64 i64 i32))) + (import "ic0" "call_perform" (func $ic0_call_perform (result i32))) + (import "ic0" "msg_reply_data_append" (func $msg_reply_data_append (param i32 i32))) + (import "ic0" "msg_reply" (func $msg_reply)) + (func (export "canister_update test") + (call $ic0_call_new + (i32.const 100) (i32.const 10) ;; callee canister id = 777 + (i32.const 0) (i32.const 18) ;; refers to "some_remote_method" on the heap + (i32.const 11) (i32.const 22) ;; fictive on_reply closure + (i32.const 33) (i32.const 44) ;; fictive on_reject closure + ) + (call $ic0_call_cycles_add128_up_to + (i64.const 999000000000) ;; amount of cycles used to be added - high + (i64.const 0) ;; amount of cycles used to be added - low + (i32.const 200) ;; where to write amount of cycles added + ) + (call $ic0_call_perform) + drop + ;; return number of cycles attached + (call $msg_reply_data_append (i32.const 200) (i32.const 16)) + (call $msg_reply) + ) + (memory 1) + (data (i32.const 0) "some_remote_method XYZ") + (data (i32.const 100) "\09\03\00\00\00\00\00\00\ff\01") + )"#; + let initial_cycles = Cycles::new(100_000_000_000); + let canister_id = test + .canister_from_cycles_and_wat(initial_cycles, wat) + .unwrap(); + let WasmResult::Reply(reply_bytes) = test.ingress(canister_id, "test", vec![]).unwrap() else { + panic!("bad WasmResult") + }; + let transferred_cycles = + u128::from_le_bytes(reply_bytes.try_into().expect("bad number of reply bytes")); + assert_eq!(1, test.xnet_messages().len()); + let mgr = test.cycles_account_manager(); + let messaging_fee = mgr.xnet_call_performed_fee(test.subnet_size()) + + mgr.xnet_call_bytes_transmitted_fee( + test.xnet_messages()[0].payload_size_bytes(), + test.subnet_size(), + ) + + mgr.xnet_call_bytes_transmitted_fee( + MAX_INTER_CANISTER_PAYLOAD_IN_BYTES, + test.subnet_size(), + ) + + mgr.execution_cost(MAX_NUM_INSTRUCTIONS, test.subnet_size()); + assert_eq!( + initial_cycles - messaging_fee - transferred_cycles.into() - test.execution_cost(), + test.canister_state(canister_id).system_state.balance(), + ); +} + +#[test] +fn ic0_call_cycles_add128_up_to_has_no_effect_without_ic0_call_perform() { + let mut test = ExecutionTestBuilder::new().build(); + let wat = r#" + (module + (import "ic0" "call_new" + (func $ic0_call_new + (param i32 i32) + (param $method_name_src i32) (param $method_name_len i32) + (param $reply_fun i32) (param $reply_env i32) + (param $reject_fun i32) (param $reject_env i32) + ) + ) + (import "ic0" "call_cycles_add128_up_to" (func $call_cycles_add128_up_to (param i64 i64 i32))) + (func (export "canister_update test") + (call $ic0_call_new + (i32.const 100) (i32.const 10) ;; callee canister id = 777 + (i32.const 0) (i32.const 18) ;; refers to "some_remote_method" on the heap + (i32.const 11) (i32.const 22) ;; fictive on_reply closure + (i32.const 33) (i32.const 44) ;; fictive on_reject closure + ) + (call $call_cycles_add128_up_to + (i64.const 0) ;; amount of cycles used to be added - high + (i64.const 10000000000) ;; amount of cycles used to be added - low + (i32.const 200) ;; where to write amount of cycles added + ) + ) + (memory 1) + (data (i32.const 0) "some_remote_method XYZ") + (data (i32.const 100) "\09\03\00\00\00\00\00\00\ff\01") + )"#; + + let initial_cycles = Cycles::new(100_000_000_000); + let canister_id = test + .canister_from_cycles_and_wat(initial_cycles, wat) + .unwrap(); + let result = test.ingress(canister_id, "test", vec![]); + assert_empty_reply(result); + assert_eq!(0, test.xnet_messages().len()); + // Cycles deducted by `ic0.call_cycles_add128_up_to` are refunded. + assert_eq!( + initial_cycles - test.execution_cost(), + test.canister_state(canister_id).system_state.balance(), + ); +} + const MINT_CYCLES: &str = r#" (module (import "ic0" "msg_reply_data_append" diff --git a/rs/system_api/src/lib.rs b/rs/system_api/src/lib.rs index 948e95dc6ee..ad53f389b49 100644 --- a/rs/system_api/src/lib.rs +++ b/rs/system_api/src/lib.rs @@ -1273,6 +1273,7 @@ impl SystemApiImpl { let amount_withdrawn = self .sandbox_safe_system_state .withdraw_cycles_for_transfer( + request.current_payload_size(), self.memory_usage.current_usage, self.memory_usage.current_message_usage, amount, diff --git a/rs/system_api/src/request_in_prep.rs b/rs/system_api/src/request_in_prep.rs index 64bea7f36bf..55c7a1fbe08 100644 --- a/rs/system_api/src/request_in_prep.rs +++ b/rs/system_api/src/request_in_prep.rs @@ -181,6 +181,10 @@ impl RequestInPrep { pub(crate) fn add_cycles(&mut self, cycles: Cycles) { self.cycles += cycles; } + + pub(crate) fn current_payload_size(&self) -> NumBytes { + ((self.method_payload.len() + self.method_name.len()) as u64).into() + } } pub(crate) struct RequestWithPrepayment { diff --git a/rs/system_api/src/sandbox_safe_system_state.rs b/rs/system_api/src/sandbox_safe_system_state.rs index 2c329606f11..f3ea4b4715d 100644 --- a/rs/system_api/src/sandbox_safe_system_state.rs +++ b/rs/system_api/src/sandbox_safe_system_state.rs @@ -956,6 +956,7 @@ impl SandboxSafeSystemState { pub(super) fn withdraw_cycles_for_transfer( &mut self, + current_payload_size_bytes: NumBytes, canister_current_memory_usage: NumBytes, canister_current_message_memory_usage: NumBytes, amount: CyclesAmountType, @@ -985,6 +986,7 @@ impl SandboxSafeSystemState { .withdraw_up_to_cycles_for_transfer( self.freeze_threshold, self.memory_allocation, + current_payload_size_bytes, canister_current_memory_usage, canister_current_message_memory_usage, self.compute_allocation, From 9d372ca5ebc88f06517e76370a4eb85ddfa37891 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Tue, 27 Aug 2024 12:25:54 +0000 Subject: [PATCH 15/23] refactor, adapt cycles_account_manager tests --- rs/cycles_account_manager/src/lib.rs | 8 +++---- .../tests/cycles_account_manager.rs | 22 +++++++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/rs/cycles_account_manager/src/lib.rs b/rs/cycles_account_manager/src/lib.rs index 9f39738fa27..3ee356dbfa0 100644 --- a/rs/cycles_account_manager/src/lib.rs +++ b/rs/cycles_account_manager/src/lib.rs @@ -417,11 +417,9 @@ impl CyclesAccountManager { subnet_size: usize, reserved_balance: Cycles, ) -> Cycles { - let call_perform_cost = self.scale_cost( - self.config.xnet_call_fee - + self.config.xnet_byte_transmission_fee * current_payload_size_bytes.get(), - subnet_size, - ) + self.prepayment_for_response_transmission(subnet_size) + let call_perform_cost = self.xnet_call_performed_fee(subnet_size) + + self.xnet_call_bytes_transmitted_fee(current_payload_size_bytes, subnet_size) + + self.prepayment_for_response_transmission(subnet_size) + self.prepayment_for_response_execution(subnet_size); let memory_used_to_enqueue_message = current_payload_size_bytes.max((MAX_RESPONSE_COUNT_BYTES as u64).into()); diff --git a/rs/cycles_account_manager/tests/cycles_account_manager.rs b/rs/cycles_account_manager/tests/cycles_account_manager.rs index fb01a8a775a..d9c6457e7f3 100644 --- a/rs/cycles_account_manager/tests/cycles_account_manager.rs +++ b/rs/cycles_account_manager/tests/cycles_account_manager.rs @@ -17,7 +17,7 @@ use ic_test_utilities_types::{ messages::SignedIngressBuilder, }; use ic_types::{ - messages::{extract_effective_canister_id, SignedIngressContent}, + messages::{extract_effective_canister_id, SignedIngressContent, MAX_RESPONSE_COUNT_BYTES}, nominal_cycles::NominalCycles, CanisterId, ComputeAllocation, Cycles, MemoryAllocation, NumBytes, NumInstructions, }; @@ -883,7 +883,7 @@ fn withdraw_cycles_for_transfer_checks_reserved_balance() { #[test] fn withdraw_up_to_respects_freezing_threshold() { let cycles_account_manager = CyclesAccountManagerBuilder::new().build(); - let initial_cycles = Cycles::new(2_000_000_000); + let initial_cycles = Cycles::new(200_000_000_000); let mut system_state = SystemState::new_running_for_testing( canister_test_id(1), canister_test_id(2).get(), @@ -893,16 +893,22 @@ fn withdraw_up_to_respects_freezing_threshold() { let memory_usage = NumBytes::from(1_000_000); let message_memory_usage = NumBytes::from(1_000); let compute_allocation = ComputeAllocation::default(); + let payload_size = NumBytes::from(0); system_state.memory_allocation = MemoryAllocation::try_from(NumBytes::from(1 << 20)).unwrap(); - let freeze_threshold = cycles_account_manager.freeze_threshold_cycles( + let untouched_cycles = cycles_account_manager.freeze_threshold_cycles( system_state.freeze_threshold, system_state.memory_allocation, memory_usage, - message_memory_usage, + message_memory_usage + (MAX_RESPONSE_COUNT_BYTES as u64).into(), compute_allocation, SMALL_APP_SUBNET_MAX_SIZE, system_state.reserved_balance(), - ); + ) + cycles_account_manager + .xnet_call_performed_fee(SMALL_APP_SUBNET_MAX_SIZE) + + cycles_account_manager + .xnet_call_bytes_transmitted_fee(payload_size, SMALL_APP_SUBNET_MAX_SIZE) + + cycles_account_manager.prepayment_for_response_transmission(SMALL_APP_SUBNET_MAX_SIZE) + + cycles_account_manager.prepayment_for_response_execution(SMALL_APP_SUBNET_MAX_SIZE); // full amount can be withdrawn let mut new_balance = system_state.balance(); @@ -910,6 +916,7 @@ fn withdraw_up_to_respects_freezing_threshold() { let withdrawn_amount_1 = cycles_account_manager.withdraw_up_to_cycles_for_transfer( system_state.freeze_threshold, system_state.memory_allocation, + payload_size, memory_usage, message_memory_usage, compute_allocation, @@ -926,6 +933,7 @@ fn withdraw_up_to_respects_freezing_threshold() { let withdrawn_cycles_2 = cycles_account_manager.withdraw_up_to_cycles_for_transfer( system_state.freeze_threshold, system_state.memory_allocation, + payload_size, memory_usage, message_memory_usage, compute_allocation, @@ -935,10 +943,10 @@ fn withdraw_up_to_respects_freezing_threshold() { system_state.reserved_balance(), ); assert_eq!( - initial_cycles - withdrawn_amount_1 - freeze_threshold, + initial_cycles - withdrawn_amount_1 - untouched_cycles, withdrawn_cycles_2 ); - assert_eq!(freeze_threshold, new_balance); + assert_eq!(untouched_cycles, new_balance); } #[test] From dfbf73106fb3226b2f95837c65147130ce504cce Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Tue, 27 Aug 2024 13:32:46 +0000 Subject: [PATCH 16/23] fix system api test --- .../src/canister_state/system_state.rs | 2 +- rs/system_api/src/lib.rs | 6 +++ rs/system_api/tests/system_api.rs | 43 +++++++++++++++---- 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/rs/replicated_state/src/canister_state/system_state.rs b/rs/replicated_state/src/canister_state/system_state.rs index dfb6ae1b88f..72129ca6e02 100644 --- a/rs/replicated_state/src/canister_state/system_state.rs +++ b/rs/replicated_state/src/canister_state/system_state.rs @@ -324,7 +324,7 @@ pub struct SystemState { ingress_induction_cycles_debit: Cycles, /// Resource reservation cycles. - reserved_balance: Cycles, + pub reserved_balance: Cycles, /// The user-specified upper limit on `reserved_balance`. /// diff --git a/rs/system_api/src/lib.rs b/rs/system_api/src/lib.rs index 7b74b79aa91..e2b9326f859 100644 --- a/rs/system_api/src/lib.rs +++ b/rs/system_api/src/lib.rs @@ -1120,6 +1120,12 @@ impl SystemApiImpl { self.memory_usage.current_usage } + /// Note that this function is made public only for the tests + #[doc(hidden)] + pub fn get_compute_allocation(&self) -> ComputeAllocation { + self.execution_parameters.compute_allocation + } + /// Bytes allocated in the Wasm/stable memory. pub fn get_allocated_bytes(&self) -> NumBytes { self.memory_usage.allocated_execution_memory diff --git a/rs/system_api/tests/system_api.rs b/rs/system_api/tests/system_api.rs index 9610da77293..1a1fb17ae3e 100644 --- a/rs/system_api/tests/system_api.rs +++ b/rs/system_api/tests/system_api.rs @@ -27,8 +27,7 @@ use ic_test_utilities_types::{ use ic_types::{ messages::{CallbackId, RejectContext, RequestMetadata, MAX_RESPONSE_COUNT_BYTES, NO_DEADLINE}, methods::{Callback, WasmClosure}, - time, - time::UNIX_EPOCH, + time::{self, UNIX_EPOCH}, CanisterTimer, CountBytes, Cycles, NumInstructions, PrincipalId, Time, MAX_ALLOWED_CANISTER_LOG_BUFFER_SIZE, }; @@ -1007,9 +1006,10 @@ fn test_call_cycles_add_up_to() { let cycles_account_manager = CyclesAccountManagerBuilder::new() .with_max_num_instructions(max_num_instructions) .build(); + let system_state = get_system_state_with_cycles(cycles_amount); let mut api = get_system_api( ApiTypeBuilder::build_update_api(), - &get_system_state_with_cycles(cycles_amount), + &system_state, cycles_account_manager, ); @@ -1021,7 +1021,7 @@ fn test_call_cycles_add_up_to() { cycles_amount ); - // Add an avialable amount of cycles to call. + // Add an available amount of cycles to call. let amount1 = Cycles::new(49); assert_eq!( call_cycles_add128_up_to_helper(&mut api, amount1), @@ -1034,14 +1034,28 @@ fn test_call_cycles_add_up_to() { ); // Adding more cycles than available to call means the rest of the available balance gets added + let untouched_cycles = cycles_account_manager.freeze_threshold_cycles( + system_state.freeze_threshold, + system_state.memory_allocation, + api.get_current_memory_usage(), + api.get_allocated_message_bytes() + (MAX_RESPONSE_COUNT_BYTES as u64).into(), + api.get_compute_allocation(), + SMALL_APP_SUBNET_MAX_SIZE, + system_state.reserved_balance, + ) + cycles_account_manager + .xnet_call_performed_fee(SMALL_APP_SUBNET_MAX_SIZE) + + cycles_account_manager + .xnet_call_bytes_transmitted_fee(0.into(), SMALL_APP_SUBNET_MAX_SIZE) + + cycles_account_manager.prepayment_for_response_transmission(SMALL_APP_SUBNET_MAX_SIZE) + + cycles_account_manager.prepayment_for_response_execution(SMALL_APP_SUBNET_MAX_SIZE); assert_eq!( call_cycles_add128_up_to_helper(&mut api, Cycles::new(u128::MAX)), - Ok(cycles_amount - amount1) + Ok(cycles_amount - amount1 - untouched_cycles) ); // Check cycles balance assert_eq!( Cycles::from(api.ic0_canister_cycle_balance().unwrap()), - Cycles::zero() + untouched_cycles ); assert_eq!(api.ic0_call_new(0, 0, 0, 0, 0, 0, 0, 0, &[]), Ok(())); @@ -1053,9 +1067,22 @@ fn test_call_cycles_add_up_to() { // With some allocated memory the freezing threshold is no longer at 0. api.try_grow_wasm_memory(0, 1).unwrap(); - let freezing_threshold = api.get_freezing_threshold_cylces(); + let untouched_cycles = cycles_account_manager.freeze_threshold_cycles( + system_state.freeze_threshold, + system_state.memory_allocation, + api.get_current_memory_usage(), + api.get_allocated_message_bytes() + (MAX_RESPONSE_COUNT_BYTES as u64).into(), + api.get_compute_allocation(), + SMALL_APP_SUBNET_MAX_SIZE, + system_state.reserved_balance, + ) + cycles_account_manager + .xnet_call_performed_fee(SMALL_APP_SUBNET_MAX_SIZE) + + cycles_account_manager + .xnet_call_bytes_transmitted_fee(0.into(), SMALL_APP_SUBNET_MAX_SIZE) + + cycles_account_manager.prepayment_for_response_transmission(SMALL_APP_SUBNET_MAX_SIZE) + + cycles_account_manager.prepayment_for_response_execution(SMALL_APP_SUBNET_MAX_SIZE); assert_eq!( - cycles_amount - freezing_threshold, + cycles_amount - untouched_cycles, call_cycles_add128_up_to_helper(&mut api, Cycles::new(u128::MAX)).unwrap() ); } From 650fa4baa1372ad3ab3dbc8a4ca6ca82d84f78ac Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Wed, 28 Aug 2024 08:28:12 +0000 Subject: [PATCH 17/23] cleanup --- rs/cycles_account_manager/src/lib.rs | 1 - rs/cycles_account_manager/tests/cycles_account_manager.rs | 4 ++-- rs/interfaces/src/execution_environment.rs | 6 ++++-- rs/system_api/src/lib.rs | 8 -------- 4 files changed, 6 insertions(+), 13 deletions(-) diff --git a/rs/cycles_account_manager/src/lib.rs b/rs/cycles_account_manager/src/lib.rs index 81cb87dc5cf..693d82cfa40 100644 --- a/rs/cycles_account_manager/src/lib.rs +++ b/rs/cycles_account_manager/src/lib.rs @@ -776,7 +776,6 @@ impl CyclesAccountManager { subnet_size, ) + prepayment_for_response_transmission; - // todo: can this be deduplicated? let fee = transmission_fee + prepayment_for_response_execution; self.withdraw_with_threshold( diff --git a/rs/cycles_account_manager/tests/cycles_account_manager.rs b/rs/cycles_account_manager/tests/cycles_account_manager.rs index d9c6457e7f3..55e64c6e341 100644 --- a/rs/cycles_account_manager/tests/cycles_account_manager.rs +++ b/rs/cycles_account_manager/tests/cycles_account_manager.rs @@ -930,7 +930,7 @@ fn withdraw_up_to_respects_freezing_threshold() { // freezing threshold limits the amount that can be withdrawn let withdraw_amount_2 = Cycles::new(u128::MAX); - let withdrawn_cycles_2 = cycles_account_manager.withdraw_up_to_cycles_for_transfer( + let withdrawn_amount_2 = cycles_account_manager.withdraw_up_to_cycles_for_transfer( system_state.freeze_threshold, system_state.memory_allocation, payload_size, @@ -944,7 +944,7 @@ fn withdraw_up_to_respects_freezing_threshold() { ); assert_eq!( initial_cycles - withdrawn_amount_1 - untouched_cycles, - withdrawn_cycles_2 + withdrawn_amount_2 ); assert_eq!(untouched_cycles, new_balance); } diff --git a/rs/interfaces/src/execution_environment.rs b/rs/interfaces/src/execution_environment.rs index 4bf6a84b4ce..13c38ae5180 100644 --- a/rs/interfaces/src/execution_environment.rs +++ b/rs/interfaces/src/execution_environment.rs @@ -810,8 +810,10 @@ pub trait SystemApi { /// canister invokes `ic0.call_new` or returns without invoking /// `ic0.call_perform`). /// - /// The number of cycles added to the call will be `<= amount` and will - /// not put the canister's cycles balance below the freezing limit. + /// The number of cycles added to the call will be `<= amount` and such that a + /// subsequent `ic0.call_perform` will not fail because of insufficient cycles + /// balance (assuming no `ic0.call_data_append` is called between + /// `ic0.call_cycles_add128_up_to` and `ic0.call_perform`). /// /// This system call also copies the actual amount of cycles that were moved /// onto the call represented by a 128-bit value starting at the location diff --git a/rs/system_api/src/lib.rs b/rs/system_api/src/lib.rs index e2b9326f859..ddcd575679c 100644 --- a/rs/system_api/src/lib.rs +++ b/rs/system_api/src/lib.rs @@ -1136,14 +1136,6 @@ impl SystemApiImpl { self.memory_usage.allocated_message_memory } - /// Cycles limit under which the canister gets frozen. - pub fn get_freezing_threshold_cylces(&self) -> Cycles { - self.sandbox_safe_system_state.freezing_threshold_cycles( - self.get_current_memory_usage(), - self.get_allocated_message_bytes(), - ) - } - fn error_for(&self, method_name: &str) -> HypervisorError { HypervisorError::UserContractViolation { error: format!( From d9c32cfdd7eacff6e3f7d04875511b26da6fdd95 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Wed, 28 Aug 2024 08:37:08 +0000 Subject: [PATCH 18/23] rm dead code --- rs/system_api/src/sandbox_safe_system_state.rs | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/rs/system_api/src/sandbox_safe_system_state.rs b/rs/system_api/src/sandbox_safe_system_state.rs index 9fcedddf5a3..e75bc1b1680 100644 --- a/rs/system_api/src/sandbox_safe_system_state.rs +++ b/rs/system_api/src/sandbox_safe_system_state.rs @@ -794,23 +794,6 @@ impl SandboxSafeSystemState { cycles_change.apply(self.initial_cycles_balance) } - /// Computes the current cycles limit under which the canister gets frozen. - pub(super) fn freezing_threshold_cycles( - &self, - memory_usage: NumBytes, - message_memory_usage: NumBytes, - ) -> Cycles { - self.cycles_account_manager.freeze_threshold_cycles( - self.freeze_threshold, - self.memory_allocation, - memory_usage, - message_memory_usage, - self.compute_allocation, - self.subnet_size, - self.reserved_balance(), - ) - } - /// Computes the current reserved balance of the canister based /// on the initial value and the changes during the execution. pub(super) fn reserved_balance(&self) -> Cycles { From c23d11cb00e25b16e2b4557c904aaf7a9f252760 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Wed, 28 Aug 2024 10:44:38 +0000 Subject: [PATCH 19/23] un-pub reserved_balance --- rs/replicated_state/src/canister_state/system_state.rs | 2 +- rs/system_api/tests/system_api.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rs/replicated_state/src/canister_state/system_state.rs b/rs/replicated_state/src/canister_state/system_state.rs index 72129ca6e02..dfb6ae1b88f 100644 --- a/rs/replicated_state/src/canister_state/system_state.rs +++ b/rs/replicated_state/src/canister_state/system_state.rs @@ -324,7 +324,7 @@ pub struct SystemState { ingress_induction_cycles_debit: Cycles, /// Resource reservation cycles. - pub reserved_balance: Cycles, + reserved_balance: Cycles, /// The user-specified upper limit on `reserved_balance`. /// diff --git a/rs/system_api/tests/system_api.rs b/rs/system_api/tests/system_api.rs index 1a1fb17ae3e..c600714bde7 100644 --- a/rs/system_api/tests/system_api.rs +++ b/rs/system_api/tests/system_api.rs @@ -1041,7 +1041,7 @@ fn test_call_cycles_add_up_to() { api.get_allocated_message_bytes() + (MAX_RESPONSE_COUNT_BYTES as u64).into(), api.get_compute_allocation(), SMALL_APP_SUBNET_MAX_SIZE, - system_state.reserved_balance, + system_state.reserved_balance(), ) + cycles_account_manager .xnet_call_performed_fee(SMALL_APP_SUBNET_MAX_SIZE) + cycles_account_manager @@ -1074,7 +1074,7 @@ fn test_call_cycles_add_up_to() { api.get_allocated_message_bytes() + (MAX_RESPONSE_COUNT_BYTES as u64).into(), api.get_compute_allocation(), SMALL_APP_SUBNET_MAX_SIZE, - system_state.reserved_balance, + system_state.reserved_balance(), ) + cycles_account_manager .xnet_call_performed_fee(SMALL_APP_SUBNET_MAX_SIZE) + cycles_account_manager From b5b78d6e65db43c0b23ae98c5a7856252b168c20 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Wed, 28 Aug 2024 10:48:41 +0000 Subject: [PATCH 20/23] un-pub cycles_account_manager --- rs/system_api/src/sandbox_safe_system_state.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rs/system_api/src/sandbox_safe_system_state.rs b/rs/system_api/src/sandbox_safe_system_state.rs index e75bc1b1680..8f5e8e31abd 100644 --- a/rs/system_api/src/sandbox_safe_system_state.rs +++ b/rs/system_api/src/sandbox_safe_system_state.rs @@ -573,7 +573,7 @@ pub struct SandboxSafeSystemState { reserved_balance_limit: Option, call_context_balance: Option, call_context_deadline: Option, - pub(super) cycles_account_manager: CyclesAccountManager, + cycles_account_manager: CyclesAccountManager, // None indicates that we are in a context where the canister cannot // register callbacks (e.g. running the `start` method when installing a // canister.) From 69f17e62f7720468f4f070aea9a990704e36700b Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Wed, 28 Aug 2024 10:51:01 +0000 Subject: [PATCH 21/23] comment CyclesAmountType --- rs/system_api/src/sandbox_safe_system_state.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rs/system_api/src/sandbox_safe_system_state.rs b/rs/system_api/src/sandbox_safe_system_state.rs index 8f5e8e31abd..eba3c5eac48 100644 --- a/rs/system_api/src/sandbox_safe_system_state.rs +++ b/rs/system_api/src/sandbox_safe_system_state.rs @@ -543,6 +543,8 @@ impl SystemStateChanges { } } +/// Determines if a precise amount of cycles is requested +/// or if the provided number is only a limit. #[derive(Debug, Clone, Serialize, Deserialize)] pub enum CyclesAmountType { /// Use exactly this many cycles or fail. From 72bea68e66e275e822219d08b81ef98154fcbe67 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Thu, 29 Aug 2024 11:50:58 +0000 Subject: [PATCH 22/23] add comments to explain tests --- rs/execution_environment/src/hypervisor/tests.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rs/execution_environment/src/hypervisor/tests.rs b/rs/execution_environment/src/hypervisor/tests.rs index b46bebb248a..b7d929c3e18 100644 --- a/rs/execution_environment/src/hypervisor/tests.rs +++ b/rs/execution_environment/src/hypervisor/tests.rs @@ -2240,6 +2240,8 @@ fn ic0_call_cycles_add128_up_to_deducts_cycles() { test.subnet_size(), ) + mgr.execution_cost(MAX_NUM_INSTRUCTIONS, test.subnet_size()); + // The canister has plenty of cycles available to add the requested 10B cycles to the call. + // Therefore we expect that 10B cycles are missing let transferred_cycles = Cycles::new(10_000_000_000); assert_eq!( initial_cycles - messaging_fee - transferred_cycles - test.execution_cost(), @@ -2295,6 +2297,8 @@ fn ic0_call_cycles_add128_up_to_limit_allows_performing_call() { let WasmResult::Reply(reply_bytes) = test.ingress(canister_id, "test", vec![]).unwrap() else { panic!("bad WasmResult") }; + // The canister doesn't have enough cycles to attach the requested amount of cycles to the call. + // We expect to see a bunch of cycles transferred, but the subsequent `call_perform` still must have succeeded. let transferred_cycles = u128::from_le_bytes(reply_bytes.try_into().expect("bad number of reply bytes")); assert_eq!(1, test.xnet_messages().len()); From 81f787debea72fbab0b1c85590b0334708ee6bc7 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Thu, 29 Aug 2024 11:57:37 +0000 Subject: [PATCH 23/23] check attached amount is correct when cycles are available --- .../src/hypervisor/tests.rs | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/rs/execution_environment/src/hypervisor/tests.rs b/rs/execution_environment/src/hypervisor/tests.rs index b7d929c3e18..0d30e2bfca0 100644 --- a/rs/execution_environment/src/hypervisor/tests.rs +++ b/rs/execution_environment/src/hypervisor/tests.rs @@ -2187,7 +2187,9 @@ fn ic0_call_cycles_add128_up_to_deducts_cycles() { let mut test = ExecutionTestBuilder::new() .with_instruction_limit(MAX_NUM_INSTRUCTIONS.get()) .build(); - let wat = r#" + let requested_cycles = Cycles::new(10_000_000_000); + let wat = format!( + r#" (module (import "ic0" "call_new" (func $ic0_call_new @@ -2199,6 +2201,8 @@ fn ic0_call_cycles_add128_up_to_deducts_cycles() { ) (import "ic0" "call_cycles_add128_up_to" (func $ic0_call_cycles_add128_up_to (param i64 i64 i32))) (import "ic0" "call_perform" (func $ic0_call_perform (result i32))) + (import "ic0" "msg_reply_data_append" (func $msg_reply_data_append (param i32 i32))) + (import "ic0" "msg_reply" (func $msg_reply)) (func (export "canister_update test") (call $ic0_call_new (i32.const 100) (i32.const 10) ;; callee canister id = 777 @@ -2208,26 +2212,32 @@ fn ic0_call_cycles_add128_up_to_deducts_cycles() { ) (call $ic0_call_cycles_add128_up_to (i64.const 0) ;; amount of cycles used to be added - high - (i64.const 10000000000) ;; amount of cycles used to be added - low + (i64.const {requested_cycles}) ;; amount of cycles used to be added - low (i32.const 200) ;; where to write amount of cycles added ) (call $ic0_call_perform) drop + ;; return number of cycles attached + (call $msg_reply_data_append (i32.const 200) (i32.const 16)) + (call $msg_reply) ) (memory 1) (data (i32.const 0) "some_remote_method XYZ") (data (i32.const 100) "\09\03\00\00\00\00\00\00\ff\01") - )"#; + )"# + ); let initial_cycles = Cycles::new(100_000_000_000); let canister_id = test .canister_from_cycles_and_wat(initial_cycles, wat) .unwrap(); - let ingress_status = test.ingress_raw(canister_id, "test", vec![]).1; - let ingress_state = match ingress_status { - IngressStatus::Known { state, .. } => state, - IngressStatus::Unknown => unreachable!("Expected known ingress status"), + let WasmResult::Reply(reply_bytes) = test.ingress(canister_id, "test", vec![]).unwrap() else { + panic!("bad WasmResult") }; - assert_eq!(IngressState::Processing, ingress_state); + // The canister has plenty of cycles available to add the requested 10B cycles to the call. + // Therefore we expect that 10B cycles are transferred + let transferred_cycles: Cycles = + u128::from_le_bytes(reply_bytes.try_into().expect("bad number of reply bytes")).into(); + assert_eq!(requested_cycles, transferred_cycles); assert_eq!(1, test.xnet_messages().len()); let mgr = test.cycles_account_manager(); let messaging_fee = mgr.xnet_call_performed_fee(test.subnet_size()) @@ -2240,9 +2250,6 @@ fn ic0_call_cycles_add128_up_to_deducts_cycles() { test.subnet_size(), ) + mgr.execution_cost(MAX_NUM_INSTRUCTIONS, test.subnet_size()); - // The canister has plenty of cycles available to add the requested 10B cycles to the call. - // Therefore we expect that 10B cycles are missing - let transferred_cycles = Cycles::new(10_000_000_000); assert_eq!( initial_cycles - messaging_fee - transferred_cycles - test.execution_cost(), test.canister_state(canister_id).system_state.balance(),