From 623bbce2cd7412a21770d62ff1f1512719e8972a Mon Sep 17 00:00:00 2001
From: ldfrancis
@@ -55,6 +57,7 @@ Several examples of system implementations can be viewed [here][Systems]. Mava shares much of the design philosophy of Acme for the same reason: to allow a high level of composability for novel research (i.e. building new systems) as well as making it possible to scale systems in a simple way, using the same underlying multi-agent RL system code. Mava uses [Launchpad](launchpad) for creating distributed programs. In Mava, the system executor (which is responsible for data collection) is distributed across multiple processes each with a copy of the environment. Each process collects and stores data which the Trainer uses to update the parameters of all the actor networks used within each executor. This approach to distributed system training is illustrated on the right in the figure above. ✋ **NOTE: In the near future, Mava aims to support additional training setups, e.g. distributed training using multiple trainers to support Bayesian optimisation or population based training (PBT).** ## Getting Started + We have a [Quickstart notebook][quickstart] that can be used to quickly create and train your first Multi-Agent System. For more information on how to use Mava, please view our [usage section](#usage). ## Supported Environments @@ -62,44 +65,44 @@ We have a [Quickstart notebook][quickstart] that can be used to quickly create a A given multi-agent system interacts with its environment via an `EnvironmentLoop`. This loop takes as input a `system` instance and a multi-agent `environment` instance which implements the [DeepMind Environment API][dm_env]. Mava currently supports multi-agent environment loops and environment wrappers for the following environments and environment suites: -* [PettingZoo][pettingzoo] -* [SMAC][smac] -* [Flatland][flatland] -* [2D RoboCup][robocup] -* [OpenSpiel][openspiel] - +- [PettingZoo][pettingzoo] +- [SMAC][smac] +- [Flatland][flatland] +- [2D RoboCup][robocup] +- [OpenSpiel][openspiel] +- [Melting pot][meltingpot] For details on how to add your own environment, see [here](https://github.com/instadeepai/Mava/blob/develop/mava/wrappers/README.md). -| | | | -|:---:|:---:|:---:| -|MAD4PG on PettingZoo's Multi-Walker environment. | VDN on the SMAC 3m map.| MADQN on Flatland. | +| | | | +| :-----------------------------------------------------------: | :-------------------------------------------------------: | :------------------------------------: | +| MAD4PG on PettingZoo's Multi-Walker environment. | VDN on the SMAC 3m map. | MADQN on Flatland. | -| | -|:---:| -|MAD4PG on the 2D RoboCup environment using 6 executors.| +| | | +| :-----------------------------------------------------------: | :---------------------------------------------------------------------------: | +| MAD4PG on the 2D RoboCup environment using 6 executors. | MADQN on a melting pot clean up scenario | ## System Implementations -Mava includes several system implementations. Below we list these together with an indication of the maturity of the system using the following keys: 🟩 -- Tested and working well, 🟨 -- Running and training on simple environments, but not extensively tested and 🟥 -- Implemented but untested and yet to show clear signs of stable training. - -* 🟩 - Multi-Agent Deep Q-Networks (MADQN). -* 🟩 - Multi-Agent Deep Deterministic Policy Gradient (MADDPG). -* 🟩 - Multi-Agent Distributed Distributional Deep Deterministic Policy Gradient (MAD4PG). -* 🟨 - Differentiable Inter-Agent Learning (DIAL). -* 🟨 - Multi-Agent Proximal Policy Optimisation (MAPPO). -* 🟨 - Value Decomposition Networks (VDN). -* 🟥 - Monotonic value function factorisation (QMIX). - -| **Name** | **Recurrent** | **Continuous** | **Discrete** | **Centralised training** | **Communication** | **Multi Processing** | -| ------------------- | ------------------ | ------------------ | ------------------ | ------------------- | ------------------ | ------------------- | -| MADQN | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| DIAL | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| MADDPG | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | -| MAD4PG | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | -| MAPPO | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | -| VDN | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | -| QMIX | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | +Mava includes several system implementations. Below we list these together with an indication of the maturity of the system using the following keys: 🟩 -- Tested and working well, 🟨 -- Running and training on simple environments, but not extensively tested and 🟥 -- Implemented but untested and yet to show clear signs of stable training. + +- 🟩 - Multi-Agent Deep Q-Networks (MADQN). +- 🟩 - Multi-Agent Deep Deterministic Policy Gradient (MADDPG). +- 🟩 - Multi-Agent Distributed Distributional Deep Deterministic Policy Gradient (MAD4PG). +- 🟨 - Differentiable Inter-Agent Learning (DIAL). +- 🟨 - Multi-Agent Proximal Policy Optimisation (MAPPO). +- 🟨 - Value Decomposition Networks (VDN). +- 🟥 - Monotonic value function factorisation (QMIX). + +| **Name** | **Recurrent** | **Continuous** | **Discrete** | **Centralised training** | **Communication** | **Multi Processing** | +| -------- | ------------------ | ------------------ | ------------------ | ------------------------ | ------------------ | -------------------- | +| MADQN | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| DIAL | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| MADDPG | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | +| MAD4PG | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | +| MAPPO | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | +| VDN | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | +| QMIX | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | As we develop Mava further, we aim to have all systems well tested on a wide variety of environments. @@ -169,89 +172,108 @@ All modules in Mava aim to work in this way. We have tested `mava` on Python 3.7, 3.8 and 3.9. ### Docker (**Recommended**) + #### Using pre-built images + You can pull & run the latest pre-built images from our [DockerHub](https://hub.docker.com/repository/docker/instadeepct/mava) by specifying the docker image and example/file you want to run. For example, this will pull the latest mava tensorflow core image and run the `examples/debugging/simple_spread/feedforward/decentralised/run_maddpg.py` example: + ``` docker run --gpus all -it --rm -v $(pwd):/home/app/mava -w /home/app/mava instadeepct/mava:tf-core-latest python examples/debugging/simple_spread/feedforward/decentralised/run_maddpg.py --base_dir /home/app/mava/logs/ ``` + - For windows, replace `$(pwd)` with `$(curdir)`. - You can replace the example with your custom python file. + #### Building the image yourself 1. Build the correct docker image using the `make` command: - For Windows, before the docker image build, we recommend to first install the package manager [chocolatey](https://chocolatey.org/install) and run (to install make): - ```bash - choco install make - ``` + For Windows, before the docker image build, we recommend to first install the package manager [chocolatey](https://chocolatey.org/install) and run (to install make): - 1.1 Only Mava core: - ```bash - make build - ``` + ```bash + choco install make + ``` - 1.2 For **optional** environments: - - PettingZoo: - ``` - make build version=pz - ``` + 1.1 Only Mava core: - - SMAC: The StarCraft Multi-Agent Challenge Environments : + ```bash + make build + ``` - Install StarCraft II using a bash script, which is a slightly modified version of the script found [here][pymarl]: - ``` - ./bash_scripts/install_sc2.sh - ``` - Build Image - ``` - make build version=sc2 - ``` + 1.2 For **optional** environments: - - Flatland: - ``` - make build version=flatland - ``` - - 2D RoboCup environment - ``` - make build version=robocup - ``` - - Openspiel - ``` - make build version=openspiel - ``` - - MeltingPot - - ```bash - make build version=meltingpot - ``` - - To allow for agent recordings, where agents evaluations are recorded and these recordings are stored in a `/recordings` folder: - ``` - make build version=[] record=true - ``` + - PettingZoo: + + ``` + make build version=pz + ``` + + - SMAC: The StarCraft Multi-Agent Challenge Environments : + + Install StarCraft II using a bash script, which is a slightly modified version of the script found [here][pymarl]: + + ``` + ./bash_scripts/install_sc2.sh + ``` + + Build Image + + ``` + make build version=sc2 + ``` + + - Flatland: + ``` + make build version=flatland + ``` + - 2D RoboCup environment + ``` + make build version=robocup + ``` + - Openspiel + ``` + make build version=openspiel + ``` + - MeltingPot + + ```bash + make build version=meltingpot + ``` + + To allow for agent recordings, where agents evaluations are recorded and these recordings are stored in a `/recordings` folder: + + ``` + make build version=[] record=true + ``` 2. Run an example: - ```bash - make run example=dir/to/example/example.py - ``` - For example, `make run example=examples/petting_zoo/sisl/multiwalker/feedforward/decentralised/run_mad4pg.py`. - Alternatively, run bash inside a docker container with mava installed, `make bash`, and from there examples can be run as follows: `python dir/to/example/example.py`. + ```bash + make run example=dir/to/example/example.py + ``` - To run an example with tensorboard viewing enabled, you can run - ```bash - make run-tensorboard example=dir/to/example/example.py - ``` - and navigate to `http://127.0.0.1:6006/`. + For example, `make run example=examples/petting_zoo/sisl/multiwalker/feedforward/decentralised/run_mad4pg.py`. - To run an example where agents are recorded (**ensure you built the image with `record=true`**): - ``` - make run-record example=dir/to/example/example.py - ``` - Where example, is an example with recording available e.g. `examples/debugging/simple_spread/feedforward/decentralised/run_maddpg_record.py`. + Alternatively, run bash inside a docker container with mava installed, `make bash`, and from there examples can be run as follows: `python dir/to/example/example.py`. + + To run an example with tensorboard viewing enabled, you can run + + ```bash + make run-tensorboard example=dir/to/example/example.py + ``` + + and navigate to `http://127.0.0.1:6006/`. + + To run an example where agents are recorded (**ensure you built the image with `record=true`**): + + ``` + make run-record example=dir/to/example/example.py + ``` + + Where example, is an example with recording available e.g. `examples/debugging/simple_spread/feedforward/decentralised/run_maddpg_record.py`. ### Python virtual environment @@ -265,7 +287,7 @@ docker run --gpus all -it --rm -v $(pwd):/home/app/mava -w /home/app/mava insta pip install --upgrade pip setuptools ``` - 1.1 To install the core libraries, including [Reverb](https://github.com/deepmind/reverb) - our storage dataset , Tensorflow and [Launchpad](https://github.com/deepmind/launchpad) - for distributed agent support : + 1.1 To install the core libraries, including [Reverb](https://github.com/deepmind/reverb) - our storage dataset , Tensorflow and [Launchpad](https://github.com/deepmind/launchpad) - for distributed agent support : - Install swig for box2d: @@ -274,6 +296,7 @@ docker run --gpus all -it --rm -v $(pwd):/home/app/mava -w /home/app/mava insta ``` - Install core dependencies: + ```bash pip install id-mava[tf,reverb,launchpad] ``` @@ -285,54 +308,61 @@ docker run --gpus all -it --rm -v $(pwd):/home/app/mava -w /home/app/mava insta ``` 1.2 For **optional** environments: + - PettingZoo: - ``` - pip install id-mava[pz] - ``` + ``` + pip install id-mava[pz] + ``` - Flatland: - ``` - pip install id-mava[flatland] - ``` + ``` + pip install id-mava[flatland] + ``` - Openspiel: - ``` - pip install id-mava[open_spiel] - ``` + ``` + pip install id-mava[open_spiel] + ``` - 2D RoboCup environment: - A local install has only been tested using the Ubuntu 18.04 operating system. - The installation can be performed by running the RoboCup bash script while inside the Mava - python virtual environment. + A local install has only been tested using the Ubuntu 18.04 operating system. + The installation can be performed by running the RoboCup bash script while inside the Mava + python virtual environment. - ```bash - ./bash_scripts/install_robocup.sh - ``` + ```bash + ./bash_scripts/install_robocup.sh + ``` - StarCraft II: - First install StarCraft II - ```bash - ./bash_scripts/install_sc2.sh - ``` - Then set SC2PATH to the location of 3rdparty/StarCraftII, e.g. : - ``` - export SC2PATH="/home/Documents/Code/Mava/3rdparty/StarCraftII" - ``` + First install StarCraft II + + ```bash + ./bash_scripts/install_sc2.sh + ``` + + Then set SC2PATH to the location of 3rdparty/StarCraftII, e.g. : + + ``` + export SC2PATH="/home/Documents/Code/Mava/3rdparty/StarCraftII" + ``` - MeltingPot: - Install MeltingPot: - ```bash - ./bash_scripts/install_meltingpot.sh - ``` + Install MeltingPot: - Add MeltingPot to your python path: - ```bash - export PYTHONPATH="${PYTHONPATH}:${PWD}/../packages/meltingpot" - ``` + ```bash + ./bash_scripts/install_meltingpot.sh + ``` - If this fails, follow instructions [here](https://github.com/deepmind/meltingpot#installation). + Add MeltingPot to your python path: + + ```bash + export PYTHONPATH="${PYTHONPATH}:${PWD}/../packages/meltingpot" + ``` + + If this fails, follow instructions [here](https://github.com/deepmind/meltingpot#installation). + +2. Run an example: -2. Run an example: ``` python dir/to/example/example.py ``` @@ -354,10 +384,13 @@ Debugging in MARL can be very difficult and time consuming, therefore it is impo
## Logging + Mava logs various metrics using `tensorboard`, with the default logging directory being + ``` ./mava/s@wDTxz@6AO)`J9nj7YvK+GSQ| zpWDfIwg$A=y$@ZFARpYqVEN#E&|(Dq)Y8q7f*+a#ZUC``i%m-3g`mzQCuXpIxxz6T z)u@=5koY`@AE@z&Mt{RgJ1|epkxmYQwKnzo;w3eJk(FzFCzSTb+7UX@g*6RG_EN zqFRyX|AnEb7nziE7>&~e)mHpQ&zbTP;WwAy$l6EgX6^3pF%FK8TaSDKLQVIZR!J35 zkT} c209B9X@^+4l)j~u(u$d$2^pa;6zHh_{#7-3j7*cxc39CcF$sS>^QzTv zJ<&`_bheskq0u|y#6BibzqhljCJeJew5K(xR0PtVxns~iPHgcdWd&jVn&rI3^|djS zPJ1wurTItZnGJ`a_Ufe-bW%rXkCM8oZ!%Kvj?l*r=TD7K%JttsU!NUn8_!Ae&htcS z4SQ`}NI!y@mO~DA{LzLhxFikS%0T*u_xj-v<|5~vZHD{73F&jHriD3+$ltK*Aw;J8 z&HNwV-xlUPha0DNLv+hmIe1&UUe(4E_V&Izt98J|VCUh7wJrH*K2oJx=gW_dr|Le& zE1pXO4nf~(CBL`){f-7PDgEyMlx7U$^sf(sjP5|bg!6U82#wdzGWahFj zCP)%=QDiP59{e#q(1Ax(v?U0#9~8 H;1{4o#uADW(@|EdBcJJ-9-{TCW&vnQY^D7&1g`WgaYPt|g^sDU&TJ>B1;o)NIqO z0rujvf?bD(lZ0!!NWk{NpuB5Ru*{t(+QUPok=D-N34jhNcz?b??z%AXS}j!W31xkuhKMO^dPXEHh# z)3~r|D$_11QI$Ah&^iAlh`B3pTv2gcDW{>}jai{prWr&i5tKL+g~Slg$GqOAJ@im{ z!$8e-Kq*?L+^9lM_0@?bg-l`*%jBoKiIl5gzq%f`yJCu)!%duzIGxnsHyboYA6|Do z6n7n|Z{MKm4n6KTGH%LJnlE#(6c5xDx#PVo-2F6ho60<6_B2BdyoQ{-a?04U$`X%F zK8D?RaSngr=GS70@D%V&`ti-P##NgM N~BOx>M%!k<(WXmbzV* zl1q^47NI{)$KyMkGVE@Mw&Mo}Kpw*a&`TlsB!NGQ5&jI4kO*y|n>YSArRj4;LSe%J z7>pTMhsLPk=@~Ks`Ah)~&KV2ugkOhdKB7TTEd%!)g2bfF FW0kVi*FItS)Sk97jaD#nY Ap%9$lLriGmjWDzbq1 zhbgvo6sfgRE4tm!E5*L>XyltHj5m%ijTwmpqKMC{2xCu0@IIPaIp$Bf3V&K0DJ1Sy z2<7UKBgX5vg+nJXObVud%4Z&`?@&~K8^;I<#Hk3xJ(OedXBN>8yBkNwqreiZRTEUW z6Tn~J*_D*4iGwJ`LEtd=@a+T*lXy$(Z|2r+U`!1cYYp>xH(xJ$@0GVEvSm- 2h2^p-e0UL%F=$6 z$$EUP_@OGJQ*f;NB5N^TMQ8mfZ8|<@uTveF(trQ^DE`Ioy#sQN7xH?VzBfjdhm7yn z?_?)8DRZtqD57a|0#!usxQvG@mj$Yqzar8n<10zv>5mpQROy*S#HLqa>8L}QWFC &vIxE5=6JCtH|O!Z16y}SUD jt^gTf}{7sFP_BJnV|nZ7gl; zBFTs2pSCNn=DE6r!LRec9ug!zVFcLCfM0Mtite{nZ5}qzm4W;cX((2F58VhKHd%LQ zB|42z50@UIH?Gnt_atWBxHn3-wVA#5$4j ddfB|)(fwYrU!Yc#X-43qreY+36N<#k$l>agJo9Ye5 zVFg^u1<1GKMBfh-k`Jo {bO<+-5LnD0{SgbaYI 2Xo{=B_angMsKTh^EHA*qPIo2~AK602fr5rz1 zQ8^N_HO(vx<8O~`WX0sIpZWCEBJ;=)qBjO)pB3n68P)aDksn%YpA}s1FjE7Bv`>gv z&w9#d@ODh@$Io&4!lS@*qGv-df$}Hc?hN@M5(R)($4seS#9RGAMq7Yk^-PXU$?U~U zG5)Lt<#bb}yTXeypDz&P^lLt{sM`*T*)CpI4XC}Fka|g3w-zt3yP)ETNxieVJ)@;9 zFx*392upu7c72RozR6pEP+xy}ysD=}YshSTneYjQp6>)+N4L`-63B0<9A9=Er!#m9 z6UuLCWb5H$8xe?Kt=3=mu AVeD#Mkl-D$9R=l mn>nsCs+5s;?QYP14wG8kpncP&MsAuM}2rfnU5w*FRVxutrwFs3`TY9nTK z 8~_S#FE=x0;rM7)<-*H%{ink`*7HaM%VLzm;-k>7 z8lU!Qz5le>WWPsdH4TGu2 jV-W z#i7pI _v&Fx z=TVZ)I{whMe8FM$Dspkn(Mx=M_!NXCail@}tH|KEo(gs)9Dc3PpT*W*hkMfIHwb*r z|E@3~ZgBdvI`cYgH>7TV>_aDaN1sFPp_1^~&FZWaKjO$r1ed1f>{xEj65|-3_INwC zQ*ONW$20ba+~3 ^2zNV@^7B7h&j+YoyUMxe z!Xj(fh;9AnbH?1R0oIF;c7KSex4UyM$U09cy0*{}7g(L=Zzq>=4KHIUFBt8Yi1KDx z43|j|mwp`=pX?W@4F6hCUh?@byzly}<$EcTH^)qUCBA+sftcs;zYezBm~pN&sHeZ={X??7((9U$LHxTIdkK^$%+4?y@-dsXFl_KJtr6E?yc;{} z8<)>FZh4rlaX0R9*S57cev>y&_5ce4Vl$OnE62iH%Y@tDxZ9}O+waE2rrkK-IPQ`S z?^6Bm(mU>?X`MB+Tt1%&R3V%p)w0BP{K@D=@q-$Gflkd|$RnShsmsZFnF1`8Lk} z_9yin4DYTz?jZ*80G+)3{{OJ|R&h~2e829%&@CceqI8HNNQ0tuiAtA9!vF%(E#2KQ zbf+{7LwD!U-Hmk39{)biv);YeUi)Of2YY`OXLE9&&dhy%zQ5~Ay=vFF?R39Qu)OIl zy=jKtLSEbs9^SM-Z$@eE>H%c25qI(Bcb@5Y^Fwz&%XiE8_kqWE8zT3cI`>=9`<=ym zn8N*G+P&w4SK|M@SK +k43&>XYXUb z)nfm2J6qE<{0Z5Y$34ogN1xyE(!U;l`dU$zdOOF>+E$M|96Q|ZZtJt5filQGho>S! z+ArMs`pa-@HoX)c+jMmAJBJULF=d;P2qY^-<_tl09DSdEIRbbcp8wh-S{BnGebX`G zI&YRPCTl%fWZNOa$*J-p@@I|1FQa^jK@9RoHw2Z{oYt E~nf|F!Jcn;Qcw5g`DskEL>!s;e1f;EYG(dm-b8_43^Oiw 6wZ6`^{z j4)}XGmOcx45W05i}=?2IU}jghaaz0prKNuA%&s<%pYC3nJ;OQ z-&p9BV9?;tT6jm>h#13m3b^( oPJ z-y| #J?;cOX**Scc-vK`i>J5mZ)BBf|*0=1Fi+a2xobuO@J~nfkURq0l !&qc4I~dq5B*b~mw2(xt;4+jCte;dLYK7HtP_aGQ(=0?(FBdmD|Z0YniD_IsPM zY^O?p1p*(#^E+vany;H7-x^WA;dH5(SHWY0Ni+kn6 +fJ;^BO=vb5EHDkq%oA4`*+jW^ZakLu@aEyR0`gxbE#9Vr$zcuiIPM zSbO$GM@$naG29!3-GNNon8{CD3_>EexABJGAWhI5TJ>16~@&x@noPF(@1D+J+ z4zc}3f0%3C4F$Ys)O=tixkCcmyr91~C8!Gp(6=WzxFXo%)eo7+L7h*o^V7sQNFH(* zXnk_gt*TCRT{QIamQhu+4T)g*YOgIjj#c%x7ei>U6$|qEXGhcR@M>en#25f|zhhH( zWW@#ga(vhvXP8=R0CmoX0)*rAag+hnVj9$OVGdxE>pzZHx|hWQ3653Gg(tdnpcRi* z-8NJ*jv{cQs9c|OK%a`{h=f+}QQQcic4TO7M9#Ix1Sjde79OA0M4)EZ#@^V6@=?v= zZc~jwPOZ!g&PjdtKZNzoJcb5n0C8t(BQz*joNcFBD+mBM&qGCo2KfnKKiCJM&UwCl zK>vC8)U`97xX_^T5lne$uzM%gQK(j;85p+@m1UpuqJj}nl@h4dA`t6tAk1xGWMc`I zLN$G;2_?n$&Pag?TA|+E3_x*UUi*VT*t+~uVE2WC2mLce^E0G4-9BtH04vnWdFadH z$pD rx4?A?_4%=Ku3%>F- zg_QH4<%lxV2r&(|TE(RdvvBPQcbV;W1_E@~gsE%o5rn#8v8#E$%NeK?x+Zl{ ~&$J~eHCQacTc z)*E#fVa}T%JV1kxzrjIka|lGPdBZ$)lgNBdAeGF7YHO=+h%#=;=V&F;tr6&IE8m1| zo4TEN&>$ka_<@}eya0Km1tCH}cdMPbppo8Z6E^n?C2ozhDPAt2+f~91j3B8L4!|8` zw_2cu^mYq0vf3)YB$m2|azE9Nx43e*x9YkvS~AJtHasD`P@S^B>I&bQJD3CB@0&vQ zRxI|xx7+J@<0GjD5_0={gQHXT2VWrjCvM{l+J{_J2bY7RYfXnoZU>bIht!Y* 09^TfA_W0X~eQPVsU za` gywL 9}i^~w9_sFp_jpnXU_0Tcb&`d7ngn_S3fN; zJrHV%p+$tsAvKH)OhcOX;yPW2G}H1ryOcBwdYw0PU9fmv2EVSrC(9MNNm(R*;H&=) z-rkQ0d4neq14HsZy59fnWB=prWu)CtZ1D#E(rO#@X!b w8iwx Ec5BH B}1H`5bZI6 zKz@0t1 RCIP;wmWdE=x5-PJ=mcK$xPqy238VqA6Y4xuE0}VRb03Np%X7 z#0Um>0!bV^M3I_()c<&U0UL0$C$d&69r*e#dac-RZmmqyg+
he|@EYl6J{MX?2t zsvNw6kTNW-F8i~VylHcVhv;?T5Dhx4pjSG!V3W{#c%gWV3D)L@{oc0+ren+3BIEy5 zZAPP9v#(plu{q$|dflMdg2eb<(P=GDVS#>|He o8VWZmp{$^W187y%4s1lEE z597Uv>){M5jps6xp2Zz}xBTbgCDH`=8NENA`B8cx6GGk_;GB`SvUH|V)V#FIxY;zE zi?x`4Vh=@nEo%9erTGS#3Htb~)D=5;@fMAfkw7Zn5@jw8=}~P8J~O~di`)a4z7EB} z8a99KLRBfu>p_sZ<$)@> IimfX)m7M2CM=6SiuJV?O2k_HlY;kG$ zdld3(Q8cID9(`zF05PBhC?g|^3C^NsxBd>0_trzoQuRPO9h6|KfDuP!rJ}|!eI)<` zD)WpxkaQmfD_5f_R*4wgb*-6WoP&dzf3 z*}{AEDFvT+oZ1PTJLvgy+DDF3+_6gGjHa2G;sL!=I7 dCJo^UfuACFOv zfj5AxPfT2#epA51jreeT^E}>t8%>F%&86~ZMs}G|+9jysf5E;ZW5k~ZghgjEbSQot z9|!Q%^~gBG1EazbI^QC^zyf8V&%y19)MdmyNc!}XiGxnhnQ)tnepq`X47UULMof@= zcE(b=qbFZ-GnZm|m?hm}WmJntmdU?UBF9Bsa+3F!e2`|%8vIzIox-YptFBV&R`tT7 z$5<)WH3q6^!1`q!tMZU8-h}mrLykU3Gfyb4HadIS>_@f6LA|-j_ZW?lmA+p^LdupA z^lXZ_Q&k *%`jEVeYRi $|u(m(Y$cT&`9yu zNq*lOQDR5kIqxgh_-3j6(vf^2^-$BCnYK;!NBd98Q{*@N#GSBD+|;Sa{4N5-xrdZ@ zpPu5s-D<<_Ec>Zp@ip#OBa$)hM}H|c+Ju2*L);QF4?@cH-Cmr{$E}LKUz?udir8)l zZ94WdXZ=cB-c;m^D;vZe*GYZ?GQwja&;x0&@Fns}y>fk(5YLt+D1|94u3R5!CYwzT zRrOH#nHRIeT!q4fNymTwF|v>$iVRB9BTG)G9*0NI*yC?17#J}Xu=l!14L3v3t|Hi_ za&^=W4(Z}w7@6o5fAoCJcvtR%JT|~{(`XGgWHa+PZDj9U rUi zAhWO+d;K!cU(t)F`SapscP3hIsCVPo@gm?$p2Uwq8J~jjaltA<#u|kWG6&-!v3?um zY2i{jO_Z_ECf0enn7g@VtS3G*2@0bYd=6R8{eaY4&YzK>(l%}@Zh$4>i(I5D^lOUY zCGiIh_%(o5gR!`jyF_vE(KJc89olCqMH4M&SQ=4J6;OH4b>As9rzEo{5vY4c4m0=r zF$;G@6@LFS_lcn=g@!DZeO(zhNlv)TtQLq^8~R0MwLIq1;LGmGK(R~nUiOTM+P!*9 zir`wB^YxaYc3tV0TML!5;&F~9jj<2ib6#j)qrR{;H*EfLaXqXqj~Qr0Q7-dzG~_zN zQ#I;;kvJ7;=yJ$U)A%td(YxxVYT*JW)K=`!8|v$_^~~XBY}4XQYjr6wy{37m>j1!} z8Fl>iMQ@DRW~j3f9JWl;+tc<<Bes1XZYV US7?D3;(_<8 zmiQAv#kGNF;z5s%f`C3j5bt2(&A?33j~U^%VkDnm`O%1W*ih>#y=MF@8e@Z{6tYwc zN17(JrK+OYTee||BVS+&rK|b=&d263&qm@6B?Ibb=1ryia$AUps-emkBUDwhIAu`H z505juuJ7T2dOwiszSy6Ief?l>q95+U$bgN>q%mcO5x^e$N|`Ew8cXV#He&?Siv2pL zrcazxJmZUD)EB>Ms8ezynS0ofZC d+q@k?5|I=&sgKZLPZwpz9oW@svDr(NW{k3y7JMa6M6R+h^2; zp}Q=Ryf)=?S-jwS`%`<%Ag0&I?cjrZv!Vx!zenEhxTj1=Z0GKuHauDUJ@Hh9O2pv8 z)6e3QqP_)T#?wd&0!j53etJfmc&2)JvMI;A2Y6xn>ti*0tuGmUxHSAw>tnRx9q;Y) z4Z}x#{LP0gFQwYV(2ckJ#>VO!K8;dFRcb$#FubK4SgHfwfA$xNi2bQo{qyUkNE08x zz!=AY)W1O7+> Lyo$-B-u%QupKarnEo4A* z_|`_WDjV^J|B)W+&C75aDL#Y?)5yu*NIl$Wib2m$RoDZlHw+X2qp%MnlfMH7y#sc= z%(bfr3V~6j$|5YV!j1iYeDqT_srq4q{%qS*71Wgzp2$R}rfOswxi%ar7r;_FmG6UI z@bW6EaFe~*noVjLC_Rj-It-Lj%)<}`R!9SfSAbqKsG49DA#kpAK=cs83+xw}nH~9x zPn~JnG2OJNDpv#bSqfr0tETpb^w%pSySQDyS7Xv5*3&UVHL*uEK+SMCicJBkz%cTA zYm^En6dEt!dLjyMGl~OCtY%N_UR5zsbljo6E8i!#!??KL>cw|IN}t+jBlX1%HG6{V z+!wh7oHM+9dJ_B`6C~_BGNu8%!^k#H<;8*jgVtgwmN?EJt9hUbfa3`o5(wk {#DBeL(8DoHTx(A3Q}Z@rsO;NL6n79(Q#F=g_2n%qBuzqf=q>+6 zUV&N$B$-8)b1v^vGvbv@CcjMF`z@mD;4S{X`kS+{xJ+eFU8P<_^4K)?%+&`^SXypn z%4LH1`Lt<|orD7nS%?#jq!3kBw}gSSs@oH&rJL)J2uJZ2khb4V3HSG(s7rCY@wam@ zjZO;q hR0rLVnq>xqBEUO_iiGvD%%=6LIpBtF@Y5Nq?Mkca_7VXCG>tN#GAq5p zurOT%K<=ipHVBw%90-k1r&DiaGtGb-Hg?_w_cVa>9O?&I8}_2>M @4f) zn7^sME9|tmg=pV)TxryWQKXe**70Yhtp)g Diq_@)1*1bZ4$OA!W*I68<*U(OVK;mU`Mdm zOwimrtI@L3+`(nlmlxbqFxOI%3}JU{m7eaKo^8Er?vUUFb~W}i^!Gt1i-m4uY3TX^ zobA 6i-clPMdROGX}T^f6*fc6~NrF59aS z+*c>ty=&eyy65jw)V0Moh?r+;CJ)Ml5AO62jLHU=Ty|sA4#X5;j289nP>d|>eiHsL zk|CS(Ap*kFJVFX;PrMzOx#`6z>O>578TX-;lmJQ)kb`~nE#)YukY-y)2e;K2^FZqm z3*q!Gits)PCso@k_R%AB_f7;g4j;Rc89)XAIPS)&sK!|Z$7w+N;?*4pfdq~77z+e< z3jmM@Oo*~ikjYMv?i;!JPVj0Wgu>9@ngjB8 )|msp(#@H zNg~K_PhSTJ7ZtP*hvI`UJmz5 P5%50xT zN+E4cnVV}EreT=~(!%Jang@tNHTkKcibpzW=X)U${swcMM-wybb4)nw-21ZvDUX)f z=LD1El=f$~Q)a*5baZMxUb 5&yrJEO3;p%Cpa&~U8K$xkNo#Ur?|;88gOA3p-kzQ6-0FRgNMOlUOt zh&8Q9EUZLTkH{RXzCIZ0UiK$%TA|`tvMOJbO@%0MOyI}`PY11u$&U yX9G5CRW8*t*ep@gH8g^%~Dpg=*>aZZkA=qby-^ z1N1~ydz(|M4uCi2A_qvO9uJX);8KlS3h!`&Mr`Gg?X IQ|HDP(FOR$^$in*nY%N<{ 6}d+NM|9m7g}^%Wcyie&x}0nW3-|s&fsdxe^b%M$x`1 zf-lFzukRpN70{(rotty2>sp1SEa=Ul>vdDwO~K+>i{)a8&g~4 X0^=9zJ zTs_TQ@7>0~_%iqo9DcU|y<1$oL&zIebnf#-?>8;)r-tsf7w>mz?*H=T(=_7qFyc!Q z_(duF>L0%BK}*X^%E?6P@n7T(QfelS0SWnaSEO|B0OX>&%b3!%(${4C>h+1Hfiq6M z1^hQVEEF1r*fO)uW=Xq24FZ&!IQ?-lx2(zLMK1lpbFv}kOo|R6#gO6@*E }oF6NN10m%WwFJ6D`TZp|%Dy7qv1B4rnc zk9y*P8$3>X7$;QkfoSg&=tM`e@}n6)#+vt>==aCGFqq8BCmfeedE>ZYdu79@7%${E zgQNaAZ!}9bf}j5SlxaNnfmQ!Eu vNXs1w>0O&_BuT3 zwQdw^onyqhYFw9UFry>al|6UDE3RorwSPKf|Eu1d%D;Pa{5B|jjws(u{v_v=|DBv0 z$c;sG=;k(Kp {yJ@k0JK&b?Br9@0pG0slG^Ue4&$HWgj{3IB>&k*LGNdsO| zA3-LQ;Bzmg+9WMyFa9hqY^wzRE0q6Bey;IveoivENzLb@>i<)IZvAh54hG HfB4-L~2M(=gUg5$0SB0s)Kd(8q6m7sJaD+{G2qib3r0I$A8Js>Hd?S zt5JXH$Q-vmrE~WsPFSpn?OTy7@D<&&I7hXZ75X^q=|V(@t~VmC@t^#hhE)8}Q9`+z z$09#mC^W!5gHIpKl_Yk8$RH)|?Ia$dCq#{X!}l) vxKR`WOM)b@ zmfqI8Z}pZe?w0hAew%5i0Se%)BUtrp4H PtO3^RB+9pM8lKa`_X^qV9v+3*ORW*_ZIg*)AWHX Y-O8kWs$9mGsB)nOoI`PIXaiNgg(36BqpZ4R^h$2=-K)$ z83>nRJ5O+%q-~Oc;^8@U|_Z6c1^b0S#*dqS;r@~j%YK; zEAvJK22N0G*P82ey-DEnP1F J)E8v6$;}oJ~3l@?PiavYl& qL@y!l~G=N7`dHpif0MUUYavtG2a5vJlAdYA9f0=+*pYs-^InIUb-lcOA< zZacyLP1-T0f&6-GBp%nXXw8oC >3vzd!W# zMAyst3I6aJ&y;>jM-^ALb_X0djK2&vv)52N+of!dWDG)$2BFR%bjx#Hn? *ohu z)>i`-jnk|LoeLE38A8q(4WX5n3!S{MnLDafqm)%G^U7+fm0A#~DD@hJdCNU $Iz|qP E`bYPD-~o-V_}U*9_!~pb34`NySM9AN2@^# z&_0l|X6t$b=Vp|4)8u?4lQtep)AlaKf||(!BH24ZyR$o665PY~{T?T~cxPRve4uAh zYj3eay9ueJBAx?)nYxRg+@d6~>>DxFoC;xOe;RIqp 1bYU_PfV}wJat=LABOIQ?jJ5} z=*)Yi$>R;AHeFNi8 Asr@=Yf%Esi-9R>)|6zg#$et*}Dt{u@j9gx_+RVe$8Q z$_WbK6l(#YaG2+GKkX6vEe)UNSv>7Y`K?GZB`9*{glNnyP9Pd{P6&mA`#3`3@M_>x z&wX4$=lm7>nK5+a3-p{R &<%SiB6Px%|t9qtl3E!-(TWuHs6s68^nC&JelI(z(uYzg|I9 yEU$9{BCd(Cx_L-2nbwFTyn(wuG1-Z-tTV(2#Bq-S6s&HG`OGyuO;3t;w zQ+N1v8vGWY?06CGp-UhtDrrosD*2F)d!V}27%j-S##`w?+Ca&SfL9i ON522deu(bswni|Hr8=Z7aa4t~wmT1pu%Iw{ptXncLR~c)?qX zgPO(#fc&?uFX!64cJm~A8tPbI40yG+&f>!mst0hp@Lan`gX?fZ9FsYO^)I^3Z c4z;9g1MH5X#!mY&}_m{n0LcojA2R!6kPH$wPQT5l*k(KVsc> z&Au*|0hc5r$LjuKgyaDLue}MX1Bmv+Gzb5X*@oU?%31`Lt+*ZB&>Tcy+54LT#iId_ zpl&pRq1&QAOg0?h)EyaeEksPBhpT1Vk~=%nDFG-0HT(o47@*$df(C--j #L8iDtQ z-5Pu2o)CEVUcAkxd5kY9Fwg!7^;RH8Gw{dCR9EvvxLjA$EI{yRTCj}uD+rIVeA+X( zXyH4GAb5uD=Om)CmLu1-=ky1^rtObvxHM%@&T0ylSK`j7(2m;Ob#^w-YBo-N@j?a< z0Ka%mR|8<3^X)%zpQ|hZRIE@t#>Np|^pXAcpxy2eEo`f~d0`x7wUpTpNK Ay |h$jO&M7-690`=lQKdcYtR-pl=E+~i(et)+Fv8HNLBtJCB;Le)DA zU%5}}zhy_dzr)#)Tiq@kuw|c LwXm)#FsMkJ?+!H$#Nh>uBNY?Fg-e=(bqNu 1+`5}g;%F#eKsngE4zMTIG=37j1^T!gyf7b;yuUUNAD&y7C%fD4 zOqpDvo~_>>UZ BMc9g z69@7DRE5ct)FW}NLmbQT%lo5OkVC@Kk$df96sjZA(h-E=;TB 7iX@m}8gii4DA88jZ3Kt&k7tV`>-ZU4UY2Pjk+=+G5F7=_8p)bz05kg&& zs|ffdeEvK>?J5y^1uDG^r#VlhxekF}Me1B-SzcwnxQ>QTA@FNS7+Dz&Y3YlbavjoN zmN!+Uq?OQ{+M%2J#hYgMO)EZGjmT~BgZUwU>c4@zvLnn7Z;{Z62oN1K&lUjMV?0Vk z{;XvilS;Y9ZT_px=1@9gxMA~Bizj}CR^|bxS3BAe!E tk%(8o3V?(ZaJ-J5JhVhrXMHxhY((ue`87Ai z<2v1M$!!i-Mb{1t>PoaKOSgWEg8h0JfK14SXsBT_ft!&YJ#Q98#R-lF1Ym;m=z>U1 zyVLz}o|m=yKf>Yk2tqGX%>a_oA?j%`PbRt`oc7wUf6Nd5nE@ocWy{E1CtKf;MJ;%r z+i{0Fcpw)u^JN0L7bG)6MLWy%kx*^($>Z_$nV&}x`1fQb=~NT1M{})U=B5>^^{k{~ zC{Cw?=@-01qY14Ld9xomq@HNxOh?T?oN(TJw8y#y%-Jcgc9^pMiXc8andCe&C*KMG zN9zDemCn!p&NIA~88K5}noM~hjf7HEk7W)lADr2UqxT^2L yX=*CD7#x_8wkNe!y+*@OBo@C%wBG?uvM7k`CHL6bPS>+iX8lQ z9stJUEkt8D=V=jV8}RhTvKigO!vv0sCLq|{n)4BJ0hLIS_6Qw?g6$;=AWZWF2^cJj zl=Rd&=Vcer0SBp@t~5^v6 FXj&hdPXp#n3L)u5=#(-`oHml|Io=-CJuBtk^1s;k*hqFB6kMDD zM=h^V43n>HlZh63%rfDHufi_`5+`35H=5z^n~(+LH(fotNqM?IyNb7ewoRfavNOyR zZWoP8Kz7v{_iXWrt{buq#T1b!@9j%@SAIRw8&h9lbaPRCq0x{27)GKf{G861 Xe%y(8@=FHByFZ9B=9N&>QQp|du0!#B{^=s6?M!U9wcLWUH@z5 z6@WF9Csl jD5b3jFYC;-tJF0$! z*wTm&rd3uN{SHB>5W@WMSlI)un-)avF#TwIi~Nmggq;1_GVRc3NiHwO5bNhz1oS2y z&-IRj!;79%r2lvf(eH+f8K3I-%T`L& rk8~XqWI&E|ls7qNN?fX>=W@=Hx8rymBQ%Q5vNA??4KsSXwT ~f37rW zCkEUr_Dm=M=`-BmQ^FQ$F)i*BMf|cTzgQOKS5KbEtD!3R#;!drq{}a|7|_s^tNii` zD@I=C%Q#;dJrXD;NbLZbq@um5$O1LC)GdUliJ!jI<*A)U5UyEu^?IS1T fNVrs*2Cf9hq5YTL`OP`csjZAbmQp`NUJUKr~SEt|7j~JL%WTIh*N-0mneIjOG&Y zuyHposbirAXKZnt{-gn!Gp_Q>{fgiQ{l_ob2dhIWg~IHr1yYV|-_$QKTmFC-Yc1h* z)od>hK!1HIga5o?5CEVLT1OU^c`JNEYW-qrpC#7p$v9PyI#%rX94*zu2K_5`ZmqRI z!(7k{%5QaF<6TN`tURgSEbpWM-HG3)WAHIS(S}2PSWr$-jV_zWM~__0v0g>>sff{U zn!Da+>PE+DieM6#bxX)EV~9u=GMe$ZOH$jQ#>pDqeXVmgaswyT8MVKe;`4gE2ad>< z6{Sc8`njQG(QbBkzoNE|;Io#afvb9m_8tem^FGZ$y)%~KcsU&6Mn(d0FcB9Z4^*NA zJi*27+M}%x)ossYh>17-K*&Fml4Dz##@k6ds2;5Kd^P7svBXEl{_yOQQwH?mo_6D? zq=olJtR3(KbNdY?$!_Hh_D_xqn$!(Rqp6#}Y6AAPBMIZDd~;08>h^|$f2AB}ZE%t( z?i*r_B_H)OR5obIn-M>rJFLE_fxhY0IdPt=!pW&~oIY@2Kzo8eIw&ioKI|=FybOJt z??SsXx}p0z`=uPNB&KvK5}EA^rjLUh^f7gWKr%96;(!&;AX)e<<0`tY @d> zV1912bet-WdbCGH0*6r{wOEsttrJp`(z}}FJ74&pP~{7q@g*h>W~WEJ-13Xu`ILX~ zB5(EkwtaDZ+)|}&Mad6Y-HAfJ(J!SxKFa*6y=JSO8T9;WFsWXMY;O8OgAq2WTm_jS zD&b9HgRA#Y9a(nWlw;|5G%Us*>; wPTe#Z&%zXah%54ZCM_NjR+mr2 z8ME!Ghf0TWd*b4L%fC2qEXS@&lan<#4k2|)54t&@+zVFt1UWEqcY?w1zqPS9wWz+} zy0gQ%Y)j$jSlV^I#d2?Aiz?awsjOYF?hoaDs(mWl^%XzNxTDQk`#4L*4Hlx>7M56! zyd1lX(iVS@1t|9%30uNwC}}IpbQhd-i_COeee)H0OW<7M+hv>wI*)tAstjZ28!kIt zVMDx^Yh)_EMtqTm-cg=NuZ{M`JoP3;%@|&Rszs~}4d~(xoQMs@> 9!1> zpTb4RyN!;1d!gHUv11qsZ+T+BH&PteSM)Wc-!fAENMzwHRf%ls{94NA+&hfO2f|~T zn`0cmVOfRz2yHsBFfMY)<#hwA9yBFJ2;@$JCHiLTSs)0L7 %Z03fG~U3)cK-`;;jwD-iTAR-v4HF6SPb;v z@1hk^JFIc(t(hmRrjVX8 KJ7661f-{?ile1@6a3;rDL*23qLzk{M3O@SnV|+A zJTsz*ORvPkNW~dv15s2~i2E#fYOC(0q8|4~ndH3*s;!a|)4MlzPIUCI%MhKarzgCO zdgz}eP{Yg-*Ow$=MrUCzt
_8WRDIU{VJi{#9BbEZY&N=t#%sSocBw zYQ-UTLIrHkVPo{dI*#KtXVhx~$8<*3V0#CbDRnP<=I4%4=0-34b0bT$Ieyr`VCqqg zcoLPS!cocXMDSL-mC<#+hWj#Gvv*Uw;X-3!>eY*9JjIMI95yJgMPt>TId|D}wQ CRXm9{0OTeG6)?UWvtoh~NtS1+K)*(Tf_ zms1bTSn%07%4-i4NzSOQHg`PL_@ge5N5=6;okH8_LY=@wlGtzYj}u1QbRD?99$vh; zAn_zo#RG|Zvq^dj8ymik_f``3re)G+fB!C8DoTOiT??PLOt%+{gNW!>5 SS3}Jl<$Y^Ao?QSd)m)KCb@0;lzHKJgK4Qe#)fM>zHO1@1tIW z#UoFBjhUqO_ e9@4eGU_(%(C7W8ooElGhPZXOE&bk@(kEwu$)5+ zM1<1zVuLV61B+3DDq%tXq#1)~+zK851*?oF>K5eE0U2AM`|1GF#K7>&KoTc-;4dPp zXZ7hboq-&QmI -M_Q~Z}QkIEPHZib!WzG1+k=$x0&wL%=_=PCQOCupJI@LNVWh$TJ zD*rvR8rycXPy%a1g}U6dy*MA++ikm2r|3-n=xT0L|$&Bnc2>u^D(Egr2e0&P2;uXBk;X}U_qe9m{BO@wRZZN_a> zA%2OAYjQQcu5bc+61CdhOE60h>f<+z5(${TK_9zcvB+j^^R1{P7D&0}nUtcC3Y3}X zrHg&VHZDD2aYw!Jz-=fMs>a<4PnweQHuNo@s!Mv+ZD2=iL_2Oc&Q~#1=lKj)&Jgqy zWN66N?ZsA@Lfc+WE@L3YWMpV3Chw5?qZ=F@4Hnce#x8iK)-B;g>R)4LhAz!2 dw3zPp@K9Fpvol4h(!H9aMpl z6^BtHz+V&AEl)jD9T=avTp6Tq2BLKeaPJEwa;h=yODF0L6q~^Sl>JXZv{>i5_=apX zEShD>Y?VOk)SF ea6W6S1EhW$+jQGMo9&6 ZWCfn%h!ll)7CNY zarDg=5YV=bm?3TaG46IqxpYJZ=`3K!rao<3(`cJ$K;hC&_z>J-I9H1aYeJ%ECvwJH zVf{0oH4^L+=51!E{Hb_r^x kI-UNWlE(g2oc_V&j-!TBY#dZ>-Gu6* zUXb~pxLN;R-w+~*c7y#(nspGBbD##nVQK3y=dg=!dzWqpgPbez)%$7$>&S}m8 2^({Yjq6~hN31$unShR_CTUldU#{z;n+@dE((kRjpzFe>ZLLP`K$F_0WG)V 6Wc5vL5S1BR5rBjo#|x3YudS0heE%`A|S zBiR;P-Z9@~(i?MBj^Z(aff@m)P81LT-F0{|zQ?e!=M!kSTBa9Icf4(>Qw?{hzfWBl zK}H`<9 C7J@G7X2a#nFp{NvR&8Z>5mfz-`7qS4CyM8*H8bw#D z3{E&~@HT|4W;knjIPk9TV=K_76-dYz23wx!08B>U_HDNU5#Y3>Ab;H)VQZL9-+QG} zHlwmccIh*UK(BeYeb@vu>GSUed;!)2M9D(4F>?S!<4gs>%@aSh2AFQr>aozDl`j01 zn1bz>JQst*tx_gGK~ X`3|i(F?A@53*aG3$?jt_;<*PGx3gI1tR@m73&$MP#=irkZO|AQ^ z1NQ^7Gn%VB@`Ir2l@*UU!KRiIwr;`pCFG?gvBBm$wq@1+d6}k`VD^yZWmpL9+L$vi zsBrz`LM_R3j->X=gfmcoa9yjZ_M6;{C^djx9wH&SAz`%<%vxMJFj=nkcm=Ug)%~+j zwZ;P+CwVm7;phoNoU}LGI5x+(f0~7^4{2-|x^2i{cT1M6`8L%CaBTXd%=;l^zek%_ zNyCry)~kk>!EQ~D2W-CLE#=BXsBjT~*O%6ZH;T0(4D(JGAp}=iyBpYJyNqLe@>@lN zyDes2ug14> i-0BL) z;<-TkI%42oguPv|IJ|JMi@ScbFpuD_JqYf~F^}M`c?j;hFugh03r7rTQ|p0YGly ?UF= dZQIJPe+K5;+ilvfi#jJxsk(h}DDh*< zopPM1aD0)^ac=EU>KC<_5%n`0@R}g{bs1ayMU-H^dd#MJ+ *=x#_Gu8+7}I*qj2vo$$0xm*0SE$Un~5mZ(; zj@QO@WHWX(*X0G5tASM9%A45K^jNO|tr2>j0JYd2d$ BgX2329O3 z5~XYC?(U(xlo*(yySuwPrNg<$<2cW2-TUj>S&!w${0G0Cc|Jbh*E`L`F^#Dj$g=U7 z#?NQ$15Z9noQjcO`)ryXzrP4ZI=eK>YeBQOX6fU*U+nmO+l2geX0TgK0{ySe>$fZ% zg5=sS{hhQk<58tQ?#OuUWWJIE1@Q*OJu-Ld2`b34JikF&PUim0%wm2SQ!+@HUuFbz zrc5rRi9Xm)Eu %+nuW7ms2)12KSNVL`WXIRCsHaffBfsaYzRH^2RG+H8h6teC!K;vMbT>h(N=Gt zDUC(q3Kc#xXK?$!C(qCe`B7q!lV_30$uso=RyjOw^LXUsnR0S`r9dol@=X2T$uqy= zYqfar6?<6-drqHo^4nNn8MmL^ae1z;wG<_xP9?f>I$GqchAae|(;l-L35WirX0tCW zW)mZJ4G>RxFC3C4uo97Z=C|K?{esKZC*AhzN-cL0dSJ}*i@b!s6#eBC{iqw9MC968 zVDj-^d97UXpRqFxugRRx#6cCgLKSJqjWecXPU+;TUE>(@)KiO(D3%{v O?5$AxN4HF*Ye)G7Pni(l2_ zC>tVRkqvYW`ECt`sSU-UP}*chc4JK+ox+|hCz{>@#hQlf)S`7T3_cHQvTVqsC{dSl ztGIP;)`6?vz@kM;A0Y6dJNS@@$6!O*xJ4Q7yT(7$X6TLKNO5iX6Wz_%O-*4DNpq=y z1~=XHC9kDIabd7S%I32Y=w`joTc|G;WqMppGcC;bm&nih7tJW_&6x684&MXchE`*i zRzGeC_%&Yx;BFzLYI>zpH^-lCJ)cb)*9wK!eG_T+FTo%ZZF|n%z&c&OuiXZaYyjf? z(N?a~HXf>mZ=?tqa)6Ju6t=d~_Hv~C<$Ze$tf)gbo^=3D0%$@83*>M*6c3=CtWw8M zUQH?RupTtlw)|N)E8J~YTIdYI_TIxz5kg+Qf;+_)+7(thE$;uUn^Eg_Y}*lu4s=>9 zbn^8F$b7E;gtS&*lQ|sKT(4XI{?D|TZAmLOq>bJR!)Kvqp(M|Sg2G^+P3xd1;U0z@ zH6zsfGinx5(hjui%^rYtloW&XK!pdr;g%ga3w=eph8KK)eD&u&RFfT0p4OjjS%Ks~ z6eO;KQwr~UKfB{KxDUjzrM2Dk7a>V?1q#sX?GYUe!?tR1>?^v55|rXkEDVOEB3c7P zTZVDah7X{jdKgP-LjZ8w6M^2ZI>dpNpwqN|VLRxB;voM$lL1cOsTJtA;;=Bm$f9Tm za?8wMpbrVSScj B@L_a(pqcyo$XA?U5|2>;$H)Y{MPG2tJ&i0dbc}hik9}}#e4sTxsYl;^=n-US zi7Jw1b10XtTV81px2RWtU|3CTu*b4bKWs$HV<3>cUte!j-(%q3l?@;`#;4ZxsjQzG zHlRyA-c>o(U{yV>H~Dt7+y1c6jtwfk*dd!f?b`Tf^-OsYLlt)>TNJ?{IzlgM#PF?P zyxnLZh@;P{4U{kls{c{+0*SfYv)OPe8KYSlNgfr&QKYqIc=Z0M41iORJzDv$lsca& zMf%yI#hwz6*$UhrlF->ryO}!uZvEVOt51-qGHhq+1&0B8tthI>hg!zDX~p~LKK<@w z%3ey j*^;7SvZ?j7x!BT)So?LT zX_FFOi^nogSc@v aA%pyF#sPNI#z@nOrr6 Pyg^JV{V4#IH>XPJYr^vrtj)#cCG0+!}{pA`0O6diRI!ED%bRh=ZU`9F;>OI z< Ua 7ylPpA77YrUzn*~sH$9O z* krM>zL6If`j=6(H!%`7U%0LlY_G$-Zi0`mQ!1{*y{ &xy8VH;{Ym?$Vo;lT7qxoZpmJ;d7z03mgNjNH z007vLKfno~5CA|&fJq(!ANl+H_ys%)3JLWM4-1J7hz*R4NsLQQ2u?{)i%N~i%*o1) z&r2%EE-WjpD5=W-8G?cWtgWwwHozL2n&FLY4ITAeE$z*9{XGM%gQFwkeG{Eyle5!P z-81uZb-=atjm@p?o!!0tgTtfalhd4ys3h07sMk0Bbrs9aJ|G~LDA@>I zYXIhB9=+?R>{o%L&t9bksTp@hP)b--?{Gisj;50f;AJ_>Rft}R@kpHwPaR0%&fNUo zHBPCVBH+7+Dtum`mL+CQf@V@tG+v;ZBcComNu{2t70 UID)<4FErR4%suhuaKvW6lf)Vze>i-aq)x4bWluFZ zyAYMV(8(A+*%=0}S?J_Eoc!UQ)U(jZt2FgvprQ^1ETm8LrF5!nq3Vo%O3E6?ez8xQ zazsy`*duK^1*Z=0a6*|C3rsze8j1k0YE6dQO$KuGylVp?W3I{qPBLORoA)z51B{|0 zv!YRKsaO-p(rOAvPk$>&20ZutSI0}_AeZW#100YZ{$FxEn^KIPtrY9gTA8guk}LDv z=E_XtV23{H0+L)4%dovX78H@>YKKN(G;eE}9lX$~g1e}cRv!%qhUsI!8eEjXfw@jE zbhpfJaJ08mPAQ2_?U%KUJ54F2O`Vpt#qCac;7;#(EI$itc9ve)Fk1L6){22svtx}t ztiM8Z5Sk}DgY-!p<+eZS`gkcoa)n5|Im>;?!y4yn<0?q8znOJqU2^WJcuO}@T}S?? zD~ou``~bq(HfMgAV2zum`IKtK5m_uqUq8ei!T7yu5j`PE(@c&tI;TIAYquerF%ybZ z*ZTow&L$nP0!$h_5&g|oU3k{w`X+cyZ>VviIFTb_s$8Gw6JC>*$9!|_{9WU`ZqwHA ze3g~e+8Si_`w|R^svnwG+>T&&p^F3= eXvogz*T?9b`uhFv3DiK#{?BOI!BiK z+(0RuyF%q-s+d4$8i4U{xC~^s180NVql`0x;04})B^R(EP$tShge_POuV~u+nXxXO z?vr)2(+Jy5qgj7zE$3ykQSJ$C%vh(=3!Yu PCGRfZ40S3XM7A3+5l<%u00c+O1yJ_<}fJmZ{RFgP}NIJ`cZT+8UYE1%l>eQZ&7 zgrYKaWN;!+eT-2tao%*o=W&eZHFisL%CvY)JUkBcI^|M2p@ I6EFV<;fgW`LDN%;A06Reu?6ri_@OJkwBieV!e$#mx=r( zR&lO8eE#ZRZ&kZ6|9W8-eepi>Lbu|--pYOX+3?cD>(cBWZ?!Tcv}q=^tsu0|B>WzU zJaWDKYIx<0f8{Q5<+Mx)UcU4&yfTouFtpXZ@Ta{D#=i`Uyw*ot2M%A{r(eby-XwV4 znA`qg)~M#2aITw- ulQFA*8oP-zHVvdjBJ>{;RiD_;(?vx3v;?b%uA)=09bD zDEhmm$iLqDzv8WG$f$rf2m?b_5g8Q#`l6$YBdY-3tzh)WJf$`d!k1e^nXj4X4pUnF zKtJ`{hrlh~=on~JswXcR&UYv3#C%Bx?`{GgKj#-@21vC9tkeWk%9Jm(10PY-;G8Vd zyV?-K6e 7IL4f$5G5E;4jp*gw#h?9gqd7oAEmNhw(c zgeoO*aOvozfM_qGTClLF2wDOA4618DtX!tG5Dsw&eISj`H8_MpItpygO4DNON-8+A zibBIl_cWL>TkzALsDPkxggoa6GS^CVl^x0bNa%C)lNYMSD2$AipTp4>3MC^%UePhc zVhfIJCVsRC21FB9*VD(+HMszige?TW#1riFnxgmwxNJu9$Oi-BH7|p9ly)RXz^IIN zBLLKYD*|Sa77+f67Gq4hH;@+BoCMe6+&G<(qQu8$D=dZCtdhk=Ai &@c8ks6YJN$qXP(M lzk1=RzQYk*cvhxu(G}y#8xiQ?tut5 z?#3Y=a$ZBPc4@^Xr33q*g2zRn1(ClFoj_UG%1{)1U+tDhR2xq9>p0(zgm!pgs;xk# zH>$21g(^!7yL8!yEz9-COR%k4uitmOBAO79 G&)FJADc;C~LDB18c SiMf`)DMdOEEz@F|t#BXlh(YJPw(czk(f 7K>PW*6&;0t~JobIuU z9AAQZ6q7{`rgU)MG|md6EB&83fX`bFfFinTE4q6e;JP<5v1tIn^+irWx7bVuU;8tc z%0<7Jx3$_#G7+bP(7@X#?^49Gw=$-t#Xs@9OB&L9-)2z{puaWao3A$E$h&DBXMQJd z9kLD_#7xs?TuEL}BjTR^piDdYEp=pXD{UuOx#i|3q?O7 73_AlpXM~=aW?y9iP-uuLV@v?KPxx5mPsgdoAzL7}C+6<1zbFw=rb4)Vh2U48 z#?oWx3aEovP~7L#_X%o*xj6O|OocN+GjTbLovLaR69E4DUIjNqNNm(r2SX`dNU^5a z`>>7_no5#h;Ae)Zlp)vW%(yM34));Wkq&^+s5#JoZ#=yxZi<_ar2-RdnR<_vT`L_^ zsr*Wv0ynj*o}#b(tvp-qkXpGxI-9}0j#h f@(L=4^MI zN(`ZTg<^@&xV%|Qhg#jE1}pQg@w%gH{Xa{^G;O09*i~_-YdX<1D&x>fzIqqercocZ z@~GDg2Ps+Vy`&h!I;pMIxU#?xo$orR{c*gd2q%8-J!#MXGbPWd@mcJgx$;y^jz<|x z`5oC%o5E7$E~&+}M}-3|Np19Dn92J)E;syxrOS-4&%esF5gv7+25{?VfnBdN&f(qg zA&+vmiFUgv_AlZC@iSjLDZhf0)9Q(7xtz0g(}N7t-t shhTwQD {39!m`>Gv-s_OSPC1##r)Z z(q2UhLY+iB2BzL13(=71>EHw2(hs=VqK-ep+^g5e91)G(!b_u*ebSGgkDKi)T~Quzomz zKXzfSdb4SF@X+(q%fw%guGw!`Y>iA_u3mPXi*=IQIKAfOE(}uj;ct1reBG1ts4v0~ zK7P6k&?uB~7*g;ro|q7=5oM}Vd8=?V5uOmZMUfdLXV^rQ@N9CEzni7!<(&QGduCB_ zwBq;Ss|9a?eO1EQ$y)6b-=)7`$poO38j1a!X5=P$tBbe=(CIRjRq&OoE =9!k3Pm~u(!arf4X}d*H*<3!cjFVy ??=p^aIQZBd&CrL zg(apwjlA@EZ1-hL^^M3Iv!HLRlIPq)=RQDU-}fDeFH+|wzFm?;=O%s$W=@YxUIxAT z7GNom1T5h3i+toOAM~2!` FUq6yRIs8V{)PZi%2d%b_w z!) K@;!lQ_K|?O2Ly1g7LH?nQeqkir zAvt7f*-_tLlfLH(q?PRaMq{MT%k*9{{u`Eh_zDyOoF)5CT|;}Y`i(V_Vu?B8Y2DXX z{@;!ZzsU$tF`~U^*;X&A`rZiEHqp{BMboxS)U>X10ADzEe~k(;cCdW~!juFF8#}p^ zYMV|o8k RN89^5s1-z;$7^EAJu{GTGT(68e4*!`=$gdDHG; 7 z9pxJrr+I9y6S7r+d_vDzHXV~(;}S>elEo0$k{1iCamkY5lqcul{@^ z6^SrU4!!a2cnOx;5+f5#A=zOe>oJZhN@7j|%jN^vwedVP{cJV;be&C 7z3GoG7_c&vc3m|^qAYoW-fTkipznL^W~t7nGUj6@ytOGP5J9! zs*~C07TT62sDX`_5Wt>g1TQ2FgLI@PY_rQcM>dRv^y~5GFp7|@JZRX`Bh^-Dn2H@h zB`Ui&No7q_m0UO!gEX{MFeJkap}_5GQ-BeM;$VXpZzG{2K}KPRUZ6y3N>&I7ztRp@ z2#Fx?42O@t-z$uyU3n+Y7oja2`J6P5hBQ*|mQp-VeVSSQ)#SU&QyO0M_a-68|N0up zWg5^fGq=5yeG1KYtY^DwQB*9BL6Zg8n9LMK(a6mwv+ZaRA8qp*hi`!e!LMTYjSJP$ znbfoj!b6yp+X|WG@VHpw3(s8BbeuDVW8c)fYG86Esk?QfI13aNU$zzd)Nx2B>!cUN z ck| z#Xe}8QL+Vi2BaIkO!s*9gF-i*Vkh Ljalsdo44K= zSp^*#*eTMOa~8dhGR{GP=*6#bbu#5BtB)~*gUm7xgsLOW0t@(Sk_F!e&HU89v&`to zcrr&qRc!M}BfFnC_lt-PbwemEYiNaF&Th4xpnPtpbGE~Lj=)|hVPX!=tyKAS7@e!6 zyF#s3e{G>z?XYYe2@@hb7XbKwE?af$|3n4;ndmZLrPUYCf9;Sz&K;puoJUFbJ~g!= zzCW@7(op`-MAwfysIEYv=4OGHJr#8Sdv}$?&yt2@VZ3IMKNDT$3bEO&E(I3xNo&Om zqb1nC;@HjMN!X$r7L%d zwCe3Ume^a!sK7|F3^FQ!Q%_~~nM|-_9*p-ftm9?npQwPYc8l7KfU2nZ+m9Wx$f&?U z5UHsApQ1q4e~SW&Vb4Xgu~pmIN-;u2d$%m}vMDJ{-P?_j@VWv`SL}@`0Y$L&K?XWp z6R8Rg{-gy;^y=SG0Wz#WKlJ*dOF*@XebtKf?R k)69z*kB=!J`wzi#?8R zUDWy*@2y92-Fly^j^)}B>FN)Ar}UW|jC~p$80znr_rPO{o*GbW@~a<5UZdK144kD_ zzS1YMai6YMY`Ib#ceTRtRO*)t4OA;bki65MfrPb@T6cZ0287}EtrvzHEn*mp&Bm5S zTPDtQRt}|<^$gv`_*moFQqOs&CA7&;BeAmZu)AnC$!(Ar@-Sz@{zF%LZZm4OHoQ}A zKPV#|+kauc>9D6GXp)QxtK)DUvi~koADgLhLB14exb&hgv`xZ0%{Ugt*`JG^EQ+o; zkCe=B*v&00wr71sUG_lj)hfqtpTk(4+g@z{b4WXqj69^hzODTEfa4*y%%!)ylD>R> zFR>wp2ghCE(6a!Ew;H5Q%;^)im#uKHGiaTV-&(iXi!k+s=k_VBa#;0Rh4h+~_D Mr)x9^1K+H>M6K6x*@v#?mf 6f*v2TQH~mjG hqa|1=}AN0|zb^-P# z+(1)!hoem$d}WO?Mu@}yv_l2>`YbYfF!CpQuu|S}quVj3a5Nopw7b-<;ITI6c8I)h z _6YZs8Gr0o(;02}DW~lSCGD@3gHv9w0eY`r5XCcL z{641TUvZ^pk}CZi66bk1zob=qqyMY1D)?B+5`WHG)eSGSy)JYzv5+NK-Qjb!;|pW_ zOU-{ZHu}=M>e6iV(rozB_V~Y 7sO|9YGpUlAMUDD~D_v&3M{=Gl_eW%KO2={%T*L{EH{Q%;Ai1q;< zc|X4VH#6|RQFx`dTLHd87G6dF3A-W-ufqSMvj2mzzW?D_?VpagckMp7#8ey7|AVng zbG&sf9=3eY<;o6EFvy zW#~?K0%j+!fLA6jrM%}It`_a^vhByw@OZ&3C>XMp$gV51og@nSn f>ui00#aG)jt?}Vu$D;(h{|6MJJV9vwiZyio1jG zohaCez-}9eg7zG4*ABAM1Gi$Zi2~Z2=wH0*BQ4cy`Ma$3cUkN2vew^at-s4!f0woX zE^Gb&a#?Gd$>^Ms*ABpI_tZWyQsqgMUR@-CkQPS0B=9CuS&QNKjApZ1v>Td}ijULQ zh;D+GYq&pGB%f>d7uMPsmqnkLA6G8%+uFRdoV-!7ymYQ{GF+@KE@7R{F-);uPO*~a zu7#6M0<#~|8QdB>U8~U_KRj_?taIy6^w>_6m_p~%z%=~$&256u6TZ!_`6nlkF!IFn zqq+X=q+ZXJVHdi`V0Xf&-Is0Myma3@jAo6bK6!d18+M>4Hnn=Tw0MayvLc+4`d^BI zW)R*_v%&STNoW|}6f?rJ?Lz-btWbRt4~fqs!H><~ynj1^S@M(Ois=%Z@*R0xUG_lFTH>fIRrfM^O{AMPS zNhXcGK3smj(m`n&&~$xG-* x_-p&ZkkZ|h62nqj) zBQ $6fDtCgP+^JWpt{E&Qyys z>L_raK<54(^S){YplKRuIJq=DM+g>(wlN3nML++5mx}JnY0l*}9hbc4`oe{or`Hv^ z_AVe)?A`4mSLBlETFi~ $7@q>`2g=~q35(Sf<-PB6_{R8LPBDf;9q-5VhKsRu0p>;ydb+t z0Ya5fIlQLcbnzsgPbB^tW_}|#>6*;q+DWE8^;J_Y65-N 6SNGg*?X*))4K`nsV)!nwUkVFEhJrZ9T*k{o=}94lRg z{2(RqlpLWx+b6=d5U8~yWgQW+7Xbi(DWN_hPyiSh;Py{uzzqTQ`@b>+KK*%nNkATr zJncQ|6j=B+M&6}VeKuvibqaP442sMQ TEl z{f1b1yn@t*woquJF1$;jzGAMZg0(nrj(vcQYbZ3PTciO#hu sLU02_)d7Pt*G%7D9MUUWZ(du+_R>A|~pVIAS2-5p5I ztxPr%ZA1cTDiTQPdVucb7pWBkPkZj!@SMWB0V_RUL_rFW#@Mv3#IWAu{ZyPVzs+Yo zL{<%<13fN^UD2hD=A~Vw?oGURt*Cpw*>Pl9>|J2DJ_WnJd01b`LjN|bCU3{q!mV9c zv|H2)gXO+`2tF9DkY}-n050G_<=FvXOVB1xeXV={D%FsagH|K5asU_xoWLHik=MAx zTldi2FyKCXC`-76prw!R#mJdnH+UZv;}CTxZRmk&sGqgGueA>ezC^gtV8x;9u;JT* z5!}YX3z3Q>Wcr{o86-A559m^k8pYBdP+AzBPcwBP8AH`aZhHZKmiCZ0j?^BE4GmN) zvW=kPLYWpw(Df%M8^=Wl`@T@tmFkVFs*VHf2K}QZ-ZwVBb^p3AI;7D!*;UdR{A1`G zr%z98s`L)-Lpri*HS)P}Do(fObNvwM;FLXeeX4shE?|nu1MgeobogB#Cvm?yb;jG) zX+LUc3sn%RFJc @?^tcKLB0pUtB$PKR#99RNsv+jchM^r-}sR3z?)6$qD z`=wJkgHywEhIYu~*Qhyr>*k9T0cU+8Bb<55#uiNXo_Y82jj;L8Vr}XrGjV2QElN{- z0~4#Fv)y7-$o;NlC9KrN1>L~{E188($n=E%q_nwS0TPa@7BwD9=coT1q^>DVUiT%X z t~o;f`nqf`7jla3vhzD(U%JHkHe$%X}38cn_%99_g1_gMK& z6_q(Sn02`F0Eg#O&ukGa5z`E 7?#ivIDf@I@l26(s`Yo+(q z?T3h^P^EzvOZ`GAVW>7_UT*892ZNs}D6kE%uMgLK7KTFi=pP!fnQb;K?}u%zmNy}* z%1vGP97eQD{qzQ#`uC$hIe;~T#7aY(uW-g;9Ge>_YoBR4#KqPL#Rs|?w`AcHV|s%N z0}J+?9mCY`AGkLHAX_dOt;m!vMH?vjlcwH}ja9(1_flI=8z^cBw70g%p^W!_X@|V@ zr3_$KW~EfCmuD-SU?+T+0S?e=0j2hWv sRAe@R;Mn28^YCGd ziDthu^>}0Hc kRhG5qyr@O&cumn!~(sKf>I;g=@<{Hx51H2rfu!&zCxMN#89(qokk555e~ zs%KvM>0ek4PirGC-5M|Kho=k-uPmuAoh7C}H($AUUEZ!-eG{84r^7CmT*l4-UqkG! z!!obKk>gslH&GHdMRYguDmVTW*NM$H$%yMmb|fFwNU}3YawAFdX>ao)Zwru1UQ#3r zs!u9u?|w+!RU6)|oe;7|-!W9(v9;c@p5C!MzGvpXhaTS{Bd?8__bn>-9HaLQ758n; zw~*o69Il6Q+lR8uhslcD1(k;)iIZB|-)j=THw^E_y?#$GKkQUIEI0q2KYl>YL>yIM zM|~u}j3mFNCA+FX+!&JG9V5V!bh1W91TUDior4O4WX*PFdN73Q1({vslFgF~XM1lj zLT<=+$@j?q1`pn}(mc#*SZS8)xII}zk7}8#wLze_ddw$qO2TeWy1uw++2}WW+-#wV zYM(6C`{5(_O6$HFcZbm`L@1Jf-R!he`)j_CyeMqJ7h5s50lkuO?;N$iWPC-j$hPFV z6a-|x*ZII43R>`s08z`gAZ1*#MKbuY8Ke~zUlbyV%3ubOEXeR-wJ3;^r(?-WSkp$q zc+7k !t3VLa7e^ZjeSf6e!=`TjNEzvlbbeE*v7U-SKI zzW-k`Uq4;wf6N#5ISRaRfQtJB^UMCGPrp=Ll5`+HhEX;Cz04OFe|LAzP#&ml7H* zUkG3+)IisASS!%@QBXc#P^{aKCQ`H^34^A>8n7GwM|fM 8K8143_9L3lGpOhl3jz<{KgN6?erV*~y=-ge!_>KP|CAu|@E9=bMfcp!Ae! zbRy}z*FQFW( Rj z*_)qh>tw%th1Ck(HoYyzAf#%0I#4fUTE8WW@(c%%VTrwn^xKs-7OM8te#c5TMD&A5 zTWx>Sj0i{+r=91%Jy^FWH?agp2#3YA^;!ZKkVm&I9g_DQfiREBc{c&}wz>Yc!GDxi z6sOaG9l9;wbkoPq0&iLaH|ikkvL~HZ2dOuqew)4>s~?CL=G&3>rK