From 3daf11f5d128eb57eea1d7dea0419c638d3912d6 Mon Sep 17 00:00:00 2001 From: Kyle Simpson Date: Sun, 21 May 2023 13:50:54 +0100 Subject: [PATCH] Driver: Implement audio scheduler (#179) This PR implements a custom scheduler for audio threads, which reduces thread use and (often) memory consumption. To save threads and memory (e.g., packet buffer allocations), Songbird parks Mixer tasks which do not have any live Tracks. These are now all co-located on a single async 'Idle' task. This task is responsible for managing UDP keepalive messages for each task, maintaining event state, and executing any Mixer task messages. Whenever any message arrives which adds a `Track`, the mixer task is moved to a live thread. The Idle task inspects task counts and execution time on each thread, choosing the first live thread with room, and creating a new one if needed. Each live thread is responsible for running as many live mixers as it can in a single tick every 20ms: this currently defaults to 16 mixers per thread, but is user-configurable. A live thread also stores RTP packet blocks to be written into by each sub-task. Each live thread has a conservative limit of 18ms that it will aim to stay under: if all work takes longer than this, it will offload the task with the highest mixing cost once per tick onto another (possibly new) live worker thread. --- ARCHITECTURE.md | 29 +- Cargo.toml | 11 +- benches/base-mixing.rs | 1 + benches/mixing-task.rs | 385 +++++++----- examples/serenity/voice/src/main.rs | 3 +- images/arch.afdesign | Bin 54175 -> 81173 bytes images/driver.png | Bin 156491 -> 115598 bytes images/driver.svg | 79 +-- images/gateway.png | Bin 131681 -> 131680 bytes images/scheduler.png | Bin 0 -> 205653 bytes images/scheduler.svg | 329 +++++++++++ src/config.rs | 44 +- src/constants.rs | 3 + src/driver/bench_internals.rs | 4 + src/driver/mod.rs | 13 + src/driver/scheduler/config.rs | 66 +++ src/driver/scheduler/idle.rs | 319 ++++++++++ src/driver/scheduler/live.rs | 821 ++++++++++++++++++++++++++ src/driver/scheduler/mod.rs | 174 ++++++ src/driver/scheduler/stats.rs | 134 +++++ src/driver/scheduler/task.rs | 187 ++++++ src/driver/tasks/message/mixer.rs | 6 + src/driver/tasks/mixer/mod.rs | 468 ++++++--------- src/driver/tasks/mixer/pool.rs | 2 +- src/driver/tasks/mod.rs | 13 +- src/driver/test_impls.rs | 225 +++++++ src/error.rs | 5 +- src/input/adapters/async_adapter.rs | 2 +- src/input/sources/file.rs | 48 +- src/lib.rs | 2 + src/shards.rs | 3 + utils/src/lib.rs => src/test_utils.rs | 2 + utils/Cargo.toml | 10 - utils/README.md | 1 - 34 files changed, 2828 insertions(+), 561 deletions(-) create mode 100644 images/scheduler.png create mode 100644 images/scheduler.svg create mode 100644 src/driver/scheduler/config.rs create mode 100644 src/driver/scheduler/idle.rs create mode 100644 src/driver/scheduler/live.rs create mode 100644 src/driver/scheduler/mod.rs create mode 100644 src/driver/scheduler/stats.rs create mode 100644 src/driver/scheduler/task.rs create mode 100644 src/driver/test_impls.rs rename utils/src/lib.rs => src/test_utils.rs (98%) delete mode 100644 utils/Cargo.toml delete mode 100644 utils/README.md diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 78855d5..30647a3 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -35,7 +35,7 @@ Audio processing remains synchronous for the following reasons: Songbird subdivides voice connection handling into several long- and short-lived tasks. * **Core**: Handles and directs commands received from the driver. Responsible for connection/reconnection, and creates network tasks. -* **Mixer**: Combines audio sources together, Opus encodes the result, and encrypts the built packets every 20ms. Responsible for handling track commands/state, and transmitting completed voice packets and keepalive messages. ***Synchronous***. +* **Mixer**: Combines audio sources together, Opus encodes the result, and encrypts the built packets every 20ms. Responsible for handling track commands/state, and transmitting completed voice packets and keepalive messages. ***Synchronous when live***. * **Thread Pool**: A dynamically sized thread-pool for I/O tasks. Creates lazy tracks using `Compose` if sync creation is needed, otherwise spawns a tokio task. Seek operations always go to the thread pool. ***Synchronous***. * **Disposer**: Used by mixer thread to dispose of data with potentially long/blocking `Drop` implementations (i.e., audio sources). ***Synchronous***. * **Events**: Stores and runs event handlers, tracks event timing, and handles @@ -46,6 +46,33 @@ Songbird subdivides voice connection handling into several long- and short-lived ![](images/driver.png) +## Scheduler +To save threads and memory (e.g., packet buffer allocations), Songbird parks Mixer tasks which do not have any live Tracks. +These are all co-located on a single async task. +This task is responsible for managing UDP keepalive messages for each task, maintaining event state, and executing any Mixer task messages. +Whenever any message arrives which adds a `Track`, the mixer task is moved to a live thread. +The Idle task inspects task counts and execution time on each thread, choosing the first live thread with room, creating a new one if needed. + +Each live thread is responsible for running as many live mixers as it can in a single tick every 20ms: this currently defaults to 16 mixers per thread, but is user-configurable. +A live thread also stores RTP packet blocks to be written into by each sub-task. +Audio threads have a budget of 20ms to complete all message handling, mixing, encoding, and encryption. +*These threads are synchronous, as explained above: the bulk costs (i.e., encoding) are compute-bound work and would block the Tokio executor.* +Mixer logic is handled in this order to minimise deadline variance: +``` +handle idle->live messages +handle all driver->mixer messages +cleanup idle/dead mixers +mix + encode + encrypt all mixers into packet buffer +check for excess packet blocks +sleep 'til next 20ms boundary + +send all packets, adjust RTP fields +handle per-track messages +``` +Each live thread has a conservative limit of 18ms that it will aim to stay under: if all work takes longer than this, it will offload the task with the highest mixing cost once per 20ms tick. + +![](images/scheduler.png) + ``` src/driver/* ``` diff --git a/Cargo.toml b/Cargo.toml index 9e7c675..eb8c101 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,6 +23,7 @@ derivative = "2" discortp = { default-features = false, features = ["discord", "pnet", "rtp"], optional = true, version = "0.5" } flume = { optional = true, version = "0.10" } futures = "0.3" +nohash-hasher = { optional = true, version = "0.2.0" } once_cell = { optional = true, version = "1" } parking_lot = { optional = true, version = "0.12" } pin-project = "1" @@ -62,11 +63,11 @@ version = "0.11" optional = true [dev-dependencies] +byteorder = "1" criterion = "0.4" ntest = "0.9" symphonia = { version = "0.5.2", features = ["aac", "isomp4", "mp3"] } -utils = { path = "utils" } -tokio = { version = "1", features = ["rt", "rt-multi-thread"] } +tokio = { version = "1", features = ["rt", "rt-multi-thread", "test-util"] } [features] # Core features @@ -93,6 +94,7 @@ driver = [ "dep:discortp", "dep:reqwest", "dep:flume", + "dep:nohash-hasher", "dep:once_cell", "dep:parking_lot", "dep:rand", @@ -141,7 +143,10 @@ receive = ["dep:bytes", "discortp?/demux", "discortp?/rtcp"] # Used for docgen/testing/benchmarking. full-doc = ["default", "twilight", "builtin-queue", "receive"] -internals = [] +internals = ["dep:byteorder"] + +[lib] +bench = false [[bench]] name = "base-mixing" diff --git a/benches/base-mixing.rs b/benches/base-mixing.rs index d9e12c3..0eaf7cd 100644 --- a/benches/base-mixing.rs +++ b/benches/base-mixing.rs @@ -6,6 +6,7 @@ use songbird::{ MixMode, }, input::{codecs::*, Input, LiveInput, Parsed}, + test_utils as utils, }; use std::io::Cursor; use symphonia_core::audio::{AudioBuffer, Layout, SampleBuffer, Signal, SignalSpec}; diff --git a/benches/mixing-task.rs b/benches/mixing-task.rs index 2da13d6..7803154 100644 --- a/benches/mixing-task.rs +++ b/benches/mixing-task.rs @@ -16,164 +16,23 @@ use songbird::{ bench_internals::{ self, mixer::{state::InputState, Mixer}, + scheduler::*, task_message::*, CryptoState, }, Bitrate, + DummyMixer, + Listeners, + MockScheduler, }, input::{cached::Compressed, codecs::*, Input, RawAdapter}, tracks, Config, }; -use std::{io::Cursor, net::UdpSocket}; +use std::{io::Cursor, net::UdpSocket, sync::Arc}; use tokio::runtime::{Handle, Runtime}; use xsalsa20poly1305::{KeyInit, XSalsa20Poly1305 as Cipher, KEY_SIZE}; -// create a dummied task + interconnect. -// measure perf at varying numbers of sources (binary 1--64) without passthrough support. - -fn dummied_mixer( - handle: Handle, - softclip: bool, -) -> ( - Mixer, - ( - Receiver, - Receiver, - Receiver, - ), -) { - let (mix_tx, mix_rx) = flume::unbounded(); - let (core_tx, core_rx) = flume::unbounded(); - let (event_tx, event_rx) = flume::unbounded(); - - let (udp_receiver_tx, udp_receiver_rx) = flume::unbounded(); - - let ic = Interconnect { - core: core_tx, - events: event_tx, - mixer: mix_tx, - }; - - let config = Config::default().use_softclip(softclip); - - let mut out = Mixer::new(mix_rx, handle, ic, config); - - let udp_tx = UdpSocket::bind("0.0.0.0:0").expect("Failed to create send port."); - udp_tx - .connect("127.0.0.1:5316") - .expect("Failed to connect to local dest port."); - - let fake_conn = MixerConnection { - cipher: Cipher::new_from_slice(&vec![0u8; KEY_SIZE]).unwrap(), - crypto_state: CryptoState::Normal, - udp_rx: udp_receiver_tx, - udp_tx, - }; - - out.conn_active = Some(fake_conn); - - out.skip_sleep = true; - - (out, (core_rx, event_rx, udp_receiver_rx)) -} - -fn mixer_float( - num_tracks: usize, - handle: Handle, - softclip: bool, -) -> ( - Mixer, - ( - Receiver, - Receiver, - Receiver, - ), -) { - let mut out = dummied_mixer(handle, softclip); - - let floats = utils::make_sine(10 * STEREO_FRAME_SIZE, true); - - for i in 0..num_tracks { - let input: Input = RawAdapter::new(Cursor::new(floats.clone()), 48_000, 2).into(); - let promoted = match input { - Input::Live(l, _) => l.promote(&CODEC_REGISTRY, &PROBE), - _ => panic!("Failed to create a guaranteed source."), - }; - let (handle, mut ctx) = - bench_internals::track_context(Input::Live(promoted.unwrap(), None).into()); - out.0.add_track(ctx); - } - - out -} - -fn mixer_float_drop( - num_tracks: usize, - handle: Handle, -) -> ( - Mixer, - ( - Receiver, - Receiver, - Receiver, - ), -) { - let mut out = dummied_mixer(handle, true); - - for i in 0..num_tracks { - let floats = utils::make_sine((i / 5) * STEREO_FRAME_SIZE, true); - let input: Input = RawAdapter::new(Cursor::new(floats.clone()), 48_000, 2).into(); - let promoted = match input { - Input::Live(l, _) => l.promote(&CODEC_REGISTRY, &PROBE), - _ => panic!("Failed to create a guaranteed source."), - }; - let (handle, mut ctx) = - bench_internals::track_context(Input::Live(promoted.unwrap(), None).into()); - out.0.add_track(ctx); - } - - out -} - -fn mixer_opus( - handle: Handle, -) -> ( - Mixer, - ( - Receiver, - Receiver, - Receiver, - ), -) { - // should add a single opus-based track. - // make this fully loaded to prevent any perf cost there. - let mut out = dummied_mixer(handle.clone(), false); - - let floats = utils::make_sine(6 * STEREO_FRAME_SIZE, true); - - let input: Input = RawAdapter::new(Cursor::new(floats), 48_000, 2).into(); - - let mut src = handle.block_on(async move { - Compressed::new(input, Bitrate::BitsPerSecond(128_000)) - .await - .expect("These parameters are well-defined.") - }); - - src.raw.load_all(); - - let promoted = match src.into() { - Input::Live(l, _) => l.promote(&CODEC_REGISTRY, &PROBE), - _ => panic!("Failed to create a guaranteed source."), - }; - let (handle, mut ctx) = - bench_internals::track_context(Input::Live(promoted.unwrap(), None).into()); - - out.0.add_track(ctx); - - out -} - fn no_passthrough(c: &mut Criterion) { let rt = Runtime::new().unwrap(); @@ -187,9 +46,14 @@ fn no_passthrough(c: &mut Criterion) { &track_count, |b, i| { b.iter_batched_ref( - || black_box(mixer_float(*i, rt.handle().clone(), true)), + || { + black_box(MockScheduler::from_mixers( + None, + vec![Mixer::test_with_float(*i, rt.handle().clone(), true)], + )) + }, |input| { - black_box(input.0.cycle()); + black_box(input.0.core.run_once()); }, BatchSize::SmallInput, ) @@ -200,9 +64,14 @@ fn no_passthrough(c: &mut Criterion) { &track_count, |b, i| { b.iter_batched_ref( - || black_box(mixer_float(*i, rt.handle().clone(), false)), + || { + black_box(MockScheduler::from_mixers( + None, + vec![Mixer::test_with_float(*i, rt.handle().clone(), false)], + )) + }, |input| { - black_box(input.0.cycle()); + black_box(input.0.core.run_once()); }, BatchSize::SmallInput, ) @@ -213,10 +82,71 @@ fn no_passthrough(c: &mut Criterion) { &track_count, |b, i| { b.iter_batched_ref( - || black_box(mixer_float(*i, rt.handle().clone(), true)), + || { + black_box(MockScheduler::from_mixers( + None, + vec![Mixer::test_with_float(*i, rt.handle().clone(), true)], + )) + }, |input| { for i in 0..5 { - black_box(input.0.cycle()); + black_box(input.0.core.run_once()); + } + }, + BatchSize::SmallInput, + ) + }, + ); + } + + group.finish(); +} + +fn no_passthrough_multimix(c: &mut Criterion) { + let rt = Runtime::new().unwrap(); + + const N_MIXERS: usize = 16; + let mut group = c.benchmark_group(format!("Float Input (No Passthrough, {N_MIXERS} mixers)")); + + for shift in 0..=2 { + let track_count = 1 << shift; + + group.bench_with_input( + BenchmarkId::new("Single Packet (No Soft-Clip)", track_count), + &track_count, + |b, i| { + b.iter_batched_ref( + || { + black_box(MockScheduler::from_mixers( + None, + (0..N_MIXERS) + .map(|_| Mixer::test_with_float(*i, rt.handle().clone(), false)) + .collect(), + )) + }, + |input| { + black_box(input.0.core.run_once()); + }, + BatchSize::SmallInput, + ) + }, + ); + group.bench_with_input( + BenchmarkId::new("n=5 Packets", track_count), + &track_count, + |b, i| { + b.iter_batched_ref( + || { + black_box(MockScheduler::from_mixers( + None, + (0..N_MIXERS) + .map(|_| Mixer::test_with_float(*i, rt.handle().clone(), false)) + .collect(), + )) + }, + |input| { + for i in 0..5 { + black_box(input.0.core.run_once()); } }, BatchSize::SmallInput, @@ -235,19 +165,29 @@ fn passthrough(c: &mut Criterion) { group.bench_function("Single Packet", |b| { b.iter_batched_ref( - || black_box(mixer_opus(rt.handle().clone())), + || { + black_box(MockScheduler::from_mixers( + None, + vec![Mixer::test_with_opus(rt.handle().clone())], + )) + }, |input| { - black_box(input.0.cycle()); + black_box(input.0.core.run_once()); }, BatchSize::SmallInput, ) }); group.bench_function("n=5 Packets", |b| { b.iter_batched_ref( - || black_box(mixer_opus(rt.handle().clone())), + || { + black_box(MockScheduler::from_mixers( + None, + vec![Mixer::test_with_opus(rt.handle().clone())], + )) + }, |input| { for i in 0..5 { - black_box(input.0.cycle()); + black_box(input.0.core.run_once()); } }, BatchSize::SmallInput, @@ -257,15 +197,76 @@ fn passthrough(c: &mut Criterion) { group.finish(); } +fn passthrough_multimix(c: &mut Criterion) { + let rt = Runtime::new().unwrap(); + + const N_MIXERS: usize = 16; + let mut group = c.benchmark_group(format!("Opus Input (Passthrough, {N_MIXERS} mixers)")); + + for shift in 0..=2 { + let track_count = 1 << shift; + + group.bench_with_input( + BenchmarkId::new("Single Packet (No Soft-Clip)", track_count), + &track_count, + |b, i| { + b.iter_batched_ref( + || { + black_box(MockScheduler::from_mixers( + None, + (0..N_MIXERS) + .map(|_| Mixer::test_with_opus(rt.handle().clone())) + .collect(), + )) + }, + |input| { + black_box(input.0.core.run_once()); + }, + BatchSize::SmallInput, + ) + }, + ); + group.bench_with_input( + BenchmarkId::new("n=5 Packets", track_count), + &track_count, + |b, i| { + b.iter_batched_ref( + || { + black_box(MockScheduler::from_mixers( + None, + (0..N_MIXERS) + .map(|_| Mixer::test_with_opus(rt.handle().clone())) + .collect(), + )) + }, + |input| { + for i in 0..5 { + black_box(input.0.core.run_once()); + } + }, + BatchSize::SmallInput, + ) + }, + ); + } + + group.finish(); +} + fn culling(c: &mut Criterion) { let rt = Runtime::new().unwrap(); c.bench_function("Worst-case Track Culling (15 tracks, 5 pkts)", |b| { b.iter_batched_ref( - || black_box(mixer_float_drop(15, rt.handle().clone())), + || { + black_box(MockScheduler::from_mixers( + None, + vec![Mixer::test_with_float_drop(15, rt.handle().clone())], + )) + }, |input| { for i in 0..5 { - black_box(input.0.cycle()); + black_box(input.0.core.run_once()); } }, BatchSize::SmallInput, @@ -273,5 +274,69 @@ fn culling(c: &mut Criterion) { }); } -criterion_group!(benches, no_passthrough, passthrough, culling); -criterion_main!(benches); +fn task_culling(c: &mut Criterion) { + let rt = Runtime::new().unwrap(); + + const N_MIXERS: usize = 8; + + c.bench_function("Live Mixer Thread Culling", |b| { + b.iter_batched_ref( + || { + black_box(MockScheduler::from_mixers( + None, + (0..N_MIXERS) + .map(|_| Mixer::test_with_opus(rt.handle().clone())) + .collect(), + )) + }, + |input| { + black_box(input.0.core.remove_task(0)); + }, + BatchSize::SmallInput, + ) + }); + + c.bench_function("Live Mixer Thread Culling (Practical)", |b| { + b.iter_batched_ref( + || { + black_box(MockScheduler::from_mixers( + None, + (0..N_MIXERS) + .map(|_| Mixer::test_with_opus(rt.handle().clone())) + .collect(), + )) + }, + |input| { + black_box({ + input.0.core.mark_for_cull(0); + input.0.core.mark_for_cull(1); + input.0.core.mark_for_cull(4); + input.0.core.demote_and_remove_mixers(); + }); + }, + BatchSize::SmallInput, + ) + }); + + c.bench_function("Live Mixer Thread Culling (Practical, NoDel)", |b| { + b.iter_batched_ref( + || { + black_box(MockScheduler::from_mixers( + None, + (0..N_MIXERS) + .map(|_| Mixer::test_with_opus(rt.handle().clone())) + .collect(), + )) + }, + |input| { + black_box(input.0.core.demote_and_remove_mixers()); + }, + BatchSize::SmallInput, + ) + }); +} + +criterion_group!(individual, no_passthrough, passthrough); +criterion_group!(multimix, no_passthrough_multimix, passthrough_multimix); +criterion_group!(deletions, culling, task_culling); +criterion_main!(individual, multimix, deletions); diff --git a/examples/serenity/voice/src/main.rs b/examples/serenity/voice/src/main.rs index e66ed21..8e4377b 100644 --- a/examples/serenity/voice/src/main.rs +++ b/examples/serenity/voice/src/main.rs @@ -31,8 +31,7 @@ use serenity::{ framework::{ standard::{ macros::{command, group}, - Args, - CommandResult, + Args, CommandResult, }, StandardFramework, }, diff --git a/images/arch.afdesign b/images/arch.afdesign index d7ab5a044d7461fffa371e49c09f66958573fbc6..3d32bf277b3bd0afddd47dfb959e10468e7eec3d 100644 GIT binary patch literal 81173 zcmZSh@9oIVz`>ALToj<}nV0r3kpT?+lfV?iL?|D^V_=YZk(mNw>o71dFflMN1Qg|$ zI599VD7$6mXl&L0%is~Rl2K~SxyfDv485UT48>MWyZ>-BZZLLZ(5(^CejRs!QCoE` zYhaw=zT92g|0;8^y?%BgtcU5t4v$Hm%bqN6_X#?slKPorkL0_%%Ql``6ENi@`#}zK z&I(TP1l>(B2LylSUpmU&?BM=!)tguU=YP#~>zeZQe`n8q`+xh^co+KYlw7tf<8)8f z?8}1D#jmflE%5l}`{~zz=d?fn|9@YwM(~pgm)qC>tu!-p)9=QRbjq?>V`v4=aBDpSZ5T_HKXh z$$qQSS64O$-@dtRTGgI=m-IUy724MRFLnR87ETUY(jfKpZaSt z_sR+_TeYNf=Dz)}3Ve=K?A+$rdh7fho&;-cl`R%qKP+Il%2J&0V$X)RU;c)NT(A89 ze|u8mOWB?O6C%vkF8}}k_@&&J|LZsW3pdG0uKe|X|E*ndm;Tp>hsW(*^1r{Zb?I%@ zzyHfkuU_>&Rrqzzzxl`8k8XbYF8XfK*3%t<;_mzYcWD()dh*|%W5TVUYwzd1eipj& z?*H@$vzbm`efNLA(Ciyimi(G}f7=?l^WWot=6ZksFYowwePPV|fB&zq$Vm*)Z()?0 z@ZUb_((6+J!Q0oxtzh964k^F;`+xhY|Njm9?i{G{od0Y~f&cybr#2^AId2qre_lpdMN9m_EZPA7ytXqL}PTP9NLtr`}e>9-8By;Z8%o8UH*RkTqfbm z0$2V=y?$A?bzWZk^WWTJ$tI}^;J{feLeL5e;&7V^RNH=U+s+hQUB%s{vHV< zrXT<6J+s%8zy5Uf)U?Z?+R=XE|Mv5!CB(#g>R;XbaNfVyl4|Db<0eI%3(F3AwQYl; z#ysBeqp!=QIk<+*TlNS{v zTd%Mxef>(;mEj1lDk9g-z8i;S0RJ<|TgrpYHK=#|D+F>jN!nzyANa%FB=E{B?~v>#l0teck%sdiErJ z!`l=8&)>M@`qYK{+^$ybk!qE`-Fp9j`0Ly||LgmH{V#o75`1dk|Mk}%_o@bD?~QtY z_|T=-76(fDmvVL`TPzFPld&zqeIu{;mT1GPD`&p@@LzuGA(l7nS*|(Of9wCgs{gyG z;UO!lmmkyD{dM(GH@Pevn9t4r>@6T;QsQ`I-mi4gm3&SQE>^u~TUWNESw7x>?sVCJ z6KpGg{^QBcN^CPvEU(*`>?qE`^dR{E944z$%f<_pb)1Kajl_0+xO#fl66swwZTlMj zn?LZY{qL#)>QieDQrZ|eX0Wxtl3o6)SPS(dkP4x=y`J{_MgX z%m3G#Tt7VN-~Wp;yS$wyd0S;`%#3m>4vqDWw?DT#DD?UN`Q@I4j-d;~qy73HRs4PV zKlR0(YuEe#`!|29*dd{>I_>KG9*&03|Lt{kRG3dq<2&AeWm(DJ|BPCz4u8yJKYaDo zf9?S5{aFnr)i2F``TqZBhr7Np`uOXW zZtY(?DP^fU*EYL;_OW=9%~6w^iKIcqz435#UgF)(FxHhuOI zlsa;e$l1EzyHI3-wHfw zu}JmT|Nr*fQ+YU@*DPdv+hr-QAh@i_(sx%yqJYoKJu4PfgqFE~+qz{#$K7B5OF5;M zzWh`F_kWeu%8&m=dmjnyKI}b(=dj6}m1?@P-sKdY+$if^v_;J`=}h3?|8`RvJPTL+ z`d{ifBYgSg)35$tSM}OsGIv$W^QHbPs+R9uzW&zNBYIQ&UWfh9&OQG4*Z=;&|N9rk zTddn8(JN)TDU$K@(I5ZammkR>T}N%}z5ZKaeW(4NcYb}d=Unc`-*>KUzPn20 zZKmzjDXW)%{qq0*!At9mq;A%)zm=xu-#{k((*N@T zOw%5#{;dy9ntaIn*T2>GQafwcp4#>C-GA-ct-C%R`L|j%^9y6wr45CQJ#*%W^(mG3 z#qa->@I+yPNP1u286HDxfe#9fz4OGro=ysM{rNV0aiZ0uD~lHFczeQdTdKSF?t>F~ zyeHQG-IDQA$Ckk&?D|E&x*N-^Ke^rFR)LGJc9U%M7M6`y74@xG21ZXAr^FYXQSIlJw{{*BZPkicbb*uM z$EBRO&B?|(zcVgt&ze>&bX%Z*k?zHLNAGy5yI36B`rtsXam%e26Mm^p*mp-kZJL48 z1djZD6V8~c9G-HeCR#B2@~qU(Ts6D z)YLNczEBMo7BTc&doE#{_?sJP8{=o6ogKKRRM4fSl$$60wWnci@03OVYCPieIP7Z= z^m+#5&skIvEfSxrU$Ifw+wk^>qKWbA_Gf(H6g=X-q-%=U6&(hby$+|vpBc&?H#9lE zaZB3!Wls}3bH$9eW$3y0-J9gka7vKp{XI>$(>dNedD@dCZqIp?=Q{byb&{)a->3-O3g>4GYmx_L5D`fMQh|>rZx{|c3RBh|q?fI(F-jocFUzQu(dA-c z|1FikP0>QnbB_xh4O>2Yi-McG-?F4D)0emY`XBH5b*8w>!2p%hYki~JEN%;2xiRgj zSuTIz=4R!2(S7Eu-;Y`z*>>jXHXELesz(KG%e{z;JpOM%(T|?)B5Ld;+T<%&| zMBd$4>70IUz8FVB%Osx6tU39A{w$C>7$B@t<>v5^g<*z6*_P!tdsT1kmc6`NH!~^6 zwPd>3@`PD^;-^<*pT;5NAh)_Uj8P=y$(04K=HxGMn6+!+o0mtJoL&8R zSDoW*y28;mOX1?;O4Thh9i3!i|JS$tdamm;(J1`N!;<1#D>k~GE9AO)=&>(vorcBj zGmRyUZXePHJMqxH1)=#!WJT(j)5U;dB(T=nbt%CAS?^{no`_;T4Pw_e?%K4IO< z!53Q$UgQL)O;}*-9#Aq*_s##+&r0w8-!J{)_kWIk|J#54`+xlVe}S6$=T7t860chH zk9$K_u)Um(#D$NU8-H&5^MCuZ=BU?Kt0E$*e*M4S?C&dOl5X*0LGl^r-pfWZ8;`1) zy{$0bCZiMF-FEj*&GNKeTl6%RxC(P#;Fc@~%A+N?Z~LCM5bSn)dS^ zqdf12ga_5~Gi$|`R`31wKlxS9?ITAw*IxZs-!{WQX2Qd_O7|5!-sP5eZr%Izs93S! z*4bAyJlhrt>h$bl*nCi2O`SKdYoDFI)P;^ah0ey?U!`1FI!QE9kwbIdi@Cj~iqCzf zt0~TrOYm%7=Gi@K^C`J`kGl;0=48y8qB2ukajX8S)xZ8r6#U#4vp|*moMx4$@#DZP zD(1e@&wAFbaLu*$SR}z>e2z=SCn_SjW5LUv#fv$Yb3U7swJC1F0iJNC1G5xotdU7f z<>B`CG!SvVbKG#tBh$@i6^>2oPTan`e|Ph&?%Mm$mmWF9sQth|gTu}9oX*V_W8YbZ zg-Q{pqD{mO&2Vbv^NM)&KYnA=tUWA;1)n5HMa?^%bGUA!ujQ@WRY$WYrFeXcU#dRM zVcKSAAD=q8sfLc`5)w(t%UAEz;QFv*;n4|-v-qqsG#R=W>N6U+940yN$cFlvq^nF2 z6xB5>X1XA)lDDAXV$zAG6GDGCJY#d2%F;K7%i`pm3Z*wJwqbti-6av1S|(2o=8{%j zsko-(>b|nuFaQ5vzoug0Btb*h6)}+?*9GmJb;`H$*Z-=}*S&v#{GY$->#;hCnU9!R zu3f(-vh>#VcVYjt-*&(L|9?Z&?^}1X;;pq}dNf11ZcGoq&dYWE+yaTF>sO?cv%8YE z&1t{UxA)Gr{D5@hGtudvS~eVSS2Bw7^xQLB)Ije4f0bwvjjNrksp{1?e9s=_zIA6~ zre{x5_eH;30#}tZK5b~yQ4mT<^nCb+$N6Z`1l=Z)h$qaPqA{%wA}4;NJSZ^x@;}w* z!x2wm0hNeR6GXXHw2@jixdl z!&Sz7``4&OeEq+_>lOFMj7PJN>(076DQ(AFiA6X1UT8!WozYz39HZ^YH_M{fFD|Fh zGRwP9Y1>{E-`UP*d_R}1T=9PQB!!c5at~tOF0$C%HsfUzgP?Edi{>*N2fm!HnOML@&R z=!Fk~Y9xMEug?V3;Ok$0@j6YOS^=Uvg4MT7kndzq!K8F33Lfi|adDyOwQZ zW+hjW^fRI84Uet6)c(J!|9fY`*UseniUt3!zxUsywnazK;~e{P4zqvUo@ayqtL&a= zIqir*;)Q1&B0*D(YHYXWX!hkiGtG5UJmP$o%QpC8!e3@7Gd9> z6^iK>3^J~8oSMdWeEp(r>;B)rd}?;hfddRII=dRCo#1*J>1fYg*09O7-|f7CaNdd} zt0NN^b>^`tB)i;54=$=Oa26DA%IG}DBz>l=xNmKxbM9H+SAoevP5m!*y!dQFZW{7A zJXYe+=q=MoG1RO0*wUfKmyp;h;q#Q+VZ{aQIk68Fy@l(X#4c)(xCm|=s_!c!9pAHTftf4bsw79l6Y_Gh{~*>+}}&YpEmM1NZ%M^UwPfS<%*ffj>x;!Blfw+T%`&kc3f8?$ zwY3qN@!6Z(Q=mq$DCGC8+~xO|{*QNGQLt~aPP7*D3bva!*ELAByqL(+$06@>jyo+h zU0TJ{)Wx#G^7xx2Cxw=;;h$|TAHu(H?zh~gWiu}39KO5#t!BqszvFpF=k_Vww`tK0 zj5B$mbV`s{Amzl0zx#R2b8lR+ziT7tYfz$a(DU2jkQ+Qg4h=74s+m=_db&BT`osp? zuaFBdjXWaBQkvNpeY?)}a+mV4Yj>o!W_F!5cpi7zU~Z~HsVdua;om%soFX9yE2XoAjjXY4$x6yO5s$b;%E;i1U&yF4W@?UxG%L6`7zds8o z7dTS3d_ksbOp088_`NaqlTk7jidgI-YWkvZp?9Csfh)SD z&9x_|s2uFh)hfz$G)U%tmUAomQxH#i+O58{refZ5(o<(g z@uv?i7h4mK&feU^nph;n{qDnr2@Mw%m04Q&Bo!4x%67#_tXuwY$Jb*sp4{wHo{^i` zcVkw{IWrSyqki$ZlSG^5iC@qRS)h6FIJ;;^&51>xj4ZrDAsy=KH?s^H4i`kQVCXK7xK<{ zkSz9sThpM$u=&EG7dIDOsFFCcHMMJZ_PjvD_7z8!R_Lk+=d3^BEIldpp7qsL+bok; zSX9hv2wUMjL-)&!fGwMN1db}GcWL?QSx*~`y44f_Zy48 z@I4YdGoxE`yHxY7uJYvWvMJG<%8i##cU~DSFQVwer9Wk%s8KPasF}+jixwBZ4W=@**x?u8)ZM8nW+>11}E#2vP z`mza&>8XP<9#ukyH=3Ru;WL-e3_fc7cyk+@?AoH1;?ulhIVy}T9J%ZwlU7_l$Qqu} zzTpQ`quMq$F0~a(nX{t0rA&11E!-xaopW%FBlj%DV+&Wz?|SF?)bk+&w{?1kixWE?I&H&nR*s^zsrj{tG~_S`^BadfA@9nDj8}H zCWmg!J9IkFLr^xwa>=x5RXd~4i5=S=`S*X2ZP4Ohk`w$-I?SHIxJ_O?i^zwt?$owOWaN_T4bQ8d}wp}nHM+nY`*+Y ze=&KRvq5>`;$L0MWD94$6*J$q>&~5NmdQdU7yF+b5D>^n`S09UqOe42rK{FND;E!T zi!;Cen{rH8&!i!-rl9DMNIIM56MdvJLK=j&ZNqdyG>^wuz~?_OmN2zxSrHS*dV-TI@E-YkrXE?#i1-j^ug$i_biwtMQ#9$*oG_LEg>Ly>6%U^5R*3YU z$MS&Z_9B;NEe6Jmmo6n1W+^n?D%_>*E4u1<|F4kWZ=;iIEj{B_pWc%@%XHiJ=0&pB z`!kO1cKYCw_we)K8_%~bZqX^3vN7;!D*Ib*TlZNHI1hBponyOvYT%j1jjDRf(-w8d zD(XL%6#I6VWtsUN_FEbO&c`RcZ<8-JVwjuNli$7k|Nj+M0kv1y&RjV&bGFpmM;V_x zva)BXZA-MAC3bZV&&7f(Umc9XlmvyE#iJITa=08`d4;v?#R{$~GNz2o1xtP}TkMxF z@16Vg?ajWV<7Rtowu+}un7wr0$E6KxjJfSDG#$8D&cebm;lI7rfi^}HE`jeyA8Jfe zz3F`0x#af8NjE8AtaxUzWFjiz$GJk6`X&>J-|iy=bA`k1uq z*}~gv&*qeOZag}xyDXotO(9Ah94^&n$9Tjv9=$TXC+PmtB$>KWWS92$ZOnha& z%E(P8?e2E7U_;f@c_&wIHg)fLo6)vZx3JRjvd-&?(-n5yn#iXlu-fj$0)B~UCGa2^k ziPQ%FF)LlZV@1z7McoOVoDaYJOkxw=_Ta@)m6M)%Sy%efR^+l-@Q!T3-%dZ&$43F0N*6v>E-hKMwmIWC}yB#NNQQqk|y z`uxf3PaappcA-N^tV+ zE}5g(cucc?o||i8Sf$z+DjIrflaDQAfbzoZd{DZGu*pvv1RlWmyJ&~ zXWg>?bno+B=av~eRrIfAUVnTpYKyAeW>fv++gS25if35w@}45|ai;VvW0nsKSXmiD zqBRuTz9v7o#{Y`>r&uNb?+$m7+u3cm?*$zZW4(MKtH!zT{Xf=3tg2rlQ~>r;>KSC;4f@ZjU$pYqJUUmt(e4Jg0j@BUZhM^O#ul{20}`E%Tj zRCT5Da?8axntt`w6+0^8yZPV!#>Gap<^n%XT+m1=IWRYhC827vLBOm!i4tXj`398* z4n6kL3{zU!(wfgREk60}!{JQV#csV)rc8(3YMHa%W|!}t&k)ZzpVzeJwvO}WW=o&K ztc!EEpH=9}ja;_$txD#*)Amdyu}lI>kIvGF@0G~7Vq;Qau9M(3E6+l2<^Sa$4QrXN z{P$;A<11V~=eTU2nCrz{{h3MGO$#%;H{HpIY?ANQXOQ$sPiLrfb!2kvH2d117kXyj zv`a-YKV97gTmol5+MWAebz4mP^=Y?Ns@>kRcXpXPI>p4b_QLlgjI!xg7oLPTu=enI z$fTcV)l=&_!PI(_JCW(5SfK&S+4D~~rh2HCe)Tfmw}k)YWWhxV5z}T*USL|788uO4 zqv^ptx}DF2M2~Om=E_;qvH9$T8%dWE7|p9Q>VgUym}JAdjeB%E=1DDEV;KGDEJH$r z;*?`L9ftBv8}=reTxDeS4-Won{VQpT^qUz^k}cll<FM$d27P22J>Z&CB#cz3bc+l*(v)0XaFW0PjO;O&qc=AqeRygtUf zJDGv6iET$=Y1sl-Z+XX*85xx&49d$GnbyqURBYbz>R?*?d+F4;WtsO?cjWq2Z!_23 z$m=P*HSOKgqrbLUR!=y1@<3;#K;WWTHnF{ik3YAv?=J4BEh;EWcy{fOyRu5NEL#=B z$|N>tw)#mkCOr^hlTf>!s#RvhdNMn($M^L5PTiS5Gs@MxMN}*M-}@?PuV~2McA@A2 zqu*4Ca5-buV;>4PKhM6%xy(n1KjDm+iF&|_BIjmJ{@%8@6aG_m()WFEauZKkvOwoi z(-TFnzRZ~?^`Z=YH>;X<>Yi80y1Z$6EKjhTyC22M%aGQ!&(r*1-x?+W9-T}!APcS*9+ueI%zmjDkt3U+b&#qtpOQDkL5Saiik#F~GtMBL>`&pLGd zE?>Df`}fu8^Ww=J489B>Ri2%@$sER(h-%u#j6d<1c>B5`|LCUOJ>>tkjX;6H~B&;H5 zvGvbQMaGM}oNqJsaI$Eb|G2QK;Sl5BVAl3S7w&1Ac?-EZZn(Y2HP>>+dfv*eMN8eX zC#qk|(KK0cev)*CpNvssb5YlVnFrFj_c6XN%u>*3w+Ua}FUhOEz%t+G;9|y&9VgF< z3VJH4gG=ihKTkZ-yWqeW%hKs*5C`dOH*s8?`T66VN!O38Ja%`>udLj!VjIt9YDCR> zX0zyK&Z9S-cP<@0$z~+3Fj4cg81Ju1ld5*kp8Dng5e{!irrBjM-bypII=&bIrkd!Q9V`q63R_@@Fh6yT7qL!%SPyC+MFB=YbyC zP1;@$VnP%hMC$T_0)k=+t~6z;J?&&a_2=heMJ*vQ1J(ciPnP!!DCieT#pykpx7N%z zw~~M3)rWk#V%~gxY5YtacE6_WZBDFmuD%#}+o=0Sl97q7+ShaDtozsh|Joybz>IMf z=aSFfe4-48KDVFvo<4`I&w-)QU|%t_o?Rpdm!fB_L6`wgLdLlT|1A=l7W?;WcGc7$ z6U;7%;#l%Rr1)9choo|-wrCLlA#bq2#CcG+(swvq=vw4Y@SNjtHmr|O(sqkv-ILq^NAqD(#u8N<1) zDIZKYzZ{jEpix(LXODvQ>in?m_}#bHrhaW(e=8t+g-Ob~qay8(wkmMsoj%&F>+X2@ zo6y@GGVgh|W?dKFy?mO5|A~)EoF36vma?+;R`{prPY$iV*oyj7*g^TZS;H(`p z8I&r@cYZWl!H{`+%YsvDTefbfSDH9EQ$XiQ+yg^ypA9Jj&3DDa>?s%14ftF1GCD47fFK=CxH@8xOWCbwsS2JFVdU zD({HZ>$%yFc}7g;7jF)E#q#EAd9skHbJ+GpC-3}s`nN}K&*_?luV?Zk?Rl+yvo9#) zf$>JA)g_6C?^ReNWm&(d7v6Hq;9o?-U4sO^H>+43W+bn)O}LrJ@vDa~J2Cv=%8*=s zo}HyRbJwcAD%ZKteZO<*5tGt`D~|~*aa7zk_i?|m*80V9uOEa5I&S1U6ep1y*S7RY zqYc*yZHHUi=3g~<@P==#iTb>c^_;t=8Q%P`)JfwvgNAu|#!BW1+ti)X+@xO22%ETH zY}xxM1+8w0Pp&7eRIFX2DeD+Cp+1<|NdAL)CKqS&&ADQemiElid3(Wo)`Y(YW;|h7 zB)(|EyY>X>2PgX1)h4WXEl^PCpi}>M?f)}70-nuCnx!=9!8sp>AiwFRTKjygjBX0v zNuO=<>24LLMs?itY4Yxixa;kX#ej8rnHNO8h zxChSHlshG(vUz)W%G538OJ8)|Gu$zg@*9Gliz=qZu;rcdXOh>&V&udfmYVyhl z()kA74GS1V(hAIr)bBTZx^efiM(NSnaz`Z2UwB^A`buuvh58(YaxIO=suLr6F2DO* zudhFIv0|)vg{ENPltV`gUOr53c(?Swj@rqV*zE_CtG!QIy|0|`{_BA-KGD@nl5M9s zM{mhd(GREq_yM8!RSufChDQ9I^#|5Q} z3~r8(avGwR{I8UZS>8U&`mT2%OSocY%A#jZrBX7nrWTW9FCY57Yv$s)hn3rHXO=IX zeE#k09g|MfORvflSeay%y}aGi>Mp~X`bnQ8<4eE$7XP~YuvA8;>58&POUHs$S078Q z+`3tXx7SNn#)x~}><1Zh%;g{QbMr1S?pbq=Eqir&;^bck8eYpE`Ye+$Bg#Z{)v{B) z_bzS@i8Ftoxh|P!^^FCqdQR+3Htl4~Pi~d)UovI!LUV^FbKG~isvvbXNAI4*u~^-}_WnoTc@6IDD4fBXxj4V0 zzH+hr6qd!GTJG7@zHnw-)j#8N$%)XG$eq*opS$K&-Eh9ZCNoXuU=IW1&j-dES3YWg zfA-UiO)Nzo<>Bi77i=qM*DyG4pMT=bv&qvB@PF0c>V8tp z-+XWI`JPY)^WI074*Fl}Da&Tp{&&w~|Gvphacj8G$GwR@sa$wD?9s0LCyaes35t3* z%ME2N&on$PU@s#SFvZd?iaC7B^TT(i$GR1~yHddUVejQLmkw^rl%Ab%jd7i|MpD2+ zQ`XW?9GtTz*FSTcu;uPltLwA43x9IsJR@l&PuH%?u}E!@|w&G3EdJZp~C;w#S2Z8sDYv^e5c znRAYf|59pJ{5r1Fb$eW_?j`dtELqa3qndJb<-%a)*)}P29ad=f9DcldNBE&%G5Z;> zH@|%K*KFg;*fqb6E5H29(Qo{8;djPPnc36j*J$%T%aA-H|LlgMYOBrPlMCb~CNDbW zmOL}-N1f!UO)K8~JjS>2_YCQN(Zg zMJW?I7b=Cc7wl`FqT|GAvLr}x&VT!9_nlW}H8CxJT*Jx9xYA9!r0nq8ZC5sIPGY<@ z$!+=M4?im;ot%w1p4~9w{>ygtb^huVp3HMh<<1>!n&ik6wx~uyv?s$zo|ANlBBc&2;e3jg^P8h=y!wL6de^^Q64Tk1}V`kF60o~hQE zIDMDZ`Sj~o(xN-F+)rPKoHEDdqe%VzNNKAu2d1J1){Qd3LN>RiuWb&g;wm%aV%Bgg z`C%mc=0&QB8NVZ2$Bs!?O!K`I>kCd*-%P#eGW}JU&CVksEe(&FP2L>w`ptikE2uK} zA&V);#&%m)r|(5Ok`&wD^}N-W=(jYnb)DB6T3Qk{+sH;h`^;Pas36-q`R+|l3}Wf6 zldh?_8#XPx#iLU>_wU_}mj1qnF9>*?ZqDJq+x32TV3@LRoBxY<9<|$ZA3gcpEg7n$ z8vJ-a%igP#&HKZg??z1Oy5CmPrR3yhZ!x!1)G|-QO~NvF>bCw!qmGYUa{Ra1ex5&a z#pgwx@%7w()znPKlz;;{tNSbE#ez2Nl3rbSVFK$Eg$%(n%C3E?FC8Z_g{OR2z!V2mioYpDbR%J|4)-|$11tHXT~qH&J(Rlc+~b;Gzr4j+f8S1=UVrPTir?Kp&uz;O z-CMD>=hxqx+U4tJ`!f4@b5h;m_>UEu`#7Wpe#}KdM9-l4NtwTvS+lWXFmg zgMXX+8`a-)&v8grOgX8`@#dA&-&b>I#D)p=r@3EC$|wpu-^jnISE=J=L2Y&q(*y~Z z*L?|@)9##e^@v#`*vztfL*M!TDV#=^%-%>;%*b@QVftJ&%g1xal$fs@XN9j|{rdF= z^S4NqhtD|;mgqcn__yeImeDN^hoijacRnY`xmg#NJ za&E1&Gl=hlaa*kz4lBRdS7N~Ug$Yk8&+bQ-1IThy40fz}RC#D` zllPSLaxT$c%g;}%B_A&c@GW!J3w@GZdUZvwm{{Bb+hT{8Av*pc1*+zuX)iD3_fNm%(A4F}@fDuROIi-EJNxL>|3htiXN5DYuGeiVmNk4X@o4{{MQ5|u{+-sm zUEX8bl3Sj4P0oesoU=~(U)^!MSk_SfG?U8m_}CquFVigrxs(0AAM=YbJwIt{lwV!S z@sta-g=yGY?UhwU<@j&6>P@Z*ho<;LDTlEanf+9k{wn()x6( z=5e08+q#~}^a<4J1aGpo)9LN_y|Cf$ZU@E*v2AbaiaFbP8eX^svw!C+P;Pwb{PuFt zDgHL&(xtbPTy?Y>)OG$om*Kfpwd}1)_LfK5eJ1;NloyqTKeEs(c*XkpOw#5O-Grn3 zPqsB`z2}iXSu2$`RbbMW${^0&W^Ig02jonRXJ=S$oAIid^+H&UdG?PI<%S1tCnsFc zTwmoQTC{KCPt9EkKl-*m_PNw0mGDA&xv6hfMT+Tv38h0jPfJLzef&Oqaj|0WnX9q$ zj^-{_zT+~*oM*R9P*%mJle~ld;XqUna4X2M~YbR)(ozycSWFgB# zyQ4ZUUh16vn|HV;C@p5^^&m#alkMztw0HQI9@DoA{CfUO>iHaTVZ&hCqs_8ip>vW% zPw#oquOyRYq$MSwU@ie(#&xB#Cis;R=$D>vnz8y7=?d*mM^#~dG#5lo2&G)&aPUhBrG|P z{~OExC-+uazs?n4wYwkw_UETVB2H6aq?vnMs`Cx5i`tmQL&I`BPmH)b6Vwd8N2z3cbHSJ5g6?R%mPJ5xN{7hEi+G+g@ zQ@xGfzc{zx@tm2=AGVt;c@oLVe0}N$cB56!OeZGz9BS&m`NP$9`ogwAKZf)VL9@B| zj-QEi-ao0XdCqp}M|#Ka`!1V5_hP!*M?<|W+q9oF94@Ki+ODK>prUSh*t)A{e<+@O zemMGz{y(*a40=q`-1&R&bXAnPnDSop&z|$s<n0}(?)uv51d#9PL*qycftNoeW zcS<|Fb~Rq;e8F@z+Ijud4?8}X#;kpx9%~@zIPs0Hkjc{DzsO5>@n=s&@V z+C>ZP3@@?-RUYeg&@y6^Z~OZswql*;%#TykCfKO(`-jh!@%wg~ZR4z>MaJ=sRyIwWAudActK!(chlqr^NzMLJFr*7ES|B_!K<>~3^*=r}* zJ0rr+MSn_)^Gwa9@0stj%W>qfzqtA|{oX{I!@nyt_C1-tx8REWM1{I-FE%orkWIN0 zF^OF`WPQ)XXOeDU(-%a132zB$u#UGrwgkq`f$ zM{Te#oY;738HeyiO)kMhR#k0ne$gvVJY<@o>M-X(%Y;dbI<6PqxoaVor<0z%Ur5*W z&r?C!^S5i~S029GYHstr+}gJ7S!I#hJf*w{B?kK)9Nja@{B~@Px$+_-!PsuO23x_C zj_G}KwymhLU|`FTC}w)hC=#u3vVv7M>xaf92VNdAhLtMYPPjh^(OA^-OsVQ^Orpqf z(d(1{GkP$#3cuk9voKu1W_(~tfg6u=fl7f#zs&!a8=5xUKb@mxjUzBN=DA*&f{R>mmd1ga&e{oV2aZX}cNFy9EpLkW^38N(dYmE4;obJadlDkD?k=3m(9^ROh>qF$W7m=1Exnm zo_OZoRSTW>H%cFh?q0WN=kHUsi=N792RO=B%~B9XrN&{!Xmf@psDlGtbuS)@%R%=GeQW&7Zg3s7=aoV4mi~RxsnF z;Ga$34tP(Kh!0UYterMTzq3ky*Iqpyo)`umqeahiH{Y3mEM?y#&1cBnwmdow0&JsAP!lvkuwKQc#Q5&zBn@eU=*lvD~#tvpDhoez0#%1>v-FhSp zlcf^uZ|o8F3X8M)?<}GGj7xCCMz?hLX#z5gPgPjB4IVg)Pxj$0QQ=HJddzyhdS}xv z>G#_Yep)nxN1t=j)1y)<{=H?PJdVt2t;R_bhuUSp`MrfpYSyeAw#jq8EXjf}W8{-5(cbFVkE{W3}A#nfkNiyN3u@G*D)DR~EY0rB7EDTfm^~u|@i`+t+=P zDyM%>jjcFusFLqF>%}{_7#6|mu359?FLpREXgV=?n;9f=C{}SW$!tvTOR(r#T=Dtc zr=t%f?%8%dH$5!yxHnMGA?HEk-K6f&)J-8Pj}~2Av8L|BLUxgUrDGP)4RrLyylam0 zw0+n1{ZO{Z>?mKm$%;7{4-?sMH)+k4P!{!*XVo~cn$yQaY_Ymlc86%wjKIQ$T&9eb z5?>cKn|CR9^gXb1{X9uA^4`bShpg)&_xv(GA3S{lPpFN-r~f`a0c`BsWXxppHf$De z32+p&PC4-Na0kbRG`o^N8=9<|?DvE`P+8Ki62lRc%50XPn0m3u`PG#V?C0cSCq=AW z+|Ab@a`S%}OU{-+JZuUPHLSbkcX%_PAw`;c4j zSdz2bc`rE?_PGgj<+phIo5d7=^XM-arCP+rzD0JE?sPo{& z%|pEj%%T$i|Iaad!xr`}sxiXkx|H+Z`wha3$Jw^Kt#JKx=C-o0(4NIBKH6@Sytm$F zfApk>;;+`L2r-%Zg`Fxm?7?g#p3tL}@VUdO*<=gHq@Smkrq}(Pc5kMB)ue|G(Hcfv7$fr{h9mejzrAO{$-n1;1^-?a$S) zkc-d6f7+a7GY$r+iCws%!+!YK!ilSNWrd?YKb8>4YMUkE(Hr#n{<7?eS)2ccsUO|) z|Bhssda~9%P0tBRVgia?EEdLV`pRBbSSf69-^M>Bac9KGEQij5c2G0w@1GMLArFo` zIPt(E@6MSE#uq1kIkEe=;C(-r!`$x-_bk4)+@k3wvsre5;c+ewo{RnLCXGiKKF|Fm z=9(<%5z%V)&jU)nRz?eOi|C6$KP z5~iQ$?^52uTOei7bo#*Z;}`BMm|@(Je{6ZBvk>q4@TTW?U;Lb^G^_H*0a?a?&L0ft z{F-{7@EIzx|EJ+qVVU6IqxiyeO)ZJEs2b$mTQQ)0Ow7 zR=O)e*G=RJ0Rw)&vq{hGFiwxx3GBNs{BS^kWP<(x;;jR^`Xb*=w2%)6zs z`@@?H+|M@dS+Vo*>xIkqRn^Zovwh>tA60SVVBHZ7sb_&Ar=`mz;`3)ee7j-!`{ft^ zPE5GBNn)mqY^)xIslzi?HZpX(QbTi;t@=3K?*3{CA)zUu2I)!K!2U5vTRPNrm(byd{UG3fh&dV3nwb~>ecNRUL(=3{3BBY4)fN`nITbR zlyy)C&Sf*kRb=_+htHa?No;Uj1_mD_n!7tN)xBa7aY3k?{k^L2jev ziW@F)b}VRYOm=6RlEK7!S;C_52tya=f}95~V&W;u5fh%Y2#cheI55jh_*-CfXp^Ci zN6{fp9u8?nj}r~jc2YS~S7LtcXR}=$()ujVX7l#_pM~FBEP86|D|_$F#NUfFR=Uo; z$jfQ{;Db_wZpMi-g-1D}4joWrS%3Cy?bXvwI zqo*&(bit)<%HN8%)XF+li+k(8oY}qCaL+uokD{mh-q>C7IdH5&&pvpHjpTxf=E89% z8J2+)Qv;kkOw%SPTxJwr_M)GM$Hsq~@HELU8yqBk7c{gP%6k-ZBy3qc`E1Ut3_eeT zJwJb+(e6s9@cnXo`W-2j^ZYuC8d(3>i!-w~yGCkFu{gQWzL4`Uv&f0WU4Dr@HBJSG zZ#IfpNEqH+VduX2wbz@4Qb(S<9u|z>bot@mLmzi9{&&upXEzU%tktoC2Kf{}ix$gC zTRk2!_Q{5?h+V?Gf}u}F^~{R}hZMd#y-Zp6X2HA<2Q+=A2^dI6WE3(z>eaShp>9*q z#KaxI9`qogrE`wXL?OXBYCe9xaU1^EKT*rkyCE<=c80wG&#l{atG8;uuwU76wQBXf z`k=sQcPl;Zt;(AJtFxT+RR7n1TToIlJIXfmuX<%dsL{<=fA7!xvcP2fU$d=2YyW$? zthu-9)!#6t=*fDq6Al~{=U_hmLcP@C(Sd(uJ#X)O-T2qr{`P*sjXLck-|n}+eg5D^ z9benq`rfS7uL7f3ep~)JpS#>o@ND&}G|4^kqQQH8{_pf{4|Vyhqjhc7#|?k|+v_g< z7gN3Uvi=g=xBb5Db(a>;|I+(>dE3?7b+Z?R-Kd|$_HDoG+6}iZe!G2T>8^j1v);_y z74qJG`$FBTum1iw)rswo`;{LoBl6TOEV%IGQ?LJ*m#pNzza!>ly`FFEy4gY8|F@g4 zyYBS-ylNNcA&oxSo<|7}|NG1ezv8>{OTBmDg;&osF6wlhe0C;CYqIOnAayk*C7u74 zvSB_i)Slm&@w$FOh+B02zxnOkX375jpT!npeXFj!Yiq~9$!!rKYh0hyszzleuRGR~ zmAvi#yHJs<^+LUOwUwrpzb;l?`v1QA)@z%7{Lh!l+4}Rpy3UN(&-T}T+MH?pfBw1^ zV%z_Qoo=}Fe~IMp`>(FBmP|P&Y+akE__w}WCuqy&s)HH->}7wge7NkHP}0FTlPei3 z*6J%tMd)o^!NqGjYxOnf!;?P$=hVFB^;Avm%c`AGj%&nLFkFoIZ+YXD@Qt(o1%kAn zTYbKAtLmzuQD|iezUxi2rcb@$7og`=UNo^!JM8j`DeSJDX*WGD=FGQQ zE;2vlp3#E2vqN0p%Kwwk5A|{tmQgWL@rg1F_Z3#vzhZJTD)h3;Np7#WfKP|KV}-6P z(yVOc66n3ka&i^l#-^CH-YqSi0X<9g0ux=9PT#fa#?p1`OF08xw+5|TawPj;a8Puz z-VE7JKHs9!^`!#NF7;j-`KTci&(BgI47-R-N?G}$)c0zg0j@Pgw#T>N%mxL26A=^U3=A}yYlF?9d#+XVnS*z-dTpC zZXro)^=|OEZE1PYI!n#MBT6kmRL5bpdPI;oZ}((z(d(ACUzWLOc+A)mr>c^&D}qr- zZR7L_ua|GxwTfY5nu~@0pRj%nYt7otf5VvHzWA@A7&hPf*6#DO)-8Lz%yp-){A;W66YFaGm*ZAmu2oge&_ z^~?OPCT>s?aDZuGcPp!^q2dqvNp^-TORTHRiwza&9ij4oR|8z&rLsdd&!C= zf9y|9p7iPdBAb;r>h;*fR3FW(yqzDoNch|Q&xikQm)>@*Z`*x0%jTAU#ReM!&nYOb z7nPoLv1Jv*#=3vk7r0oLZT@Q(+8FeIr}&K!R zAOGxl?K6)-~2tvR>EEUX}H_ejRJr(N#`HFGKjU(yhCV30IeS0fmd#vJ>kv6#ucMk9&WJV?f7pN{U7M5PHW z>_w+In0FVfQhLsTGb{fK^DIsM73rO<*4<^9Idj|nbw#H> z&ws+O+bh%N-u{}OpPrtct{=azLr~exhxu5?&O=>VD>hiYjCztAeB=JB1qPzRnp~PX zGYpazH8Azm9{RULfA##mx8^@-;cZ%5x%%JaSsPaK23OuU3f-HS)TtXBs_!+WL**cY zN=uT_ty%xXFFoyG&EYaQ^l!8Np?_Pr9R2SadCyL^-|rZc-sCgzZrC8(%gXaKM(%ferxHqzBm4#4vK9}SuOYG|NqYJ zjJ-FFLig_cS+Dea>9({F$5xBkZ24L*#Q*L8={M7F&APaycw6()*HM?Y%>3tnD(V00 zfVBNruAQk)TQTG1%M1M9%;tvk-kzV5QktdxEl76F|H&l@jZ;o3dUCZh++kpl?n?N$ zpo1fjJ=|hLlDWjD|E3YSzN^yuHy@uMa(0P_J{ zkG*j%UF=RSL5{LZV!r)9@3<=UfBkI*)-9P6esKm(PU7|S-KeRl$#Ua={VRrV|K~4K zOl=5Z3^HD_Xvu;b|Noz#nz8ri|B|JiJ9l3744-xNqUnP3Oe^(fz1*gLEhtw!`)pJC z*01%G__<7Mox&W0CcWZNZ|00X_3!`0vyU%+Q~!A5zkK57iZAt-gn$2kUiKzPH=zoB#elzo5lpqkix*pP34lOU^Ewz0Fu7xBgOQdcZGx&Ekf)|9SnS9^82RCh&4g z+sQNBPB9#tT2hLhy50J3#uh$t%1oIxTmO14{>ynZs6FeSJxEA$cJtPM{z7m6Ki+UP zEH~|R((C21ud@EK*(4cJQ*;|DFr3>Xm+-7c?=}@bCRF zSL5lutB;-f@3|y&m)KwR+Hdy0yTn$y-`>CWlIdUnPj9qhyZ79lQ?m4Ly_GX(YGQrR z^r)3#zb8+*A(C5Gb?x~XNu!&=zUgYOC!Y(s?EmDj^RNAzXKkLf(?6`(=lX_V)5!Uv z7tQXfw_h`goWEw9&$aY+SL4X}a~4iN`70sRG*&(RMd~KY(nCJ~b+xt~%bB<6?d2~b zZ*6?P*_fY6xhQtc@bCU>t8$$$3rB~4OQ|X03cWnpYhl*5``>=d+4z5nSWf?W$`xZ&w zjA#Ed9X2hP`Cr<%Y^mAjdge(hH%KmASi1IR-Rklv$N!$!vu5yp%G-MH)n|1JAk{OzUC<7S^i)Gag!A>oPigroQ`X#FUx0zi@`#{Nm~L_2w13?Jw&mTsdYqyS_SW zzBZrglwzOqL&>dWS&P104VxQNSN%@p^t{z`f9{=k{q6uR`ox4KIceWx~WPiLH< z6&cFq{c&6FZL>)e6lSw(?}~i8VvRWO|M`lt8&}Eb9Q~~;KHKl%+rPJ``96Q}_ODFN zWlf!bhi8d{mB}uWOMglt^WK+eQLtjd$)v*+E{jP_UlV`-(dCn zNeWZM+~DY91D*q~uEgcO{abc=S$OpIYlddNmuH?_mf3Z5%DXowqRf7Ri{UV%Df243 z!Zo6@im&FJT_*Z^={1YOjZvm%v6-Php<$V4|K~10m391?^;RwI^N%Ff#%&Hx=a{xB zOx<~13EOO@jf-;r7y5YE@`+yaY40(bvms;cT_z!Wzv~KLTTh9~AJA+*CT=IAz$L%@ zbBnh55)DRm0o{2HkGbW8)P=k{6v94CsQ41VByM!4(U@IKM)<;pCT@d(7RG`bD-w;k z54-X9NlMOe;GG;PVP%yneo?C=?3p|eVui@%#26(tCeqKmGr0&)TIk-)?{D)B9JQ^T0A=(`P^59Pyj||GKN) z8bu4Y{d!$Ld43xEir-v&YF&-Lp~#gI4Ly^ud`Gt~TDIKceM+f&+GQ6OeeWg4*S^J1 z&2;|1)@y3!e^0lZ@Bi($=PnV@;Rs8gd*%0mytyIOR+`Ih&KF@=J=svS-%SQ1WqU5mxS^ae^-a+a!u};r*J~i^Va-)tyRXS9bNhA3bGFVWemwaQTbf;XT^Y`-;Wob-+a65VVGx`uXYWUYD<-J(qs3v?+<)`7J20@@{^uk^|o)!$g*a^CF5Lh0K=RHZz@d?v#}N z(jwmn4$?lAeSU|padABHsJ>pg)3E5CtQ@P<**IIB^v|~#Cw|dmc;}~l;ch3ZtUp7{ zbHj_z{Co>19%?`I&Xz&nOp0Hn=ZCyU$*Sak*Mu_eFwOlhzUJWej^k;UF5F(aYYp3; zJ;gTsl}4W;X1sqt>;0lKRi_$F31e8r1BvxTmCp33S-yQ_HFf9L1JE!(R8 z-c+4@wy~qOrTS(?cDhwdP_ORuvp4x}onBm4_4i9?0zadIdZkQeWXH`D4RfA-T_&%8 zaP_999oA-dmi)Y2uiAI(|If*f?xol-<>b1vv-PEz_Qm-pS)ZMoTHUm@?P#M{%IQ1Y z(-NlsJ-2S&a-LOHH)OXih;jIFAbPc0*W#L%>&b^--Bxwd`NrQ6cVgGJ6`>0sv&0K6 zYbenXwsk9zKK|`7@5S~$3+Hc@4}@GQF8uZVxX;4pTbS88?}SYyKRB&T&)?(L`n+m; zRj2C8z-Kd9Wf`WItbW17yY`m3*Br-Q$1Nq-&V(3lGC7iX`HvefN233nMm<%5{NR$5 z7R8UPrjGiLR&02`_?y0Y(7bo61jVk09cqdGpSn^o>AHOIVzu2$9qJ~<(N4h}8~6R% z5Eo*T_I~TG$sHO8-iqj&9ow+Tl5OGb{Lu6rhx>$%G@Lp-<;e2FZVMBoa|XphQIi*X z$Q-ggD0~0n77dqemEJCzdehHNb_#ho!MI7(;vW82Ed#COAE-v%))I=UJg&JyFWWPE?@eyBWvGk?mrrG3I~MlaBd3`X8k0uuw9@`cdfFO z1Sk95dB0BEZOkl6Pu;<4@ zTdNhBFC$i1tSFB9H|ba9v-&eLc<)s>xfV7x1=<)Nc_4l}XTsJ8ovBH`oNF$wS#@$s zeK&z2rjtGYSVq>h1GtR=BXV4RmmY@^~d*q zHA~5K`EYkr6T|oA`<>p-)Vsp5zi;o;x5=Ik4|Y2@*dM;OykS|u9(9pVdav9MSVVI- ztjJmL{JpSD(5Jkw8)tlLQaZ|^+!Rz{7W`98`H^_ZyNCR{rew@rbbEov`YP*h$MqwP zKk2n`C0EH$)Lq7AXcAu)P^*z}X2FsM^S--si%Uy2FZ~HBSY!Svi0S)W5x1jHH-;$w zigjvYvRYKEN+3|4hn2}Typn=&%adDDN~rf?f!eb!*tPO z&gcVP1uq%m_Ug>wefO^EfVW2ao~BQ}Qo8aSx42fcZks&+_C@_F4J{4d|C~M%yV^Rq z87^`J%$2QQy}ys)xi>?2!}SNNcKYY}%-wTPF1`C?3VYL+<;4Ym0Xvx&T-AR=;y80E>}dF1LWL<}cz*lRF$bo6nfOylty?B+FbLep9sOE)%9(A4 zGJ{rxFV9!CdhdAs4x5qZ(SFr?)k_>wr`-y_x1B*g?;rOZAB~EW8%53q6c-#g$L^zH z9CtCMS>UdC0o!TD&KWN^^IKk#ub=+$JWq&sqtv-Q`%1n~Ir`uJcf`G3)*0*DB&V=E zbdC7CfM-YhZt)LJWyLaUO_yjMe7}72fe9uDCC+cKHl9X?HbWxyK?75DrmeZP_yRKTl*&I4~YJ=K}kB8>YFmgHk z$EbPVHOq)k;%5Y|UQrIKs;iX$Ts8Y&`V%eAl$C9!av{Ac4;<92r{~P&Gx}a;CL8lX z%f0OTKi7|~EaG=%rM(}gsxHjlw8eIT7}K?q?O%GYPAl1biv7cyi(S#TZ=5@sv;L?5 z=@cjNw)`b4!vCcul~n0xuGV1QaWr^3yU5APKqlTjI~Hjkke?7B)N$;8s(p!TPI)(n z<^!Xe^{!=eI~+@oKAz-yQ$6kFQOC8?oD+}l`d^|JP@;37boIKG=_fxmtl0hN!oGxg zB?}jP5!xLS>#g`)B4U-mGI_~>7FVSQuiYMq^tbL>b6ITK*G+lHCh%g<2F;0v!1rgCG6!|{r4xBw;vNcGb`qBpW5OwOIB_# zHT}8XMgeInHD=y1o;J0uAv^f%vaO4j?vD6qDKm-HF?i`}2d_$*sQITGx;`iM|GUyt zczMIte~aF*>`7F#C?0I)?C1^N4z`TxBb9Z)sxr zv^k0QG=$HZ+qd%YFIv$u^N>dH!`KH(-rWtyrpy;BE}5{v;oqu9_nyx(ybvT9c=9NR zoM?uY*s6IOtggPe_w~o|>s#5Hc)P;e7A;=1LI3u`-X#hbEcPld)a_n&J4Q7APY!#k zshi}{woS@knvOlc$EYs8{Xnc;;v>JRZxM@fU&lNz`r+Uum!JDC@k7y6TqlJE3F58R+E=xGr~K z1Sw)*U@!*LOkl1Dn9abjZaOoVH4%CtMDI2MZYE9!28P3XzRzH1NXbvuOGzvN*%*?M zn*`Fj?G^)rELaZ%!^&F>42+!te(tX?_wfUqO7!(*hT^vIy=DeAkSs@a7t>OMF)4A{7Xe+8PIw`zS_`OI$ zVfG0lo^=gOeGNHHeO+A&R&^a3rwke_7IbtiQc~a$WShdVsZG|?L!q%nCB^@JbgliY z5{?$zCCt};+k7qgy7Kn-d9O_F1b?4X-KWsCsG|i8j>L1#TrN5R0#?+iFgrMbz$5*R z6b274_`^Dphk+9WI`=C~VpLEBfsf)YMhq%o@UQ947RG{CS2Vx9yL&pm^m{^G-M;0a z5CeDQ=AB|Fu$uej-QC&W-rg?$@!_HM(%{}_tJm-Qw1rCu47Q*3m1MBAw0!dH*{2VO z`8U`6EZTl2$E^6x4Z}Hp>bJM$DjORM7fAASc6R>x^?Ln{x8GJ>z2p4m=H~V*S3>+( zgIuGiSQve03gd(+Q(W5lWF;(%R6095^D48lwC?UIU7UY^-=EL(|1a6FVZx$CO0!I} zkFm?w9B5+Yo?)EsH&y#RXO5Y4{{FvaVXLoRUIq5D#~q`t*_nSn9+x*ReHHR<|NlC- ze!1S8Imb?)=5E-t$L819*Tx|0jbn_Ilb_lizFDf*El*}~%d$Zy8iK5scG zrue#NR{#IGN9?&$DksLKJ$>gn@jvX>atr3Z-tytE)`XJ@uk07P@H@93`tWd_A;{tH zlJaga{P=WQU(z&7WNq|zH@)e_-`+&73DcI8lvGhyzq~a&JSZrLgNtj?mMtRo_V(A- zL>@lS$h`j6^GT}S2D8tC9DVTF+1Z9Oea_42|cim#6N=L;xXPc5w8oW=w z@H6D?Sx*lSj}T?^H%uNL9uIatpO<`VOD4k{yV_ZDwp9hs&dk)l^{T|`(W6H;4wX29yJqPJ|n-zna{d@uWrt=ZyMbNl#Yttz6XW;u$uo|C=pc=*;m2i_SU ze9}IAUiW9#qDk{NE8LkAqgE_C^<;B%jQi@e2}J_4%2|H;R$c@JP!^B*m;KWmwpVj|VM{OSrZKbd>}IV*ns;$6-8@P_A$D;F8?{9Ap-@ZNj!i4~{+*>X4=g4>ZzHv z_Lmf_&Rkx#<7DhV;f1=<4gKr0Bk#Rzx#Z2{SzF_vR{rycch`Dl@dMYdKjka1aEPx8 z)MLTN^#ox?E4JyYkqgKYM7 zC`!1eQa|;i{DG{^57&SGv_(p^V4fA@{@i9eTSXm_Puvfd`#$BBt6_L`rR|VX#P*Fb z_jaqdv^O2(xc~RXq?0KIPXsSiIhXO}+^Y)IYghmOZr8u`P1)fN2?k$Ya=*Pb^*G;; zUkyi#TKm4=ueS%`c0Sppx3{*Yq@;MTHMF$2^g0_csJzo^N&9$V=i1l38%0dKe*A9e z>g`#&U|P6VxrK}c`*-J+8n=%$)5FatijkU2Wn_K9JV_*>b`}wy%$3uHV|y ze{%4pjoM#Nol>*i|KZqiZReE@D{dv2H{EEzQO zI|fe9&fQ`s8743+*s){BDJ`34;?oSOZdLb4TXsxzu6|r#Wm)k?q_etjf%yyugPA%V z4p~*t&X&%bS9rL zrW6JbhJp_d9Jl4)k5jE(I{);upUc@7fBtsJ{dupC+G5Yc5>3p1BR2f`efw3k#;%WN zCNf8vr9E8#+hB(8o=sK4xv#D(sv5UXnPXFTqnu@V@RRQQWs~EBPD$U-d+<-KQ0MNW zRfQift>R_Ly2=u^?a_lR&Vh<4bDERG*BOCI^gFyBYz-_7vesoO4-d8G+}-tc+wY(g zPeo!sJ;^bP{&D`feUZ^y9ru4WwbgTH>#jSn{}0oK_%lzQmpCEsStsV3J8H#m_svtXy3l|BQt^+X+kQG#%)id){F%!2s=Za=gx1aD z@-O(!A70;o?UYwonAq!UYabtKJ~!>yhX^rWJj0;)Dr1%qQ|R z>^In5eeOI_98VyC;)1c&bun z*S8%xqOD%t%4BkHT}4Yn!|GSJR)uOa1O)}HyOnloisp>7Y4>Ws$L5$xyZ6Z`8XHeu zv`Fdt_Y{MIFE0Xp)TX~yvA4fp8=)iSH_zteLg)4iuTS%?dwP2M<<;Tqck7+q*3#ng zRp~9$4{pUSrL@g64;^w65)%6H@wmLEo}Sy{ivm(oUYD2oo;-ivePzhKYZm|ZS%v9V zP2M_NxO0`Pn@fbiRwri0#+jGhl)997U%3XYGXHe-&~;4>orPf$7kW$O1i22WPF{ES znNjlNSBwh9T{Ry!G_U#NbZmRSdcf*~S>+ehZFoYs7S))Z_*?p-L@F(FPo|V0mzU-G zvh1U;oHco}ZnD&D^>Jxb+QxTd&4gOMSLQnM!HXL^q5{I1=kAIPy=qtc%b@yOj+*Z* z7cVca&(F{AU(`E&y7=2$Ta!OLIH)nzD<~*vhIzi+{kq?}%l+miJwDbu$GW_4dVJl? z`E|cKZ*ETCT>U-o+4=eBFD><68Nc6d|Nnp0t#dG_((1?wUp<9K zIv`GGrTg^XS~2f0ua#w3crd)aX&ukOXy#?Br%#x6lI7pMO^K{Cy%d)_uE?Ha5I;Bi z-om`x@0AO}4j0dzHU0H%gIlFa-Ubb7%y501!je>{wXgKNR1W>CEr^c} z(28a4EGjzih~fU?f=JySqiuP2Pupwft$ZRp!PlStAYbsZKe0+JKuD9yR4p42su04g}4)cv1GrgD{ z2X1aozqzM!bG4_1iOG~5J1pAx<^67N%UvHm!);~ArFF5^->ZAw4qxPM>puP6l=))D zG38Ls&!1zW|1&Ygq_%r|Ka9{Sd0Bk5Kj+R4!9Wp7+bWaTT_rmoRTUN*K0em#yf*Ce zmdxNqix;nqy}eaSP+0i!x`l@I|7sR3TIAv9w=8UJl*UxAJ$v@NxVV@-c$v@2Etk?V zGG2(X&1-3CIkMDaE5o}akSn*}uRE>3|4&og`r~=qgV)E|%2mHHv?_ns6SdYYF!JQ> z*$?`2vtJ5?d&<@DPyBspKSwY3`hSi6a~jHI6%7QwxLsg%e#H3W&+FB7DNjyJTobXe zsilRb>g%h}OzGv9U)F8XuhyS@^3M828jlJr?r1YF(%7Z`ZBw?C`uGa+H*mUfkZUzcy;?qPV?PEUc_|%Q$cS{r&y& zrd01IMV4o8*?AniY0vRxujT*ma}PbDH@uRUq4iLxOvZr;x8H@SO%9#0;`F)G zajcFj5{|_F+P?SCt*3uM6>Cg)mN~JZWn4%d_{rkb|*X3uY zsj8}iT8od5_is)<&gVDBqH+Iz`>(IBFOT0}SMu^w>#ow*VLRI-B_$<#-FB6|?FxH- zxKfd)I8RD&p}F{ma&>_}H4a}I&hK`t4S(veoWsuQ#U){-RsVK_JiJ10)l~)qsV_43 z_jdk%`&%sy2@W@`EcvvyXB_shZ}F^JbQ9-a?R(n=5KCpX5Sgp=e2ZE z?Cvt3ITjOt{P;0j&QIj1HeZ3R@btOyRla)DH&=X2vMPJi;j~a;TVQeDTZ@x7*G&GA zVS414i^A?!`vt)w8*j_5n6mxfW?^ri0;{`U)ocU~F~z9X^)H{U&ZafldTzlV9t*vy zoms4oFI>xyZ8U!R_H~QXgQGi|9=}|7$ev;2R>#+@Vb*he+HIFVJa7Ero)5>T25C@_ za1qx^GiHbQD6hg-e78(^R<2WA-?{Yz)2}bWSFKmXH0Iw`(SudCtD6C z6vUg)^qJwKCd1eMyTEGh)Oqn*n{U6pkz-c&=7!_xy$(d5b*G{WFcY_~8CB{pGC&_kI-URV7y*GwXG0-oM{| z<;s;c9}codtPPWyo_loi$&?i#tGL>u*6w?>x4)m?(b4gGPVvv3QESzdm7CY^`_<() z*J>*Ns!z;5CsK{J+>6^@@>};&@`EQ@NVNa3eQtQB!{I zr5%%hT<>(Ln;rPc+_ywzkw#J3_i~q#O19>cJzh(lR$pCoHS6Qouc`_P4G$h9G&MDS z`2PL)`Sa@!t@c~)yfEO-Ms@GCVW%hi+eIGyz_I4;1mlzYgPGn1bGx6zFogZ_9AIbSlzE?x&LaCGHI!S?A{4`-g>z9q*Sf->%&)H2w6` zcb_+jf?Rm$@ZpuAtHmBZd??DNzdqW0$DcocUR+x%4XR=N?f;rE*zK$1DC95ra3C$p zlw7=YE#tntlH=n+@O)0YcxA34zrl{xdvfR#$pm}E3^R~xdJ)dtN zp`oX@Y{P~LhYmS)b#>j?U%&tNowQBG|Iw*a>=(Amx?E#g%y~_1O8tUj>5f&k zr902^W!JGCKPszfyW7cQ!Rq^8_wRV3CE8QPx9c1G&8@v+GkuP&i`^ZtGV9njPf+!{ zx-k4X;|>!?E{DKQIr+KfpS->~Sj+f5`Lyb$bZ)UlV3=dPRJ^>5n(g#xcdk|@d3pJo znmoP7b2Yjoc-XkOxHL303ZyxI{`@H-CKePF%_! z{QfO0A>mO~WyLM7_hjkxxT5}rAzBw%TZEr2->(|paLl{cM=il5vXe*ud#`@X&Q9BQ z|BY|{9}EBWU0Ydy9b<;xv(NHBk4)wL)39-IUJT!dHuS3Glw4(dmw$cE54MYdpATOD{pz*o%~rLvy4r@LkF9s7 zTKhi{5?!Qf6mfc;@J^EzZ@o9 zd-?L^l4Z+wg){4^TCHPMFI&H~@XT5E?X16k3kbb9F3&#s<-LVA?RB5sF6P{*W0-xm zF{YOH@v9e{8MnVJJHA)9?mqL^sL=N_z$KGJ|5EPXWq<#lICXNd>*HS%J?oC>Syr&{wDk7}?F(;c$FH+1-Pe*V*~*Y(TQiSaRn5!Stj>O-v){zkY`YI8 zsXug3yD5I(dhUncA7!|{>h1l%^_PP5x4B2N%8eec{wre_+z>3{X%~Lx-DL3%)-E|^ z>L(+QzWHT5eX}^v)K`x@MYvc61qHWcUT$-jt86*g%q}c0e!N3aSu6kc3T^hu#XD~L zTw?lg$NRq@rgs?{#BZFQz2EdlWiliqwrsJLcEdZ)0;*d))i|pZCgxM=nlY zzJAr|_v%Fvo3-aEr*koAm_>aI)0Wu%p`6Q0SLe@5i$q4LOT}LpmZXU<4m=&X>7~jd zj^F-I3%@lrUcR}sr*eg2)nwVgmNibwX|tR2g)eKE-jw+Kk&lJZF0Ot})V{~J4<;BG z6h1n#dfAk({9H?aGCQB#&@wUcgR1lT-47SPtc~4xLng;^!rN)0f=-v!KI;6o``Go( z^QGALoojCJ70F+pRO7(1=C}NsyRWSFFvWb@kP)%}uIlX_%!iU=il)X_-tM(lST@l+ zZ`#z;*YlgBN*C4%PxyJrUhRN={Im6QcX~NFJ&HS$tk>YSF>sI7N6&q+|Lyzc+B7R1 znA}`_X;-Ao`m;Yps+x~^yS88J^}JKfBA|Iu`os6Di^8-88(y3UVEg{EOT%g9y%+DI z)i`>7MCWI!o7eIj8j8 zmY3}mX{s?T$&fg;>#pPsop09P?uM}z78YK=o2D`OWXHPt&oen0m6ViDoVa?q`ax}8 z|2cDH;wti_w8Ph_7#RtrP2H|8G~@QJPmK4f|9eHI)Mnh@ zT2#5dZmNdn(qB_2OxRKW@dlTJTbQ0#Ym>X&t3yBU)I^zO9{4z=#3k^^?nxC4`dg(I zpX5>Uskjx|vUJCh292&I^H002-E}2jUt#j;fR&+l?k{9D+dcQtqD!k^Jz5_s`09D< zxzksVAFEB5yskfQ+SjInE~T@t*)~1-si$+d=2I6>McD4(~#abnKBJwN+iDJv=}ehhcED}HunW_gvs>YFWhro<-RFE8_Bf%d&85Y->#x zYu3l>t1{$-Pu#aUx*+J(#+!4utdl=8^G?tvZeJIcs$lH{v-8WA2)=mi8nU9V>Y?3~ zXHOo5ZZ{Px6|h@azjnEA_faP&C#HVeZ!>P+2v`|X^Zjo5m9^2^oz6Btd6Lp6XY2L< z-`}NMc7cl3&=!SzIU?6}1EQw%Z&KjY|GGAv`Gmes;?wV(Tk_jIBrLvm*_aDNqB_P3n>wAyri$8!YvsW59!XgD%C35IcI0_^IfUZ=6O#h``aa6T@|{0>H`mOLwnAvLdKAT z!O;N?`je0IEY05i?9bzq?eBM~A7q%j>(CSa1?Tl0UOt{Fw7W^6BIgr(__l*TepJ-` zc*wqBPrKWh`OoulbY#rT%(VIUpUJuqaWMKF$Y<}4&sy8Ogc-p&Sq3h1i z>{3Ff$o+5=kX2gRs(OQ!ccb#M&;PpOZ){QKoO`bQXt%hqpkU$koo0FMd-m9Tdw19S z{5;!0t=Nx>i!_Q}Tu@|UX4XzI*3s2nx?#hIWyUg~-lIo|-&RS6vfXp1{N+62UbSM@ z?Np1kX>X3L&gb1@%yHtXR7w_alaJfAR;7Lap0d2I`z5(E=G+X!50 z_wD_C|I5#E87xXZFdXlfXI0B17?mc}@cP`)1v_+b8Vsu64zQhw?Wi{x>Lut&2Iie1095Lpz^r#mlAB-@W8K z{jlJ}tDgP|Kewn@EK+3<3lUp9u`CxitG+@ zf6aQp3#A3qGTujxc>%__YbvS)j@Mwg13+NG`8 zsxv>nGwAHJzFFnaeQm$r*51mR??GbqKbk^T`a3x}JyMeEJtNHWa2ns#JW%Q}&|mmM(Mr?)d*VcdGM~YHe)|tHpY8`m#Bi*`m()@T(QgEBV z(;(I5qn3PWi6@VQLBpFjIY~)L1r{<9Ys2Cy9_dbKPGZH~T zK^eEUXojtxI#JnuQ|jqyv)^5RSrVqPGx{#in|ICqrN-^s_MKa}cD=B|n`Qp#y0uo> zmfMoWK!O+F8fV-;;WGbR)S{aICEL$hZoF|fZ2rHc(eKpXE%Hy--D_1*SoGXl=GHH( zle_OdT)B@+%FX-te^r%tWlPrX3GH?lX1uF)^5jWSj(d7~y0EP5+sx8ctldWs?Wz3i z;p6k9Q+-~-*H>4stP1VkmV0|s)>SR5(pN{c*Y9a^Tl{g$Dj}hA*09y0OM@aGzsk?K zw`b<{xa!`$)!(mK+_gEoE%)||dwX{;zq%uRLKwq4p(|OY!OQ)YmcG7L^YN&-&Br6c zFTPf7%ei^z#l^**zP?XaE}xh5|KH#3Z-gdH__6vyiPgvN-}mSB^-h^0a66XcW46sH40l{BDl0!eo1K4Y zfg|%Y{rGd;`ujSrW|hvrzAkpQczn&or>CdiH@0L}QCZczXpxc(AA4qIW=cxRgA%Ka zH*-`}RX?6JzdvE}^uHC(tV^;j?ie{gj zZIt4N?F$w#%szXpQ&|1PxpV)#CH}EBH!k&_UKQ0_&367t(_YszX~qq|86+Ly0NL>C>uW;^o-;Fz+qY~n*_M0T&B1|Tv0HD_(^FGR zUR~)-KHm57MsmMl))kF!Z*L!eadGj_m&@lDSjd2*`1hO5Po6*je8%|vhV1KlT-@B5 zx3}pYZs%XVWJ$~0+uJwS{w}Mjsi}Ceu>HfgZ_h5e%cnj)1@@xfT&ueuY}3=y9u?e) zWxe^P%zFRdZ_>i*elE)|S4Pdkj8 z{PU~T>p$HoK7Vn6BXiohIWPV0=NiqlsQIy>`sKd#^YcVRML!;wuiub++svx$%?Z#5 z)R&9yl@D9R?2=_s#YH>vomC zZabTnd~%ZNk>kf77g+pwGTA@x6vGUY%uBJm=h!75<9T*=w)#%byvb7O3>}L)PUalT z+W2@+j;Ht1Z)ra|(qDWHh!@k1I`iY>V@_^v)&&bTEJ?EG=vb6}>2ihU#j5ZgrtQ{q zL_}xbc`wQ(`EOr1+XYdv*##Cc6PL$nNk**=@BMM{Wr{om4MJ~I!U*57~TxO}~j zhX=>}x?h^jY`l;D|9k&GVn>1E=jZ3uH8nduC#yYt{kr=0<5@m#GG*s?ieGUPK6Qut zY16N-4ojOR1!;VK&ei0-E+lMeMIpEp&rIn^jb;<=T5Et`v= zlaqqNgT8xIx*t`GIX1TYX z%)4N0Y@B&%2`68B^P4w0QCl(!4_nDv6f_)cX5Y=-`Ss1s$%otdFRzU@XK^gp&9!Im z-h3jiYz;Wj&F^Lx_9yX z$D3^I1^X_&)|xtrq5gV{_>=slo;gR~Dj!wl<5Qh3&2TS{DR&k}!O8qnFB|T<_uP1+ z=Xyn}@%V2o&M%<}+i%;3`L5?#8+Lk;YxfL`LZ#s4eor@_w^KGVn-(5d**ay4h~19| z%%CMmpkSV7Tm9q3;{FxU+u!N-PMtp6_tr!gsVm>CYX`9sPGzOT+H9)%i0` z_TQW@1!h#rpPBpmRs19U*7@`0LD~MthldTTJEjM%ESW#uF!z>;n0}nk^K)}0&GY8` z-sQDaNm==E+i`AQ-lwzk_Z9BHzdc|6yv=8y&^ui6bw3iPehHr2BVowoC?H{3v}Aec zPW2Bv7$+2(&E~yr?0H(G;FQvx#LnqYs&=Z%y%jvPFxc-?w@i$N$jyD%BRp4sN-f;W zx$XVxHN6fqLlZU~__S5^M^`G z1e$42J2T_pj>5+kuh(vm*jHoOEv}#T=Eg=IX|ta6d6mzW#V~2Qe-~Cczc_aB1nUZQ z^N#J}Cb=b@4lM0=O(VnAz6XU*vDW*y;ZIHM@u#0AC|obxX=5Y8_O-RK_CX2T9Pj2A zY@wCuLZ%bic%>)JoqP7#+1Z`l-H$<4)Uh5(7B;q^pr9s=t{zF_XI@d~uVQD+=_;NHIn4svaGCfUHalU2oGar8*oi3&Q zZ@r#vE)~}>`K8Dex?Mz-Op#h;SJ-m&m6w0D&RMTxmD1`#Mx86yx-R|F zW4knLb>{VTvexDAp8S5lKmEahMo=5;>}>PRg^%5=N?sgzaIiU0YwDV~y|eD_F2B5| z^0Rai=M)j~MW)LI9|Rjuejeeo*k$Cj)tj7)zPTF6g{d!Wo3d2g+VxcKGG>Hgm* z)vpd)dm(GiKyRkGum{j$5auV38fcy{I!pZvO}v?q_}g&jWn zY5l|f+OhT)oSdE3=U!f3o`17fvrtuT=GtxlcFkX6^55F%XEoREHDa%~KdlI1*Voq< z(~WZR@ZflStoLw&fkFN~8@Z|%ipP4TkGJtkcXV_l9PJVX^`${e@V4Kt`@QO=scWE1 zqW;=vyLWVRd}z1-zeYjGb)x?MKa)(euZ46xn>Jy>j@qQ8B%8H|Y+bkRX4q8B^)n}y z^TfNDQ&El$-_HKEnEiOg1EzoztTm-ZI%X3c>@C$!_v+SV>|vQ=#Q3{(+nHa#vpTxN zDoQH7)`nf)mK!Z3EF8JF$`rIFv-)Aw?EB==-Z+=2CJ70T~9S6yWgaGkim-bd;F zgZksggEXEz5qmUm3o9dA`Spc?oElG<9vD|UA$#C@M&5YM>4M!PNSrhbH1^$0JoK|wuclyb-;!oR>jtJPd2-I_YV@}@a zoo702JMXvRlU`g5(m%2lU(2kC+5TGA0Hl0PR>7H zF8lY$SWaTde4Wsn{PoqKJvLv0zO)U=(w}1ZmeE#G2 z^}pR_9nIRSG~HQp_c!^&4+}oMKY#5`2v@M-qHDP?znpGd{Km_3|4x3*sRGgB|GpVW zaGiR(P%+@OSM94SD-SR6oc!Yce)|WfzUl>jo?)6TmVCUgbo$Y_T_u|O`~Mj2E_=Hw z%(ll(xwWg8wtj?ojpvFo^lOGncdAMNGmZk;-H>2blXGR7F*#hyoUR!eRKjl)?M zKU0`|64W4VZEf9>b90iv-A|Uq7f(#l4EFH$cGjD2T=2jl?fksAep?Ey*&42^({k+^9KlRVg&p+Sy``zP1t)Fa!xy5uAq@SM$szfHM`!h|LHS5#_ zMQ6~0mE>bR2eY!u+S=M9Y23yxUo+v}-fB?m_P|ub zf>&2o{&|~Uzu2`~4AkjxZs&VgU@^liSL*Jr(&Qr@g70){rOoq}l)t}c^W}mwX!Ids z?X_3`H)U}s8Km!DzI8|Wifgsmnv!7$jH~^pay8C~^7`VYZg!Q^wji`D#VA<;j!#H!iQ*?fj%*)68wXq7{{u_aa3F1rJ8&?>)LD^K!+{ zr_(FH-!1R#?M*$}CA#O!C2tTuGtYMRj~^A^-rRJ4eQm9zU5$mEot;GQ)TgdH?9$K8 zJ0AZ0ta1N0<^x$<4gX($e_~(2fd~6yU*1~xQ}=$q((_*{y=6IgUSF7$EE#zwZgXq- zzkBVH_j8Zk4?lj`H+iCFsEUg0%YIhLH#>W?`N6s>{U99H;=?G{Ghklx45TZ z6~{i`#>610zT3;9cp3JteD(cFd~drv$CHdzlP7gMHkj@9cx5S_HPyjw+ssXOt2lS} zSjZ^ZKfhgQ5&N(H_c%?)Z=$z6%h|Ar&L^jxZZFyVdqr!(e&N-Lzqj|}r%#U#vdgDj zTH-0e!zNevBk^9%XWy)=t6cBztDSiIDX4yZd3pKfq@!H(Djso`Pnvt;gh$xgC|55p zE>%_42puuKm>mv2K0I8lO)p+#lz%-KU-z^1dR#T{?6b$FXa-BzR+(&0Kff$=b=aOi zpHAyUZRu#2uiJ5|spt9dJeR(r% zJ0ruo<;A;CewF`r^vk~+vQzi#ACBr=|Nqjr@WTnKBKM!!#94o9OD3pa-Ea4cW2)ED z+4=iUo|>v1xg|r;ZSlpqkG_|1AFdrH}j6w%^?zx?yqT z_H$pCg>qjHvzg3U_MUZl#{&^TK|!9QD$D0Q3|uOkcsY&9hiCQbQ?0#^Rd_O-s8@aPcwQBFY#KUbHla6xT+LC#AlBzcYs64l=`m&(@ z|3A=Tw3)`~yRsI{@cHxUwEnx0gQ=P=F7uy%ZcFCn8Mf7C z|Ni~!kuv3)>v#Oq)6*x*Y_75j)9y98_mUJvNA7=>^ZeBx?NjY-eGn3vDU+$ zvzuSmY*d}dohBVD|GM{NnsUr^&PAg6vjq=EJC=O^Hl=3&+(6q~3#M2~+_UJ~`*Nm> zY0uKa7?ILqFM&gUA6{V0xWe-4ie~ts=*Ly^S?y)v_aB9STT-^whMU2?U+(FJh0Z2< zcV>jGjr#a<`TVe1QQx9!{(LII+6$^0-rU_i{o~`~i-T5b=;Su)Q2%6p{XfZqzha+0e>Rlr1r-jzzP=WglY6)B z%ks-FXBee&@wGEAzSwd3<&z_w!k|TjX=i5zF87oD^!amV&z`?mkH!UVzw5fyIF$44 zp#>AScrNx@am}Y8|J?oVdsWZ3GgK)FKUm80>*UM(k$w>cXV-+!ojUbs@p)VKm>8M- z{eQRp&U|z|zW(Xm^82cGcJr3ctLpN%i#&AuyuFV{z}b^56^U2*Tc(JGzF$zJ+H$Qd zl$}K&C1Ahi3eyWK&xhJ?D|qOn<}(A7if0(5dM)+d?%c+c`0dS2(D)mu$1EOK(I{!0 zwjgLF2M>?S`s3r-hMl9Wr&6d*QZaPK;ww{dp@!i7Op$hnkww> z=*YM=>*_A;;(hlsx8>bEW&i)D|F^fd+s~#gUb3X+!Gi=oIhzyO>-QX5<~zHB5qdo;5W#pt;i6-DRr!`u$d=uRz15Nl8k{$NQdMkFQ@Exj9Y7zHZLe?CXmz zX1ut$SskR(-hTe!cK*o|CV+~q+FxHDetCI0Vr^K}mlp@a<7+|7i)(*>Q#CLU=sx;L z@9Ev0#p#C*A1<_-`{T!t51-H5KYkioyzN<-dT;olRdyF_Zd{&qNBYiXwgdN)%{G0O zwV3-z)ca47B?rfeRE5c$9gAL^lYFq}#pm!7tmXBo&&%37G^TBz$ho7NQB!o?^|sQf zUvic&RhvA0`ti-@?Yw<_d|Fo}tX#RWN8Vm;_F1><>tbhq*#0|f3gZI#?`*rS$$7A@ z`pmxH;rdPur@LxT*$#v@Z8|r{()shVvxQc3zr4S{-zjvv(Xa3C&#zv;&uh9~ECXoe z^JI1ZXJ^gtgL(m5wwUm+F@wTvb@=+US65bwh=_bRCY}G`+3b9ysxKLFRWDURL)_aL zH>8{dP03U|ndtuE^XKFVB1hmseN2*YE!~>(|%U$>0TXZfnDYB_ui&IA-{$b#-?KYEAv|`?vCc?(l^% z1srPkDoj&5UqASm)sVVkDwA0B)muujQJDtOt}=WU)6x#UY$>)3o1^sQ{j0-EGk?qa zSxkDw^+sE(bV7W}@^W?EdvT)kZ~3L))X*zU+GgQtpT9I%TX(Coc3tnxon=LzdRkbk z!(aXlQ9XF@;Gfs={~vw59-n?|OXi-h*P=7FMuFBhe*JnhYwM-W>HeR*jk2dOD(GwM zt6OY+a9jLBcl{3+8xOLipF6OVTj6ti_vG(STUuK`zS(@cE-dda<7>_T^zKo@s@@Nmy>=s z_r%jrTUufwb%U2*UU+$D7}M#Vru%ijdqLYLR)uOC85wPe&~b5hXI>XE*LyW%Q?_+} z=#M||S?BeA-@^7?OwO1g%Jfp=R!dEtt;PSEruOOny|M56wP|IquYFV6exU7Oh}=b` zt`GZd-Hh}@-ZA}1eEqfP4tLIt#2sneGkuPob6)1PzVhT*(_0J-9sT{!-)_JE?5KGB zlfB>Xf%e+1iQL=<>R?@P=70F~>Cty=_yXL&BFhl*p_?y z$Ae~m34;WN;^*h~KH7CP>uB0$&@{ll-|wtHefo4qQss2q^Ru&$uL@lan)u{vXKr;0 zeCT=MVL^gH$e+2dzE;gL$vm{kwR_c?k~J<@Kd!I;+ihF@ZNi*6XC^2*N9?KCxIA=M z_J@x?QZuW?`cv0rUOdtMIMZ#`u`JGS;gjMsoE60-?kLY_w_;P^xUg}je)BH&#UUIe z`LF$FS4>xx6<@p1f4W1>mZD!Jd)b*O@nJmrQBj&GxZ4$xce&viDWh=FbV78v~`D7#Yl*8zHO2yV&%NRfyB%2;HMg z%UBpEUG{y^`&4*e)LIpT2fx0)d(R@JFZtK1<4W%;&&gM}TGsus0QGLq&Nfefc4p?g z1BRP#o>|#^J45JYtn#P)=XHNH7fSKpSj#4SCHuvv@7)fk*9GjiWQnzv%0%5KP`eAX zpyCdL+}TL&>6}~ot}is-G417N?%bSvkq-NRHwS8_PI>Wmiqsnght7kJiJh|gQ+YNY zJ=y9cT_pLUm+#EASKbCC%17L^-mf|-zo78(u`_clCofr|aij|TdR{#+WBRQqBXS+`DL=(yu&JZrbSP`J$LHq(@O4hl@yxiFj-9DiK@@I z_HWkY{h;LwzQ>ad8LB2X3--4ZKB&+X=gO7v_4`vR`sJmNN8!r3TZ+}9On4ryWW2ZL z?|s%^rMyZ9;!l2(Klk|c+alIKg)3SX^0zKBzvX#;)r^_z)oj+@%e_;6zZSIM$7i06 z@R0xxVpXbSKdnOym#Vb@XRgwg4L(53T5Zs<#!d| z%xKozTIL%g{CgRTMmK*(48N60@yYA?EFT}a+_T}k71N`1Ylq+)@mT4(QBKO?0%Ehx zcNYC&{_>6^abZACgQ>mq`P!_`lzF9m9dt>`iw! zlmVd3Lr z@AkfKa%xs^@JZ1yoVf7%%cVtSs;ZwKPutrgc}=+W(Y0+xPs_3xFHT>o9mc%4J?3Tv zZ;xzPrTh7RYm0uaI2eA)$@GGf7~8kz4^bPcWKD9S6t6e?Q zUlE&I>LRT%3zECDf4@&EKv3M;^N}FMXm9& zJj+&JxBpT9?VPpEs-)Zp``6z5vMEz#%7g~b27xN4iE*quO;|-l11@&6?#~t%+1sJi z)xo9YrOzeqDj>kJM5?M?fJ2exQuU_YH}`%1yK$3%b2!I|pSI`iCRiF5r)`^4`F!s7 z82;YmtmMs>H)<`uF8e(}JZ!S`g1hf*xK5mETytpE!$$qvM>K2hovynrBqUU>cU6x4 z!1ZX)k{0&eeHP_kOS7vIHgg*lojH*zAo#BDV8-$VN1WaU@N!v-Ou5Bzb=8GmD{q$X zk$Elp=xexm+Uf&YTNel2jpeUvKWzMI5&T?$#^uY^i=UlYxo8ppYT2U`ZJ&31+5X^Z zVevkTdGDm6j<|mM`|5t??LW`f%y%u-U1l`XSm?n_nTRbCdXJs!7$LPdsMAsq`OO=& z<u?((no2j%k`#CPo9DPP?`C2=!%l9H{4b<*R7^A4VgnB+RYFX~#3_MvwS zx9{)xaXQtHIltv|W&P%r+(G9fSBS1yoOyWnX;yE&>A~yc_G-uVXWyK-XO7Od_mSRn z4eFH+<^R!G;Qjj89{Xg=r&Y>!apr<|j(q3ey4(4{#K{T&9?SgSXZ7GcbC|Y_$IgiT zb-5fL_7?5D%g8=SzwQR_;sd9d*O*yMd8A`5vCv!ng`vQnzw5FR9u-);xUo@rclrBc zNgD-ZWqq63c=KxJftoqnXJm;paCxoyQK5N4e_hqt%g&9($3S8tZJ5RKH2A_ zcsNb`hOD^I_kX2RxFkCZr8a%a4VfY1(z5bK@tKm~zub)5FYf-dO>y!`4&K$B8|!Qq zzI!S%Jx+T@P-xTEdnZzj`sP}>`=rcRUGsaNu*&>%DOV=s#k_rRY~BsFKY!-tZ?a;@ zsb{HLCCFtLcdj*Bv|yuSMn`bQhFcCxTe;`IX#G`Yt?@^1+Vypu@1)ZAuVP5w8O5tB zeDL`%8|$oVYdW`YHwSG{J<=gqAN{Y4v-9=SoGK}4vAvDo^h|;;&Ssex$SnEe!i86I zr|jot)f=Tgo&7U>xx=frOpo(s6XSD^-41qKdG6Fo9%b2Czmv9F8O)LunQpaqk9Vor zn=;40QSYX_&J~#++V@SJWyun0P4k%jybWjdZWO*q3fXU?*>OR%@H6MJpg^yN`@QzD zCQ_zeOPk*O5xQlvTSDe|f=TgvjMX{x-DtV$|tEZL)vL$85-8T++@W<0q=FrsJ zPpU44-Uv96T9NT@-s7Ejgbw~%^lAT6{m#|FZ`~TgW+(h?V={ZE_wb9Qa&g@m$Mg-G z>)Z{~x|`$6r)~J(BG(zDHfV<`tCAQTT{wm<-Jpj;y2$Y+|sgrpJnOMGPUmJqtcrVX3Uv&Mj}P5yBIrOWle%NoC~rQ5FY zTO_3x5H!R2+RDEfPtt5mum2Bybz_&HeC^&Q;pLk@d@E|Z^!37yhtHO!-JGRTwJpEs z=(bJ5%N3P`oSGb#w|||jANS^p*cQeFql2@0{X!=MG1^*NJAV@sIdpCAxm{kYU*0}7 z`D0Nn_f7WKV>Y7~mwE5pO?;hqLaSls{e~$);g94GT{?Tyq~n9r!oY$TC6Zg6ZC1%d zKNF3%s0(v{o)#4z*?I2NmDF_3ujPmD`W{rjzx?vT&S~$~HcdF45bq_)tGxH3WKKnf zh{lr-zb^{iGQYSe?3Bgy^d)x^7CW|xTlY_26nHvQuJ*Z#)Nb*WVT=ocz3c04yts2! z-sj@OWz&S8tY4J3qiyp|wVJ(Ce*D%joF(()x0a^f)`{UciZ(ZR>*ZBdpN4Jvqs9YQa9T5SYunq|C{?yw;YNJy$)&pv<)r_)6KvA|E%o=r zq+|T$a;=eT_}ad&IXTfp_TN1%wla>Thf>nZi!`&A^6>XgS|6TPVBvdw&h^I?f0~uQ zWXk&7H~+RVt%!Tx?>82AquC|}=cJwQ3`%-kadFE&{r?H6FJ;fme!jLnR(BGEC?XYs|S3?y=jVKE+7#=ujmA30{%l5ut2r$0&3-Pfn=cy+|R`ohks>h)>gx{^+P zJ*QvV5q9>0oSlYVp}&aJh6m4su3v2JpWbv_{)_w4JrVAe{hSQu&OSao?)`FWL&7$v z`A+dtm6VihX=!0NSMz4$#*J&@_k*_XzLHqga)dW{b(n68z>5+;|Cyny!weG+Fl@`a z>s3@_^!eFY=k?bo&w9nvb#=M_{M+`&5_q3~(hksiV(~BFKR3(Tq(3(THcyx?x9W5^ zvvSOAx$dKmyldHdXUnZV>*&H;uB9i)&^NbGPIAqSd8a4u%@%yI`q@uL!Jc>F?7g#@ zwx0T#P!fFVXQGpF+BzHePm!{`ukW?4)U{ioMl+Ah#^pI=h*m$FE~&U=ks zrG>k0vYLhEUk=Yo-o|l8Z072DH@ULQB(&cCT5HyLuw!-KS-r>8W!t=V|64IjYu2$C zOW!ptpcRnw>;KK{>f*Aov0=E7wY8$6qTs~^#i*@WPghBciyz;XdwWCF+I2duLPF(6 zP8^^m<;(o%`yFoM-58IWZ64f@CeRdLqLSeXo zgoH;(h={uXyd|ZtuN^sZ`=Cw!Hnz4eudEcV+B+}p?5vHMmzUkP+Ge+QF5{k8 z*FGe?Ne-O4Zm-pmmr>Shsw<|JO-z)V`tREn4G!Ld;=gw-PH9T0m=(xfbZyynS^MFl z?`QVkvfNq~_)yNJHT<3TqN*K_`xq8{dQ{)You@th*mX_4t(#QefBN{ce|f0DgZi&E zOhQ-Nofa-|?G^(~K7V;}vH8)XBoirKe%mhs_J2MwKR-9udG%G$*1DJ&8MVosphI`$ z<^8?9yi|D`TaL^(fag| zy#mn=kIp^a#>G&-J$28;n)GEUrNO5KobHsIx?SD4W{r*vAN$LfFL@-5TGHp&PW$%u z_U82Sa#ylUlaKW%YH4+Wc166sz5VgKcjwyW>pb4x+FJSl@AuW!KZL$ph;_HRc8eJn zJvs3@&p7!Qk6hi4#HOZoGQp2-=kI^Ia{0Vp)@>DcBi?Q>KI-PSvFl8dhKAwd0Ifi6 zR#WECD_=GX3hHdQl`8U5ROIEH#+xh;9xhY3;NEuaa^L*jQx_Q-AGKmX`ZVp0Q(J+> zhi@SZzXl4vSiGQahr8-*t8rXI__zFU;#m(~t_r`EfC>_KN#OfH3V{V6xK zGAU30&G@)aLxhfo2-mZ7b5E}bTs*@dk!jz) zeW2mnudiHla&#VuXzeO{`|8v2=_gax{X3gxoR{ZUy8H0M14$bfT)eYq?!>!{w}V+S zRsUHq-MX-$&}OZ()5WZs;Vr{#UKL z!%zKJD*U~3EmOnx_MSbLZWphwFXei0BGd7vyx8A~rlBd%Zd%MwcjowTvl~-wj;(z-L*n)j}_uyZTvrOf@1`xB`QeJx*?8cGL0+-72vB z+^d&&%@%m=Z27!UOj_Ezq{PJa=+PfPEO?tsb{R!&^;!_Rn&r+NlOI3Xl>}Vet}gbQ z%fayH&(<9~cP?IU5F9h({VQV?6PXDMuTM=hu;BFy%`#z9|mzcebB_GmX=n;o(jXg z)!&yDK0dZ3^D^61uhx?(kKS&-@5XU3d;MOw`F6Dto6~qVZrr$J`Eui&8wPx`R!5lm zZ4L_Zgq7Xprt52y=Kf!w4=hNRyt(bJsOi*q z@7}evw+qY3`PJ0efQ~miGsm*|obFeXu9fYP&z$$pSmE_kZ`0<@k)J+u{VHAKUC^LD zFYa7;Mux^kL%+o5M>|wA3sk_-pc89>g|up)B4&BKUQ=V6z|?`#CR`H&1Z(kO4CUzcCa&C zm@c|V`#kf3yNCJh*9r-UJV{I1Z1vWLsaa%&Nm@>rG3!oAh7&1VPT5tKzcut-!k@iy zUi|Txy$A21gA?CgmiTysd5fRVp0k^${7?^wiaG^a)H%npxTCXEQB(6|>00-GInXT9 z^th_d;^*fczJBcus=ziTvBvHyN&NESB4|1+zW(pj=kx3L1?@MQ$+P+9&%1e7RtWan z|Fd|%=QH2KhY$CBIK+M8X%QR0+?fN7%%F)x(79&}tgNg#H#R(6_H5EL^%*;r=X?}i z{^;q`(!+26{{36|cB}b~9fi#C`agUBSLan+z49_F zhdJx&sMYqvDUI7V~l_zL+6VC7oXO zePj9iIIWPiocq^{t8G4zBBo&)^`}|-f&3kY-tZgpPanLMf2y_pw8@M!OtYQeYJKMJ z+IOS<_EEb#wON*@b&cM6OB`O58eJH3ZdZuYBPkJ4QP4>Bsj1qMRwWuQU%p(IZE0x< zT1&HJiOQBJ-LTbD^rW5%{i<^7*jGR-K zFHb&k!eg3lwA=lCwV5|Jseb(U5wzE!p`n36q-%Dx!S(rl5B{Ev4~zOE%g65CFQ=-j z+xzKLQTUrC?S%mvFYfJSzsNhg=uyh7)pyc1CvLxOIIG7(hEMKKc>N}C(;IK6|G!&V zS!tMZV{(o~$`kn+Hec60*v7@MP_c1K$IiLsdpg!npRc1}V|roN#4p{VYeR>Na#X_325=m{Q7@0 zZL7a62+&x?a>Ph#{rPDpGX#IQZz=74$z(RWcgYeJJ{gMxKR-V=l;Fv^vtwfI?{A=K zm`Rf--`teyz0}NTX3sp^>W!7zLhXF=O3IIQGSe>^%=De%tELmioi=&qgbh(S|NbgS zN=hzSzC76=G_bN$-4e_zX4wK?%H8~E^_-P=~{d=25+R{MYD6uuh?LTmKojy+K956Q|mn{8SD z&n9|Xj-rwhXz|9iHIdGjm-()Y+^ojd%(ykm*TuzUX<6Csx%}#Tju!j#FW$0+C0|}X z#7k7Fmu>UW9;by0U$1yx;$OS0x?OC_)ajv@N@5;dFU`)Bo7aEMoj1mV{g3`UiJxcg z|IqV{>ARg*D=75j{AK2viQQe%W&DZ{0=gO}eUkPMuios^vhu~O2b#M7t{+^+o4w(t z&(u@ro<(HJy?)nq=fzva=MUf6X-qY$+55!i!a3o!>zj7`%4=cQUK#A%8ddx8;WdL( zy}z?odiE6We`9;P%h+(H&-A@&iiN9phIapFeRghc^;xTVQj)FdMexlZ0K3#m0>rSA=L~U0>&0QE~NvgLV14CE?%wR$S4_y0)fu|9ty>`}VE4nzhGf zZ^88)!4VVO`_FN%xS}n~bdwxVlZuFZ~<$vdn2oY}u8Y!8d;;qH2yb2HxYKHs^`Cl?i2Yq4Hgzf{R( zwZrH3r3G;lWf@bR-`)_VU$@VcY3h>H$aOP1UdG&FEGjC>J6WTmvTC-hby>(J-yK4^ zhc3`Zon61M z@UX-lo4o-mL-cmD%=BrC(Mvwwm&>x^^oN4$3&K`wS8_F6-ktRL*VU4Y6)UFncs%+R zn0x!`I$0@!CANpZzvhW}lUHy1CS+@(`nGMn{^k0bAI`@s=tOvy$eQkdyY|5C;J(9* zmab-8r{9?L6g|$FCc0bJCyhO|ihXWWMZ#9jH}x#(8*a^MYgoGL_VTY2e>_h#ka%Ym zJ#o?`Ay8{@?|0BCXSq{bzXi>5JHhes=E=*-?S>DV{W-X~S0@P-+~w!d(Ejc^&s8}-TQd7MpKF|Qy1lK;LMKRvp)-3^ z;$gOZKOS|zk~_v*cyPC>vU2m4DRNt=of zqV@7l9N*sGKYyr|JM-2S&AZiK9xN9Db=BpFAY00kkLgyDHR-Zn7Dkv{c|M%x-OG``4H4cFXv)}IfBKOfSG4Y&n z?e4pNQBhL6%ib1o3W;^If~K#RI;{;`9JG>ylT*>o?w+bjgpSz0KcBdjoNPHb`5g2n zKYsYqF``%MM2gWHK6bIqGqW?IhKj16!k2g0GA#Fhvuw=~ z%?($3GF&_&L=HWC@ZsOr8*9a$6gkenSL>0Zqx(P$Xt^TjpgXYZz z>!-gNE_r^~+}?t-b9YZe14CTp)2XX(DT=<94HZi$kW*AqQQ7f`VMU0RS^hnr*=D&X z&YU@twmH`9e_M>+^BW&U7AYV8`1$+c>(|9M-|ShwTs>_wtGT)P6ff1?-((jS&vwf& zk-B5Ms_G>R8*8G$+{r8rSq?(r!=K+3{rdX4+*kRDfW2j9d(f&Wt3$M;%=3IoN=(!y zbL#8sgEq#k3DZtYOsuG^jJ>wOz}R^5I@#NW_iMi|4A6*~$I|fn{-sMozicna$@}xm zEXs0mXg}=u>?hByt2;{z6IIsrs4#%f?>x%F&VG5B@9fvBqTBEPe7RiyOwa8Wvz>inW#AXy`E^DwXBqz2Z@-$A`u^VD zGqXN&`t!f;jZyotS$5~qq{Qp*VnycO_CGE*J^qicn(+QLvA#1tseC<@XSa6ak$C4z z5GOlNk!E!~xbVze>*-BROm00AjwvZmLT`tJgltGU%Ec#Zf~!S*R0JwV(X4q^*nhsU*7lmGRB4yA9gkVd|7!V52;F*1>lt zR9PLiDsVD@CcnOOWb<>a_%73Le}R3bk6U1%An1raO-;_-ci)|Qq2A)KFkr{IZ&$NS zeP^4czPPaP#M7c#=K1Hu<7@nyPZU>F?@HbnA>bq+E!=Guz|Hh%*4FfUU01L08!1db zJ@NF@AHRMXB^+S5E_it60f##KeKUVc$NoLx_~;tk_L*B!Lf*5-)@N^xs`~aOa_KyQ zN2}ag@7=q%=i9Bzkh*CCN%r?K26cKkm`9&_vr+;D$VV=a> z0NN36+aR#u`F}ODCj;nc^BwLIGZY@*+19xx{yVqX?6=E)8A$NdSfv_q_8wj-SoCwki>keS zqNk@{SlRh)Q|F}?fjM@iU29)YzhoI_#IQzBMcDx~FJIl!9(CH&?!RjO-c3z>vA-|8 zZe(Aty)rU0Q?px4&mn%+=@kp-a(wu_XoG>Ywbqtf4p*{FZ{EE5=Egoz`*LIFsypE) zSq0{B|6dur{Ko!r^WH3NOR&q%J4T}57{qA$L% zb$vRQY&cC=@ST6dcKh^8JvVaAN~~bY>h->pJdGVhfAwime$9mZ3nFKcKC+>i-4AKezu zE6HWKE+&@GT~T#cOjox~#+0J0-zz_U3V86wwd+^8x*{Z@3o-ntI`Ls`ZEAPT%s2g3 za^cr*pMGkzWuMlTNs0Gm`yuJ#&*KRnUk6IE8^7DfTsBwGq*V3ym)ng#F=ypLO-83j z>kemaoiulDZD{#^>zNA{EO_l#pi=nRg9(%bTUZ#D`_E@v5VyDLs*OR%<*?v3L=aAjpM=#1IU&dxLQ?d7{=&C(C; zn0w(_{e(};6VJ{z=WhTlFPk!DiuA12XVa1owQx?EI<@f6k3zHDTP}`{jH|=f?^{@> zqNNOpk8;WAZ8?cAFD*TC^ytI4Z+RPzCMEv<_ICQ(_^_~J>GNyd5)u@)W?wJ6s;{XD zI^{+uVnYLH!GG1)S3Ar8v$|#cwJ+evkbLy!c-m&e!bdKktperuYu(e*)b8v2nAh9b z{BZ{3-1?Tz>cn)ul>eE!{`pb2{-byA_zqlK8|~@u zzdUYl)siJk0zyJuVq#>9cFHjRDd$glndn&F@#$!3Kj`3{MT?Z`{{2h`4aM2j{g-|A z<WFbye}A{M?(eTXzh15W@$1*8 zuh-)*Z_kfUJ39-sMA6gJ(~DW|U+wP+CsS5D`4Hl~!P4R9@l~7j|0nI9Ge_ppmek;x}rGBaPA zM%}ks6Q&J1V&M1p_v^PA-Z=?rIV&hCel!P-Lj(l}SAIIF-q}~ic7OZLoH-VSO@hj9 z6Xwk6Ihpe4wEljU2QMxz2A%nO@2MQ|MxpcPv+fSre9xOJ$(E2?6kA9 z7z5H8!^<5WJ49SMJoDiBhXoTRPd{zP#9-|4ET$U|`^y*xl2Pc8eGP`BB)$FMrP8{%_04 z6eSIfjtdtq-2Qs;&fJdIPyYP;tfZpivL)l9Q_b(U+nqQR)6ULP1s(JxC?@u7Rrw#i|+EB&(6;7-j;j2OMPC2lZdD&XY)Y?P%(CKkt_Gb zb+Oild3P)lw??@Z6>WNPd;9u~ySuh_bao0}Ugj&z*Y3=rc;wsL+pg_=vM#r`<+e_r zKE2}0MfanprfRneIQh)A3N3keCsIXCt;^s3@0HT`mc`FHrs+m^ndRQ$$&Tz4P+cy|}Qj*`ne@LMgwi)1y9BQ`1nL*j-z8wLe_6VMBmU)E199*5&Jhetvv> z-1T^$?9tEX?e%-y7O(zu*8IMRb=ez%^S0mTc=-B?I&plwmA#&G^;IpJg*Wa-BzU(x$noFJHcV^mKZ> z*mD2*VxOO#6@GlISNQUBe{r^EM-Ii7vx-M9&u&SWC2%@ezpwnHr=pDcPq`_xS}h`# zj(k*7?D93g*?GitXCC8&6BCs|1yj{yp=^|y|O28Qsxn!(FD zT3T2XTLdgEEtM=RBBo5A-hJs((8FiX)VjL5S_ICy-g#Ki@$~fc?v4(Q#O=3RZ{~3t)UX?eGw3*M1w`GajZ@Xq?t+FV5)B-Y)m6g?rL($0C zxbFdAGmp=dE;$l}XudW}jR}ZkbWG;?oQ%-riF6 z^71-zaWi0o*F!3$Csz}!5!!9ISl`9*!=D+ zmzdDho$pc{R8>_qM7XNHzdI|PzsE5xO>O1Ml`d{>i-J}fNbpotReidhzyIR){CEZ@ zXXngYTQosM!HWwETUuH^oYG!zkbBGI*4AuxhngCjpFe+sj>H1(v|AUun`yztjDVFP zZ*FhrpX=xD>dIQSTekV2LtUNS+NiBe3(DT!N=Zpc*cbtt9`EezJdt8_=k8t5rae$= zWAk~t#bs}Aflj8*-~V@7OG}INwJA%MFaLaqTmMeMZtF(pcD}+F7ZhiiWCq=Jo;YF0 zV*{yPn?D~8&#|eTbmvYC=nNURUa8ijNr{h+bo$IRYHev@DSLnKYy%^6#HJL^#csWi z+U4sKetdYi=j*lTDO0Bk%E`R#r*Y|XxIlyX7#8+GxIlRk zv?FT&|G)XyH!>X9rc;qAt#Yj)T{=`Q+{=qA``VhsLoJ*jXCIfZmuc9;RguSi@T{7qiu&n!0Cqxj52yH_l@SRzh2*-Q9t7%XH@H*AGWG` zMb1nOUQ3;p1_??_pME~S-tYCbwHLFt{`md7_}v}Lq~zq2XV0eo{PgtA-QD5`G8GmD zEez23@%4IqZl6x;?+0z=N=izq_;8RNv?_OX*xE-wpU;0j z(Opi_#^#PGUw(f6yvk>izrMb9Umv%3hH*OI;Wl39wPB!5JXu*+Aa8y^~I+thoB>^}2fXf`bAc3j-cJejI#u@x%!` zKA$*$e))k=yfRjnmIPnOlDEVA943^XB<|e|HyjhP0K{tX-wA zCrzB_n3<{h^5x4T$B*ys`IslB$gxduKA9JCo}&=L-9kuI|U1B6M2X+CKeyy*@ZF@Zjt9`}r*HGPD1G zv}XG*{ffH|-|pWxN<1WYV-lwn>zCdVDVZ{kb^-ng|4-(fSDcgAd3$qWBG(!#W=`*g zxx7EtGzTY4*ul9jJQQ@S0_Y5%#O=3_J~=tLb@uGp5!>_T3OIFa%e}qp-~G+${-7(% zSATn2VBu0yvITT)lJ-=2n~DI9sa}O|ZWvzNnjLPKc1A+6MWC{>^3dhWmrMIhv#;qG zmb?f6HGe@~4*z{zuG;6zi;ItEeb2kNsI}th)bMrXugZ0I?%cVk_V>4>H#at3wH4v) zw4PLcuhQLThJm9_+@6Sxtx<)qu4qo2I8pK1nn-1{+*>No&dt>ZZ3mh-ZJJt%)m+d< zpq8Uaf@f!&i}STRe|dG)J0&gc-&19V)mOE?y}7CU?CflH(9I4X-|c?SwfUw_QE{>B za=*DpE-Z9*t*qQB;MB1>{e0Jr8xe(HUIZ$(e3tlfppn^$L-9@7Zjd8g&d;-T4GWvL zy1x6U(y?A?b+=wA)uQ6!*l!_D9Es%|hF`=Luf%h0d~@Zfp(GF6$1B19o%MfT$17=S zdQO=>oqP4wS6QD=)-A89`}FVi{B*}w0cCTJg+K1Bd{tjESD^J+_V(Y#FH@atc3#X} z{lG4^Bfrn`t++~F&ug)0Z!fP8U%$HQO*hWCpkP(<;z5vn=GLfl^K7|62bM%`Ok&jz zTeD!tjv4>|ec#WpWZ5#%d3Ou0zqYLUqET5{+0xp&vEZQ-=*W(fDM{bo-L;V6tEsL1 z`1$kW7Z(>t=!n_6Z)2Xo9WuZy(?wKs%>gg{%fC9KPIvbN6hxBJPm`|i0PA0Nju)`w_`-rk;{ z{^`j{&>rs@GbE<3|NZ9XW>CYK-~Nw5Vq)TyDN{hjON#)g*fYz$Rq*7*L@&jb`tyZu zzp8gB+LUw#g{;3`{O?cYqsNb9<>JNHeER?$CMi_0BtZnbH?YoD;_I7>H zey!Ibzs$Yj;^ajS-d3;Oub-f-p z<-9zwEo#2A46?3hFnFE0@TuBjef#Bp>+}EDw=pb}Z~M4=;UTX0l9oh6zpMZ6J5J=h zcaPJ!-^n-sh8@SNm}DOzzjwQG8lt!7rT+c(6|`BU!FZ?Z+NiBJc9m*>{P^*z%`WTi zrY0sGF>h6AE>6zQ*T*wVb}2o-%jGxU?(ECU%U@nt$ozi)f4jiIz#bXPNn5s<#MOLs zeRX~P`Skg<&sNQ!Jo#{sr16gT`+i$gd{78p=HsX~IWQ>bknwq&=8G9A&(6$TcYn{- ztkidRc7Az#d;0o)zq;Pt-FN5*D-?{W*uAB)p9L)Ti4s!&t~3d!?gZw!Mj`g-*DVrfALw`%-KBW^9yh3 z=g714ZrT3K?!U@AD@Fx-`}uvc){kDk?A*WK9yBwrq||hFw)x_VcUts3K}Y1ynqgI{ z_3+`tE33o%-Fl@KhG-ei^Z}jyHsfrXm`=olO~2-w=gX=4&r5l8V`I*}Ju?p-a&qgD zXcTAyZ3_g=U26s}yRaoQILA!dYw4snZ*q9pm>0YEKdb-$TfVNYZe4Z%ZBF@j&7QgX zt3JLhv;O_$!_a&X0qS;`)=ml%@%c_@~EBmM1RS&h?F_t*Y*NUa@}hbya3AKEAa7|Nep&%z-xYGPCo6PLs?0IDNu| z9oYsmeL$twnLm)D8Yr$O6w-@M70 zWs>=*>(KVRyH=os0;cQ5cJ%ij&)W_Uq> z`k11&|3}5+1J=jcg33!!O_F0aJNx7LONWK`JAF=g?)NXM=l08xv+lnR{ad)b?j!pP zan9B9EX};T))Z9ndBn`z?Z?1SP+qQXV>73tgCpz8ibk(e=6~v-5$>yJR)wy%sQY69 zIyWh5?X)LPz&q=v=|=zf`F#G%%ggy?tx6R1_4_?1t4*9d*}1ULP;GK2sHuA3fCIy+ z)2Dwvo1Nd$)%9rW^*Cp}>5Bt2K;6a4-*2~ba&avJt+IJ>fw8{6o`I|P!c%vS3kR;x zeHhfgyI0!$(c{O>K5EHdUR-Qxv54Pj|kvU=SB@nlN|nTdyYt2QRoh;yaSXx>IJ!c@L*Y zt2h)l+|2p&)8&hk%w+rI%{TRCX9h0~3iY&mTwt-`W=?~#oM*3;X~wlRlAwb#CQh7a z^ZU(a1`#o_Pd}f}4_@rX3+l%N1qVm&D$zXL#{2kcczo)W6@j4Rvh3~cL$pNICU+Vp zA6szwCFo9zSi9d0v(0joE-mr&nPVZiG{|#(++G2vgiSXjwg-DIi#x_|yY@-2E4AO3|L;5hC+hJJ zUQ=wUK_P%4LriiGck56g8i_@dNV_91#O_~(6G)8awd(zO$ncbco55Cn?|F-gf{0@2{kNosIq9FT%Ff-%7sjE_)kwZjR;Q35w1E8Y1gH zhKGb)Sne-B%QV~V^Ru&{BVl5n&i@y8=DOxq36U_DDVp6=MA8>*&GEg#l^+BxVeRC?Y>m*uQpjwS~}V_VaFv4Cuir?E{m_c{yNo2J*@KlI`agF z!orOi_x9`roeb(47&uWwLqlM7_bxg&JM!hK$ItEj7U zFAa)RUD0;duD3-w>LM} zwb*-4(-D-lE)(Gv(^+xl*_W4>A8kA?C;a-_TH*Qi|8}mfxxcS=k@s{xP_6^vV{U}w~tm^$nb$q1~kmSX9K!@1+>KMy6I-$ zj$fZ!S6E+{Jn}s2hU~eBf2;Ice#F0;E4Y6D6&;timQEGt1d_7TO8cLkd%P=`VO#!v zzq&d*(9k0zBO?nN+oj#*`5{`OudlCHS5s>{E?+-~jaMolF3!)>lhd~P+miJ2^FRmF zmA<~VQ)N=z-m1d?f4^T|6{`Ji|NlBKFE7x+BF*gl$MUvc-kk2Ac77hO#pU>I+1L9( zjUF-Gs0q`iu^o7LxV^KxdvW;sIFtN)b6UB@Z|% zXLb}mo?%mIl$n{?(%wFK&YUx6W*TQ+TO;Y*#YxNS0X12I37L+#66LAW;%J8DZN>E5hXJ+8DOUgYk}>_py_NN+c4|p$<4yTVo>zN<4KX_ z&!0a*=fPaK5D*j`eDU?y9XoeUoHNHKDM`s}b}wi&cgq$NCnu+vbhG+pd-ll8^=l7X z4Z2iK&bI2qi^cs+9}aQr?_i4G^ZA^0MMXu-w*LLSUrH*T+He0RS8pzU?nY2>;_f!h>fmU<*8d|x<7hSbFY{)BN0BQ>Q&9!oMa$-8%&aZB0C}?lLU+b8H z_>KwB%3obssdsR3{Qf!y9vO=XQl?oO3LZKoB`5#2Zq^ z54SO_+hsPpcU$i5OWSgzL0gNK`^~L**eaeEd*fWx)(4aQ^L_7c?`mSID6-g+$6Rk1 zzO&_s{lx!&-`A(4rW#g!Na&NZ?YfwuqNK#M`DV|_ltqgcF*P4-IGgr(-|u(Dk$ucZ zjvc!7DZ1u)<#)w|H;Sr{#{uXuiDm9wvRidUK>4_oqS;zn@tV-`~G`bFGW(+ z-W0O2Yps4&TJB$T*R27x!{O8v%_GN;gU)JD^O@nWHfpQhY*z2pS3kYm{oW|)2nT4O z(fodmb332xhTCtitPEz~8+ZO#uk_C!kNZJKBuJa*xo|jUWN2tj?P}!~H!6P@6TYas zk(vF|VSf7$*P`=5qy9c>!i9x}KC?_Zw`O1ebS*mn;v(1XXsOM=*SYGoA8!x;uA!px z&O=B@C}Mw|ZQACU>tc6*db9a_l8F@P$V^L1%N{w~S;@!yK!Zn@E?D3Qkzdi+Zk^lVo*duQ**L?86>-GEVjxI@&>Sc?Mj|UwCYWL#-^S3uQ4^Q^D16?l8 z&M%kp=f}qeV|&o4u|GZ>=I7+&JLb&UD}H!-dt#&(Pyb$t`gpzRpKtx&Tz;=GblO|y z|MLz`S^H+Mpn#x{1M6AcbwS3PHzoc(b?H>w%i9%OGr!*2v?b9}%h!0b$=U0@&zM}M zh`0u(ysv#waP0H%$9rr#HysVMy??%a(&6I!=WFx$&X?Z3KF4}Gr?6VV_1N;lXJ;hy zcE2_II8WU>F;K|oTYi+{2Fou^2e&3<^4wOJ$og=9)d>R@^|+c70e?3HZDL@MeZ#uo zY8Gg|x1CScNq_~k9?u|w!P3(5&CSj2zu)a%-&vh-dYZ0`Wl_t!ySt5xo_JJ!d*kWs z%nUj{>*UFkE-o&heskEGh=Xr#Zk~Ahsf<-g$KBoKpi{qJTwJ_z)hh5ct#-Au4jgbe z)+gKD+|2y)<;yp>wstRCqy##Bd4Xf|x>HC091o7+*TnY>f3Jjhujv>F_Zf5`$ z%r|b|W^VKNUibQeOQ&Ly{ojAjqTfA(%nDCXbY^JQx6hh;&}LrQ`i0I3*&Gt5IJ3VR zeAj;xe4Vpk6;GAt*`|M0XB$+k94coj8ZGbUGWGQMbJwEq5zDu4-$ca4i;v5egU(v% zku;ug`f1LM4UIF6(?RFuiRs07)YRBie}9+y<;BGtH*P$5_3Dw~lA_n&-tcsL|H z{PP88e#6vLQ^M9xe|>Fj^4nWmLqbDAIenUUD|Me4cySFnuxLs0_w0_~Vx;a-IzQ{K&Ves(q_>+9{+_`5TkITEO zP2O1cHcCfV7qlf8bZR;WH}~Vm{r1mRE}sWF^j%R)iz_=j8?+m+qQZh(OlODM_Ql`} z7@4<5`KF}YcF$NF=3Q21Hgo38BS()WrlcIn-~YF5^XB62wHLlNDfa(&;q3X;l9#*1 zS2Lus`RCe+hxH5pP84C_xP8Rb$BmU>U;;NdxP`}XX%HnuHMy4_;BkM32!|9iWH#isO?Nc6Ux%#HIL;-}Xn zRsZ{XFFS1Gyja%C+;|PekNnT8t}#xSu;c2B0P_QRcXv&kFrlHhmsj0yPQrl(#+H_r zj(^&Fm(|wBGLCwoOb}cyb!IK%-*NwPVMg ztt$Nb^{a%mbo^DNjiA-Opjoay>*{Yh)@5&Y>|dg&6?4$u&>`T1n>i4-Fv zW8=WpSD!q6x-t8@UQA5Pg{-YUGYlAK`nZLLir%|-ujcF3aE+;6$9g22=g*gyl$5-3 z?OIS|9zR2bMk*HlzkfNnCLH*cPai3upaPRkfhfkd70PXe*3g?M)dqF2wMn^9W(9qD) zIdb#n%$61wHXex!nc?M*j*M1w`DXgG?cHlDDJjXq&R(9i?$@s>FK_SJd&Kv~^~bHx zFPy*rNfCGLZf(XU$AbH{-|znT@#Dh!c>863bG`2GtM&BrTNb`PE@n@~#4le;l9G~U zZFyc=TB>Sgwd-U|^6@^_12=Cj9&I0~#- zyH@o141+|bY15|7m^pJ{h}O#W>)9Wi*59A<;lV*roBq$A8c_C`_MXLAo>5p>cw@ce zV+&AWvM%l4pP!HRD=R5|`21P8wP5jqD_L8UIKQ}o8rz^YqXGx0t@r9xmXeavhE1D< zj%S)kef;11j(u;O{<-@XE-1utx9PM?8mEEA875DidUSexou{+2^JJmdyu7^OXIEZ+ zd89h_-`_r2>m%1qq$=%)M!9hWX8W@=`WSA`aaQ$ToN0UNde%^Uj#{~-)ECQCA-qT$E?0;cC&bGn0IETW;?&USbXrxkT-XCgNA;+ z=B(cN{i=}cCWaX^W_)S*?7VsN8XRw*I(ahj@-p8B#R1j}(`1iNBhYufaetf(i;>!|H zNi$>i?8y@+9z517y>jKs#7j#&K_kdKG8O{z^74Ljt&X;Gi~o4Bxc|n+WOh(-a^%Q^ zmoHEL`T4oCyF0r`A$nhp<;U1fH}-{B*t!_c`}=A^Eke*GHLh1daKIgoS;&mA$@GZ0f(izl*=T2<++U;o#s{uxJtZw78YQ%Qqz)WIEO->+R^s zs5Q0g(W9hQt5#L~d^&xmeZAefb?YP~B@^@V`kI@YU(A|eUvC$+7IfPLYXfvTLPuA( zv$Het-k!=N(_^bvX?^*kYJYtZY_*rLTQPO&R8Y_9=jZ3f z`S)y=`OLgDapig^0T$3O^1SMImTkP!YO`kE;@ULvWD2M|(Cc>i&(F^wr|a+gkuvu1c7O~(QYm- zEUK!iAjOwoN*E@woVWX}1DX%JU-P*)V(Nx9YkF3#()#yxef`4+4;(5hD}{ysPW|!o zr(xzLl|Fg4h=@o+YHI7wotB{aw(sxm9yxjx)cW65 z`kGB*-sx-CuHC78KG(w9IypaI-^_p4&5+PgMz-wYWY4E}cb7kY|Gt0bOv&YbbA{G# z-LT=nty{BvXPXI%h`6Mts$RW%m7~caCr3xV<^$v7q>oad`NCfR82VJ?de*eE;v##kYDk?IvJ&cHp^K*4= z{ShE%S7QMxoD>xmZ`{5uEG2bnP2}cTEL%=KEjo1QkcPhg@%#7ZU%C|ZG2OjSCh^6E zg-ez%fBfc+kB<)z=<1!mzP_YAj`QtmXP9P(t)6yS+j#k!wQDDyetP5fZR3Ok450H} zWn^SP(_I%YUd%9&nlon(=pyGmdtyXBWNn=Vn!x+|`ugNqv$!1m{Q6$B@4smBu5$4Q zcIU^-K_^|FIN>29E8E%AlX7oQr7vImvuDqC?An!-m)AFay7<(oQy-n@le6*2$k4cX z^QMJ`g@CyD@zv}1b#-=jR%rEicRvPSiL*5;v^#tEC8@mZ>~0^m!`H4&JJ`(r`C4?o z;`Gy=-rmYeN=#F|T6gcZR#jE?wR66D_3E0Kos&SY+~iUwRz#PWy_8nJ0>I`P!MX+vUaVmaoU*!7cUBKjXHZ~rg33Wk(1iwhtHlJ zYhYw9C@d6Q-{0A(Xk;`g@9wU|loZg?)P4K*ok%e{bm&k=PtTECw`P5OeEjjFM^34! zs-S(Fo72x9J9ez?-QC@w>pN0XRJLu~cH(K#qD702SW25}B_}8M^z{7rzW=}OI&~A1 zDIFagADiVwMO`Z@ES^1kb|S@Sna@n8(o$1p_db!W(Ld&AKfF<1ajU%ZT#56_5YCtt z{EPfu?$6#U!r8fBRaI5>$l>&w^~SARj~+a52n`htUhenw^LhL9 zcXxJz=E85?irTYx@5;4nL06w|+GGSeI2Cjg-}LFzcg&kLORA=}Hc&$(BrHrwO3EuV zR8&z>@yfMpLXwi6`|JLKO24mPzyA37bK?B@{#8|0UP~u=PF4#H2|03ebNa{c-;Wxo48$QVPR!$zCBZm(&`}_NYnvQC|vp_2>ZtkzQzj^Z}3maRPQ{?KaMin0t*m$K{ zHf}V$cJ11XS+gEJdek&=qM)$4U&_^0p`b;+e||jf*AU^lbNBAbwQG;wzd!%ZotUsS z5sIhQxvg5gnv;V=;QRgi_vi20WmWa)|^_ulhvfP7rE5F}+v(&@mkFKY`zq+Po=R{@qdvBKh zNj-7y+_NVqCxhnn=gv$1`RS>->V*&M&uqV6cY00aW&;-qmoSW@kzx(EC z@Y?(bzu)iAFMoA?ZCh(AtD>T!d9|eMvnwlueUsS!d0n}B)iCSI3bplrP3>(#Q;Giz z^kQ~^jw>kKJpH1kSMCcf?W>mIM${myA+$S2T&F5C0tLBl^g3Ljh4{n=6RcA~O7 zXse#SKL1?5_Wk?o#ovZq4+suE{POa0O-)V5<(E5MYZ(gfpFMk)lZ)%n&6_`Gy$cNw zKmP0MYf!%=EG$e#O)V%i)b;(ny_VJAbc%M)`Sq*nOO+9>EpH!d!hlGfno~C>F=FOS@_J2j<2DR9@LM@gU-S!k#z=$wn|*S7~7irLxO{rK@iKv>v0F;VgEu2SLC|JTLt zp5`uJJ7xX;e^UPb{%_vA;o#(a2wFFH{CNA@+uP%>-d zJ)jklUtV6GdrN)-WT@e_S8A$ieEnZjf18gi++sQhu3Xu2^|dG$>)+qs)vc^%ojT=J z_U=xn+v1&R_cza+DQR2v#bId>Y4qC`LS=~SF@v+`7@9)p=>f)N>rP|lm z7ZDk0I`i<28xcOOlTW6Ih>Jgd^QLF*T3uCD)wg<%)yg+^6e^!PckWL0`@IoSQQIPW zuid*hPdu)oan~-ZqM{VdKf-Y0wb=1oa zd3kxcT>n8k&~DtiRdhYJ{Na-)N7{I$t+ux9tL6P_4_bBMv@qergM%$CEeW}~zCJ!Y zo}Qkd5?V~`SSz>qhi~7Wz1#gh?ft#IJaRS>YkmvK%Jy#FY<%q4u^tJ-rnS-AjS>&B zu<=SAxwbaC^5ao)PCmZ8%ki~)FTVZ?TA<(3-foF5#c6Jd_QJ1#o$Df;P-9CM~I5QiMK(=H{Yb&S+y)x`dkSsVHvX|_%Vvy=> zyB=RZ_h`3x{L|C+1rHeR-Mcqq)~rd>r@LolXf!EwY-Hf&<@MdQjS+Mc$I>88xAXh| ze!E@&Ql~*s*)3+e6~oGvD{tJs9e=f5L0_L=U0q!-W=BKNN)hg_CsK?y-t3Rj%U`4e z8l*dC{r)_V%v&{;t;hi^&c- z4?{>J*owz>x)~cI~pdbLS2RKfm~Hrnqx!MXq1C>cIut?{%c~z^PMR ze}8{BPCC+|cCaKZEv-k+R!Uh}c}tY8ot@o`*|Qg4&ARxq1T-Ka{jvVZiHWPVc5Y>N z6j-rt-LhrN+Gfp?+PHW@Yip}S$+cPYV+2^dyuFWZyn6L&c<=Vjn-AZ(vEy*|Zn+*= z>uJHu{VuML->VVN>p(omT)+0H*#4-sZlS9eZQ9iI>Xp}(uU{h~q7qY6d#7$SRZ~-&F=IwjQqrZB zR}?upJF}19xG_V0UPTkX{htYz#m_pH|33ZqjMvg2AJg4`?oU_dU;?dBI?^c&x;^3T zuI&mOSFT?NjV;Wxtu`<=K79N*dwzaCsOiwz$tkWM_vF#h?m71L^Y-kqNlH%U__H8d{r*T?Z%&wBoZgKrd)26u<6&VQ%3VwNeTU=Xv z_3W&b9Q^#x7x&wNhW8gOI&xk5_6xIPVJ3C=J7&&|ocvx}TN`xX)=azFs@?M!OZB#` zTBQYQH_bFo=iuZ#c>A`ryuAFKJ9kc;KK=O7(QXx0RnYR-J$v_d_VymVc1=uKSy@U- zN<&{?{H_ROgYw1I;rgIHfTpIRws!ZKGd^YS@Aby5Pd_n1(Zb5AOyj^7K~KgX+yNmW zNBr&U&hPvZQe}1R!FA`>)xCV)${Qx0o^aYBoYQKq!^$Xy%{OLjJ{p!XZKiSBn~FSn zqc^J>lsGv%UxUUpE-&*1tvduQj{oxV@^WXd%F64O?(Wblag;iJ|Omh`r zDf{!?+{pjUG0$)8$~F%#cCsbrFWA}M!876F<kfAL)Dh z`tpLNcld2SFif2~bxp)ZryTFR{Cxj@Iol&s^w)-YM@C96UAi9p%k8>7Jv{}brKv|c1VJ0P3LhU66coJp?qktTnd<85 zHa=Oe_xJWj?yIq^{q^PG_3PX37B?*H$xBL7YG&t8`}yf9=!kON=xs4qgZ7!SI40cQ zmV4vI4TFpe3UxmovS(#y7nYYFzkYrCySuxSv$M7B!dInt0yI8+ z{tP-|AGE>LXO6|jvt2#EzrSZs`1t6kY*n1;GKObQpMn-sdh74KvT*XA)>c;A>TgHx z-=D7=y=_D8ZL>Ch`FnX!y@MF?9E&#TZ!EegeWWtwbH$W7&suA5&ya9jV(wC9eqq7g zgUe5Ee=KM@^t)k-MljqN?Yin~?S6AP;dl%H_IeL_}y1Lp^bHa|N7hjg>#O|8% zd|ox5y1F_;-u}O3Sy@@21OBz9b~QCIg=mSInVDU=e*N*2CoQX2YwxZ4nsjGJ;Umrq z=g;?V&AuKK64KJ#?7aE=<=0<9-CmGE;o;ZS?6XaL<0ES~?AsS7Vo|kso~U-%hd-as zC+Ft+78V+Yg@ws(ll%7KVsqu^XP{->Z{EILucdZH>iPNk>A%0d1>fRQ_p1|hCsOV2 zvN?0++*-@<63^tM?1NHKuyK+wqtWbZFYaW_HkM-~AnYcU>RtD*lwBWnc4ANdLZO!kRa` zbbOOl&qyk(FHe#EU-i-8|IdVzrREn^Ra7=qea&KGVwz!9s+D}aPxN(O`4OI55&C;~ z?V1G|#R1i1b$=?}?fLBIDL7$A>dF->1ZuZWPfkp9EGsiRc<>;o;lnMi_u%#G?uiox z+xcXZo}8En8nKyYTWuz3o^nFK?)RI`V#WWnv$AFwBpwPqB+s+5u$hf_(T*K6dU|*^ z)`3!+nVH#*8#g9QpYFar@9u_e+n!xo>MbH7a$$FQ{6tZ4s_M%N(3K*~mMxnxbEcq-%$ddgcBlI7|5b!$-o6GJ&0uEZaZsBK z8h?FKWEo%gGqru5IB1yq|F7%&*H!IZxUg}@4hs`0-oU`Xl+@IP7c&eD4G*3>*T>Ax zCm<$v&4uy9w{OR;UKO3|cm2`kXP?j8=Wn|hl$fZfrl$6y#7an5_~rHW^1r{oS65MK z0qy(R_y6(ne$Y}_20nQ^pa1{}lycsm(1=@eCWMVSKH2d0yl#@bSTwJ^U z)OvWtXh*HxcC+e#X=y2_Nt~bG@3(yMzJ2pR3+_S3$31)IR$6LWey8ww=;JeI&uZ%H z=YOn|>Rom;_!DR+P1P5T>hJGBdzsVDN?rW5A@MMqkB`ra6)O&$JeVZTf`S5p-M30xjy-oy zUXbEGUpzH6^=z6-L`1}fl9xeKyi~Vt-TLLlMdsq-;xARUYHDhrqTt1gimMjh-lxS@ zzcDp2Nk~t>{wDF%y?gT}O%f6k7WVY_fBxp?<_r_5qM{;;(pOV5B3G_mD|-CJ*Q%bL zo)c%zsOanWcXe?c5MU1r3Oe-QV6&&M@6pqzyYJWkm(9=5- z+c}yPKAa7gH#T0ycJ#l@U#YnV79D3|w3r*}%%7c{quXoo#ocl{>&*?uJ6Y!XDcId= z^mZ-HC}mo{IctaQoj&LKkPU_PjQ{H{%->aIyL@xjhY};@GuMT-zcX^HoU5q$k;CvW zyIG`j`ewEgD_PJc1WirQdfb@nc?oWAZY->2+=AkDvI*{y-5VN7NDeXu3hb} zt9|)uYHCZCEHU}LJv=1DWqaP;7nhgwi;9Z+%rF2=j>N>qf)=xW{rYvs?%kVnZ=1RG zO1XM?aIo{q9Jq65&YwRuzrMZoPEA!66BE;z>J=0e1iAq(EiEl6YQgmB;>V61dsJ;( z^n~NxyLYi0Cd(@8>Gj>Yb7yrIV`X*q=Udt910y0jX3ms+`t)f;WF%woRLin3$LhjEoLlz8rk#`HvqJAg`L6 zAHR2RURxVmPjBzXj~^8^H9O<>RxJ$CIvQf{D6nG13I${1$@lhFgJwL~_+&iX+}M(j z_oA*@|71jr0j>|6#CKb!w&a3Boa4Jfd{qm{8EvAl(MQ_XqIB>*5 zeG}I!53Asl6FS~a3C*%7UfFi#Ojgg-qCDlI|VJRuJn18&u*D7X11`hGOGTT zV`OAh@%QWXnfCSnOwHdDgmxJQU z>+0-4O+nCo;~(q9#Kct8)jRv`Xv3{y?Yha)yy5s{~R+lNy^Id^6=o$)YJr> zrztJXtq>)u_ubq6!vW^CyY8=Ay&BXY1MU8b+ViZ+u;xd>z54&PaTO0)-@JW$^t$v~ z!``=bxj8vebKMtT{BSdUzM#1H^;avauC0j#E%kVLdAWJu7aw2WqYh`>PCF$hJbn6F z%A!DF{k~sX|Nnj8f7GvO`sEi+mtKE;WF;kf@YqjT8JP=NTXkZ0h5WJI&VG`$pnJjf z*M*z1R_&ZAdHQ3C(c<>4f(z}Yg?RCBKS z`g+hLDfrHT7-=D)xr#P6GWPcNppykRD#y6r+?>vD|M$z}7wUPv?ecXqK!-$BeSPI; z+Ae8brUSZLu3LX!MrlpvTW;1*@(vTy;G$aov%7w`P>?{#;QXW>C2I zt$}ISh1=(a*rSEdJzY8LO!}HB#Tys&9s0!9r6skay2CiXrg+}&_8lFTtYWr2v(hRn zE$7#MlYIE_;h%rM-&A0oodP zQb?iDyWroS$~klAg60*i=JLtQ%m4cN`g&5`PQT^K#>SJ69B~QJ57PbbwatU&eZA0lDyHD>K569M{#|}vdD@#s(H0MQP?wKc!=bngMfA}=zSl<#MvA^*PH2$1_!oA~{ z1-YMTWh1uySlmp!1EZ3z{?4i@7W_$T>M$h3v|BkiWMBm$;oThuDvb#F+V^5 ze6YXm(S^?K>vq=fYB{oX6X;gnIdde;a%TLvb#bvfXm`Rp;qUcLHN>vC-|Xh=#-%&oA{5VUo2-8w#ZclS4M-hBA*!C_@c*LQ6_ zJ-5XdL96!!<>mFy35trk*4Em-zP9%9>-GD^UW-{+SR|yRfKH6Dw6vTu9dx;sq;cAr zP}v`OY*|}p&9yEEt#9mVENg9T1)bq}dAWabZf@`1y|!g#Wmm3T35bdDiHwxIcI_Id z`{TLu>60fZ`+h!?maF-2(CmG7diwFX<@Y+{)<1u6uz5|?R<7{y@HK1JeE9eg)E4aO z;wn5}TwE+^QK0bsUiEs3EiaxwZ;xC5{Kdt^pxxyX($dNK`TcwM+M1b}g@lF{etQ!c zq9rOSD(d3uDkv>|`(=-wC*uy+2`8W4`TQU!Z0)?G$%lEG@&ev3tABCsu5ZD+ydMsy zpBkt=^PfLw`sMjk_cht@s^7n{!G7z(-|l~AN`=I#Z+MZe8o$O!MD*pw#q4@|dZ5#G z^7HdctYlMDQ|Ca=W4?6x^39#a>R-Qp1zne-8|~)cz;NF7yUhK%-?^*bzh2yL_vmVP zyzBbwpC7i%8x=qE0qqrhx9hcD*_#^&pUjByIQjbTudkr> z(n-JXA2SJWby8e*GOp7{?eV&Zgub7YkPT_FX+aB$&;N^Q&qR$Et76iFxeUJ z&2;3-70}rt42}X9UY0x(m(UTty)9SS#%7Q6#OK#%+g5)w$i1~i?JKv8tn5t7Vzq`H z&wJn2M|=DB_4GUeHR873D&vma8Kbw%_*IG3w!FKi7C1J$$k#o#js6vT`f1Uk#fv-p z`oyl^+>vImBYS@Rzn^@|gU#EQFx+th&AFL>akcyX-rB|}r16v0k{!>dajvm@bb#I4 zUVu5Qr>954Btt+?PcNxa!Q0#0#@1HSFo`AM$KuQ!zlTqrxMXH(*8cjEx!L2y(|jI z1hn>CQ*))O@nRn}Wh0|WXU?24^Iaw+biMo6ud1e|rl=YZ^KT3D^L4qUrKL}uIyH-> zd8_!&m_E0~2QOXP6uNZB$M<^-W!HX;n(0#(y1waj>x;EVb{0REurAB#w$B$i6#k7V zgR{K+yWi1ZlXsEHrI)X1Xlo1ac8Yr^wd>R8i#zyc`dm}}D7yVx{yTXuXJ_W>@9&sQyieZSv@Elzq` zWEmC~mSk67Sy|cc)oa$ie7X9}nKK&}+W&fXb~b2t-0UYG)rSUChqTK6&cYQs38;C+rYAbLNbPzkj~*4}E3j=Gfh3TcsG-*!FLm zJUMtd>$>I3)t{f6oBdVFQ6M8D!(naM_MPwMT9=pYNV?mrprX>UY15{#^(RlCUc6#O zhjTmM)}MCg=iAr&9@=*C&3&n?t+RIR+GWmx&C@*!9%9R#6*TWWw&#E=2}g?xjEfjQeIZ}?30s| zHFb1c)Fy)(w`vz13 zSK7t6EImML>WQaC*VaT{PU^32b#m;Nvn?no$uU$76kwS&c`|5zOHNL1Zru5=N_u*I zrLV6o3|k$&=h)GstnBRUNl8gjrf-)oSu$bz^m536xU^ZW+_IO~YGT;>mFYS6mp_x1Jb&x^;aXVqw-s_~1#g7HYBz85mS+6=;$m}4 zON-h1*Z23^_uKu_0NwBY@ArFl9=lz~<*Ir1#_4~1ljr-hqr3a@rKR2}X=zD$dFSR> z7Vr3c&N|xnySK0J+W@;YEl0j8n3+wRHA~9w=ab2P=PzEkZ~%0?$^Ct`>vy&vf4lvD z-`1_Bpk0nvuZD+n<#Ia;fKE@ato)?nZ};6vhe-h@1LH{&M*4(b5>EF=OlI6X(xA54y(s?fKK7;HdVn z)vkSVj>`_*xWN%Et^Fo>jznr!+xqqTVq#*~kGiKPCN{2LuWxB-xprO*8?Tg0PEL;S z{LrYVsL9z<+=Vx^_6o$n=T#M!C+^8SAN zva&Lr$W1Kn?(T~gE&A}~OHOG|-1_HFPEKC3Y#Hc&oGUAXZ;SrDFJ?5e=fDAnoSdA9 zeKnSMcahF1T=FE9< zeZ9P&pWoSSS?kt=m**xQ?*ldMR<6{XtnQyz{8!dBh#`*=w6bSa=<15ESHnAdds81A zXq;nT|8LdnDPF4Y-o0DPWwtl&{OkMX+=fFGc%2s-<`YV){-3(RbLop z_N33NY+JwYSC^!5+7_u3CCbe$ERG46m-&JgOKp!Sm~_N``msw_Q&UrG{{Q_BT5k97 zVdLh_#(jN#H*Vbu3JGzktFvouZ3R`T`)Yq1)%^HS#=g1~6q?6+rP~!aKy%}u$&EvY zoOYGIZri-s*lX#erY0sYFRu;Tw=WN0A9v*F(Yuq>|4rMlVMD^LEtwom4o*%?+1J(_ zJbjuwJw1KSoH+#r1q;@#>pOJF>C@-WCr_VtUVq&<@eoT=Qqry(+oGK@InQH4Lyv;y z!NS7CqSlJ3tE=xSfA5!>soC1vsv*J!s)1}O3YM?hyiMGbamPte@R#4KYyZ@E?fwh;`OvNaNDfIr%rjj zu`Q_VN_{-i#Y*0n`~D}rudpK zMvE3D9&=uB@xX?MF7ED&FJ?q+%aQE2`E-K!H*;1W=o0O%QM$W$RaEjq*ZHh`&7(E7 z>+*8{|4aRz_L`LOU9lLVMk<-wD~$u?VJ0B-oBJxboH?R^Tcy?8Y`PW+I{f6eRv&c z6#Lg{ErzlVLtn+ zW&HClTnKP-cK-S0vj5EuiOituTHM^+u753AbTun-a~ki;l`D0kw!BytC9m@D=7|&| zFE6hh1rHDL?oLncys=-)($Z4bPX1F?;t4m4V7_%?6D&llOeZUb$H&(@f0sFM`t<9z zd+W6|wX~d;{@R@1|3W5{Lh(Ty8Eo6`DD-mfS?xo zk4M}aeV=@N06Ng%^|iHYqPMThRdrr(KIen*w}U&210oo>RCy#A{<1gBw!U#&TBK2U z<%CkfW2W`D^mKHd+}N0$bpF+j9Xs@d&sFW6w`7URw!FJu1qB8dFJ9cSd-s3UvkQdk z<*#I!&YU@O?kb7z{>N_K-08_I%~)Z^7&fmhidUzv^>_1uWvr)b%gV}@Uy}TPa>k4q z4<0{GK5^z(vB`!6Hkl2RN2n2|7RJ!J@09+`Mn+QdX2AS znF_1>J-L}aA9PZ#Z@mTwn_}HBlQ}kt0{^09fBbX|5ctyBuwdSWIS;O7E!@E|C;Gh3 ziuLQ&EiGpXtNSHnWpz!RD$2*lw`0c+&`RaBx&PYQ*g%EG`SZ&cENJNJ;sW(YzkXHK z((-z{<`x0-SUOo#Js$Dm;GHE?GVa7P3*xFmc_><{C-`RP`M0hU48jd(kE~4mzAZZ zHI<8-n_EX$cjJZ)4hsVUVq<-MeS242ZEtNAl#}yYAGdeOF*_k4b56#Hd2Ib}+fzsAcI?<%*j2KpA8HR6Av^nUjOdA`l7=vPY=&V;^_=&|+NB_O-p$-=Bd}+TUMaCw+L&ls8v>{bv3r>1AhQiX{K6FE0vD(l|dOdBwG< z#eGfOD?`Gc1jmPa*Y1^Sb?Tcr({kCfXMS4GD~(1HwRKXP=*)U9x<+u#{9)F84%+ zyd~TT4^%pO+l|#9ELT;Cx!9X^?DdDM+Sm7pFce8Y_+5KpbNY0jPG!xx$zz{uGUpd7;~m?C zSGEF|n|yhhuZ(S#2sbx3=xj6x2Zpk;vKu#Vb_VW9O-+4teWr1`Mb#IL z($dl+M~)aI9%5O!v#;fdeb3@nfz5JhEeFJ%*X6F0KY#GZT`j_+yB=w%PmZJ&tz7%;q~un@2|RYImE`w#_Rm% zFz+jvy46|Cp~3zWQp;%}uRezLfm=`xmsz^K!1$Egz?~VZm{6esOVfl9H037So3h1&GC-cYNb=V+)U5y=>imzHN7Ty$-#6oRG=Q>~`Q5zk>48r`4rSj2`~}>KYm^&TlXI zBVm1A|IxcT(;YWU*KYfny{Rwev7*g~6TvfPZ2537Z1uxGmLC4?$tMebiIlu%`^P9C z#58gHK~dJauI_Ho$#Si&tw)X=5fBu-_;l7L1rE@5(8cckj~+b&%?!P~xY&LAJ!dDU zN6#)TXztv9=$m&z1(%CeNlo9Ss)$Kh9G^CuG+EXrJ==f4uqY=)^vC+y)* zIxZo?;K-mXyrV#@Y+Y{bkN^C8e#hCtfx*$y@ynZ=!s6oMJ-xk#W@ci4@Am%r z^?E%E3yZ?^)0Xolozd5hfAqAI>q$6Az*@fro7|cw2KA+ytIic%pR6P*67ufx+3?L3 zFSj0LQ*~Hx?(*XKvjf}KPME;JwbSthd;5Xxe5Znf&2{W+!%kmZ><(%zaEt4`xm0&C zTxs&jj=nxME2~+zZbgAwa8FK7etCQQdXcUAiXY7%zE!y~jWz#BNz9MzuLYY#9@V!^ zsyh5*?c@Jj6hJG^va_?Hqlc0<6$XlmiYe*o#pi9mgJvYv{N{8tJF9Qu>*Om;7G;>p zhMO}HpA__`?EZ}O-xKc`*P3CvpwB! z|Ieea(2%Q@DL6RT$Jf`;(D2}~V{HcxI506YTULBfXlCbEGclPGYp?Tb{)c?4f|Nrwmujrw>yGkFg-F{EW&~PH?csiY!9Uo@R&IMhY9b=^RU~jU) z4bf*`-`=?4BcnQ>VN@`^G`D1$XY;xn=sSYU13v zXJ?saS3K%eU$>eSbXHcjWh9qvF0a$B7+%3_UcH9<@0r$@iQNu){owH95C05TTs`#W z-iH|Z7lp1u7k8Du-mqcAfg?v+wrnwJYHG5m`(u%pmj{|=iT(dfCF<$1m66N)CHCnp z5B$;W_=9=MbIBI_hA`&+HD8~bK4qP|Z|}~Xmh-y!^b)y9nmj}BhUv)TJZr2LrGq?zlJZW)B1i&^Ek{Q70{3$tpE zdq;;b?5WDIjF0s_|G#>V^Lx^XZ_m6K!qnC!416Dlxvhdt+vZQeA%H zI+0kRqoTYD%&jqPD<{en2eaC)>E-! z*KdvTb#rt3{q8c)@jlt?&rkHX(+^ZuNu9Ar&Sf@4n<# z&uLIxt6$cD@8oM5+H+NWW_zRcyx z7aKYL*ZU)nubX@O#7Rr1rp-MX(UKFz`1w|g&o*tizu~c|Oogxb(on-G?2C5ni4cvtli@J%j*B@TDiIwf1 zTm63T^h=k5=J=^EUAlD7$79kJHgcd5v8X61?XWcoZ*Oe{oqlw2vAc2Us}Ln6B?+Sx zj=1%p8=xP3{s{_8z3JWIah0syM-SD0zsv5BnW=esxqteZ8HS*>bdMe-{rd6}w5mQb zG7>b1_wMfQ$unoJOp;YHeNo`YH`{#e^AGn-r^wy&_`R&4xa(x9?wa(_tGiF}-+#V7 z>G>l5NDK2OwzKt)Zry$*dsZ2L{P?lNzxDaL=HAK;n+4>eIr+<5{P%O$wLa*qPnNUU z#C-3B0cxP#51<`T6DLjtO(TJhE!?ujOR=4YW_VZ=A zqYsabt?G^g1`mG!J@~THJg=p4J}a|hXlQ}dy&o0Z>Ob?YTzT-&&AjciySlg*En2kW z-LBW5jn8SDH|E{7s`~m0v^52^+3oT1{^joda$jCw@1LmbF2up2p{bb&Itec8O2_@b z@5*gHpD_lVc~SqbMo3urS==xSqn&#ixUd(r8&wUXCg9*Ofh%;R_d_WsI(Y5T;@4?HnFDA(k9 z_hIKc^=%KoR&BhQ16pX{E?+Cse)u5hE>Uj%JqPxFzvu1SV?KRW=}XpzWWfzpUs-+2 ziZAQur^S|tT>fX+Yq{8xu+VL*$Z~x6%i2u zU0n5c`~82Lzd!$4W!m0wg4Mux^7S+y^`qN6s-u2;zNsn;|MmRQrx5MS?~E*q{@C8D z`xYEkwtx2RU*FcpQXXwsYO*f5Xb$?gaC%N!0*;l4HXYSz-*rq>If%l|+0CO7=! z#a9fe^SHg&w{b@EN$lBr!?Wy7ftu}aHN*7c)|~E!8#f+QdwI6D%P;iYoc84T^YHbL zzW?s*={fSY?DN&|c+d&_x3**+?h@6G*k5Nmb?VfJwPAd6HYe6ZZhmoVt9GM911q-} zX#9M(SuUtMJJYt>3^a09ey5QA?(Xt*(1x3t#_fw1DLs1pc<0}5w?P+=cJ%kF+u6-q z>ODOuGP3jb+hytJ=Yf_GI2cTLVHr2^^W@ppGhX`tYm}b6FCjqO-qUcadFAr6TrWAr zj@=9D`u*VbpX;anAAPP`J$?DE#Geln;t#WLKXiOMtN%Y&S67?wcZxy#$;v{@{{8v6=f|V&HIbX!Zs+ap?djo}`^P!t>=nivTe;irF$Ri1biSX&I%mQq zj(PQhMn>m$oZNY9f4%(rvori&KUrMjW$%}@r&VHlr}m|yQ}#af45w_=j!qT(_ADy0 z*kY>M%L@2KaiDV6CatYc3k=W1RI?_l`+%;LzP|m?lB*Xk@V!^d-HPo*)aQTlTE z{9_LbK3wwFH_X1Kleh0@8feu+pRDx^gG8sh@_XiNp2f+qjMFZjSLR%0SBJ&&!2iz= zoA}n)>9ex3>O}q#oqbLBaltvoAfdM^E|Hz(>>qyWicE{P2ulihxc%b3TK8Qs#maN7 z;(IT@JY?bvy0!E6w%p8%i;l7`eN_AV+sB*f^9{@1+>ol7F8&U5yyS}u3$GgUbe*_a zU3tkvZkOHkj^LU(Pem&`ySF{wa6RsMuBU2E(F*RWa)Cc} z_HS=*Pd`0P*Jr-n+=E~pEf`eaPU48wioy^3l^mq5ui+85;#jfX=_m}@^b;ZZSf0w9Q@31oNlV0zY^!#9v zk(5Pe(badX=ij7W_-TGQzPhp~sufoB>VO&*a_} z^zQC%^QB9do|$j||4ldNRi^dVPw%Px?BU~c!Jw~2ER|s*hSY(S$~b4dur)FbW3o+X}>)t)?k8v7yHFl_ZyMdvmF zdHM58JSVSMV^jII=~hTk&>_%CQk&Dx{}xS$I}gR-`V~8&M{5x{^a0;pXJ{y zcHhmiE>G0oZ(n;X`{^Bjf4S}XS!wpK;pF`L_gw$W+4IfoD~c$H@barZBi7w|T&~)O zx$d>$-)FBT9Dkhn?afV4<(6~9V43giW5WJ6g$I>W*6;lm6}2_%=(%#I>skHVSrS+hUwT;}`X{kQAamnQXFd@MeZx3gkzSCBa-S75dwc8ZjW;!_s;Zz}`q1;KV$1KAUQAaM z*(nmSCT!DbDF#dRn*R?bdfof^NWhwJO40YTnJH_}F(>@~zSJc5Nz(W9r$7F%wSTf* zb1Tj#bgJWG752Tm)joe+<|MYx{#f(=yfa;ET}^yTH)`*mvqgpdcd_=1yIUQ9vZqa>#EkX^Yi@|yY;@f zw3K`0%9Sqe?vKlM7h1@;xVZdT^ZlTS@1HvRxb@RNeF7aC1G@F#>#M7v<>LG6>vxsB zT$E=&QR>^9E6XKsWvNbAW&N+Fy_fC&(Cn2#Uw8LUo+;?+)HAmsaZ_c!X1H1Bv8Nk?g5IfHub*_y zcd=pP9wqseo%VL~{?yOrJu{8J&^!O`wcS%R8Dd=85YG^1p z{q)k4)-G8Sk3W96c6r_D8TXd&6D=@mOZ;@?jIE9Brqo{9(>+&nD?VII_n%?np=Zm* zAb#`S-s;L13)>}ZDhv*{^RK_$6}c>PQ}y?}Y5MW!`edy^3*v37zO2~%&Gm`P>acYQ z!PkQCeD{{#)?M&U_xr3pKlYck{mr!Ml{R1bn|Xp&>THwDOG~`c8cu9!VYyfF zn0Hsn%b>^Gnf%nPt!JxxPXp}^G0VAe;MLXDpev~gA0N}Yt63zNl45eKApYE@r`nlw zQm$m09&m0|E54@o>G%I1`j;+Udc7`jXT}v~0j9bgq6JS*2!a-;Uw*mf^0)FgHx4%Q z+nsQiuRXHNcXr0bMXbKF&DLH{7MLhMb;^_vM_Sq?iw_IVGF|htv!PBa;lQG|Y^y)5 zPkSUh`RZGFHxULWm&!`Z!|nXbi=UtCk+Mjw1Ae< zpPa02oOfr3)#??`zyFprNMLYo<9YaQ_xp8|&0L?nk!(A-s5So6-9A&7(7a`ZP1Dbq zG`DShe$Ds+zk}bxgWKD6pM1Ig$8*;2 zC(M}>^ZKo$2Mm084j)M4 z4P)C9wbtc^a-r4S8*j^a-%S->G0VH7&}uGdMGI(#A9Ml7Lg)5tS=H9%?~c4ISv6(7 zhi&rKs6wl`rFIz+da_dQB%7qn^Uj=@s0?be-Pl)Ky>{Ey#KUZ$+4H+`?dPRCJ5IPR zXAoEf>fc>o7dz7^)obn6ho66f&amBnw=8| z`~J+!YB74^Z*Om3|FO2a!y_Y@fg{n=(-X8dJ@xdojU_KHN!|bd>+5SzfB*1@{DKn= zmiYe@DF1pj9CTy{=qSdC%I;Yu_p86X0Uavl_FYp+>1#8SgYAbC%KZ~2PCU3J^Kw?n z{&qguMb7Pfrn~$F1y{<8FuY=1ef3mwzb)uo)1SBR|8w)5lBc1gqhfDA|J>YARv#A? znU#D8T!lDTZtPAMud9EsX8X>U$E1IJILv?YOpfOvR=e%{YmRa)x|7!@E?&52$BQ}J z`#XEDmMm0K`Z`04F;3-pzx?y{!R>}Sy1%d4ZrCVp_j$wb4F}`hb`-eJs}EiO@qPHE zMH8n^++Q;1`nUJFZ%-WY-1@y^QAfuWy{`;0D$6p3UT?d!BBFvT&xTDwV27hvYUVWI6ZoY-etFDi`c&)b66Xy(*Cj8Z=OEu%v|Hi9Vgg& zUWyz@+nl)l_Ui0k+h5hnhP>}L-yhD}DkLiEy1(u(X!Q$2E8_7 z%Qs(GJauguU!04JQy-H<$LC+U7D4Nm9yaCwaO!TM>F(mg-Dia!{OsKS{4M|VO;7*x zeK>G-6}PIA5T6Kx(~XBp&ByKhp3E)(zd5Zuhi$Z43!lWaobTVb$}YtL&yw%EXXS>wxHxsa zVrW@0_4lHmcjf=N9B$+F-w8TqIx;enK__|}Ps4fp|1$l@iyw8liB5Ub9Wj0COIJz&6d>Cz?8 z@#xRb&CR*HY38QI);B&JJ^kkP56xxUJJwqBZ_GRWefiz@6K>zym^S}kc1K6dsV|!H zT{>YM*~Q1Mo;nRaH!CtS^2>{h&4&&-frgT0_}JrX{*_Ow`K2^_`niQ`mQ1K+|Ey^h zcW}CP*#$l0zdgV8J{`Mq#9B~rqQFuHfu_ExEI-a4KW}q&-Tn8=BR8jkHWPx*Gc5nY z@uN#IU2fl@xlcqzlD8h(e*ftt0ddzUw;dO=ZM2a6X8i8=!}#S_jzq&uS|lU(?fu_r zr%s)^yiQzNy8CL@)03Y4ljY)DXZ}{rHTL0qbKm=Y{FaBu-i1$^ILl#+_M|z=t`WLo zdfvV^tCKs5vw0diPAv8DXKYbOSGjYGQB3zw*X>{5te;k`H8MUp+1u%6lF*wty=*!E z+0Sh2w%wZ$A0Pbp{k+)ddE0U?x2WHbIJIKl&m~t1ZZZlAa>{ZsC}!R8ojAoUm)TE{ z!K>W)W7rC-xW#YvV(S}9z6%CD3K0!(c@nfNnnCdt(~)WV%U{d}t>qB7Y;y2}^UFAk zFPR%U{CVg9DVMi6b}T>4@Q>TvKdvr%rLPz{3fDb8J<~j0@wWNeq=@-xM=bW3?y5g* zqN({=NIrM@(qd-a-}5RP7Ibu6spn!)JeS!%z1{N1yAxdh{(Y2tCx1zr=lo1_8*aEN|7^P(7T$~%=9$Ng|uG&I~8Q<|zJYaHCM zW&Xa~_Y8cBK6w@Fj8Qr68Z>KnYp8bF#{;|<)+`h)`6MpLsm;akwfANFC0m;+?l<`wRl>Qj@H{wV7>3u;~eG%vO2AeZq$bKW0S6L!kEH1b1 z^mZL3rBaVl2B(nzZJa63LyMk2>Ah1KEM=G{-8)HUkMTqCtFLYTJ7|mL+Z;RBoVw74z4)2(ajn$L$ldAK3^ae-#w(P_Wb!+J3p~YEj_*eH|TFjJh*tNxdu;6cHEyeDRCm zpNDP1=iiiXIpM9q&^t*cLMI^T-SRua3aW~eCUMz+yjZr!j#)<_bNi(DCx_EokKFKJ z=o6_bw9cKe%(G_8+{aJrYC_rgc2AWkXIUy*$8%Z5OsnZma@?auZ(Mfg$XLHqwma7M z)FXK;qCq1Rv)j+{+@jO<;ioe>eY|V-61b1xbsT}4iMp>$7Y7} zIj%hG7q`H}#pM-yFXN7m8aw%~UytW+zS+?cP$wd|a=i$H3n=RxW9aDUXi;Qk5Ck>G z7!;J0gxa7|SaX$wi;D`6=BOsdK@$)c{gTe~DWM4fnP!v* literal 54175 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 z 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 diff --git a/images/driver.svg b/images/driver.svg index c3b6faa..05298d9 100644 --- a/images/driver.svg +++ b/images/driver.svg @@ -1,6 +1,6 @@ - + @@ -32,15 +32,6 @@ Driver - - - - - Async - - - Sync - @@ -49,37 +40,25 @@ Core - + - - Thread Pool + + Scheduler - - - - - - - Seek - + + + - - - - - - Compose - + + - - - - - - ... - + + + + + Mixer @@ -91,22 +70,6 @@ Events - - - - - - Mixer - - - - - - - - Disposer - - @@ -130,14 +93,8 @@ - - - - - - - - + + @@ -145,8 +102,8 @@ - - + + diff --git a/images/gateway.png b/images/gateway.png index 79f5a4fdeada7b2d5bb2a64a5fe92b8103d5a61b..50f6b14519b42b4da3a996e8922d089f638efb2d 100644 GIT binary patch delta 418 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�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

X9^lc4nrr&%{HZSov^} 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%0A=Y z#HS$8h<;Y`7f60tE;;o;hr&T)~}yGH_EoVE#6!4 zF$px*oy-12@X{?wo@0Ho)}KCovN+Mw)}|M^sbxpapC20=8yRm`)t%vyu@GQb=0D#q z^_C$tM0)SoN&s(xpqazrST>XYK*HE6ct{hgi0KP8KcicVbVnmlph$B!QuUViz+J?-@B z@cN`3;cFrsT`n4fc5%vIpE_lVle6>Dqta)yR4e}MpKz@&amMV~vzISl-q?6>vU;!B zziCsZfHr_fM9gS9G@q-Yva(W4OpN#SPs8SD_9I7+CMPE|Gc$u0!^m_iazq||@NLHK z88Olp`FxK=YVYl@{=P1Jecb8k`sdG`)6>^~z9H5){hW`FkBO0yQdQl*KbCoSEcEsD z`EDOIk39O|*Noi~TX$a!NnkiV??7Oj53|{V+nn0Br8h0F{| z&aW#3#6W8}Qlfr*7G%1}6A%=n^ygLmpC5*0Z*CkqbZF8fq3Y`2w{Ar-6qJ>f6%=Gt zfW}`wzWE-zyX7z0IJmf&K>J%~&zzZiZ_i9;KgQ_j+t=5}KTfY>IACz* z{{8!B&h!*4$XH>h-K;%N7%3 zHB|V`01BX(3zM0c z4oW|L`cyk?&5AW^Qr^XEOloauVY%n$Z!O|}+!7wzhLu-}vv<+$=5?+4C)nmo+vr-b*u(u(Pv!_Uzda$sLNI>jHj#d3kE8cIUk1{_~|I zBwE_r%|-TAd{kmcNl8hNnA(3<`q4wxPK|$(dlSO)-zBA-ICDnEvPfl~HN*KIKc1cz zx3;!ESMKTM_3rNO@5g$jy}ar_KR9~q*sIsC<9CX8VjnPklm6YQv;J!_VfxA*Da-`__^N4K}O3LZ~m zu&DT;Q0!vWw`I$h)#2-ZeS3SmU`EAja#?cT3b0+v~9Q^7aIEX-8(r636C!;R;`+6Utjm-#YLHSyGmbATf8_qFi`N~ z=B%r$bfdQk)JspDI#o(askIRsNf`NpMz*`K+$$_=H2g zE0kmZCwlpFY;{=1*y5n_{O|_t057Ze4;}`7h__GF0@v0L8|H}%aL8FyebJZ~{Px<~ z=+Dp3r?0#4?A5DVA5>p`czF2gl^ZH<{@&i3H*P$58?=8VQ%XZy`}UqnCg zy3D{JQ22P`#*LtvkYD9*Z?(>5d-C+De%ziDNm32}&#z)&s0r6o5jc2jDfmvwlAoVa zD}UP8J-4s_Cu3cv^ZZonwQJWrJw2P*`PHh*-rQKY60{fYKj@51`#PUF7J}zXPP~cL zS8%;*pxyO5Q9}Qg`_;rBpridV85qjm-8s2BlYwDZ$;(e49y-g*%O5%*A|s=-BeUU8 z-kjxm=Ciu4S0+@qvtK?Ck|O00&^V9l&K5S$OP)C~atF8Oz(YY!5)=w0F9a@z1q39V z+vvXdqThTw+tgDcX+Kx2(BS3mEq#5h_TL{#bJZtLpUPSmrQFz%XlZG=gGX@7c}bqb zAa__Uw(DEGIC+0v$iA(Gg@uZ@{QUelIXM|V{P|g|udl!7^N){@ZL7XyR450&^K*FJ zpmE)<^wkwmL8Hh2;r~=__kOvv3yT)++ErCj^5xal)t&R!$M3JIt}cIhX{q;gy&aY- z!`H_pAMX=&F=XONc*y)C>|AWoUj+kEllMpB{pQ>CnopTB1$4preT7Gl9@W*=@ypq~ zxUzEc?Af=UoSe*hrEB?J38%YxCYnEm7n`WMWFK5Pq{rmRSJv}w`_xJbt6}wwn zT4v3*et&x_yvL7`8?;rVukYCHuCA`c z#Khv~=Zyil$WZ95X;5&dw1=s`ughX8BXPpkdSk8 zt<&@J&OKb$(a~X9{LJLcIR$O)>gVU?3M#vCtdn41S$?oa$du97`ru>DkhEvluV44~ z^J8N$H{Z_8&c|U96&E*e&YYOTQuFs*3fZk##kK0d7o!xB!s$mgUT*sQ?1V|ff*FT3 zH~bKcOl&n1NM_%4B_soM@?MLE13w=JOXRB6t2>+bu3xWz`&M0vRqgwGd#|sHy?pIj z+Rwn;T-}F`3=EGRJzBVMp^7i_{e89BI$ITuH*MPV`r6vXcT5-<93357cGm?4UR)8l zxZrZbym|ND-Q9ij-lp2$Wp_+2Eccf`xA6Cz%t>1xcYawHyW8!@UdRfyHL<&=Icx6w z`1ttp<;&N{?3`qIf~j17!6}mu`y{5h6^l>KXMV1sd+T`2t|rR`ZTYvh=j-ptT(Gjt z`Af*P#;>~fe3%tam^275b(bXmRoHY$)ij|_)@~|Sup+3F7r<3j=AdvwNm;r1xp>a) zZMuPH*D0Dvfv#F!xpHMYpKR9sd9^EFl)b%mcTeTzd-vv@*|T-)R+ZB~cJAH{x~AyN zj6Ii@`_EtO-f#BCzVH#tZR5C<6qUjy@%!s+@3((j7WMo5eEWV`>#|2jIH#@Lo_pJ@ z=*fxo@%zon7H``0XogZYh>JVoDf8#U)m z5qm2vEIfJg;5b#%BagcbXUOetHha(rsqq_@2;|L*;0_rvB+}sK^Cz|efNKT zls>cGxlXm*6XZb?_J9;drh}|Jho|X8E?T{Mcf!G@t=ZS}?(f^{JKHQYH1v!oyVT+> zTfQ7><$n3{<;Nid$-MO8;o+IDWec9YxVZTF`T5Va%<}G7}?6O)pH0`NV%KYeGL35H4(iinC%*Nxs*@-oQP z)pgJEWy_wuxw*MpO!v_Jjjvz4*i-qrE&p}Hhim5=)&1xB%(I!P;jEylx^(H%sgou- zacF32&b6z(b?Q{tDoM{xW@6j+KGHK=Z9Zq|f@!MSyLRnbxpF1Lg>AXFzkK;}Zm#v@ zJr_@(*4Ebcc5*s&_;7Oylb_LqJH0peKI{=Fb52QM$m>@$n7L+8p?gIF^QIL0SOJc@ z6~_~@EMnB>mS0$+Y%}kWbC5GQ$V5+AH8>PJd~$N~=Vxb`8H9x=pPg-f`^JqaQ>WV2 z{QquJhlwzxVX=S-)JV7Z`1$#H zIoqm`kdOz{ORQo&JvH?~?caBomU)zh#={k{z-Y9T>JVD!I$Bv2X#k{z-R$6s)@qz_hUz`=% zqtoiFc<0?}>#5h=-5&{yGm=1D=hF&dxeok=Z z%U7>of813SzAk2GdH-YqTZOO;^)*Vk~m| zYX0?QXU$I|@Bb?T7Y79e@yXkrdAJ0$^h#Lx@b*jxiEQ=5({!Wj{{Q1;n5^y}x2r_c z`-8{zb+PjHb$iO*MlDjev%7cU!iQg9Ux#QO5ZjX>fBmol!w)I$j|Mp@DJD5L3?5xN zcu-M8qvLgKVq#*2b5PKxjV3ZS7k$c{S?>I0`Yb;|blTJg>&X)`85DzVc{)8&37D>| z{r|qR$D_FEVxV4_FDIyf%D`~*=FNHY=H=XPzkTDzp1QxcZrqr$Q~22Q;hsmn^Mx|&XWjWGef`Oi&TYB3ALa5Kj){r6wm$y+!WPDPAwv1lk&zp9KOfx8 zcQ(zu#p{v&j3V||Cqmm7Tz>G0MdE_v2`fbb-WPYo7O6EG?fj%1`qe;HrmN+vXD4WZ zHkZRh){bj_6%{`knc0<;l^H=3A{Q6A<{Zt+&fdFsZ~2=W2k(H6A>6QG!@AhrLF=wg z*N+#|i8x>yzJJY{H=vQ(itO-^kcg-#yShIT`{x*?dU<$w9G>y>{{H&+cXnRBe}Deb zoe7tgc!COAf!pz6Vc$MJcK7x5J^1*)X1ulMs@1DgQ&K)`&WnkW>9*}?eSd%d`8k%8 zZ}>C3xWE7Z(Qa{5Q`41~*wq(v^f)bCbWy9TJ|KfRKdp)F<@Ac0;(vdBg0@tAmynj0 zx2Y&N(7>oO>Fd|8dU|>;E4!aONr{b(WlYb{+pVZ#H|@{_?+MY4VRjWf7J<(knjJp) z)ado>I`vmx`1mI2J6qTc-$mAf4tT!EqHv$lW%aT9_wQf2BxKIZz)R#S7^bLZce zm%{0Zrlwnee}8{|rg8fVPY(|RBcokqZ>3tbu3kCZqY-rePP=Vmcmverh#7`|AJOmA(o&WMWYID&(Lq^ON$&99MTMdVSJ9_{fTX z8Kb>$ij;$i;W62VU8)yO%Kms?)1<54x<&vrHvWS(l3if!bkJzt^n;TpO?niyB=^sc zkDi{MhuitptGKwi)&1t|D0=E;H1Us$W#J>2v^2GFLvHTwz{PG8B`=&l{rcbE-xbvt z7r8F?n=2$P{#@by>hSfTo$59$R#sL;1Gr8|oadF}i3UJ%9fE@#F0I+8P=xEG#v@zvbTE zmK&4*=FZN~ph?vA@#p7k$~!;LcGF&kT2S}t4&SeKNQm34ZWuCnoix3{-< z7XRCld6|is`D9D|gwukuD0IZ-tu-eGp0^;{qo|)3!BoOeFF$|A z42gAPS>6Ac*0BTwF})a%ClBxMF4wQ0);(p)l+4S^rcV1;dGYa+Cn7R3XO3IQ zEU0<=M^RBxP(Z+8N7RLvUxd~DKpD<>g&h$tAUT)22;3cFcHMEWupR z7uxej@9fty|GAq|Yft@{5$@&X6&N`2=6}%57tz~t4&GLF@3X1+u%NGxZ|1^RuU`4h zw*y_(_Wk|+^wiX+PoHLHX8O)D$$WIA)47dj;pP7}zo$>1E?n{olp{#suCdvCTw=ZqOMCQT9w zT^4F|<=QndF|kd(bA+@WJ$mHj<#mN^LE*ApyLPQu;c-K;k$2*R2?1eY%a-`@dfup; z+11b%zwA)kd;MU>OwIUZO`vP)eW-zn!g#-w=zI^-Z*RLHrEckAIlA1JY)~=$bUVHZD-L-nA z!n8+8PcJVgXHWV2IC**bXZi8AwtKy&>wSH7wR`!+yt})$7C-k}mn0=6wK?sq(r55` z_c`ASrs>D$B_3~Wo_E)-?$3$iF|4etot-&xV(sGPH-9(pE^b-pbCIu?#qhyr<2|*% zzp=5gRao2E-8*uGB|kbUDsE>{>wDvq@9*zVO-YHUbGNj#%*@RE!&|X@#p!)9jb+ZU zv2(B2yX`x9?%XrwLocFx*StRNIF%F-^8U#J{>=IIn29qsJgeEsH6WmD6y z$N4V>3WPN8^U++sZ=ao=-MmTZAFp(kt=`A8;*Hj?0MnKZ1L&SCuVj&k>17y8#WjyDmt*-DPj@?%tm9?9uzvQ?y)urh*3k-rqlI8Dq+~^}OX; zz4r|P+*i!!-z?1DnDH!&qb+fN-NX}eZmg-PsWvm&7!)imCG%ITT*)h?65zIe*REZM z4ms)TuRq=|Z=7!8&9_u^vr_SV)y1KyDE@bHk3f{K1EZSC71%8zXK{pP*(&BOUk@7gqU57nFrJ-Q(O z&ocK*CJL%y` zw0`c|WwkCbHRPg7-c***(9oJ1*3ayp+xNTxRm5LE_T@mash zZ#~-QvodtY)kyYRTeGiArR85<)~g|_FTH5R3XNHvDJdxxrS3kSo(H8TtN99D$Q0(6 zU~EV{+@`9kD)>AdJmGPBdd}R9w{At*+uIw>TRm;sv?uYmygfb7&bP0Be606OeZ}|p z_sh%6>%YH~J?U6*i5wr}FJX<^~v{k^@a_m(n)t|Z9G%>@PSyLWY8 zUtMix=f8FH=0jkEY)8G3{`(o%;+z(6XddF% zRaJfZ?Ck7{U+%VJk*{9hDx zl3m~A>-#N7Yi9G!v{u4b{NrC-m_x1X)@zG2d& zNgDsxYiVoO|NG-<6tZd0o;w#l_=i2^l{Pyw$8z%f%A-e)goK35IKNt=4YU^W>#M7! zrKO39iQBeqQ)%bo;n`F1Q7L@m#^mGYW*9d2hcn9C*Tw9uGCj>*&(Gig^Yin`oDEAZ zzm&BqS+R0uV9+mNaaj?OEg2V;;;trepWHfo)~s{0&HE=wa%yR7zbvu(%nWK5ty-n^ z&mlN4aAV%xUCiu!1^+I8`tU(uNld(>Bje}UC)d6YX|gZ+?>6Vs(vsQp9P&j}RaLFa z-gH!NKR4U_{gacE87}NDf4^nRmbUzV_Vxd4%HPFo`^xP%*XpREJ~LxmVr6CJo;I(b zP0~h2Mypn>a{0xacsRkJ?%yBJf3k0Gp69B|KUt@rbNRRBQt!o?YPYuK-d^a;KGAl` zwX0X3K6|#UP5<(&S+nlkiTRRxN_+q7jIxcf_oq+ZWYH6}dbhRf9KBT?&pv(n6u-Z& z^WR>pf2mqt)xn;go^^HmUdVr)x!=c?`SkRaCldY{i8B7Fof*`$Wy_XTt5%)Zl=k6Q zs+XefyVFxXJ)aYnF6*$R=+mc99T``jo}T{x=H~WKnsIw73g6$e1&uj` z&;S16!vd`v5ATUfl+WEAalY)sEyi0x-!+m_Q(N^fT)u3qpwRHsU7~HSef_(KgqjFzMtZ)iYvVmX~YF+;B%EgO`X1qMIRwia5ef+_Ep_YCc4CS)>PRN8p4H6_jmX?O)a<)}hZrqqryvpg&?tR(U*EO*Vch$Y!U-wtaJWnR?@rF&C zy!`z1G&D3cH7mcoxcKAaW6q80{_}XGOja0fp15U8$?-l}&5P|b4{H`oc6m5&Vr+uw z%jY?t43?k2v#WGK%5|Y#d+-CXPNs=Yw|Fl;5N7Y+H*r$Pq$UIJ2||IlSXi2>%=p^^V?8{lT{$qN zV8sHp_l)44Gb5dVhca{k_%GXU~p~i8*sT^XKK|{_Om6Pqft3 z)wk!}waS{j_{6DGZ0zjwEsNVM&4awWPBkzx`^~pI`)%5xLrzNWhc7MlW(`^3dF|cv z=k4t0{pZ{LeRXy9u3fuKq^qGnks1o;f=6*SELQ;^N!O-bPKk!I+($y~sDwaJkxjUcrLL%sI;GehV2} zW;D0WnIP(<(9*d>qNT50@5!ex>dy~9a))*jdz;rVcZ3~p;S}z;zW?ddr+RvNTeohl z={X$JHtYJ~l-%66%Y0{_P&pX4HEZgGO~vQu*;*?qI{N$fzgW3q#SH86b&D4#S6Z$< z{`uYA-5(ckoi%IL>eZ_iKAWAqrLCpaCu7OPaOu(|c0QSm8MPk{xAXs)f3QPPxu&*O zbLJGDt6vS2g;sgUtn2Sp`(1HX`_!pZ-{0L$HWPTz(b-v9Ri&n)^5y;cXR@}%-?|!^ zS9(srE>q@wV~>8DW%)_2d;`W}$L0!wj%CZ6O=4y;2tARrJin(|I}+xx29U?vckI}) ze7SmI<=0nNPfk`B_Pg@r=Z}x;zZ1H%E~x$eO;J%%X>}btLw52*U%PU{blDkBt2VLBmync9O;7**^JivucKNF-puTck zTwMPBeY_kT8E5p{Gzv77l@HH3=_D}gWFANV{jCO1`KCto}VEhPyF50-jQfAaKc=eeGq9>-=jS<51p!y8_` z%Brrew&C0F-Y<8iP_pJiNcR5^5B($R4_mZ?&KJ47?BPD1^z-vVgM$|r#GP}gZL?j! zvpaKp^WMX)>wI>Xy{)OKF)}jRSO5RtzrVkAqqh}!utkQ3K7IbYeS7+u8IGQePfk4B zB7KN~IpPaP&<^!SEDSHy_@AF~T$9@7ry!8?(_j4A1Y;Gkkb{TX8@#d<1vpw>I9_9P z$#(Jad2?lD@TpU$T>Nu#-gF2m7ZnwG^i7yIukP!s&^@-5pHe*M()3>sdnT(>T6OUA`7FE3Bmjh;4PLPPnxJ3BY~&Niz#f2k!~ z{oEf-P0cf@F@`+RI|>rZ%FGznL~cHI=gyp;>-JWEKXvk?riR9Z|A!UMulFk0b3E3^ ziN{IDVVbGXBF#ht3GeB8f4{sGW;k)`RNk#Eo*xYBLl51Vwp03v#EkH2|F_`DovW4B(bgb_qRohl-5l;ckbNYs;^3xI;vk@Tzq_U zbGmlenuK?IN?r=dt>b6t7T4dlapS}4Kg(iwPn#xo4|JW%RPFGNe~aDww$^^5oOtSt-r+!42YXl^e* z!3A2M{iuGS;eIz~g(&I5!oskyFjm(8kKcgSXMK3!xafl-x2me@wr$(^r=Ocs z`Rz6MVmzUQ+@%xWj{O=bR z7k|7T_59r2{P@+YELGK|OO`BYd#I?UruOmU$62#xr3k5hII=LM zp!!T~PKfx9bm!jc%FN7{mzH|x-`Nou^T+<{k*QOr?Afy?CN}oupQ8P>zn?vP*mygb zA>q@Llj8buB1h)3xPRHLnDj~OpoYl4jn96ioUf6!u!{nD)A!U||Af-XQ=Yt7S5RKm z{b#+qfccE+U3O<@vHHoKc6EO|mS{a_*t2KP_U+}tGuapt9v$iQ^z?LY<58?iNln#{ z+oREuxxjKw?axn7D?sCnVETcneXa#>)0ADFZVY$;Z;#pJ$n2&vqQg}?TV{U zav3X*6o>~;YBGMjqEhGF>C?u>#@4mJOu91}7`V8(ZEb9-zP>8`_9l|8`Qi-@NlD4i z&(6NSxR^arYQxs8drMwUda$f9Wa9g_j>H6m-+Gak8xpH66pq*|;c(e}V3YJ3*#ogW z401KC3q%yN!Gp1Cpz`Y0%d4xee|~;m-EYo`OY%ZONvWw<_tpNMXIp*i_HAit>FwFq z&)vCWV`?fY9uOE<`QZVh=k`~#W=VlMmZ^ViY;C30u8JGJdiAPb-ac-3nQon=h{zE| zN7?XMCvUA?vu4fOwI9DN_n-ge>sMoAW5xq_@7_IiYSqF$+qawF6EF}|<_`V(z+qj+ z{mzRQW_B&Ay}z$k+ODP|DM_hLQ&G{d;K2bt*?-52|DK+%U;ONhq-mB&@m#+&CT3>; zc{ZL`{%zU3d3V7>r^AOP>~X3y?+e}{y-3|aa*^HSNg-2O47?{SQ#h>5bn(v31Rl00 zudc4E;(8ysb{05mi-G299gg?O=HJ;-`1e=owx#TwHg5)93jgRR_p=(7uCA`{@9w_7 zyoFO*t6f6}R_{Tt+ct}RKhVrx!J zPM$n(9v?%A)!z#Xom*R5K?{G*p8fmh=jQfy_RpvPzj*P2Q&?>Sueq_I;X!HJsxLP- zr~7+&bUawb$Pn>YB2z6KR>^fD_63yv8lNC_4o60 zb3fKvwr<_KXV2VPdU|?r(4hcO*3ObN zu;$V_xwQ6+B#ZDa&Tx5_MUe|v^VF#=QJMe0VQ#0>H8#+sBtyd{AteFcm8(}*e|P{o zSKYq0-V>`QZk=^zf zLlYApFE6Hs%FoZ{S`;o?cwl|}{x4s@78e&Y9)R@yW_9kosIprz$?VACV--P@o=Fv? zD_w|A2xDb&5_n}OQ6>4PXs7qKg@;$aT(J6#>zY2sM$HTRnP-$Oa&cr~YRo8Ac+J3c zuyfb0U4KA()tO35OD!!eZqZ%6%^XBc_pO-eyyrhz?udlzq?(eU~ z?)@PlAzQX?O+Pp1q}j|z@9*yio!wab``f2aZj+Dx{P82_&W?$1yG!g2Fs#XQ`l0@A zl68C2Zb8*zr_j*Q+uL$KcFeePB}7(MR*aFY*)Z`?%Ze2m3^Md44G_iOJ!)<^0DaXX%c?)=#i{-*_DeIA09SgU~Yo$KoALT0itJa`}-w5)OCs|`);$3^r~($a)Z8r@iS9#p31Nd*K1aPabq z_GU6L@a<7dm6EtD8Wyx&deM_|-81{VPnle3;|o_)xXiHV>!PcC+h$LixyU7X2wTyO-gT?rIY%3+0vzg|CnCBe7U#kYtp~Wnwmcs z7CL`?(=%N^ex6mS)@T3V;Na$_rXxp=xb;e=z39kSLzYc$>o%m{=ZILP zpOP!k@r;+bx$yeKgW>Ncl}H`&Yj#{!U;WC^Vis52#(*|m zt=+fp-|q7FT-@9r=il2`d;7u#0~3=gSEiiR)(Qm!V`Jkmjo*T=`h!@|JJ%gYs-b?B~u z9lgi)df7+ zcH3LPyB9NfL?Rm;I9d<4^Vk3RF>&>cC7zRS$VEn*9Ezw83AxfMZLSx)DDUZIt&u#d3XBd?dRFm{`&j-``YO3r%s%Bz!bl~PS!B#$hO?u5 z3$9sRXxXhO#kDHoUTx5%w<-^xNC-I3J} z1{=_N8vzc`JS$666=><~*H@w7i4i?LJ*5loQ#g{}Rx~;9nLBr`ZOVxW%tJsad7#+tYgex5#O^8q?Lk`WV$*Tp z&><&B$Ht$>_SODAcKo=twY9MA#EBEx*x3B%*(h3WRd^ECaM|`>2tOyJZ4P|)n z;K73@Pp*6r<2k%%@7|B!-rU?Qefrr6;U9SuDi?0g<&fASUUNw8fw$xiTQ$|2J9TBG zG(%zqI>bEPB`s{anhFEXGO;iVJL7d~snRXvfLvuMgYfww;+_sH~{y82{hDtb(oi;p4~2d3p0@&pzF* zmU81i+aeE4z!bx+>J}Vt!h!=lSIyI4YIIPLYSNNY5|}b^ z>eQ_n7nRoS{3R+P;y2I6^Q898XU!Vd=gpdBm3wPT`TKi>=Vr6Ch{OqiC;UkuI z>D8-N-MM@BW5^$iRjXEkF7>mm+M@8wTqdzX=!4YV9FSEzB;EGc$&_GvW&Qc_ac*VfFmF4q%$6c`h;C-btJ zlIOz3iyyBHUj8HSUA^GJJQK_6xWlI;f+l%?NwnYjCY!_M^^y%-zvimX-oM!JlUM`S z?DI~b6@~?%rW;4rigoMab`&U16r0B!y**FXD5c|rsgUfV_}}mE@4tKJPQ2v4K_4fAu=v`X+^~@O`PfyQ-TMw;V)66KYuy(@kC%V}il%}_K&pbch z{`b$HbM0z(C8o4&+O%o&=FO{DXJ20z8(9|;AOHU0!;R(dgiLa z+}T~;zv2CtH#a|je0+Sab@{W%{r{IP;$!0~HlM|u&%NM3Yf!3GwYF1}v-jCm4GtYW zAN&(4gBJ*1N^_J~?b_m~AkcA*rAx;_VTGcB!Gtp(ZyY=JOx~E+A$Uz}SlG8GCntkO zO0&e69I~>sX3lCYD=X{l?EL%tJ3E8b+`4ynEV+D{86JF`awYLbX#exW1#xlnX3w4t zZU-3LUc$-B%F4*dc=djS111yoa=XgbNcyCVf9@6e$`>F4LQwzajj zw+k<0jE%iJV}`^*kePzcS>`bn_j^J8jOXl2e3&046>K}I7UQDe!p0U5r2L|u%geUG zK|$aTxRU3p`1WSz^y%W^8{ggCEpJ)Wa%*$O%YIdyCw5-P;hXk95;8jar(Ip za~h?CVq^DKea#9Dy}C8~deDmVYx@m8ij^D6rdDL~U)p2y@7dF*y)u?Yy1Knf_AFfZ z@Z;m-y*)h6r<$?V+`@v0T3bGP5k zuwzkcew`dNsZQ;IvB!>63Ie)w%Ud7(l8~zvE}3KCy2xy#=7jx#fuYrSJ~I)+}`%~>FMc_k&%^^l?)5ktg$J41Ujj|U)sEHlGE%% zw|k#C`&oXmWKUI@Bq&whvOL&PX6I`~f!=^P?%8n%-dztke)Mm*h`ZatLv9@gIvd_^EdnY zy1RQSH_wPz%zk;&q)Bt;$mHhc78ah0yU(3(K1+04`GY94azn{Nk6DaSZ(G(2FkNIi z$gnQ$;3xGDYv*h-H0Nh~-#DeW%|St6E&CTG=0<@I?eKLIEajx7rTu3bxw8D~n4}h2 zT~)Pf_ik(N09ytN3kww$6$yzymKjD8Jzrm6=iZv8$Xz|zL$>XB_JN={zQa$SK7D+= zU)_hzhk_m>D)?OBnGg2)wC`=MlS}m}N0_86(5HIByOXrp5$r&??VAlc!EC z{qiDkT~b$9SN8RFOD{CTNc^<|uljK&|LTX29tnwyw{O3`CUSH6`?zznE$jaL zxN_x+W$`nE@_ClUX`i2+-Q%Mzu>NzxS>ty}ZEC^^Mq@4G_KcuOk4+!g$AZQ( zwm4|LO1NA6qFnCXqzx*cyyQTxs@Ui%UzrKYjXCaUOKrS)c6d*RM~TowQdCxzgyYa%Fk~1f(`|HK;o3pd{@2{`C&3rA6uCix3TB3v|9$sE? zr#J2BuICe+AB8Tjk+!f~wlvB?fMcPOAG7Adr%JA-+yWddP4@rh?qQZ_i``Xn^77@+ zr^WrkGOXsld-v|$>({4aICvW$G{^2PySwM)UZu@z*S_79dfH_{zlPw)TcDnG)t47d zO-u|IE?oHV-iO}+8-tMS~(ml={gSD^nLAs z{Uhsun3$Z*Ov~C|CFhngGOSp?{{Ft&-Sg(nVJ zhE{&hnQUz(PLY=dIrP2+wYUdAI3f|SWXm1hQ`X?>;G=#7yOy@Ly5AfLLBWe3+)bo< zbAPRS^X83V^06~>t;Ow&6rz~7=ik@U)m@sh;?JKyZ*Ole7M(m{!iTS4b1yIBRh`V` z)E)PGW$59sc2QM@PoE=#?Sj;mRKL2w1B{Sn<_a?)Mr3{S@3O^plZ{XXp zbLY_`M+`t~fa7XeDK5f@9M=j$_fh;e@@QUiu!WPf38)l`854_zd4^z8drXLvSf)$a`NNE z!)>{Db_g<*OmTc~WAj66MG_CsvpcG(88<9Neofq(`6uz)o13#{%{r3m>Df7V?%hX6 zyS23|>z>8#uiM+!#&+-DudlEB&$g)u8q3<>lW& zXI^_Qzb-LdFIK7ejGRryhTdM@`OTkDS9F7*rB`o#M@&nc@K{L&NC4! zd_uC6X0i75^+~j~wzcirv7^8@@ZhvFXU-%a?<*7y4hf0bTUEMQEAfWY^?$Fg>p#l1 z6l^)qE+izRrKNRb>3M|%3}q^Z9-N*Kc;tLT=l%oTE}YJxk{r*rXUyNT=g-g2&;93E z9GsJ)sH&QJpn>t=!GktWCvDiULE+Yp$|+Go^^N8`?>^YNAbIm6C$&4u-`5vcgmClC zbx@ck7Rh1#1Dv9$breUqgE zXGNHqnPX#P8BUxz6SE=V;M?2VE3J}3LqmW5{CV|iVSVX~r%$im@sikfVe9t%`|}J; zQqs~U?Exk6ZQG_DW^ylMyzIxo(7FGBhDhIj)u}0c56X2dCg|O|-st_$#qUDKmdel1 zR8>^Iy#8*!JJ!|p=%1gT)6dRwwVU2D(jysH-Hf>T>Rn569P^4;Sw{Op%{I9Pb z9&Y#cDERNTYW3>wzCJa*(2$TXU;kH~O_KQb;i2;$-{qIx`(!--tXQ?`)u*SY0|Nu! z-`}sVq4DD8X3*yK35w2Z)~@|o@iHnlws&_;dRkiDj}MNKkvq%Z->d!g<>lSo-zO+K zPnj~MLiU6Fv!|!0%gME!R zYJYrqxH@cY*1zoV@bLe?zG^dkd4C_Yt>6s%-D5BA?k;z8YumJ`sIG4D%g68P7(c(R z*UvS5cq1b~>3dY|LuU&&CFB1_%r~s(Txp0|xn@nw&Z4Ie54X>>uKxC>^5LP@e}8`$ z@BMpkZ#8Jc$L-M2&^^=aAN0H^U+npznsHy@oueU36l={ig5S??bl4JPH@)$-@{Z4) z&!x}zHAn7Ud7Zt{LE&F+)SgmMVS0aG?cv)=NlC7*t}6c4Iu_Q}^DPRScI>JC{_e)c zPY0iZQH`!+?K6d=NBJuuc^7x(2(cA6Qw;rer{i09BpCEcV@@luY0HQZY$rh zdhK$ikKaUgPmkYMQ+cq7RaI5hrN5=+$hWt*r|U)^ySb|3=clKcmzOa*Ecctcul~Q^ zLa*@6iC)5Q+cbWL@$Ee~!K=M>+ci!&R1EXx^ol)e`GymandS@wr_?%dh5$tXJd_EPWZW?`O& zT3V~(_t&Xx?tA*|8K10G$=6p`WhPA!7Z=x$-F4-_fd~Ko{!Tge=lQ~m8O6`eB)&U& z{(St-qNfv;-7S{9K7IPMa`3VBzO&6hhgZy7#+Z@vRy%BsMb(!K;dQcyH{7^!o@E;t&^{vjZ%X~BX8uU=)@ z9WyjGPF}aT?(;KWqd3ts*Fc@jxV;uvU;X{{_4SvRm)FPte|%O4JhEh&aY134!rM!i zE~$D?E13KDa6A99Wy?;UJjq*s#bBF~uCA_;(WK7}YugVtvu9^!8h%fZ5EBx5^y*bt z^@hy{5)8KG+;mbqcKhm8&`IebFEx2?to!@t=jV0n*0u2S89T-P?w7Y`Vq*IBjU%!6+{M_8##n1it4(Hw4!kIr~#*Bin1DmWRw*8+k$CGed z+h8xx`|g`3t|uEj*Atnfacg_F#1~ON2Y=AgkfbCVTicn|`FD3MUBCYSlas>Rwx^`0 z3%AB<^!z?hzPRJa@we*|b$4%zkI|cxeWl{7xTY1$%&iaRbaS{Ey9WyO^)#smFErnI z#!TZq=yZk;j@{e&46MH~gD$l=-XnQf@x~5A6&017+}zI7`tkcfTR%VRg7z?-IH90t zY0bybuzGcNMTG@}hL#o^3(J&g)6!B?j~+iRE+TSgPi1gu=+p@{A09Ba9~NS`a`o!X z8#iixd}xfU_xC>!T0ivsd3Z?3l4Z-{_SMW>p=Dn20dyR1QP}#g7e0tu`MJ5ZZQfj5 zQDM=Y`Rq_D_xkw#&#c}|P;^%Fo#irf+M&k7w?Iegp4w_(^J7E$`FYvb)*Srb30kn? zc;ou@>sPK!*%7lfYwFgmrl0TIA3Ql({p0s1US3}7)~%aUx`6TbrsDN=jfom8%Qr65 zx-*lb|Hh1fh>h>~x?3YPL!F$I6ciMclor+g-oLGP&KwzIW6(*4zpBE{x1XJD{&?=M zU%z7Pmz}umQwADVJ$*AeHsYfk%PcO?3|Pijp5W#sk{b?6+$tz`cY+K81I;xI3QwHnEf+6doM}}G>T4$_C$C+*7IdA$ zCq4t?k{1`=-Q8{eX8o#FTpS!XHY7SnMoQkBJaJ;-pC5(mn6)%DO}7iR^@CMPJE zn3)+F_))zj#Md|XM}Z&b>mx^xu8-YqR`9@K(erO_Z-Xu?T|W3vZ)V_NCfV2*tTHjxwjT&7db%}dt8WOYS9GL)1p69(d7+PCftE#G8o-#36&9$rhQ=zV|uC1+Y^zcGyY3W?6 zQl&q9Jv}`_LP8cNX3v~yTlYsI|NHCf`l_m}t_`Z%iVPke9xkq~GiS~;mEk>XpsTy~ z&6}J*mu}p!(Ce#hdUNMaOm1%OBMx;nH8FX4`-B4w=TBX;fB@nec+aL4H*M_l;a7e9LR zXvPeQN0XN9&nqY}h`!9ga3RA46ktZm%8LyTpKaw9=eW$k;4{Z!BkNr6+5Bl~X|G=O z%Ef>#L9F>%WNvP5bo_DVx1`y@cWey0YTJg#f-x?vw1|E^cl{$G=b7$mcWPuJ+oRNEsHZ@^?O4y1Tnq zuewpcd1HoaW#!MXrWrGCytz3iPCG%OZT=dI%bU~Bw{nXIEuXF-AT0d&&vK1DTi@T? zD{ao(BVqXH-QC?fnwC4AmS28;e*XV|e}9ASB-?1oqNSxZZ{ECx3l~nBG|8sNlUcv- z8!wN7X8&&swzmiCIeuoYOnGr(Vg9{6iJpHqWM5x*;X=Tkw~rqi=iD&xdbVp4>%q)B zN56z7WDCD#3$4*@emiH+@qZ4?H>~%hy89~#=+5dhDmciL=g(5Q^Z!fz6)nHS-phg( zE-ZQ$-=UN6?C!kY9h5ZQMGTu?nj1wnMYHDgmMn$=~yBnX@(9qzKv$=8cV&Um&y8r(DTej@~@q4w$O(*W@XPzIR z6x-a;(9xu%p;6{~r0K=Nr1wul&c&Ups;W}b@?CS|d{LRs@}e?9)}^;x0~|FkSvpvG z8BTce{dk@I=h?SIoD>}9eV5-?WVGwc#BIpaIDnml(bX0R>%JHK98|P zPkjB~uSdJZpDdcXYu7H&#pRwE4TqiW?S z<6|ec+3>D>Xm9;5d(&p&QunV94})5A=Vur`{_*j#e*C^Qt5#`gYgd1GaPY!HXV8+O zoMXPSe{)>rr)ur|_$$?3=V5e&%aOfoO2+**9RPxklk_xm&1Wo2YeL@&F&J^%B5ot@J_mCNq3w_3ZEx+hMb z?*7iHWIbigbeea7;`@MM2o|?zUdTpz}^>lR! zRUCSHdiwD`+3x91QxumO-BP*wfl=A_%k>Y(Oy9;tNB@3wv>Q~qJnpwY)+ehy`FhRN z_B*Wli$2Nsez?72aU9!=gB2o%th{;N^(&hBqPSN}FkSeuLSy0Ay%&yKo?uue%D~{D zYx?;GgR7@!=93c>85tQtlNfg|y}7q{wpoosWMt*3DVi1E|NZ?PB4i4R%nxPGd@>Fk z59e@*M13k#XboKK_VVS+tKTBK#dNc7Zc444vRu*hL;CUeq5=XAeiIh5u(3r&N58+h zncaTLs#Ui(r=RzntTvHbfQ6mCx~j_S-Xd=x$h>+Yvi_Ya^MA)E4Lr~m%n4ovC`9WIx9oK`!gjjYu%X{7#tK@ zJNOc`!`AGm`l=q5CaI9 z=yH|kTjt&}iH?r`pM_`6o;`VY&YU@I zHQ%3|I(l^JHt*M=VPRF()zwv1)22_q9=uY@&AINIsCL+cBaO@b=4RdA23leVS|E{= z({ufvGsoArx4)mAZT|cF`|H>K?e}5O5j%bTdimit-Yf6=%_QVP{#JRr27z6ZI&$4P(`yzGk`8n-(lks8LQyO}%>HGM9i;T3TAly_O$8ek`;5x_4qg zc=+^n+_H*Co)(>-Z~y=G`u%1XJLPzP-jw7yHcdBr(&Wk0_2cjDEPh`0_Euy>#GjAH zpOR3HDg{7~rT@sDZ(GA_=cgy8VjNGS+RyOtpSBz#(^Ykm*=O`%D zBClTN(w*~azX`~R3=8IICY3apsogwtrsuzms;X*H41=Go!|bpNAGmL=T)A@M>gnog zYIe21wlto;5aT%akr znhg(^iw2yS!@;qznVtXCQi-$u%a*CV-Mx10r%y%tAh2F-`l=0{HK3jDLHhT$rHzy(}sHxw=%Iek)4mlC)gaZtlrvJOQw;EFWU0Jtu z>Cz4A*S0V9o<3=J`TKjke0*Ys`<^TmHb^}sGUvNrR=>Rczo*mV3)XclTQsr$+xqzZ zdH46ty%o1P&9`>_)1AB6FNsZ%URb85x_{r<|&%j*CC+qG*K(|LYg-nrK0?_OVD zf3o>_pX}=^o&~3;A52I|P2F4ZvFX;+qMfd;uIK05FE5*}8~yCX3yobZHge|=A7+04 z?d|RIGcyd8&ei|;@bL6>{g3aa=|+cyhW_-=zPqcms;bJzhsO@IlGQBt)(8G34PD)@ z-@eVWD$QE%H&@Ee)hYPOB3JI{=xAeO?Ca|bIVK=2J$rNdd9Kqj8rrY4P8^gd&F z=sgu5nVx&(UtH8WabjRpl+;#fY3bX0tIIE{J}I!!($cCZhb#&ZF8nvkH2Xv*lc=cZ zt5;3oXSH;7-(FiQt-JTp0>@@H9*GOv^W$@K-~RaVW53+?K1o z>p+8i|MB17-bRDYEb#No%hUV$zF*${h~3`k?Rj~5d2MZNya6FIvsLEX8X8_ad9w4@ z*6hs8)|QqpudlD~Td&C~=j0lyv6W}()P-9%{lC57-`Xh(ElK$;f9joNmqbb}+UTL< zxLIz|_IN=j4`)`_^Dfgi_<{4AgYl)7#mpQF7cE*8xjBuMmDTg(oyg5;v3n{4OYW=n zAAfyep|hJC+uMrg=jPhi|I;y3P5kT1F5qNnXsGPocjo+g@mRK;M@KsU|M}eCqRzar z!Y0nslkc6N3yI-g=7!7Zlq;ment8BLlTY|RIgHb&@(>E5(6Wo|9I{pWgo zy{o(X`iPB--Url35Au7F$Pm7uD6|)*}3cW$=wly#s;IoY{>dARuXa|1gD(Dy zjxKqqt*!lW-M)SMo+yiWd3)dAUoS5V0*jX|OG^fW++1B9cV&j&IcwMECMAIu@y5i) zw)0Ad-OuCzCr5^Wg0s3-0rGaWzfy8@d-tyZEe?p<;<3+_X~E6vZ*OL9-CBBjn(otB z0g(F{7(|#{*pJLM&%f8oExzKdS?;YROP6Xs`%wUqWneffx+YZDEhgs9Qt#;>-o3iI zS`kw3F)%PJnAy0Ic@gLg^*cKXTU%SNtn2JN+0HK?wKYrieh|bp3=9mLSd-aV9vAHl zUmquHS7X7)YcTUnLjwZ`q*!5KV92OTh+O+WVe?J@`F49tUta^wVHXvhXy=o)y0Sjr zzEYG2=9m@Vx0R|fK<@~!7m)qYe{r#UdrQj&J|l@9UTHI(xIGbiuHcvfX?Z2>!v62@ zks~c-OR}%80~M$i1q)(MF@xkl*o2{j?~nWOKG~0D*Vo0SpPlvfcK-gY85f=Ukj+>V z`9a=)o((4tkBmviguQ$B&YL%HPdCC4mJU9UVPM?F7iI#fR2Uc-L}Xpq!J;6-mHi?- zL>w+UmVm^-IG{v87R&$<1EFQP(tD-`wa(*@Tie=>9X3uu)Rrw<=626Dufq{XF?>Ctw%J4mZ zd3ia%oK3>!o1gT!85TqaPAq3+n6R8%TrcP5rl-gIXH)p7Wsf(@KYO|U;|T^&V!PB{-rk-c6&3a2Eu(_AsHo^-x87f0 zUJ5&T1P5O}e?I?E3+E@jkjs$jkM&3p8~( zbA^V6dU<*Is0H6+4JoR& zpjh(x+1c~+?N4v_P*6}vxVNWL*}ZSe#*LACtG4dxz8u0UYjx$!nKK6uCLZgN%)hs1 zVtFA$#;3e{dpuj&1e~5eecH|^yC`p|!`eCa_4BxR6 zY580hm6h#P))Dz3_4M7-)6*Lp8x0K&&rdikFmU382_K%EoZQpHQ#qZr zK}}yvtLx6+A0LxFJv;YsT`sw}@7ReG9vquagr}xH-I{$}Nl9s6&Cj67NX_?;OcHJ6 z^wrg$pPg;4sHpf!ulrHcOx6XQ)jvKc?)&`m+S=&dWpA^-e&Lg~0#!L`YHaeEY0fgu z&CQv{LUZTNojT>n5th}fR?V}ibdn1U50^K~nX%zBJFnD|)vKdJLR{WzX>0G^vBM)e zg;i8Uq=h}+V|nfGZ`ZC}+oZ+M!0_Ssr>EXdPE1?ZE?f5O#fymB;S%la@Yv@`NS%f#YVDi;NdqbmR8yShcF_*1i4p|L0g1XZ_}S_wHR>T-?Qr7j?w4 zpPiXm`}^C}Qpu-n#~<(9wd+#V*XE|Cs&8*Je{}{127>nf^>2vK5&Wt#`Q)9Q#n12U zt)4t-(yeW|yHidIIXfS=5{VJijor0n&z?Pc>o+7GX6xWHsoS`5qlFA;m6oZg=`GIx ze?Fhzo_}A!>DaMj%5FUq{!A?{22Ccd$hEcIYnXiO#G*Y6e~$nC{eADAJu7mPlar0M z=_#tKFR%RkEO7tlMrQWBTU$J@rA}EMy*;n8x_Yv^Tc6C!_wV(;bxND%D7^nB=(M}+ zZBc2dXxYCWN#mrXq<8oCpMO};#xK9GQdvz+&6O)x1_laN?VMpz_^5?bI4CIS%$YMs`g|F_F5JeP z-VhVBujc2Qo0~ZlMMbCH+?;+{?&-&h*VorCf8+uh8!)g62n{WLb7NyOJO87HYtEfJ zCm_qvJ9*QlPxEZ6ZES3~xVc@w^qL2@wzh6je)#aAechjoi;G%2(nUo@KOT?d;^K0# zX+4?*+EWHTej_SAK7QAwrd8Vsw5*@~|yVKHeuFH9@?C&xEt$q`$DR z@V{xPfq{Z@PM7x8R&QK??D5CE`}=GQ9yr9u#}_SIJ#*&Fo>SZodjrD5^XnEes;s!R zcGaq?Z*OM4NN;U#|D4V%AS=6IOV(8`C+1H~rFoMb^fu>aWu2;b0`(*ou3D9ql5)jh zY1SWwcdQPdkKFHU6sY?CF4obpv14KI&6_tnJ3E=;d7~7+rawP7_v+QFO!B|}e!ric zm9^q+=H+D{-S=r4tX<%FKv%T!tjH!=WizV}|Nd5+n{OA_kNaTHa*>hYiPHn!+Jb@& z9Y<_EE>zg6EMa5cWK{AZKvq_^k)M^Fot=#>==R#Et+#fSu0C+ts^mq0e=4(4Oa8x! z6aE|7*d94@#3eFvrz6)@7KajshG(5Q%Vx}+xpdhwrIretdzY8{FZY|P^(OMkfyT18 zw^Gy6KJAy9uv5}FjidTSzx}@h7a6Ust^YlIv0&wcqMbkZy%LOF54|{WeSLgwP0hNP zok}|1mM-iJ6S!-<`(MYjfbOi)m1OK(HDzV)rgNC~#*BFK#BpR|}c#|(7g7c(2rj+&oFl2V{EZ!4w14u}aXdw1vNv14tw{Cs_VJv{}# zO*wMp$elYeS+m!yR8-=3xce|F)YrGSoI+mmCO~iK{$D22AUc7j*va-_64P5eV+9XsFm74l=x&M5-+Fw^TrFwI7 za~m6PUN&i$lD78i!|nW$k&(L5+qP`nxN*aVfY8vXzpkD-eR}cY#lphE(c5w|b8_x1 z_m@w+&)k3f^tp2&-+6mqzI=J}wrzRW*Uc4KUGVqEM`d+&b#oBdzGKIY6DLlbIkTqr z_qRVk|EnH+TC{od=E;*M8ygv&IeWJH%Zr6;*Xka9?cwx>#iPclTTGXShbN;yEIgcF z(&)+Q>H1F`g@q^Q-riRF>Ix@+Y*=WhshQcd)SZkOVs(FhOq@1t+N@c#rcX~#Oiawp zy}K#ZTXLUW|MA1yzeq_*ojZ3<-o9>08R)3ql#@b@=asJW&of9obg-Fy<$?IeYl?5? zlvPz#d3kx|<*nPfbLZBrTi312yBlw;rlw|Rx6id(Ecf=dw-*<;A29qM!u#pt?7xcOgi`&TFaiFlQlOt&$@l(%9ne4tA8wPX<;d1`PV0Ft>!mJ{$&!{^a)wDPak@gCua8?4Jvni5viizgcJ}tg?){VcK^y(gpXYzS zE`ERAy*-so@z0O<%P)5CKX?B8@-oosh1gvx8*X*<_1)WDuAeKzGWq12OG{7x`1p9b ze!SkUO`5v8r3D2Gwk`LY>*cGXqoecXgHANSk;i`Y@H@I`*k z$45u6h8|~)eqR?U?)3<;B{{DXca}g_-ENNlCJZVSFyTk4L-{0JHj^>PUcVC`; zeVzAoJz3kTEiWd0uGr&0->$U<1ol*YSx#!X7iL&mTmS$4 ze*cwk@9yrNJ9q9!=hflsk3GKL)7#6;%zX5pOxe@7VF<$Bz&5gQKFVK0P@p ztnN2u>ePwHeSLhYzP{R8`@3xB5|2Os{#x(5eBsKKKQEWh2VLm-mW`dAyPNO9%^Fa; zzqGWwug@# zR;{n{^E>zOaJzoYj)wZl9ExnsiFtW>>FLkky}P$6RQqD9zP2_uKR-VwXXU3So_>CO z|2eI!tX7AujoMYR@=2`n&!0cp`Q>cN-^oO-nx-3l>-O#6KYpChS~qv<)UOW?GH3n% z{QUeCH(y`gyk(QpAHDUTZx^V}BWE+?n(mROMZdqj^;T^Mo&OYf6*PCs&L^Y5T*INr z&fX5%iT8EQ>I-cQTx(aY;^Kd`xHZJO{N0*$>-yf8y}Pqh+03fo{XN@1Sxn5ka?Glq zo|?Kn@2*h9q!(bYVugmi{r+9$36r)8UJW{UdLcVIJ9iJ?gq;)H_~rfXvV7Vvwg3J7 z{g3(k9&_J#b93|gxz^ubURKY#e*Ad)ogIZbV%`5s|NZ%Vo?qTB;P$Cgr$8Zr}2j`LxK^*7pCO z&;CXl4tBGqO)GnKWuzx7v1;6$_efI3yl`9(B+W9v(Jv}qi_=)9QtI|jRuPj}<6m;?L&rhoVv!_j+ zy0_xvqodv8-qZC;i;IOX9*WqM(s^LN)TPhQ&(EDRCnh#_@18wJ_zov-zR4}7bD&;O zqW`$JhX-hJR78Y?Jlhyqn-LC7|^;3M=jvX_)qNF4wCTxxq*NgGEtABQuY4+!5 zXDezLE%PLoi8i?D+1ty<*PYyICg9Y}#(T(o!p@yLIXO8Gx#b6b`t<3+IR9)5D*mKf|&1GEx+ZT$Xu|6RSj zy+N~Cy#H@(OlECkOG-{oKQ~8ngXDzCARsI#`0)92^Tb0eiA!BMrcRyu(CGQ|=dWMA znrBx#t1SI=ijl64&WF61m^rIgYtM}6`_>e~o0OlwKlk=FIoqm^itlaVk&!zyE-HQU zldJyr=H>)NXFhp5o4h*~iT>-?tvePkUMf6$$`q5dGZIn4-U$wWetmtNeSMwk`vaOb za_>)12d(zt~6v~BG#(6wK#^VM`r z9M*Z(y}xJc?(W`LE>dKYabbaF@w1kemLETVP7LNhp(rgN%iueG^Je49%tI$1wkZDZ z+PY=SkLlX{{QUDRi`Cxp&lF?R)zh12ntg3u?CvExU;aOcM?X3;Xx&cK((|i9;eHB2%VLJv+y8 z^8W9w`)}>7`T6P8RPD@#jJN)WySW{kVVJBJzfb3l?AkSJRObAfFlo}JjEhQ9Gy3CQ zT#lT#|L?=itD&v^cw*ksqet!k|M}c0tgcddna%CmhF!aM<(S>RdNnj5qv6xr+uPsX z-fr%4@)fTOJA*)14_`=F*dxoIOndA9%k@ulX<7u@E37)(2vl5sc;J`?1`!c6mM>SI zXEArytY63F>#uD5uw&_>RjW>=81eG(6cm{2>Gkbj7!Vfr?c3Yvtl6(zCx(_VD5hj* z@2>e-w5R&nnVCzLsNAx=ckkYgXB)O`5xH@3WBL1gudlCve3w&L4Ror8sw(I{S|z2V z^Yd&g&ba#do%{9mwQA-{5fKpCu^)#=>eo3m)nFs7>B~QQ18)G4b>?-PJ2sW?o-+_u=98 z;GiJ8x<51K&8z$VF4o)IyXMx##qO=87cVSXy7cF-UqQF81pHBSZYzNt_Vy&xMlS#3 zqoW%)Zv1hk^!2sYmX?71Ki&J~)<$pVb6*3x^v?a^r{coGz`(%7jS-KJ_ut>1fB)|8 z^80%#C(oQIDK7r~!^6X=r>9LU7nwJ2Udno@{daelPpC%q@i{E`d(70`+XZyliF<%gD<5_Rv}Ff|;r5Qoc)7hb4H9{rmg-r*(J2 z8-@(IEnBy`_eeCB%iGmx{HpoHfAi+enLHm9Ta1j1($3H8J^ZV!txer;PDfv#pRaFk zfB*inw^EkZ67KJ-&A+#2rT4>=ztdl(_3W|d=j41?&((Lrc&5**P0FjYrXNgrb8oNo z{;1Sc)&ILVJv}{B_C9<4`gFZ>L_~x|?XQv=)s&49?fmj}e}9!`Wo0=zIXO5m^ff57 z_|3P|wR&qfZT|fIwZF?`a?MRmK}Xe2of>+7U+qWB*=D(i%+K?%B|kjWI&tE}$jHd} zeKno^{rgK_U;FmumMvX+^!RagHMMn7 zTe+@Rsj8|fiEUO86%(6hS1WaX|AmVeH*Vkl{_5)Rc0SpR%}?js*Y8U^D|P47#!Z_( zegEFy-|z41+uPZ>v*01qx-U0#z8&k8WVy1Kr-vvYDzz}b51k(q=4dY(dFNSy@@z^6%HZyrlXkqom}^ z{rdmDx!RhVvQ{M>^>Zr2!o(!k{Qdj={>j_k5b(-+iQdzV8#g*SI;Q;gS{rmUt+c$3pE@r=(Q|95p@pH3C+WmdCA^gX76h8j;?yh#uucUy0 zfQSf*t!Gn={{MQd|EGT8s#UiZgRZ!*;*l^oaP{ieJ$qynpS*t$I_6Ld|v#*1;w6Mv5HUhQx^-Gz0J=nt#A0Kb?>Cl}!e_mZ(U9ruk`)E-? z!G`VIK?T!1+v*j~yUX4#TISKAcYCUK_=i+(cwXd7=f0Mklw6vt8r`Xgt2^TJd zfV4%y1JH(sn4Lv`f0g?C`(J#2g-uvdwY5R`IR3YG#*$u z#Y9q4^2+vuNgMlQES26!KP#|!@}Sb){rLWWzqt9g8km7VSwTU>z8XtYt@g8N@)iXS zH&)Cv&AzrKdV62JP{wkKekTgzvutxHDzx@3znUgp09IyWV?(e_9*7xr2 zsr)?4H2Z^lK@kYdvMhdfWo7Ws%O5=!hOdtcx!2e&uK%cRnXtOwhxLh;Wp5&~au&C? zvigM{=zn9ev-Gvt*ZRbyq@ph`0 z2E*$sD}`@*efauSbcR|(NK6c9>t@S^tE;4>2mSR!UR{dPmdBXAR`c0cAz4_nxf+6FQTaSd}x%1EGGq$w0 zwLN-xSvPu{j8%!o&lju1*T1{7v$_2H+uQBV%rm;WPW8!Je-Kr$vHA1!^YftTbL_1y zEOO=EGsB~-tjx)Ysj@CFPw!pz0cEulQ=CirPo1A*S$txGV#W2dXL-MC*;jsIF=vk2 znzc3kyxhNECW?xUb5=Zk{P^&E4}VY3m)q~x9lp$Pe}BDxnH|TkcvYjE8yjYu=X3RN zOfFqFY0{((KF562itp{I{QmB)@QyQ$HEW}{_wn#1>^SAjAu1;J$zSY&xU_V1Ow5|4 zOTWIjs4S={k$-1Lqp^9QvDMG?#Eh&gIg0{@a;cxce@~wI(_?M)cCi`qU5l11aZ%g6 zX5Bh9@u!NZDJc^!ewb;TzAkq6wExNxk&$=z*T-)=%{6K3sspN=A2=7ijxqY@*UA>P zEvNGLw_F*i1vhTro@{KvqL!JbrC`O-pz)-(&e74aq-4v1%PSnuRh0kv@$t#x%F4== zL;FKlhjCW#?i5ykv}SE!VBnS5)goG2S|3adYPN#z*xAR_*4jGp@}&wJIlYG)5)ZGi zPT90eS4&GsP;z3x{<^wDY(@Hn!e;GvU^-;+~QwS$f?{PpE!^Y&I(_N=U|6Vh!D54Uq?cN<9b zY|XxY%HVB5TAEtk^zOKG0XH}gO}Hy{>eMM;+fbu`f~>5p#csWab}LyOotM58wie*a ziQN}2E_T1%Hv8eh4A3wGd!t}_%Y?2juAP@AbnHBm^zpoogHrRSl)Ej(N|Tb=KYX$c zTKr7u;h_f|o~5OxTZ8zI9zWh*&l%cs;p^+`g%x*i-I8**`f)$?>8Ys|pk~>mDZZhh zrO(gJJybROq!p;|sCW9^siRvmFW3G5Ti(cjG0)|vupH;+y1!Ky%{PXxk2`wXIQ^W+ zkNPfwq>T|4H*-r%P3zU_IZIz$Xgo7ZbIo7S7>CjBg{xPu-XLybY8tz{Y;8%aAjkDp zI%3`SSIxIt8Ew_AENLkE@!?_F+glg;jAr^62`5g@)}91T1+rEp3dI|_vR6*HtX%!| zm238$$+=D2a&PlV7&zRxZ8+0slYaOs&4@p9B|sxTjnP_9pFT}lw`0o|6B*~DXGM%& zoq7CGrL&-WYwBsSKTiYx3W3Z4h8XUA;WkFPtVLVGYl)jC%q5w z^zGGVR+Bg4zA5V+G zOotAiNiFPr1`<4X>=&$A<8zPkl*-|*wl+4)syo-OUq61FJ-s+)SBd7%Hsj7ee7ZV1 zE<8r=|My<-{v`YD{r&m%7c@KHO#k=g<>fawHy=KH_~^OF3>BCE_m;e#ENNY~=7sQy z|N2Iu{SHPy&raT7eCt=7gk=l6;*%FIH11Y=I_8ux)PIQLm2sF*!eCg{LdhG}mpZCcTL zZEf^ppKAU1eMctp=}qrm%={#&%c!4Eq2<~6`Tf6DHf`Ee_U=ySWtJB&UU19_ZV>qO z{eJz)PzIOyV>5l!);ViyYwxf7tF8>$exn>Pd{FDpz&g#B=p#E&L*B!6i`k$X#>n{{}dUBqt=ofete_-02T#a9o zdIgl+wLNQ>s}#Ipa9UCS|KE=2Nqg!KpPe$#wt7-#$g9OmA3b=`@H?lwyZhq`v*O~< zzO&6ZtFJvjKmX&l8*}QPlxujNRW~bs`0DEFlV>6X1qFkb`MkWp|9>Mhd&(r2<(V(9 zuAcrPfou9{)pmvxf6V{?{r$bArDeJQ{J1?8A8&xBzU`Cddz`k>DVXAAt0=AXM_EWv z&~8O;NyD3snU~HAGHCdyO+Ir^J`1Q zp;fUl`wJ{&=D2-4+|F;ISYPYTK4r?3KY#vwc>3b*h}49Oy)p4GE4J85zNxXHN@Q-gQ&>WWIj=dVL*Lfu+8)&3^bl zyI=obv?AI6QGvz(f4|?)HqXzyzpwVu5zd&mlkUD}N=;9ntgpB0sY3MAr%!+QuhH9C zcOtEM+O%scgO|6kmY*=bdgaQjFEV-auR1`%AfpUWWR~at~cqRj1R_ zbo=FOU%h(e)#vT+@BjVd$B$pXZr#2eG>z8X&27oPUQ+mX>C|b{CPiw+?X6P%b-a1{ zB?qPd`%j%Zr5Cs72WW8NeoF4d{Yr_&Mz1;dJ-u-K`f^>{UV&9>)*LDB$(}k%;NT6$ z3o^bl3>cpu=H}x|+k7+SxMu%xWoNcOdoMhRx0-xX#Cr3rIZx+Jo2K^7FG3;l>blLF zKljO6uXy|5K|)+2dno>TSr z)#2;A6PB3G_lxwE(W`@6fl+uGV5AM2I2 zud8`~Z?Eh0Rh0<_65qakTXbIW|NbdcrykX7ZP;(FH+}ZZnVx$8+(CQ0Cn~#xLb8!_ z(&6vVr?l-!6q`LM;Lt|q6yDpL)BOc6tDH2pE_rcbN&QR#Sq6taoxQz=z+|9}A{w#fyMLb>|WBln7b?xT-x?i1Ld&Rm+LQZ`AY^2`Fq=0k@MUtb&T z9=&bW>8EZkAn@nk@At-OX9~*8#V0=7UMcXq^y0qHQMy8EAJUIKEGT<>tMu2Gm-+Yi zdHxIfbK+Swvpc&BKktO9gG``RFEYF`78ed2Xpma)@9pjF>F4K7^cGT4Q+s5vXx~1& z%5q;tedQdp=o_(0n=31Yr*77@u$XcBsg|bZ!;e*Pc-XB*7Q9;#UoZvQmhuV_qb)dzoR_Iue4B@FNfhm!m&Qt)oa%H^AjuCWBqzn?drv@E?fX$hNX$C}xhvbXyB`Yh7?ef18U6|uFo-J>V?zc}?q z(9eH=t>cnreR_I&I%qk$_59}+g$5gQun1D*NWi(g(+ zwYIi4(%zRe>6bk>=g+g%RaJ5p1r0e0d@>dV7Zw~kvA|bvfv@&~t;TAfy(dJ7ii$o7 zTDgVwTfwpUfByX8m$w65Gj?@#_!U7x!Jms3DM|7zw6FfAqx*i%^5yF9BpzJ9x^?TG)Z`ykx&43rmoHyt8mCWM2s%~a<>lq; zqql?Zj6B{izkF5fM$gs^%{kJWZiz;(_S!gS;UgFJgf|Qfk6yld#V2XR^8F_}E9=A5 zoW+Y4eQ>>b?p$B}ohf~Nean`qt!u9S@dKF|Zh6tr*LUtfBlF?IhXtJk z1qDMxLn}HSe|UH}(|O^E=cfwN4))1f|CoN`>!(k@UM`={;&(F5K;qc3V?Q)Olj+yi z&Te_HTJ>U@#fT2?c;s2hj$-tV_1?HQx~;9P!e}i|{rN+nA^pF< zzjG*>&F*Cvm^x+3gzU9}D^#aw8X6jgOn=!SsC?vHsG_t34;%9*zJ|2qOG`X0I{tik z=o}v(f9IlZRTSf|_o^PDp;Kd69CZ?%*SIRLS6>^obrGx1oVj!RdSm-si{AI{P-Zh{DR)&Mb~u}Jlt=0owfVu zENjqh4#k@{ZF&b;n?63R# zYG)g#^YQIiv2tZ)Wu@*PDjgwvf}&aS3oF>{J>Ykd^sulUKb>m@I*kGI#?Utgv7re5#h zpIq+r^mHw&508)cTbI8JFgNH}FU+jy@@>NDSDWMn1q=WEsm$6PzCJGZ)|Q3)4tI5R zeSLlX|KIQTnY1g6jg4hwH*DLs?)0iFMhjQ1dIg^5+>w5M-iHq#WUb2{SZ!LiEbZhZ z)rSusZhB>(S;WJ`bLHw)ZEfw9vEt(5g5EOS#~v1(xD#@BSE+URyE#|lbtLmv|BiZ; z#LCY8_^Q>$2@?cvJrS7&+AA*IFJ~(xEvs;OiiEVZdCELjhF78MDbL_yzh?Q-IUth-_O7G#e?|zzovMT?K z^85Y%>t>0o&di)KLnnS;&CgFyB_$=FpPz4E^n@eM%Fw{z!=t0!I}(>QocOPwn)-Ct zmWk))TD#x-EN@p6@r6lP=|YkZ?}k@LZf(u}Iaz02{QkHj!AVI;b$`Exw_G?eQ91J> zOB?6Jt;iOixd@d9Q6_Ge=7Qz~hfiO-(DBy}Z0qW~B;MI<7o@ zY11TO!!m}y=C1a6sv6qblZCB+&exv&!lAPACusEO-MP8ewl+2&#HFRAs@~o*ZS>Fi z@jk%GN9{8BzL1WX)k?OufA8)tFVdM>bJ1$!>relu&Y9!WS9^C`ZggytUW)fpPTf9L zr{Y&@7#fZw7@V-Hx0%gweJ97l!pFxreg3*;ADOKE`Ks_m!Aj6ohvs%xR=*B5vtKc* zcZmxP6Q`m4gSvbeofU*Fu^yfRjnFA<=H1<;dR*zG?9bWy8X6N)0zDH?ERGU&p)S28M=o)d^I5&Rs_KzyLE70_S2w4h|MvE_e*8X} z`5Q`Khc#}M`YEfXs@fUbu)HxdBjdufi(7=b-(5K0Z7qHJ-@Z zb?TJYzn8k3K)tVdwxIdh;P`lX`7K+wzCFp_@0@pam8hMDr%cP6H5sqY3NmDzc)_r5 zvD#v0rsJ;__qo+D$Ml}OUGZ;?Ne9QN&lNU%R`nftcz+Y`spZR;S65U7-1bqMeCytx z%FWxhnUxx7YMwlQzW;w`?yW6~$CXSEN#&lHpqNsjs;9S(Q7XJwOjjvv`v3JeZbac(!(D;w8Z=HA+}00b1=-Q8bx zEL-+$v3q~hKk%i`W@lSCg+CN-iW9akG~Gix3Bl}_SV+d=jY~L+&5#! zj4$u*Mn4eVx@F6WYyZ#AHh=wlU*Hid$0-Y)+b>-@mz|x>Epy2~>}Khk?4{2{9(cxq zMljzge*OCO05e6o+^r4}q%;u5yI{N0_2dA_@=OcM?;?1_zuiJ5+;#&_<_nUX)5 ze?OmJzodF@R~MI2p58CL?c1)tySuwQvyy9Rh2zC{_xH<-h?M;Ll39~-v`f^nChgpu zPJhrTQKbUMFB+W8j`(!u+uPfpmwV+#frdzyxb;Xh3O}%~`?F)$E-7`{fWSaWV7i}8go|e*uDFDwr+H2sH@%-1p}*wV2xy^#mrBNySuwz7d>3JVnxK>D${#+cN8k` zn||%em6G!E~W7dN(Mhwpj)^l59fP4AI@dHWMzS~mHfzVhVHr_=gB z`j;+SmiGJG+e>@-W-i^dY15=_6-LL>HkZG@*IT|bMz8(wL;K!W@&|TbUl%J}c>clj z=jy8uvRafcSh-TOJ_>X+PmSY>w?%CRWeg_CTTZezHa0F?xUk~EjU9!LT~Zb*ubzE< zeLUz4%YUajRXR>&XJuVlX2LIP6%rac^}ml~pX`o;hfX0OB3nVz`gQ8u;(AAZif3nK zU0V}*_`Z&!c)p*9$Bv4RNwHkP@+T&?si~<|IJ7Wbx^yXOLjvQyy=8Bua-Ym?xpMXD z$#@01Hz)NiEM~++@7lF1>Op48%2TIKo!Dq^5*Zo!`}_O#v4yPyyFConO))h!bzSl; z;LMa3jz!E29)7X0wO3XIUMb7We7QCI`iGojiq35vJN6mO^fB5Tm6Y^oUF`0byP4Oo zTmhZVc5iQW(DcbU%T}yfHA(pMhIe;&OG`;TicL;V-ZY)z@%i~Wr7LS{YCb%@ap}^h z>G5@n@^ft}jb=Wne|)Uh;<&YIWMt**YildMgZiR^DG!TwZqK{>=sb`9*7EoFeCJwy zeS3Sm(z%^AKaC=-zrDQd9`^p8h@^zX1YtKh+p3bEpHdUm!$U)5t;>8K>^ikYq5D8h zosC@n+gn?A2>QtW{PI%x|4bgXW}VQYBBR_?-!~5qHd|OH-0h6B?2IX25LUT=)v8qq zmd+RUTnysx@MZ2fJIl0NMtx86alTDI{U*b#Kmrm)0B_f6e= zDXFP%Z){|K58ARCbAS5Dlu4Gs$;ru}GtaA8#l^)p#eMtwRkR{@X-axJXffTKC9&c$ zdgWhVUH$$2z4%78lEOm6nb{6E9E6T;Ogk%OWVb2tFq`21`8RGv#K*_~`(e?1P@y{M z(4j*t_rBHt_>lPUP-}{HSVUUa!^7>9xl7;P+Z+9$W5$~|Z#sq5Pi0+LdLv47|HK0m zY?p1g2FT1U6!+}s2jAB=xI%QRa_S$XfC zJtyQtBO`B~oo)X8?d|EaXJ;oRfmU%ved=BpyZhCP7Z1diFJGSi{@&h`s>g5SY+Jwn z{nyvmGvCWeN@gY}AC6yTn0#!;tXYqyHO`(b-F`T7Qwry~IU!+TWj{V7-pXIEcO%E_ zoS)LJnM!Y15>IsYdBogiWw@!Ot2;HtCt$W&?lj$KwXeHN-rU$&{r%mQLsp=1w9*XF zg|X*5!a_suZc62TxBbkyb8==mGp0|!4w{6zI@`;m?#+#jr>E;*zj6h%r})<|uW-MM zk(`>!?tLncXK&fcV>nYs)Mcsk5zW}QZ{GZf*7Wo9JKWBH-1XMh?CUE67oS+I4ZcP| zo9}{%xOl&WVbbesYuBw?S0P{xUhiyI`RU0_ z<-*O)>E<~%49ea_+}i%@*Vk-wbMsHrdg^tpTn{I03|kx3I$LSuM$jIGZ=XLG7Zn{6 zm1#fR+28;D^XJ987L=5hf+m`(Wv#8P_ngQpD*6Pvc0T`}58qUO504q9*Cb+M*p%BieBBtcQg5t zZUnFdYut@^q)di#FfnnVi22^BQ>TKKr7FHMOg;u$0{MSS+}ObFZ?P(SRx&G~0 zSG8xUkQA|cy*tKtOZ)g78xMk~BTU*F4IWdGlshI_Jq#rw;A+yy?b%qRo4@ zS?-BGM}}9?m6bm?CLcdC543A(`U?i9j7LX0LrNM>KYirzu!U3jNLZhqo*rn1=P<99 zme#ek(c3dGFVllZiUf|fgL}ST~H7y*9%F2tm#q~OB zH8)+GW_7oJ|9<CUWzK z6Z&Se_m;j6FTPg6R+N18@>HluXOnFHqg3&f0<98KK=XccK-gq z-)7I7H*e|E)ZJxoxwyG6U%Hg>^X)SK`Tstjx4-_>cXs>HZt?rO%lVg!o;iPhzHxeA zTU*=Kty>!#4}zAD1qGd0a!yW8&i?Ng;kSI1Pftx{WMuqN_Wi;_=fuQB`@dg;+xcYo z)&2eT=H_Piez`#YvonpK|N8nmM0n$Z1qW{4{CQ<%a7sg`QR=BFpP!$9+&V`{Sh)J@ zD^OE=U+wQ{Q>Pw1b}T5+J~sC5+1cj#H#RJMcb|D(X!O>sqw~E2a!$xKZ)9fBXu0M0 zdTFB3Og%llfB*hHaddZg_q-M)XOM7Uvbw*Rew>dV+v&4skG|~o3|{7Qb5m+}31h`Z zVFlIW2?kNy^LpL&y{`w|+?p-EE-h+H#=-gDS#R$uef{_M_rmhyyGmalI(+!#OhGd< zvxN&6o}Q+Ac(I&-)6btjnerdH^~=3|_b%@E9RnV=!}sskgJzZe<{oEv~4LTg*N#sC@VMDe_7Dgb?Q(n_w{wLr~fM%r=8*8 z;W;Ada5Km3|CexH-rjC;{aG_+*wp-(;N@}fVS$`Y#Q}L)2aaA@>udM#*B@+R{c&u; zh7A*@Ei8C=s5LGwZcC}g66H$uwr$(Cb!_SWGb=KkHDlVVi04Wz$NJ^{`z9>!kX_#{ zkYpf{etw>9-Jc!Xx0~;)+I;iPjT;e0+SW&J+_-V}Z0>^tjh93x$>`|b<*;7!?qcJb zHETcz8s4q^{On<9SB8#`4ro&Kxrj~uKhTB2pP!voKL7Fa=ht_4f1jos{ozdat5>gf z?6CMZ@kv!x6=*H;`O27RK0ZE1M#kuEIY0mWG`5Qf2vB%)Tf#8u$iKh8U)v=tlne+D z-(UZK-}2?pJB8Ih9PH}iY83viqpNFcWAo#`)77h2`DLw4GB2sfxC{JHH?I5hV{i5M ztc;8~HkFgCK-)U5TnYL2f?@K>J(ZuIEpqLav#;}!eOR;kK>FZXm81YEg#wN=+j!?H+9#r4zC z1nZI)plQvbXU6;g{r%0($|`GJ))O;(Z`ctv|8=6DM3+cB{qgMVZ2SLzgx{}=+S)b8 z$MNzqU+GW(42+E@*T367ablo@!-4nv|LZL(-dFwo9cWum`8%2azf6KIT)TE}Uu|_o zg+<(kCzMhZs;{rUJ~=5|w3okbv3q}CPtTVR9|V3BFP-(n&dx3> zDvD{oUBZEe3l}cztNkq{DH*$`La_W!=ZpPPb~QiV-rjz)mCX>cyR)jgT3b`I^T%4R zzMh_rbJhw~Oe*`+u0=A=TDr@f-N(o0*VotXaxbr}oZMo}vNG`O_xJb3FK)Vi<;tBs zm7hO9Kfl~(rqb6L`kd`=JQwvTZ1tZM3u3}&7&&Azs$=I5v9^XtO`Cpzw5+}wP4vbulS+gqx;crS0yzyJC9 z`S?8*feCf)M_p2<>?nCTspI~_dGqew+gm-~uGT8&hC!qHm)F~ZEeSXet!P^++6JsfyKq2t;^p?Da_Q2gA3rLz ze$AUQ<;u3)Xl?D)da=7AqN2)PTv*tr2)aC==B=@T!Gx4p6TzgUq7{)~s0_+mkon1htcP^H`WK<`jg6pl+SaaJdotd`*Vos@<%s?NKb!OJT3!5pCWQY6=tPEnwX^5V10A}Po&Ead z<>ik}=M)tefBX^Z?d{FX+e+1b{1qShz|-j~CjaFeA3d;Y0YUax*R|JBy{q@gI+-~K#Px#ic_*WuHx=RA6pv?pTkq)C(Z z?zR1I8KXD-%;8&$-TCMAty{IK>y5^=C%e6Te9oLceR#L5Rf&Lv#M7dkpw(WcHhOyN z)~w;FZww0y+cL%Q&!owdKNjTG*47GcWD}Zw*3Z}1*T=`l%gf8p&(GKQ>gCJErXcY4 z@^b&$6eX4VCq8PM>;L}~nl?FSS4Z9}o9b^o{<)jCZ4;}Ij*p7+@?Ejeif9nH%eLd?I*~qRZ#vl-QnNaRjXD_;?6xax8$q73wwi!lqcxe z2M1;Li;Op$eu2&{P+79NJ~0h`FvNlv3RVm-pkak_u*4$xi4zTrnqR;aF;K2Wv{Iab zVZj0|ZSD2(`{&J^srkN%f#KDuGiP#6P0{oL9Ra||(82yypW$rVnb+|kH$8cLW~QSw1qOzX3;wY#xH+NnFZi&9PZOt1QF*V#z>vcBZxLgL z)`Rt;4bNP*)n62l1$n_C7IfSM=x_*z0E&n*Amnq|w>K!-hKE#I=G%`6c@^(+2KQG=HQz`C}w`%oj z$k9#U6ITK_0{#ar_}BU?TmfW?gY#^Y%t^hyzW@LIJwL}%`TeF7H_yy8X6KW+u{L@; zx47Pk-8w}E_5W(Jv$NgZk2|;Xo!qU%z;NM@5jSxo6WhKaK5j zYdM=%|Nmd?y`>YHCruKP>sJQ_V#A__U(?xM#XBrkdd~zphvUY6hFPb_*FCgfw|aGU5*TDh_{aoMI*VozU zxx4J`maSW*e-tw&vi-OJcFtI*>q+)+Q|B}WMnQqZ6N?%YnkMn6h!!i&xMq6XRGlX~ z$}!+tk7ax4fgU|2y(A@10Rb1+i5iyfoPX<9e7_%VZ`|NKi{bhA#?`xaE!({-eb;;E zt1FA$`g(eMQ`c|bwr$y1uwXLd-?y0!|30ZN*ngKtLYASy?8E2h{yE(fo;-hE z{-mL|w|DB)sr!4_FRu>QH#Id?o4oRyy#$Y&`#J6{(us)=ul2eL3JPves{{?~P6dIh zoxUq`Vzo@K?En8MKG49p zHXd|k$Wrg=da=7gVq<%=j~qRE_Uzg3@9y4SAHV;a{q4e*mKL`@na;JsEdfPEM!QQV zO`25n^V8FY28LDaoA&J4vvTFjZMnCvT)9$LIqm!V`|-Oe}Bb_ z6~gL%FJ8XfIRELdudk2y$!4#79vB!1>Hu%ezCOpYI4UbRBElm5+?@RT`vSGIv$Ny( z)mT=3dcw@kx8=)0KbP?E={og)eq20utZmo#Z*On!E`Pr)N_57fM~@ync+kp1cNgx0k%wc6^4GzAn=-kF5W#SPMvZeVi%dRH> z`F3aLSZ-di!o$ZW=gNw}YuB!^va;^mx9`XA+P}ZP?*ISKI`L3TSYJRuz=LPc+)RB1 zoUXiaglts>tq-}kW#dLeGcz$UG0>((Uf#7US9*GT7Z(*({rRzR*DkBm2i1LMIJ{c7 zYuB!Y3l~nCCN|IH@aHsNU*CE2<|(`P<&-t-U$!jm-k!=OnU~hb+h=EI=jOg`X=(ZJ z;lraxk3v_6ZGD=zRaj6^aMPJbGiyFRa`pH3j}a3V-n?Ohgi#7duUmI-FE2m;`qisf zuUHYWHS6lNwbA1Gad+Mv+`DIwUfiCJ(>!d4FI~EH-4Owtc;8{ZQQtV!GZ_h z@7I6-^l6q=Y1Z`^c?J%ZCI5~cJ2pvwMHs_hRx5G2SMNb9>GxDH{^I_1dj5eI3>TbF zo;XqQ>4|4ZNQkSetM*wD5s@}NSCI{QdCs5Li=5xynUaqFefKxet!Nd zgFn;tejV&=E6DQk#l^+Gv&|G+ zva+-L37O?RrbTETyDd;a}B zd-oPb1_pk7bhJA}|Ll_|Ph7jj66?=BKHl#?)2OvpR(W2`p;TYrv)$tQL2I{kbaaSn zhlPZNnVFhaR#x`PT5t2!c4b_!o9P$#2j&I)=iFV+$M{RT0~E5G6*!da?Cca26zuHw zEj2Td0*$VOg@sL}Y0@O8 zX)CXF?%rMP?9A-s;ozDc9+w5QZ0l4gZ?{eUe_VUpF=? z9Tbcg>hH2J>|*`;^($y~NgJ>9xA*t&ugN@=V33oWTmI(8#|H z%vl>2FIi$z`YJ?Ue|IdkT6zqwHxla9`{E{~eOg>gso#EBEP zZ#Tbca&UrQ+tjI3j~+d`R{qGzlPi~|mNGIjT0EQ9(&DmtwXm;`PaBV9lR#Eh)~?FW zX|t{DD?TK|{P_3Rx;kb3_4VN0>0P%`qH_jdYSL+YirU! zf%YH&oKXDy++U+|DTWenhkC&m`u{;WmfM8;2Oq=T`JX<0TCiZja{u{B;f7*Yu3lZc zW{r-H4i7JHbeF%jLq~V_W0TD+jy1o(>Dt)XC@CpvYIaI}S-NG*7trCY@9%BhxN)XQ z=A^DJE`IAfhYiim^TXz?e4Uw{ogHm|;?h#@=v!YuJ@t+;Ff+^3te-SLHw_&4#E|MJU~o1Uy+xKPo+;KJq0!vBA~Ecvz2x&6d{b0;UK z6Q&c+oja#1d*tR#$?ExLCMGIsYLlk-2vq(1V;PxO*2b>rviRbhxpV*jdad6QkeZsB zm8F$=iP6EI;fwf}>G_O*-vr0AAi!(cDr=+Lb*Zr|DF_|(;gVlNY<+pF%#KgqR z;uXEkyWnEREifp4e(vn~^ZU!+gU<3eu`#73ptiQQ00cIyT={Z|=VTrp9+uQa%hV72 zEMK^E>C%-eZ@yV~>sFM}^J&|*m3g}>On+4<>+etb+RxFy%RWXY1vn?HYfc{zT6 z-P_l%PYaz?Gc+tb+{O#K?$$g{#wUqGfQN1I(%2BjV;46^+lK@P2dAd0mi~>)&3!w+ z{-3AbyeD&x9do-hafbCZPHWKdof8UN;rUAUje`6A!D;UAZYffYlE_NrB@*2V1n^ynz}w5r!oiFkwP32%K%_m#?X-YZ3)vK|)N;GwJa-N==x-f4;p)>D9fk7!5{;1&n`lg%|91Jx?8**#e)NShSS%ojrZ}@nM_8A)9|+Uhc1J`uopM<47}O z`XxYDi|Mu_y7sn}ol_r$4V$By0Jo?l&E{r}I;$?dhw zw|XZ|6x3U?bm`F}M+*KOymjl=rAt9Ed76R6pthU4!re}3DXDpOwYPF+pE~7rDSyK0 z8M9_h+HAP?Nc6X_UyrgH8X8XfaOH3tukvZ#ql?uzn(ka(?l1r8H3Neq`WATUQ&!nl^;ghs~-MM==dRCj3ws!JKTQx;R$7R>OyuFkEdt_y;+P>ZV zD~As6oVjyPK6p}BSNBG7)~Z#j#B`&s^j+|s%QX39Nm0?Er~m)`UVk$iv<5dNMMclr z%4!o!oSC8F#*G^ff;s`4*)!ca_SXEIWb%r z?A?XV?M=k$K)=t zNJ&}w@vB!}@9yrawZ1B#sizmWr=l%gcO!$S+*AN=saP`uqF)gTJ$}v;Y5iTz7~n;tt%`U4#+yx@8-L3{~gPVeC>vRpNs{j3JBOpNlES5v*(0sB)P1e->$9>zp*4@SINscmc?zn z(qYlj(lRoCK0Q5s>sFMlt!-lB!zD{pS}sgfb`J>&S+jQS%H?qz5)K}2=Px|-r26~2 zqsNcmzIpTF%P-sW@2jb*3bH(W@ZiJC%gfK4@yWXQZ_DV}j3kwN>#?`l8e)+|=`kTq@kVt?3{ELfR#r0wwI8xKn{N`8`URdDh=H@na z>Qqin&iQt=hm4(+l$7M;W>*Mz~ff}Id238Cl5-g5Ce*6gV6}Gjt)z@DiHfcA*Tj!vlPoR5Y z`Q>W9y^&m}siRX;UjF~}`u!gLrValmPM%!-<;BHsZ*PD69uXW2>fQ+oI_4fuG1{JY z7c@w)*2KU7wCL?%GrOQuZ*TAQb+Nn4-b(E(e{o@9`nfqL&z_xYlPfd5QA=t{)v>z~}?6jrOKuGWv-)DnJ;(<$TQqocQO-I{Hle{AOD zM~^{ZCGU|VNBU$ejjF!9nAW$U^!2rWe}BKfw|DolWy>JlMJuaWw;bHuo_%?F`HJhL zkY{ISm%qNIyJww*dY8DE7~5->2mTKAJK0|3e`olzUDToer&vTJ1BZlp{=J&Nzf5;p z=G@qje7vtQ^O9>vM@P>6eYM}-+)VMUssgqBDnw7V%}@Nt@AnL}#-i}?w7OkFLPAd% zXZv1tmU9dX`!;>~>#M7;pPZ}?YWEo%8*6H6zKZPW>A7>~4ihso=tjeRQ57dAsqWji zkByBjg?Fx>yg|Z&L#^EU@%wa?l`rqF|L@$+_mHixukX$BG^3eyb#;@~{nZvv;pF6; zIcrwlogE+F@Bc3*CT3=0aztE7S^4v6?nFl)pPoJ5Z#!P~Y}~pPbZGh%&0rH#)0O28 zUS3%j7r8n*I3G-hKP(HXDa$W@f&6^=hrW zuDQ9nvhv{z7bfIC-^=`|$y6VuOLl-Ut#C-nr)H^shSX*0r-Z$4oaGA zzP`Td{_|8e|NHjt?(Yi=o!=I;GTmaI>vw-+a{I=OhLOep{!|*t>oYJgT!>}-`&4(q zeg=jDVF_6VmS*>Ux!Qk!X5InytY`9wJ>XlkXi@d|cdELFy1KeHr=LG`Nri!-;T`V_ z{qu}}Ss5C#54>PdU=R@%4V--N+zi9y4-XF7yx~_*NlRN7v$N=UpX}48Pxrj@UaqLF zzCH0UTM?)$uk$dG5o8FcYGwGv&A?FJaFNl0frEo%#rpNfLCei`V|Pv2{`XryZ49ksv9%F4`~PTaWzIgul%MolMf zZOy*FueSU8f@RB=)&2O8cwvF#o_8XkfI8U#?u;`ql$aV=F?_K0pJ%gj_3Fc*)DdPh zy^M9bUhJW57w1?O-&iYLUtiD9&)+hkr{~P4r>9q*jC%X#%_i`$^vajHyV;A1iiFjC zcGUm3ySJzOyC>lGtF)$_*V51^vA@h>oPABlNHjMoDJd^cFaI}aKCwh^ z!Tvv-FZ3B0VnHL{HNH_%QZu)?M@CjYIWh5$O?7SU-{gE$B!OWTnAm-v*0u1->3ed@O}}LP{Qya``-R~ z|7mO2ta(wg?qAZzgNpk4_L-MdS}v>(U%#Sy@uEcnPJMlSK5D{>M<&(m*s$TludlDK zua959cI{Eq_3`^b%c0KBHb2SXKf^r#Ud;ZwyXViZ2aQIrS+#0c>FaCH&d#2$A7A(A zNaywS@tfJ@e@)-F$pW?(;M3F7p#A*jMa9MWcXn({IVn_RwRH8yZQImNUs=z|z`*c= z4K#+r#BhPRaR)O)ytAx`xw-lCPd7J~Dygfthui%6{rml`t=(T<9R4^#M^{%=R8(+w zX;46bLH<3PmJ3TfCl^R8-&gzF%E~G%JiNQB%gWmNaoW$HKhK>zw{z#tfB*h1c^euO zWR!Pj$B7djuNb%I-riRH+|Sd~bCa5?YU;f`mDc6&Qj9=rCM+#2ITWj_f3Mpi`i4i= zYKq_Tv-bjQ*Zl*Fz!{F~J9kBQ+zF~fbvhI&PgN2jOj@6b_FI`miO z^o<7-rcJwc?V6dn`TrjuAA`0duUoZBtG>QoSXfwAR+g2O^+?*>4T~2qE`D-Cu;s$H zx3^EKPC4Eud;09zzi+qS-|$(*X~o8kg{PxuqRwVB8TC9`3Fuz{eVYr zi_-On0$QMvSo2Q3K$iqOqufJ;lqV%*1UQ6(9tjE&c52; zhg!L#qN3dU<*r`6I(717V{>!+;%7WgCk`K0*4OWUI-{Rbs)NyC|Es=vPjr8$<5PfiMZdY)8tZc}I}IP>JtAt%4SmFw5nzqzsT)vH%8 zFE78pvpD_Qn#hVUmdjVJh)79w2}qe{iF^%KQc?ebx$s%0ECKPA4ETn0_dH!%J3{wo41e{9($WEp;l=ZGbo zFmSrV;_v<-wHK5hs`d5PU$}5#zJ0w?%dsBG=GTSIckaaS@z0(+_wUEY?lFA4yrA); z^2BNmMG+yPLvl?Kk&!cNKdSR9iw5r(v1tSsbIcC)k#-!vxEUPy8Qs_!{;{6tOz7(F z-g&?A&z~BXjec#s(rRjI&)&c9R}aE_Lwb7VFzTnOrLJbn7~-Me?z zWp8fmC|o>uuB>DnhkCjbhi&yYp54BmjIS)6cSRp`xr9K5L%sFaEGv0XZ0_Rdux9w6 zA97Hc{p-$?{qpt~{`c_5%rMQqwmtv8-yDm?)YPLXMl1jN`1-1HJeq!dPvPTZ&FuVX z=jOb8_6)Sn_S2^#bMx)Tj=Aj#cXVX*XPU5b_7BNbCpoThGB7x72ldoJRqTT9hKr01 z^%EydP>}su_vc4oT->>*d=FgPmXtOLNSWu!==sdGn(DUrp;2ByNQg`9ikmu_nVGMz zuXpEodvkNU-}3dbyTc+QZ{ELu|NMD=a{(bC(D|NDFaG@e{PpYCxz(0){k*)mB0;w= z^H(!5Fff!TE!Ynd<^#oCEDJc#^txTXe*O5GS8ymo61VdU<*I`u1-B3(CG$+!v5a8q;QWezntq zfq{2yN?l!9^#YoWzrMb%Zvg@~&YbC4qr%LzbzbNT(CF^FI~OlrjNDnI8fjVmEyvsY z^q)U}=31AVnVKrLn3$T@*4C=3s@}bO_v+QF%l+r)WoK(ED{s!ZxhZ;k-beq8q*vDy zb8>u^A3n{(z_8#q!!K@d5@T5;#8lJU*~uBn$IZQZ^=e^Z;m7AzW@lxo`OWG0_x_IS zW)E-g$J0XMT?`EkV>(lJuUPTo-{0TD>V7esQaB~kI6>oQ@18y_{qW%6p+kpOtk96j zJbCo!(E|q_+}N1BK5p->`v3bDEm|~r^5pLB(^pmouN0j0vGSyYR}9{1eGJSczJk0doTrDA|q#R*R zIukRqYuBz_`@;`%_@hUUKv!$um-u(OeRH%;qe927T~?psCYJXvJy559a<=E*)lZhK zSfMe~j+dcIWWoL#)))HM86bnwoS-%_gS-3jh6VQpKw1vzI*nd;qmG941eG1IMiEnyvYB~ z=Elyz=nxcC^zqSA_dc0}v-9uoxGc!|MKTgH`c)$Gm)vHe*{>LFu zT3UKTKym4o9Xobx=KJ>_^P z)vF(u_W!dtH8qXjU-$RdSM5k;P0f=jM(n&&DJdyew&%xh2x)l70`8UM3jbNZ|A&3_ zh5Ka;zfQ9zlrRWLOw)^#J8;f41-1HS6FMe1{rct03eHQ64h4*VpDHfcKS!b9m$bZmzeBxa{ZAoKjId>9zBJ9gR#8#$z#KFk z@$Bqu|M_;h>gvZ|uPZHwz5bs+e{ynie*E}xzJ2{OmBLva9UZe~NmcTj znwWqVTQ4uKQ<~S-*0yGi&Zo3xOP8jmrka|XZoRT^!v+Ht5O4_z35k!te*y$J;({9- zn17wtcBqeL|FS)p;VCLQf+X6JwP;>Cw;$#*Ah+GJ#IzWvFQlugI3Tq!v@N!6yj?lEY0uArdc z|G(ek)6&wk&mK8)#K+h7?3puLwr({wF-b{H-FeNqEG0D+bP#;ShlD+z0xp@EnNd+u zSy@>nB_%mIIy>h~ee(SL{2SW^6ql@9_wK<1gPa=%i4XlI_q4UOoj7qK{rtSt)YPq) zd|X|RUIGKq;R;HYogEz+nIJF`w7z%a#*K-IiGqTHXV(>;Jp%$Ye|~K2>pM5YFxkh) zXIIiJR)$?7kg+4b@=NzY-NNecd|$S&ZTMHj2ujrbFE1|_7Z(Q|!f|%dqD5C%hrhqS z|NfOLQ?|>#PW$uYWAf)`XG3`3-QWMejaRxVr|f=L7njYt`(7nUs;a8q-rm~Us}DA_ ze}20wK&n?w9R$o%P6&vLPrr5R){PrCK7c_}6VtbEFJHa{#dPuWzP)?*_V)U+J8Oi7 zg|)S{wY9Wt*|IFq!z1Iu0!PTYg{-VBrbI4p5041&n1nFP#96bt@}C{=m%k~#co`UI zX=wDw*;XCt5UlyF%-E2|`1dK_g8e!r-hWHW%GmzCwOFu!E?*BHLlb+iTlAg^!{&oK z%HPYaTe)uCy)BuOSFe8E#LE33^SuR&qfO_3fUS8hDfMBghj~<1A0gGeJ-(RBa>i%9{NrBfkZQ4}*{he*y zpNbzJ9xit84+{y&dENQx)2F89=KK3hJZ#!5JpA z)`7sgJ(ZumyuFo`l@A|2ym--~75zd^D>iKSaBXcgzr3A{Y1Wjzdu`Wrv9PdSxWA6= z%XHQY@hrbiOXgm>&(1G*7E@tGDgh^XF){_($t4D_6d}wl;cw z{Qk1yVri2Mf%VoJ2cA58CTCM&pr+Oql?gsY`qMnKY)1hXFRxRZ)6buXaS4&&VUvrO zw<^hau9x&g)S_ZjU*EYqJBv@BI;8}j7(I085a;YCu;lMnFEBARwXOK@;LXj=Teoh# zQl+l09v&XvC_U*tM{jR$U|`_+dA6WcVfSxu&yP<}fBy0D@$$#_Bi6_5J=P;>oOWi$ zs#U8%=cDc{R=2mGf5%(EB?biMw6z_(u`&7VnKMyFI+G?(et&Q8@4vsxzr{k9;0vqy zJUE|oes0Hx4F+-LyDC0DYUh`~x4(YA)X`llS8`T6fsWZedD1gDcyfCzD+3?n-?uRi z^`4-*###_mxh`gINJ!4hd-wF|)5niLe|;Su<1BDwZ}s;>hYoGaxyhuhXsNEPefsq2 z?$il!adCAoFD*?=OWX5G)ZfG3e}B!-qRo!|JUl!xv9azw5*N?9-HdKLn6P8lu5&XC zA3r@kec!%)SB^w+EPQ`||9snOGYyT5hlg50HIvjKKbRt2M!L74`08ksv8y+7lSsyW?ot%svTDHd*VgD zOINNudH=rt;UU&(S2N1W%0Rnj`*&6I^71k=GXDSfTi?4(#%iuz(Gw4GadBp5=D4rD z+c~(oZ{NOs`{qqmHML(qf9|dP-1chm575dd+Hn z6oiL|J3AkiGZj77G-Jk%Bb~y>`{m_DMV~%@?*3ItjpNbF%gYN33%SMhS}Z;={Ad1k z+YuZupc+G1@$2`yyUX|O+qYoxr2wtiA$G^w6tD3yKOEOinJ{67L1NS7 z$-(#c)mC0L{MYEVSP~3UQ&aEmELJx#m{8J`o0C)X;en%%&zUnbjX?_td@uA02nh>I z+t=;cyxI8lA2E(jI&~`M{j!7wix+RM{aqFw9Pulx7sCo?v;JCPVZ{N%5}Q^YiWF_tngl`oyldWbxw1&z>z?z54X(I8GKLBO~pw zH5)c={P^Wdj@diG=7XShl|Mc{uHGcC+@6u04H|X7e*OEUrQS>0%Mue8Zr}cWMd0E& zbLZ|Zub88PMw%T{cYYC`RYu+PCNN?zF{o!E-EhGo`3&b(k!1j z79XFToh_~xb7M!LviH2%zkdBXaNqzdw^+`d9fn$3UA8;Dzdw6@ef_+7^VY3fcYS?) zx}k4NYin#wOx~Rxg>P?d{rUNMaPn2?NeM?&w^U!aaG~JyGhcmu{Z*MtIy!qYE-u=f ze!eO5kRmfXU(Dt--rdaeT3e4^T^+9OGlO9nXFCTc=h=C-zb`HI);SGY*}F6Q`nqY$ zBpDmj8~$zMybv$uP;bq8;r=VkVcLOcfcL%M!+_B@vjT;_bUPW79-&wkFp`x1FvGeEkt*mC%uJ7qN14@p* zv#;$g&yU%haIi^G*{!0oa-x`LYU)$afJ@E|gOV2k@4oKtUb%9mW#uQ8(@p0Ynb~&i z-0A2w+e}bOYFGXLx-6+gNTa?-&Q|Kpq_P7kM*j0`K<5~Letv%Py<10*9-TLD-sC>-2Jlx*f+Y4T&t-Cw;#I#G7E}b}W;=_jz zD^{#nwMy$7+p1No^z`)39_zkz@uFq%vooMelwx)^Wxsm;nqSUlN6pV7&~W!VOK}Zd zUE8839Hj;kAt5Cf7rCB0cg|M#xIg>O>hJG5h1FMFZcujb18tzxF?h#OVs-cC&6~Gw z-8y|5wCi}sre({XeRz1-dz#M6Ov!T$bxI^(a~q7DC)K<&ecSFVJJ zT}}b56n%a^KXbtpzvZA~<9>X2INz@J)7P)HA0M%r#{1RQ+Ri&=QTT{u^2se5Hf-3m zNy;Q+!iEhGY-PbMBvTt38y%fDkB|53?#z>tmfpQ^+U z^khrs6JG3n`1F? z^7&UUU%tJyHT&kK)bH=^a&vGb$X`4U>TR9)@cDDHfrN8A-_|W#Ow7%vPoDhxN%o7J ztnBRMq@+WKL4cc^J37k^w)W7XyidxyY|WfGcR-F3elEZQsz&1WR&nMDTt9T^kaIg< zplniZPEOgI8;V+5r$E6|{_f7gS!z6Nhwt9Kd*nz#}9bOtY_nmNc9G{`S_o{@ zn~OKI|Nro?dGcgo$#cJce0;pvt@qRC&%q%fZ{ECqQ0`EFlkx9U8Az7r{*v;y^&+Fg z1Py)t`}^zdB`>!7Eq{M|d;XCQ!Cb43Ns}&hiE7vV|NH&Gfdk>|<5bnuCT040u3ELq z$r%JPO``t)`@41PR!~m|+-DXQ5vi~uc?_XYC9vXV}TRcPmiZyF&ik@&>HJNFc zd`!On&&A~BjJJI=GC;S_ob+X7ZFO$v`}!o{No?2JwQJ|hxdU2hVeBDrC@d;;#RI&rNk?kGbLc}rzj^MpEFmkT)A}V(xF3(nu}wqs;Yi}e}8{ZWwEm}^Sl1# z%a?E8ZvMN;v+mjR^YcMxHvX%drWUX``0`Eh4wvCdb1Ih!9pJ}OuLZs(U*Q&->Yvi;pL(1c1l`D0(u3xnZbf=}4ms0kU zrAtjsOhQ6Kmo8nZs;VlnhM$%#TXyT#tyiyJtpWk9n1q{W&Yt!4_Rc;U zIZ+n5JG)tZXQsJx8_&&swZHe({{E1bm-p`L>+92XA}>WAf1kzC1iHu5l=b_aoyFC)Zh@7124lHfVE(7FA9$wMY9E30?!-pw}4J@j8CBs~20j~}4xUgi`< z9=bbGfMw#085xvXKAr5j&d-T$!J{V+cGRAilx6t)l;y(xG)D0FWTmVB<#4(9 zwc+96_r7&KKXKy3mMyEp*T?CY@~}0#EjIoAE;awowdV40hx+LEmM`*OH~cH(TCji5 zQumkO$SzvVZZ|~@KVG&W$mG`E;di6?Y<&s?;H#eudySb^Us66nMm!Gff-dFJaiY(~# z@vK|3X3osLxrtRq>h{5IaeXIe=aXl9rOllrRP>Vb^XE^UTKe*m>K;iMnVh7gOMAr~ z{t0PoujUrl+i?B#>C>C2*n-P1Z*R+u-jKk!Z6g;qH#0Nya{u|~CZ8+da1;n% zAGdbhx?{8VR(-v-vv|3}veS<&Ej&$kTGsq1aCdi?`?mbJQTe+&ph05^x!rHx-QMo+ z;?i>c?<2|mf4|)Z&35jsJ{|;`{7jo)GN+_rX;5rz?dNA_-}JioNK(z2(R9XNr`5j*{B3m?c~H*L1R7S^X_vtD^82Y@2L_HjoIoMDB||W-cGmp) z|DTw2=6ELj3t!+5M~95B6h z?OOP{n2FP-<<=OrdSw5|S@b9dL)&Fh=x8UM2Weait_ly$d9Zqa`5 z1Pmu9XNrMzVBkeoZn1*TZ-mu+ICywmIAkr0Qb3Kv>htq#cPAa?YMC%|rsU}}Q=6L) zZ%jTeA}SibKF)V;W+wPPFrgP4KcAeeet%!BwZ1;TVn|%vzx(z7d*$utU7wpJ*Q7Ad zrqU_z*6rK3Z`}B>&YI)z`9)8ctvf&0`un}T)zkIk=h@fS?dA^(4Fz2}SycS?*4DQM zpQNOuCV_9%eNnP&78tBqle2sGmC1qO;qf~P9^TxX{_)x6<^JxyQdcJnH*0EY+E#th zFf}z*R9xsk-|pD4V{6%2XV_F0MMXu`)YO!fZCki-;k^vfjfAz>3$z*QtftORntGN586U66hX($==jgEn0T7`yriV$jt?&` zF5a4beNzW$^r_(C=jZ2H90R@^%{;UJ|G(LP8%nHVFT^VyI&^4r`gygvcjRoVp1gQ* zV!rs-r>Dh@{%q~&IB{yKcIDN{U0q$#+w)xA-S<~~T(oW5wNs}~9XN2{=FQ3n2O9Uh z3YraC75n@>Nh<};D<4F`eghrfZg7|dWgdnm3)3?28DwUI|?H`JTji0nR&;iIypHxC}`5AO-1kT?Tz14F>&r(-@DO4 zK}G-n)yf!b+p}j*P5F10W4+SuvpQQ_Ti2>Ac%*x!v%B!|v5#5D^o@;+e|>p*dYZ0v z{lA*5tgO`3rSs?Ce|L8`Xz$X$-}yzpYWFW)xZn_5Zkv8?j+x}*-rin0Il0Tre7X7g zw{P2aZ)Y)Rj0<#$uA17m)YH=*AMY=BoW2{>VL5m1+!IjzSKg2W?Z!Agzu_OK6L;ah z-}2k9K?PflZ%vKO&QAq5HYCRQy^abDY!tY3@V#eILcW>M{;raX6v12_wJntktlai8>kM)38KJ6&Dv@Iws?Ayb`>@mwO zzx?6-#E!*r$F5y=_5W)A{P=i&zP-MtrlyXL4|rH>)22;D85tSV+pfG40qvYl1I?>s zy*_gE?(XvPcXv7ktV&;9IXzwf|F75UudWWCZ&&;4a65lHpX{w2g~`vq??^W&eHCKl z5ET|CwzEr)!HV@l{Du2v%)f3&f_8-8jjm4wExTH=DLpUm+|$j|r%qLDNl8g@>zC^V z?cox9b4er%jM^XAXb&pDec%HPdtZEfAP z3$%#K`Xk>KrmwFb_`hy3@fC0i3k%cI(z1DZ?E3onjn<&SjyG@LrlzL0wzSOfdG_b$ z=llEX>wkVq-PcuhRp&~`)y3}pd6!q+J#^^M*VosTTli$Hwj>?pQdCqdnm%jRt!2Km zj~qRE(>^phT3T3GSX?|jGVV(3Pe)CvzvUz*KK$_E z!(?^;NoSp$oX*X$oIG=;XKaY1l$2H7pC2bqoUkl@mUC}UWNgQ$j=3y5`O-=YHG*w)?tUC}Ako{~+t13)ROkp_AEz6;>&l%wHJ6rnR)2eQ@N?#z zg75F{+E#y?V^P>79Ju7%t*u`Tc{n*wo;)ciEIiw~Tu=S&N70q5R?V6@lULHnB`T^4 zR7otechXQ$aPaba_2S~<(9lrrur(8=PL(ywiFki+?{uBWpz!ea&pe<*)TK-^Zfr<= z_Uze@mkTy!UDeXmT)AV%jw450va_>8L$6L$b~l>o!_MBmW{u9bzR-}6imEC;dAk^2 zU*7E|CMHYL=Bt6u4r^d!{`K{BdTwrRLV|*}_U?p(Omi4Iy#fLz?A*DtvGL%Chlj6T zy}EVF7SJN)?Y%c7&2l6n-=$sSJP-|P7g#evHVVYl&$q2+`*oWO9GP3UZnb#E?&J{| zIPrJ#`5$kBf`V#)eJLy|($dvcWq-N9_V>4ce}B(3PB#Ld$v(LkG)(=##pU<6w})RY z&d$y*e{-Wzz^dp;$E;aWdDCXj{Q3L+e&rU>fmV-?^)|Efx3#tX`+7YdG!*gSLqdHe zXme%s_PqQ1YC%UBoIk&P!-f|}tS@jWDJg;OgvmrkN4fYc{5O5c-GQ2YkFd?pGq+J^7X6bPOeD} z4Gb+8{`~xGdGfi4w6t~JogJT_pSQNMnrB&j?C{~kCr-S$u`xOMSkK9mClmAM&zZBQ z;^QO86lVSHZJ?E>;(9R_rLV3$Jv}{qO~k_&FDm~0_}IwIuBNJbcDDKYNakDDuV24* zZJOI+S-YBw>+51yty-n1sMy!nrxV=D%gZZmmUClUZnUT8$$hoI&&{*7uK)L^U*7)K zty}Y~%lmG9y0$iYv3oygl;_M$S5__Nvjf#pYdmp_sjph?=1#emL z-G3erELmK+$)LBs;z&X>GkeKggG45$7iVXiSBRgR-(o9QSfem)XLp*Rx%vIQ)#gqa z|Ns4Eas2c7y#2(96ZQ1;)~#EYGJCOme_Be4&wRVNJ)qSpHsB?tTeGj9kO)-im$$!m z_3GW7#mjf?s+wS}RdIEW^WUJl%sGXUbN)$92hEXxd3kvCJRT{N6DLk^D4HZ6 z>-qohH~;e!xu9{~WX1Y_e=5t$%KZHNTwIPEXk<3ey>-OMM^0FHbHPI=S=qTCK78ou z>G|{LkGOuE!OSy9yT!M^%a}E5R@dhPplQAX2OdoS`~Tx(_DC}WgN(`1%8mjzs;_2uQ|)#2;;`1ss7YXAH&R8ngC%W?1Cz3Ojo zDnCCv`|IoL@9*yZhAezsvSbP9K*ZUgp7)_v?rqz)DJm+~|NHs;(o%2z*j+7qJFc&Z zoIG!yU)=isetxHn@9*wz&$}D7v*_uwv$OyH`Sa+}BhVVAWvcpmdT~1n5@Tay9UL0A zZ~s0?)tgVoLO@8UN#NG5((J@U#pmS_VPVtuY%eV>t+8n3;LupGe+S!_?XsY$x)=JQ z7vlG^f|d}rYE@L!HJpBs8e;M8#D|B61)aXXyL*`V@Q=`@zfUc;`w2Kno9CGr8tw%7 zWwv?wn;VMS+OMBJb(OV0mY37l*LTH#<;s;aXU$S-nKXIw&HkMwFN5-)y;q$$eY*PT zKWTFVY9F4cRGg=vt6Tf=k*l)u;{5yjEG;Z}B#oXN=@ecvFHn&q>E@=?rAwD)UthO% z`*v|LF)<+_BXjfnTQY^6PF%h`dCtBSt5+XBIeB}|&7{OcMHLklC8ea~lIq~ zbKi|Da!m$2d z&8P2omix<_o13>xSib!E_Wb)1c8k`msrmUS)ktx2XD6p#%$|ygB|n1$0}YLhok4qz zHq9^j`|IoKu(eA5=_x5K`KMO~FF&EVVA7;XYooU-wQS41?RM_Kg^Vqh#m{csym|HN z)rpn;r%#>w@Hsmt$7f!X+hSfhn;BUgb`>8K)YRNuU0bE1a&Bx$OiKeTvIZrOr+XJU zmG-5UGqN^(WBldK^y_w*L;Y-4@T@XCqCym(Nd4HWqp8^`aOv8$ZCkd0lKsEG)xN&H z`}gmkI#txK{_g5<{T6|C<-SXoF5TGwar^zc(`V1x*8Q<4jo7|tkIZ_*WTTlgMK*2P zwBfYU?p1~}eQa6})vi!eZa*e@eL>rXXD9pHyJpUeOi5X?e*OCg2b=9{er!lPE5*y( zTlx7}Yin!ZY*7)B2b^7?&2cp{ieLWxEH08#R90rzFG}{j(O0ixo_{Z=jA!>g(0cc; z4<9~!eQj;@z8cH+xyz%}bN5b8@lp1>v}Aw%e>p{y>}xvHN_;`*_?}nzy~{2(Hdbab zkMk`D=XO3-?MxG?Z^zcGU7KpZa@sVp?$rMGWic@_mHhkb{&sOIyZ0^Gw&Y?)#kGlN zcHdhauK&jQ_1m|y;^NmQb!&brEG;Y)6ct@6$Ll}A?6TmjU{W`t6 zbN%Q4Ji@}lDwLQMO|q_Nyju7E{{F{Jix(?@{@-M~tYG?zjLgi!%d;nXMJw+p5Pqeg zr+(?i)sF7&-8*);xVYTeS$zE9K}N-rzrRYevtQrdo%hYV-Pwd+h84@BgTl}n_T|j0g+j?K)>L)79nFWtCQqt6#_|MH}%yx~FLE*yv zc*b9#O-^gKv;1ZKo4Sx!JA$F%bi!ta!;`dIt)D!78o0YrxAVb+1R29tnS^8ObINQp zIzcPUjvUd@(t7s%`TN`3-~ajf`N{3cI&W@o@3)<$2fl~w?Y=pF%awOsy*goMnSj&T zXKx;ICM6|-ruXe?tCEry&7K{dknmtl-BgJMRj#`8_@%bN=iy8JHNWle&gZgb?VfqY15`Xa$hO> z>GS8pB}uP>{THoTB_%6+_NVeSK@(Hc!i8J5i1_!^{QD!Rcx8RO{kLN&`JnT)n2U=) zx3skEE`MKDRkg1IbV`W0m6esWSx!M|>CrUMj%B}N+p53k?cti$x^3U<74~1_kL_S$ z;A8xo`d{aTemiLJbQ}MLcsuYi?bcuOlH@l(XR0_UwsQBeW5;~dE?>X?{ql1Ez181A z%Rbf}=iRhZntWhr^5 z+FmnlEt{4Y?)D$~zG}U0#zscFYJYE=J2%$H$0s5}Vw+!qy{d}Jjbx68Qbkjw_*Z*- zdTzZURDC<>;-yPg)!*K1Ni*H~_4SSGuKS*4QyBlEpC+8ovPr%s#*2ygN7_C7z~{{GRUPtVRa@0Yi?D|`gn zS1NA6axxeja51o4RuO ztMyZ-PF=T7uYE7;U)H}*Il;};D-S=!_tloM-k9v==Ej!a)zNWgp6%_+myLCFa;~ll zebQl3*S&PvG9i|WyZA$slOJDO8}04wtsk=^At9mQ!GXre&1q{RHy^umN9KIUmv?t( zpG-+hNjY-t*r)xaPJe@byxr&0ir&$(e%w zyuP;fnzL~7+_0daPoF-0i)#uxf8^!*!lFf;sD($n*k()juFr;Hz8 ziI}gi?~VGNRmI=FecO?cp6(v@$lNI~Q1CaCx>yb9hUnV0Yt|Ha&6YGyyK(bo?eA}A z@7|TwuUmXE!-9G9?%mejO*d!FlG@j0^X2n%f1|y^y>80su|HT|ZNIim#Pkl!?UUW)-A4YV{2;}v(0O(->r{4Ru&cy z7XFIfp11X$&~7evHnvSAI%Z~K=U=^e@nXx@H*Xtwd|dnHJ*b@b>C>khHzKmUn-u>2 z{T}~izk`=sc4r91r=TN_LJ}dZyf;SU> zNec-TJvhL40W@&`R2Z~>D?YPai%U_$;TSr1bmydv^|5+o~^5Pfy=*bB<*(4=-FFQaT~zJuLCYIDl3q$lNj)lvoUR|AmU%|$hI2dL)k~M0I37;fzjjNC zV`QYHy6V0C_4NS(0_uO?Utce8X)u4%q)XR&_W7t?zI<6&aZBFaUE1O60(OUognW5E zzkZV0yDm{}0jIjUx+?*fN=r*Ebi~BOek|Qn_BQHIAzQPc zh{%&CPriJ7d|c8v?ZxZY{IXVGw%@N?y>8t+vs|hFEt<>fWOWSdelmJ`dKS%$`T9Tk zz1`zQ7Pq%E#_#^3wy3G2;gZWrw<-WbV=6VDDC@Z?}Oyd9~nvc8Arr~ zrKf4QIWS&C{EVPtQBfUT?hFxIl5k^MbQyYM(zh-hS+4 zd|+T;K){6?8@0eEXJ_$Dv3-*#U*1#sxno86`ncIqW@Ti&=nz!? z_V)Jk$B%_&WMbqecY#g~KCQq1&aTqeS67FZzrXkP`Sb5DFRPcAmwyXPQ4-={`TXpx zv60cO{q_Gl1eKkfok6=eDnF;CZF}O}&bP7NYa|`=;Dm7rXmtx43X%Lc)VRm7mYew+Efmn16HA(&XcPw$zx2M4Dq8$Zbj3%hnbz8=(6*u86)*S=;BmZtf2 zzgCvNzvuGh-{0zI$5e!cCo8-6`OG$Z`||Q~O-;>Z%a&ccb}cS0?x|K`VWDO5Gaugh za?{r?TBKCg7patVxjS4&R`zBz%lkV!4|`6Ol9Jk8{(hc){lAsL%h$#34tp0GAAf&u z^>?pxidUBV&(FQR&3Cq0?zcBLH>aOZlWS64bgWmJU(P0?NatxoLxZ?}+@Bwh`yU_g z2Tic-Uf$Vx^7HfatL@_F*j9f#JKJ18exFV4uP={}_lM8XSRrF>zTLX~odIZf&?ND9 zSx(;G*|)dl^6~M#zP5IE!9%8EbA{w%J(BkSekfaCdjIO`>a}ausQJt=NIxf2CSPCw zUpIQ&mCM4l_Wyo7etms?`k5IA^CS%t4$QNyJ{8N7aeZB^i_4KCox(G{r=K}ymV4{W zJlpCE3mo6%+1c4CDk^r1=_dJYjsUG@*3Ul?Y?xtF`Kb*&ws9b5%l7U3 zoSZ8ymWPOf4p2;WcRxN$o+Ci_iTUG*Eg5HxzaAG9d_jCQNz>!{{1sfKeuN8c~(;qF|lo_r^V84Ubs+jyieA2{{HEv z#m{`wgk+U&?W^5=CjXR|msiremCB36bfaYKYG$ndnFhMtG`->GB^YqrqT9@sq`MIh5{k=))q9;$DJfqtOI-}vv&f=?ImoHt~D`Pn+ z^4f(99K5_!^90t+nKS3cjT=2ZJ(n&8MMs0q3kQuj?p3+FE%){k&&iJ- zKb|~k(y3FY-n@OAo11H2zAG#wWXha5bEZt0GJE#xM~^No^PTNgzi88@O+i6HGphM| zdwXwh%gs(s4t^QR`c3=l<;$D5Y{|L2%y;d-8y>#CvZh%gn{`CEw&&f|`fn|5Y;64e z+}zVTw{P576S;ZWBfI_oerZ>G?W+0tsY|%cajioARGClP!zS$KdGh}GzMv=ht~<&Z ze&m7D$<34R_y4!cx}veq_wDK&FK=&E_Z^ZJ1q(!$s}&`rrY>E+{J72X@8|9R$LuaU zd;R+K$zCBLA-}%74F1em6blB~o6@hZi(Os2e!fwv*U{c<*RH);8NKz)nKL=LxicL> zTlD?r*;wY?*&!vT?dk8oUhTSVPcI1E{CP$@H6ugAvQyC6*LUqD?T}D^`K5~%eL5;0 zf91)$7+zl9Y7qFns@&MX05r~b)mhar>(kV*hbJZ~zuB~TbFp*P3&9GepQp`F+`r}Y z&uGH_rwa9}4;=q4!r;lr$M+^;<^o! zwNer4v{>U_$jQQ#HYNYq%HZW%b44YeyaX*-(2q|GSCzlQGC}l-{(Xh|sl1=2w@cOh zTV%~pqb|U)@7F8svae@m8VB{9X4*7q;>3^l|NomF`}X?!_@gt^elD*5{_f3|8|UZS z@2~uRbg-kvYN{3*lRJ3A-a-p;$eZf-Mh>%`JbPiauFi zhuir#Z+92S z+PrB~Q*-mqweE#qUtL`tySwbnrU;#BHvXY5b#-;WzrB5ZaWVV#)+N6Ae+bmT1+5L_|gDpAvF=#kq^>qFCW6TqZ%6@)IO`8(y_Ws^p z(ImF%ZoN{TW_J%CKD<6|@2N!FE^k-Y)Q5*!&+sI=e0g6=;|BZ1-o|ba&&a$&776`K=FzG^9lRC_Wv!_Cl$+jdwXwcmi;(?`EqcP#@*7_*HqQiiX!?SWnEo$^~cA@H?MY!>p$ve zsTAryDs7(E)7hE0y+^`u(Y&-pY!h1kJQesP&hhiK>C#i6cuM48X^PyOwl(8o)7?## zpPxya=M_XunpE*=`=igZU~2)MoP2b&+uPfFW@v2e-Bxb#x;(!qIUx=fM@PpuKHFSf zUAe_{Dt>-a-5#pBVxe=pm9_Qe)jyOS=hglFdfootkLK9Y^78c$&qOnnw)}a@^+`P9 zL_D8nC@490x%m6%e|&WG*RNk^R(YsI?J9YBb94I6wW|`l`}*b?CcD+u*==66Y}vMi zgH6+Pql=uGUH|=V`I|i#;E0{^?Cfm)s4X42bGls? z`OY@``{}fP*Y7`~^FfUaZZVw%_Wgn!EXL{QLM|vq$jHd3+&}yO=kxiR!OK!oQVPN+ zF1mF6`uz=w&5ezWo3(^Gr|HMneR|@Vw>s;9i&CJ6$B8~!>l?afXPeJAOlF&}Zrseq z`BU5fMEnYlpW5lCW`bh*(Z(%XVm2f&TKDS-%32g8e0_CwMw(}vm$&!#H#awzy^SjK z3tt#uQTZvQyu3V*dv&+pT&thIe{WvBK5p+Uo61j*kM~>ZcskCUF=I{q{&})JQ95Gz zx3~Egu_a8HI%(3RtEUg z_3E_#{wZ@@)UBgsA=ADPBxnbM$EI;X^5|3IaUR zW;vkRVcMZXhg!MC^KNWlyuL5%^v#=<$NOX_d4im=V8Mb99}4bd#<(j@1f8nA*sZtf z!vn_M7mply(k@>Yuw!}O!iSFkuCYJSzasN#`#**Hi?R%?X(=gNvaV`XS683xt^f1! z_=>>AdH4674GrzmHZ&}}v!jrmUvA1C`?FWBlw4gEYG!68Bc>M3)VQGj|3A>=1-qxx zqR-FIv$L|gy15la%uw32VZ)7`#mie;S$98ue7yhkG~M4HkINgrm~zF)$Y|gHf4?6* zc+k|uRF*v3ELTh~=Ef3FVLoo=1jYJP?w{R%*6KdVuXXq*w2OJci!WckOw)_C%DZE6 zlC#dP=EsM_{Pt@iHa>cMykF+pGKa3NuCjM`K&y4GTnQ;#9H1d%Q}LmVS6W41z*OSi zy?d9J`A+_`vGV`FzfG*%VQZtlzPzl?#~p0p=H_;LdwzLw@#H(8i`!XQSwYvqh#O|P zstC2Vwe?9FyM3C(Dp>mNPUW>Vk+*K$iV!rLb7*C}Clc*x1p zbZ>7pJ3G6#AG5bh__`QQF0Nf=Z>8?ZuNIS+w=a8hBl&orXWXU>moG=}tNFPh@$i)^ zS1i`7jkC10)Q#S@=8nLH>3XqTTwJ>r=SUF6IjkCb_q+T)Y_Q>grmQTvqn&(o*l^{qprMFD;!kNoZZxWA%w1BBG+E+1J)& zUS76z`SR)2rt0eI78XDL{rx@Xikf*_TU+t7Gn`yplVqB#wY6U#m#>f6l;Rl{Cf2@H zv*r8y`}%QvDt>-?I)AsHgs7-#)|C~T)6Y+vHtp0-GuEJxkdhY{7Uu8&Yi4K|SX8|| z@9s4H_;(K;90*NhFl_`yw7z2fYo4Fl!YA%`h3wR0aA3Q1>C(3R`~TkD-0T(a>*W=- zHS6lS*xhXWa(DLE*W23KT24Q1?&|6~T|b_Wmlrf6vU55M6Jzzt=ZD+*SBI^Ab#3kK z7Z(>xfB2%y)VLt~`ntZpK6XAC4-b!o?V$a@_x4uD*M7aaz_Izp&eq1S4-dC**svjZ zx!+W2-&MuW&&``Ruln1Y#Pe@IefngUd#mKbgM*6BZC_qr_b-}}dg9b6E^cn?+FvC* zFIzi1AHKNQUHiqIXA43m?BCk-XKKrzseIrRGQas9gT@}v!oNE^L8tKCRTAK^Dtq(e z$w}dp2Pfa(Uk^Is{qOJZ-{0N_9bv}%DRN&{YHI3SyV_r0US1YmzBe#9`1iNl`JirD z;bXUx>Fd_T@0XL8-=A@DQP|q3liMS9W?foxvPaTbNm;pH&UV)P`R8-~e0h0!U+r%` zdAm2ypPQGwxNvQ4ba9k&{E{V0TH4y;b`~wY^OU2u_U}yN^j|-IaIiG##qP?vz3uI# zrQUB==ilG=_viEZ-{0N_?IStZ%q}f0eR^*}ou{uaFE8)fipWp}fgitq{rdge+inW? z0sj;CXF30?FYHG}KZ-M%-W!wM!`E%jI1<;L4FE6PY7+g4a&d=}a=e7u)edX`(eSCa; z@#4kW`)=*2{Jb&wcvN)s>HP)`QI7wv$$Z)#b>jXi#ro8yllPO4_kreXAFVzSFSd($ z!3r0pi~9Tj6n%W;TGkz)!NbENW1Plw`LnTs!3?w9TQdxkL8E7%o_LY`2HX zF3@KB*VkobWto|ntjgc%SndvW4h;$dP3~T}aAC@nDP8NOBqhJTxq12a?dZz7bq#M`pSFM@H&cf6WUz2@@?&0Uvl+8z*S`}84ZS+gw))qvU&oFfm9?+4QBqoThYwT+ ze|&UwWAgEml9D@j?(EsK=g!@`U%!5R{W^OE`_G?0H*VZ0C@2^h7&vq0%=x#^9z3XM zV6Z{$Zc?KIXjhT5^Wmx5;hVlYzq_|LIzImX-Mg{VmVTZTpz-FyLg#iq*?G3rWiKx+ zoiRh=*X3ws!s;a82G;R1C<>u+>SyN+ETozqukgF6F82Iwu-f9O2 zhuLPiSw9S~Ub*t;&!4KVuS(zF+k4@{g%v9_PKJZpnv320J6a}L#|OPA`$?@RIXdi3bgsu^3{G(^0oXHC0S2Ze${5cqi~c*oA2 zJ0F69)4~hq&Yin_`SRhzhfkgI3Y0Su?R4>C*>fq-4@uaKkjoEBaTOo8S)-$@tZZuf^(Xk05Px6a+Ml0NuU@_ZI_Q1ZuBwWPimIw>PuCh)T2|iLl9`k7 z^2LiaQCm-4xf1e<-^0Z?{ai})HEWiUy7rl$T`O0v%sC%^>eQ*Y{dIr;{9m$c*|MceLuEeh2vSp1^Re2N ze?LwwG%`AReaz0HdwVL+oD7JIyZ7wu?CWczm**(&$jHq6`SYjY_7nGZm+LDkHtt-a z?5QJWeE#ykPp9>N{rV*)CN^!_v^SNxi`{y6X#9znx35d7n>GWqiY@GG<<7>&#`bpi z=jZ0`-LogV4Y{{?UI$1_3YWRH}%U} zTU$FjJ8k5}b#!%o{r%JbGtalLpEqxwp5@$VSEj}ThYlS&dGh4Vn>Wv#={cXinjzHT zpHltK)<07fpXi4$-enAsNKH+>y*)qu@y@`-ZqjBsD^BwEUKQeM%brm1mrdc6mGqg zzI4@sMT;Iid2(dVlq<()FX-+*4QlSMi#fT*sJxv|-Y#a_d{@O4D^?ivyL7oMdVYTX zaWGiEbZO|F&ySDy^UK*xn6rPE=VY}>;sb?*41#%h;7@p zo%yO49ew-PxqnfAzfA?7U+yvQ$cojgXV0F!`FXu=)RqZOZ~`aDJZcX=`oWxog+08#k`JR)1=|Fd!op1fITs zKY!}fqjQ$2sHuh3%$qiKCJ1O+rWS5aI~%nnW8v!6(O)Zdopr?O-}P*}Q{?96Cb~U7 zY{}B4S2rfRKMQnTH}80I{qL@>u6OtMpO3jv@%fprXuF8GIOr^bs*{1i!J8lbSN}af z^6391BK6W6dU|{3&Ye4V&YYZ_oF8SvY7JK=>=#u8rw`pH`Wr6DG8~;SZ(iM>ABAP5 zFD@*6dwcu(>*rUjTlel62)MZ75RHAjqkN~o;Yv-)B%XyU8bw4S^4WrW=zbT!|nX{_ti$f zZG3-!|MWRLG4oiM8fVUwG@dbe^Je4vcfnULTmYZ&@nME#aavZ^tGU+YlO|6N4h{xg zx_MOeXb~4T2x!ke;?ZVeYU=9)0#RGDo<4YxkdhLzemFh+1)!CfI|?5^`FWF-33S`(Y_r@~j~*S$5$rw+a?76dH;3E#eI5s^2wnYq*-$pD zwzl?L$&o{c4&AshVFf_Ga=fF)^{VQCmT05^R{4WysIFshF?RMd@2&!n5%A zN4v#MYa}Anu3Wtuy)7p*De2I^?1Y2{cgcl`&i|C^MOndpT`%sti~$V!_x9{8eJ!?o zSHeN2bI;9%I9Nc(owT)`Im$aNLPt+a>(`yPL1$KZs3helul|x|=IiTgxBq@*R21mW zs`vNyp2>=ch?uSy`y-dQi9z_q< zg{=i0<#GM;^GW<^Uy6i}bE0hUgRh^$PXbd_T3LPsBfMe8-^CaCy1^=HUEYJ9pl^eY-f? zUzCNZ5q$p2GM~2WM{5^4x3{&m8GSEXwj6Yl;_7QB1kN0f*PMX$&kB|4ivGK98vMMVpyK{|sl1hG* zpNGeT4MGg-6zYF+{){d^5pU=GuZa6D3i|=<;NR@7=Ai~?Afk2VZTlLpQi%5m=9#X>DlKJ5)*SKQ8i%YqD4w&k$bd=Lwe4zt8~|JEbM)xa zTa*6CSATmW**?`{?UE%b_V)2b-jR`!J9nG7Dos?fGnp}Mnwn7OjMP6l%|cEv=O9co zKeuq_Y3E7zMNa06U1^y*RdjdF^K-JTvo}A#xjFsayLa2RZF~6e;hAaI*T+{^S4T%h z&9kkZc5~9)xo=;;&d$rL`|%<1oz~Q2bFIs7qy>(!#9S65QF|4*GVWl!DTS&?C(p+`3uZcR-|Il^c4_u*mo*4;IQFE4=(q+Gsy zxx7_L$IYU@zrLP0abkP^{eR#0|4-fK;^GpsyG+;G+Sz zboz<=R!;vuNq(9h4T{>WSy#Oj1Po3W78Y`Sf00~Q_wUNeU|U;T&`e5>rl#gh>+*Ho z-KTdJKcAtSv=MZ8``g>w?W?|Mluz|iwzHe}w=W_hV#9sS6^e}x3X-7lvqu{wG%G4A z4VkUKzPmg7=A&oN(o#}fT$tJUQnr=6xNz{wl_?!e%*>)M)K$#Q&Gq#9BE`5`-`?8# zc$*wJF-U&e-Zx?Yp4LB4Wk7McYu7F_GqW>Afq{WFH8$J7Ubz-u|95Nh@xB)?UZ{Fc zGw20fUr<#m~-YYHKSma_^VZjo)WuXIFP?OC~ETYs~Z*?n!6w>hJr}bl6K| z`jeZU5fL+z=GI$VTH4nC`*XBgoRN|7jF`9g>HYuz{l2+5{qgbs^lcK-()N{~R5Ud+ z&&{#C6B?DBn3$-ls(NPA)~#Eg+zDs!VgiTeF6V!rgg;F$e!<6Z-}6|UiwjHpRF8wV zZq17P@aa>M)b_BjuroIf&9yF1b4xTeH&4H{cdk__sHR(YR|toPPe$;ltr;A`a$c z-rG}IRP^cT>FJ;|O>#1?tO$&WxpTBzoL}BoBeDAFK>t+w!qcsZwkpBQ&BA1DX;xj5Km z%Jk{tVq(W~ZMUW-CO&-pSlLp1eEFInj4uP3ItwX z7u)KzXQszW@9BDPw*UM3`Z|~SwgTqQ@9ys2Tm600>e^pl4xTsD(1m!H_2+5r6Y=v7 z)LVU+>!9%A`}g#4|2Y=dy`B#b7&ot3wCK|Q`ue=rff=t}z1my#H7Wf2 z`}^~!OgWNhd&);gY<>Lxd3zmJtzUnCWw3glH`4=wPt)5c>^Exp^OXOIe*FS#2CfCg z&(F2BwVf#{EBkh^nSJM4_mfknPR+f$YijJ>{`ZONQ~0w9`)wNkJmm*X)UH^uVuSD&fr}HB z-GzjOE!Vi81g$|kIa&S8CIrH;Yp!(aJo6pY97R@eu#P;Ci zWcAzIa+AYtZEX#&i8Fkf9zJ2eQTv~#%un>!FR*6lT9|%*-rDHxY13SlF3vK|?&|8Y zSnJ`rbjcDAJJD> z@v+10{Ligc$1=~7d3^Tj(;H{ZE) z2Xw4O^RI0=H;Zm;NW3%c%7ibkub;nkX;SRn?fLhAetvGb#=SBnHTCRFV|8om*^#1L zt@rDGuiduIY9S=;tC<=TZf(hY_3G6ev8xMKtXkza-)`>An%NsOFRQiAZj5|b^W#I}xjB~W z4hupidupNRJZRquBh15}vV`EqV=)7{mqnqg!!|xv z5xzJ<(Rt05V^o}8RKdGh3& zy3Fi+U%q{Nwn2rV&gowf>rZX@6Y-#`2{gd!5fTEri6cEH=S&{xWbdo1!!30@B|BU| zQ=YN=>*n6Qv@&>kLj%J*t*jG0Jw0h>W++-ZexGMsy)Eaa5@@NxD#xlXFF;f4ar^7e z=DobMlzSOF^9qqq(}hpOS33PW#rtXc`3tfPtd~~=E3WBZjLb5>xmp4o7Hd`|X5ZcQb&h3mNona#-R1uC=b2_tdvdot zKwN3!iyt2!8>gQG?cCda@%ZudCnqNUILP)x=E?dwiuF(Ve@5S*u>Vi{I|dE8Nk<&xhtGF4w-l zzb|i`b|!!S-?sUmt-O4F=NhG+0<9K_i8+%8nj$m5Uvt8Yu{v&~YsySTWpKqlp!Ph1I1Oni9W z{=ZG?sVUR-<2OmqojZ5BZuGSsg~@!}!DhdH{rdd;{QFBwyPq6uX=&M*d|b}9YRj56 zJ*y9i1Qr#2I?^dz{{CKUP|%?~6BCm;*5&J#FIR7GWz>*)lHVP_?i*|^z+XpDJ`8W0 zu)mA-E@MDKT3Xub@bzZq=IPs?JbAJvZg17UKR@&D?|ZtzpjAv<+`R0~jmO9Pz3(|* z-^(3+uZZRX`= z+F@%nu2=Q+^~srLUHSR>d7ES6`+|_mJ!^6YN{pPM(wdz!2 zuGhJ9=kk7jdU|(v`Sd$KzP!Br@$vEZH#a|je7rwK^jLAyMhh#esy{zI{{H@c`kpJ7 z7rAz~a*MOEv3c3q@iKs>vlO4`=PTAPZT=G)Q?Z+|b@}4O#?{~6tXQ$)?(Xu<`ImqG z{3&gg!@*|6QeSds>9CW^9$%}xKuPeOP?bz|-(o%1Azd0VhzEkh$iEx1= z6Am!+ykQL}KM_9@+-3%?m+IoX%b1~HV`KB??c49~?pA+(=3ADWlk?`q#l^>arOgW- zIFy!_@|}LX`OKL!@pV64i_WPi1qBC7o8{b?9$&X|(V|14i2;GL&2p#dMwk8i^3r>{ z-p1+Ay1KhTYsbI6iPYC$f8c;adU|@Q+yixM>)&5qUQSF*ym|BH(>NnjQ(5CQpV!yc z?p(pW;Gok#FW#T49VYC*>h#Zy=LMg`;f2eWo7evO;y2go?X9idvNk(6Y$*8s?QJ`s z?5FSFJ}-x63{~IjN?m79+|Q8W0}N&%yEH z#>U6@_Ew)hdq74I1THS~o!!vDATKYUx?A$=(QfgD3m1y($LW0k?Bk-Pr3G3-cYFK# zO@HSzoM8X7ecOcnT^v7uTb{Vz#&TahBO@jzrm4A^U&f-~>#NYRgj1mj~$EK zQ}OZV=jW63|Ni}cUpssq4=1OjQHsa^e}79$OLuAo*&Rvx`1kksetCO2QPI$kp}M+j z^X~2f4g7mfR{OM`*I}hX{p!{~xeTB&>-^@HcMK*DR#sM%)qFpF`ozV_S^52)?C!lw zmOT0M6EwtJUS7`6!}I3C!sbn>1%-tlr)q~gIXj<@zJA4zrVlV-_z66 z(V_8uj~-|NiEZ__H+Ob!Ubbx6pVQ0%epjEZZ*O;ZaA5efUFOO9B*%YB_0k3<>hSvif4>*y$6W-2YuBzZGBV!XT^`={G0?8=&j}lzX;Y_$ehjs?-u>_I z@A5Y{0&n_VmttsiNXP|&zu(^8)(&5HXIJU!6)QSww=P-I@-y@Prqu4%R?xM!)2C10 zyLay+yK}$Z-Q5kD>H;m3S|2iL>eQ+8=ie8PuTd09ij!mD3z@h-5DczeyVls)XlG}4 zBL2zxM^693TK?oRT##*O^Ko_tZ5)Ig>i+KL=Jfe?wOT*3ii$qHy1Lrg$;qnp)sv@B zuY$%uu0K9==1fmlS65F@Pgj?go}S+KRRJ1ruB;6H|L?D^uCApff69pyCo+C~c-YLw z3u?$r)ehI{Xa|zP!46`qU|}c~2P~T(3TRzbbTf*}FTPe_a2WF`S5hlJDH~j=`kHY2k&tAn+Ho zD6;%rOi0L-C%g$WXU+s~Ja{)})~u+*JJ@|xgg`0Mr+)h#PD$_R=-uh(=hgoDl6h^- z%sHonQdWxpYoyhv8EMES~a;da=-kVpiUcG+ZJwKfx&Ji5YD<<%I~`|rA=Nrh=?pdri8|0mCyHEa6x@UMZ8q4}FPZ-N%tp5ZZn z%Jf0<)AR}ZPci=F29==!R&H)?i{1PAI5>6`Jv}wQ{vYTh&#vE7cC&+4)J~f=4K!?c z@#4h#gYysXTduCE3Oc}3PjB6pEnB+&-rkn``|0%fT|0Mbp86?vWo};|U-3gf6``d| zmK-^H^yu;9=_x58yEc2MRQ&|?h(M=U=%;meb#<*=sad=!DI;UW+O=yJFFyR|v`$8L zcKGkdDq^5pM?QW2{Q1+T8TB(;{pZ^)UAolpxss)&rRkrpEnBw8$jHo@Ge<^N_Uo4~ zS%2&q8SYFzbH7_$Kg?>LxwpEplV z8U%iSc^N#>BP7rKo18(~)e|Q=UcNDUe|>HA_G!0888$}DnLGDvSy}dvdFxiLeEH_h zn@5i>Ep%=_)+>E_dB_9Bg#j7KAYhzwVgkRs-4XCCf_>ee9gnUY0j(nj6^)OMc58jR zc;(6zo9v6%uIXuNPPE}ZdHVF~AG1TFb)&Wv6crVfm2KO$?bu7x1}Eo#O+ksD%Rf9g zcq0CReF?k6N=_CgV-VQv*v$6y=~LSZ(1zD%|Nj2oxpU{#cmF|$7v&vmzS5D+p*Q*>y5yGi;FAk_eID!x3RHtYQ(|-4HF|HBSXW? zo12z)c6PS5wk}+_kjLJRp@8ovw-?7x?mz9@bsOqmzIagrx*K%4-4$<52eYmf`9%Uk#u6wEo?G=kdX>jtT-2Qc_0hN}%+AbJNm|8x7B`Vw}SM zNqh?LC-DmI`*jVUTAUJZZ_B;CE!Vo{$A|Cl?;k&U6qJb0H-{SD3UFPzbm@G%+EqVU z+iwYRupB#f?95hiZ*OmRclX@fw^hGl7VxkzHA2ANy|$ZOb;QzBQ&Uq?Ks)w-{`|?x z%G%o6%F4?6hUxeF=XT3hty(n=43;fZ`>nru!OE34w`2xCi)m3$Hf3hmK4JfYITQ9D zkbl9)5VACKbDC|{mxS=*;^NDfFURkzIXQ2Ai0#F09!?e}Wo6~f|C96b@{*F8zL%^B zXKGyFIa$qjmPuhr$(khdjS*+=+&?jArN_L94}@44JlKD7pW^w+9dqzJuY>N3SFenw zo8Hj1w6r{P(yOYf%FoZw(UI};qg1i1(&dY0&6>4s+qP-b#D42vzLVFJ6vKiNI+rsn@cZ)R%NsDzstwfcy^?gQIb>Q2! zbL^6i|Cks&81FJNFfcI8)YMpdwLJ5$t(Knh@nt4=roC=rU|`5{J5dUj<~=fB|HMOs zwR^mernx5X{6OMfx*NWicBPnm%#<)(}b3|H88 zf$sNVxTGz5v0g6Vc5{i*&Pn0r$1dMBF9O}~wcy(YS&;q-L0__qZ2gS$gYrC|T6c7+ z#Vt14SaTX=gDu2{EZx-|YO%`a1FAl(n`Qfc@6!2?p9TptFgVCAum+hBz@4dL$p|1}JB)soJN zqF4q7231wn%#4hJSXPEBetv#@*Hur1I%=-n<^4K&rHjhhhxwmYE|{{V;2CR8(;wCV zm#@?JpU_}ElI&V1(kYwf0+T&qZutoRwU2$o^T!ez_MDn2BvTg||rp})FA?B25fc57bdv_9q8xJ);8#nN>> ztC>Jc{26NaAQ9{0lC-F~Kl7Y!Rru_iT#;hE8SVUEGgV)2Vqjo+!URcMRdYNiufP1Y zB(pD6_)?AduY;n(VoVGTOwJvkI|PGH>n{y0&ve$A+Ofp)&haUA-xh9T+oZ?Mz~HbC zk~p50Do$M%xBU71C6?Dby3NWLKHS#A`G|pG0i#1XC}yVwR_UGH;kZ0#iDj6B$-#+X z)rs4j7#K1vpxT497UdRx2^M)e&7-)Y+L`O4VtI1pbXEq21DfEp<N14DqdlcM?d$LeX9o@AFOJI_kK+OlPVvhEv? zs6Q6TPXCw~9CEMP)PKAo<8k=l!N%7@3=9qvSFBul^VY3XKPNw%eu-c3NsY^?YYyeX zUO(EVRexA&>Tn{SfnmkcsHgh*kN8ARU5~F{yJ*p*88bA5I(MvNWnlQ>7ahIZf4&{4 zwf<+x{^gghyq@yQb5?TimW*O?sXXtR-9i0-SQ#2-twhvMCnYj>^z<>&yG z7kms13=Yl$ANhTGmbdUut1A6E&m1M>`g7?enR^F2oN7*N-MQxU zD!;(Mi{bILr4J9adc|M8bm`Wn)YCscK4xXIynhN57M!3kb9mU<$)tDT=);()hl&7cX z&b!m}Vt1vS6#6-hje#M6Q}H_JE~qP4?;ZKHmQl&;ugg94%*-uQn6ER+*Jvy$3}5+~ zQ!|>mG55tuk6F*oIA%9=Y|FoYZVMX^FRyvtof)%c{d#$MIcQIbjAc;K_SDnUK$m@(vmD$1t|(Quyv9J~ zy4hYe^YpGYuR4x`?qvM^>lat+p>?sl@9n9)eCN)eTU)cIO`A69cS}o)&wRVRTfW>s zt}@Fcv*`c7+T!A!)43TK6d1qrF)%bRY3nV1SRZy(N?}n){fVC(d#7Y|R6jU!nE%RG zbE#_AS=SnNap@K=Z&$X+;8jsq|NRpL*2eGucetH@d;Wd3MY7gq9^2SDJQM^#*VrHF z6n-=9%$YL_o!iAkMNjTdVqjq4)bgIL_jDKN;z3Q_t|h{v^E6jz9B6a9eYM^+AiYxc zOR`AsKA)BImssAp-gAzB!NF@ww7#E~SDJX@@@3GpflJBTTc90fGiJ;X(~Wv_YwPMu z;7-BE$H!N!&`2{?Rz7^=#*MRQed|P-85sWP+e9)jFm%0&vifS_diB_hrFM7a-Fgk` z8Q;&Xb-SDwFe{|IQX)IJK%6VbS*Gt_{j)PO9h=!aLHjBjo~&qjDk3gk{_2XRnp#_A z?%iFbK|zyNt;+fv#>v3&L9zl=4~Sf9cao}H`RiIkR|DVgg{B9}^@}ndR7zFE&AQgm zkg>|xmUGd1%UoW8iw7E++4*ENb{@TYb!*q(t5>gne|!75U;2z$v$THh096)q!0Eor z-RH~Q&{HSY)}3D}_argqKWpO_FPANL)86o1x|x1S=3SCY`Mzbjv7Yngc^9mW-u~*v ziz_wt)z!ZjI=63H{rcM4!@hGF7!HU+Jf8mD`Ip|FUw8NTzPOc;m$tci){d`TYO#}x zwjFYNwdGc~npM$`d_Os88{57- zXMeX#BI=d(^`Ad~1|6}#ulDyuWp^=g@$g;ednAqL%$+;)>7G4%B#qNT{u;{4$W(oQ zcXpj!wc1r*5m3{n?HvOHgT|ysMpAVXKY6ddUmRX;bba;zrUlbnl72lEyeYRNUU;eH zon?lxQZDY*!QD}J_UlV4OS zs=wu2mA`rS?%Y^EU*D;Ldl?uQwl+iTIy$lBeeT!Yy?O49xv%z1tytQ^f90u4?{2S| zty}HFoLi^u3jSk$W%H`vUtUiP(2%jOv)R3?=;^5`Q>J)*FDWmdZ;;5e8+3l+oja@8 zPG;QSXS=%xWN-m1sId?r5gvD`t@`Tww59&hyRX%o21r+`n!Fb)weZ^hf8w(b^PWxl zz^hxR?kgG@9wvRi_WRt~v!yr3L_}CretL4g_x_f&v$LL^oo#$tKYm}#wwy>&`LO8d z*|EnO0zmN%F5nFJ=r35{ef9k^ttHBPJ^SUAZ!kYTW1LmqVRmP6P~h5r(`(C;_r83j zuqiW!f9lmqU0tWv#qJIX`Ij3Qv#UhY#AM4QTWRw=85x-~>)6=Yj~_i+`|fbu&Z5@X zch}d?@9AP?U|1o029%??9DJVC&pUS|Vb8YEd0(7Ei_bL2>^-qC^ZLs>#hHDgTp3-$ zYd<_WozuGJ=H~SLdwXU^nwgn_mRmhOHg${Mk)*=)aeHs<|6^-olXriguE@0g29xK` zef#LqAs)9C>(~E(ch}m~bn7o2c?O0BMLR$ZA&~?1^4C_FUf8O7c74q(%L&_s1lM+} z?rsj+#%3jTajwIyTcP*XGH#5h`Sj#u<>zOi8_#b_J?-P`JM-!F_3`>qTUK1U%ffW< z++1r@6O$QNAtTDuZ>y`TFVDZf?~M&>eC=1!C}vPVf)jSlcZx@DL+*~Jq!s@L-atlYw8n0FaCR>`=592GdZ&BA9s`1UhM^y+cWMb zYx2wIdC%T+GGg~H+t-I@7$$#vd;7S~?OV5w9X+}+{GYazMS+5KXyWg0Z{OeByL#2C zsKV`w7Ad8tKL@S3`MZ*xM?yeKD(dKRW(I~8`4ylNt>SHahtyWKW49KX9x$9ZcmU~<4uCKFm^7C_Z zLu+KJtAB&G>e*BZtz~3jcp&x;)FJw}Yl>Ul^40gxE;GC|2o;Sz3TyOK5#fv}x_?T>L zyxHr!jA_=DMrQUIsm#pHe}8{ZPfy=p`}^AM+qbV?4ON)%+Zj}xh=RLPHec5@%;CHI z`cGC_uxQYcfTCQz>9ZCz-4TkC@{N8MJTpXHWbc_wck@lp4(7D-O!T<2GI%+tUfG&{ zexA5~+@Cw~?^RV*Wv$D4`uo$v{{H>zKi4Ys<-GUz_HN#~_3WurNn!QBUM^2PJ?-SK zG6seQtAmq4O>y_6MfvMP?n@~w5|zu~EpYY`ndbDC@6xjBOIz5YUR?NS_vN{Q+*Y;@ z4-Jubx3+q_KD~ci0(6V*n;RR?zg@Fz*|zNKdfUnc#Kg+p-P!5&-NeLXN{wIQ+gn?& z_JLY@3hCf1@*^Xi$#-Aa-#oizB{%0cAAGC$RoHj8J(OgcWY~Rq?x(7zmLzAix*e!nC+qR>eABFZ*Om( zc{T6uuGaSU$1|B27#{G0bI6{_Gdwrvh3%i+$R_)u^;*Lo(did&No=xKNzFd6)$%Uy zlK&-B%d;Q+`}=#cy1$u$!G#MKE?mDZZ&mW*@$vbxc7-P=slMT0%D=ZKaz{a;sC?zw zS*C1kY-ft1qHbMU>aBgZcc*sa-0Kg1eSHnu2l$Aak%3`_I>et#H}u@;5B~G})%QPd zy?>or^^cp0)7&WIld0F4DbFHmOQSA#?kk>9?!0`>nw*18tZ()*=qwD7kdXnM#o*Ns zI!ft4BlFDEMh5{w!G{kY2ELq^wDHD)0}mb_??1DutLxO>>hE*r%+b1A`S4I{_VsnC z(`K7ye|vIr@-pAq*S=|k`tAJSM*RMo`pMgDR@7}T{I+Gc``>Wp|IcF?&+c{oy>!;v z2_5@3F73T{=S-MI*_#`CtG|c+n&hBhQTyvl10%Cm?bZAD|9^Q||NKlrSy^9aXX5%l z-d_Ix`sSgH?d`|k-rnAN$m`vOGw085-@e`7*Econc(3&K>hJHQ>NOb{7`}4&i!m@T z^#A#}$Zc(-S#PHI^k3`QIyyX5mfht)`K@6JNbqHsz3ivQ%S;P?d`R483ffbl>OJku z3`6JW-}i%#Bz@eFczDvJNm{mLudl6r!@*QoSor_v`FgFpZyz3RcS*_0y0!H5e)}nb zfr0aX&yJ6du0Gx;`{va=+v>c#yFy>D=VD-3AP3G-H6OP%xW%ulGdER~ed%kJ^)+5V z;OPG4=hR>BE;yyN>gz@+tu2QpKia=gF74|382_f`=1z~$(9-ksYz++!L8morO7(Vf zYTCHbaI#YG&d*Oz-@KZn>V4_bC9QX2a&mqyy3yNgik^6EPCMIi z;@UOPfZKfSmHGGgIk)j7hO7I{iHM2Oc{-h)fkD9<96$OUoyX#qnVZfyR4`S1r^MBI zM=$;5Gt&OM%Jv04vA-m9Z?~welw)_Sr?cy|siDumyuAGR`FZi~qcdmD{QmB)@}k_^ z+iHKm-TsD!aoV(L>V9()mh0}R`ughPVt4Jo0hgEimzR~LP5b=m)3H9;=&&%goz4*v z62^-f=gy5iJxv#K%gm=8J9dE16$yMeO*i_>moGD(o||j!{eLMF1H%cvW1!M7?uMNE z<-Cyn(fr1{OgdU-EMH*P*?A}^;~1~k`Kiwegk^7CYHhnQ;m>|=NlD4c>i%}s-*g1u z-rIZoz=4Dl6BM^?+tx2MfywNiWftSMJN`_#U>-{NIY&$zgVFO->qp@9D} zs26|y+5J_4*$GX|QOsXoR9S7c_v%(!n#pT&ZNXeS5y1ns*$o|OXJ#Di6FHD^ecj#X zW$*6q-@kvq{cfwoLoJggP3qdca^=do7KMxMw5NV~aZ%aKObk>DW-x#{-wb-O9!u92 zt~Ikwg{=j+`u^Ir2D4=lW#b(oH=twNLcu$n1k!Vg9kUKolTmyb?a7PVd3blS*rb7j0_Av zSU@e^2W>N6oHqV)y!+MnJ2z&gm9O~UH04Zlxyef@*S*u8Mfi$Fy>TnHDlmvnX^I6+Eg2v0&ty{-0XOj^2`}_O)XJ;f&?&fD;V3@)PZVmOWEi_ro z7A*12WVtl3>ROrL z>kftYK{E*;lqyF-`fIy z+!UO?%x~_l;2XzOTzyp9!)-IS5(|>uf)S2LdW%9fm*8Fdp za(HvU$=9l0xu+{UG!{s{&75idawVwuZ&URpiHM1@ zv9fM7=a^!gf6pd5Iy%kL+Isff*$aXg85!&9>ReJ%Q%fHnV%@^Vz~Hd*!97L>h6(ep z|9nz0<6gLV>%v`JcR5v_rxmSS`LJrTe{tT$h3Y|aa##AyO4O8fXI=|QetvH5=kMS3 zwY8O%e0|S?R=(xm-#5uxMMb5evhwM(f7VThK0Q5M|L5azFZ(N7v#;+ee}8UW+`gKd z*ROvsp8x&k=Jem+-^XuAXq+bI9&gFOz~Bxp9V`VqSH6$j718|so_Y1<@9|ga9eJmF z`0SRy*mQeJ>`&IOSzAmO%(c66Hso6B)f;bbZ?CPb<>uz@ToJg~?fLon-@mPU;x{RF zciBc~p{$Gy6%~~mH*SRdVs!77Dt&N(G41BDV`_GGalyfx>#{(R9s({Bo}^^Q^hPn) zt<7-z{cHWQhr9mw?eV*Cq#!ejd6w3eQb^&xf9|dNTJ`Y}>&=q#^6#HNFAkV>)Y^?hu|WXwGB{LlhvgJBgqi(+!NwCoVMX z-d&xMv10xD^_`uZHx*4yORug9O*$U5GDKcp-fFI&S^VBAQAx?07MDSG%wp}~Q)m&$ ziZHi7cyPn5-CM7=?5{HUlT)X&)aJ)u-W&5U2^^$Gd;@87=VWngCK zLaJ6oLbnQV0FRxQ8gO{J1XUom-3%pIe_Scu0R;5}~qfVQPy}q{g_MS>(h83$< z-``UitP=XLLr{5L{C+>V+qZ79v9M%hWrghpouR*e{re4xhYS1}oj4R#m=-gGf|+Z6 z!@uhX-)FzIE&twj^sRKAlYQ3}r4M`!#TSG4=BIJru5RFqURFHGAtmL>sj1rU@9jPP zxHE0}n_F97H!`!!$gb86`}ptgZ@;-#g*#&yEXv>AInpWYYE|?1*VS9MX6ZC>F!c5H zx%bIjyn5Bt%xv1r*$y0vEp-tRvY^NfC~G_L>G{@j=?t!No7o4KeP7n#e&AvMhF7dl zrg<9Q*(NGe(tNM&>)c~!XPdu$3tA_lBLC^bL(p|M&z?OCyWZ%vH1Ea+P-ieH{_WM( z;SLTA3?*-Gf!1n;?*I9`XlGYfmkgi#50%L$&zwD*x-nwXd11vCfvk-N?-`sp7P5WR zlMUOuX76l1X}>Q=FEqF~U0U$kb;f&r-;4&|cHO%V{sQ#@1F`FGl01 zI1eKuV>27Ck~6ai*V6d?b z%k7-)5E}aR=H_&MIhz?4g^xZwJUm?|QbZv(W6fa z6BqtC#3Lvu$Z#OVDF5!RtLx+KKc&3Bws!O8rCw(m1e`dw+LToKGbpxP;Lo^e+%f6F z!koZriIi&(CTCvbXz<>+;fZ9;>gugd3&}`PM zsI!ax=G*z&?P6}2KR|| zKW=T!uB@zFwQAKN@rNHP+WF<#7{bG^D>}FFNE)fAsku2jJ4Z)HpW5C9cHxdP2E~>M zJ+a;G&hpvs)7Ep|-q@1Z`=}`40k1^4|EvoPy-cU)Dim?`ObE`&-}H zZwQjh;bQt-{NX{j$>H6voKLX)Sk10soMK}rDmvA+`Wwfr-{0N}r?9Lz2f8tvxxD=Q zt6xi&FXvwGxTEN)my=V|0?&m3%Y0|6W&HZ_qoTTcawLzCu<&%9$W6u1{TLE9MmV?g zt-XBPkwdX%0t2{oKFKq`A#>k^(4gw`vbG1}d`zoY7(TqvwwTlWwJ|^|>c{#rDXxMe z%=7x$*w?bnkYr%!kuXg9@ZjJRLq~z)=jT+pdBfZTmMds$uYR>UM(_Lk{r|UZ-72bM zSWsA4`T1Gz%$YL_wr5^m_VUFGj#<0Q-d?(T_3EWdM#jds_g0%TXlQEQ-CMogFI7YU zRKD*LvRz`uiWN2$9}b*7yEZPL2bA4!8dx<5IC+>gU4CHB z=_T<>>rkOiVgze{!{3D$o|*iS);(LWJM2S=$eb74w{jxS`^Xp@Z|0RYg=jWF*9+}Uvu(rOx zxBB|Ylb%0RdflWgi&7jM9KOH1`}$)WC{S2LPIiles(`DSPZ};)cJBMQ?>Q&4Pxkw3 zi&&N)+;jYcneVKPIaX`l^LWd?j$XTAorO%_?(QL$}K)kFZS2p-{qf{w6-2?WM=>M{k{IlTF#~q-@o(o@USq5b(^N0k$Cuu zjYF|TV3HIhog8@MUSP84Tb{Q}V)**D`M#egMzdwdAN&{a!24^a%@LVz-`I?=-l{fh znXVttRi9k{`&+J~9aEyXew>VXo=jy0v$N`J*1>nopmxGZ zZm<BMZpwWgq{b>Iq+Gol$esG#rs@mN6Cbn(Q)MZhM3?x{$NT>M`*-TpsjIP{UtL|j z*sYhTA#82b(c{OtKS?RI2so{Hm{0;L*S>7q*BUBxMN=Y+&%Eu_|L(ktK<$`B#Nap&Jzrr|9GdJDT_4Kl(OH1F~u~bxC z_-yy>+qduUEn)J z6utJso+r}|&I;e~pV{NPru7-7Z(rDgMJ3OBIr-1CDJ(8l?tfYGtBqIs*_oNjD|`cF z?d|vPtNqP2t6$ExsJwjrEnREt>dVV~e}8+cyq!P9H08tuRMS{ZC~>vKtTDz<;%0}YIjYa9{&2;+Sh;8K;>&lIw-v^oc6SWrQ#I4fzO&yHaEY1@L=P?39qf) zL9ID6P-`yW^r45%S2ceG#Z}1dnfsuBU1`Lh|Iej=ybXPO*GBijtqIdY4{c~+kG_9s z+V+5BlhZ2rnJr$heVesuUfA8UvrN4MA|G5{?*HuBvr?(L7Z(;*ettIbI2RXJVq#)g zSeVf~C2-OMSN1E8e&lSP|3`aP->rf=hAkIY)FuRIl}umIvT&bJi{BLIpSG4&GdQ^C zIm}@Zm05Ku<={6tgS%oYe3fS9t6BNFz;6Eiz180j9B|n55_JE` zYwv{tC#J6msaz5PYNk$L`QR+2*b+5IvMfPkO3}YsD~q|H*4D}S)8pBM-(Q!LVraPh zH!2`QVX45e`|ba(FXiE_*xLGHrNQNOD_htY8jfqn|Cumx;=$+MAHK&*PW7@ac_Gjn zwom5i#l`N@=6O$wb{_AO&Az@aHX>q%&T~+^PVwf!t;`&XSA^dFW$2#YHBTmw)7{o# zvTEIll6VWz$lp_^TOW+KePz8jtpnbiJU>r&$0=1O4#g`W4?*R7R%hB))>zkz zldnHM_)x}1XnNp#ryiGujOwyK7O&=6cKyp<-{y1T2_J(qotV2yZro#bQZqSvfq_9n zQj)WeRhs2h*5NkZzP`RDHAyK3hVt@qaq;QDeE31-7cUE_F?2;}EZo<2c}pYOf;Sv%*8#w;dH&g9JR9_9!?XmWDT=mT)eW5 zY4`5k+8n>4c7U?L&qH%rITWuri54Ar zqmm-hU4PY+{oh-DGpPg02i|hAEV)v5@bEi>-|c#d9t?B(+fo@PM5&xD2o}BZn#=ih z7^6eao;^09p;v#!Ev<5NbewBlE@txn?r!sh0}L-`)4i z0=2C~_gEi@5)VkaQZ5DB!D^J+wSN8j54&n_KKlF<6o_9MV|SHQethJ5b}Ji4lZS`L zitM+}pjzKla|^Gu*@j zA-NpBCQtq)YrHO8X2|1j?KJy(x7bktbkTI$xjB&`Az%Le{Vi#nb|p%7!SLqt|~ZnwDpq_azwsHjc8xjKBkR9noB0?-|^j*gDEZruW{D!R`Nid|p! zb+Qf|3&nCDXW#g+D=vHi!;fB;^2N8R&D{C-9cWS)n6G^{Lf7oiRpwf%!K>&wb@_g{Vf`G-%|s->-MlCRd(UmqSi z^Yim>oXgF{b!$uJ$;i&Oul#i6+&RA`(RFqIW*8>R*;Ftv76@pV8OcYpmHf7_(F)WnsSRkmWUMBh826i9G+X65G;Q4?6S-UpAyfrXB4}gy5L~# zTVco6S8>9^gn>ajY)!`HWxSPhX3yT8b92+HDy~gzGiJ~Bp3ZUM;>C|=W*Rr8RaNbp zJo)mwySsnZ*j2VEbZpPR|LxV)ZXRBS1DBS18=8PRs;2RvZs3<@Wsau94+|{jY}#b> zkhw`gf`_g7V1m)ip8v^4Gq=8b`tM_kNb^lkjVD(s7bwZz^JU5Y$~I&2AC{$u_8kA9 z7dvaC7tf6wl490o30n^>_n*IO*DkJE{BkxguCI^3npgb%oNdhy0|p)`lNaaaS_j?F zyS&Wz_4W1QcFC!!srmW&DJfrGTwL7I!Ex|sBQty4t`bjAPtRA?pakNvukM0K5XVA! zaYq4FRn?m}Z(4%E&Ye4(l7s5%>LMd&Du^9;TJ*Z4R%`016eCteW>r2q@QhX-tY9vrojKbyq3v?V6N5iP5u%d;->P6oV%+VH+J=;t1c>k z4?2d`y7ZOE%{lh*$*$=p4fbL zrJx|gf49S%(kF!JoCOs+&$*nXR?mrdb8GAE^$iOXyBV{)?Cmn&*)G2#qN69D|FFCK zecYakLfiKe0s%f&`qaFNl8Vi zO+6WB`I--2xPIN-1Plxe48WT$E?vK#e@d}g^?btj-@AAhGOT&UB5h^Wxhu|h$fk>SJ78nfBHY!~0%*=d|{ zVZpEa6OTWhYgPK{+1c5dnVBzNzPx$!X6>&pA3uHi^x;FsDf_G7ewPf$eV-;yoG2(P zEG#SQ`_J6iIC$Ij<$;Zk%MCIQEMRVSOT2WlxodI=*U}#Ef{FtVoh17o6twbH9C#=s zGcPBd#mmbpEG+CA7?_!vxw*OdzS^j@lR?MNG4k&Ht=)QmtQmB!N+tO5u9?AIzpwGF z;-x*=3@=hS*kcy1UAAVqDx=-}_pe?_2?#itReyi?_WgVPAK&aOEpMJ!vFA`qNy(P2 zTer$A1Jxl5pRp}w=2&>lLBPe$txZ8pKv-BgLOeFSi%X=`wQHA=Yi#GDbsmA?i&kg{ znoQAnsZ)Dx~VI z+vnWRuc+9uc=2L|wV<=wB|C@9Ft$S5l-o7;9dbHRE?(;QdBD@&xZ0(ebVwyo9J^(rJy*t_P~W9Kxx ziIa}{pL(R8E_5>T&l8=xBDKJnu4=@acJ10tFgSLs&26#ig_i6Os`63une^gM zJ$$_8;Bnq7qA6C(*(Ss=c+Wfd)IziU{I>SBcNa`uvs%FId@1`{Ss_)_Be`q0Z&!BMX- z_H5N)Tf4$-?TWTpBC?@7>!<43HZ{y~Qqt_6Kgm@k{nKQlpYt#Mh`;os=49PtEltg> z`S(HRpPf8;^3I(-hM)JItztQTXsLYOBBu1;&i+5u)x5Hd-wi*et!PRWz(l$zqr_)G2!#Gv#+nMWp3D4``fPO zN5H&bPy;dGGpG|Xf#=E7r+e%F&+Fk(QB(6Wa`B&=mF%(AY{4yw3u|~+WObd*@ZB}V z%R=D)T=BVw`aK^WU-H3j`Ny9^HQwtNE`0a|4Bot1v;O`A{$(F`CKO9meEpHKASj{K zJt91M)uEgH55&_qWF2YhSik?UO?`!a=7Cj0s%$y0n7VH>@9lJ5^X~3$^*JRUZf;Ho zU6yNE{H#-0odGnu_x#*kV`JmVxBr0JM^|bRN*EMX_V)DjfYw9S{xUH!*>WvjjZG>f z+j&(lBKrGg@5Ha(79wnyY9I7&X{oP* z6wshMLO~ageR_JDm6dhr(xq%{Y!fFgsy9zQ-nX~prBLOaZMnB6OqjsP%=Y8=@5$*J zB3}Rh{e6CJu64=@0js^8xu-!xegVNv7a3au<}O{jbfRP9h7D0cH(ss^oTKydoS2C^ z_pD`J-u&!W*6irv@O{8u|A?*r(b3w~s(zr$iQ72WtXY#Hr`BINjX(^hRbFUmIiWJTB{4sPz>Z@1qE ztzGgk2f?LtCAF1sWpBq}OF>zhs=IkH4i zy$_s6xj?O9&!x+j*;Rgea&oe|prD}o;rD-FYXMA4f`gY>L|&Mqn|V&mq?R{JIdA6w z!Y5*a@9jQ2J*qr7zru5-sVf%`4^P$icW+<4%1TaFK5W1^zu}6~k2&m|l~4bx@(X=# z3_d=mRd~(A1=cGFI`&wmfvd(PU(qqU}>?Y>pxBAb1A z`%7P6YvB~;;^uZe*DqoC=+)KLp}*hX-CYhktk!V$*?k2M4>hy%`^~r0<&fkE(3sN5 z%nn*Sa$$kvjwuYFivAEN3$JpGi@Vp%&j07npGAunt$KZULGxzTvp1XGrFd?>u=Lvg zSqefPr&XKm3!Uvg#vT7q)V=C&@7mR?U%z{2SMebsIr(whY@YsxDNG(G)^|uv`2TlS zeDEr!U{MQmhF#(3W)>LmJp0Yepp(U4U3I!*-qDyJk9l+W*A?qDU%4&7x2rK%8`QDC zzCK>wvS`VJ%QvrGD?8Z4x^CUNSFc`4NlA5eb%nNnsMwXHBh;*p`zx;gag$==W4|cp4D6NEqwdr$&;5aPyhbzt|X7!;cHijmJ zrlzKvnwo#V-|wF^NoZnVh*s%`2M3FvpOZC6Xo%^`05um@ygcxN!O0^eF>&Gg_3wM7 z%~!3SaxTe1TzXe_bd`9v)a*{j#$(5xJ7*}pKk5GNazS30X(AIZZ|}ioc792tC4#49 zt}N(bkLT9=2QEc1o4_}CWde`ce!vl*2SAV-}u4I^I)2v+>#5X^izrL(F zY|Ssf#dcyk5d{wpFn$8vioQAh{Ir@klT^LS-rw_;oBWeIG&GcTeOhYjT&vPk$B(P4 zskx;r*tqfI{{R1OFLv+$bygOX#Lh~CS`wm*7B9}fx98>a=iy(i-53%KHSgwT?7e-- zI{I>C@As`HtHkCvd~lgpZ}C0T!d%(^jD9g!>!U}H9=&`CI>dI_x3eEMr@W|Lx@hNl zQ85dTdQ(05Z*>i&jR6XEGre_hWjFR)mt34&$7JLv(6Vsh!|nO^84esfwybThP14h+ zPjBA3wQR|f31?lq#opfBy!@5!pTB=Wi%tIiD%G3rz4#(%qe$J~s?^lfnR{5lUAB18 zungn;^WVRJ-(T@DsnlQjtxx8>xe|Ndyx@`$$(ZzmrA6&S-oA%6y$_0xUX{9V?V6lj z&5sU2uQ>u0OyEU&x*Tw8~%F|$A(3<+|*Vos5vesR1f4;rF{qk~uehCAI z0(X$>wiZapI;?Pg{IQ~6&ep2vKh*spL`{pN~m zAN=(VCjFOp+j)C?KEJHh6q|c{tG6%UX?()bBw+9=h-`XSya*(Mn z$U&`-igxbXw=ezN9MBZRuPkZjRm-^#-<@~v&=#h%0`nWTf7~-W-$H-Ujz3y~Osc9& zFD?e1>>O1QT=n?07US8&i_~k~9pq1X=?O5TD<%Fc_Ryd9?AhBjGe*v z&Ussc+Anw>SoL=GyAwJy{u`t5DG`~UsYu3WQdk&vWhW=4j_Y)w$keQ~_?B4bOG0AG7CXx(x8`DM$Nb?sSl zWKqw%QxbQlEIHLY2rqpPd?sd(nel)7JEJa;Xx z;%k2lzSGZrlV#PH7v9tLP8KZ!HQas)CYCTPoTg-9@ne4dzm>D%9cH>p-tIMArR_Yk zwXjiMvY)^I(2n$ZQ&iJB>>{+awW}*DE32x^KCzYlUHoCM$Co8cymo#~*B&*AmJ203 z6!thV`B~hpoFBW@eX^K~ero>z@bK{E<^HEnovN_8cVVIP+c$4ky?*)Tjf{|xlbn9s zo``^j8`j0`sZd-I@Z#CCvftlwU0qiO*?~f9#Zgc>XTNXDmMwpOf48sv_)keEZ=1yAIBdyE47{&p*Gvvlw*s)xUrLL_aSKaO;=bTlzYT zo4b3JGw5jd=T6Lo;DTRYUaI@eS@F|N-EYo=qMeh~e1#%qCrqAv z`1xn)=j(+)#jia>51+!9!(3ckxAs<-2L&y?lFP+2<4U*XI%(!^K?OTT|HC`k-%Vfk zH0+l`Kv2*u!{lQfg32$xwE5n-{#?rDm)1YkTGfs@OoB5F&dWO)FWI@nh}o>XwUy6d zx_jGM^Za`~a<)-93j-SS?(VX!`qFVUsdG;J#-yWtveqnTlaKeEonyIqSGS6~`t2Jx zM8w3hGC&8RE>1r`@9P{(&=^dV4#<7XUf$lfH>dkMI5eF2Ij`)CE3;_HRYSc7ttnFk z)8`fas}4N&G}J0TFK=JYO(S;p_O{($S6G|oifzbd6^smutLzbd^NO?WR1n|#<-fnb zudb?^Hg)PmUvu;APft%Te|2T$nl(9~YXi#PiG2C<^ZES$KcCA_eE9O^%iP=BeEt2^ zXX}W8Ze#50>kG|4^7!MiKH2K8uR<9NOiX%uds8>xo z-JUo1%Fd5j8=gqMsng%Q+Hl2&OOj#bOxym{U0J+nQPr0h6KBrkWH6C>du3%XD2=^z z7C5rNvH9Ko{r+awWp5-TBqFv(9f2&u(yd8*c&Igax!=}Jo3u1FE$jdNd3d;e@uEd1 zrq7u>H-3NJ-4m+npuqgneDDQ>lYPgI9Xotyo7MjOj-_F<9x3sJ*%|K$)uJ8h>AJ?XA^H;LUv3SC0UDdSBr~HmE zOJKI>fjxWnoSkj%KgZ(Y!Gi~H-I8LEk(J#Ip5`q0`RQrh-(R7!hn^OFe{<6~`WL^#l330Ld{`Pjbr>CZYLBNj99UmVbkKb1l85!xPDFzNpX3+G5Y5vZg zJEOPf)&Bgn^ux(-XJNWee-eCVGp){o zH6hOW$71OWjT0$WqH^|ie_pTO|LfPURV!D9URO6Y-CFXZfq3SixH>>9U}Di+wFXH|9K++_JjolNLUsv znLd5`?Ag*&wfa}_fCBp$Xu5b|+MCnU^|iy+c=)c>kn~@AsKor)lsKQ7I0vJTMqRs~ zMrFnY9#v;;J{Yk%t#|e6?7#YTifqU3PcO=0&;3xyE`Imd`9+hqY%$5tf4@2XJkx<~ zxwq?nKArxms!z(aOGk`>p~T8oQ`0ki`?8yN_EZ+1nxa`*S;>%)k+GxveVneY?!&*V z-{0MpHb`(NJ)E4J{P^+X%V2Ob=i83L$5C6eLa&#%gF-iixra~TN=$2O>)NQTTK4ww z1#aQJo62-n&*e;0bKW#%qW_=5ohna)T`ifpS~q1}Tokz2?ds=K-}fIlAYCfA^ia$F z-G}~^IZV&w=sEvf-nuO3>8YtVZ{B<&SzG(}{Cs6yJ~|?z=Fbm7Zy`{n=@IwgwQI|) zr40=Ysi&uLwzI{&eR*75D=CBF|ce?R~H^Xm&UbVFvA z${AhbTD0uIqi;rhye+M*U*Fs;J~zj*=>kLd(WosM6HhGq+s-eqrlP{okf6^$`|Q5j z-`nQTk1qwSPS{zjE-95@G!t~>P~oE%g`=S0H!(Fm`PhHH-P+jQVbk7ofvTSsdInYv z0iTQi{`$H#`#P7p*6i#3I}>%hC4~hRwK*<5v?T6K?B$z>JoV1cxBm}1dDUW$6x%hQ zwS5;E<;!;%2=GiLKro#flPWlPzc8;Tk4?(8hS zy)AcBRW>L!I+ZqAa|>koaWq*}ebLydIm>1F!S%`!wYN{NKV+TdX}9!K_#C}+CszM> zP*7HOZ%^gsNs~Uj!>B|yu1LF?^e*hBpN^Fg->9qSR)i~x-R z-`!n4`M7r2nuN_aXPf12+Onmmw|DK%Esp2s+0M7G=VJgZDE;)r^XfTCNy%HcZXHVh z^7U(MOw79Y{c-cRgO}ligzqS0SeVv){BiExU7;2x3syMXv}^5M$ap0~r(`AjbB$Rq zLu$%c*x5m?s~xkJJqdXok^SJH_zoHEqqRpoyu73=i=JFq=*+s1k*jr6!oj8$D^_ew zJ|0%v7Qer4Z(ko@<)7>E^{s7fOb*laVzc;opFDXoVIdwbsJ{zCVUcEP(cSp=S`~QEEv$M5hngtltd}eIOzrXL5 zmqb=Z#+zGPy)UTjzaf6_u5wsS&7KE4c4@o2xG*$yb)9;1bMwqIpZ1E?*x74ntoUXQ zs`wODtU;ZSN{ixWXVykn`^&*_)DB@+9BL z^D$|$-s@{umRq1(IPYJ6>ju3Ie&#DxG&D{eJ(~LR(o$AdRwezp_VxeX-rjE7GuI%| zX}(=;%lVX)lq)s6j~sD12s&qORha_Eq3hSh8Ge0zUH;?4!Za)6-K< zPR=x529ygtwt?1fo;|R)`un!LyIL7h(gEdu$*Z-J_?%SyYwZ5iuKsfEc2|eP{<^*HcSCsl7O@=7cgc=MAXhBHfHf?+FPX-vt4*|UG&&fhO$Mf>? z4#|S{Cf58cVgT)TJ2TVx^*3+>rzM4Je}&76mDPWLef{?KHmff)@2hW`5>gJI+?O8O zw2;g8t=7Dy@^&>9PfiGG>MdQzU|oIaxTnF5HQ&zFFg>$ni;Gpd%`az@ae3L|1H{~fRD*pcde*HtMu&}Vz;p@dry1TpM_f~~E*T=@*Wn^aK zn3a62r}F>5+Ml~0eD0UG-!>FaBpt4^)f z4Ei_g*rkAD7Z|dHR)j=Y&$@bUi4yz4oyE^xzJ2yS=f<4J-@JQX!s0;h^9w>OK5gU+ z4+{+Z`R}iFrO)Dvpz5NdqeIcTjRCagE&c2))fYR{&dz%BoVt!hS_fT?1M)Rzs5_jf#cDmJxV_y4c2+1}pX!NI{V z^)i<76~9?1%FVRjS#$lZyz{{cZL%81D!Z0#-1u>O{{5!r=G|p)tA2lb>p5AC^V5Gu zkfZzM?c+j1SQt`MQ{(s5NLrWWluloC8Pu?~1v9)+FDzmK6%2x(CcPh{_f6`lap1eq#-`wT+Ga28fYVz|Mb+<`2BUNvqQLY z<{c>7bl_3zij#o}0lRKrkgtCt_TRp>J|Q9D{=V9&Q>QN7tsAa=1l#Rh^Zyt%`__et&bbyT8Bx6IEANS6f@#O+1VYE^cmRudbZDb!*oy@0qh_ z*Z=$T^Kd(Vim`z~!M8UzO;fZB%FF%z{rUO$#4PhuQc6BOIeBrhyZ0|SP_5h|C6uP> zvZB+f{N0=ni=K+k<8rq0`ev)?^hw}*@BSANg@Ktr)4Mir{(Nq(_0kgo8joVFbSl}- zuZn#0zd~h)wi+Y%ZpzTP2Otc%;qNw9Npos|rv){DQ&B_u}*O^V84I(_O)DzDhg! zMA3%T_akgKN``Twz(+ zw+|i!goW+}8FR$o1chID<;*~cK&M~#jlF^&KyXfhu zFJDSFWv+3(YckI_|Ike~ySj7nbqZNG|D8C{Aroxt>a06$PkPIf!x7!HW;q|J)%RcY z^W9x*etv#Y(WzB&)0i%V2|wG)%qqoFw?5>n!Dg0-k{78F=dBqSGBPs@E#{=3pEvRB z_4V=nGL}K^?#p-m>+9?5m$Oy+{_jJ@o{o-=mBGue)vsj%_24G#d2oxdW!9X@>i+XA z3Y%<}1tt8?**3TEaxbq+jsCj_Uu~8zSoGrW@yWKgXI=l^C}0}gs(NJ0Ue}kEPv`6O z_4Vy8d%GwoHBA0_w%wm!LjQW#SsY&E_#m>+MN!;dt;4USS0C8{G zuvfpp)XyyZ-RsE0pDb)`|6Y%;pL*5?lK5ra z*afnj?(L}*mW|z)Hp{Cuba4bvWQqxY=gGa&Gs3>s>)WT*{|gI=arUj`EZG(;Zh3j{ zT(?@ijyeYWuj#K=POslLW!kj3Jr#k^wl4@uSSEYKuUXXZz=A{P&nxU-^DS`FkKgb2 zU%hh5Tq`9#T|a)`p0;ycU0uJwzZW;@m$Cfx=qUG1NT{zUOuWa~GHb%oZgK9e75(o{ zMW`&cV%;y-b?e*v(|+R^`YU zWcBiO%&@&ukyXF=-CGlt{kHx7N7O{O1*N`PVg7Zkz=}cvmI_&ouK)FanCEiW z;MC~3SF28LUChp)n3y{Y%1g{A`DQRMtO!}v-_PG0Hc!ArO)c&Awp`OM<|Zb0_Evv? zd3m|KZB@%c&>CM3(_m2BP)$)!@7(Fr-8RdD9-KMf3Zi)jbB#T%fsf9`u1tvJXZqK<9;9BIotM`pu?pHpA$d5Tl8ejr>D%^VmcDmWov4d zhp3;Pu77`Lv3lj21q%ek#L`kzRqtzp5&dQ>$~tcGYvWzMXMalf z*06R>n|7`K|KH;Y23c~KN<>6NZrr?C`}fz>oNq5LKYw_*eMSIyqRL+DPGrM`KcXTc zHkF@TF3hsg;{T&A^n>q4PQABH2UqW5@x>gA`4f8ILb=#p8lwYO~# z`B-pmlWFL*BwLI53in)|?(01DcTSMV->n9=%g;D?AB>p&Hf8Ot!;Xh9Ijr=%uJS!^ z&z~88t(2Z;M->*ib*`MZXzj{POB)xhl)LRTKX*ZB`&$(jhm4qer$5X&ujx9mlaPfGw=X`cc;nmL0!#Rpb20^G^l8$1S)2J>jdFmV2kK z`So=F*ZEgA_D0FxTRY*M*%#$~sZTz>zP_HbDI>1?Gic+%^XK6a5gZJenVHesa&GRc z-MvS>6;$M@RDY`Hb6nA?%;8kAvou}1bKYyIsQ>3~1^We>T$fZ~T_3N~}Lr+%kK$dbFNQ=CbvXxi@VZ zFZ}pZuUBtZXzuyr$=3AyCz(rAkIgU6S@z9*%{%^p2lrlo*=c>~#N*;@S@my*3=K2Z zw|akfy~FDx{?2me{KU1JSM|;03-z8lX`(yBf$#6{@2~rtm6W9P^{UkTjT=8M^PRnC z@7|RmuNJv>Ut1HY{9Y20O*ufBW{#?g%97>N?K@wt3hvoD>&SjDt^*zOst%>gv4;Pi zqoZi&m}4h;J^7*b#0w1_?<1EMm$#JueED>1LkQpYXbq{Og^gV4 zwUe#SS4;j}>M*HNY}yC0w|w&3Ugh#GWMtSOH{n)Y+JSl6oLiTb?fq+XHt&`3#0w6g z_49hS&;FHjern5}|N2K(JlvRWtw;x-6E$Xes|H{7~B_0~D>iQD*Hrn@P`i<4K+7r*o z+duXH|M~FsEsticmz*B*!~R(m9{7?ySY@3fx&8S-KQs>>FMc}{@^Ca z3dV=$m|C9r{778cnWL?cxzbSmyQ$6V**X@&|19^<-s{HeoFycy z$=eTdyHc>e*RsBPo{@X~4&yC<<*e!N5^2)cVr9MFqJMK4~On;x6d{(^2 zK(+k?=cCi#9~JM@%$x=Wkd z`m%B{w4d(x)!Oyof9~az5sve(x-Ysr$7J`7mEn663N`az?&El9{CZjRS*e_yHNpFi zHy&5smpZlX&y@e)kDlL`Z_JSJOyO~&ZOIWoeG|L-Grt5JgWcy=CQWtjFI#)U-kERu zf7Pu&`i(!Tzn`kF&B1Zj>iKM&`W>02@53Xi{AR`%v?c6pnP|4!-(8oR`RJ4{LbbYK zw#i|#x|tzbAAT}0yuY_sTT?S}V@l*^VQ^NtD(}WFFlqCO6`#`6v_$9V%nB%BV0d$8 zO6%zjgD! zf7~|T_>9X30q>;&XTFNo&%QLvZRr|2A>9{y{{NaT+1w*p^3i{Hzq3(mIB!YL;&1nV z@g3@ZC0Vj+?#xeZl3{9AYa(wSW_iASPVfG2?ZR769pb;gU2@?^(fFhJb29gqMP)zq zGm$##F*|k1*;ltcU!VNF#@Srx|BT$&uT~5P)H`^c6gjK8r+Q0UZ!ui?gFETM%C)>x z`_^Qnr!V_+`rs$|RrcqO_)GDcky7XS!}Q zUR3Mzgpr~Bu&0Md#^q(bYxF>?U=&+Yn99WzRQy#{Ra5jz7%qe@)zC7TS z%axn#thw*GJ?HB4ExB21ofUdLxYKp^o%0`F=)YZ6-L^jKIaBn*3k?jdOxo&^J*Ah$ z=WzC(um2cWMr|Rp1$$-TTO{Ckoa z6wB&fMx+<67Ej?|1yE zNP)_p(_b3hns;^GzaHSfHbm=R7ib+0Xk|Z(>CWYXEm0y5kE`%LUADD=fx#tg$@3@P zza~V6rr++${RwK;pVpaL7d7>3`NegXQx`|G`?9(neZMQYd|%OyKdbJ_wTG+TyW=ui4Q}jdfhnoPR6Q)2@YVVFG88ldPajqWzQmUM zE&Ot^v22>wp|h<2Tb8Gt)^P|h<`r!_@u~3*(?wSS8NH9|muV+HE~&in_dgfOsY%#6A@nPd$ns-#r1i$ z*QNhuJhXqvxG*wip2+#rrO9g!i{+&~?Yw5{b5f_%d)<$wyVraobFv%+l`NTrF1svd zj(v0Gcj>AV8w94uJTXvCIFf(xI&%t#N^gO)F z{KPyaA@I)l7J;ls238FdY&h-JGR^jGWnLLMbzgDVbcL_Ar9LG$tEb=SoO7rCt@nD@ zM!n*AnLQIFrpMeUaAfk`>ScWXjA$&&#MsKqEse{5Txn2>3O#pg#s}XL#{Eo_f1Ovd zept)PQ1H0&Rfp-pFyZ+*Hj=;1w8AGn@Q5l~TF|yI?CnLyhYcQw%sUq`+sa0HUh=g% z&wZ zI2hjf&3bIh!&ZKE;)jPZMTbs{E%4gputG@o!rEm84II2ry)HK1P%*syJJ)yW{P*v7 zeVG5@x}fEu=lj#A=2-~te&~`DZTwX8FE4xf)s5!iE3NkIDSjF&k-N-hb!pzA_l9aK zH?+-Tn#3ZzWSPpB$FTtc7YfWl;|Bsxmq0UtpO!3Jre<+2_rUveOQ%eU)3jQ!DrEhA zi4d;Tp4D~Y*1h)UkNmvjv*y;rLXT&UC;0e=K8v^CI`hi)hLaO+K2n?brAz4{C&P(T zt3_ll1g1B!h}<;U8^(42|NcXda!d3W15A%yzUX%L{rhvj*QvePH|K+`w+X95h10?H z?ThMdMgHENa_!#ZGp0v$FL#z{tokrL98eHZ$-@7h(xYbywH?t~c7 zD9n?Up{u*L-nr?kZ}nm4r=ZG-cYj|pyp|~YWt;!ri_ia99Z$Sly1MMd8SU9SbxTgH z&tGll;qAM`qj6Ewi}iM8PmP6^IVo@`tzV&J$~-qLcO6rz+1u-$(+Z!*zJFgZ)BKE! zW6Xoc{lOgx_(vq{b%*$=mWZ1D?Riwaznfi)vJoFtyf?BZ|;_V zbCQJxW|cm!y!CN+e5>^lRdL_HpPdifTX$=!xc-etzgz#EVi zTV{bya!~Ovv5Nh$WJ;{VlINzK42+B$p2pN<)a-k3=1!toS=y=If^4f%7d)|s0LB-~rt@-!k3S>l1 zuU(k__(8!>J9D9Wds+3GqJtcl-DWow>}3dbty+7OwcD%Gw0y^}HJ8LXcOLdRQa0Oi zM^IDq?+HA zf0v1UT^n}bp^$m}60z&wROW}D*ef0pxF^9OJ(o32cmJ|y@Bc_ljR?5A+AyBGHZLS+ z;){f(w~j~F9QtFXc1rtLG{>y;+R5?m9h!O`T2DWGkNvGwlXfoPqa*wN?UGx=93BWC zSv#m#L_2vd^ z*Ov$EetG^|{O?KeDs_n*^A*0u{VY0X?pl!MVJ@pG=DTF}+?k(>7Ctz-`-aW=tNE+B zyH%D>Ut=kiZ1}IUAjPGxNz0x6iG?s|wns5Uc1=ddggKd6S=;jNTIuQWF>rZzbgbV~ zwrr7q+orFtA8N4maxt(7oP4=d-!5%=N{8pg_3O^u_`Uh=k$r4m^+OBZoV)I;p1knS zOtT&Ro3AZccWWA3S6Wq<+pRT1eD=1xO*FL1uOB@>F5C?PQh$3~apt+r@oQ#Y+Etr<^;%mOm(Q!~TPC&SyUN=?f4?{CUhcIu9MpYu>W=Jd8o<=ksief^Yfzdu@(v-X#rp8ood>Ob$UKQ7-N zcHK90;=lX9_)fiv`j<1k&(QlvT*;HLqox0Bq~o3cZ%aEh-OTc3cGt?(8B^j8EeY;k z@aLd~+RB2n7iY|R&&MEcRw8gRKqFzz;a$IWe?DP)u!+GjkTd`5|76Lem0FjS_luk` zw-T6lLR(KeUN=4V(wx%z_U^SSe`N6~SH0S2c_+8x{H!qT4xdl^zshFC-Mz4X z^0fDU)3;5!+W$c=U9ND~^)HNWTg!7j{10hw3wf{&eE!rzHSX)6Va43r+d{*_^fWXW z8jh6wJFSt&f7|WX_LYmznV1KdTu8EvTv@g$G(UgkqU&B~u0Qzd!uX-!5|7P|v-%dF z*W?!+XxEu|m4)eW^(#G@%xk-AwRi1U)SPtj|Mh!+*-dMoSIYcXx&Oy0OGVJp!7*}b z*8+i8KNc@nkJ|3K{LAqz=PLZfbEHSAToA zE&R6V#cQ9nwxn-g&c1c)HQuNIoCC_3^r{`=0zZT9&yf4BR;veVdK@M86{)&3H>rn+;DpS_>%JI63{LE)LV zk28b4wVwnOpPOSTCC1Fa&`|f{ipOmeX^Cmua&K?TzP@hV=-T&Ry!)%Km*(sLYh!nRzOz(b@0W1SvLzL#*Q{Lp z=-rN=y=>99m_$R*zH^ID-hAg}c+jyKlOOA9ew=plaZ>&l)}YpmT<#rGHR-Rdv(9b* z{pZvU!)Z?{PDkw4)HOVov18`Mn78{L%;c6`{`!{R^{uzp9$U9mW|I5trH!fDjSFrS ztGiCl6u8H;H^=_P{m8n?m+d`0J)q+y**?zYWngGH=xoK%!rFg)bIwhp{r^AJUdazX z_GIb(dso?&u5Z1>*fQH}{;wCa-{#JpZl7wFbHgD2o=vVd69dD6tsCAk2#DpF-M+Nc z+xcwl(|>h-Y)XgP-Jb-QOqe#U?EBsF>}Y-l28LgbRtzoOPft(xzV!4Xljzlhlh-Bu zf6n~yjC%L?{V(DQ6OML?R@u(CU|?W)*!_Ps<3lAw!;kZ--*KAO*Pl4QN8V+fz3jxj zxzq0-?Ck997Sp}7O^$(q;Y)uB1BbG9*cy(tH^1!mR|_x0lZC)$NgYXbBYg`0L%dbK0A^Amz>uKe z!QSw}DC^1!)9h<4v)uhyzlWasJBPnz>So?k*0#??Y`$D@=4*F8T*bh^VBoNX+2O`a z^Za{{j&?hrt-tkt{dc1}20?`t9oOwXoD83K+QZMU?$yfWCTlqu7#NtB21{<`X_GIHUwbLaoa%ObIufK*t<+=qzD&_+d2r?E3xxsZckcXp@fXj%8x)^?)6oC3@bL5fHlAm5 z%<}K-DE#x|efQqgkkF5>e(#$%`y{heR$lo0`s>d# zcgyg;`1)&le4VASaq#U`3=9kf!XE4m1?FXMZurhN>y;bbk;wfsbM0!*#pgMQzWEUGb8?L;U~Q?awv3MVy$` zV-LpXy)LNUwYagVscEWqcvgfE0|P_eM8D9`wb={?0qlG-6_0z(n-0FqWVMe@sH$1$ zx%~154VUTm*3A0<+s|KDp0Vryzu)2O<7B07GchnUc(_idCmldkoQx#bxYI@hc%Kray^@?}%E+uV@h^zg2HF9%WW`rmM0|T4jO9p|J zvu4k}zBc;%-SYdbRbQ$C=j2!A?DITdwOGO?-hw&*&AXhu_y0C@ba&t0QTTXn`Ms5i zpxdt`Vn9*w`Dcx^SFqdUtnu{>@FU({|@STw}OvEC0;rzNQ%w5=wV(vOS$@|7+j= z1z+CiXlO)i%?kDL=?M!39b<2%D9g~+e0jP5{!gd0w{G2PYb`$`v*wpwa8IWr%MQaX zEidgSXMbB+SMx}9^!CPXPCL8EwR_8IZUzR1?Sd~E419jn>^nQ#{QceC+tZ&*tbR9> z>2p&i+qc<=8RlB8-?Ml7=i9du&YwGT=FIfCDossIPl$_mPvm1b>=hY#bD8gKz1Uq> zHea5ow>Bzk-h=~DtuOq&+kfqD{%7l+y7c(*Ccov;8cge4{ zTXFrhe9ec0$K~s5o}8E%CCbLY(6G?Oih(COZhiUhZ*P|_UAlMQ+2zYU_y1U_sU3Q0 zl|f5q)%ss~Gwb7*-g#ZDU~T<-=ks~9O)@9Bl`=9gI500^K44J(>B-6M_o`06Ecy28 zy!Z63Prk-#69iq9x4YjA)vK@Z;ro;E(J^uR?fG@TUV^U5mWX3wU=T?4U~hQnA2_A< z_qW`;yS6S}y7aoUrSOtRt;^GKP@I8*;SkeH27%ZZz3Y9l)_gJ+1*L8iEaQINjF(RLHGFZBqiy=D zs?_J{|NQ&e*X_IKKi_WejvY5178pzg-9L3|A|J!W6K~7j-`V;3albtuTk~EyuT3wx z)1|m%+@f{1cTYSkFOaIvRNZ&tcy{&vQ%)Us?%a9w=+T@xa~A6JFfcGAc9bx5#DQ*H z*_wTQU+r(EMu+w7JdpP#u$|9V2Nq6$ZOQGkq{ zKgi_NadUIJxTt7qS{h$rA_D^hNBt6Jh8BTE8#jJD%x|xwtNXRWCfq*DsN;{$;o6t}Z+Oj_#{xXJ?%_Z}h}RMeV|jRb8*Dmi}>haG}#7*ZIAv+U_OGmWhdp z-K&1TH*9rj$7yB;28R?yS%wSk#m~=8oigRk{r&rwE?s(Fc#U$&=Vel2DUve6s?8=x zuDY6riZ0jJNL6Qgs?PLW>Ng)N58L5CKR?S?JZO|OPTL^K2r99fN*E59{`~uI)22;6PN@9DYt_iD)Drp&fIB_}f^PQ6;xy{c=~XRn*v8#f6vem}a;nNjh`jg86N z+}zW3B9k`XY};hRz`)>Qb%~MTdU$Yf@rMToH*GSSe!6sRv5uRet#8pEms8&6K3IU^u|5EX!aJuxiz{ zD_5pW1%bJ?)!XJ9uQl9tr$kdfwrGj>W4G6mx9gm3aD%Q6%gpPOSD92Zyj;=;mNvu6D}FOz)L^3u{h^CdO~ zfAut*)U>bi_LcWB2T#39IQsqIt6%?w7!_OY=DnBFG^qVm;>HDP{{&3nW7wg(b?err zPoK8)%a>Wr?JAmk`kiT7);BB~EF3rzx8MH!2?S*L+>??Xz10I%uYuhq3%Z;w@ta>Y7njDeC$HIc;+NshRb9`@w!T{wbbZM# zJ*{`z?7DB6_ue>m?AWts&#Ywn_UzfSWsAu+6&41D0|E-N3E@}YMASe>)F*UIavsP@X5~j2b5||*ef#15 zrK84*ii*n0$)BE_lmr8_*>A)CnJ_RgJP@16$8e$N{B!HlS0SOHq2Un^igu<%%FSAC z=HaB?A|o>^UD#@_o}r=P6jq;kHZwtud4|N+5(bAI0U}EmE?l^7-MP1AyJOZ}XgvS? z@~$n?3Z6khK|!bbRaI3bd)?N0gYMg0*IB~g5D^@D_4U`bLruqyxvjtc`fHV~oPTj~ zadh--wa}S9YO~LZiHn zc!90}Jk0qLL@_X2?DO3WW_6S;0lAKW!NvL#D3vlWERuz*DFG{K$Z)p;GaR-kgRXvH zU{JU<5fqCI3<7UGz;}%@U@;~zopr0O^ + + + + + + + + Async + + + Sync + + + + + + + Idle Mixers + + + + + + + + + ... + + + + + + + + Mixer + + + + + + + + Mixer + + + + + + + + + + + + ... + + + + + + + + Mixer + + + + + + + + Mixer + + + + + + + + + + + ... + + + + + + + + Mixer + + + + + + + + Mixer + + + + + + + + + + + + + + Thread Pool + + + + + + + ... + + + + + + + + + Seek + + + + + + + + Compose + + + + + + + Live Mixers Thread # + 1 + + + + + + + + + ... + + + + + + + + Mixer + + + + + + + + Mixer + + + + + + + + + + + + + + Thread Pool + + + + + + + ... + + + + + + + + + Seek + + + + + + + + Compose + + + + + + + Live Mixers Thread # + n + + + + + + + + + ... + + + + + + + + Mixer + + + + + + + + Mixer + + + + + + + + + + Disposer + + + + New + Mixer/Driver + + + + Create + + + + + + + + Schedule Mixer + + + + + + + + + + + + + + Deschedule + + + + + + + Move Mixer + + + ... + + + + + + + + + + Destroy + + + + + + + + + + + + Interaction + + + + + + + + Messages + + + + Track cleanup + + + diff --git a/src/config.rs b/src/config.rs index 6a8ec37..ba3ecbe 100644 --- a/src/config.rs +++ b/src/config.rs @@ -2,12 +2,21 @@ use crate::driver::DecodeMode; #[cfg(feature = "driver")] use crate::{ - driver::{retry::Retry, tasks::disposal::DisposalThread, CryptoMode, MixMode}, + driver::{ + retry::Retry, + tasks::disposal::DisposalThread, + CryptoMode, + MixMode, + Scheduler, + DEFAULT_SCHEDULER, + }, input::codecs::*, }; #[cfg(test)] use crate::driver::test_config::*; +#[cfg(all(test, feature = "driver"))] +use crate::driver::SchedulerConfig; #[cfg(feature = "driver")] use symphonia::core::{codecs::CodecRegistry, probe::Probe}; @@ -166,6 +175,7 @@ pub struct Config { /// /// [`PROBE`]: static@PROBE pub format_registry: &'static Probe, + #[cfg(feature = "driver")] /// The Sender for a channel that will run the destructor of possibly blocking values. /// @@ -177,6 +187,15 @@ pub struct Config { /// [`Songbird`]: crate::Songbird pub disposer: Option, + #[cfg(feature = "driver")] + /// The scheduler is responsible for mapping idle and active [`Driver`] instances + /// to threads. + /// + /// If set to None, then songbird will initialise the [`DEFAULT_SCHEDULER`]. + /// + /// [`Driver`]: crate::Driver + pub scheduler: Option, + // Test only attributes #[cfg(feature = "driver")] #[cfg(test)] @@ -220,6 +239,8 @@ impl Default for Config { #[cfg(feature = "driver")] disposer: None, #[cfg(feature = "driver")] + scheduler: None, + #[cfg(feature = "driver")] #[cfg(test)] tick_style: TickStyle::Timed, #[cfg(feature = "driver")] @@ -326,6 +347,22 @@ impl Config { self } + /// Sets this `Config`'s mixer scheduler. + #[must_use] + pub fn scheduler(mut self, scheduler: Scheduler) -> Self { + self.scheduler = Some(scheduler); + self + } + + /// Returns a lightweight reference to the audio scheduler this `Config` will use. + #[must_use] + pub fn get_scheduler(&self) -> Scheduler { + self.scheduler + .as_ref() + .unwrap_or(&*DEFAULT_SCHEDULER) + .clone() + } + /// Ensures a global disposer has been set, initializing one if not. #[must_use] pub(crate) fn initialise_disposer(self) -> Self { @@ -381,8 +418,13 @@ impl Config { (OutputMode::Rtp(rtp_tx), OutputReceiver::Rtp(rtp_rx)) }; + let mut sc_config = SchedulerConfig::default(); + sc_config.strategy = crate::driver::SchedulerMode::MaxPerThread(1.try_into().unwrap()); + let config = Config::default() .tick_style(TickStyle::UntimedWithExecLimit(tick_rx)) + // give each test its own thread in the scheduler for simplicity. + .scheduler(Scheduler::new(sc_config)) .override_connection(Some(conn)); let handle = DriverTestHandle { rx, tx: tick_tx }; diff --git a/src/constants.rs b/src/constants.rs index 332dc73..f31ff8a 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -122,6 +122,9 @@ pub mod test_data { /// Path to a Wav source which can be read via a File. pub const FILE_WAV_TARGET: &str = "resources/loop.wav"; + /// Path to a shorter MP3 source which can be read via a File. + pub const FILE_SHORT_MP3_TARGET: &str = "resources/ting.mp3"; + /// Path to an MP4 (H264 + AAC) source which can be read via a File. pub const FILE_VID_TARGET: &str = "resources/ting-vid.mp4"; } diff --git a/src/driver/bench_internals.rs b/src/driver/bench_internals.rs index a12fa97..3dfb035 100644 --- a/src/driver/bench_internals.rs +++ b/src/driver/bench_internals.rs @@ -17,3 +17,7 @@ use crate::{ pub fn track_context(t: Track) -> (TrackHandle, TrackContext) { t.into_context() } + +pub mod scheduler { + pub use crate::driver::scheduler::*; +} diff --git a/src/driver/mod.rs b/src/driver/mod.rs index 4045978..3e5b58b 100644 --- a/src/driver/mod.rs +++ b/src/driver/mod.rs @@ -17,9 +17,12 @@ mod crypto; mod decode_mode; mod mix_mode; pub mod retry; +mod scheduler; pub(crate) mod tasks; #[cfg(test)] pub(crate) mod test_config; +#[cfg(any(test, feature = "internals"))] +mod test_impls; use connection::error::{Error, Result}; pub use crypto::CryptoMode; @@ -27,8 +30,18 @@ pub(crate) use crypto::CryptoState; #[cfg(feature = "receive")] pub use decode_mode::DecodeMode; pub use mix_mode::MixMode; +pub use scheduler::{ + Config as SchedulerConfig, + Error as SchedulerError, + LiveStatBlock, + Mode as SchedulerMode, + Scheduler, + DEFAULT_SCHEDULER, +}; #[cfg(test)] pub use test_config::*; +#[cfg(any(test, feature = "internals"))] +pub use test_impls::*; #[cfg(feature = "builtin-queue")] use crate::tracks::TrackQueue; diff --git a/src/driver/scheduler/config.rs b/src/driver/scheduler/config.rs new file mode 100644 index 0000000..87a3b0f --- /dev/null +++ b/src/driver/scheduler/config.rs @@ -0,0 +1,66 @@ +use std::num::NonZeroUsize; + +use super::*; + +/// Configuration for how a [`Scheduler`] handles tasks. +/// +/// [`Scheduler`]: super::Scheduler +#[derive(Clone, Debug)] +#[non_exhaustive] +pub struct Config { + /// How Live mixer tasks will be mapped to individual threads. + /// + /// Defaults to `Mode::MaxPerThread(16)`. + pub strategy: Mode, + /// Move costly mixers to another thread if their parent worker is at + /// risk of missing its deadlines. + /// + /// Defaults to `true`. + pub move_expensive_tasks: bool, +} + +impl Default for Config { + fn default() -> Self { + Self { + strategy: Mode::default(), + move_expensive_tasks: true, + } + } +} + +/// Strategies for mapping live mixer tasks to individual threads. +/// +/// Defaults to `MaxPerThread(16)`. +#[derive(Clone, Debug)] +#[non_exhaustive] +pub enum Mode { + /// Allows at most `n` tasks to run per thread. + MaxPerThread(NonZeroUsize), +} + +impl Mode { + /// Returns the number of `Mixer`s that a scheduler should preallocate + /// resources for. + pub(crate) fn prealloc_size(&self) -> usize { + match self { + Self::MaxPerThread(n) => n.get(), + } + } + + /// Returns the maximum number of concurrent mixers that a scheduler is + /// allowed to place on a single thread. + /// + /// Future scheduling modes may choose to limit *only* on execution cost. + #[allow(clippy::unnecessary_wraps)] + pub(crate) fn task_limit(&self) -> Option { + match self { + Self::MaxPerThread(n) => Some(n.get()), + } + } +} + +impl Default for Mode { + fn default() -> Self { + Self::MaxPerThread(DEFAULT_MIXERS_PER_THREAD) + } +} diff --git a/src/driver/scheduler/idle.rs b/src/driver/scheduler/idle.rs new file mode 100644 index 0000000..ad4042b --- /dev/null +++ b/src/driver/scheduler/idle.rs @@ -0,0 +1,319 @@ +use std::{collections::HashMap, sync::Arc, time::Duration}; + +use flume::{Receiver, Sender}; +use nohash_hasher::{BuildNoHashHasher, IntMap}; +use tokio::time::{Instant as TokInstant, Interval}; + +use crate::constants::*; + +use super::*; + +const THREAD_CULL_TIMER: Duration = Duration::from_secs(60); + +/// An async task responsible for maintaining UDP keepalives and event state for inactive +/// `Mixer` tasks. +pub(crate) struct Idle { + config: Config, + cull_timer: Duration, + tasks: IntMap, + // track taskids which are live to prevent their realloc? unlikely w u64 but still + pub(crate) stats: Arc, + rx: Receiver, + tx: Sender, + next_id: TaskId, + next_worker_id: WorkerId, + workers: Vec, + to_cull: Vec, +} + +impl Idle { + pub fn new(config: Config) -> (Self, Sender) { + let (tx, rx) = flume::unbounded(); + + let stats = Arc::default(); + let tasks = HashMap::with_capacity_and_hasher(128, BuildNoHashHasher::default()); + + // TODO: include heap of keepalive sending times? + let out = Self { + config, + cull_timer: THREAD_CULL_TIMER, + tasks, + stats, + rx, + tx: tx.clone(), + next_id: TaskId::new(), + next_worker_id: WorkerId::new(), + workers: Vec::with_capacity(16), + to_cull: vec![], + }; + + (out, tx) + } + + /// Run the inner task until all external `Scheduler` handles are dropped. + async fn run(&mut self) { + let mut interval = tokio::time::interval(TIMESTEP_LENGTH); + while self.run_once(&mut interval).await {} + } + + /// Run one 'tick' of idle thread maintenance. + /// + /// This is a priority system over 2 main tasks: + /// 1) handle scheduling/upgrade/action requests for mixers + /// 2) [every 20ms]tick the main timer for each task, send keepalive if + /// needed, reclaim & cull workers. + /// + /// Idle mixers spawn an async task each to forward their `MixerMessage`s + /// on to this task to be handled by 1). These tasks self-terminate if a + /// message would make a mixer `now_live`. + async fn run_once(&mut self, interval: &mut Interval) -> bool { + tokio::select! { + biased; + msg = self.rx.recv_async() => match msg { + Ok(SchedulerMessage::NewMixer(rx, ic, cfg)) => { + let mixer = ParkedMixer::new(rx, ic, cfg); + let id = self.next_id.incr(); + + mixer.spawn_forwarder(self.tx.clone(), id); + self.tasks.insert(id, mixer); + self.stats.add_idle_mixer(); + }, + Ok(SchedulerMessage::Demote(id, task)) => { + task.send_gateway_not_speaking(); + + task.spawn_forwarder(self.tx.clone(), id); + self.tasks.insert(id, task); + }, + Ok(SchedulerMessage::Do(id, mix_msg)) => { + let now_live = mix_msg.is_mixer_now_live(); + let task = self.tasks.get_mut(&id).unwrap(); + + match task.handle_message(mix_msg) { + Ok(false) if now_live => { + let task = self.tasks.remove(&id).unwrap(); + self.schedule_mixer(task, id, None); + }, + Ok(false) => {}, + Ok(true) | Err(_) => self.to_cull.push(id), + } + }, + Ok(SchedulerMessage::Overspill(worker_id, id, task)) => { + self.schedule_mixer(task, id, Some(worker_id)); + }, + Ok(SchedulerMessage::GetStats(tx)) => { + _ = tx.send(self.workers.iter().map(Worker::stats).collect()); + }, + Ok(SchedulerMessage::Kill) | Err(_) => { + return false; + }, + }, + _ = interval.tick() => { + // TODO: store keepalive sends in another data structure so + // we don't check every task every 20ms. + // + // if we can also make tick handling lazy(er), we can also optimise for that. + let now = TokInstant::now(); + + for (id, task) in &mut self.tasks { + // NOTE: this is a non-blocking send so safe from async context. + if task.tick_and_keepalive(now.into()).is_err() { + self.to_cull.push(*id); + } + } + + let mut i = 0; + while i < self.workers.len() { + if let Some(then) = self.workers[i].try_mark_empty(now) { + if now.duration_since(then) >= self.cull_timer { + self.workers.swap_remove(i); + continue; + } + } + + i += 1; + } + }, + } + + for id in self.to_cull.drain(..) { + self.tasks.remove(&id); + } + + true + } + + /// Promote a task to a live mixer thread. + fn schedule_mixer(&mut self, mut task: ParkedMixer, id: TaskId, avoid: Option) { + if task.send_gateway_speaking().is_ok() { + // If a worker ever completely fails, then we need to remove it here + // `fetch_worker` will either find another, or generate us a new one if + // none exist. + + // We need to track ownership of the task coming back via SendError using this + // Option. + let mut loop_task = Some(task); + loop { + let task = loop_task.take().unwrap(); + let (worker, idx) = self.fetch_worker(&task, avoid); + match worker.schedule_mixer(id, task) { + Ok(_) => { + self.stats.move_mixer_to_live(); + break; + }, + Err(e) => { + loop_task = Some(e.0 .1); + let worker = self.workers.swap_remove(idx); + + // NOTE: we have incremented worker's live counter for this mixer in + // `schedule_mixer`. + // The only time this branch is ever hit is if a worker crashed, so we + // need to replicate some of their cleanup. + self.stats + .remove_live_mixers(worker.stats().live_mixers().saturating_sub(1)); + self.stats.remove_worker(); + }, + } + } + } + } + + /// Fetch the first `Worker` that has room for a new task, creating one if needed. + /// + /// If an inbound task has spilled from another thread, then do not reschedule it there. + fn fetch_worker( + &mut self, + task: &ParkedMixer, + avoid: Option, + ) -> (&mut Worker, usize) { + let idx = self + .workers + .iter() + .position(|w| w.can_schedule(task, avoid)) + .unwrap_or_else(|| { + self.workers.push(Worker::new( + self.next_worker_id.incr(), + self.config.clone(), + self.tx.clone(), + self.stats.clone(), + )); + self.stats.add_worker(); + self.workers.len() - 1 + }); + + (&mut self.workers[idx], idx) + } + + pub fn spawn(mut self) { + tokio::spawn(async move { self.run().await }); + } +} + +#[cfg(test)] +mod test { + use super::*; + use crate::{ + constants::test_data::FILE_WEBM_TARGET, + driver::{tasks::mixer::Mixer, OutputMode}, + input::File, + Driver, + }; + use tokio::runtime::Handle; + + #[tokio::test] + async fn inactive_mixers_dont_need_threads() { + let sched = Scheduler::new(Config::default()); + let cfg = DriverConfig::default().scheduler(sched.clone()); + + let _drivers: Vec = (0..1024).map(|_| Driver::new(cfg.clone())).collect(); + tokio::time::sleep(Duration::from_secs(1)).await; + + assert_eq!(sched.total_tasks(), 1024); + assert_eq!(sched.live_tasks(), 0); + assert_eq!(sched.worker_threads(), 0); + } + + #[tokio::test] + async fn active_mixers_spawn_threads() { + let mut config = Config::default(); + config.move_expensive_tasks = false; + + let sched = Scheduler::new(config); + let (pkt_tx, _pkt_rx) = flume::unbounded(); + let cfg = DriverConfig::default() + .scheduler(sched.clone()) + .override_connection(Some(OutputMode::Rtp(pkt_tx))); + + let n_tasks = 1024; + + let _drivers: Vec = (0..n_tasks) + .map(|_| { + let mut driver = Driver::new(cfg.clone()); + let file = File::new(FILE_WEBM_TARGET); + driver.play_input(file.into()); + driver + }) + .collect(); + tokio::time::sleep(Duration::from_secs(10)).await; + + assert_eq!(sched.total_tasks(), n_tasks); + assert_eq!(sched.live_tasks(), n_tasks); + assert_eq!( + sched.worker_threads(), + n_tasks / (DEFAULT_MIXERS_PER_THREAD.get() as u64) + ); + } + + #[tokio::test] + async fn excess_threads_are_cleaned_up() { + let mut config = Config::default(); + config.strategy = Mode::MaxPerThread(1.try_into().unwrap()); + let (mut core, tx) = Idle::new(config.clone()); + + const TEST_TIMER: Duration = Duration::from_millis(500); + core.cull_timer = TEST_TIMER; + + let mut next_id = TaskId::new(); + let mut thread_id = WorkerId::new(); + let mut handles = vec![]; + for i in 0..2 { + let mut worker = Worker::new( + thread_id.incr(), + config.clone(), + tx.clone(), + core.stats.clone(), + ); + let ((mixer, listeners), track_handle) = + Mixer::test_with_float_unending(Handle::current(), false); + + let send_mixer = ParkedMixer { + mixer: Box::new(mixer), + ssrc: i, + rtp_sequence: i as u16, + rtp_timestamp: i, + park_time: TokInstant::now().into(), + last_cost: None, + }; + core.stats.add_idle_mixer(); + core.stats.move_mixer_to_live(); + worker.schedule_mixer(next_id.incr(), send_mixer).unwrap(); + handles.push((track_handle, listeners)); + core.workers.push(worker); + } + + let mut timer = tokio::time::interval(TIMESTEP_LENGTH); + assert!(core.run_once(&mut timer).await); + + // Stop one of the handles, allow it to exit, and then run core again. + handles[1].0.stop().unwrap(); + while core.workers[1].is_busy() { + assert!(core.run_once(&mut timer).await); + } + + tokio::time::sleep(TEST_TIMER + Duration::from_secs(1)).await; + while core.workers.len() != 1 { + assert!(core.run_once(&mut timer).await); + } + + assert_eq!(core.stats.worker_threads(), 0); + } +} diff --git a/src/driver/scheduler/live.rs b/src/driver/scheduler/live.rs new file mode 100644 index 0000000..c649671 --- /dev/null +++ b/src/driver/scheduler/live.rs @@ -0,0 +1,821 @@ +use std::{ + sync::Arc, + time::{Duration, Instant}, +}; + +use discortp::rtp::{MutableRtpPacket, RtpPacket}; +use flume::{Receiver, SendError, Sender, TryRecvError}; +use tokio::time::Instant as TokInstant; + +use crate::{ + constants::*, + driver::tasks::{error::Error as DriverError, mixer::Mixer}, +}; + +#[cfg(test)] +use crate::driver::test_config::TickStyle; + +use super::*; + +/// The send-half of a worker thread, with bookkeeping mechanisms to help +/// the idle task schedule incoming tasks. +pub struct Worker { + id: WorkerId, + stats: Arc, + config: Config, + tx: Sender<(TaskId, ParkedMixer)>, + known_empty_since: Option, +} + +#[allow(missing_docs)] +impl Worker { + pub fn new( + id: WorkerId, + config: Config, + sched_tx: Sender, + global_stats: Arc, + ) -> Self { + let stats = Arc::new(LiveStatBlock::default()); + let (live_tx, live_rx) = flume::unbounded(); + + let core = Live::new( + id, + config.clone(), + global_stats, + stats.clone(), + live_rx, + sched_tx, + ); + core.spawn(); + + Self { + id, + stats, + config, + tx: live_tx, + known_empty_since: None, + } + } + + /// Mark the worker thread as idle from the present time if it reports no tasks. + /// + /// This time information is used for thread culling. + #[inline] + pub fn try_mark_empty(&mut self, now: TokInstant) -> Option { + if self.stats.live_mixers() == 0 { + self.known_empty_since.get_or_insert(now); + } else { + self.mark_busy(); + } + + self.known_empty_since + } + + /// Unset the thread culling time on this worker. + #[inline] + pub fn mark_busy(&mut self) { + self.known_empty_since = None; + } + + #[cfg(test)] + #[inline] + pub fn is_busy(&mut self) -> bool { + self.known_empty_since.is_none() + } + + /// Return whether this thread has enough room (task count, spare cycles) + /// for the given task. + #[inline] + pub fn can_schedule(&self, task: &ParkedMixer, avoid: Option) -> bool { + avoid.map_or(true, |id| !self.has_id(id)) + && self.stats.has_room(&self.config.strategy, task) + } + + #[inline] + pub fn stats(&self) -> Arc { + self.stats.clone() + } + + /// Increment this worker's statistics and hand off a task for execution. + #[inline] + pub fn schedule_mixer( + &mut self, + id: TaskId, + task: ParkedMixer, + ) -> Result<(), SendError<(TaskId, ParkedMixer)>> { + self.mark_busy(); + self.stats.add_mixer(); + self.tx.send((id, task)) + } + + pub fn has_id(&self, id: WorkerId) -> bool { + self.id == id + } +} + +const PACKETS_PER_BLOCK: usize = 16; +const MEMORY_CULL_TIMER: Duration = Duration::from_secs(10); + +/// A synchronous thread responsible for mixing, encoding, encrypting, and +/// sending the audio output of many `Mixer`s. +/// +/// `Mixer`s remain `Box`ed due to large move costs, and unboxing them appeared to have +/// a 5--10% perf cost from benchmarks. +pub struct Live { + packets: Vec>, + packet_lens: Vec, + #[allow(clippy::vec_box)] + tasks: Vec>, + ids: Vec, + to_cull: Vec, + + deadline: Instant, + start_of_work: Option, + + id: WorkerId, + config: Config, + stats: Arc, + global_stats: Arc, + rx: Receiver<(TaskId, ParkedMixer)>, + tx: Sender, + + excess_buffer_cull_time: Option, +} + +#[allow(missing_docs)] +impl Live { + pub fn new( + id: WorkerId, + config: Config, + global_stats: Arc, + stats: Arc, + rx: Receiver<(TaskId, ParkedMixer)>, + tx: Sender, + ) -> Self { + let to_prealloc = config.strategy.prealloc_size(); + + let block_size = config + .strategy + .task_limit() + .unwrap_or(PACKETS_PER_BLOCK) + .min(PACKETS_PER_BLOCK); + + let packets = vec![packet_block(block_size)]; + + Self { + packets, + packet_lens: Vec::with_capacity(to_prealloc), + tasks: Vec::with_capacity(to_prealloc), + ids: Vec::with_capacity(to_prealloc), + to_cull: Vec::with_capacity(to_prealloc), + + deadline: Instant::now(), + start_of_work: None, + + id, + config, + stats, + global_stats, + rx, + tx, + + excess_buffer_cull_time: None, + } + } + + #[inline] + fn run(&mut self) { + while self.run_once() {} + self.global_stats.remove_worker(); + } + + /// Returns whether the loop should exit (i.e., culled by main `Scheduler`). + #[inline] + pub fn run_once(&mut self) -> bool { + // Check for new tasks. + if self.handle_scheduler_msgs().is_err() { + return false; + } + + // Receive commands for each task. + self.handle_task_msgs(); + + // Move any idle calls back to the global pool. + self.demote_and_remove_mixers(); + + // Take a clock measure before and after each packet. + let mut pre_pkt_time = Instant::now(); + let mut worst_task = (0, Duration::default()); + + for (i, (packet_len, mixer)) in self + .packet_lens + .iter_mut() + .zip(self.tasks.iter_mut()) + .enumerate() + { + let (block, inner) = get_memory_indices(i); + match mixer.mix_and_build_packet(&mut self.packets[block][inner..][..VOICE_PACKET_MAX]) + { + Ok(written_sz) => *packet_len = written_sz, + e => { + *packet_len = 0; + rebuild_if_err(mixer, e, &mut self.to_cull, i); + }, + } + let post_pkt_time = Instant::now(); + let cost = post_pkt_time.duration_since(pre_pkt_time); + if cost > worst_task.1 { + worst_task = (i, cost); + } + pre_pkt_time = post_pkt_time; + } + + let end_of_work = pre_pkt_time; + + if let Some(start_of_work) = self.start_of_work { + let ns_cost = self.stats.store_compute_cost(end_of_work - start_of_work); + + if self.config.move_expensive_tasks + && ns_cost >= RESCHEDULE_THRESHOLD + && self.ids.len() > 1 + { + self.offload_mixer(worst_task.0, worst_task.1); + } + } + + self.timed_remove_excess_blocks(end_of_work); + + // Wait till the right time to send this packet: + // usually a 20ms tick, in test modes this is either a finite number of runs or user input. + self.march_deadline(); + + // Send all. + self.start_of_work = Some(Instant::now()); + for (i, (packet_len, mixer)) in self + .packet_lens + .iter_mut() + .zip(self.tasks.iter_mut()) + .enumerate() + { + let (block, inner) = get_memory_indices(i); + let packet = &mut self.packets[block][inner..]; + if *packet_len > 0 { + let res = mixer.send_packet(&packet[..*packet_len]); + rebuild_if_err(mixer, res, &mut self.to_cull, i); + } + #[cfg(test)] + if *packet_len == 0 { + mixer.test_signal_empty_tick(); + } + advance_rtp_counters(packet); + } + + for (i, mixer) in self.tasks.iter_mut().enumerate() { + let res = mixer + .audio_commands_events() + .and_then(|_| mixer.check_and_send_keepalive(self.start_of_work)); + rebuild_if_err(mixer, res, &mut self.to_cull, i); + } + + true + } + + #[cfg(test)] + fn _march_deadline(&mut self) { + // For testing, assume all will have same tick style. + // Only count 'remaining loops' on one of the nodes. + let mixer = self.tasks.get_mut(0).map(|m| { + let style = m.config.tick_style.clone(); + (m, style) + }); + + match mixer { + None | Some((_, TickStyle::Timed)) => { + std::thread::sleep(self.deadline.saturating_duration_since(Instant::now())); + self.deadline += TIMESTEP_LENGTH; + }, + Some((m, TickStyle::UntimedWithExecLimit(rx))) => { + if m.remaining_loops.is_none() { + if let Ok(new_val) = rx.recv() { + m.remaining_loops = Some(new_val.wrapping_sub(1)); + } + } + + if let Some(cnt) = m.remaining_loops.as_mut() { + if *cnt == 0 { + m.remaining_loops = None; + } else { + *cnt = cnt.wrapping_sub(1); + } + } + }, + } + } + + #[cfg(not(test))] + #[inline(always)] + #[allow(clippy::inline_always)] + fn _march_deadline(&mut self) { + std::thread::sleep(self.deadline.saturating_duration_since(Instant::now())); + self.deadline += TIMESTEP_LENGTH; + } + + #[inline] + fn march_deadline(&mut self) { + #[cfg(feature = "internals")] + { + return; + } + + self._march_deadline(); + } + + #[inline] + fn handle_scheduler_msgs(&mut self) -> Result<(), ()> { + let mut activation_time = None; + loop { + match self.rx.try_recv() { + Ok((id, task)) => { + self.add_task( + task, + id, + *activation_time.get_or_insert_with(|| { + self.deadline + .checked_sub(TIMESTEP_LENGTH) + .unwrap_or(self.deadline) + }), + ); + }, + Err(TryRecvError::Empty) => break, + Err(TryRecvError::Disconnected) => return Err(()), + } + } + + Ok(()) + } + + /// Handle messages from each tasks's `Driver`, marking dead tasks for removal. + #[inline] + fn handle_task_msgs(&mut self) { + for (i, (packet, mixer)) in self + .packets + .iter_mut() + .flat_map(|v| v.chunks_exact_mut(VOICE_PACKET_MAX)) + .zip(self.tasks.iter_mut()) + .enumerate() + { + let mut events_failure = false; + let mut conn_failure = false; + + let fatal = loop { + match mixer.mix_rx.try_recv() { + Ok(m) => { + let (events, conn, should_exit) = mixer.handle_message(m, packet); + events_failure |= events; + conn_failure |= conn; + + if should_exit { + break true; + } + }, + Err(TryRecvError::Disconnected) => { + break true; + }, + + Err(TryRecvError::Empty) => { + break false; + }, + } + }; + + if fatal || mixer.do_rebuilds(events_failure, conn_failure).is_err() { + // this is not zipped in because it is *not* needed most ticks. + self.to_cull[i] = true; + } + } + } + + #[cfg(feature = "internals")] + #[inline] + pub fn mark_for_cull(&mut self, idx: usize) { + self.to_cull[idx] = true; + } + + /// Check and demote for any tasks without live audio sources who have sent all + /// necessary silent frames (or remove dead tasks). + /// + /// This must occur *after* handling per-track events to prevent erroneously + /// descheduling tasks. + #[inline] + pub fn demote_and_remove_mixers(&mut self) { + let mut i = 0; + while i < self.tasks.len() { + #[cfg(test)] + let force_conn = self.tasks[i].config.override_connection.is_some(); + #[cfg(not(test))] + let force_conn = false; + + // Benchmarking suggests that these asserts remove some bounds checks for us. + assert!(i < self.tasks.len()); + assert!(i < self.to_cull.len()); + + if self.to_cull[i] + || (self.tasks[i].tracks.is_empty() && self.tasks[i].silence_frames == 0) + || !(self.tasks[i].conn_active.is_some() || force_conn) + { + self.stats.remove_mixer(); + + if let Some((id, parked)) = self.remove_task(i) { + self.global_stats.move_mixer_to_idle(); + let _ = self.tx.send(SchedulerMessage::Demote(id, parked)); + } else { + self.global_stats.remove_live_mixer(); + } + } else { + i += 1; + } + } + } + + /// Return a given mixer to the main scheduler if this worker is overloaded. + #[inline] + pub fn offload_mixer(&mut self, idx: usize, cost: Duration) { + self.stats.remove_mixer(); + + if let Some((id, mut parked)) = self.remove_task(idx) { + self.global_stats.move_mixer_to_idle(); + parked.last_cost = Some(cost); + let _ = self + .tx + .send(SchedulerMessage::Overspill(self.id, id, parked)); + } else { + self.global_stats.remove_live_mixer(); + } + } + + #[inline] + fn needed_blocks(&self) -> usize { + let div = self.ids.len() / PACKETS_PER_BLOCK; + let rem = self.ids.len() % PACKETS_PER_BLOCK; + (rem != 0) as usize + div + } + + #[inline] + fn has_excess_blocks(&self) -> bool { + self.packets.len() > self.needed_blocks() + } + + #[inline] + fn remove_excess_blocks(&mut self) { + self.packets.truncate(self.needed_blocks()); + } + + /// Try to offload excess packet buffers. + /// + /// If there is currently overallocation, then store the first time at which + /// this was seenb. If this condition persists past `MEMORY_CULL_TIMER`, remove + /// unnecessary blocks. + #[inline] + fn timed_remove_excess_blocks(&mut self, now: Instant) { + if self.has_excess_blocks() { + if let Some(mark_time) = self.excess_buffer_cull_time { + if now.duration_since(mark_time) >= MEMORY_CULL_TIMER { + self.remove_excess_blocks(); + self.excess_buffer_cull_time = None; + } + } else { + self.excess_buffer_cull_time = Some(now); + } + } else { + self.excess_buffer_cull_time = None; + } + } + + #[inline] + fn add_task(&mut self, task: ParkedMixer, id: TaskId, activation_time: Instant) { + let idx = self.ids.len(); + + let elapsed = task.park_time - activation_time; + + let samples_f64 = elapsed.as_secs_f64() * (SAMPLE_RATE_RAW as f64); + let mod_samples = (samples_f64 as u64) as u32; + let rtp_timestamp = task.rtp_timestamp.wrapping_add(mod_samples); + + self.ids.push(id); + self.tasks.push(task.mixer); + self.packet_lens.push(0); + self.to_cull.push(false); + + let (block, inner_idx) = get_memory_indices(idx); + + while self.packets.len() <= block { + self.add_packet_block(); + } + let packet = &mut self.packets[block][inner_idx..][..VOICE_PACKET_MAX]; + + let mut rtp = MutableRtpPacket::new(packet).expect( + "FATAL: Too few bytes in self.packet for RTP header.\ + (Blame: VOICE_PACKET_MAX?)", + ); + rtp.set_ssrc(task.ssrc); + rtp.set_timestamp(rtp_timestamp.into()); + rtp.set_sequence(task.rtp_sequence.into()); + } + + /// Allocate and store a new packet block. + /// + /// This will be full-size (`PACKETS_PER_BLOCK`) unless this block + /// is a) the last required for the task limit and b) this limit + /// is not aligned to `PACKETS_PER_BLOCK`. + #[inline] + fn add_packet_block(&mut self) { + let n_packets = if let Some(limit) = self.config.strategy.task_limit() { + let (block, inner) = get_memory_indices_unscaled(limit); + if self.packets.len() < block || inner == 0 { + PACKETS_PER_BLOCK + } else { + inner + } + } else { + PACKETS_PER_BLOCK + }; + self.packets.push(packet_block(n_packets)); + } + + #[cfg(any(test, feature = "internals"))] + #[inline] + pub fn add_task_direct(&mut self, task: Mixer, id: TaskId) { + let id_0 = id.get(); + self.add_task( + ParkedMixer { + mixer: Box::new(task), + ssrc: id_0 as u32, + rtp_sequence: id_0 as u16, + rtp_timestamp: id_0 as u32, + park_time: Instant::now(), + last_cost: None, + }, + id, + Instant::now(), + ); + } + + /// Remove a `Mixer`, returning it to the idle scheduler. + /// + /// This operates by `swap_remove`ing each element of a Mixer's state, including + /// on RTP packet headers. This is achieved by setting up a memcpy between + /// buffer segments. + #[inline] + pub fn remove_task(&mut self, idx: usize) -> Option<(TaskId, ParkedMixer)> { + let end = self.tasks.len() - 1; + + let id = self.ids.swap_remove(idx); + let _len = self.packet_lens.swap_remove(idx); + let mixer = self.tasks.swap_remove(idx); + let alive = !self.to_cull.swap_remove(idx); + + let (block, inner_idx) = get_memory_indices(idx); + + let (removed, replacement) = if end > idx { + let (end_block, end_inner) = get_memory_indices(end); + let (rest, target_block) = self.packets.split_at_mut(end_block); + let (last_block, end_pkt) = target_block[0].split_at_mut(end_inner); + + if end_block == block { + (&mut last_block[inner_idx..], Some(end_pkt)) + } else { + (&mut rest[block][inner_idx..], Some(end_pkt)) + } + } else { + (&mut self.packets[block][inner_idx..], None) + }; + + let rtp = RtpPacket::new(removed).expect( + "FATAL: Too few bytes in self.packet for RTP header.\ + (Blame: VOICE_PACKET_MAX?)", + ); + let ssrc = rtp.get_ssrc(); + let rtp_timestamp = rtp.get_timestamp().into(); + let rtp_sequence = rtp.get_sequence().into(); + + if let Some(replacement) = replacement { + // Copy the whole packet header since we know it'll be 4B aligned. + // 'Just necessary fields' is 2B aligned. + const COPY_LEN: usize = RtpPacket::minimum_packet_size(); + removed[..COPY_LEN].copy_from_slice(&replacement[..COPY_LEN]); + } + + alive.then(move || { + let park_time = Instant::now(); + + ( + id, + ParkedMixer { + mixer, + ssrc, + rtp_sequence, + rtp_timestamp, + park_time, + last_cost: None, + }, + ) + }) + } + + /// Spawn a new sync thread to manage `Mixer`s. + fn spawn(mut self) { + std::thread::spawn(move || { + self.run(); + }); + } +} + +/// Initialises a packet block of the required size, prefilling any constant RTP data. +#[inline] +fn packet_block(n_packets: usize) -> Box<[u8]> { + let mut packets = vec![0u8; VOICE_PACKET_MAX * n_packets].into_boxed_slice(); + + for packet in packets.chunks_exact_mut(VOICE_PACKET_MAX) { + let mut rtp = MutableRtpPacket::new(packet).expect( + "FATAL: Too few bytes in self.packet for RTP header.\ + (Blame: VOICE_PACKET_MAX?)", + ); + rtp.set_version(RTP_VERSION); + rtp.set_payload_type(RTP_PROFILE_TYPE); + } + + packets +} + +/// Returns the block index into `self.packets` and the packet number in +/// the block for a given worker's index. +#[inline] +fn get_memory_indices_unscaled(idx: usize) -> (usize, usize) { + let block_size = PACKETS_PER_BLOCK; + (idx / block_size, idx % block_size) +} + +/// Returns the block index into `self.packets` and the byte offset into +/// a packet block for a given worker's index. +#[inline] +fn get_memory_indices(idx: usize) -> (usize, usize) { + let (block, inner_unscaled) = get_memory_indices_unscaled(idx); + (block, inner_unscaled * VOICE_PACKET_MAX) +} + +#[inline] +fn advance_rtp_counters(packet: &mut [u8]) { + let mut rtp = MutableRtpPacket::new(packet).expect( + "FATAL: Too few bytes in self.packet for RTP header.\ + (Blame: VOICE_PACKET_MAX?)", + ); + rtp.set_sequence(rtp.get_sequence() + 1); + rtp.set_timestamp(rtp.get_timestamp() + MONO_FRAME_SIZE as u32); +} + +/// Structured slightly confusingly: we only want to even access `cull_markers` +/// in the event of error. +#[inline] +fn rebuild_if_err( + mixer: &mut Box, + res: Result, + cull_markers: &mut [bool], + idx: usize, +) { + if let Err(e) = res { + cull_markers[idx] |= mixer + .do_rebuilds( + e.should_trigger_interconnect_rebuild(), + e.should_trigger_connect(), + ) + .is_err(); + } +} + +#[cfg(test)] +mod test { + use super::*; + use crate::driver::test_impls::*; + use tokio::runtime::Handle; + + fn rtp_has_index(pkt: &[u8], sentinel_val: u16) { + let rtp = RtpPacket::new(pkt).unwrap(); + + assert_eq!(rtp.get_version(), RTP_VERSION); + assert_eq!(rtp.get_padding(), 0); + assert_eq!(rtp.get_extension(), 0); + assert_eq!(rtp.get_csrc_count(), 0); + assert_eq!(rtp.get_marker(), 0); + assert_eq!(rtp.get_payload_type(), RTP_PROFILE_TYPE); + assert_eq!(rtp.get_sequence(), sentinel_val.into()); + assert_eq!(rtp.get_timestamp(), (sentinel_val as u32).into()); + assert_eq!(rtp.get_ssrc(), sentinel_val as u32); + } + + #[tokio::test] + async fn block_alloc_is_partial_small() { + let n_mixers = 1; + let (sched, _listeners) = MockScheduler::from_mixers( + Some(Mode::MaxPerThread(n_mixers.try_into().unwrap())), + (0..n_mixers) + .map(|_| Mixer::test_with_float(1, Handle::current(), false)) + .collect(), + ); + + assert_eq!(sched.core.packets.len(), 1); + assert_eq!(sched.core.packets[0].len(), VOICE_PACKET_MAX); + } + + #[tokio::test] + async fn block_alloc_is_partial_large() { + let n_mixers = 33; + let (sched, _listeners) = MockScheduler::from_mixers( + Some(Mode::MaxPerThread(n_mixers.try_into().unwrap())), + (0..n_mixers) + .map(|_| Mixer::test_with_float(1, Handle::current(), false)) + .collect(), + ); + + assert_eq!(sched.core.packets.len(), 3); + assert_eq!( + sched.core.packets[0].len(), + PACKETS_PER_BLOCK * VOICE_PACKET_MAX + ); + assert_eq!( + sched.core.packets[1].len(), + PACKETS_PER_BLOCK * VOICE_PACKET_MAX + ); + assert_eq!(sched.core.packets[2].len(), VOICE_PACKET_MAX); + } + + #[tokio::test] + async fn deletion_moves_pkt_header() { + let (mut sched, _listeners) = MockScheduler::from_mixers( + None, + (0..PACKETS_PER_BLOCK) + .map(|_| Mixer::test_with_float(1, Handle::current(), false)) + .collect(), + ); + + let last_idx = (PACKETS_PER_BLOCK - 1) as u16; + + // Remove head. + sched.core.remove_task(0); + rtp_has_index(&sched.core.packets[0], last_idx); + + // Remove head. + sched.core.remove_task(5); + rtp_has_index(&sched.core.packets[0][5 * VOICE_PACKET_MAX..], last_idx - 1); + } + + #[tokio::test] + async fn deletion_moves_pkt_header_multiblock() { + let n_pkts = PACKETS_PER_BLOCK + 8; + let (mut sched, _listeners) = MockScheduler::from_mixers( + None, + (0..n_pkts) + .map(|_| Mixer::test_with_float(1, Handle::current(), false)) + .collect(), + ); + + let last_idx = (n_pkts - 1) as u16; + + // Remove head (read from block 1 into block 0). + sched.core.remove_task(0); + rtp_has_index(&sched.core.packets[0], last_idx); + + // Remove later (read from block 1 into block 1). + sched.core.remove_task(17); + rtp_has_index(&sched.core.packets[1][VOICE_PACKET_MAX..], last_idx - 1); + } + + #[tokio::test] + async fn packet_blocks_are_cleaned_up() { + // Allocate 2 blocks. + let n_pkts = PACKETS_PER_BLOCK + 1; + let (mut sched, _listeners) = MockScheduler::from_mixers( + None, + (0..n_pkts) + .map(|_| Mixer::test_with_float(1, Handle::current(), false)) + .collect(), + ); + + // Assert no cleanup at start. + assert!(sched.core.run_once()); + assert_eq!(sched.core.needed_blocks(), 2); + assert!(sched.core.excess_buffer_cull_time.is_none()); + + // Remove only entry in last block. Cleanup should be sched'd. + sched.core.remove_task(n_pkts - 1); + assert!(sched.core.run_once()); + assert!(sched.core.has_excess_blocks()); + assert!(sched.core.excess_buffer_cull_time.is_some()); + + tokio::time::sleep(Duration::from_secs(2) + MEMORY_CULL_TIMER).await; + + // Cleanup should be unsched'd. + assert!(sched.core.run_once()); + assert!(sched.core.excess_buffer_cull_time.is_none()); + assert!(!sched.core.has_excess_blocks()); + } +} diff --git a/src/driver/scheduler/mod.rs b/src/driver/scheduler/mod.rs new file mode 100644 index 0000000..f7d6ec2 --- /dev/null +++ b/src/driver/scheduler/mod.rs @@ -0,0 +1,174 @@ +use std::{error::Error as StdError, fmt::Display, num::NonZeroUsize, sync::Arc}; + +use flume::{Receiver, RecvError, Sender}; +use once_cell::sync::Lazy; + +use crate::{constants::TIMESTEP_LENGTH, Config as DriverConfig}; + +use super::tasks::message::{Interconnect, MixerMessage}; + +mod config; +mod idle; +mod live; +mod stats; +mod task; + +pub use config::*; +use idle::*; +pub use live::*; +pub use stats::*; +pub use task::*; + +/// A soft maximum of 90% of the 20ms budget to account for variance in execution time. +const RESCHEDULE_THRESHOLD: u64 = ((TIMESTEP_LENGTH.subsec_nanos() as u64) * 9) / 10; + +const DEFAULT_MIXERS_PER_THREAD: NonZeroUsize = match NonZeroUsize::new(16) { + Some(v) => v, + None => [][0], +}; + +/// The default shared scheduler instance. +/// +/// This is built using the default value of [`ScheduleMode`]. Users desiring +/// a custom strategy should avoid calling [`Config::default`]. +/// +/// [`Config::default`]: crate::Config::default +/// [`ScheduleMode`]: Mode +pub static DEFAULT_SCHEDULER: Lazy = Lazy::new(Scheduler::default); + +/// A reference to a shared group of threads used for running idle and active +/// audio threads. +#[derive(Clone, Debug)] +pub struct Scheduler { + inner: Arc, +} + +/// Inner contents of a [`Scheduler`] instance. +/// +/// This is an `Arc` around `Arc`'d contents so that we can make use of the +/// drop check on `Scheduler` to clean up resources. +#[derive(Clone, Debug)] +struct InnerScheduler { + tx: Sender, + stats: Arc, +} + +impl Scheduler { + /// Create a new mixer scheduler from the allocation strategy in `config`. + #[must_use] + pub fn new(config: Config) -> Self { + let (core, tx) = Idle::new(config); + + let stats = core.stats.clone(); + core.spawn(); + + let inner = Arc::new(InnerScheduler { tx, stats }); + + Self { inner } + } + + pub(crate) fn new_mixer( + &self, + config: &DriverConfig, + ic: Interconnect, + rx: Receiver, + ) { + self.inner + .tx + .send(SchedulerMessage::NewMixer(rx, ic, config.clone())) + .unwrap(); + } + + /// Returns the total number of calls (idle and active) scheduled. + #[must_use] + pub fn total_tasks(&self) -> u64 { + self.inner.stats.total_mixers() + } + + /// Returns the total number of *active* calls scheduled and processing + /// audio. + #[must_use] + pub fn live_tasks(&self) -> u64 { + self.inner.stats.live_mixers() + } + + /// Returns the total number of threads spawned to process live audio sessions. + #[must_use] + pub fn worker_threads(&self) -> u64 { + self.inner.stats.worker_threads() + } + + /// Request a list of handles to statistics for currently live workers. + pub async fn worker_thread_stats(&self) -> Result>, Error> { + let (tx, rx) = flume::bounded(1); + _ = self.inner.tx.send(SchedulerMessage::GetStats(tx)); + + rx.recv_async().await.map_err(Error::from) + } + + /// Request a list of handles to statistics for currently live workers with a blocking call. + pub fn worker_thread_stats_blocking(&self) -> Result>, Error> { + let (tx, rx) = flume::bounded(1); + _ = self.inner.tx.send(SchedulerMessage::GetStats(tx)); + + rx.recv().map_err(Error::from) + } +} + +impl Drop for InnerScheduler { + fn drop(&mut self) { + _ = self.tx.send(SchedulerMessage::Kill); + } +} + +impl Default for Scheduler { + fn default() -> Self { + Scheduler::new(Config::default()) + } +} + +/// Control messages for a scheduler. +pub enum SchedulerMessage { + /// Build a new `Mixer` as part of the initialisation of a `Driver`. + NewMixer(Receiver, Interconnect, DriverConfig), + /// Forward a command for + Do(TaskId, MixerMessage), + /// Return a `Mixer` from a worker back to the idle pool. + Demote(TaskId, ParkedMixer), + /// Move an expensive `Mixer` to another thread in the worker pool. + Overspill(WorkerId, TaskId, ParkedMixer), + /// Request a copy of all per-worker statistics. + GetStats(Sender>>), + /// Cleanup once all `Scheduler` handles are dropped. + Kill, +} + +/// Errors encountered when communicating with the internals of a [`Scheduler`]. +/// +/// [`Scheduler`]: crate::driver::Scheduler +#[non_exhaustive] +#[derive(Debug)] +pub enum Error { + /// The scheduler exited or crashed while awating the request. + Disconnected, +} + +impl Display for Error { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Self::Disconnected => f.write_str("the scheduler terminated mid-request"), + } + } +} + +impl StdError for Error { + fn source(&self) -> Option<&(dyn StdError + 'static)> { + None + } +} + +impl From for Error { + fn from(_: RecvError) -> Self { + Self::Disconnected + } +} diff --git a/src/driver/scheduler/stats.rs b/src/driver/scheduler/stats.rs new file mode 100644 index 0000000..d1f10ea --- /dev/null +++ b/src/driver/scheduler/stats.rs @@ -0,0 +1,134 @@ +use std::{ + sync::atomic::{AtomicU64, Ordering}, + time::Duration, +}; + +use super::{Mode, ParkedMixer, RESCHEDULE_THRESHOLD}; + +/// Statistics shared by an entire `Scheduler`. +#[derive(Debug, Default)] +pub struct StatBlock { + total: AtomicU64, + live: AtomicU64, + threads: AtomicU64, +} + +#[allow(missing_docs)] +impl StatBlock { + #[inline] + pub fn total_mixers(&self) -> u64 { + self.total.load(Ordering::Relaxed) + } + + #[inline] + pub fn live_mixers(&self) -> u64 { + self.live.load(Ordering::Relaxed) + } + + #[inline] + pub fn worker_threads(&self) -> u64 { + self.threads.load(Ordering::Relaxed) + } + + #[inline] + pub fn add_idle_mixer(&self) { + self.total.fetch_add(1, Ordering::Relaxed); + } + + #[inline] + pub fn remove_idle_mixers(&self, n: u64) { + self.total.fetch_sub(n, Ordering::Relaxed); + } + + #[inline] + pub fn move_mixer_to_live(&self) { + self.live.fetch_add(1, Ordering::Relaxed); + } + + #[inline] + pub fn move_mixer_to_idle(&self) { + self.move_mixers_to_idle(1); + } + + #[inline] + pub fn move_mixers_to_idle(&self, n: u64) { + self.live.fetch_sub(n, Ordering::Relaxed); + } + + #[inline] + pub fn remove_live_mixer(&self) { + self.remove_live_mixers(1); + } + + #[inline] + pub fn remove_live_mixers(&self, n: u64) { + self.move_mixers_to_idle(n); + self.remove_idle_mixers(n); + } + + #[inline] + pub fn add_worker(&self) { + self.threads.fetch_add(1, Ordering::Relaxed); + } + + #[inline] + pub fn remove_worker(&self) { + self.threads.fetch_sub(1, Ordering::Relaxed); + } +} + +/// Runtime statistics for an individual worker. +/// +/// Individual statistics are measured atomically -- the worker thread +/// may have been cleaned up, or its mixer count may not match the +/// count when [`Self::last_compute_cost_ns`] was set. +#[derive(Debug, Default)] +pub struct LiveStatBlock { + live: AtomicU64, + last_ns: AtomicU64, +} + +impl LiveStatBlock { + /// Returns the number of mixer tasks scheduled on this worker thread. + #[inline] + pub fn live_mixers(&self) -> u64 { + self.live.load(Ordering::Relaxed) + } + + #[inline] + pub(crate) fn add_mixer(&self) { + self.live.fetch_add(1, Ordering::Relaxed); + } + + #[inline] + pub(crate) fn remove_mixer(&self) { + self.live.fetch_sub(1, Ordering::Relaxed); + } + + #[inline] + pub(crate) fn store_compute_cost(&self, work: Duration) -> u64 { + let cost = work.as_nanos() as u64; + self.last_ns.store(cost, Ordering::Relaxed); + cost + } + + /// Returns the number of nanoseconds required to process all worker threads' + /// packet transmission, mixing, encoding, and encryption in the last tick. + #[inline] + pub fn last_compute_cost_ns(&self) -> u64 { + self.last_ns.load(Ordering::Relaxed) + } + + #[inline] + pub(crate) fn has_room(&self, strategy: &Mode, task: &ParkedMixer) -> bool { + let task_room = strategy + .task_limit() + .map_or(true, |limit| self.live_mixers() < limit as u64); + + let exec_room = task.last_cost.map_or(true, |cost| { + cost.as_nanos() as u64 + self.last_compute_cost_ns() < RESCHEDULE_THRESHOLD + }); + + task_room && exec_room + } +} diff --git a/src/driver/scheduler/task.rs b/src/driver/scheduler/task.rs new file mode 100644 index 0000000..a3d7f85 --- /dev/null +++ b/src/driver/scheduler/task.rs @@ -0,0 +1,187 @@ +use std::{ + marker::PhantomData, + time::{Duration, Instant}, +}; + +use flume::{Receiver, Sender}; +use nohash_hasher::IsEnabled; +use rand::random; +use tokio::runtime::Handle; + +use crate::{ + driver::tasks::{ + error::Error as DriverError, + message::{EventMessage, Interconnect, MixerMessage}, + mixer::Mixer, + }, + Config, +}; + +use super::SchedulerMessage; + +/// Typesafe counter used to identify individual mixer/worker instances. +#[derive(Copy, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct ResId(u64, PhantomData); +#[allow(missing_docs)] +pub type TaskId = ResId; +#[allow(missing_docs)] +pub type WorkerId = ResId; + +#[allow(missing_docs)] +#[derive(Copy, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct TaskMarker; +#[allow(missing_docs)] +#[derive(Copy, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct WorkerMarker; + +impl IsEnabled for ResId {} + +#[allow(missing_docs)] +impl ResId { + pub fn new() -> Self { + ResId(0, PhantomData) + } + + pub fn incr(&mut self) -> Self { + let out = *self; + self.0 = self.0.wrapping_add(1); + out + } + + #[cfg(any(test, feature = "internals"))] + pub fn get(&self) -> u64 { + self.0 + } +} + +/// An idle mixer instance, externally controlled by a `Driver`. +/// +/// Since we do not allocate packet buffers for idle threads, this +/// struct includes various RTP fields. +pub struct ParkedMixer { + /// Mixer, track, etc. state as well as message receivers. + pub mixer: Box, + /// The SSRC assigned to this voice session. + pub ssrc: u32, + /// The last recorded/generated RTP sequence. + pub rtp_sequence: u16, + /// The last recorded/generated RTP timestamp. + pub rtp_timestamp: u32, + /// The time at which this `Mixer` was made idle. + /// + /// This is used when transitioning to a live state to determine + /// how far we should adjust the RTP timestamp by. + pub park_time: Instant, + /// The last known cost of executing this task, if it had to be moved + /// due to a limit on thread resources. + pub last_cost: Option, +} + +#[allow(missing_docs)] +impl ParkedMixer { + /// Create a new `Mixer` in a parked state. + pub fn new(mix_rx: Receiver, interconnect: Interconnect, config: Config) -> Self { + Self { + mixer: Box::new(Mixer::new(mix_rx, Handle::current(), interconnect, config)), + ssrc: 0, + rtp_sequence: random::(), + rtp_timestamp: random::(), + park_time: Instant::now(), + last_cost: None, + } + } + + /// Spawn a tokio task which forwards any mixer messages to the central `Idle` task pool. + /// + /// Any requests which would cause this mixer to become live will terminate + /// this task. + pub fn spawn_forwarder(&self, tx: Sender, id: TaskId) { + let remote_rx = self.mixer.mix_rx.clone(); + tokio::spawn(async move { + while let Ok(msg) = remote_rx.recv_async().await { + let exit = msg.is_mixer_now_live(); + let dead = tx.send_async(SchedulerMessage::Do(id, msg)).await.is_err(); + if exit || dead { + break; + } + } + }); + } + + /// Returns whether the mixer should exit and be cleaned up. + pub fn handle_message(&mut self, msg: MixerMessage) -> Result { + match msg { + MixerMessage::SetConn(conn, ssrc) => { + // Overridden because + self.ssrc = ssrc; + self.rtp_sequence = random::(); + self.rtp_timestamp = random::(); + self.mixer.conn_active = Some(conn); + self.mixer.update_keepalive(ssrc); + + Ok(false) + }, + MixerMessage::Ws(ws) => { + // Overridden so that we don't mistakenly tell Discord we're speaking. + self.mixer.ws = ws; + self.send_gateway_not_speaking(); + + Ok(false) + }, + msg => { + let (events_failure, conn_failure, should_exit) = + self.mixer.handle_message(msg, &mut []); + + self.mixer + .do_rebuilds(events_failure, conn_failure) + .map_err(|_| ()) + .map(|_| should_exit) + }, + } + } + + /// Handle periodic events attached to this `Mixer`, including timer state + /// on the event thread and UDP keepalives needed to prevent session termination. + /// + /// As we init our UDP sockets as non-blocking via Tokio -> `into_std`, it is + /// safe to call UDP packet sends like this. + pub fn tick_and_keepalive(&mut self, now: Instant) -> Result<(), ()> { + // TODO: should we include an atomic which signals whether the event + // thread *cares*, so we can prevent wakeups? + // Can we do the same for live tracks? + let mut events_failure = self.mixer.fire_event(EventMessage::Tick).is_err(); + + let ka_err = self + .mixer + .check_and_send_keepalive(Some(now)) + .or_else(DriverError::disarm_would_block); + + let conn_failure = if let Err(e) = ka_err { + events_failure |= e.should_trigger_interconnect_rebuild(); + e.should_trigger_connect() + } else { + false + }; + + self.mixer + .do_rebuilds(events_failure, conn_failure) + .map_err(|_| ()) + } + + pub fn send_gateway_speaking(&mut self) -> Result<(), ()> { + if let Err(e) = self.mixer.send_gateway_speaking() { + self.mixer + .do_rebuilds( + e.should_trigger_interconnect_rebuild(), + e.should_trigger_connect(), + ) + .map_err(|_| ()) + } else { + Ok(()) + } + } + + pub fn send_gateway_not_speaking(&self) { + self.mixer.send_gateway_not_speaking(); + } +} diff --git a/src/driver/tasks/message/mixer.rs b/src/driver/tasks/message/mixer.rs index 585e135..0b1c17b 100644 --- a/src/driver/tasks/message/mixer.rs +++ b/src/driver/tasks/message/mixer.rs @@ -39,6 +39,12 @@ pub enum MixerMessage { Poison, } +impl MixerMessage { + pub fn is_mixer_now_live(&self) -> bool { + matches!(self, Self::AddTrack(_) | Self::SetTrack(Some(_))) + } +} + pub enum MixerInputResultMessage { CreateErr(Arc), ParseErr(Arc), diff --git a/src/driver/tasks/mixer/mod.rs b/src/driver/tasks/mixer/mod.rs index 18892e6..6fc4e51 100644 --- a/src/driver/tasks/mixer/mod.rs +++ b/src/driver/tasks/mixer/mod.rs @@ -34,11 +34,12 @@ use discortp::{ rtp::{MutableRtpPacket, RtpPacket}, MutablePacket, }; -use flume::{Receiver, Sender, TryRecvError}; +use flume::{Receiver, SendError, Sender, TryRecvError}; use rand::random; use rubato::{FftFixedOut, Resampler}; use std::{ io::Write, + result::Result as StdResult, sync::Arc, time::{Duration, Instant}, }; @@ -51,11 +52,11 @@ use symphonia_core::{ units::Time, }; use tokio::runtime::Handle; -use tracing::{debug, error, instrument, warn}; +use tracing::error; use xsalsa20poly1305::TAG_SIZE; #[cfg(test)] -use crate::driver::test_config::{OutputMessage, OutputMode, TickStyle}; +use crate::driver::test_config::{OutputMessage, OutputMode}; #[cfg(test)] use discortp::Packet as _; @@ -70,10 +71,9 @@ pub struct Mixer { pub interconnect: Interconnect, pub mix_rx: Receiver, pub muted: bool, - pub packet: [u8; VOICE_PACKET_MAX], + // pub packet: [u8; VOICE_PACKET_MAX], pub prevent_events: bool, pub silence_frames: u8, - pub skip_sleep: bool, pub soft_clip: SoftClip, thread_pool: BlockyTaskPool, pub ws: Option>, @@ -89,7 +89,10 @@ pub struct Mixer { resample_scratch: AudioBuffer, #[cfg(test)] - remaining_loops: Option, + pub remaining_loops: Option, + + #[cfg(test)] + raw_msg: Option, } fn new_encoder(bitrate: Bitrate, mix_mode: MixMode) -> Result { @@ -111,18 +114,8 @@ impl Mixer { .expect("Failed to create encoder in mixing thread with known-good values."); let soft_clip = SoftClip::new(config.mix_mode.to_opus()); - let mut packet = [0u8; VOICE_PACKET_MAX]; let keepalive_packet = [0u8; MutableKeepalivePacket::minimum_packet_size()]; - let mut rtp = MutableRtpPacket::new(&mut packet[..]).expect( - "FATAL: Too few bytes in self.packet for RTP header.\ - (Blame: VOICE_PACKET_MAX?)", - ); - rtp.set_version(RTP_VERSION); - rtp.set_payload_type(RTP_PROFILE_TYPE); - rtp.set_sequence(random::().into()); - rtp.set_timestamp(random::().into()); - let tracks = Vec::with_capacity(1.max(config.preallocated_tracks)); let track_handles = Vec::with_capacity(1.max(config.preallocated_tracks)); @@ -165,10 +158,8 @@ impl Mixer { interconnect, mix_rx, muted: false, - packet, prevent_events: false, silence_frames: 0, - skip_sleep: false, soft_clip, thread_pool, ws: None, @@ -185,110 +176,55 @@ impl Mixer { #[cfg(test)] remaining_loops: None, + #[cfg(test)] + raw_msg: None, } } - fn run(&mut self) { - let mut events_failure = false; - let mut conn_failure = false; + fn set_bitrate(&mut self, bitrate: Bitrate) -> Result<()> { + self.encoder.set_bitrate(bitrate).map_err(Into::into) + } - #[cfg(test)] - let ignore_check = self.config.override_connection.is_some(); - #[cfg(not(test))] - let ignore_check = false; - - 'runner: loop { - if self.conn_active.is_some() || ignore_check { - loop { - match self.mix_rx.try_recv() { - Ok(m) => { - let (events, conn, should_exit) = self.handle_message(m); - events_failure |= events; - conn_failure |= conn; - - if should_exit { - break 'runner; - } - }, - - Err(TryRecvError::Disconnected) => { - break 'runner; - }, - - Err(TryRecvError::Empty) => { - break; - }, - }; - } - - // The above action may have invalidated the connection; need to re-check! - // Also, if we're in a test mode we should unconditionally run packet mixing code. - if self.conn_active.is_some() || ignore_check { - if let Err(e) = self - .cycle() - .and_then(|_| self.audio_commands_events()) - .and_then(|_| { - self.check_and_send_keepalive() - .or_else(Error::disarm_would_block) - }) - { - events_failure |= e.should_trigger_interconnect_rebuild(); - conn_failure |= e.should_trigger_connect(); - - debug!("Mixer thread cycle: {:?}", e); - } - } - } else { - match self.mix_rx.recv() { - Ok(m) => { - let (events, conn, should_exit) = self.handle_message(m); - events_failure |= events; - conn_failure |= conn; - - if should_exit { - break 'runner; - } - }, - Err(_) => { - break 'runner; - }, - } - } - - // event failure? rebuild interconnect. - // ws or udp failure? full connect - // (soft reconnect is covered by the ws task.) - // - // in both cases, send failure is fatal, - // but will only occur on disconnect. - // expecting this is fairly noisy, so exit silently. - if events_failure { - self.prevent_events = true; - let sent = self - .interconnect - .core - .send(CoreMessage::RebuildInterconnect); - events_failure = false; - - if sent.is_err() { - break; - } - } - - if conn_failure { - self.conn_active = None; - let sent = self.interconnect.core.send(CoreMessage::FullReconnect); - conn_failure = false; - - if sent.is_err() { - break; - } - } + pub(crate) fn do_rebuilds( + &mut self, + event_failure: bool, + conn_failure: bool, + ) -> StdResult<(), SendError> { + // event failure? rebuild interconnect. + // ws or udp failure? full connect + // (soft reconnect is covered by the ws task.) + // + // in both cases, send failure is fatal, + // but will only occur on disconnect. + if event_failure { + self.rebuild_interconnect()?; } + + if conn_failure { + self.full_reconnect_gateway()?; + } + + Ok(()) + } + + pub(crate) fn rebuild_interconnect(&mut self) -> StdResult<(), SendError> { + self.prevent_events = true; + self.interconnect + .core + .send(CoreMessage::RebuildInterconnect) + } + + pub(crate) fn full_reconnect_gateway(&mut self) -> StdResult<(), SendError> { + self.conn_active = None; + self.interconnect.core.send(CoreMessage::FullReconnect) } #[inline] - fn handle_message(&mut self, msg: MixerMessage) -> (bool, bool, bool) { + pub(crate) fn handle_message( + &mut self, + msg: MixerMessage, + packet: &mut [u8], + ) -> (bool, bool, bool) { let mut events_failure = false; let mut conn_failure = false; let mut should_exit = false; @@ -323,7 +259,7 @@ impl Mixer { }, MixerMessage::SetConn(conn, ssrc) => { self.conn_active = Some(conn); - let mut rtp = MutableRtpPacket::new(&mut self.packet[..]).expect( + let mut rtp = MutableRtpPacket::new(packet).expect( "Too few bytes in self.packet for RTP header.\ (Blame: VOICE_PACKET_MAX?)", ); @@ -332,10 +268,7 @@ impl Mixer { rtp.set_timestamp(random::().into()); self.deadline = Instant::now(); - let mut ka = MutableKeepalivePacket::new(&mut self.keepalive_packet[..]) - .expect("FATAL: Insufficient bytes given to keepalive packet."); - ka.set_ssrc(ssrc); - self.keepalive_deadline = self.deadline + UDP_KEEPALIVE_GAP; + self.update_keepalive(ssrc); Ok(()) }, MixerMessage::DropConn => { @@ -420,6 +353,9 @@ impl Mixer { }, MixerMessage::Ws(new_ws_handle) => { self.ws = new_ws_handle; + if let Err(e) = self.send_gateway_speaking() { + conn_failure |= e.should_trigger_connect(); + } Ok(()) }, MixerMessage::Poison => { @@ -436,8 +372,15 @@ impl Mixer { (events_failure, conn_failure, should_exit) } + pub(crate) fn update_keepalive(&mut self, ssrc: u32) { + let mut ka = MutableKeepalivePacket::new(&mut self.keepalive_packet[..]) + .expect("FATAL: Insufficient bytes given to keepalive packet."); + ka.set_ssrc(ssrc); + self.keepalive_deadline = self.deadline + UDP_KEEPALIVE_GAP; + } + #[inline] - fn fire_event(&self, event: EventMessage) -> Result<()> { + pub(crate) fn fire_event(&self, event: EventMessage) -> Result<()> { // As this task is responsible for noticing the potential death of an event context, // it's responsible for not forcibly recreating said context repeatedly. if !self.prevent_events { @@ -476,7 +419,7 @@ impl Mixer { } #[inline] - fn audio_commands_events(&mut self) -> Result<()> { + pub(crate) fn audio_commands_events(&mut self) -> Result<()> { // Apply user commands. for (i, track) in self.tracks.iter_mut().enumerate() { // This causes fallible event system changes, @@ -558,48 +501,19 @@ impl Mixer { } #[cfg(test)] - fn _march_deadline(&mut self) { - match &self.config.tick_style { - TickStyle::Timed => { - std::thread::sleep(self.deadline.saturating_duration_since(Instant::now())); - self.deadline += TIMESTEP_LENGTH; - }, - TickStyle::UntimedWithExecLimit(rx) => { - if self.remaining_loops.is_none() { - if let Ok(new_val) = rx.recv() { - self.remaining_loops = Some(new_val.wrapping_sub(1)); - } - } - - if let Some(cnt) = self.remaining_loops.as_mut() { - if *cnt == 0 { - self.remaining_loops = None; - } else { - *cnt = cnt.wrapping_sub(1); - } - } - }, + #[inline] + pub(crate) fn test_signal_empty_tick(&self) { + match &self.config.override_connection { + Some(OutputMode::Raw(tx)) => + drop(tx.send(crate::driver::test_config::TickMessage::NoEl)), + Some(OutputMode::Rtp(tx)) => + drop(tx.send(crate::driver::test_config::TickMessage::NoEl)), + None => {}, } } - #[cfg(not(test))] - #[inline(always)] - #[allow(clippy::inline_always)] // Justified, this is a very very hot path - fn _march_deadline(&mut self) { - std::thread::sleep(self.deadline.saturating_duration_since(Instant::now())); - self.deadline += TIMESTEP_LENGTH; - } - #[inline] - fn march_deadline(&mut self) { - if self.skip_sleep { - return; - } - - self._march_deadline(); - } - - pub fn cycle(&mut self) -> Result<()> { + pub fn mix_and_build_packet(&mut self, packet: &mut [u8]) -> Result { // symph_mix is an `AudioBuffer` (planar format), we need to convert this // later into an interleaved `SampleBuffer` for libopus. self.symph_mix.clear(); @@ -609,7 +523,7 @@ impl Mixer { // Walk over all the audio files, combining into one audio frame according // to volume, play state, etc. let mut mix_len = { - let out = self.mix_tracks(); + let out = self.mix_tracks(packet); self.sample_buffer.copy_interleaved_typed(&self.symph_mix); @@ -626,7 +540,7 @@ impl Mixer { if mix_len == MixType::MixedPcm(0) { if self.silence_frames > 0 { self.silence_frames -= 1; - let mut rtp = MutableRtpPacket::new(&mut self.packet[..]).expect( + let mut rtp = MutableRtpPacket::new(packet).expect( "FATAL: Too few bytes in self.packet for RTP header.\ (Blame: VOICE_PACKET_MAX?)", ); @@ -638,28 +552,7 @@ impl Mixer { mix_len = MixType::Passthrough(SILENT_FRAME.len()); } else { // Per official guidelines, send 5x silence BEFORE we stop speaking. - if let Some(ws) = &self.ws { - // NOTE: this explicit `drop` should prevent a catastrophic thread pileup. - // A full reconnect might cause an inner closed connection. - // It's safer to leave the central task to clean this up and - // pass the mixer a new channel. - drop(ws.send(WsMessage::Speaking(false))); - } - - self.march_deadline(); - - #[cfg(test)] - match &self.config.override_connection { - Some(OutputMode::Raw(tx)) => - drop(tx.send(crate::driver::test_config::TickMessage::NoEl)), - Some(OutputMode::Rtp(tx)) => - drop(tx.send(crate::driver::test_config::TickMessage::NoEl)), - None => {}, - } - - self.advance_rtp_timestamp(); - - return Ok(()); + return Ok(0); } } else { self.silence_frames = 5; @@ -676,20 +569,14 @@ impl Mixer { } } - if let Some(ws) = &self.ws { - ws.send(WsMessage::Speaking(true))?; - } - - // Wait till the right time to send this packet: - // usually a 20ms tick, in test modes this is either a finite number of runs or user input. - self.march_deadline(); - + // For the benefit of test cases, send the raw un-RTP'd data. #[cfg(test)] - let send_status = if let Some(OutputMode::Raw(tx)) = &self.config.override_connection { + let out = if let Some(OutputMode::Raw(_)) = &self.config.override_connection { + // This case has been handled before buffer clearing above. let msg = match mix_len { MixType::Passthrough(len) if len == SILENT_FRAME.len() => OutputMessage::Silent, MixType::Passthrough(len) => { - let rtp = RtpPacket::new(&self.packet[..]).expect( + let rtp = RtpPacket::new(&packet).expect( "FATAL: Too few bytes in self.packet for RTP header.\ (Blame: VOICE_PACKET_MAX?)", ); @@ -704,19 +591,15 @@ impl Mixer { ), }; - drop(tx.send(msg.into())); + self.raw_msg = Some(msg); - Ok(()) + Ok(1) } else { - self.prep_and_send_packet(mix_len) + self.prep_packet(mix_len, packet) }; #[cfg(not(test))] - let send_status = self.prep_and_send_packet(mix_len); - - send_status.or_else(Error::disarm_would_block)?; - - self.advance_rtp_counters(); + let out = self.prep_packet(mix_len, packet); // Zero out all planes of the mix buffer if any audio was written. if matches!(mix_len, MixType::MixedPcm(a) if a > 0) { @@ -725,15 +608,11 @@ impl Mixer { } } - Ok(()) - } - - fn set_bitrate(&mut self, bitrate: Bitrate) -> Result<()> { - self.encoder.set_bitrate(bitrate).map_err(Into::into) + out } #[inline] - fn prep_and_send_packet(&mut self, mix_len: MixType) -> Result<()> { + fn prep_packet(&mut self, mix_len: MixType, packet: &mut [u8]) -> Result { let send_buffer = self.sample_buffer.samples(); let conn = self @@ -741,92 +620,97 @@ impl Mixer { .as_mut() .expect("Shouldn't be mixing packets without access to a cipher + UDP dest."); - let index = { - let mut rtp = MutableRtpPacket::new(&mut self.packet[..]).expect( - "FATAL: Too few bytes in self.packet for RTP header.\ - (Blame: VOICE_PACKET_MAX?)", - ); + let mut rtp = MutableRtpPacket::new(packet).expect( + "FATAL: Too few bytes in self.packet for RTP header.\ + (Blame: VOICE_PACKET_MAX?)", + ); - let payload = rtp.payload_mut(); - let crypto_mode = conn.crypto_state.kind(); + let payload = rtp.payload_mut(); + let crypto_mode = conn.crypto_state.kind(); - // If passthrough, Opus payload in place already. - // Else encode into buffer with space for AEAD encryption headers. - let payload_len = match mix_len { - MixType::Passthrough(opus_len) => opus_len, - MixType::MixedPcm(_samples) => { - let total_payload_space = payload.len() - crypto_mode.payload_suffix_len(); - self.encoder.encode_float( - &send_buffer[..self.config.mix_mode.sample_count_in_frame()], - &mut payload[TAG_SIZE..total_payload_space], - )? - }, - }; - - let final_payload_size = conn - .crypto_state - .write_packet_nonce(&mut rtp, TAG_SIZE + payload_len); - - // Packet encryption ignored in test modes. - #[cfg(not(test))] - let encrypt = true; - #[cfg(test)] - let encrypt = self.config.override_connection.is_none(); - - if encrypt { - conn.crypto_state.kind().encrypt_in_place( - &mut rtp, - &conn.cipher, - final_payload_size, - )?; - } - - RtpPacket::minimum_packet_size() + final_payload_size + // If passthrough, Opus payload in place already. + // Else encode into buffer with space for AEAD encryption headers. + let payload_len = match mix_len { + MixType::Passthrough(opus_len) => opus_len, + MixType::MixedPcm(_samples) => { + let total_payload_space = payload.len() - crypto_mode.payload_suffix_len(); + self.encoder.encode_float( + &send_buffer[..self.config.mix_mode.sample_count_in_frame()], + &mut payload[TAG_SIZE..total_payload_space], + )? + }, }; + let final_payload_size = conn + .crypto_state + .write_packet_nonce(&mut rtp, TAG_SIZE + payload_len); + + // Packet encryption ignored in test modes. + #[cfg(not(test))] + let encrypt = true; + #[cfg(test)] + let encrypt = self.config.override_connection.is_none(); + + if encrypt { + conn.crypto_state.kind().encrypt_in_place( + &mut rtp, + &conn.cipher, + final_payload_size, + )?; + } + + Ok(RtpPacket::minimum_packet_size() + final_payload_size) + } + + #[inline] + pub(crate) fn send_packet(&self, packet: &[u8]) -> Result<()> { + #[cfg(test)] + let send_status = if let Some(OutputMode::Raw(tx)) = &self.config.override_connection { + // This case has been handled before buffer clearing in `mix_and_build_packet`. + drop(tx.send(self.raw_msg.clone().unwrap().into())); + + Ok(()) + } else { + self._send_packet(packet) + }; + + #[cfg(not(test))] + let send_status = self._send_packet(packet); + + send_status.or_else(Error::disarm_would_block)?; + + Ok(()) + } + + #[inline] + fn _send_packet(&self, packet: &[u8]) -> Result<()> { + let conn = self + .conn_active + .as_ref() + .expect("Shouldn't be mixing packets without access to a cipher + UDP dest."); + #[cfg(test)] if let Some(OutputMode::Rtp(tx)) = &self.config.override_connection { // Test mode: send unencrypted (compressed) packets to local receiver. - drop(tx.send(self.packet[..index].to_vec().into())); + drop(tx.send(packet.to_vec().into())); } else { - conn.udp_tx.send(&self.packet[..index])?; + conn.udp_tx.send(packet)?; } #[cfg(not(test))] { // Normal operation: send encrypted payload to UDP Tx task. - conn.udp_tx.send(&self.packet[..index])?; + conn.udp_tx.send(packet)?; } Ok(()) } #[inline] - fn advance_rtp_counters(&mut self) { - let mut rtp = MutableRtpPacket::new(&mut self.packet[..]).expect( - "FATAL: Too few bytes in self.packet for RTP header.\ - (Blame: VOICE_PACKET_MAX?)", - ); - rtp.set_sequence(rtp.get_sequence() + 1); - rtp.set_timestamp(rtp.get_timestamp() + MONO_FRAME_SIZE as u32); - } - - #[inline] - // Even if we don't send a packet, we *do* need to keep advancing the timestamp - // to make it easier for a receiver to reorder packets and compute jitter measures - // wrt. our clock difference vs. theirs. - fn advance_rtp_timestamp(&mut self) { - let mut rtp = MutableRtpPacket::new(&mut self.packet[..]).expect( - "FATAL: Too few bytes in self.packet for RTP header.\ - (Blame: VOICE_PACKET_MAX?)", - ); - rtp.set_timestamp(rtp.get_timestamp() + MONO_FRAME_SIZE as u32); - } - - #[inline] - fn check_and_send_keepalive(&mut self) -> Result<()> { + pub(crate) fn check_and_send_keepalive(&mut self, now: Option) -> Result<()> { if let Some(conn) = self.conn_active.as_mut() { - if Instant::now() >= self.keepalive_deadline { + let now = now.unwrap_or_else(Instant::now); + if now >= self.keepalive_deadline { conn.udp_tx.send(&self.keepalive_packet)?; self.keepalive_deadline += UDP_KEEPALIVE_GAP; } @@ -836,9 +720,29 @@ impl Mixer { } #[inline] - fn mix_tracks(&mut self) -> MixType { + pub(crate) fn send_gateway_speaking(&self) -> Result<()> { + if let Some(ws) = &self.ws { + ws.send(WsMessage::Speaking(true))?; + } + + Ok(()) + } + + #[inline] + pub(crate) fn send_gateway_not_speaking(&self) { + if let Some(ws) = &self.ws { + // NOTE: this explicit `drop` should prevent a catastrophic thread pileup. + // A full reconnect might cause an inner closed connection. + // It's safer to leave the central task to clean this up and + // pass the mixer a new channel. + drop(ws.send(WsMessage::Speaking(false))); + } + } + + #[inline] + fn mix_tracks(&mut self, packet: &mut [u8]) -> MixType { // Get a slice of bytes to write in data for Opus packet passthrough. - let mut rtp = MutableRtpPacket::new(&mut self.packet[..]).expect( + let mut rtp = MutableRtpPacket::new(packet).expect( "FATAL: Too few bytes in self.packet for RTP header.\ (Blame: VOICE_PACKET_MAX?)", ); @@ -962,17 +866,3 @@ impl Mixer { MixType::MixedPcm(len) } } - -/// The mixing thread is a synchronous context due to its compute-bound nature. -/// -/// We pass in an async handle for the benefit of some Input classes (e.g., restartables) -/// who need to run their restart code elsewhere and return blank data until such time. -#[instrument(skip(interconnect, mix_rx, async_handle))] -pub(crate) fn runner( - interconnect: Interconnect, - mix_rx: Receiver, - async_handle: Handle, - config: Config, -) { - Mixer::new(mix_rx, async_handle, interconnect, config).run(); -} diff --git a/src/driver/tasks/mixer/pool.rs b/src/driver/tasks/mixer/pool.rs index ff32a2e..0052d59 100644 --- a/src/driver/tasks/mixer/pool.rs +++ b/src/driver/tasks/mixer/pool.rs @@ -24,7 +24,7 @@ impl BlockyTaskPool { pub fn new(handle: Handle) -> Self { Self { pool: Arc::new(RwLock::new(rusty_pool::ThreadPool::new( - 1, + 0, 64, Duration::from_secs(300), ))), diff --git a/src/driver/tasks/mod.rs b/src/driver/tasks/mod.rs index 584375b..665d0e9 100644 --- a/src/driver/tasks/mod.rs +++ b/src/driver/tasks/mod.rs @@ -23,7 +23,7 @@ use crate::{ }; use flume::{Receiver, Sender}; use message::*; -use tokio::{runtime::Handle, spawn, time::sleep as tsleep}; +use tokio::{spawn, time::sleep as tsleep}; use tracing::{debug, instrument, trace}; pub(crate) fn start(config: Config, rx: Receiver, tx: Sender) { @@ -34,7 +34,7 @@ pub(crate) fn start(config: Config, rx: Receiver, tx: Sender, config: Config) -> Interconnect { +fn start_internals(core: Sender, config: &Config) -> Interconnect { let (evt_tx, evt_rx) = flume::unbounded(); let (mix_tx, mix_rx) = flume::unbounded(); @@ -52,12 +52,7 @@ fn start_internals(core: Sender, config: Config) -> Interconnect { }); let ic = interconnect.clone(); - let handle = Handle::current(); - std::thread::spawn(move || { - trace!("Mixer started."); - mixer::runner(ic, mix_rx, handle, config); - trace!("Mixer finished."); - }); + config.get_scheduler().new_mixer(config, ic, mix_rx); interconnect } @@ -66,7 +61,7 @@ fn start_internals(core: Sender, config: Config) -> Interconnect { async fn runner(mut config: Config, rx: Receiver, tx: Sender) { let mut next_config: Option = None; let mut connection: Option = None; - let mut interconnect = start_internals(tx, config.clone()); + let mut interconnect = start_internals(tx, &config); let mut retrying = None; let mut attempt_idx = 0; diff --git a/src/driver/test_impls.rs b/src/driver/test_impls.rs new file mode 100644 index 0000000..2dd9849 --- /dev/null +++ b/src/driver/test_impls.rs @@ -0,0 +1,225 @@ +#![allow(missing_docs)] + +use crate::{ + constants::*, + input::{ + cached::Compressed, + codecs::{CODEC_REGISTRY, PROBE}, + RawAdapter, + }, + test_utils, + tracks::LoopState, +}; +use flume::{Receiver, Sender}; +use std::{io::Cursor, net::UdpSocket, sync::Arc}; +use tokio::runtime::Handle; +use xsalsa20poly1305::{KeyInit, XSalsa20Poly1305 as Cipher, KEY_SIZE}; + +use super::{ + scheduler::*, + tasks::{message::*, mixer::Mixer}, + *, +}; + +// create a dummied task + interconnect. +// measure perf at varying numbers of sources (binary 1--64) without passthrough support. + +#[cfg(feature = "receive")] +pub type Listeners = ( + Receiver, + Receiver, + Receiver, +); + +#[cfg(not(feature = "receive"))] +pub type Listeners = (Receiver, Receiver); + +pub type DummyMixer = (Mixer, Listeners); + +impl Mixer { + pub fn mock(handle: Handle, softclip: bool) -> DummyMixer { + let (mix_tx, mix_rx) = flume::unbounded(); + let (core_tx, core_rx) = flume::unbounded(); + let (event_tx, event_rx) = flume::unbounded(); + + #[cfg(feature = "receive")] + let (udp_receiver_tx, udp_receiver_rx) = flume::unbounded(); + + let ic = Interconnect { + core: core_tx, + events: event_tx, + mixer: mix_tx, + }; + + // Scheduler must be created from a Tokio context... + let (tx, rx) = flume::unbounded(); + handle.spawn_blocking(move || tx.send(crate::Config::default().use_softclip(softclip))); + let config = rx.recv().unwrap(); + + let mut out = Mixer::new(mix_rx, handle, ic, config); + + let udp_tx = UdpSocket::bind("0.0.0.0:0").expect("Failed to create send port."); + udp_tx + .connect("127.0.0.1:5316") + .expect("Failed to connect to local dest port."); + + #[cfg(feature = "receive")] + let fake_conn = MixerConnection { + cipher: Cipher::new_from_slice(&vec![0u8; KEY_SIZE]).unwrap(), + crypto_state: CryptoState::Normal, + udp_rx: udp_receiver_tx, + udp_tx, + }; + + #[cfg(not(feature = "receive"))] + let fake_conn = MixerConnection { + cipher: Cipher::new_from_slice(&vec![0u8; KEY_SIZE]).unwrap(), + crypto_state: CryptoState::Normal, + udp_tx, + }; + + out.conn_active = Some(fake_conn); + + #[cfg(feature = "receive")] + return (out, (core_rx, event_rx, udp_receiver_rx)); + + #[cfg(not(feature = "receive"))] + return (out, (core_rx, event_rx)); + } + + pub fn test_with_float(num_tracks: usize, handle: Handle, softclip: bool) -> DummyMixer { + let mut out = Self::mock(handle, softclip); + + let floats = test_utils::make_sine(10 * STEREO_FRAME_SIZE, true); + + for _ in 0..num_tracks { + let input: Input = RawAdapter::new(Cursor::new(floats.clone()), 48_000, 2).into(); + let promoted = match input { + Input::Live(l, _) => l.promote(&CODEC_REGISTRY, &PROBE), + _ => panic!("Failed to create a guaranteed source."), + }; + let (_, ctx) = Track::from(Input::Live(promoted.unwrap(), None)).into_context(); + _ = out.0.add_track(ctx); + } + + out + } + + pub fn test_with_float_unending(handle: Handle, softclip: bool) -> (DummyMixer, TrackHandle) { + let mut out = Self::mock(handle, softclip); + + let floats = test_utils::make_sine(10 * STEREO_FRAME_SIZE, true); + + let input: Input = RawAdapter::new(Cursor::new(floats.clone()), 48_000, 2).into(); + let promoted = match input { + Input::Live(l, _) => l.promote(&CODEC_REGISTRY, &PROBE), + _ => panic!("Failed to create a guaranteed source."), + }; + let mut track = Track::from(Input::Live(promoted.unwrap(), None)); + track.loops = LoopState::Infinite; + + let (handle, ctx) = track.into_context(); + _ = out.0.add_track(ctx); + + (out, handle) + } + + pub fn test_with_float_drop(num_tracks: usize, handle: Handle) -> DummyMixer { + let mut out = Self::mock(handle, true); + + for i in 0..num_tracks { + let floats = test_utils::make_sine((i / 5) * STEREO_FRAME_SIZE, true); + let input: Input = RawAdapter::new(Cursor::new(floats.clone()), 48_000, 2).into(); + let promoted = match input { + Input::Live(l, _) => l.promote(&CODEC_REGISTRY, &PROBE), + _ => panic!("Failed to create a guaranteed source."), + }; + let (_, ctx) = Track::from(Input::Live(promoted.unwrap(), None)).into_context(); + _ = out.0.add_track(ctx); + } + + out + } + + pub fn test_with_opus(handle: Handle) -> DummyMixer { + // should add a single opus-based track. + // make this fully loaded to prevent any perf cost there. + let mut out = Self::mock(handle.clone(), false); + + let floats = test_utils::make_sine(6 * STEREO_FRAME_SIZE, true); + + let input: Input = RawAdapter::new(Cursor::new(floats), 48_000, 2).into(); + + let mut src = handle.block_on(async move { + Compressed::new(input, Bitrate::BitsPerSecond(128_000)) + .await + .expect("These parameters are well-defined.") + }); + + src.raw.load_all(); + + let promoted = match src.into() { + Input::Live(l, _) => l.promote(&CODEC_REGISTRY, &PROBE), + _ => panic!("Failed to create a guaranteed source."), + }; + let (_, ctx) = Track::from(Input::Live(promoted.unwrap(), None)).into_context(); + + _ = out.0.add_track(ctx); + + out + } +} + +pub struct MockScheduler { + pub core: Live, + pub stats: Arc, + pub local: Arc, + pub rx: Receiver, + pub tx: Sender<(TaskId, ParkedMixer)>, + pub id: TaskId, +} + +impl MockScheduler { + pub fn new(mode: Option) -> Self { + let stats = Arc::new(StatBlock::default()); + let local = Arc::new(LiveStatBlock::default()); + + let (task_tx, task_rx) = flume::unbounded(); + let (sched_tx, sched_rx) = flume::unbounded(); + + let mut cfg = crate::driver::SchedulerConfig::default(); + cfg.strategy = mode.unwrap_or_default(); + + let core = Live::new( + WorkerId::new(), + cfg, + stats.clone(), + local.clone(), + task_rx, + sched_tx, + ); + Self { + core, + stats, + local, + rx: sched_rx, + tx: task_tx, + id: TaskId::new(), + } + } + + pub fn add_mixer_direct(&mut self, m: Mixer) { + let id = self.id.incr(); + self.core.add_task_direct(m, id); + } + + pub fn from_mixers(mode: Option, mixers: Vec) -> (Self, Vec) { + let mut out = Self::new(mode); + let mut listeners = vec![]; + for (mixer, listener) in mixers { + out.add_mixer_direct(mixer); + listeners.push(listener); + } + (out, listeners) + } +} diff --git a/src/error.rs b/src/error.rs index db4b3e1..8b54ad1 100644 --- a/src/error.rs +++ b/src/error.rs @@ -143,6 +143,9 @@ pub type JoinResult = Result; #[cfg(feature = "driver")] pub use crate::{ - driver::connection::error::{Error as ConnectionError, Result as ConnectionResult}, + driver::{ + connection::error::{Error as ConnectionError, Result as ConnectionResult}, + SchedulerError, + }, tracks::{ControlError, PlayError, TrackResult}, }; diff --git a/src/input/adapters/async_adapter.rs b/src/input/adapters/async_adapter.rs index 6131f12..c6f1199 100644 --- a/src/input/adapters/async_adapter.rs +++ b/src/input/adapters/async_adapter.rs @@ -177,7 +177,7 @@ impl AsyncAdapterStream { }; tokio::spawn(async move { - sink.launch().await; + Box::pin(sink.launch()).await; }); stream diff --git a/src/input/sources/file.rs b/src/input/sources/file.rs index fade69d..2d9fe57 100644 --- a/src/input/sources/file.rs +++ b/src/input/sources/file.rs @@ -1,7 +1,6 @@ -use crate::input::{AudioStream, AudioStreamError, AuxMetadata, Compose, Input}; +use crate::input::{AudioStream, AudioStreamError, Compose, Input}; use std::{error::Error, ffi::OsStr, path::Path}; use symphonia_core::{io::MediaSource, probe::Hint}; -use tokio::process::Command; /// A lazily instantiated local file. #[derive(Clone, Debug)] @@ -56,25 +55,32 @@ impl + Send + Sync> Compose for File

{ true } - /// Probes for metadata about this audio files using `ffprobe`. - async fn aux_metadata(&mut self) -> Result { - let args = [ - "-v", - "quiet", - "-of", - "json", - "-show_format", - "-show_streams", - "-i", - ]; + // SEE: issue #186 + // Below is removed due to issues with: + // 1) deadlocks on small files. + // 2) serde_aux poorly handles missing field names. + // - let mut output = Command::new("ffprobe") - .args(args) - .output() - .await - .map_err(|e| AudioStreamError::Fail(Box::new(e)))?; + // Probes for metadata about this audio file using `ffprobe`. + // async fn aux_metadata(&mut self) -> Result { + // let args = [ + // "-v", + // "quiet", + // "-of", + // "json", + // "-show_format", + // "-show_streams", + // "-i", + // ]; - AuxMetadata::from_ffprobe_json(&mut output.stdout[..]) - .map_err(|e| AudioStreamError::Fail(Box::new(e))) - } + // let mut output = Command::new("ffprobe") + // .args(args) + // .arg(self.path.as_ref().as_os_str()) + // .output() + // .await + // .map_err(|e| AudioStreamError::Fail(Box::new(e)))?; + + // AuxMetadata::from_ffprobe_json(&mut output.stdout[..]) + // .map_err(|e| AudioStreamError::Fail(Box::new(e))) + // } } diff --git a/src/lib.rs b/src/lib.rs index 54324b1..483ffd4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -98,6 +98,8 @@ mod manager; pub mod serenity; #[cfg(feature = "gateway")] pub mod shards; +#[cfg(any(test, feature = "internals"))] +pub mod test_utils; #[cfg(feature = "driver")] pub mod tracks; #[cfg(feature = "driver")] diff --git a/src/shards.rs b/src/shards.rs index d0b6e64..71e3a00 100644 --- a/src/shards.rs +++ b/src/shards.rs @@ -37,16 +37,19 @@ impl TwilightMap { /// Construct a map of shards and command senders to those shards. /// /// For correctness all shards should be in the map. + #[must_use] pub fn new(map: std::collections::HashMap) -> Self { TwilightMap { map } } /// Get the message sender for `shard_id`. + #[must_use] pub fn get(&self, shard_id: u64) -> Option<&MessageSender> { self.map.get(&shard_id) } /// Get the total number of shards in the map. + #[must_use] pub fn shard_count(&self) -> u64 { self.map.len() as u64 } diff --git a/utils/src/lib.rs b/src/test_utils.rs similarity index 98% rename from utils/src/lib.rs rename to src/test_utils.rs index 35bcf34..061612d 100644 --- a/utils/src/lib.rs +++ b/src/test_utils.rs @@ -1,3 +1,5 @@ +#![allow(missing_docs)] + use byteorder::{LittleEndian, WriteBytesExt}; use std::mem; diff --git a/utils/Cargo.toml b/utils/Cargo.toml deleted file mode 100644 index 9bb2698..0000000 --- a/utils/Cargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "utils" -version = "0.1.0" -authors = ["Kyle Simpson "] -edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -byteorder = "1" diff --git a/utils/README.md b/utils/README.md deleted file mode 100644 index fcb910f..0000000 --- a/utils/README.md +++ /dev/null @@ -1 +0,0 @@ -Test utilities for testing and benchmarking songbird.