pax_global_header00006660000000000000000000000064151100705200014501gustar00rootroot0000000000000052 comment=8f1bec691b2d198c60cccabca7a94add2df4ed1a hyprwm-hyprgraphics-8f1bec6/000077500000000000000000000000001511007052000162305ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/.clang-format000066400000000000000000000034161511007052000206070ustar00rootroot00000000000000--- Language: Cpp BasedOnStyle: LLVM AccessModifierOffset: -2 AlignAfterOpenBracket: Align AlignConsecutiveMacros: true AlignConsecutiveAssignments: true AlignEscapedNewlines: Right AlignOperands: false AlignTrailingComments: true AllowAllArgumentsOnNextLine: true AllowAllConstructorInitializersOnNextLine: true AllowAllParametersOfDeclarationOnNextLine: true AllowShortBlocksOnASingleLine: true AllowShortCaseLabelsOnASingleLine: true AllowShortFunctionsOnASingleLine: Empty AllowShortIfStatementsOnASingleLine: Never AllowShortLambdasOnASingleLine: All AllowShortLoopsOnASingleLine: false AlwaysBreakAfterDefinitionReturnType: None AlwaysBreakAfterReturnType: None AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: Yes BreakBeforeBraces: Attach BreakBeforeTernaryOperators: false BreakConstructorInitializers: AfterColon ColumnLimit: 180 CompactNamespaces: false ConstructorInitializerAllOnOneLineOrOnePerLine: false ExperimentalAutoDetectBinPacking: false FixNamespaceComments: false IncludeBlocks: Preserve IndentCaseLabels: true IndentWidth: 4 PointerAlignment: Left ReflowComments: false SortIncludes: false SortUsingDeclarations: false SpaceAfterCStyleCast: false SpaceAfterLogicalNot: false SpaceAfterTemplateKeyword: true SpaceBeforeCtorInitializerColon: true SpaceBeforeInheritanceColon: true SpaceBeforeParens: ControlStatements SpaceBeforeRangeBasedForLoopColon: true SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 1 SpacesInAngles: false SpacesInCStyleCastParentheses: false SpacesInContainerLiterals: false SpacesInParentheses: false SpacesInSquareBrackets: false Standard: Auto TabWidth: 4 UseTab: Never AllowShortEnumsOnASingleLine: false BraceWrapping: AfterEnum: false AlignConsecutiveDeclarations: AcrossEmptyLines NamespaceIndentation: All hyprwm-hyprgraphics-8f1bec6/.clang-tidy000066400000000000000000000072721511007052000202740ustar00rootroot00000000000000WarningsAsErrors: '*' HeaderFilterRegex: '.*\.hpp' FormatStyle: 'file' Checks: > -*, bugprone-*, -bugprone-easily-swappable-parameters, -bugprone-forward-declaration-namespace, -bugprone-forward-declaration-namespace, -bugprone-macro-parentheses, -bugprone-narrowing-conversions, -bugprone-branch-clone, -bugprone-assignment-in-if-condition, concurrency-*, -concurrency-mt-unsafe, cppcoreguidelines-*, -cppcoreguidelines-owning-memory, -cppcoreguidelines-avoid-magic-numbers, -cppcoreguidelines-pro-bounds-constant-array-index, -cppcoreguidelines-avoid-const-or-ref-data-members, -cppcoreguidelines-non-private-member-variables-in-classes, -cppcoreguidelines-avoid-goto, -cppcoreguidelines-pro-bounds-array-to-pointer-decay, -cppcoreguidelines-avoid-do-while, -cppcoreguidelines-avoid-non-const-global-variables, -cppcoreguidelines-special-member-functions, -cppcoreguidelines-explicit-virtual-functions, -cppcoreguidelines-avoid-c-arrays, -cppcoreguidelines-pro-bounds-pointer-arithmetic, -cppcoreguidelines-narrowing-conversions, -cppcoreguidelines-pro-type-union-access, -cppcoreguidelines-pro-type-member-init, -cppcoreguidelines-macro-usage, -cppcoreguidelines-macro-to-enum, -cppcoreguidelines-init-variables, -cppcoreguidelines-pro-type-cstyle-cast, -cppcoreguidelines-pro-type-vararg, -cppcoreguidelines-pro-type-reinterpret-cast, google-global-names-in-headers, -google-readability-casting, google-runtime-operator, misc-*, -misc-unused-parameters, -misc-no-recursion, -misc-non-private-member-variables-in-classes, -misc-include-cleaner, -misc-use-anonymous-namespace, -misc-const-correctness, modernize-*, -modernize-return-braced-init-list, -modernize-use-trailing-return-type, -modernize-use-using, -modernize-use-override, -modernize-avoid-c-arrays, -modernize-macro-to-enum, -modernize-loop-convert, -modernize-use-nodiscard, -modernize-pass-by-value, -modernize-use-auto, performance-*, -performance-avoid-endl, -performance-unnecessary-value-param, portability-std-allocator-const, readability-*, -readability-function-cognitive-complexity, -readability-function-size, -readability-identifier-length, -readability-magic-numbers, -readability-uppercase-literal-suffix, -readability-braces-around-statements, -readability-redundant-access-specifiers, -readability-else-after-return, -readability-container-data-pointer, -readability-implicit-bool-conversion, -readability-avoid-nested-conditional-operator, -readability-redundant-member-init, -readability-redundant-string-init, -readability-avoid-const-params-in-decls, -readability-named-parameter, -readability-convert-member-functions-to-static, -readability-qualified-auto, -readability-make-member-function-const, -readability-isolate-declaration, -readability-inconsistent-declaration-parameter-name, -clang-diagnostic-error, CheckOptions: performance-for-range-copy.WarnOnAllAutoCopies: true performance-inefficient-string-concatenation.StrictMode: true readability-braces-around-statements.ShortStatementLines: 0 readability-identifier-naming.ClassCase: CamelCase readability-identifier-naming.ClassIgnoredRegexp: I.* readability-identifier-naming.ClassPrefix: C # We can't use regex here?!?!?!? readability-identifier-naming.EnumCase: CamelCase readability-identifier-naming.EnumPrefix: e readability-identifier-naming.EnumConstantCase: UPPER_CASE readability-identifier-naming.FunctionCase: camelBack readability-identifier-naming.NamespaceCase: CamelCase readability-identifier-naming.NamespacePrefix: N readability-identifier-naming.StructPrefix: S readability-identifier-naming.StructCase: CamelCase hyprwm-hyprgraphics-8f1bec6/.github/000077500000000000000000000000001511007052000175705ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/.github/workflows/000077500000000000000000000000001511007052000216255ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/.github/workflows/arch.yml000066400000000000000000000044401511007052000232670ustar00rootroot00000000000000name: Build & Test (Arch) on: [push, pull_request, workflow_dispatch] jobs: gcc: name: "Arch: Build and Test (gcc)" runs-on: ubuntu-latest container: image: archlinux steps: - name: Checkout repository actions uses: actions/checkout@v4 with: sparse-checkout: .github/actions - name: Get required pkgs run: | sed -i 's/SigLevel = Required DatabaseOptional/SigLevel = Optional TrustAll/' /etc/pacman.conf pacman --noconfirm --noprogressbar -Syyu pacman --noconfirm --noprogressbar -Sy gcc base-devel cmake clang libc++ pango pixman cairo hyprutils libjpeg-turbo libjxl libwebp libpng ttf-dejavu librsvg - name: Build hyprgraphics with gcc run: | CC="/usr/bin/gcc" CXX="/usr/bin/g++" cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build CC="/usr/bin/gcc" CXX="/usr/bin/g++" cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` cmake --install ./build - name: Run tests run: | cd ./build && ctest --output-on-failure clang: name: "Arch: Build and Test (clang)" runs-on: ubuntu-latest container: image: archlinux steps: - name: Checkout repository actions uses: actions/checkout@v4 with: sparse-checkout: .github/actions - name: Get required pkgs run: | sed -i 's/SigLevel = Required DatabaseOptional/SigLevel = Optional TrustAll/' /etc/pacman.conf pacman --noconfirm --noprogressbar -Syyu pacman --noconfirm --noprogressbar -Sy gcc base-devel cmake clang libc++ pango pixman cairo hyprutils libjpeg-turbo libjxl libwebp libpng ttf-dejavu librsvg - name: Build hyprgraphics with clang run: | CC="/usr/bin/clang" CXX="/usr/bin/clang++" cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build CC="/usr/bin/clang" CXX="/usr/bin/clang++" cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` cmake --install ./build - name: Run tests run: | cd ./build && ctest --output-on-failure hyprwm-hyprgraphics-8f1bec6/.github/workflows/nix.yml000066400000000000000000000033051511007052000231470ustar00rootroot00000000000000name: Build & Test on: [push, pull_request, workflow_dispatch] jobs: nix: strategy: matrix: package: - hyprgraphics - hyprgraphics-with-tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install Nix uses: nixbuild/nix-quick-install-action@v31 with: nix_conf: | keep-env-derivations = true keep-outputs = true - name: Restore and save Nix store uses: nix-community/cache-nix-action@v6 with: # restore and save a cache using this key primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} # if there's no cache hit, restore a cache by this prefix restore-prefixes-first-match: nix-${{ runner.os }}- # collect garbage until the Nix store size (in bytes) is at most this number # before trying to save a new cache # 1G = 1073741824 gc-max-store-size-linux: 1G # do purge caches purge: true # purge all versions of the cache purge-prefixes: nix-${{ runner.os }}- # created more than this number of seconds ago purge-created: 0 # or, last accessed more than this number of seconds ago # relative to the start of the `Post Restore and save Nix store` phase purge-last-accessed: 0 # except any version with the key that is the same as the `primary-key` purge-primary-key: never # not needed (yet) # - uses: cachix/cachix-action@v12 # with: # name: hyprland # authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - name: Build & Test run: nix build .#${{ matrix.package }} --print-build-logs hyprwm-hyprgraphics-8f1bec6/.gitignore000066400000000000000000000007101511007052000202160ustar00rootroot00000000000000# Prerequisites *.d # Compiled Object files *.slo *.lo *.o *.obj # Precompiled Headers *.gch *.pch # Compiled Dynamic libraries *.so *.dylib *.dll # Fortran module files *.mod *.smod # Compiled Static libraries *.lai *.la *.a *.lib # Executables *.exe *.out *.app build/ .vscode/ .cache/ .cmake/ CMakeCache.txt CMakeFiles/ CTestTestfile.cmake DartConfiguration.tcl Makefile cmake_install.cmake compile_commands.json hyprutils.pc tests/test_output/hyprwm-hyprgraphics-8f1bec6/CMakeLists.txt000066400000000000000000000064331511007052000207760ustar00rootroot00000000000000cmake_minimum_required(VERSION 3.19) file(READ "${CMAKE_SOURCE_DIR}/VERSION" VER_RAW) string(STRIP ${VER_RAW} HYPRGRAPHICS_VERSION) add_compile_definitions(HYPRGRAPHICS_VERSION="${HYPRGRAPHICS_VERSION}") project( hyprgraphics VERSION ${HYPRGRAPHICS_VERSION} DESCRIPTION "Small C++ library for graphics / resource utilities used across the Hypr* ecosystem" ) include(CTest) include(GNUInstallDirs) set(PREFIX ${CMAKE_INSTALL_PREFIX}) set(INCLUDE ${CMAKE_INSTALL_FULL_INCLUDEDIR}) set(LIBDIR ${CMAKE_INSTALL_FULL_LIBDIR}) configure_file(hyprgraphics.pc.in hyprgraphics.pc @ONLY) set(CMAKE_CXX_STANDARD 26) set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE) # -Wno-missing-braces for clang add_compile_options( -Wall -Wextra -Wpedantic -Wno-unused-parameter -Wno-unused-value -Wno-missing-field-initializers -Wno-missing-braces) if(CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES DEBUG) message(STATUS "Configuring hyprgraphics in Debug") add_compile_definitions(HYPRGRAPHICS_DEBUG) else() add_compile_options(-O3) message(STATUS "Configuring hyprgraphics in Release") endif() if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") add_compile_definitions(__cpp_concepts=202002L) endif() file(GLOB_RECURSE SRCFILES CONFIGURE_DEPENDS "src/*.cpp" "include/*.hpp") file(GLOB_RECURSE PUBLIC_HEADERS CONFIGURE_DEPENDS "include/*.hpp") find_package(PkgConfig REQUIRED) pkg_check_modules( deps REQUIRED IMPORTED_TARGET pixman-1 cairo pangocairo hyprutils libjpeg libwebp libmagic libpng librsvg-2.0) pkg_check_modules( JXL IMPORTED_TARGET libjxl libjxl_cms libjxl_threads ) if(NOT JXL_FOUND) file(GLOB_RECURSE JPEGXLFILES CONFIGURE_DEPENDS "src/*JpegXL.cpp") list(REMOVE_ITEM SRCFILES ${JPEGXLFILES}) else() add_compile_definitions(JXL_FOUND) endif() pkg_check_modules( HEIF IMPORTED_TARGET libheif ) if(NOT HEIF_FOUND) file(GLOB_RECURSE HEIFFILES CONFIGURE_DEPENDS "src/*Avif.cpp") list(REMOVE_ITEM SRCFILES ${HEIFFILES}) else() add_compile_definitions(HEIF_FOUND) endif() add_library(hyprgraphics SHARED ${SRCFILES}) target_include_directories( hyprgraphics PUBLIC "./include" PRIVATE "./src") set_target_properties(hyprgraphics PROPERTIES VERSION ${HYPRGRAPHICS_VERSION} SOVERSION 3) target_link_libraries(hyprgraphics PkgConfig::deps) if(JXL_FOUND) target_link_libraries(hyprgraphics PkgConfig::JXL) endif() if(HEIF_FOUND) target_link_libraries(hyprgraphics PkgConfig::HEIF) endif() # tests add_custom_target(tests) add_executable(hyprgraphics_image "tests/image.cpp") target_link_libraries(hyprgraphics_image PRIVATE hyprgraphics PkgConfig::deps) add_test( NAME "Image" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests COMMAND hyprgraphics_image "image") add_dependencies(tests hyprgraphics_image) add_executable(hyprgraphics_arg "tests/arg.cpp") target_link_libraries(hyprgraphics_arg PRIVATE hyprgraphics PkgConfig::deps) add_test( NAME "ARG" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests COMMAND hyprgraphics_arg "image") add_dependencies(tests hyprgraphics_arg) # Installation install(TARGETS hyprgraphics) install(DIRECTORY "include/hyprgraphics" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(FILES ${CMAKE_BINARY_DIR}/hyprgraphics.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) hyprwm-hyprgraphics-8f1bec6/LICENSE000066400000000000000000000027371511007052000172460ustar00rootroot00000000000000BSD 3-Clause License Copyright (c) 2024, Hypr Development Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. hyprwm-hyprgraphics-8f1bec6/README.md000066400000000000000000000015421511007052000175110ustar00rootroot00000000000000# hyprgraphics Hyprgraphics is a small C++ library with graphics / resource related utilities used across the hypr* ecosystem. ## Stability Hyprgraphics depends on the ABI stability of the stdlib implementation of your compiler. Sover bumps will be done only for hyprgraphics ABI breaks, not stdlib. ## Dependencies Requires a compiler with C++26 support. Dep list: - pixman-1 - cairo - hyprutils - libjpeg - libwebp - libjxl [optional] - libjxl_cms [optional] - libjxl_threads [optional] - libmagic - libpng - librsvg2 ## Building ```sh git clone https://github.com/hyprwm/hyprgraphics cd hyprgraphics/ cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` sudo cmake --install build ``` hyprwm-hyprgraphics-8f1bec6/VERSION000066400000000000000000000000061511007052000172740ustar00rootroot000000000000000.4.0 hyprwm-hyprgraphics-8f1bec6/flake.lock000066400000000000000000000031011511007052000201570ustar00rootroot00000000000000{ "nodes": { "hyprutils": { "inputs": { "nixpkgs": [ "nixpkgs" ], "systems": [ "systems" ] }, "locked": { "lastModified": 1756117388, "narHash": "sha256-oRDel6pNl/T2tI+nc/USU9ZP9w08dxtl7hiZxa0C/Wc=", "owner": "hyprwm", "repo": "hyprutils", "rev": "b2ae3204845f5f2f79b4703b441252d8ad2ecfd0", "type": "github" }, "original": { "owner": "hyprwm", "repo": "hyprutils", "type": "github" } }, "nixpkgs": { "locked": { "lastModified": 1757745802, "narHash": "sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820=", "owner": "NixOS", "repo": "nixpkgs", "rev": "c23193b943c6c689d70ee98ce3128239ed9e32d1", "type": "github" }, "original": { "owner": "NixOS", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "root": { "inputs": { "hyprutils": "hyprutils", "nixpkgs": "nixpkgs", "systems": "systems" } }, "systems": { "locked": { "lastModified": 1689347949, "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", "owner": "nix-systems", "repo": "default-linux", "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", "type": "github" }, "original": { "owner": "nix-systems", "repo": "default-linux", "type": "github" } } }, "root": "root", "version": 7 } hyprwm-hyprgraphics-8f1bec6/flake.nix000066400000000000000000000033041511007052000200320ustar00rootroot00000000000000{ description = "Small C++ library with graphics / resource related utilities used across the hypr* ecosystem"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; systems.url = "github:nix-systems/default-linux"; hyprutils = { url = "github:hyprwm/hyprutils"; inputs.nixpkgs.follows = "nixpkgs"; inputs.systems.follows = "systems"; }; }; outputs = { self, nixpkgs, systems, ... } @ inputs: let inherit (nixpkgs) lib; eachSystem = lib.genAttrs (import systems); pkgsFor = eachSystem (system: import nixpkgs { localSystem.system = system; overlays = with self.overlays; [hyprgraphics]; }); mkDate = longDate: (lib.concatStringsSep "-" [ (builtins.substring 0 4 longDate) (builtins.substring 4 2 longDate) (builtins.substring 6 2 longDate) ]); version = lib.removeSuffix "\n" (builtins.readFile ./VERSION); in { overlays = { default = self.overlays.hyprgraphics; hyprgraphics = lib.composeManyExtensions [ inputs.hyprutils.overlays.default (final: prev: { hyprgraphics = final.callPackage ./nix/default.nix { stdenv = final.gcc15Stdenv; version = version + "+date=" + (mkDate (self.lastModifiedDate or "19700101")) + "_" + (self.shortRev or "dirty"); }; hyprgraphics-with-tests = final.hyprgraphics.override {doCheck = true;}; }) ]; }; packages = eachSystem (system: { default = self.packages.${system}.hyprgraphics; inherit (pkgsFor.${system}) hyprgraphics hyprgraphics-with-tests; }); formatter = eachSystem (system: pkgsFor.${system}.alejandra); }; } hyprwm-hyprgraphics-8f1bec6/hyprgraphics.pc.in000066400000000000000000000004321511007052000216630ustar00rootroot00000000000000prefix=@PREFIX@ includedir=@INCLUDE@ libdir=@LIBDIR@ Name: hyprgraphics URL: https://github.com/hyprwm/hyprgraphics Description: Hyprland graphics utilities library used across the ecosystem Version: @HYPRGRAPHICS_VERSION@ Cflags: -I${includedir} Libs: -L${libdir} -lhyprgraphics hyprwm-hyprgraphics-8f1bec6/include/000077500000000000000000000000001511007052000176535ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/include/hyprgraphics/000077500000000000000000000000001511007052000223565ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/include/hyprgraphics/cairo/000077500000000000000000000000001511007052000234535ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/include/hyprgraphics/cairo/CairoSurface.hpp000066400000000000000000000016121511007052000265320ustar00rootroot00000000000000#pragma once #include #include #include namespace Hyprgraphics { // A simple cairo surface wrapper. Will destroy the surface in the ~dtor. class CCairoSurface { public: CCairoSurface(cairo_surface_t* surf); ~CCairoSurface(); CCairoSurface(CCairoSurface&&) = delete; CCairoSurface(const CCairoSurface&) = delete; CCairoSurface& operator=(const CCairoSurface&) = delete; CCairoSurface& operator=(CCairoSurface&&) = delete; cairo_surface_t* cairo(); Hyprutils::Math::Vector2D size(); int status(); uint8_t* data(); int stride(); private: cairo_surface_t* pSurface = nullptr; }; }; hyprwm-hyprgraphics-8f1bec6/include/hyprgraphics/color/000077500000000000000000000000001511007052000234745ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/include/hyprgraphics/color/Color.hpp000066400000000000000000000051471511007052000252720ustar00rootroot00000000000000#pragma once #include namespace Hyprgraphics { class CColor { public: // SRGB (NOT linear!!) 0.0 - 1.0 struct SSRGB { double r = 0, g = 0, b = 0; }; // HSL 0.0 - 1.0 struct SHSL { double h = 0, s = 0, l = 0; }; // OkLab 0.0 - 1.0 struct SOkLab { double l = 0, a = 0, b = 0; }; // xy 0.0 - 1.0 struct xy { double x = 0, y = 0; bool operator==(const xy& p2) const { return x == p2.x && y == p2.y; } }; // XYZ 0.0 - 1.0 struct XYZ { double x = 0, y = 0, z = 0; // per-component division XYZ operator/(const XYZ& other) const { return {.x = x / other.x, .y = y / other.y, .z = z / other.z}; } }; CColor(); // black CColor(const SSRGB& rgb); CColor(const SHSL& hsl); CColor(const SOkLab& lab); SSRGB asRgb() const; SHSL asHSL() const; SOkLab asOkLab() const; bool operator==(const CColor& other) const { return other.r == r && other.g == g && other.b == b; } private: // SRGB space for internal color storage double r = 0, g = 0, b = 0; }; // 3x3 matrix for CM transformations class CMatrix3 { public: CMatrix3() = default; CMatrix3(const std::array, 3>& values); CMatrix3 invert() const; CColor::XYZ operator*(const CColor::XYZ& xyz) const; CMatrix3 operator*(const CMatrix3& other) const; const std::array, 3>& mat(); static const CMatrix3& identity(); private: std::array, 3> m = { 0, 0, 0, // 0, 0, 0, // 0, 0, 0, // }; }; CColor::XYZ xy2xyz(const CColor::xy& xy); CMatrix3 adaptWhite(const CColor::xy& src, const CColor::xy& dst); struct SPCPRimaries { CColor::xy red, green, blue, white; bool operator==(const SPCPRimaries& p2) const { return red == p2.red && green == p2.green && blue == p2.blue && white == p2.white; } CMatrix3 toXYZ() const; // toXYZ() * rgb -> xyz CMatrix3 convertMatrix(const SPCPRimaries& dst) const; // convertMatrix(dst) * rgb with "this" primaries -> rgb with dst primaries }; }; hyprwm-hyprgraphics-8f1bec6/include/hyprgraphics/image/000077500000000000000000000000001511007052000234405ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/include/hyprgraphics/image/Image.hpp000066400000000000000000000024231511007052000251740ustar00rootroot00000000000000#pragma once #include #include #include #include "../cairo/CairoSurface.hpp" #include namespace Hyprgraphics { enum eImageFormat : uint8_t { IMAGE_FORMAT_PNG, IMAGE_FORMAT_AVIF, }; class CImage { public: CImage(const std::string& path, const Hyprutils::Math::Vector2D& size = {} /* for SVG */); CImage(const std::span, eImageFormat); ~CImage(); CImage(const CImage&) = delete; CImage& operator=(const CImage&) = delete; // bool success(); bool hasAlpha(); std::string getError(); std::string getMime(); Hyprutils::Memory::CSharedPointer cairoSurface(); private: std::string lastError, filepath, mime; Hyprutils::Math::Vector2D m_svgSize; Hyprutils::Memory::CSharedPointer pCairoSurface; bool imageHasAlpha = true, loadSuccess = false; }; }; hyprwm-hyprgraphics-8f1bec6/include/hyprgraphics/resource/000077500000000000000000000000001511007052000242055ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/include/hyprgraphics/resource/AsyncResourceGatherer.hpp000066400000000000000000000023041511007052000311640ustar00rootroot00000000000000#pragma once #include #include #include #include #include #include "../cairo/CairoSurface.hpp" #include "./resources/AsyncResource.hpp" #include namespace Hyprgraphics { class CAsyncResourceGatherer { public: CAsyncResourceGatherer(); ~CAsyncResourceGatherer(); void enqueue(Hyprutils::Memory::CAtomicSharedPointer resource); // Synchronously await the resource being available void await(Hyprutils::Memory::CAtomicSharedPointer resource); private: std::thread m_gatherThread; struct { std::mutex requestMutex; std::condition_variable requestsCV; bool exit = false; bool needsToProcess = false; } m_asyncLoopState; std::vector> m_targetsToLoad; std::mutex m_targetsToLoadMutex; // void asyncAssetSpinLock(); void wakeUpMainThread(); }; } hyprwm-hyprgraphics-8f1bec6/include/hyprgraphics/resource/resources/000077500000000000000000000000001511007052000262175ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/include/hyprgraphics/resource/resources/AsyncResource.hpp000066400000000000000000000023171511007052000315200ustar00rootroot00000000000000#pragma once #include #include #include #include "../../cairo/CairoSurface.hpp" #include namespace Hyprgraphics { struct SAsyncResourceImpl; class IAsyncResource { public: IAsyncResource(); virtual ~IAsyncResource() = default; virtual void render() = 0; struct { // this signal fires on the worker thread. **Really** consider making this signal handler call something to wake your // main event loop up and do things there. Hyprutils::Signal::CSignalT<> finished; } m_events; // you probably shouldn't use this but it's here just in case. std::atomic m_ready = false; struct { // This pointer can be made not thread safe as after .finished the worker thread will not touch it anymore // and before that you shouldnt touch it either Hyprutils::Memory::CSharedPointer cairoSurface; Hyprutils::Math::Vector2D pixelSize; } m_asset; Hyprutils::Memory::CUniquePointer m_impl; }; } hyprwm-hyprgraphics-8f1bec6/include/hyprgraphics/resource/resources/ImageResource.hpp000066400000000000000000000013231511007052000314610ustar00rootroot00000000000000#pragma once #include #include #include "./AsyncResource.hpp" #include "../../color/Color.hpp" #include namespace Hyprgraphics { class CImageResource : public IAsyncResource { public: enum eTextAlignmentMode : uint8_t { TEXT_ALIGN_LEFT = 0, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, }; CImageResource(const std::string& path); CImageResource(const std::string& svg, const Hyprutils::Math::Vector2D& size); virtual ~CImageResource() = default; virtual void render(); private: std::string m_path; Hyprutils::Math::Vector2D m_svgSize; }; }; hyprwm-hyprgraphics-8f1bec6/include/hyprgraphics/resource/resources/StaticImageResource.hpp000066400000000000000000000013601511007052000326320ustar00rootroot00000000000000#pragma once #include "./AsyncResource.hpp" #include "../../color/Color.hpp" #include "hyprgraphics/image/Image.hpp" #include #include namespace Hyprgraphics { class CStaticImageResource : public IAsyncResource { public: enum eTextAlignmentMode : uint8_t { TEXT_ALIGN_LEFT = 0, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, }; CStaticImageResource(const std::span data, eImageFormat format); virtual ~CStaticImageResource() = default; virtual void render(); private: const std::span m_data; const eImageFormat m_format = eImageFormat::IMAGE_FORMAT_PNG; }; }; hyprwm-hyprgraphics-8f1bec6/include/hyprgraphics/resource/resources/TextResource.hpp000066400000000000000000000026661511007052000313760ustar00rootroot00000000000000#pragma once #include "AsyncResource.hpp" #include "../../color/Color.hpp" #include #include #include namespace Hyprgraphics { class CTextResource : public IAsyncResource { public: enum eTextAlignmentMode : uint8_t { TEXT_ALIGN_LEFT = 0, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, }; struct STextResourceData { std::string text = "Sample Text"; std::string font = "Sans Serif"; size_t fontSize = 16; CColor color = CColor{CColor::SSRGB{.r = 1.F, .g = 1.F, .b = 1.F}}; eTextAlignmentMode align = TEXT_ALIGN_LEFT; std::optional maxSize = std::nullopt; cairo_antialias_t antialias = CAIRO_ANTIALIAS_GOOD; cairo_hint_style_t hintStyle = CAIRO_HINT_STYLE_SLIGHT; bool ellipsize = false; bool wrap = true; }; CTextResource(STextResourceData&& data); virtual ~CTextResource() = default; virtual void render(); private: STextResourceData m_data; }; }; hyprwm-hyprgraphics-8f1bec6/nix/000077500000000000000000000000001511007052000170265ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/nix/default.nix000066400000000000000000000027121511007052000211740ustar00rootroot00000000000000{ lib, stdenv, stdenvAdapters, cmake, pkg-config, cairo, file, hyprutils, libheif, libjpeg, libjxl, librsvg, libspng, libwebp, pango, pixman, version ? "git", doCheck ? false, debug ? false, }: let inherit (builtins) foldl'; inherit (lib.lists) flatten; inherit (lib.sources) cleanSource cleanSourceWith; inherit (lib.strings) hasSuffix; adapters = flatten [ stdenvAdapters.useMoldLinker (lib.optional debug stdenvAdapters.keepDebugInfo) ]; customStdenv = foldl' (acc: adapter: adapter acc) stdenv adapters; in customStdenv.mkDerivation { pname = "hyprgraphics"; inherit version doCheck; src = cleanSourceWith { filter = name: _type: let baseName = baseNameOf (toString name); in ! (hasSuffix ".nix" baseName); src = cleanSource ../.; }; nativeBuildInputs = [ cmake pkg-config ]; buildInputs = [ cairo file hyprutils libheif libjpeg libjxl librsvg libspng libwebp pango pixman ]; outputs = ["out" "dev"]; cmakeBuildType = if debug then "Debug" else "RelWithDebInfo"; meta = with lib; { homepage = "https://github.com/hyprwm/hyprgraphics"; description = "Small C++ library with graphics / resource related utilities used across the hypr* ecosystem"; license = licenses.bsd3; platforms = platforms.linux; }; } hyprwm-hyprgraphics-8f1bec6/src/000077500000000000000000000000001511007052000170175ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/src/cairo/000077500000000000000000000000001511007052000201145ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/src/cairo/CairoSurface.cpp000066400000000000000000000014721511007052000231720ustar00rootroot00000000000000#include using namespace Hyprgraphics; Hyprgraphics::CCairoSurface::CCairoSurface(cairo_surface_t* surf) : pSurface(surf) { ; } Hyprgraphics::CCairoSurface::~CCairoSurface() { if (pSurface) cairo_surface_destroy(pSurface); } cairo_surface_t* Hyprgraphics::CCairoSurface::cairo() { return pSurface; } Hyprutils::Math::Vector2D Hyprgraphics::CCairoSurface::size() { return {cairo_image_surface_get_width(pSurface), cairo_image_surface_get_height(pSurface)}; } int Hyprgraphics::CCairoSurface::status() { return cairo_surface_status(pSurface); } uint8_t* Hyprgraphics::CCairoSurface::data() { return (uint8_t*)cairo_image_surface_get_data(pSurface); } int Hyprgraphics::CCairoSurface::stride() { return cairo_image_surface_get_stride(pSurface); } hyprwm-hyprgraphics-8f1bec6/src/color/000077500000000000000000000000001511007052000201355ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/src/color/Color.cpp000066400000000000000000000172541511007052000217300ustar00rootroot00000000000000#include #include #include using namespace Hyprgraphics; static double gammaToLinear(const double in) { return in >= 0.04045 ? std::pow((in + 0.055) / 1.055, 2.4) : in / 12.92; } static double linearToGamma(const double in) { return in >= 0.0031308 ? (1.055 * std::pow(in, 0.41666666666)) - 0.055 : 12.92 * in; } static double hueToRgb(double p, double q, double t) { if (t < 0) t += 1; if (t > 1) t -= 1; if (t < 1.0 / 6.0) return p + ((q - p) * 6.0 * t); if (t < 1.0 / 2.0) return q; if (t < 2.0 / 3.0) return p + ((q - p) * (2.0 / 3.0 - t) * 6.0); return p; } Hyprgraphics::CMatrix3::CMatrix3(const std::array, 3>& values) : m(values) {} CMatrix3 Hyprgraphics::CMatrix3::invert() const { double invDet = 1 / (0 // + m[0][0] * (m[1][1] * m[2][2] - m[2][1] * m[1][2]) // - m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]) // + m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]) // ); return CMatrix3(std::array, 3>{ (m[1][1] * m[2][2] - m[2][1] * m[1][2]) * invDet, (m[0][2] * m[2][1] - m[0][1] * m[2][2]) * invDet, (m[0][1] * m[1][2] - m[0][2] * m[1][1]) * invDet, // (m[1][2] * m[2][0] - m[1][0] * m[2][2]) * invDet, (m[0][0] * m[2][2] - m[0][2] * m[2][0]) * invDet, (m[1][0] * m[0][2] - m[0][0] * m[1][2]) * invDet, // (m[1][0] * m[2][1] - m[2][0] * m[1][1]) * invDet, (m[2][0] * m[0][1] - m[0][0] * m[2][1]) * invDet, (m[0][0] * m[1][1] - m[1][0] * m[0][1]) * invDet, // }); } CColor::XYZ Hyprgraphics::CMatrix3::operator*(const CColor::XYZ& value) const { return CColor::XYZ{ .x = (m[0][0] * value.x) + (m[0][1] * value.y) + (m[0][2] * value.z), // .y = (m[1][0] * value.x) + (m[1][1] * value.y) + (m[1][2] * value.z), // .z = (m[2][0] * value.x) + (m[2][1] * value.y) + (m[2][2] * value.z), // }; } CMatrix3 Hyprgraphics::CMatrix3::operator*(const CMatrix3& other) const { std::array, 3> res = {0, 0, 0, 0, 0, 0, 0, 0, 0}; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { for (int k = 0; k < 3; k++) { res[i][j] += m[i][k] * other.m[k][j]; } } } return CMatrix3(res); } const std::array, 3>& Hyprgraphics::CMatrix3::mat() { return m; }; const CMatrix3& CMatrix3::identity() { static const CMatrix3 Identity3 = CMatrix3(std::array, 3>{ 1, 0, 0, // 0, 1, 0, // 0, 0, 1, // }); return Identity3; } CColor::XYZ Hyprgraphics::xy2xyz(const CColor::xy& xy) { if (xy.y == 0.0) return {.x = 0.0, .y = 0.0, .z = 0.0}; return {.x = xy.x / xy.y, .y = 1.0, .z = (1.0 - xy.x - xy.y) / xy.y}; } static CMatrix3 Bradford = CMatrix3(std::array, 3>{ 0.8951, 0.2664, -0.1614, // -0.7502, 1.7135, 0.0367, // 0.0389, -0.0685, 1.0296, // }); static CMatrix3 BradfordInv = Bradford.invert(); CMatrix3 Hyprgraphics::adaptWhite(const CColor::xy& src, const CColor::xy& dst) { if (src == dst) return CMatrix3::identity(); const auto srcXYZ = xy2xyz(src); const auto dstXYZ = xy2xyz(dst); const auto factors = (Bradford * dstXYZ) / (Bradford * srcXYZ); return BradfordInv * CMatrix3(std::array, 3>{ factors.x, 0.0, 0.0, // 0.0, factors.y, 0.0, // 0.0, 0.0, factors.z, // }) * Bradford; } CMatrix3 Hyprgraphics::SPCPRimaries::toXYZ() const { const auto r = xy2xyz(red); const auto g = xy2xyz(green); const auto b = xy2xyz(blue); const auto w = xy2xyz(white); const auto invMat = CMatrix3(std::array, 3>{ r.x, g.x, b.x, // r.y, g.y, b.y, // r.z, g.z, b.z, // }) .invert(); const auto s = invMat * w; return std::array, 3>{ s.x * r.x, s.y * g.x, s.z * b.x, // s.x * r.y, s.y * g.y, s.z * b.y, // s.x * r.z, s.y * g.z, s.z * b.z, // }; } CMatrix3 Hyprgraphics::SPCPRimaries::convertMatrix(const SPCPRimaries& dst) const { return dst.toXYZ().invert() * adaptWhite(white, dst.white) * toXYZ(); } Hyprgraphics::CColor::CColor() { ; } Hyprgraphics::CColor::CColor(const SSRGB& rgb) : r(rgb.r), g(rgb.g), b(rgb.b) { ; } Hyprgraphics::CColor::CColor(const SHSL& hsl) { if (hsl.s <= 0) { r = hsl.l; g = hsl.l; b = hsl.l; } else { const double q = hsl.l < 0.5 ? hsl.l * (1.0 + hsl.s) : hsl.l + hsl.s - (hsl.l * hsl.s); const double p = (2.0 * hsl.l) - q; r = hueToRgb(p, q, hsl.h + (1.0 / 3.0)); g = hueToRgb(p, q, hsl.h); b = hueToRgb(p, q, hsl.h - (1.0 / 3.0)); } } Hyprgraphics::CColor::CColor(const SOkLab& lab) { const double l = std::pow(lab.l + (lab.a * 0.3963377774) + (lab.b * 0.2158037573), 3); const double m = std::pow(lab.l + (lab.a * (-0.1055613458)) + (lab.b * (-0.0638541728)), 3); const double s = std::pow(lab.l + (lab.a * (-0.0894841775)) + (lab.b * (-1.2914855480)), 3); r = linearToGamma((l * 4.0767416621) + (m * -3.3077115913) + (s * 0.2309699292)); g = linearToGamma((l * (-1.2684380046)) + (m * 2.6097574011) + (s * (-0.3413193965))); b = linearToGamma((l * (-0.0041960863)) + (m * (-0.7034186147)) + (s * 1.7076147010)); } Hyprgraphics::CColor::SSRGB Hyprgraphics::CColor::asRgb() const { return Hyprgraphics::CColor::SSRGB{ .r = r, .g = g, .b = b, }; } Hyprgraphics::CColor::SHSL Hyprgraphics::CColor::asHSL() const { const double vmax = std::max({r, g, b}), vmin = std::min({r, g, b}); double h = 0, s = 0, l = (vmax + vmin) / 2.0; if (vmax == vmin) { return Hyprgraphics::CColor::SHSL{ .h = 0, .s = 0, .l = l, }; } const double d = vmax - vmin; s = l > 0.5 ? d / (2.0 - vmax - vmin) : d / (vmax + vmin); if (vmax == r) h = (g - b) / d + (g < b ? 6.0 : 0.0); if (vmax == g) h = (b - r) / d + 2; if (vmax == b) h = (r - g) / d + 4; h /= 6.0; return Hyprgraphics::CColor::SHSL{ .h = h, .s = s, .l = l, }; } Hyprgraphics::CColor::SOkLab Hyprgraphics::CColor::asOkLab() const { const double linR = gammaToLinear(r); const double linG = gammaToLinear(g); const double linB = gammaToLinear(b); const double l = std::cbrtf((0.4122214708 * linR) + (0.5363325363 * linG) + (0.0514459929 * linB)); const double m = std::cbrtf((0.2119034982 * linR) + (0.6806995451 * linG) + (0.1073969566 * linB)); const double s = std::cbrtf((0.0883024619 * linR) + (0.2817188376 * linG) + (0.6299787005 * linB)); return Hyprgraphics::CColor::SOkLab{ .l = (l * 0.2104542553) + (m * 0.7936177850) + (s * (-0.0040720468)), .a = (l * 1.9779984951) + (m * (-2.4285922050)) + (s * 0.4505937099), .b = (l * 0.0259040371) + (m * 0.7827717662) + (s * (-0.8086757660)), }; } hyprwm-hyprgraphics-8f1bec6/src/image/000077500000000000000000000000001511007052000201015ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/src/image/Image.cpp000066400000000000000000000133531511007052000216340ustar00rootroot00000000000000#include #include "formats/Bmp.hpp" #include "formats/Jpeg.hpp" #ifdef JXL_FOUND #include "formats/JpegXL.hpp" #endif #ifdef HEIF_FOUND #include "formats/Avif.hpp" #endif #include "formats/Webp.hpp" #include "formats/Png.hpp" #include "formats/Svg.hpp" #include #include using namespace Hyprgraphics; using namespace Hyprutils::Memory; using namespace Hyprutils::Math; Hyprgraphics::CImage::CImage(const std::span data, eImageFormat format) { std::expected CAIROSURFACE; if (format == eImageFormat::IMAGE_FORMAT_PNG) { CAIROSURFACE = PNG::createSurfaceFromPNG(data); mime = "image/png"; } else if (format == eImageFormat::IMAGE_FORMAT_AVIF) { #ifndef HEIF_FOUND lastError = "hyprgraphics compiled without HEIF support"; return; #else CAIROSURFACE = AVIF::createSurfaceFromAvif(data); mime = "image/avif"; #endif } else { lastError = "Currently only PNG and AVIF images are supported for embedding"; return; } if (!CAIROSURFACE) { lastError = CAIROSURFACE.error(); return; } if (const auto STATUS = cairo_surface_status(*CAIROSURFACE); STATUS != CAIRO_STATUS_SUCCESS) { lastError = std::format("Could not create surface: {}", cairo_status_to_string(STATUS)); return; } loadSuccess = true; pCairoSurface = makeShared(CAIROSURFACE.value()); } Hyprgraphics::CImage::CImage(const std::string& path, const Vector2D& size) : filepath(path), m_svgSize(size) { std::expected CAIROSURFACE; if (path.ends_with(".png") || path.ends_with(".PNG")) { CAIROSURFACE = PNG::createSurfaceFromPNG(path); mime = "image/png"; } else if (path.ends_with(".jpg") || path.ends_with(".JPG") || path.ends_with(".jpeg") || path.ends_with(".JPEG")) { CAIROSURFACE = JPEG::createSurfaceFromJPEG(path); imageHasAlpha = false; mime = "image/jpeg"; } else if (path.ends_with(".bmp") || path.ends_with(".BMP")) { CAIROSURFACE = BMP::createSurfaceFromBMP(path); imageHasAlpha = false; mime = "image/bmp"; } else if (path.ends_with(".webp") || path.ends_with(".WEBP")) { CAIROSURFACE = WEBP::createSurfaceFromWEBP(path); mime = "image/webp"; } else if (path.ends_with(".svg") || path.ends_with(".SVG")) { CAIROSURFACE = SVG::createSurfaceFromSVG(path, m_svgSize); mime = "image/svg"; } else if (path.ends_with(".jxl") || path.ends_with(".JXL")) { #ifdef JXL_FOUND CAIROSURFACE = JXL::createSurfaceFromJXL(path); mime = "image/jxl"; #else lastError = "hyprgraphics compiled without JXL support"; return; #endif } else if (path.ends_with(".avif") || path.ends_with(".AVIF")) { #ifdef HEIF_FOUND CAIROSURFACE = AVIF::createSurfaceFromAvif(path); mime = "image/avif"; #else lastError = "hyprgraphics compiled without HEIF support"; return; #endif } else { // magic is slow, so only use it when no recognized extension is found auto handle = magic_open(MAGIC_NONE | MAGIC_COMPRESS | MAGIC_SYMLINK); magic_load(handle, nullptr); const auto type_str = std::string(magic_file(handle, path.c_str())); magic_close(handle); const auto first_word = type_str.substr(0, type_str.find(' ')); if (first_word == "PNG") { CAIROSURFACE = PNG::createSurfaceFromPNG(path); mime = "image/png"; } else if (first_word == "JPEG" && !type_str.contains("XL") && !type_str.contains("2000")) { CAIROSURFACE = JPEG::createSurfaceFromJPEG(path); imageHasAlpha = false; mime = "image/jpeg"; } else if (first_word == "JPEG" && type_str.contains("XL")) { #ifdef JXL_FOUND CAIROSURFACE = JXL::createSurfaceFromJXL(path); mime = "image/jxl"; #else lastError = "hyprgraphics compiled without JXL support"; return; #endif } else if (type_str.contains("AVIF")) { // libmagic can identify AVIF images as "ISO Media, AVIF Image" #ifdef HEIF_FOUND CAIROSURFACE = AVIF::createSurfaceFromAvif(path); mime = "image/avif"; #else lastError = "hyprgraphics compiled without AVIF support"; return; #endif } else if (first_word == "BMP") { CAIROSURFACE = BMP::createSurfaceFromBMP(path); imageHasAlpha = false; mime = "image/bmp"; } else if (first_word == "SVG") { CAIROSURFACE = SVG::createSurfaceFromSVG(path, m_svgSize); imageHasAlpha = false; mime = "image/svg"; } else { lastError = "unrecognized image"; return; } } if (!CAIROSURFACE) { lastError = CAIROSURFACE.error(); return; } if (const auto STATUS = cairo_surface_status(*CAIROSURFACE); STATUS != CAIRO_STATUS_SUCCESS) { lastError = std::format("Could not create surface: {}", cairo_status_to_string(STATUS)); return; } loadSuccess = true; pCairoSurface = makeShared(CAIROSURFACE.value()); } Hyprgraphics::CImage::~CImage() { ; } bool Hyprgraphics::CImage::success() { return loadSuccess; } bool Hyprgraphics::CImage::hasAlpha() { return imageHasAlpha; } std::string Hyprgraphics::CImage::getError() { return lastError; } Hyprutils::Memory::CSharedPointer Hyprgraphics::CImage::cairoSurface() { return pCairoSurface; } std::string Hyprgraphics::CImage::getMime() { return mime; } hyprwm-hyprgraphics-8f1bec6/src/image/formats/000077500000000000000000000000001511007052000215545ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/src/image/formats/Avif.cpp000066400000000000000000000062501511007052000231500ustar00rootroot00000000000000#include "Avif.hpp" #include #include #include #include #include #include #include #include using namespace Hyprutils::Utils; static std::expected loadFromContext(heif_context* ctx) { heif_image_handle* handle; heif_context_get_primary_image_handle(ctx, &handle); heif_image* img; struct heif_error err = heif_decode_image(handle, &img, heif_colorspace_RGB, heif_chroma_interleaved_RGBA, nullptr); if (err.code != heif_error_Ok) return std::unexpected("loading avif: failed to decode image"); size_t width = heif_image_get_width(img, heif_channel_interleaved); size_t height = heif_image_get_height(img, heif_channel_interleaved); if (width == static_cast(-1) || height == static_cast(-1)) return std::unexpected("loading avif: failed to get width or height"); int stride; const uint8_t* data = heif_image_get_plane_readonly(img, heif_channel_interleaved, &stride); if (!data) return std::unexpected("loading avif: get_plane_readonly failed"); std::vector rawData; rawData.resize(width * height * 4); for (size_t y = 0; y < height; y++) { const uint8_t* src = data + (y * stride); uint32_t* dst = (uint32_t*)(rawData.data() + (y * width * 4)); for (size_t x = 0; x < width; x++) { uint8_t r = src[(4 * x) + 0]; uint8_t g = src[(4 * x) + 1]; uint8_t b = src[(4 * x) + 2]; uint8_t a = src[(4 * x) + 3]; r = (r * a) / 255.F; g = (g * a) / 255.F; b = (b * a) / 255.F; dst[x] = (a << 24) | (r << 16) | (g << 8) | b; } } auto CAIROSURFACE = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height); if (!CAIROSURFACE) return std::unexpected("loading avif: cairo failed"); memcpy(cairo_image_surface_get_data(CAIROSURFACE), rawData.data(), rawData.size()); cairo_surface_mark_dirty(CAIROSURFACE); heif_image_release(img); heif_image_handle_release(handle); return CAIROSURFACE; } std::expected AVIF::createSurfaceFromAvif(const std::string& path) { if (!std::filesystem::exists(path)) return std::unexpected("loading avif: file doesn't exist"); heif_context* ctx = heif_context_alloc(); struct heif_error err = heif_context_read_from_file(ctx, path.c_str(), nullptr); if (err.code != heif_error_Ok) return std::unexpected("loading avif: failed to load from file"); auto result = loadFromContext(ctx); heif_context_free(ctx); return result; } std::expected AVIF::createSurfaceFromAvif(const std::span buf) { heif_context* ctx = heif_context_alloc(); struct heif_error err = heif_context_read_from_memory(ctx, buf.data(), buf.size(), nullptr); if (err.code != heif_error_Ok) return std::unexpected("loading avif: failed to load from memory"); auto result = loadFromContext(ctx); heif_context_free(ctx); return result; } hyprwm-hyprgraphics-8f1bec6/src/image/formats/Avif.hpp000066400000000000000000000005111511007052000231470ustar00rootroot00000000000000#pragma once #include #include #include #include #include namespace AVIF { std::expected createSurfaceFromAvif(const std::string&); std::expected createSurfaceFromAvif(const std::span); }; hyprwm-hyprgraphics-8f1bec6/src/image/formats/Bmp.cpp000066400000000000000000000124731511007052000230050ustar00rootroot00000000000000#include "Bmp.hpp" #include #include #include #include #include #include #include #include #include class BmpHeader { public: unsigned char format[2]; uint32_t sizeOfFile; uint16_t reserved1; uint16_t reserved2; uint32_t dataOffset; uint32_t sizeOfBitmapHeader; uint32_t width; uint32_t height; uint16_t numberOfColors; uint16_t numberOfBitPerPixel; uint32_t compressionMethod; uint32_t imageSize; uint32_t horizontalResolutionPPM; uint32_t verticalResolutionPPM; uint32_t numberOfCollors; uint32_t numberOfImportantCollors; std::optional load(std::ifstream& file) { file.seekg(0, std::ios::end); uint32_t streamLength = file.tellg(); file.seekg(0, std::ios::beg); file.read(reinterpret_cast(&format), sizeof(format)); if (format[0] != 66 || format[1] != 77) return "Unable to parse bitmap header: wrong bmp file type"; file.read(reinterpret_cast(&sizeOfFile), sizeof(sizeOfFile)); if (sizeOfFile != streamLength) return "Unable to parse bitmap header: wrong value of file size header"; file.read(reinterpret_cast(&reserved1), sizeof(reserved1)); file.read(reinterpret_cast(&reserved2), sizeof(reserved2)); file.read(reinterpret_cast(&dataOffset), sizeof(dataOffset)); file.read(reinterpret_cast(&sizeOfBitmapHeader), sizeof(sizeOfBitmapHeader)); file.read(reinterpret_cast(&width), sizeof(width)); file.read(reinterpret_cast(&height), sizeof(height)); file.read(reinterpret_cast(&numberOfColors), sizeof(numberOfColors)); file.read(reinterpret_cast(&numberOfBitPerPixel), sizeof(numberOfBitPerPixel)); file.read(reinterpret_cast(&compressionMethod), sizeof(compressionMethod)); file.read(reinterpret_cast(&imageSize), sizeof(imageSize)); file.read(reinterpret_cast(&horizontalResolutionPPM), sizeof(horizontalResolutionPPM)); file.read(reinterpret_cast(&verticalResolutionPPM), sizeof(verticalResolutionPPM)); file.read(reinterpret_cast(&numberOfCollors), sizeof(numberOfCollors)); file.read(reinterpret_cast(&numberOfImportantCollors), sizeof(numberOfImportantCollors)); if (!imageSize) imageSize = sizeOfFile - dataOffset; if (imageSize != (width * height * numberOfBitPerPixel / 8)) return "Unable to parse bitmap header: wrong image size"; file.seekg(dataOffset); return std::nullopt; }; }; static void reflectImage(unsigned char* image, uint32_t numberOfRows, int stride) { int rowStart = 0; int rowEnd = numberOfRows - 1; std::vector temp; temp.resize(stride); while (rowStart < rowEnd) { memcpy(&temp[0], &image[static_cast(rowStart * stride)], stride); memcpy(&image[static_cast(rowStart * stride)], &image[static_cast(rowEnd * stride)], stride); memcpy(&image[static_cast(rowEnd * stride)], &temp[0], stride); rowStart++; rowEnd--; } }; static void convertRgbToArgb(std::ifstream& imageStream, unsigned char* outputImage, uint32_t newImageSize) { uint8_t forthBitCounter = 0; unsigned long imgCursor = 0; while (imgCursor < newImageSize) { imageStream.read(reinterpret_cast(&outputImage[imgCursor]), 1); imgCursor++; forthBitCounter++; if (forthBitCounter == 3) { outputImage[imgCursor] = 0; imgCursor++; forthBitCounter = 0; } } }; std::expected BMP::createSurfaceFromBMP(const std::string& path) { if (!std::filesystem::exists(path)) return std::unexpected("loading bmp: file doesn't exist"); std::ifstream bitmapImageStream(path); BmpHeader bitmapHeader; if (const auto RET = bitmapHeader.load(bitmapImageStream); RET.has_value()) return std::unexpected("loading bmp: " + *RET); cairo_format_t format = CAIRO_FORMAT_ARGB32; int stride = cairo_format_stride_for_width(format, bitmapHeader.width); unsigned char* imageData = (unsigned char*)malloc(static_cast(bitmapHeader.height * stride)); if (bitmapHeader.numberOfBitPerPixel == 24) convertRgbToArgb(bitmapImageStream, imageData, bitmapHeader.height * stride); else if (bitmapHeader.numberOfBitPerPixel == 32) bitmapImageStream.read(reinterpret_cast(&imageData), bitmapHeader.imageSize); else { bitmapImageStream.close(); return std::unexpected("loading bmp: unsupported bmp stream"); } bitmapImageStream.close(); reflectImage(imageData, bitmapHeader.height, stride); return cairo_image_surface_create_for_data(imageData, format, bitmapHeader.width, bitmapHeader.height, stride); } hyprwm-hyprgraphics-8f1bec6/src/image/formats/Bmp.hpp000066400000000000000000000002731511007052000230050ustar00rootroot00000000000000#pragma once #include #include #include namespace BMP { std::expected createSurfaceFromBMP(const std::string&); };hyprwm-hyprgraphics-8f1bec6/src/image/formats/Jpeg.cpp000066400000000000000000000053411511007052000231500ustar00rootroot00000000000000#include "Jpeg.hpp" #include #include #include #include #include // TODO: TurboJPEG C API and get rid of this jmp_buf bailoutBuf = {}; static void bailout(j_common_ptr _) { longjmp(bailoutBuf, 1); } std::expected JPEG::createSurfaceFromJPEG(const std::string& path) { if (!std::filesystem::exists(path)) return std::unexpected("loading jpeg: file doesn't exist"); if (__BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__) return std::unexpected("loading jpeg: cannot load on big endian"); std::ifstream file(path, std::ios::binary | std::ios::ate); file.exceptions(std::ifstream::failbit | std::ifstream::badbit | std::ifstream::eofbit); std::vector bytes(file.tellg()); file.seekg(0); file.read(reinterpret_cast(bytes.data()), bytes.size()); if (bytes[0] != 0xFF || bytes[1] != 0xD8) return std::unexpected("loading jpeg: invalid magic bytes"); // now the JPEG is in the memory jpeg_decompress_struct decompressStruct = {}; jpeg_error_mgr errorManager = {}; decompressStruct.err = jpeg_std_error(&errorManager); errorManager.error_exit = bailout; if (setjmp(bailoutBuf)) return std::unexpected("loading jpeg: libjpeg encountered a fatal error"); jpeg_create_decompress(&decompressStruct); jpeg_mem_src(&decompressStruct, bytes.data(), bytes.size()); jpeg_read_header(&decompressStruct, true); #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ decompressStruct.out_color_space = JCS_EXT_BGRA; #else decompressStruct.out_color_space = JCS_EXT_ARGB; #endif // decompress jpeg_start_decompress(&decompressStruct); auto cairoSurface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, decompressStruct.output_width, decompressStruct.output_height); if (cairo_surface_status(cairoSurface) != CAIRO_STATUS_SUCCESS) return std::unexpected("loading jpeg: cairo failed to create an image surface"); const auto CAIRODATA = cairo_image_surface_get_data(cairoSurface); const auto CAIROSTRIDE = cairo_image_surface_get_stride(cairoSurface); JSAMPROW rowRead; while (decompressStruct.output_scanline < decompressStruct.output_height) { const auto PROW = CAIRODATA + (static_cast(decompressStruct.output_scanline * CAIROSTRIDE)); rowRead = PROW; jpeg_read_scanlines(&decompressStruct, &rowRead, 1); } cairo_surface_mark_dirty(cairoSurface); cairo_surface_set_mime_data(cairoSurface, CAIRO_MIME_TYPE_JPEG, bytes.data(), bytes.size(), nullptr, nullptr); jpeg_finish_decompress(&decompressStruct); jpeg_destroy_decompress(&decompressStruct); return cairoSurface; } hyprwm-hyprgraphics-8f1bec6/src/image/formats/Jpeg.hpp000066400000000000000000000003221511007052000231470ustar00rootroot00000000000000#pragma once #include #include #include #include namespace JPEG { std::expected createSurfaceFromJPEG(const std::string&); };hyprwm-hyprgraphics-8f1bec6/src/image/formats/JpegXL.cpp000066400000000000000000000103061511007052000234110ustar00rootroot00000000000000#include "JpegXL.hpp" #include #include #include #include #include std::expected JXL::createSurfaceFromJXL(const std::string& path) { if (!std::filesystem::exists(path)) return std::unexpected("loading jxl: file doesn't exist"); std::ifstream file(path, std::ios::binary | std::ios::ate); file.exceptions(std::ifstream::failbit | std::ifstream::badbit | std::ifstream::eofbit); std::vector bytes(file.tellg()); file.seekg(0); file.read(reinterpret_cast(bytes.data()), bytes.size()); JxlSignature signature = JxlSignatureCheck(bytes.data(), bytes.size()); if (signature != JXL_SIG_CODESTREAM && signature != JXL_SIG_CONTAINER) return std::unexpected("loading jxl: not jxl"); auto dec = JxlDecoderMake(nullptr); auto runner = JxlResizableParallelRunnerMake(nullptr); if (JXL_DEC_SUCCESS != JxlDecoderSetParallelRunner(dec.get(), JxlResizableParallelRunner, runner.get())) return std::unexpected("loading jxl: JxlResizableParallelRunner failed"); if (JXL_DEC_SUCCESS != JxlDecoderSubscribeEvents(dec.get(), JXL_DEC_BASIC_INFO | JXL_DEC_FULL_IMAGE)) return std::unexpected("loading jxl: JxlDecoderSubscribeEvents failed"); JxlDecoderSetInput(dec.get(), bytes.data(), bytes.size()); JxlDecoderCloseInput(dec.get()); if (JXL_DEC_BASIC_INFO != JxlDecoderProcessInput(dec.get())) return std::unexpected("loading jxl: JxlDecoderProcessInput failed"); JxlBasicInfo basicInfo; if (JXL_DEC_SUCCESS != JxlDecoderGetBasicInfo(dec.get(), &basicInfo)) return std::unexpected("loading jxl: JxlDecoderGetBasicInfo failed"); auto cairoSurface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, basicInfo.xsize, basicInfo.ysize); if (cairo_surface_status(cairoSurface) != CAIRO_STATUS_SUCCESS) { cairo_surface_destroy(cairoSurface); return std::unexpected("loading jxl: cairo failed"); } const auto CAIRODATA = cairo_image_surface_get_data(cairoSurface); JxlPixelFormat format = { .num_channels = 4, .data_type = JXL_TYPE_UINT8, .endianness = JXL_LITTLE_ENDIAN, .align = (size_t)cairo_image_surface_get_stride(cairoSurface), }; const auto OUTPUTSIZE = basicInfo.xsize * basicInfo.ysize * format.num_channels; for (;;) { JxlDecoderStatus status = JxlDecoderProcessInput(dec.get()); if (status == JXL_DEC_ERROR) { cairo_surface_destroy(cairoSurface); return std::unexpected("loading jxl: JxlDecoderProcessInput failed"); } else if (status == JXL_DEC_NEED_MORE_INPUT) { cairo_surface_destroy(cairoSurface); return std::unexpected("loading jxl: JxlDecoderProcessInput expected more input"); } else if (status == JXL_DEC_NEED_IMAGE_OUT_BUFFER) { JxlResizableParallelRunnerSetThreads(runner.get(), JxlResizableParallelRunnerSuggestThreads(basicInfo.xsize, basicInfo.ysize)); size_t bufferSize; if (JXL_DEC_SUCCESS != JxlDecoderImageOutBufferSize(dec.get(), &format, &bufferSize)) { cairo_surface_destroy(cairoSurface); return std::unexpected("loading jxl: JxlDecoderImageOutBufferSize failed"); } if (bufferSize != OUTPUTSIZE) { cairo_surface_destroy(cairoSurface); return std::unexpected("loading jxl: invalid output size"); } if (JXL_DEC_SUCCESS != JxlDecoderSetImageOutBuffer(dec.get(), &format, CAIRODATA, bufferSize)) { cairo_surface_destroy(cairoSurface); return std::unexpected("loading jxl: JxlDecoderSetImageOutBuffer failed"); } } else if (status == JXL_DEC_FULL_IMAGE) { for (size_t i = 0; i < OUTPUTSIZE - 2; i += format.num_channels) { std::swap(CAIRODATA[i + 0], CAIRODATA[i + 2]); } cairo_surface_mark_dirty(cairoSurface); cairo_surface_set_mime_data(cairoSurface, "image/jxl", bytes.data(), bytes.size(), nullptr, nullptr); return cairoSurface; } } return nullptr; } hyprwm-hyprgraphics-8f1bec6/src/image/formats/JpegXL.hpp000066400000000000000000000002741511007052000234210ustar00rootroot00000000000000#pragma once #include #include #include namespace JXL { std::expected createSurfaceFromJXL(const std::string&); }; hyprwm-hyprgraphics-8f1bec6/src/image/formats/Png.cpp000066400000000000000000000104071511007052000230060ustar00rootroot00000000000000#include "Png.hpp" #include #include #include #include #include #include #include #include using namespace Hyprutils::Utils; static std::expected loadPNG(png_structp, png_infop); std::expected PNG::createSurfaceFromPNG(const std::string& path) { if (!std::filesystem::exists(path)) return std::unexpected("loading png: file doesn't exist"); FILE* fp = fopen(path.c_str(), "rb"); if (!fp) return std::unexpected("loading png: couldn't open file"); png_structp png = png_create_read_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr); png_infop info = png_create_info_struct(png); if (!png || !info) return std::unexpected("loading png: couldn't init libpng"); CScopeGuard x([&png, &info, fp] { png_destroy_read_struct(&png, &info, nullptr); fclose(fp); }); if (setjmp(png_jmpbuf(png))) return std::unexpected("loading png: couldn't setjmp"); png_init_io(png, fp); return loadPNG(png, info); } struct SReadState { const std::span data; size_t offset; }; static void customReadFunction(png_structp png, png_bytep data, png_size_t length) { SReadState* state = static_cast(png_get_io_ptr(png)); if (state->offset + length > state->data.size()) { png_error(png, "read error"); return; } memcpy(data, state->data.data() + state->offset, length); state->offset += length; } std::expected PNG::createSurfaceFromPNG(const std::span data) { png_structp png = png_create_read_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr); png_infop info = png_create_info_struct(png); if (!png || !info) return std::unexpected("loading png: couldn't init libpng"); CScopeGuard x([&png, &info] { png_destroy_read_struct(&png, &info, nullptr); }); if (setjmp(png_jmpbuf(png))) return std::unexpected("loading png: couldn't setjmp"); SReadState readState = {.data = data, .offset = 0}; png_set_read_fn(png, &readState, customReadFunction); png_set_sig_bytes(png, 0); return loadPNG(png, info); } static std::expected loadPNG(png_structp png, png_infop info) { png_read_info(png, info); const size_t W = png_get_image_width(png, info); const size_t H = png_get_image_height(png, info); const auto COLOR_TYPE = png_get_color_type(png, info); const auto BPP = png_get_bit_depth(png, info); if (BPP == 16) png_set_strip_16(png); if (COLOR_TYPE == PNG_COLOR_TYPE_PALETTE) png_set_palette_to_rgb(png); if (COLOR_TYPE == PNG_COLOR_TYPE_GRAY && BPP < 8) png_set_expand_gray_1_2_4_to_8(png); if (COLOR_TYPE == PNG_COLOR_TYPE_GRAY || COLOR_TYPE == PNG_COLOR_TYPE_GRAY_ALPHA) png_set_gray_to_rgb(png); if (png_get_valid(png, info, PNG_INFO_tRNS)) png_set_tRNS_to_alpha(png); if (COLOR_TYPE == PNG_COLOR_TYPE_RGB || COLOR_TYPE == PNG_COLOR_TYPE_GRAY || COLOR_TYPE == PNG_COLOR_TYPE_PALETTE) png_set_filler(png, 0xFF, PNG_FILLER_AFTER); png_read_update_info(png, info); std::vector rowPointers; rowPointers.resize(H); std::vector rawData; rawData.resize(W * H * 4); for (size_t y = 0; y < H; y++) { rowPointers[y] = rawData.data() + (y * W * 4); } png_read_image(png, rowPointers.data()); for (size_t i = 0; i < W * H * 4; i += 4) { uint8_t r = rawData[i + 0]; uint8_t g = rawData[i + 1]; uint8_t b = rawData[i + 2]; uint8_t a = rawData[i + 3]; r *= ((float)a) / 255.F; g *= ((float)a) / 255.F; b *= ((float)a) / 255.F; *(uint32_t*)&rawData[i] = (a << 24) | (r << 16) | (g << 8) | b; } auto CAIROSURFACE = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, W, H); if (!CAIROSURFACE) return std::unexpected("loading png: cairo failed"); memcpy(cairo_image_surface_get_data(CAIROSURFACE), rawData.data(), rawData.size()); cairo_surface_mark_dirty(CAIROSURFACE); return CAIROSURFACE; } hyprwm-hyprgraphics-8f1bec6/src/image/formats/Png.hpp000066400000000000000000000005271511007052000230150ustar00rootroot00000000000000#pragma once #include #include #include #include #include #include namespace PNG { std::expected createSurfaceFromPNG(const std::string&); std::expected createSurfaceFromPNG(const std::span); }; hyprwm-hyprgraphics-8f1bec6/src/image/formats/Svg.cpp000066400000000000000000000036441511007052000230260ustar00rootroot00000000000000#include "Svg.hpp" #include #include #include #include #include using namespace Hyprutils::Utils; using namespace Hyprutils::Math; using namespace Hyprutils::String; static std::optional readFileAsString(const std::string& path) { std::error_code ec; if (!std::filesystem::exists(path, ec) || ec) return std::nullopt; std::ifstream file(path); if (!file.good()) return std::nullopt; return trim(std::string((std::istreambuf_iterator(file)), (std::istreambuf_iterator()))); } std::expected SVG::createSurfaceFromSVG(const std::string& path, const Vector2D& size) { if (!std::filesystem::exists(path)) return std::unexpected("loading svg: file doesn't exist"); if (size.x < 1 || size.y < 1) return std::unexpected("loading svg: invalid size"); auto cairoSurface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, size.x, size.y); const auto PCAIRO = cairo_create(cairoSurface); cairo_save(PCAIRO); cairo_set_operator(PCAIRO, CAIRO_OPERATOR_CLEAR); cairo_paint(PCAIRO); cairo_restore(PCAIRO); GError* error = nullptr; auto file = readFileAsString(path); if (!file) return std::unexpected("loading png: file doesn't exist / inaccessible"); RsvgHandle* handle = rsvg_handle_new_from_data((unsigned char*)file->data(), file->size(), &error); if (!handle) return std::unexpected("loading svg: rsvg failed to read data"); RsvgRectangle rect = {0, 0, (double)size.x, (double)size.y}; if (!rsvg_handle_render_document(handle, PCAIRO, &rect, &error)) return std::unexpected("loading svg: rsvg failed to render"); // done cairo_surface_flush(cairoSurface); cairo_destroy(PCAIRO); g_object_unref(handle); return cairoSurface; }hyprwm-hyprgraphics-8f1bec6/src/image/formats/Svg.hpp000066400000000000000000000004331511007052000230240ustar00rootroot00000000000000#pragma once #include #include #include #include #include namespace SVG { std::expected createSurfaceFromSVG(const std::string&, const Hyprutils::Math::Vector2D& size); }; hyprwm-hyprgraphics-8f1bec6/src/image/formats/Webp.cpp000066400000000000000000000047331511007052000231640ustar00rootroot00000000000000#include "Webp.hpp" #include #include #include #include #include std::expected WEBP::createSurfaceFromWEBP(const std::string& path) { if (!std::filesystem::exists(path)) return std::unexpected("loading webp: file doesn't exist"); std::ifstream file(path, std::ios::binary | std::ios::ate); file.exceptions(std::ifstream::failbit | std::ifstream::badbit | std::ifstream::eofbit); std::vector bytes(file.tellg()); file.seekg(0); file.read(reinterpret_cast(bytes.data()), bytes.size()); if (bytes[0] != 'R' || bytes[1] != 'I' || bytes[2] != 'F' || bytes[3] != 'F') return std::unexpected("loading webp: invalid magic bytes"); // now the WebP is in the memory WebPDecoderConfig config; if (!WebPInitDecoderConfig(&config)) return std::unexpected("loading webp: WebPInitDecoderConfig failed"); if (WebPGetFeatures(bytes.data(), bytes.size(), &config.input) != VP8_STATUS_OK) return std::unexpected("loading webp: file is not valid webp"); const auto HEIGHT = config.input.height; const auto WIDTH = config.input.width; auto cairoSurface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, WIDTH, HEIGHT); if (cairo_surface_status(cairoSurface) != CAIRO_STATUS_SUCCESS) { cairo_surface_destroy(cairoSurface); return std::unexpected("loading webp: cairo failed"); } #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ config.output.colorspace = MODE_bgrA; #else config.output.colorspace = MODE_Argb; #endif const auto CAIRODATA = cairo_image_surface_get_data(cairoSurface); const auto CAIROSTRIDE = cairo_image_surface_get_stride(cairoSurface); config.options.no_fancy_upsampling = 1; config.output.u.RGBA.rgba = CAIRODATA; config.output.u.RGBA.stride = CAIROSTRIDE; config.output.u.RGBA.size = static_cast(CAIROSTRIDE * HEIGHT); config.output.is_external_memory = 1; config.output.width = WIDTH; config.output.height = HEIGHT; if (WebPDecode(bytes.data(), bytes.size(), &config) != VP8_STATUS_OK) return std::unexpected("loading webp: webp decode failed"); cairo_surface_mark_dirty(cairoSurface); cairo_surface_set_mime_data(cairoSurface, "image/webp", bytes.data(), bytes.size(), nullptr, nullptr); WebPFreeDecBuffer(&config.output); return cairoSurface; } hyprwm-hyprgraphics-8f1bec6/src/image/formats/Webp.hpp000066400000000000000000000002761511007052000231670ustar00rootroot00000000000000#pragma once #include #include #include namespace WEBP { std::expected createSurfaceFromWEBP(const std::string&); }; hyprwm-hyprgraphics-8f1bec6/src/resource/000077500000000000000000000000001511007052000206465ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/src/resource/AsyncResourceGatherer.cpp000066400000000000000000000045431511007052000256270ustar00rootroot00000000000000#include #include "resources/AsyncResource.hpp" using namespace Hyprgraphics; CAsyncResourceGatherer::CAsyncResourceGatherer() { m_gatherThread = std::thread([this]() { asyncAssetSpinLock(); }); } CAsyncResourceGatherer::~CAsyncResourceGatherer() { m_asyncLoopState.exit = true; wakeUpMainThread(); if (m_gatherThread.joinable()) m_gatherThread.join(); } void CAsyncResourceGatherer::wakeUpMainThread() { m_asyncLoopState.needsToProcess = true; m_asyncLoopState.requestsCV.notify_all(); } void CAsyncResourceGatherer::enqueue(Hyprutils::Memory::CAtomicSharedPointer resource) { { std::lock_guard lg(m_targetsToLoadMutex); m_targetsToLoad.emplace_back(resource); } wakeUpMainThread(); } void CAsyncResourceGatherer::await(Hyprutils::Memory::CAtomicSharedPointer resource) { resource->m_impl->awaitingCv = Hyprutils::Memory::makeUnique(); std::unique_lock lk(resource->m_impl->awaitingMtx); resource->m_impl->awaitingCv->wait(lk, [&resource] { return resource->m_impl->awaitingEvent; }); resource->m_impl->awaitingCv.reset(); } void CAsyncResourceGatherer::asyncAssetSpinLock() { while (!m_asyncLoopState.exit) { std::unique_lock lk(m_asyncLoopState.requestMutex); if (!m_asyncLoopState.needsToProcess) // avoid a lock if a thread managed to request something already since we .unlock()ed m_asyncLoopState.requestsCV.wait_for(lk, std::chrono::seconds(5), [this] { return m_asyncLoopState.needsToProcess; }); // wait for events if (m_asyncLoopState.exit) break; m_asyncLoopState.needsToProcess = false; lk.unlock(); m_targetsToLoadMutex.lock(); if (m_targetsToLoad.empty()) { m_targetsToLoadMutex.unlock(); continue; } auto requests = m_targetsToLoad; m_targetsToLoad.clear(); m_targetsToLoadMutex.unlock(); // process requests for (auto& r : requests) { r->render(); if (r->m_impl->awaitingCv) { r->m_impl->awaitingEvent = true; r->m_impl->awaitingCv->notify_all(); } r->m_ready = true; r->m_events.finished.emit(); } } }hyprwm-hyprgraphics-8f1bec6/src/resource/resources/000077500000000000000000000000001511007052000226605ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/src/resource/resources/AsyncResource.cpp000066400000000000000000000002651511007052000261540ustar00rootroot00000000000000#include "AsyncResource.hpp" using namespace Hyprgraphics; using namespace Hyprutils::Memory; IAsyncResource::IAsyncResource() : m_impl(makeUnique()) { ; }hyprwm-hyprgraphics-8f1bec6/src/resource/resources/AsyncResource.hpp000066400000000000000000000006271511007052000261630ustar00rootroot00000000000000#include #include namespace Hyprgraphics { struct SAsyncResourceImpl { Hyprutils::Memory::CUniquePointer awaitingCv; std::mutex awaitingMtx; bool awaitingEvent = false; }; }hyprwm-hyprgraphics-8f1bec6/src/resource/resources/ImageResource.cpp000066400000000000000000000014261511007052000261210ustar00rootroot00000000000000#include #include #include #include #include #include using namespace Hyprgraphics; using namespace Hyprutils::Memory; CImageResource::CImageResource(const std::string& path) : m_path(path) { ; } CImageResource::CImageResource(const std::string& svg, const Hyprutils::Math::Vector2D& size) : m_path(svg), m_svgSize(size) { ; } void CImageResource::render() { auto image = CImage(m_path, m_svgSize); m_asset.cairoSurface = image.cairoSurface(); m_asset.pixelSize = m_asset.cairoSurface && m_asset.cairoSurface->cairo() ? m_asset.cairoSurface->size() : Hyprutils::Math::Vector2D{}; } hyprwm-hyprgraphics-8f1bec6/src/resource/resources/StaticImageResource.cpp000066400000000000000000000012601511007052000272650ustar00rootroot00000000000000#include #include #include #include #include using namespace Hyprgraphics; using namespace Hyprutils::Memory; CStaticImageResource::CStaticImageResource(const std::span data, eImageFormat format) : m_data(data), m_format(format) { ; } void CStaticImageResource::render() { auto image = CImage(m_data, m_format); m_asset.cairoSurface = image.cairoSurface(); m_asset.pixelSize = m_asset.cairoSurface && m_asset.cairoSurface->cairo() ? m_asset.cairoSurface->size() : Hyprutils::Math::Vector2D{}; } hyprwm-hyprgraphics-8f1bec6/src/resource/resources/TextResource.cpp000066400000000000000000000073761511007052000260350ustar00rootroot00000000000000#include #include #include #include #include using namespace Hyprgraphics; using namespace Hyprutils::Memory; CTextResource::CTextResource(CTextResource::STextResourceData&& data) : m_data(std::move(data)) { ; } void CTextResource::render() { auto CAIROSURFACE = makeUnique(cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1, 1 /* dummy value */)); auto CAIRO = cairo_create(CAIROSURFACE->cairo()); PangoLayout* layout = pango_cairo_create_layout(CAIRO); PangoFontDescription* fontDesc = pango_font_description_from_string(m_data.font.c_str()); pango_font_description_set_size(fontDesc, m_data.fontSize * PANGO_SCALE); pango_layout_set_font_description(layout, fontDesc); pango_font_description_free(fontDesc); cairo_font_options_t* options = cairo_font_options_create(); cairo_font_options_set_antialias(options, m_data.antialias); cairo_font_options_set_hint_style(options, m_data.hintStyle); pango_cairo_context_set_font_options(pango_layout_get_context(layout), options); cairo_font_options_destroy(options); PangoAlignment pangoAlign = PANGO_ALIGN_LEFT; switch (m_data.align) { case TEXT_ALIGN_LEFT: break; case TEXT_ALIGN_CENTER: pangoAlign = PANGO_ALIGN_CENTER; break; case TEXT_ALIGN_RIGHT: pangoAlign = PANGO_ALIGN_RIGHT; break; default: break; } pango_layout_set_alignment(layout, pangoAlign); PangoAttrList* attrList = nullptr; GError* gError = nullptr; char* buf = nullptr; if (pango_parse_markup(m_data.text.c_str(), -1, 0, &attrList, &buf, nullptr, &gError)) pango_layout_set_text(layout, buf, -1); else { g_error_free(gError); pango_layout_set_text(layout, m_data.text.c_str(), -1); } if (!attrList) attrList = pango_attr_list_new(); if (buf) free(buf); pango_attr_list_insert(attrList, pango_attr_scale_new(1)); pango_layout_set_attributes(layout, attrList); pango_attr_list_unref(attrList); PangoRectangle ink, logical; pango_layout_get_pixel_extents(layout, &ink, &logical); if (m_data.maxSize) { if (m_data.ellipsize) pango_layout_set_ellipsize(layout, PANGO_ELLIPSIZE_END); if (m_data.maxSize->x >= 0) pango_layout_set_width(layout, std::min(logical.width * PANGO_SCALE, sc(m_data.maxSize->x * PANGO_SCALE))); if (m_data.maxSize->y >= 0) pango_layout_set_height(layout, std::min(logical.height * PANGO_SCALE, sc(m_data.maxSize->y * PANGO_SCALE))); if (m_data.wrap) pango_layout_set_wrap(layout, PANGO_WRAP_WORD_CHAR); pango_layout_get_pixel_extents(layout, &ink, &logical); } pango_layout_get_pixel_extents(layout, &ink, &logical); // TODO: avoid this? cairo_destroy(CAIRO); CAIROSURFACE.reset(); m_asset.cairoSurface = makeShared(cairo_image_surface_create(CAIRO_FORMAT_ARGB32, logical.width, logical.height)); CAIRO = cairo_create(m_asset.cairoSurface->cairo()); // clear the pixmap cairo_save(CAIRO); cairo_set_operator(CAIRO, CAIRO_OPERATOR_CLEAR); cairo_paint(CAIRO); cairo_restore(CAIRO); // render the thing const auto RGB = m_data.color.asRgb(); cairo_set_source_rgba(CAIRO, RGB.r, RGB.g, RGB.b, 1.F); cairo_move_to(CAIRO, -logical.x, -logical.y); pango_cairo_show_layout(CAIRO, layout); g_object_unref(layout); cairo_surface_flush(m_asset.cairoSurface->cairo()); m_asset.pixelSize = {logical.width, logical.height}; cairo_destroy(CAIRO); }hyprwm-hyprgraphics-8f1bec6/tests/000077500000000000000000000000001511007052000173725ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/tests/arg.cpp000066400000000000000000000105241511007052000206510ustar00rootroot00000000000000#include #include #include #include #include #include #include #include #include #include #include #include #include "shared.hpp" using namespace Hyprutils::Memory; using namespace Hyprutils::Math; using namespace Hyprgraphics; #define UP CUniquePointer static UP g_asyncResourceGatherer; static struct { std::mutex wakeupMutex; std::condition_variable wakeup; bool exit = false; bool needsToProcess = false; int loadedAssets = 0; std::mutex resourcesMutex; std::vector> resources; } state; // static bool renderText(const std::string& text, Vector2D max = {}) { // this stinks a bit but it's due to our ASP impl. auto resource = makeAtomicShared(CTextResource::STextResourceData{.text = text, .fontSize = 72, .maxSize = max.x == 0 ? std::nullopt : std::optional(max)}); CAtomicSharedPointer resourceGeneric(resource); g_asyncResourceGatherer->enqueue(resourceGeneric); state.resourcesMutex.lock(); state.resources.emplace_back(std::move(resourceGeneric)); state.resourcesMutex.unlock(); resource->m_events.finished.listenStatic([]() { state.needsToProcess = true; state.wakeup.notify_all(); }); std::println("Enqueued \"{}\" successfully.", text); return true; } static bool renderImage(const std::string& path) { // this stinks a bit but it's due to our ASP impl. auto resource = makeAtomicShared(path); CAtomicSharedPointer resourceGeneric(resource); g_asyncResourceGatherer->enqueue(resourceGeneric); state.resourcesMutex.lock(); state.resources.emplace_back(std::move(resourceGeneric)); state.resourcesMutex.unlock(); resource->m_events.finished.listenStatic([]() { state.needsToProcess = true; state.wakeup.notify_all(); }); std::println("Enqueued \"{}\" successfully.", path); return true; } int main(int argc, char** argv, char** envp) { int ret = 0; g_asyncResourceGatherer = makeUnique(); EXPECT(renderText("Hello World"), true); EXPECT(renderText("Test markup"), true); EXPECT(renderText("Test ellipsis!!!!!", {512, 190}), true); EXPECT(renderImage("./resource/images/hyprland.png"), true); while (!state.exit) { std::unique_lock lk(state.wakeupMutex); if (!state.needsToProcess) // avoid a lock if a thread managed to request something already since we .unlock()ed state.wakeup.wait_for(lk, std::chrono::seconds(5), [] { return state.needsToProcess; }); // wait for events if (state.exit) break; state.needsToProcess = false; state.resourcesMutex.lock(); const bool SHOULD_EXIT = std::ranges::all_of(state.resources, [](const auto& e) { return !!e->m_ready; }); state.resourcesMutex.unlock(); if (SHOULD_EXIT) break; lk.unlock(); } // all assets should be done, let's render them size_t idx = 0; for (const auto& r : state.resources) { const auto TEST_DIR = std::filesystem::current_path().string() + "/test_output"; // try to write it for inspection if (!std::filesystem::exists(TEST_DIR)) std::filesystem::create_directory(TEST_DIR); std::string name = std::format("render-arg-{}", idx); EXPECT(!!r->m_asset.cairoSurface->cairo(), true); //NOLINTNEXTLINE if (!r->m_asset.cairoSurface->cairo()) continue; EXPECT(cairo_surface_write_to_png(r->m_asset.cairoSurface->cairo(), (TEST_DIR + "/" + name + ".png").c_str()), CAIRO_STATUS_SUCCESS); idx++; } g_asyncResourceGatherer.reset(); return ret; } hyprwm-hyprgraphics-8f1bec6/tests/image.cpp000066400000000000000000000063141511007052000211640ustar00rootroot00000000000000#include #include #include #include #include #include #include #include "shared.hpp" using namespace Hyprgraphics; static bool tryLoadImageFromFile(const std::string& path) { auto image = path.ends_with("svg") ? CImage(path, {512, 512}) : CImage(path); if (!image.success()) { std::println("Failed to load {}: {}", path, image.getError()); return false; } std::println("Loaded {} successfully: Image is {}x{} of type {}", path, image.cairoSurface()->size().x, image.cairoSurface()->size().y, image.getMime()); const auto TEST_DIR = std::filesystem::current_path().string() + "/test_output"; // try to write it for inspection if (!std::filesystem::exists(TEST_DIR)) std::filesystem::create_directory(TEST_DIR); std::string name = image.getMime(); std::ranges::replace(name, '/', '_'); //NOLINTNEXTLINE return cairo_surface_write_to_png(image.cairoSurface()->cairo(), (TEST_DIR + "/" + name + ".png").c_str()) == CAIRO_STATUS_SUCCESS; } static bool tryLoadImageFromBuffer(const std::span& data, eImageFormat format) { auto image = CImage(data, format); if (!image.success()) { std::println("Failed to load embedded image: {}", image.getError()); return false; } std::println("Loaded embedded Image successfully: Image is {}x{} of type {}", image.cairoSurface()->size().x, image.cairoSurface()->size().y, image.getMime()); const auto TEST_DIR = std::filesystem::current_path().string() + "/test_output"; // try to write it for inspection if (!std::filesystem::exists(TEST_DIR)) std::filesystem::create_directory(TEST_DIR); std::string name = image.getMime() + "_embedded"; std::ranges::replace(name, '/', '_'); //NOLINTNEXTLINE return cairo_surface_write_to_png(image.cairoSurface()->cairo(), (TEST_DIR + "/" + name + ".png").c_str()) == CAIRO_STATUS_SUCCESS; } static std::vector getImageBuffer(const std::string& path) { std::vector buffer; std::ifstream file(path, std::ios::binary | std::ios::ate); std::streamsize size = file.tellg(); file.seekg(0, std::ios::beg); buffer.resize(size); file.read(reinterpret_cast(buffer.data()), size); return buffer; } int main(int argc, char** argv, char** envp) { int ret = 0; for (auto& file : std::filesystem::directory_iterator("./resource/images/")) { if (!file.is_regular_file()) continue; auto expectation = true; #ifndef JXL_FOUND if (file.path().filename() == "hyprland.jxl") expectation = false; #endif #ifndef HEIF_FOUND if (file.path().filename() == "hyprland.avif") expectation = false; #endif EXPECT(tryLoadImageFromFile(file.path()), expectation); } auto pngBuffer = getImageBuffer("./resource/images/hyprland.png"); EXPECT(tryLoadImageFromBuffer(pngBuffer, Hyprgraphics::IMAGE_FORMAT_PNG), true); #ifdef HEIF_FOUND auto avifBuffer = getImageBuffer("./resource/images/hyprland.avif"); EXPECT(tryLoadImageFromBuffer(avifBuffer, Hyprgraphics::IMAGE_FORMAT_AVIF), true); #endif return ret; } hyprwm-hyprgraphics-8f1bec6/tests/resource/000077500000000000000000000000001511007052000212215ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/tests/resource/images/000077500000000000000000000000001511007052000224665ustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/tests/resource/images/hyprland.avif000066400000000000000000000555551511007052000251750ustar00rootroot00000000000000 ftypavifavifmif1miafMA1Ameta(hdlrpictlibavifpitm,ilocD<;2Biinfinfeav01Colorinfeav01Alphairefauxliprpipcoispepixi av1C0colrnclxpixi av1C8auxCurn:mpeg:mpegB:cicp:systems:auxiliary:alphaipmaYmdat .T2vWQEw4JUV|( A{{ Cرx4vLfu+G P,yzyd;cEw}] È )[4gsLm A:[r,4ͪu]-n}N-K䝘Q=G5aE5&e!=}i4~Qa!,J/.y3ְ𕡐T_܀Hyzħvꙡ|[gLYFN] OUn2Ň<f x-j,I| &ʫR!H3Gsh:d/8&EqhefƧنFNLB9CCwr+F"ugx GDmo.ƨ *jN3$Dm ߹VeUiO^MG DOn>grZ7EJ.Dos1زD \ZӬ0n|2=l M a OSc쵭`6 ',n%t8HZ͔nˉu 2^RM'.0]R]>dZi2wSFίo٫Uͅ6A;]:>ֵ\UBۑzE'fZI#ozuRO[zh@ve+{»~(55JApi2'4 $Z{vZu^A`ۆ7"! .;wn7jE5Ql2H [>f/+mi2άPGEy[mM.!s"5X-H҇wAeR|rޔq֮AE`L9lEk0*x e3(C`%;[Xv w>p0LB $,˻28{%EH^&ZhMU_wILc544旟U[emzNi bHoSp߿S*ð_x":*B&.C޼K'1[mrā%DY祆^Ik5 .hw($Q"?8\k 4)[Z%٠$ےs氄rcĄU1USC$V_ vO 5ŷbWR9|A[HJXL,;T?9sMBu󚌁6w2k^gYή|oқbטѳ (ٕ8ozk6;VF|1sCu7{u FmRTݓ)'iUۤhBA]T]*1&TpiB0iv/WXwS#YCt:oƯ%{*hp{'`].o E~xV&GOc3vh3IDU=ޤBSA'; RM4شefӈ<sy2UDZo/;>--EwÔyb] v`m,]Ǒ %U g/T A7˫_+t=D##Ji >佑܊Ic1rlBNo/nPf!? ly_f:`zs)z /8⩘`Wg1"|М&1 x 4Qma59:ҔJkn= fCg)`}PcفXC$m)Gr-RXeaVfbS@|\mIUDv&']D5ѓ ~RY?za歲E/"&@?NFeR~e޶'Ft)nLi,CA=o aq١d+Xsv?D==R9Ƣ e9˹ԯ;睧B֌yêqZ0gwə]qcTс2l2d7#))4 )+Ȳ^ek1g=~)BW2װ/`qö.@0C^GA D8=M2zaϞw}vq-/CNېEѣh~gA<ugpCzk53HX471)*wDdB?UM$ژ5p _R؎ʊ-&-[SQnPSF RjKK\mמȸ)9egzVHKX+8F#c|X7xl)VB^Zj deZnN₈cZ=J2E٨\ұQ̄_<%@TuˌmoJu}4Sp"R„M)wQ(E֍d=Y) wֽ7Z:1f?6N˂Y Q7VdmKgGkE2Us{PB1J\*sbej>}=>6d:8Q/!%ac zv.=m1nH1%║[D#1K N9̢fw7?S&(o͡<jY/~F>@;B 6wy=+MNmW 48n|"@ɟ? iw|Ѧ7# 0/)(tW.Ҙ$kNSzmI?{yEv{BoH2vGGVY5BJb8-q4+'2mDQo.JG#{ ʽW]4T+{HN7y*ف"܋f+7^fEw>z+xPȐ$0q+)[Xqu@gT$s06\[\,^j]v1?eVɻ>tZXIa XP 0]-Y ɗP#@CN|vQ.3~%*GW),DVc9K`Ǐy(Zz^l+\hGCXG6p^SbѼwZq=(^_Tn(H @cPj0ѐI;qZGրlC;~uӖxlgHOS`:,W; :bƖ󙮼ɠej.6Φ9w$f6Oϝ9(➥Y7Gwź!UU״,Ui  1o5fiPlaPia hFfդNn˙wpe |U$1)v 6V~ b蔂|uMAsQvܯb= He `a!69>p-ZifWhAS,j* $?J]fȻqiU5@W² .aB4NjΆsN#^Ұa]@@Y7(3r"^FzGS02C:D'7r @'8ʔtzob1v9l[4RQԷaպidxÆeA&1Wytbr'$Xz#ap&4L[:orT:5{rx|B;'E.,3גdks̸3͵IfVbXjk>52GˢOJ䪻 gbZ>9y`lhjz 5oi4?8iyHHEfǒYye273)-*3f?$raO]nȼ;ģOU[ƁAfF tx4kv/[<ҦD=ek /רyaͭWAtj})s/<K:~80%?"[:Q应vTe84;xW6ĥ#^C2ono#,&8.-Y:.f|fyu.o=(3z2Ɲ(2~n+-[^Ь z,\w?0[k.ovOR"(\UozPrW5ǜL2tT}XǕfc$n1ҥBw6`-BiFN@c9" ښO,0-A# z,۷=kD0F>70&J=t'˜Wҗȩ35x`s DyܓQW"-@Zftf<R5tuEy܎5 wzNv{dm?p _r`L<ptL"݋N9uRlJYNR}&{cPXQJ;_wWL#p^ hfqlR(??C=ij1Gaiwߨ6lWnHлAt V>Ii?qf#@ Z}<>az< S'8eE JXѱwU,jگ(+ॸP~.0jˇnw&V6aѩr*Z."rAKr>bM"CAݟâ gBM_Ta:>PCA"Ivyeinj+.߮ndΌK̼ot kF&BWF7skWT[{(G} fCS"Ξi1SEهm.9:A^WiY+SI&Y/xvMȣ 4378 hU" 󺳵14%eRpb=d+Ul,_lu-7_'r PyG4KU_G!0M2/g}W%&d)ڭc$k.u?"nhHSmy6ȕkdpGK wJgLx&.Jߟ=u"BMcLɡU::u%a}m`ȯ]IoݬsUR(jTZ'@jTTqZ aZԛo9zn2*?aL?&uO4z&Y+j:K%4G×A?98Ju R0  4jqiDZlaa42v ÖO*oKu <4  nxl'2WOC6GOKY7KpG@3H1mpFAe{@#:~kH @Zzy*{8^`HNh\9P j'F`o`B!J$}3ᅕPNܚ.CWϺ}Qtݡ[NG60);'_sa/Ix*B!+0ͫSQ!Mѳ5Γ0/.D'oZ*}4Ȥ.74',3NU/!-Pqx]PAB- E;^&KI߮U5 ~V̷\!"l7 pjู$4$Q37TH?r,5yfj]+0$jҌcA>lV=_)@cԫ|9p?j˩ Ur]&>]m8Fz>EP5fH,j?tԃ9X[)rL1&F&#C6c>9oFs 48oȈC#5C`PKL!㱧9Ộ;Rٗ) f .ҞvZ%[H(Dz(ۉ?q20/ө~Ga};qNafΫftބe 8'Q֋4IT{sua:ڏv5\ yl ` 7 peWlʝ߷>ԋҵzСG1k1rJć߱/݄ m;P|=P^+]ЖIQo~RN7QȃW,A,B蘯YBEzY[{HJqr¥y5B(B~'TF+CE&. 1y\UZL$lGsviP[K/v#%We :8PrmafZES)9H0}VU~r)vŽѣWo-7{zD)DrVEպv-TiPbc~t%^̾V4|^;;K 4ЛKl. bD1mu\\c -.sctcA#6f¹b/WaRÓ)pN.Q_ Y.+1 CgTwǹ٬>p:Lhգeb0dћKs q6|X~:,>/ϰ;˙Xw|c8uޱ䚌($(ؘcV`уWkחNC8m8l%ח =WQU5 9*( >_18xz!%_,@1dqTso% P>"+F&Oؼ[9~S#7_G o P'2`]*0{g: 舀ՊSH_N°ek-~8xZDd&HzkSWؾJg.Ze&#MwT`Fץhj+d~<;ӧR)zVKY̙i?%P,pըV`_/'i2PTS#9f#!ZDD^ߠr^mb@D1em{T|nrny^?Q0k%H-9F~5W$~p8j ߽>RHtf'd O3]IydWu}1-S;kXjDH-(v @1p/?K-BTR[o``F3 {̘ ^K_5~I1W/ j>m@/6E| .10.2<0)ە+0lNGRԴ]us}WïK/-F og6:)2xLd (n) )~̂KoΪ#cww(X ]f\ "^Kă,蠳/6C>ᤓϴ ^_{ҫ_mEΥmd[KlA&ٷ*O'T`BCTW-ku9]wmtPw\XYd`u[fC B%74k/4`aNˇy35侗G[[A[mxĜ];?~pI-vS@{i_.c:gtZ@ɽӰuC~?'ќO֒1ie/򓘑΁ă)ݳ-2e:E [-KV] $cCP/ҎOw8p:$ufOX3bi { nwusON!Kodڅ }r$$f' ZrRyj'>CTϲsP6COW/c8JvLGҿwGڧ4F$=w2,TKÊj#yuǩYsYa<ͥ3XZE!;c7~A !>3PR *O豰0ڢ&k:P 7:QYl)8e[axy.~}&d674笴9b0,%B#}T 5g6B7i'zPj-^:yؼ*3DU`,Uq cc"]VŁ}y/<]*M }t|U<ج[RT'E#<>NVGdL}DzDj>eϪsXt|S+p__6"?;?vLa̠PffXCk|˦I%MDq_'jh~;Z_%:z:1GsS0mn׀C΃qmTqz_+^mEwdavLDL=|mi 6j>ᄃ_ 3ݖlFTdޢIɤ8T]'!Ȫ8ݰAfc,mFZ-p=Ӑ3K2lG& ā* S?%)iud\Af|P3@uB?!pi0fG'u #L IGy}d eŨ@KHma&Z..(?i\tB;r`ZKcc}&Em5}nrE`eg 4 M@Q_#1["cH.yőЬvKӨ!8g@%Ube#@E{Ŷ~_ֱ?^-"&Zi PW'fHn</0PD7nOnZu1 Z|"`iY bOn"PHkNL!0Ys"1#]33P}Ćg([`HGya+]=qcϗ 0Kt{A@&9kwhBSvVCΉ ʬ2VWº_&rt\qL%K$߮Ec‹9zh(#?4V_S/iybW!M+9X_--~lD"iSOXU~z~%%'in{r .>׵' Yvm>͜ ۝T&(C*qybk Hݦ'_Kpa-qdL6 Kpx@Pptw(?z RW++rv's$|nMHʝT?w;cf"QP?92}AZ%g*?OPN@ݍ~_uTҿ@X p-̓g%H:F\kir1@8W?k%_]8`4 '_V.1-[lvQ C+s H &a;zMe[[e=o-@$z5Iʹ%P gEh}0陧|eEX_xJl$ 3/obreR'= ){rB%Yk ͉C+腉7kaQŰ4__m!HWCwM^/UmL~y:*iٌ':9q 13h%[C-T~dHpu <.@d2C*4/>u2%2WrQ9+,_(_%[8CE' 镨'@إPfI[秧}Ml5 \j~ͰIoeF&|fG>߻o?367IGxNL[=s.h(:elN +12yΥvy.K6Y,A3;!ӶC&Y~J+h.@ۃj,>0Nk^>꫞]z nld:ųhmc!(.^$jjo.{L7Q^s-#K[J)^(X4 cWKXXМQ2W]i:0qϿH'Z&*gqu66t ;ہ|v \ 8KP,_Eֆ|bdc< qНEL-ŅFՓw9lұ"t``rX

ܸLV3ez|ΗPNolէ !JkӕsJ P$sD{Nbh}M{xCPQ` srZrWr7MwrPO^;U՜s|/w/KscoK[kpbWG77^u-9_k^H}>MŪămܔɠz:XS&XU)DoРty7dEO \Vgpd^I8G{Dy+ QgKxraA\,Ӟ8gA4βؚk+kѬ[/N'ǠC}yԭ@ >^,)حpaL2I1]&0B$ün<_$-/*<=)4|\naYY;mHAcNMhx#zJ1J >s)tvOc}&sS6>=F}YlP)̊,% VGZcAYh)gn\Qw yZAFH1㎙8f84>o|u#o. tKg]A8 ~*LnXXJ$ =†62d{uaD<;X9߭딛y1%EQy87e$Mׁڹw^ v1(OLZ-v=,Vi'P̻I*}wмbb^k@,]r=NlJQF<~/4Q)mHm1|%!f'p`A&жc oBº_ B{xI^SWqA 5Lwҡ,jpRfzݚ5̈>v#. 4ToҘfAns"H^VኵЅh_YZV UZW9BHkySH'mѧ6[)z,c~Qc/C>-A(,yyQ`3En͕T|̶P f0`h$4>**.1WG0XPfƂoʕS`xGD+a,X`u{a/Np:ZAo6BBg$hRX nvᄕyf?:p=XBXu2F^s?v`Q{/[UFr!?N)3 mО4Xѩ!mBVSчc>%9ָڸ0p9pшW,Ch̨jS),Z5%0L#$` $ڷ~9)tA@e%R/wE&LF7*$Jh4>gD>ѽBpА)MxjQߴL`UT/ E. "TU6όX(4+M~i=|s^>;$\a4|̅Vo0Ȯ^XGqg8{zHtTW)h5MY6's~׬2/G*jΦ |ܡLkFҳ&Ⱦ쯌"=Ɏ$$s.p]1's˸OkLFsɑM%e݇,#Y7~ssG[qoY"ezqЯ̯Qb^ I'Z7<j3 +s-ENN{|Y >6I35,w ñw4fw/Й<Ob^=`PC)/"S8L!D22Q.[DeU|U45yԆ_Th(ylX7xH%`VZx)dwZVvY?P8 ˪*R" x[ar1Mflϣ1)C'tbji:64sߤD(Uu)?Ȍ'boP|6<4pG΂WԃD.ƍ"iΉ>6ʄp:6ZN˙}6J'MYL#kLQQʮ\z1>;"B`8C{IF4"\G}$^yLIrxԄtX4>:_HZgշAF&z~~ZC*aZ+(3<ب-%p/v9P]Z '(I,2K|$1*Ḏ7UGJݱʹ JFqEbE N,9$y2ԟt*ПZc ="i38yQt )޷^92|ReGfZ]~l,л79bUOpOz|*/رCB50՜_:!ɶJ;`-gkGw[2E6)7F4:g텗sC,\ lUc-ؘ:nC;OU"P^#9P (4%-8.qٞt%Sۅ@DIHw+7PYMb0NJS` {v0ҹפT"zK5rZ*r" B( vL^"Ɖ̹/8,3&:oI]T*ʻs]{]FՐ3Җ0(Ç'욺+w':><* Vg50Rs Bmv,LRb߂\9ݯgnGP}K7WGST'57|ک9g̞4w) e6x8l+/?:E/bd4ʖR~U,[,.kQʒ$Dԣ#k| y ` : , V?^fB]XO(q^RD2X|’* ~YJ,J":WY LqS#zB,_d,86TYBb7j~ٟ9ZC;=1-k–@95Uv#QS‘@^#҉vH#X'jPDAV*͑r2ah!ҌLG+zջN]~)>MR街9Knk}[^$Kt҇jGxY%y #z-"Z+a<:-Wv9 =HWWv&n}kF7]ɏqLKa۞E=>V?j[9")[_iɲ"mK:SJRSk` y>HB[ /F^[G+q,3ϖlk`(h=Γ+Aj|kQ{*n1m((z!L|N'/-7-ƐJu wqF63bG`rs*uD;aB*aur7Z!quIi!PntcS @ffRo4J/I;8{)q+ǶW0mjNfnWZ 59Qi4$IL7} UUS ֭5aXRQiR$S)P'$`(s+gU4PDێ) k6֑9GVf0rk?5د6nz%xK'a/M;Qq^kK=%@i%㉻OUNj 1UQLb@2n 1fG@,wTp4ְG19Ϝ 51w[6 #e,s!v{UIs B/3˴O"j*cCLZ riJ#FUJ[N Μ""9(T6$˱@/?^֫-21ni QD \Ugr-MLF⚎]͑> a˺teg#$&6hX-?p?a &7@ا)RH-\<4_MHL_&ĐiMKP!5\5_z~@\EJj/ 4鳂f")JH$BBz-vVr^$MvH,8wPau<*i`#aX__r\[b@ EL(F26u>_| ZbABG,>1s G!S w VɜǺRbYIz=hRzZ)vʨOda'u=I RгYޡ%wZIhᢍgg)1JŎi0j!0&'xG0IJ2S qcy-;~\ c{7>E&$+N\a~m6URrN-1 ?n QV=Q,38(&{ס&¿^3 T _:]YέP:y7|Dlu[L34&Ugb &o Oh\\Pӯ1Z*0»K)H0Xi]xZq@ KxUJ29̀XP:`z231#'kr[Je>J`-wGJyȾʤ;*K^j4Q.DYѰ$CHW7nؑk?gh¨ML?x2~" B4QR#{EAe3I< X q< SSu.H~οFNJG8~`>.0<66Յ՗3,_|:2v6Ow)6>6cB5$?u!)s3M HOkf?7h ×8/dyz0I̎}%|ʻX[Sd8Ô*ԇoV-S y~F:B@"GѮim Y?L9ǔĖšDglk &.gxz;#UV'Į|]/$>jךgz2= , c˒hcLߞ~-lTz{NȪ /(rdseκ84]ӷ$ݕЊ!);N@b8FUqZ.͒ġRb{XA,/Bƞ&'i}8ڕT\IH>ST :kNҜb.FXJ\w5pmO 3q3TڥRoC@K DW!?I`t,߻~ݟye=62;nl͂)0)rcw-.Ԗsz8}kMa83CA!zQ }n/5(BHwa0`'Ifri"}/6X:WL, -y YwDҭcT* CxyHBIoЧRhyprwm-hyprgraphics-8f1bec6/tests/resource/images/hyprland.jpg000066400000000000000000002441331511007052000250200ustar00rootroot00000000000000JFIFCompressed by jpeg-recompress  - " " -D*2**2*DKKt1R__2\#\E%}~p7 }@ dxݭ < aHGv:/ @Ɏ$G}} #H΂B@Ctrc}dxBAcx$2< vk3 $ 8  wX|9@o  V@n #@ЀGA:,g:@dx@}T #-tTH_@// z>BC$8  h.8 _ Ǡg #Hu@ #H. Y@_($H'U`xd @q  }25@Ѐ22 TEBp ,oHC$H>=@}d8IB@Aӱ H2"` [ |@Bp @sb JBp } $ _J$t5D  N` ]'  Mϊ $`[P zkZ @ݭP m>q>@L$ *  SPN9^@X0H=v`ck  <~@L$hH!Yp% @S@-5U(H'Sb./$ /M>1^@L$MF+NnP A @HR$P -.X H=g |$@ @$"N 0Ѱ>@` , ΁ ˸&:$H !$g耔$ Xsb|@i (H`#${n` : 8H 5@($H ]0PfeP + H o @NH$AWL$p @H^@z B@@vdZ@HNͬ0H Re@H$golo [8M @uykek$HF:H;3 @Yj@ J x&y% : Hi` /q @;H$Keb@%  @@(L$u}χHH+X @=_`bD@:6PH`΂D }lqd~A(Hf2! H4 L ohX^p}hTPH}1@ [`J$e OװL$tW'HHۀP& /$$/ % "@@ @Z*HHm<$H Hv@J ﳐ D]̂P M8I@! 3T$H9@H;@q P B^ۏp B@,u@Qe D6@L$tv˅$ = L& $2(HHʀ OV @4w?0hL$iR$SPH -H HՀ @'OfX/$ٹP$Hd Hߴɏ@[ L H U @'[>0 Asb& ձf@}1|0H 9p~i$p?@HkS A A "j'\ GpG _[ΰ$H:6Rtz`&  5HӿF+% >2H67 . @W` Z gG hXH;qd % `1$@`J$-4 M_& >/Hi $^_  GI i| @= Z#& wk@8 Y| li- # K߀ e | @ 2@HoF# A Zc)I j4` , B@4ϙ $>1& XPR'Oh1 O= (HP$W; ek& {OP<  OjH g( R@hRyO$|& 5v 1@@^T%M$nl9PF $b<@ @'c P i5?D& ݀T@?@(H>8 :B'Lo  N @whe P HGO`1& TG>Hjgh& @_I$Qc P(H4 vB@&rp& Z >A@$L;! 7 xH(Hr~y@@ |@HH-w#^& 5V@3pHHi5 ;F % /c(!  H%kB@ {6G $$00@H(=v @-ց Ph`R0kK$$  e3y@! olÎ %dsB@ؙ1u"$$=F e;?AHۯ\Iy$G`HI @ $% xo$Y  π_ ˬU!njHUa$pH wxä# I$' 56$/Ӏ h$/Ӏhok(ӀHhog* ~"f2 /c,~ fr$ H3 ?O` ̐x $0HRb Uh* @?@rIA?@yfH HYEM̀|` &n$ :U@.2A %cC<#tH_} :+T@${Í5@@INפAb \@@vC<>HҀƀ@] 4 8<4NϬO G 02H+ᅐ$ez$ A~$Jna K$ M$NP$ Zǒ&n#X M '@ya~A IθĀ&d=[PdB@ FB@ rb (H  $:6G8zy HH(A h\`o` G $: X n.TeH h|@;  }mz@ %HZ SaH @H5V0ڀ  \w~0 _@ _)rH }mQѾ||@H@5@TH=͇$ ^$ $ Z pQ!߲8@@ h@_l: ]0V`@S$Hoѽ$e$А$[$@ǘ@N]${n/$O><1>@ {3 mP@/ Ӏ  5a @w:  SH {~ @ v2 Kz` XHV ǘ Í @zm@=$p<H =Z@8 `@W~}V zn-NOH$}ˀ}lX W@NP5$ -\q9 @>o`8>H߸{> LT$>S! @ XM@b$Hр. Nݯh# @HuZ@#; ϸ@HwK HxBt:(v$Qf@:6 8_b˰_$ MM+su$HvqH[ HHeryH X*s! :6]` V8$ Vˤp$'Z@|) :,[OQ!%x $=7p @+H$V}᭪ H$}i*! @ggcjJߐ  HZZ@ KΟ<|>` @c $$}wXp|@H n?@(d HH  $ =57@@  H ްc $$@$@ A}HH @Hw HH @$ }h4@ՀH @$ -Oh#H  Mt9$$@HQHH @$ \0  @$-+  @Imj_@  H}p @  Hzp HH .Ϡ/  [|P H$@H>z:τ$$@HeqoQMS  {[Zzu55@HH=l-,XHHOut_ קWoowoϋ! 3 //8>ӣ@| le3mi fCͷ0kw @6if lnlCͶ5#CͶ&0dhbƔ!41 `3t9mM<`^9}h7 @1A  X i@@ML@cΗ2G3Aǧ KPl &P b"j/V <1M/@tlA81P _\g@vͺL@ePS@{ 4T ˀ Ɯ=`=Ũnlm #[~ ^p΁<`z @|. <&Zр;P559 뱔@1r`:POp =êYpf@F  6v iy}@@7s@@F-@sB@j!'M/ :@ }Ũ]473F @0 yҀ "'XNfϹ^@NP7s@O@d>'^jw!k˽<@tzp@CG؁À Рy: w & `'~ irhuw@A $4@koaO@] , A DW#K@O`d @Ad5pmh @= =}% |zB @M.87s4LP5@?9zUƈzPi@ofBsh!icDB @/D `A \Pa1/BsK`3o l} !C#W\ DM0@C_P{D`w7 s؁t9\ &-{qW0mlW0m@{haw{daw7{d`vz ͡5^ hp5u@k|dO\x?/ }D {C C0}@wh@\ @<j Vnx '3}Ȁi@t !X 'c M@l}@9nn9\>`T0 ?WO0f03tb75~|#C\~ 8Z@6:Hw[r@S74u_̀ˀ=:ޠv@@B np5@!+t; Ns@ 58^@zF4̀D^@6~ /W" Gxhj_Nw' ih@@F.?S"5y/{v+=7@]lٲd1<6v 'q3a;M@Sd'efl6Lѹ@6v& \@ Ʉ us⼂Sd}pl6L,Rg`)`@h8q  l>y9`;M u 6v( ],D9q`>S on@bHvjv| @9X@@gsuˍ q]P@[N"vht=  P6f;R#@'Uv?k\?@74`(շ#'Z@ z: -62P  +Bu @Pf(m@^2z R }q\RgRet9Ԁ 9@}m,s:v^@;P`c,W[kRg 5 L@4C .4 1@}m>1ٰ|bo5N ˉ@ PP@Yd y@N+Z@z9<\X| ]@ ` 5)m.:PjD:pxul>|bFg)>@LOԀy[I@[^q MH25(k *sAPyaw@f9@tnEBqeDX߈ep Y@p@[@@>} 8@@Ԁx~AhRe @ A[Ő@SgZiJ ߀c@u *"F A'g 'B^yc~PQ> |ͅLӈ,v[;΀ ;5 _W`,`|c>Ax}o]BL @@@PR!FH 02|p}|c>`cqeˁ5@8 iv 0 z~g /o=w5 x'}6=\4Co }m~8krOz Հ ez4Z ~@@@XVg3, //{: -- ΂dg@3g- H.rBR,'R@!*^b57``~x9pnS@ ./0 X2:u O/4@>!x &f ; 1@Ѐ((3m{@] 1Hti@^H l oSǀAaVg1j9@4 *@{~ Z0 :5@s@y@/.ϐ :P > @y0 :rq;Eh|5 ̚Ӷt@ eѫX`BX2u {3u o|d SO@Ǯ@YW]hQC׻_9 @ @@ {EM }.dsp @@@:>^@@ Ch| >*i@ =~5 @_8| h=l#.^no/ H!1@A"PQapq2`4B#0CRT 3b$DrsS?yi΋bŘ̌zG&eV EOYOyٽG匶Mc)Xfc`*gig8z.}voi U!dYyjۡSm̓mGyf~_ٕUߢc炾Slzf ,I;Odj={̾7JF2굞 yw1YRj&frM_]mCS̭Î#uu wsZܡIw|/eUv= Nw+jVx1v,vdzڣw|/+`hPkǝ`XuQ6$Qeپ_hM<ߪvX29k,:>6z.}vo,seJdžG,YIw|/#0e:(D@_u'FSc?ǒm]2/t5FQvX0sXt(u6z.}vo LuRif;xaݤrnO2=_]~`uQԬ:LTbJlzgr=_]~Ɔ5N+PG:9eBYڏE/el:+O n<09f:=_]~)1CT6s0U$⾨Llzg=_]~Ά5N+ssZ2=_]~)Ns+jVxaݝ1?z.}voDvF X RB.mSE$S1?dlGw|/TyA'nè`yͫ?rڏE/mVk"i?va'YGw|/+`h_T#mY4,PeKTLÀGw/T5V-4$Yr=_]nN\ۿ$Xг1[T2<]2/vjyCpW@Ǜ|ַM:#Qeپ_֘ۢc2G$I=_]nn1V,siS:;O3O+;#Se_ qMPybqV4Ty.}vf 4Xպ#C޲=>_]oYUqD_l+֚"~0Řܝ#Se_VxG5ȱ!v6u-S)c=>_^ot O(a!d@vXM3Jޕ$=Qd^Gyק~[[Xb~TsWWt)ѡ#Se_VF檲)f;xbYZWgcrw܏mOyg~[R4NX bMnjhYu[TOGyf~[SS;pij2aCLHV{)%X /]+('>fuI;<Q*ƃi{~ #MNQDO+oAkɠ9ZxHY3fWwx 6cNᕡ]N:!'pX°lzfR7JS A9jHdm8hۆ;/0HPX0sW3 I&bREbAvǴs %=t7H"vU]DN}9mkHcTE8HM;JQMmGrO Rz G.~#>ʪ.X=N2!I [s%D023+ H=H}9v̫4eT ʼn$ܞ(@QS s|ֈc%H#ub̖mnJ*'zZF;{,LmZNeDieM; ⚩evkT@=Aiiަex=BD&hRhc bnxO ꝸF ˎo_L^I6m#[ƌTp: \A 9UqL}9p(卑8M9}Y@z;{8WTE% P X>zQS':hLu咾ia'#cr{+:dJ :LjvF XXǏ,Rʑ#31]VS#`-L=A~hLe'; Èr,W,9vtu A@ՎnJƻ[DUPX*`"WP#9]fiZ)*$I Zw"^;Op54TMa|fH=E߲Z6LSd\ڏAtV6o^.f`{Ux 6sR\ٵrQB@VPU [tM3FvmS7쮬K^ON3SPQ}I6c-`!7b>qW}*n2u&81Y9w;#;(1QKNǼ$kiQm2fV fW8d 6[<D[o% ҜxGoFGJ GSEHdar;ROQRÆIN3F/HE@x$^7F 8`Ec 00rct4}ɨ4fQ +S a24ܦK&n. AeӉ]#m:j:17̒M3L#"3Rt 6esS蝍ul➝v.i;qY Rӭ4Ŀdy3SHGHaojX0qEPr[U]}ẘ*Mџ&UgElQQfhWXќ3yh[ݘ 15&ȡGɹDHјxb7%1J8#Ea^ySэd4ge{':j|*4⼕a֣{-;T*@,v((YT=F+lab1Q S1SU Q1)M;EJct9|)IU5Ju^Q'C{2#xŘmnQՇd"F$F8y1i^rR0&SuO~8Vw $`(钖=򖮙*!xn$b7nG䒦UcbF.lj޲HK omD췔,L:.U8$`vH jE }':dw_|ʜJ7CMO9TWYu:SYkw*k`2F/erTܑT:1+;CL )bB*spbYk|7أ$[!Ҕqƥ%*(<46G[0# ޲+{>oY &bTSfQ7@/U\)Fb5p\5DwD,ʼ-hfSIL7P|9̦i$lsj*"_p<;*"0$goT)?Xw:M7[8qw#,onaLR!6|IRzW bg2Jx0`[+N*0O"*zpbb+0hռ9ͥ> @:Ytt3FY P^zY؏Hls.c/hꠏF\xqƦ.Xk1hԨysdcኙ y~M7],sJ+xMO#y$nIrHz:cp],srhV 1D%2Fti.@lXpQXXAryow#yRƝQN'K:'< Sn9;#m&lϳfRʧD#߻_iy]˖}7ZIȯl\%r+&oVFl>GKk{HFŹ67yrr+(4R˖}7Z>Es$$i2ꆩGys_+AK,=c/O'p.c%s04R=}qEd']d;dzr a\BI"R TUPF[Hw\kNDd&ň_C&nFsHLR0wf =BZ|$ ,)Tyr3*Ficel-pя~Y泬D)$ 9d}*wF@:!WS) R$k2)pG.ʊ̎v~{J^EQ5Es:Xo9V z_9̺o9\Zu*x/#Q %X+  .X泬D)$ 9,D##)׉"čuu6e 1OPyFأ O1tTT} L:ąOaXC+FGΒy꾋Y4[6'£.ڬU7+FG:z7*YZ*RV*8+k~N ؠ'zb詓>뤌;+!0Tȇ}),aVuHF]#,8E9 $( *2C4sBF U*E; g91rht<9!iԏe} ),|Ϊ@`f޲:*d$,4WUH;_XhR[wI1[Rji-aGh0/hiɔoYi~G9@'7~R=9#)zjGCe*y֒] 9Hg_tqGOI3c[,dz-reCf'|֧!XseA)#RK,i޲Y z)3 g_tegkrK*DbDz뤞=I4gcePIaZsI R* EƊ,=D]]7ܓ44اֿ~'CorN-6f܀A(M,ujvͳz&s唝**fr=ÀJzy*$tF |O*ٖ]\l-fQM4Ҙv-eUF{r1A(Fr~ͩU"I?Uf5v_]C`ItiKkyXت#c⢞Ji r yU( pqb8)$7Y-8qAF*JVR籠ITQcAYs8Bǥ+)HrIRgT)ir~iiÀeqSUXH=OA*(c aYFÊYid(EiUH]5 7إ)gUl:VpGY qS¤FD6b2cv(#EOTH(裥5wC1ebўz")::;7$ƥTq&4pPL'tъ!5]L]$;/ʚR$Yx **(Um,{XXGt`Xl UqQ$6"(e@t^)º2+#0 xb\Ί$-ӫx!CE"g3]m0ŝ1IVb'~TL.XrәT|OO-;H=db6lp` 0*0ы/xkCQH[M6~ボfbY=GC-S /ZH* |O-AUq@YLGm0db6lp`6qs*x H<~m+F<~m+F<~m+F<~m+/32:)$?? ك)SPl|ûv,i&)yl .""@,._n3DU0q8l_˴VfY !/pXG*N(r{nUaARߊ̾zF!|eqEL$Qȥ]ABTtxث|~TqElyۈH**ۊܪY>=g E;KA2VP1_E(2C8dB>9jэ OViz̀ ,̅]A.D1WR#y*)'y)6iۈ`TMF[R ,Vsv\20 bXN)2yK\SNDe4(X~+2Z{lGŠl)r~/EAndjZ 5%$, |R&_DXQqM؅w+YT.%yD1 H?($&[:l]Pf.l b n51-<бWB1A,dBqMYkxb *zqdAʤ:glGGuU=Fm0A N ClSdq.N"(@愨;F*jI0P X []tF Mr"d@9 ΀ uu1>CSĴl*i6H%Ct1IL_C 2#mPq>SE(,c΍e$%ɫ#ؚCћ20ԂY YEcK CK,-QbCmQ961?~8"OpibJ ڧ±اTqIT^K,=b<,Hqʩ$}%uoՐKԯoSlXx&Oz6Vc'A3,}bD}7Hȁ7l;G:X 717l;G̕DM6&ޠ "P?dq`oRi0GAپf>߶d7(}̓}to0(oٰvϷu )b4X#|q`o2Tb xdM6ȑ0MU,@D f> ,Ax`u93}̓}eJwGA7l;g*Tj4BPʛ6lEJn1_S7l;g.D=wr~3&lfLݨ.ޖ̟lEm"a;X-P3glf׻ńb:fg:Tub8>ٷ~ϕ(j4H20U ̀x y$${"ѸuC X `1vTRm$F,{VG*TTm؏dp7A  iѡ‹F5 8 ~Op ,TX~b=^&cLBQJyC,$$Y:V*AG%J3#DF{0PI4JezޱF 2$mMh xdp*bCz0QJMFiKQq(ϚQϕNA -Z粆X Ks :3قNJerwnQ`AKFY5 w2P:p.;_J1uϽMpGgȸhp|gA$4,l]O +PF|C]U,FF#EQydy)05="Pug0._!%F2~[=Ts(E 4"BŘ "* $E2zgfAy'އ>eųFdTYT(h3a\Sz'QEEp7q\twcw,u>GV*+関5Ts6U Yɱ6 Qf\,F"2axFO3<\لR9"EQg^e4Cq>9Tb(H{Uc!ul jM-:u TJ : M!Fcl, uĤlLyX ׬ׯ6&) ʷv͔U"e_eTf3R@,]ʪhA5PlE rLS+~ Xy TlW||Q8c"U1ff:_+B 2AT;x(3/?4lE ۢ=:zAyfhf(cz9j6f3GS8cz=i+ymMTLcn$-k̔U0ƃ Αnn{C1AȅdA6ռ0ynIk 1ػŦ>[6QGm =c*O5$lu`jdQϦe!oc5E>ؾp_M.~^?t_yv>ؾ'Y" kOnǩd}s:KX|v'l]:Β/.<ػd-b̛흋OΒ/.<ɾػd-b̛흋_sZۯ?;ct|vOؾ?ztF܁#˷Q2ч |.#9b8V+{E#\CbMKf8ČheciPPNfıg$iL4K韦8Eu* sh֟ ٞKeUP6#tk_#.!u 2{T6gÁOJ8$\bQc| G0ciBI|{+6QGx½V*AZz-SOqWGO+Iu#7Em W<1Aڱ$N+20e4"[δ=N58("t~#lhAVcEEr!TTPঘF?fbĒv)ޖaCxAGPm7GbogԎTw4U&ܹ~@F(;Vf,I'kHe4"[SŒKp6wg5cw{-^dupH#,ʢZkjuy!5Sh/@wu5c0_)U[#[ӿR Ve5RA ‚Q_[$ 0=*ƖOR zؒƤ:;hAT`{DfIAffcV$Z) !hPˣPzOn,XԚwѪ< =NY%UY;+uA*j :s=l#I⓲XӴ~ARl'Siy4sdi_mj,8hW{#J5e@3xYYoe/H@",/0$[ 9u62 ՅpX lٯ;~TI#jpf1Qax Uxo?߬eYx~Tm)Ř>!"01Qp2@A`a4BPq#s CRSr3Db?' cIPȼDLĒ)Ȏ5(vw' ]5.vX)!Nd,I$k!odOkTI$gcu-S3H~.`뽿=>%KSLR,G[o6!v~ sМd$$^{~{"}%H -wV 'mrnH3jʖu{?](Ꚗuqà G"ȊqumBkna뽿=> [ڇ9Z/M KbKI 0w'ŮUMi$X VTL燀+aodOGTԳ+"ȲAetPe{_u{ ?]z[jg`bI$㺽D`A+EL!XM*CH -SP4]^{~{"}R=4"m 4k" [TaSDkj1X/ZDz;m 0w' ]TmG:SP4WFda뽿=>ndC6JVE$S)/ 0w' ZifٶF[FsWߞȟx7=vCժ|Y$0w' ;#Sj Ū|dëȱ#;jDzYhIcWC#nHv]^{~{"}]5ڗԹc[MR~&ڏuR)g<|vw8wX"G==&*;, +"6JU'uE,ڪb}ђ!T*P0`7 AjCK;(5; ƥ7radu]cgdvA$ (S9R =᚛:23+8+l [MZEwJ߃|z?hNJh>NNE + AWY5;exdYARUB|GS4gcյmU)otd~TbIZi` :E3SfVFea75I0opѺȊqu.ֱ38s`?hqo,G~pkN!7CԫһT() Tʡ@`R1Z4; tC!QEmZO{"#31ēDiQF$閖ANjgRT-O#gF`wj ū|dèL!j}p(&v}y(GpzY9A2Oȇ#BBI ^5M?f5205`$kΈK߇pk,,~͸qwv8#!cA6 #^w'ix%hfp+"SzyVVmI$./q?!oJbA?1 -u׊n~^U%4Eidy]$tk^dv}OumlkxdWCUiUqO"Fv8-YT2<=(`3cdEU`##Tm#LP5=Šf;>Rʷ^; GTAj*U ͎l~[Hp90MvG08.CzwzVg3= jjj6Gq+C;'UkMY1ē.-{\l)oZCP}fF "}jB?raӉHcgsMCJA))`y EE MFajW8;-KL/sd%Dtؐ&וaM; GTQ'j*E/sczE3SgF`Gp4~ͬ [ַ@j{Gt:Hg>{PkTר7=~dҶi'9(;c']tFWH .05n>#28PV-T &2E]KT\Š Fllȋ"20X`m]F5=ŽfW=hIQ] ޕԡ^=(ibԴMEgtU F58X }K;S̒/R,Ɇ=x@շU&6T!Zנc9WƝzyVπ4IS@,k٘'}uR\i||QcנN?-;FsSN'$#7F,35I AJij}w%N 1bYqZY ;$@߳my.k؂ { "ShdYbI z/{Ϣ9ͬaɷ&}j{뒧Is\EmW1w\(,A6j`x2tFYRܗ--) (wLڪtBG  M1;R8Ah<4bX3:vCIxQՇAN$x=Цa Ly^WSN1nujMeTx]G@hy^DFx2i*H]"<ې&t3Ӫ>Y3x8 F*܍psPzx>,onx#x,ߑ){uɬ.q3WM/8NMW Y4i͇c1O*rc ^kӪNO||GX;˱+a< 9iJY̙L!2cyhMra`q.vцCMFO2OҢce ;isAкѥoi%4 pynΤcwkiQB}:z6s#xYy,9<뤌u(091]~1ͷ?*[dФvNhכ hU?{ˢL$>c-r,QJ㼺Ӭ>7rbcu jaX~[ˎ=dm1?qK7f]M)XR1PYmj9(WS '.q'7#ywEx}r}"롍+L I9.V$Iw?~Cki b7DG{vϭ Ne[ڣULP{rA\Z|pX}MBv[#[ʣ_RUvWx$ QCSji$w=>!DCSOWCwuN;IҫQBg#&ȡTp^dwӵ<򲲺S#uEfcj? 9 Miz/EeK!EC n9'(YCFtZLѷ2ZTBǃy6i`gCD݀QjתEM"ɵ4 O ƽ5QwuLGY2A $h]ze7U56ۇI}5 zf懈r$~?$vE(kl/HeeFFT@HQKW%3eb>;4l+e|@r]5;ʨShbHcTAe(xp6edb0#D龜9ږ:N 1cx-jer~Co*I6ZXh֩6 ARlLC #rıeD r5ELьi/6^~""Fsy5,&՗IC?n "'e ھlӸKNأ|mK]@~'W_ 0#'j[n; al2(eWR1մmNخh{$ZxYv32F>itp-Wz.)(M'3h(Z(ő*SȥXb (ڝ{r?KwM9s6pEϟPjnœe54~jj[(pg~2+-Qu)š8F$GR>/"jkWy "*i jL-K ЏO4BmOtL Gq(lPE|LgDj*x#|5P $t MCO7sZHeGcYNVV hh)gKvI]inW4`֒xq8駗EsmMetUF  DGZK{85tD 6JZ;15j[;!rm4} Sgi[s{2f%ٮʡf^152wz-C+pGR!k-Vx[SڑEސ%H?;$f5N9XƇ x򱣦?[ O~տwQk6Gu'E(JS8Dh8 hyprwm-hyprgraphics-8f1bec6/tests/resource/images/hyprland.jxl000066400000000000000000002346721511007052000250440ustar00rootroot00000000000000 JXL ftypjxl jxl 9jxlc ;L(g1FćAU ~1,[=` &F , @A@̚Q,,,,,,,,,,,,,,,,,,,,,,g",,y @~,,,,,,,,,,,,,,,T,,,X u,,,@#Uـa,,4V,,,,4@,,,,,,,,<,,@A,l@,,,|@,,,|@,,",P,,,;,,,P ,,Ӧl,,,,,,,,,,,,,,,, < Be06KO{UU& K  HB$I %se9žGxCbf#]191myp*?0}LʌQX'(EG$H A $H յԪk׍QT]{DFBj/fc cc2111Ə1W*a1?!uw1ƍjYCRX9egb XcˌQ1IֶVLZ0 o, ezxh FB6ãùP}L_+0%b4/rJ=j~ޔ 2ML *< z59fp1{_T8qwI~y,zo.ΝSUi4XStO)M"vySkX*x('ڝ?i3S7sJ$԰2 om#"%8g N&jJ$+dC@,w?0rҁ$_PRN\n8wg ޭ޲DBUfzy;G7{(ҦsG\y,C) (kn>HA씔%U AzfK," ^'QGc*uԘ! *0GkX– Y̻Q3%m,䇢N]w0E {{s3]ɃSDS"D!4,\C[7]`[|I~ .ТRsI1j%@ȫ B:̓Gr|h?uL4e`2y`LLIk?='TQ911) Jĉ#fА oSrq_;AI=,mtܸ>1'| r%psc/sGtڪ^`svOI"4(g$RV3ZrV.Vo j8.tN:ï7r)99}Ln{(o!J+ rqG4yӣxk#.L>'_aR64iT1).w6[zr aBH(_=ggқ@ D(Fh_1m?P")w4dXVB.pgʙj! q[[.lHP/~+U߷= әT8?7X "#$QC1(y2 C;PcP-^}o[NI*ve0 j Zc2'6mJЧPHט ņ81w(iz[acl@fCKAXY vG ̕%<=&:/|*M}@йlɽeIMݞlwrn?s#8-q83 p7rP aAS)jhۖ2 F)<5h(] _[g7rLxզ9>=yյ> l N}%dٳ!>c9$s<)[jk!;1|;g}  |ɏ%|'C; 뷙 h+@@_v;IAe0Hk%ֻi"X(g٧0S&diw ~ dу;)N {>T.` ah\ ?du?+FUX<1D4L3'42'J#:r$ggƌI@, 3[׽' +?K$}ښtI3z6gԘ<ۇB,޳ێ@օ9c'&)7Յ}':DC'dDK@ <`Mڏ (?n"~_Cjz4I^6}qG̮Tܕ9ueGI)^[n"qBQWIܷtk7.HI7\LmL§ؙ&#"ˎ*%xG~Dm;༱E~hu9>KU}sMH~T`5caA`O2۷E^jx-P} Ȁ'\{n3s~/|4bB'¾fCWdAz<ۘzmUUXRv},#}=(#WK$*Klao4T Yac37L3_yT7ٹ ݝ c? *{s ]&7C@o4}iJqKMw溲kd&?Q + ZӟH`]_KiLom-Јznn]}Parͭ, &\KJ/Gs']]Ekd/w:?('`e1'ȹ#=HbBԹ۬mk^C5hyJ$v!r+c0`k\]癚xbu|RO꾕L>|T'p!GGx!~K'L%PKPMp99>V H1Xͩ,Ō2O׏E BZq$`4IBdD\c‚5 rcZ]O2ì;2EX*zBB8$[áuQ>pUE>2X5ϷD#CPf"rur13c-\,fz^l#Gi$4ij~;X.8v |F|iLR_s7}@,Z=6uFC[;I{+\LX.4bҿ.[32ا8վݣtXەwy`ҲY▓H. B]AȑltwHX -$'5we#nTՌ'}6 &a\c&b[nCjxdNm?)T:2DmS SmrJ;ɞbU\ɤ2W3:nwDx2mw4(,W~ja6+ܨeaGUg#tž!.QsWqXgFtEi\IpdŢV4.CLx}p|6.бý稄ׄȑ8uq4*l YTvHuuThء0BКPQ2]_?4A,V$S^N]*nѾgCa_[1-&\'3'sI}ɐgN` ^)krW:hj!b[zr•R=+7&rJ4ܮUB ?. 1ƌq|bmySQԷ6 0Bx@Z~JvjQX%hDMh_]Q. jASƆ"TH1 <0`TW ᡗ3+k"Yv8jZ: k~bWKOq pFJA;Z#rC$M`M6ꀿ4ǧl#Tyo!꿃'c^EB*~ֺ괯!;By~z52ϙJ'0/T6H*,."V~?w1vD;4wbc.vz_rJ~ƪ^U8\;]83}xJ[P4]Y.uP~1ָ1&a o Ld"30ĉdIztK4ctSuzmh2C_Vb/*C JA$I$I$I52 kAyJ@5I!I$I$0Wl@=H$I$I$iBtIN5, ީ(I$I$I$qIRӌك~II$I$Id u$Ij9M]@%L$I$I$]Idf-d!RF$I$IR?H$!9XqЗI$I$IL$I@$:Lʢƒ$I$I$飂 I$I)$I,$If$IɰB#҈J$I$IH$I)W( $q$I$I$ &I$Ed̒$I$I a$I$͂2UY/I$I|`#II$IҜEXlBrP$I$I$*$I$I[DTt2 I8$I$I42I$IR*8MTaśpyIɡYsת|dks΍<"%zf#JZ(C}ho*|{FA[t ?x}g_lK(΃mTW3ir?n\"úLqTi_Utp}cmAbyKoqk&1d6ᙓۆ q;y]1K}-9C1c 8ܮc+4҃ sF_]{ߨkH_:ˑ9k M 0q~w9+nW0ti?P& ^s͜N<:[I )"Ϊ$\׊Prҗ(A$D :E˗=8%Ƥ!M)!O,\֋L;9TmZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*TH F ܥS!1,%+p$>{>`iSnme uA9jE8WNwZү; )cc+@l(gUvȧfd5&U#Y߻ ;;: d}|&*{X sǙA|ȇtjg#A%$co1;@NokH/Qb؆)Uk,'`gw*)C Ԥξ}{ Cӭ?0uo}Zz{O.Ӕ `.ۗwsrhvEѥ29햸W!lv-(=5㮧ȓph~#WfvIbN<: ofx@  ^WF0^ pXvM $H}c ƍX$9::66*:6I5^̘1c/6*26::j<<Ц18.^ NLEz`e B@Ť~5: W 8R3|&ʴ% Yd %;>ʁV2pe̦Ic3XXR @ZNm"tc+ 'A1 C| J9d24Xf3gr~ R#tU^,yB.4dP"+9+3vι"ЭYB:!3JKc htxSȅhbV)POR'dR$GviD)@)頂 QVfUPUh1#cИ ( em˝oq8!˄@A0]5[HNW!{QHzOq1.b`yzN.]`AЈ%!0 O4VL3Ddh9![0yE]„̉( c&"Q$aKreB?( -"7vATN/J ڍ&@$#U _HƄ`J8B) A[Ll?SE:xDi%8j6-fL ڒԜ%|4; T,D2;#Մ!s: 0#7SQg5:p0 (]`^E$0 z]*b8.!#0B@hP6pKPQj0[YMH"| ; !' n~;1'DD,1FEH nfp#0MxTִYi 1F° :?0 Rf=c"5ZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*THL=Mx7L¶s忮{)273M?;l@ @{a`;Պ440fd۵!D*dG@A˪ ḽ%$39Bj!&'~x i03`|"E nӶHD )KWB&CD+_[qod6l |  w׫8Zf7.+G{2y͏twGIok\5ȋ K[6ȸ;*-e1$)~3˅IJތuYժ9h? ms2){_nzI0pj&O2f+h3G-g2Ox+ۿk "%U{l&\ >1N:߼^u9Tk._5l: \-kle)cϐ莄PF)d:< A<!%̊P}5loGosdn?(Rq@)i[];59ƈ^+R<"vQt.D,]v t;1VV1$4͐/~M@ ~aH'$oGmÖBn,Cy$}uwh:OVL ")VWwHwI'KyFϥ!Nޫ/^}1<"/sleLDXѠ 8"<=u  Ch A $H17-VNj1*^llZHClTTTllllm5Mc 8cC^ fa< eѾf"I]Q\*TDu! :͉dA@%DlSaG4HrAd5-U0HxmiUނ@j* BX;2duBql:}3Ė$N#8a6\nA]As4;(Bp(R .U   Teorմ71y_PI2vbAp Ph0+(%nV#D6PE8$uTKitC d&\GA41]ܑ cKEY(T g> ՙA <*" u|.WFIFJhdx^lS5;Beʀ]FO`:$0N1W+SXD![#2ळ߉X OHXcTc((a`+h"dޢؓN"$S$6/2`e|/X30g&}l0n݀; _@Q 稢NH+V2X,JLd@ ݴE#ʟQ9YahC oŠz,/"P> vJ#g5(W{B+bnVQ e˜Ôe?([:;;icv:T Fm#Z"V+0 B* ;Ô6M` >9va 1(Fw3f4R| 9L*Ԅq0eC8MGjs#@xr*Y(=-'/x)Ph 8 5ԬnB eR: h,$`-* &80 ˕aQ (Jr`.%E3x%!b(6*R@vϥ ٬*,`'0)L &;DTCݧ]$LW b5G(R - gtmh~] -Kq$Dy B!dMZـr~I jHȁloVtԯ*%Anozc̋L.ޏ0:ng 6Xև9 TQ;6 ʧ0mo̕hPe&Yڟ *xGVWS,F#  =|M˴y ֺGsp^Yx"b.JA uaK"1>I2Pd=f p)vQ$t(A"㻆  ؀13eb23#aƍcZ"**be] C%<,҃jh(b GF;%Ey%/ab슑$Ht=턨!6сgqVDV%V(:bEnNaߌϐ7:j>c''>^{ѾھZX$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*TH@\'$>+򍊷"&ÐmG(F>ūv{^pN gqud/0ϦaX6[˦qt^#)t+跒2+$L~'{r/ݔw~J'JLcoY,o|zt8ԧجvw '@4m Zbv!2)n)z&ٿ'\@g ۜ#fM-&v]`Lj2z?H Qb-ov~P}-. Xǫ8RNU6lɀddd})0%ֽ;GE;Zפ2vSOH @gc&J/)i X:JMK*npF_RLL腱l6ˢ3LV-lx wsqTgZȃė d6.P*Gۋ*n_ÀHC1ɩ`5K`48\8q(#PR/3]Z_1>õ ԄVsw*R Np4o!MDxGo:b5j1 ].=o}O#w!]Iy tu_OdI> "jGf\[J@9[i6qɈ˫rtER؈mO$E(F4-"QѱQ1FGEԖ\@V`V9؊a! .",V&rBsHݫVb2hʅ ^rA#6oY) @3QL`b69##;1Cp_+3@ wAsg a9s'INiZnᨚ^{"M@]i5 08 9E" JW.8M¢_O31dh+ DFeLT hDL@u8pѢ_-m`!Dju['(Ske[3kX Jp] FFhpΠYCE7ȭp@nk&,(ʹ*S9J Ќ:#J(jcB3;6"Xhf$zEe: I$V%oVvVK]*_% C J_m(s,̲V1Dl-6uW$:CBY*~ qĀۍ\<fD LW|C] GJ4TTh~J(tMY]`<"(WC ]Hqڄn ZgX|FNŖ=Kb,44jzffiVYk&к0P[O-چBvqwl:n#߭&Dh}O=c9(5~H-t XFG5e4 d UWttt#=Zk+=ÌXr֝HmƦJG.cw5}q$e .I WXe&qD3.G_Lɡ[t?W t@p8cx]Xl/Ήiv(4 P)?;k* tG|KIj%.0!W'ůrS$E<(!pzlp\?^Za #Ʀ&A $!1xccȋ1"OQQ"cƋ1H&6lqƠ""cb+íRc0HU1FA &P}8(WPcZ{՘2H8T@bq1*M>,  f52;t1@dSN 9NgPt@z٘ͱ:#ѹm$&nSKlˀT4  I`B^#;HGB"a­/>#ְ 5˅J'4,78BBCDe誤]*#V"kꊌks؇AwfL`:MffLBm X(Ⱦ~ж+e$ Kr)dfdBB*eXKqǝ-H, Tʑ8'`6LxD0P<^8xEepQRcsqH gC%qafP`b-E$8ȜdD6YR: M$lxYnFد}4j}uV }4}߯"}]}}\&}a}(w}}K}}~}nW}7@}a}}/"}cT}o}3}x4thx -NȰ߾#/TK;韾.X"4̀ :kes )~1Uo~}#$f@15G6ib\Bjzid!tvo+$Wx$qP=A0Mvv?o}}d}}}gK}}}3)}}}"}}}CJ}}}}}Wt&_ZX$Q*THZX$Q*THZX$Q*THZX$Q*TH7DxqID54޵};Y]Kʸs=LeO[cC̔M \3"}l3*PLG@DBI*܌W6ɸ*Ĩ-[ n̰A,VȪc4F{[iA4qyxM]Y ~X\$:}`7~/&Aն$qc DE I 4@8 R1Phֵۮ&(Jw4x`'2Npn HfocpK PhRR֥@I8BW2E =Au ^R!p`X;n9zz&%Lka_ʒS'i !Id-{q( 39wI}i }j+o#>f*\ivC$~~=,Ζ z v +nE+'ӇO?ҸoȢ_[xj*ABdmцp.mg־Li XyC.\t|낭o*I`Χ}<R#)LcPܿ#B0!7GPR}c ;tatW2u9Tj/>2i|<ԜEKkq<7_Z]79@8v2Z3oH}&F b"A)W!QLFP1 ]R!LHd4B\F18T'K4h i(+]& eQkg@4~8@P|W6a0G_89k&k%yΐ# 3y@5"} [`m';,;D O@ScE"&х#:Jn= U1 n6S$a6' ĥCHĢ(ٰ E! b=00?%g! ")U&([h)az@AU\vGOrdN!Ќ`RAGNkF]Ze m@M K&A)nWlT`d1b4(q@e549JE5ry"@N" J{8RtVژ= 0@C RcBCu `I-,%zRT ĢU[R4-g?U"7p"3jQ4*DH>}2T-61+%~`!{{QB}O?|}g+A.}G}Ek}D# "vQN`߈$qP=A0Mvv?@20?}}}}}}}}}_}}c}}}=E}s}}_?}}}R}c}}})}}1}2K}}X}}I}}B}=|1to+$&,F=v 1XpUpkAZBl=5\roJ''MP3wP3:.%K8L" b;QՉWx$Q*THZX$Q*THZX$Q*THZX$Q*THZX$Q*TH?8:ž/ kϙ!8hz<& v4j`* # 2RXdjE?ɑM"<(F Fr 1nLNg{~y)h_dnE&ipF5K'_iZv>4Gߋ$# M iN[ܠqT1UK?ZX1uqLLaZ s ߃= LnZc_ko Ac9FZj#Mb! @ŝ h:# є ƬexP ?̹ǣM ez&7Y='Vۑ3 r*IJΛ)IwinZL[KO%N8bL[~"+%UUMI|a)2ؠBX<{.[wg\B?h%=-7%$WS8@oQ#`qhl&W6kY[O*%W1@r[%":ŏhd3/`AWչO$v$77<6G[& *:xŻл#6g}ݹv0v"ؐHӸ獊ard$*I:7|&<Ͼ*6Vnn"$-*NS[\ʅ tIC{p$)g 'T7uĘm]fݹąx/DAh'/tx+ @~DX xem8_^@e@4M $H FFƌ/fL&6nc7n E"cccIxQpѐm.Rcd h QH!/T0 'OfjeTdeb GuD dϝU@)+g$l0~H UA#<̣Alq$_rYd@rDD2e PQ0 :#d  keA@.u*x6ĕx0H'W$o0{a PQ7%8߈c#L4Ё n-y 86Aq_"RFTDǂ/`bS瀓G"AH{tQ'tF+:BAԡu8̃D6Ce: idL0 eVbPam;Nlبc'.$ꬡ*/ _x$5L BF#8GG nF"" +h"B>iT#DvH0~(0ّĥ f_/<2HB/̲d38&T;1dl%&t%Ph.1D7Y5hF&M g@#6`gk\$`Hhu*$aٜ @$qܤR^@\:K0aSdYΈ8@9UU27BDMMP" F25$U UF_R,Ґr*ʼnmhnC:PEʈ@DB )MDUk b@43ԫ,qyi4(bh"nJIJ&(i ڣ@KCI%#e7/qcdKgBXDn)b ʉbm0HB1 ]!^$IrND:l6 ѡD"^I d 0 . 疆$|8 ? cG7j9xhm0ʐ>سzʾd$qP=A0Mv`v?8>}=A}}}}߻}}~}}}h})Q}}}}Ӄ!}};O}}O}`}= f}%P}}War}l}=ZX$Q*TH[d5[. +BF P»ɮ6t KL{3(NY#`E ]໐rmo BYޫ^wzxnT41t&oiC6 -z]$( 2:$Q*THI %se9žGxCbf#]191myp*?0}LʌqkyƇ(h֜$H A $H AVL(x$IQmڰc<mjrkeY08311*c UPcшݍ1XlҊ"F:FXэ\յ/ LAq Y&`L ) we͒."sZ@RJ#K"QM.? <K`3x/ ={@HGO|uXk+slQ'#~><wZu8qϽ.9V{u~E/֭|()(´bG_`Ēi?ah/+, gރԑrousV{V9~8K 5iNn24@BU7S F?ϥ\pHZ=Nٿ+NHH"%^ . 40X{"I1}qze_tiϴW$3id6>̖6/!Ɲ'ekכiMh>~}'GP#YaAZ4ZB>QPm=֛A.! I e5ٔ"K,آMFKs(6Dޓ}+iRЄ<2Ѿ)( =]` xvI`{+zVkpL$rC27 CwCү#ܞZt)Ŝ-E(?t? bqbTCԉ㍻_vI0ޗy_MFeKW؁4B POu1 T)EN NG\I9#[427i*Yʉ`R7%X;`$}EО͍瀞J=dNu^A',BEm2I *w*~!3vSaf̾)ŀ ,T 5-HJ#5 l OHsf3N1z?` r'+eܝH3;f s2aɅMh@M=/!4`t,5K AS"Zv:A=>y;//k(YDj.;mE"dG}ž9<}Xd[`vdD7Iz&v9h^HvCzGee ;}ۢy6qbV'23JJx{G95ʊ)luim XR6Jop-g.J&C|g9bIU݋ҰkAS]0c= /-"󞮲}0+0ee ZiK*Ճ1,;H\PO@aQ?L=>Sk%@`|ГjOwΪwbhj>!N.H]6`S|!8fIx%?:I \ؑop_:L~ `ZMV<ffg4fQT7s} q6>:1 aM8l5##; 5L nC'N jLުP)E4tLݽ\3xDx!1BU0To_a+7@Gq.-,3U:/H-z A2U3oQ]PKl牋 I5`MGMgnj qk a[7= 9 5 ;KX-Em,L#mD'$&N!B<9ܨb0Ȁݜ^va?C{tەnZFyE܄@=2L<`!=N QeQuDϴX~="~c9z6*>mN 'ӂc='N,P.W#t^ brU>#"3M4<Չ<@(}H[h/٠Bmy"ݮBLB#e%Wsk+`F}_@U:gLY͒X/ JN9Eoz=\kR6IBJ<,> ijՑCZGDbz!&uet||4<,E;1M]R˜O,UbJ4ÿ,sBHbnB\IDK`5z,*5FM_b4=$ hppBE:tl0l#{CF\z>8~h VO_q V(fgIF^F􅿇6BKmzAKTJz&z?ia3Ml4tüd,ߦ˰AM=19y % ]XB y!kuߺƐW]HnIDc"G21F4)v^^yom-OKN B?d TE겞?!q_Eqwp\U9x9U皛k CNXu8;,l}ӏX [ 44g|Vm}?ӍLbD-yO<3Z?xq`,z}uo5/rʌ9.d[z@N/h;cW,sW1gq"@MbUm@cOvuni3L#}Vm}B5oۼSRl</5:#гa|9C{DUY#\2VX ι}h>E8~pDgNO0k4,tb nv"g&fӯY>[&~:sG9Ru3Om!JDŴYƟn9%-~tQi33CKaW2|2-A :=a!5!5<.?EB-ƪN4OG5hܔxcn w%3<Hc_5$} Y5#h,IOxwjD !'& (/%cy6r'z<M3b4ٓd LJ=?lM[k ِEa@4(E APL@M9_rs/@_G1J3` M455=f"1&yV)"2\0;(mрH`t$TS7L<7X#%hwt6yR. U.V$N/w 9Bo4pհ:nĪ8).2=zDiam>e˷,S^2EpWF0 1@LI?Ang!&qHW}҃RVrNtDz)l=t v>޵%U\фE/t$ 4vUy̛ m^q( n|?sG h(QFNWU.[>z$o,жfq^6;B K qs@v;MN _v] o2r%5(@GL?p%7?F#tlM wr!3o [@Pc.LQWo&M/sޑ%$AafV4M KwJ`MD+m!&X,b ReY`dYEA@Gw)$wlt:gώ@ *n1F$H A $H@H*3L9sG rrvbgcqu-Iؘ8ƈ0"9cʼnEGGA bF*_h8_s!MxMM>kA1R=@~P,D= [(4kvSqUMQHv#_ `# D.10LAsl4#%Շ>X?`i5lI$I$I$I$^I$I$I$I$I$I$I$I$I$I$I$I$I$JH$I$I$I$I$I$I$I$I$I$I$I$I$I}I$I$I$I$I$I$I$I$I$I$I$I$I$I⚐$I$I$I$I$A2ȋ$I$I$I6:ld׬AJk](G$I$I$IÀbhDۥuFw=Ғ&I$I$I$(0]B@R.eԭ %`$I$I$I$>I$I$ImAҦM1D$I46I$I$I7+$I$>$I$I$ 1(<\FO$I>*C$I$I2{4$I$3 $I$Id7v#*Ef+I$IL$GO$I #]$I$9V$I$IE$I$i$L$I$q OAP>)kdCA];')&[Ҟ w!'iIWeLI*-> $ E`fq$.橛qg߁ku}6 Gڂz־ |E {9{#4FdwKieS]4AKe #~-j΂{˻Um akd,GhwG n*j tS!]q26o / ʺhߋocs!\QeY%uV zDwaQ4= AA %i7upv ҥԋCO_׃ߺ5<&neJAo64)۽8 p Gkr cŒJյ ԟc_hP͝^|$D9,dw8m=k$y TCbzY=2jҞQ96d_|ymv ٛxvMя U.0l \s̠u l+. :I6nH rRt'XOHGζ 8ŗ\hIq} "d͙؈S9 $Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*THŘz0D09  Wm)=!I+{d ,:)QVuہ'= 2G1 `+wŸ+IŸPF8Í$ۺr>Ѳ9 *gbjR)C'oMCl[mV;IBZ D⺧^l~p ª3ܒu1(Yj}(U"}|o8e] zwZ䯒E|0̪]7}uG6ۅ U8)Y[X$֠yl q^A)3 $LĆ0ce3ƘcP 1x-_C ?qp5 6Jnr(-#1Lrnȼ" FgUO$*TWm*q e@Q/^ nЫ˳{_˷{{7:{ {z{{%{{{{zS>zQ]{{e!{]{{{{Ozu{U{2I{[{߻{f{zgYze0@|[]PgF[V1ȗWL7Ո~$KQv5Fmi[EvMUTω0'5.-9;>v~r1o:eO 3+w4d/yJtPyf0#AD-e 7/wf@O}o"Mg@'3/$[YQ፡@לFކ>rA(I|yk7~cp+Ұ)$(k`#X8\#H΄&%;R (n(K/qf]/3*6FKT.i;d4 lm5-ǹ[ل3[j؟pD2~7IJ3>}!GldMrCΥ =ѦJ7N,:@{Ï7T4uBB &xw)&$q[ىTZKh,v9Ia8e*jLxxu:^y2گқ+Oƾ ;XUOUsId^ E_%lwS١؁ă}#2~ws3wa?*/CċEDFJ͕׵.޽50!~NՄFX"f,r\o馒R_jب4p`&~AV+huzovK^j!蹩:ByHa)pw.#Xpj\ORjOŦ܍l:^|a!}MEz&ʇ)ԝ̯^_;ؓ]-MKV5+;HGho4*?m3ƚIUd^Ђ2,4~p]`ޞٱ3GTI/gr7 )EAe@; y{V"-#ԯݰP߳;BSZO'a8h4B?]BBOB+M9Ii8 y k=&=s:"AqP푱z#׾&3xW$&5u97H;Nzo )ސ2fy,-ʃh?ۇپo%E?t'Pooߖ#\uGQ$I ,7 ^ׂ.r1%ᴅ'AM:G \1exp*ZƊ:u;Or$Q*TH$Q*TH$Q*TH$Q*TH$Q*TH$Q*THɃ?%gKwBy5≢Ĕj^[ 1{C ՞,(;}j:qݲٜ٫žH]\iPxP\|^LƱڭL^N~7ԸQ,^0p~? 1 AYku~G~L~"~H~9]>O~j~~_~?5~2~~>K~~o~~3__~C~[~~;z~]~%~>l~ߌ~O~/~~V~Y~g~>s~@~o%7F5Xl*֣8[p0w){$$Th57|kFR2 ԣqd )H(RہI- *!~ph0̋3ЩO#%el ;%{xcl*1.AVVߜC@~3`Sg$螜J?٫Q.W#(ikUiӝ}w]WPcٔ1vCAF+מ# s @h[& *xbԁ;0⁈p laKrE,+wm%6WD] tF;<4W>u&|\U#?Y`UÔؼ)5OI_INgF-<ӷI$50 *< t ¶ MApDj A $h^12KXeKx@X#a7n 5nc 1#<F6ﴙpEy~C0{S2:[?<ad<ԥAM`~.@Gػ d)J.5-oEdl@o&Vyktl ']!e 5Z6e\@9!IFI& @E+ҏ뉤LdFi֪v tyQ KQ:Wf!ݒS^͋#BJ+Ymflz;iFPހf<B6MulLBMq ,͌HfhDJo}^D(hӴ&O+P+_MJRjvP[#_#*f>۪&#G2/3Rd28V|~]zV"}K#mLS udy3-nhpBlΈ̍imuG Z^J7ʘOpǼϪVM~_H,%%:fM@9K B09llB"/!#Ьܽs}GTC|j?߯&}-/ͽaIvQ/߫q/߻Sߒ<߳\B7jqHW؏9bDr; R5IAuVEJQ@9,CgjiA4ge qjޠz; h1ΘbaL̢|o'O+d[cl 1BP9"@aN^[`D,3_ X'ki`yRh[BmKTX7?כo%iTp#Np:\!Qy*|shzylAtGk,Er BM<{qR5l}T!yO1J &ywF&l₵-Uwz)=e93M\)Ԍy^Ev yA.S3i_ `+9$6PG|?1KɈB &Ӡp|)0 o Sfےn({d=RݬܒJ!\]By3Y37K[V B`wrEJDk8cbDyۯbv_y^)9u+t]z3 g EX ,}PK_>k{Os+%@@ 8&] $H ̍1n vck͊1F`b\#b\ qlQBtD4bz0P8O3 XTW+nZGb+rw'&ҋgJxX)K|Vu n;-$:ПGkf> h5l%,Alxڪ1=A^x9)A= Vkie(9jD.ω=a-AK-0)֬;Pq,{N#}#TZ^J6mL%Ӳ, [m U~#s2cT_S܅@t=lbBE9Ɍݗ5 8HA_!Wh0i%l[@Wr\M Z\%-|4z~l1&x]BzE~l }$cςEYT`IpwԴw^uzB^Ja@c| m=n&֮Ɲ2r#; `RP!0u5z)ѻslL!d9̵Կ[K4]ʒ'ۊxNdɌX TAr97+S|qC; hu@:W5Vm3ZćA Ll($Tnhd$ۨ+y5j$ S+!\yLz$n#"; }@|$Q*TH$Q*TH$Q*TH$Q*TH$Q*THQl ޶8WL:NĄ\Hl^Lfh hW6>keFw7=yjSsZGEW 0iI_ۋ6?.. n/i̧ dG"-^$Q*TH] f/IԖg$(  #JI r_&pD{K~~ Q=|~~L@~z~~|~ ~a~ ~~~!'~~ã~>_~i~s~xt~~o~G~~Ps~5~E>c~H~~_,~~~~~6~]o~}~{~~O~5~>o~[~~>W~[~'~g~~w~6TC~~j~~~~I Inn_yQf ܗ`7<<~@˺9^|9/^:9'÷O ˮxs(W<{lP 1e 9*cdRT*`R -.W,wHeA㉺QG2fS$ϻMf/zBSQ$8$fQPӵnɃSbyGBѝս;ˆOJY=>ng;4cMFc 9['83G):{@IAߓm d }FPꃷ1D{׭])c?\A <41]$-Cr1n|hDP1E( ^˕kp͍`9;خ G}dj qZ}Gq' ۥf52E0KzU8@!4q=dj'>[~W,8MQEe&ܟ\hRw-Ծ҇k ;ZR?( RSfiҩt \ָ*l+ޔf+3D#@f GlJ` n6`6bc#q1Q \,!gY.֍) miX bu~ #ښ#a8 'Ƌ{e'Ci*RЮB0)>ŐKbRff>cEX qy} Kع^8# 8QI A `db1")":""::6V"-ll:{ -iQ$e6ذ1Ơn1ƅ K!#8-xX t9v̂dkiC,@S-G_wwdE~Y|̺!^g3?憁AcEr!3C-P0C.f{=^#.*1x5˭M#\Pl<`t iSt3.]2G kKytc]fhePY+dل`Jo; 7~tX8SnlS!gS&V } n _ &k큀 7<QGa A.GDB ދ 8;֪l/lS`ޖ J$(Yc[;p?omݠ:)}P ȿ8P;EJEg;qTEV-'Ƒp6qbY.^A0(Qq'IgabOGŇ0:YDbڷFDmq[;ۢ@Sg +@0f$ҥTC&-Kmj̐{WdC$_sEfYˑ`zY eCB'9*+rO~ @eۘidQ{i<,(+MσXF,㨁Nk,ш$g,"eq/!f0|ڕ= $ z.Y#ip=*vRD جB֧Gp PF ֐$lՑ4d }YQC Aq8aR }潴뱜}K>z4%i.U{:!6{_&Gޟ&/c?u0`5=zzw"}]}}Eѷ漋Ik$~ZDŽ%3E2PAĐZnc:';"bX21{=R}Ms+@vJ qBVP[B@fcW^q 9en,s4e! ZMD$35@g!!E0%f$RSx;xX k>? AX J&A E1*FDh17?A^Beytl`8WJTl _+K5.H`[>~aB (- BbR,/"͐ۋOxx3Fe#̄ͅ-c@uA.I_hz|f\@#L\R՟hLbXc_J$Q*TH$Q*TH$Q*TH$Q*TH ~<"2q*t\TM/Laa0b6-MWm0"  ߇XwP|Z帨5T,_td8@gdv3e'UY:OtP.lic{.$/apJ j)n @_#(^R]Z)>c3Y@( l j3 t>/Lm0w6Ru*GC<9 %Sjf#:s]{#;3еuD!IH)!=Oh=:fzܢI 1ƈI21zm @ib{p̡?Ҡt]րBe؍G,&A $H A $hcU)VE0D!-e# "!0":0R?~c VKb Hd!hFE*DDmU c6` M0l$с@=hea]qMciv8DWN@M*'{V 6_w#6-dY/GM?W][~.(ó<`ʧ̶ۇcȩR&aU\>!;OH\w@A=3`K}6QYXX{s@-['YK Wv볧*ʴzS rqSf}i!GR U{u-YV3ܣ_+\Ԩ[4٢vcuӇUA)KXn >+ ߆smI^NHmЇ㵵,[P[#毰Vo {'+ AO1ˉnhp0W{+@7زO؏UT)vVүu ,ˏAm͘` %IO r0PDU-<&M\r |tE쿇ie9dB8 d:(F &`oB< UNgR~Fa.1JLv!2@Vnyy 4;l*: |eUjKn /^l H%cClI)zsAVBySrp~"Jc$Q*TH$Q*TH$Q*TH$Q*THI %se9žGxCbf#]191myp*?0}LʌQk3`P1L $H Akˆюv`h(xequ'j31ƕU¸1.A<"$..1n ZQS4@J>aCf#6<lt3#w K #!4p"N̡uni}XK#|wo9?= ]q|cy6z a;ǬCViJ-^j2R*Di #X5~<9u +hYޣDPw=FdDwbQ=k%}LC3oIm:,ĝ!>=M%Jff"83XvyJyKhpH[CiL/$I-S=G't5Rxm-"55߃-\04>Lk`Fً4 E4"]GaE[soR [b5.6 {hB{]psZ/6w42]v|ͰvT\p?RDž[uheNkScϪ\5EUW2bM?];yn6F`ZX@Q?eA8x"O' ]iB {ANE)xֿ_\{s6!DW 7B N w{0UhAE\:u lX޵ޡ=U?{XuUSȽ% ƀ ${7٤m|HPv—B<*Tl^yjJ\ƋxF^ޣS:ia`ϲP^]RPžiE6~ 94 Md#zQ Q`!MC3agj|' +:0IJK8߻־:L>i OF=ώEy 6~Ot6(~)𻪃ŋCws錭xwspkvilE:"q{K.EQ]ժwtᜠvOg"T%=F :g#W 3NWF~ZqfHiL[:T)vإu'(vc\"R$.ֿSЁdg2lK'/1&Aij[ j1!>nϤ 5q{~:t)yN/`'l>JOl[~D估pG5ClwUxUh{h #pV:ǩ[8}0A:\|{6I87_{%YLawXϋd察WvH/-_C8>! [L1y|/p$=b||/A%SV1, S _ _wbֲk\-Y2eHE#W dzzij.QEpM=/?!f ç~*Arf{-ﵰsh|Ž̨p';rNuXca+P &xel2LL;{%)nAn̿U@EU>6/\ZQQzUK:?}":> p4EH@$io2fg! 'Z:yGПwJ\ye|Ƨ8v=bAX $M:*4/(2>߂gYa# el$g:uPl-r,:0B)[o>zF~|JKm'}rz }$r2>Pإט1WUe}?] +i#JdM&j ڂҀѣm7h>tEuF 7> -8(I[!A"E؛ߔWu LV2]s$s7FU!xlIPT2/3Xgd}RrD=)5>/oޜkwP.=E£=Mt[sܡ9~ҵ<)Uw3ɜ%Lj!=C;N#Ldg=!x X,s,6ŽeW.'q:Bl >tp>:4)ԴO)]<)t~q癭R pz9Bn ZƆ¿Xҿ)ud"SD?-}\\ P|N9_NnY P ~93K܈QYW&@d_OP# >c ж՛UA+N1 ? qsv2n ~캋\%ޚSLĘ$z#?zAd>\n6_D6y&;s1?kܙi.}0UF?{MX_AD9V{C+r ]yߏh63cte$L fQ8|Ag?R$>ˮ`ĆggnHdؤܱݨg][hy|} :ґ " .OƇ1K iD՟n;RwzA2ȯFfI&: m (`b҈?k[1Cug5qھ|VfJoi 3;9&OgqPtȣսs2@ym*?2Y%p仵<_]hB hv{\u~[:EtQn6.f½Lӣ&L >N|D[]PcХvl=UQ?!>$݌eꋞV+ TW7Nj#PqH-ƁR<6Y iyjY/>OX?[a,Kj?&k&.\钧#Zڶ.l#C>:}s+ˑgOUc|8z=R|ȝwVBH $]װ.Aݓtɲ)b*dIl"$^;yw ρH~"rx"GrvyC'D²~1'TK`o佄pcXBQ(1c Tr酻(&JpmߘfCmf(H.P 6in=^\ ͛$PUXxQ 2^صoM"Xm \gDi~:@Ktj+xR 3̛8r^% yB?1jCH>-`}kfR8ȝy6}}1=\}PԗSUt;OK,J̻y I`̘L} cJ\vyJI2S^-r5ݔU4E&|}5⫋:v?)!L%v?ŦOm3t5QC JU _lX^CNABЭ*Q~z1IZЕèKpUr$4tHPoƒn Ije cQ"h =d'o״Rxb<$ 7w:-#X w @j]Ȃ+M:$L~Ȣ`#j nǚK4 v`8seIgIM@۞XP;GPd]lFӈ xzhr2D{a ]Rꙥ:swpkaI`<=#"S^X%Q[0z%H)gz b>(y!b#ka@[Y۷;G&+Zox^7̲t%'wưgyppLYXb\s)*gSuS[$ JZ) yv#*+.NmO$s| K?;]5T.6t•y>3̹ O+ZQRAI/ N77e)eαv0=:#cʳ Λ&IUB4JitEcczS˩),m&ӳ^:D4 oG9A"K G6;R:Kn_h).JJ0OZE*~׉ m,C^Ru5儋7W:DhɃg%|ڂiu5{폰!skԋ^"bX۰Cf&C+*u3A毾tPݝN#Eq@mE\<@$DhPVgs>;}vPȤ7`$H A ȮJ9s1%%ޝsvހ}gw/2f1qL1ib1::"6F(32N12F%Zȼxp|A T c@3*8|,;IEv:>B:,= o@rP 0)|P-wckta#sofT?8G;)}(^#On`ױo̾Co gkTp Js.V_ ~lw +FxV "jwx U7xUű+PXś p\XvoZ%#+g#aő1$I$IF $I$Iv! I$I$!#!I$IR3B,%I$I$J8$I$I֡J $I$I $I$I. 2N$I$i$I$I$I$I6I$I$I$II$I,u I$II$I$I$I$Iڋ&I$I$I$I$I$I$I$I۳I$fI$I$I$I$I$I$I2I-t$I$I$Iq$I$I$I$IVo&I,,I$I$I${A* YTGH$I$I$IO *A$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$SI$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$z ~@]6 &DR-fJGtI0;+ݯSrW.(T%Lt I&v[lrz^d*Qa̼Vv0jYL3Ҧ;': BG%YLH7W;dd&Qp l \L$ܢٻ~qOR3č%`}C5$IsT7J r=>XEG%pd?#t?4\ct3^,=w3b6Mz6>Lutm?徔D6b62̱=u\|@12ا(L}ҐM=֤DPځӛq^ <߽1>w&i$jZ 3 z1$Q*THz1$Q*THz1$Q*THz1$Q*THd)60pړc6=5ghKPxjJM(iX]%=W=\N s_V*`]n ,f,5a1{ XtKccfk:'ޝGmk<6WH-T81[tsu?;62mrqi'T*mAASOڍ-5 8i;'ݹ*DCՑYl.oEn$rv 8ޭ,oH3q a*\* yer? OkyKqD"piX&?+$V>;ג GX6ZXR$GjXj!823qy9`40Xb2Vd;&`(gU޲1H.`N.&5%ҳ U65ll>HkPxK  j\!ӂ0N]hai A $Ȩcƌ1)!e-r.^ttDtDt &3^dTllDD ab1#͊" ͊lT3 8t}(0/9¤S'F?Y1hUOZZg"S4W mݗOD4K]{>>bTD=l9Y&@^b&_Q'}>x!O?o'E'j˚9+` ph):}tϮ1;˃$ oj!<12sp%N =$Qv9my.  A2v7`4P*x]1^OHA[U庅[:A,)Mu1MD0S}*z=]GzΆu"[%͊ղt&K~<ި |ոv_+Ȓvd8(,2p D`W5>")XvbkC=oGsxF*j۰B|iKھdZi1>pNqc  JiG2b@VSLSx 1tPD8G)˴j/Βh"qb,/jPnڮ?iڢ~t5*e|p+{ +DwfS@E|ssK'%UI(і8.IOd*[d1i/ǵC~|kok֪R9}"[uB]Ӻ u>_;pb4JW#Z$I6؆yWP|0[lg &a$qPG8AP$Hhv8v?̰ߣ==_}}z1$Q*THz1$Q*THz1$Q*THz1$Q*THz1$Q*THz1$Q*TH03'euJb?FLCe~|;e"4" TmiK)PEqVi{s'/Â+>/ <)ZF]SAMU>+yWa6  e686ɶBBV ̭51]ya~XPl%N, rTEFISHT1A#v#uZ&,ğOkr# 4Y-cy?]Zʛ ^)ߟ/^ =+yjy_z FD7NٽA?_6K Q,F ?]ς\[`? -O JZkoA!|PE΄u(U=힘\p(d`+%&Q.P_Ml4An -x0hG--矐 z}B`Q> 4_! >*ں?bOvZ3C +,+0y*ҁ87( ^O٦%/@Oۄ"kaK!\bLVVќ&)f v-Wa.6~g$)7Yvt;GliQ2aGXUK ,#L6w ? EߢnI`nu /\kôr7(ЇxuXlHDzWsQc¬]~_m~tybN|$#UGqϬ{$gV.c(#]iZu?/d #x+vk A-9vŦToIтMP + {~3~~~~e~j~~~~~TL~~~~~~6~u~>b"գ/|t:Pgb$Z"4&81FqB& V-ZvZ\mh=$!NaE*9Ks 5h~,&f|E32`dgi?c}A@`U"{J ɉ.i]cmLhV#[BF"OE,P^O`z&#Lɓ327}V|d:7~X+2~ɼijSl3z/mwbJ6St\߭@ CY B& va65wP %/\ Q{"% QhnL-'DݭD9>~.هBVhOIS@-=}Z++؍YD8l' (i$HlG(lm`) R?߽}>/ LXߟ_G yހ=P ۛ^*g H $Hc;.i>acϗ:}1o.OH}pppz1$Q*THz1$Q*THz1$Q*THH[xeD86$Q*THF?>?d #O)ho!>,O6A5mVf?Jjiia ۀDӑwL{0U[ /.;٬g)&!TT~t:b)#3'?)J$Q*THz1$gP0`8k@A'ƚ $H@n DEFEFEŶHuAQQ@tllllTtl4h]1**2*GY%d#aŤU+4ZմΒ>=k-E=L3oB'Қ1tl tuyj 1Ѭľf#d: &=jb{,ޙ<TɲwfSkIY,S2BUlf\(]Yk(_L .&l \#=H\F8R(VF"j([zÁ+^W76, ձ۴)Z)}Hy3ePMck݁ ̝+r r0ݒW!Gs(8=ݛ:|ZE_R"_\a5 &ƥlqFF_$&(#87PsB JOcϫI$*I抉66h#Fsd0xknMj?D&}4ۉ^ǀ )LBԀ$(x O QAe.+.ߟp@ 8R?&A $H1x7n ֋TtJcȐE`}ZXrkhiب(`91A@i1xc0Lcd # }F#ϒp[DukݪL?Wͬ:XR>HV/OݞW?98'o`M-![+4?jMnG+&wN{7!ލ fpjls{[< h)Ä}"{=(40kXˌ"?褞g:- bNh}r,=*u驸F۾=ޝ- 'K$wJJI1ߓwfgn?,UsÙsPKNM̺7S,œXpb4c+M$6ŢOM_$$X[X_%(3%_2*lTyTzos&*T(KZuͰfD@N nBʐ {h_p7z!%v]t9nHnj8겈[3TضYsI>\D3^m (|i5MJYĪw!mxw+ Rݸzyߎ DwWwJ^OY(7Ӭ Jn鎜Ϸmw$Hh?sS叀F>Pnz%SGd(Émel$.=O f_I슸JT ZS(ܫ󌑴!A:jC +ia=($)qG%HfK@ax 7+)qo@ SݟwX@#Db&(܈f 6IH%ۊ1FSǯ~F" DIlJQu)ȭoAC4#R"BQ7)7dL0"Zo6EqH)k#꺇(f/^$Y AXKWJ!\@D0f> Bwg oxĕZB>{=PtRjw 2T1&E@|oZ)W=ŋOOR%]l r-qsCLAA(c:$H A ہذ17n ΍A"p#ccے:{1b0r;$9p[!bADDDDǖ0RC~3D'~r~d~>h~ffb~/@~~i~O~3~[!>>kܹL7BaQjI ʳoc>2s&x=lRnTſ[~H}KHcԒ%`ɤ" Bѓ]=MC#-oŷ{^Uu~BLH03#=VxreWSɶMcP1"pЦ[#1Wbmphp%H>M#K "~%+b}7D|CoIQ E;W>5Hq̧-&\'w xهZ Dyj2Ilֈ r[bRZ!̤p|TdZ,px0mK;:Nhė<@;P h@G!r]''M"׷!&gz1$Q*THz1$Q*THz1$Q*TH@rV7F[|.8յ$Q*TH#~Wu J SoǦzm)#cRr._)?NJЮ"yhpIZىs=F.~l5\?@XY3W:/+J$Q*THz1$Q*THz1$Q*THz1$Q*THz1$Q*THz1$Q*THz1$Q*THb#,T70QV[@i /8յ$Q*THBy g/ &7"(-tG΢`-=I8Z>=xj{vv7I=H  *g4D0Jۑ+J$Q*THz1$Q*THz1$Q*THz1$Q*THz1$Q*THz1$Q*THz1$Q*TH`XTrI A $H -eږd12 pnj*IɛcI1R1Nĉ91NƉ1X?c1Əc :yn1ݸXc&cc,6n1nqq:c++2FEԪnӊU=AӰ&ƸDT ([yr?.-|" YloJe\m٫TGYhmTD"?˷qx)gz`:ɪUѥDTZ7[5VtLCt _D"+g"::`6ؓm4F:CU%>B '.O"HU7K=/xPǑ7+# 3~J -NPW7?e?lo2X2aNLUEۓAk/x9ems/V٥Wf&;<ė/,rU;sNf9-^~eWTY LeW+T3>jJ1Q`Byt+`cJ11hWu[@K+Y,A/ Sw#w:iox;E\3GT6A'*? 6'/p/ ,fVʕ{Z"r rJ/R{ hU$`#?<2뚩H$m˾@uҦ'9aM(ޥ{a9)G6;7-ʹdQ}P~By,.WY/_Bֈaw L [$1žW~l3B, any*(j~3Nsj3v0:ЪjrgNրFPBhy_3k.|'QvRm v}A 8st7 _ !Kl4-o29`uy  QFZ#u%6}^W MvzsafC/{"=41ȜsF49iccgуz-a6->DŽGG#/El̽螏]k;̌5Z@A9IhG.9PR VI4ZDI ɱ0=DvFEvN  bt/q _>Zh1ܛqx~A>ޔVr̞a(XQK m|L믇4܄EgB8!4 ً!ii@zT $tT..Bj[|!=-V螓2/zb}qBekAQ6HD ,Μ@ܔU)J\of ?LrCr-g"pDZU~ԋAq2 eRqbRYD`ԔҖOEl'/-{.ߚvX{vXG' 럂C o+.hocC.Cś[ׅHr׸DWIMU=n@:{ EjK7K$)2Ǟ%k5°11G߆==rq>gsʴ {[ YUvvD*#^6RJꘙiy8 L?ܽ#Δ(E4n"ENKDPxS`5,BtX6l$Y[)LsT6j!rs$_)gi:&2vy4.a2}DNi5a@2g 1f F] KN ނ[`K!@E3vߙo_ /E߀)s}gоYHƭzBH22E+c 3rC{{ 4)9zpeTY7?lv΍D93瞿ȳ>T ZTaԵ G7?B2EOu|ۥvj`}^ m{f5\`QG4y]F3–U_u9T5TX%h ) aԖF0Khw~ Cri&r鴗9}e%W5tNsc05ӂ:$qղێ~-'@D8d-+%Xu0[8œJ_`aQ}Y\ ǸªQ_\ k$&-m M+8xZw&W<ݣ+TYQq|)cF*:u%MPdؼp0j"+,w*UZUt ZBԘ8`uuoԒٰ.\ltb~EeaT5Bi詷"|NlWgR_zb%: e]QAߊ!n8- ^0Sz+`]bȖ'A3Y CpYQm"_ƦrcXM'*hf'iM$_V/vJ#ޘCGؒ8 ( |=YPFͼC.rgO6NjU?Y8[gBv~HÖ/*}\2wg Xܥrٹܚgw{X@+rj?ƶzs Qoڔ0t Dh3%k䏘osr_jPeu(F󖯻?MN6]IH+yFsO؞R$hQNqW I+Q2Z#(%#sQkIly&pFHO}f۴ nn16v/4B2kp Z&.avZ[(Đ)4(/}|؈{j\G,!T Qҕ>As/Spεd DHAԍf_e6:^gG  aq#"&A $H AmǻȜݑx rg vvW/ɵDQ8ȹxQ1ƌ'ƌD#b2`$LeE>"(/컺9h`=ѽߑ('OF9zEZ359;O70~"=~ JX0G ;WWɓ,i`Mwl9響ߥY.ﱎ- ?3RE}ߩ{?:{T ('7P}zAkZAs8,zw7aW,+iw<$oQ[WN_ )$I4L$I$I4%$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$qI$I$I$M$I$I~$IQ$I$I$ k@$II$IRБ$I%F+$I L$I$ID3ǞX$Ii"$I$I$I  (4~E$9K&I$I$I2 (1n(8Ill$I$I$I2@(1(Raߐ$} ٪m$I$I$I4e"ɤtۆ$I$I$Id*(#_[+M)1']W]U4I$I$I$Ihp.Ы+ | $I$I$I$I$I$I$I$]6I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$ID&I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$IrL $䶙vk_۽Sơb Oa7@}A/|M]~  |kJR៌g;́-عρka7ֿKԿ}{ >H!0/ 4;ȳ% I (vL+(ԌHFpHjOֻ*C| SL2ߢ#m)`b v TWuE-)D~HDC(;Q;U1!h_^L]UDͰs:')+h|~x22 &t#M,s5ڑלZG!nN鵲+0 㰭 wsEwf?5sdxLT Mm;XjzQn}^t2GPI%렝g '$Q*TH'$Q*TH$bʙTNh69w 8A04^ _ $ V{0>ݵUe: OyÖMBS Gy>e8q@{; Z.8ޮ6vd#cqSZi܅kF7P*_9zXEHӠyI3ߎS0{_/{'{?{{U{"{l:c?{ {]z?{?ί{{\xK^{{{{_{eM{Kz'{ {[+z{1 ^z{ק{?(\-9Pm\Z1ҁ=]&[npH$'<$QUبŭ>/A,5]@0QG @ P2ll C $H A $lǍ7cDDtDDDTوlS EFHFDF0cHo18c cF(O 8φ;sc AM"5$:)_NHt4y '0IaV!WF8pj4uy*SlgW+yA{gk̞&3x6EYb׼!xpdaN G+¾״n8p7B9XZj#43=7ƴ*[|S1V/U#ŘhOPhJ? u-{$l!MqNΌF: Klχ9:2[0A/1w8*Pu&F-0z)1PmD4 H4M"1A*_`~_qRضԪY}:0iwhzw*h".as1XD}Ga۟G)~fE%sUbtuNKK3VWIF4kJ Ч)@aP*I!kO ȷ'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*THC@< }u# =AqR~ga-y-'Z5$ցtؾyɬӃ(Ipm7?R=pdvqnu$A ABU gU;ĥJ\ɜB2kE6Wq?˭qqa,cE C1³$A &Ab;~;_Ϟ W}Ǟß+}Js }2`ߏ)}/ߏ\zT}l{zMU*ũ&bj~"x[X2" G$icz~~AOA&&A Hc#ŋc/bxذ6">"-I.##ϱt4`)= ::xH Q5%.WP5w$݁X~D,A` . .NE<Fy' C) `rѵj /ij6uP6-6˝40+%rfaXW^+31!h@n+;7\@99dzu{zG1 dg6;8ֺy$7Ւ?;_m> ;^s/U婃>K@iw C˚̠U#^K%_{O{x_WHŷ}5әh^LY4䛋{B`JN ^l lU &ܡࠍ3*1TdOD,A/5?bV=]Iu. LLsyfM&N~&5S#JW&KXDEkAmb4;kdLEN\gAWNL镞Cj3U }= {VXtCt'o/}JX4p34l (jT+)OG6V"G4S~Fi1؞ݜZ(H%' -^"_|(dZƖ%|QV>.aԴS%5JLm^0B Z:&kn;ͩX[I+H7DGJMrxHSZǒ'Ya{v5_AdeŽPFAiuaE:;g0|ul^<De9& M<@;~i 9IY k큠mד$л@ SIS;juPUXLDGu&,gѦ42peM=MkPvץ7g-2{߉HA]ϔ O`"IG`p{A&Ab;{;V`|o}}&zI|ߏX}}mvMb}|}}W}߿ }X}8}.}}0%}G'} }}}-J}2,ߏ7}B{}o}_}?}<S}cgMVY^5Vx"<8W$@Go#yլ- 64Jψh$ۋ\V /|{c6M-Nޒ෵5ly̒'{k&gѿ{uۺ!={痙6i jo,}^"WM |عP?N \MtjZ~aA5? \Zg^}wicn*&L}u{D?ԪZٲ1n~HA+R)L]Į>܋'=nfeNtdIyumVN-^yOsk ߮o n_'hޏpEoNd ԫO6v|۩I5|;T$Lbo碳οɪ퍕M92N|#smf6F:TP^-_-&f圖}WI3޶ENri[n1Yڍwpw9^E\z*U~ՔV}|oM-o++\p>~g*TܔCm'Lj|XԿcѝ?[lĵEvTGoeJYX|Ә"n KV~{z DM&=ЯuJ㿢u_]N5Z=#*nftA?~mB_CPzs?^,ejN1L5fnYk ʅgWp7~Ԡ߼W`V'$Q*TH'$Q*TH'$Q*TH'$Q*THx hQ{ CT/;a{ 3UDG&6 ]A_2x%0EOі!}Z.\c>HƆ$8St:O3pUu$]PC`|ry6%ʏ옳a5XJD.msg eFs@yeȅ7 X-zo1܍SCd}i @W$RIlkȳymg5SG;ى1MNI(*]Qs3~E5m Ub#طwU‹"WMzc@=woۦY%?Zd]bL=e! [s[lJ}/|RoY.KVGx$R:-D!FuquFأ>"rI<,k\ lPm̫U +]( G)$/T;|/9 {sҧaJU"lە7|CEb zYe ۄ^}gYdo-W=vPi7gEֽfj$[pepIzXi aQnV-' уbƇ}p7r^ nΎcO+:gBWm%,(y5zqkTg@V7\? h -Qғl jY|olNSYޥ#RuSw'C$YRiuz$>! ѕOs&`m^Cj&k'g` WWO ^#j$W)i'nyKztrʾZ 'lmN= jIl},k9`^vy^3wх\>le"WXs~+ |; ’yMY} _ .O̿1.:y#; nБ#6DS|ZJT:{wNCAn+R'o[Yɥ7?*0l;{8ܕJRpZӹ.YSYSmrʞdcSy/ 7GAq ͱ70hCvYȬD:Ikqdu*S셡.&^K|e~ IBz2;Zr-o&P僳X-ɼPZɲaĵ9a^ngtĐə&[,SC?_$CLwI+2B[q:-.o*9OL0f uV#9$:^xR°TOd!BjB "͖h'  apr |Hk4P@^L sv )U7 ?[&K@{Jy~4ݾ%om>ľ[0N~ə%ĈG>5 ~<4{O. ý*nq'}?Qdh6V*ϲ!vScR-T>(Ԟ \f_/Qdtrh-NsPs HFh# jP2ȫ EgduKE %*!7(ҫD5~2;bdړ/8s#dLR6zQqNFÇގlοgS`iQ䚏nL-6Mz]_?YO٢f_s&Fۿ,tX6&mz_d;r]k?MOi_ŰBO?/pHc%iQT{!=t¥L;i; Qv]gV]N0vt0n9rݟՏn[PD-SU|y)>P{+̊jԟCou(~J&/)k2}ZiiXU957UV[g$kY@M/_-J݉jC.4ZW[C3[ת{M9)Ӿ<`7$abuds[A G4$H A6ƍrcpnܸcqQȋa`0$Ȩ#cmpc DDGS`SC8 uxa%(+زv0μup@{CvEʷU_tY3N* үFR4?~rEz7$m652V24MN{^n %t+3|뾟o^e/fW]n_lLS;WFf9ЁhĮY^U-ioǦ AdD<ǫh I˞Pp;g'$Q*TH'$Q*TH'$Q*TH'$Q*TH>.$#t^'AF"1vtĚi"%Xa.ne#0# 6#b2bP  V(wM-7ٌiN~jFnvNSQy^!+o:ElQID ?zo`:k%: 6|Jv4뎮n,="QZ߱eœl?4JmVa#g: 7w(sjA%UP`N=n6dJ?w% 2< g}% *%?6fG&#a!|,MDh'J&grğKnJ܃fn-VxL`܈1O#|ҽkw%EΒש4UWNL|~>$8Y~9}"@,:#ԙ0͌q5G3G\d N%E:ii |w8.j0?׸XguH~8͚dkcGs }M$: VF|kdqSe OԙU@2( LX9i_HMG _˿ίKLV-ޮ/ܿaQ1|N*h9Kݞ6 nYTWlLVZ~ nC7o~@2 T1j5G| ѝ5ۺ`.+ӤԾ_ֆقF}Un2brDˠ6ؽc>wefu̧7};6Z/MM`Q.[mYS]'/+j_r*n[t_w㩿ݹT;usp*K/y 񯶻L(:3"a@ު#v) t?/G4..w.jOj E!A&(~'=Vn\#om#n.Izw~?%z$s|g!rB,PNu]u4njsT* %[3 4ᴒͮ$-Br2ŷGr:/䮌_3k[1(4@b#M#,vOя&κRԸ'\_ 6C$=ʇ ^5ǂ uA&A $H`nܸqƍwc,1Ƌ1^t @] @;d,E/*^TcTdx1x1GFFF #BӖ`me~tFnFKHɏUb^x?'k/{ 5zˉ%x/y??"1:$^}vqbIܮOb}$#$kiݿ}k[^~{Էʷ.nUj~9^\]W$6aKD ť*S]X\~u=57ϙ~5oY[6~ƂqzQݢ2tߕ-lsi2 |P{NrךeF@ei=Mdn%X%9Vk䔴e>zY7ueN*$ՖwY~֎⫗ :cRŮԽgo-fe}%t+g3sm箬.boe*"}VwY,FY/zo~ˍ}}[xn6vo ݶ{z~ςL9 ]A]LyxzlyJ'hm1y?$-ϛ Y~E-7h'ڮ@NߌlZYpNfFeeߴ/;؜*_I;nċ者䊬ۜmH/O݃"7xv]\ѡ$@[&Ze>tw)k|4׻uɽu7ew u rپwۆ8zMֲ(z ~ה5+ @}fL0]v.Ax`dO[~ B+YfW6{Q]Iq;KMoK,QE/Ƞ z>2g+C=t$ۉYu}% hI A fƏ?~qǘcdžL^W# q1x]hbTddTdd1l #c$0 B;}uQ7Ļ{O#Z[ ?|?}o7Wm>-+yr GjF1qﯾ)\@}nKik~GUjcge׽!e("I[)mFrڞ@,-JPT6FGIٞlL*tH6FBIJfQ&}b@2.'o}Mu՟];ӲIվG=y9Tk\ulpu_ *: xOL{2j3;Ӯؗi6rDDZc|#i/sIQ7v̆mۡSIEW-ەw\1$g{A]'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH'$Q*TH^ pb ~jDF9eW00]?7H`Pv`{{>`ӿI]@>i'Ui)ҝCʮzՆ l9KIE2YZ0рmۭc̻78\Q 7 Tc=""zfoJ$H)H!y RC r32ctXzC*k{yv  =&*\p'Q’HZDeǰ>FmټoUKx.AR`Ұ)}m2WꍽHAsUԲNIa)#dzi5=!<g̳pS?WM1+k 'FA'DǨPu7+c2"T]@կTu7Gnk3 R ˠ{ sM%K&[ql%PK̦ MTQTC9-+GTN ʨmB=Ͻ%7hU_f Z[S/Ai& ށ\QwDx8_˯ .-`?d&lH(Sh4pSSwtfz&`dV}To\8ͶGϘE+ hEq}(4ؤ5}!O;.^QCC魕!إCOFے QSdj\_0Z[A!%Yh)lxVL?V0%L(s&SgŒ NBdy6H)Ɖ⣒ɪA1<$ˁc6'XԿi foRIX?x@p HrLdw~7ZE:`@us۵h捅`^b+Xl9p[چHcj:]rG;Gb+5{A*g& +E`(L<TWᶄف%6H4 ׬ta73Mo`%CrlRfF8 rfx/(Q.:AdP37f5gd9>pۘY  tR˄l5Rr:V`YW`t$73͆:[sbqi~\cxA[uYЊ (^&+* ,R} $:Uy쓍枥#i ,!;^VnCI&G*d&RHMQU3L[Zj [֗7Id>E9˻o+=3g(#лՊǓLd 8<Ӻ0B|ݭc+1J́68i^fӺ(.Pw p4W,Ey G\-=\KZUF|3=<ZȨ k2^@0}m +[ lawn UC>+%Z>xu/QɮTrO<:{e}zAKBMla=3UXN$ \joiSdy9[U-) U|Ń0'/ᖨA6דFij BՃjsFQ21#'x)C BcN 5Eø1 MHW=_ 7M<ѣ' Gc[hϾe:?_¤-T (B์eRO;(l{5Z[j6k6qk04 >/3[;ҒP@!,d6ɯ%Y$0J*m]BRµP஁ <ΔBɷFKt"a ӚIlm=ydh\G,;Lw4 TrA ҵ }Mҟ Pn>όZ7, p#Vocs[8p*R$</1l?_/rh:%| ou2 F93Os/KksŝN l5{9׎Of?-UIw;it%Xd*y;NL%SYIMQ%NBmtwwUT+cGM%Dp2K?/, Nö,ބQ+X2galxG2 *9kTXeXaU)^Psr2^&, Jp&]]կ04 ^ی GSG0d Xh5ڹ(x ?QCuӊǫ!sr[fq#pZKecIS)^nn쀜I4H4#P^i\f;c!u zO' J8Q 45,lLP$H A $H A $H A $H A $H A $H A $H 5*̠,jIY8Fެ$WOarN]|$ 1ƉYV'~?CJqwc cq7`J1'~߱`™1si\ff(DFsp/c0i˛c9"ˮڪYK kdTm!6.Ԋb,uˌNԈ0-c<2%l"7*2<@f15Q**6(EB 3d>F&#UPk˺h81Lm!w7nc\z "qbcFr90][s(_ȋ1\Tgpm(X,%F3s1 61c941RQh$qH/]ȫP34)vv!!9:"ڇ̋1Sp41oȐf1EtcqcZd*IfĹ-ɻi\;dq;lII#r$2ƌȅaTd*,EMHIfݸ(FƋ*W5lhyprwm-hyprgraphics-8f1bec6/tests/resource/images/hyprland.png000077500000000000000000012632711511007052000250340ustar00rootroot00000000000000PNG  IHDR$ pHYsnu> xiTXtXML:com.adobe.xmp [IDATx1 0 9w0ÖB#O$I$I$I$I$I$I$I$68g``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````g>=QEG؀}6lI[6 su?rcAlI}k>>U+U{ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  @ H@$  Ko+Uz_u~ߺ_^oA{ݿ~;g?=O鑿ë8puͩ~g ~S>Se8u]DԿx._?kǤd9y_9˱"ܿd|zOb ~O{t'_~uW庫G{Yڑqa@8׶M~otyw:sp¤jrՍmjrY[>؊ k7uXx r66hL :㸐 f-cw (tu/7VqHG<|j~ٷ/p\YunKZfݟ5r:9fܗl߯msxϗ 0o~u FMI&mpX==<׮ 8C_zcrEDsk ynI۝`K<ߺT\׷B`|HL9M:@0N!Mۮucr̵}xOS̛Mۅ;}o]c[vf:@0SNg٘6^UmZb`{HL@yoLlV/Iھ{0yeǻ#vs08$y~r}<".Z>ݬC{.q?z~aVh p4k֏YT浹Dlu6!&d~]وӈLsCV19}!k}2ڴeM[qoݪlV+`}[} 8įN;Dm/h1ԯ9kdi(lC&'QnFħqrsw{!"~O5G痎#`"!zܷ5Wܹvy^86|=uw.g}siGʚ-dD<-C*{<1}eヌw#⋈xv$Y-Kk}l ۉZuf45ۙpS+ajo[8g}ڝ>MlY{GlDDį"K/V19}<_k} &~&Yas;h1rR}#5#Gxl!ډ_N!mrhN{ma9m$cu'"~_%I\P~gs˺fka5-:ݒh, Q[h+G:{to hB\|LcLLk=ϻ VD|?"."Ad<#ey>O]žWwdCv?iߟf떼̴g9sG@KѦt=D}}FGI^/=AE9`Px~I!Tc?7#r{V61^`Lݒ;>%o] f[!#sįΎsjX9),g\ۇ{:=5❈""~ڨ]J} ~ɜE=;mt!dN}i5Quߦ%F.!q h͗ڿɴuPEq}V=;IW~C&ϻLDDĽgqc̰3Ǚ獈YDm!]skw{=9A?R[)B@&f(eM[k^KF_gobqoOГ\k#͈8.,"nY9&u9<]2jozxNoǽUwu~;o[`u]}<}9p`q^׸/}ڝҖs[G_k̿qy0"c!ڳŪ9&g5FTgκ;h<Te^fKV}l_joHM@VM;D9p'nKОK{6cmD|y'*zcMYw}v_T׭z^ {uZƲ!މ}~x@=20滮$d"kUúMtekfG=_/GO#~D|/xqc3RyyҾFkk5O}g on@L{ƚ3?$`hisVD>~# $m/tu[?_Gćf9zPxVBVݹsro;F2pmcq{Ră~^|S@/7_mBL:i&mpDį"EDmzw3Ū9&Ջ˵wL@ynI۝ufUw3W*T0mc:4nmu Y3sxXMƯ]\xY~9 :j6DmZb`po%|c2-`;p:~dlFUNUz\D("<">l1Ay닒}~dse՝֦Czs~|h'% _~hYT浹Dlu6!&dˇI\~=qyx9?OcrѾk<]2jozxNoǽUwu~;o?лZxܾxyd;q[דMy3A5U/ZV9T3wy_ukw:{7K[εn!}r!7EDzXx5BUsLN{7|5 ۝uhw޽Q}y}/ f=׫p*xl!́S8q[m^;kiGo"ADj60c<א'j;Ʃ>[Se=j+Uwk~"^D<ģ:5Ǟk_1O's7S PįΎsjX9),g\ۇ{:pnD|BD|0~5}>ɖe;T~9 :j6DmZb`pM |[ 8ߘL \'_$gճ}8>`RD|`K~pcKKx1|i_R>ݬC{.eqj} ް^ #8Dϲҭ5%f 1鸷'sϷ!ݮ*""~o>Li{7&5^jɨCjӞV5oNoǽUwu~;oZտ{^=6rgѶ:@[ G-k|wk7 hy^c"nEE\9xyjKٲ}<~o_YD.'Az?Yik3A5U/ZV9t2wy_ukw:{7K[εn!}CݟDăx @YbyD0枱}:pJԮ]vИ8: 퀢oVNB]G_{;Mgdz'-y|ɨUwfԯmY#c}Y_>8S;ă~^|S@/7_mBL:i&m/}/ {Yb {M׈[6wnI۝`K<ߺT\׷BA9 |u6u1`NB\] 6:嬙k~_>W"⃈}_Kv}Vhk{m׊WRY~9 :j6DmZb`|[ 8ߘL \'_$gճ}8>{=">vD!ˁcxw5F XunzOMߙ{^W"\:pk֏m>dW׼6&Ĥb=ߺtI#qyjZ7}!ޘ>^k^3^,'M{ޚ|xNoǽUwu~;o*?oNK9#ڄR{v:@[ G̭us|wk7 hy^cA{qD;߮ce6{f5{ KY(h{T5Plkh_K5gPs;g ~j),mI;׺:k|e޽_𾈈"ۿ!u7&qא< >$>x{X/2^zL3#<# tH!́S8q[m^;k`;<'y:Xm!{f^}k5j!'_+=5N_XX[2[Ro)i +9 H9ZհnAjٚa9:xw/"7aR1tyF2/OW#k^KYfa辳7_} `=c͙T'(Ԯ]vИ8: 퀢oVNB]G_sMD܋IK/9?57{MyL XunKZfݟ5r:9fܗl߯Sp\LlS\s?"kKJdZv:iu(]"8>H!݋q4"ni9kk o5b1/Q!z?Y^;нwK?wxR[Q.|ͧJuۄt[쓹[n>B\~IDiD<۲Mi{7&g^c~ל}2ڴ筩ϗx[x*[愽}pd&_>bn^QDÄQED86x"[gۈxos08$y~lY>k koIwm:wO{oL}z ,kU˿akz ub?}5|unkBV5>0#`W9}@yyxz#~iv0zr4'ȱ^ed+ofGMN8Վa|_h楿^[XFq_XMI8nߟ5bA JxO߫Sj4V?x[!sg<Ѓ&`uw]_iID9֪u T̀ {ϻ#❸DOn8h BNzX5i㹽fMwjIԦ=oM}L<*U:7ys'^= M/ko}[7ίKv ;5%lD0".wb]פF=k~T|~x?k^e`j m=m}7g"]BI"3|u6uvhviGʚ-dD~pתWj= >$>x{X/2^zL3##M@CMnjlj0/li-,^M݈""~oTT yyר/zd=:EFcY`oEnJپ0}Ƴuj +9 H9ZհnAjٚa9:xLDD" ^^ɖh3Սl5wf떼̴g9s,TKu~m}([f$m/tеDį"aD,"^,129xNZ}^N>]5[FNS'nj:<_5|p*:ă~^|S@/7_mBL:iz3zҚ܃R{Yc՜paX+1ݒ;fUw3W39 M/绮sjX9),g\ۇ 3㍈("E񲽴g8ע}/5^(L{W}H's@tlL3۔5%hK Rp1NZJWH26Ϫg'i*qlē<8 "ދWJλ o%i[/%c^R}2*`՝Y'=k7}gyWj fS`L}}ksmBL:-k@_FhZ'a;c՜5˽[+M{ޚ|xNoǽUwu~;o<^O-z7P]_jNh |A5n_#N{Fa-vkm3ZD|GO#xڳg8ע}7^^ sRy}Y4s=(~5+A䟉t $Ў @"Ԟn.HYG_z6_ՈeD<"6h}|曓ec^R}d;q[ݬ[q;S^ZUnuؚ^8 ub?}5|unkBV5w#AD܋7Zͻ6f#(6/O{o5^= >$>x{X/2^zL3#mM@CMnjlj0/li-,^ӾMEqW̫ ge]zjk&/z^ {uZƲZߊGϕ}+`g7r0滮$d"kUúMtekfG=oٟGĭ\|5>c/ȵ״!/zHv04ۻ)7_} `=c͙N|];ί1>pu^E{K9ެAyxQ%ߗ?:v>L5нͺ?k4ur̸/Uپ_#\Lqy0=1Xiwsuw\;3]# !ѩV1m&>lS\s4k/_mv rpv5;~qy&h"sXUߍ˯aߏ7Gͻ,?`qH坼}\y w\ XunzOMߙ{^@QNm!m_~he-/}=~nxi gZg]Cx?xDĭQIU9zcr׼^ kɨCjӞ>_&[qoݪlϛz0s|J2Rǀ5uXc펇 ;5֦qy~D|`mg8rB^>k{MKY(h{T5Plk?n&$Y-KǕ߫?,'Az?Yik3A5U/ZV9'&\Ҟ|;| iiunkBV5mގ?ϻZ!wҳŪ7&x9BfG=+U{cX/2^zL3#8'!O!en+)0/li-,^SM7#⣈x^jFE{0dkჽ6TyJxO߫Sj4V?x[!cu  u6u}='!)X-hS-[3>2!soFĽ0枱}skmyt=D}}Fj،=-A]x/.~̻{${TYJcxkJ>a&B61㾬We~ G8´|0WN_hoTڄt/2>ikۍ;*'@Yb뿏g^#kwZnI۝u}m}3[ׂ*㻙+VXBHO4mB|=uw] S&mWúͱNa9k>O~_FW- {w_5^;3]# !ѩV1m&>lS\s =G5ͯ6h;Lt98JW8<49[*q]+"nE#"">ͻ"? =$y~N^>4/5bi%BVݹ~qw{=~|#M;k֏m>B奯'ԯCܭ/mLk7z%.25m:cB [19}G5r}2ڴ筩ϗx[x*[愽}t'hB/[IWjk'mӛq/"D[6G+ﭽfk(e_:ϚGٟE3أg[bOtMHAi 8n YL 8G׳O4p7Iwm:wO{oL}z ,kU˿akzd0I[u3*]?/xjo9W[37"⽈Dk4UAŪ7&5󓽆bτB>O0^;hި>˼̾lm?@:0_\V:Ҟ-mB{6/r5ED|5G@{0/goFĽx溆BcB2gUoLNso]ԸXYݒ;fUw3W:&ӗڻ\|ǀ9u hrv5fnF0"~ T0/ݾ{M}؛%ۙiʶ!dN}i5Qyf溄)\W&]_z -`ox/"G'Z̻? =$y~N^>s k'{}odT;wO{8nx{X/2^zL3#P}}2missycy*7#x\#Tސ%gݿ܇{ is𞚿Wh, HT߭\)۷BSyv _w]h]Ws2ra݂&:ղ53k߈"AD|[܉+f×社YDĝx5;Gڙk{}-y^)k kn>P/_h.h;Lt98=L_[ovaD|_E;Ǐ{HyCqX}\i k{M.V'sts{{/{޽d+ofg%i!R{a_B:}QjbqPc ".|ږbu X`\=,}Qt^^}GcuyC{κ㾙kA̕|}+;z 8)_j8&{nk"u Hg[Oe޵jwxt5?fG5Z϶sl h= gjrh]nfLL&M}Yk0"^yת=68$y~2JǕݽFk5;vVk/4_3v>h|-p5vИ8: [FE@=sE ".|Lp|} ,}Qt^^}GcuQʅt9˼̾lm=':!EJ{ʶ9 9ۼwkf{MDD܌"AD<"?IЌ [v|={i'r𞚿Wh, HT߭\)۷BSyv 8;Pju6I_|v{Jv8L 5~3"aһ\=em^{{ /X VOѽw on@MYKXs—ۏvԞ_Ac"|DCŬeAv!'3o嗤/"ⳈUs܇ϻ )!U}1싽߬V's4s{{/{ `3v0/ͯN!ި~ 1_CFD_8"ңN?<' 8K_w5㽆tk֬nI۝u}m}3[ׂ*㻙+Vw*?$0=pL|=23j=ExfM>]?"ˈx׳?4~^ÿkzvf:\_Ng٘6^Ug)kkN@|tjɴuPũ癠aBu\q;">?_8˼k`8$y~2Jw To?֤1!\?j50/DŽ, n5Gp6N!]סmVpuvm{͈("D#NzZs`{h=w;z8/>^o\M{ޚ|xNoǽUwu~;o*?oNK { |vs+V&mWâk60ᵌϛq?.޵bAW}w~~~x?k^e`j mJپzͥ{{@R5 jlCB&rA&&,ߵo嗢/"Ⳉ˼kDpblSלg],60ѥvf/N=M}sFD<.~vp8SVqH坼}|uF>ݬ53qs+x mNw]he-/}=~nxi gZg8>oGWk|,s=tX.9ON[;eNoǽUwu~;o*?oNK9 H͗חͭ$kZ_] fsQDÄaD\Dc]pۤ~ּ>,9h ~?ϕ}+K4sp#q V9n YL 8G׳]VD|"j~O?=|"$Y-Kw^`nl ۉZuf4o&4& u`sXs"(@{ԁ#|1>pu^ٻYڒvu XoFKޞ,E.smsE;G`59Lv?#& %/wM k2rXi޿)\GZVI%+%2~%8rhby.z~}V$(rB$h %9Qm=uj]]F`o,5+$˒`Ljvx=B@[\;SV?+V:%趗.I$'"_`wܙ]bkt{τ/31~Ubh}\}&={׭xHzVYKXst'V|v:D˭/.>W=䇫90CaRIƼs{U?kD]/}vH`oXx K^) @ٍ6ILɜu '}?/;O4>G'8A"I.c19m=ψ3CwHա[vW]_[q{,㻙+Ve{$֊}޵"y=;^EG/$^>|s~:S w]&~JgWstHPN$g٘6^3*kל9КU,{W LtٻFK/=$M$ykyWg9XfUɧ}:7ޜOJ0杻USNGICu]c-Z_oP,uNI塯Wؿmsxh XgI|y̱Ɨ/kaLYI|crzg)ibZj|YVx%`5qXYb{NNiy^{nn_]+B{rai6%3I>O]/q~+=b~f|!g gGcIQgs%XLk܏yXr]Wnُ+%g/dDG}~`e{{%^YcUb)q1|Αj ۙ:8O:-dn;kHPъ/u,szH>pu unke_&>o@/7ywM0I]c19m=ϐ3Ifۦ|CSkyY,&z ZVI%+%2~%8rhb|}ѦyI:Ao3D< ֩wurMxL۷,K"@ .=1zu^^iw~VuJ4m/$%6ɛ-sn;Sߪ#ϔ3fjLzſ뛝[>`@V|v:D˭/.MQٵzy'tCYi|Ny~~|1λ_`;w+M/{ųd6$ngG]Xz&NI:]nIbbOW/o$<ɋkg/]~$uMzi~Ϣ %/wM k2rX+s`hŗP[%_`lK^ho=LuIFʴI"+A;~&(G:5._XNַIcϕiVe{HОgmWg+zzݙY)DlLHz?&.gIw̛͹L.o|z?Ϥ󰿩 c>>cfV$Xsl%9f!V|v:D˭/.z!_W|f.^>wOtu_8T&,M̻_`;w+M/{ųd6ˑ`f+^>;Œ}E/3.wJrvM{bHn.Z5kƧVbwM0gEb7&kts?re_Vx7s^0nJ`Y`,K_cskž^qZL<fg/q{$y+|$873U0~j/3zk)v19:}}$(rtlLYmkΜ[YC;ͯ6h;%wf_{I4Q7;~B.VHcs8lcP/gӍza>Y* wV>g}JMP][K֗\,uNI塯WؿmsxhK_&1$ok|&lԡԙq6&~f9OU/. Sz_$XKV޵"//fsQGdr-W*$$yYM jS~fat.mVt%W&υ6iMy}@/ @itq3N`4cu^].Ύf?d枽`"M]g&6W*i>a?g>8lcPOgzu78# :Yڣ.\\pEץw|Ny~~ϴǩK8AҸWk]ru`̹6NS'3L3C{㾙Yw3W$@S{x=ZWܻVu;+]# @9SfcxMl%^s @\ ^ЎrkN &]٥tgMԍ~L^KIyơHP|zs g{f>Y* wVO:k%0uj}IHp)K6|TC_+%z:%貖^a:-=W$$$yjνe̱Ɨ/_sR'~̛O$߱U/^nǽ]X0/%ֿX/kͭ"kkE^h_n=,XdWL_Q^Hvh?1~5~ϺCy[VpnEYk}k\hlєG NK3r@[.gGWJ2Qs^0Ɋ&-d|-wH~_(?>Ěq9XpUb)q1|}?&$2qo//VuZ8>N$(w3%`Kgi[ˎ['`ٝ^gfhKd|2YK/ |s@yäO&y?Wg^>zNb&3a^V?KmxtdŗP[%_`lK^ho=L{In'1ꎗ贩ݞSw$jw{?qN\ϣ`Wh,'X$1nʴ}+ =a$8,?8{^.++kj=S|V?&yK&}XnNGy3ybC̢$sLkse[e-apie^jKr LtI0$zqq\Oi%*;`1˗?ts`4"CXkz>y_g৑`2杻Xz~[Y#zS?E{!$8Ғ UR{=^i7:%t9&=W5$'f|f;;;^DgEb7&ǵ컹˶w+k+<z/e|7s^J,}pqp^jr[+{׊g)0s<{lϒNmpmO0ߜ]}gL|vvV:Gr*'H>ƴ5VYK,hS\4R{=C;ʭ.h;%wf_{I4qᲟE)}G<[bUɧώLl?#쓥ynTQP]XK֗< *X\.) @< סmmwIc׋k|%0*ա{1ߘgsV;//]bտxvIbM>ü~X`g$ K>ܟnK9VI^J$7|' L/Mmxf+N, f5qx.^Ihʿ-4$!@S\|#z]\hnf%g/dD)$_$~?_f?[ 9x38ĖSc/L'վAtX}io&8u^Xs<> ή+ٞmdkV8wۿ{Dl\=[-7LM.7+- g/]$Io3sp$.F/+7MXYMo.CJ{ɲ[%֪R2~%8rhb$Mr3ɟ\w;kSw$h/9'5(X%k4 6I2[2mJ ty!Ku^^iwXSkaM˞EILJǚ*!G'pwv~?۾'3~N_ -Y$!Hp~~O;O.a _ {$L&a^V?K0.ݓ$/[G/p^h_n=,_$2$M6Ў/uU7Gq|IPz`Sg9JCt}}1.4Q/?WVl˖'OIKYggYgc5t]/Zs@y䤯OgwF;/.F/+7MXYMo."@^i/Yv$ZuZ{[\B{$GaM\z/{5ɷInvg6-ҮQ$t{v?[ogID< ֩wurMxL۷.?D[8{^.++kj=SkIϖIC.&5#U8C~si%kݳ}g$gUsfsNs9& 5q湲xTf^jKr LtI0$zqYBIIUe˧I_n?;KOpf*?.Z8F>Mg'43z?[ 敾?+̃mg ~&:~UlbZ9MqqoQa  JCt}}1.4Q/?Wo˹zqfaI:3-F9 krOSg~6my!oJUW)1Z׋c1(Kp~F|:ϗmVUVx7s^0nJ $d^..w}xQ{X~5Bϓ|zUxL/pb Oc]Gh?gy$UYvN_Iʩ l4kbxf[e-aH߼^ЎrkN &]%igM$7S{$}t[ az>7d$cq*Zu8J`km Й5>…׬OVW< סmhϋI~INI?sx]/Z s`:tO0̾}uiiŽZlǽ]Ƽ}X#t܋$/[G/p^h_n=,ϱg|F?&㵜 ]v8?vaѾ'vuv~?c>4♭:݊$ ߛ϶seھHpn.އ3r@[.w$5ԌOc]{~jb'Yal|_g>oT;tX}io&8u@l[y}X#%xt)d~=ĘQXAG@ Ɩƌ~%rr?/-oHp^' $I_S?M=#MfIf6}Zc=g6qٻZ`Z.lʕ`bkvHpq`=Lt=ɟruawpOk6ޮQ$t7s9Qs=uj]]F`o,5+$ J\>7$W ʵw9S5iM$$>ɷI޼ȚY5U~wjˍ73K3>>|݊$km5R{=^jt@)DCc7|K_$ya- W/h<E*֔1|a?ӿ7掃WJ0&B{,=խou٩# @\W( LfT6^o~uJ0 k_mL"L$/ݻ.i93'Jh] !T8s/c19M=~v?ikw+k+<z/e|7s^J$h%I Dr]-\)~lC/by { Oc]Gl߻I&q?ng9:}}$(rtlLYm5. }xT LtٻFK/=]ʾ$I]O%ޖI&WwUVeơHP|z>~_OJ0杻USNGICu]c-Z_Nx}p!i b^a:Ry5W$,3E?㙩M0́)= oLNWg~:N$(w3@G+kO6&!Ƥ$7Ǻ_ =uL2ѡg\]$ϕk$kO$`59kꧩskڱЌIXryY,&7{t$h%ښm\LLI.7.ſLiʖ,ǙM-$ @  @19]cE(X%k4 6I2[2mJ@.dY9&Dr]W˙bM]<ēI>LM%w%8ɪe=k3UXnNG>cޯ] f3s؟K1I3ϕm5 J}x/G\`!уsi[InߏŞ}LY< ,4E*֔~a8x$cq*WQK9EJҾFG]d4kz_zSQ-Ibr}$ߟ\{g&u`7&K{LpkM<_[vW]_[q{,㻙+Vz=/Η& $vpK \O|IIr|ewJ3 43U0~hߵ=&#| U>S9 @:h6Ĭ̶ZšMj\4/3ܚrS.{hv)ŹY/eIn&y?ɓbIyWg9XfUɧώ{lps^OJ0&Z'z$桺Z/If @E^i_.\H2q…ؿ塯Wؿms,y6I$6zF[+O$ݓtxu1ó*{exk˭KkeL$XЖ{rcseo'Gl?$I}?'y#ɵ˵Q/uϕiVk`QT}h=ú*W rqD%,}7I~Lsl~/|2P$[NY{{C'վAtX}io&8u^Xs2=<̯?*`5(.9.Ζ$_$$ϵ9'%XT~&$I_S?M=c[{ #MfIf}7n>kW7&a^V?KPqf.WS_CˍˊIm󘠿/VKIJr3W^;͒M83E$(rB$(7&kk{ps%^rN:'jQNͿKh4me|seھ>$…\>7$W ʵw9S5J4v|hsdG_2YtwjˍȷG#B:FNksLkse[e-a! ~^jK.h;%rqvH`cILr#(lc~I$`q(?Tώ{ qc)^;^) x UFg~$H0 QQ.$8Zmx`_+_m<ZKZ&1$?$H_4{ =r1&])Y-3Ыky\&# H4/Η& $vpK .SGI~JCwkSpmO9?څTccn$kfVH~򹲭'L\4/3ܚrS.{hv)Ź}Z$7|)gl~?80V4C71|j)n$:{1gTӎSTQP]XK֗$UH0QQ.$8ZB_+_^|$w&3mngStl0C$cν4xf-ksoVx%`5qXro{V"Z/kͭ">QK{=WIn%k:G%Pi w{=㼭lVt%}̱&υ6iM!y@E#z^%.NVn~ *Dxu"|/Qg.l~/~aSߟ%ag=s| žAtX}ʞ}s4ǩ$zq:oCI0+=<̯3a$7$(W?]s\ εϹz$-NJ֙ߛ?H EbOSX{<~Rf}7n>_RkyY,&7{a$D[C_+W! e$yL$&1$oy6K6\Mۇ׭_ӵ=qAtN:jQNͿKh4me|seھH03/Ԗ.sLz嶼@;y.g56+%[\bb='pAwvmbmߵ=|GIm1Rud^۟cXg+*k k`.+z^orS.gD//q'O|'+%{H}{ߛp,3ÜÏUL2sR18cn}gNI!@^i_.\H2qRJ{) Wܿz$1y1In%'c|H(h3֪C$c19]=^LU,9y3﷕KB[BseH~Kj@z嶸@;GK  I~\]{&4sSpmO9?څD|$cymҷ>ޚ[>""ʶZš]hx^jghG5% @]Rγ7|Fw"7䍩%mv֧j5Zj$$ :JeuBӬ.Uo-}uh܋_J$%=ϖndc5ߛI.cν4xyIn1KsoVx%`5qXro{p$ܘx:z~ه;j~Ibyb$_%y-ow̱F&*9Mۇwb8ccw{By[- ӭ8K`cMޟ m>o C  ÏDR{r;%Rn~ *Dxd=$?f貏ϖMJ|aNN_q$}RdKէjh2S7IJ~upWڋK-cL+e/9./1ɍeNc,D$c~Z- ߤI_S?M=c{Z7F/.Fo6}&XYb3$D[C_+W! e$yT%ɭ\]{aY gm>ir=suܘ}/ʭ=vySi 31I3ϕmHp ^i/ZR\kS.gDՌ$o'*wI~uO;6.c~|}{;YsM""0c|0o?d~J{,=խou٩8# JeK2QNwzSN_s|%\t?J΁q$1ߘ/˭=yqy\ Z5fYS}KB[BseDKJtcL\n~`b1w"yʪ{I~Jr'/{vo'ӜT]}cfn$kfVԧ+*k ^\/bL5% Rz>|yv-I\]{cbwx6?}{{Yspq1|rac\O] iǩh}։^( yk% {Ҽ>q'([D[Zz6f|ǺlvNv(0X_;z2%H_txre~c7ޯ%߰U㡭KkrHg$ K>ܿ-G/SVÞKqJ$/5'l}bw4|:t♭:݊$ֺ9z&#I'^\?KtIK^i_tZ$x&GI/A.>6u[}%^5"qPrz>$cgҸ//X5 Fq|IPz`Sg mR{D˹=GuK2ru1V_%yrH֙T{@I.~z<6Xiibbmgc=g4 8hkyrJ01Z;$ܸ6_d?$w|'ZdOwhS=suܘ}1=y9霨G:5._XNַIcϕiV!^g$Wr]kt$$o'vj_c_twjˍik{f&ݯ] f3s؟K1I3ϕmǐh^i/ZR\kS.gD$?%ظ~vIbߛwεQ"CXkzs ?ch8x$cq*WQK$ʼҾFْL,]xFǑ$_&$_ݒ`|NNrD5 h "ߤ1ߘ1ϭ=zJI;~[18jYmpMG `9Tvm:$Z-clEIJr3W^ߏSvd9ڞ`Os~:S w>7XMԥo}$Xs9_/$"iʌi0 J{r^[S]H0Qo.IwٿIIr#wI:fI4Q7}~ouP$~M>e=9o1Ѝ=&zb>v1t;s[Z'zvn ǽZ'@%^i-Dr]Uo-}uhOҖ7!W޾HX=Y{ʯwݓtxin1ћ*{eKw/oǽ]X0/* 8 ~P{%mI.7{n=>b.J$)nlB?}Xh>4♭:݊$ֺ9z&#I @5^i/ʏD޿.g33 GI~Jr7;5-Ddw7煮Sh<E*D?1q__{j&8u^p*TmR{D˹=G^hgגoIKI-ELoxH05=&nc9d$.Fo6}֮nL>ü~XID[C_+W! e$FI~H$O>.[g&-I"+Arcr=F?_D< ֩wurMxL۷p>T\n7$Wh4krXS'ÞKqIUe+]Z{t{w*v1ty,zI`.9$&b$I!Hp+c])Y-~UZo& ͕m>o-IPWڵdrkSGS*a&<$Q/,SpmOL.ߥ3cgn.}# z>&)+39@+ER{=~[oMuI Dk4$ej?7In$:[I3$ ]`4"Co)cxmc1՜}RbvN;NESNB0{d},AYx}6OP$˕̠W< סm?my/I~Ja}L[jϊ17 0C$c19m=>cjyZeXwUSKkrI0j- 旗{ϭ}[޿ܫ=l$y%ɗIn%"BٍMT(Y]=TMmxf+N, g5qx.^IH6$Wڋ#ѩ/c|YL9w;WInkso&'C+yWFq(U-==$] ߋU,m4ǩ$6u!l^^j^h9`\G( '2ɍ$%yٲ@[$XT~&$I_S?]=c{Ĕy~iv1zXɸm]ݦ'Vaܫ%@ p hkyrJ01Z;$ܸm~3W/6Hsbْ83i1N_ӵ$_*W{szDFc)vo& ͕m>`z+Ed9&DrGե\{3Ś/&C[I~z=S3_c_l._s[cݯ] f3# yn51zVYKx$Wڋzn:ך`!у>JSIPvKi}uK0&TǡHPeOw=8^) x-lr[k2>3LW([vzݸ כ_t=u-{I$&yl#F9vZ&0Y. b7&S{s`~ӮoYTxjf]Å6i3JtcL\n~`b1w"y)f&|6Aٝ匆kYXGXkپX=zcnҷ>ޜmpse4 fz?ܭ\`5]Mю|v$ye}[q7戴T}0Cʞ4e=91={nb,`;w+bnuc9DfSW}c=87 (fyI[//[G/px}r_ųI~4cO+.{ċZ<\[qZ3ǚ8?Z/ۤ}$ T$+Ec1p?&<I\<${^hwjO8Y_U)q1|m~cg=/] qF$KMq& @齾M_IЉWڋK-cL+e{}$Ir#IJrmMqhK. W5 dVKp7bOSk{ f쓥4Td6}֮nrg0 (%ښm\LLI.7.+&x6$?%p=LȞ,צ$ @  @19m>c D< ֩wuR~M>+ۤ}$ $+Ed9&Dr]W˙zM$$2|sl$Hؿ]Zsm1RTs96Ϛ~l%? :J{r^_ZSLt8;$zIV/*|q},mYyWex*{ҔfXqJIƼsw8OݬK}i+~3Z_Iiy}%(Xn׍J{) @ه_O$y7ɍ$%yklc-Gr8L0 a8] ŘoLN[=1<].Y-3^UZo& ͕m>} Pt;drkSGSSǽ$aƼex8?va}/1{KHzs^IEΕ$8hx^jKrVz{h\ . Q^iɏD޿.g3q~3$?%,5{f5n}zyWex*{Ҕ^cXyϋbCt`Q5 Fq|IPz`Sg$%Ip.h{^{]\sLz%>\]/IV?[F. =Lj$~^/&}MtpS*{b&vuOޗøW?K/R$`B.lʕ`bkvHpqY/ Yo9ɻI\b-'i6IP~:HPnLN׾'{LY睕ΉzyS588|.4WIH2$C/Dy&?7$W ʵw9So$&[n% S ̱Ul#bDvajOܭ$1ޤUsb}$?ߍ&_/*k HpI({g^j׎k;hLVKN$zwI&[W1I/UwU>ǡ'MY{+{Lww^7^) wNg0u/{oF  Q$q^i7:%t93v+ɟkd}lɶ,~f~ }U:$H_tx"{lwkvdxk̲WW7k8|.4WIȿNz΅-mi:$Z-clƥw_'{|| &x8?va}1o^$k7E`?\>\?GZWKx^].J0QoSݎ'/yaŞ㰡ߧ(w,4E*Scc7򰿁*P1ܭZu8nZրy}ܫ%  & tDۨlI& c\D_,W|N. ryNv(0M0́)= oLN[X:7$ȶ. Sz}$N7z TkuoSI>kKz6wci6FvW(Yh|sjb{}n1SDy[- ӭ8K`cMޟ m>T4߇N=&^] gõ$'Ko|91%=S?̻s8ĖSc}ǀ1q__{j&8u^%@@ ^j^/s9&Dqes_w|yL[$XT~&$I_S?]=c;{,ʔy~iv1zXɸm]ݦ'Vaܫ%I@3.lʕ`bkvHpq7 z$9Y1&Ufr49z=suܘ}o1O{LWo=uZ$8F_Å6iIpQT4/Ԗ.Jz@[\{3s\z#7I>HrM V\5 ʯZڅԹ|mcOqm9S>؟؊6ɜvl%V"@5QϼԮ]vИ`;pHP}z'\`re}L𧻓?ts`4"?Ub)q1x 1qJIƼsw'?u.qdʑҾFْL,]}}) @c$In'C<+F,Gcǩe90e'ic)8ϵwbܿ-^hoEIHf$MqNV)Y]o1{CmVgt+:ΒX{XBeG_T4߇tM=&^]Ίϔ=I=[;$[uM?ǡHT%w{ 9i_b^`i8>N$(w3s`@ ^j^/s9&Dqcʾ$Kr#gI9[o$kO$`59kꧫS{xc!cd$.F/+7M}9`IhkyrJ01Z;$ܸof|{8h=Y$ De @19mcX {zH?mS7u[I\o׋6IHzڹ2cK`F+^@J}x/+Z &]z*=Y|<Կm@Qwkz[&$]8|OY{{Lcv9jC3uֹ[>UDq.ޭW_KqHpqյ0_קAn gmўz1$8~=I Eb7&LJg~07$ȶ. Sz$?1.h;-\n~y:z~ه O$y=ɟs2^f]29O96C]v`i{f1o1~Z<\[qZ3ǚ8?Z/>X(޿"磸^M$w|zvHp9^5v/w+Ͻ`4aMN_=ּǞyV:cIz|WB}cFi,HIp.h{^{ιǡSI>Hr;7I8M/gˤm\[m^oҋŤo1=}j>Y* @q5r≯;Kf%eHD_6+m$Ӕd9ɷI>K&;k|us$(7&m{Ǥ8 QNh4bky\J$8 h5B0cL+zڻ?S^N$wru*{ؘd%N}L._=}ym9S>؟W/GYӯm$B5^ڵՒlSI~$iZM$n>`"u 0q1|sAcҧ쓥yngͺԗݷ0@ ƏmN+k-Dr;n\18&m|O%4ɍ$& 5Wl.rV$B"}1~Ǥf$sy_ _5߬ky\ $8 hK=$过@[Xn^0nyN#'֔=v/}D 秱.eǨsԥo}$Xs9_/$!iʌi'@7+^@J}x/+Z &]z$_&I^{kz[&gw̽`4"Cpzw _c;{CM2gX( wVq]JMP][K< 삆W'neK2z?$˶Q^p}i w=6~U߉W♭:݊$ֺ9z@W Vk1zx/r>.s$_&y( ef5k^ ]sp3?Co*Ǩ7퇚eΪbCt`# @rm7oNs) mKI^if/k9`81ɝ$lrLI̵վ1&jI&X_Licח쓥4-~'Y#ˌ2 Jceˬ`>h[mn9W.I.7.ۿ/}I~HKW=L$whSs{N$ @19}~ǬcXzHOr;ɟ\5=nI]I Eb7&=$/MR Z5f[S}C曵vM>+>BKZ+wI2kwy>=I~lSwrĿQ-&ֿ_11c]J{ba=ŔMԥo}$Xs9_/$se4ZVz/+Z &]zqy+ɷIn&y/5cl}`8syWeM8Scxmeo[sUc$c޹[9wV+Y7ICun-p_삆W'neK2zj/I$̱o6JuۋhϤqQc$B"}1=ǸyVIaƂ[qo)c=Kg 4$8BxL^iohBkuoysu;WI^’jl߫.Xi{L~Ǽt♭:݊$ֺ9z$8ʪ^tM=&^jEǖGI$އ`n'^j[oU{Sh<ES=NxV:cIzxkP|sH^JJ{6{^{ιѩגoIn%GϺtNйOIn^8*QNh4ky\$8ڊ/'^i/1I&mr]<$w$gJ&X5U>zUh[C0~5j^žd'/] vL_I l`dNO;WUGe/xf^jK.h;%rqv|)\]|&I~W;ݒ4*[I]7 CJ5e=;O1{ 'K%ݩrͺԗ:%t$ҾFْL,c2g_K$|^_mt7?9ZiAŘoLN_g 67J1j֘mMoz5q<\hl`&T Wڵdmb}x:H$?$.`{XK&9?va.Ӿ=&ŔMԥo}$Xs9_/$se4!@%^J{r^1zz:oJu7o uזDu㰡ߧ(w,4E*ScĿcmuVO:k wk<>I$X ^i-{vi$J?o6JuۋhL5\l=I Eb7&ǯ).՜o# {$L&a^:KJ /:(ф$jseߖϯ'In'}g-K&9CKc]s=&oozjVpnEYkwk\hl:PѪ^tM=&^jEDzѫIIC.:Ι2zLV]+ƾ>~t]s|9XfAUb)@cʯ:% [ A5`M&uXU-{9+5zus1 &ꝏbN\nM^7],9[&m$땽|eHp5=FOO'K%hv1w|6ukWrwg @ 6ӏrY# }}r\$SI~$&,s'IT}O;O$L$(7&coW{ zH&ΕmIPݲc^\/v\m`KQM$?%䍶rpGݒtZ_Q0:k2P$~kMY7=~v8x$c޹;SYҸpqIx}%(X=̹q^aLkI~Vof$iĤJ{D\/|crz\co7IOAVlkO7vWYfM>ü$IxL^iohBkuwjSI~VoyZ2Q͑m{X%`gKc]K=Omxf+NtE`?$^$-(A٬z1+Ec1^|˿^Bҩ-. g7 h<$wMN=گL'K%hv1w|6ukWrw.Fpsqq}]\ &+Ws:OIn'y2mB{=L$whӜh=suܘ'{scξ:y"588|.4W$-8Z+ed9&Dr]WgB~d ]پk{sMjg92}}$?_&_/*k S`f۪e{f^jK׹)D$9'Q{zI>qFهyıY6>xl$^oy}~9XfƄ{z&II .FNL4_vq1R{/r>>$I\]6z˙2Y;$LL|_6U_s xcџO__>U|,:Mk¸3$fK^i/f/kKkI0Q|JiIK$˶9[&m$kεmGs@y䤯=Ft铥4;f>}9;'%psqq}]\ &+fwI>N/7ٿA;Lm:9zԺAT$|'{+G:-_Xsۯ硹Hъ/'^i/ˏ1I&mr[]#+INLa1M0<钉F{8]{a1+jg92}}$?$sB~ڹ?Ӧ˗z/_js].ۏ'S۹Xg}Gc} /N1%(0g[|V/|Vً{~{ݯ`;w~bS7R_wJeK2Q\{s>Ø\}-{In&/VVLtvJtfο^~$ݓ<{~ccydo­1_ _5߬ky8&+UIpn\u&m$R{v@[XnH\ z3L<&tdͳqڅ۾rԥo}$Xs9_/$ºYHp /_WkY^jWn LۻlSI~䥹SRAxy"Ęk]?؈׋ͻT=*ߡUVًK{~7WIO'muVO:-oB}` O;II ^i-{>>d=[$y[_W*Q^<UhOP3LaLYI|crzN_{/I.a 'jw^ݬz<2 .eK.F&$?V[G/<$7HG:kD5GyUb}}i w=䣫X>7IɼlVtN|hl$ '%%t@^M=&^j;I~H$&.J2!;wL41I4θ$c+?ۘpOPGcL'//VuZ>Mq& 5a8 Vtm%Z5$8ܗ|n?&yD_,l9<o$b`0kK{Lw_OJbq5r>i%Mc?ܜ~\\`C_+W D8$suQkKb{_Ga+Ab}̹˷e.[_<X3Wc=uZ$8F_Cs#Z69$u^S]O$y'ɍ?tz}س6EqؚY5v1q?S'݃۾k+J{wsdH`^-=I8sE,Ilʾ|^iYRu6wJ0QzIN$|䥟J`cXUc}L&aޝc_`V/|VًK{k~eI1ܝ)OݬK}i' N+k-DraΕ^J$w>IbڏY++&a:[KcQ[3Y] s`:tO0cꓥb1뚚?8jYmpLTW$ZMRs]wIzvy1D$$?$zV$bO{XBŵ-Xiyj~;M]G5כ}MG۔}^NϺR{r\`L}2'In&?h3&aCOQ0ﺍ9XhUɧ7od,`;w֧j7zv>'@B=Ipqյϕ=^Յfb3Qv{ء?U>UaޝOOmE*x1|_ :Sv,j4ǩ$քqHp^hVWkK-cLuɲ_ΖI$땽|CO7$w>LܿM'K%hv1w|6ukWrw# *:~9`yr.WΕqD.9ɭ$_$ydmisVky=>cL}=g2V!HpMpkFx'~+G:-_Xsۯ硹<C,e^izp9&Dr]WE\]칛wI^M|,&//ZsBڅ;}/wo/] vL_I l`dNO;W'@[\TAJ{r>>b;$ܘ?dϓ#ɝ$oeH`Z?k,{]9y?r!_T&kMY÷o O`;w~bS7R_w$<^i_lI& ksL;JYIOQkg6gEDL^goDKJ{sL'qmF~flOAVƬkjxjf]1Q]87 Ү h5iKu% 뵷{{I~Ջ 0.b/w.tfqǦ.}# z>&H $!\>[WkbX,=I^M$w|䅋V <;[?jkyws3whćUɧC 7?P%c$c޹[>U봼k 5`?1˒0^h'I.;.^5~๲r%ɝ\]yc\RF rn{(`&u`7&Ý$I<o#kw^ݬzHP4D\+MH2~6_kO&y?ɭ$'y{3e#GyK.#c}}٨o7ĭIsVgt+:K'p^ICHCu|ڹhPsL{2ܻ%y/Indp'C};k98[<ĖS$KrcxoƘ /v1tK ~/JrmVk0< ne{f^.r9&$Ir7I^<|=,l$땽| smX Ť/woW铥4;f>}9;$4? ;ur%pkӹ$wuZ MZs(wfjs!cz"2uܘ7{kwzHu>sLz@[܇|V| l3e<0~v}dղsL.1S|c|% ]>؟؊6ɜvOIPFAJ{r>>b;$ܘJ^rBǵΊ!у}c9. ZgfysJ|Q围J5e=z ?޿1~ڿ9&WJ0杻S}?1u/;"$(E`W([Ü+$Lr7ZS"FIb"֧Lu[i90e'y};RμVoz5q<S`F\u&m$XvyqJ_:S$O1GG_2pb6uࡋ0~Z7 76u[I\o׋6In @=.-+5tl},vm^"SI~v]{SRAxy6 _oliqZ9Ŀ *ߡUV&=oojC3uֹ[>U봼k 5`?1IPIˎ$WײۏO|4L1þ(Am/礘IL( 0C$c19o=߿9߿A>ؿI&7vWYfM>üX3ҮA5ydْLlSϯWrun$yRx~-yF桿W]Hpf4Vڅd^ؿ="# ƵZ<\[q^: }MX/ nϼB;wj{_A3I~In'yYL)I56Ú)/om3"qP`z<}&yfs//Irm]C8˒4/-+5zu޾m$ͷIKrmqHPl r&8[ґLLws@yäoooo 镒4;FngOw)H4? ;urG^qݎr%d) Wܿ$1c|9z=g%.W$%$OwzHh5$ КB{ݲ^^j^h]ۿHV&lyvqHQl r-3I֊ÍqI.~z<[镒4;FngOw2$/d>?ܜ~\\`C_+K+_zI~řm$_+&X1 Ӄ{1Lm*ݦ:ac%$Ii^ؿe~ڿm^w~:]ϣ`h,Ź\r\umy6?z7$Wh4J|OsZ72^iwXSasL/[؟WGYӯ P$ be{fM.m3,I.7&gsu1$Ka.gdaY>ieơHP,=O4ۿq>ݿy+%]UQW Zp5ʖd`0foIQ~rrf$.g7zVqyfOf_)`2Bu`7&dz͝[)dסWkߜ {$ .% @$MZhg,$Hcoj bmX[~[vb~9GaLYI|crz|hoxI|7lwտhnc=KHps>jJ{ɲ%(f &_Z.|vϓ<>훝tuv)8>S]V~$ݓ7ї7ҟo}Ы[c5oNoǽUV}@YTuZMRsOS&{ؑW1~"I_kE{X_% 'J0~ǵL~6Mұ>9ǝmz`ȋPWkYqKm.>R'|OeSRA:D9by? ߡUV&4OH~/{Iۙ:ܭZuk 5eH /ߓ$I̯e//x\ͯw俒|vA]`RF rNs>*.s`S֡{1ߘ\cVo#kw^ݬ߫*"D>?H+%˖d`%t~$$2$L}a[оȹ<MqN3tEytwzdx\S[u祓Fc9MG&!@UgqOg^3,D?zzL{:ד)\f{;_c,h~2ߗϻS[8Jl9e=y &MU8/v1tK ~/J[`F,Še{f^.і=dN}A\!GɲO3Tmy& Z1S, 0%@_L12U>Y* 8g֎W[MOޗIJ$$M?..X^ܡ˕׵$%:$_$yqQˍˊII4Z{Bo|isqXL$(y?{qSc;`=uZ$8F_Cs ;i..{<՛cL+w4_\]T!oߗWK0:gʒy:ab>ɪe=*ߙ]-mJjVI8]< P3`^&6h$g.?I\WC2nI$œJ?\`7iXkz<SczvR1ܝ)OݬK} A$X Q$˵=WNyIOAk}kSN&X3n另u`7&ǵn,:j谦zJj}~;o8:p&mtI)D=r:%y>܉'t[<;to}ccbc}$Xs;_/$! P39v|?D\RIHF2n/<;wٻF>gbqS?̻AC$>M>e=y ݿ&շ [ݪZ^]( Cˎ$Wײۏjo/g갞.Yv9|l1KU\4X˗5 0C$c1\=^UoWkKת)yfM>^ p fI5ydْLl$%(ozh[\B{6J.Q{s溳=kL:⩭:݊IF&IģH0島N>&(9eGo3I>LM|"K)Z>vH4P9ߗϻq򶙃sr[8J\;e=y ݿۿ>ܿɊ~s:Sy,][>mR{D[\I^œ\8uɲ_ 3LФ#$kO$]$·I_SL=ۿbsFMm}bO\CIӏ ,wrz^LeHZsNI:%bj͕dBo|is{dK\PIJǗ^ۿ~ڿ^t:Yϣ`h,Ź\$ fv姹l ~VoI2QhME^[Z 9Sؿd{X_11eWs4snӾ'od_hEbC#Gs[>&t($$6I4ḬD;$O>N_IW'Ւl<*.26}3K'*{oo*Дx1M_7Za$c޹|lĦn-u// ./ҾFْL,vFגٻK*_IbIEqF,( DǫRTܱyrmư3"2;q&}ܸ) @]Lzk}zT=4S{1_W/d/h\jRC]ީ>1VI|[M;o' W'@g3jRcJ$njWrh_Or/ 'y<8܉Ozl ﺦlnwk̟4L迹oˤߞӗG5czhl$D.JbKVSCAƙ~pJ?SWJ*ДV}7 unWkkK{=> +vPxI7pCIplH >{t~I$_ާK>ܺj]4`)= O+ǭ7.l_~Kת0o|s_F [~^: hԗQ$! nnϚM^CS;_#$%mqqkzl'U&J7}yzG7^718ػYU,Ƿ/l%]㿰/x;$!9TniYg7׫C_w<[>H8ugKcngSg=?Œ3>IhIoS?/% o;ed$r̬V^ͦl68-yt=7,|p+ϓ#I4TIl'W\YSuѯ9ԾACڢ{oo^qe.5>eZd=pj{F}ihk tsj5/T.c${{d&$%]攥ǯiV}k~vshJ;4oݾ|}rxY`hydH`|n`+$1a$LŞmhbaz􍯷|\ΝLtI3$0cߧoZϗN0&keD?Y?T,Ƿß^龼|]#`˯-ؔe{/%I$'q~bxr$Lþ`$Ky<ܸ) @٧&ه?3ᗵ>+=?O *C$c>9]>|}?Mֻ݊jLoUVӎLK#;٣QR1&D1:r?&"o]u9x0?p8/ZozGb)[%ayhr|>|kbC+u\ŵ߰q; X$[pCIplH >{F9߹|7`oxIZu+wB_N#eD>hkrK{gK2QLWygƗq9G|1zZsqfBW\_^3kè[t+K'r9j=$ $8ZCAv:081u=|$NeO|O[s͏_c;Z%(H$`w+2MYo݇߻|}y|/x;I p0^njW_hyz&ϓ!yl'ǽ'ں%1ƳUbIc$ŤW'.||MXMJ0*̚kl֮lӏ#Z ڑnN/Xϖlư=ߒk^/+&N|W\O3_Xuz?akΟsiIn޽|My,"Sk4KD8K;#6/kni_.]2I&=Vw%gI~)m})SXr vZHg?B9s 7_|~v&|Xl,v0<2}y$0>7omNH*I{[k>IMb%Q;^Or?LL:wJ0%Iΐ夣Z}Ӫ<}tQG,UICS[3o_ _FX) 7v_[6)[˸^jKHp$q~bxr$LÒyl^W6ut8Kg&g5XƇcL'xMmЫFwj {$%(M;դ.ƳkWnjW߯I~^o'գ./׀l1lյهL$0kܡ7.ߌ9}y$X3ͯ6I{H$@ *:ygfh6^'O$y+$&$Yzch>u9xE~uS<n/ CCo)˷[Ǖ/)v0tr]gݪZ^!v$J@/^nZ쪇~ xMcSNUR[K>[un`$Ky__o|K>jyk}'5/5L3چ0W/ߊ__ skV=݊IF`&iIxLTPPg(5~=I0Ǜ:8kNX_{qw1h-7w[LY7/ߌ|C>Y/N ݼCӍo/cx' pe}[kֹM )h y2ϲϒ|GIncLԛ.q/K-ۉu`9S( 'mE )}f$gI~INQ=f[+fSve~Ж|= iu+hG~9}8`<[OÎ;IL$?54$IIMb%qz9ɟ5I^:=d$ۉDa[_ݒI='2eZkrHtzycw'?e^jK.$jxA`o/+\- $]ưg~?'y NI:7⬘j>!tI08 10e'9xMyL6Yv֎;5wLoU߉ӎN Ѩޒ3Kdb13$?Mseq2pxa}߮qf̈́~^)?|cwdo# 1n~= ICխz3AĚ[o杙pS}5ɟ|'͕LFC]^'(ZÆvC]C VZ%ao)qcI~r図VT;]nT-F~j|3 8HcEw|IsWihϖ T٪k~O$u`2tO0so;քX+[.5?)ۚ6$A[A;>!^ْLsCf?yoƊ7h˶X|՝i {702zkzHp\7GzƜṆ_sƩ}%$ŘO)So\E4c=pj{F}ip* f⡠Z:K45cLzKI>~wI^4Wvz˜bl,NæK4γ>dlڹR̈́~/^A|Tk,v0<2}y$0>7omNGslTNx[k>IMb%pb&o]vR`;=8~[1Ig$coZcL?Y?TYkMYqgB:IN1oNĔlKm  fu< 07OX@JcؓI~$$y+-drf$gLQc ϙB S{1_S[oO.ߦ?|JG}[~ow$`Vu{h5㹷O?$WIktXn `{g}D R/_}Mz?oVf<C`=Bz3AĚ7mJ_$E͕7[L:$]rMa e|x7k_bʸ_%a9prX>6JIە:kV^[ڠ; 1; ( $ " soW{_36~ux>2K2a"٪k~O$C LYI|}r^9^|\5$֡KOʶ&m@$_[A;>!^ْL>$9[In+WW%Y.ĢU;8a}٨qfq ܆0W\Mߺ|޿|>c_VN0s6I{>X;T =-ni/AdKIGUvsd`v'7}z]C R(.Ϗ]Y [h}R`;[U%cLNӳ^MҶJ2D՛n_7cLԛ>2J29r~$]`+ ܶ"sԔӗooطxLtfN?veì`>| {=ɽl{1>tŸS1s9ms:3~u(ʔ{1_W\]s;Shԗֹ NNV<4ճ@Yg&fI2o^H$_$([^6Wz˜drNcبޭ$7\}z̈́~/'-$// 6L_Iϫ~׌Np 9gv@gs$$fhV|$HNKvR`;=8L~ Ƴ}LY< ,EU)qc}x 7IXZseӯ$fxA`o/K6x&Man{I~IBrf$ׯs$iZ!tIB10e'yx-{mv[XoVUcz+ﭒZw$ݡnv&u1]Z'oJ0ɝ]p,Ca?zN%ÖV>-]̈́~w.ߴ]qߌͱn<C`=$X?B\CA7hLbM{Wzng],ySKI>JE_'y;e\6Dᱫۏz;'X]2 $3]f,EU)q}˷Ku'žA+uحr?nAw@bHD@/Ͼz:/#7cEn^1 <?[k}uj<[u)`:>H !m1soާ%8V;WihCeHpm+>޳qIXL[NvK{:79H*DۛڟHF?%<ɯ<3EU]"d%kU" ZsX1p8^QSo\y?|oVJ0Ml֮lӏt!Q z P8`<[]y5'I Sy=$8_$$ wLœ{H[rp[Us;:Shԗ nGr(ȳh5,׌vI&KWk9kj6 m PY5 W}ߗ\qfB_W/'YK$O+ͯ6umXS:i ݓr<},_ЫFwjΘ {$" ZMR2$>īI~d|%5c֠Wmag2pٮqfB_|緗oeۦ/$kƸ6&iIڑ,ݠN7Њ5}sHiojw8&+7^IW~=eWl skb9¸_%a9prh7o.ȿ˖;eֺJە:kV^:Xr?nAw?@7ЄHce$Z_u;ϓo&yx༲+&XLX"٪k~O$`2tO0<[n%V݇)\A{e6hE3x(zlhkϖd:?I%4O? e>.[(e̱!sF;Y_m% 1^n_?|3 M~ [~^: hԗQ$ P #YO=\N/h$hRk2}?/ TߟsI8vf2[)nĬ,S<7_m f l׬շwGW>I>L܄#n<ƺ_ǡK>Y4$XkK KC9jm7I~-X̬`]ʫٔ]٦'unN/XjW|-_&埏ּrzHp27_-] k}ӤN\qD}*̹ŘO/+o/|ИϿmT5{w&@yrf%1V2ijIKr?{ח-\c9;6&hEg2YgK\7y=zV:ZV IbBI< vK{69|Ip%Og?q?'qgN$jI>GvZgK0&i`W<10/|VYkMYg.ΞL7eycw'?e^Pz+8̵߱Nh=[k׍g0Lcȉ}2#f$1֧pLu&b`2tO0[~$9zktpJjq q(ȳh5K8kā|I^y5m֠nhˮ>d"]̈́QW._^_Gſ=/$kƸ6&iI$@E Ě>ǍcHQڡ6s7/wK{e(io_-+]rrx>q(nou5vj7zvP~H~Y1 &&~ϒo'yx\d:9: &WEƳUBIƩDc>Qw.-?3gGKS8^6 m0 ZP4A~I2n'qO|=7\ &/qu' ~Yr޷jƾI7/*ےxn$Ʉ5صm_w,sW^1?&q޺|ko ~{ʳL?l~݊$0 Xh>-5zz]F&I~΄_7cƯ%kg͞. D]~hE)߷;o/7oe$cV^ͦl68@5TVǎ~9}8`<_LQu=M敉! 4tDLƯ.󅵾iR'Iиc>DCb'5Z`k>^ީSk4Kk_!  Z:K45cjI&J$%K7;z5v՜n Vd?g}^q ף~lMt0!# 񹁭xlĄ$I@mgv@gs>$fx'OI>I$MXIՒl'=0c- s~ʼ&E~(~֚W.d˟.OZ& 7v~bS6%` z5sw!Fϖd뼚I~f^i 9Oy_SQngoZ!tIB10e'Ir|-% %e+SsV[%m80' fPg-jRq& 8{!ɯ-ɧɃ]q,Ca?~˒j>d"]̈́SW/| {N_I֌qmM%l A5}3Ǿ3I~$JFnol3WF}?v`qzZ[& W ܪ$>ror\|)[>|?sZu5vj7zvP~T%U>./+&q${w:C[|v٭el5XƇcL'Ir7s}ھĪ0o.I E塽WY;a}٨q'뫭@$0ԭSoo\دS[t+K'r9j=|# A 6ugO{3I$ϴmIs n^ٺ+:%bj4~\?$ }z"2e`'5I>K7=+Xᝪ8FvoN,H9_uhkvIiO$CWK0d[n v9auJ3|߭s\qfB߭$og'o|ۯ9gWGەGs[6& IJP~|< ڻs>'f$~sSF79@;&hƮ({L7F`L9? q5HDQa}Q围Zkr\_HlMNHWi<,VƼ;Sy/: G?V<dI&^NQ/ye1>iSN&>gݞ?)= ON˷˧q`]m5VypJjq. p(ȳVh8|V2z&x6ɯ=gI^֋a+Ε ?zZFvﶄyٸC3z7/ϊ# 1n~= I߂N%)C"# ։5 IOr?IIrLW;DfQv˜lnlޟoV]L0CXw_'mE*,Vw7oubeUSLq; Z$ipFM^Il0?.yl?,>Nzіk,dZ_]Ϭgc$K=e`'ae?\z>VۗXu+4!i$8C==˳]f~;\}HV2f_%yf[[W[Ke[,b"&k~uB_m% ]g.yZm=|OtѨ/'I!)ltP vl< P%4ߒ$ϕ垻Z & K)~խwDLƲ!ۊ1z}rs1i¸l͟O/{뎝0tYsu+5$8+#TNxv$}gI~$LC9@m0?>򏲇>k3kIk mp7CWW受o_\;1ov]+fSve~Z$(=uI~^91l+-c}gԯsDLƯ}c2T$Bx/ m1:x.{o8~*T5{w) iKz(hg;VMb$o'?Hc͕>eNN9uNrci%.a=-?ܽ (wS͍X{3iU+W?slf+~2NYleo^IIޮ\ׯӒ܏Am[$eu~Y1 &.~oom<6G6~ux+='ϬWWO~$C LYI|}Rm姗=] ;%V݇uW6H$8ʷz+pq^5<$%<IZ|\qZn~aQ]b4uV^C=7zj+nEy$Q_N0GX}|cZCA 6ugA$8_ū͕>Ysdm~,sU?AߟC eD[^wʲcg1Ly&w׭xCXr>r@gwI퀶o&qI6?sM9Z & =w >ۚkZ}K?T!Nc+ۊ<|<>U.{/{.;v+c=1*Zj$8ʷ浼ӏps~qxL8ɟ$Oo0?5\uJ)Szߘ)U'IQ)C$c>ygeI1ߚo6~JT5;uIp,ꡠiZ:K4A$ΖIˍx_z]p\-qnASYǾ֋98Ϗ̈́[~[Ϟ%# yo@;%I0?VQgv@g]M_/% _zHp\`;=YP5? nI$wUS(CC5ޔzW.{)yXycweS>ʐL+`~x uߵ.I^·׳yMtWԹS"FIbbLp~]+C LYI|}Rk=2^痽g;VUcz+ﭒz$8?^P4b &Jdz&G%yzuS5q.$Z&vﶄyCz˞?.{ ls`7 *8FcngbM{zI~n{I~>Me`\Ρ%lI<{lv/_9*,EU֖Sc\,O]]~xsXdr]gݪZ^qXVM^I:FIoW>pf=,ں;ΎyZy_* 8m|ACb'a{_\_;%V݇)\A{e`Ty+ :ճ-%}ٝ$JE%yyl\g˶X|-9GY[5' }$rxcpxW_q祓F}9 ` Tiu;|6uat$09|OMm疚ۜ"1ZI֋'}RFm.=]>)IVz3?l~݊$I0-?VnG.IvSŭ$o'/:D[NLԛ.lk~V]{~%gα%a_ey}ca2ݣcU> YּvnN/X0M|% &vcJzlgSN_-] k}ӤN\D}*̹ŘO ^9|vك~|~;V{NmѨ/8M{V􊇂zh5,DͱR'"IcL{S)ì>xώ9|TGd{"^KvV $)hK:p*'<{h]"ߓOfzHp\`{臎Oܔn͏_[1I$+W?r"EuVdPe7e9Ie$Zr<,VƼw)0ur+{?$[w+Z1VI|[HP?^P4^$(g7 ߒ#OjM$}I. ֿݻ-ag6D迾I=eߣXۦ<7[I֌qmo,HP7;t>kg5=$%<ɯ<[nj\hۯɶ^n7p(9f./+&wH$I$$y;eLz+H0o[VЩmMni/ϞM^ϒ)zԷ! &&|^:%)McW'n'뫭@$0SײQ|}Yg~ VN0s.6$7;kSyC9ɏ/nnj\h=Ysd޷o? IVĠZܨ㈲<},Ko+CMU%01Ix4m% @nj-y3Sі_0Y;$z(lk~sT٪k~O$AjDojm1m9ILϲ]yXycZy5+sYּ7wnN/X9$_fMm}sn^ۉui3WtJhj2_X&uZ=E2tO0듚WY|}%swN\bk4KkwO٬cMljYbMl$eEycLzus/7ڤXV}1xh"_,>Jy_gXgή6+$m I)$h͏oԙP9C{|~IsMzHp\\1ܔnZ{- s~|*E~(~ƛ㨲}4;1onaSq3Z[NnhuIϾ$wKl)m]њWJ.wJpvۭ)?B /S{1_T*ǿTe˸}orcֻּ݊jLoUV|3 fl٣WqFϳߘ?dda i_/"\|-gmkcvﶄyC{Ⱦo幹Hf_mc3;FcIngbM{z$y?Ş=whdl}9ԣ䘽`"kƳe۽1x[a=Ue㨲}O{wٮ\YcjyiyW?nw`,Í*hHpl:u~!Ie{LYp `>ҳ;n. g=?} 10e'Iu^'i><;%V݇)\A{e`>n[Vxg;@[[|$o'.x&qi4Wd]k5}5Ik~uB_m% ~ms|>kV0tѨ/'|wLEV1]nφX3 eϛ~$&ƤMۚb?x; @=ojm1m9M~=gYk<,VƼ[1?mD>V5 tJ~qQ=IV}I?nӳ@Yg&$?Kr/$&fI2Q Ε$KS:k^c^+:_{w,&(vX!# 񹁭xHR Pjcv>l|ng$2 x?1׸;e`ٱt0 nI$wUS(CC5ޔG'@̾'yXycw[{%@it;rC{w-*~".I~YFyj5˝t:vXlOY$Wx ݓR9Zg|}O{97+ݘzkN[~o; :Zmn6+p$.kg$?Lr/I^3 'Mc\jvC=J &/_o<[ W'ͱSU*k)1,kDe#yzou5vj7zvPxZьUu~Y1 ?$?H$I$ϊs9s>5~Ӑ;n. g=?} 10e'Iuؿl=d#A=uh}Ua 'kw^Ik氀Cyx1rO$i3I2qܻrZ};͕+) ڭ&bb9eF2W}o~ Ezj+[~^: hԗΆʑ+ߤ, vl5c˕]_K~/|U ͕};WV$Dz!ۊ1z`uDsIeD_-˫H̾gRcg1Ly&w׭xC(E+#TNx[kjϞNV7s=VI&-M &͏C[|5Zl5h1p8^QSoY'1/3v+cحOʶF"QVwxN/|7/QlŃ~gqZ=$8VLzoKk}su <&HPmέ&7Qoy|>M}o}M#-{[b$pf%O$y=|y]ds+WK0)abl'?WS 7O:^?}{(*;,]V $)(A?vmwᳺvK{X|/'?dΜ\6se+[t0 nI$wYq$"EuM;UxS$e;kO𤋮3v+cæl-{ p: Mg׽%7}tLN$OَzJrּ1'mpvٷnc>gݞ?)= O*?$ʾ{+댝[w+Z1VI|[D3,{[b=v·0zz]<'c&yj%?+=&7a GwcASP}O'X۔[G5czh $X7Kp>kge$?ʪ?V 7{GrwsG1["k3IV^!Oc+$ݩȲ<}/{+- ]nT-F~jt$84?q>./=I$_d5,ɄƯ%vvk}uY`<[u)a,SI|}Rmղ}O{,w;%V݇)\A{e<ie-da$Oj޺$WMѮxv!mZq hoyW'ȓV^CT~}\8_q祓F}9 m囔 A fl#ߒID=\9suj޷o? IV$Sc${L0.+%ϲO=dsYg<)ϤXo{Hmu~`}n%y;I%yjֹS hisky*ϏC2϶7XO5N5F68Z[L[C<}^=1v+cحOʶFUoj<o6cG?ܬkZ-/<]Νt/7W&$ˊIי͙+IjDe= Oj ξ{/{Sw+ZV7@}\$7cMlЦwFy4EU$X&Du-k̏X'?},̓V_ʾy=.1gWGەGr*'H6D F>-5~y./Cwܞ5! q}>J7~QoϮRI~NZ~j$Z%ao)qh\>ʾ{2kʘ7v>6e^&@%xv[r|-F|IjLds]d^ko:O1n6}Մ_M0e`'ey2˧bXjޚ[zWpJ  1ɏWtCAݞ=zcuy5o~݋Sƙ$d k5WNprp k@}kk8ט?z {0ɼDy}y$X3ͯ 3oξءcNubAn2>4wms;έonQr̖sLRƷ 멭rr#2wٮ\YcjyiyW?n%IP4?C"}4y]$8_ji'Iޞ>$0s5ZI~同ey[1;&b`2tO0j,Ih;%V݇)\A{e$8$?_ּo6^=8vlg(_|GOx$(X&hWAX|޷bm:Ly%y[~ i*%܎j޷o? IVkªܨʾ7{5o.3vVÔgyg,]l~ݴ$8Pj*'<-'NO?_g\ėc_cw8$z(lk~sT٪k~O$C 0W8<|<>,wϾgsgXnfxR6Uoj<o6cG?ܬkS%x!ɯ|o{WWFzNI:%bj4~\w/O:IpAqWb'Odߣ]=_g|^[zW}׷}j4ܜW<4ճ@~l;IJIIR;N2s+r &8v<&>xe?qh_x}+^{7o9;,]Iҩͬ1f%T`gu$w/ɇI6\szHp\`;=iu(E_ke9Op'ͽ{8o]) 7v>6e|b՛Ϯ{Knw6['U%(\h'Wjtr<Ÿ(AΪ bP'Ir}~ [w+Z1VI|[HM,PPg}8<ߓ|s" @sCp|S_ìGw\cAQ7=m$# 1n~I~xssk$?NII~Q~4Ή+Iy;fX;@?? ?=ْm}70hI0Q/:%蔈-V%2gI޸stl|`5J7~QoϮRI_=cw?5QT78% |̾tkXnǦlCV캷[ғI~$w(c+Z}iת}&̓]i ݓ:?r;{@?ξ'ޚ[zWpJ * JG+Xz{hӏmIH$?zuSz:k n>^Y)bZZ4|;5z+1!{@_d^ToQI֌q6I&7Kp|I@N#ɋI~$I1uIsD${d;}ou8|W~>eڽ師bP?Y?TY[NYqFY^ȾY=sD2J ە:kV-O2-o6$d!>./vl>;e m]ٝngַ_`ey-_zZa~s;hl< 0ɏW5ośW7$o%/Ic+_LSplגsԢK&&5}$r{Aɾ7V.~n VN09 %vl}#o|I/?NsPs͕C}jZX6$y[1V<1;y\VJ|=Oq;,5Z2Ƭ1`*C}Gl_ϒvsz&Uz%mon֟j<_# Y ѳ *}Nyy|>,w }}e$cحOIժ75^ѰڱF&[ϓiLm0-'akx8?Jp\`kD$ {LE]Ih1_̱.x3߲Y kw+ZV7͒In[-tzk%=r]n'q\XX$njSʡ]tJ{M{wN&c+6,n{D/q_Ttu7 f$T. gu-7-{\Ӿk&8OVK:nHX5]$4<{zUH?Y?T&$}Kʘ7v>6eHpm+hzw4ԥ8-w$& TգZLr<Ÿ)ANz[SV?. ^!,C$c>ey!$'i5o}[~o$84-1k̾ro|?~#ezuS5JW$Oc q1C֨Ⱦg{H+ۖG5c #&7Kp|I@N['|?$w9cg1w.wk8{:>ԃ+[e2 ^`r=C ,S[CgH9b7vUSLq; $8ʶ" e$y=o7MqxMSc''ں;noxvܚ;G10e'Iu/ >;<X+7wov Hghye5ƶ&gI~;owbm}3Fk.m㻡d1׈{ KcȜ~}O78_۷q祓F}iG`KkD&[ϓ|rF?ט;{8V$cEHksI֋?. TsϹǤ Rr/)-WUbVy)S$׃bH1ԇ} nuK$?JqI~|w5{g[[գq;%Dqh϶7XO5]o?AII<|<>\fcQRXnfxR6ngXG+ߚwVov7|| mXϖl0?6\uJ)Sz|aIjDe= OX<}o{Moww}+Ipmq(ȳokGx!/q?oܙJnj^sy/>?v) s9b+6,nN=I~}]mmWIʩ 3ԧvI>h?WIfalS4tSfz̙`ԩs]ƮP"}cxvOq5HDQ;J*S$#o9*TXnǦl< δ-0P̔IcI>Iv2nayhr]Pq}>ٴuk$LW>gӟ5 S{1_T*חV9&}ޚ[zWpK#lgX87y-ɇI%M/rS{]l󅃳kqzZZ4|;5O}^迂{!ӽ{P&Q/$kƸI~|tskWf$Nc S|#QsDcIpMJ3ԣ-㙤o+݃?Ra=Y?TY[NYqFYF=_g߃0: ە:kV-O2-oG1Pl?9,&$I$o}~Y1 &̝ΙU%8OugwPkxvy5 S{1_T[}}Yʾ{Rh}UvQ8&'@g~_e׹I$?9eMN%:Jkvx[,5D Kbxv=OI0_`oEy$Q_PH vlczILԏ!@M;{qI&̑7s݃?uZc|.F|}Yngߋ2cL:ſͯhJ` C}GIO?];7:LqxMxƯ%mon֟jT/ȾGa=_g=vZo[߭hV%mq(ȳo!$MEkuS{M;͕ܠ8zZZ4|;5y|hZ{;_a&Q,$kƸoO%M㣳o4v(`X$$Yh3ܹܭж_m' (9fKdbx&yqW`~(~㬲<}$L{Zk|\,cحZeZՏb pTGaY}4y]I$w|-H)bi|x\IU|pvvk}kƳ}/Ia$c><IȾca}^(\A{`g~_e3IKr/|&g+8yv|m7Nuis ZN\o}٭6e(P% 1Q}^=g9ZV0tѨ/8`;k?cN)c5m纥ݜ2Y=ۏeCcnj<1Zr\VJey*i}Yy SI睱w} a$XPj*'<+(}/?v@qmC暙1vRH>p\j϶7XO5L`a*ߤSo\e˾JXnfxR63YG+ߚfc$Hy$c!ښuںsK'Xt`޻) @DLngo/mk*2׬V'Ic>(2Jp@[dui}};aynE]] K`6W$7-a,ZYMQs޴D5.I$\h=٩甕01u+ UTBSȾQ=g9gW_O_I}G.T`gu}?I$?湝kc;PmN &]YEZ*u$k?wVdP|r3{\;{<,VƼ[;v{oeUSLo$̶şGe$|?|I;ΝniBmWwxl}ں䳍_kƳUI\|@Cb'վ,e8;~NWyNH0Y_mPa+ȇ{_e c<_}/lx+K'kI|~CAc$?Me?>ognj^/-Fc+LԜ:auDz!ۊ1z=\`ueHURr{`_f{Xiܘb);ſͯ|= x>#TNx7͓I~/I>NnvgnjW'h϶7XO5L@ 1"sԔ7v=8Y߱Xnfxl XG+ߚfc'fϓ5 ǚC5"p't4uFk^O0׭~Ͼ'v/ m# @130ԧv>瓼/I>LU^2;A\szl'5PS.chE_k̾G~ s$cحZ[IͶ|Gnh;|>oda$oni_gdb1̼"'6~5X{~yXz )C$c>T{cw~ޚ[zWp@[tt-1nf_޳< & ɽ$Mrg᳒q& ڿl:3Y5Zfp0aǹ9Ó[~w˾goyHf_ xA%8>$ 8#֞K/2H8mt޼sl'(9fKdbx&y'3] kjm1m9Ye0I[enT-~ }m?9,&y{ƗIHK[گgv5cˤ{m> m]نk}kƳUIF`wr'վ\}ca}ں~*IЎtEϼjϿƳXfXI&i'^mt:=nVUǯqKnh9';v=5j [8ފIFqIН$k>ݡnϦ?^"ϲ{fK>jz=ێ$5Nc~ݱlHb̭w_&js5Rey*ϲ;w<)ϤX : m#>#T$?NY'yqc57k:Ιm.`Lq_$ynXl31wn'֊I_u~"s9ͪo`_9rs5Rey.޸^6)ϤX  δuPj*?<4/<8㚛WkF9nWyh϶7G.3N5F6M:pey>ۧ➿^AVJ0݊14Koky7ILr?ɛs'dz%a_ 7W&$qz-̥$ LE]Ih1_f=/a>Y߭h[~0 *h`N0,>$?H$'yԥx&uszN&Z_}^;Mĥx};~ڏ6gWGەGr*'` pEC}kwoW|$?IrE9hx6\)Dk4;EHkƳ}gW$)E*|OYSʾEW[ʘ7vjЏMIP?g>{kvM?2][sni_ْL|Ȏq}>ٴ:7ΔhZ`0U'ߩeIPQ$h~[Vgx{*ϒMQג2/ޯdz?W zy'[>O$.k91f5wrb73v9zjocp8r=Z`u2k*qY)97{v'yYy SI睱w ںHg5hC"#KI~ly?ɳKsn>v\sS{f4GNZ{ݴfec[.II<|<>,&y?'^^VJ0݊1LoPHP?]G+ߚfc͝$Mizb8`m?Ꜫ^N{={zO\$FP`KP̯ Fϒ$'Uk-5vs͵6se]ƮPF_kξZXnT-`bN3=};K?4/`[Wy$ nj7GCNM[sL&̓ǘӟ5 S{1_T*7{yfnzK}Wp@ ̢eI~4rv|~w+|$(X!f󅃳kmYx\cW+\g"u n%y+|Ik-J#αFl+{?nf)5u$2\`<[ݳvR vf2mp|[--8,Of8[\,cحZeZЏ`&gPtC&}tdc]^MI~[ڋM_#dάcƯc[ƶo2HphN:ey*^m=vG^upr;ȚeI~4y+l|oz&ɏK$/DKK9egK2QL07/9//_sW [y)߽{~ ϣ`WhѨ/ $hVIPhoQ? AĚ88A|s罪\h=Iv)`EU|?::Za^ey*(`ϱ<;cz+L$>91$k<{gnj/8a56h'8ܭC[CeݒLtuwN5F7锇Õ{}z<,VƼ[1okyq˃O'yI{3c!ښuds^x^Q2) .[[-bΜcxz4AqWb'.ϾtުX߭h~l>$Y$ܜthgyx2O~ ؛Inyշ;ǜu\h=٩Iacs+^y?a_C֪߭{~ei'[# ߂WH@AC}kw|Iޫc-ǎkn:kMQ2WN$ۉIDPdnq}*u$k?bwhćUɧ,8,e<`߱XnT-8 fwEھѡw*&u*c6zI&F:; li 9O6m]Y1 in1OZ7W%B` 10e'I{&Uq\f?z֪1w8L0ɏWNP~>I&u2צޭ8|V2K21nZ|/_ojVÄ<0֮>o}/{NVG/XE+'P$?>ZƴUoy0$ ֡3<׏D';n-wsvhvGoL=ϖm԰<=N`68{Ӗc]7}7jYƼ[JO" 1bM|;͙u}z sQu`93i$Iu؃B=O~yXv0z}| ,MNZ&G+ߚg?W$/~5iD?Ĩ'+֪Rԥa nh_r^^p%1פ:'\I/{1dGG25.^xIЍ$> 3ۻIHr?[k4xNr{r纥ݜ2Y=W\/6uW}{Z#Rro.[Ⱦgw-<~?ſͯH$PQj&8OyShR9@;n EY0z$t]t=M:pey2 _~#R1oVa~p$okyq;OI>K$N\cl%d1ϑ:%FW~Z_L6+΍Yc>(2Jp@[ںey6^g_6[oVU6q j`N0O$d?u&u1^;s\?pzNY1:1vfbwLr]}ߚ{9|}V9<:}y$X[ PLfOu6;D'04[ӫ͋ǚ[ڏ~S] 3`;=iŵ[Fn`gWǫbwhćUɧ,8,I{fKoEWJ0ݪZ&(@k:cѯ)uh$Ii$z>L|0u|z1l9rKu;VL´Z_]J}k,8gz~&b`2tO0jkoN{ɾwRUbz$I~4r67|{IHr/%M‰Ƕ" @s[͕ni@|m;ZaŽsS_pȾE=EdyڨZT%H&7;t[IIQ?%Qu{X[Nl·l d[.gd昽`"e'7}͵')lgϷbr3r;⟲)}7U2ݪZ8G8c(~L$wO|vb]$86VLiάƯ+_ɘ[VXK0yǗ~~$q H0;9j{-z<$XvM$/q |InX6~-7?vJv}]a5bns$0F~+/fS43Kq(X%,Dfu~$fO'oC+#уbl\On\ni7LVu`>xe?aq weRr{_|7cϱL<7A#9s%C}G7οnǹ y纩mubLԛ+.lk~sTU>Aץ9 @=߃JߤSoW&4^㋭bec #NX<ۭ}Hn'Iϒ%&eL0?6\uJFW~Z_L>xF1Qw%8-|}Rm]|/goJw+Z8H3Hpܜth$%SZMRs/`'n7W.\?pzN<&>x~²1'̱nkV=Ə9}ߜ]}<# @;Pl7KE vK{纩DzTS.chv(ŵLnI&Ihx{>}P |VI|X|r^={ ʘ7vj ̎?˳Go*w4ɧI>LuYo[@ВNN[/:6G6~I`b&c5`)= O*|=OA~i:L\$?_9 @,ɟ|1mI8qضb]Mܹ!Vs[)_K&}0aǹ W~# }O7ԋ+ W& M㣕oLkw(FI>Iv[aqzn>Yrh=nf%9f/dv_szq .[m̲ʾIWjYƼ[j`ٵ1[ * &ʷxT%o|/:@[[K>lhޕuLW;%pC.u01WyY8 @2H`|lOd߃M=ɟgߣd w+ϒp%Y'y~CAI'"ɻ5=Z8+AoX+:s\S&:kUgV߷i?*f<\wIϾGYmWIzB*@JPWI>I~gڎ7]7^h`! Zs˲ѻ%3{p7C&x&'(_^VJ0݊1#0;,v+hz?R^HAd˵&?ܬkniYgI&=MWW$nho4~\w/g;7gȸ+ m1j{ɾWzd} `/ `ZT# Lrs ƢN?}f@I]jƑdb:@[N=Hb cgZy?aX迵F=ʏs}1Sb Ʊ$׊,bOu6>T}^ΖM$_uSfzHp\`;=iu(ŵLnI&Ihxz "*ScYQM~[ʘ7vjIP?g~m?ɋ)}ʫ6I^:whzCS+>Ouk$LIk5ӟ?mob`2tO0JxpYF=߳|iĴLG$I~4r67?w|~dcۊu3 S_77buvK;KcX^u0aǹ9OSϾwoyڨZ~<T$`18t <{I~/I~%k͝Smv98Ь$5X7-Y;ay`~(~̲<}/0ִ7U2ݪZ&Tvf%P^J$;s7hI+\GNpќ9m0?m!s kvI<ϟ: AIi1_T[=,ɾwy/^KAeǴoA)IP$W0ɏW5Ʒ$LJxc~Y&Gφ>K'0~ץa|7[kR csǜEt.$o{dӼe>ej]=e{I7Y'y~CAc$y#IgI7ކXylGՋ17{vsd_g ZW*3\<,eS=7Wbcgq\y&~xldGn2>~cO./졽K>w'NrS.gǚ7gbeݒLtu珙?֌=8OG-we~= w[ʘ7v+0``v,^YVaɸpff9/$5NWZt:ho6_c[wk1Qw%8-|}Rm]಼^8ުY߭h~(MHpܜt#%S<'@I]j J2s\g)ީ5ǰ1A{/? ~t8zUF]'i)<# oPǡ :W9-Y?MdA=w綽}\3S]vJ0evY]uK0IBóݷ `*|OYqfY̾y/^+beUSL$?g~m?INr7GI^j6I^GuưM\'+F r6IvM0e`'ּ.K8fzRUb~J`F\$?_9 |7Jf!ɏ<3Wo~txضb]V]c|s㗃kqz^u0aǹ W~dC=7&Qzq}%!IpU~,`:?$>vmUF h=zrpۡYI&j &2_o<[ݳvR m+ [m̲<}n. rղycjy WǢgPtC⏇$|h;1$8vX1 uiάcƯX`ɘ[VXK0yǗ~~$q H0;9j{;I]+OӾʒ`f\$?_ּJf%c%yrxc~Y&Qb<[nǕ& z_{ms:0,s$0<'y1DY=n݊$| dž4$ϯ}($''InX̭z0hXsK1zusnNV]}~š[9|s_wRrv{B_i;gWǕgҹw$8̕~Bstw;;I&(K7Gl|tF2׬1g9@)Dc͛ҳX|ܲanI&:@}*ߤSoW;'zzY) 7v+0&%XoͫwV'0_cDn5niQr(2Jp@[ںt=Џ~?)[wo{Y I`NPPz7{IWzځԥd!$ds\g)ީ5ǰ1A{/? ~t8m!zrpv8`6Y7}qWC 6xϞoŴg{wO5AZ1oV-O2TM,zEW>_!q+[I~$?Jr}XIl'LLpќ9iu:̏c͛W[9$cnYa. _]1 䘯Oþ,d#([PQ$ˮ'i߂+I`ͯ|kޱqB~lyvxc~5f$ş!́Sr]$0~uVJ cQYƜŒt.$Ɠl&*1QLͿ}w"PfuݏcNUx-ΫƘ=zuK;auDz77;|;M2{7+%ypY^˾gz?j98<νw=p\>$O$&]P9niS6eYclsS.gǚ7gbeݒLtuk@}*ߤSo\L}{}becI?skoJ ؒ-[{픙q2uj $,=ʋW>5o߸$ūF`9 _PK2QNj7uvRE\&uk$LIs5ӯ" xA"Ic6T?.3ޥ5ۻ;N-\ bh$,_9 I'ߒҫśŐm+rMd`ag.ÞosGKgcsT~.oޭ~DyJ66۠5Ջ:,ʏz1֭0>z9DƖy~K_4hIylV'ۻڨAeʞ} =Lh~S/nf;oI~Hrwz9@]qU^mņSع.迺ab\XN+G%:'\I'nwqX>y,Sj'@iJЬ\F|ma{yE gqNi;^[km:NJU0s}X~m>ߩsq۬r3;s};;؞cv~\y&{%Xg l Q$OOF6pm7WG:;]=6߉D s. D]RN 4~[t?lZbecN&Y,=ʋW>5$/ߒ\6w9f%w]'W:m" s~\_JGYc6(KpIl\_woխh={',m`Nmt=;I~LSww =˵m@iٺҕo@z]pm6zZbS=A?;=5J j?7g{Sw*߿VӗGz`j/R)~?'l'P]}Wݨ쵝^Nj7LTIkWkHM~}CuOW2PdPe7e9Ye޽wwʘ7v+?y`bhz֍l'N5I^Cq|ݾ)y{W4/hW.6q_+&a2?6Nѯ~6I!HpȽIrqY^hwFͷV_ E&dI9%y#7fܪf1}ۊuع&3h ~a`3osv㧶R/_ldWR=j; `Bj|bo$6_-<}zz ~0;vk{}rFI&j &21_?[gUUD N}o݋i1*%ۻ;K=\v묱[L s}c:P'I׭pi{ٟ\Nlh_Mr8,n< s5`ZJЬb_rKa_!V4?L]@+cNjw]h])V+VecgO`|jLUmVJeߒm1z?<t"@5Y ><$vԋK *'\);nQu9M$8w"C\kK0Fץ?:Vy&r}ey1;ڿd{g֕ycb $bh|SFW|maǹF`5׬$vJǸޡMԹFW$&dOo}4}5&j"$܋1_TNqw_e{wk`UЂUY,4 $'筱Xl ImaW*_ojVI~WLԻceL.X|1Ն3<3֨&Oߒ9ۻg[# E2㬲d{3eUSLLO,=hE~u*ɽ$_'9ۉR7w(N;:yjk>lq"k6PLo6JsM]-mLO$C LYI|mR_U -1$bѦI&Y43 $?$KO*wN<>,/\Yyz\`bA^Ͷp$/m ~uǕf0v֊5%IˉV$g/\lI G/WY18=8{v/-8,/e{ltz\YcjyMiI0E_([:/&se@X}>Nic}(X&{xa$7b鷓ON4qgn ZqZq6Gع^6ֻS=>VڇƺnN\1\a۬fwo1z?<FTXgN[|⤨Ni?,W|v_D~'=L1.۠ho9]bR&ׯ1^c{*ϤSno\5;/JIƼ[1H0E_(9Oͻ$ζPn6cԆ1w`]^ԇIشƸrY캭tڜݨj9'}Jm%~]ڠH/ b&#,/d{lzͷJRޞ=!,m`[,r_ʴqtΫ 5 zN'wce6N.X|1Ն3< 4W~Jwd{{̮>N_IM,^K$f;$?ncguÂ|gƚ6)QKm[ua}Cծ?VI|Xen9e9ey>;?g{r :kV-O20 fe E{-+7|DD#e~)k\[׵vq"k6PLo6JsM]-mLO$?e= M*ߗlxlzrzKLPŮ3XiIOF~6qbuR{:]l/0{)0ss:5yh"O qvrV\ h;{ P˰XT{i%4_|_ۦ ^)5k\5vvmcev8m$5ן-{3CR㨤5?KCCgVwAtXyM$Ţ/ݭcvg|OIHr_GQ5۠ǹؿNjW.cblL[^+V8FN/UI3]?͒h4g{l]s]/3@YtԬI&~Se[$g{+l\9+X]V}JP^[Y-+t:Q+?[bQ&}N$ .zwNqQLV&r/6l`,$ISnӳWsRztIm" q՞C g+&er5׭L:e7 Z :JG @'PtE矚ZJI[&vks;֮|CИUڒLڍ+z6,_S}}2ڧDV5 p/|mRm>^w5V^۳@)tch$w޵o% 9ۉO-wNPzKΠ.MclSgce6N.X|1Ն3㧶R/_=|]q18:}y$|,bQբ>d[ctλvm>{mA.XӾ&7Jw黺mTo\{m׼q5el LLdb^}/0_=5?KCCGzw=v}* o_4VϳIJkc)3'G&;A~W$$4\[Gh^3i֔8< l.ebec @pBѕ_m俓-kdc;K6X>iqe~SN_-dOok1Qdw CŘMG,e{)cUp8 bf2L0yO~$?%(9覠>I'&w Q]&tI.]p,x٩E}7?{ՙ3pfF/]-?uH=k'FP'*$C~Ţګ\}Om_|TUj泺vJ{:9Q=$8M_]lS\dumz\Ľ8g_~K0ACŘM*ߗ~wʿf{ǼNyX6Zu~9|c8GPFZ&d%x6'I~Nu;S^^ 5F+j^Nj[Eksq"y>\\ƫcsFSd{uw˟d{Zm>s)Ǘ7!$?XT{̶0OIHWԦcNubrF||cr@[]6vۨ D>{D&gsՓO\=VӖcY1z o_PtE 5INb6w9f{]Nj7tڤM;mn}m%h1Qdw CŘM=GsYe{lM ̷樯w3K 5keINk_Ov|]kӵm@;8]f.I$w폙]$Oч럽Sm3~Hw~w=;o~;{2fWG/$\ ve(1$Kɠk Iό! qmRwf_gua}Cկ>VI|X|r^wпf{'NyXycjy +'@t E/ vkIJ$'yh9xS2 ص]~z|5׋a+q}X0'[5 S{1_T*ǿlh%WCMXY\c)pג|mI:{mN6zm'O?ƮXImm5V:%y>\\4|8?zlN5?"Zm>s)/'!,E{=g|K$ϜR 9։ˉecr@[]G'>l~k`^`z݃jbr#LwΖ٥ΊNׇt:Qӌ2c:ӥ@VODQ kɍ$f{7eww4 YxI p^i\2|I>Jrk]zq+~f]]Nio>Nۗ9umw]Sec$onNh}Vwex~Xhbx.x9/I~NrA}' b>3 ܯ9ةg6<\Ĝ\iU1}_c#D'2LZe5e9Mp?;_^<,VƼ[1hK$q^({sI>ɶN]]޿1׬p]&mJǸ6>>q|Mo6$11GJ1Qdw CŘM+sQs]4n N1щe7ϓr6u hvs) ,ez!IG'mSh1sNu%ǚ}Duᾯ|zUCeڡʼvr2sw/,wV~S `&-VmX셢Me[8$Q6glkl|t:}jWMfb̜4ƺ_͞Bזd2i]$Xkt4M01ƀ$&'=Mf{a9;h3Kϕ؋%LXY\,^'y+7ھnQcœ9gkˊVI~+ŖqeX> 퍒8ߟfl67fS:] kDe ZwVww4 J$(clZ&5Ž$?'kw}i}ܱ6ęq=9w_bm73ןvmm>.گEey7;ퟳ^g̮ޏ+Ϫc/$(e Ytn>_F_.ISڗWn8f@)D(~_ݒIt1ng*s)qX5;g$cحLMYIP>Pt|mInMn6kнcNiYgI&]&mJǸ5E٨j\So+1L0$B{1kj,!;\Tn`J3щe\iʶ0$&ݧ;s^o_^kYImH2Q 8;uH37?{#3gFߪvw?g{}zKNj7י&/}083wI&CΜw r"*)1*qWwʘ7v+?z0 fw MPNO_o?殘7Ni_Oz>lq"=o6J2qcZ)= M?s@B&Z 1 I>o "_QfIڜlKr<*UJƙ$< =mL.JDZ9OCUC - gށS]g.XBciHPŢL^/f[kWw/'mЎc5:˝om.$GsNϵ}_rۯC N8?TNYqTY^l;+?)g&$2[.={nMד|m!I,[ͳu%Ջ:a/5{&r ][ cˤu`17 h4zf{kwח;k1w,=WIHPD$$6WI^Nr^ݛmXd*}YVbc_t/ &+ov|}oQt٣Rc\Lu2e\Oe{Uw$i\ W3$PٴLuK~Il}i}ފVTFjo+:umw]}1oj>\sX7'|9MQey';__n̮ޏ+c/@LcUQ \a{]KV_|N'm t1U'k:m6vJ0eA~W$cG1ng*s)qH;ށ%bec$H셢$&2w$O/n6o)5_dݵc= M*c+ˍls&x TaQ52 $')BgK9ٸ뵧ۀJSJ$(X!f/gѽE}~quiܮXc6~l9qU]g.XBcR$P/׽$JKKsm )sycr@[]nf%g/De{NjXaԴgv(22㈲3 2SL`o>F.={>-l!qxfV۠p7)km^51su{]ڝNg7_.5f~&o H0orkmv/IOr}پ6sse PaQD5+ $o'&I'V|jފ'WsΊ7cW}J%$0LTIkILuTKzL$(&kޑޡc(X& zͦOfdsϬ|o)h4#nSڍkXkm껌)~SkaukǺnN?tc#,$Kw/-9fWǕgձ`*e2,2 bO%y3ɯIMr^m tm/1:XqlS.gD/%,`HB  CC֔= lu+%n dcbѳ>YG|m!{I`qan޿1׬$tc㊸ޱMԹFW$&hs$I3{1_z|:ޥ 端w3hYY &$?' 3ʋm vmjRs.I$w학]$Oч럽̄Sm3~j+BXg;9ۻK# @gb(x3ߒ5k۫az2Sڋ^Iƚ! qmRwf_gua}CQ!'|3{l}a2ݪZ&Hp2WNd>m'׫V{ݫ]$Oч'^v:5ωڪicAtd{CwϊZm>s);p4ԋ=Mc_ҦV>1ݦnϜB;w1֘,wj e|iV s-Dᾯ|zUh1X̃-,ػ,d{cwA*Ŋ]&$8QE^(zyny'ό?jTyNi_c\]mLX<[&$kI4:wsĺ;Y) 9f+Hp $"QI'y3WILJkʧxq>x;B=D[ý.w] &W櫇$ǵˊIͦu['I׭ @Zw_f{fww4 %@kCfS3 II޵VnS}ĪV3̸O]6ֻ˘7ff_vL 6{NS/s6swYO޹9fWǕg *u c¶Hz_|]pB]A^؀vJ㪓ڍ56h;%h;A~W$$4<{zW1O{jϤUZSc6|>|]N8WJ0z1 $ ^E^(1ɧI~HQ[p m^&sJ{:K2QﺝN76,lrt+:mnIbb);vJG ݓڤN9n%(8uU_~TXgf2Ht?&0<ʱIp6uo@Kڙc1I&ce66L.o۞O3~vS6~Kod{awf{mqtgf'2z^O$MZ$V=TubFc5'k$ǵI&i{Ǚ~ypߧw_ j"*Sc6|#5ۻח}9U|5+ ++_gjz~QlH}V~&C XI|mR$4$}9V{/= $¢< 5kᜅO'y?w$Õ9ٸ%8o[.;WDjtJ;K}~qFDZ9Q[5m,1lw.iT]g.~`9CO$6I^N^+oh)q7bXиypcm̠զYI&DukR_!'=VӖc{~=] cEy8U]t ENk/W1OFnqJE|kucL ^[el.5f~&c@y^/%9 ј5f̕"@eIDP ,^ϓ|mN]4vh:ƮjK|I0`\Q#ftB{kϖkԩI3ee @6џle{Goߑ%l$XPP$%9IOn7t|4Z83aSg 2Mه-;ןvL 6j:1~I%?g{7x^$n<,2 ۢOI^<Z\wmcPk;}qIƚcf L4H\[I=_=k`v(22ךIK~~gcebH0 E MPv$լꩠYj#Ɯ^ΒLԻnӍK=&mƊN_m,9G1vJG ݓڤF9N\Aw8uU_I0 ,ԬQ_(z#{IKIG/ Ƣ ~\bԾM]ǘ$ \wF|nSae+o>}TkUo='ѿ*]ˣbI~I$oj/] *:fڍ5{Cڤ|wj\$_$:["8\9 @^ 5|V2$(X!f/gѽE}~Ϲ~gcS[l_5۵|w ЉEs;I~JnYݦnƸҊfq\e(AML]o&>}Kq7G=1X=VӖc6]Ol=T`g ^ElIN*T1OFnqJE|kucL ^[el.5f~&c@y~~9^/Ao1c̘+4$*,ʓF}Hl|l' MZYTcxc1vW$]K/8.mƊN'7VlF9c__ k&ƾ}G " 7zJqO~k 6sn Z1֜Ҿ:mI2Q6ֻ˘7ff_vL 6{NS/s6s]|?/0 f ?VƄmq^vz/I^]n{-VzcИ?쵝ҾĸvcM1N &N$z\[I=_= ng*s)˱KA1oVcxl ^E~>_8V=t7Q-ܬsJ{:K2QﺝN76F.lrt+:mnIbq~l}Q!f,C$c69/f{K<4Yme~ PTXgf2BkI^Ny/zOK'@̵ֻǕځԥ未K'׫ce66L._wUcL;U[NY+mç8;rɍ2sJ oo$B(CŢ-}9/I~Mq03m4Ļ$؊I.Xc̬cL{]/cˤu`17 }c@y~n9$/yR1[̘+LL*,ʓF.Z)I]\۩QAc슉&Z%_LLVIk5ԷNx[A*ɳ);kVcgKH#5W^e|lo^O2^dmSho6M߷W[k2s2)KnJԇCǺn42k3$'y5*7p;/3njq]gU1a[$7{yŽ+ݕF~W53'G&;q_6wj.u$sny ׭LZe5e9 of{cw̃WJ0J},H.ehX$&5qpY8V=t7-ܬf%wN#mҦΝ6g7$18?6>MHQ!f,C$c69o)x\ Taa^EyjQ[IO]<=/ Ƣ>1W<ʘ{Fߦ.cL}؊c IoF3gL5f8Q[5m,1l V^oyG'0ԫg-&I^sUO]5Ċl4<_qX7e`X1չKgua}Cuk1XF^,z'ɷIRw4]4SW{h) qm^VLd~8Ƙ7&C XI|mrn9^ l" m{ a"Z'h:ex3/+p$mN6zm'437iK\mm҆cJ\n:}_v=^ߕl~Zj;/3njq`%`qcaTnIHEϲsmP{k;}qIƚcf L+{⼹glOq_}TcJ~l~͠(KvbA$0¾{jՓA/'6^Nj74f+:jtK?\7$w}q7G9J*)q%mx+7}3Sk,`>#*,+@q2Y,z3I}>QΎqaPѺwwu:ѵ%(x]hW$8MV+7%ȹHʦ.g9o1e`&ǗcdF n{ƒgk` >$p+½Fx\yʧw(o1ƮhU.%qegۤX&ך-1fS>se\ߟlnOm zT$<~`dK'@kܪV5/:_9$w]h͘N}~ݾ{L 6{NS/s6s+߫;k5Q39n$`qcv{&{IKQpvCY>Fok;}qIƚcf $gZjyأmvDcIF$c6H%o?TkMY'nç}C.7gj΃WJ0UN$@5t-!Eo&y'WI>Nr}<|r /78޿1׬$tc㊱b6i3Vtڜݨj\ӯ5 S{1__{پ%|͚ϴ+A̷x8T: d|*sINSsJI&å Ǜ h5yݞNI&aʺseNn~/;?{#v 5V ׷~#۷}[xlU/ʢ<# 8Ţ$$9}q$z :ιNiy]'kfjI.'֣&.~nI4Qn18shćUS~o dPk,`F*,+@q2nO;I>LUwX*/ ;rBqwXS][׵vqe$=0/8Nv{1ј&b`2tO0kcq#7}cvX{ N0sp;ɧ$'yfx,+'hs#6Ϊ&}[8kԧI2?VK?ܿ.Nh_y|\\ݳFM6BPo~}Lo %47fkWN"'X!=$Jr_,+o)hu)22O܆}c!7Q$ː J,P Wno%)[yctB{k;}quMڻ&Z !Gk뿌-E5̥5 `Ϥ݋IOS?w|[[VJ0* '`L2\KRO|$_0;VjZ_ԼO6o1ƮjK|I0a\.+&076kԩo*$[=E2HPMOgYo/eq$^IMc/ZyCMAܪV5/:_9$w]h]i%7wcgO`\GƓޜ}s67ըw^ff$,.]O ?V%0ԇnn:]) BuA=6Y- zH\lO4f.`tLB0V**ϤUZS^yJIƼ .$I$]XTxOU;m+/td#0{Ɯ^ΒLԻnӍ+ƊۤXisvMs} SNhZ!,C$c69w}s>7j?Ӯ417̦uNܯ ד$%Z&$N0ŦkR=WL4m`~'ވ-]CUCSپ9|پIuQyx\PŢ}$o q>ƪ'tb h6ۯY,Xڦ6ch[wf.seƙ~ݾ{S\n/ CCyx6|#7}(5J0]30B(C$?%>̗6:݂5SZMSjI{_+ο- iL4f.}I#$B{1k|o?e&QK"Z'lՖfwiS܇I&ÕHr'Çfvm>s uOs8=Xu;K|\}2/W*1X̃-,cSپA|پQZ ՞$haUXgcw^)݇qy*É7 ݮչbU h+$7>_ƖI" Zci1ݩՒLzؽ4czo?fFQ,`T Z'hՔlvN$W^4y+l\;+Xc]* @`¸2Q=$8]VL`ol67֨S:UH z"2e\ӟMl(0NP7ߌl|$O_A$$X:©wVYـ6}fߊ.w]h'x&7Df_vL 6эss8׮|:7}x~5jc$`qf|$c%iRm tm׼ڍ5Q:.'jI.'N$za- $ ϞwUƵcL;?TkMYGnÑĻپQEyJIƼ cIa$$zx\y ω1_V-3ޟ.K68*q}k+tڜݨj\&tIvS{1_Sws<Ӯ41XN0bG+Hz|m1I<^å E=˵m@I]]9^}+'\cvMZl_uqB"s~2׷ XR[߾["FLŢkIJ}ϓܶXq|rMAzw|ڹl@ӱs@[ﺝGϠKCspW|\=Χ.EAUSvogqmy RyHHUy%(,vrΧҽ]Dt[m.YMtB{k;f^6ѲWI0Qo|uk뿌-ELO$q H0or+ǵl,> x$8ᾌbIY$-V2JIom1I׎uW?i;utw~=WwW/G2sp& dØ-67P'X,:>ƠNvJ{:XrRrD-~_ݒLqO\mP /^$g[8ߛ.=;/ /78޿1׬$tc㊸ޱMԹFW$&nߧ~ѴC LYI|mo9^-$'>3Js-$8y;߇i+NE.>ɛI--LK'@46kۀVԜ[vIzvgeNn~/;?{#v4zW7e}/}EY}@bQkIˍEj *:fk5ml3VJ0Q~O]ʞ9ƙ~ypߧw_ j"*S]㵩I2]- ba^pUIN|Kn>?t?Ec]tw|$wxY*npqlV>iLb{{Mϗioml:MT%͔\lq?$yQZ$e9։5W}b[<307oߟ }8z i"*s)Hmjo_e1Ѽz<$ @I¼B+$?%ehXxܭ6.Yv(rFcclNjW_h+ƌ!Gk뿌-EIcpȽ4}q?7},`+C3X}(Xy$y.ILn5ax\yʧ~ m^ hӷ %I}je\Yd>) @ڛ_gaAu<,s$(&fo_fA~$o%(7IKr˰-Im_*1Ơ79}t%w7Ж˘Z3ׯ;fuW?i;utw~s}&۷[sV}9f؛gq2ɶ$/7KvNiy]'kԣt|]kNiy0o`gW*1X̵,Cپy|dyc Nea^Z|ū-CŢgʋW^0F`9f%wNWmҦΝ6g7$11קp ]|k8^drǏپLL| `V¼)G璼$o$1O<,6q8a۟wczrmjRs.I:%h҇@v]!'~3x67پܞT;/cXXW>\r'wI~Hr24],zv<^-`&'9]*#Wj+ ^׻v9Ie8wM0e`&~o e&23$%@|]Zo';o<,۔ݣ mQ&DZ-Ύ/p8}pWl| wfCo"tۋ;p& XJ\|$7ԋk哔/'6HMA69v:/t\&)]Ng%! ~d+>_wW_!'O]̃-,lپ|sy5e3H!IN#@%OJIo'o[m. s7cSlvR{D^1f7>\1}_v%ɍUDGپL_Z}e*HPyWZI^O97bѹ >ƠNvJ{:XX,wJC~W$$4<{zUV2PdPe5e9 g&io$wk%8ᾌyc`Tea^-n&[cŢʋ-.lfߘSkYzt1zDZM;mnIbbOY}$;S{1_\m9g6Mo%}]ibPY}'.ɏI^t6o3nxs:.MZ6lKdXbvTlOIדܨs.=;W^4=yގf4ҮO_摆'!'N.uk7JsM]ϊs~O$O!pȽՕFo$df|g$'%*`|{I>Km\_'K8,\w{{xؾ|5$_V9~o]оs߫m6xV۫~׳}+6۷gŃHIsqIKCՋk哔/'m )s׹|+ @v]Oqwbpԥζx NU6ȼT`N.ʻ\UrGc¶xwL0ys,̘[ucЊМҾP]eLԻ K={LYrSz>\sX~ا; :֨&o>zo'_%$7Q6,A8~%6I5K} m tm׼ڍ5Q:$wg-kg}gW*1X̵,lPMeyJI*`F}^K}osݹCŢgʋk/n6wudu;nqoSN_풘S}V߄. 7e`&WS6Jgڕ [g`V|mݞvRͻI>IFj)C$,Xz;s^o|mR1&D>lű|9nSagoĖpٮqDկߍlP>MtX|Q!,k~|$og[&.^cSm$:fkm괁u]Yw{gua}Cuk1XzmQ ./ʋ+߁0v-^Imߊc!7(AER6uY>+]?'=I[!b&WSپ|KgxI؟0oOu{5Bܭ3 $k7;Do۷F&$_V9~o]оs߫m6xl8cjno*gƂ!Hpc&o$$$ɛInKʶ')t|N9ݸjےn;%ao߾?ϗ]q|,EAUS_Fo*dqy "@;fDžk}IA/-P{v[[m.ncWFcclͻNjW_hq'2LZI֚~%O?H[!b&O^}[2۷g*}ażhJ˰z'_'!9B&+Uai,gKbEct:I|gKϴ+A̷ @G]}x6ɗIKo-gIpkukVM:!}1I&a+.1uH37?{#v 3֩*گn^l`( WGX7W-D.ɽ5O\j)6`X~56u@[]Ѭ=s֍3sOq!,EUɧ,?VBY8$8Վ ,{L|$7nqyY<W^4_=mPImߊca"qm^v9Ie8w4I0$o ܋1_<~9nfYo0z!@g=}6οBz&$> &V<ٸ_qN7J4!DZ-Ύ/p8}pWl|٨a:UEլߝl^&,+vϓ|5O\mOR)1hXsJq'%pݖg%ao߾?ϗ]q|,EAUSl`>MѼziD` 5 >jqyY<wͥc:cSluR{D^1&Dq%2LZI3]?M'${1k/VqZ,y_xX¢G.^e& $o$"In^i9F&+Uai,gKb˸|SN'7Vl1s:|9 @2HPMow37/}aLH7jý(Zג|m݇&heIrT%+}sn Z1֜ҾP]eLԻ+={LYrSz~z{s+'5l=xUپ|̵^wG"@)7[Vf_g[lThG`,9tNiy]';':MVKp9M$c- D5N0&;51Xe~Q噡\krdZo2gFl, G#TXث r{^x<οhz,wcNiYgI&]Wf\;I:wڜt3g&'œ$ `2tO0k+~e*%G$Qe(ZfJQ1Y[(C$eJPonդN߷KdvYpDmZ]$O177?{#v2֪.گNne&Uo4< @"@Ql>v~R{UN)`X~56uI Dk4=-[83ׯ;^lZA'ϑ߿ϼT;K~G(˱WFx&IHz5cq\^M/rE^v}j73fWKpb(AΥ[_l>_dݵC LYI|m帞پ<^Gs?LWBz&$/R {{k@[SSiLbkk\ s}5/5Xh:; K,;&$$I6s6kNi7;Ķ$ڸYmzOqWe_=˴CyO}:7T;>">la^ VaQ#c20fm?3u,q^(ˣU-O6cNiYgI&]Wf\;I:wڜt3g&'œ3yqeDr/|mx&7/}ù6NAT$(!n$y=ɇIJr;ʪ¢< 5keq8jqtΫ ûu6I'1ڴ2uHbooFl 'dWe߹}y=7{="t,ʻ/$:ɷI^~Q˦HubFc5;W& o\셢k-%Evi^u)[wJ}E|-53fWKpb(AER6uY>+]?'W{ACŘMw}.7$I0P]潞$&}}2LP.Ǔ_ۦ6F}$kZZn|4sB}\&`cF 2֫2<|}H0-õ$$wd2Y{|MAǜAĚSڍ>- 6n9>zV[ᾯ|zUW2Pd$lpMپ\=A%T9}¼|$sepB_bhVfoe78}q"5m"qm^2i]$XktL`\Y $܋1_<|9^Mlxi}XIe$%{}2M0W>5թ9gcW}J%$0LTIk5oݵs$(&WIKƷپ$潚-WIԸ]4NL2 q8iE̘[ucЊҥ/du^陀cʒ;>׎u~ӛwƚFNo:&E18P-XHJO^JIص^Nj7LTu\rbH\[k.`Q k" ׳} ;ɸ=>K0@/TVaQ#c2ӯ~="} ۷w)T}}7$hoEy$y7ɧNԋk$XNiy]'LTIkՒ\NH\[k.`̘qj1Xe~QT)l~>-C怒p fUaQ#c2K^J̓?/ke5./q8 q 7uduaƕqCsٍNgo\3&F`)= M~tOAړ`fN2bIvØ-gIp6u h5K9n$NjWBڴ2uH37?{#Om^hw;7/}Z/>/3 ̢I̶$Ok?şMAǷĚk1YmSgRz}h{晳nם }qw~l;<3yr<Чپ _wWOz VO]̃$O帓wپ7-3  @UN>wkIe|< fG8趹fYm4y# 16]'׫McL{]/cˤq& Zcg$ǀ$ØM|l߈/\) :Y7 SIOvw˸6W{v(C$~zǚiڀ6}`ٿ?[^ԇ[ƕEct:I|\VJ0vi+$8^LZ}z;۷Nn.K$$<+a4]I&ÕK4ś hmY^/$w]hz&drN}~ڱ3';Isz˹'پWKvw!,{.~ũ5KŮuRfzHp\rD0-~_ݒLXs$co@ V_Ty&]3Ön~Ns@IbtTaQ#϶] U{lfߘSkYzՇW:mҦΝ6g7:Ms} \Л]k!,C$c6rlߌ֌Ss6$j`Izƿs1WL(C$ʋm vmjRs.I^ Oiev8?]=˴C: }+$۷<n&'@g=r9$'2?.Ø=a׸<}c__[..N_p̾j$=U~['sƗTIn'$8^q?7sVhIt$|K bB%SʧwN<'8v-g4I&׊Ό/p8}pWl|٨[ZH|P1[a_NY~2Y{|MAǜAĚSڍ>- =-Q}spW|\=vͧ.EA@?n9nefYoH㔹lyX VP]d|w|?\0&ke5.O_0;:89ͲhFcclͻM6ҶJ2a-{Ř^2iI֘, ;Ic6duG&.|IJQגx2tN0Oe`|j^SA'=ƮjK|5:}kzHp\|\\XN]6[{{{Ƚ6 lߎ>-qHP|KWID%!&å t4ś hS,rcLLL^}&drN}sX~%iwu^oߑ^<~Bҋe[Egt^P}`k;ul>H̰D=$8MVKp9w"у~snI&JtvRG1X$r<Wپ)7 .#kn}/SbѳXlfߘSkYzՇW:mҦΝ6g7: ɬ0wL`bP'IL.(۷N|+%` ,WPkI'y7[I˓j`0S.W^,nSPkۀVԜowI)WM+S) -ag6Sپ!lߘE4@RKY[^6ӵzC#6Fk6ۯYHicu`^lf.sϜu\89)?]1XMW9^MlߘΛyL@#]f-˨rO$*7I^2 1e.=;W^4]_8o)Kk31߸ZI ϙƖn45 S{1_$/o}[#N ! vQ'(Ki}-C$cPIF{5$qygƝS"ω7cxL~++nR83E~2׷ XJ j=Wپ1O EO$y={I^Mr]L~Ez&hvvm>s u6tMg_YmzOqkm>u)2/^'y53eǚ Y2*Ǎ$o&8InS!6,CŢgcESYVMHplMyFVI&le`8[&3I3]?tI捇1[LF.8۷V+[EG)$%,ɽ}E$cTjIRSZ :|8L1vW$]I+_Ce$u7>|3vo+$8^L^rGپ9(M3]!q/ɗۿ '2JnXݦ,l@o+"z1&Tugz)K&47ׯ;NuW?]&i%.kzL;RHc8|Q$& -S/7wWJŮm"16Y- ߉Da[%(I **Ϥ@VoLe怒;$8eֲvsINaW\;^ 1e.=7\ eٸ-Յ}cNiYgI&]Wf\;I:wڜt3g&'œ7 S{iZoL&y;<9@iTpQ)Ǎ$od;$7-C$cPp.a,ZYmZMRs% ڧx>^6L.7'G߶yh+b[پ=`WC$_>sOc3+%z@qlOq݋I&Oe82q$W>5~)mb&q7)_uqB"pWl|xngyW'UIp~$w$w\GSaOR)1hXsJq'WK0=-Q}spW|\=vͧ.EAUZoNoeu'GYK=h }'$8,WV~;U e鸬sΎ ;h$wlmd&zv L{]ƖILLO$]c@ya&fq[~kw,L$x.ILb{: +>ax\XCfbel{}Rfq|SN'7V}֪SY㰶CqboP_d&% Hp6YW{mRDBmC6je8\:X3VM:b9}t$w]hz&drN}~ڱ3'K9Mew["{w)ԎnSHp~z$7ŌTnpK},vm׼ng$ǵjI.'N$zc- D5N0*o@ V_Ty&2:7}z?7eg)_k!,C$lߢmNl+$G-=,d[la{,>Lp~<^å E=˵m@~.cL}؊ce !6N.L(S[-lߦT!i|^Kߜ? o# ։5 ל$عڦ6cenם }qw\z4Yᾯ|z~ǕM 5U[^loSoeVuT|{p J`?vU>Orru/d >Orr<ὐN[PbqUIp6ff}[,Ř$kRSLө3ׯ\;}_vIvíA=پQ}U/ @)cHJ?#>ՋEK])ISk^泋 KCd$'=1o`ĚK'k'uڡ\rl߬nϩ< fu,$/'y/[ITXge8e[T޿1׬$3tڤM;mnt:{$&n7KÏ{)= @ɸ|.۷}zdlT, WNr&Z ey&ɻI>N҉{9 d cOK'@{kۀ6P]ǘ$Sl]$Oч럽[ g=y)7w}B*{1ŧzn{To# ։5 לjعڦ6cenם }q׭`v(2L~L9w Ymr2kYF-,'In'Y(q>+/+5/ѯ]ג~rNl%ȹHʦ. g]?} 10e'(},zosB&Z ey%GII^tN0Y|*?SIpSڜl6N?3I&[gǗ~]оȸI٦cƠub)+ΥcXG3K|\}2/W_US"*s?$}Ӫ>G,@&X|e$&8^Cw7}8;wͥ6'o$8b&rl`867Lg5f~&g5p/F6l߲neI< My/j vcةns(+/^ԼO6 hӷ %≯Ұ.+&0a4֨Sq9㔶CE|!7ϳ} $dsY%'{! @PI&å 5cnդ+ƚSKLzmlm껌)~Skau3'K9MX f$$7O|K}*`k;ul>H̠MrRrD-~_ݒLXs$cbX;?TkWپa9<D.bwF{RaaQEGx\y /78޿1׬$3tڤM;mnt:{$&n7KÏz)= @|>۷w}۪c`*-ey:bW[},>)(pczrmЦKd|8Vߜb"y>\\N?~/eVo\CH0Mك?E^ǦHubFc5ڭ1vmJ &hI3g83ׯ;>}qq^z i"*j^~uw\9 :+PG{RaaQEώǕMWZ pB{ߚSڗ.kg cfqeӻ%ov+{aLpSڜl6N?3I&aJeZr҇ЗXh| nei'G`O.jQSIKƃ?wMY47EV>I٦cƠub)Uc碱m}]g)|\</W]?lsKyPy՗lߴ}5oœbbel{34$ǵˊI=g'5o>gV'(SIv. پq}훗Wv%v]5&|ݓRC$3 $qtf̭tbXsJBuҗI2Qmw]}1oj>\<}_v<<)맿ޝmq# 5<#'QCJ))*ӫ~'n/T}C1S' f{J@%ߴeD5"GK}ʐٳҞE-3GZnI?'=/`ĚI`~H~6w\\9: }D_ůw/edc^v )7旊fϘ[sY|5W*}RΕgLk}OCCO &*C$ϱz9]ld, %6Tr3UD|?EʒM>QId}1mFx\aigyh9Ku$nj[3')0kzkbK8a,װCS]X}]O"@)67",X?_5P}$AXspqͭv=n\f`"_Lb}gyݧxwc0M?$Y?LeOϮߣ&$zx:֍P7"^],vdؘgh<Fxi:fP. y?knio1-wsfyݒ7+΍g[͓Ւ9>ퟟ" 8||]ⰸ|^O|M#l&f/cS )K62TN0& e`8|k^>ڜҞْL$s1\uYW9fX`K}^W?lBdI&"~#Ee|CAǜA}b-Usg6W~ao_~~ڽqim-$YJ"w^?f = :t6"E˲'le8l(6-W:7{vq-k23`"8ug[[&3Iz͙ $3r\/ {>eld, HKrEx]Y$7Fd} .#>ηux*M/XZ1̼R/Xa4רSy}2$랈"M$ؠb}s|$8ڦ;ED?_j! @PI& FϘtcQ]eL{k2Lì~}w]r?K\n8=X/ґC6?/X?_Ӆ$͞-rlE=$دO%XH`ZZkN0z'u!Nx|vj ЇԻ)"n/˨76('.?i]6E"UKCA}bA}5;,3WJ0o>OUs3k밡ݧxw_ &$: b}G6o|f$d Ont{\Qo2l̳Q4O\.8:;oδ pC{Ϛ[[kj]ǜYs^i> ](A")4Ϻ=ȸ)P= q6ߋݗ, $fM5o".`6ЧP2 $qּ27W}9=%hWR7[kI+1(/ \eIp/"cDx6=fQ&7);9'n^5w։mIyo6hdzmm0$K$ k}s:՛G7sF2L6zװC[;ӮHC6u`/#oon6$ݞ4ҶC$aguM:1ި.U2I&=|5vS|zay׎3I(kr߻Xߑ-wfu'!$hb^EĿ?y]~?ÿٳҞE-37rPluKy8~W$%l`N(C _{Wesu0@-d7džwnj{D&vdؘg^q9ҷyt KNg-9,DXԜWu$gLk}OCtcD5Xߑ{}]`W`M5go}_FOLjM&+G$cPI& FzlrR*I$܆se)N/ì] R/f→Xߑ;gsH@)MD|? @"熧.$˦'le<;oδ pC{Ϛ[[kj]JDNl re󏈻O Փlb}WSήJì v!L6T͠o"|QM&+G$c8ڡdIyn NҞْL4cseX) ڭwDL$0<~Νfo'O%lr%xWϦ,d&e9Ě[ͫ:- V}WQ}kkϡ;~wAkrc}V+>؍6}&9˦7'ԕf+C͢GcM}2*}9;-\SPLNlcƙ$LϏI@$K9*o_3{`F96\_EuDM$7Fd}qv1Y6 |k^Ǜee[7+! ~1 Z\Nѱߘaw ;&q"wf?DWqUf$զ _GOwq[M&+$Bj&$['@=ck҉Fu2M0_:@.sT1Z?`NvI|OS/qyۈ."~]J>ⓛncEԋ%.JfvK{9|H`(_A- r]0%>_ՒLu;LI%"wh?I3'`fmxzEMY6=٘q]cMӝ7/7:֟Jh =[ 17+%t8eX듸BCf$Ba$.ho|oTn >&"ˑM&+G$cPI& FzlrR*I&[u;Εc٩e}kkocpԋe8."ۂCk8I@'4w\sÞg\9Avb_R}k밡ݧxw_ &$y@oSlB tDnZz~P9.&J| [^i\.iAqC{Ϛ[[kjnIFk}u2u]{q7SzXߡ};ұIPŦ|~t?Ǻaپ&t1Y_(C$a[J ⍝L/?_Lngl4;4sucC/z}e,wiڕsIPI"kD=֏i,d&e9Ě[ͫN̕9ezX[_{e۴C Z%lXߩ; EI ۈßS9˦enq4 M}U>\[;&(d\;TƯ )m}l8ל{H@$K9*KBOcj"@5nxz{s`96lInYp ּ7Wڰke{an4\UJP)Sz|aiyt1g$(dw ;>߫.sIPv|#rdj! @xj d$aigyhӏm9|/&[uM\c9gV)Dp8]=:Z=Vؾc}׈R|$s<gҿ- %6tlTx[s>Eb`>`9s"уqkjI&J: Q &$ Zl~-C|p6 솧P&cybFmREΛ;o_*nnu?cz$0jIqRJ ^&>!tI$BaX\~;c}{3G.>"h3hƲؘq;LK FzlrR*I&Qy 8WJ02Q~%0kIo=۽Hx\}SMO/cAť8,X# Ěkn3wLU+'H0Qt8\jow6҃NĪc0M?$Y?Nl'lxz#r&#{ߜYQ%Ffѣqi65j gά;t[fŹZ_]g]|mV!,C$g];7ߛ$ :8cD\}?M4cYl۸qiOxC58wldzt8_]fr޷*S&|ao_~9{n1HYqy뻶b}L|1)7s7|uMAY6='Q;ptэPbc*><q]>xCFu2Lm)>S=ǰJ& ǍuףՋߛx|V|1)")"n??)Ȧ'^/#g;rҞE-3$I$ˁX|UK0QRIF癩b0Y?$Y?K};c}/>,%eˑMbMO6%jqΛ;o_*nnu?cz$0jIqRJ ^&>!tI$BaxR\^X o`O$2"_G]i͠bc0Y|*C$aigyh9 [~Ԟ J &zz_{[__-aJ8FܾA >"&"wO+o Ie|P}$AXspq {=n:̕LFqsG1zZ?:lh)?ݥIRc0M?$Y?K.wp\$[[^?."#SQM2ĪyriK87ŸVk8sfy]D['|9ujt4eIq:wp|@#O6MG7O' ,6mŧ2M0Iv5ԭ!؉[S>[u`b2WY| ϓꄾP/2ߛX5wr>w|@N*֛Gg<2i-G=P\8^_oRv(hs0OݼZy pse:8kNמCw~Y/N}SrWY6}~9=+ ?."~#nMAY6='Q;K}صP3ι}qm_暂sfLNlk~sˤq& @9󏏻 ?] dʑ:1wq'B#e:ȺnqcL{k2L*%(? ̟T"[q%>xO~.֍F?G72SƑP9ni"ZC[ωDaK|%(Iݘb0W?$Y?Xkrw$ 7_"6?ˣvdUE<qyR񀓃lsK{:K20JŸޠOԹBIbbO{E?e6"n= ȱUDaF7L4cYl۸6Q;2Mqv] ':EsgCez<f_oAl '̟ghffßW $ź爸17ٔ K} ڿ$ kW5Mc\yVlI0ͤC=Rٕi]2 `92LIǶMK'@&nv#:$ehPy@HKxiabО"Z~0g֛W%z8OugWZ_]g]ɸ?ew,"^nXv{$N/"⻈)"|,˖h3hƲؘq;LP4 $qּRxc'niOlI&Y8_]fr޷*hIuѴ޳<Ƕ>cL{k2L*%(?2ͩw;$&"ocTtoF7ٔ %6tlTx[s>Eb`>`9s"уqkjI&Jytqe^BcY辍M5kOZ$nN#SD|{Fgen lKxi'3ud"sa敊qAsمng/Z$Ǐ!xװK[|~b}WSLhBl&"~u3+˖h3hƲؘq;mQI&'['@M=˳@I]RY$i5m-H`//ٖ0hEu~MIۛß79T}ӚMyO_ǡH>校y\4͕gV>rpvtG1zZ?K&;]!avQ#,:"_,mNG6ɰ1FiwkkzX[ˆ$oc{mZ|{LLJ^X_$@_":"rqMkYnv3Ov)aA}صP3ywԞUm8ug[[Ϻ=?j'p?$kX}뻼|}$#⻈!"^W,mN%76&-fη敼ٸҡ-Ц,g6ݼR/X5$ }%w ſuoH06;"qn7Mv:[Yl۸9P2 $digyhӏm9|/p{˜3s hZ~O0'{O zz?4oZ)OKm졽S>Eb`>`9s"уqkjI&Jztqe^B}"cXT雝^ǺiN.K6?ˣvdؘgh\cMӝ7/89֟Jh =c}l 34'e\pv$1'qt?. D5}"c}2@3iDmD\],[Vt͠bcޖ0Oe(`8la4,v-'uIgeT:=ִu6 ֿg[¼bgU~HMD|G۹^}ӚMysw͢iP}$AXsмjiʳb+}W98;ݐ:#]io% (b0Q?$Y?loc}M '@yD|źq˒M2)&6('.4CeqC{Z[;&X}.Á}>ui0u]{~H$`2TO0"wxoc}e|Ꝟ@9Ty"⧈9"lW-+:fЌe1ov,>hIyn NҞLc &Wq,eoTxW'Ւ^5ob}ShBJ~}D9֍B/-˖IO ݍ7;TkSټJ>iwkkzX[ˆ$oc{mZ|{L/c}XY_4!@/o"/] 7e}:ʜY{'9 mon֟j$x9uD|V9p*<{h-rl1>3%دO%XH`͏~W$%<: @2ID!mq뻽c}7"@Unv#LjxYI9_$Ƽaq4Λ;o/yh 퓬'_*-I&C教ƐL+.t;{$&$H0StX] P=nv?=?,[mX6nS&$['@M=˳GX/᳔q& @:5m>KD5g["1;?WsDkV5zvCA}bAC*Mc\y=}W98;%r̮޷OIfhkq`~H~|[ϱOx [7;ct\YI9_$<E<;ovX7UIPq/̙%]D['|v-`<`)P2 }~/eOq{lY' ,6}N;6 ELo+u+h7v2At|uLvseX) ڭwDLҊ$w [OoTIPx6"=% >#aMCbb/w(!֦y1{ao_~,u9nU;9јܑhOqxMӯ̙iA}"~mkƳk~?>|螈"M?$.7.w+&L""?FTY8,cyt[Jl\Жhdzm}yzRJ _%U k}SNW!xװM[7bIc7Ӽ"xH$VFTI& FzlЦsXk2L*%(? ̟*◛@"7ޟYQM2Īyri7Mw0_ЬY$tг%H\h+z>)SJ ^&>!tI$Bm26.]4/#⇈cD|X.I& ,6mŧ2M0IN0{gZ^g)Lb|& ֿg[LV.gG1zZ?K&shb0Q?$Y?b}C>JFDuЗDxfYF69.VGv)s=" 1 "̝}.Á}>`<`)P" M]6.( f>"~.O$mX6nS&$;ߚWVod~ s%Wg,0ssyҚ_WKzyp)oc}}!Hp78Fğ"⇈Hp@[?zKf';ߘVPPgCM]g*Ecs\g)zZX6$ysnW}g򘼏b}'$.n? 7e}r@8w-SuS(sfurPH>D['|5Zv10 C9mq+#QL33|8,\ؿ&fΛ;ߚWfJ@_?l0H+%cTJTh*ޯ2_X"uʕ`[D!>p'B#muLS/#g;rҞE-3$I$ˁ7/񹮖`ĚG'wYS($>-exL2"cm3w9N.˨&꘧ev8zi'Y$tг%H\h+z>)SJ ^&>![:6ԟ3`"8ug[[Ϻ=}܍?] d#' I6\GĻ*"^%w_e:(ye`q[Tη敼A`}Vm}yzRJ _%U k}SNWQ)4IFuɸhHNL3bLjbtI0!le1ovhJ&$['@M=˳@~lKMS͕mWD5bZȄ&~Oh=Ɯ^X~26=/5ǹԋV%.졽S>M暉! ~}- rMaK|%(I:]T" ɆOo#6w֚ L*"~?=F3Mr\QMNQev8zi'7]VIunx`MTWڍT:](AN$&$ЏM0j)0MW#1NzO8&$o!" % DA3ƼaTI& Fzl7Y8+Mbk:OpH8zZZlKR^8=HF ~2^T诣o4v(hO9hh^5w6mseV98;%r̖ڳx&q[b0Q?$Y?|-^ &$."o#zeӍgen jh\ǣMǏ=" 1 @CNsfyED['|v٭եxuQ7 S!}X~;C&',>mD1"vI0fЌe1ov,>hIyo6o;^.sgCo6[Y| ϓꄾZ˻ib}W0? fn#]D| ;G}ˑ~`/+&(r>bm:W):w{9ezX[ˆ$oc?n; Su PLLo#x94ᦧ,'Q;Hڠ>G玼E{ûnj7רGZh϶7XO5u]{~NP5F~H2G}-^X!0) fᦞßc3r\I捍nYxiy]/=Ц,{~)anj7\UJP)Sz|aIJ"~-q`^qSˈ!<^W.I&;d,6m-C$aigyhӏm鹩}>q{s@zjz__} Ϯszy^8뽡8sǛ<^j= CK]ԑP9C{|5C[ωҍX\WK0Qbͣt,D -^{{k yI 7z^zǏqtL7p̲mul,2E;=vv4yR*-9ک87+%t8P2ILI?/GvL$C LYI^X!&%6=L}E7quxU$h3hƲؘq;LP4 $q:hZYv umrC_րg[_hϮt;4Ϻ=?&b`2Kpïb}8vK.B\t̋cD|m&n`͠˲$@N0Y|*C$a[:l=ȶmei_-(}5:). % oy;?N`2&7EDHlO`$r>bm:W):w{9ezX[ˆ$ocntqiwsǘD7`>bc^ƺiF'nI2E;,6*}ƹ#oў5:D>':᳭-Sg]TQQk[x09 vw @/#XoxܸLp8,eyt[r]slgKϋi;TZUJP)Sz|aIJ">lC.. 2"~I>Q-Yg+yC$EP2 $q:hZYc[znjcL{sJD5bZ~O0vSՋu; ^$8ٛc#MDОeUTBKϱlt,ﳇN\7k&$I$ˁ7/񹮖`ĚG'XI`~H~xK|{Hp6u_m^mve$C('.yt \{ϖd"s5T L+. k/c2u 10eRoc?NHp."źaGMI☶h3hƲ, >pLP4 $q:hZY"^umrC_րg\3ZիK|E 0 <""ےdO_GhP1'AXsмjlϭrpvK3#-gLRƷq`~H~xK|[CÝ&"F;mwE9+˨&6('.h"hHotL/s9DH>_hϮt;4Ϻ=?&b`2>Eķc}$$H7G^~m3h뒢O'N0U9ƔOeHK8|k^Ǜ,9xL>+b2WY| ϓ$$/1`>"┍:6&آ~?$=_PPgCM]g*Evu6s5LV}kcِcuM_ⷱH0 MocDi2Kۇ̓evX$mPv#Tsniw\[ėYǡS>ۚb?xuQ; @9.wGKɭ!NH"ۈCD\o[fLOqrY$76&-fη敼ٸҡ-Ц,g-1aJX$1JH$8$B:w7LA]v#."Ɠ࠶sbUeK8la4,vm-=71I&=|upv9Ec? ̟]T(;b}$$e6FĻxLei"Ur>lO=e6ԯ$I$ˁ7/񹮖`ĚG'X:dp:wb}h0 R @"Xoxu_mSϒh,&T('.0;z8lzͥ.׈nilI&>!ZJŸޠOԹB r&2&a_:>H9 X1~ 5 rF6]Gķ/m% $FT$4 Fzl7Y8d"aؚ5Ί}kkQ]q1+*.3^k$7G<,M\CE:Fc9 ĚUsg6W~nX)lL=g 7u /x|x-Mß;17ޟYQM2$Q4O\.ѦEu`~`_Nsf>|`> ]vvk}ui0u]{~M0eu\I7Ҍu3w+m3&t>/1(T$4ηuٸ{&gLY[GǗqx,eoTxW').3'NTt>eٸm$HGO:ku7;TkSټJѹs\g)zZX6$ysnW}[kґ` esڣLW,'y;Hڠ>GҾ︶/sM9Z &͏C[|5Zv10 .sx|2m[ iGě."c]N6d:Ⱥ(ye`ؘ(EΛ;ߚWfJ@kvD`~zw[k}sM:Ip|_I]È㻈xK6{@6ҼcݐstYvl.IƜ}?1h(Cx\aigyh9 [~$\h=5"y1L[} ϟ&6M/M_k $8ڧ7=/c݌sosSUCE*6:|ni\7k&$I$ˁRҍ_$k^&u(I:]?Q$]s2w$%@nw]D1M9lz2(ye5nGXQ4O\av􎃥qٜ{anhOLӚ+z>YucmO~}9P5 Eʰ~;b};9@Rd4w?ڈ# @~1gI+V Iqi nh3qe}Ԟ_|;8+fGGvŹkby@6dۛ ?&}r`t5^T诣o4v(hO9hh^5w6mseV98;%Nr̖ڳx&q[b0Q?l:񏱾ImD|>8\s7ޟYQM2$Q4O\.ѦEu`~ہ̙mFsL5u]{~M0el\7/;2 Hs- a329(Ob!VS&$;ߚfƾcmei_(}5:idM$W$1w$%@6n*#][$͘.]?zUzoL+w(!֦ysg:@ΚS&~lH1ݦ= k!@^#mD|wlni~rpݛy&lqIԇ]>[׺88:9:m9O$s>ۚb?xuQ; @am"}'HH* 8w)~Lg}9RI$eyt[Jl\Жh9c!کh+yezH_tL`o-bo\TM0aq滆g;1M[4"@NWķmD^Ij1gI+V%P,4 FzlrR\I2{k9Ec? ̟]T>W  roc?졽S>M暉! ~}- rԡtIZxI'JytqDU DbMp3U[4!@Nwxgn ζ'-n?,6C('.yt =2InLknj7 dǯI6> !tI$B>CN9Fu,'n࠲l9h߲mR: d EL nh3qe}Ԟ_|;8+fGGvŹf(R9;I &"wuFylS/*7;I@'44;ƶs H9fKdb`w~rt`ˈ2"^WTӄб]9j1Y(æE<'>[׺=:9:m9O$s>ۚb?xu?%Qw}gx;ɗ|\$ym|wohMd:Ⱥ(ye)Lv[͢cMܚW+293껉>LW&$K$"u|b $Bܜ{;/b}G @r>5=% $F(Cx\aigyh9 [~$\h=5"y1L[} ϮszUr%o4@rol|[^W`gy=w纩\3Q=$دO%X:n"IX6D5~G9|BXI!~$ X7/h dՍgxfUE<;ona"7U& [ڍiMqA,ں1 f'at?. Dk$ ۈ:6~ɛ$8,[c>!W.S8['@M=˳Оg)LubkJ?_88+fGGvŹ+XI~;J 6NiáOfѵ~vOV}CAǜ}bAC󪹳il+k?Q,APcD&֞ 3Iߖ#;LO]$%IHMl|/y5pe$C E<m65We4gmٕngַo0u]{~M0e8y\;ɯc}G @2M6__aʓhCm3#r">!I<.0yu-Ǯgl3I&t8_]fr޷7רjIP95|ɗb  򸊈NDy$HGO' @;TkSټj,:w{vsd޷/? I:\۴U;+罟`6"}gsSMk漙h;Hڠ>Gw\xH\S,sV|)mon֟j<j prc}G9M暉! ~}- rԡtIZxI'Jy;qD%qnr.BncY8f 7g;hE9+K6˥y!W.S8['@M=˳Оg)LubkJ?_88+fGGvŹ`w*$HAbU?Q.ԋ us5 ͫΦm*gG=C=RX{6$.[ވmHvM_^iܦ΁ԋVU0lt,Ҟnj7LTInI?'H7ƳM>QbͣQt,$Ȝl&w_( u7i,tM6> E77M0_rK1U|icyE\o'.?~uL´YI?I!d}0{K$ڧ7DĻ?7I$H;gsbuʐ$q:hZY>Q|u.2+'A8zZZlWk̟Jvt{K{Fnp鲙kO_GhP1'AXsмjlϭrpvK3#-gLRƷq`~nǽ:""*wQ9,˨&U('.hӴ 7zO|5;͙SNJ[[7Ϻ=?&b`2oW2wDxIY2}Bgd sbuʐ$qּ7w7ۺ:gLYYeޯ.K޷ַ7רjIP<{; p gqo"6I2OH.]?zUk{oL+w(!֦yYtl\h=-ao_~,uqiwh6wa9a0ǍLED4+\̓elSr?y>r@8vqm)v+zM &͏C[|5ZqQ~۫Xa#7^)R&цE9+$dE,z|6c^cIpX⫈2[4rr:S/ZW+w᳼vK)B7++%rpv;n"IX6D5^w /øWqm؟Vc KfՍgxfUE<;ona"7kOUnj7 dǯI6> !tI$BPXF.x6ΜH9i>]ILVI&Oe(`8la4,b Rd"aa nn7޷/?R1#{L&$8MD|_7JP'eC(^CŧzѤءcN>校y4͕[(gG1["k㙤{oC%^1 ؙǸ֌/#z8\s7ޟYQM2$Q4O\.ѦiynhOYsK{j>w3sihϮt;~nQ8{;w  1n#*"Sn=LSP1q?mԧK4iQ: d ELGoV^Ɲ["]?}aef?.e~WR4&e4.h4#TshԮUk9O$s>ۚb?xuQ; @(}2_N  1*֍3YήeٺmԠ$nݓt4ּ7;ֱm~MW**%Ur_e?E$ }%exW۔`GmD_3nޔ``THq;TNP %L .)I D:@XM=Hb cG{V1g=M>.wo+$/}ǺQ]D\}_/q~?Er>l|y\3Q=$دO%X:n"IX6D5^w /jx| HqenwْdTq\YmXQ4O\.歹ԥ8$H\`+z>YucmO{_IFe7KH'͌XN.$sF}D6LP4 $q:hZY=jz$D:J͕ܠna ho_~? ~+5O}^p5%ؑß(S" @DJmO_GhP1'AXsмjlϭrpvK3#-gLRƷqmp5o}w؏_D29,˨&U('.hӴܚG]$ط_$_Nsf~6~U< mٕngַo0u]{~M0 ԿN󋈸6'G}=ܔ1Mqe*~i>]ILVI&Oe(`8|k^Ǜmbx&~nuj7?VJv}moͯN>׌ EHXoxܔQ" @DH0K _~?$=_PPgCM]g{[)zZX6$ysnW}0Z:w_)58_n/N/ߐpMMc@r#Yہ|.{ܒ4G\.g>oGw\sSYǡS>ۚb?xuͿ󇸛3뾈_kƭ`?6[2^EĘ~CɛhIuѴ޳< 992$HX!fqX|6X[W_돂5*5O}^'Xy1 q릘wqd7d/$S/*7;I@'4)͕[lCC=RX{6$~}3gl9qZi~r#Yہd "V}JqvSzT>|`ωNlk~suTY5G$Uc Ƽ = f7cLMESP1q?5#IrŪۢe$7Mw5u9DC[{+Cc^m5$ }%¥p;798/bs2nޔ`G#UI!K<.uѴ޳<JLI&=|5O=?Jb cG{뜪^t;/B]H_ߌqo2d2KP?zѪ _}[ՙ^sM̕LT98;/~lOX$.(.b}6$؅VW6nXlm23R"^Fċ͟pe`~X}$1BX]τ} 5L ٣VV8d"aؚ5a58bo_}? ~ר8 S"w\lKGě{_1M&$ Aԋ us5 1wmseV98[PcD&֞ 3Iߺ'LQmI#mD\Wuk:v32jId6˥y<4m>Jhǘ/s93o?}a_. 3U1wݫXy_b6$^D."&Hw2?LAytV)Hb\Bj&$;ߚfk˽׏I&oCClsR0ڭwěk~NNw/u<(`[ױބ&.D%4jIK^ vllj1;=|uKjzZX696 ױ|GhDmzƻ7L!ۡ՚&,7hLʰi\.8i>oG:pSzT>|`ωNlk~sTY5?] ]w &7qћ0&P$oE,q^Y$76&;( yt[Jl 0[ǚ$)\& m}vJX$1JH$8$BxJ6z ?`[qa2nޔ``#UI!K<.uѴ޳<JL7{kz~<&>g9U*{O$uD~s0dLnDi'>Y`4IpJ`;l:"ĺxx2># @L{lQTOeHK8ܡ 6ݚzJl3I&yY+|a_#wsS_׋XyM[Z~ Ml[d7d/$S/*WӺ *AXޘ;+ƶ$d9^jr̖ڳxy9ayTRc,K! uKn8Z=,˨&U('.hӴܚ+a;E|;͙yyݭC[wXI dn/`5WM0 aXy+)v$mD]n̲a}7/m3&1,1BX]ħ2$ǥqv5Yז{/>_L$/9v}&&1_X}ފ/H""#.ÔHШ}$#/Y?zO/w(!ęy|u6snNDz;};ݦ9YDEf؆yo#&"v4tf7d;\SӄFC6E<'>\AGknj7T3`"x=ug[[=6D[?hbuob}\ 60FD7qn%Q}.tgIˬ+ 1z~IΛ;ߚWfc:֪8&D纩ݼ2Q=$د_:&Z\O`[0l@muۈqd2IP/v&=(GX@8['@M=˳@I]R*Mm:5"y1L[} Ϯsz}X߁(&6XoxƵn2^&7"C3ԋVU0lt,b\\e=$دO%X:n"IX6D5S >]|Q| W}NH7_6tPۨnyue$C('.y5W[ڛ|_w`JޠOm]~ꘄiz[cILcD+CIXo/2T)Qѧ}$buʐ$q9 @CAm5>KgL$[WY58bo_}? ~ר8ט?Uz}=(g`r.&${$8P?zQ:ߘfP Z6;+ƶ$d9^PcD&֞ ƳkI 3̣]`Sl*"^=ƗIp!xfYF6ɐF'}{PDm\)_v4tf7d;\SӄFC6K^}Jy#57k*ΙeJ0o:峭-֞Sg}ح?t1ﺿNpe< ~HSr Kf;\Β$YcWyccۢ$8>;o|k^ɛfXz#c$ vD`~zw[k}sޅ<:$ǟDKX߁~^"tN&6qɸQD$;[#UJ Yqi .)I|u6szN<&>c̩/'B?'6#.NƵn2^&7"dOh_F>-9vsD`>`9sRP$}ck<ۤ%Ut˫,˨&bFKgL$[W.58bo_}? ~ר8ט?Uz]NF\*"^GՓ]6MvI2Ip~?Bu1͠5 ͫΦm*gr̖ڳxֶݣwR 󨤦^c}7 IpA?Y/]^eL0 #̲m!Yyri6Mϭ{ni1.iƯ ;ݎnnI[Iz͙u1pED%^=Z7(D.R⇩?(Ϙİbuʐ$qּ7g][~vt|I2LR0ڭwěk\*޿]L$Ǎ.q.%7+$j 3y"K^󏝒|~CA &̫sg:@ni7LV}kc~ٳ\۴~ &Fu]/7qjL/u+Yn$Kq?aӸt8i>Gw6vsM9Z &C[|5slO..6_(!?Od Kf;H6ˬ+ 1&q4Λ;ߚWfc:YgI&=M敉! ~1 ~暽 ttI~齈諘(@n\U\^%oȸQD$;c>!WJ Yqi .)I D:@N=Hb cG{B1Xߑp!\֋X7KtƵn2^&7"dOh_F>-9vsD`>`9sRPZ?:ZkwY}~/ Мu&!کE\'ں1 yҚǸz&b]NUL^ ' .M/#{ƃh%4O$c>!W.S8;'(sqg='Rƙ$ r@ϼ}57k*ΙeJ0o:峭-֞Sg9s! vys Hp!?yDźɫ$o,q^Y$76d} .yt[Jl 0[ǚC9,D纩ݼ2Q=$د_:&Z\elK񙫚`˦ě%ːr"U7]'Fe^9Hb\* 2dǥqN0{g;T& $m:8;"y1L[} mǘS*wwb2$3"e[^^]6MvI2OԋVU0lt,>E?\3Q=$دO%X:nb8ϻ`ĚG]?ucEH_$g:-umNfՍgen jh\cMӭ7[sKqni/-oX:sәz^Yn}_0Y';Bf \u؛p~d7[ze!I<.s27W}sr,euL2vse٩Kc~(]\cWHpWRaoLI Cy9|&&UsD+I֢C[wXuLHdn/`oIFݺ .J=+b˼d~ ;MM5bn1rOj`[\Ƌx)qY&fD;4?O;{~CA 6f^㭳m纥ݜ2Y=ˏeweNsΜzzzO Px*Gxd7]_kHR&m2`T#T̻ԮUk9O$s"C6]$%~m~'"qf7.`S8rWI捍1Y_$˥yUM0Y"w ߓlCȹ%FeڴmƜ}$1¥b5y;TNP %L .)IP*u6szN<&>=!i%Ip/".q6inLɍS/ZW+w᳼nxKvsD`>`9sRPZ?:ZkwY{ e2tcPߪ232jIXQ4O\.歹ԥ84엖7,mN=,z>ǯI͓Kp0o<'"$_lo_ƃh%4O$c>!W.S8;'(sqg='RY$nj7W:$O1Y\돂5*5O}^#ߓJp\Ƌf1aoLI Cy9|&&UsD+IsUL@?q<eY^LUE)$bgG#UI!K<.uѴ޳<4|J7WykNzN<&>ksz;ӗ<a>u#'xfkdLl6,{ICz_}v[ڧg7k&$I$ˁRҍ_lgyaՒ\l>]qa:p7Y~7b*SL̲m!VmKxiyk.ui0IMl9,z>ǯI͓ӏ-cxWM0*iM( ""̹eQm4O$c>!W.S8;'(sqg=_}.W#77Y{mϸ\FŹt sMoced7d/S$wV8icS/W[ rLiPlwk[lCL&27|W!J?I~zo:$8y>#$M8\S7'*e$kh\ǣMsk^쀆$=E|6;͙blLYں斴uלQ7 O{o <㗛,mHd"s%0gեa|7[k471רcN$ޛ\Mmdɸāfe࠶<%SNIz>ܡjφX::{[)zZX6=a49ug $ksjf/s} tE\&avٸ6M&Fă C`;Yg=sn'ݒ,~NJJ7~uY]UK0Qb#.\mpHpq,mo[Uve$C('.yt \`IW:D;D[:&a>6ON?TMPUYc NȲ(6e}ڧM1gI+V IqiٸԞnj[IՑڛ=g\.]\cW\t$8󈸋u#di {dLdO_o+w(3OlBݭ{nJ2snZxֶݣwR 󨤦,wwQ1q:$8ϋxrS41Tl,OT2jIF,m-SgLO bXb\OeHK8|k^Ǜ-^?R[L{9_BI:;\NEƜ$8Xoߚq3y$ Am3y"K^󏝒|~CAX96wͫ-,͕mvsJfw,}S0ߜXߝJp <֍,W&&~MIʱUU n;'Շ>[n8g9@[)DCEajI&JC_X&$8~.å$obzQ" 1&q4Λ;ߚWfc:ҞΒL{+\Q)Sz|aL?m)>sUL@{Du,qmx: h>ۈjUE)$bgG#UI!K<.uѴ޳<%*I$\h=٩SabZ؝Oh=ƜUD܎HtW&xS2e47Q&7"dOh_F>-9vsD`>`9sRPZ?:ZkwYWqK$$]GMDl{ucPߪ2Ŵ,˨&buiri7M0oͥ. 9x$ "wm]ꘄm9Hb\OeHK8U>KgL$[3Ǘq>77Y{mϸ\FŹ.Y<&R $xۇ?/vyZۘvٰ7M&I Cy9|&ִM?w|ϭrpڡYI&r Xڶ{NjaE<m6[s%b4;&vHk2s1Vm0?ma VvtsKںHk u_ޣ٫~Txxs ͱ6]LSP1q?5ar">!I<.yo6κ{H~* {[Y[&c$nh/zwK5TdIEܡQ,@z.Z ՅMm纥ݜ}:YFS0ߜzgU'D?wć7Wؽm$G}X3|$(<. YW9s]=rPHD~gK0>?w2|ud p" N7b]ƕc~cYFؒfE9+$Ƙ/<;o|k^ɛ&Q8`YUKQ `'t# M`Qm$ @sbUeK8l顠I'ڑcԏ>q{o Jn d?_=A?ͩ D<ͳ~so,qm$,S[N~ ^W`gyp⠡5C$Ue:ά*&̀*wKrGUN7"yD6ON89>_5 @p" N,\i2mSѧ}$sbuʐ$q9 @> 99|2$pSJ_d9>r:?G.D~P8݈q%xӲWWd+S[&IR^L_o+w(3fl9< v;@UV;4+D1a"k~YvI 3̣u{T_N$֍0|sErIЃ=Rucyr\QM2LKxi|n͕0ދX !L̙X8u5X-i" @9nh{ 0?n/7Wpp|e yYn1q?5ar">!I<.yo6κ{H~* {[Y[&c$nh/zwK5Td94 ?G5XHysE%7+$,.Y?z?vJbsR.nj\h=-sE1Z?X6~Ѽϐ=*DpgU@{}IߣL*V~sMeڦLԋ1gI+V%P,4  tk9Kxl6+upv~<&>}S%0꫏D<KX2eHXLn:P?zѪ _}v{nj7LTIWk;nb8ϻ}qW/S<UN,*/I͓-cxWMkgyدp2?<ͯo`vK2>& $FT$4Il\nh᳔qV& V2&kϡ}ר8ט?oz^u' FU| &1-{uS2żeFּr>kƖPlwk[lCL&27m0<:RQrp: YsIN*鶟Sƾ[6eٺm %FT$yx[:l<hWe[Y[&c$nh/zwK5Td% uRN'r@ϼ}57k*ΙeVJ0QC|a$wieu2u$8?W$Hfz/껈mcHKxiy%o6vc-9,D纩ݼR172ut8UroLFR|֫&]?UDR߿WFm%faviL1oܬu~?Ur>l|5C$Ue:άÆvCU,$x Nw BʴCm}4SL̲m!V&.yt \`sK{gK2N=,z>ǯI͓>c~]LJ/7 Hp7UmBFi`G#E|*Cx\a$en6l7Y8d"aؚ9shok}r5*5}>8M{QgY7ei I Cy9|&ִM?w|ϭrpڡYI&r Xڶ{Nja'I$8UDS[ Y[u;lpMXlr(,!6,èGfġܚ+ We4g捱jWqhkr[E^sG$O,wWHp N%ge2c[6챝)"ӖEaTI&x~[:l<hWe[Y[&c$nh/zwK5Td̹h<{ϣo+78p߬L6'd5y ? kniޛ.Ԟ{[)>S=0kc~FSNu i$8UU%fIF۪ I*qYc1Nӌ}m52h+%rpvH`ZZ~.È4ß" @2{ITELoeؕElHΛ;ߚWfc:ҞΒL{+z>)SJ _%dO-gj$~U8b2mS&IΘ$FT$4  tk9KdsΕ:8;uHb cG>]?Xߩ^kKHp?u3V0՘ICz_}[s>M暉! ~}~2vbҍ_lgyaCO!oYJ("1+!p<$Xyw7V$18AuvyeD[:&a>6OZWO~$W%Ж$/JwBFi`G#)>!I 99|2$HX!V/p}nhoZqosA_,p.6fgRMhoc:PZq!^0z rLiPlwk[lCL&27m0<+/ED kni[.Ԟ{[)ީc~ޱlMFSU_Tqd 6 {IQx͐bqR}Xf|@E{ןWn8g9@[)DCEޯjIJCG,f2o\@2J! @:{&f Iryt[Jl 0{ǚ[syhtuSyb\'e\pvzߘI1x׫&YD! r5ɦ2S&IX$FS|*Cxu&pM]gL4xnù2|"y1L\돂f><p .6~ۆv!e݌5n:P77N U>lt̚Q{K4a)[IWk;nb8ϻ}qW#o0\F,b,a) @궡Q}3Ŵ,˨&bu4q9l7[sKf$ưׇ?~ZgIŚQ7 <Ə4O$c>!WN Iq6Il\nh᳔qV& V2&kϡ֨8ט?Շ?Nr+"~1JMhoc:PZq!^0z rlDW͝Uc\YUV;4+D1a"k~YXfG"◱}[\!+%HV8\S7 KqKalqu|n͕}v@V!L̙X8u5XZZ;U?] Hp=;n ɌnXc;Sb)ӖEaTIx~[:lh+xֲOzWŖyX) @ %s:sƏ~ Arnxx[%7+$',nY?z?vΓp:&EsKr1|u6s͏T1Z?X6_ ySG<~W\hnj`追~M~$(,3u>ϫnj7T3`!у k"W$ %~mѥ#o4\F"*ۊ$,^SLojJ"6$gcMo+ykniY硭=M敊qCsمƯr}k}O-jg}S2\f oLeڧLԋfI+VT$8aiWy99|wl$L{nù2|K)0kkQ^`L3vSG<~W\g~`nƚ 7^Vcs'm *]o .1YIWk;$mb8ϻ}qVG<~Wp7UV$U#mCmfi7_YQM2ir68[oRkQI&aU)m]:Β59n}K] Hp?4O$c>!WN Iq6Il\nh᳔qV& V2&kϡ֨8ט?UelUV|uZۘi~9ԽV\gcC8Lkr>`aclwk[e~vhVcvD&ڶ{Nja?/6pSO. WxH&ԍƟ,R>ƒe5xܭc84[suw%86:&vHk2s1Vm0?mْ0[$LϏIF] Hp=˱;φd}7w걝)i" X|*C$ aN o78p߬L6'067˚ x8:s]uLvbMm)ީc~ޱlMF/1~ $/DI4fIF۫HRo$S\֘g Iz=[{Wn8g9@[)DCEޯjIJR?$2\r혔 =wm3W]IZĆ$9xiy%ס;u:sn^;I:W:]h*ZnlKF+`wU. f,. oPv)$bgG#)>!I%=! q}~2vb_gyaC/!rb<œ7HPy*)xeYF6S|<g8laޚK]snilI&>9)m]ꘄ!I yK8d"aZ9shokcr5*5Ϥc.$~?=.Y7e鐶Cku8V?zä/w(3Ю]1Fݭ{nڡYI&r H6olTyIr鈇t;lpMX^lr(,ŭCl,YQΎ?։C5WqWccc)̝̼1Vm0?mٕngoUIz͙'x 'r?ɼцd}7w걝)i" X|*C$ 'ؖb\yUƞT2S&IX$FS|*CxuѴޫ<%*I$܆se tHb ֯? X*Id?*rxwCl>ʺ+aCjuS~㤍O_͠5 .1YIWk;$mb8ϻ}qw^w PUF\e:!66ove$CN&.gxyk.ui0ιdz%H\hW>Ouc&c5q/@'r#~jCLaV(>m5Hb\:ŧ2$8;'(sqg=buIgL$[+Ǘq>77Y{m̸\FŹybk| I_nBxL%4eOP?zQ:ߚWPPgn] csg[*cCL&2lxֶݣwR D{`/O" @~L8\S7 KqKalqu|naܕ`/s93oU*̏C[|v٭[E^s$5Il|vzlgJl1pڲHs;,P8 |k^Ǜ]1ޯY˶>i [&JI*^( @~ߖ3'@J7eL^}2IpRTO`3UZ| ܡcvf^mJ~iy(fw~' ; 7#q.W$FeqJKq{B} .m6NUz[[̫nj7T3`!у k"W$ %~m rDTKGcL1=㺲H"6$gcMӝo+u1笳$[vcޱOԹBW$&tc[5Z$VrO4{;ʴO$;c>!WN Iq6 Fzl*TV1&D6+[wĥEc~{RG͟ ' .wTu3V03aKLf|7^ꯂfP Ěǎk~k$I56~wY] ۿ\T.xn'o WxH )xeYF6S|<g8laޚK]snilI&>!ڥ)m]ꘄpּ7/Zc_dzm}-+McTPο-1g/,@4q3y$ ImS= Vj5vΓp9cyosg:@*eJc~ߵo0 $8ӓ7܌eۻ\])ѯ+/ŭo Ei8i/2V;Tb^uSYmU_Xy%X(k$#٦]^KGX}b;SLO帮, IrKCfw-9,DVؼ"w2ut8U&>'I>!WN Iq6 Fzlh.blD|m8W?LK)0k}Ʋ{R͟G(faf>`6vOġfI'Śǎk~k$I56~wY] d 7d}Jfi7_YQM2ir68[oR[{<[uvyeD[NlD5$kr0.q5vڧMfI+VT$8a$en6l.QIϝі+N<f_kPr߅*5Op< .p;hY\iϡzձKR՟G :>$kW͝Mc\YUV;4+Ʉh"ڡݻwR\H-0*vᚺPX[߇X f;sk[ڏ}g2w3XcYg=cO%@Yl>ʺ+a%&X3]S/q>us҉n%=! q}~2vb_gyaC/!؍+xIjc>OQ}3Ŵ,˨&bu4q9l7[sKq-=-D:D2a}_YR6uiRk~Ir#ye ]j>l>m5Hb\:ŧ2$8;'(sqg;@{$HX!V/p}nhoڻZAtsv.$f,j"){j䌞l}^" @] Car>+4湥]q>q{sv{${[kvV-]  .=F\e:!FeqͲ #F60N&.gxܭc84@=_sf`"8ug-E^s: 0 .&"ޞߑ6gfL-fѤM+G$ŧ2N;ߚf~8|8`Y)r\WIZĆ$9xPsK{:K2﹕n76L+.4~IbbIF .w|Opc[*S)$bgG#)>!Iʺ+a%&X3S/ZWz3}bAc5K5{C$UeI;άÆv_C=*]x\ÿF\e:!66ove$CN&.gxyk.snilI&>x9a}_0Y7'Mc\U!DĻT%r.quqFi`G#)>!Ik&7w=\UΎbf%ۻyG] Hprm}ri$я;ˋoCa)n}bc2pvpּ7]@9U* @`b[=$8_:&77i:}HNl\FKͿTq_R7eL>CV+$'M$6#[իyMƝ;t|uvbL|uoUKCưjkB&Lh k>/U{/g'o˶w&5/S_W_[_$)"A\8i/2Jnio1\Sq,sR*gD/_Ւ,uOx $ۘ.&ȽSdLT)ӷ\5v%hhq6KCbw-9,DV)w2ut8U&Iŵ-)wx\L˽w1o{~Rlx[8शkbuOeHqN0۳[ԥ~I2q\|uK0DxBHb ޮ5O~Kw{1)rcgl>r̄}.1]P?zѪ _כA%k;]b)NU+%7vb_qfw6nM2\}|H}C' @~L4ove$CN&.gxyk.snilI&>x9a}_0Y7'McΣKp! .߶lX,..>m5Hb\:ŧ2$8;'(sgv$Rƙ$ noc DF=l(S/*W9|&ִM8nt{s+nߢǓݗxw}S}we$ܻ˔~$я;ˋoCa)n}bc2pvlTx KRSToڜ-3%IbxF6Y,P8 |k^Ǜ.*J|I0խ/XKꔦN3$x .6*?)y`񆷌3Ƙ2>ͭj<& :>&kni[.$\hVL<^i hbw&mޱƵQ}S}k>7~?yH\5 bRR2$H ҭI~1PvK{yM暊sfLT98;$z0~Qm0z$ %~m/q>owIHp7}Tuc;tƮ$-bCpvp .:*dCe:5%8mƚ}$1BXSl o>x9a}_0Y7'Mc~q3^[\F}'7&2>& X$FS|*Cxs27͢GИ&D[gǗq~]d;wߖk>p .:*?6em1̈́}^" @]n|S/*W5wcI6a^_~S5ucyI6ŭCl,YQΎ@6q-Ǿ3S|njycL|)m2,ZIz͙}77DHp6DRSToڜ-3%IbxF6Y,P8 ykqec0lưne^i EƯο-1g֯ؾމQHp7MlV|ox˸o̹rwۿTg$.`L1~]~)n}OTq9q8Y52h+%rpvH`ZajIJ' wU.!>Tq2Fɩl=wm3W]IZĆ$9x׭y ֡;ud"s+nl^;I:W:]h*Zvt*rcۨIJ&m>TS\fG#)>!Io͵rn6Y7ce< 3kƷK%'7v];u<%暒TR|c(vHegM] NJ\@ŶQW7)$51YҨbڍWen :gq6歹ԥ-=-D:D2a}_0Y7'McؾY\F=꿥lX,..>m5Hb\:ŧ2$8;'(sq,nho/x1M-Ύ/pɺwh.-D7T}<~W\F?aMɃl>noc DF=8^T·% kYPXl¼Zyt{s+͏-agv<}/5 D˽m-16?yÏ$5q>_~S5ucyI6ŭCl,YQΎ@6q-Ǿ3S|njycL|)m2,ZIz͙u?{;e$}DuƧZ|LTl)L3b(`TIx~[rǝw믗qxֲOúŖyzRJ7;Ĝ~[8ii4q3 eZL6Փ،lnmV/I 15 @XsKr1&D:@*eJcXDg&4s.H p! .7#]Dmj$#q.W$FeqJKq{ː"E_x#R籯:?ټc57k*ΙeVJ0QE~Ւ,Nױ}K}\LyWni%֗l=wm3W]IZĆ$9x֭y֡nhgw-9,DVؼ"w2ut8U&>Sn߉=IpxƕW^%~*өq. Im3#rʐ$g8la4*v-'u;J7où2}G\_$O1Y[럙dKwx>~[*?Fyۭ?qsMC ̄}.1mR?zCɭ͠5 .1ה|̕LFCU/p8ϻ}lQ4.'c۸7WBߤ|KmmTL1+2jIX3M\8)*~tK1U|ik[+S\'ں1 ek翏b $xxsŻMe}ڧMfI+VT$8a$en6l73iKPv\vuI_ìk֨(Uw~c\NǶqÿOظM7%n(kei4?׊U.CKUu(s0OuM6a^1w=\Gk޷?F~/^]lVO>"}6?yÓ$5q>_~S5ucyI6ŭCl,YQΎ?։CynhlW2ט3ƘǡS>enY.3}$܌-l|[b;Sb$g4iQ: b ,5o[?ܸ[wƳm}-+Mcu%u慨\Hv[ū\M7%4q3ySG"b3Y$;NN0z\׃Ac-{Ř$ߪ闖+ay׎{It;꽹2\nv[ˇ.z$#q.W$Fu}iү[g3$H;%qklWn8g9@[)DCEޯjIJNZ29$܌-lұ۟SLojJ"6$glkݚgZ}Y.笳$[vcޱOԹBW$&$O翋.'flW^={xS@>TS\fG#)>!Ii> ](AΔM]ԧ翋ˈx7 $xWW}r$X\]\ѧ}$kbuOeHqvNPfv6J$_b2ׯڛ=~\NHߑ Ռmʋ:6ݔ,QPPgn]iv+>hߢǓ;Q@{*~&nIը]cR')n}bc2pvaW$6߇tjKpRی5Hb\:ŧ2$8['@Mʳ@I]rMpLpSag&4٭]wS uEˇo_kaus03aKLf|^P}rs3hu[h]b+*sƮQ}V3oI4w6Ͽ>_Jp &"?FoR>Ijc>OQ}3Ŵ,˨&bu4q9lgǟ\]-Tlpv>i> ](AΔM]ԧ翋1ylPx" ."^<{{zi&2>& X$FS|*Cxs27W]:@S[ iLԏnuv| =ֽ][vNg9No$ۈxoOtS[ۘf>/Q|.ֆԋ[W盔 5Ft=v*uvu6s+͏~}'7ڽ3AtIpwN7Yp?$j迮z1dFv8;w|o$86Ɩ8|ubL|)m2,ZIz͙==HpǛ,"MBOeS-is&oΔb&MdrNX|*C$ <$nzY8`a-9vszyRtK0O|O$z0~qqxKJzIp7Yd(9rXS-v&f).S87ǝ5fT_ҞΒL{nۍ+z>)SJ _e:۸93n  67Y"'8}IPy*)xeYF6S|<g8<;oni7fCKID'NB rlҤ>& X$FS|*Cxs27W]:@S[ iLԏnuv| =ֽ][vNg٫No#ylN׻6nVzFeP24y$[c3O:ߤPP1 W3w{[i~[E=훮<~_9u$_6w>؆$HVFu}Y7~>!6,ègn6Y|q`ûnjW_h+$7?m/sˢuל)H]D<+_ݶkgM3Q}v3I h&tS 'Xg'p+(UY˶>i [&JI*^dsuz۷;1p= n]D|oI Ji-f1Lk$Ef6s)ڡdEuIr6ŽvuoUKCưJ&Lh Iߙ'mVgacK$Q$5N~-|:;ŧz'է1I=-9vszyRtK0O|O$z0~q'FfՒ,X6kwzۈxo-+캱tzDb:}UcW1ev8;g8<;f㸣zz-9,DVؼ"w2utC{Lck2SwҷzۈnyFIlx[8शkbuOeHqN0zZNݪMpL?G;"y1t{7]럙dWk~No;7 mǛ-|?ɞ!P))4O5O nlQYLOI0#rʐ$g8U׵TBc$[l_u}C{~>\:\Lx?uša6Tem1̈́}^" @،S/.7);Gyc-UsgؖsKΏ~}w9v_xN* Hpo#6 @5κdFv8;w|$ǎKuS{:D^1&Dqh6~[$̧?M<~'}k\."=-+_ݶkgM3Q}v3I h&tS 'Xg'p+U~8`a|'$z/"u,+|6n,[53T" @ؘ2E;qqaud"s+nl^;I:W:]h*ĤZL{ʌOV܆2"Eě!WN Iq6 FzlrRr$pS{6+'\wĥEcqϝ\)Y(nkmy v$dK$%Y70g< 3kƷK%'7I_ I$HK,Q}3%pe$CN&.gxs`.vcj68DtKpbh. gL6 եokk>JpC֛n."~!{caBFi`G#)>!Iڜ*^hLd~|u8\.nhoڻZsb?sz7g}#F$7ÿOrf'l$*y UY-mL3aH(%06ԋKMyQc^XsKyY'%ܒj-alq{ݳgFcǁ%ﺩ=_}e`"8ug-E^s?.JpC](?Jۺo=mK$5yB$csa/w~vsM9J &=/~UKPbo蝱v$]Tb*_Fw؆$HVFu}׹_M1;Clտg>G7cKuS{:D^1&Dqh6~[$xxp{."yn۵hʣOgJl1㺲HnlB&Xgqܙkr6gN\ &+ CcySߖT3w;p{MD|6_$6/q;Tq3ySڧM!^j‰)J&X$['@6'Ν; W)ީc~ߵoc}A7'>^G^5{fvz1m5?7;Q_ R1J=;7k*ΙeVJ0QEb ՜wPB}wmj=\f׍C}vq]YmX3M\87ǝ5[sY|ϭtyE\'e\pvLk}Ͼx`wÿn|9tSH^φPNsINjfI+VT$8aM]N~ǫKdVc(=Wvk0vfBb;(!^D7n%{h3 \b5إ~?{Mk҉%=n:`"5OU֕~s3k밡o.1ܞxn(p&F?&ei7_YQM2ir68XsQIߊ.1̙vNmمLIԥI};[kۓ`_5#6"^썠|t|+ii6Iƚ}$1BXSlg'p(.Dni/4I2Q?e_77Y{e9_ul@}q؁yEċݞp薚|ۡJe"ԨU 3q;M0lQ\֯&Iʑv-2E;տsQFcclûnjW_h+$7?mƯQQo%(9Ml>_}Hÿ}e?h|uۮ7mDۙnq]Y$X76b} u,8˵~8`am b NUNLQ2 "q:Bu(o-?-`=pl\h[&Pz1Z?7~7ϯc N$]laoȞ zm`nv|>l-> >c>{~vs͞>`H`ZU- asx)$n:NTre]7ۙbz*ue)bu4q9lglw֘K/niYgI&=f^;I:W:]v2ILI?Ou="&7)o$/Qg}Lƹ$'X$FS|*CxuI'yեnI2Q +wv1+qC5n?3nu9'@c."}'fOP(֯kL.C8TlG]Nt5 .1wv;YƮQ}s8~lv= `_wQ&oR>Ijc>_]_Yve$CN&.gx0˸5u~qÜYo^i> ](AΔM]g5x)$׻6|ۭ({^ jbFi`G#)>!Ioe}Ipmlmvߴ97[lgJl1㺲HnlB&XgqܙkqxֲOúŖyzRJ7ì5[s ? :"gqC6/q;Tq3ySڧM!^V/$"Aq:Bu(o-?-7}ùsmsJC0kkG'b:؝x/#OϞ &Oh`nv|[^/ښJvK{)nj7YInIDaK_Ւd|7?Ip*1woL+WOL>s Olg:+RTS\fG#)>!I`6vOġ rLiヌ5b\yؒ`Te7g8ϻQHpƘoR>Ijc>_]_Yve$CN&.gx0˸5u~qÜYo^i> ](AΔM]'Ϛu<~|e? 6""Ԓ=d|,lV(>m5Hb\:ŧ2$8NP["]?rؖ> iLԏnuv| M֞C{wYwNg|痱}`g}lb 7cYi$/_vnx#ϡu~0C^_oRv(s0Oݼjےxno[۷9[Oc̈x>?fvX3 bcO: #Frg(CqWhFcclûnjW_h+$7?m/sˢu9>>98,"ק&vJ|7mD)[L帮,cPIxlwnܭ^;Y˶>i [&JI*^do %g5c,%88z_GM2n˗ȸlqqYcZ//9=g%\cyb\'e\pv$1'U|HUDܭ *"/MnwT~*өq. Im3#rʐ$g8la4*v-'u;J7où2aFG\_$O1Y[럙dh ЀGxt*[2׹xlZ=fw;0?)?zCA}bAc5Kz̝u+%7vbSߜyZ?:ltx8e8*"MBߤ|*e$ˋ?3INev8;g82.buD]$8_~+0g֛W%z8OugJslWSkDcm̗qte+"*rqFi`G#)>!IMϱ} iQ&MnV˗M߁~9ԽF\DqllF89u>,Q. @gn]UΝ0as_y-DdTxLlz8mmD<{ RlL$kQ\֯&IQx Yr6_m3I%ﺩ=_}e`"8ug-ƙ${}l2AcIp"Ⱥaf.ЂWY|CLTl)T" 1 e`=.ec0lưne^i EƯ}k}n?/b,|]8gUD|ۭ9xF%n:Dw@JO$C^IE5$}u3&kni[|d"smsJ<0kkG}2"^'9^?F봥̞ &Oh`N~O_o5gASnٳ'ݒXxJ%x/wǓ"1ǟ"s+g0ۙʲ :gq6óo6;kL%笳$k 3TL+.t;͏sZݽ?E?MIpݚC7;lxt*$bgG#)>!I .1wv;YƮQ}3oY]H*"۷W^`IpױݜxY[(p&F?&ei7_YQM2ir68XsQIߊ.1̙vNmمLIԥI}^ :x}D|_*7gL+]>4+ii6Iƚ}$1BXSlg'~v;GY1M-Ύ/psh.kΉ*o_Mo1IpmykUY͙7ά'w^NHpm""^ƴcBߤ|d}򻾲L1+2jIX3M\8aqk#" [79޼.É}>P))4?~^w\3"^F7,"-[ [>{yVFi`G#)>!I/IYLfzÜs][h׮ysg:@﹕GZcMS kσޛ|u>oϬ/'@/#OUl7liNJLY7Jvu}׹_M1;Clտg>G7cKuS{:D^1&Dqh6~[3I>x7?IË߫ek1le 3Q}EWS9+$X/nuec0lưne^i K_3qdxNBsO^EGk[?6/q;T񝘡LIf! @HfovN5&8ni[XVfl\h[&29O1Z?ʑ_X9Q9@!"") (iu&n&lӤ_ŭS/[mY`Pg7k$I$D0%ޯI^wIClk&L+WPߪ)xeYmX3M\8A(k.uIf$0JޡOԹBIbbOz7?I6!ܬq覼|G o}߁Ne^5Hb\:ŧ2$8oWI'@;^]Ƙ$ǰrh+Mq~<f_ofB/;[1$>"EWOL7N}̦a&L>.CkHp|I@p³Ҟkvu`"5OUL{VkNx/(%'@MD|??1X7)$51Y,SLʲm!VLyO9hxwIۡ2sƮQ}ez|a7n>c&i 9#[+p&F?&ei7_YQM2ir68XsQIIWzJD'NC}[dJʦ.Kul '>%"Z$UD!7/r*_v󪹳NlK%GZzZx2n}0*M7v M?V=fvȺLelˆʐ%.gxܭ?>Z|[!|vLNlk~sˢq~}ؾI.Rw>$M<޼}N+[>Y|CLTl)T" 1 e`=.ec0l01\UJPBWo4@>t"ˇUmӭ˗DMwb2V&INj!^V/$"Aq:s]Nt57KL|uoj)%(5Y]{UBw7{)@>uDğbۀsIFM3q;dM6 Xfw&*nzjkj*=--~t!I.Ck8t|I@'4UYUsmg.$m8[+p&F?&ei7_YQM2ir68XsQIIWzJD'NqۧuMeni6O~x"o R xV5W|n$^Zѧ}$kbuOeHq s~䘱M$8][gǗq~]d^ڻZo/k+ wLjxviF%n*23aHФ,z&cc3Oaιsr>+t0-U̝mVVkQIˏ'S,o$IImo6X{uS$k_wuل#I9 3!K\[s}x# 1]7端C*h%7?mE,o7psnSDoU|e7[P;7[4fJl1㺲HnlB&XYnq~wdzm}0=! qR7 Y}kLb@reD|7O2~l$/_v";1CV+$'/CD}` @8|ܡQ, uKeцsg:@7甖y*ay`Bؾ1~7G`O<"~i3dž8<fIFr2٠^P?zѪ_5gAS:6WInID_Ӊk ًx\'nED>s3 gnW׌n,6CN&.gxsRP{|qK{:K20JŸޡOԹqŎIv"w@zC7s)o$/Q7D6($bgG#)>!I"⋈*"WN>V MʷTD$,fb5O;pv& X$FS|*Cxs27W}9=%HXg &/pɼuD|1>[C]eD>"~߱6lãa&oX坐muل#I9 If(CqWI8|u62h%7?m#fV[u9>R_M7`lGgkG+[Y"3SbוEucc, R2.v;+~ֱ_?l0yezHp\`_Mˏɾ+,J/vڬtS-KUd|'f(jeशerH/fErFx+t-~GΝm)ީc~z"թ Mgy7Qci3dž8<nBk`o I[^/ښJvK{)ik$I$D0=xL, O&#ˈ&YgrDwp?+_}'VL1+RfauZwb&s ֌ocKO>MoOqsMCeJ &]Te7g8?w}CIjc>_]_z>byg&)V󴃸LglYE$$o sfy]D['|v9SR6u}C%J,.`<m5Hb\:ŧ2$8;'(sqg;@[S>[u`b2W,Qs޷?1 `M/qγC77/>Hp8]7端C9@+Dqh=-xd3o-] $@6yD|W|&dP;7[lgJl1㺲Hnl"A\JYnqgm/:dzm}f0YI%BW2E1Ul[" `]ncD|}zZna$/_v(F2l6IxY$ e`8la􌹮I':ƚ[_.$\h=eNNìwؾ1oH}gۈ,"^_N?60FB$#{GlPiOh_/JvK{)ik$I$DO_~n}3mlY}9崉~V[53Ŵ,KS|<g8<;f㸳ƴ^^r|qK{:K20JŸޡOԹ*I&Pk/eImmD|9~ġF~6}:Iz3#rʐ$g8la4*v-'u;J7où2MtHb 6O~ ?O?w'@f?uDOD.tlZ=nBN̄}.1mR?zC=wT>%=n:̕LFoμqfóbx@DH?`>"f-Mt+p&K`'2&/=f=yA\hq6,"\GEcE79޼.É}{Z$Q[}7? q 7ؼb}؎vT7˴r2>& X$FS|*Cx$]#njmbx&qJ:;e6yb%hֿ}+*o,LbRL?6/q;T D&e3Q%se'h:gx>v󪹳NlKGzzZ?ϳbFYl o7RSHyD߫siF8<nB`sY.0b$)Gw2d<wsg<ιqz/sg5@LNla-O?U<~'|^f<hL#7i'^>ВY|CLTl)T" 1q) @緮Tc;T/7W$K$~gw͉oxY首[˗ ~wb2V&INj!^V/$Bj&X$%sěhˏm~7O+>eNybLSi ֿ;]z%j~x]D.=($0G;d 6 H^Q&kS/֜Uz[[NxHy\=$8O%''=$0-ؾ.o3$X*vsi9mq?+ekN ۙbڍWxf)>lq{=g%\cyb\'e\pv$Q(mϱ}+tL j&=5'8tH^@2IP/vƚ}$1BXSl4*v-'u;J7où2QG\_$O1Y1ObF/!$Xo>">GtlZ=fON̄}.1zcR?z]oO9hx8wIۡ2sƮQ}EFa'>ul? @7=z,O9mX7)H\D$,fb5O;pvm5Hb\:ŧ2$8['@Mʳ-)-D:K0t|l_-(}c&ؾPǍ>ߥ*ٴYc#yC߉K$hRlq=ű^0\& @zW;|ڵl^{no޷?cbW$:$qs}D|#Mr`Q5ü}˾x׹m.0b$)Gw2d<wsg<ιqz/sg5@L>g%rNcc6x/VE#ˈ.U+\UZ|CLTl)T" 1q) @緮Tc;T/7W$<ǯeq:Z$YD.">T%nj|ۡ eZL6C^I2LHJ/斉7Жo{˜9Yؾ."IP:xsg_{.'in߉0O`^%a]AS:6wWInIDaYl+>| vwJm>eLnwMD1r}wbڍWxf)>lq{=g%\cyb\'e|:WI2Xc} jz7|9My#yj?$ @kbuOeHSr=%XZ% շ\~]K)0kkDzbS#!\5}D|o"]fn:5N:/Y7e|'f>`6vO!7J@'4UY Sj~.o[{0z$8ID:mLfe&mMIdi7_YQM2ir6)jQIIWvNm}\i%/VcED 5IPٌgYD|w|Ugå2>& X$FS|*Cxe앺-)-D:K0t|l_-(}렫Ʋؾ}KC껈uDg@g6_'bO/N̄}^" @dkIVkIo>3D$c-Usgؖs+Ώ";-M<߯ch,(JE6}Y 'w"W[]g~rp[b lGҹpIז8|uS{PUJ0o~:1#E Hp6$Č 6ll:F&'3%q]Y$X76}]IR׽tc;&(J|ݼP=$8_:&;iq]DWD&>%˒UD!"wK;+r #yB;1CV+$'/CD} 5,:Nvr*>wRXsK{T$\h=صrerJcXؾ!oK."mcPn'n߉0O`^%ՇwUz[[NxH\s\=$8O%''="o/:lwY<.tiu|7(N#7{)xeYmX3M\8i7ǝ5[sY|5W*}RӞĸY%DJbbGg}8 z."~渁C7;l t*$bgG#)>!Ieɳ\~?qǡH>%=n:̕LFi)// 7W|2|[WI~iߗm' wL1+2jIX3M\8šܚE]$8_$_Ns}.É}>[sˡu6I:">"d72l#S4O$c>!WN Iq4͒\kLޕnuv|l_-(}|gmؾ_|2 }sۈSD|_F2m:Ne] DF- @Csza,?;TkKټJѹs\'fzXw}l>@"[fϴ89ü I,},ʰk\[2}`$ǎKuS{=o*h%7?Ju:K2A."~1~7k}~!黈χF!|nc*_yG: iL-r\WI֍n_pj4:vL4Q* @rSyzRfUr|Ww@""~J>KrC#yC߉ʴZ$8mxY$ e`qSu<Գ@[~l[^ql\h=eNNÖO4}<~{!Y@__W# QqXۍ#6ށܣL6^P}}WjvK{)ik$I$dCso5\}7_u/?Jv,>BGğ7 ITrekN ۙbڍWxf)>lSqYcZ//9=g%\cyb\'e\)S$1Yzny۷c< Ї{y>":j~UfP&IX$FS|*Cxe;T.9*IԞ 2G\_$O1Y뿍MZ$ޮ4"b86e=M8uP,f߫;dgձKRuCA}bAc5Kz̝u+%7vߧY_7LRkW}ؾ^w$HoUFm5Hb\:ŧ2$8NB1]׃Yp&gLt8|\]fj9GY7[}7^y#Q4sUwYDWD|n,upKwb&I%[\K`lnkkW盔 :>&kni7;Ķ$[q~[G=;g}ӳhFetsՌLJGo``c$0j迮:kۇS>e5.gxܭ?y>z0\cǁ%ﺩ=_}Z &͏C[|5b}cclut 37uD:"~o_^hG{z#,v&oΔb*ue`Eώ?ZcK1XZIcWJR'K$՟:ov>@S-"{b6#c<ʌ3;L%ۧM!^V/$Bj&X$['@Mʳ@[~l[osg:@.sw2ċxn]۵>x>$[e${m7/NzFr2٠nW?zCa]h=--~tތ}$ @kbuOeHqN0{g;[% շ\>Ѭ#.=~Ib [w}mlۯLWm7m$2"ݾGvōb;1kƷK%'!I.wC{q;)}J 4s /IYŵ$涆z` vll^{aZؾGl=7W?Fgm2۫l68Novމ\m5j_wu5)n}2S<'I8|u6o*h%7?m斿g}{:$8Y\aMs+5f4ee[4yz$s:WJTh*?mؾ yӿƶM6#ceƙP& /CD} 5, ^-?-7}ùs\c9;s ;,ěؾ6ots:V#@)Wo6"-"=GUKp8)vcLDw`$~/(MzC8T_UڳwJC! q}- <='j}ؾ[l 8O!@6Woֹj6[D<;GMteIPߪ)xeYmX3M\87ǝ5[sY|5W*}RΕ1UI26=rϭ@ۜ2"~_>V7꼽e:.O$c>!WN Iq6 FzlrRqV& J}lNlϕX7mb&ؾѭ`7du&'oy_G#⏱m6:a^mƩI1X.N̄}.1A9إ~?kz3}bAC󪹦il+- &{K=gG1zc&ul[{ zEěOO``~Udy~I]&SLʲm!VLy!WN Iq6ó̦qତ=%HXg &/qu'E7G>el=or|Dڤ "D"D;*KIf3Q}vS9+$X/e$Igǟ[A1[ԥ,g-1t+%cW%\)Sz7}{oLoI7)Eğ"wxWM~X!.swاLڧM!^V/$Bj&Xd7?㡠o~s$m)ީcU&w};2$hIx'W9. -`ۍb;1Il4׫Oġ ՞S:6WInIDaX?ۿ yc$X՛u.,}D<.QjݹqY|sɶkN :.di7_Yq!VLypvqgiud"sa敊qC̓JW >}lxw7k}6$Xͱ&5~~5Z2ۧMfI+VT$Fþow3'6W?Do"⋈qt<jCȘۻL1+2jIX3M\ò\" 1 _nsf>i> =Թ8v7yDU9뛈uD6"^-P^|7#e}ڧMfI+VT$8OePvz77zm/I&Y8|\]IQ ([7 Vv&6|mjqrBwbw`uגEr4"/w(!֖y1=a &h=H?Yo#bƿ ^p1 Z JҺcRXjW#5UۯlF6Y(Y㲋GTU0\})>uRxxVVvkwm}O|޹Ջq;y=m!6&}|Um.ߕo+#|CmHv8,m .'|tt9=f糒m}晎ueے1%K$ޱ Vw·I>Hnϒ\M~M|1P%ۧL&^f/$2`{^5> >@3-^o db\+%ΚR29Jsr3;wc6I/{=Ol.f%hLҿC7&j6*nzl+@ڵ^wJŏ5CZ~8U%LSU煑bډ'e!V&.{x ǝ{LSoNiΒLw]sueŸ>yDL$BIL~7_jW+ VrYWRb+L6xj?ꎁJe`iscj0H%LL_ҋW5lp_$XI~uI^봩'ov0&&mQq- ^ǜ> aPXsJuu{[+^)֔~}>~{/n6I^I٥\n͊ƦۡO?F$Xk2֙_Gٌ<ĩmPeXKQ%w]'W_юj$Lt}{|Io$+;y]7$]KnדevT_j@-G+ie`hqY= @ϩ1KԥX?l0t+ݏ{2kJ߿ޥ]^p$X6 }$$$ɍ:mꤖ۵7p;eZ}$herH0P_(C$]]oNkNi[|db\+%ΚR29ts؍lʿ-' !$/%y%חrY6Ip?q2{;H$mqy2٠^pW?z!·A^)%~THZ_=$دO%G&уy}KޡB$:wݐUqʻWDt?we3&N#w)xbYba^8^8cֺ_^& SǬ$]?ʊq}>Y+}H_f{gbwh.D*γ9t\ ^潺cR$X/vڜ}$1Xŧ2 {C_ːhb8db:75m%H~z_5: *9i7WHqw|1ʺg:q⤠vXm2}pkS/%|I@P'|hh]mkI%N-<ǐsswޕ \܇;nH$'y7ɵK$+ɼwj\Mڪ)xbYm2Bv9L\ ǡesU$K$]|a\o])7m=:u۵l^캵SHPy6g}$od;dw[|`}XcLIcXbbOe$%8n=E㮋CggL7Veޯ.X|\wޑ흙 N"@E'mعϓ?lS!N*JK8&zi2IpPL>kbb]u7^n9L, ߚr`={pY$~!$o&y-ɧ~Y6u%NnnLVm:֙_G9}xSd g.꣪I<0ǻNj>7*I$o}lzk?O#{3;Iv'@U'oֹmC$%y#ߓ|9^yW2F3>P}G>dqZY$76d}1@\VOSGǟSAcK1>\>+aXWg2kJƺ2ۻ7+o[v%@eYZ5{?mꤖ۵7p;#eL6M^I e@]og$^g&8gI21u LޚbL8]Nޑ];kUm Pg$y>ɋIͲH_ۡcUzN~O@vàqS*~mٯ'ՒljD}ޑRHPɛunېuN/$|ծ6-]ٌ ͑RlN?,0qًc/G_/w1k//)cYueŸ>C,S>^%DFHbywb/f{GK!9$'y9GL߃6xjZ+t9})G#]|* ( @Ѻ7}>Z &3I&s[<\bՔQwbg{G^K!6ssխ$_%y7ߓ|XeݳM8u8)-֯>`KL`R?z1;݋>>kDԸש2km9M=wlwU^JmmCGI^LJoJmd~C_jH`/ַb<3Ga]rv8:8*QI헊IvZ3r*A_S}؋މY[TۜEg<ԓ˫ߕoucdmg]& 1,1Xŧ2 p:1|&~cZl_~X]z*F*;g|Q8+ έW*?7W]MBO'뎣s1QkVGEnZ[o"d_'XI*ƚSڭ+8=ZYNiLV`d{Bwb5Mp6曖$7|$'l0KJp81hnLVm:֙_G9}xSd g.͓R}TpIxIGZ% 㭏M[ym٪e{fwa7-\6 7$$&y?hyӗ_*`Z #}ڕ㴲H0olb^4F/[1RIV/'[W%د_*&X~Zw^f{v}g!^z~$g;x 4qz8:W;je}$herH0P_(ÚI& ZzrmM?-^7}u L%y*swy8k$K`O6ߴ$<ɋI^H򙶍$wc|vXm^xS_ŭS/g^)%~THZ_=$دO%'Yw^/f{6V߈oeHݝQ}$%8ɭ˻WDt? `:/N?,0qًc/G_/w1k//)cYue啒i$gYoe{Zw_[ok @%쭗*$$[PW88goT($N$F+VTjqX:B+ZY֊s[źHY#ڊkE[F/Sfîf{lnioE#JЮ'0ۉ($m3M'XR[_'}>`ܥ~?S/v/zɠԉ5ZWEcZyRlI0x_yNS!Kϵl^1ck{}.G)]I\|mQN-N~vˍIV,'F(qA\跌>./tef.'k$z㏧V0 f[Ηl︞KrI9ms7I^ζ9evT>cdmg]& 1,1Xŧ2 8wVãPqWY'ך$jut|K/_%רd{rw^HLyO[I^I~:mjrۡEje}$XdaU0OI*ƚSڭub[׽qҧju1=؍l^IVw3'zZ~w`4c|vXm迪cyuӇ8Mpָ^}}D;oUH01ش.#;7 d1I9m[I{.ɋIԈ׍bcqo+O $cڡMĥ$uɣ?ˬVL4TU⫭֕13Õi/z.kSD2*ɳII6m6mqtЍs2>e42{9$/a$a/{K&XM Yg&>gI21u s%lk)#a_d{lw\sfH0oNRҞOrJpfݘ uslk;YkYI듹L.ŝ{"Ni7Eo~J>C,S1- Ǜa?g iH0^d;1$xqzwmq_%y63iM0D1jdqZY$76d}1@\JPw<:zѸas̪klDK%X%n]/IwVf{e/]kIIZM8M[Zs2>e42{9$/a$a/{K&XM Yg&>gI21u L%yʞz'{h`7'l[{WI?^}Rm+ݘ uslk;YkYI~Pm˝ޜn>UWF| G]7 }$'nv@\]>I%;KlN?,0qc8<:sY~)TH[o]9cT7WJR"L|Ջ)k $7v$ϧbdb}dꎁJe`iscj0Y-{[dU綊u`IK9mjx`(d$%[|gi>nXm?u>E:DcI9 Ě ΢m}{~x_yNScnl諭[o[% @MCknI>NFUWNn۶`~ii0j;H0X[5c}U#ŴO,K[MF.>.͓s\" R1 @_Nk}R.Á}klj-30E66I>Hr70xyk#גB:B$ưcj0H,2wjEɾbOfsUT5[WWqzuZVQاI=sX3&!N4o$^J;ܶ\xZ{cU[uQN6Y(Y㲋GTU0\})>uRxxV7F^DC^{l^ʽ>CpE6ۦIMJ7\=n".-_7F%SV6q?#IƊճC/Iz^En2M,`rRu\=JIVJ4u5ۻW^~z02 f֗,) I_j&NoG,Ѝs2>e42{9$/a$ahgvkmsRx1&xneSڋY) ׽?>6A'N4O<$^J;ܶ\x21F&h_7iS/Jׂ܇>>Ni/;Gw֚sCdk9)<|?>l(ͽm&KII$ \|}+;&:/N?,0qًc/GǟTcV_vJ9U|-~[W͕i$g{RwR<2`(h3 ^kIIrr?ߏKK&yT&I֋6gI0Vv c/ NhDCƙ$ֹYksD5XcN:CC몵hl[+wVI{r#A}w) %pN4曏?l gXKV'G+ie`hqY= @Oh܍0_f5b_NjLTI뗊I~g{twNK$gۘν6m6mq/1aVڧL&^f/$2`8,GAUNT5ש21&x-VJ2)\VH>la>$ m$o$y!ߓ\vZm%86NWcl6uc~?T-}qSk9g=$دOA>)'Ւjյl^;my$B6?$y'IOrvz\*߬e+;&#ŴO,q;Bv9L\ ,UnN_֕q}>Y+%b:{)7gk 8 q6}0SIMevlsvE$ z#Ɗ.>axtV޳\ chb8db:75k|W O_o)=9 )HP:IO>f;N%7ϵu1s j^e lS/V诣O4`Nкj,ʵJsަXks`*'lYcS۷I^OBwܼvZmZɰqْ VX8mˆv0v9L\š=WHoTLŗӚ9qSC^,kl^n[s`LF;o $o%y-In \^VkzƈdȾg=Rb.-$gnSM0I:1|&~cZl_=1[,O_>Q7~wIoe{t,$/S<$bfds͘0W+J# "s{kzVd+k1W5 @XsJuu{[+^woydwJ010 tF56}$IYi嶕8v8cU[uQN6Y(Y㲋GTU0\})>uRxxV_|`qOCz&;%-S`ZE6ySwI^Klw\XT9.W._7F%kSV6q?#IƊճC/ e2_6VL4TUI+}z,_+%X)1v-ۻg0 *ӗV$&cM8M[o5W+\S& @/CB֬$qX:Bя&k#WucL-VVK0׳3z%;r`6L턍6k|Xa'$+Ok#ŴO,q;Bv9L\VhYUnN_I:Xn<żyIwFf{4H[ I$X7Ͷ._<evlsvE$ z#Ɗ.>a19INPI':w|HY~>~`bk{ﲽ+z>ۻ͝'&ۆ=mFs:q8Yr\[_'}>`U~?b:Dcsԉ5[WEcZuWI{۪zwD/g{gMFQIG,MCo0_ &6,C[Viz&$K$]|Y;K4Vd{Gl`j,&Οo: 6w}4AyYk#֒aH-,&OeXI(*~=U/o;3I&+bu+%Yc6Xk `jS$o&y1[]6߹Mm?9Na$S|(~C m>`bqʵn[@%>L$O&tvRոT>cZ2E<:=RbEycMe^GǟSAcJhǬs]I֕! ~2gOKwDKMS^Jμh6qz8ݘ0W+ӄS& @/CB֬$qX:Bя&k#WucLvuXה?Nl܃  3mrZwm[gmVcdX;$Xmn^olk;YkYINlL2wŒj,7].lYX6kyӆ/I\Nn-}( `#ŴO,q;Bv9L\VhYUnN_ĬVS̛Zw@yg~{1 @?JD'|"&ҒIl 7T($N$F+VT$qX:Bя&" kgڗZ+m]rΟd{DwB{,En$&y)SIOr6#޹M8ur,yݘpC8xMo_5ԉ5[WEc{3~x_9kʭ$'l][$_HC7ϴI}aדmIVnnq2lJPoi:uiFda ]Zs$K$]|Y;j iq}%ۻ^wB~k 4k9$o'y&kIƖMX>cd0mg=Rb.-$gnS$qxteOmb|LJ::ե֨ﳽy&; " u}~$ܦ6˟'Knkj;Q$ Am3y" 2kIr⭉l]eѵuq5믏~l|?HelGyMZ 6ɫIv̵m+ q2lcU[uQN6Y(Y Iy>a$S|~C"'7NQ׾]|UIpYƟfR|d+12Vl,:=RbEycMe^GǟSAcJhǬs]I֕! ~ry#;tk}ܻ>eyofdaSڴ۴QvƄZ&l2Ix ʰf' ~T5DXwcLn;f<)|ϓt76$8ʡgڤ徰O<$N+$ɰvHЍڪXO(_ rMsmk;YkY}RU殶Xy<;9XG5 |m|-ɛI_֗崉n~EIw)xbYba^8?̺ǬrvsZ柷$fo,zu\$oϵ]J$L~N͘O_%[$M0KK&1\RL;m>aXS^8K'@(QPդ;R]$XvRRkeK_}w:%[zr_w>@Qp1s&8IMg͈wnS'N'Knkm7&j6{9\%'^_l>2ub)Ukgrz{~x_9pW<O͵Qr$gڤ徐ϒdb2gl\2We>o#[ἑλI3o4p>]y'y+SI^Lmֿs,r,yjeZ}$Xdv/cmU/Պ̓}Ŷ`>2&kNiNNj?`9הy*;>;`$niB>KD'|[;ܶ'ö];otcbjk_ձμ:C&e8k\vh꣪K<0ǻNj֨kgYL>6m}yltN{~#hfM0W_Ml$TcucdUX\c&}$ XzvhqY= @ONuY.+/>M[wݒ'^J &빕|{-;y>ɫI1`q͘0W+J# "s{kzVd+k1W5 @XsJuu~vRx-0G XSd{7|wsmK",ݘ&-}>ɛIJJvmVcdضknLVm:֙_G9}xSd g.͓R}TpIxwڭ5qѴL &[ﲽy*;{~$LfM0HG|8E;9_|YU+6@I0Vd}1@\VOSG_SAG/ [12I&P|M`b'HL+%DL&)=;K#7s'0Ǧ]㴭7C7&4YI`P5L >@m}q%K0lbNZNdr`Џڤ/Wm4{.I~صVn[IacUNS?zQ>ll^;=b9}ym~֚9ˬ+%Xej}~~!;粽bH0YӺ$&zvW9VvL4]5Gi'ޟXvXsã1/;ݜ*ik+ }˷<䃳\x f5cy>n4y4ɻbj,-lsI2I^9HbbOe${8,,vB$2$Sa}:2_/|ԼP|$g{'=$\k ד$\upq;$Xm?u=5Okz;G&N9ݺj,ۗ*&̑`bs{[޹lb$amr߳kIJ$'jvZmm:;:NCI1X8mˆv0v9T\V.JE}b.K֬9b[_6^WI2$ݬIp%y[L[ʷBH-,&OkI&ãPqWYIOjgL7Veޯ.T|]1]%cqϗIKDz̅O1`qGr\=4[$8m&Od^fqM`\1 b_. @[,ޚXUk׽b &Z7<˗FIЍimrߓ[I>OJh${;ٶ?SCdض! @7&jFUۯ>uRfz'7N֯lXKJz>f:8b$sx/ɣy"ɕiɉEȊZԷMOHbl& EǞ?: :~oU؊&I2-t?R;˕$O$y4;IE;"ǚcWNy<=Si&NoG}v0&j4WI`pfItV޳\hcR9Ǖ$]ZY-瘿nelZ*} { JHMZ{C<$Nk8V;tcbjSY_ŭS/܇kǵG5;Ic9g=AQZRU殶G엏[y6ۻ$XͬI}%y"=$vv؟|wyaveY YU;S"m=fE]a])7o flXs\(Aw1S`E3&c+I'y_L[Í^Dwd2I^9HbbO+ ahg$Đq&ĀumK֑5zA$g{{@ ί%y-ɓI^KW/Uw'N'K~_nLVmQsQsKNؚ}d Ě Εc{TL#~}=WI^KNe{b#`Unk\MjNk86%4c:k #m2PqY98*QI헊Iv2/5]mZ!u&KƼJ F'fM0<|!&-[|`}Xc{] [Iŧ5z$I(zѸᬤ'~Lj3I&+bUn}: I.{kTߙܕg{ONϭ)6˟'K~$Jz1ѣLIfDeԋ,vYkSٺj\t<\b &e$R?)K2 {%ݘ&-$/&y.ɻInNSCdض! @7&jFUۯ>uRfz{ǺL &Ƌ6[od{g\w(g{}{~K fM0Osevrbv1Vl,.1miS>`X=[;o㱧0_z5beLdj{5t+KޏMJdz;yR1 @}H5f/<$^z1mzDz2I^9HbbUY~'pNЊ{kmLb=縒db\+k$zlL"y{0$ЏڤU'[girJph K%H$m*(^o}|6>uJ4aYw# ~}R- @?pV|]3ޝ|oY$MDT$ ?uZݶ+;&#ŴO,q;Bv9T\V^8?̺Ǭ29ݜ*ik+ }2nޙ|7w[`x0 1 7yo1|<2a;pc@.u휱}$hscjVA Zzrm'I!L.V#kG;{=W< $`co $IzO)Uw'N'K~_nLVmQsQsKNؚ}d Ě c? &Y+kEyNOuw#Z5eQIPѡڤUWml{vZm6'ơ$֘fSgm6aD[MF*.+cs\%" R1 @_{%S\ϫ_+6RF֝7:upT5k}$O&bY6hJ}Xc{] [Iŧ5z$I(zѸᬤ'~Lj3I&.R._/uc,ȣޑ_JQg'sϓ<$o'駕;ǀ'ɒ5c\L+$eZyG\$c)I]`œyL,<_NlH)~p9$ЍimrNy!sIKrvZm'ö];tcbjk_ձμ:C<&e8k\vh꣪K<0ǻ|H1eH01؎l@NlHHPݬINoOm, ׍bcqo+O $cڡMe$=utU=tЫM,d" Wܒzc]Y~$lBٵ_*&zPi͚_&y*Ʒܲ1mjk~1ѣLg)$N$F+V%PQ ZzrmI]>Z*D^G'#ޅ|%y{0I)IKl^Lmb~) q2tcbjD1,?[z>lٸvJ](фf_ ԾZRU殶{w/&y*=N7'H6&׷IHhpߞƒܹ6-Ee4]u^)xbYba^8?̺ǬrvsZue>osox4;oQ;I̘`>LP?'yg־R~%$ z#Ɗ.>axtV޳\ chb8db:75k| ^>CށԍH@x- 8O$y)InV^N:9NpO:ƾsO M $ǜub͇UkcI?pڷx);7q_mm`pC?k}$&y.ɗZmo86[1" ~ڄm6as㱋C{u`~/k5s~^mZa<- q<7:L Y$ϧǷl1al)n*}Xc{] [Iŧ2,`8<: E/wU?uB{1b|nX[UrY=HW5$8''Ö$g8'WlM;vӶ8ګ1QpVGEf.2V:\>>kbm:_~.vz'L3u~d{Xw_YS$˒;;tPwu+I^Jxrmu8vHЍڪU:(q{?a2,cQ%w]'[kջ 2IVVXe]Zwg{EwBvf :kq$%rX sW6%}#_u8,mPn^4F/ [12I&P|9ݺ2Q=NAwf{1X1 `IPo{[o$omΪ:v8:|mL(Y$ z#ƊUIaxtV޳\!Wí}Zm]q>ɷe<ƷS) 2&C7 I>ɶQ/I^OݡV7$i);$Xm?xY~F?ˏ>lٸvJuұ\Iˬ$g*wJ{赿/i|2}yI5 n%y?#IJ崱$w.Mt'wiI*ƾ#ŴO,q;Bv c/Gϋ>uY~)T5˵\?Lsȁ}r";GӸ/pwi/gL0fϒ<$o]LԜojD$X/vڜ}$1Xŧ2 pNЊ{kmLM gLWj.Vۺ<|fwg{!G=B9|T7|$O'y'ɍ+si[e}vqL\bڧUS?Gh, 1'AXkGkh+&$izY<iI;c6i[IJHOoiݡq2lJPoi:uiFdOe$/Zc)5g5sZmZa,SOx(; m==ؒ }3ɛNy.ׇ:m{rJph v;$XmղDUۯ} q{?a2,cQ%w]'Zk"_>|`qkd{gGyIqwSu.%`?we+U^K@bzƮ$F/xy?~CVL4L,_˟n]Y$x;;Xo}0- m޷,l'%36RqVG' Sje:L;m>aX@F^8K'@hE=˵X;v$vODKhcI\NN:^$;=@uueikŧbxytU)T׵uϺ2rUo&~CA7hzH0< \njdۈp:i;SCdض! @7&mqipA7˜aQGYW꣪I'$q튉&jDŽ$ 9Z׽]=\ch F5Y$%y" I>6$ib3/]9N+$F3>Iz^y?~CƖL|t>g|uں~=.?>lk]Y+VJdDum!KMxgۘ5斊Ӷ8:|bsu2I^LcŪ$( ahgvkCR1UH21u L\cx8;oZ) b7+ F7&C7 I}W$y0Ii9\d<-c}12k.C8Tgٸn{:xеߚm1ZRa箷cx0;_Rr7'@p>&$'y,ɳI$u9m, iIq2z?Ƌ$ǾNt2P]xbYm2Bv9|ڋc/Gϋ>uU)TuI9oNl^k/C`3x9c17;}$'K/lkl)ƀ2v>e9HbbOccxreN6^>@DCƙ$ֹYkbyl&# fD{R]IxzVʓ+si[e?o>e8&}.1\SOXz/gbM{؄XOʝZ޴p"D.l\eM=ߡڤ徣o$/$dvZmRNa#?Mn.>O{xzkxok5׸iW'%<7m=ؒ }%Lfy$:ɫI' {]LԜoucd6mgHW] [Iϱcr$QzѸ/|IkghJfKMw'ecyys`6N$߹,I;ɟyy[ӎ]㴭2o;L7&i`۽UJ͝ԼrIV5qf]~v~,w݂ s$7ClXrMY,$9tPwt-kIIttB׮hIj|Du3;Cx-;m=HͼAt$>ɫNy,gƒPW`0Xlu慑b+ie`hsqًcO=/q7~oUؒN2j0=+܏}g{ebDL/H0nC=d>KD?'{ט[*N*˼\D$X/v&ZbbUccxtV޳\!˘pI.|B[p`nd{Wl>dp$ f6&C7 I}G%y#IN^m;듌cd1s X]S/q>EzqݴuұfzH_TKpuof{Gtwod{pqG/#ǘ5 xͶl6崉8'I0wD(Չ'&#j̧x>k&v;i{}r#=oe{7Xw7vK=m0$Xnkn%y#ɟޞ;TMa͜W.IJϟ#8a{%MU1Is5SIL$ߍƳJ-[>cd0mg=UÖE3d &$NBыƝgd~8$Lw`5ܥ~?^/>>NiN:֚! ~}N=cw]mD/!5 xN|kcI\NN<^$;w{nba^8?|sU\& SǬ$]ו篯=(۳˭Z1żi+qIKH9/(BF"1DZ)G#]|* a$˜l굝>&&g=7db9l)_g{Hg[s"=\n%y?6~|y[ӎ]㴭0iUm1s j2WM _$>>k&v;i{>83=5Z{]I&-]MT!iK9m;4NvI0|Ҍuꬍ&hkoe/]ZsmLNi?CvL>lIP K'@3=_z %o̓`o=Ll?,1~{,Ou 'CI俒yy[ӎ]㴭2oc\Ls$eUjKgM3wu &̙'ěٞ139VSЍimrѵ$d;)/I>Υ SCdضk.UvM: k~C&e8k\hǔD0=++I{$۳=۟8VJR"&`n3\ܬy%IA6s}dsq1PL;m>aX@F^8K'@hE=˵X;M0Y;]Z9ue{v=M\kJ~N"@EnBux>IKdw\?Ĭcn$Kj>(qL\b5 ]S/q>uEL?:ݜz_Lw]^WƉϳ=sg߭5[by0 q'IL$&6xygk_cKPSۧL6gI0Vv c/,s^H41P3I&֟ÖZ+e{Vl?YsNzIPwnJt3ɻIKPriIִcn8m+cb֍Qb>vZ^FErI||&ִMjv;i}{-3=73~x_j6k99MZz#*Nޡ6'ơ$֘fSgm6aD[MF&.{xzkxok5XWA[*L׻ٞ!3E[D cY$%1Ҽ|˖)cisU?c}gw#_u18a]i..=3}FMq$$0T`*D{R}mcIJrr+si[eD#eL6'p/^/WLKgM3-[+׸lLsٞYVSHvƴ6i$$y(ɻInN) q2l۵=& c <.u>H8Mpָyz^&ƵI4ч/kM5s$%YCٞt]% @ck8lf :k|$'y:l>Y;pȼ|P>TI{ՍXluH1ݕ㴲H0olL6Jp|<Խ׋ƝX]V_~k_$^I֕_=8۳jދ`DL$?6\m͚_&y9gxxusg/ci$mk*y$ z#ƊUr} = Xu.}du l;3/LTWIf݄@|1ʰdII9xku&.!.?%΋aKl-cٽ$ΜHs{Y/<$/$%=bk1kUp9֍Z>vZ^FErI||&ִMeg\2_g{Bgd{I]%IN[lVlHz&-]KQNleCiK9m;4NCI1X8mˆv0 n s\{[k9ƺjLLĚ9i6}=sbG&(߃pWpw3FbxزHpv~+ÚI&'NBы]/í\VgOe{|ggBjPdcTo$/%y FūcRcdضkG:&hKcR!N}o6gK}a꣪I'$qcMIj|{53=czI1As[#7Κ`Lfۤ$&y9m, +[Zo÷M5v%76&c%8>{^EW.+/NiΒLw]'XWnf{l?V\OY+$bI6T_mMV7-$y(kI\^ce|,-Pj#~[L;m>aX@P<qXc I\{jU_c_1~O/@[p^ lNNg5E$*ef݄%{-Ww/O6m;= ڍ=[ <.',M]K}V=2ub)׺%֚]! ~}}73e{~@}WIKNYug<^IOocI\NO<^$;w{nboq^x,\UҾҜǫ$]ו;۟]/'\5I$~IdI~$^W;*Lo$ue:OZ)G#}ca$̓,sn{)eMeI_;ԾZy|ٞb^Q% @Yi2N$7O?'y+ɵ+si[i=^11V[G_ .)_K3OlkgS[嶾Y=;p$-ךI7'fnZ|$'yk~fc5]l_ }{ŠIʵG+lcYlHD+SƸMl5Q(4ZWVg܍te3\<#?bc]&~B.Ή;%$ɃI~T+si[i4^z1ѣLIfDep`<>kbM<`,wR sIBz~Y'cwo5'Ql*m$e;$?N+IIaۮV6IF;l^ӄoƥ0OZkQդԸ>wKԮ'?d{&@~gw$M2&V03YoI~?6ܗ)[߭6dXluH1ݕ㴲HP\ ۇ;֖:VK ~ss_?.nدO_"&n'6T_mMV?$y)IG&y/MŠ>XZ2 @ j]L;m>aXu9P<dzytV޳\!-QP]1I& \wٵfgf{&RgL% @ m2nB}l9ǧɦmgs'XR_{1s jܗĥR:ώLg{W_~ϳ|= 2g|2 <3x9cq7YHNvm F;*UejuڧL6gI0VJ 'JP/~vdyf6]ǫI&֝Y+N ٞ}?Y paG_G&(V٨Drq$&y(ɻInV^55NJhO_Rc>edꅯ\ >>bM{r{k]vNw3۳=~;۳x$9m$: [1nHt<$kǤɰqF#}u!N}obc25xzkxok5W#.vNk1v+3'<=x,WmeH061Iy1SI.mюwTٌ#גB<:n.-$2 Q%L2O^xpȊKju/=cgޟ>`&\wnKA?%mpZyִcn8mK?K8&zi2IpPL½ ̝gVLK&ٙ/&X;]wl϶YBj,@Uۊqs3ɛIʶ9$kǤ$ɰmꎑIWu3oA7ĩmPƥ߷Iy>tB׮h/v*z j$ײ=Sgof{}}" ~D2&'Vج3Y$/)IoƒPega1Y+6[q7RLw8, Ihãۇ;L| xuRLe{m]"VJЌe$༺osv{wIO$& =u1KK&j.^jWIbG#((xO2ONЊ{k76P:}^YU;Zy+ٞe1۳ct^%X#[eά9<Ĥ|tڟkv17z%/?&}.1A2s_Sّ'$ kkw?I֚! (3f{եI$qTR *`t6une7s}l&S$jksx\ݘ1nba^8?VsUtJ~;+&dbzwFWٞi4-gXS5}Iu#;IKIOϗb⼠|xM2LNI#ƊUIax<$PI]ko? SNjNj[X/cd0mg=UÖEA(ÒI&'NBы]/L_) @3%6T_m ^?$y9;2ubx)>uRfzlϠ33J &VbVX3p/$$CzO[[;fd~;Øc_*eDSeQO,K[MF.>^<{8<:<[qUqS{ ]|~_R+~$,֕.w[5Iu%ߥ$j-Е$ɟ=kJ[_uZV` ƨVI^H_IM8ڊcU&hΚqyz^&ύMNW.g{_ٞ1_cL`b$M!jVج3Y$wIIdWF,ۯ8R#Vl,:nqZY$(1J0F;=utqwzb>wJunzRl}}KROgG&N{oڻj k3 lώ3۳ǭJ &VbVp/zW@?f$ Zwjƈ$֒)xbYmd .{xl=WKZٞ1I^LyuD[p ̘` ^?71Qi^P>qx:+}i2Iڜ}$1VOeX4 $qX9 q{Ǜ_#L!l$Nj$$ye6wU]#Ð`elq<'y([Inߟ[ӎ]㴭</}Ï>`/ZOXz/`ϺX;$de몵s>u#3⇒>ɳٞ!kݯJs^k L$868p qUgl:~Ҷo7Xgq?mˆv'/^<VN5o=B'99}8ڹ^g73拱Ǧ8g' a͈xߕlIHroد.|Z/uIq^S;]b9g=_׳=}83৳=^p\)*sW[,уj`w׋>mES%s9m<)Nfye$}~`O,K[Mܓ e/prxyKNiqQI&fzg$_X#_ PkfLЧkO<7IH򡘨0/(8rZejuڧL6gIoSM0IVNƫ^ 탖X!{m$Njߩf{l~?V2I6u|y + 1&U68SRi{>JxL5N ⴭ>/}1ч)eϗHP(_5C+W/|LYkPʮuڹjl'YG+&̑`bs^k h$8$Ioy/$O%lq:KJ1|>DJ/cW_K?|6ĩ8}1@\xvyC9:rJqևUϲ=?ٞW^}kikFCIp9ux/$o&y0˶QK1|+ߪp{B/:3UÖEs2p^8GtgvT_K%+ٞlxLro#eWK07 X?wn)V$IOִcn8m#"cӽL6'07/I Z͘tbXSMcNj~Yl-k*]h}[ 3pl1pJqs-ɫIHlGrҶ7vX< @[u>H8abf}Z~zjk])7o@,HZIsvs֭^Kr] ,ll^;KWrJm봷fz=?r/V`b-o5#I0Io62ɓI~$o'9\;IPc>ӌ敹9ZN?,m6~SYf;pZ.)QI&nf{F`gOf{kj\: X#ϘOƟ%KI+ 'mn\\V}$hscj0HL?=0DI:p$V.oo6)S']\VT.P6w3wa" aTLpPq %,/Yɶ}\ITz~~dM=F2I$؛ω;彑lM$XlM;vӶ8:W;}1LK$eUjW%?&SڭˮYgMpzZYm $'V2~qs=IL$%bq:KJ0|>D۵c$}޶jk_ձμjGKo͓Z}T5D)5Eg,lfW?O$oTK`x\N&Tًm}W)=}53Y=͕H fƤi5~$$c|-s}dsPQ۫sIbG#]|* ahg.cmnI2qYٞY-V sDPv)XyyhH7I^H_668ܜmisnЗ{jg%&q_fR?_Sّ'$ 軗)^֚YMgy$*sW"4$(c$/N:$18J_~LD@uueikIj25xl=׾u9.nN_=[} ۳֗={euD{fhbBZyy&y*omP}-b<|pejuڧL6gI0Vv c/,s׾dao涊u`$g{@gOe{*F/LE\'V^^=l7Uϓ<I$׆qGk̘8=@ϗHP(_5C+W/| |+v몵sؾYꟳ=[}.۳T9&lh>H0Iqs%cI~lW1Ngi[7ƛχCIm~ig†8o9lloġ=p]$7*&yz\ lT]yk`_6`rҬw\$˶q$7ĄyZ&(_/}ZHW] [Iŧ2,`^8/?&_ҧ{5Vnd{v`gOe{*_H/`o6 N]ޏm\Iζkbk1kѹ8_r2IpPLܼ^ /''K'@h5cn]3js2'lPLubœ9Ls/w!V>ۿU$'m&u8m%o>Z1O?jk_ձμjGKo͓Z}4w҉~" @k:Z=#}7ig{vxgm-`]i=p$8¥mrҬwlOIwG%臷{図lE}hb#_u8, Ihã{zh$#\g{FH?e{ו"s% w&Ql?w1F$y4oaXS^8K'@hE=˵営j;^]֍1I&{ٞ&3.L.ؑG TNzq'x?%_Nzkv17z%cd1qo\b*뫹KROgG&? @?K)+&pJ%֚#ٞ׏<`~Zej=3,Az;q$l]?<$1i$j@uueikIj25xl=]tJ9U|->L?=#}/3Ӣ[#{ٸ޿O$_Hp4k&.Ո_.{I'y,wL`~1=liLNI#oŧ2,`8`v%ެm" kgχٞlF[z[j\e`}$lqbÆ1qsJnvhqGkݘC;LϗHP(_5C+W/| W9*ZSڭQGٞc`œ᯻|?IIZq$Me;C,m+xq( ofSgO0hp+~~PK`Qۿ͍$o&la=,m+ xmꎑR0_?|\|y Rg..ŤyzxWMx몓WXk>7ٞyh5s$$g*Km$ͥmrҬ7N?NvqO\*ߜeo-V+6 }L=RLw8, Ih^8^8ֹ<c>]ڒL\ϳ==|:9r`HP#fbZ^Olb&F/c>L`.PWuI֋6gIPcTEL {&ֆ.cSl4_=k.`b[JQ]H=FV8-X+SI:dvcnζiuvڪK$^P}܋q>^gSǼڋ5_e{=`>~Zej=Wfי/sa˖lGUҍtaٖ-ɶdҀZ-YVJ7ѕttF3s&p9& D&9FM+~Ui^Yao,AI=IWzD\[J;I0|^7+O[ ֒q[SL;~ehc*a kǟ=nN_5]0g~@gM_C̋5$4F}yJr Oܖ yZpdq2 10I6HbAS:MHrށI]j3I&]$̇WIl_alȋ5S'?0&n]6UOϺ%^Flx4NQ-Z1&6Ve>" @=jR?zC]i.{kM׹ZWZ;_pgLضV}^ɇ` 4ÙOI[FVV*PFdc'N:fFLcQe~`k:ǻ$Uzg?ak _=Ӏu-؋5lXj5jw3uuCOz՘4O:)lѩ+[o]jmh K0X|*CII(ʠq~TV>v0֯f~Fy(3f~:K0aje‹5PӴ~dzM7:vSh[`L0J2IR>ڪ^C͝ed>seؤ#Z^\;_Kr[g2?l.1 @q]s=`8$?Oz/O:dz՘ܫT7WvӸc$yG:_X?;h>P,ĥ4O;۳tB1=b 'j[2?: WYOFKPV%z-؋5lXj5lG2d$&k$sQ֢}4X.ʱH0DlHPG;=wp+VL6N9zkK2Z[3?<ui>HGUė$5^?P}~1^\P,VsesqcSk#w4iFpSo>=I'$X>^]L$uk#0=Eyj54p)<@%I^Ҷ ړtiw8&ʾe}EkK%^t ?]_}ۈIFlQMּ$?,LIv'_]yc M6>̧nL`L~>x*ݍ+청J}n&xϲLcQeYõ|sB=XOvtLƔ $+M+_a =$4F_yKr()\7&ybl)(=@S`j$Fdl,>$I;x3{QڻmĺH>y>%9$ڊ/0l-ȋ[S'?0&n6ZIMd:WIWs;qT˺V iM>YWm|xO chX+鵳d~IG mk! $tO$9L?Nr} Uġ$1{|53M1&FUlN8*K}TF#&*Gtg?Nr83FNkf}1( @o$h^`3uRWo2u}'4&-S6sMm9ik_mma">x,I(ʠqW>kpF8Y-^Ymŗ֕!  @SYxZoO%O::8V;-E`eOPsgYF=}Wk'+!+h=BOe3e_gܐH_$y(qc˦K]&0W)Mƽ$m5^[IPW c8N0WQ|[y0WW3?+Eg7$yfIW+ 7: zXzLǑro\$)^$yw2S(;>$WsK{mm2} Gܷ`5D; K\kј% @əJUV'MIH02x5In|5I~d־SuH03%]2ji',SmRSYvX;qvhv{m>mۙ ^YMIo6IyG^詬?&t^1}9ɍI~$$ybl)c$b}g `j$F+VTJ #'ܕ6=hW6b]$; ^ፙvvR{70( zXzxaLlS/^7I^;&q71Q_IaWԋ |s[~{jWCm'hzgWf~6x[gmp'Oں>N4J>$+_n߃$o=&%ިo>"%o9Όu&n➪2L}Oġ}gv/Iz:} cś~x[:)h/k{ToW$-g{+$Zv$wnO1il)q/Zb}[W6V4qv:? 5{q|Փ.,;jb˺2~LH;/T^*b$w'9Inʶs 8V;c#d>n#%GY쓭5YV?# XkܨI'L8f]w~ݙ vwݩr]s9vz3=IMIvLJP|^EMkcT W.SM Eq<9_roIzGXW l{9:2^Ku]߻Jsc+͛BQxBƈ͕X\PIJrҘ}GeGX{'Sk#">x,a μWd^Eru&Nf~w4ɡ\߱a;ZY3|- FXzLǑroGbdǒ"&,C$DKníQO_w}8xv6b{hb7Lo3?{,O9u4zY+{J05y 8 MG/2$&y8ɉd־SuH03mg>vۈ1}eM{60kc8׎ѿ}=$Ni[]/3?{_ ݮ+E\O{6I0/TX:/>̧HR>Z\m#s[q0I6HbbOe$qnu9ٸk;NMTgۛ o3?{fuR@B{$`7$F^rb1q[/$1aW&;;c$N;wY6>&J}^*>YWi+qwI|$kŚSڭ v'u^' z*& JW$%ɥI~$ 5&%ިo>bn`5fuRnSGaU2L}OayW76FLGe~Vn,oet\ߘma}Vjc/`e3uRn$Ir[׍IcKxV{|3ѕ-ַخiU>E-Cc 'hk'([ګwexaHkk뙟y_W JC`d^詬?P-U3ֱ$w%aMl* 1`Nm11\].Iڦ$Vj,+ KZQO5cmͺڂ3?nd0g!=XI?ILryInL0cR*n_/[>=U7'辶tk}}v$=]{#m}bgr3?33;kzsPVђljH0# f0V㯉6>o~0ϒ\$tEنZZKvi'k+$CĆ$uX_=CζYs/d~wigsw%p$5/T^>?㫓H$&9a̍6OOv`JUD^Iژk8e>r?RW c8O_ĵwpbxu!Nd~lݺƕ$]w{F< m*'VnqD3:vu}JP|xwqL ~7:ܥ~?qZϹ%}/f Ɖ5vs{?33?<39kgk`w}R5yP 0IW&Sd'Mr(UIIfcpk_:n$oij.(շ.ʱLbu(ⲊvX;q+Mԥy)c\{z3󳶫2?{;YImzR^`u/TX:/>e~$o_'O=2M㌻aLmyX-S*2p{O ZnN6C &gog~v(35P_'W[W_L9QyqˉͶ{VB[\nMb10]~1u֯RaZlÿ{դ~?*gg$9IƉ5ld~vke}$Xl$+_1N?$'y~MJJQ|^$ xkGu}CWKmyTma֎ǭj'ϪTsW76FLG/f~ṋ1vcLԷ>J& フaK_?mF$*ɡ$G<Ԑcr|֭48x'k_Jb$=S5q_V^ˠqWQcu>єPgkM[~nL9VI#{BOejulHP+\$Os8V;c픩RZIVjޓ'[[ks퓌j.c'@ƌf>ڝZsuu d0g G+'qvz7#I~`SOr˶:D0Ks#c' {Aݞ\̿05zgbs`oIzGXW_㙟]/<2kT.J}2Z8qspf{GaK_m|NLI.I$%y1I\mh䵤ӟ,TELW6%$CĆ$uXó+ǝ=pSW$󳳣;I29s1֕MIvM>z*/Timy_LrCS̎$5ɫ\>7ʎځ*]i^M$Xm6H]Zħ2T8,qWڻOpbxuُW3?#; cL p=GHg TN\=Hc$w$4f$yS(y? Jdb뫹KRvM-qZqc)6[3?$;2?;vZIv'_$ə<! !IW&/4_@ILr1Y|8)I[c&cNjtQqZSYvX;K1rlsu)cŽf~6vYgeo_(2OE|*C%X$9 @7'zzwE-L癟(Dudje`s#go#/n9rs˜Vy+N$y,/JreO LtqSg(yIo>%wR?}e( cNqb)-od~uegal섵&̑`½ @G$&'T$FWӳlmSnOf7m+F}ys$1S_H>> {-Ⳛ,? ^F5>H1 ϼ~u _=5bL&( |:Lb뻍Ors#ƜK^VcnS>{n4Uw2bU$KiGc '5_; E4}1?f=k?Y^7g~|6\6I]%3`}2X$yBVy[o'+Ɂ$&6\q:??^je>=5$Vj,TopIv?GtbXsJ{muy:3K3?+31 sFK0@$̟o6g$&:$$y8ɻͷ$UY6>&J1z'Ym6!yaj/FKmY㮷$=])C{_ϴϼz>& @O &:JVH+E}& f0V㯉6W;JXIX%msQ֢גRQ}b(" ! @vxZHc{$֪.gϰd~u}g\'1I&F\+g3`:͉dl(l$^埵۶73^ڜj>`e)9\ħzbvVv\XsJnrϱifLVJ0QZFIk^9I㯉6H;ur4IƘKF֘X_wysC1]ce|Tmav]ʉbي=(S{SOf~Vu}Jf~u[gZ⫷k6Q8oI,id9K >I6c#/n9rs˜Vy7[&y( \$s=8e]+D]m5}ԽD&CW;ڢY%}I0N9}[1ZgSWf~VumgWZwv:Z9u%$Xo@c+yz: ՗$IےdJQ|^$ xkG=KhvTU2L}j'Gܻoޕ`1g3?IgTf~fr{J2vcL`/|:Lb+KܘHI&y2nK|֭5[v^T%Ic: @c IRnPQvS}nLk{23IO\M=I]%3`'e [xlK$|/eI5Zөqx1&z|Ӓt/VZqOl3e# zK0uoXk}nc]}43e~&ϨJ90g4K` &}cl8݇65I$<ɝIhm%o>1Q*׏!^P/YUf8{ .Iٜ<郳]oIzSϠL:v4J}2Z IԠ$L&j5[ig\Kܞ֒[mh䵤TTR}LQki5^j)$CĆ$l3χkc8׎?ʶ.=/ݟFgMf~t}gQY#mJq @-$`;LTYxLc})MI%9ho̵SkLC'8]ݟx])uK ?u8:4h[$֪e]lhgM2?{z^8VV sDIPN{sb1ʽ%[IK$MrUGRrҘk1Nv(D]m5>dw~VnS^tkNi1s2#-}72?{Zr7%&^9I㯉6Z;OPHrE;Rje}IuH03ݮ&#t1M1&=Ue(?_;qvyb5)$wd~t 32?sjoNdzR5u6E}fLbLc}6uI~[RA=<|i}6*ϩ[m>{">+($Νa]$f``T}yqˉͶʻz>I$9Ǔo̵S㨖uu~.o0\|N 4ew`jWC#ڨ&>ό HykUkڭ^WIP#/ߜ$FW :/o7%}$$ ϔvcL*7lXj5xK`kHeI~uG|h|-)շخiU>6|fIPWu5}qVbcv6 @_T>sez\c뾞eId~v`gI4_F-81>쎗*/Tmwg||?ܖ5c8GucSڧ$g'CbIn9RL<9ti̘5Ĉ6)e~6ϊnȽx1;`œLP5 j3ft ^NrsJg>IMrؕ:D0_?Lv?\zC3z[-;Y/Rr $7g~fyI֚n`$9|* jWgolXj5h㝵IOO|;%y"".Q?&8]SLg+RQb4,CI֎2XX;qg9P]z_πg~&ӔܟY8$^G֕]2Qe3$$&$GܔjQleso2I_`g1(I-?Pn 1g:4h[$֪TE]Jg>7e~t03GrN !^߸rR{}p#`6N̗Wߴrr2}۾$?L/?e^ZY;:8&J}.1NbO}ًxBqb~*3e~tcNjִfY+w[L2 Z3F4>$X_~^ߦʱʯLa[ &h$GNƽ^)uycyY5˳S4I&*$Z/0+`'sFa'w:$Jr(p%y"ɻ\q:?j/[cT]$(_MS/z2K05+cdf~s]g;2?y6몵Iʁ+I@$ؙ iWi4q8$?|Bܑ$$9QGzI֘u/wTma֎ǭj'Fw%mߵOd~s$3e~su/k5`(@$hQQ`e3uRDX\#InL\ܦ|h|-)շخiU*AڤrtT4pPA ǜKln @g:e~c|: +aŖueI$1/**/&!ɥI$Os4Z\70&J2IR>:X$w:4f̍tbXk2?^g87d~c=kp0ah &X;p|07*_1Nw/%-O2=I\7v%n>1Q*/[կ1]z <>C`k;cl. 祦U'[kz\3IS @ӊMaK_mzSI|ܷ IްXG,$8]SL_Y$"6$֎2peำ.=/f~Y5ݜoN`>W|=ƺR2Xy;xݱIM$2,w]'kSqYv5uQ&I>X-S*2paޭ\{kU:YunZK$pR{}p`5z KEo} DG߶ǓܓGO;$'K;kZD%&Z'.]3}"3#(3uI֚,kbK v@x $06&ڸ$ǒ<̧IrcvI븑`5f2ֻ]?bTEⲊvX;qvyb5qSKgSrcg02?y(3sjq vI 7^&?&1^}1 I~;_>$`+eeiaLmujPI$w$y՘[3NQ-vqL $0IEU~wI|14bίf~32?1O>qRrJ2 p|7*_1NW$&$OrKv~̫ϫ$oQǺR[**N}wOf>axZvzjyWm؋|?k3?{)m|vcLh)7lXj5hJ\_%9dܗM N#sStTTbU$KiuS:NNBQ2p_>RlPg-e~n8JP{[4[֕qc^R=#/UbU7^Org>IȮ2{2.k%Z$XmzO`lm^;Oa3FM:1bmo&Mg+g~b]~s0gUK8>nvF{IK$/<) @uym7u֯Ra7~xAZ~Ս=P_w$]$3?3s2?cGL4v5J}" &@MaK_m<\޷ܙ'I:ϒ6:~2`cq'k+$CĆ$uXõ wեJ~OT#&h;Dcm&!~y;xțIOruI%9$'seso2I_LmujPI忿4iNZKV(yIaWԋ |L chXۻ/eg / qj]OF;]5w4Cm% o}MJWJcd>$:X\J0<9ti̘5xlJf~יu<=^}J;`œL14cC/c}qB 7S1~'\dOʻ#˛)$UY6>&JukU7KTS;}aܙGgL v흍3?ø<4?I6Sh5h՘8'U&1ɳ^b^fxƉb(" QevI\|,u\lL;S}$1B]Zħ2Te8:4h[$>˙U\š2lj9q;ZY3qj#@s6NWߴDGkILr8 z?H$w?Jq2xuqL \b뫵^RO_{5OH@C=2?8Ɖ{Dm\l`}`d^<I㯉6n> {I|ޡ']$98)I[c&cs,J%q[j= .h kǟg+\fW3?"3CY<G]{utԤ_WHФ K?^b?&1^q}/oI$Mrs:Fqg$S}$1B]Zħ2Te89 @7'zm~ E|7#UtJ{GsZ7I.*Yj!@sF#O'z7IKr0I{W&++]8en5Raw`f5OT|$Qkd~peg3?x" su9RlK.Hд 4iWi4qhLH@InJ⹗KUġ$1S7X_j7~k9}SSYvX;V?>j|i' 9 3IXν}vcL90+7lXj5h㮒$Lr( W&'k](+ZR*om]T%Ic: @c 'hk'(Ɲ/זg Wf~p(32?h_|6d[4[#@$hpX98$3wI[՘iOr}CcDZ+$+MI쓭ť$ΓC'@ƌQNk/-.Y5\=o~n_~s0g pzбTԾf8Z!ǘ8$e>@NٕS*n_ϥ\&Q:k[2֐Ki- @OD߼ʇg f0_m<3$InJ[u$Y5qb.ʱH0DlqYE;e8\;qg9P]>g ?[1_o_F;{:OںNue{g>An8㌼TY՝bvxG3w(i}W$+͏RX2 7B$/v6HbbOe$q8tizrX{yyfp LlեLꟉ{ pzTԾ$%=}ELFMzߴ< 8<~yVުv몵ؖu];'@6ӄ۾]+icd\JrN}^Ҭn>"%oQ:o-Wq{60kg=G7=jg'Ҿ13Gk&31~`$ٛV6SI,MPIOL_e>G<]cK֒RQ}kW.M+GIOe8 @_; E4~<x}L6* @/%uE=Z&@׼sF>@?Ī7^7$&NLr098qeq9\\(Q$ Jm{a".h.4C'@ƌQN.{,WkNik.$&1 !@6bT/W G+Pq38&Kܚ'aIޒF#{k$S7Xg~cZ"><>k_Xo]otJ{uRF=RH04 8{^9I6Sh5hi1l|774ɝI4w>ej-y-)շۦ E\Vkc8׎2pc\7{.]u#:,D}םikʘ`NF;#/1Ubucy%o\IJK~X2 7B$/v6HbbOe$q8tizr@Z\X?\>^]$iV`z1ǗJEo} DGnגܖ䇙O$e9 ⴢ|RS:T*s zCK>}EL֜Ҿy}khwVNO%K?g 1x5ƒ$y#I|$&y6)yꡟ7P>I[c&cs,J%q[j= .h kǟg+\۩$~}w`csJזd| }`(|~TYLbichAN{3P$$$E?[W(4N `j$F+VTJ #'d^9܋_ܛcWwwg}㬣9MkZ;2Nڷ$ xkG:i7~K%q[ũ,g;[o\57߼sH|+5IYҾ13Gk&31~`$`+$Z&X9$NrY&*}I^1Ϻ5גRQ}kW.M+GIOe8 @_; E4ξx{eǾj>܃z'?^5vU^K:%UҪQCu1R\I$ώ}P:Tc)S[# @'b?Nx1^$%>̧L3OeQ;0E$/v6HbbOe$q8tizrO[˽/{˽˽qV}cL.FK0D" v$Em}M/!(w&m{vcTG37IgIJfqCifL 2WO~F?Bu}8xg=,Џ. )u^I֚^cZ2%$DKw9L|ۓ\$IJrO sxHPY[@)xϲL}IqOf>ax,ي=יrO|ՇXϹ|_XsJ9U|~Ht؟tI|sb!VͶ+c̽$WS$Uǒ_NZKirLt#ZzOe1w8~L~Ǔܟpo&F'M68`5fF[60bϿ%PK\qkm룍ח{ݟ/\_>ƺZėƚYo5 )7lXj5hcI{IHrCsE;cy2%5rhc%" &hk'(ݸ8>>_gCJkh@7$XSy>?Ī7^+s&%|-w\t`j\j1ej}I0u/mhI:NeFpӘ1WV)nr{r9oXsJ^s1&D}0agݐ`m'(lo]Pq3{$'&̧#L$$yRq;.DG~:k[:ONHHrӖ\q_yxn1Snq& @I8o}^6:I6Sh5hcI6D\/3$w&yݺ|͗1٤vM1]ce`(ⲊvX;qv==O{ؿ\i\q헛_^g%S?mmAԠL^bucy{INr[#I,+ܞ䙜G_\c}]IbS%F+VTJ C'@V˽˽#˽IkǫK1&Ds؈kg͓'(lo} D7i͏W2<$_M$WNR-}v(]jj|Ms5Jk'`}kXI^Qܳ޶VƚSw;/cnX5)7&IF㯌ƒ]}?&̧*\I^~>/I[cFsNgYۤj Sv<㰖y\-{ݛ>ܻWIvc#]אHYp6Wo/yyc\_IMrmo'ZKܚQrL83LF?X-S*2p w~8ryr/^xcs[1ќ&D5Zl_4ITgN\=ĪVyܩ^ܕ'.Hr$ILnq:?j/1`[MۈRQ%\VO1蚽fs==+{{-\{kMٺJkp0aMF'vWb?&7IN$LWI.Kr_IKs$1S7XلS%x-QZ [o|>zklryr/|# ncw^_}{YkX#ə8/>{f0V㯉6`Ih_&9xg璜FkIvM+$Fc(CIb4==C==|D]%%$hz)ԪڏټL^bU$'^/'$$y8{$.G7ԸcV `/$'2 @#q8ti̘[Y%[^ku=6'\; s34E賭1wCdLYέ%x)ɽINr0xUXg[v}Pc2Xg~ck^/tyNI^\Q!Snq& @IT./$dlM$+<ƿGOo|(_we+~L6o]SL_Y:➪2L}Xõ wroxr^}8}kK2Qu~z5HPj_|2Q{}6j՝bu'y6]IGOs&I^ߧkL;(1B]Zħ2Te8:4J_[Ir0wW,fWxB{m5եd9lg I賭i%ޤmsǒܗ$|&9we1QY[M~F?B>l_v'FSrr8־mXsJn5%c}Z9E$ hX˹v9$%,IMH7KF֘>5ŴY6),g;e8e^dS{7{˽˖{'{1_Fn#KEqlnF8s-[=Ġk}l}ޯ{ێI5]g*]9_c5'vWb?&0$%q$zIə>a>"%oQ:֯&*)Go2exZ{[x{;}eǻ-^k;}u/k5k$9g$)7lXj5hcI*z"$InOdJLkIvM+$Fc(CIb4έǒ<ܳ]˽C˽^g>m_F<[z9lز1ڗVL^bUܐ$_N$Gܓ^/ɘ0)SO3LI+^t$ Ov{{o,n,rOw̍tbXsJ{bL;u_Z%@zOPVWf2&,g5/IHHr$%$y<;Iq8;FM0e S_S^^^}ѨI'$#&pR`w}~ *P//$dlM$ IḨI~)דJrw7' L-b*V&.Xõ wrvh'rx{LI'cNiΒLw]suMe~hel;x^~)iW'9S&$9cIުf,u\lL;(1B]Zħ2Te8:ª'kݼ{;ܛvW+}G 'ֻW~cLuʱy'(lo} D7i۶\ItSri/'Z'3k]u~pkS/N3އٯ%3%?_$7.de}4j҉8}1>L& d,4F$~WFjcI.g/3$d>}I3H7WOq# xkhqTߚbډ,wTma֎2p2/^}^̞ku`2 E| yao]~V'[z{S$Rg;>$?|*W,)8d:2M0IBbbOe$qv?~erO떔<;xt=ќ&D5Zl_J^TgN\=ĪVyVcnW<$I\$2wTxlL $ŷ$fzq5I}%x}W~{WW侀xZu9u{J/ z{/m}+c/$5ɏɕ?Nr[ϫCI[c>oԱιk #J[ e<V?xqGr?ߺSIvcM|Zcͬ/I08 hKQ`e3uRDKI>hI'Y>@LշخiUcehe8 @_{^lW{{˽^>_5vU^K JTҪQC՘;~9ɯ4_N$7%y:ɩ]dL& $^Z/$E{Iƍá sܝZ}nZtWz5D 'ڝ܋pO?9ug G'(lo]Pq3{$o&y$ OI֚mCs&/$dlM$ݍ$|-_$Nk<ذ\m1a-YELW65QUje<qvQ^/{C˽k3eGH[ su W~hel;x~+cInKrY>zeI~$l|,u\lL;(1B]Zħ2Te8:GgǹmzzrXkyKLt29H`@$Em}M/!(w&m;<$W'$_J$G&+磌bLVSníQO_;fܻYe\kSm>굝^u;J4a۽_d,TH$~WFjcI.gwn$w'2|pZ$J@w^Ǎ$1}9P}ki',SmRSYvX;qX˼;{{9ܽkY]$mxw_Cco]~vBVz{S$O;JX ɗ|-ܸNuQ4>$h ">x,IvW+7.(_Kܻܰxcs[qQ I&bk`$Ayh}CmWl5;$'9P>y]IJrˏ`cT%S# ^k|lk9CIL/0YMĺSڭvwݞP F{/9m}+cr/dpL$JrE{Y|^EJ03-X_M1URe%.5S7{+{/.${܇:JkCi'W^NŘ>|:Lbk%|l$'<y ɑ$7$y(+]sQ6YKJE-k__Y$h76BMמ7SW{{{\ܓ<ܣwNg>fW󤭫"H}iD٨!Vſjmߏ'y$$d>I~L7%y"cdL& $^Z/$E{Iƍv K4[˽%˽#˽Hqf̍tbz;ݽx]wЄ9l= @g[m_}c:ɘܳC&8$%ECݩ9|2cMӸcd$SW*q_'.ysgc8ߡ^]/ @OvJ)Njvn-I@|h~lj5ƒt76J$[=3MsQ6cZ1]}GEVE|Vex,wvfW8;r/qhx>=5_^g%0 &D٨!Vw:Ƌ~|zcInO+;Nrwo..ϫ|bseؙ#">x,a} /w/>vp|/ǖ{6n>ԥd9lԵ`T'(lo} D7iVdz4ɍI~kI"$2ɽG=Kc1Q*s zCKk}>X\\ bGr|^tskKX;heX#+7&IF㯌ƒ]N/~ȩdz%CInNr$=p6ɋINVϥ" @em5\0P}ki',SmRSYvX;q^\]?v/pdGx(+cƚSͩ{ HH*z܇$O{;ɃIK$I~hG7 4W\i& fIPW c8wز?)r/row܍l-xV}uhBkZ; FWv^&n9rsf[[͎G$/$//'O%%'y5]}n?u֯RaGs3O8Nr˲PJ~fxb$)UY; s7 ? ۾ut1)IIryo%b'I$K` qkZ^X|uƌ>N59ݽx]wЄ97 @I>jc7TL8Q'>լT<^1QW[M_,W?_kԲ~t{i_e$=])Cܧ8ڹzH  cH:LFDKݸ#.Kx$WiGomhlÎI}{bډ,Kq[SYvX;qxv~cO,{o,{,{={mսsJ{ud|Ty>?Nx1^K%%'-<}`˒ܚ$/'9Uw}#Ibgj$F+VTJ eвlcx}xٛ&c{Q%gPNcLQJΙ|RI>jv_B.QMڶ1WO=}"7y&q<u~HТԋwqKu[skO,{ݬ}85^)u^DNm`E~co4Hm, ־O^O$=Tz$IHbš$1e,J%q[j= .h 'O/_؏{ɓ{" neW$cX4f/xz+I,=ƵE;n|ϒ|%ɥI&y(1qq2M0I6HbbOe$PqxlMriJ왿Od=/ݨ֒mYGs$hU>{3% /nϜXzUqfNtFLx;\N1=;$M|w7c?uץ8nS/v_ۛ]]?7>^zu|9oXsJuOlK@$KNm_}c:q:xcq|\3p$?Hr]~J03-X_M1URe%.ZWu^^zjyWXJ;X3٫pF@Q`e3uRDK`lUQ<7IMr0=PJD7m?c2`s4Nl״*ʱHnlL2`gc޵m}l{p f]ͼX;_v3iy]W &ڗV^bUܚ>|%'ɕIKI<_%9EoxL(Ske`K` @qxbٻ޶ej~i^}_5cv'V=E1I& sTpvzOPVWf2&,$+$y&ɽIԁ$%IKrlm7;FM0Nsulٛ޿U챏=q]zKӵ>}ڭ5۬$TB^Q1I:LFDKݸo쿕$7$i%$_I$f.P{^[tmSSq[UYM\T-{k=W=ז= ˞& wMoNiΒLw]s}lޒHjPYxqc}͖d34$W擧HrU;<}#Ibgj$F+VTJT'3M\/{ٓmqWڻ?J8}cL?V' 87վc+7WW>b̵ٖյI~$$bSV2W7%y${͵C1&jQ7eyӲeeOzG}`}$8kKѮ+ 3 8wE$ hXí}$&/ɍI'JrgI' xkdwGRIZO;*axm^-{C)oY-{wE]$mud| % ^}hcKkqml~ю5$&9$|"%n+ܝ9qp4>$#">x͉-{+-{o|tكVZweQV:tJ{Gs$hU>$TTgN\=ĪVyVcnq:>N%y-cIJrMd>`˓ܖ$/$9^x)D]m5>n#KEq{^pzp#^~=5󱔼=[G%1jc)՞:eؖH= ۾ut1)F}y#o\$_|zW0%%7ɋյ$G;d60bϿ%PK\qsq ^?3fQSXWX3۫ N4E}惕aK_m, e'y>InIrY>|kݩWf>$/,;}K?kIvM+$X_(CI/{=ߕ~-{=y wNg>fW󤭫OڗV^bUܚ>'y6ɝ?~/%̧0i%yɾ1QLIf/Cg u^+K^eol2D^nӳGM:1b9}2I2QuM.ڿj h$nj$=WJtRrs 2v[S`KNۡu~:5w=3'9sba%sk;}'[kYI! ،~c`3uV㯉6qg]쾏$ '֜Ҿy}{2u%lVQ1I`7e6`rpk_qR7o%y6InKrY>rSff$/&9Xn2 ˍ?-bvUvzt[]Z>+l٣ݿ&kE]$mH Fǰf v$^0Z۴->?&8j^Ir_~IA?MWI~$&y))cĸlL83L>X-S6ӽ^gO7e/H`ďmbLݍb{}I+#%% /nϜXzUqfNt$/$y8HrmdHܓ0&ZSq6TͱU˞etӲgk/upk1²F>IYܨIF5[W{b[H$^rncWǤU$d($'~|b_$vÙ?p{ Om}H0azo6aTI9:K,M+^eo홾n]VW?>j|`1ćNj5tO]*r{O$lXj5hcI-;G'$%%O=Oh{g~$/1҄ibg^iUceؘ e#O.{-+?s߲zSEyqďse\cG_]%%~Ik#%'/gXƫ1fO$'!n>KI.mIIr̘pSg$xiT>qI~$SpO{mۓ<$oV=FM0U<.Q& X^Wy`ٻ\e^@YD//{$>;lFM:! 1Daz/6Lߘ$L&ck%nYk)ߩ$/&'$?M$ܯ'akܙ$$鶾ELW65QUjز7s٫0Sem.{OqP?ʶǴ_nz~qJ{udk)6m?{OsNx1^K]&89X<'J$%m'&N5S&I>X-25\-{3Utt$=%d$FJP퇀^n9rs}c,\mi`;|]OQ'I8%_NrI˒ܔ$/>zj>jW?_*eqٲr?^$__(,{'=>쾏$ '֜Ҿy}kgz#SoL_%ػ^W^$&y0IeSw'!Gx'y.ɛIN =&jL`9 ˍݥ-bvXS^epײ8>в'}٣?&|u"Gz$|'_$$[I~$w&y,1A\mL83L>X-ⳡ2[w.{.{?_1&>=DXõQvS}Y۹M?I22Zl`$~Ũ+7W*nU^iN:˱$/ep$7'*Gz?:mIKD;Ę(y}h}$07ڭ׻˚IJm}UeR$:$eIvs&1֜ng'%`$`zOT1w8~Lzq8(I(7̧~9IrCh`7lˆrt')Q:ⲤeaYh|s+NȲ#s}+ nc^_}{Yk:Z3=(r{O$lXj5hcI-嫼l'$&#I瓧N>̧;wTT]M+$X_*ǖ5e cYuqݿ~.{7=D_X2מG(>_5vU^kꧭh5) @/>yI>?Ī7^5}N%y.|8{|i˖?sobL(Ske`KڞIJF߻ٗ-k755{)9 C'@ƌQNkNi.eLw]uF Lo:Mb<*n&crrJP|^EMx<[\ |0<-ޓO;-x$Sreр^[e}nY{YkX?v_{5e84/6- @OvJ)>Ҷl *7&I6Sh5hcIwŶ˷KXMr8%I䏓a/%vgIN11Z6ji',mqOf~o/k쯗5eMedY.kc˚^W;e8\{^,ǝ=rS묳$]$QI`i[|RO+v:Ƌ~X2 Rţߗ_&9O?mpܑ$O&y%{}hL;S}$1B]Z秔زV>w,k3ZIJv`8:4h[$֪.uޭ$a@$HIЋQ3'Vn}̃Řk-;k$/d@$W'qJgO#$HI.Orc{So L$i{;$.ky-pY[jYk^GĚSw;/c,]}@$E$ hX}IuL=$%+MIާϧ`k3$'y&2FxϲL}IqOR/k3˚ܲ?uLJ5e}mY <jE]$mH FǰfP jV/mpXZ{kcvTV3x}CI.I$䏒|1_g>MTJ6\i& fIPWaݻqW.k_'bJhY5e }2 @#Iʠq7ꇳNt)U^[ ,v#%C;/FmϜXzUqfNt/{$/f$%et({vSHrc;䃕aK_m, |vVN$y#O>/ɯ\'$NS6I1?|s+4 6WLvM+$ƾ?P$'1ej}I0! prY3Z֐˚eͲ&]Qw/kkStyrӘ17j҉c)ś1I&껮q Z" @v&zL.o'c1W:jnw|8$/'y*w'%ug:@ܘ̧1?}'NP*hZ~'etY n_ֆ?c ?nY^֤et_yoIzSڇO񑶵f_ԫߘ$0&Xٮ( c$$3 I.|*_g>A?I$O||9Zb*Ve?ϖI$%_Z֎/k Ȳex,k_81헛_^g%0vC֔ Fk6ܟ'bc}.d4懒&ɭI~H>yߵ)1O~$f[&I>X=vxo_ZG9_Lg;I/57w1k Aʵ'V%uYD/IzJ2TM>1YJ{O"Iз'y ǦvejW?rlX9g˜$|>2_.k˚DURIvGkNidv]OZI@Ic+#${Ӌ븑`'y-IOr;ܔ$sTrӢO#I&y;| SI^Xs,zzdwGNgYdX=c˜2>̩w.se=y::O_w.sڲTe<Kƽ~-"\$I׈8*6m?{OI,=ƵE;*:odP'E2?N$_MAS" ӗ$i2zk{$Iʠq7ꇳNt)U^[ ,#@FJPl^nMbocf[[͎82^Z%񔼞D'<ے*$O;|p*IM3lW佦Gmu-I={o^YǓ<8u}[3͓gW^ۖen~!I9'qI[5Iʒ>FM0b9ݺj'%`!= {۾ut1*pw8&>N$y9ɣ?p- W$Y*ɗ3\3bgI;I~L\$w&?o$9azo6aTI9O-su2]<;˜g9yIemS]C!klyI>?Ī7^5}jeCiI8iJrIJ~t\Cڻ<ݯdJ}W\om&f9N,s)\r2\5?Nr2}y`la9e^?Z ̝e8:4f̍tbXsJ{bLkB^HP]Imɘlu̕ڶ#'8$o&y9sxܓ^O]#I|-IXr] үU2\t,s-˜p2G8eqY9-//eyW=[:I"1_C6$DKw98u?e3&=G1# A ?,ϒ\ۙOb?Lg>Eo,^~{r$X{M(bJq{rO/c|4X?=?|c xe2w|;etS.[,sc*a k_8<.=/NiΒLw]s#@OJMz\1^WRIO8}I^NI|I~Cݛ\C'{\wSےܙc&y(cO.%/%y5ǒ' @-$oe>'?E9(KYb%Zb%_bdz|чo;:v~s#c26.ce޷el:bs/g;e8!haG]$mH F|a`$QI`i[|ROLbi1/Q:?ܓ̧Mru˒<%?|d>˙O*|pz$$_Jo$$MriSC˗$JrS\pG/gpD=L+/t2gۖW/1yx/1%1tth?\17Q/ce,ݒۗ2(?cS>r"鏨&6v;䊔\43~R;2$&mʜT̉sO1Gf('ſwy7G'2,_%(Knw6zgi6|}iW6~qi>xrG>zh.}OO-K_5IXbc5͟| yظ/Ƀ˘yrC/,usi1՞a$eIvs&1֜n]vے E{'n}+cҋU4d$'C?;InW&9&aԿ2$_L'O\I̧$d/.I$xϓ?R_e楬|b hBǒH$[S?Ԗ{|uO'xkrٹӓKG?ؿ?|wJ\֥MoZ,}p'?_K`ÿ^?]/.X9HW)[?\qp+7en_K_b}O1a֎ǭտ{nh%<ćNj5e=+r{O$lXj5hcI-S6]K9xS|k$2l3@D$;RrGwmOr>t?{d=c?ܗP?ߵݕ56MhJX=_|9VcI1YT-X_T~H0׎2hٛ{2BǗ$Jsu`lQM)OOowlY϶ϝ_k?/_<=i7K߿ _8|Sd/\p|߻ /_X,.x|7 ^pk Zp S>c'??O)?[>||||||‹/W/ rхf\t].)].E rхP.OE~\tEeo.\tOE*]xykEP. )]P§EP.rх.|\t \~o.|\t; )w{/w.|o(w. hyprwm-hyprgraphics-8f1bec6/tests/resource/images/hyprland.symlink000077700000000000000000000000001511007052000302412hyprland.pngustar00rootroot00000000000000hyprwm-hyprgraphics-8f1bec6/tests/resource/images/hyprland.webp000066400000000000000000002273461511007052000252040ustar00rootroot00000000000000RIFF.WEBPVP8X ALPHQ ,FnFrSM?ol爘nuXyI*MՀ6dIĀ*K`1jMeM1Y0?ݒ4%~F)eMrBHͩ_F4.>~ABqxغC'ڐlN}w.9+6Tːբl< ^ɔFTJ[@?҅J^' F3l-yX1ċog(n;}!\ ^%⿈<һ W=T `vk~dJzzx/\Zeۂ3!)ݖ-sDFUݝEh&ysyL2bS*wȑq$Ӹ ,dDmN}&Z{i9s (ZFGк.=} h;J'D^lnJI;l//NceiYV@w[=Pjc$޼% /զމ;!; X@d2lRѸ |xc2wy#-׹S-wɠeUr ~T_B &/D76F<*{'X 3lwX=.D=l-v$##!wqA0v(@Vhu%rQgҧrK"qQҘz.xTdeGB\1:} E)l}A,蝻҉仒 z 2q`ۢljN;PPZA̴nh݈ `-$"83iis/LDrw9TЙWNFZ?BY]ۯˉn(N؊K ԯ$ 9Kr(Kc%;aPnЅu9&%Hº9/PvQ(Gߕ0/4a-wo6T3(9u7Ahsr d?=رmQ ]#s(˙~~ x{)@)l}C.Ҁzr P5mQ5B`;ꮠgZz72o`I9% e=?a}e%N_%tՍjʝ̯,ބ'PtftIZo]ҿ416%{ӟ=ײ}VM׹S|MI { Q}6y'z뗬"~@9Ce댪eB̩:0?;Rl 5T /#BmcytAk֊׊/2°s1D^I@bǩNUD~ #{a TM~`ϗtՍPw5SeOPU'4*0OjweLATT`--3-.*?3͈3ACu7_@5-TXm4v΃2JCq"̔9jky0~XGᛗzReB0@啓G2!ʜ{T}ŏM1*l}/A&ovc绊 v-Te[ĘJK C9bblIjAfP'JSBLU[A}:mbGݨӏږɾaj(zk h0ՎyڟuS`H9@%GER2*y9Wns<OW. Fe)/jGF濾W/L[WLwg}VJu|-/k%&{nWOb*pk& Ġ+*AW[2&6P f),]zK5]Qa j/ 3snVdIu@&řV-*1?SގZ0jq$:iǤby}:)'H/NU/ (Fe)+ЄTN{)a%G Tv5/tU-t?mePyDOCR1*thKAPI)*Q pS;F3Yz95躸tk*}ALuCiiaVDK1#/K*T֋]ɡJOzM )/(oOGumW@7}JE=A՚UFDkN= շ}Q<:' 7Pf:Cd>0,j英,ӝeCyxO]꯿کiǸy}{PN G.P.k w5P FOH7}WUW7I'|v0ɻKL?wM2Aѽn9Կk͡'zISلbT6NB-,?֩%XZmIM,NΠWL+5뒡V+I) CSeJ={`igK&} h'bkN=DRo^IXL#լarۗ3xS45FR/Lb, vIY u$Zx%l 9G{@>76i\NOX[c޾la$G5AWn.M?##REawwښcyQ$N֠5օ&aԍAOycQ3s#ۯGak?bd|s.BqS ΰ6PblgNJژY%F{ Uָ}Bi7 Z!ĎI8R<7YTEUXcUJYOwX0C` 'cm P@/m }}MW!l1 ^N0bm L/n(-d6rhE{%))7iV)c?[uրz2X(j^=PbqM4;6l/͈^(N-]3#n &?孕P8pziJ=F&o+bc޹lOqӋ:_{޹gڦfywd<9PgyS6 {@=Pl>$63Ʀ]3]S83AOyg!b=RlӆeJ={F!a?k=sU?4pOi$LrʞQ:/jF0ugVHNnBG\Ou82c\́]wJ .pUǕ"d;<&}+2U=\[V?&ȉ `uМ_4L˶O1bu kݝi טe]'% :,~C<2Xt>ͅzi@>]A,9lR{./aם=[DWfc~;~S-_>|2J0ϮM[,%o 1CsK7}2# +콗;F?ON`9JS˔X-` 2v4#UQր}2t/"Һ@aH);>ӄ1ꬴtS*3ODzznF"q קgq>& ˃|Q(BpÒo%9㏙>߆>[p[u3j؜2sXԇ]O?@Ou(`W2n~G10wX1M >W['#: }0oOstmcQ1Z.8DL>i. &ͩ ư P hĆJK@b кh$p k4j γބI|,%3 H>Cg' "Yq{\O4Fv'K=)2'@)F"_@c6ޭ<됺h); AV.c $0d_҂| y?m2 $7?蹃uAɐ3U!.kgF兦Yb$w:c6Λ-k;)Ah/'ZC-D; O'zFM4" 4H>NNUILDwŅi5I rGAʇ򴝜sA@}?鈮clS (Nt #*B zKZ?/c3=n4W`݌`u$)NSsup-<MR"K[E=OGs&|ſ5j^k OsA}hN^p@vcLŨ;jhh|8Athj_p]K T-Gsl_@`: ~')~HZ`@|98x7>* .,%PZ5ynܷ@|=8ɷ#д˙ Q:*h :~ zX_gjeiP=T@>a~5͙Bh)[JgpA_y&7]āWmTH>d&Ҁ kfis.y]dC-.t`P!quov UP{{jؚ=@Sܭ&z9'A#1R@!`{zxt~1v2)(oΈ2$5TK Hɀ|8О 6UfhEtoyȐo 8mʬ ,2$7s2"vgp}/uu z8 !q ,^@pg: 8~?k\W?͑1:+)L{q1 kǘc CZ=x?ky$[;9fwtȷSL\@P^#b]p~a)!ڟv`Bg@|o8[ ݳ'B ~vp|Y>.W#؜1hJT9`qx wa9Zh<\ ȹP"_P"9q1JpxѶ9%!CHG?h\VΙ>l6#`f;(ĩy#iHHмȍ3R.?"܅@π9$stnLw;•idh;J@89ܜrwZ{9uMNI9u^`(8aZ3DrX@]sN 9nz=Ҏp3B{'?+TUܒ|M#_)P"q1U_xz˶O1)\ݱ;@8e]'%P"98q:=>. CN hlB q9;pu}"(I8ova.@A(͐sW}++;KIk_1׻$@A(iy}C̍J$(qrՖ)\G NRA`ڣټ"~9Hq%%ro"/ncrKIĹ!6CHS5.g͠%8u,g [T^KRLAi(Va9Tq@o)^󌢀[x7nw@+8|ҿ nH82ڧ@P@VPbl7gns2 f RtAָ}BiHW~h77r7]dw3ny߈%riAQ6pS0ģHw7n RA@fMOF2+7Ǹlo9ip5o@R$G-C9B|Ҕaڟy_(8IUl[n2kK.HC .J$G.W[*³Y# P"9tqUgr,ѬΦ +XW/n(9wpq fG^9xqߥ"ǰ@A(M~"}m Iُů)HDC=%Qzqk P"9qӦfJۂcBǬ;QoHټ"^9qonVɦp4Usw"_7"=N-:6'r 8vQC%U&FJ$1p,t J 1H9aQo7SHC)"gTgn)r*:nĢR\jy0GD+QcɄsiqg\rJ G3_o}ǠP=MVV+Aw̙8pfw>=W%юyGP"9q@uo ̛~rrD@Wn9sQ-ƨ,E(S !̎IJ 9~ȱ暧p4F_8p>&_g:mA AhͅaP:@9`Ff#dpզ˪) J9h][n5P"9qi$yB 1п٥*sUɡsϔfz_!c3Mǔpn]9pʚw$Y՗@1`Zq䶧sJ;_U}ÐH9%rzz4y8b.@oXlct7@9|t"#r^!#af^pc%=[9fzk)sK@ŰB$8t%bx)!jfp4.E_%!q 3FNܴCJd4#n84:<1(iJd?b%l,ɁS`p/!\~}dž`pBL1a =9q |EّɱcP3ڡ})a)쬁S]Z!A#K?^kF{tنcКnwBitHwк"'pصs@o8DI/CadHNx@y'a9nѰ'[ȐSiB~{QkdHyhy}gtp_eo|kz:)zz%X_=9qg2]2$=NA}.Q􊁸2$=Ț/c `C!ՀLi[/L=`P^r0PXw ȡ3 eq*$>?>c3\'\ˑ 8p3 e ~*$G?A}(/Gt8*$?u5"D7Ҕ @6\ҹ4V!}mTH.@`'q}L\8 ;M.@5 \8PFwdT_Lpr p6oָT@B$pێo " !@m;)[LW7V!p41xmkr" "?j aDHD3uFȥ052# kG:o_@h~g;x]E0["f(>7mA bk*\6ۈ5 qQ.<r= ?Xkʲ}u[esO9"5@8P3˙~|rE@w^^ZsC $v@8"^&q@bKSZ$H.J~, C`;a $HJgj{_yûI\8ОW^r&VsuN|?C^;Qg $}z5ke _zrɧ@Grצp۹4?G7 pk@{^ٸ)jHMy i(\ՊKSX_rg@8z aUkS@rybM_L@2j[rʟU42dv&@ 6ЮV4=UX*gl-Jw3Du0́57ދ*B"@mK*{[ӕA'o$U @fHjf)PTԘOS+6Ԭ`ǘQ>MӚ1`.rb}A8xo&rb{P f4%R.m,ԔTs+J8)b:-53xitO1[=絭J9}_uyI )'ۃ6Y1R{Y?rb{+| ',WuS!OX,JsGYӋ#,yy(j#ʮ dK@? u]7dt E.7(+`\X?m?vnkFӺ zmAw^2xhu5;cPmBBݰ猵EAɕUfR T;߀}rbw j*F@ՐYc\ ϶?#/v''} ~7YQoW i=`<{vlekx]1϶+ q׈7ij +ͨFbNS y@XH``a'W0Vǵtwy9~ȑ6}` {!)D81ܓ6z!v\tJUmK}nl*yFt^qMtܑ0MF'%^H/vЙ9ih<9P?d%uԓK+Hf7hxm},#$S-9m[>#36ך.)POf,FJL3bLGt˖5깝upeӒ9ŁTC\JQ}'4Ǫ▌o%) ̒7Pŕ2stSR#40G3sDu33: a_ @湩7T,7PjR<-t~~8aPv0mAMWfPaEl0VOv,#nYmNM sgamlkкdҌ#,7]\mxn-> l@6Pe@$6y!"i7.bkЙ}e8y)զ&C20>!nq[ysam5Mz +;5kx@ Fpl 3viLnV{y*D@ng x@ yE o֠?K3$+yb\eҸN;;)8%޶03x#g: ڸͰּjȪnWHc+lgXTͺ#_$h#:Y(##`\X?^\  X':v }^~Įж*FnEՒ kkXd6kF/\W:{odQqKq+WdMtN2j[7@8ҹݰ&&C(nWuuG:g;4 \Yy"F@N{H'W*L ,Wèn1ZV?ߗ_ -`]P#K!.4=XWy 0o˵}"~b(fu:Jw;"k#v,[Dcd)]I3γ;NV~*,)b~d]7s!3뇰A*h:v=Hrd-˭ v3@6V 2)b'[@Vng{dA`Wœ[:r\jg7jF? rH]?`baLY`Q{HB5ZtL[`Qa#\Oi\bO ukBځU'gy) ,J[}cj& &T֚V oMDkzOțsL$YțaO)P7=ǀh WZí@Zvs &k&eUz DEky1fXEZ1A=A.,q:lONN?i4& x*PĆ UZO0ڠu bjFĤ!;&MEl)P`6'DTCdMł#a\OMfsuT^olҲ`1ДJcLO i‹@ fokOaԇ)΃TGD/Sw=R Y؆Jhot+So8GWvr4U]؇;?Fc1k] ˪_QJKTe'RNuyaL;a˭!L3{& [n+Є= +)k"q@ ~RE4)s¦ w&dUJ!Ԟ cP@R%l+z ^[mq-bTx/i¾4ߑ wd8Q}FCg`X P#VQ[`o1*/b ;3/&/VuQwf؍1kZWz[3ZĔ-SkQ E%oB꿑"u9a#=3<nq6;a!5+RtC{3N$ke{>F->1졘I$4C \c96O}'?a! A5g,G]͏1B !QX*,@,mU gB<ԟ *ĕ"P Dw !B3c:^q Q:j*#\(k.'Tq ./gL=-!;%P=gIa!tńx%aP3t#Bm〞RX)TY  5kI!A]#< UitYgX>u]8FHP}BOPcU9_dvFsH'zSa MGx+ޅIgzZmx%@/oHsBO*l04@MVcP~^h޲ɖNvH~3{!1E ox*=ml1=b>8Unesan5r]@+ Q<ρ#>/WM|T'6S ˨>!><5ދ+i!+[ +jaaЏhCtJ'aDz3ܨeLOXCJ7,n`\h&}͐MH ,,(4b5Cu`Zﱠo{v%v1=FxGb<ǓkʃѠBy1<]e ,>4f;B% 4b"pHHvgń'\١{cBI5Qup 1v\Z1Z )skgUA\3ٝl\XcyDGy-ʍUOHx¬ݣCDzR=$LGU# Pb3DG+-ސ-4)ٻ 5TC<i*DrCLjza$61p7,GxFDz#F?YE5Ob$G-ĈŇZTHEu ?d"0M wR<%#n਺xxlXQFqP 8aa8ʎ9J%ۧ2{C׀6o- Z,6Do4!+)ÐDn`&NeF%ޓ+Qu8FNb6l3NyuFՅ@0lBΆݨ<Č2䆨EӖ d]|oNl=$P-LlbC?bsĆFGe(%6\~ ]#Ďi^W] kDi ]ZBekX 쇴&RE:I Cbqj ZRCl"MesFՠp!5!NbV.'e5K$NitIǙ F=S!kJk觲9BCi\F-!Il%cьŒIl(k#[NPe'Mrc09hS=5qmj@`sӰ Ɗ}Ȣ 3Ixp6\ 0Ҋ7ma<ka($,E0) ȮD_fѰp;sB5ɋ9 Φ6iΜƓ1dNM؋ua鋄BZx"0;y9xu^,fIN²!ɋuBhβ!R']ژ y1 llAݗNó鋉Ev;VPwb1/Ϧ.2N{{"$T4;q }jq=.!߉ ͂)dkT\$.B9x{NEϵJza mŠ!L6Z"iiI FT+\$-b մ%B*HZĄN:@Zh0/>1$| -4_S.aubRJaOd*jHVʤT U\TJ!F:'BIU5b$+|4cR! d?ѕ l^d;]d ӢF*|d u'"M)v" T TE2:%TER pʧBD|J)쉩|J*$B{b*A,OKS^10e,n4wQw,=>.kYlX=EO]O&梾'hOsa3yruyȓgOqdi+r冁(o)b/^2qr{qX@_Q'(8@0<NѰ/ Β?m3tZ{v#}+:"2f 3N"DV1UL}E7C7mhY+Л 9s󳠁,b.p764xPkyb8+ قXD k8q8DYL 7w5"Ka@q޷͉ܗHr-%4 9+\dȽX_\AV0[0_`YLO,N OI}+-a~aEE]":ty݋A/[(1ȆH-'czfCZ#1?sMYaӱ3 MDhbd;p#BMVl>@Y[НU͈YLeqd GVN  oxLOpn#Aό 5d岇킎8~#Cd2=w)\6^dx;-(1]dY3q^X;72Oo櫐GVA-{[@{.+DV-Sc}>3%'|\'cVcvE"r>~BgG|oFk@}k5Yq55{[/a5aY,by/ُz G7>ETbYD\|WSޢ`Y`=a HfWq@L, V_P1 Mʷy)"_] j uc`ol3;\_c2?3=rsNPHTa`h䃕MM~7[dmHXN!xqo3Ɛ6noUǐf5Y lYL}C=fKlL@s +}fI+~CV&X'nȚ%B)! mmAfA9\JlYL'o5) ;S9kȲd70%dƈJ]JQzǛm@s(YW–$5VL˫TlITc YtidZaȒd ova۽kG˜s>/Y̱͗uŘ4n'! },o@~ֈGF]1e#5IOݏ70bdMzaY,$kfQ7%XӬS˕~ CV#OIx3Gd12}G$t{,/B1'TnuZ:UðYHxSזj̱ۿ/Ip߸\=ɭbCV" {+ٓK:S buǒ^w~D!(\/dǿT=dcYl$-`PGP =X QmS5aYld3}eQ}A"i]Xܬ7,޿UD #雕nAd GĤG1D [RK]Hd2ȚI?닽Tj S[!;W6ſt?V,ֿ Rh|[:5Ѻ"XI|ZX$J_3c$Fi$I~vQXL_@ND;?HU*\26XǥXoDKyykkV\gc:Z80Id1_v\_K6YJv*׌"뎭lZf43m5d5^^0+]>&XJxU?lYuL]Rܟ(؊{ztO1lYsL@Zw%=Կ"KTFaȊcZ s'Õ([]=cYpGʲ9IJ|Yee_dy15r-bRcz}C lo4f4Wmse[_y\|r^>1.aYh,c\r1\%Θ^@>t0Kd1_ռ ,eQ?^YX026mXL.E;_l5]"k)60Yb|b^|F//]ͼTv$ YaLނz-`[eaAZG c5}y\7a"i6_]7=\UKcڟjws~Ldu1C4 LyKM`b-u=MtCeHX5fY[f-w5 SY,cXY& [#YɷN)b9TLt6&r|+&n16/w2jJl#ˊ̿lLkZMdU1^~lLv.o},*\J6M]fȚb.=Ek8{Iŏ8N~6LiFr8[:P GV۱gg DӮyJ9@Nd=1F8Yv:KF9Ĵ[*eu~ S8~WQ$u]ȉ,&6 sYEDSor, ή!Rгy{;L3ۗ#K7/Rg,v"+2Bڏ7.TYHL޾YRhvgdѳsMSh.MG B-D,@<*b JDà'~H n;i'k2v\dZPj֏%Ćڋ!Kl b M_EӰԚ3mٝyԚ綮0dX>u Wo"h~9O(În(e+mA4eF4v3w"kqMG Ξka:wՒj' v|ITlGvT[QY8LWl\&Ⱥa:ns_ܜ&뺪2(,qHϥpY5LɏCv'HکGQ)82FF68Zcdɰ&w{96"+i9o?/ )`c8wD&Vic 8jaI kz1ȸIrH,5D:N>}2"9+r$`)X](9|)Zajb;w7@Sd0=͊y:&JazPs" 鹱Z9HLa*>r1 STݚy@9o`B;ڔcw' <\:$“|5Du\s$xQzZ]w+`[TۦZ+̻XaY.VO NY1 QT(=˪a+ƻ*Hi㮏-Y̷ ~=GV K6F9}|4C^ܘv59mG]t w?+H=O6g4GF\_N7zk26fTK}7lk~LITŠדAM>ǍӸ M_*\ EdXjƪ>a0#y8"¶ Χia EO>}f# c+kg o=GF,v^Ho~X K<+ea/(TiXKks2uVWPgJ> pR+^5k83\}VN|h=%rփ}1x;ikϴ^nD & H\zh yaE-rNP1lfDy8!.r A ޽ۦ".r[t7n$a.Kt5panmrJPg,:"pLhg-}utp Rc݉z"3t b)ZV~ EUMj3\bWݭjr}%r}xlmE.0Sv0TbONꨎe/ D?0 ep>8oD..c^!Ƈ/ k ox3K `r5=Q9;"Wk2HM1\WfMA<^?oDKgee&Re \Uf}y;v:pM,vE eĈ XW˝)#sЀr FE:Y-*H WLJ;Qw=0dEdo'J k5:\Cf@VN}~y$mF ,,A > Wo/~(:> .ϟ+QB1]B]?&g%RB  @ \;fcwϫa t,73Ab޼ڡF 1\8f}y .3*S1(w"1ɧ; xj0\4CydJS4ͰN \3f!C WFm:;o:O z1Y_1ͻa],@p^={CDt9<}zH ׊I# 4bt1\ TH&>I~"bPLG|xc][D3 3\P=gsmDg]]TgDágƴՓ;յ"I vq~w}D;3qg XہB,1jf\MQҷQ%1hf^/oG-03쮊LJGu$Kb8Ć_D߉{'K"ǘ"T<&&`ffW!ԽLe6JV%I2C} ُΝD312c}^{}jz4p` ?a$SM"ǕpwV~F= @~2dD)3׹P2R'&Pfv/OaN8 $ *2e+y};*F:Mfx7q@p(wUn% $1Hf|;Aԓ#3(\^Z$&Cf9^-|!d&D&ێk(Ȍpu?~oPbc|]tMvD3A%^b‘cƸ8]9ݳi( b3WvТ$rԘA~n$5\b3lu7`G"4/f 3Nj\*3 |>.HĄC̳e }ƳĔD3)P ~_^vʽAN101m~xc 5%11#x .ĿD3U$mv5I873eɓח_CJi̸g}/o5h-1 tG >}xbi>-3 ş/n|Xf惝ی@./C>' ߋcwDj>#3y e$9i73A4O>^u /1 dC'H&1`u- ^@Lib>Abq|RlK>|OG|OOS/~|D׈- > |?ύz6{^sH* ~?>i  WÇ`>pB"}+aslc( ~ Ȗ 7ٞb}Іraw|;ʊ_10K(je]ŕ|m>(7a<|!ꇷAЃn1DǕ&7>t4XW^GÀ689DӚs'2` W~^ ׯ|)gD}ۭoTTAh??{a&gTT%O䟾hT#g/l_Pݮ]z\elJIo>8'R$NzdՇ]޸<)ބ,w)h ; K_?Me0b)M0|r6{>~n >oyw}^uE$?AnlT;@?} :şԸsnh\?*nCFFr6rE1>?a&F($:zEacQIqa4O#/{sâ3Oa=a~-1OC^4|]łnT'T[-՛qWmE:oxs"}E⍉dw :CqC"7)F }(܌(d Rv}vq;~'6Q2~6𲧳7Z}?33n^%5pp^% 7 ݊ LM▒}g&8y]Mt25Un,xei-̛ i_m6r38(7H`ϵb~8׏/NkWsN' NߏPSlkWaLp|zkOk!x3j̾$S0y}M /\JiXzJͷy'spiC*83} |+ھ5"<>x+Wep7*8 ӏmt\s5ڗDpEJ,9FWa\^igOaz~jsus\=4)pӏuuT+1'ϛ |f ct\sUڗdp"&/oUt<ڽ tB}ʱ=p&~=׮\.tp'nǂiY|ZG'կ!6"8lvoj+6}p-nKr6.ܕQXvQc1~oK\j>=дՐޟzhL_'iUPw#t]iٚ|ڷG>8O/oo`W>ʿTp9ehNܓ28/IޕNp<[\djX^8 񜳇~&;oZf/@Pu8"?+xU"Whj^ H>߾ju\^͗8$TԵnmCOR OgY5<4U:I;h r>^0LV3pQ~/'XIWȱ"8*yꕈs>[ZWf115Vaz}UGk\r3(Fyq$ͫz#p]ePS֕u yc*|¼VK4PzUDxn@'o_\6D{6o~3_̿VmL]+ͫE\ضmWbH.[6؎_}-b^RwPyXrmZA}7nv\KV!^_"H.sG3ujnv͹[}//lC+_N=pvo2M/܍D^Epw믯@,sE=/n=OWXi/yO~wk&-[S᥮ }߫v/񅮽Xw}' (|SvzC۾mė2 9XO[PT_(.0 vpvz% L|1k 9\my(V})Mpj*{.t6_ª0B' Ȕ_*M{v4ͦ" pZaFjY^2Viu8N8 ôp7Êz/Uev"M6p>0D׵g^ @7jjٶ Tx MF~r2H/KMܪc;n3^V?8N"-WN<0 kl, jys'jRd:uTjA^LQU 5ۖ_j8FWkE_>Q_t8k؎rZ-_r\q\-GvM8PgdB$@kcێbX /2y+j.4c|<.į@Wlm<{ruZ-FM8u+ƓhIIY b/%o^JA'IuЛƣR%i5}2Ygˇ|>M$I%:>GKF&izqٟ7id6W8mP&i C}8_&,΢ܷg^u|>[i/O' B3I8n@PyY(4Ҭzvl:.KBaOa4&i-i:ŗ60re4gF{xZQiөgfYwh@\DaÅ}Е}8N'8{,K,nZtUUJ}Yc1sEpvpƕMv% yY%'0VҕJF[c (x(x9}\BtM=tTy^y5r<x(p]e[ ARZ#k5 mdu׶mwB2/2o9Ou[mJ)YgVkxx~q7_6w_ix7oTRe :[C?J8gqY7wozB"sqs3Y +2@`8c@0|p>Ym@!,ٛ"{-)C!>~>L/S?Eq*#|Go ?~e7G!gˊO_?W}ݤ #:< 9s?`|/Wvo}~zi??ٟbϿ@Oߞ&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!Rk695T~ݸ>5T&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!Rk'w]c1z q>N:Cw]c1z uކ:Cw]c1z uކ:Cw]c1z uކ:Cw]c1z uކ:Cw]c1z uކ:Cw]c1z uކ:Cw]c1z uކ:Cw]A U&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&I{^VxZe9kїF^#xZe9kїF^#xZe9kїF^#xZe9kїF^#xZe9kїF^#xZe#ɩ6LCy2[uT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT& 2`6LI`d:M6LC1d:M6LC1d:M6LC1d:M6LC1d:M6LC1d:MtݶςMf[,kIuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&%6LCٵq!1d:M6LC1d:M6LC1d:M6LC1d:M6LC1d:M6LCZe;m6rף/^G-z2rף/^G-z2rף/^G-z2rף/^G-z2rף/^G-z2rף" 9BXoDCUJ/rף/^G-z2rף/^G-z2rף/^G-z2rף/^G-z2rף/^G-z2Ȅׯ@)6LC1d:M6LC1d:M6LC1d:M6LC1d:M6LC1d:M6LC30 C&!S4xZe9kїF^#xZe9kїF^#xZe9kїF^#xZe9kїF^#xZe9kїF^#wP~ף/^G-z2rף/^G-z2rף/^G-z2rף/^G-z2rף/^G-z2rף"z^G.4=Drף/^G-z2rף/^G-z2rף/^G-z2rף/^G-z2rף/^G-z2r>f!q"Q{ d:M6LC1d:M6LC1d:M6LC1d:M6LC1d:M6LC$ oUIbt|%RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&z|rף/]ƀZe9kїF^#xZe9kїF^#xZe9kїF^#xZe9kїF^#xZe9kїF^#oG7q!ף/^G-z2rף/^G-z2rף/^G-z2rף/^G-z2rף/^G-z2d n!M.uCZ< rף/^G-z2rף/^G-z2rף/^G-z2rף/^G-z2rף/^G-v u9kї尾T=ϠZe9kїF^#xZe9kїF^#xZe9kїF^#xZe9kїF^#xZe9kїF^#WQV_-z2g r(uT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbT}L8Dld`g隰^G-z2rף/^G-z2rף/^G-z2rף/^G-z2rף/^G-z2d.v6F( hqArף/^G-z2rף/^G-z2rף/^G-z2rף/^G-z2rף/^G+{^H '} 7ZKV6LC1d:M6LC1d:M6LC1d:M6LC1d:M6LC1d2WqCUJ/7Ja9kїF^#xZe9kїF^#xZe9kїF^#xZe9kїF^#xZe9kїF^#[Ǭ< IbS:iQW8ƻ IbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT& 9BW hdn7H֎ɹ]1A8RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIb ThΨZ@7ZLC16uy (Ze9kїF^#xZe9kїF^#xZe9kїF^#xZe9kїF^#xZe9kї:m`{^[M%?rEEo _1 W^#xZe9kїF^#xZe9kїF^#xZe9kїF^#xZe9kїF^#xZeIhS~Ze9h 2? 1 z2rף/^G-z2rף/^G-z2rף/^G-z2rף/^G-z2r`5o*)Ed:S+xUld:M6LC1d:M6LC1d:M6LC1d:M6LC1d:MSY~ 圊W6@G5`#xZe9kїF^#xZe9kїF^#xZe9kїF^#xZe9kїF^#xZe]wM'e9kїG F8ϠZe9kїF^#xZe9kїF^#xZe9kїF^#xZe9kїF^#xZe9kї{.b3<}%(5 Dr@QUCUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIb0ݷSR{T+3w"Zurns3w%yY:frף/^G-z2rף/^G-z2rף/^G-z2rף/^G-z2r`2Θ7\h7P/1@dxDce!do=d:M6LC1d:M6LC1d:M6LC1d:M6LC1]m*Nʥtx{th&:2h:M6LC1d:M6LC1d:M6LC1d:M6LC1d:`o|2kxK7P/1@d%g?_N<6LC1d:M6LC1d:M6LC1d:M6LC1d:MHEǿ-z2rף/^t+Za}n!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT.| @C3YH&:7yM.u;@/ 4Qi`6LC1d:M6LC1d:M6LC1d:M6LC1d:Matt ޤG d:M6LC!!bU&ɈuT&!RlUIad=Ll_|a9kїF^#xZe9kїF^#xZe9kїF^#xZe9kїF^#xћ#a }Mf[r*.?rEEoYȨ-A9eA!Tޒ-z2rף/^G-z2rף/^G-z2rף/^G-z2rף/kvܟƘj֐xZe9kїF^#xz};Oѓ! RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈtڣFZZ# U&ɈuT&!RlUIbU&%^_y+8%RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&h]zҚ5Re#nܛ\G7H֏rns@/w0=6LC1d:M6LC1d:M6LC1d:M6LC1d:mT=o2_yb}%( o2_ybw'd:M6LC1d:M6LC1d:M6LC1d:M6KChHꐐZJKUތG-z2rף/^G-z2rף/^G-z2rף/^G-z2˽4Q+G$1CUIbU&ɈuT&!RlUI6R;+^mn!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIb+h8$vk2Qv[r*.?rEEoYȨ-A2c ikqd:M6LC1d:M6LC1d:M6LC1d:Ma`/_-z2rף/^G-z2d^5}n!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIK+Q 6LC1d:M6LCvr3|U7^G-z2rף/^G-z2rף/^G-z2rף/^G-z2a+8b#CUIbU&ɈuT&!RlUIbU&Vh 7ZRDrף/^G-z2rף/^G-z2rף/^G-z2rף/^tl#dLd:M6LC1d:M5}WH||ej5T&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!Rb%pIZh&:7yM.unܛ\G7H`Qv7PCѮ֐~e9kїF^#xZe9kїF^#xZe9kїF^#xZe9kї] 5iCUIbU&ɈuT&!RlUIbU&'3M1F^#xZe9kїF^#xZe9kїF^#xZe9kїF^# a&,( =o2_yb}%( o2_yb}%usne]xZe9kїF^#xZe9kїF^#xZe9kїF^#xZe8~2 %U)3w"Z.їF^#xZe9kїF^#w& M'A U&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&!'(X ]vKUIbU&ɈuT&!RlUIbU&ɈuT M&_%[r d:M6LC1d:M6LC1d:M6LC1dTh@UxZR 7H֏rns3w"Zeq+DzF^#xZe9kїF^#xZe9kїF^#xZe9kїF^GtGskqd:M6LC1d:M6LC%y$-n!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RbHגcet]?1G"̷,T]~ 圊Qv[r*.?rEEoYȨ-/8g׈F^#xZe9kїF^#xZe9kїo|}!1d:M6LC1d:M6LC1d:M6KD^N95T&!RlUIbU&ɈuT&!RlUIbU&'|hot#CUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!Rl>4Էhrj6LC1d:M6LC1d:MO5&͉uT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&Ʌ`qQ!1d:M6LC1d:M6L,|X M6LC1d:M6LC1d:M6LC1dAծg:M6LC1d:M6LC1d!#}!1d:M6LC1d:M6LC1d:M6KD0L.6LC1d:M6LC1d:M &_"JM6LC1d:M6LC1d:M6LC1dAﲮ>Ex{th&:7yM.unܛ\G7H֌>RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT%`OR}( o2_yb}%( o2_yb}%( qiޱW:}!1d:M6LC1d:M6LC1d:M6KDQ׃A U&ɈuT&!RlUIbU&ɈuT&!RlUI^H]p2WG d:M6LC1d:M6LC1d:M6LC-2ab d:M6LC1d:M6LC/BmXF^#xZe9kїF^#xZe9kї{X(JCC1d:M6LC1d:M6LC1d:M6LCq&.mRlUIbU&ɈuT&!RlUIbU&ɈuT%˾ bU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU2jM6LC1d:M6LC1d:ah% ,xK7P/1@dxK7P/bU&ɈuT&!RlUIbU&ɈuT& l~!G1CUIbU&ɈuT&!RlUIbU&ɈuT&<6)>G-z2rף/^G-z2rף/^G-z2rף/^G-LM`2=6LC1d:M6LC1d:M<[? ,T]~ 圊Qv[r*.?rEEoYȨ-Aʉ^G-z2rף/^G-z22q%:M6LC1d:M6LC1/:fLq!1d:M6LC1d:M6LC1d:M6LCcG(7AZ rף/^G-z2rף/^G-L,mxRlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!Q#l -^G-z2rף/^G-z2dZ#.P7#1d:M6LC1d:M6LC1d:M6LC-Y/kN95T&!RlUIbU&ɈuT&!RlU6[`]W"d,e#nܛ\G7H֏rns3w"Ze9kїF^#xZe9kї:,uT&!RlUIbU&ɈuT&!RlUIbTh%h&MIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU`C|rjG-z2rף/^G-z2rף->,Z@bS95T&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&c M6LC1d:M6LC-؆Xw.7H֏rns3w"Z,IZa U&ɈuT&!RlUIbU&ɈuTVnK>t#lj6LC1d:M6LC1d:M6LC1d:M6LC1l(GUIbU&ɈuT&!RlUIbQV`uP[o{˔ŧ?1G"̷,T]~ 圊Qv[r*.?rEEoYȨ-N95T&!RlUIbU&ɈuT&!RlU6IGRVF^#xZe9kїF^#H: ;WA U&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&! 8l}u9kїF^#xZe9kіs䛜 uT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUIbU&ɈuT&!RlUGJOUH WMM[R>K7P/1@dxh*`ʮ 7yM.unܛ\G7H֏rns3w rj6LC1d:M6LC11ՅgF^#xZe9kїF[A >/.#1@dxK7P/1@dxK7PC1d:M6LC1d:MM&%1іd:M6LC1lWa e`_x{th&:7yM.unܛ\G7DH'M6LC1d:M6LChE>5SzKov/^#1@dxK7̫h[IMGLɐy-:M6LC1d:M6LC1d:M6LC1d:M6LC1d:MbN&=puYi+\ؿF:fM9iiIF 7yM.unܛ\G7H֏rns3w"Zp[12K`|km y8̼^{x@;RPrygմeЈJEec1bzPެ'ߐzPzNRIĠU3P-[DUAy|ͨ@@ܮZ/LS،zIA'd IIOi[OZqT,gfWbbj̴@^@N4n63dX(+vtPT@\qk%YSQM@T2ٯCh'iRe9+SGlͧwdCA|o64sWAQ%:?GX[W!6h0ğelӵ9ΐz¨<u- x\" e- [AP @(Oi'H vns3zzm>3jh)1vryTb~͢,j̴@^@kQGX_xciϻ!(y8v*_zuXo.1p a0 2ٯ57AC~cXNH"CjNd6s=!.c#V!Jh1OU&NK^(|~6+NMlFafj>q15FE;畅NaItA תQ4޳2TCmWxx}Aco|g$((/ww/zPH"B> :=/$Cq?xM'ddfutB>xH/} f ^Siz}Gu߿A+LgYڱmc]#AP @(Oi K}~j[5IgL9[$ʦmcVe2 =]az6g0U&&Oda$1DfJCSDSpS>}%gIW~^'^؀MTJd` [ 2ٯ>$}=/Х #B84N׉"=ݘլqF o Βפob9nko]V^?P=߱ػ[V: =nӳĘ"SEKf]%34a[X~m(@`.5yg9Չ1q^(]AQG @m8M'n@@_ЭzZgxߏO5-#X:$M|[jHd;dVhVfDx&rr]_K5ZghiaVN"ҕٚ,lӵ\?:]<^S7Wk~d,ث $:jG|3HtڏMv΂I|nY>cx'?E*i3$rP4]B[ryTb~͢,j̴@^@(M9vALƔ:venp+πze9*~*)wM X,e dqw6)x8 [ 2ٯ I.Zϥtr Vh8ryB}4d^َZhY)P-F>d_ۘ2XǴʳU?c*fPnlWDPC~؎an>GܽQxX̕JfƧV_äV 5Ћ؎7nc-nBr`NR %đbKa7)E4=A|S _}.?IkmE{gLL,ՙخWz$G͝sl4 xr 3P8>}C=!avmlٴnwu@.6f2혦^NրO OQv ۵ GC?0]X΍MT(yy'4P:dTE"!"POnqtlDXՙhy^z:HsV v'?PJ! @PNc̿&x~u5Ih>O( !& " #-]xPu="7o7Wi#c:BŇ@>@ᕮK1mhY)P4s..!@)@JcdOk'6|p1 ݈|?lhШ=*GNɂ:b(2(B/w+o{\QEm0T6Ƿ ?VH/|.8֠utz^,RehrdGgl*]yo]:hJGY8,fQq[4h7[sM_,?ضYU2HH/}G8ZjG|3HlDuI]`P1Cfz<.U0؟h'szB@u=z -%K]g`}-}BVN0$$5|(x&Ǚط+Ȩ/8<9$k͜M-4(ABADek1 +4oCa{Zuz(UZhY.cg1вS@_ndzQUya[>v Xan>K#M7tl.0&&?hπ .[X}lnez]ڊ ?<ӯVq Pu4v< )PV' ʆ>];dVhVu~/mTj`Dec>dρ(P‘B"6F$GkqޡD3(yy(JɸFSWoCaq[ܟAJ bAΐ\$9@ʚM ѪGZOFDHX\1lez5K׷1YlO3& ZTQH[GӥS4:n(V53_-{ aCdaf6+{Y^H6(6(<o=K2"2 e- jpprOB DS%4`hCqHJ2w Y3#eovAȔ.2m o顛^~T(^'%fz5.XrȌA<5|)nJni1)9TO k4N ̸"$kрS$ؠ` _< W;L#_]6b̫4\6Mi睙*MvE +5 N 6f$01ryo,߫+ c@c+0T*[\ ` Ɠr{xSX ˞+aG⎾!g/:B;7dΜd@axtU4p>Ľw]&f*:&9bA:Z9 ܚӇ[OfM k_.+8=[ZLԣZ: -0fb^5+A@C9@xo侰 $;#烣7x*kHExHwSّl]L.nudH5*7Z:= ?3ZXV@ 7l[Yf$;.g\ _F>l7npVo>ߚcE{B@t)D# ,# f g\૜oͭ"zg1rݶ ~kA }J5Upo@sCo Ͳ퓤'= w[xCA wt+kn0 iJe̍H'/ (Mtcz 'u4̾ vP^c>;e\~mixEveY U6pA [q[R6Ho}baM'y-G WtFg0:AӲq{9y3M\J +)DV#'>V51m% mk@Aw>k9NnfL.1a:,r ~@fs?^b-i :xB=m'=G})qo*\CiGֳ^fXsƈN܆M d&[1ҿn=ChhKcfs4fz!&bN| 5Yfx1WI#ǜk0,8޼_*@gBr ޜ/<$݂,7߀y`[Y "eI،xpܱ~ LQEєWY X@%9,LM; VPٳb͡?xafQ^ 7=dBN[vSb~ͣ!F8/qB)DV#'JO$FٴȰ@茱- v,x|ĭ'Nafoïڰh|/Y} D42K&҃GVy tJ0",b$bԔ }SopF@D _ OfM kcxȳXG :$@X@l6@Ja0 cF 2a8{3C&"5{ϚLSe" %'"fsb"vh$#R@9Rβ`›TY;G#ʰ8Yy#x >'>xAw%*n6sfS[k(h\GLGNpi>Ac@ q}W kogD3&ʖ6s 4Xϰ!0n R;( |c꿝Z|wRhe.fL|CD!tl( \Ȧ,(0̙R'innWa:4`hCrCwU namespace Colors { constexpr const char* RED = "\x1b[31m"; constexpr const char* GREEN = "\x1b[32m"; constexpr const char* YELLOW = "\x1b[33m"; constexpr const char* BLUE = "\x1b[34m"; constexpr const char* MAGENTA = "\x1b[35m"; constexpr const char* CYAN = "\x1b[36m"; constexpr const char* RESET = "\x1b[0m"; }; #define EXPECT(expr, val) \ if (const auto RESULT = expr; RESULT != (val)) { \ std::cout << Colors::RED << "Failed: " << Colors::RESET << #expr << ", expected " << val << " but got " << RESULT << "\n"; \ ret = 1; \ } else { \ std::cout << Colors::GREEN << "Passed " << Colors::RESET << #expr << ". Got " << val << "\n"; \ } #define EXPECT_VECTOR2D(expr, val) \ do { \ const auto& RESULT = expr; \ const auto& EXPECTED = val; \ if (!(std::abs(RESULT.x - EXPECTED.x) < 1e-6 && std::abs(RESULT.y - EXPECTED.y) < 1e-6)) { \ std::cout << Colors::RED << "Failed: " << Colors::RESET << #expr << ", expected (" << EXPECTED.x << ", " << EXPECTED.y << ") but got (" << RESULT.x << ", " \ << RESULT.y << ")\n"; \ ret = 1; \ } else { \ std::cout << Colors::GREEN << "Passed " << Colors::RESET << #expr << ". Got (" << RESULT.x << ", " << RESULT.y << ")\n"; \ } \ } while (0)