From bca03b7bcf63f12c31b89bceba23f6290bbff278 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sat, 4 Apr 2026 18:51:35 +0200 Subject: [PATCH 01/78] refact: remove python & c++ bindings --- Cargo.lock | 172 +------------ bot/Cargo.toml | 2 +- bot/python/test.py | 5 - client_cli/Cargo.toml | 2 +- devenv.nix | 52 ---- doc/backlog.md | 48 ---- doc/python.md | 31 --- doc/python_research.md | 536 ----------------------------------------- doc/research.md | 18 +- justfile | 9 - spiel_bot/Cargo.toml | 2 +- store/Cargo.toml | 17 +- store/build.rs | 9 - store/pyproject.toml | 8 - store/src/cxxengine.rs | 252 ------------------- store/src/lib.rs | 8 - store/src/player.rs | 3 - store/src/pyengine.rs | 146 ----------- 18 files changed, 13 insertions(+), 1307 deletions(-) delete mode 100644 bot/python/test.py delete mode 100644 doc/backlog.md delete mode 100644 doc/python.md delete mode 100644 doc/python_research.md delete mode 100644 store/build.rs delete mode 100644 store/pyproject.toml delete mode 100644 store/src/cxxengine.rs delete mode 100644 store/src/pyengine.rs diff --git a/Cargo.lock b/Cargo.lock index 94e366c..b19ee85 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1381,7 +1381,6 @@ checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876" dependencies = [ "anstyle", "clap_lex", - "strsim", ] [[package]] @@ -1447,17 +1446,6 @@ dependencies = [ "unicode-width 0.2.0", ] -[[package]] -name = "codespan-reporting" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681" -dependencies = [ - "serde", - "termcolor", - "unicode-width 0.2.0", -] - [[package]] name = "collection_literals" version = "1.0.3" @@ -2278,68 +2266,6 @@ dependencies = [ "libloading", ] -[[package]] -name = "cxx" -version = "1.0.194" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "747d8437319e3a2f43d93b341c137927ca70c0f5dabeea7a005a73665e247c7e" -dependencies = [ - "cc", - "cxx-build", - "cxxbridge-cmd", - "cxxbridge-flags", - "cxxbridge-macro", - "foldhash 0.2.0", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.194" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0f4697d190a142477b16aef7da8a99bfdc41e7e8b1687583c0d23a79c7afc1e" -dependencies = [ - "cc", - "codespan-reporting 0.13.1", - "indexmap", - "proc-macro2", - "quote", - "scratch", - "syn 2.0.114", -] - -[[package]] -name = "cxxbridge-cmd" -version = "1.0.194" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0956799fa8678d4c50eed028f2de1c0552ae183c76e976cf7ca8c4e36a7c328" -dependencies = [ - "clap", - "codespan-reporting 0.13.1", - "indexmap", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.194" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23384a836ab4f0ad98ace7e3955ad2de39de42378ab487dc28d3990392cb283a" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.194" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6acc6b5822b9526adfb4fc377b67128fdd60aac757cc4a741a6278603f763cf" -dependencies = [ - "indexmap", - "proc-macro2", - "quote", - "syn 2.0.114", -] - [[package]] name = "darling" version = "0.20.11" @@ -4875,15 +4801,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfae20f6b19ad527b550c223fddc3077a547fc70cda94b9b566575423fd303ee" -[[package]] -name = "link-cplusplus" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f78c730aaa7d0b9336a299029ea49f9ee53b0ed06e9202e8cb7db9bae7b8c82" -dependencies = [ - "cc", -] - [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -5073,15 +4990,6 @@ dependencies = [ "stable_deref_trait", ] -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - [[package]] name = "merge" version = "0.1.0" @@ -5180,7 +5088,7 @@ dependencies = [ "bitflags 2.10.0", "cfg-if", "cfg_aliases", - "codespan-reporting 0.12.0", + "codespan-reporting", "half", "hashbrown 0.15.5", "hexf-parse", @@ -6045,69 +5953,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "pyo3" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7778bffd85cf38175ac1f545509665d0b9b92a198ca7941f131f85f7a4f9a872" -dependencies = [ - "cfg-if", - "indoc", - "libc", - "memoffset", - "once_cell", - "portable-atomic", - "pyo3-build-config", - "pyo3-ffi", - "pyo3-macros", - "unindent", -] - -[[package]] -name = "pyo3-build-config" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94f6cbe86ef3bf18998d9df6e0f3fc1050a8c5efa409bf712e661a4366e010fb" -dependencies = [ - "once_cell", - "target-lexicon", -] - -[[package]] -name = "pyo3-ffi" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f1b4c431c0bb1c8fb0a338709859eed0d030ff6daa34368d3b152a63dfdd8d" -dependencies = [ - "libc", - "pyo3-build-config", -] - -[[package]] -name = "pyo3-macros" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc2201328f63c4710f68abdf653c89d8dbc2858b88c5d88b0ff38a75288a9da" -dependencies = [ - "proc-macro2", - "pyo3-macros-backend", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "pyo3-macros-backend" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fca6726ad0f3da9c9de093d6f116a93c1a38e417ed73bf138472cf4064f72028" -dependencies = [ - "heck", - "proc-macro2", - "pyo3-build-config", - "quote", - "syn 2.0.114", -] - [[package]] name = "qoi" version = "0.4.1" @@ -6955,12 +6800,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "scratch" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d68f2ec51b097e4c1a75b681a8bec621909b5e91f15bb7b840c4f2f7b01148b2" - [[package]] name = "sdl2" version = "0.37.0" @@ -7626,12 +7465,6 @@ dependencies = [ "xattr", ] -[[package]] -name = "target-lexicon" -version = "0.12.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" - [[package]] name = "tch" version = "0.22.0" @@ -8276,11 +8109,8 @@ version = "0.1.0" dependencies = [ "anyhow", "base64 0.21.7", - "cxx", - "cxx-build", "log", "merge", - "pyo3", "rand 0.9.2", "serde", "transpose", diff --git a/bot/Cargo.toml b/bot/Cargo.toml index d24adcc..de957df 100644 --- a/bot/Cargo.toml +++ b/bot/Cargo.toml @@ -13,7 +13,7 @@ path = "src/burnrl/main.rs" pretty_assertions = "1.4.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -trictrac-store = { path = "../store", features = ["python"] } +trictrac-store = { path = "../store" } rand = "0.9" env_logger = "0.10" burn = { version = "0.20", features = ["ndarray", "autodiff"] } diff --git a/bot/python/test.py b/bot/python/test.py deleted file mode 100644 index 8c4f16b..0000000 --- a/bot/python/test.py +++ /dev/null @@ -1,5 +0,0 @@ -import trictrac_store - -game = trictrac_store.TricTrac() -print(game.current_player_idx()) -print(game.get_legal_actions(game.current_player_idx())) diff --git a/client_cli/Cargo.toml b/client_cli/Cargo.toml index d85dd8b..52318cb 100644 --- a/client_cli/Cargo.toml +++ b/client_cli/Cargo.toml @@ -13,7 +13,7 @@ bincode = "1.3.3" pico-args = "0.5.0" pretty_assertions = "1.4.0" renet = "0.0.13" -trictrac-store = { path = "../store", features = ["python"] } +trictrac-store = { path = "../store" } trictrac-bot = { path = "../bot" } spiel_bot = { path = "../spiel_bot" } itertools = "0.13.0" diff --git a/devenv.nix b/devenv.nix index c8cc20c..29582d6 100644 --- a/devenv.nix +++ b/devenv.nix @@ -21,63 +21,11 @@ in pkgs.samply # code profiler pkgs.feedgnuplot # to visualize bots training results - # --- AI training with python --- - # generate python classes from rust code - pkgs.maturin - # required by python numpy - pkgs.libz - - # for bevy - pkgs.alsa-lib - pkgs.udev - - # bevy fast compile - pkgs.clang - pkgs.lld - - # copié de https://github.com/mmai/Hyperspeedcube/blob/develop/devenv.nix - # TODO : retirer ce qui est inutile - # pour erreur à l'exécution, selon https://github.com/emilk/egui/discussions/1587 - pkgs.libxkbcommon - pkgs.libGL - - # WINIT_UNIX_BACKEND=wayland - pkgs.wayland - - # WINIT_UNIX_BACKEND=x11 - pkgs.xorg.libXcursor - pkgs.xorg.libXrandr - pkgs.xorg.libXi - pkgs.xorg.libX11 - - pkgs.vulkan-headers - pkgs.vulkan-loader - # ------------ fin copie - ]; # https://devenv.sh/languages/ languages.rust.enable = true; - - # AI training with python - enterShell = '' - PYTHONPATH=$PYTHONPATH:$PWD/.devenv/state/venv/lib/python3/site-packages - ''; - - languages.python = { - enable = true; - uv.enable = true; - venv.enable = true; - venv.requirements = " - pip - gymnasium - numpy - stable-baselines3 - shimmy - "; - }; - # https://devenv.sh/scripts/ # scripts.hello.exec = "echo hello from $GREET"; diff --git a/doc/backlog.md b/doc/backlog.md deleted file mode 100644 index 339c552..0000000 --- a/doc/backlog.md +++ /dev/null @@ -1,48 +0,0 @@ -# Backlog - -## DONE - -## TODO - -### stack overflow - -- -- -- - -Méthodes pour limiter la stack : réduire la taille de la pile avant de lancer ton binaire en ligne de commande : - -```sh -ulimit -s 6144 # Limite la pile à 6Mo -# just trainbot -RUST_BACKTRACE=1 LD_LIBRARY_PATH=./target/debug ./target/debug/train_dqn_burn -ulimit -s unlimited # Pour revenir à la normale -``` - -- bot burn - - train = `just trainbot` - - durée d'entrainement selon params ? - - save - - load and run against default bot - - many configs, save models selon config - - retrain against himself ? - -### Doc - -Cheatsheet : arbre des situations et priorité des règles - -### Epic : jeu avec écoles - -- déplacement de fiches points : validation physique -- évenements de déclaration d'école & contre école - -### Epic : Bot - -- PGX - - https://joe-antognini.github.io/ml/jax-tic-tac-toe - - https://www.sotets.uk/pgx/api_usage/ - -- OpenAi gym - - doc gymnasium - - Rust implementation for OpenAi gym - - Backgammon (?) diff --git a/doc/python.md b/doc/python.md deleted file mode 100644 index 60fa378..0000000 --- a/doc/python.md +++ /dev/null @@ -1,31 +0,0 @@ -# Python bindings - -## Génération bindings - -```sh -# Generate trictrac python lib as a wheel -maturin build -m store/Cargo.toml --release -# Install wheel in local python env -pip install --no-deps --force-reinstall --prefix .devenv/state/venv target/wheels/*.whl -``` - -## Usage - -Pour vérifier l'accès à la lib : lancer le shell interactif `python` - -```python -Python 3.13.11 (main, Dec 5 2025, 16:06:33) [GCC 15.2.0] on linux -Type "help", "copyright", "credits" or "license" for more information. ->>> import trictrac_store ->>> game = trictrac_store.TricTrac() ->>> game.get_active_player_id() -1 -``` - -### Appels depuis python - -`python bot/python/test.py` - -## Interfaces - -## Entraînement diff --git a/doc/python_research.md b/doc/python_research.md deleted file mode 100644 index 90c568f..0000000 --- a/doc/python_research.md +++ /dev/null @@ -1,536 +0,0 @@ -# Trictrac — Research Notes: Engine & OpenSpiel Integration - -> Generated from a deep read of `trictrac/store/src/` and `forks/open_spiel/open_spiel/python/games/trictrac.py`. - ---- - -## 1. Architecture Overview - -The project connects two codebases through a compiled Python extension: - -``` -┌─────────────────────────────────────┐ -│ trictrac/store/ (Rust crate) │ -│ - full game rules engine │ -│ - pyengine.rs → PyO3 bindings │ -│ compiled by maturin → .whl │ -└──────────────┬──────────────────────┘ - │ import trictrac_store -┌──────────────▼──────────────────────┐ -│ forks/open_spiel/.../trictrac.py │ -│ - TrictracGame (pyspiel.Game) │ -│ - TrictracState (pyspiel.State) │ -│ registered as "python_trictrac" │ -└─────────────────────────────────────┘ -``` - -Build pipeline: -- `just pythonlib` (in `trictrac/`) → `maturin build -m store/Cargo.toml --release` → `.whl` into `target/wheels/` -- `just installtrictrac` (in `forks/open_spiel/`) → `pip install --force-reinstall` the wheel into the devenv venv - -The Rust crate is named `trictrac-store` (package) but produces a lib named `trictrac_store` (the Python module name, set in `Cargo.toml` `[lib] name`). - ---- - -## 2. Rust Engine: Module Map - -| Module | Responsibility | -|---|---| -| `board.rs` | Board representation, checker manipulation, quarter analysis | -| `dice.rs` | `Dice` struct, `DiceRoller`, bit encoding | -| `player.rs` | `Player` struct (score, bredouille), `Color`, `PlayerId`, `CurrentPlayer` | -| `game.rs` | `GameState` state machine, `GameEvent` enum, `Stage`/`TurnStage` | -| `game_rules_moves.rs` | `MoveRules`: move validation and generation | -| `game_rules_points.rs` | `PointsRules`: jan detection and scoring | -| `training_common.rs` | `TrictracAction` enum, action-space encoding (size 514) | -| `pyengine.rs` | PyO3 Python module exposing `TricTrac` class | -| `lib.rs` | Crate root, re-exports | - ---- - -## 3. Board Representation - -```rust -pub struct Board { - positions: [i8; 24], -} -``` - -- 24 fields indexed 0–23 internally, 1–24 externally. -- Positive values = White checkers on that field; negative = Black. -- Initial state: `[15, 0, ..., 0, -15]` — all 15 white pieces on field 1, all 15 black pieces on field 24. -- Field 0 is a sentinel for "exited the board" (never stored in the array). - -**Mirroring** is the central symmetry operation used throughout: - -```rust -pub fn mirror(&self) -> Self { - let mut positions = self.positions.map(|c| 0 - c); - positions.reverse(); - Board { positions } -} -``` - -This negates all values (swapping who owns each checker) and reverses the array (swapping directions). The entire engine always reasons from White's perspective; Black's moves are handled by mirroring the board first. - -**Quarter structure**: fields 1–6, 7–12, 13–18, 19–24. This maps to the four tables of Trictrac: -- 1–6: White's "petit jan" (own table) -- 7–12: White's "grand jan" -- 13–18: Black's "grand jan" (= White's opponent territory) -- 19–24: Black's "petit jan" / White's "jan de retour" - -The "coin de repos" (rest corner) is field 12 for White, field 13 for Black. - ---- - -## 4. Dice - -```rust -pub struct Dice { - pub values: (u8, u8), -} -``` - -Dice are always a pair (never quadrupled for doubles, unlike Backgammon). The `DiceRoller` uses `StdRng` seeded from OS entropy (or an optional fixed seed for tests). Bit encoding: `"{d1:0>3b}{d2:0>3b}"` — 3 bits each, 6 bits total. - ---- - -## 5. Player State - -```rust -pub struct Player { - pub name: String, - pub color: Color, // White or Black - pub points: u8, // 0–11 (points within current hole) - pub holes: u8, // holes won (game ends at >12) - pub can_bredouille: bool, - pub can_big_bredouille: bool, - pub dice_roll_count: u8, // rolls since last new_pick_up() -} -``` - -`PlayerId` is a `u64` alias. Player 1 = White, Player 2 = Black (set at init time; this is fixed for the session in pyengine). - ---- - -## 6. Game State Machine - -### Stages - -```rust -pub enum Stage { PreGame, InGame, Ended } - -pub enum TurnStage { - RollDice, // 1 — player must request a roll - RollWaiting, // 0 — waiting for dice result from outside - MarkPoints, // 2 — points are being marked (schools mode only) - HoldOrGoChoice, // 3 — player won a hole; choose to Go or Hold - Move, // 4 — player must move checkers - MarkAdvPoints, // 5 — mark opponent's points after the move (schools mode) -} -``` - -### Turn lifecycle (schools disabled — the default in pyengine) - -``` -RollWaiting - │ RollResult → auto-mark points - ├─[no hole]──→ Move - │ │ Move → mark opponent's points → switch player - │ └───────────────────────────────→ RollDice (next player) - └─[hole won]─→ HoldOrGoChoice - ├─ Go ──→ new_pick_up() → RollDice (same player) - └─ Move ──→ mark opponent's points → switch player → RollDice -``` - -In schools mode (`schools_enabled = true`), the player explicitly marks their own points (`Mark` event) and then the opponent's points after moving (`MarkAdvPoints` stage). - -### Key events - -```rust -pub enum GameEvent { - BeginGame { goes_first: PlayerId }, - EndGame { reason: EndGameReason }, - PlayerJoined { player_id, name }, - PlayerDisconnected { player_id }, - Roll { player_id }, // triggers RollWaiting - RollResult { player_id, dice }, // provides dice values - Mark { player_id, points }, // explicit point marking (schools mode) - Go { player_id }, // choose to restart position after hole - Move { player_id, moves: (CheckerMove, CheckerMove) }, - PlayError, -} -``` - -### Initialization in pyengine - -```rust -fn new() -> Self { - let mut game_state = GameState::new(false); // schools_enabled = false - game_state.init_player("player1"); - game_state.init_player("player2"); - game_state.consume(&GameEvent::BeginGame { goes_first: 1 }); - TricTrac { game_state } -} -``` - -Player 1 (White) always goes first. `active_player_id` uses 1-based indexing; pyengine converts to 0-based for the Python side with `active_player_id - 1`. - ---- - -## 7. Scoring System (Jans) - -Points are awarded after each dice roll based on "jans" (scoring events) detected by `PointsRules`. All computation assumes White's perspective (board is mirrored for Black before calling). - -### Jan types - -| Jan | Points (normal / doublet) | Direction | -|---|---|---| -| `TrueHitSmallJan` | 4 / 6 | → active player | -| `TrueHitBigJan` | 2 / 4 | → active player | -| `TrueHitOpponentCorner` | 4 / 6 | → active player | -| `FilledQuarter` | 4 / 6 | → active player | -| `FirstPlayerToExit` | 4 / 6 | → active player | -| `SixTables` | 4 / 6 | → active player | -| `TwoTables` | 4 / 6 | → active player | -| `Mezeas` | 4 / 6 | → active player | -| `FalseHitSmallJan` | −4 / −6 | → opponent | -| `FalseHitBigJan` | −2 / −4 | → opponent | -| `ContreTwoTables` | −4 / −6 | → opponent | -| `ContreMezeas` | −4 / −6 | → opponent | -| `HelplessMan` | −2 / −4 | → opponent | - -A single roll can trigger multiple jans, each scored independently. The jan detection process: -1. Try both dice orderings -2. Detect "tout d'une" (combined dice move as a virtual single die) -3. Prefer true hits over false hits for the same move -4. Check quarter-filling opportunities -5. Check rare jans (SixTables at roll 3, TwoTables, Mezeas) given specific board positions and talon counts - -### Hole scoring - -```rust -fn mark_points(&mut self, player_id: PlayerId, points: u8) -> bool { - let sum_points = p.points + points; - let jeux = sum_points / 12; // number of completed holes - let holes = match (jeux, p.can_bredouille) { - (0, _) => 0, - (_, false) => 2 * jeux - 1, // no bredouille bonus - (_, true) => 2 * jeux, // bredouille doubles the holes - }; - p.points = sum_points % 12; - p.holes += holes; - ... -} -``` - -- 12 points = 1 "jeu", which yields 1 or 2 holes depending on bredouille status. -- Scoring any points clears the opponent's `can_bredouille`. -- Completing a hole resets `can_bredouille` for the scorer. -- Game ends when `holes > 12`. -- Score reported to OpenSpiel: `holes * 12 + points`. - -### Points from both rolls - -After a roll, the active player's points (`dice_points.0`) are auto-marked immediately. After the Move, the opponent's points (`dice_points.1`) are marked (they were computed at roll-time from the pre-move board). - ---- - -## 8. Move Rules - -`MoveRules` always works from White's perspective. Key constraints enforced by `moves_allowed()`: - -1. **Opponent's corner forbidden**: Cannot land on field 13 (opponent's rest corner for White). -2. **Corner needs two checkers**: The rest corner (field 12) must be taken or vacated with exactly 2 checkers simultaneously. -3. **Corner by effect vs. by power**: If the corner can be taken directly ("par effet"), you cannot take it "par puissance" (using combined dice). -4. **Exit preconditions**: All checkers must be in fields 19–24 before any exit is allowed. -5. **Exit by effect priority**: If a normal exit is possible, exceedant moves (using overflow) are forbidden. -6. **Farthest checker first**: When exiting with exceedant, must exit the checker at the highest field. -7. **Must play all dice**: If both dice can be played, playing only one is invalid. -8. **Must play strongest die**: If only one die can be played, it must be the higher value die. -9. **Must fill quarter**: If a quarter can be completed, the move must complete it. -10. **Cannot block opponent's fillable quarter**: Cannot move into a quarter the opponent can still fill. - -The board state after each die application is simulated to check two-step sequences. - ---- - -## 9. Action Space (training_common.rs) - -Total size: **514 actions**. - -| Index | Action | Description | -|---|---|---| -| 0 | `Roll` | Request dice roll (not used in OpenSpiel mode) | -| 1 | `Go` | After winning hole: reset board and continue | -| 2–257 | `Move { dice_order: true, checker1, checker2 }` | Move with die[0] first | -| 258–513 | `Move { dice_order: false, checker1, checker2 }` | Move with die[1] first | - -Move encoding: `index = 2 + (0 if dice_order else 256) + checker1 * 16 + checker2` - -`checker1` and `checker2` are **ordinal positions** (1-based) of specific checkers counted left-to-right across all White-occupied fields, not field indices. Checker 0 = "no move" (empty move). Range: 0–15 (16 values each). - -### Mirror pattern in get_legal_actions / apply_action - -For player 2 (Black): -```rust -// get_legal_actions: mirror game state before computing -let mirror = self.game_state.mirror(); -get_valid_action_indices(&mirror) - -// apply_action: convert action → event on mirrored state, then mirror the event back -a.to_event(&self.game_state.mirror()) - .map(|e| e.get_mirror(false)) -``` - -This ensures Black's actions are computed as if Black were White on a mirrored board, then translated back to real-board coordinates. - ---- - -## 10. Python Bindings (pyengine.rs) - -The `TricTrac` PyO3 class exposes: - -| Method | Signature | Description | -|---|---|---| -| `new()` | `→ TricTrac` | Create game, init 2 players, begin with player 1 | -| `needs_roll()` | `→ bool` | True when in `RollWaiting` stage | -| `is_game_ended()` | `→ bool` | True when `Stage::Ended` | -| `current_player_idx()` | `→ u64` | 0 or 1 (active_player_id − 1) | -| `get_legal_actions(player_idx)` | `→ Vec` | Action indices for player; empty if not their turn | -| `action_to_string(player_idx, action_idx)` | `→ String` | Human-readable action description | -| `apply_dice_roll(dices: (u8, u8))` | `→ PyResult<()>` | Inject dice result; errors if not in RollWaiting | -| `apply_action(action_idx)` | `→ PyResult<()>` | Apply a game action; validates before applying | -| `get_score(player_id)` | `→ i32` | `holes * 12 + points` for player (1-indexed!) | -| `get_players_scores()` | `→ [i32; 2]` | `[score_p1, score_p2]` | -| `get_tensor(player_idx)` | `→ Vec` | 36-element state vector (mirrored for player 1) | -| `get_observation_string(player_idx)` | `→ String` | Human-readable state (mirrored for player 1) | -| `__str__()` | `→ String` | Debug representation of game state | - -Note: `get_score(player_id)` takes a 1-based player ID (1 or 2), unlike `current_player_idx()` which returns 0-based. - ---- - -## 11. State Tensor Encoding (36 bytes) - -``` -[0..23] Board positions (i8): +N white / −N black checkers per field -[24] Active player: 0=White, 1=Black -[25] TurnStage: 0=RollWaiting, 1=RollDice, 2=MarkPoints, 3=HoldOrGoChoice, - 4=Move, 5=MarkAdvPoints -[26] Dice value 1 (i8) -[27] Dice value 2 (i8) -[28] White: points (0–11) -[29] White: holes (0–12) -[30] White: can_bredouille (0 or 1) -[31] White: can_big_bredouille (0 or 1) -[32] Black: points -[33] Black: holes -[34] Black: can_bredouille -[35] Black: can_big_bredouille -``` - -When called for player 1 (Black), the entire state is mirrored first (`game_state.mirror().to_vec()`). - -### State ID (base64 string for hashing) - -108 bits packed as 18 base64 characters: -- 77 bits: GNUbg-inspired board position encoding (run-length with separators) -- 1 bit: active player color -- 3 bits: turn stage -- 6 bits: dice (3 bits per die) -- 10 bits: white player (4 pts + 4 holes + 2 flags) -- 10 bits: black player -- Padded to 108 bits, grouped as 18 × 6-bit base64 chunks - ---- - -## 12. OpenSpiel Integration (trictrac.py) - -### Game registration - -```python -pyspiel.register_game(_GAME_TYPE, TrictracGame) -``` - -Key parameters: -- `short_name = "python_trictrac"` -- `dynamics = SEQUENTIAL` -- `chance_mode = EXPLICIT_STOCHASTIC` -- `information = PERFECT_INFORMATION` -- `utility = GENERAL_SUM` (both players can score positive; no zero-sum constraint) -- `reward_model = REWARDS` (intermediate rewards, not just terminal) -- `num_distinct_actions = 514` -- `max_chance_outcomes = 36` -- `min_utility = 0.0`, `max_utility = 200.0` -- `max_game_length = 3000` (rough estimate) - -### Chance node handling - -When `needs_roll()` is true, the state is a chance node. OpenSpiel samples one of 36 outcomes (uniform): - -```python -def _roll_from_chance_idx(self, action): - return [(i,j) for i in range(1,7) for j in range(1,7)][action] - -def chance_outcomes(self): - p = 1.0 / 36 - return [(i, p) for i in range(0, 36)] -``` - -Action 0 → (1,1), action 1 → (1,2), …, action 35 → (6,6). The chance action is then passed to `apply_dice_roll((d1, d2))` on the Rust side. - -### Player action handling - -When not a chance node: -```python -def _legal_actions(self, player): - return self._store.get_legal_actions(player) - -def _apply_action(self, action): - self._store.apply_action(action) -``` - -The `Roll` action (index 0) is never returned by `get_legal_actions` in this mode because the Rust side only returns Roll actions from `TurnStage::RollDice`, which is bypassed in the pyengine flow (the RollWaiting→chance node path takes over). - -### Returns - -```python -def returns(self): - return self._store.get_players_scores() -# → [holes_p1 * 12 + points_p1, holes_p2 * 12 + points_p2] -``` - -These are cumulative scores available at any point during the game (not just terminal), consistent with `reward_model = REWARDS`. - ---- - -## 13. Known Issues and Inconsistencies - -### 13.1 `observation_string` missing return (trictrac.py:156) - -```python -def observation_string(self, player): - self._store.get_observation_string(player) # result discarded, returns None -``` - -Should be `return self._store.get_observation_string(player)`. - -### 13.2 `observation_tensor` not populating buffer (trictrac.py:159) - -```python -def observation_tensor(self, player, values): - self._store.get_tensor(player) # result discarded, values not filled -``` - -OpenSpiel's API expects `values` (a mutable buffer, typically a flat numpy array) to be filled in-place. The returned `Vec` from `get_tensor()` is discarded. Should copy data into `values`. - -### 13.3 Debug print statement active (trictrac.py:140) - -```python -print("in apply action", self.is_chance_node(), action) -``` - -This fires on every action application. Should be removed or guarded. - -### 13.4 Color swap on new_pick_up disabled - -In `game.rs:new_pick_up()`: - -```rust -// XXX : switch colors -// désactivé pour le moment car la vérification des mouvements échoue, -// cf. https://code.rhumbs.fr/henri/trictrac/issues/31 -// p.color = p.color.opponent_color(); -``` - -In authentic Trictrac, players swap colors between "relevés" (pick-ups after a hole is won with Go). This is commented out, so the same player always plays White and the same always plays Black throughout the entire game. - -### 13.5 `can_big_bredouille` tracked but not implemented - -The `can_big_bredouille` flag is stored in `Player` and serialized in state encoding, but the scoring logic never reads it. Grande bredouille (a rare extra bonus) is not implemented. - -### 13.6 `Roll` action in action space but unused in OpenSpiel mode - -`TrictracAction::Roll` (index 0) exists in the 514-action space and in `get_valid_actions()` (for `TurnStage::RollDice`). However, in pyengine, the game starts at `RollWaiting` (dice have been requested but not yet rolled), so `TurnStage::RollDice` is never reached from OpenSpiel's perspective. The chance node mechanism replaces the Roll action entirely. The action space slot 0 is permanently wasted from OpenSpiel's point of view. - -### 13.7 `get_valid_actions` panics on `RollWaiting` - -```rust -TurnStage::MarkPoints | TurnStage::MarkAdvPoints | TurnStage::RollWaiting => { - panic!("get_valid_actions not implemented for turn stage {:?}", ...) -} -``` - -If `get_legal_actions` were ever called while `needs_roll()` is true, this would panic. OpenSpiel's turn logic avoids this because chance nodes are handled separately, but it is a latent danger. - -### 13.8 PPO training script uses wrong model name - -`trictrac_ppo.py` saves to `ppo_backgammon_model.ckpt` — clearly copied from a backgammon example without renaming. Also uses `tensorflow.compat.v1` despite the PyTorch PPO import. - -### 13.9 Opponent points marked at pre-move board state - -The opponent's `dice_points.1` is computed at roll time (before the active player moves), but applied to the opponent after the move. This means the opponent's scoring is evaluated on the board position that existed before the active player moved — which is per the rules of Trictrac (points are based on where pieces could be hit at the moment of the roll), but it's worth noting this subtlety. - ---- - -## 14. Data Flow: A Complete Turn - -``` -Python (OpenSpiel) → Rust (trictrac_store) -───────────────────────────────────────────────────── -is_chance_node() ← needs_roll() [TurnStage == RollWaiting] - (true at game start) - -chance_outcomes() → [(0,p)..(35,p)] - -_apply_action(chance_idx) - _roll_from_chance_idx(idx) → (d1, d2) - apply_dice_roll((d1, d2)) → consume(RollResult{dice}) - → auto-mark active player's points - → if hole: TurnStage=HoldOrGoChoice - → else: TurnStage=Move - -current_player() → 0 or 1 - -_legal_actions(player) ← get_legal_actions(player_idx) - → get_valid_actions on (possibly mirrored) state - → Vec of valid action indices - -_apply_action(action_idx) → apply_action(action_idx) - → TrictracAction::from_action_index - → to_event on (mirrored) state - → mirror event back if player==2 - → validate → consume - → mark opponent points - → switch active player - → TurnStage=RollDice (→ pyengine starts next turn) - -Wait — pyengine starts at RollWaiting, not RollDice! -The next is_chance_node() call will be true again. -``` - -Note on turn transition: After a `Move` event in `game.rs`, turn stage becomes `RollDice` (not `RollWaiting`). The pyengine `needs_roll()` checks for `RollWaiting`. So after a move, `is_chance_node()` returns false — OpenSpiel will ask for a regular player action. But `get_valid_actions` at `TurnStage::RollDice` returns only `Roll` (index 0), which is **not** the chance path. - -This reveals a subtlety: after the Move event, the active player has already been switched, so `current_player()` returns the new active player, and `get_legal_actions` returns `[0]` (Roll). OpenSpiel then applies action 0, which calls `apply_action(0)` → `TrictracAction::Roll` → `GameEvent::Roll` → TurnStage becomes `RollWaiting`. Then the next call to `is_chance_node()` returns true, and the chance mechanism kicks in again. - -So the full sequence in OpenSpiel terms is: -``` -[Chance] dice roll → [Player] move → [Player] Roll action → [Chance] dice roll → ... -``` - -The `Roll` action IS used — it is the bridge between Move completion and the next chance node. - ---- - -## 15. Summary of Design Choices - -| Choice | Rationale | -|---|---| -| All rules engine in Rust | Performance, correctness, can be used in other contexts (CLI, native bots) | -| Mirror pattern for Black | Avoids duplicating all rule logic for both colors | -| Schools disabled by default | Simpler turn structure for RL training; full protocol for human play | -| GENERAL_SUM + REWARDS | Trictrac is not strictly zero-sum; intermediate hole rewards are informative for training | -| Action index for checkers (not fields) | Reduces action space; ordinal checker numbering is compact | -| 514 action slots | 1 Roll + 1 Go + 256 × 2 move combinations (ordered by die priority × 16 × 16 checker pairs) | -| Chance node = dice roll | Standard OpenSpiel pattern for stochastic games | diff --git a/doc/research.md b/doc/research.md index 37ad6e1..60dc3c9 100644 --- a/doc/research.md +++ b/doc/research.md @@ -11,7 +11,6 @@ | `game_rules_moves.rs` | `MoveRules`: move validation and generation | | `game_rules_points.rs` | `PointsRules`: jan detection and scoring | | `training_common.rs` | `TrictracAction` enum, action-space encoding (size 514) | -| `pyengine.rs` | PyO3 Python module exposing `TricTrac` class | | `lib.rs` | Crate root, re-exports | --- @@ -143,7 +142,7 @@ fn new() -> Self { } ``` -Player 1 (White) always goes first. `active_player_id` uses 1-based indexing; pyengine converts to 0-based for the Python side with `active_player_id - 1`. +Player 1 (White) always goes first. `active_player_id` uses 1-based indexing --- @@ -197,8 +196,7 @@ fn mark_points(&mut self, player_id: PlayerId, points: u8) -> bool { - 12 points = 1 "jeu", which yields 1 or 2 holes depending on bredouille status. - Scoring any points clears the opponent's `can_bredouille`. - Completing a hole resets `can_bredouille` for the scorer. -- Game ends when `holes > 12`. -- Score reported to OpenSpiel: `holes * 12 + points`. +- Game ends when `holes >= 12`. ### Points from both rolls @@ -229,12 +227,12 @@ The board state after each die application is simulated to check two-step sequen Total size: **514 actions**. -| Index | Action | Description | -| ------- | ------------------------------------------------ | ---------------------------------------------- | -| 0 | `Roll` | Request dice roll (not used in OpenSpiel mode) | -| 1 | `Go` | After winning hole: reset board and continue | -| 2–257 | `Move { dice_order: true, checker1, checker2 }` | Move with die[0] first | -| 258–513 | `Move { dice_order: false, checker1, checker2 }` | Move with die[1] first | +| Index | Action | Description | +| ------- | ------------------------------------------------ | -------------------------------------------- | +| 0 | `Roll` | Request dice roll | +| 1 | `Go` | After winning hole: reset board and continue | +| 2–257 | `Move { dice_order: true, checker1, checker2 }` | Move with die[0] first | +| 258–513 | `Move { dice_order: false, checker1, checker2 }` | Move with die[1] first | Move encoding: `index = 2 + (0 if dice_order else 256) + checker1 * 16 + checker2` diff --git a/justfile b/justfile index 1c650fc..b92c7ca 100644 --- a/justfile +++ b/justfile @@ -32,16 +32,7 @@ profile: echo '1' | sudo tee /proc/sys/kernel/perf_event_paranoid cargo build --profile profiling samply record ./target/profiling/client_cli --bot dummy,dummy -pythonlib: - rm -rf target/wheels - maturin build -m store/Cargo.toml --release - pip install --no-deps --force-reinstall --prefix .devenv/state/venv target/wheels/*.whl -cxxlib: - cargo build --release -p trictrac-store - @echo "Static lib: $(ls target/release/libtrictrac_store.a)" - @echo "CXX header: $(find target -name 'cxxengine.rs.h' | head -1)" trainbot algo: - #python ./store/python/trainModel.py # cargo run --bin=train_dqn # ok # ./bot/scripts/trainValid.sh ./bot/scripts/train.sh {{algo}} diff --git a/spiel_bot/Cargo.toml b/spiel_bot/Cargo.toml index 1458d66..b541adc 100644 --- a/spiel_bot/Cargo.toml +++ b/spiel_bot/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -trictrac-store = { path = "../store", features = ["python"] } +trictrac-store = { path = "../store" } trictrac-bot = { path = "../bot" } anyhow = "1" rand = "0.9" diff --git a/store/Cargo.toml b/store/Cargo.toml index 58e9e32..d8a594c 100644 --- a/store/Cargo.toml +++ b/store/Cargo.toml @@ -7,26 +7,14 @@ edition = "2021" [lib] name = "trictrac_store" -# "cdylib" → Python .so built by maturin (pyengine) -# "rlib" → used by other workspace crates (bot, client_cli) -# "staticlib" → used by the C++ OpenSpiel game (cxxengine) -crate-type = ["cdylib", "rlib", "staticlib"] - -[features] -# Enable Python bindings (required for maturin / AI training). Not available on wasm32. -python = ["pyo3"] -# Enable C++ bridge for OpenSpiel integration. Not available on wasm32. -cpp = ["dep:cxx"] +crate-type = ["rlib"] [dependencies] anyhow = "1.0" base64 = "0.21.7" -cxx = { version = "1.0", optional = true } # provides macros for creating log messages to be used by a logger (for example env_logger) log = "0.4.20" merge = "0.1.0" -# generate python lib (with maturin) to be used in AI training -pyo3 = { version = "0.23", features = ["extension-module", "abi3-py38"], optional = true } rand = "0.9" serde = { version = "1.0", features = ["derive"] } transpose = "0.2.2" @@ -34,6 +22,3 @@ transpose = "0.2.2" [[bin]] name = "random_game" path = "src/bin/random_game.rs" - -[build-dependencies] -cxx-build = "1.0" diff --git a/store/build.rs b/store/build.rs deleted file mode 100644 index 88d743f..0000000 --- a/store/build.rs +++ /dev/null @@ -1,9 +0,0 @@ -fn main() { - if std::env::var("CARGO_FEATURE_CPP").is_ok() { - cxx_build::bridge("src/cxxengine.rs") - .std("c++17") - .compile("trictrac-cxx"); - - println!("cargo:rerun-if-changed=src/cxxengine.rs"); - } -} diff --git a/store/pyproject.toml b/store/pyproject.toml deleted file mode 100644 index f50d478..0000000 --- a/store/pyproject.toml +++ /dev/null @@ -1,8 +0,0 @@ -[build-system] -requires = ["maturin>=1.0,<2.0"] -build-backend = "maturin" - -[tool.maturin] -# "extension-module" tells pyo3 we want to build an extension module (skips linking against libpython.so) -features = ["pyo3/extension-module"] -# python-source = "python" diff --git a/store/src/cxxengine.rs b/store/src/cxxengine.rs deleted file mode 100644 index 55d348c..0000000 --- a/store/src/cxxengine.rs +++ /dev/null @@ -1,252 +0,0 @@ -//! C++ bindings for the TricTrac game engine via cxx.rs. -//! -//! Exposes an opaque `TricTracEngine` type to C++. The C++ side -//! (open_spiel/games/trictrac/trictrac.cc) holds it via -//! `rust::Box`. -//! -//! The Rust engine always reasons from White's (player 1's) perspective. -//! For Black (player 2), the board is mirrored before computing actions -//! and events are mirrored back before being applied — exactly as in -//! pyengine.rs. - -use std::panic::{self, AssertUnwindSafe}; - -use crate::dice::Dice; -use crate::game::{GameEvent, GameState, Stage, TurnStage}; -use crate::training_common::{get_valid_action_indices, TrictracAction}; - -/// Catch any Rust panic and convert it to anyhow::Error so it never -/// crosses the C FFI boundary as undefined behaviour. -fn catch_panics(f: F) -> anyhow::Result -where - F: FnOnce() -> anyhow::Result + panic::UnwindSafe, -{ - panic::catch_unwind(f).unwrap_or_else(|e| { - let msg = e - .downcast_ref::() - .map(|s| s.as_str()) - .or_else(|| e.downcast_ref::<&str>().copied()) - .unwrap_or("unknown panic payload"); - Err(anyhow::anyhow!("Rust panic in FFI: {}", msg)) - }) -} - -// ── cxx bridge declaration ──────────────────────────────────────────────────── - -#[cxx::bridge(namespace = "trictrac_engine")] -pub mod ffi { - // ── Shared types (transparent to both Rust and C++) ─────────────────────── - - /// Two dice values passed from C++ when applying a chance outcome. - struct DicePair { - die1: u8, - die2: u8, - } - - /// Both players' cumulative scores: holes * 12 + points. - struct PlayerScores { - score_p1: i32, - score_p2: i32, - } - - // ── Opaque Rust type and its free-function constructor ──────────────────── - - extern "Rust" { - /// Opaque handle to a running TricTrac game. - /// C++ accesses this only through `rust::Box`. - type TricTracEngine; - - /// Construct a fresh engine with two players; player 1 (White) goes first. - fn new_trictrac_engine() -> Box; - - /// Deep-copy the engine — required by OpenSpiel's State::Clone(). - fn clone_engine(self: &TricTracEngine) -> Box; - - // ── Queries ─────────────────────────────────────────────────────────── - - /// True when the game is in TurnStage::RollWaiting (OpenSpiel chance node). - fn needs_roll(self: &TricTracEngine) -> bool; - - /// True when Stage::Ended. - fn is_game_ended(self: &TricTracEngine) -> bool; - - /// Active player index: 0 = player 1 (White), 1 = player 2 (Black). - fn current_player_idx(self: &TricTracEngine) -> u64; - - /// Legal action indices for `player_idx` in [0, 513]. - /// Returns an empty vector when it is not that player's turn. - fn get_legal_actions(self: &TricTracEngine, player_idx: u64) -> Result>; - - /// Human-readable description of an action index. - fn action_to_string(self: &TricTracEngine, player_idx: u64, action_idx: u64) -> String; - - /// Both players' scores. - fn get_players_scores(self: &TricTracEngine) -> PlayerScores; - - /// 217-element state tensor (f32), normalized to [0,1]. Mirrored for player_idx == 1. - fn get_tensor(self: &TricTracEngine, player_idx: u64) -> Vec; - - /// Human-readable state description for `player_idx`. - fn get_observation_string(self: &TricTracEngine, player_idx: u64) -> String; - - /// Full debug representation of the current state. - fn to_debug_string(self: &TricTracEngine) -> String; - - // ── Mutations ───────────────────────────────────────────────────────── - - /// Apply a dice-roll result. Returns Err (C++ exception) if not in - /// the RollWaiting stage. - fn apply_dice_roll(self: &mut TricTracEngine, dice: DicePair) -> Result<()>; - - /// Apply a player action. Returns Err (C++ exception) if the action - /// is not legal in the current state. - fn apply_action(self: &mut TricTracEngine, action_idx: u64) -> Result<()>; - } -} - -// ── Opaque type ─────────────────────────────────────────────────────────────── - -pub struct TricTracEngine { - game_state: GameState, -} - -// ── Free-function constructor (declared in the bridge as a plain function) ──── - -pub fn new_trictrac_engine() -> Box { - let mut game_state = GameState::new(false); // schools_enabled = false - game_state.init_player("player1"); - game_state.init_player("player2"); - game_state - .consume(&GameEvent::BeginGame { goes_first: 1 }) - .expect("BeginGame failed during engine initialization"); - Box::new(TricTracEngine { game_state }) -} - -// ── Method implementations ──────────────────────────────────────────────────── - -impl TricTracEngine { - fn clone_engine(&self) -> Box { - Box::new(TricTracEngine { - game_state: self.game_state.clone(), - }) - } - - fn needs_roll(&self) -> bool { - self.game_state.turn_stage == TurnStage::RollWaiting - } - - fn is_game_ended(&self) -> bool { - self.game_state.stage == Stage::Ended - } - - fn current_player_idx(&self) -> u64 { - self.game_state.active_player_id - 1 - } - - fn get_legal_actions(&self, player_idx: u64) -> anyhow::Result> { - if player_idx != self.current_player_idx() { - return Ok(vec![]); - } - catch_panics(AssertUnwindSafe(|| { - if player_idx == 0 { - get_valid_action_indices(&self.game_state) - .map(|v| v.into_iter().map(|i| i as u64).collect()) - } else { - let mirror = self.game_state.mirror(); - get_valid_action_indices(&mirror).map(|v| v.into_iter().map(|i| i as u64).collect()) - } - })) - } - - fn action_to_string(&self, player_idx: u64, action_idx: u64) -> String { - TrictracAction::from_action_index(action_idx as usize) - .map(|a| format!("{}:{}", player_idx, a)) - .unwrap_or_else(|| "unknown action".into()) - } - - fn get_players_scores(&self) -> ffi::PlayerScores { - ffi::PlayerScores { - score_p1: self.score_for(1), - score_p2: self.score_for(2), - } - } - - fn score_for(&self, player_id: u64) -> i32 { - self.game_state - .players - .get(&player_id) - .map(|p| p.holes as i32 * 12 + p.points as i32) - .unwrap_or(-1) - } - - fn get_tensor(&self, player_idx: u64) -> Vec { - if player_idx == 0 { - self.game_state.to_tensor() - } else { - self.game_state.mirror().to_tensor() - } - } - - fn get_observation_string(&self, player_idx: u64) -> String { - if player_idx == 0 { - format!("{}", self.game_state) - } else { - format!("{}", self.game_state.mirror()) - } - } - - fn to_debug_string(&self) -> String { - format!("{}", self.game_state) - } - - fn apply_dice_roll(&mut self, dice: ffi::DicePair) -> anyhow::Result<()> { - if self.game_state.turn_stage != TurnStage::RollWaiting { - anyhow::bail!( - "apply_dice_roll: not in RollWaiting stage (currently {:?})", - self.game_state.turn_stage - ); - } - let player_id = self.game_state.active_player_id; - let dice = Dice { - values: (dice.die1, dice.die2), - }; - catch_panics(AssertUnwindSafe(|| { - self.game_state - .consume(&GameEvent::RollResult { player_id, dice }) - .map_err(|e| anyhow::anyhow!(e)) - })) - } - - fn apply_action(&mut self, action_idx: u64) -> anyhow::Result<()> { - catch_panics(AssertUnwindSafe(|| { - let needs_mirror = self.game_state.active_player_id == 2; - - let event = TrictracAction::from_action_index(action_idx as usize).and_then(|a| { - let state = if needs_mirror { - &self.game_state.mirror() - } else { - &self.game_state - }; - a.to_event(state) - .map(|e| if needs_mirror { e.get_mirror(false) } else { e }) - }); - - match event { - Some(evt) if self.game_state.validate(&evt) => self - .game_state - .consume(&evt) - .map_err(|e| anyhow::anyhow!(e)), - Some(evt) => anyhow::bail!( - "apply_action: event {:?} is not valid in current state {}", - evt, - self.game_state - ), - None => anyhow::bail!( - "apply_action: could not build event from action index {} in state {}", - action_idx, - self.game_state - ), - } - })) - } -} diff --git a/store/src/lib.rs b/store/src/lib.rs index 90fbbc0..5d759b6 100644 --- a/store/src/lib.rs +++ b/store/src/lib.rs @@ -18,11 +18,3 @@ mod dice; pub use dice::{Dice, DiceRoller}; pub mod training_common; - -// python interface "trictrac_engine" (for AI training..) -#[cfg(feature = "python")] -mod pyengine; - -// C++ interface via cxx.rs (for OpenSpiel C++ integration) -#[cfg(feature = "cpp")] -pub mod cxxengine; diff --git a/store/src/player.rs b/store/src/player.rs index cca02b5..d609ce7 100644 --- a/store/src/player.rs +++ b/store/src/player.rs @@ -1,12 +1,9 @@ -#[cfg(feature = "python")] -use pyo3::prelude::*; use serde::{Deserialize, Serialize}; use std::fmt; // This just makes it easier to dissern between a player id and any ol' u64 pub type PlayerId = u64; -#[cfg_attr(feature = "python", pyclass(eq, eq_int))] #[derive(Copy, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub enum Color { White, diff --git a/store/src/pyengine.rs b/store/src/pyengine.rs deleted file mode 100644 index 43b5713..0000000 --- a/store/src/pyengine.rs +++ /dev/null @@ -1,146 +0,0 @@ -//! # Expose trictrac game state and rules in a python module -use pyo3::prelude::*; - -use crate::dice::Dice; -use crate::game::{GameEvent, GameState, Stage, TurnStage}; -use crate::player::PlayerId; -use crate::training_common::{get_valid_action_indices, TrictracAction}; - -#[pyclass] -struct TricTrac { - game_state: GameState, -} - -#[pymethods] -impl TricTrac { - #[new] - fn new() -> Self { - let mut game_state = GameState::new(false); // schools_enabled = false - - // Initialiser 2 joueurs - game_state.init_player("player1"); - game_state.init_player("player2"); - - // Commencer la partie avec le joueur 1 - let _ = game_state.consume(&GameEvent::BeginGame { goes_first: 1 }); - - TricTrac { game_state } - } - - fn needs_roll(&self) -> bool { - self.game_state.turn_stage == TurnStage::RollWaiting - } - - fn is_game_ended(&self) -> bool { - self.game_state.stage == Stage::Ended - } - - // 0 or 1 - fn current_player_idx(&self) -> u64 { - self.game_state.active_player_id - 1 - } - - fn get_legal_actions(&self, player_idx: u64) -> Vec { - if player_idx == self.current_player_idx() { - if player_idx == 0 { - get_valid_action_indices(&self.game_state).unwrap() - } else { - let mirror = self.game_state.mirror(); - get_valid_action_indices(&mirror).unwrap() - } - } else { - vec![] - } - } - - fn action_to_string(&self, player_idx: u64, action_idx: usize) -> String { - TrictracAction::from_action_index(action_idx) - .map(|a| format!("{}:{}", player_idx, a)) - .unwrap_or("unknown action".into()) - } - - fn apply_dice_roll(&mut self, dices: (u8, u8)) -> PyResult<()> { - let player_id = self.game_state.active_player_id; - - if self.game_state.turn_stage != TurnStage::RollWaiting { - return Err(pyo3::exceptions::PyRuntimeError::new_err( - "Not in RollWaiting stage", - )); - } - - let dice = Dice { values: dices }; - let _ = self - .game_state - .consume(&GameEvent::RollResult { player_id, dice }); - Ok(()) - } - - fn apply_action(&mut self, action_idx: usize) -> PyResult<()> { - if let Some(event) = TrictracAction::from_action_index(action_idx).and_then(|a| { - let needs_mirror = self.game_state.active_player_id == 2; - let game_state = if needs_mirror { - &self.game_state.mirror() - } else { - &self.game_state - }; - a.to_event(game_state) - .map(|e| if needs_mirror { e.get_mirror(false) } else { e }) - }) { - if self.game_state.validate(&event) { - let _ = self.game_state.consume(&event); - return Ok(()); - } else { - return Err(pyo3::exceptions::PyRuntimeError::new_err( - "Action is invalid", - )); - } - } - Err(pyo3::exceptions::PyRuntimeError::new_err( - "Could not apply action", - )) - } - - /// Get a player total score (holes & points) - fn get_score(&self, player_id: PlayerId) -> i32 { - if let Some(player) = self.game_state.players.get(&player_id) { - player.holes as i32 * 12 + player.points as i32 - } else { - -1 - } - } - - fn get_players_scores(&self) -> [i32; 2] { - [self.get_score(1), self.get_score(2)] - } - - fn get_tensor(&self, player_idx: u64) -> Vec { - if player_idx == 0 { - self.game_state.to_tensor() - } else { - self.game_state.mirror().to_tensor() - } - } - - fn get_observation_string(&self, player_idx: u64) -> String { - if player_idx == 0 { - format!("{}", self.game_state) - } else { - format!("{}", self.game_state.mirror()) - } - } - - /// Afficher l'état du jeu (pour le débogage) - fn __str__(&self) -> String { - format!("{}", self.game_state) - } -} - -/// A Python module implemented in Rust. The name of this function must match -/// the `lib.name` setting in the `Cargo.toml`, else Python will not be able to -/// import the module. -#[pymodule] -fn trictrac_store(m: &Bound<'_, PyModule>) -> PyResult<()> { - m.add_class::()?; - - Ok(()) -} From 20e57eed2c96f7cc135552e65043079077393d81 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sun, 5 Apr 2026 18:09:02 +0200 Subject: [PATCH 02/78] fix(devenv): add lld dependency --- devenv.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/devenv.nix b/devenv.nix index 29582d6..346a339 100644 --- a/devenv.nix +++ b/devenv.nix @@ -7,6 +7,7 @@ in packages = [ # for Leptos pkgs.trunk + pkgs.lld # pkgs.wasm-bindgen-cli_0_2_114 # pour burn-rs From 77233b24c01732cb7dd3cad01ef596fc5cedabb0 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sun, 5 Apr 2026 11:13:48 +0200 Subject: [PATCH 03/78] feat(client_web): auto-roll dice on player turn --- client_web/src/components/game_screen.rs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/client_web/src/components/game_screen.rs b/client_web/src/components/game_screen.rs index 8a43399..686a9d1 100644 --- a/client_web/src/components/game_screen.rs +++ b/client_web/src/components/game_screen.rs @@ -103,16 +103,26 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { } }); + // ── Auto-roll effect ───────────────────────────────────────────────────── + // GameScreen is fully re-mounted on every ViewState update (state is a + // plain prop, not a signal), so this effect fires exactly once per + // RollDice phase entry and will not double-send. + let show_roll = is_my_turn && vs.turn_stage == SerTurnStage::RollDice; + if show_roll { + let cmd_tx_auto = cmd_tx.clone(); + Effect::new(move |_| { + cmd_tx_auto.unbounded_send(NetCommand::Action(PlayerAction::Roll)).ok(); + }); + } + let dice = vs.dice; let show_dice = dice != (0, 0); // ── Button senders ───────────────────────────────────────────────────────── - let cmd_tx_roll = cmd_tx.clone(); let cmd_tx_go = cmd_tx.clone(); let cmd_tx_quit = cmd_tx.clone(); let cmd_tx_end_quit = cmd_tx.clone(); let cmd_tx_end_replay = cmd_tx.clone(); - let show_roll = is_my_turn && vs.turn_stage == SerTurnStage::RollDice; let show_hold_go = is_my_turn && vs.turn_stage == SerTurnStage::HoldOrGoChoice; // ── Valid move sequences for this turn ───────────────────────────────────── @@ -232,11 +242,6 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { // Action buttons
- {show_roll.then(|| view! { - - })} {show_hold_go.then(|| view! { + })} {show_hold_go.then(|| view! {
// ── Opponent score (above board) ───────────────────────────────── - + // ── Board + side panel ───────────────────────────────────────────
@@ -256,6 +235,14 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView {
})} + // Scoring notifications (own then opponent) + {my_scored_event.map(|event| view! { + + })} + {opp_scored_event.map(|event| view! { + + })} + // Action buttons
{waiting_for_confirm.then(|| view! { @@ -263,6 +250,7 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { pending.update(|q| { q.pop_front(); }); }>{t!(i18n, continue_btn)} })} + // Fallback Go button when no scoring panel (e.g. after reconnect) {show_hold_go.then(|| view! {
// ── Player score (below board) ──────────────────────────────────── - + // ── Game-over overlay ───────────────────────────────────────────── {stage_is_ended.then(|| { diff --git a/client_web/src/components/mod.rs b/client_web/src/components/mod.rs index cd5fc33..7ae2fcb 100644 --- a/client_web/src/components/mod.rs +++ b/client_web/src/components/mod.rs @@ -4,6 +4,7 @@ mod die; mod game_screen; mod login_screen; mod score_panel; +mod scoring; pub use connecting_screen::ConnectingScreen; pub use game_screen::GameScreen; diff --git a/client_web/src/components/score_panel.rs b/client_web/src/components/score_panel.rs index 9045008..c3c9123 100644 --- a/client_web/src/components/score_panel.rs +++ b/client_web/src/components/score_panel.rs @@ -1,10 +1,10 @@ use leptos::prelude::*; -use trictrac_store::{CheckerMove, Jan}; +use trictrac_store::Jan; use crate::i18n::*; -use crate::trictrac::types::{JanEntry, PlayerScore}; +use crate::trictrac::types::PlayerScore; -fn jan_label(jan: &Jan) -> String { +pub fn jan_label(jan: &Jan) -> String { let i18n = use_i18n(); match jan { Jan::FilledQuarter => t_string!(i18n, jan_filled_quarter).to_owned(), @@ -23,89 +23,8 @@ fn jan_label(jan: &Jan) -> String { } } -fn format_move_pair(m1: CheckerMove, m2: CheckerMove) -> String { - let fmt = |m: CheckerMove| -> String { - let (f, t) = (m.get_from(), m.get_to()); - if f == 0 && t == 0 { - "—".to_string() - } else if t == 0 { - format!("{f}↑") - } else { - format!("{f}→{t}") - } - }; - format!("{} & {}", fmt(m1), fmt(m2)) -} - -fn jan_row(idx: usize, entry: JanEntry, expanded: RwSignal>) -> impl IntoView { - let i18n = use_i18n(); - let row_class = if entry.total >= 0 { - "jan-row jan-expandable jan-positive" - } else { - "jan-row jan-expandable jan-negative" - }; - let label = jan_label(&entry.jan); - let double_tag = if entry.is_double { - t_string!(i18n, jan_double).to_owned() - } else { - t_string!(i18n, jan_simple).to_owned() - }; - let ways_tag = format!("×{}", entry.ways); - let pts_str = if entry.total >= 0 { - format!("+{}", entry.total) - } else { - format!("{}", entry.total) - }; - - let moves = entry.moves.clone(); - let moves_hover = entry.moves.clone(); - // RwSignal is Copy so it can be captured by both closures independently. - let hovered = use_context::>>(); - - view! { -
-
- {label} - {double_tag} - {ways_tag} - {pts_str} -
- { - let move_lines: Vec<_> = moves.iter() - .map(|&(m1, m2)| { - let text = format_move_pair(m1, m2); - view! {
{text}
} - }) - .collect(); - view! { -
- {move_lines} -
- } - } -
- } -} - #[component] -pub fn PlayerScorePanel(score: PlayerScore, jans: Vec, is_you: bool) -> impl IntoView { +pub fn PlayerScorePanel(score: PlayerScore, is_you: bool) -> impl IntoView { let i18n = use_i18n(); let points_pct = format!("{}%", (score.points as u32 * 100 / 12).min(100)); @@ -114,13 +33,6 @@ pub fn PlayerScorePanel(score: PlayerScore, jans: Vec, is_you: bool) - let holes_val = format!("{}/12", score.holes); let can_bredouille = score.can_bredouille; - let expanded: RwSignal> = RwSignal::new(None); - let jan_rows: Vec<_> = jans - .into_iter() - .enumerate() - .map(|(i, entry)| jan_row(i, entry, expanded)) - .collect(); - view! {
@@ -148,9 +60,6 @@ pub fn PlayerScorePanel(score: PlayerScore, jans: Vec, is_you: bool) - {holes_val}
- {(!jan_rows.is_empty()).then(|| view! { -
{jan_rows}
- })} } } diff --git a/client_web/src/components/scoring.rs b/client_web/src/components/scoring.rs new file mode 100644 index 0000000..420cb9b --- /dev/null +++ b/client_web/src/components/scoring.rs @@ -0,0 +1,103 @@ +use futures::channel::mpsc::UnboundedSender; +use leptos::prelude::*; +use trictrac_store::CheckerMove; + +use crate::app::NetCommand; +use crate::i18n::*; +use crate::trictrac::types::{JanEntry, PlayerAction, ScoredEvent, SerTurnStage}; + +use super::score_panel::jan_label; + +fn scoring_jan_row(entry: JanEntry) -> impl IntoView { + let i18n = use_i18n(); + let hovered = use_context::>>(); + let label = jan_label(&entry.jan); + let double_tag = if entry.is_double { + t_string!(i18n, jan_double).to_owned() + } else { + t_string!(i18n, jan_simple).to_owned() + }; + let ways_tag = format!("×{}", entry.ways); + let pts_str = format!("+{}", entry.total); + let moves_hover = entry.moves.clone(); + + view! { +
+ {label} + {double_tag} + {ways_tag} + {pts_str} +
+ } +} + +#[component] +pub fn ScoringPanel( + event: ScoredEvent, + turn_stage: SerTurnStage, + #[prop(default = false)] is_opponent: bool, +) -> impl IntoView { + let i18n = use_i18n(); + let cmd_tx = use_context::>() + .expect("UnboundedSender not found in context"); + + let points_earned = event.points_earned; + let holes_gained = event.holes_gained; + let holes_total = event.holes_total; + let bredouille = event.bredouille; + let show_hold_go = !is_opponent && turn_stage == SerTurnStage::HoldOrGoChoice; + let panel_class = if is_opponent { "scoring-panel scoring-panel-opp" } else { "scoring-panel" }; + + let jan_rows: Vec<_> = event.jans.into_iter().map(scoring_jan_row).collect(); + + view! { +
+
+ {move || if is_opponent { + t_string!(i18n, opp_scored_pts, n = points_earned) + } else { + t_string!(i18n, scored_pts, n = points_earned) + }} +
+ {jan_rows} + {(holes_gained > 0).then(|| view! { +
+ {move || if is_opponent { + t_string!(i18n, opp_hole_made, holes = holes_total) + } else { + t_string!(i18n, hole_made, holes = holes_total) + }} + {bredouille.then(|| view! { + + {move || t_string!(i18n, bredouille_applied)} + + })} +
+ })} + {show_hold_go.then(|| view! { +
+ + +
+ })} +
+ } +} diff --git a/client_web/src/trictrac/types.rs b/client_web/src/trictrac/types.rs index 02e2675..2c5cdd2 100644 --- a/client_web/src/trictrac/types.rs +++ b/client_web/src/trictrac/types.rs @@ -170,6 +170,23 @@ impl ViewState { } } +// ── Scored event (notification) ────────────────────────────────────────── + +/// Points scored in a single scoring event, used for the notification panel. +#[derive(Clone, PartialEq)] +pub struct ScoredEvent { + /// Raw points earned (sum of jan values; before hole wrapping). + pub points_earned: u8, + /// Number of holes gained (0 = no hole). + pub holes_gained: u8, + /// Total holes after this event. + pub holes_total: u8, + /// Was bredouille active when the hole was made (doubles hole count)? + pub bredouille: bool, + /// Contributing jans from this player's perspective (totals always positive). + pub jans: Vec, +} + // ── Score snapshot ──────────────────────────────────────────────────────────── #[derive(Clone, PartialEq, Serialize, Deserialize)] From a0e3cf5f1979772b1f0e85c8854ed46023620993 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Wed, 8 Apr 2026 16:18:08 +0200 Subject: [PATCH 06/78] refact(docs): clean docs --- doc/blog/game-state-notation.md | 51 --- doc/blog/pourquoi-le-trictrac.md | 9 - doc/book/traité.md | 40 -- doc/refs/{ => bot_rl}/dqn-burn.md | 0 doc/{ => refs/bot_rl}/spiel_bot_research.md | 0 doc/{ => refs/bot_rl}/tensor_research.md | 0 doc/refs/inspirations.md | 130 ------ doc/refs/journal.md | 61 --- doc/refs/outputs.md | 417 ------------------ doc/refs/renet_echo.rs | 182 -------- doc/specs/vocabulary.md | 5 - doc/{specs => store_diagrams}/diagrammes.md | 0 .../stateEncoding.md | 0 doc/{specs => store_diagrams}/store.puml | 0 doc/{specs => store_diagrams}/workflow.md | 0 doc/{research.md => store_overview.md} | 4 +- 16 files changed, 2 insertions(+), 897 deletions(-) delete mode 100644 doc/blog/game-state-notation.md delete mode 100644 doc/blog/pourquoi-le-trictrac.md delete mode 100644 doc/book/traité.md rename doc/refs/{ => bot_rl}/dqn-burn.md (100%) rename doc/{ => refs/bot_rl}/spiel_bot_research.md (100%) rename doc/{ => refs/bot_rl}/tensor_research.md (100%) delete mode 100644 doc/refs/inspirations.md delete mode 100644 doc/refs/journal.md delete mode 100644 doc/refs/outputs.md delete mode 100644 doc/refs/renet_echo.rs delete mode 100644 doc/specs/vocabulary.md rename doc/{specs => store_diagrams}/diagrammes.md (100%) rename doc/{specs => store_diagrams}/stateEncoding.md (100%) rename doc/{specs => store_diagrams}/store.puml (100%) rename doc/{specs => store_diagrams}/workflow.md (100%) rename doc/{research.md => store_overview.md} (99%) diff --git a/doc/blog/game-state-notation.md b/doc/blog/game-state-notation.md deleted file mode 100644 index 9587a29..0000000 --- a/doc/blog/game-state-notation.md +++ /dev/null @@ -1,51 +0,0 @@ - -# Game state notation - -## History - -Jollyvet : rien - -1698 Le jeu de trictrac... -Noirs T 1 2 .. 11 -Blancs T 1 2 .. 11 - -1738 Le Grand Trictrac, Bernard Laurent Soumille -A B C D E F G H I K L M -& Z Y X V T S R Q P O N - -1816 Guiton -Noirs T 1 2 .. 11 -Blancs T 1 2 .. 11 - -1818 Cours complet de Trictrac, Pierre Marie Michel Lepeintre -m n o p q r s t u v x y -l k j i h g f e d c b a - -1852 Le jeu de trictrac rendu facile -Noirs T 1 2 .. 11 -Blancs T 1 2 .. 11 - -## Références actuelles - -https://salondesjeux.fr/trictrac.htm : Guiton -Noirs T 1 2 .. 11 -Blancs T 1 2 .. 11 - -http://trictrac.org/content/index2.html -N1 N2 .. N12 -B1 B2 .. B12 - -Backgammon -13 14 .. 23 24 -12 11 .. 2 1 - -=> utilisation de la notation Backgammon : uniformisation de la notation quelque soit le jeu de table. -Non dénuée d'avantages : -- on se débarrasse de la notation spéciale du talon -- on évite confusion entre côté noir et blanc. -- bien que l'orientation change par rapport à la plupart des traité, on suit celle du Lepeintre, et celle des vidéos de Philippe Lalanne - -Backgammon notation : https://nymann.dev/2023/05/16/Introducing-the-Backgammon-Position-Notation-BPN-A-Standard-for-Representing-Game-State/ - -GnuBg : https://www.gnu.org/software/gnubg/manual/html_node/A-technical-description-of-the-Position-ID.html -- implémentation rust https://github.com/bungogood/bkgm/blob/main/src/position.rs diff --git a/doc/blog/pourquoi-le-trictrac.md b/doc/blog/pourquoi-le-trictrac.md deleted file mode 100644 index 9d653b7..0000000 --- a/doc/blog/pourquoi-le-trictrac.md +++ /dev/null @@ -1,9 +0,0 @@ -# Pourquoi le trictrac - -Je vais montrer pourquoi il faut redécouvrir le trictrac, pourquoi il pourrait être votre nouveau jeu favori. -Je vais montrer pourquoi il est intéressant, complexe pour les humains comme les machines. -En quoi il diffère du backgammon de manière avantageuse. Pourquoi il a quasiment disparu. - -Le backgammon était connu à la grande époque du trictrac. Il ne lui manquait que le dé doubleur, apparu au début du XXe siècle, qui a ajouté les prises de décision méta, que le trictrac possèdait déjà sur plusieurs niveaux (via la gestion des bredouilles en fin de partie par exemple). - -Le hasard des dés permet au joueur faible d'espérer la victoire même en fin de partie (cf. Le tour du monde en 80 jeux). diff --git a/doc/book/traité.md b/doc/book/traité.md deleted file mode 100644 index e2241ad..0000000 --- a/doc/book/traité.md +++ /dev/null @@ -1,40 +0,0 @@ -# traité - -En 12 chapitres (trous) de 12 sous-chapitres (points / niveaux de compréhension) ? - -Célébration -> s'inspirer du _petit traité invitant à la découverte de l'art subtil du go_ -comparaison échecs -> comparaison backgammon - -Les règles -- le matériel -- le mouvement -- les points -- les écoles -- les combinaisons - - -La stratégie -- probabilités -- arbres de décision -- l'entraînement - -L'encyclopédie -- comparaison avec d'autres jeux - - échecs/go ? -- histoire - - traités -- vocabulaire -- l'esthétique -- l'étiquette -- ressources web - - wikipedia - - l'encyclopédie des jeux + videos youtube - - le dictionnaire du trictrac -- fabriquer un boîtier/plateau de jeu -- jouer en ligne - -## rêveries - -Trictrac : un domaine grand et complexe, un univers dans lequel on peut s'absorber. Un jeu geek parfait. Qui a la noblesse d'avoir été populaire, qui a la noblesse de règles nécessitant apprentissage et presque companionage. -Pourquoi s'investir dans ce genre d'activité ? Toucher un absolu. Sauver de la mort une pépite du passé. Entrer dans le monde des morts comme Orphée ou Ulysse ? -Et maîtriser un vocabulaire, des gestes, des règles affinées au fil des siècles. diff --git a/doc/refs/dqn-burn.md b/doc/refs/bot_rl/dqn-burn.md similarity index 100% rename from doc/refs/dqn-burn.md rename to doc/refs/bot_rl/dqn-burn.md diff --git a/doc/spiel_bot_research.md b/doc/refs/bot_rl/spiel_bot_research.md similarity index 100% rename from doc/spiel_bot_research.md rename to doc/refs/bot_rl/spiel_bot_research.md diff --git a/doc/tensor_research.md b/doc/refs/bot_rl/tensor_research.md similarity index 100% rename from doc/tensor_research.md rename to doc/refs/bot_rl/tensor_research.md diff --git a/doc/refs/inspirations.md b/doc/refs/inspirations.md deleted file mode 100644 index a94aa87..0000000 --- a/doc/refs/inspirations.md +++ /dev/null @@ -1,130 +0,0 @@ -# Inspirations - -tools - -- config clippy ? -- bacon : tests runner (ou loom ?) - -## Rust libs - -cf. - -nombres aléatoires avec seed : - -- cli : ( ou clap ) -- reseau async : tokio -- web serveur : axum (uses tokio) - - -- db : sqlx - -- eyre, color-eyre (Results) -- tracing (logging) -- rayon ( sync <-> parallel ) - -- front : yew + tauri - - - egui - -- - -## network games - -- -- (wasm, rooms) -- -- - -## Others - -- plugins avec - -## Backgammon existing projects - -- go : - - protocole de communication : -- ocaml : - cli example : -- lib rust backgammon - - - - -- network webtarot -- front ? - -## cli examples - -### GnuBackgammon - - (No game) new game - gnubg rolls 3, anthon rolls 1. - - GNU Backgammon Positions ID: 4HPwATDgc/ABMA - Match ID : MIEFAAAAAAAA - +12-11-10--9--8--7-------6--5--4--3--2--1-+ O: gnubg - | X O | | O X | 0 points - | X O | | O X | Rolled 31 - | X O | | O | - | X | | O | - | X | | O | - ^| |BAR| | (Cube: 1) - | O | | X | - | O | | X | - | O X | | X | - | O X | | X O | - | O X | | X O | 0 points - +13-14-15-16-17-18------19-20-21-22-23-24-+ X: anthon - - gnubg moves 8/5 6/5. - -### jacobh - -Move 11: player O rolls a 6-2. -Player O estimates that they have a 90.6111% chance of winning. - -Os borne off: none - 24 23 22 21 20 19 18 17 16 15 14 13 - ---- - -| v v v v v v | | v v v v v v | -| | | | -| X O O O | | O O O | -| X O O O | | O O | -| O | | | -| | X | | -| | | | -| | | | -| | | | -| | | | -|------------------------------| |------------------------------| -| | | | -| | | | -| | | | -| | | | -| X | | | -| X X | | X | -| X X X | | X O | -| X X X | | X O O | -| | | | -| ^ ^ ^ ^ ^ ^ | | ^ ^ ^ ^ ^ ^ | - ---- - -1 2 3 4 5 6 7 8 9 10 11 12 -Xs borne off: none - -Move 12: player X rolls a 6-3. -Your move (? for help): bar/22 -Illegal move: it is possible to move more. -Your move (? for help): ? -Enter the start and end positions, separated by a forward slash (or any non-numeric character), of each counter you want to move. -Each position should be number from 1 to 24, "bar" or "off". -Unlike in standard notation, you should enter each counter movement individually. For example: -24/18 18/13 -bar/3 13/10 13/10 8/5 -2/off 1/off -You can also enter these commands: -p - show the previous move -n - show the next move - - toggle between showing the current and last moves -help - show this help text -quit - abandon game diff --git a/doc/refs/journal.md b/doc/refs/journal.md deleted file mode 100644 index dd6d99c..0000000 --- a/doc/refs/journal.md +++ /dev/null @@ -1,61 +0,0 @@ -# Journal - -```sh -devenv init -cargo init -cargo add pico-args -``` - -Organisation store / server / client selon - -_store_ est la bibliothèque contenant le _reducer_ qui transforme l'état du jeu en fonction des évènements. Elle est utilisée par le _server_ et le _client_. Seuls les évènements sont transmis entre clients et serveur. - -## Config neovim debugger launchers - -Cela se passe dans la config neovim (lua/plugins/overrides.lua) - -## Organisation du store - -lib - -- game::GameState - - error - - dice - - board - - user - - user - -## Algorithme de détermination des coups - -- strategy::choose_move - - - GameRules.get_possible_moves_sequences(with_excedents: bool) - - get_possible_moves_sequences_by_dices(dice_max, dice_min, with_excedents, false); - - get_possible_moves_sequences_by_dices(dice_min, dice_max, with_excedents, true); - - has_checkers_outside_last_quarter() ok - - board.get_possible_moves ok - - check_corner_rules(&(first_move, second_move)) ok - -- handle_event - - state.validate (ok) - - rules.moves_follow_rules (ok) - - moves_possible ok - - moves_follows_dices ok - - moves_allowed (ok) - - check_corner_rules ok - - can_take_corner_by_effect ok - - get_possible_moves_sequences -> cf. l.15 - - check_exit_rules - - get_possible_moves_sequences(without exedents) -> cf l.15 - - get_quarter_filling_moves_sequences - - get_possible_moves_sequences -> cf l.15 - - state.consume (RollResult) (ok) - - get_rollresult_jans -> points_rules.get_result_jans (ok) - - get_jans (ok) - - get_jans_by_ordered_dice (ok) - - get_jans_by_ordered_dice ( dices.poped ) - - move_rules.get_scoring_quarter_filling_moves_sequences (ok) - - get_quarter_filling_moves_sequences cf l.8 (ok) - - board.get_quarter_filling_candidate -> is_quarter_fillable ok - - move_rules.get_possible_moves_sequence -> cf l.15 - - get_jans_points -> jan.get_points ok diff --git a/doc/refs/outputs.md b/doc/refs/outputs.md deleted file mode 100644 index 895062b..0000000 --- a/doc/refs/outputs.md +++ /dev/null @@ -1,417 +0,0 @@ -# Outputs - -## 50 episodes - 1000 steps max - desktop - -{"episode": 0, "reward": -1798.7162, "steps count": 1000, "duration": 11} -{"episode": 1, "reward": -1794.8162, "steps count": 1000, "duration": 32} -{"episode": 2, "reward": -1387.7109, "steps count": 1000, "duration": 58} -{"episode": 3, "reward": -42.5005, "steps count": 1000, "duration": 82} -{"episode": 4, "reward": -48.2005, "steps count": 1000, "duration": 109} -{"episode": 5, "reward": 1.2000, "steps count": 1000, "duration": 141} -{"episode": 6, "reward": 8.8000, "steps count": 1000, "duration": 184} -{"episode": 7, "reward": 6.9002, "steps count": 1000, "duration": 219} -{"episode": 8, "reward": 16.5001, "steps count": 1000, "duration": 248} -{"episode": 9, "reward": -2.6000, "steps count": 1000, "duration": 281} -{"episode": 10, "reward": 3.0999, "steps count": 1000, "duration": 324} -{"episode": 11, "reward": -34.7004, "steps count": 1000, "duration": 497} -{"episode": 12, "reward": -15.7998, "steps count": 1000, "duration": 466} -{"episode": 13, "reward": 6.9000, "steps count": 1000, "duration": 496} -{"episode": 14, "reward": 6.3000, "steps count": 1000, "duration": 540} -{"episode": 15, "reward": -2.6000, "steps count": 1000, "duration": 581} -{"episode": 16, "reward": -33.0003, "steps count": 1000, "duration": 641} -{"episode": 17, "reward": -36.8000, "steps count": 1000, "duration": 665} -{"episode": 18, "reward": -10.1997, "steps count": 1000, "duration": 753} -{"episode": 19, "reward": -88.1014, "steps count": 1000, "duration": 837} -{"episode": 20, "reward": -57.5002, "steps count": 1000, "duration": 881} -{"episode": 21, "reward": -17.7997, "steps count": 1000, "duration": 1159} -{"episode": 22, "reward": -25.4000, "steps count": 1000, "duration": 1235} -{"episode": 23, "reward": -104.4013, "steps count": 995, "duration": 1290} -{"episode": 24, "reward": -268.6004, "steps count": 1000, "duration": 1322} -{"episode": 25, "reward": -743.6052, "steps count": 1000, "duration": 1398} -{"episode": 26, "reward": -821.5029, "steps count": 1000, "duration": 1427} -{"episode": 27, "reward": -211.5993, "steps count": 1000, "duration": 1409} -{"episode": 28, "reward": -276.1974, "steps count": 1000, "duration": 1463} -{"episode": 29, "reward": -222.9980, "steps count": 1000, "duration": 1509} -{"episode": 30, "reward": -298.9973, "steps count": 1000, "duration": 1560} -{"episode": 31, "reward": -164.0011, "steps count": 1000, "duration": 1752} -{"episode": 32, "reward": -221.0990, "steps count": 1000, "duration": 1807} -{"episode": 33, "reward": -260.9996, "steps count": 1000, "duration": 1730} -{"episode": 34, "reward": -420.5959, "steps count": 1000, "duration": 1767} -{"episode": 35, "reward": -407.2964, "steps count": 1000, "duration": 1815} -{"episode": 36, "reward": -291.2966, "steps count": 1000, "duration": 1870} - -thread 'main' has overflowed its stack -fatal runtime error: stack overflow, aborting -error: Recipe `trainbot` was terminated on line 24 by signal 6 - -## 50 episodes - 700 steps max - desktop - -const MEMORY_SIZE: usize = 4096; -const DENSE_SIZE: usize = 128; -const EPS_DECAY: f64 = 1000.0; -const EPS_START: f64 = 0.9; -const EPS_END: f64 = 0.05; - -> Entraînement -> {"episode": 0, "reward": -862.8993, "steps count": 700, "duration": 6} -> {"episode": 1, "reward": -418.8971, "steps count": 700, "duration": 13} -> {"episode": 2, "reward": -64.9999, "steps count": 453, "duration": 14} -> {"episode": 3, "reward": -142.8002, "steps count": 700, "duration": 31} -> {"episode": 4, "reward": -74.4004, "steps count": 700, "duration": 45} -> {"episode": 5, "reward": -40.2002, "steps count": 700, "duration": 58} -> {"episode": 6, "reward": -21.1998, "steps count": 700, "duration": 70} -> {"episode": 7, "reward": 99.7000, "steps count": 642, "duration": 79} -> {"episode": 8, "reward": -5.9999, "steps count": 700, "duration": 99} -> {"episode": 9, "reward": -7.8999, "steps count": 700, "duration": 118} -> {"episode": 10, "reward": 92.5000, "steps count": 624, "duration": 117} -> {"episode": 11, "reward": -17.1998, "steps count": 700, "duration": 144} -> {"episode": 12, "reward": 1.7000, "steps count": 700, "duration": 157} -> {"episode": 13, "reward": -7.9000, "steps count": 700, "duration": 172} -> {"episode": 14, "reward": -7.9000, "steps count": 700, "duration": 196} -> {"episode": 15, "reward": -2.8000, "steps count": 700, "duration": 214} -> {"episode": 16, "reward": 16.8002, "steps count": 700, "duration": 250} -> {"episode": 17, "reward": -47.7001, "steps count": 700, "duration": 272} -> k{"episode": 18, "reward": -13.6000, "steps count": 700, "duration": 288} -> {"episode": 19, "reward": -79.9002, "steps count": 700, "duration": 304} -> {"episode": 20, "reward": -355.5985, "steps count": 700, "duration": 317} -> {"episode": 21, "reward": -205.5001, "steps count": 700, "duration": 333} -> {"episode": 22, "reward": -207.3974, "steps count": 700, "duration": 348} -> {"episode": 23, "reward": -161.7999, "steps count": 700, "duration": 367} - ---- - -const MEMORY_SIZE: usize = 8192; -const DENSE_SIZE: usize = 128; -const EPS_DECAY: f64 = 10000.0; -const EPS_START: f64 = 0.9; -const EPS_END: f64 = 0.05; - -> Entraînement -> {"episode": 0, "reward": -1119.9921, "steps count": 700, "duration": 6} -> {"episode": 1, "reward": -928.6963, "steps count": 700, "duration": 13} -> {"episode": 2, "reward": -364.5009, "steps count": 380, "duration": 11} -> {"episode": 3, "reward": -797.5981, "steps count": 700, "duration": 28} -> {"episode": 4, "reward": -577.5994, "steps count": 599, "duration": 34} -> {"episode": 5, "reward": -725.2992, "steps count": 700, "duration": 49} -> {"episode": 6, "reward": -638.8995, "steps count": 700, "duration": 59} -> {"episode": 7, "reward": -1039.1932, "steps count": 700, "duration": 73} -> field invalid : White, 3, Board { positions: [13, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -2, 0, -11] } - -thread 'main' panicked at store/src/game.rs:556:65: -called `Result::unwrap()` on an `Err` value: FieldInvalid -note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace -error: Recipe `trainbot` failed on line 27 with exit code 101 - ---- - -# [allow(unused)] - -const MEMORY_SIZE: usize = 8192; -const DENSE_SIZE: usize = 256; -const EPS_DECAY: f64 = 10000.0; -const EPS_START: f64 = 0.9; -const EPS_END: f64 = 0.05; - -> Entraînement -> {"episode": 0, "reward": -1102.6925, "steps count": 700, "duration": 9} -> field invalid : White, 6, Board { positions: [14, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, -13] } - -thread 'main' panicked at store/src/game.rs:556:65: -called `Result::unwrap()` on an `Err` value: FieldInvalid -note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace -error: Recipe `trainbot` failed on line 27 with exit code 101 - ---- - -const MEMORY_SIZE: usize = 8192; -const DENSE_SIZE: usize = 256; -const EPS_DECAY: f64 = 1000.0; -const EPS_START: f64 = 0.9; -const EPS_END: f64 = 0.05; - -> Entraînement -> {"episode": 0, "reward": -1116.2921, "steps count": 700, "duration": 9} -> {"episode": 1, "reward": -1116.2922, "steps count": 700, "duration": 18} -> {"episode": 2, "reward": -1119.9921, "steps count": 700, "duration": 29} -> {"episode": 3, "reward": -1089.1927, "steps count": 700, "duration": 41} -> {"episode": 4, "reward": -1116.2921, "steps count": 700, "duration": 53} -> {"episode": 5, "reward": -684.8043, "steps count": 700, "duration": 66} -> {"episode": 6, "reward": 0.3000, "steps count": 700, "duration": 80} -> {"episode": 7, "reward": 2.0000, "steps count": 700, "duration": 96} -> {"episode": 8, "reward": 30.9001, "steps count": 700, "duration": 112} -> {"episode": 9, "reward": 0.3000, "steps count": 700, "duration": 128} -> {"episode": 10, "reward": 0.3000, "steps count": 700, "duration": 141} -> {"episode": 11, "reward": 8.8000, "steps count": 700, "duration": 155} -> {"episode": 12, "reward": 7.1000, "steps count": 700, "duration": 169} -> {"episode": 13, "reward": 17.3001, "steps count": 700, "duration": 190} -> {"episode": 14, "reward": -107.9005, "steps count": 700, "duration": 210} -> {"episode": 15, "reward": 7.1001, "steps count": 700, "duration": 236} -> {"episode": 16, "reward": 17.3001, "steps count": 700, "duration": 268} -> {"episode": 17, "reward": 7.1000, "steps count": 700, "duration": 283} -> {"episode": 18, "reward": -5.9000, "steps count": 700, "duration": 300} -> {"episode": 19, "reward": -36.8009, "steps count": 700, "duration": 316} -> {"episode": 20, "reward": 19.0001, "steps count": 700, "duration": 332} -> {"episode": 21, "reward": 113.3000, "steps count": 461, "duration": 227} -> field invalid : White, 1, Board { positions: [0, 2, 2, 0, 2, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -7, -2, -1, 0, -1, -1] } - -thread 'main' panicked at store/src/game.rs:556:65: -called `Result::unwrap()` on an `Err` value: FieldInvalid -note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace -error: Recipe `trainbot` failed on line 27 with exit code 101 - ---- - -num_episodes: 50, -// memory_size: 8192, // must be set in dqn_model.rs with the MEMORY_SIZE constant -// max_steps: 700, // must be set in environment.rs with the MAX_STEPS constant -dense_size: 256, // neural network complexity -eps_start: 0.9, // epsilon initial value (0.9 => more exploration) -eps_end: 0.05, -eps_decay: 1000.0, - -> Entraînement -> {"episode": 0, "reward": -1118.8921, "steps count": 700, "duration": 9} -> {"episode": 1, "reward": -1119.9921, "steps count": 700, "duration": 17} -> {"episode": 2, "reward": -1118.8921, "steps count": 700, "duration": 28} -> {"episode": 3, "reward": -283.5977, "steps count": 700, "duration": 41} -> {"episode": 4, "reward": -23.4998, "steps count": 700, "duration": 54} -> {"episode": 5, "reward": -31.9999, "steps count": 700, "duration": 68} -> {"episode": 6, "reward": 2.0000, "steps count": 700, "duration": 82} -> {"episode": 7, "reward": 109.3000, "steps count": 192, "duration": 26} -> {"episode": 8, "reward": -4.8000, "steps count": 700, "duration": 102} -> {"episode": 9, "reward": 15.6001, "steps count": 700, "duration": 124} -> {"episode": 10, "reward": 15.6002, "steps count": 700, "duration": 144} -> {"episode": 11, "reward": -65.7008, "steps count": 700, "duration": 162} -> {"episode": 12, "reward": 19.0002, "steps count": 700, "duration": 182} -> {"episode": 13, "reward": 20.7001, "steps count": 700, "duration": 197} -> {"episode": 14, "reward": 12.2002, "steps count": 700, "duration": 229} -> {"episode": 15, "reward": -32.0007, "steps count": 700, "duration": 242} -> {"episode": 16, "reward": 10.5000, "steps count": 700, "duration": 287} -> {"episode": 17, "reward": 24.1001, "steps count": 700, "duration": 318} -> {"episode": 18, "reward": 25.8002, "steps count": 700, "duration": 335} -> {"episode": 19, "reward": 29.2001, "steps count": 700, "duration": 367} -> {"episode": 20, "reward": 9.1000, "steps count": 700, "duration": 366} -> {"episode": 21, "reward": 3.7001, "steps count": 700, "duration": 398} -> {"episode": 22, "reward": 10.5000, "steps count": 700, "duration": 417} -> {"episode": 23, "reward": 10.5000, "steps count": 700, "duration": 438} -> {"episode": 24, "reward": 13.9000, "steps count": 700, "duration": 444} -> {"episode": 25, "reward": 7.1000, "steps count": 700, "duration": 486} -> {"episode": 26, "reward": 12.2001, "steps count": 700, "duration": 499} -> {"episode": 27, "reward": 8.8001, "steps count": 700, "duration": 554} -> {"episode": 28, "reward": -6.5000, "steps count": 700, "duration": 608} -> {"episode": 29, "reward": -3.1000, "steps count": 700, "duration": 633} -> {"episode": 30, "reward": -32.0001, "steps count": 700, "duration": 696} -> {"episode": 31, "reward": 22.4002, "steps count": 700, "duration": 843} -> {"episode": 32, "reward": -77.9004, "steps count": 700, "duration": 817} -> {"episode": 33, "reward": -368.5993, "steps count": 700, "duration": 827} -> {"episode": 34, "reward": -254.6986, "steps count": 700, "duration": 852} -> {"episode": 35, "reward": -433.1992, "steps count": 700, "duration": 884} -> {"episode": 36, "reward": -521.6010, "steps count": 700, "duration": 905} -> {"episode": 37, "reward": -71.1004, "steps count": 700, "duration": 930} -> {"episode": 38, "reward": -251.0004, "steps count": 700, "duration": 956} -> {"episode": 39, "reward": -594.7045, "steps count": 700, "duration": 982} -> {"episode": 40, "reward": -154.4001, "steps count": 700, "duration": 1008} -> {"episode": 41, "reward": -171.3994, "steps count": 700, "duration": 1033} -> {"episode": 42, "reward": -118.7004, "steps count": 700, "duration": 1059} -> {"episode": 43, "reward": -137.4003, "steps count": 700, "duration": 1087} - -thread 'main' has overflowed its stack -fatal runtime error: stack overflow, aborting -error: Recipe `trainbot` was terminated on line 27 by signal 6 - ---- - -num_episodes: 40, -// memory_size: 8192, // must be set in dqn_model.rs with the MEMORY_SIZE constant -// max_steps: 1500, // must be set in environment.rs with the MAX_STEPS constant -dense_size: 256, // neural network complexity -eps_start: 0.9, // epsilon initial value (0.9 => more exploration) -eps_end: 0.05, -eps_decay: 1000.0, - -> Entraînement -> {"episode": 0, "reward": -2399.9993, "steps count": 1500, "duration": 31} -> {"episode": 1, "reward": -2061.6736, "steps count": 1500, "duration": 81} -> {"episode": 2, "reward": -48.9010, "steps count": 1500, "duration": 145} -> {"episode": 3, "reward": 3.8000, "steps count": 1500, "duration": 215} -> {"episode": 4, "reward": -6.3999, "steps count": 1500, "duration": 302} -> {"episode": 5, "reward": 20.8004, "steps count": 1500, "duration": 374} -> {"episode": 6, "reward": 49.6992, "steps count": 1500, "duration": 469} -> {"episode": 7, "reward": 29.3002, "steps count": 1500, "duration": 597} -> {"episode": 8, "reward": 34.3999, "steps count": 1500, "duration": 710} -> {"episode": 9, "reward": 115.3003, "steps count": 966, "duration": 515} -> {"episode": 10, "reward": 25.9004, "steps count": 1500, "duration": 852} -> {"episode": 11, "reward": -122.0007, "steps count": 1500, "duration": 1017} -> {"episode": 12, "reward": -274.9966, "steps count": 1500, "duration": 1073} -> {"episode": 13, "reward": 54.8994, "steps count": 651, "duration": 518} -> {"episode": 14, "reward": -439.8978, "steps count": 1500, "duration": 1244} -> {"episode": 15, "reward": -506.1997, "steps count": 1500, "duration": 1676} -> {"episode": 16, "reward": -829.5031, "steps count": 1500, "duration": 1855} -> {"episode": 17, "reward": -545.2961, "steps count": 1500, "duration": 1892} -> {"episode": 18, "reward": -795.2026, "steps count": 1500, "duration": 2008} -> {"episode": 19, "reward": -637.1031, "steps count": 1500, "duration": 2124} -> {"episode": 20, "reward": -989.6997, "steps count": 1500, "duration": 2241} - -thread 'main' has overflowed its stack -fatal runtime error: stack overflow, aborting -error: Recipe `trainbot` was terminated on line 27 by signal 6 - ---- - -num_episodes: 40, -// memory_size: 8192, // must be set in dqn_model.rs with the MEMORY_SIZE constant -// max_steps: 1000, // must be set in environment.rs with the MAX_STEPS constant -dense_size: 256, // neural network complexity -eps_start: 0.9, // epsilon initial value (0.9 => more exploration) -eps_end: 0.05, -eps_decay: 10000.0, - -> Entraînement -> {"episode": 0, "reward": -1598.8848, "steps count": 1000, "duration": 16} -> {"episode": 1, "reward": -1531.9866, "steps count": 1000, "duration": 34} -> {"episode": 2, "reward": -515.6000, "steps count": 530, "duration": 25} -> {"episode": 3, "reward": -396.1008, "steps count": 441, "duration": 27} -> {"episode": 4, "reward": -540.6996, "steps count": 605, "duration": 43} -> {"episode": 5, "reward": -976.0975, "steps count": 1000, "duration": 89} -> {"episode": 6, "reward": -1014.2944, "steps count": 1000, "duration": 117} -> {"episode": 7, "reward": -806.7012, "steps count": 1000, "duration": 140} -> {"episode": 8, "reward": -1276.6891, "steps count": 1000, "duration": 166} -> {"episode": 9, "reward": -1554.3855, "steps count": 1000, "duration": 197} -> {"episode": 10, "reward": -1178.3925, "steps count": 1000, "duration": 219} -> {"episode": 11, "reward": -1457.4869, "steps count": 1000, "duration": 258} -> {"episode": 12, "reward": -1475.8882, "steps count": 1000, "duration": 291} - ---- - -num_episodes: 40, -// memory_size: 8192, // must be set in dqn_model.rs with the MEMORY_SIZE constant -// max_steps: 1000, // must be set in environment.rs with the MAX_STEPS constant -dense_size: 256, // neural network complexity -eps_start: 0.9, // epsilon initial value (0.9 => more exploration) -eps_end: 0.05, -eps_decay: 3000.0, - -> Entraînement -> {"episode": 0, "reward": -1598.8848, "steps count": 1000, "duration": 15} -> {"episode": 1, "reward": -1599.9847, "steps count": 1000, "duration": 33} -> {"episode": 2, "reward": -751.7018, "steps count": 1000, "duration": 57} -> {"episode": 3, "reward": -402.8979, "steps count": 1000, "duration": 81} -> {"episode": 4, "reward": -289.2985, "steps count": 1000, "duration": 108} -> {"episode": 5, "reward": -231.4988, "steps count": 1000, "duration": 140} -> {"episode": 6, "reward": -138.0006, "steps count": 1000, "duration": 165} -> {"episode": 7, "reward": -145.0998, "steps count": 1000, "duration": 200} -> {"episode": 8, "reward": -60.4005, "steps count": 1000, "duration": 236} -> {"episode": 9, "reward": -35.7999, "steps count": 1000, "duration": 276} -> {"episode": 10, "reward": -42.2002, "steps count": 1000, "duration": 313} -> {"episode": 11, "reward": 69.0002, "steps count": 874, "duration": 300} -> {"episode": 12, "reward": 93.2000, "steps count": 421, "duration": 153} -> {"episode": 13, "reward": -324.9010, "steps count": 866, "duration": 364} -> {"episode": 14, "reward": -1331.3883, "steps count": 1000, "duration": 478} -> {"episode": 15, "reward": -1544.5859, "steps count": 1000, "duration": 514} -> {"episode": 16, "reward": -1599.9847, "steps count": 1000, "duration": 552} - ---- - -Nouveaux points... - -num_episodes: 40, -// memory_size: 8192, // must be set in dqn_model.rs with the MEMORY_SIZE constant -// max_steps: 1000, // must be set in environment.rs with the MAX_STEPS constant -dense_size: 256, // neural network complexity -eps_start: 0.9, // epsilon initial value (0.9 => more exploration) -eps_end: 0.05, -eps_decay: 3000.0, - -> Entraînement -> {"episode": 0, "reward": -1798.1161, "steps count": 1000, "duration": 15} -> {"episode": 1, "reward": -1800.0162, "steps count": 1000, "duration": 34} -> {"episode": 2, "reward": -1718.6151, "steps count": 1000, "duration": 57} -> {"episode": 3, "reward": -1369.5055, "steps count": 1000, "duration": 82} -> {"episode": 4, "reward": -321.5974, "steps count": 1000, "duration": 115} -> {"episode": 5, "reward": -213.2988, "steps count": 1000, "duration": 148} -> {"episode": 6, "reward": -175.4995, "steps count": 1000, "duration": 172} -> {"episode": 7, "reward": -126.1011, "steps count": 1000, "duration": 203} -> {"episode": 8, "reward": -105.1011, "steps count": 1000, "duration": 242} -> {"episode": 9, "reward": -46.3007, "steps count": 1000, "duration": 281} -> {"episode": 10, "reward": -57.7006, "steps count": 1000, "duration": 323} -> {"episode": 11, "reward": -15.7997, "steps count": 1000, "duration": 354} -> {"episode": 12, "reward": -38.6999, "steps count": 1000, "duration": 414} -> {"episode": 13, "reward": 10.7002, "steps count": 1000, "duration": 513} -> {"episode": 14, "reward": -10.1999, "steps count": 1000, "duration": 585} -> {"episode": 15, "reward": -8.3000, "steps count": 1000, "duration": 644} -> {"episode": 16, "reward": -463.4984, "steps count": 973, "duration": 588} -> {"episode": 17, "reward": -148.8951, "steps count": 1000, "duration": 646} -> {"episode": 18, "reward": 3.0999, "steps count": 1000, "duration": 676} -> {"episode": 19, "reward": -12.0999, "steps count": 1000, "duration": 753} -> {"episode": 20, "reward": 6.9000, "steps count": 1000, "duration": 801} -> {"episode": 21, "reward": 14.5001, "steps count": 1000, "duration": 850} -> {"episode": 22, "reward": -19.6999, "steps count": 1000, "duration": 937} -> {"episode": 23, "reward": 83.0000, "steps count": 456, "duration": 532} -> {"episode": 24, "reward": -13.9998, "steps count": 1000, "duration": 1236} -> {"episode": 25, "reward": 25.9003, "steps count": 1000, "duration": 1264} -> {"episode": 26, "reward": 1.2002, "steps count": 1000, "duration": 1349} -> {"episode": 27, "reward": 3.1000, "steps count": 1000, "duration": 1364} -> {"episode": 28, "reward": -6.4000, "steps count": 1000, "duration": 1392} -> {"episode": 29, "reward": -4.4998, "steps count": 1000, "duration": 1444} -> {"episode": 30, "reward": 3.1000, "steps count": 1000, "duration": 1611} - -thread 'main' has overflowed its stack -fatal runtime error: stack overflow, aborting - ---- - -num_episodes: 40, -// memory_size: 8192, // must be set in dqn_model.rs with the MEMORY_SIZE constant -// max_steps: 700, // must be set in environment.rs with the MAX_STEPS constant -dense_size: 256, // neural network complexity -eps_start: 0.9, // epsilon initial value (0.9 => more exploration) -eps_end: 0.05, -eps_decay: 3000.0, - -{"episode": 0, "reward": -1256.1014, "steps count": 700, "duration": 9} -{"episode": 1, "reward": -1256.1013, "steps count": 700, "duration": 20} -{"episode": 2, "reward": -1256.1014, "steps count": 700, "duration": 31} -{"episode": 3, "reward": -1258.7015, "steps count": 700, "duration": 44} -{"episode": 4, "reward": -1206.8009, "steps count": 700, "duration": 56} -{"episode": 5, "reward": -473.2974, "steps count": 700, "duration": 68} -{"episode": 6, "reward": -285.2984, "steps count": 700, "duration": 82} -{"episode": 7, "reward": -332.6987, "steps count": 700, "duration": 103} -{"episode": 8, "reward": -359.2984, "steps count": 700, "duration": 114} -{"episode": 9, "reward": -118.7008, "steps count": 700, "duration": 125} -{"episode": 10, "reward": -83.9004, "steps count": 700, "duration": 144} -{"episode": 11, "reward": -68.7006, "steps count": 700, "duration": 165} -{"episode": 12, "reward": -49.7002, "steps count": 700, "duration": 180} -{"episode": 13, "reward": -68.7002, "steps count": 700, "duration": 204} -{"episode": 14, "reward": -38.3001, "steps count": 700, "duration": 223} -{"episode": 15, "reward": -19.2999, "steps count": 700, "duration": 240} -{"episode": 16, "reward": -19.1998, "steps count": 700, "duration": 254} -{"episode": 17, "reward": -21.1999, "steps count": 700, "duration": 250} -{"episode": 18, "reward": -26.8998, "steps count": 700, "duration": 280} -{"episode": 19, "reward": -11.6999, "steps count": 700, "duration": 301} -{"episode": 20, "reward": -13.5998, "steps count": 700, "duration": 317} -{"episode": 21, "reward": 5.4000, "steps count": 700, "duration": 334} -{"episode": 22, "reward": 3.5000, "steps count": 700, "duration": 353} -{"episode": 23, "reward": 13.0000, "steps count": 700, "duration": 374} -{"episode": 24, "reward": 7.3001, "steps count": 700, "duration": 391} -{"episode": 25, "reward": -4.1000, "steps count": 700, "duration": 408} -{"episode": 26, "reward": -17.3998, "steps count": 700, "duration": 437} -{"episode": 27, "reward": 11.1001, "steps count": 700, "duration": 480} -{"episode": 28, "reward": -4.1000, "steps count": 700, "duration": 505} -{"episode": 29, "reward": -13.5999, "steps count": 700, "duration": 522} -{"episode": 30, "reward": -0.3000, "steps count": 700, "duration": 540} -{"episode": 31, "reward": -15.4998, "steps count": 700, "duration": 572} -{"episode": 32, "reward": 14.9001, "steps count": 700, "duration": 630} -{"episode": 33, "reward": -4.1000, "steps count": 700, "duration": 729} -{"episode": 34, "reward": 5.4000, "steps count": 700, "duration": 777} -{"episode": 35, "reward": 7.3000, "steps count": 700, "duration": 748} -{"episode": 36, "reward": 9.2001, "steps count": 700, "duration": 767} -{"episode": 37, "reward": 13.0001, "steps count": 700, "duration": 791} -{"episode": 38, "reward": -13.5999, "steps count": 700, "duration": 813} -{"episode": 39, "reward": 26.3002, "steps count": 700, "duration": 838} - -> Sauvegarde du modèle de validation -> Modèle de validation sauvegardé : models/burn_dqn_50_model.mpk -> Chargement du modèle pour test -> Chargement du modèle depuis : models/burn_dqn_50_model.mpk -> Test avec le modèle chargé -> Episode terminé. Récompense totale: 70.00, Étapes: 700 diff --git a/doc/refs/renet_echo.rs b/doc/refs/renet_echo.rs deleted file mode 100644 index 366a391..0000000 --- a/doc/refs/renet_echo.rs +++ /dev/null @@ -1,182 +0,0 @@ -use std::{ - collections::HashMap, - net::{SocketAddr, UdpSocket}, - sync::mpsc::{self, Receiver, TryRecvError}, - thread, - time::{Duration, Instant, SystemTime}, -}; - -use renet::{ - transport::{ - ClientAuthentication, NetcodeClientTransport, NetcodeServerTransport, ServerAuthentication, ServerConfig, NETCODE_USER_DATA_BYTES, - }, - ClientId, ConnectionConfig, DefaultChannel, RenetClient, RenetServer, ServerEvent, -}; - -// Helper struct to pass an username in the user data -struct Username(String); - -impl Username { - fn to_netcode_user_data(&self) -> [u8; NETCODE_USER_DATA_BYTES] { - let mut user_data = [0u8; NETCODE_USER_DATA_BYTES]; - if self.0.len() > NETCODE_USER_DATA_BYTES - 8 { - panic!("Username is too big"); - } - user_data[0..8].copy_from_slice(&(self.0.len() as u64).to_le_bytes()); - user_data[8..self.0.len() + 8].copy_from_slice(self.0.as_bytes()); - - user_data - } - - fn from_user_data(user_data: &[u8; NETCODE_USER_DATA_BYTES]) -> Self { - let mut buffer = [0u8; 8]; - buffer.copy_from_slice(&user_data[0..8]); - let mut len = u64::from_le_bytes(buffer) as usize; - len = len.min(NETCODE_USER_DATA_BYTES - 8); - let data = user_data[8..len + 8].to_vec(); - let username = String::from_utf8(data).unwrap(); - Self(username) - } -} - -fn main() { - env_logger::init(); - println!("Usage: server [SERVER_PORT] or client [SERVER_ADDR] [USER_NAME]"); - let args: Vec = std::env::args().collect(); - - let exec_type = &args[1]; - match exec_type.as_str() { - "client" => { - let server_addr: SocketAddr = args[2].parse().unwrap(); - let username = Username(args[3].clone()); - client(server_addr, username); - } - "server" => { - let server_addr: SocketAddr = format!("0.0.0.0:{}", args[2]).parse().unwrap(); - server(server_addr); - } - _ => { - println!("Invalid argument, first one must be \"client\" or \"server\"."); - } - } -} - -const PROTOCOL_ID: u64 = 7; - -fn server(public_addr: SocketAddr) { - let connection_config = ConnectionConfig::default(); - let mut server: RenetServer = RenetServer::new(connection_config); - - let current_time = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap(); - let server_config = ServerConfig { - current_time, - max_clients: 64, - protocol_id: PROTOCOL_ID, - public_addresses: vec![public_addr], - authentication: ServerAuthentication::Unsecure, - }; - let socket: UdpSocket = UdpSocket::bind(public_addr).unwrap(); - - let mut transport = NetcodeServerTransport::new(server_config, socket).unwrap(); - - let mut usernames: HashMap = HashMap::new(); - let mut received_messages = vec![]; - let mut last_updated = Instant::now(); - - loop { - let now = Instant::now(); - let duration = now - last_updated; - last_updated = now; - - server.update(duration); - transport.update(duration, &mut server).unwrap(); - - received_messages.clear(); - - while let Some(event) = server.get_event() { - match event { - ServerEvent::ClientConnected { client_id } => { - let user_data = transport.user_data(client_id).unwrap(); - let username = Username::from_user_data(&user_data); - usernames.insert(client_id, username.0); - println!("Client {} connected.", client_id) - } - ServerEvent::ClientDisconnected { client_id, reason } => { - println!("Client {} disconnected: {}", client_id, reason); - usernames.remove_entry(&client_id); - } - } - } - - for client_id in server.clients_id() { - while let Some(message) = server.receive_message(client_id, DefaultChannel::ReliableOrdered) { - let text = String::from_utf8(message.into()).unwrap(); - let username = usernames.get(&client_id).unwrap(); - println!("Client {} ({}) sent text: {}", username, client_id, text); - let text = format!("{}: {}", username, text); - received_messages.push(text); - } - } - - for text in received_messages.iter() { - server.broadcast_message(DefaultChannel::ReliableOrdered, text.as_bytes().to_vec()); - } - - transport.send_packets(&mut server); - thread::sleep(Duration::from_millis(50)); - } -} - -fn client(server_addr: SocketAddr, username: Username) { - let connection_config = ConnectionConfig::default(); - let mut client = RenetClient::new(connection_config); - - let socket = UdpSocket::bind("127.0.0.1:0").unwrap(); - let current_time = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap(); - let client_id = current_time.as_millis() as u64; - let authentication = ClientAuthentication::Unsecure { - server_addr, - client_id, - user_data: Some(username.to_netcode_user_data()), - protocol_id: PROTOCOL_ID, - }; - - let mut transport = NetcodeClientTransport::new(current_time, authentication, socket).unwrap(); - let stdin_channel: Receiver = spawn_stdin_channel(); - - let mut last_updated = Instant::now(); - loop { - let now = Instant::now(); - let duration = now - last_updated; - last_updated = now; - - client.update(duration); - transport.update(duration, &mut client).unwrap(); - - if transport.is_connected() { - match stdin_channel.try_recv() { - Ok(text) => client.send_message(DefaultChannel::ReliableOrdered, text.as_bytes().to_vec()), - Err(TryRecvError::Empty) => {} - Err(TryRecvError::Disconnected) => panic!("Channel disconnected"), - } - - while let Some(text) = client.receive_message(DefaultChannel::ReliableOrdered) { - let text = String::from_utf8(text.into()).unwrap(); - println!("{}", text); - } - } - - transport.send_packets(&mut client).unwrap(); - thread::sleep(Duration::from_millis(50)); - } -} - -fn spawn_stdin_channel() -> Receiver { - let (tx, rx) = mpsc::channel::(); - thread::spawn(move || loop { - let mut buffer = String::new(); - std::io::stdin().read_line(&mut buffer).unwrap(); - tx.send(buffer.trim_end().to_string()).unwrap(); - }); - rx -} diff --git a/doc/specs/vocabulary.md b/doc/specs/vocabulary.md deleted file mode 100644 index a738230..0000000 --- a/doc/specs/vocabulary.md +++ /dev/null @@ -1,5 +0,0 @@ -# Vocabulary - -Dames : checkers / men -cases : points -cadrant : quarter diff --git a/doc/specs/diagrammes.md b/doc/store_diagrams/diagrammes.md similarity index 100% rename from doc/specs/diagrammes.md rename to doc/store_diagrams/diagrammes.md diff --git a/doc/specs/stateEncoding.md b/doc/store_diagrams/stateEncoding.md similarity index 100% rename from doc/specs/stateEncoding.md rename to doc/store_diagrams/stateEncoding.md diff --git a/doc/specs/store.puml b/doc/store_diagrams/store.puml similarity index 100% rename from doc/specs/store.puml rename to doc/store_diagrams/store.puml diff --git a/doc/specs/workflow.md b/doc/store_diagrams/workflow.md similarity index 100% rename from doc/specs/workflow.md rename to doc/store_diagrams/workflow.md diff --git a/doc/research.md b/doc/store_overview.md similarity index 99% rename from doc/research.md rename to doc/store_overview.md index 60dc3c9..573fb22 100644 --- a/doc/research.md +++ b/doc/store_overview.md @@ -1,6 +1,6 @@ -# Trictrac — Research Notes +# Trictrac — store crate overview -## 1. Rust Engine: Module Map +## 1. Module Map | Module | Responsibility | | ---------------------- | ------------------------------------------------------------------------- | From 79a618cd77714f32248f1c186afe751ebd71bae9 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Wed, 8 Apr 2026 16:19:14 +0200 Subject: [PATCH 07/78] fix(client_web): adjust fields highlights colors --- client_web/assets/style.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client_web/assets/style.css b/client_web/assets/style.css index 8b48dbc..32677b8 100644 --- a/client_web/assets/style.css +++ b/client_web/assets/style.css @@ -423,10 +423,10 @@ input[type="text"] { .top-row .field { justify-content: flex-start; } -.field.clickable { cursor: pointer; } -.field.clickable:hover { background: #e8c060 !important; } -.field.selected { background: #88bb44 !important; outline: 2px solid #446622; } -.field.dest { background: #aad060 !important; } +.field.clickable { cursor: pointer; background: #aad060 !important; } +.field.clickable:hover { background: #88bb44 !important; } +.field.selected { background: #709a20 !important; outline: 2px solid #446622; } +/* .field.dest { background: #aad060 !important; } */ .field-num { font-size: 0.65rem; From bba214538a30e302bb688eedd6ac21acf32eef95 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Wed, 8 Apr 2026 17:33:47 +0200 Subject: [PATCH 08/78] =?UTF-8?q?doc:=20Mafil=C3=A2tre=20rules=20of=20tric?= =?UTF-8?q?trac=20translation=20&=20vocabulary?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/refs/laws_and_rules_of_trictrac.md | 409 +++++++++++++++++++++++++ doc/refs/lois_et_regles_du_trictrac.md | 394 ++++++++++++++++++++++++ doc/refs/vocabulary.md | 68 ++++ 3 files changed, 871 insertions(+) create mode 100644 doc/refs/laws_and_rules_of_trictrac.md create mode 100644 doc/refs/lois_et_regles_du_trictrac.md create mode 100644 doc/refs/vocabulary.md diff --git a/doc/refs/laws_and_rules_of_trictrac.md b/doc/refs/laws_and_rules_of_trictrac.md new file mode 100644 index 0000000..2171f3b --- /dev/null +++ b/doc/refs/laws_and_rules_of_trictrac.md @@ -0,0 +1,409 @@ +# LAWS AND RULES OF TRICTRAC + +2013 EDITION — SUPPLEMENT TO THE REASONED DICTIONARY OF THE GAME OF TRICTRAC www.trictrac.org by Michel MALFILÂTRE (trictrac.org) + +*Translator's note: French game terms are preserved in italics on first use. See [vocabulary.md](vocabulary.md) for a complete French/English mapping.* + +There are two types of game in grand trictrac: the ordinary game and the scored game. +In both, the main laws and rules are the same; but the goal, scoring, and payments differ. + +## ARTICLE I: THE ORDINARY GAME + +It is played between two players; the goal is to be the first to score 12 holes (*trous*). One hole equals 12 points. + +## ARTICLE II: THE SCORED GAME + +It can be played by 2, 3, or 4 players in teams or in *chouette* format. The goal is to win as many tokens as possible by playing an agreed number of rounds (*marqués*). A round always pits two players against each other. With three or four players, participants rotate at each round in a defined order. + +To win a round, a player must score at least 6 holes and then leave (*s'en aller*) (see Article XV). The maximum number of holes per round is generally unlimited, but players may agree otherwise. + +If both players are tied at or above 6 holes when one player leaves, the round is drawn and must be replayed (*refait*) immediately. + +## ARTICLE III: EQUIPMENT + +The game is played on a board called a *trictrac*, composed of two tables: the small jan table and the big jan table. The first table contains each player's small jan and the second contains each player's big jan. One player's small jan is also the other player's return jan. Each jan consists of 6 alternately coloured fields (*flèches*). + +The board has 24 triangular fields in total and 30 holes drilled into its rails and bands. + +A hole is drilled at the base of each field. These holes hold each player's peg (*fichet*) to record the holes (games) won. The three holes on each side rail serve to place pegs at the start of the game, along with the flag (*pavillon*). + +In addition to these three pegs (one of which is the flag), the game uses 30 checkers — 15 white and 15 black (or two other contrasting colours) — three tokens (*jetons*), two dice cups (*cornets*), and two six-sided dice. + +The scored game is also played with tokens used for payments, or with paper and pencil to keep a token account. + +## ARTICLE IV: STARTING POSITION + +At the start of the game, all checkers are stacked into two separate stacks (*talons*): one of white checkers, one of black. Each stack is placed facing the other on a corner field adjacent to one of the two outer side rails, called the starting rail. This rail may later become the exit rail. + +Each player uses the checkers from the stack closest to them. The corner fields against the other outer side rail are the rest corners. The twelfth field of each player — counting the stack as the first — is therefore that player's rest corner, or simply: *corner*. + +Pegs are placed in the 3 holes of the starting rail, with the flag occupying the central hole. Three tokens are placed against this rail between the two stacks. + +## ARTICLE V: FIRST-MOVE PRIVILEGE + +To determine who plays first at the start of a game, each player rolls a die with a dice cup; the player who rolls the higher number generally takes the white checkers and begins, playing both numbers rolled. + +An alternative method: one player rolls both dice; the player closest to the higher die plays first, playing both numbers rolled. + +In both cases, if the dice show the same value, they must be re-rolled. A game may therefore not begin with a double. + +After each new setting (*relevé*), first-move privilege belongs to the player who first exited all their checkers or who left first (see Articles VIII and XV). + +In the scored game with two players, first-move privilege alternates each round. With three or four players, it belongs to the player who remains to face a new opponent. + +In case of a replay, the player who had first-move privilege in the drawn round retains it for that replay and any subsequent replays. + +## ARTICLE VI: ROLLING AND PLAYING THE DICE + +Both dice must be rolled together with a dice cup. They are valid when they land flat inside the board, even if resting on a checker or token. If a die is broken, rests on a rail, or lands outside the board, both dice must be re-rolled. + +The two numbers may be played with two checkers — each playing one number — or with a single checker playing both numbers successively in a chained move (*tout d'une*) (for 6 and 1: the 6 advances a checker six fields and the 1 advances another one field; or a single checker moves seven fields total, stopping on the first or sixth field as a resting point before reaching the seventh). + +Both numbers must be played if possible. If only one can be played and there is a choice, the higher number must be played. + +Any unplayed number is penalised: this is a *jan-qui-ne-peut* (helpless man), worth 2 helplessness points per unplayed number, credited to the opponent. + +Dice must not be picked up before the move is fully played and all points marked (including school penalties). + +## ARTICLE VII: MOVEMENT OF CHECKERS + +Checkers always move in the same direction — opposite to the opponent's — and never backwards. + +In the course of a game, checkers travel from the stack to the rest corner (the twelfth field), then back to the opponent's stack on the return. + +A checker may only be placed, or made to rest during a chained move, on an empty field or one already occupied by one or more of the player's own checkers. The rest corner is an exception to this rule (see Article IX). + +A checker may not be placed on a field occupied by the opponent's checker(s). + +## ARTICLE VIII: EXITING CHECKERS + +When all of a player's checkers are gathered in their last jan (return jan), they are exited from the board using the exit rail privilege, which grants this rail the value of one additional field. + +A checker may be exited by an exact exit number that brings it directly to the exit rail, or by an overflow number (*nombre excédant*) that would carry the farthest checker beyond the rail. Other numbers — failing numbers (*nombres défaillants*) — must be played within the jan. + +A checker may be exited in a chained move. A player may choose not to exit a checker on an exact exit number and instead play another checker within the jan as a failing number, if possible; but an overflow number must always exit a checker. + +When exiting, all non-exiting numbers must be played within the jan when possible. It is therefore not permitted to play one number in a way that forces the second to be played only as an overflow. Likewise, if a number cannot be played within the jan due to the presence of opponent checkers, it may not be played as an overflow using a checker closer to the exit rail. + +When a player has exited all their checkers, they score 4 points for the last exited checker on a normal roll, or 6 points on a double. + +The checkers of both players are then reset and returned to their respective stacks; play continues with no change to the score. By privilege, the player who exited first rolls again and plays (first-move privilege). + +Exiting can occur multiple times in a game. + +## ARTICLE IX: THE REST CORNER + +The rest corner may only be taken simultaneously (*d'emblée*): two checkers must enter it at the same time. Likewise, it may only be vacated simultaneously. It must therefore always be occupied by at least two checkers. It is forbidden to place or leave a single checker on one's own rest corner. + +Under any circumstances, it is forbidden to place one or more checkers on the opponent's rest corner. + +An empty corner may, however, serve as a resting field for any checker during a chained move. + +A player may take their corner naturally, by effect (*par effet*), or by puissance (*par puissance*) — the latter when the opponent's corner is empty and the player could take it simultaneously. By privilege, the player takes their own corner instead, as if stepping back one field. + +If a player can take their corner both by effect and by puissance, they must take it by effect. + +After vacating the corner, it may be retaken under the same conditions. + +## ARTICLE X: HITTING CHECKERS + +This *jan de récompense* (reward jan) occurs when an opponent's checker is exposed alone on a half-field and the player rolls numbers that could cover it with one or more of their own checkers. + +The hit is always fictitious — it exists only as a potential; no checker is actually moved. + +A checker may be hit in one, two, or three ways: + +- **One way**: only one of the direct die values, or the combined sum, could cover the checker. +- **Two ways**: both direct die values could cover it, or one direct value and the combined sum. +- **Three ways**: both direct values can cover it, and the combined sum can as well. + +By its nature, a double allows at most one or two ways to hit: + +- **One way**: one direct value, or the combined sum. +- **Two ways**: one direct value and the combined sum. + +Only one way is counted on a double, even when two checkers on a field could each cover the opponent's checker. + +Multiple checkers may be hit in the same move. + +For each checker hit and for each way it is hit, this reward jan is worth: +- **2 points** on a normal roll, **4 points** on a double — if the hit checker is in the big jan table. +- **4 points** on a normal roll, **6 points** on a double — if the hit checker is in the small jan table or return jan. + +Reward jans must be marked by the player who achieves them (under penalty of being "sent to school" — see Article XVI). + +To hit a checker using the combined sum, the player must have a resting field (*repos*): a field where one die can land so that the second can (fictitiously) reach the target checker. This resting field must be either empty, already held by the player's own checkers, or occupied by a single opponent checker — which is then also hit. + +A *helpless man* (*jan-qui-ne-peut*) occurs when, attempting to hit using the combined sum, no free resting field exists and the player must stop on a full field held by the opponent. The hit is then a **false hit** (*à faux*), and the opponent gains as many points as the player would have scored with a true hit. + +A checker already hit with a true hit cannot also be hit with a false hit in the same move. However, multiple checkers may be hit simultaneously — some truly, others falsely. + +Points for true hits must be marked before those given to the opponent for false hits. The opponent must mark their false-hit points in due time, under penalty of school (see Article XVI). + +## ARTICLE XI: HITTING THE CORNER + +This reward jan occurs when a player holds their own rest corner, the opponent's corner is empty, and the player rolls numbers that would let them take the opponent's corner simultaneously, without unstacking their own corner (i.e., without using the two checkers already holding it). + +Since taking the opponent's corner is actually forbidden, the player hits it instead, scoring **4 points** on a normal roll and **6 points** on a double. This hit can never be false, as it uses two direct die values and never the combined sum. + +## ARTICLE XII: OPENING JANS + +There are three opening jans: the **two tables jan**, the **mezeas jan**, and the **six tables jan**. They can only be achieved at the start of a game, a round, or their respective new settings. + +### TWO TABLES JAN + +At the start of a game, round, or new setting — when only two checkers have been deployed — if the player rolls numbers that would place one checker on their own empty rest corner and one on the opponent's, a two tables jan is scored if the opponent's corner is also empty; otherwise, if the opponent has already taken their corner, a **contre two tables** is scored instead. + +In the first case, hitting both corners is worth **4 points** on a normal roll and **6 points** on a double, credited to the player. In the second case, the same point value is credited to the opponent as a false hit. + +### MEZEAS JAN + +At the start of a game, round, or new setting — having taken one's corner with only two checkers deployed — if on the very next roll one or two aces (1s) are rolled, a mezeas jan is scored if the opponent's corner is empty; otherwise, a **contre mezeas** is scored. + +In the first case, hitting the corner is worth **4 points** per ace and **6 points** for a double; in the second case, the same value is credited to the opponent. + +### SIX TABLES JAN (THREE-ROLL JAN) + +At the start of a game, round, or new setting — having placed one checker on four of the first six fields (fields 2–7) during the first two rolls — if on the third roll the player could fill the remaining two fields, they score a six tables jan. This jan is worth **4 points** in all cases, as it cannot be achieved with a double. + +The player is not obliged to actually fill those two fields; they are free to play the roll however they prefer. + +## ARTICLE XIII: SMALL JAN, BIG JAN & RETURN JAN + +### THE FULL JAN (PLEIN) + +A jan is full (*plein*) when a player occupies each of its six fields with at least two of their own checkers. + +Each player may fill their small jan, big jan, and return jan. + +A full jan may be broken and then refilled. Over the course of a game, a player may fill several different jans successively, or the same jan multiple times. + +### FILLING + +A jan is filled when the player rolls numbers that complete the full jan by bringing in the last checker. + +A jan may be filled in one, two, or three ways: + +- **One way**: the last half-field can be covered by one direct die value or by the combined sum in a chained move. +- **Two ways**: it can be covered by either direct die value, or by one direct value and the combined sum. +- **Three ways**: it can be covered by either direct value, and also by the combined sum. + +Each way of filling is worth **4 points** on a normal roll and **6 points** on a double. + +For a jan to be filled in multiple ways, exactly one checker must be missing — only the last checker brought in actually fills the jan. Therefore, a player fills in only one way when taking the last field simultaneously or covering both last half-fields in the same move. + +A double allows at most two ways to fill. + +A jan is not effectively filled when, though able to complete it with one die, the player must break it to play the other. When a player "fills in passing" this way, no points are scored and they are not obliged to perform the filling. + +The return jan may not be filled by counting either of the two checkers holding the rest corner as a way of filling — doing so would unstack the corner, which is forbidden. + +After marking points for filling a jan, the player must actually fill it with one or two checkers, under penalty of false move and school (see Article XVII). + +If the jan can be filled in multiple ways, the player fills it with the checker of their choice and is free to play the other die as they wish. + +### CONSERVING + +A full jan is conserved when the player can play both dice without breaking it — that is, without using any of the twelve checkers that compose the full jan. + +Conserving a full jan is worth **4 points** on a normal roll and **6 points** on a double. There can be at most one way to conserve. + +A player may use the privilege of conserving by helplessness (*par impuissance*) when, having a full jan, the position prevents playing one or both numbers. Only the number 6 allows this conservation, as all lower numbers can be played within the jan (even if it means breaking the full jan). + +By privilege, the full return jan may be conserved by exiting one, two, or three checkers. + +As with filling, when it is possible to play without breaking a full jan, the player must actually conserve it — under penalty of false move and school (see Article XVII). + +## ARTICLE XIV: FORBIDDEN JANS + +It is forbidden to place a checker in the opponent's small jan or big jan as long as the opponent retains the material possibility of filling that jan with the checkers available to them. + +This prohibition normally ends once the opponent has moved enough checkers beyond the fields needed to complete the jan, so that those checkers can no longer serve to fill it — making the full jan materially impossible. + +Once the opponent can no longer complete the full jan, the player has the right to place one or more of their own checkers there. + +However, when playing a chained move, it is always permitted to use the empty fields of the opponent's big jan (including the corner) as a resting field — even if it can still be filled — in order to pass a checker into the return jan, as long as the return jan is not itself forbidden. + +## ARTICLE XV: SCORING + +Points and holes won must always be marked before touching one's checkers to play, or before rolling the dice for the next move if those points come from the opponent's roll (helpless man, contre-jans, schools). + +Points are marked with tokens. For **2 points**, the token is placed at the tip of the player's second field or between the second and third fields; for **4 points**, at the fourth or between the fourth and fifth; for **6 points**, at the sixth or against the cross-rail; for **8 points**, on the other side of that rail, in the big jan; for **10 points**, against the side rail of the big jan or at the tip of the rest corner field. **12 or 0 points** are marked against the starting rail between the two stacks, as at the start of the game. + +12 points make a hole. If the 12 points of a hole were all scored consecutively from zero — that is, without the opponent having scored any points during that run — the hole is won *bredouille* and counts as **2 holes**. This double-hole advantage applies equally to the first and second player to start marking. The first player to mark uses a single token and can win the hole bredouille as long as the opponent scores nothing. If the opponent then scores, they mark with a double token called the *bredouille* and continue marking this way as long as the first player scores nothing. If they reach at least 12 points in this fashion, they win the hole bredouille in second. But if the first player scores again beforehand, they remove one of the opponent's two tokens (*débredouiller*), and neither player can thereafter win the hole bredouille. Once both players each have a single-token mark, the hole will necessarily be won simple by one or the other. + +Holes are marked with pegs. Each player advances their peg along the row of holes drilled at the base of the twelve fields in their small and big jans. The first hole is at the base of the stack, the twelfth and last at the base of the rest corner. + +Earned holes must be marked before touching the tokens. Any opponent token (bredouille or not) is then reset to zero at the starting rail. The player's own token is also reset if they scored exactly 12 points; otherwise the remainder — *points de reste* — are marked normally with a token. + +If on the same move the opponent is owed points, they mark them afterwards, starting from zero, using one or two tokens depending on whether the player marked any remainder points. + +Multiple holes, both single and double, may be won in the same move. + +In the scored game, a round may be won simple, double, or quadruple depending on whether the holes were scored consecutively. If the holes were not consecutive, the round is simple. If at least 6 holes were consecutive, the round is won in small bredouille and counts double. If at least 12 holes were consecutive, it is won in big bredouille and counts quadruple. + +As with the hole bredouille, this advantage applies equally to the first and second player to score holes. The second player takes the flag and places it at their peg's starting position on the starting rail. If the first player wins new holes, they take the flag back and return it to the central hole. The round is then necessarily won simple. + +## ARTICLE XVI: STAYING OR LEAVING + +When a player wins one or more holes through their own dice roll, they may choose to stay (*tenir*) or use the privilege of leaving (*s'en aller*). If the winning points come from the opponent's roll (helpless man, schools), the player must stay. + +**Staying**: after marking the hole(s), the player resets the opponent's token if necessary, marks any remainder points, and continues playing normally. The opponent then marks any points they may have earned from this move (see Article XV). + +**Leaving**: after marking the hole(s), the player verbally announces their intention to leave, as the opponent may object in case of a fault or school. Once the opponent has verbally agreed or begun breaking their position, all tokens are reset to zero and all checkers of both players are returned to their stacks. Only the holes won remain. No remainder points may be marked and the opponent cannot mark points or holes for this move. Play resumes from the start; by privilege, the player who left has first-move privilege for this new setting — they roll and play. + +In the scored game, once a player has scored at least 6 holes, if either player leaves, the round ends. The winner is whoever has the most holes. In case of a tie, the round is drawn and replayed. + +## ARTICLE XVII: FAULTS AND SCHOOLS + +There are three types of fault in this game: + +**1. Simple faults** — of little harm to the opponent; some can be corrected normally (e.g., playing out of turn, rolling outside the board, accidentally disturbing the position, forgetting to mark a school). No penalty is incurred for these faults. + +**2. False move faults (*fausse case*)** — potentially harmful; occur when a checker is not played to the correct field given the numbers rolled, or when a rule of play is violated (laws regarding the rest corner, forbidden jans, filling, and conserving). A false move may give rise to a school when points have been marked for a jan that is not then actually performed — as the rules require (e.g., marking for filling or conserving but not doing so). In addition to the rule "checker touched, checker abandoned, checker played" (unless the player said "*j'adoube*"), the player must accept the opponent's decision regarding rectification of the fault. + +The opponent must point out the fault(s) before rolling for their own move; they may rectify the fault in their own interest, while respecting the rules, or leave the position unchanged. If a corner was taken by puissance when it could have been taken by effect, the opponent may prevent the player from taking it on that move if the fault is recognised and an alternative play exists. If a half-field was falsely covered, the opponent may also prevent the covering. + +**3. Marking faults** — always harmful; occur when points or holes are forgotten, over-marked, or marked incorrectly. The opponent may penalise the player by "sending them to school." A school is committed once dice have been rolled or checkers touched, or once a token marker has been advanced too far and released. In some cases the school is committed as soon as an intentional declaration is made (leaving, school, invitation to play). + +A school is worth to the opponent exactly as many points as were missed or over-marked in a move. Moreover, in case of over-marking, the opponent corrects the mark by removing the excess points. When marking school points, or just after, the opponent must announce it by saying: "School!" or "N points of school." + +No one is obliged to mark a school — there is no "school of school." But if it is marked, it must be marked in full, or the opponent may request rectification. The opponent may also force the faulty player to correct their mark without marking the school. + +A **false school** occurs when a player marks an incorrect school or a school that does not exist. This is itself a school that the opponent may mark in their favour. + +A **school escalation** occurs when a player who committed a school has had it marked by their opponent, believes the opponent erred, removes that school and marks it in their own favour as a false school — but the opponent, maintaining the school was valid, removes the player's mark, restores the first school, and adds further points for this second school. The dispute could continue indefinitely unless the players reach a frank resolution. + +At any time a player may ask their opponent to explain the points they are marking or removing. The opponent must explain. + +No school of holes is incurred for marking a hole won bredouille as a simple hole. But a school of points is incurred for holes forgotten due to points earned, or for holes over-marked for points not earned. + +School points are marked last. + +## ARTICLE XVIII: SEQUENCE OF PLAY + +For a move to be regular, each player must act in the following order: + +As soon as the opponent's move ends: + +1. If applicable, mark the opponent's helpless man penalties or contre-jans. +2. If applicable and desired, mark the opponent's schools and announce: "School!"; rectify any false moves and marking errors. + +Then: + +3. Roll the dice for one's own move. If applicable, the opponent then marks any schools committed in steps 1 and 2. Resolve false schools and school escalations. +4. If applicable, mark points for opening jans, reward jans (checker hits and corner hits), filled or conserved jans, or exit points. +5. If applicable, decide to stay or leave: + - **Stay**: reset tokens and mark any remainder points. + - **Leave**: announce it, then break the position after the opponent's agreement. Reset all checkers, reset all tokens, and roll again to play (unless the game or round is over). +6. In case of exit: reset checkers, do not reset either player's tokens, and roll again to play. +7. Play both numbers rolled if possible. + +The opponent then plays following the same sequence. + +8. If applicable, mark any schools the opponent committed in their steps 1 and 2, as soon as they have rolled the dice, or interrupt the roll to rectify the marking. + +Failure to respect this sequence is a fault and may be penalised by the opponent. + +## ARTICLE XIX: THE SCORED GAME + +### THREE- AND FOUR-PLAYER GAME + +The number of rounds chosen for the game must be a multiple of the number of players, so that each player faces every opponent the same number of times. + +With three players, the first round pairing is drawn by lot. The player who draws the highest number begins with white checkers and plays the two numbers rolled. + +For the second round, the winner is replaced by the third player, but first-move privilege belongs to the player who stayed at the table. + +For the following round, the third player remains but the others alternate. + +Each player thus plays two rounds in a row against different opponents. Only the winner of the first round plays just once — at the very beginning and at the very end of the game. + +In case of a replay, the same players remain and the player who had first-move privilege in the drawn round retains it. + +With four players, the game is played in teams of two. Teammates share wins and losses. + +Play proceeds as in the three-player game: each player plays two rounds in a row — one against each opponent — then gives way to their partner. Likewise, only the winner of the first round plays just once, at the start and end of the game. + +Players not currently in a round may advise those at the table (opponents in three-player, teammates in four-player) according to their interest; but they are forbidden to touch any game component. + +### PAYMENTS + +Each round is paid to the winner in as many tokens as holes scored, minus those of the loser. The loser also pays a **consolation** of two additional tokens to the winner, and to the other player in the three-player game. + +If the round is won in small bredouille, each hole won by the winner is paid double (2 tokens) and the consolation is also doubled (4 tokens). + +If the round is won in big bredouille, each hole is paid quadruple (4 tokens) and the consolation is quadrupled (8 tokens). + +Each hole won by the loser is deducted from the total and is always worth only one token. + +In case of a replay, the consolation price doubles the previous drawn round's price, doubling again at each successive replay. + +In the three-player game, the loser must additionally always pay the consolation to the non-playing player, whatever the consolation price. + +Moreover, after each defeat, the loser sets aside one token (sometimes two) to track the number of losses and allow later settlement of bets. + +All these tokens form a **queue** that is paid at the end of the game to the player who won the most tokens in rounds. In case of a tie, the queue is split equally among the winning players. + +The queue is not mandatory when scoring is kept in writing, but may be counted by convention. + +Each player then settles their outstanding bets equitably with each opponent. + +A **bet** (*pari*) is any round exceeding each player's contingent. The contingent is the average number of rounds played between two opponents. + +Thus, if two players play eight rounds, each player's contingent is four, and any round won or lost beyond four is a bet won or lost. This gain or loss is doubled since a bet won by one player is also a bet lost by the other. + +The first double bet is called the **postillon** and is paid 28 tokens (including 20 from the queue); each subsequent bet costs 8 tokens. This payment is made between each pair of players. With three players, it is possible to win or lose two postillons among other bets, one per opponent. + +Finally, the definitive settlement converts each player's winnings into chips (or another equivalent whose value was established beforehand — for example, one chip = 5 tokens). + +## ARTICLE XX: END OF GAME + +### THE ORDINARY GAME + +The ordinary game — also called the "tour" of trictrac — ends when a player wins their twelfth and final hole. This hole may be won through the player's own dice roll or the opponent's (helpless man, schools); the player need not leave to end the game. + +By prior convention, the game may be won simple or double. It is won double — in big bredouille — when a player scores all twelve holes consecutively. The second player to mark may also achieve this by taking the flag and keeping it until they score twelve holes without the first player scoring again and taking back the flag. If neither player scores twelve holes consecutively, the game is won simple. + +Another convention allows the game to be won quadruple if the winner was the only player to score. The second player to mark may win triple by achieving big bredouille as described above. The game is won double if both players' bredouilles are cancelled and the loser failed to score at least six holes; otherwise it is won simple. + +Settlement is then made according to the stakes established before the game. + +The game ends when the loser has paid their debt to the winner. + +### THE SCORED GAME + +As stated in Article II, the scored game consists of an agreed number of rounds. When those rounds have been played — including any replays — settlement takes place by performing the count and payments as described in Article XIX. + +The game ends when all debts have been settled. + +### APPENDIX: SCORING TABLE + +This table summarises the point value of all scoring events: jans and figures of the game. + +"J" = the player (who rolled the dice); "A" = the opponent (*adversaire*): they indicate who benefits. Numbers indicate points scored. + +| SCORING EVENT | Beneficiary | Per occurrence | Normal roll | Double | +|---|---|---|---|---| +| Six tables jan (three-roll jan) | J | — | 4 | — | +| Two tables jan | J | — | 4 | 6 | +| Contre two tables | A | — | 4 | 6 | +| Mezeas jan | J | — | 4 | 6 | +| Contre mezeas | A | — | 4 | 6 | +| Small jan filled | J | Per way | 4 | 6 | +| Small jan conserved | J | — | 4 | 6 | +| Big jan filled | J | Per way | 4 | 6 | +| Big jan conserved | J | — | 4 | 6 | +| Return jan filled | J | Per way | 4 | 6 | +| Return jan conserved | J | — | 4 | 6 | +| True hit in small jan table | J | Per way | 4 | 6 | +| False hit in small jan table | A | Per way | 4 | 6 | +| True hit in big jan table | J | Per way | 2 | 4 | +| False hit in big jan table | A | Per way | 2 | 4 | +| Corner hit | J | — | 4 | 6 | +| Exit (last checker) | J | — | 4 | 6 | +| Helpless man (unplayed number) | A | Per number | 2 | 2 | +| Misery pile achieved | J | — | 4 | 6 | +| Misery pile conserved | J | — | 4 | 6 | + +School penalties are worth to the opponent exactly the number of points that were over- or under-marked on that move. diff --git a/doc/refs/lois_et_regles_du_trictrac.md b/doc/refs/lois_et_regles_du_trictrac.md new file mode 100644 index 0000000..4bda033 --- /dev/null +++ b/doc/refs/lois_et_regles_du_trictrac.md @@ -0,0 +1,394 @@ +# LOIS ET RÈGLES DU TRICTRAC + +ÉDITION 2013 COMPLÉMENT AU DICTIONNAIRE RAISONNÉ DU JEU DE TRICTRAC www.trictrac.org par Michel MALFILÂTRE (trictrac.org) + +Il y a deux sortes de partie au grand trictrac : la partie ordinaire et la partie à écrire. +A l'une comme à l'autre, les lois et les règles principales du jeu sont les mêmes ; mais le but, la marque et donc les paiements sont différents. + +## ARTICLE I : LA PARTIE ORDINAIRE + +Elle se dispute entre deux joueurs, le but est de marquer le premier 12 jeux ou trous. Un trou vaut 12 points. + +## ARTICLE II : LA PARTIE À ÉCRIRE + +Elle peut se disputer à 2, 3 ou 4 joueurs en équipe ou « à la chouette ». Le but est de gagner un maximum de jetons, en jouant un certain nombre de marqués ou manches, qui est déterminé d'un commun accord entre les joueurs. +Un marqué oppose toujours deux joueurs. A trois ou à quatre, les joueurs alternent à chaque marqué suivant un ordre défini. +Pour gagner un marqué, il faut prendre un minimum de 6 trous et qu’un joueur s'en aille, c'est-à-dire s'arrête (voir article XV). Le nombre maximum de trous pouvant être pris n’est généralement pas limité, mais les joueurs peuvent en décider différemment. +En cas d'égalité de trous, à partir des 6 requis, lorsqu'un des joueurs s'en va, le marqué est nul et il y a refait, c'est-à-dire que le marqué doit être rejoué aussitôt. + +## ARTICLE III : LE MATÉRIEL + +Pour jouer, on utilise un tablier appelé trictrac formé de deux tables : la table du PETIT JAN et la table du GRAND JAN. Dans la première table se trouve le petit jan de chaque joueur et dans la seconde le grand jan de chaque joueur. Le petit jan d’un joueur constitue aussi le jan de retour de l’autre joueur. Chaque jan est composé de 6 flèches, ou lames de couleur alternes. +Le tablier comprend au total 24 cases triangulaires et 30 trous pratiqués dans les rebords et les bandes. +Un trou est pratiqué à la base de chaque flèche. Ces trous sont destinés à recevoir le fichet de chaque joueur afin de marquer les jeux (ou trous) gagnés. Les trois trous situés sur chaque bande latérale servent à placer les fichets au début du jeu ainsi que le pavillon. +Outre ces trois fichets dont le pavillon, on se sert de 30 dames, 15 blanches et 15 noires (ou de deux autres couleurs différentes), de trois jetons, de deux cornets et de deux dés cubiques aux faces numérotées de 1 à 6. + +Par ailleurs, la partie à écrire se joue avec des jetons utilisés pour les paiements, ou bien avec un papier et un crayon permettant d'établir un compte de jetons. + +## ARTICLE IV : POSITION DE DÉPART + +Au début de la partie, on empile toutes les dames en deux talons distincts, l'un formé des dames blanches et l'autre des dames noires. +Chaque talon est constitué vis-à-vis de l'autre sur une case de coin située contre une des deux bandes latérales extérieures appelée alors bande de départ et qui deviendra éventuellement par la suite la bande de sortie. +Chaque joueur devra utiliser les dames du talon le plus proche de lui. Les coins situés contre l’autre bande latérale extérieure sont les coins de repos. La douzième case de chaque joueur, en comptant le talon pour la première, constitue donc son coin de repos ou simplement appelé : coin. +On place les fichets dans les 3 trous de la bande de départ, le pavillon occupant le trou central. On dispose les trois jetons contre cette bande entre les deux talons. + +## ARTICLE V : LA PRIMAUTÉ DU DÉ + +Pour déterminer celui qui va jouer en premier au début d'une partie, chaque joueur jette un dé avec un cornet et celui qui a amené le plus fort nombre prend généralement les dames blanches et commence en jouant les deux nombres ainsi obtenus. +Une autre méthode peut être employée : un joueur lance les deux dés avec un cornet et le joueur se trouvant placé le plus près du plus fort dé, jouera en premier les deux nombres ainsi obtenus. +Dans les deux cas, si les dés amenés sont semblables, il faut jeter à nouveau les dés. +On ne peut donc pas commencer une partie par un doublet (double). +A chaque relevé, la primauté appartient par privilège à celui qui a sorti en premier toutes ses dames ou qui s'en est allé (voir articles VIII et XV). + +A la partie à écrire, à deux joueurs, la primauté alterne à chaque marqué ; à trois ou quatre joueurs, elle appartient à celui qui reste pour affronter un nouvel adversaire. +Lorsqu'il y a refait, le joueur qui avait la primauté au marqué nul précédent, la conserve pour ce refait et pour les éventuels suivants, en cas de refaits successifs. + +## ARTICLE VI : JETER ET JOUER LES DÉS + +Les deux dés doivent être jetés ensemble avec un cornet. Ils sont bons lorsqu’ils se posent à plat dans le trictrac, même sur une dame ou un jeton. Si un dé est cassé, posé sur une bande ou hors du trictrac, il est mauvais et les deux dés doivent être relancés. +On peut jouer les deux nombres obtenus par les dés avec deux dames, chacune jouant un nombre, ou avec une seule dame jouant « tout d'une » les deux nombres successivement (pour 6 et as : le 6 permet d'avancer une dame de six cases et l’as une autre dame d’une case ; ou bien une seule et même dame de sept cases laquelle dame exécute alors deux sauts successifs en se reposant obligatoirement sur la première ou sur la sixième case afin d’atteindre la septième case d'arrivée). + +Il est obligatoire de jouer les deux nombres si cela est possible. Si on ne peut en jouer qu'un seul et qu'on ait le choix, on doit jouer le plus fort. + +Tout nombre non joué est pénalisé : c'est un JAN-QUI-NE-PEUT qui vaut en faveur de l'adversaire 2 points d'impuissance par nombre. + +Les dés ne doivent pas être relevés avant que le coup ne soit joué entièrement et tous les points marqués (écoles comprises). + +## ARTICLE VII : LE MOUVEMENT DES DAMES + +On joue ses dames toujours dans le même sens, qui est contraire à celui de son adversaire, et sans jamais rétrograder. +Dans la marche du trictrac, les dames peuvent parcourir le tablier de leur talon jusqu'à leur coin de repos (douzième case), puis passer au retour jusqu'au talon adverse. +On ne peut placer une dame, ou la faire se reposer pour jouer tout d'une, que sur une case vide ou déjà occupée par une ou plusieurs de ses propres dames. Exception est faite à cette règle concernant les coins de repos (voir article IX). +Il n'est pas possible de jouer sur une case qu'occupe l'adversaire avec une ou plusieurs de ses dames. + +## ARTICLE VIII : LA SORTIE DES DAMES + +Lorsque toutes les dames d'un joueur se trouvent rassemblées dans son dernier jan ou jan de retour, elles sont sorties hors du trictrac en usant du privilège de la bande de sortie qui attribue à cette bande la valeur d'une case. +Une dame peut être sortie par un nombre sortant qui la fait aboutir directement à cette bande et par un nombre excédant qui fait aboutir la dame la plus éloignée de la bande de sortie au delà de celle-ci. Les autres nombres ou nombres défaillants doivent être joués à l'intérieur du jan. + +Il est possible de sortir une dame en la jouant tout d'une. Il est permis de ne pas sortir une dame par un nombre sortant mais d'en jouer une autre à l'intérieur du jan comme un nombre défaillant si cela est possible ; mais un nombre excédant doit obligatoirement faire sortir une dame. + +Lors de la sortie, il faut jouer la totalité des nombres non sortants à l'intérieur du jan lorsque cela est possible. Il n'est donc pas permis de jouer l'un des nombres de telle sorte que le second ne puisse être joué autrement que comme nombre excédant. De même si un nombre ne peut être joué dans le jan à cause de la présence d'une ou plusieurs dames adverses, il n'est pas permis de jouer ce nombre comme excédant par une dame située plus près de la bande de sortie. + +Quand un joueur a fait sortir toutes ses dames, il gagne, pour la dernière sortante, 4 points par un coup simple ou 6 points par un doublet. +Ensuite les dames des deux camps sont relevées et replacées à leur talon respectif ; le jeu se poursuit ainsi sans que la marque des points ne soit autrement modifiée. Par privilège, le joueur qui avait sorti toutes ses dames en premier jette de nouveau les dés et joue (primauté). + +La sortie des dames peut se produire plusieurs fois dans une partie. + +## ARTICLE IX : LE COIN DE REPOS + +On ne peut prendre son coin de repos que d'emblée, c'est-à-dire en y portant deux dames simultanément. De même, on ne peut le quitter que d'emblée. On doit donc l'occuper avec au moins deux dames. Il est interdit de placer ou de laisser une seule dame sur son coin de repos. + +Il est interdit dans quelque circonstance que ce soit de placer une ou plusieurs dames sur le coin de repos de l'adversaire. +Un coin vide peut cependant servir de passage à une dame quelconque pour s'y reposer afin de jouer tout d'une. + +On peut prendre son coin naturellement, par effet, ou bien par puissance si celui de l'adversaire est vide et qu'on pourrait le prendre d'emblée. Ainsi, par privilège, on prend son +propre coin à la place comme si on rétrogradait d'une case. + +Si on a la possibilité de prendre son coin à la fois par effet et par puissance, on doit le prendre par effet. + +Après avoir quitté son coin, on peut le reprendre dans les mêmes conditions. + +## ARTICLE X : LA BATTERIE DES DAMES + +On fait ce JAN DE RÉCOMPENSE lorsqu'une dame adverse est découverte, seule en demi-case et qu'on amène des nombres avec lesquels on pourrait couvrir cette dame avec une ou plusieurs des siennes. +La batterie est toujours fictive, à l'état de puissance ; elle ne s'opère jamais en réalité. Aucune dame n'est déplacée. + +On peut battre d'une, de deux ou de trois façons : + +- On bat d'une façon lorsqu'on ne peut couvrir cette dame que par un des nombres directs obtenus par les dés, ou par les deux nombres réunis. +- On bat de deux façons lorsqu'on peut couvrir la dame par l'un et l'autre nombres directs, ou par un nombre direct et les deux nombres réunis. +- Enfin, on bat de trois façons lorsque pouvant couvrir la dame par l'un et l'autre nombres directs, on le peut aussi par les deux nombres réunis. + +De par sa nature, le doublet ne permet de battre une dame que d’une ou de deux façons seulement : + +- On bat d’une façon par un nombre direct ou par les deux nombres réunis. +- On bat de deux façons par un nombre direct et par les deux nombres réunis. + +On ne bat une dame que d’une seule façon par un doublet même lorsqu’on dispose sur une case de deux dames pouvant couvrir cette dame adverse. + +Plusieurs dames peuvent être battues lors un même coup. +Pour chaque dame battue et pour chaque façon de la battre, ce jan de récompense vaut 2 points par un coup simple ou 4 points par un doublet lorsque cette dame se trouve placée dans un des grands jans ; si la dame battue se trouve dans un des petits jans ou un des jans de retour, chaque façon vaut 4 points par un coup simple ou 6 points par un doublet. + +Les jans de récompense doivent être marqués par le joueur qui les réalise (sous peine d'être « envoyé à l'école », voir article XVI). + +Pour battre une dame adverse par les deux nombres réunis, on doit bénéficier d'un repos pour battre. C'est une case où doit aboutir l'un ou l'autre nombre afin de pouvoir porter, fictivement, le second sur la dame à battre. Cette case doit être vide, ou bien déjà tenue par son propre camp, ou encore être occupée en demi-case par une dame adverse, laquelle est alors également battue. + +On fait un JAN-QUI-NE-PEUT lorsque pour battre une dame adverse par les deux nombres réunis on ne trouve pas de passage libre et qu’on est alors obligé de se reposer sur une case pleine tenue par l'adversaire. La batterie s'effectue alors « à faux » et c'est l'adversaire qui gagne pour ce jan-qui-ne-peut autant de points qu'on en aurait gagné si on avait battu « à vrai ». + +Une dame battue à vrai ne peut l'être à faux dans un même coup. Mais plusieurs dames peuvent être battues en même temps : alors certaines peuvent l'être à vrai et d'autres à faux. + +Les points obtenus pour les batteries à vrai doivent se marquer avant ceux donnés pour les batteries à faux à l’adversaire qui devra les marquer en temps utile sous peine d’être envoyé à l’école (voir article XVI). + +## ARTICLE XI : LA BATTERIE DU COIN + +On fait ce jan de récompense lorsqu'on a pris son coin de repos, que celui de l'adversaire est vide et qu'on amène des nombres avec lesquels on pourrait prendre d'emblée ce dernier sans dédoubler son propre coin, c'est-à-dire sans se servir des deux dames qui le tiennent. + +Comme la faculté de prendre le coin adverse n'existe pas, on le bat, ce qui vaut 4 points par un coup simple et 6 points par un doublet. Cette batterie ne peut jamais s’effectuer à faux puisqu’elle se réalise avec les deux nombres directs et jamais par les deux nombres réunis. + +## ARTICLE XII : JANS DE DÉPART + +Il y en a trois : le JAN DE DEUX TABLES, le JAN DE MÉZÉAS et le JAN DE SIX TABLES. Ils ne peuvent être réalisés qu'au début d'une partie, d'un marqué ou d'un de leurs +relevés éventuels. + +### JAN DE DEUX TABLES + +Lorsqu'au commencement d'une partie, d'un marqué ou d'un relevé, n'ayant encore que deux dames abattues, on amène des nombres avec lesquels on pourrait placer une de ces dames sur son propre coin de repos, vide, et l'autre sur celui de l'adversaire, alors on fait un jan de deux tables si ce coin est également vide ; mais on fait un contre-jan de deux tables si l'adversaire a déjà pris son coin. + +Dans le premier cas, cette batterie des deux coins vaut pour soi 4 points par un coup simple et 6 points par un doublet ; dans le deuxième cas, cette batterie à faux vaut le même nombre de points pour l'adversaire. + +### JAN DE MÉZÉAS + +Lorsqu'au commencement d'une partie, d'un marqué ou d'un relevé, ayant pris son coin avec deux dames seulement abattues, on amène le coup suivant un ou deux as, on fait alors un jan de mézéas si le coin adverse est vide ; mais on fait un contre-jan de mézéas si l'adversaire a déjà pris son coin. + +Dans le premier cas, cette batterie du coin vaut pour soi 4 points par un as et 6 points par le doublet ; dans le deuxième cas, cette batterie à faux vaut le même nombre de points pour l'adversaire. + +### JAN DE SIX TABLES ou JAN DE TROIS COUPS + +Lorsqu'au commencement d'une partie, d'un marqué ou d'un relevé, ayant garni d'une dame quatre de ses six premières flèches (cases 2 à 7) lors des deux premiers coups, on amène au troisième des nombres avec lesquels on pourrait garnir les deux autres flèches, alors on fait un jan de six tables ou jan de trois coups. Ce jan vaut 4 points dans tous les cas puisqu'il ne peut être réalisé par un doublet. + +On n'est point obligé de garnir effectivement ces deux flèches : on a la faculté de jouer ce coup de la manière qu'on préfère. + +## ARTICLE XIII : PETIT JAN, GRAND JAN & JAN DE RETOUR + +### LE PLEIN + +Un jan est plein lorsqu'un joueur occupe chacune des six cases de ce jan avec au moins deux de ses dames. + +Chaque joueur peut faire le plein de son petit jan, de son grand jan et de son jan de retour. + +Le plein d'un jan peut être rompu puis refait. Il est possible de faire successivement au cours d'une partie le plein de plusieurs jans différents ou du même. + +### REMPLIR + +On remplit un jan lorsqu'on amène des nombres qui permettent d'achever le plein en y apportant la dernière dame. + +On peut remplir d'une, de deux ou de trois façons : + +- On remplit d'une façon lorsqu'on peut couvrir d’une dame la dernière demi-case par un nombre direct ou par les deux nombres réunis en jouant tout d'une. +- On remplit de deux façons lorsqu'on peut couvrir cette dernière demi-case par l'un et l'autre nombres directs ou par un nombre direct et les deux réunis. +- Enfin, on remplit de trois façons lorsque, pouvant la couvrir par l'un et l'autre nombres directs, on le peut aussi par les deux nombres réunis. + +Chaque façon de remplir vaut 4 points par un coup simple et 6 points par un doublet. + +Pour pouvoir remplir un jan de plusieurs façons, il faut nécessairement qu'il n'y manque qu'une seule dame puisque seule la dernière dame apportée remplit effectivement ; on ne remplit donc que d'une seule façon en faisant la dernière case d'emblée ou en couvrant dans le même coup les deux dernières demi-cases. + +Le doublet, par sa nature, ne permet tout au plus que deux façons de remplir. + +On ne remplit pas effectivement un jan lorsque, pouvant y faire le plein par un nombre, on doit le rompre pour jouer l'autre. Lorsque ainsi on « remplit en passant », on ne doit rien marquer. On n’est donc pas tenu d’effectuer ce remplissage. + +On ne peut remplir son jan de retour en utilisant ou en comptant comme façon de remplir l'une des deux dames qui tiennent son coin de repos car ce serait le dédoubler, ce qui est interdit. + +Après avoir marqué les points pour le remplissage du jan, il est obligatoire de remplir effectivement avec une ou deux dames, sous peine de fausse case et d’école (voir article XVII). + +Si on peut remplir de plusieurs façons, on remplit effectivement avec la dame de son choix et on est libre de jouer l’autre à sa guise. + +### CONSERVER + +On conserve le plein d'un jan lorsqu'on peut jouer les deux nombres amenés sans le rompre, c'est-à-dire sans se servir d'aucune des douze dames qui composent ce plein. + +La conservation d'un plein vaut 4 points par un coup simple et 6 points par un doublet. Il ne peut y avoir plus d’une seule façon de conserver. + +On peut user du privilège de conserver par impuissance lorsque, le plein réalisé, la disposition du jeu ne permet pas de jouer l'un ou les deux nombres. Seul le nombre 6 permet cette conservation puisque les nombres inférieurs peuvent tous être joués à l'intérieur du jan, quitte à rompre le plein. + +Par privilège, on peut conserver le plein de son jan de retour grâce à la sortie d’une, de deux ou de trois de ses dames. + +Comme pour le remplissage, il est obligatoire de conserver effectivement le plein d'un jan lorsque il est possible de jouer sans le rompre, sous peine de fausse case et d’école (voir article XVII). + +## ARTICLE XIV : JANS INTERDITS + +Il est interdit de placer une de ses dames dans le petit jan ou le grand jan de l'adversaire tant que celui-ci a la possibilité matérielle de remplir ce jan avec les dames dont il dispose. +Cette interdiction cesse donc normalement dès que l'adversaire a passé suffisamment de dames au delà des cases qui lui restent à faire pour remplir ce jan, de manière que ces dames ne puissent plus servir à faire ce plein qui est ainsi devenu impossible à réaliser faute de dames. +Ainsi l'adversaire ne pouvant plus réaliser le plein de ce jan, on a le droit d'y jouer en y plaçant une ou plusieurs de ses propres des dames. + +Par contre, en jouant tout d'une, il est toujours possible d'utiliser les cases vides du grand jan adverse (y compris le coin), même s'il peut encore être rempli, afin de s'y reposer pour passer une dame dans le jan de retour, dès lors que ce dernier n'est plus interdit. + +## ARTICLE XV : LA MARQUE + +On doit toujours marquer les jeux et les points qu'on gagne avant de toucher ses dames pour jouer ou avant de jeter les dés pour le coup suivant si ces points proviennent du coup de l'adversaire (jan-qui-ne-peut, contre-jans, écoles). + +La marque des points s'effectue au moyen des jetons. Pour 2 points, on place le jeton de son côté, à la pointe de sa deuxième flèche ou entre sa deuxième et sa troisième flèche ; pour 4 points, à la pointe de sa quatrième flèche ou entre sa quatrième et sa cinquième flèche ; pour 6 points, à la pointe de sa sixième flèche ou contre la bande transversale ; pour 8 points, de l'autre côté de cette bande, dans son grand jan ; et pour 10 points, contre la bande latérale de son grand jan ou à la pointe de la flèche de son coin de repos. 12 ou 0 points se marquent contre la bande de départ, entre les deux talons, comme au début de la partie. + +12 points font un jeu ou trou. Si les 12 points du jeu ont été marqués d'affilée à partir de zéro au talon, c'est-à-dire sans que l'adversaire n'ait marqué aucun point pendant cette série, le jeu est gagné bredouille et vaut 2 trous. Cet avantage du jeu double est valable aussi bien pour le premier joueur à marquer que pour le second. Le premier marque avec un seul jeton et peut gagner le jeu bredouille tant que son adversaire ne marque rien. Mais alors, si ce dernier marque, il le fait avec un double jeton nommé « bredouille » et continue de marquer ainsi tant que le premier joueur ne marque pas de nouveaux points. S'il marque ainsi au moins 12 points, il gagne le jeu bredouille en second. Mais auparavant, si le premier joueur vient à marquer à nouveau, il débredouille son adversaire en lui ôtant un des deux jetons et alors aucun des joueurs ne peut plus gagner le jeu bredouille. Par conséquent, lorsque les deux joueurs ont chacun une marque avec un simple jeton, le jeu sera nécessairement gagné simple par l'un ou l'autre joueur. + +La marque des jeux s'effectue au moyen des fichets. +Chaque joueur marque les jeux qu'il a gagnés en faisant progresser son fichet dans la série de trous pratiqués dans les bandes à la base des douze flèches de son petit jan et de son grand jan. Le premier trou se trouve à la base de son talon et le douzième et dernier à la base de son coin de repos. + +Les trous acquis doivent se marquer avant de toucher aux jetons. Le cas échéant, on démarque ensuite le jeton (bredouillé ou non) de l'adversaire en le remettant à zéro au talon. Puis, on démarque également son jeton (bredouillé ou non) si on a obtenu juste 12 points ; ou bien on marque l'excédent, appelé points de reste, avec un jeton à la manière normale. +Si, lors du même coup on donne des points à l'adversaire, celui-ci devra ensuite les marquer en partant de zéro avec un ou deux jetons selon qu'on a marqué ou non des points de reste. +On peut gagner plusieurs jeux, simples et doubles, dans un même coup. + +A la partie à écrire, le marqué peut être gagné simple, double ou quadruple selon que les trous qui le composent ont été ou non pris d'affilée (les autres marqués multiples sont rares et ne peuvent se jouer que par convention). +Si les trous n'ont pas été pris d'affilée, le marqué est simple. Si au moins 6 trous ont été pris d'affilée, le marqué est gagné en petite bredouille et compte double. Si au moins 12 trous ont été pris d'affilée, le marqué est gagné en grande bredouille et compte quadruple. +Comme pour le jeu bredouille, cet avantage est valable pour le premier ainsi que pour le second joueur à marquer des trous. Le second joueur prend alors le pavillon qu'il met à l'emplacement initial de son fichet dans la bande de départ. Si le premier joueur gagne de +nouveaux trous, il ôte le pavillon à son adversaire et le remet dans le trou central. Alors le marqué sera nécessairement gagné simple par l'un ou l'autre joueur. + +## ARTICLE XVI : LA TENUE + +Lorsqu'on gagne un ou plusieurs jeux grâce aux points obtenus par son propre coup de dés, on a le choix entre tenir (rester) ou user du privilège de s'en aller. Mais si les points qui donnent le ou les trous proviennent du coup de l'adversaire (jan-qui-ne-peut, écoles), on doit obligatoirement tenir. + +Quand on tient, après avoir marqué son ou ses trous, on démarque le cas échéant son adversaire, on marque éventuellement ses points de reste et on continue de jouer normalement. L'adversaire marque ensuite les points que pourrait lui rapporter ce coup (voir article XV). + +Quand on décide de s'en aller, après avoir marqué son ou ses trous, on prévient verbalement son adversaire de son intention, car celui-ci peut s'y opposer en cas de faute ou d'école. Quand ce dernier a agréé verbalement ou en commençant à rompre son jeu, on démarque alors tous les jetons, et les dames des deux camps sont toutes relevées et remises au talon. Seuls les trous gagnés restent acquis aux joueurs. Aucun point de reste ne peut être +marqué et l'adversaire ne peut pas marquer de points ou de trous pour ce coup. La partie reprend comme au début et, par privilège, le joueur qui s’en est allé a la primauté du dé pour ce relevé . Il rejette donc les dés et joue. + +A la partie à écrire, à partir du moment où un joueur a marqué au moins six trous, si l'un ou l'autre joueur s'en va, le marqué est terminé. +Le gagnant est alors celui qui a marqué le plus de trous. En cas d'égalité, le marqué est nul et il y a refait. +Ainsi, pour gagner une grande bredouille, il convient donc de toujours tenir à partir du sixième trou, acquis en petite bredouille, jusqu'à l'obtention du douzième et pouvoir s’en aller ; sinon on continue à jouer pour un treizième trou ou davantage si nécessaire ou si on le souhaite. Il faut aussi que l'adversaire ne marque pas un trou et s’en aille, ce qui terminerait ainsi le marqué simple ; mais dans le cas où celui-ci déciderait de tenir, il pourrait gagner aussi une grande bredouille en jouant sans jamais s’en aller jusqu’à l’obtention de douze trous, ou plus si on en a déjà soi-même marqués davantage ou simplement s’il le souhaite. Alors il doit pouvoir s’en aller pour terminer le marqué. + +## ARTICLE XVII : LES FAUTES ET LES ÉCOLES + +Il y a trois types de faute à ce jeu : + +1°) Les simples fautes, peu préjudiciables à l'adversaire et dont certaines peuvent être rectifiées normalement (exemples : jouer hors tour, lancer les dés hors de la table, bousculer accidentellement la disposition du jeu, ou bien oublier de marquer une école). On n'encourt aucune sanction pour ces fautes. + +2°) Les fautes de case ou fausse case. Elles peuvent être préjudiciables et se produisent lorsqu'on ne joue pas ses dames aux cases où l'on devrait en fonction des nombres obtenus ou si l'on viole une loi du jeu en jouant ses dames d'une manière interdite (lois relatives au coin de repos, aux jans interdits, au remplissage et à la conservation). Les fautes de case peuvent susciter une école lorsqu’on a marqué des points pour un jan et qu’on ne le réalise pas effectivement alors qu’on y est obligé par la règle (ex : marquer pour remplir ou pour conserver et ne pas le faire). Alors, en plus du respect que l'on doit à la règle : « dame touchée, dame abandonnée, dame jouée », sauf si on a prévenu en disant : « j'adoube », on doit se soumettre à la décision de l'adversaire quant à l'éventuelle rectification de la faute et à la manière de le faire. + +L’adversaire doit signaler la ou les fautes avant de jeter les dés pour son propre coup ; il a la liberté de rectifier cette ou ces fautes selon son intérêt, tout en respectant les règles, ou bien de laisser le jeu tel quel sans rectification. Lorsqu’on a pris son coin par puissance alors qu’on pouvait le prendre par effet, on peut être empêché par l’adversaire de le prendre lors de ce coup si la faute est reconnue et qu’il est possible de jouer autrement. Si par fausse case on a couvert une dame en demi-case, on peut aussi être empêché de la couvrir lors du même coup si la faute est reconnue. + +3°) Les fautes de marque sont toujours préjudiciables ; elles ont lieu lorsqu'on oublie de marquer des points ou des trous, lorsqu'on en marque trop, ou lorsqu'on les marque incorrectement. On peut alors être pénalisé et « envoyé à l'école » par l'adversaire. Cette faute ou école, est consommée lorsqu'on a jeté les dés ou touché ses dames pour jouer ou encore lorsqu'on a trop avancé son jeton de marque et qu'on l'a lâché. Dans certains cas, l’école est consommée dès qu’on a fait une déclaration intentionnelle (s’en aller, école, invitation à jouer). + +L'école rapporte autant de points à l'adversaire qu'on en a marqué en moins ou en trop lors d'un coup. De plus, dans ce dernier cas, l'adversaire rétablit correctement la marque en supprimant les points qu'on a indûment marqués. En marquant ces points d'école, ou juste après l'avoir fait, l'adversaire doit le signaler en disant: « Ecole ! » ou « tant de points d’école ». + +Nul n'est tenu de marquer une école, on ne fait donc pas « école d'école ». Mais si on la marque, elle doit l'être dans son intégralité sous peine de rectification si l'adversaire le désire. On peut aussi forcer le joueur fautif à rectifier correctement sa marque, sans marquer l'école. + +On fait une fausse école lorsqu'on marque, soit incorrectement une école, soit une école qui n'existe pas. C'est donc une école que l'adversaire joueur peut marquer normalement à son avantage. +Il y a augmentation d’école, lorsqu’un joueur a fait une école que son adversaire a marquée et que, pensant que ce dernier s’est trompé, il démarque cette école et les marque à son profit pour fausse école ; mais l’adversaire, persistant à croire l’école justifiée, démarque alors le joueur, rectifie la première école et ajoute encore à son profit les points pour cette deuxième école (des points marqués pour la soi-disant fausse école). L’affaire pourrait continuer selon le même scénario indéfiniment si les joueurs n’en venaient alors à une franche explication. + +A tout moment un joueur peut demander à son adversaire la raison des points qu’il marque (pour école ou autres cas) ou qu’il lui enlève. Ce dernier doit alors s’expliquer. + +On ne fait pas école de trou en marquant simple un jeu gagné bredouille. Mais on fait école de points pour les trous qu’on omet de marquer en raison des points gagnés ou pour les trous marqués en trop pour des points non gagnés. + +Les points d'école se marquent après tous les autres. + +## ARTICLE XVIII : LE DÉROULEMENT DES COUPS + +Pour que le coup soit régulier, chaque joueur doit obligatoirement agir dans cet ordre : + +Dès la fin du coup de l’adversaire : + +1. Le cas échéant, marquer les jan-qui-ne-peut ou les contre-jans de l'adversaire. +2. Le cas échéant et si on le souhaite, marquer les écoles de l'adversaire et le signaler en disant : « École ! » ; éventuellement rectifier les fausses cases et la marque. + +Ensuite : + +3. Jeter les dés pour son coup. Le cas échéant, l'adversaire marque alors les écoles qu'on a faites relativement aux 1° et 2°. Règlement des fausses écoles et augmentations d’école. +4. Le cas échéant, marquer pour les jans de départ, les jans de récompense (batteries des dames et du coin), les jans remplis ou conservés, ou les points pour la sortie. +5. Le cas échéant, décider de tenir ou de s'en aller : + +- Tenir : démarquer les points et marquer éventuellement ses propres points de reste. +- S'en aller : l'annoncer puis rompre son jeu après accord de l’adversaire. Ensuite, relever ses dames, démarquer tous les points et jeter de nouveau les dés pour jouer (sauf si la partie ou le marqué est terminé). + +6. En cas de sortie : relever ses dames, ne pas démarquer les points des joueurs et jeter de nouveau les dés pour jouer. +7. Jouer les deux nombres obtenus par les dés si on le peut. + +C'est alors à l'adversaire de jouer selon le même processus. + +8. Le cas échéant, marquer les écoles que l'adversaire a pu faire, relativement à son 1° et 2°, dès qu'il a jeté les dés, ou rompre ceux-ci pour procéder à la rectification de la marque. + +Le non-respect de cet ordre de jeu est une faute, qui peut éventuellement être pénalisée par l'adversaire. + +## ARTICLE XIX : LA PARTIE À ÉCRIRE + +### LE DÉROULEMENT DE LA PARTIE À TROIS OU QUATRE JOUEURS + +Le nombre de marqués choisi pour la partie doit être un multiple du nombre de joueurs participants, de sorte qu'un joueur puisse rencontrer chacun de ses adversaires autant de fois que ceux-ci se rencontrent entre eux. + +A trois joueurs, on tire au sort ceux qui vont jouer le premier marqué. + +Ensuite, c'est celui qui tire le plus fort nombre qui commence avec les dames blanches et joue les deux nombres obtenus. + +Pour le deuxième marqué, le gagnant est remplacé par le troisième joueur, mais la primauté du dé appartient à celui qui est resté à la table. + +Pour le marqué suivant, le troisième joueur reste à la table mais les autres alternent. + +Chacun joue ainsi deux marqués de suite avec des adversaires différents. Seul le gagnant du premier marqué ne joue qu'une seule fois au début de la partie et à la fin. + +En cas de refait, les mêmes joueurs restent pour rejouer et celui qui avait la primauté du dé au marqué nul, la conserve. + +A quatre joueurs, on joue en équipe de deux. Les équipiers partagent les gains et les pertes. + +On procède comme pour trois joueurs et chacun joue deux marqués de suite, un contre chaque adversaire, et cède ensuite la place à son partenaire. Pareillement, seul le gagnant du premier marqué ne joue qu'une seule fois, au début et à la fin de la partie. + +Les joueurs qui ne participent pas au marqué en cours peuvent conseiller ceux qui sont à la table (adversaires à trois joueurs ou équipiers à quatre) selon leur intérêt ; mais il leur est interdit de toucher aux éléments du jeu. + +### LES PAIEMENTS + +Chaque marqué est payé au vainqueur autant de jetons qu'il a acquis de trous, déduction faite de ceux du vaincu. Ce dernier paye en outre une consolation de deux jetons supplémentaires au vainqueur ainsi qu'à l'autre joueur si la partie se joue à trois. + +Si le marqué est gagné en petite bredouille, chaque trou acquis par le vainqueur est alors payé double (2 jetons) ainsi que la consolation (4 jetons). + +Si le marqué est gagné en grande bredouille, chaque trou acquis par le vainqueur est alors payé quadruple (4 jetons) ainsi que la consolation (8 jetons). + +Chaque trou acquis par le vaincu est déduit du compte et ne vaut toujours qu'un seul jeton. + +En cas de refait, le prix de la consolation est le double de celui du marqué nul précédent. Il double à chaque refait successif. + +A trois joueurs, le vaincu doit toujours payer de surcroît la consolation à celui qui n'a pas joué ce marqué, quel que soit le prix de cette consolation. + +De plus, à chaque défaite subie, le vaincu met un jeton (parfois deux) de côté pour en indiquer le nombre et permettre le règlement ultérieur des paris. + +L'ensemble de ces jetons forme une queue qui revient à la fin de la partie au joueur ayant gagné le plus de jetons lors des marqués. En cas d'égalité, cette queue de jetons doit être divisée équitablement entre les joueurs gagnants. + +Il n'est pas obligatoire de recourir à cette queue de jetons lorsque la marque est tenue par écrit, mais on peut la compter par convention. + +Ensuite, chaque joueur règle équitablement les paris qu'il a perdus avec chacun de ses adversaires. + +On appelle pari tout marqué qui excède le contingent de chaque joueur. Ce contingent correspond à la moyenne des marqués joués entre deux adversaires. + +Ainsi, si deux joueurs s'affrontent en huit marqués, le contingent de chacun est de quatre, et tout marqué gagné ou perdu par un joueur au delà de ces quatre est un pari gagné ou perdu. Ce gain ou cette perte est double puisqu’un pari gagné par un joueur est en plus un pari perdu pour son adversaire : si un joueur gagne cinq marqués, l’autre n’en peut gagner que trois. + +Le premier double pari s'appelle le postillon et se paie 28 jetons, dont 20 de queue ; chacun des paris suivants se paie 8 jetons. Ce paiement s'effectue entre chaque joueur. A trois joueurs, il est ainsi possible de gagner ou de perdre deux postillons entre autres paris, un par adversaire. + +Enfin, on procède au règlement définitif de la partie en convertissant les gains des joueurs en fiches, ou en tout autre équivalent, dont la valeur a été préalablement établie par les joueurs (une fiche peut, par exemple, valoir 5 jetons). + +## ARTICLE XX : FIN DE LA PARTIE + +### LA PARTIE ORDINAIRE + +La partie ordinaire, appelée aussi le « tour » de trictrac, est terminée quand un joueur obtient son douzième et dernier trou. Ce trou peut être obtenu grâce aux points gagnés par son propre coup de dé ou par celui de l’adversaire ; il n’est pas nécessaire de pouvoir s’en aller pour terminer le tour. + +Selon convention préalable, la partie peut être gagnée simple ou double. Elle est gagnée double, c’est-à-dire en grande bredouille, lorsqu’un joueur réussit à marquer les douze trous d’affilée. Le second joueur à marquer peut jouir aussi de cette faculté en prenant le pavillon et en le gardant jusqu’à parvenir à marquer les douze trous sans que le premier joueur ne marque à nouveau et ne lui enlève alors le pavillon. Au cas où aucun des joueurs ne réussit à marquer les douze trous d’affilée, la partie est gagnée simple. + +Une autre convention permet de gagner la partie quadruple quand le gagnant a été le seul à marquer. Alors la partie est gagnée triple par le second joueur à marquer s’il réalise la grande bredouille comme indiqué précédemment. La partie est gagnée double si, tous les joueurs étant débredouillés, le perdant n’a pas réussi à marquer au moins six trous, sinon elle est gagnée simple. + +On procède alors au règlement en fonction de l’enjeu établi avant le début de la partie. + +La partie est terminée lorsque le perdant s’est acquitté de sa dette envers le gagnant. + +### LA PARTIE À ÉCRIRE + +Comme indiqué à l’article II, la partie à écrire consiste en un certain nombre de marqués convenu à l’avance entre les joueurs. Lorsque ces marqués ont été joués, ainsi que les éventuels refaits, on procède au règlement de la partie en effectuant le compte et les paiements comme indiqué à l’article XIX. + +La partie est terminée lorsque toutes les dettes ont été réglées au(x) vainqueur(s). + +### ANNEXE : TARIF + +C’est le tableau récapitulatif de la valeur en points de toutes les rencontres : jans et figures de ce jeu. + +Lire « J » pour le joueur (celui qui a lancé les dés) et « A » pour l’adversaire : ils désignent le bénéficiaire. Les chiffres indiquent le nombre de points gagnés. + +| RENCONTRES | | occurrence | Par dé simple | Par doublet | +| ------------------------------------------------ | --- | ---------- | ------------- | ----------- | +| Jan de six tables (jan de trois coups) | J | | 4 | - | +| Jan de deux tables | J | | 4 | 6 | +| Contre-jan de deux tables | A | | 4 | 6 | +| Jan de mézéas | J | | 4 | 6 | +| Contre-jan de mézéas | A | | 4 | 6 | +| Petit jan rempli | J | Par façon | 4 | 6 | +| Petit jan conservé | J | | 4 | 6 | +| Grand jan rempli | J | Par façon | 4 | 6 | +| Grand jan conservé | J | | 4 | 6 | +| Jan de retour rempli | J | Par façon | 4 | 6 | +| Jan de retour conservé | J | | 4 | 6 | +| Dame battue à vrai dans la table des petits jans | J | Par façon | 4 | 6 | +| Dame battue à faux dans la table des petits jans | A | Par façon | 4 | 6 | +| Dame battue à vrai dans la table des grands jans | J | Par façon | 2 | 4 | +| Dame battue à faux dans la table des grands jans | A | Par façon | 2 | 4 | +| Coin battu | J | | 4 | 6 | +| Sortie (de la dernière dame) | J | | 4 | 6 | +| Impuissance (nombre non joué) | A | Par nombre | 2 | 2 | +| Pile de misère réalisée | J | | 4 | 6 | +| Pile de misère conservée | J | | 4 | 6 | + +Les écoles valent à l’adversaire le nombre de points exact qu’on aurait dû marquer en plus ou en moins par rapport à ceux qu’on a réellement marqués. diff --git a/doc/refs/vocabulary.md b/doc/refs/vocabulary.md new file mode 100644 index 0000000..4ab3bb3 --- /dev/null +++ b/doc/refs/vocabulary.md @@ -0,0 +1,68 @@ +# Trictrac Vocabulary — French / English + +This table maps the French game terminology to the English terms used in this codebase (primarily the `store` crate). Where a code identifier exists, it is shown in `monospace`. + +| French | English (code) | Notes | +|---|---|---| +| tablier | board | `Board` | +| case / flèche | field | `Field` (1–24, 0 = exit); "flèche" (arrow) and "case" both refer to a field/point | +| demi-case | half-field | A field occupied by exactly one checker | +| dame | checker | `Checker`; a playing piece | +| talon | stack | The starting pile of 15 checkers before they are deployed | +| coin de repos / coin | rest corner / corner | `corner`; field 12 (White) or 13 (Black) | +| bande de départ | starting rail | The side rail where stacks start; holds the pegs and flag | +| bande de sortie | exit rail | Same rail, used as an extra field value during exit | +| petit jan | small jan | Fields 1–6; `is_field_in_small_jan` | +| grand jan | big jan | Fields 7–12 (White's side, opponent's near zone) | +| jan de retour | return jan | Fields 13–18; same fields as opponent's small jan | +| dernier jan / jan de retour | last jan / last quarter | Fields 19–24; where checkers gather before exiting; `last quarter` | +| table des petits jans | small jan table | The board half containing both players' small jans (fields 1–12) | +| table des grands jans | big jan table | The board half containing both players' big jans (fields 13–24) | +| plein (d'un jan) | filled (jan) | All 6 fields of a jan hold ≥ 2 checkers | +| remplir | fill | Scoring event: completing the fill of a jan; `FilledQuarter` | +| conserver | conserve | Scoring event: maintaining a filled jan without breaking it; `FilledQuarter` | +| jan de récompense — battre à vrai | true hit | `TrueHitSmallJan`, `TrueHitBigJan`, `TrueHitOpponentCorner` | +| jan de récompense — battre à faux | false hit | `FalseHitSmallJan`, `FalseHitBigJan` | +| batterie du coin | corner hit | `TrueHitOpponentCorner`; hitting the opponent's empty rest corner | +| jan-qui-ne-peut / impuissance | helpless man | `HelplessMan`; a die value that cannot be played (penalty for opponent) | +| jan de deux tables | two tables jan | `TwoTables` | +| contre-jan de deux tables | contre two tables | `ContreTwoTables` | +| jan de mézéas | mezeas jan | `Mezeas` | +| contre-jan de mézéas | contre mezeas | `ContreMezeas` | +| jan de six tables / jan de trois coups | six tables jan | `SixTables`; also called "three-roll jan" | +| sortie (première) | first player to exit | `FirstPlayerToExit` | +| sortie (nombre sortant) | exit (exact exit) | Moving a checker off the board with an exact die value | +| nombre excédant | overflow number | Die value exceeding the checker's distance to the exit rail | +| nombre défaillant | failing number | A die value that cannot be played within the jan | +| tout d'une | chained move | `chained move`; one checker playing both dice successively | +| repos (case de repos) | rest (resting field) | An intermediate field where a checker pauses in a chained move | +| doublet | double | `is_double`; both dice show the same value | +| dé / dés | die / dice | `Dice` | +| cornet | dice cup | — | +| par puissance | by puissance | `is_move_by_puissance`; taking own corner using opponent's empty corner as virtual step | +| par effet | by effect | `can_take_corner_by_effect`; taking own corner by normal die values | +| d'emblée | simultaneously | Two checkers entering (or leaving) the corner at the same time | +| dédoubler | unstack corner | Using one of the two corner-holding checkers (forbidden for corner exits) | +| trou / jeu | hole | `holes`; 12 points = 1 hole; the primary scoring unit | +| fichet | peg | Physical marker tracking holes won along the board edge | +| jeton | token | Physical marker tracking points within a game (0–12) | +| pavillon | flag | The bredouille marker taken by the second player to score | +| bredouille | bredouille | `can_bredouille`; winning a hole while opponent scored nothing | +| petite bredouille | small bredouille | Winning a round (marqué) with ≥ 6 consecutive holes | +| grande bredouille | big bredouille | `can_big_bredouille`; winning a round with ≥ 12 consecutive holes | +| relevé | new setting | Resetting checkers to their stacks after a hole or exit | +| primauté | first-move privilege | The right to roll first, held by the player who exited or left first | +| s'en aller | leave / go | `Go` event; choosing to start a new setting after winning a hole | +| tenir | stay / hold | Choosing to continue after winning a hole instead of leaving | +| marqué | round | A scoring round in the "partie à écrire" | +| partie ordinaire | ordinary game | First to 12 holes wins | +| partie à écrire | scored game | Multi-round game played for tokens | +| à la chouette | chouette | Three- or four-player format | +| refait | replay | A drawn round (equal holes) that must be replayed | +| consolation | consolation | Bonus tokens paid to the winner and, in 3-player games, the non-playing player | +| postillon | postillon | The first "double bet" in final payment settlement | +| école | school | `schools`; a penalty for a marking error; opponent scores the missed points | +| fausse case | false move | Playing a checker to the wrong field | +| fausse école | false school | Incorrectly claiming or marking a school penalty | +| augmentation d'école | school escalation | Back-and-forth dispute over a school penalty | +| pile de misère | misery pile | A special scoring configuration (not yet implemented in the codebase) | From 1a24e7c960d7decd63c0fca4e6b58bdac380e7b3 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Wed, 8 Apr 2026 20:40:47 +0200 Subject: [PATCH 09/78] doc: client web design research --- doc/client_web_design_proposals.md | 307 ++++++++++++++ ...client_web_design_proposals_alternative.md | 381 ++++++++++++++++++ doc/client_web_overview.md | 289 +++++++++++++ doc/trictrac_rules.md | 212 ++++++++++ 4 files changed, 1189 insertions(+) create mode 100644 doc/client_web_design_proposals.md create mode 100644 doc/client_web_design_proposals_alternative.md create mode 100644 doc/client_web_overview.md create mode 100644 doc/trictrac_rules.md diff --git a/doc/client_web_design_proposals.md b/doc/client_web_design_proposals.md new file mode 100644 index 0000000..c0237ca --- /dev/null +++ b/doc/client_web_design_proposals.md @@ -0,0 +1,307 @@ +# client_web — UI/UX Design Proposals + +A structured critique of the current interface compared to the physical game, followed by concrete upgrade proposals. Organised from most impactful to most effort-intensive. + +--- + +## Aesthetic Direction + +**Concept: "18th-century French gaming salon"** + +The physical trictrac board is a piece of furniture — carved mahogany rails, felt or baize surface, ivory and ebony checkers, brass pegs in drilled holes, gilt scoring tokens. The online interface should feel like playing on that table under candlelight in a Parisian salon. + +- **Typography**: Pair a classical serif (e.g. [Cormorant Garamond](https://fonts.google.com/specimen/Cormorant+Garamond)) for headings and score readouts with a clean humanist sans (e.g. [Jost](https://fonts.google.com/specimen/Jost)) for UI controls and status text. +- **Palette**: Forest green felt board (`#1d3d28`), alternating ivory (`#f0e6c8`) and deep burgundy (`#7a1e2a`) triangular fields, dark mahogany rails (`#2a1508`), aged parchment panels (`#f2e8d0`), gilt gold accents (`#c8a448`). +- **Unforgettable detail**: Triangular fields (true *flèches*) rendered in CSS with a wood-grain body surrounding them. + +--- + +## 1. Board Shape: Rectangles → True Triangles + +**Current state**: Fields are 60×180px rectangles with a rounded corner. No backgammon/trictrac board looks like this. + +**Physical game**: Fields are elongated triangles (*flèches*) pointing from the rail toward the center bar, alternating two colors. + +**Proposal**: Replace `.field` `
` elements with SVG triangles, or use CSS `clip-path: polygon(50% 0%, 0% 100%, 100% 100%)` for bottom-row triangles and `clip-path: polygon(0% 0%, 100% 0%, 50% 100%)` for top-row triangles. The field background and checker stack become SVG foreignObject or positioned elements inside. This is a large structural change to `board.rs` but is the single highest-impact visual improvement. + +The board body between triangles becomes visible as the wood/felt surface — this naturally creates the physical board's "relief" without any extra decoration. + +--- + +## 2. Jan Zone Visual Identity + +**Current state**: The four quarters (small jan, big jan, return jan, last jan) are visually identical — same field color scheme, no labels or separation beyond the center bar. + +**Physical game**: Players must constantly know which quarter they are in because the rules differ radically per zone (forbidden jans, filling values, hit scoring values differ between small-jan-table and big-jan-table, corner position, exit zone). + +**Proposals**: + +### 2a. Zone labels +Add thin labels (`"petit jan"`, `"grand jan"`, `"jan de retour"`, `"dernier jan"`) beneath the board-row (or as a subtle strip above/below the quarter). These should use the serif font at very small size and low opacity — decorative, not noisy. + +### 2b. Field color shift per zone +The physical game uses alternating colors within each quarter, but different quarters can use slightly different base hues: +- Small jan (fields 1–6): warm ivory / burgundy +- Big jan / corner zone (fields 7–12): same, but field 12 gets a distinct "corner" treatment (see §4) +- Return jan (fields 13–18): very subtly cooler ivory / dark teal instead of burgundy — signals "opponent's territory" +- Last jan / exit (fields 19–24): subtly warmer, indicating checkers are "almost home" + +### 2c. Small-jan-table / big-jan-table highlight during hit scoring +When a hit is being scored, briefly tint the entire table (fields 1–12 or 13–24) to make the point value distinction (4 pts vs 2 pts) spatially obvious. This fires as a 300ms flash synchronized with the scoring notification. + +--- + +## 3. Rest Corner (Field 12 / 13) Special Appearance + +**Current state**: Field 12 looks identical to field 11. Nothing indicates its unique rules (must enter/leave with 2 checkers simultaneously, cannot be landed on by a single checker). + +**Physical game**: The corner is a corner — it is literally in the corner of the table, a distinct physical location. + +**Proposals**: +- Give field 12 (and 13 for Black) a **crown or arch shape** at the tip of the triangle, using a small SVG ornament. +- Apply a **slightly warmer gold** field color to distinguish it. +- When the player has two checkers there, show a subtle **lock icon** or a gilded ring around the checker stack to indicate "corner held." +- When the corner is available to be taken *par puissance*, add a gentle pulsing outline on field 12 to indicate the privilege is available. +- Tooltip or popover: on hover, show a brief note "Coin de repos — must enter and leave with 2 checkers." + +--- + +## 4. Checker Rendering: Static → Animated + +**Current state**: Checkers appear and disappear between `ViewState` snapshots. No movement animation. + +**Physical game**: Checkers slide across the board with a satisfying click sound. + +**Proposals**: + +### 4a. Slide animation +Diff the board array between the previous and current `ViewState`. For each checker that moved from field A to field B, apply a CSS or Web Animation API translation from `field_center(A)` to `field_center(B)` (duration ~250ms, ease-out). This requires keeping the previous `ViewState` as state in `GameScreen` and computing a diff when a new state arrives. + +### 4b. Lift effect during staging +When the player clicks an origin field and a checker becomes "selected," apply a `transform: scale(1.15) translateY(-4px)` with a subtle drop shadow increase. Visually lifts the checker off the board. + +### 4c. Checker appearance +Replace the CSS `radial-gradient` circles with SVG: +- **White**: ivory `#f5edd8` with a pearl sheen gradient, thin gilt ring border, engraved concentric circles +- **Black**: ebony `#1a0f06` with subtle grain texture, same gilt ring + +A stack of 5+ checkers can render a "perspective stack" — each checker at a slight y offset with a shadow, giving depth. + +--- + +## 5. Dice: Static → Rolling Animation + +**Current state**: Dice appear with their final value immediately. No sense of randomness or anticipation. + +**Physical game**: Dice are shaken in a cup (*cornet*) and tumbled out. The roll is a theatrical moment. + +**Proposals**: + +### 5a. Roll animation +When `SerTurnStage` transitions from `RollDice` to `Move`, animate both dice with a fast face-cycling (showing random faces for ~400ms, decelerating to final value). Pure CSS `animation` on the die-face SVG circles, cycling via `keyframes`. + +### 5b. Dice cups +Add two SVG/CSS dice cups above the dice display. During rolling, they visually "tip" (rotate 90° via CSS transform) and the dice "fall out." A subtle translate-y on the dice moves them downward into view. + +### 5c. Double visual +When both dice show the same value, add a subtle golden glow around both — visually communicating that it is a double (which affects scoring: 6 pts instead of 4, etc.). + +### 5d. Used-die visual +When one die has been consumed by a staged move, slide it slightly down and reduce opacity (current: gray-out). Animate the "used" transition with `transition: all 0.15s`. + +--- + +## 6. Scoring Notifications: Side Panel → Layered Toasts + +**Current state**: Scoring events appear as a small cream panel in the side panel column (`scoring-panel`). They are easily missed, especially opponent events. + +**Physical game**: Scoring is the central drama of every turn — points are loudly marked, bredouille doubled, holes recorded with pegs. + +**Proposals**: + +### 6a. Board-overlaid toast for holes +When a hole is won, display a large centered overlay on the board — not a modal, but a translucent toast with gilt border: `"Trou ! ×2 bredouille"`. Auto-dismiss after 1.5s or on click. This is the most important event and deserves the most visual weight. + +### 6b. Scoring event animation +When `my_scored_event` appears, animate the panel sliding in from the right with a 200ms ease-out. Jan rows stagger in (each with `animation-delay: n * 50ms`). + +### 6c. Jan hover → board highlight synchronization +The current arrow-on-hover feature is good. Extend it: when hovering a jan row, also highlight the relevant fields with a faint golden shimmer instead of (or in addition to) the arrows. This ties the abstract jan name to a concrete board location. + +### 6d. Bredouille treatment +Bredouille doubles a hole's value — a massive game event. Currently shown as a small amber badge. Proposals: +- The toast for a bredouille hole should animate in differently: bigger, gold shimmer background +- Show a small animated flag (*pavillon*) icon in the score panel when bredouille is active, matching the physical game's token + +### 6e. Hit scoring visual +When a hit is scored (*battue*), show a brief visual on the opponent's half-field checker — a faint concentric ring expanding outward (CSS `animation: ripple 0.4s ease-out`). This communicates the "fictitious" nature of the hit: something happened at that checker's position, but it didn't move. + +--- + +## 7. Score Panel: Progress Bars → Pegs and Holes + +**Current state**: Points and holes are displayed as progress bars (0–12) and numeric values. Functional but abstract. + +**Physical game**: Points are tracked with physical tokens (*jetons*) placed on the board surface at specific field tips. Holes are tracked with pegs (*fichets*) in holes drilled along the rail at each field base. + +**Proposals**: + +### 7a. Hole tracker: 12 dots/pegs +Replace the `score-bar-holes` progress bar with a row of 12 small circles ("drilled holes") in a horizontal strip. Filled holes are rendered as a gilded peg inserted (solid gold circle). Unfilled holes are empty rings. This is a `` with 12 `` elements. The filled count animates one peg at a time (sequenced `animation-delay`). + +### 7b. Point tracker: token on board +For points (0–11), show a small token image positioned at the corresponding field tip along the near rail — mirroring the physical game exactly. This is ambitious but highly authentic. A simpler approach: replace the thin progress bar with a 12-cell dot track where one glowing token is positioned. + +### 7c. Bredouille indicator +When `can_bredouille` is true for a player, show the token as a double-token (two stacked icons) or add a small flag icon next to the token. + +--- + +## 8. Status Communication: Text → Contextual Guidance + +**Current state**: A single text line (`"Select move 1"`, `"Opponent's turn"`) in the status bar. New players have no idea what to do or why they can't do something. + +**Physical game**: Human players narrate what's happening; experienced players understand the state from context. + +**Proposals**: + +### 8a. Contextual sub-prompt +Below the primary status, show a secondary hint line in smaller text: +- During `Move` stage: `"Click a highlighted field to move a checker"` +- During `HoldOrGoChoice`: `"Hold to keep points and keep playing — Go to reset and start a new setting"` +- When waiting for confirm: `"↑ Opponent scored points — click Continue when ready"` + +### 8b. Forbidden-jan visual cue +When a field is in the opponent's jan and the player cannot land there (forbidden jan rule), show those fields with a subtle `✕` pattern or darker tint rather than just being unclickable. This communicates *why* the fields aren't selectable. + +### 8c. Exit-eligible highlight +When all player checkers are in the last jan (fields 19–24), add a subtle directional glow to the exit rail (the right/left edge of the board depending on player). A small "EXIT →" arrow indicator could appear. + +### 8d. Can-take-corner indicator +When the player can take their corner (field 12 or 13 is the valid destination), add a brief pulse to that field beyond the standard `.dest` highlight — the corner rules are special enough to warrant extra visual salience. + +--- + +## 9. Bug Fix: Hold Button Is Non-Functional + +**File**: `src/components/scoring.rs` line 91 + +The "Hold" button in the `ScoringPanel` has no `on:click` handler. In the physical game, "Hold" (*tenir*) means: stay in the current setting, mark remainder points, and continue playing normally. + +`PlayerAction` does not currently include a `Hold` variant. In the current implementation, if the player simply does nothing (doesn't click Go), the game waits — but there is no message sent to the backend to confirm "staying." + +**Fix required**: Add `PlayerAction::Hold` (or reuse `Mark`) and connect the Hold button's `on:click` to send it. The backend needs to handle it by advancing past `HoldOrGoChoice` without triggering `GameEvent::Go`. + +--- + +## 10. Layout: Side Panel → Integrated Design + +**Current state**: The board and side panel sit side-by-side (`board-and-panel: flex-direction row`). The side panel (min-width 160px) contains status, dice, scoring, and buttons stacked vertically. + +**Proposals**: + +### 10a. Move dice inside the board +Place the dice display centered in the **board-bar** (the vertical divider between quarters). Currently the bar is 20px wide — widen it to ~80px and center two dice there. This puts dice physically near the board action, matching the physical game where dice land on the board surface. The bar color becomes a darker felt strip. + +### 10b. Status bar above the board +Move the primary status message to a full-width strip directly above the board, styled with the serif font at larger size. This gives it appropriate visual weight and removes it from the cramped side panel. + +### 10c. Action buttons below the board (or in score panels) +"Continue," "Go," and "Hold" buttons can live below the board in a centered button row. The side panel then becomes purely informational (scoring panels), which can slide in from the right. + +### 10d. Mobile: rotate board 90° option +The board is ~776px wide. On narrow screens, offer a portrait mode where the board is rendered rotated 90° (each player's quarters stacked vertically), with a scroll-independent panel above/below for controls. + +--- + +## 11. Login Screen: Form → Atmosphere + +**Current state**: A plain 320px-wide column with a `

Trictrac

`, a text input, and three buttons. Functional but gives no sense of what the game is. + +**Physical game**: A trictrac board is an object of beauty — players set it out, prepare the checkers, and roll for first-move privilege. + +**Proposals**: + +### 11a. Illustrated header +A high-quality SVG illustration of the board (simplified top-down view, showing the triangular fields, checker stacks at starting positions, dice) as the page hero. Possibly animated: the two stacks slowly deploying two checkers as the page loads. + +### 11b. Typography treatment +"TRICTRAC" as a large display heading in a classical-weight serif, possibly with subtle tracking and a gilt color. Below it, the French subtitle: *"Jeu de trictrac — XVIIIe siècle"* in small-caps at reduced opacity. + +### 11c. Mode selection +The three buttons (Create / Join / vs Bot) styled as wooden tiles or embossed cards rather than plain buttons. + +--- + +## 12. Game-Over Modal: Generic → Ceremonial + +**Current state**: A centered modal with "Game Over," the winner's name, and Quit/Play Again buttons. + +**Physical game**: The end of a game involves settling accounts, noting the final hole count, and potentially recording results. + +**Proposals**: +- Show a **final score parchment** — both players' hole counts displayed like a ledger entry, with the winner's name engraved in gilt text +- Animate the modal entrance with a slight downward reveal (the parchment "unrolling") +- Show the hole difference: `"8 — 3"` in large numerals with a small flourish between them +- If bredouille applied to the winning holes: `"✕ 2 bredouille"` annotation +- "Play again" styled as "Rejouer" / "Play again" with a dice icon + +--- + +## Implementation Priority + +| Priority | Proposal | Effort | Impact | +|----------|-----------|--------|--------| +| 1 | §9 Fix Hold button (bug) | Low | Correctness | +| 2 | §3 Rest corner special appearance | Low | Clarity | +| 3 | §8b–d Forbidden jan + exit + corner cues | Medium | Clarity | +| 4 | §5a–d Dice roll animation | Medium | Delight | +| 5 | §6a–b Scoring toasts + animation | Medium | Drama | +| 6 | §7a Hole tracker (12 peg dots) | Low | Authenticity | +| 7 | §2a–b Jan zone labels + color shift | Low | Orientation | +| 8 | §4a Checker slide animation | High | Polish | +| 9 | §1 Triangular fields | High | Authenticity | +| 10 | §10a–b Dice in bar + status above board | Medium | Layout | +| 11 | §6e Hit ripple animation | Medium | Comprehension | +| 12 | §11 Login redesign | Medium | First impression | +| 13 | §12 Game-over modal | Low | Finish | +| 14 | §4c SVG checkers | Medium | Aesthetics | +| 15 | §7b–c Token tracker on rail | High | Authenticity | + +--- + +## Typography and CSS Variables Proposal + +Replace the anonymous `sans-serif` body font and introduce a CSS variable system: + +```css +@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;600&family=Jost:wght@300;400;500&display=swap'); + +:root { + /* Board */ + --board-felt: #1d3d28; + --board-rail: #2a1508; + --field-ivory: #f0e6c8; + --field-burgundy: #7a1e2a; + --field-corner: #c8a030; /* rest corner accent */ + --field-exit-glow: #e8c060; + + /* Checkers */ + --checker-white: #f5edd8; + --checker-black: #1a0f06; + --checker-ring: #c8a448; /* gilt border */ + + /* UI */ + --ui-parchment: #f2e8d0; + --ui-parchment-dark: #e4d8b8; + --ui-ink: #2a1a08; + --ui-gold: #c8a448; + --ui-gold-dark: #8a6a28; + --ui-green-accent: #3a6b2a; + --ui-red-accent: #7a1e2a; + + /* Typography */ + --font-display: 'Cormorant Garamond', Georgia, serif; + --font-ui: 'Jost', system-ui, sans-serif; +} +``` diff --git a/doc/client_web_design_proposals_alternative.md b/doc/client_web_design_proposals_alternative.md new file mode 100644 index 0000000..5e2e361 --- /dev/null +++ b/doc/client_web_design_proposals_alternative.md @@ -0,0 +1,381 @@ +# client_web — Alternative Design Proposals: Neon Arcade Future + +A second aesthetic direction: bold, playful, unapologetically modern. Where the first proposal channels an 18th-century gaming salon, this one asks: *what if trictrac ran on a holographic table in a Tokyo arcade, 2089?* + +This document proposes a complete visual redesign with no obligation to mirror physical game objects. The priority is delight, readability, and memorability. + +--- + +## Aesthetic Direction: "Holographic Arcade" + +**Core concept**: The board floats in dark space as a self-illuminated slab. Fields pulse with neon light. Checkers are luminous marbles that leave light trails as they move. Scoring events trigger particle explosions. Every interaction has a micro-animation. + +**The one unforgettable thing**: When a hole is won, the entire board floods with a colour wave — a full-screen shimmer that fades in 800ms — like a pinball machine tilting into multiball. + +**Color palette**: Built on darkness, with high-saturation accents — cyan, magenta, gold. Not gradients on white (the generic AI aesthetic); instead, near-black backgrounds with glowing, luminous elements. + +**Typography**: [Space Grotesk](https://fonts.google.com/specimen/Space+Grotesk) is overused. Instead: +- Display: [Syne](https://fonts.google.com/specimen/Syne) — geometric, confident, slightly alien +- Numerics: [DM Mono](https://fonts.google.com/specimen/DM+Mono) — for scores, dice values, field numbers — crisp monospace with personality +- UI labels: [Outfit](https://fonts.google.com/specimen/Outfit) — friendly, modern, clear at small sizes + +```css +:root { + /* Base */ + --void: #09090f; /* near-black with blue tint */ + --surface: #12121f; /* board slab */ + --surface-raised: #1a1a2e; /* panels, cards */ + --surface-glass: rgba(255,255,255,0.05); /* glassmorphism */ + + /* Neon accents */ + --cyan: #00e5ff; + --cyan-dim: #0099bb; + --magenta: #e040fb; + --gold: #ffd740; + --gold-dim: #c8a820; + --green-neon: #69ff47; + --orange-neon: #ff6d3a; + + /* Player colors */ + --player-white: #e8e0ff; /* soft violet-white */ + --player-black: #1a0040; /* deep indigo-black */ + --player-white-glow: #b39ddb; + --player-black-glow: #7c4dff; + + /* Typography */ + --font-display: 'Syne', sans-serif; + --font-mono: 'DM Mono', monospace; + --font-ui: 'Outfit', sans-serif; + + /* Glow radii */ + --glow-sm: 0 0 8px; + --glow-md: 0 0 16px; + --glow-lg: 0 0 32px; +} +``` + +--- + +## 1. Board: A Floating Holographic Slab + +**Concept**: The board is a dark rectangular surface that appears to float — slight perspective tilt (CSS `perspective` + `rotateX(3deg)`), a thin neon border (1px cyan on top, 1px dimmer on bottom for depth), and a subtle inner glow that makes the board feel luminous from within. + +```css +.board { + background: var(--surface); + border: 1px solid var(--cyan-dim); + box-shadow: + 0 0 0 1px rgba(0,229,255,0.1), + 0 0 40px rgba(0,229,255,0.08), + 0 24px 60px rgba(0,0,0,0.8); + transform: perspective(1200px) rotateX(2deg); + transform-origin: center bottom; + border-radius: 4px; +} +``` + +The board background gets a very subtle **noise texture overlay** (SVG `` or a PNG grain layer at 3% opacity) — just enough to prevent it from looking like a flat rectangle, giving it material presence. + +The center bar and side bars become **glowing dividers**: 4px wide, gradient from `var(--cyan)` at top to `var(--magenta)` at bottom, with a matching glow. + +--- + +## 2. Fields: Neon Triangles with Zone Color Identity + +Triangular fields (CSS `clip-path: polygon`) are essential here — they're geometric and modern, not just historically authentic. + +Each quarter gets its **own neon color identity**, using a very dark base with a glowing triangle border: + +| Quarter | Fields | Primary accent | Secondary (alternating) | +|---------|--------|---------------|------------------------| +| Small jan | 1–6 | `#00e5ff` (cyan) | `#0077aa` (dim cyan) | +| Big jan | 7–12 | `#7c4dff` (violet) | `#4a2a99` (dim violet) | +| Return jan | 13–18 | `#e040fb` (magenta) | `#991a99` (dim magenta) | +| Last jan | 19–24 | `#ffd740` (gold) | `#aa8800` (dim gold) | + +The field itself is dark (`#14141f`). The color lives in a **glowing triangle border** — achieved with a layered `clip-path` + `::before` pseudo-element 2px larger that shows through as the border, with a CSS `filter: blur(3px)` outer glow: + +```css +.field { + background: #14141f; + clip-path: polygon(50% 0%, 0% 100%, 100% 100%); + position: relative; +} +.field::before { + content: ''; + position: absolute; + inset: -2px; + background: var(--field-accent-color); + clip-path: polygon(50% 0%, 0% 100%, 100% 100%); + filter: blur(4px); + opacity: 0.4; + z-index: -1; +} +``` + +**On hover (clickable fields)**: the glow intensifies (`opacity: 0.9`, `filter: blur(6px)`) and the field interior lightens slightly. A ripple animation radiates outward from the click point. + +**Selected field**: the entire field interior fills with a semi-transparent neon color — not just the border — and a 2px dashed animated border spins around it (`animation: spin-border 1s linear infinite`). + +--- + +## 3. Checkers: Luminous Marbles + +Forget CSS circles with radial gradients. Each checker is a **glowing orb** with: + +- A dark, slightly translucent core +- A radial highlight in the upper-left (simulating a point light source) +- A colored halo that radiates outward onto the field triangle +- A subtle inner reflection ring + +```css +.checker.white { + background: radial-gradient(circle at 35% 30%, + #ffffff, + #c8c0e0 40%, + #8878c0 70%, + #3a2a60 + ); + box-shadow: + inset 0 2px 6px rgba(255,255,255,0.8), + inset 0 -2px 4px rgba(0,0,0,0.4), + 0 0 12px rgba(179,157,219,0.6), /* violet-white glow */ + 0 0 24px rgba(124,77,255,0.3); /* outer violet halo */ +} + +.checker.black { + background: radial-gradient(circle at 35% 30%, + #7c4dff, + #4a2d99 40%, + #1a0a40 70%, + #09040f + ); + box-shadow: + inset 0 2px 6px rgba(124,77,255,0.5), + inset 0 -2px 4px rgba(0,0,0,0.8), + 0 0 12px rgba(124,77,255,0.7), + 0 0 24px rgba(124,77,255,0.3); +} +``` + +**Stack depth**: A stack of N checkers renders with each checker offset by 6px vertically and slightly scaled (0.97× per level deeper), creating genuine 3D stack depth without any 3D CSS transform. The count label floats above as a monospace number in `var(--gold)`. + +**Selection animation**: On click to select, the top checker of the stack does a quick `scale(1.2) translateY(-8px)` bounce (150ms spring easing), then settles at `scale(1.1) translateY(-4px)` while selected. + +**Movement animation**: When a move is confirmed (board state diff), selected checkers do a **light-trail arc** — a bezier path from origin field center to destination, with a fading cyan streak left behind (`box-shadow` animated along the path via `@property` interpolation or JS Web Animation API). Duration: 300ms. + +--- + +## 4. Dice: Holographic Crystals + +Replace the SVG ivory dice with **translucent crystal cubes**: + +- Each die face is a dark glass square with a thin neon border +- Pips are glowing dots — cyan for normal, gold for doubles +- The die face has a subtle `backdrop-filter: blur(4px)` on a glass background + +```css +.die-face rect { + fill: rgba(255, 255, 255, 0.04); + stroke: var(--cyan); + stroke-width: 1.5; + rx: 6; + filter: drop-shadow(0 0 6px var(--cyan)); +} +.die-face circle { + fill: var(--cyan); + filter: drop-shadow(0 0 4px var(--cyan)); +} +``` + +**Double dice**: Both pips and borders switch to `var(--gold)`, with a stronger glow (`drop-shadow(0 0 8px var(--gold))`). + +**Roll animation**: 600ms sequence — +1. Both dice **shatter outward** (`scale(0) rotate(720deg)`, opacity 0 → 1) appearing from nothing +2. During 400ms they rapidly cycle through face values (random pips swap every 60ms via CSS `animation`) +3. Final 200ms they decelerate and **snap** to the rolled values with a brief flash pulse + +**Used die**: Fades the border to `rgba(255,255,255,0.1)` and dims pips to `rgba(255,255,255,0.2)` — the die goes "offline." A thin strikethrough line appears diagonally. + +--- + +## 5. The Hole Tracker: Orbital Rings + +Instead of progress bars, score and hole progress are visualised as **concentric orbital rings** beside each player's name panel — inspired by loading spinners, but static and data-driven. + +- **Outer ring** (thick, 6px): hole progress. 12 segments, each one lights up as a hole is won. Segments are `var(--gold)` when won, near-invisible dark when empty. +- **Inner ring** (thin, 3px): point progress within the current hole. Continuously filled arc from 0° to (points/12 × 360°). Color: `var(--cyan)` for the active player, `var(--magenta)` for the opponent. + +The arc fills animate with `stroke-dashoffset` transition (0.4s ease-out) on every point gain. + +**Bredouille state**: The outer ring segments pulse — a slow `opacity: 0.6 → 1 → 0.6` sinusoidal glow — as long as bredouille is active. A small flag icon (⚑) in `var(--gold)` appears beside the ring. + +--- + +## 6. Scoring Events: Light Shows + +### Hole won — Full-board colour wave +A `position:fixed` `::after` overlay expands from the scoring player's side of the board: +- Radial gradient expanding from one edge: `rgba(255,215,64,0)` → `rgba(255,215,64,0.15)` → `rgba(255,215,64,0)` +- Duration: 800ms, ease-in-out +- Simultaneously: the scoring player's orbital rings segments animate sequentially (each segment snaps on with a 50ms delay) +- A large centered text `"+1 TROU"` in `var(--font-display)` at 3rem scales from 60% to 110% with `opacity: 0 → 1 → 0`, duration 1.2s + +### Bredouille — The cascade +On top of the hole wave, add: +- A **confetti burst** of small colored squares (pure CSS: 20 `` elements with randomised `animation-delay` and `translate`/`rotate` keyframes) in cyan, magenta, gold +- The `"+1 TROU"` text instead reads `"BREDOUILLE ×2"` in `var(--magenta)` +- The board border flashes: `border-color` cycles cyan → magenta → gold → cyan over 0.6s + +### Jan scored — Notification card +Each jan scored gets a **toast card** that slides in from the right edge: +- Dark glass background (`rgba(26,26,46,0.95)`) with a left border in the jan's quarter color +- Jan name in `var(--font-ui)` bold, points in `var(--font-mono)` large +- Progress: `"+4 pts"` in cyan, `"+6 pts (double)"` in gold +- Cards stack vertically if multiple jans fire; each staggered by 80ms +- Auto-dismiss with a rightward slide-out after 3s + +### Hit scored — Ripple on the target checker +When a hit is scored on a specific field, that field's checker emits a **sonar ripple**: +- 3 concentric rings expand from the checker's center, each `opacity: 1 → 0, scale: 1 → 2.5` +- Color: cyan for true hits, magenta for false hits (giving to opponent) +- Duration: 600ms per ring, staggered by 200ms + +--- + +## 7. Player Panels: Glassmorphism Cards + +Replace the cream `background: #f5edd8` panels with **glass cards** floating above the void: + +```css +.player-score-panel { + background: rgba(255, 255, 255, 0.04); + border: 1px solid rgba(255, 255, 255, 0.1); + border-top: 1px solid rgba(255, 255, 255, 0.2); /* top catches light */ + backdrop-filter: blur(12px) saturate(1.5); + border-radius: 12px; + box-shadow: + 0 8px 32px rgba(0, 0, 0, 0.4), + inset 0 1px 0 rgba(255, 255, 255, 0.08); +} +``` + +**Active player panel**: the border glow of the active player's card brightens: `border-color: var(--cyan)` with `box-shadow: 0 0 16px rgba(0,229,255,0.2)`. A tiny animated pulse on the left edge (`width: 3px, animation: pulse 1.5s ease-in-out infinite`) indicates it is their turn. + +**Player name**: Displayed in `var(--font-display)` at 1.1rem. A small colored dot (cyan for player 1, magenta for player 2) precedes the name — acts as the "you" indicator without needing a text suffix. + +--- + +## 8. Status Bar: Dynamic Ambient Messaging + +Replace the single plain-text status line with a **contextual bar** that changes character per game stage: + +| Stage | Style | Color | +|-------|-------|-------| +| Waiting for opponent | Slow pulsing dots animation `... ` | Dim white | +| Your turn (roll) | "YOUR MOVE" in `var(--font-display)` with a blinking cursor | Cyan | +| Opponent's turn | Subtle shimmer on text | Dim magenta | +| Move selection | "SELECT CHECKER ①" with animated underline on "SELECT" | Cyan | +| Hold or Go | "SCORE!" with a spinning star ✦ | Gold | +| Paused (continue) | The bar has a pulsing amber background strip | Amber | +| Game over | Text cycles through all player colors | Full rainbow | + +The bar itself is 3px tall and spans the full board width, showing a **neon progress shimmer** during the opponent's turn (a traveling gleam, like CSS `animation: shimmer` on a gradient). + +--- + +## 9. Jan Zone Awareness: Neon Underlay + +Rather than labels, the four quarters glow with their zone color in the background of the board — very subtle, just 4% opacity fills under the triangles: + +```css +.board-quarter-small-jan { background: rgba(0, 229, 255, 0.04); } +.board-quarter-big-jan { background: rgba(124, 77, 255, 0.04); } +.board-quarter-return-jan { background: rgba(224, 64, 251, 0.04); } +.board-quarter-last-jan { background: rgba(255, 215, 64, 0.04); } +``` + +When hovering a scoring-notification row that references a specific jan (e.g. "Big jan conserved"), the corresponding quarter's background pulses from 4% → 15% opacity for 600ms. This replaces the arrow overlay with a spatial, zone-level highlight — more legible and visually coherent. + +--- + +## 10. Rest Corner: The Crown Field + +Field 12 (White) and 13 (Black) get a distinct appearance: + +- The triangle is outlined in `var(--gold)` instead of its quarter's color +- A small **crown SVG** (⚜ or ♛) floats centered in the triangle at 30% opacity when empty, brighter when held +- When the player holds the corner (2 checkers there), the triangle interior fills with a very subtle gold shimmer animation (`background-position: 0% → 100%` on a diagonal gradient, 2s loop) +- When the corner is available to be taken *par puissance*, the crown pulses at 1Hz + +--- + +## 11. Login Screen: Warp Speed Entrance + +**Hero**: A dark void with an animated **particle field** — small white/cyan dots drifting slowly, like stars. Pure CSS with 50 `` elements (or a single `` for performance), each with randomised `animation-delay` and drift keyframe. + +**Title**: "TRICTRAC" in `var(--font-display)` at 5rem, with a **chromatic aberration effect** — three slightly offset copies in cyan, magenta, and white, blended with `mix-blend-mode: screen`. The word appears with a `clip-path: inset(100% 0 0 0) → inset(0% 0 0 0)` reveal animation (the text "rises" into view). + +**Tagline**: `"XVIIIe siècle · En ligne · ∞"` in `var(--font-mono)` at 0.85rem, appearing letter-by-letter with a 20ms interval. + +**Mode cards**: Instead of three buttons, three **holographic tiles** in a row: +- Each is a glass card with an icon, label, and a colored accent strip on the bottom +- On hover: the card lifts (`translateY(-4px)`) and the bottom strip color floods the card (low opacity fill) +- CREATE: cyan accent; JOIN: violet accent; vs BOT: orange accent + +**Room code input**: Dark glass input with a cyan border glow on focus, monospace font for the code, no placeholder text (just a blinking cursor showing it's ready). The input border animates a traveling gleam on focus. + +--- + +## 12. Game-Over Screen: Score Reveal Ceremony + +Instead of a modal over a frozen game, the game-over sequence is a **full-page takeover**: + +1. **Board fades out** (800ms fade): the board dims to 20% opacity +2. **Score card rises** from the bottom: a tall glass card with both players' hole counts displayed large in `var(--font-display)` — `"8"` vs `"3"` — in their respective colors +3. **Winner highlight**: the winning number scales up to 200% with a gold burst radiation behind it +4. **Bredouille annotation**: if applicable, `"× 2"` appears beside the number with a magenta glow, then the number updates to the effective doubled count +5. **Continue options**: two buttons slide up last — "QUIT" and "REJOUER" — with the rejouer button pulsing in cyan + +--- + +## 13. Global Micro-Interactions + +These apply throughout and give the interface a consistently tactile feel: + +- **Button press**: `scale(0.96)` on `:active`, 80ms, then spring back. No `opacity` change — scale is more physical. +- **Button focus**: neon outline ring animated in from 0 to full radius (not the browser default outline). +- **Panel hover**: glass cards shift `box-shadow` slightly for a lifted feel. +- **Page load**: all elements stagger in with a `translateY(10px) → 0 + opacity 0 → 1`, each component with a `animation-delay` offset (board: 0ms, panels: 100ms, side panel: 200ms). +- **Custom cursor** (optional): replace the default cursor with a small circle that trails slightly behind the real cursor position — creates a luxurious "lag" feeling. Pure JS: interpolate cursor position toward mouse position at 80% each frame. + +--- + +## Implementation Notes for Leptos/WASM + +### What's straightforward in pure CSS +- All color variables, glass panels, glow effects, orbital rings (SVG `stroke-dashoffset`) +- Dice roll animation (CSS keyframes) +- Toast slide-ins (CSS `@keyframes` + `animation`) +- Confetti (CSS `@keyframes` on positioned `
` elements) +- Particle field on login (CSS-only with many `` elements) + +### What needs a small JS/WASM component +- **Board perspective tilt** with mouse-tracking (subtle parallax) — `mouse_position` signal driving CSS custom property +- **Checker light-trail movement** — needs previous/next board diff, then Web Animation API or `requestAnimationFrame` +- **Chromatic aberration on title** — CSS filter or SVG filter, but the animation needs JS timing + +### What needs Rust/Leptos state +- **Board diff for animation**: store previous `[i8; 24]` alongside current in `GameScreen` as a `Memo`, compute moved checkers +- **Event timing for sequences**: hole-won wave → score reveal → dismiss must be orchestrated; a `RwSignal>` in `GameScreen` drives each phase + +### Progressive approach +The proposals above can be adopted incrementally. Suggested order: +1. CSS variables + dark theme + Syne/DM Mono fonts → immediate impact, zero logic change +2. Glass panels, neon borders, glow effects → pure CSS +3. Orbital ring score tracker → SVG component +4. Triangular fields + zone colors → `board.rs` structural change +5. Dice animation → CSS keyframes in `die.rs` +6. Toast notifications → new `toast.rs` component +7. Hole-won wave → CSS overlay + Leptos signal +8. Checker animation → board diff + Web Animation API diff --git a/doc/client_web_overview.md b/doc/client_web_overview.md new file mode 100644 index 0000000..980ea2f --- /dev/null +++ b/doc/client_web_overview.md @@ -0,0 +1,289 @@ +# client_web Crate Overview + +A Leptos-based WASM frontend for trictrac. Builds to a single-page app served by Trunk on port 9092. + +--- + +## File Structure + +``` +client_web/ +├── Cargo.toml # Dependencies and i18n locale config +├── Trunk.toml # Serve port 9092 +├── index.html # Shell: mounts WASM + links CSS +├── assets/style.css # All styles (~472 lines, no framework) +├── locales/ +│ ├── en.json # 52 English keys +│ └── fr.json # 52 French keys +└── src/ + ├── main.rs # load_locales!() macro + mount_to_body + ├── app.rs # Root App component, state, network loop (571 lines) + ├── components/ + │ ├── mod.rs + │ ├── game_screen.rs # Main in-game UI, move staging (324 lines) + │ ├── board.rs # Board rendering and click handling (372 lines) + │ ├── die.rs # SVG die face + │ ├── score_panel.rs # Points/holes bar for one player + │ ├── scoring.rs # Jan-by-jan scoring notification panel + │ ├── login_screen.rs # Room create/join + │ └── connecting_screen.rs + └── trictrac/ + ├── mod.rs + ├── types.rs # Protocol types: ViewState, JanEntry, PlayerAction, … (217 lines) + ├── backend.rs # BackEndArchitecture impl, engine bridge (332 lines) + └── bot_local.rs # Local bot: random moves, always Go (34 lines) +``` + +--- + +## Component Tree + +``` +App ← manages screen, pending queue, network task +└─ I18nContextProvider + ├─ LoginScreen ← room name input, create/join/bot buttons + ├─ ConnectingScreen ← spinner while connecting + └─ GameScreen ← in-game UI; receives GameUiState prop + ├─ PlayerScorePanel ← opponent score (above board) + ├─ Board ← 24 interactive fields; SVG arrow overlay + ├─ side panel + │ ├─ status bar ← localised turn/action prompt + │ ├─ dice bar ← two Die components + │ ├─ ScoringPanel (me) ← my jans this turn, hold/go buttons + │ ├─ ScoringPanel (opponent) ← opponent jans (shown during pause) + │ └─ action buttons ← Continue / Go / Empty Move + └─ PlayerScorePanel ← my score (below board) + [game-over overlay modal] +``` + +--- + +## Screens and Transitions + +``` +Login ──(connect)──→ Connecting ──(game start)──→ Playing + ↑ │ + └──(reconnect)─────┘ +Playing ──(disconnect / game over)──→ Login +``` + +`app.rs` drives transitions via `RwSignal`. + +--- + +## State Management + +### Root signals (live in `App`, provided via Leptos context) + +| Signal | Type | Purpose | +|--------|------|---------| +| `screen` | `RwSignal` | Which screen is shown | +| `pending` | `RwSignal>` | Buffered states awaiting "Continue" | +| `cmd_tx` | `UnboundedSender` | UI → network command channel | + +Both `pending` and `cmd_tx` are provided as context so any descendant can read/write them without prop-drilling. + +### GameScreen-local signals + +| Signal | Type | Purpose | +|--------|------|---------| +| `selected_origin` | `RwSignal>` | First clicked field during move staging | +| `staged_moves` | `RwSignal>` | Accumulated (origin, dest) pairs for this turn | +| `hovered_jan_moves` | `RwSignal>` | Moves to draw arrows for on hover | + +### Data flow + +``` +Network task (async in App) + ↓ SessionEvent::Update +push_or_show() → pending queue or screen.set() + ↓ +GameScreen re-renders (GameUiState prop) + ↓ +User clicks field → staged_moves effect → NetCommand::Action(Move) +User clicks Go/Continue → cmd_tx.send or pending.pop_front() +``` + +--- + +## Network and Session + +The multiplayer layer is provided by `backbone-lib` (local fork at `../../forks/multiplayer/`). `App` spawns an async task (via `spawn_local`) that multiplexes: +- `cmd_rx`: commands from UI components +- `session.next_event()`: updates from the server + +### StoredSession (localStorage key: `"trictrac_session"`) + +```rust +struct StoredSession { + relay_url: String, + game_id: String, + room_id: String, + token: u64, // reconnect token issued by server + is_host: bool, + view_state: Option, // host saves last known state; guest saves None +} +``` + +On page load, if a stored session exists, App goes directly to Connecting and sends `NetCommand::Reconnect`. Failed reconnects clear the session and return to Login. + +--- + +## Pause / Confirmation Flow + +Certain opponent events are paused so the local player can see what happened before their turn starts. + +Pause triggers (`infer_pause_reason()` in `app.rs`): + +| Reason | Condition | +|--------|-----------| +| `AfterOpponentRoll` | Opponent is active; dice values changed | +| `AfterOpponentGo` | Opponent chose Go (HoldOrGoChoice→Move transition) | +| `AfterOpponentMove` | Turn switched to us | + +While a state is in the pending queue, `GameScreen` shows a "Continue" button. Clicking it calls `pending.pop_front()`; if the queue empties, the live state is displayed. + +--- + +## Game Engine Integration + +**File**: `src/trictrac/backend.rs` + +`TrictracBackend` implements the `BackEndArchitecture` trait. It owns a `GameState` from `trictrac-store` and translates between the UI protocol and the engine's event model. + +### PlayerAction → GameEvent mapping + +| PlayerAction | GameEvents emitted | +|---|---| +| `Roll` | `GameEvent::Roll`, `GameEvent::RollResult(d1, d2)` | +| `Move(m1, m2)` | `GameEvent::Move` (after validation) | +| `Go` | `GameEvent::Go` | +| `Mark` | internal; drives `MarkPoints`/`MarkAdvPoints` loop automatically | + +`drive_automatic_stages()` loops through scoring stages without waiting for player input — these are not interactive in the current implementation (schools are not implemented). + +### ViewState construction + +`ViewState::from_game_state()` in `types.rs` converts the engine state to the serialisable snapshot sent to clients: +- `board: [i8; 24]` — direct copy of `Board::positions` +- `dice: [u8; 2]` — current dice values +- `stage / turn_stage` — serialisable enums (`SerStage`, `SerTurnStage`) +- `scores: [PlayerScore; 2]` — points, holes, `can_bredouille` +- `dice_jans: Vec` — scoring events for the current turn, sorted descending by points +- `active_player_index: usize` — 0 = host, 1 = guest + +### Bot + +`bot_local.rs` runs in the browser (no server call). It inspects `GameState` directly and returns a `PlayerAction`: +- **RollDice**: always Roll +- **HoldOrGoChoice**: always Go +- **Move**: picks a random legal sequence from `MoveRules::get_possible_moves_sequences()`; mirrors moves because Black's board is mirrored + +--- + +## Board Rendering (`board.rs`) + +### Layout + +The 24 fields are split into 4 quarters of 6. Each player sees the board from their own perspective: + +``` +White's view: + TOP-LEFT [13–18] | TOP-RIGHT [19–24] + ───────────────────────────────────────── + BOT-LEFT [12–7] | BOT-RIGHT [6–1] + +Black's view (mirror): + TOP-LEFT [1–6] | TOP-RIGHT [7–12] + ───────────────────────────────────────── + BOT-LEFT [24–19] | BOT-RIGHT [18–13] +``` + +Fields are 60 × 180 px, alternating gold (`#d4a843` / `#c49030`). Checkers are 40 px SVG circles (radial gradient). Up to 4 are stacked visually; a text label is shown when count > 4. + +### Highlighting + +Field CSS classes are computed reactively inside the `view!` macro closure: + +| Class | Meaning | +|-------|---------| +| `.clickable` | Valid origin during Move stage (lime green) | +| `.selected` | Currently selected origin (darker green + outline) | +| `.dest` | Valid destination for the selected origin | + +`valid_sequences` (from `MoveRules`) is computed once per render and used to derive `valid_origins_for()` and `valid_dests_for()`. The displayed checker count (`displayed_value()`) accounts for staged-but-not-yet-sent moves so the board previews the move visually. + +### SVG arrow overlay + +When the player hovers a row in the ScoringPanel, the corresponding checker moves are drawn as gold arrows over the board. `field_center()` maps field numbers to pixel coordinates; `arrow_svg()` renders the path with a drop-shadow. + +--- + +## Scoring Display (`scoring.rs`, `score_panel.rs`) + +`compute_scored_event()` in `app.rs` diffs consecutive `ViewState` snapshots to produce a `ScoredEvent`: +- `points_earned: i32` +- `holes_gained: u8` +- `jans: Vec` — only events relevant to the beneficiary + +`ScoringPanel` renders one `JanEntry` per row. Hovering a row writes that entry's moves into `hovered_jan_moves`, triggering the arrow overlay on the board. + +`PlayerScorePanel` shows a colour-filled bar (animated via CSS `transition: width 0.3s`) for points (0–12) and holes (0–12). Bredouille state is shown with a small indicator. + +--- + +## Internationalisation + +`leptos_i18n::load_locales!()` is a compile-time macro that reads `locales/en.json` and `locales/fr.json` and generates a typed `i18n` module. There are 52 keys covering UI labels, game-state prompts, jan names, and status messages. + +Usage in components: +```rust +let i18n = use_i18n(); +t!(i18n, your_turn_roll) // → reactive View +t_string!(i18n, scored_pts, pts = 4) // → String with interpolation +``` + +The language switcher (top bar and login screen) calls `i18n.set_locale(Locale::en | Locale::fr)`, which triggers a full reactive re-render. + +--- + +## Styling + +`assets/style.css` is a single hand-written stylesheet (~472 lines). No CSS framework. + +Key design tokens: +- Body background: `#c8b084` (tan) +- Board background: `#2e6b2e` (dark green) +- Fields: `#d4a843` / `#c49030` (gold alternating) +- Interactive fields: `#aad060` (lime, clickable) / `#709a20` (darker, selected) +- UI panels: `#f5edd8` (cream) + +Layout uses Flexbox and CSS Grid throughout. Score bars animate with `transition: width 0.3s`. Field clicks give immediate feedback via `transition: background 0.1s`. No media queries — the layout is designed for desktop/tablet. + +--- + +## Protocol Types (`types.rs`) + +| Type | Role | +|------|------| +| `PlayerAction` | `Roll \| Move(CheckerMove, CheckerMove) \| Go \| Mark` — UI → backend | +| `GameDelta` | `{ state: ViewState }` — broadcast to all clients on every change | +| `ViewState` | Full serialisable snapshot of engine state | +| `JanEntry` | One scoring event: jan type, points, ways, moves, is_double | +| `ScoredEvent` | Points/holes delta + jan list for one player in one turn | +| `PlayerScore` | name, points (0–11), holes (0–12), can_bredouille | +| `SerStage` | `PreGame \| InGame \| Ended` | +| `SerTurnStage` | `RollDice \| RollWaiting \| MarkPoints \| HoldOrGoChoice \| Move \| MarkAdvPoints` | + +`CheckerMove` comes directly from `trictrac-store`; fields are 1-indexed (0 = stack/exit). + +--- + +## Build + +```bash +trunk serve # dev server at http://localhost:9092 +trunk build --release # WASM release bundle +``` + +`index.html` uses Trunk's `data-trunk` attributes: `rel="rust"` compiles `src/main.rs` to WASM; `rel="css"` copies `assets/style.css`. The WASM binary and generated JS glue land in `dist/`. diff --git a/doc/trictrac_rules.md b/doc/trictrac_rules.md new file mode 100644 index 0000000..9d16e5d --- /dev/null +++ b/doc/trictrac_rules.md @@ -0,0 +1,212 @@ +# Trictrac Rules — Quick Reference + +This document summarises the rules of grand trictrac based on the 2013 Malfilâtre edition ([full text](refs/laws_and_rules_of_trictrac.md)). + +French terms follow the mapping in [vocabulary.md](refs/vocabulary.md). + +--- + +## 1. Board and Starting Position + +- 24 triangular fields (_flèches_ / _cases_), numbered 1–24 from each player's perspective. +- 4 quarters of 6 fields: **small jan** (1–6), **big jan** (7–12), **return jan** (13–18), **last jan** (19–24, exit zone). +- Field 12 (White) / 13 (Black) is the **rest corner** (_coin de repos_). +- Each player starts with all 15 checkers in a stack (_talon_) on field 1. +- Checkers always move in the same direction (White: 1→24; Black: mirror of that). + +## 2. Dice and Movement + +- Both dice are rolled together; both must be played if possible. +- If only one can be played and there is a choice, the higher number must be played. +- A single checker may play both dice successively — a **chained move** (_tout d'une_) — stopping on an intermediate resting field (_repos_) between the two dice. +- **Fields are single-color**: a checker may only land on an empty field or one already occupied by own checkers. +- Landing on a field with ≥ 1 opponent checker is **forbidden** (blocked field). +- An unplayed number is a **helpless man** (_jan-qui-ne-peut_): 2 points penalty per unplayed die, credited to the opponent. + +## 3. The Rest Corner (Field 12 / 13) + +- Must be entered **simultaneously** (_d'emblée_): exactly 2 checkers must enter together. +- Must be vacated simultaneously: exactly 2 checkers must leave together. +- Always holds ≥ 2 checkers while occupied; a single checker there is forbidden. +- Three ways to take the corner: + - **By effect** (_par effet_): normal die values land exactly on it. + - **By puissance** (_par puissance_): the opponent's corner is empty; the player could take both corners simultaneously, but by privilege takes their own instead (as if stepping back one field). + - **By chance** (_par effet_): general case when it results from the dice. +- If both by-effect and by-puissance are possible, by-effect takes priority. +- An empty corner may serve as a resting field during a chained move (not a landing). +- Placing checkers on the **opponent's** corner is always forbidden. + +## 4. Scoring: Points and Holes + +- Points are tracked with tokens (0–11); **12 points = 1 hole** (_trou_). +- A **hole won bredouille** (_bredouille_) counts as **2 holes**: the active player scored 12 consecutive points from zero without the opponent scoring anything in between. The second player to start marking takes a double token (the _pavillon_ / flag) and can also win bredouille. +- The ordinary game ends when one player reaches **12 holes**. + +## 5. Scoring Events (Jans) + +All point values: normal roll / double. + +### 5a. Opening Jans (first rolls of a setting only) + +| Jan | Condition | Points | +| --------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------ | +| **Two tables jan** | First 2 checkers deployed; roll covers both rest corners; opponent's corner is empty | 4 / 6 (to player) | +| **Contre two tables** | Same, but opponent has already taken their corner | 4 / 6 (to opponent, as false hit) | +| **Mezeas jan** | Corner just taken (2 checkers); next roll shows one or two aces; opponent's corner empty | 4 per ace / 6 for double (to player) | +| **Contre mezeas** | Same, but opponent's corner is occupied | 4 / 6 (to opponent) | +| **Six tables jan** | After 2 rolls a checker is on 4 of the first 6 fields; 3rd roll could complete all 6 | 4 (always; not possible on a double) | + +### 5b. Jan Filling and Conserving + +A jan is **full** (_plein_) when all 6 of its fields hold ≥ 2 own checkers. + +- **Filling**: the last checker is brought in to complete the jan. + - Up to 3 ways: each direct die value covering the last field, or the combined sum (chained move). + - Each way: **4 / 6** points. + - Doubles allow at most 2 ways. + - "Filling in passing" (player must break the jan to play the other die) scores nothing. +- **Conserving**: both dice can be played without disturbing any of the 12 checkers of the full jan. + - Worth **4 / 6** points (at most one way). + - Conservation by helplessness (_par impuissance_): only die value 6 triggers this (smaller values can always be played within the jan by breaking it). + - The full return jan may be conserved by exiting one or more checkers. +- After marking points for filling, the player **must** actually fill the jan with the appropriate checker(s) — failure is a false move and a school. + +### 5c. Hitting (_Jan de Récompense_) + +Hitting is **always fictitious**: a checker is "hit" when a die value could cover an opponent checker on a half-field (_demi-case_), but **no actual checker moves**. The opponent's checker stays. + +**True hit**: a die (direct or combined sum) fictitiously covers the opponent checker. + +- In the **small jan table** (fields 1–12): **4 / 6** points per way. +- In the **big jan table** (fields 13–24): **2 / 4** points per way. + +Ways to hit: + +- **1 way**: only one direct die, or only the combined sum, covers the checker. +- **2 ways**: both direct dice cover it, or one die + the combined sum. +- **3 ways**: both dice + the combined sum (requires a normal roll; doubles max at 2 ways). + +**Combined-sum hit** requires a free **resting field** between the two dice stops: the field must be empty, own, or a single opponent checker (which is then also hit). + +**False hit** (_à faux_): the combined sum could hit but no valid resting field exists (all intermediate options are full opponent fields). The opponent gains the points the player would have scored. + +- True-hit points are always marked before false-hit points. +- A checker already hit truly cannot also be hit falsely in the same move. +- Multiple checkers may be hit simultaneously (some true, some false). + +**Corner hit**: player holds their own corner; opponent's corner is empty; the dice could simultaneously take the opponent's corner. Worth **4 / 6** points. Never false. + +### 5d. Exit + +- When all 15 checkers are in the last jan (fields 19–24), the player may exit. +- The exit rail counts as one additional field value. +- **Exact exit**: die value brings the checker directly to the exit rail — allowed. +- **Overflow** (_nombre excédant_): die value would carry the farthest checker past the rail — must exit. +- **Failing number** (_nombre défaillant_): die cannot reach or overflow — must play within the jan. +- A player may choose not to use an exact exit value and play within the jan instead — but overflow must always exit. +- It is forbidden to deliberately play a die within the jan to force the second die to be played as an overflow (using a checker closer to the exit). +- When the last checker exits: **4 points** on a normal roll, **6 points** on a double. +- After exit: checkers reset; the player who exited keeps first-move privilege for the new setting. + +## 6. Forbidden Jans + +A player **may not** place a checker in the opponent's small jan or big jan as long as the opponent can still materially complete a full jan there (i.e., enough of their own checkers remain to fill it). + +Exception: during a chained move, an empty field in the opponent's big jan (including their empty corner) may serve as a resting field to pass a checker into the return jan. + +## 7. Sequence of Play + +Each turn follows this order: + +1. Mark opponent's helpless man points or contre-jans from the **previous** move. +2. Mark opponent's schools; rectify false moves if any. +3. **Roll dice.** Opponent may mark schools for steps 1–2. +4. Mark own points: opening jans, hits, fills, conserves, exit. +5. Decide to **stay** (_tenir_) or **leave** (_s'en aller_) if a hole was won on own roll. +6. If exiting: reset checkers, keep token positions, roll again. +7. Play both dice. + +Points and holes must always be marked **before** touching checkers for the next move. + +## 8. Staying or Leaving + +After winning one or more holes on **own dice roll**, the player chooses: + +- **Stay** (_tenir_): mark holes, reset opponent token to zero, mark remainder points, continue. +- **Leave** (_s'en aller_): announce it; opponent agrees or raises a fault. All checkers and tokens reset to zero; only holes remain. Player who left has first-move privilege in the new setting. Remainder points are forfeited; opponent scores nothing for that move. + +If the winning points come from the **opponent's** roll (helpless man, schools), the player **must** stay — leaving is not an option. + +--- + +## 9. Schools (Marking Penalties) — _Not Yet Implemented_ + +Schools are penalties for marking errors. They are worth exactly the number of points over- or under-marked on the faulty move. They are marked last in the turn sequence. + +Key rules: + +- A school is committed once dice are rolled or a token has been advanced too far and released. +- The opponent is never obliged to mark a school — but if they do, it must be marked in full. +- **False school**: incorrectly claiming a school — itself becomes a school for the opponent. +- **School escalation** (_augmentation d'école_): dispute over a school that escalates back and forth. +- No "school of school" exists (marking a school is never itself penalised). +- No school of holes for marking a bredouille hole as simple; a school of points applies for forgetting holes due to earned points. + +--- + +## 10. The Scored Game (_Partie à Écrire_) — _Not Yet Implemented_ + +The scored game is played for an agreed number of **rounds** (_marqués_) and supports 2, 3, or 4 players (the 3/4-player format is called _chouette_). + +### Goal of a Round + +- A player must score at least **6 holes** and then **leave** to win the round. +- If both players are tied at ≥ 6 holes when one leaves, the round is **drawn** (_refait_) and replayed immediately. +- Winner of a round = player with the most holes after a leave. + +### Bredouille in the Scored Game + +- **Small bredouille** (_petite bredouille_): ≥ 6 consecutive holes → round counts **double**. +- **Big bredouille** (_grande bredouille_): ≥ 12 consecutive holes → round counts **quadruple**. +- The second player to score holes takes the flag (_pavillon_) at their peg. If the first player scores again, they take back the flag, cancelling both bredouilles. + +### Payments + +Each round is settled in tokens: + +- Winner receives (winner's holes − loser's holes) tokens, plus **consolation** of 2 tokens. +- Small bredouille: each winner hole worth 2 tokens; consolation = 4. +- Big bredouille: each winner hole worth 4 tokens; consolation = 8. +- Loser holes always deducted at 1 token each. +- In 3-player games, the non-playing player also receives consolation from the loser. +- Replays double the consolation price each time. + +A **queue** accumulates tokens from each defeat and is paid at game end to the player with the most tokens. + +**Bets** (_paris_): rounds played beyond each player's average (the _contingent_). The first double-bet is the **postillon** (28 tokens, including 20 from the queue); each subsequent bet costs 8 tokens. + +### Multi-Player Rotation (3 or 4 Players) + +- 3 players: after each round, the winner is replaced by the third player; first-move privilege stays with the player who remained. +- 4 players: two teams of two; each player plays two rounds in a row then gives way to their partner. +- Non-active players may advise (opponents in 3-player, teammates in 4-player) but may not touch game components. + +--- + +## 11. Implementation Status Summary + +| Feature | Status | +| ----------------------------------------------- | ------------------------------ | +| Board state, movement, rest corner | Implemented | +| Helpless man | Implemented | +| True / false hits (small jan, big jan, corner) | Implemented | +| Jan filling and conserving (small, big, return) | Implemented | +| Opening jans (two tables, mezeas, six tables) | Implemented | +| Exit and exit points | Implemented | +| Bredouille (hole bredouille) | Implemented (`can_bredouille`) | +| Forbidden jans | Implemented | +| Stay / leave (_s'en aller_) | Implemented (`Go` event) | +| Big bredouille (`can_big_bredouille`) | Field exists, not used | +| Schools | Not implemented | +| Scored game / rounds | Not implemented | +| Misery pile (_pile de misère_) | Not implemented | From cdadb26f14a6a6ec7b7fb4608ccaaff15ab15278 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Thu, 9 Apr 2026 15:33:47 +0200 Subject: [PATCH 10/78] feat(client_web): update UI/UX --- client_web/assets/style.css | 897 +++++++++++++++++----- client_web/locales/en.json | 5 +- client_web/locales/fr.json | 5 +- client_web/src/components/board.rs | 229 ++++-- client_web/src/components/die.rs | 16 +- client_web/src/components/game_screen.rs | 230 +++--- client_web/src/components/login_screen.rs | 116 +-- client_web/src/components/score_panel.rs | 17 +- client_web/src/components/scoring.rs | 43 +- 9 files changed, 1127 insertions(+), 431 deletions(-) diff --git a/client_web/assets/style.css b/client_web/assets/style.css index 32677b8..bc6d5d7 100644 --- a/client_web/assets/style.css +++ b/client_web/assets/style.css @@ -1,87 +1,282 @@ +/* ── Google Fonts ───────────────────────────────────────────────────── */ +@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;1,400&family=Jost:wght@300;400;500&display=swap'); + +/* ── Design tokens ──────────────────────────────────────────────────── */ +:root { + --board-felt: #1d3d28; + --board-rail: #2a1508; + --field-ivory: #f0e6c8; + --field-burgundy: #7a1e2a; + --field-corner: #b8900a; + --checker-white: #f5edd8; + --checker-black: #1a0f06; + --checker-ring: #c8a448; + --ui-parchment: #f2e8d0; + --ui-parchment-dark: #e4d8b8; + --ui-ink: #2a1a08; + --ui-gold: #c8a448; + --ui-gold-dark: #8a6a28; + --ui-green-accent: #3a6b2a; + --ui-red-accent: #7a1e2a; + --font-display: 'Cormorant Garamond', Georgia, serif; + --font-ui: 'Jost', system-ui, sans-serif; +} + /* ── Reset & base ──────────────────────────────────────────────────── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { - font-family: sans-serif; - background: #c8b084; + font-family: var(--font-ui); + background: #8a7050; + background-image: + radial-gradient(ellipse at 20% 10%, rgba(80,48,16,0.35) 0%, transparent 60%), + radial-gradient(ellipse at 80% 90%, rgba(40,24,8,0.3) 0%, transparent 55%), + repeating-linear-gradient( + 45deg, transparent, transparent 3px, + rgba(0,0,0,0.03) 3px, rgba(0,0,0,0.03) 4px + ); display: flex; justify-content: center; padding: 1.5rem; min-height: 100vh; } -/* ── Login / Connecting screens ────────────────────────────────────── */ -.login-container { +.hidden { display: none !important; } + +/* ── Login card (§11) ───────────────────────────────────────────────── */ +.login-card { + width: 340px; + margin-top: 5vh; + border-radius: 8px; + overflow: hidden; + box-shadow: + 0 20px 60px rgba(0,0,0,0.55), + 0 0 0 1px rgba(200,164,72,0.35), + 0 0 0 5px rgba(42,21,8,0.9), + 0 0 0 6px rgba(200,164,72,0.2); + background: var(--ui-parchment); +} + +/* Decorative header — row of triangular flèches like the actual board */ +.login-card-header { + height: 52px; + background: var(--board-felt); + position: relative; + overflow: hidden; +} + +.login-board-stripe { + position: absolute; + inset: 0; + /* Alternating burgundy/ivory triangles pointing down from the top */ + background: + repeating-linear-gradient( + 90deg, + var(--field-burgundy) 0, var(--field-burgundy) 50%, + var(--field-ivory) 50%, var(--field-ivory) 100% + ); + background-size: 34px 100%; + /* Clip into downward-pointing triangles */ + clip-path: polygon( + 0% 0%, 2.94% 100%, 5.88% 0%, 8.82% 100%, 11.76% 0%, + 14.7% 100%, 17.65% 0%, 20.59% 100%, 23.53% 0%, + 26.47% 100%, 29.41% 0%, 32.35% 100%, 35.29% 0%, + 38.24% 100%, 41.18% 0%, 44.12% 100%, 47.06% 0%, + 50% 100%, 52.94% 0%, 55.88% 100%, 58.82% 0%, + 61.76% 100%, 64.71% 0%, 67.65% 100%, 70.59% 0%, + 73.53% 100%, 76.47% 0%, 79.41% 100%, 82.35% 0%, + 85.29% 100%, 88.24% 0%, 91.18% 100%, 94.12% 0%, + 97.06% 100%, 100% 0% + ); + opacity: 0.9; +} + +.login-card-body { display: flex; flex-direction: column; - gap: 0.75rem; - max-width: 320px; - margin-top: 4rem; + align-items: center; + gap: 0; + padding: 1.5rem 2rem 2rem; } -.login-container h1 { font-size: 2rem; text-align: center; margin-bottom: 0.5rem; } +.login-lang-switcher { + align-self: flex-end; + margin-bottom: 0.75rem; +} -input[type="text"] { - padding: 0.5rem 0.75rem; +/* Override lang-switcher colours for the parchment card */ +.login-card .lang-switcher button { + color: var(--ui-ink); + border-color: rgba(42,21,8,0.2); + opacity: 0.5; +} +.login-card .lang-switcher button.lang-active { + opacity: 1; + background: rgba(42,21,8,0.08); + border-color: rgba(42,21,8,0.35); +} + +.login-title { + font-family: var(--font-display); + font-size: 3.25rem; + font-weight: 600; + color: var(--ui-ink); + letter-spacing: 0.12em; + text-align: center; + line-height: 1; + margin-bottom: 0.3rem; +} + +.login-subtitle { + font-family: var(--font-display); + font-size: 0.85rem; + color: rgba(42,26,8,0.55); + text-align: center; + letter-spacing: 0.06em; + font-style: italic; + margin-bottom: 1.25rem; +} +.login-subtitle sup { + font-size: 0.65em; + vertical-align: super; +} + +.login-ornament { + color: var(--ui-gold); font-size: 1rem; - border: 1px solid #aaa; - border-radius: 4px; + opacity: 0.7; + margin-bottom: 1.25rem; + letter-spacing: 0.3em; + text-align: center; } -.error-msg { color: #c00; font-size: 0.9rem; } +.error-msg { + color: #c03030; + font-size: 0.85rem; + text-align: center; + margin-bottom: 0.5rem; +} -.connecting { font-size: 1.2rem; margin-top: 4rem; text-align: center; } +.login-input { + width: 100%; + padding: 0.55rem 0.85rem; + font-size: 0.95rem; + font-family: var(--font-ui); + border: 1px solid rgba(138,106,40,0.4); + border-radius: 5px; + background: rgba(255,252,240,0.8); + color: var(--ui-ink); + outline: none; + transition: border-color 0.15s, box-shadow 0.15s; + margin-bottom: 1rem; +} +.login-input:focus { + border-color: var(--ui-gold); + box-shadow: 0 0 0 3px rgba(200,164,72,0.2); +} -/* ── Buttons ────────────────────────────────────────────────────────── */ +.login-actions { + display: flex; + flex-direction: column; + gap: 0.55rem; + width: 100%; +} + +/* Login buttons styled as embossed wooden tiles */ +.login-btn { + width: 100%; + padding: 0.65rem 1rem; + font-family: var(--font-ui); + font-size: 0.9rem; + font-weight: 500; + letter-spacing: 0.04em; + border: none; + border-radius: 5px; + cursor: pointer; + transition: opacity 0.15s, transform 0.1s, box-shadow 0.15s; + position: relative; +} +.login-btn:disabled { opacity: 0.35; cursor: default; } +.login-btn:not(:disabled):hover { opacity: 0.92; transform: translateY(-1px); } +.login-btn:not(:disabled):active { transform: translateY(0); } + +.login-btn-primary { + background: linear-gradient(160deg, #4a7a38 0%, #2e5222 100%); + color: #e8f0e0; + box-shadow: 0 2px 6px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.12); +} +.login-btn-secondary { + background: linear-gradient(160deg, #3a2010 0%, #241408 100%); + color: #e4d4b4; + box-shadow: 0 2px 6px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.08); +} +.login-btn-bot { + background: linear-gradient(160deg, #2a4a6a 0%, #183050 100%); + color: #d0e0f0; + box-shadow: 0 2px 6px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.08); +} + +/* ── Connecting screen ──────────────────────────────────────────────── */ +.connecting { + font-family: var(--font-display); + font-size: 1.4rem; + font-style: italic; + margin-top: 4rem; + text-align: center; + color: var(--ui-parchment); + text-shadow: 0 1px 4px rgba(0,0,0,0.4); +} + +/* ── Game-action buttons ─────────────────────────────────────────────── */ .btn { padding: 0.5rem 1.25rem; - font-size: 1rem; + font-size: 0.95rem; + font-family: var(--font-ui); + font-weight: 500; + letter-spacing: 0.03em; border: none; border-radius: 4px; cursor: pointer; - transition: opacity 0.15s; + transition: opacity 0.15s, box-shadow 0.15s; } .btn:disabled { opacity: 0.4; cursor: default; } -.btn-primary { background: #3a6b3a; color: #fff; } -.btn-secondary { background: #5a4a2a; color: #fff; } +.btn-primary { background: var(--ui-green-accent); color: #fff; } +.btn-secondary { background: var(--board-rail); color: #e8d8b8; } .btn-bot { background: #2a5a7a; color: #fff; } -.btn:not(:disabled):hover { opacity: 0.85; } +.btn:not(:disabled):hover { + opacity: 0.9; + box-shadow: 0 2px 6px rgba(0,0,0,0.25); +} /* ── Game container ─────────────────────────────────────────────────── */ .game-container { display: flex; flex-direction: column; align-items: center; - gap: 0.75rem; + gap: 0.6rem; width: 100%; } -/* ── Language switcher ──────────────────────────────────────────────── */ -.lang-switcher { - display: flex; - gap: 0.25rem; -} +/* ── Language switcher (in-game) ────────────────────────────────────── */ +.lang-switcher { display: flex; gap: 0.25rem; } .lang-switcher button { - font-size: 0.75rem; + font-size: 0.7rem; + font-family: var(--font-ui); + letter-spacing: 0.05em; padding: 0.15rem 0.4rem; - border: 1px solid rgba(0,0,0,0.3); + border: 1px solid rgba(200,164,72,0.3); border-radius: 3px; background: transparent; cursor: pointer; - color: inherit; - opacity: 0.6; + color: var(--ui-parchment); + opacity: 0.55; } - .lang-switcher button.lang-active { opacity: 1; - font-weight: bold; - background: rgba(0,0,0,0.12); -} - -.login-container .lang-switcher { - justify-content: flex-end; - margin-bottom: 1rem; + font-weight: 500; + background: rgba(200,164,72,0.15); + border-color: rgba(200,164,72,0.6); } /* ── Top bar ─────────────────────────────────────────────────────────── */ @@ -90,39 +285,67 @@ input[type="text"] { justify-content: space-between; align-items: center; width: 100%; + color: var(--ui-parchment); + font-size: 0.85rem; + opacity: 0.8; } .quit-link { - font-size: 0.85rem; - color: #5a4a2a; + font-size: 0.8rem; + color: var(--ui-parchment); text-decoration: underline; + text-underline-offset: 2px; cursor: pointer; + opacity: 0.7; +} +.quit-link:hover { opacity: 1; } + +/* ── Game status bar (§10b) — above board ───────────────────────────── */ +.game-status { + font-family: var(--font-display); + font-size: 1.2rem; + font-style: italic; + color: var(--ui-parchment); + text-align: center; + letter-spacing: 0.04em; + padding: 0.2rem 1rem 0; + width: 100%; + text-shadow: 0 1px 4px rgba(0,0,0,0.4); +} + +/* ── Contextual sub-prompt (§8a) ────────────────────────────────────── */ +.game-sub-prompt { + font-family: var(--font-ui); + font-size: 0.72rem; + color: rgba(240,228,192,0.5); + text-align: center; + letter-spacing: 0.04em; + padding: 0.15rem 1rem 0; + width: 100%; } /* ── Player score panel ─────────────────────────────────────────────── */ .player-score-panel { - background: #f5edd8; - border-radius: 6px; - padding: 0.5rem 1rem; - font-size: 0.9rem; - box-shadow: 0 1px 4px rgba(0,0,0,0.2); + background: var(--ui-parchment); + border-radius: 5px; + padding: 0.45rem 1rem; + font-size: 0.88rem; + box-shadow: 0 2px 6px rgba(0,0,0,0.25); width: 100%; + border-top: 2px solid var(--ui-gold-dark); } -.player-score-header { - margin-bottom: 0.3rem; -} +.player-score-header { margin-bottom: 0.35rem; } .player-name { - font-weight: bold; - font-size: 1rem; + font-family: var(--font-display); + font-weight: 600; + font-size: 1.05rem; + color: var(--ui-ink); + letter-spacing: 0.02em; } -.score-bars { - display: flex; - flex-direction: column; - gap: 4px; -} +.score-bars { display: flex; flex-direction: column; gap: 5px; } .score-bar-row { display: flex; @@ -131,51 +354,73 @@ input[type="text"] { } .score-bar-label { - font-size: 0.8rem; - color: #555; + font-size: 0.75rem; + color: #665544; width: 3.5rem; text-align: right; flex-shrink: 0; } +/* ── Points bar ─────────────────────────────────────────────────────── */ .score-bar { width: 140px; - height: 10px; - background: rgba(0,0,0,0.12); - border-radius: 5px; + height: 8px; + background: rgba(0,0,0,0.1); + border-radius: 4px; overflow: hidden; flex-shrink: 0; } .score-bar-fill { height: 100%; - border-radius: 5px; - transition: width 0.3s; + border-radius: 4px; + transition: width 0.35s ease-out; } -.score-bar-points { background: #4a7a3a; } -.score-bar-holes { background: #7a4a2a; } +.score-bar-points { background: linear-gradient(90deg, var(--ui-green-accent), #5a9b3a); } .score-bar-value { - font-size: 0.8rem; - color: #444; + font-size: 0.75rem; + color: #665544; min-width: 2.5rem; + font-variant-numeric: tabular-nums; +} + +/* ── Hole peg tracker (§7a) ─────────────────────────────────────────── */ +.peg-track { + display: flex; + align-items: center; + gap: 3px; + flex-shrink: 0; +} + +.peg-hole { + width: 10px; + height: 10px; + border-radius: 50%; + border: 1.5px solid rgba(138,106,40,0.45); + background: rgba(0,0,0,0.06); + flex-shrink: 0; + transition: background 0.3s ease-out, border-color 0.3s, box-shadow 0.3s; +} + +.peg-hole.filled { + background: var(--ui-gold); + border-color: var(--ui-gold-dark); + box-shadow: 0 0 4px rgba(200,164,72,0.6); } .bredouille-badge { - font-size: 0.7rem; - font-weight: bold; - color: #fff; - background: #c07800; + font-size: 0.62rem; + font-weight: 500; + color: #fff8e0; + background: linear-gradient(135deg, #c88800, #8a5800); + border: 1px solid rgba(200,164,72,0.5); border-radius: 3px; - padding: 0.05em 0.35em; + padding: 0.1em 0.4em; + letter-spacing: 0.06em; cursor: default; -} - -.player-jans { - margin-top: 0.35rem; - border-top: 1px solid rgba(0,0,0,0.1); - padding-top: 0.25rem; + box-shadow: 0 1px 3px rgba(0,0,0,0.25); } /* ── Board + side panel ─────────────────────────────────────────────── */ @@ -189,61 +434,83 @@ input[type="text"] { .side-panel { display: flex; flex-direction: column; - gap: 0.75rem; + gap: 0.65rem; min-width: 160px; - padding-top: 0.25rem; + padding-top: 0.15rem; } -.action-buttons { - display: flex; - flex-direction: column; - gap: 0.5rem; -} - -/* ── Status bar ─────────────────────────────────────────────────────── */ -.status-bar { - display: flex; - gap: 1rem; - align-items: center; - font-size: 1.05rem; - font-weight: 500; -} +.action-buttons { display: flex; flex-direction: column; gap: 0.5rem; } /* ── Dice bar ───────────────────────────────────────────────────────── */ .dice-bar { display: flex; align-items: center; - gap: 0.75rem; + gap: 0.6rem; + padding: 0.4rem 0.6rem; + background: rgba(42,21,8,0.15); + border-radius: 6px; + border: 1px solid rgba(200,164,72,0.2); + width: fit-content; } /* ── Die face (SVG) ─────────────────────────────────────────────────── */ + +/* §5a — vigorous tumble: die bounces in from a random rotation */ +@keyframes die-tumble { + 0% { transform: rotate(-45deg) scale(0.4) translateY(-8px); opacity: 0; } + 25% { transform: rotate(18deg) scale(1.22) translateY(0); opacity: 1; } + 45% { transform: rotate(-10deg) scale(0.91); } + 62% { transform: rotate(6deg) scale(1.06); } + 76% { transform: rotate(-3deg) scale(0.98); } + 88% { transform: rotate(1.5deg) scale(1.01); } + 100% { transform: rotate(0deg) scale(1); opacity: 1; } +} + +.die-face { + filter: drop-shadow(0 2px 3px rgba(0,0,0,0.3)); + animation: die-tumble 0.55s cubic-bezier(0.22, 0.61, 0.36, 1) both; +} + .die-face rect { - fill: #fffff0; + fill: #fffef0; stroke: #2a1a00; stroke-width: 2; + transition: fill 0.18s, stroke 0.18s; } .die-face circle { fill: #1a0a00; + transition: fill 0.18s; } -.die-face.die-used rect { - fill: #d8d4c8; - stroke: #8a7a60; + +/* Bar die slot — centered in the board bar */ +.bar-die-slot { + display: flex; + align-items: center; + justify-content: center; } -.die-face.die-used circle { - fill: #8a7a60; + +/* Double glow (§5c) */ +.die-face.die-double rect { stroke: var(--ui-gold); stroke-width: 2.5; } +.die-face.die-double { + filter: drop-shadow(0 0 6px rgba(200,164,72,0.7)) drop-shadow(0 2px 3px rgba(0,0,0,0.3)); } +.die-face.die-used { animation: none; opacity: 0.55; } +.die-face.die-used rect { fill: #d4d0c4; stroke: #9a8a70; } +.die-face.die-used circle { fill: #9a8a70; } + /* ── Jan panel ──────────────────────────────────────────────────────── */ .jan-panel { display: flex; flex-direction: column; gap: 2px; - background: #f5edd8; - border-radius: 6px; - padding: 0.4rem 1rem; - font-size: 0.9rem; + background: var(--ui-parchment); + border-radius: 5px; + padding: 0.4rem 0.9rem; + font-size: 0.88rem; box-shadow: 0 1px 4px rgba(0,0,0,0.15); min-width: 260px; + border-top: 2px solid rgba(138,106,40,0.35); } .jan-row { @@ -254,81 +521,127 @@ input[type="text"] { border-radius: 3px; } .jan-expandable { cursor: pointer; } -.jan-expandable:hover { background: rgba(0,0,0,0.06); } +.jan-expandable:hover { background: rgba(0,0,0,0.05); } .jan-positive { color: #1a5c1a; } .jan-negative { color: #8b1a1a; } .jan-label { flex: 1; } .jan-tag { - font-size: 0.75rem; + font-size: 0.72rem; padding: 0.1em 0.4em; border-radius: 3px; - background: rgba(0,0,0,0.08); - color: #555; + background: rgba(0,0,0,0.07); + color: #665544; white-space: nowrap; } -.jan-pts { font-weight: bold; text-align: right; min-width: 3rem; } +.jan-pts { font-weight: 600; text-align: right; min-width: 3rem; } .jan-moves { padding: 1px 4px 4px 1rem; display: flex; flex-direction: column; gap: 2px; } .jan-moves.hidden { display: none; } -.jan-move-line { font-family: monospace; font-size: 0.8rem; color: #444; } +.jan-move-line { font-family: monospace; font-size: 0.78rem; color: #555; } -/* ── Game-over overlay ──────────────────────────────────────────────── */ +/* ── Game-over overlay (§12) ────────────────────────────────────────── */ .game-over-overlay { position: fixed; inset: 0; - background: rgba(0, 0, 0, 0.6); + background: rgba(0,0,0,0.65); display: flex; align-items: center; justify-content: center; z-index: 100; } +@keyframes game-over-appear { + from { transform: translateY(-24px) scale(0.94); opacity: 0; } + to { transform: translateY(0) scale(1); opacity: 1; } +} + .game-over-box { - background: #f5edd8; + background: var(--ui-parchment); border-radius: 8px; - padding: 2rem 2.5rem; + padding: 2.5rem 3rem; text-align: center; - box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4); + box-shadow: 0 12px 40px rgba(0,0,0,0.5), 0 0 0 2px var(--ui-gold-dark); display: flex; flex-direction: column; - gap: 1.25rem; - min-width: 260px; + gap: 1.1rem; + min-width: 300px; + animation: game-over-appear 0.4s cubic-bezier(0.22, 0.61, 0.36, 1); } .game-over-box h2 { - font-size: 1.75rem; + font-family: var(--font-display); + font-size: 2rem; + font-weight: 600; + color: var(--ui-ink); + letter-spacing: 0.06em; } .game-over-winner { + font-family: var(--font-display); font-size: 1.25rem; - font-weight: bold; - color: #3a6b3a; + color: var(--ui-green-accent); + font-style: italic; } -.game-over-actions { +/* Final score ledger */ +.game-over-score { display: flex; - gap: 0.75rem; + align-items: center; justify-content: center; + gap: 0.75rem; + padding: 0.6rem 1rem; + background: rgba(0,0,0,0.05); + border-radius: 5px; + border: 1px solid rgba(138,106,40,0.2); +} + +.game-over-score-name { + font-family: var(--font-display); + font-size: 0.9rem; + color: #665544; + font-style: italic; + max-width: 80px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.game-over-score-nums { + font-family: var(--font-display); + font-size: 2.25rem; + font-weight: 600; + color: var(--ui-ink); + letter-spacing: 0.08em; + line-height: 1; +} + +.game-over-actions { display: flex; gap: 0.75rem; justify-content: center; } + +/* ── Scoring notification panel (§6b) ───────────────────────────────── */ +@keyframes score-panel-in { + from { transform: translateX(18px); opacity: 0; } + to { transform: translateX(0); opacity: 1; } } -/* ── Scoring notification panel ────────────────────────────────────── */ .scoring-panel { - background: #f0ead0; - border-radius: 6px; - padding: 0.4rem 0.75rem; - font-size: 0.85rem; + background: var(--ui-parchment); + border-radius: 5px; + padding: 0.4rem 0.7rem; + font-size: 0.84rem; box-shadow: 0 1px 4px rgba(0,0,0,0.15); - border-left: 3px solid #4a7a3a; + border-left: 3px solid var(--ui-green-accent); display: flex; flex-direction: column; gap: 3px; + animation: score-panel-in 0.22s ease-out; } .scoring-total { - font-weight: bold; - font-size: 0.95rem; + font-family: var(--font-display); + font-weight: 600; + font-size: 1rem; color: #1a5c1a; } @@ -340,102 +653,212 @@ input[type="text"] { border-radius: 3px; cursor: default; } +.scoring-jan-row:hover { background: rgba(0,0,0,0.05); } -.scoring-jan-row:hover { background: rgba(0,0,0,0.06); } - -.scoring-panel-opp { - border-left-color: #7a5a3a; -} - -.scoring-panel-opp .scoring-total { color: #7a4a2a; } +.scoring-panel-opp { border-left-color: var(--board-rail); } +.scoring-panel-opp .scoring-total { color: var(--ui-red-accent); } .scoring-hole { display: flex; align-items: center; gap: 0.4rem; - font-weight: bold; - color: #7a4a2a; - margin-top: 2px; - padding-top: 3px; + font-weight: 600; + color: var(--ui-red-accent); + margin-top: 3px; + padding-top: 4px; border-top: 1px solid rgba(0,0,0,0.1); } -.hold-go-buttons { +.hold-go-buttons { display: flex; gap: 0.5rem; margin-top: 4px; } + +/* ── Board wrapper ──────────────────────────────────────────────────── */ +.board-wrapper { display: flex; - gap: 0.5rem; - margin-top: 4px; + flex-direction: column; + gap: 3px; } +/* ── Zone labels (§2a) — aligned with board quarters ───────────────── */ +/* Board border(4) + padding(4) = 8px inset each side */ +.zone-labels-row { + display: flex; + gap: 4px; + padding: 0 8px; +} + +.zone-label { + font-family: var(--font-display); + font-size: 0.57rem; + font-style: italic; + color: rgba(240,228,192,0.48); + letter-spacing: 0.1em; + text-align: center; + pointer-events: none; + line-height: 1; +} + +.zone-label-quarter { width: 370px; flex-shrink: 0; } +.zone-label-bar { width: 68px; flex-shrink: 0; } + /* ── Board ──────────────────────────────────────────────────────────── */ .board { - background: #2e6b2e; - border: 4px solid #1a3d1a; - border-radius: 8px; + background: var(--board-felt); + border: 4px solid var(--board-rail); + border-radius: 6px; padding: 4px; display: flex; flex-direction: column; gap: 4px; user-select: none; - box-shadow: 0 4px 12px rgba(0,0,0,0.4); + box-shadow: + 0 6px 16px rgba(0,0,0,0.5), + inset 0 1px 0 rgba(255,255,255,0.04); position: relative; } -.board-row { - display: flex; - gap: 4px; -} - -.board-quarter { - display: flex; - gap: 2px; -} +.board-row { display: flex; gap: 4px; } +.board-quarter { display: flex; gap: 2px; } .board-bar { - width: 20px; - background: #1a3d1a; - border-radius: 3px; + width: 68px; + background: var(--board-rail); + border-radius: 4px; + box-shadow: inset 0 0 6px rgba(0,0,0,0.5); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + overflow: visible; } .board-center-bar { height: 12px; - background: #1a3d1a; - border-radius: 3px; + background: var(--board-rail); + border-radius: 2px; + box-shadow: inset 0 0 4px rgba(0,0,0,0.4); } -/* ── Fields ─────────────────────────────────────────────────────────── */ +/* ── Fields (§1) ────────────────────────────────────────────────────── */ +/* + * Each field is a transparent rectangle over the felt. + * The triangular flèche is drawn by ::before using clip-path. + * --fc controls the triangle colour; z-index:-1 keeps the triangle + * behind checkers; isolation:isolate confines the negative z-index. + */ .field { + --fc: var(--field-ivory); /* default triangle colour */ width: 60px; height: 180px; - background: #d4a843; - border-radius: 4px; + background: transparent; /* felt shows through between triangle tips */ + isolation: isolate; /* stacking context for z-index:-1 ::before */ + border-radius: 3px; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; padding: 4px 2px; position: relative; - transition: background 0.1s; } -/* Alternating field colours */ -.board-quarter .field:nth-child(odd) { background: #c49030; } -.board-quarter .field:nth-child(even) { background: #d4a843; } +/* Bot-row triangle: wide base at bottom, tip at top */ +.field::before { + content: ''; + position: absolute; + inset: 0; + z-index: -1; /* behind checkers & corner crown */ + background: var(--fc); + clip-path: polygon(0% 100%, 50% 0%, 100% 100%); + transition: background 0.12s; +} + +/* Top-row triangle: wide base at top, tip at bottom */ +.top-row .field::before { + clip-path: polygon(0% 0%, 100% 0%, 50% 100%); +} .top-row .field { justify-content: flex-start; } -.field.clickable { cursor: pointer; background: #aad060 !important; } -.field.clickable:hover { background: #88bb44 !important; } -.field.selected { background: #709a20 !important; outline: 2px solid #446622; } -/* .field.dest { background: #aad060 !important; } */ +/* ── Zone alternating colours (§2b) ────────────────────────────────── */ +/* petit-jan and grand-jan: burgundy / ivory */ +.board-quarter .field.zone-petit:nth-child(odd), +.board-quarter .field.zone-grand:nth-child(odd) { --fc: var(--field-burgundy); } +.board-quarter .field.zone-petit:nth-child(even), +.board-quarter .field.zone-grand:nth-child(even) { --fc: var(--field-ivory); } -.field-num { - font-size: 0.65rem; - color: rgba(0,0,0,0.45); +/* Jan de retour — cooler: dark teal / silvery-green ivory */ +.board-quarter .field.zone-retour:nth-child(odd) { --fc: #1e3d32; } +.board-quarter .field.zone-retour:nth-child(even) { --fc: #e5eadc; } + +/* Dernier jan — warmer: amber-brown / warm amber ivory */ +.board-quarter .field.zone-dernier:nth-child(odd) { --fc: #6a2810; } +.board-quarter .field.zone-dernier:nth-child(even) { --fc: #f2dfa0; } + +/* ── Rest corner (§3) — before .clickable so green wins when interactive ── */ +.field.corner { --fc: var(--field-corner) !important; } + +/* Crown glyph sits behind checkers (z-index:-1) so it shows only on empty corners */ +.field.corner::after { + content: '♛'; position: absolute; - bottom: 2px; + z-index: -1; + bottom: 22px; + font-size: 0.7rem; + color: rgba(255,248,210,0.38); + pointer-events: none; + line-height: 1; +} +.top-row .field.corner::after { bottom: auto; top: 22px; } + +/* Corner pulse (§8d) — filter respects the triangle shape */ +@keyframes corner-pulse { + 0%, 100% { filter: drop-shadow(0 0 0px rgba(200,164,72,0)); } + 50% { filter: drop-shadow(0 0 7px rgba(200,164,72,0.55)); } +} +.field.corner.corner-available { + animation: corner-pulse 1.5s ease-in-out infinite; } -.top-row .field-num { bottom: auto; top: 2px; } +/* ── Exit-eligible highlight (§8c) — filter glow on triangle ───────── */ +@keyframes exit-glow { + 0%, 100% { filter: drop-shadow(0 0 0px rgba(232,192,96,0)); } + 50% { filter: drop-shadow(0 0 5px rgba(232,192,96,0.5)); } +} +.field.exit-eligible { + animation: exit-glow 2s ease-in-out infinite; +} + +/* ── Interactive states — after .corner to take visual priority ─────── */ +.field.clickable { + cursor: pointer; + --fc: #8fc840 !important; +} +.field.clickable:hover { --fc: #74aa28 !important; } +.field.selected { + --fc: #5a8a18 !important; + outline: 2px solid rgba(255,255,255,0.3); + outline-offset: -2px; +} + +/* ── Field numbers ──────────────────────────────────────────────────── */ +.field-num { + font-size: 0.58rem; + color: rgba(0,0,0,0.28); + position: absolute; + bottom: 3px; + line-height: 1; + font-variant-numeric: tabular-nums; +} + +.board-quarter .field.zone-petit:nth-child(odd) .field-num, +.board-quarter .field.zone-grand:nth-child(odd) .field-num, +.board-quarter .field.zone-retour:nth-child(odd) .field-num, +.board-quarter .field.zone-dernier:nth-child(odd) .field-num { + color: rgba(240,215,190,0.38); +} + +.field.corner .field-num { color: rgba(255,248,200,0.4); } + +.top-row .field-num { bottom: auto; top: 3px; } /* ── Checkers ───────────────────────────────────────────────────────── */ .checker-stack { @@ -451,21 +874,121 @@ input[type="text"] { display: flex; align-items: center; justify-content: center; - font-size: 0.8rem; - font-weight: bold; - border: 2px solid rgba(0,0,0,0.3); - box-shadow: inset 0 2px 4px rgba(255,255,255,0.3), 0 1px 3px rgba(0,0,0,0.3); + font-size: 0.78rem; + font-weight: 600; + border: 2px solid var(--checker-ring); + box-shadow: + inset 0 2px 5px rgba(255,255,255,0.35), + inset 0 -1px 3px rgba(0,0,0,0.2), + 0 2px 4px rgba(0,0,0,0.35); flex-shrink: 0; } -.checker + .checker { margin-top: 2px; } +.checker + .checker { margin-top: -4px; } .checker.white { - background: radial-gradient(circle at 35% 35%, #ffffff, #cccccc); - color: #333; + background: radial-gradient(circle at 38% 32%, #ffffff, var(--checker-white) 65%, #d8cdb0); + color: #443322; } .checker.black { - background: radial-gradient(circle at 35% 35%, #555555, #111111); - color: #eee; + background: radial-gradient(circle at 38% 32%, #444444, #1c1008 65%, var(--checker-black)); + color: #c8b898; +} + +/* ── Hole toast (§6a) ───────────────────────────────────────────────── */ +@keyframes toast-rise { + from { transform: translate(-50%, -40%); opacity: 0; } + to { transform: translate(-50%, -50%); opacity: 1; } +} +@keyframes toast-fade { + from { opacity: 1; } + to { opacity: 0; pointer-events: none; } +} + +.hole-toast { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background: rgba(22,10,2,0.93); + border: 2px solid var(--ui-gold); + border-radius: 8px; + padding: 1.5rem 3.5rem; + text-align: center; + z-index: 50; + pointer-events: none; + box-shadow: + 0 12px 40px rgba(0,0,0,0.65), + 0 0 0 1px rgba(200,164,72,0.25), + inset 0 1px 0 rgba(200,164,72,0.1); + animation: + toast-rise 0.25s cubic-bezier(0.22, 0.61, 0.36, 1), + toast-fade 0.5s ease-in 1.4s forwards; +} + +.hole-toast-title { + font-family: var(--font-display); + font-size: 3.25rem; + font-weight: 600; + color: var(--ui-gold); + letter-spacing: 0.1em; + line-height: 1; +} + +.hole-toast-count { + font-family: var(--font-display); + font-size: 1.1rem; + color: rgba(200,164,72,0.68); + margin-top: 0.35rem; + letter-spacing: 0.06em; +} + +.hole-toast-bredouille { + font-family: var(--font-ui); + font-size: 0.75rem; + letter-spacing: 0.08em; + color: rgba(200,164,72,0.55); + margin-top: 0.4rem; + text-transform: uppercase; +} + +/* ── Bredouille toast variant (§6d) — gold shimmer, larger entrance ─── */ +@keyframes bredouille-shimmer { + 0%, 100% { box-shadow: 0 12px 40px rgba(0,0,0,0.65), 0 0 0 2px rgba(200,164,72,0.4), inset 0 0 0 rgba(200,164,72,0); } + 50% { box-shadow: 0 12px 40px rgba(0,0,0,0.65), 0 0 0 4px rgba(200,164,72,0.7), inset 0 0 24px rgba(200,164,72,0.08); } +} +.hole-toast.hole-toast-bredouille { + border-width: 2.5px; + border-color: var(--ui-gold); + padding: 2rem 4rem; + animation: + toast-rise 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), + bredouille-shimmer 0.9s ease-in-out 0.3s 2, + toast-fade 0.5s ease-in 2.2s forwards; +} +.hole-toast.hole-toast-bredouille .hole-toast-title { + font-size: 3.75rem; +} +.hole-toast.hole-toast-bredouille .hole-toast-bredouille { + font-size: 0.85rem; + color: rgba(200,164,72,0.8); + letter-spacing: 0.14em; +} + +/* ── Checker lift on selected field (§4b) ───────────────────────────── */ +.field.selected .checker-stack { + transform: translateY(-5px); + filter: drop-shadow(0 8px 12px rgba(0,0,0,0.6)); + transition: transform 0.12s ease-out, filter 0.12s ease-out; +} + +/* ── Action buttons below board (§10c) ──────────────────────────────── */ +.board-actions { + display: flex; + gap: 0.55rem; + justify-content: center; + align-items: center; + flex-wrap: wrap; + min-height: 2rem; /* reserve height so layout doesn't shift when buttons appear */ } diff --git a/client_web/locales/en.json b/client_web/locales/en.json index 1fbad6d..94c2baa 100644 --- a/client_web/locales/en.json +++ b/client_web/locales/en.json @@ -48,5 +48,8 @@ "bredouille_applied": "Bredouille!", "hold": "Hold", "opp_scored_pts": "Opponent +{{ n }} pts", - "opp_hole_made": "Opponent hole! {{ holes }}/12" + "opp_hole_made": "Opponent hole! {{ holes }}/12", + "hint_move": "Click a highlighted field to move a checker", + "hint_hold_or_go": "Hold to keep points — Go to reset the setting", + "hint_continue": "Click Continue when ready" } diff --git a/client_web/locales/fr.json b/client_web/locales/fr.json index 09ab69b..397713d 100644 --- a/client_web/locales/fr.json +++ b/client_web/locales/fr.json @@ -48,5 +48,8 @@ "bredouille_applied": "Bredouille !", "hold": "Tenir", "opp_scored_pts": "Adversaire +{{ n }} pts", - "opp_hole_made": "Trou adverse ! {{ holes }}/12" + "opp_hole_made": "Trou adverse ! {{ holes }}/12", + "hint_move": "Cliquez un champ surligné pour déplacer", + "hint_hold_or_go": "Tenir pour garder les points — S'en aller pour repartir", + "hint_continue": "Cliquez Continuer quand vous êtes prêt" } diff --git a/client_web/src/components/board.rs b/client_web/src/components/board.rs index a60b99e..bd61102 100644 --- a/client_web/src/components/board.rs +++ b/client_web/src/components/board.rs @@ -2,6 +2,7 @@ use leptos::prelude::*; use trictrac_store::CheckerMove; use crate::trictrac::types::{SerTurnStage, ViewState}; +use super::die::Die; /// Field numbers in visual display order (left-to-right for each quarter), white's perspective. const TOP_LEFT_W: [u8; 6] = [13, 14, 15, 16, 17, 18]; @@ -15,6 +16,38 @@ const TOP_RIGHT_B: [u8; 6] = [7, 8, 9, 10, 11, 12]; const BOT_LEFT_B: [u8; 6] = [24, 23, 22, 21, 20, 19]; const BOT_RIGHT_B: [u8; 6] = [18, 17, 16, 15, 14, 13]; +/// The rest corner is field 12 (White) or field 13 (Black) in the store's coordinate system. +/// Returns true when `field_num` is the rest corner for this perspective. +#[allow(dead_code)] +fn is_rest_corner(field_num: u8, is_white: bool) -> bool { + if is_white { field_num == 12 } else { field_num == 13 } +} + +/// Zone CSS class for a field number (field coordinates are always White's 1-24). +fn field_zone_class(field_num: u8) -> &'static str { + match field_num { + 1..=6 => "zone-petit", + 7..=12 => "zone-grand", + 13..=18 => "zone-retour", + 19..=24 => "zone-dernier", + _ => "", + } +} + +/// Returns (d0_used, d1_used) for the bar dice display. +fn bar_matched_dice_used(staged: &[(u8, u8)], dice: (u8, u8)) -> (bool, bool) { + let mut d0 = false; + let mut d1 = false; + for &(from, to) in staged { + let dist = if from < to { to.saturating_sub(from) } else { from.saturating_sub(to) }; + if !d0 && dist == dice.0 { d0 = true; } + else if !d1 && dist == dice.1 { d1 = true; } + else if !d0 { d0 = true; } + else { d1 = true; } + } + (d0, d1) +} + /// Returns the displayed board value for `field_num` after applying `staged_moves`. /// Field numbers are always in white's coordinate system (1–24). fn displayed_value( @@ -59,8 +92,9 @@ fn valid_origins_for(seqs: &[(CheckerMove, CheckerMove)], staged: &[(u8, u8)]) - } /// Pixel center of a board field in the SVG overlay coordinate space. -/// Geometry is derived from CSS: field 60px wide, 180px tall, board padding 4px, -/// board-row gap 4px, board-bar 20px, board-center-bar 12px. +/// Geometry: field 60×180px, board padding 4px, gap 4px, bar 20px, center-bar 12px. +/// With triangular flèches, arrows target the WIDE BASE of each triangle — +/// that is where the checker stack actually sits. fn field_center(f: usize, is_white: bool) -> Option<(f32, f32)> { if f == 0 || f > 24 { return None; @@ -69,24 +103,25 @@ fn field_center(f: usize, is_white: bool) -> Option<(f32, f32)> { match f { 13..=18 => (f - 13, false, true), 19..=24 => (f - 19, true, true), - 7..=12 => (12 - f, false, false), - 1..=6 => (6 - f, true, false), - _ => return None, + 7..=12 => (12 - f, false, false), + 1..=6 => (6 - f, true, false), + _ => return None, } } else { match f { - 1..=6 => (f - 1, false, true), - 7..=12 => (f - 7, true, true), + 1..=6 => (f - 1, false, true), + 7..=12 => (f - 7, true, true), 19..=24 => (24 - f, false, false), 13..=18 => (18 - f, true, false), - _ => return None, + _ => return None, } }; - // Left-quarter field i center x: 4 + i*62 + 30 = 34 + 62i - // Right-quarter field i center x: 4 + 370 + 4 + 20 + 4 + i*62 + 30 = 432 + 62i - let x = if right { 432.0 + qi as f32 * 62.0 } else { 34.0 + qi as f32 * 62.0 }; - // Top row center y: 4 + 90 = 94; bot row: 4 + 180 + 4 + 12 + 4 + 90 = 294 - let y = if top { 94.0 } else { 294.0 }; + // Left-quarter field i center x: 4(pad) + i*62 + 30(half field) = 34 + 62i + // Right-quarter: 4 + 370(quarter) + 4(gap) + 68(bar) + 4(gap) + i*62 + 30 = 480 + 62i + let x = if right { 480.0 + qi as f32 * 62.0 } else { 34.0 + qi as f32 * 62.0 }; + // Top row triangle base (wide end) ≈ y=30; bot row triangle base ≈ y=358. + // (Top base: 4pad + 4field-pad + 20half-checker ≈ 28; Bot base: 388 − 4pad − 4field-pad − 20 ≈ 360) + let y = if top { 30.0 } else { 358.0 }; Some((x, y)) } @@ -186,6 +221,12 @@ pub fn Board( staged_moves: RwSignal>, /// All valid two-move sequences for this turn (empty when not in move stage). valid_sequences: Vec<(CheckerMove, CheckerMove)>, + /// Dice to display in the center bars; None means dice not yet rolled (cups shown upright). + #[prop(default = None)] bar_dice: Option<(u8, u8)>, + /// Whether we're in the move stage (determines used/unused die appearance). + #[prop(default = false)] bar_is_move: bool, + /// Whether the dice are a double (golden glow). + #[prop(default = false)] bar_is_double: bool, ) -> impl IntoView { let board = view_state.board; let is_move_stage = view_state.active_mp_player == Some(player_id) @@ -196,6 +237,24 @@ pub fn Board( let is_white = player_id == 0; let hovered_moves = use_context::>>(); + // Exit-eligible (§8c): all the player's checkers are in their last jan. + // White last jan = fields 19-24 (board indices 18-23, positive values). + // Black last jan = fields 1-6 (board indices 0-5, negative values). + let board_snapshot = view_state.board; + let all_in_exit: bool; + let exit_field_test: fn(u8) -> bool; + if is_white { + let in_exit: i8 = board_snapshot[18..24].iter().map(|&v| v.max(0)).sum(); + let total: i8 = board_snapshot.iter().map(|&v| v.max(0)).sum(); + all_in_exit = total > 0 && in_exit == total; + exit_field_test = |f| matches!(f, 19..=24); + } else { + let in_exit: i8 = board_snapshot[0..6].iter().map(|&v| (-v).max(0)).sum(); + let total: i8 = board_snapshot.iter().map(|&v| (-v).max(0)).sum(); + all_in_exit = total > 0 && in_exit == total; + exit_field_test = |f| matches!(f, 1..=6); + } + // `valid_sequences` is cloned per field (the Vec is small; Send-safe unlike Rc). let fields_from = |nums: &[u8], is_top_row: bool| -> Vec { nums.iter() @@ -204,8 +263,14 @@ pub fn Board( // is Send, which Leptos requires for reactive attribute functions. let seqs_c = valid_sequences.clone(); let seqs_k = valid_sequences.clone(); + let corner_title = if is_rest_corner(field_num, is_white) { + Some("Coin de repos — must enter and leave with 2 checkers") + } else { + None + }; view! {
AnyView { + match bar_dice { + None => view! {
}.into_any(), + Some(dice_vals) => { + let die_val = if die_idx == 0 { dice_vals.0 } else { dice_vals.1 }; + view! { +
+ {move || { + let staged = staged_moves.get(); + let (u0, u1) = if bar_is_move { + bar_matched_dice_used(&staged, dice_vals) + } else { + (true, true) + }; + let used = if die_idx == 0 { u0 } else { u1 }; + view! { } + }} +
+ } + .into_any() + } + } + }; + let (tl, tr, bl, br) = if is_white { (&TOP_LEFT_W, &TOP_RIGHT_W, &BOT_LEFT_W, &BOT_RIGHT_W) } else { (&TOP_LEFT_B, &TOP_RIGHT_B, &BOT_LEFT_B, &BOT_RIGHT_B) }; + // Zone label pairs (top-left, top-right, bot-left, bot-right) per perspective. + let (label_tl, label_tr, label_bl, label_br) = if is_white { + ("jan de retour", "dernier jan", "grand jan", "petit jan") + } else { + ("petit jan", "grand jan", "dernier jan", "jan de retour") + }; + view! { -
-
-
{fields_from(tl, true)}
-
-
{fields_from(tr, true)}
+ // board-wrapper keeps zone labels outside .board so the SVG overlay + // inside .board stays correctly positioned (position:absolute top:0 left:0 + // is relative to .board, not the wrapper). +
+
+
{label_tl}
+
+
{label_tr}
-
-
-
{fields_from(bl, false)}
-
-
{fields_from(br, false)}
+
+
+
{fields_from(tl, true)}
+
{bar_content(0)}
+
{fields_from(tr, true)}
+
+
+
+
{fields_from(bl, false)}
+
{bar_content(1)}
+
{fields_from(br, false)}
+
+ // SVG overlay: arrows for hovered jan moves + + {move || { + let Some(hm) = hovered_moves else { return vec![]; }; + let pairs = hm.get(); + if pairs.is_empty() { return vec![]; } + // Collect unique individual (from, to) moves; skip empty/exit. + let mut moves: Vec<(usize, usize)> = pairs.iter() + .flat_map(|(m1, m2)| [ + (m1.get_from(), m1.get_to()), + (m2.get_from(), m2.get_to()), + ]) + .filter(|&(f, t)| f != 0 && t != 0) + .collect(); + moves.sort_unstable(); + moves.dedup(); + moves.into_iter() + .filter_map(|(from, to)| { + let p1 = field_center(from, is_white)?; + let p2 = field_center(to, is_white)?; + Some(arrow_svg(p1, p2)) + }) + .collect() + }} + +
+
+
{label_bl}
+
+
{label_br}
- // SVG overlay: arrows for hovered jan moves - - {move || { - let Some(hm) = hovered_moves else { return vec![]; }; - let pairs = hm.get(); - if pairs.is_empty() { return vec![]; } - // Collect unique individual (from, to) moves; skip empty/exit. - let mut moves: Vec<(usize, usize)> = pairs.iter() - .flat_map(|(m1, m2)| [ - (m1.get_from(), m1.get_to()), - (m2.get_from(), m2.get_to()), - ]) - .filter(|&(f, t)| f != 0 && t != 0) - .collect(); - moves.sort_unstable(); - moves.dedup(); - moves.into_iter() - .filter_map(|(from, to)| { - let p1 = field_center(from, is_white)?; - let p2 = field_center(to, is_white)?; - Some(arrow_svg(p1, p2)) - }) - .collect() - }} -
} } diff --git a/client_web/src/components/die.rs b/client_web/src/components/die.rs index 1f83ea9..7b701e7 100644 --- a/client_web/src/components/die.rs +++ b/client_web/src/components/die.rs @@ -16,9 +16,21 @@ fn dot_positions(value: u8) -> &'static [(&'static str, &'static str)] { /// A single die face rendered as SVG. /// `value` 1–6 shows dots; 0 shows an empty face (not-yet-rolled). /// `used` dims the die. +/// `is_double` applies a golden glow (both dice same value). #[component] -pub fn Die(value: u8, used: bool) -> impl IntoView { - let cls = if used { "die-face die-used" } else { "die-face" }; +pub fn Die( + value: u8, + used: bool, + #[prop(default = false)] is_double: bool, +) -> impl IntoView { + let mut cls = if used { + "die-face die-used".to_string() + } else { + "die-face".to_string() + }; + if is_double && !used { + cls.push_str(" die-double"); + } let dots: Vec = dot_positions(value) .iter() .map(|&(cx, cy)| view! { }.into_any()) diff --git a/client_web/src/components/game_screen.rs b/client_web/src/components/game_screen.rs index 642b79c..6657d94 100644 --- a/client_web/src/components/game_screen.rs +++ b/client_web/src/components/game_screen.rs @@ -9,35 +9,9 @@ use crate::i18n::*; use crate::trictrac::types::{PlayerAction, SerStage, SerTurnStage}; use super::board::Board; -use super::die::Die; use super::score_panel::PlayerScorePanel; use super::scoring::ScoringPanel; -#[allow(dead_code)] -/// Returns (d0_used, d1_used) by matching each staged move's distance to a die. -fn matched_dice_used(staged: &[(u8, u8)], dice: (u8, u8)) -> (bool, bool) { - let mut d0 = false; - let mut d1 = false; - for &(from, to) in staged { - let dist = if from < to { - to.saturating_sub(from) - } else { - from.saturating_sub(to) - }; - if !d0 && dist == dice.0 { - d0 = true; - } else if !d1 && dist == dice.1 { - d1 = true; - } else if !d0 { - d0 = true; - } else { - d1 = true; - } - } - (d0, d1) -} - - #[component] pub fn GameScreen(state: GameUiState) -> impl IntoView { let i18n = use_i18n(); @@ -139,18 +113,27 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { // ── Scoring notifications ────────────────────────────────────────────────── let my_scored_event = state.my_scored_event.clone(); let opp_scored_event = state.opp_scored_event.clone(); + let hole_toast_info = my_scored_event.as_ref() + .filter(|e| e.holes_gained > 0) + .map(|e| (e.holes_total, e.bredouille)); + + let is_double_dice = dice.0 == dice.1 && dice.0 != 0; // ── Capture for closures ─────────────────────────────────────────────────── let stage = vs.stage.clone(); let turn_stage = vs.turn_stage.clone(); let turn_stage_for_panel = turn_stage.clone(); + let turn_stage_for_sub = turn_stage.clone(); let room_id = state.room_id.clone(); let is_bot_game = state.is_bot_game; // ── Game-over info ───────────────────────────────────────────────────────── let stage_is_ended = stage == SerStage::Ended; let winner_is_me = my_score.holes >= 12; + let my_name_end = my_score.name.clone(); + let my_holes_end = my_score.holes; let opp_name_end = opp_score.name.clone(); + let opp_holes_end = opp_score.holes; view! {
@@ -180,6 +163,46 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { // ── Opponent score (above board) ───────────────────────────────── + // ── Status bar — full width, above board (§10b) ────────────────── +
+ {move || { + if let Some(ref reason) = pause_reason { + return String::from(match reason { + PauseReason::AfterOpponentRoll => t_string!(i18n, after_opponent_roll), + PauseReason::AfterOpponentGo => t_string!(i18n, after_opponent_go), + PauseReason::AfterOpponentMove => t_string!(i18n, after_opponent_move), + }); + } + let n = staged_moves.get().len(); + if is_move_stage { + t_string!(i18n, select_move, n = n + 1) + } else { + String::from(match (&stage, is_my_turn, &turn_stage) { + (SerStage::Ended, _, _) => t_string!(i18n, game_over), + (SerStage::PreGame, _, _) => t_string!(i18n, waiting_for_opponent), + (SerStage::InGame, true, SerTurnStage::RollDice) => t_string!(i18n, your_turn_roll), + (SerStage::InGame, true, SerTurnStage::HoldOrGoChoice) => t_string!(i18n, hold_or_go), + (SerStage::InGame, true, _) => t_string!(i18n, your_turn), + (SerStage::InGame, false, _) => t_string!(i18n, opponent_turn), + }) + } + }} +
+ + // ── Contextual sub-prompt (§8a) ────────────────────────────────── + {move || { + let hint: String = if waiting_for_confirm { + t_string!(i18n, hint_continue).to_owned() + } else if is_move_stage { + t_string!(i18n, hint_move).to_owned() + } else if is_my_turn && turn_stage_for_sub == SerTurnStage::HoldOrGoChoice { + t_string!(i18n, hint_hold_or_go).to_owned() + } else { + String::new() + }; + (!hint.is_empty()).then(|| view! {

{hint}

}) + }} + // ── Board + side panel ───────────────────────────────────────────
impl IntoView { selected_origin=selected_origin staged_moves=staged_moves valid_sequences=valid_sequences + bar_dice=show_dice.then_some(dice) + bar_is_move=is_move_stage + bar_is_double=is_double_dice /> - // ── Side panel ─────────────────────────────────────────────── + // ── Side panel (scoring panels only) ─────────────────────────
- // Status message -
- {move || { - if let Some(ref reason) = pause_reason { - return String::from(match reason { - PauseReason::AfterOpponentRoll => t_string!(i18n, after_opponent_roll), - PauseReason::AfterOpponentGo => t_string!(i18n, after_opponent_go), - PauseReason::AfterOpponentMove => t_string!(i18n, after_opponent_move), - }); - } - let n = staged_moves.get().len(); - if is_move_stage { - t_string!(i18n, select_move, n = n + 1) - } else { - String::from(match (&stage, is_my_turn, &turn_stage) { - (SerStage::Ended, _, _) => t_string!(i18n, game_over), - (SerStage::PreGame, _, _) => t_string!(i18n, waiting_for_opponent), - (SerStage::InGame, true, SerTurnStage::RollDice) => t_string!(i18n, your_turn_roll), - (SerStage::InGame, true, SerTurnStage::HoldOrGoChoice) => t_string!(i18n, hold_or_go), - (SerStage::InGame, true, _) => t_string!(i18n, your_turn), - (SerStage::InGame, false, _) => t_string!(i18n, opponent_turn), - }) - } - }} -
- - // Dice (always shown when rolled, used state depends on whose turn) - {show_dice.then(|| view! { -
- {move || { - let (d0, d1) = if is_move_stage { - matched_dice_used(&staged_moves.get(), dice) - } else { - (true, true) - }; - view! { - - - } - }} -
- })} - - // Scoring notifications (own then opponent) {my_scored_event.map(|event| view! { })} {opp_scored_event.map(|event| view! { })} - - // Action buttons -
- {waiting_for_confirm.then(|| view! { - - })} - // Fallback Go button when no scoring panel (e.g. after reconnect) - {show_hold_go.then(|| view! { - - })} - {move || { - // Show the empty-move button only when (0,0) is a valid - // first or second move given what has already been staged. - let staged = staged_moves.get(); - let show = is_move_stage && staged.len() < 2 && ( - valid_seqs_empty.is_empty() || match staged.len() { - 0 => valid_seqs_empty.iter().any(|(m1, _)| m1.get_from() == 0), - 1 => { - let (f0, t0) = staged[0]; - valid_seqs_empty.iter() - .filter(|(m1, _)| { - m1.get_from() as u8 == f0 - && m1.get_to() as u8 == t0 - }) - .any(|(_, m2)| m2.get_from() == 0) - } - _ => false, - } - ); - show.then(|| view! { - - }) - }} -
+ // ── Action buttons below board (§10c) ──────────────────────────── +
+ {waiting_for_confirm.then(|| view! { + + })} + // Fallback Go button when no scoring panel (e.g. after reconnect) + {show_hold_go.then(|| view! { + + })} + {move || { + // Show the empty-move button only when (0,0) is a valid + // first or second move given what has already been staged. + let staged = staged_moves.get(); + let show = is_move_stage && staged.len() < 2 && ( + valid_seqs_empty.is_empty() || match staged.len() { + 0 => valid_seqs_empty.iter().any(|(m1, _)| m1.get_from() == 0), + 1 => { + let (f0, t0) = staged[0]; + valid_seqs_empty.iter() + .filter(|(m1, _)| { + m1.get_from() as u8 == f0 + && m1.get_to() as u8 == t0 + }) + .any(|(_, m2)| m2.get_from() == 0) + } + _ => false, + } + ); + show.then(|| view! { + + }) + }} +
+ // ── Player score (below board) ──────────────────────────────────── @@ -304,6 +286,13 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView {

{t!(i18n, game_over)}

{winner_text}

+
+ {my_name_end} + + {format!("{my_holes_end} — {opp_holes_end}")} + + {opp_name_end.clone()} +
} })} + + // ── Hole toast (§6a) — board-centered overlay when a hole is won ── + {hole_toast_info.map(|(holes_total, bredouille)| view! { +
+
"Trou !"
+
{format!("{holes_total} / 12")}
+ {bredouille.then(|| view! { +
"× 2 bredouille"
+ })} +
+ })}
} } diff --git a/client_web/src/components/login_screen.rs b/client_web/src/components/login_screen.rs index 91e6d1b..689d0d7 100644 --- a/client_web/src/components/login_screen.rs +++ b/client_web/src/components/login_screen.rs @@ -17,61 +17,81 @@ pub fn LoginScreen(error: Option) -> impl IntoView { let cmd_tx_bot = cmd_tx; view! { - @@ -86,17 +86,22 @@ pub fn ScoringPanel( })}
})} - {show_hold_go.then(|| view! { -
- - -
+ {show_hold_go.then(|| { + let dismissed = RwSignal::new(false); + view! { +
+ + +
+ } })}
} From e7c0a390e35213b6d82cb7e9f09eb64f5e6b8468 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Thu, 9 Apr 2026 20:14:48 +0200 Subject: [PATCH 11/78] feat(client_web): update checkers appearance with engraved rings --- client_web/assets/style.css | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/client_web/assets/style.css b/client_web/assets/style.css index bc6d5d7..b8ddd05 100644 --- a/client_web/assets/style.css +++ b/client_web/assets/style.css @@ -876,23 +876,46 @@ body { justify-content: center; font-size: 0.78rem; font-weight: 600; - border: 2px solid var(--checker-ring); - box-shadow: - inset 0 2px 5px rgba(255,255,255,0.35), - inset 0 -1px 3px rgba(0,0,0,0.2), - 0 2px 4px rgba(0,0,0,0.35); flex-shrink: 0; } .checker + .checker { margin-top: -4px; } .checker.white { - background: radial-gradient(circle at 38% 32%, #ffffff, var(--checker-white) 65%, #d8cdb0); + background-image: + radial-gradient(ellipse 50% 35% at 36% 30%, + rgba(255,255,255,0.65) 0%, transparent 100%), + radial-gradient(circle, + transparent 68%, rgba(160,130,70,0.22) 68.5%, + rgba(160,130,70,0.22) 71.5%, transparent 72%), + radial-gradient(circle, + transparent 43%, rgba(160,130,70,0.17) 43.5%, + rgba(160,130,70,0.17) 46.5%, transparent 47%), + radial-gradient(circle at 38% 32%, + #ffffff 0%, var(--checker-white) 52%, #c0b288 100%); + border: 1.8px solid var(--checker-ring); + box-shadow: + 0 2px 6px rgba(0,0,0,0.4), + inset 0 -1px 3px rgba(0,0,0,0.15); color: #443322; } .checker.black { - background: radial-gradient(circle at 38% 32%, #444444, #1c1008 65%, var(--checker-black)); + background-image: + radial-gradient(ellipse 40% 28% at 36% 30%, + rgba(110,65,30,0.38) 0%, transparent 100%), + radial-gradient(circle, + transparent 68%, rgba(200,164,72,0.18) 68.5%, + rgba(200,164,72,0.18) 71.5%, transparent 72%), + radial-gradient(circle, + transparent 43%, rgba(200,164,72,0.13) 43.5%, + rgba(200,164,72,0.13) 46.5%, transparent 47%), + radial-gradient(circle at 38% 32%, + #4a2e1a 0%, #1c1008 45%, var(--checker-black) 100%); + border: 1.8px solid var(--checker-ring); + box-shadow: + 0 2px 6px rgba(0,0,0,0.55), + inset 0 -1px 3px rgba(0,0,0,0.4); color: #c8b898; } From 4a07c41f7ce29c39a3c5a2a8164fbfbe0b74cd5b Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Thu, 9 Apr 2026 20:17:21 +0200 Subject: [PATCH 12/78] feat(client_web): checkers slide animation --- client_web/assets/style.css | 19 ++++ client_web/src/app.rs | 28 ++++- client_web/src/components/board.rs | 130 +++++++++++++++++------ client_web/src/components/game_screen.rs | 3 + client_web/src/trictrac/types.rs | 4 + 5 files changed, 151 insertions(+), 33 deletions(-) diff --git a/client_web/assets/style.css b/client_web/assets/style.css index b8ddd05..39d7fc8 100644 --- a/client_web/assets/style.css +++ b/client_web/assets/style.css @@ -999,6 +999,25 @@ body { letter-spacing: 0.14em; } +/* ── §4a — Checker slide animation ─────────────────────────────────── */ +@keyframes checker-slide-in { + from { transform: translate(var(--slide-dx, 0px), var(--slide-dy, 0px)); } + to { transform: none; } +} +/* Only the arriving (outermost) checker animates; --slide-dx/dy are set + as inline styles on that element at render time, so no flash occurs. */ +.checker.arriving { + animation: checker-slide-in 0.28s cubic-bezier(0.25, 0.46, 0.45, 0.94); +} +/* Lift the field that owns an arriving checker above its siblings so the + checker doesn't slide under adjacent fields (isolation:isolate traps + z-index within each field's stacking context). */ +.field:has(.checker.arriving) { + isolation: auto; + z-index: 10; + position: relative; +} + /* ── Checker lift on selected field (§4b) ───────────────────────────── */ .field.selected .checker-stack { transform: translateY(-5px); diff --git a/client_web/src/app.rs b/client_web/src/app.rs index 8f98559..4ae4ad1 100644 --- a/client_web/src/app.rs +++ b/client_web/src/app.rs @@ -13,6 +13,7 @@ use crate::i18n::I18nContextProvider; use crate::trictrac::backend::TrictracBackend; use crate::trictrac::bot_local::bot_decide; use crate::trictrac::types::{GameDelta, JanEntry, PlayerAction, ScoredEvent, SerTurnStage, ViewState}; +use trictrac_store::CheckerMove; use std::collections::VecDeque; @@ -35,6 +36,8 @@ pub struct GameUiState { /// Points scored by this player in the transition to this state (if any). pub my_scored_event: Option, pub opp_scored_event: Option, + /// Checker moves to animate on this render. None when board is unchanged. + pub last_moves: Option<(CheckerMove, CheckerMove)>, } /// Reason the UI is paused waiting for the player to click Continue. @@ -272,6 +275,7 @@ pub fn App() -> impl IntoView { pause_reason: None, my_scored_event: None, opp_scored_event: None, + last_moves: compute_last_moves(&prev_vs, &vs), }, pending, screen, @@ -338,6 +342,7 @@ async fn run_local_bot_game( pause_reason: None, my_scored_event: None, opp_scored_event: None, + last_moves: None, })); loop { @@ -361,6 +366,7 @@ async fn run_local_bot_game( pause_reason: None, my_scored_event: scored, opp_scored_event: opp_scored, + last_moves: compute_last_moves(&prev_vs, &vs), })); } Some(NetCommand::PlayVsBot) => return true, @@ -389,6 +395,7 @@ async fn run_local_bot_game( pause_reason: None, my_scored_event: None, opp_scored_event: None, + last_moves: compute_last_moves(&prev_vs, &vs), }, pending, screen, @@ -399,6 +406,22 @@ async fn run_local_bot_game( } } +/// Returns the checker moves to animate when the board changed between two ViewStates. +/// Returns `None` when the board is unchanged or no real moves were recorded. +fn compute_last_moves(prev: &ViewState, next: &ViewState) -> Option<(CheckerMove, CheckerMove)> { + if prev.board == next.board { + return None; + } + let (m1, m2) = next.dice_moves; + if m1 == CheckerMove::default() && m2 == CheckerMove::default() { + // Relies on the engine invariant: dice_moves is updated atomically with the board + // change in the Move event handler. Any future engine path that mutates the board + // without setting dice_moves would bypass this guard and replay stale animation. + return None; + } + Some((m1, m2)) +} + /// Computes a scoring event for `player_id` by comparing the previous and next /// ViewState. Returns `None` when no points changed for that player. fn compute_scored_event(prev: &ViewState, next: &ViewState, player_id: u16) -> Option { @@ -471,7 +494,9 @@ fn push_or_show( ..new_state.clone() }); }); - screen.set(Screen::Playing(new_state)); + // Animation belongs to the buffered confirmation step; clear it on the + // fallback live state so it doesn't fire again after the queue drains. + screen.set(Screen::Playing(GameUiState { last_moves: None, ..new_state })); } else { // No pause: show scoring directly on the live state. screen.set(Screen::Playing(GameUiState { @@ -528,6 +553,7 @@ mod tests { scores: [score(), score()], dice, dice_jans: Vec::new(), + dice_moves: (CheckerMove::default(), CheckerMove::default()), } } diff --git a/client_web/src/components/board.rs b/client_web/src/components/board.rs index bd61102..e9d1308 100644 --- a/client_web/src/components/board.rs +++ b/client_web/src/components/board.rs @@ -1,8 +1,8 @@ use leptos::prelude::*; use trictrac_store::CheckerMove; -use crate::trictrac::types::{SerTurnStage, ViewState}; use super::die::Die; +use crate::trictrac::types::{SerTurnStage, ViewState}; /// Field numbers in visual display order (left-to-right for each quarter), white's perspective. const TOP_LEFT_W: [u8; 6] = [13, 14, 15, 16, 17, 18]; @@ -20,17 +20,21 @@ const BOT_RIGHT_B: [u8; 6] = [18, 17, 16, 15, 14, 13]; /// Returns true when `field_num` is the rest corner for this perspective. #[allow(dead_code)] fn is_rest_corner(field_num: u8, is_white: bool) -> bool { - if is_white { field_num == 12 } else { field_num == 13 } + if is_white { + field_num == 12 + } else { + field_num == 13 + } } /// Zone CSS class for a field number (field coordinates are always White's 1-24). fn field_zone_class(field_num: u8) -> &'static str { match field_num { - 1..=6 => "zone-petit", - 7..=12 => "zone-grand", + 1..=6 => "zone-petit", + 7..=12 => "zone-grand", 13..=18 => "zone-retour", 19..=24 => "zone-dernier", - _ => "", + _ => "", } } @@ -39,11 +43,20 @@ fn bar_matched_dice_used(staged: &[(u8, u8)], dice: (u8, u8)) -> (bool, bool) { let mut d0 = false; let mut d1 = false; for &(from, to) in staged { - let dist = if from < to { to.saturating_sub(from) } else { from.saturating_sub(to) }; - if !d0 && dist == dice.0 { d0 = true; } - else if !d1 && dist == dice.1 { d1 = true; } - else if !d0 { d0 = true; } - else { d1 = true; } + let dist = if from < to { + to.saturating_sub(from) + } else { + from.saturating_sub(to) + }; + if !d0 && dist == dice.0 { + d0 = true; + } else if !d1 && dist == dice.1 { + d1 = true; + } else if !d0 { + d0 = true; + } else { + d1 = true; + } } (d0, d1) } @@ -72,7 +85,8 @@ fn displayed_value( /// Fields whose checkers may be selected as the next origin given already-staged moves. fn valid_origins_for(seqs: &[(CheckerMove, CheckerMove)], staged: &[(u8, u8)]) -> Vec { let mut v: Vec = match staged.len() { - 0 => seqs.iter() + 0 => seqs + .iter() .map(|(m1, _)| m1.get_from() as u8) .filter(|&f| f != 0) .collect(), @@ -103,28 +117,33 @@ fn field_center(f: usize, is_white: bool) -> Option<(f32, f32)> { match f { 13..=18 => (f - 13, false, true), 19..=24 => (f - 19, true, true), - 7..=12 => (12 - f, false, false), - 1..=6 => (6 - f, true, false), - _ => return None, + 7..=12 => (12 - f, false, false), + 1..=6 => (6 - f, true, false), + _ => return None, } } else { match f { - 1..=6 => (f - 1, false, true), - 7..=12 => (f - 7, true, true), + 1..=6 => (f - 1, false, true), + 7..=12 => (f - 7, true, true), 19..=24 => (24 - f, false, false), 13..=18 => (18 - f, true, false), - _ => return None, + _ => return None, } }; // Left-quarter field i center x: 4(pad) + i*62 + 30(half field) = 34 + 62i // Right-quarter: 4 + 370(quarter) + 4(gap) + 68(bar) + 4(gap) + i*62 + 30 = 480 + 62i - let x = if right { 480.0 + qi as f32 * 62.0 } else { 34.0 + qi as f32 * 62.0 }; + let x = if right { + 480.0 + qi as f32 * 62.0 + } else { + 34.0 + qi as f32 * 62.0 + }; // Top row triangle base (wide end) ≈ y=30; bot row triangle base ≈ y=358. // (Top base: 4pad + 4field-pad + 20half-checker ≈ 28; Bot base: 388 − 4pad − 4field-pad − 20 ≈ 360) let y = if top { 30.0 } else { 358.0 }; Some((x, y)) } + /// SVG `` element drawing one arrow (shadow + gold) from `fp` to `tp`. fn arrow_svg(fp: (f32, f32), tp: (f32, f32)) -> AnyView { let (x1, y1) = fp; @@ -153,15 +172,21 @@ fn arrow_svg(fp: (f32, f32), tp: (f32, f32)) -> AnyView { let bary = y2 - ny * ah; let pts = format!( "{:.1},{:.1} {:.1},{:.1} {:.1},{:.1}", - x2, y2, - bx + px * aw, bary + py * aw, - bx - px * aw, bary - py * aw, + x2, + y2, + bx + px * aw, + bary + py * aw, + bx - px * aw, + bary - py * aw, ); let shadow_pts = format!( "{:.1},{:.1} {:.1},{:.1} {:.1},{:.1}", - x2, y2, - bx + px * (aw + 1.5), bary + py * (aw + 1.5), - bx - px * (aw + 1.5), bary - py * (aw + 1.5), + x2, + y2, + bx + px * (aw + 1.5), + bary + py * (aw + 1.5), + bx - px * (aw + 1.5), + bary - py * (aw + 1.5), ); view! { @@ -187,9 +212,14 @@ fn arrow_svg(fp: (f32, f32), tp: (f32, f32)) -> AnyView { /// Valid destinations for a selected origin given already-staged moves. /// May include 0 (exit); callers handle that case. -fn valid_dests_for(seqs: &[(CheckerMove, CheckerMove)], staged: &[(u8, u8)], origin: u8) -> Vec { +fn valid_dests_for( + seqs: &[(CheckerMove, CheckerMove)], + staged: &[(u8, u8)], + origin: u8, +) -> Vec { let mut v: Vec = match staged.len() { - 0 => seqs.iter() + 0 => seqs + .iter() .filter(|(m1, _)| m1.get_from() as u8 == origin) .map(|(m1, _)| m1.get_to() as u8) .collect(), @@ -222,11 +252,17 @@ pub fn Board( /// All valid two-move sequences for this turn (empty when not in move stage). valid_sequences: Vec<(CheckerMove, CheckerMove)>, /// Dice to display in the center bars; None means dice not yet rolled (cups shown upright). - #[prop(default = None)] bar_dice: Option<(u8, u8)>, + #[prop(default = None)] + bar_dice: Option<(u8, u8)>, /// Whether we're in the move stage (determines used/unused die appearance). - #[prop(default = false)] bar_is_move: bool, + #[prop(default = false)] + bar_is_move: bool, /// Whether the dice are a double (golden glow). - #[prop(default = false)] bar_is_double: bool, + #[prop(default = false)] + bar_is_double: bool, + /// Checker moves to animate on mount (None when board unchanged). + #[prop(default = None)] + last_moves: Option<(CheckerMove, CheckerMove)>, ) -> impl IntoView { let board = view_state.board; let is_move_stage = view_state.active_mp_player == Some(player_id) @@ -245,12 +281,12 @@ pub fn Board( let exit_field_test: fn(u8) -> bool; if is_white { let in_exit: i8 = board_snapshot[18..24].iter().map(|&v| v.max(0)).sum(); - let total: i8 = board_snapshot.iter().map(|&v| v.max(0)).sum(); + let total: i8 = board_snapshot.iter().map(|&v| v.max(0)).sum(); all_in_exit = total > 0 && in_exit == total; exit_field_test = |f| matches!(f, 19..=24); } else { let in_exit: i8 = board_snapshot[0..6].iter().map(|&v| (-v).max(0)).sum(); - let total: i8 = board_snapshot.iter().map(|&v| (-v).max(0)).sum(); + let total: i8 = board_snapshot.iter().map(|&v| (-v).max(0)).sum(); all_in_exit = total > 0 && in_exit == total; exit_field_test = |f| matches!(f, 1..=6); } @@ -268,8 +304,23 @@ pub fn Board( } else { None }; + // §4a — slide delta for the arriving checker at this field. + // Computed once per field at render time; Option<(f32,f32)> is Copy. + let slide_delta: Option<(f32, f32)> = last_moves.and_then(|(m1, m2)| { + [m1, m2].iter().find_map(|m| { + if m.get_to() != field_num as usize || m.get_from() == m.get_to() { + return None; + } + let (fx, fy) = field_center(m.get_from(), is_white)?; + let (tx, ty) = field_center(m.get_to(), is_white)?; + let dx = fx - tx; + let dy = fy - ty; + (dx.abs() >= 1.0 || dy.abs() >= 1.0).then_some((dx, dy)) + }) + }); view! {
{label}
+ }.into_any(); + } + } view! {
{label}
}.into_any() @@ -402,7 +463,11 @@ pub fn Board( match bar_dice { None => view! {
}.into_any(), Some(dice_vals) => { - let die_val = if die_idx == 0 { dice_vals.0 } else { dice_vals.1 }; + let die_val = if die_idx == 0 { + dice_vals.0 + } else { + dice_vals.1 + }; view! {
{move || { @@ -422,6 +487,7 @@ pub fn Board( } }; + let (tl, tr, bl, br) = if is_white { (&TOP_LEFT_W, &TOP_RIGHT_W, &BOT_LEFT_W, &BOT_RIGHT_W) } else { diff --git a/client_web/src/components/game_screen.rs b/client_web/src/components/game_screen.rs index 6657d94..f5c08b8 100644 --- a/client_web/src/components/game_screen.rs +++ b/client_web/src/components/game_screen.rs @@ -119,6 +119,8 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { let is_double_dice = dice.0 == dice.1 && dice.0 != 0; + let last_moves = state.last_moves; + // ── Capture for closures ─────────────────────────────────────────────────── let stage = vs.stage.clone(); let turn_stage = vs.turn_stage.clone(); @@ -214,6 +216,7 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { bar_dice=show_dice.then_some(dice) bar_is_move=is_move_stage bar_is_double=is_double_dice + last_moves=last_moves /> // ── Side panel (scoring panels only) ───────────────────────── diff --git a/client_web/src/trictrac/types.rs b/client_web/src/trictrac/types.rs index 2c5cdd2..82f9a2d 100644 --- a/client_web/src/trictrac/types.rs +++ b/client_web/src/trictrac/types.rs @@ -41,6 +41,8 @@ pub struct ViewState { pub dice: (u8, u8), /// Jans (scoring events) triggered by the last dice roll. pub dice_jans: Vec, + /// Last two checker moves played; default when no move has occurred yet. + pub dice_moves: (CheckerMove, CheckerMove), } /// One scoring event from a dice roll. @@ -73,6 +75,7 @@ impl ViewState { ], dice: (0, 0), dice_jans: Vec::new(), + dice_moves: (CheckerMove::default(), CheckerMove::default()), } } @@ -166,6 +169,7 @@ impl ViewState { scores: [score_for(host_store_id), score_for(guest_store_id)], dice: (gs.dice.values.0, gs.dice.values.1), dice_jans, + dice_moves: gs.dice_moves, } } } From c0409d6121e02692091e4e3dfe85f79e4271f25a Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Fri, 10 Apr 2026 19:37:31 +0200 Subject: [PATCH 13/78] feat(client_web): hit animations --- client_web/assets/style.css | 23 +++++++++++++++ client_web/src/components/board.rs | 34 ++++++++++++++++++++-- client_web/src/components/game_screen.rs | 36 +++++++++++++++++++++++- 3 files changed, 89 insertions(+), 4 deletions(-) diff --git a/client_web/assets/style.css b/client_web/assets/style.css index 39d7fc8..5edde6e 100644 --- a/client_web/assets/style.css +++ b/client_web/assets/style.css @@ -827,6 +827,29 @@ body { animation: exit-glow 2s ease-in-out infinite; } +/* ── §6c — Jan hover field highlight ────────────────────────────────── */ +.field.jan-hovered { + --fc: rgba(190, 140, 35, 0.8) !important; +} + +/* ── §6e — Hit (battue) ripple ──────────────────────────────────────── */ +@keyframes hit-ripple { + from { transform: translate(-50%, -50%) scale(0.4); opacity: 0.9; } + to { transform: translate(-50%, -50%) scale(2.2); opacity: 0; } +} +.hit-ripple { + position: absolute; + left: 50%; + width: 36px; + height: 36px; + border-radius: 50%; + border: 2px solid rgba(200, 164, 72, 0.9); + pointer-events: none; + animation: hit-ripple 0.5s ease-out forwards; +} +.hit-ripple-top { top: 26px; } +.hit-ripple-bot { bottom: 26px; } + /* ── Interactive states — after .corner to take visual priority ─────── */ .field.clickable { cursor: pointer; diff --git a/client_web/src/components/board.rs b/client_web/src/components/board.rs index e9d1308..5a82b13 100644 --- a/client_web/src/components/board.rs +++ b/client_web/src/components/board.rs @@ -263,6 +263,9 @@ pub fn Board( /// Checker moves to animate on mount (None when board unchanged). #[prop(default = None)] last_moves: Option<(CheckerMove, CheckerMove)>, + /// Fields where a hit (battue) was scored this turn — show ripple animation. + #[prop(default = vec![])] + hit_fields: Vec, ) -> impl IntoView { let board = view_state.board; let is_move_stage = view_state.active_mp_player == Some(player_id) @@ -318,6 +321,8 @@ pub fn Board( (dx.abs() >= 1.0 || dy.abs() >= 1.0).then_some((dx, dy)) }) }); + // §6e — ripple on hit fields (battue). + let is_hit_field = hit_fields.contains(&field_num); view! {
0).then(|| { + // §6e — ripple on hit (battue) fields; must be inside the + // reactive closure so Leptos uses the same direct rendering + // path as .arriving (avoids node-move that resets animation). + let ripple = is_hit_field.then(|| { + let cls = if is_top_row { "hit-ripple hit-ripple-top" } else { "hit-ripple hit-ripple-bot" }; + view! {
}.into_any() + }); + let stack = (count > 0).then(|| { let color = if val > 0 { "white" } else { "black" }; let display_n = (count as usize).min(4); // outermost index: last for top rows, first for bottom rows. @@ -448,8 +475,9 @@ pub fn Board(
{label}
}.into_any() }).collect(); - view! {
{chips}
} - }) + view! {
{chips}
}.into_any() + }); + (ripple, stack) }}
} diff --git a/client_web/src/components/game_screen.rs b/client_web/src/components/game_screen.rs index f5c08b8..2fa14c3 100644 --- a/client_web/src/components/game_screen.rs +++ b/client_web/src/components/game_screen.rs @@ -2,7 +2,7 @@ use std::collections::VecDeque; use futures::channel::mpsc::UnboundedSender; use leptos::prelude::*; -use trictrac_store::{Board as StoreBoard, CheckerMove, Color, Dice as StoreDice, MoveRules}; +use trictrac_store::{Board as StoreBoard, CheckerMove, Color, Dice as StoreDice, Jan, MoveRules}; use crate::app::{GameUiState, NetCommand, PauseReason}; use crate::i18n::*; @@ -121,6 +121,39 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { let last_moves = state.last_moves; + // §6e — fields where a battue (hit) was scored; ripple animation shown there. + let hit_fields: Vec = { + let is_hit_jan = |jan: &Jan| matches!( + jan, + Jan::TrueHitSmallJan + | Jan::TrueHitBigJan + | Jan::TrueHitOpponentCorner + | Jan::FalseHitSmallJan + | Jan::FalseHitBigJan + ); + let mut fields: Vec = vec![]; + for event_opt in [&my_scored_event, &opp_scored_event] { + if let Some(event) = event_opt { + for entry in &event.jans { + if is_hit_jan(&entry.jan) { + for (m1, m2) in &entry.moves { + for m in [m1, m2] { + let to = m.get_to() as u8; + if to != 0 && !fields.contains(&to) { + fields.push(to); + } + } + } + } + } + } + } + if !fields.is_empty() { + leptos::logging::log!("[6e] hit_fields = {:?}", fields); + } + fields + }; + // ── Capture for closures ─────────────────────────────────────────────────── let stage = vs.stage.clone(); let turn_stage = vs.turn_stage.clone(); @@ -217,6 +250,7 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { bar_is_move=is_move_stage bar_is_double=is_double_dice last_moves=last_moves + hit_fields=hit_fields /> // ── Side panel (scoring panels only) ───────────────────────── From 874a302524053223f312222afc07d94d30a7d879 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Fri, 10 Apr 2026 20:25:49 +0200 Subject: [PATCH 14/78] fix(client_web): "jan de retour" location --- client_web/assets/style.css | 12 +-- client_web/src/components/board.rs | 10 +-- doc/client_web_design_proposals.md | 2 +- doc/refs/vocabulary.md | 127 ++++++++++++++--------------- 4 files changed, 74 insertions(+), 77 deletions(-) diff --git a/client_web/assets/style.css b/client_web/assets/style.css index 5edde6e..ddc024e 100644 --- a/client_web/assets/style.css +++ b/client_web/assets/style.css @@ -785,13 +785,13 @@ body { .board-quarter .field.zone-petit:nth-child(even), .board-quarter .field.zone-grand:nth-child(even) { --fc: var(--field-ivory); } -/* Jan de retour — cooler: dark teal / silvery-green ivory */ -.board-quarter .field.zone-retour:nth-child(odd) { --fc: #1e3d32; } -.board-quarter .field.zone-retour:nth-child(even) { --fc: #e5eadc; } +/* Opponent's grand-jan — cooler: dark teal / silvery-green ivory */ +.board-quarter .field.zone-opponent:nth-child(odd) { --fc: #1e3d32; } +.board-quarter .field.zone-opponent:nth-child(even) { --fc: #e5eadc; } -/* Dernier jan — warmer: amber-brown / warm amber ivory */ -.board-quarter .field.zone-dernier:nth-child(odd) { --fc: #6a2810; } -.board-quarter .field.zone-dernier:nth-child(even) { --fc: #f2dfa0; } +/* Jan de retour — warmer: amber-brown / warm amber ivory */ +.board-quarter .field.zone-retour:nth-child(odd) { --fc: #6a2810; } +.board-quarter .field.zone-retour:nth-child(even) { --fc: #f2dfa0; } /* ── Rest corner (§3) — before .clickable so green wins when interactive ── */ .field.corner { --fc: var(--field-corner) !important; } diff --git a/client_web/src/components/board.rs b/client_web/src/components/board.rs index 5a82b13..9ab94ae 100644 --- a/client_web/src/components/board.rs +++ b/client_web/src/components/board.rs @@ -32,8 +32,8 @@ fn field_zone_class(field_num: u8) -> &'static str { match field_num { 1..=6 => "zone-petit", 7..=12 => "zone-grand", - 13..=18 => "zone-retour", - 19..=24 => "zone-dernier", + 13..=18 => "zone-opponent", + 19..=24 => "zone-retour", _ => "", } } @@ -143,7 +143,6 @@ fn field_center(f: usize, is_white: bool) -> Option<(f32, f32)> { Some((x, y)) } - /// SVG `` element drawing one arrow (shadow + gold) from `fp` to `tp`. fn arrow_svg(fp: (f32, f32), tp: (f32, f32)) -> AnyView { let (x1, y1) = fp; @@ -515,7 +514,6 @@ pub fn Board( } }; - let (tl, tr, bl, br) = if is_white { (&TOP_LEFT_W, &TOP_RIGHT_W, &BOT_LEFT_W, &BOT_RIGHT_W) } else { @@ -524,9 +522,9 @@ pub fn Board( // Zone label pairs (top-left, top-right, bot-left, bot-right) per perspective. let (label_tl, label_tr, label_bl, label_br) = if is_white { - ("jan de retour", "dernier jan", "grand jan", "petit jan") + ("", "jan de retour", "grand jan", "petit jan") } else { - ("petit jan", "grand jan", "dernier jan", "jan de retour") + ("petit jan", "grand jan", "jan de retour", "") }; view! { diff --git a/doc/client_web_design_proposals.md b/doc/client_web_design_proposals.md index c0237ca..598e9c5 100644 --- a/doc/client_web_design_proposals.md +++ b/doc/client_web_design_proposals.md @@ -37,7 +37,7 @@ The board body between triangles becomes visible as the wood/felt surface — th **Proposals**: ### 2a. Zone labels -Add thin labels (`"petit jan"`, `"grand jan"`, `"jan de retour"`, `"dernier jan"`) beneath the board-row (or as a subtle strip above/below the quarter). These should use the serif font at very small size and low opacity — decorative, not noisy. +Add thin labels (`"petit jan"`, `"grand jan"`, `"jan de retour"`) beneath the board-row (or as a subtle strip above/below the quarter). These should use the serif font at very small size and low opacity — decorative, not noisy. ### 2b. Field color shift per zone The physical game uses alternating colors within each quarter, but different quarters can use slightly different base hues: diff --git a/doc/refs/vocabulary.md b/doc/refs/vocabulary.md index 4ab3bb3..b4929b4 100644 --- a/doc/refs/vocabulary.md +++ b/doc/refs/vocabulary.md @@ -2,67 +2,66 @@ This table maps the French game terminology to the English terms used in this codebase (primarily the `store` crate). Where a code identifier exists, it is shown in `monospace`. -| French | English (code) | Notes | -|---|---|---| -| tablier | board | `Board` | -| case / flèche | field | `Field` (1–24, 0 = exit); "flèche" (arrow) and "case" both refer to a field/point | -| demi-case | half-field | A field occupied by exactly one checker | -| dame | checker | `Checker`; a playing piece | -| talon | stack | The starting pile of 15 checkers before they are deployed | -| coin de repos / coin | rest corner / corner | `corner`; field 12 (White) or 13 (Black) | -| bande de départ | starting rail | The side rail where stacks start; holds the pegs and flag | -| bande de sortie | exit rail | Same rail, used as an extra field value during exit | -| petit jan | small jan | Fields 1–6; `is_field_in_small_jan` | -| grand jan | big jan | Fields 7–12 (White's side, opponent's near zone) | -| jan de retour | return jan | Fields 13–18; same fields as opponent's small jan | -| dernier jan / jan de retour | last jan / last quarter | Fields 19–24; where checkers gather before exiting; `last quarter` | -| table des petits jans | small jan table | The board half containing both players' small jans (fields 1–12) | -| table des grands jans | big jan table | The board half containing both players' big jans (fields 13–24) | -| plein (d'un jan) | filled (jan) | All 6 fields of a jan hold ≥ 2 checkers | -| remplir | fill | Scoring event: completing the fill of a jan; `FilledQuarter` | -| conserver | conserve | Scoring event: maintaining a filled jan without breaking it; `FilledQuarter` | -| jan de récompense — battre à vrai | true hit | `TrueHitSmallJan`, `TrueHitBigJan`, `TrueHitOpponentCorner` | -| jan de récompense — battre à faux | false hit | `FalseHitSmallJan`, `FalseHitBigJan` | -| batterie du coin | corner hit | `TrueHitOpponentCorner`; hitting the opponent's empty rest corner | -| jan-qui-ne-peut / impuissance | helpless man | `HelplessMan`; a die value that cannot be played (penalty for opponent) | -| jan de deux tables | two tables jan | `TwoTables` | -| contre-jan de deux tables | contre two tables | `ContreTwoTables` | -| jan de mézéas | mezeas jan | `Mezeas` | -| contre-jan de mézéas | contre mezeas | `ContreMezeas` | -| jan de six tables / jan de trois coups | six tables jan | `SixTables`; also called "three-roll jan" | -| sortie (première) | first player to exit | `FirstPlayerToExit` | -| sortie (nombre sortant) | exit (exact exit) | Moving a checker off the board with an exact die value | -| nombre excédant | overflow number | Die value exceeding the checker's distance to the exit rail | -| nombre défaillant | failing number | A die value that cannot be played within the jan | -| tout d'une | chained move | `chained move`; one checker playing both dice successively | -| repos (case de repos) | rest (resting field) | An intermediate field where a checker pauses in a chained move | -| doublet | double | `is_double`; both dice show the same value | -| dé / dés | die / dice | `Dice` | -| cornet | dice cup | — | -| par puissance | by puissance | `is_move_by_puissance`; taking own corner using opponent's empty corner as virtual step | -| par effet | by effect | `can_take_corner_by_effect`; taking own corner by normal die values | -| d'emblée | simultaneously | Two checkers entering (or leaving) the corner at the same time | -| dédoubler | unstack corner | Using one of the two corner-holding checkers (forbidden for corner exits) | -| trou / jeu | hole | `holes`; 12 points = 1 hole; the primary scoring unit | -| fichet | peg | Physical marker tracking holes won along the board edge | -| jeton | token | Physical marker tracking points within a game (0–12) | -| pavillon | flag | The bredouille marker taken by the second player to score | -| bredouille | bredouille | `can_bredouille`; winning a hole while opponent scored nothing | -| petite bredouille | small bredouille | Winning a round (marqué) with ≥ 6 consecutive holes | -| grande bredouille | big bredouille | `can_big_bredouille`; winning a round with ≥ 12 consecutive holes | -| relevé | new setting | Resetting checkers to their stacks after a hole or exit | -| primauté | first-move privilege | The right to roll first, held by the player who exited or left first | -| s'en aller | leave / go | `Go` event; choosing to start a new setting after winning a hole | -| tenir | stay / hold | Choosing to continue after winning a hole instead of leaving | -| marqué | round | A scoring round in the "partie à écrire" | -| partie ordinaire | ordinary game | First to 12 holes wins | -| partie à écrire | scored game | Multi-round game played for tokens | -| à la chouette | chouette | Three- or four-player format | -| refait | replay | A drawn round (equal holes) that must be replayed | -| consolation | consolation | Bonus tokens paid to the winner and, in 3-player games, the non-playing player | -| postillon | postillon | The first "double bet" in final payment settlement | -| école | school | `schools`; a penalty for a marking error; opponent scores the missed points | -| fausse case | false move | Playing a checker to the wrong field | -| fausse école | false school | Incorrectly claiming or marking a school penalty | -| augmentation d'école | school escalation | Back-and-forth dispute over a school penalty | -| pile de misère | misery pile | A special scoring configuration (not yet implemented in the codebase) | +| French | English (code) | Notes | +| -------------------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------- | +| tablier | board | `Board` | +| case / flèche | field | `Field` (1–24, 0 = exit); "flèche" (arrow) and "case" both refer to a field/point | +| demi-case | half-field | A field occupied by exactly one checker | +| dame | checker | `Checker`; a playing piece | +| talon | stack | The starting pile of 15 checkers before they are deployed | +| coin de repos / coin | rest corner / corner | `corner`; field 12 (White) or 13 (Black) | +| bande de départ | starting rail | The side rail where stacks start; holds the pegs and flag | +| bande de sortie | exit rail | Same rail, used as an extra field value during exit | +| petit jan | small jan | Fields 1–6; `is_field_in_small_jan` | +| grand jan | big jan | Fields 7–12 (White's side, opponent's near zone) | +| jan de retour | return jan | Fields 19–24; same fields as opponent's small jan ; where checkers gather before exiting; `last quarter` | +| table des petits jans | small jan table | The board half containing both players' small jans (fields 1–12) | +| table des grands jans | big jan table | The board half containing both players' big jans (fields 13–24) | +| plein (d'un jan) | filled (jan) | All 6 fields of a jan hold ≥ 2 checkers | +| remplir | fill | Scoring event: completing the fill of a jan; `FilledQuarter` | +| conserver | conserve | Scoring event: maintaining a filled jan without breaking it; `FilledQuarter` | +| jan de récompense — battre à vrai | true hit | `TrueHitSmallJan`, `TrueHitBigJan`, `TrueHitOpponentCorner` | +| jan de récompense — battre à faux | false hit | `FalseHitSmallJan`, `FalseHitBigJan` | +| batterie du coin | corner hit | `TrueHitOpponentCorner`; hitting the opponent's empty rest corner | +| jan-qui-ne-peut / impuissance | helpless man | `HelplessMan`; a die value that cannot be played (penalty for opponent) | +| jan de deux tables | two tables jan | `TwoTables` | +| contre-jan de deux tables | contre two tables | `ContreTwoTables` | +| jan de mézéas | mezeas jan | `Mezeas` | +| contre-jan de mézéas | contre mezeas | `ContreMezeas` | +| jan de six tables / jan de trois coups | six tables jan | `SixTables`; also called "three-roll jan" | +| sortie (première) | first player to exit | `FirstPlayerToExit` | +| sortie (nombre sortant) | exit (exact exit) | Moving a checker off the board with an exact die value | +| nombre excédant | overflow number | Die value exceeding the checker's distance to the exit rail | +| nombre défaillant | failing number | A die value that cannot be played within the jan | +| tout d'une | chained move | `chained move`; one checker playing both dice successively | +| repos (case de repos) | rest (resting field) | An intermediate field where a checker pauses in a chained move | +| doublet | double | `is_double`; both dice show the same value | +| dé / dés | die / dice | `Dice` | +| cornet | dice cup | — | +| par puissance | by puissance | `is_move_by_puissance`; taking own corner using opponent's empty corner as virtual step | +| par effet | by effect | `can_take_corner_by_effect`; taking own corner by normal die values | +| d'emblée | simultaneously | Two checkers entering (or leaving) the corner at the same time | +| dédoubler | unstack corner | Using one of the two corner-holding checkers (forbidden for corner exits) | +| trou / jeu | hole | `holes`; 12 points = 1 hole; the primary scoring unit | +| fichet | peg | Physical marker tracking holes won along the board edge | +| jeton | token | Physical marker tracking points within a game (0–12) | +| pavillon | flag | The bredouille marker taken by the second player to score | +| bredouille | bredouille | `can_bredouille`; winning a hole while opponent scored nothing | +| petite bredouille | small bredouille | Winning a round (marqué) with ≥ 6 consecutive holes | +| grande bredouille | big bredouille | `can_big_bredouille`; winning a round with ≥ 12 consecutive holes | +| relevé | new setting | Resetting checkers to their stacks after a hole or exit | +| primauté | first-move privilege | The right to roll first, held by the player who exited or left first | +| s'en aller | leave / go | `Go` event; choosing to start a new setting after winning a hole | +| tenir | stay / hold | Choosing to continue after winning a hole instead of leaving | +| marqué | round | A scoring round in the "partie à écrire" | +| partie ordinaire | ordinary game | First to 12 holes wins | +| partie à écrire | scored game | Multi-round game played for tokens | +| à la chouette | chouette | Three- or four-player format | +| refait | replay | A drawn round (equal holes) that must be replayed | +| consolation | consolation | Bonus tokens paid to the winner and, in 3-player games, the non-playing player | +| postillon | postillon | The first "double bet" in final payment settlement | +| école | school | `schools`; a penalty for a marking error; opponent scores the missed points | +| fausse case | false move | Playing a checker to the wrong field | +| fausse école | false school | Incorrectly claiming or marking a school penalty | +| augmentation d'école | school escalation | Back-and-forth dispute over a school penalty | +| pile de misère | misery pile | A special scoring configuration (not yet implemented in the codebase) | From 4550b1d66a1ea4e02b2d594ebc317f88007d02e0 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Fri, 10 Apr 2026 21:07:59 +0200 Subject: [PATCH 15/78] =?UTF-8?q?fix(client=5Fweb):=E2=80=AFcenter=20board?= =?UTF-8?q?=20and=20points=20panels?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client_web/assets/style.css | 53 +++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/client_web/assets/style.css b/client_web/assets/style.css index ddc024e..655bb1f 100644 --- a/client_web/assets/style.css +++ b/client_web/assets/style.css @@ -249,12 +249,15 @@ body { } /* ── Game container ─────────────────────────────────────────────────── */ +/* No width: 100% — let it size to content (the board wrapper, ~832px). + This keeps the board pinned at the same horizontal position whether or + not the side panel is visible, and aligns the status bar / score panels + with the board rather than with the viewport edge. */ .game-container { display: flex; flex-direction: column; align-items: center; gap: 0.6rem; - width: 100%; } /* ── Language switcher (in-game) ────────────────────────────────────── */ @@ -325,17 +328,25 @@ body { } /* ── Player score panel ─────────────────────────────────────────────── */ +/* Horizontal banner: name on the left, score bars expanding to fill the + board width — no more empty right half on large screens. */ .player-score-panel { background: var(--ui-parchment); border-radius: 5px; - padding: 0.45rem 1rem; + padding: 0.45rem 1.25rem; font-size: 0.88rem; box-shadow: 0 2px 6px rgba(0,0,0,0.25); width: 100%; border-top: 2px solid var(--ui-gold-dark); + display: flex; + align-items: center; + gap: 1.5rem; } -.player-score-header { margin-bottom: 0.35rem; } +.player-score-header { + flex-shrink: 0; + min-width: 90px; +} .player-name { font-family: var(--font-display); @@ -345,25 +356,28 @@ body { letter-spacing: 0.02em; } -.score-bars { display: flex; flex-direction: column; gap: 5px; } +/* Bars sit side-by-side (points | holes) filling remaining width */ +.score-bars { display: flex; flex-direction: row; gap: 1.5rem; flex: 1; align-items: center; } .score-bar-row { display: flex; align-items: center; gap: 0.5rem; + flex: 1; } .score-bar-label { font-size: 0.75rem; color: #665544; - width: 3.5rem; + width: 3rem; text-align: right; flex-shrink: 0; } /* ── Points bar ─────────────────────────────────────────────────────── */ .score-bar { - width: 140px; + flex: 1; + max-width: 220px; height: 8px; background: rgba(0,0,0,0.1); border-radius: 4px; @@ -424,18 +438,21 @@ body { } /* ── Board + side panel ─────────────────────────────────────────────── */ +/* .board-and-panel is sized to the board wrapper only; the side panel is + positioned absolutely so it floats to the right without pushing the + board and breaking its horizontal alignment. */ .board-and-panel { - display: flex; - flex-direction: row; - align-items: flex-start; - gap: 1rem; + position: relative; } .side-panel { + position: absolute; + left: calc(100% + 1rem); + top: 0; display: flex; flex-direction: column; gap: 0.65rem; - min-width: 160px; + width: 200px; padding-top: 0.15rem; } @@ -785,8 +802,10 @@ body { .board-quarter .field.zone-petit:nth-child(even), .board-quarter .field.zone-grand:nth-child(even) { --fc: var(--field-ivory); } -/* Opponent's grand-jan — cooler: dark teal / silvery-green ivory */ -.board-quarter .field.zone-opponent:nth-child(odd) { --fc: #1e3d32; } +/* Opponent's grand-jan — deep slate-blue / silvery-green ivory. + Previously #1e3d32 was nearly identical to the felt (#1d3d28); now using + a clearly distinguishable cool blue that reads well against the green. */ +.board-quarter .field.zone-opponent:nth-child(odd) { --fc: #1a4f72; } .board-quarter .field.zone-opponent:nth-child(even) { --fc: #e5eadc; } /* Jan de retour — warmer: amber-brown / warm amber ivory */ @@ -872,10 +891,10 @@ body { font-variant-numeric: tabular-nums; } -.board-quarter .field.zone-petit:nth-child(odd) .field-num, -.board-quarter .field.zone-grand:nth-child(odd) .field-num, -.board-quarter .field.zone-retour:nth-child(odd) .field-num, -.board-quarter .field.zone-dernier:nth-child(odd) .field-num { +.board-quarter .field.zone-petit:nth-child(odd) .field-num, +.board-quarter .field.zone-grand:nth-child(odd) .field-num, +.board-quarter .field.zone-retour:nth-child(odd) .field-num, +.board-quarter .field.zone-opponent:nth-child(odd) .field-num { color: rgba(240,215,190,0.38); } From 72c5e16ea333bc5a2821249277de6a5d7eacda69 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sat, 11 Apr 2026 14:36:15 +0200 Subject: [PATCH 16/78] feat(client_web): slide dice jans right panel --- Cargo.lock | 1 + client_web/Cargo.toml | 1 + client_web/assets/style.css | 76 ++++++++++-- client_web/src/components/scoring.rs | 174 ++++++++++++++++++++------- 4 files changed, 197 insertions(+), 55 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b19ee85..265469e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1397,6 +1397,7 @@ dependencies = [ "futures", "getrandom 0.3.4", "gloo-storage", + "gloo-timers", "leptos", "leptos_i18n", "rand 0.9.2", diff --git a/client_web/Cargo.toml b/client_web/Cargo.toml index 3e648ea..f7b3957 100644 --- a/client_web/Cargo.toml +++ b/client_web/Cargo.toml @@ -20,6 +20,7 @@ gloo-storage = "0.3" [target.'cfg(target_arch = "wasm32")'.dependencies] wasm-bindgen-futures = "0.4" +gloo-timers = { version = "0.3", features = ["futures"] } # getrandom 0.3 requires an explicit WASM backend; "wasm_js" uses window.crypto.getRandomValues. # Must be a direct dependency (not just transitive) for the feature to take effect. getrandom = { version = "0.3", features = ["wasm_js"] } diff --git a/client_web/assets/style.css b/client_web/assets/style.css index 655bb1f..898cc0f 100644 --- a/client_web/assets/style.css +++ b/client_web/assets/style.css @@ -445,15 +445,19 @@ body { position: relative; } +/* The side panel is anchored to the board's RIGHT edge. Scoring panel + wrappers inside it initially overlap the board; they slide to a peek + strip after a few seconds, and reveal fully on hover. */ .side-panel { position: absolute; - left: calc(100% + 1rem); + right: 0; top: 0; + z-index: 20; display: flex; flex-direction: column; - gap: 0.65rem; - width: 200px; + gap: 0.5rem; padding-top: 0.15rem; + pointer-events: none; /* pass board clicks through the empty area */ } .action-buttons { display: flex; flex-direction: column; gap: 0.5rem; } @@ -637,22 +641,55 @@ body { .game-over-actions { display: flex; gap: 0.75rem; justify-content: center; } /* ── Scoring notification panel (§6b) ───────────────────────────────── */ -@keyframes score-panel-in { - from { transform: translateX(18px); opacity: 0; } - to { transform: translateX(0); opacity: 1; } + +/* ── Wrapper: handles slide-in → peek → reveal lifecycle ────────────── + The wrapper starts off-screen right (translateX(100%)), slides in on + mount via animation, then Leptos adds .peeked after 3.4s to slide it + back to a 28px peek strip. First hover adds .revealed for permanent + visibility. pointer-events: auto overrides the parent's none. */ +@keyframes scoring-panel-enter { + from { transform: translateX(100%); } + to { transform: translateX(0); } } +.scoring-panel-wrapper { + /* width: 290px; */ + pointer-events: auto; + animation: scoring-panel-enter 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94); + transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); + filter: drop-shadow(-4px 0 14px rgba(0,0,0,0.38)); +} + +/* Peeked: slide right by the full panel width so the board is 100% clear. + The panel's left portion stays visible in whatever free space exists to + the right of the board (depends on viewport width). */ +.scoring-panel-wrapper.peeked { + transform: translateX(100%); +} + +/* Click on the visible left strip → .revealed slides it back over the board. + A second click removes .revealed and returns to the peeked position. */ +.scoring-panel-wrapper.revealed { + transform: translateX(0); +} + +/* Pointer cursor on the peeked (clickable) strip */ +.scoring-panel-wrapper.peeked:not(.revealed) { + cursor: pointer; +} + +/* ── Inner panel card ─────────────────────────────────────────────────── */ .scoring-panel { background: var(--ui-parchment); border-radius: 5px; - padding: 0.4rem 0.7rem; + padding: 0.45rem 0.85rem; font-size: 0.84rem; box-shadow: 0 1px 4px rgba(0,0,0,0.15); border-left: 3px solid var(--ui-green-accent); display: flex; flex-direction: column; - gap: 3px; - animation: score-panel-in 0.22s ease-out; + gap: 4px; + width: 100%; } .scoring-total { @@ -660,15 +697,17 @@ body { font-weight: 600; font-size: 1rem; color: #1a5c1a; + white-space: nowrap; } .scoring-jan-row { display: flex; align-items: center; gap: 0.4rem; - padding: 1px 2px; + padding: 2px 3px; border-radius: 3px; cursor: default; + white-space: nowrap; } .scoring-jan-row:hover { background: rgba(0,0,0,0.05); } @@ -688,6 +727,23 @@ body { .hold-go-buttons { display: flex; gap: 0.5rem; margin-top: 4px; } +/* ── Large-screen layout: panel in free space, no peek needed ───────── + Threshold: board (832) + body-padding (48) + panel-gap (16) + panel (290) + + symmetric left margin = 1492 px. + At this width the panel fits entirely to the right of the board. */ +@media (min-width: 1492px) { + .side-panel { + right: auto; + left: calc(100% + 1rem); /* outside board, no overlap */ + } + /* Already fully visible in free space — peeked/revealed are no-ops. */ + .scoring-panel-wrapper.peeked, + .scoring-panel-wrapper.revealed { + transform: none; + cursor: default; + } +} + /* ── Board wrapper ──────────────────────────────────────────────────── */ .board-wrapper { display: flex; diff --git a/client_web/src/components/scoring.rs b/client_web/src/components/scoring.rs index ab44ec4..f463969 100644 --- a/client_web/src/components/scoring.rs +++ b/client_web/src/components/scoring.rs @@ -1,6 +1,10 @@ use futures::channel::mpsc::UnboundedSender; +#[cfg(target_arch = "wasm32")] +use gloo_timers::future::TimeoutFuture; use leptos::prelude::*; use trictrac_store::CheckerMove; +#[cfg(target_arch = "wasm32")] +use wasm_bindgen_futures::spawn_local; use crate::app::NetCommand; use crate::i18n::*; @@ -8,6 +12,10 @@ use crate::trictrac::types::{JanEntry, PlayerAction, ScoredEvent, SerTurnStage}; use super::score_panel::jan_label; +/// One row in the scoring panel. Sets the hovered-moves context on enter +/// (so board shows arrows for that jan's moves), but does NOT clear on +/// leave — clearing is handled by the outer wrapper's mouseleave so that +/// arrows persist while the pointer moves between rows. fn scoring_jan_row(entry: JanEntry) -> impl IntoView { let i18n = use_i18n(); let hovered = use_context::>>(); @@ -25,11 +33,6 @@ fn scoring_jan_row(entry: JanEntry) -> impl IntoView { h.set(moves_hover.clone()); } } - on:mouseleave=move |_| { - if let Some(h) = hovered { - h.set(vec![]); - } - } > {move || jan_label(&jan)} {move || if is_double { @@ -58,51 +61,132 @@ pub fn ScoringPanel( let holes_total = event.holes_total; let bredouille = event.bredouille; let show_hold_go = !is_opponent && turn_stage == SerTurnStage::HoldOrGoChoice; - let panel_class = if is_opponent { "scoring-panel scoring-panel-opp" } else { "scoring-panel" }; + let panel_class = if is_opponent { + "scoring-panel scoring-panel-opp" + } else { + "scoring-panel" + }; + + // ── Lifecycle signals ────────────────────────────────────────────────── + // peeked: added after 3.4 s (slide to peek strip) + // revealed: added on first hover of the peek strip (stay open permanently) + let peeked = RwSignal::new(false); + let revealed = RwSignal::new(false); + + // ── Collect all moves from all jans for automatic arrow display ──────── + let all_moves: Vec<(CheckerMove, CheckerMove)> = event + .jans + .iter() + .flat_map(|e| e.moves.iter().cloned()) + .collect(); + let all_moves_click = all_moves.clone(); + let all_moves_enter = all_moves.clone(); + + let hovered_ctx = use_context::>>(); + + // On mount: show all this event's moves as board arrows immediately. + // After 3.4 s (0.45 s slide-in + 3 s display + guard), slide to peek + // and clear arrows. A cancellation flag prevents stale tasks from + // interfering when the component is replaced by a new scored event. + if let Some(hm) = hovered_ctx { + hm.set(all_moves.clone()); + + #[cfg(target_arch = "wasm32")] + { + let is_alive = RwSignal::new(true); + on_cleanup(move || is_alive.set(false)); + + spawn_local(async move { + TimeoutFuture::new(3_400).await; + if !is_alive.get_untracked() { + return; + } + hm.set(vec![]); + peeked.set(true); + }); + } + } let jan_rows: Vec<_> = event.jans.into_iter().map(scoring_jan_row).collect(); view! { -
-
- {move || if is_opponent { - t_string!(i18n, opp_scored_pts, n = points_earned) - } else { - t_string!(i18n, scored_pts, n = points_earned) - }} -
- {jan_rows} - {(holes_gained > 0).then(|| view! { -
- {move || if is_opponent { - t_string!(i18n, opp_hole_made, holes = holes_total) - } else { - t_string!(i18n, hole_made, holes = holes_total) - }} - {bredouille.then(|| view! { - - {move || t_string!(i18n, bredouille_applied)} - - })} -
- })} - {show_hold_go.then(|| { - let dismissed = RwSignal::new(false); - view! { -
- - -
+ // ── Outer wrapper: owns the slide / peek / reveal animation ─────── + // pointer-events are on by default (parent .side-panel sets none, + // and .scoring-panel-wrapper overrides back to auto in CSS). +
+
+
+ {move || if is_opponent { + t_string!(i18n, opp_scored_pts, n = points_earned) + } else { + t_string!(i18n, scored_pts, n = points_earned) + }} +
+ {jan_rows} + {(holes_gained > 0).then(|| view! { +
+ {move || if is_opponent { + t_string!(i18n, opp_hole_made, holes = holes_total) + } else { + t_string!(i18n, hole_made, holes = holes_total) + }} + {bredouille.then(|| view! { + + {move || t_string!(i18n, bredouille_applied)} + + })} +
+ })} + {show_hold_go.then(|| { + let dismissed = RwSignal::new(false); + view! { +
+ // stop_propagation so these buttons don't also toggle the panel + + +
+ } + })} +
} } From 68ecafd0dcaf1e0d7a86c8632830b2efe413313e Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sat, 11 Apr 2026 15:55:35 +0200 Subject: [PATCH 17/78] fix(client_web): show opponent's dice animation --- client_web/assets/style.css | 13 ++++--- client_web/src/components/board.rs | 8 ++++- client_web/src/components/game_screen.rs | 43 ++++++++++++++---------- 3 files changed, 39 insertions(+), 25 deletions(-) diff --git a/client_web/assets/style.css b/client_web/assets/style.css index 898cc0f..3691894 100644 --- a/client_web/assets/style.css +++ b/client_web/assets/style.css @@ -450,8 +450,8 @@ body { strip after a few seconds, and reveal fully on hover. */ .side-panel { position: absolute; - right: 0; - top: 0; + right: -8px; + top: 10px; z-index: 20; display: flex; flex-direction: column; @@ -645,8 +645,7 @@ body { /* ── Wrapper: handles slide-in → peek → reveal lifecycle ────────────── The wrapper starts off-screen right (translateX(100%)), slides in on mount via animation, then Leptos adds .peeked after 3.4s to slide it - back to a 28px peek strip. First hover adds .revealed for permanent - visibility. pointer-events: auto overrides the parent's none. */ + back to a 28px peek strip. */ @keyframes scoring-panel-enter { from { transform: translateX(100%); } to { transform: translateX(0); } @@ -662,7 +661,7 @@ body { /* Peeked: slide right by the full panel width so the board is 100% clear. The panel's left portion stays visible in whatever free space exists to - the right of the board (depends on viewport width). */ + the right of the board. */ .scoring-panel-wrapper.peeked { transform: translateX(100%); } @@ -868,8 +867,8 @@ body { .board-quarter .field.zone-retour:nth-child(odd) { --fc: #6a2810; } .board-quarter .field.zone-retour:nth-child(even) { --fc: #f2dfa0; } -/* ── Rest corner (§3) — before .clickable so green wins when interactive ── */ -.field.corner { --fc: var(--field-corner) !important; } +/* ── Rest corner — before .clickable so green wins when interactive ── */ +/* .field.corner { --fc: var(--field-corner) !important; } */ /* Crown glyph sits behind checkers (z-index:-1) so it shows only on empty corners */ .field.corner::after { diff --git a/client_web/src/components/board.rs b/client_web/src/components/board.rs index 9ab94ae..0610c86 100644 --- a/client_web/src/components/board.rs +++ b/client_web/src/components/board.rs @@ -256,6 +256,7 @@ pub fn Board( /// Whether we're in the move stage (determines used/unused die appearance). #[prop(default = false)] bar_is_move: bool, + #[prop(default = false)] is_my_turn: bool, /// Whether the dice are a double (golden glow). #[prop(default = false)] bar_is_double: bool, @@ -344,6 +345,9 @@ pub fn Board( cls.push_str(" corner-available"); } } + if is_rest_corner(field_num, !is_white) { + cls.push_str(" corner"); + } if all_in_exit && exit_field_test(field_num) { cls.push_str(" exit-eligible"); } @@ -501,8 +505,10 @@ pub fn Board( let staged = staged_moves.get(); let (u0, u1) = if bar_is_move { bar_matched_dice_used(&staged, dice_vals) - } else { + } else if is_my_turn { (true, true) + } else { + (false, false) }; let used = if die_idx == 0 { u0 } else { u1 }; view! { } diff --git a/client_web/src/components/game_screen.rs b/client_web/src/components/game_screen.rs index 2fa14c3..072b827 100644 --- a/client_web/src/components/game_screen.rs +++ b/client_web/src/components/game_screen.rs @@ -37,8 +37,8 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { let cmd_tx = use_context::>() .expect("UnboundedSender not found in context"); - let pending = use_context::>>() - .expect("pending not found in context"); + let pending = + use_context::>>().expect("pending not found in context"); let cmd_tx_effect = cmd_tx.clone(); Effect::new(move |_| { let moves = staged_moves.get(); @@ -68,7 +68,9 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { if show_roll && !waiting_for_confirm { let cmd_tx_auto = cmd_tx.clone(); Effect::new(move |_| { - cmd_tx_auto.unbounded_send(NetCommand::Action(PlayerAction::Roll)).ok(); + cmd_tx_auto + .unbounded_send(NetCommand::Action(PlayerAction::Roll)) + .ok(); }); } @@ -92,13 +94,19 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { let mut store_board = StoreBoard::new(); store_board.set_positions(&Color::White, vs.board); let store_dice = StoreDice { values: dice }; - let color = if player_id == 0 { Color::White } else { Color::Black }; + let color = if player_id == 0 { + Color::White + } else { + Color::Black + }; let rules = MoveRules::new(&color, &store_board, store_dice); let raw = rules.get_possible_moves_sequences(true, vec![]); if player_id == 0 { raw } else { - raw.into_iter().map(|(m1, m2)| (m1.mirror(), m2.mirror())).collect() + raw.into_iter() + .map(|(m1, m2)| (m1.mirror(), m2.mirror())) + .collect() } } else { vec![] @@ -113,7 +121,8 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { // ── Scoring notifications ────────────────────────────────────────────────── let my_scored_event = state.my_scored_event.clone(); let opp_scored_event = state.opp_scored_event.clone(); - let hole_toast_info = my_scored_event.as_ref() + let hole_toast_info = my_scored_event + .as_ref() .filter(|e| e.holes_gained > 0) .map(|e| (e.holes_total, e.bredouille)); @@ -123,14 +132,16 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { // §6e — fields where a battue (hit) was scored; ripple animation shown there. let hit_fields: Vec = { - let is_hit_jan = |jan: &Jan| matches!( - jan, - Jan::TrueHitSmallJan - | Jan::TrueHitBigJan - | Jan::TrueHitOpponentCorner - | Jan::FalseHitSmallJan - | Jan::FalseHitBigJan - ); + let is_hit_jan = |jan: &Jan| { + matches!( + jan, + Jan::TrueHitSmallJan + | Jan::TrueHitBigJan + | Jan::TrueHitOpponentCorner + | Jan::FalseHitSmallJan + | Jan::FalseHitBigJan + ) + }; let mut fields: Vec = vec![]; for event_opt in [&my_scored_event, &opp_scored_event] { if let Some(event) = event_opt { @@ -148,9 +159,6 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { } } } - if !fields.is_empty() { - leptos::logging::log!("[6e] hit_fields = {:?}", fields); - } fields }; @@ -248,6 +256,7 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { valid_sequences=valid_sequences bar_dice=show_dice.then_some(dice) bar_is_move=is_move_stage + is_my_turn=is_my_turn bar_is_double=is_double_dice last_moves=last_moves hit_fields=hit_fields From f2dc81d6138cf0252aa0faa68e71d5b1f8cf906a Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sat, 11 Apr 2026 18:19:01 +0200 Subject: [PATCH 18/78] feat(client_web): sound effects --- Cargo.lock | 1210 +++++++++++++--------- client_web/Cargo.toml | 27 +- client_web/src/components/game_screen.rs | 34 +- client_web/src/main.rs | 1 + client_web/src/sound.rs | 171 +++ 5 files changed, 939 insertions(+), 504 deletions(-) create mode 100644 client_web/src/sound.rs diff --git a/Cargo.lock b/Cargo.lock index 265469e..2141f27 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -35,7 +35,7 @@ checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -100,9 +100,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.21" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -115,15 +115,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -161,9 +161,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.101" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "approx" @@ -188,7 +188,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -264,7 +264,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -299,7 +299,7 @@ dependencies = [ "manyhow", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -315,7 +315,7 @@ dependencies = [ "proc-macro2", "quote", "quote-use", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -360,9 +360,9 @@ dependencies = [ [[package]] name = "avif-serialize" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47c8fbc0f831f4519fe8b810b6a7a91410ec83031b8233f730a0480029f6a23f" +checksum = "375082f007bd67184fb9c0374614b29f9aaa604ec301635f72338bb65386a53d" dependencies = [ "arrayvec 0.7.6", ] @@ -495,7 +495,7 @@ version = "0.71.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -504,9 +504,9 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "shlex", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -538,9 +538,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" dependencies = [ "serde_core", ] @@ -611,9 +611,9 @@ checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64" [[package]] name = "bumpalo" -version = "3.19.1" +version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] name = "burn" @@ -669,7 +669,7 @@ dependencies = [ "derive-new", "hashbrown 0.16.1", "num-traits", - "rand 0.9.2", + "rand 0.9.3", "rand_distr", "serde", "thiserror 2.0.18", @@ -751,7 +751,7 @@ dependencies = [ "num-traits", "portable-atomic", "portable-atomic-util", - "rand 0.9.2", + "rand 0.9.3", "regex", "rmp-serde", "serde", @@ -833,7 +833,7 @@ dependencies = [ "image", "r2d2", "r2d2_sqlite", - "rand 0.9.2", + "rand 0.9.3", "rmp-serde", "rusqlite", "sanitize-filename", @@ -854,7 +854,7 @@ dependencies = [ "derive-new", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -906,7 +906,7 @@ dependencies = [ "paste", "portable-atomic", "portable-atomic-util", - "rand 0.9.2", + "rand 0.9.3", "rayon", "seq-macro", ] @@ -1115,7 +1115,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -1201,13 +1201,13 @@ dependencies = [ "memmap2", "num-traits", "num_cpus", - "rand 0.9.2", + "rand 0.9.3", "rand_distr", "rayon", "safetensors 0.7.0", "thiserror 2.0.18", - "yoke 0.8.1", - "zip 7.4.0", + "yoke 0.8.2", + "zip 7.2.0", ] [[package]] @@ -1248,9 +1248,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.55" +version = "1.2.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b26a0954ae34af09b50f0de26458fa95369a0d478d8236d3f93082b219bd29" +checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20" dependencies = [ "find-msvc-tools", "jobserver", @@ -1287,7 +1287,18 @@ checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" dependencies = [ "cfg-if", "cipher", - "cpufeatures", + "cpufeatures 0.2.17", +] + +[[package]] +name = "chacha20" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core 0.10.0", ] [[package]] @@ -1297,7 +1308,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" dependencies = [ "aead", - "chacha20", + "chacha20 0.9.1", "cipher", "poly1305", "zeroize", @@ -1366,18 +1377,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.60" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a" +checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.60" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstyle", "clap_lex", @@ -1385,9 +1396,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "client_web" @@ -1400,18 +1411,19 @@ dependencies = [ "gloo-timers", "leptos", "leptos_i18n", - "rand 0.9.2", + "rand 0.9.3", "serde", "serde_json", "trictrac-store", "wasm-bindgen-futures", + "web-sys", ] [[package]] name = "cmake" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" dependencies = [ "cc", ] @@ -1461,9 +1473,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "colored" @@ -1513,15 +1525,15 @@ dependencies = [ [[package]] name = "config" -version = "0.15.19" +version = "0.15.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +checksum = "8e68cfe19cd7d23ffde002c24ffa5cda73931913ef394d5eaaa32037dc940c0c" dependencies = [ "convert_case 0.6.0", "pathdiff", "serde_core", - "toml 0.9.11+spec-1.1.0", - "winnow", + "toml 1.1.2+spec-1.1.0", + "winnow 1.0.1", ] [[package]] @@ -1663,7 +1675,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "core-foundation", "libc", ] @@ -1695,6 +1707,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.5.0" @@ -1786,7 +1807,7 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "crossterm_winapi", "mio", "parking_lot", @@ -1886,7 +1907,7 @@ dependencies = [ "parking_lot", "portable-atomic", "portable-atomic-util", - "rand 0.9.2", + "rand 0.9.3", "sanitize-filename", "serde", "serde_bytes", @@ -1903,7 +1924,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98374a31d2b68b55709891169832ccf205408c201c5e023964482441f213d0b9" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "bytemuck", "cubecl-common", "cubecl-ir", @@ -2006,9 +2027,9 @@ dependencies = [ [[package]] name = "cubecl-hip-sys" -version = "7.0.5183101" +version = "7.1.5280200" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ef087b59445fda47d2177370886351eb923ad1a541086d4919268574cd9558" +checksum = "bcdd98f72d6f17836a0477bcd5ae5dd6b57a80fb62a3c0919f867a231f897f28" dependencies = [ "libc", "regex", @@ -2048,7 +2069,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2060,7 +2081,7 @@ dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2105,7 +2126,7 @@ dependencies = [ "serde_json", "spin 0.10.0", "thiserror 2.0.18", - "toml 0.9.11+spec-1.1.0", + "toml 0.9.12+spec-1.1.0", "tracing", "variadics_please", "wasm-bindgen-futures", @@ -2241,7 +2262,7 @@ dependencies = [ "cubecl-common", "half", "num-traits", - "rand 0.9.2", + "rand 0.9.3", "serde", ] @@ -2308,7 +2329,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2322,7 +2343,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2335,7 +2356,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2346,7 +2367,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2357,7 +2378,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2368,7 +2389,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2409,14 +2430,14 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "deranged" -version = "0.5.5" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ "powerfmt", ] @@ -2440,7 +2461,7 @@ checksum = "2cdc8d50f426189eef89dac62fabfa0abb27d5cc008f25bf4156a0203325becc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2451,7 +2472,7 @@ checksum = "d08b3a0bcc0d079199cd476b2cae8435016ec11d1c0986c6901c5ac223041534" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2473,7 +2494,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.114", + "syn 2.0.117", "unicode-xid", ] @@ -2538,7 +2559,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2618,9 +2639,9 @@ dependencies = [ [[package]] name = "embassy-time-driver" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0a244c7dc22c8d0289379c8d8830cae06bb93d8f990194d0de5efb3b5ae7ba6" +checksum = "6ee71af1b3a0deaa53eaf2d39252f83504c853646e472400b763060389b9fcc9" dependencies = [ "document-features", ] @@ -2677,7 +2698,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2699,14 +2720,14 @@ dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "env_filter" -version = "0.1.4" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" +checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef" dependencies = [ "log", "regex", @@ -2727,9 +2748,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.8" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" +checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a" dependencies = [ "anstream", "anstyle", @@ -2755,7 +2776,7 @@ checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2861,9 +2882,9 @@ checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" [[package]] name = "fastrand" -version = "2.3.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" [[package]] name = "fax" @@ -2882,7 +2903,7 @@ checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2968,7 +2989,7 @@ checksum = "719a903cc23e4a89e87962c2a80fdb45cdaad0983a89bd150bb57b4c8571a7d5" dependencies = [ "half", "num-traits", - "rand 0.9.2", + "rand 0.9.3", "rand_distr", ] @@ -3008,7 +3029,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -3028,9 +3049,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" dependencies = [ "futures-channel", "futures-core", @@ -3043,9 +3064,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", "futures-sink", @@ -3053,27 +3074,26 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" dependencies = [ "futures-core", "futures-task", "futures-util", - "num_cpus", ] [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-lite" @@ -3090,26 +3110,26 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-timer" @@ -3119,9 +3139,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-channel", "futures-core", @@ -3131,7 +3151,6 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] @@ -3286,16 +3305,30 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", "wasm-bindgen", ] [[package]] -name = "gif" -version = "0.14.1" +name = "getrandom" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5df2ba84018d80c213569363bdcd0c64e6933c67fe4c1d60ecf822971a3c35e" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "rand_core 0.10.0", + "wasip2", + "wasip3", +] + +[[package]] +name = "gif" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159" dependencies = [ "color_quant", "weezl", @@ -3354,16 +3387,16 @@ dependencies = [ "gix-fs", "libc", "parking_lot", - "signal-hook 0.4.3", + "signal-hook 0.4.4", "signal-hook-registry", "tempfile", ] [[package]] name = "gix-trace" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e42a4c2583357721ba2d887916e78df504980f22f1182df06997ce197b89504" +checksum = "f69a13643b8437d4ca6845e08143e847a36ca82903eed13303475d0ae8b162e0" [[package]] name = "gix-utils" @@ -3490,7 +3523,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "gpu-alloc-types", ] @@ -3500,7 +3533,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", ] [[package]] @@ -3521,7 +3554,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -3532,7 +3565,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", ] [[package]] @@ -3551,7 +3584,7 @@ dependencies = [ "log", "nalgebra", "num-traits", - "ordered-float 5.1.0", + "ordered-float 5.3.0", "rand 0.8.5", "rand_pcg 0.3.1", "sdl2", @@ -3587,7 +3620,7 @@ dependencies = [ "cfg-if", "crunchy", "num-traits", - "rand 0.9.2", + "rand 0.9.3", "rand_distr", "serde", "zerocopy", @@ -3642,6 +3675,12 @@ dependencies = [ "serde_core", ] +[[package]] +name = "hashbrown" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" + [[package]] name = "hashlink" version = "0.10.0" @@ -3768,9 +3807,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" dependencies = [ "atomic-waker", "bytes", @@ -3783,7 +3822,6 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "pin-utils", "smallvec", "tokio", "want", @@ -3866,15 +3904,16 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" dependencies = [ "displaydoc", "potential_utf", - "yoke 0.8.1", + "utf8_iter", + "yoke 0.8.2", "zerofrom", - "zerovec 0.11.5", + "zerovec 0.11.6", ] [[package]] @@ -3984,15 +4023,15 @@ checksum = "52b1a7fbdbf3958f1be8354cb59ac73f165b7b7082d447ff2090355c9a069120" [[package]] name = "icu_locale_core" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" dependencies = [ "displaydoc", - "litemap 0.8.1", - "tinystr 0.8.2", - "writeable 0.6.2", - "zerovec 0.11.5", + "litemap 0.8.2", + "tinystr 0.8.3", + "writeable 0.6.3", + "zerovec 0.11.6", ] [[package]] @@ -4048,16 +4087,16 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" dependencies = [ - "icu_collections 2.1.1", - "icu_normalizer_data 2.1.1", - "icu_properties 2.1.2", - "icu_provider 2.1.1", + "icu_collections 2.2.0", + "icu_normalizer_data 2.2.0", + "icu_properties 2.2.0", + "icu_provider 2.2.0", "smallvec", - "zerovec 0.11.5", + "zerovec 0.11.6", ] [[package]] @@ -4068,9 +4107,9 @@ checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" [[package]] name = "icu_normalizer_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" [[package]] name = "icu_pattern" @@ -4122,16 +4161,16 @@ dependencies = [ [[package]] name = "icu_properties" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" dependencies = [ - "icu_collections 2.1.1", + "icu_collections 2.2.0", "icu_locale_core", - "icu_properties_data 2.1.2", - "icu_provider 2.1.1", - "zerotrie 0.2.3", - "zerovec 0.11.5", + "icu_properties_data 2.2.0", + "icu_provider 2.2.0", + "zerotrie 0.2.4", + "zerovec 0.11.6", ] [[package]] @@ -4142,9 +4181,9 @@ checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" [[package]] name = "icu_properties_data" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" [[package]] name = "icu_provider" @@ -4165,17 +4204,17 @@ dependencies = [ [[package]] name = "icu_provider" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" dependencies = [ "displaydoc", "icu_locale_core", - "writeable 0.6.2", - "yoke 0.8.1", + "writeable 0.6.3", + "yoke 0.8.2", "zerofrom", - "zerotrie 0.2.3", - "zerovec 0.11.5", + "zerotrie 0.2.4", + "zerovec 0.11.6", ] [[package]] @@ -4186,7 +4225,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -4210,6 +4249,12 @@ version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1adcf7b613a268af025bc2a2532b4b9ee294e6051c5c0832d8bff20ac0232e68" +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "ident_case" version = "1.0.1" @@ -4233,15 +4278,15 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ - "icu_normalizer 2.1.1", - "icu_properties 2.1.2", + "icu_normalizer 2.2.0", + "icu_properties 2.2.0", ] [[package]] name = "image" -version = "0.25.9" +version = "0.25.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" dependencies = [ "bytemuck", "byteorder-lite", @@ -4257,8 +4302,8 @@ dependencies = [ "rayon", "rgb", "tiff", - "zune-core 0.5.1", - "zune-jpeg 0.5.12", + "zune-core", + "zune-jpeg", ] [[package]] @@ -4279,12 +4324,14 @@ checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.0", + "serde", + "serde_core", ] [[package]] @@ -4307,15 +4354,15 @@ dependencies = [ [[package]] name = "instability" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357b7205c6cd18dd2c86ed312d1e70add149aea98e7ef72b9fdf0270e555c11d" +checksum = "5eb2d60ef19920a3a9193c3e371f726ec1dafc045dac788d0fb3704272458971" dependencies = [ "darling 0.23.0", "indoc", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -4332,7 +4379,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -4343,15 +4390,15 @@ checksum = "71dd52191aae121e8611f1e8dc3e324dd0dd1dee1e6dd91d10ee07a3cfb4d9d8" [[package]] name = "ipnet" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" [[package]] name = "iri-string" -version = "0.7.10" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20" dependencies = [ "memchr", "serde", @@ -4403,15 +4450,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.19" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d89a5b5e10d5a9ad6e5d1f4bd58225f655d6fe9767575a5e8ac5a6fe64e04495" +checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" dependencies = [ "jiff-static", "log", @@ -4422,20 +4469,42 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.19" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff7a39c8862fc1369215ccf0a8f12dd4598c7f6484704359f0351bd617034dbf" +checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.117", +] [[package]] name = "jobserver" @@ -4449,10 +4518,12 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.85" +version = "0.3.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" dependencies = [ + "cfg-if", + "futures-util", "once_cell", "wasm-bindgen", ] @@ -4491,6 +4562,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "lebe" version = "0.5.3" @@ -4517,7 +4594,7 @@ dependencies = [ "or_poisoned", "paste", "reactive_graph", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "send_wrapper", "serde", "serde_qs", @@ -4595,7 +4672,7 @@ dependencies = [ "quote", "rstml", "serde", - "syn 2.0.114", + "syn 2.0.117", "walkdir", ] @@ -4638,7 +4715,7 @@ dependencies = [ "quote", "serde", "serde_json", - "syn 2.0.114", + "syn 2.0.117", "tinystr 0.7.6", "toml 0.8.23", ] @@ -4658,7 +4735,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "syn 2.0.114", + "syn 2.0.117", "tinystr 0.7.6", "toml 0.8.23", ] @@ -4681,7 +4758,7 @@ dependencies = [ "quote", "rstml", "server_fn_macro", - "syn 2.0.114", + "syn 2.0.117", "uuid", ] @@ -4723,15 +4800,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.180" +version = "0.2.184" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" +checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af" [[package]] name = "libfuzzer-sys" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5037190e1f70cbeef565bd267599242926f724d3b8a9f510fd7e0b540cfa4404" +checksum = "f12a681b7dd8ce12bff52488013ba614b869148d54dd79836ab85aafdd53f08d" dependencies = [ "arbitrary", "cc", @@ -4749,9 +4826,9 @@ dependencies = [ [[package]] name = "liblzma" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73c36d08cad03a3fbe2c4e7bb3a9e84c57e4ee4135ed0b065cade3d98480c648" +checksum = "b6033b77c21d1f56deeae8014eb9fbe7bdf1765185a6c508b5ca82eeaed7f899" dependencies = [ "liblzma-sys", "num_cpus", @@ -4759,9 +4836,9 @@ dependencies = [ [[package]] name = "liblzma-sys" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f2db66f3268487b5033077f266da6777d057949b8f93c8ad82e441df25e6186" +checksum = "1a60851d15cd8c5346eca4ab8babff585be2ae4bc8097c067291d3ffe2add3b6" dependencies = [ "cc", "libc", @@ -4776,13 +4853,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.12" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "libc", - "redox_syscall 0.7.0", + "plain", + "redox_syscall 0.7.4", ] [[package]] @@ -4810,9 +4888,9 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" @@ -4822,9 +4900,9 @@ checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "litemap" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" [[package]] name = "litrs" @@ -4889,14 +4967,14 @@ dependencies = [ [[package]] name = "macerator-macros" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd48b535b9b37a25a2589ab8d4f997886a2c68f59960ce06588525f38dd4944" +checksum = "23ee1819976b67f4d782390c55a75c13401c7a988517f7f8e60a33484dc2e00a" dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -4917,7 +4995,7 @@ dependencies = [ "manyhow-macros", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -4983,9 +5061,9 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "memmap2" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" +checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" dependencies = [ "libc", "stable_deref_trait", @@ -5019,7 +5097,7 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "block", "core-graphics-types", "foreign-types", @@ -5052,9 +5130,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" dependencies = [ "libc", "log", @@ -5070,9 +5148,9 @@ checksum = "4a0b3262dc837d2513fe2ef31ff8461352ef932dcca31ba0c0abe33547cf6b9b" [[package]] name = "moxcms" -version = "0.7.11" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" dependencies = [ "num-traits", "pxfm", @@ -5086,7 +5164,7 @@ checksum = "916cbc7cb27db60be930a4e2da243cf4bc39569195f22fd8ee419cd31d5b662c" dependencies = [ "arrayvec 0.7.6", "bit-set", - "bitflags 2.10.0", + "bitflags 2.11.0", "cfg-if", "cfg_aliases", "codespan-reporting", @@ -5106,9 +5184,9 @@ dependencies = [ [[package]] name = "nalgebra" -version = "0.33.2" +version = "0.33.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26aecdf64b707efd1310e3544d709c5c0ac61c13756046aaaba41be5c4f66a3b" +checksum = "9d43ddcacf343185dfd6de2ee786d9e8b1c2301622afab66b6c73baf9882abfd" dependencies = [ "approx", "matrixmultiply", @@ -5128,7 +5206,7 @@ checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -5183,7 +5261,7 @@ version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ - "jni-sys", + "jni-sys 0.3.1", ] [[package]] @@ -5198,12 +5276,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60993920e071b0c9b66f14e2b32740a4e27ffc82854dcd72035887f336a09a28" -[[package]] -name = "no-std-compat" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df270209a7f04d62459240d890ecb792714d5db12c92937823574a09930276b4" - [[package]] name = "nodrop" version = "0.1.14" @@ -5243,9 +5315,9 @@ checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" [[package]] name = "ntapi" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c70f219e21142367c70c0b30c6a9e3a14d55b4d12a204d897fbec83a0363f081" +checksum = "c3b335231dfd352ffb0f8017f3b6027a4917f7df785ea2143d8af2adc66980ae" dependencies = [ "winapi", ] @@ -5295,9 +5367,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" [[package]] name = "num-derive" @@ -5307,7 +5379,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -5376,7 +5448,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d5c6c0ef9702176a570f06ad94f3198bc29c524c8b498f1b9346e1b1bdcbb3a" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "libloading", "nvml-wrapper-sys", "static_assertions", @@ -5386,9 +5458,9 @@ dependencies = [ [[package]] name = "nvml-wrapper-sys" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd23dbe2eb8d8335d2bce0299e0a07d6a63c089243d626ca75b770a962ff49e6" +checksum = "6b4d594420fcda43b1c2c4bd44d48974aa3c7a9ab2cbf10dc18e35265767bf0b" dependencies = [ "libloading", ] @@ -5408,7 +5480,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", ] [[package]] @@ -5448,9 +5520,9 @@ checksum = "3a74f2cda724d43a0a63140af89836d4e7db6138ef67c9f96d3a0f0150d05000" [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "once_cell_polyfill" @@ -5493,9 +5565,9 @@ dependencies = [ [[package]] name = "ordered-float" -version = "5.1.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4779c6901a562440c3786d08192c6fbda7c1c2060edd10006b05ee35d10f2d" +checksum = "b7d950ca161dc355eaf28f82b11345ed76c6e1f6eb1f4f4479e0323b9e2fbd0e" dependencies = [ "num-traits", "rand 0.8.5", @@ -5608,7 +5680,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -5654,20 +5726,14 @@ checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" @@ -5675,6 +5741,12 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + [[package]] name = "plotters" version = "0.3.7" @@ -5705,11 +5777,11 @@ dependencies = [ [[package]] name = "png" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "crc32fast", "fdeflate", "flate2", @@ -5722,7 +5794,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" dependencies = [ - "cpufeatures", + "cpufeatures 0.2.17", "opaque-debug", "universal-hash", ] @@ -5738,9 +5810,9 @@ dependencies = [ [[package]] name = "portable-atomic-util" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5" +checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" dependencies = [ "portable-atomic", ] @@ -5760,11 +5832,11 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" dependencies = [ - "zerovec 0.11.5", + "zerovec 0.11.6", ] [[package]] @@ -5805,16 +5877,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "proc-macro-crate" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "toml_edit 0.23.10+spec-1.0.0", + "toml_edit 0.25.11+spec-1.1.0", ] [[package]] @@ -5860,7 +5932,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -5891,7 +5963,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "version_check", "yansi", ] @@ -5912,7 +5984,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" dependencies = [ "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -5947,12 +6019,9 @@ checksum = "40e24eee682d89fb193496edf918a7f407d30175b2e785fe057e4392dfd182e0" [[package]] name = "pxfm" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" -dependencies = [ - "num-traits", -] +checksum = "b5a041e753da8b807c9255f28de81879c78c876392ff2469cde94799b2896b9d" [[package]] name = "qoi" @@ -5980,7 +6049,7 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "rustls", "socket2", "thiserror 2.0.18", @@ -5991,16 +6060,16 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.13" +version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" dependencies = [ "bytes", "getrandom 0.3.4", "lru-slab", - "rand 0.9.2", + "rand 0.9.3", "ring", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "rustls", "rustls-pki-types", "slab", @@ -6026,9 +6095,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -6052,7 +6121,7 @@ dependencies = [ "proc-macro-utils", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -6061,6 +6130,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "r2d2" version = "0.8.10" @@ -6109,14 +6184,25 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +checksum = "7ec095654a25171c2124e9e3393a930bddbffdc939556c914957a4c3e0a87166" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.5", ] +[[package]] +name = "rand" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" +dependencies = [ + "chacha20 0.10.0", + "getrandom 0.4.2", + "rand_core 0.10.0", +] + [[package]] name = "rand_chacha" version = "0.2.2" @@ -6172,6 +6258,12 @@ dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rand_core" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba" + [[package]] name = "rand_distr" version = "0.5.1" @@ -6179,7 +6271,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8615d50dcf34fa31f7ab52692afec947c4dd0ab803cc87cb3b0b4570ff7463" dependencies = [ "num-traits", - "rand 0.9.2", + "rand 0.9.3", ] [[package]] @@ -6220,9 +6312,9 @@ dependencies = [ [[package]] name = "range-alloc" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" +checksum = "ca45419789ae5a7899559e9512e58ca889e41f04f1f2445e9f4b290ceccd1d08" [[package]] name = "ratatui" @@ -6230,7 +6322,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "cassowary", "compact_str", "crossterm", @@ -6273,7 +6365,7 @@ dependencies = [ "num-traits", "paste", "profiling", - "rand 0.9.2", + "rand 0.9.3", "rand_chacha 0.9.0", "simd_helpers", "thiserror 2.0.18", @@ -6283,9 +6375,9 @@ dependencies = [ [[package]] name = "ravif" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef69c1990ceef18a116855938e74793a5f7496ee907562bd0857b6ac734ab285" +checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45" dependencies = [ "avif-serialize", "imgref", @@ -6302,7 +6394,7 @@ version = "11.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", ] [[package]] @@ -6350,7 +6442,7 @@ dependencies = [ "hydration_context", "or_poisoned", "pin-project-lite", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "send_wrapper", "serde", "slotmap", @@ -6370,7 +6462,7 @@ dependencies = [ "paste", "reactive_graph", "reactive_stores_macro", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", ] [[package]] @@ -6383,7 +6475,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -6398,16 +6490,16 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", ] [[package]] name = "redox_syscall" -version = "0.7.0" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" +checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", ] [[package]] @@ -6455,9 +6547,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "relative-path" @@ -6536,9 +6628,9 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" [[package]] name = "ring" @@ -6604,7 +6696,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.114", + "syn 2.0.117", "unicode-ident", ] @@ -6618,7 +6710,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.114", + "syn 2.0.117", "syn_derive", "thiserror 2.0.18", ] @@ -6629,7 +6721,7 @@ version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -6651,9 +6743,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" [[package]] name = "rustc_version" @@ -6670,7 +6762,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -6679,22 +6771,22 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "errno", "libc", - "linux-raw-sys 0.11.0", + "linux-raw-sys 0.12.1", "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.23.36" +version = "0.23.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" +checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" dependencies = [ "log", "once_cell", @@ -6717,9 +6809,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.9" +version = "0.103.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +checksum = "20a6af516fea4b20eccceaf166e8aa666ac996208e8a644ce3ef5aa783bc7cd4" dependencies = [ "ring", "rustls-pki-types", @@ -6734,9 +6826,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "safe_arch" @@ -6828,9 +6920,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" [[package]] name = "send_wrapper" @@ -6884,7 +6976,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -6943,9 +7035,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] @@ -7015,7 +7107,7 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "xxhash-rust", ] @@ -7026,7 +7118,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb8b274f568c94226a8045668554aace8142a59b8bca5414ac5a79627c825568" dependencies = [ "server_fn_macro", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7036,7 +7128,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest", ] @@ -7047,7 +7139,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest", ] @@ -7078,9 +7170,9 @@ dependencies = [ [[package]] name = "signal-hook" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b57709da74f9ff9f4a27dce9526eec25ca8407c45a7887243b031a58935fb8e" +checksum = "b2a0c28ca5908dbdbcd52e6fdaa00358ab88637f8ab33e1f188dd510eb44b53d" dependencies = [ "libc", "signal-hook-registry", @@ -7122,9 +7214,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" [[package]] name = "simd_helpers" @@ -7168,12 +7260,12 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -7183,7 +7275,7 @@ dependencies = [ "anyhow", "burn", "criterion", - "rand 0.9.2", + "rand 0.9.3", "rand_distr", "trictrac-bot", "trictrac-store", @@ -7214,17 +7306,14 @@ version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", ] [[package]] name = "stable-vec" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1dff32a2ce087283bec878419027cebd888760d8760b2941ad0843531dc9ec8" -dependencies = [ - "no-std-compat", -] +checksum = "6dac7bc0f7d0d44329b200020effbc25a534d89fa142af95e3ddf76113412a5e" [[package]] name = "stable_deref_trait" @@ -7278,7 +7367,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7290,7 +7379,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7312,9 +7401,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.114" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -7330,7 +7419,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7362,7 +7451,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7371,7 +7460,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01198a2debb237c62b6826ec7081082d951f46dbb64b0e8c7649a452230d1dfc" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "byteorder", "enum-as-inner", "libc", @@ -7409,9 +7498,9 @@ dependencies = [ [[package]] name = "systemstat" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5021f5184d44b26fb184acd689671bbe1e4bbd24bbdaa6bc7ec383fad32d2033" +checksum = "a6e89b75de097d0c52a1dc2114e19439d55f0e2e42d32168c6df44f139dfb66f" dependencies = [ "bytesize", "lazy_static", @@ -7447,7 +7536,7 @@ dependencies = [ "paste", "reactive_graph", "reactive_stores", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "send_wrapper", "slotmap", "throw_error", @@ -7457,9 +7546,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" +checksum = "22692a6476a21fa75fdfc11d452fda482af402c008cdbaf3476414e122040973" dependencies = [ "filetime", "libc", @@ -7485,14 +7574,14 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.24.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.4", + "getrandom 0.4.2", "once_cell", - "rustix 1.1.3", + "rustix 1.1.4", "windows-sys 0.61.2", ] @@ -7548,7 +7637,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7559,7 +7648,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7591,16 +7680,16 @@ dependencies = [ [[package]] name = "tiff" -version = "0.10.3" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" +checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52" dependencies = [ "fax", "flate2", "half", "quick-error", "weezl", - "zune-jpeg 0.4.21", + "zune-jpeg", ] [[package]] @@ -7657,12 +7746,12 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" dependencies = [ "displaydoc", - "zerovec 0.11.5", + "zerovec 0.11.6", ] [[package]] @@ -7677,9 +7766,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -7692,9 +7781,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.49.0" +version = "1.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +checksum = "f66bf9585cda4b724d3e78ab34b73fb2bbaba9011b9bfdf69dc836382ea13b8c" dependencies = [ "bytes", "libc", @@ -7709,13 +7798,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7767,17 +7856,30 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.11+spec-1.1.0" +version = "0.9.12+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" dependencies = [ "indexmap", "serde_core", - "serde_spanned 1.0.4", + "serde_spanned 1.1.1", "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", "toml_writer", - "winnow", + "winnow 0.7.15", +] + +[[package]] +name = "toml" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" +dependencies = [ + "serde_core", + "serde_spanned 1.1.1", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "winnow 1.0.1", ] [[package]] @@ -7798,6 +7900,15 @@ dependencies = [ "serde_core", ] +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" version = "0.22.27" @@ -7809,28 +7920,28 @@ dependencies = [ "serde_spanned 0.6.9", "toml_datetime 0.6.11", "toml_write", - "winnow", + "winnow 0.7.15", ] [[package]] name = "toml_edit" -version = "0.23.10+spec-1.0.0" +version = "0.25.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" dependencies = [ "indexmap", - "toml_datetime 0.7.5+spec-1.1.0", + "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", - "winnow", + "winnow 1.0.1", ] [[package]] name = "toml_parser" -version = "1.0.6+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow", + "winnow 1.0.1", ] [[package]] @@ -7841,9 +7952,9 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "torch-sys" @@ -7882,7 +7993,7 @@ version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "bytes", "futures-util", "http", @@ -7957,7 +8068,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.114", + "syn 2.0.117", "tracel-llvm-bundler", "tracel-tblgen-rs", "unindent", @@ -8017,7 +8128,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -8043,9 +8154,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", @@ -8081,7 +8192,7 @@ dependencies = [ "internal-iterator", "log", "pretty_assertions", - "rand 0.9.2", + "rand 0.9.3", "serde", "serde_json", "trictrac-store", @@ -8093,7 +8204,7 @@ version = "0.1.0" dependencies = [ "anyhow", "bincode 1.3.3", - "env_logger 0.11.8", + "env_logger 0.11.10", "itertools 0.13.0", "log", "pico-args", @@ -8112,7 +8223,7 @@ dependencies = [ "base64 0.21.7", "log", "merge", - "rand 0.9.2", + "rand 0.9.3", "serde", "transpose", ] @@ -8152,7 +8263,7 @@ dependencies = [ "http", "httparse", "log", - "rand 0.9.2", + "rand 0.9.3", "sha1", "thiserror 2.0.18", "utf-8", @@ -8164,7 +8275,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" dependencies = [ - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", ] [[package]] @@ -8190,14 +8301,14 @@ checksum = "3c36781cc0e46a83726d9879608e4cf6c2505237e263a8eb8c24502989cfdb28" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "typed-path" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3015e6ce46d5ad8751e4a772543a30c7511468070e98e64e20165f8f81155b64" +checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e" [[package]] name = "typenum" @@ -8213,9 +8324,9 @@ checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-normalization" @@ -8228,9 +8339,9 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" [[package]] name = "unicode-truncate" @@ -8363,13 +8474,13 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.20.0" +version = "1.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" +checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.2", "js-sys", - "rand 0.9.2", + "rand 0.10.1", "wasm-bindgen", ] @@ -8398,7 +8509,7 @@ checksum = "41b6d82be61465f97d42bd1d15bf20f3b0a3a0905018f38f9d6f6962055b0b5c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -8460,10 +8571,19 @@ dependencies = [ ] [[package]] -name = "wasm-bindgen" -version = "0.2.108" +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" dependencies = [ "cfg-if", "once_cell", @@ -8474,23 +8594,19 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.58" +version = "0.4.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +checksum = "f371d383f2fb139252e0bfac3b81b265689bf45b6874af544ffa4c975ac1ebf8" dependencies = [ - "cfg-if", - "futures-util", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.108" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -8498,26 +8614,48 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.108" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.108" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + [[package]] name = "wasm-streams" version = "0.4.2" @@ -8532,10 +8670,22 @@ dependencies = [ ] [[package]] -name = "web-sys" -version = "0.3.85" +name = "wasmparser" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.0", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + +[[package]] +name = "web-sys" +version = "0.3.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f2dfbb17949fa2088e5d39408c48368947b86f7834484e87b73de55bc14d97d" dependencies = [ "js-sys", "wasm-bindgen", @@ -8582,7 +8732,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70b6ff82bbf6e9206828e1a3178e851f8c20f1c9028e74dd3a8090741ccd5798" dependencies = [ "arrayvec 0.7.6", - "bitflags 2.10.0", + "bitflags 2.11.0", "cfg-if", "cfg_aliases", "document-features", @@ -8613,7 +8763,7 @@ dependencies = [ "arrayvec 0.7.6", "bit-set", "bit-vec", - "bitflags 2.10.0", + "bitflags 2.11.0", "cfg_aliases", "document-features", "hashbrown 0.15.5", @@ -8672,7 +8822,7 @@ dependencies = [ "arrayvec 0.7.6", "ash", "bit-set", - "bitflags 2.10.0", + "bitflags 2.11.0", "block", "bytemuck", "cfg-if", @@ -8716,7 +8866,7 @@ version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eca7a8d8af57c18f57d393601a1fb159ace8b2328f1b6b5f80893f7d672c9ae2" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", "bytemuck", "js-sys", "log", @@ -8842,7 +8992,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -8853,7 +9003,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -8864,7 +9014,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -8875,7 +9025,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -9113,9 +9263,18 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.14" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" dependencies = [ "memchr", ] @@ -9125,6 +9284,88 @@ name = "wit-bindgen" version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.0", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] [[package]] name = "wrapcenum-derive" @@ -9135,7 +9376,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -9155,9 +9396,9 @@ dependencies = [ [[package]] name = "writeable" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" [[package]] name = "xattr" @@ -9166,7 +9407,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "rustix 1.1.3", + "rustix 1.1.4", ] [[package]] @@ -9207,12 +9448,12 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" dependencies = [ "stable_deref_trait", - "yoke-derive 0.8.1", + "yoke-derive 0.8.2", "zerofrom", ] @@ -9224,60 +9465,60 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "synstructure 0.13.2", ] [[package]] name = "yoke-derive" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "synstructure 0.13.2", ] [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "zerofrom" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "synstructure 0.13.2", ] @@ -9300,12 +9541,12 @@ dependencies = [ [[package]] name = "zerotrie" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" dependencies = [ "displaydoc", - "yoke 0.8.1", + "yoke 0.8.2", "zerofrom", ] @@ -9322,13 +9563,13 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" dependencies = [ - "yoke 0.8.1", + "yoke 0.8.2", "zerofrom", - "zerovec-derive 0.11.2", + "zerovec-derive 0.11.3", ] [[package]] @@ -9339,18 +9580,18 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "zerovec-derive" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -9375,9 +9616,9 @@ dependencies = [ [[package]] name = "zip" -version = "7.4.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc12baa6db2b15a140161ce53d72209dacea594230798c24774139b54ecaa980" +checksum = "c42e33efc22a0650c311c2ef19115ce232583abbe80850bc8b66509ebef02de0" dependencies = [ "crc32fast", "indexmap", @@ -9387,9 +9628,9 @@ dependencies = [ [[package]] name = "zmij" -version = "1.0.19" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff05f8caa9038894637571ae6b9e29466c1f4f829d26c9b28f869a29cbe3445" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" [[package]] name = "zstd" @@ -9420,12 +9661,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "zune-core" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" - [[package]] name = "zune-core" version = "0.5.1" @@ -9443,18 +9678,9 @@ dependencies = [ [[package]] name = "zune-jpeg" -version = "0.4.21" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" dependencies = [ - "zune-core 0.4.12", -] - -[[package]] -name = "zune-jpeg" -version = "0.5.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "410e9ecef634c709e3831c2cfdb8d9c32164fae1c67496d5b68fff728eec37fe" -dependencies = [ - "zune-core 0.5.1", + "zune-core", ] diff --git a/client_web/Cargo.toml b/client_web/Cargo.toml index f7b3957..e911eaf 100644 --- a/client_web/Cargo.toml +++ b/client_web/Cargo.toml @@ -9,14 +9,14 @@ locales = ["en", "fr"] [dependencies] leptos_i18n = { version = "0.5", features = ["csr", "interpolate_display"] } -trictrac-store = { path = "../store" } -backbone-lib = { path = "../../forks/multiplayer/backbone-lib" } -leptos = { version = "0.7", features = ["csr"] } -serde = { version = "1.0", features = ["derive"] } -serde_json = "1" -futures = "0.3" -rand = "0.9" -gloo-storage = "0.3" +trictrac-store = { path = "../store" } +backbone-lib = { path = "../../forks/multiplayer/backbone-lib" } +leptos = { version = "0.7", features = ["csr"] } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1" +futures = "0.3" +rand = "0.9" +gloo-storage = "0.3" [target.'cfg(target_arch = "wasm32")'.dependencies] wasm-bindgen-futures = "0.4" @@ -24,3 +24,14 @@ gloo-timers = { version = "0.3", features = ["futures"] } # getrandom 0.3 requires an explicit WASM backend; "wasm_js" uses window.crypto.getRandomValues. # Must be a direct dependency (not just transitive) for the feature to take effect. getrandom = { version = "0.3", features = ["wasm_js"] } +web-sys = { version = "0.3", features = [ + "AudioContext", + "AudioParam", + "AudioNode", + "AudioDestinationNode", + "AudioScheduledSourceNode", + "GainNode", + "OscillatorNode", + "OscillatorType", + "BaseAudioContext", +] } diff --git a/client_web/src/components/game_screen.rs b/client_web/src/components/game_screen.rs index 072b827..76ceed9 100644 --- a/client_web/src/components/game_screen.rs +++ b/client_web/src/components/game_screen.rs @@ -40,9 +40,15 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { let pending = use_context::>>().expect("pending not found in context"); let cmd_tx_effect = cmd_tx.clone(); - Effect::new(move |_| { + // Tracks staged_moves length across Effect runs so we can detect additions. + Effect::new(move |prev_len: Option| { let moves = staged_moves.get(); - if moves.len() == 2 { + let n = moves.len(); + // Play checker sound whenever a move is added (own moves, immediate feedback). + if prev_len.map_or(false, |p| n > p) { + crate::sound::play_checker_move(); + } + if n == 2 { let to_cm = |&(from, to): &(u8, u8)| { CheckerMove::new(from as usize, to as usize).unwrap_or_default() }; @@ -55,6 +61,7 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { staged_moves.set(vec![]); selected_origin.set(None); } + n }); // ── Auto-roll effect ───────────────────────────────────────────────────── @@ -162,6 +169,24 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { fields }; + // ── Sound effects (fire once on mount = once per state snapshot) ────────── + // Dice roll: dice just appeared (no preceding moves in this snapshot). + if show_dice && last_moves.is_none() { + crate::sound::play_dice_roll_cinematic(); + } + // Checker move: moves were committed in the preceding action. + if last_moves.is_some() { + crate::sound::play_checker_move(); + } + // Scoring: hole takes priority over plain points. + if let Some(ref ev) = my_scored_event { + if ev.holes_gained > 0 { + crate::sound::play_hole_scored(); + } else { + crate::sound::play_points_scored(); + } + } + // ── Capture for closures ─────────────────────────────────────────────────── let stage = vs.stage.clone(); let turn_stage = vs.turn_stage.clone(); @@ -322,10 +347,11 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { // ── Game-over overlay ───────────────────────────────────────────── {stage_is_ended.then(|| { - let winner_text = if winner_is_me { + let opp_name_end_clone = opp_name_end.clone(); + let winner_text = move || if winner_is_me { t_string!(i18n, you_win).to_owned() } else { - t_string!(i18n, opp_wins, name = opp_name_end.as_str()) + t_string!(i18n, opp_wins, name = opp_name_end_clone.as_str()) }; view! {
diff --git a/client_web/src/main.rs b/client_web/src/main.rs index 209ae60..f0952a0 100644 --- a/client_web/src/main.rs +++ b/client_web/src/main.rs @@ -2,6 +2,7 @@ leptos_i18n::load_locales!(); mod app; mod components; +mod sound; mod trictrac; use app::App; diff --git a/client_web/src/sound.rs b/client_web/src/sound.rs new file mode 100644 index 0000000..4e2c815 --- /dev/null +++ b/client_web/src/sound.rs @@ -0,0 +1,171 @@ +//! Synthesised sound effects using the Web Audio API. +//! +//! All public functions are no-ops on non-WASM targets so callers need no +//! `#[cfg]` guards themselves. + +#[cfg(target_arch = "wasm32")] +mod inner { + use std::cell::RefCell; + use web_sys::{AudioContext, OscillatorType}; + + thread_local! { + static CTX: RefCell> = const { RefCell::new(None) }; + } + + fn with_ctx(f: F) { + CTX.with(|cell| { + let mut opt = cell.borrow_mut(); + if opt.is_none() { + *opt = AudioContext::new().ok(); + } + if let Some(ctx) = opt.as_ref() { + f(ctx); + } + }); + } + + /// Schedule a single oscillator tone with an exponential gain decay. + /// + /// - `start_offset`: seconds from `ctx.current_time()` when the tone starts + /// - `duration`: how long (in seconds) until gain reaches ~0 + fn play_tone( + ctx: &AudioContext, + freq: f32, + gain: f32, + duration: f64, + start_offset: f64, + wave: OscillatorType, + ) { + let t0 = ctx.current_time() + start_offset; + let t1 = t0 + duration; + + let Ok(osc) = ctx.create_oscillator() else { + return; + }; + let Ok(gain_node) = ctx.create_gain() else { + return; + }; + + osc.set_type(wave); + osc.frequency().set_value(freq); + + let gain_param = gain_node.gain(); + let _ = gain_param.set_value_at_time(gain, t0); + // exponential_ramp requires a positive target; 0.001 is inaudible + let _ = gain_param.exponential_ramp_to_value_at_time(0.001, t1); + + let dest = ctx.destination(); + let _ = osc.connect_with_audio_node(&gain_node); + let _ = gain_node.connect_with_audio_node(&dest); + + let _ = osc.start_with_when(t0); + let _ = osc.stop_with_when(t1); + } + + /// Short wooden clack: sine fundamental + triangle body resonance, ~80 ms. + pub fn play_checker_move() { + with_ctx(|ctx| { + // Sine at 300 Hz for the clean attack click + play_tone(ctx, 300.0, 0.55, 0.080, 0.000, OscillatorType::Sine); + // Triangle at 150 Hz for the woody body resonance + play_tone(ctx, 150.0, 0.35, 0.070, 0.005, OscillatorType::Triangle); + // Sub at 80 Hz for weight + play_tone(ctx, 80.0, 0.20, 0.060, 0.008, OscillatorType::Triangle); + }); + } + + /// Cinematic dice roll: ~500 ms of rolling texture + 5 impact transients. + /// + /// Two layers: + /// - A dense series of detuned sawtooth bursts that thin out over time, + /// modelling the continuous scrape/rattle of dice tumbling. + /// - Five percussive impacts (square clicks + triangle thuds) whose + /// inter-arrival gap shrinks as the dice decelerate and settle. + pub fn play_dice_roll_cinematic() { + with_ctx(|ctx| { + // ── Continuous rolling texture ───────────────────────────────── + // 16 steps over 440 ms; each step is two detuned sawtooth waves + // (the interference between them produces a noise-like texture). + // Gain fades by ~55 % from first to last step. + const N: u32 = 16; + for i in 0..N { + let t = i as f64 * 0.028; + let g = 0.017 * (1.0 - i as f32 / N as f32 * 0.55); + // Quasi-random frequencies so each step sounds different. + let f1 = 310.0 + (i as f32 * 29.3 % 280.0); + let f2 = 480.0 + (i as f32 * 43.7 % 220.0); + play_tone(ctx, f1, g, 0.028, t, OscillatorType::Sawtooth); + play_tone(ctx, f2, g * 0.70, 0.028, t, OscillatorType::Sawtooth); + } + + // ── Impact transients ────────────────────────────────────────── + // Gaps narrow toward the end (0.13 → 0.11 → 0.10 → 0.08 s), + // mimicking dice decelerating and settling. + let impacts: &[(f64, f32)] = &[(0.00, 1.00), (0.13, 0.8), (0.24, 0.54), (0.34, 0.30)]; + for &(t_off, amp) in impacts { + // Hard click: bright square partials → percussive attack + for &freq in &[700.0f32, 1_050.0, 1_500.0] { + play_tone(ctx, freq, amp * 0.03, 0.022, t_off, OscillatorType::Square); + } + // Woody body thud: two low triangle partials + play_tone( + ctx, + 130.0, + amp * 0.05, + 0.070, + t_off, + OscillatorType::Triangle, + ); + play_tone( + ctx, + 68.0, + amp * 0.07, + 0.090, + t_off, + OscillatorType::Triangle, + ); + } + }); + } + + /// Ascending three-note chime (C5 – E5 – G5). + pub fn play_points_scored() { + with_ctx(|ctx| { + let notes: [(f32, f64); 3] = [(523.25, 0.0), (659.25, 0.14), (783.99, 0.28)]; + for (freq, offset) in notes { + play_tone(ctx, freq, 0.28, 0.30, offset, OscillatorType::Sine); + } + }); + } + + /// Triumphant four-note fanfare (C5 – E5 – G5 – C6). + pub fn play_hole_scored() { + with_ctx(|ctx| { + let notes: [(f32, f64, f64); 4] = [ + (523.25, 0.0, 0.35), + (659.25, 0.17, 0.35), + (783.99, 0.34, 0.35), + (1046.5, 0.51, 0.55), + ]; + for (freq, offset, dur) in notes { + play_tone(ctx, freq, 0.32, dur, offset, OscillatorType::Sine); + } + }); + } +} + +// ── Public API: WASM delegates to `inner`, other targets are no-ops ─────────── + +#[cfg(target_arch = "wasm32")] +pub use inner::{ + play_checker_move, play_dice_roll_cinematic, play_hole_scored, play_points_scored, +}; + +#[cfg(not(target_arch = "wasm32"))] +pub fn play_checker_move() {} +#[cfg(not(target_arch = "wasm32"))] +pub fn play_dice_roll_cinematic() {} +#[cfg(not(target_arch = "wasm32"))] +pub fn play_points_scored() {} +#[cfg(not(target_arch = "wasm32"))] +pub fn play_hole_scored() {} From 703803e3298a88890e9995d7338718db021049c3 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sat, 11 Apr 2026 19:12:54 +0200 Subject: [PATCH 19/78] fix(client_web): fix slidie dice jans --- client_web/src/components/game_screen.rs | 15 +++++-- client_web/src/components/scoring.rs | 53 ++++++++++++++++-------- 2 files changed, 46 insertions(+), 22 deletions(-) diff --git a/client_web/src/components/game_screen.rs b/client_web/src/components/game_screen.rs index 76ceed9..24042be 100644 --- a/client_web/src/components/game_screen.rs +++ b/client_web/src/components/game_screen.rs @@ -1,3 +1,4 @@ +use std::cell::Cell; use std::collections::VecDeque; use futures::channel::mpsc::UnboundedSender; @@ -40,14 +41,19 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { let pending = use_context::>>().expect("pending not found in context"); let cmd_tx_effect = cmd_tx.clone(); - // Tracks staged_moves length across Effect runs so we can detect additions. - Effect::new(move |prev_len: Option| { + // Non-reactive counter so we can detect when staged_moves grows without + // returning a value from the Effect (which causes a Leptos reactive loop + // when the Effect also writes to the same signal it reads). + let prev_staged_len = Cell::new(0usize); + + Effect::new(move |_| { let moves = staged_moves.get(); let n = moves.len(); // Play checker sound whenever a move is added (own moves, immediate feedback). - if prev_len.map_or(false, |p| n > p) { + if n > prev_staged_len.get() { crate::sound::play_checker_move(); } + prev_staged_len.set(n); if n == 2 { let to_cm = |&(from, to): &(u8, u8)| { CheckerMove::new(from as usize, to as usize).unwrap_or_default() @@ -60,8 +66,9 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { .ok(); staged_moves.set(vec![]); selected_origin.set(None); + // Reset the counter so the next turn starts clean. + prev_staged_len.set(0); } - n }); // ── Auto-roll effect ───────────────────────────────────────────────────── diff --git a/client_web/src/components/scoring.rs b/client_web/src/components/scoring.rs index f463969..4a19a81 100644 --- a/client_web/src/components/scoring.rs +++ b/client_web/src/components/scoring.rs @@ -5,6 +5,8 @@ use leptos::prelude::*; use trictrac_store::CheckerMove; #[cfg(target_arch = "wasm32")] use wasm_bindgen_futures::spawn_local; +#[cfg(target_arch = "wasm32")] +use std::sync::{Arc, atomic::{AtomicBool, Ordering}}; use crate::app::NetCommand; use crate::i18n::*; @@ -84,27 +86,42 @@ pub fn ScoringPanel( let hovered_ctx = use_context::>>(); - // On mount: show all this event's moves as board arrows immediately. - // After 3.4 s (0.45 s slide-in + 3 s display + guard), slide to peek - // and clear arrows. A cancellation flag prevents stale tasks from - // interfering when the component is replaced by a new scored event. + // On mount: show all this event's moves as board arrows immediately, + // then after 3.4 s slide to peek and clear the arrows. + // + // Two important constraints: + // 1. The initial hm.set() must be deferred (spawn_local, not sync in body) + // to avoid writing a reactive signal mid-render while Board reads it — + // that triggers Leptos's cycle guard → `unreachable` WASM panic. + // 2. The cancellation flag must be Rc>, NOT RwSignal. + // RwSignal is a NodeId into Leptos's arena; the arena slot is freed + // when ScoringPanel's owner drops (on every GameScreen remount). If the + // 3.4 s future outlives the component and calls is_alive.get_untracked() + // on a freed slot, that also panics with `unreachable`. Rc> + // is reference-counted outside the arena and stays valid for as long as + // the future holds onto it. + #[cfg(target_arch = "wasm32")] if let Some(hm) = hovered_ctx { - hm.set(all_moves.clone()); + let is_alive = Arc::new(AtomicBool::new(true)); + let is_alive_cleanup = is_alive.clone(); + // on_cleanup requires Send + Sync; Arc satisfies both. + on_cleanup(move || is_alive_cleanup.store(false, Ordering::Relaxed)); - #[cfg(target_arch = "wasm32")] - { - let is_alive = RwSignal::new(true); - on_cleanup(move || is_alive.set(false)); + spawn_local(async move { + // Show arrows (runs in the next microtask, after render settles). + hm.set(all_moves); - spawn_local(async move { - TimeoutFuture::new(3_400).await; - if !is_alive.get_untracked() { - return; - } - hm.set(vec![]); - peeked.set(true); - }); - } + TimeoutFuture::new(3_400).await; + // Guard: component may have been destroyed while we were waiting. + // is_alive was set to false by on_cleanup, which runs before Leptos + // frees the signal arena slots — so peeked is still valid iff this + // returns true. + if !is_alive.load(Ordering::Relaxed) { + return; + } + hm.set(vec![]); + peeked.set(true); + }); } let jan_rows: Vec<_> = event.jans.into_iter().map(scoring_jan_row).collect(); From 58f83ea985f72be3bcca3f2f90811d70160de685 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sat, 11 Apr 2026 21:32:15 +0200 Subject: [PATCH 20/78] fix(store): move rules (wip: failing tests) --- store/src/game_rules_moves.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/store/src/game_rules_moves.rs b/store/src/game_rules_moves.rs index d695d84..1759c62 100644 --- a/store/src/game_rules_moves.rs +++ b/store/src/game_rules_moves.rs @@ -954,6 +954,22 @@ mod tests { state.moves_allowed(&moves) ); + state.board.set_positions( + &Color::White, + [ + 6, 0, 0, 0, 0, 0, 2, 2, 1, 2, 0, 2, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ], + ); + state.dice.values = (3, 3); + let moves = ( + CheckerMove::new(14, 11).unwrap(), + CheckerMove::new(14, 11).unwrap(), + ); + assert_eq!( + Err(MoveError::OpponentCanFillQuarter), + state.moves_allowed(&moves) + ); + state.board.set_positions( &Color::White, [ @@ -1261,6 +1277,19 @@ mod tests { ); assert!(!state.moves_possible(&moves)); + state.board.set_positions( + &Color::White, + [ + 0, 0, 0, 0, 0, 0, 6, 2, 2, 2, 2, 2, -2, -6, -1, -3, -1, 0, -2, 0, 0, 0, 0, 0, + ], + ); + state.dice.values = (5, 5); + let moves = ( + CheckerMove::new(10, 15).unwrap(), + CheckerMove::new(15, 20).unwrap(), + ); + assert!(state.moves_possible(&moves)); + // black moves let state = MoveRules::new(&Color::Black, &Board::default(), Dice::default()); let moves = ( From dd4814e448331609d6e3fbfd272bdd9778e464bd Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sun, 12 Apr 2026 21:01:37 +0200 Subject: [PATCH 21/78] feat(client_web): text content --- client_web/locales/en.json | 2 +- client_web/locales/fr.json | 2 +- client_web/src/components/login_screen.rs | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/client_web/locales/en.json b/client_web/locales/en.json index 94c2baa..f390ce4 100644 --- a/client_web/locales/en.json +++ b/client_web/locales/en.json @@ -7,7 +7,7 @@ "waiting_for_opponent": "Waiting for opponent…", "your_turn_roll": "Your turn — roll the dice", "hold_or_go": "Hold or Go?", - "select_move": "Select move {{ n }} of 2", + "select_move": "Move a checker ({{ n }} of 2)", "your_turn": "Your turn", "opponent_turn": "Opponent's turn", "room_label": "Room: {{ id }}", diff --git a/client_web/locales/fr.json b/client_web/locales/fr.json index 397713d..910d7c0 100644 --- a/client_web/locales/fr.json +++ b/client_web/locales/fr.json @@ -7,7 +7,7 @@ "waiting_for_opponent": "En attente de l'adversaire…", "your_turn_roll": "À votre tour — lancez les dés", "hold_or_go": "Tenir ou s'en aller ?", - "select_move": "Sélectionner le coup {{ n }} sur 2", + "select_move": "Déplacez une dame ({{ n }} sur 2)", "your_turn": "Votre tour", "opponent_turn": "Tour de l'adversaire", "room_label": "Salle : {{ id }}", diff --git a/client_web/src/components/login_screen.rs b/client_web/src/components/login_screen.rs index 689d0d7..1f70887 100644 --- a/client_web/src/components/login_screen.rs +++ b/client_web/src/components/login_screen.rs @@ -40,9 +40,7 @@ pub fn LoginScreen(error: Option) -> impl IntoView {

"Trictrac"

From d779f7415a59498e8302f299a1b155427216288e Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sun, 12 Apr 2026 21:02:59 +0200 Subject: [PATCH 22/78] feat(web_client): browser console.log from backend --- client_web/src/app.rs | 64 ++++++++++++++++++++++-------- client_web/src/trictrac/backend.rs | 19 +++++++++ client_web/src/trictrac/types.rs | 46 +++++++++++++-------- store/src/game.rs | 13 +++++- 4 files changed, 107 insertions(+), 35 deletions(-) diff --git a/client_web/src/app.rs b/client_web/src/app.rs index 4ae4ad1..5ade2c3 100644 --- a/client_web/src/app.rs +++ b/client_web/src/app.rs @@ -12,7 +12,9 @@ use crate::components::{ConnectingScreen, GameScreen, LoginScreen}; use crate::i18n::I18nContextProvider; use crate::trictrac::backend::TrictracBackend; use crate::trictrac::bot_local::bot_decide; -use crate::trictrac::types::{GameDelta, JanEntry, PlayerAction, ScoredEvent, SerTurnStage, ViewState}; +use crate::trictrac::types::{ + GameDelta, JanEntry, PlayerAction, ScoredEvent, SerTurnStage, ViewState, +}; use trictrac_store::CheckerMove; use std::collections::VecDeque; @@ -194,7 +196,9 @@ pub fn App() -> impl IntoView { if remote_config.is_none() { loop { let restart = run_local_bot_game(screen, &mut cmd_rx, pending).await; - if !restart { break; } + if !restart { + break; + } } pending.update(|q| q.clear()); screen.set(Screen::Login { error: None }); @@ -328,8 +332,12 @@ async fn run_local_bot_game( let mut vs = ViewState::default_with_names("You", "Bot"); for cmd in backend.drain_commands() { match cmd { - BackendCommand::ResetViewState => { vs = backend.get_view_state().clone(); } - BackendCommand::Delta(delta) => { vs.apply_delta(&delta); } + BackendCommand::ResetViewState => { + vs = backend.get_view_state().clone(); + } + BackendCommand::Delta(delta) => { + vs.apply_delta(&delta); + } _ => {} } } @@ -440,15 +448,21 @@ fn compute_scored_event(prev: &ViewState, next: &ViewState, player_id: u16) -> O && prev.active_mp_player == Some(player_id) { // My own roll: positive totals are mine. - next.dice_jans.iter().filter(|e| e.total > 0).cloned().collect() - } else if next.active_mp_player == Some(player_id) - && prev.active_mp_player != Some(player_id) - { + next.dice_jans + .iter() + .filter(|e| e.total > 0) + .cloned() + .collect() + } else if next.active_mp_player == Some(player_id) && prev.active_mp_player != Some(player_id) { // Opponent just moved: negative totals (their penalty) are scored for me. next.dice_jans .iter() .filter(|e| e.total < 0) - .map(|e| JanEntry { total: -e.total, points_per: -e.points_per, ..e.clone() }) + .map(|e| JanEntry { + total: -e.total, + points_per: -e.points_per, + ..e.clone() + }) .collect() } else { return None; @@ -496,7 +510,10 @@ fn push_or_show( }); // Animation belongs to the buffered confirmation step; clear it on the // fallback live state so it doesn't fire again after the queue drains. - screen.set(Screen::Playing(GameUiState { last_moves: None, ..new_state })); + screen.set(Screen::Playing(GameUiState { + last_moves: None, + ..new_state + })); } else { // No pause: show scoring directly on the live state. screen.set(Screen::Playing(GameUiState { @@ -519,8 +536,7 @@ fn infer_pause_reason(prev: &ViewState, next: &ViewState, player_id: u16) -> Opt return Some(PauseReason::AfterOpponentRoll); } // Was at HoldOrGoChoice, now Move, opponent still active → opponent went. - if prev.turn_stage == SerTurnStage::HoldOrGoChoice - && next.turn_stage == SerTurnStage::Move + if prev.turn_stage == SerTurnStage::HoldOrGoChoice && next.turn_stage == SerTurnStage::Move { return Some(PauseReason::AfterOpponentGo); } @@ -534,14 +550,18 @@ fn infer_pause_reason(prev: &ViewState, next: &ViewState, player_id: u16) -> Opt None } - #[cfg(test)] mod tests { use super::*; use crate::trictrac::types::{PlayerScore, SerStage, SerTurnStage}; fn score() -> PlayerScore { - PlayerScore { name: String::new(), points: 0, holes: 0, can_bredouille: false } + PlayerScore { + name: String::new(), + points: 0, + holes: 0, + can_bredouille: false, + } } fn vs(dice: (u8, u8), turn_stage: SerTurnStage, active: Option) -> ViewState { @@ -554,6 +574,7 @@ mod tests { dice, dice_jans: Vec::new(), dice_moves: (CheckerMove::default(), CheckerMove::default()), + message: "".into(), } } @@ -561,21 +582,30 @@ mod tests { fn dice_change_is_after_roll() { let prev = vs((0, 0), SerTurnStage::RollDice, Some(1)); let next = vs((3, 5), SerTurnStage::Move, Some(1)); - assert_eq!(infer_pause_reason(&prev, &next, 0), Some(PauseReason::AfterOpponentRoll)); + assert_eq!( + infer_pause_reason(&prev, &next, 0), + Some(PauseReason::AfterOpponentRoll) + ); } #[test] fn hold_to_move_is_after_go() { let prev = vs((3, 5), SerTurnStage::HoldOrGoChoice, Some(1)); let next = vs((3, 5), SerTurnStage::Move, Some(1)); - assert_eq!(infer_pause_reason(&prev, &next, 0), Some(PauseReason::AfterOpponentGo)); + assert_eq!( + infer_pause_reason(&prev, &next, 0), + Some(PauseReason::AfterOpponentGo) + ); } #[test] fn turn_switch_is_after_move() { let prev = vs((3, 5), SerTurnStage::Move, Some(1)); let next = vs((3, 5), SerTurnStage::RollDice, Some(0)); - assert_eq!(infer_pause_reason(&prev, &next, 0), Some(PauseReason::AfterOpponentMove)); + assert_eq!( + infer_pause_reason(&prev, &next, 0), + Some(PauseReason::AfterOpponentMove) + ); } #[test] diff --git a/client_web/src/trictrac/backend.rs b/client_web/src/trictrac/backend.rs index e96f080..486c3b9 100644 --- a/client_web/src/trictrac/backend.rs +++ b/client_web/src/trictrac/backend.rs @@ -167,6 +167,8 @@ impl BackEndArchitecture for TrictracBackend moves: (m1, m2), }; if self.game.validate(&event) { + let message = format!("Event {:?} validated on {:?}", event, self.game); + console_log(message); let _ = self.game.consume(&event); self.drive_automatic_stages(); } @@ -330,3 +332,20 @@ mod tests { .any(|c| matches!(c, BackendCommand::TerminateRoom))); } } + +// ── Public API: WASM delegates to `inner`, other targets are no-ops ─────────── + +#[cfg(target_arch = "wasm32")] +mod inner { + use web_sys::console; + + pub fn console_log(message: String) { + console::log_1(&message.into()); + } +} + +#[cfg(target_arch = "wasm32")] +pub use inner::console_log; + +#[cfg(not(target_arch = "wasm32"))] +pub fn console_log(message: String) {} diff --git a/client_web/src/trictrac/types.rs b/client_web/src/trictrac/types.rs index 82f9a2d..f431482 100644 --- a/client_web/src/trictrac/types.rs +++ b/client_web/src/trictrac/types.rs @@ -70,8 +70,18 @@ impl ViewState { turn_stage: SerTurnStage::RollDice, active_mp_player: None, scores: [ - PlayerScore { name: host_name.to_string(), points: 0, holes: 0, can_bredouille: false }, - PlayerScore { name: guest_name.to_string(), points: 0, holes: 0, can_bredouille: false }, + PlayerScore { + name: host_name.to_string(), + points: 0, + holes: 0, + can_bredouille: false, + }, + PlayerScore { + name: guest_name.to_string(), + points: 0, + holes: 0, + can_bredouille: false, + }, ], dice: (0, 0), dice_jans: Vec::new(), @@ -86,25 +96,21 @@ impl ViewState { /// Convert a store `GameState` to a `ViewState`. /// `host_store_id` and `guest_store_id` are the trictrac `PlayerId`s assigned /// to the host (mp player 0) and guest (mp player 1) respectively. - pub fn from_game_state( - gs: &GameState, - host_store_id: u64, - guest_store_id: u64, - ) -> Self { + pub fn from_game_state(gs: &GameState, host_store_id: u64, guest_store_id: u64) -> Self { let board_vec = gs.board.to_vec(); let board: [i8; 24] = board_vec.try_into().expect("board is always 24 fields"); let stage = match gs.stage { Stage::PreGame => SerStage::PreGame, - Stage::InGame => SerStage::InGame, - Stage::Ended => SerStage::Ended, + Stage::InGame => SerStage::InGame, + Stage::Ended => SerStage::Ended, }; let turn_stage = match gs.turn_stage { - TurnStage::RollDice => SerTurnStage::RollDice, - TurnStage::RollWaiting => SerTurnStage::RollWaiting, - TurnStage::MarkPoints => SerTurnStage::MarkPoints, + TurnStage::RollDice => SerTurnStage::RollDice, + TurnStage::RollWaiting => SerTurnStage::RollWaiting, + TurnStage::MarkPoints => SerTurnStage::MarkPoints, TurnStage::HoldOrGoChoice => SerTurnStage::HoldOrGoChoice, - TurnStage::Move => SerTurnStage::Move, + TurnStage::Move => SerTurnStage::Move, TurnStage::MarkAdvPoints => SerTurnStage::MarkAdvPoints, }; @@ -125,7 +131,12 @@ impl ViewState { holes: p.holes, can_bredouille: p.can_bredouille, }) - .unwrap_or_else(|| PlayerScore { name: String::new(), points: 0, holes: 0, can_bredouille: false }) + .unwrap_or_else(|| PlayerScore { + name: String::new(), + points: 0, + holes: 0, + can_bredouille: false, + }) }; // is_double for scoring: dice show the same value (both dice identical). @@ -134,13 +145,16 @@ impl ViewState { // Build JanEntry list from the PossibleJans map. let empty_move = CheckerMove::new(0, 0).unwrap_or_default(); - let mut dice_jans: Vec = gs.dice_jans + let mut dice_jans: Vec = gs + .dice_jans .iter() .map(|(jan, moves)| { // HelplessMan: is_double = true only when *both* dice are unplayable // (the moves list contains a single (empty, empty) sentinel). let is_double = if *jan == Jan::HelplessMan { - moves.first().map(|&(m1, m2)| m1 == empty_move && m2 == empty_move) + moves + .first() + .map(|&(m1, m2)| m1 == empty_move && m2 == empty_move) .unwrap_or(false) } else { dice_are_double diff --git a/store/src/game.rs b/store/src/game.rs index 9c5233f..da074b9 100644 --- a/store/src/game.rs +++ b/store/src/game.rs @@ -80,6 +80,7 @@ pub struct GameState { roll_first: bool, // NOTE: add to a Setting struct if other fields needed pub schools_enabled: bool, + pub debug_message: String, } // implement Display trait @@ -119,6 +120,7 @@ impl Default for GameState { dice_jans: PossibleJans::default(), roll_first: true, schools_enabled: false, + debug_message: "".into(), } } } @@ -147,6 +149,11 @@ impl GameState { game } + pub fn get_debug_message(&self) -> String { + // format!("{:?}", self.history.last()) + format!("{:?}", self.debug_message) + } + pub fn mirror(&self) -> GameState { let mirrored_active_player = if self.active_player_id == 1 { 2 } else { 1 }; let mut mirrored_players = HashMap::new(); @@ -171,6 +178,7 @@ impl GameState { dice_jans: self.dice_jans.mirror(), roll_first: self.roll_first, schools_enabled: self.schools_enabled, + debug_message: self.debug_message.clone(), } } @@ -594,8 +602,9 @@ impl GameState { dice_points: (0, 0), dice_moves: (CheckerMove::default(), CheckerMove::default()), dice_jans: PossibleJans::default(), - roll_first: false, // Assume not first roll - schools_enabled: false, // Assume disabled + roll_first: false, // Assume not first roll + schools_enabled: false, // Assume disabled + debug_message: "".into(), // Assume disabled }) } From 7e8d0a18c1e74f26e3b7faa29eb2e768d78cefd5 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sun, 12 Apr 2026 21:03:43 +0200 Subject: [PATCH 23/78] chore(web_client): refact --- client_web/src/trictrac/bot_local.rs | 2 +- store/src/game_rules_moves.rs | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/client_web/src/trictrac/bot_local.rs b/client_web/src/trictrac/bot_local.rs index 8941a09..9b379c8 100644 --- a/client_web/src/trictrac/bot_local.rs +++ b/client_web/src/trictrac/bot_local.rs @@ -15,7 +15,7 @@ pub fn bot_decide(game: &GameState) -> Option { } match game.turn_stage { TurnStage::RollDice => Some(PlayerAction::Roll), - TurnStage::HoldOrGoChoice => Some(PlayerAction::Go), + TurnStage::HoldOrGoChoice => Some(PlayerAction::Mark), TurnStage::Move => { let rules = MoveRules::new(&Color::Black, &game.board, game.dice); let sequences = rules.get_possible_moves_sequences(true, vec![]); diff --git a/store/src/game_rules_moves.rs b/store/src/game_rules_moves.rs index 1759c62..7554034 100644 --- a/store/src/game_rules_moves.rs +++ b/store/src/game_rules_moves.rs @@ -955,15 +955,15 @@ mod tests { ); state.board.set_positions( - &Color::White, + &Color::Black, [ - 6, 0, 0, 0, 0, 0, 2, 2, 1, 2, 0, 2, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, -1, 0, 2, 0, 0, 0, 1, 2, 0, -1, -1, 0, 2, 0, 0, 0, 0, 0, 0, -10, ], ); - state.dice.values = (3, 3); + state.dice.values = (4, 1); let moves = ( - CheckerMove::new(14, 11).unwrap(), - CheckerMove::new(14, 11).unwrap(), + CheckerMove::new(15, 14).unwrap().mirror(), + CheckerMove::new(14, 10).unwrap().mirror(), ); assert_eq!( Err(MoveError::OpponentCanFillQuarter), @@ -1277,6 +1277,7 @@ mod tests { ); assert!(!state.moves_possible(&moves)); + // Chaned moves: can't rest on a field occupied by one opponent's checker state.board.set_positions( &Color::White, [ @@ -1288,7 +1289,7 @@ mod tests { CheckerMove::new(10, 15).unwrap(), CheckerMove::new(15, 20).unwrap(), ); - assert!(state.moves_possible(&moves)); + assert!(!state.moves_possible(&moves)); // black moves let state = MoveRules::new(&Color::Black, &Board::default(), Dice::default()); From 43196bcef8156cb44dcf25c02f2cff0df35331ec Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Wed, 15 Apr 2026 19:51:31 +0200 Subject: [PATCH 24/78] fix(store): check_opponent_can_fill_quarter_rule on both checkers --- client_web/src/app.rs | 1 - store/src/game_rules_moves.rs | 35 ++++++++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/client_web/src/app.rs b/client_web/src/app.rs index 5ade2c3..aa86ca8 100644 --- a/client_web/src/app.rs +++ b/client_web/src/app.rs @@ -574,7 +574,6 @@ mod tests { dice, dice_jans: Vec::new(), dice_moves: (CheckerMove::default(), CheckerMove::default()), - message: "".into(), } } diff --git a/store/src/game_rules_moves.rs b/store/src/game_rules_moves.rs index 7554034..660acb7 100644 --- a/store/src/game_rules_moves.rs +++ b/store/src/game_rules_moves.rs @@ -257,11 +257,24 @@ impl MoveRules { &self, moves: &(CheckerMove, CheckerMove), ) -> Result<(), MoveError> { - let farthest = cmp::max(moves.0.get_to(), moves.1.get_to()); - let in_opponent_side = farthest > 12; - if in_opponent_side && self.board.is_quarter_fillable(Color::Black, farthest) { + // A chained move (tout d'une): the first destination is a resting field. + // Exception: a resting field in the opponent's big jan (13-18) is allowed + // during a chained move to pass into the return jan. + let is_chained = + moves.1.get_from() != 0 && moves.0.get_to() == moves.1.get_from(); + + if !is_chained { + let to0 = moves.0.get_to(); + if to0 > 12 && self.board.is_quarter_fillable(Color::Black, to0) { + return Err(MoveError::OpponentCanFillQuarter); + } + } + + let to1 = moves.1.get_to(); + if to1 > 12 && self.board.is_quarter_fillable(Color::Black, to1) { return Err(MoveError::OpponentCanFillQuarter); } + Ok(()) } @@ -970,6 +983,22 @@ mod tests { state.moves_allowed(&moves) ); + state.board.set_positions( + &Color::Black, + [ + 0, 0, 0, 0, -1, 1, 3, 0, 3, 4, 1, 3, 0, -2, -5, -2, -1, -4, 0, 0, 0, 0, 0, 0, + ], + ); + state.dice.values = (6, 2); + let moves = ( + CheckerMove::new(14, 8).unwrap().mirror(), + CheckerMove::new(5, 3).unwrap().mirror(), + ); + assert_eq!( + Err(MoveError::OpponentCanFillQuarter), + state.moves_allowed(&moves) + ); + state.board.set_positions( &Color::White, [ From 9af672823e518acb5187c71ccb696290689f0964 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Fri, 17 Apr 2026 20:04:40 +0200 Subject: [PATCH 25/78] feat(client_web): use a mp3 file for dice roll sound --- client_web/Cargo.toml | 1 + client_web/assets/diceroll.mp3 | Bin 0 -> 32896 bytes client_web/index.html | 1 + client_web/src/components/game_screen.rs | 2 +- client_web/src/sound.rs | 12 +++++++++++- 5 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 client_web/assets/diceroll.mp3 diff --git a/client_web/Cargo.toml b/client_web/Cargo.toml index e911eaf..10d91b8 100644 --- a/client_web/Cargo.toml +++ b/client_web/Cargo.toml @@ -34,4 +34,5 @@ web-sys = { version = "0.3", features = [ "OscillatorNode", "OscillatorType", "BaseAudioContext", + "HtmlAudioElement", ] } diff --git a/client_web/assets/diceroll.mp3 b/client_web/assets/diceroll.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b16adff42da3003b35d59566b353a5db2fa0c7b7 GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/client_web/index.html b/client_web/index.html index b661d76..7399dbc 100644 --- a/client_web/index.html +++ b/client_web/index.html @@ -6,6 +6,7 @@ Trictrac + diff --git a/client_web/src/components/game_screen.rs b/client_web/src/components/game_screen.rs index 24042be..4be98b8 100644 --- a/client_web/src/components/game_screen.rs +++ b/client_web/src/components/game_screen.rs @@ -179,7 +179,7 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { // ── Sound effects (fire once on mount = once per state snapshot) ────────── // Dice roll: dice just appeared (no preceding moves in this snapshot). if show_dice && last_moves.is_none() { - crate::sound::play_dice_roll_cinematic(); + crate::sound::play_dice_roll(); } // Checker move: moves were committed in the preceding action. if last_moves.is_some() { diff --git a/client_web/src/sound.rs b/client_web/src/sound.rs index 4e2c815..2de584a 100644 --- a/client_web/src/sound.rs +++ b/client_web/src/sound.rs @@ -128,6 +128,13 @@ mod inner { }); } + /// Play the pre-recorded dice-roll MP3 asset. + pub fn play_dice_roll() { + if let Ok(audio) = web_sys::HtmlAudioElement::new_with_src("/diceroll.mp3") { + let _ = audio.play(); + } + } + /// Ascending three-note chime (C5 – E5 – G5). pub fn play_points_scored() { with_ctx(|ctx| { @@ -158,12 +165,15 @@ mod inner { #[cfg(target_arch = "wasm32")] pub use inner::{ - play_checker_move, play_dice_roll_cinematic, play_hole_scored, play_points_scored, + play_checker_move, play_dice_roll, play_dice_roll_cinematic, play_hole_scored, + play_points_scored, }; #[cfg(not(target_arch = "wasm32"))] pub fn play_checker_move() {} #[cfg(not(target_arch = "wasm32"))] +pub fn play_dice_roll() {} +#[cfg(not(target_arch = "wasm32"))] pub fn play_dice_roll_cinematic() {} #[cfg(not(target_arch = "wasm32"))] pub fn play_points_scored() {} From b68881fc38591003ce29ec155132636515b671e9 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Fri, 17 Apr 2026 20:46:07 +0200 Subject: [PATCH 26/78] fix(client_web): when "holding" bot sends "Move" instead of "Mark" --- client_web/src/trictrac/backend.rs | 4 ++-- client_web/src/trictrac/bot_local.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client_web/src/trictrac/backend.rs b/client_web/src/trictrac/backend.rs index 486c3b9..2e51bd8 100644 --- a/client_web/src/trictrac/backend.rs +++ b/client_web/src/trictrac/backend.rs @@ -167,8 +167,8 @@ impl BackEndArchitecture for TrictracBackend moves: (m1, m2), }; if self.game.validate(&event) { - let message = format!("Event {:?} validated on {:?}", event, self.game); - console_log(message); + // let message = format!("Event {:?} validated on {:?}", event, self.game); + // console_log(message); let _ = self.game.consume(&event); self.drive_automatic_stages(); } diff --git a/client_web/src/trictrac/bot_local.rs b/client_web/src/trictrac/bot_local.rs index 9b379c8..d2a0ca3 100644 --- a/client_web/src/trictrac/bot_local.rs +++ b/client_web/src/trictrac/bot_local.rs @@ -15,8 +15,8 @@ pub fn bot_decide(game: &GameState) -> Option { } match game.turn_stage { TurnStage::RollDice => Some(PlayerAction::Roll), - TurnStage::HoldOrGoChoice => Some(PlayerAction::Mark), - TurnStage::Move => { + // TurnStage::HoldOrGoChoice => Some(PlayerAction::Go), + TurnStage::Move | TurnStage::HoldOrGoChoice => { let rules = MoveRules::new(&Color::Black, &game.board, game.dice); let sequences = rules.get_possible_moves_sequences(true, vec![]); let mut rng = rand::rng(); From 24f5dba0656a97977908c421080642465c36c9f3 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Fri, 17 Apr 2026 22:22:50 +0200 Subject: [PATCH 27/78] feat(client_web): pre-game roll decide first player --- client_web/assets/style.css | 60 +++++++++ client_web/locales/en.json | 6 + client_web/locales/fr.json | 6 + client_web/src/app.rs | 62 ++++++--- client_web/src/components/game_screen.rs | 68 +++++++++- client_web/src/trictrac/backend.rs | 161 +++++++++++++++++++---- client_web/src/trictrac/bot_local.rs | 18 ++- client_web/src/trictrac/types.rs | 21 +++ 8 files changed, 353 insertions(+), 49 deletions(-) diff --git a/client_web/assets/style.css b/client_web/assets/style.css index 3691894..9b80fbb 100644 --- a/client_web/assets/style.css +++ b/client_web/assets/style.css @@ -1131,3 +1131,63 @@ body { flex-wrap: wrap; min-height: 2rem; /* reserve height so layout doesn't shift when buttons appear */ } + +/* ── Pre-game ceremony overlay ──────────────────────────────────────────── */ +.ceremony-overlay { + position: fixed; + inset: 0; + background: rgba(0,0,0,0.65); + display: flex; + align-items: center; + justify-content: center; + z-index: 100; +} + +.ceremony-box { + background: var(--ui-parchment); + border-radius: 8px; + padding: 2.5rem 3rem; + text-align: center; + box-shadow: 0 12px 40px rgba(0,0,0,0.5), 0 0 0 2px var(--ui-gold-dark); + display: flex; + flex-direction: column; + align-items: center; + gap: 1.4rem; + min-width: 300px; + animation: game-over-appear 0.4s cubic-bezier(0.22, 0.61, 0.36, 1); +} + +.ceremony-box h2 { + font-family: var(--font-display); + font-size: 1.8rem; + font-weight: 600; + color: var(--ui-ink); + letter-spacing: 0.06em; +} + +.ceremony-dice { + display: flex; + gap: 3rem; + align-items: flex-end; +} + +.ceremony-die-slot { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.5rem; +} + +.ceremony-die-label { + font-family: var(--font-ui); + font-size: 0.85rem; + color: var(--ui-ink); + font-weight: 500; +} + +.ceremony-tie { + font-family: var(--font-display); + font-size: 1rem; + color: var(--ui-red-accent); + font-style: italic; +} diff --git a/client_web/locales/en.json b/client_web/locales/en.json index f390ce4..c29121d 100644 --- a/client_web/locales/en.json +++ b/client_web/locales/en.json @@ -42,6 +42,12 @@ "after_opponent_roll": "Opponent rolled", "after_opponent_go": "Opponent chose to continue", "after_opponent_move": "Opponent moved — your turn", + "after_opponent_pre_game_roll": "Opponent rolled — your turn", + "pre_game_roll_title": "Who goes first?", + "pre_game_roll_btn": "Roll", + "pre_game_roll_tie": "Tie! Roll again", + "pre_game_roll_your_die": "Your die", + "pre_game_roll_opp_die": "Opponent's die", "continue_btn": "Continue", "scored_pts": "+{{ n }} pts", "hole_made": "Hole! {{ holes }}/12", diff --git a/client_web/locales/fr.json b/client_web/locales/fr.json index 910d7c0..93f76e5 100644 --- a/client_web/locales/fr.json +++ b/client_web/locales/fr.json @@ -42,6 +42,12 @@ "after_opponent_roll": "L'adversaire a lancé les dés", "after_opponent_go": "L'adversaire s'en va", "after_opponent_move": "L'adversaire a joué — à vous", + "after_opponent_pre_game_roll": "L'adversaire a lancé — à vous", + "pre_game_roll_title": "Qui joue en premier ?", + "pre_game_roll_btn": "Lancer", + "pre_game_roll_tie": "Égalité ! Relancez", + "pre_game_roll_your_die": "Votre dé", + "pre_game_roll_opp_die": "Dé adverse", "continue_btn": "Continuer", "scored_pts": "+{{ n }} pts", "hole_made": "Trou ! {{ holes }}/12", diff --git a/client_web/src/app.rs b/client_web/src/app.rs index aa86ca8..cebdb17 100644 --- a/client_web/src/app.rs +++ b/client_web/src/app.rs @@ -13,7 +13,7 @@ use crate::i18n::I18nContextProvider; use crate::trictrac::backend::TrictracBackend; use crate::trictrac::bot_local::bot_decide; use crate::trictrac::types::{ - GameDelta, JanEntry, PlayerAction, ScoredEvent, SerTurnStage, ViewState, + GameDelta, JanEntry, PlayerAction, ScoredEvent, SerStage, SerTurnStage, ViewState, }; use trictrac_store::CheckerMove; @@ -48,6 +48,8 @@ pub enum PauseReason { AfterOpponentRoll, AfterOpponentGo, AfterOpponentMove, + /// Opponent rolled their die in the pre-game ceremony. + AfterOpponentPreGameRoll, } /// Which screen is currently shown. @@ -382,32 +384,35 @@ async fn run_local_bot_game( } loop { - match bot_decide(backend.get_game()) { + let pgr = backend.get_view_state().pre_game_roll.clone(); + match bot_decide(backend.get_game(), pgr.as_ref()) { None => break, Some(action) => { - let prev_vs = vs.clone(); backend.inform_rpc(1, action); + // Process each delta individually so intermediate ceremony + // states (both dice shown) can trigger a pause via push_or_show. for cmd in backend.drain_commands() { if let BackendCommand::Delta(delta) = cmd { + let delta_prev_vs = vs.clone(); vs.apply_delta(&delta); + push_or_show( + &delta_prev_vs, + GameUiState { + view_state: vs.clone(), + player_id: 0, + room_id: String::new(), + is_bot_game: true, + waiting_for_confirm: false, + pause_reason: None, + my_scored_event: None, + opp_scored_event: None, + last_moves: compute_last_moves(&delta_prev_vs, &vs), + }, + pending, + screen, + ); } } - push_or_show( - &prev_vs, - GameUiState { - view_state: vs.clone(), - player_id: 0, - room_id: String::new(), - is_bot_game: true, - waiting_for_confirm: false, - pause_reason: None, - my_scored_event: None, - opp_scored_event: None, - last_moves: compute_last_moves(&prev_vs, &vs), - }, - pending, - screen, - ); } } } @@ -530,6 +535,24 @@ fn push_or_show( fn infer_pause_reason(prev: &ViewState, next: &ViewState, player_id: u16) -> Option { let opponent_id = 1 - player_id; + // Pre-game ceremony: pause when both dice are revealed simultaneously + // (i.e. the second die was just rolled). Both players see this pause. + if next.stage == SerStage::PreGameRoll { + if let (Some(prev_pgr), Some(next_pgr)) = (&prev.pre_game_roll, &next.pre_game_roll) { + let both_now = next_pgr.host_die.is_some() && next_pgr.guest_die.is_some(); + let both_before = prev_pgr.host_die.is_some() && prev_pgr.guest_die.is_some(); + if both_now && !both_before { + return Some(PauseReason::AfterOpponentPreGameRoll); + } + } + return None; + } + + // Don't fire normal pause rules on the PreGameRoll → InGame transition. + if prev.stage == SerStage::PreGameRoll { + return None; + } + if next.active_mp_player == Some(opponent_id) { // Dice changed → opponent just rolled. if next.dice != prev.dice { @@ -574,6 +597,7 @@ mod tests { dice, dice_jans: Vec::new(), dice_moves: (CheckerMove::default(), CheckerMove::default()), + pre_game_roll: None, } } diff --git a/client_web/src/components/game_screen.rs b/client_web/src/components/game_screen.rs index 4be98b8..a94194f 100644 --- a/client_web/src/components/game_screen.rs +++ b/client_web/src/components/game_screen.rs @@ -7,7 +7,8 @@ use trictrac_store::{Board as StoreBoard, CheckerMove, Color, Dice as StoreDice, use crate::app::{GameUiState, NetCommand, PauseReason}; use crate::i18n::*; -use crate::trictrac::types::{PlayerAction, SerStage, SerTurnStage}; +use crate::trictrac::types::{PlayerAction, PreGameRollState, SerStage, SerTurnStage}; +use super::die::Die; use super::board::Board; use super::score_panel::PlayerScorePanel; @@ -78,7 +79,11 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { // Guard: suppressed while waiting_for_confirm — the AfterOpponentMove // buffered state shows the human's RollDice turn but the auto-roll must // wait until the buffer is drained and the live screen state is shown. - let show_roll = is_my_turn && vs.turn_stage == SerTurnStage::RollDice; + // Guard: never auto-roll during the pre-game ceremony (the ceremony overlay + // has its own Roll button for PlayerAction::PreGameRoll). + let show_roll = is_my_turn + && vs.turn_stage == SerTurnStage::RollDice + && vs.stage != SerStage::PreGameRoll; if show_roll && !waiting_for_confirm { let cmd_tx_auto = cmd_tx.clone(); Effect::new(move |_| { @@ -132,6 +137,13 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { let my_score = vs.scores[player_id as usize].clone(); let opp_score = vs.scores[1 - player_id as usize].clone(); + // ── Ceremony state (extracted before vs is moved into Board) ──────────────── + let is_ceremony = vs.stage == SerStage::PreGameRoll; + let pre_game_roll_data: Option = vs.pre_game_roll.clone(); + let my_name_ceremony = my_score.name.clone(); + let opp_name_ceremony = opp_score.name.clone(); + let cmd_tx_ceremony = cmd_tx.clone(); + // ── Scoring notifications ────────────────────────────────────────────────── let my_scored_event = state.my_scored_event.clone(); let opp_scored_event = state.opp_scored_event.clone(); @@ -246,6 +258,7 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { PauseReason::AfterOpponentRoll => t_string!(i18n, after_opponent_roll), PauseReason::AfterOpponentGo => t_string!(i18n, after_opponent_go), PauseReason::AfterOpponentMove => t_string!(i18n, after_opponent_move), + PauseReason::AfterOpponentPreGameRoll => t_string!(i18n, after_opponent_pre_game_roll), }); } let n = staged_moves.get().len(); @@ -254,7 +267,7 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { } else { String::from(match (&stage, is_my_turn, &turn_stage) { (SerStage::Ended, _, _) => t_string!(i18n, game_over), - (SerStage::PreGame, _, _) => t_string!(i18n, waiting_for_opponent), + (SerStage::PreGame, _, _) | (SerStage::PreGameRoll, _, _) => t_string!(i18n, waiting_for_opponent), (SerStage::InGame, true, SerTurnStage::RollDice) => t_string!(i18n, your_turn_roll), (SerStage::InGame, true, SerTurnStage::HoldOrGoChoice) => t_string!(i18n, hold_or_go), (SerStage::InGame, true, _) => t_string!(i18n, your_turn), @@ -352,6 +365,55 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { // ── Player score (below board) ──────────────────────────────────── + // ── Pre-game ceremony overlay ───────────────────────────────────── + {is_ceremony.then(|| { + let pgr = pre_game_roll_data.unwrap_or(PreGameRollState { + host_die: None, + guest_die: None, + tie_count: 0, + }); + let my_die = if player_id == 0 { pgr.host_die } else { pgr.guest_die }; + let opp_die = if player_id == 0 { pgr.guest_die } else { pgr.host_die }; + let can_roll = is_my_turn && !waiting_for_confirm; + let show_tie = pgr.tie_count > 0; + view! { +
+
+

{t!(i18n, pre_game_roll_title)}

+ {show_tie.then(|| view! { +

{t!(i18n, pre_game_roll_tie)}

+ })} +
+
+ {my_name_ceremony} + +
+
+ {opp_name_ceremony} + +
+
+ {waiting_for_confirm.then(|| { + let pending_c = pending; + view! { + + } + })} + {can_roll.then(|| { + let cmd_tx_c = cmd_tx_ceremony.clone(); + view! { + + } + })} +
+
+ } + })} + // ── Game-over overlay ───────────────────────────────────────────── {stage_is_ended.then(|| { let opp_name_end_clone = opp_name_end.clone(); diff --git a/client_web/src/trictrac/backend.rs b/client_web/src/trictrac/backend.rs index 2e51bd8..288f5e7 100644 --- a/client_web/src/trictrac/backend.rs +++ b/client_web/src/trictrac/backend.rs @@ -1,7 +1,7 @@ use backbone_lib::traits::{BackEndArchitecture, BackendCommand}; use trictrac_store::{DiceRoller, GameEvent, GameState, TurnStage}; -use crate::trictrac::types::{GameDelta, PlayerAction, ViewState}; +use crate::trictrac::types::{GameDelta, PlayerAction, PreGameRollState, SerStage, ViewState}; // Store PlayerId (u64) values used for the two players. const HOST_PLAYER_ID: u64 = 1; @@ -14,11 +14,32 @@ pub struct TrictracBackend { view_state: ViewState, /// Arrival flags: have host (index 0) and guest (index 1) joined? arrived: [bool; 2], + /// Die rolled by each player during the ceremony ([host, guest]). + pre_game_dice: [Option; 2], + /// Number of tied rounds so far. + tie_count: u8, + /// True while the first-player ceremony is running. + ceremony_started: bool, } impl TrictracBackend { fn sync_view_state(&mut self) { - self.view_state = ViewState::from_game_state(&self.game, HOST_PLAYER_ID, GUEST_PLAYER_ID); + let mut vs = ViewState::from_game_state(&self.game, HOST_PLAYER_ID, GUEST_PLAYER_ID); + if self.ceremony_started { + vs.stage = SerStage::PreGameRoll; + vs.pre_game_roll = Some(PreGameRollState { + host_die: self.pre_game_dice[0], + guest_die: self.pre_game_dice[1], + tie_count: self.tie_count, + }); + // The active mp player is whoever hasn't rolled yet (host rolls first). + vs.active_mp_player = match self.pre_game_dice { + [None, _] => Some(0), + [Some(_), None] => Some(1), + _ => None, + }; + } + self.view_state = vs; } fn broadcast_state(&mut self) { @@ -29,6 +50,42 @@ impl TrictracBackend { self.commands.push(BackendCommand::Delta(delta)); } + /// Process one ceremony die-roll for `mp_player` (0 = host, 1 = guest). + fn handle_pre_game_roll(&mut self, mp_player: u16) { + // Enforce turn order: host rolls first, then guest. + let expected: u16 = match self.pre_game_dice { + [None, _] => 0, + [Some(_), None] => 1, + _ => return, // both already rolled (shouldn't happen) + }; + if mp_player != expected { + return; + } + let idx = mp_player as usize; + let single = self.dice_roller.roll().values.0; + self.pre_game_dice[idx] = Some(single); + + if let [Some(h), Some(g)] = self.pre_game_dice { + // Both have rolled — broadcast both dice before resolving. + self.broadcast_state(); + if h == g { + // Tie: reset for another round. + self.tie_count += 1; + self.pre_game_dice = [None; 2]; + self.broadcast_state(); + } else { + // Highest die goes first. + let goes_first = if h > g { HOST_PLAYER_ID } else { GUEST_PLAYER_ID }; + self.ceremony_started = false; + let _ = self.game.consume(&GameEvent::BeginGame { goes_first }); + self.broadcast_state(); + } + } else { + // Only one die rolled so far — broadcast the partial result. + self.broadcast_state(); + } + } + /// Roll dice using the store's DiceRoller and fire Roll + RollResult events. fn do_roll(&mut self) { let dice = self.dice_roller.roll(); @@ -86,6 +143,9 @@ impl BackEndArchitecture for TrictracBackend commands: Vec::new(), view_state, arrived: [false; 2], + pre_game_dice: [None; 2], + tie_count: 0, + ceremony_started: false, } } @@ -110,11 +170,13 @@ impl BackEndArchitecture for TrictracBackend timer_id: mp_player, }); - // Start the game once both players have arrived. - if self.arrived[0] && self.arrived[1] && self.game.stage == trictrac_store::Stage::PreGame { - let _ = self.game.consume(&GameEvent::BeginGame { - goes_first: HOST_PLAYER_ID, - }); + // Start the ceremony once both players have arrived. + if self.arrived[0] && self.arrived[1] && self.game.stage == trictrac_store::Stage::PreGame + && !self.ceremony_started + { + self.ceremony_started = true; + self.pre_game_dice = [None; 2]; + self.tie_count = 0; self.sync_view_state(); self.commands.push(BackendCommand::ResetViewState); } else { @@ -135,6 +197,14 @@ impl BackEndArchitecture for TrictracBackend } fn inform_rpc(&mut self, mp_player: u16, action: PlayerAction) { + // During the first-player ceremony only PreGameRoll actions are accepted. + if self.ceremony_started { + if matches!(action, PlayerAction::PreGameRoll) { + self.handle_pre_game_roll(mp_player); + } + return; + } + if self.game.stage == trictrac_store::Stage::Ended { return; } @@ -167,8 +237,6 @@ impl BackEndArchitecture for TrictracBackend moves: (m1, m2), }; if self.game.validate(&event) { - // let message = format!("Event {:?} validated on {:?}", event, self.game); - // console_log(message); let _ = self.game.consume(&event); self.drive_automatic_stages(); } @@ -188,6 +256,7 @@ impl BackEndArchitecture for TrictracBackend self.drive_automatic_stages(); } } + PlayerAction::PreGameRoll => {} // ignored outside ceremony } self.broadcast_state(); @@ -216,6 +285,7 @@ impl BackEndArchitecture for TrictracBackend mod tests { use super::*; use backbone_lib::traits::BackEndArchitecture; + use crate::trictrac::types::{SerStage, SerTurnStage}; fn make_backend() -> TrictracBackend { TrictracBackend::new(0) @@ -233,28 +303,67 @@ mod tests { .collect() } + /// Drive the ceremony to completion (both players roll until one wins). + fn complete_ceremony(b: &mut TrictracBackend) { + loop { + if b.get_view_state().stage != SerStage::PreGameRoll { + break; + } + match b.get_view_state().active_mp_player { + Some(0) => b.inform_rpc(0, PlayerAction::PreGameRoll), + Some(1) => b.inform_rpc(1, PlayerAction::PreGameRoll), + _ => break, + } + b.drain_commands(); + } + } + #[test] - fn both_players_arrive_starts_game() { + fn both_players_arrive_starts_ceremony() { let mut b = make_backend(); b.player_arrival(0); // host b.drain_commands(); b.player_arrival(1); // guest let cmds = b.drain_commands(); - // ResetViewState should have been issued after BeginGame. + // ResetViewState should have been issued to start the ceremony. let has_reset = cmds .iter() .any(|c| matches!(c, BackendCommand::ResetViewState)); - assert!( - has_reset, - "expected ResetViewState after both players arrive" - ); + assert!(has_reset, "expected ResetViewState after both players arrive"); + + // Stage should now be PreGameRoll, not InGame. + assert_eq!(b.get_view_state().stage, SerStage::PreGameRoll); + } + + #[test] + fn ceremony_resolves_to_in_game() { + let mut b = make_backend(); + b.player_arrival(0); + b.player_arrival(1); + b.drain_commands(); + + complete_ceremony(&mut b); - // Game should now be InGame. - use crate::trictrac::types::SerStage; assert_eq!(b.get_view_state().stage, SerStage::InGame); } + #[test] + fn ceremony_wrong_order_ignored() { + let mut b = make_backend(); + b.player_arrival(0); + b.player_arrival(1); + b.drain_commands(); + + // Guest tries to roll before host (host goes first in ceremony). + b.inform_rpc(1, PlayerAction::PreGameRoll); + let cmds = b.drain_commands(); + assert!( + cmds.is_empty(), + "guest PreGameRoll should be ignored when it is host's turn" + ); + } + #[test] fn unknown_player_kicked() { let mut b = make_backend(); @@ -272,12 +381,15 @@ mod tests { b.player_arrival(1); b.drain_commands(); - // Host rolls (player_id 0, whose store id == HOST_PLAYER_ID == active after BeginGame). - b.inform_rpc(0, PlayerAction::Roll); + // Complete ceremony before rolling. + complete_ceremony(&mut b); + + // Roll for whoever won the ceremony (either player could go first). + let first_player = b.get_view_state().active_mp_player.expect("someone should be active"); + b.inform_rpc(first_player, PlayerAction::Roll); let states = drain_deltas(&mut b); assert!(!states.is_empty(), "expected a state broadcast after roll"); - use crate::trictrac::types::SerTurnStage; let last = states.last().unwrap(); assert!( matches!( @@ -298,13 +410,16 @@ mod tests { b.player_arrival(0); b.player_arrival(1); b.drain_commands(); + complete_ceremony(&mut b); - // Guest tries to roll when it's the host's turn. - b.inform_rpc(1, PlayerAction::Roll); + // Identify who goes first and have the OTHER player try to roll. + let active = b.get_view_state().active_mp_player; + let wrong_player = if active == Some(0) { 1u16 } else { 0u16 }; + b.inform_rpc(wrong_player, PlayerAction::Roll); let cmds = b.drain_commands(); assert!( cmds.is_empty(), - "guest roll should be ignored when it's host's turn" + "wrong player roll should be ignored" ); } diff --git a/client_web/src/trictrac/bot_local.rs b/client_web/src/trictrac/bot_local.rs index d2a0ca3..73658ca 100644 --- a/client_web/src/trictrac/bot_local.rs +++ b/client_web/src/trictrac/bot_local.rs @@ -1,12 +1,22 @@ use rand::prelude::IndexedRandom; use trictrac_store::{CheckerMove, Color, GameState, MoveRules, Stage, TurnStage}; -use crate::trictrac::types::PlayerAction; +use crate::trictrac::types::{PlayerAction, PreGameRollState}; const GUEST_PLAYER_ID: u64 = 2; /// Returns the next action for the bot (mp_player 1 / guest), or None if it is not the bot's turn. -pub fn bot_decide(game: &GameState) -> Option { +/// `pgr` is the current pre-game ceremony state if the ceremony is in progress. +pub fn bot_decide(game: &GameState, pgr: Option<&PreGameRollState>) -> Option { + // During the ceremony, the bot (guest) rolls when its die is missing. + if game.stage == Stage::PreGame { + if let Some(pgr) = pgr { + if pgr.guest_die.is_none() { + return Some(PlayerAction::PreGameRoll); + } + } + return None; + } if game.stage == Stage::Ended { return None; } @@ -15,8 +25,8 @@ pub fn bot_decide(game: &GameState) -> Option { } match game.turn_stage { TurnStage::RollDice => Some(PlayerAction::Roll), - // TurnStage::HoldOrGoChoice => Some(PlayerAction::Go), - TurnStage::Move | TurnStage::HoldOrGoChoice => { + TurnStage::HoldOrGoChoice => Some(PlayerAction::Go), + TurnStage::Move => { let rules = MoveRules::new(&Color::Black, &game.board, game.dice); let sequences = rules.get_possible_moves_sequences(true, vec![]); let mut rng = rand::rng(); diff --git a/client_web/src/trictrac/types.rs b/client_web/src/trictrac/types.rs index f431482..b6f43da 100644 --- a/client_web/src/trictrac/types.rs +++ b/client_web/src/trictrac/types.rs @@ -14,6 +14,8 @@ pub enum PlayerAction { Go, /// Acknowledge point marking (hold / advance points). Mark, + /// Roll a single die during the pre-game ceremony to decide who goes first. + PreGameRoll, } // ── Incremental state update broadcast to all clients ──────────────────────── @@ -27,6 +29,18 @@ pub struct GameDelta { // ── Full game snapshot ──────────────────────────────────────────────────────── +/// State of the pre-game ceremony where each player rolls one die to decide +/// who goes first. Present only when `stage == SerStage::PreGameRoll`. +#[derive(Clone, PartialEq, Serialize, Deserialize)] +pub struct PreGameRollState { + /// Die value (1–6) rolled by the host; `None` = not yet rolled this round. + pub host_die: Option, + /// Die value (1–6) rolled by the guest; `None` = not yet rolled this round. + pub guest_die: Option, + /// Number of tied rounds so far (0 on the first round). + pub tie_count: u8, +} + #[derive(Clone, PartialEq, Serialize, Deserialize)] pub struct ViewState { /// Board positions: index i = field i+1. Positive = white, negative = black. @@ -43,6 +57,9 @@ pub struct ViewState { pub dice_jans: Vec, /// Last two checker moves played; default when no move has occurred yet. pub dice_moves: (CheckerMove, CheckerMove), + /// Present while the pre-game ceremony is in progress. + #[serde(default)] + pub pre_game_roll: Option, } /// One scoring event from a dice roll. @@ -86,6 +103,7 @@ impl ViewState { dice: (0, 0), dice_jans: Vec::new(), dice_moves: (CheckerMove::default(), CheckerMove::default()), + pre_game_roll: None, } } @@ -184,6 +202,7 @@ impl ViewState { dice: (gs.dice.values.0, gs.dice.values.1), dice_jans, dice_moves: gs.dice_moves, + pre_game_roll: None, } } } @@ -220,6 +239,8 @@ pub struct PlayerScore { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub enum SerStage { PreGame, + /// Both players have arrived; ceremony in progress to decide who goes first. + PreGameRoll, InGame, Ended, } From 6995f9c888f4d6b8a7d2b85992b401a9a0c88b44 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sat, 18 Apr 2026 16:10:09 +0200 Subject: [PATCH 28/78] feat(client_web): show a '?' when a die is not yet rolled --- client_web/assets/style.css | 3 +++ client_web/src/components/die.rs | 13 +++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/client_web/assets/style.css b/client_web/assets/style.css index 9b80fbb..3034f38 100644 --- a/client_web/assets/style.css +++ b/client_web/assets/style.css @@ -520,6 +520,9 @@ body { .die-face.die-used rect { fill: #d4d0c4; stroke: #9a8a70; } .die-face.die-used circle { fill: #9a8a70; } +.die-face .die-question { fill: #1a0a00; font-family: sans-serif; } +.die-face.die-used .die-question { fill: #9a8a70; } + /* ── Jan panel ──────────────────────────────────────────────────────── */ .jan-panel { display: flex; diff --git a/client_web/src/components/die.rs b/client_web/src/components/die.rs index 7b701e7..7576280 100644 --- a/client_web/src/components/die.rs +++ b/client_web/src/components/die.rs @@ -22,7 +22,7 @@ pub fn Die( value: u8, used: bool, #[prop(default = false)] is_double: bool, -) -> impl IntoView { +) -> AnyView { let mut cls = if used { "die-face die-used".to_string() } else { @@ -31,6 +31,15 @@ pub fn Die( if is_double && !used { cls.push_str(" die-double"); } + if value == 0 { + return view! { + + + {"?"} + + }.into_any(); + } let dots: Vec = dot_positions(value) .iter() .map(|&(cx, cy)| view! { }.into_any()) @@ -40,5 +49,5 @@ pub fn Die( {dots} - } + }.into_any() } From 87677a09b0652935cf2bfdebb9935c8fe43c0912 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sat, 18 Apr 2026 16:12:38 +0200 Subject: [PATCH 29/78] fix(client_web): pre-game : allow guest to roll die without waiting for host --- client_web/src/components/game_screen.rs | 11 +++--- client_web/src/trictrac/backend.rs | 48 +++++++++++------------- client_web/src/trictrac/types.rs | 2 +- 3 files changed, 27 insertions(+), 34 deletions(-) diff --git a/client_web/src/components/game_screen.rs b/client_web/src/components/game_screen.rs index a94194f..909e266 100644 --- a/client_web/src/components/game_screen.rs +++ b/client_web/src/components/game_screen.rs @@ -5,10 +5,10 @@ use futures::channel::mpsc::UnboundedSender; use leptos::prelude::*; use trictrac_store::{Board as StoreBoard, CheckerMove, Color, Dice as StoreDice, Jan, MoveRules}; +use super::die::Die; use crate::app::{GameUiState, NetCommand, PauseReason}; use crate::i18n::*; use crate::trictrac::types::{PlayerAction, PreGameRollState, SerStage, SerTurnStage}; -use super::die::Die; use super::board::Board; use super::score_panel::PlayerScorePanel; @@ -81,9 +81,8 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { // wait until the buffer is drained and the live screen state is shown. // Guard: never auto-roll during the pre-game ceremony (the ceremony overlay // has its own Roll button for PlayerAction::PreGameRoll). - let show_roll = is_my_turn - && vs.turn_stage == SerTurnStage::RollDice - && vs.stage != SerStage::PreGameRoll; + let show_roll = + is_my_turn && vs.turn_stage == SerTurnStage::RollDice && vs.stage != SerStage::PreGameRoll; if show_roll && !waiting_for_confirm { let cmd_tx_auto = cmd_tx.clone(); Effect::new(move |_| { @@ -374,7 +373,7 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { }); let my_die = if player_id == 0 { pgr.host_die } else { pgr.guest_die }; let opp_die = if player_id == 0 { pgr.guest_die } else { pgr.host_die }; - let can_roll = is_my_turn && !waiting_for_confirm; + let can_roll = my_die.is_none() && !waiting_for_confirm; let show_tie = pgr.tie_count > 0; view! {
@@ -385,7 +384,7 @@ pub fn GameScreen(state: GameUiState) -> impl IntoView { })}
- {my_name_ceremony} + {my_name_ceremony}{t!(i18n, you_suffix)}
diff --git a/client_web/src/trictrac/backend.rs b/client_web/src/trictrac/backend.rs index 288f5e7..7f3b1a6 100644 --- a/client_web/src/trictrac/backend.rs +++ b/client_web/src/trictrac/backend.rs @@ -32,12 +32,8 @@ impl TrictracBackend { guest_die: self.pre_game_dice[1], tie_count: self.tie_count, }); - // The active mp player is whoever hasn't rolled yet (host rolls first). - vs.active_mp_player = match self.pre_game_dice { - [None, _] => Some(0), - [Some(_), None] => Some(1), - _ => None, - }; + // Both players roll independently; no single "active" player. + vs.active_mp_player = None; } self.view_state = vs; } @@ -52,16 +48,11 @@ impl TrictracBackend { /// Process one ceremony die-roll for `mp_player` (0 = host, 1 = guest). fn handle_pre_game_roll(&mut self, mp_player: u16) { - // Enforce turn order: host rolls first, then guest. - let expected: u16 = match self.pre_game_dice { - [None, _] => 0, - [Some(_), None] => 1, - _ => return, // both already rolled (shouldn't happen) - }; - if mp_player != expected { + let idx = mp_player as usize; + // Ignore if this player already rolled. + if self.pre_game_dice[idx].is_some() { return; } - let idx = mp_player as usize; let single = self.dice_roller.roll().values.0; self.pre_game_dice[idx] = Some(single); @@ -132,8 +123,8 @@ impl TrictracBackend { impl BackEndArchitecture for TrictracBackend { fn new(_rule_variation: u16) -> Self { let mut game = GameState::new(false); - game.init_player("Host"); - game.init_player("Guest"); + game.init_player("Blancs"); + game.init_player("Noirs"); let view_state = ViewState::from_game_state(&game, HOST_PLAYER_ID, GUEST_PLAYER_ID); @@ -309,11 +300,14 @@ mod tests { if b.get_view_state().stage != SerStage::PreGameRoll { break; } - match b.get_view_state().active_mp_player { - Some(0) => b.inform_rpc(0, PlayerAction::PreGameRoll), - Some(1) => b.inform_rpc(1, PlayerAction::PreGameRoll), - _ => break, + let pgr = b.get_view_state().pre_game_roll.clone().unwrap_or_default(); + let host_needs = pgr.host_die.is_none(); + let guest_needs = pgr.guest_die.is_none(); + if !host_needs && !guest_needs { + break; // both rolled but stage not yet resolved — shouldn't happen } + if host_needs { b.inform_rpc(0, PlayerAction::PreGameRoll); } + if guest_needs { b.inform_rpc(1, PlayerAction::PreGameRoll); } b.drain_commands(); } } @@ -349,19 +343,19 @@ mod tests { } #[test] - fn ceremony_wrong_order_ignored() { + fn ceremony_any_order_allowed() { let mut b = make_backend(); b.player_arrival(0); b.player_arrival(1); b.drain_commands(); - // Guest tries to roll before host (host goes first in ceremony). + // Guest may roll before host. b.inform_rpc(1, PlayerAction::PreGameRoll); - let cmds = b.drain_commands(); - assert!( - cmds.is_empty(), - "guest PreGameRoll should be ignored when it is host's turn" - ); + let states = drain_deltas(&mut b); + assert!(!states.is_empty(), "guest PreGameRoll should broadcast a state"); + let pgr = states.last().unwrap().pre_game_roll.as_ref().unwrap(); + assert!(pgr.guest_die.is_some(), "guest die should be set after guest rolls"); + assert!(pgr.host_die.is_none(), "host die should still be blank"); } #[test] diff --git a/client_web/src/trictrac/types.rs b/client_web/src/trictrac/types.rs index b6f43da..3c0dfe2 100644 --- a/client_web/src/trictrac/types.rs +++ b/client_web/src/trictrac/types.rs @@ -31,7 +31,7 @@ pub struct GameDelta { /// State of the pre-game ceremony where each player rolls one die to decide /// who goes first. Present only when `stage == SerStage::PreGameRoll`. -#[derive(Clone, PartialEq, Serialize, Deserialize)] +#[derive(Clone, Default, PartialEq, Serialize, Deserialize)] pub struct PreGameRollState { /// Die value (1–6) rolled by the host; `None` = not yet rolled this round. pub host_die: Option, From 89916c63caca41273c798c55fbfe68f2df9452c3 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sat, 18 Apr 2026 16:13:45 +0200 Subject: [PATCH 30/78] fix(bot_local): always hold on point gain --- client_web/src/app.rs | 2 +- client_web/src/trictrac/bot_local.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client_web/src/app.rs b/client_web/src/app.rs index cebdb17..0f35f49 100644 --- a/client_web/src/app.rs +++ b/client_web/src/app.rs @@ -237,7 +237,7 @@ pub fn App() -> impl IntoView { let is_host = session.is_host; let player_id = session.player_id; let reconnect_token = session.reconnect_token; - let mut vs = ViewState::default_with_names("Host", "Guest"); + let mut vs = ViewState::default_with_names("Blancs", "Noirs"); loop { futures::select! { diff --git a/client_web/src/trictrac/bot_local.rs b/client_web/src/trictrac/bot_local.rs index 73658ca..f94bfc9 100644 --- a/client_web/src/trictrac/bot_local.rs +++ b/client_web/src/trictrac/bot_local.rs @@ -25,8 +25,8 @@ pub fn bot_decide(game: &GameState, pgr: Option<&PreGameRollState>) -> Option Some(PlayerAction::Roll), - TurnStage::HoldOrGoChoice => Some(PlayerAction::Go), - TurnStage::Move => { + // TurnStage::HoldOrGoChoice => Some(PlayerAction::Go), + TurnStage::Move | TurnStage::HoldOrGoChoice => { let rules = MoveRules::new(&Color::Black, &game.board, game.dice); let sequences = rules.get_possible_moves_sequences(true, vec![]); let mut rng = rand::rng(); From 1562ed1e40eae027bb37d5bca94ac1bf08177453 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sat, 18 Apr 2026 16:21:38 +0200 Subject: [PATCH 31/78] fix(doc): rules: opponent's big jan != return jan --- doc/trictrac_rules.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/trictrac_rules.md b/doc/trictrac_rules.md index 9d16e5d..4aaa59e 100644 --- a/doc/trictrac_rules.md +++ b/doc/trictrac_rules.md @@ -9,7 +9,7 @@ French terms follow the mapping in [vocabulary.md](refs/vocabulary.md). ## 1. Board and Starting Position - 24 triangular fields (_flèches_ / _cases_), numbered 1–24 from each player's perspective. -- 4 quarters of 6 fields: **small jan** (1–6), **big jan** (7–12), **return jan** (13–18), **last jan** (19–24, exit zone). +- 4 quarters of 6 fields: **small jan** (1–6), **big jan** (7–12), **opponent's big jan** (13–18), **return jan** (19–24, exit zone). - Field 12 (White) / 13 (Black) is the **rest corner** (_coin de repos_). - Each player starts with all 15 checkers in a stack (_talon_) on field 1. - Checkers always move in the same direction (White: 1→24; Black: mirror of that). @@ -98,7 +98,7 @@ Ways to hit: ### 5d. Exit -- When all 15 checkers are in the last jan (fields 19–24), the player may exit. +- When all 15 checkers are in the return jan (fields 19–24), the player may exit. - The exit rail counts as one additional field value. - **Exact exit**: die value brings the checker directly to the exit rail — allowed. - **Overflow** (_nombre excédant_): die value would carry the farthest checker past the rail — must exit. From 00326cd645db7d86edf70c3e4b232f71e32bd0ba Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sat, 18 Apr 2026 16:55:49 +0200 Subject: [PATCH 32/78] feat(backend): use pre-game roll result for the first move --- client_web/src/trictrac/backend.rs | 55 ++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/client_web/src/trictrac/backend.rs b/client_web/src/trictrac/backend.rs index 7f3b1a6..04b2a36 100644 --- a/client_web/src/trictrac/backend.rs +++ b/client_web/src/trictrac/backend.rs @@ -1,5 +1,5 @@ use backbone_lib::traits::{BackEndArchitecture, BackendCommand}; -use trictrac_store::{DiceRoller, GameEvent, GameState, TurnStage}; +use trictrac_store::{Dice, DiceRoller, GameEvent, GameState, TurnStage}; use crate::trictrac::types::{GameDelta, PlayerAction, PreGameRollState, SerStage, ViewState}; @@ -66,9 +66,21 @@ impl TrictracBackend { self.broadcast_state(); } else { // Highest die goes first. - let goes_first = if h > g { HOST_PLAYER_ID } else { GUEST_PLAYER_ID }; + let goes_first = if h > g { + HOST_PLAYER_ID + } else { + GUEST_PLAYER_ID + }; self.ceremony_started = false; let _ = self.game.consume(&GameEvent::BeginGame { goes_first }); + // Use pre-game dice roll for the first move + let _ = self.game.consume(&GameEvent::Roll { + player_id: goes_first, + }); + let _ = self.game.consume(&GameEvent::RollResult { + player_id: goes_first, + dice: Dice { values: (g, h) }, + }); self.broadcast_state(); } } else { @@ -162,7 +174,9 @@ impl BackEndArchitecture for TrictracBackend }); // Start the ceremony once both players have arrived. - if self.arrived[0] && self.arrived[1] && self.game.stage == trictrac_store::Stage::PreGame + if self.arrived[0] + && self.arrived[1] + && self.game.stage == trictrac_store::Stage::PreGame && !self.ceremony_started { self.ceremony_started = true; @@ -275,8 +289,8 @@ impl BackEndArchitecture for TrictracBackend #[cfg(test)] mod tests { use super::*; - use backbone_lib::traits::BackEndArchitecture; use crate::trictrac::types::{SerStage, SerTurnStage}; + use backbone_lib::traits::BackEndArchitecture; fn make_backend() -> TrictracBackend { TrictracBackend::new(0) @@ -306,8 +320,12 @@ mod tests { if !host_needs && !guest_needs { break; // both rolled but stage not yet resolved — shouldn't happen } - if host_needs { b.inform_rpc(0, PlayerAction::PreGameRoll); } - if guest_needs { b.inform_rpc(1, PlayerAction::PreGameRoll); } + if host_needs { + b.inform_rpc(0, PlayerAction::PreGameRoll); + } + if guest_needs { + b.inform_rpc(1, PlayerAction::PreGameRoll); + } b.drain_commands(); } } @@ -324,7 +342,10 @@ mod tests { let has_reset = cmds .iter() .any(|c| matches!(c, BackendCommand::ResetViewState)); - assert!(has_reset, "expected ResetViewState after both players arrive"); + assert!( + has_reset, + "expected ResetViewState after both players arrive" + ); // Stage should now be PreGameRoll, not InGame. assert_eq!(b.get_view_state().stage, SerStage::PreGameRoll); @@ -352,9 +373,15 @@ mod tests { // Guest may roll before host. b.inform_rpc(1, PlayerAction::PreGameRoll); let states = drain_deltas(&mut b); - assert!(!states.is_empty(), "guest PreGameRoll should broadcast a state"); + assert!( + !states.is_empty(), + "guest PreGameRoll should broadcast a state" + ); let pgr = states.last().unwrap().pre_game_roll.as_ref().unwrap(); - assert!(pgr.guest_die.is_some(), "guest die should be set after guest rolls"); + assert!( + pgr.guest_die.is_some(), + "guest die should be set after guest rolls" + ); assert!(pgr.host_die.is_none(), "host die should still be blank"); } @@ -379,7 +406,10 @@ mod tests { complete_ceremony(&mut b); // Roll for whoever won the ceremony (either player could go first). - let first_player = b.get_view_state().active_mp_player.expect("someone should be active"); + let first_player = b + .get_view_state() + .active_mp_player + .expect("someone should be active"); b.inform_rpc(first_player, PlayerAction::Roll); let states = drain_deltas(&mut b); assert!(!states.is_empty(), "expected a state broadcast after roll"); @@ -411,10 +441,7 @@ mod tests { let wrong_player = if active == Some(0) { 1u16 } else { 0u16 }; b.inform_rpc(wrong_player, PlayerAction::Roll); let cmds = b.drain_commands(); - assert!( - cmds.is_empty(), - "wrong player roll should be ignored" - ); + assert!(cmds.is_empty(), "wrong player roll should be ignored"); } #[test] From 2838d59f30887dea4b8245c157c5709e2821aee5 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sat, 18 Apr 2026 17:11:47 +0200 Subject: [PATCH 33/78] fix(client_web): only animate 2nd checker on 2nd move --- client_web/src/app.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/client_web/src/app.rs b/client_web/src/app.rs index 0f35f49..196a43a 100644 --- a/client_web/src/app.rs +++ b/client_web/src/app.rs @@ -270,6 +270,7 @@ pub fn App() -> impl IntoView { view_state: Some(vs.clone()), }); } + let is_own_move = prev_vs.active_mp_player == Some(player_id); push_or_show( &prev_vs, GameUiState { @@ -281,7 +282,7 @@ pub fn App() -> impl IntoView { pause_reason: None, my_scored_event: None, opp_scored_event: None, - last_moves: compute_last_moves(&prev_vs, &vs), + last_moves: compute_last_moves(&prev_vs, &vs, is_own_move), }, pending, screen, @@ -376,7 +377,7 @@ async fn run_local_bot_game( pause_reason: None, my_scored_event: scored, opp_scored_event: opp_scored, - last_moves: compute_last_moves(&prev_vs, &vs), + last_moves: compute_last_moves(&prev_vs, &vs, true), })); } Some(NetCommand::PlayVsBot) => return true, @@ -406,7 +407,7 @@ async fn run_local_bot_game( pause_reason: None, my_scored_event: None, opp_scored_event: None, - last_moves: compute_last_moves(&delta_prev_vs, &vs), + last_moves: compute_last_moves(&delta_prev_vs, &vs, false), }, pending, screen, @@ -421,7 +422,8 @@ async fn run_local_bot_game( /// Returns the checker moves to animate when the board changed between two ViewStates. /// Returns `None` when the board is unchanged or no real moves were recorded. -fn compute_last_moves(prev: &ViewState, next: &ViewState) -> Option<(CheckerMove, CheckerMove)> { +/// `own_move`: when true, m1 was already shown via staged-moves UI, so only animate m2. +fn compute_last_moves(prev: &ViewState, next: &ViewState, own_move: bool) -> Option<(CheckerMove, CheckerMove)> { if prev.board == next.board { return None; } @@ -432,6 +434,11 @@ fn compute_last_moves(prev: &ViewState, next: &ViewState) -> Option<(CheckerMove // without setting dice_moves would bypass this guard and replay stale animation. return None; } + if own_move { + // m1 was already shown via the staged-moves overlay; only animate m2. + if m2 == CheckerMove::default() { return None; } + return Some((m2, CheckerMove::default())); + } Some((m1, m2)) } From 4f5e21becb04525bb1a57ac391484d05c43bc9ce Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Wed, 22 Apr 2026 17:42:05 +0200 Subject: [PATCH 34/78] chore: integrate multiplayer code (wip) --- Cargo.toml | 18 +- README.md | 104 +- clients/backbone-lib/Cargo.toml | 17 + clients/backbone-lib/src/client.rs | 84 ++ clients/backbone-lib/src/host.rs | 211 +++ clients/backbone-lib/src/lib.rs | 10 + clients/backbone-lib/src/platform.rs | 48 + clients/backbone-lib/src/protocol.rs | 159 +++ clients/backbone-lib/src/session.rs | 266 ++++ clients/backbone-lib/src/traits.rs | 97 ++ {client_cli => clients/cli}/Cargo.toml | 6 +- {client_cli => clients/cli}/src/app.rs | 0 .../cli}/src/game_runner.rs | 0 {client_cli => clients/cli}/src/main.rs | 0 {client_web => clients/web-game}/Cargo.toml | 4 +- {client_web => clients/web-game}/Trunk.toml | 0 .../web-game}/assets/diceroll.mp3 | Bin .../web-game}/assets/style.css | 0 .../dist/client_web-4248a2b78bb5a03.js | 1173 +++++++++++++++++ .../dist/client_web-4248a2b78bb5a03_bg.wasm | Bin 0 -> 6538636 bytes clients/web-game/dist/index.html | 151 +++ .../web-game/dist/style-398501cc5e039e60.css | 1133 ++++++++++++++++ {client_web => clients/web-game}/index.html | 0 .../web-game}/locales/en.json | 0 .../web-game}/locales/fr.json | 0 {client_web => clients/web-game}/src/app.rs | 0 .../web-game}/src/components/board.rs | 0 .../src/components/connecting_screen.rs | 0 .../web-game}/src/components/die.rs | 0 .../web-game}/src/components/game_screen.rs | 0 .../web-game}/src/components/login_screen.rs | 0 .../web-game}/src/components/mod.rs | 0 .../web-game}/src/components/score_panel.rs | 0 .../web-game}/src/components/scoring.rs | 0 {client_web => clients/web-game}/src/main.rs | 0 {client_web => clients/web-game}/src/sound.rs | 0 .../web-game}/src/trictrac/backend.rs | 0 .../web-game}/src/trictrac/bot_local.rs | 0 .../web-game}/src/trictrac/mod.rs | 0 .../web-game}/src/trictrac/types.rs | 0 clients/web-user-portal/Cargo.toml | 17 + clients/web-user-portal/Trunk.toml | 2 + clients/web-user-portal/assets/style.css | 103 ++ clients/web-user-portal/index.html | 11 + clients/web-user-portal/src/api.rs | 191 +++ clients/web-user-portal/src/app.rs | 67 + clients/web-user-portal/src/main.rs | 7 + clients/web-user-portal/src/pages/game.rs | 95 ++ clients/web-user-portal/src/pages/home.rs | 152 +++ clients/web-user-portal/src/pages/mod.rs | 3 + clients/web-user-portal/src/pages/profile.rs | 137 ++ devenv.nix | 1 + justfile | 38 +- server/protocol/Cargo.toml | 7 + server/protocol/src/lib.rs | 72 + server/relay-server/Cargo.toml | 29 + server/relay-server/GameConfig.json | 10 + server/relay-server/migrations/001_init.sql | 24 + .../migrations/002_participants_unique.sql | 3 + server/relay-server/src/auth.rs | 95 ++ server/relay-server/src/db.rs | 214 +++ server/relay-server/src/hand_shake.rs | 599 +++++++++ server/relay-server/src/http.rs | 399 ++++++ server/relay-server/src/lobby.rs | 91 ++ server/relay-server/src/main.rs | 239 ++++ server/relay-server/src/message_relay.rs | 354 +++++ 66 files changed, 6423 insertions(+), 18 deletions(-) create mode 100644 clients/backbone-lib/Cargo.toml create mode 100644 clients/backbone-lib/src/client.rs create mode 100644 clients/backbone-lib/src/host.rs create mode 100644 clients/backbone-lib/src/lib.rs create mode 100644 clients/backbone-lib/src/platform.rs create mode 100644 clients/backbone-lib/src/protocol.rs create mode 100644 clients/backbone-lib/src/session.rs create mode 100644 clients/backbone-lib/src/traits.rs rename {client_cli => clients/cli}/Cargo.toml (71%) rename {client_cli => clients/cli}/src/app.rs (100%) rename {client_cli => clients/cli}/src/game_runner.rs (100%) rename {client_cli => clients/cli}/src/main.rs (100%) rename {client_web => clients/web-game}/Cargo.toml (90%) rename {client_web => clients/web-game}/Trunk.toml (100%) rename {client_web => clients/web-game}/assets/diceroll.mp3 (100%) rename {client_web => clients/web-game}/assets/style.css (100%) create mode 100644 clients/web-game/dist/client_web-4248a2b78bb5a03.js create mode 100644 clients/web-game/dist/client_web-4248a2b78bb5a03_bg.wasm create mode 100644 clients/web-game/dist/index.html create mode 100644 clients/web-game/dist/style-398501cc5e039e60.css rename {client_web => clients/web-game}/index.html (100%) rename {client_web => clients/web-game}/locales/en.json (100%) rename {client_web => clients/web-game}/locales/fr.json (100%) rename {client_web => clients/web-game}/src/app.rs (100%) rename {client_web => clients/web-game}/src/components/board.rs (100%) rename {client_web => clients/web-game}/src/components/connecting_screen.rs (100%) rename {client_web => clients/web-game}/src/components/die.rs (100%) rename {client_web => clients/web-game}/src/components/game_screen.rs (100%) rename {client_web => clients/web-game}/src/components/login_screen.rs (100%) rename {client_web => clients/web-game}/src/components/mod.rs (100%) rename {client_web => clients/web-game}/src/components/score_panel.rs (100%) rename {client_web => clients/web-game}/src/components/scoring.rs (100%) rename {client_web => clients/web-game}/src/main.rs (100%) rename {client_web => clients/web-game}/src/sound.rs (100%) rename {client_web => clients/web-game}/src/trictrac/backend.rs (100%) rename {client_web => clients/web-game}/src/trictrac/bot_local.rs (100%) rename {client_web => clients/web-game}/src/trictrac/mod.rs (100%) rename {client_web => clients/web-game}/src/trictrac/types.rs (100%) create mode 100644 clients/web-user-portal/Cargo.toml create mode 100644 clients/web-user-portal/Trunk.toml create mode 100644 clients/web-user-portal/assets/style.css create mode 100644 clients/web-user-portal/index.html create mode 100644 clients/web-user-portal/src/api.rs create mode 100644 clients/web-user-portal/src/app.rs create mode 100644 clients/web-user-portal/src/main.rs create mode 100644 clients/web-user-portal/src/pages/game.rs create mode 100644 clients/web-user-portal/src/pages/home.rs create mode 100644 clients/web-user-portal/src/pages/mod.rs create mode 100644 clients/web-user-portal/src/pages/profile.rs create mode 100644 server/protocol/Cargo.toml create mode 100644 server/protocol/src/lib.rs create mode 100644 server/relay-server/Cargo.toml create mode 100644 server/relay-server/GameConfig.json create mode 100644 server/relay-server/migrations/001_init.sql create mode 100644 server/relay-server/migrations/002_participants_unique.sql create mode 100644 server/relay-server/src/auth.rs create mode 100644 server/relay-server/src/db.rs create mode 100644 server/relay-server/src/hand_shake.rs create mode 100644 server/relay-server/src/http.rs create mode 100644 server/relay-server/src/lobby.rs create mode 100644 server/relay-server/src/main.rs create mode 100644 server/relay-server/src/message_relay.rs diff --git a/Cargo.toml b/Cargo.toml index 72e3f08..8730e14 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,20 @@ [workspace] resolver = "2" -members = ["client_cli", "bot", "store", "spiel_bot", "client_web"] +members = [ + "store", + "clients/cli", + "clients/backbone-lib", + "clients/web-game", + "clients/web-user-portal", + "server/protocol", + "server/relay-server", + "bot", + "spiel_bot", +] + +# For the server we will need opt-level='3' +[profile.release] +opt-level = 'z' # Minimum space +lto = "fat" # Aggressive Link Time Optimization +codegen-units = 1 diff --git a/README.md b/README.md index e74fb69..1145c33 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,20 @@ Training of AI bots is the work in progress. ## Usage -`cargo run --bin=client_cli -- --bot random` +Install [devenv](https://devenv.sh/getting-started/), start a devenv shell `devenv shell`, and run the following commands. + +```bash +# Run the relay server +just build-relay +just run-relay # listens on :8080 + +# Run the game (separate terminal) +just dev-game +``` + +Open two browser windows at `http://127.0.0.1:9091`. In one, create a room; in the other, join with the same room name. + +Playing with the cli against the 'random' bot: `cargo run --bin=client_cli -- --bot random` ## Roadmap @@ -23,19 +36,102 @@ Training of AI bots is the work in progress. ## Code structure - game rules and game state are implemented in the _store/_ folder. -- the command-line application is implemented in _client_cli/_; it allows you to play against a bot, or to have two bots play against each other +- the command-line application is implemented in _clients/cli/_; it allows you to play against a bot, or to have two bots play against each other - the bots algorithms and the training of their models are implemented in the _bot/_ and _spiel_bot_ folders. ### _store_ package The game state is defined by the `GameState` struct in _store/src/game.rs_. The `to_string_id()` method allows this state to be encoded compactly in a string (without the played moves history). For a more readable textual representation, the `fmt::Display` trait is implemented. -### _client_cli_ package +### _clients/cli_ package -`client_cli/src/game_runner.rs` contains the logic to make two bots play against each other. +`clients/cli/src/game_runner.rs` contains the logic to make two bots play against each other. ### _bot_ package - `bot/src/strategy/default.rs` contains the code for a basic bot strategy: it determines the list of valid moves (using the `get_possible_moves_sequences` method of `store::MoveRules`) and simply executes the first move in the list. - `bot/src/strategy/dqnburn.rs` is another bot strategy that uses a reinforcement learning trained model with the DQN algorithm via the burn library (). - `bot/scripts/trains.sh` allows you to train agents using different algorithms (DQN, PPO, SAC). + +### multiplayer game + +Pagckages "clients/backbone-lib", "clients/web-game", "server/protocol", "server/relay-server" are a Leptos-optimized adaptation of the macroquad-based [Carbonfreezer/multiplayer](https://github.com/Carbonfreezer/multiplayer) project. It is a multiplayer game system in Rust targeting browser-based board games compiled as WASM. The original project used Macroquad with a polling-based transport layer; this version replaces that with an async session API built for [Leptos](https://leptos.dev/). + +The system consists of: + +- A **relay server** (Axum/Tokio) that routes messages between players and manages rooms, without knowing anything about game rules. +- A **backbone library** that handles WebSocket connection, handshake, and message routing, exposing an async API to the game frontend. +- Game-specific **backend logic** implementing the `BackEndArchitecture` trait, which runs only on the hosting client. +- A **Leptos frontend** that connects to a session and reacts to state updates. + +There is no dedicated game server. One of the players acts as the host: their browser runs the game backend locally. The relay server only forwards messages — it never touches game state. + +``` +┌─────────────────────────────────────────────────────────────┐ +│ Host Client │ +│ ┌─────────────┐ ┌──────────────────┐ ┌────────────┐ │ +│ │ Leptos UI │◄──►│ GameSession │◄──►│ Backend │ │ +│ └─────────────┘ └────────┬─────────┘ └────────────┘ │ +└───────────────────────────── │ ────────────────────────────┘ + │ WebSocket + ┌──────▼──────┐ + │ Relay Server│ + └──────┬──────┘ + │ WebSocket +┌───────────────────────────────│────────────────────────────┐ +│ ┌─────────────┐ ┌─────────▼────────┐ │ +│ │ Leptos UI │◄──►│ GameSession │ (no backend) │ +│ └─────────────┘ └──────────────────┘ │ +│ Remote Client │ +└─────────────────────────────────────────────────────────────┘ +``` + +#### Data flow + +- **Actions** (e.g. "place stone at B3") flow from the UI to the host backend via `GameSession::send_action()`. +- **State updates** flow back as `ViewStateUpdate::Full` (full snapshot, on join or reset) or `ViewStateUpdate::Incremental` (delta, for animations). +- **Timers** are managed by the host's background task (wall-clock, no polling required from the game). + +#### backbone-lib session API + +The key design choice: `backbone-lib` owns a background async task per session. The Leptos app never drives a loop — it just awaits on events. + +#### Workspace + +**server/protocol** + +Shared message-type constants and the `JoinRequest` struct used during the WebSocket handshake. + +**server/relay-server** + +Listens on port 8080. Loads `GameConfig.json` on startup to know which games exist and their player limits: + +```json +[{ "name": "trictrac", "max_players": 10 }] +``` + +Games can be added at runtime via the `/reload` endpoint. `/enlist` lists active rooms. A watchdog cleans up inactive rooms every 20 minutes. + +For production, put it behind a reverse proxy with SSL (the browser requires `wss://` on HTTPS pages). Example Caddy config: + +``` +your-domain.com { + handle_path /api/* { + reverse_proxy localhost:8080 + } + file_server +} +``` + +**clients/backbone-lib** + +Modules: + +| Module | Purpose | +| ---------- | ---------------------------------------------------------------------------------------------------------- | +| `session` | `GameSession`, `connect()`, `SessionEvent`, `RoomConfig` | +| `host` | Background async task for the hosting client (drives `BackEndArchitecture`, manages timers) | +| `client` | Background async task for non-hosting clients | +| `protocol` | Wire encoding/decoding helpers (postcard + message-type bytes) | +| `platform` | `spawn_task` / `sleep_ms` abstractions (WASM: `spawn_local` + gloo-timers; native: thread + thread::sleep) | +| `traits` | `BackEndArchitecture`, `BackendCommand`, `ViewStateUpdate`, `SerializationCap` | diff --git a/clients/backbone-lib/Cargo.toml b/clients/backbone-lib/Cargo.toml new file mode 100644 index 0000000..1e57d93 --- /dev/null +++ b/clients/backbone-lib/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "backbone-lib" +version = "0.1.0" +edition = "2024" + +[dependencies] +serde = { version = "1.0", features = ["derive"] } +postcard = { version = "1.1", features = ["use-std"] } +bytes = "1.11" +ewebsock = "0.8" +protocol = { path = "../../server/protocol" } +futures = "0.3" +web-time = "1.1" + +[target.'cfg(target_arch = "wasm32")'.dependencies] +wasm-bindgen-futures = "0.4" +gloo-timers = { version = "0.3", features = ["futures"] } diff --git a/clients/backbone-lib/src/client.rs b/clients/backbone-lib/src/client.rs new file mode 100644 index 0000000..65c7fdb --- /dev/null +++ b/clients/backbone-lib/src/client.rs @@ -0,0 +1,84 @@ +//! Background task for the client (non-host) side of a session. + +use ewebsock::{WsEvent, WsMessage, WsReceiver, WsSender}; +use futures::channel::mpsc::{UnboundedReceiver, UnboundedSender}; + +use crate::platform::sleep_ms; +use crate::protocol::{parse_client_update, send_disconnect, send_rpc}; +use crate::session::{BackendMsg, SessionEvent}; +use crate::traits::SerializationCap; + +pub(crate) async fn client_loop( + mut ws_sender: WsSender, + ws_receiver: WsReceiver, + mut action_rx: UnboundedReceiver>, + event_tx: UnboundedSender>, +) where + A: SerializationCap, + D: SerializationCap, + VS: SerializationCap, +{ + loop { + // 1. Drain outbound actions. + loop { + match action_rx.try_next() { + Ok(Some(BackendMsg::Action(action))) => { + send_rpc(&mut ws_sender, &action); + } + Ok(Some(BackendMsg::Disconnect)) => { + send_disconnect(&mut ws_sender, false); + event_tx + .unbounded_send(SessionEvent::Disconnected(None)) + .ok(); + return; + } + Ok(None) => { + send_disconnect(&mut ws_sender, false); + return; + } + Err(_) => break, + } + } + + // 2. Drain inbound state updates. + loop { + match ws_receiver.try_recv() { + Some(WsEvent::Message(WsMessage::Binary(data))) => { + match parse_client_update::(data) { + Ok(updates) => { + for u in updates { + event_tx + .unbounded_send(SessionEvent::Update(u)) + .ok(); + } + } + Err(e) => { + event_tx + .unbounded_send(SessionEvent::Disconnected(Some(e))) + .ok(); + return; + } + } + } + Some(WsEvent::Closed) => { + event_tx + .unbounded_send(SessionEvent::Disconnected(Some( + "Connection closed".to_string(), + ))) + .ok(); + return; + } + Some(WsEvent::Error(e)) => { + event_tx + .unbounded_send(SessionEvent::Disconnected(Some(e))) + .ok(); + return; + } + Some(_) => continue, + None => break, + } + } + + sleep_ms(2).await; + } +} diff --git a/clients/backbone-lib/src/host.rs b/clients/backbone-lib/src/host.rs new file mode 100644 index 0000000..c78e228 --- /dev/null +++ b/clients/backbone-lib/src/host.rs @@ -0,0 +1,211 @@ +//! Background task for the host (game server) side of a session. + +use std::collections::HashSet; + +use ewebsock::{WsEvent, WsMessage, WsReceiver, WsSender}; +use futures::channel::mpsc::{UnboundedReceiver, UnboundedSender}; +use web_time::{Duration, Instant}; + +use crate::platform::sleep_ms; +use crate::protocol::{ + ToServerCommand, parse_server_command, send_delta, send_disconnect, send_full_state, + send_kick, send_reset, +}; +use crate::session::{BackendMsg, SessionEvent}; +use crate::traits::{BackEndArchitecture, BackendCommand, SerializationCap, ViewStateUpdate}; + +struct Timer { + id: u16, + fire_at: Instant, +} + +pub(crate) async fn host_loop( + mut ws_sender: WsSender, + ws_receiver: WsReceiver, + mut action_rx: UnboundedReceiver>, + event_tx: UnboundedSender>, + rule_variation: u16, + host_state: Option>, +) where + A: SerializationCap, + D: SerializationCap + Clone, + VS: SerializationCap + Clone, + Backend: BackEndArchitecture, +{ + let mut backend = host_state + .as_deref() + .and_then(|b| Backend::from_bytes(rule_variation, b)) + .unwrap_or_else(|| Backend::new(rule_variation)); + backend.player_arrival(0); + + // Push initial state to UI immediately. + let initial = backend.get_view_state().clone(); + event_tx + .unbounded_send(SessionEvent::Update(ViewStateUpdate::Full(initial))) + .ok(); + + let mut timers: Vec = Vec::new(); + let mut cancelled_timers: HashSet = HashSet::new(); + let mut remote_player_count: u16 = 0; + + loop { + let mut client_joined = false; + + // 1. Drain local actions / detect session drop or disconnect request. + loop { + match action_rx.try_next() { + Ok(Some(BackendMsg::Action(action))) => { + backend.inform_rpc(0, action); + } + Ok(Some(BackendMsg::Disconnect)) => { + send_disconnect(&mut ws_sender, true); + event_tx + .unbounded_send(SessionEvent::Disconnected(None)) + .ok(); + return; + } + Ok(None) => { + // All senders dropped — session was dropped without calling disconnect(). + send_disconnect(&mut ws_sender, true); + return; + } + Err(_) => break, // Channel empty; nothing pending. + } + } + + // 2. Drain WebSocket events from the relay. + loop { + match ws_receiver.try_recv() { + Some(WsEvent::Message(WsMessage::Binary(data))) => { + match parse_server_command::(data) { + ToServerCommand::ClientJoin(id) => { + backend.player_arrival(id); + remote_player_count += 1; + client_joined = true; + } + ToServerCommand::ClientLeft(id) => { + backend.player_departure(id); + remote_player_count = remote_player_count.saturating_sub(1); + } + ToServerCommand::Rpc(id, payload) => { + backend.inform_rpc(id, payload); + } + ToServerCommand::Error(e) => { + event_tx + .unbounded_send(SessionEvent::Disconnected(Some(e))) + .ok(); + return; + } + } + } + Some(WsEvent::Closed) => { + event_tx + .unbounded_send(SessionEvent::Disconnected(Some( + "Connection closed".to_string(), + ))) + .ok(); + return; + } + Some(WsEvent::Error(e)) => { + event_tx + .unbounded_send(SessionEvent::Disconnected(Some(e))) + .ok(); + return; + } + Some(_) => continue, // Ignore Opened / text messages. + None => break, // No more events this iteration. + } + } + + // 3. Fire elapsed timers. + let now = Instant::now(); + let mut fired = Vec::new(); + timers.retain(|t| { + if t.fire_at <= now { + fired.push(t.id); + false + } else { + true + } + }); + for id in fired { + if !cancelled_timers.remove(&id) { + backend.timer_triggered(id); + } + } + + // 4. Drain and process backend commands. + let commands = backend.drain_commands(); + + if commands.is_empty() && !client_joined { + sleep_ms(2).await; + continue; + } + + let mut delta_batch: Vec = Vec::new(); + let mut reset = false; + + for cmd in commands { + match cmd { + BackendCommand::TerminateRoom => { + send_disconnect(&mut ws_sender, true); + event_tx + .unbounded_send(SessionEvent::Disconnected(None)) + .ok(); + return; + } + BackendCommand::SetTimer { timer_id, duration } => { + // Cancel any existing timer with the same id, then re-arm. + timers.retain(|t| t.id != timer_id); + cancelled_timers.remove(&timer_id); + timers.push(Timer { + id: timer_id, + fire_at: Instant::now() + Duration::from_secs_f32(duration), + }); + } + BackendCommand::CancelTimer { timer_id } => { + cancelled_timers.insert(timer_id); + } + BackendCommand::KickPlayer { player } => { + if remote_player_count > 0 { + send_kick(&mut ws_sender, player); + } + } + BackendCommand::ResetViewState => { + reset = true; + } + BackendCommand::Delta(d) => { + delta_batch.push(d); + } + } + } + + if reset { + // Reset supersedes all pending deltas: send fresh full state. + let state = backend.get_view_state().clone(); + if remote_player_count > 0 { + send_reset(&mut ws_sender, &state); + } + event_tx + .unbounded_send(SessionEvent::Update(ViewStateUpdate::Full(state))) + .ok(); + } else { + // Broadcast deltas, then notify local UI. + if remote_player_count > 0 && !delta_batch.is_empty() { + send_delta(&mut ws_sender, &delta_batch); + } + for d in delta_batch { + event_tx + .unbounded_send(SessionEvent::Update(ViewStateUpdate::Incremental(d))) + .ok(); + } + } + + // Send full state to clients that joined this iteration. + if client_joined { + send_full_state(&mut ws_sender, backend.get_view_state()); + } + + sleep_ms(2).await; + } +} diff --git a/clients/backbone-lib/src/lib.rs b/clients/backbone-lib/src/lib.rs new file mode 100644 index 0000000..d67a96c --- /dev/null +++ b/clients/backbone-lib/src/lib.rs @@ -0,0 +1,10 @@ +pub mod session; +pub mod traits; + +mod client; +mod host; +mod platform; +mod protocol; + +pub use session::{ConnectError, GameSession, RoomConfig, RoomRole, SessionEvent}; +pub use traits::{BackEndArchitecture, BackendCommand, SerializationCap, ViewStateUpdate}; diff --git a/clients/backbone-lib/src/platform.rs b/clients/backbone-lib/src/platform.rs new file mode 100644 index 0000000..92f2414 --- /dev/null +++ b/clients/backbone-lib/src/platform.rs @@ -0,0 +1,48 @@ +use std::future::Future; + +/// Spawns a background task. +/// - WASM: uses `wasm_bindgen_futures::spawn_local` (no Send required) +/// - Native: spawns an OS thread running `futures::executor::block_on` +#[cfg(target_arch = "wasm32")] +pub fn spawn_task(fut: F) +where + F: Future + 'static, +{ + wasm_bindgen_futures::spawn_local(fut); +} + +#[cfg(not(target_arch = "wasm32"))] +pub fn spawn_task(fut: F) +where + F: Future + Send + 'static, +{ + std::thread::spawn(move || { + futures::executor::block_on(fut); + }); +} + +/// Yields for approximately `ms` milliseconds. +/// - WASM: non-blocking yield via browser timer +/// - Native: blocks the current thread (safe on a dedicated background thread) +#[cfg(target_arch = "wasm32")] +pub async fn sleep_ms(ms: u32) { + gloo_timers::future::TimeoutFuture::new(ms).await; +} + +#[cfg(not(target_arch = "wasm32"))] +pub async fn sleep_ms(ms: u32) { + std::thread::sleep(std::time::Duration::from_millis(ms as u64)); +} + +/// Platform-agnostic bound for types that can be moved into a background task. +/// - WASM: only requires `'static` (single-threaded, no Send needed) +/// - Native: requires `Send + 'static` +#[cfg(target_arch = "wasm32")] +pub trait TaskBound: 'static {} +#[cfg(target_arch = "wasm32")] +impl TaskBound for T {} + +#[cfg(not(target_arch = "wasm32"))] +pub trait TaskBound: Send + 'static {} +#[cfg(not(target_arch = "wasm32"))] +impl TaskBound for T {} diff --git a/clients/backbone-lib/src/protocol.rs b/clients/backbone-lib/src/protocol.rs new file mode 100644 index 0000000..65f972a --- /dev/null +++ b/clients/backbone-lib/src/protocol.rs @@ -0,0 +1,159 @@ +//! Wire protocol encoding/decoding helpers. +//! +//! Translates between raw WebSocket binary frames and typed Rust values using +//! postcard serialization and the message-type constants from the `protocol` crate. + +use crate::traits::{SerializationCap, ViewStateUpdate}; +use bytes::{Buf, BufMut, Bytes, BytesMut}; +use ewebsock::{WsMessage, WsSender}; +use postcard::{from_bytes, take_from_bytes, to_stdvec}; +use protocol::{ + CLIENT_DISCONNECTS, CLIENT_DISCONNECTS_SELF, CLIENT_GETS_KICKED, CLIENT_ID_SIZE, DELTA_UPDATE, + FULL_UPDATE, HAND_SHAKE_RESPONSE, JoinRequest, NEW_CLIENT, RESET, SERVER_DISCONNECTS, + SERVER_ERROR, SERVER_RPC, +}; + +// --------------------------------------------------------------------------- +// Inbound command types (relay → host) +// --------------------------------------------------------------------------- + +pub enum ToServerCommand { + ClientJoin(u16), + ClientLeft(u16), + Rpc(u16, A), + Error(String), +} + +// --------------------------------------------------------------------------- +// Send helpers +// --------------------------------------------------------------------------- + +fn send_binary(sender: &mut WsSender, data: &[u8]) { + sender.send(WsMessage::Binary(data.to_vec())); +} + +pub fn send_join_request(sender: &mut WsSender, req: &JoinRequest) -> Result<(), String> { + let bytes = to_stdvec(req).map_err(|e| e.to_string())?; + send_binary(sender, &bytes); + Ok(()) +} + +pub fn send_rpc(sender: &mut WsSender, action: &A) { + let raw = to_stdvec(action).expect("Failed to serialize RPC"); + let mut buf = BytesMut::with_capacity(1 + raw.len()); + buf.put_u8(SERVER_RPC); + buf.put_slice(&raw); + send_binary(sender, &buf); +} + +pub fn send_delta(sender: &mut WsSender, deltas: &[D]) { + let serialized: Vec = deltas + .iter() + .flat_map(|d| to_stdvec(d).expect("Failed to serialize delta")) + .collect(); + let mut buf = BytesMut::with_capacity(1 + serialized.len()); + buf.put_u8(DELTA_UPDATE); + buf.put_slice(&serialized); + send_binary(sender, &buf); +} + +pub fn send_full_state(sender: &mut WsSender, state: &VS) { + let serialized = to_stdvec(state).expect("Failed to serialize full state"); + let mut buf = BytesMut::with_capacity(1 + serialized.len()); + buf.put_u8(FULL_UPDATE); + buf.put_slice(&serialized); + send_binary(sender, &buf); +} + +pub fn send_reset(sender: &mut WsSender, state: &VS) { + let serialized = to_stdvec(state).expect("Failed to serialize reset state"); + let mut buf = BytesMut::with_capacity(1 + serialized.len()); + buf.put_u8(RESET); + buf.put_slice(&serialized); + send_binary(sender, &buf); +} + +pub fn send_kick(sender: &mut WsSender, player_id: u16) { + let mut buf = BytesMut::with_capacity(1 + CLIENT_ID_SIZE); + buf.put_u8(CLIENT_GETS_KICKED); + buf.put_u16(player_id); + send_binary(sender, &buf); +} + +pub fn send_disconnect(sender: &mut WsSender, as_host: bool) { + let msg = if as_host { + SERVER_DISCONNECTS + } else { + CLIENT_DISCONNECTS_SELF + }; + send_binary(sender, &[msg]); +} + +// --------------------------------------------------------------------------- +// Receive / parse helpers +// --------------------------------------------------------------------------- + +/// Parses the relay's handshake response. +/// +/// Returns `(player_id, rule_variation, reconnect_token)`. +pub fn parse_handshake_response(data: Vec) -> Result<(u16, u16, u64), String> { + let mut bytes = Bytes::from(data); + let msg = bytes.get_u8(); + match msg { + SERVER_ERROR => Err(String::from_utf8_lossy(&bytes).to_string()), + HAND_SHAKE_RESPONSE => { + let player_id = bytes.get_u16(); + let rule_variation = bytes.get_u16(); + let token = bytes.get_u64(); + Ok((player_id, rule_variation, token)) + } + other => Err(format!("Unexpected handshake message id: {other}")), + } +} + +pub fn parse_server_command(data: Vec) -> ToServerCommand { + let mut bytes = Bytes::from(data); + let msg = bytes.get_u8(); + match msg { + SERVER_ERROR => ToServerCommand::Error(String::from_utf8_lossy(&bytes).to_string()), + NEW_CLIENT => ToServerCommand::ClientJoin(bytes.get_u16()), + CLIENT_DISCONNECTS => ToServerCommand::ClientLeft(bytes.get_u16()), + SERVER_RPC => { + let client_id = bytes.get_u16(); + let payload: A = + from_bytes(bytes.chunk()).expect("Failed to deserialize server RPC payload"); + ToServerCommand::Rpc(client_id, payload) + } + other => ToServerCommand::Error(format!("Unknown server message id: {other}")), + } +} + +pub fn parse_client_update( + data: Vec, +) -> Result>, String> +where + VS: SerializationCap, + D: SerializationCap, +{ + let mut bytes = Bytes::from(data); + let msg = bytes.get_u8(); + match msg { + SERVER_ERROR => Err(String::from_utf8_lossy(&bytes).to_string()), + DELTA_UPDATE => { + let mut result = Vec::new(); + let mut remaining: &[u8] = &bytes; + while !remaining.is_empty() { + let (delta, rest): (D, &[u8]) = + take_from_bytes(remaining).map_err(|e| e.to_string())?; + remaining = rest; + result.push(ViewStateUpdate::Incremental(delta)); + } + Ok(result) + } + FULL_UPDATE | RESET => { + let state: VS = from_bytes(&bytes).map_err(|e| e.to_string())?; + Ok(vec![ViewStateUpdate::Full(state)]) + } + other => Err(format!("Unknown client message id: {other}")), + } +} diff --git a/clients/backbone-lib/src/session.rs b/clients/backbone-lib/src/session.rs new file mode 100644 index 0000000..24314f7 --- /dev/null +++ b/clients/backbone-lib/src/session.rs @@ -0,0 +1,266 @@ +//! The public-facing session API. +//! +//! # Usage +//! +//! ```ignore +//! // Connect (async, returns after handshake completes) +//! let mut session: GameSession = +//! GameSession::connect::(RoomConfig { +//! relay_url: "ws://localhost:8080/ws".to_string(), +//! game_id: "my-game".to_string(), +//! room_id: "room-42".to_string(), +//! rule_variation: 0, +//! role: RoomRole::Create, +//! reconnect_token: None, +//! }) +//! .await?; +//! +//! // In a loop (e.g. Dioxus coroutine with futures::select!): +//! loop { +//! futures::select! { +//! cmd = ui_rx.next().fuse() => session.send_action(cmd), +//! event = session.next_event().fuse() => match event { +//! Some(SessionEvent::Update(u)) => view_state.apply(u), +//! Some(SessionEvent::Disconnected(reason)) | None => break, +//! } +//! } +//! } +//! ``` + +use ewebsock::{WsEvent, WsMessage}; +use futures::StreamExt; +use futures::channel::mpsc::{self, UnboundedReceiver, UnboundedSender}; +use protocol::JoinRequest; + +use crate::client::client_loop; +use crate::host::host_loop; +use crate::platform::{TaskBound, sleep_ms, spawn_task}; +use crate::protocol::{parse_handshake_response, send_join_request}; +use crate::traits::{BackEndArchitecture, SerializationCap, ViewStateUpdate}; + +// --------------------------------------------------------------------------- +// Public configuration types +// --------------------------------------------------------------------------- + +/// Whether to create a new room (host) or join an existing one (client). +pub enum RoomRole { + Create, + Join, +} + +/// Configuration required to connect to a game session. +pub struct RoomConfig { + /// WebSocket URL of the relay server (e.g. `"ws://localhost:8080/ws"`). + pub relay_url: String, + /// Game identifier registered on the relay (e.g. `"tic-tac-toe"`). + pub game_id: String, + /// Room identifier shared between host and clients. + pub room_id: String, + /// Game mode/variant. Only used when `role` is `Create`. + pub rule_variation: u16, + pub role: RoomRole, + /// If `Some`, attempt to reconnect to an existing session instead of creating/joining fresh. + /// The value is the token returned by a previous successful handshake. + pub reconnect_token: Option, + /// Serialized backend state for host reconnect. + /// + /// Produced by the app layer (e.g. `serde_json::to_vec(&view_state)`) and stored in + /// localStorage. Passed to [`BackEndArchitecture::from_bytes`] when the host + /// reconnects so the game can resume from the last known state. + /// Ignored for non-host reconnects and normal connections. + pub host_state: Option>, +} + +/// Error returned by [`GameSession::connect`]. +#[derive(Debug)] +pub enum ConnectError { + WebSocket(String), + Handshake(String), +} + +impl std::fmt::Display for ConnectError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + ConnectError::WebSocket(e) => write!(f, "WebSocket error: {e}"), + ConnectError::Handshake(e) => write!(f, "Handshake error: {e}"), + } + } +} + +// --------------------------------------------------------------------------- +// Internal message type (UI → background task) +// --------------------------------------------------------------------------- + +pub(crate) enum BackendMsg { + Action(A), + Disconnect, +} + +// --------------------------------------------------------------------------- +// Session event (background task → UI) +// --------------------------------------------------------------------------- + +/// Events emitted by the session to the UI. +pub enum SessionEvent { + /// A state update arrived from the host backend. + Update(ViewStateUpdate), + /// The session ended. `None` = clean disconnect, `Some(reason)` = error. + Disconnected(Option), +} + +// --------------------------------------------------------------------------- +// GameSession +// --------------------------------------------------------------------------- + +/// A connected game session. +/// +/// Created by [`GameSession::connect`]. Holds channels to the background task +/// that owns the WebSocket connection and (on host) the game backend. +pub struct GameSession { + /// The player ID assigned by the relay server. Always `0` for the host. + pub player_id: u16, + /// The game mode/variant selected by the host. + pub rule_variation: u16, + /// `true` if this client is hosting the game (runs the backend). + pub is_host: bool, + /// Token to persist in localStorage for reconnect on page refresh. + /// Only meaningful for non-host players (player_id > 0). + pub reconnect_token: u64, + action_tx: UnboundedSender>, + event_rx: UnboundedReceiver>, +} + +impl GameSession +where + A: SerializationCap + TaskBound, + D: SerializationCap + Clone + TaskBound, + VS: SerializationCap + Clone + TaskBound, +{ + /// Connects to the relay server and performs the handshake. + /// + /// Returns after the relay confirms the player ID and rule variation. + /// Spawns a background task that drives the WebSocket connection for the + /// lifetime of the session. + /// + /// # Errors + /// Returns `Err` if the WebSocket cannot be opened or the handshake fails. + pub async fn connect(config: RoomConfig) -> Result + where + Backend: BackEndArchitecture + TaskBound, + { + let create_room = matches!(config.role, RoomRole::Create); + + // 1. Open WebSocket. + let (mut ws_sender, ws_receiver) = + ewebsock::connect(&config.relay_url, ewebsock::Options::default()) + .map_err(|e| ConnectError::WebSocket(e.to_string()))?; + + // 2. Wait for the Opened event (WASM WebSocket is async). + loop { + match ws_receiver.try_recv() { + Some(WsEvent::Opened) => break, + Some(WsEvent::Error(e)) => return Err(ConnectError::WebSocket(e)), + Some(WsEvent::Closed) => { + return Err(ConnectError::WebSocket("Connection closed".to_string())); + } + Some(_) => continue, + None => sleep_ms(1).await, + } + } + + // 3. Send the join request. + let req = JoinRequest { + game_id: config.game_id, + room_id: config.room_id, + rule_variation: config.rule_variation, + create_room, + reconnect_token: config.reconnect_token, + }; + send_join_request(&mut ws_sender, &req).map_err(ConnectError::Handshake)?; + + // 4. Wait for the handshake response. + let (player_id, rule_variation, reconnect_token) = loop { + match ws_receiver.try_recv() { + Some(WsEvent::Message(WsMessage::Binary(data))) => { + break parse_handshake_response(data).map_err(ConnectError::Handshake)?; + } + Some(WsEvent::Error(e)) => return Err(ConnectError::Handshake(e)), + Some(WsEvent::Closed) => { + // The relay may have sent a binary error frame just before + // closing. ewebsock can deliver Closed before that frame, + // so drain one more message to catch it. + if let Some(WsEvent::Message(WsMessage::Binary(data))) = + ws_receiver.try_recv() + { + break parse_handshake_response(data) + .map_err(ConnectError::Handshake)?; + } + return Err(ConnectError::Handshake( + "Connection closed during handshake".to_string(), + )); + } + Some(_) => continue, + None => sleep_ms(1).await, + } + }; + + // The relay assigns player_id == 0 exclusively to the host. + let is_host = player_id == 0; + + // 5. Set up channels between the UI and the background task. + let (action_tx, action_rx) = mpsc::unbounded::>(); + let (event_tx, event_rx) = mpsc::unbounded::>(); + + // 6. Spawn the background event loop. + if is_host { + spawn_task(host_loop::( + ws_sender, + ws_receiver, + action_rx, + event_tx, + rule_variation, + config.host_state, + )); + } else { + spawn_task(client_loop::( + ws_sender, + ws_receiver, + action_rx, + event_tx, + )); + } + + Ok(GameSession { + player_id, + rule_variation, + is_host, + reconnect_token, + action_tx, + event_rx, + }) + } + + /// Sends a game action to the backend (fire-and-forget). + pub fn send_action(&self, action: A) { + self.action_tx + .unbounded_send(BackendMsg::Action(action)) + .ok(); + } + + /// Awaits the next session event. + /// + /// Returns `None` if the background task has exited (i.e. the session is + /// over). Normal termination arrives as `Some(SessionEvent::Disconnected(_))` + /// before the channel closes. + pub async fn next_event(&mut self) -> Option> { + self.event_rx.next().await + } + + /// Signals the background task to send a graceful disconnect message and + /// shut down. Consumes the session. + pub fn disconnect(self) { + self.action_tx + .unbounded_send(BackendMsg::Disconnect) + .ok(); + } +} diff --git a/clients/backbone-lib/src/traits.rs b/clients/backbone-lib/src/traits.rs new file mode 100644 index 0000000..1ec50f7 --- /dev/null +++ b/clients/backbone-lib/src/traits.rs @@ -0,0 +1,97 @@ +use serde::Serialize; +use serde::de::DeserializeOwned; + +/// Marker trait for types that can be serialized with postcard. +pub trait SerializationCap: Serialize + DeserializeOwned {} +impl SerializationCap for T where T: Serialize + DeserializeOwned {} + +/// State updates delivered to the frontend for rendering. +/// +/// - [`Full`](Self::Full): Immediately set all visual state, no animation. +/// - [`Incremental`](Self::Incremental): Apply with animation/transition. +pub enum ViewStateUpdate { + /// Complete game state snapshot. Received on join or after a reset. + Full(ViewState), + /// Incremental state change for animated transitions. + Incremental(DeltaInformation), +} + +/// Commands emitted by the game backend to control the session. +pub enum BackendCommand +where + DeltaInformation: SerializationCap, +{ + /// Incremental state change to be broadcast to all frontends. + Delta(DeltaInformation), + + /// Signals a complete reset: discard queued deltas, broadcast fresh full state. + ResetViewState, + + /// Forcibly removes a player from the session. + KickPlayer { player: u16 }, + + /// Schedules a callback after `duration` seconds. Overwrites any existing + /// timer with the same `timer_id`. + SetTimer { timer_id: u16, duration: f32 }, + + /// Cancels a previously scheduled timer. No-op if already fired or not set. + CancelTimer { timer_id: u16 }, + + /// Shuts down the entire room and disconnects all players. + TerminateRoom, +} + +/// The contract for game-specific server logic. +/// +/// Implement this on the host side. The session calls these methods in response +/// to network events and drives `drain_commands` to collect outbound messages. +/// +/// # Type Parameters +/// * `ServerRpcPayload` — Actions sent by players (e.g. `PlacePiece { x, y }`) +/// * `DeltaInformation` — Incremental state changes for animations +/// * `ViewState` — Complete game snapshot for syncing new clients +pub trait BackEndArchitecture +where + ServerRpcPayload: SerializationCap, + DeltaInformation: SerializationCap, + ViewState: SerializationCap + Clone, +{ + /// Creates a new game instance. `rule_variation` selects the game mode. + fn new(rule_variation: u16) -> Self; + + /// Attempt to restore a previously running game from serialized bytes. + /// + /// Called when the host reconnects after a page refresh. The bytes are the + /// game-specific snapshot produced by the app layer (via `serde_json` or + /// similar) and stored in localStorage. + /// + /// Return `None` if restoration is not supported or the bytes are invalid — + /// the caller falls back to `new(rule_variation)`. + fn from_bytes(_rule_variation: u16, _bytes: &[u8]) -> Option + where + Self: Sized, + { + None + } + + /// Called when a player connects. Player will receive a full state snapshot + /// automatically after this returns. + fn player_arrival(&mut self, player: u16); + + /// Called when a player disconnects. + fn player_departure(&mut self, player: u16); + + /// Called when a player sends a game action. + fn inform_rpc(&mut self, player: u16, payload: ServerRpcPayload); + + /// Called when a previously scheduled timer fires. + fn timer_triggered(&mut self, timer_id: u16); + + /// Returns the complete current game state. + fn get_view_state(&self) -> &ViewState; + + /// Collects and clears all pending commands since the last drain. + /// + /// Implement with `std::mem::take(&mut self.command_list)`. + fn drain_commands(&mut self) -> Vec>; +} diff --git a/client_cli/Cargo.toml b/clients/cli/Cargo.toml similarity index 71% rename from client_cli/Cargo.toml rename to clients/cli/Cargo.toml index 52318cb..0149b1b 100644 --- a/client_cli/Cargo.toml +++ b/clients/cli/Cargo.toml @@ -13,9 +13,9 @@ bincode = "1.3.3" pico-args = "0.5.0" pretty_assertions = "1.4.0" renet = "0.0.13" -trictrac-store = { path = "../store" } -trictrac-bot = { path = "../bot" } -spiel_bot = { path = "../spiel_bot" } +trictrac-store = { path = "../../store" } +trictrac-bot = { path = "../../bot" } +spiel_bot = { path = "../../spiel_bot" } itertools = "0.13.0" env_logger = "0.11.6" log = "0.4.20" diff --git a/client_cli/src/app.rs b/clients/cli/src/app.rs similarity index 100% rename from client_cli/src/app.rs rename to clients/cli/src/app.rs diff --git a/client_cli/src/game_runner.rs b/clients/cli/src/game_runner.rs similarity index 100% rename from client_cli/src/game_runner.rs rename to clients/cli/src/game_runner.rs diff --git a/client_cli/src/main.rs b/clients/cli/src/main.rs similarity index 100% rename from client_cli/src/main.rs rename to clients/cli/src/main.rs diff --git a/client_web/Cargo.toml b/clients/web-game/Cargo.toml similarity index 90% rename from client_web/Cargo.toml rename to clients/web-game/Cargo.toml index 10d91b8..2103eda 100644 --- a/client_web/Cargo.toml +++ b/clients/web-game/Cargo.toml @@ -9,8 +9,8 @@ locales = ["en", "fr"] [dependencies] leptos_i18n = { version = "0.5", features = ["csr", "interpolate_display"] } -trictrac-store = { path = "../store" } -backbone-lib = { path = "../../forks/multiplayer/backbone-lib" } +trictrac-store = { path = "../../store" } +backbone-lib = { path = "../backbone-lib" } leptos = { version = "0.7", features = ["csr"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1" diff --git a/client_web/Trunk.toml b/clients/web-game/Trunk.toml similarity index 100% rename from client_web/Trunk.toml rename to clients/web-game/Trunk.toml diff --git a/client_web/assets/diceroll.mp3 b/clients/web-game/assets/diceroll.mp3 similarity index 100% rename from client_web/assets/diceroll.mp3 rename to clients/web-game/assets/diceroll.mp3 diff --git a/client_web/assets/style.css b/clients/web-game/assets/style.css similarity index 100% rename from client_web/assets/style.css rename to clients/web-game/assets/style.css diff --git a/clients/web-game/dist/client_web-4248a2b78bb5a03.js b/clients/web-game/dist/client_web-4248a2b78bb5a03.js new file mode 100644 index 0000000..16381a5 --- /dev/null +++ b/clients/web-game/dist/client_web-4248a2b78bb5a03.js @@ -0,0 +1,1173 @@ +export class IntoUnderlyingByteSource { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + IntoUnderlyingByteSourceFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_intounderlyingbytesource_free(ptr, 0); + } + /** + * @returns {number} + */ + get autoAllocateChunkSize() { + const ret = wasm.intounderlyingbytesource_autoAllocateChunkSize(this.__wbg_ptr); + return ret >>> 0; + } + cancel() { + const ptr = this.__destroy_into_raw(); + wasm.intounderlyingbytesource_cancel(ptr); + } + /** + * @param {ReadableByteStreamController} controller + * @returns {Promise} + */ + pull(controller) { + const ret = wasm.intounderlyingbytesource_pull(this.__wbg_ptr, controller); + return ret; + } + /** + * @param {ReadableByteStreamController} controller + */ + start(controller) { + wasm.intounderlyingbytesource_start(this.__wbg_ptr, controller); + } + /** + * @returns {ReadableStreamType} + */ + get type() { + const ret = wasm.intounderlyingbytesource_type(this.__wbg_ptr); + return __wbindgen_enum_ReadableStreamType[ret]; + } +} +if (Symbol.dispose) IntoUnderlyingByteSource.prototype[Symbol.dispose] = IntoUnderlyingByteSource.prototype.free; + +export class IntoUnderlyingSink { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + IntoUnderlyingSinkFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_intounderlyingsink_free(ptr, 0); + } + /** + * @param {any} reason + * @returns {Promise} + */ + abort(reason) { + const ptr = this.__destroy_into_raw(); + const ret = wasm.intounderlyingsink_abort(ptr, reason); + return ret; + } + /** + * @returns {Promise} + */ + close() { + const ptr = this.__destroy_into_raw(); + const ret = wasm.intounderlyingsink_close(ptr); + return ret; + } + /** + * @param {any} chunk + * @returns {Promise} + */ + write(chunk) { + const ret = wasm.intounderlyingsink_write(this.__wbg_ptr, chunk); + return ret; + } +} +if (Symbol.dispose) IntoUnderlyingSink.prototype[Symbol.dispose] = IntoUnderlyingSink.prototype.free; + +export class IntoUnderlyingSource { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + IntoUnderlyingSourceFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_intounderlyingsource_free(ptr, 0); + } + cancel() { + const ptr = this.__destroy_into_raw(); + wasm.intounderlyingsource_cancel(ptr); + } + /** + * @param {ReadableStreamDefaultController} controller + * @returns {Promise} + */ + pull(controller) { + const ret = wasm.intounderlyingsource_pull(this.__wbg_ptr, controller); + return ret; + } +} +if (Symbol.dispose) IntoUnderlyingSource.prototype[Symbol.dispose] = IntoUnderlyingSource.prototype.free; +function __wbg_get_imports() { + const import0 = { + __proto__: null, + __wbg___wbindgen_debug_string_ab4b34d23d6778bd: function(arg0, arg1) { + const ret = debugString(arg1); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg___wbindgen_in_a5d8b22e52b24dd1: function(arg0, arg1) { + const ret = arg0 in arg1; + return ret; + }, + __wbg___wbindgen_is_falsy_c07bb72123e65555: function(arg0) { + const ret = !arg0; + return ret; + }, + __wbg___wbindgen_is_function_3baa9db1a987f47d: function(arg0) { + const ret = typeof(arg0) === 'function'; + return ret; + }, + __wbg___wbindgen_is_null_52ff4ec04186736f: function(arg0) { + const ret = arg0 === null; + return ret; + }, + __wbg___wbindgen_is_string_6df3bf7ef1164ed3: function(arg0) { + const ret = typeof(arg0) === 'string'; + return ret; + }, + __wbg___wbindgen_is_undefined_29a43b4d42920abd: function(arg0) { + const ret = arg0 === undefined; + return ret; + }, + __wbg___wbindgen_string_get_7ed5322991caaec5: function(arg0, arg1) { + const obj = arg1; + const ret = typeof(obj) === 'string' ? obj : undefined; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg___wbindgen_throw_6b64449b9b9ed33c: function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }, + __wbg__wbg_cb_unref_b46c9b5a9f08ec37: function(arg0) { + arg0._wbg_cb_unref(); + }, + __wbg_addEventListener_79f868f51ae88579: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + arg0.addEventListener(getStringFromWasm0(arg1, arg2), arg3, arg4); + }, arguments); }, + __wbg_addEventListener_8176dab41b09531c: function() { return handleError(function (arg0, arg1, arg2, arg3) { + arg0.addEventListener(getStringFromWasm0(arg1, arg2), arg3); + }, arguments); }, + __wbg_add_0cfb2ab24caa9888: function() { return handleError(function (arg0, arg1, arg2) { + arg0.add(getStringFromWasm0(arg1, arg2)); + }, arguments); }, + __wbg_body_c7b35a55457167ba: function(arg0) { + const ret = arg0.body; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_buffer_d0f5ea0926a691fd: function(arg0) { + const ret = arg0.buffer; + return ret; + }, + __wbg_byobRequest_dc6aed9db01b12c6: function(arg0) { + const ret = arg0.byobRequest; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_byteLength_3e660e5661f3327e: function(arg0) { + const ret = arg0.byteLength; + return ret; + }, + __wbg_byteOffset_ecd62abe44dd28d4: function(arg0) { + const ret = arg0.byteOffset; + return ret; + }, + __wbg_call_a24592a6f349a97e: function() { return handleError(function (arg0, arg1, arg2) { + const ret = arg0.call(arg1, arg2); + return ret; + }, arguments); }, + __wbg_cancelBubble_56aa5b315d711482: function(arg0) { + const ret = arg0.cancelBubble; + return ret; + }, + __wbg_classList_a4e8d7553b666e6d: function(arg0) { + const ret = arg0.classList; + return ret; + }, + __wbg_clearTimeout_113b1cde814ec762: function(arg0) { + const ret = clearTimeout(arg0); + return ret; + }, + __wbg_clearTimeout_1a62f3563b1611b3: function(arg0, arg1) { + arg0.clearTimeout(arg1); + }, + __wbg_cloneNode_50658ff5fec44693: function() { return handleError(function (arg0, arg1) { + const ret = arg0.cloneNode(arg1 !== 0); + return ret; + }, arguments); }, + __wbg_cloneNode_eb01fe238729dac4: function() { return handleError(function (arg0) { + const ret = arg0.cloneNode(); + return ret; + }, arguments); }, + __wbg_close_0aa6756f298a2c2d: function(arg0) { + arg0.close(); + }, + __wbg_close_88106990eea7f544: function() { return handleError(function (arg0) { + arg0.close(); + }, arguments); }, + __wbg_close_e6c8977a002e9e13: function() { return handleError(function (arg0) { + arg0.close(); + }, arguments); }, + __wbg_close_fb954dfaf67b5732: function() { return handleError(function (arg0) { + arg0.close(); + }, arguments); }, + __wbg_composedPath_e2b9e0f5161335eb: function(arg0) { + const ret = arg0.composedPath(); + return ret; + }, + __wbg_connect_301bfaee317657e7: function() { return handleError(function (arg0, arg1) { + const ret = arg0.connect(arg1); + return ret; + }, arguments); }, + __wbg_content_13d0cb7e0ea91c39: function(arg0) { + const ret = arg0.content; + return ret; + }, + __wbg_cookie_d587a65145c1f3ba: function() { return handleError(function (arg0, arg1) { + const ret = arg1.cookie; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, arguments); }, + __wbg_createComment_592a0c17b1cf8cad: function(arg0, arg1, arg2) { + const ret = arg0.createComment(getStringFromWasm0(arg1, arg2)); + return ret; + }, + __wbg_createElementNS_e0e4bbb6e664f948: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + const ret = arg0.createElementNS(arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); + return ret; + }, arguments); }, + __wbg_createElement_bbd4c90086fe6f7b: function() { return handleError(function (arg0, arg1, arg2) { + const ret = arg0.createElement(getStringFromWasm0(arg1, arg2)); + return ret; + }, arguments); }, + __wbg_createGain_9f1346a2369109e0: function() { return handleError(function (arg0) { + const ret = arg0.createGain(); + return ret; + }, arguments); }, + __wbg_createOscillator_d891cd791ce0b814: function() { return handleError(function (arg0) { + const ret = arg0.createOscillator(); + return ret; + }, arguments); }, + __wbg_createTextNode_7949043038fd9f7b: function(arg0, arg1, arg2) { + const ret = arg0.createTextNode(getStringFromWasm0(arg1, arg2)); + return ret; + }, + __wbg_currentTime_8e9bfa251075a7d7: function(arg0) { + const ret = arg0.currentTime; + return ret; + }, + __wbg_data_bb9dffdd1e99cf2d: function(arg0) { + const ret = arg0.data; + return ret; + }, + __wbg_deleteProperty_d5f7bd763acbdb44: function() { return handleError(function (arg0, arg1) { + const ret = Reflect.deleteProperty(arg0, arg1); + return ret; + }, arguments); }, + __wbg_destination_7aa167ec1225162d: function(arg0) { + const ret = arg0.destination; + return ret; + }, + __wbg_documentElement_08ce5ecd9e8b21e1: function(arg0) { + const ret = arg0.documentElement; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_document_7a41071f2f439323: function(arg0) { + const ret = arg0.document; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_enqueue_4767ce322820c94d: function() { return handleError(function (arg0, arg1) { + arg0.enqueue(arg1); + }, arguments); }, + __wbg_error_2001591ad2463697: function(arg0) { + console.error(arg0); + }, + __wbg_exponentialRampToValueAtTime_00c2f1771a4804bd: function() { return handleError(function (arg0, arg1, arg2) { + const ret = arg0.exponentialRampToValueAtTime(arg1, arg2); + return ret; + }, arguments); }, + __wbg_firstChild_d4bf03999a23e79a: function(arg0) { + const ret = arg0.firstChild; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_firstElementChild_f67647a589d437a2: function(arg0) { + const ret = arg0.firstElementChild; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_frequency_4f71c695f55b6a54: function(arg0) { + const ret = arg0.frequency; + return ret; + }, + __wbg_gain_af09f4ecb5d66a4e: function(arg0) { + const ret = arg0.gain; + return ret; + }, + __wbg_getItem_7fe1351b9ea3b2f3: function() { return handleError(function (arg0, arg1, arg2, arg3) { + const ret = arg1.getItem(getStringFromWasm0(arg2, arg3)); + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, arguments); }, + __wbg_getRandomValues_3f44b700395062e5: function() { return handleError(function (arg0, arg1) { + globalThis.crypto.getRandomValues(getArrayU8FromWasm0(arg0, arg1)); + }, arguments); }, + __wbg_get_6011fa3a58f61074: function() { return handleError(function (arg0, arg1) { + const ret = Reflect.get(arg0, arg1); + return ret; + }, arguments); }, + __wbg_get_8360291721e2339f: function(arg0, arg1) { + const ret = arg0[arg1 >>> 0]; + return ret; + }, + __wbg_head_77bab63b2165751c: function(arg0) { + const ret = arg0.head; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_host_207aa9237088c9e9: function(arg0) { + const ret = arg0.host; + return ret; + }, + __wbg_insertBefore_38c7d835a2dcac23: function() { return handleError(function (arg0, arg1, arg2) { + const ret = arg0.insertBefore(arg1, arg2); + return ret; + }, arguments); }, + __wbg_instanceof_ArrayBuffer_7c8433c6ed14ffe3: function(arg0) { + let result; + try { + result = arg0 instanceof ArrayBuffer; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }, + __wbg_instanceof_Blob_10148a11a16aee87: function(arg0) { + let result; + try { + result = arg0 instanceof Blob; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }, + __wbg_instanceof_Element_56c8d987654f359e: function(arg0) { + let result; + try { + result = arg0 instanceof Element; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }, + __wbg_instanceof_Error_6872d63ba7922898: function(arg0) { + let result; + try { + result = arg0 instanceof Error; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }, + __wbg_instanceof_ShadowRoot_d26d95cd2363a2c1: function(arg0) { + let result; + try { + result = arg0 instanceof ShadowRoot; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }, + __wbg_instanceof_Window_cc64c86c8ef9e02b: function(arg0) { + let result; + try { + result = arg0 instanceof Window; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }, + __wbg_languages_53e97082086045ce: function(arg0) { + const ret = arg0.languages; + return ret; + }, + __wbg_length_9f1775224cf1d815: function(arg0) { + const ret = arg0.length; + return ret; + }, + __wbg_localStorage_f5f66b1ffd2486bc: function() { return handleError(function (arg0) { + const ret = arg0.localStorage; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, arguments); }, + __wbg_log_7e1aa9064a1dbdbd: function(arg0) { + console.log(arg0); + }, + __wbg_message_cb4f84ee66e5e341: function(arg0) { + const ret = arg0.message; + return ret; + }, + __wbg_name_d3c35622d14bb080: function(arg0) { + const ret = arg0.name; + return ret; + }, + __wbg_navigator_bc077756492232c5: function(arg0) { + const ret = arg0.navigator; + return ret; + }, + __wbg_new_0a8d011ad814b95a: function() { return handleError(function () { + const ret = new FileReader(); + return ret; + }, arguments); }, + __wbg_new_0c7403db6e782f19: function(arg0) { + const ret = new Uint8Array(arg0); + return ret; + }, + __wbg_new_2a6e9133304ae2bf: function() { return handleError(function (arg0, arg1) { + const ret = new WebSocket(getStringFromWasm0(arg0, arg1)); + return ret; + }, arguments); }, + __wbg_new_5e360d2ff7b9e1c3: function(arg0, arg1) { + const ret = new Error(getStringFromWasm0(arg0, arg1)); + return ret; + }, + __wbg_new_aa8d0fa9762c29bd: function() { + const ret = new Object(); + return ret; + }, + __wbg_new_aadb2b3f13e701cf: function() { return handleError(function (arg0, arg1) { + const ret = new BroadcastChannel(getStringFromWasm0(arg0, arg1)); + return ret; + }, arguments); }, + __wbg_new_df431d05bd05ed26: function() { return handleError(function () { + const ret = new lAudioContext(); + return ret; + }, arguments); }, + __wbg_new_typed_323f37fd55ab048d: function(arg0, arg1) { + try { + var state0 = {a: arg0, b: arg1}; + var cb0 = (arg0, arg1) => { + const a = state0.a; + state0.a = 0; + try { + return wasm_bindgen__convert__closures_____invoke__h42c7f62e44be4353(a, state0.b, arg0, arg1); + } finally { + state0.a = a; + } + }; + const ret = new Promise(cb0); + return ret; + } finally { + state0.a = 0; + } + }, + __wbg_new_with_byte_offset_and_length_01848e8d6a3d49ad: function(arg0, arg1, arg2) { + const ret = new Uint8Array(arg0, arg1 >>> 0, arg2 >>> 0); + return ret; + }, + __wbg_nextSibling_58f635df24be0787: function(arg0) { + const ret = arg0.nextSibling; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_nodeType_1e98f026e15a17e5: function(arg0) { + const ret = arg0.nodeType; + return ret; + }, + __wbg_now_a9b7df1cbee90986: function() { + const ret = Date.now(); + return ret; + }, + __wbg_now_e7c6795a7f81e10f: function(arg0) { + const ret = arg0.now(); + return ret; + }, + __wbg_parentNode_e94744054a57a837: function(arg0) { + const ret = arg0.parentNode; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_performance_3fcf6e32a7e1ed0a: function(arg0) { + const ret = arg0.performance; + return ret; + }, + __wbg_postMessage_f9ee88e3c733baf9: function() { return handleError(function (arg0, arg1) { + arg0.postMessage(arg1); + }, arguments); }, + __wbg_preventDefault_f55c01cb5fd2bcc0: function(arg0) { + arg0.preventDefault(); + }, + __wbg_prototypesetcall_a6b02eb00b0f4ce2: function(arg0, arg1, arg2) { + Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2); + }, + __wbg_queueMicrotask_5d15a957e6aa920e: function(arg0) { + queueMicrotask(arg0); + }, + __wbg_queueMicrotask_f8819e5ffc402f36: function(arg0) { + const ret = arg0.queueMicrotask; + return ret; + }, + __wbg_readAsArrayBuffer_7f1359e61bc15108: function() { return handleError(function (arg0, arg1) { + arg0.readAsArrayBuffer(arg1); + }, arguments); }, + __wbg_removeAttribute_c75ac657c944b3f1: function() { return handleError(function (arg0, arg1, arg2) { + arg0.removeAttribute(getStringFromWasm0(arg1, arg2)); + }, arguments); }, + __wbg_removeEventListener_61405fc9de7dfd6b: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + arg0.removeEventListener(getStringFromWasm0(arg1, arg2), arg3, arg4); + }, arguments); }, + __wbg_removeEventListener_7bdf07404d9b24bd: function() { return handleError(function (arg0, arg1, arg2, arg3) { + arg0.removeEventListener(getStringFromWasm0(arg1, arg2), arg3); + }, arguments); }, + __wbg_removeItem_487c385a3066a8ed: function() { return handleError(function (arg0, arg1, arg2) { + arg0.removeItem(getStringFromWasm0(arg1, arg2)); + }, arguments); }, + __wbg_remove_48cb93cf7a6c4260: function(arg0) { + arg0.remove(); + }, + __wbg_remove_8aa602fc502f0448: function() { return handleError(function (arg0, arg1, arg2) { + arg0.remove(getStringFromWasm0(arg1, arg2)); + }, arguments); }, + __wbg_remove_9ffcfa2a5664fa43: function(arg0) { + arg0.remove(); + }, + __wbg_resolve_e6c466bc1052f16c: function(arg0) { + const ret = Promise.resolve(arg0); + return ret; + }, + __wbg_respond_008ca9525ae22847: function() { return handleError(function (arg0, arg1) { + arg0.respond(arg1 >>> 0); + }, arguments); }, + __wbg_result_cadfbcadd3b04647: function() { return handleError(function (arg0) { + const ret = arg0.result; + return ret; + }, arguments); }, + __wbg_run_0b0a622deae25fda: function(arg0, arg1, arg2) { + try { + var state0 = {a: arg1, b: arg2}; + var cb0 = () => { + const a = state0.a; + state0.a = 0; + try { + return wasm_bindgen__convert__closures_____invoke__hf0f977607302985a(a, state0.b, ); + } finally { + state0.a = a; + } + }; + const ret = arg0.run(cb0); + return ret; + } finally { + state0.a = 0; + } + }, + __wbg_send_15358dbe221c6258: function() { return handleError(function (arg0, arg1, arg2) { + arg0.send(getStringFromWasm0(arg1, arg2)); + }, arguments); }, + __wbg_send_186c85704c7f2d00: function() { return handleError(function (arg0, arg1, arg2) { + arg0.send(getArrayU8FromWasm0(arg1, arg2)); + }, arguments); }, + __wbg_setAttribute_6fde4098d274155c: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + arg0.setAttribute(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); + }, arguments); }, + __wbg_setItem_e6399d3faae141dc: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + arg0.setItem(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); + }, arguments); }, + __wbg_setTimeout_d8786dd31f90da0f: function() { return handleError(function (arg0, arg1, arg2) { + const ret = arg0.setTimeout(arg1, arg2); + return ret; + }, arguments); }, + __wbg_setTimeout_ef24d2fc3ad97385: function() { return handleError(function (arg0, arg1) { + const ret = setTimeout(arg0, arg1); + return ret; + }, arguments); }, + __wbg_setValueAtTime_f2282afd259bb493: function() { return handleError(function (arg0, arg1, arg2) { + const ret = arg0.setValueAtTime(arg1, arg2); + return ret; + }, arguments); }, + __wbg_set_022bee52d0b05b19: function() { return handleError(function (arg0, arg1, arg2) { + const ret = Reflect.set(arg0, arg1, arg2); + return ret; + }, arguments); }, + __wbg_set_3d484eb794afec82: function(arg0, arg1, arg2) { + arg0.set(getArrayU8FromWasm0(arg1, arg2)); + }, + __wbg_set_binaryType_770e68648ca5e83d: function(arg0, arg1) { + arg0.binaryType = __wbindgen_enum_BinaryType[arg1]; + }, + __wbg_set_capture_6a782955ea62ac61: function(arg0, arg1) { + arg0.capture = arg1 !== 0; + }, + __wbg_set_cookie_b230bb282b0c6f43: function() { return handleError(function (arg0, arg1, arg2) { + arg0.cookie = getStringFromWasm0(arg1, arg2); + }, arguments); }, + __wbg_set_innerHTML_a3c82996073b31ea: function(arg0, arg1, arg2) { + arg0.innerHTML = getStringFromWasm0(arg1, arg2); + }, + __wbg_set_nodeValue_f39ed00fc286b285: function(arg0, arg1, arg2) { + arg0.nodeValue = arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2); + }, + __wbg_set_once_e747a93482f65a72: function(arg0, arg1) { + arg0.once = arg1 !== 0; + }, + __wbg_set_onclose_17fa3bbcc4ba3541: function(arg0, arg1) { + arg0.onclose = arg1; + }, + __wbg_set_onerror_da99c4232662a084: function(arg0, arg1) { + arg0.onerror = arg1; + }, + __wbg_set_onloadend_353e1e891cf72c27: function(arg0, arg1) { + arg0.onloadend = arg1; + }, + __wbg_set_onmessage_c1db358b9c38e3f1: function(arg0, arg1) { + arg0.onmessage = arg1; + }, + __wbg_set_onopen_cd47b8fb1d92dee9: function(arg0, arg1) { + arg0.onopen = arg1; + }, + __wbg_set_passive_69f5c7d4e21e69c3: function(arg0, arg1) { + arg0.passive = arg1 !== 0; + }, + __wbg_set_type_e10300c35573ac85: function(arg0, arg1) { + arg0.type = __wbindgen_enum_OscillatorType[arg1]; + }, + __wbg_set_value_701931da23e8bae7: function(arg0, arg1) { + arg0.value = arg1; + }, + __wbg_slice_5fffd132e3ff5262: function(arg0, arg1) { + const ret = arg1.slice(); + const ptr1 = passArrayJsValueToWasm0(ret, wasm.__wbindgen_malloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg_start_ccf4b52f03e06e0a: function() { return handleError(function (arg0, arg1) { + arg0.start(arg1); + }, arguments); }, + __wbg_static_accessor_CREATE_TASK_f3ab6a6954bda493: function() { + const ret = typeof console === 'undefined' ? null : console?.createTask; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_static_accessor_GLOBAL_8cfadc87a297ca02: function() { + const ret = typeof global === 'undefined' ? null : global; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_static_accessor_GLOBAL_THIS_602256ae5c8f42cf: function() { + const ret = typeof globalThis === 'undefined' ? null : globalThis; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_static_accessor_SELF_e445c1c7484aecc3: function() { + const ret = typeof self === 'undefined' ? null : self; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_static_accessor_WINDOW_f20e8576ef1e0f17: function() { + const ret = typeof window === 'undefined' ? null : window; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_stopPropagation_e088fca8231e68c4: function(arg0) { + arg0.stopPropagation(); + }, + __wbg_stop_b0230bbe32583fd2: function() { return handleError(function (arg0, arg1) { + arg0.stop(arg1); + }, arguments); }, + __wbg_target_6d97e221d11b71b6: function(arg0) { + const ret = arg0.target; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_textContent_1f28330a124ec047: function(arg0, arg1) { + const ret = arg1.textContent; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg_then_8e16ee11f05e4827: function(arg0, arg1) { + const ret = arg0.then(arg1); + return ret; + }, + __wbg_toString_6dc1a94e0bdba378: function(arg0) { + const ret = arg0.toString(); + return ret; + }, + __wbg_value_6079dd28568d83c9: function(arg0, arg1) { + const ret = arg1.value; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg_view_701664ffb3b1ce67: function(arg0) { + const ret = arg0.view; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_warn_3cc416af27dbdc02: function(arg0) { + console.warn(arg0); + }, + __wbg_warn_bd0f407277b102f4: function(arg0, arg1, arg2) { + console.warn(arg0, arg1, arg2); + }, + __wbindgen_cast_0000000000000001: function(arg0, arg1) { + // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 1089, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`. + const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h631ca3ab15db92ac); + return ret; + }, + __wbindgen_cast_0000000000000002: function(arg0, arg1) { + // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 1146, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`. + const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__heaa42c2d614740c5); + return ret; + }, + __wbindgen_cast_0000000000000003: function(arg0, arg1) { + // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 987, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`. + const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h6c85d08fbcdf5b5a); + return ret; + }, + __wbindgen_cast_0000000000000004: function(arg0, arg1) { + // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("ErrorEvent")], shim_idx: 985, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`. + const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h8604f84d7f7e1085); + return ret; + }, + __wbindgen_cast_0000000000000005: function(arg0, arg1) { + // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("Event")], shim_idx: 1090, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`. + const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__hdb75aae9aec73406); + return ret; + }, + __wbindgen_cast_0000000000000006: function(arg0, arg1) { + // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("MessageEvent")], shim_idx: 988, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`. + const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h0ba230b615670f92); + return ret; + }, + __wbindgen_cast_0000000000000007: function(arg0, arg1) { + // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("ProgressEvent")], shim_idx: 986, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`. + const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h662b7d6967267d18); + return ret; + }, + __wbindgen_cast_0000000000000008: function(arg0, arg1) { + // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [], shim_idx: 1024, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`. + const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h3420984fa2fe04e3); + return ret; + }, + __wbindgen_cast_0000000000000009: function(arg0, arg1) { + // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [], shim_idx: 965, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`. + const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__hd6fed3fae7865fee); + return ret; + }, + __wbindgen_cast_000000000000000a: function(arg0, arg1) { + // Cast intrinsic for `Ref(String) -> Externref`. + const ret = getStringFromWasm0(arg0, arg1); + return ret; + }, + __wbindgen_init_externref_table: function() { + const table = wasm.__wbindgen_externrefs; + const offset = table.grow(4); + table.set(0, undefined); + table.set(offset + 0, undefined); + table.set(offset + 1, null); + table.set(offset + 2, true); + table.set(offset + 3, false); + }, + }; + return { + __proto__: null, + "./client_web_bg.js": import0, + }; +} + +const lAudioContext = (typeof AudioContext !== 'undefined' ? AudioContext : (typeof webkitAudioContext !== 'undefined' ? webkitAudioContext : undefined)); +function wasm_bindgen__convert__closures_____invoke__h3420984fa2fe04e3(arg0, arg1) { + wasm.wasm_bindgen__convert__closures_____invoke__h3420984fa2fe04e3(arg0, arg1); +} + +function wasm_bindgen__convert__closures_____invoke__hd6fed3fae7865fee(arg0, arg1) { + wasm.wasm_bindgen__convert__closures_____invoke__hd6fed3fae7865fee(arg0, arg1); +} + +function wasm_bindgen__convert__closures_____invoke__hf0f977607302985a(arg0, arg1) { + const ret = wasm.wasm_bindgen__convert__closures_____invoke__hf0f977607302985a(arg0, arg1); + return ret !== 0; +} + +function wasm_bindgen__convert__closures_____invoke__h631ca3ab15db92ac(arg0, arg1, arg2) { + wasm.wasm_bindgen__convert__closures_____invoke__h631ca3ab15db92ac(arg0, arg1, arg2); +} + +function wasm_bindgen__convert__closures_____invoke__h6c85d08fbcdf5b5a(arg0, arg1, arg2) { + wasm.wasm_bindgen__convert__closures_____invoke__h6c85d08fbcdf5b5a(arg0, arg1, arg2); +} + +function wasm_bindgen__convert__closures_____invoke__h8604f84d7f7e1085(arg0, arg1, arg2) { + wasm.wasm_bindgen__convert__closures_____invoke__h8604f84d7f7e1085(arg0, arg1, arg2); +} + +function wasm_bindgen__convert__closures_____invoke__hdb75aae9aec73406(arg0, arg1, arg2) { + wasm.wasm_bindgen__convert__closures_____invoke__hdb75aae9aec73406(arg0, arg1, arg2); +} + +function wasm_bindgen__convert__closures_____invoke__h0ba230b615670f92(arg0, arg1, arg2) { + wasm.wasm_bindgen__convert__closures_____invoke__h0ba230b615670f92(arg0, arg1, arg2); +} + +function wasm_bindgen__convert__closures_____invoke__h662b7d6967267d18(arg0, arg1, arg2) { + wasm.wasm_bindgen__convert__closures_____invoke__h662b7d6967267d18(arg0, arg1, arg2); +} + +function wasm_bindgen__convert__closures_____invoke__heaa42c2d614740c5(arg0, arg1, arg2) { + const ret = wasm.wasm_bindgen__convert__closures_____invoke__heaa42c2d614740c5(arg0, arg1, arg2); + if (ret[1]) { + throw takeFromExternrefTable0(ret[0]); + } +} + +function wasm_bindgen__convert__closures_____invoke__h42c7f62e44be4353(arg0, arg1, arg2, arg3) { + wasm.wasm_bindgen__convert__closures_____invoke__h42c7f62e44be4353(arg0, arg1, arg2, arg3); +} + + +const __wbindgen_enum_BinaryType = ["blob", "arraybuffer"]; + + +const __wbindgen_enum_OscillatorType = ["sine", "square", "sawtooth", "triangle", "custom"]; + + +const __wbindgen_enum_ReadableStreamType = ["bytes"]; +const IntoUnderlyingByteSourceFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_intounderlyingbytesource_free(ptr >>> 0, 1)); +const IntoUnderlyingSinkFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_intounderlyingsink_free(ptr >>> 0, 1)); +const IntoUnderlyingSourceFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_intounderlyingsource_free(ptr >>> 0, 1)); + +function addToExternrefTable0(obj) { + const idx = wasm.__externref_table_alloc(); + wasm.__wbindgen_externrefs.set(idx, obj); + return idx; +} + +const CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(state => wasm.__wbindgen_destroy_closure(state.a, state.b)); + +function debugString(val) { + // primitive types + const type = typeof val; + if (type == 'number' || type == 'boolean' || val == null) { + return `${val}`; + } + if (type == 'string') { + return `"${val}"`; + } + if (type == 'symbol') { + const description = val.description; + if (description == null) { + return 'Symbol'; + } else { + return `Symbol(${description})`; + } + } + if (type == 'function') { + const name = val.name; + if (typeof name == 'string' && name.length > 0) { + return `Function(${name})`; + } else { + return 'Function'; + } + } + // objects + if (Array.isArray(val)) { + const length = val.length; + let debug = '['; + if (length > 0) { + debug += debugString(val[0]); + } + for(let i = 1; i < length; i++) { + debug += ', ' + debugString(val[i]); + } + debug += ']'; + return debug; + } + // Test for built-in + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches && builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + // Failed to match the standard '[object ClassName]' + return toString.call(val); + } + if (className == 'Object') { + // we're a user defined class or Object + // JSON.stringify avoids problems with cycles, and is generally much + // easier than looping through ownProperties of `val`. + try { + return 'Object(' + JSON.stringify(val) + ')'; + } catch (_) { + return 'Object'; + } + } + // errors + if (val instanceof Error) { + return `${val.name}: ${val.message}\n${val.stack}`; + } + // TODO we could test for more things here, like `Set`s and `Map`s. + return className; +} + +function getArrayU8FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); +} + +let cachedDataViewMemory0 = null; +function getDataViewMemory0() { + if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) { + cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + } + return cachedDataViewMemory0; +} + +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return decodeText(ptr, len); +} + +let cachedUint8ArrayMemory0 = null; +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; +} + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + const idx = addToExternrefTable0(e); + wasm.__wbindgen_exn_store(idx); + } +} + +function isLikeNone(x) { + return x === undefined || x === null; +} + +function makeMutClosure(arg0, arg1, f) { + const state = { a: arg0, b: arg1, cnt: 1 }; + const real = (...args) => { + + // First up with a closure we increment the internal reference + // count. This ensures that the Rust closure environment won't + // be deallocated while we're invoking it. + state.cnt++; + const a = state.a; + state.a = 0; + try { + return f(a, state.b, ...args); + } finally { + state.a = a; + real._wbg_cb_unref(); + } + }; + real._wbg_cb_unref = () => { + if (--state.cnt === 0) { + wasm.__wbindgen_destroy_closure(state.a, state.b); + state.a = 0; + CLOSURE_DTORS.unregister(state); + } + }; + CLOSURE_DTORS.register(real, state, state); + return real; +} + +function passArrayJsValueToWasm0(array, malloc) { + const ptr = malloc(array.length * 4, 4) >>> 0; + for (let i = 0; i < array.length; i++) { + const add = addToExternrefTable0(array[i]); + getDataViewMemory0().setUint32(ptr + 4 * i, add, true); + } + WASM_VECTOR_LEN = array.length; + return ptr; +} + +function passStringToWasm0(arg, malloc, realloc) { + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8ArrayMemory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); + const ret = cachedTextEncoder.encodeInto(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +function takeFromExternrefTable0(idx) { + const value = wasm.__wbindgen_externrefs.get(idx); + wasm.__externref_table_dealloc(idx); + return value; +} + +let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); +cachedTextDecoder.decode(); +const MAX_SAFARI_DECODE_BYTES = 2146435072; +let numBytesDecoded = 0; +function decodeText(ptr, len) { + numBytesDecoded += len; + if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) { + cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + cachedTextDecoder.decode(); + numBytesDecoded = len; + } + return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); +} + +const cachedTextEncoder = new TextEncoder(); + +if (!('encodeInto' in cachedTextEncoder)) { + cachedTextEncoder.encodeInto = function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; + }; +} + +let WASM_VECTOR_LEN = 0; + +let wasmModule, wasm; +function __wbg_finalize_init(instance, module) { + wasm = instance.exports; + wasmModule = module; + cachedDataViewMemory0 = null; + cachedUint8ArrayMemory0 = null; + wasm.__wbindgen_start(); + return wasm; +} + +async function __wbg_load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + } catch (e) { + const validResponse = module.ok && expectedResponseType(module.type); + + if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + + } else { throw e; } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } else { + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + } else { + return instance; + } + } + + function expectedResponseType(type) { + switch (type) { + case 'basic': case 'cors': case 'default': return true; + } + return false; + } +} + +function initSync(module) { + if (wasm !== undefined) return wasm; + + + if (module !== undefined) { + if (Object.getPrototypeOf(module) === Object.prototype) { + ({module} = module) + } else { + console.warn('using deprecated parameters for `initSync()`; pass a single object instead') + } + } + + const imports = __wbg_get_imports(); + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); + } + const instance = new WebAssembly.Instance(module, imports); + return __wbg_finalize_init(instance, module); +} + +async function __wbg_init(module_or_path) { + if (wasm !== undefined) return wasm; + + + if (module_or_path !== undefined) { + if (Object.getPrototypeOf(module_or_path) === Object.prototype) { + ({module_or_path} = module_or_path) + } else { + console.warn('using deprecated parameters for the initialization function; pass a single object instead') + } + } + + if (module_or_path === undefined) { + module_or_path = new URL('client_web_bg.wasm', import.meta.url); + } + const imports = __wbg_get_imports(); + + if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) { + module_or_path = fetch(module_or_path); + } + + const { instance, module } = await __wbg_load(await module_or_path, imports); + + return __wbg_finalize_init(instance, module); +} + +export { initSync, __wbg_init as default }; diff --git a/clients/web-game/dist/client_web-4248a2b78bb5a03_bg.wasm b/clients/web-game/dist/client_web-4248a2b78bb5a03_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e3117d47536b170fc716937a3b4277a4bc388c78 GIT binary patch literal 6538636 zcmZQbEY4+QU|?We&)&qCz`&5ez*wKaz*v{Sz*v*Oz?h%FSkI8aSkG7wBI-ay4T#83 zV5+ZY01=G!V6qNO)_}?U1m=2>EQn;R2Xh$f5?JcNf?$fV9>Qg;OJD^F*E2wA#`**{ zus}TnjKNr+zzz|rXMnR9>k~Mjg7pjuTreicR&E5Ro*@C5$5@}hgCtqckiZGy*45Q9 zB=CdSb#--hAR6w}I*7~apzf&y*}zv{Uyq^?OovK5EtY~*7~}7sIoec1$A{0ops>Yssl-}fIJFv63D+G zr-JBuu;Lmpw+0+iO!Z)gLY-X;wuYm=77~&m?X|TaudvnE*4EU3wb#~w6HX1t!5}6} zJ=kAh3LLp0gP~@Fy_V0IpTJU|4{|pn$eoNJS2BV92O{edm?6Gnssl+dgIy0IL0+n> zs|TetP;i47%ynQjEFixy)+I32fgHeE2eOf|CV{b*u{MDbB*a+5SO;R&Brw&00**1C zA%QU;loj$p>Od}H$_M3w{CdXx1ZJ??KqSb@{CbcWYd$Cl7!n{f$Orl0hy(G#F_vG; zkieW@Tf>;2z?2UP42USm5~h5R1NbiJ%%nfUnfr1bdWoXq6Zc+<4Bv=l>Qqg3OxG*crpBZg2cI@BOK(o;)<67y2> zbHfsIN>hvDjnhm_lFSVZj4e$K%#2b^8Mv_MRfOm*PAv(^%uUTNEs0M}GcrjrN=r6Q zOtCaKwlHNVz@kkVqAfWmHL(b$(a_L1$uK!3)xyvuHQC(Eh#?P)Mk$EKy!`U`RP$sr zb4$}i^E3;?R6~O_hFmP_l_2U1Qj5~^i*gh5l2hZ2(~{H7QjLug%~K6iQw$RE*^{1H z5^rH_W?*D#Xl`VfYGiC|nTFLvst|ipQgc#EQUi+e3sQ?pD&td3)6A1n%*~7wlao@C zOiUPRusBf~qBS`&CnrA9$i&prDA6p<*u*l?(ma)+5nB{%Ky+m06_nr4}5V3fp=gT+2**yrRYC*}l~grObh_rGf^{Y(rI;jJ z8W>oZrKOssnI~b@2~9E(J3~?{O8oLuQsd1nO)L#ej17z}(o!sOX@%xkSjfPvHLyrd zHBC)Uu}rl{GBQjx#2P?Qy%1}mI{kvs0l9H0lQq9av(kx9Z7)r5t7MfI(@>43~ zlg*QiO%qK`O-#)V&CHV$v04Vzkdd005^rvvl$c~@oMdEZW@>I~h&_#ILLvewX+xbD zZ)%ookz#3KZf0tdW^8Jiiq$@7>?h|W78mA(Oig4c#G(@#3q`59`DLjHTa(RA6O+wM&66!nOp=V#46*8kX8*Lz zqT&*0=s0I&=A^`@nVFlJm?xTASf-d5nmXvsk$Bso7XFEzO&-q^q}DJ?NI)!5M7 z%+x&9oS_zrE$R?Gi76?rWvO{3proFfms%8WVQ6lal9*&-m}FpSYHXOyP=-ab7DO{7 z1)%CTPfAHMFgGzUNwG{aGD%7yRlk{`iGgWavSmuDc}iM}SrS7z7W;8I-rO?H!ptJg z)G#sC!ot+t602sUESH~`lb@K9nwJu9Y-*fpm}+5Zn4D&Alx$>^%@9DJ|8=4v#SYXwSlnx9MEm8~&4HHu=3{8?OO%oYduy_)l z&5BENO5&3fQ__->6H`)*lMGDEOw6$sL(puKl30=$pOj>ol9rZ|Vwh@anVe>Xz1)JP zX;AT#oLEp&T9g`ZmS}EaWNB)enrLQ}m~3W?y&i{F$RPXjK`p6Na})DKOJfrYqck(qL~|pomO(3jNNV#eNzIKnu`o|IwlGaJ zHZU_wv`9_CTF60jMS5xpSdV#Hs-dx|VUlHPqH&T@nlVE-mN19vDTeAvH8ZxfOfgPN zOiVR2F-*Z;ghK)!4|?!Z^mR6KnSelxbTp4eY zW^R~lW@(ycYMNx0XljBr2|*oK25P~_n;Do}rlc5In3`FnSQsZ;Vr~3G!z?*JuLRV_ zGBi#xNKP_OHAqdgG)y+O#A*w)@rzx%&}HKP=Dnl z=B1Y=rl%Iin;NHDnj2Uc8CaMZn3yJ~Vzm((OBwmaCGkcE=81`xM#km_78c2tso0&U z11aN>oEV&un37)}l%HP`pJHT|VriP3Vq|P)oM@Dcy`2QLGCeUfFFrBNz%tDwH95&N z#mp?x1iKrd?YZLA5^x8~5!@q+Pct&IFiK2IF*3DGN;0uDW~juHri>x3O|2-%&r8iK z$xO@%O3W$My7^l_zTG7(xRf&JV<<4q*^AWB^sF;8kn0Vnx~j!?KMJcD2Oxti<2{Ra=?9w z6i^kDVs2@eoNAC{VTe5sBGnWrX(q;oDF&uVDF&vgDMn^kYYJ$XfI>e%FTWr)FFrZN z#5~C&Ey*y&(kLZ06??-38YU2JkmiP=d0L`zQc`lVNm8P*sfi)hiVQ^`qyd$ZXla>j zVq|P&W@eOVU}1t)A2dG{gX&vDQ)5$$l%!N6Bg14fBU1~k$pfXP&V{zQk_}Umj7=?) zER&5bQb7$|Y;7(?PKr;;%u6h)3;`9J=H>>eW)@~97RiaGsTRg5Sc^>*SAu%Nrsf7F z$>wQBDFy~uU5ON1Mu}#rmWIa0#s(&dsYXdewC^k|3=PaIEe%pr6V201O-!)1JfYbH zQUS(WrllpPB^o7~g8EsBCdOE`K;tN>GCwH@RQ?y2#HS>iC8nlWrX(2{CK(zfn_(?n zp~XKWHKdv)TUeT#CmI+SrCO#MVz&wE{lt`%c!T7$B%{P6Ba`IBL`w?`?2(G<8H>b3 zGXtZvWK#p9Gy@Y8>{_5TOi^laL4ICJyn%s5a-yZFk!fP8k&%UoIlgEt%S21H-gbBV!A5Bg>S;Wb6e3G=qctYmkmwib+zMfw85f zC8%6Bx5VCehH5KF1eIM7+bm7YO-u|-O%hGb6D^FfhXge3BanrM`goS1B6jC~jjses7KPe}z=cJXP(mZ>QQ25HGg7G_CC7N%G; zEk-<;8km_{q@|grr6!x0m{}TQ9ixM`!$5X{3lzgtON%rEBePUP(?mn_R8y>33hKRN z&_G*`Q)yCCPHMcVSz@ATlChy_in*boi3Rq4HcVrFZb5!=YDz$2Nk)9CQIchiW(H}Ifx7+WnI#$VAV0?ELtLAfmlB@?@vniQg^5L~MT%LXaf*p0jv+#*-5|3J zlFdyFj8l@#Qq3)l(hRY;U7=-c5~O#UVvuHC0 zxuubjg{1}7$kT;{Cz58A9(b~aiLr6AS!#-*Nm^Pe_K{s!Fy@!XCt4<%r=%GsC#9xZ z8dzGGF)-tfa!|0FrW%_Wq!^{8nI~DM8YUZK9l3!9NM2%YYJ7@uvazX|kx`1FNm7!5 z1@=}cw9bJyZIVpVEKE{U&CF6wQ;kgwv1V>)8B~%VTv7xon$1#@4HGR*QVo()k`j&0 zEwE~W`5Zh3Wszc#mS|~iW|VAXnUsRHMQH>H?BbHdlFa1z#N_1E;^O?Gcy}LvCr6+7 z5D(AbcrybdBU7`)RMTXOG!vubGzM(*4BFVu33l~yi%&HHHT09sO)N|jQH9plW*~H8&DcR7#)F{o+EE!*rgNs4~L&LO0<3vy`YG`0?f^|R+8bzS;#lXlY zDK*v9D8(Sjz%d}&@$YFd1fiCMB`l4+u4nt?@X zvN85?TbR!H@}$hXl=RfRcu;@bG{qvx$SBp+D9OkqCB+cyyc)E=0HtB5&XSCx{PK9S zBr_8e6U!vaB+JwkW8-A3^P13k2qev!#qoKiIXUsBMroj-00R?43o~kjCIB@YQsRw`jMI$G(^5=L6O#-~EK;!6 z2jHR_>h8?E%#!%jijveKaLO%7Ov*`RV8D{l!B#;vB_|e_#2cUjL#$R2(q%-JF6`AD zA-hb-vdfe#U1ntIGAB!y1zEZ*$B8$Ul6NPtURoS&atCZ0=@i(6BZi%W=$ zo1a@qTs(@KTZo^Vo10r)TwDkQ_(g@pK>%bIx2TYixVV4-7f3>gTS$mYmfsa*6F*1= z1oI1VaS8ErakH|rvVv^nau($RIhKo!jhmZWNJtf=o{LLL3Zh&b|2nLT%w}fI$Ba(qFf+#TwFS$TwMIz0s^7}T>K!5xVXgm`S~R!Sw$te zxCBHcm6iFGxwyHw_?`KMgt$O93G?%VoFOF2D#`^47IATLVGzyA#lAj_gG3w`$Qd99f#Oeyn@gMv zB*G>xz{SPN&ku@KAyFX%I{H&ma$jvRl z3d$KE+qk&2wb{V=5)`Gv!mOa!_ z5)cq(V`CE#5MX2D7Xk$qmk^hmkdP1?C>OKwv$3(Uae=H96@}yzNQh%0L0%AGwBi>6 zg%ilR!l3La1Ww>!x8os%FPP5iJuGX5|9!Y2Dyxj3l!}_3IhCG z{6Zimmk=n}xrBs34gwn{B*f1T;;}}7G=j<|R!}j)%?e7!AR%y?;}RAS5D?(!7Umb{ z;u7T-7vKkFT8K0^m=Y2b1H~m57Z*Pp8yCNjg8)B2mpGRwzW^&JnSfFXH^`Cvpri{D z0qf%85(Xt73sAa-1OX_?iL!#rB#NnP^k+FMlj~*;^q>!<&p#?BT(rr3C^-GKk{?2 zf{I75F`%gA7Gjg+=7zdQNQjLaTz-HOJ4hCk>=6#DNMBRw1z8 zY=wkC$sQE2AbY{(3AYfaoB&Dl!%{KWYA69p*pPBWT!3GIpNm_Rn@a$q8dSSLRe>l_ zmgC~$61MGYi;6=^ZBW@Dt|G3k zCa$6;&MhFs&&CffKOhN=1kzSq9Hg2bl!8GFB+LaaY@m?>O4r~D1>{FivJnyh#TY9W zC{RF}goHpO41@9=KUj{7OBkdN{*3`goRjHh4_Vxj38!!1VD8vBw_J$LxP+il&J-{ zxYz{PxVZ&D=>$}TfYn*@b8%^Lf%3jGm!+j8H@~H_fT$>_auyQeXA>4>6A?!Kd4p2 z%Ebn$n?M@5__;xe8ssi6P%Qzr0?GrGhY&SfQv8st!VmTjSP)9E@w15u*|32#2p1>= zf`X2VOPf`ji;GK}OIsU4gM7*cN&{SqpjsH@Q7$1-R!}RFOH5P@lCPmT9%?cY1qm%s zu>&qQK<)!)1*j5GBa};&l}nV7A5^09LrQ;sVJ=2SMs7wSAvOUUFaYI#P?68i1_}sP zR#pp89mLHg1d2jPY#~TcF~G(z1S(6!xw*Kwx!Ab4LB%zw*yIM6kD&5LfDv5sb91qR zn*!Ec!k}gg7b~}b76?Ec$mI!RfWm>FUz8ivd;o5*`^Yc4{sw0T6`ME%qpAZ)}v=Io7a)=ZteQ|MvTn1_vg53gjl@-{DTwGjMpv(*^ z^hH@=O+u&=E-qF!S1wk5P`L$7WT3*5pG%0#!NGxF01~Hcpr$4ls5J+!B*ET?$Uu#O zP@pu#&(F^)z%L3SKyCzuBPi&E_=WiS*}1^>@C&f9a`Cf@YKw{*m>7Vvqqe9hsP_R< z$i-zL%EiXT#U>4EG=tmb5W|s4VNf51OIVm4gus;@sKR3h5yHa4qN2jWTu?Sh38)YT zwSzz=fNN$UA%0L!1vU3UEjxZLQ7%wBSQK0>fg=r6Fn}_?u>dIbgDNt1usAq&VZn}< z<_E_ev<`#zoVd8Sg<$~#@hb)iPT3$kK`s#G2e;_hSh-k*goHp96`Lq1rnNvlCa_8_ zE=D$R0|d;2>Vq2!b}h))1TjPlIB$a0vhj<8A`=uTAP0j>7_b^P0Z@$vD%IIo!M!GK zZb)YiRAhsy3XpbCn+lYfK%F#JR&cHc3&VN?pw1?!I2RHUVg+R~PzME6xPdBOQ2GVs zQ;-IbwOnlAAOi_=@$(C_aS3yS`wQR#5L5twn%SV_4bs5I%@xbV?ZOYrRjfi>pn4lz z@FcoY%>)d3)3 zWDGJCYz-)gxIsYG9@9T#_)2;@qIB zR#;ewU0fK{Y7i0@7w5MCw>BVFK#Dvt8`MML65?Xx2aPm3ZZ=j>N&vMPK&@&}Z-gIO*MoBcsN)Ux9>_#c zrvY5nf;`R-@)F2di~^u;4k!bGFh9Qq8#fy_8ym<*Q0f*Eg0%EORzh418iL^h)z+W@ z0by`n2QlCnWG<-Yfz;n1yWvtG1|uUQI16*JK^zIrv!GH3#9)IIToQ0IM4|fmK`{?1 zYe5wpsNw`?aAXpl+=wKR+8d1O!B(wGKb1AI#6s z2Ck66HnD+5p`gk|lsa!(0NOjL*%*tpzH!z-f#q z0+d-mI*@FDH2k<&SwXHB5&}nw7#Az3AYo-?15+R|RuG2`R8oK}0x4%><${!spn3ol zuS8;ye#B4(Sd$QB90JVd;sQkhIMP`mZ6lBdHZCq!dr&J1RAPeqG2j#g8)SoO1Sv$q zkj99ps5rk6H>f)aD#}4)NkXikZY95vPyi_D^0RS?LdsEoZcx<;DpQaQA(9CiMFh2} za9}*9h>C*7eptD{BN_Z$tgND&9q{N6IPgIE9n^0X5*Fna1r;Hz z;1~eQfeBD<6BPx;0N5yyDNu}5D1j|N5Nx0{;|_@=eo@ef5kEJZ6-=HRl5+$=jaE@m z_5zny;Q90h!~(@Rh(=&glM*^8z{SM| zc0WJAFt~05y9(TtLMR8b(3=EcL7W7r%mhiYv9q$mf)JKe`T6;U1%$a+x%pXHh4{II z*}%>LHLqA%jiHgO2`XL%KrRQF1j3-c0yuU+JuZ;Za13h1fx5Vw;7kiD*uV@nHqa21 zkS4zqDtHQ=~eA(;}11T{lJ1GHdAfC(;8 zisk~fvcO#Afe#N&h|!{=Y~UWM5F5C~#m~j4$;HLZDhe8n1~*zE^*AV~KqWOOEx~gp zKe&A11~s8A`Po2G4oXI_(F2fASRu{_6^Q(h;t}L65at4vAs|yxFf4GuG^nHkDTQE= z%|hVp$O`Jjv4TdYp=N?2mY+)il-40*2>h&|i6O8dAZ@Vlg$f{3AO|D60GyDJ1qiT3 z!Sx-oiEuW!wZsK#FY)v9+lYe{a)ByTa4ds{H2L|t1Xw{qh_C}PY5=%KB&(DF^3=27-i$<=Hch&7U1UM0T}?Yj*FWI)al@6;EXB+ni2$$(SaJb z;QAX>+C!2fylmvM0|VGl1=wiZB^}&TVB>`Nxg0=g8Z?jyGM0;<-;N(VOu+@NoAqZ-ugGx0n0X8-^(0CUc z7Z)SAv*^GL8t~xf7UE}v~E;ze`Di$G7LjY_IWO51I)dyPzB0x=0&@ch0 zOa=`ef@d#5s#&?XxdcFMd~jL;l_#v+tRNplDsygdvH}ergC>a~i49cvfCe^|xIr^; z{QUfkAOPwRg0dU5!~&IP;FQM=QU!7_!36`z*8&3EpaE%67l)gR5mY^aLZ6GxfuGF++&KW1RQ!x= zY@kM^g#{=*uz}_!k+A@H$&(rIhBWzkx__^ z6*OSaDkj7x1S%ZF#DqW!#e^VDa8SyFU`WOXdkftA2X+1so&t-*35YnT`NR*l9@J3+ zi}8a-#X&QfkN^Np3bTUdySPDPfNWd=pz@y!RPKYdfwX|U$;Hpj#l!`UbWk-3n%QFm z^+Q0336gn1lRKcvP*B2wxdN2#LDL(cywAnWog&I6nF1=2K>agrR&j6uaR~?s2(Yn& z78OW>G8f2bE>E)8<^s*P!6(8%0RjqAuo2`CpqNC}2O2~J87m;f z=FAGt_#k;M0Rd5dE>>*9|s8zSP&r5pv4WK1^`%r z04Q}?fISNeV_XD0U5agWo8HlX@_A}Hc&A2v!Pl4y4im3xG%K*g!)i+@Ki(u$U-l z9RQRI)&MGWKnn{%9B_bmLTXqr8$xh#3q^Bt3xjGMP+bD*UV*|LJd_IR2!pgDFdLTx z8>nx_#l__gX~kMu2(f`$t884{q9DUrAsH7`YJti#D@ZRe6Ex5c@+mi{w*!l0VPQ}O zE+ho1$Pjjb77B?WaWR>o#sExDEV#)5nT-Vdh?SL9KtPO(TL3hu#RD2K66X?wn#a$| zmB7u`2Gsf7pr#(kAkeHEcxV+;#e%H?&0m0;`=FK% z$TSoTt(rwaofH93qX#Mgia=0(EzHjk3L2O}5E|6>1qTu`0ZPYE49zN_rW0r#6&EjP zh6tn<6qTSEIncNVc!~vL9w>A{^Kc-SfreDMxEMh_4K^(y=;9P`Dg`wVK^A~Ur$F;x zppGv%je$p_!Ab={U3yUS6*NNxnQH*K1s7%m6&fH*;TYx~P%#f_VuB_X!J?ql0%@v) zxd;MoI(U>6?;vwY{QRP9pm|DgKLK22@q_wApu!1Mtw3@us1)F4Wo2Vz zkWyNflJ?f>IjPMo?YO2yH+@dE-gRP)?2{Z%@k_KVWx+5X3=;-KZ(6ovGHz-jF2nm7uwfwAH{1O4+N)Ox*1}O)7 zO9&hxJfM(*ib1XBmw@mgjaP7R!U(Vg7OxO51oAW_+(1htAo^HABcp7fYz3MT;b-Lm z4F&OoR#6J@@PJBPNZ@dD@pFI*9ne%gsJsOm1L|yo8m3&J!~v=^1V9ZsP?Bcj=VB9J zP67&J1<%F4@+uwqaN0ZF%D z5>(m?2?YcM1c15VegMCuq$Fr&R|v!d4Y-0W=hg%zP;hkNC&0djdju#Vw*o43Wl`Dj*Aaz;Onu-a+%s5XD?v zpj-`OgEBP8RUkeuzbHQ&Xy6h&RmR1`%FoZk!vo4Xph;A4+Yw|t7Z-TY1H6h1v=~|l zGVRX=>csH#aB;B;gVs5Lax}jX8)*KSOBfXRpq?F@cQD8@P`q)2R@fk#j35>$azP7M zL5>E^vVq!jVC7f|kc&aC2gN#=4Ix09$;SMkRwH;(DAY<&dkM;fQLLbn3Dhb8#Sx?+ zg4hh=gIW))v;jz|0X#tqu@qt#C>$W}6JUj8M3h1YT)Bc04=8Vf1BaVc0GwaJWgjSJ z`1u7`K@CpO+&#EU#tL2yEdU;vu4e32oe?qf~-Q|jw%}~Dl<@*p@$KqG)qH-h2<-baIpf!h91h0rl{P^khI zK~h2z6OzwCwn15-Ob;5E0+q8MlRzasVo-vc8@vh`)HsKw2v|`HQVhYM%9@LdpMwiD z31%IcuDJ*W(Z zNP?<2ehbi47C*l*H&`810@S~SFxfy0+PJv5gh4$_(CQX`P&bH6fSV1}Oa~<-P-zHS zxyuC}(*Ws$xE?g*C&D(=AGsFl`(1Hp< zP-zH~1?d*xwg8oEAO)bN6Sn|3wQ_NRb}fN)g4BQ&fJUmo99B@cbAyJkKr^kdPytDS zV%UNkWFQ-8?W+(d^n|$C7(wQMyuuD@c!3o1gIazkVQ0;*ELr8r0jNGC)ROoEDjkT3&8 zDOe0jfU7}J?gYtW#~|Av=@hC5Oo7LFApt-l393CngX5sp8epTixMD%G-6+Pefm1uk zL7-|4RC0rB63}QINDw3dDk1o}w1l`Vz-qx!58gWl?n8j82YxP4DESO!WN+@MZ8DBp2|cA0{zKyFrkP!3{a72s#(=4a#10#(kS_6axxaf4=$ zK!FLe6ci=w;D#Ycgh&kaIEVu22WjU=Bq>l(AQ=Q+l?RI?sB$m`Qv)&v1A|q76DCv{ zsD%R#1`q+7ngFGF6m4v*tf0{vP~rzwbf8dy=mpJ6fOK)Q3h}dpR-uD9U<*J4k|0^o zmP9r-Hg>Ri{9J58pqvfL2B4G;j&7(5Q2PutxByD~?4YfgY@o^qWCR;4sF(ufS&-$R z5p!;K0WOdNf^YiO~l!6B9xWG&9Kq(92El^}ZECP|BCEnmM2~bJ{jq>tC z>no6AHa1Wv6RZKmWd*NC0oex92~H9qOCT65L@WVKJ|LYSpTcqyH#aDEfN(6-7py{{ zNN0oRL@sbM0aO5joB_h%umA-aC@p|W5|ALIA_Dmt%tH_mZ(xw13G+yBo`7TyC=-+= z5qi;BAVWYxY@pG3P#l7S2g6F30H_H8iV4uvKqe^9fHDTSh6L?}1!XjlS+Hct3L44* zH3HZ`+t5Hk1ZsnW8up;J5-5j(w8I-m;35JN_8_A{0SJvnh#)cv8u(>pOQLs^5;P3z~=mMF+#SL0P1!_BU zv4N5YD=cC`#S<(P!TP`f4_fmI8YP9a7(k&45(bHa=>a3aE(G}pj6u`*>`v&C45|o0fdIB1g#Zm7gE|qQ z`T-J*khF^A08sG?iE=hBMzCf`BNNn0;bP@t;{a_Bfv5*fQGpT!)RCY#2GzWvnO$($ zgL?lUd5|e!9iUNtR!CD2q6b`wgT{Nn(qIBS0Sl?Tiv-I)+4QDSX6sKSE|YC&R*R1%ag zAvG^(s05-LQiU18xBLy&60hEACfp*ie za&d#^9Y9SwD}H`(rUh#QEq?>eX@U+{0c{-x_n!C}K{Wyws5J|kxn%>7GeKs#z^f(r zLF04$pq4;7*e?*1_$^pLYWTsjP(R?Nz{-gK@kFw9tWt*2G6p9`llcc)NQb;hXcwVSPGoqSXse6V5m#Lj)t-DGOSK5T+1yDrngYYT7~KAu%CN!*4QJ4Wx+$@fnCjZgsM;@iTzi zk>DBu+zSFt6@f;LLEBluQxc$=5iZa$F*m6H18RJMgh4c@?*g7A1L+10nuEHgjEsz2 zTo&LJY;0^?Y3U#20)q?zS<48T1!Dz`|1yFXAc6YuU>%?xEg(f)v9X|mU?vML zVIf8?Mn=#iC}=Pk)Sd@n1_lPu@Ft`w3d$-V%nBMzW@QC8O+lR^&>#vZWZBqQ*+Hg* zhS))8QHcqdBQSyBy?Z<$Lfx{0> zK!(}Dol0&ENa#aIMvA%(5Hr9eBP%%jgV~q_Xzvdw$HQd6MGYjaf{PsiRxU2kL9(W% zAQf2a5|9L|C}^@Ea$ zfDk7n+kr_?M+M9Pbtb^|1egaQz>-{C{0xx31z3=Qm4Sham4N{?z{LtG(7;(2LV(nR zFlZ?YIA?+gkY|a+tgMWT46Iz>-~f9NN^pY)LLg>3zrX$o8%K-95vfb@Vcn9s(>0WSW*X&5v*0g{2y zpeh3ivmvp;OhyJ!+=4J9c)%n#==x_++<=w92)Fs%mX_o@=726JElG9GD9y_b&a6sh*c>5`QwQXF28M=eS)57= zN^^1;4liJo!>Iy%r5D5YWsJBD0UaOAuq6U|+&-#F#hH285WhVNk-#FAn3P{s!f<2( zBQ{C!l`RZ+mtmDGFUl-QWjMNk5qu91jASd1d+8sqyg{sfmdupj!>i3{A{U43bS5 zwsn$df{9VGd77C~s)55qv&A^cZl^tz|{|m9R|2aKlp))4&v{D-PQVAQ=fMk@l}*%+-Fz%at85Px~29SI&$%S2;Q6d}V*k>wd*h)U&gq22IIZr zlW}Lm4*30^&bX?N@ly6rh4(&h@((pI{!c$6(c}9)e`^Ed*YvXzy}qyVw>2;}Wt@`e z@|{tzp@DHx#%YOe-(3ZJ8W@*loR{eLZ7bN+!1yoyqQpes_xXn#7*}STl<4$bTClr; zadyTfiAla23XU`|F3-3iF~N6#!QKYO`5EUV`g|KFFkXrH=e^o$w(qe?jMpOmd#|#Z z<@zroV zruu_%tLiVti|_d8T#pa~U`2FJ*3P zWPFysub=Vwe8!VC$L2G(m0gv4l69(|@g~dqsf_C zhvQEL9QQgBe>&iV*U|Vh0VlnV#h(p0<#jy%T)=6s6Y=K*&Ul@SzYuWN>s0*3fOB3G zO6L^xmcFm)DeWuhDqT|0U%IZKqx3|q6DUoWnhg_wyg* zKhJ-XzanyZ^s?IpYz+)r@r?Dr%Ih=dg43P<$!Z{>NDRvg43jC zGe7d3;XP zyd~kT@u`IS#(NTO8}CkdWV|Ecq4CLt2gWB7?ilY)xM#d<665jGNwr5yXG~^1QF^fU zbm^?x^QCtuFrF%%QhTIyZtc0!#kD6(_f2LzR@zs4w)9iYnbLjp85iVF%fFaEC;v+R zo}jDJkdpr$)TYoH~iIFXiwg#z`rM zCNcJ=+@HwUk#c4dV{1zP6vpn97ZVxVQ?|D;?scCviLobT&t%4_DJLc~wxyh%#Mqy5 zbRuI{%92TpohctP`rRI9T}Zjbd^-G6$~2~%DaUK(3g1dO+Ru1JKI>=v)nc}zl87BwMkn3z={Na9`_i{huf$)t|jV+8v!@o#r0`pXo?b&ZV8)}N*@u5Dy&vYtJa@o(zQsf>S8H&12!pL$^`V`JK* zf~CETpUa-RTrFGH%lM`2LD|o;M`bt5+LkkZox-@Nm+|FP#*b4Nw@hVR*voir8RNyg z-n65tbG&DJ&x!t)_c!-d!F1buT4(v6i!GbR*i*ha`HJS!v~#LU($1?k)OD3F%3Gh; zmUn0-*(a)c^PY%y=ACuyFlmjLkhf2*Te8jMg?YQlY_HjVGx9nLr{(QUyCK?> zciwSY`PA|q$=5WuC12Ovo_s@dd)g({ZD|)&H>X`x-I8`$b!*xc)z-X8%NZvxXY4BM zF1*SAU;Fe-#?OfxvNu(2%iEE+He@E_&b(cD&C?nG_cCtEo?1AoaCYI&nT)?J_UG-% zn>3wqlIK#}$3aVMkBYt4ex?0V`-S#o#%YXG7^gF?uG?8PgK5fi#u6iU(-|+M9nm??Jg@Lh`LXi3g-eqz$eo$a*pjp- zdt1m1#(t9}g-Z(;6)rA3lXo%ta`dI>bB1Tidle35AIScwa3yVn%;D@q*;mtc`Rwu8 z?K5`)WB**nE79u<*A<>#!Pvywp1;AiE$LYHqs*NwOZpg(>r7_eUbv<3#dO9S<@cC3 z7w#y$8-26c`Fq6_}!|zR&}H9YSkz0kJ?iiCo;}k z&bX~`(hSBIY0WbjU#4v>eA>>q*y~f!hoy`w6;Fhm^?9AQukiB>#&2oYXE1(AdpLvf zPuiy$jK9(z%wYVUc6$cn@3gBk7{8|NE!h-reg0&hT*25_v3>#LjgY0n4}B&sVw|*yal-<}f7!o^PuN~r#`rh8YaZjufbMyW z=TqLofF-oGI#s!SGLY4_X@;S4Daq|Mk+ab$^&#hoQ zzk>0?3dV~o7?&?&ys?b&5?iBwv*pcYj0-dyEnl{F$kJiC zkiFINF$>qcDYqF9u4H_4ijApJq<%G9oic;tgF{T&icAVjDhvut3JhjUCJIanjAl$0 z5T15)l9ChlAa0W=sVN zOpfnPG|pr;V=7T#a@=&Q<21V&Q-uPPeH4WMzRF9~iQ- zG?^I8nL&f5Nw6;K9zz()!1IPuO3Y-c|jvvm0TmWK$)PZH8 zF4(|m&iujOkwcM7flGnOaRJB}5Cg0O*##f`&6yW~OypMJ204`_D+|m3g%z^81asyF zP>?jRWPu#ZqrjuUq{)b14Us4VVE3< zfh4D)D54+&lLIl3F#kZ+ff5ubr8TgEgI`KP3ap(G68_Q( zQVP;p3eq4WpgJMp&zc1ae;EZCWYw|?G77R;3bNQ#8)PZUDaawKmRFEdkk3+(M^Wu) zp{Sss0P-0qy?_`EtS}cl8Yn6%D8l4G3?w-XMI{AL<~;z?2Vx+}DJUu{D8uxD7)Wvw ziYf{!FgXwdNlrjfRY4Ud2Vx+}aVV-OsKMkw41^psWLeFb53o3LD5@){gS^O=l?7&i zattUP!-|Lnpcnw>VK#6KXeelaLTLds1~e5k6g0CGG@*G7q!SVYY~UEsQqV$Ht*xM? zpq-_ljZL*dmZFY=4zg-p1sw(5ECpQ@)s7a5dJ1|VpMla0h|$1?6a)GS`Y<^V14&Lp z(LlifCI@05$tfrrDj34#Knx@~2}L6XBbXeBfg~rOXsloilLIl3SX|74Fs2Oq$FM?B>if%p5rsEfg$3B`K)v1+zdpz@|XU${A+n%o{+ZwWWfk z0+VBhQC1e1u>qt5S>c8NbLI{s1tup3bLJJs5PE~LBZs1uf)&Um##vcl#tLIpm#i>0 zXPyC4&uGqk0z@;IGhYDdvsSQHU~=36(g$LkK+|`^*qnI>NIjD|^9vBoV9xvjq|ZhH zRH5Dg=>sudpy_*IY|eZGq@LNFxx)nF&Iu-t9E!FIwhBy+KS26Gj1Ci2cXpVVGyedY zZ>M0Vz~p!X6c8ZB3^em+fXoLafg48PykM_jufU|qyu;X>8B`lMDA+4FWGOg6y#@h_KB&VV1uHX)n12K@~6cjxaKrNIRATvP>BsmF1 zPX$kyJ`e**PC(I1!3!n_Vj#(JD0(Y+!{k5=gd8|8FyAmTXP#l?$f4+?-~$Q})2u8o z1C%Bq{(-3LFfwPpVG2Z8W z6#NwevJ?WasW!+`3{(h2Rvn}es1TH;5QL)I(Lym;AsFN{kc&Z#8>Xc=P7)Wv&ilGXjFnu5flAMBKm_is#4#Yr`lTZv-2#3jm7)WvgiV+GCFgXwdNsdD? zQXvv12Vx-PAR&9h)SP*SsiTErltPpOlj90d=>lSak^v+f9Sszt6{2BsAO@10hGL9D z3``EhK$25Xj8%w*$$=P1auSMh3UM$w5Cch0Krvn+9wrB3AjxqkCMYDp;aCRW67&XFdUHzCZZF zkOei=amVcA3<7IF5&r=q3Npa)1Vq%4Lorn$6;wNX1=$Z`f%Kx(01rycnHx$SITX_r z(m;L(s|2w?=Ao$kP-4zJp%j$N8%h=1L_mxQrHbvKCgOdN-EATY?IHr(ixoS-avi0L zonXd{QpGN~qD~QoF0i6*5d|iN4iR(a4W$Z93f&^+%sW7?NLNS)1uWPVAl3#D3pudHazUv%^8t{`OodDZCdUgPc`)k$h=r{3K&d(N1(3=t z1yH~?fI=S30_#Cmd7;#txdEJ+gY9#@S%~ z2SA!un1MCrI&vuHDdZ~Tfi?AtDCB{h2iDXJ)szd?bODrt@)hzy@$wlIgCN!ckV3FD zv}!&OZO%NQ*pWlAKmpXxTL4xGVqHL2c_G@Ic|kEK>3jyKpb4KDvXD~H35Y1j0HhRD zs89$hL&2tkSUW&0Wczm%n={`4*6(0wfP+fy@JW5#HK3QEblqq8OBLZWJr_ zffL7zV#R(?;@A$dyH7-+ADlQQfaM+(D^3J6J`^iXf-9ORqA&@pXfh}TO%O3>?kG`U zQkX1a&O8B>kBSvQKKuc81&GxF%2CMf?Ic=RSztZLDt{E4GtU5- zS*lP9DnGy~K`gKyWR){Y%$Zk!RF)}}f!a}^kO#9?fb<}%Tv1}qyaALLWsGF`>wuc|(yS zhhm*V9Vq{RRf1R`^H5YSC^Bb0Py|Xr8;TUCffL7pBE{*T#L*A3dzy&Cba3LB0hZfQ zq&O4II8mfH3$AFUh{7zeqS>GnG(*Ik`9YBalfrBfbLJNySJW%igEA!86(H6F5DPgJ z9u%1~UjV6WU{q*e1dTC(R6v*)Kul!C7mCc8KY$cBGAcBJ6gPmACYbpFUGaw^bLIw6 z+H7J}XaXsI08R;DCRiV`$qmKk%nv}R0+f^tvJ{&^LliBH3eAiPEsUUGQ=B8B&;l}L z0Vp07=0KB1Gb7lP1)!=Il%Nc<6k9=B+ZYvE85PSR>t1R2}`PPAYqNIS^;@bvYfz?``Ql)k$d6}mu*XMh!h znIKb96#pnNXP!|AN@5*_iu1s!XGWpod{F9n4syXf5rz5S)UyCAH=$5*A(*kCP;n7l z(Lxc0MPNmXK}l=@sCFwH~TR)8G>X6^tnk%MDLp*iykkm4Rj zg&vUN6Cf23CRiV`;uVGF%qKvKdl?maL5gpH6@!^zeaMPW6q+;N04eTcROkaKo&b(y zFcYi~S@DfRbLI)4`0i&^=m#l2a0`@?!Ax*XiLAIG+MM|Ss3{0i1gan>Fe*%71O?`X zXh_FrB3NJ|W0t~1kYO7@=^JK(BUqP0mf|Evg-Kvt51_gxg9RotW+_Yt=>q2pR9yyH zic=UBrhs)#h=JHO6)Z57F-u`8NEg_b5M7QIiqjYsrh!Cnm}F%^SRmV>Nx{)TaXO>I zbhtd2g)Fb3ID=7P23#J@LY7xhoXMy#6D|*CA8P&Sg}X3)26> zA}b5RngQ?XIvOa>V^o+2mj<(tq%{=hGb+r7OM_WR(h7tKuRBg2gSimkS<83fT;apZqEDwG%CK9QDH4e?F*2xU=~;xXxI)m;P=4a zocRT4fawLKWxEbkjjU%>SjVWa9#V}g5m8tVGGqoQl`VnRBI_Wv$P5cd4#f?O3L8KQ zE`VJGW`firyJ&`mIr9aOi#9SUYy_$802u~mfpsCf=z_mFbB6_}xnlPJWCzHQrBD}bg1Bf0$VFQi6}EsB900or%mk@LcF_(CbLIme7j0!! z*a}j+0%RDN1=fY^q67Zs%qw6nGRRWg26EAMMulyR3fmzrS|*~f9c0K2kRi*UF4_ih z(G8G`b}%aJ04dl2b`h8fQj6@O8y4ow8$d4F$*8asr1k{JFfa?O3)w{*{LPt9fXv;+ zsIUv9b_FPg!7NZ*BP)GjZqB>{6u~RZ!CjZ#j0(F!MJ!W?1!Pox4_IIiW0t}mkV&AJ z0qF;i>w@$sWGU`tRM-pFvjVDTA6Q@?W0t}`kRDLjq3AKlQryp|upg}F1XRxfu)qPv zEQJFgJs{sf^f+259%NKF2ogL18kYvMKpp}~Gc!0EC>~-|I0Tmlvyh}U6b~~h9EMAS zSxC|fibog~j=-hCEF@_O#iNW0N8!?77Lv4p;xR^rV{mCO3rU(o@i?Qxakw;?g^&j4 zMy3_!=FA5`#q|kBg%e<eeu3IW{n6DPCt(xDN3gE5vg*zydcIvlMQCH9=>Iz@EDamb=NArEn8XPDAk) zSnd{MmclJGIR(YrV7c3jSqit&}1;xi;xyOuI3Xjp`Bov>3<(@ERDLg@w6Ht5#mV3&WrSKF@jzjSoSne5P zmclbMIX1=TjE)S7FF?W?Sqd*06`nH+d;qnqHJEf1UowKyum+Qc8Pf!I1tx`;jAl$z z*qI!dK|}lCL8J-nSptVM6__-bRHQ(pf+J(0D=(vC1C!z_MkWV^SB$Q_po!oaoS;S; zsEB*T_=k&uf!onS@in8uYmmJw4l`tBDZXKJ{K263mQmp?NNfgYR+i#BMuj(w3hx-< zrQLf*h4&y?h>j18jvp8lKQbzO1c`xld}37iz^L#Erb9#VGo!+1kSs*U7e>by42oYF z6~2PRz&gG$Dtuv7_y*IVp!l6p;X6ncqT>gn;{yi8pNtAWL1JJXzZeyMFe?0l>5x$T z&8YAjBn#2;htcr{gW_LCg})#%u#SI>3V#?C{=swzDE?@%rawoa)%LO%7QzLSy_thObYEFUC34K3TJcX1)!V*afunzlowDv z4KF}?I-u?V+u6ya(7~k8iDKsrPIKl4n4TG6JzY!+T_CHF?OAY#(VTe(Ox+5QI)x4< zWEBlB7|oeiz*Ou2tLQ>eF$1Jx2RP||c+Ln)Um$ZpBY-a$vjh%tD|A8~3z9`y?(yL{ z$aYRhB!Ior4OO}U95Ovj3O!5;e;}z<5=!NJ88N{T?yaMF( z3osQAz$*GtR2%@Qc<>yQzGgsz1!N9r{ls%fu=GLw3X%l}3loDvH+VI|jOU=)Y)JYC zdu0Mt=>c%COk`4+$fWQE5iCC-%md(HnZRVm^yC>dSS~yR14uFE?1x(!!kUE7)5Z%yVx$un9ocRY#MF%)orl6>J z0aDQc4weI;l90&}WDaN&3mPnwVSWV}56XB<3x?OQ<=<|dSDLw@e~v+)0rRzAK0uJObXMP6lNgYIu*kF@e~@A z6F}}!oXMmx6J!r^uv`EI%LJI&3qa}=rbBdtoWZ2Y{NpL3Ir9RTiVa{DGf`Ab00qki zaJBFPRCzEtg3JL8X+DFbmKjjLf@EQ-WhyvWUOWW{3%Cq_aRgL`&th`?!KgT!Nntj; zT$;nAFpEiH4$Mw)7(x`!Wpez$s5p;FVIExZd?tmtObYX1ioqo}MDYS9#}|x>3z-xa z!WA!KQdq#Gun49YTxdfSFJ^Llz^J%{Nnr_G@lqy*#Y_rIVT!@!HAL|;CdV6$ip!Z4 zmctdVU{YAdq_6^}7+h3C6t84*yuhfqib-J=T=8lqg_TSSt6_@4r8GqG8YagRjEZZS z6xPBOuVYeJ!=$hdrWh2A%s05qnP0d-QpAd*pkQ3jq_7?-Nr1x)BC~->VFQx_G=(rg zG8aT2nq=l zA8r8o@B+k#7g`w=*Mm%3FJjL80PHT13txcE1&e`Ln#>Q{7!@~w?SIk6sJKx?VK>-w zn?PDOiI_9rfNT8$(x3nm`_RUyuo0~1LmOj@;%1QA4I<{u3&1KiiEKTMK zEsTmg!LdH0g;8;rh{9ozOBHv6wC)C_OOP_K))inDNNhn1qrxt*o&_z8EsA?UYIlON zP&24kv3C)a(d%+54G&3sh1F72wN>U(Mg}tC8)eH@#2Oz&F9$`{A0`=Sh zkN~ph4uCxO0OGj^O^k~BL8k2&F=ze&b{8nq{Q#Q_76Y*~nLji$Djopa|D%~v@t}yp z5wPbDfwUe1&HKT%c7RzRv4$2#g@a%{4Is}Q2B|#&%0eI`6%K>46^NzDyrG#<@d#Mq zj%G&1qabxhL8TN(R^bR}$_K=9ywD7e;q{BVwg22Ky{4b2_}UTAf?Fa9)Qd{0jp{@fb+>oCWVtArO4_| zv@n`8Z-8c$4`5}dm=sQdS|@O2i$O7B&inzYs^JZ&l040%a2ix=!&Pm9sA|Z8R6;ZU zgXW@6K?I?h?gJ=K)kEZ0faOo4$T#GeGp_*6>mK+Io@NA@0nc(5AYveW$XV_I$Q;Ep zObTaUsS+drcNLQ+^MQJE<_Gnl;`2eh;t5dnod6|C&@`_CC`qmWvp`}CKrBt>1&xe~ zC&3ZEqLESYl!(F^kSi5WgS4IoB}tGnu+|-57D#MEBcsA8upZDRBgHcywI@Nj2Q&+< za0Zm4KrBt>1r3afXTb_rG%zZj1F1U)N=+bHg|nd4)Bw$IA3z>aJj>GAdjI>zUBV*rIqDr1kwsN+8I+wsEKTME4UCFczzR<^ zFe+XJsk;g)oj|e*S3r#m5X$gSzQB2-3OSu8;u}qE;1=x1Sv&U_W`8tMk6%d9)NSvB_@SSAf?FaZZtBQ zGe3Z4qXpn>beT!vGN_XQS2h?4N&ym042$K1txH^+EJ&#qyQ4xPzO@8p-%B8II?%t zDc%xMxC(Nh;%$(w+o044QVhzWCqN94$bmYATVVAE>RJ@kjR2Mg@<7E z3+h@FAA{6A0A&%7GarL;4cOufwTe%`if+^@J_V_H3Mzg;YMy|a44@@DAO3=4?>s2N z?usbf6H#~~qVN=!oj%kmJ_8%@qgL@b$bjb{vq5fn2C@ytSO5)_1>iur&ZKaiNdcr1 znv*7gg>Nt^+yKcSNB4qSbLI(9%?;TA|C zvZ{tUbLJONRTIF;{x*}sZID7_RWItynI}M#{ef2?8}BeF+yONwkySNhn=>ECf((&C zRNVztexS`!FGL`{NQm$~CWU)U3NJ*=nHUuAf_t%0%v`2egF+~I{Nc?fbpNargNNDmnz{D?{65tG6zu+E2IofC3Ec7n$u zR)EJM9y2LC2C0Jj32Y`r<_VL+6DEa+pyXxF4C_RL^*m)#cnWe8R1eq(5IxVB6rM3D z+=uA_j~_r}o--*t2ZaDs52O=~jHhr0@o697r8%_Fc|o&iny1E~3HoVL6lHTaan@ zL8iTB66h&Ze8&VD^8d1&N%1{g<~>;E1ISbjCI-ciaEXs#iBDiHf0i>Teum3@2FrY5 zQeaYe$7IGdVFifwfys<%$_l8NddC zJpf14PbP(*Af?FaHh|PUfW_2=sUQ#hVp8}8N-c18FCbAj0Y09%3>2ZiAfnJpXu?z` zbLI=nK%wQEx`#WE&y<{uz4G?;!YV^aJBGVM9Y zm_OjK{|kwgWlW0y;4=TfGXFuQf+Dg3w0{z;rGXg~_l?Y;xNlj`q}T+PX#&eMGb=DD z{ADs@ngL2V3jaazv>fWP8Q?V6!mQB3tkB2|iO6PVGo~dl1sz}ot;`CoAT`JlIRlg! zJ7DTofYr4zE3|=>!UL2^leq(=ZUs!;4zRj*W`%Z;Qe<^2KjBL;bP(itN`3AaxsH>JEU_O=DJ= z22zTwZUac&0hqc4;0T(|tS}v<6j|K?kh%r17`gyfH-lMW2D8FrNbG?!+!F}%0!-P1 zC7_6$ffA7yKoR)>JhuE}2{XtGqECne=R<{GB?gUKT0dNE@V^&xOQi`nZ z1W4ThSPU%y7s1P!6_ztA{Dj0FC?c6OnIC|v!Ua>9AZ-|kx)q=t4r))lhPGiK!Yi2- zRx&HR76G*(RxpE_zztKGKpb!r0HS6UC{2O1zJWGkAi}Ge6;?AVya8)n1=hL%q7~fY zfT&pm@&!oiTWBi=BD|JaVJ)-5Td>wOV66urTEWej7vO2}b<7IuK+2#205%jNvz}RD zJ+s0ZSki<{mVotaU{=@waurk$*bfjr8<`b0GApct=>a!mATpbn6*hqa0jdYwjDg5( zW>(nDtgr&62i%N-$ZTO&*a8Z7s2*_pV*x18UpOnwVNzHJ*22V~FrP_bJ&e7GNnrzw zy_88|BaFR*NnsO=y_!j3GmO2CNns0&4YuHgvpLfZF2@E&#jVT=TR|xuJdL)E8PYy{ z0iHqG&aAMV8GY6XEVF}IVFxq%6cboxC$qv%X7u?au*@!IgE)kcX=PP!ak4|vQ~VL!9NL2y7qTSm+?xXhU!z;ylq>paA) za0p}@vQ;;3gJxD?>N;M727>pa81qd9ZOYp5G$fK?nqQSk$$Vg@)>Uw8!`y8xL3 zT4L}TGRb%lT26vwVUvuY*k-!$iqV{D2AAUmM#aO-3WwnyIs(=30vtp~nH7$LVgl~& zJrL_(fP?4=C`{oV0DJTpv*Qd##pBEh$KfWPU{*NBtZ;%EUcw!LFgsv67l3u1WL7u{ zvJGw(lP2>EP!KJEsoMZjr*I770%%dx0SbT(Fck;DDo&!PSO8LS;1y`r{>Mvj5P{4A zjg!BE1knkok3q7qAUXmnG?;$81kJ-bE?`tV#jJ1&?xE8#4d5U;!>n)yl)&Nc-UYG# z2RMjMGn+9Tc?pfd4KG2d=q$723P#0q%nIk=CZ1OGb0%8!#0wz$z}Fs5k*q@dC6a$#DTB zh(P9mmczb;1krh@k3q7qAUX{Wq6Ls3+Q6uIky+s)+(Vb38alx9_?MX#E`!PqxVv{i ztnUEN<6mMnV|oKyj&cLE97XX8v*Qj%#jDH;SK%gJV^+ArtZ)qyE+C&>f-rBubbbKq zyw0p}9b_BaDp11}G@Jhcrmg`T09PO`02#!j$$SH};H3c;L=(U&uA`{<08%jl97HEx zfKw639MBd!Xb@e4`WPe&3!+QlAUg2^l!_pQ=!)Z@QGpxG3OATR%deQh2c>|k9*E3M zW`&!~pk-DN8F1ADk-5dJaElqVoC+cXu6iIcx0w}gGlP~*L1e&H4@Bk;v%(!_(DEpV z47lon$lPUCxXTP$1_hA;S3MA!d&~;=m_f^(ATpq`f*HKr$sOW@7hoUUXI8imjtz(^ zun!Q35SfR}3J<}F9HIy81BlEcW`#%03a4Ruz&?P;JZ4sS3@$q$ zdcZz_$UI?Ic*3l31f~b<1BlF1W`(ENisTpWkhcGXm!LR!#;ouR21=FBHR z`&%3zOaLb(kSXxt%?}VUkVfR;&4!7fvf~A_!V73Z1L;L+`91)jjRV>rqsiPbkx}s- zXiV)LXjl-m`vpA2c>=UQMgb&t0L0Q{J}`+<@jZAD?!+WU#SbD1FF-C;{0P$e5i~Xk z*Lnk_K>;LoVG^Ul2e6(ClNehRKY`S~2aR5WtXB908qfr>G?@=fWK{eNR(N6}qv98k zx-Xz1K9H=!XV4hmL}(~Y0DJBwv%*WL=Rkpg;<*nX&rJa7)MTD8kx}t0$h5DZNes9P zSAbmz76Y*~nHNlARQv|Ef5jw5#qS~tFTtMs0n+*dG|LFrx&x#^0VK9z5~IR*u$~Pd z&;10c{RSG(1X-={6EwsLVreozn8>L33#{6pZ*_!nfzUyv1G=llU#3ukSBh1CXdSiNFa zc*U#$QVbmjT>ut-&8+YmB!iq@H%tUARf1`sFbR~7-Y_e?0VzdRw*aJW!X#*v`~a(a z%dGGgq!d}*gh`-w3rt-DIG?;@R(JRoqZ|M$d(W)!9#kg5mE8r!h&l5C zsHzKKRUeoYK7jH)T-6hZstZt6Cwf6mrS}j)XbFA*l&5;3ZodIm@Bu}^g-mni8=&R4 zjvso#Q35grp6MF;z+xbc$eC_JA1JUsGAn$9rAv^>aCb3jGJoi0G-sXw+5@Kvq7?su z;_x3RU4k+=IMdw#ZF*AxiCqA(G?_2-Gb;WE$NG(aM#TnEg^wVYDmIELFex;OnlsOU zYkdLI02X`DHK3hF;S=x1zEYyzqM56VIys}-6=&6#h2Senci`WO|P!3uBmF)Frz z)U}A3Grs`IDm06lGe78qhSCDC=RPqje1duo6bLApuAvW)1zzTo#F)DV0)OCxRGk1VZ>Jl|)ZUC_y zC-j43^F1h{n?)5`L>0P36}m;C3solcGb;9g4Vlr;sMrfKq!(lbNUK5*$XYn-04%Hy zfWzuDv%+U)1(0HBrrQ7({=%&A1tf!XLhir<(OzJZh?t6R_y>I%SWl?~v0@|{`XJ4h+Ax(-k|xdEC{K7f_|U{?46YCOP| z-3G;oIr9goss`{(#ZP91pP&jFuIdp)RYMk}KD^Nd%5*;cuXSxXxF_1>&Ot+vL6j;BQ6@J0eB}f47E+$RphHg;01nqy- zWM0tCsMrUJ!#+^D1Z8k=rhCx?T1x^FdjMi-GC$~HRO|=G`imY$#R;Mczd$ZkoCwl7 z5tJ_BT7Q5vD1gL1^e`$+0PFeC!`PxY38c0kl!ZW6D@+1qD-cVQ`9U|M;$*PG7u}4C zQ$XsbfRYqQR$($INp(X*X#>bFiocl^enUM63Ivo)Hv#0i4IrJG%p1BH6{mtsn<{F~ zd;spk6JQsD#Xu}g<^w&9iqpXMpXgy!oGz;H8|=9mAgwb*&6#(=wcY?}PymTt=wVct z4%Tx4J7jEb|s3Ojlj6=#Fg%?6cHAX$Z3qUOvKKrF`v zJ>VGr-^G}vFj-V#im1XYQH9yCOt+wiQE?8~kQF_QigQ7R%mrBicGw({wQ$x2SXf;E zht(fug+I&+AjQy3cK|H>ms#O2NCr7wTmS{#0hsm;J)m^-k6Ga#NGYvB$4J--`EDHZY;R~AM0=M{PfGU9p(CoAToShn3 z6dG9+ZXlH1gfJICv(pB!swNhNCKiSJ5GhcmdH`W=fU0@{TDYdr$b#&s1)w|yTe0>7 zte^=+!GC|$y}c7RzRv4$>2g#}@K-4ale0$HuF7?h+sp)q^_?70>eg%%b_VFn5W6wfUHdF}wj+yfnqic3MJEfqCq zz5sR?XrliH*j%s}h^5JVp_5T@8QA_Cos5dhMHO1Wo?8LZx)QRyd=RQE@d$-D*%N1(H=*C2G#R z0K{_K&_M<=7=T96@YK~{hrwgzM^ob{js z8deX$Vb#i_(8{6!QVh*>7r?@8EDCKP8RYc%02Fi=VA>CKg3?hti$Xg{DYCi?Aaw^| zQL+M5TPSw0D0G07BC9*l3EG|lt5qg|^GPR*LMKQmvbq&rpq3Xjqa1hv>eF?xD0HzX zyo2N+P<8^<6`AJD2QnZd)eu$PEDGO2N)*?LLTB5-ntNCjdRP?JiGl{FyIDXjtqqwV zHn^V((b)^i`=HV0^`g+(cCgMq7KJ_*h4o;ayzNeiz-8uuW#)oR1y2RRCFX%8=7Y8DSbc-2;%i4={BP zz!9{JMPV68DYCi`AaxI5F*IQYC?c1$C@cr161ci)kSLn~+sQIv9VjA~Lqr)M%lRkF zU@~W(unrWFE7pM{5~K<_B6omvDXw5qSOJYlkUEsodBr*=bLJf&Gc=fXtYcDK2@3n= zAk$WY!+sScR@N~ou7=C32Ft7gnF@-?wQz~GV2O2LEl1WdDXxdhtOv_%07c{~7Bi+B zAPW`NfZ}N#G$L<+ow|`lVIzyeI%q_0U@>EQ0#k4TtY8z1!X}U!>x#0O?ZP z&Z4j#8j&D%C=t0~Et5I(0gxFQOb6C7DeeG;{d$mTJHTPT6A~+HnG|=yWp;sOc7sd> zMdTj1#2&E3Ua*!kYnc@H!DaS=W%h$2awm%!(*ux&3cEq^v=$nX55P`6z@l(~MPV;A zBKNbHF};B)xBymgkVWAjNDXpCJ^=aQ0!-Zpu)0Gm3Wq>S;QMrG1f&#MT>~g07r)D;S#685@*0#uB>5FJPVgO3zj(t zipUczW=tO@Xv-f;L_tT5qr@++b1I1lD>TtaSlIE4ZZrQF9aI3y{{$ z(AEn?_!f)8Ef$5%V68X7S`R?9f}1ZZz)ghPEDE0XJVDGWS^&?t=mWst4SBfyg{yQFy?ja22Kp z+5#%^O$cnD*IEm+}Z&UAwl(g<8}0@T8L#G>$s1${OMEc2K};V}#PY!F!H z35&uL7WCO5u*_2yg{Lg&vq4~)XDkZOSkPyKz%tKS6rQu7&jx{IUa%;PP zA)DW?+=g}?CV=NdU$Q8?1nEK!)fFD*%oD)#p-fOcZ=re)yan|aUa=^=Vgc=UhfMQ; z0}8bF@c>NO4Y0D;EDEndrXw3Y;WlV?6Q=G3NS(qfaEQaE;}5)LG-rMRQ}F|=;x&qj z8z2=wz{ewOcnj`Ofy_~0as(+BK-%vPk_AuhLCt2`0Ma>w6Vi@d0QUbI7KJyUkcK<* zImE67VE==*xc_+r_56!BAkV*LQFzOOWmo$Pn6d_tlNH~wD7*t14L6rblX(Hi^9?Ys zO#rD=cnh%(TG+pM1L`HgR4f3ic!#2*0px`RV9(!p1NJ<~9MEy9Zy}SvuwCsSS+M8f zyV`HO0ncoLv(yH#=ijp^yay#sxFerJ?AieKJZK~P5}2J&aetb=-f0?6|_U@A_4ReVHIu>z#x#2e7!fCh-? zLFRx?)O`c-JZ$eeNEYUK$lmn^B+nlJd;SxP!Y5E(hCA{x#I6Hi&x5wBpMkCA*a2G0 zq4=3a;WG=C9qKz^$}WJFePL1f0x}wIE|Vtn0g&e}z|=hesZ;n2u@36_9j`$fI$$b3 zfK_}!QE>sJ;sd0xehrR!kU5}(DWQu;V0F|AkY-TT$;6-l*`dDTH8|$MdS9Fbm1196 z6uz>cFAM_9d}C4g#)7^u2rToRMd3RO`obWv%nufYA1vq#gTOLBSrmSO_3$}$pp3rjm6vzjESQP#s#RjCR0?YhmQTWS(zBwE$^N&U0A5!v# zR8?S^|11jsSYzd>X-vk(1N01LAp6}#~e^TS}+Hklt8Ay2OT#+#6TL62OST93{q@mRcK{}IuIm) zZ0~|Opv~YQb2XU{%wbgA0vf~G0veYC9WDqSbnF1LKw=FbmL_w;8CxRd5ntN zL={>=E>+wP(z+cqE(cNu);a^s0*OtS$EdIktY^YJ#umjLAhlaTLx`Zm4i$EQh8009 zP3DHVjEXzK3OnX9D((WQ+XWg@1Ia4v1P!Upg@)1vkY5zrSQXl!o&yB}N+Ws$$a5DU zp1UxIQE@lOwB4Zj1+cq7gN`r2=7PmQEKTMIa~T!)fbD-Vmr-%As6rdqbNfJA_km^s z;aY!yG$???KFnoQ*bCP4VJ>5f;(n0YJ)j{(u!{YlVMP#2lX<~hM#TeQg)8PVDjo!> zI|v%31<5KL0L`y}SdItgf@63-C{lNdD(n(fI3TKU5H{#|U@oKLA+RAQ<}xZC1{rb~ zWChq^hd|cCSs&&=!|DS#tlC)>+F2DqilKv!55U45tO^|<8RT^F0Tgr(VA?Ot1=XXS ztO}hVrO4_YfYe=pMahnNAaz}=3SA(j$m%Z41?>Z$2X#&ZIG=R0Ds+RCBCFdm541ZE zno$mbmG!VH^sp-YL}a>O5at1>staIMy{rnopnMNEtPvD%=FAtMsyb$Z@>CB*5L$vC z0OhHfP&ds0E9ga0a3S5Cc?S59&3VpD22@-(2 z3skYr1nmO{nXAcsVJ4&E5l|c+0j0~?ph-1Qx|{)Kfy5?&SenceW-}@t1;_e~*^G+E zL>2l#E>%1Z(s~?}EZU+ zfLS21hS`h?XTf?JK%P4fQhNrJg+N9soCjqq5KEJJ!z@O{3t)viW-%&W1gX0SDy2ZO z3Ku~0DNlFl$bLsuRV@tO}DsN|Dt)0GW3JR;z3P=aVU{3R6Hzk=31;4Vrm^W|R+LWm8!d zrm`x0hvYO+cKHEeet@cK01wPhV^x^Os_+jY1yc1N!feQZR5vrGfim4xP-KEe(81k~ z51>3X4Vs)*fE7$bQP7ZK&b$JA2JnGt;3xr^0?%|8AYvem$eHc|$RNe(tP0a%=@KM> z?8yVuK+QFfxth!mrZFmB0mb1JP`U)25)8>XU=~Ph0f?o^ykG{S;#F|0ub9E8cuiDc zI>@Dp*FjpZgVH5P8CdHMFbgEMVFshZHL#uyGZTZFO6i8O#CMZcwhlbJzkY5yMuqw=edJYr_D4Fg8$a5bcp8GJ3 zQSmm&wA-Ni6_gRdF6;oi5G)2_X)-s=U{t&Vw!dQrqvBmrg&APa-2-X82bu*0DFbVr z0cL^3Cd^<|xC_=Z0pz*+AhmZuSqSXt`=D$EVreoTn9iv90IcxDbVkL8AaxHxr4&e3 z;Q^?90b)5mm=2EN{h&y_DXMTwRN;ZB!b4c5doZ0*@e$aN7tDln0W>>p0IQnMsxY5b;SWR#r0Oq(xdEzb#bi*Xn+J+ac&1wb%2Sh} zZrTA>Fds$1h75D&9iZiUju$}3c{4eJOo3;*2M{rkM&wNQ0c4Qk0#=0uuyhF$K=$N? z$)FMqWUeOjhslhJPe5__1e7j8X%(Efc7P56R{)7^0I@WgH%w(zdGOl4Gf2G(<6Dr1Y{3y|8UpezJBd0gQIC|iM8n#>!f zFe<(TE8H=KQSlW>-78R%0?8`81SP2{&`@fa0*c{~N*rzUg5 z6h_6@Ak$uh>Q}huW`JD?76Y*~nI}wTRD1)rf5ucs#kZmg3&Eay2h#cu)Cz`cT>;Xd z01{g;l~Lg>SkD5G=iYq#(qz6cg;DVXSmBK+jEWyY>OO)>DUhtf z2T=P0#B%&F1)S;5gCg~%sKP5zg%6?%A7Pp9!xTovPhdlSOkq^~3^L?1$O^D?K7p)- zvlhU@Y5_Q`7O^TUVpRYshGx16VBy8A3X4H9$mwFi6ws&%OnbvrP*5*nRagR2imYw| zNL|BJXq3DFt6R#duoR>eSzW_a&=3?%-2`wxS;nfc45SoU-3ySq3DAsk;2Ee-x13dB zIjA9utgIp3ocTZ+bWR(rY6Ym;1dY&sfsPA9G_Pb;SjnpJ1w2B#f)zZcoer8`2KQ4T zN>+jLK1kV4bVLIv;>_f_udfC2K$)0O|Y&9TkQMuVqzO%c}4V ztaA-m=Y$N9o#3&872y8(I#z{sAXQL5fz5=-tY=kN&#JHnl;}W(17uJbtY-tO!Um9= zpnAYQfauxCs<4q&VHHddWKbBaXA`T!CQt}K^+0;sV42OV3Y%FKR>1UtN3bBKZDCc| z0t#}d9&nrBK$fk$f{O&nlpcx1)Y~Tu?;lwvK3|l*q9Hq zK$9lhKoc(ywt**JK&p@@UOs?yDQ;s`*apkgAOU1c9&7{c90!@9!SrDplj3&J)s^=_ zrfp{x=qps*!3vtw{<4ipaVK16Cs<||$W+k8%Wk;DZm`52u$DjDm=yQIW%hz)_OU83 zDePc1W16rXv~zqHs~OXj?NAR+*bWMZ{j3W6SrzuMLguvhv6?Z>fhlMJD>%TaZ~&wR zGAf?EDZ2+lT08_UCtnLu2!Xc1SWOWNb>NddCJpf10 zVOE91Af?FaHh|PUfW^>+*&q)bVO2N+N+oc0n;}s)VK&sC7q)^T@(4r}RGl$_Iy<19 z<6A)y`C=Smq?iR8T~of=iqNOPmI4Y1zi4cm^(W1}t+H6p_bS&6s9@QjWq& zP&{pedT<6Pi7B3ARXE40a2gtsXIagdmcSHrfEAo)RX7h)gB+1FK#8#frfvmT-33;K z3m~QN00nKp0jXO7Q?~=G?jozgMUYZtbt^#XcEHp%fFtM};7AGUxa5~K<_A{)RFd4*Ns z3N#`?>QEx`!xm6#hD2n;Rwl)(ps;@rGVLlj?5{y$Wh;~7b-2uRu*?mRsi26w375DD zmbeAh(zBIG@ituMHdy8kC?c=1nlUW^S*UOW6i-{B5xD^D)Vr(-cUcu~K_l`Gs~OW8 zn1Tsl1@~AL?t#=GN8|!fVw?a|w*jo~KC8lgkWzSnf)YMR-3FMt17LLzSQQ?Clp?F! z08)1VrfvZ^f*!IeJOn94R(AlTZUHQYE`ZfNVpVtqsvqF$)U1QCTs zUMzD zy<=5)2T}?TP$o_086b5#VCqhQ)xBp`cn?yFtZoNL-3gew1K8q!d}*36Q!2 zuozkZE`mR@DtrW$!pQ0#fU3X+vtV=DV0E8BIULlE_zrEmK(v2mRrt)R@EzQa_ylf8 zG|Wbt(*|q(0!mXLtv{fR7l_uctO{RQ6@GxVegSJ;0MQC=X+YF`1Nj1^^(VCT0ulbs zs_>mv;U`$@H?YHwFII(L zAXh>4fSWH6ncu7mzgZQ&!1REdFA$kOtO|cXfdJJ5ZoWWd{<13kWmWhD(*th4KxF>0 zD*OY5J5&$2-LU`^=r24J<}fMz0BeEl9RCSpFJe;o1!FH|QuqyHuV7O617ojdQuqsF zuVYg92V;XRc;NxsIS!dic>$iU_|K~FpA~&J2rSdUrqIBKJ{ts9VRAPwzo3hiuI_Jl8hDcb>7*1@LG0Wuod+!MDz zKLZt23SQ0ii#Z|6*oSB=3*v%0C%N8=74Tv`~aELgzX6j z$-?F|LGj2m;RAS2IHaL_1MK-uHib@57{i^=0OO$fDRe=sgBJ5A-h=wM+gJfZzhwS#=@g6*<3CT=g&-bt?^nem2+>uQXyIz1j z58B$@0&~lUcOcLAvMKbkVcEz1;T<%LIzXOM>|;~t0~rlB7qrzKb6nY`n zK|TNB9cVWKOvMVYiarz-9U#xI0GCG(-hn+2G6!@A<$FlX!}f85WMQ6%?Bjm$4&nJ9 zV9)onDfF``{0C=raLc^`V%HC_=Rupc*T8%=1MK+;Yzhz74=&- zECd;ctm=i2Ir9RjsvXNg!;K42lFEcsbLJh(p;__-SiwRR1q)I^N4sZ!E(@8F6dG>P3DFbjEcWNqgTH`BXXdt z+8|?wpgY|ZKw<|#EKTMED;X7kgU7p0tYlRDBdV|n$$L!u|@G8NbPUX;33Frg@2#{MG#Aq`M?TB#s6T1Csr^jHi#)ODKvi*oKvi3e8|W8$h0G z1*vTkGiQDPvRa{4%$)fJh@}YEfxBx7?lucnNNCr8*Zdd`@&j`~#VI?RXEn`zy22zTwZUIQ$1d#v19UZW` zvg;k(@4_7r0qUr)v)rlpbOt%su2ra=6fb!H5XmYv%R*mVyFnHJid}Sh@t640ji3hxQWCST5+AMos1kOBofr zKylawN|&I^7r~kC2I!VX1(4VU5KEK!!ZJq1Zg8yMSjMQ>Bc`w#K}l*UG?W&AJ-3EUVGY!Cpg=&$bPY>EDF>uelX<~XM#YIB(g{h!y1!8G3e^|<>I1Q}u$5KYc=^%B}#mt#Iz$Q%-GiPo9u^cBX1IOlj zP(=5ODNGPkm?ow$9hT`PEMruh0XAgDGDgLjAVX$?tN>|Mm;tgD&N=`Ks{`P$TFa)e zmQ4Yq7@FxefQ8qwDXas@Ag7B1prG3T)4pICC>^b5Q&E&?xBu)fS2y z*c3K^lp?EJune?A8&<1q0Oym9YziAeN|DudfXc}Y(2Vi{tZWmT!X{AT0j_K+C`Qbg zKR{JAfXDbZvngx_RnTx%b0Df3(je8%jfJ30w+SK$&2%3?d1@il?JvLzHlrwLNHb@C z0lrJMVG%e=K&HSm-2{jjNF#ElTd)WeSXw!qRQNC56G(5|~hpmYhkgjJJy!6HV* zS)e$a1xlBo3=Yn8FF<#&DuBcufLNN$4;C{j&IZT&i^YtJbHo(3fLy9L7o>GAC|$y} z{s3uE0EvBA%&0I2tmngG#umkSAhokWSqNmc!aPv602oDWv`ViBX_0+6}| zpd;Lo0d!?8SkDEJ z=az!hE&^pCu!^OiYz1OzGB+${R9psD*s+*VaXCoca!@G+l2uqHX3jhT#ByA)7#zd@ z7cyok%okHwAf~WPOkp`J(=AxcsJH@b$cn{`iYq~etOQvBaTv&2IO_r|tS*4VY8#uv zHZ}#2VrZs202bcPrm!6(gPbldfP(G-O#6n#pmel@O<@N}DYCi)AaxrSL!)E{s7zPf z$)>Oqq!d}*hQ**h5v*2u0M1Rj*c5hwlp?E}0jdNZK(o^VaCX|wrm!2-%7-hP42ltR z<^|B~v;nMY51YasP)i!FY8FJ*2B@kRpe1DryCH(mOt%1(r(kQzet;G1K~b`NIN6#ns?g|FM8kagCV5UXV)_*MhXJ1*J>4 z)($WWB-XHyQDF^OPs2jS7R7ZSwW~o{2xPUwI#9L(u{4=K%x6?w4_5eNKBM9Wkh%?^ zBn7fsVLd2GEr7=G0gzu5_pvGLgL)1W2q>9u0myR)Am$#JT&WZFhh{R(y$Xx-Kg zu(@C{5KEK!!U9IcOM*am7}fLM+j7Jy^8 z9~7zU#S}J(DQpu{*bd8d8x}As?f@IIV*#V$PLLrxK~{hrwgY4>ob_NnG^`$g!)ia9 z!hSXdkYZ@2y8sqGz@~5jB!iqT9)N=G0!;gX1)y|vkWJwrNGY zVpBK-Qi`nZzyi;s6* zIW~oJYzoI=dLYBWV0+H9DVzs|08|g8rwx|5z@~74P2ng^4`c)jEOU`f;UXx=p?W~0 ze9Q+@%$Z+!L)r`<=7J_cFR>|H0x3jR^}^en`NLf3j6}yi(3Hz1m<3>CKFkG8m+S-e zL>BA=Pq~0pAy2t%0O?Y^%%*S|mZ?Dk$d)YF2ilm4YWPvnensTxBz3 zx&X3J;X0cc)0KTt4_*MdOz{qz!W}k+n{1HT?AvT+Om|=k4uBQhWmC8dQiD9@aslLr z12Aq2H2^u z*%V&0DZGG2m&8z4WNfT?={R`-@o;VnohJU~G^v_a}# zz|{Q!t9!?$@D8LDS=|eex*srg4d4iR&!+Gmq!d}*50JVBSPX3dtNXyF@Bvgrz}20D zMA-(IvKf0o5%~ck3XRAOpopBY2NaPT_JAW2qzXAA4}f$jeq>Yl2#rXPI+Tdqum`k5 z8)SwC(}6uqil0DXzaC`TCvez*hQ!JqCdDssnJ-|OuOL%F5%~=+@eM5T9jxWd9wx;f zaG4)qnV+DD{LE&?^Z;a`!dFl{?SV$*1F%znu_^pwQ}_;z$e(OxOmAQcE`SyMW>feL zQiB|k4?upn08{q?tnLq+!XJ=Qcz}X-XoJ*!fT?Q$N912Ng})%B$m%|T)HT2&asfDk z{;?_i11UvT*8qyh1+W;p09N;(P2oSNet@ex1BtQ=Fl7sNgCg=jL=+m47eEoYU^gft zckBj7BuEuS>&>hxI>}E_aKo%;r zu$wWxfn9(20_@aIc7;xMg*J9b(b~ao#`FcI;09Ph7rR0iNDXpCz5w~*229-#u)1z` zg>H~icz}W?jzH>uz|?hsBfN)Qp$DWCS=|qix(--`9{@*CFS|l7NGY;r3^2-dm)q7~fIfT)=a@&%~%vLD)dfe24w zSD3=Cupg{-GFa;Yh*og(Wd*p2FqK_lDo7bL0KkSqWTvqzOk-D=%np?S&t^kprn4(d z2e}F=18%-RWM;4{%wSiT2-5>@zCdJVvMbC41p-tLxcLH+nZ>R!i(R1~rU%@7fym5e zSC|b7cc>n4yJG<;&{ueac4$upYheQK(4Gcke`8db4rBjfRG0x{|6^2`31c@gDa?Yg z+n5w)!`NU8R(OMUXfq*QvCa-Ue`W?}mICyObtE~^#p_ItGuW}o%@73X1F3-O1I@&# zW+}X8%u<{K%0VCnZyB=`=dvrzVON;T4omxvD^#---ZN$?&V#A?$e5)#pIu=dyTW`_ zRi7EN6c@l$ePzs2T*$7lfL&oBs;cjdS&EBbs(vzNDK2JLSj4Wd7**A8#w^7pFjapU zvlN%ID=cAGSchpRVFVrIl%=?eU11eSA##MTP&H@%@dPv(^I-xLMA>R~h1DRH z$jW{^0nH7A_U1Y^OoXai!>+Ifq!d}*hY6tdS`)z+v$RZPQd|pC11j#;fs41EiA;*? z!K{XfOo|&o1>0J7Go}e34GQbn&6uWuSdJ55R%~Qf*vPK19$K(%U^io$16J??=A}*S z3Y$P`V37;*_=Jf}=FBg^ewqQg8yXZ^o7ojMgTfo`)@9&S$vopJ$m<7SUf;s5umz+N zt_-xA2XqNJ?HOkh&n22um^`gX8~?@VA)+yQ1? zn82jC6Xf-6>}E_4KpGUbvzswJ0kIq(z^vHCuCR+;VF%RfJ3)m$SV0HOOS{<>c7xO) zd;I~(4IN-V?SQG+Iglx*Q{T?Fy^4zRKbF#GnhE9?cSgezmxWZnVt`UJ4G3t;N@ zu`BEYDMeN{0c7n0kU9;fB@>tw_k+}cynX=e;WZPO6c2(~3nnlr9s+rNKf4*z29O4Y z1MFr@TR<$w4KOPXvnw2CS2zgu`XP2RrafQ+1u#9nzUEv%kZy>w%1t=4* z0A~!aI#6MA9+Zkeb=v_kPyq_k4l1cGuq#|(S2zH!+s=dQwhqX(=}eAbt)MdRA}AI> zS`WgterC*4yu_|>iCy6!SnEZw))gpPK}GLnkS{=555cv9%Iz!c3Rl<_4uQ2^25UV5 z)A~XMQnX)XSGWpN1@o69NCIT!HFkw-> zg&XV&7g2S9Jb#m2;U>ucC^|rab&Fl$7Q4cER2`t=_yTToIg}d-7!EuEeq}sa&Q+1I!OYuIt!aa6{`>3iwq4of#>Kt>H;zM?Y z2kZ(DQB{G0@DWVaDdsH2$LtD^*cBe5sse@Q6PT*w%vp+0*%h9!D?CM21q$3}Fja?{ zvlO4RD?DRYc#f(H6w)tXstzz`DZXS^c)_ml60QnV`p*zDXI`NOs`eg2tG!q33a>y4 zL1718Yr~|;yh6>K`Nu<0**~KdS_-^oS9lFliLC6$Lq>Dv8LgmFUnNWHk7eHn`0NJL={GgRd@i1s)^Dt;ov>mjQ06bdT24aE4E`V5?%op02 z6pw(%LT|J&DIOJ5cn5Nx;xUlcW1vA%xYidS4GJK!2W?CWN5Og?v@x|P9tWvC0va|2 zt2hqQ1!8G3PiSLOJONfXqm4=NBuL#!&}c14R^bH5VIY>{hBk0_>paMhC&Uy^iV1+O z($r+$(8i>A3aouc8P96~2L#BCG3YW-@1<0amvHs!rh>#1?2jcm_zt z3b2X;AQeoGV1=-hcmX5^3e4~93g1B~5v&L;B_05oaRFq8Ci8`6CdD(LxH|(%BA|c< zPl}vq0i{Hc*Z~krlledklj2!$Y@cXhQamT7@EznV#q%Jo=Rp$~aIH5$8Wccc7h0GU z&Vlt@XkltmyZ};r7Bs~HR&fEO3&hf7ZfIdrya-m<(ZZy738d~4D4l|26)u7t24Xob zXaT3h{UASH6jQhaONk3wm=rIAwXbMlQoI7veg!nm3DTr+88r0?XMF(q+VKO(1W+jb zU|0CTt^iUDN{J6(!avy+eu89>qviuB&>n!bZveRir2QAW!Y`0gWOWZf>NbEZbo>ER z_nTeeH%KY6x(zL$%`RYd9k3Mkhh5(q!Jy#H4r)9NRmZm=v#zDKv0^+9WqXT5o^~AdoV! z))QbBNbEoplfredo&!xxEs8fmYOjHcD3H|(H$l2UEKTMQjZBKSzzTmfGAZ5$sk;qI zr(lzAfgA>6IZkK-r^NLjKi(2kxGe@P6DKq=Dc%8VpV7pmco(GoE@+htNRz@H(99g1 z^#Ej{;{%WhpipY$P-x^(04WBg#0xOtCJu!rkPLFvJOBmS1+ex7Aa{VYH*+X7gOnnx zy8u$R0A!)#3z)hV4uuwwQe<@tnm}b8SltR(3Tx$1Xay-nR`&v=ZUs1r-GHfU<4|bh zP`HCg822E|8(?KG{y~e*b`FJhkV<6ZZh%tai+`Z9^9M{_2ZurjNGYONkpmVxU0k~L&=x%r>#rxpcUeUm$_&`jd6XYz#hajyF zK?M*<8CdHMFbgEMp@B)^0a(w52BsFpMtu4g;|q8$g+z$#Fi&kB`L^p1@LKLj#lIQ?T}q1}4R4AnngU)4O1Y zJOxdF!&w)=23-J|01Blp4uvib1(0G;N<07)?&eVF2FV~t%>_`P9RO>e0CERNdk=>~ z4@fDpx&t6}6F?R^-hip=6#$s28Ay;0kap4ps+huukAm_yba;_#E7c0ci)db|-QuOyp2_4(`NE z-~hG#Iv#Rxc36PP~ITWUIC`0F5ysE%%QLZ zRTU^am%>ynXUbAs#-Xs3Ltz=JDp24qhpAcx8W`kISk9ra0#y|#q*uaJt!2tmT*aZV zl0#t?TotJ6bOY3NQU`UN?mFP8jwn4Wk2qL z3fn&*bsc}9>eg~7tOY4WQTGSbp#94TnlPF2mr-#Y2Z+`2mr-#&nAP)_QE>xEA81fz zBZmT$!a5E!rWqg&3hOz{nC5_3jx%6ZY~oPZ#G$Z(12Pq|k;9B>30T1kn3pzlC~O9) zfkiIJ<1_w(P7nb5X~uo1Teom1YypKg+^x&ODTsN-eUO(o;KPws9zI11UvTcLL<~8z6NWOi%tWDsBgR_{JYb#T{VQoj;6h)b5W=vne3OZn3+QXr+2c!ns>n}iV z=m7g^2Ta{w4u!p-WD9reVu;swfR)XF*|(2FVIN2(Tp6fQ2=e+2u(c~->h^Oe><1}D zRyPA=?Fx`O4W=!B7!?nIJ-p%%qvAm@Yt0`<#X}%{Ag><=dHn!~8Pg7s28DwhW=wlP zEXN%%D~@m|9N|zn1oir14l|}BUHzsi;S`4%QxAyc*a7qUSq_D>915qQ zUO&TO#xw=2-~`M|=QtG3fz%*-y#wU+6JS5BfMtyH917<_c>~3*piI01oH4-aK!wc( zP$~jdK(D|R5J)?yq`JtVaFIjd6}SSr0Iq;K?!&4*kQz{#cL@{=Ag!2CfxU?Oo+ixXPjM2CVf8SnCOx))&xGv1=R(*FdUZ z{&ECKfQ-D(p>Ul;;R+;zK`j)J1js!%I23MxoP?qSh zQFMR;>o$kNZ4QMCs5(G}@f{9@JD>oE=>S)IpwNDyrZ5lWVvqzAgTexkBcbd?Aa_C8 zOF&M6vX_Buhq70IEQGRGf$V^?A=RFmInxaxqzSee{GdrRP`!sViDn6@67Pbm3;rwx z&?MSD4u!iM3isgEh2siKNR@aWrV2EP_JBj-K8L~sR8^o5eF#$pnnZiVq41DH;Ss7T zQ1Cv6sRB)+J>gJz%%SiERTU_#pTbmuCefa8C_Lp*c!sJ96!6bssz8%yFE|vQb11w( zRRxNLmoQbJNwilS3NJYnUcps?YK9y9=FBTBA;&TEXPGe_0qxIoY`6t22VQe1yawq4 z1u}eS(bAl`0i+CcQ7}l)6!6?`!)K_TH!wRv4tUF<@PrE*sd$H?Vg^XX4zP+3pTJ8g!A3DT zg4BaHbiM^S7A)1w1m4yM^(E7XPaxa*A%0WHBtC+)gVG}?jz4iIeB@C01knO&g1?6_SAg{#fa&?nq3{`G58M*a zI$cn(9004k09B{(5uzJp5NPZdQn~>aEWbDuet}9DxQp*YEZzVPmY<+n5A3iXpe@&+)bbmo z9TY5}O5hKN!fy_RKM*Y--~5Cye}H!?PXIX;q~|Y(!e5X*a7&mpnKyufWdhjj1yFSg zzahFo27#`C25tCW09LU9rs6M(iV2`#*#K7Y0^~j>N3c;$jv)1*VEF@bELaK=EFk}D zGQ9xp2?tj_R**vXA4n<4U!Z=-e-4Fz918#8mN~w#f)u(9oX~s+>W4IPDl~8^G;+ec z1y%)0Eln_0pnga*r$Q5_LNlr=Q2K0vsRH#wS~(S3I2Bq^Re>^O8%!0bAJWdL(8j6I zj;ab&1a!buf%+kxoC+PB3Z1B`K=IH8Qw8dWbaN_naVm7fRe{Q_8v^FcFRVblGiykw z^l&Qla3V#p;|gm?K=g7d^l~adqZ<^CAPJD)`#2T)IFWJ+SO>_v{hSK@oC?r<1JeQW z;RH^F37kkp4p;}sQxiEACUPo33m}*dkUu7IDoo-8mEDldx!@WWRCceh2Hjl!m;thy zVlt<~WRM?W(F5|}3oCQx3CW;S;9;t!a4Jjz8HcQDg|#{J0+6a7n;?aO!eo?SnviVH z{9_ZSwCLCjRWJob!GdIS=8nxE1q(n5m>j_d?O=jTHEn>1f%Wc$iX8xnf&4a=Q(-D7 zn!p-CsTRqP3pRs}jRu*k$$VflqvBi8kkDJukmOd-(XycFrw%X+B-Q|8X)-r#WmJ3z z8ARI3sQ6w?VJgU_iXT8)KY&J)K+3=aTrN8TfjkEe0W{BT z0D0~L#B&!mGb(-onf3)VtOj-$$a611rYV5MKrBt>2U{2wzk=<5v4v6bo0!5hu;;#m zw0;K-+QPN|0BKMFiGA3@sPGM}=ff7p7R4VRwO>IqWndLQK(l8cmL~IpEsTmk!3tMw zVO0DDQuhnAbp#}<@DsG@3&e6fumxOw&jLE3cp}GAr5R|RQwG#6{86#h|4B046+xQ(*>3206Wc00rFx zu=Wce*MPLoAFj-HxrGjo+Y*asZ}m4yVE#P$30Z)&YtUbLImeRTp5Y=5i{`1?76Us)-O)7eJ~y zHb9)FFb5(Ctqu-=^3(=Uo|*wuFc(F^g=BN)8DIq)Knj=~!3M!H-2sRgST8KoT>y!J z0&5{7CU=~Ph0*Ix_JYf@~ z;y-Y#&)CGM_+Lz69>}GN4dS4k=;G$gH$ck3T33Ks4dUj^3pOz-{0Hk+AeO+`~t4E1Iz-6HEd#3XannM0C}zhq_$PuoOuJtNQDk@bLJf& zmL^C*u@kIt$3{lQE|9t|adYMqAX$Y@adYMaAeQ5Wjo?hT9^}U+afN1ag-&sWE^+AY z_6r*s6}!QP+}Oyd*aI@82V@1UL0|lMq1DN(joC=FTN|Dul00%MHniJ6KL~${v!eWq8WOWZf=A8gJ z%y9!OpDf{2SOQXttnS1n&@2ZiqkMoVTgs`h6x7OqD{BG8h&l5IkgA3!(E4y0r@}H& zS0&3H&g=V^?5J70B`vA&QYeAWA1x&#*6a@__=FBU=3J!o2FgeZuQLs#R z0mNZ)1nY%mx(6UJP@pd7R9Fs9mrwz?yFmAVtOXs@3o=)e`N3L7#a>Vx_JY#odQffv zrOOpy7D#LXh^5KAU_GN^A2`-mtY=j07gtyga;f43kk$#HbO}-h&U8D#ERfiS^^6Mr zU_BewGqxyB1gY%NIr9Y&%kjZFaHiW2^5Z0Ng~{Ry zGsP8V!7|;0b&QI$!G^q8$EY|5WXK$l6=3Jg23ZSdO#mA=0c0E~A*|$7SjnjXQVhy; z4KU$VoC>QzGRWy-!a7im1J?clrfxN-!fKFGWOWT7bsxa$Zmfr-Y{fO43Tr@0k=128Gp!5jJP77e!X&tA+I!=Xu@IHb<11Lt!nHPYv(*~HT z^_&XpL2YQbVZ9Jl8$ha7tb#aAVI4#en&}pR@)YQZ5XT)b1?y21Y)CO@-T_u{0i=M* z5o{1F(>;KQf%U>N-3O2uD6BVdDr^9!OQ-^#v?b!^%oE_An*nwqSPaC{ zWS+2wQE@5Q{uyf+6_<%CYy^95IY{eradYMlxYiXQ4GJK!1#1`;mVxyw0C{c&NbOQk z76MtVumY5=KrBt>3#%CwSArGZSk0)o3Z!losFVW9Dy$SYXMO-;Ieq|nj>+*nD83en zD=ZdQSShZs3YO_UtY%bP4L0P*YDUF1AVb!GtN=S_HON{xYXR7}1t8-<31Jhb!X{1y zkYZ4#n*bBu%&D*$B!iqT7OVzscm->3SOX2}Eu0ElKuVF-O#rED09okx0;X;&r@~f{ zQe<@vYe17eV09B<`D7cX!ZwgnWOXk<>L!3P%7I7FI&3?q!gf$Y6j@nAvN`jCBn2i% zuqsf;aR;c{1PxiQ6^99fI+{B<6?SqetQ7}sblt%TYCvsB2C<;ox+dC3tZ0Wxtvr^0?tg*~7o2bmlONq}5)fK%ZB$U!JNK(0T?sc?`}VHc_n zkk1csDjWiN9z_Qzqz-c`9OhKmfvN+PJdSWG907$jOa~~m4kVc~uKY?usPb##mvcK}QvX%+O%Eu$oEnI7s1skj~?r0zHL_CpbZKnO9abDV~JOoCM39 z0+|Y$;5iMKI1QFK1J-h9HIw35xXf9w%sEa4CWRB6W=tPI7AlQSqO6K zc}|7%oC;?+A#$Sc`E1w$PW*|>KZ^-jDifh$fgz#`}}r^02BQe<@#KY>yTJk#iV!xE^`Aca}#7LC?apcC2oNw zZiBTvS;eGy2QG65EOQqWk=HrRn0|mPRJaL>ClJf=2gpK@Q}1yq+~ZWZ4UNdVoMucd z;0SsFQ*fVC;XX(Wazy?B`QZiFpbl7sKj2h&08$DMP$o_07a(;VVDo0c)IH=>cnDI8 ztgZtT;WNPM4!|Pl5vRfHr zpMn&g2kCqY4*O@2SXs%W_#7_t94zw!WGW~kU&19`f+b#owY*u$r1%;x^BOGk1{9Ic zIL(+EK%uVi0u)ammSY1fp5AgQyyaAQ1&zozoMuctUYptH9?ew_d|Zvjl*2Tp|#Af?FaCVY-o9};B~rhua9zzT>mg-;MsXhcq!0@~)h0;J*w zNClH4SRpJTUx36wp8w3L@EH`OU`1#Vd1D1=DIv%V4W<_>m=wQ&6kZ4E`~nX9uaH<- z!KC;NF7pj6^BrU=C?bErC4PVIf5iWMs{*3baE-QaiK_n+|$LS z&;@c5iUi30-CPRYTna6yIzXQ9;Zo=U`5#3GD6o3D6neQ7noxCsQbQk?LLVr=VLCto z_FxhyMO!NT=TPVX>tJF~XyjDrgt41B6}n*TR!)U(7`vTQp$Eq9tpivb5EQPJiS&IE!plwjlIg|-p3KO_cCX=9ZC=KsRfH zRlIOsM>801*66e3ta{?}w$fE+BKZGKBZN?*W& zWf_;kGEiv%ckx7s#V^3YvXsk==?!>E$PMVC5yj;o?Vw-*Z7f{DrLde!VFe^CK)zWD zVcr1i`2f?il1pJF$R4;Qpr$7%SU!N&HGsSX+9k6bVmHVjP{4r}q%?p%Jpra-C5nm< zAQcn9Do%jxVsZo<#pDQ54+@qQAjg8G5WxcSzb4a(&(PGe!WJ^GyoyU<6&Gk#6Lfad z5hMYsJXUiltmXnOWI~nzRUT`&6xMKo)-EASfXc+RTncNsK+BboB|v53IxdBET%Z+7 z$P%E+V?CF`dM?nSBxDItBHX~Guz?G-4hbp&syx8!kZeK4In?PJxfC{nV*#qj@r5m9 zN_-QS!X_?-rSLEVOMsldnM+|aI5{Kh06BdNm%tNQryL*unUy5z#2hG3mPgQdmror4G8aN1hE_TGb(Nd4S{V24eK2Q z4JLvn3QimVu|Q%6KrBt>0|yutw}1!DP8?uV+$yfH3*=J8Z6K}NK*M@)tv5g#6hLAZ z4lpWg1?#zRfU!k!J4o#o&llj1YM#UXqg(vniD((cS+X)(x1Ia4v z0FB6jSdJ55p4-i(up8t#a0sAz?gPkk6F}-UnJ4ULRNMtJZ5L>I0`9^UU>AbLKrBt> z1qT=vcZ2O;aez^AkGR5au;=!IwC)8>BEq%q0BKMFiETK*sIUjDX9LJ{`#@@UgGL}h zRx9iSjY@)8n#>ROGb-)}D}1q^QSkss-2u=bFGyBlKWKUe#Byu^9S*|ecpnt0JH!=s ziYx3FS2zG0vurrPsCW=;NXG$2#X}%N4uPxyJLe$CS~zP1*tiX_u-e0=u!lJhG2VVIN2-vbqHzbrV1qI{tvE+s~!2AEXpn z-Gl?6RtQ*K11z5$;8HjMQi`nZ2S{B5D5D&JDLcrea1c}!!IiBC#fUlc0g$Q-Fja@R z6b^xMJzUi`h^h-9RVQ{svVy`vh#<7gJ^;#7yFr=m228;r6a^O&&6#h26?_0GU~&W- z1j}>{d%$%*ST8KoO#q330_!lB!eMZ_1ZhN1m%Bj&!h67(Zo(c$#lxUDJPb;gpbQQk z?Z2@Xl<7cX7eFjc<_min6_0>p{l;EK#iQa1he0k?JO)PD1gKs>}6Cq z3fA*rFJp`1agf?0pezKkTH!b-TY*@b%op}BDxLr;a`5ka|t#1$!73Pk~H31)83KyKo2CgId0!ZBjP$>mA={#t92E=lluooPg??Lf(LR{gbxWajHg$uAu zH(@WM;zh6_GxjnnUIH0%31kIGtHMQ)wQ$w}khP8nU}1HXOW`P&0!T3^(`|qWALCLu z29klNSJ132DCjnTwJ!j<29%DDb157LDMePd0iTVsY%M58%$YxcR5ie+6Hap} zoCa0Sa8+9%sv1Dk2{(2?Gu<`-ZE4LiY60yYSi z=_WwLz|#{B0*>_;yBHO(iYuG}xm58QNb5CFx`b=}0n(rV68o@=QQ<0B z&xc)%EsEDcYOjE@5XfqU>!54}Vreoz*vY7P1FZ1HPDaI>AayrENeU#Za08U2KrF`% zP`@ai&@$Zwkmojl)N3+t*vY7P3uM|YQ2h#b;fY-!&w<52EKTMEyBHO3 zgY7@Di&628xWZYm=k9{E-UUq}!nNK2X;1)(UD(B_a0jgC0?2dsKx%J;vJhCsJy5m+ zu{4<*b}=g62P^E@#i;lIr0xNzlmf{r+y}KUKrF`vyTCF0ACwYqh%4L_SGX^(@Bo(S z7VKhFd>VRep6;T)F&NHHkW9e@d+=TbNi zl0i-v7eGOG0IYoj$TgsJbb(9Z0!S&cx&t6}8^Erf0V*Rv>Mn9ATm&gaR<~gnXni@z zVU7=Ax#<#@!X=PWWOXw@mB0f~c3J?-PM5h9E`u8OaAm7OF=EcVAPKa09H#0Dm%!Gvw#C;=M;%XAAM zVqm?nOt%3f1`33$Tnbmg=@KdccNb_)`!>*Gn{D7sw_zKj;$u)8J_e;rPzDEQx*yv? z=@KON0mRZ|{;-`<@d-HAe{5$|d@8PR735OIXCST5KswGO7_RjNNP_}M?7?T9K-z}KfVxGcqy*%UR>b=EYoe+ z&ZzhiY{-u7jEbK?hI|590e09&khO5u1CZYxAArmOC4}o-3fH+5K#D<`?gC8s2A9GO zkPLFVcmN8z3t;UBK&}C4zsaR=6QmSb-35@k17KIL0F@CSb+@<_Zh@2{t2?kAv|$9~ zFvkh7d~%yh;WkJqvbq&JKrJs&Mmg{R+NZn2rEmw-5JgtjkZ8_)AOSS@4N?W_INk+S zo1k&t&!BN$ux3z4^B$MNJuZdM;Bnr&;Bnp!iQus>N3ar5C-puk?}K!Hf$IcyY9DYZ zJm6CJ0@isStn&e~PEcR|A;<$DonPTPL1W90xD+07DSQR%d-6rOP@+(*>`^7(Tv zh36p8qv!yI)C(?!7hDQ=QFVag?IoAOOHf$Dbbz{?2NKMgU)X?3w`tJf{#RTIuRscs zRlTq=XWlRkG}`}S6GWN9E4cX}V>V0!jZkj_sb~P*%*o^kRtTH7nE(<4IpH;z!fQ}& z1}j3#%?+S?J|}Dj9{@OEGn3*Qki!2U``&N~^cE_<f16blCSj(KvOp2f2GM~UQpScv66y9=~F>L@@sPLZ4jA;vq<+uUn)Gu5LU$_)L zazUoVKXaKe?Ex!T08{XlOW`X>4SejANfTt6Ir9Rrx&ttE-?$XMfs`T#=mL;m4}jHO zfT{b=rSKi36j|K?kh%+Cbqin-^n**`2S_Qhx(gt63&1gS0jBOJm%>j_8iA{O0g18; zU}YaRLL>4gL=;+2T>wSohmD|!>;MHllOtFmEFx!s#6S`Gi%a1bC`iGI&?2&96X;MD zP-4(vnz4yV@i$0eJ4okmaM=HW#L6Zn#lLWwzhIevAX7mR`5!LvA1u+p4T}3Eo0t?E zxfPfk!G<+*gHlBkw*r&GA1*Vd9Uu!8{(<5N#B$sLvJm9dW^RRMZiNPJNJKVqn=u^$ zD_8+j(88_I0#btBC9(A zQg;Ka?f@);+PM|lK}wO;-2kaO0Er=(x(;rI4sL~~h_EUksaK~27LfU zdpLRdsD0EvM@r;}Tu6BMLiMQ9N@VIz|{^8!#}&|q4ykx8)&q_7{P zvkM&d-H=$>$fVccBBHVLBv+ z6sL15Oy^d342eBZhI;~GPM8jgrUqC6fc&rntnLO(-C}Nq#UQ1~0lx#J?gm)h3z)hk+zLxT zN|Dvw0I7QcR@VTFprzajOF>GJ)x7|zYXHa4gQ?JnT*j@ij9cLcB=$fN3ECzJ%5V>+ zf?^V^4pbE{2jy^31L7N~0Ra{URoyGN6;^O7d;>QimUDyZ&jZt#AT0>68c@Bz5|pMu zTED}!g4zkIxD{4$D|`oQT?y9u07WaPk+B-&3y{_yaIK(b%NlNlHQWk6z*<*>wKhzL z+PVVTZduE%uok2W=6^?!1jxvB+zRWs6;{I&CRhUGp7q=c>p@OJ(E)P*25yB7+zKmE zb$~p-ky~LS$p0uhK!LT1TVWHo!g5p{pyaZdTVXROz+pN-0rp@jC`H>S+~ZJK3)aEJ zpzwf0VI7S9h(lpLjQxZ|VFQf)j6-1~jQxT`VH1q~ibG*Dj18U=Utwd;bOW?Wd4(OM zO}B+xVGB3PjE@~;+GH!Y!d7mS86P{yEciBVg>Bp@Gd^~ZS@7-L3fs9+W_;`*v*0_p z6?SkdJcBREb_7`t3Y(qW3Ol(`W_;`*v*5e96?SoBoAI$j>^$EBnw)d|a04a-0F$d4A;wXn^Rz52&6!+zNZRv20j809JMbrfe^_!d{T+ z$VPv-0h+D^t9t=er?3Yc)UbK<13y5^X~8Ofz*Ou-QE>yL;s;p829OFSN3c;$jv)1* znLF@ibFdVsR+(`R7VLLisfR#0X90W?H2e=gufQ*Kl3mWqRO&5I;iI-fIPngtl|Vr#bFc`D?lnvfK@brR4_S$jbd^HsRwx; zym1^Xh44IN<9Gwi^9x{}Kfgx~ zTt!JE6XMO8f1Csr)*Yvy3a+6jSP*Z{+;Iw|U;#)0lOxz5*udfjh!|KeY+&&KNDSn+ z>)Z<0L5(}GMo3@{5MHsK7T!f&vi31=8v6#s(M z{sIjXo(5U-7c_JTVreoroMu$~2Ugf|no;pTNZo(Xuo*~J;U8$&48(H00Q1}pZiO2l z&w)b#&2t+-p1T0?+=Ww&iVYH=eXkPc%n!is0(tHQ$TWopkQj)i$^76nqhg~3sBQA% zG^1jZgu)H5=bAxUnC?M#VOex;6=O<{cneg;oi3<_#d0^#SB}#}6QLKndX{x57?g3c)1(0h%+HZ3!+y*H{R`&p;?gH4=JI+87uHqeTg*zan$m%Yf z25sdAIn1#EmQU_-E8GPsMOL@t3}_t%D5D&JDZ9t5a1T@>!Ihl>#fUlc0g$Q-Fje=t z74C!bJzUjgh^h-9RUOA6PE)uC5rh`q2S9o1I4DoefGN0-qToWjIr9v#f(;-AOpaiK zV43a!L=3DKmgz2l#6W@dfLq}KI9);o;O+t~{W=cX$_+ACllj7NM#WB09Cm`zAgBa@ z9P2YqGAedUC_DhURIvx7wFi_gLCU~dSAba{u>~g?6}rKC z7Mx^kQS1e&?UFEOo^S$`>3Sv1nP-4lnjitiKCr?WCm0p`LF)QJNeU#Z&<9FVAeQ3; zs9zKxaw|Lpc@7)`XqoN+$a4=Mo_lbdQE>vuvWx5LxF|b}(rh5Pq1G(oVx57(sx`YbA-33|{a0Jv&1DUJI{NMRY-ag0%MwuHhu z9Ai|N4c4>a7-Ng#T#(vXpe%G0WX)VqwgRyU(};|Hi;6kl;GyaIU+90F*W?gGejA0VFlaD-8D0m!rk66VYepwt9*VF%cSU@;I& zleys-qvAra{T;^`6&Fb;yaIb}F-YrT33KKjAZ1{!Gr%m6*o0$@3X8ycCV)J*1f+H$ zC<}p{s;~r=xD2Fj8K{&3$toe5m!f&`0-hgC~)5V0Npc)6P{R2$hTW*E7Af?Fa8bInkfYseN21(h9@3TG}A2r<*9?9Ot%B3;3JBH4GHGVJHQGq zfD|w}f(?RYx(5(3uwGcE`v4LHh4m+Hg-_sg2^E053$&H{AgDwGnXAeC;UJ^pN>CiG z1f@$*S_LPr9fv{r0wlHp#L{HmaF|hX6*$&+9A;EpEuruUp|+)gOU_T zR$(0|Nr7074Tm7XsQ8&%;WNl{;1EE|bPqtDYXGU&WNtXbsJH=S+6GYl3isR$unWOr zAeJWcgu{%A8^QL^ILxTHNkZW>*mIjfS~p9WGk3tXt^jFJ0EsO)%&4#ltY-npb6Y@a zH-fSd$ZCZxplk(VX)<3p#HhFxtnkJmM#XI)b=yFt6i8NKE2w<|VmW>Qd5+2PJSe`_ zNhqwBP}nM=unm^!J{)3H+zvM6$00_=9Uwz?fUE#JXFJGRIBNmexCJ2NKndXsx55{0 z1(0G;rkem0{>rWJ6(ob4E*2aD4VQqmHynlr^*3&XZy=?}>L!5HHGnL1d;wGUom=5M zNGYMSmz(G&IiakLA~OCAP<0a?uP3G4FLb=R`}1Yup6xNA6Vyv1c;q0 zpo0VrJPHjw3jaYV3p|462$BGq*vO;M$fNKNRRZLiCLV<*9)-WC5+K(%^C&d)DEvW{ z0QtOyN1=sB;Ww%TD5P3>6k2%{exXW$l1CelLK~05Pq+lAk98o9PUzrK z=->gxA5;L@j03wsTe(4IXfR#a#iZB?Qn(+au#-oiuTZgz2Q+tiWfzlTH(aJ0EYkxr z6*Rfh3zz5xOZ0)Y+}XvX*bkTK2g^+0QD9Q&;xS|T0J2b_hsTWR3y9_T0c0V_sS|k= zCh{os@j#|KC-9gt{Q)a@08=oDM`0334f5p52aq2gfYmjC?ji*lG?_rkx(3jVo)f_87QiBCDv!cckWyrI6F}+~fMe(aOx-jdg=wHP z0$0}xiLwh|WgB)vBXSx<6k1PR07c}6ouG(30aC%_2v!J-$QvLrkf)~eC`<6`%$`O0Quns*q{zrgfHSzSOiiE4^Ys48j!jUuz53J>K5}TECwk>R@VWF z@EKrr2VfDjghycsNGYA}{Pu-E<=6m=r}aDv>vK=e&Xu>Q=3@L8mQP={i8Q|&~AyGDA7ATqyY=B5!O5Eh_?8C>#JOg$F2T zD>ulmGr;DpfT=skqi_(U6j|L2ka;V>>Kb4Xbcjdc5J)Mqx)mUG4d57hFar`piidd= z4ueWzWOWNb8ScRhP&|RvfvVyopd1crKUk!5gu?gJQF&D z3|0fG_m6?n6iDk{xK>a*;W&@NaUO-eV6Df%S|6Zj1vN5GfP4Ycx(}`u)NDD)qi~W( zVINrQ39#0NSx{SFK<8#p@hF@Ese<{-5hMXJ@-&aaX&!|W@PrAL0J-N3kHQ&{lTdVk z+<%rw;Vh5BF;pEO&!6K_I0y1SiVjdQ{g;}-OZ_R0mcT;TfeY_ZsmRf znj-;)-$fpUi##YZKOh-U=v?AaxWt1p^#hUt1Bx8Bhpa<59TAgEIXCk^u$LbsmN5JlN)c9H5)H-+(5i9aq5Su5a)t z+yH4o4$>D6=FBTV%D|hrw}7rka9jYpM&Txp!c875`?eQ=mF<8jyTzk$3uH91xhp^u z*E_)KPC(Tu+ysX;Y~p$W=st!MU==rDDsG{u*a1>;1FT{KNClH4*eE7Pkb2Mz9(dn2 zSPE41A?@3q@Ef*odk4((w|Nw9gTff@$ZHV0c7Qz(+Nyo$7pSLx;uo}IbcaXb4iA>y z*(bot9>A2{>ayM3gLOk9_$A{ zp`O11^ZY{|g@>SA40q%uh+Q|po(FBaUIX^k43JGAUp?Ycc*KKcr}Yf5vJEh0k9iax zgN%lo3))8w^85y{x&u&k3XdSxK|MbM4P;Rz4Q!W)nbsQh}$qwtgmW#tV>22_4M<576V zgR=AnBm*kHp7SU?=RsL}1CjxiUoUtRUhtqSz5&UA%CDC^3NLw3R^NbRK;is~M*)Q3 z3wA(7Jb1&k6KKOVNEN6Ae$Aus8XOzY`BTRiAQ_Mk-tZ{A;X&DQ4Uz%*;4P2BTX6D4 z(F5|qJ0691JSdy4L3%(wc+aEo9-QA%^niTufk)v356ZS{kRFf^KJqAh#8yDQ0Qq3T zUFcZHCmw}QAg>}Plod|q%oAck^Vcv{pLrBMgN#E~^}@-Vc>ze(j;oN2sqhIUsZ5A9 zXWnrYlqFBV6nsWeupri)`2<+O1CRnHN3cP#0mcsyF|c0P0As^7h)s%Lcoe>X8hK!i zpo9hu7f>ucxC$D*y$0SG({PPZaX)ChYCmWU4xFbzqxvVVgT??sVh2DhP38mF85IwJ zN4QR0XH+~Wq3{LdQpH0ct%pEkaB!_RKpGT4Vi&G6DjWpsxp1AaMe#65?E%nmA;@Zl z!=NEV5KEK!z%@q2BVdImt}!Ye1*tm<8a@NbDjWd~pMhA86JVbE%A@cVNS}sTw_!`1~Tm!Xf6Tn!WCc_g2g~AP38sH85NI%?O$=7QSpR?!dI~8PJ*0<32P$aAMaYLA143qe*ZoB|CYf>@f&53VsPo(3y?ag9;& z3`pG>(1gE(OGLY`6{{)xQsl)FToKM9=?NS75p8#?V zD3AQ$QTPE;imYw{NZkaGg^oX9>VEPl`~)dQRyW}~Xx}whT>~ti{Nhpg1yYKv?gvO+ z11O^$fGPXUqwpJ4Cc%}x1jUFs^8t{m3ouoGcohDC@;zMD2Z*W*AXO(WL9&9vZ-^kY z1U~@EQrK#%A6)AR zkOl>i*numI3OB%d4uCv&3#9fsC<}qCR=5SqRv?xp^M}ifinqZEe_Uo%yaQ5q2UJRd zO}Y)5O98PQCtLx?=6g_lU6D|@Dxq*&Lg9`CbkWF!D~yVF!G_GZ!l-x;WXL^`6(Fq& zcR|*|SqDJYIv#+9)qfs^|2zsH#h^^L0VdqQtI)u!@E_z)@E9|wFg^eZx(#6M3qY;` zrK3h(g+`E4c)A9ye*mdl0J6}r15`$U)HU%cG=Y>Nt6OjdwC@@ec8(ih`J|awp&6tU zSzQOHoZJA)C?8a?juNmzuuL}rA_mqA%XAAsVj%al z@hY_Of+j4X0?76@TmYrZ3*bz*-~yxKeNY_U2c=6;1_x)l7Z*X94kY#f#L{GbaFJ2* z0XWuQTx3*yD51~>a;f4Ykk&__bP3n`1EfI#B=+GVqryY5o(~rpTNEFI)II=ZA&}Jy zk3rcA#L{GbaDh?r30UEa3yg|SLF%4@k`zc*;Rz^7fmn_kpng$o=T&G2c@7)`Xqj#T z$a5P&>NS}+Twqju1~Tm#sD6dJ@C4X}U@;I&llj0!M#bk~`%heCRD28T0;_lh%2ptjCUe6@M#a})g&h|e72kl= zy#bX{AX$aip!Nlb<+$J?IEMd&Qo<7ng{Kk$yr@d7NYI(QX2cojg3L7DCVOt_O*p%Wy7oGvbag6;rV`v#C}KI5g>Klyb9eQrO4_wTm!z%s;>iCY%LF3D_W5rdt3J1M7ulx(y&PP$2a4D)fWX zB~$>}lM~K@R>qtKXSxk%85Q4y;_y8vU4k+=IMe+&2g-CHu@4}YCi91LjEWz?vHs&6 zqvA&ig?^Ar6+eNregdUSxYiCZ3nbQXo>Ac=SWm-w#umlTAhjPrSqNmc!e>yn0EZz>=q`Y@9{{-qqJETiy#iE5fYeRlRhR-&imdLyIncgqki#4&!1BpdUWKV3rO4`5oCmeM zKpEx09cZ6!8n41MUWH$fJOs*4p#2K5=FA6TKogxHRiK{ZbWpVk8kGGH8k7ZV26Z)O z@G8vURrn7cl%38Cs>3(LLgtdeN)>)Ive3SLEY#%yb5!86&k@hXM=T4hy$6zJd|rk5AUC1v0r_A7ufhUeg_&r2K;B=-tFRCh0;qaG;kAfY zVG*ywbTmDn=v&OIuox8NFg>6^I}l^e{K65m{dx{`h<*vL!V-`|WK}O5&6zjM0gceV zI0#Xuumo-a$e0atK%>eBK`I&!F@Y}T1S^EiwM+nsft;|ES79kAQ-c+uW$K1QOy{Qd|a7_#b57GG2lHLdE60AekwLm=ssQWmbS?R)S0g&9$t8ORNG*tOjeD zbBIZC4P0goSY|D+0+YgWUNfc*APW^%@|rPi0kIr6z?`~{S79Bm!fIZ~H1=9vGp0RY z1q)yb*7GW?2dP1xYuNzu!ve6n12ANfH!Yy>GqR(AlT z?gCid0$2oX;#JrLQi`nZ0!ZBga1335soTt}uo;v};OZ7ZqU-`#*@pwrh};Yjh33Bt zposi%02GlOprB`R1S^C^&>;SxK+61%`!mK>V7VFOs*1(>>Xyb9+)O5p(t>e+$RT>z_l08@9K zSK&NJDYCi?AaxHQ>R=Icfmh)INGYIb;Gd5|cZFc%a} z4X}v32oZ%wk7i^vrqF;M7S;#If=3R18lw1}LsAGFE{WQGRQ ziv3KAmq7}rgLGa7hy4{utn6n}yb71O3YNJBG8Gh&*WnV^!4fyXTDI(GQoIS5xe1oJ z1&YWkyk<-%Ko%-o1H}`F<#+;QA;_t>c@=K+D%^lZm& z6CgkA0IRzJQ+JnF;VwuiJU~GcM<8`K!0KMW)ZOD%xCc^-tnLO#-3zd~23Q2$=T*25 zQi`nZ1xQ^3IEEg~hDPKAUWEssQW#m?0#Jr~FdGz;V0ECn_#r5VgW3^IpmqdU7*u&b z;#GLWtIz~)M?B;O)t?9EFhLp;U^Sqs|1l^{fwVTmwSw9TPk0rc@G3NewLS)GeSo4B z)Y5ng@&!n13tTIx_415Y;Tf+&3s~z@u-1mTP+M2PnlI0J6`q5X!93;&mH`?1f>+@M zufkJ!(uBx>ob-}c;U&mbsCqztc*U#midW$=njTOHyyjJS4GIKQJ)j_a!>jOySK%R= z9#E=z%d7Af6z(uRpm2LI8hOu98 zD7=BOUvVhBg|Wf2*()4DyReb39p?qLZa@bLBV9YL0of+_4wMsS@ItN~f6uG%j#uG5 zFDwl^uF!z&cl-cT1-f?pBd@{-UWJdSsz9Oo38o5k?f7S2g-^T+pHWqTLih_z73kXW zue=Ihcon{)sse@fH<&8Wwd3D;6~6H*d`DFU3i%%}RiJCffAT8);8pmEstObfzhJ6B z*N*?@RrtlL@EfiQwBh*%uQ~Gy4Fx909d{w4P>O$e75;z}B1hZ`4RhulcNsy-{y~-f zm36@EYvWUB z1F1yz(hZQ;JHXb?fT?TeQ)mY%MON1VvUUbYod(mAe~gM9U=Ppu$Eer|X3hD>sMrP4 z2l9G1$m<<^W=tzU8WcMD%$U}ISdJ@TR`l>G^zbQkLA~D1XU4Pztl$L9OTBywy&yHn zUS9!n!wImTe!$fA@hSB2DSU$X7gU#hfiQo7mEHIYjrD#$g?^AqWH0>ydHu#;P^`az zshhy3Fae|#S>27lptaK=bs9`x{xT{~1bg_!Uq;1AVAh+zjEa*%`aoWv0`mGqJ~O5t zAPowW_{^C8fLM+{U{*}!Q<%!9Fd6FgDST#3Enu&|fO%;epTabd8f35k0J{O~ry2L4 zewxmwFr81~9mKyNuYZ6rXWRpMX$8!_8GH&eKq`^FG~*tqI}LW%4w$-`dO84%0y z1k8$gdK7|FKyn*6Y zP;|by1M)jq9jLHb2uekuI;s^^M}dVwCDkH6g++V{t>8LpAs?uOKXDhj76GgVROT%P z#R5oc8(b@>z+A$ou!K*c4XkxBSnCTEt)NP5DaaQft?h8Fpqg-be62|_@tFQ{j{?4ng8pi&~tFQ*f{>`hf7RClwi7(X6nLw>S#}%58 zuvy2au#OLOcL#5l!d2!hSP}utgF<~hpTc^W{6#c*P)KdyQ`i8LKZhm{3b2iQ3L9ba zr_kg<;kJoSVG~ULIGQ{t_%`z?Y=+4nMw17H;ub!IEim~52zgMMK7-Gkd4(pZmU;k9 z;9L0=wu00n2l)z3bLJfnK@>(Lj0#6UjV!KbhTa96x|O$K==#qIxA2`XmKr)PY>| zp^r(iAFTaHACuw)koF0Z=FB_54(XRPXWjs39RM420AvCvly>qd?Br7bDF%(6Zh#5z z;#1fKl0lA|1E4_L0M_2n4~^>Gd1 zbt|ALOkocwOu<8hAa5N2saOF?Tu>E?d-)Xhg3>(Pq|Fd5H^9nHbVD7sk56GANF`hu zXmJ%N4W8%*rNJ98b^G}g_Jfont2@yR+KK>H_X4U;VL!wcP=y9E38dl$SVcn*I1Pdo z!qVUbkQgX*5AZ1*0Hr~&BD6Hv&;uIs>j9_12|Y}T6G5>y5tKMUX&ao7I>0QDSObWq z$=uM(q&Nv2&mFx?ijyT34uG7cI0dA2iljO736L_d))`6IX(b+j>+*qC}gHd zDolr^!3RA|iZj64U-U33&ID0(lIF|{;H(W`gEoK+0)^5+K81sP3LwRx zG`IjJe27os5J(0&YBqoZZ2?&O2bj9UdWen3?y9_3Rw3M#kZCT)ah`2kk8qZ672kMSuS z1F3{711&TMrNJGYpfq>_rtUbO!f}vNWOX|_nar6_fYsfAs#7=)u?3n2Pk>b10IT=_ zQo-a1RtQUj4P8)IoZwS90ZM~lMQCa81IUbqE^r!b=wecw1&XyK1@fC`eXeKFDDpmg5DG=a?MdgZw>T zQegos4PNMCQd|huexr*?aS=%SB1v=R8DNJjlr(3a0B0=#8?*pq5GW0v)DDC2^)KY*z_&8Ki0q!d}*1dzH1V09}%nFVCc89s$GAf?Fa z9)Q%X06EO@1vG^zoB@R?JPob@7dPO7Wd6|3q_`LqYl}gN1C+MG zh1rV^P-+B;Jpi#ZnICj8DJ}uW^NS89#if!87eLNZTn5s*3{>dAwf+EUPymU2=wMP< z3fA+XgQ-PvIY{jiP_YD7u^gle#L{G5(7~j*0<3UF2b1DTkh+zi6bh16SOIbvh~;>o z16=Um2l;V@q{2#A8a&X!q__&K{X_?o;%bog)sp7S9bhM|k~C*-fU_om3{n8e&gfur zR~1P~KBQYLhOhD5>2FYzf{0x7=$QUhUvbs{To04cu!R(_dJ z;W9}1j82g0U?x~6vhoWcdZ1}R?wD*RsD2PIIDGDm?d#cO;D*Fe1vrV|f9y$(kX#p_^^ z>wH-X*Foliie<1NOrVSj)~1l9c!N*j23Xq*n6{f>k(+#33O7O8KsgCbn?aW1Ek1=? zU~L@_p|;%yi`?eRQn(G$2KFq-hfEBP7K(TH6z+gTUua}yL0KT*f#jJP91Rrj@+sVf z%R^X5@*0Zw_!REJo1yoBNdK7|Kxc?b(hUO@37pTa}9JcNZL z&!PB;PvH?<9>PM%gN`WFWO{KQ)MEk-S<(~6pDLhA$lTdsCmV3dM zrSJkxPC)S`SnefXmcmOkIS$2FV7XU(SqiUE#qVI&nMq8FKftU5lb95Lf`)Fs@tHAQ0O?Tp4jP#O zvwrZIG2H;OeuBm?!PfucQ}_k4eg)WTVCDsoOOUO<0J46?V^I0CLMsbY{QTx~ zr|_Fk;SVGXH%lt~0hx0HY|dtAApV8~;tg=X{N+>l3sTYmG9SVOt46l!1}I<}z%Kj8 zr|=J?d;(ZGm@Okz@O1hXbgVp444 zS71{3&u7N80Hi~qf!~a237FN$Z^pC&%xdB{V_E~YzL{U48FU2a39yI2%mpBqAX~ox zWc>+vz$j!Xw(vW0D7Nw|wD2pm@`E$V7DM9^;HiQp9TWFnJd2RIO3 zOk`5*1hd{uWK!$`vmQ)jQtSo=Ob5Ri(+7|ag-(7mrY~St7rzeuX|rz-*ON=mVKE;|VBJZG{F* zFC<`QJOO2;etw01kdg%;^C3*IYGkWsJYh6vUI2F41b&4HAmtmt%E3&qPGsc^KrY(= z@{$JAmWfP?6TyM7VFNn5SV!Yo1yoTa@euepPc?b(hUO{mIzrq5zJcNZL zFQK@QUtu9!9>PMB7f@WpudoO%4`Ct6b0{w6S6B>}hp-Ux(3<}dsOATa?}2K5Q02IU zUttM2j9zF$YW}5Qfu;Oe3QJ*zfkFUW^DhI-E#uEpScWF2p|~6@x12vqVL6(dg5nCW z+zS3Ig%xOW5{fIqax3|>6jq|i2`H`t%dO(iQdos1$Dz0yEVr6JOJOydTmzHh8h$1R zg*E)HyrA~u3~ulYCU2I)8vZ|A3=G_k4NQt_K`PclRe-MXV{!zkTMJRa!@$k$$f3B7 zUtt}{@EgKeSrFC(hO8{)wsV3x^9^AICdV7X;HqUkzruP@Xfh{&0+T~=1DL;oKTBZ) z$Q+n%aN-7OQOHu<$gi*wS<5Cce-nR}!X~U*46+nA^DAsd*0Kf6-@>1zumx3%qlMyD zeub?d!5JVgfLS2VfMOJ!rnm7cY=cXKSxC|vire`Ww!@{tEF@_K#U1<#JK)k_7Lv4t z;!b{rop5O|3rSi)aTmYBF1R$9g(S_PxSL;LH(VObLP$eW^9^Bh<{83{9EyAR6&Muu z@PlGTahs&V9+0*bB3W4q+n@zA131oBh&Xa6?&Vk53zA=Oo*^p>!UQP=D}Yp2%%J78 z3;Z296!-Bf>;tKt0Wu5B0_%c=9>fg`{LPtXfXv;`udpAa_6JBUm<7^>taOHmIr9$@ z1t!NIBH+YwfM4MNC>oh&h(J=yL9oC<{w#%qAd_JF!KnqLM1_Jg5pVjg_Ce;FbhdqLh%&8!YQ~kn1v)Qpm>^J;WS(t%tDgp zP&~u0a0V_7W+9{@arHyQoOy?c0t2WfIt!}O&+#jqS!-<){|$lQzk3Kv0YXNZ9Y06;8|E@Y)UM9rCJh=IB^V&If>iC^IoI7WAfLQ>9U zu)t;hEQQO+`oSq@h8VaGy~3|>1x3$Qu)tOREQPCB^%!I+UgKA|hN9;>Sl~K;mcn&Z zJ&qQNH~1B9fCO)VybNZ6JOuHEqk-a0eubNGX)p^(T0`*`zrroJG?;}Xt)O_DU*R@f z8q7kHmQcLIuW$!04Q3%p3n<>@SGWt82D6Z)ITY{lE8K%igINe^NLQNreX>{WHX~vJ`eeQ_g)z%9$bV$f5Xsv z6glC{0NvN7=g6V>h+p9mNa=zLpyCP41nELn`$Ny1c|m|9hvH*?g~uSZFF@T`Fbk{; zS?z)VbLJOX3QSH6=FA;B5PE`+BZuM>euXC>y+5?GvLLJu9n`9=L&u!?hqeNf6KLQN zs&xZM>r;M(ry#8}bh5G_tQBZlSLm2C&j4uwjc0>s26N^MAg#~%6`p~#?f_{8vreFC zJ)vXHyaS|#*_`81M(w^9)m2!xBLok!Fp~$^}GWMyyMSOcn8u0@*G5u zqlMyoeueiS!5^UL1+zdNf=U}Ge&AR50G9@{kfb#fKk_SlgiC{2NYV<5pZFC%!KJ}0 zBxwo7&-@CX;nH9hlC*&07k-5=aA`0LNt#3PE5E{5xHOoBkOpTc<{jGR%s)V*6W{n1 zzJZkP0A&p@3zV86o`fiU0UDgp1I3jdIIh0)D|`osAxMJ3kwftZSl|bLmckE^Nyz#g zcj$rR>LAfV770BSdY3u90aBB0O$Qre-P zl?7pek|x}ftpWI}3n;Y1rNJyDX$i#+0fi2@G?;}X zEuh#bpwJ1I2D6Z)ITX7D6uRKjU=~6e;>jOc=FA=XjvR{J0t($Ar4w#~3Scl36sZtj zLe=V;Gf#+gw@KW`e>7S#5{DIr9RL+Fk*LUXa=wKSAb#nP4lB6;FsX zXTDMC$f4LLpwI_W`~s{P%mmwktaw4BIrEE31t!OaUksoQ4#;4~9kY)!2&@SM-Gl%U z1)1P@0wU_jq1Z2=&<`?r!7q?2z)X;KP|F!U^VCpf&b*+?kwbBUfWicj;tgQMVCDo6 z6WJ9Ls?3=;RDmY$7gQR#YkO0W)?~ zDei?U+9Rp37p!O>Xy#-$Xxh0-fk|N>XeJuukck2c6G09+0J0szyZ~Y%JLE!@Ir9OK z;zDFax6XfTY3D2MQK5JcoPati6%TQwups)y%RE|q3ECQMG0c^@~Xi`}SNh%*eT0yByAxm*F zNb3>-g~b92OCVZLNGdD=X>GU#N<$~0S{FmKHbgmcC@vLHSPD|n@g1ZB%mmwm?8Fa| z=FA=CjvR{11QeEm6wd%F1~b7XBP(u*GH0GquE6BD;X62$fec1UWd|UlAQO;M*>VAe z4!aNK=FAg7Ca)Gy zSPfFV0IV3y1nWaqJfXszc>zfA8UckhAjJ>B=>yCJ>qAz&pu(K_0Vt_}Qkg-P;#yEr zStp>dRzP7LB&nR2R9FWxWdS&;oQEcrwUDH;AWDJB5tPadvJ}^Yv~CbkSTCTk0iyMS zq{0S})(v2-7ob|#L$q!HrLv6z3L8Nx9()C*GB6Wt4~i3`%$XmQI&vs(5>VI#Qv3m| z7|aBljI4M=lsWTGI+%|kSoB<4iFRB;EpnL z<`rd*9Ew{66t;jA?*OTQFhQoGq_P=h=FB_FK&fm+nc_uo0@_igcnOq%+CeV3D5-D> zoPaKalqp_?E4m`7a22fR8Yq=r233@03QP*uK&u8p4%sT8uodKx6JUpc znKwX8WLMuPGiN>lQoKz-VH-&C3y=y36RZze@rg2X<`*Ev+XWQ1gB1S&D+V*c`j8dB zC^KjN0aCm}Kw$?+@dR)rgPCA`$clfInKMrS#rIADg`FV92X25u8q5UOw8)AZK-EzM zXm|4s25=?0OF&_l04OjwL_&IQyTJmx1+o-&gA4NI>BbTpr9qmRC?bETC{0E)QlQ%S$L85l}b+ zmj|1_Jg5oIw zg;Q{8FbhdqLh-bK!fCiPn1v)Qpm;_=;S5|F%tDgpP&_N3a275NW+9{@9{-_Z&V0hq z(L(W@fWkSjQc#x&!ZOT4#PN9nh4XM}2n!*tp?E<+;R0M5!a_(ZC|(p$xCobqun^J` zikAcwF2SWCEQGXx;$;Da%W!E33n9&+ctt?r3S1h(f=fd@dBV_~`2?s-bX7p%DoE)K zgRCqF>x4eclTfAl=FB$?961!P2`F3xDQy6ck%E~ZU64!xQG3I{oVfusMtWU9;W|j| z36Qa17FZW##1O2Oslnfz`GkQ2lj8|UllTUx8o4Q;a6>@hCZrm7i7o`P`bYXbi3Q^t=EIyb#DzcmdJ_3Of`% z23d+P1r%O_^{jyEc?A}DC6J}?3Zw_*JBS`f3&qz03a>$eH$VgQU>3+jAZhR%+8Y6d zH*je%3rSi-@vVTuTevisg(R(@_)b9K9b6jBLXwtHd@rEz9xe@LAxR4;eh^Uj0G9@{ zkfb>jKME*(giC{22x&+T>o729z9Hslq4-Ha;S)&d3(2f32MK;a);8q7kH=1}}Epzt3q z4Q3&v!JcHAA#BdPLdlUsu|ZIwK@cPp_62BJbhsmjVxyo!BS`H6 zuv#z^6gJ3eS16e?F94}+5>#jct9=VH7tEXh(uS;fLby5ef?P)q#b!Z;W{~0yV8vi2 z*bZdH3&PErH{^mwu&#sK;|tz`DUcS>k+n>YFC@W*LW>}1U6PAu&XcJUuhiJVmsn8D6dI7BUHdJdHMC%2R zKRW~!IzTEKz)lAD1P2DWFh>ikfqoKa%{JtLYJUIH^i}bBo(?rrhfoC_72psT@c59fcaA)OR)!} zwO3G~M^K>`qV=w%LN7>b1GqJP7pk=fqO~CcG{`8Z&<9fS;0-7~!A!6{$WH$dZqEE5 z2Q+XfsL&5m`~j>O%mkZ^thgb^Oxkfk^Q!A!6{$WC7nVa|L2o?z zXTAXP=Y$*J1Pd})fyoi1Mc@!<-N-aSg=ru|4qO9;EST8YeEFXt~p?VIf7XVb3nR49)s!vEsPRWm-st5^k5@l;Y_6v)nFB?Au66pDy)X9cm`6Tz@)GQl4o8>Ia(;L5mZuUG*DbC zsIV3;4Q3%pYbdT0R9FX>2D6Z)6%^MCDy)Y~gIP$@5{erH6*j=7!7L1@zhvFtdg-vj2Fbg3KiR&FA=FBfZ73F3@h0P$P6Rv`?DVPb0T!=3rYF|j1GfxP0 z3M%Y^Xni56unVO10$3}k#Q>`N zc0#mX0Qqybpu%pDiUzRL!A!6{$WA{HYR=pM^5-5wg*_m}6TphWOt8twiZ6tkGfx2d za|6VmAcH{_nllx10byp;KKS9RO^0-)`l=g4#k6l3I{MTuw-NP%m+!yv~V5mY!V zsBi@0*w>N@M?j`806X?I)Uk&lj$Ht%PF_GN%A+8y#{?CQ3Mw3fXniB8a15k%16b=D zsMezpts6l8JT9nk9Him^*y&&<*dAo3F9LDG-$~0jG)39u&xJCU1z}pX9cqq&VqD- zq5@5qL6+hXWQQi<#xGt!01Cr3*N-Ep{ znesw9D@)-mD4l_pe}Prpgs6BYsc;jn;vHCphT<)-idzsB?PkX#E=`{W=;bJ`hxR0G9@{ zkfb#f9||fwgiC{2NYV<5j|3GS!KJ}0Bxwo7$ASuv;nH9hlC*&06G4S1aA`0LNt#3P zsi4ABxHOoBkcPzd4N-IE70Qkriq8ZUo`IB3xD3jsU?wPXA-;sDeIaemJR#VTL-Dzw z!gG+?1z@#cCMax>)vi!BXI=nO`$ACR1z7ESkhx$c*a~FD6N1f|7vwu~D83X_cnMOx z0jwCz1lxhEctNl^^M-s-MR^%q;4F9#ra)St6{R$|qI?A^9bXG7yb@G+4T{#3|P`~=eaSy17V zpu%T}*6)%EpFvt1z=id9sMb#qtqmcL9Ex8A6~2H}JOJ16U?$ieWT$@!HfMeSY7l%C zRQL)~`~j>O%mkZ^thgb>ocRN&LGS?LPmsZ&iW1QvkOo(j-$0K2E~xNLP~khou|Fgg zzJp9(0CwyTsAIoD9J>Hiovcs>YyAPz`cqKhhoHhwh}NHy3O_+wH-NSNglhc((YgWT z&tHNHzd$MufSnFzg6%zLb~QnTKOjR6Tmt13FtY&^gUE(71e-G-2m%$&mmn48UqOYx;L2-5Fr@PO z2Nw7zn5FO!WEd#%fGa0RMG4ZSkfr!vP~ksV*8`}o1|g6@gHV=2gAk~553?7c%OFd! zQAnXt2-JI>5CXBQ2`tbgl%>!F(gpGu)GkL0#bzOeW{~I#P!$1YfjtKCjiZ5Li;zMK zTpr9qme){h6;f!0%Y#|S@(PM=LJDngc`yrEUP7^5NTD4r4`w0D3n+F7DRjW)!7OBX z4#iF(g-*CUn1v({DG(0?nKQ4D2E_(r7N}RL*d^p>q1Y{?&?ThMEd&Y*#b1&N-5^t5 z$Yf2SMe9DLPD`0tfC*H;-92KKU~E>unGai31AfyAS(V#DolW@_zzaWp*Rt&Vj@IE zgOtKVxQYfT$jY5AA#jYoka4t7oFt?$39JBAQG!{Z;dHP(XjAcIA%)3sX)p^(T0?P) zkirzWG?;}Xt)MtnNMR~m8q7kHmQb7~q%aLG4Q3%p3n)$(QkV{x2D6Z)ITU9IDa?RN zgINe^NL=3#GiQDQswig)Da-^Zop2G9O~Fi1*O;D}#AzCkh{JBs_VIfFG1K8VF|>s%~A?WK&F2HJGL3>*u@aXet`K?Axm*7Nb52og{49Y%OF}?q!gBc zv^IbX>lUcir4X$RL5>`X%Y_t{gH${K*YRK`*dAo3e+V>ZegJ9^tPoOI0aE+{tQgD$ zn~bcuA;_Hh1E@jp0OC)O!Jvu~(IAik*LEvGj$I|Buu@226~wWvQVOd;rY`_HwiW8w zl@P}+097Y1AQk0mkk&Oq3af<_))umN0oZ3u)^UK_yz8-=nIHi8TT zB_2?T4IO#~=~Bp2+$5y139Rb@RM%#(z-FN=h0P#cpr}C8Wss$~MMz-_Sl5Igh+SL3 z0$YW$6t;qNfjkD) z!HN$GDI5eTUI2Cmmb7%XyF zC`;im$ULyOK!$)DSzv7nS&B!56pnzkH7tN?I|>##DwL&g6r>I8K~!x9S&GMm6pn$l zO@L`T4i-5sl%;SSqz&v z6i*2$oI)r7Gm#Z2D4rHlIE_#MW+E$)P&^}~a0a0O%tTfopmAfVRa8XF%5=3u@l)@#D-VI>A9ZNXt3nFbAbPu`6t02vUI6Rug6h2r z(R*PbD3xCqQn(IM@&KI5!A!6ZL8$LSyEg`jg77J$46QU*%6H-r>!fRoaOh0qju z6D)F5C`;ic$ULxDL56@6E?ApFmf|fTgfo{+*lkmv%ipTJCz0}u)KzL3IwgaR-VS%HS) z10jV62nAp!vH}Ighe8Su5emReWCaq6kAxH+Aryd_$O;4$9}6iwMkoL?kri+#J`qxQ zf=~cvA}N3*+y@IlMG81(KnYhNOYtcv5j+!8cq*ju43Y@Cr4*il%z3Z~lyJMDiQp+D z5jPqy)T3mo(n0wfavX!Qg{K<`vI)C2deiuMDGWPUdRZ;OOW1ILJBX1 z6kb8}_DU(d0_km746?Tus`n*CZ^L4+y^u!NYmnYILJF^i6y8Ae_DLzc0qLCp*4qcw z`x>Hm!eUUueJiB!7NleW*lA!U*oUB0086+J7J-5X>`ag{P{MsDr0@=$ls+tiCfxU6 zk@rGb3hzPYfxQYc1e|ce+7z-BKL{y&0BdVl4Au4#Eb>t(OW`9(8`zhq+6=N3KM5&( z0&AN9)AkuG@>wWL;WJ1Z*n<#ljuwhvgcQDjL?3|jE0_s#03zXj6;k+$Pyl8kE6`B< zCZzBUp#aQ8R-mBxT}a_OLIIeGtUyBXhmgV#gaR-VS%HA!Pa%b$2nAp!vH}jpUqTAM z5DLIdBn6O!y8sk34Xs!U`?Ipn;VQ zOQ0#R6)e&!oTbnTG7s!kkRjlN3)ZHPrPwB{&<56a0H&=SEYdEVrO*!22KFVYHiIn1 z4q=53u(k^@ZJl6|PT?$tPLMXR2O-)VEfl+i6}mv83&4H?GeHgj1t(~Qw1Hx`utGON z0ho!bKtr)dSfK}@0L(;IprF_*tk8>40A?a9kWlOsR_H@005g#l2q^XoEA%52fSJe& zI20!cD@;Hr05g#kKoahQ#h@Z(F_WW(;zVJEi6G@GK-;~+EO1K+6e!^4(IjDoNpN{E z3t3)6ak8+&WVk$-g)Fb2I7L`t3S1t{LY9|MoGPp^6)q2EAXf7Yk=8EJl}9P+S6*Tq2yMumoLFLUAcra;b2Z!cufe z0mWrt$z{S>3d_(XITV+JC6^0lDJ(~mgnANm;?D|Ug%w~=E`Zcc7K$suA}fWn6jp+? zfipAQldHgztAw)@R-sF3D6R%et`^QxSdA{JptuGsxkflkVGX*ZgyLGT0glC*;2c439>aA`0LNm@d2hp@s9xHOoBBrTx0Q&?dqTpG+mlIBp{C9JRuE)8ZO zq#+r2g}6EM3t3RC%Yt@hypYWjxW}%rSy%xS0*)(Wvm6B+SIj-mATZ6qaR(^Wb_+Wy zDDD9T-CmH%99asC3VVeW_6RHNh6Nvw;y!TjaVYKwDOmw684iHL@}RK70bzxMkjikf zl)^!fiWhQOSqhUub)lny;vuk#Ll6~Hq!bRpRZIb^&`>-KR&f}jVycwFVYrH^U=<3A zN5CqMKvYbVQaA!vF%7IjLh&eA#Zicg=~4T zRVXN41gp3RQ88Ca;UZkcT(AlW#Yz}ojxV4A z`~wugSA`u9FeqLF1@m=~ffAq)zAmhAO<3V7EQDngL8odXZwNOgoHb}(_g{&-vg&V}Au1M2 zDcpstSPWL7pm-0g;vPiB5-Ejya1~3yDkK!|gH_yzs8}kca38K>DOiPo;sdaX2M`s@ zq!b>&RV)Lm;81)BR`C#`V!4#UL%53NAQcKs3b&vktN;pO1#k!}fJ6AEumUKI99JlS zLbwC8ookwbqlMxlVTDH^Q&y;CWkFboSrA79#mB-5kKxi_7Lv4v;uB$oCva&n3rSi* z@u{%FQ@Avkg(NMZ_)J*g8C)97LXs9xd@ii;94-xJAxU#6z7SS;0hb1|5Ymv+5;T9a zLdDTS@ujfBOOVnVidk6@7RbBsD&du|!YjBmn1v**q4-)@;Wbu?dIIE0Fbm{eh$kURZz!5GpHNg_a$+%O?f`B2`6#UL5u{}Tc!Lm_3DS+M=Y*m; z^8`Q8F)e4oBl94ojypifXEkVT*(YIzPhbFw|}XPy8$*yyvc!e@}; z6(AK5<^+&Fu)+_J;t62IU?$iSWW^i&%$X-tgR<*yZ~%i0M%ul+ z10o7C!4YxZ$4_B}pCE%zfDHySSAdwv2Ct|#XFdUP#V=unUm(RdKq??ikg3q^jNqif zyrbHj`9?Kp!|jP`MbJVpP39ZbiYq}Y!j^+vutG{jvR`=g%y5-9P$F}5HRxxh>7g#AJyi} zFF>yTBdqWTq`2b`D4@Yius&qPFRIO%J3uD?6;}8QQal5!7|aCgLsr~TW6nGSr1+n( z!atDWAE4v|VS@D`E1pqf&iunyfywa&B-w-1I-UR}`!%3s|6f?)Kgfs!;3NZPf)t_z z=?hB8vip0t?8Wip?SlETH*b&?&XeB9K)H zki#G+fX?V;RbU0pfrH8xFlz#Q%Nr!MPhd1>ZUB`?Yzk~3g&q$awu{ruq$wYUC<(;zyUhg0;IJC>H>Cf3fcg20jB~dXr30lT^7XJfaZb?jONTA zK)YqR6u1jN>62c97V7`5Cch0Kv7%)G~xl4 z12K@~I20umz_+o3%mgtIa^Qr*)WBlSe1O@JLs3!zbVfr1YgQJ70g6tf&~E@GC~%r% z1qZ*B0;qIkYJi?kEUh4=Af2TES~k=G)d>lIR`4nX83h?oWWiL+D#$3vW+}*mq8nYc zL6)MNf*i7Hc?CHI`78xclNw>RqlKb^0;mmm0F+)p43N_y>B`YSQBeU@)_~h_KB*&qsrl1Cs z12GVC&=_DfXFkB<$f2mNpbiQUwyZ2L1C(PR{(-1l0Ez){9%ci_fQEtwD3lgJV?a|u zLqRi30dzz%OeZ7;*uXKMrJ#kZT3bO&K|4zUbdn&3YJ)6A9R(d^)w&8g3c6VepaT;S zsvRv9^%OwI+Z_O<84#m^4Ji-kE9irK4Uz*fkmNKJ4HQ5-r@{I_3?w-PMMDM9mT<5f zh=C+0p=hLF1Tz!FK#~(sG*&Q%$$=P1avX{#3MMc)5Cb6x3E2iVbLIoAkb20}kwei; z!BoKvTn4s^D42obggq-up%q#Nnu5!~22f#Xu3!#2+te&83(RO>N7PXYOq$FM?B>if z%p5rsEfg$3B`K)v1+!+Dp(>nVX3o3;R9agqSb|P@G0MsUGd6&9fUN`7X`s8W1I(E_ zj3B3Bt}uqs8;l(}6s;7jKrS)P$^tW17^7OS!q}X721q^V@>LKGI@c1U&sxD6)ba)C z12ImZ={sR;&b$Mp9(2zghz1>M3DRey0IE=Lfb@YFFVOV8Fg9nt0aDLw&fH-FapwdR zM-D|>1zXUm8z6lkMu!QiJ3CCwnSX%Hw^OhK9o+>A2oPfin)x$8=7W;J4I^+~uvf4L z1^5nQNZY|d!Ct{3OThu^HCPBbf>bMHDLN`Rf>hsts&-OvRB*~tZ~|F~WDi)iL6)Mk zf-^|<52$Jv1!o19ECm;+Hy~y^S}3|IxPoE;U?9Y*HNH%uWaK(jr*3cjFF0tthTw)9i* zRq)GF0ClU7bvoWK1(!zt3jWBd0~Guf08)PX4Dg+{{4pInI2+C3bt?)vq zcC=6oRsgL6p8;|)h;hRdDF#9mK+QU^9EgD=r=b|C0NQ2+mIE=6(z;Yl4 zlAMHMxB_S&GguD9K#~(sj8FjW{RPW`7)Wv)ijfMSqp84hAO=DX60$c;&6#JII$9`3 zDS*zQS^+9uKnzeafTlJB#b||SP+J-#2Vx+}X(+}h#K7c03?w-P#aM+{m>h_KBqyO5 zrw|8|12K@~1Qg>H;$d@v+KvuZI47v>?Ss@ve#lL`B)gTsR4+b;5&BzSegR!H; zkwY;>Aq8~M2v{YE1=)asq!P3N;{>Sr{@@F^le*&zLzd&5WhbDAQhtDlo&brifrvVC zD5ff;f@%lw$z328NH3_~fVEkfAC#CgH-Jw0N>fM!`5mkh!~&UzqVhwDIrD^4P%>{Q zRcr(IgeH_Kwu738_d#~Ii72#-fV!t0V7ZP`#ZE9|MyX;KTv4ZpLKj$3w+QHpP!V(H z4W$Z93f-XN!$Gb{S4am1EZ7ww)&>v@Ib=7Knlmo|smxHw0M(cvc`$1Mh=r_jL8&?O z0g%c}g-p;oMvy$1bpXUdR(YV*ocRJsWfpj}4!rsw%({TC@o=z&(o*J?D{?M?vi zLs963YRUy`0&j51SI7s&%V$su0p@oequ88z2FT1(g;G%Y0agiOf%PD(oKa%VyaJ@MOrZ?ajsh19 zAl3?y9%Pj(O3axzfD!{J1u0}Hf{r4rP$*ZZ0ELv|6cGhbuN=IyM_~#yF_eS#LpBhZ zfh#A_S(a4_l?qj0O;be_sz8|>yr*U=R8u8b6L{-TwE}2p>%~V<3Iegfrh}!SDG0Q0 z=tZF;hhmLF4XDuoRtaK3HVq+_L7+`TKR~Hq!Y6PF0vU=_1}%Vy{`km{g_MG76>33Y z@(E-=hy~IMayUF)OeivE-caPop;)I-2g=i6l^_<#JQS4+ip-f06oFFEh9bpj;KXsD zNO3wSarA@io+hF&9h^93faP`+Db55lP82E5f-9OSqA&}rXf`MXfv%2tP^7@5FdMXY z9ps97g?dnV0d@t5^#H^|4zCAA=FAsBDjOIT8bEjOd;qC{FfV|Z$cir%nKOR?DQ;v` zXap&404Gf_6RZze@rNRF<_1vOY+_Vs0x1S<&dP!?!TOLDHx!#QKY%4AgDk~n&=5rn zqe3&ILJK1(*c9i8D71h~0q>wvm;+53&5U4EAUn0pz$=AXL0a1w68%RA>jOH~<RAAmn^35@ z5X@LmsJIBOXrYM0BCw*xpd_{cRJ#=_Fexk+F=svia!5C$LN~}EE5Hr`Gk1WP$icCr z(42V%NO2FNLJvss36Kg16RZze@rpuo<`W>ry^IRIAjLPpior~kughQBFHevJ~?O!;|MYuw4r<3!z9b`#>x}WGbHCSD$E7xe_;W-k_*I| z0q^QM8Ys?VRG0@61WSWiNYWaL^BEQ9!==G2Bxwc31&j&{;L>0glC*^4LPmv!aA`0L zNm@X05u?H)xHOoBB+a3?m{DOdTpG+mNJBh6!^E8Vg@vPq;u1!MC19nXZU}^Bfz;<( z%BZjuE)8KJq%{+>t|Z z4Wq&ukkSXBA#Mm0qzjTMAjbYMH)nnT8Wms5sIV5K_65jTFbk{;dBE?1zd7>@&;Zj5 zNXvE|s2W+%sIZPvVLhZ8St6pa9%RT2P%2vjtwq*BYLOWhjvR^`7!@{v6kGti2+Rbj zMRw5)3v=cRAQx?9RM-eo+W|5R%mV8|cF_fYbLI{UP%{+LQrZM^(Pl=4O^gbgAud`f zqOcic$PSPpOQ9~>1aZ+0kc+l3Dr^BMH~@ALm>@A|q!!slH!RGVH-KEUlTl$ONbL!bVPF)S>yDqyK6?TJ)Sf&mO$PTMLV1Yf1SqghVCV^rGq#r!43(}*I zrMQ<-VJ}$E3aFlaV1a#%Sql3=dO%@^qQ@XhaX+KNez2YsP(2600-(#}4uJH4d~){I0Baj zvyh}E6pu109ED4RSxC|XipLlgj=`nDEF@_T#p8?$$Kldo7D5`F8<|#^n=>B(9r=5L zQQ-twDQK1o!eT}m%Rb4da1t&JVIib76i+cKoPtY3SO{qa#nX%mr{U5N7D8G=@eHHF z8Mrirg^(6dJj-)XmS#YSHN;t7_$_vpveg+UIoitWz15ziYCXQcnvIfjWJ8%8mb(qTLU}Qg;C); z#B;0=&)onE++fU7xB=G03W-;+=Wc@KZZc*m+(eVpP`m|}yTzELa0^XNLGdWEbxFaOW^@n6LbOw?74?vxrdBd3J=lbG!!3!HQu-p^IEQKd%asrA^!E#R-vlO19$#Ez?1Is;Q%u;xUCda1u zoY9d%@dZd&BTL~0qr!7Wfe)aTwFZ-p;!8$Q8rERaFk_m)uE3=5lF^K53OkbnGiYcZ zJcu-bJxkzlCTMZ2iWG=caAYiWcncDn!I_n%_>NKG4Wq(4Mo`#*OS|`s3hzO(5FH;F z9X~KAeq>bm2oeM9_{6C2fl=WTOoxWzXGVq3AX$ixFN}^a7!*M$75*?P{DbKbQ2fuR@E;@#(b2% z3F>nW#bzdjW{@mIM+=kV2?oVhCWTgz7+6OelR^uVLK{>EDB3icZg842uW$yj9cOT6 znK3=N!w4~D!5zk|EX8&vg?5lG&ea@B*Z#1L_X2ot;by z9ZU+HD0a@^G-qyr>6ro6)5WCF1+og+o&|Rp&6#Jw)U5!iQ|MqqR?+YRbblO7#SXBF zE)*3rKq_{ClkSJ-jG*)dG6ysQ_<|99Kx!w{u^?IK))G))Xfl0x4zisS5(!|hbVHSH z0EbKulR^)Z!XHR01=QPbfLOc%95UTZW=wmYLxW|-b5OAKGC`66*sMM#g5nl08|n( zIfBdqP4_~BWirgKAmc$9kBLEH0ytO>JOc*{xaa|UWhzwZ1#qxTV^WyLr0@n379jV0 zfG{tBgJmj{8B-6;VLzUNf@L}rq~HUaHG@fEI+MZ-gj=UVm_MFEgK`4MJ&H4#6lQ|# zK@OG+pkSE*GkXC@ox*g8ZjdvWG?{-qWi)4A08_C6tYRjLiV2`#*#NEQ|5~EVWDp2g{46;9vol;V+JW%J5lCjz1U`XEQ0xhL=lom=tC)Da?V{ z2@XSu;<-$Y9~c$qF)7T0E1u7!FqcVTK1?yV(v7c)6NU{qYfqyXM~2Ufh4NntUQ!cv%GaCr?;yo|~52BYF~CWYm2XRKgS zSjMEV0;U*TR6`W6WOBT~sJMzrVHI5QY9@u1ObV-EiovBcMDZFX#}kZ-Ync?*!WFM$ zQdq;Junwje6pYL_xXhVfxIj|Gild-lT+gJi9w|wH!we#`fk|NllL9n_FhDXFL}nwC z!bYUr1r7~}%qAvPHKxKd=oYv?gSmGyedM1B1e}qZOoJJBoq@+2+h0t&EO;mY!fx+yPRxpcPy> zfJ{@^!6dLc%&}+L2?oWTAh`_?IgmjLJ3(>~_Zc z=FA6LL2X?SrMMh47P?%-ocTgKqZ5PT3J@1`A9M$37+C=%(Ews;GB>m{Dy{?%s&=$9 zDy|Yy*adRF;%bnF)gtE1CqT*+Kw4*jSs<|q?TiYmzi*oQVog^gf6AKDmO6gPv^ZV)kNUI13HS;U-q1&E~y5>VU%R=A># zQE@9s-B!@xGe}lp3uv|##Bw~)29ECepqO1NqOeXxVT*{uRuO@N(V(!AAUP1!se*`sG$QA`3m}6O z4>KtohNVl80Nh=mMOaOY=FAsB=4yf{#T}qH1f9+N05ly0$vI#aNNfU#rO7;@g;8-Q zIM!#hFe>g6Q8)~8sp4*s*4?0V2~q~ux&q7si7jYhRM-X9v!I2sMR5;E?M_e@Y6kU+ z_JFb#h^5Iqp_x%}FIeG>W=6$*Aa(mdNeU#Zuosl1nxUce0OS|NBTNcMpq@Jb55{H9u!eH0`}Y? zkk&(>c|W+;4loNO*3iPJa1gAg0pz*EAhicTSqNmL!eLOh0jbWBF(^jNnLj{PHGnP&P(00~a2ix=!&Pm9sA|Z8R6;ZUgC>mK+Ip2G&20nc(5AYveW$XV_I$Q;EpObTaU zsS+drcNLQ+^MQJE<_Gnl;`2eh;t5dnod6|C&@`_CC`qmWvp`}CKrBt>1&xe~C&3ZE zqLESYl!(F^kSi5WgS4IoB}tGnu+|-57D#MEBcsA8u$~Q#j4g_1Kx$8dat~-0THy>R zM}b(H%nKSA70-edu4rIXJO@&D4wRZevI=KGsi^^)-#&mmqIi}`;Vjf=pb$W*_ffcd5}@(LG>yq1A?8`0d^i(48+o8ZfImwya2YmqmfbZqKLv-u+J`mv|bW1 zXZ`_F2G%+Q%mRr`Xk=8l2-Y(J&_0%}}&t-@pG_x%L zWu_WPX4?Ulzk(vaA;+9~2WTnDg+JiT1~LPl*&aZ|K>Cm~+Xs+2idUHwuELTeNC56C zCQarGHRjA8YCxIoLyh7MQ1smZCCPdPCUCOaQK!J9020|y2U4@4PVpu<}N7x)Ix%!;V-DEe~n4u8q_NwFQeqH2Q}u*4PX-+Y8CH;47v}h zKw(~)0df>r1niXwb&3zbw$7+id?=!D4eXUiAYG3@EnJwc6(C(8kp*=M55eje)U_x+ z2B~`h$|4|VJ_h9)u*DZ@6`z0=-KbT33R3eFRQ!O{JOMRjK}&W%`~}C}c~FGi6;Ze+ zqVPmS;VCRTeW+D@1~%YFt>SZ#0nb5ZgWT{8WE+gJ02(L@z=3j|N#Qz^0!Sq^Crtng z-(XU>0g^$E?gh2x%oCuR8~%Yp^d^(SO^`xlRTFB>nH%aL;r;@w>K2p2Es#QFRSk9K z%rBs-CV-RuZ6<}=Ace@PUeuX0Pk<)-1Ft|f-eFR>18Pnpt7^zLXFiYx86tzIx(llO zG?^I`Ux+|@kr3f~ObYjy6kdp!GchRK1@~w-WP{k?E+|CFeNavY>3k^y>9azFA22CA zU{ZJq)_EVS^8r{VxWfxk@(|>Hkj_^kkRCEb_z{!BBPNAcV4V-aIw$0S>;#WRtN@Qi zJZ4gO3{nO46WC0M%o8SsCrkv_tg@D$`Gs2;EnAbOrLDLi9RxDV3< z9zTG{JZDmP4hjLN9!Mt|Y}yMZg%?Z;cVT+KBLfgUFPRixf`S~X2ke0ZS?0_uTp%(0 zVG2`Lmf|ZWg;yYj$f{Pjm@|Kv0?ltHmV*vDdIhrpY|Mu#Oyff@%=hnjttGnq4g0F8@iFnw6gr1%zO+I^5|ZaqzdK;iL~N#QG#!Y3v(&;+c)7bY{NIWPqcUxg3(G*E z^arQ&G}pqc(88?H$P9_dW@a;{B`^gYUQ;c& zwJ|HSft11nlu47h1Eg*ROx+H!x^`xTc92qJbt^#XcEHp%fFr1bS)l`@6j|L4kh%s~ z3~d0b>tt5wWL9{Jh^J=|<_4Iu8%seE*~yG-&<0RM-dG9>;15f|5eZU-oFf~+5!uD8 z(8UZb2SCOkoAF^OC^bVOvSAsMVmB!4--Ar+28VqQBvzI&DfYr;dciV%AX7mR*$otY8YW!W57iNbGYO=VV?3Q~&f*9jnX8(``VfYnW7R+t7-imYw} zNZkRLx&`0}n$D~+9i$Xl-2srg1+W;p09H4HSz!jV!edD6fim0^2=f9=*#q#oY%@?I z@&YI#AArY}e=Gqri(!c1sHg4Chp$RD5s+d4prL4&DdDU;$XP}qM5 znKla?_Ol_evXn`24qRpqSY|HBR8U0DgGv%*?tg|}d>Yrt9$K(vCJF)zT=;_H|d)`65k0|0C&L}op+!g^+fHL#=! znJfY8*}$x@0pu#E9&j@TqGuzs!bWC=RWLo^W(-7T6SKl5P#{3{fSWN8na#`!o0%0> z!1REdF%X$8%nDmT;SSXUZhtHQ1^NqTg*i+L>%dx=7!>9+DXfRF7cnVpfU%b{DQtwX zS1>7Tg0WXKDQt$Z*D)z%;Z-5rRfHi!1 z1?xAz0%_RK?AXDmcz{{q06cUKGArz7RyYU_NNCH5c?Op`^8=X9A7Gt_m=z9zY(uu{ z#%<8dDokC+YtTUOeiVZqykazG?syG#!wj&BLntbKfKZU`#1qU4$CwpPFvCl@BM@c>Oy>fy&XddvCqcHstzyz- zegO)i1u%6RK+rPQg8N8m0jpL}!>4&VUj)+}*n%*8czp(P?Hg zrXw$*F}UF+C>5P$c3i=zc#c`&9Nfh7%nE0j70yG#1?02S5atG$&J$pr7nl_;fNX!J6cpm>Uv%+OixdC_g4v6&~;CcK@ z%w|k)V9QZ%fR>{uUSW3J!KiqZS>Y<&#B0n7SC|#9LBa*(vr7=>4VcakV4c^Q6|RG9 zgIfh^xPoT$Kfu&AfCJzP#04OOm^7JhfEK(oz=CK3SjBY|6(2wTxUVu^&q!3+k95gC$gIVDQGido0Gk8ZQxaxt(++-{BJ+S* z;Q_P4C0O8reE^Yp$gJ=XoX8=1z&?P;JYrUO#H?@{rU&c;h|FVVg~#Bs1EL4)1BlEM zW`!rr3P)giz&?P;JY`mRimga~;SOp0Pk0H6gJ;YN&p=*9PADtf&6y`;LR2jPt9s6? z@El|uvZ@#E=FAJAs&;_Rr%`wYa|JlGCS;m3@0bA1@+ZIwo}(yOkZI0*0<^!y@xcUe zQUaL*AKv@`5d&#N9^P!22r4^XFe|)(CNz*bMe!3z?R(JZCCF-pPoM!!5KEK!z(hvH&tQcoCNe610jc`}8sY=V zDtrcw@lAw=(gd*QUNS4ZgnAAX2q>QW0P@@fkWNkJ2@@F=zk*Er3Yx@#yKn{AgfHU!!*iBa(n*pQA%jEa9jhWrIt0d~$GkhO5u23S~a0Eg8pW`$SG3LwSM zanJ=|;n&OxuR$`%>2F5o!!W)oMWOWNb>LyHrM#&Gby0^>5?t9`P>h%}AAqX509N&Z zS>XdH-@{csfvCCwRdu2l)Kq#85rmfD2S9nM7wYyKUm#$mM_9T9nGAOqlP2?rUPg1~383w8njlK?A1Dt0fzl-? zgM%~O4bc8K1(4VU5KEK!LO-M8e{ihd=x0=H5LNgHa;ajYr~;Ehqo_Ia47k=8APr!# z2mOo+4Wgj_(}RA-7R4rz+W(*|1hQJ8Nz|PA28gA}e4&p~u^FuJMjxYM3rJmys5$cs zkgP(ps5$e4K4>T{0DJBev%)8+=RkpglIa@yKq&{LQhHs6CH zx>;1AMO2|nRH0iGx=>|8Kciv~*pM0hjEcP=LwZ40fV3*~fUJeH4#2|d0645ZGb?;% zRsbo6X1Wbv;V;YzUqCX*>EZw==r+K#FX#uQqp!>gUqMQd)olQ&ThI@Uk`7R9q4cbmdpiK7zA_&cNA3%Ak3+nb4U6f|U+Grs_D zm~H3=M+wLjc&3{G5d&#N&U6d9L4oy)S>YEfU4jJQ?gE`Z)D23Pp#86!%nQ0175hMO z*au3NpbQSqbT2@AUll-N4?rwU<_A5Div8eNf6>FJI6+k57s#cG6G2)hg3={i>kp6y z1(4W>9!7-;U_Bpt7+Vx4fzg-M`n1!8G3Kj>yuoD5d@qMK213P{})P?7@4 zDoh3?scvW}Z2Z-$fq;_fCV)J*0i;utc|$j&;#81nQ$@|055Qe`0_;Mt z7>K3Ge4vL>aT?hE6FrQI(?u12gFQC`q;-a)SP(&h~>DT2OPuyyBM<+ zCW|Ue5mlHasxTXt=@#@bD$W5LvZ9AkaW2S^xgaaR4x0nA7S6f=3#$v@u=>NS@P}Ce zq!^m%4uFOKGAsNA$snhT3!tDo0Movq2b7NfF)RE7DMeOy0Hkh14>U?_|)x@IE#G-H?A_dA+4j=J=emb(82;K%s_#F;<*JN&mDl6d!U0+aVf~OrK0A{7r^cUP4wRY zn+p~Lu{4=4bTTR~1KWS2lTmTGs6q?ab1OhvSBRQ3pMYz90n(rV5_{0esIVNY=Rqf9 zi{eU<+GU_D1Xi&Ul&wH4P38%mjEbwk3TJdODy{~pTMa6uK(Y#}M9rBOfLM+jI>9mA z4~o>qq6$ky6;_EVtcGQ}4V{dNYrux==wwt}3o>La$O^E-)_|;qvmSIn!|DMztXf$V zT3Hl8ilLeA0$8|>MWGEOgPa~8fP(G+es3&jo= zg$|HXWOWBRLEBScwaNr=KIvpp=maT6R=1)H)bfI6lmjn7eY!3dg)SC_caS^;%1)rV zBGa7tKn7%_8ltM3Md3S0iQ+m@=xjS!a}SF`4~xP&QP41l&yrm-kYV^Qda>4EgL!7|fX6sCiM z9I6Lg79PkjXMW)Z$z~s>gC=KZuqey`DMVKF!p)rd!*nKyvX1qjIlUP$3&6&Fn9gL* z+_4^15-nKI1e#?BsY0F#+5pm}IFm(TCM;8f1duIRu%5}Bc>~A{4Wz4IQigVyHbHFllL8gMIg5VPKz!LMpTK24GQd|I+Spb$<$O1YH zhQ*BO0?0yzxh!T(SJp#4cmd=x#YHR%i&zxqvp^jg&dJPK)MuHuqdp6MkGibO6j~}9g{ip4v-ldOgq*wDXs*C{c@0LE5TvE z3KA>pm=ssTWmbb_)__a}MdVtz#9FY#IzEYR!)4ZkWj25!autgi(+!Y?3Tr^| zv<@1PH^5Ha$fB^3MPVH@A~&#@F+G7PI006$iA7-(NDXpC-T?XG1Wervu)57G3Y$Sn z;Q`8|$$SE&?gdQU53sr|EDBpdN|DvQ0IB-{Q`Z2Fpsg$lTR}>Z)%^geYkk6iAe9fGL}?78H@&AfnKS+yIKm8Q>i^8`gp&5~K<_A`gIcDQ;&`*ba?I zkUErz+_09(ocRFA3=O6OYnc>xfWm$~$g~~cu-^%Zm9R)`@k~$K@qu=#f<3z$U=qPpm%raa1f*hIU*l`{BQxL?gLoeAr^&0Af@mC1+6v&srvv^*8q;l!z>DiK}wO; zeE_LzfJNj2a0DG;Q8)rpima{y6p;&HF?0c}?kJ1GQBeH=S2qa~Wfx$|7OVk9$TO1{{$fRmc%}0;Egv7>mL&Xhee4p+w}4HK4^%ATu4JPr!` z?I6>RgTwv=Bv#fiDV~JOoCM390+|Ym$kT9%(_o1+U@ceHFe#pe%bW$voC8JV2^KS^ z7a$82PJ!ZS4KyNOfSr1tMd3V)!Wn2po?|g%`T|pM1FYZzi^2tv8svz40rJBQn7SWe zbr)F_E`pT80~9nl08;k@rmh1V;g?txE`gLHtNQ^`*8z+01KaK!vIH(=55!!ZH02aQ+qHv8xVI#O5aTVN- zXqbUC%MMm^9h9a(S~o!(FA%LaSQKusC~N|2y$;s80HPJ#(txPB3GxL<>t<-{1tNTl zMd22U!e+46n_#U6AX>rAmlfb9!fh6X+aP67kAV$^$lPI3xWl4w6P7f=%@>HwT^5DA zAXh>4fSWH6nR_e>_gECJ!}NfgFA$mgEDHBQfdJJ5ZoWWd9AoZ2;+SSV2fb39T@fsZSV7)I+f=aQkEDB#) z&=&@QWxlZ}d}Bdh7zCF2&Z6+01$|)mifn`@DC~ZLaHjT z%zqYz|19X6!@)8QtO^aRi2M$zs=zXhtO|{+=$pgAGEJ-sO{`c7$Q53YqG!T$kPn(! z6`ENUexpS43r}xnm9}A1#;zPD&tC;De4EAYvem$b*gtKn5wcvMRK)LLCSaK(=?m z9MEQPkhz-72j(y;ZUK#9Z2^tTfesf04?1>$Ss<|n5KEJ}VIHI6R`94-$2>;GZK4XT zAeSm`2Wj078kYkp18bcDW`V>e%wts82G%oS9%GB*4v^Zdpdm!iVTTGkK*Ne4mL_w< zTt>y6V1*rX85MVd)a?Qdsexn_c7le~=0Zd10?03lZLA7yP|tw^0i_YW0pz(05YJth z!>G6$WZG`f`~uirph3qMU~|D@AeJWcgSm`~d%*U;n9HcRS5%=5?74j)t@}W;fN-rp zKpGT4Vjt!*D(nU8`7oEUMR7k!?H0a4uIxYKrF`tbHOn@9~7xOMHP05DjX11I0zebJTRA0@etUM6LT3A4}%Oj46*|3 zutOkg;j9mHpkeg^99HeD3hk^4AjQx@#|L2H4pxN@kPLFV_y7vJ2Qcjy=7Q?cPF96Z zkWyrI4?yZJz@lWwJdnCBR)sE*Qe<@(=7RQt&x1Or0h~{|SrxiLN|Dv=mL3yeNA_y(P4}kL2 zOsJb?fEDzjD7cVr&O8HrNa%){;3xr^0?%{@AYvem$eHc}$RNc&R)s!Tx&#Tp-36*x zXM*;DgUr=rzA%$f@dzjmkATwUY|sX6P`aD}W`V>efLNN$6J|3i9tFqxjM@JY!et^vdi-B00%pYbkDxLw`|6>-T;#pCJez51xfwZ0j%>u%;c7RzR zv4+`<3TMH38bF>q4^n#ul!ZV>Dx3#pD-cVQdBZG5#S37CJ7zH|UIeMT2r8vOvI-YK z^D7{hu!Wx5Nq7!@yp4Y@IkQSma!kjo$|z|Oe@vKG#2 zfQ41VEKqKkz^X8TRRN?Jn(01(gK#3N!bFe^a=K`k1=VR0Oyk_tO`>=N|Du_m<^hFf@YKtU}aNT6{fN( ze23&TP#;WiSA_Y?QAHrVa~h)d8uLVVd)Yifb7Ww z(?HENkhz-752i6HUIE476;Qeaoe~VmIbaq@YypU+$-H0&qvBO?tgo2CsCZ3OVLHgA ziq}C}uY=MhNEuk`4loNOwqXXN!Zom-4Ko;96mNjkUIk?#&|$?2H$d46#L{G5Fr88H zCRpK$>5PiEKFfO-xT2q>BE0?2b8AfEd$jZyJ7 z$h6y_`W2KB!7l6oyAUh}Vreor%wSZ!1Gc|o2BYF#QH2>`&)oxQy$6~F1Stb+odITn z#3syORJaS)GXdne`yjP3sKP^7rh71*QSlMjkQdV#6(55Pc?_}w?3_m+YvHU3 zu&|mi9hB*2vMS7ERRAf5X1WHj@GMq^Ss)qYbTMH%sK$Y5{{U7un^j>pNGYEm% zRxlq$!G;WT<{hBrdX5)B$9Xe3f=q#Dx(5(3kVfQ8_W@*(;sREM1+a7p5q+^M}cdicdgs_ym+LL1`77xORXJ0apNtZ2++}nKw*jRD24K^&L|g6`zSJEC9Jw z@i|EAb5ObjDFbUg0cL^34oqcKcm~#UU@Bva;tP=4r=TnZI(b~-1t?pASencmrZ6hL z1S{Mzg;DVpNZl(?k^;#pyaXkwDbP@Am;#F7g{%q-p`HT;0!pTP0PpCsFa@0H&VwTLrKrLyQH2kp3Ljya?!y#D#ZO>EeoSFh{0uVWGsp_Cb3TErg|imG z!fF9HtQN5NbGXJ%Gi~gxMeu9AQ;B0!k%tb(&o#R_U z5&2>(I3hu+kR$R3NSESKR)wR`hyUO}?HGm`N605=`kWyrIJ3#6hU@^1-tnMIj4IP9-MVr46n;&r&pb+F70kg1@Eya|`M36{78 z*3z?;N%1yZ<~CU74k#k8v6?Y009mMT0~AkNp%J+N?9{ug3U^r*Zb2jR4yzf{8km9! zUefS|>;g>LgUz6bd;}4NM&t!h zL_XLIipU?E!4U~kg&dI`py*e8%&PDh8j&D%C=vN%Gib>XC^2X-b!=f$d;$vl?;z8j zfW!VNBv!UCDL#YCJOj%-2bl_r$QN*l7hs8(U@cR&Fe$!*%e(^1yaq+&Q&uyk6(9>0 zo`d3P3p65EfSvk=RpAY*!b@mGzGgLJ+5%HB1FYaJtHN858svyv0ZNQBVCr^&)xBd? zcn4An4^Spe<{2P$J7DTgfYrTcRd^3limYx2NZkpTx&z<{`oOC20i+aJ-3gGo1F#rc z04{<*vMPK8mBPsC9)POA1+!pt+F*5`Ksg-Lj`$93yFj#mW>xsis_-4$j`##_M>Nbv zn$rer{Q^o;Agw>3jTea4udE7RSrvYOwSEC>T>#MvZfQW&d;|Fcr1dAX^#T$8&Z_X8 zRpBRC>o>600}!p?=F1E4r05S;g&!bgP>+EPg~>U3IV=rP-_yuDxWm5PJW3OOR_yc3FW>WYIW3OXU z_y=QyEqLJp+BpuHOL+mFulUcZ@ShcZHV7=!z^2f^hCUkvmT6>DXkp~o4o64!V9$4>sCWQU(E#@R zj`v{CgUnH2as(*`P36OOdxKxA-tithrwPeSV9)okDfEC6CESrs5W8N0JrCO2 z-2!vVhj$>)_p&MUvSHcB{ox%nj5=mQxIHy5J)k*)o<0!+mUu!=qu6&)bYuK<@v58i=24>AXI2jzQ6%)|C^gJfZzhwS5i@DAbmA7Ib- zvnlkmDf|a#ba2bP0bc4&7%JP$77SDXR$x+k$IOkzV{lLMBS%%(7z4Sh`xSY`^F!W1_2H926JscZ^U z+0fVIfMuq!DNJKSUy}otna-v#oeh0W4p?Reo5Bn>Y-@6Spd~O^)l4>pnc&!fEU5t} ziWgv+S!@ck*wA-qgJov3Da-~ZUx*$^B?Xq5!=^BY4Sk0;SY|Gp!d!5EhvyLBov;P?E}oRCDGX%b{8F1X#gB6a@=XK}WrTlG20a;Cuu!1wP#P z0U`#{h&11lL7e}l)nPOM~9{3EKc2;@@5zaXuDK_hZ-tv5g#6hLAZRx&F5 z0qeQ2lCeecA4u(Q(BL7+YK4EG0Ywl?llj03M#cYNg(p@pDmI8IFex;MnKR!2$twI8 zHD|uC0vbvaz@A&ormz_5IZz;=cRXdD}1qnQL!DQu3gNW`3Fc=p-s%3`2&dM*su~D!}mdv z`d?I`K}?}dOrc#2x>>YgC8J^o*pQBujEbEgLpniLfSuC;vKG$T01K-P;ILZ4rm%!f z0i+l@+_(TNyp&C0DM$u6y>3_m+Rq5nK4B#&9W7&1SO!vxtZo5F-2{;T!5tm2y5(#N z%Rx$!)lFCl+Mx|o*8t8ZE7%lPfRrMu`vFqd0L>@|z{*y#DXavQNpNM;K`~;^d;qHI z0$9~5HicE7d=FPO52ESR|0amaIMZtwsbLJc1+ZI18 z0Y?eQ6nLgCjyFhW+ z1xlBo%NN0!?gr?VMg@@A1rSS<`NA?r#cpt{-&n?|*dwN}8st*NUXa#aP`ZR`eF4&- z01|t!j8UNntmnZp#umjsklJoBbLI;ms}=e{*$Twc1PLhigB9Lb%BVO2q;3KzNr7Y) z`awx*DKwN8fIYW{O<@hxbD%&#$#e}%K`95MQ$r$snhT1E8SW0Mou;87LjCXH!@YQi`l@14!M1WzZ<;0M!egVEq zwP6uBN>rdzNG6j)o>6t=+9B}f47F3_&KMWA#Ex`b7edBGw^#aW;@ zoCQjkpbQSqbT2@6uquGW9)MVy%nuebD$WMS`isSkigUyiwt!r!I2WXKE+}2Xwf+EU zPymU2Sj?y}2dwAAV#XH5c_6j3L0Jf7wZc45wgRyYoUp|kj1TR@kwaQE@p)-EvSV1(H=*CT7k&0mO1#uoxV}{}(c5 zDa;pBSRkgbOiW=pEYmGm%&52mY{-hmjEXBkhO7ix0dW|}S~%+hEUYeo!)hCw!ZtPq zkYZ@2I{+5m&Ze*(B!iqTE`WmW08IOa#h`SwgH2%vNGYvB$yVw+Vfs`Vvn*pi>9ze6x0&sTP&8Dy$)XIk|n+%E(bLIum z?6d)_Y7d*j9#Bgfu4)!U)dr}l7oa6&3cDeK&`h@gl&4^8$$o$p>_JhmAT8La2Q0>&1_ ztsu3VKv@W^Vk;nHRoDh%|l{h$(CnQ`ip6bQ=~hD((OqvSR_G;!cnuJ3&@}9kv5xEu8gWJ~XTzfWvA(o5FrJ z1(0HBrn>+ZKES4M03?H)E*^k_?gC8vfd!y+bdXKqAV?{)x(gt62VhaM0#sWl9%55C z1X7Bu?!W@j4sBSiG69@V4znp71}Q~Ww_+ivzt4V zvJ*U3@ZvPcPp8=wPJ>iI{RB1>B6EgK;S8I?Nl>DL&t^kp&ax?-1-S{T2kZlg%sDoN zb8HI7VR|6L!C-sNvniYhg#c6!q^Av*xxl7yflc8kOb=uP3oLVyP2nOa$f0^bqkPN< zQp}lOcthF@ALfE4K`*f>TmmUXR`tT$ocY6C=!`_iKG2lQC718J4L*0?3vu*azC74KhQ6X~RAy#Vc$IOpfzGrd?qZ=r2^f z$_ARv-m;HL@fuv_8d&B!$W+jj%MG~14Y0&bu$Ddhm=tfpWp06GZnG&cDO_bUW4Zvc zP~ke88Pk=0P!C=JxlHj6o5CG7g_~@U+3eeFW=wZr3J!o3++|a^3sQqT<#GY!hXXKm z55Vf~u_@dGDMj|{0g$=}Fm)fm>h7~C+y^N|R`&p;?gLES18@XAU{iPiQi`nZ14!Ki zSPV^=2a3ptYzhxSsRXX>0wl^N%!B%K!d_5BK7@!utE&m~n9P|c>;*;SioM{71gS!f z$Q>YEijUY79zi1#qz|VZR(?+GB9oKY_%`UM9t-aG9rI znP(tVK@s^JF7X^J@dB*n$X+JJmvEVvV3}8-he}=@$9wx;vaG5V)nXe#IK@s^4F7XX4@g1z?%pNAiA8?r; zV40twi2TfE#`FMWp~6>CJnex-B60yZg8s27 z`~xXPR@VTE$OW(%x&T)9pH1OEsD6N}I|GTb3ovC1c7r1FKSUH7krzM_xnMUaB6sWt zM#fCdFpBOfy)f1!O8HB3t1Stzd~Zu$C*knH1aMGVNfQ4$vLeP3&e&FF+P5w6L2o zy@6eS_yX+IPIiS(c7--}NYUECZpQQlrr-uxK^MD17f20qM7{v|;Ra0I53ss!c7<+` zQh0!ZCXPVre!$dqfFrzzU7-i06j|L5kh%_7gdYG$P%pbeFGwk}x(-l;AArXYxCriJ zSLkC`cz_a54?tDmg1NBSY_Ph1c7^vKMT&c&ZI=aL;R);t6WA5@g4+@O?4Y(w!#t$f zY_OV%>=UE z3U{a;aJypxD9~4UgLY_71#4jf@6etGV}D~*m=0tAVpNy`WB+4Rmw^N>I2Qhsb(p> zX3SEY1Ij@l1#cO%6z8%l%wboU%MMHXjw@8N6y7stDb9nb`pB52IGOW(a;xd@3My4#q; z0-75J?ag&;mS6PXm(gINs| znG`pG3bwWEW=s=68Wh&Cn=wrRu^cDBtk}q|u#sJ1J+xrkz;4Dg2dv-)%uAct6*hs? zz#DO)M+qXnZTsD4WtI-_3dB}-;|bp_WA>m z8#=&#+5uCyhh1S0DA~f@x(MR+9bjb>VD{~0SJ(?u30KCX$-D#P^$B2W7r@l*V^`P* zQi`l@0?670Aaxo{OC~TW?gyy>dHn#`!)qomDINr~7EEALJOuLkes(ja4Im8)2iVP+ zwt!fU8(>x(W>+}Ou5b|Q^+W7tOnblzR=~V;gk9kXNDZ>rH-Ox*0_>+7Fm*@S6^?>( zKisYJAYQ)#R`#GDnvjpND;xuq9@2;%SiAPq3RYHGur1aFX4OsRhJxY=C+F47V~ayTUn8-avNi3s5Fr0nQj; zb)drLJSY``>b3)7paK-69aK_XU{|=nu5bWcx19&qZ5@zn)0rH>T0v#rMNlk&v>t?O z{mhu9c!^!%61&1du-1!Utt(Kpf{NbDAYXvA9)fEHmD^X?6|S%=90F^-4Ay!AruBsi zq-ej&u5cBk3g$0IkOaucYwQZw*cC2ABA5YmyuM170?0kr*%hvXoP?qSQFMR;>lVAhEp~RoBR)9kLg^I#lkc&YQ zpoL)|M?%>PLGFUG7lWJvWiJKU4rMO~SqNpX1la*)gR9aPD&|Z#1VOQ;1__%xuqxpy zbC%*=c7;3a3U}dEg5wG`NVRtlrs^Vdmg0SOg?sD@_fb`WLhS)e)j8%Y#fR()57-qR zqN)M~;Uk!;Q_NY4kJ%L-u`4`ARRs#qCoomVnX?q1vMW4cS9pr53KY1{V5$x?XDL2s zS9r#*@ElbYD5PJ&R2^W>Qhdp-@Pb|8C0rG#^q(PQ&b&emRP8;4R(r456<&c9g2E2G z)`m%wd4-xe^N)w1vVTS^v=n&FuJ9V95?R@ghm7XTGg?8VzzUeUH|z>;KuVF-&1hvZ zXI=qTw*#t9;SD^QfKvlV#g0}c$1|V{?%slYaRH=~$q}sKExW+#Fa;*Z2Ou$!Ki{z{ zyn`!hWI0`O>U8;AuGy8vQoGGAz8Qal14 z3%$|Cqh`0 zLmQLgDX{h(ZA^-%LE2A)#<@Y76i$K0zTvC}5X-RvWDqEn-m@#bXIB6z2IcqfMk%PsG$v1P=f-^@c>NwM|OpeAf?FaK7a!E0N9$2c4*T0#IEoOq!d}*0g!ne zpipys0ZVD0*%dy6lp?F^Xa}`MAW7{JG(~=4SNHXlz0GS#s!cWn#>oPnH0}};_eJ6iGTtcJSlRb z1(Xs&Vh2DhP38kFOp0g0v3;V2N%5SR!gr9f6wiaSo(D}}z_s20X;1)(U1(uaI0x2q zp@peM@d8NgSMP#paq-~ z_k;X+QB2_yEF~^zVN$#d*1n>JN%0Cu`xVeMCrFdRWzf_oob>_ZYsU{D6F{N#gI(bV zy8=itC?!6C3IAkQ_z99hj+zgkKzjhzz5(P8koI5f3co-~k<~o_soMau(D4UM-EVe< z-yo&P>Nd21HoJh;b-+^CA9jU5Af?Faet^_3eSNIQ7imdKO1869_5u|PgRGq?qh%L~R z*wF||t6&uyKq{CV!3tq1@c>8+6i5vm3Jn|zOpahhXen_6$czIZGc=hGG%_h(1;yP} zP!a(JG&m*hXac1~kk|$gOOts+6O-aKaBS~rVp6;=rqI9vYLnamX}tj|fI!N?T2Fvk zAh82YObXY*dJZ%(wJ6>Msl5g&qCi$F+yvZAjKr+Zt^8gfR7r@#VfZPGn-prxU3{r}$?gB{N z0+5A{FJS6gI22kyN|DtqXabdWV09~CDXf)4p%tVQS=|eex)tCgb_1rajYFZ0L*Wi0 zVcdf-Z-AA(_y;XI+c^~4K`N1ry8%jxFaCkb&L1#!9UKZBAf?FaUi<^C+yblX_zy8p zp#v19pu6Fj6z_v$dqo42;sY^-PLQ({AA+<#1QkFa zWnis4z$}p1h6W~u2VgxL8kkxXAA!`~2Nh8us}&xBbb(l!%n$xEDn14)eDR-A@d-%X z6Hqz@$tpYsISj;dYyf3;Cdc_8KRy;ycmhj_4Gm0+Pr=$d8kiKHfwVsZP49vo@)R@y z4rg5e8*~9=0w|QaI25`#6hMkWDe(YIxSK0>~X8?L8a{Js_pX z>JEU^O#oTwcmt-cmqVc!q!d}*1W=)K1FY@@EQR%PDD;7pBCERrQg;HJ#8$v+@qP}4 zeh!7tkmLs~qF#U+f-AtaI9MI1!8(CM;SWfW;&X5(2BaO-+MURuFp)#yIk*!ufdka` z>v#lS{>|hF)(UDjPXc8MP+9W=t`*eip3I>znM2_PSnDLP))gpPLH(R5AYXvAzJzN9 zb)BYiC`{#0cnQ`z1+4W1OzR8isMs_Pg=rvFF#kJ(BtS+^=TMl=p)duMd0J(oAhr&z_g-NJ7K%Sq)p)d>Ne-s^{z?#jWFq=bR0;&#BEYIOkm;(xM zm<~{YtpJ7g3sr@?>hOu9= zE6jnh!TJ1!syWjPAyC&z9ny803(C!)5yRO`S&H*G6y|a$%;SLdu^m^aL%L4$VXEda zWhpM;P?*o5umDvRDAX3hR4ru6Qe4ELu#iJx5vnRs5H5zPTEdj2xP(JtF^9quR8^qx zTnbaQoGD9j8Hd7B4uxf?sz8Ce9Hwd&Xkd^-VL6Aw3RG2~kX{K>wU#MMaTSNcN)Clp za8;nL(+yD9NgdR6x(6v86<2d8tOhAWi5zuv<{$UKh3y}xvNaqEYd|WImHoH}Ds2CN z)OGxYs$0vUuok2gMcp4zgZ3{YXu@R5Uq;1s93WQ5Uq;3CU{=pxM#T*veV{>=jT{P0 z3hOw`m}Y=9D6Ho&W10hEInIDtv57-r6NkbE4#-r zkI(oEIza&Jry2L5Zr#G6umu#}aJMc8ry%AT_d#Ad0rUD+4u!2Cm2hRCHu`-=bLJCZ zuit>F+s2`=4WtxV-3gG_Z-CTkFg^LhsJI>M;TwM#6?cGHcm6Oc?gZ%rd3_hi>)ScZ zm|lQ1DD2=cV|oK(Ilh2dv719-H;2MbsMmLKm@$0;E9iiEX%C0O9*`PjufG7fp#$uv z9WZr!ITZGSk}ce=iy>a$0ai8xX5T&zg?%8EaAlxIA;{}9z}BvSsoT$?upgupS=|hf zwJSjCG?=#hVN^T-_V9{7jEV=rtTlfa6%T>*fxLbg<6aK-?u0~IzGK&c2+ z0lflOKp^d)lIkLd!bJ{+SKtch0=NR|xDTuLKx#l`-X%~hfV94bYXudUmpK$Jb11w9 zYrO>4x&lQjsE)b<@&!oi8@N_bwRe?6;VOs18?e?ZV67)$T3wxP+<$cCppy~h>#&@Pj7NK=mHdB$_3pO1ulMF8H$)K$B?q zI27)3DBOcr7mh0|Aywjim@3dD+5--S`y2`nP*s6K^dU?YXcFxahr&Y+g-58WK*9SM zrV2EP_Jl*>F^9qvR8^p`ehO0snnZiXq41PL;TftbP{2QjsRB)+z2H!I&Y|!ERTU@} zUcyv?CedDTD7@rQcm-Dlsu^zZn=`MlgdE4rpJm2$1hhZTvEdf99C*#4@EW8G6v*(Q zMN4z$29Pq)MZq9FQ^0e(4WFTU-oWexIp8ga!W#~SwQ+G2DZGIvG*EhK_zYS~2v)HJrs5rniWwjkJHRSFd;%|}1RKTV2vQH) z(D@eRSg=$x6L?!6)R#;jK7nlKhxkze6yoneN+-ZV<^zYq2TvTcE zasaIE0#u#CM~H5aL7=f;kkc=KRXl*H_>7|B07%6Hu!OsNs3G7&q z6f{_v7!*MM*JPUU30mlZyaGzpUqDJ1z=Gu~hr(A-@`t9gs_ysCq;4Z!ov3LVGSblup$@BuW zCmdY$SV0Qie;}nGe}VcT|2Y)?aVY$UTjuz}3R37ca6l~LK~+-JE|&B z5zqls1?q=%aw>FiDs-Z%0>wiYOckgf(#@&R#i`H@R|P7!ZU~q&zpw)J&a5G!(!;6H z!-*8Zjw`Go0ny8;(95X+jc!mlf+RqG@8eYH<3!3SU>zXu_H!!qb1Fdd4NM2fhZ8sz zCU7DZIbaLBEr4J;K>nD-sW6EXRCYr)=YnfkP}#l08gz5@V+P1-ipiV` zlRFRaX&CnSSTfrqJ@!l^I?WE`@p71rj=3qY!VY=RU93X@TSX+p9&^N&rS z(xPKCRKXM!1q+hRnL9Rv6f6KKU~&W-w1WvU)wBU32G+Y1Ds})Q2J+ifPKBwUXaZ{l zrCKCEF4zn@HX3BECi8*KjEZkTLqcysLy}uTN6UhypE|%SkXQqVrODi|l~M5>WDsd9 zqvCrpg{dHyDt-WI{Qw$G0x1IzaLoX-Kw=ZNGAg_W>zS~Xu|@GCNbNh&!08r{H6KBP zsUVgnbHf%!#ZO>`9a|U`KZDeL1`YayWEDPv2K_-S#|tpeP2*IU2J##@1kgOU0pz(0 z5YJuM%&7PUWZD zTm#ZRlT%?PNGYl06_RijXK^ab0x3mScVP?YxDJrR92;QyWHzV5Y>-l9 zbvw3#HhzOL$^n?NIh+b}K!p@sSqCUa%$W~>R9%3nn#-v$7nJMaswP5IT>z=-*Z^^w z!W@Vov^qEd%2OLad1?ks!CVvt7n04HXMh!K04ZQ{1RDg)bO#_}V7;(RcL5{@3aojY z3iH6}5-I?97pS7z06I1rWUeOjg$;~~e?f8h7nCkRB>*JnfLS212_Tjx^Mp-|ivPf| zK4TN3;(sxPc_5c6Hi(0EqKlg|-vB8CYh3|mHHe!tFWAJW@E@#a!6wEQ#YT|Yf1oV1 z5tQi~#m$*#fLNN$6E-p`Hi?5uvl$y16`Mion#IkTSAb*{nm{IjSdI^%eo>sysW2bp zIdBM|Wx4|(&pm*6?!g8|#TJlhE#l_PAHePcWx5|A(-gpBAeJWchmDMitzi3qY-Chy z6IYlI_FOwiYrD8P^9#7v4loNO*070Dp$)930pz(3klI#pbLI^oBNaNt&6#(ASehUK z#ZIuo9UB=HyFlu?#LbycfMgXq#m$)yfLM+fHi9$VdXOKR#1)#w6*|Qgy2PQo+b?Wn zRO|*Da$_T-Vh_lW9*`Aa=X8Utg|iyK#x;P910{q7oC*s#6+ntXneGF~c#!ZyPKAXa z8RT@)uo1K{4-|Bc4`A9CaVjhVDMeQI0UX3&YfeC`6UD`x3X4HXk<~o_nRf!@FvktB ze6oa7VF^envbqzSK(id6jPe1dY$>P0Qcx=cuB-(VBj(H>K&l#^KwjBz~ndsM8PuM1rUeH z5v&)M=^lW@K!LiPQ(-wcT|x!m?gHHdvKDkqFUVX?<_BvT6?;K(*b7RR>p{5zlrC3* zSs<|mAeJWcg7u7wec)JMv7S+}UtD21$fb%CKw2k&(j`b4IMeL_vp`}S)-x*fgY|4! z&)A|k5u~;cl!exTteFVPRv?xp^MZAZij%+!SFB@HoD5Po8I+_zvI>(xNeaYr`~dZf z;tEcM6(G-nLjWz)T>yFR1H^M5)-ozi0hu;M+?=@ql$yXU>;StEECym}GB>PeRGbR7 zzhgb4;xuuE6=2Uz2Wg!yZqEDzqztTe2ABmBo3NfyVH#M^1d!)ufYeR}Wg(DL6=s04 z6^NzDd|(};;!Lo@6YCfiXMxns0+muAS%sP6=FAsBEXN1yz?p78$d8l66()--%oJCc z1d zaVo3=$snhT3F|;L4p{pKn7Y-R3add%k<~ST)O`S}yRjaUvK7~GDy#u1MOOC#r0xdD zVU7=AxoIt@!dj40WOX;zgVG}?J1u}^r*)hP>o^tu!TSgb4WJk?XI=oxP8(pV)^jSX z2eqN$hV?>JZ2+lSu?pfeg>?`?Xr@~L%2S{tLL7I%6s$*4upz~qc?Vd*1&{(JN3cP# zO!ojH2G$G9bRR%sps?P+sjvZ@E};T&cY*q$t3V|h$Xre4533jz=YryJE+}1s(keJ{ z?N|fK7a*|>AeJWchBb_e^T4sbV-2I?d~t;hAeSmG0BKzSN|zvIV67*>ERfiNHH-@L z!Fmp?VQf)c2vR!_l!aD<3||P!Rv?xp^M=)oii^MscdTYqTntjT7?h+yvI>hpNeaYr zY*-BmM#YVs3L8P51BU=wrh5SLTmwkGCUe7TM#Uu{)0T*vGf#kfZU)$eU@;I&lX=1# zM#ZII`)90SR9q&muo3LJP4VDv-KWpi&AXtFThsocRHW<@f>QIVQ*Rp!ixOuCQ2K zVWqgjDp;obu$obEHQ10Js~Hv7fDBm!vI6X!)gWu(tOa1>7J!TcC4^0!3Y$0;K#D<` zZURhrGpE94kPLFVSg;zj;T5dCVGT5>w{R+K0VzdRHvy!s0c4@$3z)jCoC;e(N|Dty ztN~5>fYnWa<&$lk3fn+Rk=4Bbsha@GC#*&d3fn;qQDkKe$>z)lk`$O6!Ky$V z#~q+*6EtMKRvab_>S*rdRM^R>uvQ$j(RBwWr~$Ph8N`O_1a(q(f$}~`=Q_AfP^We` zr^0Sdg>_(^yTCdhAnODTtLy=J0Hkw0TqkIRWG|<}UQUJeV4ZuwIwzz+>|6mIc-Y6O zun(jN<|Rjv1jxkwoC^Cn750FV9At7BBmr{G0ZxSjAP1r70J;7kr@}!_gkUGq%aF|nJ2dWNG@;Jh&a0C?AFdd-KI*??}yaF^juwgQE)zMK-g`*&a z$f{OYnKN&g3|e%wVl_mW!cn;SAY(R61})iK4N`Fcq=Ly2tnf9oCwu`U26DnNPK9Hj z+zeKPmYWZ(1|3xlGDCyu!fGbP;~<6mK{}6f3iK2zp5O${WnNj$q<9i8a}q3b3S=s1 zg6A|`;xt&|3|PyZ)l7Clh5H~i$PxJiWl;UP#VvbqjX zgwFu0I{=HIN1O_eKuVF-%>b!80FI##Fm;bP6&{0%2e`U}kSO~AR<>g$G$J2EM4=J+ z0ThutR)Qk(0!RguBUm9UA|HUnK%w)5Q{f3HNWqHGBJ#pYCUfQoATuaGEjofE9cIxd`N!cbp3EKx&X9vH=u9A3%O^ zoB%WEJ*UEZkWzSng3jIo`E>%=yah0IA2=00fRrMun*cIz0a)DwSOk6KRQL!|imYw{ zNZkW)3{98nH3MATen^x}m;#EX11liP6h1*jp%FP@3TT`23XqB$AQeoG zV1=-Vd;t;zdHyq}!e>yBf)$}fRCxQ{g8xB7bw5F--w0_yKYe$S;3675;+MAV*{eD1v@~{NOkPX3#%Qg?}KW@Bjr( zF@XF!18m+3n7aR*3jaY$k=4xrnYRM0t^pQ74O|KhTnhhD!hZ!wT?06V9!!G7kYXd3 zLL-;LWfXM_KpF1ABv3qo)q$$wCN70XAVrEBKn)16FsSNo=2B?pQrG})Ks0fI>dym{ z!8>f39KmWp^?nPN!bh;yjc~1?c0wzcLMxZTMzGcvu+|4CT0xDBHjpns&6Z7Yt)OO0 zJC{N`m%=8n);6%#hAB{6UqEN6JGc}&K&oKjHvAZhfARc%+ z6m6;SpF^Potb>U`p^;Oe6UJ`lROo`STR9cFVeEEJg&r8YlT)D=#_r}+=!3Dra}O^p z&6#cpfJRaHvlO;6XDRk`fwn0r3uF(nB|C0{W=Fy5I=(^7R+xce z(1Wj_g>2tIw$Fg6n1!O^2S~*Xu!;*HyOI9EELi4nDa-+dJ>11pAr_wi2g__OGp0EZr-Q5oCD6Gb?Vw-* zZONL)r7)LEVICK}?3xW>c7XLPfa#gfr7$0458M*aaUGywSpZhI0jf@6F2rtVWzYfg z^aiks127fyQB*7dsW<>u@#714YzJ%ox&oB-5`UQG?_Pi0o|+(R`CL+ zVhM_h6Cf2Yz$zAiR4_S$jbd^HsRsqiVvu9OQixyy`CpT10dlZ_w)rguDSZJ8mStQD z%Rr?8+{F_i7QX-o%Tg{grZ?avAvd6lMiiHWw1a{Lw6Smnm%?%`g%yyn0QqJqgn0w3 z=L1a7N-l+!Aba4JfSR75VEF)6*8uVoXqU`#h}|HAKmi9@kkSD5^aPlSl_)AcfK*HX zt2hC&i^&me6q6%JJt$aKfE){!LIexQ|C&rEK0{N>3R}p$@+vNcRa~G|P0-m*N00=l z@>tEKu$l|BkO^4=RC%o7Qdq+UTDycS0V)&Maw)9k0xefUmH?HB>$nuwae-DSAxnTN zkM&#%>$yOSl8_}piEsm#!UitTIwYtBsPX`>L$U=G=TN6_V9#}~GcDe+BQ z3Y)kTmcqjfECF)*W-f)z;N*;~1LX8ATnbyb6c(WB06Bdtm%>(Xxqz$#pX}gL*a7k*a?)5~YtB3&5i}(ZQ?-*zVJFBqWK}P0 z&6yW~RPERYErWN!9RUia35n*+JNALH^a+@PohS+xB$_jy04sO^Qo!U0HV8Im`2ivZ z)(ac6Y}gO6NpTmK!Y)wK0&4^%Eoi8K?0v8gG$6d65yWoTT=Gz7L8G^}?JG?)mQ zC^&Hd!~%&O0I@Wg4;)}r+yWjnJ8^(fajUq(E|5zVw}G^70}boJwcY?}PymTtIKZf| z6|CpN0mc@^?I5*VKqHVKs};6`MkPTkP38mp85MVc6`t77sJIiPZYO9&4kW9v12iHB zVmVHLd2TnC!fue~z#)Lm+x!JgX-(z+Kki3r!a1EfI#B(~uIqrx7ro(&++?E|UZ4H|(2S*@@S zG%5*VX)-_9T`tnkHtM#Tdlbq7F$ydYVH{h;X?5X-RvbT|l;<9$%1?hselDXy?z zT;Tw0%(CGCqvAoZAsq)86%T<7IRvr-?3{xjYvHU7VB!a-0`1Xs2m6eH%$2SBPWz*HULQaA+4 z^>9_&AgV5aRGruj$qEVwA%f5{`v53U?FMDK8!!cjP!wE9G-tj6R`3C&fXNYT5G>O* z>;c#LV7;(RHvuFD3arCi3Wvez5~LA5UG4@A2=4)Bx(Rz26%T{r@GvM{f-*RGwExCl zP^JTkT>!B(nJ?^RR6GKX^&5K`6_1K590s{m@fb+!F;KdMYkdLIpa2qku$NKcC|J*f zy^Jl2$3be3fU*$CYK7yVYz1OzGGExksCWXb@WviS#gia)CqYRHB&%=&l%zl`#|1FY z9pO?q0`eR<1kgO!um_ZKKg>#^61!8G3 zf7rvQcpj|q#~wz-3m|nDK&2Ger1PNZ84$~H!d`G}z6ZtE32}v!;tJ=*6)wOs-Gsf2 ziWk9#%-GAQcnM_4C6E;$tqK=G*1}l_K-M}QfQ8jjE`_693LwRxOt%3he2h!s7)S=5 zUO}_AprG3T*1iDb8c;eq&ZTf1q!d}*29UZ1APXHkKxG6--3cy*6CkC?>K5z;HS9rQ z=ePluPfl_voCGOFR@VV4CpUmH$_JRTQ(OwCKrIHivbCTXF=ze&Qq=&PPB_h_a2ixO z!&Pm8sA>RBC*0Tp&2*|#{BDz0z_2S|egNbJKdMun?jJs);4 zwkTc)sl5WqLLjRZu7k1_h^5K=U?-#E4Y0x&I~f&kg4EpvB`J`s!VOT80eb4 zmP_F*$aCNjK+AL!K%UzGQm@IpVJD;FEs$xqK=mu!g(r4_JO>s7u{4|#{B4YvQp zE=I*W;tFTMp1TXudKWZ_2-kW8q(K2Bc3~Hz!X2=l3n0(k1F5|Y%0gfj_dwYS#L{GL z*u|)LAFQxr7o*|>kh%w;QVJxia39pZ0I?hw>;lK|e^5%eA+B&!T;aaB!UI^QTd<2! z@gdld6}uP}AAt;c1hN9`u!kUP;j9ZFzdK%lh1EGOg>zgAAjP0ecK{}Qo=f38NCr7w zTmS{#0kHNBAlHD>(FHDr3m~P)>JEU^Z2-G^2B?exsk_Lfa1o>wS>1+Rp!MY-hdDlg z<)%wq3YS1ik=4xrRRRw{*=YeRJ6+~dxD0C8!3(bnrAv_5 z2M|k>`NMWb#V6oc|FNA>@u|4NRgg;+pMkVK1Eov2)($WWB-XHlQQ;|APs0wz7RBcv zwNF4<2xPUwb5OPdu{4=KY-3b>0ao~98>8Y&kh+(kBn7fs;RPs3fmn_Qpng%j#-(r# zfO^{M#br(SD4uD;~0#rtT)ZOAzxCK&*tnR>e(1sC^!yG5T z^2u#3h1(#d$m&+?0JXe88RftOXrJy5m%<%TLljwAL!vqJfdtUpH%Jwz<9HWTZGy&m zKZC}3!J0uG&3jx5_qY^3gU5OAg2#C`B!b7j9KlLJoz(lFybsd(1+Ej+seQnu@PJF< z3s~oUu+9g_IzfH;haeAtbbf{F1dS~};!=3TrSKK3^C4L0gd~WaFKi&A1CO~B9)lFY zyyOUy0GarNOW_HZ!b4D!gG`BoBtWit%BAoWzyaFjiR`tTh zoO#1E&}jdQO%P=Yui)l`jM*>^G(x=zq@n?IGbfWHSRriQW&%hIB;3a>%A8LS8` zH#dOp`JAvBd;s8t%}k1KKnnkZ?0dr{&|9eZmJ2i`K4mkL;ybv^JFv`qkg1?~n-6e_ z4`7LpU@dbtGbw(8%X|XMeCASMQh3W{#JGrvedAL222zR~pbJ2LJpfjB0jBOd zm%?|DQe<@pKMnrPEda;R1(>>@TnaxyX#}qB1tiKYfR%mN z2#v^}5K(A7bpaHSA2xy_vI7+KOpaiMu!x)i5(7o#FD`{&pdbY+LW{_bO`t?I4}M!D0Ug5-XdS6#v3y{(@!xflLKOw75X*4~$U=})o4FO5xfL3?AraZcZN_v2tY8I9 zK?}D+3rG!eMD76jVFg&-37EQ8ZiQBmQh0!Zc7%b{odB!50aMq;tN>a;I=B^{BI4;8g!uui?8gRZM0Ri^8}tDbkv}$o zB60#Ks+kneT&4#s(+e^c6p?*!i9WDIKUm9}jZBIY;4%}yG7~`&+0AXnbO2NYhn9Qv(8Ked|A`gK4umP;@0!-Z$ZiOiz zrO4s60i^B%Slt7dx~bd>Q$b3R)m;FodjL@fi=b)T3e!MJk<~o_s{_Z-gz1nNQk>4M zFr8cBF(mdt8SV*$Ibk{|ni^mcIUOY;Crk&Oiwcg&86Xu*j$nnbh+F{@1BK2EZiN}3 zAO$Nzi^v%pKr5C&W@s?2*ubPX6QpoDNasv&*w2E*$_6II*>IWJV3|1}Q$Z0q7cMau zEHMwPWy=O8#rbfV`Cyp^popBsZN_v0WTCG{tY5fk@ z3Th{;;#OG2t?(VJbtPEq0~D>GM#gH8FF;yJU zyJao6!dj3jnExF?5+EbjaVxCjR#**Bm|zKzd)9L+tOq#>MF+_J8@LrVa4W1t)dBMS zMs9_TApfK200q`2ZiP+U3d>P-fRf8*ZiUUD0Eg)S1=xeBpcHMRaF0V_Em#K=gTez2 zg>^9YBMyc2F!mD;g$*$FGY*A~F!l=$g-tN_D-MOtFgAEfe1(lU(+$uj!8KPi|?Qg z5m?0nn2G}^DjGmuSO8XW1LPzoN3c;$jv)0Q&x5y=gQcLJhi@sr@f|vCIRWPRgWL)S zLCF&C$n6ljCV)K;+C{zu?5hbNn?Sxg#I10M8)-W%Yy<2Bu(A~}Wrw*H4ugz_n+qCy z0C|1|Slte&I)y_J>!6;W0P_3}u!<8f6^Bt&tN^Jv0anofQo-a1Hj2p+q#opX@Wyel z6vFe6jpGe4&o6*^{s_0i5l}9MJ8~<;t_5JvgZ7G_0WY!G0bPWlc$8b=C^ypXVc34* z9bjb_V9JhhD;xtE4L2859e_N40j%x;RGq?6h;>lU@AwAVk^xrn0jA;@ii!&$6(7JV zR)AD6If9L1as;Udc^y4SIlOKo!#kZiNfT z=@y~~R5M-VR=CIwOU7_LpsMK-x56dlj1JKQDt|9?D_rJ=<$JguQ2w~Wt#Acf$+*G+ zw3Yilbd2LFx58DBSCLc53wv|s3GtwLYnZBQ+zQt~#v!X(;b6|Z0Ho^2Nl0;|a1|wu zOo%sU{&5miSa+O)D!7KCU_rb&bH^!=f(0N2OpaiKU;~RAAYx#>uz|$`ATf~Nu5&9~ z2Q}`%8bK)xY2JFlDbQAKkhz-72Tn06{sfIv{REA@odH!Nps}|OFbgEs0Agt}H=JQq z`~@D_>Nvxw_*-1zI>@Dpe?VIQfX3cH%D`iiGr%m6*n~5T3cta6CY)hxQTz*1`wKKo zcp7BQU(nDYh^5KgaGFu^A6Q|>X-38WAa(yi!)72^g@2%7GZ4%10?czaxD{@IJO>T| zG|z1SdF}$la~DoADmF-f_Pt7&Gd}>k3*@;MAk!2YKw==4Ci8>SjEapCpti}2(~OEu z5(+oKo@)kaZI&=+z5&e?jCnRkF>6-tAs+E1aw#F zfzynN?O;ProMu$)02$H&vI6X|c96Aj)(4Q^9Y27~0VRZ++zL0j6+ntXY5xIC_!hUq zEszXydi?+jx(8tG7eKB7X}`^_a2uo)S=|GWx(i@e?>GZVxQchU74CqPBCES_8nl%g z1E%0Uih>LA=FBs|3O0ZgFgbz^f@Qh` z5HYY`Sf;xG5(5R+18#)};B*NUfV&H{^y@fiD>ukoP38;785KK0ao7n;gP;-sl5@Z; zkk|weOOtuRNk+vkaIDWb$*9;Zq3{6YQpFyS)*ev01Stb+T>)l+#1@=nROkllS#XlE zMX?v8woAgCdBO=$rt6h3XPyCKX@Ue4`@jlkoM2S!2dV1^B`J`sLLVqefmn_Ypng$& z$gS`YWi-B00%pXoLDozC3 z|KkLs;v@-$hhWc525FrvVb1&luC)Wq0*N)8WK@_0*3$s;+!T=7iJ&Y5GE!j*C|iM8 zn#>zcFe*+3E8KB{QE?hb-82bv<`W=Ug{cze%m+X$#|tOGnQlGEk9`sf{SpdOB^0K? zGTns}jEd92hTJ&8s5k>;$PADbVCPH+Sqo=1fQ@Sa83#%TkGK^caVvlngEHL*kntel z$J`2!K{CkcqTvK+<0B~O93Q~6KjBt*0#b^s?gKc8!PcCBRws&2xfPy*lp?Ep05b0c z$YG8fVEN=3x56`!Qe<@}PJ(8aKpEu&Oxbg8h3BA#16h%}e*md!0FCB@Jn@2C z;RUFIhO4>=QPlt%^Ph19n(3ZH1fiMk11L`&0cE-sFa<>q+^MfOdiZelRI1`jEkAZRn zC|#}qvp`}CKrBt>1;-c_XMtmV#W6<3*%AsbK`vFC1JXJNlrBNaz?p6bm<1BsaEwu5 zHdxPwV~j0|b3tlnfwIt1kTr8b*$TwcWL|KTQE?tv;fkY-it|D0=7W+HNLFDUC`o}> zjvt_YQGCU%@CxKPa0sAfx(guBeSmoG!x2Ws1t8NFNSHG>fKn6Kg&klQg2g~AP3DGU zjEW1v_IDg(R9qyX@Cxj?#UQPVCCr(BfRur?&H%GOViS%rDl7u)nE>+K5|G-3pezJ( zs=^XbwgRyN?vnGIzn*cHnln`EXE4=1b04Zir zU~+7L3BTc1cmt9_P8So7f@&PF_75<1Z@CrTf|MewYXGVH09JS77$jvYzT;MS2U3cx z?gL2O4UoeeAHZ_cdv1mIAf?FaZX5%pM^JWJ0LxAvxD`Ht+V^l}CqOY`&b$DWoi@N! zedJd72x>{gRh@^Z+5l3u;vmFn3LhYX&`h@gl&21YGTjcCf{!Q)HYAuc?*J>f08+r@ z2sQ|o=^jADzYakV_TUfV8dwrAv@9u+|e`7D(*C zVMc}3U_A#8GqxzM1*u&H%0h=ghOY%>D-cVQdBY(_#dTnXI}R}_t_P`G4@y!XS%r0= zBn4tQHXMQkqvB_7h0h?*fkOZ-(>(xrt^uT8leys#qv8gTX&XTGE8KH4z%B%ffmoW% z6Am*fZUoyu<1nM*CJBYlV9#v^Y27Sg&fEdlx&ov@0VKBIFr&gIu$~1V&usyz-3ZD; zAgdL&fU*^crOABZ5ToK&u)-UM7!|jH)NKQmQXpA{t)TV=h~@YJ#@sG+YAK-f$Qi)Ze%jzJZh?tD68)*8sB6@dZrXcW#C6Af?Fa z8V-ZTp1|rR!1BotZiOEprO4`DfYeO@Wt0Q=pnbZZ+zLNI4N+ue4e{p82jW2U)*w}& zp5rf2wFw%G-6;VR26Z)mb1VGjR@f;48uk4J9*o@(4`MSpg3Sl@Q~!YSK1k;-xK2>V z_Aj@>Uv7n6V4Z)!Iv*hG1oevlfjj`xxf`w%GywdcTj4*q!fvq6e_)*x5+HW2fDRHg z@F+C!DEtSdEbs`LBS->dVk3`2BagyAR0)u4ns^kNcohDkN`PG7%%jlEqwoh+0_5`+ z9)%Vjh2N+Wppa_iQE25+_=PF~N*--I3T-?JKj9LfKGuOabLJJGL4pl4p=0vxJPPd~ zg~-vd!rq*D!%WbS{EA%=WeV*)$O<;h1Pvqa0;xCvQo-a1RtTG1xd0LaIiZ6`p@Rn$ ze^3ErGY;$mZRG};p}}-v7n5QqNa22v!cHE6zCy(=9?;z7m0e7V-Ef(1uuKogRM6x~ zFI=J*EYSzna%UHlVn1A_A1pJ0M}bM9i^q)V1IR*!9v(BMFCdoV2atszr%vQin8>5h z#{-$}oWNto^arfq0ZhRp9)(FDHOP}IA3%P109Mxkx{DNK&}1Hk$snc3etiH^*8sXq z)Nuk#-4q^$DIlfD>KZ^ddQJeVTL6oosXPi(K}wO;O#rD|0FI#xFm=;-6sCdF2wYt& zB+4#;m2KDwjmT*bQD{AN0ThuNc7h`E1V{ywBUm9UB5#1iK%Sb;qc9y5q+ms8#qx=r zpsm~>Gc=fP>||1$0aADzq;m#1>}Nt^Whay3EV#@pu*__bsi26Q1DBWsmY56H@?sawpWuo$EiSzQMx!e@Zh z9e_p95*~#mAf?FaW`NWk0LRb=n7XAr3QIx716*A*B+5R3mF?I8jmV`CQD{Vd07c}E z9iWK308+u^2v!J-$Oj-XQ0OeYpsm~>zfJ&~w*aPY6OY0skWyrI6F}xI0IPcdi=fRs3Y$Snk<~2#se1s9 zp$W4fF{HSKM_~)7W`L_}ghbhdS)gb-upOdIVGBeQ8j%xbF_|+T*bY*01Ehk<5v&jv zkuN}EAkS~*QP>I!Qm`Vlh`g~Kw5$kZh6dA%?M#Z>KnkyebZ!HO{dP#KY-dv30hieU zme~n16%>)X;1avQ61%}#zHDbw+yj@{1D4qfipcFeW=tKRP*>OqiYE}uu>%%Q`*;-g z@hI$uM&w=|Go~qE1wTM80{LY>kHUVC8sv!V07cLbkRKdpzzjOTqi_JE6ds_Ut=u5L z&H$UY0;cXDkHSHaQe<^AK<2Fgt80Ko&>Q;c%HGpI2!3;pr+vP_yMEkHSeFg?(VH zC%{@8Wg$53^EJb#Wy;T*{SC^|rab)HAzJdeT=R2`tyaDhkR0w};?IzR#TUfduoPn`hITg;r*zKGO=V0tkPKEO@b~mTO1sEGVZ~ej!x|RC{XpRIF zeiwNZF7lwv{D5RYp>v5x;SvwZ)DK7o6g-!C6fX0i%>965K;d(RN8t(&%H$771{6S7 zc@(blpv?Y&WI!QwjYr`c56bipNCp%{*Lf7K^I)6*ae!{(egm46c3c6QyS~Ara08?T zIY?hPm@}^cDFbif-U7NF!EpiX8ikuY3O9MM?Au-dR<;AC>=uv0Es)X3=B@xuT<-v@ zI{{Uva1$KXu!-vhp!*n3fK}XpsknurVh2dY4X}y{AQeoGV568ELFz#>c;J28U@1`1 zhqP~d!f)8V?Hw@B-{w)c4GLqpBdT0PG6pYdHx=c!aY!;ggf#I#I6%y&x1B( zw}9R9;V0Dd_jwfV^C)2M!T#_Q6h<8&2Z2)H10ID3Afw^tg0`lEJl_E}ZU$7H!hMK! zP|tt(3EE=-RmVdmgmydJWiDGe9JC8FDLjH$2lf06kmnD8Ra}6nc#NWA14zXMu!;_l3MNOeQA~~?^&roK zcUps`5T1wZwC;d;e#If^?C%pEg(o~H3vWO&pz`Y}kHS+Pl$AFi8BqE4j7Q-a56aRT zkPN8&dd{QpoCjs?4M+x5e!bvPc)^3R_y!~cD!*RxD7@rBS$zYN0fqA`9t9ABFW3PU z@!$>DPM{6fAXT6e_%)BhYjA8p=T9A9fMh^Ec*CRch6iQKHAn{JgSR{iZ^6kIMGwda z?|2m6@t|zF2I&F$;60DRdvJb7(F5|q2OfnFJSf|)L3%(w_{gL15nBQI0_1}UccEh) zpLi5LfxL>GP*ymZGf#*G&0oV*edba43^EQ`)e9$c<^>>CJFY@9rotzbq%tAaoO#Dp zP?kIaQ}7u@!Gc(G<`ZBA4?qf-9Ki;`1{gm;#K3xC1B?yVAT}v};ZgVkYUF`6f)W}u zTtKn(;3{bJ_8NF&Ov5!s#r>f1s{NobIB=cpPD!NIlO0BKMFiCwtPsBjRh=fZWy7RAFLwFf}Mg&?aH4ugge zK`c$?1J@W8kAM}PxW=e>6r}DbX!r~yt8fG~d;MT;X0$j39z0GAkUowsXY!FE(BSva0)bp2x4h6Ke)!Icp9wm#WhC7Gaz+m zKqImsS%uS}xfBq~vEe#+RR2CGQjbU|9F1%|pncb1bq%n5@{32|7f30xx*s5Q4WNv2 z0H*9WkHT+InFLq%5)>om%m+ZKF2Gd%;ZgVl%J*mM#b}>I6MzZm!J#|9-6;#1(fMPVi!OxP38+%7!@yoWBtYzM#YN~ z3V%T^RlEe!dI^*+;aXpSG$???9$aBmxCqws;0j}l;$@K93!p3nvRdIXC|iM8n#>n2 zGb&yIE4*=;QSmBB-BnPM0?8^|0VOFA%W(nBbN_f0{((FP4goaJHCzUz9FTfV<^`7- z6|aFzy9Sy|fV*%9*o9y*5KEJJ!xcuw>tOqLTwzqaA))XO?75pDtv5k4esHZPKpGT4 zVh64;D%=3;IRNt9Es)ylpezKkTHzKbTY*@b%pWc@D&7Vw{BfC4@eWAc9Z)F+Ht9BK zE(OGLoNxsko9{vKbwxtqs)WLA357cn&_yE?t}rUz1sgKs3ZvpZkRkU#R)DlB+yz++ zXB_}p>v#YbR{wbv{_`k+6oWF|2AFUIuR;T_!heuI!DGyz!uS9v=r(}0F95j)l#UvC z6&gWG;prN*{sE+J0mwqf4p12ZQrE<*&;(M7tZu;-(7tO>*g0;1<&$P!g=UaaWOW^& za&iMGqkMoVYvEOB;Z=BsaNctW^8-j#187tqWN9m}LMyMrTZj}WQ@w*Q8$e_KH_k&d zT?;R=WgkF!>O3gZy?`lbMN!ZYXU_Zrtf1inI7+|GqFMu=Mf(wj__d#)ZACxXZ862GHUR(raI*`}{5KEK!!9_;J2jEzL zagkB+p@c#k$fb&pKw2Mx(j{E$50C~0kl2Tdj0z9IdOloaY*Bm+Qu_dug+Nv-JO*Ve z5KEK!!39ReCt!syE-)%S1*v-qN>U(Mg(sjS1!6gFfcizTomZh9Is85LiH6?R-?RD1(c_Xbo- zfn*h4gW4A$mg9np;28c7N(oOS6rM^byp~XS1Iu&^E;1^<1sk&BBBSCvkRk6tR)8J$ z7Gy1)bphme#|yBq>flxA;8g%A24%VfFyT&Kg-(zRa=N$x3c3Se?HfR@0i~lZUWG1@ zQe<@pK=m3O2->0F)Drl$NGlmf{r z{06lzKrF`%=fE-C5Ax#|35Bl`3cn>3{=hQbhI5RHf5C?AILD~?4`j$ckQHEu{RLSI zXFUM<-SGj)98f}-$g41sR{^9Ll<6+OgeUPTOajRur;7)mpt}IpegNbekoL*E3X?%f zk=0!QsXG96^$JiK0a7=GS78cBDYCi)=Ro_eK@M}A0Lv#+c@?IDlp?EJaURt20%eo~ zcc6W`X}k*4colv@@(?IHf%YrJnlm4W0Znv*RDpVq(?QiHXi)Y)Xiyfc8PwIB!K*NX zSK&W+Pms1Dx{3zD*^RWXM*xRNN0m2%s^1bb{4O~EMA2MNs#K9V4V+;b%J`u zvq2sJ>1>4S1a+h5@G8vVRcHk3oDJ4FAr52;ljDnn(6NHKyb5zcs$gD+$bih8$Ez@p zS7A0N(SZvGhz!U<^LZ8KgWQCw2jqhVyb23=6=tI80eOERufjr52%zc#h1Vipg+;sy z)6w*RqHi&;!eUU6!}Ndx?Ldq<^9x7N_Uk#&A^Ih}3QIr=kyX8LG-uv02Q)(e;vhts z!Vd)3qa})fYn`qsoTh_uo0vbS=|AUx(i@+ z3t$nniC1A0NGYGCfP$XM5v&jvkuyMIporYUtFQ$Wq+ms85!rDNwEY^C7&Mq>9Ar}53R2h((zz8J z_S+z_a*#=JJ6vWvSY`*vR8U0jgiGuMOY8z`S#pp`aW`CMH&|v5C?dDkfc&rmtnLI%-F{w$ z{UD|A00nKo2B|v%R(AuY?f|dC0gzH;btgdTZh+MtfJM+jUWJ1orO4`TfYcp;#1Kr~ zAzp<;pdtdUZUH39K7f_|*bj}!Ll9ADM1BB8dpLRdsD0EvM@=P<9r zVNj5Q6`@7sgae@M*Pz6p!L;B2lj0GO!hVp>BjB(<3W=2iOp3?gGRMF&$3dooBJu=W z;sjXYBv{Lu15Api;4-JcGN(Zid6d_T=>W(=h2x-j0V`#!$NDL`nEwqJuIat25RlOtFmEFxEc#6Y2QiC5tgC`iGI&?0iie$Xl-kQo|GEA}%f zUIre!yqy{-6Pk{We z1FY@_Ox;~xg}Wf7@Bjr(9D&r`0IPceQ+JP7;T}jSvbq}}buYl`8ekE0pI6~NNGYPv+1=89K*9vMYJmFP%!mH2>*7_K%^#O`jP)p+} z$QK~3EpV-%*2^ zEw92`P`JbNfWqy;Y*4~>1nt6p4%PzMh5Z7?e#D{h62^YQq3{aEe#W8j8peLXq3{OA ze#N2i7RCn8X0LDr?ZQUBcAOW~x&a+1jCAd|24tJyJ5WxT!3()|{5`M2J6?tNys$Lv zxIzQ6-|+)X73kXWkGu*WcojaPsse@TCzvYGwd0?86+ZDQd`49T3gIs>RiJCfzw#=4 z;Z^vGstOd^-(adh*N%VZRrtoM@EuhZDCB>@RDrG?|H-THgID1vswz+{{DP?hT|54p zSK$}0!f&`L(1zz5yyna+G!&Q|cie@HLMi^?Rrmu^h#YY%G|ZWI++_qQ`v+C_msjC0 zNF}ne9d|*Sul|A5oq(zP$E)xUq!dNnKSp!r6CiaOOjrIfD*gwTPAC2`DmL(eT8(G^ zF)B9lDg5IF6=h9)3QP+BdCiz^fHWvH@R>2)0kIr!z^rKIQ)uQ>Xyk*m{hIj9n4W+Y ztblo`g-@Xcqy`qbV2^{`umbF-8!&aPdTk4Wts; zOE*AX?*Lmn1E#K>PoW*86j@yd$l4hobs9`d{xK?cfIU3pAERO?m^J4gqhc3GAIR(7 zAg_1unK7*ZX;A3oGh%^n%nNdwm7S z4JW{U`TvIv3drjd`OKJpfHWvf z;xl9V17bP;fLSq>Phl#b!epq|r|_9EwSc|;0_LS@dH`e{0! z!gM}`cM$)Ay#4{goN*82r4=yyX7DM@0I5Xw(u{kc?ljn4J7DT&@+r&&DMePd0%YwD zkU9;fBYzncXMsJu<1eG)Y%pujUq;0_AblXO&jopX7M~f@36KVb*?eY9XFx2+6EG|0 z@hQyXQZn#w9R(H!l~jxP6c+I*w1VrXg?ykA{={AAS_H5fP?@(F6bm4& zZE&ri0&@wU!V*4(Hn7&kV687uw1O(Jr66B`w6?>wf@;QPd6xzXBmx8r++=JPw z4k_A~^C>I`se<{-@r631G+)7|u!2uvDIbai$UQ6h6jp+qgdzcQ|0+I(ReTDIQFVYk zznV{BHOT)cIzWN7hEHJ)pTa^^9iYN^EuX?#P=Ld9fCB8r9Z;rFS9s5>upF#|i9z8b zufhr#`!lb?N*Mbqufi%A`#Z0~Y8d+`ufiG_`!}z`S{NH#CB9HMX9BhU99L*U!e$+x z!a6?C-5tDH3Rju4U`Yfl4+{15dfnuo)(Q7)>4&id*;;w!q{MAml-1`V2mE<`tTtTIvBbfp6tg z*a}jQ9ONrB&6#&R0HyC6z0eloHa>-IAeG3!39i$Xl-Hl$* zU52!kY?cgW?S0SLq(;yW;z$zy6frneb3g5Cru18-05(D{c2cNdWnG`!EL8)v;Ka*mY zq{0r6vlP2QTDv99nJ<8pfwisxvp`}C`k55EzVrep8 z=wnjs1uMMK$E4T?Qr9PG&in!-tI#WH&inwxa{K`D9Ft=|i0YM8=#vzfQ3rC-hdw67 zez5i*eN2iIK-wornltYJJEULIoOuJBbpUM80gwrxP}<3-u#-;#q!=`Mx&bD=0WTE2$n7TcD3VT3Gk<~TygVrd6)vbW0 zFoiv!Fa-}0g1mJAq+$gmaY0om?&VY13rh2FlQu)N+yE;((G7LjK0bwgAeC@spv6_7 zG6W)a~a}*bh>QtnNfNXe$C(-3zEXh5Zm)KouIuB#??1U=HxDqVhtdcCUZkC zlj0FFI1{9OrldLZ3a~?FNSZS*fU`D$4cY)Q2oy>O`4kTFDS#A%(%=G^ z@F6~hLm(OCsM!Dtv;|=8A7JVZ^C=t#DMePd0Hp2%Slte2F`{^cPvHniDYCi`Aay%H z4s$#KO<@X0Kw%0`gF8UQ%?WVg`TTng3{m#n7ZS93dcc8k=5lEKTMOT}+De!3uYDF)1zpsapU_p&(g>`5=dZSdJG!o?~)+5AyeXNreTl zGMOL?>oynYe2Uy(+s5*u75L=*Wa0f`m39yO> zAQeoGV1=+W_yHsa^7aKjg$tlG2v&ra1|NXT_y96PllenClj34ftSts54p7<#7iKRy zK&cTV_5j4vWPZ@Wq__ke&o4Td6qiaWTmU&saT!SKGEkud*ZKpbK>;N8p@T_bDOk^k z4yG2xh07r2 zGde-0gPCBR$jUE(l+Wk{IpzwV!WEG6j)#m{Sr8^zC#;DJZX$xpkB*0ojvR_t`4p~# zl)tzSQVwQ%?Tdo1Jcr^V zK7~hcc?b(34?3bylj+5MP>%^TWHo~~%dvqmOYt$E!eek4z0fcRhr$!Ez!SbKg(on> zKq0^c3W29!xu<+t3Qy7GG!&nK<(~0nDLg}yQ&4;kmV3^ZrSKe0PD1eoSndU1mck1( zIRV9&V7ZrkSqd-FpeQs8}nh@D{FOEm(zy;ybX4cMuipBo*GlRjdQ6P*8ji zR`DL9V!food$@}AU=q_?K=C73#Yc#Wjgkr<;VL$QRd6VN z0;~80QL#x<;S*fNCXfmRCWY60px9zwq2dI+2xc0Ntf| zU=nzm`^Y3F#c$y8niG?l6u*O6XC^Tz{s6NMOkz^}2^zZj#%IQK0i;9WJ7{DE%=*D+ z#&iSB`Ux7p1Y7@$PvIBH`W0ZWfteRTE8=!z`0K4oTpTa+o z@(Ez&U?x~6vhoIy%O-%lq`@?05|iS8a3IW>#H8534;sUrGl@yD5zLw}iAk}EUx7*C zKc5-X0+0@c27WW9C16$~zZugCFsq5*jA;$n`euHGX3!CwC%_&8GZ%ndf^7W)ko70v z0i%$m*uw9~q1ei=(890K$`8&cTO<`)LFW7bo3jNPFfIIGbAEsWrj1{r4W#74L{N$W zGr_9CN}%cM2Pj}JOa!Hvc7BC+kn#s$wG|pLy^w&J z@dT8W`uP?5K}r^Y%!e?+s*$al@r2Qwc>&mE6ZjP-fRt|lD+e>dI+2wx0J&@f$V(bb zTP89oP6P+Sj)_c)lfbM!6PXkzgIOCUGAT|01HMHp!HLJvx_Aay1T?(_J~I}aU_pjJYW_!zS&j->iZl5YW`ec7 zfN7fr7MaDLr7#QZ3{Z5UYBR`EoXxK=8?3G43DmYZV39feSqgJN+Q6QLXmhksoXf8; z7bN;ZGb;o1yoBOH zeuaf_c?b(hUO;gXzrrH8JcNZL&!M=OUtuv^9>PM%Lu>v=pqd{vz6YxLL6zeYeuX9A zFnXa0sri?J1(xz>DJ+E<1_}Xi&A$vRw~RkaVHuj7hT?Lt+;aXbh2>~+3W_Vhax3_= z6jq?gNhq!a%dOh2igR7SH{0i$qp~;*83QP{g4PgET{w#$JAah{4 z!HFBBMIlRZBfr8%WG$P({7w8>3Y)NMG00Nf%&)K+S<4nMe+z$>!WL95juwhr`4zT; z1ZRM}0A_(a1By{_n%>5*unjH^W+6#yC~oIh*bbKlvyh|}6nF3|?0`#ySxC|niaYrg zcEY8>EF@_G#a;XgyWrAb7LqiF;%zoPxR+mHFGzmDd4{Yk2ot0ftN>D7F@u)VF7S8c zP~69_un(km2FNTh3#8Ap%J)2f+dd`Lh%bf=q(x2d5U09)&E$L;MPdQ1l!I3moRpQaFrN zk3p8=5q^auD0+^91&;D(DI7)B<7lCHj9=jxNN@+p8(1_JfZ}O>h0}0pFbheVL-7p1 z!Wp ze{<#?AagJBD_jJrogoGq006N-x{#Ib5H)9>AqMKwh=EhiC4PlV;27N@3Q0Ma!2*~0 zvlK2P>j$Tt8Dii%^a{Vi6%;*J!2(zLvlOmk)nkyQc#U7-8j7ClV1euWSqj%t^*CB6 z-r!fb0TR3c@-mnO@({!ujs}W1`4w)$rNJyDX${3&{0g_=(qI;nw1VPoeudj`X)p^( zT0-#-zrr23G?;}XEueUpU*RrX8q7kH=1{!HuW%184Q3&vA#pWB%$)g#r~(71F>)W2 zavtz2+~-$#07*GJBo!Wj^v@8_%2LfXqr*H16&%+LXy@{{K&8H5iSj8AxSGJe&Sd71eXT0kfbFP zKl3YmhD(E4NYVm|U-%Wiz@@<~Bxw%Culx#M;nH9hLK>W*n0IKKGyedMPJH86_y$tC z1C%wuEKq8OcoL%Y1!!RgXcI;%|P1-za+ifCc{WXDR$a)#GTP_?KVdFG%o*ZdMkA z1@aKY8;%Bw|M(UD!KJ}0Bxw!B|NIL7;nH9hlC*+igMdPV0I1ynG91i8l9o_x6i{e{ zOM_WR(gKQ20t!uVX)p^(nnST!K%p5f4Q3&vArY`c&z$*(uA_xwi-1B4NNI zN}6y_whAb;!ll71Bxw!BHUWh;xHOoBB(0#>E}+m3mj<(tq$LzP1Qa^p(qI;nw18r# zfI=r+8q7kH=1}YsQ0Rh7gINe^h$nw&nKO6jJ8~#?3n+Ahluoz^DuBUEP^3b93013W z&O9N|kwdXZK%obub^%x|mP$`~;Z`W`eCiRy-llocTtj zBZp$2fI=Tg@e8nGFcWMCvf>4S=FBfD6_^|weldVLI3R-^=PWzHAh0G3bQ1zZ6l8+q z8i=SPhho2gLO;mh1;0S905d__K`m$a%u_>^IrD-lM-Iga0typAiZ_52gP9XROk`I~ zs4{2XPz9Q}Ur?pE6Fdd7p-OQVXt~k08#;Ag7qOQK2T-O`~akQvVg*5km3(u#b72_AF|>HRp!heK#HdbC`F-JgQ4oGnaIIV-3AX7nM1y7PMD$JQX zDnY62M}^`+a02S6R6GPqK-WPoI4G%b2%LZpgXJ136_0=!6Dk#t!WA8nR5%J&bPSZr z4udBDDixR%j)7+PK$&i?fWlmmLuP;-0%ooNF_B%pqSBms21xNd0fl)W#XCSMAWX16 zWW_To&6#(A6wen>m=98X0<0L!1nWaqyra^b`2_WNXNpJ#sP_B3i zlz`TQTyRoS;S@Llod(O@C|5iKX1pj@JPTKJMpEG{SkXC9Dmx9D`>jx5QaA^i4hALn zl>!PYK@Rxy+VKqqc z0?dYXlV5fD}Ifrw=d_tPff7f(moy2cV<^N@WIFifchhWu1V+ zS^=C~O3&c<>dJ%D_ypJt$5LGG~5J>d2wENkCx}Nbv`-VlWeI zGP2?gLFUXKNQjP^NeluIP%S!d0-MYoJti8B|f0DKIHq1FaeaIb^GV!d8$&PJkT(X5IiX zkzIYG%$)fINbxoSg>4|kFF-0FOt3y=#V5+lnO}euZx>M54pRIBtQgD$>qA!jqRgE6 z2T1V_0fikP#S_4h3}%A$AuIk-X3jhT6yG}q6n26X9{_iK!Ax*Xi>$Z-R2>C?b~j&O z09TT`1Qd1&fC6(vAf)HE8!WI}AWLC4$S`mz3NyhGWHhJ`zehk}4_Ma&sII+WfxQA* z3VT7iz_|idmqC`|J^_V&U|kb}Aa?Bs3+xxjQrHjD1@rAkiJ5Ry&vl zvK^Wf91Ro?3Md?e%Y#|S@*0YV1QZUz<-sguc?HG80t$!W@?aLSyoBNr0fi%Qc`yrE zUO@4vfWlF@JeY+n&!KosK;al%9?U|Lhctu_1ei1L&;>PibU-c89lBYLH&&it5ctaG zXrXvqK;bw@{|UpaEC}ldyuLP!fJUKUWe43~zm5YilqR|FKUz@;H9xHQC*Ck)M*Pk_2aR|OQVf|TAc$jXAS zPUyot3010Z&V0kbkwfvCfWkG9(gyGtDVPb;1<4c;wKojRnHxZ3q}K%$u7lK`02vEr zfptMf48dxd8vMiC z9)b+n0W#z!)I|>29S~M zXJCP60$B>rKqi4=2BaT6vJKLskfr!sK;b!9Plq8y&kL}?3xOLutU*fkfr!i zK;b1=&kCrXS73ox0$B>LKzcyFgXnRzP<$<*@ERm|12jMnW`R5ek_OMAy%A7&1D6J~ zkfb#f-wG(ag-e53NYV<5?*tUy!KJ}0Bxwo7_W}y<;nH9hlC*&02LXi-aA`0LNt#3P zqkzIkxHOoBkcQ;24g+)M8)A+Yik}1&K7o|Jkj%=0unsW7GP$FH;%5Pc&v0ol3rSi- z@r!`M7q~Q-g(R(@_*FpRD_k1PLXwtH{3f9A4K594AxR4;eiu;q4wnYAkfb>je+Vf2 zfJ=i}2x+hN{pzs?m z4Q3%pD=7XEQ1}Cv2D6Z)B^3V(DEx&>gIP$@0*e0x6#l`b!7L`A5>!sg5?lpHw}8w3>^1VJM}w?QQym}#THVP^?Lbz% zAljUHLoR3p>o&MOzThpG0%-vqS}=qghsu+}z^)^>~t^_Y!BFQ$QTOKfoOB)29Q5H1r<6$iYI^-gPCBHkriKvHfNpy^5+JKKS2hA z;^!?x7Q&wjS&CgC$94-UbO|bSLmYcYQlT4U`UkLM??4^f1##>Lm_HS=6nj8gdj%DG z1QmKATJK6K^n$cD+yTYbU8vR`h}MP}&>*9rLLW%QgEt@*U?$ieWT$_KHfMg20~$CK zROkmO{s2}CW`a#dR@@L{&io-qfywa!#GfF86_^}BS`hv;$WojDa_mGwg$aTR6CsYh zC#f(IWcmWIWA8y7I|1U@1)$@RRw!kGR$@&8X`L*nFiB8hGDPcrNrlNEtsB5v??bgt zf@s|U^5+ymg()Bv2f$7TGr{&CJAFZnIr9OKKc@;ROa&>v09FiUf=xzNydlP%`2xtF z6F_G+F*$+^R$y`jX%RRCS~oIHP+=O#kOQ|sAq!?UfMO8YkcMb;<^xfnp3E&sPiDHH z!gN8<+NcfDkZNoOSYU==mck5>VW7kVO8k&>6F^3TdNMNw6=s5UJ%H+(1s0ekn58fa zqze=kXu3cvqXZRZgLO@af!H+%EHFnfOJNR37sz8!U7&?gf(mm%qANgE1DFM}9V`#7 z0OtuR%!A8=S;+Dlit_~(=ELQ|EM$2F#RY;23*ho#7P7pA;zB`%g>ZQ=3t3)3agm_H zBDg%5g)GmZxL8nOF0glC*;2dO?NtaA`0LNm@d2gP_6&xHOoBBrTx0QBYwcTpG+m zlIBp{B&e_nE)8ZOq#<#=L&Ti<1*oFjEU2&B{i z)(aqi?iN(o4N}nnb~=~|wg=hi2O`ax8$kZtBdD+kq<8{YF_;N98Cmg#NOR^1Ab)Ov z_!DF>sG@uauPCL!!`*v9j@>7yuvbuFAH=aQB^CC8O#c9O>`SOW_d*=|0p?GIEXDmG ztp@}Z_6sT;fM|Ussc-%L?Ll_>he&hg z2cQPQAwh*hAjKcRior~<$;gTuqRg2;fEol3ApQgy45}y*4FV}}ZFd;t*du}phXoam zKpgv8QsD^5^aWtYzJ@yXFvPJ7K-I|$NJV)Rr1hAf!cjqmV-T%xBo&T(;Iv?t!fB9Upu_{tnBYz#$Y@YSc}7s-3|Q9#sIIeMfwO{H3THvOKv99F z%OFefoS?!vu&xPF5WCKU1U>35xhTty zQsFjS#Rsqo3B@~L6?Y&iK1wRwfvflkRw1Bx7p&qgM8zjbg}ZPSpTH_O6z_pm+=Hn2 zEU9o0uHrLDg#wepbx59hA?;|PcwbQAK1jg|<*Y0S3$*?Xl71Zx6dwpGJb+7sSxC|v ziVp=99>S%;EF@_K#Ych)kKoc^7Lv4t;$uOD$8c#d3rSi)@rj_q6Sy>(g(S_P_*78g zDO?)NLP$g6`i7`E^9p504#j7J3eP}FCtL?*Q!o=0xe#AM)V`25XPyx5$f5XLP~ka9 z?Ex}seK`+@B*y%J;+=z6Kn;t;tApA%nR}zITT+CD!c?K-T+n% zW`gZNR=gnGoOwe&sG__ME^rpS2U8#|(27zTTv5IPm5#3k6geIOjvqf`cKeFM_^R#4%Mpu$^-)~}KZZ$VlwfVF;wYJCIIdI99mcY+G< zKq?x*P6so=_8>d`K)5+`1IVB61r^?d6i)yv1~b7XBP+fTZq7Ub_ zge~(7{F=fzo5c@u&xJCT@6AYfd-*0g$5x|=N@J+LYG07Vxy2k zqY$X~Iw1mLR})yENhnL938V|;F{oXR7K+V63e6zV6`(2t%mTR?EDx?ITZ9x^;PPM= zvb=_3tB^t~Tpr9qmRC@06H;h{%Y#|S@)C;eLJIA0c`yrEUO=%!NTCBR4`w0Db0~HS zDRjc+!7L9CDkUu?MW82cqJ)q(To|#c!|*4aHutie89{KavW)a20>RDijp^z$*G6D*j3;^ubm9 z1*?!y><6pphp6}`sn8Es@eiy*KydJNHflNODc6K8)rsqOp`ameC zM+vDY=YzB^5K@>gq_6;@wMj~00Z8iwu+}E1*7*>v7eM}8D5S6uq@n@rbTAWa53M&=FAg7{@eiZC&*w>Mfm|g(V=MTuw-$bf6Rl_1Bi5>i+xq_7I&*j6cpRUp$BfF0Wkb?i!rV;6v` zlNXSRay3Zn8X<+%LJDgjTHB-))_}Bb0Bdc7YF!P{x&h?RwL%JOK`IV_oepM#?Ll_> zf-rOD10a8{6H-_QQhWid7|aBljI4M=m^t$WkUu9}11DIJ!Jvu~;!j5o#q~l8>p_Mb zxB|*4U}gg-29XVE2sLLu5CSTiuRwZ~8-x@#fGe*Jp^(aJBUoUgP?o|*kYS+211hnh zL$4rR3R#MqgcLS`bv=OU+6)%hER?0N8Keso6==E)vJ|%nDQp4jnh*xDYb#h_t5BB0 zR*)``$Dq0#Eflv2DQp9Yt^idLU>4Y85Z^c&C~g;0*bbKmvykOA6n6+I?10OIS;+DV ziaUiAcEaVsEM$2J#a%)QyWsL*7P7p6;%*^@-Ees@3t65+agUI~9=JT1g(MFt5D$cy zGp~>V?aUKW*b7qoU_NLkIhY9=afbL6q84-#%Y*r#edPOu6!w7>e*h~6GeNy>6va~J z%pbst_X{cP2Ptk?05TcO1hqU+6ib^kH!J{|d_YLy07&r!uwpP16#6KNL1j2t@j)Sl zgCNBVz|H_O!Ollk{a`-m;JNvrqjx~cKrORFLJEh#iQvP0(22y39Eyj*B8P>t6b^&T z1A7Z(2)L02)~1l9ctl9y2v}Rg0;sm5V3DIjSqeu%+Q1$})n<^TcuYv)7+Bi`n6~3! zk>f&H3dcd(z+Q!DbF@%AA*65uB>G?;D73&#kORPp65KjFDWq@`p#aQ8R-mDHN=V@p zLIIeGtUy8Ww2;DSgaR-VS%HM&86kx;2nAp!vH}6cvqB1I5emReWCa|G=Y$l_Aryd_ zND3gyX#pr^9?S#9%nC_xeRm#I$XyUpI4`7d0aD1dODS9cnX_OaC^Xukh1_{aA-7;5 zSTAJs^&&{`B_V~2LJF54dOM^PE`juJ0PF35>b(fjy8)sX(jmPJ(tAZn;j)mz6^PzW zDTON_y$8U0JE3|nL-Zbi=!MkLS3!EO2`O9^Qn&`u+a;xN4W#!1SZ^0p?^TH23kyN1 z{JN0Bb&!$=;8YG~f_(@|1<+F$nHDSrox`vIf0&6<}({>vya$6`%;WkJc*q5l<46+pO2r1kFYr6o` zb{8yiS13#2E=U{LgAi?w7K-kKB(T;5WN!? zgA(prA%(XfB@4h#12e%s1f>F4!hNs^6g*&Of|P+0?mHocci^P-VG%Upz6XoE7s^t2 z4>AwzRgfXzgbUWDkfr!RNZ|umTf<_gwvS+uk3v}rA3@r{zC_h#kfr!ZNZ}J$+XR@l z&tQ?yLRku*LE69`glKcLQ2ZjK@C79L0GwaJOppT*3HPgz!dHX>FcVpUhT=CNg>MK2 zU?#Ex1;y_|3f~b5z)WNX5{f^B6n-ESfSJe&1QdS?Df~nz05g#la47x~Quu{X0A?a7 zfF#@npqP08DZM1YEz;khMDRyQ;kS^&A4nqTms0oxGH1aOPy*_QCW7CPM6h59H~~TC zNB)BJ{u5I8E2QubqIZIn!atDS4Pd##7X~l_B z3JsvM91ei>PK4_H57B!7q8HMNZUh}V&?KzTD6G%~(K|^>p$Vk-0$A@PsNP0lP!uy? zSOQA8&B6-JASDmLX&cN0`w*-IG_}U0$+TbzsKf>55s)%a!fg>&Xb}bttZY~UO@Xao zkyha>g;tPxV6TD<0ViCrHiaz3HerP}u(ks*ZS7!@cHu0Ac91r(FHyA_WGQwCD|CRh zU4Uup1dDVEXDM`ow1GVc(dKBO*d?sc1rl8V_7j*1asVheK`W#U6uX5Lx)BP%Ok@Qb ziao*#JqQJ0Cb9wr#a>~BUW5WL6Ip?TVxO==A3_0`iL5|Cv0qrBAE5xuL{`9|I6+up z0zv_piKGCMa33rN6)B6E94!Y9$oUpiW3Zq8-yJN6gLVhFexxPGAL{mR@fjcaMuoWpc;$f zCSefGptxDs(L!;Hu)-FQ2`^-`vLGx_js|%goQ<~%D{O^JgIP$@8j9P56}G{p!7Lc3ftk*U>1_JgyIfig&lBdFbhdqKyjzA!cMp}n1v+Gp}0#}VHaE)%tA;*GVls< zbLJPapjej$?aX)~n+z(Q+0$MU00EOj2VTA+23I`#T;bbX=gCG?z z1+co?kWFhs>vDTTvu6;r_~6cmquRUCn+ zm?oug1g>HlScQb*QLu`m5Eav<6pq4GOb4qFP&@`!aSWnjhLplFxQZEI6&#Ak!77eJ zRLqo8I1X1a6Qn|cN#OvbUVkA63Sc>K0Ly^`c)zd$D2yCe$bka*2Q+{?R-Rx`JR$68 zpm-7#%BMi)34j9ll(51{VTBX002Wa^4Gv%d#WNr!pa2GyN@qam6EsF*9Ia1pLzE?9+x;w7+(OArhn(fl1*kG=Swn0W1#=V0mx=pAl97g^}Y5`7B2P#~CXjDR>1a zfUgQW9$-+s1`6iuAOj^pA$(m};hM0*RagkiD1uJw(qNKMya`eQ3Sm%@cncK5w}lmM z2`k)&xN4!4!flX>7YbQf3JXE5ax_r916FYdqGFMh!X3DZMPL;gig&>(?m|>7mQuJ2 zSFsqZLP7B!Sj9bviX~DC_uwj)fK^B+-Uq9=4^gpHO5r|S#Zs^e0mTPk6%QaPmPsi* zfU8&rR>7h85Uk=MM8$F`g@m=tb7Ls$V6!V2IJRse_aO<@I47&)#`0EO@l zXb4*&zxg_s3#G*Emjtne5v4Q3%pYbZVuR(JxJ2D6Z)6%?NeD?Eiu zgIP$@5{l1+6`sMR!7L1@zhvExig%@yXFbg3KDJ?W%-i3G)qV$HMIr9lc1tupJbLI}vrk{_(3LimQCV)2xfteuP$a+pFnln%E10Bb}#RMh=NQ& z+P(Z!Sm7tg;1ghj!ORsPCbGdRs?C{CfL!rQSm75)@ePm)2oq!~bUPzBX)y1oHfO$3 z4cc&fqFNEO5KNQ#Mz!Kf(2B6-AQ!BVQdlVkI`3nZ6iCs9YQ@!H#)E3bHE>0%r4-hH z6|I$0U{Y8mWzPJgT7gMnt&}-)LyaSc;%{Mv-yny)06PTC`~hMjyZT49Ir9sUtN#cq z`~fNM_yY=PFcYi~S@DZ%bLI|^$$y0v{(=)fr1%FY z`9PRpeaMPu)R;5>@Ks=Pd;v-JAhnJ^K*@d$DB1rPR`?Gx;s7|wfSDkLC_(zd*PQtP zD9JR4C^Uf12iyV5m|zxI8*(l?;AhUfLlKk+6hUS74#h0T6Clf0hd~Y}YZOsv6afYN z3Pn%{oI|k*EYKv9rO*U2dWB*Z+-}DQhnTWd82Gv8JGW>92u{Gg}EtiYte zoUO>Bz@oySz@orl#&keWfklDQjOmD;0)sBYVMaw(CI{?Lft8P)k%57UnT3^+n}Hjm zZI7NKgCd&(g94is!y!gT21RxS1_gF2hJzqBhXRWNhZVzaJsuXga$=Z{42qmQEZmNa zikv*m+>T6&oIFh2j?9XjJdE6qEQ*}m%=Orvh+9;FlaG~wk%^gwh1+okqav3Ag92BU zBDVs!z|{suMIHqnf$qhOio6O83ZUCQ8NpVIb32}3ROC}&P~gi_pr^p1 z!L&zDQNU3`QBZ+JK`={ENI^(ZSV35UUqL|NLM}*NK~co9y`iC@LQzyfL_yR|QOuE1 zQQVP1QNoc?QBpxnL9$R$NQQ7f7qoRs}l7dR1 zqAG~3rl72#R;Z}1psJwmrl{e_sHo}4ps3}@sHm-=p`cx;sH32%prxQAt*GnBsHmr) ztDsk?sIQ>U%f-VD_Pv1ugMvYpqM-tdf}t7H3z#d692ZC_8Y{3U7-uP(D3~akDwrx5 zDi{gOX9T%si)qoS=NgQA@y zqoTcnje>olqJx61f}Mhcw4$RUqoR|7qk>bRqO*cCBup+aDY_^yD7a)Px+<_JxSBCN zfw{)b@rInDy8?@XdzPYyf`_7~f~SJ3f}6m`d{AWEkW=(>WL5N5@KW%0Q}l6URP=RZ zQ1o+TRPfcH zc2$gFa!`ojWpLafuNbSqq7a*<7zc84yaJ0te3oK@LYzW^LNw$6+Z#-Zi3$t~iCKzC z3P}R(lNmu?*dec&?8u^+qL8eR;-;AD$e@_!$f%g^$f%g1kgAYTsFd2s2=E$g6?#QTEp-`$&QK(p{P^M6> zP${ig<;bX5tx%;2P{Ydz%DjwwV=WPWJjF>i$YzNV!cAWVgu+z?M6n0 z21bQO#w^7qMn?n1W=4f3Muld^EX5W^g%(E8HFsyY9A_vfwlXTPD6}$WDYh{xv_Vv~ zGb*$*DxBd06^a^)9blauj9H4Ej0&A#ooB&1yFfa-7_$_+85O!26+kL_7!`UL70!Zn zDk%1Xb@no5DfTfc^nrDr1MBPu>Fj6BQk=l3Fo974q+%kY!bC=eb6}kkij%-PCoyIz zPG(e?4AyxbtaA!T=M=^)#i@)6QyCRNDyA_iOk-3y57sH5I328WI%AgN3`T_+V4WAh zI%k4(&ScC|oW-axi%|ijVm70~Y(|9(V4WO_bHF<1FlH&vWmK38)_D=Ea~??NJjN`= z`HTwl85KY(7BDI-U{tsW(y7n{R(gp`fkojGmpStc1yIy3P*7aR=-37>uof{YEM!zz z#OS8D7*vEW0TqQyLBujfg~f~t%NPq4moq9XVN_VksIZ(-T5$zPZY86_3Py#MjD?D; z7-6YSVHG3jkY*MQrUeR$s~H^|z{am(R9MZZu!b>PaV<<}9av}`qrc*MMn@*a4Il$I zGAgWRRM^N^sJMwyVJ)M=21bQVjM9pm868;^w=gPfW>nb1=%%<8q;wmj!d6CwZH$GA z+Zh$MGx9QW3;bFRa{3NN1qOv3jNrOx1C!!T5O*hImf|i(M*+p%j0(FL6?QXbDehrZ z*aHrf%Uq5x6cqP@!f!8Qmf}7}g?$he`xzDXGb&sLg`Xpb;sLNuP~Y+(qryS3&MRP@ zhd??HF=ih%Lr~p!Ngi+xLqrw%CPK8}yrB^{Af0fIe`Go?=wxb|DM;Wsek1;A7 zV^loOsBoN7;9P{`7DmMrAoreN%u+nb==fsSK?cQBj0z_i6;3e<>}qCoT*0V#8l>Pf zW0v9>SV*1)nRb@ZjA@0EV~e8VIS}_8W0vB1Muqc?iWfkEcac%y0;9r3#w^84j0!B8 zOe>TWuW>0{VpO=s1zEFlnGwXh%$TKkh0$?^lHyg6Ay*l*6t6KVTw_!KNnB@CxXuW= zjPnMg!WBk^8;oX54312SH$f_IGMX{9D1vOi1>)Xf%u>9~sBoK6@eZTo50EeJGAf*5 zRJg;aaF-ZCn@VN`g_n5FoRQQ;lfQ|}oaFDNK}0O|d}n5FoUQQ;#*#V1CE zPmBuh!M^2C{0!FlnK4W83!}mpMolIL#p_%konJvZK{p+LV^sLYr~p#&ol)UCqr!D? zGI#@4dIOXUZg811Ur=z|z@+#C6qP?1vlM@VE&l~F;um9<;%`QU-;9cX7!`gpD*Ry- z*kKMT1OI|#LDwJuV^jd$56r0WpHbj^f+K@s1Cs)aLIV@1kmcdy2Gzv7^%NVK92pgx zm=qeB6q=X{6`Pru92A6k3_G729A!?O>sHCV#~aCPya4PLNSu zObQ)L3SCTvirq{KZA=QCObXph(uzGyjx373ObR_r3cXBjihUrZ{Y(mdObY!>g^ClH z6eck7GJu>v5#-2;Oj(MPm=q>4DNbfmn9L-wQJ>q9L2(L5Y6{r>AnsHUcPg06!_Ey# zDqEBkr-2+Yok?LDlfrZ+H^mtsduB2@GAPahv1T(V%wSTO%~Ys3he=^3lfo<}g*i;p zigQ77^OzLoGAYbsDpZ`$q%fa}ml4#q+`_21fJuQtVF6Q?;zB0Jj@<_t6c;fmEM!tx z#3Zm2lF=4}6f9=SQd|NHm!%+=EoCxeTBGOKp{uwI#9hXerMR3)VL6lH3Q$n2WKvkc zq_C1HOK}wwD5I^>Q@qKgu!>3HCN!h1W&-h6Gi52RVRBrfr??hm$Xcc>#dS;y>zEWk z66={1)-!=J+6E?tHB1T{m>?N#BS_^&CNriEU6AdYK-^7CS&EyP6gD#{Zeenq0rJIG zCWR$T3R{>IwlWD^iU75ow4hQhnN%&GYRa5gzXWKf+I{>ibt6opJ*!{ z1KDwmDNFGy^_Ac^x#3g^LIxxl1whDqT9$iB5pG&++b3;%~Ys(he_cklfo?~g*!~rig!VB_m~v!GAZ0+Dpb7Bq;MaU5ShSD z#Rp6Z513pPAA)k|Lr`v+qOAA`{UMOpDR$T4r2 z6kanaykRO-e9Hu?x)t7n$_B?N%8Ktm`rk2SDZXb?c+aHx0TdS>nG`-SDSTwgQvAf^ zc!xppGn2w+CRfETASZtTIeCq$;#ZKquS{8r-F)4fkDS^B3JIIaSnX(jrFgdPK zRs0E3`;#e4@fVZAFDAv`ObS1k6n--abcBFp|A1uwFl8zJWm5Rdr1+0X;UAO0pMFMA zVxFR`_#Y(wpD9bRfmxw}S+SAXkwvkIS)q|xp@}(5v6&g z2FD93ifzmaEDCMRS&Hq<3hm4a%^)Rk2X-(kFer2|XDN0vD|9joJgfnQY!^tdi#bcN z8*FF~vqBHEt70$6&|avaeIP^on6ni7nH9R375YI+z=m>z`qd{G6(=w|GAd4FR+zx7 zFp;@XaS}-LBxX>1e2%)}WRUL3%vp+4m=&flD^6v0TmedX)0iE_6sI#QOl4M>#;h=% zS>Sw?;|g`f86ed&n6ngTGAqnvR-DD`xDTXyHZy36IJ3emW`)_z3Uk1!=P)YH1v!2$ zbC%*fX2&h+it|C5=QC$1E?`zzz^u5C+3^HO^CD)2h0F@`m=zW=3;c6XV9;bf!K8SH z3*`I7AOjXNXDKdWcATT3xD;f-QsykhWy}i8m=%{ZD=cSLSi&rDjT02$E0`5lFuN+Q z1bJ^IC~OX>E3N|RSjC*BxEgH08W494bC%*-W`)(v3Tr_+z(M8Mp{BSFB)N_`OL0B3 z!g^-K4In>lWLDU~tgw+eOK}r3s4ShMu6UPAVH2~$U1$lgnHj{}%$%jTh1qeAy5d%l zAzPWV6t^)eY-3gcNo;3U*vYJ7!g1y-#S>ur zwx}!K=TbPqtZ*M{-$`Z=?<8}U;wf+(o(36mnmJ4H470)+W(APMS!RW^VEfK7E1Y6h zI0v#%fkojCmpOBXnj@p)d61U#%vKB&)Iq^~0mQw)oTYe?S>YnH;w5HB9mUJc3YVA_ zE;DB-UI8cbtIP^lnOzmHfuiynG%Bxy^j&ApQoO;eaD`dn21p4!?rwr4Z!%{o-eOj` z#jJRnS>ZObz=JH1eRn`ocbKyj?=magWmde$tZckROAgvS3eiMHZD|}~G_`#f|_!At&znB$% zF}o`M1_kkNP!P}2Qv3tb_lG%4@h`K&PiBR`ASK`+R$x(h!feerMGIv5Kai?_%vp;6 znHBysD>kq=eqc~+WKn2fQD|hzQfy)YWt1OUiVwIHnphMbKoe3k3y9aulBL+f0t&TO z7EphhB}=i5MWKyF0VL7RqR`F)$|xNy3N0)O9W0=X!l2j*QrXF3#V}3FkwLKw#Oq?Q zVwkSw$gJ26;&roFG0Xrvtp~*IVaZbLWl`v5QS4)J{KKHw&!W)BqR`Khr8oiXv=(i} zhg=F1SQH*Yoi>pL#GA;Hr8tSju|->PGRTz4ELnv@hX30{V!{RtaTX8PPl({Tfit|_$=CLS%B<8ay%m-WegiB!#i^3DIP65RQ zET9-z2vWb0B};J;i^3ung#|2Gii=r5$z=&hVhKx@;!+lcr4Wf_EDFoOfx4VUVKIxs za&Vw>D6Rk-v=XF#B}Ekt4+i^4jvi=J{R ztY%So3hq;|XfiF)R(u9(dOhPZXa1o9YI?0_QD9J5&yuCMfyI$SaU+Yu1{Q^lELn=1 zSQIvaowAw5afi0z7LXlVSh5tivM6kYsMyA$u#H7wGsuk!8^D%52O0gG%baPTVo^BAqHu&o;W&%JDHefQ;Ea13 zq~R3%MJhFuTE$rFfG?;U?HV23>}OjEc8FT5q!`++tC<%~Gg%2c-25NGqscco(GU zE=!i;Jr;#~ECSogK;5GIAi?`A;Bk#PjEWCH+y^XKiVs;79BM6y%6!EDBFq6rQmZDn4fcjb^?8X?ektrTCIX z;U#Fk;5iFFx1)jLD;CEK42rKovaeaP6yLBYykSvz#ge7?mc>y*@f}F~9ZQztdlrTF z5b+Nz3LjWNV|XvQ6yCBZyac6LM-9b~U~@i!)PG{hQvA%K@R>#7BTJUz7mzt$LE>Lo zvJ}6uD13v6e`itn4mRf%m%){n8~Uzja6YLYoX#SR)y)T3Nu(0 zX0b{u&IZZNVO5yTsxXJOP;oBGWRb#LR_L%ogyK9_Xw5pGRbd{h!hF^&#RVW67J|78 zSv?dNu{ts-E@o9&z^bsARbdgUwBiz0M`p#PtO`q56_&DkODQa2r|hs<4{1P;m{b!b(Y4nf>H4phtIy;%%$*vRpB$#zK5(J-b299M6IO*M ztO_8Br>qK3!S+34Rd~dz@C{fe{oWFF~qavSum1VpVv>s`#4K(M0hLtHNtmg*U8Oif_SAJj0~;jZ5Jz ztHL*^6W_6dc<)%V6yLKto?%k_05aqQYnI|iR)vqO3LuG3tO}pNPW;TO@SauSGuVkI z7!<#-DtuveRs71z1C6*TC^sQ3+}{TpkR;&)b%lYW4>KUlLAf3hlkXI1zK(gAK_ zIx;B!0?GYiwPJVx8e9F%s=%P|n-x@%fHKP;R)s&Tu8My_X8(nn{STz!A8VH4e~{Y$ zAQfP(95RK$EMKF2FhO(SQICKR8L^bQk=-9 zFp*7h5*s9cO$Iq@3Y)?tHigM-3RA$UA^B@6NW)Y%Gp0E#jysqYr-8WB*s>I-vnfnx zQ=Gx(D4;l#O<@L`!c4X-#aV2i{MEvu_=8Jf7MsEkXyndj1Mz0FWhu^K137sv$dI{g zS&H-66y~uhfF$O#Da;24!~!;jIcy3GK>h{Uw-BUsAzPN>A~uCZY>JE79Ay-juqiBN zQ&_^5rMMJq-vk!LpIiz{*%W?4?OVnM;w@v#Qe4jFIDtiR1;~&UY*~sc*%Vf?DS#wa zu_>$q+qarcVL6+^YM6a%KuXuJWht&@Q&`KUxQ@+HLvcNu!a6pE^=w&+8^HG6U{d_W zrLcib;TP1tjcg#^Mz$=)P2gzU3^HUhTbAM$Hia#03LuHCYzkY!_HAQR*u;vSlgm zVpG_~rnsBU(L`|%o5F53g*|LpihIFMoWr8{mrG$Uo5EkH6Zf%!c>CD06!)_^&S6nJ z05aqNTbANMHid(13LuF?Yzl|iKxy$Xo5FrJg~MPco?uWs!lrP9%~kOz8#ino_1H%$Zk!8%Vc7dTz62Dc)gIxWlG+m(5W`@gAGP zT{eY#Y*~u;LH0dhQ@GEj@PI8#@gbYSL$H01*c^ATC_V=1eax1n_=HX22}H$HHif5b z3Xj0{-3QzEA7tNuP&|X}dj`_;j4ey?Ih(?BHpLfgjtYt|*%V%|DZFIMQhWun?=_pk zD>jAKY*~tL*c9G??R(4Sc!EXo9Z2sxwk*Z>YzproDn76&d|*>}3%2hS*uDnP+LQ)v zb7oNIL6bQ^u@NND2olf(m3bdQhJ0kpQvAfG@QF?FGn=E1;ukiB&uj``*s>JAf*kOT zP2nq>!Z)@o#qVqi-@y*}!RB~_Me!#{?@zWY#b0a+zaT1pvnl*$Q}_XPz*n#Xnn3n7 zaho&WU~$~Rs`v+_=MP(!;$Jp}zif*CKt;-bHids|3jf)%6dTwOD?2DXx3McUu`9H(n=vtf z>}v-pZD-F?>|j^uU{~y9ca%}=Vpr&7SLkBTQtSrXw}VBog3G50J!1hgKSLkI|m`ag$Gug8gXR#~H zVpjl3%w|`Z4YqF%yTS~1g*jmR7!>D%RL*6$X8Zwa1gkp zGq@oKit+=jpdgtKQZ=7FOK}0a!UA^1h3t+dii_A47P2cWV$V`s40hrT7R7dMg~jX& z?NBE!VF&S+uxBYQWe3ImGLRw5*s~OuvnwoTR{%+@U{_cHcH&BQg{ABYE5S}Y!JxQ` zU11fwtKw>QCI^Mp?4TlrMR5&C`x^Ev#kK4pC#?f<*Rf|Qu4h+R%dW5K?CC4=FAM>nU4s??d*<_r2;$H6}Gc0>|l3O+{y09pty_Okx_9s zh}grfu#;V34|}2FUUr3D>TBT)b6g0NyIw-b|M7q>zuw?Y?ppyEl8dryI^I}IYvuq&Ko zS2)97sCbrL;S{^VX?BIP?9z(oKyv5V70$6MoM$goya2NA0?59OJqH;SFS09KWEWVr zoRI-s3}0ebxWw+Ncp0SVGDuN_u;LYvqpq-LDPCoFydbQ24aB|1o~3x5UEwOb!gY`i zup>d9x&do9vD!7!+@@E8JptRlE%{?l#o8J0Sgc*s~PxvMbzVSGWsO0@e?j z={+H=cn{>>`|Jw$*cI-x7b-pgnfQR+is1lwxxhmZ_aS?h;v;rPX2r)KvmUdXF)a~s zTq2_Q1jK#9o~8JdUEwLa;xl%~86ZDCXIFT{uJDXq;W@j&r3jESUw}+`!Jeh~5|nLU zu`9e}S9ryqrTCg1G$#87B>RRvOYtqc;|h=g@7NXIvMao1S9r%R@XrBczU)UACuq%83DFOS_@q)PGSCHga_AJG3 z>>z{wfdv1tXDR+?SNPAa*ubIimtCQOL*U7LM$odqMh*oAg+`7n#U>8N4kpEB z4uxh8SH%_%CI^KU4qgV3v8|x>jjbG6iftSUO&khsASGaTLWW%0LDKCUpdlAl#SV~h z9UO=umrf2xM#U};g-#BIE{;OQZVu3pOAkm(4@Z__FNZ=ehYEv2HwQnrqkv)`hvN<@ z#eR@%KS!401P+A>9149LS&9=m92ZC_P6A0x;>c2*%%LzDA~A(SVG0LmY@(Z6VIqe@ zHz@x)awtv(8#E21ei}!X;&cv$=^P4EIkFUIfDM`nl9Y9*$XN?r9dGz2js;$99fEUITYq{2&@7xOgtl{IFG}TNpU_0 zXaV2?4uyFf3JW+26&Hf}i#QbKb0{q0C{$d`p|FrcVKIlB;u286ECprzWgyma4uvHg z3d=bP6<2U5EagyG#-Xr+Lt1eqNNyE}!b%Q>RUCzit3mOyngcrgutQ354M=`1hr${T zg|!@oit9KO)^YGMfx09Dit9NXFGwkF0Qq$TN0#D74uy>z3hOzt6gPoGXER7*Ge?%< z77m3i5Q(iE3R}T}(8sN?i9?|e6bPULe!&K92dUrAk)^nULtzJp!Zwa9#hqY-c7Y^z zabzj(=1|xTk=Vnbum@~VKexh84uyV@L7>pwA*DD06q*yb&6zJqIWj8l1qJ3_4)7q~ z1}4RQAnrbnEXDmCAmtaN6en^k?B`IJ2r|G?K=A+vhpaSlrFaai^EgQ7agHp-6C4UBI21qO zf^|;jRyf9?Fd3v1G^u%nN%0gYm``&koZ?V8%~7a$1{4ivK-uGrtm0XaNoP5-6wh%e zoa0bD&jIO(UEpvOQ@qHbaGpcq0*Asy4p2wzhOFWxkm^euS&ElA6fScpUg3ar#IACH zuAbpgxWb`ul|$hgSoIu6#p|H(xXzKKc!R_7iLByHkmj2lS&Fwf6mD@S-sW)J0V;j& za46j7P`JUNaEAjrr@4ViaSAtdWa=(R(_IcTrVp}?J7g5^fw=cLvJ~%gDBR~zd;qfe zA&0^P4uyvtS&EN9;m&kMR&gq~!Xplasn9zAF$akEm?KN^35VkuS;eOyL!NSEDL&&+ zc*dasl6cOc@SFqG?0UhW@PtF*1qZmZbH6q`8}nm84jIkOa7z;np0 zoC>X+u8M7(Ob!ZdoV*N zirt(F-JAjsvOrQjAgLbCEX7_Ix;Fw;8f`6RG7e7s5p^R zfk9y+rxgQe^_@QB0Vc&sAdyL&){LhZL6hPem=tG#8bmWd-2*1jT;XJpg2|j&ic>fp zPk>V0R8B`0#c7<5XF#0koQ|xDGdLBda4JmYRG7x8Fr8Cj2B*LrHt;g^nIOG0IkOaJ zaVpH>1TRIO&8aY(Q{a4o;vA6N98NQ)6-=P1fVm*Lr|6ic2{amU1dC<5XD8sj!Sw z;9n=B;|eClYd9S_6xV`utmVv7T*s-fj#FU`r^0GZfp4AQMa(>k>%mGn6gPk@ z*uZJVbOE#)WIf0NCLUgHP#w1sWWYwwEX7Tn3Y$0;H-o}*3#Y1kOH-KcStGj0cqRAnWeawQ(-Ts;y#d-`#BZ%aVqTR%u+l6vhpCO!U0Z& zgPd84hd31ufvr3Yw(hY3$pDj zXO`kQPK9%v3THU86wia5aRDT8fip|-BB#Pdh{PpMg-c+EUglId=3>>d_P<`+_m zvqA2e%?&-9>k6mi3>n3%AQP@~W+`6dRJg{eaD_8V@jBSf8z6}roLP!DITda~ByMpk z+yWbYn^WOBr^0Qh(M&636z719p2Ka-U9{geNKgY zoC^0jvlJh2g1WLZWEAIeD?H#-m_|GAAz0r7-Yy}&Md_zoC;4k6+jYC zITfCQUGR)k;Ss08Gmr}$nG~OcR6gf4WBMWmvi${!`+_q|@g=9iOHRdCoQ_vOS@Jcf z!f8&0SDXs3Il(JXbs5e`DZb%!WKw*~32LOg<5YOVsql`oQ1LyO|AABCEvLc<&O*hH zoC@zb6+UvhDSiUQ-)Bxo2E{KR)>lr2Pn-&0ISUoPaVmV~RQSTF@QqVi@jFQF2dBb! zPK6(wg^E8xvHTMh%iN%GR!{{0;sn?5a~KtWgSfvrvlRbuD*WLDP2+*~fiNom1$p8x zrxk;^Ba7lckfMK_h*so(kPQu73jaA38n_A-8@WKO$R^MLN)uO>Vl$UQGnWd3LL(PH zcs1yGLB$p>M@Gd~E`=5@g;uUY#Ws-AHZCiM`+A@zTsvrAOgmSWVh5K(2baJzFGohj zPO#!mu0q8wE`=^GS6)VN`s@ZN?dHl-?BR0cQ0(PW=;2c6<;qg*<5KA30_DkmF2@am ziW5KiT*#%c zkV|n9*!0C9!Npuzic7c@mT)O9rLc%gVG5VRQZ9itj*bm%ipxN1mT_e%F6UBM z&ZW453uMJgkl;$LEX7q^3ahvjS92+>;8Ix4CGZT=%~%8S+#0Sd#kE|HH&_+daVf0h za#dW<#pIx{o{N_OWb6iz2^+Yw6gP4ytmRVJ2vP#B`FL2lLE*CrWW*+}EXB=Sj!!@d zd<&PtW-f&-TmoAmYb>{d6l~?nQryM`ZTf5n8M&RyjOmMz;{`#*9U$%wt}Ml!Tnan6 z6nAksvMBE6QrN|%u$wDOaSs^3%;9&wyzBAz1MaILx%{?uMxrL)%sgAK0vO`W5%MQ62vXHHA zb7VnnhD)s2cgQKQ^06{9F)*_*!uQ5akwxr{y8@c11a*Dctr#wY*q~MshZVzQSp^0S zrWRI3P|oHwW17GU;xm9YsA({mZFG)5Qq|05C!F7F$EC?F;IJT4y&TL0)v8hmZF5CfTE-Vi-Kg9qLhM^f`q^+ zO;9^PL{S<<2`I`qo?}&%RbWt%%~F(eRDkSX%TiQOP*7AVrn$3=~)(o7W5#jTDR& z^g&A$XRs<7D=>iftvUW+Q#4gzQ83L?G*d8BGS z9Tiv<9J3UiKsGrmuqZfZDY_^)DYz)uL$q&Uh3sX^Qgl;rQ*?Kn!KUb;z@p%h1=_-< z=%wJUV4~n9aJHGzaSLbz8;gQ>mZFb>kD{-FufP#=DaRG8ihc?V3VvCN{tEsA7Zxyr zhDHMv7!(4s6ay6k1sYr&85DyQ7!-o6885K%uy8XwI5H>(gEzGWD})p(hAM>eGVm~S zgNj8)Go~rBJj}>U$0?xj4^s#e=qO>zzNSQR4`7$7_3SQMhnm|n<&(##ZD#b|{ng=m3JLB$wH zM#Wf#7=_qE#W)2Pg*YpQZ33Xtt!)B|@s5m&2@3HF35AM@j*N;)3W*9yg^I}v$-Jx} z!=JD!rYJBdq+}_kDzGS|nlZhB8J?z)s*naUJRQ7WE*-L8jzuBUieZv0$nZ(BDBI>7 z85MICaujk4AsggCD|8tl8|17Q3al6|v4ZrGGC0UB43Z*Ix3dQ`~j!#$>%M=(C%CZ#870Lzf`GQK3%dCnOj*N7 z4hmHudv35QRx2 zh59VeF1kDHijAO|XUHx(g(gPDX3!2fg$71}|5BiUzQeBA!sy5b+CDRjIvEQUyTF_3Iv5qY7^M}vL2^CdZF4=0g^In8LPgj{ zH-R&OJe=H)6IekT-WU{?GiJdyyE!r{t^#d$Q&`1VsJI%u_iZ(!z?neD8LWzHKt``& z%tG1U#-gx}(TwQ~r{fzA#r2>#TF;oJxB;}SO>ra0bDKbW-4r%4W+`q4@5(yEso2f| z+U3>`EuCR|-m*Y@-p+6;ZUY&zjWG+d=S^V?W0v9$Mui>V4NN=18{&2{g34_s#a$qk zyBN)w-f%c}aDeu`u^_g+Deh$iIcXnA%|6B~Met5H&|UT`P)4!h!GP(FDA+RUc#gwYMOg^fY+ z8OX5bAmRmhGusQsLeQ?YXQ2IT3NIO@L7UeY6=9p#3KidgcAvTOf_6eMJ2-MEz6JRX zvW?C02B+eCkjLILW`VY`ePC4l2;Rf?j!|F^sIdA3lKjL7ZhNq3Fx}u({LJXc3EIZ? z8MKqlP4O$pd*48g`3@p}Fe-dyRQSPIsQ44SqwPCrJDRlOFOb}CMulIXJ!*xDf1o)R zQU_oo75>2T^bJnMzl@I6ivJiD{(|AMp_M61u?@5*O`tOZRAIJ*1lyUi6gxm$)&x#0 zU<6f|ogmRprYyxSCXmi<5VxBt3$%f43oB>`8-qeGQMXpb9cH(MW*z}y^=as42b z{Y+Vk6F}RfCW3afDZux!fztA1CdUi>uuW`Pic^^srZRz5OapIMn+)1?q%Z-zO{xo& zHoG{?nJ@4=9^hA;4)V=(rYyx7p#5u#Grk51hb>22f((4-((c1gd^P$_{|I2bi)H4>BnnWD;03hY_^PjZqP{#jQ~B z2-t5-4hlygzSCv6%?{e=#t7Qyc9cos7*io+qZ_zWeS=l;1jxt}Oj(L2K^xu#E-nCB zdkQ3YiV50pI1Tc~X(lU%?E;Prif2G_XW&jc3*tg{zBzIzo(FG#JI|D*cmcHK4U|ML zGC7_QP(lM#hai_Zi=@+Tj3OLF$p{ZCDGeVjyD8A+uv9e?l5I3-em&qdb`b(rFf4C zWZ->}-up~hir{T;3LuGxObQRdcK2~8++$McgC)@&0!b_$s$c{M0*Gvj8 zKzrZ>zJ`E$;BP=d_=YJ<@hy0>;U9j`Y};EVg$dxASOT;w?k$r7WLq4_iVq-fd|=8_ z{0Q0?2bTB*+Vlnr?a!c%a|)k9`QA}L@e7l}TPB4sOj(LwnLs+ffpmUj%2NE!r0^Xg z@dLE~4b(N8$f59+Nns+`P7cs6xwlLTkZp1xoxedke=}t%{$W!11CaplkOS$Q#G&wu zNnsL5Cl42>z5hl4v~i9_;U7~LXvf@tCdCG3P{cHXR#7!FXDK#;_RA?YgZ9uVG&2jV z2e%d92q?BNJGO%N?6-n8$SJfkyD7FYJ2EJ?gVrr|fQU|Jg*MPGxkAM*@J_l8W`!l79-7b-4> z2rL0_u3N%fsJN6_VKKA9Qf6<(WgwH6gSOBqEN3oM1n--JG*AT;SAzB*tz^yu?VMZ1 z4DQgbW_EldqKLe8ZY?utv)nq+9y-vTP6mC(3#^LkLC)9!v2`P82c5!3=0e3y5P{9$ zeRP|d3l+D3H_UBe_Ey{qa>h1hg{`2Sa)pZEZF0QeiP9UaiaS8=*uk6y+9kJ>Szy5& zM#Wtq^}9iPqIR=Hj%vp;2m_Zq7KS=L><}Aenpb$R5EU+UT z6k{x)J#yepB8Na5So6KR(d_%(V zgal~c9E-vk<}5|OiS&CPgK?Ys}>Al9BrFflL;W|X(255U6$nGf|3RjsGroc+G6B3G3L9Us~ zVb1(Q0@QnU{3D@=v3Cw+9p%e*RkA&iVX6T6C17?N$pj~oqiVs04;1MX6 z9)pM{%nA>g6`n8`f;P-OVg~J{d&(>g+BC-q+B5fzS>ZWzA!O5>D=#Bx+~Xx^%bcs? zD^Q+%1&Z4nl8VqBb6JXSm_d$x3-T>wf1JV_W`%bk9pF3(>H)n6McaGuZaK#v(uyBJ zYCke(DSl#B_{6OE8MI6H3$wy!W`!@zS&Co5+u*=E_vlRa^gIw_+ zq~kwxmSO{o!aruvF1g=O)3!)~w#~7?cFi@hC^oY=&X87Y0c{*NUStkA{+?i6j2QfvpQXlKb%>;P?(1MQIOWC3@I7`VAXvDXEX?_$XU?T_nbQS4z+ z=wT5!HwAni&IDG_?l=a8UY0D-2DvvPpbc{H{c#gm6eoiB%S~hv_$kc|3e`!VJv)oqC{~uRC@f)dRa^?vz7(W=jhNyxkdkFAS&GY99DBqSSAe*n{cbBkd*T#U zf^HuViIo$g ziW@*?ZeYm*ZF$?s0@>~ciWTq-$ZdAT&7i$bTR{8U6t=JwDsBZiZ!37i)dW_>ZJe`954_!N9}Bn@azjROKS&MAp0+PCiibdg$a~r#JJmp~kSDB)M?p42H@C59GTo3- zoW`MWj74D@s9txJP&^LW^QLf|B}?%Hi{lL$&~`V_hPN!xj<-{w?QU6$r&$zEgUi`7 zED9$;JKaFz0Ro`yZpT17-m*YD-EPQ$wz`3Kx@9R|0B>zO%aWyd5wx`pRB%n_0BwVt z4z`m+@eQ@(6K*64P}S z(2h988=&C60ZI)ML_k~NSQKuuWPvupoe)&K4KnaHOP1mt@OHR6ARUm@aD!D5X)B!L z1QEsiAhq{dvOwG49tZ< zaYhid2aZMI35zx3B3Wn+{uH#;?->iY27eCT3-_F*Q1Jys;3a5hoWe_%Ld91s3NJwW z+PoECgHqBP7KPWK9dLz;Z&?)HvVe~&16grF5VjT0n(>>k0*e;Y89~JrpmKi&hXvCT zSx{H>Jt&snvt%iLU~&8=tOy!&0B?Z%#G>$t1+*dV187g2z|j&=H|PsU@fVgX#jjw+ z-#`KIjU`JFyem%e2aCd2(C#*Y176@^;h!MYknM1eD`XXagH-=!$x{5oqVR_WvKLOE zGXk`hXoajIXxWzr(*{|^e=LqWWEKB|6oWRtHLxl)utGP&t>6$iEe=w@Ll(3;j75X# zfUIH@tK$h-w5@T9t)Ojj3Ntwr{;_}-ku|Xj{PPECJRz$%n*-DYxFD<8#tI6fZ^DYu zZF1I(9U=-W3bQ%PnSTf?uqd>#nlUwqIQ|d@ZJ%RN=m77YQ|M$>>|%A?0*dHvR?sfL zF3=u2ftCi)Q7#|@&j>2^fOezwuv#606()lA(-kUCW(Dn`o6HIw)&tG8C`@6^Qk)9g*ftGh(KJ>w zrWeAF9m0y!LEP!AS&B12o8=T|vO2PWw$9CDRhY$^r8pbB%jbo#;v5d}-Z@al03FuA z3g)q9Db8hed?Bnj4`j$Z)-1*Ope=I>bHKai6c(_8Iui?773Q)kEClcJVNzTKQn`rL zjHyG|afuLUA03OrV%99hC7|tdic48RPFe<1vy3%MaXDzSoZ<@5wmOBWpe=IX8f=M> z;!2Q;m8@Bct3Z3@6jy`x&VkBGP{Vi)NNx>lmf~8_#yQ1xpuKYfey1Hi6G+J>R#0b|M;bhex)~$_*;5DFPWOaG;E5Ax z4$e^kw84%6w!e-=pYa#J;&#wRJB9760_{N{HK1g3gA=shZU?I?FEc0tZ*YQk-LWX_ zWX)0pZ@N?54GQx;tO~n98|$(_JL@}J79Old$_#H3sfi~K)D4b)>QUvd_Q@jB3*+tMcI|b<8Iu=c)4g8ApITS9jD$Iwb zrpur$cM6wTvlOp@opu%Ef~%}qiq}{buCan8u7h^Zfn0C{v>{L72FL}DOrU*sEDASS z&6qCmIlkdlyam#Di#1E}HfX1v;vH6ylkS29@3Lko-UDr~18uUq!>Vu;w9gKln%?k& zciSmEV9io|2--uZ_z1Lf4wRZet1f4-Dn15<9%PrD;}u@Try%p5vSukh18uKUe9r24 z1(dO0usRAVzGPK+&Z_W&RpBLgXCsH=D^|x7yo#?uT3)kefws@R0d1xOZJz^~^$sKf z+7tI4ycO;hYZhq3+y`)Ue+2KO`v~%>0*fZo6<);!ps-#58rk4=e8Hpm38eWGYnI|? z&?Y*?FQBmg3fd8;@Rc)IhLJoy*tO^UEVf~#I#QV;grT7Evw4WeDezImM z{$f@5#i{_3_|2;D8|;EVtO`FsyW&6u@$r}4zh0!9M(+W>6jawitTKU zoS+SK?Q9AiY;KC3Y@lNs*c=%ZyFo+`ctc$eTcKhvctc$`XlIo$98|FZp;~-=3oQjJ; zLA?mn(cyIb!HK+E&hZ7O;tY@pGuW~~JLaadDa>ROIL!{q=|4CXXR$ffD5C6>V^*9C z-ZnRv&0BFE8)!)}8)#?Te9)FTX~hL>$Q^Sg2ZaS}d@Kx%Ow6EN3;K+II2EBg=d2m; z$T|vuw$CvrEMm)2Tnyekw~$TXhaj{aumltaOFz3ai*W6<33_t^sYIQ&_`R2-!2o%L1NL1-oG#$iwT{tQqft z+^`w}N-oZDq?++{UJ`4aD(Q+zyKF9c&6az#`k(q!pptD1bes?cZ2NO&1TK`0OZ6yY>pGSzxIug7SfE?xK)dDc zvSlegU~^o-1==&mqVSL{OYsqCUz`F+;xU`TWALsr@TNJ1Cv2dB4HiwN6Bu_!>c$|-zhQ~Uj4VTG$nuL7U|Y6~Q~@ zTzSE(Rc~-Awy`_1Dz>vLw6QC+vu7)IfViDtZYR6HVi!nnH;Cu~?U+;OVJ}qd1?{8* zZIJ6_msacp$@Q}<^sy`Sv%4uy0C6XR_QokpWG_^l#I7)j9bp%EPn;_+2WS>=3TTJQ z6!t98?zpM!pq+8k*aaTi@o>QWI-T8-Q*j1p_nX2Db~nYD?2ZhIvp~kr1`%`E6=s6A z!4-nGz|8_}j#HS+F0D8ZBsZU3VII4}eD*@f4mVd`Hc+{HgA=sXjTOGtEn9Ih$gfMl zJKvVD`-3*NF)A(t8L%9@fo(Z^q2dbgwzp-Voo&*JD?xIrKs(zMRa+{Ui3m0e*Qdp2l`8mrD_W)>@n!*A0LdAoiEorX2%%Jri zlVueTfn*P}D;xstPb&m%PCLTx%F6_G_EGTWG+riMbo&+g9$qt&&}yN0wC@=5ceFI3u-=tFsR*r9<&1OJbRYn1$KoC>;m_ELGxG_L4p_AvlPKw*aTL$ zfTn*hg9I z33AF!_AJPjHWdbi8|VOO}#u5gFlP4O;B|2j%7(*mkMS~#*4TR9Y3L3_@cIrzCh`ZL{UuQ#nzW>92yJix2SqQI=clC8+9 zz^cNaz^cG##?-;9z^cGx#?-^Bz^KbGhfxu&0fyQfgYXpCkk?3pwYTts?+joB-5Ia| z98$w5Jw zmq9^Lfl)!|4;KRiH^@g_jEW+TjF9vD3nAzCD~KtG7b;39NPq`mwD79W@k96j&8ZvOwqgE1D@7E0_sf6<1&d-Ku2n$OKs(>85Du z$e?KD$f#)T$f#(eV5wkJsA#KTrC_aKD-Au&-wu43KWH5!XjL1BqNC#v21O?YRt2Xl z(0Tr#HIXik5{j-0tO~B+wT~bXcLjIQ(BUI?1s8=!?4Wf#teQ*`pq$RC@R;44xdPNP z@=#!fFOLKn>aD;EUli&1V*5b`MLz{E(0Tp>JFGy9lOz=V6<8JgvlIgq0u%!sSs>^8 zXDJ3dawvu<1S^DOf!08RIxk_M1AW33SQWyv6eAQOKr)dEkqTj;rdBY>VNciifN7vkb43g8NrtXWELuBDWof8C}c@1 zW;-$}<|t$<OF)SjdJ%vlBWOwF63_(zg^DW}L017R1FeFTR$K{+ z1C+Iqs~LHjLCYwQFoKpwf{y+NFO6hTTnAoaxQ;OkbnHI|Xf@<|(1OS;#f_lFkf5O0 z#0c6AvKi#?&5T)~bN{zMRBQ#WaNGn6BZc)~zrO(G%@^$E%rn4y-M4}Cz?VlV?f|8e zouKuR3OgA=7XW}_X$GU>OLovD053uQb_6etgkK2&vUo4Z5G*$VfSh&!bZLOX0gwwE z89=KeSrra4nlY^aRo90YK?T)eknY2bS&EQ501h!`DINv8?HEYn7w;Vh%VIYxo=RgOCtK^FnADx7D`QoO*ZaDh?r zA}Cxgf!9)AV$1?9k!00mI>D&;hF#$@qrw|#xLg69`mb<>F-!3(cxU`IkR#x$CczRn zKx-yJ;c}Bv;VNjYBxtCMLGczydqy9k&^ewx>Jw}DMuyEPI2x_6RD!hY*%OjB9N04w~f)y2y zK?(Q?71mjTmqS3ypSPgJo9{pu0w}y=%vO94;(h>gKQQ_$egq}|Paxtmc**5w#zN4# z%J+;4pFm41r9n$8nH0Z)7gT;@bW?<_ulx>QU-^@fmlag7{{qz=@GAfW?mB{66OfGg z2js86pbG&M{xZ5L{sU#q{~$XXK+E46nH2spDl{?`g3kQ^G;N77uh7dRt=I=zdj&h}-wm`rl2H-1KC%#U&Oa|Z$XAn@6c`mIGi8AmNlsw``HCGD zTT?-HP6IEQoW_)`I32{D0p`wN@&~PmWQ3paKNGYb5`4n{bmSBMnLx`S!6*E?Db5GE zb^+*^e}x51g^CNA6c&O`CqKdnS`f*ou!sq|9#Y`0BdB`=t%qa5y&ML`B_L-mVS=?7 zmx8!UnX(j@F*(YB&iG#jS_GK|I_IAQwDfTW{G9()OrT7#n#pkjlj0gC1y+SMOj)3{ zj%y(*U?=;7niMO*3*Fv>%B}b8=FAg7=gF-HS+t%B+-e0~cMIY|7d~o$);(@yQrHAO z=iiY-aSQ0Me}yefS&Cah3m!rCZewy>zywU;2w}$_Aq5B z?qzZm04a~vS$1M$|&bRw-+d!V=4qK zkz`aj&t%2$36$SHvYRuX05LwXn=@Yk*FG0O{=UGJrFfAE6bzR@+)Lma0zjwoT>;sB zg((ZPI`S$LWNDNmhls;AN5u_m~v#Gl9%`0Mhb+DN7N&L=v?2@jjEnBPM}m zYM|EH8Ya;70H8IHpi2RsFu5r{1tq6vpiJ-_M7#hkid1;PR0vx9_zZLlfWk{AX~kC{ zx!2%(0bVl|D!yT2a!_~!TB-_KQO*R~3jPjcFJ!T!!h6vA#VpW00Be{)s~uUP_W*!S z_;bSv~3a zgAsJM0HeZRrYz7Z$$y~rl#o^O|3S|A&jjjyf(pqWjG$$coQjR$Ws;4|Zi-Eybym%w zB~~pUq7}4?QlXW(5OlpjGkC>h8?!WQu_Wl8fez+E$fW}CmUb7j0;2-tS^))Cg>Ggu zrX8@>Hf;GMsKMO}GQW>mp%=9Du@H2@0INbjvlYX8R#3D1JuBwb0*;KJ)smAyt0fB+ zr+}74O#!dC1l=s4z@RXd8Po)4QJe;{e;PBa5k8$+fmLBTa~5R5B&;Dm6QpP+bC%*P z(9Hs%F(U@hT1i%g+03B8;o$<8;6E4@=P)}~E6xS2pHzU}HoyY9Y+w$v!hB|L(E3P5 zMaT^U3qi{xr4<)}?i%2OE$P3&s<;?rKjfYPg(b|2OF`aV23jnsu#6epI^V(yx@~|} zVL5XaWWA)~N@m9kte{nrtO~2Z_X{YjW(F;iT*<7kh8fyAUkmcUTIMX!YDrd2rY)?B z-`N$`F)Mrr7bp^-iw4$#R!U}pE*sdws<;v4jE#`X1~x$?HiPaE02L@(z$+-XfDYFO zO0vfT%bLx=ldg z7|4SPhrtg21*$53v70l0V0LU^Q9K3m<0+%a`OOK;tsRI9k4h4 zuq)hTR`>%elp0tR|AIXB7uJNl3(|X+8QioM0Qa-+fzr)A<}A=6%Ly!s4?qeYFlT}8 zCwRyVxtu`ZJ~O1Wcnp$!%nTl%0$or58Yy4~jZlG#=Lsx|PnjJ#6`wIHJO$lF;HLN- zRCc@orSF#@;uUBSrot=cLeM(P7of$I3a^=^L2E4;72h(0R#?7eE>wI6T4>431iIOY zQG@9RqvCszp&ytP-h*x>a06XSz@YdEWZq{G0lSc(5Ofj2C-8#Hugubl-#~KTK{pa8 zd}l6H`~kX+0NlU@m4!b+UjE6PrT7aJt-nDx4=DU*&QkmXN=AQ~75;#(BLFR_RQLx@ zM*o=|e=vcTRI(~Guw*GVf>u$27hN`i?-}?HibRD!;PC$k3hjUF=FC5sKqq82vna5F zuN!Cq-7=uq$^tT|4J6pclBEc~g8;OwvK6$lQs5JZ;{s;T`bt)XPL?dtFQusoC;dkH4SvvfWkDELdEHzC2P~cD+D{36=#5S&w#9|oXMg%i^Y)zw1#pPeWF4i#Jn$*^|JfZcFe}an>7CD#rMLieD*$+<dYKw&Y9;u02+K}$h`OIfl&>nWG9fEH7(0o9c&Kx~m0Egll7SQDZYrr=PIC6m2QmzHvE06_RPq`j^G%^X++#Au$d)GaT^QB#O)vn z$khR$TLVB6J3)&pK}VG}b0}ZeG zcex96kwCWM9uRjgXicWVUKW4FeW1wO4=XvS6*&tzC8|FOUcU(IyCnL$mPga3plcX)>xhb zEwcpOCE&;bT3dMrwzg8?9C-2Nc^1b7ETFZOtO^%kODh#Xi!3jJFAq4+0_qE#0Y`i* z$g`~+=FAIN93QYKUIy8BnI#K!)4&xL&=msCDSQ~g@BiywPf6?#~qyIb4AN;^S8(8*!W+yOGHmlc%j`dAe} zs~pkp3g}=}oCuP@aalkY2WX)qXfGmz0;?u-2diQ?$Y{|1z!yx=@R`Eu$f-#2T>;?x z0bn_69;+iOXqhAUa)4~mfnCmxzTo1b?ARBZ`04rz_<0jA@0RD>G zKn~vyB6fh6G45b31g%xv0=gGKVJEA!;x3TfZtzV3yII{7_kg&2L8}%O_Occ#?t{2~ zACl|$gRTT{@;Sil;!XISnGtu!8OZIKx_~cow|4@ieQ#SypMqb0E3% z;Hv=6v$}y6Co(F+7AF=$4*mxn$ik}2@SF#90{|oZ27p4vtDuwPuY!FBX~clnCW0mh zelRLtXH{TSxXzjdx&Yt?D8NBuGdDrLxycIZYk;`7K-^n!E@^onegMVZ zM^=Ropo;;r6+eNvpTXSEtp1?YjEst3K}LK7FKPV7TB!IPba8;fSI{a&Y0&aTM$k0? zKS0+2xGDYuDg6yz!}y!EQ1K5qDKa^LPW|U)0ChK?@hJWUsrkpM@RwELA8R4#*#G~a zf{zJYO*XKBnlDJl{VO!Ffs!UXkeWdU|AQiY0t;vrBdY@XD#nL)px|x?nbXb&3Sbbo z1H|oMgT-Vgh}#L~f|oUd3QVwC(6ah&kR-|t0B1lYe;=Ep68a4QGgv`u99b1mZUA5b zEp40xI{6>GwvknnX$322kMtBag&ydNsi~kPj|x-SvJ|JWfvlVkvT{0G7HCQ13^uUD zOwfWxP={s~o5D2E%0&MH8Nf2oeE{GEjmy~}YZ|37*EBLYD6C}zWpGFa zUdQIhstCIhAX{+*h`SNAno(gRn?L9R07k{lp!HW<*c3K_)+QE$)+=scQ`ii;0YF-D z8%Syc5cd$6%fko@rNf|5Is!WIU*QOwo8nQ> zO3Gs(i;shd6Ko1c*%VH&6@t$8KL$PCUs~}LNbWS7!YMX|(`8;uSW9^WY_kSJqoI_RGjygG3O zXno2%HZ!I*yp95(b&9MCAK0=$D-=Jn2`mQd5&@m)&#J*Bp!gYN#b-7%rVSunpV-Wp zw(vSKf>tiR1fB9O7(wf1KuPKbj{+nm-Qsa%1TA`e$)+%ky-;yFNZ)jJD~3BD1)zj= z0>l8VM7;oFfMV?mkD~zSf`Au1iZemV5f=o^V9!#V&F*-DM{y2FVh(#2XjSA~&`kkZ zit|9LAwfORi5v>E*+JXxnHd~86z8*pIu{E->KCwQDJ}#rgPhNvrML)e&|;9pV)iV> zC7{Fo6+jY8L8~G`22J8nSi}z6h0hEsoS9GXfR5&7RRC>3e!&BpNLU7nH2CEJ0(;6p z3wc(61Xr+UftFDUfG!1C2|DFJOK~-51*O3K>5QO-N%I&L*ML^5tz}nO16og6sJITa z0&X4XAbpS_>p_OBXU|gH!0u?GxRG691G~aT_AEv4JpcmjNuV6P8Kh=2Bn2^mmQyk+ zY+(maJ28N+1YlIy$_|?Rg3d8-1F7D|o~5`Qv}RIZPZ@Z4YzIhm2YZ&{PIiTz>;j-w zX){2pEI|`3>{*JtLCY*btJ1)$oA!Vd?_tjZt+W(Sgsrs9Qrr((WC`=x0!GCHAfFv% zS2zG#a#^T&2;{RvFrOU;8FH9COYsQ1qm1HFc7-FLwU$|m$JiB)v4ac&FWj2XsCXP? z$_aLbiwEW{L0D4qkUI>(-+ zcpemr7eF@vC|qFAf}Z-{p5({?S}w_`a0wQOmq8jp3nsxU*RFtgSHOYD4Jr>`@F-3J z9pVSx1nwvRTRNGgcnzG!u7i@&b@nX98|(@_AJoS$rn7JwUew0&?^DJ_W@)n-UF?b1ZkYc0a{l%4K$qM$f$T9m1m^LAEM%}^SPv=$nH&_DbQzX2I@V@6GI^p% zDKI%Qf>gmGoLzxQfgNnxydxk-E?~?OXt7n~P+$VDB?P-_4`Y_V=7k`~Y+%e%U~=5U znB}+v%0eauCQYUdjONS>zy^WT2=vG+ zfF=a96uBH36uBLDygk66$fLle!0pIbsKBehBQUd6fywa!W0t_V1t2@GfbD$1nB{l^ zWas;3AVGsHfoo9;Od3okihK%8AclbgpW}_U2N)a;96R0}U=VojWybUdr1TGCmcWr( z1t!N2V1xcJW;xDycYwiB#&HWs-3~_uCdW67SppZD85Q{zm=yTUnARL&bYu|tx0q2; zK!Hg?z>I0b5s*g(6$BNS96Ok@vcQZhX#TvyXwKZh1ktbnMDv?5En$M_aOBAXEtv!b z#|cKz(k2c?Veom83c`@kfQOi)1t^F+n6d=Us(}1uBLyNYq`>1upm>Kx=NcwZ!wY2o z8HOy!+YDKbM?n6$6$OsXHB8))RIrB0k+Bfe!U4rHSTD@8A_`0jB4$imz)_=-r63~k z%?D(c4%kKwDQ-|AS^`?g$)wA$lu=Pkfk{EsieW9tYhqRm>p)hoWy*3q3bJ;Ro1(Y^ zlY%(d^4(w~VfIKUFeylwG3`MSlvH3+kThdDfFdZRz@#8$#&iTlP+EaWLE4Pz1X5xL zc?XhNK;AwMvLEbiu($%F;~$1Bfup%#r>uvBk|QW$ zCVL+wtH7inqshQv&U^zDVh5NY5d~2qumc>*Ync?~L7}~lNl`(8NkQI<;S4AY6cnr& z&VtgSq9Qo@!5gXz6%;{RnF`(D&SkJ-_zLwVBZ$eZz~uOi36zY!g2@9+SqkzB3Id%b z3QUf3n6m`7f-^Jdpco~HQblD)Mnx5ftfH!dl7g~=3Mf0O3M>M(;nkQN6rgsiA=~Z9 z0Xl3{0d&fGR+fUg0+ZteX4Jetf!UmS0}~Gu$VoexK~9>$oF(u_M1je11(>^oIZNPN z11P9BfZe)+IZNPO6Q~e_7z-+RK$=g0Rc~O*ay$Ww?gn?LgA_GDA%lz+G#r^c;b8+R zZ8aQON zDd>TOz_J3%g9MhCD(WjRIVxl+=nM23gA##)q5+6fR5VmzQZTS$I0sG&hE@#cK@44n zwM>deAO-7~6pa;(9RD*GDj0)EP=bJXK--bY@dwDIU=J{X6904-aA^V7ZQ{tFXsW=Z zU;@&mU)7mBzdn6l?_gEI=-nQM3nnM1x7fjHv-s-`krpwXiZffCL>IShEB! zs+%!&u!59!uquMio^^C&RB%*q0J+qamk}!Aq`;)$WX81MD5HXtqabLBIFsXHmMjHl zfewFI2sjF4DL4uAgRK=&bOG6*!6abD)C02C#f)hJ%-SB-EP;6%;M0+rG?=EaD!Mu{ zD7rZ^D!3`QB3V0yRnc96Nx|KWX$ixECo-9EJ|e0U^Qpn0CUv_)+~VrP*fiPhsFU`MK4DN zMQ>1+cVtxXR`7y2jR6!Q2Urz-6qpoz%$U}Io#7*}aUr7>!% z30z6FVmJnh0Vc=gpeCJ{6~l2*L>y<$5@_*K3{hZG2(ehz3Tu`^xIzTzJ{TrQcgl+48mr?BkbI;9ljAYgEQLsc zn^B5U3QP)7Rt(ochU+psVpfcH_JMV$NU5 zsF?29^Wgx4VumA=VkW2seU$;S!5~v$sTJ7116M&V%~HrhcN+77P{%%y-fRUXg={mX zHK4eQF=N^g>L{R?qmZM(Ov!y4ku2SUx6wuCA$IW~Z7Vscynp+G7HmNNRWqaGoDT;W1VFyYbzB2-Q64BnuQ6mP&<) z&i??`h3@NM$!aJTDHOqF!7LPE&6yiO8D_^NhAf3NXmAPq^l@AV zN=&7WyozO@w&F!_+5;;pRVWkq9q+gYlH3BZ zfMl5*!HOysssx_LJ6;9JS35E))+jJJZh^>yl~pU$2(*ZUvK>SaEGH?jI}4luUYr9t z3lx-RE`Smq6DZ+<697a86q?8~pkRc^fLO>fpaj5lCcvEeg&#QKfmJEif;K+YF*zvI zf$9}dKX?TwFzX=O^_UzFfJ!PR#|DtwieL$a$#Dmga4|x71CnqFLU;v|a1KIv0g`YE zTo@GZ4dLd@GeEUw!&!zbg#=J3e~uwb;E#{vHBd0tJF$uqx2bC4tNF z3N-?6!7=pV7Fg~HbCy64Xk%R?DBA8o1i^BRi~=*&Kou863?wD6QbB>qamo#bECoH8rXCYh84Ix3#Y5j04VlBEdV zJ*ChBI!qi^>M~tnG-vt~4XKINGg>ipgK9!1U4~<Xe63>_dRTmU(N$??N&hAe^4pp3ExBmi=yBS=c%q`Kn=P>8jGJl_D4V{!y5X=7A~ z5ok>S4euz_6k0K?1(~+s4t5VMfLaT3-#QQ* z0}HTrMui%I58w#7(*qu1Im3`8u)_(IbGpHNurQ0jR8V)}#t}wvh=NCe6jHK~awF3T zMswyHpf-c!1c=5z5DKJ6U^l2w{Q{~RBY>G-fc4Gj0$T{x4pJ>}R|r%X_QGrhbuv+G zW!}JK&b*@+6naxS!MdS_?C53861c~sAP$P34n|M|avhUmC!+#{y_N~I@$I7zXww^$ zLKmYo;}4J%6uKA{a>}e2et|fSM?m&wW+`?vDs+QQ_;rNQih%)?7W6^ttr?GiY*y%I z)Ma3>V)zHrq`;&P618Uh1LEm|1#?P3qJNGs7Af|CT-wvYm?Z^D$DI%w#D{VfdKd-X zu!CH?o>38GxMNE@*jr#Vy^M~Gg#!QCL6Or676!|LhLr>^fOSo0QS1X*@udYU{RgC~ z53Fkr=q&ht(B3^zQFatG+SdjU9B(iyPGV$oP?!Whft|_mz#Opr2arLN7~zHJ9L6li8=#YR89_RxfOJd&>zE9( zWC6&~DR9*tQyH^Bn;apg3AFlx$|z7$VR8gXInMcbfWeVV;7z>a9%jXCNekfjLD@E;)CDQ7Z*hmb*+ zNz7&x_$sNuJqpe>f*;c?K#6LT3Az?~z|MoI~R zOJX41+rhd)N(CkufqIIE8M8n`sPn4GQ#Gru7HA(U zXi`Iy`NuZUkddQ>;#$zYR)w{USqf`GIzj0M+E8#b0Bv+#!>9ntq3h5kH9)t4tYK7G z&zPmK9$iuav?q2AqXKBUVgtIQ1ZbP=8qiMJEQO8ek^+jGzz*8Pn5D1@U6KQI$H*E+ zh0Tmvpc_UYsT|?jEsP3VKw3_01;r$o`C~gHyf2}l2-$qg|#{d&zPmKA6=3Ibot6IMuh{6 zSqcZxBtZkyTNtwxz~vaoO9KCV6qp<@fMS`+al#hR+!CnN;}v)v@5l&kUTy%n9z0|$ z&;uHpoCD#5gdM>ZBDihY0TBgBLfV#Bb}~XMCD63l{bo>mlF9J}YnB<)7f{Kfz~p!x z#Q6c`9AL;YWBLOwpbj!B90a-i1*k6rVctL+ak#;1&in$Z^Et?v22d+OfywbZh|>b* zNSQJ9fEi4V*Fd5jV2-pI(}W|8jvA1AXh1dHK~OS11h)`chbus?sDUd0S>_0K5h(tc z85|{``?8rF7l2IwnU11BK=CLeXfrlU0l2P5Hi1L&7^A{5ki`%az)U0s;8e);0$iSe z1LOnfhMnUu4WLcm#~Bqs^IQri7zJiYfT|=&G=LNe`~X+%I}R~sDHtdi3hYn?MfE{& zi3Ac9_&1*sbTGk5P{n!@TCq+r0gc~)dmAU=HRS}8EXM}HEX7ldj$4=%PlME-2CF{> zatgQ;aT-PO3(+jaGoWjCKov$qG^p^`0Nu$0-b27M;wfTTigy?tUoa@%1u4D@ zR(uDf_yQRA2#3(>#LGk2ygjtP+Z>AWBjZbXFYbKv>ZILu^(IS3xujsMBf2 z^Z~3=Qjr~`QbG}QBoVt6!!?i!4l9Q1AezPT8Y8Iq0olc<%OC+7IyPgv0g__WWsrn$ z?=UK`fM(r6OAkOMJ2E*kfFWa{z!Q*M189Cu0c;kA+ylle1s2B!rYwO*P{VxUg5wMV zhXNHr7IK;~{Q#{Gm;e<6U0KOx#`Fi|(IsFbxdgUKfF>Aq8J582s#!n>hAm~XVtCEv zIAi&721jiL7RT3IS&khb&J>VQofe>j>vS1bFe!o$bz8%v$fLjlI^5_D$O;}arVm^S z+={#kETDspnxSGXTna3XpiUr@0w>(s4Jg)bWU^wok7VtAn6*ogt=+<;$Ok$$YX_4e zzXA*Byrc&pEBMWro^UDfDGDgCCsi*@F@^dqG#}AO+23SkPPn83l`x15AqI zprARzq$r`lq9AU?a0L_$5@t*{xD>=8S72H(%!Z210a<$jY^@mF+7l?&o@BCOIF4lP zahSDFkgYw#qzJy-;Q|xrLQMrJD~1ywE2Pbs&TuJ6Dat6YfR2y?-$pBK#uXjyoiK>!l68cYq$ ziV7erT9_3T6<8D$%$WXgE3hainlUwitdcWhdH}lLM&69+35ZrOV|oFi70sC5Fe%77 zG8cmGJ!9f_JOXkzIOb&?8QdJ}3mxl=K}iQR_vOf?B| zl7g&)QkH@esH9+m%+E40D6lwQVaigFbz~GcAEdwnT3+;s6LkA2C@F*Iqans!Eo9(U z5K-WS3&S~}vqd4r-zsL%EH#TGlNG}%X7IHGtC$s)6~L)jK^c@kyuq`Y;JaiL#Gr_47DDVT^4+k9w2-5Qy z6h4{?nxM!AxemlY>Mw&`2kI|B0J#n{g9olY96^>pfVu7p#C4z?2426x02+Q;AO#9? zaEtG(Q(#drGhS zm^xS#9TZp;9L$)ufJ#uX2-vmY+pZnJu5Dle*Sde06&)2EK{bs8h>#TMEe9p@EJY`< zdz};D)0EU*{`wJTP#STVduDr?`v%Gx6!Ght=z8Wu%& zkdYf$z!wXdL5{k>q8OmSqTp}F^aSLn z05hf+All!IX$$BEiU2dF9k9r3U{MTIU~$~TlBE!c6eN34Y~Rab#c&d6kHvdLCY#!vDHhij$c5|0oO~epyGK33#48O zQ*c!X%Tfpf6{IXk^->Q@mVzs+Ub?~pE5cb6SR8v;patj^7El2S+8qcs98^m=GAo8N zIVdoLQnErghy>MHpjH`+;{>$)Hic0!0_3F$jEa#U>lw2YA{8Q_rP3VGL5D0FOfx_S z9I`krV9Zj8R)`X~(F?xNbP4FVLlzCD1)z(YK^u;<6k-)(1SaKy+8~bLg;5I`9a#`| z|6l<508t{=fNpx$V5(4z2Q|JKLEV=)sLd^)!wy+Am>NKfAXpqb7_$@-6%qt4Lu~E= z9e)VQ){KhD3M`IqSh5t76_Ny&hqF1nj9JPft%dutAaR!0O2B1&?i-A`A{1#DQaclu|XMo8!ELj3wAbWm* zqoaj2OJHdmsAI9NgTU0&*U>&`CkGgq9!)VrdDbIBo$c0H?SVg;da-UW!7R851Z4ong&V zNO5EmI1Os_yZ}cH$OjX%K*=FT5qxD^hC;ePV;!ja1IwRb%@Tmfmndd{locpsK;%J& zK|W_lLXEvpn|rM&5B_^lD+$3_I?4G0<*V;O)(E-ZwDLrs_;BBrUM{*^Uau! zfaq*9rYE3#A9Bo?UV!L4Gp08nI^T@x11lsIC}ctkjZAEXMy6xS;^Pbg;3&)l6&g=i zA%#YPLZ(6iXvqhQ;}ce-LgNN&mO>`1(CA?U1@8mKEJsjUzrhMEGF{u4LmWg0JRH2^W!XzE7-CGAnl$Q#Y&JHA{47Y ztwDw?g(`(gsPj@3t3gr;iZu!>j(6Cy1hy;$dHVtzXokHSDt3tjT&B%n%M$pFXk^Y{ z%W`CJoC1oTJIDFMv{};}(Qu18BGdyo?ak7jJ~@oPcz^8yQjUVzXj+%?9a+aDkZI3iTi_-eAm9 zYy#_pCOgpisnBw#iP4b<BIIxe7z_oyF0_o@g`v^3H4zr~LVG9el z;}y6Th%F%3b%Jc^M6#t5W((-*D#s@uyngc45dKk@^7J$mcE9_Yc4UCRFaC@$x z*aJG?y&uV*ewaNiOOZPDH`qb*^eo_0-TOd^w3pG0X#&WeK1MU9DIf;O<{hB($w4;n z0Wm;o4uBXSHAmQ?(bvTYDG0k5v6X~fjE+-47K4jIP%vpS?SP&#)z1i8xX{m-rO?j^ zDoNOp%ELA6Sqfc@&;n7H;WZm*lAp!#0Xwv0Q~=%h>bQm-S~Naj2N#V@+z`t^MI$U~ zCW6fF07nfX$U0Dhtdre}VKY*YZH5OKa@6#&D^3D8p(d~^P6h?pBt|o)EufH^3_3Cu z6g5*IQG-YVQ&8-g%5KH59Lb*LFngvT+cSe5bl@zs9{i?0m+n* zqHqRUQOIt^@E&w@h60NtH;BotP!B2SK$Scw>4QozS6&8C@vgyigVB)@Bmf#h0F`fFqWlgUqPzk!1m>JM9H0dcpe8?u;(Sng zn#X9y^aIq#o)6l}0Ahd~_y?4FKn`pGjpl>YfNvTAsp;TQm0l?$#G0;V zGCDp1DFLUenT(+3&mU-(U%&`D^BUA8SpZ5ie~`2M2lgzGHIM;4U55AUir_kZ2?s38 zgSj7IS$+uzILk9~Lo5TOE68ZmB9O^@I3OF2SR6NSWGOBNog%sfDz3Pc5wwhA5omb? zXuHu;MuA13=7$8xo(&vX0(-$DKQf?25-gyj^p}G)Dr6}vXH;0mC@>v7^rHe=0KuZc zqySpyz~Xp?BTHZ#*nKBBvJ_T=4%Y^aP;z7mT;xz-ant}AeS#xPU?13M9njhb77Zp1 z&=Ln0M}sWTI)_z^0yDryn}8N9uxKzDfR-t+IKJTkuToe8a>NbBEP;*1pw1Qy2@PVkz94IqQ= zfOcJiZ1@4Tp@lO`UbX^_z7ubfs-*b=WPO+2@2B1;F6OEw3dMd zwC{flNJ1b>U@t^M1hh333bH;6j#iFxncsu6^z^v zE5NP*T^Yv=-h<^Rp}2=pfk6Q@4Y~&umJbl?PXs{gE*KP`%Pzo!wXn4-9H3Pf3<}Ui z7syi37(D<^+MtvLVSzHxey|uQmu>;GE`a((;4TlS->?%b25Rs_SfH-XPEhg%bqpUP z#;H#*Bac%*2F(gi-~msbZZu$$gKVl^z?H4Uq5`U87&Vz0l$4wp0>L#7qb4(lk}?uc zKuHD0Q&CWIs&5Sgt5Z@?4goWm9R++r$57}nNP%Wn^%x}-L1|pc4x9=Y9hnrAoEjP$ z8U#X=*rd&vzy%|Nf|8R$$8rUb01K0Y;|xYuCD2(GERNvhJcIEMH)tYKLD`N8T&#gi zQHGhqE^Wqigb6g?pr8yk1thQn)S`tLv4k-T%@`FsrV}6yAY)XJjd=kYmu65QUINF!dM7W z%gyBAxCH8{Ki~p!31sFT((-u0tOUMuYz~(aqXMS_qqnpYm!qaXDAvI~;NoQf-Gl=& znah!}P!ZxVE=NXpumtEj9A1c|U7;eMBLiqI+3^oY7ASo|hsVDKRSWWGS(M-J!tlslcYd2r``;>_CtiT#g!Uyr41x6ntEc zOeI;M_%$VkIF*zuJrzv_^l^7Mcz#+*94oL+@N2U@*aAOe^4xl}V zjE*%Rds!UcK-N(zfsVuhyA|RxH(myA1vUkCZxG>`tq9tt=2#C(9@2`Sds{$J1H%f8 z3asEn1{x4m;sIF+IXQ+05<{Ta;c;XtQQ`+%>c~{)2nq^E=0ZhYkQoY$jy(RLRHn%2 z#Gt4IQqJc1=l}oz?1iA^6A)35!xb1!nHZe7>J*e}l)yP39Bu3h>@Z;`g$}q32PlfM z%J5*ysDR25PzF_0Qebox03{wakYm}PQOOI623}AovY|T!tQF)CMMiKIS5#6!XjOm} z1iTCiJfK(vbu;+06qJ^OVw(pPe>|Z0=7 z&`_QNBd7>xa!}v|S;`4YfxH+2$b%YypaKJHDg+lLV3~mpKzL$MBrPSP1|W+9ry0`= zX3+FECn#BhY8Ftr#0v{VPEgY11tm>hutG*|1rCr92edR-VgzMa#|e;`0p=`6Xqm3S z0upls)hdcYOb!YVWm~{wv7q_|p==9VmLrqEWOndXWDsRHz`b82WuUkr9xJdo-eAvi zWEPmrt|S63i$p<#e+w9ucoakxc)X>RxE(dTVeWRU$pWo%as;`fCQA`C@(9vhlcmU~ zAOzB_D5f9`rol^MdRP@D92pcPnH>})6{QroK}i@~qJrE9N)n(_l}~{YQXfDHS4dF` zF65Qiz$GfX0-GmzpizMl+_z>>lvdzTA_V-fpmG!IA-_Y6I19j`hW$0uHlw1J!9tf(p<|4y=qvfs_hP22_tB zRdCXve8mD1gjQ}K>y_9PL=+f7UI*I%uG_#hC!+!zsOChe+t@)Vj2l$=IdUjUb1R4| zfU&o7TD3BGT9a)M% z;Vh;gqadar1I`kf{=6J0=@}NzoJ5ARj3PHYoIz}GIHM+JSU7V-!WnB~p1?}ia7Ite zxWZY8=y2u+g)=xYD@Z#sWr4z3LV;UBLV+8Wp1H85XINVdlxLvrFj%XM9b9U#DX>#9 zJ-=b5Yd8~|p21B~qQe?oHNny}BRH(36qwz3L8m@RWhu!iNIM#2fi~=c7CkU2$t%bx z$b-{6xJAsPAO)(-B=Iziks@OWWYdolJThR7Vg=CJ18AdI0a`JFs~1o^odr=PYB0TE zR+0tPMc_`3EVyYd4JzOu?O$ndJ6RgkW&^G5QB(x=VxT3HG$hAJ!%8O5z{Y^|ZqVaV z5nL`&p?4z(37fie!PcOwmoB56>bk_Po|6r>d-K-gPa2^@#~cp{JdUX6kR zq%Xs$!0N}#$PMb+`0=uWME!U{Elp6v2E0}k+{prs2Qz}REE~*OqEKfkuz(sEpx6Sn zXKJz(!Cg>SUKRyjNU_QTqSzHcnO~7nfgMzTL;8b=rh-2&3*-`2P)~pdR84`x98@J@ z=}MtCWEDY8RTWT*!stq=fXa7xS4sumVPXNb8nAYlNa{*~`xBsn7ey7UT`61*SY(GN zGJ=P06jhMAQcMo8As$c=@&nmnlW zPpJQi=p=#6Mh-ZH3`*b)nSLm0>t9|GJYpgb3Or#2P(hUi3P4DwR2~$7;Nq1R(tTob zP>=-|P_m#imzyzRVy1mPJ*IkH?^ZVygn9f~10^$KKw4xR7r<3a0SU-DPJjy>m~xrHQO2cqBR$%30VPs-pW`qpuGnz3qh&eKV zh7c9ltQh`@I$mK>1f3+yo~6j)xPwKJQ-MK&6V&tP0-cK2&8EPi&<&ls=T_iQ;Ld^^ zZknaYtH29duE(dqqre9mw_^Y=q~%v&0G&AcfW`3%i=u!61N4G*7DXWi1_hxkMPUVD zkhwi<3W5qfP;*5T1QkTG6h#$;L6n$+7|2|41yKcY&>?*ciV_M83K9Y*g+L<>3JeO8 z0zU-7m#s4>NP(CiSQMod7!;&I$68L=d5}R-){$9J&T%@332NfXD#$6wE654VVRMuL z?Ke?S$Wl~PP*hY>P*PwJI02gVS5#JDQBclOR8de-RCSb5R8wG4P|E@x2C1l_psJuD z@JPgwLs8RF1GK1LK`Tp9TR~evGfPp&kq5L+UqKgi8loOZL|;K4%omK8%0aU)`o_L3PmdgO9d-8MQcX}MH@#(MO#Nk zMLPv+1-n8;dj%T>TLpV*MF&SlMMnh(1;;|jl6EEs1t(DF{|*Ca)w-*q3zLI_3oirc z)?-%%76s6q?2a~|mE#KTpd<0z6g(81A*Vz@)&YAuHiE78Qt(vp%2M=plvnftEg3IW z^i}Xx@GeyJb7WNXSMXEt_m)!d<6~lEV&-<#0I&8A$Wjbc2viJG2om@^ff1ArgB2JQ zg0mDu96x{-R5K`qW+{d_eqmJ%S73qO#jXgxh+W_sr{e`S#V7?9g{UmWXoYCS7=;*t zY4MPA5EWw;SQKK-nC`Ga`Ed#?3UOvkZ$NV%@d_*o@n%ea*c>mgC?+VdfbUONNK{O6 z6j4l8NK#17QcQ8Y!=RX|km{)V5Lb?KrLVA{BhC+%$hC(Vh1RNO@GZk1A zGOZcku!2m>QeaWY%2Lc$$X3j8{J@}?tB|9Rn*~}7s>yVL4Rqf`o%HNDdcA< z7J$4_sKBC7m<2w2D?bZ#$QCI1mnak{lz@^y=o)nvg;Fbqcc42&$`n`>%B&dPvpO;> zmMgF*lv^=;09#(6z@ku*rC6y@saWOshe5Ggp$c-1I*TUL9X8O_7BvbJpqAGv)POHk zcf7-<2wr2DrPu&kkOmTLWK?JbO;IaOWK*b9mfO5=aHqbh{$zYuVpu5&Duz=T*A?{jN03ABo&*=CEvSLeN0wegE^@)sN ziAkVq)j=UQ8GNJ*X!#Q8lacACnVr8tcdwCo6U;rev2K{G)90^OZH6TEx` zBr%IoVHP+9rm!hYXH=L1%fx@!6sLl6@l-Z*<_nRQpEXCc7pscnBbc4F9;$D!q_JX|ig%LD=&jOmi z2Q8x54LTt~VGqO~po1tK*MNfQ0O)K4fsPUe(Ds$3py4&pX{yjlZz&_>mRAJ^4W2|eVq}s?_A*qqY8tMnIrtpzbVJ6rh0nlaa4IGN!K-{AN`64R+BiHiaLI3bVilaVY))yXY@S{a?l`#ea;TE7<=qW-0y$ z8`J>WzS_W)rP#=%(8#0!l4t_m$_{eTY&M1ej0&?s1}U&;GM`{qoC7Lu=CGMFH*h#I zDmH`kHZy_SYzB%gOpX)SL6^6)D6}$VDYk*HXm4T4Qfy}eMRx~CaR*bDVkeVACzAq5 zq6>6mJIJEBYzpm63UfggIck7zbDzMj*aK4E!;}TO&Ak_Nn|l`MD)$Bs#eR@PKU0?C z1SW+E5Q&LQ3KN+?2F+tr=wnit2R2ASaT3@?lR@g?_qr=gV#-pS3U<*nki;~mEXCJwIZO%*zy=8@E&#h|AxQl~rYz8X?~9le7Jx5&2ZhlR zki-(EEXAcv3QHjp%a|0FfnBtaO<^&U!a}e?9E!`q2CV?8U%`~6xDs@SyTWp&EX7q| z7p(?KtY*prUG%;Nav}U$CWW)kNTx6_gQdq~Nu%5|HaRcbq?v0>Jxi^7`%}fd#m=rcM6)J9FQUKrmuCRqkT5&5# zZX1)rRwjjQOofWunINSfj8xbTy1^T2$qpuHYiK8v!VV^dolIGZyFixg26J~ac_{8- za%586%cQW2NntOO!X74R#eGbUwTk;e*Sjn1XUbAM0J82N=+1V9gG}C13I~`#?Kx22 zRPhif2o5n>G5i7ZcDNFGvlfqFZ#bZp4Jc`Ge6pk?| z9B0Z>JOR2){v?ya3D7<5S&FBa6izXLYV*@fjypIM&wxxj!<40XmPrA8lY5rpIVOd3 zpljYiZ6prR?d>O+6wWhcDPCYwxB$M`ehC{$=S7gti%eOHmzWeTK~!7@-O8@81RNzN zz)F{bqGTzXIr9zwyWCk6t}$gPUT0Fc&IGx?UEwMdsD@(z z-Q&K4L-7{K7LKFWnka4XfmzgR9p`7{c<*Q<`bNtu`E!#o?Y=R zEKR-x-Sw{Uj>%2&Jt(<=P7+Z32ucW_m_YZye_|>GUHAThN#P@t!e=IF#V;VauS^PG zm=wM;6)JuMUE0pe$ioKe_1xf8{0?&3ccv`GA574@-A`~T{sIa9V#-qd&7|;~N%0Sp z!cXw^>yZA<4Nk?sOwbvuW-pj7g z%q*=4yO6zw8G0c*C~qjVfv-Tn!=TvCtkBNvs@MU#7rld-m%(uh7wBSk7KKjcEX6Kn z#~YlA-OLIs3f;_EiapEq;Zp2{o_nnbyOup$u^%Qh0en;Y1ZIE5 zi6A#lVpiy9R+t1jRu6RR^AwQSRAz;V%nDPP3qe<~Pi9t_!mKcjSz2*Av%+*{=%VNo zoS~eKQ@Wtv18$dV7IBwxr+yb&>3v-s@R?zL~irbhK zwlRZxcpq34w}Z^t4!&F6@c_T#PLRr-%vqqD)ORt1Zc)F$0lGz<1#yeI;yz~3#p(N) z6?QNStmk*!zze!Hokd|ka~9~n^aIR_2bmp3P%lfr!vMN1{Rp$G;!#lQI0{M~H~18f zfowa*oCUfu{V=n_anN1q;N;-Qpm+i#cY@iP@eCixijyGjN#-ojMd_!Q6;CsRI)!JL z6;6ZhNY7F{%M4n+zJ*_L1)IWIW`z~to(~7;-t@D~3g?)!6wfn*0^$P5lncyRiWiv` zEyUdPn zxE1e#Oo3dBu5cf8yLy)517?K>;7h(&u_@eTR#*krxq%mSQ#y;nL*^{VW$B8KnL+)> zC(H_unH8QeXDL1fhs7Um#no(}i_uquwQ<0&NzVdZlm3TW5wvDh;RSP+;!9?Qm!SL8 zvlL%3E4%_*xQ0#PIkUnVuucKR*UX?80IdyG0L|>aWmb60tnivSOYt2uD9yYFx%@qI zmf{Cyg%1#kkIV`m!8e(I0$r}I@CkHbxg&?-XRtwEK5$ z?;wfq%vq4z(-l55XDR+~a(ONczZ_Em7VI}PWe#Ld5l6D=NIr9cy$0dx4zd*OD zyDI($rLW(h^wqFu%AOd#HdZFS}7KKSH3X?(i zt4k|R1IbNiQJBV}FrB4PaR!UR3>H^j7DoZanJkVk_!Vb?Y@NlDr8paO!MegsmMq0N zVCT#QNx<(|2TROnQJ4?DbbA5#0`>)UGS_D!LzeinRAxjqMF7+$?ic3Kf z@VnH(63bZ>ma~9{C)TqmEMZYt4~xtz{E8buk-34*ocRSmsB~MwqQIcAf+b6FC5vN& zfZ{5US*uvG6j!q-tY!gSv%ZE!VI>Qw(ZHy<7VM67ASIxS)Yr2ptY-n;u+E^cmPKI$ zi@-+~$2S6s8$t3LVHd3{Ze~%~%mQsR+!0U&AB?btB};KDi^5hG(4FdU1QfS}w7~CF zSKP^>unlyjI;7FCi^cJW0O-1O&~52iihICUq3>eJQryepct=2SA4u;$mMq2n;0w}0 z5(iim4uE~XkxgMQi^4{j@9zjGZUXs!6Pr2n4*_Ne#~wk@&FY|A)w2{2fi6^6JPfw% z2*}JMELn<2L3gTyu2etFqHv4_I&j$|sCb+OTCtx1U9YZig2heoBq+6<0wspiAmR** z!bui|Gc1LmJJrEgtSg*lkybnhk~`0$aE?XcJWHYC1r~6{egS;%_#Fnti!2HkSzHw_ zu`oF(Tw>v6aC{*Mx<;Kv0dkEx$iY`ZZoA5orFe}+;R=hwHINQ))&eEs7lMk{S)dK( z8!QUfSrl%tWGmi;3Ect<-D2?v-K@^2c!x#dCW`{(W_3pf#d{#P-Dgp_&7yFhrBLw! zi^5&dJ?jb&SfmvnvM4-cfmZB41VHzzvnZh4ul|GuJR16eMe!*pMLlK7QhdhZctk|; zImo@wS+YQPs=r`Se95Bll11SeI7KZGReS}KeZ`Umx?TM>i{cy5rRt#i614okLh&s~ z_AQGU(;88zr`~}?-hmE75Cx^)_aM6u%V^R3P0;*FN2rGUEDfrHkrT7DMr@G=#7Do~IRq9!azga+o zJ%3mf{;;?z{sl$MUr@vx5mEdH()W)g3v{XaZx)6BASK|KaAZ(yU{zpIXkfKw+#}++ zKv=O6#BF5Fg50sL*vty5Q(Hjyt1GmyW+}F^g6h--qKcc@6k1soHiK&e4n>sf))$B> zc7RL)U8dg2s?f=*0J?|03v|yqs7~!>1>MEo%?hbgdq66CSgjcLi8wMS_JVl5tX2&B zMI4zG`#`)tRx5@BV5jwixc#hIiW68BCV(zl2i2*QSQRF+DokR{Qk)ES+8R;CEo=&t zSrxWGoi>FP#GAsJr8t$|FNShEzTvnotyRRBrMU{#pG3MzxPvMEeuRoDvF zxjeM-`3bR=i=CEcd&IMbzM^teeo5EaHg>7JM9E$T; zLA-gaS&H*n9ruVTE&!RbfHezri9rZaXZM4 z?W|dfJ6IKVKve8xRoKa@unpu!h0S2gc7crE#b(a@06a^!3uN>z)-1){AfxxND(nW` z)1IZcmsMde*yw$%jvqu7_k)by&zhxpfK}lDM8!c?g@ddL`@lx;1{=K_Wb|$}bLJ1C zpxWXPNY5eGEXBjD3Wr%0kAMT{C`j-qYnI|M(1q-Z$H5KE8EYq3d~{#S#b`e<{WF5;(1nu^Q?*&SQRd? z3OuX<_0~b z;TlK>B$s|*0o~Wm0KKmrr1d69?M>D!#apZjw^$W#vnt$RRk+Ox8d^Rgq<9A;dxtek z@h+>vT~@_=pu5+>L(2@@+}xl-;y$aweO6b+2O!rx0J&xYx8g&PriZLqijP=9y|l+5 z?qk+0#V4T4*ARdr3v~1PYgWZKtO{>fVXgsFEgm3n8B|2ffZV&qFlWWDR@z? zUuRMzaQ!-q;!jouT-UEF{9)x~1`VYA1v&UHYnI|a(5>r`OVVvLm1y2?*g2rE# zGJ;3S85A2pDXoDG)QkhI;cWzQK?j-q1DE?vYzhntO>9|;;Jerb9@Z!@2t3aMdHcVp zVhiZ@%FUVmnA9=u&prAan;CXok8Iq^6TCORaq}! z%OD%l9XS+v6hOR25*CX!K5Ipzzn%&^aYCJI+!5h0!yM5 zLG$aP3XBS(U_CFH6hsx69cO^9CVh#bX9h^m45loBrO}FFjvR{O3XBTkU_Gyx6vP#n z9an(#yh72l0;ESI3nD2n(?@|pK?J;FK|#!#kwt;Qkt0iiS(8b`oQZ))o!b#~%%_9` zv*Q;~5J@UXDu6f~s6oVG%~+zqtRM*vqAExbl~^-YfC8ur8bB4`08$V-n58JCAf+I6 z&|Ohl0d#ODXgMn+oDTdy${+wbxKiNJ97aW11!e^qYeoeHW=95VMkNJi1zBrG6;P5? zP?S?(R*CK=&a!D>xr?S9DQuR&-Txff)oz93V$9fSe$} z4GIl61=oWLZrO_N3hoN-2i+At6xodwICMqy1Bw91JFoH6noMMs!vqF+JV;ksdj${Q!g=BE4^qNT_8C1%F z&Zd8jQYv*YLc|3YK+5J6M<&Hog;WJ*$2p8yS&C^2Xy-R44#B3!H?&3PCwh;O-noMNnN< zXw9evDPTcmRFO5K9w_>>6pIy@6^gAH*MVbGM-f!Imsm4y0CV*eOBI+EO05|;flAmi zg<^%W5{0r-#d1dh@VR3p3Kb;^6{UWPl?u!XmEdCUG^m6HF+s&1m_~JvLg_)pDut4R z3RT&P)e6-L)d$@bYZR&#YZYqXju%j@Qz%xbD^aK`RjhXu04>s~S146zU@TE+U@Y}e zYy<^jBk1l1D~3}b`@n3Fg%Ad`plxDQC{}1F8_q2hQ@*H%BEa_3~04?5uxl^I!AZTSz=|P1~#%$=)o-W3N z?x5qQx)?!cO?89Z$P3Q(9gGJ-%X)el6?z%7Kvy&MF)H+d6!(K@&{0hNV8!6jLO5pv z<3WYugRu2J6G0j#F)B=C1Ra+&2~7jE5SYwp&8P+{mKm)WG(e>?*fdaDQ0Rf0Hic0E zj1IahP6aVR%Y&w(nFcKira?{n4>nDh+Yw<}=|RQmjG(1L(;2fAXE1_p<(L6-;7kw` zbg|G(xRH=F267bx$Wa2^ps zjM<8d!Kc+M2Dxjy^IIkK?|(*GAizeZ`P%D)j*1Q3j4q@0;)&Ai@HDyzCl$Wc-5A|0Z@=(Rwfrf zUOou%{xuMrS)cI&qc!6daP(Y*`TYvS?+W`F4`e|We<>US`TsDZ!XZY`im$_9yTR$Q zq2U;$HLkFo@qoe+kPgVrFGoQ-j)9hXftG+BL(>5&QUu=3VFcad!mMzd(Tc$oRKZv= zm?gq0y+B>qZPw#uz_dOm1mGEQ(z^4qXcN-*-1u)D~u%yR~Snb zuY#O)jZxt$XkDAaHO3N!YoL1QI>-&zA#OMUas!wRasz}R%_GI_D4}?RQQ;(`!VSg} zg&T~epk-+ipjBx%K{vE0++r+IxP@F3O@PM*$jP@so<5*(n=xDQ4kKty+8t1g+yyZe z?=dRe1=$TQ>J&~f9ssRhJI#1N;XY%w;sZtnFgoC__z=Vdty+5sRxQjU#I10T@qprE zMg=g+QhdUw07eJgL2KBaFe*L+tz?6T2HZ)G5{l2ketFJVqVSxtRPhBUTwXFNya26t zQ+UZ(qVN*KFW`a;iF zTk$=k0vH`|2d#8_qjwB8M*8e9awWjx@>oC8|)_K8v96DWK>gJ{Jspv7+>Rp6um z_k_Y1#sdl`L23LeXhoaCSCEcxASP(}+c$6+A#{LU&#dsB(Tc%9f!XmdsFPyEqs{FI zHV>S%J~AFq{J{uX4EKXEOYtY80vH`|SNsKHD*gs7ox|dc-!NzVVN?L41MZ4{K}^u% zxxd(*@ek^Ze-LM=B0J*|%)I}Mp!IbBLEdU$QuxmZT65O`x}*Y}P#_M67X6J(5O0C| zUPe5M$mW5PA9#(PLK9OKXc1mBlR`7o0e8g~5Di*^*8(?G0g}H#A;e(KXv8DO4Ni}3 zObV?`2Nc?vvK8BzKx^;XLHavDOwjtg4!C}Zqd;NpD52QJ1j;U5OeG3kOr@Y@dJ>>j zdfnjld_7Dh3O!6nH9R;Pz`i*RNd~=43Se}=U9k_u1TEz2gIff4)&wR{aiB1PDO(Y| zq)%ZY$XSz^6ecn$P6n;e1I3moj|jvQQQh(%vTz}Y30eWT5N;tj3>HIFFJ{VC zT*9OPMhDzM3j&ugDJ}yo3j~D$ID0K(0%xz~p!IzU%Ry$Y05L&}0aw7ygm@kt4=b4t zD6Rr|Y;(E|hL51}or)&T*6*q!b34$Dq$hTl^8<`F$Zh|;v6H~V0X3$DPh0P#+ zTR=?3txO7AusdZd)G16Lr?4VBWirzN#cdEXw=rcaZf8;eqXX`WJ3vfD@G3(rZedo~ z2{n@uWF}~7AiSh!)@3kI+{L88tgws8is3G!0<#{Yk>YNUz-}gM#(SW4)*dDWMuk00 z;J)=+CWSqqp}hx;Sy>8iQQBD#Kvfd6;{(Plfg4UBb67wt8<`bAD?H4YEEJd(_A*&B zegUZhF^++kJnm-7Qrrh#?YNKWpgUyYqv8RyMU|k2jlzC#aDm2@4=`CX+JTIo$+kkC;kg(FM~2bmO( zGLQpcbQid%6*$6Itne`d%6pw?J-oX}99tSO? zEKxYgRH}FiWXEaHib~M(%F|3G3a6P$JwS^pnHA1J>^KLq1Iz~70cL?$?SaD1PT?Ta z!EET-%d?=MIR{#X30ib{4x}CI7;qRsR$n^SXDMEU2Aje~(0WYpkRB+wE;4~bUxNt| zT;PS72Nf@ae0+(?n(+{Lc_yl)5)$IzB+jgG4HOZe zjS}E!fCP%dd5|E)W#Gk|pgp5Em=tb+7IGp+w!k`|#@qlo5VRivEC?|M6t*`(%MEXV z0`fK!XldtdrV@qQOr?rtz1m<}wJ_D%%9rL-1NnsnKLZZSmCdUIHOB)0g z7!)2eK?c%6Rv|{xL3hh?gIe)S;LWTjG?-){Cm$YQ%T{6qoqPz&MdV-w(3*QCMewPJ zAT|f&^h8DwTL5x)B9nr$f+F~=L}mp=1*H&P76nGg$%w29igrvq3apNx!w3~&hY^Af zLR`bB!0O1Lpa?o95PUMC0OVvuUIqnLM-k95pOAAA;U^KYI)X0Qgr7vn3Oagj1IQ3Y zGo}kn3XE$&PN=EGbqpc+6lK^kgshG{(9;J&%Wqj7H!x;_HrFDbILHn;aS)`^kwJkS za_AuF7(uuWtVav7I?iFuQh=BUJ7bC&bOxdVvm=)$*mHAOvm7fx6J^Yb9Lx?1tQt&v z*dRwqu!9b&0w0A8Vt_WdgHB~o;(}=dozwt2PeBpn22LpRR1&=c!G5d{&ct94Rn1E0fyu1FDd(g8?QU9F;` z0wc)Pj0$Xyby=X}E4g9E4JtY*v?(fbD{wiofbLxZJDE{I5n>|5iUvC-25too$MP&C z4o6OJ(B^Xm4o9XE4Wj2(kop$RBd(C?P^e3FL7|=qM>DHYh2BPTylxPy!`qQK?hE9dlqFWaf3=64$y&<+zK3?MT#Kx$OlgH zgHmCZ5*O^iNj}gXeXvtN63{cbKsgC=td0^l*g>FkA35OXO>%oe&zt0cxDR9mFX&(c zE{LZTK&Ku;&zs~0RVuvP3akpeW=wm)3FiWn5{Ck>0*3-G>;M!la8d!CU;x^r20rHu ze8`CsD0Dz61a#5~=(I_2W(6O!!wo*ffK7qhpO=w`ms^36mxmj4FL{|FcoW*6v5dCQt*Is73hRaQ27p*;mA_r2A4({GCY_vi1S-OMGxjtm|UO~ z0y=~gcJdtb@J+=UXbI=Y0?MG^6JQjvp5GDzI>8Z?#F!L7o>Jh{{_M@B^f1@?nVj0!9VmDoI#gm`%s*cDi^4=ON&PIS#yVD^+&5_aX~Wdffv z3o0QMSi#pCg435Hv@&pH1n15xpd&IshYpG`IVgZm;AM6E!HiySfW;tZ6NVX0m~ zt`&pUIW<{|{1AIV$NmT^K+LGgQWSt>BakR3lnFYZP*Gd~d_cWaWF0A z2s#sxRfFjQ6R2F#U|Ped2tL{e6zhsI3gF{aSrkA?Nf8u4jLZ%S+@Nzpm?41)J%A7# z2cYBlz>Qof1s(+{@Ck^rpkj_y0d$HBB#R<4DY#+-9cBwYybu&Kkjx1#G@yqPaVxO- z^D;UzD9XW3d;_z=>u|V07fBW>%7G5A0-YHHIk-v|R7lE$#2gtxD@`1EK&b;5wI@xY2oIZ!GF`4J=zEh$04rNpKn4k<0cmM|)CL5pGV z>4n_jlX-drZ;uD81ms6>(*J>a>>I5E zTox3tNCB>ZJHSPW4sb3|*&q)JaRoWhNrrOV3K9zPAnYxz1WwwVSd+FO@c}NcC<_m8 z5E~reptAwNp(%?T;Ifba$CbiC+v?arxfWdiE73Z@(Nj2{07pHa6JH7k7slWut{~^g zl%*)gt-zrm3&P&gkb{arr&PlZmqwH&{KN;itRfFQz(H(qfP)SR0|z+h6jMb|3g-n? zsgMBYfu(TJDV?BZ3baVs04nA}Wp#V8!5On-2s8*6u5C+u` zjtq(d3c`w>c^2NaMrrNBWgs~k)XHS7 zQ^3~T1qp*seup-M5zSq68ANjzE<;vx7o?j&a~C-&a=;q98yK?`1Yv0ra#$KDuXBJ$ zQaBWN6ga?52k`lpOwfK5xLF5kK7x9gpaB!mVb!3(289dg&}ry#$Q+;|7c@9f14_!= zpav79zlUhLd4pE>Vm-`Xff2N57IcsZJGfD)AixV66yXG&HOB}#;tiC-89_^DK|^wk zJnW#8F_|4FfKmiFXK;d!dSg*w0v)IY>i;r=>jF@d668cih&gOoN}z?r&_nCE!K;cL zA?MVAR6-7~f>10}1W%l?*^FO={igk z80$GfE6FEtBUX|#f`$Z`6_~6TSRga+)43q@G$_rX!0gCu#h|3X?8s)tpsc{`$OK+l z3%cYStQNdl-;7BEqRmHv86*SN4V4K1$(S)EfC3qUnL#(|{$a>cU>4Zg%?Md9tN_|b zniK0-mVl-%<3RF4Jc1y3jVytdVh|rZ*~sj8h9OJf8pK2i z9&wP03k+ETjbJ69wFC;xjt>~J1WrOOg_7fu1qYzOwPr?v_CPbHJuINH@I5SwoS-o& zM@9uM1x}FXctMBCD=<5PE)!xFm;#P7(0yTG5rH-GAg?U|`2*w>&@GV)4329T9Aa=} z6}aF9KBN({&%=y~fk&AeWXBRlMUd6p;FEYk=U2j_R0-th1&pARClx_^9C#IY6nL{V z85lt8)p$W`@JKWMD97z5z;M?GO_| z%l4Ty8E!C|GcY&`C<-X>D+pvM2tbVmDQ5r~E2zK^Dpv(j#33oW9kgIUNI?j))dEbn zGs0H5I|?WYgR3@ zxCZ0`akvYlz%FP6Z5d!zkg#G{4RV2m6@xO5D98mfK(-1j1-oDZhz;7(AaK+PG)Xgo z34C=Bk{b?!+#rDI22d8zV4A|DC<)qf0KUbZK|vDk1~G1sag&%7r9ku)CPirlW(6s0 z#tk61NLw>*0?|_7@=ih8no$js=^lWbBQO{2v;!cv;{&EFfxTj&bbSDNR*ajXj3XoX z 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
  • ogLo12}sB=6bpp^^YIUX?u7DplQ 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�>w`8*_uqdzy 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%0A$qTw6j#GhM z;3f~mm~16>$WCnVe4+*ugCk>Mkt1m1E`tKA0!x+>$OPsh&;SEyu3U*jfkT6d#gP## z0-B&>7nsKj+L6hozyXRpRQ((v{VZ?|pzvkTU|Im$5eIP&`1)0lce0f@9r?Y%r~k8q zI?)^mN1z$v$N(M_U;)(%AV-6gBNT&O%n5ZL)Ww{jVRop)>k2{F2|(^9TEVQq0IJs( zFoU`a911MiN*s>-puoprE{7u|Bsf9)kdXs{0~83L>tZyRmcTrR%^YZ$vYRoj0oe_< zlEn<92Q5m-Mw$h*ngUd$L)S=y1}0{J_MtL@ZoyPw zc9a24t6i4@b@F6D`?wn_+>kd1fNxj@O_xEdIPev2tl;yML06Q6^h0Y?N6;Q*HmD4U zhF-P9489fwbfFKkfdVtAEK*<;m<`ry@nCw<_Him0qNui$f*em3?Qwb!^#-Un81TJ;GSWG8B+)- z4S_imKm&~6RoNk+n>|3OVgsY2h$5FGXc~+eR9JI@&I(Xq64)vXvIf-T0PExc9b?7} zI%EvA)D?817pQyf2;K_{x*Za zufPjghXED_&3Z9`Lk(i&9?+g{W(fNL68i`!9!0>Tt)P2aV0VI?0Vxpx7mCapOjAI2 z=Q1h?I&N5WfI;AeI%I8biX&)mCg|!f&|+y24H}AsxCi7HO{N%gW&uY9MPUW#h0lr- z;OoG^3j@H*r6m+aK&NzohO`wW6+{%6L3LJ^0(gv{MT z_)8S{OC1GD6a_$@&}HDXVlV`;91Xz(tc9IDvCK;D}rV@BoxFHBuW${N);s?B^0GVS9L3hD@c_n zNP&&8VlV=G$4F5cbc7<}J$uP*hX^`AE?bwB1BeL8(MRsZ>$fQ9@A#96`zo z3JNME3MyddzZOVrjuMKR3XBRG3Tg_P zB?_8gBdi#dz&=t^)KXwn04)`;Vo-Km0`ieIn5&=-^AX5!6^P+FjuMKxpxbE`bW0R; zON$isAXm++FevEpbH8O}^;!=XW$Ya<;WqB$M9qDc`A_2An3Q7vw)5S z_NCEhKK^8}mEJr4RXF0Hm zG!q3@fy;A29b?EADzH+pS&SeLK{t?DD6qk;1Kpn`@GM7x1vF02%MCip4$ z)`GhppqUKV*_9AEust~3`~j|+Mc_E-)>(-Az``JXjtxH!GB|2FuK95g(tk&UGU(zg zP}_|ao3mIQ_keVOLxWYI8GMyIcOdz>LQE!LYR6AlJb?xP6j%jb zgU@`DaAb8;WM^^!SJ0sL5GW_{GC0lvDF+|b=qLa=7c>jD&Jj|)gRh2X0^M2(nqP!o znFzae9#pa`un0_RW)ye=E_9hdYq6LZzzZK4Kv(X8PRfBB1UdtT8+0upH)tiJITHg9 zGq)qy!65%CFgUV-X0SkwB+%Lza4+-#c9yg zgN}Oy(Krv1_yLk-v|{+itN@;?0v#m50P4>`50L-$4`@7r9ej4g2hf=gpcY&U6RZjX8L7$C!eq|;0kn4Q2KWet z4~+07ayJ+ur$}4@ZL$R0XvVYxaS{DZjsx8b} z0*_(ady5>;FevgfIVkXh?BxTUC&`qhzz?$*q;}I}knc3I1fIgT_5J~w^MV;XiNuI> zxFbjybO<7p{tot_1{3ITN087CX5=FyPJjk9!0i(FnGq+DPJwU)sTRlr-#W{p$@GF5 z(iT8EGvWm^QcMV#F`4#=lh#MeBh?z0n0l5Hlx+91NnGHTOq6IwD2D+JCk*} zfDKQ+*v-0Kqzg1+1Iic7W=v;5u?ap0^$cT{zyrv_ zQJpM-7toCHf(el^z!oiGMr4cypul7^W10iH2MdxhCNP7SJFqw|L5>aEk0?KAAjxU(9%$Qz)k34q#0%E^`ut6E)1FPd4M&yifh6N>K zY+%lUXN)r}C>dj&H6&x~M$Qdh|Gg8I? zsXaOc6qFiS0uAufA@+d6d<7fGzh9UT83PmrptDrK;mH7rI8a(uF=P4xviS!qa>jVU z1WD>b3h<2a0;$k(1gS=3j1_DU)kqm*1siI{n8F6K3_WAa0QG>y%$VkY+{|FbumnVd z%m!zS2IP$Kg$b51wz9!91}LGxmx^u$-4Ds4%dib0kCHLALFKn2D67D( z05ub|&lG&WI0I-`0W*W59O!^vh<$RP?v4QH7&p*u(afL&|2Sd#GkK;J%L(L?MV0$bzsz{d|EF%%C%`Tot(-nLu~Hf!7FdgGe{X8Ia)S0H}`uY7T%7 zwzp8^1#iHe0IIK`J8{95f_AoohQ^seCkBIt#*sJmX@HLWRe(xCcj7{IDJTknH{gN| z6aYIG6wn~Qg7(r2!gPTc0`U8m1;85wpaz2an{X*`cavGd9JJsYbYvCiuJH+w{vPuL zMo=(;4n_y{p=W@2juwib1(o2v1rXz)?lMqB+N=d~98_FG5q|GDih9r?LhvoQNa{f= zr=jQkp3*1iQ0WCHLjfR2t(krrp&XtF>JHe9|YznN>&>Re2 z>BIwCmH|4l9JEq@1;`X8M-X!jcnOvW=sYCA$ZAF7HAwCv>1;A)N*AG05yI!nGzsnBDVtkerVA0VsQ9?&qxixej_UrsDJ_8 z0WGjp9DMc#_;6D2$QgKY3c8+o2{iOg962DjA%KR&6hQ}MgO=%KfyTc&?W7l8(SSs;Dt2!L|P$72GB)wj-Vq%g`jcd$e{>2+#1vo03DMBHXY^( z(5>Pcpi}KYvS4=#>;oOHFOVg$dOB#B+i}jylMDiot^o&RO&VxECJVGU4P0O$n-l;# zHx7K)w*n{*!A5~r0WyH5C%|ce2b`uH-!Nne98LqB4S_How5A-C?)kZ2vNEyNGu45H zGC_qAXzH>OG=9mfz~l`XC}+-ctSMAr%m$}SW@ZOi+EidvV9wHIU{GQ^pv3OT-~l?3 zRDn6$k-3l;RM4~d^D==>tW;pmQetxi-@XYRCoOVpXl!b!DC7l=6LNs8V)5h!bxXLN zK!?dSC@6A*83M2cW-$8@v;vzh!;No2j&)gl%nXc7T%eI9#w;Z^1tw2kCMO0(PA3LM zE*?&95EGR9L8I(YDJ~uk?85Ar)+>OH5`~^u%F71cAfUhjI;IrVx&gUHfz5G2T^1i7 z0}~QpWa3ufa7-w4Tu|@E3tAMSz~MN*-V3}nfXP9D-BCUZR2w+*fKFOvcdRRP%yZ{u zQs8iO@Zg0Ed4pJ>ektf2S!C-#GhU7p>azG)85tPBw?wcz@RV5#F=|LE0c6R2WYq*zIoA60CY=@0yC&{tSAf8@5qsrr63Ec zD>*>ZL<%fmDU1z`jNp<2bgC|RLnEkN!iut?Q32G(25o3mz}V0Tk^;3Zz~hXppq2*{ z19U?pNJ;@@IcOUrE6O%TkQ96yBdY?qKd%Vc#t4#vZewHxyGwzp+Zf+~77;jdWC_d$ zZB>L^QLm6Ca2j-z?g8-BH)w0wZ0N?t98j?d8t8;?TzmsxLyNj`5lNgw5ozNhLR^6X zbW<$oY5^wj*^f-1CK3E@0VdGgBd8z;1vBWh5BSDK&<-(BKrk_Y4?lo!TtpHFo%bOG zIqw5v4pcqpzz-qV_C+N19EuVOLa^`q&kIb@TVEXoz^xH*u?jla26X%>^ipH+G!GM~k<7%P zs0wZ*gVMArsG$bh%mLcx%Hep20W>zHzz!Nj0L>98Fesc!3SZ2CYeEoL#`;E0aD(?2)f~w3AFrHK^Rp1D1y3C%#KSyri*|k z3z!vz^cfhe8JB?P3R)QzMHQG8M8SjFXPH0)y={z&VhYR(Vql?jV4-%P)ruYv-7I?QRvnEpoC<|~X z!Z)izLJC@WgAdGg>|o4Nlu?iY-4xOR9aWK4kb&$~Wd_M+p(y{rkfkW6AO}(oJ2O;X zK~6zFOF>=%5>zP4r!i)ME`wEI)@NA4XwAUj$fOA3gRe1$1eGoW10<{<0dtTE9w3K6 zOwa-pD~7{NjsoC2j=^ruQc!}VGKf`YR+t0q&4Idg&nD|m_(tO~R@7i1A= zsRL+lt_#>&i!AW+ZIHwf(CX|KkoQ=@H_dc_n9SfM7~s&D0OGSNu!0UT7MP+0@+xQ! zidC0^MUhW|6|_F&2}lW_6~haVvo*2=c7k`{9!qQ z6;w2UZjk|P+F;dWf{jXwDL{8^fUSqC2CX{T!U*!EjG{P*0_~+`1>GLA0~9b4;2k(% zCmw;h13aA4Bmz>bp(qKWTok34928h}89*tl5R{fdE&`7-g0)@+t@U8lWw-{KPJu|n z22;TD;3LXebs4TBq`*xS1xZlJ$O>8U#m_zXvc%&$P!a)M!1QSdWr_Pl zWr;cSL5rlISz@9)D8^B;#JxPEEU{odBuiYyo+Wy~$yp;y;HTCw$`T9qo?#G}N&74@ zB?8nfz?vm`*qB)ASwYSB0}R5VS&@?m-2LH!bYU7Ae*9->R^mnC1@VF^N{})I9;g2hz}~FH2UEh)qQK+C*yi*P zBE{dVz~f}nvE1=Lf1whmv=YA)W3!@w0;l8I@+?r_Re{%uAqaf&1YZECYt5p_30l!4 zu-uWcSdr6-QIQwav4L_O>m2J9_~AAMDsf9IaAhfSDeyZnIWa15ODplVDe{9xN4TsR z6%;rWctHaR9H0vf1Qa+F_|2I?_l|K|F(@hUIN7%=@ho?2U@UZGF9W#*)K`UI$Yv`g zZbwGYsxA&klPm=e&@vhp(5xk+C~$yAO_()6-sE;$R zqXN6M0+X~N6U23nEbhFZOBPub*c_Rx85tCqd09Z_D1aB^b11Mm&UkzYw2>3kBj*6! z6$JOfB1X_!WiF6mpy4KN5Q9kpyvR%g;ji~K|-LTJ2*g%R5l(~ z(1Jo{(AG&d$4L+?piXdPR0Q3|!3A;#cv+nzRM}J%WuTRGY@n-71r*pE!RuMrK(~y7 zoIDev5VTeQ`@>5Nj!KRP9zkz4biDBB5`&|zW5Z*pfC2+(@(0wN0-rz002(g?4VN>4 zY6uR{h>!{c_X}1gF=(HF5!xpJ4Rx3?p{yMPT_z;(tQxd7N9D6)aO3ZNr#K;!E0X=g_PMbNYnvm;0bG^&n};ZOu6I*1I10yF5O9#Ag|ww_GF zoY?}hE=++@V1_Tq5fQL;TuT@gI6<9zE(OrBmh}o;(q>GcHAO6DOwi?IFF-9H(A5)= z;c7D`$a1m_kTDYoEGJW76nH!dG@=F?y4GOIFk?yqEiS z1EZsYA`gh|$fCdlUrolM2wEb>3~uh`C@_PXKLrZRpsmHAgF~4?18d;j#mu1HrF;s^ zpaTO4LPWCEzv|Xk{3vhX|rU zeQ&UbLESE9O{N@kW)4T#VlhxQ0kyIq{Ta}axuB(S;tGrk;-Hqlq9l017x?l9&>}PN zVlhx}vjW_2PylOFU=p|hUbg`5A%MLNI`0#FE)cj20kIu4qz7Fr_6D>{5`5+qXk;Eb zuLN2p2}&p+8l2+6t0Wt%K?xgzLFq&WI&jXc!K46M7zR3ogcWrEFnG&3`2LXvpe1@5 zpe2^ieLz}3BRR~VJ1IfS=s_tIy#CR#UV&X2bm9hh!D9z#d=nH$@b!)z;MD=(^^O)G zQ#uGI(4UhL3Dm-j$poH2I~dKFOuz}$1kwu!4da7`(j8eqm$QJ1YYxy=uJClq15U@x z;05ZSn^U+!$3BD8sS7yu*kr+ysRKBb^MDsU@_=S57(l%gQ2P@!7zw6n z;3UQYOJX+Qe8CGI=m+Nt$T7D)jEa1Yj0$|HNz4U2;trjl0v{P`10O{PO(rqffR-^@ zfY-tafK!nKc=GB5=#&xAVi!jPMbKhDL9m=8`1n|`94Li3YA6aRFe(Uv<)joqvsPd^ z@H`@XX(SV99uaglELaXaj|g8H$po551SNd19C#iPmfAtbgvo-JMuO#_V}j77kxZa@ zL@~%}*(?RnJR&@`dw^%$AW{lU0yki(T>vsFKwxR)Og1JFNV$FhQLZa6m@|Wq$TepM z-H`!09CtY^X=^fr=EIm3#6dTsFgvPbIWjmh2)wQZN4-jxz0=4@KXh}#*7(saMJ}XP^JN;lO9F|7J)7OpuA!Ov7ogYq#1NG z>tY2+#!$!-xS*v7%3iFHLfp|HOQ2N?be=LOKTQE?w#X8Auc-*mQjnSoRMW*MfL-qa zxd{lg5tbda83Vi$8MNUERLQ_rIe|`J0L>_YPS=69I~)}pIRxIQDsm}sf#x7RK*OgJ zps7~{ZqUvNuraXtPXX}xR6L;0If^)kBCi6M0&f<0pb8Y-pfVX$k2zXo32X+hFaQ-! z3VZ@PL_ztRN0A@oeQ=foU6Z8156WVoy=NLs8(@7ra5!&a1m!lzJueP0IBF{}gRe_{ z0pe_Ua)3dg(}Dq<)3-3f)&_$!pa5tN2VB7j9DsJfm!v8Pf*Jx0poPMZ4}jV~3J?|V zCc%m$kV~NsWKk4?IFJE67Y42omVi2`%%BZWu(Sj6$`VFUDTZ+13dSr)umcYuJ8%hT z!#gwRN^np$45A@*AZQq5-#kWvccGwpQE*KNJ#8KJoOQ4ac+?GC^oj{gssVDb7JQU|2&ixYvm`*< zUO|Cs09t!vk|ppY7BoxG1P%llMJ@#vP;y_w2)b~|amlO03<8_gKw^%dsupzVG#6-K z4jgwXAZs+hr%P~y5;G*6L8JmVWcwy)NQOayJ4+FCbr?I?LE!Cb+zPCYZ$M^)w_-AZ zRDkbpa^wRQ5xfHX?5r5{LB~nxEAlxqfu@c@b9V~-Aks}y05pvbx_z?{)QX1ePXpZ% z_y=wxi!OscOVhE`tQ*Y&9zeV+97#0Ttl2!d46>3XB397cw4D zU=-N2knupaA}eSN=YTut_)XC8KPZS`7}UK2EuCc-nCS(X$+u!KRbT`az?=%45Mwx@ z#(;`it^@9%LKYOFppCVl2}{QVJC8F6w3je&EAW6!0Us`7#b5@W>sDZJKD0o>4ljD;u#~I9+T$mgn5e5!+P>_QbT7%LqI2sig!0H4J z1;T_m6nF*t%E7Z4EFgxsg1BQnXwrgFQ4$ib3gRF;6(m6zyuDrk8?9bwR75;o9618(p%kvK>!6O`cCG?-!>89}~-WO&dTJO&Wgih)%9;F)c( zl_4PG!3RJ^K((#$*Fpn6%@YgCaYKvFDou zcsnh-8Iy+scrUGw0vl+Pl>=xr0#qfkIa*{n{`q!*L10%CBLg?6$3c|syiA~g0L=-3 zLP~=v1iZSw7?kZneHf6p8Nt;$n=S)4c(*JkIM5b@;)ppDw0R5>+#nXnb4wT@p$Jai zAc2TNkT01)gD?GYC?3HuoZV z6Ex6J2u|goM9qkBJ1C#>FmgjiZP>u~n1J?7YcPTKAu%bi2>g=*7gNj%Y>wcRoVa=E%Aa0idIT_@39uNcMcF^`+9#GB21{zP$ zfy9skB!*NJK)ZcGl?v#VlAq2D+&5U61nR*%1VOz4*xVQc*edYk*apxb4l}6nslWk|i)p7ZkA! zph0jJ(4Y`v`v>TVTToTYA}~kU@yKehnQuU5PH|HN&$>b8Qb30(a42wq^|3%k)fh1M zx3D?R0BHs7#&85J!DNFjgb-EWRA2?|kfad7H2T+QE<{4QP z*uVo$1q!U7^-&Og0`ovqa5`BKF@dEEKs79AX3ud2$ilN>QVJ{r_lg}A6hXI&vVtdD zLG1)b9azWIQ35)T2cEKqm$%097fbMpLN%4WF51~?^c+h0h zF=y@o^`jPp+fA&{OGF((m#VNpMu{NCLPkKqH>$8ehKV5JAg_Xlk3h#$31%q>LhXWz zgZ2xuK<;uxR?oxA4GC%Rh7S&K@-K9(hvr@;Zbudc4#z*Bkby>pumXpIFv#JG;tIkF zph=M|Q0Edf)FYz6p&$a5l28zVN`d<5pncFFS1=2J1r^u@mimJhoPmu6+so?6k|nT1 zOMw;EnE%4cC=M#@L5&(%x@H6wQs89m0h;r*V(WJ-9n6xOrSflnH-t2!AX)0v`dv0baFwA0xM|ppTUZO2f|{sV&Db! z*gypkXg4otdJjBJtjoZw2%0A50PRC$Rp7K@;0HyZBVU%l^Eu#|M9@GCD`+$fw4RE~ zkqK1%gN)(UWdL1u4PJT$N;hQl9VP}Ga;}Vj( zK!qMyql^MLbQD0hiCZzKfX1FdJAuIib3(A&c32%{V0i;nh9ZYQt0PaAz*jd&sIofp zLO8sTz!U~iyow?Ute{4dmIAASh!ul2NKnghemx|ZL={AlgNeyOK@@91v4Rfy6?1&c zpePP)!hoAL&~RYp2AQg@C;?I+32EIxT0Kw&OrXvBY@qFWVE-B@fCI_|;$I!e(2SG< zgMw6+f)pg{LIVn>(E<`sHjsdFfM^5{^MY1-FhJJzfM$iE!xEs{6%tUOPR0XJBZr@R zD=VW0DAj{DzCuSbK`jmu(BP3ZqXcLHniYdIgs0*-_dl~D3wS>_qXKJ*0&A%v8)!5h zlp8>60YM$W5(V~B$n9B~(W_?Bh@V(yP+L{5x7g7X;rGz!3i~_TQ zgf*icgaX+E+Q1Du$B~|?g(9$d^$USa~GL8bE_AQfx0%%#5Y>9#_cuOf{ zpQaT9c%Ln3xD-_5TYxMxP?Q4&zPzJ=qJn~)fscEFo#8!fOrKtOSD|_g=C42OTNTpi91)% z4*Dzs@g;JW0QnM}B|yF;CQBf^Nq&}?jU!7yk{i)k0_1jZmH@e(v@G$Ll~EqlO+~)E zoB`Bn0^j-I0GVQ8bUd^3AcG^XBb&gBWbhtDu(-ffQ_!T2gd(#eGidn$Xf#8C1w^_* zR-b{d(P4FD1W%fQMoqw1o>(wV4i>iXd^QC>K!IWo-D_kAoqbLuNvY7o(7sRK`-m$a%52C2K5{r zL48avNN9sMnW`v)OyU6zCNnAUpgV&Bv>^mErv*0r5y)_M1zrKD;ToVrNi`Jt9Kok^ zI5H~mEASy1tpS;*0xfJ{QV_s2S|JNG>7)QQ`X$6@L734xAft5@vF$g7$cTWBs|1~K z$)q5HZZv3D)@2auVp3Jd~&qO2o>q8!-Satg9YMq4O??@b4d1cL5O zM{_o0|1>Ba2?(qx0UbLBy#j~>bgepQ%vps&L4lw94{^!=z`R2YjvO>d{uAaOA~*R9 zW+9UQ36T4k6*vWcL!yP$2}mxGaKtcL zI7<<<8y=i#AAyW!Rgi=k4b22njtq*@V56lKq>zj@QIt_&Qjh@+PctdVpc@TM{m&t0 zG6;Nygam1+AI-VMrvC4&j9Q?=zkvy{+<+0ZuLo3Qf_8L+c2hA!ueW3rXaUE34(Lcq z(D0=OQ-%VIK>vKm0!YvW?#yOPJfOiTCeZG59?%`+kX`FAtuCMg$uyW86xl#|yF`)Q zaYENI@L>YreNv#UUhE1S0&4?7(mtT%t-<7>$mM7aK5`m#F$Q?8x4;W<`VIjV;h?K* zK&MWFj=$ywt>^`9N)%|b2AL3}$Oob#KzG%EHfkxr+>ru44*)EgpdbM9g22%raG?yj zt40vC8dQkMK|x4C5IW(_2wG?h+7t_3Kne*79ncy94JOcjR3;6k5=BwR4IuA;E|W0; z9SI<;AgUm!ASN)~8{`ZVP&uo?1Wss<7NE;9#RZNug17J6K++cYaO4UFCeQ{U&}~bg zGjmrZgC;^iD_FQ47jzwC5NId?9d`~oC>FGbzQPSu?m|x<1I=N=)13k%1t!o&G|;3zW0ry<=mNcI;Av(?(43$WC;@NrLt^{Qu8f zsKgDDVJQMN4@(^X{r}HisKDtcUIuC)De*`v@vc?k18pSXSKx7cRhI?Y%%Z>r-bKRA z%K%yd44Q!92k#-_a$-~juOESO!Fxz}!N$9R_K)y@mOJsm_K)zlDe{5#kMKbDkMN`H zAK`=SAK?P+AK`SAFH_`E;B=HPg*1~u`5uH7z<2!M-#WtW$lyWg))BBZpp%jz8%Q`o zJ5oS9IgmGyfbC(0Zy;d>Zy;e+V25oU;e_tofNmZEaY3y~!kb5Uz&0s>&Xr}7R%9i# zc?7&ChCz|Q<`K}DE}+dLoOIbd!U?+IhygS!2s#0Q3$(l&yrYCc0k(Ohfeo^v47A}E zwxSGP#Dk(5h7}kcdl|DFJN6xB5ZD?8Ds&hW7&VzQoS1?@9MB31$U(jgJZ#_tH+vYt z7c{VVODQn(u`)3-GP8gW7i0k)GswaXQ_Kv?b_}2ufDE7${=rABfOfPqD6nLK)^Q?^ zT5;rn9tQl4QOjT6KGj8xG^LSUg*Q5AOTwCsQ@mEnZP@RuP7@p zf!54Pf+z(=Deyga3QUf37_$T*ayp=PKd5E|wS1(Y_sB_t_hN%vLQg=Bmj+)K2fhIG z2I!0_CQYUr;0^Kuin0m}kPY%ojyK@P4myJBC!K5GqI)+Yx33SrS3r5JW z0r+-XP38^IGt5ATLkVOlfUXYMzzEs9#SA)rL{NcW0lfGIVhzM}@J1AV$l@CmanL3d zeg*JZXei>K9Lo>c+m0d*+I+$fyJsEAUeJ|m{IKIn5aJ5ZqisN5g*0OBurl!>_K(0; z)-Z$ikAN45Nq`o=K-Q0emdmMt)ETKNS&><`2^f_AQgi#c-u!~qeYN`)0vJbYX2DFp|ww}#G zm%#*7-?4*gIq<@fWRMMD-Js=R;7zlj5iQW_bCApm&>j$8W>A)81(|8Jw>SLh{*x8Al`$I zg^`JYnUNcGz%i%~G=b3(v}B$Edh!!!V+y!H&QcJAEb;^Gw}l-2Bo1zmfLaZ(RdCSb zDVZ1)L754v4^+5<*5!j7&+GxK{6Ob=d;N@D}Hbu>U>ApyQwhdm2i0Bb;2 z5Q3NXf$qcMfSd=75C)aKpyiPYpkfy;%)`XZ3_e`C5PJF*cyM+CxVfbP+By!tNfvZA zo(9td(6ut)W9LBkGcDu*)zLDbo-&9b0UhrIZ8`#70`ADP?}a(U~pu%V(Q$K7J~ZKjtfBXq`=1yzF9j1)W_Cf$^kWNKx^|0 z6qrCK?UjJTL*R)$D5^jXC;+E%&;fj)9y9n#8U{xd@Q9GWzE!YmggHPf9>HfdL0e*- z!63~%;M<(Q4JjeVDYq{(2ps1EFAHY^4N?j$m<4J8fG(-oITOSJ-EgyWCg|!hP>rC$ zR06ty2Yk$wumTgrHc&MNIvqtARH}koOQ1eC#5NJoHL@UU1r$UaTVS?<`sJWQt09&( zFlGrrECcD=ITIWs3Rwc*XM$=P6$k^o%pMekj8+VYAQV-AUOcWK%Fn$SaiA&#e2X_| zg-H<2t&k?jP5Io2Z+JOKnNx+MOB0=Q{Ge}FU0y8MiVnAn;#y~dd zfma{JK~^8JfmXE@DzHITA2ES$F9mChf@q5buUd)(ZQRpkhyw3Q1s!M(S|7;_8iwZw z$0V~Z1D_*fAv7|Xbs6{}yS+iXHJCxmC_!8MIIS2GK|9kNAAWW|sKl23wcU)M0dPY!b20m#PdWtHj*#K&} zKsTg<51NIZq6%tBFgQxU_M?K&nFZ}f1=$7K9_k2M8wb0oLmqrn2S^HZ4jgFJ8@L$( zTH6NNa0BLm)^LJ0dV4M2GFtT;1M6t6f$_aK?XD+3>vQm%^+)nhkQWO$Y43}nP8w!se%S^z?=y1%r58(4$y>zz&94q2&$_hC-?|zPVi73cp$+Ivit&Nb^>&esD&cv zlxgt%Cg_wJCeU~m*kI7~6t4nkP7HKg4wwNStZ~!;?@ov60?myfq(D2+p_9;A3LpkT zN&at(S^v;6FcfjnS^v(k2xK1qps`0twZM;r{SSsLNSL6Y6L}1y6^8OTR%|qOKTC zsEVTrbqFNXO`}!+XhH?ue+g|f4%!lR13R>3gXrVZKhNr%dmZ-zBL>+bsbr#!bi8>rh)L~ckuO0174a*XB*d^38qX~6b zCe&e9_5T=cqYlf2I_yf+Rih>9XhIzd1OBT=6Y6L}9SR9`^JvvSnox&ALj65D;6IvB zheASq&OADfIy#Oz1XfS|9W7BuOVpuIqP`q0QAZQ%P)MjRMic62LLCYTb<1e4e`qGu zf2@ompu@#MTl-*#6EcF%1P5RHSpmBC6Li%x_^84L(4l=S;N!qp9W}B**HAmMICdOA z!62|sOo7!=0(5FMlfcS2(2098upBv-~$OSsw3W60lA;&oXXD)OH9gD`GzzVvg zz6W#(FDuA`H5#C+2UsiZREl2#6cpey_LxDovuZMFm@`L!Pwi6xs}Y#K z0DMQOh@t=}TtK_@SQP}pC*-k$PG6e=a;yOO6juR92GDU~pv%Zv6*$e96d>MF0Uhkb zs=%wk#2~OP8+sNXs|M2oM$nzh;DaE+7xW7J2OSuw!2~*ija7q*Ls1xX&nM`%X9ZT! z!RRZXHm!lu;Jb>2p?4JvnK6NmhXkEEc?2qd0z?ag53dF5zX0M3fDf+)pH6uL%0B=~ z7mTp884oam?-vyTO=>bZCRqNswPf`Edsf~eyT zkmz&+&>`Gep!+XC(W@Y)zzIFqol8L=OHo`wT!9NLzy!MP@&rf=_?&fC(BZhCuo5?8 z0)>_14TO{ilY%1X2rX6(CKbrR%MxZx3<|8EqtaCv__@EcGAe-5Kj=DVq?4B?FoMoT zXHaAYQ7noq3QUei7{DoBpbvaXuZtq+3~4ryJ0aK+bhkDuC}n|8dt=gIa?xdAP-F+) zhhoJr9eif6ha&i#Kk$+H3LK!b5fzv~(L4ui8HWP9z;w9x6qrCUVFNy=-_Zbc03oNq z9`J$hCZN-hK_}FM&S<^Ekfp$_z$I|H4!V7n34FfhpV^?ZCLz00Uw~3D=*(8o9x=!f zkKp~FOabQ18K9KK2yzPp=$2AY0D+H1W*3+t4?0wj2Xu}yhygxVlnInK9KZ*wGdVDW zZk^EpotyiDAxq#T_;`99(2;{6>TQxFws2>`iAMp0Y=Yy~*-85P7KK2^w45LOTonA``JQvsi+%%s7j z04lM-Cn|$H3$l$tQ4&P4C`u`SZyk_ka!`o|TvMe~mF=;S$FoI6=*I?>l1Rde8AP3HXObYVgjKm1ygCa#9 z;#7ew1sMfdm{UbS_oIO95P&#U!HfyyRL4Ca+rfE)NrTBoQ4w?&H~0)#(D9jypoGr^ zyYIP+jgbkI@D;L^m{k}cX&4u&z{sb;#0Uk_T9?+S4jv{5c41Yccf$n!^R$z2w zDRbm6go+4*6>uPl2!Ta-kVFK*A_7Pvpko4gvOt$n7o|Hgl_@c0DX}>I23yPGSfAzi z70d)VM}f()E=!3i%kd6e$dMyUiA8}C;RXf;1_fqKMjmsptN$`sF^GasDpp|8XJoKu zVBq24R$y>qFlS^^U~s(ifWexPfrkrO=mjH4h!a`p30Me4;~lUNJF==BU?Db8h&C`4 zy7Dq2*>etT4>+{{gKjTyY-nKd=Vj(rU=&!#!po?@>?oGyh!WVK(^VM}feqTPj~dvr z;DAI9Y|yp6jE=~G4ZalF5jn7>z*Z3sY%x%wfg0FiphL8=2DTU?u;oz#o7<5~5quvv zg94)&6N6(TqaveY1EV4n=p=eXEF1xa4!0wdBBLXNBIwj!1<*C)pnL(kA)DDzAxnjU z`w}aoFeop8?j?oY0u8>M0DR^q59H=u1!hN%EPr+5g1;j|m zCVa3-%mL=i367v+YdIA_R~ct1fanKk)+LxT8z?Y?u3bX$YXQu!T;MZkxuCv;oXZTV z)|nmIvmB4~9$*k?(E*iKNWNs^28C7$_|O_|@af773f!n_zz!0aIR$hCtRn~bCoMYBxHUJ$23_m#;RCE|Xju~eH6;c9OpzD?d6$BNSHJK)WPr&C;6jBg`oG}iu z33S#l6Qq=25&)Sdp$I=Pff;-%1mt*T0rV3?A;KJp;}VcmgVVDk$f>wO86JY%pmRSr zfKL47$Cai*N18H$?xkl2op-MQvPWP+7dS*cVDZcXO=XPeXA_29n=g87g(D10JV;pHJBn`(MKpvgWE5l#0@eMIZa2HGiSilv_%#qO@mY; zTbE(ZY@xvH_yg2ye`LzP(SKMiuADX6{bm(q zC}|olj7ZbCLKz-{M5JjB(1A0M;`{(Oo;k7vc8s8M8tT{4a(XD1)9+ZBBp~-gfLb50 zAs7bmumz}P69Kws2Yhpa0yF4FN$^NaiUOkYkj^$-o&|J} zxET`%=yvKm+Z+_xK#T|596%#5pc{!q6j(tQc1kF)I=#xi6;gEycaHm3qBs1sSB03Nm|0m-Q-a)BrfMQ+F-252aW z+l;9O>`G=dSAy=jU^HVg067liO7JzQAXkD0WOzV*9Pqe|1IS(A`y@b}V+#dVN1ZIk zmhDKc1a;DxzyniA&U8`a13AS*kzauo)F%avV}XvpZvl_X_&~;G0u%)mz~eC;pivD$ z@MZJhz+hl@U~&NIXHZ}Pch5ni2hd6uEUYL5sV^0TAmbIF{y&F;kfTUW7HkA&0wbt# zmK1V8RDnfcOQiz1>jn}NXbfa>0JSwihtGqwF@r8=Vg-qa zD6%Pl+u@*wBPh+cfNE@31vY`M8XhKa{lWmciv@==SG*|0J0NEmvfv(dK<;UPo7o=V!}uZ1Y-R->Xvc$Ffd}MK z(A`?-9^_SERN&20;8g(o1RAXZ(Bt{R&1Seyz@wgw3jCn+$iS*0{s!H=q`@Qubqb@S zOcp4%K#feuh$b`W{uHoh6$Bvh1-b$fEDHAs=(;9ojKwGlf?_N|5!AUC1P|^ogGMgF zx1IJnG7~*(G&?P>g zoTVTJ2?2<(0)xQMC7|92QfvA*E2AW+huFY~atEgci41wX04&d0{U$i&RT3c4r+R80GTbPIf1#0b84SOzqXB%{db$e_sO$f&@jzzOPA z^0I=i)?orE4?$6`08*}iF`CZC!_Ey-2db%<6gc3fgYN)UQRH=GP~>xDRNzzK1)I(e z8Y=;to&wSZR}Q{9QUiUske7pp6KXo>K5B&N(3@xl9T^mb92r3ufr3rv1P!}@O)o() z9eTU0up@(_h$Ewdh=MR!ITsH%_<9r>@V&I6W=sJJ3<{#~DBuR&^}}Gr0J`Y?00sp~xN2sQY8E8bOkmXppsU~% zq(CFI3<^?k)!<7}SP`nhV@;5*B%#FLhm!aw4u!=3k+j4QQ%+>!hbbpA@xzo8nfPJK ziA?-3<)ew82{daWrNBhh#6JNg@plb{#DA-qq>>+|oXErvQ%+>!hbbpA@xzo8nfPJK zM-x9y5`Qa7;-54W68}xo5!hbbpA@xzplCVsLK{{mJ@4*S)c(7MqLI&MJC6ijEc;T5};mz0!xVkOQ|BOql6-O83AaVM}e(GfvwaBv^<4D zfe|!6Y6R*5Fe)&DO|bx(YpBTXXsyWMD51!yz^=eqqQF_I$mJ-Z$gKcsymKgUmnd+9 zjj&=c0$%}bq{ySd2)>lfiow|N$i!m|itszy{^`S=XaX@DbT=ELE(5C-gCbZ;G0Tie z2PCDa$PaS8fTM&WXw`;biGpCMqL8D6qA;lcp&+EduOM8aAPlye7wUQ?nCn5NXh2L6 zakN$xbp#y&EutV+q99hPDDEhsD51cpAg&;)AW@P+$S|1CKyefpxKiRwuD2unGKa0|~QeFfk~w=rXVfbg6^JQdmF>z1DLm zuzrJ z0=K|ZJ4GG^7HFn84H}(O$r6|`A9Qax3+SpzUV&zJkmp4d`9KzGFbOE|2^`8ZV`>1Y z1zjjPYd$PbfhK-IB73KUi%mMMUj*0DIYFhWOB1VBLmzMqr>lIK9@x`ToiI&!A~Q7e$8D5M|+Qo98@ha;>Y z1i9mw1$28kTs6o^3m8FGfv!7d(O?4gcv(RAk}m;8q9}NR792wxKn@4FW6Il;3-dI8e?yw1v~3@V2wppLy%K(6doU=-+R2e04p0bkS2q`~9? z>XS2phRb6>E1f`V_yi7V2%HZD^`}7>sw%QLGAgoyGQJ~d%^nMA6aeHA(Ap<~M@tz& z`>jBe^Gv!7oS=~x1vYR74udS_3I`PnU}Hd|F&yAD!J*5*ATWCYqavrH0BC&{D8+(q zsedg98ZH4{M#!YW1iB}H36y(5YY+vNcz~o_U@NQ~K!f|>6;>&r3q&=T5}<=>pz8!+ zjslI%G3hc0g6?ru0Nw3r#Q<^?zZC<_Q7PcNT?N1?iAjM8+3zJF`$`lA9T`C*){YFY z;Sz|?C9+_afF}5ubQvTeE3Du?7eQE30vjmlU{nx=`CQBqbbLP(XknQX8JN0t)D5AubI3JMC29A%CS?uv>E3W`dg z)WGDRpa`jZl@w&N6qOZ}!IwWMfk^OpJ$T{ak0YlT1i))XnG}?*7{Vdf6NG`*B!Z#uYf!W30N>r8YR!oi~|3M$~BWPsez09t$aiItH9l(0cpC$lNAsW2$8DKLOSgAFwC zQvkXs9#o#Ofl_jX0-FL0XaJne@x^D*#7_gG0-NJ(CU8WvId1p{66*koL6|*^5D%e~ z3M{;!;YCI(24>LO6HtC*Q()6&Uy`& z4@U+!$NFLrAGE><6ex_~v3gKADRL^XftINjf>(92DKKY(7ILBnGsut`jE>;o1LZD8 zkbnY^8)&Ue2E>;!5ML%JusL2~$Z|w@ z6YLmXP|5@u&WLb3Scs7uw1gDYbY)Ut5%?zs&Rfh1Y>eG!OD6F=-y*O;XZ)3#4|(Nb`^+MRb}6xt0f%_(86vOPb%X z36#E3%lRuCL1N%?9>N@=X&&NuYr$zA-eCrf0kAs$cvn#MG zuz+?uWkDE-wWr_#mIQO=2cYFJU?q-Eeja5IXtxHnB3M8R*f~Is@KEH0jMv-%d4LnT zuZu&0Q=oqus1MHz>Z>!EF@c9OHbBNMxD>cR;}Hj-;}P5nTngNvok}dA?I-Z@2uDUU zrVU`*HJLU*mGUSsDDZ%;(PMGkzzAPQ!vLBjHwAUEEEGXE>Vb!IvJ_Ypc%ds`9Sy)6 z_Tb`tFmVm=@@}{|KTKQ!e32epTmU8x8r>9BfQt*l#04N@ETCZ|ki9}sanR_HCNqaQ za|MLOV9s2iz@WgQ$y@+hmkYXM5X7kfU0P^?SPc#_AF`U+(Eza=97S9Mu^t>nTtQI` zb^#=cxP+oOXbdGwK^*FSsQCim9dHs^3KA&dpz)XwkRcW_TjiT}9m6QCf9wH?flF%$ zbBLDK5XU2z)(v~zAf%GSYeQ6ExC30yE@+G*m2Kkbx(i-kfQcCL%NI8bl zDu*N~qDyO#Yr&;8$hD-E)?}vn6`w)r8?{w_<`YN^oaQ0SA)4kPjz>=OS3W`0{EbgU zrTH132Y;G}_!2qIgM0~2^B`XmljafLBqhyv;Yjn4Bt>+Z2e}rU=0UC{EzRG8wopLJ z7~xZzpz$nLuq5&(KvK%*nI2(2yXAtPL0Br{atzQIhq!v&F&5bf!F;plp zLPj&06rm+ z1yB=+5wtlw4kBXU$N-xBRp18&q=GPr1Vs*L{~d#(h=LGEKtTjVLWLDz$;?E7(NPDq zFV`eXpj8RxKyb=4W3m9v;esX$K#Qj#(pC(h0E5OIcw!Z_`%zI;0kq{aONBu}l%M-J zD{kuS?}#mD0e0-K_tjsYoh zWOID+={SSHhBWX{FgIv{IY{N5_gGZEL00JqO6e>LkS$sYAO`3zW+nzuE09Bx6?Ccw zc=r~V0ha>rOk@&(>;?nPqk#1bYyr)WgBttbEqhtup>z#M%b1zLQ9u#Y!iP$+D=<4E zq(C#bppA2&EqLJVp>QdPO&aFR9?T9PHfS%Pz|J(#+G`d?PLK$A;dG7yGw6JR0$4C< zFu~?#m^GLR6uA_@>)IE9R<3h7vK4?PE0{HyNqa z3e2GCUw&={X6QB6f(p!_-i```f*?P+L*!@HoWN*|PgxHV12;?{%puw^fjAzeVY1Kz z(ip$75Ok~t8)y@gjRNjzp&RQ@4En}6#Fr=ylZ76NkcP=Z52A)n5Z)xEVbX)6VFF1~ z#5YV9dMH8~CJQ|jNo$yp*%;rn9hAON8{N@=X&&NuThN*-BKJ z-?MA*r+J7kk<&cLm*6xH@+C2iafCNXN%Orp(mW(d5uN5it_7!gkZb9Z=09ybiBZn) z*a8v*r+El-h^Bdn2IPhtjL{%kop=*xMCFOkzc$d}+W5Ar23X&&KC zQqp`Mjx-NRQbebDkZZwd9^_iOr1?D)PGO|^2mK&1aGHlOhiICII3798zv%aZr1>}f zUc{vNH4{z^`ZN#mC32bv`4XJwLB1p=%_F=?N}BJ-k>(*uis&>CaxFN`gIr6OH2-2H zD1D>0Z7!?;iGkBRggHdhJjC(HX@18tXqw-%jHom}W#!;c^AKMmr+JVs!D$}kOJdSI z!keU|`3X4EJS0gGo#sKV1*dtCYw42aPwWDvZ`3qDVJ}DwoaQ0SA)4kPjz>=Oe|AFC ze8VoH()^XZgFnqfe2JXqLB0g1d5|xON%IJAl9J{p;z;w5Bt>+Z2e}rU=0UEdOPYUk z0hGQ`)BFsu7&y&Cm_szpLmZEs<{QpI(|pT0qSE}G3xhw+Lwt#x=0Uy$r+JVsiAnPa zZ<3PcC*er*kR(NPng_WSoaRBUrAwMW@ftJDzj*}`1E+ZibBLySh~tsd{FhhIH2>oj zQE7h1>%pJqA-+UT^B`Y>(>%zR#H4wIH%UqJlX0YZNRlEt&4XMEPV*qw(k0Dr*m4@9 z5Bp;qNDQ3jAZ`8KUmX9DYaGHlOhiICII3798@A(K# z^9Mc>mF62h4gNF_@g;Ja2l*15=0UzBCe0(fNlKcZjw8)Ok`&Qt9^_hZng_X-E@}S3 z#4{M>{E8_cF>soPFo$TGhd3TN&2O0E11aaXOz|P6oc}WA%%CslA-+UT^B`Y>(>%zR z#H4wIH%UqJGjODNNRlEt&4XMEPV*qw(k0CwSpZ7ksO9{J`5-ZHnujolXqtyO9y!e~ zm;+7oOXd)j=C>>u{AnKIOXM^U@+COUgM3L$nn!q(lr%pRN1BHuDWcOn$hF`!4{|MC z()^kap!AKJ=D&ObiGkBRggHdhJjC(HY5vbAXqs>MOjMdb@Okj3d5ABO(>%zR;4}~N zB{69p;Z0J~{45-49+ISpPV*qwg3~<6wRB1I7cQN}Xxq%V3K9dSc?fferg@0tk<)z3 zC0|I}rsI+?F>RYWSI-XmwhhFW$Y~zrOK_S8`I4A4kMJfbX?`}2G!IEqM5lR>Yr$zA z=OXC6V*{DntErTGbu2Y;G}_!2qI zgM0~2^B`XmljafLBqhx+#F6G9Ns8z+4{|Ly&4XM^mo(pT^8!XWf8jPr44md6%pscQ zA&y5*^9|PnAmx0^^#EeZ`6+iU4Ek~&;!ET-5Ar2A&4YYNOqxe{law^S2uGTSBq^fP zJjk`+G!JquUDEu6u8SCHz6UG@PV*4v5KZ$C$0MitHSK|rG{2!ekeD=oq3hzHPxBC8 zBByzfFTrUZQ{(mW(d5uN5it_7!gkZb9Z=Kn0fO!F(iV&F6nVGhwW z4{soPFo$TGhd3TN&0p9IP4iba6P4y~>>T`Q9^y;nG!OD6 zIL(86NlcnYc$1VgzYIs3ha@SY(>%zv;4}|%EnU)l!!=O)M(x9%xB(Iar+El-h^Bdn z<5AN54Op7LK~$Qba&z#fd5AAj()^7;$R6-3Hv);;1CH<}DQSK=jx-NRQpBhE8-b8L z;2_u1CCzty1f_4(G=JeUNDQ3jAw7kfqRpbG`|8znujDQqSHLcwcv6d}-ZW9CD zhr#H`0lIJlOob>gI@X&pMSxB^1Kp$x7EFNfQWU_v3<#B@z@Wjz;>efZo=ny_u(3K)!o&e|^ zJ~Ji}1x819&=pdQpqray967+pi-C^11Dzkt=!iJ1j8TD66LeS^_yR2^2WAKGv26-j z;ACfy zMg=fEff1xx1#+308PgQd^-Bz(gXO>{dNFXr0>qKS6LdnJ0x$SRli7@51}`)CatzR| zy`T%u_{^C0fQ;o+;LZYFWCbz{bUTR(0B=(;7)Da_FHBo4ZX&5UUaD11cCn07EKh&wWrD1wfDlmNw%80eO^ zKU@qT$1#EqmIhsAGqCCV@M!uTP2a;feIFf7-=pb!7^m-Jqv?AzeGlXGeR4E?kEU;$ zrti(r!>=cx-jQ0OzyvyJxEOLpC5RHpQeYJLC;{nwf$ljKaAYimo_Wor!6X8{LzNkP zizWl;-boe(22e*3+=XBQ-8{+y(j=tFs=x%g+_%t*K}vxMbbvebENzIvAQGewblo7# za9svzMK%Q{(EY>Jj=GBMkki~DXSIVamgEKBGs)!03c9fwbhbQ`qfC~-O&`z|l~6aZ zb1N_k-0on6+$GBB2)b8LU^lY@lP0r)6LX*i;r;4!MSVl!e=oLlJa;4fv|oECnvGZLsTJn822SI(6`n)yPr+ zD;4N<;bG!-v;lP z0y&ToblyEE0Qs{VcU(TiAh3xUbiX$fD3Ud}VezJck|=b**Uj>SyYZli;TQN)jua~( zBXt=xAs5eDF*Jit#TEcxc?wE<4BViE0J=;QbSyX{H#g$`Q_>Rc!=aOCTQL&tjb>1o z8-R|y2PfK{gC^1T5S?ftZl-&p?QsDOUw|*8aOBT&ya7tItI0{U7fY#;Xt&a|q_t)o z_>van2AY?&AWO(EX}gI|w2<0?^h67C9|a|CH)^7N0ZO#+lGd6LR?_M-YB>J?&x}+7 z<0)%FP6Cy+`ixqTveufh30&4%GcqYKI5Jo>Qmw2VZ6JVdYo~exf%vkP++=ITz`#R6 zvc*=`!jr8P11#CfSg39vX<0j3(DdkrwwGX1-XId$rfY@`N@{}&KSAL7UVt(l5H<) z69L>AgC|>3%364$1vvrZ>;X+~vt}uBC@?v)W`nPu;xJ=Mf!sTlp#U~o0b-^K#4rtrDLN4C z1`5oMJXs3NpgY!ncsR0x@1z0?aS2R}gWPAu4ZqLIM1dJJqig~43Vy7>>}ZlDu+#|R zS7r?+p0!RB&N0*}N-9V?DReA%WN=sHQIK4&$g2SAxPzylVL>7QzBEc;t%RuEPYK$!Le*))l@PF!`0G72&-Y zELRj&0Nq6gu^eHTu!1OPmRL+d7-3k)ESST^KtU{%r6{f-t{{d`fY8pYAa2G4x<`xy zbj=|6Ix*0VW8$ED1sN2WHJNP8nLw8rODHfXfN!W}cC^WYUJwkr?+eK!(AB%3x#q>J zOfvOsptTeqSh5wF6qr;P9A7XfGJ~#XgN(FrWGOHzFoWl)6&M{afYPNS=-M?F1y+#J zifjt33QQp5vOo!v0W_4Q3A&uEK!MTm1w)o1JIFi^CIWy3ziBA)DsY1C zEoNd+lvm(|$;pG{6cqUsI2HK7`V_!JJYX{wKyng_{0f{3{9rjn1%8-5MUb3;qJRRY zf&f@fNkIT6rv#GYP!v?)R1gHqDJuxVK%!Cw}96{y@ zL&A(ffk~5T1v4b7MHCnmM6wh_6qp=WFhlOKV*-^YQy8-pMM0*BF*zuRflLvFS}X=N z#c>7`B&jiJGVNgjnP#9Up&$-PI82UvSYRo~QA1HuL0myHOF>crA`bE<6N96IqLhNT zf>f4*6sov{qO^jzf^?RGG^)6OqKtyLf=rfz45~PXqO5|rf^3$8EQ&ZNRk37&66sM^ zCi!|+P$JzR4o##AObU!!w*@A@D*pOOee{12lZ9zz$A(91859kYvfq0d)YARd0f zk_Ea<59Z+p-Yi8y#{-OtLQD<{LJ%cC__GuQ6@*|)wg_h_3WI`8gvmic1fpb*V3vZg zf(T5>0X|UL+Q6g;Pg_imAB3|ML>1s^Yl>KwqBtny!&ka6IW7EKL}?jN-HoaNSiUu0P**5Whu%iFe%8G zG0g$-Z!l&l$|^7^$eJ-N0P)YTXDP}lFe%8HF)ab{4=`mZ$}2D_$eS^(0P%kaXDKQu zFexaQF|7gFBPr0TtN=+FQUaZ!kQi2A6!<5uz~p#?B}+ltaly8O34U z4Wt1SY_bBc5fmMMWCSd`QFmYs1o0_*t{SU|He z5+F)IQBr}$@eZgU0C`SeYp4PX==x9vN$`#CcNnt-ehGo1L4!%fjOhpqglS^NbOOX= z)@6{fVz>YbyaOy*3gY0KJsA{O9Cxr}DTslthzB{waRW=10xz7m0+b2iyag;-3W9Ln z43;bfVK{FBOO}Etj0d{v-ou=!gT?UzgQ66ZgMt(&H?n|h4~UbcAbE)e>OLp$syBM^P3;aVW|u zuz+&U3y^C@_F>7l@LBgz5)Ku{@fd2Vr{NgqfaykFfOoax^_NF(?j`@_936 zdj2`W()07t^gMjhb5|Hfd*jatOV2GTpoRwN?TzK2Q8n;bMFT6m8wgq!@tXy*CI>_- zFoG`sHe>n&65FutAcG^bBZCIhpKXpHs$sjMKqshe=xCwH3>wz}_xeBsZA^|9Sy>7! zW=x;~2UgJj4R9+|0zA3_l9B-R|1}iZ6c`oQz*3S5Yzh!vk{~GsMRo;71$MBM6u27+ z(j^6wl28P1-2h8TD}aXQKvL2mDFH=J1x9EGQwH3@1WCz&q(BR27@_@3S#bXnBqa;! z_c4O|eHIE#j^M!qi!22ufhVBVH4Ih^zgZL*9c{7{xg9?+DDp5lDDZ%qgG`PGn6ebO z6?h;`K_+k;7%V7oAYTE-We~U-;P`|=k(bFqffu4}19-Fo)MDlZYXwR3fo_L~NdI5} zjb4Bh@xi6}nH&`OA<|R8?gJ^}2TLn3fL7!%m@&;@RA6v?0^R^30BY7lhadzM1QY~8 zJyMX*K(Pag5e-El@IagbXefjQHq7CupeU>$pdbwDoPt$@!i0&zQ9@BfK>#)?f>14> zD5@Z!APVZIBCF<56jKmT5X({!0|zE3l0btYPZ$)%nH&_vLB3#6U~&ZcLmcb_CI`?W zoZl?awOF8_7ML~#G*;}`zzXi@ZDD2Nt7im_S1dqXLRJG=M^p_-t{{roC1jx8D)1#_ z(6M5wEg@@WBx4O3$PwUa3&ypm}&s=<*VfElBeg zCm6CIi^wdpP!^F{fck{sMP#5r1+URM!H^};g@0+o4F-^-84-)fB0!GDv4|`IwulUr zaN&!{K<-1Dw|D_^A85qy2HGOB2y^BPMC5}V_yXcUP{ILiHv_H5`GK;u!HfwuM-1Ko zRtQRpOd3q^RSi=>0mZ0*w1N!e8jyLK%m$EE4d%=pAVmV^%pA}Wb?^$ZYH-?RnehrlVK`XDorhxM^iy~-q91Cc4 zngLXZg2tm55mP9Ppe2sF3{2oPi>%CZrh5m`WT4z_WF1pk@_#(u2uSAu9_sa}1g_EOeLV^5vbkDs=%2AE^@yxz~_oUjaF6#E=VN}5(nvI0@o1= zu-R2mJ!r-Ro)rE|CGxk92_M0zqwJ1ttYkAPF=>)sZB1_;wF~t8Hpy9BEk;wtP z(-~TWGl2XGosHQ6QX^@`Q~*k21+Y1pJ)ksn0Mt-Wkm3g=RR%Mr0>_rwXBh0fsCEP!CRlLz8L44p;CbfJK%9sOJU}TCu}bQA&Zu(I86! z)MEn)E!g3zC=HpL0p|h^O{N(;T*0H~3R&PS7DrIC7Brm#5(BwUSphVKkOiAU z;nHLRJJ18kf!qq*PzQpWGfV>KoD_K!*c}-Q6?qj{6nL!|`WY2?6nL`~`4sp-?FI!N z5DE4Y8>j&U_NyX4M2mm|i-Ld^Lmy~2zCaeZ#qpo9P=Oz=g`J0uTY&{MJHzS7T#}_I zq#y*!8NwinMN!0Y%g&<=ilPcEpjk&pW(84!V?m%H0~SRw1<;-e77Zo_1u=nt>OAb+ zppbQ3vhyf|K%X-M$j}oESqj`>Q$ZPp5j;l&B3MA`S-~E4JOWn_GLFxYNnn;YXsPEF zkT`hR2S{8HBF@O|_yjJ_;y3}63HZ5>u`*Ih_7-vA00fQq?mcS=*P<_AxPM}QSX;08pFS8kw2q+z|I2AwL-gt7r^?> zm~Ma%+h9;+1=Tt%kXDEW6Nh7cmSaU>mLmsf2^*8+0nn_hz*H5`N)<*>Ryn|!CGZZs zMQsC!ugSE75mMvMV9auyaPK5&U}ghjmcWZJ1t!NHkP^okj9CJIKy6o$-a|7%6+Q=e z$gKg?hyabf^)SL(E8zWIOg)U|%nhLG?E|FF=LEHBG?^MeR)Ke~ffgo#$KOCkfV~c~ zmmO3Aawu|x+cBW#0GROs+Ad&*wn7R(%?UP8h=AH|pv5H*7_t<21i3+74=VBL}Di2KUFZ!2P}>XufbUXEt!;055|BwbLL2ZU&HX zIG9fj%$XGw_&`1d&EbPwrI4i{0{5r_6KDtGs_CGBmdFy=ITO?kS737F&k~q89W(?3 zPC5zJGLtb$E}O@%>$4b*}N z01e54R!p*i#>yfT*g#_uF$!#;J(bCzmPocDJ1DtAFh~GggMoCjgH}qiJF>tJ!Ex+( zbC^M(y@Y{VfemyfkOYL10Z~>A%Akm2b7V1N5>Q|RwV*{n;*e1YHcciTNT72lFeq?j zDR3yTIr6{~9SVXzy>lU19TV?h{fOo?#+WniPkk&gJ($YZ=Zcvs0+YQ=R>No=wGT>?wG;|GWs(~EAZN-r9$beSx zgPjOEE(kPAvjU_KTurlqwn&1)(6NCLR5vg=K&uO0P;m!c6$|$wNI#n+6KF{cg94i- zlL{ns`9Q-WSqgj#Y>q1M&}D{t3pB*QrpaUgQOd8tpui7W3dQDV09VSy4GJn5(0VCQ zOehFAvVi;uN{FBURS?Kh;085QL9qgE#4v(eDhh%iRglOLaAa}Zf$$aRTp=0IsG8#m zkRUjS*g$PL&?>gGtW3g?QDIOU8L6zT0A)ifhH?ca&_WIca z1h%w+7z|bn#_M2*^1Cdow|$6AyUgj!A=wLxD};vp;wz zEt3XQ2P5b#K~P)5kx_v|fgMyc@iI6z>^sgNuxvSa3l&%qbY!;&R2oATdTKI(8hD@y zivyq`Q&GsQ24n%Hg957~bD=9QWOp%W{SwY2w z0;tk3$r6~51#&d#cq=9lLqUN@U_l)CEG;GtCQyoVWKiS-?G;wwQ{aU%*;9ud$O9H?~$S`jJ%n!OMZm>vhRT1HU_L`i^} z9*%byvLI2Q0M4mkV{<^25NJCysK*5wO#=9paJ6hpc?A}LzckH4n`gpZUt6H z1~a4u#^;NK^IsG)ai2605uO3Siw@#Adi5h zK%Fl~1w}Rm2GG14GlQZGsE`Ls$$+NGBox^d7(nxG%nXXM;CVNYU7*gGqktl$00x~a zCI@Z=fTTcOEk_PTPSAKU*e-cc=>|3s+~Z_c*OhwLzW_!qlF@9O)@uFu>!c7 z2hT%*m%M>iCv$;Tb22k1DuPEVz;fW_ZlKl4T%gs-%nXW3;6Vzo9H?*R2x|FqftJ!S zGbk#9mvw^WK+D`5L93IwK&z9P85C8(tCPWUpcSHypw-D-pe1(942r6t8XmNYElUBk z9Mln1%X5KNCo?lBs)1K0gY~IFG8Y%vR~`xs;6-vm;Mp@F1!1tS)WO5Jpdl0mbx5F! zC!pC))X7A&U;k^>E92!RGOm>Cqcz=IiJIW33_ zgupHUwdX(?0CXstqXB5S9usI?`wm70Mo@Pa(ryNyDF^CfC@>1_1LZ1Ew@zGOKZx1E zn57^gFcq{w6Fefp&%KY8Nwl5`lomk~Zb$pbW>N$mYnP$nJP&=}FM61}muX02(FY5NH$vCrZ$u8mMrTP~cQx zhQuv++=5ww6*Qv5?4iI4TInAF$>CfI(7`rlP_G{}h6HLKGixw;IC8ovf+sq_-3D$% z=LEd|m`8!x5j4yMqCsf{95J9hD$JV99_GvzpkUKr5&+HTFoSj_b+=v+WS1!hMHXfXl`b8v8g=I5C;nV>a; zkOHfM5U2^u?5F{0oiZ_ioG$?i4Phn+a99YVgoTKLhypV>^Mhy!__QLk0<$Kw1Zduj zS%KA2APYQU4P(w>1dAz(Ix>Q~g9>5_Vgi?>K&#I+nK&RG1`R%dN9n+ZgWL-7@D6wY zaw{-9LZ{viu`+UinzLw~urr`6!IA~;b1{R?G6W@6VzC0VBXc1yg90t1j>53B}UJFs9ggvId!+z{|clp~YC(;QIi0W|7-g;9Z3;L==h zD}@P^bij(irh)e?fsZc%_YB$KHYzZJjZk0#&#ZCtaDf_gSSma=#|Lnm*+7Vs+dD(g6-tR)KbK6%95SEDSdJ48-IgAaw|n37FdP6BbuYj&B&U6j%k0M1sn& z97kq1P=^MbtU-fy(5B1`ka}?Y%kcpNsC5S0djlSS0+|5ae#0U#y_r$qX%nd6RpexH zP~ZeLenGuko-75w18}B1J@j&HT|H~^`KhA0J6CaEDl=R&k7k|bp)-pVTRWFpf&z%Sqk8K9kkSj z8CvCo*7~z&DS#_=&^jAt&>RLcXg3fOsOtr)(H%jP70jSTHq4-9kxZaz3vk^Hnyg?3 zt*`;t-Atg452)S-jlF?NC}z-7AV^~q)Phg~*ZiP{lmfU02Q8LofY$uV;F=#S2d=>t z6d?s3NS_M0<_F7xYj6ogNXG>v2ied8mIK$|0*a8H3P?^3T=RqFKsC4{X#Rl#TJx)e zYksgCsJ;db)_`5?puhlL7%%8(0NT%{AOvb2D++@<^*=xjZDG)qgNCArf*`1NXM)x4 zU^#H@uAnHYAPB16nHUrywL4f2T)RssiYW+!YIi1B?GBa$)$WdB?US`eF)I*GUoCKx!w*ydFgP|GKf>T>>A2_k5m=sAU~qi<>jR6xO%5N3k~0t` z9Vehl6c|B6zM!LjAqU7aI-WdmZZ0$AY##_a3v{Hg0u!j4&9qig*y;1u4Qu%nMVvsr zAJ9R-3c?DY`5;k&>E;Te3XGb}8bP3iX`0LmpxrglGKU##y@Hq%e}^LYL|M?0N#daW zhM=Q~L5&z61@Yye6Ny1(VSoaw8RoHLbyJ9%sHI>wh-A_%nnO_NzbQ5taswIkRtaNk+l ziK7E{wr>PvhovHy0wZVxOA2V0CCEeEphgE+r~_18UYIwL5!6^w;Bo{pvtdUZ*C;S5 z@POJg+-ntOowjl-$~l1w2}T831$hNI1$mI0_PcaQK%yzBqA& zK~YeFM*%c;s=%)xC@@(9bUra;l0iX;pWE>U$S_b~tbz`CH85r?A`N+^fOXi7pI@>0Pz z0&xP&F-N*wKwU^pCKpHp4QZqcG~5Xp*X1F4sH>i&p)OF^5g6)%cnv<(r2}!S4#csL z8UsAkr2`+of(>CgNCl$6ufPUs;X}Oz8R}9&8tUQzB?C}x4+=!&p)M7i zLtPx`LtQEuLtPD!;n{vxM)rD8(E%E@=1^jGY-ngWzzABv1`>o|1+ZuXSX6;QpOH_A zg_qHhL6M1vi5pbjI0|_3f{JS_6gZSv71-Q(nZS-`)nQ;z;&80@0XHlevlKbNi_{c2925M(LQF_P1rQ--h>!v+ zXzHGWTY*D?HCurRRNb(HEN2Hf736Wy=05gpMOM(r5Q9D=j}iw+KS(wBm{>qVFQDE7 z1Ng{#R`Bsl3M^pCpO?{*QIP{Q)&!cL1eZ4&Oag-347|*sv)I9s;P_Qw*I?oi6kq_y zKC1$!0!ud71VtuL@Pe62EDB7Xps-V5^54iY)+Is4WH!JW%TryxbWysS28Dg#?}iDDc1| zzYJCkpk28PRt!p@VNxbt22;rPVk?Glh?$^G>Jp$m>{3uOLEF@sbQvVUQ>Y;4K+Kc@ znF(592^ukio5=*8J2eB%ohry$F~mX4lmjnYQjk@UgPN%T+G`A&X$EaEmIv4Jph#8# znF$_5WkR?UY@(8)B4}(|mq8i4>QO-vtOwKsdjMI`xRsSr5|na5Em)*EgA@hO$|nUz zfl1($%K=Kc0$Bpx;J5?bS^-*-%M1#1f+?31mU8<+LpE%VGnO4<5a_D`Wql@H2GF`2 zCJiPYQ0fIOzX6R`bC@v|ASXu{TY(+6{6>KZw12(?M8Q*qG$>U_D{?vtfDU^AI}NhR zR*@T=Dqv$&ywGID0UC1$oj}SY&{GMjn89X(W@;5U;D#E53^gVqu_Fuxk3S+z@CKRS zO+;#kC01$BkiLSD6+^WGgMtt|xFE?8G;s?)pg{&yaSMPKf@&n3ZGtgic^yCMSIH(H;E{-5A zSAOoTtc;?tWQ)}Ck^vps3ce%+v}jHR!qWhi+Z>?k5!6xAfu|-WM@G5R1->N)R0d0cu6)s8;xS|Lfp`t( zDUb)596(w`6qrD*Hc)_QFiF6AHUXfV$_Scx=T%??ZA<{25W@?0JM?;%0+43Vqyo4< zQUV%b&4%pkaP(NSqZROXfQ)Ha)aW9TY(XlZ0Cd4F@m?4fy!IhL;@3NNdfrarW8stTc+y}>0H5r{23qF@KH!N5Y&|n*0SKhs3_46nkwbwQ zRN6*Bs0s*G0~(Td{KJq1?hG?4Fhkg&X$sJYcn!o0p!{XU(8LIGYZD{*$S6)|Y(rej z1y0@yToBhn4QT;gXTz+)RAa^@0iGOV1RZt4%%CW)0BRu$WMwIcgT{S8b7PFq5i$t{ z&|CvZ3N)SJ2$~vWgieh~f~N&QQlRCS;F&Q-=**au0-pjic!@7~h7g*D!2^ZT3j9zh z@C+enUW^esIwqqa0F?sG5P}ZA0uPP}fLM+kAl;z8E$GA~W&zL`6ll>2bhw|v(LzxW zw0IXZi3_$FtQ9m8CXiXVt z39y0~#MuxlK?#b%k;#g|6cnh?S=V`>1Pb0-1{w!|Cs1of&@wpiK1KzWGAjll@WCRi z-~+uthlR0$B3KBtn1NY=S)Wk=v@n;^kuM9hc7q)>qvR-(1s&9ZC}PxS;IU>D0i`8f z1_mnzH&AlYXB4q!bO9OVrod7HGRUP!;5@4$C)fngJQDbq&~a!N7_t=j1eP#@@{NijzXCI8R3`)EeGNrWni8;P%mW$er~+Ea26mN% z0>5MbIR-Cyfytl%-m%F9@)R_EF+ygxKs7Tnw*tT8$Bp$K;AwZzQVme!6TIk?UqQfe zLent@fzC8VA&@QLS*Zd?Ch%%3X7EU=B4`pz7!uiFA0omYR2qnY#p*zs^%*Oy8EZhk zu7mozrbtl~d_Wt>yB`?9o;QJ{@(&DI3Zeo#)D%ED1=8RE&F{ifstK&+0!p9Ip8rzN z9$j$y+yJg?SydQ79dGdETCAXAZV4kOv4EH4vw}u0*MO$d6tWcAoEQ|P71$I&nOT7q zw4NHm0tpBxu!6^X7!{ZV&R02tnxyOstd5`rrvPHyK`dxv1x=I2fOZ42f)*@U^&ouIp~lRusIc=O?zN-N+AZ6L8uZ1R!0rU z@D!^ilLx3J2AWEMt`mef43rF*K)pnbEYOKwpk;!rnoJoGwU7-C3OouB%i(HU7_$UU zE&xrO?On{MzzXVN^MWV_MLq>q&}ulSFpnZXNEkFDzzV7nCx8N#7krN!E9f${86ZAC zc%ujdXo?+l01vAsgMc{$gCpq75<$o;DQI3Z3v#O&cy*s3WG^j}Fl6go6oiTfQPzw) z5K2#h0TkBYnOD$`TWEt86f)2Trz2>k0JOM67Dh@$NWvgftr#L8RHOofqXKAYfH=sG z7U)t;`0-?{jxC5qoD86Z06I$$q;vvQDR`V2bTSz$sA`8gNP!i!HypGUs|Qq!GJ$3W zK*QOXbuo01)@Px zVAq0-1{KRp;3<31dR&AQ#OMrjW(h|LaDmMPI)DkZH~_2~ZZu@04tN0xXiKdGY;N9> zLlL|$2ciqK(iAQQHX1Z-58n0)TCWDm%;4=U(B-hum6=G}%;76Dp=a+Y2!XbvcYqTT zXx$cQjSPHw4BT;$^)c|JF(6Na3wKck(ApUIvKWXsXgpJwVKrzj9MoWB6xcrr+}+v$ z87^H6-AnKQb#w}}4w?ykp@agXK)VKLsVS2NlK|?rFGw8mgQ0NG^=?rAWAChi$DnD)GJ1q~N!FdcZ~ z3L2$?T=KyLnuy^5ZNgx8lrIGJ=)pr*+@Q`B6V%Njpdl?0&^6|YypD_tyb3&^p%(DU zHPHTEkS0*`mI>6ugY>XLJsIf6R|f??Pz!}$fk}biioqQ;*5t?r>c7~7Z7Tw`KOZnE z3P9Zr-UI+%JPKY1(D3#sgTNUJaK9Jo8X1slWI*FspiKhMP!m!R1i1+mGfWyxGN7e; zpz9z#6of&RgH|((fJUb56-5>J6+{aa#T1x8*E|L&h=Cjl_4NIB#;7~ksCCS2&!yk zL1POVOdR0N_nuz;q~RX}+GECAkzXvPFSELnk7pdne2U4aF>)6I%OAI_Q& zDt_6(4PCJQB~bnZ5X}m1n}LoEoB$dQS^*LRZzTgaFF@i`K;j!9;$Zd`2zvr(PmJRf z(4o1Yb!*@|WWfji?O+72k%a110GkGOlr;EyU9g%1jNprP!EBH_G(b1~f)@&bm$QNN z&H&ka0%8}KeTGqiMT2PuXzqpuG^}6%_hCFFU=l#vGC@N(U~dLMcp;#35<#sN&{Q91$+o5 z7pUR_pM~iFIZ+a{MU@*=7=lB>MS%s>MC1l-N99)Jab!{Cb?mut5Y#va?VX04Uai0< z@Djx1fYkgT2Z45Auz>nHKA^CI4pRL&e-J!K#iqalQwcg;8PqtP4>~>u-Z*7dfb^jt z`@X?_C{Papl!C#1DHcdy3N+aSx}N%wqyj6rui*G#)jCbm75}H=ztxZ zgu#6k4h0VIQa*4!&W3HtAe-Y1kXFzNIq+&%*x9o%m3R=C-fi18(9RGmA1sd2w3LMarS3ylza34=W1mXp7T4e^=E0CqYF7UP*)MNnb z1se{UViwq|h3GwPgU(5T`cAOD-i+YhCW``-6~iJ%&{7u(@WeT*6~kgMR}!|JdkG^b z^(nA|+Cq@4_W5wVO&UK&^2i^p}6uc+g9Xut> zVa2cvw64h_OMzM7U?!+QumLS*WO4v8EfhE%r|dY+Ah13SlENWn4rrGRcyk{Y^pIHv z5Cdsv91AF4hL|&ZfL#Jwz|c@(#^eE-PKVh7E;K+z2oK~$Rq$!J0#`Lb*7AV%O@r=- z2W@+QzyLa#nE`x$03+z|bI>s@pjFPGaR5FAUV(=o_k%8#1MTXmFIE&(U;)pvS}`mK z$$(F>h4@TFQ3zx_XkrO`05GzhGKwM~InW>@3wWIQP67^*0WflO0S6o+hr7grDi?P*~F9Y6#=Nf&f1IC#gr zq=JON^!fM!}XmqcG1@+iL#R+%^D#es1z`7yDDr^31zKFd1e$FEpDDouy5k;nWSjzzz~5=0el9O~11!wB z;6o*tG?+k*mL5jOC7s7XwI&m|(sBfC+~rZ=6S%AlG8iX4%!$p0kp*z#6U>FcD910KwGQeQsAKi1`~7U35<@Q zZa(N7qXy8)>L3P4IcQ)ETrYq|SD75aa-ehek>ofOK}SvIuH60;iOPWkKm>{({(xERmm>{hM@EL=Gp!J%dSt79Qpil*=2aT@sLq=Co z#6g><`60ur$l}n=SRx=-i847Th=N=NN@O4(h(h9)0UV@apxsoOOgF&yK7a~kG1wt6 zH{ka^I7%o=D2Tysa6l3V9eOSXo5x2I=TMYV5QE*|fDl&zr)W@9bSEn#50?HEs3XM) z=}0kw_N{~aQ=oIj89{UV;Qkb-`^1<9X#;@zP7I*MY2XA18qs0~El?Hc@ImTH8N>S- z!?h;`>UV&;GN1t)aNlXj_oOT!Jt-RnPS9u+_-X+w24_&;34GoUsQU=2(iyB6_(7c} zenoCaMnxV-r->J|WKjWhObBD40xz`F1fHn^H3eB5`Ldw>CNRrK0VJZx=Lp)D%csDm z02%@2cSPz%=`ujh6oU1lR%z%TDI9GBSeFssL!c2#X3R1295{9hgAlv@8nD z;2Z>^n8Cd#7DwhR$1k8$i55nKyEUNB4oK`PTnto`FgbDw90zUo0Ig4gDftFh!pi^? z!_bz8P3LzabUtCgs`UpET3@hZ)%ueNtrN~+xAqqidKdJvVYT-+5qb}_*kaZDhX}n5 zYag+oXaJ@b9l@M4*iww5Sjw@Pa*0pq(9bbO?n1gdtC$gB>(E0^xJz33P&29Dun3UF@JuZS+-U+Wl(J$F0?l4oF$jYaJ`97@fXW4!*}4qE zuvM(dj!I}}U4b$PXhH~dEgq=R0`?$i&uPc*|QvHT!mf*51PP(nyml|XeLn4 z7<70R7pT+50Gd4mo#_fy0$QL6@0EczXM;Lr@ZBEZ{sfbbIWuVQ8j}W-1U6=BVfOSb}WJX4lZUim_WNmm_P-21vnK8!f&;QdyWxwvZD}a zauqaR4_aXYK1v8ODhBbL0%+X^c=f3Vs4Wd@Gc&;2%%H^{5VhcS)1Xq%l^3)S5EM$# z#V4etQ^;AyLm{2Qj^KrdCFlfG$Z^Bi(&-se(kbYc%#oZ1Om7@O%i7GCK7eQ@Go~*NpiNR+CCr$9fJ7M0nErri(6Z^WY*1GVe5a=dOcm%J zPi9A*EHkDCN6>07M~y5qrWQv~q3PJLRYHLgJf{y@9L8wI1lqg>)2ITz))Tzir30c< z0km!utP{NI4MZrwbu())shBZ=4mtwaqQRtK#v}t;17={x^g;n7F-d@iSi#3k$e1xna62|AfVSB{?(Aa*9m&b;_(ma1 z0eWp8XyK#+NLZlV2V|%SWT`CZfJ5*a*%=^P+02;cfL+hzpuh%FB>|pxha3h0S}^N) zLIHGp+S@?zGz93VjSZmlZb6I_3b2LrAg^dLolr1m-k<r@|rRPvZHJps>0g4BRSG(dc2U54ulpiyHcfp*Zk49KOeV4K;SK4OWFOT_0$%#hR?a8i!`8 zUPpO(eJ6;V@_K~^C_4>cdEGf+sTyiCI92Zio#V#rNM3o}`HO*wWZeK(hA&-%RA5cm zAPF<3p_#I0QC?o(B`akgQybuv-7#P(8)`E+Wxwn|X^D)M*Hmd=kKFRQYrs-9)Mjw1 zMk}vpK<{TlTXh4vJb?+k#1XWNu>!Q&5PZ@pbU_D4mcY|$(BzAPBC8|l0w$z|H{ip= zK)pi{2JgWJO;15bb)ee@KzC4scE^B>15a|ocMU*fIKeANpfaGTTJq)02m!MM{Ss){c3}#Fmpy5sMy1)c8Ch(3-FsA^#t&&B9DMk@= z9|eyY6L`)abh81EBMWHvp}5`$yufPJ@2sQ(B%K;1YphM6uM1II3E^zRGcJhI@1;A&Ek%U23fo{NquAE|lu)(X^ zplr|@Qb!5!0zVcFrWDZHAJ7rQYd~Qm1R6tR(O@c36n11(5Qgut1<$_bfcKb#F3<*T zs|3+c5PPJ+OPf+aH&n2IRw#*re9i+}?E_ltAqv`rC@>{QfdRAtN&qqr2j5Q40@{lS z4j%Ab3($2nOIR7@K;y%pl!-JxJO#Yc3zW7%7_=q~boxJN_p&YnA81e(6pfA?puIB+ z%%Jr=pu;v4m_U>8kee7m%X7d>4@(OJ-5SCD<6wOi2bHawtBCQOhWe&B1~UNB@i_P|{V z8kYraXyX-_4|cK)=w2_-PG`{86@@GXeg!@OsFPJ72MH@E3WAnxffo}qfi`r3ukg_T ztu_#VI#~yF3V{X_X#Xkrz83{y1tE}=nLxXld9oaTTsXiWa4QNjN(@d7j0z&)Kn9&R z20eidbO8-KkU_^#|6s^+`~%Vn4r0(w2hjM7m_QfU;U=Ih4xlk?(2@&_ECmS#ahStx zK&NeJFj>Ivi+WvG)E4|L2964Oi>E7KM;Bk3^O!R859^n zyZBfgK|8frK}QlYLAEP`Mx(O8>ucagk_sq*4t7&ycLXIocF=KzOrS%HITV<|w=IFz z+kl2{zzJJHff2Mnj}yEU5ww30bo49evQN+e7v!`<1!e`vvDgL*jG&NI1dXGE5+4uP zwQ}ISui%paL5piZqex(r9TXTHK?mpYI&vt2Zw&yemIv>r25&qAEw=$}i3O_;P+$g? zKA>Y?1)9SZm_cWjgZCmUFhTf#7(hE=L962+e9#%ZAUDF~K?~HGLC%8-EMNp_04?$c zn*iQIngS_J;3rgp?F6MsQ2qhkG67!V#jMFx08t3vqy=^lLZJlY9Cl_+rW%Ms&;f_w zQ#QaG)Da3*KsS1bfX>T>Z07>4*Ajv4zXqixXcA%oMFMDr4YMZG6h?@d;tJ3eHq4;a z_Xsm>vJ@p0BtT{^fU1;KkbtbM0iWjzQ^^cVceA0pyFjT9x)1@hm2>to@boYb=-dlX zG0Y53V&E8f9SvFxAOcF0phAgNfe}>IWhgL$78@!sI)V-c-{b8FT4pEkbTK3NPFhyb z0T+y*Rpu57jE*Ltoyg!FfsD`_AV6nfgA$_x2gDetGr`?ycF>8KoKSI4dSC)gk+E4Z z1b|LX038gz9DHdXD6I-iO9vgn2P)6F1a2pT94Z4k$pTcK@qkl4XibN}{~oaKR6u9x zf!0q#7X&N-ogBbx#KlpR?F-heJK1fNQ=0#uEHue)Lb?ZJnxx&ohf3BG2_(LfPe zhcdwTO*?|_g$1v+Vt_1d2E`ocQdsaxE6~&t#53RI4;oAc0`r?e=OjX_?#Zl-Y@n*!AX|x91vE1NUT^@OR$u`aSfKT;Spr|7*Jglv zn+i%Sph-W_B!D95xOip_CLPe}*`O(5(0S|7=2!!4Qk5BW;T0=rAFKy2xJ97A#LM8w zsK~~{$SrVc73i2SkSwD>-wH-0HdkIIh?oXV!angzOI46>e%8MGliO9`}o4K(?u zz?kjGY_F$du*Cpv$o7 zc90SWV3dFaBgm-=Ab&D2JAl|a;K>e9Xexnc2zV5j zvSB_1)y+uG5m96UPZtP)=1~;DUSm;U0=0Pjx*o@9U%-_KEMX5hrvgf$bqg-v0{)1H9jF2 zq)-lV9V#>EvMY8_T?}4l1gf4D7zJK+fulhIG)n|(HMTH9PW9siRm6_<3Y^lQ`%9TY z=U{>k+5tHkyxRzL#L62`|DXq~-vAUgIaqot;DtTVz+e>Un9K<3vw&y649u8x;8S5a zW=uNZ$Ohd>%M4m7FaeZPKofOb3ZT;jm_U6NX3(xp(9{v=5N}WozzkXdU;#Sx8?=`R z%?|v|YG}wR-D~27y0;1uEQ$gm`Ow5@D96_yI=ph*3gN4EE zhb#r~j(G4fsE|TkQCvYt0V)SRRtB{Bff00Z0TY9wgaYW?3vlxXe69@WXf04f7u1fD z1fRYFmIECu1Daa}m588h2kPm7jZ|O~xYz_bXp32s3EJ5~J)#BDLI5RuXo>lWg-N;| zoH#-EUVsxPsL}>4fCrV^wW@ zL}pM^krCQd1l?2tO52b_t>LZ))!QOju;bGdxIkG8d@ltk-DZJKkb>;F=L8+N16^4S zk%G4LAgxGHi&G;@k=IcG+AIXQh9BH41g$yYhqy*Sffsa^4tNnZDEdHB;5FFH3cTPj z1T`{_Fk~qT!q1ZcnFDHvfzM9K0&SoMxd(C3v?4e*z)er^A=}Ifkb|E=O;6CxhAg1M zK%hBSf!Xm3xUmU3(@tQ6wF0wa3%D%_ZhV6Ikj5tX&U-L_30NM|*4$vNzyNB^ffnX7 z!w=jL1Fg~nUGdHgYCM604&3Afwc^0nnSyF?=&hPy>p_iW&`k;qpjJP$xd%Ii0;#zN zI)wrh9892L2nEn7)lwiMVNFPB1t|sTECp!=ND~sS(k4q$MnMLoatX8vDXSo(Ae*Hi ztHA8Igb}vL9F*uG2Lw!kUeX3?LLzOr0xiP^*EQfiKl0Fz3TQ8nK$gH}bx`MC1-5*L z6;cj@NbqnE=qhf+a1R^k@L49&{8NC&}=yFVIR;45g)h=5H|PYT9v0Anx1b@yH=zAqFW5lb4@_WL2FE*0S&Eojsz4?{ zwp2OZLEC@_G7h={kHK*ZbC#kwXhW6+lY@c;D2&BH8#>vt6eJ*F%;b209lS1jKP#gY zsPhb}mciTfLFYsLS?vbe*{Q+Qu*MB^JDvs;NQ46<1rhu2Gkb?9iPk! z+BhAjzzW(5lA^#0x=}I%bRRot=7ANo{j&hHH6L^m6RQRjXuyRP)Fm)cUb$UFgNjo?p*>Mamoss(C`2WgWN0t zVu0KXIl zX~yIL>a~H+XH#H>scrBBspSC|C9L2jf*`e0W=sy;APE~qX-7sy8F0kNC`d!wU=W|J zfck6=s9Pci33hSNHV~9xw^5V@8RVcSr@#t2sRwi=m4Y02#sJJ;0@4lXYl5Ufk;VX8 z;?BqoI`#lsgJVs=SEhME67Y>_UXTO~5&M8_q!!aLYMp0tShI6EH}G4heWR5eXRNCU61xiZJ zv*9lrNAoC zL6}QGOh<(*fksCKCdVyco`((Yp%hwyCC%tap=jIplgJfG?|uwjRu{p3cW{&2{gS9 zn)-z-nUcv;1T8{g(q!5KR%xLqq96=feGNL;atp!{28yBz!k`t{pp#QU;t^->si>Lrpm=+sML$jW?hctKt02s-sr7JB^n)%w14)7A`N3OAm>JBO4WJuNpcesy76dXgD1v7Gp=`j85tpZ-* zx7Z4_a+U{l*%@eC1Za6D==^KYJ|rfAPtqVs5k(OY1zN!mUKb8pkP2GF1h!g%N#Fq= zNLofw47Au3eDE@8B`avw7_>4n?GOeQyxk>KGhl;OqLJ>+zA6^?{CA2G1EYC@_HL$3c`3 zWO7#&Jh=;+_vTSx09`Bw+Uvxu$pl+)D6b%=AfKfm4_OHbN)zC80NY>kpM^;RvahLu zDO(XKDSlvdGytteRbT;Kc?dp|8?uoGykE&t19l-5GiZAf=&ryI3|UzU;KeHn;5{X5 zV12USrK(^#@ah%NO;e1Z@{t*Iv@bhkvk;_=1n(IIuVZCqP?T2yZFvIg1Fc^Hr)fq7 zPOzB@;4}@EgDxv&1SgaN#~o7-Feq|4Zkcj`L6O^0Q4w^RALwLv@Qx&I1s(-1ffLe> zCqSxrVd=&qOMzFQ4|Kyhv*QZJEYR_je4tzAKc3#d3` z%~Ie4`H_i1K^Rom@WVOmSqcJh4o8-PAe_UQr62_7Fl#ce04*0)U1BXEy!Wgpz)(LPT$?f~$*nmMeXg%h9^*QDH5(ZK||Q$T?e zR4K4JJ^=5!;QRwVe4Ewr02Am^iU&+t0 zKuwY7NxnaYy%2OfArm)fr7Hu7U=f&xnj-h0rAQV<(ETYOeYoyV;ZQ)nKZVE?**uye zVYjD{kRm}*0lonRe0vINiWERek>D#+=3t~qmMnqYSW@H%eUvitjy|M}d;p@E&6u8m zXcjZ37y95ke86SoQLHKQ7&TJlRMZr?1fC+_=!42gQd8sxapW?xLju&ogO`yn#6e|b zheVb@6DUO<0drr7Bg)7l;<(Dl9r{_IeiN(X5pj4A23AIbdae`$e zYKq(-j$B4!Ns(Ql=w&2JmcTYpiu|CDQbumzLP?QxxF9KV0f=TcV_E{DL3d1n>L_R# zxeIHGJVlKZITuzb^w_N!U`<b(9tB0JfIGiA}dIP z0)ykzua_7c4=^aOB3a1^I-bG-v>EsSgEuc|#W1%5lPfQ113y$VH&mwr6I3IUBgn0+ z+@MocG?>7L(t!5!ft7ASuw%4RBXodg$1(r_y>yuv%nr> z$Z!E@*FU6ZuE46mB5)HllmZ&-0AJ1ScxUDz21i53H?s~g2;2bmAVIg;F@taC0;!$= zvJ`yDJm|)%jT|6bRUDf@Tj$*r*+9t?v_#yIQGpF~`6Ki&7tp2?P(KxPfCaesirA_L z+H?Z41uO+(ATF^JPy}7|%nUx80NndVNP#Xd=Td-5ff#Tp&;SZ}hadPpWv~jzp4o>O z1Qvt53A$is`V`P1+zQN&Dp{b6hB%xAGzbQ|#|eB6MiyvK9ca5TH>fOP-T*o?0d&1H zGx&OFkXaiL7kY#H&l?y)JJrB@KLw_PhtEK21x}}ff`~<)fTfU40p+>|NdM$7 zXpa(jxcUO>mCv9HeHjIwgD(hU0G*bv&&Z<40%`_=PJ3ojV6kRYQ($rY|DU-KJeJK0 z+8x0t(3%a})oz^yOERESj~%VSo6kYlaIrylRIq`L9_9rVnT{Jy9c2(`C;{F3>j*ya zfeEznga=Z%fDY0E9oJyS!~;J4oda@7G-%s9_yTDT1t!qOc+ln(j%-l<3Q4EfNzf)1 zxI;M2m@E`H*E;nu)qyT-cT(tB?#SS-$fY2;9JG}gekRlbkn`F>&f|8xZ=-5o1x^LQY(*gug;3jY`Y3|{*p*D6^y8wytH2H! z`sPI_nt-H87<8kJu;T`h&=Utm&~UgwmV$`D86nVp1`>**j!cST3Zmef5ye2Ho1!>) zpRPDG%|cG0S^&}y@`K|65UXh==;#C{T?PR~2?Ztv2`dJF&|wUqAsPk{51g#67(i!i zT!5U^+>A1KjdWsHiUI>D+cJYFc)H6_U;=Gq&jAU7j#*#;ZI}gJBF+jr0sx$FN+5f# z5l0?@Oo7adfNqB81i6JtfgPOpB_P+VBV7>&9xDXZsTx^X3gDqa&>#o+hA`-mHt5;XQL2bKyd6c|B6yrBCigh1Pxm=qYnTbCFeIY80Q z1R9oW0gc0HfQ}tv0u9S`fX4k<6a)p%6@d13DF_KPq$q%|2xJua9-;tpyn?X6PbCGg zYS5j7AYBU>6+}RVsi*=IXfO|a_?JMIf~dgDB2bG+1avMJh#>$Tpax$?J^_3;Uk@WF z!6-_AiaOBgT(EsbOd3o*pfPSH4W`D2RZ@)|o(uPJl`(CUApu3h1aW8SsWGCJm-3jEb@#x6NQw zlv5BD_@AO63fh0fpdbp`odnu)3Eg{in}tyT)Y?11fVlLA0el@ZC|DH~SQMB*+quA3 zi-E3QX37Q~lmaVcK!cUwOa^KavVzMuM<%cUxP+K9=?FAyvN|$@?iU4JfCD-j(Tagl zfyJ?b(TV}Qe~rbFB@29E1!yp`I~qJrya#TWCCAh%i?H~1uY*HKuSOcK{T`IGYVKUg6 zjIh~YaApPN5>UgsAC%-7tr$SG0;9lpXiE#!lh9>g0M(_8;LU&Fl+FyPe&>KT)G>p{ zza1Mv4K&DZI#9_CI-7l4l+a%2i3j|3hY@5pxwm?anO-EOi;ftf{I(vwpfiU1rC92 zJ>Wd70kPZ-R6&CqKCs(rK&=!e(1uFrO*At=9^=CB82AcDP^kRt*t`gI5E@!y zf-Z1GNP)^{&}=nW7l;9u0u>^fOd96Q9*&@CY0$o1(B5Vc4N?pW25?UqG(!W~Vht;> zp;8>+^ahaJy7GW3IvS_6&eg3c&}bHS~r1&|XuNK0`4hgE{>8clHYPjKH@ zn1t#%U<(kC4ut`g-Atex1i>|D0I1Y=w8?^;9s;`giB$o7_hblI;sEHtD$qP7=sZs7 z?VJ&y`i98?)LsF17(i#+Fo4Ql2GBKMkir<$TWA2CLdy#71hXlyW<##>1nvI@A4O83 zzz!ON0G&?EVa620|=_?vRpi_l4nH3ZznH)gJ3WJJm$35N083e$M zcoqdobLIt%3X-4>fg(4kp8+}nm>aa&odtAM7U&924l|}2CI^|@ z(77!Q=v7eIt~m2=0?A2!mTipz2n{jL8KwD14^tIJEP} z0#YpsNf0>-ETG0_fdXi*P&5ltA22}LNucT$+HAYS!pH(@wkc#QF{v;>lM15-6NeHr zsKOB_1Yar$W-Ane>p+eyP|pE$TAo;zBbUHEQAbA5k-wmG?Hs|QdK{qkB9Fia7FS;I z5Dugd;>e)L!t9{H?+24(fCB7wR$`eisC8i8$70fre)s`Mp6WcQ~??DKaat z@-l#K7zK^QF*+W6cZtCfbaVv70FEq21_hREur=V@;P6|skz#9j8KG{`U}A9m@eJ%3 zMhzy=c|(E%44`0QasVw7LJB$1eM}7v3WdC&CN%?Spb+GJaG-(id;(YFphh<+z*q!6 zuqZNvngJk%ip;pei;zda2ICAXMP^VHh~EZ6F+#`&P}@Qw3v~J<_kU=o-~&>pfDttC z0PYQd8neuxAp{msNd#(|a)1ju&{=#gkfex8Dlj_oLz6$FBXbF8!HeVn|Ns9p7Ai2h zD}u{A@KJ%@kSyQ>9%h4#kT57PflEJD9yZWH<=}x9aKWYm%9t9k(hgLBtB+65K;!&|vzo%3YBQw72ZbDtASYC0vjW54RbU z21pnr&jVtBan7XXbrfmA^-C`fr6VHX;Ja*rbiSR*JHA;-o`Kn8vVpjU~pfYO5m zH`F;2pppz6bD$&3K`mur=qNl$0=gCpe9%1T!s`*009!VBLlR)eCU0yB5F`&yfFSvS zO@LE2pN7_1qX}^Mlz=x*`a%-mos+)U5+Fz(oB%=c1DgQfoH{!)65ulyCc%1kP{#r^ zc!Jcim;h?;Gl9=h0(UKDfJV}wD*_Hnf(v+#EXOq~4>C9^IBr;VkU`)aXhi_1{APg- z-6^m-GJ{%$td0zBj`f9(^~Inue^7JG5j1Ig0Hh1N;>JRe4b%Yvtz2R=7eLJ_pifeS1rslWx(2R<53KoPXGlp8E3r2wk!!1|;>ZsAbmQDB9hxGJr{ z1JegO91hf`01r<%fXBulQUd=Z91S3gLU|Q<;a6;EKo4V8-~+1#Sp^!xP*CJo;8lR0 zD=7dOeqmy8lu#4^pUhmfHK}Of$hA4pB5pzIs z2--IAeHNnvgQEy&99tOVss_+XQ}DGB(3Sh3K~tCm6c|ABEuenko;3#L^i z&kt~7d9U$%5oj!W*GWDuCTk`XkK=Xm7iNd{2Ukjar3)G%X$ z3gjq&1qwhrUO>HgCeWqMpg~0)&~i5>(De`kJB&b60SutijKO_6MNSaKq6pfez@@59YOQzjNm!p zY$ed81kB#jip-F;Eui^Y(E03+42s~p-9brMkrBiLt#5(5juEmXhLMQ@bbAbBs}%Sy zCD0l0`iu-p9K4_fDjcBRCdiwhRx}5wW5@wniNfIsS&6~{S&72o2w8~&U5CN}GL$Dv zkx_vIG(pO)z~)$=1#%TPw*ot86$+yQGuZk5yrAha#%z$Ez^-J5xKM$`QMSyHxsZ>A ziGh)UiCcjc(k*3m{P&-^(2=oBkr`Af|NsA=p-_xp=nxVaVBK;!HJr`SM?W)wkZQZr|R-KNOQvPw zVD?l5ozuq*ax)9aG!`_|xIrsbIL(%S zFS0<^(m!CxR%BFQQ~_Ne!2lYq0$oP0z#wp04-_PzyOekk(-e%L^L&{U7(p{;F%SwI zJB+#vyr7{L1!gM-FVJ2PkX{%Dg$83GXfXj}A#4JR(NQEzfkEJ(9>@X_hy{>2XG73* zG(-!u56jFA8oU6_W-x;G)A=ZXDGtyYCPrNbQOE`oD+X^z1F%*$5DC)i%FE)c0Ht}*Osl|6A5j02ncLA4be1Yer2+?tgct+5KLLDa2FSsnp%h&P z4TzILol{283{XkxZT0X z!@vzn%ej+L#Fvrk7 zNi9cCQd@B)sdngj^b=60R|^zCEgXS=vltZ^1(wW*wAgI26qp5mTPlFBTw`*y$r896 z2CD5q*Bdc`7y_VsE5J)kEI{*kpzDTSF9cm-BycfIV6h8m%?uMvP$dht?5P5@wi06B zGjlVh0FX%mpc6wB*+CfzyaIw%%jKy@*(&*SkRSrJZ4NW3gG+h1VBDk$$~9qYGDMoeN?gpo|%I#ivx}Df!cuz zd;&*ZK-0-g8caEg{EiHY0*;Id0t);fSAh#^h^qt^r$H8Q`G7{oz>1+4%7Lcp6a)q4 zgXUmBEnP;?iVKJn_JZzg1NjM}8#KuPHpV1NVDAj@EhP|jAg7vSfg)$R3+NI$(83U~ z7SN!f2h=~vhJi~>a8&yUoU#IiD~qBqBp|>GKEMlSK#oDP61@0KMo|Q`p;?1T0o>03 zEsp^;Y$rgPY7arPVBl@I#B^4no6ZhGI;%XWoz=6TO=qCaDhJ7(RRd^e71S&OUF^XE z3X&|)8O{uj$Q@EKaEBB$*$uhmL;JEUMaP-hk1A@u++vrqs#Q=n7T(FCPKDgx?xg3bu%Rp844cSuFxYurJ{ zgTp(dBC!6TBj{vs(1ju34kxG-8j^$)C{ zDxx5Q+)o8vYABkeAPQdG19KOmpZW&gPi+J*cVuvE0^ga+;MmLrS^x~br*tdUe(Fya zCV_fpP;UTfr#I*T>_jDyliGi(3&@4b7oK*o(0@z&`@A@v;Z0R267P*Xe5LgG~e0+UIm;5-Zakc zSg*h?4JsO$A@`<&Zu&U^n#={SI0J9<1uqU`)?o4gIfaOOQ^9u-c|hg}LF;}sm zgDF4}bcGQ&c%qkEfmxGT1C-oAsg_%T2XyoSI7pzIUg3JdJLH)`hn$0V$-~7#`??(k zz-!rvzVRWN{P7SK8FkojHEA|_7ozzJyOk`+Tc$|5EPD~2?X zT2S4~s=%blkY>&R8iaz3&?$h{D?MY#0vNEY2Jn#e=lh9>= z@W9KIp!FrmDGGII+^|Sdvqn=C6;sq#7A8^1U>T^4LYgjcfvn&KEn8s*)e0=2Wxb$P zM@*pmE|}LUFs?<}1i%VfoCBJY2VF{K#SpK+0;=>9Ky@iPRsbmhEy)F`PysEx1kb>O z1}vegb3vDPvxAzp;JI!IP_s@3b{|y+C_iSyrsZ=KK->YxKRk^Mqvf;1U_gMUKr#a2GH6B1|C+B8$q{|gF0MbHyVK4Xrd^hzyfMlgRfi% z-@XA3H4TuY4(Ng?(7K==M$pED|NsB9D{z7rNugLR2D4gRfdzEVih%+P=r|PIXV7?T~yjo@SlawC0{9mr~MvIAK?n(U}n+JRObflE8ksw3!P$-!3I zf!qjAb|5#>H`#%#1}8g^)$~esA6S_9A*YRjW=o+*Jc0V4pqhdayaX4tT~UEipt%lF zS%P|363f9YLeTZ=%nFd5j^@muJ|gI{X-0ugKTr=z1GJD5w8v`-XgZh?)XryCV0Ell zV3h`~H34@qOF$hwM~f_Q#|_l~`U2|Hf%;_{Oco$RN)U^(ASE{F9$@g84XE}3&nAI; zm=VS2+>RGoPA~{e0d>(C&6r#qLETo+0ac)V3?SMDHc$d` zlO~f5s0*n88Q=#WdnF7$gALrx0QLF7`yd#hhp>r&?_dSXfxDNWP6i`%@0zFrzXCI4 zPzl;~5l{ekOPN7k7f`nptPk9EVOD?~rR4!`L_oBGrkmP86Bf+Sy%C_kD|BxJTGtag z2RZ`kSJ3JR)Y&Vkk#}m=te-YYq;P8Y1Xw|@ENSl zI*=Q|$qwX3`X)P&)!<|YvU)VxQLS0GV6iVG*)3V@J6Mw)$c^A+2XZ5QlO4!vaIyng zJ(}#Omh3<)c)^t{Xa(;etzu|zbb`XzY3kbx5)xe-g|&1nLY4N-h*e$z!NE;X=l)C z1<(uxXx%09tLz}!`;sV;C!vx-; zgMIQIu;f9g4<1Uf;&nlcy7GAMF5GQesj zW(UYD6L`&t0+Rx#CogzKs{&^hY{eOWKiS*8K%Gknu2%aa^q!HU{K(3WXw|H0iA-Uz@WhGSdpc~>&*+=E)3eKpup)4 z+M2D%$-~BtshvfE8(BM(A}46-2xNvLuOovZ12?mSV?$F5hXR)ZLzWVc1`~r4pJUgQ z6&DzavlaM?AaXp8;AP}WJa8GFqC&@p#-^4EDCN!z+H%5?rNp4X>kB%qkI6xSTY&-Q zGG=bj5_Pa0pfg#xK;jIFJfJ1$pyL%8vy?zexfMXpV*(uv&zYsf0Gg@i1TD8$VDjf> zPyn4F1=9>#$fv-m$gRMs$N-vF;#6P)+X`9?=*9~=ppi>~1GH^H5qd5pn=S)rRk#AH z0jwJr3HC4+>u95+w%EcrJruMV2Eo_*h6bkZuM= z25|5)K%ru8daAoN;GAMF^#+*47K+EVs`|+7evOq`c zae=oF?P;@zpK$Z@1Fo8~rV{{Y% zaX}iCK#N&GDm0i_kOGSZl!7_36hSu(uscd*DY3ipGJyiikwK9S6wKhzVF4v!W>A2G zw==OJ3@-DI%g2Nn_w<0BQGdnHEDewhL@^38%@d<+>FOvi0+8-9j9|6mW){Z}oLK@dV-#2%JD9+3rVDhyB!d}~1SC~zFo8~v zVFFEefe#4)?+*l>{{%i^fC;pGOdg~XRI%wY$b&YNf{v8|FX@JeLr73b16jZX+wKA? zJ3*`BG?)a|Dlo6D109?KI+F!-CMAo4@N!V%1sMlAX#ljZg$cCL1-#3U!;ukW2)NjF zeDmuN^tc)DB4-iMVFoPRpq+A{?N*MAW#Ii|$3CS*{2w zJJ>lDQl#9(IfDu^uyZCVAn7#u#J z1$>}&>LQ>cX3&C!133`*LFNjqRp4J+rzox<4l__dL43KQAd`cF0LVyCAP8av0!Sz5 zW+2e!OBDtMA%5;RERciVu#9DhWC=W+jl2^<2R@boUYDEW-ihNC!xZ4-!=vV;K&LpcD=|b_mq?02T1yoe16K zW=uBVWD6civ4D(axPZ)afwdYzCOR@Iplw7r0-B2jk7a;1e8R>uF2FY;C@?u*fDdG_ zfT9#+C`#Cg1*&)%Vu78Y1*1=n`=75nP}XmO%X@7HDPY$e_!x;(f3q=sU71*8X19?Ha zirJkQYn0d=8NgCX9H70jfl5r$<{*^{pkpbSTtVk;F(|N^gN))<0IO|y9~{Wb2y#Ks z`(Q=TwqYjFQL0u9J@11R7aCk|X<5LmXHkpVnM(D6Q4iOI3votGKZ z;RG*26oIVn1T_-R?7sv)Yk6|6G8TaR2@0e+AhSTR?!;iu+yD^;M-V8TFs{>>==$1DS2O%v0YAq^24F~N;0^L-Ikmdk2z+lp13StVP$S#Mh z58^OqzQO3oq9_i!VM1KsjjE!Af`kHRmI4=a|BHkIca{PVoWqN_LQVp7DhTY>I0?|9 zAFzw!BtSa{MBsWvvlPVO9A-`C8=xZ=6u_4pZeen4n05es4V;3c8Pg8X4sw<(MJWYl z(6P{am>^fkNkguXlW}BKlvQAMoWYc(Afq6wAPu=fPELW@5p*%BoPw0VF31&f5(<(~ zbzmv@6>{>RQ^_@$SU_VN3<~n#jW(d0(?G{=U1DJr1tl%ews+|AHqdf$8_?MvW{`qW zfyt4@AJR00tSf$xe? z;1rk?2kMOTD1ugwF@tw^f)1?aGGo$#I2{|Q0NUpyu-pjZBW8U@0mm2YIiNG09RecyxdouTobZta^)xrDF{K$6jl%dUEB(CAgF;4F%xv`yn>*D z2G>#;&cQN?FR?tNt;EnaH z-~-`d!XltU4m6kq6xkt%A0&W^JDB7U&*01x8H<3D6!P(6t?)eFX}jfhY;2%|KiV z912{Z!4XE#9U71w9SRJf0zCtCqPZrs0cevN=$b4BP$>dBp1>drv0{G+=Bw+;xkOx4iO@R?|=nQ!C9CR209EhOtE>MPMP++oR0B^}+wqoc6 z`G>)Zp$kfPgXjYcS>R)w88w-pEq*}-0Z{oR2syI=TsVVHSaDRy0wqS!YQ_SPlO+^| z6@)-#n=m9mVQv;s6j2a@+%60bXqY&t02YGWE{rS=+J$As&bk`oL9Yr?=uN|DtOG)Tq@x{sO}bloQCj#BXbsNkKu z%nGcaLY%okffVfFK^Y5dzy#1@SI`~P z;QH5b2iydMEJaR7&_ytu3S6KdRFqKw-2}4%WCG|)SOsPUPOu4}m9wC5Pyk=-;&=jL zf+J|?oEehPn89amffa+i&aBDo0A7XbC;&OBo>`MQ0TiR4)W!ozZD3!4tc564fK=Da zn#>L0Q*Mw(y_i8aWFu4>KvEO4Ci4QQN_cW&2DuWZ61)JK0c5L%q7dZ#Z)OD{sH~%b zBIry=;VjVAsxUDP@WyiykeCQeOhHjpfdQ1Jm=#1}ViJmC3Jjpzs+kqUU}6G_&~l1d zK^!K=p$OgJ!mJGs0lNE}1ys&} z#U(*YFCd8wytkMUy0=&gbUH$o0yyo!t|SMI%qwImvVpFvVP|qs01x?tMp8g$-hdlx z3XGsTg%vp*HK4Z=KvEKDFD5u0fKD}YR8WMJJRmtx8eszIfnFO7Ds4CvxIx}ilm(x> z1l9+>HW*aoaDYxq178~q+KLI5lLN&GC?#+}@2QptZ^Z=5f$jnUjgWwo68Jdf!>f;#dZsv5LmnU}#)N0AF^ z3HaBQY4r$bY1`jcSuh@WW$OesifsYX42Tf0cZ)yP@%8Zn{KzpMZtQg!uy;2Cp z1KNWQNn{YeAe~Xg1ZpQiuhPf?HR&*t882u9x-J7B_=Fcwv|2HUfr>FJ260H}KuA#h zh@pg$I5=UlSuyxKDxn@Mg-8ZWj;x@=0zt=VfsX@3i9A+r1x83(5V&jto+1Pd(1NC( zI20HK&J=?3h>jzZn<6Ku@di4_xe)2V70`iOj@(&}9aj%A2&`s?9Q4O%#h?P3s%Fw) zf^St%P+(9%-l@(6x-1RUfn{>E$O28?fMNyK)?fmi=ci-NYyk>M4JHfdHXbI>4iz4d zgB-wz#qfYSF5qQnpp#^v(V>#1z@xw`(5wpTB7t@AL3DuA9eCZE0zatZ1D-qqMW71k zpbvh5^_AfHP*4!7AO*1olZGPbTt)%Vd4ZrH6cD&riV=URkY#FC4Cx9C3WAUe13+1p z8)Te2*!`f5>7a!50dzJMsR`>Nxby-Ahc3h5O<15a%i!4_oUm?pfch6$64q%_64s^> zlCZv%(>-C0*b-~SU@NiuL6e7|qRIwTQ-b#L5h}6Pjh0x9h2XN40aVPAQx(#n#M%K$ zSc9p=+66oPl<0)jQ9*1~I9g&ALRzDAXk&pB)?jL5(K2C;wy|&|EE<$p;Hq#il~}Z_ z3aL_JJz-%K1P!kvor(vVKM{dU*+_tAyA(ht-w9mJgiMdHfGE%jc+8G6S)j|Z9XpPk zVh}i81rnD59gN*j0ls<@($NFW8iOz70rj;&lc1m}XLiVjcF=8zAX8wyCGd%DGUm*n zP4A#BJmAgp0$T(?CWpXG<^Y=r8u|d42r09eHJB7YvpJx%gFw?aoY3>-xXhS9#|eN= zN#IoA66j%NasZhHIt>=oGY1_bpaDA54>Z!l?4STzMytTA$>ab!fSmzxKO{5wa04CC znRlR$AZW2DH~3@%X3(-5&@pw6CZL`lkK+tbP@Jj)^^7%{OdyjTyr5A8&@t%Dpj$qn zlO0UljsoDZc*sa7_|$+a@GU>!k$KQOW&>#87Q_I_fn5n1i)9KiX9gcx2s(`&Y=l7X zT+qM>Xf_>s0=ojj2cR3N7_$VnDicMhJBEp(UR7}-KmhG%4JE$HwvF3>y0@@J41f9@RP(&JWM=arUlu+bXU;wRJ0FARFiGz;V zWKa;uQUERKMG^-UFwi4Pz_xoVd2)>s3@wbFf{x(~6?BZC+t5MvodTo4 z+gea%Ap)y-SRfS|hy+(bputU06$Gi&SQS_mm>m_eKvg10KT4e@V$Q6f0GjJoU=;Z7 z3o;dS*f4leLJ6pHL_H4HK>>VLPXcIp31|||jHv?5d;nS>S_9GzuEi4Ill7npXi$mG z;0Rfk0a_dc8uPq16@1_`_{1Ft$f{J3K^ja6W=uBVI?V>We1ZdX{OAP|@*Sjw3(!OcYFU8-O98Z; z3v_=63uKv!f&!C3qlO}@0xM{GK#|Q6bj1rZXyRomD0o<{7^ZTtZ-Q|s3|Zja9c5`gYUm!2JPZt zc2vs}m=Xt4EGPv^)u6_aE(2)cHni%6q*%u%`;Rg>G79_yg|G%_+S?#YV66>EpN1lj zBMW$a3+NUIUXbhEKpU#SC-pKS4X=Zz(FN{U!rGIN5S?!Xibftqeh>wU5oXXyi8DZc z<~L&k#Wi@58Tf2;i1mAbk+f z30w;Nqp7O|d}K8h$}Z;7)HPamfmWi@r0ilDO>4e*$S=FB7`o9$Q~#?YjiwH+ z@vapIXf&EScOXYoXB?pJXle(@JjjqIXhvScoEbivx(6gh!D#9lkba2KM2)5nsnkWY zvHAf`UBh^+oOgDNqpXn_Tr)wVsf(DhYY^3p){I?fsjC5b1v;v3J zKI4!|T{LTV4QT2b+I_}(ER3A>kVSc*bFCd4xIo89Gdi-CDKdeCK?l+=U{nGh;>_%* z;mymezyvzCo<)J#k*P$1Al3_4w#Im=Pqo0kc6iZgUICL2gGn*u9{ z0@CQC7{)@jtUBF*-9*BN{p_&pmXO~L5jed z9hpk96c|A(T3JDdjI)Ez5oC4LaGcP7nL(h>8FUr80&|vQeHOBq$IovzQJ!0OM-09yM9IwK2We|?q`E65Q_j0%j7H6X_-u#|z1kWgSN zDKcXM8_oneE*_)|6xtW{q3WPx_)DVXTFzYg? z!^Y-|!H1nGFbcft1TXm2fUO-aQQ!bY6ZpbT$9e@$=yjtUp#2)4EjFO*Mj|@45SNXDw)${^*Df=HmbrqCN8wTcAH^WB z6@1?)=(Znl0CIqCFaqz^0mTsm=m-#y%RqOCf)?b0_9#PF7-E(SXtxct3>#6DU8rD1c7gP+%13XlDfN@0I}_yA5JUfEL9vDKMKcseslO zgR_=GmcU-gBBlyPAn3*2tJWU0CHl8AZQm4=$z0(D+bVcDy&uv z+MumKh?7*nM^I?PjtTKrU;;%rqrgW?kP~=7XVqvhae&VJ0G&Gry4;D~j41$o2(v;K zC@q3Fz;J@D;sD>@1lozA!K5HC%@ch3h6Ymv==2%TWgOr=!=SU36u7`C6m<0lbG9On z0=FYGSOAn{9e03sLbaDLfQ|^~0iVMGvNuJ636x1QAa_gUK&S%H`A4AZ?ALB|&$>D^(D9N+`oAg7yvPN~s>Ep`V5ttJ!bbQ8!~P0$bGnp~10iWo@;n?2L0NPCm-g*H(wFPO@g#rUa8dOp+ zayuF*vch-pfYw*DLU;UVC?a<7fR2S^gYNiI0H62A4&Id`2|8H~y5mPekpq0~2k2xh z&>@-}kR3mcpd8t5=pgfM914)_Q*F=Vqr zr4n@G&O%UX;e@3YaJl5Dfwa#{476z#v=>7`4CDm`q^(|{OZh;>1vE`aAf*)v(Am9U zUC?vc5XnVSfel>9KvM>24FsbCB*jQ6utTNbr?Y{AlmmP!r6PwTXgezCz(-Ijk_MGD zpwI#z;^zq3nE^WV5hMjUdJS}L5O_P7fFid7>d9*$De!hM&?VIz&^=#r;5}a;DbRK> zP}u^G2hgeL4;Zq*?h<&!p#a_%r2xu>0#mslSrmL&BPe}A&xb_blLfxVnn8gNbchg& zI4FH#+w%oVUs(2hDKI!{WPuJV1)Y7=0Y1MCbZ0sI$Th^CEJx63kb;oYAi<6WRcW9K z3UnGI=y*~E5r`*X;-J$Y1wkkGiK2)rfKRUjZHu_g!U#U(3bYZBRe@E7L4j3)5mZKk zA{pFtVg=PwOBg{Lm%&?jSwR=wom#-CzzW*K%dEg6u(48s6;wqrDliGO#450Yu4G^X zQJ@n-SwY)u*cI3Wes(c}#AHBM0)cKh;Z$G+ojt~>z#(wE6D*~o$fdvvQlntT42psZtf1qaszHJv!$9>4 zXamx3P!p{I6h5Gk0bfcF4jER^0hxQTRZ%ONcu)DzrS3}quS>XB$s zH+ev+LG3C~gA3$9f!{5l*oPJ}3gDm^gEoGF+MCcc3EKAxx@`&6X#?F=BQQ%H)NJGdHPk^( z88*j1PcAcn+TWn`$fm%mz%DQi+<_1QS5nLxOah==Nf<#54<7K9O#<^4fp&v|t`-6v zWDGjJQ~|X0{cF7fv!e>AK?u4+;-U@YxKdDCnOT!b1(fGNwGlVuFj4KagSLre^ckopZI1>WuqI)0WJ)F5JF03SaKsdqv38>p!P zN+`@6j!T#nL6=Z*gN|VUUrGwP-wt+U=M$zZMIJ{B(8fYg>xYR!Q5L+F`2$lHbaS+U zBA)_}0v|XOe@+b&^b7Gt9##7qTIi0A>xaiOr2u@5jn&ze;L->IYlNisSLOrY~Q7#&Y6 zJjCG0?Z_gqw^)J6Q3TXHkjWBQaHbL~ox-mq8TVrDL{Yum?q!!L>r_G3sVZ_gg4$5v(?b=wA=dFgYf;c?gGiRCLOM`Z47Q*Pe=#lN1D#&X1hMQc z$TC(1KA2@{Aj{Mg`5i&q-uXe+Ku-2_16_Rt_L(4}%7&-~owX_iDsq?QrfGraRk#34&P@jPg(nRu^I{3r`aVrLE1ttY? zbj!fETL}o9T?~y>aIcylbT%=lNut7_Ai>XlhJ{fYbSlgOCZszetQcl6foeJ{hS^Mx zcNmcGieSkCon;KkzKr^e4UC`~Oo7#!aSkZmzhD5JR}5-BvnjBH>J{)&3Cy5YM;55& z0u8mWfwM`10wd_C5u`J$A%|ap&aejeVz|NOr2;2dbpa?(F@TB+(8d*DKqVRYIBwAH{VW9$NN6yF zLSX_E2ZVp8$1xW>|ECngZ@h_l|2L}k~&JIUVNJuM4D=_Ob z^e|d8FgP+P$|y)H$bjyJfP@FQB?gKci0`L@A|F(%S}{xmF`29wrh^*oin2@&3bG*I zGeF#}APe=n;{v8EP#wC2m5~jUnhszus6eFwCWhRe!^ObJ#LU9V#?HYB9%o^2KA zunRkp3S|cH4Kkp^O&A^bf%J31^s_jEU3>y02y(GRmg5-|7sGC}WCfkr3p$LL2{a;` z1!~HGLi`R`Bg`~bh-nW%f}qfp$#Q&wVjAe)a|KBFD}clA2S_OsOh0G{5G}^Qr|EEj zF8W{sUAkZc4u63x$c1ivHu@PkW~S6rJG~RZshO>oel)LtzkDPoe2C} z$_R-UaDm6{$XEy(F@%=hEEYMx2z@*6xYR@ofGFyO8SK$L|Q{Xpe761i5 zNH+&4VSw72ppk3PokXB9Q_xXJ9w2)_wGgP4rNH92^bur?sH2w`vp-Ae^Yu@Eo#K(3#FdI5Bs5Dz$YLSzF_WWh%uutJ;&%AX;S zt6bP2L!l8MCxXs_VNzfhSlh-3s?I>Ci8JXkfVwIS3W5;-a)1vTR^YT^0Hr!skhfV7 zX2yV15U7ip05MMp6akEipn(k`hyh$+102~vI>BiV;?@)tx3Ys|L8H*%Cc7C^2COFp zzB(}nVm7D|CjvT1{HC)4gMu*Fc-XxMOqxt0kkXhJbUriaU@uU!3e;?b9Bjh@vH^Tt z5hwT#CMMA68mJsR4jR8=0yXbJJxK8Q706SN(goa=VFI0X#q0>KTR~}z$-$9PfklBC zUb%zhp_vmjd<+^!PC#5a!Ni~_298+JF*KktFiK5~Gq zEC6370Xn!!0D3GoNDVZ-F@X|ffjP4PD1sTleQ0pwwTICWG|&Y)ryYDA3y2|rGTzKA z06Lh336yU^N0{+~ItH3d0gxC0)&0=%E0A`WWuU`-92{AommJ=>dYI4 z*i%zLw~T=-sLpC8b%o|P#>CDZuXbGu@x(VqajS|w5TW1*rK3Xtvx3NNoOCKNJCoSdBF>ejz<{4*X4oNBQSw3JO-V!18E0>iVX#@n7|Iu zq5#J;3|WdSARVCN7{Pbyff^$USqiLR4H&~hP&+_vGmus`1#siw4tNUk0wcH<2VY9f zF3=DID#bv9V~}1Bc!ZY;)W=u@R=t7|G(d#q{C~$Uw_pQAOrXIUc?AYXW-A8JR2<|o zVnt93^8sU)3WEX{C`W2AtpLqAGiflb0o`8>t~@|@n}804+yXj?@eD(jz|2|T090Vo zVA=p`e1ICsV25pCG-EmfQgwnM3)Br2*td$&jOh$0*m)J09M6D{WIMu`CD0iR(#!%n zM;pXoP~dZ%a{Draz;P}!rW2q-;sj%sz=ByI))~euft@o!ERe>XGa)$*qzh!*4v=j} z7(heDOc2`+fRu7%fd@zqfGyksw~z-k9SG9Op&;Pc0<&-rNXH(yg$Ljkf;8@&39j-$ zS89Bp39<}yNE3(!zMTLRo{T8r2^wF4gr^`s_X^O(Iow!kM(|}?Hd%_yj-Xj$W(5{d zHLEBAANK-}V1W-KRbT~6NrEam@VFOf1Pe5V0WP~i6EbWH3<_+ZP7vsJ3GiK>S)iF( z21n2^7X!*L7pVS(4|6e~40C~`;KN)DD8pPJDd;d41K3st1qMfzEJe^!pO90~G{Hkz zph^uqV-KC!;Z*<)u!7{|K(!fYejrN$G?b;lq`(a}$U}hvbY`a_A9!#JbY&N)<`n?P z9q6z<(6L#dSvWxjKIj0JJa_;LEC(L=l28;<;Dgq03gG$;EC(L=0^Nbg2OYpt1P@?= z<-h}99Eu_edM zKBP;_q#zESlL5C`83o=dgJVNMRA9FZtOO4O8O@=sZORGo~Dfk`M)EP(THMd=R22pa4GWt$@ivfnR|S z9!mTQe2y1D4g`l1Xb}uAXaL4hCd-jaK}bPR;8UIg=)_=wrS2f_3WI`#$pLiI8`#s} zbJ;+XhfE40+2F>M2v{7{q;-4%G8gP|2GCF|3#ere84rO@{WyLAsQ|6$xCWg@1lMEfJ_GU)0TkjWN`#_ zuvdVXtf0d$!LBUTUE^rMgxV3{8vnGK8zY#=`A6mTdBD6lvhfO<}RphmbrE0Y2XXmSc9D6jz(t{^UWx|Ri` zPX*$5D+X!MNh6{{`-g95t(hrnG?kTMoUL6GCXt^Nj(ydY>c2_yu%Z4R85 z!NxT(BAW-g$=Gqm$&1jHg)E@^k4wy$wtz!@3uye01vJ6517skp0=t5cz`YPNrad4o ziw4skMn?wF{X`(QF>)(_uWpv+=H>=n(G2RfDGDpFI357E8-)3}cY{{#v7*&;psTHB zgQ`|WD+Um)zzFKxfSt?a*s}c~gCiU0YTz5&96{8bZH@w++-6KXC`%te#RL=RE=>gy z(3Ax7(g#s+WeMudfEI{3A}@Uq16P(HDNtt-JW$UFnj`|BnF|`y0ZD=9k3fUBu%!gYcU-`JVstdY-fjE=I&_l@lna>@Al=3a z(5fQP0gVC+oIouQ7SOF;AO-^{ae~`fC7|gL@Hz*cEJp@`Ki(ke0!8qBN+qD?6sQpf zT7bn1DtwqgrA~??2YB%eXuvWHvcTa9;#g2{Z#2c68GPj>s1FXlV9SvQ)LP;P^;88w z-Af7Rs4;ljNB}+)3M!=dAy;35M)W{6B}g@B)fB&iP!_nZg{y{iAt8$*K=VfMJ|t*S z1UTV>R-!WLGR%gy7eQeNt@=h(;<*a)I0N~KXW?k#;RTJD!&chuWMLAlC!*v5t#SpA zK5W=_kin4|RO0-B6g&;vAq9^B;%sdu2Jln}XoXQ0Xp{`plt$cYDFQBdK&zC%WfExl zG3;VXQEydBg=8I0P3)IiQR4%$Pt045;x1Enq-Rd^`n=0H~?T z04iXh<5%DjMFmBq@hcJ7s2BLiZC=Ql3Z#KX@YEydT4-=_BmysvKm)D3u;K_Vj9Tsp zL9R{(g&+~-&PhPl*r*jkqf;M~roXoC6!{d<-4y)MVBGH6TGl^Pu|+Ma`MPLv>>2%nLx> zbWzagIumH!g#>g6a|KA40o3vb84tQUmPwOY0yM9xAa2eap}+*X_ccL*$%)aNIRLb3 z)R94v+wsclqYR2XpeqGI4fsL@9)UlCjsl91J0m~=BMI&jg7O2XLkq6PKx_0sQc~cB z4=1T;XM{)Fw3SN~JFw zPcsO-uwdZc3*GGk8dE~5-arL9sBg9$+BaJc9?S)8hSOkTab)lY)gPc;S`DB*3gDh5 z1E{ai0$zLpy7rqvff=-}pUJTWeq%Lw7?VMP1$0zDia2NtlR<$MbbAD{IB56)yq1#< zbWKFIB6#T(lLLqY?q`Fpab*WDh=95jJf;I``+!c$=MY!|s+>XVlED*Z0=vXOO&A5p zb{wo1;X2;AcaT8Vm?VptE_KE&nt1|+$*hKGsU5p+EXsErOD4g@h2 zAWaZv&>~PsO9(6lY6&5vKnrz1qj_K{5Cbj+>h@_eDS#FygZ4QvLDrTcCMdz?g6@&z zhYVSROaM3OAe9*tWOXUBdWeajJL(~=9|lmj47A7(d>;uDWS|rz23p()n)_2=f((#? z#NeGXCdk03IcU!xlP<$@q<$H6*yt#9un07X0vjx11TC2Wj}j?BMu}7uSU_udSsZ1u z1kPrIMk_=V!9zv@ifjttA(tzl5d~Jzq>BP*awH2pBqDG{UV+8Y0>lB0taliJbXvgT z51Jal>s^tT(y@T97v@j^kJsD*#Tc(~p(jS z?nAEHLWnXz`~ePSgaXir5qK7apL-@~bpU)X6u2C66oBn+0e6fbYeS)neK|m*+|c1^Mkv!7eGZizZnx~Oi4fiG|&Mm zc4Wb$9bh@|t>7;}6Cx1!34CUIxb#Oj(Mejyo7ZORg2fKz(5*#~Vyp3Ze>P;57>h zjGzn+S$A#5G=&8+h7a!iOPDdu0P!z?*XJ^UPC1QUu*7CuPR80L1^mkfkWC zz@#8;#qnv>CtX$45UgDFcJfy8^ocYnCDh>iiRg2b$1? zwo%y}nFPMgWd!ZIW>a7TUq2=SF_%Mu4K&%sqrm3Kkp*fjuxT)XHsCn&II;+Is3~$P za4N8AGC`Lvf|i8BY4 zK=Xd!O?IH&olKyO+zLDb9qu64fG)5CJBtA{D#r$z$20+n8-N=4;E60YM~N)QBQs7j z2%L{r0CUcOIJ=q{8Mr|zO%(YQ*g%t_B?@c`+yedWjG*HN*g&l?eg%F<=0b=|AW8)k z*g(_uIS{G>63jJB4xp3`nn~hia6B^oG=rm#;|Gw#!6#XOO#KcDzybxZOAA12b75Cu zf?@=;%#6t9bf5)~tDzmM2}sL}ARFeG6c`2egn}kdnLyhs@edt>TFOiyUxGFo3T&GP znq-G;VHa2}1?te~II_AavV-?sz?#9}s8?WeWHn=wfHeQXCm(dvvT_6U?G-z!FYOsK6Jg^*y0g?j;In)>j(BL7sK@~7pi~2@CD}mfiIH1@QD9Q40wZW-57hf*1r3*jod>=P7Syt4 zfK7WL?t(>KFbNWeI1dzT6F{@0{M^@B7uj0CMj z104ncI&KD(a6ye@(18~Mk0U`zLI%7*8nj;tyiJb@v{rfsBj~Ui2GBVZpe`}1z!R`i z74V4?Od3oIkU3XS6$l>VWpbPXT5o&-)P#Dfx^1*pNy4N?l)*`$*N?rwsZpfg%PE9yXT4n6`x;0M@mpo@P&^E*&3sCUMs z$&>?H=?vQX0xq+eAol<(FgYGUc<8r|aJNcW1~Y@g7<}V3X!;7YcNJXn z?Mef$LIH276`0}&Iy^|1K?V|OpvD2SE`uy&C6Eg&MScZ7(4;*mpuh==*HOZ83P=<9 z5Gkl81p)BBFGpycLli(v)nyP@6ol+*QejXK~NJS3l!cPsR0?_7e(3V`# z4sy`CuolodMS(1VJD!lsN<|bz1uoixbnt-oe}f7Haq!*|fqw9I?+4)R-r^wZ!P~tJ zK$~Bz7@)2IH9iookU(+80v1LQP-41(+B`bJ2r0*zK@4`LBJeX6yx$wL zNK&95yyAsJk=2nAbVwU$d<>LGK;Z)_gqQ^OFJrV~U1=RkA>H^g?2q^_c!1y$+TFF%VLqt~sb00!x7y z2q{=Q2rLCEzu{8gaa?8&@bVl+fxES!%2JcLgAp{pX`#rczz7>E25E(RieG^dHfN3` zuAwLZy6_Wp?iR#bQ1uGX$ENF?>3WwVU1<_wZJXvr+-2rlqyStN1La#=>$5D!8e zG$aR#O%4#jBk1$7zNL37TI7eFl{(9Vxt&;~SUM;g-5 zvI}Ts1*o`Z0rky%5akVMa>9|hkQa0-IfI)cdZVAwan8)s3<97=KR5*|vN|#=vN(zcw}JwL0(iU`T%N$k^N-IV>$nHx0FXz)Gv>Sse4y?ks6J3&ag@l)0Gw2aP97z*_r|p*h>-eb)HswFuER$72)&}k=(ppAi`L%2YlIV%P$&~aR#&FqZ23|5df z7P$CVV02`)Vo-z>w+f)fBcm>ZwIZhiBWMqyH;8gPbN3*Fz|T@pg9z+OAJCP`%-kTG ztQENw7(sJe?h0Iv{}~EFTj~|L6&Mw`tr?jEg@~!W(2J;X9BgdjTOKfWIz-L=x~aM5+Emn7Q5>*a6n=QWHV?LCFCdxP}nno z$|)AuW>(O?TwMlEMHW#1lMB=xgC6?_IwOJAiUGQ+8)7bm1gQko{m|9SOu7uh;9eUW zC|$5Q&Z^G>1uCeLbL8`uQefxfXJ$kOOdvZ!g8`sZfIyuskt~5$A2TMnn;;u(6_^~^ zvm8%cJ;Wfe8g!T;#IFjVov(}nH=02mK}N^j7Y;EvG7GfugE9vbs0iS2WKiUEWCShZ z2UWh%)Ct$H52S$wtU(9VH`P((083o#C&I8J$44|=6xbr|8 zVPT=KkmU#}cm?Lo0i^Q0-2@XAOanAgfiw)QMD?YdYKiI%3nL?_q!K`! zQo;x_9Ng=`Iw%b(O>mQ-wx#2;mIDlqyaIRSK+PLaPGEA}3=-mp3V{l2$hLma>;Wj< z^GJY7eJ004AZ0L}P-TpW?7<@jQFb1rOcd2LCM0Dd5M@t5$^=oBF(WAxf++h6QpSm@ zj0H)V07Th8EXr7sl<`57wYMH%aAZR@jSWc|4@6lnNSOetGIk_oTo7e*LCW}0l|lCT zgNh{v9uA1I)gWbP!OMwc8XH8}E|4-FRMViF{=u=p0#SAhq>LL?88?z?pi?Hm5q$-u zkXK-f7%0&&fCeML z1x;##d;F}Rj=K;f=PL*)aDo(o8Y&zLLXONOpyQWVL4yRKeMOFp*&ypUvO(=X1%8l9 zNR=+6!09*zRm7~fMy9n9e+{K zwnrAwfr}bUpcAtp2iI~dh$!$oE`b@l9@K0H9}@8Zwf*Iyzyw;StRZmI5wg@8vT2e< zff?LvX9Atx3pyGCGLUTmTE1b%1a6BnJ3!8DW^y#h5_pgaYB9)wTThVTaSOnZ?M%81potVFT?RqWfn1=0X$}Q&3!X`r0d)Ku z6R3FyS{Dr(&bDH30&QfqVsHjEIh-I(4oHA9fZC^^oW=+`GXvDf(PeN3ZRAnlv0{i< zU{K(3JOf&CwzLM^KmtjETRK(@{tCRXM*CWDe@PT{ECf5a)h?zW25YtRDTplxtsDaR zO@R+mp7T2%V1UP|;~bFr;AT6Mf~W$&qkZApHqZiYjTTT}j~Co-7XY7^DFA9>DhPr| za2p&{zH>XS0qF;~+iyC8mVtnVE};!r(6Lcqi$I&ygu!}1EjGtJAT8i_`!RJz5s*h1 z3l+czd%@c6sNn+ISPga(5j$c@ESB~hKMpOHAT0D^2_lMIEd4m@ z4k?!Y9CatASUPh2IF@4R3P|)E^@=5kJCTbekUPP}63CrI6iZJ)E`k-Gh++xJp+lfp z`U3IhvSm~+2=*W|$zzACK*e2@8p~wsx_685EfX+PRfs7(D(vm zaN(m0s1L*lnn7oAWKd)UZ9ttKkRw2o(>sL0$0KPlxquQX zXjDsqU4adx9#Y(Z$1U!IrU5})Z#W>w$0=|KtN}R|6!VOZplPdikaIyJpNyab+dz|R zjG!|s!0U)$4)!r;&VW1k1!(3@7Bt`i8tekQivhILoDp;)4(QxD4W=4JZbt@19!Eyd zB1n*nTzSFjY9Jf18yLX@nY`eQ<&2=JZw;dYuL7SyZxjy$H)#AEWXD_Z9{Lu>ECmLE zwIDY$ffju)Ap{|A`4Ms=kQrZ11OahQGDNtzzo{YnNYei2mXkG|B?*^)9*c6yS zZI41L2J&vLcv_71g(k`21z0B zpB4eN`N2}4ooV3xY>c2~w#=X*T+se$kS^#BM|K79T1sZn5nZ4O7?2cvha+S^8>ox@>zo5rx|o1lTcA03P;+YrXfq>-!{o>y@H!K`1{X9F^8&QW z1jGO>T!!X$@DAq~bLI^2!aPvx0kohSyyp$199dNcWcfE_2|suTC1|1sq#Q{VXm?o! zXk86hOa{c#WMToWPmzG`T?4POWPuHzJEAOGVSyC>;9-BHRV#2|$ZB2CB`HjrOcfwg zK`BcBwyP23D6qZIz0%!~!V0|IbpmMWgr9rFq?3cA>0~sW5K*2S7)>Xm>4b=MvVSz4 zP?AngKo>DiU_ly^wqodI0i91}#n1<$8Lb#VeIX_*hJF^uEoTof2+UatzPiov08^IZ zk+TOF9JK^i`#OGrNwF$0JMI8&C3IxY5@>D*T|Bk{#MNZl!3XKuR2EFlPz8-~k^I$_6?HnmH>AwDQ`qhZ$BigBG1>GW9T?f`?MfWWVK1!l(w%%E1w zNdpCD#{*!CA24SLYztLj2CbwAZB+p+6=&9DI=}>}&N)Em_JH>5GlP5$ZRmk-6#yNq z`~$T3AH+Dr1ZgUOFE#ph1G0P$HsAq>&gz>+2KEC#eW!;vLR;7fX=jVWGqzR z6ZoeOTD@S+s0X1`K$EN1j7p$29!#JG2};}wO!|yUpb18OMitOHWd(j~M$pOK0@jRN zpb-F&JO|ikumMVaMlSIBWkG93J_RNPL2E|PN!y@vctAtuO!|xhib7zI3p;|21rt^f zDNzt9RTOm;0PW;pa!>&6yb>!>5Ci*y7qlXm!HPi$>?ZJlCusRN*cfrg#|(;~d-)_4 z#1$k<6eLR(r5pvoJ2s>gBow4e6r{msSTP8JLqZ6$X#+e_Dhvq;Sq0D%Q3Y8@NI)D3 zI_4W>zBMDLzrbkC$O5(-6ds`AP<=)gMLAIGTAz{4nvqF?K|#)%5#&k(@RS6eL?Q>7 zeIHFEphPpG6UkDf4L?#bP^Hi)D*g%=yiUCwEGlCW^u`94xG30_a^jIn}^`* z%RqjDRyYdmu&pYNOp3hFbMts%BmAI2Mpj-%kX`Jci&MA+Hi(!pg+Lq^!poq*#tT|X z;ke+_aRvo;&|+zUzXg!;lLa)q$HvR3zz&+H3*lB^*I)_}*p{itr@-!b1GK_gflpwP zfdacOLj-g}gaM=`Mv)&xB`69gu!Gj9RVc87HVf5&1i|_R6~F@tj%-;9f&#aLKn5@< z3V|rlwG`~2DThKUhBO6s1z{_ObdY!&!hBtZbcpjnK>#{=&vC`4;|v08vO%MD524F` z&_;Mo6c|A>juxN=L*Ox4kcU9)z`&QNGJ=jp^nfVwfhY-p@IYt4vw(JtfwilEhA&jW z!^13~!>$=Y2Ph_hRzZT+pD}%Le(XDl*+tOZ@i%LJO81r70nmb0gT z3<6z{1zu{F0lM)KB*Gyu*%P!r5xjJk1C&g`E`u&30gaGqFo9O~gLcgdEQjpPh8dXy zHUPFftw4bhv;m}qhmjjp5;KAhbp!`FXxbE%57@v~X@E3=1{2vpTh$ae9FJT*$sn+r z2O`V~F{B2x1`T}HDA-KU%3=jZM-j*wkc^;>PoU(>1)kqzRN&HJVgaop29L7pfa)(8 zO98YcPlHLvvFF-J27#>_prLi}^e5;5Mn(-Lg=|NjJn%jjMh&JZpoR2|pj~jF(PEH$ zWWbY?j2cWb3fzu7Ia!K43XGt++67?qL5B@7g63>NWBDNA6^sgCKIjfkP-GiG#0`Fc}xN9O#`r5p!K()5i0Pd69x)=0)5kAgTE44pr8f~UPFg}hj?8)V3L}XvxqFd8;3PQgHNeXp+02-zp2XgOESaP^sFT>)nMg_OB_`O&|$xzjUS->e9Rh5 zpxf8LXZltk--m6I1xj)tM}t`4EfWwupmUT#u7qsv0Bwi`&nSS7MF!1gfp;MVV7m_6 z2D;`Nv~LNtEFWZC7T9^9tB061nM}-?1;ATWK{E@W1s0$!s?4ByCg>JbW(CM$1P+kv z&cRX&OafP6GYjCuJ3*&@i_ye z`wreq2s(&j33NYT3uBgJ%b7!bI32u#xh zttYW&6ajUoG?{Eb0fcfqo(*h7#1V8|CH!kBMd({`uG(fmpqCo2q-XvTHKIhb3jLtgQp=Q zz(opZZy)F&V-OA7GYzvW!kigg9D^+bmBx-Ij-LdjrZp!{G6;aT<%8`MIF`l@8o<$H zHUK3l(7C_R4bY&?kKjAE!BG$EX&i=j$1Z?2^*~D+1<-vE1q$E^Kt{)wy$2Zt=7ocD zHfU7nP6H#TL5sRk9^+mh&_)dKCiyc3j*J3tz*j@n)pDq z4QN$|BAersy$2aUOT!$m7-fOV7=Z=hpd#doks^lzhhrV6-s5m&^oFG*1x`mM1ukh= zK41cA14S0-@Bz^AAUvRA1AN~nlj9HLtSnG_6f|%Jx&GjXu_L3vC$N{6*n%AX!#GRe zuB`%-;|wr&iEWm^eSOgB78VeH%&^T8xC8b_hY3ji4T~&+FA$G(m}CjG@PW4WGYY($ z#V9Zfe7xHO+bl;$f$!j1_)iV=_5{whe&|V?n58M;OL|u!6yn z1*VPBkqO3RMi|D9u!0kzjT_-!7KB<>WGmo~Sn#ekWR6a!{Ld<14fQVf_0Nikq1B*lQ4 zkQ4)ELIMrUgrpcS6A~Fl6bu5fhpsv&gCd6D8lNG~q(5h`F zD~8pe^B+L74hk%w;*c4<+E0N6ToQt2DH`CHz^(zU3dD5@EVxO_0qW&2gHHNk05xQB zUjhqi_kxBtK;;?a64(mJDn3Qf92ew5K2RS4bdWZ)BWMFIsP_R<4Y>ri1Jol2U44q} z64)7_StpcBU_m1&x(q0nz^(^-TbRi~K^WrgIgFs`9G)x%VTjkkH@?mR-S|3(F$>h{ z2CpJ#hBwJY6+{$7K_^EsgCs%q9@z7s^F_dS--;=Sf%fD>m%WH9h$)C?DTsq6(%@$s zDlmgpgKm7409^*F$ppJmKvF?MK{5+;3oO|4(Dpt=Imp{mpvz$O8D>Cle3e#^QjpF9 z-2&?f@;us&uM43uy$G~bT2Y3{K|u!OWzZ}m$kQ@V|2l4fT=RMyx>>n_DO(Y#UGoCe zumJU>92dMh$RMyV9M-M`ZNd})wd5E;EYP_#uv0%^?fh-&pf&{$sNV%zz0U$t2Oj&= zW#9!ZV0RP%oukSOy3kT!8V6`~xge-b0%Cv+25k;yQeX#9!6<+mTV=Bd7@j@&v!Y!FgcAl?9%sgPh9%BEW_V3Ea?ub$UK9 zf{$Nd0^KuNX2tM{(UA#!v;~vn6UHpic?$d>ZJ$7k=Ru7{eZ~)r){IX;yA=7sQTYwT zWYTAR!f4I-1#I6pMg`sy(2U3z#v*}9qToq30c*w|AcX=7yk%AlzZk(M3q1f?APCwH zugmZYVZjeZYsLp4#e!f9{(+cG`iu`4tr`D-E%*ns;16SwBItm5l`JVoMkz42UDw{99B3F$8jGk-l}EmMs$gCpozJ4VFbs59RYS=rvfK*5ir~d zT;S6>L9-{IbL*fcD}Yz^DuOz9jGD|VphiHN=b#~9@KLI8BjEGqjL6~-7!WOFM)0Zy zMg>Ug7<42aBWOYR4(2R@1?G+~7(g2{6!<|!3Zvr+CXmzt#w-PXaIpdzb9S7-3=&?! zlqGPsi4p8EX2@amj0%ieObeJH$2nLqflk!ZW}d+eImW?~8FZqaHuDN*MIi-71tCl3 z6`?KnJcdfx2ln zkZm`Njwe9Zv~xSM2)sy!ZLd+t5}0ZV%91jQ%#O_9V_p6;f+yn{3*8`#*ukfmfKE7q zcBVlEoCK&W15G-_fOg_Iepq;jL7;sO=%Oib2?9C^h8a3a~S0XiWHRI7q6Dd0x8 zpTUtAG-CidBuXI5@jA$GHU%DmW{Ba?y{Ej6;COcg6&}1uM(coP^Fb3?Aqq?i{Fp}b zWr2$z&|J9VU69eN3IZ^r4M1UIpeX3bpeO`h`!A#*h-9>ZqObxJXvZWVDH*s3QYt8Gs|Bf|!CRlF=rxgB*Pnm=wg(jRs#9A^?gI z5rGvYW=uRhjNIHH19?E_J%X~j3WI_KKlc*&PA<@5ci8bAOrVP+z}JXnfOfruj*$S} z>kK*!8gzI<0qCF!@Qqw0pe=-;n@$#oDS{686*p(DfJ=g=l0X*{L(h)xV1yjr!Kfe( zKAS^29DK$k@%8z!R*XqclK^5kQ%bMT1EJbovKqRs0;#A=E6I z%mSd178b_?44?zPz^5=WgN9AO3ud6FFfuD}K^rgNHN~8uLwcDNxWNNHOrUKYpgUN= zMhINsl~Q1U99j(>-2&k;0^2Rh6b)bs=0ipT=qXCeSPJruNZ7<6tgXid6= z0_YrQjjSxtRUDw>KlnhNV%C5dBcvb%YIre#MsYyry9j}Xi*fz-Pv!0dW(I1gTPiHmksgt?((fL)<8LgW!=WS~7tjfUj>BMaWHw_m;9=$l=>eH3 z24aBB1Z7t-&|#u1pdFtkpur{v4W>I=oD?NMN*-)+Qj}C+QILQrku+m60SzuOXfQq5 z;-n}AQu1PplcKZ&i-HtHiL@D$3HaP}14XcBO%!DnSU@Mjg6>$7HDi(hONxM(3bAM~ zNr1+H7!>3{9SauNc`!H=+Kv^Tkc75ph39ZfX!i#+p@BjcoX|iaizT5QSm6mtXh&9f z5}VLKW`YwM$V}`B?ZgUCNJ2Za!V^bAyRgC&lF+WK@T7J^+k!L&3og+hMG>gbVlrbA zaRiMEfbVdGmPIj;x{C!=*YyU24nqRn2gU-LlLb{?Y~Y@k7O0T3V$g<_44}>Fx(r&7 zwJqRUOqW3$Qj3A+WLZFKlE5au^8saj9YtuVl>+LIflDU^F2{NWE@{x378XbFtSqQ1 z0&N@ul`brx9e<$88FZHd$OIy0Wx-{cjTw^#xTpkcGGnp;XH5&x=~tj87HC!$RK;;C zfHv4L3v3kzsRJEB4A#v6+Rn%V8vS+w-6aXyY6o)F0niL_2}q?2=q63jm_~&HAE*ro zs>Q&SENEU9t`vOxB~-Wt)HZ;ey33-$H(c1fgG3xsyRVN(?aSsP@_VV$-$gi0^}&rp|32UHn)bw<6$M;nhdNU13O z#~(6c$pBgx2s(3`CkvDu1Wti3hvWgBX$C$n57Zw7ZCwUW$%1>bBCuXQxbrCi9;jpo zHR3_5AHmnhxq{z=74H2b_KRqSp>e5G61yh5OkIVct91@WCfc8>VtEdF-3sWo&sk!WS9}O3W*7{U?>N4N{1O! z0aRLn({aL`Lkt4j6+y#C*^q_(ptYNzee+-^fL7e|fe!U&0##Tk3Jjp}5zu-KE>Qau z>=Mwyq72|ZC+H9o4JHNn5<)&u2q`#%4FVl0#-zcd0A53=pujJ%CILJ+1DX#PxH18B zlo)8+yaG4eMcfKJ+2D}_0nl&!t-$1X9kf&i#A(@aoI#+|0<@D>mqA4le7>v(IOch*7(k;#yr2ZY16pyT zz-Pta4LNlVdH|^chXOY^U>QK`fj}%*(Bf$h1uoG2;I6z3jtrQmAA(&38h+>J0j;G5 zt*wTe!U13TmZbY{6Q=;9&p`cLS zFu`77(qs}qKA{414h)o2<_E}+>84JHpz z%L26L2;4ph0G0I`Od+7@2GHSiA|MShpfkrbm=YAh7iy+}<_k2KGC<@1pv#aYK}rfh zw>xPtm4LPgYA{uRwgZBW0g_c<0CnF%8(a86%_Ig;ON9f}mIV#(GJq~o23^f83>tD| z0G&$@Ize6()Hq;J5Hn*^P+$O!DXJ(ifQAn>6c|AFNr9HBfkz4%K(|MkC@_GA20_zV z_YOI7XMs1fusQzTd6WTqL?D|ZcNUm0uqYbRG-iX8Pzr3IRu_*Wg92QM0vqVK!Vd?J zG6>9%2455eZf!F=*>@~gWLIEwG{^#-k^Eo^Na$Ks^fjs==V~%(m@|Vyfz8n(%W=b@qYMJud%=*gil-)1wqF`gD)Nj`vf$PA(*8IUZSEP1owq7Xpo%&bVZa3INdq2 zSTTT(yL6lYG7n-GXmc}Yxfu0R%rCSQ1L6}%F(4(76tiGJQp^L8t%z{eQ5@7MW&_Bz zkXQt*qe4kB7eI0dpHQ4)4uH&q*ab^58=;rrf`;#)%iuxVK@t?0K~x6hx*SG<&vKAK z77z(q$qk!>WCqPavVgYPsDReMgSyZ;p!2@07zz}aL8Snrz_VWPy&)Qqdv!qFJ~q(6 z1!(6wyJNiqyELdT%?#Q!7y&xcz!7w#Q3aTF12lSC1G3HnL_~nI1QV#6%K$2(KzCcQ zK(YkN{u&F&ybQ<)4W=OoA!lTFy z(Z~Vn#xsLjB@U2%HZCA>@BvkzJu{#YSK*z#?jDt2cKu!Z~jR5bsf!veRt4XypwkCl!E;85V)h_0TzFW{@Z-JAqmn zpoO$Q*+H4r1YG7ouIUK?6+323At3Pp&|Vle(ApDlD~7QUR6&Er2f)`2Ie?ZFGJ_^h zz=ni?H~z7M3MOXIh)o5g;9^(c5LoX4G7U5b1>UQt0h-of1`X-?fKKc{Y;wcAT%fps9Dwkh5zh+DTdt zt(ZWoQjwAjsLTaj`=$WC#Y}TW1T6N2 z5h`}V1fovhewia^H6Q3q7w~Q2AjT0!SWyRZz9!QVM(}mvU_(HsjM(3U(<+5>ljc7O`^J78;9z^v_B4ibC;7Tf_7Y+ugk$N^sU#|%DXfkT1W z@eZ03?l6Md!612%12`2pLCaiTfc74OJ7b&*;5${B9bdrpLAzj(ja;B2+XB^77NChg zn1R?T2eo&Z!Rwbn3wS`c`#`();8TGl%$Y$4zAAuKIDP@e zX$LqUd9nmPOa+A~bk*sFAvgi~ih6^1kYnnR2k}71(DQ&6qfp^^cZfp=W)P3s6Oho^ zM-YW|_zr%Q`#jL_9V2LSDCh!ZeS)*DW)ROjX26(0=$$Rc9c8l3PAA47x)Gy z@FW531}4ygMg=D54NTxofuK1BCU8M%0GUVtpZX3OHqu~%-N3{IYPmvZ7C^_rgYWKX zkOwUr*JS`Norj&@4xVKM-N3}D09(m!1)6{Y-L%7mb^{aYIpv`J#Go6Pz|#_-Bib1h zxEy;xhn-J@o!@Q^8mR-F+~N*8Yz2Dh5@^bZ2UI6Qj&Dc0bct6%WI1R(F}NNFohrr4 zpup#-0B*p8_J2Cw0bPLvJ-wYrfv*HK@S;)#>gjTWPj2UTWB^|P30j5=pDh5-ig7!> z0qF&w+}`b|C`%C0OMI84>|CYcxQI#(_=* zVFs;FF@W$uqdN>5Ocn}ES&$A7gBcSG$jwX+p!q=?UQnMN%mTH7961zNvO(1%ct;?p z(qjgnG9mz~oWRRWEx;_$(m?P90HCT}K!FMBd9W@HaJ37TFk|8XSGk}8M9>mXCPxMZ zR)JpdwRSd+%q5W1^BFXm4O+~Z4L~Unqz!f%1A_uc21H1-f+`ROfg79(2tkHc&@dpl zOJ)PIk^$@sus^|kCa_tcOUju+i={y~QnMFAj$r^Ti3T^VKyzx~TOgP`G!+c=_fm>+#Z;u(od_T@?+|827wzyCl#>wiApMDwqqcZ zcm)G98TpKQ?HGtZklQiTybl86(81o0L79ofxsVFffDu&?15sGpG4N@~;ZjdcB)jmr zGcbkEL|PR-H#VPU5O_><;RE(QQH9TNNh*`bPAYc?CaFxKRZ{8ragjmbBhg6(?0uq= z%2en!JCyC^pyNtGtLg;GtQbHCz;I=O<^=daWfZdlvpyq_H6w>36X@V2@MsaZ&*aDf zTNMau%IY(4SThPZ-T_}4qreJklQV-3Z)8+p1#c{bZcPWB_Qht+xDK{8ogF-i!mhvp z9+u%$0F9%7XN|!N6qps*!NW2I3XrYoT;Kr`E(LC|YS0czX3!$BEYQv+&}MTkuxii_ zRM3SoioD>HZ9vN)L8IyX3Lu|N0FC+ZLxxBow-8SN-9Dozz~rDH0CDvK@KBFPmVyAp z<;)6f){F~4JIfb9cb0=T=rU_E6@WG%ftD8tLY5aWgZ6xYoCY=?bOjoCXSuL~Flgkb z0Xp&{q96=ekPUG=Y|sR(9JIAuR6!J^d;(Ot7--E3Xde^!7Ijq9L0ikkL7UX|83e2u z7#x`tB^1OJB(gx8(;Wq1(c{>`s3^(gpdbnI9%zUTw6hN`ui$RN-@09Md! z4UYmVXif;U$&UxLV3Adq!9fvpSrsp62A)-yfm@N!kqKj}7~}#FMwv1OIRvBwvKfLG zd{qxKXzd!S0xxJHA8b!bij{+;`EYbkbA{(?3k|j$Kv491X^+2bNvw}tlK?C%llm%J90zM{Gfz?qw%W=bo z;|u~@p(`0!L2JPoKxZGVF9t6*R|kiIqePY?gX0B|%Dc{roC>T0dlxf;Viz43lX~m$jic%WIT|g$gjY!z<*(49QOB?`i&iXx5@ilBoigcL+e6huowC+&hqMI0Z1d<7m*5j>#4bRbI+ zbR31)0e3}l1u;;j1}*Vm0)>L$0Yym#<^u|n*@~b;C8Q3xD@rR!Dat5-CJlJO=a#W5 zNLVp|*1$1aF^GZo$$bDB4xTq=RbYZh$$+Fl5x(&_g8*n`1>(akZHyq#izd!<`!i^6#*+~TPi3;EPxgjNV7qp$>tEqG-nK`KQA!1%8W?{)bE#3M7l@}6h@Aq zyCvb5i7{(1f$l^Ek1T*Dtrb8=|MmNUbSl8c7*arINr2X9Gb?a7)+=yGgCY++f zc^nN$Infc@j5Dqi9XUY*3T8|Nh{V);Q@`Ifa)rUG-wtF!U9d?C_tE?32M-UI%qBmG=2!0HsS>@nE_84K@WArGQ|u! z)De_C5mU@2@bVBmDi1x>5q*joye14~iWxN11D;|&06IcT-~^HLh0w_#Vp7N)N>WJ2 zXbJ&mfWebOPLq~GR0lGcGDs!{9wu&P2T)_8ke7jnnH%OI z(3#CVS>S16UQp|V8ML?-)M^#T0^dq_o(JS;5k-Dbxd)zk0F}1Mo|bvC4lFJ zg+M34gC~Vcz#$;;&<}E~uaJVUz-3#ILLNmC5XGS=3JJ*mPDTYrfd?}|>tjU0qw1iU zVgm(6&<+8p8$f&Y5pEEJG@lzFSBm{(W|Dxcq6F19NV7RTpf%1sS)ldUpaY4R9p`)k zpK}B`(S^kkw6q$$+LnPqQ3}*r0pA!W1v=sdywMeOV;lp6qBMAEHE40IG-w>0Nr44C zgscEw>I}Y%LI8Fi5<6&`12pT)sLNmgItf~r!5F+51ayU+0;rJ#I<828OJFva6$5mR zM_%B+CujQhdQk9Y8_)qh3XpB4pcAsPK)Wm)|1e}Jf{yFu2iYJbut5>B+8KQI zDyTUEJ&~8m5q`)j_?iyrMp0y8P&7i1S3nYmToeatqA+PP#eh=31gN0`IWY_D4Djk= z@S1E11u;mE1Vx-fQBpw+a%2{=I3&CwrxHQyl1(g(qM(xE03+gfD+V*B1)w947|ocL zfVL5GWC<)?#t4cXq(iH~6Lz3$nqNnQWWWb?g7*1v1n&@I1D!Mgp8vB@U~)78AIHI=zyVpb4)zzQugVEJtQTwyv<(gJk8nUH_95b+ z9w`&(NKJMt2GEHqAj1Tfi-MXkOrU$Ar=^3Y=0GbrxCL$}gB&UYT22otwm>W96+juE zN8nH&*mo+B_0pha@l2pKAS*zDzz1G}$^^O*U;~KHXvVaK(UHTEMW9y=w4xfcN@NG4 zf&fSXgMt7kv4GCG6#%b%V{$z3@hk(lZ2>lM0>}hD(D@(GUC59X@!%!(pw$8(@4(iB zcQAsM?}HK~s0FqM>_P+3F%%qGib9S%exC(xXavoeDu7Cd2jGoWI*`L*G?+BNE9jU& zWx*U!6wYAG68OImw5V59U`o1zC@7?%XR*P1z!0~9oB#?@(9#2eGobCH8cYTP|H1o7 z4?xNcBGb&0(KKTQI$jIB?UIxlM}NC#4Yia|^0&#Ve|tjhwQ!^;b* z?OC%N&#bu&>IyS?O6xE%I6C<8@_>$z$x>wD;lidukwbyaaY0=cA0Hz#5@2G+sdz$N z79T4MGcz+QGq(bVV?v?hf_iseP98Q8Z+^WOF9#1RH)!XdqkI-$X?|@pUu;VlsK#PjOhe$bq>;X-GgAWGsfSlX_Km3OURMvu52PiP|GC)q00Iv@K ztLA{{1sz8L@*ikdDp*4ZXyTngkrhO-D1wfd0-YG706uI8bm|W)Xm1Lb2R{9Q1=QpP zoz%eszS<-KbRq=kD0%RyL@E$VH56DtZCcO~R1j65qkF(jXGYNOcj)098DOmnoQ}*T zpf)WFcvmuLIvs4ih$0|09`I)06NyfQ3kxQ0xW9*s(o2NH=nR*FqsJK zfXvE+r4-0D0%V5;;cw zT_MCCMhzwbFh>AX5kevzL4pQr!I$F*xPwM189;my(3Ml5iGv6QCRgwpE|4gXBV(DP zd?9G7KIqCR(0HFbxLg4ZTk^1TgVcyX_R4~Gk+L{GS#**?V5WfrBd92sQD6k+&85>B zK{Xio8YfoJJyf890O+k$tY9C&u9N~_FeReM4%*uWJ6}PANd#1-fNs0u01eJDI?9_d zReFoJsGppy#0)y=CH9bRK4{>U3vv_yXz@L4n*eB0Kd8aL z4Guu?_8xBNx^&QBK6srL2V`A3j~NqmUAhEl$arcA$jLIGp%V=z2?buqJFhM?ILbIa zczu~c;HbAEp91(^9LR9%3DCwQ@OA{yU=Ap7Km#iLkUblqTZQ-)_ykUZ0|#^;CTPVz zXiYt6wn|Vz0O}nb(6|W5QVmdAWd>~^O@J)3k3o0`GHN0W+O-6pI8_jadPf8_N&?ai zU1l!=_YU|dD)4H17x0=t2Sv~UhlpkNqM()wGibIDlwdwHGYQnQgVwr&${5tq5eCpQ z)TV}ph6*=DW>9_w4LB(jZ)ulM1ns!x0GlZW z>PQVfm;ilAe^m_Sq3;7!X&QlN7-Ks{}cE)b0*r2swk86?FA zwG?Wg1b7++D!zc^j+()U0F&4J#rJbnEs5HScsFXT5>ST+s0ekmKDP>lHYm2fDF< zY8X(v4zz)e=mXu*CS}0wGh7F{aVdb?r=Uq0&@pBlpi7BCM<+9bb^x+~jt2s@K3Tv= zuYy|Xpn?L@81?`)_dt_apn{)8gUJPaIwp9al^3)omB=&QSil1(;4|I$6j(r;%E4#4 z@xjk@<9B3K;D_)1V*$;LfzEUTr3&yFYzhJj;4|W&V@4oXA)o0c2nuHrMIi-{Vg*6a z<_dvTc_?SP!OtrIDS;XT3Jglp$2bU;>}{HxTJ#HSN>Kd_mq&W{hXf4I@$j$@cYxERA`att`DxeW{(E1SYt{(8+x!^XX1@QMz^E8uhcK_`haIqJXy9MqPA-hVX#x)^8y6UyB* zGoUw?%mvNmAm2^H0$Ln~?QWWRumyma3x&X&FS0oE(lslhi!*s18Dsp$`(oRazW5aI&62-^njG3+)dL1UM?ua z@974^;rv>{MU|?OQs)06EtY(z#|X11%o}EszlbE!+al*n^jK zfwXggy5ww*OeLU&U!V@Ri~@%Orz5Bb&IM5nT3W~rI;n@vkv#{r^b3?}RX~&d;C(_o zAhn=Vbp#qXKwT(S(B;>>Ag!SD&{;w4I1L3psFC~-aRCKZ(Cis_#Te+`ZUt0BSU{>k zZF*MFH90~Gte{Syfr1d!5MhY4hyp8UmJ77dOc1p66U`6~ZjdqtMNtsNq9_KUI26Sd zz=yEfD6oP~A97G&1)V5#9tb=wULG$PE6`t0NX-HEU z){JHXHyj}g#1+76Gg%c_1a9_$S7fTdrX>`>tExe*Lhw#`&{fo+Y##T9nG>pcT+Gs{ znF~Qj6#Qo{gf_UCK_@eoLyjTyaRjxb&9cBoC@_OMjE;9Mo?s9-8qL7%_~zmX21U?H zQGqN4CIudWU;ZEmi-4vzKnwv;pAEbQ+yFFP#-zZJrN9YVn-6veA83CFKj@5RkPG<1 z4gotKym5fTk=gMN$f7=H2G9Z!n9rEG9p_v+0XnV$Jm12kz@Z=@(BlcRjt4aB0b+1K z>=lIEy8}9(0<^wRNI?j6FF*rh5!eZ!ePU*g>}A%BX5dLJkcB;$PA~|7Eo26r{RkSj zgiHW|<{gAV&2aE0D9}tsBMT!3XzI%#TZu^pJc-BvnYDn$B8Udf5V9zNFFs{)WG;l< z?WVxu$l?z^=9}g|nWG+!)23@+O$N@8t4Wfwyq>0tB zK1+!eqyyws9wiQ5Mn?uk4jvY6(3m^;jwwbBCLSdY=&UH4BfmE=y*>LUPf?Wu<QzT}0?kx`&; z1)~zXD=!l_$Y@Xpo&hvJzyuoR290X4f%;^Opk51jyas%9oQeW?y`ussdO@2vm_U6s z&=Kj(pebR{G=$@sdzTm>7e~Hf;{|ODVbWyc0N=+2nhOUj0dM33MJ$t}K^7=pLAQiD zuDN@OL15DYMh0%jGj}gBI9>x8qo3ut2gKQP?-Jzn^LF@wsi65!=*SZ&@5~0R5M;Ds z0MQDJjv85JOyEU>XSN+=aAXFZm4kNXG7tC~NZ6sgpi?(M&dE{`fXpVbfM%3IOH{!Z zS3#r%A(KgvBYQyuB%mw^I#upGQym>0(9OXVnPfw zGX_!)wg6-mlO|JzIWuU6feSn}23n>GW?-3J>HtTY1``ix{VC{j4JHB5poD}Xw*mv` zA~{e>fu8ycUgQc|8N~xW!wj^Y5M(9zgh5^f2H1cXTs34(F!c214(R4Z(4I?v&|!z5 z!32oUm_TQ~GwCwS2CcURmB^s*6zHAA2(lY`MB#VPtR^dHRugn`F0A%oFk@N)oxNrd zn92{SF~HTpbVYD}08P}w=3WKfEd^O%#lWt>D6o7oXtN+#18BGqu{InuiUisZzzpik zW`XJ$&=ncr*)MSN5LRGUfXaa;K0&L{K!Ly<;3xn+{0lUd2imj>x=RBx+5(L(P-zNU z9t_bA)&&|_Vb){{FlXj)RDdi70NWy>z@-4Wl^Aj;I4C+8Ay@h-ih}nOfY0m(PoWAZ z@+dHZt^{EMUCjcjD!_8!DOA`0D(8>X@8$d^ba%2hoDg;f5gOa5J zpTI;d@Qwn|YH=%u^^8mo3Lqw^vIOm>ds4ye2$|Cak5OfT52b{U#zL0~L#04xiE(6s z=4nB>3AE)1G*AmVJrlITLEs%Y{ur$o*ttPfENDpqXcirEn5lvgKlgWLCc%1e#Dk9J zfi9T=l>qUO{Q@A0Cre=G3djl-MJ7jZCE*BK)5ipz!GxX-2TE3;eaeiWqrf3CqX4?f zl!*s)1`cTNfJBzSlKG4RQ`|vCHE8J|*ig{PI?wY!%hMPgRk8%u&IcI)T2cabhNFfe zy8>)_TS$Q&TpB@V%oUJkw}llrpi-c8;|RJz0yeoV0=m}&d{H8JzFYulZd(+5Gc4#3 zH*j2YK(nPLGbpY>n+HHrpr{6|?E%k3Yd9J>atORp1@i$0{_?FQek66Y;Zp8l?6h-}kiANb6H%vTATv7jWDsqnRVqxMz z9KQ!!zr+CQav<_%*1gO!<0y@EwMS%r$bQ}k`)dyOV z?#P^_0O`;|mf3?8f!6affEJQN?jp?s?+suD4JLr@g#)jzXM?Qghb)Z;UF0hQx-x|k zwADg^T>-QMf(3rI9E$>*1_J}AD+IoB5xR8V1#~IzT61R5ntrfDKr3rmxDgHmO%8%P z;V_3;GfF9dm-~b64g+a{FS+*tmkO{OD+565f*hr?K#MY29Hp`pc^nxPL6^VtDDW!q zIx-pTN6u1QLS%QYGz>6xfp}QQI zA+2rDMi)^3AG+KYeEI-n*)2Dyxd}cU8gdG-Q$u4@OUHx-2O8?lnKeMm(KHz}nvq0X z!CQlc&6y{FdY7Q~E+~4y9-affybsi8VFt~{E&#RDdBB@CnH6{(8|tz^SsFAV1Rmky z1$XcmKo@@qfHuK^mQR3}?XCeC%m+T8kpncgG{lOK1y3Mn4i35^1mQ5c79lS{;jxHH zMMx(LBM)fY5VTkcR+%t@7VWTr_8)-mI%Y<>cO6nBz(~+mc+hz*jE)R$j`f9(_26l5 z(0H#SXrI%a8K)Tp)><=wdMX@Qj!Xh4^Bft$qq<-vVCk!cp!?eu7zO&b)$t9?Vc;PoR;2T@K-@^ zg?5cu6j(rGd7z7h!SbMSZqSwHu<8i1j#vVG)Cy>q3}lZNXo)bB0=K~FV%S<*&{hTB zEbziTL3^xO)33OoX*^AuPdO+Z_&G_nM4D?vEC0$V}%FtKPdflpQ7 zP~=wt)iVnGU}?~Bi8&Jks2KeN3IXt;Ht?&~hgh+219}?Zpeq&-4x?+auwct+27wDy zDi(%VT7Vt*H|Wv=!eMkx3l~7gA5PN*wUjAuWqxO75`l~=Hn6}BkzfQLlEDlfEClWS z1&x`CDKIIpWGR3L*qA^EyD)%8(-aiJ+sr^k4|rJ?=v;{`1<;_XqXcMN5VQ}5i9t~U ze2xg{LO;;96h{HbzB8~cN$~xBASp?Zf#4HF6ga?AQs8x{ASuwnB%m8@!K1XGYXCK} z6geHQFeq|??n?y?l!Ff7P~cSHf~>$}1dXUFayx!tP~>59P~d^604>quR^WjsVRCF? z%2Hqwm?5OV3oo*LRy$W^8%m& zW%x*c3lnSrUjfvb1sCy5noLu`DnWyYe2_szuvMT5H8b!Of`9`2s>UgB6TqX!@Vgoj z;tC9oI-tWNJ}^M;Q3H7jCEypsUvphZ}!fzKp4f;x%tL<1LwBuwa;AfQu= zz=P0`GeIDY7|( zP`4Ab$#6gT1|CSijv2hc2-JrJZ4L!*?h}|k7i2Z)1W0C3;tFsy0G}np4o)*7;Hf0g zN^o%OYd~(821|*8H2 z6yfuGV5`9jKzrywWdnHn09jZA(LzHOR!{^r+oS10B(Q=OYG{DW713p2ROAAkMG4yU z4ZclNfeSQ<0v;v;HJ3q0Fmfq^kD=s-4*M`D@F?&WLQZ4k2D2CxSP?VqoK_6F5EJzr z|1&D`DR3$96)N&8aDph%#xwqG&{Z1>0^W*3pd&~@+sdS^81y0Mvg%tgNP_~ERe{Tj zK?`&srWJ!W$Q)q>P6gpYMbP}DaG@e-VY)~*_+&~^Z%|d}$e`5b z#UKqH`T_+61cSW-+T+0hVo8I%slW^(A)P3QA3^dEe}l3O7Y{2~7^0X3O)(d$Vs6kf z308xd1|w+YIQXnv6_Cq8 z`#XFgb5#&7_-Q^y>a%P` zP|yp2#$&-MLHD09f=(-ARS*P?!h$K#b^!s%mE52@c+VSGMIjL5z#CWa>9#_kQ~Fpz zcalL?$gzO0AOo$w2T6dh?FD6v1E6*3{M^GN39M*8KiHB0ij(jsfe#?pUm-gQG&K1` zl0Zw7KN(5j1v8T{q~(uTQ3P5TponPrgN9+irv`y`XMs*g0IjKE2DidF90iaX_@dwj zKB(pd*V3TS{$g80omJbkOl2RfTsUJ z2gZSqqcef3ZP4-SD&>#YDjWe$8+p}-bn1t!NQ;N?aV zSpsu-6qp=a7(oqtgDio4pd%KUG?}1BP9v@B0o}N8 zAL!gk(24=D$)GL^NF3B|_fK!Wg#igOg$KnGGXg8FI#v;07EB8ohq8>PWVc6xvoOMvzfvVry(@;Wjq z@;Ndn@G0BY9Let=+13!&|%eVplwPmpo0X&Alu_X$4iMTuz|KM z^*~lDiaTzP5L0-(*S%%D|(8lcmsKr7Wj7q75@wpxNGetqB#0Z?lJboDtKWTh{7_62lR9jN-2 z0bNj@r62>D4TdxU7!(*CML+|2pn4v4-!iDVzzrHB19i_iLEUpE21QwT_gofY3}i<$ zs3l>LrO4|j0IiWh?f@;WWp)I$2|)LmfJaS0l`qICa^OXpASpSBF_5cH3_z!dfQnNF zP(ue)oPrxV;Bh+WhzhfUAZ+Xobh8QgCUIs3Ay|FO0P+oVKeGg+DS)(}Spv3Y+!1tc zu&{z?7U(V$(8UjsYFvTAQ3F(4h=B%I4ItXZL4C+9&?P1yuRsQJ961!>#|DFa2-kju zAxjaohnWc?;wYd9-NMYIAcb(Zw1T99G^l2mhPs=d`!6#iA8eWsy0RQJwvzx^)*TPp z5O2j059+B1{D+^713H))bV327BM2H2V*wpE4Qfi{C@_F176k^!M#vBZxH@G5b?!m) zeJtR9Tsr7X7Y~To*<_9%8K}(`Rv;k6T;8g&f ztpt(*(FUlx4M59Lz^laoIwFR(8L64l*7XWJ{1TSh6V{}-8gJrDR`AP6O6|I zawzoR0urMC`_PO2t)tP;2%c<5P7KJ=KMmSDK-r82$_C(7Mp&;K&>-r%0f8(97J=#D z>juEfgg^^+*c^|nhh8@zk);6IUcfFe1$^Crj3VgZLC8im5Q_sevIsiFPhd9qx&cPe znFOG{0H8GioC;h559<|}9d$t04jf^~66ge7J0Osy2tMvglSv0sfP${U0`JiPsf3ny zj-Z(vZpadFBw;+)4hVqe?7@p|DnN^uQb0QbKz#{51%82LEFd8s@Xhm(aqk$=qAAei zKkV88L2z*+2rX{Fy%@(U>rt*9PywyA03CM;Ua$lj?_~xbMgr}WfVRa!kNgMO76V#T z1iJNJL;-x?K!E}?q*KBOn!~#5sQ?bP3E;~Get|C+5C%;#fE9sG)MSL)1U)`a1JZ4R z9-jxbX%_Sv3ee&alxYEQx`+V{tRZ92H54-F=^_NQw*s_W0yLEXI+GW)Xbt-{6d(3O z(}e;oU0_~AftoHL*HFOI1?V;wP`Y>uN*CbkC=P&b;RuN!~v^|!RJ7OQV}?dfZ7G1jy_ng2Gb5E(BeE6H_%B*pi7;RGZ3i8hRd@tIe_)E zK~;c`NZP=p$PPNc8*G;21a{C^4@Z^)JJc;8(?Q#vKwJDc%$Syd4kJ9m2~sqHJxgF; z3V7=I2xpe#2hdSN@FS2M=P-e;TvOnL82g78qywan6KpO>8fi-U0XIk*qzE=IEwCyS zqz1I%gBxT7Xzw0K6*pKr=vbr;OvqE#2f$O&99i&LYmmDYc@>yI>i`#k91T*zE6^Vb zZvKE|LB8TsU;>@lvPM9G59u_d9iY40n80@<2*3_Q`oN+9nl}Bw0zD4tw1kubzrcnD z&=@t72Ga)?Go~Lb3QVA7#$Q+z7@_WmUkC_t{}&e6ZGfOQ#RdWJ?D7(50-3;ul0bg2 zI=%q!O2U~y3P3SST>2;gC66Xh!x3i^K~{n-mAqg;P9oFbC%ZQs}LQ}{&a0=NAOCfg{&6u8mk^wj(%$Od4ZnS}T040??U_?$O6WGA1WGV}j z2;}}6v`WSSH2DfTLLR(i7_@pBynK*Z0d#Ms8IupF$N-gtBA_GJLHDX_Ffn91GJtNp z2W@uNVEXdW0kn5sgXzad2SsRy6?D%SD`YV-sDcDdae=EcaCrw>t^&Sr4cvnTjk7U> z_N&?`Fo0ImgZnQ~d%%m5IY7lbha;ooj!y>|1eT~NKu`PxsR8vKK-(EPz;=O-xCGgZ z%}OqiA7m6k>x{V|R&s-Spv<6_5=ajZXml3TBmyk~)?ktWRXd=Z9|1YBHwL5~G$93c zIB32dd`KEI=v<~0P-hv`>*@J?fI;9kxD_U$z~d;90~&2+22Cu1)?N#mG37XdW|%?O zbb=N)i-Q(1gKq-@&zys1nFSSu!Sn4Bpu0N3QlKGt&_ZwU?6-mf1E^*fQ4j&G9ajL& zk_&(@@`Ltp6_BQ^#S}yo#2^=T!i5zWoEXiS!51(=YnM4JjAG#0g)v(Zw$G6xOJMpk z@FqkaMJ7-Wj{~&k1T>b+tiUAjIvOMdJ|7ztcC4WD!a+?~M({N@jG(=o02yAK^;KorL17-4v<5BTt5W4 zzy@sA1gKe47{P0dK)Vz{yQRU~6+t_rLA^$12FOlO$OSeaGe8&EtO18S;sTo&*AIa% zumNp;gk5062pSp^0ci%eTtT}VL5)&y^9$nw8%EH+Z1AKA{0uinN03`UPGABJ41u(O zF0f$)U0}1Y8RU=+kl73zsblU4PaP*199ab3sDkdrf~F48!4Z3Xnw;kkc{1twzx75VY0l2w!)`1UhsMRCj`} ze*{fxf`-39sgv2k5j4FCn$!gCYX>i11StZ`f#yebkAIy45*c_g4y z3_zMdYQb}gOjZo0pat6&pc~Vm2YiE8T5>|yG#S8l!ZR}{iYqXIF3$oN%Nn5T(m>On z-~~;frA-Q;GTBi9RHA@}OTnv|Kr2tw}2_8;jRNw;_ z@6w<~W0nH+rZ+}#*$(m#sNw>1Kw7GCQZ-|b_Pca*fJ+31%8lGpen!s zJS7J@Cqh90CZ+*f;KZaL2oqBPPr(U+1|)@GV(@F&m>@L|$UFh?at0BQIuWQkZhmeY zWx;C7%7P}u2BG8Ho*d_qN!g~tOj3rMnX;Tun$}st0>~EDb9e(g6V2VWx*K+ z0yRa?%gZ#WDSBRArfW?B8uWne;=++S){OAf@dhJxydji2=DZpfsbfA7sblSE>R=H- zDLV+Jjy1z0bu1tvb*viUsbdPGBUUELRBCEN6yC z>X?U|I+|D*xk2L>$b(wo(-y#2RDo9aGJ%JAKm+2?d*VO?S|AL%;S9PGjL}g6Je~zw z{S8|7&FIKj2D{M8MS;;#$P+xU1?s+7F?fTvm4g<}fw;UNEuaAv&?$8)pasZai&emP zCPB`QWCM*~fe#AMPylbl*MZ$>2zCYNL_$Yi=$dIThZD>J84Mb9(f|=U3QPj$L1%#R zLeD+~57rrg?bBd_D|rDrjf~Tb$pCbfH(VSvv!K8va09%e9CU&pWF-J-+6#1IC1@~# zLjgPl2bx3T0BuKMS6~3&q6TsV4>RagHWttoW8fRLVnD0Qv%$A$ae?RFK!b1~uW^|% z>F_XutOoD<2VKqs8bt&hMUkNZ8tVX`2EZh+0CY@0hz**p0?~?~(*{A)M4;^jJPM4C zf6gCd5V!;$S}IZGWpYs91&!c?rsi0(6nMb{_@JF7&@rqh%#5O-G+=QPGypB=hxAaP3+zGtR|Z8^M@!H;d9W-Sh(wYFt(u4EW5a>n;CR(fQkb6Yyu64 zGeBo+1Y{}lIT|SPgM5I%3cMh@75G6UH2E?s@L4hFDR6;&CZHhT7?7nX=xCrQq#yuN zq#y($!Ae2V>9}IXF$RJ55^$mw1Z}pQ_d0*$VUSuue2;V^^tc7w;F#1$AI*K{)@ zmR9gEaXW&I0B@&;tPKT4GvolrSuBv1GYw3LkxH2?$A)!h83eZ5LPjBVAd~@wG67G~ zfv@XRV06^U64#!Vm zFlGsSTnG|7!k8t{VXnaFc!e=b;4N6_0b`cH2M`NX0IUIx_OXKYUw}v0z>FR6RmC97 zHJNsRud4`8tq_HUzA!@0x|7IKU=Ucy>G%Q^y|2na z_iiv|2|x~V1DUgX2KX$W1}5<2Mg!=?P8QG-x(TfCNifg?rEXTpiYgGT!06ZkIsv8! zB!=_IP8LT6aB^Spe>XyOdWrq%#qCi&#E0^%u;~Pk^MlK zBRd10;Q}dw%#nd~!>7lX94COM&_IeHQ)Hl_Hw`8h@STMWpmYa50T6l~tD}G-FKELU z<<~E1KGq6I`k3bL(oDskX`&>A3}Fjf+}2)Bxo#LVCn?W zDjUZMtl$)I2eh{uyoeGy7Kt=riT%<+1yJ5rU;(Yx10Tr*+Txl8T93$pvY%QEv~nMG z>L_?WHp+f#aqxg7Xwx)!pb#|l2wQ_G0iLe}NrA=+;p3SC;7ygFqf;%iK!IT;XzQ>PA0CYJK zctM*5DA*Mc8!Ewu!7YYws00gx%my#T1Px?EPffLe6-D6XoeZ$O6>wotLxd4De=Fz+ zTCNG2;Q}oU6;@zU5Xu5A-v^Cu3W7{#1`TMkWGRB?uwbhvL8~-HK&v#F6huMs0WNc3 zcMmdf^K-XCchP}%Rj?|ss(^0HW(4163EnE#!U)<;3109I-bmNOsK5$a4#}gy3ff%( znl_!&ag0IWR26vSnN5Kev>p_+EXq*@wm=ZH4N;Rx1$1~5tD{X8=$KWO!2`kWE zM^MHCNyA*qs=%trWMj^3pupLb6%J6d zK><9+1=`UGGZnl89dwc|t0oh8g)8V3PAMfkFG9p;6812tE-Qv>6-} zf1u^Bf(n8lvoaul5CU!G1Z|@MtvY~*Cxhb!hAdFC0;IA8q7uGNmlbr)5W>4mRtzx; z44@E3sgea+a}8cUBLcd` z3M2+P?b!#kVnRic1w?_?*@4fdu7Dg^T?0C`0d%f6=&m48;}5i(m5Cda6Tv3yfLM+? zS!PTDAeIJ`2xx;M$Yjv0UkJ!Z9Yr<}1-dJk3AE3*1GF@R-HZvetP-^Sg+YN`gNXsu z-U6A;$PLPMOu7u9`j!_|U@}-SNP)!^7zEBv2L}S^CU&qtz?~xS^<);XKmgfg0uKNU zCeX|X6R0r{zM%_zn|q7`SilD4Vn@(jnh79HB9QIhpu@nx(j}nj5|Gz9HJBJ6UYCL{ zfB;>F$^>fOrhttQ0Uz807H|LyfUk?rffx!p5u68{tHBCdK)&Yz8Osg#HN<k@$euW=n%Z3KRn1JLN$Mf(nVm z18O$@M6zev03{NL*QuUJAigFdkt`yvBzZsZi3F0JXp=~YD@j&>58)Vj1xYt_T^(r4 zE^JXQDz(i5~e6|#y-161aMt_)FN z245Qx02q#1t&!4TGEfAa&&UBTJ;9?iEub?FIl*lr@PUq?d&WU!JLnK}(4~e`K=K@BOfx_S zMQ}QTZU%xL-Z%#&!UejdyHJ5aV7dTk5P%s}t$+q|Km~XR$W7p-R2od6S#a?11!$cV z4`@#-xX+)U02TzD!o~wy90ca&Km-dExD|N77V;{9*ZGz}#7!VP(3l;wqe+$-Qw7Mw z&_FZE5}2g{9?8>SvH|T>g$#>;t~gfULkbQXaFm>Z1?IuTyjk+BeT=?LU{a|Jcc5qjFGFGiB@)nh86&7S9RM1luwn=Wg)5_DJ*ZK@2&&dX z!K;-5AYD+<2pXd;W#?2T(?HSMwlMJ8}BfvZrW(QD@+EF13bh9+5 zHw|J{K*bzE<8U>gAZ2m@IZgpYsDO$9UIy@~q`WL($AID#bbtgaC@q0SAayH0_*e_a z9Y;?v2%Jy@P1QSsdefk>EDlg-eP0^LK+vf);6VWn$dWHM@I<}_lL_*UX4Jz;7(ud} zAk7xwB^aD$pbKglK^vMu3#$|u99gmi?ldxjVxJKd`=AR*cpMoOcoeunF%Mbg-*M~& zgTO-z9u{x_+JGkPLCg0*E4@I;UPA$FppF6~NYua)bfzbt0wd@eZqT-JP>&MU6a}Bo zuVD@fOh;kRkO*jP`@JC0$R@Yr42U({4BSLkAzKH&F$$?{X;XzjYFyB? zLjocNK1_-Oa-I-a3UshIL<+p3iv`pJWB_%NL1%y}fMf*PR2^j?3+X`P8!VbkBA^~3 zXr(5%0(d78NGUW|f`^izJBh%;klrddA9F)C=^+U#uz$W-}^)H;nRw zj_=fDf?j|t0J=&Qbgu+h70A)xD}+EgL4Di{s}3@N_hUGMhA=r47#!a+g2s&*9N#g5 zRvUv(Efv_WrNH6{-NfSv4s_7zqFk!55ENfLZ~d3J<(11Uww2z$9=o7qVCQHIt(O^hiih zB!l+%F@f4E(CdRh7sSBMg#l%5s2n(&K`8(>QVGi4P&sh+23--u2wEP=!~o9TP&sf! z3xMlqE@(u91}PVS?xhCBv?FME3U*nLm;z{f3Rn*1AesfBQ8>s&R0|lh1a3&dFQQ@) zSn1>lx^oV3gyaqInK2;MkYgl4((tK3&>$#CGb3y|5G2dTMh zfrgHB8D29%w_`I3Tn1ew!sPe?G8r+6g^>$19XWvsWj^u?sKL!-#`FVpcNBva!)GWB z+K~X-vIk0JpcXby7I*@R*>TBUP)ck7O_qW--hmPyNM0bzjHv~5t@jSFd?|q6gfaW3(y`8@GS!=Hp4od4G;HWNXWu~vfgMeZ4BQF~ zj;v-(44`>v&{Vb~s~c#~4|qW_Ct@2K#3JyR82F;Y&y1k6IpJHxz&ArFfOhdiPc8+? z!Y4LBQ_J8pOTiHgx*`!2L7bwkxLbpfNrx#S*x%b zWFUhX(;6nwsB|I9YK0ci%&r1>db))Pyk4P&34GZln;Fvvs6KG&Vl!jvVM1TC(8Gkh zXrYJ65p~r9NTUW*50e6uz&Yr;g$YdH7zFi~CP1v#U_w&%61sL_0uyKj0g@E62GazP zISZ5^!2$6J_zKMqCddMY9wtyP7_^CK3&`OdW=uPn6tJvea0K0b3hF3xnlbGGb;wxY z>lhAzG=loeAesy0V^D)1oKrv@rz0R?&{_pErV~uaiy3AkB+h^mK1&v8kB%eg)ON%w z2Idm*rJUe>h@hm#lBEEdJ_99}3y>tz&cetGN+O^p18lef^#%%&ECptP8C{@qg9Ee| zTO>=M%?Ol(IUJeXVAo85vjy_*PG(&O$hZQl6+^uO=v=xP%MLLJ^woeC!-J+K*}xal zfp!9e1|y*DEs)1Sll9EdA#;#53eW-%ym6WxBmz1;6ufW*)V1dTjR!M>=S`rlGyu8M z2IfiwkSjUC?t^7paP9}49_4sq`5^|!GfNIJ2sGHcnN50IS;724j!UN0hKP`>H~CS2>A3e&=Dxm;~|(qTc4ozI)dg^phv|+ z#34-98@nC55!F0@&)Kx=V8 z^)aX-12qSj6<9%HtS~W9^PgFP4J5_}69cvTnL(=zpzQ;YUQmOd8MJQ#+AaWzfm-^^ zpqVLXdjKQ`YT`44_C_!&fZG9}CNpGeMS;n2$#Kvo7tjTs%wV>_dvVaXHiII##}3N9 zh+aD=Em!w`UxATBLG@$0!;#npkskS(`Q-Ws~_PL)}UQ9;46{9 zv&hh6Q9zqhII_Sq+{pJYaw>qX76jiA3ZLqS^t(XQm`s{XGLQrWUxvcu2tU{bR5O6b zzXTvL1!@q1J)*!OFi8L$ap3JXpcDg&K}Jx%QSkUEz&>2v$$>25;Xxbfm zN|7M=Ol*)9pnL%CV+tt-9LDQn32~FhlK)}%r z3V2X4!{jIeI_ddh8+d+31U!=ox<3RI5}-vWOd3owimad+M^Lj7d|@u=tacXAdLocZ z71#tWLG*(90pR;~V?cU!K*v2pMvK97fuLJT5;R6ygypvhOzq#|fj zCTPl(3v`1vcoxuw2Xx`E2GfJB9*R7mLs*||^#GL_pacMlI9@X*7toSTCeUV7P$9wx zs)m?A20`~%gJviBKv@I4A0IsV3JQNvfe-G3F=T;8i}@A!z+<6I5I-@2&qxGMO!6p# z6QF>ipaK(UyD!LAL6EJ?AeZu)F?m3=@S8DtfJB%ym^|RA$$=Z>M-xRM5apmK45D1X z`>UWUtAxR04500spu7ehN@xMCXJQ2PBtfkKq!kY_pc9%vcRsNyFk3NXLQap)f>5AN zII|T)HfR-tBRBYla8}1N2abYn2nP=sac6Eo0G$6}VSRF00948z+${?`47kq*eE2zr> z9(4f46)Px8LA5TLp5=b(W$KlY@egf*{Q!2Os3IZId-~&hwkzOfH1rI>RL9BwM zfODo%Enf=QKb!lY#f=gQk;oKn1G;gFw$B@U>8&tOe$PMvy>NoB^m2 ztiT{JHytz?=E}?92)b!a;Ac5xY6&z~!=lK4Azy+24?iPhRLP9V0$gg;!*rbdbb-N9 zNZ{a1Mh0+c4|0G2F9WDcVa5cmw;4cXFq;A!#35Or^FBc5!YHsolRvuxD|l5o=tOYG zJD)B<@|NTM&leaRRUrmLmh3Vpun4Sh1vLOf6hQ|OF@j5D83jhr%q3{XNhV9+XC9LM9m!ox4iNjn-UY4t2Ct1_1g&4^RA2%-g$dOD+5plg3$>O(fz$C1$VI=)L2_?E zOmIAaw&W@>2u#cZxrPTk00z3S9(1$0z|U+@Ze|1*Opf4lLO`VwY8w|U3vQ%<=C2qO zc)@K5&{7vrXn{_<;zM>+56Dr1P)C8Mr&Jge`1rXU7kq{W*GJHt0(h+}sBR!;PT>gF z!R6!R4=yW!Y5|lv1q;|RSP6_d1&|bY)Dd*Z18m$GH0sFW2$BL1I)c`~u_6sRLZm=r zjta1e0}JrwVG1A_fms%gDv*f-P|FfFf~=qjZ&`xJguwv~YOV7qa3RenKpNuU`2;S= z$z)*FP+`!#AQ!gz1TIh`0X$?Z@EhDK5rOnd5ChBbUI|zgyio|6#{|tMtbq?Ke`N$U zVHq61LFW^`BjywKXRhv79?k?>f(~AvE2F?7@MR$* zBznx4&VZIovI{hJFoNnLP;CvnV|KvP2kpBFNMCYxCm*ag0Vm<8a*#S>7I zDFDoT17e1NnIAyR2rv`0N&wVUVRe+r0`;L;HJD;R(?*~>a}+oQom~)k%>je01rI0Co z&>5kiq942x7qniV1)8cg6j?#VH0U0B_{ab#6ElED23R0D8Ps6`dSpyxe;u2WX$p{*D;Q^n) z16kw(8f4)HB@ku>E`g zHw;;zah@JG!|7rq396$6OU=V200eP7L zG=u}2Dgxb)04{_;+Yh;rq#3!v^Oc~{chKB7h(>Gz0Ovmyb7pXx88m4HI@1+A-C&{! z9ykVFOa))%#tSL4*g>s3@W3(XJT)Fr{~tVX>;YcB1iqw>8MI3Py!j1uVm5eV1!%M! z-cW$tg#g-Y=?E$_vH6P|JWdSV_V^7?w1XNLh-e4T8Gr_4@J|zfwlFb+ZluTuRTkh& zo)q5*h8F=>pIoF(arS&CCs&NQ6ea6+<3qx&YlD zpdkci@JbhQqdf((P!Uu=v4h5`z|rmk*}e%nKaUqQ*aTX&28(tFNS%ok?XXjfK>IB~ zYZAdJmH{Q+kv)bI@5E>Ki$f~ALtRT`ypOo-J`LLDYhZ`Y3qi(;U$8lLFe04;i*^Vs zXbXu3Qw3xz5`2;nOR>+S!PEh2i#jsnJmC{AkENdhas=`ru%JzbNGHH{fSaVy!#%%% zwm{ARZzP<+oF%Xua=7OV(7C9)4j>=y`2l6);t%lQo*;eDjf)>pHZFF6r9p}y8y6KA z1r~;at|f&}@`F~NfK)-IUO^|ob})j55|J-0WkNdswSy5n(9CPb^a12z(E0#gf%&kb zJt1C#jyV58J=?Q`5q7xe5BTApbC|%B5ObKIhkKp`AMSY=cDUypCNribpz&yCGo}Sh zaL1z@>+=v@@2IXKnJ5af)v5i#fDJFJxquhc~H6lsY0ZS z8_dY*;sH1@LslVyLhS}KEL}_hxfmqPE3g2TE+Aflri(eEC}+OjV1}iO8KSU5Uw5#B z)5Q*UXu7xnP8UaD>0$@F8PfrF(57HBrakNmi~D2G9O$xo&}Eb0HXI{(bvOg$Hav)G0m$N25$H-) z(BZBupdrZ!1qRRw1fW~YSV7zOSU_zFdC*1kJdTW@nJE?p7DsvTfB*|<>XKc71+>de zLxBa<^w9xzIzemMVX9OVSR9!^tt&>*B~Ba)ETA-!0a~!A!Nda^&0_&A?9PELOaa-W zp}+|q-(vuAcoe`VF0grU8Uy z0Gf{mIR~_o$^;|^UR!SiVrekhfF{gXG?+|4mRSgF7XdH%VFB?}KwJC3EE0`?n5+Pr z?*MC80gpO?jMM?e028+Y3#d=X0vb@*E`q{=*sj3@y2b^%CRKq4ymc15@@O;}aG5dD zAsOtVJQ?f)=PdB1(F#a{z?Td_s^Mt@W;;eQ=wV^zsb{QZtWjogL^?qOlx_DgDlj@T zTwrps0G~9$u-%fG11zHAV!x1@|%n}NW&N2U;T`ZUs;NlnUEtxeO zH58c?K&#IVfEI)@DlmagPXO&9R)DNpafFJ4PgMYkgC?;-Yows!EHL$;J_zW@1E@GF zOdQhfWQ3W+1{DYGZ2=#Xc>uKC#Q?lpgE33sDu*NJ&SQ23@NvXh3LpmPvKR3FWk=Ae zCD1{`FBq~ws~AAXK|+m#ZqJA6;#5GEg6z+SN`Vd;Mi>aX^B8n>0oXtg10e;j@#1&qtVQyh#6j9N@9K#dVb1zrm#&^Z~} z%o`XLLFZ@iSu+0s4HNP@YsU23xfp}NWqSoaM+SjrR&bdBcCtWID=37Z=Vg3Bx`ha7 z27v)mu!BlGMo4YI0vq5&&(l0+r*S`5`OFln|4H0*fvKxG)8+ zk^qk)fL1+#=L zNC4>vZDRv(7D!RxQs8!EDFJP!2QMSf0AF6h3*M>#I=}*AGLnf*4&dz!poIuFAfs#) z`4m_{y;v4Ut}L)N1wMgmcHjkJ{NSQG3$*_L>9_$F1s3pe0|FrJpoJ$L)xi_%)1m!F(9T7)HAW0p3{jBH1knmiju-mQGJpo)m_TPR zBtgWJK@$@UkmX0<4TPX={Gc{Fc+n1cP|=Y=;GKjSlL)*W#-za{;s~BK22H$zIRF3u z|IZHE$jl3xc!d}Vxtt8Nv=-DwRbT;|4nF7r#Dp0NS~bb!_y+8<90eH5M}f)l8Uv_= zVgjwT@&V;+&@v?u2Q=0K+R^W5kp*4|1oal^fE`9NCKb>MqAz{EimV{Uk3L_}i3^}Z zUknt$CoY)4wQ7J44uUL1RLFAN(0`UeU>A5XI;fMZ$gaSozz%kD38+T^nxzJ>r>X$+ zK&@R)$jJ$yQz0M<8yLYl6uBHh>mivGLFct_WGQeda42wswlWGl2A|Ww1MXXZRw#nn z)!@rVKv|zjg9$d23SRpK?O%Y;NZ>PL5&%kQN++MzENm_dbAn05A+%e<*=|>5vPk76X@w91v?+K!>J) zVg@uxF7PePvEkrl27w#g;GNB^pgM#ZbP7MK0*k=fbnuP@@akiM$>785c|g4cHc&+X z-UToE(??IQ3P zJnYN@-XIO?$$}ykyhR$aw;D9M%mrSR47$@DvG!*I$l)C&pkvZN-4IaS&1}UW0WuRb zg#{iEhK4KX`a}h0&|Wi8ha99r2QpG@0GfXSRS@vK&5VvbSptt{GJ--Cq|gLh!-Ea8 z0L@H+R)PSrY0kw}5 zL04cQ)`&X74p7o$W>6FbwH!c4IVpfQ14%%ZkbrfGftIX+r9gXu;5S%;bb&7Bg%}7u zK#5%eydD*N(mJTm3tFlw0lGO7c1{*(jT{50-^Jv}3>t9<<$BPK7@z}nU`M2DAP&?4 z8xC$CGB_$Ig0dPHD90fSODIBaw+3%n0 z3$hZl$`rix7_`b1u9~0wBQv8oXdO9dEio(f&?E-X5@}Wi@az!y=p+uv$w@q*C4^>7 z0+3|s$Xw!hfB~{}29m&-%fL-IHZvv>(DXIv%16*KH;N$b9H4@V&5@}DG{X<-lFNXK zG|=gDU?resiQJ%mJ)0wY4rnePlpj<;s|!FaE>IA&DX<7!;{dx1v=W>bWCLh<9xEs_ zXejV0aDtXvu!7_SAT#7T3akpepzWK;+F3yQI6#x=8cd)=s8|(*K;3X5kal5+oQMJ| zXr-lz0;__cg0O-JvUUz`kQz`@2HPYC;&CX7E3kqtnzm731>G#|puh^cN!kSxTA;xb zQ3Wx9J_kh!1y%)6`E14DtH7clsvr&$lvH3Bwg3e%3+VDu zkQONgRt3;08O_LQz@)yc|)5K|y+mMfr8gq8y~1 zf+z=RCqK$Ne6U1$hmRtuQQqOBNMV$BK~J(lTN@+;$=BdR9-vplx`DRtfh#)D(p^wR z2O5)Q1ywREpml640*@D5~0cc?mXsHpaBj~WL3{Y-M0Tm$N z^+22gGupwnMu3+Hfz|_Y!GvPKON2n{fw%=`LR2MyiWTsBARd@d26%}O=#)cV=n|nn z4B(|bkkuKij(-@kK>lOZWP&XS0*OGD2*DNvfkYrngkTGTKq8POLf`{CA!~~rr%XQ# zTAcF-wnoS#3nC%#f(O1x2(PKm`yk465!yJF0j=$NEB24|FQQ zk)aS&V1XL?jth<*fh_S0B#r~=qLdl1!l+p|CtLx=VF5N@q$jj0WJIFRp3+LM$!ki2E62y z&++W`E0^j(l^(wWpC8=kA3!F9Re;8&R2UTa`MDjzf*{usjQr>HjrF94YgR)G}x zU_p@UCP0rt2c1;~>*O;)`sm;VoJnKEglCg z4`I+?dN9o!+B#tZtxKo|4Fi}l2{?lKjXYUk4d9LSjtvV>GYDKR1daPCFgk))or4Mk zM<$4N#{~;dGdSuwUH~b3nhe^+4YEO|(2=POGMoUK*mK?BYL-{vxc&kF)~o?95rm^>Uo2eE=W z3ZNnvMBBiZD1nCyY(PaWc+a85Np@P+KzVQ>_2WD)341LbkhSORnp7?%PkXvZVy zyaV_uJ@EP=PRMbbpbb~BRXpJH5IYzZI0YUoW(4)|L9Jczum)&56lh@xDE!ZW>cI)1 zdB;0*Krt|d5fTMHpizlCb5NpSHb@z0umcn*7icucia`f7D4+u=*TD^4J;ygwk1>D?T*g8LHi3Wo5EG!37AUD$F=&F? zyo{jqrO6F4K~s?(L}`K7`m=)#5(TaGw_*?jRX`v)QD{GzQI|msa)B49FV3jIX~iH3 z8iR0@%mTGx7il!VTpF z8_KCD1fHf)VNej_=f)H3>ZHfI{4kGo`Qabynxw}%XiqVy%mHPe;h5KXhDoe{M4H5d zjqiX~>4L`FK;ymOW2nKqG@z4ste}Bz$X*Rl0|2~L12l=ps=>qqD(<1>5NOwzE@Bdo z4RmPR>`A@mN6vkQkGA&~4(NQw6{y#GrMgpxzB=B$gF4P6XN^ z!U+;Vp2P#~=mGE81P#=IIz}L?!DB<9bE(0Tc*w&_2_XG4p#C4I{!0NhuECRdyr2;x zGbYd^9-jiJ-vwId3!*_QFCor>bilxqc&wm90c}7=*?{(EfG6=3Ks#C$_yv~2*6M>D zqaXl2PaN4%Oe*Hg0wBFIps^>=ZNE7Rf{u)iuo*m75Dz+o$Ev|315%1QgU1S=!2=D= z3PFz17J#){K>Kf@GkDWk7zIIXBhWP+bao9dBY0{OJaZ|qKMkZDbh0%IXcagcWPuK7H4OL$UsjN; zj=&*rMbOe6cF;I1$T-lXENH7PCumX@+!zC|%;^BFrvaS@#OV0p$_WNVE(I1x3D8_T zXu^X_V6zX%H1PbZ1{3JeH}GO0(ApYS(C{`3=rk7>$eJL~KpPvV?Zg5~!2ys-W6%^Z zJ80!FSYHZgqZp{c3)YtdQ35(;4}78r3uvr71Y}=?BCi4qD7Hb3UUmgmP(2U2##(`0 zfz`3$>InvcC!oeEuOjG%0&WF11wO|KAkhN`Al;y0Tu|64f|fw>Lssd4&l&~W+Q8_z z;OYs`F?*o1;S@mYxmf#nRK5mYA77y_uR48D~UbfPM(1rItY0Cda-D8)fA zxT&rHZn*PgLjo7V z6<86Y&^wk0a?canT-QQK4_f>=pIz786pMV-pK*!27qQIKs)fkhnhgn4g@7a@Fa|Z0u!hN z0BKSHop2#=A2gEzy5$7aAO~HB;|S{Jfu{UG>ohkU+DnplMrhJ_VhN16mxXkfq4x2-*({%8j67V8y_<-GIhap!2w( za+3pWgE;ssAdnPv9+y*r4YDy*Q38A(5J(C-j|<7dpjzexICFAj3ABrYR(61S8eksy zuptl7QZUe@Edy-ufzJSC*1q1lf8XnL{2qf&uJLn)VP*j4>0R~+)1ufJ;WiDu`9Y_jtR47Ons89zT z^8@lIGpLyW-msyNrNAU`M-ntF2y&w14U}7{9x#F?Cg8VHfp$zVf$ka;m<@aT9;j3W zm!3Hapo1hq3;K9Ky-J517Gg@|##7gK`9$X?t#gPEwNr-RT8pfx;i!OnU+r0A(Nu z3$vNFgb~y-AMEY4C5$;)u$><{3Tz4-j!PIFSwQFX+&%=p{E^jh31bfEq)!D-Q1b^= z+(0(|AUD&vKv&Pen`zKSn-8QN25qzjfL2$5%*p~Ut>OhOLIOAApsltD1wI8Xh&;6A z76Uq1%MpBUfE5F@p(fzSqA2LNR1QQ=pc&6@w*cNYN6~E(4EV+CoMz*}z9=!iQ(A8SOx$wAPHE z3lkZw8I3>z%;?Bq&1l4}z^Kn?1R9>zXEcEf&ssA|fW~I68KpoievrHb*h*NE*JqT1 z4A5FL$|*1^a9T4efCp$ncM<4-lq-Om-jD%Wke9f?xMCK?yt%s)RI3s|@ic`Y0{P2`V7R=rbx zjt1Ze2d|k|gj_=is=@_9i-ABVJ)mAg2$BMo<&K~O9~ePrJ;1La1WAFjzu96_f*fRBb`W>6FZ*YhALQ0oBPk^n7n0cL1@JN}&~O_QsGk8ouq|GJ)p7aH0}P-}3ajH?@Oc-kjvKy#L^2d$ zEYR`_rc5)Y0#K4e#-Nd-0?1q&C_ylR_C>KNFetDUx`NLugPQ<4cLcWDb;mac(A^sv zOnbgLfY)%agZlK~GhR$UlbWD$Bk%y84)`b&$3Nc=FbF`Fx-x^;>w?zcGJs0Mdiabv zWH%MWhb5r##!TpKEeO|w+**NfD%4?*d57;-I1_^wBTVcp#TYc&>9)gReEMjHK4ITM~N)(I3sARhy~;p zkfXRk43MKhE9AIAD=Aq)1C1gOM{z(L1v;PxboPn@i@;B32JSBCaXp|EfwZs|v~8RT zG)e(Ja@jOV6(T4V`4 z$OJ7Pl>wc93}Q%t##O*O>RmueVHhOk04=MSHJDt$$0T!r2CkSvQYHfTLDQ!-pwoUe zm})>_&aBJe0a`%m$O;}b1dYgmWWg8moeAmj{{;G6-CaX5eQ63OoYco*-L5E3Co3=YZG(yHcA;fdjNIgHM4^mw~~tp}xq9fdS-o zkT==O%$Q8TgLEJZKfo;npL-6vClho`IB3wF0kX)N8J6fiK?mtkr(r=8gbY>;!k`++ zia{6>Ti`~EBLjFKi~&?5SuqGWGC^7dpvyrRK|}Al3=AM=F)A?XGYD8Sg2&XsjTz9X zIE>k_wL75WioqcPI-ZRML0f^-@eN3(B@%q} z8kaRA=n5Y$M}acXjn|BhOj)2djvm}>9Z;Asfg1#zieQQhGTmdvpsB#9z+=Ur1)Au! zVqk;tKqH2XRt&6;OpxXSXr~XOBWqR`*sq|~O^o^stk&R@nsgb2Az2Bu)SL;V!chR^ zcLs(c&|WO?A-cQZ|Y|adhb{5cFH+YENiXj}N9}_FEIqJFb zGAMvAGIu=6;Ks`cWj_V8nRwZG*g(U`3ZNT?8Nf@UK({V3D{u&WVFtMXbW|&(ZUNou zp~&e7%C?-K=Ar_#0++xvup$G<5+!DCkPa2d##+$EUC1z{0@TSI+zKq(%-|t(1%69r z&>k{=OVAcDCkAt74zN2wH$g!+;*@~;@kky9Ia8b20zC3AV9A^T+8BkTn}r(^q#cY- z3<}J(psiR6eCEs*3Vcoskr3xGLX`+8usAV-Y-9on@PQ_8Se%$Z0uU9uW+BXl?yuqi zHLZ}w5J2Pmpn*52?Y@a36MGon3#Z~q=JZoBuGpWCdQ#Cr68gp1rn2jih=KZBdKL~py>!& z%kD`dNCecfgRm%R*+EP|ZrQzQbb++&J~V}gnE_;JF4mUahNdI5ZrMQ`iQKXS zITGBm138k2mK|0{5^mW+!k*Zc9mrAOmL14ZB(&^EZR_9rehe)|ocRP20i_5Ci;@%p zF#$P6T>0b%Nf9?bxe?RWpYiz^ty2WVk;o|mza2})!JUB0*2%4tn1RDq$oCisP2In0?*E_L*u61B$P?Q86a0{-CBq4PlsIKG& z>ymY_3yd#7`bqx<}+#Mkd+9SmSJBc4I47zy)bRa)Jv0b)X7+toT zBy`!Pf)8<|xXbp1)Gk}cv83qlej>{hSx@;f~&@Nlgh;PDC2NK*r2mcWZJ1t!qE4s@dX7icdDD`>Csw;X=KQ53x;C3G93OGJqAz?Wk;>m{TARD0zrCV7TMM2|t zpq?7iXbouREcn7dX3$YZETDk{(Agx+pq4V|h(}h)5s#p~g5Y5j4JHrRbUHz$LSv;}Q6249^V zqrj!WslmkI$e8U|Q3xuRK_eTWk*EYm(7_eYFo?1M?+X?N?Ezy3ZLX{U`&T>*yv_tPDgk1ufK-||UI967CV1bqiJ~Y- z%t8@#UA8D_3n?>bhocNgw+54n8Iyt|X!oT!_|)7i1rRL(Pg39`Iwe5s_?aCwvIJI6 z2i>g)KA{^Nb`6XQT#ip*c7X;Fk#56g04+Ua0i6s98tnsL3kTY@O={DwXX{C{rrnM$ zAQ4d04#J|OX$LU@xoJ0LttX^uH)E|QF-^NaTTartX$Ns6a?=jvNO02*Fodt#e*AV-0lb|6QQ(6l2pMLd3c3N1yvc?A*yr3eU%k`w_k0Xao{dF2I35kFpe z5tAZzygo(i6ajH0a*6;s5}YDHjwB*QV09$n6afi)Vp9ajQQ#B-auf|y#D?{t6IBwR z(+w#Ktd2W2fYvsMLSQdPW&R0VM2+EeSx50+$3JN0CqxkeVWv z+`NdEB2L@@iGWfBghfe;fS7=sA}-trgrtZoHv)-C5mRnnq;-mbI1)KUfE)=<5gpAG|mfOp3C6~8sh=2-~!D6LiSC7W&lAGiQu(ZpjF+Vd(#xM6gk1;yr3QJ zAhn;;YG&0vX(bpL)sU_yn=gn!!;gOA&e*YY9l9grcwl{4&-r@KG>F z0Ywo7Asjp(v^#1e$gPo$(D)4{;J?p)zR1;0kC-J|Af49}$~O3gFWS z94!=?L8JZP@p55MG(p$pgI4Y_C_q;3iGWs_Lhjpj1TEWRP=L$;h$=9FE^!8r@q^av zfi7tRot7pB+Vhm90E&3383ZO^=uhs)y)&vrl01csLDS(IeK_hvf z3!6aVlAx%}QUHzXD=;ZAfCukE7nB`f$Wr8Tw1D2C22u$b=?CqY1P}E)8Yn`pQUl3J zgSW?kD;aVZFZ<>VDWJ7d6d@*p|TL0?=7f?zoX1<*lhU^xZIlmr*p zSD>3(8O@kFK)Z{;seuVJcm+Obi9Z^v(3l&Vv3e5}m5^Ay z1!6*D^#ODl7HCNxbaNair&d7rF_eS0e_1ht6}*I_Y1P6Pt2*aUA&NdT1% z0?_QO0NR)F08y53D1rtSSwQ!!F@cVQgq9_sF>mlpAZY6$V>ajy@9JI0yx@itHX~)E14!%BHm!TXozY20%17sQQ6KD)0pJocW#6SVO+EM@% zQ=pBoU>^L2DsU_?I&wf`ff=;XRYrl)kr{L(4S1+u0kR1bw0wsZbifGcoG;LE!Qfr- zprx}cpi>Rm6~Id`bwI~fJA$M^gZ><#b+(`@Ji(@eRx5%|!2#`b04)L&XatqX;NfcU zHQHdiLHFFTnK6MT3OFD$0pPX6OrSNs0u9NKDFX0H{#a1at-t{i1Ra11I&#~JAr9;x z&>14&3k_gXd>~(WfYKln$a0Vt(BuZ_JQ^#8c(4{81upQ~UeJ0+Ht2=c;A2!hKo?Gd zrZ#vXcOHSy8|74BaO}8nh(X|`I%uj6wAqANfm4AY+mX2pbV~svw*s#MgX0WjC7>x2 zUbqtQS*08bjGmAqPr*KNcU*Dd5CdqX5$I$Ueu3xup!op~MFH5!stN-9+;og(ksQ!r zw9KH43A&+zJqI+Q16pDOiDi&95wYArYAnC<#1hM|Ji#ktNr~lGo{H3rWf7!U7RkdJ z%Oa2^$lzE8D_Ix>S6+q&|C*8PE&E`yFjXaHX%1{Pt-QUEOgWl~@k z=#B<0ZDavmj>HDN#vFEtBKUq3mMqYuEA&(Z0|j=0cF-N`pnH~?6hUXxf)8W|A1ehq z93Hy1ltqC>pOM3wQ2=zOiK9stWHyx(SylkFDThUY3oK>@IzT|5(F8OL%A(6)r3fm+ zK{I>Pa$@LQOMXw+=3=-CiB92Uo{0c0P*;KGXuscBE%A(I80$OSd4k!lD9c!RFN30mY z>mlK5V_Eb;YhyvD{6qG>2=H^yU}55goKbjy5#^9V2hf^G&{Qg;BL`@wJ(vn$t_K|- z04fVX4OP%GThOx32n9wEr2sk_P{D~I5VG(F8Zk_ch&?lmn#>BIQ*7 z^BsIGh6;lMCqFl6fj0+ask9l>1V#l$(Cp_FMg>rV7_w0bJeSVs)X><}(lKGdfrfg} zEe3)LjG7Dv%}AoHpe;)ZLf~yN3?Lem6+rztGp04*;~hY2PQi!VZ2;NAZN{_(OgkQ^ z%mSUv%&5U+173N}W5%=tw0fBbw0Q!2m;&@R>^&e+UPq2BP-()z%{_f&rHmhI-61LC z&sukKQU*)O5K9;h^`i-cm?DGHguy!G5=I@F34@NULC~o(c-s6RX(C#K&7`&lKY+Hq zFe`wX^i~Y8Hvfl6l3RlxK#Q%I6)0=--+6YNL13B&=++OU)*usdoBs{65_p>*tOR>& z@Xxd3NNxU3@Y0}xYx9G;Zg^rDBuzvtH<234PaUwd`JXzF9LrA~6e(}>BVw5YDV9-s zc8FN!Kx*@Ym5iKNZXq?6pJ9vTXQapSvmqSIBdm?raKQ)C#%sCYLrxoyXQ(y)7mT*? zK-@iV<|KA?R2QHZvxox`h%$EnyrWw~hCV8FAz#YR0?(>JgM|!`4fUX5AV<)iW){$xIA{W+40Ea^dc!&UUESWHP#DZBt7&Ndg1oBdVg2mM>R3c!}(!^Zp=LHmEf_Y{LR1%qQ9e3B<9)#`=2RfAubasybY;ps9q6z2@NstVPhRc9P-ZYs6Kr7C{ zLm1F2Bx4l77au1;s1(q4ZfNAQz|Q%CL_2u*6lh!teAlD{DB=~kKtqa1(ar*ncCeRb z`hw(K6hYqR0mVG{0%h>YrH=IqywI3u(O@c3U=~;pi+Mf;7EnZ2fX_3M$N}9S!2(*| zUjw>!Qj-~an!Nz%-XzdDW-N{xS)l1t(1aE!iuobCsgQ(0{SMG1I{38G2GDV?kSGRw z8WF`Tps4KuNkgNUMS}@j6hB5BNe`Zbb2M>e5qP5txgi#mwU|JgeL)wTv4D;dV}WjM z0Z)!IgQmp62it%rfxw5^fEGn4fKRl6h=ESA0i9z8xkL;i28wG?9tIs*1kT^!MFrrz z3$lX~Dh8UO2i;M{X0vfbq0$uj@XBKFyi~uMf@`1L>@Ib;FzM~qX2<8g#A^xC!*t}*;ED8*c zcR+`$DljG1C131xuPV!|0jqZYTbpR;eIQB4R zfyQJRG?;q8yW&~F*;;{7;D{qA7w~{~K!VO-Wq171bQp9-0XXZkDuAwY;Sg9M2T~*g z-qi>?v=|ib;Nyo46j(qzm3Ae9Etvqa1bkfV1h6I0!-$y#W*CF?BaR_<>}WpB02)OH z&A4)bjt*1cg<7HlK2?APd@c*>QrEH)XoyP*$(4^ z_J?K(Tn1g)&1l774~k0`1qOlLHD*kp<8Q%vU!Y+=qrd@Ckb79biSku83^mMRiG#xORF^#zL z;3|4L*gI^~!DVJ9fqL*pdBhqVMhzwd$0p=6?-(3GEoS)qoudV0Y7Nv(fu1)FUgZTo z&&~jHh!I#$7`!hQEC)W&P6OQA2Hz5|C<0zH36=vNfU5vH&QO6JtWOlYCl)LRUT-I% z2%cjD%ZY(cwFS$8*W3v}4kZH1iGz>31IvNe-9e|^z;Y7c#WY|!(Aqoj`b*GBCJx}W zbxg2RYe5P??QUjJqX)bb7IJDWk~nBh9TRN-Jd!wQJslHl6(y25s9DbhnXQE^;)0qF zT1UqOTSbYa9@Oe%0yP3)%jY2K!F!3B9iYbyF+pO;jL86W7!H#_7ieKm17y(+EerXc zCr4;s+0Ox40=nZ}0d(C2XfB<4mHjRB%>A&I^2&a}>m!KDegcTI=E)IyRQ7v7A%&~5 z{{~&K0bdB~$N`y32Q}dpK`naFmhUXk964wO86&6>$_zRcA0!O!9)cJG=NB@#Qgm(pOD0KgAT1YHvb=~IJN_d)In zD*>6R!BhfTW&pl=0Ca%?J7^3WbhQ}xpg0XC574nmJdlgPKx;RcG?{E5ZFWx3O#)fq ztdD%B82CIr4uOY@89}GZgSz)Mpq>--P)7J-I?zgL(1JDi#U3EXfNuU^Hh`Zy4_dSh zT1#gD-|7s$vdqAoS;6taqSK&;DRi&CLY4xrzzh*k$Abra=P;;4pui`vK@_~9Ux7>D zJLsH<2GG8FCJm+r@L7`#pm8S95=Ayp7Xoy6JxG5FXd^U(pL>z zG=so-(ADsu!}~5QIt^R?4?o0uD>D-_WI_7_hHND^6$U2;MNTJ3Ux^*Gl2U=GC4d*S zs*D9hgOBC{T@dcX5Uj*54N|JWSPME#3?#rIt;ppBT3f>G#1OQ$rWSPfhqNLyXthr( zc=GAVFKD=`J|GJuXE1X;r7c!2>FIn1E)S75riBj_?yHcjRTMMecSP38ba zCQ!(*fz~C1hFlc5oEShiO|m%}Ky)!d`I^iIN=zUf9yLmg3QQp&riBwjP!Z??98G2i zMbJ_{gry2u3Y<<1P&*aaKnF!IBk?tv1t6wrAWV}$n5FaBWR(jBZC5)0xPVy%Pg>L z5hz%}_nn*pb@|x^)^vg|nPCB40|U~^06O}O1$1Qt=#Vycfu)PUR}iu&unQ~)F+sPo zfUbnhf;9M8K*y{@dO6_E1L&|+7RLqqE;E2`%mAIKA)f{Ayl61RfO>h3a~QJ}I0c@8 zu9wkZ3IJa#vxG5AfeR)S0y==s5p-uPx4=_~stC|XiX-UGSRR;A0=SR2hY^&GR)Ty0 z-nhV`$utLi8V3uA3n~y;G?^e*#zI5{vJ_Y}p;yL2L?pl>kSk*$A_`y;$d$1yjuu&t zNA_N3PyovbJPQMNOBF!k0_~uyg+K?bu{eSF!_wtT_;zrPn=>%wzjUae50d%MX$Qc(Pb@yl@ z&|n%(1fwOvXd-BVCIV3FjZuM71-#M^R3d}VjE#aEMH{Wa=-9IvbWnAS0;4076+;q4 zJQ*}F!~i*^){!L(RQ7`o*8#CIKsCD~3+VQpml9@7BFx}%Z&0&9gGt1(9@;nqEueJ# z|NsAgcJLYSpvo0uB(nmjF9FkUkz&@uPm86pNyYtfM=fwK+R;=1 zO5CHV0MaxZEel3+S@4*diKiZX1RiJ_2Wi^f1+tyW1GL8iG>rqEgbx6nHV&#Uz`O{M z5=YSb1Qzh52otCn*I;51cm>&%0h%^~T~7ttfy@dzxEb93h3|HT&gm)g!zbIw^h&nRbh1Z_QoPT<3Lo`JgT5E%~8WISwc7czaX0O|&T4kZJvItNYNgH%F} zJOf{v1NMOpXi)*^&}Q&7A*k=c3_1dh3)Djc)o+{%T%e1>L05d9KM206hD(7HG^7EZ zLI>@r<_7gBxj};;ps@tdrE**fJRmV1*c=-80D91Y(4a5^btW}H6MoPtkr`w;bjKBF zDFJAUxR9a&ild`O|q!wA~M1)8Rs3%ZPm z88$<69J;asG#(3!VsKB5S%C>uF@k~yRD%nA>jGa(0J;~L88i_G-3$jh=#2$*cLFo$ za!JshHCE8L3V7R`k0Wf!g+NvoI2IA-4#JmRfTTdN2a*B>A2VqGIVAc(QlRKVNI~K+ z0CZY6=m<(jnJn;j8fHx<@EL~^id+hyJ?#oy3e2E!09e?Ab}2xwX@`h|ECSB~LpHiA zfKHo)*#bJeT7elf&(8!oycBw67|23s#DNblWq^#mA`62KFJ*uXy&?;P4liYZjJzTX zgSu(p*;hdYWMR_5i<61QS-=2l?VWpD-$_OgICbb33^xO5bBzX^z|z$)-h zAL0hkCRapZYXV*|Yyvtv6I958cG9vz$~Ja0CJspH2qM8n9N3W{kAcb|&`dw0Xql`S zI6!f90d$oVKR3}i|3cqc@NgRGJ-2tX=(&Lnh4kFsfL#X4`4ARKIUnLJQxj`}wIjsP2wx#wc4%pDqvVh!CoYArX zJ|I`1z~~4`+#|g#=we|KhV1IWy=`DJBgj3o|AaM<&pmJ9s*kU4cX3GH8Ml zyzE5ao&xwR?m@N*fNs4P5$I9}4IY5z+y%~Sfm&FgN%IpRcb#F# z68NYEzMh@ijOh$WXbbpuV3jO^OUa<&&jpO&bK_aen0lBT*MJT`2Q5eeb>S4)AcFv4 z$1+QpGkpP#M0YSj&dT4y1fN<1-=GG}UF0zCoVIAm#N=1Gq z2L*mmdyom#Ck359@P`X@L;@4&HoG-Uj%%6@GJsCF2g?cwJdy{6k&2?A;~tO%==>rM z(9P090+T#IGN6ti6X-a4&{1WeklF`6$lfMPVA)jAJf8@t;miP9jSad(-~tnPLGEZ; z&>V_s;pu2vfZpvqS}r`JMOv7RH0uYux0VUi%VY(eZ^8n(+!b`47>gBy8RVW*3kYQc zx-Atn)Cao!LXk~@6?B@352!N?!wPJ?3=l;DpnG6J3tGS{Q9!rhvV#_QfO#o zGT`|~&?##mRtCsrAPo!xeJemGFMup!1(oewAW;@YZUyiSv!E-NxXqX(;Kqn#f!3IT zi~+F<5XSU_jRCs_bov?iD%cVx2L&FGcR{0|pgVLK%$PJBLAx0yIx6yl7!xKsD)K3? zD)539U9o~H6!2aS9>*yYVSeQS4Q8-{&UoQhU5GJ&o`1XZC679C=6 zd46xkq65(RJwD6l&oS#*d&fgNf)Gw2>! zxbe)6$H2xzC7HNErV2vtqX+GVU{c_4+_LBpgTRN`j3Bo&a)T;h&^8k$(ETBxYiKyl zm_W;RLHl5xf_T8$`M(@_+)%5wyS=bP9tsbSR5SmjQHf zIgG%yg2RDZ5!Cd69N8qq&pk*>iWk2RGYEVe4kg8lAI^}H;>{0d z>?OqyxL;{iQXoQ;w31?wCXN-Wk1z=Q91e+N%}f_a;@B|L1$*My0rxAd5(gqQNlP4~ zeUG8h_t?;U6uBSz7vA1H0FnSz29)g%lJgT3xXh6kFha zrBy+J2u;!oib0w<7Q8&lAkYBn1c4?ahjM4+%{^%1_;3$L;@AN9E3Fa-A~c6Z;<&T@ z7=u95a7Y|~R=Yt;j)paE*h`K#aKF+jaUeo-SR{@;caJd$bPR{Y@!%FTaXh(&BXOL8 z`;}IS0}-0TB60k=dYnOE!f;3&J=feJCC7wo?$}F?Dc4|rrB&iUgyyhF94ls@U=Wxx z91_Qq9uG+3c+um5J#p-S`;}IS0}-0TB5^c)JHa3@V>l#^4R4`|W6N6{iDLrXue3@W zh|nAsiQ~cklMDhgheP53UD*ttIsskTjCJbd1Kh8)N*svL92SY=OWP?1f!V_%aWr^A zs+AcHUf8RZmUft5X_Yt-p*buP$ChcQ7zE}Fhs5!sADTGc^y5ezN8o;?RpLN|=CDW{ zcQ%}25STw46332Z(8RH48IHv92JTl{B@RSr4vWOm@bnaez{25>I2z7D6GzKA9EoEB z+^@7s9Ei{y7K!7)hf@p!i-$wv`0@&xIDWjskvJ~E{YtCEfe6iEkvKl=JR+t|G3<4{ML*jVR;R7i--gNk2FFC%z{YtCEfe6iEkvLW?J;NZdW;i5{1#_T@ zW62yGiDL)cue3@Wh|nAsiQ~%4GYkT2heP5x@dBDS&b+{pIG(`$N~^?y2+d)UIDX7O z%OJ3EI3$jqIlho;Wx^a^?A1!g0+?TEl{gTgIV=*#f(vIE1U3(c#Bt|5G;usQk0Wtx zfcuqJi31Uu!y<94_;r>+VC!&595+5e6UUuTI1K6UPI%Uul&% z5TQ9N632-*7Z?O~4Tr?ha6JH$I9jd;U{4%3;C`i5;y{Gvut*$tS}rmO>=_P;<3Up( zByl`x3dEi`-oX7ztHgl_&0&!^4y?b(Ah2&ZB#s+%po!zo92|+`0^F~(N*svL92SYA z=gLI}fkVR~ar9h0wMdJ9d=@Ns$k>QXy9?TDdwmIepVQ+IZY=-%jR*3@@YD7MGgf9 z1<>783LH=|1!l($kn5!sn7~(sL66X11G>tE19Wc}=(aFs&>421$I zufPepEi6TWS%DLBTUZ9@;CIl~#-I}eK?mMHVE|to24cPdF+)HHzCQxp78U_IBRWD6 zbUtzqW0nFp_(Cvd4JIE&&>_oH7_$_3U_t?kyb8?Vo5Xm*7lJWsFoh`cDKI;NZW7~z z2!ZY;1Dyun!)OjZZT$^H7U((_W=*CkNFoARAT^Ln!LhrE`pAN2P*+x|HTZs z>Wf)}NkBnB;B5yZ1NTGdIsTxl8enHNfzR=0bmYkb9s1~~04B7hl8wNRIiSm-c|nH>LKG>2u47~LmQrBhV`5?k zor&bgXvJX6!veb3kO9PkoU$aaHxqPR5)0@yN6>j&pra%?K=%N!3QUg!$?$-Vjs!6{ zK$kBtDX@dC(gq#&Xp$xH-4Jq&H|R`Qkn0>79AALkKHV8|JQMhQMbKGE9J&mkyR;#P zLoq__1Rv3)!6X1WRT2~xTnd~}J3)7RGifkMfR2v@pIQmJ?vu&UE=z&Q(LPJyb`t2^ zNRWiU`Xs0ez&-@|3w$h+u_CVmqoV}qCU-_hl`KVm1#k$1?y=+pC0{1c!Cff|OrWE> zG8{pds|qTB4}Jul;m8EKdk>n!Ko)5-C73e@K;*$kaq)sK(H0U|Xs!VAw7^O5)s`P1 z=X^h5W)g**=Xrn;dY-2OqoYWcBD3Qi2GHGz3M`OQCV8?z*DFE}nPk*wTmZUHlM!^N z7dRFiIl%X3FgdM^DllgTUDX82M7j(N;24<3n5D?Az^%Y##Q;{M z&#;KmnsEvvCW+@0Mh$)CFfX?om!3dJsz?dbl5_ClA z0Z5T~4_bCVKsv#n0d&Y1Gw9GY0nkDIpi3ITJPAl9g^&u2jvS!e3%+TS!Hh{pfzgq< z4005|858INL8cN#=&c;w9-y)wboibP$QVuq2FH#IhZqE2sza`=u>jRI z3Jlqf3}t3a93UmU3Ji`jkd=V$T;YW)0bf|ap}^<~sxTDzz>ar!TyfzLgCaketH3Yt zTpv^yaVQEXFoW{F3WI_GKlc!d-|M8tZ-)<-`0elkRmR}xv|=DGemlUG_0WvphtT{B zYI`v#FsLvnFn}(IYhi@Y9gG5-Y!pG~^fH<;O@IojC@?r`WC{ETS6~1gqo@KZsz8S% zB5^pf6hY?-GiWkvm@_jt3V^C~1!hn|57G*{avUVg0Xaw!)IdWLR$u@X9a9(`B@|f| zSQQvRi7^XY0zj_%b`(%#Q(!}ggKtcS7{{)_jt~dmmJYgui9vw@tTVw8bX7Ws0t2YR z%u)a`9x!CV90R&49hA{Pca1B67)WxUtJ1k(`aleX94HJlnG?X5^?~dGT|w?B0lEhd za%nomGO+!iaNtp3gxsKkBF+J-r6HH5Ba1^qVg@w$=RoNNpc-St)nnkZI>2GI1S+!v zO0NM$6u3>Rz{t4U;L*S;PB8wyF@)JuJNK6AWfdpuXc;eCtP`wYnI*LhwOW=n;$dNqYVgSib(Rd&n@JRsx2 z4N;CPMP3D71zueS2FHf_BCt*1z;R;lFlW}_Vc-Uv?f3#@7}zFe4JHN91&JWzR3Im# z@`3Usvm^AfrIVnh7;Bv}gX0BIHSGw>cZ>=wp#G1d1gP!nyxxx30b1Q&vAybqA-+cwn zqB0QG++dR(AUESMfVzF4%mls!i&+7D06M5A#Na3ZY6A0tIw%4VMf?hU7c1tRNdO!kM zj%!vPWN=h)+_35(gTQHXP$P{6)Tw2Ke!0o62O%$MJH@gBG_*&>JP)26}m#?hQG$06Sb~##PWhn@P3TII9%BsK#@`$34 z0w+|L5J(D?8dw#$z*52rTu>=tQ2eqeKvJ270t={P1ipcKnZ2WeBa6TrRd6GnMUx49 zIT5If1WF|eJYc0D!$9#OpvbGh4JlbcCcuO_6!{dmAvdBS2`jKDaDy&~V*yn;0xh#a z#i$6V&%_V9*E#`Y9;kW554ju-tO{zN0s}}VsPbI1_8@>=7fao)j|gD$I!YM)Ru;Iioy56GJz_@5J)s3NCgI61{*#W zMkWSkMs5aB$;1e1(1H&rW(MbR1_c&yzXEh!ArtuGLC|%DpoT0ci7|74%6~_WEXOnZ z4>Ab+4N+in)W~u?AtkWGMuEvu1k~Ku$P(C|2d?hHbuN=8lL#mjKqD(`ppg}JutJa} zkV^wOKn-3{)e6!N4I3UNZe|D2DZhoh3_Q%-Fo%K;R@MMrhzCBLI7Wdj$vVwyBJu#xpp`K*IqC7_tO5FJx4JvK`-mZ2TLdzyP|s zkH?Wwk=OCh{)3>~Xn7RCeP2F-aI%GAOV*G8Q78p)9M&rog1YX2qZnp(GWUK%pi9@-UMwgA8aiLzh7oJU#&mJ}U+} z1ttX!D+YN`kbyABRyjxnfP3n?4Dz7sF+le~Xn>;2ia`_PL`SH5wLlzwMlEYb1&~e! zMJ`9seZX8Gmx8VuV=Q!2=B)Dr@^lou4O3QUfm{wIHyE)5ECT?SCy#{^QvufPQE%UCfeD=;bWTQR6GIe=WEjN%6s(B%~h z0#*#V5I;zQ20yGAK%HdE(7E;t7(p4sz_FpBp`ijE=S<){g&OM`ObZwl*&G=Z*&P`b*cI520vRmD z;mDxK$>iY3sKBYf0g?pAD_9D8als7^1t!qNCVyBIm>ikRn0~N0E?`vTW^z#A2B`(b z)DM;{1#YnOKw-t;$ZW>Mz{A81@(B;CdV0UAg^#_De!=mf_$(5G-kpC>eb!> z1;++<(AcCRA4nto(h<-NCLpc+P+cI^TR^1@gBjBXc92^Hm>d)YKz4xKvVlEIK>(~2 zbVch7Mnyp;2L(ZpER*8_@Et6mLtw!Q6qp=uFoSIr0@*0c{{%CJ`nF1rd-EkWDw3vlK+YNrc5A|g#zfh7G{A%YM?$8Xb6%8bZ@r}hzDwev4EP~4hoK61dVgBgDV-(Xod*HY!8Sld>}jt2v3F?WE!aI0}XzF+6NL@ zpxbaEEbtZJ5uhRfh80*em?S`i47g1TY9KOr!yCRJNkvWt7SOO-254ZF1ym*+nF%gj z!EFpK1r|`MiUAqHp~wxXXcH8;AhjmQRsrxe2rM84B94q%pg|)fQ@9cJr2?lTqvMvg z6AS|T)j(E)6@%Rdx@4RM)RN8tw|GF;<<@}A12qU)KnbZpfd@n}fCPCI`4m_{_Zom& zOnhJ;^MJL198v*dfi8RpI|S6^e#Fcu3d+}@m}W%WH!lMUc+gGq44~_8nL$_2g4*+p zplquG;c0;G5;kMffdwUqR$zi(B@e#7j|F55DB2knP;YGq-L?z58o-RnMuAa*1?)@_ z5DR>bI%r&-4RpVdgd*ssb~ZE62sk7?FoIGHsIv)951N3C-hJaPLf(vL+gfcjCfU0V+W4R!XMQMZrBPbGMK!Oa4JRph% z+?(YA4KFi-!aD`j=QU%>Pyq9C6nH^l#RsA|6!{%l6!^Ur1wfPn_!a;~K?OzyKG3X% zpd({;mLr3LV0Iy>zsIP-RG=uNz^EVuYUc8SZuJ#*WKj_IRuoZS1ThpuKs6w!@yn>e zRG}!Uz^EW<##F<@$PKFVgcL*_H_SW9Ah1INbnC8ysDhBdtz>R)1x8p)>>@Lha6J>K zZH?RlV>Dv|-8*-HAxo2i0eqQ~1n4d$W>6lm0E>x1M)So$4OY;QErS8*#%4yxTMStO zS5g(36&M|FGh_+0c!7sI7#(%81Wq`CMr=WSZ6zXamZ4V(BMB=oD6m^GM1bbutQaC8eJ()-K~TpB z+C>sl5QJPQ4E8p(d8xnv_Oq~pFi52js2$3oD54;&Ad&?hpgsc{%VA;wb*8`*7b*<= z+!I+C*+JQM0b{lzQnsA~O6Lq#46_*(7!?=NYBla;GPAeBQL1f zXLLLQ7Kl&)3&cQ5m;{iYML;)_I?8}%2N)eMFk}hrFaqgk$PzdNDc>0#k$eD}k$J)Z za@7llEMz}`CL+&(T<|>F@d}6rxr7a564>GvkUx3Nn84nExTOawGyxPxY-UWL`4uwkw1wa)nqoV?-E@gBSghZ_a@Xfi{GTFjXZK&n6^nv4pp=FFf9pGASS22@ZmXfg{ZvMDes zut5e9*_?Pg&6zzwO#)43576b|kO54P0RpXHz9uuI#AgRh$1y6fI|+1}GlMb|qb73% zX#N$fg9D^Pq7}^7WM%*rCJG#&VLwI%4kv|9(EJ&L0;48#2HdTj3XBSz=F9~kjiA{` zMg=a=3>pKdz=XM#0W!8}&fLHVQU>aGGb-?aXVDlGxD|L{J_q%@85MZVnZXgr>m=9- zp6mkKID--F4Um4YBaytt2P*x|nL&e`3VcqYo#xDtQB6(e6^vk?fHZ-<2lp8VXjW5! zA3RUSsK5{Q+79qgs3!9cMo<=kg*m4Q0>A38g66;r$kWG3RJ_ff|?oN)*EP)g&o8b zP~=cxb7b@f4}dZ%a3GlA_MQf)H4mz1*+6wOsLjL)ZZLxCSp!H*&qRUU5j;J~0a5~L zv2cS1TEWd88wFO-6ecgo?T!Z-!2K>>5DC8jnLz>UMln!B`4*@P%c205Q~+Pd15#qe zAjYl0tH7emAm+$gQl!YQzz#A`0NFeNbo0ca<_RjWD1apu1Yt_77{s|11VHAAgUu5H z-7E-_R1gA@(AhGutC&FrCAj?v3Suru5OafaA=qaEpe7io0c*v;%ndS-*^#l3pSy>J zkqH!=8(bV>C>qpoaeRZKrhyU395#?SGZ?cRTiznOW(Kkv zR*;$vj9HFzP}G3tdEs_}mr9&q%yQg-qUHp$IiRk(;{(Pl$0I0e9w4g$-B{)LgE7nT z28x;=$Z9}+ddCS&S&nZ|)J$MP_zS$S0W@R*npJY#0J<_#ftjCsv|tA{=E0?32Bh*B zK?VD0`?h!EtH#7#|mdwI70H@2q4H)AlvHc(%lS%F!FK>@sks{%B~Z^clr!0h;9@c{-i zrUuZu-7AYg%oY%n2Q;wqqLUG{C>Pva?*K1q5CF}kfJV?ji_BO+Q+CXtF;@;I2hcn^ z3%H5S0Ahlg@ZdEMJ)k}Xn*x)-N_EIE7jy|4cwG!f7HlcQ6h@FNWHAzl8Pg1q#hhkL za~K^B6uCfyW}ta7MIrFCw?tN!0(cHo1JbJkO9?B0mIH&NKy#pu3W}g{JjndF2zdS* zBqaixIh6p9w1H>26-5<5%Y#8uq97>&MQ~3FY@nC|Xqhlb3N%LL2<3ZOyqEYK*60<$9|yb~0dK||ds zpc`cGEOJm305Kjca!?dhUBNlLMp+1knN-)&YCtekUWyA1;cZ z4j>n3coaAsMRGu^NWg>M zHJ~mXXdM<4Xhe`tffqLI4PUnnP7u71#SmccgH|gsF@UgGbAU21`SH409TXlzK3=a6&v-on zT9LvCDwxq0^Cy62cC8rVA@j~4iUU*<|7U|_0m$4eXh;=W)G~qU1n51>IiTTaP?^jC znuKHkWAD zEBtw~6nG$dKqU|pX#Np&7dU8WQIiS0ehD)0zg5Nlp_8&jP{&%~di( zYdS<`hfjHe7FV!jfyVe4A;YMQpjwp$GU?!=zzCXl;DJn5vY0XXK*R$;bpU9>473=H zF&i>j$qJsl&|nI2WCT~Gp!Fp1=}I<;v)Mru3wZFG9n^*aPk2J7D>)%@pjH_tWV(_I zJXHgp$ObjlK&=xl&|ogN0vE`UJdP|1JfOpISwJmW&~ziXnZ*s7uH=JGSMniESMn<` zf;QNcKy-sS1bjA( zG%Z(#j273U#r0@$Jsg(*jOOIgoIIM7M{_d%CAp)m>k-hpUhoWbC=2LZmmM!atkGf3 z0UFl)^Wr3fz)lUCtPJ_F@(gtBdcqnIYc!GvD3WKaIm00E5)sK)skpd)G?E8NaZSre ze$#&znv+{5fmowCd4O{AiAiS}1l}QX@;M{qQ~fC0CNmnzgCr-TM=~{w>(NLajpWg> zYeinr=0@6&U8CpZ(c&6(!r(C5x{4mjqs8@TB!kY{g`B8L#3uC7I(d-R$aH#`A# zoIoR9C!T>=qg|*0>O%EAKg%HS3DJc@Ew0}}k7NQJC&8w`roy1W2D;e5LV*o*euE9@ zVkpqj^K78Q>s=JsK*wl#fG!3CWp*%6M1f6#%@K66KIo)*&{8VU-b4jfUIqm=$9gj+ z1JJ5b=-Df5pabk9Kx1!aOa|N_b)XZuK)0kKQl-k zbjSl6hygzLjSX}Q@L?znV0lF@5T&BXt-uD_<&dGk z20GF{2f~wp@MJ(rK!+W(X)wts@+z=_E*dCMU;`a+UjpG(KzKC}9_T6@UNa^h9wu&( zxh!T(px|W%9q0=R42>)^rWla#5TO9RmJ%EadG84!-LS{@n+#r8& zC<=p)b_bt^2D({U7<8Nl8|XM$&~aXyKu4`{fKK!QT^9zviOA6cbd0?MGx*Ff&|zMn zgK?oZI~jmZ6o=j>CImV~8GO?a^i(re(Cr0aUBU{W(|9t^d{?s~D0x5( zgq~`~t^m6>RTO+BDo7XfR5Q@Y?BJW56~z=lw}^nGpr@LFPp<~sC9VKEF&`uaKGh6# zC_m_~RSpFvfd%QHBSn}T&oE>OoSM(5C;>TChXZu@j)fwZ0)qlq7Wlv(4%q2Ajs}XL zYec!Tz}EsHgf&379Y8Mg13MmaRF9*ABCi7cWFCZSl!NmT!UBr?3h;yT5yB`3=fi~+ z7(n;5IVeC}e{3db$H4{Ag-86{yP28zAjji@GATIDKnECu4&YKVe zi3U1BSsIcD96>P%x+@BFNVotv2EjM134qR#(}13(1dN+3B< zGJ~Af4>{0ILXjPG&OhjOMMYt7B!cyU;~sPjHs}&=kUkM`EQ000kqe z9DJ4y%7>07S)j8im>hR+JILV31}dBXY;y!r4ci?BI=MmRFZiB&W=9Rsxs=f26p|T1 zM-_teBIx3KW(8Jo5eLbOASrNGlmK7R2`Nq?SrH@!E`&jswJ}3)p@!r{kQ6v0g6?c& zhThi)$%r5+P(D;(0^L~10J_hB$&m$gm6Jx60+YZqP%3AzV#rot5|}ra5p-A*6X;$G z&{1y!mq1=+(qKvf9i_wsI$J6RbnR0N=+ZC^rUY=|$^^b%Lq`F8p$s^#HJMmIWiKdi z!Y?affgj2U%9rrVN?71UGAK_%@9zUS4-_IGLqPeF8*-2#lCS~;s42|=D%#DMSU@Mb z=`v(Piat;pgPwl2kC{oVo&{9vp_QNsphKc;6q!Mk1Na0wX0X3Ot(^=<*jaO++Ymt) zuCZo;Zr))4pC$>qnHqG(rGx?#=(0TU9h*!F44{gF8FW{mNR}dpqX6iJQw2`Y32us9 z;Cc&m8YdUzK0R&)4h3$I?-V7$wGT)NeElYq0teU_3CQJqJdU6P;dm5y!N!0Nd1P_~ zU8xDW2NZm~BaZ?<*cd7B_2eKa@Xee|3OrzA3=|kZ_lPJ8I0`62F1!T!2XqY!IN22i!lpy_5moQK!FU) zRIr8$C>_Ca6X;S7kZ(a^uxtctnt;S$`3H3NHdGxb=1Zvwg@E11UlG^ALJhJ z{S4qsK=~aRFfRe+cbszU5Q6~d5>QZ^1sbLjiUOchKC=`+*J47&K#7O}bZaWVf*>?p z961z)6c|9a`tU0VLB+szp}=n~&=nG3qd~V|Du7Zhs2Pe8p#}sZ6lyumBDCc=B0@oI ziX*g%f(U&CjnKzKCql0tSk(k_k|vW5=q?|yoepM9U}tJDDVQ<2 zC@_J_Q-S%@L2YzUVFjXjvIHiwfo%40lPV7*CKO*Yl|BUSy^BP>_Agy29PnJqfo(D0x@YaML-G) zq|OaU6C}HUYCwxDfxhYByQ&yK4HqO^K)1kKF~9^sY8A3To&vF;R% z9m~xKx|4<(RPx&>FoP~4W_Fa%5?Bnn(i?Q*HmDGWToJAUDvr&VG+<#5qe16xtMD;1 zFfuW4gV>;62>5tz2L)D8&BUevK9L(V*Z{swhnE?2h%2)OlLq+yadyz@k?bIapgV3k zKs`PV1xE1L0XQ(hPE!D#6v+&_k0;BFNr8u%+Yvmjp}-{YBpGBYX#79{R5URtfI6Kp zVbD>JVDBt~c!x)k6LPXR2jp^ePBSJGm^WZF$O{HY-Z4?+QeXxRH3WbTQ~=$m#0)C# zLqG?AYcMH*9SZZ2i6V~z_i8`PG7haIFkR>&kbimiUfi4sWAHEA3gaBQg4!*sXpPTro zUI_^s5pY{}=tuPmh<8S#+5*&=0$oOl$kl5gVKZE!dNss5BPgn`fjY3@1H3md!!Ioc z)dQ=UAw5_St-$Dbhat<1X$?s145$;!4C=k!fOKN-Y(sQnk1%8@GCP8AS3tRbTp=q9 zG%yV6MSx3hP#aKD05pUQx-e1!)WHR{ok6t{vw{Ms`v$JR6_^AT%79t{Rt&3|9gi?5 zvNJg-u!Ao7V{$wLx=>kx{SOxd_!#R3Mo>TX3}cqS@e~Cn&}b$|pTI#U$1@CypnDxS zAlfE?F9rsw<^XF2NpmteC~!igO+coA)NsOOxtJUjxFE83z?x066u7{$pwUBcmo`Iz z0W_uvzLTB_+NT8#7h~zug1Ty0`m{)Q(t~^t3Lj9teTG31emgSgAaIZaAh#n!da|oQ zBY7aVF$#R23~JarZeRxA%J7<*kqcZgGiEEYDzK_BD6oRAPLNSx1y#%nps_qNCKUx% z(2+-^~WYKrAeRe??535eao2vX?y1C)kRz|02FjUO3cW($a!17@mZfi65? zRbX}0$pYPTzzVwbl|zBmaRXzP0*AnicCfuEiku3pjyo8$6gXi*8H!vAte|WD6u1Ot zLR94_ax1Vpo?y&U;D!m6DDo(o1i)$zAc;tTMNS}zD1b#SKt;}g?tq(q7<4Op2V<7NvoMh37_t;tL5W1*1&<@> z7FJ#bR&XyJM1zJ7!3hZzO{|(s4xlR|SwU?lkQ#y0>7eiyQRD+r0t$QrZ#x(nK;C-* zxoP4wC=-M4u0?8HgEDco0u!j^SPg17JAx)1Y803pTeibSq0llgXdD4_i!n23Ku%FW z0hHT8Lqee3=?J~c5-bI}_kjs~i3Vu+31m2U_*DaZ8odHYMgiPsogoIwgH{aH3ZNTF z6xOTjIzd@W&gZE&wvp6au;z7c}JK0lCZE2NVQmOfHU~o2Nl7*B78BGl+47 z0kt*n0=W|tbQ1w6YcM$SWGV81j^al;bssdyq5v8qh99r*2+FxU7^m)oiUv)l3{V~h zjZ48t`9ZcrVj7Zxt09>V?xZ9y{&tO!X7kfaP)(!h~Pkxc<~7o7r|z==6f-Qc^7MFf5rf{uS=an#8YxSguV z4!M~54wnLpqXAe1dOz3$kcdf^z%fv36@0hx6E4REjG&=^NN0k@(IN}fLVhAtNTFX^*jnJjw_h66hLMOYzb9haeM)4 z)GC1P>07~^C9uj-0epj=jv3Pl&^=--8cYUeOlLq$W?cpuD~2mvjvE*id6^s(ctM>9 z7RMXx5YrTRq3!{T@MbCUIUZm{bV2x_RzbQT5KBzVm@aTRHZUs+FgYj)K#gMo83!^{ z0Ae1*f4_HYpkHkjsmL!ixq>e0*hmPmLi)YBdG5P8xf~f3q065f85Ot{xIm-Cps)qWg6`$!QD9Zz zv0~5znW~`6z^KTpzzVu#QD1=vZ3A& zLjp9(YNNmkYA-o~hAUYV*&M-R0HAnuWK>{RV1tDVGpI|!p}-329=Jf%a)Kz(U0mRB z2Bils&>$_Wd+7lRIvr3iQGwM_CJQu7%ncHfaRYS|6?nj@C>RvWtQz1&U!b4|hoL|g z=t4^cK7lvjNEHDEBS@zJBpLFXF=>ECj#sQb0$Q8}GDtx{;Fmr~iH@Qmh%!(V0#P!G z!XQdPQ3TSpW>Mf!5L6IS5C+YGI)kKm6h%R)LxYI}Vz#ImlLpw8DvDwtc@0Hz1y;~R zs)+)tf;ed49ppWbZ$d!QCW;b{jEa)r;9^jaRFHrL7uZWuASDWl(h3X;QjnY`4Vn^U z08QS5SJ|;@FqtUIfK*v1$||rb$bha;VpWg@U4O^`;(?Zr$wKrnn1M#?SskIH#p{`w z1nR*HBj8<9kSjpb=nRl94~WSEp2T4W&HOTfMj}{1!3|y=z~TrR^=ARCcVK1!g%)_a z5PDxGXz3A)0vot5Dh%#Mg4W=G7d3!Z9yB8U>yE_0^C=)*pp|6`ObRUE&MgP{S~o@oE^z0S8@x&kG%W;Py#ZTe zX5k207Y15g1e%Wl^<rS-|=kz-z-mT}QAKhyhyK#moR&`2t!W23lPNmI5&lQlK?r zpmi5uDG&o81zINtnlS@Qff#TpP#0R0nZumf1ALJjvxET}ZMt9J)R)Uam zG8F~|L4NKDER0N`%-Fz`t;h&D4IMP4z@WegqF5jl2ZZ8*P@t328O)eOAUp{O1-elT zyaW@h545_M0W>oQ=IKC`7(gf!2xS4GY#@{agmQsUp!Ea{pqvTT9sm&xflv_;Dh5I& zK&TW5l>wo0AQWf;0t09~32aIQM6d=zH84Wx7AV~TrF)?C1SmZPO3#4ObD;DBD7^$q zuYl5Pp!5bPy#-3|fYN)Q^Z_V+1WKQP(r2Lb1t@(5O5cFeccAnGDE$OVzkt$jp!5eQ z{RK+@fYN^$9UGVwnLvXOpaL9p3=0#ass>4bE7~DnJg@Ns6l?bp$`9niSFiZ^aAY($RR{UpZix6!yA(73&gH*P;{ zxrCH&kCGU---mYG-eqRw1&wBHV9ZtouS;ff0Nry48+ruqwgL@avVfMHFflkvKsP!n zfJYpe7(nYb1VHzTE3knEd%;_)Kw=!wjg6pbALtq_1!mClB+#A(1tx)Iix?H5tB%(& zDlmg)Z#V?jbTWd5qCtcI%peB%YCUGq;D3SwvjT^}(na9CR3PSZ5Hka`q!_Z|&IinV z0$Ml~0A{`bF+&uX9WOk(%m5mWW!7Md04*qX>|xAO;1YP&0k+FWkz0Y;aSC|#6I3Wb zkw<~qaSmvrNZ=_%Rfr<50<+^1#w-P1h>+tOhAhz5uO9G1CT0*92e(L&mijKud-cSsXbOS;4UknlNAkt%Gv}t;qqca09JD0w)OO4A9_o z3@ENaTh};1JGji4jxZ{KS09~VRA2zLR3Ni4iDFN_&B9j6? zcs`LygXs>VqJSfVq9Ay$gP?){tO$chf%ir{U{n-VU;=IX`T?>{*o^59$asz{(Aa~KQ?e4sfD&_<00Ch!pC59p?m2grlcRt%q^gP7n!O-3^&@Sr9m z*p=XubeowJ7(tU5EnwP;p&LZEY(BtX#?%91GMF)e29X&-`3HPyR|sehgVB*A3$)vj zQG+Q0vL%xPv>Z?ow3!1bQ9%~N!crATlfYTf9%@F=Y}EuN(C#ubrYTT*29%xyrNP6+ zpbQ5ZS6{%GB{0(xqG178fg?wj8PgIb@U*WYD`>$h8}E_`KnfT&n6@yPG3{Uim4pjGW8Jm6H|P~e1Y$wE|Y;Jt0ovnC`U>OjjIpl3}; z!1ir|b}=C)U%`$B?+6u9K#98EwaA9xV}lO~f3#EFotzzTv8Eud*n zGbRQGZqSsG1`{-B!8~1tc<7WalOso#!1;;bh3L?o)ucq{&P9v@dyu2EQ4AE7APn*o z)J_m{_(x|CnbFx#?dY5|f!ydku!vD$BXV>$jNIs)N@jFUr*?F@o?wm+wbaqlZI)9Q~*dAQOD6j%KI{%H_=uv=wZ1EoDe-=r3~QXz&RiXw}agV6$Tvz z4mv+qfg43N=%`^1$ieN%szFB$b13j;De$7G1|2ob0Xf_SSvBZL7Y@i#!$`sk90F$+ zF)D(##eolIR}kRmCT03-(qcw|@5p(tb>t4={hLbiZ04VjM;HX|Q9JLwC%a~xvY1ie zH*$2gkKE{Nm_}Z7-lcYQ9wIwBr!8g__>UZ&9V0h7|C5lNU1z{6&t= zmXRBsf5?o^JJgQO7P6yr`eH_bFUZl^Hgco$FPYJKpW4ycg%X`lnHjl3i*_%-)?_O% zgN~#Wft)HU0a~@I!2~)k1hixeyii&Ke5$sx;|I_(>Ikst7Z5W> zf!T4zpA!tA%PTuGVKoWs0 zw}zZi3DyESxrkYl335gyL_`6+02^{fC9|VVmgAYmVfp=Q2UTzyn%5uE7LahzvPhF3qQL4nWyVPcfz_ZBuvtL;8L%v9MLdfc6KFL&3n(^0>UeUpK+yzRy$6a@ z7SQ=5;3L98>+4xSCscrWpmpU8pd6Td;J zk_U8lD){_wkT-eEm;^va$1rFx{h8sZ$O}4Uw_&EIA|K?~Z;%o`GbRDBF#?MGjtrnf zm%t0T1r+!}s~W*sM}vt+5p+$LAn05bP$ViaDhN8Z%sj~;&;+`!fmxGD0kXsodMSgD z0!S5fg&%0qE(7Sy5705_pmTIVTN_B}#(ZDQC@^p~T3`;K-l|UggiK!Nj7#nB`cXrOUwJ$mI@^ z0Ug~1G7Wr!7Y}HyFf-_s6$S;yY)@X$l}xN)cOJLpVFF8nN-wBMAPLA$2L?wLD+bWA zZAJy=EHft1m1;0oFoIkG+8qJ)Co8B{VNhTLn+`rY547!sRp7WS=x{#{M;13;Mg<1Y zfli8@Wdu2&4RjtKE5uSp&_$M6N^B7OK*n+?vT;LpVt`K(0-uCr#lQpF z_QIM4K1hdIfi+u+8Kjm0;yaM#%mT-4c^E+!F~colf^8mwdW{iu^c4r_@IHks6$b8Q zpx9(`K!u=PKoPtQAgWe@BZ3#S$%$QotyX~zBFg5(*jB5+;l$V$#mfx3a*`v0mmPFK zngU0y5=X59M;I?Vs3P{|Wprc!F&r06xy%5$7Xnh+^Mkf%FlQm^FJ=eOH5FN|yo?H5 zj`dkeTne07O5C9MwRGcU0JR~&9L6kA^e`)MWr0(b0<$+S3rGVfthpTPiS;1BNjVG5N z0RdGw0ijTV#hQ^rfdLdhpg~YZGbRRpZUsnqag*Ji1#J=p-GYK>&q8+y;%v`?cL;(S zA}j*n9fF{i12dua?1Fuu9fF`H5Ht9EyCL14J+c?Pp%9}z3*Jx&N{iqY4Co3K(4p$! z9swwsGix%TwPzt43Q1_sZf9l^hFlHz0N!z7)L@ze?~~kN1fNyMsK5$pL4g~huzTPX z6cLx1iYb8Z;Zp#Ob2~~Xf-aST++->a+5?)U0J^Ibd>tGk=o~sG21N-4X3$O&(7kc+ zqvt^P$w`89r2_aOIA#S#&<0j!&~7rFEJbd|4-AStOb!Y>p!~z^r~|sSlm}9xLAHJ} zD=-PH23`NkV#c%vR2DL8GJ!X8I$9uZE(I$E`2{j*z^A|f83BiggDeE!rUt*e6h&MC zb|aVoWVb1Fm#m|NqM!o!Rxm+SaRJ!PV4z0m97fn)7)Qu0wZd5n!YJw$7(n;MiGVx` zI$cr}jF7JanB4sa!w#iQ3$d{ zbO94+D#;AAZIKbQ;~2bkRM?COv^mjn22&Pjn<(fuz%?LsLIQtO;Cowdiz+~Nj0!_U zA24PqhzOhzR$y}60NMx0&wU@-m;As0-Np^+J%X|Z_=Hf<4Fywf9byoezy<1jfjg9- zeZ8Q9ofULqCNpSLrUs~{$OdOjHZvw2aOJ}WYJY%xIgsKUbjuaEAxEIKyz?}{5 zPx6>CMS$!A<$eV=s8wtVJlUW<-k|NpF(5Z^DDr{42G-9H7EoZz0_RwM(3V#Q1p)9u zprC-^fCLOUD8PMoP)!2asO|{zZU(re1M6t!C@_OAnic?=3CYr++b2PH{vjI(at9AL zXwU(=JM1wtqcEuD3MyJz6u^yF1!ikT5d{{|9`G{IQM)XTLRp|IOh8RIF;G3vqQIih zC}PbBx*wI%j0t>dGLsdnfALoW+a^Yyva9dAPV8CmcP>pvd9)fI$&{MGOmQ^o2tKay^U!Sh>L4Rz^iG1ujR% zY(;Jm1wKBQ3Dl7X8^8lH0O_!0Pzk{UJ82nV0-pjO$OL{61vY^d)P~`9&|qQ!5iA1#)OlFB6}TOF92<@uWe@-#P0WvM$^?)w_$Xf% z@CXz?*cd?tK~UBa0#PiA!j2n`9c54yab#8$1$P5LTfY@V6+{G%1%bK{Jc?oppzvY= z4GM{Y>}2Ft;CJM4TmUj0Y$uB&ydZ`Q{2f5b#o$9h!O2Po)EYHoG62Pl0uwK2)QZQ7 zff<}k9YwN0Gu8rIK|?njpdlEMEP)43prJxt2GHesuwIQW11Gp$$YRA{4;mqKT=V`o zgTS-dj4+dQ8F)a0g^=x@%nGbl44_QR20Aep%(H{sDF?bBmf4XdOJGJ7%xKW&Q_z4I zXow9YGZA`wEaXIK1y;~O%aC)V!8f;o+|LTKl?jy0SwJjM^B>e@0X3Z&3t{Gh4~tfZ zc$3kJL7iKHS(iaw5wy>hF&mWLKmh{6pdGK^B*37+iF`D556Fw)XarrEt;4{ez;Pf8 zlnxcR4!DC7q9Tt1H|X?bP)Y=8b({mz0gfAx4$%40AlE`e8zKujml@;`W>B%=cmQ<2 zxB@Rf_Z=b%;*LA#7z8E`a6!yM{c;#Q+BhhSVHPtcs+7XJL08UzF98Epw9o@JK&Nh_ z++q#7ni912_&n$WFc#3zB-;H!pjIdg_WQp;hkdYunv)!mY8c%35C9+D43YxfFa+xH zgWDINYd^u4PD_9;oxTIQ4h($hG$UxpnH^N?$bfT+4Y-{pFrz|&$rC)b z&Y+9q!G|J)7&h?XZ6?sYxi;p^9^m#g=;nCPRmdP3q!`*~04wq^XEuOe7zDne2y{UY zVxSzPh}pm#a>XWCqX?*+(uCY*EuhGwzyMid0=~-&tN?WN8Lt8ZWQhq_801+d&`r=1 zS&Dq1_8a`JPJRVG$l?+v&^<`dmN;nNHMXm(&oeU#)q^j8`heQZeZ!={pv$15$PB)_ zi2-`6IH+o60?l4zDS#I0D8R0yUI9AQL?8?4k|t1R1GIF92{en5r2uM=DlmaA$6_#N z-oXeuAqCXEVFKT=#V*hXKJ}V0%Mo<1wE`1};&i-&bUq4bXFT-UG$sWmea0tD){JvN z$BLX_%mU5FD1w6c0|V%E6dna`NZ^1k$^zfH1iCT}5{{s=t#uimF@eu#p9eC4(TZU{ zc&x>WVF8H$hXEd-;CU4A9oX;?T>AbcZ2&Pr-u=UnB``e^ zViL#=5Y7ikqjwiGBR{B31e!pB=0#8)RKw)J>;OImU4c>H2{U9DJZS!+wV|P*!dsCA zR9Ap%M#ta(|Nm#ta%50ok%l&H91XxNC?-&Wo&`Sh27XkyqlO|II3I%UAOkZHQVNQo zAtb0S(EYavDNqjffxuW(4FR>j0ctiF%VLq)A&L84J-v>z@r0M1Cv z4xnSv4HUUScUgmau@FbVmv$j#FpybLaRo#l7DYYicy(wW7DXI%wmSS~E+lh62dgtE z2xNgfM+kAyovI9uZJ^)=HQ<@J1&*v@AWL99hXM;IM+mgWDzG?$(n?R1 z0*fP)6+;g6Mq(Do-RtZSba0(VprW(j}4=4+Q52pZ| z3fBfQ%uxc;bYO;OJkSyM+*u0D3fu^VGN5ZcPB3H%^nzM{Y>+MkBe;bRx_txGWq@9q z#sa-G4Rq5TI0N&7FI0gU#Q?GoROqp2GRc4(r=bWh^jI8a;Mof_n!pE%39vBKb)dln zK1eP_76xTfK1e1-76uI^@Imq@lCT1c;{?#0B|rB$=)^RreG1EP44_+Hm_Tu70Xj6_ zioqC?y+EV_gQHZIBa6U;AW-XyL4i?V-$KZA7pRFU@HG;YH+d9UKxrC$bAtrv76H)2 zBNOO0K4VasE70!=y5fQfblC^^B5FtQkTYlw4|*~QNU1m|$$^h?QULX4nLu^2G01cY z&}k(aOpuCDB}<^iRgqJHQ(%6&0w-wB5;P{t0g4u|4siu0N0lsr#_8apdaxVBK_k*k zx(vq9)+p$xEP)j>!IKIMRt(0_yGOvjWzuC3hj$qM#R{N^6jh0WF^Ss|)Lh_J;3-ky zDTUnPV#Wj-I|G>n>JlQG#O2t)~jX3Yp%m@ID12)Z#7GzY@Zy_T6tupT^k2d@Sl6%--2Q-Zpwpz(9iX){@% z0UpTteV_qYP@6>3KN7b$~|@nZyC7QzI&5rhp~gF@Oq;KGyvJhxP z2Qsn>n&(l;QUu-p0VzE}HbAZj0W}^$196~J;XvgQvw;Gmqe+$`m!klv_ocuMY6~ce zD}bs8P$dEx;^k1}QQ(4(_DO(8`@nLbkvY(HP+)@`KqUw0D4jW$pv=yq$P1zvKqvcv zjs;X;0^K#$vkcUlc)lKC{qlma0M+_hSzg<5Z7KZ zfLdvwn}3*~S5*pt?*D<5tDrGbq`_Dr1p!FGiYyMhKZKwAATyIFq!9{_E(LJu=>lpe zGJsZ>gKiuF6^YECK`tgxwD~B2uX@3DEhwl{zz(WjU=2QfqKTzNnI9C8Z;z@x~;0NgNBp%Sx5b*I!1qwW%bDu!xF7bkH6=4G1)5;4!cMo(R zACm@?0B8{k_-MWaP~^qHR%IF)XD*Bh6*7L z+!F>Vg`BsSqQC?ibIkyWr-07k(_qR_6jR^@owdiS zAPNduUQq6386i>lbFfEYFEyg@6f+|asONBi1*P@5hDCt|)I8e&qM5B2wzDX(fJW9p z<;Q~!M;Qc8RY8XMK%xRI8j$flRuBd1u7k(%K=a`W%mQmcO9nufXM+U=&RKvIfm*e0 zitM23(-Abg%egtu(l+` zdJ%Kx9iR>|Xvz?Li5{qP0Z|U^UV>cAw1e54c?Giqi=#r8qe7Oz`9v5~5p*Lkizd?w zW=O%xs{n7^u3&~)1sd<=V{%a71BZa)3Gh{Y3Rwz#;7K8nEYhXkEMR%aje4Ld?gK2~ zqc8U{Gx68M$7En*<4jfz+>kDXg#vid2I$%(P_G>{#Q_@n0!1x%7HIl`Re{BkJ4;|` z802a_aJK*~1S#+YKuhLWAWP<06c`nR!Ey?00!KwbamoT7IA;Ne2@mMBTQepBPy~bI zVCS&0fJRfH_Z{Ydf>)P;+loO&fyGe;e4HGo0w-uKBls{~P}vNc00Yfnz&ZgSOF>;7 zl`Me<0VxFr#|B8(3baB1WE{8<1&vpL(j}-kWzk>~0o{QJD!UUDSU^+?h;l5*0yWoJ zK-ZOl91AL+K|^C8S`l*MEUy9|$XakO12lG?1v(HFw1j{cT;obW%5+d&i0A=955Qwq z5Cmxjm6@QmBTUc}{NQWnz{Y_C3KTb>jvHvj++JozK2Tl+)rYWUkPM)BVFs-VnON|U~^qDpy_GY z@H{)nsRnMK)*d*Lm>o^B6c`0&Hh`DonkYi&z7iBTL2EI>z9T6_`Ph3tBD#zV!?2(F%~2p!2YqK~r2c3Si1X0Xzrh;J9JY0S18= z>Iw`XjU1pZ{TfjF6LNnYD|GT0yh#qU2no~#1f7q|oCRrNDky?75DU1uCj#o~L7SJL zL#1JjQqWPjtdK!8M*&4P1z3wz40PyZ7GzZbD2`ywQE|{QlaN&bpoSDUk%Goo4M1(t zH;kb90R>J_@d7%#5p?DxxM)#ea$LX!8a4d@ni;(VVuDUxeg&GsXVPR^zyvC^Ky%Ry zko|IC<*<~5GTO3$36hSO7{FKB!G|-E#8F0Dki=0&Tad(2Mq7}?QAS%3;*gnsLB}Ob z;0q~*K%Ny;U~&ZcN(koL23Bxkc^-NmG-yL4tOw5s?vsKtn~nk#h%y0{U+7qY5i%>o z3kqD&`XL2IN2V-r-yON3$_Tn*lNF>GbTuqw&W8;&^W*DSUku6)OgxO-piBf>uLN53 z0Wt(MEXI=sS_~j?1>9=~odC`R>M2^lG6)lBr4%@W*npa9HlUU%s8rz3FwG_@Co-Ih6K#npp}oBOcLgxqwYbCv2p}i!ZghjS;*UGfU?X&KP7NsTz{Ln8j6uZ=C~=I&9TNjt zarcG%xZ6J(cic3{ci`qI>ToEiS!l+T;>ZCSTmv25zy!KPok;=ODg{k4KwFIrjsjUo ziyA@ASI}tG6Qw0Ug8x zUHQucn)d~dxq)u}mB<30fzEHn1iAoN1+-8K+yW|5U<5fF-24I6BaEOGrO?HUHK0%x zI08B*9ekMvn5B@Vzz-2K$Wjo1unsVQ?yv_-Utq{m5Q2z8OUc8~+h>q3HfIJEP^_R0 zj}oAhGC-{-@Qw8fpos|3*#R1x;emBLKy!qk`F#a0$VyjpCI*n(K(!Go z=x&n$1x`pS8+_3^KWO{{bX5pHsLu!r1CR?9L0%I8UFgB-$XE!Q{fJRuP!LcMgeYVI z`-=fI;mQc5k%$p{+GVNv7(Q4HY8b5_ubIPe654QLGu$hY7@5734gM*~Fr0PGl$Y2XebsL#Ql zrN9sIG*lQgcMF|GM^+7*yM-r!JK=XARNb_}~ z;5{UuW zK;tpZ;h;?hnoJ&$W;T5J3fNFkvI3QP;Ch-@ffv*skANuTQveNIg4^SuWoVG7RA6wF z0o85%AcZLqg#rrvkYy6gj!%#$_%yN<1r-EA3JV|#g%kuKxeUAs9u(}5<}$SES_#>F z2AURP^5kW3ln38@#N-HCQsm9cpups)2AV-FOIKpfE^}loRA6>wEXj7X1Mj?IbYcMQ z8U*iWlL2|yk*OpLGNK78YUeOJGAb~aD6xVn7Vx?l@CstkC;UD=b^tFMmo0N-Da-2m_ee7pg#EwMo_$f_Oda6O$X%!h+Pa23gjs6>(Exl z0o1id5|GIr8Bl2nfUJ^HUeao6>mTXFhqbw!N)ShfJ%4p?RE(uCnkVK{6QN_ z6u1RISJ|;>Fol3>Ea+8sP@xD#&;ldS&03JF>{vh(t9%M9j%ye}m!g4AU|@0l!jPrF z0=vr&%mppPVu5afQh-30^M#0p3@Kjc~n3_0CKzCC1yr0(9{8FQv_`4 z0J716SpmG!0g^dDBxpnuG#vw7#>1$~zzZ6T)@9%WkCU)~_d$RcxZh`VWKaaHe)!K= zr~n?i1T}lWi$NTpygA4qFlQwrXfVW4AxnYX@ynZo430bkry?K)9%yr&z;!QhmgdM3 zn8yPe24q%Xv0~5%wF|)(=yN+ZyoH(rSuO$E$p)%txxmHm0nmmgE^uK3E!Pi#4)b8t zW#9)lJ1>BEELIHQBR*KI7|w$DjJga0VA+cx9+MTrIS|dP%b;(?a2~{D)MWsTU0N|* zVuX*PfL3^dOL35ukRsC&wCnbSzzkl10TzY@())M?==mCV7_tO5n1DmcAWNW^3)K0B?t$11 zT^MKpn@mt~WC5LT#|+BbAa^h^ID+O8m=##EKt&9w006C*2F)QbE3ksZSfTXaJH zbTK7#5&=@Mg9k%E>e!*`6qpp4!E4MMzZ^Tn0P13Zib4=u;Jr9#02Z{h1-!EbTt09r zaKOq3&>8|oE|3z?Bn=ZNFKd8qnF4i8m>hYs1X^Z8R||v2rkFIDcpy%Ibk@NAG#plwZjpmYtIJauFSm7aW# z3~r9~g^&&aB)PIE@HtL7c8Eb>tu+H^T$v9VexOZn;AJkLwZ2d>(2^){BNViX5Gn@R ztm=&OYcpmjS2;OPa7$kQMYc@RUvw~A66d0UPnA`ir- zIP!kaB0ut8KqK$v(22bDusb9fvK66+WrFH%UIoyeMDQJx44@Hi z@U@L1kTW_(AayyYF$d~&fg%NT?2rwTec;*~y2S{!%;sSOw?G_uvOrxlM$m<9ELq@* zCkfCYHBW>T7#$_D1P-Qw>;kKD0l5Y=BQEd@)Omzh>j9Vc0ZS`__a%exWeiZ@&|uaSyt`5oB8kL?O6C6Z3jVZUj_{(v~5Kqpy&tHjf@&hDj*+$c3`rA7kP?g37pJ@nJWPufB`i*KwWz# z&{PSiZ3`N80;g+G#i%H#0CFa%g9kqO7SvA!HB>-DDMH}&gdiy)(8diWXgkFMTstU$ z%oF&a1`aY%?FeFUfVKvMD@YUYs!Z_47e@wxf8HQj(2P10WKjzE9$--X@_=I-G}fmA zot}Yg@&VVH@L46$0#HpR75EM#@Kh=TXhlD0(L57q=7tHhqX@oe9<+cP+GYUtC^VU% z9Z1kJP;j3gVhf}-1X*Ye-Ny)8;D~a*@HWtHFmPub-)=A+XtbRH?FM58P5WYtHqgpX zNG=8E1n|;I(B2?Kv?(xxe8uVrial27GF<`iJ`_+qfYO$ufFe6+WD^>DpnWJHDQN70 zmUTl8QV@biEHw65LDeuba_oJC#vUgqe8Efe4HUo=^4Mb!+ypWK&B=q>Fre7uMu|Oe z>jyLp0GgQtt+9v20BC<0*4P8}?h&yE@7?2yJ@`Nl&e#JrQlNXOHz3W;K^H-QO5kb* zCeT)bYH(%)RWP8Hr8r{^bU!xwDr?YUTozEn9hMyAM?^gw%JAB96QVKpo^ zp<~sc@KA*0MbH*IaAt(>A@cy|D9|P-hAe@lpxscQp%PG)!XWSlw2=?Ac?IHeSj>VW z6m(5DlO~geIdcSjw;yP12ej1)G)RK1D8igs1G**>fs43JJpne-TXR?AO8L~kWA; zoqGqNJJp$V86-jbH5E9l81fYu6gV8;faKQIfUdg*C4A6gYEEz@fffjY%3*$REP>a> z^Fs<^$jK893ZRXXAoZZ-n@pNa4j_+%x^~>K?Uo=-kkAK(9k|B@+i@2&i!ax_KVfH)jG}o(;Nr9<+O$1=Rdw2KDe6 z6<8q4lt8!ABX6vPRZz^J7Ecx=Q!qm}RwjS~ItJ7X1Fb9pt*7HKV|oMX>2iYad}joo zIl=|Hc^pr(}2Ln zUF!t7$8%bK$p2QgNAoNXApu`VVE&}0Xc^ceC;}u zz|&?%Mer)RFQAjpnKhVxFoMs7;0ND34_;>X0Hj{fjOhvJz!_dpGnfIis!0UYQPyPI z0~%Lx#6aD4_?}G#W=H7t@&}n21;LTYh;qD$0VE(y6qrGSxuCwizy-*GqdK5N z1~iy7q(E5(gh89y+(C&R)N}!#5MYo6Qw(aWFoX7Yv4KXXL8D#Z11v!&RI)+N8D#|x zm4T0@1f4$#J-w6-G+zl;30jlH2AZJ+^J)~BLC11{PAX-vVh9Fp(hml;qZtdqO>|IH z8-NCIK%!v|x>2f!Xm01853}Phb|*VCX&4@FoaY1*l3e zV*-!if=w0#InP89bo!43WV^%1Uhwh{8SqpC=$uhVE*1uj5HL70nV~Fd*bj}u1F*f% zjtllf2cei9H-MOPSAtGz0`K1kpAW|ZY9@jP8bJ4bvqDz?SuuPCZ6IdTWni#k_`>MO zp~wMRwg+-6_|5?)#}}Z{D^5ry$POxCm|uWOz#EL9YVZYPmcXT1ApQ}?EO0q{gE32> z$sUxKd2|^VKvP5@8$spB9HuPL=C48pZh-}$qi}wJO_;-!CD7slo*f14BI^Lz24Wn6 zr&@Sp5iG|Gx|AE5OJKW=k1(1ucYqwx0ojEOZ7Kc$=LH4u%4hH#9h2h^gsBpW0t%p^ z5%5-5kT}S1;CWg>1<>#acpo&9I4GY&w^%~Vfv8ttay$c??NDHH>|o3iI4%imGM{0{ zay+mfJec?)9@H`gZEN}pIu7vwWVbVHF&Jq24pyLoyUO5UdC2iOjG%#a4qtFS1JzsL z6}{kP&7j^j_>3PJuoCc~Co8Dy#0c6B%qJn^1{$wZUB?_FSid>Eo;I+b}hq0IoubT<45ARCYzXulZvU|t8%Z5E(4 z5zL^eLKg)v<)HvxWbFewz6F$}z@-XkAP#&?A!uE?1{04056FkSpn@Az_&YLYfd=as zxVgcH_keG=;OAZg-KY-Q?2I(BQlS9us4yvjc2y}b348=?OazZ}f~Vj>my5tRWq?~J zEDDTZ84xW388-x-Xa?$iiI_8MFgt(;DM0}1qnN`XyrKtczxjTTfh zg5|+Su$eKnU}kG@Wts(=&HznBL9%rQxFy1+zzABf0xBpWiXi17$aYYhkJ$k{&kh>C z0JXHhSB!vK9>}U3KnwF2!IKq^pwm=97lkN*n*s{F3OoW=!6#YpDDr{K1b0PZ6c|C# zlmHR{jWU}tb$|zsVjNlAK)c5r85KYy<pwMClFRxZ$2Ior9>SxD0XOA)nfX|O%1eMaz$urP-#tPs`H692hzzr@I zLDLkVO@KNe9%y?5BWM`~s5{0AZ;V2$g^-|b1Ke^p(EK;sTBjbSI?(i{lS0RGM+SFA zb_K!ZppqL@P=KBE2IM605jh-=_wBMkd!!XOz@~tu|A3^MN*K5mI30P*z(?n>WGRB$ zmRtx$J?G%w0_|3?P~di40}^`Tpa}Aj2xtS|86nWHmW(2=BaNI<<%eUM8)7}QhH2ZaQvtOX5{fR+(~7lniLaDm1|!DA%?AUPgI9!Ca6UPney zmI2L9fHs{ofEu%Wkb(|Wvv{f;0+sistLS~p9$3D1rOMPmOOxWWP;MBFeu?Mf$U~b5K<5ZF<3O1 zcmxF)AX>q_22c?W+KUP5ZK*IQh=8}p3PZNX4z4IX^1=-gg(qIPDS`$?I6$L&OrR2R zGzy1C6#h8w0g1vt$2~@)a7gCD4S%3fxaH4i6yh&PiEMJd1Jw)EZgOtZ7~)ONYgB1+ z_D?6=lO%q=JUAyK&Fg#Tz14#_B7@g)Efg=@Y9 zj7H&*jKT|>10hj(Wpm(Y6cUI+Mgh=V187GxQXl>ZXxy36is2M!;8r3_fx+>~nF9<0 z3qcdA5?KP57C=`^fUZ6R9qtI85D|E^kP$Tg=gP|J4$3ZGB|z#nLOPYyo3TgeXE|Oz$(z?2ZDW=u;! z^a}>iVj=MG3X>+&67aAz^z1Xxlme6E62!1HXhs#hB?vUo4H5_S)|o)Fo-LsLyr3x( zCeY*zXnOJmLzck#W{?dUSprARr4+yimI|C(0Ge(BvmK{^{PHIRGBC;K$e_sYxa8~s z&~Xra;4w7?K?MPU!=TUy1r#V8K|}QtSpp|pK<0w)Hsj}h06o%U0Sk0R3t}nDWROF2 zvIGuEfkF{9O$0vSY6@sNofW)PMIsAy;0kB~t_5gX0Wy=o1iqdEbUYxF29u2$lZGQ? zj#VH_fnDHl8z>Z+G?)ZHVO$NLC|I; zh%B$bV|mDG4h_dWO$QkSCV7CO0DM>)XzYp~G*iNmC9rQgC?-J%rGZ%Bvk^dR+`*^R zGdV7R9J+HJx=I&$l!g(!Aj^>lbkIp>H^>lh;PGS$w3&j!o<)(_kr^~E2paE$oVMo% z8GZvFhQx~4<_&TeXki3+Fby>R&gOV$$sq=TRW+bV4JKU%(4jlvHLx6@(?6^jbU;VT zLC;&s!6P`JgK{_>85Fr385Ot`IKe|_OrTYKVC6O_ z$|XSVl2GJ!WKiUBWK`f$;07xP-=G6l?t-FR2BaJ`)XAX8=g6qQr@#wV&H_4go(W_x zzXB8J7!}aYB!0LDSwV#qgB1g4l_P@{0|V%2d+?|q{8$PG1p&BfW{_$|B-Nm!BSFVq zLN{%CC@?4p!c~I{KqiE0P~L@3Q4osIE|dtJHpn9MW;00<3R6yGgu;{$s|amFiO`-w z7NNIDi%^(yA|n*0d{{+jJ4%H14zdXSL|TyxQ%+=r!juoG2we<13KYD26g1BWxepIC z*$1kOLHF{ofR@aHXWdOeZ4Xd|2%fP5&7VW><6sAEXk`SQS^(Kd1Ug*+H0c96P>eGR zv=$SzX$P{26SS~S0d)111n9a8(3V08@O?+j3f$mTf}r&);N_1DpczU~qXBd+Amq#u9>^gG zpgmuRbK{_UF_{$vK&>B8OAowa5V8-G8N8$ww7nL-4^tp33v3Z+owBfkAY`{QXbBli z7__}s5VqtAu37ViO)bufc3UohGJ#IX18vp^i9#=6W`bY93=)JKufzme1jh;h(ph(Z=a-a*CK_~Wtuc?4sz{~|+;0W3y2s#8Gu}2Wxng;I?L@eb$mkDZcfzCYycLlg1 zdju7jKv$K4cEFED<^ACjmHU_(*+63ipiS~fV+1mwJ`-qVGWZxf(4sNu*>+4;44~a1 z;1ZR|k=csD9JD|dw3!IZvxn#dt(uhsomT-~Eda_Ca%N0C;PbLTISq9EwFjsN><1nT23gF7pr%@E+}ei87wdn}-WfdRD27j!)=E9l@)CP#VD zib)nndB-0hV>WAmPE7$F>jB!*3R;_xqQIoU<|vQ_DTg4e9EkIo9KbS;Oad3bR#%;hZo45s0)|Ca^M}>28y8L zI@m#{tgwK(^gaqK0*hBNf+Cp(v_?_ja2#m!FpDB5hypD&1Rcx(THFPd;Q{TR2CY5> zoiYL1-0TQh{|V~o2~6S!=@J2Lo(3@lz@ZE}K0F1qeM*BV0kQxZv^iUYDaDK_!|}w1 zGYpQ}3M`;?$c{TeoDZANKsP0^fRXh#6A^ z!hJUwvLNnj*n;G~5Je#c76lrYeFW6SSsP1L`zpfp<$G7aZ^_FbZ6p z3=Rm;%3@FoX91t=$^ySS6m+&LXb%G@NrU$Hu!D}?1+8#a6a=4l0hR;pd;u+A1dWL? zN5GG!12tSg3x7dsAfq?X?GfOn1b7cNND8bA)P76VSz6FfE)|~ zTI&Q-1vv)40CXK+mcY+KMNq>Ev@o1U;6(uFjxYsY@UZ86(8wc*3BJHhAWPsy1?Xl2 z&>B=`&~^vNnQ{WKaU<}RJfMJU0IhTdF%ZofW(8(VP%8;^s4PgUzzgucY(^^ve()V> zpha+spc@hvfN~vZg%mN-Gz(-2Jep<@h^EddLphonijbn|Io@b`PQ7S)OO0q+fD%nJ z2}INJA)TAPBj=`9c%$hl^`hw`HKJ)YN;FL)5KX^^bTs`#j;5D*qv;v-qUklEXqp1r zJO)1!5VCZhQGrQdbCII~sJ{)m?~NHW#R0lX^#JH#QE<;w1GG(9ffdvf1fP<|>o==f>Sf?S9c z=s*pS(NHM`@M-)IDNwzHBqgB;+G+`r0_|Esk`e&lwg-^{9dwE$1-d8&l(IpGae-)r z6!^SU(5++~AQrf(3_5lcWQxFI&`u%f`AG+unYik~=Z1rh=j_gorBI)2XF1jQh@HrgR~1k7n^~s6aYJI0jM$ur84;8li>UK7BFTB^rwM(=nCxC zj5|OFwSXG`>umjHMM61?vXq)6Zx zsBgps+J7f-(HT5H1wQ3Sft#QED0CYwDE?rLc<^Ft@QGClpzS@N86g%8CK=e)1B|x2 z4EXj0cJOgZ&;yhd*g>rq@MsFCLC;~v1Uo{B13a1nT1E_N!-Lwv9H3qd_?RV7E1Cl~ zn!=*MApjjs0iBx!9!)_#Hwkit5u_2%;t0C1GX-Q`3g~Pm#~F-S3S6)wlp;XA0!PrP z)$mi5V!)>=freFhzyl^Mpurc=sY)9dvlO7GDuDtIbcE6j@PG;U`e4w235zDv0wfVo zF9SA&0#O4wLJ2a2!U8IB92fjP!Jq(^gq)#d0=mcp)PnvEI`$LPZe#&(3IUzrWCCk8 zf_ed(OeW^c8la7LARQW60_QS8eiTszcNGK__#p!%TbP-+5qoPP#Upr2kpd{Gf?|*v zv`axlff>|s)>i=Y3?MvnP-m9|G^YpJp#a`@171YW;0W3Q2I}pChP+^#jld_j^FZ!3 z1Hv*aX$z-A2vb_F(Y*A-NhaDWcXfJDdI(Z@BViPp%3CdicYu+JkcyM-x9bX5^b0A?*cNwzh(~Kzw+?r>GobC^j1oa(2 zWdNvA%>>SxY@j<5z{iz=dMZo~3fzwJ;LSdu);VNw#Rl3+n*-XNyo6DaLxBwxk_8HEpacpUi2R@g>e_>LLb8Fn!(0k%ppoPf z1vb!f_X_YB0cfsN;BX%!NFiv%jSaNMfk%N2v|Y7Efeq9rYG71g1C9T&D6k5w^a3fA zQRD?t5{i5ZY@nWR3+Mz5UhwW6HqdEWd}kfaN^-wS5WU=;XLEby}ql-}7u+fr?~K`Ly(w}P{2FgZZ> zY>I&fzu7>=3}~csGN?BVZn1y{NFa41qXv_PV-sjihZ|(05%_F$X2hg9Mq>ta3`dp% zC@DLlw`CwwSer5sDXc9Sh!oa_3`7cRI|d>JZpMI)MPOzyXSM)0W0)YB4=fLDr)Yp` z7}z-i7Vy!2Q1gWews9RH3~IVC!R`r02!om}ObXC#>Ih*_lZ6R(TQFQ0G>WImY+=p} z8LWeZuo;sE=(sEYAAZCH?08lLesv+0}9;AQ{ zo`jze2QDH(V?nHrJg`a~w22n%6n@aD&n)1RoWX}Yvx17q2#_G?#5PvYuwM-5m{ZUY zvVx$%c|%ai1lB18QpBPNy7^HERH3qhiawAlRI(I6+q59=+T!g9nn@E;V0Dzp0-aUM z>WDaShZS@HgNiw`gaX3R;2VfIz(t~HmVzimA7p3^bRsD9ysE9x2IB@6#3=$yRt(EQ z{Vvd|AxH2XYa2oRIR$3$>3JHUIupEg859HHF+b4!7N}_nx?znO+{$8h1Z^Te2fjR_ z1$0OiX~RV?O-xzUICh=WOiJEbio?f=1Z^( z*4UXG6xhMK9S<;p#x6l^W%fT@3=G_$>&ZBn927Vp(x8QfU^UR|*FfhbfqHQpKo_im z81Q(6SkGh5ya9B<8fc1(*>M3#6{tf8QVt0@h_VgL=FAH~triK`1#6%i8$gH8gL`|L zObeJH#}e=;K+pDo7zQx|QALs-@kSyq629P}D?ln+T zV*_NZ*HLChA=qRKtf|2S>JEY17&4GHh5{({f*On9W(cSm2WgFfrYu4f*g#Z-0-Iw! zxHSUeB``aHnk?Yy6Hw9zO>KiRE}H_IqXB4k0+h`_o47TYSU@$VfgAK>LvTS2K9B`; zUJg6xOe}U#>VUUnz;c|B)=CNJyfv^LU_(G>P_u#hBist$HVvre<_1^IpeB$D$Q~O- z9uVaKX{)$^+bZDJ2@mLmVS%SoAXyej^8_?#0B$vb8q;6>K{7m`HV25o0UFY017$@E zQ0`*`og^y+k^mjo0Gf6I?j$ zlx(1}UQjauBw?Z`2BIt!#TD2<_f%FWuqlXxCSkxl2?$RHH2d;{iIKG)ax9+$ljGU{ z)e4M`0wC-yt;Cq^&kH(v5+uUp$ejf~MA(trQ(6gpZk@myMkOXt8ewv*fNpbEV05g{ zQessAPZKdKf(L<_9BZfZyp_vqzvmFJzrL&Y6 z6_~S?n6g0&02SCBnF~S2GlCBM2c2QeSXcyZI}W4g0~IuA0y(zZQ2|^xfln+|6amk0 zfQDYc4K4{q#L-@$?*O?LTKa&`M6rObD1l$Q13r7+(Lj+`0koO~ypROc zaDWJFDDo+QR+4}hksyRY2XAmg+GpT{RX{^KOrQ&k1r)epCw3!LgD&9ZhFrjltQvIc z1~=^3Zn$dDK{lW%5Pt5dpr~Mnov#jQS%YVLa}*drR}zB?WN@s2!v!=023kg(r2uLV zgKATdqnJUrw@ZM|DS{ov1}c6)g%M~l2y#pjc&>?60dn4&F!)q1P)!PMJA*0)Sfq%6 z#&RH)EU5Ddzr+`OaRKP=IZ(G&6ubxmv?UuHsjw4hKvH7hOOruTph$&}CRr#jI38ih zQsi+2t>^)rxCK%y4n8^$d=3LBp216cKz9RzD3^wSE(QS~ zr4C-P3c47?0)948pn2DuG< zhLK|f$T6UU5kTEoO(q3%W&=<~;b@TMxBw)Da3^R=7+ekcfa(br(Ea8Lf?0~fOb!ad z3PNx<3WLfGbeycOi&9Abc7y=2B}6?lmHrS124ybmW>)1 z4KoeMp)H`poLB!fzzy(ec~H#*IUp7sD;V*?pa34R z2A`VA3c7b5bW}DgY=Is#XzdutU3ig@qkX)0>v!{ z*dL$)C(vLSo4_y7DmTz*8JoZ#5EFEu7x=7jP&V2$}`xXFd{DM|afX1?z9hYoB z#{do%&;mA4JobQBtAUoeF@uI_Kyd~-j+_%bYRjy_6aYTIYYuoI7j&dOGiWg!s7(tx z_?{a)YRl~S26PaUCQ}c1Ko-mejes%3&b^0-2xNiINt=VD2Gr1pZp%>s-RtVOVf#5y zsNs9f=dvdH`*Q;)2`>F98~Ce^~??NtOW*|A2NofD#S( zbQ9>E@Zc^q`1EyN1s+f_2x=~Z*DmsbG$w#Au;K$90SB(2Kqq&CuBB4ohusMeIxz;k zEKop!6LKd!D6T=iQQ#D~4>knUbY}vY2ELeq3Dk6lUJDOC-Xud&Sb+<4Ej$-!RSbgy z7pUtDY9d1Gu%R7Ir-wi^-5ZUjGeaPnZjVOO*&z^3cc~FgQ<#}}u+~kW;+_#)zzZxD z2eno}D`;7=KqWM&0ip<9C=V*AIn9`S93>!=h~RD)XkjE|njbWc2VVFGx*P&jlktN_ zbivb|pxJfso$jCuK0s2SnIecT(3A(fvj#f9kV%ut2h2yn>!lfmz^+ z3CL%VwZ)*i5;VpK-l`x2+U?*dktJ|cfrsUwz0#mbMo_|M z1x@ENfp{^FphHC26xam1)D%GtcJOs&OrX{v=uqnk+s-h6nte zZhWiYIF|J%%lRh zz&3u6LLNmPP!NJo4Fp|($z#R@S`W*l!30|m3$E}(kk-S3&(Vgghh4G_wjLIAWVyhE znV=OI5?KQG7BYe^90#4&W)1E{Gbr$ZnswllL&5P1YMFyZf?(@YAdxC?!Uwe4LLp0F z=S=YF))H9)JKI6)L78+JtfAA63<8srKCmIrNKWwBxaDPx720#VKAC{*TH z09MZexwwl-fe~aiqaritBxcY-oEl6FN{kvz0$}IYgC;;AhhTy(`vfOPCPx|2d9gfM z3d{mWLAP*#RD)N;3xLw1E`xv)_@W8$b!aRgKQlQfFz7OXF27&_`GMJy*&TES9t$X$ zu!7b=JA$vyQv!_!DzSl@kE{x8f~*W6CxOoHgNuQh;2Z+2%Napu0P;ApK$xK8!8rdqK-Bc{@{M?Q&4qRdoI1lP{?S$T+0$L9P%XJK(bxfcJH)s_LWRwBCuHI23 zOJE1+FaQlE5k+Q429OUNK{tyrLmRh_9EyFf6*xen;oyDOpv}w-;DtHha|A&}<`o9ecKbHa<_XC1D3Ac7zyec{n;dPxr8}r- zIsodzfo_Op0_{sTV`>1~Q31-s;LFH31g^J(g=#<<8FZY10;j+Xh)@F~c!3h=HZm@O zX&^Dj7SPGRu)D{YKwMBxhaHWe01<)gJ%Zdl241h^*wB3tRA{y^W(n*MQvizze8^M) zyGh_a=q42=&=x09XLbOi?hy8<`$9PCrcxp5=8Z-j`MGYIH`ZMD7aVmvCLBf0b@M=@ z9iS?hBTHZ*6{2p_;EcK#bB+?5>sCXLMOJ{G5&{`V0G*7=DDb>Mfk~f{1=LOimEfRx zX%49Q z6ljp13A7`bL6O;!5ma-5DmKv8Eoj{Zx*`lTJp$UX44TdYMIdB)#2^bYJpwwT7(8@p z03D(QpT`1ee`9X)bWi|~s&ayw;qa?0KzAi_fsUPqXoXC7D=T1U4=N zUrpsG2|Ae^)T)7qnKAKz_q6eVn(hLdz+<_r3T)Ym>>zz03|blk&J!Tx*+G;0AV+}A zgKX_{JhJ6D^zITCkm=wPtU)7U99bYmW=sNL3k1ORK1UYV4o=V|8rh(p6UYY8>Inr- zxE)-e*>7fWW^ud%H=7Z3FA6v4+-Ok5u_$m`F^DLzDDYS@h=Qhf8Fd*z3&FsuKs`rZ zh%}!SgD5xX{xa}-R|S4620ai@6tr^=baFKKoMi=e(4}3VhP)WaC>8~F$fOI%MOF-A z;KiQ`Trf4_5H(y10-$^gQ6mnvLkzUez1f^Z@DoE6Y6^+M1>Z5BrZ z@D+*sp&QCUtwdG@Ruu*X9CzI_n=z>{Ie^ydfbNR{H&{Va1mL0z+$>{-v|be0__-BW z1ima}1eIr?uGJn!1y)cCiCv(vgArr^4|s+cv=#}pUK)JWeGcfND1pzQI;jB6{0d^0 zfUdoV47*2wnb3P?L08{^cb_MKMIq~@SwWi^ITcvJ>!l$h@2sHlc`gN3&_YJ&5^7e^ z{j#7%K%n)~kdb#*(0XYe1y;~hf&yd-H7j@}5342a_z1G) z93mnC7J;mnW(BX8{?dGoK>;iY8jWXlG|5r`O9(WBhT}mUZC3CA0gyM0-Fd#;5SgLK_c)6h&dc0@J<(w z2y7uW0)JzTz>VW*nsSxPd`=CNtQA`1} z7!9=R1#-DPsHy{BGRw>WUWvmD(FdAlN7}rzW9k70MRvz6Qx1S`lvPv&OMU>De`<9Gt33N*n8zFSBEG(B=%9BdzG#u0oh9LRD|ox%j3@C5BY0!x9$mp~kZ z6lgA#iNl;Z0kqmt;EgJ{dBK_mIk1C?L4g-^J1!5X@&a?1HJKAY7k7a##hAkAxMlhQ z(D`8C>o8`3PP0`2U8l|r8s3=0=-4t7bTXXdW)LOl$OXQd2DCg*P(esRK;UAPBWME@ zGpN6&AgsVIu-_H5p#U_UsQ_EJ2kM)x69DzNLHnT?Kn%$AGiU`AXig2hbCsWaP)FGU zJ#0~SV}PRU4lz+S1rlYfgraQyFpaV;SaaFU0gAF2GpLx$Hjp1>OR#K|WOlr==l}y~ zARn@-L*PXxXuuM*XaPE4$*jR70~x$GW2$jf0Il8t6*i!OdV#IN;4BSZB>)?Cum_O zc(wp^7b!#vv`EVlw8Rs%Ngp&NAgll?MnMLG+x-HtE&&s$v;nOK07-${{h+Jyz+D0+ z(B?~!>p)VVc0aiI29>iGkgLK#Rw*zETx$Xyn#l}WA_QJ30o|(u+Cj+yTd$2+cBTLe zMg;|C(BfAW&}|@h7C9*Lffx@KIe>1418s=`-KfS7S~<$>$O3K*gZeW%3ZQG{6_^Be zH8C=9Zy%sxMuGYMScf}aRD*iVFD4&C9qvFLWbC8DaL0_nIoz>l<{@H-I|eM`7GRIK zSA-*OG8H0j(P+exIm9Ti5PQVEBph+Gs1R{;hJ3{BhYm1KK-zG^XvXvhbm0Y)8B+sj z;|T|7c^i|!#yC(-#RIO$APek3yGB_+$1X8DegQ2Ma}>xDSXc>OsHFfF66ml2>5+gf zrUTz31>SXne3UJ-E`toX{$sOZ=m(9eu{mBie276{G3YE?$2$z5;TG5qlMCQWM?v?} z{{e3>xx=7{w83Noc=HBG4P=K2$Z`Qt9|AOo1ghx1FoR~QxdeJau6zSl{e?M8V50*_ zQvZR9kVXO2hgo+%nH0#41FL6@;V-XI8cGvaRPIez@L8bnpb8G zrZ>!xTP!~?!|JOR(5f?jGo}s}kXJx+a{{1|3TDSO;LS21Ckuf60=ZJJ0~GT7W=uWI zj!zgA1(_Ta1VPF{Eq#y%L9kL##XJGB^<*}5^&;qiM5K$@bQBl_ZZw1XBOF-@3<8(* zKx0Xu0U{2h^Y}nZbfLGj*+4F9V*!odFzPaJf~HDAGoywI%#NX1purr_D4HXaH~6|z z1r|PL21W+ZVYwh%Kr8tLK-OH*1I@bXGJsa%Lfbx!prB`kY%Q>WP%ujbAxA`5F&Hs9 zI2wTLP+$X*z7VaBmZ0mNK>`Zk#mG=$&=r1;Dj?fHo&tGE1;tCyHW8?WzzEv1!U8&~ zm{FHORT11EvSKiX+r|kp9BQnir6QLCSU`abNf;80JdE5RKQfpxLEP@h3mQoTHE$R} zbN+2UW=t&LtLQ+BoMG3kar1NIiJaS@3;96fHw*&*XcsxRJ3#kBf`)4t1TNDxazLJ< zL*(4<0OdSuN2imAL1?5!6;9@}$@zD%4q<2WOr2EH#7J!81Pal(4qk*(3v$142qzo zQV=Q7QYp~T3wYr>s6t@|-5vkn{c#3?NuawcU3o!^lR#I%f;u-@pxqWABSE7=%%H_d zpoKdS8BqTWG`Iww%K$CW22XZ?dPd-3EQ>6GW>4^HD$p8j(DVq1R)DR{hp)2-$w0=w zK%RiF*;fFqa{@WpQ9|Ik6zEhm$lgfsjulV^2e%q}sVFmOM*`^5d5|X1xE#zV&=gDn z_|j&E0CNVA?|2j#AREXbdO$(J0P-7BzYSy!L|g%UvKwe&z)a}I6amCM3+P^D$aD+n zcoJslavV?%4K$N?GV$e0c4Ry#6+O$W~00Q%nopeC<-}&2Sq{CLf{Rc)6KyL1}X@EcH<}r3rsf$U*XQo5d>;9 zf`*|*K$c2?FKid70qyow5K|BhDFQ8J)MOS=6ju;alu!VLA9&tOfl*P?33Ng;gMt(& zJAoR1gnQrvV*0BoP9? z4S|u{@xs;f356O zoJa5x8B{zbatR}7dQ*W5)UpNdAyHsd-~zX7!BH*nyAYhPK)X-41@;Cjg6`Yq0VnSD zOiT_6ASO7|3uFnr1Rs+InzLedoWPWo1>Q-Cd^RNL_#dbg=!7oJvmqyd0(JsZmcUEU zwt7%81Ug+wmjQe>Bq*defNmF8;OFPw509G$)b7#=(5@UtGtkW@;G@Pt6%mUW(*;ml zp2>{q3Nv^+{){ltQInvsyaAG6G-G-IqM4uNY4l)#mVFVTA=~z zT6_R^t3V1kA<@970Ezt%j9CKz1f&!gKnEOwZuSOMX&Outpk;_4SIT6WF}(r1N(Qu_ z2y_b02au<@z<04QD{wi^sLwKEIs#U5gc%gApp$QYFoPTbznp~`bkjR%LnYX9kQCC6 zd<9VT1>KGRfR`-Lfb7NxX#y|o0HrCAmlU!T_`$}3)HOglOIx6wB?Uyz zVgxPzUH{dnA7GtzIUFHhmG5D0myVn zX`{g6xBwG}Uelzz#Y#1$4|dxHRBb;1D>;3{np|c?x`P7<89d1Y`$U49L|?4hmd+ zEDVf{ObpzPQ>LF}aMWIwGYa%A0WE)LQ{YnI6nIz;TBid#cuU||J0s{U3(!hx zPyX9eF?}ZGn{Xf)9@26L`w6z~-m|UaAhhADl@+ zFblMhOGrUbfepNXLI|{Of(>+1>Ov8q5wW5%);@^)-w!XbpoAH3T&YIAMCs% z;9bZPpyRi|$x&F~c$fm4CUXNLXxdzZse=)G?d1iGXv3)H1@T*8i;XqK>> zGk*YG0mcBTqaZsi8bE8JW`OD^kUoKTpoQC@8Gk0n8BAFMEejYOZ-AH4DX@SF5hlkD z@V!|e6)fN~9&!S`;{#UElK2jmEP;8w;MLP_SRI+%KsnD5wBU!a5Y(1+sqC?N>R1 z&R1suZIWRE9cuvY0Xk|Zaw>oea3;_p6A&>4MJ@%<$ps3a^Sz*bNYJJj2GF@)ObXx? zd5|S<&^{UHWG|>X&~0`MpcB17$9h4;6qp=0u!Bp=b)daQ;GQvP<2h{Y6!@4K@cB+5 zprh_VyM$RmQ*1Gi?WoY@QlNE9OrTqd*+Bc2!@&o-3Ys%#fMzK{lbhg%4LfKd6ljMM zXhaWmffl>KAyLp0AkdKktRMyhXgnCaehSh!Vbx%QHBMMT2fT19u!1(f_J9%!xbT9` zP=c03fhH6|Gn61J!D}BapuJdDN6;F7P;~=6u!0%1CX7{+$pX}u0ej5=;x!WmMg>6y z(2^^KEP*3@QjpW5zzr9$^S})k&{{1}!=(n~U>QXo1y<0Zd<~!ina7N&1x!0;WP$eG zu!8nZ^D3|^@Pbb+>|j*j1)bx^2ckgB=6FF>4yZ>19tURyO;Cc2;|H(oV+9Scf){zA6hvb-W* z8tekwiWNB&m^GM8AY;D<5A!R$?<{YY(RtF zpb!Hcsm`ATDknj5f}oQhK_`hagW7(eo$Y*}Rd&pv{lhtqpcR}#3Xnku1rP&NXn~_2 z)RbY?WJ)k+4shg96b5zsK$pE_ff?Yj2qb?6n1hcg5K$0;Oe%v8+OX~jI+BY)0emDEV& z@yEOh;HA6Z*?rJNJm{bX@a(>VB6R64cy=GuQ36SUX7?Q>6!{ex75KsVR7?TXAp%K( zR`ogxC<-VrDhPn3#1%l14w3>b=>k`Xj0%EaDG3EZ1&A}i2d6MYj!$3)otG++B`~R( z5xmGoBTGR@U>hj*7{Lv0M~N(fU;T{WbNa;{84DGKVS`Sf>lCIym-m92gh=xqF_2A8 zJ&cgOJPe?TDMcm)2GD6>pxs|QpaPrOvElgv27y`N3oCgX8zDzVvY?;y0Nr2&8sZ1t zRmq4rW=??-xThUNh`7`Fn|WyK<8S6PA>u7_b~xv#l8U0govXAsD{+Y5|}Oz zaTX)!1kS}t3J}ep11c^sfX)Q~-|fVuz~Fd?AxjZ-Z{Z8j2{j4~j{S_FW$z4*y^L9k zd}x*G&Eqr(N-s>BG&bS?^vpfunCihoeK z#t15@0zmN!IzECCR4zp*a40Z3nq)aH0J*#eluf`xJD_-2QK|qkTwrk$s7()ZK2!)a z`i|I(#|bLXK(PXAs6%dWQD6jh8Nuy!MbI8SD+VP6CPyYK24%?JFBJ%-0ii&*RWdj- z2)vX4bP1mj`hWbpxq9jBG&+9h8dFpvjeF03f^ORg3*yNyAU*t1v=gVyipS@ zegq^A)(gD@#sXyA8PLHT3>r)q7{P~0vw@D%0q?p5-KoOv*fIGqgTQTdPzx1$zAobW zN^ng8y5MMd;bf8866KG+M1ZYH;71TQh#hMDJ9Akh~ zJm3pTL3fjYcC)aXF-d@CKNvKa?p*eO+ynjKvIk@*3D_`D8kYcj%TXi?wC;xqG)xR$ zq7DjX1twhveQ@Ri2L-6lzy(Sfpk@{L8ez~j4sP%^N>HT?8I5IBfF6~>%Lp1uN0flV z;LQu5<_LII6zE)3SP3Yi0J;ShBn2urLHlt)6$Y~fDBU_fxqJdNiD8i?@CJ0Oq7?)9 zZZP3r>+4SuIIJGO~U=^@c>&pQqkKEwau$K22t1wGGY4x^Tu9 z5?NQy_ztzm`f~OxnUOVfh(^}tKxkxb22BouYg|yZ#%abh=TR?*aOpfZ+03X!|I)4{@N-L-Z|AtMG0o2IgP-1lDg^bH8Fgh}Vjza(~I${EOlhKi> zM2SIz>A}??NYjczgQ??s5NM2($?+)6DH33(aDd!^;uJ=RQy3vmnQ|536wn2WpaTs- zBXAm^_J$&8uo=`qWC2+RIrTw-QQ*=FMn%vmg-9~s<}`~2lYk&MgCZ#WL8E~x3W5|zi{;ugTST*j11h<;43YV8}y*V^gu&oW=tBO2nB@z===jma1#(bq6X@FLXWQj zwd9#WV;`VX4?w5efSNu`;PZyTO>|Jx5;Teq@{ffA=)OTkR!0HI_G578kyin9Ln~-K z1n8z3N6_FnD|9tHANZ6SkQ5(iSp)27P|(~g#0Jpi^dJ`4I?%Z*AP#8UALbYjkmEsP zSKurQ8rlb6oB`&AfNrT^04*Zmgp96(I!K^PJ3xL1n-~LPX)v*Xj$;AuzXdJEV1h1q z2Q8)N0uAVajw%5y%YaSj@F;LW)>$xtmym#kp}TUytH%YpW`Wi;fi}v5hi*Z+02JgP zbD-UgHFhrkm+8nE8$4AAf>XdDkTxsnB*KV)(=0nILe2IawXFFK&n2XLRy!i-79kpa|= z1q~ju3;YG$VGByw0-(->h(MP*xO3}hlO^y`3$)W1v@CKCsNeuipMnqWxs(h#%LX)W z!UR6^5p+Z~%qC_DbEXu?^~IopSB_xxr^{g8KUk>{bjd zjE;XA4>Eu!vOv=S+yc+#L0(o--P%eTV~eiWINFBycY0P=uc51?s=qWC`q> z4jKpK2Ng{WpurGORMd} zF7VZA%;3I+kOHFuixq<~s6d5b&5`zGE(WwH19~DvIpjl~0Tc&|ygM z5xNQxBbc)sUtB%JAh3zqj7b61od;{+1nn*Y^;3^H>yl6<`Z& zdHK0Xi>Zf$Jf>O^F$G?`jfklhl45E#&133fDXB3v9lG@505g345H!l<13t__;3;Tf z6{tQG_zNnSK+}=n_7nrSKx8yyS^;WKu$VEe0nyB6OdCKnqZ!j4W^kLykpr}N27I8} z4rWkd104(C$PPM4iq(+;b}s^Gtj&=_fz@$E$8iRMwbl&W5Z2W~P%8+u@@5M&Xc|d@ zS)ifN5p;ApsObS3(gx9>Ivjj_vZDa_pf)D(6ffw|Cxi?K=nNF_U3*#Jlk(s)pq7Fr z1BW@Y2DoJ81kEXe?y~?fKxf&(3(rf*7q~&fEc- zR0W+J&IB?*pi9MZ2NP&Fg8~mI!-2{-kR%Uuiqr7`GkDH$F*BnmsF`knv?c~T{;mMN z!2-M)Pe6fDV51jk=Lcx=i`8*W-+55+16orGI;TW|P2jR8XlM^{q_G0Kz<2OGJ2R+s z;c#RGogwbXfOI8{qRN1KXk?3f%Y>ab$rg2CwG?8zlyw9A{Aw6Zi?9CSp(o9ZCi|XAM#%iG%82 zX6TU^t;|dU^{Cfffv43Ywkdx8@&3us0gJYNJ##ULs0d=aR2XMtXu zAO^18K~muPB2Xe`0nKkSfqV-}#ULrrd=aSm0Uk&N&HRJTOal*p-{yCmuyWP$1vR?zxY(4pDPpn^U@ zfe}<^uz~xNYzpk47A5sBY{;A@ zJY{o&Qa1Q>3((p%P~d`7HnRdJI9x!}ouH;F=*}!Afm6A#&C(KC3QPhI!5ig3hjD_o z)`8~MLB($lcsVS1?o@$Epobq+#)1x80k5VM04>%4pF5GEz$EarnGrJio&s8As=<^2 zUSQ1+n(Jc*%{YLLix&jV^?}Avz*ihF!w-rQ2CcJ(%&LPL+~8g(10?Z-C?0Tu}V6qZ;`VguMGSLk-RbX)v$OISAfQF+< zmcX@Q$PA|mWK_rk)b)W@Pav0efc?k=I-(P#jRWFG@Ju|!EB!MW!K=!^LxvaMX0|aJ+&g9g|5?DG7)LDm){cM6Q#A8G>q``}>K=Zv= z4@w0&Lj)Y=tY%E06IDT{N`X$*;^$Ui6j-(hG!qU!&vXr_`_3k?rW3q&4l+T@1kTo= z>0@?K;mM@HCa`o7BWU#th`AiZOaa9fXvrZYXu-49pmGN^$OgTtg30m1qst7S;)e-z z%>-ygD`@P21AG|;lLixbrq^)-W0nHslq@FDA|g-&7;@1t=za>&iNxUUKIEcdun_1R zF3{>q&=3TuefxqT3$*rzNt0;;XmO7M6G#DQP=pC~Y!*ZWROG^r%>t!f$1e}TgFi1I z_fvp|L?G$E9dw=&=*%GSIE(^lU>R}EA9xrBe9a#;`X#aiW@mvy8`d^afZk6r8fT1I z3Xqe{z!5MSXQ0e8n$JM{xIy_(fJ*tS8MLMayjBl%jU0HW6*TVw+8Y3xVp0SRrGrKa z9MP|l1D|*d@AZIJxq?R_LHEc(<)Gaj)QjYxa?pMccx@|KpBQ+=^91O!Bxv)HO98Z0 z2h>*sT_p$A2W}t2rY$_ci(MHNxWR2v(9%6nv62N^wgp<50~!7Vm7E+|jy#~{V7#Dg zBWrCcr$qTtK4q_uz9JKL}7jk19ia2O}3aj*`ksKJKtL(OW>g}Xj##ZW7y93 zHc?;_m|PylLqID)QTf}iPK0&Yrxu3mzl>0JS8FMyBvh8^kshan3T zzf+(U*&le-2Dxa7$q^(1InsLxRLu>BEXOtHz(;!jVSpa#eS;wja-{bGhAh~T-WwpR zkMT#;WEw?OLlD-8dO{$gCgP2#SNJ1p;c$+qX*7zc7VHuAfIvjez#CD|@JH0#;T%!Z zX%tb7*dyvOfry%bH=>^6kEmJ0IijZ0D59FMN7Q`+5j6*IM7_WtQS*m$M9rX4L^WfN zs7C}MY9`)@dX7J$rVs6i>IW?q0`Kw!ZDwLoV1b>u&H~!|4qA-G0%`?zFoG`HVaQTo z5SYWSzyjJV!2((tATR}TiUErTlLmMQh(Uox;N4QtHV!KWkV2L$fhAKw)4*U&jx3-fTE3kl$$YwBSjsV~O%&EZQ2%0$o z(V)W)zyltjgHJ#s-4H1*sCH2EnHhA{JBub$ggLVSXrC_&hya-{kR{MmBycZDkz0X9 z0knkMilHCW<^?gq=c5Z`3ETspRsb4MV1evp;(=HWx06?aR{<&oVjwnnu_&-;G7Fe9 z7eJ&1KCA$RB%>7rKlmsR@L>gf3M`;86cq*qK7MY}BV;}(oHeo_5hO5&aD+@6^bzu> zP~bk^2zgAk2zgE@Lhv`YkC)M=U$h2$QT7U4ldO3>qP%ykB&JMiI3Zdqlk^5K&X`M${zy5jAsYN7M}H(Nmzw zSjb2NXu=P+pAWhY1hl&nGy#irpEg)k1GZg%;FSTe`Bw095(f|ubap*>P{0Lr+cS7N z3^aKT+PDYaJZQ!QT6_zhO9Y+N462Vfz*FgS!=cVFk}UF`F^HVFR63=6GV}2?l|wb)XPna-6^l z8t+$RakPN0ZvahTgHCm0a$LZcm8Afx?HxfIommvvK-+*pCpaiTCp>z^fm?a-ankh~*E=ptGt#(Fm3U?-qlve*oW|1By4W z9C-W?z5s$5bnF5sz`$~#@k8(m2+)l90#Fd00H1}hfGtblgRtWXq-8vy!6lF+bQuqL zHkTKq0)8$I=srTonK;l@#UN`wuz}~w@z+5|%V|>wJ;PqKeF7J4D}J9ut%J^hZs`Ek zL5uMgZRhY8Z3hNn(RQU3yyJ|RI%pkqxg2N^6?`%PXnm;$69cqu%m``#vp61M0PV;G z?ZO1j)3YeBLe_R6-#`zU-UFW&g}8wpH1oi$!Gu_@1)ADp23?E;xq%)$!w1@@&n5t# z;R9_oCwK!rWQH#Sv_>HUbc}%Gpt^w`Ji`Y*YYcSf4QS;CDA2q$gX4!2 z2N(o?Edlkcz;^|M3ZECCc?%E&bjAXtYXX|$)np1VXU+iEa-fnDv{VFK$$^w3tI7bK zFaf?do(bHwgIrN*03Ob^0NtGes{9;VP85Do14@&e*pgtLRB^S~;D-hR!%01{I4l_V&@WH)Pq*V`~6;simxqK^zXwXJp zN6@8BF$zqMXSN+=aAXD@*K}i>BZ#`Q%~7C}8?>1k)N}xyjSQ-ML1)$ofX=u9F?g~B zPUeC(rGpFuugOAeV*#}XK>btDR2P=+sQ}n}pff!{brNVnCCE?Akc~11SpqGlpjr`p zqc4a7-HpTvS$d%XI=Y4@%aK9gw>L;u12mDK!K4G4DhF*6S5N>q4M5ifgLdFMf*K2; zAO_9ufakMiV2uh$6w82)WCSlw-~sJXVnCW|0^RKjJ`oB&)dW9h50ctEAgK*$2_DE6 zNMwK(Tj(-GL&`5u%s`hj%!97A2Tj;P7u12q335P-&jk)8fd&p3L96_*Eu{k;!vMax zm`4E=;sPt?gVvgWmX9g02>h{x6q%sYp+SuaMhzwn&>}ie*sy`N8Gt5j7(var633R4 z2SH0w89{w=#|A3%!^I0ZIEDS!nJf)}$HfKGuB$P$>EiU3BSwdQQ1wNG(v>}@XbSM>g z+=3On#|m`+F=*UI1iaB3bkZnzs6+sAS1WkfMiku707-#HO2FL$@Z1h~9X@DD6i5oR z&niS>r4Ui~{FC+f_M1eO~ZsO$iE|pzbvIG(ymt zdhp_5E`gUtp!T!~xFHQ$I1Jh!&J8~H6|_7Re1;I(fvF%JK9G&30gC(zOrVXW8466G z+aPnmE2R|p6!-;NAcs?e4ip6);;JB^z$vib3v#%T1ZWBDdhlh_EQ+8L79k68L1#S) zg0?h(*Ut)p?1@kmR^Sr&pQ6B}06u4wOF;&73Se8nM{y}Y zj^a`QodF5z327*R2Z2Dh=`olwfltkZ*v9}G&;jj=aZuoJWOQ7z>4)J z2L)CI4zRcY=&o>RVq*cR0W0JX_zQku^WZ~ld7vl$fjOYt0JuSV zMHInnj6s_)SV6;6+zPCqoaN)lq6j*2gj<0Jba8^?j#tMS1a7b@a4T?u(?0`9FKB*< z6|~tgK!MY-z8G}=9G?RCG}{o+J}?D7P!bhXVLi7+&akG)$2FI*g#Be4ztCpuI472N{khgDj@~AkdnIQ;0#J8z9b} zzbC0M2y`}j$PWT-XJ!-vjc$VuFhM%NJp|NZ1Em8t(BY0Tpu;jj8-u{dxu+;F3bb~B zmQS;R2FXek*acQDVN~Q$U;|Yn6$;=3-kB7b1y*{2&UP13)Ura&R8iywsRSKu%LZzQ z^?+3Jf-W%!AG@x=r@#v{R7a5?q*MbuK`3CxGzFxTAAGbr2WXs4K|q0DVBIp16$V)X zw+%sxO%w$|l!2m<0-K`+Xl=ZpzNcRm+d*;`pz4YZ)Gh;`2nrJNfsBBHm;vB} z+(pco<}fHS z+s4^6m^?s@KL!QxwsAJtsqJJ&+^pdhahquvaV@iG5^j-dMpV29*`ubNi?w+z`qr%W?|vN31_4S3-MXz2hm=)TV_ZQzp- zKzB2MZZZSSVt{D)tO9hs1Lz0ko+aG@qaVKJ1HGfeSoK;sM(teS#s&v0=gi27#N6pvf$5=u8JQ zWKAIGzG}p51=wZ*(Ctj%n^qzq^A^x6NI>UeBh~?eY=!RrpNKb3K(j-j8*wrluaf;Tic+5 z3pySInrY2O9D0@w8k}*I$O08BOpYhF9RwY>&!EACHron54iR*fBlHegCPyA{^$s3L zfzP&PgQu+-71%)YU7#Cd6+lzZkZD$sJ>XKp0(>S9SVmxJB8&q%Oj6)YCU`svG>QZ+ zT|f-b;S`_??LqtQm^7I*%$Y%(^Eknq`anZXpanl5#bC3ciagAjC7|)We#Z62Xq=F=y*#-ZUt`8MlT*nAq3j@#{)XI4CGsomp~;gcxe`T zDFv|wqpv45fu33S@f(g{!=d@t*0o@&8!365y zb6PNkKwJSj??i)%1!NoOzD=Dh1vc>geh}Nh7j5cf3BYVqfL1KXwtuVB;I&}N0f!imz_B@u z&I}9<_6d-nVpiZq5wc>i1~u52LD$MzgKxajWw3Sx-I=ApE3h~Qsdkyk%*X|5V}m-W z&};)*K@tF2QvkX$meGpAAC#g6zO#WW2Vu|wf1ou%P#-dBFtNba%f)~)Ex1hxS+WOO zqsRz8UK}(@4mxs^vCxVkoXG)n^(N?`EGEe65>UStoZf682@+}Thz(?t8obyM<}C1n z2+&#)i7W*+flkm877Zr&h2QMZW(DZ-Md&I)(9op}Xip@l9}uCy0HQ#37dvYJj(%DmB0b<2Pp8lL04XZwLr2BC~BBs zC(D2nBAf?05e#%E6KEtA7Bz@99_EKvhG@s$a*JOEr0 zBSnn?Y!wG+RSy%WytM~sWbkEUBA}?52#FdING!X7E>#DwB0`HA30Ty4;Ex*6!A+p3 z5rJ6@Sw13S&a4101wpG{L4}|Ksv7Vmw%{a&HEJNE640oz2d8XU)IfOPsDUmt9TrhD zf22pve_{%>0m(JLyTNCnjOH3h3j;@8Gaym3W?1JMBANk2<(dI$2F!#+&B$#A5EV58 zl53ViqGse4XoELunucZ6tYBtht7oiH23?Srtq7ZbV=-d_orA~-I&KBD4+zv3u?O8- z2wFSNs=&O)o@PhByV%28maAeq?2n!jz>5+9S;A0n*O|YO%69@`2_KL92LKL8n-@ zflhQ*U;s^rGw`s1X5_da2Pbno{&NGjj;+0pDi_ z_7cbf2?dA+5?KN$7BGTuf>vMxUCaeGW0obe0m4K}W&=iHXh)+d7oo(&Y3z~|wDhH#)WdZ5YC15BXP zf%Q5crh&%2 z*+Fxg;H@m+Q2{fi0LKlj#~DEPB7(-bL0j(F6gUOe8G#%InhpgYviO8fDXXp6?mctGC)QVe5WPoEMaEQ@rB$9TnhXOd;*7A zL9*bb2cU%rpvx@iEd$6y~RG&^b~ih)&u6?D=+=+<3E(7DpApyVh5D(BF#0;?_qD<3BV zBNHm8e zj}-&x?p{{#DkRWx&LG=4vK-k!wljila-0A+9CXVtXt-w!Gc$iZV=cVSf|Z4!OAR0c zrYZ{HC0d~6QlOt10+1zIBH)QQHt^yq&_tY!0)rESIWu?w7PONOw8aQy00(Fp8EA>t zj!y>|1ePE#_2EHUq6M0wV+2*fuvKBGR)UvkfmS|(@00~yEz1oWt_B}X44Qf50Uh%S zE?jv*ZiF03%nPc^!RHZ!&&(Bo97ikyTcYKl04*TFOSD8Bdp;ik->?ZXMuEqX1+hd6 zH1aD5nmHHLVghZw71U-1-Tupp8$% zjv0`)9GfvEI0`5-gGSsy^N!#pmCRWR;2pl8>y#N3Sis^!p#8U53ZUJ+psO4~uK|977L2F(aK^NqL7Oe7v zrj5b-hd@_Wf=-Uk0S|1xSA-nf#xF1*bk^SqhAagE0k9x+c60(W6F=mL`UOlV;ok$= z!l=j$8u>$r4QdgBb`?UR36urE8@R!#0TlXR zIZ#xAHzTru&N~MOKWJMbSPm5apa=zfG6Q;{E{EeC2GBJG3Y-vkfcK{=aKapNgE32y z%Mo^@IcUyV1RVS?7_+hzps@y8NW}vVQBm;bIj|fw+IST}hns`+iGgDREC-D@$XxXc zQ1gP(jA;Us0wZXO2((Zbv@m4~h~EId(igl`cm{|Ma*luk__okFpiSRAplzYEv>|8O zD)0$>l~!N^Z?WYUfQT}JVgxL@fC;?Wdj_;U2U@j*G@~#Fbhx}o7G$14;2Ng_qdwyt z(3}8x`y1$-V9=IR1y;u;3l1{~{Br*Q2{hj1wY|31~PunrvTq}cn7|RRROYM!HQuX=&l;jP_`Ard=QhvieUlB zoIebpi<0?46Koj}a|A%E)Up%=AOQ)AOVE~72C%CILH7V?GC_CE3MmM}&b$QengyjL zCg_$^@PWgQ0*b;43<|=alheUogihBvawv)@Fer$CZXkzqh@UB`=;shUMzz8a(z$e!;DR5>%iVsi` z#Rxs@9<-XCD@y@XbbuFSfDS1I*((X!T$-gI37Owy1Rrw`2_euLdv2~=J|#1s@k%>{nYeck*py`XbT!Phu2fi4|~ zr~{o@$^bgElnHd(I7AF|UMT}8?wAyWpn5^wAZU+=pL-2-t_{AsUV$03=@e86GMX`o zfQl*&CIRr&19%yX2&gjys;XBoDnK{aE3oi$D=-N>Ucd;h##zmnK-=pTSOw-ZgL^xm z6Gg$t^fQ1K$bma8F`#;0;L!r`>DkN*tO8F!Owcxa@FEpR=LWpk7*zRz=1rleXEQrq z*?Sm#dN#8LQwXRf0M1bC0yEmdc6orNPC+L>DR97qe88O|(COKn0y8110zenXgHoUZ z7eol0XPGsbz=>Ib8N>yhp3Mw9JsTnd+Tjd4JsTn-kp)_~vjBYPD6^wMmg9rHhe6#x z(COI+!W5W6N3w#%1zzxgQwykX2dcwBG~)DZ@ERNy&}k>kU|T_(zfY%wniH^F5EOU> z-gYoDaBpB{6a>wTf~Mc7*%rgL?3&EB7^q8(yDf&f?0S&3#gLX=3n=h7GGl9tf!aPo zpf&R>;8ITr)OrMWW|sJ`I30>^@DkT`f9HQIt}kT__q zGAot^*UucNxZqlWOM%;w!x3~y1JYt^XdS=`8r0xXU}Ci>*O@Cq7Ua0$ywlU3v`~)#p>-hbRPB8lZ6p;uc#ExyX4sf+B}{HPe-a=rz+M zNIihFX1WYIcn7rfg;n4xh)Gn<^keO5Y&Fxf4vd-!Dui4!fi7`i)?h-enZQDzst8oa zP+T*$tUC>>neHIhO#eu&nQmlatC>b)3lz;GFSbC3DuM2kLbUpzCo190Ti_FwAbAUX zq7qSg3v!}T2q@(txB8$N3Axn=6{2h2f}W@ZYW1PyE%1p-phb<46O{| zm$yb^%ODGK!wtCo4mtlyB})O^MyFD2tz~9p1GUjX3rt}xJ_gXH6;{yPkq7ALDNv_| z6|_+(K!Mfq&8&mqYJ=5rI(RmQ6|`h6UV+td!(5O=f&zGJUJ6KGrWsQPXj~PBK@)Hp zh|9)7he$DI7rH`D!Gak8+qehX4cjo!QIQSAXqo2--c-&88mVLj4Wrs9usX7UhD=#O zEqD_JR!5C2$0PF&G6?KyVr1Y39iWGNc_=ri7s=?z;HC(koK#>0&9phzn=v`?faVH7 z`(Z&VDOnx=|NsA=U4bzVBIEdB?m-5Df5i--o9viD?sxD7O&NlF46LyI+VD_OP=JJr z3TSsA_)w}GIEw?a1(65j9gx2`K@5<;Kzsic2wJ?O zz#{O|nSq^x|=Kvpj1{xRujhcfLgStq}sLSag>wrPqabN@J z&_O1g%jrQg@=Tgc(B<@?Nn7ZuUmo}>RPfqU=yG}<1@HhB=twk>Eg&ZlT24<&Y~Vaf z4!XI4+Og3SkFvSpwJdmq925zl00u|PkdKWUD4QDwb8KMSYBId@MjJB|Pd)gcMbJr@ zuxkJq%$Qn0gW8N%4Ba4_$%>%|bbLMN&~OHUnJDMZ&%$@^JgEK!T^az|ABcIrBJ_-Z zb~Etmc+li9_A8Oe*hi731Z+r{r?S?!{$Mu2tMvofuEmyGW2L{ z1L#zoql6<1==NS_(5WJjLe3GiwTfARB};)3G6xEo9|8AkKw_-0xe@TmJ)m2V7aTpr z09xL}q`>S5Vhg+%2kquy0JW|_`w777uhtRISvp7IlPj?j7bA>X{L?>sP++P zoei3!5r8bC!c}NPTnpKa0GeFj1dlvAUSS3ekuf-4Wrm(q0=~bC1tbXCUIn`N9Mob2 z4QGPdWIW(&;0qnWhZ}&~ijJUonsV$A=jpQk-j!?Ogd}8Ghq8iDNPyw~NKwSqytuBziz>Q>(zi8V?UUCZ*E1*U) z$YBwnwzm}ns893a4oHH6=z2GfVDF2wX{zTBmDbgclHNJO6o5-P+- z7sy}W=mPnRw$ZiX%TZ|V0=3?eqO0dKNP>dsf*61tU3=cRLZa)y8&_hYYsQzORL)&z zJ|872cR@l06kVWDA(Xp7{sKoA$X~RLt`i?Xv4SOcK|*_kMi(ShK+y#%a|Tg#tvP-S zn!7*_L&{wrPJ$#Th%Sf$$hm9DaW_crT5;TsnB4W})G;dOt_>g)i6{&qp+anQf&2x| zT_AtaHh1-$2E_^}cY(6~Xmo+D)navogbFCSK%qh?chNDrW_&%4J$K#t4w9fCcR>t5 z&RuJMxI=Q+h9B<4kK6MDBuw3MjfjWe%a}0{IJ^yFmV;ZSHFL35pdg zxeF57BQ&}op#q97VsaN9qwC?p6VTiRau`x!_+uwXf`aIR7=WC+9&Gi1P^@5yu0Q`k z5)?!i!~m4&`U8uuKSV`WN5e@f7lwQO6PLRnp+as1vUUVy1tz7gw$O>PIwYicXeE%dURbpNmShh2^C_a3*;|wbb5Nx{imp$yKeNIA}YEdp+anQf&2xI zE|9-y8(lXSfno(qVK`?gNP>dsf*61tU0)VJqwB{4qM~cXGHOTHou$M@7bH}OjV_SC zz|jTr7j2{K&plAAV2Q377eEpeL>I&Wdsf*63DyDlvChBP&NftiY}19z_|TTt(Y53?wWI6CE8?OH5-P+-7sy}W z=mPnRw$ZiaH7Hg<(FH1{k(wHi&>o@D1ql^Ubb&&JP+>^N=<4_ii!M+pjTBvHzJnwv zh%Sf$$hoWGD>Qetd?hM(-S|Q6+|>gzk%*QdBve4r1qu~H(FO7sICp{kMcdr<-0{M%! z(RIG%4E8~&3GE;W3Ze^Q0CIG_Y4U-z3_mpa5YsZ8({YB%{jLk`XNYPULPCYu=mPl* z99b3g zzrfK2@)vERYr`2(tbn2mRH-5rhLF%6q0t2i6;O16LWNM>MaSrB_y>zFw7Tm^!&wH< z^=4%6OoSMKoV$Mfh32k5e~HRn7aGq}xiD-2nMg!a0}?8r=mLcbq38nn3!J+^{-SN} z`qB)F6;SR1ISeUxEdWbUkh>rTAV=4mCSO?Hz+OicIT|2fC6?JO`AfZBRbb;uILD0hKMX{6i*3GERYU64=#MHeVk2o;8OjIJMlVbO(F8188}M_Jtk zF#tJtefSH_U0?nZmAg(fo}+Tz^{3$+QH3ESR6x-M3Kc@p1@ad-cY*vx+uU`e4HPS& z+y!zNQttZD3X-58cR>t5j;=keevrEBK&u}yb=Q_QYDd?UPU4~q5-P+-7sy}W=mPnR zw$Zix6ew1(MAwTmAPEYh3t|9rblo@sjjlTET+XQ>@sD?la^(K3XD3bD}z@)tO| zK>ng_bhVrV#R@38K&3QN?t+B&2#qdCsDPpi6e@%YLpny+ggxi64?XL>I&WQMn5eDxl~hCU=4S1~xMBfFf`aIR7=RpIH|9X2>&_gaqU+59YDd?WHN-_1Bvgov zE|9;#(FO7sZKG?&QBbUaq6?Jmk)mtLPLKoz(FHL8Il3-vhDO(w%|u1ljh)nvu0O|# zi!Mm0fT9Z&Duh~wAb)|Q3*;}_M%Rz0pjZJ#7h3Mx^8zG6L3BY3K#s00kD$@D;}KEO zb>bz}qw586(FF+=P;`Mpg-~>X`~{9KkiTdfU3-6lVg(dkpmc&IJYbp3ftRCG=GLhb09@Rzvgf`kevxIDxm0^&ICH4j8y@2nU@(8_JdPF z{sKoA$X~RLt_$lyu>#6nAcrC4t{;m*5)?!i!~o>zdN3avT~Fo{6L7Y$7hY zAfZBRbboNl*}75Cf2->&b>-NbY*EA()ul^<(E{D(9{> zAQOoggo1<$vC#$c7dW~={-SMkb?gGg3MhAhN@=9r1qtmD8eNc30Yw)mR0!2w6hzl* z=pmD67xTbwiUl3Nh>SrOi3#wrFfuVPGjcOI=Q1epf{s;&-0uN_0DuC};RDlRAn&0Nudo$XKYr zD)3JqVx9Z3FLS+u$2l-;6w0rK$JXoBgSiUa5T8J_gHE0W*=5EAI_sO!jEMtmILJR7VE=F^ zg3bbG(qQ6&WKAAW_F-~_UXG0~jzl1LDS}Sl2S?Rt91Tny{bOR}0~K+gqo40wORb&MxOGeO*&7jg9 zd~GO5jt!FHdq6i$vN^t)e}X|^N*(CTUkOFX@!k(WM>vB{UFXTl(qv!&-Fqkix*=JC z$q_6CI`JMM#R0lb9wx;Jb}UpE$ibQnJm$;^3QUd$Sr9b>uRy0JbHGkbW;OsBuc3%^ z)V)C#^wvX11#q#)1G?KBWB^PUbi^^}wo>p#r3lraQ;xYn_b~E-t%Ios9dyj4z@MeS zk1Pzj9K(!>fm?wIboC(U3f>9ODh5=J!H)h0)xHWWpxYHiKvxZb@(2s)5)c^$7Dw=f z%3w+bqC^8kfiG*;0o^YT3VqPMW(**L#T{I#fif+N1}G1M`Hb8OEU+x9z^nk4VbEY= z5P0RO2W%punxb<0z7o1uA+#eo^FAU;(ueTtL@; z6e{v5uz;Eb9w0#lK8Qjdh#UD8SU}AL9|Z;len$~dHO#}n&E3Gv#Etbh_6E=~?2OQ3 z*_q6kIzY#{H4GMQ= za6D=<1(-8~nt@DUB?3PS1@0y(g2Nab@BNHS4hr1h!m=~-CniW8)Mw6MtoH;`QtW)3x>>ze_ZUq)y2G9+(pjd+B2n9ZV?zQk3 zXkg4%gk4|B0J<878C1o2DS#<&1!l(+H$ca$`+yEtzX@UmC@?$j0kc9Bm_c`BG78-6 zWCUF{uEE3sx)Bg`@i*vZQcx=abZk2dDA_P8u)-Q3%o7PAHu;Ft>!?kT`f>xb_BK3OF#}_ zP=sDEUZKDYx+Bp6oM$;fEn^3NNE9-I8tWop7b!p_vdx%8xE(?5H%8EkTL0P$JOn824AFnUXY+zP@9EPPCiprVn@Q6)>@`a(t? zCT;~bM*+~W`b+}T;}qCHZ6bCM1*#U<9Br~d!L7jNsGKD*t4M(jRMvw;1%B5nfXo1k z2)t}!1m82{$e_UD3C)je3e4aZtd|0q#c0Lgt-$6efozkEA}7cu2}LdiHU&1vQw&*V zOeJ9EX%Mpl%v8<-g##O?dQ#w0;8b99{KAkW&>E`1=6Hr7O93n)uptTNnllVp0&l_2 z0XfF;!~Vkz0)5U5AYXETRI6kO+|LBr3hF$uX)tjpa0|Rv1M3!e+6S&THJMZ(r|5&4 zUEmrDh0yBTkpomKC@?z;WMwI^f_1_y1m8!?Vh*}m9&|+~n*#XGUK>z?0Ts>Q1nZ)} z?8sxr1i~`rDf^GwbUVjcryX*?gpseHrp%lPrfeqv=1xQmJq!D~SE~CJAUy!&8 z=;~fjehUCy9tF*Bj`a$h(vaIgK^OiiFbUk(;09U10_vQC?stk%;8I|7?vj2cWl zN=yoj?jQ+A5k~=#w1^UuG$^>0Sa=y785Eg7xq?xHi9?A6l&N??{SlB2jG%70NR|R4 zD8n#GE3z^>D6oR6aU~{45l|aQAPdxb6H#K32H#c=GMxoxFgOV^fZHX^uDnbT$0&eZ zC!@sb$W)T0#G=8(;KmES*jYe<(Tx{Wq%xT?i6}7fGV`#2stqPkLCWOH%K~yCGstlQ z3QXX>J(B~-BRonhAc{kY6=V)8=w@ipwI8fzOdR~&3gG6-3}(kV1tv%4vhqSRrWwqj z%c4Ogh6Ka_0VNhtsmuh@DFAI3af6H$L6U$qnE1J2hRy*Q$_g@Z4m0<5W=3XEQKgWr z#IC{s_9&?3qXel488nzc4G1MpK>-F=UIs@-MJ90B!Q`O8pv%DJ*uYo_5mn%D{IT#d zD4&3o@-l%EJg5=GBgoAFxm1nGL4m{ZCrAyG0!R(aI3{k8sS50%0SJBtcE^TApwT!H z1$G4nP+`l&0AX>MGf610E3iBAgIXmZ7O1bttiTS6UXU9FxfysF71%*HZhwQ=!mhz2 zqQS%?D8RrAx>pUw%^(h_Ui%DD3iT(FFPS0EVg=m|4>APi4GJ8~3UMqO#5jD81?MEk ze;~Ipg4kgH2{0%!aVxMpDrBiJC@_I;9|w=bATbPg%uJRp>h z0wbtxEU-loRvrZ)xe;2Shkz<{N0uyb%LUw^F=L7WCtDs3CKd%&*hPDwTk${xZtS4V zc02-)Wg&KeZp`F1W6FS(%b-Gv9n_TvH#G_rm_emt31~dWaZc9(27zblpu&qskyim+ z-hmnuT;OB}YAf+6fD5`B1qM)S8g!=&FQm)Q4I1EK6!<#{RIoQdS_EI2n0V^h>XaEA zK{XJhTgj-wq~X{E9)W?Bc;G=mW<))sz#uShE_eus0W<;#@{*&0B8vj}rX6NbQOlyh z1a9bpnkSALijXVUG?^I`K|@OrDNys+Q9+SSfl+}C)c#Zy0JT2Ax{QaDb(R!1t_yq=Z0Hpr~e4-~>wvgD+JBNeP2mNucZ9m>ED# zX(q=b44{&hBTJxNRRMfonhU6EQBdSkU;uS!xD>!jpx53wN+^PgJ?KSiM;NkT;sW3? z6>#N_q8`*#V^HAD0{1@=>Op-;Xni`;gS}&5g1w!YQ5aOIOkjd`RvbAX1BIY^8#EdZ zx-W_qR6Q~)Fo8;WW(LPQ42o<_4hn3b8jabJ2h{Xr`@_Y+z^%Zj&sYNKURX2sF)1)Q z-eJg6Rabxsms0Z?f5!6axP-J#wfV6Ny1t_SEtH6xh#AQ@q1z85YzY%oDBFg=Z5(-R? zDxmx=k>z;g%|Ql%`Qcy@fgf`~eS2O|Q$c}2;LHMW#|1Q2tCA(KHxtzAVgU{Jf+7wy zgv9~wwtzY`pkY%*PLKi)&~U8dABHRiE(K13*`VPp8<16h7_tODse%WP6qp=svIGt_ zfyU)PZ8=ASEPiYGAbjPx=@gK|`~kQQHTMS)jf;lcNFrE=SNk zkW2>V%nv|@U0?*+^nfu-;Gqa)YKK>W$#D-@6ePzh(4Gq_%|Jo|Cz?T8RI&uNw1K)+ z5dT7gVM`k$xF~|u0NOpXv?ZkRAEcp<_(P+{=cBghsF zP>^XdX@C;H0(kxkT5xN?V!=@Yc0C$s;1GJjBol+90PKb|e(ku;AB)_0;N}0PzRh1H0uKz>|+IWnAsKB1ip4Lg2ZGLIY5+zA}4qqi2|nrhrpXo zu#^gDgEVN$f?EM(HmJoR(3JyjT7!DRux>dkv|DZm>SgLOFj_I#gD)2b-4h74Uq=x< zBc=hGbpm(0L4_Nuqg|E)tD}9Ez^x<&R>unrAl?IpEP+4u3apNx`x3!|0<#(zA@+j> z1r8&+;%g4Ty5gWqf5D1CU2*WV6(7h~9147(t~ki`(5^VECX)duazW#~43KeNkSsJY zDX=<1n?h@#WfCYtpj~mi4c8M>K-XT#C@?#I0kc32*G+A7X}Gp2kkoM9fzoh=xslEd z*DX_zGYCx5prGOUY#LI-l^U_Nu#Hh*3yr!N;OTx&M-~Mp0dQPw2s5b90~#M@1zo|;pup-lrTYMbz{(m>i3=V>1`knz z3PSLhmkgxC1s=U(asU}G108H+1{Hi9pf(z)i^%M#19AjQmH@;_;49^IU`|p2If)b8 zF#=7JgIXux5fsq0k>iQ(0}PHAK(1)f0e8JXb3qK?(H0FR4Om~(1Ju_*bF2y|>OpEi z(amkfWCH3{nlV{G9BP7as0FO==K{Gplm$9~1+w3a32YaGBO?x%fL4fr3SZEy7V$B2 zb@0Uu#7QG7Ww8tSzVw!BLLz_WC^SQ=NSP|0>znUbQ!>lj}%y~ z82lCBd1eDF&j^5qRzPhC(1r^ta3^Vicm^;h zX@HzWIL|ceSTTU6fEleA!0DJ-mq7=TXRH|f5P1gfSPe*?0W~QU8r)^Brk0Kg3l22Yn=?x&2q>^Gl7C3;Xe%V0dK;Ri*9?)ql^kU%w27zVE85zLy*r35A29N_-K&lu(^TP}ZETFa~ zs9c-H%*0#I1nSm+;s`RZ1@2?&fO|NK;H&9bKs^}^CLTyo!+p!b%b>st8XX1=mqP-B zmyw4V)M)}w_%nf~`~)CfRuND~LW4=fj7bGl;jr?8uF7TxO)!813S9SqdzGL?M4(9k zcF;f_*d<6>!Tmzepd}NiHsb_!hCqcs6KF2b0>ZNa^?*PX6BDR8&!NC6a8v}+b&-Iy zZjr{WBw$?^(5ejv4W=!-9Td4i5wK&ogCfWg+@Ms#1e$@w^ak8RE{+06M}F{V z)(Ozy1bFCroU?0QHQ(a-gw0P{@D>E$8%W!6L^*iG}{jv1X2J^`Gamc2QQCs1Pvd6 zmrQ`B`QgHl1sE|3ETAqB^xAL{(Bv1l0*fY-10;GO!$b-^5LF=8f!AArX4e=L7#w@n z9%KN827_Ze6DWT(ICg+*2?obbCQyoF0X436XdyBPBrrfXc)tgY0I-0v3VaOMQ2>-d z6qrGsB=9IaWXu*c1rMHN1dYIGg1h;w(2-tHPahud914t%B3X)TjtYwG3Tz7OU}HGI zgSZM=SzsqSg1Vntp34RI>lK9+Ks|ks6liR~kwcMNflUG2 zw^tNV0Od%Kln7*emkpfgKzF&r$9Ja-DKI%+0gv`7WC`3Cgyb0TXfJ47fB`a*h&+0$ zz~CqVnn~mZjR1y#!XDK9=LHo>phSL!0hYJG{eNCahZ1ZDG)^2r18%$u&;bCDdXTf2 z7!;Tsp`*WlK!fg#pa2K0<$|?`8NlmQm=zeU7J@InU}cZsYgU*+p#&NS1BrtY4#dHrH7iglUWmn-puv2I zear&p%%F7^9~iO(-md@!9-|fLj#Fk`27X6I(8?la$b>s+%}O)0FJgc)^ax5d3|0*C z3QV90KM=(Mns)!s1}RvW96-xTIUE@aq2Uf55`->Z)d4L`hGaf)qXjg)rpv$y8CnLf z(NSe`0IdiE6;0rEt1=1h!Slt6!{llcoAcEpF2}S6VRM6-aq^Se)7N`~l`9l;mn5oMk z1{%y%;Iv{;Q(#iyvSLsNRWVi!pfNfwD+XamPzXYt3LaY1XAp!q6`bI&^SaRfs}G+9!fbhdB~MRe_`d&47}ygeX5m1 z&j^)6L#r2Y;i3zq7jfmH%fR#^KrR6HB0w&npcm0|`3TXyh#u%3Ak?~o2ej8m3B0_T z*@{6N)Izml(02UK2${4}V0Qe^Sg61PB0(J~(0YFbW-A6=$H$;;2%vd7kUT3$-WOaw z=zt1k9ng*g&^o31U38}C9^;~OhJ=kAeI71 zp`;==$mQUE1IWz^JRlO{aw(7kDMeldCIw!wSEL~>=L2&U_#iH40vjs>vOt$X(uzR@ z;(lSc`-Q>o7Y0wLfGRWa2!H~p?gs5%0nLbkDh)ibp*$KJg;or7jg2ncc|(hzpyc8W%Q$J1#WH zhzs$d8W-Y&ATEYh-{Z^!H%Q;(!UMN~>3e`&0PcH$TtGqJW5vT`ME5;LzzoJYqGvG9 zbh|@lFfMevL-Nmn&R`6!{PSUzJ0$;nS>--3`3K|zaQ*?gfP(z9X3g=@{G$M$0X$E1 z{<-nM1CoF4Jn$F<`DX-_ZD)y&n+E{mEkJ%;DiYd^3kfsz9^(pxy4!=|RxSC;|8+Eod(eXu|LVXz~-p0L{8% zpE;bilEBR22q?9PuTemkg>!?}lz=V^2agR8Xp3wF#LY3HYm`6#y&`Ot-^<)_+YeHv?YZqYTBgyXOglq#TYAGJe@NVHndCnj zH}r@b;`7anJHe2+nR6$25X8+BCPrS+@e-gN#LyilpjF!ni~`sA91TFn<3Sh8Gb=EG zBtWN>fOZ^cD6)Vy4uQ`;0iB$30CdC%c#OhP0kTFIECpI>k0b@!ZqEia5JV$Mfi^pW zmI#B+J^|54QlKO7Acq@(PB%by255DbCbI+RfE3V?D4=ry85|81ITaW{=RSf?I^cjG zyb0RG2tO$WA*_IWPzpj=0{NU2gfM7#3H+E8gfM7h2?K1oJzN-c5EtaYg1?~c3ap^j z^PuetNUP@)z{l=@R`?6-^a3@DctBehK*ybd&O#Fa9f`&wu+su0BLZqLffxd2OrX<+ z*g!`MfmYQkvO6*=a)4ILIWm9_tpjcB1n+u+FSD0dU=(Pq1+82Is|O#^2ic#-2|2%q z3v@99__!g^wmB{{CKX4}7Bxobt_2|lZUtu05f7jZTnvt&BTN|;z^4)@3WLx8FvxuMnnNLb_J3G?R9Vj9c2pJd?TvB2Q^R>l$b!<+!+=4L7Nd2#X!e^fb9|k z?T~<-6KJ5o?5L0>FsYeQ5p*VqL6(Amz;_7+X3!FGd5GMvenxK4CV$YvZAC!^@X(qH zgMuJG_YWo}-gb$-Mm=5vw8sQ?P!MS8I_!7}&>DEyDM3ibOMnmJgdGtC+JeQIr2r07 z(B2$I&`GAu42qy-lU!K}pa2DLY5`|P$e}g}uB6hLRW zaSEIl14;3KPb^^qA3d6&z@#7uIzEs|gDC-YVu=P*3TPja!2c8lE(Iab$vj*N!l3;g z@UwwCnIR=VXn#9wKN|yRJd_0#hytL!AE1qq(5PSmotGj3Dr6KG6Nr9kI571%4puId`Q^4n;F+kQDgGwgQdC!e1 z&_flWr~T?Euq!Y+GM8k*4*WF$9oDD73OmySd-CeZPJGN5f?9FRpz zptFxa20*tefevFdV@h!p0N3dZ;A$Qesg5j2QxdEStO`&m5Q7DBq8KyitTqNsCKhvM z2k-_(HU$RownPvOs>0!$uRzCeL!{WD=0G=JF@Rj>V9uc2c6eut{Zn%1kL7>9`B2WUMDj-yi0t4g- z6$M7Zp}z%3=>HlGeaLoBibB5;^9UPIJc7v1E90eRfiGoRB76+&m zWT436$Ozd4?Z^N+atKz;GHWn_E<#||U;IXUvD*(I=6x56YZT3Q$IKW&_B>4Bit0+My0s25PQ@%>Y@$3O>CXbYTY*sQLvT-C6>&R{?Y| zr3~nNBpJtsDX;G^gAbc#0&fr3WS%h56I9D;FwL0gsmQLtpuhuaEi!;k)8yb`<_6U$ ztVnvZLC1Bnf?5vX8%4~SD-?L07;6-GLqG>hK{uYXgZ3qY_Mm`W3X%tvN??~ND6ncW zYbb(mA2Da{099~&=FFgz>Kz#%j^PK*D}o#Y>U@A2g`hqN^zdA;#R6dGfDWqy?dwz! zP~Z|+CkZlk0;8fJNNxrrxGMtQmCOKYOmKisv|0e^L3F}TEeG`=VD&X4s4DYe1=K#a2elSJ=PZLOame}Ith}IdlNpj096{%jGAOWt>IF7XE8Lt3 zl&&G#pmnhehzHv453Y1Q6xcyqb~!;OAAoB*M|seR4jhj1j#HMNWDwY_0Xm`!bRIse zDh>fv#h`W)xMGe0X9s3z|AJoubZG$SP&{zJv4D~;gE_MVG&_J!djRDI7DowqZeRgz zGnW9RBrXt(15&&3DnRd00BeDG4rH$*=nj|!I4cFt%240}onFAFz@@IpioR*{VxRBUB~4)1fU2Q_dQLAx#Y!C63LHfcDK5tvm?&4a z0#{L?Bk1&x3Ml2q%fQVI%I@Bv10z5V0kzKlGZrdxf$oM-VC7{1oq@>1%B{c-ax@Ff zwJf>}3<_Lsyv(2r5J2aQfHrSGyTl;yB$)vm3ZO$C;e19#7SPe9pfmFo7(fLM1NTQJ zCc%2}ZvO)e*^12I6EMLCw=yv(ihy>1L%Kr>u+Aa__@rt@R&ct89ho2sI*%QE%s9A< z#H_#yN*~Mu3XF~lS&HnApiu^P&Y&btf0W?Xpp7I2`=zC zLH#Z!21RiNP|*+S=8A)gAZ7(lu(_ai2O@ice8dgPUf^Q@z||&b%RYDsh$iIt1yHHZ z137^eshCz^0J)A2)L+(QQh=m#eo#LFboU3SOAO7f3Jf5ZfqDzf@U!Ct6$BInvp@%B zg8I`SSAiN!pyr*Tkb)5CtN`eNn8FG|3c{e{3WcGj@pCU=W)uK5NkP2>Sho#aTS9wp zOrVx2sJ{m8GJy8p@no4X>3}iFMvwOFCQI1M`da-{rKnr z-fYec?v#My8I&{`zz4g4y3mZE&Ic1HbFzXA1dV<$f%_n!QyM{~Iru~qSTV%|I@l3( z?GZbur^xQe=(yw40S193YM{fgLAeX$7EtXCx|@j|RC|Lx0J?Dro0Z^mGesa<%|REW zfV+P(Aa{Tca{%}BOh7!)X}aLslt7yac|Zj&6Xp3WZyLv956CgC0 zL>zlQA7Bu;tqxYIzzsSF9n|9k^%y)9m_QWhvL^vZ`x$)J3U~+sat0P?P-8TPmji1luLX3#JtMgL4{qu~E_nf+gP{QC!)|#2jn+XozcRxI^T<3i19U75^vn$K zxiHM2YLmg73TI}3R-g%Ff$n&jo(nnj3f%kypO*o;1PpYrzoS5w0OXDr(4h?Ap}8#Z zpd#|BH*jePs%1fyJ){hT3}S(rzRXDHWq|H@0gwFgg9rRTdu~DJWP#dMDhvv|{M;Xy zn1mpw^?)l3&;b-8prJbrCJD%q$)KzXzL&)Y+-n7$=M5=A*uVp_S)g_#1Gq{6563Zq zhSxw<0%&v^T75w7F997JBLk`uKnK8pssxZRpo^ctWizN12Qr2SG|T`hTNTB?xG-L7rUxfoYeqG>Y z7bCc71UlRkR-!xdfX3?-S-_`Lu_&;D@)G#60Z7pS?h3(5X$8=*9;lZF9?t;XX2SsL zZ-Fn10o_Fy>hr?;^dR-{`z2yPeGoGy1F#do$GaII240yRO+cpxy#XD_2pT#8 z9oEPJ8foMJbvZx-BAn3cZ&E;K25B&*C@={uMZ5kc1AP4rO9|)%Fz|_nIiS*AlNnqF zfljT0Uw;ECY?wjqPSBVD=+G+gbr7Hd7Y4|H3xgR`1;q96TOq)gLpXq@lQftd95*aF zz##AfG>*y(>R&T(gXVYm>N&vkJE(`VKVWo}0L?KdFoOdZ)UITPPR)P@I~hPzIp8C~ zm_VoKgL>ZJ$Y6j*254%A6>{=7WDu1B)WT-~wa7uYA%S{X3hbb%HqeEZphLqTN5(Ta zZeYw(EJ`bK=(F)PE`ZRiGa@w1IvMDbwGDFaDckT;8`8e z$Uj&PRPQ)~TAUo9xi@A|F9mc2J6I0XO#xrG#R0l*iy71_0UfjsmIHT7m=rj`hfi$) zo%P3P#`FYqBd8j} zQP8nqpyG$0y9s)r0@8tnpd+869T_1b%~lN2pvfpli7e2KNKB3=w;cqXug{>tbYq(% zs6TLLo1;J{_yk7K;fats8Z=Y^-Y>)g8V7O|$r3o3s{lSTBpNcc!{!J&4Gi^=HVfz> zZJ_P}sH?+l0iI`8U~;s`64>ViYG(6*4;g_>m>582cuc@Y+AAkH|DKh}I z`$0K@TLIke2laBeL6tJN%b)@slmMR*2x_P>IjX>_Rq%8)lZrVr_z*$x35%eSdLB?R z2cOLbJ@ycE7aAXEwg==(P><UJvS!dBA#j&{Mx5wm>Rg$a!ATkm3WBDjqO^&!u|6 z%*X`ls)3q1NL@A1q!=UkOi@s_$A>}p4>9lwFfcMPv#_$Ub8vET^YHTVgO9$N(QuLh z)TLr_Gyz>W3%WJQ@eEw-2m?rv59F8$jWC5WATeH$*c!N)8c2)>Bz6fdrU??`28sQK zi=71<$ORHS(F8M49;A>HB=#IGCJPb+AJEv+3{wZTm>r~U0bEQUq>c?Fb{;Nf1`=Zh ziM6)C^nxA80uoyd7n26510SJz3@#=K5@Q0XyAKxws{Hpo8cgIkE(Pg4)cW+ym;Ut1u`q^K<`a zVq~fZ$!9^PszL2p79|$wB%C8tp(`)s77Eb4U0I4u;8`-3Y$fo8M=O{?SAK!68&qO( zWG-}Mb_d_D#o|~8KB^StEYQFgXjq%cjA;RAyb5&N7U=jk2GI350ylZMVW|f+@D8$= z33MtPc1Xf}pe~THR}To~qrl>L<|XKyOVB}~ph-PYSSm1r?mGp|AMk)LDgcWyDKLVE zxIqK6pexLo92dMg$RKbaz>!gb5p;AB_!bb*kRQ}U*c>gW9NqBBQIQqI*z(E|Jm1O+ zn%V#_Hdj$#0bTnjp}+#N5OmF}K$hbUkkPxEz~|C}u7Ly%nK3#xygtYv@Jb3aU#S7w zbql&$7rItG0)FDB1`}w74GXA*1WmJYg4zn;LERLPH<%nit56U#wCtd%IZg#G1$G5y zf%Bl@6Yxc=p!Na8yG-B_eFYB32_Vb+z>~%bApdhaE&z!f00kWA@K+x29rd95yFmA| zg8GRn3<^B_0~$HIyyzS`8>DF#Ip5eJH?)E#%DACvkx=C9@`Bu(3rfbIlnGj}0Xps# zy!>OJBWF0}oO7c&hr(iwhB@auEppChCPwh3gh)+m(8PEMcxHzQd~=S#Iw8Z;2dj)f>7@`!I6j&fFanPMekke9GtQdqrbv$_XgH-`MwjKj+2rIA( zJU0e4ghgOCx3Yl>bw@@}j}7VGR?vzLP{$_=d`PkgY9m<0oEdaHE#y#Rg)D)MqTtaq z&@xWYR0)WNEf`}4jma~CmZmWqC@=~fN(HraG+`Iua4JAoe1J~W1NGt{bCcYVDIU;4 z%N(E;S&)zbWfCUPF}C2%0^ngtP#=!RiUD$3pAh)6Bqm)3VaREHkn{gQO)zL%`akr- zdQhMmT0jh-l{k!`UNVCt==NrT1yTx(pgI#ICU7Vd)Ed)K1m8lXp}-_CQA2^z zQ4-V~fGU6J1UZ-*?3`%OBq5{;5B7lq*pLHYL!d*Hpi_`RYt}%E8U*IYfsB^{ts?{t zUV>)a6hHyaCUC14+~xxY`l2)-i_bT!h%JWvx5#1;4sxj+o$5wN@?gX4l- z#~B2!IBGC~7H63;Ie^0Q2t$^@?l#cfo*?@i93?>m1fZ@hBlwu+(R$_p~!KblS4nd1B7(pYfkf}Xp=xOMD@YB%2L))D`t%H*q>^5@?b7s(B z4htyPfmI1ikO$SnBA{CZKnwwp55Wu25EJum!GlY%a00D;1Ye%+*mCGNgTT#3 zM$km<1ZGBlP@5NR1`yP7W&|Jf@2CK}5qM440R~5IM<#(6$&jsapdvwFswt>ol2K%K zWCl%ogQm8jhl_${w?Qi-L9^dTS41#@Qa2l@^A1{0zy!MO8gy%D`y9~i1)z~FumX07 zsi2ucb~7f>^#UAL44{cM=nVxN;Bz_^K&7MOc96qZ6c_})#R)tO1TB;8Wm5GFk^VuHpik1VlHQ38Yy7Wb z%;1Q0vMcCbWd-n*tPW&^1a!xOpgK9lQ2{o}2)-|tNr5>_0hGlYB@{vZYRH0d z(C8xzeDo1?8!{_+Avx&YL00I!gPG1r&J{*r8*N;tHTKN02Viup+p4VFwj2%nXVW;M+DpQWBtHQYHm< z@Q5R5_zb*45L9Qv#v5}$iB@2WIQY6j1wMf;kXyi=25>S5Z%F~w!O-z6@R%YbNu!P@ zp5Jzm!I1^j@5Mfz2);4}d|@i+1`=lQmKDtLL`ZD{S||cad7$ebK%<6`NkCA`2xC04 zA3B~0Du@u{i5!q((ExPiCCYdrcsYRyXjl=nL>UwyTqxs-pxFw@NFO-hi5O1=O_ef% z5<9p`0Nqo_3%R-%ksCl8Vwj-giF}}ol_3L;pc_xXS&{*g^fAX18{pF#_+mf?I-+|9 z6a&n-VgR(lA3CrL8tVkD)d9CL(MNOvQ}17LF+_`{zC)c6N&X94Y!1KoZ`tukl= zH2jBU88igKf73_^f6#z8v8&G!0-FLWysfRvAOl)btH5r>kfgw%!0!0x4zlT>4R%Z# zOfs;VAOJEA7y_OqQ~=#j)&ttI3a-K}vIG`dLK-Nbu?K-oV2d>rxf~f4xj`c$psR+F zEC$`?$E3hx#gGVEj_&vd#bVHXem8pA&v$U4`{(9vjXVmQZpvdEilk%0#(zXMm~!hv=0DYTL}^c_257YG$$~E z`j(*kAi(#Ru_=I8P)z|X@L@A!ngJe;0G;On-d-_>5p;nzcsVDi9|5{nQGr!~P2i&_ zc!d@ChA4qo{2&`S6geCj6geFkL2JfA0Sdl_Pk}+;#}Y;!7H&t#-Pz2L-Z^NoEp)vT zGw42RP(2Kl0`00mNP$)zfX-C|Rkz?pS8yo>(0Vc^4#+euSg*iWRURg8P_Gwc26V~& z4<<$qSO*wsEXV^Ko(c>C4<$e$2f9}SG!q9+-rznyxcdQ0!Hl4(El4=(GO&Vb0$m0+ z&?Gk~0t>AeK-bZ+STXQ}3<6=0VSI>Nkr;Iu_(A(I9Cbi5Yv3CO9Pcu?f#-n~7#*2F zU0~4Q03+!3_EsOzC92Gz!5lHrj4edMAWHxu!Nje=AaJ7@G}r>_G=jR+Fup(*if;rU z4&Y?~xkeDe0gnXfG6*TMIo<^=D`5lo=-ELeVxUMAv{V*itpvBK$}P)H|Pm~2Q)!a z;7z=s&1ekJh2etWt`y9X+k+D{Rs_8e4kQJ-5Dvax#J~}>@tjG43$!x`RE|JL zZ5%Wq?eujpuOHke;xC zIWsuvF+su$yorHHfl=TuXtg$Yz>S}~ftg7VGTeq%(p!K-8q})=^@2g`q?tjfjR{l^ zI4FSDOe?a2mrjCuO`zVYF!&NM(85M=Cls_mgB5gL8@Lk+swF^DpiU^bLj~%~DuDWc zW=t-SH65U43>@ZU|_5E@;cIkOC)Y8!jhkgD!&tCulb= zs4WOB=|^J#ykwrd7`Q`?7-(T;WCfM;p!GBG0cX(8BJjp45m31d!U~K|48fqWF$NGT z6vP5wunJZs0lw=K)FaRU)sYg=QO?FUQx?}Ku=;=$gD!eyuwsw{mAs&#GLT{wkTwk_ z3CI7FU*BN{DYIgb;|A?hmIKdrv4Q6dVaA);KbN^g!wZuscAv z`La0bWP$Q33#hrl4syC9#2xHl#ZY$`!Q25-YymP?gGmS39Y$bx7(upPgWX}Q0BXk} z+yT;Q0&<6rBZD8vi;RwIrXOW+)KFj+cnaFua|M|P+Ib5a7XmN$0PX7q?;HW&9|{_~ z9y+n`Z;-?S)E!u2;p8*qSony{BM=KKq3ik3CSO451KipGuW$kFO=AR2#ei48fR>l2 zWI675eTG5cVV%I{4n{>#waW^c8DbS!xr7mtlEH?Jr^jjDDXi%yQdyx0E;5%C;-qb6R7pW0y@n>2AZ`rm=r*D3X29)j=+~%^#Z3wbZMNtq$DJTjluz_augcJlp@yP}% z@jwj`HVq~X(DE!c(3uxDpdt{Y9Coidn+B7OqKE>Uf(WPsK;Oub`1)1r|q@EXS4&=NJTz)e|V{8Ww>v8u-q7>_uG-WJViW z)PW5>RWAV2HkgV!u)Fq?SkxWvfERV3d3yoSuso>EV*(Al5QqeLB;PQHL4;~3Y_=ZX&ArNb^jD&zC@Q#FlkAns8dIyD@+uHUd6Hdd#g01;_g4&Ly{3OV+K8MM-b#Sx@5 zPk~9`vMIPtd0yF5iIq;#Upb0u=P!l8qG+zP@V=YU<$qrePmmjpm`hbZuXbn_|*fm{UIWyA|=DS>wxfworhD)2#F zK&F#cfq)G?T`vIAHkc|9u)7|USb_9) z;;cZx=6xWo0{IIXP-FtF+(25*1Zv3XK*pfJO@7dlISnQbM+tXGdIm46F#)X|0Uevg zsK5*wxdYEmFlT`p)u3gIkWIj#^SW5FKqIxF?Hvq|Jv^WVENq}d71%)fKutpi&|xf) zAvpy`Q1cXQgN*`sUy%c3927L4%?@h5Gl5#@8lZtB4bbqo0tbBG8zac!py4vm7DJFO z7VvBarx}xvBdDzo+J&siz@W$vp2`Lt5(FOM1g(wa1TFAj0G&__K^7M<2$(Z~2H24n7l7^|VPF6WgT@_sVB?N(VFd=zLJbB5MuF{Z;QcV* z5nX=nFQDLO0|oy9)ctv&-Dn^!>%rSLtQgjV3gssZS)lDNpzg~SMo9eZU~~i>y@(jr z1@G4bkLenqjOj9g4zU4y7qowY0W<)~1oAGE0y}i&je;VF0%A0mNr3~p@29jPr3vJCj%%r!DoHcARfvNnk39bVSSpw4` z8-hV=;h@Gc3A|ehvcif1eCz;|qXu}-Dl_=3IA#SFP|^l>_n91TfNrY+M+s;V6KrWF zFQ_{Tk>dr8{xE?ywnL8{fUM&Jr9#m7Fi1aSSp;-BCTO7@Xf-CpXn3G9X);BC4!8nI z3;Ze+*j5Qi{@@`h@Sy{o(EJNJbl?eiBQ_T}D}e9Q0j={uK6C&yf5ZgZOad8*2c>1u z;4~<6GigE&9RN!UyjuZ^Cq^p<&>lEl2JoQ+ptVqtjo3W=+#@8scMqlTo`#aXrw+OF z{j*SDE8g&i9I8Q$^bI;xg9%hajqvon3vYN2vhrjZO8SOgm^OsU?~}y>JMe}#IjI$o8Zo9fYVp%-6tY{4pvBgmM*Q+xu%M#lkC%%*B|kYF>t zqvHqGK!N3sCs<{v6CIqJOdxl>0F5Pp z$Du*f&9HH3M$r5zWC!c5Fwn@eBTtqBi@+&M1!m9;F{8kzPVij@435lh&=oPD)q1Rm z5fDevl049$4QO};G%?KV_y9DH0NVHAC;?f?3tnBv4>~^rA_pGc0WHb{4c>tC34l*) z1?vM1XE}n7iDv?BfC3-w#Hj!^6SQIvG+YiINl1V=5iBLJ%n-B?S(7ONG;#;pBLy1p z0UzrMG8Ckq3A8W|bOH%@y&hN>$XOuupxsdn3g88MDB_^=T%lLRAd7?627r!0lE@Oc zZVp;)%9ABcL(e|bQVN4&1lB-1GHqCQD8?X=!ORHGHGVeVY{G&4#JL% zpvgq&5=hXXArGjo0iBonhgpGDVADL%Dh%*Ah60-=~ zpc9PEm;@XjFn}(VQQ!b&0?-a=fh+|M@E{Zq6E{eblgUAW6C}yxc!3eL<>>=MmI5bO zg#x3%VtRUpBp3%G9RRX8!QD1A|{Bd9XYZbSp+8K z2>dGtts`fF?7##M6HNex2oHGFX9_cDZp(23bC$sKILP1+1L(*T@K`IOz`|6}c_N?@ zSSCkiGo~4!=m1^Mp}-5Xdj@ls0x#HZ(70#=3wQ#512dx_sJ#SQ3xhOz2Hv^`I;xz> zamt=U;6uw89DBiSCkDqJ#w^f|KgSCUpy6N!#}^D)pz%r2_!8)pa>owP!C(puj$MqP z8!N!~DJX)Dm{tHCoW|hT$Cw4WcgV4y5p-k}lLCX|ABHT@0V?2j7$}tffUShK&p?|K zd-j6d09rH33Oc=-$#D)?0CYg$m@x6Ac9>$30*H z&{#Nlu>+Ii8L)r}XkZvTPVIOHECAYY%LQ6u!sPe{ECAXMzzv!^VRHNf766@D%L7_y z!sOVq4`gi!e7QSRAO21PzcPDOrj z7%K`m@+t}{fOggLgU&PtU3MbSE$YZv2)gP7vin&Kx>JZ9C@+?zRd!iJ|qB&Y);VJ01v3d0L^BB2I;|rl01+l zzM#W5K_mX4!+$uy%SjyXF@t937##02L#M~U`-E9Qf}kC5pgjnntgpZg*}%(C6hGHAya@L10ia0k25{EkII@Sp(Wd zzy=Ci4h8VC91aC`ft|hJwML*r++gc+Kx=q7&6p&>M`Exkuz`+>YtjI%qGAK>@!)b~ zfCZ8xBl2bquqE($Z|aM<0yl` zaXV1Igbj2B1#}%$4A@jf&{5v}S)hql&=f1^JSAQR1vbzcFwm_7+>U!dy1~<{Y@lip z6#5^bhgX2+xInkFF@TQHW&uqTgO;Z;4ruK&$^jb7kO}6VN?D3Y^)X z)XC^1+2Qn`p?NuI$EzbpHfSk1OCe~=6@0x91L#CAE-MBG1qe4w0nA|lDdTZu1Wmny zm<*s(o$`E z56+^%>zI%QDjPwo{1hQase_039VHZ@N2xP|E+2!4fey^&QxE{1)h+R~m zv4GbDaDa~G*8tC;KsJMeFTwzw^9!1L2VJ$sroaL^Cp>z&jQ|QlPyDj-bX73uwmzGlL>zb2vx}x-K6)Hw^NHqKE=$b2vx}I&;MW-muL9 zS>6vGa|2(_0oqdmI?@>2_F)1!4y+F3IvxcsNYe*d7<367^d1IeVbBF|Tnf;04?&x8 zAOQ}#{EbV2A9S8Ql4{UYB520~KX*Sf11MOT92A&9)it9o1B0Uh=u!hVM`mAMCIwbU zCTm8h5|Ba#=7UOXj*K4QOFTe}U_iyYo*1anlBEDWmH>1g5ab91anLrAECuM91f1YAgFxm;fSNE_ z3eW=y7$NBvnzm4qIp}0pM+-%0G6zlPLex4MC_>XX=)e`I7-%yeIDvz9 zfF}I;K)DN4Zh*=caMET%Enm1mG=J6xke^6xkJ!H*SI2 z_n;gD!{ELEXo)|liUZ{}@LFmPa4n+C0IGOd6hL#Up!G(eJ{)A<0f^62%6Y-tB)}~2u{MmLL*lr=szA%KLE5+!xCOcbK)C=c2{8h+G8-hx zqrfZB69Bp)MkGsM<_vJTDUu~{x|vat58^d`M<&oQ=b-vXK>$R$f$B}LcR>5spxyzc zeLhexfI$J|W-A8Jx;@Zn94TSFb~LQ%7S?MK+F=@!=QqhU?AuwF76)^rQ& zb)#WTVOX~?LyjB(4YIQv z_K-3bg4%5CjuPM{df?;1K*vBRuq&_$+*k;{Dv(`)-BBY8yaEu!RLBAk;Io5^_}I&9+s zLzcknFa>tdnniZdc?|*$yx`$@P6c+*9b^h1+6I17D7yl?CX)^5o=JAl&NGk_fhU;? z?4Ye@paY}XHJCuxBt9$$ji)gSyjjdB@N+SvK;IJ3O^NKFVH<7*4uNiS1rS?c=S+}e z4YCAI&t&8V83MY_njJI{#H+v#ax$nPdDR3Y16sby0Ahd-!(afN!~t?Xcqt!0_fyby zbCBh#pmW~f9URbr6lmlXy8IV$>o*gqn+@*Bfcx0+Tfd=8L)qXR9Cpx|7@(0f@NM1f z@D2{NBLlv94m7I)>)=2;GT>Y0Krd%0$p#^V&uu%l~t&-rLn=|OJSX~BZ$ifQH;TCJIU1o69a6EDy?s8DV z=2qYlcoG6~6OSTjI|FFX188gyyrV$}Y`cacKWL6igGmQGUJ2T837Un1ruc5?UEs*a z&433gm_g+Z$e{|LOKHG|ynq-2ix6=!2ObyQ7;&Kki3{)^4jtm-LPrrA7vOk?M#e9U z$S{FyA_3cKLLf3!ppjvs2o4TVMgZSaGXZpZ4UZWU=oA~!DZ0?ea8Q6m2543EHb`XH zLn6bTn80k&NQ78x2SkpVq-<{uLy__6_mY|z97=mrSTI235sg2{>j zbO{+x7WniYfqmWJGkzfM0?mXuLaG2}(5;Ce^(>%r6MTmzc+}B~0X!kbtjoX)$}hSM zeBeDlkj}7}0yAj1R~$ANpunulAO`mrS})@4uz#jFB1XlR=Obo>+OAR2Bf2GArL1ISQjZqUdp=(tlX zF5>0}O~rx^`UIapNnH3J8$98EtebJzg#UZ!xl52)JkaC=Xm*nkG)4>FDI=l)rX(Pg zi~Z93^KlfI3qe=w)zz z2C{eqv_JziT?Sse0ouR>YSDnC1i?!%KvLid573Sq@W3n+Xu<=OUqMo!p=MBv0n|!i zwty8$7Fhx>>_8QsCX)rIp`rkqR)@?~fZYLJK>%9Q0Y8@$EDSP)3AE`6eqbuHFleR% zdM^`_FepKQ3Ob1_fu#!=LC%7$=zyNF^c^}W3SUP6OO%ieXAFESpqrN%K>I*hKr1l8 zbNvMhpnIhhm>qx2Im95)1Ujk|e9WFomcRvB$ZgLoprr=j1DQ&|6R-*_jvaFkF$kPd z2Oq!(78AHE3rf166X0MALO^Hfabzj53M`KS#UBqS!Gey)UP znt{>^6X<9?P`?ax44)N4J7_Twh{+2|y^ReG4Hafg3z!`5Fo2ezfwm`u)>tq(E?~-1 zVEqHyRR_u;;BEW=!IwCIroNd#D^wKN1g7+W3%LwOusLqvt_0|AB6h?QHc%$Y0c9J| zzUB^)8=*~^CWzIbHW$cpr1erq!0V-6z}HKGq>+|Nf%<2TAT`jHQg^`17!=?urFgOw zkQPemGW=%(H~c{L0x0;PT<~te3C!T7Ob2UjkaD z4DH2$PtpTjvkvO_f{yfI0(arTTl_%F_P}#>*iX^}PuGDrUV?V^fzHH(7Ve;mmIIXI z6|tP82fFA3RPGCbiW;z8;KH3r0lapHd2pSi$DqI@u#gW@G=UahjJ8@p8G*x*ZmpKl z0HkC(8(MsGl!YZlOw z9ngJ$prtwB@c{!xR!0d%$gX+N)IDf96fka` zuY&=*6zo7yox}}V8Uk9J3NEup(>I;d_irXf0nmD1(5e=s^L}+ei-$ossxUZ8WhpX& zZnkv zpv6@YbeR)JmIAxL_hL|@puh-fQkZ}QMFj4&fsaQP*jmL6vJSMk z6l9|WNLE4-y3`SMnIj`;uti$|Y_SArRV3(i1(_^?7FVc^pykwHSq4zbV+1X>QvsQ$ z09x*dd65nHnkjye0u@C81xC;qqJ;t@=&UvySQs&CFv)z?)H*0ko?N zG)lwhD3c}7I32u#19Zg-sLOKzbm%WX_h@RTb87E_4*7yc-&qw{L3`3b!;ChN#cvLv zkqS@|4PHU!0a`(3#o!NGHv>Ay5xj~m0>X=dPzegGpeY>C1+AxS6<9$tIBXyaT5N+3 zYGhSl11)7|1#Jys2G2@83<4UtWf)s*|`(Xw3j6rKM1;FF>te`aC!l=LsO7tC!3Id?zd<-Bi zxSH#Mih%B|761)Kfz@k(9SAzIkO5>Ybj()}v=WIGw(Daw`O`W1j|MoM1N=1;6DOqg z2s+6O(gg*Nz4}1LaRVR}=q84GP}>VE7sKSh47%P8bom;1zX)hyIC#z$G=u=U)gXn* z0VKu(@(t3>1)wwDKnIsYhYm8p7jc2ks{!>dxj{=Q!7WQ}&?-&PeT&SX^{7msCFh{) zA3#f@c|cN_C)t3cP!6);09y|k>jafPpm}7_ygG}cgdzv{w0O{sSfHIcpcWu_de%`u z5j>g(zF`Zx1RFH+$jsmf8d>84AISqbE*`E2v};BabZ3DEXq$wiMwY-yQP6z_3XB5F zW-ux+2z;LoI-Ul6IN4}zO7|i3(c%P@0Y`iP3d44iXf%b>IfdVVuKx#Bm(cF0BMW#c zh6%Kl6I5X^fp+GAtGF!CTo-6u6*N7g06wIU1ti7-6O({U|A53;VPXQHsUOgRdC)si zKzc#xV%yAesfTr;!=7 zLkP5uh!H&X#|6GP2W&YrXzC3#Nd%Dr^#c)lKpU!g6d*Dn8X*JPQq2pM0nu<7P#;&5 ziN&1R0xave=hkHgfteEEJBBT?1fI_X^?bo~qXHj4_h`swfo9)8b8N8KAUb3(poZ*I z)R27*-wwBc31#Z12eb_159nY=N6>AYu$Gtryd?%2$OCO{0wrr^4o3w==>4eRE&QN1 z8R#Zh(2yQ@j1Zb&LC3#?uY!S})rh#nM;N>%4x|gbCJ!`52s`#s1l%kGNkR9$K~8Lx zPypYp%ISCod_yp7<2vXHb4~@wREz=xsKchn4LYHbhsi;K2Q;d|1Aw#U7i)cViTJV_)pfZ91)DUI{9hnIVbdVG%X23W7fCC+KA0nv402dbE z?O&kz9*{2R%nbv0a1*qn&>%|@6s??~OV+^d5(dxmfQk%o1c5I3;(%UFD+1mb4Uz&y z5O_YB19a3T_|{s`j50_Hd}}ReKA8i0HLV!B`Dx)ei^J7Kr1^Ktr$Q@v@$ueWr2o*nLzh> zflFX32GE{0CP(%x(8@a|T?TeYDQv|c2AbPcU<++L*^L1-oC@CMCITuYKrRMf4FW!m3UoCY17ez(#qmGr zU{26%FbinVlOHtj2;MHr0=Yts$&oP|G$acODi8*BHoaH|juMVDKsulf;m%Uv1Fd;uA}Z}1d8vpX+n-zsPpng!I`cLbk0tHh+i#Gu3qaukaKs~{@_ILbAc zSm0vd_L@NJa*$?69!C}klNofr4hPJCOrSN2W=tUef$!?$0QDR}W-@_vGbk}T)@OkR z>X;oF-9Z=Pfet^I9>wj*sK^9rw19RGDlqYLgKmT}XA)6hbONmtIKW`e1ZucExB=SZ z%i+kN!07nm#w8HNk>xn!<|PJ!3xy1zW#)|ajL`C139{Iq33R**y8yW@oAml;4~FYHb%=1eIH?2bP<*E%V*DRC%(*5|KnF=q}? zU{?U~II=)I4+VC|e_$ox?E)Yn2L*P=UoasFuqq1$&|U+JEYJWBJLo821vY_QO^giO z3hbccSU?uvSq8J18HdFlC>E1q%YEpvcLIn83Hbbc@ZsA$pgf2RgO9u8;{~nGVqs-t z=iuZ5T@eYYP8=7v9AIz+WsYSa2Cu-3P%8#@9v)B$$q18VbleP*xDuhlR$73K#Zipl|XoU+qs9tmwfF7hrmk53tV#dURD}o`C zI3gG#Ng#qDif}|QL=r~?LnLuTFhmkZ1VbcoL@-1WM+8G8aYQgg5=R6>BymJASQ6AY zU}8au;NQ>%l%QrV{DMAEnFzk}4%9ke08R0*fV!zB%nk~mlRp$#K&OBA27@+;bAXoS zg039~ouvU;?Jfm6Rl|xw8kF@xN~Dn561oi1kUPq(7_32qyP&QE3usmfbPx#x(rlY_IvOouZ#{hUs6bER4 z`8yL6S3UUZ1jN!Ya5F9n)P}NRhys^~pb_sF1tv$FccBY_7i|hWTM8PbX0T$2a+H7` z8v(A@K`VH{!{MNFbR0n=^57F9;3M*&F?9HdJZ#|^S~%*+An?x{qzrU50263O4kxJd0BUf8o5-LQ z=Abh<;Dhtv8-+om^dhhk5Xk7f2;@d#CJiP5P&Li~+IHmu8B_taC!xoufOJDv!-Cox zx(rd^#e1NGRC_0YG6ra^E2w+-33TKhIN(9&`9QmOpvH?gB;dW_0S}r%Ik@d0gCjer zS@UO`BZz9)?kLd74Owl?tbn+^0<;DbbQLQ`K=XoTejPzlpwM&#O?|)u8gwupD7dn~ zT}Y6<;5Gzk%{>b!pcS$dm;|m$LRNQrD=-Pno688AJce{&nH(7eE@gv)NQ21*lzqTc zJ2s#Yw*f_r29pE$P6kke4m4>BzFZbOK>`}m0iV3b1zLy$nGr#ZI)RoMgD$jC0QCr= zLqXsJzIYTkAxpiP9O1&CyTCyWIR;Qh1~ns@bQwVXBv)Qg?*?>U8z{_wGNBzHwn5yH z1AKy*;|6g>kTw=j0}B+MEU?}_GdN8-EukxdJvo9pl_T_{;6%Zph16o2nYQI7Ff_t=ugNL4EAVW_Ipth6a2PW{n$_yGzA3y`DimVEZ0u7);%oW)je>5Ft0IyI5 zUD>R_F0fA#)Wl?P`~uPgzD)fKSPzE+lfW)VMNY?#=EDq%T%gfVN5(=0E|3OrW0XOc z;SXdzKj@-nzAS;8?V#h;LDde60)xO@Vermi@NGPxO`RJUvjle4fL0ZPx{D%N0t@Fc z3hWdGwdPnrrz?RN44_(-1++Ly19VcD29pZ3$pJp!NyCgu$MHn-VFpKS1r|r0EXOY( z_KfDk3<8}N4B(4sHDE{a87P1oouFZRaQk}yJVt@7vq3{|kf!YI35*IXpi>wpO=JYE zvS4uh0rI~IsLlBU6w_?Z_msw^#w3g+P54fkl3xXaEg{fQF-?`I!mS z$%W2F=!3)TOV}AI>;u@k-5~3j6gUN- z)=7h`lUC#c&-QSEt>XrfI4({Db<)B613|lLnG|@@Ed!6=vIv}A%xJ{`@;Z3jh#52i z2MK;Y@G&3!ke=-aCfHVcMh&J3Ot5_lZ$Q&@Q<$=lHYR{NtLzGFpnD{+!;O9k!Ehs}S1Pd;IV9z+hB?qUWnIs;92fj1_A7K3p(PGADhzJQO(W(Hkm%?O)p zWOm%a1lsBk>dXo}kx&5dUz`DQ#@Jyij zcj)0Bpe+bHm>~1=;4T%P0{DOrK2-GrutPpTH(esB=YSpbA%LoW0u$(@Jq1Bf^#s}k ztC6K32WdK9WD);RsbKQ&g6K26QmoY2y&Xb0t2Wc%wop00~E0@ z7_$^P9WNkFK!YX-IkKQh0%R3vo&&xW5M&x;FCb(vVKq0jC}0#gHW@scuz?%Ao8%J{ zBNu3b4QVU^G|S)t>9e~-h7{aEWeQ|hGK(X)dkmg{X@G2G1RY$=qzTzi4Z0DNL4g@` zN-h&yE#aV&0B70a0xAYInOs118A{o5gaKA(kyf~bBMKJ< zP~ox;k0Y!q^TD5!8TKrLJhApU_Jcwm61 zZ~+;_1R9>yWeA59>!A7(daA@P=!yx@kxh`nVbF$dP#YS2F^D5*F%Po>Yl#ADsUjQb z3}sOGD}ZJ|*h>`HOTA!gL>fLH1T}jVm>gL_-2rf&(TXAlX}Rh$K<1xW1UkJTMXedr z9Ps%=ppfPONi!CLs|yCm>JiW!M7APm*E=t^MKYz^n8Yu-QWrXd>k;3B4}0+ zbZ-J^BM=j4G6b}Ehue$^bnyhJ)d(3qmdSEt059P($r4x?3!Yd|0M{9Bniw7DfDE3q zk`Z)M2xzeuSXyA&EKr_nU<9puV*&{aEO1tUZ1QIU-5=q&=JP=YM_z%q@z7OQU^#&W z_MmhLT81U?0yN+cJ)!9r^n@Bv*dra6G6OVg%VfncAG84$)OH6g)fZR@;<1=9nSfS; zIGSWRu9<(FL7)Y6coC?27&H8(B4^QM-xz!&ms$1#T^Eam_U}mtTvEg zpyN51HJM^SYcrW0ZL%D9%s&old|hG45_l2j*s$O@gTU04;KR}!56nN#0NQ-T?5GIZ ze8mhE$WZ_b6o48|pq)_6pp8_l3Lw)!JHH&CFk}g=H3A)G0y+zj88nyn!5rM`1x+P@ z4hR(Z;{rNy2sBN=4C;1(R^Bm#FU$q4?S$O148E5KexojU+XI6FXO;q|0?0(rDlo_< z3oZrtg*$N7pj#5G7!*L`_Erpv3ZOV*P%MMD zPJ%O%iXx8!xJL-uI>`e{+Kiy)urVkXLAFkUPILPM+d63s$@mawAhu2#gL;$tyKz)AVpAnpj$IfGcmH( zJ2EITIx;v4Dlj;%-@xK2tpr}OSOlh+N;H`6ybp5ZE>U1`A@l6h%jD>MS;l;G+^hMrNEq}#Ow%KE8}?Q{Uz{aJWLQrik2xdIlgBF zbs)eQQUSEch*g7$#Zj~j)bVo#EjD6xtO1={@vp|u_puh;~ zFS0n+gKlqNP-I|s02dR#o?T)9t#r#$Vo+fA<^^8`;K-Pz#N^J)09qX2$XLkz7`mz( z)DDLZwm5?Cf(I|M2JNF|1QmYZq-6q{umY{p1w|p0!;z(kbNM%K{peCavH3^2wKdEw*1@C1TrEGTCl|dDuBU>-9>>z0X*Hx z#NcQES`-J$*PsJDppMW0k8N^+`dC~r!xa>{6+r7aLFpeR2HH9gTEMBm2wKGna~Q7z zhXOB1FE30TXt^K<=<*0g#8ot4hj>7CN&6@;LMHJPIQY3?bz=kK4lPg~`wi*~GFmZ! zXaz>c9?(@Ie?Ve5yPV(+*$kkGYS3mfP`?Fq_8vGbaAXOb%!RaYelvq}lp?ER14>8n z1Y;Ixu_m||r~tWqi^=f>W0t^nP!|()T^18)eH??p)d0sE44|`RV139F;LEZ=DxiJH z8%URNF@ZMFGC6|OK)R41&7gV~dK=dQa936Wei;|IgUJD(k%nJE1TAwx^(`o|gAyBP z>7F7t$UOM!W>Av@WFlmBGo+XK8+1wxC?|l&@perCHyRosw`L9Yu-`YV!hR=8*#CyM z2@fF7T>_>1-JmqiXvF}c6&M}gfUXqV0}`V!-S38{`v(lj10*|8(>>^%BPPckj9CI( zL17Q!a)5?bZUumbI*`UrW`NT@NChx>k^p$O(TpO2U8F4^H?8AZIMW68;6$LgzH7 z)L^t?0MQDJj&neT&KZyxg@Jz>G#thO8k?MeQs}%u4SZ0Om&x%3W0t@{P~bzj;J|Oq zaD0JM===bOA4ml>@LymCK1dBT@L!+=K4>@$Trfdz03^N8dBLCv4|`CofJ{UV`_rH^ zz2JpT4`i*(1xTR-OZXd5!+td=oIzuZph0d%$3391Ujq`OFzi>u!+rxw*yAkl&w!5e z0~P1c0)LVdsEkEQ_@How)DY0H$5P;f)Ih`j21?jpz)|3*C@_GQ+Y*!TZy*IeDB**Q zL=ODbD1qMz3H%L^z;9w^WC9H>;<#6u2{f4mx`zie{tv#a2-Fh=E#%f^K+Ih@PQiL1 zE_k4i$-(hO54PJ|L8*bs5$#H6@MY4V#7DP}`zd_4EF5@|CdHML+bgL;`Xs00TuKxYQ8=?9-#3tA!x>yd(|eZeO)X(%u|uDA(WsiC95>?jCY zEXe?w31S9K0huVUC@^Lzuy}$_1qL1GQE0_r4T>Z%o0kF9NmKyk9nj!EBd8$(K4F+m zff+P$W&`TZGiWd!x#qSgad?f zQDAml!U(z?5Ont((z#5a6_g@iSFnK&X%Ydg)`BdZ1Zxif%`x)8PHqZ;7#0EQb$}0R z0-Kot;YvWQkO7}ZC6NW`4}&a)E`|iT2z+!1_(*64u%(P3OBEEjvJv)z4k2N5WN}== zDDXucw4#q$gGof-83(AF3|;^E2Ral6iU-)D0-PIJK;z<|-XjaBl2(WCG!(!*Jp~p= z@VO=6rJJA#Vg`>6faae-NAa8zC4k}tw5kETkTnIgXb(Is44Qyt;06ugF*r_{d6Ge3iVAqH z7P3Nt8#FM%t-$HXlLNZ_6uiP9M}bFy1-kqXv^S9l)E(eeU;!=YgY+;I7(jPXWr3Xs zy1xK4)ii^dksVYLp@lvuh(I&gpeYBiS3DG09M8-?%V5UjLG17=Xu2Nb3ttiZ;{!py+P!pyC} z2-%tgvk4TjjG(0!3>r*5b9^CLWx^a^MbKS^?4Za6hrSKSkDv_70@`qpJiTJZ1m490GK&*5TLvbqE(vB=y3UISPc@R`X zFo8B^fn!kylmtOzE+F$k^KluVRnm@(pg6Q*P=f@5x&ml&UM)+YQCk6|PAv~V+G-mF6A~9wlE(3)K zX!8yzLO^DLV+LdvJ!9s*G$=A0M`H%G$B4yo5XH;~Qex&UXyrY4e;8ew%|cWRs|N=pd(lgT1$iON?-$5$c{YVLj>4C`=cQ<433~3 z4(tk`Wd@*A6v2Zqpz{QveI?LoHSl3uL|+MXR1I_p0kn?~I#2^Dm z92#_=E_B5=X!r=c_(1_OzXHBbnNeV!hvNf~6%PX;!y8Oi44~_CA@*J^1hqvRp~IY4 zLEEVbo{Tnpn%f4Ax`BdAPysXn z1u_t{PhJ6bY%b{NAq&u&1CA_#4l~d|C3FrSv>Xi@fk<=sjuMKXrVVtnf(0xz9YLou zK+m`Ys|G~{IPBpks3Qr3`)`ng{eFQ`F?bsT=%hLDOcm$|MbPRbD~5K^tc*gIz#%En zd>nM(5_CP0BX}7Xc!+?&7&H^2T&Hzd; zAe)#4%$Y!kQh^2~KwIK}ARTuOa!7?aQv$>@rI1}C1>kuOSfqgVB7g%%0knNZ0k*3J zve^Q(R~?+RVQ~eT?qauM0G;PSCjsyj=NtVFA z>7aFR+@NDv89-BJpza&=T9@lgO#F~Dw?M#DUJBLl_{*QbG}tEQLU=dZhCd zU};hqbm<5523Jsd0ZWh~3e2FA1GG_Jff+I+3_kY*w1ES(oC&l>feM2f@u0-Vtf2s!08!)x-I}Axqyd^b zRsija28|MfmNmhbae(i6=7n4_3^om<9em8cfC4Y*_99TfMgyMGITQsIctIB!2`V6| z2HhY5SqH-bzG$8e)X)SK%t(hPf({B~0<98c1>MXgp#VNSQ3f=j25R4dd7$$Z!8=C4 zmkS$!_S}GyCzuCaaS16nkx5Wl2VSlS+CB|BVzGZdBP3fu_Kt(v*9u67qH}>dG|UPt z0$_EZlAal?9i-0jLgz6C0r28RHU&ugA1wR;F3bozcmOookI;l{I14xEuwBslL690I zh#jEV=0Mo-0c03>(>W`s8wWatkpom)fq6U%tdQf>AxV}M-pq$j1F|BT`Je)|p$q0> zR#;)(%*@CKiU3ecA6%w@iaSt1f+oR{#_K`x0Gd2z0Zm+hFII4YWOWZvo&{YG4!%Gk z01?^>%#QV-1}|tT8`OP-9P8YNOrWf!0y?7s z6g1%Fhbo|+D3b=0256TPXt7`d=(Gk$CeR{C&}M9Q1x^JHfhEEqb3r{>uqF=33Q#Uk z#}G8fCIjxSGHEc$xPk{mKrPEJeZGp^AjXeAU(h@^Xo0DY0uyLIpaE!r!i-4-d_@GP z2I2)x9hG>UfBN=Bq$UT|u`-F@dK- zSriyRr(c4K7ied9G!jN5VKgUz1|FV5hkejiK!H|6gIXnKOyCQNK>3_QgNXssqXrN2 zfre7R3${TM^x*Odbk`ARN)FV_2jzdBEKsq=1R1Uab-g*VK$Qt-kFz2xc$X%t0vo7) z1zqk9X)u9`8qoS9R!}_$X(l;>i~$vdAfv&9JD_7VK^)M~5zHPBkPAV_P&0u>?R+5Z znE(hCq5yGvHmLLh73vY7y(`dG64>|{NVAIvRC0mFdSTPKiU^54x-7Sn};Pp?iEwMkL^IIQ;QI-6Nlf7F zuWLB61Qw*gx!_g9Yn>c>SU@8~uvNnsxIu031uXDY!#ym>Grl4qS&$lb@N_XqGt#2r zJD_V9L3g1;#{WT$cnv1d4qgRtK!a*uCeZ1i;08I;W?2r{%$5RlX19k0b&>^SF!DJ6 zYtZ&0P|9Q!SOi%={6QGJ?52mAkq2DiGQxu%w8n1(r~%Jt#2?M%v-Vr1Y zzIGn6SDev|=?=(XMl+@dFpHl+Ee7Rk4l||~AbIeBDEJf>7EegV0B_HF&*-?|&LL1s zofERV>$yHC#j$_~qI0qoxgD15+1gm*8Ig+V9#F(9?`!3TYT`VpY!3V)UYX!ioBK@YJKw0VI6 zxt$LdR$zt=PCkJaE1*siv@r=9kw@8QFOmgrEIQ&WQW(Gy3@K5-X&OA(3Mx?G>qNXk zN_arq20@nufcmsD-~}QAGeCE8$$&}#27%X^j-W+2pmWqfy(ADV1JA{v4k?q2IkN_M z$OhE22i>s+qT!t#P$3NJ4KWLVqY*SD0P1FfXhg9KGKX0JbX+31v<0o$1eGb6EpgDI zOHkzkD(4|Z2xzxGbN~T#_!@N63Al?38JLGG5dlpspst4RWM*Upl^_D3wNuO}*IJq} zaUdGt*jb>Zl#Xi`9Aa=}6}T%0$=#rgxd~Ya)R6%V#DMO(V*o`V0}mf)p&XOrc91eI zs7|OdMkHlC5M>8J$^=lAF(E1Af+)KPQpSd=j2TH82SnL*kTMojWh_X_*dWSogOqWi zDq}@b2HHBNz~uM@qzugqY)HyLM_xOEulR#{9enN;_%1+*0BD*DbY>1e_je}9F$eGw z8A$J`1{U<-1GxB@85qH}ufP*qP*07?v1j&S(8)=l>#{(r(jfc$z~|yKItsuqqibOV z58i-I)CToGKr>RHbKbH*g*B*E!VGSefL2AbE3hcAgHjjhU^NBEWpJQ|2S^nQSe1hU zsEGo;$qphfa0%2^0SO8`)h_h^y!n@Y@AJ zMH@Kae?eU^2jT)E0{#KCfeyNZ5xVRWH2)Q$0A6+(13HxsG<^x`6)P|Zbc;JmfR|Y^ zg3qJ@Z36@y#15`D90fqP@`4YO1PyJ0bRZTovw&ty!FpK0O9G)XpykBitAaF`9YAdG z9qcKP+y<%>93b=BAln3*IYAW!sNIqQQmO$O)XxTuUVyhw`GA!BD6)YDJRKQ9muP?n zqCrbm89~d~L1_%4%LjCu5$H_53!v3rIUsETilEjGhZ$1=WXWU+h;l5*0u5p?YA}T; zf^Qo)W2#W#bY#g=1m7`k#sn@D6c`=ZLCdze1lFcO%3g4F7a;K01$2cdX#49=CPscx z@s3o9f*OdRl{etqWxzw0;H?P|e}nu5nrQ~PAJo(V%d`Jb^$ttO`r*M0uAI;O;BYEZL@&}Nk9WppnV45 zGo!$ZQ%pdOLC{D#_+T2)7%Zn5lZ_(_(qNKN1Qj*{ke0^<(0ICn06(Z1$N(Di?&vwmAn?e7fqRezeKYlfe#I2@pl>8O z=nvB%=o_YB1iXY5!M7(uIY6hMg!yiA7`G;LtUqypN!s=xx>X9!xe!2%h#2Msu~DX@aq zPp~U6g1Y}Y5NT+JH&EaJttZI=RgU1RrN9R=Fn}@!G?#-mBXEJH=okyF82CXIA-^KG zBa0%BJ33;G+E z&!DCHu0fINH(WWxAn<1JrTVFZE9hyF>fu5E6}r_ARJlUOWk5|z3s7SgX;Th(OcB&_ z1XnKLu|!ZKiWRiF@4%Mx;E_Vmu>!2%b*yXx3&8C?5zwR@s0IWNJ%G+YhK?D6NBLMl zvz6exTyzvbldeplZE11@P>N0P03H1~aB9pwkyS7(rc7F3=Ji7K{lb#37&^NaN_B z(Q=TPkb!i_IOJ{6dB310DyX9_&<{G6jLGozYWKs!4fhK(f zzOz9xEyP^J&IM2to(DD-<^x(c2kP}PIKrkpz=tw{y1}3=6jluOpd;8oITqwv22j%- ze6$F7`3h*!6KI1bXs!Y@iU1i<1&y~sT?8KEhYlRG3H0t z&>0;jT?TWo_29`nI1hAe0j$kVS~&k7bm2U0h=lWdCPqQn5DZdhQ~;E2L7g%V>^)I% zyn_Z>pxsajkXq0U$KY-#Xww9XqeKp9Vh%h61?iWEgXfT1T;>ZSVa|d193hIsWLwck9klv^SXqyB-XlPha zfl)yaG~5EFcoYOcwKk7q!-m5Q0x#4R_(A$X2gN~a%BRo*1hfncw%Y@=`WrOs16pef zzOO_AyciqQ+Xo#c37WSDO^|~YigSP#;)472pfUlp1)oKOi3i#s0I&ZS0aexzrJ#}m z!U9j<>wpdv1eF&cEueX3@ZbO&^lBM|W;O-ZY}oD((CLlrW=x>9JuINLJ)oTj9H7+& z%#I9hpq-SUgaW~k+deoHnDZ1tE7!R|OAbI&nc!hI#~r5*GYI?x-3!B^z+3=6W)gfz z2RAfJNOJY&;n@CrAR{HQ!7AoZ=eZJ@FW^L=nOYz21UpjZXhY>8E)+0iAT`( zD$p%aAj=h)1lHPvmMVi5Suukb6@YedFbUk|0}Xh9mU)3MlIH+#LISPV%urwwc-qXU z$PJQDQRD$p8H&6L;JrwoeN8-|Z8prHWm++y+C>v~N)BkE0eXu(;*=c7L_a@h22_(N z1X6K=MpXo|6hNySuOL>h!lyrnSn#gH8oc*LgBLW}ph$7*U5_<*?~Vp9b%J*T*5JKA zXoGj8R&gz_ju5Wmz>26;#X)A|L0u8hBq9T-QO2UcXwD33J}{XvDL691HY%!vHY!4z z0}P;LgWxTV;6@ef6kX6MUu;$k=8*l07NCQ03qczWLG$dOGgTEhKqP1)L6K8|0n`%X zP~gl44S6s+Np?8>XJ}py8q;v($Og%=6gqNbfmZEkFo7%pjdU<5fcI}QWI;G!BY41b z?cl~1XhaXZjT3ZZ3J<8Q#iGFD$e_TK4QdC1TSlPujJyggpjyoZLU}+aP@@FWNCI7- z!t0ok1?q`_+6sz%3VfgwPZ>b98t9->KG2eWW(9um#sKirHvt7c&^jMx1;`C#OyFx% zI6z0eLV9{5t)aH((J{iQ7_5jYsd%Io7B@~DCmhURMN|o98us&8N+|5-feawIp9h*} zYo+=7WyU zhmD_rhVY=>SO$R)k&3Jetd8}?ir`Wnyxi0nWTXP<<^f)i(?G_UF+n?AAZs8UF3?~% zc*zy0%LhIV9aPqGm@!#6vM7RPa5)q>L3`>Qcf2~zAaH{fbkQGV1PbI#&|+3_N6rRp z5vdl!s6qqy_ zp!)%uA@d{V%+U4=V*R&`0xR4|@Imk9%nl0N3cL!uAVZtM8=Ck)7j7{r@Ki1btzlx) zU z4nEGA9Wsy#I`sh&0HB5t2RJu?4oqPOotyySWEfz{~U$ zvK&t!EN(Ic`3ZDs9cbA-=n`ho$Ox|jkHCR0@KSspP<(>MfuO6PK>O+Vz}x3QGk5$7 zd;;CEAR|N+1wandU=mOe5V+|Lnze$ShdZ!={O2M(kPm|c`5q*YPvHyX)$l+*Pj(>p zT!LFXm-c~tj)_SCa%C+jEo1IGh=J`p0G%y~NS@3JY|zURKs$$Fn+`xbia8)Vis9EG zfbPhZ03Cr3I$Z!cp)osx?rR4pG-hZ*10CxF+Jd0KB=B4gG<*o!GR2?(+kY?sI|>*a zO|ldP6$C-O6bVo-g+ozDK~O;`OF>8h>;Y(X$_y(R25Wde8=~QP8+y7b(lz2tpl&UT z0<#qZ=l~-|NIQ*DU|}`5+!Iz{aTLxH__LT1baFQ6vobB(O#D;KmSS_(=m85Q}!ngnLfU<92~#G}aX$fPKszz_C|0El!0UEKlpfuJK} zA=C$;vmd}~))~MKwqgLyIe<h*F6{!hZ8UIc7r1Li1DAGzyLL2iX&1Qb zMgy02f!jVBxTFT|8PN6B;Nb<(pgVZ^rlSUEd#nO8XuKXg!42B@3_08jel!v2AS=)n zoDeDK$yneG5MW*W;H6QZGp?W~Vcz zZSak1NGqfeszH}jgKvuhbyX3o0~xCslLV-50g@8| zud4&^&<5?}2Ol(41Ku4DI+P2vUWo&out6g~9H1?6u!IfTTnj!E0(_l2XzRBD>K1YX zb7s)$UmkFlQOFW#5s(6%8)U^G4C-Bg-6H|oj|4gx1atsV4#+t&ppiV#ij@M;a%a%3 zF-!_vj-YX0(5^Pn5hvhdKtOxh8Lb$E6&M93CxM63gdG_RL93!6I}{bT`MJM9S9XJf z7-``Y=%7|6(3&jpNVG|sKTQ~(~+<_7s0Jg-@yz~U&8C2-piWRMJKh#NFi2kLPtWPuiS3#|75$*3su zgBE{jFeyOhY5C2V48W1gqQRsCja(McVN#$Abp_0rY7`h01RPstonsLAR|kp-7VtXo z2XP?7SQG_86oaCW0t@JpARz@ofgWwpxQ8Z_31qNASb;%7I7aA-QNgic+c`*=)p5eM zbKr%>pm96~1!jRqCXgO0X!9CqK|ZLT4P8G7+J!2SCGdA4qd?OlM$p7IXw{X#`3^?# z?XsZDQX%WcTzSE3??u299E{nJRc)YkZSeb}7(tuJML@fC9XEiS@(^q*WceXzZ7gV3 z9J>DvWUEG&z`uoz0=oo37a%igFsUeVI5H@5Ix>O|-U4-aAt!1r02$R@!T`OW2YE{z zXd;KvQ6o#>LIldNDS}pzDP#$(nF$&sPb;et-m1Mi>*pB2c=pePDDKn^S=3c4%| zw0I4)6WPFV$J7H1ifoQsrW{~UWOq~q9l8y=8id)=APcnSQh`n2u!-XdkRs59OQ4%e zK+>E7-{iq2o?ys=EU^aN`vgDN6LP#Bk2$l4Ba0%pBaZ^Nz#COX&_R5xSqfax0W2QS zD4PfP{wdH}y%NV8AX`9d)_6hthe7eH$fv-pz-Pu(S9 zQF7Du-XR*+`>=-f7wU)gg6UKX>or3(toLIL>-W?T>krfm>+M4{tdC#~>rd1V>y{Y= z)Ad3k>&AUUG^`I|4eQU;59V<$^xQ5hwLzeuDd9-V&DSJK3g$xgL`Jo zx(r;7jG!&GpiP6!x(wWk;1l$%7_>p_K0rsaF@ttG>428NfF_*5wwXX|vjFwk7zH{e zgKlYsu1f&v0^O~`3_97$26R}q850lKDt1simIrdyFi0bK`v{}Jt1j@>GoVxVnL+1l zI)K(>fg0+}3S5r$3S82l4l=k6?4rOVuvHDb5*Kun3V6eahXS_(JLnn}W>CZ2M}bFy z4YW#y-H|a1Jmkh}#uNZ?I%sPN1E?PjS|J8&t;awb?J}UoH)vnshD8U!JD(Up3w6P( zvo1ix8?+V<+KB`Ov<2iOC5#I!LA#~E`q1z{jXS_Hi>gC~$-7XwW`-keS?Ir+|hmbs4%rbvQ_pQQ-b0@YQ(} zxWHTfVWHl@i4y9+LCZivHv@ytiDPu^0fqV>kQl|G{+k0W)Ip~qFd|Nn{=f(dtP{*x z0y{yW4&j1B{i&(r4U|wn!3t6eQUMM18z@IHfI}Um1{&%&P(pnHJ4mxcmI7L+KLMS! zaD%u|zrm=866zo`kwg7AX!$54)OSJ-k8a>Z3H1x8Y5g=PQbAXvg3eE2bbJFk;NlEO z41cIUVT7dh7oZ#NK}Ugt*2jZSPJy3tahl8V0V8r+KY*In*MQUd0hTO*{h&~XaKWK| zJ-~4a6KLcac5e3qa9RhcfQI@MCgcM!z@ZLO0}b^lOrRBF3LKzdU~=4oBdsq0rS&OH zM5Xm9OsJs_G7~w}Pb1R$QAk?9fR@(TP}4f-2oX?PX9XXS3b_RvB!)lKTcDxdfjiWH zgD=2l1&!E4ybrpf8Y!)BfTVS%EP)-MP=|2Aq5jO&aRzEy2cIhfQUMM18CcRfbCv=$ z)Muci^#|Z{MKII)5>Q&7L0np&ftJ=mW+I3BZ_qkHkS`ep)=dDHFb!i=PuQFTE!P)7%5~8FeV}q3p3raeIL<&R)K{>g z6zX@t34H}?mcSy=IW7<`gTPBu$1^CY`~bLk07*l``wU7d2cP2tQUeX|GbpLNhYM7; z2%wfN;0u(%2U~(?B9V@k1}*Cam*?JNCp zf&K|vnc}~D`32}GRQz`@gO7kufRryO;Hp#rbjmB}&R`zIwE(AC9PfZ{T!UQ;(87cg z>Jz{Ty@e@DU^Xb!AzU8Njn}K49KSFi7cURM5d=~J4fro8cQS(y1qZ2t2K*P4E19o= zbBPRU!1I7lWM**u!T>K`;77Q?gC2eqILJ9Dg*wPgx(I=BJz09w2}!CkzpW=AX3KcI&C5pbw~V9FBM1u9-3 zTyXKS-pO$dO7Q|ZC5Xupqyif1YcPu!kQ!*HuR$qZ{($RY%;IGSsCZdJT=B97t#|>M zi5%*y*`d?Ji~^e>XBKT>2d8v+s2iY$I%u;8DAWxgg*tbZ8Pgh&82(Ui;D#ji7H)7_ z$JT6IZQ$6zja-#J5JE}odpJRv|AA1JzztBSL%85jzY*ZLgcBvL%Yu}GR6s+02`5HX z`al+5s4w9}u1Z_fL7Fi`eFLWggX0oTcv{ETY+S;LT9ty#L0inN$WenyU9bA_#fTr~&khG4iHr>tZI0q%I-$8A|`~j!+JFHm(b3nBz zgbS`suLU?hKuPOAz|9zt3TUW5KuPQ1+7zS)8tM;FnlYg0U~Z_$8p$?)I7#;VpgUWS~7|u`!*QOiTA!&UJ zJI)ejwY1{~cI33)!G)66CxC0Y4z4VL(*+7lju0+5tse?-{DE?{(GEdSas{b?hWZbb ztBt@V3`h+$)PJxbr}YhDAkCQNdJC%pgX0hIeGUYN1Aeferge~+$f3R(wAKfb)(=41 zFdL*%Lj8acN~rG^f`mGVR$z2o11e$mfW+{J`T}SPvjleuvs=h<0ZIuogB>N*Z-7gf z8SGgCw?HKfgbNP!ra;F7C?(7e@P$$!70^&WfLX$T)IdZ10BQ-thdtEKfJ&GH#Fa1y z&`TJ;ECu9H-z@}B>$jk3T?icNzo4!44X+qbf_*i}O`t|h7Nij)4od7GG5o>aAP!0F zE#kNndzNE^IC5ftpotRff56voJvHu z%vNN9>R?7%sRv%61vQotv{)51#vqWTz$)-A33M~B0BEDOE`uOwpEYO|A)5lbz;+Xm z3}}-m_|!~J(A9I`?Q^1_?Zs9MVjyWz$ow2+?cSYx2N?vwYxkIR8N?tfRIM1~K`T@p z-+<&6)PVFbfYzUaj_L(nuLnBC9<)G}NrA_TK?HofCP*)M;WF4ZIRz&0WiJR1gV(W& zLjo1d7FGluzs97?AOgOEM}ZHl5i}MF*(`Sl>1aUcG?@Z}H6!Rieg;Q@GSI9eqa&zw zq07JpnxJD;VAN;iux12}oHKwU&Hy~1h$&m#j2ij)~O7mHuZI8^LQF_oxdMpsF z;E)BWb-eNBFoQs!GiYTb=sGLV@B`SfpnZp+Qz)Rf(6WLI1@CQCU~yzd)&*Lx2|9>^ z8zKn0b{4#)k{!H{Jxh@Tv@jREX&B@Zu-Tx1V6kT80Ue*r;3!a{z^Ko_Qv|x41akSS z0w+H=Z9;dmK7B*?2U($uqze(cU_oky?vR;~{G$pxcocN44m)UKd~}KzbiXlK(`TSb z^C1(WmzkJ&A*Yvs79uc%mJC}l_=7H1v0~77w16H93OdhI05m<2r2yU(WB|Ea3B2N3 z5VY(gO98Ya$Wa4woGn-!`2uv%Y099z79ev##}%+cjw^7KPy`j^9ANcG7oa0(cS0-4U!0bPfvmumT3qqHYFI4af|>BZ>iWb0YYPbkJIF2E?_A%nIBf zYeDy;!%sM1R^Wk&!7of?R^Ww+!EZ}sR^Wq)fzD53fS;cRwu7G=U!WR{1}bPIn7V;# zI2x$r1?mfE7Xp;|kv0&4j(7l{U<5uB5p;AS_*x|vM@G;_4lqUi6S0koMf{!l&?fe7Xc?-HR4|L)`Z08!229pSAGoS#t z$q%|blL>N+H)sVTc;ldm858I>RZx$Q6J#697ycLQ~lc@x>!HNyU1GNs=G?{830%sVq z9Dh7N!=M0`6L=k_zy|6XDX@Vr$86wr1g%nKS6~D083WM=5T|~#DX?iWIe<19vw;nD zG{_Qok_mD;=-zj*A2<{^1Rj=yb}TXpyjjdB@N+SvK;IHZMNS1aM;*{DkZg`BSpwbW zV6MQ(yCZnA zj>*B10o1pIjr=hSyju!7_RNYw9F$U-L04gLf^?`Tg4X|Xf)>IugOX>A0(jM}gaVi+ zBR)v!N#KizM&elgBx@cHLn6As0GFZ z+Oft9l>(g_?+7~fkP*}nV`5Mg0i9?Iy6Hnf1k?%yZS7-X0G*u&IxR|IQZu6>yMvb-D+us&UuR#X;?0#IaqB zpgM^eG@Kvfb^@odr0TgaMjG(%nNni=|aH%+J~@}9SpEw1+V?~0JZ5s zB@lR5X8?4$xdM~Gi$GBN;!yP=J4^v=v1hs#7SirXlfYv*L*PVkB zHKr3DT$rN&4WCD?Lzpw_?y|asbKbL5u_i2D2`MKIm=&1#T;bXa#oA zcoB~RH|YE*1s)IyKCP4qbPKEkvm+~XMZ5xN52`?$j~NsA1`B3K(1og?W#Bkr{a2dfUKCSd^e>OiB8;G4W4Rk{GATgR2`UIE2xftfq63`)05uPO<--T)IccCx6R@TRWG?{d zb~0uKCPxKOUS$+`UaP<;FmEBK>;N}7ViZ7)0f;>4s98pV+uESi3c{dzU4V~;fsu(B zeEW|8XaTSyt0M>KB3}hI&>DNtVQS#pydlQ{q8(MKz$maBbWDapmcY|8@USf8mJ%k= z=6dj0Fla45xM~L-#sC^)XB5~D(s6(xOW<%TXb(2X5h9=#2S^X-nqMwZW0wgO?mpmy zDNitD3A_QHC5dz#B@f6VKJXes1zrU{K`!v23p|RT(T>%|I8 zjv%9sOl5>@9AVO665wNDWMpIjFOm_+5_sVPavHc?=I6f0#KZ|Hl|kFUk-{A06Gl++ z0X`}M+p!W$!a#%93f$(*_>YwU)l)12$0$5j0(1Zi4=59WTMs;-Y6szps3{pT}us)+7i%EKloZ|P=gPAtb{-oXjeHC zsQMFzjJ`WE7J?!fvhiDiiyyR!f)mt$1EpwI1y&UX1y)eYEd-RgL3KN;0<#rEoC2!? zixopWIJGi5PFQf9L10rf_=E!mR?uiXlfX|iQ1bxF>6PSGV0Dzsa-6u}IOse)Hc+Nu z5$H5=6i{RXovQC>kp(I;K+3Z;85lr=GLW_xD_DjdY${YnfmMN3lYz~g*+PK<#Ii7F z0JRf16c`jZK%oiN0y2aFbaxHtTz>EwGf2Xq0>g?y0<kG3 z3Gk7u;3^d4>MVT*25Yb#JPKTp{U~5zxE;I-T#zycNmzjuQX2DfKSr9tKuWI~pt(74 z;}8_Spy?FQS_)8M%;Y#_`3VLyCKJ#aYz-zJP*-Hiau3J`C&RqREI+{@aJdk&3kwuK5bVgHzzFJTfNCNJP~8L0AfT%jnL(A0B8wvsNmBeKnWFOgyRmFu2Z050erO) zDB*&G*--*Coe4c9i5pb&fNBI#_6H>w=!p?bkSi9Lz*3-0ia0TX3AAAyG}i_?3W*mv z|AH2`gLHs8CZG!~9dE2S37WA29d98GE*v$oz-R7)PA6e@1I>DZZfSP}wcz0gM1t1q zgAT-4#LdIV4Q?=k7WaXA7~n!f2UaOLg4&FrCG=n^5JLyGu+RY==nTGL&H+?qf%dyG zfCfxK$JK!JKhXa3a-b87;5{DD;4?9Y znVc{~9A?6i1#UYla0*ON#5~Lddd?OzXt$8l#sgSEyGKE@NT8jlpe7VQ_{KSq6!@Sz&_oiG0z0ViQWQ{N zhmHq;=cGX05+-QhS`dEs9C&~MR3LW92fR6G371e80KrIK57!w0{JOg|n9e5%MJfQ3d8pr^jMhBiqf`|zyLi^X?i6n>^ zXy}4Lfe+LQ;se55 z+N{PXFay+=1$CNuKnJBUgBBRDfViN;punRRpk6eq853x2Dk#@LmSTWZfVvmpE?f~LJm3<3fx^TPykJ?feuFk?Z7Sp$#H=CzaU-(WU!~k5p)J7`sLsb>F30z>7L-ho~GaWfJ!J(F%BM79%M&3JcABsf+m~>dJ?sd22*>E zpg9Y6P*)6e7meeWo`Vbmm%!H==`t{Y)|!D&zJT6ui}hL~;_fuc0^Mi_zEFuz0qH^` z&~{ev6zW|j*pZ^3kOp`1K>c7V25-oEOK(t@+EF44Gz!GzhJ(})xqye=KoyD&Xn4&AG`Xn3I;JRZmYoRSkT=*OyDgz z5{jIlkO$2dfx7yj_7cdQpo*3Q)}7;l^a#OM_i-z5K#tM?s|Goki2+ohgBo89pyNAO zK*I{U4Bn8MA2hTEox8gU9n1s`8AAgXG&B(bURDS?SOjzdFSFyBa|am&E>|lsfu zGB0TL4?oxtXj@K!0TjpJuJs4VYGG1>_6l;)F2oYFvq%Wq?c@b5!V2mJ?bd+}+Dphm zJ0DBXP9Py@50MwN2rH-?w0j0NXm271?OZHDJB5Ux-A!K5BCMcp&~6{tpuL40vhY_?Jn|y7GVW-gLdbD1?`Of!wdpfk%M*- zmY|(PLeL&0FK7`~P&a5d4{XrhMGo2}Sc0~PgrGe@UeF?}pl;Ca8`z+|h#a)Du>@@^ z2|>G$yr4x`LEWI;GO$5=9XV*vVF}t9Bn0hK@`4s&1$BdV$G`^d4dkF*iX~`gk`T0e z$O~G871Ryd-2)r67m$N?F_xg6PeRb{ATMYUR!}!+cTqoRkAfDYg6H8uLp03r>xe)d zaPVrgEKuK{!BGOV%uIm|)L{ml9}K$J6gpD_K5G;#PSV0j@O474nH|uEA?UO>=(6gGjw3|cP&x}X6j%mZ=;XyTt4bP*|dJt=6X5t9aJo*lkH z2)Za0ZXakrD|FeU27FuwzD)?U;0z(m0ltP;APcnQ3^WD>8Lr{ye#yir2wH^$3Pkv> zS2HF7@Hh)-gbcQw7_`U+Jo?52+Oh?@6NCx0u#Z`R5wy@+0yKF5TKo&WL4;X>g|chu zLA$CML5JyrubBq#cVNi|-L45*@oS>MsKDjO09vPF1={HfI`fy?kx`MyamV_@ki`_7 z3ZONQjD-rk0xv;#(lb!)PI}Ni&GL>GABSBL_WBa<1E4|p;T zbczmWo()8wfiGVN4~&6^!$49X8YBfue6SU0KIY64ptJ>c8fbA659n4M@DdRP9>+Bx zk9^LBdE@~@mcUI}(6VDtFbK>NQ(zQ$0a}j-ov9;o^y|XEBMbtMYmo*PS7Iq|*N{-& z9wo25MOXn2U8)T%F0-Nfz~W{2x+i%0RbT?$_9C!m1)~C!CUXR6&7&rB0{BKPZgb`g z1ttX^bLIj^(5*wvnoJ$D+(BDFK)FEyy2y!Hlc`~rJLF1uZqPD2unq@D(4;5m05{Np zIEV%fr6Q*p4|8S>@QQfQs5xlS6o>|ub)bbQpduHv)DM)pK}-EW1IMsEl#r!<5E;-S zD7YTbc(5k3255^XXdewn79S5VakI=URZ zy@v@jU=Aup86gWG89}SjnH=lQm@Gh3JD?>2phbe9^J74ZSwYt}Lv|-IIfBGoAmugm zs0~nQ$O5W`c)>?Mf)0~m0u|aGpi0pZbnz6ZUS#w$k9 zB1G^Ws|3(08qhs@;Eh)~pe46vOeLW3;$?9Bu<;y&qmjVd4n_vhiepAlCIjmNEhQ0H zy@U}|`G97QS{M~rzE$vphg))2DHh^2GV?D1}#Tn(`2#%ZRi2*?t<+2+Pi|$5p-BI zj{+O0^a33d50ZpVkb$;|X)?)}GY2R@H)vg8$P)OP4cVc^3!*p_`5Y%~J_lNj!saLd zzHd%}U*JX@NKORYFk=I6$pcNF34oFteA`tEGh~+=;_N^LM$k=wj7~gZpsB^>u!CG+ z=@Ok*VCH2|VBzCsWMXDvWn<^yUG6Ri=(>+7B=|ZfQTjAn@GK ziUCwWGFmaP@$iD`Z3c({14w`eB*2Iyzzq^$LK5Ht2{0oGaDoI_kOV+`{2W=41lU0; z*pLL+KmzPY0<0hb4kQ5=}DQw*q%1x-7?0Lk*2F}(rN z%vKCnKs1XL!&MN?YQ=C3RL?zN%yI;|4YXs03FHQF-se{U?^t0{;0HMsGzWZxK~aFo zK|uiGt_R>_J3)O3h}*zZpa($aa+@(70nt2WOglg{uNl)GCdVI0JGGcV_JLLaGs3rP zffh8sV90X3&~bo4prKTO$?*ddxORNY#K=*v%-{$rz>)eUJdlekL=+eunXMS4Av_rf zPYJ}cVo-+gR3JQ62&JaL2wK#p4xuz4f|?MOTA=<51N0`vBcOEvI-qV2=)h4>JpsDc z6)b83D)NtjPCjK)0G*>`#&iU9%OJBElLd0l1GVQZ92r4X11QKq{U(9O)lv{kzzf11 zPk=130o^7DVS>&>VSzAR6j*c_PJpk`1Z|)=0kVM=wDy2em%&?+&5;3AOoG;`E3kt| zkS*ZF^gK-5phiB(HppogpuP!*mm8|3y3foF}NNpnzv4!hTapL?K! zy9IPGAtboLOapMpgPGvqZUG%g2n+5OQ1_FV;C_S}+#MiGAi)i0LV_F21P6BqlOikV zb{Q*%4v-C04(=CNg8SJ3rEZ%n&|VNwiUzSDfem7T!`cQ?s5vrbgIYr1u06qo{SY;z z4}i{WhJ-Yj2?=R16CBc@WkW2WbPbZAayUQ763*v9Yk9ychC$^BxZ@34U;}D3FoDVg zdq^c{ufPb}9tQD0XwNzmsDa@D%CZ(9!bX8v;A{aXV>385HZ(L;xPhu(&>gIxWK#&+ z_6gSI16ieG?+7}*hCzW9RE&bR)Pb8`psmjgjvC;_IFR+lklkCL_8YiqrvU9^fL0~* z!tSyL_n90)Yji;EHINja0%+p}NEdk3D`=e#19U+wKlrq6kQ8XuE4U91T0sobB>-NW z0+Ir)Wd>c83@Z1TLEU|DZ|906Xe&6AE`vQ}*^UB(z-7o;fY4!#`%H*K58&&s!K+;r zKw|;0Vo-q*bg3z*1{JuS581HAq`~9?swFj;d=$Y$bfCk#m_fsIGN58L0J2IcL=m)W zmJPfl7SyU!Q2<@DB(Qfec(JJncv&!LwJ~T<40!df4s6-3MwY;l0FYIT;9?Nc+-3r8 zWah|%>E{72B!+D6HGnMpHBn#&Z=M8gtOx4{7ugWqpe@^wUOBS{lMHBgD5&NIZB^w4 zWf1VDbRN)(K^52a`q+0B?vfMr2Ddze6bZ8;TKLAAgckSwPe(*>|BDCMw%{B;F%Kmx0yNS46# zDo{9rcF>t*33RSxbOha@0!u=mP4%pfHyE>^XEA}=#-PRMpyVZ_z@q?_1Fd>jU{zoM zr>`4~3ap^TPhdHLGeHWB0*_{cHcYb%%&Gz{I}`ZjqR6Yj3OeF|OQ5%nQGpfYUOok0 z5Q9U3PvEDEBEJHcz`BKuiUJD!j*JQd0yC?m6j&X9Fl2$v7C6-lvP2lf`@xVUa5_za z)$s#lC%6KuqfD0LjDN=%1P(+)I4%E=F+i4N4~78WiyYt+s2<>tKmq;<8sK{%0p8|{ z2=Mn<0=(4~9N@>00(>`WfVcG#2=F_rPBI8QhX(kG)hD3=K2TMk1-$A5u^?3+hy||t zEFeWcxazY2b>N9;)9tQ9Y14r#IXYB*H`bhF5SR&aKL=!lnIlU8Th%vEExHC!V++!v z12aJ`WpV^F!9fka`v}&eYXG&kh-uO7MGb6l+YJ)fU?!+J!Qu#Jg4-F?Ytdl~Zfq^O zfeP*epsoZYxWP4t4 zblnQ5=feUTiVIL+6lm!H_oYA$jTi-1ft5=b71(*-=KlFgdl~_O(C!YepKtnx9Esvsr0@!K} z(D)_`XeJ7L)g@TW1~mBtW>pA$DHixy2O9ij0X29`xIvmt6a_&$)-{+cKx0u1pgArE z1s2H8eSYrG(7_N;up{l;cYw4;TtIs}L9Ib>Q^iMtQJ|v(6x`rONsIy;IP}>SSV5th zpumb0`mCVP=K$6Apg~DiP-vz=S}Pd}tf0{6RNw%IJ}amt#syLc+CI+;Iw&GX0o;Bm zP+$?*+QF#EqreIp0x4180b9qbzzPb;3I%orZqNpLfep(*^%f*LSV0TM`9P*ADDo?? zf}(?8flpw)2S`XqQ2=xZ0601<6j(vQXaj2Cg5)fq(ZQ<0WTPmkzzPbc8pjV)&Vh~= z0=HuX6@&!#)`QgYC<;T&;Q);$uqp_fF`0k{f>}XI<&|kxjEM$fa`++-*r$MK!fG$A;oovA9cm>qoJp&TMxeo+9JKzHv zuhn1*0QG=CM>8{n$|?A@P^Xz4PoP{-bb=A(yz@8ULsW(mv(?Pq{+83fiif$lY8 zV{(AqVle@H^#Vv5de-?Jl-r5G*Fu5RK#w}VgK|638?a`~YoRg}7#!~)E++!t%*dgL zbk86BUMP@jK>bJfJ%1o0k|U zATde;`!;%DUqB7)58%MQz?da47ZlhKE`z`-C&vfi)1F{~Jp&wGAZch|KfnxZkQ!)U zKR^lWA7IUxft{nk06Ne^krULt$9oAE$TcW|4Kflrux}#*yAKlB4=E@7&ZKKOT=rnl>LYNm}EoCA67H0^rpneE196}+?My(KjhBJg0 zQa^-e(L03CGcgK-=3fplWGliN*i4{tITp~g7wA}CMo`O<(UB)hU{N(_{9FMtb7l{k zz)%65*@HGy0lHTMbk3tAqXOvWQP`j<3#cv33DE@F+{p=QC9x=gZke)TFi`-vZ5ahl zr-K@&pmRuBG?+kRPArZFpexcrc7j%WDewwRGyy3w0JV;F8B7%U6~LQ2H56Dt14e~b z3_9Qp1vz^S-13K+DxxR|(g`|u4rH97Fr>jRtRSEuq#!6T*AwJ88ATCDqgnzq_Q;|D zI!DxsK?mGs)=(4$DbZ0BQ(#aK1-0E66vV)V7K;K4X#YQGWRH{pT|63~gah;)bmKWF zg(8jYn}7!R1(wVMUFPn{A}}e(j7b4}ej^hop@CWtpj)j3{*{C384*x}3^ar)06Gbl z2|Su_#h?M%yQ%>h24w=Z(ITe%%z(@CTfaY?*XXP1y#C1T<1&w|?9sxN9biD*f*Z{mH ziwD#TWde1K6u=XIU;|V@ca?w_#Ylh;-IV|zBEqD>Bm?P&@Pd*u_!uWp0>&HOn}%F? zLtH#m!+YD13vY;v2XT0xgO(?t!ZlK^nx0V+*EW5l4{=*$8Q5}*=7g9*A3-4T2n z5A>u=(3(XVq{T+8ps^9~>5QO-iZYO?AJ_s|8PL(r;8WEMK(j;wifo`w^jV;lO&~4M z)!v|$iwp|vS>Tmk&_f)V7(nw};2B5IN?ZZZV#UA8pbRep3S$sM05lW>J~7+}#Pv|* zbOfLG>&OTiq=MDI;E6eK_V)po6x^Wm7r`Y3==4wy&|E`Bj9l0OB-c zkgH%;BAp+LBn)bvK$Z!D)-6E~B0UTpa6_BE_EBJTRLBA+NN{boIa-0yQ6~#jn}Jd& zi@-*Z00(FpKKR%HR)Lr13XF~-S)iFhP>V!?4I~1Zl2%|8_~8OdAE3i{K~W0|50K%| zJ}9316CtNDgI3cqX)?(`5-{le1MucA%|BY2}4ey0L_vzX)=M& zKR}u#1vwiubqG9gL=Lm;0z9)24)o4lnI&81)bLcn&1Vsalr>#*?`0?KqvM?4q5~qwFp|^ z2u-;VS#}U*1D>U32Q8EbPf>#ofCe9crvu8s90C)pL8`!W(V(U*XxoSYXpJJLz+LcR z=_25nX2>kJg90;Xh|>k61AOF^BCjK(0nMOtG=NZ`t^$i06J(?tRtAC8Gk`|x zK_kjGkYRcrP|2gf0c!H|fR|5!m*s+c1S|qQejstsq&RqF-vQJQ$pVeoD{wp3D{xDL zC-*^0TojlE4y$p4EC8KM%mQj!c_{EGa5yrRfI24N;d>tiUQqLn0o38i0(DG4F%kfA zZwQ2n0GR+<9LfTUl^9TO1=K3z1KAnaHZ`B&a4suG&t61dyw?&lpwPXLIn8NeYYt?a(e0JE(>Ol^hJit7>}= zT}TM3+K?vXR6vbR&_D$%XdYAtbdWZvKxcGh5;&CyUX8{Enj2(Q09{7}KBf^=C^9*K zCZjk&OQ1m4MS?cMSb$ELo_3l6)O}>tVB!Fse)wRTH@Mtn0<~D6b9)S+CaVIoz&3VJ zvy>IIw$51rJj2D~2wF+Rk>&Vc+G!ArC(E&A`f14N(F$w|EP`yHC9U8&K^Fxk1$Kec z#o&7;LATn1mP0FWK)Tur;8{Trh{pmTlZc@6!kIyJ8R(Q+=$1f#1y)@Ke?=}wMn!JN zB~wm=j$USh%>Fqt7Ao)vd<7p$3GyVn0+RysAMg@u2GA*=3Y-F`^FZe$PXRd)+<}Il zul*9b^8xwTD)3>M;3hbzsmx%-5Dr;R7!F!lCot6&6ah>cOd5*Jjtrm$gOD%=w;Wg$ zm_b!I$Q57}tf0g7L0c!lr&g(eLY4^>h#(WeZTp5SPzn|SwckLeZGzV4OMu!FYy$HG zKr%A0R=)(OVFPaU8-PvGWeA5241m<>Kn}4o03CA;suV#xwYWf+C4k$44B(@wrYV3_ zB9AkG235GhYhu7BPzk&$2AK(3yls*tFgr;BwDr)j;r2Q3f*&xa1H=IzdI`}1Ql!8j zFxAy@21w?9pcxa$m*9?v3aI1Z2tLG0fd{-Tl^ZnlNPJLFr)p3);tc9}R1fOu1cUlD za!}7BCa6J*6c_}iLxcJOo}fO&#Kck$-bk≫D3l;3%R9?wBbsXfiV>u_>@Q*|#gP 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%0D*fo4US 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�> zA)vqtBEiS>Lzh6ZIWod-JpwNu16@u7TF?YqzRV82dV^U3vi=ctHy|@;l@55-5p*>p zGw9X`CeS7+P^>^NNCfR=QUqOF1748?xwM!WbX6zl7DLFj!O$&Gpu4}gvlKw5!XsaD z#AL<5!_CkA2zmxSsFs4QtYZSNO9KTo55{6R@cG-|Rd*tgW!@6Z4$vM2iv|<;9z7Az zwi3{tXrR6cD`;i82zZS*D`+J;cpV++Dn5{E(Dqu;#pwdGr-2tNgT%ns^??Kx*af<) z1ePskv}RNQt>I*WZFf~*(Pvapq2xePH^Xf#O|N0!tS&S}`c0`B9fa3F1d920M@+tr!#)SacZ_A%3)CuvcIKt)$`< z=+glC@d|W_Jb`}X(hyL$ZZP&EKRiE1c0Y32u=LfEVd<;IL(5lp7@64WnL!t#Bjqed zgDl4hvyL+eO!foa0%f4c4x%g+ITRQ{YcN4WFC6B~9*zu(;Pr|fv)n z2~^LSC~!G4C~#(HDRL_?fwlmH)}(TS_9-zda4WDYa0qNP094i_zFO_ z>xh8;#h}3?0r3|jsNux`x|9nvgeIW?wjO#nBy4XG6I?ZuKr<(33=ULNg05i#$v84* zgMx$+B*p^L&jQ&ajkr~pmysK^RSLXCl?7DOf(G3gRA zjs@U04x9_n2Dq)rkp<#{ zs&~*0#B7c|d%>oF(g?(S&|-N|J?A(FA_HoTuxK*zK(>5CTR5QQ?>z7|zAWGkvN)S2 zbgs4^W3RT?R|)K+sM=ltuC@n9)8q+uKdz&WA8$bSD1r(ZRs~krg_odvFPTu9^x)nO ztD^*{O$NRUQv}k^2i=Lu1j--a#y_ZwzzEus0aj@MQDOqQFVg~)pFtSu%2v=pE=<{= z_2{gik#HGM2SGs*e2XNw&~TIhb!&K;c^J8Q7`Z`Z3bUhx0*kJ7l*Y zsJvwd4YRYtTA~*i8QDQYJdjSC3h4Gy@a0h8h5F#Vm7qcqbbk$`z;u*UV9r*A+_);K zzzl0cDlmdw0NU{HxZ~Y%27&ex(CuuXOKw0NG0=V%4JHP#QBW=5P9I1PEC?#~L7URS ze#!=48pW!>22-lQt^mFa8rrKnfv^D7g<~uPmB5YyS&+Ra&#_ksGLQ;E0b(7r;0Nzr z09|njUgxjl$O5_28FUVWB0p#`*(3L#QpaKu99$d$0FtLD2OYoKf zaI}N(IRhWE04hus!BvHbBD*7tB8LK-0_eO5c7)lW{skwfG7$mo003Q*3#tmZK(Pv{ zML;q<3ZP8^hYcMW3qjQdB;pjf5tp!n5+zd22lps=w*$!GjG%2spu4#k1>W~Eg3M$A z-FF5GZ|E&WAWNCSmVz4OEDFp5lR%puct9IdM6v{4JAgFtfG$>t?7eqnP+(JFh3<6# z$q9h>Z?J>XG?N0mW6Qh~3<7UvGnz4RfXh)(hm`}O4pc94fN}y8$hR5_OrSlb9N?S$ zz$aut{l~@6eU-TWz^7htJv10Q1aJ18!0Zs*f#x_+v>}xx3Xtrt0x1kYB?Jp7G(p1y zOaiBDL0KMjV=gO*0q()Fg6dWg1y;!R70^X*ECO$NLDJx{0}umzM>{Lzlm}J?R!0Hw zO`)tBOfrfbj*N<&pzgf_rve8oB0&QVAblbNXIFr>oUwvV{s3R2E2GG*zzS-*fG#oz zw^SHF?G{jZ0=jBg0bZUE+Me>{%Snocj5iL*&=w_S3TT%evjQu)Oj*%!ia}rvsN7(N zGzM89S(Dr{g%PPtftyWqnQ|7hOu0j1Mc2SabWI0RN`Kpwx8@Y{XS|gFLeq(S>YnLzu^!0l-R&?VfU zeVsN6ERHH!0#6n*3ao4bB~tL{lmd&RMwY-@TLl(PW)DRk5apoAtH9zY0Xl++N1!1J zG#VxYYA%Du%GeyQEI!R3aEA*t9t1kNhQ-kabSew?v~wnCLo_$2S;YV33T2Aq))`C z!9<0=-V<;IPRqXD0pz|Ok%M5n2JH~UjR&VO>pUWTwR_O|YRRrMn7*P`t#GI5EQ7!< z+SCegvmu#~33T8WXfT2kG^h(6jIaT<%fO8@NK5k?X01SE^c^0w(f4A_S5iBsDMtQc(L{zgTT#X$Vdw0@^eKd1qM(@lu3b6;FJzX2DG%30pu4J1qN`#P=Q(C zG*|{S+sFW_j@T3!K+Q@v1y+GGU>VS?B6yHU0u+`EppL5s*q00%Oe#=cg5@>Lm~=p6 zN{%{N0)0yu1$NehPPYP0Ju_%9>6kHrPx4{_$R|ah^T=Vq;X6;6PUuUK!bPU1~wXbuUN_`!WITZGFF2kp^KsgX{{0g%I zqZNZaIJq$Lf{s-IkCHG6%mJTH?kEAthTyYCKy&Qijcw=A4)mSiw?UAiq0; zF3;uyO-F&Io|qKaz*3+!BM@EOpeZoeQUwVGW>Crp$q1a|2A$Cc8h>F1F*rb-V`fk? z76D5LD1v4Sm^GM0AiWz7P>y4UjCk>L-(+Ou!BVK0z^Bw819r^d(?PNz$HFi{S6yg0 zUfFPf0aSc|rs!A&z6XK^9vv036xam*8Gy363aA8umJpy^$DzP3a2Ry`I%qTqJOn8L z9)je8lo6buGK2|~ak&&Y1r9+Jihu?nK{=O40W^)Gz@xw|a0DX7p~wq5iB5xw2jVqe zkk^=~egtFH#b?s16e0wG^3*m{M6hQCdfjx4kpJ9jG%>d3M}BIte`O@1_hQsTnyla za~xTq!DB9vU%-dyvVzv?fL7olw&Fm{=|Nb>;JAe`OOeg-2m^Ql9XrI_9gLv1Jv+=` z5SLNlZ47votS-ZU(A7MyykI*gFlB*G@~5nHymAOvJ{$6N+7p~!n?3NQ;|1ulM+HP; zgbaWxFoG|90u3I5M_xc#4zwuTks}K-Bnp~QU9w7Mbx0>q#8^tpiOujkZpAe@V#>&MJ!;`z$Y7XfE0lzoI#t)6u3Yn$Sf-cerSHQ zV&LaiVA5sahb?dfU%|r-UjGN4c>oPR!G?GlK+`DTdoD~s>tjJCNC9G+4pMUxOB13A~O0$$&}=X3*Fry8>vaR)JlCP2f)#BS=a{kwXDIUJIUfUf zXn-%!Vg_G)C~#99v=Wb5gGon`(~&`u%aKumOMw$oJb?|+Q3UNz1TTvNueTMLo&nm> zqyV}G5w!kR;8Hf?sO{6BTL{=d+c7{MLn;$(91RqiA;V(K4B-6(%vq2DY7IruLOT}F z-Usj)ElZXHcyw9;v}_hMaLvpB8kq$Rkb#D#9YNQ1fzQuoW>5qzD`11{(Q^c?(qvFz z2b;sIz@)&QrN9drw|04Vo>qJlj62F>n(?#yEc=TA_j%mGr#0nTUO*-2*5I%6gU4uQYc zkfZHE^)$04lL%-y7_>Bu6LwfV;^1`H4H(E1Ch%F$N|_*K0qAuh$+7U$6Zh zzFun_z74IwTHvk zYhQ-1*M1FOul*msUb{bhz4mtadhOZp_1X^#ymkyaO%K0*9kfJ85xy$Ukx>D$BF+(X zMkVNcOwgJh(5aNHS)loM(AjO!Gnm1rG_!-REzbh4^MKqAuK+&FlL2&SCllzfLncRs zEP=HNpe1hbjaHDAAPS)667cg39YH5HGeB;Y2Wf=vzXGiTU~ptMV*;-pGXO6h8#sUL z947wQN~u4rAS(zV@o@^Y+6a8sH)6FBF-Z$_yf^5mHde?IB+vpN&;~wc21n4QJJ9}g z(9QPHt+9}GHcVgzpcCChKSqZPBzzk~BGb%6%oE8Et zx8-qcXlQ7ta06{Jf$kn*LF^s@cOpQmWRifa$%QPw zR$v1!p9kIDV#Wks3CsYo2HXn(t^9>>-9TGV92p!L71*J6f)^9>WC`p~1l{8TX`Q}- zdPo4i^%`_~J%<8=z%33%CeR{eOsv2JwZW005OV4dlOuaR>=1h%1!hM!(8dN9M;>n} z1r|PDCT12^Hg-lR#qD_J+))OBmJ$YT1!h-XHXe4+rI3uElcm8dCJ>7aB*qM4v4U7E zAQlUV#R_6EgIH`J788iY0Aew6JKi~Wl)+KT@dwEGr{IIPbs5+dK?hcVPo`$&=ROJT zu3XyX%CmIAW^7fM_+fZ~~-`xf+Q5Y+pTKnDbYyaPHz2ej#g6?BdV=;(7+N1iN! z)+*4lbI>`&A`lMftYcP3l`POr0U%+8Eby^TOb(zkh*dy@0(j>Z=$Lg@4JHLMCK*r@ z2YdvwiW!p(H%JK&C?p{JI#@x68*+dIB@{V9lni+L78~d&67XSCpj{Lkpj}_!Q?5YE z*}+?6z{iY&PEv*>$~(|=r$HSi=&>iDR4JnXzFL6?bbu5K>=si6(Dn|{wlvTU2s~h) zFbKSnfu%;!)dx(VEi2&56igJrOV~L;7o&ns24Zw%0fiDsE9hiq3k3$yYJ3rpa~T~4 zvIO>mPeKKqyAIxc2I}pD?nz|<9nHf43R=*KD-32#65!1$jG*&a!B->jGD6N|k#J

    3A>qKD93eXKC%tQB{lgEspqt_U$ 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𝔟B3lw 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%0DkT)j2f>wDATu<7#GMVPtBMoRVT>Zj_p6Y;u=y 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

    VPf*WI(qK5FtkifGD|Z{H8-;~ zHcc`x++Wv$b9T5096j-{Nn+#+bzn2IkTqw}RRM%Id!WXmsgap+YKpOeQCd`V1^BjSNyiA!}q|Vqs)(VxXH3MwUqiW(JmNrlyuj$(CkmCn@RlB_^7f877+= znWq>frC6pIoT4~-Q;pILObiW-6BA7mO_R*hPLnrXVPuqSWRPf*YLJ+i4C;8CsY^j? z+(Me4kbDnsc7mFlHsH;N-~j=smZbcmBG9s5=lpV;;*uiJ=mcnn1+?Pc(!j#p$kHO! z$kNc%GTGuR#r{t*G_XiCPPH^Jv@ka`NU=Oev5AQWDP|^#ppC_bi55u)7UwB8(KyM{ zG}+uN$=C?QN;1Acqrf#uGcZj}HZZqLN;OP2HN8l&!%fW$&C^Ul3v-f_O^s3wFQI2- zJWXfg#54Nf&ybumvdH2_`Ul$LCCokaa929~CV ziJ-kLDQQN=iH0}oiXhn*%g6+5Pcfu=1`S?+^k&^G+3S_7@L?F+^>V~bjby+LoO*w%qs@1-HeCK7G;>4 zSXh`Fn3`Lfq$Ve)Sy(*4uiP>@E!jLRDJdn{*eKN`&GaFDX`LbJXczMEab78C2}6cyaLzG2Bv0)hDIhvX%?nQX@-d}@QgsB7kIn^=?$s&#@Z^ODhpQb9+qfX7YE zP0S2UOj8X^&5S|&(G6eK`9ic~snKxw0~8A2wZotwwlp&`0d1YINH$DOGqg;4T^CNY zd9V&`Cg`{rD=WzAa7X}IS!Ea`ry3X}8>U$#Tc#$b8e6=fIB6N0n;WN@nWrTtnWiOK zCa1ow^8^pfmt;V;kAgS2SwU`^@lLITPAx)?OiYrDOj6R44J{4L-q#UW@@!#dU|?!$YGj^lnh4s>{Gl#_ zXpbPy76C1-&n(G^hx9Sx!5c?1EI>^?&;&q=QHpt*slmrO{j6f>xHov-w%E$5xFE4S zFCH3N8EHmFsYw=z7Dma*78Yq{shFfmB`To-_0M@eFFwv`oV zp>9qpEPg^DVj$a5+6tgm>q$li$;N3(DMl$NW(JmqUnn=y)FjcuFv-Lu6|_#wIMMJc z3GH69L<2KZQzMHs152|M<5cr+B-R@yNv7sTiAJdg2F9sICMlNRNwC}0z|zRvz{uDz zE!o&S(Jbjl-2z;#1(*Ef(p>Oix@6D#VxJU27z|^fHXD*mQp}PQ%}f(b(+mww%#424 z&Bf(L_%2l{I}vU!l!59%qa?$`L~{d!B*Rq0M5DCSUxQ{9hKZS_p_!4XVX~QNvQb)^ z`R_sFGSehe@Vq$2Pnwp%{IA~m!Xl7z)mS$mLoMHf47@5>GcwAJFfBkAL3MkY zWvY=Or~_$kVrgcYl-5;G+Cn~KbJIjKGvlP>6pQ4Pq?E*N67{Dg8JZed8iQ^WwoElj zw&ZHLwzm%nU7!%?(l#EtAZWjZ%8+7vplQV`)le zzF&SyD%E2c$z(Va)tP1{$w_7wmWH4mn8}GIDSh=gm#4U8=76>XrGN%Ts2rroMkCm$ zF155wwKT9WNH$J1GBQs~P42JXiYq`t*O_>vCZ<5UBUBGo4D-tCFlnUe#W z4xmYTMK>OmkLqfpWJA+rQ**PFl(a-s%cP`9xHFhvVp(Q7$k9{}SR|9-Of+X&m|Lb< zB&S*?nxv$p7^F_F$2o-Ho|u_OlVC*{3}d0XG11b{$RN!q$uK3!#N5a%WeVvgx$?Be?Pv*a(-@;u6p%`pkUVBm?Z0U=v04M^dt(QCebRs=0+lVp5Wc z>GXP>OD@5NLC4Z*6XtNkk*z{?uTe^>MUtt7iG@Y7QL?FN;tbqvEZC5mTTx;+>ULA(Br{`!L_;HUgCxUbBZHasQ*fo35bz--RIZ63hJr{`ccqvlCR-#~8l)zs z7+M-78_dF8+J>hl1?MMcgNEa&>^LNo;Y?I#8e5uJf(}MbOHNHONU}(ojXS9#&&g9g zsiGQ=%tLi=TB@b7u?1*s+Q1|^*~oZK{bgLy9h91w0@_3#TvC*pnCn!TpA?i@Segpj zhd||E#$yvsDO7J+8k<=r8CqDFnkO44nx&b|#hr?2QsF@i1(B%kN;ESzNH#Y!OG!0O zGDtNvnnz*}Brz$`7; zT%Sj+ko77KE&*-2LG`1tu|aa8sfAghg+)qoVshFN>P02Uk64qBnT4U5xk;*Vig}u4 znt{3LQtH}?H7*kk4L}FVm{}$!C7YX?ST3tCqE^7V<>V(~&nJeKrshVLX_l#J#%alE z#s{$PtK0g@HkuiKS7RWsrnng;YrNR38d}`U|iM@a~O*TwPG&D&|F-$hJOffawK)nJU9GVzW znPQY|XkubvVUS{AY;0;^xsiHa^iRr4O~%ZeW=3X4sV0WT7HKJICaH!=o2Xa3yFvFi zWBAg*#L_g)DA_nEDJdDWr)x7E?6d%Fqct@Ht#B{`4IgizgPn;MiKc0$1|}(nmMKX| zmZ@9oQ7#sOu3`e6mtT;R2tMGzD8j&x-h$LeJBXh$<EDn3Yhj5p*b}rc7G$!S zfgxx+wn3tKa*AbITFR07P@)Wgte8y8FG^00F9%;FhqTuObRmwJkx^orsbNa0NvegV ziP6z|yo>D(Q;kwBQj(0!L0cq@EzOSMS8imMW@u!QYMPjon3iIaXnY*Ma!^~q!Zg*? z+$`D1B+=CD1b*eFpuIiD1{NlueZ8gzMknzrH#0UgFiti}N;Wf3Nlr92I7L8tQktn* z3TOeSxq+oYYT9Z1%9Ab9%#tlqQd3M)%*+$bEzaOqo|>4LnhM$BL z16|YvYQj0@rTBsl6apRh1zFvVsw$*BKRmHAxTGktBsIO#4%EB=X#=0Kn~`K@U}RvC zlxAvZWSVGVnslK)otjqVf*c01$;2czH6_U`F~ua+(8SC%>0*5nR-3?n@z2YtB-%en zmVmaUBpX^985-<=AOLJo*lT@P=1H)uX(=>y76i2CfszqY5rHO$_Vrr5}iec*gdJ{;on3fB= zw=TaZ7hHZ?S*4^Vm8Qp+losTG4ze{dGqf~FOg2fhNVNp*=6g{8l(>l#m(;Yx(wq{| zG-46x^y4C`&;5W(7Q{pi7W)V&Kpi$oHa9R&Ni;|^u&}hWFfucGSnmh!WEF#_fuPs5 zfvkg^=?Ff+tSF}vTvC88CoVMnwnaqB$}rh8krlW zysn=?hQlxu9W~r$ZfcfnY;I;^YGjt0XqJ-vrhWx(w?Rke;!8_1bF8euc?yzd96{L& z#3VZO@WrN;6{HMC>NtYKF)7s`+0r5&CD>x>}~xzO}SS zNi<0_OEFHeFg7qtGWk@0hfs?KoE^dK06H{huv-Re%V3j5ZOB*}TBI5pq?nthCYu{t zT3CLr_eRZj#o&4^Efv%~a!XB3u?f!90bP>@I=Z(Qe0N%WL26zKq<@-Xo@kzuWSE+o zY?78@Y-;kQ-kxaFAa@<5rKKgCC7K$52EJ1aQ&PXy2a{iOz%oe&sNPF818oj6vouLb zGy7Ig@qS!W(>+K-z2+%1f zh(0%nmskQiI~{Z-34{f{7$w8l)Y1ZU8?T9ladJwkk?9{&4X`vxO*A$#PDwMev`jWi zG5cGe3K=qhxC68a0Cf6pG3@AQbV(PG^324X%&JuI;Z~p*W#ogWI)GM8>gkF zrCKDLni-fTr5Tz2qmex(h9>5qb99pp%@UImQ`7#_${tftSHj3LF)=yWAT1@Sp@A_K zIwA$Vfe938pms6z9+?oGc%<3|A_=Zq2wd8eVqj`+YLsGTU}RhO^nkl%#)iM70n^>4znkShXr!*7N zU}Bh@lxkvRkd~ZgX<%Y*+Cor+iD9x)lBq$Oxv^!cfn{PVAq}QR7KWy#hG_<%vlCKM z659xAFgH(0vrJ30w6HWYPcyJcY$v24EyXw`(a{py_N9WFO7{74HFHFK_lW8X2vPzoehj6=6nl- zlvK+^!$cF~L_?DlbHlC%Mi=x`Jz(i8v;cGsJos`$E2~m42ksIBBXg6)Bnxvx(DLvk zqttFP%`r|*vouOfPE4~jH8n_0Oza`koJ7#nuZc0}sPW|F^VQFlVl4N0El9FoJ*T85;&`^X~paISl z)3ih*b3>zKp#x1zoL+IPqkcM<1r7G&lfH;oq!ZZb41bRCzj{5~bYoY*jCgy1-h9*X7hG`}y28I&{iMuRJ z3=@r$Q&W-*5|fOQEzKqk5_ctm4yaBtwluU%F-|hGNSZuI+?AY`Y-ntlYG`VjoN8p6 zYA|JxxGT-V!qPO!z}zG)#U#nVC~4}TaaU@Rv5|RVnt5`Hk!7mkv%}KGc@`Z5SKs=;YSCNe?xLpA@As$k`fLd+HNLK`uV21;TI>?T`qbCaygYmslKGff1w z6w-`MK=-2>7$nZ1wS}NlS`$+(Q%w?+O_P%iEN0T$!o;*x3j;z1hnh$cPcwqQ`p3UoG5nrTu}s)<>WfpPNe2F69WDjTF7zex2Axa$ZX zQU&eW2H)3`SX=^brQ@h_P|QN&*jZVX!tdV()hqE?pbHv}49q~cjVBtKm?xW?8zs+a zU<^dBq>D4t^FTN0rk5rbr4(CP1>_`V=7G=t292$NyS}LP0%#^DEy*Y;*)-ME%)lUZ zE>#RQGc`yyN;5J}GBQmuv@o7W9Yf6$%|YX1Mh3}g#wLmLsbQ$0iE*N(xq)GlX<~9p zQljMosu*gPoMvWdVFoI5OiV447gEDe6VOdoMn<6F^t5DSBlAU6G1N5C*gPdUE!7~! z)HpFIWieF@O-!{kOEEM}GBijrOG+_ZLJdRBOp=WZOcPTQ6D?BBOp;8OQo~RSBLkD9 z)MT?HgG3`UvlN46)G*Z2!Z^*q*xb<6$im#hGBI^IH4IHOGBiw1PPRxfFiis;fw_Vj zh9(;)rJAM~nz8KowrrLLjeNHfs66lRGjhAC;u1}PSXYbiG}*&-2ix}S+@YD$`c ziAmbJ2F7Ig`MVG=r{<(W_O3!VPlJ!&wQ(%ban1m@RA8qmL(b^+%`eRZ&n$u~nOqPL zR0F0a8yK0I8mA^&SQw_5r>v)qHHIe1W{DQ2DdrZY$*Gp6X&Y!{jhT^QVv?D$u{o$D zGB)2xBWo-zOjFF#Oj8n*4UA3AlQ+@E8Y7bwLqo$u0D+i7Esseyr|rJ=crv9Vc-g;8qa4jNfwZjoq`YHDVfYLSv^m}I(> zHrALKTBIeKq?j9+nHnXTTBPivku_=NNk++usi_vJMn;APrn_ln4ahTT#wMvLMyaV5 z=6h&kjU{NGIB30}rIBHpp_%Dk8d(Fntsy1Z&@2_Sbu%q>A8o8jG)*-zFfg-7G)pnJ zNJ+8SPa|v0jg2fp^QoyurpBfQ76)i!O_FJ%v4wfEnTerkvZZC3#X%ZblbV{6m||#Z zU}BV%l4fpph&I-w7^fJ3Zpbk=OEa`gOiepX8*5SxEzB)bjT2MNlG03!43mz~#+o!E zi!{*qfTfwasey%=;ZbUgZ=0lmZjS{`#F!^pSeh6gBYAw=C^a=PDK#z4(kR(5$s#%R zcmty)dS4zkb^)1AfXyU;_8J(Qq*z)SBpW4J7^fwtq?~AA{K;sOoRgWFR}v4t%(J8@ zGr6QFG1X>6EjPSt*k%_T=P;Ki;^=k zOHz|T7c}B98#Mm{8DpqSEpi0k|Eq)D6;PG#iMgpRsW~Ny_?4ktB9T&*n3)%!oS&PU zm`b*VIN88x3z=Mi4E(@H`$LKzmphCe_-Xe!Jk)yOn0H7O;{ zcnq%q-1P&XR0`QHq&~S(1ryqLFb@s$rtZIg(8DLFaWG%+>Bz{KzhNxG9$!ME?2nVFjyo2QzY zTy0=T+N7iWUz_0c_OnP`}5WRR9>0lI@G(K7jV z10%}r8>}uWNKMTK-L+z3Vr-adW@4CTk(g{@ns%pw(G9xxA{n$R09=(7TUnK*Cda3M zj#&am|iHNJ}&_PJT!qYm*E?mjR}vfX>h}GD|UhL?>%4K&6Ula*C-@qLHCR>SOv? zn`&lgX_0J@W^9p?n3!a2`lNx;20CDyms(K*+sFeNqYWu7$Vr8j7O)LIMy5$dX{IIy zNft&a#)+1xPf68pX_A&`mSUWoW{_f;VrlS8QSCM8=MrJ7s3BvHS)u_bEpAN=r#iGqW@>F-|cz`AVYxRI_Ab(4kz3sVS++ zCYBc8NY$TaW@?(6nrx7ml5CuumiV1y{g$9Bc}y%Vj4V=2%uRogs6Q<=)zZYsIMLYH z!pPFX(CB9aV^B_NK}mjbd}(p2l~p-tuQuc^?|ksG$71YasFVFBNyZ@Om?WB8nk1%} zr~IOdsitNYsTN5F#)c^dhL$EK$-k*$YGR71g}I@zrJ;e5kwsdn!5^xanrdN|YMBf= zgFi9VBGJU?Zv&$(dP52M?mH{1a?r(I$vLTsd8GxQnKDaD&@MC!OAABLq1mSYNHxGH zEzQ!*$T9_Vpsu+|lF5Hk4KPkN2QAvLw6HWZv`99vY-l9W3l>R<=AeP2}*wV;oNt{`r{)l;El7*q6fuT{Vd5URjS}P?E0X3YG6OBPj zDIRfTr#ZQ%%fFx+pL!)zm!I0<=y&IXTJH)ZDn60<+SR zO_Gg`j6wZNlQa`kgC0^6ltE%za$1t9S+ZHGiKS7JaW5&F4Gq9M-;z_4j8ZI(ERFg| z(rlcXY;KfjVQ7?OX<=k;*-w(@q$Fd56a#Y;qa(~_o+#wBFWg)d>Kia&5R5{2OpRim>U~eSQ;*GWUPm@U$C690Bxux zpJCE*uX~2lVO)t7Ug#y2)evRK(jgc)fVgworGfp&5TTg*mmdS=`pm8W8V+&JDvs9A} z6quE4WRYT!WR{XvfTc#RYCL1QESy&{e zrkR**CPi~fa*~;u8R$m)6!X+X6N@d4R2dSnFf}nrHAylywlp&{PEOm}NQF%mMxc3x z)KpWGWYFZBh2b`87;0u>nwFMgnq+2RY-nnln6#Z5hFTh#n5Cpxni_$cROV)BJE&r) zg^^hb=vwt8bBjbv&U5$fsla8gKr8(#Z_f!MpBm{5@I(Kp&EwF1F!T>&PYwpPECmit$~4VCo(cgu`seo z10CjOk(_F}r*UxXRJBM+OER}iNwl;uOEob~OWaFhbzlnGePC*sW?>FGZPYMjUnAoj zTrq$p^dXHN_#z@QSNI?dhOrO}Xe><=%~DKE(+pEgEE7$WEcZ7u7TFZ1=A}T!u|O9r z2B+qwgcl_i6r>j6n9YR_QWlrw7bT{rT3JD__H#^5PAx8m9NL~(9G`?ZaWd7?G9@uN z#mqF>+$_=DAo)Ne<1}2s5}uitl3$LLB(Vkx_O(qgy$~9@3=03A>BK|}!;~b$#3Ung z3v;6s^Mh1~G3<_mMTV6Xj75|K4GdE(P0|bv3=$0u%`8j|4mC19WVG=r28}TykIF-W z3A!O8J~y#4DK#E8UGJG!k`LXX;R}+0%+-ff7NpvQK#vNBjO1Hc`GZIFp*us-1aXYB zLQS@^f->yvK%6Ax<6qBsA{Op_8V(@c|16AeH+WepBDGP**11lm1`SRe@E zVc$y`58k$#VV-7YVvqt3v*hG7Gt(oDjL@_5!H3=2fR;ch6qkUm9RjTm0qt!xHZd_Z zNHnxCNis|^G%`;)+Q?X9Q<9kr+M5gBq3e=Zk_rlLh*%orU`X&`K*{;J1^IcPrH=(g z`DK~lqad7NVgXPgJ1eW){JfG3Oh1DzIx;u5G%+)_Ffz3`*2swa2y4tPM{!Atl~rcG zl~rm{5$L=a=hEVm{9I7bXQY4*E=V;oGD$H>N=!2~Jx)qn$JijzG||Mw(!?y)G|AH3 z-~=g}Elo^J6O9ZElgvz063r}9PEy)0FiT9eNKH;lF|bH6O)*F|JJm?)=^2ShiAE+# zDT!&OmL{MvveS)>9@NpKE26VQOJynw(-_WDL5I#KJh`JU+##7D`P=<%-LP2L)zIw6{%$t9R%hMAcGs6qps3U6d?VPbX-Uv!&U z7^E2*Cz_|GnwcA#r5astWQ?)__0pl;`QqgKf>iLfZY!%`5F0kt8N-1Yyo@SAh zmYQN|WNcz-oMLvTkO*OJKOf#^& zOSOu?C^gB%!qha?2sEmYW@>P+k+Bfs(1QHplH|mq6f3J@P@}InwI~yOvR4skL<+{X zfy6Iltt7-(VAa8J)plV05Uuff`FWrdQ_alNk}S-PQ$(+rc0P471{dZG?~Ay$)u zo1R(unR)R=pcRgwDMqGBtn zv{KM+11qbL%-q!c(h@f?7ZIBoHdE+X!F#Rq%<=_Q`58*^E4xq#7B*c z7SP}W9RLqIU@bZXw7fd8IKH5yD848$57d^m*KR|RrNRVFlocyH392|W!(`M1$1S zCyk6v;Kn*cKZFFCLWv6kQj5UtsJvv*@;huNPNbTFhO$i)lT9qs5>3oapEfcUK*Ery zL1A#~sJJpO*~%)nAUD~{sw%Z8-^wZgv;(EYCbc{@sW?A5+sZ1u7(DU{Zn9>W7#o-* zni-f`n3yD)m?x(`Yh;{4$|x{~rOBW@&Y=9|3}M({sL06##g{W==o+iLK*Q4(X{lx= zDQ1=yDW>L@W`;)3Y40#dcoA|~ibbM*wWTdfsjPM{F zV$d`92)WEO1$0-Cxv2r@7&oJ2vzLvGz2IbA4BD}umYN94?!{JC>8W|~PC5BWNIg#S z20u$*Cr0W@*N+8yVAKx=FPS=~7W_RwbHRq?wtg8YY@sfcBv#y&nP_R2oM`c(k{-_Y2|5VY0WAUQcD+0xwD;!`7I1exZ>=a!bBn4M^lW@>I^k&=|0 zl$>mll=7LBgpgunW@eI>l5A?2W@%!PWb%cojZi~NlSFePV?#3&OJk#?G^4MLjFq?+ zo`LQlx3U6}i25HsCRiAhM~zxsTPTrM#-k8p!t?W zqo4F&;b#cCK{YMa+`=dkv=-O&7m1^|2Ij^|W}wTCk}Z=>k`pa|;~B1mj(JgBd%(?s zGH}!(W`+hv<`#(-rWVPTX=#SZe@OINB4~M(L2@E!>!Yznn$cep^`{ynrJ5TVo0%pV znk5+|CI6$i?`vXikd|naoMdQeY+zt+{=bp*EpSOGmZm9524gnE7@Hb_wjNrxG!f`j zrx~OgCnuU2o1~hXnHgGGwl?8jc?((^kqX*l24zsG7_=}mOExu5vq(-fNHR7yvuJB# zv_tC4L24nif);hVrDc+VnOU-Na;mwdVOpYba(feFunk0CQEG8%P6_C)GZ1YPqT`A_ zHUZj(4c>@mWff8c+Ju%=l$e(cI^NjK#5grI(a_M`Fg3;8+%To13HSU2G)O4U@NjdW z3|tvL(a_Ao$TG#qEIBzj(cG-FiE$&YW-Msp%`>l{v;Nzz45FrVl2Z&4jSWmwQVk7EEz=T{dYf?1(}H`aA&Eul zsU=9!Ns0^0Qu9h+1|XS6luOf6Ee$LTlP!$RjFMAQlhXQ{7$@KgM@ZWT-nAgXi4dJ2 zk|;-+B%7uf8W~y|r6yV!Cnu-%H!{Lz3Oia(qFD}VU1~q>RQj;?ibNur2f>INc zOESw+qw@1o!GoBHq7CQxrKOR9aiURbsyQgek_?O{G%;eFeVJaASdd|5Ra}}>oLrQd z1nTnpCxO>H6_ozcXYLT;ZNcF#Sw4tX+Yqp!JfVp0<5%tmvInN5t7ab;V`TsczN zLf+^H%oqrbqgqHYv9PdAOioQRHZVyxGdG$=d9jRjb{{+^f}@KDEvON*)mBz%Mc^4S z<0QirGeZ+gbHmiM6r&Ww*-eaRaD|#2c%jDdhiUSK0>(E+%nlB*}~Yu*gVlZ z(ZV=wE}n!Dnh7?K>LCp`7s^1m&M4Wy%-A9&H90ZOz|0^yd0rFae7p&Rb}0d3GC1l% zOe8m&7#XL5rfZW7QVmQD6X!SKxwIg$I2CLJ=+4Noj_urbdQFMoESyi<%f$ z;|g@=jKreESY@YJ&4WJ~qHgPIDa5P_8hx^FinG11Jx#LV0{ zF>PrR%|`ysQcOS>x0@TK8YdbUr=>1yV$2}7LF1nUx@{b?d=OisCdty+G}Sl-v_!BkiD9aNL9&HmQkn(m4lt7yO^mIKFvXB5;9~d=6L{_=Q25}| zk9RgU(JUFX(IUk>EyXk?(I{mli9KNxL*wM+MAI}gqg3!JfK^S5*)WH|9gZ#3V2U6? z1Bw<%s|st@f#(ThOA}K=bJHY~WDC%0al_Tr8K6l`Ni#7tH8--fNHj7wNHShS^f;So zYO1k;Wr}gCp=nyOrHSEMqIDXXgEs#snHd=vBqbXdS*{~qXL53)rLl#HIcT~MwE2Q) zo#w`Ai7Dph$%e)zNtP)|$s3v&NjvJw(8AEf95jns1h!$8xAq2c+B{3zwG%qnHGd&Nqy)6SY z=9gw*W|#^(fmz%bW)0Ol5v`eMT(KJg<-O>QLL2}NFqKdH9a#g zzBI2qGcRRF6Qdq@j=dl;FEcqCych-|4;BC&9$;i*nQEGBZeVI^VPNa>{P1 z#jCl6d9sOFVoG9~g^{I!S=t_K^&Z4+sAGGuq7EF5L=8bDCV~8#Y-VI;WCYsHySIrk z6J`p$R3)-H2+hnZu>jBK<7ifbmbRs)8kra;nWUJT8=LQIVl;);LC|Z1A@`RCXXa&t zPXuZH|62-Z%;!)OqZ1_739ZNjE&I*MNlgYFu4ifrS~hBt z2)e;CIW5KPFj=M~Cxg~ffo>-?GcYhuNj}oV2)djpB^BxRCeV^KqVL?)2rJKDB*T>Cq?E)YOT#ovgQK*v$iyPmz&tU<1axbOxnYvwF8=9M%nVoK8jDy^2 zhMB6J^7C`TGK(`y@{2$N!srnQm9n$4Dg!BsPs#@!F`AKPXliMil$?}mY@Cv6Vqkct zi7^?M4UjPas6o&TON6X}E>txz1nnqIOi3{{PBJtxH#yrxql;ZZ$0nqtg3cjGO-fEO zw>(EHi%b$h8>kZvEK-b;(^5^0&Nne8!HzaUSqTk_4Crb+uy}DnYI1yPMG5%0?%;yd zWLGfTCPc>*)TTj^&M>z$Pc;T@N-{IDNHI&Yyg(CMEI_Alr5PtCTc#zYCZ<_jq=_x2 z=4pm0Mnn%I(@YGG+&VhLJnZ)j*{ zn0SRYwt$XhG6J2+YiMYeW@dbqCbpy+o0%G$nIxHkE*&;EGrC3_TMP^gK~V28k9XN#8j*9j=yYXqjxBm||&emh^xo zwxpPWZZtGVG)+!2N=!CPdDz700%=;JMl*;9idicwSR7kfrRJ69g5n#r-Ni7~(AdJ< zEYZl)(lEu?BKc7hqZjISmyCSS8h;QOpOX(d3J|3Wjl#)DHZwCc1}zIQOi4~OGBSMJ z#Ha*uRc>l7>?pwugQR35gEUhk!&K9hB+Jy~Csq=7CXeMVMK$HKreDakO&EHN#~JjKv5@i|$hSejXy8>gBZSX!DTr&t&p zzaY;PbI>_%=4K`-Mv1A37A7yrG9}R@(K5-{(!e4u#VFAz(ef2}rkI(U7+4w@rX+#J zFfCJGlVwV>iK)3E=;&}`Gegr_Y++=W1iFgbB-JwMEm@|dm>L--85)?G z8zm;1Bqf=>Bg>Su)YKHiv_vDzBvXr|WHXERO^j*Km3*KK2f8wmsQZW!*A_!2;X!#6 zbm3xgd}bbaX-kHod0L8zxrL>nfq9~#v8nNgCPr82#`#P`i#$-LKd%Hl3+icTkq4a; zweisj2JdYviOjoI1qnB4kj{7vj7d!fKC!iH8V=I_|(Lhh-K{uZOM^6n#}(!|&@&%!9l%seSAG0n^}EzK+~`8Q4dlWJyUkY;IOX_91Mnrf8xhnAKZ zrI{F*nkSj38l;*hSz0FjrKM${Q7JRfeX<5d7Kz4YrvGSaSz@YbYND}mnyIOIiiN4c ze_C2*Y7Sn%pOR=|YMN@6YSz$9_0rGKz%<$1B-O~s!qCFV#KN$#nK6@K0UMM`UTJP> zVQP?)Xpn3IIzu)&Ik}1Y{xLN&OSUvJGq(gyomi$NHPh5TNfw4_mgXsGrWVE)hAGA^ z)b~$PYI359v7x!SMM|={S(0HZE&T&JUe_SeAkh$X>35>BMH}_~W0sa^YH9{LvfR?b z$k5EPou>XtO*BeQP6pj;l4@dNk=8+d{}?5vS{fT0nj0IXB$}tBq;}HMKgp(PNtPzb zmZ^!!smZCP#$D9+kFjB@p@nIZv4OcslBKDEMK>+|lag#|Y-D6$VrdFGgvr>Vhx-08 zF-l2EGP5*IH8(d%va~eorKx{X4b75MQVo&~jf@S94Ndx}?;j&0OG_iuG{aN_(_}*< zQ^S5*`X|*W*)-YQ+%m<~(lF67)nEcmElV>uNi#OFOf)sJFf}$woJjq^OER^zG)Xix zN(Rklni{1|YGy1USlNZbr6qEV``iLnJ}m6C;lsioOe>RXYVoMdQ` zoMe=2Xp)p@kZL@wnb8nBV}*2nLK~dnb8ckW(c|}2fm~W@wRQu#jk-iK&L>=EYoVQ$Rcaw<{v$EX z#K6!p*}yE#7<4V#;%3Gwo07!j4A40&86~+nR#wnsBCV{D7OUI1=IA(<=s0J9%U4wO zi6tdPnMtK3pp*N+M;TdJ`R6&p1Z`Y(+(47opwrbe3{pX@aszY2)I?CSN?Sr#+l^8z zlZ}!M%?(pPi*U`8meSRB<3x+Zq%?yxGYfMw6XRr~WpuUO#3I$)&?40$EzQ)}EIG+| zIbCfxOECrAwPk5&W|3%|WNNvBuC|+}8Ji>-ni`rJC!3@i8k?-7tL+wMpesAfjZKZy z(u@q#Ojgm=cF^7OCW)qIpwk3Fi@;aY)%GON#6qg6nE_~#lBG$~8oJt^Y;0(3X`Gg7 zVr-h6W|3yFmaev^7?_x)n3$UwCYvQ08Yd;MqpR(y$wn4QDMp5g<|aw0X^Bben;GqK z%>@*Ju7@ax97AjaYQyEFf|hO?7$;e#8KkCKq!?M4nVO|+Xr{td73StC=1EDQ6GSZ% z6HQXnHa3%b6q8}HVN#l(AYB7)GR5*AT`ls8!4Ji6AcWEK?gyYrI{F-q?m3eO*809E%P)ZLla}; zloYcaq-eHCGBGtyNlH#hGDtD8Ft*%Dissam)RffJWJ8M-&{_2s2D?booR(^uXlP`d zW@&1fl$LC=n-tAy7Acmd7AY1cmS$$4o1*tLGv=c=Ys(UIKutu*(Xi-}paZ{=+Py_K zu8?KzrN%~fR#xDnxl<6$V$dDw2B7=)Oihd}Q&S9#O%2WWHZ#UUXGy`AewG%e#;1ag zl86VLSP0sDX=Q~ehIT6`Y9AyyDb3W>z%0!Gv^l~k*EvG&4y}wlFjTjs2#j z?x(&LmIfx41}5g_#>UC!plj|9G&7n)n!n)v4MinZR*psKrMckqbMjKl<5Ndk;AyREFyyS5gfb7)PHEe%r=O-z!FOpZ0AThj4K_v4vQ$Uw}fbaPLU2O#wiw7Ob47zSODJjh$(Zs^c479ex-0&QQ z<|U^ZrkNO+n}V*Kv@kSCJWru{sVPQD1}0`EhAF9rW(Jn27n&KPaa{(7>0!bVVq$7; zkYZ_JVQgVyVUT2Yk*qXr2s(z)G8uHfg{4uNW$GoeOtDC|Otnl-Of@l1Hb^lvHNM=; zm;lKcxLR=GnI#$U;c7e3Ipmd)%DEIahK+t5g;BDhp@oU1fvG{Fv2m)g!Ifr4KWM%K zjq9N7wLubxkN1FAER_~#R)J1*29Nw$m{^(`B%3Fhni?9X85mhyZDxcFAwf>XE6C3* z2941amFIwuVh$?z$xqHk>JB8QrJ7n=Ca0z(86_E;8Jb;dhV4Ct*bmwQJFg7zcH!!wHy-tE&3j@;>vqVFqBy-a=0~0f|8z6V57Nw-d zLw0?F>_ur^1%bx85=%e@3#ct+X_jnio|2SiVv&?;WR_}lvzajkI)aHXAS|&cGcm6O z;&_`N@F*90GY&-!cz0lCNqiYZBPfF!m?oPhCncGunt{$oH@`(Ads34O%?;C16G1J* zwB%&7+s%w7kkS>jcrF)m0}2u|zAO{moij8_Oi8jZF)%Z z{9MqH8#wkfAtk`z)YKG=q3xt(1A|n)=N(xDPe>uR4FxwC%0O;O z8JQ$n8Yd?jq#2liwxAk6ZDx$bRpCRmTfy!=B3P>=rWhHfBpN5CrY0MhTBMpjYbN2W zQUmi;qa-s6(7i8dDXA$b&q>j2X=G?(nq+QbXkuobXr5~Lf)ve0mPUq_NvTPoYnKgE z%#2@>qS@HOGQ}|2)Hub`*fcrSEbSF3noW#MO)V154a~r2nHVL%CPlNUWr}ffT2h)( zqG5`mxqAYfeQIVrh5Pyh*pv=>3kEWx0h5JPB|)iqDXB%^76x+hf;<^o z3~Cd^7bNDT=78ox19B28Q;UK@f&maQlvX_w#}0IJNM=q7N_z-&>4KrDd8&m;s)=Em zskymjqUq;m#zS=V4*0Z&_;`>fGV{{O_6F$S6yww+L$ef9qcls4FU^b>N%ux_PGT{9 zmpUwRAhUN+DNv`(8KepvO&V&&B}F>8B8%9WYtWYMq*82=lWb{fY;0y?oMx72YGz=V z{I!|!2o?-E70${mE!on@AQ{vZHa7t62K-Nw$CHwi zQ&TN1lFd!hERzil8d^wbw3?O>6W00Z3EzRy}3zR zqJd$mL6WJFiFuN#am$c$y|Jl*c~Y9CkwsFPS(<@SQfmt%8O<^>(-U!p2}&YD;oyuD zOQWJ#oMvK}Xq;$fnq**}YHHF+R>Gien~vDLin}FZn39&9l4@*fWRzlRX=Iex)xvm~ zZbeOUeqLT`a!F=hI#R3M87_!r$t=zUo|?JGX47L*0*b=;($i%=f&BV~a+_aCB zvLxBUG{wX$G1=7IBsIy*#HgPX%_%09pi7=C)67lHEE3I3CbTfFq-mA~j~2(rI~Ek6 zR5mCaoEg*D+`!DlGBwfMGAYR-)gX1^P|cX87NAoHO_Pm`%)m$aOlo1gMS8GPxBMr$ z{fWCG0PUeR1MQ|xN=r60GBBOo!nl`o?~$2HLHQ%rok6J&P`(jXa1PDkP3jEp41Gz-uj zN=cT+iOI%B$-?26dlljt)>pq$|0`IFM#agft8I+ovUzQ3!VZX81-CR6mmDMVOK36AzF{2G_K-)Z`LK;K5Wv25E{*iZb)k zLDxxv8DJ%Lb~-RckO9*X=0ZFnL(71{W349SDsKbh*=1FI=HbM(`Y-4X8G-)4^Q; z)5bDf#XU*3IhB@_B}*(B1uefp z;@dwDdpgL?FD*_@%_~X8JwXoYsDP*app5ve#Ju>T{BqPrF{qc7VUm(+Xq*HZ!8cDa zGE6gC(88FHvxtI7KyD`vN=@@EErBjPLu<%E)S(G#fa*I?scd3slAH>d5iKl_t0Bo9j3$aM_z zau_m<1LY2^@eW(-30iCqUE3L!nOcsXxMAT)?b2s31T|W|)6t+}xTBa2Dxd5?1r;ct z8K)ShnOIsT8k;0qq?o0oEoxze9aEnR@OlqPuu#8jEl1+^hlM@XL zElo^JQWm!`u40E6g~bl^77i^_25~JEl5!yR3SJ!zsuVQA1&R0@Dv-3Vi95YP>jx_< zCzP68#lf76WP`Ls3&S*n z6q6(qgEWK0r7euDxCaBlS3}|5zX7uj>%b6Z#~nJ10xIqdlMFyBEYge(jm=HX4b7Le zFmA_P7EvQX6IaG)>S$uyZm~^Gf0|PM0FC z1qm*itgJH3K!*{UrWlzT8Jd`zrkF2pVeG(Nia;Wma5n_Uz^-FyN@hOvq;4xKWFBPj z&p6dGH90LcHPs-=$kZ~`Xa!!!pbr~?n$e{tpzHTQBS*QZx%r?i-O0YGx%oIcOGqII zIZ_;Ss8voX#4&~jX-O$*X-P&#hACziM#d{!7^mP48Fa@GKZaG5YGsAiVMA`DVmi#s z+&tCPGBMFS&Db!-*xYOt-cX`?!JnCzj#T!WCW3}*lao?XlamY$(~MWQFm~Y%C1^zn zuI)fo9qN4xuv09YKxg&kr8wv3<|gK)*dT`n#&8^H4Yx~bPDvsp(#(_0j7=@f6VuX6 z5-k#q&DXRr7C{m%?pASfKKMS6%>2A!E32~9B}NkSDxqCE$Gl2VuMX-OP<;%(B|6E{#MB}w z)!f|FY#qK)U*dKedx8#p#|#L+)Dmbcfm=BS$%%;;$;M`BsY#Zp7HOvITNo>FhCXt% zg0gOYUTR)Rv6U5Zdqcp=L%j6^@ zVUuL3h%D2EIUP z!^AYnG|3{-G|?=@*uuhc%YZrz)Hj4W%)-bb)ifm;bYyCZxq*r4))vP3xZ{z`5W`U! zqaO~5d0ZrOa}G*AYp2lXk=tymQ=2%I8l&1z(zZYHFfEqJfz)Xqm66;jR|OW#k7S zgPc$=5F*Gnw+TFr99k)}_hNX&2DnW;;27@SY@S)EcAswZe zTv}X`pKE3145mTHX@Yg=V9zw*xd$Vo#6*K+!(`)>6w@RV1B*Q^j9*wG#VwY05^DTH zhucXUnkT-;P7T|L=!8S&;wWo`V9w;xekK9bmju-y)Eea)89@c_?xvS+D?w`zz$ccaP+p`D)I2<{Y)|Zd2|8xJ z(dfcGi84f@3w-_}J(ibHAz8x;N=pmS6$F-``$7%Vl9N;SwJ`-iAkD;p?Q*liD8PFLFz%g-6}E@0Ho$c z>+E3_g!&b;2MFpFq?nt5ppk`Xnn|jWf$^ah#O{y?7-)SY=yus+E32^7 zWboh{d|d@Z1-AdBe1iOddj1lA%o3AFXeGTAKE zJkiABIOQX-sg@>|sV0^drm0D$Nd|@nCt4WS5g%(XA5$d&aAaqUP%unRvNTRjGO|od zG&M3vF+SPC=n5%Mu=K3aGd6sAI_L=A)TCtNq_jk13u8-TqeP=qEsQ5|`<>FUqTtlx z;>`R!@P-fkB?r7nz+ZB}3mE8#QnF=YqLD$Gg-KeHSxTDW=@!QQxP3!rbpn~!j|U%u zjN^>h(Bf3|flt?>qWmHo4Nd6ub#i`QSt{r_XwST~#GIVWB=CeFsL(b6P46U|m|2*l zni-lJnw)82JcHX0gkpq+POjLcu@BZi{q2hEK*Gj6AcUul9EhK(#+4d zFz&$}^01}{bX7W8Yru#efP-0vqZI>M=xAk?VU(I|o?>E{YGi6?oNR2IcAacJjvJ~HPO(-)H2B=>FzM_Q;KD(sfmS2nqgXsk(q^Y%DooG z6S(UsEUk##(vs8)D=S|Rg}qS#EufHY_D!kGQ-GDm#h{ys^1$m#tgPJfY&10OwEas< z3Q9{9Y!x&#wIS+YXXgi3<|U&GrRJqTTMq`Nre>CgsVU|uX%^;YNvZc+7{B5640@xV zKCZ?vECni5^VN8KIoQQEWTNS_#|`CMW>)!y^Sr6O^hG4FoqLt z59&aCMt*ULl~qV)ZYtyu0uwV!b2F1f3-gpDvs42U%f~H@ElfDgMo+S2bR@BKP9WBy z#Wiy9p!TTQjor*g`t^+k%2)Ap;)@o>X7U1m=&qLog@c8KL8_T$ie++gQfiV(Qqs#28V)I- zotmj>si{e3smUhEX0KWp+i8&=h#gR&?g~m`ZG~h-b4yc$L`&nORD&cla}#re*CRMA zQVmj549tv^%}mUbjf{-V-?T6;$DJ<7tiUvI*IX^n6@k2>~%n}12h<|dYwmL{ndNh!(Z zMrrR_7+29Wz=&=KV;gXUdK}X9fe+`CJqQV@+|e4~xaiZVPOEe8GZ0QRzS_$hvQM#y%=p;vdtHHr)X<}w(lw_G~VriIWVqt3hp@s1@?qH>D zJJcm}Xs@6KHK|OD3=9%el1xm~EKCfO6O%rUhG!DeWtzoSR-`pY(ku;9jEs^kjgw6b zQY?*3KD97@#+^Q?P^}PKO5*75p)aGsvVV}Yp)SG&1lF>YeCI)C#?8_aEiEk5lFdyG zEEAJc(muB^Zf1tqgr!SH$8e|J5F1_Mg?7$|#9N9%vPp_@nyINtib<+Pa>|z$#`C!2 zjm#!1?iMB9F&CoOHi4H14YtFZVJm>p(>n6XQScg2_y827`3`9^K}L(f@^*Gax7{Ie zYHVhZW@M0NY?*9q1gfjQwlMnO%!)8);<6mHN+~7H)X3NbbPJZLk!fP$w-&}&oaR9r zW$@+)dcy}a%wuH*TK))LB?)d+B&J#zCYu>qnwuG#B$-&6eQ$wXzKx~qD9I?wFON?J zEjP5X3Q8?bEdeh*^vKW8_RoVJ?v#;io|0$^IuJ4~(cI7|&GbhL<9^)98m*Z^-rme$ z@M&hm99Bl`rIw)mQIK#(YxqJ61uH9B97zcA1}s%T@+X#MBh>UK%1|(9WgKK=!7$a> zATia#G|kK)CCS1d@n;L;6Y9iaaalSj=_Hq+ACrqT4vK3(FsQ6SANL&9Rs`Bmt7!+@ zEse6t|OfHSj z$xqHqv9iiZ%u5H+K8bnhrHSdOo++t$C7EfN(78qm}lDOijrrul~RFnALa^F)IrQ$urO<1|yFM3a_Q#&k+-LOM1KoZ_J? zbU~fsR8w=a)HI{iq_nhTGlMjPR?4Fx$-q1-DL2y02z2+aWm>YCnWaHea!N-lxkuhY6AL84m>?w>QzIkO6vIS|6iZ7p zOH%`j&Q``A+^1I)lVY$eutaS>z}r)(Q>sKa@1f;0q+tvjOC;g47EqNni*Jhx8gbNu_!e$xg@hJ zH9oy4u^If2|fMqa`}%mQgp z9#1qhHBL%3Gc~d_G&eOcHS49ksy0kEOg2ciNHj@Gu}DcaG3slj=@Jy^AzL$Rz}!P%bfhYR4XfI2$c+>GK`YbKzHhxS(+FoTP7JMP9UJ(!pO|bz%0!m z%`7d&(9+UyA_4V@CW%I=Miwb)CZ?8ViG~J~2&p$tGB!6dF)_3-F*7$aOPowVeVUoE zg=LaaTAHPqVNyz3(v()l3}_btRN`A%C8i`6l%y7c7snQ-T3NZ37N^>HA|3e+Q3l)A z58{DN8nChg-NXc9*;!fTrB;+!S!JXc8yln~Tbh|0nJ1;DCK*m`Wh_Kb=g|Eo$@zID zU`>!K7;&ib2VK2nXJu8MS&|VC*MhY360|YdBqh<%JQ;M_LW-e9n%OkESZZc&Xli0= zlw@XRnVOntIh`JsnkS_s8l|O~rzWQ)CZ$;z%%F#*mKLT-rk3U=MurAvpp&X*(!

    +I#VF0lC^a=X)huZ?JuFR4OtnllvotnNOfff1 zGBBD$4@=WbEzHc56OD}%lPp1_I&)hY?QB965{nhk^C2wPyQh}eSy`17RmP{Mf^xc% zWvY=$lA)zVVp@uUWm?j_Rz~}h%)H9tk|OYEYJ7e{v6Yo$PG)*uYKn=KRa#MgZhT^K za%N_HQe_F~;<5~rq%<=_gQO(OG|NO2i&XRZq#KczY;0;|n3kGio@8iZXk@scmC+oh zD=e(6O7h{hCz%;oni`rUC#9GhrCKH@FT`iN1y&E3Sr{6F&XzDY1s{5wxTuxU98&S7 z<(61kf%fb>7NwU$ZUxFqEssyhEH21NtOTv{PBSwwNH#J^NlP&{FtJQo+zK0~PtGl{ zvdYXY$SJn6f)tGqBf;VUiA5!ui8-!?3TgR83gBy4?5wO(3$3g&(vm=DC>k548YZTh zn^;;bX=TK{ZX9AH_R$frsVL{@nx$HpnpjvErI;Hh8sx1*VLmIGtfo>d7Dsi%(#PR#X=H`zy%f(2Qsw>TK{dF zWM-IXX=a&doS3qt}%1BB!G%-&zGc`>yO)*Y0G+Woos04|z+|*nvE6`1)prhdp4a^J@Ez&GNmkC%H zq^)md{6c&*QD+YbbQB6cwE^X$j!F@;zzwRAkU`*?QPZ>(BO_zeBnx9B6SGtU(+#bR zmXP29*Hmexh<#!HdC93(R>_GuIq~^mW=5(-ieZ{TQj$@cL1IdpQQAgQG#eNunVFec zn3@}=nwpv>rfnicvtg=*NwTRyqOnP;iJ6hH@n%vqo1_^gTO=hXr<$218W|d!Zy`mq zrJ0e5ablWTqN%a5L6T+4R#G&ln3|-5%HtFZGs8slB$I8ejG!K7D%Sg`(F+4mzZ7Rr z7~2xbG&2)OrZ!EqNJ~yKO);@dHA+b}P2S$hSPzM0EMxfS)>2dk!JS}iX`W=6W^9^l zYL;ehY;3%vm9Y$`6To!|-dm7}P2!+BCfPF4+|ts}JkiX^($F+*XDed^@mU*Rpp)PT zLld(UqofoI15-m|Bcrs$U9F5g#5;o6C?LT>M&>4#W=3Wf7G{{6X=Q9D+9}SdIXTd7JK7os zvfN^vY@D2CX=-ekW@>7bYLv7WZ#)rBr;va{a~ZMG1R7W}G&4y~HZrzMO-VFLv@kN; z*Gk#t7FZobR!~_QTO=ErrI{xiTbibr8Jg{HWt>TLv|*1jDme}mZpO)$<|Y=FhQ`T> zDXEqgmIqoH=Me2Woavj24zx5#GBqUqKHs1T7bn znrTQ|%?V1wNyg>|NoGdIW+q1Fi57_|M_L(=;Z7oCMgWN$%1QM#bayG}^tTj4V6f39YGp<3J|o0b z5Q*Fyv`95GOHDFQF)}wbFf%f-Jk!dUiSxj>^wPwllw#0AzQh#pv9C5EI^bJKkR}1Z zy`+>>a9`5}M1gMp1kqMj8OAAQ=4pv3<_1Xy#-@oWCTCk2;|W?8kdv61XA?rC6&6ND zX$C2V#%XEBX-SER2Ipw$AJbGbL!*>blN3`+Ba5Uov-7mH%*?>T)B_PpW~Ti9u?b zWr{&^l38-1(KT9HmS$j*WNMiRN*pQ1MybZvX=<5Kl6jheg`uf|v8l1SLGq1O#(4A* zYw!^Z@j1}(Pb(|X0llbVkW;83t)XJ{L2R>RQxi+GG;>qKL?g50wA7nK*G5L>NtT9Y z#%XD(W`>Dr$!51&8CT${GLZU^)UP>E3`gQ1*CS~bhGv$@CTT{dDQ4!$h8DM58540; zok&KY^nM9eqQ)u4hUUhG$rh$Ysb)z=rgx~Hu?$kvlFiM{Qw&XvlZ{dhQ}0sW3R9yL zlfD<(6h)Y+-7Vmin-j(ai?jpfAZNN=;0$vI+syo+(I)1~elEpZS8#cbS={ znxt5!nwfyM)FdXFJ!)l)L2vHD4qS)PuHX~sZ9r2q#U-E{%uyB+pl~u$jm^!CEK)2D zEz`_WO_R+Yw=!CR9f~?!hjJuY2zVt#IcPB6B*io}*&xl*!oXlY<< zW?`0SnPO>SYGm@Xl`#R*%0>4bY-%<{-)o&?AmWk$|*Sd^NV=vk7Q3!dLXiXq5S8T2V3gR~SgO9P{n6vL!c zOUu;c=dFxMuuJCQWA-6BklW>v$BK#zQj_CTD@s!HQmm|k3sRF^!E8{g6x6Cmk2?L0h9N6U|MMO)Otw^&L|47Gxa4aOe!8 zm6cmjelE;>n-Gxyz;opg)ftusMh3}gX%?wTiOGrPDQT~XPDqv}iD|~>hNg)YDdr}Y zN#<`_8I2$bDX%maw3epK$_f&$pezLrV9e?r==PsC7C6EZe_GWpYH|rYU4rKGX=d-Vq#=uV3cfP zWMG<{YLc3m_J#Nr2?nN#DaHn7sTLOImT8G;DPM`#nrvZeW^SBnX_1zal9ptg_>Fk2 zDJh8-#;M8XNtPBC#z`s3--*|nW|(ShVVabbY;I|6o|Izng9NRqiDu>&#%W2WsfOl; z<`zF&8C^>pKl%`8)mlZ*^3evxaCnSqIUvayl5S(1gBk%@)DZ*mPvOiE5PN=mjcHZe6d zPDxGrL#{z7My8;1=Z(`$QY=B^Eq_}X9U#dU%g_&U;SIV+9dyz$XiY|%seyU2c}lWz zvQc7clF2`!iUmVM3qzwcBg>S;WaC8hq?G@}>9S0*u&_)tOf<8wG%-j`YG@;-xHC;M zOi2Uv>5>gVds>njiPB}3l$>U0VqlqK2wLT7V%*dQ8;L>`tszCFdC7?-so>=*5GE)@ zEK*YpEYgwv1h4e69xS%H?q#)EDuwz3LIttbKAR1BFjv@|kGO*Bk2 zF|aU9OHE6(>}+FfrjaY+b5lzat*lBiOF&osy5$$;f-6#pJ4_PO3@s83%o3A~lZ}nc zOuO0`cTwFPxQFO*jK+JE&mL?WS7AA=X{lsfc zOii*hOEa-BG%z(xH8e?^&_?7cHv?m%%c;a_GzHyHVP>9YY?x+fXl7|LjcAQ2rsipe24-evmMKOl24>TV)o7Mz zl9*~}l44?-nrL92Y&?Tljpm7l=9Vc*hL*e3p2AM zOUq|HZU|xPBApIFf&=$#t2(* z0_lq)?Gwq&DFNNl;s&N|Jaqyvy159&!TF^{$*G_oE@U7oGcOOMH^bC0&CJjwImIwB z5wup!a8Vm0;&QUwSX!henx_+p%6bl1$ z!$boM%TxnHWAim_j3$s=T9jH`no|Ormj%%_Av&&hR#utCpd)+0OL5P63TRCL1Rkn%%Vg73BMUPNQ%lf%$p-RFNij=HGc_@_Oi4~kGc-xs zNR}yPi57-NiH3%j78Xes$%$#3+8EQI%ep{i6Y>VS+{6MaE8oNd8&4fKGKxgdrY@sI zW6-veq-29Mv(0Uc1&}Di(&vUqVBf<5kpqu26(#0@Zj}oHQ8wVc9dm|LWzr5bN(V{FCUut)FcQ|*dpE2|7cLsL^DQ$r*3#AIX8*!R{pMt|6FaZzG< zJb1`BD6t$gzyKRHM)D|R$^tZ10a}?*1RCDYut+jaG%`0ZFtbQ9H#IU&-qwcizE%v+ zfST&@MWs2Z#qkCCnR%cwVXwqIjH7ul^g)YfQt!D2AKh=7Xpm}dZfRf+YO^IJ%~0$1Dw)yGA%U04l*+VZPYR_umJ6vG_pwA)y5cz(=3frGZTz^!9n|` zK+T4LoW#o1B5+708ylLZCL0^3r5dFerI@GgZe#SsX(+lc)zDm+WMFBUVv&?;mS|>S zmSmE)hw{XiYGP<%VP;`$Vrh_SY+`1DQ= zCgzrgi7BQjCT1pyh9+qisr%a)6NnB~^x6kABY=~GsYR+K=qzEwWD~PgbAz-4ZH$RT z+o49JCCP>s28M}=2Fd1WDHchFW(TPeqbA0t$p*%jsRoIL=7wp9+8A?)b~n1SkqVdG z{4&sv$dIDU}PC|WN4CVZeek_jWHEk^I$LcLv-RXsvX?z zXz*+$c;B{#rD0N{MM`pNDrnVWiusW?MssxcLgNzJ<}AsFl*bvSsU{|%^&Cm2X{MHG z#zsfm7(*~xAyBajLjOdc8=C8i{rn^-0%8JHWH zo0=b|i7m;X$s|)_&_F|?fnjRO37Xhq2HNLiW@wpgXkuYukZgF8Cbn3ZrX+!`5;spv zwJCz>XvrCe)c1YK(hn!p6@zXvsi<1_Q(!Ml%b(n?E8 zi&Be0UH!bg)Eq0T{JhlSjC^pvGC4J~EEROwJh)y?G&VIdGBQj{N;ORd9T<0=cwZVB zq*^8$q#31{B`2pQB`4izV=PA70GphXUtC(0YGoCioL`Wd;tb)UtN@1Jb&qcYEo2x8 zybw7f*)+|_EX}|oDKXjH)WXE*W*cK0BkI0exS629gm0?Hp$3*dK{+}+u{hT;DHF0^ zH?cT3J}EOVB|SCI%F3%aEHS4PG!z0}s*#wK30gT}oSK+qVU&`XY;K-rXl!(=ji}WO zpk)T;mY`ZR$t2A*+2nQ`wr#s6CP`*#pe^WTrb$LA2IhCLsxmS%G&f5%vrJ7kN=`Jl zOuCD&nTI1wpZ)h3zfwpNN=P@;OXMqe0NG(bO%|zxUgR&cV*ryanH$5O3VR`!sV6Z$3t9Vo@|($m|~V{YGRgRYGGvdjFegCM3b~+ z6Ekpc&LSnnGU<66p2M%uJFyy20o0xIu<;30QAkHT)e@AqOjFI03=+*#EfQbgt2m&h zgU4M!gDy}$s=462Vv=H%YM2HZwFMn#lV>NisEg*T(1$4fLX9E32Sn8_+PEl@(Ylu_QGj{6#=L|Hcw0eEzvPFNHIz_uuS<#Z1rQ5nr3F6YGGk!o@8uhlx+5iSdEs6 zsY!brOf)e`1x+=Wfo9sx6D_{A(O@fpnR&87nu(>6iIJIkqG7W6clxv=EkLuR7O4iN ziAjm(<|)QM=wof7MVgtJv4MeUs$sH$aca^}I$4`&YGGnxY?+j3U}R`%Wb%tX)}~sd zrKOl9f$m31G&V^|`8{y0B6CACv$Vt{3*#i?L^BKH)IV*E@wm3NxMk*~2BjvZfa($i z8`NEc6umg6(~^@@EE7{rjSN5+^BJ0${%vD~>~uigK!A1^Hqt6}(^LZk1LH*VG((fr z6oZt1B7se&!=jYfFzPkym4BRTPG&3_bHAzdeOteTb zHApmTYG<^^>4_M#Z*wWNACCMCgwwjSyl7(?cJEISDpu9K-JOd6Hegdr^K^<_wzH`OY zFxA*N8FUo@_&DE`PBMbW(l902A~`8J$=uS|EZM}Mi}=_vH84#|wKOv`Gc`y}Gchpk zZYOdbU81p>iHRxb?g)z{Gh_4Ao_1`535FJ_M#*UgMrla~#-O7vd$FprG&3-^Ff_6- zHAyr}G&4%>YiBeBxAd&6lJYA+%io>yE5Hpd@E}N0B52=}nYl@taf*SNiE&Djg`s&$ zKQWq8EI{)P<|#=ACI$wU=9Ux42yLT8ON&Gc6U!t6LrWtwig`*}iUnwu zq(PFA@uYU*S6P}EBqpX=T3VWdPH{}NNSaK16dRzKiS)xg@ane*Wg3-_@E!EJ(G%>}%)Z8f9Aaxq?J~A{&O*Sw{O-eGbOfoS` zG@nkqR*OW-R14$8v_vED#sz~J#A{772aP-$n;MxKrx+NRrOqTlYofV@k)fffak8nU zv7tfgtae6EXrTdF`|FfnRFq#Hl$wU9>%mJZK*Ot6R;Vit(vpo0Eseng#EEGp$tklD zB@minzNIBZmn3ia2 zo(9@7ZBA05>3o34b2SG4ATr3QYUT3KaS8iKaHrX(7Hj=M8Awp>hk6r?2?Sz0Dqnx~o= zn;V)N8!aIt!6h0d85me3nx|Qsn3z~387yrlXGtgM#+Kw%<0R1DECbWj#AWS_mauD3 zic<4HXOI+GS*7IXT3NY(2=JY1;EnvC1&Lrh-W1i3-q}?a3C2Nhv9&NvS4g z<}2E1cpi(HX zkaqYB==@=m)RZK16H^1T6eEMxwDeE1nNcEWQ=o~ViFvYFQsSC+#%Nq!L)aF3P)dYs z=ts)Z*qfFn#z`qD#ukPt=7xp_$;Jk2sUKX4NuV{%CZLtM7KVmtrt8`nt!%*iPod>X z61ZZsvI@!fFV9N_pQxM<+fbU3lA3C1o@!=h1ggf(jg!~6GtL2z^J7Wt@NGBnL3S!- zBDld&269$Pv#PoS3|!9k%-p&2rEL1Ijs2#z~<4+9`>aNu~xCsiwvo z+ZiKqMJ?1~D=R32V8kY;nj3*u_8XX3rlzGDC2ndbciURBNorE6rG-UWvZ;}AqN(BL zcE)wMVgR(qIWf5;wa6tAw0Vo#@qlJL3Kuy}43j}?D3XkllPwL+Oihiqv@@>8re2)I8A9)6_41QB6nYA-mTy#n33t#L~dj%*fK%A}MJro@xTLyNmkngqR8IuwP(4`_ens(a$r6mQWB?`6*8j#>Ku`shp247rbWMOEQl(Mg#@eppep|_}D zXWBqo#PKjL@}1b=!5PrK6X4Te%0Nq2tgKRt5{pw)$d7oGnLSVtn;9pYCYxKDo0*uH zn$FHd62y5 zlUP-06N0i`1v1D1IolEas7He|6ASZHBU4Mud& z`Jh?h%o3E;V`Y_LmYABHnwVmdY?*8hIz{qmJ1tiE8kr@Tr>2@F8YUT=T38wx9c!n{ z;G%77XRrjXki78c27#)+mW$w?{6DHdso zCnz64ury6cv9PePOiML2G_*7@JW08c$)-sri6+K|pbFYB(Jc8C*3?1i`rIT_gJeUC zRM1^M1}3Iv=BL|fcR`xDk)ff5g;BCeN@Ai>nyJAVJe@1&{9MS@K~!(l!wiPnfSfRr z6HQH%&5e^%Oe_tI5)+Niwo~n>TtoAuGz-JjM1v$l^Hf8l)N@#;9Ski%?bx*BWQ#P= zDMo4MiEaTKfTkT1jgyR1(~JyLj1w=k58`tbO^uBWjZ)1lQY}qPOij{KFSgTQF@=dy zqLHylnz2b*qLFE0qQRwso1rr|FfuhWOfpYROG_~}Of|XO&KO~XS~o++MvKAM5`*h8 zQ0D|yiEn;sUP)q74rnc4X;8$;9XiXv79pBeL0 zZ(x*cm|~h}Vv?AaVwqxSewB=oQ9~mWLqjv86hkvJ3j@P6%WLh7j_3^u=slptsU@H= z0PmU)PA##r%FHWH1>GfB+c9;CC%8x$i(y(){JkE zlxS!GTF#kfn3`&7nsOVfDih08(CC@5v8jPUa$>5tOA7-t^CzTeHa0OyF*i0hGPE>IF-S==f7;Gi z1#u~sI43+tfF3ZgelPS?5y%(^Gn2NWk+Mxc3ARBP*{NC!3lZ8(Ekprx+v~ zrzRP_XlHD}J-R@8z$1F@(4hBC&CLe~d=TVf>&z0!qH6=wRLjJ~L?cU60}~5VGn1Ei z9Rl$&JQSew@dQEu77g$Su(HBZk{TFVCYdBznwh0q8l@&18oX*}oJdKCK%9!^G^~QK z;-jPpynQPeOhZp5Gfy!#umDXM8yFcT8X20rZpU|FmIlQ9#Jox?tB}fqRL>OHYJa3P zIVqKS3P|c4^D4C=+}y+>@QQfQ5_WW<)Vvfs@V5FyW3x2FL{mf4)I?(wlO&@z?TpKC z2NTq5@ZlCHAFFG?;|k~(?V<0zL3dYWUNX86$f@A`m7J7lnVM#5kYr?Pl$c~>__m$V z8{$(eWea-Ak(`kT*$xLzw4h-iGfRsk!xT#sbECw>q@)zHcccu=pc@Y@?h`>rCPT*B zJyXDrHU!<;Vq|7uY;0fwnyY@_&X|VN(a_+82QRuUu#}$D9yqo&CtleG}YY1DA~fotT z<|dYgMk%H#mY+c*95}S1#5<^VF3!m>0UrH^TZ^@Ak`eST_YK^tJ&Q0E9FL7n42USnWPvPT3RH7DwJ zNVTv?wMaJoPPvhwqi;?OANK#^IYO-mnd77b-sfnSH@o!32*%@0Hm?WiGnj2bL zrY4#i82_Pgm7S@Hg(2v4;uHf@ON+!L%fIc6en`aT?VXEe(yhORt>z$o zY^q_Bsku3*sc&eIYL;x-M1tNV6N{vzR7>+jbBiRy)U@R04#wHIM$91>bRi9yqfWfR zSJdI%Zi;113(Q;yjk?t{F)i8L#4t5EDapvvEXCZUrGs%HF83kU2EoT~spLY0$uJhG zD^ruw%q>kV4U&`1lT1uaEL%Gm=izcCbae~$gAr~pl!59*gVYpD!^GrdQ$tJR6oVAg zwhqRfxSZ%zl%JTAoLF4q3~RAbJ3ujQKo>!Ey^&#(L87Ulg^8uHMQXA^a(f5kMO?0T zEKSMG4^GZVO)1SuO$i3K&LHbAsO<~fHsO*%^%dxlu0#VP6O%;H9FA#9M+f67T)qNN zD8cSlr?y8>3`gRiI@dhO(84G&$wH8X{kL#>ohSnG&3Q}rg{eiVd6EI>$XvtZKH_y68i8i<(=5{xQ_WH>()x+lX=!1WmTYNi zYLaSTVw#dNfoPo;=1C@rp#9{j2A1YY#>Nwg)(JW|+tAY3AjQxk#n8~qY!cBrlT(b+ z5{=C*ERz$BQcVplCKIhQHN`l|D9OOgJT27}bYuFI4#p+8avwN9)36YM7!9`tHQ$-0 znHquixS1FmCng%CT2Ad?j0c^&fTb#ROi2M}U(iaw)V$Op$aOBoR#rGA@=`&&h%8Ku z(~OeRQY@2FlZ=v*Or~`(F2@xXh#i^KufvedMzB$X!yqZq#K_px($K`*AUVk*b$SQm zT3l}RO)V}?Oiu-e3H4ozYC19x)y3xK21XW%mPzJDrUu4_2Ie#H)xC+uso-?roSz4} zqk#IZcEYd$T?EzjCdr0rpcMgzNtT8N=80xAI~dR53U8drjM_C8PK$6zpnA!|+#<;| zB`Mj^z}ytHU1t`a_F8aBeo-RmKv!ye0d6pqf$Bs{lav(D0aj+9>rm5Dl4f@>ZpIbr z{>90eIXR$%x*_EVwOxvCJ}Mv8-ANY4pk!i@YGiBzn*N-FC#{1nlkm(dC@q1uSgD`Z zF>OE>L3O=RnrWhGl9`d2xtWQ%XcLLFpMNNR3DPGU(aO+A2N2^O2typd#T zZfTSV@REL@;8d(@wCYq)h7$zB|7@91=QzHgvB&Ot-2jzoKc%ydSLpB@1 zMs;hVrJ+e;nq{hSYLa=9L2}|kJe_3s#LPU}loAM&VJuWvCYzd?85Vlkcs0IskD5{nXZsh?Dl%|@`% z+-hlL06I$9z}U>v+|(#>37#eq$iuKv4C=cU)pTSYs*4lT5{*raElok!&?Xxgq%6hb zVz94i)*M1L9hryf;v`cuvy{{%GXpb2Q-h?$q-A(2Hdy$&6(y#ltth1Oh!nyGbURU9 zZ<(B!YG`1YmSP0DpVHiDc?aWBTr~o?wT#h&pmxEA-4<-3s6H`GGcrsyv@|zQO|-N~ zHn3cQrv?d6O$yFW&IYaNqPFvqjD|DO9GaYLWR{$qoCG@0-O$itWe4L1TtSYq&5QcE z63uuNE~=x`jFOT-m$jyuCz~akCL65kV7!aV(V!!GKuZHbhp7ga6s0ESf--4QeohW( zofowO9KUV&WKn&XXl|MYy09_X%*-;;z$|q&o|4A}`^Gt{Bs4g}%F-bKx zNlCIyOf)x2GfiF7!FYvGoIv8ksWLw)D7COOwYY@(i3%3vSggV+h3YXglVnS?B(r4D zp>O8KCPr&J7@ra6F_+Y|#L}D+dZagq_pn%q>PZX*s9v=+Hv%0{U}0o#ZkS|ZXtEAZ zi<~yiGl;1m64hm9M#)JjiAiRrpu^uylg-z6FwVdg3E|iW}P2!PVG{FoA&CDyYa4afH1T8E; zIwIA;IN8iJHQ55R(Ie3!*+S6uPc}=%XxP1|a)1u{gdc zHOEt5>s%ni(wP0UP_j7@iR zFy>RuK5#a{h)UyRgJkoxGz-w8cEd!=l${-nL68#@2vn{?sU@XFdC*gg!H2Yi_^^Y4 zO;QXKlMPHjC$*ZJCtL2Kim9fl#unzr=7}a|CdSFh=El1_7`UtHa1T* zFtG%k|GJNal>`RH=1GRBiDoGl$tGzjX-WG#C^+27%)-#f%p@_Zm&ryf3!Js%xpc{zo%;`j9Go#exRKpaL)MVr2G?RnGFYT~2w@gm6FfvNBNH#Mu zNIpb#9R}(-BwHq#n5P+-rJ9+W93Hp{S3?WS6wu``Y37N>hDnx|M~L=>rBMp#&R5H% zRM6RphRH{%k|z^W6D^YsK;s8VmMJEthQ~S>LtsZfAuWXk9hVGR3kWHm!OLMmrx~SL zS%J6N`j(b}RtADL-p1#af^NYuP6QooZjuO^kTg$AH9FqGSZbq&mfNv!Qx5@ei$qfj zs}QiPi9s!c4b9CAjf{;AQq9xS5-rS=PINH#q2H?jvzP1ykLEa-d0xfPt07RGlx${Z zVPs;NVweIt*eT8YB)!7I(gJjfnx&C(im63nQj+1R4n}(%P7g-A*}}>SGNEafn3$NB z2D*2|%);El*yMBv3CF3LnkFWhnVF^{Dnpmcu>A-gpIV5et*EQl?QixG}l_VBt zTUixn=B4MP!mgx&ER6=QxHYv%Ge`t2?J~7YOEogEINQP4gnL;ynk#TGC?wSxMh3DpJmO;5(`V;#PS4z^taB6G2PcO_B@^j7-f9ER)hw zQ%%znFLW?2B0Ba!X^8eA338@!a-xw%l4VkIYEqJ+xmnW14#veqI}@D9=;O{5%M>FM zP_sWNHO0Uz&FE4G<6+$HB&x6gtt^J54RF1HyiEcW{u-!;U^`X>q8shbSPe}bbe)hU zH#k$9o1~?g7^j+;7?@fnn^>A(?qJk~h9ERAfX;6K9Xc2fIp5X9(9jTc=c18GN?MYc zdCHXz#xx*-h#go04o~W^M$z<=xQSGWk{qMdyZCni-m;7$v5p8k?INo2QuF?qIYj zPAy7Fjn4w#tC5llYEu=b7G);pWLBjX*#v=Zm`()Ulbu*(WtCxMV3BB+WMZC_mJB*e zGx<&j>E~Y?B&C`gnV5l>ZkVK`B;5ry`j8z_l$w|V-n9Z6n*+7`FeO1Upk_{bUVc$( zd@<_$Esng6%K<=)}&CIg0a?8n2ED0$}%q%Ikv$875k59@3?NraOv@l6F zv`7YBcbW=1b^2ik8FzqZBJKcBH8n`KNHj4^2HgQ;Ze;j~9P>c8*jibog6yg=28@ zaI}rnlG9Qx%~DegEfbB6Op;8W5+CoNv&oap43bj}5-p7lQ%#={uhj%}QHPO{foYnN zrJhlgFk14k>u`o6_HAprwu}C#ZPEC5z0Y9!CQg*>lUMB9a47*g3d<=E%`MxeBD9usozGH$)?7}#%9T;W+|4* zDVA>ru2-IFVr-mbWN2h&nwVypXl(JegHa1LOdwmQpv7Ej5~$^2ngqI>C&eW39q|b- z#lp291s7?cvhpMGt~M|# zR5Q@*lzED!VT#FT;eJX30jWpu1-+Q&P=A?VUeVGB+tPDa8!577cW&jDdmCUqs%?EwQq4 z16|lxQUaQGPf1NGO^2P$ZI*12Xl!X}l4NROnwpww{tq>bF|-wz6qP1}hQUlyK!?H` znOi2Cr6pS!SpFx}O#vPCXqjwgW?*KKWNDU?+R#a;Uz22(VwqxMVQFb(X>4kd)<{T0 zvYCNt66n&q)D$C=lvIPJPDV@AvJTR%$W5$FN{vrWEJ@CYFU>2@%u4~aKFyL6jSN7C z3K=CE8l{*tlcG7%AjKpNbj7HJrD?K}adHbun$1iS4J-`J%|RR349rqmI~ilKc87wJ zp_Llm?hxjPrD<}afqAlNvWa=BnW?!!a$6@gW>V5pP0fr`Q;ZDElgv|1l8oCs83VC9 zJ2egEeiwWlI5W$X6f-j;10xf|BnwLm%Z^UaiMc54u6S_Q5F8dn8=DGRDs7aUY;0hZ zW|(T6*x3m>KOCE}kX8eU0c@CRZjqL30@|jPXlQC|-bG#GjSLM9jFT+P(^AbrM@1!f zQ`dNlq(mcQQ-dU9Lqj9uB$LD*s;55_!<3X{i&T@8L=({cUcJ<|AT`wlbm6d(fuU)N zv86#`U*~{rI|D5$0Cm{R%?;CxEX|VoJBdHW2{fhzF0YEgOQnjftjdcr!AGk>hfhjD zM+WCqX6B{G7iZ>WBi{>YY-wPgoSK}NVrmJx5;%22Cu13;IgF*b4UxcXC&TRp^^!sB zwy@X>-Yki1v!!X8p#kV}Bm)yegOoJ0iJinBAO#-WLG>~zRwpG}7+aVc8(O4-PGmMr zp47=$4e=XwJq@}7JiZvi=SiTcAOi~vvt$z!!!+Zh$(@Wf#9B|1&vDpqX`WmOH4DgFf%hUx3I8GvYgsU>LdhJ zoMCR1WSR&%%^=Y*IWaXcX<8>^EAHW6NHkHH15knkoI1b(Vqyt8P0-B9AjvY#!Za~$ zI;b>)SV%Zol9VnGNfMV+3=$2~%#2e~ER$0$ERs!UbTW1m9Vn2>oQN_3EqNll1-$SR z5j2TuNd_s2W(KKAi58}ohQ>2H8T*KK4`%U*yR0DINtP*zX-VcL#^#oW$;OFh2D3UD z`-yfENwGz|o6OCUlT6Li%s{uar6QoIJcA7GcQa{L2K$wOwCO!O_PibP3IA<(=5f@ zJSi#J(#Y5-G0oU0c|OrP&5csclarDyQw&X#63q>a77(q|GR-(SImz6>+#<~^CE3Ds zA<;UMj6p~I8k-m3d)C4Mjtd@=_j zP)w{o(2Xo^;4@2X+)BY`ii#ulb2X=Y}o7M7_7W{U@jyUbFI(o&O> z6HO8=l9LULEthm+n~gC^OieRPF*LU@vj82LlDHJBsw4|@V^d2@3rj;#VzV$`hFz7V zQL?d-ahhRrilIreiP3VnDsY(&Dv7MDGSV!QEfUR*%`K9Ql2elmEmw3hDkEiFP(}m| zSf!v5DW=7^_>!?!drKA{{ z8>A*DS(v3Hfx1=eJ1JlO3Y&Kgz_rlVD8&qPKyIqJrLmE*fzgIe%9m-v>_lFN3NCmO zlQKb5t|>;wsVNqw24;pSMh3~L8#}49%*rsu%+M&w+|1k{$Xkcn!u$fBcrW%SQsZ6ZRupJh2$>uJcnF@lTc`f=9L#E7Wfyr z<`k!5%d4ho2Bu~v=1CT2h87kEX@*4F2Fa!h@aYkZ)3*j85Y@ot%^IVqq?Sv(e?>&h@PNK7>{H8D3dwMa2BOG?=>#Jyu? zV3KBFmSkvVZenO^WVW-D(GC*QkZYb{%Ns#F$c}B$#m^8H_zcDjbHmhR%amlpv^3Kc z&>>m7IvE{_H359zJ7^d;$ucc9%`C~-$iN`U(#SMzcPFEtjVCB>uo(qi;RPDbD9MMp z#|}E`0dlF8RfdUyS#p}WaiT@4kx8OuqRF04#$A}nE-62;C4FGDaKL9;VB|z&0}BIlBg@28lOz*^l+@Jyw6G)D+{`4|!pI^e z$=J}q!uSBCc9dfJ!_?Ts)CgpSfq9Z?Vw%N48rWfOX^?1=Y7ROQ(A?6<(&$hpV5}YKw82agv#FlA(E0 zYLdByamq28*ph5&ZjfYZYLS*`kYtgZmU6t4F`2TcFV3vODCROOQ!SEG%`MH0KnL)c zq$Z!}WGtY_8t9}gd~rz#sE>mhfCee%#s+4l#ukZ&1}Vly<|pZ3r%`f>VNzOhS_yRKVoqq=KgE zA#Gn|HN^#~$?@P7#E>>la6xJ^=#q0#3&10fT?4pES#*|T#n`32_SW;4ynN$i|PX+E_L7K#lFwrp3 zMU}9IFe-t!|ht=tr_cFQiC??H&f34cQEt zk(y$dXq0GT03Pg0O-Z@d$yf-zbOMrI6H^ikN>Yo8t*l_}erM3d-YGVo;0;!gsuiLX zcele1w6UftH9jLV544`eEXmX~)z~oAz%V5hbU@B^dRS_nl#*y}VV-Jcn3`m1YH56f z9+oD9)@&FWq!=Zc8Kk6|8{MRbr70-}CZH3V(@f3Nj4jMlZc*GXGc-svv@|rfurNzW zGqx}=zD==-X30rL$tDH{DTb+uiKdBWcPKW|+|tm*$lN%|G}+KR%{VpnZYQHL>W~O@ z(}v-lM7b`M#KdoCWRYl+ zWSW>{Vv%faW}1AT<`$ZyCK*{+7#Sod86>5dnm(Ypg-Pb7psPL742{gq5>1mH(%M2J zBa@UQBh#eB6r;4XBonhow6@UL+{hAC_Zg%Zrdb%Jm_4Sog(j&WD^pVql2TF(jEpRw z(A>f_6BF~)M6*N#^CT0)6r-oKw$MB|+0r!GB+1+?4LoE0jMf%fm>L>eq#78Q8=592 zCng#_r?rKarba2oCgx_QX(>i2Mg|5iXl-G#rG;^lnV~tT@10_jX#SGs7A7Yprcnwusiy`s5=DWEN#$p)5bNy)~RW)`n$ZDCrHS)!4pfuXTsQfg{aV&WST#!b^Q zbHHnYGfd6QjZ7^~k}Q%_jg8GyE#6XG_a$1Um>3&bBpZMZyfH{Idq=T}Nd}3Dspdw> zNlAuAX~rgo?w8lYKT~8{s)?Dod0LvWg{4uNiJ76n zmrh1E^wxcGW_n&?j+Iqt!!u6Qd(KRPAND8<~;)W{^+ z2sB-9n)I!c(Ff8IfpiKWGjh-Yei#R_0s`C%DanT~u*fh@OHMLOGcYl=FflMSFi!m5 z$>?vRp^4nH!RSBvrB;-{J5Hc`oKsTbL3iAPx=o;?dyI@MO)V0Q(u_@wjf^Y|e^73u zg^8J=iA9R3p?MN`yZcXyBG}l(z`!^;(bT}uFfr9Q+45H>qdjVuu`DyS9MVAyN(C(l zgaum>m$ z#55(*G9@)NHOU|;(daM5CMKtv8kwagB^sEUrdgzz8~^KMbbur%^!Z+hsFf9Dk&SCb z31~47D1B!bTbQSrn5L$hn3^Z08k?v7?_}J-Xp@|inVMGuI=|n_DzTt|gh?d~ouG5W zQ&WOdi;FY!sWoqDnqrn>WNr#-8d;i{SXef6!S2cfFYHHbl1CZWhQvOa3b#Da6;3ve zkntupH#;k<{urxGJHn#+g$6GXY zF^1ZJh95wg8B*+kW~g%u^7B$bBLdF(P$p;}J9yVievyrarVe-*EIB_9z7xjWJS8PD zE!85)$P%>i*`m3NF#tIxK(}&&%`CREDo)Oa+&2kj#AhYu#TVt5qnBf*pi{67Oij&` zlai8*O-x!S^17jcQHqhFMRHP#p`nF|nMo@}rkSOtS(;j=7+8W1pHDV2YNNI=NlQ%uO+Zz#Q$||Tl7+hJ| zgy;l=M~~1I!$y!m+rr`X7-+L~QDr=6*;hQY*hx)6k3^$1GfP9Wq$CT&RFgELB!kX@ zbc~5{YMP~`X-cYrg`t6kWn$MrI>y|b@faONe* z?v>Q|{Jfk>^qgUsY?x+flwz1RX_laUdIrWu6RBiwnz6ZMnuVdck-4Q&O0rSXq%KA?^vO=wywY69 zteJ*_h)cwAzRq}$LeG07;&(jqCz+{_}`+;9eIx-E>;Qd3e5 z3@pqIEe$OaXOg7b$im3XEG;?N%*Z4yIW@&{7HPT@%?&~OkW-RO%ni&;4QG?2+t}R5 zEIAppB+=5)z|_KM4oSLA5-p4^6O)omK|3`p%o694q}$Rm)gm#`GR4rsz|cI&*mNFA zx|328Qw_}%Qw_~P6S*m7^GVX3Y-DDfm~57smSkpPYLRTXfF#{%$%!WBsYa=Z2B4!? zEK(MBF&3bgAkeFb!S@NrXO^VqT3I=Q?v(Z{NzDbfBfw|OLHZ$}Wr^U+fvT&as~&4> zF^a>aG~?vdlqAp&Rf`l0i$(OX6MSQ4qOnnOT8fEbs@Y;X*lC<-lAL5|Y+_)Zl5A+4 zYP^IVb|xFAB&V2Im?at+C0Zn!FQto}W`-t7$rk2jhGquF#+J+IV5f<>0r;E`GYb<_ zv*e`2<@B&KIoTl9z`(@Z#Kh1tF)d{U9qcqUF-%If1dogvrKOn}t)zpUW=W=LDTd~T zCPo&ihN)>LtLS29idl+5N}{QSfw`fDk?CqW*lBK%VrU8)xlS=jHcm4(Uqc5wEzHc! z5>1nnK*vI)nOUZ-rH7p<7O9rzrl}T528PLr7AfoKVP~p=agteTk|pTKge0@1^>nb) zGC4IZF*VsD+0-!2GS$Lz10C!Ht=vd7Fa%AuBpaqArER2#ohC+xiK%Hx25Dxg#)c*- zo9JO@im|0JXapoF%^=Yr*?cn{>`XE>NKQ3LOEOALv9L@{GuT28J3%L?CK@Lh7$jOG zSsGewrHh^B2FAu_iDs7OmKGK%$=m2)XL4eiC1?YUL86hVMY3tqb~@OZ0y?BNDaAZ7 z)yyK%%-DPfJ?uEG%z;YLkBz43@s8d)6`_6RAXZc zP}Q{`zw$JrRMQl5^OWRdBXjd4GvfnYjJ}Ye_4rIfi##i<+{EOf{P>L2oC5IjJ)g{y z@S?|nZ*S;iIwq5rI|S?AeU#PB_*3#S|*w%8X6_0Sfr&M>|%5z!9d7K z--)JamMJNTN#>4Ypj6^fgp|U2ahAE({R4fb*cQLw>Y7E#@ zMizz^CMl^Y2C2zrsmbPsN4gl@NiYb!`4Tb(mjR9x(9U=>W7AXvLyMynjh-8sn46@e zCYxBMSeho8Cm9{1$TVXEV?*;)lQhe;R1@`j z(@c}iEmM+AlamvT49$`(EKhb(yiF|C)X3b#z`{5wH7zO4%<@zhqYY%%6uOSOxCAou z6OtbcW`U*3*`RbCkdc^IlAr66SdwU?p=k$FfMk-Urk#})*mlG^$3zPw6N5xElT=gF zWP_AMqq8LXIn~6}C@Cq~I4RK}G0h?^Z4O$d;F^|} znp_fGl2`(|A`3L_3rWDx0#leE;7q$sG_*9Z zxIaYwk!EUPoR(yiVvuT-YL;SZ_@ImN2wn0=SY~QDxaoktTb;}ZF*7o;Ff&OrNi+f7 zxNT(eaHx7DG1bDtA|)lo613tX$J%5U1B9TwJ4;tD36+DmswJ>Ns?(&ifNLi zxv^22+0!BHm!xEiRErc#ih7nf|1n4Ds4X_97YVQy+}Y4Wm*u?WW=#k8Enk`hp#&Mhag z1hQ8#l+@jdpcO$@RvD&=CT13?76zu~CME_(<|ePY7|UsBYjGxGgRrr2nz^N!c^YU@ zOR8B?@@x88ZElp7XqakgYHnzjWSW*_@P>X?CmER;7^N7PC8n4rCa0K~zU^Xkg(OZw zTTHF2Ae)Qg!CO=_(h|*+4b6;Fj6ib$hUOOUx=1}A%Frau!Z^jq(!|`%BGDkl_&v!c z7#SOauChx>GP5*JN=h{NK(YzOiRPw>W}rERltdF_i?oj+2Tn3KOifElGBNo~vI$9`1wR%^sip>rpu>DjzL0D}N>Xx~xq)d~a&n?E zXm=RAU1(15*QwA6;Y|IcA)eXp)qem}X|4Y;0y}X7ZC9Ly}D_Et8Fn&CSh| zjm!;A41SSd2qd3@&J!^;GBr%GFikZFT^*HX{F@v@5>3)fOhA`mBwCuA8l^u8-k9HHcv@0Fg7(ePW;!!=nENaM_;N}0=^r~$|^jw zBm*?!UQ`KQmWQzd&&0$i$;jB$B+cBw#5^_SKcxnmr==Mh7$zB*85<;;8k(CobW`ZU z#AL&?B#RV7Lj#lKq+}zDMoJA#N&-#M86{bQ4-8Eb&j zW=aiAGfK8dHa1K%HAyu!G_go*>1IqI9Lwl?G{D;haqiJDGe|SAFgGx;NH#N1G`37? z?Iv~swqc^Bg|WGLnh9t*v`Ml>8__zA%ngz)&C(1_QoiU^PO?k{wLDA`jgw6*yNK3l0=iMeFfGX- z*}}{?%{Zx>c%7z}$>ymkpj~FhNyeszJw)pS-6@)y1X^`%X^>`WoYG6QPV-b#W3x09 zbHij4V>6S~}{(9*(k0?|5C zj1mo!EliD5Ez%NAjZ!Tqb~9R_FR1rTEI?UM4?C^Lz#_%M$RNqo+}OxCInm5=5(#<@ zQ_?KWQw_{gO)X8*Oi~Oclc3kg1awyfsK;QCl4NR`IE4hgCgw?INu~y-MkyAcQ7yfq}6>qM5l-YFd(^!7NhrrdSx7Sem68 zCZ!r#SehHnCP^=77i)5oQA%Q3T8g>R98&bAB^sM28z-74S{S98n48WeL9b=9C1|g) znHlI{$}}UBd8Ft~Nlr;gF|!068f#!|WIUe)y@|$YDal4DNe0H|X~~J^sS8NaYX-WC z%Pi5<(9*=*z|>$NDSFK<3{pYMf{l{RL02m+B1LbKnVE%!ak807q6z3Cj>V+tO-(T| zHAn*O|4#z#H(x@6-XxP`(=-!vi{!LKOAGU4qot(iHMdAIGfyh_RKwK7q~)aOO))SqOEohwF*Qs~GE6aFL4w{?(A0;eSz@9A=#rqs)Rm;@ zH8M0dv`92HF-tN|GfzofMT%aNR1*s$L$lNrgJh$Wl%&-p=uIgVl+;usGb77n(2=ccNzrRzWM~dr|7~uTVrXHMvW^tJ$*G1GMkdB72B14M zOf1%8sX@`}!R*vZE2|7cGsC2m6tg5VGs9%#v_yjqMC&w8HA@1WLu3l-shKAlZX{Y~ zl8F)M=tc_zqtryuxip)I)|qSozFy8aG0iYJF)7VrGtoLhm#(FN?rly=HcLw}NZdla z&NQRML}So0k7Uc#6f=XZMC(jVH8V;wG)+xRF;7cLG*8<`w9YhBi?TRKkx62jiAAEBg|U%|MVgtx9@2E1S|p_= znx$GKrI;F+8=LJVO?R?^u^DKL;3jFJ))Q__sgk_^%glBCOZr(7mUcao8@ zS*n4Fv6*FBQj)oaBlBr3WQEG~LibYbg(KV8E zCtD<%8KovB8kn0{8d)ZpUMEd=qEV8mQIcV@Nt#8HacbHP(sZX9B&M30nk1Sfni;2A zB;O=WcUoGKrEy|vnsE~7eg?B!BWSvZ;xoNn$eSFsFOnjA=HIVWh0$ z{5;S-1K_*Cyi+S}g21QaKqMj4ETGE^kgnG#LS2OspP7=HSCW~Q30|*jU}$QVXpm-Z zW^9mRY-nk5pJp~0niyClCYu==ry5z98=0j%pqWiZiJ%JxQ(m*?s%^uRsCS%Z! zw6vt8BqPv;b_V8;Xl9d{scDJ{s83`DnrSdfd`vr=%+1UUEQ~Bo(~>OAP0THy(9EVp zb4&9i6JtXY3loE6i)6#6G_xtq%rZ48%_z+v*(^25C^hLB4Q)!YG)qoRv#?AxPfANp ze%{TPX`_}~TA~2Sp@{5@oI}aT#1^1yAQMf^6AdgZQjF4!%nU4(UeMCA;;X~9)Iwi@-EYSiq0%Bxtl4$yo9+n!L8kw3In41|T8kr`U8(My% zhozv)5-m+F%*~Qa63vs$lRwkLQgdSy)0E`YBnwkxGs8s7q%ZWaG!b-&n}M;hfvKUP zMXH(cS9(~Ql45R>W{_rKWNK(?oRpmUt((yVvcnbSh)wv(nDNl!rW8*~70qF)Nzq%Q1peGH3);`9UlosTqT3LY(7Y+e2?LcQtRg}QQGt7+>LHoZA z(=08`ER9V~es?n_LRUs&+n^ajs5Kv)nwo;zpa(550u4N+CYu?VCmE+Drx^U9g(ZeY zX6D8Qrl~1rX~`xQrWSu`Vu?9uJC~)2ajLnoVOpZWKblyQlxUV}Zkl9ZXargzX7ryH zmKYf&CMB90rx;kICM6nKBscWXAmWY8lZ`?1cP6HZM#gDLCXF<)#4_2^DB0A&z|z9f z!o<+1i58X^o0=w>B!O<_Gcqq21e!w;UWP?;=6NBU=^R(2I#CDokVrG$K zo?>ilWMG(RVvwBLK@&?XlTuU7%#2c#jgu@ajSV_!Vo8!|vJvPYJ)`6li^SyAE}B@9 zVq|ERY++%ZXlkBnVVTrT6H8K!42;Z;KzF4XTNFER9nwEcpEG^L-bPZ*ynNhOkMA}%AY+;xLx=-5F(A+Z7auQ7}NwYLDHBPcjGc_EwU-tq#>PgVg%v3?XkiKHkfvl) zlQc`SL=!{PRO6X6vBVH%u|!h%`KA*Op}Zj(8iKvQ$urOb3+4D zLsK(@#Dz4m#4IH>1$4)UMUtUmin-Aunpk3)l4fLTWSX3q2HKO5vX~~8Bqt}DCxHsC zBv7bXE}@AfsYyv`i58}bMxbT&DTYgFVM&sSQL34xDQNE4+&snDav4o50i955V3eAY zoRnykYGS#ZCYB_oS|%qYrlf*yr!h%RUO^K}K-cM5m>DOTf{rLOG+jvxOOj0tEDbHv zl8nra4a_YJ4OY>_lGG%#)U*@>%OqoqGy@BR)wHlA#mwBy$Rsh*#KgcDR5h-li6!PH zhNd8!(u@twEDaLZ(!>(WGz*iIq(lRw)Wo!;REu>qu_VbP)i5>5B*`+#BsIxAWj#$S zNli32H8iqJHcGQhHnB|FKnqJ!4H8Yv%q>k*jg6AclM>T5(!>%YgXFYi(-aGf6bn;R zBePAkvBc6e$<*91&B8Fv*d!@+GfgZpF-bMGOfoV~N;5GrGPl@56H81j&C@_f0;eUL znx~p1ZKa7NW+`T7;Dhaw42;tfEw|Cc5({I{5&fwasTQCS7Srvtuq4gM$i%=R)xy%q zEX~}|$an`$EJ;dAGfXrzNdb+lrKVZ#>|sns-+~LhEh9NUuOt<8`JD~uVmJjHs{G6I zQb7xeAa_4Pb!3|MyRl}0^Q03(F&hg zN=!0MG)gp0HZ?Y|Og6VL+1JD90da1A0q6?H(!Au7OweL6$aQ{5clcFTmz5+Y<)rEr zXJqDru06>B9r9;xYHpF5W|ER>mSnJ>0<#RwO%e@KOpFpu4UH^J4a^QuV3u*Bu_35s zXJ(#cmS~u4e2@aO%o5E(OUlhtQj-&t4ARUGQDBy38fc%psU`T1C(A_R!xWg6WCA*< z$ZNSUa8DUQ#{EG|g}AH0ewhT=H*39OJ?alyK+tUwnZrRv~tj#E*7 zVoGviafx$AVqRWqj+GU<2riwjInWEjpbQMhC&7%4PllNdazBPJ_TWQ1w;6hBvrck; zN@}W=6>Mn`YM49cr=%v^peX@gatl6$9dgz)=$Kj9DbQdIc6KP|QK0fLd<72F(I`o` zvKpu;L5m;_(9zaN*L#7YGb1S}In}@tbeyM&VUk&L;)x!{eWS$(DEpzNUm}W++|=UY z#Prbu1b%S(U?@OFBc&)mH=gWLotPrTz%a?oAjKp#G0ogGEhRDWBrTdbX-TG_Q=W{> zEK?WmTM<4{1Wj$AixO&CE*=NCbBo&|6=oCaH#o zspe*uhL&lTCaI=p2FfAk=Ah#Uj7*Y@lTuO*l1JM zFt*YpYM^lxpOu&wUzA^t+Ox5PY)mmVw=gkGwn#KcOSQB(-^18OO_!vDu3;%oE=mO* zIU67Eo|u~&4CSFG69Xe-3nN2|6l2RIQ`59mqYDG)6w^ct3xlMzq@*-6bI_2(#es8* zd9rz8l7)$3ih+r7l3}9Rr5?r(YDQ2_etKqJJR*jCKzy80WNBucXl$HhZfR(eoR(yG zc_1BQl$4g5WMYtHkZ5L{lxkvpWgs16YME@Bm~3icVrXt;nQUTubwC{hx=+Tyz}(Wp z&@{<3$>7>RI>s{1Br(y<$Q0D51)cD7eIOl^VrpWNmXv5@3|e$n4ARUvIYGP@S zXl!VbXl!VlXqbGnhjBVtSv$Wd)yfKW>(m2I5+1Sh+bpF9D zT6A|TlatL7(+rZ$4U&y5lhRCX)4~$76tgr_)1=fC%Op$C@v3)dVM(gFv5~oDl98o( zvYENDndx0xSYnZ8n4D~uVr*h&X=#y?YH*JhmKd2N84FTr`_*ioJdxp z%*jm6D~T^pO+wmbMr5lIOEV?ez#=W##L(OvzSE8-eYn4x8ol4fddX<(FU1X?L$VDe~?xXaYk)Yu};G}YY9IL+M5()jTp zaaVGRkpbvRZp$P?Qwz(~%IQ*(pFRCA-m=vT`g+4k`}@3u2$DBYSEQ8rnvtpfj=(lamb%&C=4$EMN67o}ju%QWH}k zUP(<%p{Zw*Qj$TdJCjpVjMGvq5?}W)o}#vA%8S4&QXGqt!$B-sdIxk5UZSOev1wAW zMUtUG>YEMuTTulbT`*5fv@ozVvoNzT zO*S+%O8GV#!JwK1qY(zFU@(LSTiXmv4oNt@mS%~j<|gKe$>s(Yi6%crV;Oum=J3kPX2!QWg1%KL5E;c(YG-W-lKq0K%%$< zvLB@&v9uVp*~`ibm5=Hk4NYvjOdu{FSYLn=`~bNFbqORY4?0tTnG{f!ftw^IX2xj- zDaOWWrm3bz7G@T|XffZDlmfaE+SoV^ba<0xqSpV^gEV|2>Q*kbuzt|S+hW)i^N@4G5t2yfgoE#z$39F3x)K1s zyA*T*eQIK2Vxpy?fpLmul7)F{BYmt*O-xC$G%-s_HchiINHb1pqK~y{$*JZk28qeZ zMn+~SiIz#ty^I;qhAiYd^u(0Jf|ArC(4ISRE$UWUoND6<-gXNKX^1k|t;8T+Vo83H zm6c~nY7vM9J=PTzvPMZsY386aE{qe6O-zkjdKukH5|cAP8~Tb;^HNfaKq(+7H8;O3 z6}*ejBQY-}C$-2X1hj8BuOvS{GY`CFFT=pX!qg(s!ZO*&B-z-^%&@hWu@pV_NlF?J zub>r4A)q2CB^5bwn3*S98W<&+nHriHfHp0+(aU0UOCuAL#MIOzBSTYzM04YIdRd&5 zoM;F-)gj5i)WRs)*rKDCF$r>IF)ZpJ8zU1-N{TX*N=s6$tf05DdghhnJHkZ65_3vZ zVbKUz8xK{QVQFq|k!ER}W@?#eYGjgP*xAcyiqm|^ZFfbfX;xMlNh!(ZDQ2mr#s+DL zmS$$DUA>HE_%)VfmVk~O&M-4KwM;QKOa|SRnU-W>+1<<7%LvnoKJE(H!48v!obBwJ zUz%3}Y9D|L7jzw|X=$m+C7>B9P{NLfaf86=+!ZWo;|oe)rFpp^gFt5y8yK1=nHU*a znps+yB&DSE47iI7L6=0Pq?#w18yFZSCmHk(xQmP|jEyZ4O_R(_O)XMVlFa)Cfr~6n zQY}&vQ%np%Ycovx2i`>~#^#C1W|jt^+r|x25+@9}i%bknOpMLUj8Y7Z6D<;xjV2Db zi_$ET%#%&hk}XUOEX>o)lP2{t_AuI@XJXitYY}+56?AX_WUARFL?;+r1)^(!Rf8a< z=-0M`42j2iZM&(FiG``LNn%o3Vyb~jV(R39c2HuXMXCYl@Zz*IW3!axlqm!5pp+yN zQmAT`Ydbc2C`iAkbqlEw61MlTz+;*uhT#9{^LlpUmRo12(ilpmjw zno|I7gZY5lS2?hXv>0@3Lq=knL1Kz=Vxp;up;@AZsp*Vf#xO_~jh;Nw7cW59EkN#6 zw*j|zGC}RElEiF~^D|OXk_?j)lMPJ`%oEehQ%z>}GA7zk`+yCDL^Cr}(t81$@6*{^Kf+wauQ2QK&izI!XUGAkY?lME6~jV+BAQeakcnvtQYrD5(sdz!^$D%U{2=Z^>r&xZ)(GzH(e(hAoW#8J(!}&s&@n3MsVIYgpkcG} z%)AuPPQTFN)Nn8pI>LeG9g_TrcD9Qh=Fn$OesW?C=ujJw6QCTF!A6u3OVr^q3@@NA zfPjodqKcsyjs2XPVHZqjfrj;E3#R25UgekwI%ijEzh|gEdL1W~Sz#l5kls<1uo4fTKl|Sd<(OT9TQX0vl3rEJ_Bo zZcdt$ar}#<2!QJc0t>D;88VDhDXhuqZzii zv?#T<7M%VKj15eTjFOE~4K0(5O;e3lj0SmX9_XwyNS#9EsstS5X_jdgW=0mKDM_F` zu%?MCdl@sKxd_w;v9cm^U>KV+&)k9>8&8lmpo_q)tTGJEQ_PYLl9COK!L7gKRlSU* z7=;Xa=LLD?HK^Z&qi6sX3*eR7pyD7gJr&Z;0WG8i?c7haOg2a~O*KkQPEIjOOHN`nwlr3S*96VB(JA~ohBCM$tH=Gh8Cu2iAJfG#vABhrzt4m zm|B{e7^E3nSXd@+>}5=Vba>EH5^PW@JhLPNeNd@9vm^ueppsFlnX!pQifN*mv4v@( zN!q4fMl*;Vkd^?_Zmp7hn@~`W1oi(x2eTSmm?T>or-3SM%jBe#&Ap86jL?=sS!yz9 zECX^*WPEadP7Zja8!|?YtfsgiH8~zUqX#K6f(ufULF>{$Q$sc(I-Yjmk#l4nVX4WG z{E4J1!^G4Sbhav}h%mA+N=)3+%V-6g*DgpbDo(Ys0#mT*A(Tv%VQOG(W|?T7W|@|p znrdumwzZeB3R;kXhffMX-B-})jB`d}Q9w~@N@j9mNosIvVo`ENY7z8=Sx9i9st-yn zOD!sftAx&T#TTV!r6!leCnbVT9L=yyO-eO3wM;cgF-bBqH%!`w=t!fQMyl;F2clXF znnf@)Ff}tbu}n%eH%v}8G~M3IIE@kN;iA;y(wq`2s~|9K6QTn-KNsRV@Y%N|MV0a3 z^k!uRim9N~;>?uN#2oDUA^MOK5p2t!jw^U83^)>tphj3(WtdtRm?fK9rWlzggRV@m z+|kQe4lx597GQhfv$;@-oXlkK2wF;Ng_Tt>i07G?l3HO?Tv7x{J`i7T4IXn!Cppto9K{OL>?#x^Xl0d= zXl`I(VVRnklwxcKx=ipe#hK73#nKd%0zk){Ct9YZ9qFaXY3<2omS$-d28l){W=V;u z28Ks_851Gp21x?~CD6qV8I>tTiJ$|Gt*o3&i;DA$KoxIBvZ=92s+nn;nR$x2d8%pZ zv0lbTa=OSkMi@Lwa&tmJbKlUjg{`d6MZm5w1l`zSk&}K|m}qvgmr*Y# zKi$g8H?<@&C9x#YsWdYu1+=at3B&-e7%(@tNK7;^PBSt$Ofg72)yt>@))ADNoL`iJ zp*|IK{Zew0v4w@9p;3~B$!Urcts&^7Z&M2k1JF2AqKU;B%1um6F-bBtO|mezFiSQt zG&@VNiAE`=2FYn@rUt2&DHcYCiRXG5x4~Kw;JOxc`9V>BPJCJpXq?nJKd+=HKgTU6 zzud-2#~C~~3dtZ~#rRtlU?up>gP4S+oq@HLVPW(J8V=0?V*=4MH^DK7s~lg$lH%*_nUjT6(743iV@ zP;6qFsaXMz4JjvA9z$hs(#R7D~pV?zt zTWD!uW&j!{F-$TsPfjv3e?oH$jgvsflA4(qS(qB9Sfo6qwS|dhX{l*OiK!+Q1{MY> zhN;hJZDDF!vU!@hv5{q3vZZCBx#{y>Mkivc8u;i(hFNM#5@@$?npu*OfssY>i(W=& zVogcQFN#l1OwIsRS*B)&CZ;LI$;K(>#wjU@FDWieLG!X^CZL@KDJEvg#wM>QHZjTA zGReZiFvT({*~B=>Jn=P&{hl<_WJ@zMQ=^m=6H5z2WAiryIACgQo|s~knwFAeY+zz$ zW|Z`H0NrA0X=svao??=0k(z97VQlfPm(d_SwWKI9FC{q`7BrHP2^uDjha@Ni)70eTB-6AcW8)-?G;@P*y^N7IX{F#Rq!2eL z<>#dqXXJy2$CFbt%fK5?5cYwc1G*v${emzH-?9N2R70Jt0FCsenHw9X8m5?-TUe(2=w)=mV^(@< zNqniH8OBhbiAl0ivZax^F{mUkOZ-WMDWH4$P~Bpll4zP@k(gwjVqj)!X=(hcmr)z- zRzC0oycFL&v3aVc8K_s12Fk#{NlXc;$p&U7=7xzDW@*Nji5A9xXr6X0lTr*# zQw+?^EG#UO(kznx_A+`yX2;O7K~6qsErOL5Xf^z;0jF7=! z2$`8zT#^Wyb?}5SGLn-mO-(H=Ese~R(=3uw44V3e%pg*VMWT_BWpY|-l7UIGsabM! zA7h>kTC&K`D@!dZv9bb}L==~#W}rhc(~Q#6Qj83eEe%py`WU^DmRjc)vEKLn8EmBQQ(+td7`v?t;CR>`P zCRwB31Lxa?`H1p)7 z#2(6wGcrs|G%>VHGc`5@1*2teAEi^E76!)V#ui2CT7Dg5+eSNfF24e|YV{dF= zWNw~nkZNRT(%(mDr(j8C0cabtaguqmv9Y1CfdMFSo1{(XW9-1QST`0|V`=lD1 znwzH>nVThA8d(~pB~9!jZMD0Rfr&}7sfn3+vZ0YdYI5Qvnio$NNofWa$wmfAiAiax zDP|^<`xvbuwHtWu9@?w~Z4(CFB34?GW`WWaHZTD#Ts2KgGqp$pHN&R#F~&hhzrYPE z3fp<0$;A{yizEv(%fytl6iZ73%c&G6?-UD@1OG_Xv4p5N~ZP+H7m>VRUfwr|ICR-#Yo6n%w(-ui-h8E`LNogj@ zNonQ=Ni#`InQ4XwX(>i#iK!{Z2FZyQiL?5MU2@YJiOioHnO*1r1 zOf#@BN}PvO3L>`BgL~L6p!8G(-c)a8m62*{VVsthl4z2WoMxD2l03hUu^cunjiwQ@ zo(m?4ZO=2P35ex7-VkuZ1Vq|dSs`t2wlFYAH3ZE!Bqo`s8X7JjHGWMkk_?Ou4a|~~ z3{p)^Oc&C;%u7p4HUQn5ZfX%ztrGeLVXP8+SrC6AQMsJM` zEDci)7E_!-&C*iLQj-l#l9MgX6D?Ddm-I1OLL3DyNYij%UJjaxGcq$UwE&F}7^WIn znx!u7W86g68UvK38tCZE(xOx=tKj7Pg47gP_b8<@PXUL^KxLUmIf^0B_MVQWowh%C z;!wd>K|>Qf!<%7{lx$&PVxDT4mS~uiY+<^LvX)SClDVmwv1L+nvU#$Zsj2aD%8WAs z?fEk_Gq(h-YBMxVUePyzYb6scEx=c(B$}lrrJ5V9?4#Xz9%km2NoJ|3X2}LA<`x#_ zmaF<0YhlF&waOCb{M=mdQg*!bO zrKK5LrdlMXrJ5#MBqybrt*4*W#wkguDJhBO$w|gZCP|jY8~PZX(U(o97bO;CSXmXP zmK0lA1(zljCl_TVr4|K)E{TT@zZiiwi&`X^rzD$Onk5<}ZR}&T$8Su2X;E@2vJsY` z6KzaQlTFji(u@pEQaAMx9`#8zFir#Y6;n-(OpMG7Q#O-W6DAp%nwuq>8dz8wn1dQ= zTPUtn%*~RMlFdQYon>ljqG|HhK1K`lfPn75@Gl3S!IPYmnwVEwU}cq&W@wybVg_1K zV3A^yW@)yqkI@gm-n>-QOBB(^FOv)t4L~bk42%tpl2cO>xA!py;Wsh4w5SMNOrQ*5 zqHr?IjZ)3bQS-;2pcr;|RS|E1|u<Lc#Fxa33=W6*vji$qiNL<0|UlZPdaG3}_R%*vcv%G-p+o4?6P>wR|!(H#Ij*N=Y$KN-|G2 zGfq89k!gvkW(KAyDMp|fd?SNI(_<8wmSkj}VxDMenQUm7Vq|J;d7LuSk}OP8Koz%n zVyZ!^nehpl$COE;MQU17N}^e^k%g(5vGGabhMQB(4AWARQbG4^rJ0*qn4Th~uVrR# zo}84LmXd5?Y>=FinsU02F)XV%9@1fk%spCJL5@Hy&df{CNrjaoA>d;X!7JyB63gSu zAtxh(n2?;9VU}uWY-*91YMhp2WNMLOex{Gn2$H=Z#({KLSp_AQLl0F1*S8soDQT%D z#wJEaiAI)&CgzrB`xs3jy3#F~ybM1hF*!NOC^6aC*fKHA*wQlT zDkw@Q+8||Wk(``pY+#UH8IV=(liyc*7iDR7!F5)OxdJe zR(@t4Xf!P?#mF?x($dh(BsnqJGU-Miqa~_+&`}NWHky>wq|$W6CSp@VGmGS8(6B*b zqNSOI@lA?D95e)MVquwTVq$7&XnQWP2U}t9nFGEmES(-g0vN@Mz47zmK#N5)z)X>n}*z8ds zV==Kw3^bR5Bb_-_mZaiKYpLMPi-u{57N&+4$p!|G`xs|4+CVBaNSY)0+~HC~Gf;FR zA0!)4l$o1Zl3A7-mRX!xk`HbmquT+Mva_-(11W+m^vOsy0v$?hVq|7+XqjYgZv3Q= zQ4cyP1zv{(-a)P72(~Z<+&?!?GfFiA4by>+bVy7wdrDA8nuTd{szp+&saYcE#747c zeXzx&xu9bVauf4P6LWGZ;~^>77s>@CYw&CsL^#7BImIH?&;)cTkU^S7isf^%OfgJO z2CdaiF*P+$PP9xjd_kTmDT#*3mZk=&W{JtEsYyvM$uh+##oRpE!qmhd(JaZrEG_jF zS*949rKBXLr6d^{fm(n_7}TS%FiuM{H26cFDVC`wX=Vl~W+oPi#ula)f5|f?$=4K|z zDJG_dMvdf|Vqs~SnrNPyoM>i{W@eb$M3yP3mWD~mDQStx=1IxMNro29JM{ z@h~+5&8wxfkY!4miAh?jVPa~UWnyBoMT&VVd8U||Sb%PbPc$~OG&eIdZ0l#tg0$Vh z9UR0IIcQln+JPfzD%|q?^O93-93f|osO6THD7e{KStTdtCtQq!rvs0(JahC)Q*b8W<<0g2#c4lM_=6 z(>lm8!`#x+!Z^h&(KyN2Jju+UlN>Wr(m*w^g^8i5xn*LCaTgh87$ut;nVY7hm{_El zm?WE6c9Ua9nyHCNibZmwNs38Qa&lr18D@am??x6T1_p-4iK)rvsl8;FVP;}rV4R$0 zoMd8@lxk?4)<=dJ7KWCV7HLLFCaI?8Daocr{p6ToY+#sXYH65cXlMx9)jok7Gfd1t z({!fhW@d?IsmA6L$uh$t#WKmjJO#8&IK|L(5*cPBnV4Ienwl6T8d@eLC0nLWCc}(m z^E3+!OG~p=%u|ev5>w3$Q)l-xW?&o| z2pYdi%(1d6B4s_VUw%nu8t52!JK}^21fL`W0+mV z@U;ezqqN{P47vvB3WdCU(2zn49t=Y5>pq_(8FfQpu>2RO;b{nO^u8U zEEf%ghe4;$0WU(zdMlV8PCr?Ax8xnKP5^5!4WMm0ir=DT}>Om!17_S&y&a*Hv zO*S^QFgHpx0o}`NymD|kFVVs@%@TAMn^~$Q=+eAZgUfkIW`>65=4lq7{d7smNy)1R zm-A8#jVuzA5)CX;jS~$_EzH&oGUu5ZCmEQUC#I%=w$_^&tQ}m=OHDR401Y}D86}$= zS{Np;>t}R-!lUZ8S7N%NRgA$5P^xKnKTxRwnrufX?ho%&`IQ`vv#kVfWW1rCJ&% zniw0Kq^25L7^fO+=w~#6obL|Wvk7hIA~EA3Wm|@&k#Vv~nt_Q$vW11QNutHZentc6 zY)%nq_hd5o5dDCXA}g!nlA?UjVUHPxmX?WzW+~?8NvW0=7M7-)`Wa2oi$&;K&HTK0 z#5zqgBQwi1qa@JHE-7g##wMGI)Msg&Vql(XVPa-rWRYT+l(dCNeaR`NCdMhLNoHxO z=Ef;WXB#^fOMRlIxukle1IvQb6nH6Z2B=J08td#)e60rp5-Asm4YY z=9XqAJNp^4A>(LRj=jVYq{M~-Xwj^(MQWmDYD$WMQJPtjf#t4##*OTx+6T*ZknEWW zT4@Z567=g$AP46|&cJkqaBwL}g-91$S-E7E>1e=OCy;9|lXDV_i><7jK@|7~FFPGn z1>jp9tgQU=(2XwxuUF2^FD*_@1>FyZl3uX(jiH_7_^iadc<|Cuq^69Wrj7=h)1dAq z(T~9eiFrhLQd36*Ic7;LCfni43Z7aQb5?y#K_3h%wkVJ zV!H)s^D)xyH^?YG=&S)#GfOjrRM0UkDM@K2W_yXylVY4^ZfKC2Vs2q(Zk%Fjv9F(k z>%@%GQcO&YQccW_63tQ#EcW-4uwyUP+%(xZHN`S9%_KD`#nSu$B@QvQG_y=iOHDBX zuUa-eNQqgg2BsD!X{m{+rWR>tX$FTVFw4-)#5m2w$SgTI&CDp-#PTo&W*LKe*hYrN zMrkJIriqD$M<_7M)W|$BIV~BqbT~Q1G}-7V1!kG0nHZZUCYvNBTN)cDnkF8jz^o+D zQqPnWi$qHk1IyIJl;aebm26;;Xl{|3W|CrInrLd7c7hVKEKDs7Q`1aRjf^Z)jLi~H zQe;-5v58r7YD%hsX_`f9@+nHpva~QaGqf9Rq?wt3%5kKY3(6Qj>h)|GybM#*M5822V+#}WOc6?Z4zxxa+@=GM#3$!urskEzm!~Enb>Tpr%>2Zn z6wv&R6NG`wSLj|WN(J{R(SqR5o^x_hD(ITe_;?=>KN!kI^0OUiCjfSzB_^AtnwY00S|%AAnV1JvMtWL6O#zTW2gnulcw-#e)3CCFGO%|! zpgXtFJ(7`XV3}lTYLb|mVv=NOVr+P6utauBYEphFc+m!oHAsrJR6_$}lO%J?v{Yk* zB+E3z%VcGI)X0XEXNe^xMVU#ZphfD?u_{NH2>4zzyvcwH8Q;j*+%PpQE!omM%_!M8 z(ew&Y$r$2x0$u0ioXq5GoV{ie+@4qhssk{RagvFtsi6tzFnmKpBU5wBtNn~S2j8@`B$wz%a!mIVsUJ(J&=3#nj{mQEo?X7NM3OL{}E+iMgrq#n9$Jd^~6j z5qskRd(*(u%seg8$lM~uIN2;I+1TJ_KO>$aX+Sx(ve?RssBDJ6gn-s+nNMw)p_vV}oPnjvUQpqWw91H5x)u%eerkw$C+w8PcSFi%Z1F-kHtH#e~`Ffuew ze%Q~r6?eQ*+4azrMyT?@Ug(+_8m1bWn;Ds;8JioMq?kS;Wk5K|+#EDIU~FKXl4@p> zZ21_kx1q^(z(;vNGXU}9=w@NC$0Gc660lakX6%uUVB zEKJPPjGp&1t|6SXXkU`yEWA?9EG!Z&%q&uj(?I7fB)%9nQDJ6jl4xvfmY8a0k(Op| zp7OGv@foF20m(fSjb(re?9})I$g1-A_<)?m%G4rIyFZn{N^?A;n&w7^Nfwrd29`#k z<($bWulgC!5%wy?GZYPOkWru!S-P1Sq#CA~CMKB~7@HZVrWn2+l4W#KvZ-lmvTC}ME;DlN>+Es`wLQcaC4(+pEBlHU%U%Ec@-$=m>ZR(1;Lwj7gp z{fysOajxE>&SDj((vp&VVwS7GT7LtR_dtttaLpl+k(EKKKp+8&HV+4B>_JalfsEf! zZSB(#32M}04$mqjGQu6jZ1DOQ&?*?v0uvJxGsBdWL^Ct9MDtYRAa&8RxU_j_X8}MpG&{9N=QVX3@3(z7P(9R!=RAZyW#1vC=3zIYp^VARhjL{Ht zuvnmh<5+I!GB+zLC__iBxTHuE)G$v>HZx63F)&I_O|~>KGfDi|&sc!d_%z7TWr%B& zatlBgeT3$L=2lWtQ=s?CAg6cmE;zr`66hL4&;)RXWm<}Xg@I9Oim9bZnq^Yjr+&s< zoOU7`hP>2_geGxDVrr6wVWL^0sijF$YKmdX=YH7n@L0kS;u7!~QC3#P`QTe#G7^hY zQ>?6ta}#rNAVSXh1(lE!6LI&>LE&p|lw@k02)drsJlQnS-0(|3V=2T2ELMZpFhj54 z%goOMjdg+#R0N+i3OY{FH?aV8Y?BUb>1lj%Nj~WC?E-L<#>xuPv;haQMWR8fNoq3q z{3P>4Gt002jP1DVLD1QZNk#ePdC*&TiMLD#>}ZgFD=XN|Zb9H1-oWc-!EQ-5O-o9( zu(U8qN={2lOiTOL&sc~*5K#9|7nSGaCuf6h4oRBgWvPKVd$Z$y!SRU+O zW6*{d!?ZNZG*bgJOQWP8{fyu?DEPKJ$mvhT0AVGvBtwFUzY;i0~ zwgJZ@gbUlZjvDUR7l43+8nU$P>t`&%8CI}- z0ckuT^}>=%i%USaOE`mR(8Mx$3A7F@S%KHAT3JEXu7cwz*}}j)IW5^NH7PA6$uiOC ze?Q}D+yxTEMTtd4iIrAXkSiBJB<$3Lfc%`w-29?~jLc-ulGGv_XqA`?IispFDK)+{ z4|Im5m6dN|Wm0M=m}8>`3wT($2_1-Z24CA)r7BV!9wv*gAJcycc+UeN6& zrM$|_OGgx0rbZ^FX{Hv&28l+A1_l-eO~ly_I>QgNKPCu#$%rdxVY>%-jaiWmkxdbB z+AvQsPfAWqGdD>FZBel>Y@WcFhBK^j80=J(pO})ISX|hSQtqQJV^`gsiM!G^A3(*!2$G{sU?lB&MfAX9|K#@{1DFLGuOWi6zMyHX52b z8k#zgK0`cYfEZ~4q7=@CtQv$Af5kW(Iy%YuDXFR8ZA##c{Gfx-!Pi_u3jw#H{M?Xy zNKxRNpOTu4I&XpE4zT-BthKVj6a#qx5^xZ=Sy@3gXxV_4BMx3~6(p7xLk`A-cnQWw z@h`}4gEVpw3B$??!A5mGay^GUS4CkWK}|9Qco}IH78VwXiD@P#hQ@}5DF$s5@a$ef zb}@1fgSc)YC}SHWfhN+D3`{K(&CEGu3#p-*$JtL;rn}_{W)+sZlgh3_fLmt56YtIp}l_(0$LKsEUU!txGLREKW@sjX2OTCa^92w2U~^ z5&&g*22~1_KaEY36Vs9{lgx}QO${v4%sWQ&C#j9J(fkQLy+1V(e08{$ReEY(Jhb>l z8&?}GSW7^ydZZO61oCI9S#n}(YMOD1sj+2hTCzpw1jbXi8^#(MSnDH5vu{L?fKz|6 z!Ol)+G_avdylQJvlQDH?7{HSXIG3~&*A|7&Nu-(?Sf-|cM%fLLQ_alMx+XAILShli z$OSolT%xH@#``AgEQL<%HYD$t} zvU#ehp?Px81jhe(CLm!=SG2~oM@eoDv_!|%-i9{3i9Qg3T3hppn1a&)&FSDwK*Ua$ zVD8Najp^V%!~p*~YhrB$6Jk89~GAYF{apDBV210}9s8g6Fkb$S%)FRNRpf895ca~8`^O-~ zwxf?BpwBO1ACHGR05YkEn7jblZf**?#l+Icz}(U(#nRGr$^snxW@TFQ?uZ4YbXQj76Q=1 z8(2<-SORSdSXq(OY#{!O9caQpO^k!b8K8>C$|}PmDaj(m)G!rvn5db#vEj4{jMH%! zOfWx@G@*iJ1{M|*xXVmXo=ro_n7}xn15z^ok#;OD06Ed=c5KcWEuxmY&1$TK^I#> zCKPE9C8*J*qXBBXBgGh~j4-oEG)cBdH8HX@FiJHrG@Chraq(yw0Xl)R7`gn?!ol|TMrveYD#6iXumqa>r0 zWJ_~1!+8@JXW@1TtfN4?E-_M(4GJg2M9{e%YoBC$EBN?q@-G;n3x$Sr7pm?ycWmClfu%}(o`!eP+CA4#sp7F zp=~;`Fi$j0wn$D%HMX!YGEGWdIDxSqk_fOQJctB2b!B2+CG>!I$Gl3=4lM8>D`W`S z)I2fKIMqBU$=Dop?RUze35*MHhdf5YNU6+IfH(}}qB#+GTuMkeNlrY4IgFm9lh zBcWYea2X3)!k?0w47n5!ydKq#d`Fuank8Bo86+ngrKFme8<;P_7r6x2|06b-K;r;D zI1A;Yj>$nH*WAQ1#XKn`CE3_GG0iYBap?rc2uN&UNnbb$HpkMG%zRL4wz7gVL0Q%y z$=Jx!GTF!sbd6l1k=e2djQ?=2k3h|o2Na#o_-Xkyd5Hu5saYQ+!qlxP*cl^_!BzqU+TjX&>fTfzLf@lYYUWLOpMG^42;ZE5{=VRQW8y4R!(5tg?mXnv|a_* zv*6o1KzqHctU$*UgSU4<#^!0WwvU{u4m@Ixdr=J4&iJI(@*(199SPPt(CTN9Op*>U z=R(stYWtB|^)vC2jLR9I5(LtkwXie<-HdBuX=-kiWR_yOY69b4+{e??uf?f}em@P> znzzLzm7qiKgFzH*qb6!Rp*IOp+PmQD1hlIT)QbTXfW{`N$tlLB7NCkpZ(orkfa=8>bm1 znk1Q|S|*tr8?41U_(0q$9*FBur&3WWs7&M|6TzKa6H8M|gA~JLvm|5CcvR}T35+{% z*G|+qu!i{P!B?medyW;g3KimN$DxresnWD0J{obAvh-h3Po$es3n9|R`a&{Ga#C@w zJ_a=!h)uaD{eDnK7*w=^SI2{@Co8Lr6mts;`Sg^0OPs&TThp=FYpd19KW`38Io zZm~E6^>hu4K__%8t*kQAQj&};Q_ajREDemzEln&p;vM3~VkId)hYcuV+sSTel$4rg zVw7rboRnysXlA^L$__!Cz(F7mj8jt6l2Q$fjFZd_(hSTkH&0;PjJqI5uTQY-yw%Xe zxXuQ)B@{-FZoJ2`B5!o#J?MrYZ0o=q!L+yQ!dC#|$hDQ;iZq>&Ca?+aLitLJN8XS5acQl~qt; zc?f9DzKuqynF)atzcj%WQmSRLVNz0}Ws+rLih*&m>GlbXtu(6`k&_#Ez72U3SXz>W ziG`85d2*70rD2M>`3@?(1QGh6`Tbez6581|dx(v_Vx`mRrQ9I!a1olx_(M2R_0ycvB2&=0>R)DQ|$G z1jgucn}Ynj)Vz{n_%*1cf?j`orAON&!e^GZ^S@Xj<4?5&LUk)XR@(Rb6q7F$6}EK-iSp`=y@H8`Mc$ZjCXLag@6q3K-O6&rX&`Wq!xh=mjPb};8t3k3Y*phH^@fUWP?tj zDJ@E^tp()+D%MGO$}32LM$Ew8;A-&@EF}h)bB9C&4LrYZXl{|5Vw_}_Y+z|>kZ54G zdjjJ(4@f@7vT8y@W8jBFsI`BAxWN~?+Xl*^m{pl)UTRSZw1bU4(g5pVlXPYr(Y}Ye z2UH=@*J7#^h(vpnzP3Tj2XH+In!JUT*pRd5F!p>!MuOrYUO zs{(j*VIk6aildWeqmyPin z6p;;4JWX{Itxb77j?IXe06T%sEAEAbHE{N%1<0+-k z+bV&ZZfp?MCX`OpXdh{`k2D#>+%hfI*v!<}+{D0Kn(yZs|?E|Ba^h`6a(|r zM00a9Bg?}SS&Hy2N@_sQRiOI`%nU3oEi6)vQWGr_kKnsA3Yz}Fi-Hm7PFY!HB<7{$ zq{gRK6l4}9g04G4u@c3j7zxlU)y%-mEX6$8G}+9^$jIpE1jZPg835MEh2M?>Q3<)$ zIk6-^H#6DF$`MR^8XJLENhVvEo0%t>nIwY_Yd1|cJvM>y7VZR&VF8xHE4Q>HwZh8E z7ewK`?J+68A~nUz$|=9X2JdAZs zrGjl6fz}>$ALb-(h)h!lG7^TdR|N9jdh2AoFUdof+(nT!Jx&&%L1a z0jQQhYgiJuW(-^BLc0*73vovm;*KuFh0gKOu+4~C7NHb)kft@k(vH|=2A~y@)H!Hu zM4rKdHbz2TtuZ1)4%`g`pII}y5O;JTE`06h=t5j*88X^OLahX$!9rq#oVWoiG@BsZ zbX-@wlhS?1*XJ1RBO!Klp|o&7V|Czp3xbUte8EfqF5PG!3BLXo&Y*iK2I+xQbAc)- zAwkv;jNXEfXJzGI0AA-a@Jks`3vHAVWVDYox)2xINylH853$XPpgt1_gVs4Eo2Qvt zm>F6aSQ;3nBqy7nn!s2DDWd+C#s16*RD1S^`=t2VTBvW#yZio9_u($(m2f(l3n5TA^3E7MJ7~ zC8noZSp`?-B?m(|ko9w^$tH%DW{D=IDJB+)iDpS>CNSx0AzTGfHvvO!r+ zrwvh_n^=^cS_E-5x=?Cf3V6{S=;CtY6iXvx3u7ZgQzL`36Bs*idw`@AKvK|y9g}Qo zoN8!plwxUVo|tB4W`1r0V;RINSW+Xh??EYm>?>A4DKgb0)x;px(8Sot+|b5c+tWfzNPg@umT3RG0S|%A;CZ!}=T3(#M*ua6)8kqOME2gj=;Txjk zXs3`^tN<|~zo6L4Dy1mDz{<*{D8IlCnd4rXSd?Nj*eZYMpuuR5tsG^QHK^r^+Dam? z6Afuoqnd=$-Wu((!2=e`D7La9KGa~3GcYwxO-#Hxfw2NoaAGOpaaDEciMgrq#mPmf zsd=Cq#X!{vRCO)BqB3QA2(0avTw zeHPf7UZoaxkT$DqI}d1bl~joms;YSpPQQqZFQTN zTO=hLC#NME873yBm?z(zz*vXVLMpVAz(>%!>u6}|fc*^GEtZ&OV3K5VoPnX`T}ysHl%(6RjnmO$W3nZWJ6H# zkdmBimYSGk{9pp(QrwMUn32%&0UA!?Q){mc@eK)FwGC*TJT<-mGR+ttACQw+nOYPK zN;ClwF{I_0)M_*mH}gWf`@)H6T%b+fV`<=kG99%7g!pKLW?D#cx3Yq_2M6tW5U6F{gEl9D2{y9JSCvr{XrtU@wNa`0a|Pi)FXEvyiW(4i+vSXpHlrW%?USXvq+rC6qz z8kw0soWNKQ$^}+dSZWJsEEFYMSp_9S3rWbpK~QQMc+>!*6|HK*DhMvS!HsqcBV$t& z^F-sc9B4qqQitBr!8DKDV^Q%E~D*IlDL`Gp)ow57b#l z8KFQPS;F0oFi9~oG%`#{F)_9X-h+e#(f|rX7%eC?aExz2@5HdO zf--cH^7C^*HM*5mhEbZOVRCA6YI3r~)U3cVW4!DgD>OLbzVL=(e%*fItDb>Kz!~k@XLz>x3yzNw|#SpiKrzU0-m1*;{ zGgGasvJ#7|teo>f9IwP8I~_HsVNeQbyvEol%^=YrDJ8|oAjQzgEb$fn3tDi3hQwxy zX{tq{MN*nYnrTvsMOw=135-*4$0j6c6IblxNK{Tm`H3mXiNz((ut7H=3) zxj4nRQ3zamLBhz;(kL~_z`(#D#lR%RI3?}f1jY%tBM<6H(vmlhQ&RAyZ$s0R6w4Hg zG-K05V-xd~_k*jRgr$8@#3or-ni(6KStc7;T393+qj53@xNVZ7VCQ(fPp9`9RQUA<-wl zLen*Bp*DENf51zBaE;%h-{6~@SYT!4n^-__@*lZ1T~d^pTvC*nY-LqaS&&+6W#yHa z=bBeiRB5M!tPJa-jpF2d(EKHAKPYIl18Gib5nDzta1}8lTzbL^FYV;fug1|DK!+#u~CDl zLhCsqhd4&WfJbjrz@11tJ8K1_SWtLpn3yFQq?#C*n;Mx~SQw_JeZ$)>MDIZsXQt;R z=2%&!gBE!dTUiClTtWqm4FksMh2HHwEB>3ux6bwqr5CVGm00^l!0{?996(c@CNNe*3R^4#j~d7&E^-}5#%c{6@ZuPALt_g=OEVMW#MCr1 z(SZd6J&QoCJoRR$5!SgqYJ^;%Nm=drly)2nkJ@Nn5P+<{+_@%6SoJ6s~e%g zKfR`D#;)@%_z;p$iT$h z+&tO9>_6UCE2Jxoeo}KmQGQuwN-9_weqwWZW=TdoB$pOL+K(s!hMd^#Q0F$StTHUj zjZ)3iOf5}PjFQt*%`F=yGET)Eo5ZDN?Aa9C#1FpkGB!6$F)}kTPc$?&G)lBIYQ*a@ zf`g{;c%!@_YGG=cW}FO~8c0hqHcYl`nn?Bj2e!ZhEu_ISY?^4EW?^h%X<(UVo@i`n zmfSp%aT@NJBp6kx|P;#u>Ps1~nOJm>I`{ ztI)ip{L;LX)D-AW52Q{Tcsd7Z$rYY(O9h=doMdWlVQQ9YZkUqPI+1ZBk&XjZSOfzS zdwQc}as$){HnTKONl7v>u{1D9F-tKsX`9HnmJ^cku(U|fhPCi5RsuK2Aq&OOmij`+ z(y;HG25TE_9*?x<@n{dKw74Wc*UHKnOoP`cfo4Krt3c3N0%*ZCVtP=Z63aN*Ff}FB zEY;G`&?Gt8#I$`P<87+UPoa%5K#M6*E3&kt1alSyrI`zgD?CFV;P^x>JdxrIyza~; zvp6v+Cp879i?-OF`58b)9wh~ybB#rNKP|10}XkY8kra+C0q33?YvOC zhm0KGC_Quzw=scHBJ`lBR8_U2-7R?V~k65lt3qO=**PaN%flrRIS~OG#*`p|?TsjRa6T zcMYX_89MD_Vrr3;lw_P_U}TbDTl9FO-U~FJ+W|3%WXquKdeu$%f{J#)%6^bs_4>3gonF2)HmcDaqWzB-z5m z($vf}%{Xl#)u+#)B_w=q8onC~&or=+aS~{j+QP)tI5jcF%ybcDBPoc8#9rl)Q#hHV znHpOfC#P5%SePW5rll>$8?_J{FzOzRuz?MM#e>c`OtrFtjwCu~q$X#l7Ww9vrRoq? z0xjQ@QcaSRQd3P5jgrlcEDS7`Ok`}pojssVLA3KJYche`_Mke@JT)!F!qUhz)e>}) zN7~YfjGIVs1fjMxWU&EthZ#XdU}6&JB4&#e6N?lB3lsCCWwcFzMAtb;o9Ycr5k#Rb1#}eEo0y=tvlrthr4b5Pa>CmW0+6tXwnV4p2 zlxmomYGG)aY?-`zB4aCVw;|U{psptDyihWhHquEmGtsoORxpO_1YF(n1GxWOoC{Y1u< zxPzHss1j;BP?(_&EzA?sObn7tjgrhQ%u)?D;B7|0A`?0qjDJTY{zVDUon4?=O3=2W z%)E5WW23;M00t(8CaFe=rp9S$W`;&-#v3Ox?#3OSXf7mcNIMw3w-3)^2;#~J=u!yd zq(t)+^E7h{a|2_86ibs$6B#GbcBzXa`d(iuuX6DyN=?%NrFg2YQXwu-K^L4*R&+z7 zCCxb1!q_6wBGKH))X2!pZ1Y6MceI{~q+Y_J%G3?fr>T*$_7hq(z%m|53$XBCu|Qk` z!MGoqqM0V*>;xrBP=27}6zDJrD$ukVRnqZjd57=3U+9_7pnYrRX2~fANu~zIrj{mY zMwVNMnjC~?XiDmOB6AU_ftO-nX=<97VqubEl$K&{VzhM-x-rc##nj9+F)i7^*uc~v z*>c-pbYrT4fu)gAqJgownX#pX@pinuN@!!B-~t~|f6dCOyeP9IH6GOMjV~`sEGPgU zFb+L!7k%3WXhRnC6fN96wBPk!E6O3F?yV9h9y# zPEATqN-)fX<%w$X=;>eW@&m5?|2`y6a$@Z3qD%~QW`IU+puLFDWRC}<7R zQb4P;QjE>bEln*fk`GU0T!Y*BgsKrlrI!poHWK{|Ng``K?3y9fUaEzKWlEBPWm;;Y zQL1H<;gN}qS&$eeyV}ELot0HaQi@TMp@pSIiiv5GL1L2mQM?TpEW>EXs{^n|qmG&r z8f8Nsa=^0k+BnfDEzQu#z{nsu&A`|^?HJyv29l~mQf`LDb3Z${E=){JGB+?wOSCXc zOG`61Gd@mbXXd0Pmf=5k8{AYR=uESeM9}!IiFvZIg;{Fa3493+*VL6uer`y9c50qa zCg?O~WFGjC2k`h6_&5zvL)pOCEXC3y(IVB-F!AI7G_at9^{@eZ6UczQfr+uDX>yuz zlDVOUajHe?DZJ|-XqKv=Bek$IxKL+1KqZ-pfkm37g?XZ3YFe_TnW^dNiHz&0Qj(!} zCLkN-h%L&n>xPtN=BA0J=4mEoCMISUDJkZLXC^XcQ(Bhcvd_vYBQ4p)%+TDx&@9a; z(bU2?=`7yL9yV=8RCkQH=`*4(Au>-)GBZvyHAzZIOf^bOvN$)9aXs#Mgw~FT3KhMI z0?n%7TEK}ER>;LEM%3n)=YdYQ2CYWGe&eE6&#MiNDJsjKzh!2YGx~|4D*yE z6SHJf^JGJF3v-hc^Gg#Mb0G0Vewzh{d%-oVfq`Lil4V+ATCzowscCZR<%x`Es1Zoe zWCU-DLiwm88<@+Qu?HDcGXcXO1!YQ#X-aakiCMC7im_RWh3S=vj2m%p^dvskiE{(N zG~k<9P>`BpL&#oeQo**aggA%T!LQ6CD%1=TjS>^hEYlK`OcO0k&62L-E$^}9Vgij< zYEZ4u1UjE6 zB_++!$S5_<$jl(o)Y9}i-pOj5siLUd$||Tl7<@1#$_7yIK{1d<2Keey^kfA)kt#T~ z#Lmj9IJE?|Ed+9*u~DjVTAFF9MN%4QtK*G{j2*bM3pB70RVdyyZ&+g!yCBXY3hfv) ztceDfW^lV%lZ5>RX66U#`W5@<2NXZF0$QN<# z7pO)~vM{wUF-tZwF|#nRNH$Bng}0W2MqpBY1?akIr~C>V918}ayOKdy?^1c=4am`E zW+|2?7A7gFCZ;AS$;k${@s6Jp2x#y@t(l2=R#uKh$wB2l`N`Sv${Oc7WN1JTE*wG5 zH8oC6NwQ2bHZd_wG%_==yfcw;HTjh!q};)t53r_hY=ThtLsA7|pAe)DOatu!NHH`r zvM@KWFibVQOKLhMEurG-(Lygaf?qrXn@>S?G;|e`rGY`JsgY%hWm-y_d18|By+Pt; zoD2U!=inQqS(qo9nx&Yfni(0T8QjOaR+m6B#v)BxG~g~TknSM@C1*<$%hcrLnlxCb{l$dB~k!B3qZ}153ASldc@Mcv?hH_xl z3C>n6o(VKdQww7w3(CKx@tiH46SGH%A*4#QHRBKJ}WH5;KmCOD>voNU1TF{BkF zpq(9{L7l`T%QVXrvt)BKBa1`>(BQo0)P?}ObqgDJg|}j<+IdYgGEFizO-nO3 zN=ZpgO0;}B5#L$Z=m`*gBnRPWNJ|5)laCyV$OEjz4iS-ND5RNeX=G%XW@%z(WRhZ( zl$K)pY$D@H+e8jt(KP}bJz#!4o z#LPS~F)hi=>?Nt)57c4>$z{;crA@hFm||vPo@`=}W^8G0V4h_73V-#8>=tZiu!ENP zfoeclA}_YGN-4@Ou(AT(1Z;=Q0Vf_C4e+us=;AO~mlSFV(&j7!3!~&jBh!@BoM>pCmTGElXlC(dBI8or zSrBFv-YOk=;1;`!u(};QW{amLPct-4PD@M#EuOVBGcq!Ji?>E3%B84@8M|9iGZ!Qf zAwz12E;1fhCs`OLni+t0>sf&A&o+HW()e>K_|9G{t0M3XzVR?F^4Uc;A$C?)d8y^` z;8XF-Kxa=_S)~>w7N@45omYg_?HHrGmga`$sfh+DiAjcO#)ih`@9_=}Vkx@_Bw|F7 z0VuzxL%BeOouP%fNs@)3kztxiB4|h8XS|&OSTNu%>`>zXd&r~u0ayKurw~a= zOffY{u`o3;OEFI~OiufPH+fUo>MXUOr~wVSv;jQxmSkvYW{_-PVwh%-XqaS__>~IN z(%3Q{*g{YlkYZ_=YHng;U<$er!YK6{sZARK1sA+fAg$cO*8~Qo$wbo>Q%f^bOY;YL zilCQT$0x&XwFdbCLl}FGf@Mvx``}X<=$?WE0_-R}us3W-_BW=-&5R8U%u)@^3{5S- zmjeA9DlukZZkl9jlwy)-U}BV%Xkzkfs5sm*H7O}A#W2k>)g&=B)!6tq-kV-v#VurN z0cBq>a%MyxuY(=|6CY2~VbY-NYiyomWS(Z0mTG2{WME=x{AVKLA|6Psie+L1y=aCt z=wP%fxV?ulyobI*%qKrNF(1A9inv2z}L{bfjEQ95XPABkh9 zqoJvTo>jq{OXG7gi%U|$3)MjR6jcnh%s~x*uu3bd}7LBG%5$_iZsmrjiN zLUhMt6ey5#6GIq#@C{@+gLI%dN|b-21Mo0<==R0_=MNJ!{IW#qy3M~PoD8XnYpvq+=o0yoSrC6jH zn8J;C1#HiWX%+K<^=DeDS~IKYG~qH^lD*{W@2D&YzjJs%gn+!~{*yD^5&HbxzI6!Cu@DQ5c67r=pkju0=)pMK&6m&>`jI{JgT%q7o}B&%Ct6oSe+0 zoK(=@6?iR$sd<`#iMe57in(Q~x$*yrjN5RxK(Ta1kz4#&q*42Jg!u9PVFhq^797SmfQM=+BjTs7J24Ad!YCnTC^JKG>lvIP16iW+3 zOM~V~_-@R@7(0b6Dnr>21?`)``)cs>(m|_2&Q++HAmBU3QsnnmzfDgLN{hcW)BfJZMRD$){-Ow7$p zEmI6qEK*a=Q`;vo9wFHuAw`v-dypXGDX6ImeoZ8;Jz{8Xk(g|1Y;0m_WNMadV$ea3 zN1!{)@ZNVxYmcN@rWmFsr-4>KCmWa=rFBlicYYhz5mx^^_=+6J+!S<>gYrX!QCIPR zN=*wxV-sW3WK)wA(9K6C23>>Oxyi{E#-`>;sRm}orWOX~soj$pKd?Z$B3P!;&_Z_z z>@OmELl1K05SE$@PcV?R?-*-G?5K4dE71;wg*^@j(cL{{1Q=+03n-7IrllArCmNfl zrX?quBwHl*Ou~2C1I**ltV>p+3n1duYE2ytsGm@Wj-h8dCtH}L8K+p7Sf-^ISQuKE z^iE=Q#hFoXnq*~_VP;}#W?`6SnQUlkX_}H^*f$B^*<5J8r{riu;!aA%EYgfY3r^C~ z%*-teQxa3n4EhJVgUu|A4Goh_EmBO)(^8XDQYQ>{2Pc|Z7=qUHB^jrh8yh4gPn^Vf zksEj7qRNrkL>D~twGEmD;XMRc`o~f1jh4e?1Q@6sM%$I?nU`8r0v)G9lY(vywz3+; z+lYxy%w&WXeS?EQdLJs)JSl-zT$XNS6Cl0_j@r z%YkX# zkxVp9F)~XvO*1huHZiqGPMI?=zkjS{q3D&*Cj$cvpplTe`czJ+CCs!>u}Vxob$p>b+z z+O$dd&e4OVYH$+(+c+JmyU388hcOiAm6+$6S5j1odv}?cVWMf8MWTs`Nphm8g=x}s zyhB^)gP5>kQ1Gx^v6U4Sc8KCSL&*+hqzg47K&y6Al8ua0EzHc4l2Qy)jm>9F!gr)G zePaPJSO+Zzp%l_4KTA{dl(aMxbJIlgM3cl+VrV{VKyx?Irvt&RY6N*9(I~|-$;>1z#VpCp)YRBw_9Vus z#LqE9mstBl&f)~^rGpQ>pcTE))+u-_-bRCHr@~SK%9aI99isJvnh`Wsu8H3Afj7Cy z^fMjYJjenN$NYtJer|4RUWt_zl!0gpLi&?r?`zY<+^YrKOF-eC(a}_IHJa+J(oz#k zN{c{Kis`9&@z4N4oX!T$;F`GBn?MsgEmA$|q%rDPAv!O^%-q7j7}V@bGEYghv^1YH zS~HMXY>w6pC1{DB^OznFDXjLGNXQ_LS1{IsiOFWR{60=H`isDJF>~ zW(J97#`Ew_HsP2UBsi=B@*wPxJJ6jOsqqDgd8s*|8;%2V5-U@SK=&M{V%~C$S|@|= zBr!8dNi&RWq#nMDbw^1igqlV1aMrl)0&SqOnCHrl%9EcsYSR>Ql{xBCAd3nV4RkmoDACGZenI>ZoY65<2u|Y zouNbz$a8o%tYMD>Y==8wRSB~Ur7LY`2bzP^_Af0dC@oR2RnWky6{{c)^GH7nJT=KU z#mvGY(J>AA`fAr7X<{bJ+iXONKG|0GcZjtw6rivN=!DhTrxC< znZWfnXcQT=Y$DCXAl1UuB*`Mp(9FOfaVdR@EuzPXphIGKYKm0Dq*QbBRM340=7!0Z zX3HiqZpB?}K}H^}tiU7SkkJazT18x=W3-u^g&z2wWNBtmBg*#$dyWQWI0G ztf1!xrdNVI7sF}pU=bAB7j9L zTIEkd#Kgi9bQH2-s`1)Mj7`iCv#~5!9ZbPMg?T@0u>$csTKwUN zDm&1L8AYj9R%pseGXqqtnVF`fS(q858CWKpm?tM2t((N?4>1KxEWrEnkV*_=DXk8; zSCW=yo|u-BWSM4RVQFD*l)Rpn&7s6pLvur8Bg0ffL-VAh6w?ip7*CQ?s8Q5|a7s+h zPR&d4El$V3fdSI5b4&&uFpB^3w6rwCq{Ku+!!+YmGebkOjd(lLSPEq16$0RSYCJcz zK+_hYQ45<Lv%gi=yKK6aw{v0s&q7Yk&z#Gwe&AhvjlrP^&IE)g&z` zDb3KtG|4Q*+&E?HB*x9WIGc6ojcY6mc_4bxTAMif)ZiVRSWiYow+Ob*0!ELX-I$mM zo(e!8mcX?<06K|=m{^4jH9&%-I$s)njA{1r2g2>RKXH9?HBW3I|mk zsNPDoG&eRgH8oE)N-{G@F;Cq#iE-y>y@gmj2HG=>m!b0I-=*mb=u}Cp6 zu{1YNOfogFFiF`yiSZGUW6_}X9#}>tiP_ge*NISYC2g8&WNct+U}0vFW@eOPuwxSA zDcloSus#HM)e*>>R9e=8qw`6)03vFU3;Cv#yyPV*(K02;*xba#(7-Us(8zcv-YIe{ ziG-9ff2{p@;ss%mi8gZxnj^Qe$}mbwOSMcjG&iy|u}HK`G1-N8E(VKFP?I}i%pH60 zl!(4AB}ZeMSsJG$nj~5pS{NIo7$+s|p2V042`PLtV~}B9lp8a!2O4Cq%*@o>7<5pT zsga?nxv{y)o=J?)NhmVV2UI`{if}ES#5U(hK{7|T8aikMnmS5MPqnf_xnKiSCuSHX zB^srrS(+OeB!Lo$@!m;{cS-Oo-g1NB`R(NUR2vfMxrs&D;FTtodCBNPsd*`29~v7N z7#b&~r5TzeB^#NWo9&y#cw)5sGVtA((ZeMvI9zi0jlMxUwWFzmTB(BC9huRXp&({3 z`Xxv`9h43X3I{`1hN(qLTC$~4Qj)o)d6KbF+Wtw5>v31t8Uwr?0@9pHHZe*~N=!3M zH8nRjO-wU7fcIboNCR?!*X4rNZGz6F1NE#dO%e^w&5aT*jgt+{(o9kgPGVe#JIG<{ z0U%9I@PN0K6?q3_LRb2bae14GWin`iuZ3Y^Vset1vH77%jOTGX8B3cVx%YxanzSwf z(M!Csw#h+Dq(RYOWS(eXW|?GenrdKSW^878cxd>kJh3=8J}EOVB|SCI%F3%a40Mq( z%uf~uiKd`sd5K2JiD~Ahrbi|*{uxfEg9aBQ=AoaxfYJ*CxObP9M(jHIOzjY(_v<7O&!pxd`)zPc-Q_w%z`U{GCUl zGq?#v>iR95afl_IVWt{TWiXoYlaa2_!5&7?WDZ{^4ofGrUKmScqQ-OBGblZQFlcPr zFx4o<(m2sP(cB=_(8BcCB*sqMlNK;9q7QNgrRJri7D1M&K~646%`C}CEsD=iv$App zGjZ+egHCuubP?T71!WCQcufuoamXYWsH6f9!-GwnLyz?pOX%)7plFUP_D2*%h(S;1NBx5rR zQ{yCKLjw~dgEWIvgVHxRq6xz{=1GZ321XWXNv0{rW@f3$rzbHwLaKc%vqP!nsY%88 z$=Oy`;l)9z$*GxTsYReRaiXEAWtv5DQc`lNMY3^f+L=lC4noAzJEm&q8RC4jRtr`^ ztl1MZ2?#D+QW7mp6Adj>EmM+GjVw*g&rV{zj=ON7wXa}BIi&0)`;<74@2spcOwAH4 z%*;|OlFcp6EX-5Q&f$$QSU7>_zKPsJ3)KU!Z8fO1D+^CSlWdxloMLHaVqjrpWSL@O zavtxguCNe=w!T1X(#RcmB5or&O6Ei1fYX~nYO--slA)ooX_ASBxq0%1NsJe8r#EQ$ zQeK&1%^6q)VOFBlW}pOxCrVONKzjgF6O&Am6OB^M%`Z-3yhaC4!Qz(U+=9nzDQTda zH_|Lql9E!=j7$?R;mt!-uGXmKLDXbuWtEX;X=GrWmX?xio@9}dY>{|*65}L3NOHhZ zBY?`GlKgzoM)a!8g7}>Ly!6!K5-Y2y%mN<>8|BCn@W~M%Jyuqpc_sOtC8HzETD20C znwwvi3f`IJk(if~lUju9LSkq?6~3j&&Q6oqqbqT&u|YQxa#RVtQ;S}}WA?FO-hos~ zSi8SChyI|JgFDGKM29LQ5@7ZYeiz~i8F)BDOKDi)LydsJV=ZjnDaFXrI61{E)hsR1 zBH1*}@X92{v$)$auna-cAm>Lg`9h+KmetvdlD(Jjl5Uqo}u1!M|ecc)MrD%AXUWTb=7RD)wmX;RDi3SE~Dc2@3 z-XX>9=s5v21Wd|$L*$wi<&Z#(vuDtk69!l2B?p(}7bT{r;yX{!AUVaz#30SmGTFo| zB{e1K`amQ%stu!pl3QY0lBtPtTB2o=WvX#%O4^M{j0uoJA4{_mwg>~>dxT{uNKVDN z%N%r{gi*4EkwtQ{WwJ%0VREA7%}I>Uaj#p1nMvhLiape*GC)sUb9QhwEJx=7t*jtb zJ#73Jy^hCBFr)K;#LZoz=HStJz(Lic9JCo9+LR%sZo$>~B&k71e9sr^Leyddx&{T@ zkF&DMFfcJQGD=LcOiE5PPf4^$yETdNAnqm*q^5=R_h8q^gLsK0`9)S%pm7)oD=oh$ zJ~c5p!^$c-F(=2S)B<)mJ3O>XE$pnUQY%V8$5xgUl@^zzrl4(WfsgEzT7bqik(O;@ zS)6HTYME?qVrg!enw(@{nS6T^<00I>fGj4Vk;{muMb9UsDc`~uyqb( z3|NC!Hdt9@SR@*QmeZ!1m{_D)8e5v(oy53#WG=wNl}iUnVKGRY0V}Tz6O&R?%`J>f z3@j`yEiDc1;qB4bp!d*V=Y^IRWtOB`S%LS|L60Yelx=83M_2{1#+aR*okC)<0=k8; zQZhKT#Lmj9IJE>L(;K9j8W|@UC#IUG8l;$|8sDG9co=tYgF1t~9!5GEc-DTBm#wLi zQU;_zqKeB0Yp)7xY8^ZS%2Ww^>a>Zd;uQKO1E;EBF_H&Ju>s0Ye-1*pGW7dkZ{h@G;pa$-vY+)il*CG1<%{ z+4Ldar4_UqtE1ZRJ!F%ZsYzOz3FtaIGjkKOv?TLKlNk5ojyFiQBkoQDXw8$9Uy+(( zW#yD#VS{(DpPa#c(6SLwFV@J!!obWTG0DU<$->Og;4$9CbPzv)`mI)0i7AN%kc00b zr`*TqCKgy(xq(l^_f0Gyxa>fqv^cXWRR>IJqTW-C+)*NSM;WN6n_+31YHVm>VV0bj zYHXa6n)qZAV>HCgSjM=afeh|gV_O%2>OfE`PBlnMGBimtNHsJ~HZwOceL9KpKJExd zZ_vV8(BK?Om201oeE_;m2Fgbrwg6qm1C;=K6`w-TwJ=6$DamPuiD@Rr7AeN2X3y}R zA_A#4;#2Z-L0WSPz;_oErtCo{>)3f7x}p7ah{O`VvRg8#I4_zl>0ut6YbJR)6zZIPU0X_;b_YG{yVVUd<> z{$dj2d)%Ic>PK3$M$xhLw7mEV&*Y<}iE&Dbv891=no(Msxk>WNNsJqCuaH7(zrm)h zNg6q%Z_{+Nk6E3ZlV4m~lv-O$t?m|mW03M*6;*mv!^Rn)hB8$`gucmOh;)2L`M&R}1&|V+#XAGXqP**OM4G<8B_%s;`N;sDNtQL`T~PqwNE#)P|$& z1IRt-h*{my_5q~XP0M-;)TD>hFKAPSkeXq13>wz=p>n$nB~DSspdrJVW(LWr=0@fQ z$%$shmX?<0ZzeHb#@#}|97-U1h!Sh$;~es#c&)NUschtkA=su*5XKcjG(%8_{$jrhr%@TB(wAnknv;0`RmRnkqT48173!=bt2H1TE zjea_eP$wD~8CoWqn65f5%Mj2d zywH<~Y17iAZ!t==ZK#nB?eUPf<`q(AqndK-~i> z)<76Nncz))Xwd^zTWn=TbcLWnQdf82TZyO%6Qvo6e~JLqLjxZw7#|;;oDVwpIv_DG zH3wy+3?o(0+I)&eiHY$MMry)8EKSN`l6bI@oz6E!~f zf})NZ>1^0K7n-h7*B;P6)NnZiT&LS%pXwR-EJ)q6+3>VEp-J4z3Qx6xl21V~NK)Hm zkYy5L{fX{rJMeTJ{A64@t_dWr-a`#$DmRc&0z;E(MKuwNCP1xl5}Pf_Iho1Xgb&>& zHX(p~OGzD%5_X{6gBnxhwS`7x$U%y15D8uuN@C$X@P#^R#8Wwoj`opAIB*|N-Y2oJ z0XKg~`$)xBR**3dlvE8VyeVvbfQn3LBMv@(KiKl}Xdek{pAHmtsD&PRwcThRDHXB< zh@?qo;zJFZy)e3JpsIH8ws=STNF`QQ&$etasl69 z0vX1E%Ut@8VGcyjA|rHY6WBSKsd**w<*7+lR><1`h;tt}D-L|`g<4G~;)W)1-={^R z_AKmL7_5iFE;E_g_0^xhca`bwx#h_u2Byc7(lY<6m;mDT9B4#E8{l4^AY@#QJhg=p0ysLzVPB+jnDJc$mlmStKq4f7qI8+{TKrtIU*aONoAPnZv zKTe3NqEWLoN*xXvXHUw{&jB?x&`$&!xYho+nnZ&&h&6Q}Aql#78k8O&BfX%T5-coJ zO-;;9lTuO*jM5B@KjJ-y3jNe6>L313aL@(i;Cx)OjmRSaXc|B_lUO8Mrlwh%nWkEp zo0}LUf11Sj8_zjZsL2!BFClSqfw+u7_i;9=G*%&P3_KHs#Eo^*z2ij{&l6F>LvkK+ zk|bjw7=4t6z!DPtiyDcG5K!d=8vmhI#Eguf0+p^*X)}+Wd6frRW)8Y8BsjS!H8l^t zbpsCR(a90A&d-39*{C%eO2Z43@$Eo^C!>=iL!rheK0a~PL!fmRgLaG*HK9^1LPjS? z5|cA3;fry}3s)kO9%>YhPLAlHcV=lC`gmIBgF53w``JT&as)N?lNZ%Q_aSi=@x(Rz zLCt*%O`xl9HAY|)kSbkQqSF(oEeJ{#sL?ubgKtpxfZPA5ZlZCxb;1%4i$@DFRRr4Sc{1 zo_)xp`?*K=bCYsj9BN|3TTP%9ZBVtOl#;l*lf)!!PZ z;bTUiL4tLEG-yJODy=pmhwKOp8i9)>eC`EB9W~O~uyrmpU1Kb)rONyv@u7yx8Q?m7 zFfZ(-VrC#Ft>dYF(dQ=VzYd7_=%%DJM)4;K2fV^;aHkm5vWUtJFqFW+wpa~XZ<4rh zh=@fKpjJ3W(;NQ*q4<}FK+AN{>^sggR#ChQs+g#js;E_KjL49KWIzxJ&W|J(-h-`O zMdd6y+D97gBaQZvs4(SE+z<_FbvxQe!rG^!R&7Vc<{z~BA0*Dj)j1jMBcWeafl^yS z8imwaP!365qkSYRXx<>cX^hfN2DiyTjWb;P7KV8P3?(o|`$(f_Ug5gI10|tQyLSo6 zfFKf_AHfH8gL!BTmccZ8MGdD7M2DETC1*rOHyOr() zQR0RNsC3L57RyGrbx>i9hsdOdnuJHUb&PK7KurF=R% z@D1mYF}{OhHh8cHG?oX#U=ID`gt*Lxr-OfD%(OpY%u$uCN^vVvaM?wpaDoSj!ga zN{SLQOF&2Crk2=QSrw<2pyUFO7mZR4j4Top4UDR}N_@$CnnTT3MAAr^Y80(Ka;nr;etbwts0! zL1~GCtpau@(av@qa3Q4)@pEosQ8qZ%EAx`kg;MiU>_Dl~&>}I(*xbO#DB0XN)i}}Y z+a$(z5>h34HUJGqmX@TZSXpJ}<$>(>P0h{s1TpEI-gMBNmR}Bb5Gd~_rl(q2`Q#@j z<^-4I7bT{Hk|*foJwx+UQ%fV$6w?$7GqXgC?~@q+;x2?pOPa`u0unoD8I^Wv0zK;S zqy~$$#N?F3G;^Sf0^zBN*){}nXG&_Sl~pRJu&}an&QD2Ah8G+f z;L&HKe4|O6t98_%(Ez2~bMliCbHFJ(EyXCw!q6k(8SJ zYZBuZ+(AG@3dC9^V9(jm2tn;o+UX?cgA)Nv7&Q}s(}WG0lC+}y-1w6Gc$gNqqWs*D z{NR$J%)E5422gBQBigy3Qq98HC^a=XImy_<(kRWs(De66@wlahaZ++}VzQZelBq>v zs@b1Oj0^Z7b z7<6>}3)JbcvO?+nfSTwf`SFm$Tf#C^%W+M9la$nlNKm8p&hadxrTX}nl~qPknn8-W zfw5VNk(r5csP;o4Bo>sU78P4r}Vuu{Z-dw&IakoDrN_VpD2p1~EA$%{(zVHO)ND%*5QxBIW-i#z_J=jfO}- z0tz;81L7r?bPfbkDu(C={%*lZc8qg-+5I2B^R`lZEQaHNF9d@TZ zc`aMwYi)c>eFov4e5_qFYBlhP4>erQ05vk~bfB{E1qqPe>1gJIFGeGA+cNR-GQ?8z z5OXdxUBgB*AmbQ=Ec4k}S*2E#fMyO#ib{)1Qd6KqJfJ$#%8HCe2yz_3rdX`3N-7IL zqhel(d9HaSMU{3qn;4*Ft=P&@P}Pq*@`K9DNKG@dG&M{zGEXruHA%KiZJ5mX6ZZfZ zENZ}WF5vM@a2tf?lP=_s6x!L@;T!%-O|wWfGB8X@GBr)MOtfg6jBmyXeY_L>CYhkr z#1!|^#G(|GCTCb`GK`O!q%lV^p|eoMR#ru+i78fAkZC%KjYS{V53bBhMj6&mF*Q$1 zGfYV_O|wifPE0junv8FXgZN-TPSnU(+F%UdqKBj}Xf`ed=Oku2D3FV-tO9ZpGxMN1 z4|SZ>2A9>KU2I58{gGW|2g)oNhAE&K4m0y)bIVj?a|6TX$&6jNr+bJG3ux9sX|9*0 zCda3w7M7-3S%sx0yMS0I4o@s7u(ASOCJ~w$T#{IlikV{20}c`*RIv*Z9A*YdmZ^qm z=4mOG7RF|2mMxPRpOI2N;GORvIOPNBhM+|))OTo^$&TXb5Yx1zWV1A5GgD(T?1llsWOa8e0)+P z-%zVfOmrAgqZqBFu(&AK`q{QUxr2M?p_?*ln(D-|CF?hutsOcV@3g)1+>oGd`0Xd14sYQ<9VSJQ6 zK88w=kuIq@C5iZzfnovDWw5f!ORXr0haP2w-1`T$u*^*?Q_T%54H8XEj8e^0Q#&Rz zHsB5qNOK&0j3X^4v7`ia)ty^TVhL!%1){7tCo?(K$_ke z;ew+4lKkZS98g&2rNpOz0)$xOQCpj!Krk}1G)^)xG%`v|N-;7{N$i}AZxIkQFF?jT zz+)hk^>N4_+n~6|V_|HXmSSXKl$dN_VwRF@(KVT|19$AhMlryp0Je#=5FJPG%3nzQ zgIAw|RwY|mxfJCW*g=*kLpYF864W?_O*6rhZfHSDVo56gXoV}rpB*q07c>@;R>K(? zS{j&}q$MRKrI{I7n51-1W}JjOFo^H?!$JdPf*HB_hcX6%F*HJGOo&3`362d}7+Rzy zTPCL^8l)zg7#bS(OlIuC9V`&nB&X)&SXqVU6(^>pI;ZC3U>~AM%`C}CEsD=iv$App zGjUC?yFxnG;PT8y14n*=DzdVIGIT(vNom5H5|Ek-GG+i;gbrRD2R6}82ZxEy`MJ5N zc_pBQm|zBIfi`#ztbu82QldqQu|=Axp?PZWWX89+M?|oUj|PAjr$ZKYVv)`*ElI7g zvhoE{kbD9ORJ4vaGyx~&SAflg>kB>QL2HliD_Dz zL5gV~{$c`G)+jH^EJ?Mp3I|b;kxlIB0!MV9F9M}_Stxm%6wK374U^2wEsf2LQY=!9 zQu-$|uEd=mps@t0EGXEdFck9&IO!M}SR^JIo0=J0T9_K9T27eE_!)O*K?yCwRV&tf zfxBcy$pW~Pk+MAi&%{Dvig|Lfk%_5cs!5u$QHtrr$@rF5({koEfVd;~ki!Fc94|RP zFAuc5BriR_7$wv8HIBfj@ND2BG-jgny)ouk93$hQ+? z&tTL@@>ufM=rHQ&FzVRcM<2JrA}QDPow zBXOf^d~Pc~07GchzU zO*2oPJ()2Zk}R-{0N_fcL|dMbnwDr`YHVR*U|?!uWNe-~XM_iTaY2c4tW`rcn#80jnfiMjnmRB%u-E~%;rsIoQga2(DNI5 zi-Zd6eZl7yp|znPxd}}W7L(u^AS)}#_5#pU2aW}f*bK&L2B;oLOf*hRG_o`^G%__$ zOtYLnnehkiDiCTCjT-})O=Em*0Ag!CEcL&cX;MmZiltd%Qj$rcfu->RyiH`N=OLL2 z-2OvPD4=q7D4v#sr?F^iWNu-cVq#=qmTF;Yo@TjlGUMVwvdow&gLgzXyg>aj%r5w# zxEUT)!dV(ynphg7CZ;7Drx;io87-R3xKRjFqF||?>Ad)OG^TVwcky7{j!51_O9W76k{|&D%Y2Y2OQbs!l1qzA@^h`MoWZnXNl6hnNWsgm&~JDq zRvVtvM)0&vM?j4LiVMtyIB-P>)IFeL4TP<%GE$Q)jS>?r49v|eEKHM93>QykT!_10 zh-J7J^~hH6Vlh0c;Bc?ifFx9S@`tVp1TO^{1ZxOEOM^^7!^IZn$>wQEOYp9ZfmSp~ z-6VqHhJB!XFdcP^r-zhikY<{eW|*92XqsZ2oRqedr0vMi5kP;)VW#DoB^mH_rI4Z> zc@Zc$Jz%W4g^e*5ffpae!??(6k!(Wjz@v%rAPeHl5_3SCcvFiKi&IkwS!ahb5{SY< zl>+rbOj8VujVx2m(vp*s(vp%*myO`CNHZ`sHAzV_w@9_HNJ}y|Up|?!1$WtkF*FPt zbi#H7Hf7tg!K>cUhb~H>=UqdVvD;Z$l@wLRmqOOGgARg5+Jz3@=Uq@*oDrX26knW? zUrs1dB$*|do28j185^0IB&V6Jn2hfjUdSvVUE0)4+1rOB>LMwdjF@eKosH znwbgOU=o24NH#ODurM<>FgGx_OtMV1SUKWCAjQ(e(mdJNG}+MHG|kK;X%&4!pd_Ox zzoaB5)yfLS8n85AZf#L;5cB!2xivn!K`n;t=St4cD@m;=v9c;C$}h`I zNsR{y$3sQqLGv2mqcY;bw*a7Qasw%Z9=@Nd12GfxP&efHU~uyxKHd>@S`5;XCDg0} zJ1&m6RWkm0$*DFP$U7#e<`DEJYk%3 zyVNKKMyD7NSDT^je;O3S*Jy5nmfs|vAUhh#hpmGi^ z#SUC9f_Dhf+CU^VlZehbWP}!4NYOZN!)gmi(-x!Ci#dHqWA~5|U|5nDUPq43Bcon@ z0}ZTVD=VUtHGMM?blw&%V+>po0(B24-GMN;iI!$=nUZ8=Vqt1&nPh5cv0*afL@JJL zV&qHkh!t&T0REX`6kPiE}I9cqx?5#%&C z#QF9_pZ!L)OLn3)N{chAQgy(jrnQ1mEY6KNc-9J`W;0NEV`iFcVVII^ZfIa&mSSRR zv1Kyj2Hc^6KK2cpTZWxXj@aCZUj0%nAP6}DvdfcJ)?rlqAB8ycCUr5PBRC7T*q zZk^0H1$Ur9-Ga1^g|d_LAj5XFxQZEl3>5o?uy~fRm{^)8nVTA#CM6r07^S79ZJW%v z19!j>ib_Okg5*N99W7V|VS$ad%>|=|!#*QVOBnOVu$vclMHOz*^rr+j(KPUO397Ffo;S! zPBsPwN3v;Bno+VvlHtzDjQt{zJTmYbHz@HssOt#L*6_gsT1F^wofovEGkW7%R$^X! z5!xCqP}HFX6y#7#5=R)Rn8%=*Eq-t~7n-giYcpZHGU*>`xSRp*m4fc(E=sksLaTlU zJ_~B+y^78eF3^_;!1d&!&8AgdIsm2BtW{FAWi6(|7 z#=9mnt`~(AOjz24&{_cA$ifi^&@~|7kwY5|5)Y;(S~Kn)l`>*>+X4Dya<5LAiHW&kVydNqu~D+Axk-}6zR8Tsafc8U z+OgmzRnD13$vLU$s|b;H!_eaJ4YX2|Slb}`8$e-Yo@8W}WRzrPmS$v{mYis`AMZh^ zIH&JWwrL~RNZ?&8kc&si*?3Jm3xiWj>_9itm7olOp|0-%1yHiNQKG47s=2X+k-4Qo zV(Nj(j0bQhCd`5zOEHF8PGR4VJp|9nz%#>cWNw^nVr-U}Y+zw*Xl8D3a5Cd=+<}Nb z1OYqJ0Wy9<@(B+^FDTKIWJX$=foY#-f&<0m0 z5Sp$rMi0>12hhYx)=VR6_@m51fmQ^Ak7dK<3~;Y%bVe4MW=3aZQ)_Ec>Npe*cxlk! zPBD1$!sv`_K6KYBIcvm5XJqqI^GXIo$U!n7n6$FWNKQ0MGcvPCOinR1HcK@zI6Rqg z0qzDoRrbdazc6IrM;&xDL0!cp6HC+N#Iz)Xl$5k&gCvV1lNp!d4kYwm4s^LG@=DjARH&KP}dBiJIxv-}Ixe}J}4N4tJhU4MwD zB?Rvk5R5r!yLgaH2oEvmLeuqV*AH~85wwF#^ymw<2CyKF6>2Xh#5zky%ONX>H>i@Q z@s!3WjRO?UXx9(vWVO-7xRBG6$mtD%Dty#r3@sT*9QqpJi*X_S8VmEp|CL_sgZG_K~hShWtyR7l9|zo$&43q z2Naf>L8>lr7!Et%L7l}^15-s>LFvc>?kQQwax3hIZxDZ~ERD?vjrJf_ z)SyI~lx$#XV3Lw(Y?y3nl$LCGnrBu}NZ}a!NwZ8bH%v23PE9gQGE22EJUf|jKk<1K+jt^!*A{tsAY_4`4o1}t znqtRwqa%)$h8UxeP)PS61{9mFG?)Pu(Ha_Pf4}13QA2(F3BuQ^~+C5wX?E< z+{h50nHHaynw(l(oLE#zD76`z8>S^1rWvQ0nwgoUCY_tic$x*$ufnpIh#E~s&%A=t z67*$YSf)!+?Lu0)MZ~ezA(aKG;C(xk9ljiplbD>Ek)M;2T7>glmYn?b%)I#GNt*pqkCl&vSiA->8 zP;4n=!5nCvuYs9~S!$A*VPay6S)!%c`N@o%apy_;j*x=NV$6=uz#kL_D)r4$%}q@$ z4NZ(KQ!OnGjg2l$X6zBinGdP62bJi7Y}BksUQdx|%cznji0GH%pNJ+lyJ241i9f$3 z=VT^lQ(l1Yh`=pxVopvSpfSnz@ldvf0JSjPr1JWH3es zU}tC+m0MW_l?P|0=OyOYK*wI;ODr@>Ep$pPH0`K5qEESv#17}DfNq{JHnT7@PD)BM zv@p0dnehtlAVMFRrFqFEnfZBE zR>7Hh={czZiA9OIuoP=HzYq8eEx@XeoAUG#-JbCU}G)3v_{bq_S#nwY1h8W<)grqesH95QpXes%(DND*4W`ji4QN}m*ve|;1Q)3ABdJWrQ(U7+ zVJ%EXM>UGUWA&8vBS+^bis2_N;qUoUbB+SN&rQ}gNusM5s#Iu16l0(^5M`-xbW{Vg z{Djsd^jQ)|+63olbPaHH4aHFn&^)7wahhprVv?DmxnZh_g_-fS$&ANwcP-KT?9k3Q zS$nWxy&G^h7+(1tvcEiEjK49yKJEkOI;5)E(AEiB6ui*w_XGV@Z>K?^v%io+6f zN>c|eU1E0*N$Jwi*uucnGBq{HG|A8;Ej9V(XjmdgElFXSW|C}flxk>{l$dOgW@2J? zYck_Z2}rL9%latvp*WPj)X*DmAiAA9^t?tyqk42G1=;`}9ZIpnlaYy)f)pB%xdbaK z{{ql_1Wiw^9bF(|MOvq7bh#&J?J6;AS;5OaM~6}%N1Gufvh37K&^5WE3q;Tdqo6g( z=uk?Il@)a8U{Ec5ph{jQqD_Tupb{D$xX$z&RN(}gXn|oXtBj;n)8th1M2logqeQbb z)8yNe85iLmO@R(Mz?Xl(TFp52blF*1k#-{mtc6i*WmS}zmk!z<0-|idx69h$T(3s# z&9W#xc-$N;hkqv~nj5EDm?j&hnOmlsr;p$j}l?*y>2BCq_V;&BI~N0_AMrlOv} zL44>!3l7+NBFOj}wFbZ`cLu0HwA0bh#96{XBOiVzD(oN|9ptQDQk0kpI@t}B@e@n( zi>$0XOHzvp@+qlH3J=dJ3Fb zGxJLF<3Y8lm6c~+Nj|7HC9d6!yQ_e!9K~$&qfYOk@-i&UEK)2?QY?&Gz3wTg&lGC1Lb46P#K4LkP`*8A@0geEXoF5 zdl_7rmy9lynwNs-n36OLbCcv03j@pKR7;bzWTShN8PDSmNm>@&L{>Mb4JV|bGh%l2 zXO`ro;%#K6#up^!rRIS4;Roa-R;Ct#E_O~0fQTU_LX>(Rbfz+BTmpQ!nw3?Csgb3z zX>w|^abl{8k%5Kj{mG2iafc}pOC(@^hV=76ITF;WEw-`>OHBsf2MWKD5uyV7=`MB{ zCr3awH&|Jbxm1Em&LU|#)yyI})iTK-%`!RFIMFgO`N3$|W~P=~S>cFslEOAE#nL3j zGTGA5*uo+;$;kBKWX3j0NCAUosu~vi&>jp~4Rhj}YnW$9;+ZldZ=ix)htSxzfed5v zyhg+j?&!2QG-yYs#Yd;bLDM;86`iB!CXAk&fYH-M6fE?u(1Tf=kIII%}N4RCZ3m{b_F)8e3A1}Q1#2Bt~I$w?N;Cg!O|#*Zd5-lnJv z4ZFeyJg^m(nhZNi0d1HDGO9w-IgQZq8A1l*=;ja5sg0>7=H>>brYR<=#%5_|CdrTS zcB84$4I!e;!QU}RPs~k4T3Y6wn45~_ltk(tr$(He$m2g&Rv9TqX(`5L$*G2^$!4a8 zMrlt*!#1xZzC1O_$_n{BO0vQ>)i5d1(#$Bu)Fj2k&@46W>14)-xXT4-)};QxZ+U7` zd~s#5l~r15Vo7NcXw67^YF@lkQGQ}da$<3bb4Fqwco-2~gs5R)@=b>nU+5#iBo7K( z7^fJU7#o=;Cz&N17$>GYo6NX{YN3o0DFlzqKtA3AG8Bb2Fi-zOFz}3~CmN)r86+kq zn!JD-sspz>+?EVdvXhklR>9+C#PnXr54$wmZv5a=O<@dS%nw7f(|_ZS)7rY zmSmWeWMXWbW|nAbnQZ=gGUKaZ8g2OnXp2)l^OAE)i!;koZAvY0M;mC~nb^5KP>>== zE$UpKl~snZMOtd2g_*g9MWSVjQJUeK$&9aY2RDv}Kgt$pNJ>Df*^t*FA)gjz2dU*r z>ZFip0S-40RA(jCGRf2+$;dF(I3>y0IQ8vh#=E$~8{$<+z8(gp624ST?80k;DcamH z#mLyq+{`j9)hN}>B=Oy3#+$f97)R3>`wa)u(KCxTKA;O3xCxq=2W z%o5Fv%}q_sEz^?B%?%6;-j9YZtr7S6-o04P%+VP)kVQgk@m}YAHVKU?ML6UYs z%W;BB@{1DFL3eB9rIyEM7U$>Y7Zqe=CR2LoB&0@2&d)1JttbKQP{=Hahw|bx^YT)Q zP?l;zRD+Mc1UZGcfX7V97M2zUsV2roNydpr$%ZKgA15z~@j9d&MHCmx8NsA=xm{Dk9J#B1sk!-Oso;KvM`B(|PHK@2jvP+x#m z*$^G7kVt^pJNR9QCuHE^j5m3b7j<~7)wILe+sEq=5~GM{<)iteB(WrQG@qoF!w%y{ zD?tVVEJz1H1*!PG@w-DdMbNNQ;-mlRSt|5Cl77gDd?G zG3O42>;}5@6jr%F8lRBff}NFBQfX#R3c=w}3(F)^qg0Ee)U;Idq$CrQFL>uuU{*ov zF|v~PKn!ybw*UjBc*i%;L56YAp$;QM)0DJilO#(cOT!csOY^Uz!Cefwu^3NvOnz{i zm>8y+nwuM&7+Rznr5G4}8x3w+26u`{nyG10ib-l(s->AhYRdP?jNfpNnQEY&_&#tu zop6@)SUbrB-gz3mLzAy7bKQ~PhzvOLgl00>ZAcW%no`~5JWfP{wKQM1vOaQfjM_zoSbTrY+{y} zl4z2el4PFxb28%x-1z_!OOR34#FWH>lGGy5a=Xl&63{@U8<>V(UxcA3C$XdibY8Dp zPGX5~VgXbcmIWWMgP-C-6Wgg)R?zuW=Zw_k?9?LP{IXOX!b&vlbfPuDCuHe>Nlj}7 zqgb4qjG+<}g9 zcN**xy7HpTl2j|Ja1aH(iVhM%XhX_a1+f++cGSJIj_wX5_KG`$G$YXAZb@b-MyZKu z$*I35Gfu=^1fh>1V>>P%YZzk{#1ZgRTRuX{X$3fZ2FiGepo8X+r%FNXcXajXMTrF& zR#tiWDXF04P>IPUnPsVd`6-~;%+i9C#FEtb%(VEt)a2CS;>4m#)Vzew%SbazF-ta0 zH8e9dGPE=`PWm&MaX;=@L9Q4;MLT$MF+L}=xFj_XR2pH5p;i!R9R$cgS8`5%ajFiE z5q0!s!&X-4BDi!yXENZEE*SMe5^Rlfd@^j2GRXZH!q8F^ErVlEQaWh&7outc-&kma zriAbnhZr>o>ZEmsiGfj4Vq&UsibWdePKw08qj88HwSztm6O+waH8s(jq@#^gj6ycU(#*&-#WdM6&Dg-q*uprqc{C~^Lt;ZO zS6Z4Iq?#F;CmE(C8e5vD8Mll^wjSHQ>YxeSMMdC+uApHi3RmaC zMxoG0)*y4^#I2+S2ZWs+t`>oFelFyUdMLxr4m8!Ck!F@;nP_2ZZj@pPI@cqyeG214 z+!2YA-9Y=pk#<8C2jj>^Sz;6>mn@31AFiN&CFf=taHB3xQwKVIV!ng=`T%gyU z*kF)?RXcem3X~1JK+LgpE39g}f{gdGjFpR1e{K9F!sowTFx%g~CBq2dZAo zEt3rl%ndCpQ%sDLQ<748rZC>b9Zdw=4B)A3_tM0ol+o71K(`)1D|Ji^%u@`KObtve z)6xu+je4gr`a#MMEDLo|3$}uy%-l@SY;duaRj37|g=%G$VUn0^oMK>gk?GO>W{{qM^M3UnVe!`Y-VbnWRzlHo|bGrVG839+_4YK zSct(If)PGi0Ss^jfagH9WHVFK6tfglGqbcb3!~(eiBlLq4t2Cih`BUF(70;DQ~ zY?lPflQK+%-uBB#PBb&IOtLghOEgbPHcCyNG==dK?s&)9BP4cNAlb{XFz-}>b_n1L z+rVdTzzzYSW^Z>W`Hk3qak8bUsacANg-LRnxuuDP;p8cdK{%U%$XyiJa0JE`uHYKP zEY;K~In^@J($d(>%s6?<6vjii6B9L?f_Mgdpu5mOHw}UA7|P5`CveLUXip;~EYL=Z zAzeGr5ilkB@sP|ImYG@(&!3bGu@T>*MUD;R!<9((CrViW8q$KV<~KGrG%>X>H8V1? zFg8xMm^y{g2NEDy`Uuc=Kv80OJb2J5D6t%L>a#|vg-)r3CU{udI5Ej0)g&p|&^XyL z#l$di+7!m;R7w`bW$B<*s>vnjXJR0oc%NKaT#}z_W#tT}!M9g|<_*B-UZ5XmGpel! zwDkTV+=deDI?h= zB_+u$Dbd(0+0-~SIc)|R=7wg1Ph7FGf-=BGR-#3kL0Y1@sc~|$sfDG*%qfhaINgh! z^)L!Tq-)GT1{;_rStMH+8Yh`2B`2Ah8_XixU{I-*ngVt@$Y5hrqtq13M5DCiWFrIP zl;qh{7@JveI+;3!EOF-yXzE}b{toNT;7T>1vKFR>lH!wS2f{4F;UK!Z2U>iBi%w9v zNx*$}I-0PYW@KuXlx%2{W}K32Y-DO^HV1F13P~WK!E7rl#5Nz)tJ>9&4rYZ9OyCMA zJeNr0IJ%YGJERE&37v-5vFvJs*CNzE#ujbp+``N-&D7A?)XXr=EHyPLb?y|#cHDWM zn7A&rpd^MtZ4F{ic^%r(jxno3|6_2`(gJ9EA9$AE#30eoBH4W26vjYEjN@*dfr}Sx zhtrfAnt_{WCMKyCmY^$M(-O^$Q!EYVPhsrBoxor@lJ+Gws!ho`iN(cMR?Z;G22xlh z<>%*sibV8!Zge}Zl@-yIBDf&aw1aHt1+_6u4Gc_-jZKnLk_=1@%uEayOkwQDogC1^ zp4Maf$jvbH9uU!`66P`cWSu8LbQqIS(Zfq&J+#&=O>UOJ+^VV0O| zXq;%8l9ZNaY?PR4x^N2Pcig==NQp$Cy+K(eMC|_Dpkf)MxgD8>+K>+rk_tJ) z6q8ibq_k9H3)9pTLqp@`qv;7f(@^H?UpC<^~3-=Ejzw?xm55vEeFw(nSqf-szHi@ znWe?LDU9oJS9hobbL5Tq5IuH+c2pmEwm}9$Mi&ZLfd=nMx^)Gm@eW@o07{T47KX+t z1_tJ)hN(%3iN?w6r!Yq2O!^RsLTv?SgLw9}>30%ed0*8~}5<5i$=Cwh1i;u*;J8Q3SqkSi32=2nz}o-{!p&ay~M zPBgMeG)Xm0PBBhS+&G0X1`^;{`V9~X%w(H`xDYh4puoxsaz{3}MzAzWOffPtGqy}i zPDwFIHQY3Xu?%7i7V~k`2;kZvI5{IVr8FlsB{;vdC>eYVo0SzV8Bm5aOSQ1HOtmmH zH!`(IH8V8ZJcaQXD^9CX`hq2yIq-uYi><7Zi&8;ny`_N=N*zujnVxa5=aR5Y-m6d-%NoIZ?C>vs&nFiS)1KI5kVbf)^42nA--WolT z6m~I(l@&!>k5Icv&|(%dDWEC?C1ndsQ{%)$Bf~@kOM?`1le8^U7*ik#2}>rz(Qtz; z(t({j3OdW#$_jL&J!Clz$eu(~!&C!POXFnYR7>-uMDwjv82xeDlYwaE7A1oAZ6=n7 zBqrsg+Gv2dUZ-;OdL5KiSnwisv?7956rk){keG+QApv`+LEEj6 zjE-Irfi^M0GCL$^LW)w@^*YeTG^FK7#vlROvLe(1gy=(+Kq+AKhSbp;QqxisOG=AU zi><8EQ}g1Xi3wK?3`x$AWDm+PC7`ut;HrzJ6+a$p@oae+%_pfz@x`E;kEA#rZ3m`; z_IraES@g+s2#U-h*gIyr?5ZVX^=vo+PC5Lkn z`sm=s=#`_OCH=6K{h$^FxSKxOrlfkCa`cAO3{XXeR;APExSb)EeutQIq16hc5sB1y z!c{TSD3WnG19YYm_|!#wT{zHmA?oBLK3+zunUR@!su^heMN*=vLE82yjERux1LEgI zkYgDNUW`cEZGXQo(Lm%DeeG6kpWfN_!=gtavA34$wo$IiKfOz z<|gJzhURMT15}Ad5waSr=`TmS$#T zYG9FOkYt%;VUc)X3gb@`oc3vGK%~&t*Wemp!6goBu~O1YB4F*uIDWtj`w+mxDDl3Ikbc}XihCB?%@pe8CG!X{cdBUM3_ybfM{bP><@^L0gkVRG96{x}=?IV#Ha_D^|5Z}rw!@|JWI4Lp7*wP{;*~ln0 z`QQ}Bf4Emhz(Sw+h2LlsOsGqjiQa*NwK^nWOA2VPfX2#k&t;J5XF9l9hv*2PgJU#_ zKLrn#3?WnYpk)f6LsN>atin>0!K>Wh7xq9@U@S`jE3yNfhYh;kGTA6GHPO<@D9t=I z$;8Oy&=kg8$RsP48RoQ7@D`Z(nwqDXCm)@{I1P6eA($fwUDQ3AH%9XYX)VG5${SWz8L5UQiKzw#$tDJ= zNy#QgsmG=;-Xq*^L2DP0G_yu%OdGk?hrFeLtYxm~%fOIsEd*b0h?-TAWV2H%t*ks# zU{_|L4j@uyYDi{DPAc|w5uife4&8JDW8e5^W629OYOV2tjQpVnGRm|Z*u$W6hDt3! zqY_k&dr;3DRQjixCR$jSr5Yw$niv`-nwTD+!U$T(lWJv!rC$PVAAu)Auw4U%>_XU? zX_z;>f~_?%H!(9XNHQ@rOiQv%u{be>F%!}U!D214vB-%Y@0waSFi0{s zN=i#fOtef(HA^}@h4BvVtOG5U&<`a?Em`T@>Vgy_I7Ut&_Z*}af$kj6%`b!88{v_d zmy(lOWP@XS0d%MVp2+R&h)&@|nh41@@Xa>F55GdjzaXsuv{P6xs%zMKBdB*E#VBd% zatOH)PsqT1f!184M!?{)7B(E2W?^VxW|m@NmYAHJY-x683gcFS84NNI5}ulvO}IK5 z9T)+%-iXekB<6sTqkLdGe>!T=It5C(=j10P=76@ZWuzvjB^nzTniv_GCK(zVnVy}( zxB++0K`%rpyqSc$RT|WDkb)a_@&S!!ut*$68*Ri5#YP;;Vgyio&cN8x#Kgkf%plp+ zG%d;8{M;1A5=aXPOLq^NEXnI-f(}z~NzExq1ZP(BRO2M0RO6)7ltcqiPwe~@#vGjX zLL^Xoet6HI&?qg=tV-1Zli>5LG7JnXjFVFmEzA-vQj<(f6E93*^hPfNpjWvi!)|CP zEl!PxbC7nxT3KZn7#Wx*B_$gsnH!oWnk1TEq|7*@R6|osi$t?D3xgy>BLj;|lo@Ag zZfusEW?*WNYLb+eYG8DE3ZpS34AGjsA$C?)nZ@yW`FW{URvCs#MwUsbhNecADW*xO z28LIN(`IIFYLS|1W|)$il$KjOZ`E}y7B_<`C7+WS;q!}5eq!^eO+<@;`25-GiE6qy=Z4I`v%FHbQ zU6Wt~q7`6)2D&!^uEH(PKQB4e#?ek8Ex$-X&CSlrDmgJHCq6$f8RS3{OLJqB)HGv5 z<0KQ~G!x64Qy4>S+)DG3L8pDf7O27pOF%cG59 z5wxiS`#>0yspyUcEf9dXwis0MrC3;|ni{1go13RvTBaDA-kZW$N{nNRL08Ryi$L(D zGfw#x;2rBWcx<+^f(8>fl#I=dOw-IQ4U&>mj4h2#4et{fj}~dkrpAUTMn>i)mPyG* z1`nn%_A=shF+?J!KBJd3r`FZJ9RvAVXDF#VNDHcYS zCMhW<$tjPC&|_j?mSSjbo@kMrmS~u0V)=v!J!yuOn^MQ?XxeG} zmzETimMGXNV7G|W0D)W^rwwsmZeme3C@%z8<|U&Gr9v0$B$^q6=9)|mOw%lq5{(R> zPhsq&VS0c#3@zZ&%uJvWnVOWEoSK-DmSk>_m}F>b_+kp0ILRYZc_Lqz0&)R7$E zCZ?eCFf2@xQVa|X(+n+N;+qnnIRAm12riUUl8g*YOpTI~%uNhZ&5ev+O<~+b(~t$( zj2eb%W+o(uR*IovqKTPBs)41Esfn?H;p-`k9>N4=;iC%F= zW^QdQXdzrulBv0AlCeReSz3xovc($;%rZ4kOEWbvF)}wZGBi#~N_#njZy@ck4QQ+N!-|RlEHo@EOidCE5|a{B%uI~Z z%#43bVJw8y5?GqcSlS@S%LCF&6N^$Z6Z5RB9E*~J%0Ww0L5G{ULxmyb8z?qSjV&#W zQcO}Uj4YFrEltdS;yZT?i>0}xC8-rwR=yw#Y&!PFqy}`J$s#!=IoU7?bd#NVvayNj zuPJ!0$i!kD>S|lKmmvNDRhA~^#s;Zr7G}nli6+U0X}_m17LgK$xXg!`fwhHfWtEYb zVxDSlWSE+ml9ZT~YHs$2h~Z2~M+ZE41~D8WkXVwRo0)87%snI-8yY5A znkAZBB$`^7n3?{a!ngrh=N3RP(!$YMdpb;2ocilHNHy_+9#vZAlN>T^i5a@7b zaY=qrB4~9CsGAcE;n;!Oyh&!sCP`){DaOgBiN=;mX8)!zE+@g!c)NwjT{lRmVu>>J zP8XhjSgL7~rMYohQj&>5vYDx6(tmu*lAz%W8BBnN7-R=UP->cUYEBMR49!X4tO3f3 zX`u9zVrgicoR*YokYd&_m9c|_fFYP$Y@iMVk0OB%m4xz9=X;=iK4WtWQ$sV8L`$O- zL-SNqgT|?N?wZA7HF9BuMH;i%03{}H`mitq-Orh7o|a~0VrXid(lnJZ3=)^b6@xg8 z1`lN#S{S9J8krlVBpI3|SvF6_bH*aXN=W>L<`pNVrGldn8fFB;(8?;qGR-W_(84e& z&BWNmFwr8pWh!Ge#8fOEftm{`1VFk)EDa6Yr!sCK!3Qb$hOdyzDdOBuLZM}rWNMaVZk}dnk!WdY zVQA4Ym9YW0!?DCOYC1z&NJyMh!MWHt&D1!_+|0n(#MsQt($b`JDq{_0sSnjvgwkJ9 zvZZ;dxp`7@qOqBYS(thiC;nG)sc=q>+(vl3`+EYEq)PrKPb& za`#lm3Wy#uiv*M`2{8%Hc0~1(3>srG2ld%gEDbCSdZsdV;SLdqSs2A1L>SEqQinsq z3B)qdGA+@}+`!n}A~ns-*t~ZtV7oW$eZsbXW>? z=NuX;AwuDm>VTq7+YAFo0wXpn44NopGs0E zi(nXGZ+wzo5rCr4*wnzx!q6bi%s9y~B{eN+2B}FKIVoXrIgu$Jl+nNiu~Blep-G~7 zl0~vbT576U^317>$&h%#QV>HVK&Js%St0JIO9PL|xs?{D+9c=aXJ@8bSp^s5WR^IC zImKXWEDe(kQ;p11%`6j56O+v>W=&cwDapjp#3CsvCDqc{z{Gs^ zRL04;U56#q2}BBNmP2Y|LIM=6UO{B9RAbBJ-Pr!r2%?J}f{ACwHuO+;jS(&G}8!^|wqP0bQ5Qj!ym zl8jT+lIBfioJG)Sh`I_r?cwQ+VQcpg91${4PBk=3GP1NtNli{MH%*;Cm2nc0&I1>k zSW+Kq@`8phwnT-e3^hnIOtCPqFf=nywlq#QGg&Z|aR!mj!qI_8E{U+aiKyxq6s3lS z#%8Hz$%bZ0W~qiLmSzj5GS0*8ID#QWpw1&b*@4!7SSF^KB_}5uBwJXfC0Uv+n#y>O z6Oz5L6r|{h47M^FM!Tk^r6!kPwBOJZmrs6jVh(J)(aNeku_QSIdr*_=C(x}j(C7h| z?x1y=sh}k=@j02rC8^-`O_*YkSxZRDD~6vC1Kr~R(ha#p2XuK(at7!M79Dgu$}{s) z^2@EPLW@(w!A$JCVIctvvB=8GzW}tZkodhr7`Ens!Vz@qGRR9%4vJs!%!i^F295zV zotR>yQAFV26gxYVP(_LrD=Q=pT0rBRq{c98G$n&pB7kRMaRwUZJilSGiD9B)N{X?8 zQEFm}k;&qzjQzMvVQ8HXsaSE3v-jDQ}LX8gHIkA^qB$dXXY5=ly(#i_UI?7Z-O9S&13rpi93p3D}EX$`dF2J40AT~pq zl1TFw5Mi|H0jnUX^&(_Ez`#5?$t)=;(b&Kw)xgLgb;VSCE7=G|EP>_-C~^r7_z+AS zpk|bbWujqHTB?O9cvK}ZaphFTF5HWl=;3V2GaS}f1qGQMjx*{Za-iTaG%~fYG_f=R z4MQ5F8JVpjX7B>3JR@OL3r`7Vm||>TX=rR|lxksMm}Y6PdMe{w+zB2_4n^*JV(H_- zQx~Xv2(VCm38W|;;B&H;%nI{{WuAj=d z8n@@MLC8j+EO9NzdM4r8eT zXaR9@npsMUiBXEFky%n|a`HyfX8Q0ZB4l@^nVFC<37cq;mSSm{Y?PF0nqp*XX0~Z6 z<9jZM*NEu+LVLCT<=|drd1eW<`mpFV7_4^ym+LRC~C8GbRcB3 zmyI!g039MCYcK+%UyalQM;T^9;b7>>Fab@Fni-fInwTURrkR;-p31nAnl&nF`v);o zKtdM~sSRn7YMy9eXlY?!3EKahl(+?N0}W+V5N*Q)Y$?B$6^uoVMg5>UKh+}H(lXgF z#W>O2#KO?TbSu88FpMgnK%)e)^ufT~+}J2BIoTvF&C^72{mT$_QpnVF@rC1?Y)xrwQ{`Sz)dYjCFws12Y=SyJX^AnrixVw2IE1_!*E zWm1~CWwLRKnUR^HvBi$5j2j6$7!m~FfhF{Mo{Cd8c-r#@7Ks+gDduLTpykM^hUPn` zGOi=&YEUqP-3$po$jAlWxo?ug6pxe5O;XJgEiDaFQ!Emb(=1YVO=Vm`(8)*vjU|nv z784{F4tN}EX>6Eml4NY2Vq%XWKG~_M=Ssi1NgC3Ioj4jMT3)It+ z%nXdvQd9O!Wn7Qj-O%iZKai1oH`s$1T4Lf|$$}@W4a|&;jSUUV(hQB0Q%wvE_fBQp zirdXt!WuOhkX2id7usftrsl~;28pSlQznfJO!iG>+=JWY=p_aE7%P0R1XNsO47y?8 zK8Ifqv~z=dhd@eVnz^N=MUqLfxly7~V)A~xK~Ge2L5&RT2?lBqp}_$=Jc-88*wWbC zC^a$B&?3VLsJ=V5a|Wbm=eK^j6LnpA$mZ~f@BK=OM}Ez zBU6hsOS8n}#KTh=?~>p-^t_IzRRBqw6gFlsiVO6tk1|^it|}6ZEzL}l(kv~_5-ki& zk`0bbWxPy+4~ZVlp^E=V7!OJ|wJ=IHGchwUwXiTuHZ?ptm2nl3{sK3SDDxOBrRCEG!Jt%uh~bJWfi%Kxvr{8j-+A zqv+){@+M9^8PV80$s#GyAk{M2)Y8Nt(c~1~ZZ@=mUOI4RIAo-mS(sZ|CM6jgn3yG6 z7#W|Q%6Noe;FI2ArAp4R!&hEg8d+GH8Jnc07$jPzr5GojnaX$yw@1*^40;~KQzX$o zbAj49h9(Avrsf7lsRpKorskIqrWT!f^M)l}WY=9D>X^Mqu zs)dDVT51~T1Y46UQyEX=_9!&#BaJQ)9am7T1WFBxBhEO{$TTg@EY;8=EjiI3HTCLL z#uvE#gI?;PSGoj>c2H8oDCYQo{qby}nvm?WkeC7BtUm>Zc{8eN~tcoMew7wHKN|BeCXn?lQ zB<1JlXi}UuO%shxl1x+5EX~bQO^uU{Z%k$ULW*zDQ!Ac28mr$(E#wI%NR*)>Jf$h9 zv1MYJWNK)UW@2fOWO#Eb;|JUx$5O9RwGO9K$(m+iW{{F-3OWbKJjpE8^ww0y_qaWc znRc-R18Q3Zd-YCx-{Fa9i!|dz(?mnidCDoK#!0ESr!u}G#m_|7CR9n^lxJvzR0|X1 z#6$yg&_T{A7I&sHKF94{Xx|!j@{63q6k#h0sJpfRwe&^jWtdx-n_HM0CmI`?8l)Pg zrQRLJeoag@PD@QoG)XnGOf)nwOT9-QzYfHCcNyl1mc}M#X%@+;MrHp1H- z14HxVr&Aes;0_b?yp5i+C?6)KLwgu&Op%)WzzNF8$j~IoG}X+~DAm9s)zsqIRK^b6 zfd@?t#P)Ylln<8D2wzGvu{1EYG&eC$Nwi3{NV0rBmGLs}z<{={Av0ISsqv$mr*Uka z&M-DKFt`Fl|x$FB(-R9n}uGtL0vLH?Oa0>1CvA( z3ll@rREtz26XVxY8PDP_O;PF!GTSOxLx$vPk%)d0sb)fAnc~qOLnDJ^!$iZRR3kHs zWMdQKH&YoMA%4cPqzCJfW1uU|KwS?@Lqk&&b29_O#KgB#8D|l{FbJBY2q$jxf{5~r zK(f7rG7U;2oc6s#<0KRFv^0}MV~a%4PF9O|QyKkm#xZ&m1mlz-P=C|VG|AG~GReT$ z#4On$Ez#utRK`@CCZc3RP?HTyw-0Sl7*vdb+mgnKre;aTW=0kkmX>LTW(FVdon4CV zbokb>(Bf2Zkf#W|)|4VrXe*k^FHgV+2k=;79^~iDjATi6!|( zR#tE(D16c^6HUw$4U&wKEiDX$LcCgF_Iob~# z8ipw;X~~JE#)iqsX2#};W}l}r#zAyr$*ee>>`{`N>a(Ie`nW1rF zim|bwWpa{vs?nFJjF~uXfJk7>#pNWHlz=AG+#n3x2NfDvn5CwgfseE_G*2=z`#P2J zIPM#cQDPTuqgrxNDrm$6avM)Pw5N@7mk;L2P|!2HP_|rRpN+r~lB4@rDQ+2I?Dib( z@Zjk1APxBGXlPXgfmQxjLc0<(oBpjQ;ic1k`up^Ws133Vw#1qg^5v`xn+_;TIvt7 zOtCabO*2eOO-V8`wlpv?H~LAQDVBz5=7|Q0mMKQ5mWf7|zsNEr$tc+@HPP5K(KOjC z#Ud@~H(92n8mE|An3^RSC4;WKHM0COmC*r9U5GqS42m1b(gn~RqE=QJre+pKriNx_ z7DmRV$tjjbf5|Yz%*@E#+%(C=#MmM!HOa{I9~ov?8l)MTrUxtD)1-!Jq=!d}nNgypd2*VOxp9)2fmu@HG)5B~&9D5t_~e|_#Jti1 zE31rD10zFIb3;?m!ZkzF)}TBf8}BsNcDG=k)_V$cPzkUNWu zONvnMEH+FwG)zoQHb^nFNKCUZG;f(k)D6}qMoGzuX(>sDCPv07rfC+f(-`X^mSL&y zGZKq4l8W-n^Q^3jK^LcbBo=1`rEM#Yl2k~OBiYC#(Ih#^)WFCv%{(QgZ5m?}?wJLUSx`5C*W!TO09uIyYs+A9gN7zC z&M;3gurM+(HBU7(GBipwH*259m_|%U6eX5hSp_AQha@KDq=IgDg`Am;)g6$V)l&=% zlZ=d#EG#Tc&CQbxO*^K+3Q{a#4i3P~d@HNeq9RZu&=o|1+EGTSpf$NB=7uIIM#<&| zMxE0b18}+*-ISu#f};4+yn@8!Y|x!aL8%3xPBu?XHt(Ls=#JAE+z|&hDlsKB$-q3-IN8W3DKRCf zXBwVc@1flQq^r0=_b0f5?=&5trY1Z@gNW%oER;Q5>rzwj8jYvOwx>v z3`}~bG5X+ix(05y>u6|#s?dz&q-29sgVZ!LlT-tXB%{Q>X?V^I1jkZxeojs*_-gfH z(Dhu!8AN9`um{r8jEqu}QcO(@Elf>P3{v~25qIagMOvDPv2l_?YI0Jtskvp^glUZ5 zapyuvkf68A!5I>g8H-Y_te{tErxYb-=2=;}fGC?%3p@A@lwvEZlA_A^lA=V=t=WF5 zWvNBr3&NcCB-)8@ue1aR#qUTsraTg!HLY!)D)b=j4drJQjHTQPGj_f_z+8mgh=4< z8`v}>OJh@G3p1lMGgDL3REtT|7=O_sB#n(o2ufokJJhf=HXX~N)3Z^kWvWH8iIIVUp{a4Ih2a$1gr*uv3DeLFH8j;o zN}47lgr=E6lCg<_IjDe7G)cBJn@V12g1iSxn~4^QNd^WkE z8FCXe`26Jz^EA_x6bqAN%QOR{)TFeunbQ~_(L0C{6$3e8jL=O)Y@%n~Qd(6jXu)h^ znPO~UW^SI6WR_%*Xk<1EUlSVIEJQni5!}-?vPd;EF*G(vHa0ReOqx9ak!5HGtHsHP zEKsoy%}zu_7Tszsw8%0CU6Em7lx$*Vnrv>EY&d5Cf*FyjX&%hzd4guu8CozWr6d`f zgBF!1n;BS|8z#>k4QAZk0}`rDv|vt4OEoeE-L7JpXq;qekTwrr=N4M@6eX6&gV&-3 zC6BwAUOWR~QlT3LmFDChjV zlGKV4&}1H@YEDT_O9W5oxIh?opoQ*Gp$vqa;vg#M0c-V8Jv-Zycjm$q<7f z3p(H&ByWT6R5DLAvrJA&Hcd27OENJ}UI;I6NgDi3wMa`cN;Wq$H!w*xH#b~_Z;S=U zoCs(>2^=1-IjM*lCS(y%LpRmP%+$;x)xg{|DaqK#+;A~j?lnuYFfm9;Gc_|$Gc-?3 zHeE7}(G3#zSo$(0iOCt2pgwzLN>L){3KJ_U=hC9$eDKJMrIA@`a*|~#=x8WQvlPpv z(->25nuN#a9;t~bC>}==0QuXUu=tuzljv|wfB zmgk?BoN8s2oS2gnpATkc7^NmBnHw4yC#NQ-7^I~oE}zDT`v!7Y(oVLr!g10d4sU># zAX{01NXQynOB2xeNQzlvax!Qmsl|$Ec&=-P_yuy%9-(umAk%qPR-jxHUjUw!2uZCd z2`I`hfY_X7kOCTVH%v}8GD$T_G+#Ll&y}X6+Z>OQhu!jvazWFUMG(7|Sek5^hVLv; zNScC_+Jveq+yw`YY)nKe2vW}&B$`@S8WL@zrzR(Eokqm*!H~QHP6!kQG0rrK zCyYf@h>{qfjgRm|T$-_^u~C|VnW?E!N}`dO!47=0D3G!hSNZ^TIE>7b(#(<#j4cgK z%@ZxmcH-+Q;K*t?@(!r!32T5_S!JXdCYzgC7#mn7o2D2W7?|yv#^{IMQ-bcLD=tkc zPAHP-dxS=EnP` zF}i^Z1}u}6;Bj2oth~2Qm`<>rl~qw{33w7PBh50!*u>b zO-;;Ajm-_xKxfAsoW__ANvc@7kI*_8-93cu0!4C0GH9_T=-MgJMr;cUvqNNzN@PMt zCCrU1l1x%9jZ=&*Q%n*~4GvFZ^e5HT8l}aVRjE3e7Lb5QF*QgtH@7f0w=^|3G)cBN zGL3N=?wEmC2Az0-4A+6k_)N$GrGWgL%G~^-f{e^$@G915h+!PC<}L}>AW<ax*`Ek4r z4Wwl}v~UqI3w~0~lR-N#jm?Zxj8hELl1@xx?4@&}gd{#|1tUn>GdD3bF-kNuOtLge zO*1hwJ2`MJGK07%+0-b>($Fx~+|0tr(7-(L6yA;(Qlz4-ilS0N1Fxz9wW-WOBd;l- z6_?4NgYJz^Ps4Wsy$!T%#hFb*bR5yEQ^;~v(CSstuqt@)2*iQhMh1>I9jK{L$~`AP zDKQ6Jh9sG!m?j&UCL3BB85458r(M+&Z4t-AdM>{gCvtQ3rkDzoykT?CYPq+ zyZ8XfKgG%U1*zae7p<&0SL>3 zsObr%-3~4=&CSv*lPxVR(+pB9QcaALE>C0Jk2`fi+IyfTA@ceW$j%(t;e0Tg!AS^P z%M4tE+hH{2vBV(Zz6aP37AeWerpYD-X%>kFmZ@nbSEk|FkOd780ooNSbIeHy+~P?6$jF!_X-MuMSfvZX0#X|aJ(a#B)q z%8hCGZn(f3fAB(dFhrnna#EU6GN{LEnU{as;|*TXYe*BG3pWW z#vEYPCbV!ts=bX&lTr+f6H`)BP0UkM%u;U=GXx1PoIuSF@Iva;iW1OB5_I_=v^$Mn z27}WxVgYz@P9|uI8KMf@R|l=KB_hJpQz0Wf@ky2O`9&$IMX4$ADPXgZRwaN+U1Tok z#PT#l%Oqn{%d{kOvoxbr!`ssspW=>3?DYtmAE3h!D2v!LNm#_530j4Yw1_>^0;A4> z##o-f>X`sDcN#;og z$>tV@7O6%Scc(GF8EWAMIw7(kzc>@L@&a{e&<->BQY?%NQj&}<%*{ZX+)OR*O=EnG z+r!Wdg~$+~wvC;Y6?O6iqU%G&<_KEGNHjA_N=q_JO|(e1OifHRzdw!f-4O9Fxn)6W zTB3Qfv6-p4QKEr)TAJyDX^g80t;B_tRNxIM#a31z9%P9#sO*BU((;SqQxlUjAPZ+e zTT(C*2Pnf+CuPvKv_wlH$*E~crj{uwCdMY_Dan>852rD1qkedSat^GX8oK!jE$9+W zlah=q(=3fs5{(T~P0}7sW866sf{x6ri57Z>Nd_qv$tgyb$%e_sCdtN+r!k%(6nfCQ zj9R-A5EVKo&m;FLheT@tEkIKYEJ2-U!!#396O&Z)UEnGo+ z(2OmNEK`$=j17`fjGj(o^nipO@zZ&wW+tF^YX;~tSd4d9V{BHR#=UtFA-l#}X}m{;tZT9T2U z0y?w@OYhm7pod05A~Bt?(N_7+;%l4xpRZenJZ zmYQs6YGiI^{%RWIVG1J+(XY?}4|Wn6e}soS$&S3?*!V+_N6XYS&^hrYiKeD$#+D|p zr!k%!n0TaZJ{){eNtAy+#Ga8C(q%?`=g@O3uErj{vYW(H|VhN;E| z<|*%{F(yFT4p>?!5DDlQU2%RQ9Fg7;$ zfN$3f#1W|e$w({$oo`Z{o0yXW@uG8nK_zt36yYZ$3sVD=L~{#6lf*O=BlEP6(-?~( z#u4u)bT1)Qjk)<{sl`@SAw`+VAw`MFpk-`e?}1KyN-{FGFtspCv@}Sz_%sdA8HW(} zpn4BybfKj=vqWPv6O$yPG^1pbWD9eX&(jzSAm-urAI>y~?ok|ZmuzHUX=0ROVwPfN zV3?Aa_+=WwbN*00hd1ufJZNm5Vq$J+YGG($m~3d4n*0^-iVIk(#N4`sv`!nj*;bTV zoSK>fK5`@o#th0!w*je%PtHh8&PcSfg3-7j+ zA7mcd)HK<^%+$~@$=o0@&CI~~+cY9>&&7IyE1g`8XYH>!Xw2QfAT`y{Ffq|0Iq^G@ z3riD|Oj8Y$4Nc4qQ%wy_42^%l^}!CS3<4ioX%nL33O(V#)igbW)@~fMn(n}X@Qfn}B&S#yC7T;3rx}0_Aa0z_ScTJ!w9=B&qSRtg!H}1inqy^^lb@Uo zD*h{d@{_ZnQ)g&hNhiDT7Hp2dQN_R zJm_pFP#S{-0BF;6ZfbsMi5oaJtgP}<%TYV>R#xB^RazcoNfl~CFvBFpATiCr$imRV zG%?MorTUr_vUaX(nCMi96p7w6@B`C@Cq`Jkiw1)HJz!I-?%AdP*}hf#p=tnb=lVX+??2C7}A! z!otkL+&nea#MC0yz&NF6I-XPfKwE7<84z@2L2jy*RaUW;6?6dtq`EdtG_W*JGcmC= zOinfIosQ>JJ#0n=q!y)t_D|;}gKn?NFiA{HGcYqtH3HuZoo3!Q9nXPnU|&KKQEowQ zGNgPhva)i`D=Df374C@!MoDIAhAE%}sS{HzO!}we*_#hdl;GAe%Ax@L)`09uHc3pi zNJ{}7@CvHsEGJCI(+Wp24z_1Cx3na+!ph1QL_wD7At^%f8no`PvdS>DNJ~vNH#bW$ zvouUIG)S2^9d?2NxQqpz_E40c6Q7ooUk*ACF|VX3KgTU6zud-2#~IQ}NGeKA%m!`9 z0-foWnw)52W|(AbY+^oXI%6m9Ddg1h)TCl?wHIC-l$xBHSq5q$o)XN||&{awXDMseWbEY$H!d-Si{RHaj1|{Qb720SZa&~wzI1iv)g97mYfr1Xy ztb{1cO)Sa=xji^FF9n>JKAVi2ZwzK?NK^6rP$CoS&QxIy@Q9 z1Y2cjY-pa6YM7d8oS0^qVq`iGU-+ZMaB;Gg70AWlgMo1r3WU1iNXR?mcSTBKYND}mqDhLefvH7u zlEvcbc<%MU2nvE$SXpJ5SR^N>ni(3W8JZXx8k-m_nU3!mZwxC4hc>hrBj8aJb0Z6L z^JJsM6l2iED;7)fC3R@JLn=Kn+y#kaCr}q2R}80`7@Hd;o0=LVnHpK7m>Djc&KOQi z?#eBI<=xaGY-WR+Z-(Y+mX^lG76xf4Nr{GO%ctWzAOmG#GD_n#gv1SQ7{LG#qr=aO=xCbiG^cPQ6jigWn^J)n39%a4ypr;%?(Xg<7*dTBsYw< z9%ym5skvE_MOs=?nx#dOnOW)@d_@>EZ9z(F$D(A+!W(V{qRvW7G)^%vwMa=ZvNTAt zNHkwN9nX>aIO-^HE5ynQOo6gQN=k}Bno(j3=;V(yb5pZ*_&O6f%!D@;tgPTnklDtT zCWgs|MwV$7DTd}2#zyP$H5zc34Q@7oU2A29V1rCgNj6F{O))h}Hcd-OGc`BeKySTkOBshyTb2Bqj@OXEUQL<^OrRhd|QHjIhzMyNX(^H{NN9KVXZ<%bAYG{!LI?*o4 zJT1|D({wyDp*U;^D9TSSN-c&oEUm0ixF9=>Q%y`Q&5Tkl43jOAERxMP6EWa}-qpfL z`N#z=xFMC2mTGBcXkd|&Y>;APkZQhVI%5vbyaC-rrW0zo+UD}u(U8SNVG6awMa@evrOGFozaQNF+wY=wEUuUP}@GkFg4N0 z!otil*~rAw(%i&+Ct0SL8KhbmCMGAQ8knb=n5S6oBF_{6WNBexZkc49Xl81VY_w-Oqc>8c1w614UJS|g3W>!EkVpgfy|4|Ig3cyOH8i(K zOieUONi<8_i*J|$DLKJko_@;62RUz1&fqiNRJh=iYFHFsiEX^zpOifcPjVz2!%=S;mv&sOApOJ5E z0&m;ROw6;gax6*?DhG}EBLX2aG0!F`KR*YOp;OFLER)hwj4Uiu(~^xXOb_5IY_V92 zGpHd}fNEw#^JEiKvqbYmP zZ<(BYXgcFW+|ELYZg6{)pi6MaH=edtvPGh4a%w7QY~8@Xz%2RjbjJBax(d{e!P{6w zo*~Om&W|rjO|!D{PtLaiT^B{%MXum{VxDAZU}0otX_k^=mS~!ic4RuflNK;Tj@FLE z7rcha=E=zxrfI35&E!VrN2fEM#T~rp=X_ziC{|MkT~%sYS}JIYq$o8nCABCX#ti~< zUBQyzEAQaL-DQb6rKzBMh!TraQ$VE=%9t|>2W_(&_>}q-10y5TG{aOAOABK&<6}eK zM~SH^iKd3eNvWVkl4gm<$EV|2NDnzF4*My-pegG_lN3t}OA|u_6LV9GG~*M~88d9q zBdjphlri8h}b?qZGr` zBttWc#N@Qpq$Ja{v(u@4+Fe?Tfq|)|sii?`l8LEFis`xOjGmAh14}O!&7E#V`MIGb zX%^rv5y-h_rWTf_MwZEm=H^L>1_nmw$qzrvgGuuL&DNld&r9nVGD&=o9DDj2+&4&)C@OUtAr!!%P%149FoEd(b#X8nKBkwSdfrBpVwTBpN4Kn46lV zfwp>FBQlOGQ!UKQl9Q9nl8jT#4ARoBPakrJu~?WHr>3S@8W|fV8krjyrQVp%7(^%t z(Mt;G@=WjwTgVKdS*k^vL5fM5xml8tQKEU;O|lA&G-C_HWE0T&cd4KQEX{7=ODWLk zMRyyl6iYEONwY9aH83+YH8CQEsS3Bhw73G%)rKUlXoS~snsu3ux5>qWL zjm^yN;PV+)gFp$_$iy(&*di&(!YC=#$SB3)?sUd!xZ5o#Bfa2dOpvWK@KZHN9q=u+ zz&)y)W|5d`kZPG^Zf==qW|W+EZ#rWb#2>iJQSkZ*&|bTo)V%ooym&|-FgUfuCp8bU z{2JtGa}%Q^qom|C(>#TEz9gqCQQm~03dOiMI1OffYzc!Y114r(TPnuQ9Z z`5hF5X%;CaX$Ho|DW+ydDHh48kEv?9rFoLMc}l8fqCv8`fw_g@6S5-6%*-&+$kGs$ zctC5H44#r7K`BYb$*E~3CW)!0rl!fM7SG@gA~?(rYDqzoVMeM^QevWoL2|MI=y-br zgXhy3YhiaLKpOR+d0_BuwU9N8Fv+q^&?-V-(1ajprv$i#hGX;)eoF_GVFx-gI2WW7 zw3sH<1ayatVX|prT2hKh@(X;kqcF?ST;`IW3)-oi5|4VLd3;K0PHK8$325H~(xMsk zPDVzug;|=Bp>eWNl9^drin-;>>5R!Zb2ZYLMJQ*2*}#^HB!LS>(Atc0aAy;KQlqg+ zl0jlJ=t|>6Bco(v<5wgO^dJunU>WoPtv3J<{Gg6`7@HfVB_$h~o0u3IrWzWgye4v) z4fb&zxFyh070{Y#(=-diG*eKvwlp#|v3Nt`SPtrt2EqbJ44^HAfef^Oa=V3DYKl>k zp=DZXTC!1+k?Gs%j3p2)Sc+nT;}?h#BkUs?2zw2aQj*Lp5)D!4GXb02F@a$>v7pMkbc#X~t!O7tja)Itkmj3f`b88JB?q|3_6t-`4^GbaVKB^tDf+sZ1#D9IuvH95)1%qY#! zA}uN9BfhamkRjM^xyEI+hNcdF+fB_%PF)>R``7)ic7H1AYv7g8>KafxH&7GPgfyV4p6O$874Gb(3O}^q?2LW+fa%xVF zl@-!99*8hnF@Pghobz*YQ}aLzQ6LP+sBfZSN=jO4qG__Bkr}A%_Kl1j3%V`I$_hk+ zLe|_EbpJ)NiJ_&Lu}Pwd;rHoyuCj)PEY7wOEJs5s)Wp2XcnHfeuQDt%wH!POX#_gD z$22L?!oVcW+$72L2R;jtE-Wd{gCr>Mr87ha8fd3Tnwh0}ilMPdYNC;msgcpo>5N-& zx51%agxE!JXclXXLediQsI3M_2$Gvf7_Uu9HBU}5HZn0xNlr>kGD!S2ov{VC!@>0e zmXrIbP{pZjN>U-)sESjqtlUbAQwa_> z5G>3g0hE%OYLp1Njwsb6Db=)j2ICamS&cvdVUb2{Q4`s;1vxCq!qUvp%*4pjB+1gk zAknO42ENP1AVE)Dg-v!l3LJ@sNye#$$wsCYCgzsrDP|_EGZ;7E4ls<`h+q(5Z%R?% zW>8=n8yZ@GJLf6JrpBg5DQz*oo{MxJ~-EbyJ8qKbI|!a z&_yzdpc4#&EAx_rOY(~n(^DbkhH0X4lA(oZs)a?efsv(&X*=G?MhR3R+lP<@g1!7w zgBl2>kXB9_n46mp8X6gZu1M{e!8iwZxIyf|NQB@hr$NOIirC~N1EVB!BSXuS zl;kASq|{El5sMy==rtvkYXtDsMoB4#$%)2BX36F$X(py!GZ^zA!GxvdLCARoYa&pH zSeO_Z7?@cknj0sZrx;kIbkAU1j62GpQ4Xndh)hc8&css(;h7OnOExh{F|)9+Fg7={ zNVPQSnZdXMw>!aU2;xfYH6x*tm4X5U)JrxpHAu5GNHsSzPc}75vFx3JZz%~%pb~6? zBe%0b4GIz(*oKK_2B{WFMyUp7MoFe=Mtw7g*uVk_MQ~iB$0Rk&H9S#oW@?n2mSU1< zlxAdf~Cnw@|qf(3SJVsfg5fl0EdaZ<9S zrA5kw8H}58r(S|h6;kI#2sCYQPnsB-nOUS77=c#LCa0RFnNFO+xDvO!Q4%sZ#Sp!O zhWM0>C!rXDj($x`N;NSsF*GtvPMb6X-z@`J$_V7vD;8e{J8Qdi>O-ivy zwlp#_o;-tygH@0+D?#^DyXAx@VvG$f&CE?rlPru4%}k69EvL-DcVhym4PTOigY8(q!e=t&`JbzgH&Tf(`hsC zb#O_{Z;*xrwl*EgenXN6Z}3DssK8D&HcK-%H%?AXG&Pz&gK-fP#2r`~G*JJ5huc6$ z_7fEoq#j_7YzemcP6C$N>DUlZ0a`bVssys6&d$mz2{f7x>J}kQX@R2MB+1m&z|7Jp z+0@+3+|0mW#tg>kxPu8jB|&Q+|MEQ0d|!EHNrnwl9O__1sPUW zm`lMxlZOQMExb2WV!=&^(KM% zF)>KAG&W03G&ZzIH84y~nLQeMR!B*hKJQ(##g%D^;Q1 zL~2~37lQD{40u!v?0F-TG&3_p(^T^`b7SLVQ^SQbNZ-5WoRJ7R#wWGNC9xzCbbB!p z7vu}GMKdVh>SzjDR+?sNVquY-l$4ZYvUmn#AkG#Gfsh90ERaLf zQp`;a5|dI*lPr=AjZ+hs%)qnw3}>mGTnd>Yb;*aYKqi}-r5Gm~S(qiKrCC~-7#c5~ z!I*~AxhN3{8fhThNdR@sAg$eGBlFb6)HI6}Q&Z3xJm$-0Fdk>YX%$2QR5*c__rQkZ z!50z0Pvj;LdO8H;!J!K}K#kHC8MHS5aqMWhT5e^9QD%VJd8pArs8NeruA=fX49t^F z(~M0FQcY5lObwHbmd{{}futBL-2xo>!J{NM2U?;*#cuJjD{w7F-Quifn%DKWN2ZKWMN@xvT_FDleN&R1k|v@2wrfBX>4Mi z3fdB3l4zW0WMrJY3SU;n5h$>t!L2AU9ksB4iGYH~I62uk+0ZyC$uiNzDA~ktH5oR6 zLfkX2pcGb1LE->e1Z0zWih+S)nuQ7I7>hK^l;kxt@SL9ujRz9L4qOa?12DmST8g2ig@J*Esi{d?lHpc-?LHid9=hxrwA0rp*~mQE7_`~a%w*dPd<*KK zW{4GrA4626&>>`gTYKt$~I21urxL^O*FAEFf~Xtw%9QP&!MGIFN3=+khBdx z?Z`8)Bp)=OhcWm8?XD*lrRF6<)^U15j>$5&u&^{WPXe7QWRPr`Y_@X-p5tlJy_1re zn4XtkT#}hwY-JT(keZyCnB$k97X;l07nPp}+1L&8o}o#qnW2f1k+E5FN}6d}>aH1# z)i}cqOOD1l3XSe4s8_+`LWp*`rMa<13h35ALleUkV^h=JGZ>qR9MT7+D1r{c72?Rw z00o1&S)y@rQfi8&fq|)ciiPE#8TeLvL8BRxvcXdeRC9>2fk}$Fp*iS`M3bbXq~yIb z@SKWF&{o7u5pmIxl4h8iVv%T?Xl|00Y+_)#4{tCKv>s_*6WxATzE3RyrBQf}4^Axs zSDvXxsfLCrmTBhZX^APuh9>)Iy%q_ddq4>!E!D)>$k;T|B+1;+!qCF(zzjTxOycq^ z+?!TbpfU!|1zBL2Xl$IEWRPrPWMPn!oRo49Z%!Z>^tfXlpHD#t42>krkb0Z z7@MS-ADY2fhqFL{W(1viM zA-02=;8bUnVr*bxX>O8YW@KWJlx%v0lm!o1{N|rjoLU4vrL`!vASV%2x1e=B(u^#V zK-)zUlTuPs(u|Cc;%l!#{fboVpeHockq>-RA!(_`W=7^|$w{E|h)vUu&A@YLG$i^l zmd0RMj&orVwC2eysRRdesu}1UAQXY-DbfVw#wkY;2mAcxDFUP7+!dp!O;(7>cc|kPpuX z9XO%wUs_U7TB2YJKbQyQfE?`cLqd}lbjFN1XfD@0&D7E))%@%X#$Md6r=Ui_Jq3rB zaZN2v3@i;24b4H7RftT ziJ(*jI!(I-d@?iSbO7i4JP?^ zDW-;rX-TQ6rX~g{X2!{um+&SXOy>|x-mp~|X#08b)PW`@2FVuY76zbmU=mG?4KEY# zBv1(rDjm?vLs*pnZcQn^##y)%5|(&E9`wN?joO36-EM`}HQ;&%+JOYs?1`3^Y34~5mZ=75 zh9;I~hS%_}@`VN&`k)?E7^!7N(4j>2EI|%TGqXrDvNTS!G&V_0G%+{7j(3$W7JEqw zKRjhBjsUbUF-|hJG)=TjF)~d|wKTsmgK;|U_{9tA%={78(iJIJqh($alh`F(aaav+ha-zAVWpbji;Vrz&m9aR6q^QN6HDJXK zww5R;37T3O8JL<|Bqv*1np&DCrrn;wxCD0;Q|eAUNf2Lq4eU_kG-E?^&^0V37Aa=Q z=643lp@c#-EiJ{^(#+D(+``DnBF)h9F5Z}@M#9A7B0MP+Gznl~Y>;GVl$d0aYG`q9 z2IB(UF^}m^Q0AsiqXds5Q_?Jrj17#FEew;AQ!LF5@6TXdO3;xw#~d&{fh9qcTna#% zc!`E)DTW4V#wKYgX2zCDX%A*FuEp(AEcQ|`ACcl`$xEHtck&+2`=?~~65#PiD=+*-oB@zOM zh*&13Bqk+VB$*^yT9}xcTfUsZxCgfnXr6jttqf=f7Bou%X5vmk#-@phMi!rS-*o1o<6Bfsi*;gAxNg31uOffgIG&VI#Ha0gjv@kSH z`aFZNnRdZ2II}b;94tYbBFzj_jgwN%O;b`$zRbXP4>veDlw?45UFYN{C+1jL`G6?z z)JkZ35i*Mul$r)!q=_{rqnFaK))l;Nx3YpQ5rD26wX?DUZJCRQto{X^#f*^&@EBrc z1wL;IX^nx7258YRk^m?u5)I7_EG&~O5{;5AO^nP_zs_LHg18^cdS?>+fN4F*Hq#WN zVT08k(n?7^EiuoxzCv zhFC~gK}sE@V+~+27^tD*QEG8! z75qRpX#7Ek$WZsof-;q%fvI^S=*ISBvs9B5W7C$IjB5!rrzmblK-~n16;Npl8aXb> zD9SI7Pc13}ZMFqpso{~IpKS;3sG&C@P}G7>kOymv&&bcuM)4tZ>lxZY7}BgqF%T4D zmL{eK2IiKAsisE8CW&TAtuq-52xT9LSK)mr6!*jZil?t*ZfTxoVwq-WU~Fz^Vqk31 zHj^=uI6Daiua#AXSz3xEXt#)=d9tCou~Aa{Og!5%AhtqEZ71-7-a)BppkPT!NlLOz zO|mpMG%x_2uF)|Q&!r()O@ZE(U}9uom}F*@m~3H^oMvup);W{09e4W**(9V|1R_jP z#DhF#Zf>4tWSV4@VrF7uVQgyFH51P+43t>KlPW<5TUZ#Fm?avTTBN3>8KxRpbkD?d z?gF$7E4H$Nq$AMgD$ofK@sONY3_4Ohw;(4K)awQpBp@4%4J<57%~BJS%~FkwQ;aQo zW)eQ%u^={R1zk%IT0RJ&-N1ar;z7*8OYmLkAU7pirllGfnwS_G zm>U|TB%Aflq}E1VgJi=r6H6mQ149GDRCB}BzL|_xkTig$PJ`V>3(k2UccmC6npzlv z?f^HoFgHpu?w^V0s2Lo)%utUmH!v^(otbZ9WRYrSWMG**VJ4mnQgE0Uo|%`DUv6au zp+W96FtRX7OG+^`N;5S`OSCkYIFs~^o#3r-A&HPnD3LfI^V2|AFPJA9nwl9VrJANB zPMXQ+g?6!JeqLE>QHhmRa!!76X;Esil~ufzRc2mUes(HKNeSA!muhI4W@%w;WNDd} zl4xKwc_yP7Bu+{ai?gk)3i3fGS_kCkWVjPfI9uFRu4oWNsog4(MKtb*bO18lW4_vMSSLGSTCTV7t zsfLDWrpAeBhK6P{W-_)?r+6pIA>gJI#3km5W~oL-hQ<~K7Rg3N7REDY;@JX2l;O_# zdByoTsh}tTWhVV0ISj?NrSc6kLRDwFSCnT~`Qj*OrQd2C} zrLk#>S*k^HN@9xf5@Om+jzvX@pbIZEQcaT$j4dq;Qj-h}j11Dumd<2^4kTl74lD-; z6y@h;7K1N$Nwu&rGfgo_Oii&!GEGf3ST>W<7N>V$`eDTa$ob~RMkdLo7G}xGsb(og zsj16nGCB}60PK9H(zLYHB9IxW=4M8Qpjkl6#N-q+le85x@mvK6F&vVNLHCGTSwXH5 zx3bDeGD}RcNU;C`OABL5qm?rmy&=l+1O~h~gBGUnK6-{pnu$eHigB`~rAexRSyIxf znT-A<8wYOxK#G6x9jF#2=AbLplguqlEK^ce&%`q{2Mca!blIS$rsB$CE344Fl+?7$ zyi~~cZqpH7&)|+``zGYr5dIgr6eXBrzTpMnItByBSMdvrMbCfl1Y-GsgaSTS)%d!nT#H=P=UuABq?Av zzrdHgC#S|k5=n+xqPdBoiG{gIDrn(qiune7ML9HZ&~|-*l9-`kvU!qmQc9wQrBPy1 z;zoS^>*Ca+l+^gF;`}_&jlzf_6;PTtNij)DN;NXJFg7zZPBci{gwHwPu4iUGrYWgL zMg}J47Un6bi6#~n76zMV;yD}&-ISu#f};4+yn@8!Y|x^$pwt3zZcIr`H8V>yF)%kU zPfIpUGTt(i(HUp5M>o^Cw74Wc7vw=h0}InMLnBiI1B1jwV}sPKGw~b@1`TiY@lEIf z5vGY2$%*D><`$-jW=3g=$=hb)Iq3#hpnK*PiTAW&xnV6GVm0DzjED7o}fmd>Z7FmFYSyPS7%nVW!%~LEbjm%6KCwjynM)8=EIt7=SKN zG)+u2wX`@elM%Y!1QK%KDQ?h#J>dD}jHEOZON%rUL(5b{^E3mq29gUPagWrqfe53G5<>(bbvvX6hcxrRE;ltwHZxC5OH4FR zH8)8%G&zB9mJZrbh(|UtK0Y%Kl76hL5=-)PGn2v1gd!^|M=%d!7w9&oc_l@axC^nw z#Kcrkr3<=`#?Zvj=+sQcM2Nq!ls!-hkRy>sn<18hCM>{ifJHgdh>c;Yk%4(?TB>nM zYI0hlk-=%Qa$2HkN?Mwkv3atIVX8q&qQM#RbDEJ+Qc9wsnORbzrGbToVbWQAB`(-k z5Km%;EGS8*CYzfWCYqWUrCL~|nk5>Z!#50#VOla|OEqXR0KB&vWTLroN{WS1nrWg% zqOqlck?DCNhI}9{ghvB}3vn>q3TT{wE;+RT?F3CROHDShNKP~{xG)pXfu7J30b(TF z2DFF~fT5&(j1WRj$>7|aXr5wXl4faao?>8P znQClu3Exy6l5wz^qO`=HnK=DHnjkqx@TyTWSMw_2t6jC z`>|6^OpMIT4J-_kjcyX5C(#h(8PgQdsb7hvsfo9U&|{dKmSSj{XqaS{mYisAWPW=l zqct=MLwm%ac1dPla#1Sih{^cklA`>)^!Q}xt$>v7MCU;2Fo@8ud zlwz1-X`WY&8bM9_dyVoI7xYMPnReNr?VrzM-4nVMN9o2MEXSsEEWm`TKeX3zkI zR5y^?AGW>`?CRo@qSVCPVk@iiqRbM|W!>P`U4DFNUP@|FPGx3ZdVFzaUbdALw7di5 zU-Oidv=nngV{=fcZ*FSva3;Rn%OF-0m{*0h6Cid4XXa&N??TvVgJ&!iY!$$+Ps+?o zNl(oKjp{)KTlgI8sv0lT6c65)Ca=j4YDP5}(av{5(WMIjOQFHNF@csHj2hR9TV= zIXA}2ih|%K+Xl>VH!wD|G`0loQZ!0SGflI6KJb|mRR0hvON^3I4UEkUjm#2FQ&Lha zQ(nx(bCM>c-hotkNF82q0ZUTi&Vyb}Z(y02Y-wtmW^QS009v8_k}lotGz$}>M8niH z!&GA)i+9Wm6?Db51S1cqJ z=YpDQq%R5t244F|*F##>nOieOMHBYj%FiCqqld&FZHs%Td zhy;PegS$3BE1qDvCe1uCF*!BOz$nEqG1Vv~@xx3!$5KLj0U%FUS%KGz;;#q6jZ!>I zeGHO}LH90MSejUv8YP;We#F~kCXl*pJ#%s-K{@bgSYdq~V*(0rekB!tv{eek{0G>NhXF#KW8$|#oft+ z7A(--FxUa`K!CU{Jh3>J+@3LJMgt|)lq3stGc)59<3v+~6w_3rUo-KYV~OfQ*hxrn+E2AXa#Ni(&yFf%huOHDO3GEe+FlW`L66oni^WHc|) zYD?r$0=HriA!VFok(y?hWMpQVW|(GXX8dm^<3ildLQO`bg&Voi2})s!W~s&&1}O%H zpo^$XEiL}fWb7u^mB>L!YGOwVM|g@)vP@1j0Ud;GX_jPSnrzT83twc?C!9c2oT-*3 z7RlzIWtGOJDaj^{vlu7i4km2Q3QA2Qy62A;ICv77L6T__Xc8bfImsx|*x0yf7QU%A z+9Wa}T?=(!4Zs@RT1tCK&0D16E~@;hUSUMMoH$$ z7D*O~<}I`E4US@S8t#IP8tzL?HBCw~HBL)2GPg*wOf+kq#W){#3Pg%&aC4kA_mWe! zgQ7P%+1M!2Al1^)%)r<<+0dkI7ULY^-AK4NA?z+tIfAEOVVRU{m};Dwk_MVQGcYx5 zpT#(jnhwMr(WsR>9w!>5nxv%}8m1asCV^^yi;h{0i-~t4Y4J>qbCC-lSc4W6*C_@` zi3TRd;3K4sk_}BdNpdIQxW?@^v^-59%8d+-&5V=GOf8I!Q!UIb6T4HUPOcH7UgmbY8JV_bfca8qj3D;trHSZwgWGW_Nk+*gsRk*Q<|)Y* zX$FQpvlzG1Dp&|-TjcNnO;On4$si^sMnun9Q`kM6NYRDQ!Y$pnr@17kyjGz*I~LvzbCLnA}W$+H+|;GS(O0BsE` z$_MQRi_gg{Nwuq@-9H8KfGgB___8#n{LUY3pE_z`-795K${D(6OTs_E0Ob zb=sP`p^08(Nwf z8Cxb9nHw1z8JW$Vh37mZ@WKPoA_VXeR905t6`CMZOe_-<4Gj#E%|N%HnpvjJnML^q zNuyMYG|Fy8oEHQ>{&}?U1+6Ux4|IT57h?{8;BKoMn;MxKr-JUkF*Y$bGc%k& zi}CbGjXm-+`rs&SKm|o|nqjh$VPdMOp`}@3N?PiIS$OssqYlWRty2Ik*ho!Dv$Qa? zNHQ==G)_q|SctFGf#ghB>j!CZtgY z*+ob6o;S0^B*R3rv{VZdGYf;X6ywFS@N6c6*;EQ%x{mI8kHox`9PmLCW~rve#%8Go zDaMu-W+tg7OJ?CYbPPHa4Bkvca5to-S)xUfxk-|VQEGCkd9umUS&V)*o}dlY5Z^=g zE0+`{W`ZsShaOb|$?l#dsYQt;`Jip@;BhaA(hSR##6-}=^=Ssimd0jj2FqqK+S`PH zOe{%E&H$aeP?iZg&k8g=7L*FwrC~SwfhJi&0hp3(YG9gVX_1&>v7B@xQp{76 zO$(^8XG%wi0KxB|xkqs1lpMTzODpn*m(!!bEIwYbszIWq>B?D*Nf47^{>v!I%>nI963@ww*3@t2@ zO-u|^j7<{_)={1~jS`KFOpTJv%}mo$lZ+DAQ*2_Aaf*48Wr~G~VWOq6rK!ONicL&5 zOieUQH84#!PBk)5woKkgxru2eCW+>0Nv6pr7N9%lHq9bEOB$OenV2LdnkN|>C7GEg zZzkOc6GH=&WYZ)I69dbXM8lM%EugI*-e>gMwXz3LBg;}Z*X#a(2 zQd+7(QraPkOtVNyG`FxcwoI}#HBC)SGdfI>X^94)c~~P8^E3-HLsLV`BNUmIWRhx; zXqseTYLse_WRaS5lp@oT4H8q+k}Ok_Q!NaW%oCH3QDj<*p+$yZg^|H= z%1kp$O0`T%F*P+aHcK{3G(AC)X{l*u=H`~EW+p}^i5975sV6BiEiKj37<9{uiKV4^ zvW2q#Kc9 zYHn(5W?`0UY?5kXV32fU7NeDo8n~B=mi!%yK?`=l=|2&4x^o(6p?O-enMs;9G1V-^JT)abInmO{*gW+%@j8vt5)Ca( zl9Ej<(hQAE67S4nG(#PMfbguW62YhS!Z$W&7=exyH!uWEmn51RB&OY+#pn$wEYO>a z;O=0tl~qVlVsf?}XnjRuGU|l}R#q8Crb(uT7RhFYDamO@X69-4C^XJ8+1xM%G(KW! zZk}RdexEYqOhBVVMi%Cl#%U&r$wuZ6C^Rn3JUPuQ&B7qj$TZo&F!3Q}#+e#gnkFWj zB_~>#8X6i~m_DM+I5Sg|6blQZG@}&DG;@*jOEEHgL#hGBMiwSUMrkHyX6D8Qsi~=N zNi_h}WCqoMX2#~Av%-wuk!pZNQlgnjikVSrqDiW0QcB8uQVp;)PEAZnHU>3UKxg14 ze<0ZaizE}!SziWeW~nL0siq%EH6YnE*(}Wn)G7lV&yr^JiBtnp4b3eRQ&W@E(vpml z%#0I1lWahuiD8O~k&%U&L7G8YO41in4M+nGh$WgPnpl`685yOTd?h_Go0u6IB%7z1 zB_XKsitO@fAOhJG)qb| zGPE#Hv9L6;Ofmh3N3Er)nL%2bQEHl*Nm6QZn!$g3YAp@S%q>$5lT1y_49(3_8fN2; zH_KFWGcyarG(%(KR0H#*ltw&ilMPHQQVk6aQ!I^BlMO5loA9YkOENPzu}rZrH#0F# zNi=K5qc+tf(J;l-D9OmwEG;o9&7=jNT8kuO6O&{k%VcBI#N?#JRy=Cc%oB|)4b0L^ zObn8ej0}z1W;5DA`^I^x6(#W{r3E>upmF_*k`NHn&dLf|Ji`FAS1`@Q#5~D7%`i39 zvYk}@hGrHiW`^blCZ@)zNromJr0O>|Of^U|NHj1vOioENvFs#Of2x_8abl90fuWf} zB4|4ZiTVurzXCy}b(!pzLV z*f7b&AkEM+*)(Y~iTcefEX@qeOpQ#GpX=+-c zxn-J(@oW8Jie`lCGhJv9aMCQuUjeBpRg}nI)yBCMTPwCC?>Qf10IiUzwy@nkCIAQGcqDL86IaQkp5~C|eUF%LSzBH#bkT z1f8vvY?)+aoNBy~RQ;BQNd^Yy#>S?GrsjzTX^TkJpPFczVw`N2l9p&;X=#|Wm_+?) z7NFKQ=&C`BBr_uegC(;W4Iu4D@YH%5^gw`8E+ZpX{Lq-=85L1#wmtr z21cn%XER#j&;z(AXHX-@w8!(IU-k1u2>>&CJZrObt@Z%}fj}Elf;T&L(;8+Qc%+ z$S^J0+`!Vn(AY3BX%$jXgD!2dvhptg(cmlGK+8NpgWLwmrp5+oW){ZDpaw$nYGU-5 znOY>J7+9EC8k>RE8?7Nik71&vi9wQqg=MN)VzQ~J#abft7^Nkqn5QPDC7YQVn)_N{?llu}Mmjaay8rl1ZB7RwDEy8yQ;|B^sC;m?bBgBpRk|BSw#TlDVmI zvZa}2nvtQUMbdU6^rV@Y8d;hq8XH?0B^xH0nC>7(PjZrxiA9n{l38-1shNS{&e^nB zy<}iylw@L_3OX4-CB@t{c^6G=0aaY4X~}8k7A6KMMutYaXH#p97x<*WWYc5|gT%CC zV++$gvl(r0uI|cCt+cWN-@%rV4;`pVOffJpFauo>otTo8YH7H4Hls0q{h6Q(O3YJC z%q$W?*PAD&8l_p9@0-nNf?r!oW)bLUI&-tcBqNg)b3=0r(7K`hvl&hC>&r>ZO9$Qm zZfKEWl$dO6oNSb2nv`mIU^b%}evKuWC7^C$hOwDRvRSf`g^`(&fk{fT$-&u-miTq1 zWEO)C1q1ohG6izuylHZpajLOp${|uTrx>J}q?%c#rly#trJ0+V9G=Z+TauYqSqwT5 zFR?f|GtQN%{qotWqa#E6|iMc_lnNf1GL0Y1jv7uqArGa@`;_2CxtW7dVOg2ciNCqv~1T7~tIYW_YM&>3aCZ-lf7Ackn z7RkvLXDKqxEG;b!bVWdFa#A8__T(Hzrdg(>nI@T~nt;w~v`k7dJ5P~mDHf?o25BiK zDW*oICW+=I7br3<&CrIUE`_#8Hb^qDFgHm`F*ZyzHAuZOn=vM@G&epuKd;Qn z$|f_nAV&egFHTL&0d2B(ttd&&OMzT(91Iq-$uu^yQ%K7%QpmKhv$6tRiE>Mjz<*f3yo{LhL|` zY9K`k$amoTmEDT+b0G_;LB%GxV6jLu2lZeKlFd?+l1;BuXkMC8N{Xprnz4l;XgR34 z#SP*MLQ6w~WYd(SL`x$>a|5HKo3k0a8Eqg%5_A_7XmK;h-SGv9Ma7_a2`Q=s`6vL) z#pPWTBjA%-@kNPwpta@B`OvAYAP^t4rUqmK=n&l$V*?XoBO_yD1Jl$L{MEIR&tSmZ;J<4b&J6sLnu>lGcbcKONups=l96Sig@u8I(Y@J>nefzD3|eYX84q55 z02;MMTa9jmoIt@HY*6$?H-V;De+K%DsW)Dn~?ghh&}iFrzL zVw$l9Xx=vQ!EDA@LDLK`|#PBV}o=r3{NwPFIH#bSPNHI<`N`6OlEo5Y2W@2JuV4P}fWMGhL zZuWjQW2sF+L0LTLARG%bE35R>ywoD_E%nAm6(;deE~r*VR#j42kXj7c5|#=&o~_u< z%BnOEbfbMd=sbdWP*)h~<_%Ei(%8^4Dbc_@#n3X*$lNUH!{CXZR3r05izGvH3sbXH zqofq$k3@7e&CQK1EkXA+Seh9nCK_0LB2WdSC8wGun2W3l(a9i8NE}>QG&VF$Gq5lzv_y-Pw8SJcV~gZuOM^s{ zzq1*gp@UaY3UmWhKKQn;`23U<(4A1ZpjIntMzAzDO)>yE$s{!`(Jaa29}&iYHw~j2 zW0YcOn3kB5Vg~AIrI?xgpUoHxi+iwgQ1=AqjjNy%6_R+s&7YK_`~oX0(6M87@Zlx{ z0|SdRV`B>=OY=lS(=_9TIh6LhO%hWrjZ6)V%}i5`lPxR_8s|_nc4V1kV2}cur!=-S zNij2RqR2E$(`19B)HG8=qf|q)M1#cUIf!{b&?FSL$*42~GgC_gP}3yEBFWe=wPg;Y zF)UCq^kf#t7w3b<+cJ{Vl2THVQ&Nph%uS3FO-x$nkhuTWGTF$|)YKx;(mc^DHQ6w& zZ4RRs>h67b+cY^RzqqsrR9VJ@_B5B}XJho=%nU(iKBOfkCK_8NnOK^(&lxlgXEVbj z%jCoq3xgzcQzH}8lnzouD$P7O(K6XA8FZgUl7)F{=Nu|$5;IE+gR~^$)Fe{_qh#Y` z^Dc@riCKzqimADQiIKShXkD&R_Z&v(Ex%Zfp#mQfQ;?XKnVb#o!h@Od8Q=p7ima^M z@{4j4OM**^GV{^{5-W4^6H`E^E*M&xnHYoi@|&ia86_K7^vof4!-1)RWs;?dp{0>Q zaeD=jH40-d&i zB9mcgoR*kknV6Oc+CF2JX3|gXm`%1cH%LlKOieLQGfpu#HJdPp(G}t@*r^r}9+uN* z+)7Jy+`tR-%0aV0#zrQo78WLnMrNkTiN3GuMOdZf6 zv38KFAmc$t|9~sU4A6#?M9Z`!b2AI$6eFX=sdE@@i&KkIQsc9V^Yg5%ia~44At|{8 z#7xagiO)|0AD;=H;>!Td&KX&zC8rvtf);NXPn*MNN63K0qN2n~_^A$-DXFHG#-P>s z=BA)k(9`EI+7mJX>IB%q5SB^FNuYU2QzHXQGecwZ8FLuBnUZrdQ}asV!ENPCLyJ7n zWJ`WoW=d*Nv6Yplp+z3(wxiUFl7J$JXh2bZK{0gv#>P1#Ge<`wJ|0|;C+4Mtw>rk> z=f#8eM(RMsQ!P;rq@w}f0FaTHlTrjaVFR>uItAn?5Etw^I~`3;J1Z;jMgX+7e}=hfQktQm znW>2-=yFX9^O++&JkpHPOj43Scdi?yn5L$h&l>6BVP<5WY+;dXXqW;z137v29LAZ9 zHjqpQX+x!?T3La5mBp|r8FWdP)Z)~l%*33`s#L@zObSBK$_hS<8J1a`S(0A_s&3Ft zflAp~S(Skl#b;W8hDN&%l$K_kY-V6FZw_M|uBdg&&(DEI z0Wq$jt`WZmkC|+k-3` zNHQ_COf&(lX-_pUH8D+IHiuCctUJxv2$s9kjEz8TgF?^^!WrgfhUS)LMrok?UW^P( zjF!(~OoG%%@ukJ7R#u>cxr(i<(lT>Oz;$U#YEphFcs(VI6%Ua^tCmo^(1|7nDW+*A zW+us&NtTvLW-I0}I)I&p>ZySI%;Nk!@ac0Fw8D>}-8kw4;8XG00nVTl1CMB*V#|#q_(_|wNib>jLGR#P`NKP?IGEOl_wKOm_ zG)~zvhtV@BF*!RaKQA>tCo>7uRxd8j1U1^-6LV98Q^6b?M;#ZPuwZb1sG=l3wG6zQ zG{Yh_CB-<&&^*!1)I2%GGHL4^MmJInOU};&4Ln;}WuzFT8KzlU7$zDSm|G+zC2yO< zxR8;U@es%uDw;~jfC=POIM9tz&JY0`&~@~Xh6#AY40$0q=)x-vO*?IW@GP~0twIoF zxHSYaEsT(EcTFNNOF>ynW3SXg@JjZ zv0-wW(Oz;4Nij(>GfcHKH8DsvPct$|-8YBP9siLS!Ko#nhDT}%T3aE*z%! zVU5j=%#F;05DG&eCwwM?`$H!?L$H8}$haOlFVqQr9O zfulvKpxyb#Mi!|SmL{ggiOGrPW~qi}=P;F)7nFlm0a#g;!N;0UaZ<>0ZCS4IDQ*#p|17pi13kypl^CZg)a~Mq^LwHtJDXBT2h;so^ z5NCpqKLh3N3=1>R33N#YMwThYrp6|T7w0fqfR^<^rwripKz@mN`NgTp`JnZw1*t{x zptW=+i5AI*Mk&eWDJiCDiHRwf<}g}f)9ag=laq`FIYaJ1G9FtUybz!Bf2O#p@8U)cE|OluYnZz^Dl+ zF)_{5Fv%h@&D_E`)jZYk$s9&!LPn(|R-!k8laiB+3=Awy%#+eAK}Wn6lM_>u(^5e@`%P0`5USTSInoMLEVWRPTLVr~jLY~=kM)U5;1?HS-*8J>B`IibILExOM%`GP+XE&R1yyw83yfcG&M3dG_){CN=r;JFiuUe{4j?x z!3KvZo@#JrUFUOhFq-Es`u#Q_RgwKh0s>23z3{4u|CYypp2)ocOdH z$m%{Y&n+jv+{Q`A8Qj80@@`2Hd|L)+*&y1AcY@|YOoF=@u?8ON3ixEuSvIK_1_q`^ zhRNmzW}oLUdVqVK(3>kV^FbGlWh547SXqHD@$pD3&H!EH0~$I+nu@a4u;)SXU}cq(3Eq)fnwOcDUzBTQ6`Yt`kdq2d zVoaEgrYQ!7rm3kGNofX#rb%BxMRHMQa!FBQay;mEic~AB^hD6YF7TKqs6Pc7 z2Q7&&PR_{B&nb?FOvr;$ps~5JWm2LgXgz9LvZbN%w>gYX5IaHLRp=xPcw#BDIKC>i zDBsG;vp6cXC?Db?h)71VrFlxC2`I-TT9{ZGC4MJn*2f?OV08yYsuWi&<|i7&`WEP>>f;+)jfg7{p} zfQX?5Xol0sGA+f(9CX-w<6K5PaGp*BO#(wI<1{nSv~o#NXCca*HnN-eDc#lJKDg@k3gke3h3r> zL-4-I

    u=!_K*6kHnf=8km|UnWq?8SfnMJCnt8zC4Hhc+0Y=>5Onj9VWPQFqD5-= zT#6d9DTXO#pc{OQjFT-)QjCmx=F*@wVU%Q;WS(MXkYbsVmYinTJD1TKT1&vD>Ooa^ zXi1s{cy<~zFP>%*58Wu6k!+llW|5ehl4N3rYDF&9QQ%DJ@G{ZClL(mDQ zpljw+4U?vlqS-vnFvTL(+%PfG!qD8r*kamT{A0d3h%sLigEX@w14DDr8d|f|MDywJ z6o?u@;Q0l_0{KM4M8o7XQ!~&6TC#DP#SDtdF!NM%i&RTvGh^elBttV3vzZi`W|^Fl zWM-OZoN8fc3EBuWYc3H>fVw^H( zE}=OCOQWtOD9OSMzaMMBq)Xj&k2Fi{gN1V$^K8;{^7FwBbMUos z;KC5PS1>U>6kz;4q3m7~xFWRQ6*us+zGt9Foy3D8J_L1MCbnrT{+g@pm= zjK)QC8J9AarzXW0gKp4EOHBkVRxbwcV~lsnPcF>`FLsEBO^u+fHGtU;+m;TQVFkGb zwDQ0)DH9y51dWGT1S!O!YuC&zEG?6h%t51b#wLlz28-u1F2dzf*PK)uIuvd?l!4;R zw3IYs#+<1_=KC36|q;dCZw=?LTi4l65~gsCgC4M-dmC!3|1m?v7AnV6-S z8yFgySS+2(xC@t)LGx@Lsfj62uhYoc7`C7Zpg7+=Db>_071VV!G)_!3H(G`#VFbf& zU!+NB!%c@WP@I`&k!WF_Vq~0blxAs~WR$XeE~7h+>;s-aEQW6Z1|8mzoS2-Eni3E0 z>Sv@HBqmxUo0}OJCYz@wrQj=2*3_)X#CP@~FsVnC) z-oTZ{f>IMxKx_VkONvqxbDb*llY&wUOH+$WXq4LU*oRXJ#dFEYiAILWrltmlriq~A zhF8sHoQcbGe)*sk1vE*15TijPit9i(swEj(n3^Ve%ZBJ-ig%=HxUpbI@u5&^C1A zloZ3Y^}l5wJG5@@AjqD4}gS?UJjT2`Q2F-;OdR}z4B7p0_boJ-td8FPy?BQpatb7Mn8 zgEWI=i%nScVOuO?W@M0@l4hD_WSMGcVPbBwnV3dYBIwEna}!e|LjwbI6N}U>a~YGN zs%U+^&6xb8l|Kr8(EmA8YZQg8*c-RTa=oaAY2X};7$VF zhwGGC;t#qkIVrOwA9QLXC z42_a^lApQFEX<8fEYnO(%`8(vD=&9ZHiVLDk!EITmYQZ^W^9(2lA5@iHVMzd1hhHV zC@nS3$kN0p(R2?fo!?}`BvUifRErdILz84PvI0+a6~~unmSljppcori7=q5>HLyrcOg23*m(db5 zxsp_rU!G@W1zu_820pVWGbgj8(#i^)j6efNpuJCNiOH4*h6ZV7DQTb~w}W#TOTcNf z7~H-nwz2}b9n|0e?I6JsB!Z@R(kv5GOiaylx=|A{fI-$?yCe(CR8VWoz|cI^GA+&cmJ)rX&_XHmIfLfLc*`pfh*!ic5kst5QLQBL+TB^wzSStgpBT9}$%n#*Vl@hkWQjoi|bcrXLf?9$3DEl~iiyUr|*&npFu zOlBA+CmWb2npl{on5J2pBpY8Q)c~UuP!l{c8FWyqxv{aq6;cf_HaD~|Of|B!NHI)J zHa1PV3QCtqhY1veR=I$xUvPy7s`cZOODaI)lW7*_W=0mqW+rAvpmcqWSdAtI7RE-# z$z~>&W|k?5Mh4f3)o5yFU}|bnJ1c)(%u~!vEQ}0O4N{C!lkR~sT7FTgl@-#ee(({; zCHe8l(>oSs$>s*2)|!O{=!Vhzpr}XJ2iXmPsu5J8B$}EUSf+tyD~t^v;MIt!Yq;wf94UJ3;(<}|m(+tx<{m3VCLC38^wj03K|EA@ZfX**Y z%uR(<52*2BZfuYYI{ytcw_$FQobq%o@r(KsP18VQYi8zViAKprCT7p@g^;O{S)!SV zSz=O>xuJoDh57TjjFS*6%0NjIHie3^P7U05CbWJGMK>gl;LB(TtQJd4vM@EUv@kO> zFfuhavow1_g8xCg?Glp=jEs{_QxX#slV6gc*WA$DG9}qOH8IgR3DgvMMS|Y6G$YWG zO-qZE6eEk&q_o#0RCGorre+qF#ugT)1{O({#wKs(GCD&-4AP8%4FQ07iQqvBSi`}} zDlNY#J~c5J)a$cIG6JomO0-BzvNSX@GDnVL0xPSi%mN!n9VhU*J>r4_)O*g)0WCa9Gf6f{ zH8eL!HZV!GG&f29fEZ~a$u30e4dx`z+=3jivydz^H%m55HnT9ZGzRUvO8khoC_^ed zjg1n`Q&J6+49rZ@5={&(Kam&dh8C%Y25F{ANy*8HiAe^=pRw9+2s&&UwG2+OFtjuR zttv4yOH55nGWr5YBD)HLHXi{#X#WCJ6!w3O7}q-Zuz zHcvE6O*JqCU09KlWbtP%qZ#PBvUtdD#nL=TY=JH_gHPi_`U+{Lpo7aS6O$~>jMEYm zP5%;|G%Sq_%`7aFLAM{8CM6lC{v*Y~W|qmu2B~HiW+~=|7UmWP|4GqoVVP`Unrdv6 z2wF*MXq?1FSOmHiBEvGxz|!2vBE{6g(8MS?CAp1WJ~v27HcPcM zF;6oxH8)E!HEy3rVh`3N(cCcAD9PN?(8Rzp&CIN09av*c6*i^Q&ZjNy>106vxyazbTNYI36AKGVLrWubGcz-bK2jq! z*}&8w#mL+|DJ{{!+&sy$pHu@Z%u^E6KsU0b8Yh~h7#mI?)d0(6qqHO=OA8}Q%al~h zB+H5O7$ad*)bPn=(8-sei!lvBp;Vrf9uMNgCmNZUS{fyqr5T%mwt$1i=Zz8#5xjMrKCl3ZM&git>t5(-ev`GIJ-*V{F5r8EBlz%s3IvDU;_hmg883 z1zJ8}Wd$KK^NLeJ8;(-bz@1=-?GQmHuvomYMY4H{g)yi!N={5RGPbhHNHsRLOfj-B zFg7tTGc`_0Mzea#JVqZJEeX&}1jgCE874-_=AbJcO-zzfO^i*A(af7VkI}&RlgvR^{hAsWnI{>{oX6+`I|dt4V!<2-@-d_<0q(!1q=I)pxPT}-&?b8@H^act z$k+sQr&fxQd76Qt`7BD!Gc`|4GcZZ9G&D#{N=r4JO{sb2W(H;kMuwKA=0>2cnR6&L z4>a>*o(4LXA|*97Ep;xX=A{^$nVMP}n4}pSrCKDK%%jjeLkm-jG{Y2Q3sX?xmts7h zLi3CbjMFR((kv~F5)CYqP0SZiYF?t5fq`Y3r3vUDVoO8Qg%p}+Vrgb%W(*pCGEA~C zGf!MZsdGO$=qp?PMYv&=!qcbXU* z8zvi>tf1693o}!*w6r8pyTH=O!eAwZ=9!xq7=xBcfNoe$HZn6{*14GL+i)1r{G{emlnwM;v zWR?U<&c-QeX36G;TPQWp+%O4zh`Oags)>bJ>Q)NPOG!*hGB7qYu{2FGPc=0*-$to< z$;QT}<`zbvQ+^DR4J@`(XkMyeN@7x?nW=G-rBRAevf&O&%>&)<0y+aYCB@jl+|+O< zrRJF!8>ATBa^h<6q=W2Vhq}En_^&YnPiq^ zVY!D=^HK~6H_&nqGHviJ1r7dy?S!7UU}R}-lxAjbYL;r4 zXlapba)4GArC6jTo0@_4TAHR>q#BtYoW~fCYkD^YbZVJPW-7{60U8>bI`N>BkyCWy z<1>rnQ}Roba#BINv0w)@8kwXTgBDt*fOf%IS{NLfN9^6y=E-T6pbJ=1(@c|%QcaBx z&tnY3dH^5vUT!NZ=(XI4{ucDiJ@g~^QjJm!(##AkjSb8#Et1VlkAQ|Fa4vFi4v9cp zKA2&VoMf760$TBqXkuz&l6G_+V=E(az(MX@0Pjcx9}}ICpOYG&o0yUcJJb?--kVK) zd|6^qJV?4YK3)eBoblj8nm}ja702f$7Gr6@l?H$EpZ zDK!Usg3U}J950zEVE5$YCqt5Is(GSenrWh$MXGVCfuUjIY3euvOJG24#ugHZsj22B zpt}ImObrtaP0Y{CW30oMaf_4li&9hK3rdQy2Sgs>aL7XqhBS*rOM^sHBTLgngJer{ zle5%t0hU03Sc@$Tk_}TWK=TWhhUSK#)6mY%W30y;2C1OsLh-rzWjKm2(gVT36f{Ga zYGQ1XWRhx}lz5&hP9P~1l9DZrlMM|mlG9956Aes~E>N@N#NrbCIn>-d1+;3=D8<|$ zEz!_0@ggxr7WEUSnW0&dd19JHN>Xa7xrL?SC8{|CONii3p{AxO#)*a&W}p-ElFW^g zF3)4Mgq$S{KM~f=GblJD-r3Q|2fcDOPDwL1wXjG`u}DiyvotrjGLJC_G8=^25JWv` z7`zvPi1r|6Yt6tg$=EW{)Xdz%)Yv%5+~O*&?K4lbG&M6yv`n!`GfOkHxJGOHEX@rq zlZ?|+O%08bO-<9T)7U;k6VQnb#uh2YpgCBB)El(6&otS@($v%>%_1!=)yyF6CavwW zG&46gF)~R^GBr0dut>Z`Yx|Onlah=;M->TWK&Z!10xI2DYuVlZeMaLXgz0&v5|#QqN(W<8rzp>V40X^ zY>{GVVrFb&W@!18*7jK%7+WNnrX{5sTco9#T0En%eMuIn#^y#&{;33mdR!>Xl$Q!ETk-_hDWi^NomRM3@srWVF#76$L>I)iNo`!qOnc!qO!1!#u`lY`ufr(vs8)D=S|Rg{xbD&)nVrgb%VU}uaVr=}ILi3VRlaf=@49$&G&5V6)*gntzi;-!vd2*7erBO;sVk?d9OEphPGPJZvPBKa{F)%bWY@5&MTAY(#0zP*= zDX|!|$v!wIzXW>xI%I`3WJ(luLzqFLp_!qHS+b>3Qi_SOnR)wss@CBKpoJf6lUow#{Bp|_v$Rx$ZmQdm23oR^Y-VAaY+{j;lx*BHAF;QEsx$2- zW){id1B4ST6U~iNEPH8Xkwsc^qEV_rvbm|Lk)c_dc^|DTN;OJMNj5MvF}5(WFibK} z?4J)iniza!7G#H5aS7<$DaaaY3(#$Y2B0efjZG}fEE6ZpXY>VKpaI(9P*e;)LJPjj z8zPn(pP!aioLUl}3%y(iHFp{%gAVPrNU;DN25wqyYfKSOg%i`3*)QxgjV!>RKb1Hfn1Lo#D-L2j~@Re54I=q9-2(xRf&yb|bM zt@z9oD=U{!U*AY{Pod zk(Qb?i^ldPCnj2$CMBC#q$Zjhn3j%I^2BXeW3M8mYy zGz$|$i-okd&nU^rAlV!=l3cYKH;r3hQ=mIh9;(#X(XRtyoJmO-nX4H?&wvsd-7JhAGAdi58ZIX-Sr8Ny{iS z&m=j;Ffj>q5`&3>skw>Cath5eGc-xHFtW5rGPeZXjgq=zKBF(8ZAMA?MMa>Cn4G{g z<6YgX4n(T%A1~ed441{an$_OE$AK0quaa zOaV=*nHa2|&*+VA9@N<4(j?H0yGfuL)88rBH7LwA2;Dei(s5A@RY^{sFG>j?N*TVHmD7F-bB=u}HPF1Pw%(rKYZ> zaUL~DGfy(M1nvH`OioEOHC#ty`x4E~OifKqlTyI5jfn>9aWqoNTRDNW*Ui$>&?G6z z%*4nr*}~K$#b5)iJ(gsalx${^nrv!fkYs3{xRF*KGfcF!G&4_20S(O=rKFi|qOr#e z%##hwP0~^gQXPP!?~)kHY{RaRDjz zK$k&-mtrQGq?sqC7+NMLo13PZY@5$$25~oNeINMjsFc@VQ6WRnrOD2Xq~CX#)*lR7UmXdW{IZBX-PW>^*umcHiML8QzK&oqeSy0 z!<|H1Wd_F0q9Wp zWCIHeOOvD|(>>Jf5G0vfCYzfZq?wwVgCgI2FNHOxd8&DGqOqk>vVpOAs#&VxzWI!S z&=Y?k{o0VCN>BoE%gIkH2~JHeM!T8=>mGXZl%$kYnhAF5d z25s3eNVH6{G)p~7v@?v2j1!YB&61Oi&5{g^QcaG{XDor;HD6ksYGqYgoEi_i#5}Y( z6>|6)n-CpW9T%i?A5v1&5=(PHXFos~;Cc!wggOvmkd$hcXb3t-Dk&Ls7}aq) z*_)DVkqWv?Jk`R?(lRkA@dPEoZjx+aW@uyyI%hJ~(lF8DBqfHW7^Q*EIx{vgO#@wU zY<_A!qZW9019IMsl~oA%+!-q?&|pReXbDWRftj(TNwNiKkn;3=MtevpjC!*Vs1SzS z?gKhdJg+1_z9TFZf2T%j&vhHHO_+y<0QkB zjm^_ilgvO1>r#yk({7M%gn3$` zg>fRN=V6kTlxSdllXN4@5>pLQ4U#M@jgm|gQ%p>5kzoXA%eq-=qOp0hr9oOs>TS}E zFikTtGBisxG)}TeO*A%1xkI`UDapwuW@f2rh6d)wW@gEWcS$$GFg3-{(kv;}%skmJ zH7zmq9_dCHnSk!NPBb(C4a_DbncgSe2+JgcjR0+%GfGTOOGz>@v`8~ec|^JqhDk}524)s%mWHM#MkWSkk4ZNoEy=*Z zEZHQ@GTG4F&?Lp|38>NOhFCq6RtmaL4Rp|PNq#(x1FDzYz!I=}2_}SI;uJi zG(2pWWb$-AqX+UDCGe5a@$s04M#sko6lInLr51ymAn}G)RvBq#mWIhm$%ZC|CP^u# z7OBrDbeo|;qNQPSa*C;OidmYGS;})tYJ3YrGYg~SL<>vPGy^kJOS2ag8D^YfVPw=wOR9LsPS)B#XE68NHEH8tmXzD=W}d%Bi5qfDq_` z)=r7Z*b1;CnL)8I>H8mvJJ?xr2M?p_?*ln z#L0Fb8(s5K9E*}OGD}jEL3s*?+0di519B28Q;QtIr&H@-_ZCzo=+bkS)SQw;{L0{G zcZ2%$Ab*4Q)xr+%&M-DIPck$#HcbMZlay#;@}B5ENSZ~ev8kz%fuU)dWr|sH(g#Z7 z)XdD(*u*$3CDp_-3DlzgNQq&V29{=N#^weV#)c^trpZa4NG~1DEX@+llT6Hv(#(v_ z&C)DB&u278zjy(D4V0A?`1I?H%)AoN4KS&uNtVfpX(ov#mL_RthF^%+3YsHGN&+2) zoMLL3m~8fybcZJ;r6eX98=EH^Cz&QD8Jm71-G~&UWV6IXBa74&gS1qWM6>Vn8ST-p zun9^m4*}gn;|b|erxfKE#6ypN16@#_nv!I0VQFLmiptbv1G68byTTyN#KPD-(Za~s z%);2h*zzaoMkJ*qfoi3sB$H&*WDAqTU!)t6oNQ@ioRVl{ZfcQikYZx`n+zjT%uNlG z&CNiwnC3=FDSt>eBF)&q(l{l>(mc_~(!w~=@Glugm?WB6nj0Azn5G&T8YiXxBg2R^ z17o8!3-eS{a|5F^W6S^W;XKq!Zs2!5gRasrvNW(rO)<4FN=Z#=SU|yGNn%>6Ns5Jm ziJ3u?fuV_6TH^xPU=Q-4$&gF$^W*anHz6A&g03h@Gcd3;G)y$HG;gBB6(-51rpdOi4*HH8f~h!02b=392|C1F(?uv0-CJ$@$rZR#u_KsgMQY#n53O zgw@24{}_VPkfEtD=p>XRbHla;_(nSn(k#tVEewo7=T9akS){a667ngA=E){ziOHY{ zFiNpZ?pVO+1{>ijNGt*kdV#6|SH3{*A%Gr<0Xl~mBmh0{0dz%KCin<-gA`*^GtiYU7N$w2hQ_Ad z3&6MAgVaJ5f#&@n1A0)+h?oR<0X&Ki8s4>m1rJ0qsQQOa1|%CAq?nr*emYJ;p!L-2`Aec(gp;mI$>Jk{L9)Z8G|$lSs-IoW9P z0>)T`k)&8*Y-9&X-l!HNnHr_07=RAlwoJ1$H87j9fH8(b3sCZprKOprSu$w4D$&5w zEX8;#-eM-%)Y8Jz+%Ux?)iBvG)yR0-0+QP+2BwLi$V^EC?N>@OG@QPG(H&AOLr-Ug z6uHhBrFq%Kt`&*NCBCJgnKx+nxF|I@F%vpIYmu6oYG!DXW?+<-WN2t&FavKrg>3sqN#zYVR8~^muvFO1&k&(Ir-_JBW??P^3&5(i$ED2EaH=&4mu(hB$)x4>M=G0 zZ6h&GH8nOco<&J1YmjVWZfRthWNBh%l$vasJbM9SC?p_~GZKrCrU@ab2r31;OdVY6 zlv+U23`hg?RDCO}40F>&W78z_WD^U}LXNbgISUxGZNSU7tgN6Ecm)^8i`YzsPBkUv zSAYs*r~C?==u(SVJ4B&|TE-`*g7TQLk)es9nUS$++S~<+*ucQp*up3!+0e{v-U3E{sA?!xP?VpWUjl0Q#;2C0=EZ~By=Y4>(A;5^ zXlh_&X=rI_o@Q#8W;uTWqchYjD1~k$^u#7qV~kQj%Q({vOj3#@|B#?-eRfeUpX<~|n zshNd=r5WhvfyE0Lq!f!J17o8U6AR;1%O!Y=ptPjaWD_HEBO^2O zl(e)|^Q8+IgKbc!bQ1F_<3T-dD=WvmN>HC1%D`ZYnDLAXoHJ-@Z=R_ zZ7%FMH`LWGHaN^HPAw_6vI>T~A~>}KlsiicKn=3^%(VEt)a2CS;>4m#(9zo_iOHZ- z*Nja~EG;dK(v~m4m`#SYc8e0rt*kOqOe|AO4Gb&{%o0u0j8iRE&>~$WCZ(7em>3y> z?&||}aaK}4U4a%ACncI0q@|ggrlp!2u3EsT0x9pn*J!2X7o~#_#kaIDNHsA@Gd4<2 zO0_gHOzwB z8OXJ^sqvs119XvIYD!XSl97=yXakCYiQ&2hj8Tvcs-UZUp`Dd@@TIKrU_%@scRix4 zgaJ!{O}B#?4_^MCk!p|%n(Z@6OEohxHZw3=zktyR;vn$NgrE{V9&}AYPGWK@e3@ZM z5qKK_{Ep|0RM3uU%T!}C&>bX+hAA5sFnSO&B`qz}$|^Y?>k#UNdxj~|lnYoFvg>hnv*`@`I`p`qTyAG1=B4DMf-V~d zU$<>$0UF~;wlFkJG&L|xGTFR<(Up)ViZOx$-QsA&*ewef%^(v4#qp&jnK@Qg5T2D) zVlnufei%2yA_cTYG{rL6Fww%;DA{r=(K<~HOe{fXHl~>vrGO5v-?o4;3}P(0ouCyL z5E*E54aPytX4trakD!EHq+@1oVs4yboSbH9W|nA_Xt5pMf+Mi3#4E zVVXhmjs=W9HWW;$SQ;f;nx>efnHwY-CYl=>?Oec^ot~4Q9}nuQ6@e}sOw7pv4Le&| zCFi6j7JBNuVZ$Ip}BvW7EV$gT%C?BvUk3>{-CrLPl7Wq*j!~Ln>P2&AKqB&&m0^C<~IF_bl=7Y?&vO;1e zL$08V2VYg12vUOTBB->n0cb-?YO1lJxtXbXsyXOt4$~xyM2nQYFUg0D zP@uaGNnuc8Zb3*svRe%dl8w>~&CLxHO)Lydl0a!X#Tc}xKGodFI0EONq}(%}X!IfCUx-W$^}v7A6*{ z7AajT<7O942si}sb!@^TdER4WO1vC%>y7|{UIVssF$pp>#Lkk##V8#cfrh!gVgx>xG zF%~o}WoBS#n3f1yyaL+5Vs2t(m0@U^l$K^@lm?o%H%l=^74_{60Aq7pO*AH}W|+~`14dTars2AZij zU2uE>qc40|t~fC_HNH3#G+G&)n421$S&|Cs6F_QUXg3i3;9fJ+l;o5&%jD!VGea{= zOY;*87`33aJh+ArOHBsH8>A*Purx7CvrI8cN-{SC<>ZriRT~ZyN=`F0OiD`yttK-$hgY?wg^9665@;$Q(K5|2&Fnm0)k%q#rfJ4$ z#>p0GW@ae{X&3OTPBKh3Ff~p!GBr;&NU}`2h*x!Ls-dN+nMtCNc^as3Y<_70qYg$~ z>NtW1dcb!9rI;my22WB9Et9~Ps$C|a9(2oNqNRyNim8c-xuHe!l?9Amuof*+VnL)i zXww?B-x<966L}qIMw(@6iiL@ZsiConrMac0`Biu;72I*jP0TAz%*m;Q4vF|exuA>m zzzMP>F&i}QYiMqeVw`MgZVK8GYHpr#jVx14jZ=&)%uOwflg%wslZ`B|lVyrUs!^hu zNs5svD5^{hQ*V%EN{WSfs;Sni#$_O zED{YZEDVxTEK@C0Q_XKLV64XIuIHD77eN=7fY0>>SH@OW!C)S^R?EbW=cEsY^>zQ>?6V zQ*-mJtb9{*^C_^>D9JJ{HPyf%$;8qq(In;W0!9}bHSoRih;$7eSppv~4@%lascD!; zn3|g;rc9ja%xJ-gF)i1q%>1YQxl`qR1;&PG)rT{hl9jj$);v$7NE^3sitP2 z2G}F;bRg)Gcj&cpaEjy6j*Gk->VD~-%kQ;f|`l2Q^)3@s83(w@`a zO0&dN!{j83)HI9KB!k3MlNYqN(mdI~)X+T1(mcuB+&I<1_NBx6&H6yvmH!z44~B#Sq+w=yN!Jjuw| z*bsDzzDc4%+FLR!J!3{ei^nL-O zE#XQS+`5F^{AiMFVw`MXVq~6T0Xks8-~*`!B&Q`M8k?D!nHnaW85>xneq6v z7bO-HfG;C~?7yP8tTH!AGB8Or0-elaoNSW#i7u9=Sb~;8rI?$TBqgR9nSG{*rDmYJ z-xJNvjm#|))65N0zK|L}CMm||rb#KrhK3fPwb)5tNj1Pc%_0fZaR5ygrI@7{ej_uf z8k(6ICZ!mp7$q5{np&n9d?(W!b4$=3NP{$ELt`^zBa5UT3m8)%a}@Zd&Vo`CQ*a%n ziT$K0gVbcp6r(iI<;RvO1_sGLX=IOKqNTBsMVdvbiJ75+g`v?e8rfrH3A*MXHOV5? z+&In5DET*y>@hbtOtY{wwKOy}0}Xa3|DlmRiAe?)Ny(-rCPpcVpsNr5(#oFX#N;IN zWYBHs=9b2(mj7sGPqLXsS_)`w9H=*%_Mb-fB$*^7rdSx7C7M{Iq?%hKHY}t~{z*1Y zvM@I{NHtGPG%zxa3iWr}eNjqCv}pEEH{F-uD_H!(=HG;F1jJ!!_EJJgaB6H^R8?Ua-@ zTG?Y}YHXB}mTZucl5C!4l-jni+y{i>$0Nj8l@0Q!Gu5 zK}QiAq*)yl!6ci9IpmUPU}}(<5bYWG>K_FWSWzjoR(sdoNQ@mZkl3XnrPBXra7j@NlE60#>S~eW~r7I z7Djz!nqzKcl4xdPk!)^mnP_HcVbQ;ku^6LG3-5iWf@XO@?F&jRnw*k6i9Xhv86>Bs zBpDi;B$_508l_lFrjNDemWCE)7Kuh_hAD=L#)hU-=wxl8WvZF6v9X15szH*WnZ;BZ z6}|?biH>BmM1#ac6O%-9qiHm<$Iu`x(bB}wJS{EBIN3bOa5|0bF*h_dHn%XeG%!jw zNlG;{m_Z|ZlG2RQ%uS3^jMB`F3=9*KXVS=?)WlTKyqjUNNouOGk-5RFg>>kp8=IJ? zg3b`LNHRCIFfliqO%F>G(@c}iOpFbUlg-SHlFbw6(8JP{Buj&2i$n_x^Q7ctqr~L7 z^vT`HX-Ub+#z{$*W|oN-hNhPD7LqbT4VrE-w=gg^1nnV7G) zx|5q&nFN|Ohpc&pF6i+E3BoEq^5(A6OiYbUEsc}Y(vs4QEltc8ETm+zG%>~0)XW%k zn3JVJQi_G?LQ2|mNycU=21b@isg|IbTqE;EpzH}+0%m2ET2usD$(NR2lna`Ha|6?e zRvqegAn?jw&=N|hF318z#1ehbyrFTjMRHP7a+;YzqRHZg_|_I!8d;d9nuEq95|b>9 z3{#gZWYj_3aAakbQBqP6pP!clTJdXWlAMy9Xklt#Zfcrlo@TOiA)_X``r_2&QqZ(W zhKXgeagwotQF3ykX{v#t!Lo&ndgzJ^5{pVQL31Ubxx@@h&;k5r=7y#g$rfgoW~R%r zI0tFLMMhd`3TV|UXt@eVOWKNsjP{T)El7kO`V3-#%nktUE(5LV$uBL6H#7om87RmF zEg3UQGfXovF|n{PHB7WHGhMlm(VT!0x%qjZRXiCfmMI2F2C0dbspdw8CW%R_7BX5A z&^C^5)+dwQ!GKJpCs*E zh=19Q1!(_ys*yS9xK2ZJbF*Cp)F&pUniwXUrKB2}8K)WiDKp;20DVxoa*(%yxP+Tc}jsN1ZptRQFKo2MEWnVO^;B^q0p znH!lJ?jvrz0<=2IAlcN&+$1s4D9I>oKMC0rbis$Qv6+c^nn{Y0SyIvg(%K6ascA+g zM#hFIpjl#zl!HX+hRtZ3q=5$0jSSN)l9N)*(ku@xBypz7$js0Xyz$W@)e;oIhso^R z8-r?2X<=z$VUdzzlw@LVY-*TzdLd&q z`pPKSvLeV)fAKIbWLFq;tx*Vc1rc~LH+1b*YEfb_sGWkcNC$> zY?PXsoNAtCo}6lEcyS@4IdTyVGTO=tyc-sLpFwhBL1J=d38)dBnqrt@2D+*w(I^pg z9_yurj7IphLJIjblSE5XQ&7v^G}Y3=IOQ@4S<>7f$s`4IFl}0zX<~|@@fDI%PO4#Q zlBsc$c}kjzS&C_@(N&^!!%A!8B-2!*6hl+v#H3V%WRs+81OhhA+`!x-F*()PAT`<2 zz{v1A-VB|VW(2wp+RP}?5VT)DzbNy#@C!nTo-vK%%k z(ahM)BE`_aJjuW`(ID{_nbk>RqD8W4QgW)XMWUfel7;bYygpAdN=mgfH8L_cG%*6z zgLepoYodusvO#i+Ip{zk^CY9ByA)0+7?~%fCRrqdW@ar@lMGDnQD;IS*~~mK)zAcV z0;ZXTWlGxpg|wMdGz3jsrWu)=nj{&frX(9ZppiZ1<`$p}sLjmMOf1ZeQ_~&}V6C2% zXbif$!qgaaFsP-e@uP)!&(}^(N;OL}HL|csHA^)!OH6r8T(i<7EiE|>G#O-+W^QU} zoc4s&=9xiSilL!}c~YvOu|cw_LE=+N#$5~&EiH{wj8aolO^p&Q%*>uqCz+ZXgU+cp zNJ%nEO|eW&v3yP)V=Yrb3o0xPlZ}jx5|d0!U(hI38W^XUrWhm|8JH)UnHm|IzNC>o zmWgI&1_q$@{pP7jrm4xVXk<@{IcTxGxsj1Ys)b>yso859*^`=T2wEawkOsQB*32U9 z4S_<}%-AH^%+S~@)xg*|*)+xSEk!*9b3+4DQ`1ya@YT#IX36g;G7WSDg=w;>d74SG zL8@i4<$H=uOENXHG)hc11>F#Dm}+ePfg;nA4a`$bEldqeOpT2!4U8;4Qe;|+v1v-8 zu|cvqX!}yKfzhXhjJn03b0VON2|+uG%Mx=kQ{q7z$3fj6vs4REWo~GZ1X_h|@R@|R zmVsGvk^$)Qa|08zG*dH+FC?`{ObiSx5b3_yz$4UNAOWizZLm6QnDsc2zlVw!4cZft1rgDBlFcbgfS zBpDl~nWPw`CYdBAn*1EVO48ii*dR3}E!8w7F*PaKz~UDPVQ67tV3ulVnrM-nn3QCY znDm>dP=JM@g&AnP)6l>m)zsL`BF+2{QMzGam~3Qd2s-c5%mQ@5aH7RuN@~qC3s76p z(A*fbT_M@h=pS{ex0K{$BakN(4U!EE%uN#iQ^#2IRExBfv{Xy;)YL@K#>$3812=MF zU}|bVOI{d0}5mDVwV}n#f3rpivvoxbbWAnu1rbUb{&|WLbfOT1Fa(qfE z_@tw-)MOVB%O(VAd!dDec}i-snF;8M+GMjN^X5hPrhiP$lT*zMQw)>LQw%IEQ&U@r zb8L#KX{uRja+0CBMN+D%X}k@;j}W7A|~V?&b^izHL?)a3R>@WW+LkFS7@f*Kkon_48ArWu-; zq@^ULnspFkOPZOHxuKDHT3SjP=-?=W&P9wS5T`*yKPRygd>Dfdlm;CV3p)D7!oa}H z9JC=9G>~bM(zS>x%c+u04J?yWQ&K?(oSUT@8+Q+2N;bAkN=pHq=#iRYW^Q7c)RZHU2MKxbfDCA=s{}GO z0~zJi0*fes#?Bxs|1*q?%*~CAl1z*(%q@&9%+32rHo?L)(ZDjz(kwCA#KhRbAZ@}T zM&|Ak z{Zrc7SMXhO10(T1^8 z7BMJ(t0Ltqj?B|(a%iD8O?!5r!sYm}ClY;2L3W&+wlVqjo0mpaCp zSy-B+g60p*(#$MU5)I~2$5_xA`Kd+*hG}WW2F58VhV!XoY_e%eqPc-lYGPtaa&oe< z#RBRWn`V}3U}m0bXq1{{0qQ+0Br~&uwooJ+85^c1CnqMS8K*2F*BndJWV2Lbb2CFw zcCk!cOtv|RCaGzl(<6;c(=04ZmMkJ_6}M$lim6eGrJ;$Lky&c0h1t?Y#4lPfOti2x zH!x04GcZoIFflY=wuqEfRF;M*X@=%T7G{ab#+IqZ2Fr=k4Qu~frW%-5eg z&V5OKJmPqnc+gx+Jmi2GEAUN;q41+;K=U=h;DcYRtP)F0^5em+z{C>Jv38|-+2A@8 zv?9aI475?m*fPb~$im#rcrBT}FibNxF*HavGPkraPfJQOTSuljrb#B|i6$1t$%zI@ zpefh&WSWy~XlZ6@YLS+joMw=0kY=`F5o0=zv&ukcK!FxJfg8t=^M8s{!N)%3mzKnX zruS2f(vpo6Q!LGmElfdYKc*&|8XA}xM>~JCQIZEIIN5ID@ zLQDspE@WYB20Dk;+{iH1$k^C2&B`hxDb>`{!Z_I=$H_*w3nI#$VkmY|R zAO#twmgXkrrY7b_sfLz`<`#xq7BPlHnt|xk%}D2fK#r*>$uCMwPjyTNoze+8bv3a# z9&&3kXnHvVv{fT9CCS{>AT`w_)zot9BE||E93ccg|H~z{xFj<#5wu1R6bR6hz|cey zs}=F>X#wrpG&3|cGzA?yZDL`uZ4sj$IMXI&=B1>Aj>my6MzFGqhn#(6YG#sTkZhEi zXkcKFW@c%!eGy{}F4u-<=B0qHi-yp|xhTynDaq8p0Cc;6u}NC8#g0Xci8ffBgfI`j z9@DWnC^ZecYS5XfiN*1djnPSF7KWf(B9je`Oe_;q4RuwMMCi7AeM{b%ZIYh8Cu&yYZ+sNd&DJFiABv zO-@TmOitc|S8bY+g^6*BsZmm@p{aS&UOZ||L042KfmZk#m>8v`81KWU*31%A52u+~ zSePc7Cz|cYqt-0dAko+mbOT8e=(Hh|19;S$8=0CKCmJLhB_}0Wq@-9L#HSV%vSw+f zNvReF$)=`;hw!MiFttpzFf~gx1x>go8mAq`qt?4y)wMi+- zriq|Km{QY>O)QMfj^a_9mTZxfl46_!zQifT#P}FKwV?Z2l8ivnn`W72Vs;#_+BA!_ zBoj+ec1$xdHaM|}F%4J7axF{ED}mgZU}c5GL1YQMncmne33L~rNn%=3s)2#|$wiC} zjJT`EKV(Aw1gC>kX|yR zfV8s0deyuc=ujvV3scZ}zb0mhNv9Vv`sbt;l;ju3V_egUxUv;ekw7k0DMmY%C&R!X z(cHomv^UGh!on!U?93uYLvT~W$_nXlbkJA_=uoz$ncqF~!KpH2KORMn_1S1Cq8=Qmw3@i_Aieja*WT5zP-*$U-#G zg|x|umdO^Tpjo3dQ?n$CtBV+2At&sjAH)k01sw(qx~;{nv^W*z++CAY%al~mX|Tr0 zmWGKYN!J!JmOzdXDabD_Nd~W!2DvB&$sM2ry^vhx2HyOE?uD?#qRhm+5=hI&&dRDZ zFS8`R3?gV{m0@O)Vw9K$IwB8r!;^9H^+k+HB-jYL>#Z^#biN(f%)F9#@VzkT`PL-S z$RaVx!q6OakxgP!(v3xoE(lw|tvk3!AO%2LPGT8ocL(ZHJ_AbwlSE@fL*umM6hm`M zgPUZUV`yRk+LLEuU}#}vVPar$i%fHpOhBv4Oe_u33{q2*&5Um^Vobr6;eGQFFqxf`3B8JK{k!p%XgK(pjKix>l-MQNs?1-LboT$CT5k(vWJpMqO0u*t zPf0N~H!@30N_j%GPD^9MWHY10v=k$gWD~Qrq^CsdOioNmHb_cJG&TZlXfZc`wumtd z(gGo)O9yTgfC?+n0dL94X%?vl=0*l7sfKA5#-`6fwNnTvKaycGYG=_XDG_vqp^>Gf znX!e1LF$V|jLtS1Av&5M(?J(lro@A9xd3%qAs3P*=0G}~U>8DboeaYy3$ql9B=G(3 zX~{_zFUd2;*wEC%#3&8a07^2mG_ZI@o-rm#W@%=oh8E^&7Kw&trUtLcGsYq**)qv2 z(Za;UAT8C{(C`g;#w4XC8JmEvqBBZLOf$Ezc)N(v0#fy5fkzBLbtOvGXA=akv=c2Y zQd83mlatJhjV%)`P2Z8AH`(04)G`&cJuAs1CE3#C{USyibbCYdGD~pTZJ3${KJ6mK z$k4(l&C=iliTce=P14dV%?&NmEDa1TlFdIZV$2}Q0idJ@aVVmBgW^ccwt-2iiD9aF zBItstv_vBVi%&GP%QOYFeK!@<)v-)APc;9$h|$JI1Ds*f$l8jAFQcO+EP1DRwOijNpV)Vi1xT5_0-1wZtq|_Yj<|Ts;Ax<+) zO|eV`4P_huAYfiGD9NP67nI=et|h4XW0;r*y58I{(IoNbB1T_)?ki3O9fBU8n_q^* z!-&;oRMsF9^vs!3v6vYCnL??sFOgp4HQ z?-WBza}$$f^Q1IGa|_Evi$9APYtb9+sEykqD=Va7Ow1NLST#b09eC&yGU^#$oLY$9 zuC_EWGEOo9O{}ISf)0NDyNI!kk#;UX?K_}0&67-1OwG(q4GmL`OiWXalK+9`oN4D2 zaJ~okITAtFZJ@d(HQ6XN#mKEv(?MFi1g92)ZoC9vcWG>C zWMP?>mTYKgX=Z4dn%1zGF^ihshLv{Uo4Yg2(oBqu(hNaEotCBs1}Tk;84Iay8?;(L zc+n`$z`!Kg+{_p>wP%*nw3smmS1-rEI5{&XC$S{I2r~YJ$_G_Kpt1y1eimC1v-#8Cl!8=7(^BHq=5LO#NyO=hzcvK z3{&$YLvzz)W3yCKlQa_(l3A1rz5*Szq&79tEG5~{DAnA|(m2h)ux&B5 z+P`Tg7DmP?pnC}|QqxjW65AJ3Z?eQV$hUP|w zDF%j}iy2)YLo2WW7syPel@*KzH6I`i2b*BfsqK&%5)%v1DYC`}DWJ{DX-1Y^WSV1P znv!ggXl$HjYGz_?V3^#!n6hh+j7`%_EDgY2UP}{0v*aEM%}WAZxoT>Vn3`yiXqK3g z(z}>30axC2Pt44Ny0+8O#5mF1D6x-v(QTRvIzPY&G)!liW}KSX z4+;)g2?Cm1v$BG8pimBogHJWN73JqbI#$p#0g{tb4UN;x4J?w4(@ad$k|r!>OhP$u z1vC&1$=;ybX~?@aIs>#5*TmF3F*(u1BGoL(Wa47R2n<`wq4RE`#i^uBy`@;Dfi3|z zG&D9aOiN8no3t3utXPVvVQQ*TQgTviqM>SR1>jS`Jbl1xpFlR=k1rWz(q!K2nR z(a^{sEzQ&mL^7KDJh92Nz?GCH8(Xj09}QZWSNv|kZ6`X z9go^%1H)7!Q$v&FR6`46b5qk9R4W*b3``7?Q!ULCQ$Yu*CZ^7$UUCKarR;w%(Pk>SQw?HBpM|qr5IY6nOn?R%oq(? zq+n$QJ+lR}loXQhP%{^bGGEXMFOUmx!FPf~GaabQn`~?WI?lr^ImyUiE`^!cD9IQ! z44P<^oMLL3WM(pNF$uF$DMps2sRou77Kw(bmX>BF^A|G)!fz!?NzExq1P!a_lq5nf z4kxYzOiVLPG%~j|P63^0XKrD!U@`1YanLzB;Oi5U^K+9x>j6N6+IgV6wsPZBGSf3l zisK6sQ&J#n3_yqeq$Pq6#WS}wO%nqg9^L24pst(dvVN}_cdC0m$V znwXdyCt6x2B^em3B3fsPrMY3E1!y&vS#ok>lEG>sbVAy4mT6{5#s*2oiDqWzW@+XI zYlzmFWN46@mTF{>oN8>EmXc<4H*D(X^=w$sk4WHTefMB}s+%S2<) zESUL@#h?{AMTwwcpp?wwk|OZrI%qv2cd=}IiTTb$Qox*iUW;i!OnStD9tcTN=q}gNHR;b zG%&U_F*n`2m@&$R@Bw!SEAd`8Xl!U?XqIRSYUi38n3$ODqfrCF#3(g6DK*t3$si@! zDA_V?KaK23Gqf~LOHDH{Of#`aGBYwdKuYAL8JmI*GE6f{PDwPfFf}^3m{Ajylj0$9 zmtSmUZAi&C)OV2KWNY#nqltbwJe5va;eGEX&2Ofoh&N{%6*&B%q*fT5)P0b7}lT1^REI>OY4Noj)tfA(hH@MJ+t?r61wLqU`F-|owGBZt1GcW*c z_f1PYxtONYJfMmMwa_;)PPPQ~!VJw!EK-b<%}>$Y0cJ)imIh{^#cqb?sTLNeY3hJd zLo@U!Ftao>F-SD9G)p!%HMX=gJVRRtfVNkoMuD-Rg<)cyo zgTW<5rOBY-X~;ZJikXE;vY|y4N;EM_xv-eA1kGe>6ef_K3sN~^4mzdX!otYX z#5^@EDaG(2!7(%o(?laPV-v#^qcl^~L}T+y1a+jD7^bEfn2#IKe zfm^XSI)#=NNfst1NuV)3gTxfWw3~|=z2HVUf-bCgDosmEEh5e|V-pJ_gEVvFl%!M( z6LZVNTcGA5t}Z5M+W>UK0CA=#T9_Cm8KkBfq^4LHCnqJ|1~ubwnGQNM9l8n?+-L%` ziL=Kv)hy9G*~rY)$RyP$DK+&D^%7L7v2n7ciK%gtnYpn^a;ouNf^lsMTCkI7k(!ih zl$@4il5&rrjzlBF6!X+HBSRxI<1`avv-_m9Le0&MEe#Wm&5R9AK>J&g9xNte=Yf%# zQL-iINLEu*lQd&Pi-*K$GPN+WOf*YOO|vwxOtdgIezX|YMS~Oqi6!~Dpgm8HU^<`# zG*SRLI6Jo#bP=_Qp;4lRak7y`vbjN`af<2V#f+xV`R$Z^(9!L%MZzJOxvBZ3B_4@+ zDWHC4hFNN=rLnPPs-bBr=xF!kC$!1bMkxkKiN=PB7HK91hKWz{k2|HLq@|c9877+; zr6w7qB$+*Wd$OM z%SIMS$;Kw87NB#+O)QKIQ(jPgyvZOj+0Z1#)G{q8Dbdo{Anhg9=Ejm!K?}T1&65p` zjf|5LQ(l3J0O~B7HB2)wPfIpR1(|JZnPl`Dw2%fzkUM8279}Q^q!zg(g63;bxWq+5 zs;RlLrGZ6Cnz3<`xv81K8$1yVnG*+*#F=fLXkub%U}%(Ro(ej5z~C(@1&xKFWh&?- zDubldWRv8iq<4!M3vi8py5uL9=BDPAxD_R)gJ>%&bP?hl3|{$YVU}u;YHA4TW4$MH zF+_5rnF;8aJqyb;Q!`6*(+{ADJ~xCLAPY6XqhtB;Fb*g$x|Noc7J)8^2WLT;OooM7 zYN~Ofp`p3CaiXblqR~fCYC~&dlG%DSGEFv4wFE61O-@cVH%b0P)f(B-(A*#uw6!3` zEHTY6#q2ZwQqI)W&?M2+%q#_T;9;_%`4>DTf^&W@B&wkdMCjsc&X^~rrI{EfC0iJn z7#Uic8Gc<%-3`IXmdU1uNr?uaJ2{e!Qw_f@CU#RnQW9ur!z9rVv=QCHDET{{Ie$Zw zZenC;Wbum@^`^0bnVFfnp@q45vazvcn&EGP%^f4t)a2xpBvUgB%S1y9 z^VC12ltMtVmprwXphK7meDSsC;Mq}Ty4GJT)ESXqb0`5&F7K1vprFq~TN2w|C z;EqmKG3fLG&}ogSX36F$iAl+3mL~u3=MO`ZG)pscGtdQYDHaBXiT_FQiiv@7Vw#bq ziLs$YT8fF8X~Po681x+;=|zbJ8CF)srAfufMVU$9eHlr`sYPWVRwnv3RMc)(s;QBg znWZUcjK(CW_ z#Ikt_V->FY#3?f`v8XbnvLMyU3cN6l~0MoEe#V5O-(J$ z49t@fQjGl0 zak2$y>t|}BQJRIhfq7CFjqC-F@F3Z1X=Y+(lw^`>W|9b6GilmQ8+#$~i)621YKlRs zg}H%|WtwGbl6i6uZS2M9NSRrhq!@t~GbN>%r5L3p_AX&8MXN4gg$X574oUg>IcOzM zN~)o;d9sDM38=?nl+w3^(E~n! zrX+(mVNIb|iZd~=08MXNCYl)=SSA@JPF=#7MT79o%FhICUo}ZeGfy%wHcqiLOG~j# zNt#Ae+bj)I%*_o`ER)SmEs_$GEvM7ewq%QB&@oHNrl3=y%}fkt&^D!-S(vA$q#9XT zS{NIo7#N$(q^)&{mKMoIX@;PE_huH!W|p&-FcwoGouD@@GA&SRTGK?(M)KrjgER{Z z&@97j+E@!;_!|$YXj6>M(ku*9EE6q^j8l_L&E`<27(n+eq=H9k(3qqeBqm#?Bqf@s zrdp<@8O^1Uz2FKS$=<}I6k{V(6O*Jw)6`TmGsAhbu@|(m&&mqPUPDXE#FSJ6b5K*t zAjLd&K8@@JH>8m5H8n|0G&3+wGfgrzG&N6NKqGt6!`Z^z$SBpwIK?6@&C<{$IdLIv z?8RuXCK)BAC0m-Cn58BfT38w+FQSpX=;3T;W@=$!1Uhxi%-lHD++Z<{>_rb}1M?&! z6B7e7OJfsbOH!dOm&=7LskX$kn0c%-sD&DGhZeU>vn%!Q%gb{57625j6ymqhH$||okCkMWeFA;Pu zuvuDKnq^{AibbON27(==CGP53Eo|p|9_Jz!^heJ3;sp*-;;Pv^agTHAhscET($)+iwixf=_Ew?XW?7}%( z8I+os0y$3J6^Jd!GR@|ERHfwN=;5nNlr30G&4%FFiJVN zgwYW#s5A4jt*k(2MW$L=fzF9cwF%DD@hnNr1s?-cZe^8`Y!2EwoRVUaW|@>^n3j5I z31d1qa3N7cjf2fW2Y1DTj$}x&FfuSrG&M>#F*7txH9kyXXeL@18zd(tCz_fV8=0F} z8XsB0m0NGj#Awjcd?m78Mi8)qQ1*t`#Z6%3$p!MpIL%xxO;*Hai)67zhL8}iy zgT9HNV=7FOjEs^E3_-WngN}wqJ45^^s7ari6kiNFOd~Bd5i}QHY-N?6nimh*nQmnT zqw^BWGSeZ8)FC#*1>%#E4b08WP0dU!jf{+ql0j#e8zm=MrY0IDS(vAoBqbS`pxJv2 zRKH@k7rMR5$_ma%&PgmTj?c*i%`HN#28;M)7MH{)nxtB!n45x@kC~aJnx%ju$uPw< z#n8gcz}OgcY;p>k)yJ1G)_}qoi@)J{%6N^inGZORiQgf`VFh#(n4#X9CspavB zi781&Nycf0ppKbgGU$BuWOGxqv{WsEEgCaFAwFq)vW^!UqPEulWc6?%9N<5kZ$X>=`P>~8cn7t?!WD3|8Q0RfpFf%kU zFilIgOi49QNlP(H0?pBaZlo|XG%-vyOieViOh)s;$t8@tN%uiw3Wn>zw|S#DAB!S1 zFC?aJb5Hr=7Q{}ib7#h&=wGILTv z^)jdxfXpsREiTO|K?Ea+7oVJ%l9rU5n37_gWME=uVs2%Xk!WCIl4h7}VUm=XXqIYZ zj%M>|+&25B78fU`!%qoC;iZ6=IzbX0h#jAlWSNqdmXZS6$DW*K1WNU3iN>Jg=}Zia zO^r;GQcTfoKC^_e1y`IQrcOZ%oj`kPP!IA+D*|1bmX}-!^FLf5-XzW3Fxkw~G|kjB z$t=;-#L6neC@sm&WWUy6qBS>1GI2Cw}i0@him*01s)PJ zCowO*G%-CDo~Pgf@utS9mgWW)Mg|sU2A~NSP_OS3ewOhmK&{1V0@ z9JU8%B&Ot-2j%CNSXm*nGx8C|Ac!3gx{)@~(#Y7{z``QgG8N?KB#Xop(8OC>YKn*C zY-(<4Vs2(?WSoj-+7x0#`7l7XSAp_yT-S&A9@!?qm_3niQO$oSj-?Wrf5(&9LV~Xo0bex& z_iavoUMfg3J~at+7LJjzg}ISsN@6m|n`tSQhNdP)2B4!bOwtU|n;zFd{cG%{Ke%Fn zE(5c&O3u$M$S+P!i7!Yj$$;Ao6%0r$$%s!iO0rBfNCTxdV`I})P}ON>l$K^}VxD4Z zXl!6?VQ7dJ@7I?whQf9wgl6WISb+BvK+leZWHC^y!XVk)#K1Tu$t=~}!YIuUl&8&7 zlTuSGj10|;4NQ}bOwoOHV+mt4HiMJETNPlghw$Q44AM+f6Adhl%o5Ek4b#BYhlROi zqOqB&Wm1ZPiGeYCOx;|<7yvUKymtV@$)>5sW(J_8KITc5sfNkMR#q97Ny#b6=7y;$ zpzSnfDd=Y2TEZBFZe}9rs0C;^B<7~Zrx+(2o0=IJr5J)*krtpVo@8N^oM>d8Xl!C& zYLSG|yt=)FF#^rhTu5aK3j`=PJ~_!G&B6pUQoK7hjZGoS#z$?i52>aA0nHs#&s$nORb@p@FGUnxPr!A{5IM z6LS+20}JC6&}fb!dfVgP62>Z+>Cirwl~rMBYH6yK6|8@ekysoE67kJUF3N|El7OrQ ztAmTir&)m3Dx0RIC7T!+r5T%nf-c!K%_1q$(7?pPDA^zlJ?QQ)VN8VC4)q(X6CV%i zU8TTc2bBE50`bO1#%adpX(^ynsSHdkK&jL+EhW)3*}~Y=Ffqw6IT1Z~Jy^oHh7r_B zEGEPAW#a0T@t`#MzMR`T3 zX|XyA#Tl8o@tG+VRtkm&7M3~+MX4oL3ZOH7brdr5Kn-xP0O)`a4Unj&LamNMZfOZ< zqz7W3LanBPuAKthOtj+Q;S$C@v~sYai5b+vLEy$K#D$m+N0ueo1CN$4uBMR(EG^8T z?gs@ern^C+B)j+V62^TLyVoxU-hI62@KB_X4P2 ziROAk14{$yJOAkt#sgG$K62*?%@>vy7S#8|vn7lNsqTq@qWtut)Z$|7DG8RDLCKy< znc?{o#>Eu-0wuv48W@>SKeS&gVO&IAcUqd!AY;BJ{QxcOC6BA8M zEEA0lQcNw3-;!mDv1Ot`ijhfbim?S~>@4jaS*Dm8q$Z{%8JMRS8=EAW8=Ac*&lGcG zBTGXwW6%XTprge;kY$RQ5$MVibMwUH)I>w$WQ&hvnPQ$|o(ftpU}0#OVrZIZ@rgWB z(o#}E7uTB_n41}znJ0cG%ap`KlVoEvGb7_f%S7|EMAI*1nUZX7U~UXLJ-{H@60`#R zD_N$b8KoGeq$V1gniyM{BwCt(Tf*oDJ7)@da2BLd3z}1dWDRgP5?)SQ5# z{DNZWB|A168pwKK=K@(-f!eg7!>mAVfsA14XzCD9n_3i7T9g-Dl9-;Vqp1@gpIIEA zUr>+_a*HPD^up52oD}rqG7LfIo~I>S7@DUU8YHHr{aC`70bSGrUJC;nDkJBdC&+<` zX+`pV0$!ST325H7d=7yjPJq?n6($KCn%M?>%6LUioLnG7VBvXT5OBkoY zc1OcTXCX~ln-Cqy>H46ch8{N#nwI-$iT!R`7f2swMexvwlFZWG&E1KG)Xfs`bQ;m z(@c^rjFL?aOf6E)4N_B*{!__ZQyD>)>z}=z?a`WQ!!@WMiYWB;&NU!Qm_u^EAsO&?U2G zrp87osVVJ)!&#<@mgXiY1_oxv$!2C2W=S1`#97J7sj10{=4qCx7UoIjX`O?_St*ug zCWb}^DF#NCrUuDoU4z3}<_4)rmWCQElrG)jFZw*%uRa+ ziL=a1%*+hTP0|cZOpOgJ(s~Dnvn-5E43i9u%?(q{4N_84jQa+Ovy79B&C<-x4a`iE zEmF-*`Ui=#l8jQ!jf~7p%uJF@lTwW*3=U_3j=wWEPcun11%;VW+Qh-(tVDyfG=mh& zM6A~h+|Ff}P@>L78JrKyE^YEoiST9T24d7A08!QreVgJkn$3nR;i?cxMJ`5~VOiT=o%uGBwr0Fv-Be!r0WrG-ci(aaLkVD(K2DGm|s}(8`4QgTq;=ppi__ zy3Is0bCaZ$lm&yuS&3%mMrp?8#ztu-$w>wa2Z^&RjZ!TV4Gq%Lj4X{TQ&JWU5@)4> z?vqP4PP0r+OEOI|Ts%0Om1dZjWNw~jo|>F$Vrrabv}7rD2BXtbK&J;JnVTjX7^S5e zS}q+N-ZeB&wMGzN=`O1G)grwG&C|!u{5$=J~*6ZnrvulXr5+Z zY+z_;XqlR_VsJRi!py`h(b&>B+0??o$iy;b<=}8uVzQZWiix2`YMNP^VPcx)s=?u` zF6Ae-=lM_=-6V1(ylM>eq7H6fI8d#>7r6eUAnI9)b)EOXFl6_%+c2F7M-DF&vg+XsiUEK)2?(+tgw z%?(VF5|dIAcMJ|^SsJB*RHpbXJOi<(@&}ti+V$6!T=zY^HgtNuv4Q z!QreFqr_xG!xR(qWCP1&BXje8gTz^824?1FscA`Rspba8Ne24|iL)%sO^uVxlaoM) zDW{p49vB?XO0~31GDtGCFi%P}H#SPLJUBRbvTIyjMHsXyfEmJL%(u~s*jf^eQjLeQK9W*N`4NOvulMT#GEe(<^ zO^g$hj*{IgN;6AIOHMUSvoHru3>l;zqhWv=f^LU1F-kE>PBTt5Fflz&L%U2<%`8&P zLD!!prkSOfo1UPdT^0rwX(kqCmd1&esfGqdi6_a9jbsyZBV!}bIEs;xMXGV)DJl(0 zrW%=;CnqK*rzNIYni;1Wou-nxNoi@xM#h$wW+^G=$wuZDXQ*VZnWbftd0HZ9KWr*! zRpi;FjBz>n>7c!j1&|Yu;u8xpt*mT7rvNEnlPLz@AZ}&l9aaoJc3A_o5FC8icXk=* zdIj(eQppBs$tea#$%!eZ=g5w;BvVtPR5K$}OY=k{)5KJ>^W>Y9nwny61iHmB%`(-} zIPJnx#y}ffciVwa-9jwd2d`Pjwm90v$k5orz}V0@$;jNq%+ToKQpQl6h6Y#WB@=6K zs=0}|A!skVg`tU&rLoDSrHq!T<*7-<`N`QWR8LF>CPryVCTT`Smf&#}^Q&Yhfiw$? zWK&}^vosSUBNOAaq-#qVRUoUJ!5fy+@{1t%y&4;*rlzGB8X8+BnWvZ<8C}Pv&d|g> z(b6a_Db+N|B00_Q1`c(pDW+-0DQ2mupj(>_jZ<&pP?wUJWM*WUYH4Yjn4D&sl5}e+ zqnQmj|M}$?_~fUjL$3P+i}>WHgN|3uDJ{;hvdSt9INCy~ zX@-`Tpt~ADN0FGNTHe9oaSL;UBy&U4qr1?YNf3!_wn zdqb!7m26~ekdl~clx%Kjl9Ft0cAtj1)*>m*(9q1l$Rat>*do=!=)uqlCd(AVSAJ8MkREDX((Q;dus4UTMOl9p<0X#%>3$s*M>(Zula;AuOj zCYqR8rWmD|nk89+&PRAc!`Lx2Nizi9u4R#uW@v0+nf7$>1Vd7qg}HH>fr*8&A!u|o z_1RKJ7aI*tP>Z4@F*yTt&Rs@HZjO~zVo6C+W>P8Wyh%qG6S1i-!^q4e$;jLy$t>B# z(!w|`?K!AmB*C1b)FjCEybKHDB+E3*By)>YgJk1GqofyuBPp92C8wq)8l)r|8>bkV z8e6^`9L_Q`OffMwPD@TTNVZ5!HcNXoIGkmkl9p(iW}KX6o(SrA8NJ3)pBk8$B&8)A znx$HrC0Qh=CcXhB8|a2qC`IJHR1*VBV{^+y3xh<^eRfGEZWRY_?< z4rrq|q_==77nGWpl3Il5A|R5ZsbQ*dVzOD1nVCUKQj$^PyTK8_sY#{=#z`rbW=SdL z#ujOY@5v50@Sv(!YR)a1k@^OO%u8P71HU;CDtmX?}a0@`7pms$ktaG@)L-VK+R zpOR{26_lEoT#{J^K6VNmu1GzYg8aP=dXa*|3%q`55 zOpJ^S(moHKipU6bt*5b>L9(G`l6k6O+Lxt_9*KFC@x=v+<=`~uT9KMuT9RJ`N`#pu z@u=rPpmr;bjZ%$GQ$U*z3=Gmz64Sm?V3w)5X;P9=vYDB2in)PhTG}_V1K+^Z%-A^1 zEXg=I)!f1$)%g2TMnC9wSWsF9<*R^<#JrOHT+m&;D0^a|o9~@L`)utHJ8aWZlG0L5 zlMT%c4a^J-3=DtZC}k5t9gGyqlw?y=GjlV;w4Xz#5p80aYHR`OC?+PF8YZWh{i0zr z&C)nE$;2$x*dW7 zY37MWDSwwTYJrPo$kEB3dBr7(pi@Hg@<9hhr=*&hm{?jGB%2t6ZbVA?x0KNcG6<2D zTViG9mS2>cSOPxjy}T&1Bo%b98|ZlHlvLw1BSTO@lbB{to%M`O z401p;;xt*0&ab^|h#D_GaQc0|WEq)RdlOjD9wdXaLpP zCHe7?mUviZYB{ui!`2K(>Q<(jSz0EhrKXt}rluJfCmQ!sY+_ofg}F(hiKTI3S}N#{ z%D!cc>JVQi=2b$@or%u_pR1W+Xkcn!20C*m**wK0#WJ-YkJ2>bMB`LTqf|@tL`xHM z;|aKx8W~w6r6d_7CYmOvg6fBfxRsh%q*)jmrlqDBCm9=?8JkYRqcqI|G{XfOkhQd2{dG!xKO z+-4~$iKd1#aVxbjHcw8nNU^jqGfXu$Ffg2jN2!@fqFIWisbNa0v7x!C!ED@06HQH1 zQ!LGr4bu#aLHq0G;8vQFY-DC;VE{U2z&I_%z-%sVrD^7-DTe0B=BZ|8W@$#Isq>aG z#@HaAnUra0k!NM)lb@WJlM2ehko*=85zYY%!@D*RRd%2o3rgY>b8=a+YW2rGT0Qpi&gZ&PX*hOiW2LH#JN$OEWbzOj|(x!pg`H zbTO@^p@D^oVRDkW@j~3eWRhxOnr5D2k(Ov=W^9m}wg|V$?q1mf}%rX_S;?YGj_8WNeU_ zYM!`k8KWMg2r33OY`}Lk#ite(*5FoZZfas+Vw94YXpx+3kdk7s z7PnH16iai^`j@mMb4xRG1M_vu7;AByunj+8AI>OFEr~}O6@{ESOmVh1Fg*mY2U$a(15uSq7>{s_$?piNhxUt<|YOvDV9k_CP|=< zhEbBGd6J2Vg;}COQnG~+dN^)c##n$O=^)>Xfy@R^h(nSM=on{%M2i#yP@!sJXp&@U z3c8NQGR@q;+|VG+!qnK%G%XqZZkEl<7>jY(8C;TIl$f4sWd&z|l51v3YA(#%#i=Er zdx7Fp%|L5cjnfhnQw>cFQ$R6dZe*NhV4P-=nwo5xY>9CW{g!2nB{-}_y$1l5hvwas zG!tXP6a&*F(8A{wBhaDPDTWrHC9B3sNd~57CTZxMtgXu!17U|^L+&NVI95Fo6ozSu zmgZ(g$wrpocuO%g2ko>4-REu!x_u0-r?71q;#l>d)U+J%FlTWp{PGe|uo)N`C8egC z8l@N{8JH%4&zHBfFi15|F}465Gis5Th#oWBmoe&smYI}-hLv+FGxO4uDoav}^Gl18 zK^^79q7pP`>{!O=3axe_H8<$sLGTq1o`x2A(EA>2d~|}Ll{chf2bIjGhDqj@smbPs zrl9tR;m&1@EV+r9dApV|CfgLJ7Nw*@Z*c<+%4VkLUL~joKvx=; zS)5stUu0)xRR&_km*#=*DmOJVGEV``S*KVg873Q>?_S2(#%QCKTUw$}kY8MqoLH1% zWd*V-CAB!UC^Io9vkEk@<$}bsfgCr8ZXvP~(4l?^9iWi~@F|k0qkQI;X{JeuDaod0 zhN=G1(y1DAm%;G|ANb5D9wC&CJY=&61N04MCNuiTPm?^co~4C#R(trCBB#o1|G9 zrX3+cuOVoSq@_`cg;`>XVN#;uQ4;hTTNo#&7=YTa7A9uN=0?Xz&}(X$Xklt>U}k9m zYEUPe94A4qxlyW-g(>KoGZRCjWK+`W0J=W1}>~bITZg(I@m$G85DD@{3C{lR-!O z7NjO;Cg%9%=fS25qw+!LhNk9$$CNWHj15ddNx?G7B+(!>#rXU(Mon|lLrJD4mzFWcLl$Qu`4P;F&q&Nm$pO`A$y1I-p zjeH-1gTl%xATcj98R~sVv&hOS!_?B!D9PN^GAT9D#4^Reb^9Q_EyiGXoHv4k z9btE?5C~BtV>2V;wA4g%!?ZM$G?S!T%NV6WeTmGx6wq~)`AOglV!;!K@kOa=x0f+4 z#MO&}U0DgEK}}vzjhbItg4$yOUzrG#Nz6-$hhGE}Zvd*6LEX^e)RK_Q+*FX>6bo|; zvlP%CG)se&L<7(bS83+vsi0|4Q_EDNL?a{gX7e3VIyC92CGp4|nsjJ~#yl<6(Ad-v zbfKnkl2IDyYNe!9OVFg3sX=0rk)fdlddK4KGDdaO)_QSfUUod_ZUOX5hwg!z)!=rA zl~q}4vXxa>YBF>v8(FltAT>E2eEK(JEIqg&H5qi0HfYS;CPc>*G{=u5one?}VwsX= zl9p&}nrdW}mUy2w)}&fkCK;Mqnx$AKf{s;8dq5j&Qp{37hy9s>Pkb>lF@8uJYf=+a z(hNY01(H(@%q)ydAJN7d(14af3h1V`M9Y*k3&Y2>vBokj%^=yr($vz()YK#~$@B?r ztT8Z4F*Y%=0Ij7p03D(Hls48_np+qqCMPGQ85yJ*rdlLFqm4DmCdo;bmgc6(i55vo zrUnMjX=9C1nn|LWNeZY3V33k*VDw@cqc?iv26Sy!k(E_(3Al$1?QwucUs6-TK-~}U zRU+Uqkc<>#qa-tP6B9$w)pV&A1}{OgTAqjkA5vz()*~h7=Rig!&?enLB^Iav1dq=q zrhulZ%*{c^VW%Y;zFNj;W`i_74DS_z%&-Xs6+a;Dp!-KH4O5a*4U$b$%}hIxS3$Qj9GPjZ;$6Qp`*eQ{NJ;)6z5rbdjB@NlLP% zv8kEKyJd{_=n(;1+Er9;WffE&oSB}Nn1dAfNv1{ypo^AGOe~EIO)Zn&lWs&xT9R2} zvU#cjcn;b;=>zFTq$Z_;w(TVwnwnWAnkJcjB;ANK17jm|b3;o@%fv)uqg0bm%NQe| zLrCzMnWMO2Ql5AoAm1v!y)tM$qNyet;=E)YuCMMsA)|qCOW@(se zX=;&bkz`z2c0_+}c{u zYDKf8BnvY`hzD8}!rM;qFgc8XO*T)pGy=`Dn5LShnpq_NCOT0V zrWsfyr=}z)npv8IRv-N#TBnf_=wc@Gl(giew6rv{q`$=LOfohB-GOdoo@ShEX<+`3 zc%5mfW=Y1z=Ag?@6AjE#{}Zj#7__V*E!i|V#mFMj#5k>CIkA<7ajIdWiD8nZVUmTB zfr*hpBhfm|3=EAdEK^dF%`7cbO)Zj|h}UUkl$30l3YuC^GPX!eX(nE0ibY1r?NQJ@Visv2J&Bg7sRpSXMC&v%Ft3NsCK*|pB^p{J87B5DXLJR1fvv0x ziZXLEK}+1@Q$V+FLj(h0f-Z?Asi2Oql@&xHBgx1#(Ky-6JjvA9C^^+2wRbtAB4ofO zIk&*dDi?HXct&!fS(1UNp@oHEQlgoKL1N!>Mni~xkhj2NUCH^mNub#b&`Rk10?3{SQt+rI@U}3pK3=GT+l4sJ!nnWXG zE6l$i;Y8R<5}PC6&l`@>yBIw&IzAI)$c2CMl*y z1|}(KiL;k8YJ=yot*oGw6KGZ&It!nXVq}<<2s%Z{&=hoxbmAOZmP3XnX6D8z$tJ03 zX=aJW1}SrwGp10n&`T;x%u5DsSWh!FG*2`!Ha0Q@9S&ufG>`7Jx=EUGQks!zN?Nix z=!6Nw`O6uNN-~P_%OPvTtgKvvg8YNxJ^cN>L4&ZF(205jLqp?aOH(7uR1-rpvy=tP z8M9IM%)o0y(CHcQeNQ;lzy>426N_^llQO|OxjF%ZEK^L=(o)k5lgyIS z%oZ+ZEXH9JDb|68E0C>3oZpd{lnEN`H#aj+F$P_3o|tN2oMgFZIin@2wej(w$^P8L z%B0lzBXN=42C73-h$JM3WS=WK#=^#iVEkEtpI*voK0aGB-3#wlr9> zoKY3eoHcmH8a!{YbUC9Rq`Cz!^n>j;iw=ne?d-`fsDz9gLnU)k^Wt+ei*vy)hpq-R zNlh|0N;b4GH8e9yu}Cplwww{Veh{*B-O8#oue>O+0K9q-)Gy62Gcq(yN=!6MN;0rC zH8-Tw8uod}>Z{YJ6HAxFShOF-kEqFikVHFi$i$TS2_m zLv!NwZBkNmQcF_f3ySg!Qj1C|K`9tCjQ|k_6-yw| z_!QGL^Q07WGvmbMq?9BR(7Lu{6O+_5!!*#o(PT@LWb`rp)yo;{aV%1D%}LEo1?_Wz zGe9#QkQ?eDo1H-uDe3WWQI8N`pZG*$(3KvRW}pcyW5ZO?@~jjSgCrv};}qjGb0ecP z14FbmJ!_UTHshLefm;n{K$f9lt|)|vBNi1Vo0}#ko0)LGm@h;qKFu;U)xrXF zcB`>*Qev7V=$H@C<&(zAiN>Z$CMHSd#%Lk4ZaHHME*BxMkV9sJVk18fG}W1!mjX*B zD1!0ErpBp;sTP)o$!X?B$wuZ@RvG3g1_l;MrbcOrW+^Ea7M5rZS-+gIpHzo{W}o8| zi{rtUmBuHPrlo=AVdWNdC}fWC2N<8sC(Tmj-ylAGg_pIi#bJg7WSL?q`!dSH;CK#0UA zfwul68Ce)58Gz~Gz z$s)S|EEJ!TXla>jVq|P&W@eOVU;!#YlR!t>rCFFKTY|R2SSF$6jjg!TAyU92F^g04 zQXmt?;7&En4S6Z?hNi}*7AZ-oMn;CoW=5uVw93(Y6)8Kie~vXJn0b0 zN+c#E1)vpED1!0HhABzLrWQ$-$;K9`kfPJj)H2P~A|=&0Db?J>%+wss8QV#Z1y~rA zT0lw&M0x}TgoRnMg{irLNwRsGQHp_ql~smiikT&NKR{Ais$r@Ldf~leIb#`)l<1P5 z87>;Nu7ID@e^NEKMy`VHu?)9wZ8$ER0VxwoFYiFi1-_vM@_BvM{x>%18n=Q$fQAM#*WG<``=y_AF=2 zfwiteGxJI;z_k#lt5;ANUy>gWZBRliD=5k@$p_!Do>~H04<8R2cQQ&%GB8LoNHa-J zHL|kGFf+F>GBHauGc!suN-{S_uR8ZGXH3LtA87Cl)kct~jZ;i4K#f;Rlf<;tWDAfb z<`x!a=EkWhsiw&mCZ>sLX!&p7a>inqCC~<|l~qY%aW-hrVP1MpDr_+rXlG)6PHG5P zs;CrR3lx>+#Tz6UB$^o+rKBdN8kwf0fLd;rrYV*wMh0f4W)>-lmWk-q&;I3%$>`mP z@+9ce8qh!;Bosj;TrfV-G{qvx$SBp+D9OkqB?VN*8=0r3B&Ap+TN;>}BpN26=dc6I z8N(o}pfVCcr=t}m=B4E4T3H2wY0wHU@QyA>ZvpT4mszq=nvsQ>sj-21s)d<_`N8Fk z8W{7Uppz6p1x}J>T9R?9sfm%LX`-P;%Aw_qwpiziLy9Uv{V&LLF=!AGI%NzxYrr5e z#l*nK(9qP}DEaVm#!`&KJCLTs!7Uc>)-!0c1vIFK?mBe!P^C5@ps`p`ZwAz=OtAo+ zbYp6oVrXPwYM6F}UKSghTNouKfljVVGc`*yvN%dFi_MeLk}Q)_(#+Em4b2P;6OYl$ z;v|z4Ba^gLlN57fvouqawBvNM*xb}0#nRXUG>l-7WSDw_ZWdb_TBKT97#o7x0w!h_ zC+THzikXRVilLcdTAFFHNwT@gDSBC)mXc&@U=G?;YHE>UVP<)HIim)otO1`gnU|WH zQXCICOfgQ%ucL zQ!SH{6U{H;Q)_ByY-(VfXr7W}mSSdUehHu2MB^k2Lj&U^V@nIuG>f#$c+?t!4nR$| zur#(XGfGJ{GP#0Bt+A1zp^-sSs+qZk8E6#fDqgi_mIf(?X(on-#-MvluHjQ_0=h=k z#KO$NBn8w}xQur`94Z#V{>7&D=1}EXCN|;u$`*iHXLh2B4uZBeSG5L(}JY)LK|t7$=(;TUdb3 z>`h8Det}PIvO$`OVVaSFd5U?Wd9uYzd}>oo(-KXSlaftS5);i0EMDPJYiVKx9tlb^ zOENM@Hcx$xM{S}(qJ>FPs$p`najLO_x#b%?YLiloQ!LDk(~?b1lMIth)867!n`&qV zT8ExyoRVgcW@7XXkJ@AdOYI62M0$kM>X@H0NO zsYb@2%WF*&K}(?wlfU3mn`W6}n3$5BYGP)YXqIYV_7$JnBoh-;3(LerOHkXwBN-{wkN76ELAZM+(ff@bwBR#t_jnaSA@AGCP|?CtddjG4AT-5%`8m* zEN9e3Rtnj%3tCtSVPzOuSeT?586_Ge8yln=8e05a&KQ9A&<-LZ**G=D!qCvz(83}$ zB{jt)`QLIzfB1waD79EwK~fFMk`BD-#=z7#Ioa6Q!~%2%ds>p^e<~Ph0m`3gsVQdW z<|zg#rVT47cBNsWg`uHQvaxxZiG@L;nL#7vMj9Den1IewOg1*RNHjDwYogppV`Fm* z%VdL8^VBrcv{d7yW@;Fj1lq=KW?^Y&Vv%HE&_cP9CYEUiX5iCQjFVH7(o9<^H`3JD z&?wn5$-pehBE{I$AhC@KMw(h0n3))wTBf9>B^o3pwo}1KOT#n^P&T(rGD}WQwCteV zNV7zXM=3}56IVV!? zQNz?!14DC@B+E1laG!7zH_sD>uS(;g*p=D~Kp^M9K6g9v~~cZ+zE65ergeDyc;xq0vf4LG)M-m8c0esH?uG@H(o@v z>kN~OlhO)u(X9r9z%uUTKjnYhv z6BErW4VIE>fJIueSz=OZTB=E+rFp7Z@-jRb)I7~7+0@L$z|g`dDJd<*U^yPONvQ@# zCW(p3MwZE`=BAd3E2vOT8k&PTfytI;iHU}ZspcywH`3f7+0e+?BE`rObP%P6V~bQ__-+4a_W7uV8ex$+SQuPt^T}iOI>OxmH%erMWh0nHHerSPbH47?>KF z8CY7Rfls6|G)!AVwfvi$Y>=30lnOd_%F@y>C3Wozs`NGulTFf6k}VTW43f>wO-+r~ zQO8(QLu1gboTCa;79NzWKMp1I(WlDPJTLg{O}9~QeWGDXVv>caX{r(EMjj*M?JF29i*xczauW-ztdbIoGn1{X zf^+gqd=m?7ymi7rM=oZTWW;BuR)UIt6B9Fo6q95FlO&6zBm?suD;S;8r%Yj22*587 zu(I+`Do!l|-?j$1Ak54#**r1HGTF=+bc>RO@y->D7U;%6XI}jw$LuGU78QXPM`oBM znxH%uP~E({`<3)PpSXDM~CT0L5ZvURh#JW=ecYYEdfabO%Eta}#qT6VRPj z#;GReX1iA~D#B*(({u8Z5l3kNTQ{&`ha|>gO zv?TMSRHMD5XihXsv$Qk>ZBs}zGBmTa+((M$l%%8-6C)GQRd*K22FV8dNzt5YmTYKZ zY>;GPZf=lbo@#l36wPVLsTO8QriMvIX+{Qy7A6N*Fy=!Ce!%Oj3P6W57v+K0ykw;& zmpJC7_<~joBZ_xaRUzg1;fa;OB}IuPsp+5tVnE|osfk57mGMQXAOozdGEzY2zL=UC z86;bz85$X<9a_Pdh1E*1P5yZ~;3MQ9gIJ{7W|3r&W(pelO-wQ|H%LuAyn@jQb@c_j z{e-*>Jt!5ld&$ZwD<8BXBf}hYg;A=Zk%a|leS=Bjkrj-FsHQ-cfB@z4 z5kb02i&8;LYCv-?=82%0&NMR%bFVOKByLSE-7dSbaGm%Wumc#(Ww=TnUGa6;Pvv56Q01#cxa~?bgCt; z(~rOkG0p}`ECwASXl0d=mX>I0VrdB4@M>z;6tJYRgHi1Xs#FV4AQ)jEs%UEe#TllP!}C3{5SP&#zz% zgnETaCPo{^URc5C1vNA|6_m}Kz`4h_v;?aI(axMoG%_+Vx3EYvH8wQ1v`9<3xPs9g zi)q9dWoD9;W(qnT#3qlO;-N_{Bhezs#KJPg(9*!r+%(19^2!Rv2w3$8 zUW{i0+A#w<1s`;95NPpOI%JJpylGlmT8bg)+M2X9QzJ9b!Z;HXLrWurWFr$pGs6_) zH1ri}S648$<60aEJI4t|C+C1>K0w<@L8mf-&*_CEH&F8nwAlizAOw19lVPHnQJS%- znQ@Y#nW144XtB0&N}`2jie*w-qPe+oYAX7n#n)Ca&cfvu$CMP;vedj1&>Gd$ywoDd z6h*O>6;27zLc!$3f)a3v2@Rywl6a_4yjh~Tg%N1(Ceh3&G1&~X$_}(HCE3(8B?)wQ zLK4Qp$m>*hUO{4Uab{U6Ecie!h6=@-S*DqSt_w&tGE6nIOa_IXiA8c!YMP0KX{w>Q zk&zktqR|^G7^hG-^z!pSduS0s2ja(r?&(dmG&Zp?N;5M}GzTRyi?qblB+EpjWP{`s z!<0lLw6&KvSK!{H;a{AbnUe#${QT3en0nqq`H1|*tf0NxFdYHVa` zVVsr%a)^zh*3i@u5TPqmbaD@=M#pwLvlEfnDDQ2iH0SPB3r-53a zX$Hor24<-SpoO94#wq6JCKhIisfo!37AffKQE#uny*&cmYIHs*nShquA}1RVKR(sa zz}Ubb+1S+795m1gTI-vbXl$O8W|?LLx_igM5`FFMofV7?xIzT9FT*phptJe83QerA-?@mgp0ccpy#Kgon8FZBpTKc@V zg0Tw6%6O2EaqU!rjnP3o58=h9fHt?8nHrjyCL5+1CxKFenUP_#p;4MavO%h`fd$6d z+xJ&6w&IEcq+JO}Opxb6JNJt!<3Z7m90U;IkjjG8cyn_D(3yfJ7RiaGp!y%w7ql=k zF-S_av`kJiFfy<}&mIp}FwV#264Z6_PL=sdL8*nMsl_Fr-U9LxdK9Um)Z&7C_&x?> zBbZZR;syp5$%&SxpnJ|iGpV4sGEX(INJ_IbO0qOIH8e;>-^K871!F0WxPlZQ5V9n- zq9h)C@-=9C9wdf9VxX1%pw$e9X+{>t#s-OoMkcAr1||@TEmDj?JG@fOQY{Qk&`%V6 zv;ut}D#%pmqHV|#mhs@OGDtW*9zL@ySy~zl(3sP+6|gJ0z$->!Yeh{A3=GUtQ!I@wLAy

    UqJdFzs#(fwtg1j~?WY)-CRrw$n;00In!UlQD$yc2&BV~c z+$ha3$s*M<@hw(WNyf%T7RITjscB}QI~mO1VOM3AW@ct)3EB{409sV}9;>R9WQ$Z2 z6VP%sVWoZKUN6l94NGN!781pm=7Dd%Oa<+@F*LR?F-Aw*TxrgvWcaMX{u3* zQIctr;a|d9(kzmVEJ3TmjX>j{hH3v+Fq$KEy&zZjmYSJ>BDp9(H$E>l9(oc*hN+2} znTer^MRHoIv8jo9(toTe-`vu|$T-Eo!qm_Lv@d$O`hERHWV18uD|16{^oX<=!el5Cl5VUpam64r&ppWF?SO^r+~ zEKHLUEsPUW43e5xGD6P}N+~S@-(X;6CRrL- zCMQ`MTUsQxtR(fUBG5@jphF>3QjlX{MIO$;Qda21!O8D;YI&^3x$ErzC>x zfKRAq7$ljc8Yd+t8yTA>f_9p9u4GgPD-KFc&M!)V9&rL1!_G)cG_W)`PfblWG)ys1 zH8Sa1$!G^ja;Vc{AReg0V`T+8#23PXOpF<)ni(3H7#OA`B^xChrJ8lGWHdoP*C;6; zd^3gbd7>d`d%C5Gg|V@5vUzF`k%`0*bOTK?=pIVbl+Y?LW<_pH1njyWWyBD4J0N;W~oy_NgtG$wYU$qYoMMb(i4-}Rr72D)a@ zC@C?`+$b^4!pwN)N=8%I>>nh*roxWbfHI1$tU&!KlcbbH3sXZQb3+TWq_h;nS;S}r zRmLf)=84HhNr|91N;Ne}nZ1(HjG&Dfpm7BY6HCif!?YC8sEcW$rRkiNjOGM&rev0Z zsyid&B(v1y6r*HwgCt{9%egBVEeL8YE=YtNnPO(1WMG<{VrFWVVqj!3ZzZE8LA{xv zE<320Gqp@jGBr0#F-b~IO-r_z52^tYlQSwo1$;?vj+GTOSmBIfP-#|D0$$W?XlZU@ zZfKH{nq+8^WNDtZfEeAy$wiq3pqbs|6wpEnlSGST^F)iJ6oZ8;8SP;XN1NGo_wjdf z^oe&3bM*@e2K5i2)3~XrCT1pPsfkI+#wHe~=9Y_AGCJZg0_Ws#Mw*dlP&i;_V%)@7s`8CWD*B&J#<8m6ULCK{|=$*7KE zb3uMiWjZ(or;ey%}CX*$g!#n`~Yz&H(b__Rf`%I{$kYV1@hr(G)hxwe zBPp7Vj8e^#O;eK6EI|vp49z!@s5uRE!)zj`i<)R=wwWZ&76ulE28oGAsmUe=$wp~g zNYQL!X=Gqv2AV!GH%YNHH`q#&=0uZZ!z6Q)R7*4Sq~zqJZ6s+i5IG@Bczr5T$V8<-j=S|(bin(Zb@v#CW=YLZ!+WwH@y<(2Usk~F89S|*ztnV4Cc zSsELen(rk=bE0{gr8($&Un6sqWCKf!eI#j4Ni<9}F*LJGOHDE}O*7n2ismFEv(%(y zBV%)810xF)OQQp%XihaUPBBkSG_kNWH!?FaPCQ7G=9IM5)KtsVWFr%EGgC8@LnLWV zwMYe3VPRf;%+kyt&D_8!9l`fkfv1a+S2ZL<#<4Ps!J7%F6I$>@yNkhILa%;JpH6v(7>d`5nLwv|8g5#0oG7J+<%?%99Ez&?6;8P8f z&yr<|X=-9p8fZPLp>axTVv^-Kc;tcu26gEMct{1jqA0^C)!fwB)X2gxB?WX8LE`z9 zjHZx&I%JUnSa*D44(JHB%6Q0v9qnjNkLK+xZn57sQrC6A!nWkAJrrjVy zi-}pHc~Yu*QlhD0ikVU3O(L|UCMTJLnziP}2BsE9=C=rIF*GquOtmmKvPiK=N=;5n zy-iq)X=1XWWs;>qVxobOMRIc5ot2Ck;3=bG@R?S{pqok|Gjvu~po4ef5qHUg$2{YU z!MDj;S%J>z35DM?3p$ZE7%G#Tn3tRiT61Y(Y-F02Xkl(-Y+`O=XkmJHC1X-~YEnG% z2xeBXl~q7$5opjKq|M4I4>U#qnVrf59X4y8Y-Vn0nrNP8VVG(NzRkwqjhS&__$D1db7#f%xrh)cl zSQ;CF7N(e{q!^i-8Jd_SnHw3Wn4r%qKU|4>h8r=tj$py9f)7xjIsv*KAs%$OhG}YY zie;)rl96F5Xa$c!l6i`Sp^1fwk)>s-ktzB)S&vrYycHc`J%W{#p8`Ke7Q~KEHcv7( zO*Az%F*P?dGfx7IMkS^sS{fUtrW#vVBqybqqlfro(rnBCUq}h@E{Gj(Zl08wWM-UX zWN2n;ZfXdMV-rx>keFm(nPhGW8skS>&G2L;<4IhZ1sZZzRutwIxH(V;q5J|>7H?{n zY>{GVVQyw>k_I}=6f{GYVrXD&l453TZfF4NY@zw)=}N{9g1&(oZ)KI1SyWsS4^1}l z$r+hB@B?1KQc#7?Ac^=iGjlT&^F&h%%M=r1^F+`%pOJxyp-G~ld1_*^iDfFredW(q zGUB?L9cr?b6`TP%t`JsuKzQ+>C0v%q$!X?^psj;upko`2K_}{@f-XU@v@|tLGD8c1 z=PMa=aAeu!{Ji3P(69)c0oq{!KQ9r)F;6v2Oa$$LPBctON&(OMo0udfCMBnsq?%Z! zS|l5y+xG%@f`wZHXOt%v3(8YK|0Ra}#4TOG^VYQxkK;MD!x* z)k@s!o-ofX#uNb`#tMsDFelz1F%fh~NScwQMWRu%5opdi#UeE|G1bx}#WX3|%*+hE zT6?{caWAg4?Ua+BL~%BS7y=>*Wl)fsctZn26VNFJiH2s0si_vAU^GktUBG3TY-(;~ zYH6H^ezNA9m5f($`5-tWF(tn|C_lf1Vt*hTg1( zG|@Z-6vpOBiHR18X67a-phXR-=t=b*o;n-r3C7^$h?+JnEDQ}mnISbb(LBu*eCl~> zvYACn3b-X}WNea#ZtMG%IM?JkXCxLSCYPiZxq#iU{W@d4$ykh|)`cuEgplAy z1(tROq=AuQl9Xm(47yg)$T-#964Y8uNwG8qEj=(dFg7tYF+*Q+_mwzn3lc#)>%fQn z!lD8q1aeh;s-=m!i3#YSSX1*v3u91(Bv~4pTcnyA8YG#Rr5a$YZTz;9s6~}|phcC% znMpZF%MC$d!4RQ%Q;Re+W7Cv0Ba@_519NcwVQP_*VrFWbl4@*ZW|EkMzMAvQnvtb>l6exwa@!v(aUO~f z-d|v41*IT;-uR@_q$E%q3sO`-1f9TQ@up^piKa=$hNdazhK45KQ;3a{K#S#!4U-Ja zjZ-Z#PNV<1lCc(tf1$QQse++V5!X(XmYR|`R001^jXrU4a>PX%pc zN=^jb8kTBikqlb0WMpKTn3Qa4lALI4U~Za%-Xr>ryFm-}Jd`R)ge<;;SPbFCn}LpB zG%_+wF*HmvH%tPR&nX6=tqA6zL~m$mVuoJY{8`DE0$Y-Xe4I6CxmSEnYF;{Md=z2_ zNXQ2)5^tPpW@eCTYG!7bW^8O^4%%~PWM*iVYLH@LW@ws{VrGE8K=>~{d-BuLia{3* zAnfr6i^QiUgT|7QQcX-iYvxlx;b&}YYHn$kmYSTBlA35?jD8u&zm<&9*!+X)6$mfh zGR@H3+|L%);C##mqP<(cIF=$ifnIjJsv3QBsPDfidWGeRCs>VT6WNj0?$j8Fp1g{kbMlM9%y`fkR&r82Xn`zzObbOYKFP!^*)qvA(K5}zA~hLY za~NA17?~y-r5GhzB$_6gqYtPwuVTza9dHBr3A*q-vp62II~F8{vN9bi6K`simIhvc zZwNZP-3+w#+t|n?)i@;ubmp#^xoI+byR>B$V?I6$(-L!v;bS%+dl7B{OT{M}m?tHf z8yOlIr-Ig2f^vkhxk)PMZmyKXBty{I5okT|)>Vv!_^gC1{)bh>sCGi+;>}V(S8ti8 zrWqQVnWUzGl2MvzVxo~jl8KR-Nit|s49(KERg9(hEKMuTONN})2eJ@7aAC6X#z~2Z zmZ0-!EG^8_Ow2)@QWNte1G7YvM01N&OG^WcyN22^5);S*L@0s=kJB>qKocS$33Qv` z((y)?i6)@4m`#i_-TP+e4P18Q&CfmSbNLQaLqFiHkp;cS*7N(YlmWJJ{7=w^QDmfqOq+-yxae8JR{76op{PfH` z$Z4ElOW=lsPQf=dH3!W?TbLPHSeT_6_pD+pKnWz`jm76dl<+Z0Ni|7HvPiWsH#Sc( zG&Am{O86M2C8Z=Arka_USQr=@8yode#Z(K^WK&a9&}CtkW}vkz{ZuhE(ZtL$$=KY& z*eJ<7$=KXz!Yal9TydG6n41cZO83OvR2(sB1e!NVF-bKwG%`rDuuPe_iZKsoOyVC4w_d5l~yT6pkvGpk_-(^EiFvU&8Dnkv?E{uWY0%Yd~QBy zXKhA`p=okjim9ccVQQ*rVyfxXRgCroOeo0D%quC5FNQfH%`geHd)nN{EY%{#$S7^v zDn?fVMu4uLjW5d2$%#+S%uCG$9Wnq~4sULeWSRuJDG)TOZ|Nwy0Tf2y?qG0oeo( z(l~k6D#jd~=@Yk+pfDk-6gDt7GBZs{HZ@I61s!~rG@B~nl4Nd}W@%t*2D&BE(lXI( z4pmIGFi8R30+42rYzUeN1*;e%@RDJ+7+RQtT0lmLOII;Q5;C9YU@=WG zOSDX}FtoHtOiM~KOkTE%u>@xl2b&67x&&Ia5Rj8tnOX!Ypi&XV6Vd73(8Am@4Rl_; zaiU3@VUodewCF%D4O8)2i`@P)Nl7$I1sy8_+6!l4nY>~Z#YbG58i2N=85)?SSy&pG zn5V2ntErG3i@cKvqd-YDu(SlNS}`y)PBk(#G+eccF&SrQW0*vA;F_meCYxB87^GU5 z85o%vny+5P=t|b{xADap`K39q)oNu%YbXy(L(pm|Lt_)ev{X|glT@>{lpASgZfXhI zA7q}Im$Z3P{qmY8aqXlib1 zoMvE|w1ILXQ!UdH)6zg&gpDjy4J-{du42?f?XG$igYTcSvVsf&WLP9yn5CGQ7+Dw@ zTbd;qnr>RfXpBP#yblT5#gYbUzgZX?CR?VOr&*?KUd3ntT3MJJ54q{gt->R*I0Lj( z4L($wVQgjsn%Fi>G&V|1vNSN?vWl?;HY9^iC7I~XP=rKDM=CK(wTrI=V48E;+1I33qK2WX@o_q-^PuE8;s3^5x- z+JP2df!$`7oMLR0nrxbCV4P-TW@@^P@-$#X_nI7qq)=849}#z`s07NFCD6U`5;VpM?y5%~0q zG}x&Dpj}VNDds6=NlB^6CME`lLESy@Mq2oBZSLUHEQt)`#6)8Q6XVomBV*73#7QYf zRxxUVS6{;}udK{W%}I#|ueZ!FPfoHhu>h60=4pwhW=2O>F{*(T7Zl|urxqhsIf==s z$p*=(iHRwu7NAXV$5t_hKo3gGO)Sa=6|MmpiFqaYxu6+;n-Du9ottElY-XBhU}|ZR zoS0~AnS7i|=BAh#nVOg-C8wsC8>bnXB%Yv>xoMVWNvX*erm5!UhNhOOX(y>=Zepr= za#~UfXe|wBU;e38jCO>xMqWPj5WnJ#%-s0Q;`ma~`qQMG)c7)^)41c(JjF0I)hNX* zHO1I0G11@*g-OoL+}HqgoP?QaqLG<_g~8cXj5?4mICMKcWUFp`Jalutxn*LiWvaQM znPpOHVxmRLISTDJH#M;|H8C|cPBBePOft1Rzlt%=rYf~4KRLgk(#oo|Bs0g#DmXPS zCAcy#nXFW5W?+<<20G(B4K!tLX?lU`Hkg~6r6wn*nx$A8Sr}PZBwhp!MneJ-Wi;6} zx1gjF+!BWl1%vV#7Ik1H#0(poo2OYAC#6{=rlchro1~du!kKJLjg69$49!hUl1x%f zO_P!@<0#Qgl8lorER0jl5=~Q0lgyH@;55;0Hl`>PZskuc; zqOoDBxv_a_vT542Rg8f)s4YTp=s}u=pb&(V%y=s=6B8rjL`%>?jftiPDP|VeaeB+Z z($F$BEd{i$!`M98H0cI~>D$;c)dV!gmS$#ZVPcSMd=t0LDT#@ui7BQ@ppzsMlT2<= z!{g@0MyV-DCdTF#=0-+|i59n45p}l-sIS5*!N@2IngW8(4W(9;q!#5BrKT0L3o$bA z$Hy0!BqnFagU3=+i#P?D7})iS@#oCQVsDW%D&Ma4`UIf;4crHSdO zj4VN=#U%_p&}u3*MK`IEnH3zv)`ohPhI)ny8mTE}hN`3s-PDQ_0ABP9NdN!< literal 0 HcmV?d00001 diff --git a/clients/web-game/dist/index.html b/clients/web-game/dist/index.html new file mode 100644 index 0000000..19b4ed4 --- /dev/null +++ b/clients/web-game/dist/index.html @@ -0,0 +1,151 @@ + + + + + + Trictrac + + + + + + diff --git a/clients/web-game/dist/style-398501cc5e039e60.css b/clients/web-game/dist/style-398501cc5e039e60.css new file mode 100644 index 0000000..3691894 --- /dev/null +++ b/clients/web-game/dist/style-398501cc5e039e60.css @@ -0,0 +1,1133 @@ +/* ── Google Fonts ───────────────────────────────────────────────────── */ +@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;1,400&family=Jost:wght@300;400;500&display=swap'); + +/* ── Design tokens ──────────────────────────────────────────────────── */ +:root { + --board-felt: #1d3d28; + --board-rail: #2a1508; + --field-ivory: #f0e6c8; + --field-burgundy: #7a1e2a; + --field-corner: #b8900a; + --checker-white: #f5edd8; + --checker-black: #1a0f06; + --checker-ring: #c8a448; + --ui-parchment: #f2e8d0; + --ui-parchment-dark: #e4d8b8; + --ui-ink: #2a1a08; + --ui-gold: #c8a448; + --ui-gold-dark: #8a6a28; + --ui-green-accent: #3a6b2a; + --ui-red-accent: #7a1e2a; + --font-display: 'Cormorant Garamond', Georgia, serif; + --font-ui: 'Jost', system-ui, sans-serif; +} + +/* ── Reset & base ──────────────────────────────────────────────────── */ +*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } + +body { + font-family: var(--font-ui); + background: #8a7050; + background-image: + radial-gradient(ellipse at 20% 10%, rgba(80,48,16,0.35) 0%, transparent 60%), + radial-gradient(ellipse at 80% 90%, rgba(40,24,8,0.3) 0%, transparent 55%), + repeating-linear-gradient( + 45deg, transparent, transparent 3px, + rgba(0,0,0,0.03) 3px, rgba(0,0,0,0.03) 4px + ); + display: flex; + justify-content: center; + padding: 1.5rem; + min-height: 100vh; +} + +.hidden { display: none !important; } + +/* ── Login card (§11) ───────────────────────────────────────────────── */ +.login-card { + width: 340px; + margin-top: 5vh; + border-radius: 8px; + overflow: hidden; + box-shadow: + 0 20px 60px rgba(0,0,0,0.55), + 0 0 0 1px rgba(200,164,72,0.35), + 0 0 0 5px rgba(42,21,8,0.9), + 0 0 0 6px rgba(200,164,72,0.2); + background: var(--ui-parchment); +} + +/* Decorative header — row of triangular flèches like the actual board */ +.login-card-header { + height: 52px; + background: var(--board-felt); + position: relative; + overflow: hidden; +} + +.login-board-stripe { + position: absolute; + inset: 0; + /* Alternating burgundy/ivory triangles pointing down from the top */ + background: + repeating-linear-gradient( + 90deg, + var(--field-burgundy) 0, var(--field-burgundy) 50%, + var(--field-ivory) 50%, var(--field-ivory) 100% + ); + background-size: 34px 100%; + /* Clip into downward-pointing triangles */ + clip-path: polygon( + 0% 0%, 2.94% 100%, 5.88% 0%, 8.82% 100%, 11.76% 0%, + 14.7% 100%, 17.65% 0%, 20.59% 100%, 23.53% 0%, + 26.47% 100%, 29.41% 0%, 32.35% 100%, 35.29% 0%, + 38.24% 100%, 41.18% 0%, 44.12% 100%, 47.06% 0%, + 50% 100%, 52.94% 0%, 55.88% 100%, 58.82% 0%, + 61.76% 100%, 64.71% 0%, 67.65% 100%, 70.59% 0%, + 73.53% 100%, 76.47% 0%, 79.41% 100%, 82.35% 0%, + 85.29% 100%, 88.24% 0%, 91.18% 100%, 94.12% 0%, + 97.06% 100%, 100% 0% + ); + opacity: 0.9; +} + +.login-card-body { + display: flex; + flex-direction: column; + align-items: center; + gap: 0; + padding: 1.5rem 2rem 2rem; +} + +.login-lang-switcher { + align-self: flex-end; + margin-bottom: 0.75rem; +} + +/* Override lang-switcher colours for the parchment card */ +.login-card .lang-switcher button { + color: var(--ui-ink); + border-color: rgba(42,21,8,0.2); + opacity: 0.5; +} +.login-card .lang-switcher button.lang-active { + opacity: 1; + background: rgba(42,21,8,0.08); + border-color: rgba(42,21,8,0.35); +} + +.login-title { + font-family: var(--font-display); + font-size: 3.25rem; + font-weight: 600; + color: var(--ui-ink); + letter-spacing: 0.12em; + text-align: center; + line-height: 1; + margin-bottom: 0.3rem; +} + +.login-subtitle { + font-family: var(--font-display); + font-size: 0.85rem; + color: rgba(42,26,8,0.55); + text-align: center; + letter-spacing: 0.06em; + font-style: italic; + margin-bottom: 1.25rem; +} +.login-subtitle sup { + font-size: 0.65em; + vertical-align: super; +} + +.login-ornament { + color: var(--ui-gold); + font-size: 1rem; + opacity: 0.7; + margin-bottom: 1.25rem; + letter-spacing: 0.3em; + text-align: center; +} + +.error-msg { + color: #c03030; + font-size: 0.85rem; + text-align: center; + margin-bottom: 0.5rem; +} + +.login-input { + width: 100%; + padding: 0.55rem 0.85rem; + font-size: 0.95rem; + font-family: var(--font-ui); + border: 1px solid rgba(138,106,40,0.4); + border-radius: 5px; + background: rgba(255,252,240,0.8); + color: var(--ui-ink); + outline: none; + transition: border-color 0.15s, box-shadow 0.15s; + margin-bottom: 1rem; +} +.login-input:focus { + border-color: var(--ui-gold); + box-shadow: 0 0 0 3px rgba(200,164,72,0.2); +} + +.login-actions { + display: flex; + flex-direction: column; + gap: 0.55rem; + width: 100%; +} + +/* Login buttons styled as embossed wooden tiles */ +.login-btn { + width: 100%; + padding: 0.65rem 1rem; + font-family: var(--font-ui); + font-size: 0.9rem; + font-weight: 500; + letter-spacing: 0.04em; + border: none; + border-radius: 5px; + cursor: pointer; + transition: opacity 0.15s, transform 0.1s, box-shadow 0.15s; + position: relative; +} +.login-btn:disabled { opacity: 0.35; cursor: default; } +.login-btn:not(:disabled):hover { opacity: 0.92; transform: translateY(-1px); } +.login-btn:not(:disabled):active { transform: translateY(0); } + +.login-btn-primary { + background: linear-gradient(160deg, #4a7a38 0%, #2e5222 100%); + color: #e8f0e0; + box-shadow: 0 2px 6px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.12); +} +.login-btn-secondary { + background: linear-gradient(160deg, #3a2010 0%, #241408 100%); + color: #e4d4b4; + box-shadow: 0 2px 6px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.08); +} +.login-btn-bot { + background: linear-gradient(160deg, #2a4a6a 0%, #183050 100%); + color: #d0e0f0; + box-shadow: 0 2px 6px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.08); +} + +/* ── Connecting screen ──────────────────────────────────────────────── */ +.connecting { + font-family: var(--font-display); + font-size: 1.4rem; + font-style: italic; + margin-top: 4rem; + text-align: center; + color: var(--ui-parchment); + text-shadow: 0 1px 4px rgba(0,0,0,0.4); +} + +/* ── Game-action buttons ─────────────────────────────────────────────── */ +.btn { + padding: 0.5rem 1.25rem; + font-size: 0.95rem; + font-family: var(--font-ui); + font-weight: 500; + letter-spacing: 0.03em; + border: none; + border-radius: 4px; + cursor: pointer; + transition: opacity 0.15s, box-shadow 0.15s; +} +.btn:disabled { opacity: 0.4; cursor: default; } +.btn-primary { background: var(--ui-green-accent); color: #fff; } +.btn-secondary { background: var(--board-rail); color: #e8d8b8; } +.btn-bot { background: #2a5a7a; color: #fff; } +.btn:not(:disabled):hover { + opacity: 0.9; + box-shadow: 0 2px 6px rgba(0,0,0,0.25); +} + +/* ── Game container ─────────────────────────────────────────────────── */ +/* No width: 100% — let it size to content (the board wrapper, ~832px). + This keeps the board pinned at the same horizontal position whether or + not the side panel is visible, and aligns the status bar / score panels + with the board rather than with the viewport edge. */ +.game-container { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.6rem; +} + +/* ── Language switcher (in-game) ────────────────────────────────────── */ +.lang-switcher { display: flex; gap: 0.25rem; } + +.lang-switcher button { + font-size: 0.7rem; + font-family: var(--font-ui); + letter-spacing: 0.05em; + padding: 0.15rem 0.4rem; + border: 1px solid rgba(200,164,72,0.3); + border-radius: 3px; + background: transparent; + cursor: pointer; + color: var(--ui-parchment); + opacity: 0.55; +} +.lang-switcher button.lang-active { + opacity: 1; + font-weight: 500; + background: rgba(200,164,72,0.15); + border-color: rgba(200,164,72,0.6); +} + +/* ── Top bar ─────────────────────────────────────────────────────────── */ +.top-bar { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + color: var(--ui-parchment); + font-size: 0.85rem; + opacity: 0.8; +} + +.quit-link { + font-size: 0.8rem; + color: var(--ui-parchment); + text-decoration: underline; + text-underline-offset: 2px; + cursor: pointer; + opacity: 0.7; +} +.quit-link:hover { opacity: 1; } + +/* ── Game status bar (§10b) — above board ───────────────────────────── */ +.game-status { + font-family: var(--font-display); + font-size: 1.2rem; + font-style: italic; + color: var(--ui-parchment); + text-align: center; + letter-spacing: 0.04em; + padding: 0.2rem 1rem 0; + width: 100%; + text-shadow: 0 1px 4px rgba(0,0,0,0.4); +} + +/* ── Contextual sub-prompt (§8a) ────────────────────────────────────── */ +.game-sub-prompt { + font-family: var(--font-ui); + font-size: 0.72rem; + color: rgba(240,228,192,0.5); + text-align: center; + letter-spacing: 0.04em; + padding: 0.15rem 1rem 0; + width: 100%; +} + +/* ── Player score panel ─────────────────────────────────────────────── */ +/* Horizontal banner: name on the left, score bars expanding to fill the + board width — no more empty right half on large screens. */ +.player-score-panel { + background: var(--ui-parchment); + border-radius: 5px; + padding: 0.45rem 1.25rem; + font-size: 0.88rem; + box-shadow: 0 2px 6px rgba(0,0,0,0.25); + width: 100%; + border-top: 2px solid var(--ui-gold-dark); + display: flex; + align-items: center; + gap: 1.5rem; +} + +.player-score-header { + flex-shrink: 0; + min-width: 90px; +} + +.player-name { + font-family: var(--font-display); + font-weight: 600; + font-size: 1.05rem; + color: var(--ui-ink); + letter-spacing: 0.02em; +} + +/* Bars sit side-by-side (points | holes) filling remaining width */ +.score-bars { display: flex; flex-direction: row; gap: 1.5rem; flex: 1; align-items: center; } + +.score-bar-row { + display: flex; + align-items: center; + gap: 0.5rem; + flex: 1; +} + +.score-bar-label { + font-size: 0.75rem; + color: #665544; + width: 3rem; + text-align: right; + flex-shrink: 0; +} + +/* ── Points bar ─────────────────────────────────────────────────────── */ +.score-bar { + flex: 1; + max-width: 220px; + height: 8px; + background: rgba(0,0,0,0.1); + border-radius: 4px; + overflow: hidden; + flex-shrink: 0; +} + +.score-bar-fill { + height: 100%; + border-radius: 4px; + transition: width 0.35s ease-out; +} + +.score-bar-points { background: linear-gradient(90deg, var(--ui-green-accent), #5a9b3a); } + +.score-bar-value { + font-size: 0.75rem; + color: #665544; + min-width: 2.5rem; + font-variant-numeric: tabular-nums; +} + +/* ── Hole peg tracker (§7a) ─────────────────────────────────────────── */ +.peg-track { + display: flex; + align-items: center; + gap: 3px; + flex-shrink: 0; +} + +.peg-hole { + width: 10px; + height: 10px; + border-radius: 50%; + border: 1.5px solid rgba(138,106,40,0.45); + background: rgba(0,0,0,0.06); + flex-shrink: 0; + transition: background 0.3s ease-out, border-color 0.3s, box-shadow 0.3s; +} + +.peg-hole.filled { + background: var(--ui-gold); + border-color: var(--ui-gold-dark); + box-shadow: 0 0 4px rgba(200,164,72,0.6); +} + +.bredouille-badge { + font-size: 0.62rem; + font-weight: 500; + color: #fff8e0; + background: linear-gradient(135deg, #c88800, #8a5800); + border: 1px solid rgba(200,164,72,0.5); + border-radius: 3px; + padding: 0.1em 0.4em; + letter-spacing: 0.06em; + cursor: default; + box-shadow: 0 1px 3px rgba(0,0,0,0.25); +} + +/* ── Board + side panel ─────────────────────────────────────────────── */ +/* .board-and-panel is sized to the board wrapper only; the side panel is + positioned absolutely so it floats to the right without pushing the + board and breaking its horizontal alignment. */ +.board-and-panel { + position: relative; +} + +/* The side panel is anchored to the board's RIGHT edge. Scoring panel + wrappers inside it initially overlap the board; they slide to a peek + strip after a few seconds, and reveal fully on hover. */ +.side-panel { + position: absolute; + right: -8px; + top: 10px; + z-index: 20; + display: flex; + flex-direction: column; + gap: 0.5rem; + padding-top: 0.15rem; + pointer-events: none; /* pass board clicks through the empty area */ +} + +.action-buttons { display: flex; flex-direction: column; gap: 0.5rem; } + +/* ── Dice bar ───────────────────────────────────────────────────────── */ +.dice-bar { + display: flex; + align-items: center; + gap: 0.6rem; + padding: 0.4rem 0.6rem; + background: rgba(42,21,8,0.15); + border-radius: 6px; + border: 1px solid rgba(200,164,72,0.2); + width: fit-content; +} + +/* ── Die face (SVG) ─────────────────────────────────────────────────── */ + +/* §5a — vigorous tumble: die bounces in from a random rotation */ +@keyframes die-tumble { + 0% { transform: rotate(-45deg) scale(0.4) translateY(-8px); opacity: 0; } + 25% { transform: rotate(18deg) scale(1.22) translateY(0); opacity: 1; } + 45% { transform: rotate(-10deg) scale(0.91); } + 62% { transform: rotate(6deg) scale(1.06); } + 76% { transform: rotate(-3deg) scale(0.98); } + 88% { transform: rotate(1.5deg) scale(1.01); } + 100% { transform: rotate(0deg) scale(1); opacity: 1; } +} + +.die-face { + filter: drop-shadow(0 2px 3px rgba(0,0,0,0.3)); + animation: die-tumble 0.55s cubic-bezier(0.22, 0.61, 0.36, 1) both; +} + +.die-face rect { + fill: #fffef0; + stroke: #2a1a00; + stroke-width: 2; + transition: fill 0.18s, stroke 0.18s; +} +.die-face circle { + fill: #1a0a00; + transition: fill 0.18s; +} + +/* Bar die slot — centered in the board bar */ +.bar-die-slot { + display: flex; + align-items: center; + justify-content: center; +} + +/* Double glow (§5c) */ +.die-face.die-double rect { stroke: var(--ui-gold); stroke-width: 2.5; } +.die-face.die-double { + filter: drop-shadow(0 0 6px rgba(200,164,72,0.7)) drop-shadow(0 2px 3px rgba(0,0,0,0.3)); +} + +.die-face.die-used { animation: none; opacity: 0.55; } +.die-face.die-used rect { fill: #d4d0c4; stroke: #9a8a70; } +.die-face.die-used circle { fill: #9a8a70; } + +/* ── Jan panel ──────────────────────────────────────────────────────── */ +.jan-panel { + display: flex; + flex-direction: column; + gap: 2px; + background: var(--ui-parchment); + border-radius: 5px; + padding: 0.4rem 0.9rem; + font-size: 0.88rem; + box-shadow: 0 1px 4px rgba(0,0,0,0.15); + min-width: 260px; + border-top: 2px solid rgba(138,106,40,0.35); +} + +.jan-row { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 2px 4px; + border-radius: 3px; +} +.jan-expandable { cursor: pointer; } +.jan-expandable:hover { background: rgba(0,0,0,0.05); } + +.jan-positive { color: #1a5c1a; } +.jan-negative { color: #8b1a1a; } + +.jan-label { flex: 1; } +.jan-tag { + font-size: 0.72rem; + padding: 0.1em 0.4em; + border-radius: 3px; + background: rgba(0,0,0,0.07); + color: #665544; + white-space: nowrap; +} +.jan-pts { font-weight: 600; text-align: right; min-width: 3rem; } + +.jan-moves { padding: 1px 4px 4px 1rem; display: flex; flex-direction: column; gap: 2px; } +.jan-moves.hidden { display: none; } +.jan-move-line { font-family: monospace; font-size: 0.78rem; color: #555; } + +/* ── Game-over overlay (§12) ────────────────────────────────────────── */ +.game-over-overlay { + position: fixed; + inset: 0; + background: rgba(0,0,0,0.65); + display: flex; + align-items: center; + justify-content: center; + z-index: 100; +} + +@keyframes game-over-appear { + from { transform: translateY(-24px) scale(0.94); opacity: 0; } + to { transform: translateY(0) scale(1); opacity: 1; } +} + +.game-over-box { + background: var(--ui-parchment); + border-radius: 8px; + padding: 2.5rem 3rem; + text-align: center; + box-shadow: 0 12px 40px rgba(0,0,0,0.5), 0 0 0 2px var(--ui-gold-dark); + display: flex; + flex-direction: column; + gap: 1.1rem; + min-width: 300px; + animation: game-over-appear 0.4s cubic-bezier(0.22, 0.61, 0.36, 1); +} + +.game-over-box h2 { + font-family: var(--font-display); + font-size: 2rem; + font-weight: 600; + color: var(--ui-ink); + letter-spacing: 0.06em; +} + +.game-over-winner { + font-family: var(--font-display); + font-size: 1.25rem; + color: var(--ui-green-accent); + font-style: italic; +} + +/* Final score ledger */ +.game-over-score { + display: flex; + align-items: center; + justify-content: center; + gap: 0.75rem; + padding: 0.6rem 1rem; + background: rgba(0,0,0,0.05); + border-radius: 5px; + border: 1px solid rgba(138,106,40,0.2); +} + +.game-over-score-name { + font-family: var(--font-display); + font-size: 0.9rem; + color: #665544; + font-style: italic; + max-width: 80px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.game-over-score-nums { + font-family: var(--font-display); + font-size: 2.25rem; + font-weight: 600; + color: var(--ui-ink); + letter-spacing: 0.08em; + line-height: 1; +} + +.game-over-actions { display: flex; gap: 0.75rem; justify-content: center; } + +/* ── Scoring notification panel (§6b) ───────────────────────────────── */ + +/* ── Wrapper: handles slide-in → peek → reveal lifecycle ────────────── + The wrapper starts off-screen right (translateX(100%)), slides in on + mount via animation, then Leptos adds .peeked after 3.4s to slide it + back to a 28px peek strip. */ +@keyframes scoring-panel-enter { + from { transform: translateX(100%); } + to { transform: translateX(0); } +} + +.scoring-panel-wrapper { + /* width: 290px; */ + pointer-events: auto; + animation: scoring-panel-enter 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94); + transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); + filter: drop-shadow(-4px 0 14px rgba(0,0,0,0.38)); +} + +/* Peeked: slide right by the full panel width so the board is 100% clear. + The panel's left portion stays visible in whatever free space exists to + the right of the board. */ +.scoring-panel-wrapper.peeked { + transform: translateX(100%); +} + +/* Click on the visible left strip → .revealed slides it back over the board. + A second click removes .revealed and returns to the peeked position. */ +.scoring-panel-wrapper.revealed { + transform: translateX(0); +} + +/* Pointer cursor on the peeked (clickable) strip */ +.scoring-panel-wrapper.peeked:not(.revealed) { + cursor: pointer; +} + +/* ── Inner panel card ─────────────────────────────────────────────────── */ +.scoring-panel { + background: var(--ui-parchment); + border-radius: 5px; + padding: 0.45rem 0.85rem; + font-size: 0.84rem; + box-shadow: 0 1px 4px rgba(0,0,0,0.15); + border-left: 3px solid var(--ui-green-accent); + display: flex; + flex-direction: column; + gap: 4px; + width: 100%; +} + +.scoring-total { + font-family: var(--font-display); + font-weight: 600; + font-size: 1rem; + color: #1a5c1a; + white-space: nowrap; +} + +.scoring-jan-row { + display: flex; + align-items: center; + gap: 0.4rem; + padding: 2px 3px; + border-radius: 3px; + cursor: default; + white-space: nowrap; +} +.scoring-jan-row:hover { background: rgba(0,0,0,0.05); } + +.scoring-panel-opp { border-left-color: var(--board-rail); } +.scoring-panel-opp .scoring-total { color: var(--ui-red-accent); } + +.scoring-hole { + display: flex; + align-items: center; + gap: 0.4rem; + font-weight: 600; + color: var(--ui-red-accent); + margin-top: 3px; + padding-top: 4px; + border-top: 1px solid rgba(0,0,0,0.1); +} + +.hold-go-buttons { display: flex; gap: 0.5rem; margin-top: 4px; } + +/* ── Large-screen layout: panel in free space, no peek needed ───────── + Threshold: board (832) + body-padding (48) + panel-gap (16) + panel (290) + + symmetric left margin = 1492 px. + At this width the panel fits entirely to the right of the board. */ +@media (min-width: 1492px) { + .side-panel { + right: auto; + left: calc(100% + 1rem); /* outside board, no overlap */ + } + /* Already fully visible in free space — peeked/revealed are no-ops. */ + .scoring-panel-wrapper.peeked, + .scoring-panel-wrapper.revealed { + transform: none; + cursor: default; + } +} + +/* ── Board wrapper ──────────────────────────────────────────────────── */ +.board-wrapper { + display: flex; + flex-direction: column; + gap: 3px; +} + +/* ── Zone labels (§2a) — aligned with board quarters ───────────────── */ +/* Board border(4) + padding(4) = 8px inset each side */ +.zone-labels-row { + display: flex; + gap: 4px; + padding: 0 8px; +} + +.zone-label { + font-family: var(--font-display); + font-size: 0.57rem; + font-style: italic; + color: rgba(240,228,192,0.48); + letter-spacing: 0.1em; + text-align: center; + pointer-events: none; + line-height: 1; +} + +.zone-label-quarter { width: 370px; flex-shrink: 0; } +.zone-label-bar { width: 68px; flex-shrink: 0; } + +/* ── Board ──────────────────────────────────────────────────────────── */ +.board { + background: var(--board-felt); + border: 4px solid var(--board-rail); + border-radius: 6px; + padding: 4px; + display: flex; + flex-direction: column; + gap: 4px; + user-select: none; + box-shadow: + 0 6px 16px rgba(0,0,0,0.5), + inset 0 1px 0 rgba(255,255,255,0.04); + position: relative; +} + +.board-row { display: flex; gap: 4px; } +.board-quarter { display: flex; gap: 2px; } + +.board-bar { + width: 68px; + background: var(--board-rail); + border-radius: 4px; + box-shadow: inset 0 0 6px rgba(0,0,0,0.5); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + overflow: visible; +} + +.board-center-bar { + height: 12px; + background: var(--board-rail); + border-radius: 2px; + box-shadow: inset 0 0 4px rgba(0,0,0,0.4); +} + +/* ── Fields (§1) ────────────────────────────────────────────────────── */ +/* + * Each field is a transparent rectangle over the felt. + * The triangular flèche is drawn by ::before using clip-path. + * --fc controls the triangle colour; z-index:-1 keeps the triangle + * behind checkers; isolation:isolate confines the negative z-index. + */ +.field { + --fc: var(--field-ivory); /* default triangle colour */ + width: 60px; + height: 180px; + background: transparent; /* felt shows through between triangle tips */ + isolation: isolate; /* stacking context for z-index:-1 ::before */ + border-radius: 3px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-end; + padding: 4px 2px; + position: relative; +} + +/* Bot-row triangle: wide base at bottom, tip at top */ +.field::before { + content: ''; + position: absolute; + inset: 0; + z-index: -1; /* behind checkers & corner crown */ + background: var(--fc); + clip-path: polygon(0% 100%, 50% 0%, 100% 100%); + transition: background 0.12s; +} + +/* Top-row triangle: wide base at top, tip at bottom */ +.top-row .field::before { + clip-path: polygon(0% 0%, 100% 0%, 50% 100%); +} + +.top-row .field { justify-content: flex-start; } + +/* ── Zone alternating colours (§2b) ────────────────────────────────── */ +/* petit-jan and grand-jan: burgundy / ivory */ +.board-quarter .field.zone-petit:nth-child(odd), +.board-quarter .field.zone-grand:nth-child(odd) { --fc: var(--field-burgundy); } +.board-quarter .field.zone-petit:nth-child(even), +.board-quarter .field.zone-grand:nth-child(even) { --fc: var(--field-ivory); } + +/* Opponent's grand-jan — deep slate-blue / silvery-green ivory. + Previously #1e3d32 was nearly identical to the felt (#1d3d28); now using + a clearly distinguishable cool blue that reads well against the green. */ +.board-quarter .field.zone-opponent:nth-child(odd) { --fc: #1a4f72; } +.board-quarter .field.zone-opponent:nth-child(even) { --fc: #e5eadc; } + +/* Jan de retour — warmer: amber-brown / warm amber ivory */ +.board-quarter .field.zone-retour:nth-child(odd) { --fc: #6a2810; } +.board-quarter .field.zone-retour:nth-child(even) { --fc: #f2dfa0; } + +/* ── Rest corner — before .clickable so green wins when interactive ── */ +/* .field.corner { --fc: var(--field-corner) !important; } */ + +/* Crown glyph sits behind checkers (z-index:-1) so it shows only on empty corners */ +.field.corner::after { + content: '♛'; + position: absolute; + z-index: -1; + bottom: 22px; + font-size: 0.7rem; + color: rgba(255,248,210,0.38); + pointer-events: none; + line-height: 1; +} +.top-row .field.corner::after { bottom: auto; top: 22px; } + +/* Corner pulse (§8d) — filter respects the triangle shape */ +@keyframes corner-pulse { + 0%, 100% { filter: drop-shadow(0 0 0px rgba(200,164,72,0)); } + 50% { filter: drop-shadow(0 0 7px rgba(200,164,72,0.55)); } +} +.field.corner.corner-available { + animation: corner-pulse 1.5s ease-in-out infinite; +} + +/* ── Exit-eligible highlight (§8c) — filter glow on triangle ───────── */ +@keyframes exit-glow { + 0%, 100% { filter: drop-shadow(0 0 0px rgba(232,192,96,0)); } + 50% { filter: drop-shadow(0 0 5px rgba(232,192,96,0.5)); } +} +.field.exit-eligible { + animation: exit-glow 2s ease-in-out infinite; +} + +/* ── §6c — Jan hover field highlight ────────────────────────────────── */ +.field.jan-hovered { + --fc: rgba(190, 140, 35, 0.8) !important; +} + +/* ── §6e — Hit (battue) ripple ──────────────────────────────────────── */ +@keyframes hit-ripple { + from { transform: translate(-50%, -50%) scale(0.4); opacity: 0.9; } + to { transform: translate(-50%, -50%) scale(2.2); opacity: 0; } +} +.hit-ripple { + position: absolute; + left: 50%; + width: 36px; + height: 36px; + border-radius: 50%; + border: 2px solid rgba(200, 164, 72, 0.9); + pointer-events: none; + animation: hit-ripple 0.5s ease-out forwards; +} +.hit-ripple-top { top: 26px; } +.hit-ripple-bot { bottom: 26px; } + +/* ── Interactive states — after .corner to take visual priority ─────── */ +.field.clickable { + cursor: pointer; + --fc: #8fc840 !important; +} +.field.clickable:hover { --fc: #74aa28 !important; } +.field.selected { + --fc: #5a8a18 !important; + outline: 2px solid rgba(255,255,255,0.3); + outline-offset: -2px; +} + +/* ── Field numbers ──────────────────────────────────────────────────── */ +.field-num { + font-size: 0.58rem; + color: rgba(0,0,0,0.28); + position: absolute; + bottom: 3px; + line-height: 1; + font-variant-numeric: tabular-nums; +} + +.board-quarter .field.zone-petit:nth-child(odd) .field-num, +.board-quarter .field.zone-grand:nth-child(odd) .field-num, +.board-quarter .field.zone-retour:nth-child(odd) .field-num, +.board-quarter .field.zone-opponent:nth-child(odd) .field-num { + color: rgba(240,215,190,0.38); +} + +.field.corner .field-num { color: rgba(255,248,200,0.4); } + +.top-row .field-num { bottom: auto; top: 3px; } + +/* ── Checkers ───────────────────────────────────────────────────────── */ +.checker-stack { + display: flex; + flex-direction: column; + align-items: center; +} + +.checker { + width: 40px; + height: 40px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.78rem; + font-weight: 600; + flex-shrink: 0; +} + +.checker + .checker { margin-top: -4px; } + +.checker.white { + background-image: + radial-gradient(ellipse 50% 35% at 36% 30%, + rgba(255,255,255,0.65) 0%, transparent 100%), + radial-gradient(circle, + transparent 68%, rgba(160,130,70,0.22) 68.5%, + rgba(160,130,70,0.22) 71.5%, transparent 72%), + radial-gradient(circle, + transparent 43%, rgba(160,130,70,0.17) 43.5%, + rgba(160,130,70,0.17) 46.5%, transparent 47%), + radial-gradient(circle at 38% 32%, + #ffffff 0%, var(--checker-white) 52%, #c0b288 100%); + border: 1.8px solid var(--checker-ring); + box-shadow: + 0 2px 6px rgba(0,0,0,0.4), + inset 0 -1px 3px rgba(0,0,0,0.15); + color: #443322; +} + +.checker.black { + background-image: + radial-gradient(ellipse 40% 28% at 36% 30%, + rgba(110,65,30,0.38) 0%, transparent 100%), + radial-gradient(circle, + transparent 68%, rgba(200,164,72,0.18) 68.5%, + rgba(200,164,72,0.18) 71.5%, transparent 72%), + radial-gradient(circle, + transparent 43%, rgba(200,164,72,0.13) 43.5%, + rgba(200,164,72,0.13) 46.5%, transparent 47%), + radial-gradient(circle at 38% 32%, + #4a2e1a 0%, #1c1008 45%, var(--checker-black) 100%); + border: 1.8px solid var(--checker-ring); + box-shadow: + 0 2px 6px rgba(0,0,0,0.55), + inset 0 -1px 3px rgba(0,0,0,0.4); + color: #c8b898; +} + +/* ── Hole toast (§6a) ───────────────────────────────────────────────── */ +@keyframes toast-rise { + from { transform: translate(-50%, -40%); opacity: 0; } + to { transform: translate(-50%, -50%); opacity: 1; } +} +@keyframes toast-fade { + from { opacity: 1; } + to { opacity: 0; pointer-events: none; } +} + +.hole-toast { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background: rgba(22,10,2,0.93); + border: 2px solid var(--ui-gold); + border-radius: 8px; + padding: 1.5rem 3.5rem; + text-align: center; + z-index: 50; + pointer-events: none; + box-shadow: + 0 12px 40px rgba(0,0,0,0.65), + 0 0 0 1px rgba(200,164,72,0.25), + inset 0 1px 0 rgba(200,164,72,0.1); + animation: + toast-rise 0.25s cubic-bezier(0.22, 0.61, 0.36, 1), + toast-fade 0.5s ease-in 1.4s forwards; +} + +.hole-toast-title { + font-family: var(--font-display); + font-size: 3.25rem; + font-weight: 600; + color: var(--ui-gold); + letter-spacing: 0.1em; + line-height: 1; +} + +.hole-toast-count { + font-family: var(--font-display); + font-size: 1.1rem; + color: rgba(200,164,72,0.68); + margin-top: 0.35rem; + letter-spacing: 0.06em; +} + +.hole-toast-bredouille { + font-family: var(--font-ui); + font-size: 0.75rem; + letter-spacing: 0.08em; + color: rgba(200,164,72,0.55); + margin-top: 0.4rem; + text-transform: uppercase; +} + +/* ── Bredouille toast variant (§6d) — gold shimmer, larger entrance ─── */ +@keyframes bredouille-shimmer { + 0%, 100% { box-shadow: 0 12px 40px rgba(0,0,0,0.65), 0 0 0 2px rgba(200,164,72,0.4), inset 0 0 0 rgba(200,164,72,0); } + 50% { box-shadow: 0 12px 40px rgba(0,0,0,0.65), 0 0 0 4px rgba(200,164,72,0.7), inset 0 0 24px rgba(200,164,72,0.08); } +} +.hole-toast.hole-toast-bredouille { + border-width: 2.5px; + border-color: var(--ui-gold); + padding: 2rem 4rem; + animation: + toast-rise 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), + bredouille-shimmer 0.9s ease-in-out 0.3s 2, + toast-fade 0.5s ease-in 2.2s forwards; +} +.hole-toast.hole-toast-bredouille .hole-toast-title { + font-size: 3.75rem; +} +.hole-toast.hole-toast-bredouille .hole-toast-bredouille { + font-size: 0.85rem; + color: rgba(200,164,72,0.8); + letter-spacing: 0.14em; +} + +/* ── §4a — Checker slide animation ─────────────────────────────────── */ +@keyframes checker-slide-in { + from { transform: translate(var(--slide-dx, 0px), var(--slide-dy, 0px)); } + to { transform: none; } +} +/* Only the arriving (outermost) checker animates; --slide-dx/dy are set + as inline styles on that element at render time, so no flash occurs. */ +.checker.arriving { + animation: checker-slide-in 0.28s cubic-bezier(0.25, 0.46, 0.45, 0.94); +} +/* Lift the field that owns an arriving checker above its siblings so the + checker doesn't slide under adjacent fields (isolation:isolate traps + z-index within each field's stacking context). */ +.field:has(.checker.arriving) { + isolation: auto; + z-index: 10; + position: relative; +} + +/* ── Checker lift on selected field (§4b) ───────────────────────────── */ +.field.selected .checker-stack { + transform: translateY(-5px); + filter: drop-shadow(0 8px 12px rgba(0,0,0,0.6)); + transition: transform 0.12s ease-out, filter 0.12s ease-out; +} + +/* ── Action buttons below board (§10c) ──────────────────────────────── */ +.board-actions { + display: flex; + gap: 0.55rem; + justify-content: center; + align-items: center; + flex-wrap: wrap; + min-height: 2rem; /* reserve height so layout doesn't shift when buttons appear */ +} diff --git a/client_web/index.html b/clients/web-game/index.html similarity index 100% rename from client_web/index.html rename to clients/web-game/index.html diff --git a/client_web/locales/en.json b/clients/web-game/locales/en.json similarity index 100% rename from client_web/locales/en.json rename to clients/web-game/locales/en.json diff --git a/client_web/locales/fr.json b/clients/web-game/locales/fr.json similarity index 100% rename from client_web/locales/fr.json rename to clients/web-game/locales/fr.json diff --git a/client_web/src/app.rs b/clients/web-game/src/app.rs similarity index 100% rename from client_web/src/app.rs rename to clients/web-game/src/app.rs diff --git a/client_web/src/components/board.rs b/clients/web-game/src/components/board.rs similarity index 100% rename from client_web/src/components/board.rs rename to clients/web-game/src/components/board.rs diff --git a/client_web/src/components/connecting_screen.rs b/clients/web-game/src/components/connecting_screen.rs similarity index 100% rename from client_web/src/components/connecting_screen.rs rename to clients/web-game/src/components/connecting_screen.rs diff --git a/client_web/src/components/die.rs b/clients/web-game/src/components/die.rs similarity index 100% rename from client_web/src/components/die.rs rename to clients/web-game/src/components/die.rs diff --git a/client_web/src/components/game_screen.rs b/clients/web-game/src/components/game_screen.rs similarity index 100% rename from client_web/src/components/game_screen.rs rename to clients/web-game/src/components/game_screen.rs diff --git a/client_web/src/components/login_screen.rs b/clients/web-game/src/components/login_screen.rs similarity index 100% rename from client_web/src/components/login_screen.rs rename to clients/web-game/src/components/login_screen.rs diff --git a/client_web/src/components/mod.rs b/clients/web-game/src/components/mod.rs similarity index 100% rename from client_web/src/components/mod.rs rename to clients/web-game/src/components/mod.rs diff --git a/client_web/src/components/score_panel.rs b/clients/web-game/src/components/score_panel.rs similarity index 100% rename from client_web/src/components/score_panel.rs rename to clients/web-game/src/components/score_panel.rs diff --git a/client_web/src/components/scoring.rs b/clients/web-game/src/components/scoring.rs similarity index 100% rename from client_web/src/components/scoring.rs rename to clients/web-game/src/components/scoring.rs diff --git a/client_web/src/main.rs b/clients/web-game/src/main.rs similarity index 100% rename from client_web/src/main.rs rename to clients/web-game/src/main.rs diff --git a/client_web/src/sound.rs b/clients/web-game/src/sound.rs similarity index 100% rename from client_web/src/sound.rs rename to clients/web-game/src/sound.rs diff --git a/client_web/src/trictrac/backend.rs b/clients/web-game/src/trictrac/backend.rs similarity index 100% rename from client_web/src/trictrac/backend.rs rename to clients/web-game/src/trictrac/backend.rs diff --git a/client_web/src/trictrac/bot_local.rs b/clients/web-game/src/trictrac/bot_local.rs similarity index 100% rename from client_web/src/trictrac/bot_local.rs rename to clients/web-game/src/trictrac/bot_local.rs diff --git a/client_web/src/trictrac/mod.rs b/clients/web-game/src/trictrac/mod.rs similarity index 100% rename from client_web/src/trictrac/mod.rs rename to clients/web-game/src/trictrac/mod.rs diff --git a/client_web/src/trictrac/types.rs b/clients/web-game/src/trictrac/types.rs similarity index 100% rename from client_web/src/trictrac/types.rs rename to clients/web-game/src/trictrac/types.rs diff --git a/clients/web-user-portal/Cargo.toml b/clients/web-user-portal/Cargo.toml new file mode 100644 index 0000000..6afa767 --- /dev/null +++ b/clients/web-user-portal/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "web-user-portal" +version = "0.1.0" +edition = "2024" + +[dependencies] +leptos = { version = "0.7", features = ["csr"] } +leptos_router = { version = "0.7" } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1" + +[target.'cfg(target_arch = "wasm32")'.dependencies] +wasm-bindgen = "0.2" +wasm-bindgen-futures = "0.4" +gloo-net = { version = "0.5", features = ["http"] } +js-sys = "0.3" +web-sys = { version = "0.3", features = ["RequestCredentials"] } diff --git a/clients/web-user-portal/Trunk.toml b/clients/web-user-portal/Trunk.toml new file mode 100644 index 0000000..57a2aaa --- /dev/null +++ b/clients/web-user-portal/Trunk.toml @@ -0,0 +1,2 @@ +[serve] +port = 9092 diff --git a/clients/web-user-portal/assets/style.css b/clients/web-user-portal/assets/style.css new file mode 100644 index 0000000..3e7462a --- /dev/null +++ b/clients/web-user-portal/assets/style.css @@ -0,0 +1,103 @@ +*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } + +body { + font-family: system-ui, sans-serif; + background: #f5f5f5; + color: #1a1a1a; + min-height: 100vh; +} + +nav { + background: #1a1a2e; + color: #fff; + padding: 0.75rem 1.5rem; + display: flex; + align-items: center; + gap: 1.5rem; +} +nav a { color: #ccc; text-decoration: none; } +nav a:hover { color: #fff; } +nav .brand { font-weight: 700; font-size: 1.1rem; color: #fff; } +nav .spacer { flex: 1; } + +main { max-width: 800px; margin: 2rem auto; padding: 0 1rem; } + +h1 { font-size: 1.6rem; margin-bottom: 1rem; } +h2 { font-size: 1.2rem; margin-bottom: 0.75rem; } + +.card { + background: #fff; + border-radius: 8px; + padding: 1.5rem; + box-shadow: 0 1px 3px rgba(0,0,0,0.1); + margin-bottom: 1.5rem; +} + +.tabs { display: flex; gap: 0; margin-bottom: 1.5rem; } +.tab-btn { + padding: 0.5rem 1.25rem; + border: 1px solid #ddd; + background: #f5f5f5; + cursor: pointer; + font-size: 0.95rem; +} +.tab-btn:first-child { border-radius: 6px 0 0 6px; } +.tab-btn:last-child { border-radius: 0 6px 6px 0; border-left: none; } +.tab-btn.active { background: #1a1a2e; color: #fff; border-color: #1a1a2e; } + +label { display: block; font-size: 0.85rem; margin-bottom: 0.25rem; color: #555; } +input[type=text], input[type=email], input[type=password] { + width: 100%; + padding: 0.5rem 0.75rem; + border: 1px solid #ddd; + border-radius: 5px; + font-size: 0.95rem; + margin-bottom: 0.75rem; +} +input:focus { outline: none; border-color: #1a1a2e; } + +button[type=submit], .btn { + padding: 0.5rem 1.25rem; + background: #1a1a2e; + color: #fff; + border: none; + border-radius: 5px; + cursor: pointer; + font-size: 0.95rem; +} +button[type=submit]:hover, .btn:hover { background: #2d2d5e; } +button[type=submit]:disabled { opacity: 0.6; cursor: not-allowed; } + +.error { color: #c0392b; font-size: 0.875rem; margin-top: 0.5rem; } +.success { color: #27ae60; font-size: 0.875rem; margin-top: 0.5rem; } + +.stats-grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 1rem; + margin-bottom: 1.5rem; +} +.stat-box { + background: #fff; + border-radius: 8px; + padding: 1rem; + text-align: center; + box-shadow: 0 1px 3px rgba(0,0,0,0.1); +} +.stat-box .value { font-size: 2rem; font-weight: 700; } +.stat-box .label { font-size: 0.8rem; color: #777; margin-top: 0.25rem; } + +table { width: 100%; border-collapse: collapse; font-size: 0.9rem; } +th { text-align: left; padding: 0.5rem 0.75rem; border-bottom: 2px solid #eee; color: #555; } +td { padding: 0.5rem 0.75rem; border-bottom: 1px solid #f0f0f0; } +tr:last-child td { border-bottom: none; } +tr:hover td { background: #fafafa; } +a { color: #2c5cc5; text-decoration: none; } +a:hover { text-decoration: underline; } + +.outcome-win { color: #27ae60; font-weight: 600; } +.outcome-loss { color: #c0392b; font-weight: 600; } +.outcome-draw { color: #e67e22; font-weight: 600; } + +.loading { color: #777; padding: 1rem 0; } +.empty { color: #aaa; font-style: italic; padding: 1rem 0; } diff --git a/clients/web-user-portal/index.html b/clients/web-user-portal/index.html new file mode 100644 index 0000000..135091c --- /dev/null +++ b/clients/web-user-portal/index.html @@ -0,0 +1,11 @@ + + + + + + Player Portal + + + + + diff --git a/clients/web-user-portal/src/api.rs b/clients/web-user-portal/src/api.rs new file mode 100644 index 0000000..b6dced9 --- /dev/null +++ b/clients/web-user-portal/src/api.rs @@ -0,0 +1,191 @@ +use serde::{Deserialize, Serialize}; + +// In debug builds trunk serves on 9092 while the relay is on 8080 — use full URL. +// In release builds the portal is served by the relay itself — use relative paths. +#[cfg(debug_assertions)] +const BASE: &str = "http://localhost:8080"; +#[cfg(not(debug_assertions))] +const BASE: &str = ""; + +fn url(path: &str) -> String { + format!("{BASE}{path}") +} + +// ── Response types ──────────────────────────────────────────────────────────── + +#[derive(Clone, Debug, Deserialize)] +pub struct MeResponse { + pub id: i64, + pub username: String, +} + +#[derive(Clone, Debug, Deserialize)] +pub struct UserProfile { + pub id: i64, + pub username: String, + pub created_at: i64, + pub total_games: i64, + pub wins: i64, + pub losses: i64, + pub draws: i64, +} + +#[derive(Clone, Debug, Deserialize)] +pub struct GameSummary { + pub id: i64, + pub game_id: String, + pub room_code: String, + pub started_at: i64, + pub ended_at: Option, + pub result: Option, + pub outcome: Option, +} + +#[derive(Clone, Debug, Deserialize)] +pub struct GamesResponse { + pub games: Vec, +} + +#[derive(Clone, Debug, Deserialize)] +pub struct Participant { + pub player_id: i64, + pub outcome: Option, + pub username: Option, +} + +#[derive(Clone, Debug, Deserialize)] +pub struct GameDetail { + pub id: i64, + pub game_id: String, + pub room_code: String, + pub started_at: i64, + pub ended_at: Option, + pub result: Option, + pub participants: Vec, +} + +// ── Request bodies ──────────────────────────────────────────────────────────── + +#[derive(Serialize)] +pub struct RegisterBody<'a> { + pub username: &'a str, + pub email: &'a str, + pub password: &'a str, +} + +#[derive(Serialize)] +pub struct LoginBody<'a> { + pub username: &'a str, + pub password: &'a str, +} + +// ── Fetch helpers ───────────────────────────────────────────────────────────── + +pub async fn get_me() -> Result { + let resp = gloo_net::http::Request::get(&url("/auth/me")) + .credentials(web_sys::RequestCredentials::Include) + .send() + .await + .map_err(|e| e.to_string())?; + if resp.status() == 200 { + resp.json::().await.map_err(|e| e.to_string()) + } else { + Err(format!("status {}", resp.status())) + } +} + +pub async fn post_login(username: &str, password: &str) -> Result { + let body = LoginBody { username, password }; + let resp = gloo_net::http::Request::post(&url("/auth/login")) + .credentials(web_sys::RequestCredentials::Include) + .json(&body) + .map_err(|e| e.to_string())? + .send() + .await + .map_err(|e| e.to_string())?; + if resp.status() == 200 { + resp.json::().await.map_err(|e| e.to_string()) + } else { + let text = resp.text().await.unwrap_or_default(); + Err(text) + } +} + +pub async fn post_register(username: &str, email: &str, password: &str) -> Result { + let body = RegisterBody { username, email, password }; + let resp = gloo_net::http::Request::post(&url("/auth/register")) + .credentials(web_sys::RequestCredentials::Include) + .json(&body) + .map_err(|e| e.to_string())? + .send() + .await + .map_err(|e| e.to_string())?; + if resp.status() == 201 { + resp.json::().await.map_err(|e| e.to_string()) + } else { + let text = resp.text().await.unwrap_or_default(); + Err(text) + } +} + +pub async fn post_logout() -> Result<(), String> { + let resp = gloo_net::http::Request::post(&url("/auth/logout")) + .credentials(web_sys::RequestCredentials::Include) + .send() + .await + .map_err(|e| e.to_string())?; + if resp.status() == 204 { + Ok(()) + } else { + Err(format!("status {}", resp.status())) + } +} + +pub async fn get_user_profile(username: &str) -> Result { + let resp = gloo_net::http::Request::get(&url(&format!("/users/{username}"))) + .credentials(web_sys::RequestCredentials::Include) + .send() + .await + .map_err(|e| e.to_string())?; + if resp.status() == 200 { + resp.json::().await.map_err(|e| e.to_string()) + } else { + Err(format!("status {}", resp.status())) + } +} + +pub async fn get_user_games(username: &str, page: i64) -> Result { + let resp = gloo_net::http::Request::get(&url(&format!("/users/{username}/games?page={page}&per_page=20"))) + .credentials(web_sys::RequestCredentials::Include) + .send() + .await + .map_err(|e| e.to_string())?; + if resp.status() == 200 { + resp.json::().await.map_err(|e| e.to_string()) + } else { + Err(format!("status {}", resp.status())) + } +} + +pub async fn get_game_detail(id: i64) -> Result { + let resp = gloo_net::http::Request::get(&url(&format!("/games/{id}"))) + .credentials(web_sys::RequestCredentials::Include) + .send() + .await + .map_err(|e| e.to_string())?; + if resp.status() == 200 { + resp.json::().await.map_err(|e| e.to_string()) + } else { + Err(format!("status {}", resp.status())) + } +} + +// ── Utilities ───────────────────────────────────────────────────────────────── + +pub fn format_ts(ts: i64) -> String { + let ms = (ts * 1000) as f64; + let date = js_sys::Date::new(&wasm_bindgen::JsValue::from_f64(ms)); + date.to_locale_string("en-GB", &wasm_bindgen::JsValue::UNDEFINED) + .as_string() + .unwrap_or_default() +} diff --git a/clients/web-user-portal/src/app.rs b/clients/web-user-portal/src/app.rs new file mode 100644 index 0000000..92a121a --- /dev/null +++ b/clients/web-user-portal/src/app.rs @@ -0,0 +1,67 @@ +use leptos::prelude::*; +use leptos_router::{components::{Route, Router, Routes, A}, path}; + +use crate::api::{self, MeResponse}; +use crate::pages::{home::HomePage, profile::ProfilePage, game::GamePage}; + +#[derive(Clone, Debug)] +pub struct AuthState { + pub user: RwSignal>, +} + +#[component] +pub fn App() -> impl IntoView { + let user = RwSignal::new(None::); + provide_context(AuthState { user }); + + // Probe session on load. + let auth = use_context::().unwrap(); + let _ = LocalResource::new(move || async move { + if let Ok(me) = api::get_me().await { + auth.user.set(Some(me)); + } + }); + + view! { + +

  • + + {move || auth_username.get().map(|u| view! { +

    "Playing as " {u}

    + })} +
    ) -> impl IntoView { let i18n = use_i18n(); @@ -11,6 +16,8 @@ pub fn LoginScreen(error: Option) -> impl IntoView { let cmd_tx = use_context::>() .expect("UnboundedSender not found in context"); + let auth_username = + use_context::>>().expect("auth_username not found in context"); let cmd_tx_create = cmd_tx.clone(); let cmd_tx_join = cmd_tx.clone(); @@ -47,6 +54,19 @@ pub fn LoginScreen(error: Option) -> impl IntoView { {error.map(|err| view! {

    {err}

    })} + // Auth status badge + {move || match auth_username.get() { + Some(u) => view! { +

    "✓ Logged in as " {u}

    + }.into_any(), + None => view! { +

    + "Not logged in — games won't be tracked. " + "Create account" +

    + }.into_any(), + }} + Date: Fri, 24 Apr 2026 17:22:59 +0200 Subject: [PATCH 38/78] doc: maj readme --- README.md | 9 +- clients/web-game/dist/index.html | 151 ------------------------------- 2 files changed, 3 insertions(+), 157 deletions(-) delete mode 100644 clients/web-game/dist/index.html diff --git a/README.md b/README.md index 1145c33..4e7789f 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,7 @@ This is a game of [Trictrac](https://en.wikipedia.org/wiki/Trictrac) rust implementation. -The project is on its early stages. -Rules (without "schools") are implemented, as well as a rudimentary terminal interface which allow you to play against a bot which plays randomly. - -Training of AI bots is the work in progress. +The project is still on its early stages. ## Usage @@ -29,9 +26,9 @@ Playing with the cli against the 'random' bot: `cargo run --bin=client_cli -- -- - [x] rules - [x] command line interface - [x] basic bot (random play) +- [ ] web client (in progress) +- [ ] network game (in progress) - [ ] AI bot -- [ ] network game -- [ ] web client ## Code structure diff --git a/clients/web-game/dist/index.html b/clients/web-game/dist/index.html deleted file mode 100644 index 19b4ed4..0000000 --- a/clients/web-game/dist/index.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - Trictrac - - - - - - From 557f0249f8560df9bc3397e1531ea3d669458ff3 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sat, 25 Apr 2026 16:49:25 +0200 Subject: [PATCH 39/78] feat: merge web-user-portal & web-game --- Cargo.lock | 23 + Cargo.toml | 1 + clients/web/Cargo.toml | 41 + clients/web/Trunk.toml | 2 + clients/web/assets/diceroll.mp3 | Bin 0 -> 32896 bytes clients/web/assets/style.css | 1396 +++++++++++++++++ clients/web/index.html | 12 + clients/web/locales/en.json | 96 ++ clients/web/locales/fr.json | 96 ++ clients/web/src/api.rs | 191 +++ clients/web/src/app.rs | 459 ++++++ clients/web/src/game/components/board.rs | 594 +++++++ .../src/game/components/connecting_screen.rs | 9 + clients/web/src/game/components/die.rs | 53 + .../web/src/game/components/game_screen.rs | 470 ++++++ clients/web/src/game/components/mod.rs | 9 + .../web/src/game/components/score_panel.rs | 70 + clients/web/src/game/components/scoring.rs | 209 +++ clients/web/src/game/mod.rs | 4 + clients/web/src/game/session.rs | 253 +++ clients/web/src/game/sound.rs | 182 +++ clients/web/src/game/trictrac/backend.rs | 487 ++++++ clients/web/src/game/trictrac/bot_local.rs | 43 + clients/web/src/game/trictrac/mod.rs | 3 + clients/web/src/game/trictrac/types.rs | 256 +++ clients/web/src/main.rs | 14 + clients/web/src/nav.rs | 51 + clients/web/src/portal/account.rs | 166 ++ clients/web/src/portal/game_detail.rs | 109 ++ clients/web/src/portal/lobby.rs | 88 ++ clients/web/src/portal/mod.rs | 4 + clients/web/src/portal/profile.rs | 153 ++ justfile | 21 +- server/relay-server/src/main.rs | 7 +- 34 files changed, 5562 insertions(+), 10 deletions(-) create mode 100644 clients/web/Cargo.toml create mode 100644 clients/web/Trunk.toml create mode 100644 clients/web/assets/diceroll.mp3 create mode 100644 clients/web/assets/style.css create mode 100644 clients/web/index.html create mode 100644 clients/web/locales/en.json create mode 100644 clients/web/locales/fr.json create mode 100644 clients/web/src/api.rs create mode 100644 clients/web/src/app.rs create mode 100644 clients/web/src/game/components/board.rs create mode 100644 clients/web/src/game/components/connecting_screen.rs create mode 100644 clients/web/src/game/components/die.rs create mode 100644 clients/web/src/game/components/game_screen.rs create mode 100644 clients/web/src/game/components/mod.rs create mode 100644 clients/web/src/game/components/score_panel.rs create mode 100644 clients/web/src/game/components/scoring.rs create mode 100644 clients/web/src/game/mod.rs create mode 100644 clients/web/src/game/session.rs create mode 100644 clients/web/src/game/sound.rs create mode 100644 clients/web/src/game/trictrac/backend.rs create mode 100644 clients/web/src/game/trictrac/bot_local.rs create mode 100644 clients/web/src/game/trictrac/mod.rs create mode 100644 clients/web/src/game/trictrac/types.rs create mode 100644 clients/web/src/main.rs create mode 100644 clients/web/src/nav.rs create mode 100644 clients/web/src/portal/account.rs create mode 100644 clients/web/src/portal/game_detail.rs create mode 100644 clients/web/src/portal/lobby.rs create mode 100644 clients/web/src/portal/mod.rs create mode 100644 clients/web/src/portal/profile.rs diff --git a/Cargo.lock b/Cargo.lock index fcb2626..8ce19af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8700,6 +8700,29 @@ dependencies = [ "transpose", ] +[[package]] +name = "trictrac-web" +version = "0.1.0" +dependencies = [ + "backbone-lib", + "futures", + "getrandom 0.3.4", + "gloo-net 0.5.0", + "gloo-storage", + "gloo-timers", + "js-sys", + "leptos", + "leptos_i18n", + "leptos_router", + "rand 0.9.3", + "serde", + "serde_json", + "trictrac-store", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "try-lock" version = "0.2.5" diff --git a/Cargo.toml b/Cargo.toml index c0c930c..94a1c6b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,6 +5,7 @@ members = [ "store", "clients/cli", "clients/backbone-lib", + "clients/web", "clients/web-game", "clients/web-user-portal", "server/protocol", diff --git a/clients/web/Cargo.toml b/clients/web/Cargo.toml new file mode 100644 index 0000000..04857a6 --- /dev/null +++ b/clients/web/Cargo.toml @@ -0,0 +1,41 @@ +[package] +name = "trictrac-web" +version = "0.1.0" +edition = "2021" + +[package.metadata.leptos-i18n] +default = "en" +locales = ["en", "fr"] + +[dependencies] +leptos_i18n = { version = "0.5", features = ["csr", "interpolate_display"] } +leptos_router = { version = "0.7" } +trictrac-store = { path = "../../store" } +backbone-lib = { path = "../backbone-lib" } +leptos = { version = "0.7", features = ["csr"] } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1" +futures = "0.3" +rand = "0.9" +gloo-storage = "0.3" + +[target.'cfg(target_arch = "wasm32")'.dependencies] +wasm-bindgen = "0.2" +wasm-bindgen-futures = "0.4" +gloo-net = { version = "0.5", features = ["http"] } +gloo-timers = { version = "0.3", features = ["futures"] } +getrandom = { version = "0.3", features = ["wasm_js"] } +js-sys = "0.3" +web-sys = { version = "0.3", features = [ + "RequestCredentials", + "AudioContext", + "AudioParam", + "AudioNode", + "AudioDestinationNode", + "AudioScheduledSourceNode", + "GainNode", + "OscillatorNode", + "OscillatorType", + "BaseAudioContext", + "HtmlAudioElement", +] } diff --git a/clients/web/Trunk.toml b/clients/web/Trunk.toml new file mode 100644 index 0000000..bae5297 --- /dev/null +++ b/clients/web/Trunk.toml @@ -0,0 +1,2 @@ +[serve] +port = 9091 diff --git a/clients/web/assets/diceroll.mp3 b/clients/web/assets/diceroll.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b16adff42da3003b35d59566b353a5db2fa0c7b7 GIT binary patch literal 32896 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 literal 0 HcmV?d00001 diff --git a/clients/web/assets/style.css b/clients/web/assets/style.css new file mode 100644 index 0000000..b2d89a4 --- /dev/null +++ b/clients/web/assets/style.css @@ -0,0 +1,1396 @@ +/* ── Google Fonts ───────────────────────────────────────────────── */ +@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;1,400&family=Jost:wght@300;400;500&display=swap'); + +/* ── Design tokens ──────────────────────────────────────────────────── */ +:root { + --board-felt: #1d3d28; + --board-rail: #2a1508; + --field-ivory: #f0e6c8; + --field-burgundy: #7a1e2a; + --field-corner: #b8900a; + --checker-white: #f5edd8; + --checker-black: #1a0f06; + --checker-ring: #c8a448; + --ui-parchment: #f2e8d0; + --ui-parchment-dark: #e4d8b8; + --ui-ink: #2a1a08; + --ui-gold: #c8a448; + --ui-gold-dark: #8a6a28; + --ui-green-accent: #3a6b2a; + --ui-red-accent: #7a1e2a; + --font-display: 'Cormorant Garamond', Georgia, serif; + --font-ui: 'Jost', system-ui, sans-serif; +} + +/* ── Reset & base ──────────────────────────────────────────────────── */ +*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } + +body { + font-family: var(--font-ui); + background: #8a7050; + background-image: + radial-gradient(ellipse at 20% 10%, rgba(80,48,16,0.35) 0%, transparent 60%), + radial-gradient(ellipse at 80% 90%, rgba(40,24,8,0.3) 0%, transparent 55%), + repeating-linear-gradient( + 45deg, transparent, transparent 3px, + rgba(0,0,0,0.03) 3px, rgba(0,0,0,0.03) 4px + ); + display: flex; + flex-direction: column; + min-height: 100vh; +} + +.hidden { display: none !important; } + +/* ── Site navigation ─────────────────────────────────────────────── */ +.site-nav { + background: var(--board-rail); + border-bottom: 2px solid var(--ui-gold-dark); + padding: 0 1.5rem; + height: 52px; + display: flex; + align-items: center; + gap: 1.5rem; + position: sticky; + top: 0; + z-index: 50; + box-shadow: 0 2px 8px rgba(0,0,0,0.4); + flex-shrink: 0; +} + +.site-nav-brand { + font-family: var(--font-display); + font-size: 1.5rem; + font-weight: 600; + color: var(--ui-gold); + text-decoration: none; + letter-spacing: 0.1em; +} +.site-nav-brand:hover { color: #e0b840; } + +.site-nav-spacer { flex: 1; } + +.site-nav a { + font-family: var(--font-ui); + font-size: 0.9rem; + color: var(--ui-parchment); + text-decoration: none; + opacity: 0.8; + transition: opacity 0.15s, color 0.15s; +} +.site-nav a:hover { opacity: 1; } + +.site-nav-btn { + padding: 0.3rem 0.9rem; + font-family: var(--font-ui); + font-size: 0.85rem; + font-weight: 500; + letter-spacing: 0.03em; + border: 1px solid rgba(200,164,72,0.4); + border-radius: 4px; + background: transparent; + color: var(--ui-parchment); + cursor: pointer; + transition: background 0.15s, border-color 0.15s; +} +.site-nav-btn:hover { + background: rgba(200,164,72,0.12); + border-color: var(--ui-gold); +} + +/* ── Portal main content area ────────────────────────────────────── */ +.portal-main { + flex: 1; + max-width: 900px; + width: 100%; + margin: 2rem auto; + padding: 0 1.5rem; +} + +.portal-card { + background: var(--ui-parchment); + border: 1px solid rgba(200,164,72,0.3); + border-top: 3px solid var(--ui-gold-dark); + border-radius: 6px; + padding: 1.75rem 2rem; + box-shadow: 0 4px 16px rgba(0,0,0,0.18); + margin-bottom: 1.5rem; +} + +.portal-card h1 { + font-family: var(--font-display); + font-size: 2rem; + font-weight: 600; + color: var(--ui-ink); + letter-spacing: 0.04em; + margin-bottom: 0.25rem; +} +.portal-card h2 { + font-family: var(--font-display); + font-size: 1.35rem; + font-weight: 600; + color: var(--ui-ink); + margin-bottom: 0.75rem; +} + +.portal-meta { + font-size: 0.85rem; + color: #665544; + margin-bottom: 1.5rem; + font-family: var(--font-ui); +} + +/* ── Stats grid ──────────────────────────────────────────────────── */ +.stats-grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 1rem; + margin-bottom: 1.5rem; +} +.stat-box { + background: var(--ui-parchment); + border: 1px solid rgba(200,164,72,0.28); + border-radius: 6px; + padding: 1rem; + text-align: center; + box-shadow: 0 1px 4px rgba(0,0,0,0.1); +} +.stat-box .value { + font-family: var(--font-display); + font-size: 2.2rem; + font-weight: 600; + color: var(--ui-gold-dark); +} +.stat-box .label { + font-size: 0.78rem; + color: #665544; + margin-top: 0.2rem; + letter-spacing: 0.04em; + text-transform: uppercase; +} + +/* ── Tables ──────────────────────────────────────────────────────── */ +table { + width: 100%; + border-collapse: collapse; + font-size: 0.9rem; + font-family: var(--font-ui); +} +th { + text-align: left; + padding: 0.5rem 0.75rem; + border-bottom: 2px solid rgba(200,164,72,0.4); + color: #665544; + font-weight: 500; + font-size: 0.8rem; + letter-spacing: 0.05em; + text-transform: uppercase; +} +td { + padding: 0.5rem 0.75rem; + border-bottom: 1px solid rgba(200,164,72,0.12); + color: var(--ui-ink); +} +tr:last-child td { border-bottom: none; } +tr:hover td { background: rgba(200,164,72,0.05); } + +a { color: var(--ui-gold-dark); text-decoration: none; } +a:hover { text-decoration: underline; } + +/* ── Outcome classes ─────────────────────────────────────────────── */ +.outcome-win { color: var(--ui-green-accent); font-weight: 600; } +.outcome-loss { color: var(--ui-red-accent); font-weight: 600; } +.outcome-draw { color: #c07020; font-weight: 600; } + +/* ── Portal tabs ─────────────────────────────────────────────────── */ +.portal-tabs { + display: flex; + gap: 0; + margin-bottom: 1.5rem; + border-bottom: 1px solid rgba(200,164,72,0.3); +} +.portal-tab-btn { + padding: 0.55rem 1.5rem; + font-family: var(--font-ui); + font-size: 0.9rem; + background: transparent; + border: none; + cursor: pointer; + color: #665544; + border-bottom: 2px solid transparent; + margin-bottom: -1px; + transition: color 0.15s, border-color 0.15s; +} +.portal-tab-btn.active { + color: var(--ui-ink); + border-bottom-color: var(--ui-gold-dark); + font-weight: 500; +} + +/* ── Portal form ─────────────────────────────────────────────────── */ +.portal-label { + display: block; + font-size: 0.82rem; + color: #665544; + margin-bottom: 0.3rem; + letter-spacing: 0.03em; +} +.portal-input { + width: 100%; + padding: 0.55rem 0.85rem; + font-size: 0.95rem; + font-family: var(--font-ui); + border: 1px solid rgba(138,106,40,0.35); + border-radius: 5px; + background: rgba(255,252,240,0.8); + color: var(--ui-ink); + outline: none; + margin-bottom: 1rem; + transition: border-color 0.15s, box-shadow 0.15s; +} +.portal-input:focus { + border-color: var(--ui-gold); + box-shadow: 0 0 0 3px rgba(200,164,72,0.18); +} +.portal-submit-btn { + padding: 0.6rem 2rem; + font-family: var(--font-ui); + font-size: 0.9rem; + font-weight: 500; + background: linear-gradient(160deg, #4a7a38 0%, #2e5222 100%); + color: #e8f0e0; + border: none; + border-radius: 5px; + cursor: pointer; + box-shadow: 0 2px 5px rgba(0,0,0,0.25); + transition: opacity 0.15s; +} +.portal-submit-btn:disabled { opacity: 0.45; cursor: not-allowed; } +.portal-submit-btn:not(:disabled):hover { opacity: 0.9; } + +.portal-page-btn { + padding: 0.35rem 0.9rem; + font-family: var(--font-ui); + font-size: 0.85rem; + background: var(--board-rail); + color: var(--ui-parchment); + border: none; + border-radius: 4px; + cursor: pointer; + opacity: 0.85; + transition: opacity 0.15s; +} +.portal-page-btn:hover { opacity: 1; } + +.portal-loading { color: #665544; font-style: italic; padding: 1rem 0; } +.portal-empty { color: #aa9070; font-style: italic; padding: 1rem 0; } +.portal-error { color: var(--ui-red-accent); font-size: 0.875rem; margin-top: 0.5rem; } +.portal-success { color: var(--ui-green-accent); font-size: 0.875rem; margin-top: 0.5rem; } + +/* ── Game overlay (full-screen, covers portal during play) ───────── */ +.game-overlay { + position: fixed; + inset: 0; + background: #8a7050; + background-image: + radial-gradient(ellipse at 20% 10%, rgba(80,48,16,0.35) 0%, transparent 60%), + radial-gradient(ellipse at 80% 90%, rgba(40,24,8,0.3) 0%, transparent 55%), + repeating-linear-gradient( + 45deg, transparent, transparent 3px, + rgba(0,0,0,0.03) 3px, rgba(0,0,0,0.03) 4px + ); + z-index: 200; + display: flex; + justify-content: center; + align-items: flex-start; + padding: 1.5rem; + overflow-y: auto; +} + +/* ── Login card (§11) ───────────────────────────────────────────────── */ +.login-card { + width: 340px; + margin-top: 5vh; + border-radius: 8px; + overflow: hidden; + box-shadow: + 0 20px 60px rgba(0,0,0,0.55), + 0 0 0 1px rgba(200,164,72,0.35), + 0 0 0 5px rgba(42,21,8,0.9), + 0 0 0 6px rgba(200,164,72,0.2); + background: var(--ui-parchment); +} + +/* Decorative header — row of triangular flèches like the actual board */ +.login-card-header { + height: 52px; + background: var(--board-felt); + position: relative; + overflow: hidden; +} + +.login-board-stripe { + position: absolute; + inset: 0; + background: + repeating-linear-gradient( + 90deg, + var(--field-burgundy) 0, var(--field-burgundy) 50%, + var(--field-ivory) 50%, var(--field-ivory) 100% + ); + background-size: 34px 100%; + clip-path: polygon( + 0% 0%, 2.94% 100%, 5.88% 0%, 8.82% 100%, 11.76% 0%, + 14.7% 100%, 17.65% 0%, 20.59% 100%, 23.53% 0%, + 26.47% 100%, 29.41% 0%, 32.35% 100%, 35.29% 0%, + 38.24% 100%, 41.18% 0%, 44.12% 100%, 47.06% 0%, + 50% 100%, 52.94% 0%, 55.88% 100%, 58.82% 0%, + 61.76% 100%, 64.71% 0%, 67.65% 100%, 70.59% 0%, + 73.53% 100%, 76.47% 0%, 79.41% 100%, 82.35% 0%, + 85.29% 100%, 88.24% 0%, 91.18% 100%, 94.12% 0%, + 97.06% 100%, 100% 0% + ); + opacity: 0.9; +} + +.login-card-body { + display: flex; + flex-direction: column; + align-items: center; + gap: 0; + padding: 1.5rem 2rem 2rem; +} + +.login-lang-switcher { + align-self: flex-end; + margin-bottom: 0.75rem; +} + +/* Override lang-switcher colours for the parchment card */ +.login-card .lang-switcher button { + color: var(--ui-ink); + border-color: rgba(42,21,8,0.2); + opacity: 0.5; +} +.login-card .lang-switcher button.lang-active { + opacity: 1; + background: rgba(42,21,8,0.08); + border-color: rgba(42,21,8,0.35); +} + +.login-title { + font-family: var(--font-display); + font-size: 3.25rem; + font-weight: 600; + color: var(--ui-ink); + letter-spacing: 0.12em; + text-align: center; + line-height: 1; + margin-bottom: 0.3rem; +} + +.login-subtitle { + font-family: var(--font-display); + font-size: 0.85rem; + color: rgba(42,26,8,0.55); + text-align: center; + letter-spacing: 0.06em; + font-style: italic; + margin-bottom: 1.25rem; +} +.login-subtitle sup { + font-size: 0.65em; + vertical-align: super; +} + +.login-ornament { + color: var(--ui-gold); + font-size: 1rem; + opacity: 0.7; + margin-bottom: 1.25rem; + letter-spacing: 0.3em; + text-align: center; +} + +.error-msg { + color: #c03030; + font-size: 0.85rem; + text-align: center; + margin-bottom: 0.5rem; +} + +.login-input { + width: 100%; + padding: 0.55rem 0.85rem; + font-size: 0.95rem; + font-family: var(--font-ui); + border: 1px solid rgba(138,106,40,0.4); + border-radius: 5px; + background: rgba(255,252,240,0.8); + color: var(--ui-ink); + outline: none; + transition: border-color 0.15s, box-shadow 0.15s; + margin-bottom: 1rem; +} +.login-input:focus { + border-color: var(--ui-gold); + box-shadow: 0 0 0 3px rgba(200,164,72,0.2); +} + +.login-actions { + display: flex; + flex-direction: column; + gap: 0.55rem; + width: 100%; +} + +/* Login buttons styled as embossed wooden tiles */ +.login-btn { + width: 100%; + padding: 0.65rem 1rem; + font-family: var(--font-ui); + font-size: 0.9rem; + font-weight: 500; + letter-spacing: 0.04em; + border: none; + border-radius: 5px; + cursor: pointer; + transition: opacity 0.15s, transform 0.1s, box-shadow 0.15s; + position: relative; +} +.login-btn:disabled { opacity: 0.35; cursor: default; } +.login-btn:not(:disabled):hover { opacity: 0.92; transform: translateY(-1px); } +.login-btn:not(:disabled):active { transform: translateY(0); } + +.login-btn-primary { + background: linear-gradient(160deg, #4a7a38 0%, #2e5222 100%); + color: #e8f0e0; + box-shadow: 0 2px 6px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.12); +} +.login-btn-secondary { + background: linear-gradient(160deg, #3a2010 0%, #241408 100%); + color: #e4d4b4; + box-shadow: 0 2px 6px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.08); +} +.login-btn-bot { + background: linear-gradient(160deg, #2a4a6a 0%, #183050 100%); + color: #d0e0f0; + box-shadow: 0 2px 6px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.08); +} + +/* ── Connecting screen ──────────────────────────────────────────────── */ +.connecting { + font-family: var(--font-display); + font-size: 1.4rem; + font-style: italic; + margin-top: 4rem; + text-align: center; + color: var(--ui-parchment); + text-shadow: 0 1px 4px rgba(0,0,0,0.4); +} + +/* ── Game-action buttons ─────────────────────────────────────────────── */ +.btn { + padding: 0.5rem 1.25rem; + font-size: 0.95rem; + font-family: var(--font-ui); + font-weight: 500; + letter-spacing: 0.03em; + border: none; + border-radius: 4px; + cursor: pointer; + transition: opacity 0.15s, box-shadow 0.15s; +} +.btn:disabled { opacity: 0.4; cursor: default; } +.btn-primary { background: var(--ui-green-accent); color: #fff; } +.btn-secondary { background: var(--board-rail); color: #e8d8b8; } +.btn-bot { background: #2a5a7a; color: #fff; } +.btn:not(:disabled):hover { + opacity: 0.9; + box-shadow: 0 2px 6px rgba(0,0,0,0.25); +} + +/* ── Game container ─────────────────────────────────────────────────── */ +.game-container { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.6rem; +} + +/* ── Language switcher (in-game) ────────────────────────────────────── */ +.lang-switcher { display: flex; gap: 0.25rem; } + +.lang-switcher button { + font-size: 0.7rem; + font-family: var(--font-ui); + letter-spacing: 0.05em; + padding: 0.15rem 0.4rem; + border: 1px solid rgba(200,164,72,0.3); + border-radius: 3px; + background: transparent; + cursor: pointer; + color: var(--ui-parchment); + opacity: 0.55; +} +.lang-switcher button.lang-active { + opacity: 1; + font-weight: 500; + background: rgba(200,164,72,0.15); + border-color: rgba(200,164,72,0.6); +} + +/* ── Top bar ─────────────────────────────────────────────────────────── */ +.top-bar { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + color: var(--ui-parchment); + font-size: 0.85rem; + opacity: 0.8; +} + +.quit-link { + font-size: 0.8rem; + color: var(--ui-parchment); + text-decoration: underline; + text-underline-offset: 2px; + cursor: pointer; + opacity: 0.7; +} +.quit-link:hover { opacity: 1; } + +.playing-as { + font-size: 0.75rem; + color: rgba(242,232,208,0.7); + font-family: var(--font-ui); +} +.playing-as strong { color: rgba(242,232,208,0.9); } + +/* ── Game status bar (§10b) — above board ───────────────────────────── */ +.game-status { + font-family: var(--font-display); + font-size: 1.2rem; + font-style: italic; + color: var(--ui-parchment); + text-align: center; + letter-spacing: 0.04em; + padding: 0.2rem 1rem 0; + width: 100%; + text-shadow: 0 1px 4px rgba(0,0,0,0.4); +} + +/* ── Contextual sub-prompt (§8a) ────────────────────────────────────── */ +.game-sub-prompt { + font-family: var(--font-ui); + font-size: 0.72rem; + color: rgba(240,228,192,0.5); + text-align: center; + letter-spacing: 0.04em; + padding: 0.15rem 1rem 0; + width: 100%; +} + +/* ── Player score panel ─────────────────────────────────────────────── */ +.player-score-panel { + background: var(--ui-parchment); + border-radius: 5px; + padding: 0.45rem 1.25rem; + font-size: 0.88rem; + box-shadow: 0 2px 6px rgba(0,0,0,0.25); + width: 100%; + border-top: 2px solid var(--ui-gold-dark); + display: flex; + align-items: center; + gap: 1.5rem; +} + +.player-score-header { + flex-shrink: 0; + min-width: 90px; +} + +.player-name { + font-family: var(--font-display); + font-weight: 600; + font-size: 1.05rem; + color: var(--ui-ink); + letter-spacing: 0.02em; +} + +.score-bars { display: flex; flex-direction: row; gap: 1.5rem; flex: 1; align-items: center; } + +.score-bar-row { + display: flex; + align-items: center; + gap: 0.5rem; + flex: 1; +} + +.score-bar-label { + font-size: 0.75rem; + color: #665544; + width: 3rem; + text-align: right; + flex-shrink: 0; +} + +/* ── Points bar ─────────────────────────────────────────────────────── */ +.score-bar { + flex: 1; + max-width: 220px; + height: 8px; + background: rgba(0,0,0,0.1); + border-radius: 4px; + overflow: hidden; + flex-shrink: 0; +} + +.score-bar-fill { + height: 100%; + border-radius: 4px; + transition: width 0.35s ease-out; +} + +.score-bar-points { background: linear-gradient(90deg, var(--ui-green-accent), #5a9b3a); } + +.score-bar-value { + font-size: 0.75rem; + color: #665544; + min-width: 2.5rem; + font-variant-numeric: tabular-nums; +} + +/* ── Hole peg tracker (§7a) ─────────────────────────────────────────── */ +.peg-track { + display: flex; + align-items: center; + gap: 3px; + flex-shrink: 0; +} + +.peg-hole { + width: 10px; + height: 10px; + border-radius: 50%; + border: 1.5px solid rgba(138,106,40,0.45); + background: rgba(0,0,0,0.06); + flex-shrink: 0; + transition: background 0.3s ease-out, border-color 0.3s, box-shadow 0.3s; +} + +.peg-hole.filled { + background: var(--ui-gold); + border-color: var(--ui-gold-dark); + box-shadow: 0 0 4px rgba(200,164,72,0.6); +} + +.bredouille-badge { + font-size: 0.62rem; + font-weight: 500; + color: #fff8e0; + background: linear-gradient(135deg, #c88800, #8a5800); + border: 1px solid rgba(200,164,72,0.5); + border-radius: 3px; + padding: 0.1em 0.4em; + letter-spacing: 0.06em; + cursor: default; + box-shadow: 0 1px 3px rgba(0,0,0,0.25); +} + +/* ── Board + side panel ─────────────────────────────────────────────── */ +.board-and-panel { + position: relative; +} + +.side-panel { + position: absolute; + right: -8px; + top: 10px; + z-index: 20; + display: flex; + flex-direction: column; + gap: 0.5rem; + padding-top: 0.15rem; + pointer-events: none; +} + +.action-buttons { display: flex; flex-direction: column; gap: 0.5rem; } + +/* ── Dice bar ───────────────────────────────────────────────────────── */ +.dice-bar { + display: flex; + align-items: center; + gap: 0.6rem; + padding: 0.4rem 0.6rem; + background: rgba(42,21,8,0.15); + border-radius: 6px; + border: 1px solid rgba(200,164,72,0.2); + width: fit-content; +} + +/* ── Die face (SVG) ─────────────────────────────────────────────────── */ +@keyframes die-tumble { + 0% { transform: rotate(-45deg) scale(0.4) translateY(-8px); opacity: 0; } + 25% { transform: rotate(18deg) scale(1.22) translateY(0); opacity: 1; } + 45% { transform: rotate(-10deg) scale(0.91); } + 62% { transform: rotate(6deg) scale(1.06); } + 76% { transform: rotate(-3deg) scale(0.98); } + 88% { transform: rotate(1.5deg) scale(1.01); } + 100% { transform: rotate(0deg) scale(1); opacity: 1; } +} + +.die-face { + filter: drop-shadow(0 2px 3px rgba(0,0,0,0.3)); + animation: die-tumble 0.55s cubic-bezier(0.22, 0.61, 0.36, 1) both; +} + +.die-face rect { + fill: #fffef0; + stroke: #2a1a00; + stroke-width: 2; + transition: fill 0.18s, stroke 0.18s; +} +.die-face circle { + fill: #1a0a00; + transition: fill 0.18s; +} + +.bar-die-slot { + display: flex; + align-items: center; + justify-content: center; +} + +.die-face.die-double rect { stroke: var(--ui-gold); stroke-width: 2.5; } +.die-face.die-double { + filter: drop-shadow(0 0 6px rgba(200,164,72,0.7)) drop-shadow(0 2px 3px rgba(0,0,0,0.3)); +} + +.die-face.die-used { animation: none; opacity: 0.55; } +.die-face.die-used rect { fill: #d4d0c4; stroke: #9a8a70; } +.die-face.die-used circle { fill: #9a8a70; } + +.die-face .die-question { fill: #1a0a00; font-family: sans-serif; } +.die-face.die-used .die-question { fill: #9a8a70; } + +/* ── Jan panel ──────────────────────────────────────────────────────── */ +.jan-panel { + display: flex; + flex-direction: column; + gap: 2px; + background: var(--ui-parchment); + border-radius: 5px; + padding: 0.4rem 0.9rem; + font-size: 0.88rem; + box-shadow: 0 1px 4px rgba(0,0,0,0.15); + min-width: 260px; + border-top: 2px solid rgba(138,106,40,0.35); +} + +.jan-row { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 2px 4px; + border-radius: 3px; +} +.jan-expandable { cursor: pointer; } +.jan-expandable:hover { background: rgba(0,0,0,0.05); } + +.jan-positive { color: #1a5c1a; } +.jan-negative { color: #8b1a1a; } + +.jan-label { flex: 1; } +.jan-tag { + font-size: 0.72rem; + padding: 0.1em 0.4em; + border-radius: 3px; + background: rgba(0,0,0,0.07); + color: #665544; + white-space: nowrap; +} +.jan-pts { font-weight: 600; text-align: right; min-width: 3rem; } + +.jan-moves { padding: 1px 4px 4px 1rem; display: flex; flex-direction: column; gap: 2px; } +.jan-moves.hidden { display: none; } +.jan-move-line { font-family: monospace; font-size: 0.78rem; color: #555; } + +/* ── Game-over overlay (§12) ────────────────────────────────────────── */ +.game-over-overlay { + position: fixed; + inset: 0; + background: rgba(0,0,0,0.65); + display: flex; + align-items: center; + justify-content: center; + z-index: 100; +} + +@keyframes game-over-appear { + from { transform: translateY(-24px) scale(0.94); opacity: 0; } + to { transform: translateY(0) scale(1); opacity: 1; } +} + +.game-over-box { + background: var(--ui-parchment); + border-radius: 8px; + padding: 2.5rem 3rem; + text-align: center; + box-shadow: 0 12px 40px rgba(0,0,0,0.5), 0 0 0 2px var(--ui-gold-dark); + display: flex; + flex-direction: column; + gap: 1.1rem; + min-width: 300px; + animation: game-over-appear 0.4s cubic-bezier(0.22, 0.61, 0.36, 1); +} + +.game-over-box h2 { + font-family: var(--font-display); + font-size: 2rem; + font-weight: 600; + color: var(--ui-ink); + letter-spacing: 0.06em; +} + +.game-over-winner { + font-family: var(--font-display); + font-size: 1.25rem; + color: var(--ui-green-accent); + font-style: italic; +} + +.game-over-score { + display: flex; + align-items: center; + justify-content: center; + gap: 0.75rem; + padding: 0.6rem 1rem; + background: rgba(0,0,0,0.05); + border-radius: 5px; + border: 1px solid rgba(138,106,40,0.2); +} + +.game-over-score-name { + font-family: var(--font-display); + font-size: 0.9rem; + color: #665544; + font-style: italic; + max-width: 80px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.game-over-score-nums { + font-family: var(--font-display); + font-size: 2.25rem; + font-weight: 600; + color: var(--ui-ink); + letter-spacing: 0.08em; + line-height: 1; +} + +.game-over-actions { display: flex; gap: 0.75rem; justify-content: center; } + +/* ── Scoring notification panel (§6b) ───────────────────────────────── */ +@keyframes scoring-panel-enter { + from { transform: translateX(100%); } + to { transform: translateX(0); } +} + +.scoring-panel-wrapper { + pointer-events: auto; + animation: scoring-panel-enter 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94); + transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); + filter: drop-shadow(-4px 0 14px rgba(0,0,0,0.38)); +} + +.scoring-panel-wrapper.peeked { + transform: translateX(100%); +} + +.scoring-panel-wrapper.revealed { + transform: translateX(0); +} + +.scoring-panel-wrapper.peeked:not(.revealed) { + cursor: pointer; +} + +.scoring-panel { + background: var(--ui-parchment); + border-radius: 5px; + padding: 0.45rem 0.85rem; + font-size: 0.84rem; + box-shadow: 0 1px 4px rgba(0,0,0,0.15); + border-left: 3px solid var(--ui-green-accent); + display: flex; + flex-direction: column; + gap: 4px; + width: 100%; +} + +.scoring-total { + font-family: var(--font-display); + font-weight: 600; + font-size: 1rem; + color: #1a5c1a; + white-space: nowrap; +} + +.scoring-jan-row { + display: flex; + align-items: center; + gap: 0.4rem; + padding: 2px 3px; + border-radius: 3px; + cursor: default; + white-space: nowrap; +} +.scoring-jan-row:hover { background: rgba(0,0,0,0.05); } + +.scoring-panel-opp { border-left-color: var(--board-rail); } +.scoring-panel-opp .scoring-total { color: var(--ui-red-accent); } + +.scoring-hole { + display: flex; + align-items: center; + gap: 0.4rem; + font-weight: 600; + color: var(--ui-red-accent); + margin-top: 3px; + padding-top: 4px; + border-top: 1px solid rgba(0,0,0,0.1); +} + +.hold-go-buttons { display: flex; gap: 0.5rem; margin-top: 4px; } + +@media (min-width: 1492px) { + .side-panel { + right: auto; + left: calc(100% + 1rem); + } + .scoring-panel-wrapper.peeked, + .scoring-panel-wrapper.revealed { + transform: none; + cursor: default; + } +} + +/* ── Board wrapper ──────────────────────────────────────────────────── */ +.board-wrapper { + display: flex; + flex-direction: column; + gap: 3px; +} + +/* ── Zone labels (§2a) ──────────────────────────────────────────────── */ +.zone-labels-row { + display: flex; + gap: 4px; + padding: 0 8px; +} + +.zone-label { + font-family: var(--font-display); + font-size: 0.57rem; + font-style: italic; + color: rgba(240,228,192,0.48); + letter-spacing: 0.1em; + text-align: center; + pointer-events: none; + line-height: 1; +} + +.zone-label-quarter { width: 370px; flex-shrink: 0; } +.zone-label-bar { width: 68px; flex-shrink: 0; } + +/* ── Board ──────────────────────────────────────────────────────────── */ +.board { + background: var(--board-felt); + border: 4px solid var(--board-rail); + border-radius: 6px; + padding: 4px; + display: flex; + flex-direction: column; + gap: 4px; + user-select: none; + box-shadow: + 0 6px 16px rgba(0,0,0,0.5), + inset 0 1px 0 rgba(255,255,255,0.04); + position: relative; +} + +.board-row { display: flex; gap: 4px; } +.board-quarter { display: flex; gap: 2px; } + +.board-bar { + width: 68px; + background: var(--board-rail); + border-radius: 4px; + box-shadow: inset 0 0 6px rgba(0,0,0,0.5); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + overflow: visible; +} + +.board-center-bar { + height: 12px; + background: var(--board-rail); + border-radius: 2px; + box-shadow: inset 0 0 4px rgba(0,0,0,0.4); +} + +/* ── Fields (§1) ────────────────────────────────────────────────────── */ +.field { + --fc: var(--field-ivory); + width: 60px; + height: 180px; + background: transparent; + isolation: isolate; + border-radius: 3px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-end; + padding: 4px 2px; + position: relative; +} + +.field::before { + content: ''; + position: absolute; + inset: 0; + z-index: -1; + background: var(--fc); + clip-path: polygon(0% 100%, 50% 0%, 100% 100%); + transition: background 0.12s; +} + +.top-row .field::before { + clip-path: polygon(0% 0%, 100% 0%, 50% 100%); +} + +.top-row .field { justify-content: flex-start; } + +/* ── Zone alternating colours (§2b) ────────────────────────────────── */ +.board-quarter .field.zone-petit:nth-child(odd), +.board-quarter .field.zone-grand:nth-child(odd) { --fc: var(--field-burgundy); } +.board-quarter .field.zone-petit:nth-child(even), +.board-quarter .field.zone-grand:nth-child(even) { --fc: var(--field-ivory); } + +.board-quarter .field.zone-opponent:nth-child(odd) { --fc: #1a4f72; } +.board-quarter .field.zone-opponent:nth-child(even) { --fc: #e5eadc; } + +.board-quarter .field.zone-retour:nth-child(odd) { --fc: #6a2810; } +.board-quarter .field.zone-retour:nth-child(even) { --fc: #f2dfa0; } + +.field.corner::after { + content: '♛'; + position: absolute; + z-index: -1; + bottom: 22px; + font-size: 0.7rem; + color: rgba(255,248,210,0.38); + pointer-events: none; + line-height: 1; +} +.top-row .field.corner::after { bottom: auto; top: 22px; } + +@keyframes corner-pulse { + 0%, 100% { filter: drop-shadow(0 0 0px rgba(200,164,72,0)); } + 50% { filter: drop-shadow(0 0 7px rgba(200,164,72,0.55)); } +} +.field.corner.corner-available { + animation: corner-pulse 1.5s ease-in-out infinite; +} + +@keyframes exit-glow { + 0%, 100% { filter: drop-shadow(0 0 0px rgba(232,192,96,0)); } + 50% { filter: drop-shadow(0 0 5px rgba(232,192,96,0.5)); } +} +.field.exit-eligible { + animation: exit-glow 2s ease-in-out infinite; +} + +.field.jan-hovered { + --fc: rgba(190, 140, 35, 0.8) !important; +} + +@keyframes hit-ripple { + from { transform: translate(-50%, -50%) scale(0.4); opacity: 0.9; } + to { transform: translate(-50%, -50%) scale(2.2); opacity: 0; } +} +.hit-ripple { + position: absolute; + left: 50%; + width: 36px; + height: 36px; + border-radius: 50%; + border: 2px solid rgba(200, 164, 72, 0.9); + pointer-events: none; + animation: hit-ripple 0.5s ease-out forwards; +} +.hit-ripple-top { top: 26px; } +.hit-ripple-bot { bottom: 26px; } + +.field.clickable { + cursor: pointer; + --fc: #8fc840 !important; +} +.field.clickable:hover { --fc: #74aa28 !important; } +.field.selected { + --fc: #5a8a18 !important; + outline: 2px solid rgba(255,255,255,0.3); + outline-offset: -2px; +} + +.field-num { + font-size: 0.58rem; + color: rgba(0,0,0,0.28); + position: absolute; + bottom: 3px; + line-height: 1; + font-variant-numeric: tabular-nums; +} + +.board-quarter .field.zone-petit:nth-child(odd) .field-num, +.board-quarter .field.zone-grand:nth-child(odd) .field-num, +.board-quarter .field.zone-retour:nth-child(odd) .field-num, +.board-quarter .field.zone-opponent:nth-child(odd) .field-num { + color: rgba(240,215,190,0.38); +} + +.field.corner .field-num { color: rgba(255,248,200,0.4); } +.top-row .field-num { bottom: auto; top: 3px; } + +/* ── Checkers ───────────────────────────────────────────────────────── */ +.checker-stack { + display: flex; + flex-direction: column; + align-items: center; +} + +.checker { + width: 40px; + height: 40px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.78rem; + font-weight: 600; + flex-shrink: 0; +} + +.checker + .checker { margin-top: -4px; } + +.checker.white { + background-image: + radial-gradient(ellipse 50% 35% at 36% 30%, + rgba(255,255,255,0.65) 0%, transparent 100%), + radial-gradient(circle, + transparent 68%, rgba(160,130,70,0.22) 68.5%, + rgba(160,130,70,0.22) 71.5%, transparent 72%), + radial-gradient(circle, + transparent 43%, rgba(160,130,70,0.17) 43.5%, + rgba(160,130,70,0.17) 46.5%, transparent 47%), + radial-gradient(circle at 38% 32%, + #ffffff 0%, var(--checker-white) 52%, #c0b288 100%); + border: 1.8px solid var(--checker-ring); + box-shadow: + 0 2px 6px rgba(0,0,0,0.4), + inset 0 -1px 3px rgba(0,0,0,0.15); + color: #443322; +} + +.checker.black { + background-image: + radial-gradient(ellipse 40% 28% at 36% 30%, + rgba(110,65,30,0.38) 0%, transparent 100%), + radial-gradient(circle, + transparent 68%, rgba(200,164,72,0.18) 68.5%, + rgba(200,164,72,0.18) 71.5%, transparent 72%), + radial-gradient(circle, + transparent 43%, rgba(200,164,72,0.13) 43.5%, + rgba(200,164,72,0.13) 46.5%, transparent 47%), + radial-gradient(circle at 38% 32%, + #4a2e1a 0%, #1c1008 45%, var(--checker-black) 100%); + border: 1.8px solid var(--checker-ring); + box-shadow: + 0 2px 6px rgba(0,0,0,0.55), + inset 0 -1px 3px rgba(0,0,0,0.4); + color: #c8b898; +} + +/* ── Hole toast (§6a) ───────────────────────────────────────────────── */ +@keyframes toast-rise { + from { transform: translate(-50%, -40%); opacity: 0; } + to { transform: translate(-50%, -50%); opacity: 1; } +} +@keyframes toast-fade { + from { opacity: 1; } + to { opacity: 0; pointer-events: none; } +} + +.hole-toast { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background: rgba(22,10,2,0.93); + border: 2px solid var(--ui-gold); + border-radius: 8px; + padding: 1.5rem 3.5rem; + text-align: center; + z-index: 50; + pointer-events: none; + box-shadow: + 0 12px 40px rgba(0,0,0,0.65), + 0 0 0 1px rgba(200,164,72,0.25), + inset 0 1px 0 rgba(200,164,72,0.1); + animation: + toast-rise 0.25s cubic-bezier(0.22, 0.61, 0.36, 1), + toast-fade 0.5s ease-in 1.4s forwards; +} + +.hole-toast-title { + font-family: var(--font-display); + font-size: 3.25rem; + font-weight: 600; + color: var(--ui-gold); + letter-spacing: 0.1em; + line-height: 1; +} + +.hole-toast-count { + font-family: var(--font-display); + font-size: 1.1rem; + color: rgba(200,164,72,0.68); + margin-top: 0.35rem; + letter-spacing: 0.06em; +} + +.hole-toast-bredouille { + font-family: var(--font-ui); + font-size: 0.75rem; + letter-spacing: 0.08em; + color: rgba(200,164,72,0.55); + margin-top: 0.4rem; + text-transform: uppercase; +} + +@keyframes bredouille-shimmer { + 0%, 100% { box-shadow: 0 12px 40px rgba(0,0,0,0.65), 0 0 0 2px rgba(200,164,72,0.4), inset 0 0 0 rgba(200,164,72,0); } + 50% { box-shadow: 0 12px 40px rgba(0,0,0,0.65), 0 0 0 4px rgba(200,164,72,0.7), inset 0 0 24px rgba(200,164,72,0.08); } +} +.hole-toast.hole-toast-bredouille { + border-width: 2.5px; + border-color: var(--ui-gold); + padding: 2rem 4rem; + animation: + toast-rise 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), + bredouille-shimmer 0.9s ease-in-out 0.3s 2, + toast-fade 0.5s ease-in 2.2s forwards; +} +.hole-toast.hole-toast-bredouille .hole-toast-title { font-size: 3.75rem; } +.hole-toast.hole-toast-bredouille .hole-toast-bredouille { + font-size: 0.85rem; + color: rgba(200,164,72,0.8); + letter-spacing: 0.14em; +} + +/* ── Checker slide animation (§4a) ─────────────────────────────────── */ +@keyframes checker-slide-in { + from { transform: translate(var(--slide-dx, 0px), var(--slide-dy, 0px)); } + to { transform: none; } +} +.checker.arriving { + animation: checker-slide-in 0.28s cubic-bezier(0.25, 0.46, 0.45, 0.94); +} +.field:has(.checker.arriving) { + isolation: auto; + z-index: 10; + position: relative; +} + +/* ── Checker lift on selected field (§4b) ───────────────────────────── */ +.field.selected .checker-stack { + transform: translateY(-5px); + filter: drop-shadow(0 8px 12px rgba(0,0,0,0.6)); + transition: transform 0.12s ease-out, filter 0.12s ease-out; +} + +/* ── Action buttons below board (§10c) ──────────────────────────────── */ +.board-actions { + display: flex; + gap: 0.55rem; + justify-content: center; + align-items: center; + flex-wrap: wrap; + min-height: 2rem; +} + +/* ── Pre-game ceremony overlay ──────────────────────────────────────────── */ +.ceremony-overlay { + position: fixed; + inset: 0; + background: rgba(0,0,0,0.65); + display: flex; + align-items: center; + justify-content: center; + z-index: 100; +} + +.ceremony-box { + background: var(--ui-parchment); + border-radius: 8px; + padding: 2.5rem 3rem; + text-align: center; + box-shadow: 0 12px 40px rgba(0,0,0,0.5), 0 0 0 2px var(--ui-gold-dark); + display: flex; + flex-direction: column; + align-items: center; + gap: 1.4rem; + min-width: 300px; + animation: game-over-appear 0.4s cubic-bezier(0.22, 0.61, 0.36, 1); +} + +.ceremony-box h2 { + font-family: var(--font-display); + font-size: 1.8rem; + font-weight: 600; + color: var(--ui-ink); + letter-spacing: 0.06em; +} + +.ceremony-dice { + display: flex; + gap: 3rem; + align-items: flex-end; +} + +.ceremony-die-slot { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.5rem; +} + +.ceremony-die-label { + font-family: var(--font-ui); + font-size: 0.85rem; + color: var(--ui-ink); + font-weight: 500; +} + +.ceremony-tie { + font-family: var(--font-display); + font-size: 1rem; + color: var(--ui-red-accent); + font-style: italic; +} diff --git a/clients/web/index.html b/clients/web/index.html new file mode 100644 index 0000000..7399dbc --- /dev/null +++ b/clients/web/index.html @@ -0,0 +1,12 @@ + + + + + + Trictrac + + + + + + diff --git a/clients/web/locales/en.json b/clients/web/locales/en.json new file mode 100644 index 0000000..3b32f20 --- /dev/null +++ b/clients/web/locales/en.json @@ -0,0 +1,96 @@ +{ + "room_name_placeholder": "Room name", + "create_room": "Create Room", + "join_room": "Join Room", + "connecting": "Connecting…", + "game_over": "Game over", + "waiting_for_opponent": "Waiting for opponent…", + "your_turn_roll": "Your turn — roll the dice", + "hold_or_go": "Hold or Go?", + "select_move": "Move a checker ({{ n }} of 2)", + "your_turn": "Your turn", + "opponent_turn": "Opponent's turn", + "room_label": "Room: {{ id }}", + "quit": "Quit", + "roll_dice": "Roll dice", + "go": "Go", + "empty_move": "Empty move", + "you_suffix": " (you)", + "points_label": "Points", + "holes_label": "Holes", + "bredouille_title": "Can bredouille", + "jan_double": "double", + "jan_simple": "simple", + "jan_filled_quarter": "Quarter filled", + "jan_true_hit_small": "True hit (small jan)", + "jan_true_hit_big": "True hit (big jan)", + "jan_true_hit_corner": "True hit (opp. corner)", + "jan_first_exit": "First to exit", + "jan_six_tables": "Six tables", + "jan_two_tables": "Two tables", + "jan_mezeas": "Mezeas", + "jan_false_hit_small": "False hit (small jan)", + "jan_false_hit_big": "False hit (big jan)", + "jan_contre_two": "Contre two tables", + "jan_contre_mezeas": "Contre mezeas", + "jan_helpless_man": "Helpless man", + "play_vs_bot": "Play vs Bot", + "vs_bot_label": "vs Bot", + "you_win": "You win!", + "opp_wins": "{{ name }} wins!", + "play_again": "Play again", + "after_opponent_roll": "Opponent rolled", + "after_opponent_go": "Opponent chose to continue", + "after_opponent_move": "Opponent moved — your turn", + "after_opponent_pre_game_roll": "Opponent rolled — your turn", + "pre_game_roll_title": "Who goes first?", + "pre_game_roll_btn": "Roll", + "pre_game_roll_tie": "Tie! Roll again", + "pre_game_roll_your_die": "Your die", + "pre_game_roll_opp_die": "Opponent's die", + "continue_btn": "Continue", + "scored_pts": "+{{ n }} pts", + "hole_made": "Hole! {{ holes }}/12", + "bredouille_applied": "Bredouille!", + "hold": "Hold", + "opp_scored_pts": "Opponent +{{ n }} pts", + "opp_hole_made": "Opponent hole! {{ holes }}/12", + "hint_move": "Click a highlighted field to move a checker", + "hint_hold_or_go": "Hold to keep points — Go to reset the setting", + "hint_continue": "Click Continue when ready", + "sign_in": "Sign in", + "sign_out": "Sign out", + "create_account": "Create account", + "account_title": "Account", + "label_username": "Username", + "label_password": "Password", + "label_email": "Email", + "loading": "Loading…", + "member_since": "Member since", + "stat_games": "Games", + "stat_wins": "Wins", + "stat_losses": "Losses", + "stat_draws": "Draws", + "game_history_title": "Game History", + "no_games": "No games recorded yet.", + "col_room": "Room", + "col_started": "Started", + "col_ended": "Ended", + "col_outcome": "Outcome", + "col_detail": "Detail", + "prev_page": "← Prev", + "next_page": "Next →", + "page_label": "Page", + "view_link": "View", + "outcome_win": "win", + "outcome_loss": "loss", + "outcome_draw": "draw", + "players_header": "Players", + "col_player": "Player", + "score_header": "Score", + "game_ongoing": "ongoing", + "anonymous_player": "anonymous", + "started_label": "Started", + "ended_label": "Ended", + "room_detail_title": "Room" +} diff --git a/clients/web/locales/fr.json b/clients/web/locales/fr.json new file mode 100644 index 0000000..9af6f10 --- /dev/null +++ b/clients/web/locales/fr.json @@ -0,0 +1,96 @@ +{ + "room_name_placeholder": "Nom de la salle", + "create_room": "Créer une salle", + "join_room": "Rejoindre", + "connecting": "Connexion en cours…", + "game_over": "Partie terminée", + "waiting_for_opponent": "En attente de l'adversaire…", + "your_turn_roll": "À votre tour — lancez les dés", + "hold_or_go": "Tenir ou s'en aller ?", + "select_move": "Déplacez une dame ({{ n }} sur 2)", + "your_turn": "Votre tour", + "opponent_turn": "Tour de l'adversaire", + "room_label": "Salle : {{ id }}", + "quit": "Quitter", + "roll_dice": "Lancer les dés", + "go": "S'en aller", + "empty_move": "Mouvement impossible", + "you_suffix": " (vous)", + "points_label": "Points", + "holes_label": "Trous", + "bredouille_title": "Peut faire bredouille", + "jan_double": "double", + "jan_simple": "simple", + "jan_filled_quarter": "Remplissage", + "jan_true_hit_small": "Battage à vrai (petit jan)", + "jan_true_hit_big": "Battage à vrai (grand jan)", + "jan_true_hit_corner": "Battage coin adverse", + "jan_first_exit": "Premier sorti", + "jan_six_tables": "Jan de six tables", + "jan_two_tables": "Jan de deux tables", + "jan_mezeas": "Jan de mézéas", + "jan_false_hit_small": "Battage à faux (petit jan)", + "jan_false_hit_big": "Battage à faux (grand jan)", + "jan_contre_two": "Contre jan de deux tables", + "jan_contre_mezeas": "Contre jan de mezeas", + "jan_helpless_man": "Dame impuissante", + "play_vs_bot": "Jouer contre le bot", + "vs_bot_label": "contre le bot", + "you_win": "Vous avez gagné !", + "opp_wins": "{{ name }} gagne !", + "play_again": "Rejouer", + "after_opponent_roll": "L'adversaire a lancé les dés", + "after_opponent_go": "L'adversaire s'en va", + "after_opponent_move": "L'adversaire a joué — à vous", + "after_opponent_pre_game_roll": "L'adversaire a lancé — à vous", + "pre_game_roll_title": "Qui joue en premier ?", + "pre_game_roll_btn": "Lancer", + "pre_game_roll_tie": "Égalité ! Relancez", + "pre_game_roll_your_die": "Votre dé", + "pre_game_roll_opp_die": "Dé adverse", + "continue_btn": "Continuer", + "scored_pts": "+{{ n }} pts", + "hole_made": "Trou ! {{ holes }}/12", + "bredouille_applied": "Bredouille !", + "hold": "Tenir", + "opp_scored_pts": "Adversaire +{{ n }} pts", + "opp_hole_made": "Trou adverse ! {{ holes }}/12", + "hint_move": "Cliquez un champ surligné pour déplacer", + "hint_hold_or_go": "Tenir pour garder les points — S'en aller pour repartir", + "hint_continue": "Cliquez Continuer quand vous êtes prêt", + "sign_in": "Se connecter", + "sign_out": "Se déconnecter", + "create_account": "Créer un compte", + "account_title": "Compte", + "label_username": "Nom d'utilisateur", + "label_password": "Mot de passe", + "label_email": "Email", + "loading": "Chargement…", + "member_since": "Membre depuis", + "stat_games": "Parties", + "stat_wins": "Victoires", + "stat_losses": "Défaites", + "stat_draws": "Nuls", + "game_history_title": "Historique", + "no_games": "Aucune partie enregistrée.", + "col_room": "Salle", + "col_started": "Début", + "col_ended": "Fin", + "col_outcome": "Résultat", + "col_detail": "Détail", + "prev_page": "← Précédent", + "next_page": "Suivant →", + "page_label": "Page", + "view_link": "Voir", + "outcome_win": "victoire", + "outcome_loss": "défaite", + "outcome_draw": "nul", + "players_header": "Joueurs", + "col_player": "Joueur", + "score_header": "Score", + "game_ongoing": "en cours", + "anonymous_player": "anonyme", + "started_label": "Début", + "ended_label": "Fin", + "room_detail_title": "Salle" +} diff --git a/clients/web/src/api.rs b/clients/web/src/api.rs new file mode 100644 index 0000000..29032c0 --- /dev/null +++ b/clients/web/src/api.rs @@ -0,0 +1,191 @@ +use serde::{Deserialize, Serialize}; + +#[cfg(debug_assertions)] +pub const HTTP_BASE: &str = "http://localhost:8080"; +#[cfg(not(debug_assertions))] +pub const HTTP_BASE: &str = ""; + +fn url(path: &str) -> String { + format!("{HTTP_BASE}{path}") +} + +// ── Response types ──────────────────────────────────────────────────────────── + +#[derive(Clone, Debug, Deserialize)] +pub struct MeResponse { + pub id: i64, + pub username: String, +} + +#[derive(Clone, Debug, Deserialize)] +pub struct UserProfile { + pub id: i64, + pub username: String, + pub created_at: i64, + pub total_games: i64, + pub wins: i64, + pub losses: i64, + pub draws: i64, +} + +#[derive(Clone, Debug, Deserialize)] +pub struct GameSummary { + pub id: i64, + pub game_id: String, + pub room_code: String, + pub started_at: i64, + pub ended_at: Option, + pub result: Option, + pub outcome: Option, +} + +#[derive(Clone, Debug, Deserialize)] +pub struct GamesResponse { + pub games: Vec, +} + +#[derive(Clone, Debug, Deserialize)] +pub struct Participant { + pub player_id: i64, + pub outcome: Option, + pub username: Option, +} + +#[derive(Clone, Debug, Deserialize)] +pub struct GameDetail { + pub id: i64, + pub game_id: String, + pub room_code: String, + pub started_at: i64, + pub ended_at: Option, + pub result: Option, + pub participants: Vec, +} + +// ── Request bodies ──────────────────────────────────────────────────────────── + +#[derive(Serialize)] +pub struct RegisterBody<'a> { + pub username: &'a str, + pub email: &'a str, + pub password: &'a str, +} + +#[derive(Serialize)] +pub struct LoginBody<'a> { + pub username: &'a str, + pub password: &'a str, +} + +// ── Fetch helpers ───────────────────────────────────────────────────────────── + +pub async fn get_me() -> Result { + let resp = gloo_net::http::Request::get(&url("/auth/me")) + .credentials(web_sys::RequestCredentials::Include) + .send() + .await + .map_err(|e| e.to_string())?; + if resp.status() == 200 { + resp.json::().await.map_err(|e| e.to_string()) + } else { + Err(format!("status {}", resp.status())) + } +} + +pub async fn post_login(username: &str, password: &str) -> Result { + let body = LoginBody { username, password }; + let resp = gloo_net::http::Request::post(&url("/auth/login")) + .credentials(web_sys::RequestCredentials::Include) + .json(&body) + .map_err(|e| e.to_string())? + .send() + .await + .map_err(|e| e.to_string())?; + if resp.status() == 200 { + resp.json::().await.map_err(|e| e.to_string()) + } else { + let text = resp.text().await.unwrap_or_default(); + Err(text) + } +} + +pub async fn post_register(username: &str, email: &str, password: &str) -> Result { + let body = RegisterBody { username, email, password }; + let resp = gloo_net::http::Request::post(&url("/auth/register")) + .credentials(web_sys::RequestCredentials::Include) + .json(&body) + .map_err(|e| e.to_string())? + .send() + .await + .map_err(|e| e.to_string())?; + if resp.status() == 201 { + resp.json::().await.map_err(|e| e.to_string()) + } else { + let text = resp.text().await.unwrap_or_default(); + Err(text) + } +} + +pub async fn post_logout() -> Result<(), String> { + let resp = gloo_net::http::Request::post(&url("/auth/logout")) + .credentials(web_sys::RequestCredentials::Include) + .send() + .await + .map_err(|e| e.to_string())?; + if resp.status() == 204 { + Ok(()) + } else { + Err(format!("status {}", resp.status())) + } +} + +pub async fn get_user_profile(username: &str) -> Result { + let resp = gloo_net::http::Request::get(&url(&format!("/users/{username}"))) + .credentials(web_sys::RequestCredentials::Include) + .send() + .await + .map_err(|e| e.to_string())?; + if resp.status() == 200 { + resp.json::().await.map_err(|e| e.to_string()) + } else { + Err(format!("status {}", resp.status())) + } +} + +pub async fn get_user_games(username: &str, page: i64) -> Result { + let resp = gloo_net::http::Request::get(&url(&format!( + "/users/{username}/games?page={page}&per_page=20" + ))) + .credentials(web_sys::RequestCredentials::Include) + .send() + .await + .map_err(|e| e.to_string())?; + if resp.status() == 200 { + resp.json::().await.map_err(|e| e.to_string()) + } else { + Err(format!("status {}", resp.status())) + } +} + +pub async fn get_game_detail(id: i64) -> Result { + let resp = gloo_net::http::Request::get(&url(&format!("/games/{id}"))) + .credentials(web_sys::RequestCredentials::Include) + .send() + .await + .map_err(|e| e.to_string())?; + if resp.status() == 200 { + resp.json::().await.map_err(|e| e.to_string()) + } else { + Err(format!("status {}", resp.status())) + } +} + +// ── Utilities ───────────────────────────────────────────────────────────────── + +pub fn format_ts(ts: i64) -> String { + let ms = (ts * 1000) as f64; + let date = js_sys::Date::new(&wasm_bindgen::JsValue::from_f64(ms)); + date.to_locale_string("en-GB", &wasm_bindgen::JsValue::UNDEFINED) + .as_string() + .unwrap_or_default() +} diff --git a/clients/web/src/app.rs b/clients/web/src/app.rs new file mode 100644 index 0000000..8d604b6 --- /dev/null +++ b/clients/web/src/app.rs @@ -0,0 +1,459 @@ +use futures::channel::mpsc; +use futures::{FutureExt, StreamExt}; +use gloo_storage::{LocalStorage, Storage}; +use leptos::prelude::*; +use leptos::task::spawn_local; +use leptos_router::components::{Route, Router, Routes}; +use leptos_router::path; +use serde::{Deserialize, Serialize}; + +use backbone_lib::session::{ConnectError, GameSession, RoomConfig, RoomRole, SessionEvent}; +use backbone_lib::traits::ViewStateUpdate; + +use crate::api; +use crate::game::components::{ConnectingScreen, GameScreen}; +use crate::game::session::{ + compute_last_moves, push_or_show, run_local_bot_game, +}; +use crate::game::trictrac::backend::TrictracBackend; +use crate::game::trictrac::types::{ + GameDelta, PlayerAction, ScoredEvent, SerStage, ViewState, +}; +use crate::i18n::I18nContextProvider; +use crate::nav::SiteNav; +use crate::portal::{account::AccountPage, game_detail::GameDetailPage, lobby::LobbyPage, profile::ProfilePage}; +use trictrac_store::CheckerMove; + +use std::collections::VecDeque; + +const RELAY_URL: &str = "ws://localhost:8080/ws"; +const GAME_ID: &str = "trictrac"; +const STORAGE_KEY: &str = "trictrac_session"; + +/// The state the UI needs to render the game screen. +#[derive(Clone, PartialEq)] +pub struct GameUiState { + pub view_state: ViewState, + /// 0 = host, 1 = guest + pub player_id: u16, + pub room_id: String, + pub is_bot_game: bool, + pub waiting_for_confirm: bool, + pub pause_reason: Option, + pub my_scored_event: Option, + pub opp_scored_event: Option, + pub last_moves: Option<(CheckerMove, CheckerMove)>, +} + +/// Reason the UI is paused waiting for the player to click Continue. +#[derive(Clone, Debug, PartialEq)] +pub enum PauseReason { + AfterOpponentRoll, + AfterOpponentGo, + AfterOpponentMove, + AfterOpponentPreGameRoll, +} + +/// Which screen is currently shown (used to toggle game overlay). +#[derive(Clone, PartialEq)] +pub enum Screen { + Login { error: Option }, + Connecting, + Playing(GameUiState), +} + +/// Commands sent from UI event handlers into the network task. +pub enum NetCommand { + CreateRoom { room: String }, + JoinRoom { room: String }, + Reconnect { + relay_url: String, + game_id: String, + room_id: String, + token: u64, + host_state: Option>, + }, + PlayVsBot, + Action(PlayerAction), + Disconnect, +} + +#[derive(Serialize, Deserialize)] +struct StoredSession { + relay_url: String, + game_id: String, + room_id: String, + token: u64, + #[serde(default)] + is_host: bool, + #[serde(default)] + view_state: Option, +} + +fn save_session(session: &StoredSession) { + LocalStorage::set(STORAGE_KEY, session).ok(); +} + +fn load_session() -> Option { + LocalStorage::get::(STORAGE_KEY).ok() +} + +fn clear_session() { + LocalStorage::delete(STORAGE_KEY); +} + +async fn submit_game_result(room_code: String, game_state: ViewState) { + let [score_pl1, score_pl2] = game_state.scores; + let result_str = format!("{:?} - {:?}", score_pl1.holes, score_pl2.holes); + let outcomes = if score_pl1.holes < score_pl2.holes { + [("0", "loss"), ("1", "win")] + } else if score_pl2.holes < score_pl1.holes { + [("0", "win"), ("1", "loss")] + } else { + [("0", "draw"), ("1", "draw")] + }; + let body = serde_json::json!({ + "room_code": room_code, + "game_id": GAME_ID, + "result": result_str, + "outcomes": std::collections::HashMap::from(outcomes), + }); + let _ = gloo_net::http::Request::post(&format!("{}/games/result", api::HTTP_BASE)) + .credentials(web_sys::RequestCredentials::Include) + .json(&body) + .unwrap() + .send() + .await; +} + +#[component] +pub fn App() -> impl IntoView { + let stored = load_session(); + let initial_screen = if stored.is_some() { + Screen::Connecting + } else { + Screen::Login { error: None } + }; + let screen: RwSignal = RwSignal::new(initial_screen); + provide_context(screen); + + // Auth: fetch once on load; shared by nav + game + portal components. + let auth_username: RwSignal> = RwSignal::new(None); + provide_context(auth_username); + spawn_local(async move { + if let Ok(me) = api::get_me().await { + auth_username.set(Some(me.username)); + } + }); + + let (cmd_tx, mut cmd_rx) = mpsc::unbounded::(); + let pending: RwSignal> = RwSignal::new(VecDeque::new()); + provide_context(pending); + provide_context(cmd_tx.clone()); + + if let Some(s) = stored { + let host_state = s + .view_state + .as_ref() + .and_then(|vs| serde_json::to_vec(vs).ok()); + cmd_tx + .unbounded_send(NetCommand::Reconnect { + relay_url: s.relay_url, + game_id: s.game_id, + room_id: s.room_id, + token: s.token, + host_state, + }) + .ok(); + } + + spawn_local(async move { + loop { + let remote_config: Option<(RoomConfig, bool)> = loop { + match cmd_rx.next().await { + Some(NetCommand::PlayVsBot) => break None, + Some(NetCommand::CreateRoom { room }) => { + break Some(( + RoomConfig { + relay_url: RELAY_URL.to_string(), + game_id: GAME_ID.to_string(), + room_id: room, + rule_variation: 0, + role: RoomRole::Create, + reconnect_token: None, + host_state: None, + }, + false, + )); + } + Some(NetCommand::JoinRoom { room }) => { + break Some(( + RoomConfig { + relay_url: RELAY_URL.to_string(), + game_id: GAME_ID.to_string(), + room_id: room, + rule_variation: 0, + role: RoomRole::Join, + reconnect_token: None, + host_state: None, + }, + false, + )); + } + Some(NetCommand::Reconnect { + relay_url, + game_id, + room_id, + token, + host_state, + }) => { + break Some(( + RoomConfig { + relay_url, + game_id, + room_id, + rule_variation: 0, + role: RoomRole::Join, + reconnect_token: Some(token), + host_state, + }, + true, + )); + } + _ => {} + } + }; + + if remote_config.is_none() { + loop { + let restart = run_local_bot_game(screen, &mut cmd_rx, pending).await; + if !restart { + break; + } + } + pending.update(|q| q.clear()); + screen.set(Screen::Login { error: None }); + continue; + } + let (config, is_reconnect) = remote_config.unwrap(); + + screen.set(Screen::Connecting); + + let room_id_for_storage = config.room_id.clone(); + let mut session: GameSession = + match GameSession::connect::(config).await { + Ok(s) => s, + Err(ConnectError::WebSocket(e) | ConnectError::Handshake(e)) => { + if is_reconnect { + clear_session(); + } + screen.set(Screen::Login { error: Some(e) }); + continue; + } + }; + + if !session.is_host { + save_session(&StoredSession { + relay_url: RELAY_URL.to_string(), + game_id: GAME_ID.to_string(), + room_id: room_id_for_storage.clone(), + token: session.reconnect_token, + is_host: false, + view_state: None, + }); + } + + let is_host = session.is_host; + let player_id = session.player_id; + let reconnect_token = session.reconnect_token; + let mut vs = ViewState::default_with_names("Blancs", "Noirs"); + let mut result_submitted = false; + + loop { + futures::select! { + cmd = cmd_rx.next().fuse() => match cmd { + Some(NetCommand::Action(action)) => { + session.send_action(action); + } + _ => { + clear_session(); + session.disconnect(); + pending.update(|q| q.clear()); + screen.set(Screen::Login { error: None }); + break; + } + }, + event = session.next_event().fuse() => match event { + Some(SessionEvent::Update(u)) => { + let prev_vs = vs.clone(); + match u { + ViewStateUpdate::Full(state) => vs = state, + ViewStateUpdate::Incremental(delta) => vs.apply_delta(&delta), + } + + if is_host && !result_submitted && vs.stage == SerStage::Ended { + result_submitted = true; + let room = room_id_for_storage.clone(); + let gs = vs.clone(); + spawn_local(submit_game_result(room, gs)); + } + + if is_host { + save_session(&StoredSession { + relay_url: RELAY_URL.to_string(), + game_id: GAME_ID.to_string(), + room_id: room_id_for_storage.clone(), + token: reconnect_token, + is_host: true, + view_state: Some(vs.clone()), + }); + } + let is_own_move = prev_vs.active_mp_player == Some(player_id); + push_or_show( + &prev_vs, + GameUiState { + view_state: vs.clone(), + player_id, + room_id: room_id_for_storage.clone(), + is_bot_game: false, + waiting_for_confirm: false, + pause_reason: None, + my_scored_event: None, + opp_scored_event: None, + last_moves: compute_last_moves(&prev_vs, &vs, is_own_move), + }, + pending, + screen, + ); + } + Some(SessionEvent::Disconnected(reason)) => { + pending.update(|q| q.clear()); + screen.set(Screen::Login { error: reason }); + break; + } + None => { + pending.update(|q| q.clear()); + screen.set(Screen::Login { error: None }); + break; + } + } + } + } + } + }); + + view! { + + + // Nav: hidden while game overlay is active + + + // Portal pages — always mounted for router stability +
    + "Page not found."

    }> + + + + +
    +
    + + // Game overlay: fixed, covers portal during play + {move || { + let q = pending.get(); + let front = q.front().cloned(); + if let Some(state) = front { + return view! { +
    + }.into_any(); + } + match screen.get() { + Screen::Playing(state) => view! { +
    + }.into_any(), + Screen::Connecting => view! { +
    + }.into_any(), + _ => view! { }.into_any(), + } + }} +
    +
    + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::game::session::infer_pause_reason; + use crate::game::trictrac::types::{PlayerScore, SerStage, SerTurnStage}; + + fn score() -> PlayerScore { + PlayerScore { + name: String::new(), + points: 0, + holes: 0, + can_bredouille: false, + } + } + + fn vs(dice: (u8, u8), turn_stage: SerTurnStage, active: Option) -> ViewState { + ViewState { + board: [0i8; 24], + stage: SerStage::InGame, + turn_stage, + active_mp_player: active, + scores: [score(), score()], + dice, + dice_jans: Vec::new(), + dice_moves: (CheckerMove::default(), CheckerMove::default()), + pre_game_roll: None, + } + } + + #[test] + fn dice_change_is_after_roll() { + let prev = vs((0, 0), SerTurnStage::RollDice, Some(1)); + let next = vs((3, 5), SerTurnStage::Move, Some(1)); + assert_eq!( + infer_pause_reason(&prev, &next, 0), + Some(PauseReason::AfterOpponentRoll) + ); + } + + #[test] + fn hold_to_move_is_after_go() { + let prev = vs((3, 5), SerTurnStage::HoldOrGoChoice, Some(1)); + let next = vs((3, 5), SerTurnStage::Move, Some(1)); + assert_eq!( + infer_pause_reason(&prev, &next, 0), + Some(PauseReason::AfterOpponentGo) + ); + } + + #[test] + fn turn_switch_is_after_move() { + let prev = vs((3, 5), SerTurnStage::Move, Some(1)); + let next = vs((3, 5), SerTurnStage::RollDice, Some(0)); + assert_eq!( + infer_pause_reason(&prev, &next, 0), + Some(PauseReason::AfterOpponentMove) + ); + } + + #[test] + fn own_action_returns_none() { + let prev = vs((0, 0), SerTurnStage::RollDice, Some(0)); + let next = vs((2, 4), SerTurnStage::Move, Some(0)); + assert_eq!(infer_pause_reason(&prev, &next, 0), None); + } + + #[test] + fn no_active_player_returns_none() { + let mut prev = vs((0, 0), SerTurnStage::RollDice, None); + prev.stage = SerStage::PreGame; + let mut next = prev.clone(); + next.active_mp_player = Some(0); + assert_eq!(infer_pause_reason(&prev, &next, 0), None); + } +} diff --git a/clients/web/src/game/components/board.rs b/clients/web/src/game/components/board.rs new file mode 100644 index 0000000..1e4a5a3 --- /dev/null +++ b/clients/web/src/game/components/board.rs @@ -0,0 +1,594 @@ +use leptos::prelude::*; +use trictrac_store::CheckerMove; + +use super::die::Die; +use crate::game::trictrac::types::{SerTurnStage, ViewState}; + +/// Field numbers in visual display order (left-to-right for each quarter), white's perspective. +const TOP_LEFT_W: [u8; 6] = [13, 14, 15, 16, 17, 18]; +const TOP_RIGHT_W: [u8; 6] = [19, 20, 21, 22, 23, 24]; +const BOT_LEFT_W: [u8; 6] = [12, 11, 10, 9, 8, 7]; +const BOT_RIGHT_W: [u8; 6] = [6, 5, 4, 3, 2, 1]; + +/// 180° rotation of white's layout: black's pieces (field 24) appear at the bottom. +const TOP_LEFT_B: [u8; 6] = [1, 2, 3, 4, 5, 6]; +const TOP_RIGHT_B: [u8; 6] = [7, 8, 9, 10, 11, 12]; +const BOT_LEFT_B: [u8; 6] = [24, 23, 22, 21, 20, 19]; +const BOT_RIGHT_B: [u8; 6] = [18, 17, 16, 15, 14, 13]; + +/// The rest corner is field 12 (White) or field 13 (Black) in the store's coordinate system. +/// Returns true when `field_num` is the rest corner for this perspective. +#[allow(dead_code)] +fn is_rest_corner(field_num: u8, is_white: bool) -> bool { + if is_white { + field_num == 12 + } else { + field_num == 13 + } +} + +/// Zone CSS class for a field number (field coordinates are always White's 1-24). +fn field_zone_class(field_num: u8) -> &'static str { + match field_num { + 1..=6 => "zone-petit", + 7..=12 => "zone-grand", + 13..=18 => "zone-opponent", + 19..=24 => "zone-retour", + _ => "", + } +} + +/// Returns (d0_used, d1_used) for the bar dice display. +fn bar_matched_dice_used(staged: &[(u8, u8)], dice: (u8, u8)) -> (bool, bool) { + let mut d0 = false; + let mut d1 = false; + for &(from, to) in staged { + let dist = if from < to { + to.saturating_sub(from) + } else { + from.saturating_sub(to) + }; + if !d0 && dist == dice.0 { + d0 = true; + } else if !d1 && dist == dice.1 { + d1 = true; + } else if !d0 { + d0 = true; + } else { + d1 = true; + } + } + (d0, d1) +} + +/// Returns the displayed board value for `field_num` after applying `staged_moves`. +/// Field numbers are always in white's coordinate system (1–24). +fn displayed_value( + base_board: [i8; 24], + staged_moves: &[(u8, u8)], + is_white: bool, + field_num: u8, +) -> i8 { + let mut val = base_board[(field_num - 1) as usize]; + let delta: i8 = if is_white { 1 } else { -1 }; + for &(from, to) in staged_moves { + if from == field_num { + val -= delta; + } + if to == field_num { + val += delta; + } + } + val +} + +/// Fields whose checkers may be selected as the next origin given already-staged moves. +fn valid_origins_for(seqs: &[(CheckerMove, CheckerMove)], staged: &[(u8, u8)]) -> Vec { + let mut v: Vec = match staged.len() { + 0 => seqs + .iter() + .map(|(m1, _)| m1.get_from() as u8) + .filter(|&f| f != 0) + .collect(), + 1 => { + let (f0, t0) = staged[0]; + seqs.iter() + .filter(|(m1, _)| m1.get_from() as u8 == f0 && m1.get_to() as u8 == t0) + .map(|(_, m2)| m2.get_from() as u8) + .filter(|&f| f != 0) + .collect() + } + _ => vec![], + }; + v.sort_unstable(); + v.dedup(); + v +} + +/// Pixel center of a board field in the SVG overlay coordinate space. +/// Geometry: field 60×180px, board padding 4px, gap 4px, bar 20px, center-bar 12px. +/// With triangular flèches, arrows target the WIDE BASE of each triangle — +/// that is where the checker stack actually sits. +fn field_center(f: usize, is_white: bool) -> Option<(f32, f32)> { + if f == 0 || f > 24 { + return None; + } + let (qi, right, top): (usize, bool, bool) = if is_white { + match f { + 13..=18 => (f - 13, false, true), + 19..=24 => (f - 19, true, true), + 7..=12 => (12 - f, false, false), + 1..=6 => (6 - f, true, false), + _ => return None, + } + } else { + match f { + 1..=6 => (f - 1, false, true), + 7..=12 => (f - 7, true, true), + 19..=24 => (24 - f, false, false), + 13..=18 => (18 - f, true, false), + _ => return None, + } + }; + // Left-quarter field i center x: 4(pad) + i*62 + 30(half field) = 34 + 62i + // Right-quarter: 4 + 370(quarter) + 4(gap) + 68(bar) + 4(gap) + i*62 + 30 = 480 + 62i + let x = if right { + 480.0 + qi as f32 * 62.0 + } else { + 34.0 + qi as f32 * 62.0 + }; + // Top row triangle base (wide end) ≈ y=30; bot row triangle base ≈ y=358. + // (Top base: 4pad + 4field-pad + 20half-checker ≈ 28; Bot base: 388 − 4pad − 4field-pad − 20 ≈ 360) + let y = if top { 30.0 } else { 358.0 }; + Some((x, y)) +} + +/// SVG `` element drawing one arrow (shadow + gold) from `fp` to `tp`. +fn arrow_svg(fp: (f32, f32), tp: (f32, f32)) -> AnyView { + let (x1, y1) = fp; + let (x2, y2) = tp; + let dx = x2 - x1; + let dy = y2 - y1; + let len = (dx * dx + dy * dy).sqrt(); + if len < 10.0 { + return view! { }.into_any(); + } + let nx = dx / len; + let ny = dy / len; + let px = -ny; + let py = nx; + + // Shrink line ends so arrows don't overlap the checker stack + let lx1 = x1 + nx * 20.0; + let ly1 = y1 + ny * 20.0; + let lx2 = x2 - nx * 15.0; + let ly2 = y2 - ny * 15.0; + + // Arrowhead triangle at (x2, y2) + let ah = 15.0_f32; + let aw = 7.0_f32; + let bx = x2 - nx * ah; + let bary = y2 - ny * ah; + let pts = format!( + "{:.1},{:.1} {:.1},{:.1} {:.1},{:.1}", + x2, + y2, + bx + px * aw, + bary + py * aw, + bx - px * aw, + bary - py * aw, + ); + let shadow_pts = format!( + "{:.1},{:.1} {:.1},{:.1} {:.1},{:.1}", + x2, + y2, + bx + px * (aw + 1.5), + bary + py * (aw + 1.5), + bx - px * (aw + 1.5), + bary - py * (aw + 1.5), + ); + + view! { + + // Drop-shadow for readability on coloured fields + + + // Gold arrow + + + + } + .into_any() +} + +/// Valid destinations for a selected origin given already-staged moves. +/// May include 0 (exit); callers handle that case. +fn valid_dests_for( + seqs: &[(CheckerMove, CheckerMove)], + staged: &[(u8, u8)], + origin: u8, +) -> Vec { + let mut v: Vec = match staged.len() { + 0 => seqs + .iter() + .filter(|(m1, _)| m1.get_from() as u8 == origin) + .map(|(m1, _)| m1.get_to() as u8) + .collect(), + 1 => { + let (f0, t0) = staged[0]; + seqs.iter() + .filter(|(m1, m2)| { + m1.get_from() as u8 == f0 + && m1.get_to() as u8 == t0 + && m2.get_from() as u8 == origin + }) + .map(|(_, m2)| m2.get_to() as u8) + .collect() + } + _ => vec![], + }; + v.sort_unstable(); + v.dedup(); + v +} + +#[component] +pub fn Board( + view_state: ViewState, + player_id: u16, + /// Pending origin selection (first click of a move pair). + selected_origin: RwSignal>, + /// Moves staged so far this turn (max 2). Each entry is (from, to), 0 = empty move. + staged_moves: RwSignal>, + /// All valid two-move sequences for this turn (empty when not in move stage). + valid_sequences: Vec<(CheckerMove, CheckerMove)>, + /// Dice to display in the center bars; None means dice not yet rolled (cups shown upright). + #[prop(default = None)] + bar_dice: Option<(u8, u8)>, + /// Whether we're in the move stage (determines used/unused die appearance). + #[prop(default = false)] + bar_is_move: bool, + #[prop(default = false)] is_my_turn: bool, + /// Whether the dice are a double (golden glow). + #[prop(default = false)] + bar_is_double: bool, + /// Checker moves to animate on mount (None when board unchanged). + #[prop(default = None)] + last_moves: Option<(CheckerMove, CheckerMove)>, + /// Fields where a hit (battue) was scored this turn — show ripple animation. + #[prop(default = vec![])] + hit_fields: Vec, +) -> impl IntoView { + let board = view_state.board; + let is_move_stage = view_state.active_mp_player == Some(player_id) + && matches!( + view_state.turn_stage, + SerTurnStage::Move | SerTurnStage::HoldOrGoChoice + ); + let is_white = player_id == 0; + let hovered_moves = use_context::>>(); + + // Exit-eligible (§8c): all the player's checkers are in their last jan. + // White last jan = fields 19-24 (board indices 18-23, positive values). + // Black last jan = fields 1-6 (board indices 0-5, negative values). + let board_snapshot = view_state.board; + let all_in_exit: bool; + let exit_field_test: fn(u8) -> bool; + if is_white { + let in_exit: i8 = board_snapshot[18..24].iter().map(|&v| v.max(0)).sum(); + let total: i8 = board_snapshot.iter().map(|&v| v.max(0)).sum(); + all_in_exit = total > 0 && in_exit == total; + exit_field_test = |f| matches!(f, 19..=24); + } else { + let in_exit: i8 = board_snapshot[0..6].iter().map(|&v| (-v).max(0)).sum(); + let total: i8 = board_snapshot.iter().map(|&v| (-v).max(0)).sum(); + all_in_exit = total > 0 && in_exit == total; + exit_field_test = |f| matches!(f, 1..=6); + } + + // `valid_sequences` is cloned per field (the Vec is small; Send-safe unlike Rc). + let fields_from = |nums: &[u8], is_top_row: bool| -> Vec { + nums.iter() + .map(|&field_num| { + // Each reactive closure gets its own owned clone — Vec<(CheckerMove,CheckerMove)> + // is Send, which Leptos requires for reactive attribute functions. + let seqs_c = valid_sequences.clone(); + let seqs_k = valid_sequences.clone(); + let corner_title = if is_rest_corner(field_num, is_white) { + Some("Coin de repos — must enter and leave with 2 checkers") + } else { + None + }; + // §4a — slide delta for the arriving checker at this field. + // Computed once per field at render time; Option<(f32,f32)> is Copy. + let slide_delta: Option<(f32, f32)> = last_moves.and_then(|(m1, m2)| { + [m1, m2].iter().find_map(|m| { + if m.get_to() != field_num as usize || m.get_from() == m.get_to() { + return None; + } + let (fx, fy) = field_center(m.get_from(), is_white)?; + let (tx, ty) = field_center(m.get_to(), is_white)?; + let dx = fx - tx; + let dy = fy - ty; + (dx.abs() >= 1.0 || dy.abs() >= 1.0).then_some((dx, dy)) + }) + }); + // §6e — ripple on hit fields (battue). + let is_hit_field = hit_fields.contains(&field_num); + view! { +
    0 } else { val < 0 }; + let can_stage = is_move_stage && staged.len() < 2; + let sel = selected_origin.get(); + + let mut cls = format!("field {}", field_zone_class(field_num)); + if is_rest_corner(field_num, is_white) { + cls.push_str(" corner"); + // Pulse when the corner can be reached this turn + if !seqs_c.is_empty() && seqs_c.iter().any(|(m1, m2)| { + m1.get_to() as u8 == field_num + || m2.get_to() as u8 == field_num + }) { + cls.push_str(" corner-available"); + } + } + if is_rest_corner(field_num, !is_white) { + cls.push_str(" corner"); + } + if all_in_exit && exit_field_test(field_num) { + cls.push_str(" exit-eligible"); + } + + if seqs_c.is_empty() { + // No restriction (dice not rolled or not move stage) + if can_stage && (sel.is_some() || is_mine) { + cls.push_str(" clickable"); + } + if sel == Some(field_num) { cls.push_str(" selected"); } + if can_stage && sel.is_some() && sel != Some(field_num) { + cls.push_str(" dest"); + } + } else if can_stage { + if let Some(origin) = sel { + if origin == field_num { + cls.push_str(" selected clickable"); + } else { + let dests = valid_dests_for(&seqs_c, &staged, origin); + // Only highlight non-exit destinations (field 0 = exit has no tile) + if dests.iter().any(|&d| d == field_num && d != 0) { + cls.push_str(" clickable dest"); + } + } + } else { + let origins = valid_origins_for(&seqs_c, &staged); + if origins.iter().any(|&o| o == field_num) { + cls.push_str(" clickable"); + } + } + } + + // §6c: highlight fields touched by the hovered jan + if let Some(hm) = hovered_moves { + let pairs = hm.get(); + let f = field_num as usize; + let highlighted = pairs.iter().any(|(m1, m2)| { + (m1.get_from() != 0 && m1.get_from() == f) + || (m1.get_to() != 0 && m1.get_to() == f) + || (m2.get_from() != 0 && m2.get_from() == f) + || (m2.get_to() != 0 && m2.get_to() == f) + }); + if highlighted { + cls.push_str(" jan-hovered"); + } + } + + cls + } + on:click=move |_| { + if !is_move_stage { return; } + let staged = staged_moves.get_untracked(); + if staged.len() >= 2 { return; } + + match selected_origin.get_untracked() { + Some(origin) if origin == field_num => { + selected_origin.set(None); + } + Some(origin) => { + let valid = if seqs_k.is_empty() { + true + } else { + valid_dests_for(&seqs_k, &staged, origin) + .iter() + .any(|&d| d == field_num) + }; + if valid { + staged_moves.update(|v| v.push((origin, field_num))); + selected_origin.set(None); + } + } + None => { + if seqs_k.is_empty() { + let val = displayed_value(board, &staged, is_white, field_num); + if is_white && val > 0 || !is_white && val < 0 { + selected_origin.set(Some(field_num)); + } + } else { + let origins = valid_origins_for(&seqs_k, &staged); + if origins.iter().any(|&o| o == field_num) { + let dests = valid_dests_for(&seqs_k, &staged, field_num); + if !dests.is_empty() && dests.iter().all(|&d| d == 0) { + // All destinations are exits: auto-stage + staged_moves.update(|v| v.push((field_num, 0))); + } else { + selected_origin.set(Some(field_num)); + } + } + } + } + } + } + > + {field_num} + {move || { + let moves = staged_moves.get(); + let val = displayed_value(board, &moves, is_white, field_num); + let count = val.unsigned_abs(); + // §6e — ripple on hit (battue) fields; must be inside the + // reactive closure so Leptos uses the same direct rendering + // path as .arriving (avoids node-move that resets animation). + let ripple = is_hit_field.then(|| { + let cls = if is_top_row { "hit-ripple hit-ripple-top" } else { "hit-ripple hit-ripple-bot" }; + view! {
    }.into_any() + }); + let stack = (count > 0).then(|| { + let color = if val > 0 { "white" } else { "black" }; + let display_n = (count as usize).min(4); + // outermost index: last for top rows, first for bottom rows. + let outer_idx = if is_top_row { display_n - 1 } else { 0 }; + let chips: Vec = (0..display_n).map(|i| { + let label = if i == outer_idx && count >= 5 { + count.to_string() + } else { + String::new() + }; + if i == outer_idx { + if let Some((dx, dy)) = slide_delta { + return view! { +
    {label}
    + }.into_any(); + } + } + view! { +
    {label}
    + }.into_any() + }).collect(); + view! {
    {chips}
    }.into_any() + }); + (ripple, stack) + }} +
    + } + .into_any() + }) + .collect() + }; + + // ── Bar content: die in the center bar (die_idx 0 = top bar, 1 = bottom bar) ── + let bar_content = move |die_idx: u8| -> AnyView { + match bar_dice { + None => view! {
    }.into_any(), + Some(dice_vals) => { + let die_val = if die_idx == 0 { + dice_vals.0 + } else { + dice_vals.1 + }; + view! { +
    + {move || { + let staged = staged_moves.get(); + let (u0, u1) = if bar_is_move { + bar_matched_dice_used(&staged, dice_vals) + } else if is_my_turn { + (true, true) + } else { + (false, false) + }; + let used = if die_idx == 0 { u0 } else { u1 }; + view! { } + }} +
    + } + .into_any() + } + } + }; + + let (tl, tr, bl, br) = if is_white { + (&TOP_LEFT_W, &TOP_RIGHT_W, &BOT_LEFT_W, &BOT_RIGHT_W) + } else { + (&TOP_LEFT_B, &TOP_RIGHT_B, &BOT_LEFT_B, &BOT_RIGHT_B) + }; + + // Zone label pairs (top-left, top-right, bot-left, bot-right) per perspective. + let (label_tl, label_tr, label_bl, label_br) = if is_white { + ("", "jan de retour", "grand jan", "petit jan") + } else { + ("petit jan", "grand jan", "jan de retour", "") + }; + + view! { + // board-wrapper keeps zone labels outside .board so the SVG overlay + // inside .board stays correctly positioned (position:absolute top:0 left:0 + // is relative to .board, not the wrapper). +
    +
    +
    {label_tl}
    +
    +
    {label_tr}
    +
    +
    +
    +
    {fields_from(tl, true)}
    +
    {bar_content(0)}
    +
    {fields_from(tr, true)}
    +
    +
    +
    +
    {fields_from(bl, false)}
    +
    {bar_content(1)}
    +
    {fields_from(br, false)}
    +
    + // SVG overlay: arrows for hovered jan moves + + {move || { + let Some(hm) = hovered_moves else { return vec![]; }; + let pairs = hm.get(); + if pairs.is_empty() { return vec![]; } + // Collect unique individual (from, to) moves; skip empty/exit. + let mut moves: Vec<(usize, usize)> = pairs.iter() + .flat_map(|(m1, m2)| [ + (m1.get_from(), m1.get_to()), + (m2.get_from(), m2.get_to()), + ]) + .filter(|&(f, t)| f != 0 && t != 0) + .collect(); + moves.sort_unstable(); + moves.dedup(); + moves.into_iter() + .filter_map(|(from, to)| { + let p1 = field_center(from, is_white)?; + let p2 = field_center(to, is_white)?; + Some(arrow_svg(p1, p2)) + }) + .collect() + }} + +
    +
    +
    {label_bl}
    +
    +
    {label_br}
    +
    +
    + } +} diff --git a/clients/web/src/game/components/connecting_screen.rs b/clients/web/src/game/components/connecting_screen.rs new file mode 100644 index 0000000..6f40da5 --- /dev/null +++ b/clients/web/src/game/components/connecting_screen.rs @@ -0,0 +1,9 @@ +use leptos::prelude::*; + +use crate::i18n::*; + +#[component] +pub fn ConnectingScreen() -> impl IntoView { + let i18n = use_i18n(); + view! {

    {t!(i18n, connecting)}

    } +} diff --git a/clients/web/src/game/components/die.rs b/clients/web/src/game/components/die.rs new file mode 100644 index 0000000..7576280 --- /dev/null +++ b/clients/web/src/game/components/die.rs @@ -0,0 +1,53 @@ +use leptos::prelude::*; + +/// (cx, cy) positions for dots on a 48×48 die face. +fn dot_positions(value: u8) -> &'static [(&'static str, &'static str)] { + match value { + 1 => &[("24", "24")], + 2 => &[("35", "13"), ("13", "35")], + 3 => &[("35", "13"), ("24", "24"), ("13", "35")], + 4 => &[("13", "13"), ("35", "13"), ("13", "35"), ("35", "35")], + 5 => &[("13", "13"), ("35", "13"), ("24", "24"), ("13", "35"), ("35", "35")], + 6 => &[("13", "13"), ("35", "13"), ("13", "24"), ("35", "24"), ("13", "35"), ("35", "35")], + _ => &[], + } +} + +/// A single die face rendered as SVG. +/// `value` 1–6 shows dots; 0 shows an empty face (not-yet-rolled). +/// `used` dims the die. +/// `is_double` applies a golden glow (both dice same value). +#[component] +pub fn Die( + value: u8, + used: bool, + #[prop(default = false)] is_double: bool, +) -> AnyView { + let mut cls = if used { + "die-face die-used".to_string() + } else { + "die-face".to_string() + }; + if is_double && !used { + cls.push_str(" die-double"); + } + if value == 0 { + return view! { + + + {"?"} + + }.into_any(); + } + let dots: Vec = dot_positions(value) + .iter() + .map(|&(cx, cy)| view! { }.into_any()) + .collect(); + view! { + + + {dots} + + }.into_any() +} diff --git a/clients/web/src/game/components/game_screen.rs b/clients/web/src/game/components/game_screen.rs new file mode 100644 index 0000000..3806a41 --- /dev/null +++ b/clients/web/src/game/components/game_screen.rs @@ -0,0 +1,470 @@ +use std::cell::Cell; +use std::collections::VecDeque; + +use futures::channel::mpsc::UnboundedSender; +use leptos::prelude::*; +use trictrac_store::{Board as StoreBoard, CheckerMove, Color, Dice as StoreDice, Jan, MoveRules}; + +use super::die::Die; +use crate::app::{GameUiState, NetCommand, PauseReason}; +use crate::i18n::*; +use crate::game::trictrac::types::{PlayerAction, PreGameRollState, SerStage, SerTurnStage}; + +use super::board::Board; +use super::score_panel::PlayerScorePanel; +use super::scoring::ScoringPanel; + +#[component] +pub fn GameScreen(state: GameUiState) -> impl IntoView { + let i18n = use_i18n(); + + let auth_username = + use_context::>>().unwrap_or_else(|| RwSignal::new(None)); + let vs = state.view_state.clone(); + let player_id = state.player_id; + let is_my_turn = vs.active_mp_player == Some(player_id); + let is_move_stage = is_my_turn + && matches!( + vs.turn_stage, + SerTurnStage::Move | SerTurnStage::HoldOrGoChoice + ); + let waiting_for_confirm = state.waiting_for_confirm; + let pause_reason = state.pause_reason.clone(); + + // ── Hovered jan moves (shown as arrows on the board) ────────────────────── + let hovered_jan_moves: RwSignal> = RwSignal::new(vec![]); + provide_context(hovered_jan_moves); + + // ── Staged move state ────────────────────────────────────────────────────── + let selected_origin: RwSignal> = RwSignal::new(None); + let staged_moves: RwSignal> = RwSignal::new(Vec::new()); + + let cmd_tx = use_context::>() + .expect("UnboundedSender not found in context"); + let pending = + use_context::>>().expect("pending not found in context"); + let cmd_tx_effect = cmd_tx.clone(); + // Non-reactive counter so we can detect when staged_moves grows without + // returning a value from the Effect (which causes a Leptos reactive loop + // when the Effect also writes to the same signal it reads). + let prev_staged_len = Cell::new(0usize); + + Effect::new(move |_| { + let moves = staged_moves.get(); + let n = moves.len(); + // Play checker sound whenever a move is added (own moves, immediate feedback). + if n > prev_staged_len.get() { + crate::game::sound::play_checker_move(); + } + prev_staged_len.set(n); + if n == 2 { + let to_cm = |&(from, to): &(u8, u8)| { + CheckerMove::new(from as usize, to as usize).unwrap_or_default() + }; + cmd_tx_effect + .unbounded_send(NetCommand::Action(PlayerAction::Move( + to_cm(&moves[0]), + to_cm(&moves[1]), + ))) + .ok(); + staged_moves.set(vec![]); + selected_origin.set(None); + // Reset the counter so the next turn starts clean. + prev_staged_len.set(0); + } + }); + + // ── Auto-roll effect ───────────────────────────────────────────────────── + // GameScreen is fully re-mounted on every ViewState update (state is a + // plain prop, not a signal), so this effect fires exactly once per + // RollDice phase entry and will not double-send. + // Guard: suppressed while waiting_for_confirm — the AfterOpponentMove + // buffered state shows the human's RollDice turn but the auto-roll must + // wait until the buffer is drained and the live screen state is shown. + // Guard: never auto-roll during the pre-game ceremony (the ceremony overlay + // has its own Roll button for PlayerAction::PreGameRoll). + let show_roll = + is_my_turn && vs.turn_stage == SerTurnStage::RollDice && vs.stage != SerStage::PreGameRoll; + if show_roll && !waiting_for_confirm { + let cmd_tx_auto = cmd_tx.clone(); + Effect::new(move |_| { + cmd_tx_auto + .unbounded_send(NetCommand::Action(PlayerAction::Roll)) + .ok(); + }); + } + + let dice = vs.dice; + let show_dice = dice != (0, 0); + + // ── Button senders ───────────────────────────────────────────────────────── + let cmd_tx_go = cmd_tx.clone(); + let cmd_tx_quit = cmd_tx.clone(); + let cmd_tx_end_quit = cmd_tx.clone(); + let cmd_tx_end_replay = cmd_tx.clone(); + // Only show the fallback Go button when there is no ScoringPanel showing it. + let show_hold_go = is_my_turn + && vs.turn_stage == SerTurnStage::HoldOrGoChoice + && state.my_scored_event.is_none(); + + // ── Valid move sequences for this turn ───────────────────────────────────── + // Computed once per ViewState snapshot; used by Board (highlighting) and the + // empty-move button (visibility). + let valid_sequences: Vec<(CheckerMove, CheckerMove)> = if is_move_stage && dice != (0, 0) { + let mut store_board = StoreBoard::new(); + store_board.set_positions(&Color::White, vs.board); + let store_dice = StoreDice { values: dice }; + let color = if player_id == 0 { + Color::White + } else { + Color::Black + }; + let rules = MoveRules::new(&color, &store_board, store_dice); + let raw = rules.get_possible_moves_sequences(true, vec![]); + if player_id == 0 { + raw + } else { + raw.into_iter() + .map(|(m1, m2)| (m1.mirror(), m2.mirror())) + .collect() + } + } else { + vec![] + }; + // Clone for the empty-move button reactive closure (Board consumes the original). + let valid_seqs_empty = valid_sequences.clone(); + + // ── Scores ───────────────────────────────────────────────────────────────── + let my_score = vs.scores[player_id as usize].clone(); + let opp_score = vs.scores[1 - player_id as usize].clone(); + + // ── Ceremony state (extracted before vs is moved into Board) ──────────────── + let is_ceremony = vs.stage == SerStage::PreGameRoll; + let pre_game_roll_data: Option = vs.pre_game_roll.clone(); + let my_name_ceremony = my_score.name.clone(); + let opp_name_ceremony = opp_score.name.clone(); + let cmd_tx_ceremony = cmd_tx.clone(); + + // ── Scoring notifications ────────────────────────────────────────────────── + let my_scored_event = state.my_scored_event.clone(); + let opp_scored_event = state.opp_scored_event.clone(); + let hole_toast_info = my_scored_event + .as_ref() + .filter(|e| e.holes_gained > 0) + .map(|e| (e.holes_total, e.bredouille)); + + let is_double_dice = dice.0 == dice.1 && dice.0 != 0; + + let last_moves = state.last_moves; + + // §6e — fields where a battue (hit) was scored; ripple animation shown there. + let hit_fields: Vec = { + let is_hit_jan = |jan: &Jan| { + matches!( + jan, + Jan::TrueHitSmallJan + | Jan::TrueHitBigJan + | Jan::TrueHitOpponentCorner + | Jan::FalseHitSmallJan + | Jan::FalseHitBigJan + ) + }; + let mut fields: Vec = vec![]; + for event_opt in [&my_scored_event, &opp_scored_event] { + if let Some(event) = event_opt { + for entry in &event.jans { + if is_hit_jan(&entry.jan) { + for (m1, m2) in &entry.moves { + for m in [m1, m2] { + let to = m.get_to() as u8; + if to != 0 && !fields.contains(&to) { + fields.push(to); + } + } + } + } + } + } + } + fields + }; + + // ── Sound effects (fire once on mount = once per state snapshot) ────────── + // Dice roll: dice just appeared (no preceding moves in this snapshot). + if show_dice && last_moves.is_none() { + crate::game::sound::play_dice_roll(); + } + // Checker move: moves were committed in the preceding action. + if last_moves.is_some() { + crate::game::sound::play_checker_move(); + } + // Scoring: hole takes priority over plain points. + if let Some(ref ev) = my_scored_event { + if ev.holes_gained > 0 { + crate::game::sound::play_hole_scored(); + } else { + crate::game::sound::play_points_scored(); + } + } + + // ── Capture for closures ─────────────────────────────────────────────────── + let stage = vs.stage.clone(); + let turn_stage = vs.turn_stage.clone(); + let turn_stage_for_panel = turn_stage.clone(); + let turn_stage_for_sub = turn_stage.clone(); + let room_id = state.room_id.clone(); + let is_bot_game = state.is_bot_game; + + // ── Game-over info ───────────────────────────────────────────────────────── + let stage_is_ended = stage == SerStage::Ended; + let winner_is_me = my_score.holes >= 12; + let my_name_end = my_score.name.clone(); + let my_holes_end = my_score.holes; + let opp_name_end = opp_score.name.clone(); + let opp_holes_end = opp_score.holes; + + view! { +
    + // ── Top bar ────────────────────────────────────────────────────── +
    + {move || if is_bot_game { + t_string!(i18n, vs_bot_label).to_owned() + } else { + t_string!(i18n, room_label, id = room_id.as_str()) + }} +
    + + +
    + + {move || auth_username.get().map(|u| view! { + "▶ " {u} + })} + + {t!(i18n, quit)} +
    + + // ── Opponent score (above board) ───────────────────────────────── + + + // ── Status bar — full width, above board (§10b) ────────────────── +
    + {move || { + if let Some(ref reason) = pause_reason { + return String::from(match reason { + PauseReason::AfterOpponentRoll => t_string!(i18n, after_opponent_roll), + PauseReason::AfterOpponentGo => t_string!(i18n, after_opponent_go), + PauseReason::AfterOpponentMove => t_string!(i18n, after_opponent_move), + PauseReason::AfterOpponentPreGameRoll => t_string!(i18n, after_opponent_pre_game_roll), + }); + } + let n = staged_moves.get().len(); + if is_move_stage { + t_string!(i18n, select_move, n = n + 1) + } else { + String::from(match (&stage, is_my_turn, &turn_stage) { + (SerStage::Ended, _, _) => t_string!(i18n, game_over), + (SerStage::PreGame, _, _) | (SerStage::PreGameRoll, _, _) => t_string!(i18n, waiting_for_opponent), + (SerStage::InGame, true, SerTurnStage::RollDice) => t_string!(i18n, your_turn_roll), + (SerStage::InGame, true, SerTurnStage::HoldOrGoChoice) => t_string!(i18n, hold_or_go), + (SerStage::InGame, true, _) => t_string!(i18n, your_turn), + (SerStage::InGame, false, _) => t_string!(i18n, opponent_turn), + }) + } + }} +
    + + // ── Contextual sub-prompt (§8a) ────────────────────────────────── + {move || { + let hint: String = if waiting_for_confirm { + t_string!(i18n, hint_continue).to_owned() + } else if is_move_stage { + t_string!(i18n, hint_move).to_owned() + } else if is_my_turn && turn_stage_for_sub == SerTurnStage::HoldOrGoChoice { + t_string!(i18n, hint_hold_or_go).to_owned() + } else { + String::new() + }; + (!hint.is_empty()).then(|| view! {

    {hint}

    }) + }} + + // ── Board + side panel ─────────────────────────────────────────── +
    + + + // ── Side panel (scoring panels only) ───────────────────────── +
    + {my_scored_event.map(|event| view! { + + })} + {opp_scored_event.map(|event| view! { + + })} +
    +
    + + // ── Action buttons below board (§10c) ──────────────────────────── +
    + {waiting_for_confirm.then(|| view! { + + })} + // Fallback Go button when no scoring panel (e.g. after reconnect) + {show_hold_go.then(|| view! { + + })} + {move || { + // Show the empty-move button only when (0,0) is a valid + // first or second move given what has already been staged. + let staged = staged_moves.get(); + let show = is_move_stage && staged.len() < 2 && ( + valid_seqs_empty.is_empty() || match staged.len() { + 0 => valid_seqs_empty.iter().any(|(m1, _)| m1.get_from() == 0), + 1 => { + let (f0, t0) = staged[0]; + valid_seqs_empty.iter() + .filter(|(m1, _)| { + m1.get_from() as u8 == f0 + && m1.get_to() as u8 == t0 + }) + .any(|(_, m2)| m2.get_from() == 0) + } + _ => false, + } + ); + show.then(|| view! { + + }) + }} +
    + + // ── Player score (below board) ──────────────────────────────────── + + + // ── Pre-game ceremony overlay ───────────────────────────────────── + {is_ceremony.then(|| { + let pgr = pre_game_roll_data.unwrap_or(PreGameRollState { + host_die: None, + guest_die: None, + tie_count: 0, + }); + let my_die = if player_id == 0 { pgr.host_die } else { pgr.guest_die }; + let opp_die = if player_id == 0 { pgr.guest_die } else { pgr.host_die }; + let can_roll = my_die.is_none() && !waiting_for_confirm; + let show_tie = pgr.tie_count > 0; + view! { +
    +
    +

    {t!(i18n, pre_game_roll_title)}

    + {show_tie.then(|| view! { +

    {t!(i18n, pre_game_roll_tie)}

    + })} +
    +
    + {my_name_ceremony}{t!(i18n, you_suffix)} + +
    +
    + {opp_name_ceremony} + +
    +
    + {waiting_for_confirm.then(|| { + let pending_c = pending; + view! { + + } + })} + {can_roll.then(|| { + let cmd_tx_c = cmd_tx_ceremony.clone(); + view! { + + } + })} +
    +
    + } + })} + + // ── Game-over overlay ───────────────────────────────────────────── + {stage_is_ended.then(|| { + let opp_name_end_clone = opp_name_end.clone(); + let winner_text = move || if winner_is_me { + t_string!(i18n, you_win).to_owned() + } else { + t_string!(i18n, opp_wins, name = opp_name_end_clone.as_str()) + }; + view! { +
    +
    +

    {t!(i18n, game_over)}

    +

    {winner_text}

    +
    + {my_name_end} + + {format!("{my_holes_end} — {opp_holes_end}")} + + {opp_name_end.clone()} +
    +
    + + {is_bot_game.then(|| view! { + + })} +
    +
    +
    + } + })} + + // ── Hole toast (§6a) — board-centered overlay when a hole is won ── + {hole_toast_info.map(|(holes_total, bredouille)| view! { +
    +
    "Trou !"
    +
    {format!("{holes_total} / 12")}
    + {bredouille.then(|| view! { +
    "× 2 bredouille"
    + })} +
    + })} +
    + } +} diff --git a/clients/web/src/game/components/mod.rs b/clients/web/src/game/components/mod.rs new file mode 100644 index 0000000..4c48cbd --- /dev/null +++ b/clients/web/src/game/components/mod.rs @@ -0,0 +1,9 @@ +mod board; +mod connecting_screen; +mod die; +mod game_screen; +mod score_panel; +mod scoring; + +pub use connecting_screen::ConnectingScreen; +pub use game_screen::GameScreen; diff --git a/clients/web/src/game/components/score_panel.rs b/clients/web/src/game/components/score_panel.rs new file mode 100644 index 0000000..2ce14ef --- /dev/null +++ b/clients/web/src/game/components/score_panel.rs @@ -0,0 +1,70 @@ +use leptos::prelude::*; +use trictrac_store::Jan; + +use crate::i18n::*; +use crate::game::trictrac::types::PlayerScore; + +pub fn jan_label(jan: &Jan) -> String { + let i18n = use_i18n(); + match jan { + Jan::FilledQuarter => t_string!(i18n, jan_filled_quarter).to_owned(), + Jan::TrueHitSmallJan => t_string!(i18n, jan_true_hit_small).to_owned(), + Jan::TrueHitBigJan => t_string!(i18n, jan_true_hit_big).to_owned(), + Jan::TrueHitOpponentCorner => t_string!(i18n, jan_true_hit_corner).to_owned(), + Jan::FirstPlayerToExit => t_string!(i18n, jan_first_exit).to_owned(), + Jan::SixTables => t_string!(i18n, jan_six_tables).to_owned(), + Jan::TwoTables => t_string!(i18n, jan_two_tables).to_owned(), + Jan::Mezeas => t_string!(i18n, jan_mezeas).to_owned(), + Jan::FalseHitSmallJan => t_string!(i18n, jan_false_hit_small).to_owned(), + Jan::FalseHitBigJan => t_string!(i18n, jan_false_hit_big).to_owned(), + Jan::ContreTwoTables => t_string!(i18n, jan_contre_two).to_owned(), + Jan::ContreMezeas => t_string!(i18n, jan_contre_mezeas).to_owned(), + Jan::HelplessMan => t_string!(i18n, jan_helpless_man).to_owned(), + } +} + +#[component] +pub fn PlayerScorePanel(score: PlayerScore, is_you: bool) -> impl IntoView { + let i18n = use_i18n(); + + let points_pct = format!("{}%", (score.points as u32 * 100 / 12).min(100)); + let points_val = format!("{}/12", score.points); + let holes = score.holes; + let can_bredouille = score.can_bredouille; + + // 12 peg holes; filled up to `holes` + let pegs: Vec = (1u8..=12) + .map(|i| { + let cls = if i <= holes { "peg-hole filled" } else { "peg-hole" }; + view! {
    }.into_any() + }) + .collect(); + + view! { +
    +
    + + {score.name} + {is_you.then(|| t!(i18n, you_suffix))} + +
    +
    +
    + {t!(i18n, points_label)} +
    +
    +
    + {points_val} + {can_bredouille.then(|| view! { + "B" + })} +
    +
    + {t!(i18n, holes_label)} +
    {pegs}
    + {format!("{holes}/12")} +
    +
    +
    + } +} diff --git a/clients/web/src/game/components/scoring.rs b/clients/web/src/game/components/scoring.rs new file mode 100644 index 0000000..d1966be --- /dev/null +++ b/clients/web/src/game/components/scoring.rs @@ -0,0 +1,209 @@ +use futures::channel::mpsc::UnboundedSender; +#[cfg(target_arch = "wasm32")] +use gloo_timers::future::TimeoutFuture; +use leptos::prelude::*; +use trictrac_store::CheckerMove; +#[cfg(target_arch = "wasm32")] +use wasm_bindgen_futures::spawn_local; +#[cfg(target_arch = "wasm32")] +use std::sync::{Arc, atomic::{AtomicBool, Ordering}}; + +use crate::app::NetCommand; +use crate::i18n::*; +use crate::game::trictrac::types::{JanEntry, PlayerAction, ScoredEvent, SerTurnStage}; + +use super::score_panel::jan_label; + +/// One row in the scoring panel. Sets the hovered-moves context on enter +/// (so board shows arrows for that jan's moves), but does NOT clear on +/// leave — clearing is handled by the outer wrapper's mouseleave so that +/// arrows persist while the pointer moves between rows. +fn scoring_jan_row(entry: JanEntry) -> impl IntoView { + let i18n = use_i18n(); + let hovered = use_context::>>(); + let jan = entry.jan; + let is_double = entry.is_double; + let ways_tag = format!("×{}", entry.ways); + let pts_str = format!("+{}", entry.total); + let moves_hover = entry.moves.clone(); + + view! { +
    + {move || jan_label(&jan)} + {move || if is_double { + t_string!(i18n, jan_double).to_owned() + } else { + t_string!(i18n, jan_simple).to_owned() + }} + {ways_tag} + {pts_str} +
    + } +} + +#[component] +pub fn ScoringPanel( + event: ScoredEvent, + turn_stage: SerTurnStage, + #[prop(default = false)] is_opponent: bool, +) -> impl IntoView { + let i18n = use_i18n(); + let cmd_tx = use_context::>() + .expect("UnboundedSender not found in context"); + + let points_earned = event.points_earned; + let holes_gained = event.holes_gained; + let holes_total = event.holes_total; + let bredouille = event.bredouille; + let show_hold_go = !is_opponent && turn_stage == SerTurnStage::HoldOrGoChoice; + let panel_class = if is_opponent { + "scoring-panel scoring-panel-opp" + } else { + "scoring-panel" + }; + + // ── Lifecycle signals ────────────────────────────────────────────────── + // peeked: added after 3.4 s (slide to peek strip) + // revealed: added on first hover of the peek strip (stay open permanently) + let peeked = RwSignal::new(false); + let revealed = RwSignal::new(false); + + // ── Collect all moves from all jans for automatic arrow display ──────── + let all_moves: Vec<(CheckerMove, CheckerMove)> = event + .jans + .iter() + .flat_map(|e| e.moves.iter().cloned()) + .collect(); + let all_moves_click = all_moves.clone(); + let all_moves_enter = all_moves.clone(); + + let hovered_ctx = use_context::>>(); + + // On mount: show all this event's moves as board arrows immediately, + // then after 3.4 s slide to peek and clear the arrows. + // + // Two important constraints: + // 1. The initial hm.set() must be deferred (spawn_local, not sync in body) + // to avoid writing a reactive signal mid-render while Board reads it — + // that triggers Leptos's cycle guard → `unreachable` WASM panic. + // 2. The cancellation flag must be Rc>, NOT RwSignal. + // RwSignal is a NodeId into Leptos's arena; the arena slot is freed + // when ScoringPanel's owner drops (on every GameScreen remount). If the + // 3.4 s future outlives the component and calls is_alive.get_untracked() + // on a freed slot, that also panics with `unreachable`. Rc> + // is reference-counted outside the arena and stays valid for as long as + // the future holds onto it. + #[cfg(target_arch = "wasm32")] + if let Some(hm) = hovered_ctx { + let is_alive = Arc::new(AtomicBool::new(true)); + let is_alive_cleanup = is_alive.clone(); + // on_cleanup requires Send + Sync; Arc satisfies both. + on_cleanup(move || is_alive_cleanup.store(false, Ordering::Relaxed)); + + spawn_local(async move { + // Show arrows (runs in the next microtask, after render settles). + hm.set(all_moves); + + TimeoutFuture::new(3_400).await; + // Guard: component may have been destroyed while we were waiting. + // is_alive was set to false by on_cleanup, which runs before Leptos + // frees the signal arena slots — so peeked is still valid iff this + // returns true. + if !is_alive.load(Ordering::Relaxed) { + return; + } + hm.set(vec![]); + peeked.set(true); + }); + } + + let jan_rows: Vec<_> = event.jans.into_iter().map(scoring_jan_row).collect(); + + view! { + // ── Outer wrapper: owns the slide / peek / reveal animation ─────── + // pointer-events are on by default (parent .side-panel sets none, + // and .scoring-panel-wrapper overrides back to auto in CSS). +
    +
    +
    + {move || if is_opponent { + t_string!(i18n, opp_scored_pts, n = points_earned) + } else { + t_string!(i18n, scored_pts, n = points_earned) + }} +
    + {jan_rows} + {(holes_gained > 0).then(|| view! { +
    + {move || if is_opponent { + t_string!(i18n, opp_hole_made, holes = holes_total) + } else { + t_string!(i18n, hole_made, holes = holes_total) + }} + {bredouille.then(|| view! { + + {move || t_string!(i18n, bredouille_applied)} + + })} +
    + })} + {show_hold_go.then(|| { + let dismissed = RwSignal::new(false); + view! { +
    + // stop_propagation so these buttons don't also toggle the panel + + +
    + } + })} +
    +
    + } +} diff --git a/clients/web/src/game/mod.rs b/clients/web/src/game/mod.rs new file mode 100644 index 0000000..c92b6f2 --- /dev/null +++ b/clients/web/src/game/mod.rs @@ -0,0 +1,4 @@ +pub mod components; +pub mod session; +pub mod sound; +pub mod trictrac; diff --git a/clients/web/src/game/session.rs b/clients/web/src/game/session.rs new file mode 100644 index 0000000..e648d01 --- /dev/null +++ b/clients/web/src/game/session.rs @@ -0,0 +1,253 @@ +use futures::channel::mpsc; +use leptos::prelude::*; + +use backbone_lib::traits::{BackEndArchitecture, BackendCommand}; + +use crate::app::{GameUiState, NetCommand, PauseReason, Screen}; +use crate::game::trictrac::backend::TrictracBackend; +use crate::game::trictrac::bot_local::bot_decide; +use crate::game::trictrac::types::{ + JanEntry, ScoredEvent, SerStage, SerTurnStage, ViewState, +}; +use trictrac_store::CheckerMove; + +use std::collections::VecDeque; + +/// Runs one local bot game. Returns `true` if the player wants to play again. +pub async fn run_local_bot_game( + screen: RwSignal, + cmd_rx: &mut mpsc::UnboundedReceiver, + pending: RwSignal>, +) -> bool { + let mut backend = TrictracBackend::new(0); + backend.player_arrival(0); + backend.player_arrival(1); + + let mut vs = ViewState::default_with_names("You", "Bot"); + for cmd in backend.drain_commands() { + match cmd { + BackendCommand::ResetViewState => { + vs = backend.get_view_state().clone(); + } + BackendCommand::Delta(delta) => { + vs.apply_delta(&delta); + } + _ => {} + } + } + screen.set(Screen::Playing(GameUiState { + view_state: vs.clone(), + player_id: 0, + room_id: String::new(), + is_bot_game: true, + waiting_for_confirm: false, + pause_reason: None, + my_scored_event: None, + opp_scored_event: None, + last_moves: None, + })); + + use futures::StreamExt; + loop { + match cmd_rx.next().await { + Some(NetCommand::Action(action)) => { + let prev_vs = vs.clone(); + backend.inform_rpc(0, action); + for cmd in backend.drain_commands() { + if let BackendCommand::Delta(delta) = cmd { + vs.apply_delta(&delta); + } + } + let scored = compute_scored_event(&prev_vs, &vs, 0); + let opp_scored = compute_scored_event(&prev_vs, &vs, 1); + screen.set(Screen::Playing(GameUiState { + view_state: vs.clone(), + player_id: 0, + room_id: String::new(), + is_bot_game: true, + waiting_for_confirm: false, + pause_reason: None, + my_scored_event: scored, + opp_scored_event: opp_scored, + last_moves: compute_last_moves(&prev_vs, &vs, true), + })); + } + Some(NetCommand::PlayVsBot) => return true, + _ => return false, + } + + loop { + let pgr = backend.get_view_state().pre_game_roll.clone(); + match bot_decide(backend.get_game(), pgr.as_ref()) { + None => break, + Some(action) => { + backend.inform_rpc(1, action); + for cmd in backend.drain_commands() { + if let BackendCommand::Delta(delta) = cmd { + let delta_prev_vs = vs.clone(); + vs.apply_delta(&delta); + push_or_show( + &delta_prev_vs, + GameUiState { + view_state: vs.clone(), + player_id: 0, + room_id: String::new(), + is_bot_game: true, + waiting_for_confirm: false, + pause_reason: None, + my_scored_event: None, + opp_scored_event: None, + last_moves: compute_last_moves(&delta_prev_vs, &vs, false), + }, + pending, + screen, + ); + } + } + } + } + } + } +} + +/// Returns the checker moves to animate when the board changed between two ViewStates. +pub fn compute_last_moves( + prev: &ViewState, + next: &ViewState, + own_move: bool, +) -> Option<(CheckerMove, CheckerMove)> { + if prev.board == next.board { + return None; + } + let (m1, m2) = next.dice_moves; + if m1 == CheckerMove::default() && m2 == CheckerMove::default() { + return None; + } + if own_move { + if m2 == CheckerMove::default() { + return None; + } + return Some((m2, CheckerMove::default())); + } + Some((m1, m2)) +} + +/// Computes a scoring event for `player_id` by comparing the previous and next ViewState. +pub fn compute_scored_event(prev: &ViewState, next: &ViewState, player_id: u16) -> Option { + let prev_score = &prev.scores[player_id as usize]; + let next_score = &next.scores[player_id as usize]; + + let holes_gained = next_score.holes.saturating_sub(prev_score.holes); + if holes_gained == 0 && prev_score.points == next_score.points { + return None; + } + + let bredouille = holes_gained > 0 && prev_score.can_bredouille; + + let my_jans: Vec = if next.active_mp_player == Some(player_id) + && prev.active_mp_player == Some(player_id) + { + next.dice_jans + .iter() + .filter(|e| e.total > 0) + .cloned() + .collect() + } else if next.active_mp_player == Some(player_id) && prev.active_mp_player != Some(player_id) { + next.dice_jans + .iter() + .filter(|e| e.total < 0) + .map(|e| JanEntry { + total: -e.total, + points_per: -e.points_per, + ..e.clone() + }) + .collect() + } else { + return None; + }; + + let points_earned: u8 = my_jans + .iter() + .fold(0u8, |acc, e| acc.saturating_add(e.total.unsigned_abs())); + + if points_earned == 0 && holes_gained == 0 { + return None; + } + + Some(ScoredEvent { + points_earned, + holes_gained, + holes_total: next_score.holes, + bredouille, + jans: my_jans, + }) +} + +/// Either queues the state as a confirmation step or shows it immediately. +pub fn push_or_show( + prev_vs: &ViewState, + new_state: GameUiState, + pending: RwSignal>, + screen: RwSignal, +) { + let scored = compute_scored_event(prev_vs, &new_state.view_state, new_state.player_id); + let opp_scored = compute_scored_event(prev_vs, &new_state.view_state, 1 - new_state.player_id); + + if let Some(reason) = infer_pause_reason(prev_vs, &new_state.view_state, new_state.player_id) { + pending.update(|q| { + q.push_back(GameUiState { + waiting_for_confirm: true, + pause_reason: Some(reason), + my_scored_event: scored, + opp_scored_event: opp_scored, + ..new_state.clone() + }); + }); + screen.set(Screen::Playing(GameUiState { + last_moves: None, + ..new_state + })); + } else { + screen.set(Screen::Playing(GameUiState { + my_scored_event: scored, + opp_scored_event: opp_scored, + ..new_state + })); + } +} + +/// Compares the previous and next ViewState to decide whether the transition +/// warrants a confirmation pause. +pub fn infer_pause_reason(prev: &ViewState, next: &ViewState, player_id: u16) -> Option { + let opponent_id = 1 - player_id; + + if next.stage == SerStage::PreGameRoll { + if let (Some(prev_pgr), Some(next_pgr)) = (&prev.pre_game_roll, &next.pre_game_roll) { + let both_now = next_pgr.host_die.is_some() && next_pgr.guest_die.is_some(); + let both_before = prev_pgr.host_die.is_some() && prev_pgr.guest_die.is_some(); + if both_now && !both_before { + return Some(PauseReason::AfterOpponentPreGameRoll); + } + } + return None; + } + + if prev.stage == SerStage::PreGameRoll { + return None; + } + + if next.active_mp_player == Some(opponent_id) { + if next.dice != prev.dice { + return Some(PauseReason::AfterOpponentRoll); + } + if prev.turn_stage == SerTurnStage::HoldOrGoChoice && next.turn_stage == SerTurnStage::Move { + return Some(PauseReason::AfterOpponentGo); + } + } + + if next.active_mp_player == Some(player_id) && prev.active_mp_player == Some(opponent_id) { + return Some(PauseReason::AfterOpponentMove); + } + + None +} diff --git a/clients/web/src/game/sound.rs b/clients/web/src/game/sound.rs new file mode 100644 index 0000000..5637ccd --- /dev/null +++ b/clients/web/src/game/sound.rs @@ -0,0 +1,182 @@ +//! Synthesised sound effects using the Web Audio API. +//! +//! All public functions are no-ops on non-WASM targets so callers need no +//! `#[cfg]` guards themselves. + +#[cfg(target_arch = "wasm32")] +mod inner { + use std::cell::RefCell; + use web_sys::{AudioContext, OscillatorType}; + + thread_local! { + static CTX: RefCell> = const { RefCell::new(None) }; + } + + fn with_ctx(f: F) { + CTX.with(|cell| { + let mut opt = cell.borrow_mut(); + if opt.is_none() { + *opt = AudioContext::new().ok(); + } + if let Some(ctx) = opt.as_ref() { + f(ctx); + } + }); + } + + /// Schedule a single oscillator tone with an exponential gain decay. + /// + /// - `start_offset`: seconds from `ctx.current_time()` when the tone starts + /// - `duration`: how long (in seconds) until gain reaches ~0 + fn play_tone( + ctx: &AudioContext, + freq: f32, + gain: f32, + duration: f64, + start_offset: f64, + wave: OscillatorType, + ) { + let t0 = ctx.current_time() + start_offset; + let t1 = t0 + duration; + + let Ok(osc) = ctx.create_oscillator() else { + return; + }; + let Ok(gain_node) = ctx.create_gain() else { + return; + }; + + osc.set_type(wave); + osc.frequency().set_value(freq); + + let gain_param = gain_node.gain(); + let _ = gain_param.set_value_at_time(gain, t0); + // exponential_ramp requires a positive target; 0.001 is inaudible + let _ = gain_param.exponential_ramp_to_value_at_time(0.001, t1); + + let dest = ctx.destination(); + let _ = osc.connect_with_audio_node(&gain_node); + let _ = gain_node.connect_with_audio_node(&dest); + + let _ = osc.start_with_when(t0); + let _ = osc.stop_with_when(t1); + } + + /// Short wooden clack: sine fundamental + triangle body resonance, ~80 ms. + pub fn play_checker_move() { + with_ctx(|ctx| { + // Sine at 300 Hz for the clean attack click + play_tone(ctx, 300.0, 0.55, 0.080, 0.000, OscillatorType::Sine); + // Triangle at 150 Hz for the woody body resonance + play_tone(ctx, 150.0, 0.35, 0.070, 0.005, OscillatorType::Triangle); + // Sub at 80 Hz for weight + play_tone(ctx, 80.0, 0.20, 0.060, 0.008, OscillatorType::Triangle); + }); + } + + /// Cinematic dice roll: ~500 ms of rolling texture + 5 impact transients. + /// + /// Two layers: + /// - A dense series of detuned sawtooth bursts that thin out over time, + /// modelling the continuous scrape/rattle of dice tumbling. + /// - Five percussive impacts (square clicks + triangle thuds) whose + /// inter-arrival gap shrinks as the dice decelerate and settle. + pub fn play_dice_roll_cinematic() { + with_ctx(|ctx| { + // ── Continuous rolling texture ───────────────────────────────── + // 16 steps over 440 ms; each step is two detuned sawtooth waves + // (the interference between them produces a noise-like texture). + // Gain fades by ~55 % from first to last step. + const N: u32 = 16; + for i in 0..N { + let t = i as f64 * 0.028; + let g = 0.017 * (1.0 - i as f32 / N as f32 * 0.55); + // Quasi-random frequencies so each step sounds different. + let f1 = 310.0 + (i as f32 * 29.3 % 280.0); + let f2 = 480.0 + (i as f32 * 43.7 % 220.0); + play_tone(ctx, f1, g, 0.028, t, OscillatorType::Sawtooth); + play_tone(ctx, f2, g * 0.70, 0.028, t, OscillatorType::Sawtooth); + } + + // ── Impact transients ────────────────────────────────────────── + // Gaps narrow toward the end (0.13 → 0.11 → 0.10 → 0.08 s), + // mimicking dice decelerating and settling. + let impacts: &[(f64, f32)] = &[(0.00, 1.00), (0.13, 0.8), (0.24, 0.54), (0.34, 0.30)]; + for &(t_off, amp) in impacts { + // Hard click: bright square partials → percussive attack + for &freq in &[700.0f32, 1_050.0, 1_500.0] { + play_tone(ctx, freq, amp * 0.03, 0.022, t_off, OscillatorType::Square); + } + // Woody body thud: two low triangle partials + play_tone( + ctx, + 130.0, + amp * 0.05, + 0.070, + t_off, + OscillatorType::Triangle, + ); + play_tone( + ctx, + 68.0, + amp * 0.07, + 0.090, + t_off, + OscillatorType::Triangle, + ); + } + }); + } + + /// Play the pre-recorded dice-roll MP3 asset. + pub fn play_dice_roll() { + if let Ok(audio) = web_sys::HtmlAudioElement::new_with_src("/diceroll.mp3") { + audio.set_volume(0.2); + let _ = audio.play(); + } + } + + /// Ascending three-note chime (C5 – E5 – G5). + pub fn play_points_scored() { + with_ctx(|ctx| { + let notes: [(f32, f64); 3] = [(523.25, 0.0), (659.25, 0.14), (783.99, 0.28)]; + for (freq, offset) in notes { + play_tone(ctx, freq, 0.28, 0.30, offset, OscillatorType::Sine); + } + }); + } + + /// Triumphant four-note fanfare (C5 – E5 – G5 – C6). + pub fn play_hole_scored() { + with_ctx(|ctx| { + let notes: [(f32, f64, f64); 4] = [ + (523.25, 0.0, 0.35), + (659.25, 0.17, 0.35), + (783.99, 0.34, 0.35), + (1046.5, 0.51, 0.55), + ]; + for (freq, offset, dur) in notes { + play_tone(ctx, freq, 0.32, dur, offset, OscillatorType::Sine); + } + }); + } +} + +// ── Public API: WASM delegates to `inner`, other targets are no-ops ─────────── + +#[cfg(target_arch = "wasm32")] +pub use inner::{ + play_checker_move, play_dice_roll, play_dice_roll_cinematic, play_hole_scored, + play_points_scored, +}; + +#[cfg(not(target_arch = "wasm32"))] +pub fn play_checker_move() {} +#[cfg(not(target_arch = "wasm32"))] +pub fn play_dice_roll() {} +#[cfg(not(target_arch = "wasm32"))] +pub fn play_dice_roll_cinematic() {} +#[cfg(not(target_arch = "wasm32"))] +pub fn play_points_scored() {} +#[cfg(not(target_arch = "wasm32"))] +pub fn play_hole_scored() {} diff --git a/clients/web/src/game/trictrac/backend.rs b/clients/web/src/game/trictrac/backend.rs new file mode 100644 index 0000000..ca28204 --- /dev/null +++ b/clients/web/src/game/trictrac/backend.rs @@ -0,0 +1,487 @@ +use backbone_lib::traits::{BackEndArchitecture, BackendCommand}; +use trictrac_store::{Dice, DiceRoller, GameEvent, GameState, TurnStage}; + +use super::types::{GameDelta, PlayerAction, PreGameRollState, SerStage, ViewState}; + +// Store PlayerId (u64) values used for the two players. +const HOST_PLAYER_ID: u64 = 1; +const GUEST_PLAYER_ID: u64 = 2; + +pub struct TrictracBackend { + game: GameState, + dice_roller: DiceRoller, + commands: Vec>, + view_state: ViewState, + /// Arrival flags: have host (index 0) and guest (index 1) joined? + arrived: [bool; 2], + /// Die rolled by each player during the ceremony ([host, guest]). + pre_game_dice: [Option; 2], + /// Number of tied rounds so far. + tie_count: u8, + /// True while the first-player ceremony is running. + ceremony_started: bool, +} + +impl TrictracBackend { + fn sync_view_state(&mut self) { + let mut vs = ViewState::from_game_state(&self.game, HOST_PLAYER_ID, GUEST_PLAYER_ID); + if self.ceremony_started { + vs.stage = SerStage::PreGameRoll; + vs.pre_game_roll = Some(PreGameRollState { + host_die: self.pre_game_dice[0], + guest_die: self.pre_game_dice[1], + tie_count: self.tie_count, + }); + // Both players roll independently; no single "active" player. + vs.active_mp_player = None; + } + self.view_state = vs; + } + + fn broadcast_state(&mut self) { + self.sync_view_state(); + let delta = GameDelta { + state: self.view_state.clone(), + }; + self.commands.push(BackendCommand::Delta(delta)); + } + + /// Process one ceremony die-roll for `mp_player` (0 = host, 1 = guest). + fn handle_pre_game_roll(&mut self, mp_player: u16) { + let idx = mp_player as usize; + // Ignore if this player already rolled. + if self.pre_game_dice[idx].is_some() { + return; + } + let single = self.dice_roller.roll().values.0; + self.pre_game_dice[idx] = Some(single); + + if let [Some(h), Some(g)] = self.pre_game_dice { + // Both have rolled — broadcast both dice before resolving. + self.broadcast_state(); + if h == g { + // Tie: reset for another round. + self.tie_count += 1; + self.pre_game_dice = [None; 2]; + self.broadcast_state(); + } else { + // Highest die goes first. + let goes_first = if h > g { + HOST_PLAYER_ID + } else { + GUEST_PLAYER_ID + }; + self.ceremony_started = false; + let _ = self.game.consume(&GameEvent::BeginGame { goes_first }); + // Use pre-game dice roll for the first move + let _ = self.game.consume(&GameEvent::Roll { + player_id: goes_first, + }); + let _ = self.game.consume(&GameEvent::RollResult { + player_id: goes_first, + dice: Dice { values: (g, h) }, + }); + self.broadcast_state(); + } + } else { + // Only one die rolled so far — broadcast the partial result. + self.broadcast_state(); + } + } + + /// Roll dice using the store's DiceRoller and fire Roll + RollResult events. + fn do_roll(&mut self) { + let dice = self.dice_roller.roll(); + let player_id = self.game.active_player_id; + let _ = self.game.consume(&GameEvent::Roll { player_id }); + let _ = self + .game + .consume(&GameEvent::RollResult { player_id, dice }); + + // Drive automatic stages that require no player input. + self.drive_automatic_stages(); + } + + /// Advance through stages that can be resolved without player input + /// (MarkPoints, MarkAdvPoints). + fn drive_automatic_stages(&mut self) { + loop { + // Stop if the game has already ended (stage transitions to Ended but + // turn_stage may still be MarkPoints when schools_enabled=false, which + // makes consume(Mark) a no-op and would cause an infinite loop). + if self.game.stage == trictrac_store::Stage::Ended { + break; + } + let player_id = self.game.active_player_id; + match self.game.turn_stage { + TurnStage::MarkPoints | TurnStage::MarkAdvPoints => { + let _ = self.game.consume(&GameEvent::Mark { + player_id, + points: self.game.dice_points.0.max(self.game.dice_points.1), + }); + } + _ => break, + } + } + } +} + +impl TrictracBackend { + pub fn get_game(&self) -> &GameState { + &self.game + } +} + +impl BackEndArchitecture for TrictracBackend { + fn new(_rule_variation: u16) -> Self { + let mut game = GameState::new(false); + game.init_player("Blancs"); + game.init_player("Noirs"); + + let view_state = ViewState::from_game_state(&game, HOST_PLAYER_ID, GUEST_PLAYER_ID); + + TrictracBackend { + game, + dice_roller: DiceRoller::default(), + commands: Vec::new(), + view_state, + arrived: [false; 2], + pre_game_dice: [None; 2], + tie_count: 0, + ceremony_started: false, + } + } + + fn from_bytes(_rule_variation: u16, bytes: &[u8]) -> Option { + let view_state: ViewState = serde_json::from_slice(bytes).ok()?; + // Reconstruct a fresh game; full state restore is not yet implemented. + let mut backend = Self::new(_rule_variation); + backend.view_state = view_state; + Some(backend) + } + + fn player_arrival(&mut self, mp_player: u16) { + if mp_player > 1 { + self.commands + .push(BackendCommand::KickPlayer { player: mp_player }); + return; + } + self.arrived[mp_player as usize] = true; + + // Cancel any reconnect timer for this player. + self.commands.push(BackendCommand::CancelTimer { + timer_id: mp_player, + }); + + // Start the ceremony once both players have arrived. + if self.arrived[0] + && self.arrived[1] + && self.game.stage == trictrac_store::Stage::PreGame + && !self.ceremony_started + { + self.ceremony_started = true; + self.pre_game_dice = [None; 2]; + self.tie_count = 0; + self.sync_view_state(); + self.commands.push(BackendCommand::ResetViewState); + } else { + self.broadcast_state(); + } + } + + fn player_departure(&mut self, mp_player: u16) { + if mp_player > 1 { + return; + } + self.arrived[mp_player as usize] = false; + // Give 60 seconds to reconnect before terminating the room. + self.commands.push(BackendCommand::SetTimer { + timer_id: mp_player, + duration: 60.0, + }); + } + + fn inform_rpc(&mut self, mp_player: u16, action: PlayerAction) { + // During the first-player ceremony only PreGameRoll actions are accepted. + if self.ceremony_started { + if matches!(action, PlayerAction::PreGameRoll) { + self.handle_pre_game_roll(mp_player); + } + return; + } + + if self.game.stage == trictrac_store::Stage::Ended { + return; + } + + let store_id = if mp_player == 0 { + HOST_PLAYER_ID + } else { + GUEST_PLAYER_ID + }; + + // Only the active player may act (except during Chance-like waiting stages). + if self.game.active_player_id != store_id { + return; + } + + match action { + PlayerAction::Roll => { + if self.game.turn_stage == TurnStage::RollDice { + self.do_roll(); + } + } + PlayerAction::Move(m1, m2) => { + if self.game.turn_stage != TurnStage::Move + && self.game.turn_stage != TurnStage::HoldOrGoChoice + { + return; + } + let event = GameEvent::Move { + player_id: store_id, + moves: (m1, m2), + }; + if self.game.validate(&event) { + let _ = self.game.consume(&event); + self.drive_automatic_stages(); + } + } + PlayerAction::Go => { + if self.game.turn_stage == TurnStage::HoldOrGoChoice { + let _ = self.game.consume(&GameEvent::Go { + player_id: store_id, + }); + } + } + PlayerAction::Mark => { + if matches!( + self.game.turn_stage, + TurnStage::MarkPoints | TurnStage::MarkAdvPoints + ) { + self.drive_automatic_stages(); + } + } + PlayerAction::PreGameRoll => {} // ignored outside ceremony + } + + self.broadcast_state(); + } + + fn timer_triggered(&mut self, timer_id: u16) { + match timer_id { + 0 | 1 => { + // Reconnect grace period expired for host (0) or guest (1). + self.commands.push(BackendCommand::TerminateRoom); + } + _ => {} + } + } + + fn get_view_state(&self) -> &ViewState { + &self.view_state + } + + fn drain_commands(&mut self) -> Vec> { + std::mem::take(&mut self.commands) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use super::types::{SerStage, SerTurnStage}; + use backbone_lib::traits::BackEndArchitecture; + + fn make_backend() -> TrictracBackend { + TrictracBackend::new(0) + } + + /// Helper: drain and return only Delta commands, extracting their ViewStates. + fn drain_deltas(b: &mut TrictracBackend) -> Vec { + b.drain_commands() + .into_iter() + .filter_map(|cmd| match cmd { + BackendCommand::Delta(d) => Some(d.state), + BackendCommand::ResetViewState => Some(b.view_state.clone()), + _ => None, + }) + .collect() + } + + /// Drive the ceremony to completion (both players roll until one wins). + fn complete_ceremony(b: &mut TrictracBackend) { + loop { + if b.get_view_state().stage != SerStage::PreGameRoll { + break; + } + let pgr = b.get_view_state().pre_game_roll.clone().unwrap_or_default(); + let host_needs = pgr.host_die.is_none(); + let guest_needs = pgr.guest_die.is_none(); + if !host_needs && !guest_needs { + break; // both rolled but stage not yet resolved — shouldn't happen + } + if host_needs { + b.inform_rpc(0, PlayerAction::PreGameRoll); + } + if guest_needs { + b.inform_rpc(1, PlayerAction::PreGameRoll); + } + b.drain_commands(); + } + } + + #[test] + fn both_players_arrive_starts_ceremony() { + let mut b = make_backend(); + b.player_arrival(0); // host + b.drain_commands(); + b.player_arrival(1); // guest + let cmds = b.drain_commands(); + + // ResetViewState should have been issued to start the ceremony. + let has_reset = cmds + .iter() + .any(|c| matches!(c, BackendCommand::ResetViewState)); + assert!( + has_reset, + "expected ResetViewState after both players arrive" + ); + + // Stage should now be PreGameRoll, not InGame. + assert_eq!(b.get_view_state().stage, SerStage::PreGameRoll); + } + + #[test] + fn ceremony_resolves_to_in_game() { + let mut b = make_backend(); + b.player_arrival(0); + b.player_arrival(1); + b.drain_commands(); + + complete_ceremony(&mut b); + + assert_eq!(b.get_view_state().stage, SerStage::InGame); + } + + #[test] + fn ceremony_any_order_allowed() { + let mut b = make_backend(); + b.player_arrival(0); + b.player_arrival(1); + b.drain_commands(); + + // Guest may roll before host. + b.inform_rpc(1, PlayerAction::PreGameRoll); + let states = drain_deltas(&mut b); + assert!( + !states.is_empty(), + "guest PreGameRoll should broadcast a state" + ); + let pgr = states.last().unwrap().pre_game_roll.as_ref().unwrap(); + assert!( + pgr.guest_die.is_some(), + "guest die should be set after guest rolls" + ); + assert!(pgr.host_die.is_none(), "host die should still be blank"); + } + + #[test] + fn unknown_player_kicked() { + let mut b = make_backend(); + b.player_arrival(99); + let cmds = b.drain_commands(); + assert!(cmds + .iter() + .any(|c| matches!(c, BackendCommand::KickPlayer { player: 99 }))); + } + + #[test] + fn roll_advances_to_move_or_hold() { + let mut b = make_backend(); + b.player_arrival(0); + b.player_arrival(1); + b.drain_commands(); + + // Complete ceremony before rolling. + complete_ceremony(&mut b); + + // Roll for whoever won the ceremony (either player could go first). + let first_player = b + .get_view_state() + .active_mp_player + .expect("someone should be active"); + b.inform_rpc(first_player, PlayerAction::Roll); + let states = drain_deltas(&mut b); + assert!(!states.is_empty(), "expected a state broadcast after roll"); + + let last = states.last().unwrap(); + assert!( + matches!( + last.turn_stage, + SerTurnStage::Move | SerTurnStage::HoldOrGoChoice + ), + "expected Move or HoldOrGoChoice after roll, got {:?}", + last.turn_stage + ); + assert_eq!(last.dice, b.get_view_state().dice); + assert!(last.dice.0 >= 1 && last.dice.0 <= 6); + assert!(last.dice.1 >= 1 && last.dice.1 <= 6); + } + + #[test] + fn wrong_player_roll_ignored() { + let mut b = make_backend(); + b.player_arrival(0); + b.player_arrival(1); + b.drain_commands(); + complete_ceremony(&mut b); + + // Identify who goes first and have the OTHER player try to roll. + let active = b.get_view_state().active_mp_player; + let wrong_player = if active == Some(0) { 1u16 } else { 0u16 }; + b.inform_rpc(wrong_player, PlayerAction::Roll); + let cmds = b.drain_commands(); + assert!(cmds.is_empty(), "wrong player roll should be ignored"); + } + + #[test] + fn departure_sets_reconnect_timer() { + let mut b = make_backend(); + b.player_arrival(0); + b.drain_commands(); + b.player_departure(0); + let cmds = b.drain_commands(); + assert!( + cmds.iter() + .any(|c| matches!(c, BackendCommand::SetTimer { timer_id: 0, .. })), + "expected reconnect timer after host departure" + ); + } + + #[test] + fn timer_triggers_terminate_room() { + let mut b = make_backend(); + b.timer_triggered(0); + let cmds = b.drain_commands(); + assert!(cmds + .iter() + .any(|c| matches!(c, BackendCommand::TerminateRoom))); + } +} + +// ── Public API: WASM delegates to `inner`, other targets are no-ops ─────────── + +#[cfg(target_arch = "wasm32")] +mod inner { + use web_sys::console; + + pub fn console_log(message: String) { + console::log_1(&message.into()); + } +} + +#[cfg(target_arch = "wasm32")] +pub use inner::console_log; + +#[cfg(not(target_arch = "wasm32"))] +pub fn console_log(message: String) {} diff --git a/clients/web/src/game/trictrac/bot_local.rs b/clients/web/src/game/trictrac/bot_local.rs new file mode 100644 index 0000000..5543b07 --- /dev/null +++ b/clients/web/src/game/trictrac/bot_local.rs @@ -0,0 +1,43 @@ +use rand::prelude::IndexedRandom; +use trictrac_store::{CheckerMove, Color, GameState, MoveRules, Stage, TurnStage}; + +use super::types::{PlayerAction, PreGameRollState}; + +const GUEST_PLAYER_ID: u64 = 2; + +/// Returns the next action for the bot (mp_player 1 / guest), or None if it is not the bot's turn. +/// `pgr` is the current pre-game ceremony state if the ceremony is in progress. +pub fn bot_decide(game: &GameState, pgr: Option<&PreGameRollState>) -> Option { + // During the ceremony, the bot (guest) rolls when its die is missing. + if game.stage == Stage::PreGame { + if let Some(pgr) = pgr { + if pgr.guest_die.is_none() { + return Some(PlayerAction::PreGameRoll); + } + } + return None; + } + if game.stage == Stage::Ended { + return None; + } + if game.active_player_id != GUEST_PLAYER_ID { + return None; + } + match game.turn_stage { + TurnStage::RollDice => Some(PlayerAction::Roll), + // TurnStage::HoldOrGoChoice => Some(PlayerAction::Go), + TurnStage::Move | TurnStage::HoldOrGoChoice => { + let rules = MoveRules::new(&Color::Black, &game.board, game.dice); + let sequences = rules.get_possible_moves_sequences(true, vec![]); + let mut rng = rand::rng(); + let (m1, m2) = sequences + .choose(&mut rng) + .cloned() + .unwrap_or((CheckerMove::default(), CheckerMove::default())); + // MoveRules with Color::Black mirrors the board internally, so + // returned move coordinates are in mirrored (White) space — mirror back. + Some(PlayerAction::Move(m1.mirror(), m2.mirror())) + } + _ => None, + } +} diff --git a/clients/web/src/game/trictrac/mod.rs b/clients/web/src/game/trictrac/mod.rs new file mode 100644 index 0000000..38d05bb --- /dev/null +++ b/clients/web/src/game/trictrac/mod.rs @@ -0,0 +1,3 @@ +pub mod backend; +pub mod bot_local; +pub mod types; diff --git a/clients/web/src/game/trictrac/types.rs b/clients/web/src/game/trictrac/types.rs new file mode 100644 index 0000000..3c0dfe2 --- /dev/null +++ b/clients/web/src/game/trictrac/types.rs @@ -0,0 +1,256 @@ +use serde::{Deserialize, Serialize}; +use trictrac_store::{CheckerMove, GameState, Jan, Stage, TurnStage}; + +// ── Actions sent by a player to the host backend ───────────────────────────── + +#[derive(Clone, Serialize, Deserialize)] +pub enum PlayerAction { + /// Active player requests a dice roll. + Roll, + /// Both checker moves for this turn. Use `EMPTY_MOVE` (from=0, to=0) when a die + /// has no valid move. + Move(CheckerMove, CheckerMove), + /// Choose to "go" (advance) during HoldOrGoChoice. + Go, + /// Acknowledge point marking (hold / advance points). + Mark, + /// Roll a single die during the pre-game ceremony to decide who goes first. + PreGameRoll, +} + +// ── Incremental state update broadcast to all clients ──────────────────────── + +/// Carries a full state snapshot; `apply_delta` replaces the local state. +/// Simple and correct; can be refined to true diffs later. +#[derive(Clone, Serialize, Deserialize)] +pub struct GameDelta { + pub state: ViewState, +} + +// ── Full game snapshot ──────────────────────────────────────────────────────── + +/// State of the pre-game ceremony where each player rolls one die to decide +/// who goes first. Present only when `stage == SerStage::PreGameRoll`. +#[derive(Clone, Default, PartialEq, Serialize, Deserialize)] +pub struct PreGameRollState { + /// Die value (1–6) rolled by the host; `None` = not yet rolled this round. + pub host_die: Option, + /// Die value (1–6) rolled by the guest; `None` = not yet rolled this round. + pub guest_die: Option, + /// Number of tied rounds so far (0 on the first round). + pub tie_count: u8, +} + +#[derive(Clone, PartialEq, Serialize, Deserialize)] +pub struct ViewState { + /// Board positions: index i = field i+1. Positive = white, negative = black. + pub board: [i8; 24], + pub stage: SerStage, + pub turn_stage: SerTurnStage, + /// Which multiplayer player_id (0 = host, 1 = guest) is the active player. + pub active_mp_player: Option, + /// Scores indexed by multiplayer player_id (0 = host, 1 = guest). + pub scores: [PlayerScore; 2], + /// Last rolled dice values. + pub dice: (u8, u8), + /// Jans (scoring events) triggered by the last dice roll. + pub dice_jans: Vec, + /// Last two checker moves played; default when no move has occurred yet. + pub dice_moves: (CheckerMove, CheckerMove), + /// Present while the pre-game ceremony is in progress. + #[serde(default)] + pub pre_game_roll: Option, +} + +/// One scoring event from a dice roll. +#[derive(Clone, PartialEq, Serialize, Deserialize, Debug)] +pub struct JanEntry { + pub jan: Jan, + /// True when the dice are doubles (both same value) — changes the point value. + /// Special case for HelplessMan: true when *both* dice are unplayable. + pub is_double: bool, + /// Number of distinct move pairs that produce this jan. + pub ways: usize, + /// Points per way (negative = scored against the active player). + pub points_per: i8, + /// Total = points_per × ways. + pub total: i8, + /// The move pairs that produce this jan (for move display). + pub moves: Vec<(CheckerMove, CheckerMove)>, +} + +impl ViewState { + pub fn default_with_names(host_name: &str, guest_name: &str) -> Self { + ViewState { + board: [0i8; 24], + stage: SerStage::PreGame, + turn_stage: SerTurnStage::RollDice, + active_mp_player: None, + scores: [ + PlayerScore { + name: host_name.to_string(), + points: 0, + holes: 0, + can_bredouille: false, + }, + PlayerScore { + name: guest_name.to_string(), + points: 0, + holes: 0, + can_bredouille: false, + }, + ], + dice: (0, 0), + dice_jans: Vec::new(), + dice_moves: (CheckerMove::default(), CheckerMove::default()), + pre_game_roll: None, + } + } + + pub fn apply_delta(&mut self, delta: &GameDelta) { + *self = delta.state.clone(); + } + + /// Convert a store `GameState` to a `ViewState`. + /// `host_store_id` and `guest_store_id` are the trictrac `PlayerId`s assigned + /// to the host (mp player 0) and guest (mp player 1) respectively. + pub fn from_game_state(gs: &GameState, host_store_id: u64, guest_store_id: u64) -> Self { + let board_vec = gs.board.to_vec(); + let board: [i8; 24] = board_vec.try_into().expect("board is always 24 fields"); + + let stage = match gs.stage { + Stage::PreGame => SerStage::PreGame, + Stage::InGame => SerStage::InGame, + Stage::Ended => SerStage::Ended, + }; + let turn_stage = match gs.turn_stage { + TurnStage::RollDice => SerTurnStage::RollDice, + TurnStage::RollWaiting => SerTurnStage::RollWaiting, + TurnStage::MarkPoints => SerTurnStage::MarkPoints, + TurnStage::HoldOrGoChoice => SerTurnStage::HoldOrGoChoice, + TurnStage::Move => SerTurnStage::Move, + TurnStage::MarkAdvPoints => SerTurnStage::MarkAdvPoints, + }; + + let active_mp_player = if gs.active_player_id == host_store_id { + Some(0) + } else if gs.active_player_id == guest_store_id { + Some(1) + } else { + None + }; + + let score_for = |store_id: u64| -> PlayerScore { + gs.players + .get(&store_id) + .map(|p| PlayerScore { + name: p.name.clone(), + points: p.points, + holes: p.holes, + can_bredouille: p.can_bredouille, + }) + .unwrap_or_else(|| PlayerScore { + name: String::new(), + points: 0, + holes: 0, + can_bredouille: false, + }) + }; + + // is_double for scoring: dice show the same value (both dice identical). + // Exception: HelplessMan uses a special rule (see below). + let dice_are_double = gs.dice.values.0 == gs.dice.values.1; + + // Build JanEntry list from the PossibleJans map. + let empty_move = CheckerMove::new(0, 0).unwrap_or_default(); + let mut dice_jans: Vec = gs + .dice_jans + .iter() + .map(|(jan, moves)| { + // HelplessMan: is_double = true only when *both* dice are unplayable + // (the moves list contains a single (empty, empty) sentinel). + let is_double = if *jan == Jan::HelplessMan { + moves + .first() + .map(|&(m1, m2)| m1 == empty_move && m2 == empty_move) + .unwrap_or(false) + } else { + dice_are_double + }; + let points_per = jan.get_points(is_double); + let ways = moves.len(); + let total = points_per.saturating_mul(ways as i8); + JanEntry { + jan: jan.clone(), + is_double, + ways, + points_per, + total, + moves: moves.clone(), + } + }) + .collect(); + // Sort: highest total first, most-negative last. + dice_jans.sort_by_key(|e| std::cmp::Reverse(e.total)); + + ViewState { + board, + stage, + turn_stage, + active_mp_player, + scores: [score_for(host_store_id), score_for(guest_store_id)], + dice: (gs.dice.values.0, gs.dice.values.1), + dice_jans, + dice_moves: gs.dice_moves, + pre_game_roll: None, + } + } +} + +// ── Scored event (notification) ────────────────────────────────────────── + +/// Points scored in a single scoring event, used for the notification panel. +#[derive(Clone, PartialEq)] +pub struct ScoredEvent { + /// Raw points earned (sum of jan values; before hole wrapping). + pub points_earned: u8, + /// Number of holes gained (0 = no hole). + pub holes_gained: u8, + /// Total holes after this event. + pub holes_total: u8, + /// Was bredouille active when the hole was made (doubles hole count)? + pub bredouille: bool, + /// Contributing jans from this player's perspective (totals always positive). + pub jans: Vec, +} + +// ── Score snapshot ──────────────────────────────────────────────────────────── + +#[derive(Clone, PartialEq, Serialize, Deserialize)] +pub struct PlayerScore { + pub name: String, + pub points: u8, + pub holes: u8, + pub can_bredouille: bool, +} + +// ── Serialisable mirrors of store enums ────────────────────────────────────── + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub enum SerStage { + PreGame, + /// Both players have arrived; ceremony in progress to decide who goes first. + PreGameRoll, + InGame, + Ended, +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub enum SerTurnStage { + RollDice, + RollWaiting, + MarkPoints, + HoldOrGoChoice, + Move, + MarkAdvPoints, +} diff --git a/clients/web/src/main.rs b/clients/web/src/main.rs new file mode 100644 index 0000000..bfd8adf --- /dev/null +++ b/clients/web/src/main.rs @@ -0,0 +1,14 @@ +leptos_i18n::load_locales!(); + +mod api; +mod app; +mod game; +mod nav; +mod portal; + +use app::App; +use leptos::prelude::*; + +fn main() { + mount_to_body(|| view! { }) +} diff --git a/clients/web/src/nav.rs b/clients/web/src/nav.rs new file mode 100644 index 0000000..c5b59fd --- /dev/null +++ b/clients/web/src/nav.rs @@ -0,0 +1,51 @@ +use leptos::prelude::*; +use leptos::task::spawn_local; +use leptos_router::components::A; + +use crate::api; +use crate::app::Screen; +use crate::i18n::*; + +#[component] +pub fn SiteNav() -> impl IntoView { + let i18n = use_i18n(); + let screen = use_context::>().expect("Screen context not found"); + let auth_username = + use_context::>>().expect("auth_username context not found"); + + let is_game_active = + move || !matches!(screen.get(), Screen::Login { .. }); + + let logout = move |_| { + spawn_local(async move { + let _ = api::post_logout().await; + auth_username.set(None); + }); + }; + + view! { + + } +} diff --git a/clients/web/src/portal/account.rs b/clients/web/src/portal/account.rs new file mode 100644 index 0000000..7552a7c --- /dev/null +++ b/clients/web/src/portal/account.rs @@ -0,0 +1,166 @@ +use leptos::prelude::*; +use leptos_router::hooks::use_navigate; + +use crate::api; +use crate::i18n::*; + +#[component] +pub fn AccountPage() -> impl IntoView { + let i18n = use_i18n(); + let auth_username = + use_context::>>().expect("auth_username context not found"); + let navigate = use_navigate(); + + Effect::new(move |_| { + if let Some(u) = auth_username.get() { + navigate(&format!("/profile/{u}"), Default::default()); + } + }); + + let tab = RwSignal::new("login"); + + view! { +
    +
    +

    + {t!(i18n, account_title)} +

    +
    + + +
    + {move || if tab.get() == "login" { + view! { }.into_any() + } else { + view! { }.into_any() + }} +
    +
    + } +} + +#[component] +fn LoginForm() -> impl IntoView { + let i18n = use_i18n(); + let auth_username = + use_context::>>().expect("auth_username context not found"); + let navigate = use_navigate(); + + let username = RwSignal::new(String::new()); + let password = RwSignal::new(String::new()); + let error = RwSignal::new(String::new()); + let pending = RwSignal::new(false); + + let submit = move |ev: leptos::ev::SubmitEvent| { + ev.prevent_default(); + if pending.get() { return; } + pending.set(true); + error.set(String::new()); + let u = username.get(); + let p = password.get(); + let navigate = navigate.clone(); + wasm_bindgen_futures::spawn_local(async move { + match api::post_login(&u, &p).await { + Ok(me) => { + let dest = format!("/profile/{}", me.username); + auth_username.set(Some(me.username)); + navigate(&dest, Default::default()); + } + Err(e) => { + error.set(e); + pending.set(false); + } + } + }); + }; + + view! { +
    + + + + + + {move || if !error.get().is_empty() { + view! {

    { error.get() }

    }.into_any() + } else { + view! { }.into_any() + }} + + } +} + +#[component] +fn RegisterForm() -> impl IntoView { + let i18n = use_i18n(); + let auth_username = + use_context::>>().expect("auth_username context not found"); + let navigate = use_navigate(); + + let username = RwSignal::new(String::new()); + let email = RwSignal::new(String::new()); + let password = RwSignal::new(String::new()); + let error = RwSignal::new(String::new()); + let pending = RwSignal::new(false); + + let submit = move |ev: leptos::ev::SubmitEvent| { + ev.prevent_default(); + if pending.get() { return; } + pending.set(true); + error.set(String::new()); + let u = username.get(); + let e = email.get(); + let p = password.get(); + let navigate = navigate.clone(); + wasm_bindgen_futures::spawn_local(async move { + match api::post_register(&u, &e, &p).await { + Ok(me) => { + let dest = format!("/profile/{}", me.username); + auth_username.set(Some(me.username)); + navigate(&dest, Default::default()); + } + Err(err) => { + error.set(err); + pending.set(false); + } + } + }); + }; + + view! { +
    + + + + + + + + {move || if !error.get().is_empty() { + view! {

    { error.get() }

    }.into_any() + } else { + view! { }.into_any() + }} + + } +} diff --git a/clients/web/src/portal/game_detail.rs b/clients/web/src/portal/game_detail.rs new file mode 100644 index 0000000..adc3643 --- /dev/null +++ b/clients/web/src/portal/game_detail.rs @@ -0,0 +1,109 @@ +use leptos::prelude::*; +use leptos_router::{components::A, hooks::use_params_map}; + +use crate::api::{self, GameDetail, Participant}; +use crate::i18n::*; + +#[component] +pub fn GameDetailPage() -> impl IntoView { + let i18n = use_i18n(); + let params = use_params_map(); + let id_str = move || params.read().get("id").unwrap_or_default(); + + let detail = LocalResource::new(move || { + let s = id_str(); + async move { + let id: i64 = s.parse().map_err(|_| "invalid game id".to_string())?; + api::get_game_detail(id).await + } + }); + + view! { +
    + {move || match detail.get().map(|sw| sw.take()) { + None => view! {

    {t!(i18n, loading)}

    }.into_any(), + Some(Err(e)) => view! {

    { e }

    }.into_any(), + Some(Ok(g)) => view! { }.into_any(), + }} +
    + } +} + +#[component] +fn GameDetailView(game: GameDetail) -> impl IntoView { + let i18n = use_i18n(); + let started = api::format_ts(game.started_at); + let ended = game.ended_at.map(api::format_ts) + .unwrap_or_else(|| t_string!(i18n, game_ongoing).to_string()); + + view! { +
    +

    {t!(i18n, room_detail_title)} " " { game.room_code.clone() }

    +

    + {t!(i18n, started_label)} ": " { started.clone() } + " · " + {t!(i18n, ended_label)} ": " { ended } +

    + +

    {t!(i18n, players_header)}

    + + + + + + + + + + {game.participants.iter().map(|p| { + view! { } + }).collect_view()} + +
    {t!(i18n, col_player)}{t!(i18n, label_username)}{t!(i18n, col_outcome)}
    + + {game.result.as_ref().map(|r| view! { +
    +

    {t!(i18n, score_header)}

    +

    + { r.clone() } +

    +
    + })} +
    + } +} + +#[component] +fn ParticipantRow(participant: Participant) -> impl IntoView { + let i18n = use_i18n(); + let outcome_class = match participant.outcome.as_deref() { + Some("win") => "outcome-win", + Some("loss") => "outcome-loss", + Some("draw") => "outcome-draw", + _ => "", + }; + let outcome_text = move || match participant.outcome.as_deref() { + Some("win") => t_string!(i18n, outcome_win), + Some("loss") => t_string!(i18n, outcome_loss), + Some("draw") => t_string!(i18n, outcome_draw), + _ => "—", + }; + let name = participant.username.clone(); + + view! { + + {t!(i18n, col_player)} " " { participant.player_id } + + {match name { + Some(u) => view! { + { u } + }.into_any(), + None => view! { + {t!(i18n, anonymous_player)} + }.into_any(), + }} + + { outcome_text } + + } +} diff --git a/clients/web/src/portal/lobby.rs b/clients/web/src/portal/lobby.rs new file mode 100644 index 0000000..ef66281 --- /dev/null +++ b/clients/web/src/portal/lobby.rs @@ -0,0 +1,88 @@ +use futures::channel::mpsc::UnboundedSender; +use leptos::prelude::*; + +use crate::app::{NetCommand, Screen}; +use crate::i18n::*; + +#[component] +pub fn LobbyPage() -> impl IntoView { + let i18n = use_i18n(); + let (room_name, set_room_name) = signal(String::new()); + + let screen = use_context::>().expect("Screen context not found"); + let cmd_tx = use_context::>() + .expect("UnboundedSender not found in context"); + + let cmd_tx_create = cmd_tx.clone(); + let cmd_tx_join = cmd_tx.clone(); + let cmd_tx_bot = cmd_tx; + + // Extract connection error from screen state. + let error = move || match screen.get() { + Screen::Login { error } => error, + _ => None, + }; + + view! { +
    + +
    + } +} diff --git a/clients/web/src/portal/mod.rs b/clients/web/src/portal/mod.rs new file mode 100644 index 0000000..722c9e1 --- /dev/null +++ b/clients/web/src/portal/mod.rs @@ -0,0 +1,4 @@ +pub mod account; +pub mod game_detail; +pub mod lobby; +pub mod profile; diff --git a/clients/web/src/portal/profile.rs b/clients/web/src/portal/profile.rs new file mode 100644 index 0000000..9a94b3f --- /dev/null +++ b/clients/web/src/portal/profile.rs @@ -0,0 +1,153 @@ +use leptos::prelude::*; +use leptos_router::{components::A, hooks::use_params_map}; + +use crate::api::{self, GameSummary, UserProfile}; +use crate::i18n::*; + +#[component] +pub fn ProfilePage() -> impl IntoView { + let params = use_params_map(); + let username = move || params.read().get("username").unwrap_or_default(); + + let profile = LocalResource::new(move || { + let u = username(); + async move { api::get_user_profile(&u).await } + }); + + let i18n = use_i18n(); + + view! { +
    + {move || match profile.get().map(|sw| sw.take()) { + None => view! {

    {t!(i18n, loading)}

    }.into_any(), + Some(Err(e)) => view! {

    { e }

    }.into_any(), + Some(Ok(p)) => view! { }.into_any(), + }} +
    + } +} + +#[component] +fn ProfileContent(profile: UserProfile, username: String) -> impl IntoView { + let i18n = use_i18n(); + let page = RwSignal::new(0i64); + let games = LocalResource::new(move || { + let u = username.clone(); + let p = page.get(); + async move { api::get_user_games(&u, p).await } + }); + + let joined = api::format_ts(profile.created_at); + + view! { +
    +

    { profile.username.clone() }

    +

    {t!(i18n, member_since)} " " { joined }

    + +
    +
    +
    { profile.total_games }
    +
    {t!(i18n, stat_games)}
    +
    +
    +
    { profile.wins }
    +
    {t!(i18n, stat_wins)}
    +
    +
    +
    { profile.losses }
    +
    {t!(i18n, stat_losses)}
    +
    +
    +
    { profile.draws }
    +
    {t!(i18n, stat_draws)}
    +
    +
    +
    + +
    +

    {t!(i18n, game_history_title)}

    + {move || match games.get().map(|sw| sw.take()) { + None => view! {

    {t!(i18n, loading)}

    }.into_any(), + Some(Err(e)) => view! {

    { e }

    }.into_any(), + Some(Ok(r)) => { + if r.games.is_empty() { + view! {

    {t!(i18n, no_games)}

    }.into_any() + } else { + view! { }.into_any() + } + } + }} +
    + } +} + +#[component] +fn GamesTable(games: Vec, page: RwSignal) -> impl IntoView { + let i18n = use_i18n(); + let rows = games.clone(); + let has_next = games.len() == 20; + + view! { + + + + + + + + + + + + {rows.into_iter().map(|g| { + let started = api::format_ts(g.started_at); + let ended = g.ended_at.map(api::format_ts).unwrap_or_else(|| "—".into()); + let outcome_class = match g.outcome.as_deref() { + Some("win") => "outcome-win", + Some("loss") => "outcome-loss", + Some("draw") => "outcome-draw", + _ => "", + }; + let outcome_text = move || match g.outcome.as_deref() { + Some("win") => t_string!(i18n, outcome_win), + Some("loss") => t_string!(i18n, outcome_loss), + Some("draw") => t_string!(i18n, outcome_draw), + _ => "—", + }; + view! { + + + + + + + + } + }).collect_view()} + +
    {t!(i18n, col_room)}{t!(i18n, col_started)}{t!(i18n, col_ended)}{t!(i18n, col_outcome)}{t!(i18n, col_detail)}
    { g.room_code.clone() }{ started }{ ended }{ outcome_text } + {t!(i18n, view_link)} +
    +
    + {move || if page.get() > 0 { + view! { + + }.into_any() + } else { + view! { }.into_any() + }} + {t!(i18n, page_label)} " " { move || page.get() + 1 } + {if has_next { + view! { + + }.into_any() + } else { + view! { }.into_any() + }} +
    + } +} diff --git a/justfile b/justfile index 060f5ce..507fe00 100644 --- a/justfile +++ b/justfile @@ -9,6 +9,23 @@ shell: runcli: RUST_LOG=info cargo run --bin=client_cli +[working-directory: 'clients/web'] +dev: + trunk serve + +[working-directory: 'clients/web'] +build: + trunk build --release + cp dist/index.html ../../deploy/index.html + cp dist/*.wasm ../../deploy/ + cp dist/*.js ../../deploy/ + cp dist/*.css ../../deploy/ + +[working-directory: 'deploy'] +run-relay: + ./relay-server + +# Legacy targets kept for reference during transition [working-directory: 'clients/web-game'] dev-game: trunk serve @@ -21,10 +38,6 @@ build-game: cp dist/*.js ../../deploy/ cp dist/*.css ../../deploy/ -[working-directory: 'deploy'] -run-relay: - ./relay-server - [working-directory: 'clients/web-user-portal'] dev-portal: trunk serve diff --git a/server/relay-server/src/main.rs b/server/relay-server/src/main.rs index 2c11b44..70fde5e 100644 --- a/server/relay-server/src/main.rs +++ b/server/relay-server/src/main.rs @@ -81,8 +81,7 @@ async fn main() { let cors = CorsLayer::new() .allow_origin(AllowOrigin::list([ - "http://localhost:9091".parse().unwrap(), // game dev server - "http://localhost:9092".parse().unwrap(), // portal dev server + "http://localhost:9091".parse().unwrap(), // unified web dev server ])) .allow_methods([Method::GET, Method::POST, Method::OPTIONS]) .allow_headers([ @@ -96,10 +95,6 @@ async fn main() { .route("/enlist", get(enlist_handler)) .route("/ws", get(websocket_handler)) .merge(http::router()) - .nest_service( - "/portal", - ServeDir::new("portal").not_found_service(ServeFile::new("portal/index.html")), - ) .with_state(app_state) .layer(auth_layer) .layer(cors) From 15a2963f7e7273f5997874c57c037d2d707d1a65 Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sat, 25 Apr 2026 19:08:03 +0200 Subject: [PATCH 40/78] fix: show login failed error message --- clients/web/locales/en.json | 1 + clients/web/locales/fr.json | 1 + clients/web/src/portal/account.rs | 7 ++++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/clients/web/locales/en.json b/clients/web/locales/en.json index 3b32f20..5d5005d 100644 --- a/clients/web/locales/en.json +++ b/clients/web/locales/en.json @@ -58,6 +58,7 @@ "hint_move": "Click a highlighted field to move a checker", "hint_hold_or_go": "Hold to keep points — Go to reset the setting", "hint_continue": "Click Continue when ready", + "login_failed": "Invalid username or password.", "sign_in": "Sign in", "sign_out": "Sign out", "create_account": "Create account", diff --git a/clients/web/locales/fr.json b/clients/web/locales/fr.json index 9af6f10..8cef7df 100644 --- a/clients/web/locales/fr.json +++ b/clients/web/locales/fr.json @@ -58,6 +58,7 @@ "hint_move": "Cliquez un champ surligné pour déplacer", "hint_hold_or_go": "Tenir pour garder les points — S'en aller pour repartir", "hint_continue": "Cliquez Continuer quand vous êtes prêt", + "login_failed": "Identifiant ou mot de passe incorrect.", "sign_in": "Se connecter", "sign_out": "Se déconnecter", "create_account": "Créer un compte", diff --git a/clients/web/src/portal/account.rs b/clients/web/src/portal/account.rs index 7552a7c..2250bc3 100644 --- a/clients/web/src/portal/account.rs +++ b/clients/web/src/portal/account.rs @@ -73,7 +73,12 @@ fn LoginForm() -> impl IntoView { navigate(&dest, Default::default()); } Err(e) => { - error.set(e); + let msg = if e.is_empty() { + t_string!(i18n, login_failed).to_string() + } else { + e + }; + error.set(msg); pending.set(false); } } From c46d26ae02bd397ad36165e5f9806063626a0cfe Mon Sep 17 00:00:00 2001 From: Henri Bourcereau Date: Sat, 25 Apr 2026 21:51:16 +0200 Subject: [PATCH 41/78] fix: show login name in game --- clients/web/assets/style.css | 2 +- clients/web/locales/en.json | 1 + clients/web/locales/fr.json | 1 + clients/web/src/app.rs | 93 +++++++++++++++++++-------------- clients/web/src/game/session.rs | 17 +++++- clients/web/src/main.rs | 7 ++- clients/web/src/nav.rs | 7 +-- 7 files changed, 81 insertions(+), 47 deletions(-) diff --git a/clients/web/assets/style.css b/clients/web/assets/style.css index b2d89a4..8c7630e 100644 --- a/clients/web/assets/style.css +++ b/clients/web/assets/style.css @@ -290,7 +290,7 @@ a:hover { text-decoration: underline; } /* ── Game overlay (full-screen, covers portal during play) ───────── */ .game-overlay { position: fixed; - inset: 0; + inset: 54px 0 0 0; background: #8a7050; background-image: radial-gradient(ellipse at 20% 10%, rgba(80,48,16,0.35) 0%, transparent 60%), diff --git a/clients/web/locales/en.json b/clients/web/locales/en.json index 5d5005d..5cbb36e 100644 --- a/clients/web/locales/en.json +++ b/clients/web/locales/en.json @@ -58,6 +58,7 @@ "hint_move": "Click a highlighted field to move a checker", "hint_hold_or_go": "Hold to keep points — Go to reset the setting", "hint_continue": "Click Continue when ready", + "anonymous_name": "Anonymous", "login_failed": "Invalid username or password.", "sign_in": "Sign in", "sign_out": "Sign out", diff --git a/clients/web/locales/fr.json b/clients/web/locales/fr.json index 8cef7df..da12cc8 100644 --- a/clients/web/locales/fr.json +++ b/clients/web/locales/fr.json @@ -58,6 +58,7 @@ "hint_move": "Cliquez un champ surligné pour déplacer", "hint_hold_or_go": "Tenir pour garder les points — S'en aller pour repartir", "hint_continue": "Cliquez Continuer quand vous êtes prêt", + "anonymous_name": "Anonyme", "login_failed": "Identifiant ou mot de passe incorrect.", "sign_in": "Se connecter", "sign_out": "Se déconnecter", diff --git a/clients/web/src/app.rs b/clients/web/src/app.rs index 8d604b6..b9ce4aa 100644 --- a/clients/web/src/app.rs +++ b/clients/web/src/app.rs @@ -4,6 +4,7 @@ use gloo_storage::{LocalStorage, Storage}; use leptos::prelude::*; use leptos::task::spawn_local; use leptos_router::components::{Route, Router, Routes}; +use leptos_router::hooks::use_location; use leptos_router::path; use serde::{Deserialize, Serialize}; @@ -11,15 +12,15 @@ use backbone_lib::session::{ConnectError, GameSession, RoomConfig, RoomRole, Ses use backbone_lib::traits::ViewStateUpdate; use crate::api; +use crate::i18n::*; use crate::game::components::{ConnectingScreen, GameScreen}; use crate::game::session::{ - compute_last_moves, push_or_show, run_local_bot_game, + compute_last_moves, patch_player_name, push_or_show, run_local_bot_game, }; use crate::game::trictrac::backend::TrictracBackend; use crate::game::trictrac::types::{ GameDelta, PlayerAction, ScoredEvent, SerStage, ViewState, }; -use crate::i18n::I18nContextProvider; use crate::nav::SiteNav; use crate::portal::{account::AccountPage, game_detail::GameDetailPage, lobby::LobbyPage, profile::ProfilePage}; use trictrac_store::CheckerMove; @@ -128,6 +129,7 @@ async fn submit_game_result(room_code: String, game_state: ViewState) { #[component] pub fn App() -> impl IntoView { + let i18n = use_i18n(); let stored = load_session(); let initial_screen = if stored.is_some() { Screen::Connecting @@ -225,8 +227,10 @@ pub fn App() -> impl IntoView { }; if remote_config.is_none() { + let player_name = auth_username.get_untracked() + .unwrap_or_else(|| t_string!(i18n, anonymous_name).to_string()); loop { - let restart = run_local_bot_game(screen, &mut cmd_rx, pending).await; + let restart = run_local_bot_game(screen, &mut cmd_rx, pending, player_name.clone()).await; if !restart { break; } @@ -266,7 +270,9 @@ pub fn App() -> impl IntoView { let is_host = session.is_host; let player_id = session.player_id; let reconnect_token = session.reconnect_token; - let mut vs = ViewState::default_with_names("Blancs", "Noirs"); + let my_name = auth_username.get_untracked() + .unwrap_or_else(|| t_string!(i18n, anonymous_name).to_string()); + let mut vs = ViewState::default_with_names("", ""); let mut result_submitted = false; loop { @@ -290,6 +296,7 @@ pub fn App() -> impl IntoView { ViewStateUpdate::Full(state) => vs = state, ViewStateUpdate::Incremental(delta) => vs.apply_delta(&delta), } + patch_player_name(&mut vs, player_id, &my_name); if is_host && !result_submitted && vs.stage == SerStage::Ended { result_submitted = true; @@ -343,42 +350,52 @@ pub fn App() -> impl IntoView { }); view! { - - - // Nav: hidden while game overlay is active - + + - // Portal pages — always mounted for router stability -
    - "Page not found."

    }> - - - - -
    -
    +
    + "Page not found."

    }> + + + + +
    +
    - // Game overlay: fixed, covers portal during play - {move || { - let q = pending.get(); - let front = q.front().cloned(); - if let Some(state) = front { - return view! { -
    - }.into_any(); - } - match screen.get() { - Screen::Playing(state) => view! { -
    - }.into_any(), - Screen::Connecting => view! { -
    - }.into_any(), - _ => view! { }.into_any(), - } - }} -
    -
    + + + } +} + +/// Renders the full-screen game overlay, but only when the current route is "/". +/// This lets the user navigate to profile/account pages while a game is running. +#[component] +fn GameOverlay( + pending: RwSignal>, + screen: RwSignal, +) -> impl IntoView { + let location = use_location(); + + move || { + if location.pathname.get() != "/" { + return view! { }.into_any(); + } + let q = pending.get(); + let front = q.front().cloned(); + if let Some(state) = front { + return view! { +
    + }.into_any(); + } + match screen.get() { + Screen::Playing(state) => view! { +
    + }.into_any(), + Screen::Connecting => view! { +
    + }.into_any(), + _ => view! { }.into_any(), + } } } diff --git a/clients/web/src/game/session.rs b/clients/web/src/game/session.rs index e648d01..df603ec 100644 --- a/clients/web/src/game/session.rs +++ b/clients/web/src/game/session.rs @@ -18,12 +18,13 @@ pub async fn run_local_bot_game( screen: RwSignal, cmd_rx: &mut mpsc::UnboundedReceiver, pending: RwSignal>, + player_name: String, ) -> bool { let mut backend = TrictracBackend::new(0); backend.player_arrival(0); backend.player_arrival(1); - let mut vs = ViewState::default_with_names("You", "Bot"); + let mut vs = ViewState::default_with_names(&player_name, "Bot"); for cmd in backend.drain_commands() { match cmd { BackendCommand::ResetViewState => { @@ -35,6 +36,7 @@ pub async fn run_local_bot_game( _ => {} } } + patch_bot_names(&mut vs, &player_name); screen.set(Screen::Playing(GameUiState { view_state: vs.clone(), player_id: 0, @@ -58,6 +60,7 @@ pub async fn run_local_bot_game( vs.apply_delta(&delta); } } + patch_bot_names(&mut vs, &player_name); let scored = compute_scored_event(&prev_vs, &vs, 0); let opp_scored = compute_scored_event(&prev_vs, &vs, 1); screen.set(Screen::Playing(GameUiState { @@ -86,6 +89,7 @@ pub async fn run_local_bot_game( if let BackendCommand::Delta(delta) = cmd { let delta_prev_vs = vs.clone(); vs.apply_delta(&delta); + patch_bot_names(&mut vs, &player_name); push_or_show( &delta_prev_vs, GameUiState { @@ -110,6 +114,17 @@ pub async fn run_local_bot_game( } } +/// Patches the player names in a ViewState after a backend delta (bot game: slot 0 = human, 1 = Bot). +pub fn patch_bot_names(vs: &mut ViewState, player_name: &str) { + vs.scores[0].name = player_name.to_string(); + vs.scores[1].name = "Bot".to_string(); +} + +/// Patches the local player's name in a ViewState after a backend delta (multiplayer). +pub fn patch_player_name(vs: &mut ViewState, player_id: u16, name: &str) { + vs.scores[player_id as usize].name = name.to_string(); +} + /// Returns the checker moves to animate when the board changed between two ViewStates. pub fn compute_last_moves( prev: &ViewState, diff --git a/clients/web/src/main.rs b/clients/web/src/main.rs index bfd8adf..5d5fbb4 100644 --- a/clients/web/src/main.rs +++ b/clients/web/src/main.rs @@ -7,8 +7,13 @@ mod nav; mod portal; use app::App; +use i18n::I18nContextProvider; use leptos::prelude::*; fn main() { - mount_to_body(|| view! { }) + mount_to_body(|| view! { + + + + }) } diff --git a/clients/web/src/nav.rs b/clients/web/src/nav.rs index c5b59fd..10ecc36 100644 --- a/clients/web/src/nav.rs +++ b/clients/web/src/nav.rs @@ -3,19 +3,14 @@ use leptos::task::spawn_local; use leptos_router::components::A; use crate::api; -use crate::app::Screen; use crate::i18n::*; #[component] pub fn SiteNav() -> impl IntoView { let i18n = use_i18n(); - let screen = use_context::>().expect("Screen context not found"); let auth_username = use_context::>>().expect("auth_username context not found"); - let is_game_active = - move || !matches!(screen.get(), Screen::Login { .. }); - let logout = move |_| { spawn_local(async move { let _ = api::post_logout().await; @@ -24,7 +19,7 @@ pub fn SiteNav() -> impl IntoView { }; view! { -