openucx-tools-1.15.0-150600.3.5.2<>,iެp9|a[6Rʶ.XRr  BnrIk jT*(pd xg1 ] oz߁A% NݣdK_\$QC2HElܰ| l|\L>LY'/jC/;f5f)rECp pza-zTV8_cmѬ9tI7u a0b<1 5DQG{?ܨ.l8W>yǒ />>T?Dd $ 6lp|     c    6 \   (*84%9%:2%F'G@HI8XXYd\]^bcde flu(vw xy3z@Copenucx-tools1.15.0150600.3.5.2OpenUCX utilitiesMiscallaneous utilities for Unified Communication X.iެh04-armsrv2SUSE Linux Enterprise 15SUSE LLC BSD-3-Clausehttps://www.suse.com/System/Consolehttp://openucx.org/linuxaarch64 Pgaj: #P3AAA큤A큤A큤AA큤A큤iުiުiުiާiުiާiާiާiާiާiާiޫefiޫciާiާiާiާiާiާiާiާiާiާiާiާiާiާiާiާ3ecf445fd07a1dbfb98a039554f02b6c975b1aa6e5e94070f99a49036b3d9507b9fcdf4729489a75eed790febeb874c8a32355a4d844358b7fe8340d8a1c2be03ed86ee599342454ae574ee9cc9db59d3621822926a41aaf07a35ad7082c527e1c75f566591f0c841a773c2809811d550af1c0a7e96a594314932a42f51e85515fbfe61c8d3bad5d286b202a872e99d3d8e982e986c0b7b8eedd815490cf0b5bfdba7a97203e661fd08de4b1c85f9b4414569c474038a4fd7599984b4b12f727425c43b7b37d5a4db97b6152cffcf2a9e9b0e2b5b24fa4c4fd70042be2a48c3472f83d13224ed92e9264c0131074c5d3ee761cc7a74e3889aa4dc212340ea8dd090459b884fa8ee2543d12380268ccfcaeb73b1d49edaf4a30f13f83df33dafeebb5c7fa3d2e20fbee5431a975c7196779647490324dc2346cc561f0f044048dcc291b7e22e4d11a847ab0803c39646bcc05391d488974b29a0f5c2626498f226b7509ae9e5f975138a0dcb2744e67fcfdbba7f05f11485b42b211310d5af16e84407297fa98ea0a90b062f1eb467e7cc5badea8fe505c9df78977cbb0f5cd1bdb51f2499d8924ad1e62ea2f1a050e6aaf5ab9f3117a9b1adb40a0bc15e8495e9f11c5785da9c00f24d015d74e0d3c3b53eee08acce5c970dce443cb5560d4ea0d618d4650ed8674b28dda1a4b88df1db885589e7269f80d1bd51b8afb24ac70d4214780b9364cae0cceb0afc8bdb6c3cbf7b837e640fb311bbc5bc190138d3797d82a722b7923ff202c364754b917fc91d11fd63bd841ea0fba528a525fd6dc989f30814d5755885cca495652cce1d88f4a051470fe7e8ecd433908b04148853f3f460a0bf39b3273dfcb590e5db476d1d68b3b8ef9970e36894dad3473745a44bd26f5f50087ab4f124b228d267fe88ba0833309861d2a39f701a46676fcefe24145afe1640ef437c3ffbd3120bc734f0ccbe93d8c8b299ee6094cba118c8d9e13bb88a603c1223dac70b509a7c00d8d47583dba685473b89972b469329e29rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootopenucx-1.15.0-150600.3.5.2.src.rpmopenucx-toolsopenucx-tools(aarch-64)pkgconfig(ucx)@@@@@@@@@@@@@@@@@@@@@@@@@@@    /usr/bin/pkg-configld-linux-aarch64.so.1()(64bit)ld-linux-aarch64.so.1(GLIBC_2.17)(64bit)libc.so.6()(64bit)libc.so.6(GLIBC_2.17)(64bit)libc.so.6(GLIBC_2.33)(64bit)libc.so.6(GLIBC_2.34)(64bit)libc.so.6(GLIBC_2.38)(64bit)libgcc_s.so.1()(64bit)libgcc_s.so.1(GCC_3.0)(64bit)libgomp.so.1()(64bit)libgomp.so.1(GOMP_1.0)(64bit)libgomp.so.1(GOMP_4.0)(64bit)libgomp.so.1(OMP_1.0)(64bit)libstdc++.so.6()(64bit)libstdc++.so.6(CXXABI_1.3)(64bit)libstdc++.so.6(CXXABI_1.3.9)(64bit)libstdc++.so.6(GLIBCXX_3.4)(64bit)libstdc++.so.6(GLIBCXX_3.4.11)(64bit)libstdc++.so.6(GLIBCXX_3.4.15)(64bit)libstdc++.so.6(GLIBCXX_3.4.21)(64bit)libstdc++.so.6(GLIBCXX_3.4.9)(64bit)libucp.so.0()(64bit)libucs.so.0()(64bit)libuct.so.0()(64bit)pkgconfig(ucx-ucs)pkgconfig(ucx-uct)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-14.14.3g@ed@dJdc<@c< @c2a@aLl@`6?_{ _ L^3^@]4@]@\@\s\o@[@[ā@[l,[!@Z2@Zc/@ZaZ*~YYYV=@YS@Y9<@Y(We7Ue@U@nicolas.morey@suse.comnicolas.morey@suse.comnicolas.morey@suse.comnicolas.morey@suse.commliska@suse.czschwab@suse.denmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comjengelh@inai.denmoreychaisemartin@suse.comjengelh@inai.denmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.commliska@suse.cznmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comjengelh@inai.denmoreychaisemartin@suse.comdimstar@opensuse.orgjengelh@inai.denmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comjengelh@inai.dejengelh@inai.dejengelh@inai.dejengelh@inai.de- Add UCT-IB-UD-Use-GRH-to-detect-address-family-on-non-Mellanox-hardware.patch to fix an UD init issue on non-Mellanox RDMA HW (bsc#1240204)- Update to 1.15.0 - UCP - Added 2-stage pipeline protocol in the new protocol infrastructure - Added reset and abort functionality of rendezvous protocols in the new infrastructure - Added zero-copy rendezvous data send protocol in the new infrastructure - Added support for user memory handle in the new protocol infrastructure - Added option to force ODP registration for certain memory types - Enabled lock free memory region deregistration - Updated allow/deny transport list feature to control auxiliary transport selection - Multiple performance improvements of the new protocol infrastructure - Multiple improvements in error and debug messages - Fixed assertion when sending from non-contiguous GPU buffer to managed buffer - Fixed the race condition on endpoint configurations - Fixed endpoint reconfiguration issues due to asymmetrical selection - Fixed endpoint reconfiguration error due to wrong locality detection - Fixed crash during connection manager cleanup - Fixed rkey index calculation for rendezvous protocol - Fixed rcache dump function - Removed logging from rkey unpack in release mode - Fixed dobule free of rkey in rendezvous protocol - Fixed rendezvous pipeline protocol error flow - Fixed error handling in rendezvous get zcopy protocol - Replay pending requests of wireup EP CM during connection establishment to prevent potential ordering issues and wrong configuration - Pass user-provided memory type to the function that checks whether the buffer can be sent inline or not - Avoid memory registration during UCP context initialization - Fixed CPU/device atomics selection in the new protocol infrastructure - Multiple fixes in the new protocol infrastructure information output - UCT - Split UCT_MD_MKEY_PACK_FLAG_INVALIDATE into two flags for RMA and AMO - Added put_zcopy and get_zcopy scheme support for self transport - Added base implementation of is_reachable_v2 API using intra/inter flag - Introduced MD capability for non-blocking registration memory types - Added check for dmabuf kernel support in ROCm memory domain - Fixed exported memh packing - Fixed an error in checking return status of multi-threaded memory registration function - RDMA CORE (IB, ROCE, etc.) - Added implementation of is_reachable_v2 routine to IB interface - Added option to control CQE zipping per CQ RX/TX direction - Added option to specify how DCI selects port under RoCE LAG - Added hw_dcs to the list of policies to select DCI by an endpoint - Removed implicit on-demand paging - Added option to set RoCE lag dct port for response under queue affinity mode - Improved IB memlock limit logging - Fixed dma-buf based memory region registration - Fixed memory handle data corruption when PCIe relaxed ordering is enabled - Fixed performance degradation when indirect atomic key is not supported by the hardware - Fixed remote access error to strict-order keys because of wrong offset - Added check for UAR support to memory domain opening - Fixed updating port counters for devx qp - Fixed ibv_create_cq error message on node without Infiniband - Fixed performance degradation due to using 2 paths on NDR400 by default - Removed unnecessary async lock which otherwise would block UD progress - UCS - Added ucs_string_buffer_rbrk() to split token - Fixed lane selection and added bandwidth estimation for Sapphire Rapids family - Fixed displaying wrong environment variable suggestions - Fixed VFS warning output - Fixed SEGV in ucs_debug_backtrace_next(), upon previous SEGV handling, due to ENOMEM situation - Fixed memory corruption when using UCX_MPOOL_FIFO=y - UCM - Fixed conditional jump patching - Fixed mremap() override - Tests - Added a rocm docker container for testing - Added option to send client_id in iodemo test - Added support for multiple connections to the same server in iodemo test - Added synchronization before exit to hello world examples - Fixed wrong usage of ep_close in examples - Tools - Added user-side memcpy option for AM benchmarks in ucx_perftest - Added wireshark LUA dissectors for some UCX protocols - Fixed memory access flags in perftest - Removed support for librte from perf - Fixed worker flush deadlock when using multiple workers in ucx_perftest - Build - Added support for binutils 2.40 - Added versioned dependency to switch between packages with the same names - Added a separate xpmem deb subpackage - Added aarch64 support to the binary distribution pipeline - Removed dependency on libnuma - Documentation - Updated ucp_worker_release_address description - Refresh openucx-s390x-support.patch against latest souces- Update to v1.14.1 - Fixed ROCm to prevent the locking of host pinned memory - Added CUDA 12 based UCX builds to the release flow - Increased the maximal number of endpoint configurations - Fixed filter for a slow-lanes in selection logic - Fixed TCP transport bandwidth calculation - Fixed device detection for ROCM - Fixed compatibility with CUDA 12 - Fixed rendezvous threshold for multi-path configurations - Fixed error message in case of static link - Fixed BlueField-3 detection - Multiple fixes for Azure CI pipeline- Update to v1.14.0 - UCP - Added API for querying transport and device names on endpoint - Added API for querying datatype object - Added API for exporting and importing memory keys (no implementation yet) - Added support for non-persistent active message header - Added infrastructure to print protocols v2 performance - Multiple performance improvements for protocols v2 - Added support for non-contiguous datatypes for rendezvous protocols v2 - Added support for reset and abort request in protocols v2 - Added support for user memory handles in RMA API - Added multi-rail support for RMA API in protocols v2 - Added support for up to 16 different lanes per endpoint - Added support for dmabuf memory registration in protocols v2 - Added strong fence mode for ucp_worker_fence() API - UCT - Added new uct_md_mem_attach() API to support exported memory handles - Added remote completion mode for endpoint flush (via new flag) - Added support for dmabuf registration - Added new uct_ep_connect_to_ep_v2() API - Added new uct_mem_reg_v2() API - Added new uct_md_query_v2() API - Added support for IPv6 loopback address in TCP transport - RDMA CORE (IB, ROCE, etc.) - Added ECE (enhanced connection establishment) support for RC and DC transports - Added support for hardware DCS in DC transport - Added UD interface and endpoint resource information to VFS - Added CQ creation via DEVX API - Removed support for accelerated IB transports over legacy experimental verbs - UCS - Added support for auto-correction of user environment variables - UCM - Implemented CUDA bistro hooks for aarch64 (to enable memory cache on this platform) - Added support for CUDA virtual/stream-ordered memory with cudaMallocAsync - Documentation - Added FAQ for using pkg-config tool to build applications with UCX - Tools - Added runtime library version to the 'ucx_info -v' output - Added support for memory types in ucx_info - Many bugfixes. See NEWS. - Drop patch merged upstream: - UCS-DEBUG-replace-PTR-with-void.patch - gcc13-fix.patch - Refresh openucx-s390x-support.patch- Add upstream gcc13-fix.patch fix.- openucx-s390x-support.patch: fix use of clz builtin for 64-bit value- Update openucx-s390x-support.patch to add missing ucs_ffs32 on s390x - Drop baselibs.conf as openucx only works on 64b systems- Update to v1.13.1 (jsc#PED-912) - Core - Added new objects to VFS: local and remote address of endpoint, statistics of ucp_ep_create success/failure, failed/destroyed endpoints - Added support for UCX static libraries - Added profiling for rkey management routines - PCIe relaxed order enabled by default for AMD CPUs - Fixed not deallocating memory from ucp_mem_unmap if no rcache - Fixed versioning infrastructure - Multiple code improvements: refactoring, debug prints and assertions, etc. - Multiple improvements in build, test and docs infrastructure - Added new objects to VFS (md, component, log_level, etc.) - Added configuration variable to specify which loadable modules are allowed - Added build-time configuration to disable sigaction overriding - UCP - Added API to pass pre-registered memory handle to UCP operations - Added implementation of AM rendezvous protocol - Added 2-stage pipeline rendezvous protocol for GPU - Added support for fragment mem_type for v1 pipeline proto, disabled by default - Added active message support for proto v2 - Added UCP memory registration cache - Improved adaptive progress - deactivate iface when all p2p lanes are destroyed - Added support for user memh in proto_v1 - Added support for selecting local address when creating a client endpoint - Added option to limit GPUDirectRDMA size in rendezvous protocol, UCX_RNDV_MEMTYPE_DIRECT_SIZE - Deprecated UCX_SOCKADDR_AUX_TLS configuration parameter - Resolving remote EP ID when creating local EP disabled by default - Added client_id to ucp_worker_create() and ucp_conn_request_query() APIs - Added ucp_worker_address_query() API - Updated ucp_ep_query() API for getting local and remote addresses - Added address versioning to correctly preserve wire compatibility starting from version 1.11.0 - Added new client/server connection establishment packet header format - Enabled rendezvous and tag sync protocols when error handling is enabled on the endpoint - Added iov zcopy support to RMA operations - Reduced memory usage of unexpected messages by fitting receive buffer size to packet size - Added support for modifying UCT and UCS configs by ucp_config_modify() API - Optimized unpacked rkeys memory consumption - Added request flag to influence latency vs. bandwidth protocol - Reduced memory management overhead with new protocols - Improved performance calculations for new protocols - Added AMO support with GPU memory target using new protocols - Added put_zcopy, get_zcopy and pipeline based rendezvous in new protocols - Added support for user-defined alignment in Active Messages - Added support for offload tag sync in new protocols - Updated ucp_atomic_post() to use NBX flow - UCT - Introduced API uct_md_mkey_pack_v2 - Introduced UCT iface features API - Introduced max_inflight_eps parameter in perf_attr API - Introduced UCT_SEND_FLAG_PEER_CHECK flag that forces checking connectivity to a peer - Introduced UCX_RCACHE_PURGE_ON_FORK to enable/disable cleaning regions when application is forking - Disabled PEER_FAILURE capability for XPMEM - Added API - uct_iface_is_reachable_v2() - Added IPv6 address support in TCP - Added latency estimation to uct_iface_estimate_perf() - Adjusted knem and cma overhead cost - Increased built-in TCP keep-alive interval to 2 seconds - RDMA CORE (IB, ROCE, etc.) - Introduced NDR autorecognition - Introduced CQE zipping support - Set the default MAX_RD_ATOMIC to maximum value supported by the hardware - Disabled mlx5 ifaces on verbs MD - Added detection of IB NDR devices - Added check for CQ overrun in assert mode - Added bitmap usage for releasing detached DCIs - Added configuration for requests ack frequency with DevX - Added remote QP info to tx error CQE traces - ROCM - Increased maximum number of HSA agents - UCS - Added topo module infrastructure - Added memtrack and rcache information to VFS - Added API for a per-process aggregate-sum statistics report - Added memory pool set data structure - Added new ptr_array API for bulk allocation - Added ucs_string_buffer_append_flags() for string buffer - Added ucs_ffs32() - Added ucs_vsnprintf_safe() which always adds '\0' - Added thread-safe put to ptr_map - Improved accuracy of the topology distance estimation - Added prints of leaked callbacks from the callback queue - Removed a diagnostic message when fuse thread is stopped - Added configurable limit for the memory consumed by rcache - Added configuration for VFS(FUSE) thread affinity - Added memory limit support to memtrack - Packaging - Added cmake config files for better integration with external cmake based projects - Tools - Added loop-back transport support in ucx_perftest - Split ucx_perftest into separate modules - Added process placement option for ucx_info - Extended parameters correctness check in ucx_perftest - Backported UCS-DEBUG-replace-PTR-with-void.patch from upstream to fix compilation- Fix UCM bistro support on non s390x archs - Add ucm-fix-UCX_MEM_MALLOC_RELOC.patch to disable malloc relocations by default (bsc#1194369)- Update to v1.11.1 (jsc#SLE-19260)- Update openucx-s390x-support.patch to fix mmap syscall on s390x (bsc#1182691) - Core: - Added support for UCX monitoring using virtual file system (VFS)/FUSE - Added support for applications with static CUDA runtime linking - Added support for a configuration file - Updated clang format configuration - UCP - Added rendezvous API for active messages - Added user-defined name to context, worker, and endpoint objects - Added flag to silence request leak check - Added API for endpoint performance evaluation - Added API - ucp_request_query - Added API - ucp_lib_query - Added bandwidth optimizations for new protocols multi-lane - Added support for multi-rail over lanes with BW ratio >= 1/4 - Added support for tracking outstanding requests and aborting those in case of connection failure - Refactored keep-alive protocol - Added device id to wireup protocol - Added support up to 128 transport layer resources in UCP context - Added support CUDA memory allocations with ucp_mem_map - Increased UCP_WORKER_MAX_EP_CONFIG to 64 - Adjusted memory type zcopy threshold when UCX_ZCOPY_THRESH set - Refactored wireup protocols, rendezvous, get, zcopy protocols - Added put zcopy multi-rail - Improved logging for new protocols - Added system topology information - Added new protocols for eager offload protocols - UCT - Extended connection establishment API - Added active message AM alignment in iface params - Added active message short IOV API. - Added support for interface query by operation and memory type - Added API to get allocation base address and length - Added md_dereg_v2 API - UCS - Added log filter by source file name. - Added checking for last element in fraglist queue - Added a method to get IP address from sockaddr. - Added memory usage limits to registration cache - RDMA CORE (IB, ROCE, etc.) - Added report of QP info in case of completion with error - Refactored of FC send operations - Added support for DevX unique QPN allocation - Optimized endpoint lookup for DCI - Added support for RDMA sub-function (SF) - Added support for DCI via DEVX - Added DCI pool per LAG port - Added support for RoCE IP reachability check using a subnet mask - Added active message short IOV for UD/DC/RC mlx, UD/RC verbs - Added endpoint keep alive check for UD - Suppressed warning if device can't be opened - Added support for multiple flush cancel without completion - Added ignore for devices with invalid GID - Added support for SRQ linked list reordering - Added flush by flow control on old devices - Added support for configurable rdma_resolve_addr/route timeout - Shared memory - Added active message short IOV support for posix, sysv, and self transports - TCP - Added support for peer failure in case of CONNECT_TO_EP - Added support for active message short IOV - See NEWS for a complete changelog and bug fixes - Refresh openucx-s390x-support against latest sources- Update to v1.9.0 (jsc#SLE-15163) - Features: - Added a new class of communication APIs '*_nbx' that enable API extendability while - preserving ABI backward compatibility - Added asynchronous event support to UCT/IB/DEVX - Added support for latest CUDA library version - Added NAK-based reliability protocol for UCT/IB/UD to optimize resends - Added new tests for ROCm - Added new configuration parameters for protocol selection - Added performance optimization for Fujitsu A64FX with InfiniBand - Added performance optimization for clear cache code aarch64 - Added support for relaxed-order PCIe access in IB RDMA transports - Added new TCP connection manager - Added support for UCT/IB PKey with partial membership in IB transports - Added support for RoCE LAG - Added support for ROCm 3.7 and above - Added flow control for RDMA read operations - Improved endpoint flush implementation for UCT/IB - Improved UD timer to avoid interrupting the main thread when not in use - Improved latency estimation for network path with CUDA - Improved error reporting messages - Improved performance in active message flow (removed malloc call) - Improved performance in ptr_array flow - Improved performance in UCT/SM progress engine flow - Improved I/O demo code - Improved rendezvous protocol for CUDA - Updated examples code - Bugfixes: - Fixes for most resent versions of GCC, CLANG, ARMCLANG, PGI - Fixes in UCT/IB for strict order keys - Fixes in memory barrier code for aarch64 - Fixes in UCT/IB/DEVX for fork system call - Fixes in UCT/IB for rand() call in rdma-core - Fixed in group rescheduling for UCT/IB/DC - Fixes in UCT/CUDA bandwidth reporting - Fixes in rkey_ptr protocol - Fixes in lane selection for rendezvous protocol based on get-zero-copy flow - Fixes for ROCm build - Fixes for XPMEM transport - Fixes in closing endpoint code - Fixes in RDMACM code - Fixes in memcpy selection for AMD - Fixed in UCT/UD endpoint flush functionality - Fixes in XPMEM detection - Fixes in rendezvous staging protocol - Fixes in ROCEv1 mlx5 UDP source port configuration - Multiple fixes in RPM spec file - Multiple fixes in UCP documentation - Multiple fixes in socket connection manager - Multiple fixes in gtest - Multiple fixes in JAVA API implementation - Refresh openucx-s390x-support.patch against new version- Update to v1.8.1 - Features: - Added binary release pipeline in Azure CI - Bugfixes: - Multiple fixes in testing environment - Fixes in InfiniBand DEVX transport - Fixes in memory management for CUDA IPC transport - Fixes for binutils 2.34+ - Fixes for AMD ROCM build environment- Trim bias and filler wording from descriptions.- Update to v1.8.0 - Features: - Improved detection for DEVX support - Improved TCP scalability - Added support for ROCM to perftest - Added support for different source and target memory types to perftest - Added optimized memcpy for ROCM devices - Added hardware tag-matching for CUDA buffers - Added support for CUDA and ROCM managed memories - Added support for client/server disconnect protocol over rdma connection manager - Added support for striding receive queue for hardware tag-matching - Added XPMEM-based rendezvous protocol for shared memory - Added support shared memory communication between containers on same machine - Added support for multi-threaded RDMA memory registration for large regions - Added new test cases to Azure CI - Added support for multiple listening transports - Added UCT socket-based connection manager transport - Updated API for UCT component management - Added API to retrieve the listening port - Added UCP active message API - Removed deprecated API for querying UCT memory domains - Refactored server/client examples - Added support for dlopen interception in UCM - Added support for PCIe atomics - Updated Java API: added support for most of UCP layer operations - Updated support for Mellanox DevX API - Added multiple UCT/TCP transport performance optimizations - Optimized memcpy() for Intel platforms - Added protection from non-UCX socket based app connections - Improved search time for PKEY object - Enabled gtest over IPv6 interfaces - Updated Mellanox and Bull device IDs - Added support for CUDA_VISIBLE_DEVICES - Increased limits for CUDA IPC registration - Bugfixes: - Multiple fixes in JUCX - Fixes in UCP thread safety - Fixes for most recent versions GCC, PGI, and ICC - Fixes for CPU affinity on Azure instances - Fixes in XPMEM support on PPC64 - Performance fixes in CUDA IPC - Fixes in RDMA CM flows - Multiple fixes in TCP transport - Multiple fixes in documentation - Fixes in transport lane selection logic - Fixes in Java jar build - Fixes in socket connection manager for Nvidia DGX-2 platform - Multiple fixes in UCP, UCT, UCM libraries - Multiple fixes for BSD and Mac OS systems - Fixes for Clang compiler - Fix CPU optimization configuration options - Fix JUCX build on GPU nodes - Fix in Azure release pipeline flow - Fix in CUDA memory hooks management - Fix in GPU memory peer direct gtest - Fix in TCP connection establishment flow - Fix in GPU IPC check - Fix in CUDA Jenkins test flow - Multiple fixes in CUDA IPC flow - Fix adding missing header files - Fix to prevent failures in presence of VPN enabled Ethernet interfaces - Refresh openucx-s390x-support.patch against new version- Ensure /usr/lib/ucx is owned at all times.- Update to v1.6.0 - Features: - Modular architecture for UCT transports - ROCm transport re-design: support for managed memory, direct copy, ROCm GDR - Random scheduling policy for DC transport - Optimized out-of-box settings for multi-rail - Added support for OmniPath (using Verbs) - Support for PCI atomics with IB transports - Reduced UCP address size for homogeneous environments - Bugfixes: - Multiple stability and performance improvements in TCP transport - Multiple stability fixed in Verbs and MLX5 transports - Multiple stability fixes in UCM memory hooks - Multiple stability fixes in UGNI transport - RPM Spec file cleanup - Fixing compilation issues with most recent clang and gcc compilers - Fixing the wrong name of aliases - Fix data race in UCP wireup - Fix segfault when libuct.so is reloaded - issue #3558 - Include Java sources in distribution - Handle EADDRNOTAVAIL in rdma_cm connection manager - Disable ibcm on RHEL7+ by default - Fix data race in UCP proxy endpoint - Static checker fixes - Fallback to ibv_create_cq() if ibv_create_cq_ex() returns ENOSYS - Fix malloc hooks test - Fix checking return status in ucp_client_server example - Fix gdrcopy libdir config value - Fix printing atomic capabilities in ucx_info - Fix perftest warmup iterations to be non-zero - Fixing default values for configure logic - Fix race condition updating fired_events from multiple threads - Fix madvise() hook - Refresh openucx-s390x-support.patch against new version- Disable Werror to handle boo#1121267- Update openucx-s390x-support.patch to fix support of 1.5.0 on s390x (bsc#1121267) - Add baselibs.conf for ppc- Update to v1.5.0 (bsc#1121267) * Features: * New emulation mode enabling full UCX functionality (Atomic, Put, Get) * over TCP and RDMA-CORE interconnects which don't implement full RDMA semantics * Non-blocking API for all one-sided operations. All blocking communication APIs marked * as deprecated * New client/server connection establishment API, which allows connected handover between workers * Support for rdma-core direct-verbs (DEVX) and DC with mlx5 transports * GPU - Support for stream API and receive side pipelining * Malloc hooks using binary instrumentation instead of symbol override * Statistics for UCT tag API * GPU-to-Infiniband HCA affinity support based on locality/distance (PCIe) * Bugfixes: * Fix overflow in RC/DC flush operations * Update description in SPEC file and README * Fix RoCE source port for dc_mlx5 flow control * Improve ucx_info help message * Fix segfault in UCP, due to int truncation in count_one_bits() * Multiple other bugfixes (full list on github) * Tested configurations: * InfiniBand: MLNX_OFED 4.4-4.5, distribution inbox drivers, rdma-core * CUDA: gdrcopy 1.2, cuda 9.1.85 * XPMEM: 2.6.2 * KNEM: 1.1.2- Update to v1.4.0 (bsc#1103494) * Features: * Improved support for installation with latest ROCm * Improved support for latest rdma-core * Added support for CUDA IPC for intra-node GPU, CUDA memory allocation cache for mem-type detection, latest Mellanox devices, Nvidia GPU managed memory, multiple connections between the same pair of workers, large worker address for client/server connection establishment and INADDR_ANY, and for bitwise atomics operations. * Bugfixes: * Performance fixes for rendezvous protocol * Memory hook fixes * Clang support fixes * Self tl multi-rail fix * Thread safety fixes in IB/RDMA transport * Compilation fixes with upstream rdma-core * Multiple minor bugfixes (full list on github) * Segfault fix for a code generated by armclang compiler * UCP memory-domain index fix for zero-copy active messages- Update to v1.3.1 (fate#325996) - Prevent potential out-of-order sending in shared memory active messages - CUDA: Include cudamem.h in source tarball, pass cudaFree memory size - Registration cache: fix large range lookup, handle shmat(REMAP)/mmap(FIXED) - Limit IB CQE size for specific ARM boards- Update to v1.3.0 (bsc#1104159) - Added stream-based communication API to UCP - Added support for GPU platforms: Nvidia CUDA and AMD ROCM software stacks - Added API for client/server based connection establishment - Added support for TCP transport - Support for InfiniBand tag-matching offload for DC and accelerated transports - Multi-rail support for eager and rendezvous protocols - Added support for tag-matching communications with CUDA buffers - Added ucp_rkey_ptr() to obtain pointer for shared memory region - Avoid progress overhead on unused transports - Improved scalability of software tag-matching by using a hash table - Added transparent huge-pages allocator - Added non-blocking flush and disconnect for UCP - Support fixed-address memory allocation via ucp_mem_map() - Added ucp_tag_send_nbr() API to avoid send request allocation - Support global addressing in all IB transports - Add support for external epoll fd and edge-triggered events - Added registration cache for knem - Initial support for Java bindings - Multiple bugfixes (full list on github) - Drop UCT-UD-fixed-compilation-by-gcc8.patch as it was fixed upstream - Refresh openucx-s390x-support.patch against latest sources- Remove libnuma-devel on s390x for older releases- Add UCT-UD-fixed-compilation-by-gcc8.patch to fix compilation with GCC8 (bsc#1084635)- Use right documentation path.- Update to 1.2.2 - Support including UCX API headers from C++ code - UD transport to handle unicast flood on RoCE fabric - Compilation fixes for gcc 7.1.1, clang 3.6, clang 5 - When UD transport is used with RoCE, packets intended for other peers may arrive on different adapters (as a result of unicast flooding). - This change adds packet filtering based on destination GIDs. Now the packet is silently dropped, if its destination GID does not match the local GID. - Added a new device ID for InfiniBand HCA- Drop doxygen BuildRequires: The documentation was already not built with this enabled. Removing the BR causes no regression in the package but eliminates a build cycle boost -> curl -> doxygen -> openucx -> boost- Rediff openucx-s390x-support.patch as p1 to be in line with potential git-generated patches.- Switch to version 1.2.1 (Fate#324050) Previous 1.3+ version was based on a development branch. Supported platforms - Shared memory: KNEM, CMA, XPMEM, SYSV, Posix - VERBs over InfiniBand and RoCE. VERBS over other RDMA interconnects (iWarp, OmniPath, etc.) is available for community evaluation and has not been tested in context of this release - Cray Gemini and Aries - Architectures: x86_64, ARMv8 (64bit), Power64 Features: - Added support for InfiniBand DC and UD transports, including accelerated verbs for Mellanox devices - Full support for PGAS/SHMEM interfaces, blocking and non-blocking APIs - Support for MPI tag matching, both in software and offload mode - Zero copy protocols and rendezvous, registration cache - Handling transport errors - Flow control for DC/RC - Dataypes support: contiguous, IOV, generic - Multi-threading support - Support for ARMv8 64bit architecture - A new API for efficient memory polling - Support for malloc-hooks and memory registration caching- Disable avx at configure level- Add openucx-s390x-support.patch to fix compilation on s390x - Compile openucx on s390x- Fix compilation on ppc- Update to snapshot 1.3+git44 * No changelog was found - Add -Wno-error and disable AVX/SSE as it is not guaranteed to exist.- Update to snapshot 0~git1727 * New: libucm. libucm is a standalone non-unloadable library which installs hooks for virtual memory changes in the current process.- Update to snapshot 0~git862 * License clarification on upstream's behalf- Initial package for build.opensuse.org (version 0~git713)h04-armsrv2 1762188972 1.15.0-150600.3.5.21.15.0-150600.3.5.21.15.0 ucx_infoucx_perftestucx_read_profileopenucxio_democmakeucxucx-config-version.cmakeucx-config.cmakeucx-targets.cmakeucx.pcopenucx-toolsNEWSopenucx-toolsLICENSEopenucxexampleshello_world_util.hucp_client_server.cucp_hello_world.cucp_util.huct_hello_world.cperftestREADMEmsg_pow2msg_pow2_largetest_types_ucptest_types_ucp_amotest_types_ucp_rmatest_types_ucttransports/usr/bin//usr/lib//usr/lib/openucx//usr/lib64//usr/lib64/cmake//usr/lib64/cmake/ucx//usr/lib64/pkgconfig//usr/share/doc/packages//usr/share/doc/packages/openucx-tools//usr/share/licenses//usr/share/licenses/openucx-tools//usr/share//usr/share/openucx//usr/share/openucx/examples//usr/share/openucx/perftest/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:41432/SUSE_SLE-15-SP6_Update/2317d2503d39928489709d2799d2b271-openucx.SUSE_SLE-15-SP6_Updatedrpmxz5aarch64-suse-linuxELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=0daa1a33494a952903381e3946fc6458b867ced5, for GNU/Linux 4.3.0, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=197c3f7d2435279311cc9acc8047fca2ce78ff6e, for GNU/Linux 4.3.0, strippedELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=fd632dfedb41d4a800aea1cd22b5cae773e4fd89, for GNU/Linux 4.3.0, strippeddirectoryELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=f978b572515158df4b52264688b2024c75f82268, for GNU/Linux 4.3.0, strippedASCII textpkgconfig fileC source, ASCII text / RRRRRRRRRRR R R RRRRRRR RRRRRRRRRR RRRRRRRRRRRRRRRRRPRRR_+ Zv1֎ȳutf-82ac51933fc6370307026ff4e00d105b6d70dbbc481e9ba2b81aa02058922a008? 7zXZ !t/l ]"k%N6cბbMb-.v%;Z5~8FAUP3(]z;Tw/9 sQI3 a?wزlT1h;g߂Urtܞ幫O8$FU)3|,'@tIlAx[. n}Z{Ax18gycu2''C<}JGmoӾ"\d P_1R3FUVg$[dK'M(H:jUDPBy[!@q?1w+錿f[/8`cKmӅ L$WkчIē5cc3ޡkGpTӳXß9Y8i߃PD{jMC Yp:\?u]ObV6P" z{Z[杛0Ecͳ#a¦ixhzM>lYζv}?6E)qMApͶTq9!躲~ g_ ﮫ)jnMF.b3tydzGq"cOn>ӗ848OI VHՆ#gw",6M52ᶩ* …4| Nϋ;wgFgSZb~ Uݗ~X-Zem˖1?5Sն@mv uJ^AH6I&#͞lC|`ێ5K{F<9lqӂS{i0mPD&!>'t*^'( 9vNF\[Xi)"lT,;IrdLNj!Ч9,nmvܳ0dC *69! 2nJBo$}Bƌ 0h'%j:v8#nuJ9Ӣ+H%@A‘KuYWΔje6G}*Ʀ3M5_H;/Z؟v,A4BUr& JaY"UƐ!`"bIx?l=FDEoHLc~,[zY3Ӈ^5#d(b/^lp[Ӏec)Ru۽ф{ M[2Q12WT쫿!i_K$7e ih eKmkq'31Tp=Ww]z)iW47>KM{f*t$qgS3U)D Aڙ,Ԡ1u֖vq%D\#9`^9nker ƭOřU1$H~X3`cxgr'dn(e VC.2")MK~Z{}~oˌ:Cr AV}̊[1{><.8(^[z7YYέ\u"%#y@`_(O('}십\FKJ?ղc&6>&-CmM0yx4Q*$ RUfkŻفеC'd-öu+΋w4f$am-<- ALPSV6$[A7Zw%$c[$ ,#i$|p)ץ>IO$YTPjQ kl2鞀XdyRd ha_l c]WsXЎؠr"8hi_:sUWA:HB<H9Zt0&pATBBR^, iE̺03CD>6Ƨuc2G'p[VoIߖ2o!7yWB8" Ƣ.O`E| VKH?!җ@1ȑrXK73T̀Ro/6Q;<1Jǜa4g%$#*njt/#x]bLܫ WaCo ~4,y߁uUUBbE FKdB; [Άz:\dɍ9&l-@ؕjV3bNB ~Qkp gMK~ Ҍj:|a@ͼD2#o=wrPN60vār~BtSL& mS*G1!p: (v듭&$njHF[?Y?x_.[jn?«XtWyCN MIUG-Ŗs[*os +?SĒW+|{M9 SGkӍtgs`G$][Ɍ~{`F7A+2j妤e\pg,xײ/+1ԟL3\΁ZSNbE(+-'UL dn?=) kcТ{;v˩b=q]Wu' [sH*\wL3[ m6ɀax3P;;n&~H&$nPO6z;J© "- 0;lfTNBGm5*i@ QE rSJXa. lIXN*J'V7(5He}%15l J)^_Rj^Zn P6ĿʥΎ@Kr^hV?qP[F0U"Փ̎1=NvcN)D feձN :x( $^dV lz 9O&übM53wj2N-}߅dPA۬5B8T$kOCٴCKWdMNXcÄIS6bg[]՚:T&$LmW|!cߡj ~'o1S\} (U( fNBb yQcuMt o8u4E885cPv~f @sO.K83H# ANER`^R2Y;nҋ-ˆ6wbl*tv{%\̩p JFV;N< d6`FJ>1nAf H;L-i5<#Ttǫ'nl"z0 ׹Yn cP%qU;5uA k9s=[وxw+S?Cqs)>L"Hcrǚ/z 1֐4BKU_<*7xk!BA`-jʹ.>Y( :{[CL+*^Ovi7P_ zV81a"ת[%,6ҥ)_rkȚ~޻G66^ex#7⇶:Ц@l낸'Zv{U^zJ#Bs(C}ղd0ѺioxfOI'E"DS{ Kw/)(Enc&zHEQZTô,CO*# @Ufq@xM<5$)_3x/Wm-xmzj6&|-LdW2y)gp2e֣wLH 6ȢSZjWm߄†VHc"ld[j+[М%4>~[ AZfۓH{*UWT`khB'¯}ʩaН,BpZ"8ݝAae>,*[?,ˁ0;-eƾ,LLCpt9Y'!#paOR 'w{~Dgobè)P췡38vim0PK{3C+BvGMQ$_yggօoXϴA:-8yv4@z7$ϜaF %qxT x]b-\^I(˶M>iHŢ˹H 9{yr:O 5zo4 `hG\˫dxc)E|=DW-k|KhQ ny~`P$($-U<~+99 W74Rlƨ0 ? bnJ$!Bi>։}4١E(z?&^Sn8],>kXpʠVyTD?!68BJUa';s|)@WOՋSFZC 7 nwrGl. r3Op.wᓸP&Ȋ 2[P3?ϵswИw ӼN-֦8{{f/[<~'3 *94լ<%XI ԭ5*`)@='ztHZhm L1f[*R&ZNM:pҎNl@&z_Ӽ=kLWpT.3 B GՃ&dW &3I T9KJ08ػ}PkFL(P3Edٞ0]HŜE,|'蓩9W(Md`-FhitxS[4g8}6Сc(chZ)KVA&NWoN:1Y/&Q;:oEed}dYF g8U߉ Uf1j{yEd6[ohB+E$3V}V Wbr;T\2^OrLKTk,3!ą>|4_5B>uك%p18N2jLcg6:#Msl{`,.L/} Vk5CMjP.`P!yhE_|izu=&*ɺJvsXNKm\9! Ga> U?*-ej=A.#i2d4@@Ԡcd#vt"Ŏ\938۪/ϝ ё֭)(*mbmm܆\-=W>BaR|2G54 4CB'_VGw)a`Г4֎fe5gNìc,O]d+>2?g+M}Њ5$A@sA\GvDH/]"e-6T쾤=>wyk<S*ps 5,~P*a!vMY %Obk6z̗P`Uᓎ-sBdH7x̟LM 8hsslf".֟ ̼[DIWFm.ݰb ijH8{eT{Mo1)lLgMĴadL o.G1@4o̾/Z׳ən@45ѭ0K=HʟdaTԘ!R#z5,*|<*Nb)2A ' ْW3'*؇5:R#8(*;ŮG،(>C.Vy=,3*O-Q%tFռ[}IE&i: ;JYsKuoUo[:_5#6~Ć!*슄yˡ6dutױūE4r gn9{y\62&r>>'s`cuOd3 \ ȣRoqJ}k 4[wvAlc$MZ˧ ,VٹxFϛ ~Lzdv~!Q(/r9MNu]J?+~#n9xrKI81: u7ǐv_1v:4ioWƚIRڈT !=Sen*h'brO< _G@o)û9ZΦq"k,΢޹: ϑvz«{v<դscח1e! ?yR8UFyv0Ev8S?sǣALn,;S/g s"CmBU.:5^Db:nNV2#n3yǘH|`-hnE*U#-l9_&I$YB$I=3ޏXG6A t{IS(FqikG4gxCj@̷9#Ex_C7YŊ*Iʭlql)rD 0FRL|H'J1CBt* !hԀI{%nxY8=-y2¦ gC 2[1Mewg%oI؀[1 0%hfՐ6OЛ^fCDS !#0uJiOAZԠ ,o6'h$2f#YU9y5"{,o.i4J$Poz5٬tamNx1G xS[f:pf7)ؙbe:y߀EJA΂ -.ئ04~0JxܙifVoj <T#e;۱߱^cfTAvkMbW{3\n1XlG:33OM T8! 0n{(6ai3b<'G<<wk'm6#VuvJbt'SUͻeXpq B0 bViQ|ܫM "!+w`oY.|-]ϥOcU]sju꥿&iJ%鵿xʶƒB/Gr=U!duwӠ}.fRyLS`ncZi B-$ H&]|fH^dq5J~01^;iIr1w ZtۢVnj]BgQZ]`]BqlDתH:v:|"8PUP9į6%_{Ex7b*>^3J1OFJK[YZ;=K:*X6Ǹ )/z^dͧH,iM# o¹g^ }+l Ujv3vL]F=h9n & [nwƈ)~uBe֚n"Tf0-:ssC+{^Q_PC lTtg 9J]Ir2E,2f 8I(8>/=]|J+oO~A@s=;x^L>Cr&5\@җ]d]4+D p4}:G/vԂP;pxvڪ 7<0]$d6c$@6ϹJz_w%QuwyNn44ig֣Vٶ?t`H ҷ405 9maHr[POT 0'e5y%vLA)cd0`zȋڄW ֓8:Q:" 1*=edd-A;sj4a9H,,?7NOT3. _)uu0}Gk)vsLzz\AP=G] 4|JIB:&P~Džy`OYf ¡ᇳvej&H 4 s .D^ش>SH{ l$c+jKdK|~E"<8d(HkzȦ(+ -QWTnKMzև/8MmV O|lj8^E&eO^ UJ`EZ9Tk@f&./8yYt9-";X` /D r.zXa~ncU7)gUD֥%ϙCc϶?A ]x=y_Z'_44|B9$u]*89S_*LIk7s5 (>(P@m@LQ}(J)w&>Nsu/!R_&k .ٿZ4܁b֑gCٹbMWjcIpq氕\ f"}t!uTt? M8(e@_:G>/T䷫sWg{ 5:omoܻwzհv~y^B#aa}ĉICbhɺc ڣ 5n&Ø* 8lb&hQ;OzDZ+X#\±mCncq,esK*̀Ɛ[zep5&'4^~&0Щ?.?BKpgh],|e=7_N|srq[¦Ev|J\"z#ʠLlcp]MA87:4@3J~[g( MVQ gh,kAn#QBZ^dF=dw5RB0|^ro jS{#`KBHz @b6Wy2S_e(zd+2HLnU^Lwz/q?g)0}VK^8n%eTg% #l%QmZ- ݽ-@ @ $r W^AdBd8q=k#s?/\xV EJ3'MOΨk{VTں<5mM$q*GŌj"U5!6?E,} j:%;{^a MaUG/蚐Hu -E.B"tHeDЯD$7KIP&g "Ri?e7@{R~ߧKϴCl59$L}DC@+QL9 $zXG?־ ?3]-jyP|`#yxvP2T ;Dm ~>y!3:n0tVge/|)\JVK`PEe S]Uj01)هFstܓOP}IfW- ?oJ pl-eW_RsjXydE:TXlv` CJ]!`*",=|>MQ=@oj >٪igSq!3*5fq,QETmnz .MAjkq[ ^qӁ6%L Y/fZc ӋRG{F%;=:C߮q {\^}*/:-bh)O^V %3 ](8 Q /^cSf>7u|3%=&5wӪU8hsVJz j{u:" E bFGW)3n4i=0n"2;l).㼯um2C;⌽ OWTDW>^l?&b^)TDX D y% [FfE BqÐ,g}7E!l]|T(x 8)s韈R40#C%9_Up?|h>t}쟲^R%tCF . ewMreȭ_HMam7\$#ľ_~}4^MZrL;RJ>">3k y@Gl: ?A͞Q0Dh?pb03lb>qi𑚆qm.hC:h8(aQE\eIz.#*S1B.tnR62݃vA,w8xo!^a_aԣev_/fEaKxa{ 6bO K87?bcu.LӉ} ,I~B%+IJ@, \Uth@7Kp3xJ( c _"}YST$"k$b~fJVPO@'"isV5"P6Dw%p|#5j ;qިSθD̘"I [h}3F?3+OBΤ9#jLGδ $#)%7ܕoʡHΞB݄l]+tDvBnTZ6|CBTp,!0;AGL3q2-%v|qgUV# wyfzz:ɲߦby]+wW;aacJD\H?Tˎ2~,dk|kRks4/[~uhGt e2*go3PǛ?:4UXqLOW_%2A4bA04ڄ{tw`r`(x ݽk\ᄟ (^h;Mgr "9Kk߉EOl5(4ޔe[g[Eq5"Zyޯ>IԠdf0oG=ut8Q3׿'Ma\T J;_e/e+;A୺OD@cG&"+if$=:FGV~Uk B&F z TՎKy Z|]yޓsz؅j*L'i gz:aYҩnSx;g6) -\r ӮV?>'$.neFAVedZO"JLiXJ G",W<оC`-B-#> ' OdT㓢M uU`9dGq>'53tWfb239] %!>ۜ3M㫏/}m={!%ZMYZ?`3!UMJ̡۱@<$f*H@ 9 n^Z`-IZyN6ıV'>,R͋C'-ۙiݘ"= 9`EdIĪ8]5qI]4M ] e܏COtՔ#7gJ ymnKVwHf2[.cgJϹz:0lԸd[Տ؉ΔboZ!僔+IY¦3[QvX@3rS-B&[?J0+x(IE)ݼu8)-{vN g@Q6%еg)HI9IT 'uE (zCML[VWsE0Ya3wG:B J sD]1wuY4>,TJp/\byFpd@f`V@#%1'a:`T:`* eF': ZePzJuSvh{pw NDA8<棒UEMICT;"v⺮PXky JHqGY0Jk:fv )5p&2JԊ*p6Cuo5օaM#'sC=>x~6,lVכfpvMus5:G5m>5<3P`M*w8;wNJh::۴atп~jrIw <.y~Ψfr|F'u怴tW.ACPhl턊 zCc ;Wb]7``sj\J[cy#l0ɢ_6d<GlEA}XWV|{uK09I( K$>eoY4XS(TMG>܁p.)8ȉxJ:+~IҼArdbVO^ ,ޫ)"3_`Yv)36- V^BPt8ÑD#.I1lkxzF}K]X+f޷&LLQܤf-p' $uζ l}-#>cTRR=;)Nf-9dߩ#4Mib @ [ܚb$Y1N÷zt-_6wU$qw3[W3)^hA#GZV/$+AY&([xc:~R'^Pi!WYFO\:6uHX2<{T򾒱V d+k2%ug(5ntj2Sug37 Pn8*뗄yؾ~ˆvk|01UmGɋXǪmI1s릒)PizaX99UXP#k1S~Bj/ &;;a#?ky`{댧Bg{.9jđ ѭD]!pc%dbqe |;e4m㊾m Y=Jp r{c)D3$.AؐIK,z S9g90}Nç;縋>Fv )wܳ?g[Ba EmhggRr3 ,-+OA )\\" >KP?޳.yNoK$5_{K*Ow`-hn?(9e9yA%"ɜ}q$@.޳xV"NN8 /CRKtY)+c8dT2'| ~oY?ʹb)4TFـkkQ7hm3{w$YkTP܎DT#]K-4|a>N+ԪbsG=S1%[{u`ZΤ I tw6B:T #B![Q)f[D?_LW v .hP qLZ@s4n/CXHp)0h^RRhM? ۙa Npw.Jo{DïaM 6VP,َZP٦îLH'0Er!,E;<ô0ϨinYuNDWqgH 8(\pw}cc̮ےvt44-yjm>W#KR冸AS5v8Xcu])TZ#wϊ1ҩ·/Q)mV5O1ysT3c#~naq8K|D1)ଟ2V2F%3RU]@I~WPj: s5eG%1vvzǒbgo KyuIi˰-znm@Sk|=nD@T<u%3/ Nh*h;H@7ų {wBo¾@rOn=#fZlKr>g}<9^Fn/Yh}Y,-ާ.DY#cԎ A(!4b -sBf'.[a-*Lqdˏ$D >T!οq!xY\w_\Ÿj+qR{װm#dkS7`}?Y6h:L$b|ps `yo*~Da:.5fJ%PнXzm.GAJw‘- #OzNǚeأd/YDoACd*+!}/q+SqP*XWY sֲ[]v# %b9e`I@W3a^]W4rKR.Xz-/zNHbAv,uJqrl5+(JQ`mh2(h'䘽,wvent O7l6Ѥ{>/e[/fk"ce{2G %7Ɣ5<%^B iP@bHꖽ[l:ēx"I:&rUw ӻtIc:.pN\)3Cs n/u ; =Sؾ\bY ]2908 A41Sh9)&4ḚD1pP*koOB9;,+{>IpSǺ[pyH;c/R=ĸ'TW9 &agUPބ2jB\ m!_n}ؼ+PS.oiuwmTu+A-`uGǙ: 1 !&a(ΩiqѳJ^9v!VĩހLZWRChAMvOavn;=avrdmY8PPINԳl.[_O{%s(9\@B' ^#z#""VO_ڇ?C9LmWgݵiqpSp)L VXY VRKNeߛyTMl7]zEfC zr{mV%7z;uua#s1; bQ6S1C[bl4 $`ns 2!;Z^}\S/]tXKIk^_Rf0jTek!>@,x{C(i2QFV~uukQ'l+$TxD =27гÌZ^9۰4H}|:#,ׯyStv  BGʽhEMc%55\wU{>f?<@>W+Y};AY0A i^K3h/]3_fA9D$ R..bC)N*&' 1K ez'ogQv%9c2%o@'G M(#Q¦J 3ھ\ُlg-ZH5V okr }Er>M=6ؿ]2ӓJM .GP ЩwoUв VhQ]q+kMG='Ly[,f;79+\%o:bܲ'::_uU~?c;yâ ;q 8"w~ďFFuFsq.wxT¶,I\[+¿k,G#"jZ?h; i v;?~tiY#Fzdq-"s{Q?o9m4P8>s:~^]72k_qf f=Heaьۘ?j~)Y}xH]/dB;j_*=ߔC xlC!jWvgb; r̀K}R,V"ԆE;H f$N(6RdþcCzIx*/ w}FI6&D-~X]{~nF3VVO*k6cȣ 2R?MYc;N 9djbeĞ^Du,нIzrKcڴr*ŒF%ІG:nYljS6#KHg JRSQ&㇡ռ%uTf n_IQۀ7܉#k{y:8َ;uwDfvýbN:5J8'|iB#鎑"w };~>:M˖sƨR${Y >*|ڤ}q} s@'0[Lmv>\pS2%|Ӿ_ 88WYmp'E a?lZcc~lD UɆY:hNQѹ Afel6E[2vJ;a"Yנ}(DψW$D6>D# HO"b  M-iy$ 2OZgԴ+&y_9Ehiek!AyTґ0grϡ|+}0B(o/.؀Ø\9sαgs>4ﳂsa8?XTTRJcJU3ܮ1U66}oALjؒ~鐳N3( XBڱAKI@uOo"wrm >؇T@$Bs'⢆}Jd9b@V,AOЪ3x };e;7upXSFd"9o)0ȎF3.\T;QdX,i " s͌؋Z(e'M ]|>W|-iՕ{<Ol K5HI138>Pw 1K{}2`DߥÁ xw^an邅lGa;Wrlh,5#u/[z×aSB헨V2 Bs8vMxhF_y%ZYt,t}]{zeǷ#+e P8xL˕Vjd6rx=WnLt8&TPac(&XCѓa>;ώG6ޱ*v'_cKv_+ypuL0n\7`5]}EgÐ˨5-k?Tl[lwi(quHaރ\Kw()3%q2©BʝR w|wh-=HFŪmA~lIH"TV_\;6tE^puPLo?I;/ 71#6S r[Jfi:f7Ԥ8æV6ܧ!#oa(VQԶ󘇮gn, ~iN[5nF81?R9s @k 80_89a(ug+o%:ɺWM"r\C/fJ'af1h6vet|UXY)@3d櫢I"PcKY+eW; 10.&.e/,ѳzgw'FmH]h<_ߵ[;dr0}qnLq ꆰT5@x/9 ׍ XR,!_~wܬCmHd LuG:9U.EK}pcGMY\"܏Jv֑S=c LY)ɋPL:y|@ etWXy(q=[\;@ 痥NGŃ W{Kϭ>tX53 h)42.wxSr<q[?"KpeoF@.N:=JHj =);agϨ &II !$,yLֵ9 v,<\#stT38(zP0?/ VXiEgIlθD5"\vbέf CHFSyne,;v@ / a`e@LwEJր r;s`xc  CH ·M-~?TeEA9\TJ?Hk)>`_AjHW,dB?%C,~\Pѐ$ $e\BԑlS"vs}ȧ7FYH٥803HvJt8&|_V}U=,Z7, 5yPwb f/3+iȘI̋G&t&@"I 5Fv^ )2)y%O ĽG3>o R.RBOIyU~y}Mlf}|K~](uJzl:zrcTY Ґgp6 _; 1P.jҥ Si~zy Ec Lj[ #];:17䙔䒷7Y.,/%]$P9`,6dK15_m+r6:Bc ̾!xcG1n)K?Cqrz}znؚ^Њ8x>~)_k,?!W4F[.m. Sŗe102ø kqNa'Jak8Ihtτ@z&B.iŎZ\l5(ZbSAs̲v'e{+H&Aq9>&miȟ&J'^6wY{%2ϩ^+l$.~6NKaNq,yPP&cGqBިђomtwgƄIB VB $8^ r]~/X-3hd?î|u#"ͻpc9D\{'ނVf͌j'{D6^}2`u#*`7,H+boMרd89W?3tL Y(_{BF5{CL:5/ |s>"qh%кrǩ c)^JoZ>y Gw| >(~fgǼGqLc9b 64ķZ#qM1Gg2kտnXo%jg壻*sw< tGL V,L#4Je4umlZ% ~aQvXUKر͘wY>íTgkhg&`Aq/:_B60 cB4rъTQNa Y5p¦+V˼4"`ofE3-bwu +\yyhe9'7c`%/o޳AV5k G?^YJ{]DPT>c>Θ}?lsoƛ!M2`\IC:gg(gۨS5[0Lx&uZپ#r(:i3(N"ç)<^<՛C5 ,;M`"i_Bn~ޱ`eohf-1CYNեl*kׁ%P:SѯG"%v[STAI;GYMXTrq t?fM(d*(^mBv Cl'.,%EMM*a!Hي/ˈ"iy/ZTsqJB=TƄjmķfҚ+],ezmיC]'< Hxwu(?ω:9h XK`N~ P,{2ΨQӽXf JUaqT@ `L)Fl,6i U>'35 H\}Ǒ aքm ‡~a:٢]Ku!OLM tn uJV6чY镩̊85۩^}_ ?T~e %DOi_Pә+ B(]\kRS@N؞GD0._g!T#ǵ0[1|yT3)v`j OJS}Rs v3qb1.i_AdgU#ʻ}\iZe=pm^&Eb!K)O,h^.(`B]m?9P%°-Oܔ6"!h/GΌ6h/Zh4DKfVkN淏;UܕFmu3L[\{Ddu?&vT"|F#F,c0l>{fh˝ =P3~]b . e!q&AZzLa\AƟ`yq/ϡ/p@SV|;J6;4ל:}(];uAzB.9S.g 75BҪ=K_F* An&(ȅu-\}xTxy $1Bdd^2J.YɃ&:vтk]hGh I fWCfU+ϞrCx!-Tk "RŻl1邻y"+fvt{4͖: i4ݼH%!`hט6qEYunI'79^CRrB.Ց&FTbx;fIT:`RYEߓBJRvCg71V&C*IPۍL|MM&c܋_Mt/b~aT 0 ?83)ẹ_,jznNz'Ho=EAҬe[^tcGޑ=8TX؟7Xl+2W+5ә=\I8Iibj—[yIr!u7vJъ=&_dRXD |Z{㯍{0hq3SX"QzuU@-P M}NۂAo|brׂ(N-S[ֹ\~.f#γoU~EWްMq&qmC r?`EAkO h~~9  RĄ[+i+{Xyq-\ǰQ52Ypȥ=9zq]xONI%"M|oMk:!>)/E2> 2Er*'ׄECLW {>C4*=cae{&M%{a]xH ~|s6ST`'0QT= ry-GܧD猚9zz Dž8*byJHW_D]:ʣ@a1GgPɭ zhbƈ_IouK*Jy+;'푥vP:PEkTаh־Wj0zzĠG(>Sh=08`zҦݨ$n~(|>l-N@Bw4ӵ+&vٝzaHr<0'TD&۟`R6AO͕vq06RAD:VKPmFrw[ */E,=,F)X Gf8AWG5u1wρڜ;1wOͤ+tnpԋ n6~Z}~?NI@RY/y^-dR:)XvHWHݚ F+FL es2ko}F p*Cɼȥb+ͱ )A kw- B[gnLrQI|Ֆ$w)JoggdfIv<ga΋D'Ű~N+Д[a m+,[p>5*AbzHthG*=y>U+`Eޓ7:4fr>ᨚQ&M hH>ے{Hph˂"['vAzFqRw[lTWBSE@WhܼXTVR3aR{0޶1v kr@8Ԍ]M^_NGi * xpWm hљ!!@ faL:_3'J e[32e)tK@g>Up oi @Za N$_6 eՉk_ڽUdW+FJ/j&s @ ;5/$$i!"}o^#?6qwLd5OFG>x>G.З|TVE6drYFA-ySkS\u^Q5Q gu s@3 ~?_Ye=@LǛ۱Q|{~,B$jnp׺V,WL憎,hU mLQȕ\#6z&As:(t*Pm䇜>eHTP8DDpf{2( LJ\hf ?Ĕp%Xͯ0f#:ao]3t#:;z/3;#/㉿[S&Y23pz%eEO$Ҫ!\7-3:5/:>GӔxyڭyN}DHndF45&-mlg\8 -j;0qՕ)Nj"sv|wT߭%T2SxuKw=B,'p/KM[CHű>@: :$<&F[uN9Dʖ $avd SU weMhɎ+Ȫ-`\|,| Չ݈=BdqX k|/iȎ}3DRLyˋk"$ Uu +O㐸$dSe>t#.rey ;u$ )ϒ]p&54KPg]vfu%8hp C\ᒉх$w䭖.Zp:}C^ŭrgM=o:>d ӱ0iǦD`Dub|OųGp荴gC`O]# /W|r6PNٝZk6q@XModSȁDG\RQMcw㿒#n!, (o~`.rh:gP:U.~ej7<]utMCS,H$ux\۵ $*nU&w ՠS| =ZA\<7 ]چЬ豌Ⱥ- 1B$aKּC%NJyEf?nW?PAe" 1 <1BP*NbN;KNuWBa\w\Nj@ UVHcՈo;w ^:*z'U Wt*m6{/t.7uWr G Rl{l{Iթ8?-:ϲGq~^KXBڄSe\ "!lBW#U<Ȟi7bWZK(y{\D4) .N3zKgw8 {^A‰W8y+FDڜ̂ktq{*{ [w߷#,k]tG #Jh$d%~1;s҅>` , nn6-ظ9 `E)x#H/ )A{B:SL_@Ǥ E緳hBuY7Q)^ᵤ]K탄JF3}'Jȿ#=G txd`E1p؄.C(& .OZ3͔P @=ɑ5OHl5c"nCgk~sN>_Pb~P"A$-k?smHGȄIYUt2}0Mj8>-qD;i rvQ3k_4mPk!Wk:uopJqzoP]{b >ǦLR6:Pc0k ѱ~g#_W+vYn-QSpS^:jgk*{ǂq~ '~7dO?G~y7{/QiEaE#^@.RM%(Y!X~;`)ϧ͠nC`­)5` [o|G#YJ.^{|'߿uطuT k]y&+|)ӌC~E2減ĈEQLK{yRP>OFhpX`Ɔ9Y-kw%ba\p)Fyv9'y-lm`a93NThu}hbc ?1U,zh9pK885 ㏷d Or';O0s@IzD&jdukGr7>'Du 9j}YnzHh*ʧC Sp{:#V&Ys41p! }!'1c4h~"E3A8Zz&%!%RC@$^6=ÆނGkS/3=P 齞-{D>}uڂuj)Fxt:XRh%9*\c 17&L_<3B HVo<.g5iFq]u=<UXϼw-4$rB/RH($oUиYy߲( ejxX?հi]ץc|H耜Ql _Q[ti1/ʍ2=&jrwDUfyBnŸL;[U6D|ۉ_)CB @^bԃ2_!:\'B[<'T' Z3B}/@˓ΆW~^ݮį Z/`>)S)r#3E^; ×lhhTR-0 s J;g!uئfFG9 ޕ(%jhF[eΗr(}+,rQTئXvĒhTu*}JǢ+ 1Ut 5ne>\tis%eᛅpx#q˒.:W= Hx H\S\ -ݍT/7j\P-NchKv*?yr;ؘc% |5fEl"mBhFu8BPR&eV"́,0Ȏ;!\[LJP8`!)b٠ 9'O,r}?c=$rè葩n 9E+َi=:3GN<~#X>E"JfpjL8GtBȃrֲ[ߜs't !>;(:Mcn LuvQRFCr3< o*SZ YsqMiLZ0kْqIT ps)1eA]K.$=bc"C6}E cAs$ .Y~x-b 4\\@ռn GE9by1Y?yXg{ykn]'O0o yki;=wZ˙:ӌ`BmweHiQ_Jh ۻ?U1 mXf1-^cJŻxRuv4 ie>$3AWE]#5تf1YOH\C\߶.kΡ-GֽEG8 H8L(r`Ѵԧ&)B_6xCs<`8(X BN.P "#lC^a7ny:49 JTI=3{TԔE#!=Źgi%ދ)oVdm%&%>42*-dLW:ks/ lj,aOO^TxVj@ X%!]6^k?᫂}{~'h6Ah՟0 mJv+{C4t/,## "va6 b7B$"0f,[i; Ъ;w hw$YqH>bô{q۲q͊J1;2'&=K@H~(deũ%ctu}+aV$\(jfm*) V;^|O=XX<_ Qe+-n 3ɶ-%p*[`űx-k`7'(Pa;(εz{z9& 7.a0cpZ#A$˔?ME0[R(꽿y;DmDNv:g4q(wE=`WEO7COvm @\u(a爅WEқ(p)}#॔e5h%9 =PU7u"[D(p1}麷3ͨ:bDqݹ5G$еў+t[$2# n(;Ci³ B ,!v>FڪkfgnxYy[k@&>lXg-mKxJ Fv<'"oz]gE-nK}s aHT Dғ$IQTX8{-2{SqEBvA(s|!(Mx{y7:3@ V$֣vr?A .RMtgqutƈXJ*2PKRfڌʃ~u}4̉zrɿOդ{ }4^&W8Xdʣ[RBu^}wezW L㒈gvYTXQ쇴)#9:1>#fGH HUHʰi.3-vSrp(E bܨf=",ԮY{C ZN֩9# y`0 k! Ձ{ YLc@"PҞҽߕOR>6xD;,כyPCL$.G,PGVIUڮ&!#0U{p_)Uf`g)ƒ\Jv]k KW1ϝB C{:5Jt\|o "!Pxyn=r қ|JB )@tvf+'Z%ҏWJʮઠʁȣlU%+39t&} >N+ݨz@զaЦT1AkRR xSSހ9 4,NSmUؗ%F .sTs_Bb=S4oi YfN%4B9 wR=)#$իbg/:sS+`FȈ/?1z c KQ2 mƭ^;v}v6$N֟Ð<kc,F^֕tç{NG*l|ᇳzƗkQ&ClB3+ ױK**`Ns|Ueww#&CXO[=6j땲j#'D׬$!WN>1 pߑlf<5@[AJe z9*K|,y"w1Y.m]zAyDp2j 1(İ5'Aw_ŵ'9R$Cc]Ta24'rY>]6AnBeI]f)^{OQqAɇY #ummi~jSceNB 6)5ྵծų/ڭUNGa$z#K`h ۻnAj*zyaQBf}Ne$R/qt']Ayι":JU&Sn>zp]UEܛMFfo^]7)S1)7amocФB‰~i&a: .9?mɢ>ZeXPCK>rKM"2FoaSI&ol-^9[.T8bQ_`xjܿ|`0 x^YoEո"LvN46/@pW˿^j&N _ВuܭI$H!@5/n[Zح"y)>pHjX=@| ^z&I=ΟtXCg HLJ/4tSf n뢯wN=y*}'S*9UX'<'c '[ ĮBc6.E!S^e^ڽi֮{F_-FR .ecݽ~Zic#pwass(aOdqY$| l«|ё28ZO7Yj+Ca"I'zB (#dj,$m{2I/`"mJs_Fvb]|1) Q:*햃oʖkGX2; jdMy414`,Yd 6=(LET3AѧjghzlY8ABhFAF HO~n3: TNγLiړy:Qe kҕhhYC+r!/+m+St!91f5bcu c?gwbjTlfJѠ .[N߶qNh =V&|lm_LWz:D}*V2n L0:ۢ 7~xjT쨖1|[IEgjטt8+l+*9.웩u4;\iN&nMs6`ڠn/(۞(Ze'Cwդ,t+7'yq(iʄdY H`z/PM1vyuK ޱ"B'I3e E*R47Pb:U㞡3$&BIAқ9ɣ5qB.!u s01NP .l@ALV6si̻v#C/4̋f( 9̻4T,q=@r3@^ڠ{ HثYPǓ1JEUTe@Uy&<`A e;+fq!c?up<X%JH9UX:m/gi.l `v*FX9885V4yټZ*JZdekw5"2oʅ#~nIi@jX.Σis~YNyLngCH~&< $U SVx2 &Wl;pl+_}5 UF7+=!1HC2YFQ1qeC6ueDڥ퉐B :ؒsK~'U/cdO4k&][WZD-B*,`ٕ># k E-kW*_Egc4f}3NuLYE$,Tu0ѯ^FE+AW13Q <,zT4 DC2سj%v @Q=JjӉDxtΕ,<3 $x߻Ly,^RIaM?5Cgsw.|jKZYAd,VG Y"T;M:;T3۵qFM-8=sMݤf[Eet<[L e$sp&l7i{y:펲7_O"B{UɵK 0pb/7 Z6 !W5.!bX.Lru ,`gSۀQO?XFK/…:qb]K-K$]T/*7PPJ* a/\O5r{({ xgFf>M*L:H5LJd*[j~~BJ#a Ri^0˪v;QHC=#/jF+ױ;W*}X/>2tKt1D=cEڔA:xقw[dҟt>5YC~G+di0 RbE )+2Ui ~--Ol (nGcf]mJZҸ^(d6UE:e2Z NֱߦTo # qfO%vwo5]lCQ;#dh2E_͗5dR7F@ |Ҷ]n)3/SϬJH /+W>T Ri )Z>0M&6C[%tӵTyj=2gRmcͨ:9)M/p,)MhǠ((1l~ԙ谫ZsZRW$)˥ӱۿd"FGaMsq?(i^ks%A!I ƴ).4MՁ xJVK=˪WzcМT=n\pޔ߁(ʜ#^8 RcXٓC8N#cMuv%OAcRm6q!&la3R`^u,ο1*pL͵MKd8҃H0QFO|(@Kͺ7D):ͲpPN/2)Hm"h~/Ʊ.iu¡cw@]J*96ur¹)ml 7l6vt]:-@-L7˔d\K|@dzϚ m펹a5~\ۤ,jP|#[eWy1pEʥW=OEL \w(mjN)#Lъ r\g6o[+a8JAh$'UFF}% 8D>RjJ ҥF݌@,FB2|_7\FC=* Lyd x[υT|F6MhfwB֎tkf+!څgg]m)Wjyd36oç1ƂhXs@HTW=~ײ)7EMǹ,c(3n҆yC\rPu^W]9hP˴/n,D%3B]@S} q66YxLG32džS-|:#^Yc-5nEn_+KOy ~lvuk)cACK}纠pwuΡuph& WڂK#]L(_"# r r(B"SQ̿DD%cNJ#Ļ4kOc| f. H]Rq}a-Sp`M 믟;lYөpy\ۄ»)F1 &5H},Wp U'K-|oUڒ7h2/ P˟ϯݭ) JG<;s[ôP:j b?)٪7;ߜ Un`&cxfR[v >6g͔('*'d[N݈< knTІ%<٨j8{?˧xY d?A4>@/TkiYhmdOx,̃lZV=%@`)!͞\EyI󯔢B6}B:?pK.X0]X":6dtBcEHny4$aGN/ŸjDlu$UG^ zl~{Lc#TUv{;&S9}Y ˆΣNcb%LxWC Rowqw`V"ը٪ 0"*[>[ˡ@m=`@67%"@T AFe)8Mh/5/yά?0+$l$vMhiJ-0ך,V!@Jtޅ}[N9iyOgZ#Rg|=ҠDwg:۹EYX{ȳ*4իOAo^NV,RZSu#;9/]'i&#)-br|  ł+jC轣$FO!]t.ۋüZ YVU?0E*J/?4?L,EhELx;Y78uƱx,_dG Ӂg8u!өnDqdP/01ܘ2G.rs@Hvɍدzm,G"C%FuXq0`(2HvcLГ_Y.gjDqJ$ =^3=pOzOw ~.eܞzܽbB ӥ+iQ~CFwҺo$y[\`0/7d(̰8M9%UX_iWԢivUjI/QQ$@ RrAE| Yi7 ϩZK7c?R(?j&V&0.dzh6(F XɆ@䃞sj`QH_윽΢3Ě]GQg#Eyf'°yy+1XY|).e2ei4>}'Lg6@3@i>XmkyDH fð Ǝw43Ila˗@=%Q}eEe53L|[NЬi%z@˸@u |Y~$t |Ҩ̃ҭکRZUkJgά>2?9TTC'60"ioh)M2o ːR&^nz\h^7*:APz,HVGbF A>ͳfvTo"@nO<y; 6I8D̮ɤ?`~7 Aҧ<ʏYպmYBnxhk]h@pSk"hhRr?[ S/"k>Ť]T,jq@ ZW&XP#zpFmxO`Rf p`\PL``\:!˒*HCU.iI:PRQ21ݠ2,;;fY51,-%5ń"Wk5K]抵Xrv<56-YtɕL;kbM^iBZ`9(?IceP!?+\|mg UDWL0n?d @_2W>ѽ:l H«5NnK2Ln1ؙϛvj3U2j@k l/+jiwؽ6zqc=Cv5*2N ܴ:*(S_i9q@A*ü?ˠiM=fv@5 +Z£mgNᆺrϭ4O)$?rCk1ñ⌸غ,a|xG*&f\R7NP(W> Z~NR`l+5%&Jޡ'L8Hp z[4)ƣ*d^1HC,OLpJQ՛AMZch}94qH^Z 34@IKr#Y|vxlG\<uvڌ>XU}=4[6"y!vj}9_ݪT]7m|F;'ٵmL$#;CW dkmG`MK'r|FomJd YW#NjI4K9]5XHBJ9K`GテDqm9cB`M.L fU01GaZʜ ,hAvƜmpI"ذۅKۀwox Pe#MdžGJPb]8ˀ-8kKcX3 `ImAK"{4ߪ=#xnch;x}b|y^,W2? 3V\8:vf{T~+ ĺZ0AzK^aʱ Ay_SߣO~>.!]a^?^?wmPI' ٪=Z TOk|ZB c+WG0H6xm`'{>m֔^ SɑAJH_c*b~k_\o|2M{ȭ@?iUeT*cGJ/Fv.?`Ȋ7WFY1TȊP%ʧA}s +lIL[7~|'ù_qΕm :C`thGmޣ^nd8޲p}h5BH{Aj0Ua TV[`Lz/YE5b+\EVB=*ubC,8vl!-)'"2&-c@+ˈ.`"9%q|yTwhiIW,K0#|EWP2Xh@h"Ixdc-2G] yFJ8L\ ZNme߮r[9d֪$G>9jы %Q"o*Ru#,n֤ph*Zt=^R}d0|\dBL[lh*&+8eTg MASr8. e${^Fcrmi_{R[ܱTq(X <4mIɛdQGصӗ,FvWXPk0:d))p;ʲo }:ݣ}%MQڔH,hӞC{ıa[|neA·\Y ͫHTx>{%4rUTM 7,{ RM%wbW1>>Tڊaċ+|^]7P031cHߝN;ǰ:;1BR(3\ȭXwVT*<#g :[d6 Flۈ)#Dΐ!H&;ME^yBx_k4 -pԜs(Ted{ 4|;8Z{FJт24ۡ:@C}tbN` F6S3LYW fdVkV>/g4?VE,Xg!} y\ tn{t-aW+)ޑob),7$4\me}fytӂ=Ԕ# d*N@2:@G -溦jbmhc~LڢR*E+պl zUl ]'X1gJr)kێ{-eWuCoPJ^wƈ#Y(0ڧ {ڠwH ٶK^T,f1Tu4hO)8vv`yIf9Hl_E8<(d{r?NjE+JPM^:1hseE Q|>ۼah@+h6dsRO?ހJCSJIe(L9lCrC .{ FA%Hjs#rV:7 _+"lx4h n(E ԅ4nRЂHI[_w?Z!C,ҿ%Ht8x*ntZ!Mf_څ4*+4όja-[4_ׅx "v"݉f0e\[NI#5[Y{Hj b Uy%{*7]u TD9c֥s.AfbxҠ {ɳF&@L"1<^"aJ"{*H|LjO(,XcY׼Fu˂z[]0vhcJpnrȭ8Ȃ6SIΊ^ƖUCD_Sz|*e͚#_b M]z_jDyh/:oeү R4H:DgQz2Pwމ'2Hr[G#!3$12oJ@e$J{EA>@֏8^Am/߭Uw |Akq-1B }`ddvjW3 !'S'w]dJ(0җC>7Blue:0FQrSˉLEdstF}jI(aIXtJ|w~0Y3@ j\`{tiGoӀ2pkٹ wfa|?7yj{D85LޡĽ:EYh3Nc2תy/h+z>^¤:M>xx_d°?"- moө8gW$#nBFQPQxeбx[Q&ٛMj-O@&R}p7XoЯ e/s=GWw') 5²sFUe$g;_a_ b8^p &fyyN6)$`ΎļzKSUJn@;>>MiecZ%zi@Qưv1 nͯ̆"q漗#+轝KW7ʽ C=_`PdRM=t(dse_E_@.ͅIR =:~dO*>3fƩRҙwnu^)=)niVjcN&qS[hٕ*{p#}h* g+7}t=*ra2z':S"Π~P 䤶"&ﭜ<0SUP=Yc,oԽӝJiR#UO,B"ӄ2C)311ƬM Lg:xl k/Y3ű+!hJsRo'D4a;2x/ɐ +]@L+tv\gpxy0I !X(/x%3Q<#PȒU}rF8`EMf/ˬhjxs{VB|8ty0yVuJdكRPsܚdN\s3iS=?Z O-ujp)9M|*&臷Gwq"1.mZD/ ?N6Ajm'pә.JOQ<7eLJ< iW /3.H/b:eQM;]ĺgANU2uhy}mΨq(~)A$8=47fр[sN\hsM*) OڢΦn&7U5q]S)GmsemNc x$AKч_N_ʃdQ,H24?3K/sY] kg7=?1⭨B;ÇY0P;J._ DAS{8iHcX[U9!@82[U: ]][5ƅnӔX|2lnRQ@,㷹 9EW XzQIm.>r%hrKᒣPʴ`}ь:ccpAEܩo ^wq;I=|ac7g20':d$v82C0{'c| 3!h{6[R?-F1qzNH| tiaum.)oV^Ti,=s͑0IWXz&pS0F?Z֌w찺aEsxw˹P|5-ρ}i=wQ:JP #?}DH^I)W(?੽̒19+rpW[;!"^U3@3^V)8/twŽIB6wf,- 64E~&u:n nn{ CÐY%*wF` 06$&%]K{ .i˟–7g tm[G =lOz-q"_ģ%?!<_d1PH={߽$Z`V>dn0ՎV@K&$_~{QKj/TBͻyޖYU/t^ ~~7puuXmSIa=-T0AKՖ̶Z\ mJ?HtЏP. 5fP fDtXH}jOcM8Ajq@ sxxRnsʆPǦ0%ls,dnt8~6>^c`nd^ N/3֬ s'( C55࿙[Ym8`b^gvr ~ M߾Z]Fêݤ%>? rN?뇽8[V__@O>3iHpoxp|0&hԉj04R+F/BT6fZmjc.'rNEt?|vI<&=}g8B<ԹLhi|۾$9^B!vab{"eBM\j,uHv[S(!ܪ<~na gB{±0E3Xr5[5줣Zb@1#[HFJ-c2rڪbfU!3}nȳ/LsRK"{pA+|uԆ#@ 66o;|k[375Cq/;i`bj 6eؓR/ݰ(hrU{DlM"Ė8;_P<*6F\*b(bI`,Ewz! 4'I:g ӎ@i~_3¦ Psԩm1?]ɓ-ϗuӛGq7)%/'K$,x8Vau^(W %liȗ't\k]sz G6`wX¾= ax $ l /2$v7Pi4\ޚ\%%XC qY5! 6i'|1ʡzFO#Q}PTFR)8Vm6e񕱜 QO49s,n$4pCbXx+X4a4GE`qǕT25е D%'8!ͳM1:GbTzڄb6z뼫g8pU' ’ƶ5yf%bs$qR G^(:G|/3 XDwA>-̴ؐ ύ2jQgW~=!! (XD`Q T+t<:Bvqǖ6ɷWh ٹ)BsWsKQtzqFe*pG)X5^xl2rWAogIb%Pte:Z("hv(s@yD J<]] B,pOk]FSG=)be`d0/NE!jS̔bÎ]N~˜.r-u6)~i((v]\zoBV ]$KsZAS'Ԍ?ǺX!:tvE-C6j!IXOT$4)ӟΤ%0eZ7A;4A)r^mےdבдP;;#7zڅGfB/^-c&Z U;DӻSATѷVC{sÜ)$bOV\r螇G_N2 ʶSv-ˆGc< 3M jvb&m[[oٟ4jY=҅六HIT5ϓ~J_w #c41G0[`Q"z竡&Ki/wCe+,3F cRV w5 85VIl[Lfev$ J*־F_ 6KнE4Kj?W^9jnD?1]I>ŽQipM|-AS}>P$i"j(3e4awvSu~k㙑(3fC2䈒SG1n0Cޡ/=?t*Pf{Ơ~0>v,E%ZuNB# d(<'Ucc%tJ-И .jҦtDi'ZLnd>[|=E}V zXSWW3'*HZnZsbM'NVWO7C)Nuw,ԅO`ϴBqCNvjgᐩoE}'%k@mVNςkeD۟Ă:'le!Ԋ꺐e+ 䟶cן Uɵr Β6TSOzljH6(*P+#!:ԇ0% ' ].Qjz˷cqֆIsծSg:@K@Ԋx!A6S$Yl,9lxsll+[T"JrF45,s{.U<X؋u3ӡsqz$|ʄyvS>ϖ7ޘkT4^viÅ0fb7p'6jkM|#4iUT/$Fp!8A&‚>[@Ά>Evtۇ^3nizv>~vSDH[zV%!? ݯO/.@b 1ҤDtIiw -͇/j"i{cɾGt:Vxyjo6(`ǐƄV-:^Cx*,xSpcׅy8sHrlּ"($JGPaV.RA<7BV RktkAgdu稆A }u ɭ.сnK|5vXfqpĀ.wUXP'eQV͊TmIl5Q~![iHoT2 <) r;V-V1Xs0?.aj&_舄,G_'x V]81 vJ 629!$:-. Ct j~ ;yn_lo}f-6be$v 'H%+dɲ \,xBDh8Z,TB;<< ۬N Qt8Lq5;0u^kpAWJċDF}BKԄQ;EQوy~*9*]}!$ gyu &tM5 KOMӐǃ; #n>Y pɚBؒɸH(ylؗT"T U^5_'q$ AyKϖW)K @Ck#/]:~DXD! "fԉwzTո_SO`-Y3|o "lnj3x il& b E _|pPCvU&[ 0E8kYt!' ricnNCW[ 4k;T?SY9}`@a!uô u /:i b yuMArrA [G;'\R_n+2; NK ǺkDHn?V^9KhDmB !9[]Df豋n(8<'fRi7nN rcA\(֕ 9ND! sħj&,B% DD*0vL>Vhg@McDUC5?^ PYdWS mZ5+81vKbLF;P5==gG5c&ZtC]+*C["ȝ熙4džگmXu` icn[ӵ<ږRx g]sC!րQM\;Jar9clq'C/П% ucH˨+n{I@cIT3AwXH5_[c}f5ga]ǵU*[U/XiE\`'2Op>ȣ^a[StE۔q$ IbЮ'4b\|Q+ky:Wc,)юchŒX@z{o]*em#Q):EߌAoErI{~dwqM`/e"VHWmX󾇊r2ga`1UG%6v+(;&~X!mv,,Ɉ3lKʚhU7ǽmyAEPTQ)@WoK1iF 2VEiv5c?^1ݲigU2dxV ^ks;w+ V첋bW-Y(tEmWorVy*@K돃X %Rqzdz%Q-Gh$.40r( iབ*|lzcI m?` x2 O3*xi6wA#EȲc)tR OF_㋴iJ8f{J㢜!L%*yo< q슛z7Bk(q-KشyOAN YGƻfcBoCu;BD:x1h7S\3&ׇwjT4Ѽe-X+e1yKM kXP)HE3L̈́@wi- QxX@M>(O{ )vX#*sٿ]u-J wG[7ՃyW׃yiL.bϘoB)Rm_VQ>t?$^,,0+`gpܡ=Lhvs%?IQ~,W xi 7C)im=bTxA`eDZѠ4,ذJwy?+rB +I4paEeڷ]pzNOqUYD%t0~,3 @ vYm,mU9~hixH|K:e~fx"^hAe=> 4Yl /La|A}?Zv@yvo3lcB/۷bm&t{3k F>)Fu2 v?W|0l,q* Wg [nGM0fo6?+w+lNm ݓه 8+9laHY7}%hFC6}- Jؓz/Wge_JdpɌ[w!%긌/ZNw/Ɨr&Q۠5̫zX ]Db(5`yUQ\lǭ2 { brYGO|t@u+S䖈k5O8Q݋OYD]\}66Hlk-_=ve% `8LR>f%tww|M'wTM+ŀ4e zj2>_˫˷.uQ30.X0-S@),`:D#-r$.Jh8 BPsg͋ڡ<Ԥм\ʻN.% `+4b=lYh^!ؔ"Gp^u֌jVVAr㔢++0sS^I^1::H `rݚx`Dw]pjVԋ8Wpͱ﵍F{FkK{ǘ Y nEe){D6O'x) P%'CޓJvqڝ`7/k~m"& &ޭ,cE1CTpYFGBVGxBOz[P лZv+HCUЦX57nW4<5mWBvKF98L#(Y™ְ<v Z]zol9`AdK,{᛽h5q#KY|T_^*Ιu4彬/ )VqMy#a4Bm0([b&*Eec:he2E.!$-gV>^P*n~sij >xxUߨSL4}Hv7c%,g =ocxpReC2kF3`q%L{d;/9)%#[ų]w<._qX^sBy#~ @1qwA%F'jᜮo"qʊ5:Ws+qn:tw@ckܤ(Y;\j}( \L?̢9 m.su Y5!hԞl߮ 04X*$$=6f#j!Po4X A^<;jA`+xwY8@e'-x z-;Vn) B$E)TDsT4u>;($i6斔>01Κhj0\bS_ ʠ6<jp=>4ԸY2S:L~/WmZoa ӷx!͎1]SFŋ_;7dG&`λI In؍)s]eە.4m7o|!(˃qg9Lx9}L\mG980։ʠHjԼ] 7cg3=|.ryiV{" ,KΐE'4)Y06 *U L4TO%Z L|ruRr+|LZ{+nWwc5L׋KcKNΈQlchk1}|.>^"Љ q=3)YN bLhuTZ i\kGw.ٽcTxG*4+..T$Z>Q)g44&82sH _MWK%hb}RLnK }P[y)lvG7fp?$GyusX}=jpr1yЕ ힲMѡhtULMJ*IzrBpY6pg/H) ڐ|8C }aAL{0_igY~]]vQʼn0pL B5G181gξ>6Ķ7S!jl+CŢ֍fS 23B20cF PDPǁM#߀{[G ƚ&@cC0>]F 04xߘ45INPNs@nej_H9QyEEUbȄ=BlgE)a2|C!kոO%iuؤ"D~H3q}D%vԼp_UMPVҗw0 Tco'L'(i`@`o7<b:+l!`odYy ,m2_[ Q0 S.@ קV2l82klA,n0BPG @D\'eh3QWny5bj,$e| 7)u׳HwOk؈JgFRJ>ŭ Oa4XMF7QEHtIx \7.Z]p #G+#|K5ǶÂ(щa'PSOl&*1=A"z̷Bg`"H[xܜ 1Wl ýG'}er+,um7A0 K|9l_e6ʭ#c rZ!|'ÎbW= - ;A^.:I6ci }lf414khg9YHEW=UovjVv@9ua -;]"~PS .W1y^2{K/{S=S~w9N DIyW ĸFDm@ݵnXM?-R%ܗBNfuz DkS< +]<_cabictƺ|$k5th"c)ylt-2a;EkVj<#4aWb{>wҟQnL,M^Xv{%J]Fc zLJπeVBg9C;$j|7QQ.S<ω<_#X+#L&@y*_jaDW('FkWʞ4o5=-mGc vfk_{R<2r$*U(6br+<= d--Yf &fxixm˕ώnt"zKuMԸJS=(2Y~-$Z+jH)8