From ccd2195d272c72a38535bc30162e8fcbef1655af Mon Sep 17 00:00:00 2001 From: Richard Dern Date: Tue, 25 Nov 2025 18:58:21 +0100 Subject: [PATCH] =?UTF-8?q?Premiers=20mod=C3=A8les=20pr=C3=A9dictifs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/08 - Cadre prédictif local/index.md | 52 +++ .../figures/baselines_mae_validation.png | Bin 0 -> 80577 bytes .../figures/baselines_rain_validation.png | Bin 0 -> 85727 bytes .../figures/models_mae_validation.png | Bin 0 -> 103849 bytes .../09 - Premiers modèles prédictifs/index.md | 93 +++++ .../scripts/run_baselines.py | 344 +++++++++++++++++ .../scripts/run_first_models.py | 345 +++++++++++++++++ .../figures/models_tree_mae_validation.png | Bin 0 -> 107254 bytes .../figures/models_tree_rain_validation.png | Bin 0 -> 77416 bytes docs/10 - Modèles non linéaires/index.md | 32 ++ .../scripts/run_tree_models.py | 359 ++++++++++++++++++ model/__init__.py | 28 ++ model/baselines.py | 77 ++++ model/features.py | 215 +++++++++++ model/splits.py | 65 ++++ 15 files changed, 1610 insertions(+) create mode 100644 docs/08 - Cadre prédictif local/index.md create mode 100644 docs/09 - Premiers modèles prédictifs/figures/baselines_mae_validation.png create mode 100644 docs/09 - Premiers modèles prédictifs/figures/baselines_rain_validation.png create mode 100644 docs/09 - Premiers modèles prédictifs/figures/models_mae_validation.png create mode 100644 docs/09 - Premiers modèles prédictifs/index.md create mode 100644 docs/09 - Premiers modèles prédictifs/scripts/run_baselines.py create mode 100644 docs/09 - Premiers modèles prédictifs/scripts/run_first_models.py create mode 100644 docs/10 - Modèles non linéaires/figures/models_tree_mae_validation.png create mode 100644 docs/10 - Modèles non linéaires/figures/models_tree_rain_validation.png create mode 100644 docs/10 - Modèles non linéaires/index.md create mode 100644 docs/10 - Modèles non linéaires/scripts/run_tree_models.py create mode 100644 model/__init__.py create mode 100644 model/baselines.py create mode 100644 model/features.py create mode 100644 model/splits.py diff --git a/docs/08 - Cadre prédictif local/index.md b/docs/08 - Cadre prédictif local/index.md new file mode 100644 index 0000000..fbce78a --- /dev/null +++ b/docs/08 - Cadre prédictif local/index.md @@ -0,0 +1,52 @@ +# Cadre prédictif local + +Objectif : poser les bases d’un modèle sur-mesure qui prédit, au pas local de la station, la température, la pluie et le vent à plusieurs horizons (T+10 min, +60 min, +6 h, +24 h). +On garde une approche expérimentale : on cherche à comprendre ce qui fonctionne ou échoue, non pas à atteindre une performance commerciale. +Il ne s'agit pas ici de venir concurrencer Météo France, mais de jouer avec nos données et avec l'IA. + +## Cibles et horizons + +- Température (continue) ; Vitesse du vent (continue) ; Précipitations binaires (pluie ou neige oui/non). Éventuellement : événements extrêmes (forte chaleur/froid, risque d’orage) vus comme des seuils. +- Horizons évalués : T+10, T+60, T+360 (~6 h), T+1440 (~24 h) minutes pour voir quand notre modèle montrera ses faiblesses. + +## Métriques + +- Température / vent : _MAE_ (_Mean Absolute Error_) = moyenne des écarts en valeur absolue, facile à lire en °C ou km/h ; _RMSE_ (_Root Mean Squared Error_) pénalise davantage les grosses erreurs pour mieux voir les limites du modèle lorsque des écarts importants apparaissent. +- Précipitations binaires : précision (part des annonces de pluie qui étaient justes), rappel (part des pluies réellement captées), _F1_ (compromis précision/rappel), _Brier score_ (qualité des probabilités, plus il est bas mieux c’est) et _calibration_ des probabilités (est-ce qu’un 30 % de pluie signifie vraiment ~30 % des cas). +- Événements extrêmes : même logique précision/rappel sur dépassement de seuils (chaleur/froid/rafale), avec suivi des fausses alertes pour rester prudent. + +## Limites à garder en tête + +- Pas d’hiver complet dans le jeu actuel (mars→novembre) : les régimes froids et la neige sont absents. +- Aucune info synoptique (pression régionale, nébulosité, vent en altitude) : le modèle reste “aveugle” au contexte large. +- Pluie rare (~4 % des pas), donc classes déséquilibrées pour la partie pluie/orage. +- Pas brut à 10 minutes : bon pour réactivité courte, mais bruité ; on testera aussi des features lissées. + +## Données et découpes + +- Source principale : `data/weather_minutely.csv` (pas 10 min), enrichissable au fil du temps. On peut réutiliser les CSV dérivés des chapitres précédents (matrices de lags/corrélations du chapitre 5, notamment) pour guider les lags utiles ou vérifier la cohérence. +- Découpe temporelle sans fuite : partie _train_ (début→~70 %), partie validation (~15 % suivant), partie test finale (~15 % le plus récent). Variante : _time-series split_ “en rouleau”, où l’on répète ce découpage plusieurs fois ; on appelle _fold_ chaque paire (train, validation) ainsi construite. +- Normalisation/standardisation : on calcule les paramètres (par exemple moyenne et écart-type) uniquement sur la partie _train_, puis on applique ces mêmes paramètres à la validation et au test. Cela évite d’introduire, par mégarde, des informations issues du futur dans les étapes de préparation des données. + +## Variables dérivées de base (simples et explicables) + +- Temps (_sin_/_cos_) : l’heure et le jour de l’année sont périodiques ; représenter l’heure avec _sin_/_cos_ évite un faux saut entre 23h et 0h ou entre 31 déc et 1er jan. On encode ainsi heure/minute sur 24 h et jour de l’année sur 365 j. +- Lags courts : valeurs à T-10, -20, -30 min pour chaque variable cible ; deltas (T0 − T-10) pour décrire la tendance récente (la “pente”) : est‑ce que la température, le vent ou la pression augmentent ou diminuent, et à quelle vitesse. Les lags analysés au chapitre 5 serviront d’inspiration. +- Moyennes glissantes : moyenne ou médiane sur 30–60 min pour lisser le bruit ; cumul de pluie sur 30–60 min pour connaître l’état “humide” récent. +- Composantes vent : (u, v) = (speed _ *sin*(direction), speed _ _cos_(direction)) pour représenter la direction sans discontinuité 0/360°. +- Drapeaux d’événements : pluie*en_cours (rain_rate > 0), vent_fort (seuil), chaleur/froid (seuils). Peuvent servir de \_features* et de cibles dérivées. + +## Références simples (points de comparaison) + +- Persistance : prédire que la valeur reste identique à T0 (par horizon). +- Climatologie horaire : moyenne/quantiles par heure locale (et éventuellement par saison) pour température/vent ; fréquence de pluie par heure pour la pluie. +- Moyenne mobile : prolonger la moyenne des 30–60 dernières minutes comme prédiction à court terme. +- Pluie rare : classifieur “toujours sec” comme référence minimale. Si un modèle ne fait pas mieux, il est probablement inutile. + +## Modèles à introduire dans les chapitres suivants + +- Modèles linéaires avec régularisation (_Ridge_/_Lasso_) pour températures/vents : même formule que la régression linéaire classique, mais avec un terme supplémentaire qui limite l’ampleur des coefficients pour réduire le sur‑apprentissage (_Ridge_ pénalise surtout les coefficients trop grands, _Lasso_ peut en forcer certains à zéro). +- Régression logistique pour la pluie : produit une probabilité de pluie plutôt qu’un oui/non brut, ce qui permet ensuite de choisir un seuil de décision adapté à l’usage (plutôt prudent ou plutôt conservateur). +- Si besoin de courbes plus flexibles : arbres peu profonds, _random forest_ ou _boosting_ légers pour capturer des relations non linéaires sans rendre le modèle complètement opaque. +- Évaluation multi-horizons avec _time-series split_, courbes d’erreur en fonction de l’horizon pour voir à partir de quand le modèle décroche. +- Pipeline d’inférence local (_pipeline_ de prédiction) : charger le dernier point, générer les variables dérivées, prédire T+10/+60/+360/+1440, journaliser l’erreur au fil du temps pour suivre la qualité du modèle. diff --git a/docs/09 - Premiers modèles prédictifs/figures/baselines_mae_validation.png b/docs/09 - Premiers modèles prédictifs/figures/baselines_mae_validation.png new file mode 100644 index 0000000000000000000000000000000000000000..8f6b5660b9d444bf2f87904a16ee907e796ebe14 GIT binary patch literal 80577 zcmeAS@N?(olHy`uVBq!ia0y~yVA;UHz}&*Y#=yX^G55qT1_lPJ64!{5;QX|b^2DN4 z2H(Vzf}H%4oXjMJvecsD%=|oKJwpRMa~*|@l9GaAD}DW3xC*`eqI7+qjmjYm3=EtF z9+AZi4B|o{%$Pp^QV;_p1B0iFV@SoEH+R`fW#JWAOKRu;PWf45H=mIK3^cW@Z(4&{3=A$#OxzHrW-p5vgcT&k zsRLmxF%gP@uskwVHb7VtE_ozC3{qG+@c~CxT zrAI=xT#L%qwSL$lob&9=%(CBax2so|Gcd$zY}c0OVQ47%a)6ot#=~}bxo@B1>;GPj ztA4w6#{2L4e!u(t-zM{t%I|-_-{Yp>sP>2J-S zkH@3m-`ktK%XXJp>ILd_2+Ze=WFcd_sZMfQ_Z;C`2G8x#qRvxs`u{i zOiKUp;bG!&iTwXxi?w$Cc+~y&-|zR^v)AoBrn*^THG_h2KqD)IgT&uoUpGH`lvMrs ztohsN@pYWlbL8rNBxYx2as75Rn4-V`&n3IxZ;W4GUfwTTdL=MdDC+IavfH`22b)+0 zx2MmqopxR9?xExI^*QhNexJuHWpaYg;sJxV`2E`Nb8m0EQ{?S!-ptPb?fw2bzpYwp z_I|r{T1#8|?Y-*vzTe(4Fzn*s)L~#a6!7WQgJ%A1&z_})e-v8jbb57E*R<(ttln%m z{D!~&N3*@)wHr51yk=zC`Fh>%J1eymi;IdZ>3qpGXL zJE8W&LH2Kl`R#9X2rB0smo4vk6>;tA)tkxvw$JM9-tBmN=WWQ|tpyLAs((J6KKWBs zhStSf+3Vl_kG0=^-QSyc%KIIU`EI99kB!+HRaduf^@N-G`~SX~8XniV%COYcwRLXw zyPal5Pdv1>v^FIkZo4`E-xu}hJrx`O|0;fVX5(c)>$7iz6B8G%-glv7)2dagCVXG- zvglp>@?S}-pR{WwczJu@-S+p}?cH%+Zv*QWY(8&y`&f@;vZ|_Tp45$Buh-|N&n=yn zts>j?$ff^n=wshG78k$Wudk0z?lp~hq-t=|GW(j&?svOh=bX3wzNPef>~&S2uNI5l z`^);JUm5QC{e2mKmR3Z;d*k)%1Go6@*t&j~UqKK1{W#n9e?N}f@4D{jyQNv1Z|aNC znAJvU4-Pcy$^H8NK7aquv-xj2)#tq^n3VYQ)6;KXF8lAE-*5BjgxU1_C6|5keZ`>|IKWE z-RA9?d*HgstRIova%RSsUJc!LGi~LS6{nGmA zU3>d}+x>o%Jiq3X=aJ|8-|zb!b$*`h+vD=}XI8`&Fif~u!@#g$>c_{&U(eo_e`7=9 zzGu(U?w^>beE0qPeZTW&E0;d%RNr-a-L6+!_m6Z6-#vdT?d&YkZ!7FR9uaK(fRxab)o16O# zlaKvaKY!}fr?0QBp8mf)clo@ktP{sS>D9kj*k0q@##3l7E-wE2)925Br{``s$hJ?_ zd)g1Xzh8pm@9(R+1Bhv_Ad6w>jPae)jsk*PfN}+k9xSFU#Ba zGwuK5mp7g~eY&%jt4??8%bl+)v+VbNE}8xPe*ONdf9-!hnf&hSh1$yFx*tj}nU%kb zDUUsxVDfQA?bXsP?;Dx&|KCXN|LNuBb?3Zo)t7?))we6Pw6toh-|a|Vecj$duI~Tu z`@dhkdR4Qr>f=%IzvoS_yxyB|kSX5JuW$Fc|Np-4-|+qOIqUa7l1)EUu-N(MR?R#3 zd*5L`>mOn3VkAG+?S1{?z5TS)Uv}Kv_&v$N@ZH}(hq(1!O7GvxUi5>{CjZNei~Cx+ z#kcJ`J2QRW%cLW_`|^Y(tREli<*tlzI(q(keEr-1zpsWxM7;Q?$Mio<&1Z(d#~HT& zemve6xY+Gy{`%*F6*f+Pds%PgZohk{RDZ{VrjF~(3?=-a%AjMyfk~^^@4Gc$fHNdE z_U*nmS}zwYaoobW=5G1@yRq)yU(Ym5ZnO61ob~hb^YTh2?P)FT^S=Ljz5e~W?VrzC z?>^#?o4a;*&dW+&HAMaMZUi+`*sO|SV!e)(2Raz#ATAe#RO}BWuZq$|&ch_&{ z-+rgad-m=9|9-uGXL>bzq5d%|F|U%$-|u$6uW6Sl>absEmVR!|1Wuh=$?JA<^?yG8 zYne1jziO^6sPK6I?RNh6zaI|s?_0J^tvt@zx%vHMf4h%wcRru@uI^e)@!1KT!uot7 zt3U3WcTr`-m#Vz2SHt$5oUHy^|Np<=@Bf}ZeOrF-JpH|2CgmUP68#quxTxqr1LM0- zppr^__5MFk_5Y~^S?vFP_x+vHDI0j6FPZFDbUkp9?uGOA|KC`@TCq50kx!?Ee`x4b zYqcuglHJAUESFyvim*!a607uFvV4Bst-arjYJZh{kNNst@a4X#Z|YvHTprac-ZeFS ze(kmG_o`m+yv?dUZ}H9N8IRI`etNoZ>-D(Xv1Sz?67HYY-~Xon;mY9Uzd+?qy^#0* z_Uanja@AY+>VD^zSO4wR%zXQHf70dM_XG6y{YWaeJ*vjA;5Vox<6zCHqpC3FLI7*W zzAIJl_W!Rd-)sBr#^JwmzD(ZFwO20k4fSaZ30!g;R4FIM3+o3i;F|N`)a(boSFJX7 zm_1yWWvt)1Y)P=jFQK=gMV0YqZ0{v!$e%ua`u3e~n@;O}j&~1@i!0K(V0c{Sv0gZ< z+YXj#W_QCi+~sSx?B26x%^B6BHorFQIcN2H$LW8c=l^f9Wm~0osdP#U*VF@-${sYb z|FZJp?CUkZcjNAP<$jwWyixWomX!X_3M9npE#|z|4&i* zs?am{DjxIx{~7ht&$jf+<=0Op`}0-bKQ33j#=7?H*6WAjp0BU}ySjABuhf<1)2^rM z-n=s1=kHFXqs_nMzP`Gu{iM|FeogUpZ=c%BSHyM1_W%2}+B(#JZNZgt-;ZI@(b@n1 zzOTO>^Y2l&{;oRTSHeqMC6f&E?pR10BsBc~J>RNyRcV|0{F+O1^S0kD+jcu|_tu>; zf3NB7c+kXme}5RSjCI)>>1;LMSt)bhu3SE^Xt~ui>AW3@vrk{0ed>1o*Ta`L^1Iqz zEy-!l-Ez_G-@KZM|Bihv*LqbecEg;X;esuw`K{2F_Aag{^H`7Mw|~FiN6)vbjoG9o z)wo)+igSWPyIj?Z-%V?mec1KhV+up|$|Zcek8aXR+Vbq|?B}yqo%U3p`()O(_FGqa zZe=UIjkTX4wYq&#+MRj2+ioa5D!syD9rVc2vp3*MM%39|pak{rv;ChB&gHB0?_{sr znRes(^R+UP?{;cdE<1MZ?Zww?u6y#XnX15*v!eFz*Xz4q|M_%Ue_D>$mX=Fbt~{C5 zd0I3)M(|rjCaB%2EVsE}&k>i%$jBS7UsP0gu5_2HTypm5y-Kf=RZ7rD;;6;)xl{q?%tZF~KeoZj=%rCadNzwi6Yxusu7u)O;WDkWC_mZ?~? zXUQa?-w)qxJTCX|@1H-P&pXGZuU@;2tGaqGU)&_iIR|DaG_o?>jnCUu&cM)6QgDEg zeMibvA(>SdJ_-f8%M`YFTe&_yYkt2(`}E3PN+F^h`y#X@m%ZXqJ+)<5#Hx?05?!u_ zUX0jTlzQTG=u$ziyu7?C*E_eonzJfE>EhF0MekMBndZ+Ae|T+PL1^A8ozv&~{?t3I zRd}wta?dL5qcg$|2&*!LeqF44(<$_1#Yxt+t8T^_8P2NUa1RX?S|y}EVbY;ry8}h% zPD+VuT`VNMe&4TE|E&&w`K2xR`D%Fl&-0h>Z&_9SWmd)ag)Tnnd&T0;xON5VAC!70 zk+pQ+fh@D5y+T%Tp-bYVj~1pM?|&EGc{<{o{fB&=fF1kaAK3rVL)$?sQ(Q)!q2XOO zmktBNq6PZry~0lJ{eCZ--~La*>QienDuUO3c^W*`vGJuJ z?e_cIqFJY{@Y>*FZy(y`^7&5K*3X%zy=z()XLiSZdiCY9fB8va)ut&j5gQU3Z=bV# zE>m8)l<>8nyAmvYFeaE8H$TE*pEvtN-JR#r?m|U%x*^Xzr?8 z!L6YNvgxw*wtYegpP!#E@AOn%yXX3$)ofm^*PZ@-+rEG2lc_=$=66dbd*9G(3=Rx@ zct3spF3r$ymV!*HH#_;dvoVzDgKO$Z)7R|!`D}LV)4rt8&7wmSFf>DS+G=a+93nWGXUq$JlkHD}_g z;6q>4yV@qP-FvL^YDVSW^-8{~!m17ZcE4VjUFO(3e`*7tjappk`OW9;Uf1n=yY2R! z`xOa2)tunF^>41E{lgWfPIq7RxGc=9&mDeH zeEoqL9aofj87|mPIKaf9;N=yza_5Gs14nM{i4|4cHFw_$&BO(-Ru$ZiOrI-SYW)42 zh{aRgn5)M=JUsmOa$8*0OI7dGSH@4iKIB>^mv&G5%>k7q*I#?a|6{IBF5Nc2{@=~H zdAnXNQ`EoyvHthl?YC>!DurIpuuA&ym^FC+)}`Llqueuh&ANVCC-9>|)t8L&Uzh#u zw^qmIcP;pp>pRcpX1!EJq(W$9<;lGT>sx2NDF61wME{wR>6ZR4zqX6pZ%#j7W+>M; z{mmS*`npIc3$6I{=UVAjX|Ll>`S)m zvE_5;mfx$)`@G6FX{KGpgGTmUFPpP&$mUu9`EdAd=~bEEv-9`8+;m-i!^6rYOWLj< zh&lhVTYq0i#r(ISXH_OGYyA6p{(qjzo2J)e9~R@9y?lji)n|Nrm&+g86T zGP4#`_?}dbEWca&H~6{9+3TzK1+_-6Na;79YJMks;mY>uF-4uFpx(%t`7+hd=axGi zd&g^j=fcAuJ6|m7R!o$AtZ*u!=)DszMFFQ#>xj*Xq`*Dc^;Tfgg7BfA{O zZH3sA)}f15YPoXC`|iCY;@Q7XWVQSxt++`yJL2MJt>5=6>-TZ{e-GcQFI$u2%aqD{0x2iGEXKE{G?G&SWv06qe+9{UTRq`JF=d_HVi8ZNHZ+xAME? zzW(C2zPtDT|11CfdH#Qyjm!Imj25*7E?Jotci$}Zb7uVBWuI3)u>ARCGPsWF<~ris z8Dr`gZrU$q9Z+Pj;pYB%v$cB9Sv=;EHcWCk^L_v4bJo9?Yq(vG_&+1L@1y_b&sB+) z&sl>H-B`WL`um;Y*sGIgZS58^_S&~X$p7Slb0rrX*?+E{^kuV9Pn^Bs*J+n6gfl~J z_3KL3n6h5_9Uba=X`;Jaroa8)lGR*$3O;_mk=%duPDs3;^;?tZ>bG0(-f#UDTKGoR zytj0g)au&6_YV4zb55{K3rl5XNMVp?V8}@Q^W)>J@W;|-IT1eYX^)O{zAFQD-k#e3 zpAzg>_?%b9;==VCHzcmsg1YMO%$V7DK3u(i{rCC%nak(i`B_<6`R?DX+exKguZI7g z@9gNj#f{vhGKXbfCmfe8pJN@r{8s+oIg=+p291#1_J3anYKyF2xl;4VU;FQOiucX4 zt^T!s_2awS^W)2XnC9O%y&iM<6{v^i5VCRc^^$hkvW(I{Tk3D#y!r0?-tYHrm%m&( zeb@Z2v)F$>Y?rTTZEby5bk}YDR=MEYpceN2xX{q4psvxs;}=W6T2-EZ*{MFSVEe`Q zx4uWjv!CCTdb;NKo6Y{KlNU!^NM@D$eCJL~ynBzV^|ibI-tB&$_kGvXr%(6&`SU02 zeB?)|b5k^fYmOd0y7tk%>bG0>gX)bN$yefR+;@RSu-?7b{!m!`_0`k5Yyb9tIK-Wp zZ(sc_=ld*nx$yVfZvFfBegE&{T)pWB{4BKd1@gd>6%=X)PyH~{jU%&6ysk`TP z_dPQF@IL+Hmqv6{CbJ*h9bY;Yp;7=bzLruZY%ib(pwPTt8{C8nf@1#ujjmddwdVR~)V1L`IvCE!M(umVp@v5Kg z9m534O;e6~ee+{rU?`dPxZnPs>heD8cNWzj4zgQrxZAL-flt!t$lR=~Swa>kVt)Nv zr1I{}OyjqA%kM8`7h_1_&;kuDPq-8!xb)Z)ub2!)))cd^KY~7a?cJ8~fRABjGia=i zA!uG$tBh62is%~-zAq-uG&%Zt)#`Ocm+O_+Ug2PPQCBp1FEaxJgG2R|$DVsn->ZBs zJKMT^op+kz=Zx0V&U}_fzVcqqTEWn8#t}R|otgN2Zh4us(e$c?D+_HH6h2=#A`2eC zX3*@FBYDhw+Uz&79^z4(e%>v=&s+Udd;OlI>UTTSWBLs7t^d)8@|21r2Mx-T(ieF4L2yvMr4A_;8Tfok4Kz2}t`+zwb=+6$Uo zh~HGMG&fxF%<0pcPwVYIlRMWmdr^naryjyfy*KqHGg=Tlllam*RhK2oFzq{mR&}{Skd8VeOKc7E% z_5JDT>A%+p$HnD+et!P@|G41b$Lkgc_v>B%YO`zay2oEPUHbdF+;*P(?}eXjN=r-M zeSh`p)dtn6yL_%+EVcbL_xX|6E^j`5KO%83;@ofH_d9F)9&8qzpZGK8TsiMP`;WHU ztLw|Zt8Q@XVhNi98tb$E^AmaO&D_wkI(N<1Z2P^};%5A8GBq>bw(HH}pYk_l zR!Dsle;TYmJqr58FA-s&D4(F8*%4)?oXF;O~uylm~K=$9E^;?;1X{Oir3+ zf46#Hopyd+F1t)Y186(|G&Fd7f}*oduv7{AIv)lB<(IBg!zWG(Z!FpSS}p$i%ijkq zz~SOyaxWVcR!gcEGHG+!|M}27x8M+`S;hs0@YJij%kyU&r}x!SBgy#ws?7wyxcF>lCPc@%zbS z|C~=xPOf`C^;axtq^|6QV*8HMMwwQzYPR7eJcg5YUD;r}<9TRx$=~O7HRt|q_$Y6c zYu_OV3U|jvALE!oQF)h}bB#vMhJ$Qn$7Rb^{#|8gV7Z*tEc-+Sk>u(H)E;rsOOS3UW*Vbdfd?UVeIIWA{*oG#j2 z`T7*gp6j59;HX&dxani1%GM9M42GvqpMJceQNlCOZvOdaq31WR>|VaBCCUM zulKl}doizL;=17bA^G=1Y90%PdPQg!E_Hi5H+TQU-#7c5%eIK}YTpUF8?g7+7P}YU z8$L_dZv1+?%gr~r_x7XOc{?L_>a7f&6D?D8E4kp3_75Zdz-3;W=DeBXS6vs;TFCNN z(aoVpA+ASR!R-<^rw)UMve&JOsi9VL;|%Xg&62*gcdn40^!NKWuD#v6&i2z=yG4_p&(#+nN6JE_>yF_usOA_GIdc%-zdg zii(Iv++Vb>uvghiOj|m9+sbdBwDvlMwy}n{S4Qic+?|nme~a$ANSW(@pQJwD=@Qnz zM^16M3){TqOCooiHaQzqd;F5*ds9$J%ych%LQajGr>@Edfz7K{h1%wLBs5CAj5+;! z`t2=8FaP0Oy{3_|Dhr)iQyi5t(%>Z$DbNYQwE%x6H1_xlz3^uyLa>S^LeJS1gr$pTfd&Z z)^B+-;C4jzb>DsG=FR`OXLTOeRD+ruzF@s;l>{|6{jG^keA*EB7v1N6Immjv6 zv?EmWux~YwxvEjfCZA}nVAJpd{tW@1>%Xl!77{Dw9V!vT4XMZ*zRx;yD*J=J&yk#i zO|0)qK0G)mV=JJnrJI+v;l0-W&+2PRc4a(Wv|>?m$os&5X|KIvR{pF~t67*PA@WWNB_PlJkti3EcHaK?o_RG`n z^#00!GM{Tl;Qrn<;g0&JUGCbtU7EY>x2EM{-FsOszS%jGzg&9HXnVjZv`u$)>@zXL z6`89Fr)wr&y*VZ3@*~b$I_DM{|E=AAo&AjJo}%vCF=7?9stSU#@CMDqFHZbxL?-D4 zb2R!~x^m~qtkvvh(etBC%~###)0Dils(k9IwJR<$Sh;ocYAh68c}shTkxt0rn%HYk zqD@8ZM4zTUcYVVw7Qrj_&S>uP%xPXOObiSqs>=kJ9K>eRw76RsI9(%)ns z{`bzR@~b_n#%I#^mF2H~a%CB_S?S-^TYBGF&su4J*TC(<-y|2?XCZT!=-yM=Jjpk1 z{e}Z=KXbJXI;os$`rYno{O*X;_vfJtbvM1J`qa8O?fXTOqxn;HxD8u_j_)z9{$mJl zGt9c;#Kdj5dgaSMb}BF8f=u1Aq_f}7?#ho^%NG&3`;~W*%B;4{ar3{1nMccS=v*7Q zC(X?y`ur9N$5$Th5`j;b{u1PcEsWlM{no#hsebL>rTji8Gh}+MmdJV?d_#TR@62ze zzn8nWt@^?>PfapLQmi6&?YA2@LpCm3yJ(xzy5A?yp8D!v%M&Sit!SUtaVOQ&dp=L` zNuJ2Zz#!DE+0qdi8#~upS3~2$3&l*sO{ZjZ9JRI$x-50r>hf>zC0XmkL=zpSv(8)2qGAPZ-W&9R#ytf#fBIBZZdLIip-*m?idzV$ zLH13Z`b}QTH%~v`_iEd#(50e`d%0GZ{$BICYPrHr33rE{6gJ=UmreFIEn<2deZ_p; z@2sr6tf@C<{e7JieRIntE^qF`;ccy+(@cNP(g_Sr?9LWDem7b-NPfeCl!zUtOXdk> zdAXz+!P;UEqh*q=tq!j_n|1N;QEBB_+dhT<4FA_Mb=KPOtKnO#tyPz~P4E4tz9uBq zbVEf#%F52I$LKutxUc*)%SDddPYO0 zV-w%CvWPY4#Vfv^-IX7+=+x>BTI(ZCpKjRuUuFH}^toYYueE=XIrJ)!p<&6zlKpY4 zd+&(x|21~M%nvHd{VH5nNd=$ZcrNUE$n$NdZk^ik&OKP_s(^jU;XeXX6DR5|mStc_ zk%M&ER{!fZPdLEPCwHq?P<46CqE$c+KNwkl4JZuHcTpL>3- zz)rWDQi-dNg~VQ)8k*>#TO-G4I4RB}f$@b&@7Z3n`fx+;SR@<##BHuc#Z!UQ`v9WW*1Gxl6>1XWmVexOns^8?i zvWI1)lczd&6fG%-=OT^Z`DP3bk5YbyZ0?z2kak9*+^Y81mz4Kh0;0OscDWx-{)Ze` zFIJxlY93Wv|J`1ExK8?)^xD;@y#B6XU~u@pXuZ^|Yb#u)UDwwM;otBrtnbRoWs%E_ zzW(UCqP*tnl@kk2Go24+5@NV?bq32b(-jAp1irFgxOqDL_j0CJB`A%JzkgR>d%ZdC z*18N928Kn;UsnD)9_kp__*M6n^!0_=S$Rc&_s1yd9GP#s2Uma*2(+pPgf$&0XFy>sKG6L%AcUKwY=4Z26ium-fD7z5#7q^rm^fzq2ML zdii&&ZGku4wjF(-8*?Zt;Nt?lo9RpVL3LSzjN=*;*Yzg*ujGc^`S@MxZ?NBGe&x_= zR<$EezSF=ZuJ#?B|fIS?8Y%3Mjv9Wf4odwm!Zl|BJ`IwqU0zG?vI6p{mWRkCnW6eAI#|NoDVZ15RhSxVS8`GM6n{ zcF33U%Q9xa^)vEHeM{fo^V5EnbEiJJepA-sf6{BUZs)TbG9|HmOahfkK2q*q&O7*i zzkKcfuj7CFPZeC2b5=Xlq;;5S{pFimcBO_oPrdypbVjg*(ax)RPC6Qu%j9w$$|c;5 z7&&zo%noc0HVx;`*=DyrD=%cbY>?5B`D-q%T(verNQ!|$p>{=l==(YMuI=7Xe&?iG zXltui9_zg8X{9FxE~}Vc-L!e-{~6F$mb$k3qf-;thE3p^sPp;UW&66HcX(99KwZIm zdn(^e`RBHB;i`S7_C@`-Bqm^d4A5FeHD$a^ydlmllSNK=?*HsZmZ?hkA?g97s zAcFy&PnZ4Ps*?98^nQqZkypxxkP{x-?yo{Px1L)zZ#}G@3GQF-aW!tO)}banZX11j z_5GXY$vrw!?VAN|)rpE0UYX?bSFmo~ubrXqS4n!Oxm^7cd~&5Pd(Nx(@mn2lvT;@y zt3ZY`I*(QJc1--T@cf)q%T!Pws#TR}*JF+Fl;{p!7<) zPUy%zP;|OZrW_s{NW(YofNSs=xY2^z-6fZ#&|Yqg2-VJvScD|9>pIF_(y4GyvRn@Q6CVR`07iw)@)uy%m z=xT%I25(+Xm>AZ_vrg*r-rOUoHE3OOTIA5O zWud(M#YIJv_G)W-Gk;!_y7^DJ_nadT98c@`c8N;BiZ6 zZ<*0h=zqD?-@~>RJD-MDwR+XC&U>Eg73O+bOf~X~y~UkZ6KspZzjAz5KjfrxWY6c4 zyK~;mSy3JL)-bVuMxS?H*}A=jAEY(!3wLX_cxbAuyLG8vW1rUlQ}Z_jwT6b)hK4j> zc(HHs-;-LQ;k+*l4_uN(2@(NivHvCer)e#%xN3fN`>by_)C8A(cKXVmy>s8b{GFGN zO`R)uBWhw%<=>+1H&->S=DYl6X2I3C#?bg*_aw4|)^FT-ao+EbmcI`ltKZ-=H7-@w zgOit+_nnEpzH#`X3xB>;Ui}=kmS;s=*hQ1rE0+$&ZStBuDg5Q79(}Qya>^Oq4zf7DzIX~4h_1*6Pn_07F#|WKX{e{b?tkQE`!QX>XvCH?}Qe9^?Tk9IAp3CVp zs63b=6ycyFrW^IdkDXs`j^OG3SNmD-htzCdRUhizI#o`6*8hk#m#by#Q>O}rJ6G|Y z>&<<5^H(W7wC=Vk<8s{`~ax-Igs| zOx~1!`Mde7*2K3aXa1KQT)u5f-c_#ljT+~A>#fqQlp9-Txc++V+g346{_0QTY3DMo z=EPoRUTnChq+)f;)f4xWW3P$^>AOv+Lh;uE<0O~b-mP9WI@(9?+rG`){k1zfxsDN3 znxq;DMR-(i)U&TTcceI{WdFrHuLt4X`@2>NE?BkA?9KLt`|GbB`)l4;{m%?kmMDCd z*>SG1?D_QaV|%zBGQO5cnAyW3mJ}AZZ`J?c{dFhf_XS`6Ym#dqCjaMG<839$8_5q= zxxLoqT>bUen)FIb6BYmC5{_9YLBW%=wk44V>tCG$52$m0$sf9I^9T{G9#{_)QVt&+3MB;F>a z%$#stp>e9yCBsJ1%&+?^{yiv(FJAp@m&?^NOO4+iUuwTAICaJB8sEbA+p8jMw_Q&z zybqak`6$+6^ZjwLS>?eeEn+Q8szI|69g)7iz1C+>oqqMj^ zg_ea+XU*LACnNl*N1));T-ex}45(4uR3hmo`o^Q9 z-MLRrOf*YA#&cR^>eQ+4zRa`yeq_t9`#(G%=e`%L-pw*~^{S{(i_b=xoz9w_m0VR5 zTFR?0o42^Cf78;f-fthX${+tDV^sU|;<~Ph2bCX@C0OXP94Z*nh%!fsvDiaq^lQ}|kr6@PCe zACl9tpVef@1R9zKa{6^VLsp%JDd_sOP!W@BP)2s~+xc+kV@;`>A`da4@?g+O!2|tefvlqwUiv!8u=E zT>LhD{~uLl;fO_7*{qf9t?zG(O4gpfpr~_|-QpaV^@4?KnNECK42o@rl6;j7NhMFG zhTrnH|C{oD-|ux#pRS#CY+B~C^Yin)!}Z=?$i4o4_rALuf6LC@WuL{fp6%n^+@BXq z`UNACdrc?p)%FNPsQ?{%mWT^Q7=qR${(T+)f0MAE#lf;0iR_?_AE`>J@47yB1!sM= zSKW9l-}v6S8&7)jHvh@6I(_Ad-Xiy&1_{SKpbla~Axq~maLY$@>9c2P)<2(2UR(bD zUfJKT*Q3>5Utd2z*SJJ_c95Ow)3E=^KQCVC6a)n+Xn5V|Vh8B$OpiSJpqWoqk@h z#_W-?&ivCq*B$)6+%@)#?e*uMBNt6L&~@m}&f>S1y!E%vExUEH&;DP<=@PClf7)tp z=Rc`4yz6JXV#cxQlB-s&isH>;Fl0IgDqPnsJFf)F9-uz4^6BX(zC@UBe82Dat=H@K z=f&6kT)KAuzhD18UuDjIyY>3EiOTM`dL)e>)yae=o&=Q-Q!B69)v|xvdikEsS$ojt$iQ>Uny*sZYW+^6TNKb=(1y|BRXu2tjHsS8&xjLl8fUHxA%sfXchuQG#S zQ-ys$19*azW6$*?eJo*IDjOD=W?$0*O|x$IOK1&>3qJP>GRc~Da_|(@*SS^SvXunUz~?2d{$Lg+Nd*3e=?mWj@fn(Bvr4e6@%D z(W6IkO{#)=FIO(eDYyxMyMn0mv??1OEl7K7H-G)-I9_n}Vc6oxuLB-7%w;fa>I3&< zDo_UXSjCdUf`bnSG8;DSFz7>1;U_;Cvg;{No6Q0?&Eq<#0ScM`WMBa8_fkwNEiKJs z?hq^y0Sz)AL7!5NtgPI5n<0rs7S!>A^rD!K393lFH(lAP_O2sxecWD)ECn|KaZslg z-6sN@CruLSlj;yW(h3?uegrn7M;SEH7sMURf$WNIG2J3*hn@wCL75XW^K-zW$>s50 zwXL9aWgxdZc%A&_ffRywsu`|cx2_C_iBHt3 z*(cOZ(~W-S7a1f1N+FMZEHaT20A;=0NPq7u(|T{vz<7S$_%HD8KR(mmqU+&9%f4NNKi~mO-;q+ie&- zkYFij>eNC!9(8qf zCC;PI&d-03!xf2Kib>O^Pd|=Q8cg6beDwL}owh4eCQp9sH+%N%$)H+wri^lAWMrPV zDri!%?(Z*Dr!C3qF)=lbbaibF4GoQ~t*s6E#<=m~YgPf}+^5fC^4U&u3x?!6rHvL z$}a?9MMjXJ+ZR{=liIZ>r7a2;h>D9xmzm|Z2U|YWIQcKA@54!KnCsAU|Ud+Ss;( zmTx3*B~FQ}c*r_^MbIU!3$o>R64U1tw#}{ibn@G2{rxFNY_gtxX$Gw%fh-qb0c8sj zC(u|P*BXu7?RU#^CxsXNdb#{IXqVijN%w0$_og=8+grVxSHbOo1*m(i18Na8RjmA> z5W{$=ncwb3)!&%HqoOh|c*Hc_E`0S!C{1cU@#oKRw(D&o0})^ zi7tp%m@1+E^}w%xzu(6em*>u0uxZn!xvS(QkOHR3r+?zn(9&;Lp6vW~a*fyOb=g}c zHO1Vna*4MtxfAgE{$_=nyQhmuNlV|&T){OPv=7Ww`5M zn{>{vFE6(x9p(D{?RNg%^V#cmF0=i3M0ncd$;mSpEL)~_b9aLXs9nhT7}UDkRC@iq z@>X8ovZvmca}TBOk8lotE&Ao&|BZL@>OQkuSA1S*R(Jnm*o^6t_x-I_?c8bkCN-)u zPTDAXiG<_zWUj=Xxazm2p!Rmop%zZPO4FPh2GjQhHGj|Ol{8j+VpjajXZpjh|DsjA zr|WG6RSZiPxvoxmfwJ@||7+UX*DU)oUl+xmUwr$u)xA~HyXyb0JN`MtzGU9=b?eUk zUDsIi;laUodtAH4cAgE6jeWar@$0HD)vN5)-)?VzF7p5NlK&-DhKF9eylItE{&L?( z-%UbU;=5DtQ)V`v0>eWQ=Y9w8Fig6zz){cbhs?qB#Rc=fi^$*F_386GyVJjG_JzgQ zy?*^Vx|Z|W`$p~iFaI&EUwr#@`T9?XcgN3N{^V-m_xddVnqS4UpG`|aEH>b`rQuT*}tSsuALZRg4o>$h7bTgQR6r18pHUHK|;FQJ+D z&9d2fpWb^vNY;%6zT zdhOb-);*xrS+8$zU;p*R#lv@xgZ7E`+kTs|yKfoKt8Jjp$nLkGJ->C|&E7}6EdI3h zdR(^kyB&*f%WqwB@y53Q|9;Utg2|-=g606w4wnfp@!JuX`u| zefOJ9-M?!e9qBB4xAQq@vFO`*)$cyWhjY5A&iXRf`=n&;^Go8ns%3sQA6&3J8*Q?ce8`m@Q z+gymfe|!Idsqg;(y1xI`uGi~ce+&Np^>M%buFq35e&7H9FCDb~*y&w+-tv|yzj8DM zzdmf2zXe*f2wDtgU-<0en}wily=GRxJ9!@}SyqZEd-<#|U$#i9{%p=q@rkBYzBz0m#p^50kA zhFFUFoU}aJ`Q6r_;9CExVA9oVMffYL|uX zQzO0dURq?U1^)l{_wV$V6|cSqrq2EzmAm6%+dIRrRT`Zy0-gMRFFk(kampd3w78y< zZ}*F>GW!a1yi?+oi{o4UVj4eeILud^T6D@Sor$-v@v8==wYprcMtH@o zw0Lk#IzMM>%asr_-?@{m-|sPglKkhf{Qr!}dnO(27T=wvth#>B%fMSx)^sjguwq~iYt5Y z`Y66(xySH^H{-7CSstXpk*1RFiBGronteNUefOWj{Mzca+g7hmf84(@&b4yxCjD2F zcO93j-eUQ`L%FY@bE4;DwVhf0*W=?$=Y;f%uDW&jb>~vARS8~hZ+E}nrzjs^+iiOF zJ!mKGWwEQu+G4x*EqkC@x%lW_le2!@RY#*WSDaF_6|bHDjDj>M5t(mrX2T>K~p- zyxz|~(;;6B*2hnI1fEV5)@xjpvRG^JmGp{}lT`DhX0JG2u*B~0tZm{x-3=|X%~r`p zcy-;a|Nl2H`0K=937V0M_eH){)%NoCj-9{G{@=&`vV*MRJA6HrzkarQHX}L4e@%pj z=Tgned!Kn-YqvT{8l`y5{=CO7y0KeuMU>XG_p9#hYgv`RJ;m#4Z>I~B_SOjpx|*aO zWj+X)X8pmQ;Z=R<_1N;8%KbKv!U`{hIDwks4u5LfujJTVQ)2Xe%I*Gl`@Wygq{BZh z(d=5~7nEF-JL})_`?p`eUXo?#yEb@naj5pn84vCM|LngVa`o%_`oG$%{$9Cq#+l#t zifWI^SO3|+vNbK&Yi;V*-*?0JF}HcEaiHzYJ<03UzD#8Cvu4@F#kodfMNTm9ACu64 z)aA3@uj$!r^i1pg6@`_RN3%9f=iH;({`EdDa+&c`OnGVR&OEC)_q(6(`Ip^3a$`Bu zzsl=@WuN$zAKiL?&Zzv|oe9tNE(E|-cLuZW)>=D~CIy4H>I`?b%_zCPx< zdiwS9`E{GlJ*agLwO^a@;>PP;UPoBJ|2*Z=CAj{(>7;(OcYy(sD~%pxO)}5DW%3)e zfp^s=llI@|>;G-`PSLF91BL9u6|3C#F0tAryZf!d_EiZwC4ZB*OUhk;%(kvUe0^6J z*LJ744d4y0tGK*^x9zcujAGTlI3>sGagXtx^ADw#xi5OW_}Q~4Q^SgEhX@z= zPUSHd4Vb?7<1y)Ll2_)$9S`v|%eP8YiLHFo7%}lcSJSkbzqjxIdnWZSQ&7L{Ka*v@bK})psi21BG%rx2b^4#cPifa<%S$hB4w<<0 z$)$_#@^`bI?sk{2y%K76xA3^^w;zxDZ>!DDc{IrobUMK1q!8bdYmwuYRp< zxOkhv;dcJ==f3l7Zr+_<7he3$`L90LUbU}M z`n&llr z+wT;0doKblaW}nmzwo$htaFv^{PXtz@2q8b`E|>s?9WGp{dd$}E57<(I%h*;bZsGM zF8h~u*qVZqdjhT|J17MMrw)@?=)OVw3?S{*orTg@*e=YeN zvgj&fXyKA4CyvY4zgf0*Wzx&}|No@VPU#i0nXKkp6dDXV=!8=^^q)rM(zNI1cM6)l z-CVuTUfjyHaFS2Axc)Zr_?nAvz31E2zB#46e#?2g-)rv9^Y=OsTYT13k8xScgs9U# zGmVa#wqIY>cHZW*&+6COishGm&3C$-2Q?YK-z}ei+vZj6(zxJR9~ZmKn-rcUu>LpC z_M~L@j8Z4n^;1q-fq8N_s(Lq{ETHDSyqoh=M${jTJq=0 zm$>zwY5_)p(m~GC^zUq9dr=g(dH;dR%PT!*e$SW|=K2gVeRJ8aKjW)e{;C;O&(*S~ zTAY8h%Bs5R)cJ28{YArKuV<*T?%ejZV_(^e9am_kM^UKwpeiEPwEebH$B%lA2scvLAiw$8|` z3~!Kdv_XvD3Ft3tZv@Y42yEW8$q0QM@Z+LR>yC+ECY9N4D7#x4zWd*=*UoX@-q-)X zeXr*8*$LC<79Nwlwmtto%X?W+@x;KOb6Ggz{hrT#wcqcSE9zVSezW=Q$K&$+l{ZgK z)y{o+X({Ku-Deg&KCzJnI&KZF(*%#K-nj8%E`#ADxl4MDtxrH(c0eOlkSVT1pam=) z;l;(9Z!;vR*j`}fHk3BW5I`I0YN~kp^l71hW6u&np@@!1%%QNRiqzCph=OGTN@={j zyyzpUkB&mR*Ej~lU|}&Wm}B+o)w%EP>@&~P+pE=UYC7vz|(vcV&1>AdoL zmB(wh+yDFVIC1&Yxl2dVaM895&_NbKeV{~WXX{l+*txz{x3``z;L<0+s6 z4h}H$?@+n+;9zsK?DBrQUnk0L=bEoxxw6nxU-cfSxo`b^PI1nqC7$1|1pB9!*r~h~ zirAcf-tU`U${x`2NST*jN`Fm9?rctwZ&)o*4|lTnUT13 zzS^w4#cOXabD#OPa&BZ?;-+s#x)t2PPoF+jtq#Ayd9UjATEF<5HH$%GWp5rd^Ov1m z{qgbf+e@d%W$oO#`m(bM}0C@#nmpN%fZnq1WAys5G0E z@GHCbZTWgV-d;7y<>azXVf9@r8^U7>T~|Mu+9P4O$hYY4&gb(sM{Z8Ld1GVp-;>%G zw;aBmxBKkhKkMuNo;HefQ`sPNoR*D9NjM})V%Ubj1H zzFqB_4I3_)-AG`bt`oVlXlbe2f6cYusxEn|@BDk+E_eUmZ+TL)pRe2f?vuUy-g#AT z3TkJ8TZ^$vzL(1u`_8rgb|V?IO|5^2J?LD5--{wXJbL=DUA}K6dzi}oy5DPe*T3EW z$fLjb$HVsBb|H<1LaVFa?L0pB-_P^)eZS1~_y5^s9r`rP!1leMvfGX8@%4AJ!lD+% ztq-}HD;%+P>(*~iCi~yISN;C&KZ_{`Lw?GEvdEITt6Ent<30AM`*_&bQ(l5!zkXe} z|2*hCG9lAjpmvJ&g9hd|XU*?#nVq-mWS`9^kL^Nl^Xq>{XJ=(?iq7AA)z9wdld$if zuZG9()c;a`zjpg?qjg8FTD@NLSSw=6iXfpg#(8%v%45HZeVQb6uyeuhce~GT+PwMh z^!oluX|uMKg2wdt?f*RZR@!g-t$W< zH&s(E>5F+!(<$t<_B|au$+!0i_*4;|5}ET>uXXB`g7(e@O}fba-gH_oyEuLq|6aa+ z`+qyE)vU_AEbKm=P=5F4`~7(w2wIX6I$` z+kTm_y6w{I#jFqJ)&0s0|Fh^`uBjc$>-ydoZoOYP%QSo1CbPWTrPpI?uU@_S@3dUS1IF@yD*_kS)c*SN(HC_7!p%LE zpKCw^a?{VxvE2OB!0fl#tqkSzd#vIy59+?Z_&skQ^Ry{be$@T_8vg$$D5iJ+i%g$; z^_gk)+pX8{r0)NH_kC0>sDrTkGr#p4gZr13djAFYEVf^dtKNC~-JZ|q!nRAA<;<|I zzp%h@-}`;P&(;5XbhP{K=gX(`9k%8}?(VnS-fjB* zZuk1Dx$E}-t1AC@&iehE+4lAO{{Pvv%j!PpR2jY99}aQX${H3va`~TK`sJeg?^my1 z|D6sxba3wa_iI4ItNF)zB>$ZT?JYii{(SlQ#j94Gs^1s)x{;ZE*X_Gyw{zFZy*?(L zU-Fz^(&$KdaIkQZ{I?s){b3(Jy<9$j*Y)uApVQ~pihcUQ4yv0h)VjO7@799)5Nq|S zpH2<0sjRHrx6rwL*I%xm-(?!(s%@9e`)>d5BmegG_dZ`-CUf*=`uw}k%DU=f|2>@^ z-?ryI=(wubfA8!6TPLm$Z$Gw8?@V?{H_Nr_@%3;2Ify32UGkb;SNCFJ`yGYJe3w)k zzn<3L51QG94|6-NI_j}I{?inmR~}4SH)ns_Jy|H?SKYV2-|ug?%=`Q6Yw`5>s+UW1 z^QzBTKHqVA%8NOyEb>~ z2g@fDobP;{U;8cc|4(jly)WtpPO6SmO)gFU-)nx)B8BPcyy|zE#j`;}B=3w=MV(YP z=o;-=%C0|k>QvZt z&56t3-`w@*UiJIj;@hAR^4Mj+KisMR|M%UV+-*12o;=Ro_w(7iPoTr8&f00jF$p)y z)qcPJ)azQQN#oL#W#{&Py%z2K?mFnuHNE;@FPF#8Ir3<6zg^MxvuDqiF86BFVvLT9 zdpBvKmsG3Q3(aRG|N8C!Nqnl)-}ywS{OA3D-?q2xjaxbIfY)u!7H%<}g1J9KKP|7E zb3ML(?`-)s^YeE+WGmO26~0<1q(tuQ@oV5Vi{qjX(5;pIRU&J5zuUF;+~q5_UpET* z-sE1k&wkO$>PNojpwl*;*YT8}F+9Fy*Sr<-7cRQXzg@P(_VXFzf1j^Te$^@-S76)x z?QZ$~u-aA=UeF1NCBeU%UjCZ3X~oN&h09*GR>|G_{B54Qd;aI2&*$$JH8Twj`a7#B zv)=rEO|kjXH^=4cxAa}QV)ykL*Ok@b`v1Ql$cS5g;JRb5ob$!kLKS-*W=ZY5SM_?U zW&GZQhwiFHt>6D|m-W>zmjg^<1Fy7c>|m^}-m`M)tI5kWmu$aZx7*sR_V>4~!u~cF zpK3pm|No=CbXwuuFI7u-ZShX9{q`ulzy0u2jH z3gcYjXn4he589Y`p#_?FnN;^>udc|~YOeB~<>1XJf4^Rj|9f&nz@E>~&(6O7>QAu0 z?bguZ-1obe{wf0PqFp;lByMs}Y&h>G=iFD?OCHIo9&O^4G+J`DGA^+7yNy+qbpHK& z6_0y2{C;N29KJ|<=K4^Z_0ual&lYU|_-?oIp2sVm3%-)b`s%Q9#fk#YYY`R49YvxK zUMaX+ea<-TOh)nU0^c9uYa$-{Ig7q1x%PVMt0ZsLWelMqnhUmYwamJsIeE2ODgy%p z!-P#-)iYx)mOtJ;zhw2z-~W65mRZls-*$HXqucNOF2yM+Tyt^Mco?=YI5<00cjYdx zsh+DA1br@xwcp{nC){x{*Mg17$K7gd*2Y|yJggiVGLDU->7> zbIoeDGO_m-s}yTgq6Ce@8auZKbnce3t=ggXEy^@tcAR%)_S&s6Pv@9#*14gts~yzl z^``Xd>!~@J(+>!x?h5T&?z7P7*)QA3#`&Flgq+tZFhT>~gUzmA;cb%3{qU};@;~3A z|6P1@IQq;i=|%f}%kHhZef0AV&9t+o*GrZcKRc7TeUsXZRU1I3e|^7Ky*|3|-R%5* zg{%Km2Cr;dy>Q$8y6Wv*Nm?Jjf#)>XfA#y?72CCG7TMQyrcdCSYIFI^)dyL+s@|rDeJ;CfU6rx{)DNHA=9QP) zwZ;3e?bj>8+s@nl-tlCrm!0YIkb~v`o9J0xCOUdWlO zoV@$&GWVHNc{aQ|^4j+cs4+Wh)~s7G>)v-XUguttndlX!@v->0Z26AQepWA+m|X`Q zimIcoe*E9}{r`8yMXXHe*4t zKL3llgmo6E*|Ge*?e~}?uPcMOl9#fqT=7W%2B?=mDQOm${Ef%ipb_)s!fHMl#nM~7 ze!W~iKj$#7IghohvG9^uChz8R-TM1pJllP*=(O&-$eB{RK*y54>yOl5F>9f2^fsNF zyKm)!&dY!_fI&+`AAaUAGIFacpL=tI#{Mm@tE%JD@Alq0o?*2>s~mKYoVoPz#VJQX z2R*Hdx}swpk(jt}w$ZZ8Xi&@K>-+onw=U&e#>9Cyu76?MLvC@soMPFpdR#di_d`um z1OLuny=qkqbCIfP)5`6aKohhp9nOBcn)9!j-);lwK)kD|phkJ_sVSQ8D&$KpI4WvS z{rBg&{q|R!OP9Ucez$D4x7OUUTbZ)=^hFP7G=7=B|Ig8*J_e#^G$t;&zE8RH1E}%} z&CQITy5Z9b{h4~7eJ${ zX%oNwpAFJ2A#7DImrnn+zWjP@`A)}`xA#_pR@|J>sdP(%@E|GT}TR)${%trt7YZ(nlu#?{+ecdlFnbpce_r~C*q z(!O)WK-62KajDAH)$8}Yl5@80n&NYz+)s7Gx7+#qCv;AC+5KWs_nY1C_Z54t;x)T* z!0c{G@bn)6q36HfuYdo||MHnVqLPz6wH;o4y`OX@>x?boY$e5>PPSUa1Xn>d` zt$yXFr|XwX!zQaEf7mqj^a`qO{I>V#n>+bu%J!bgIii>5ye*=1)&0_adhgp#YWHhx zn3C}0u>8M-t5>hC3v%n6{rCI*`>Gp5z6$qEQjc?T5;a)3OtEWKF=%E8G=ChU{62sG z-)pvgT5TaaOF^qAzg~~eKe?doj@E;UhppmwLM*;U1ugOo_48txTmSE8+5f-aqgUO? z-F`O*bgaQF-`*3YGN#?HUM%h}J8pdCi{r%-|4@C+g~o-CT+C%b=LUTPb-LgG{}{wn zbZbjy*{_$&cOO|1R(6G}Z`Fn1LvLR$pI;XI=g?7)>X4($TW0@S^Rh6m{%`5^J%78j z*KGimYoY(O`^BU#YzzwW^$a>|r>(8M8FU7!>K3ED-^-`zZ+NyzI`CU$@wBO1E*)5W z|7%jY$&X#&g~KbSrTC`a6I%Xo+A9{=&IYOXrXE`*E|#dP2D-#o?LNIK{_a_K`PwIw zSU|JK-Wnb{yt^hwPH{i+MFKYal)GGDn>*t&%Y(PB{EY9tw}-8;qkq#eNY7UY((`R{ z`2iYX_WS>3x&6+UZ4N3&JhD!9?7v}G`)dbV{zsF_!&!H;OvP1LK!XO5m1zz=3Q@1D zm+Xs(um8KX_Sehh>;6yRl3g*$xw>QGl}Un}IwgAfQp=`IV+FZfL9hb6TTrlMnta`l zgI`---Q2wV?cVSAK!<+sKGJgCce(X<(Mwv@Q9t#h`0aiq9Qv+)SHo>y{lCiV`8ras zj_>{ZEpVMk*Sq-#qzsc>+VfX8diLHElsCO2T$RuWTA?A-3OVb;G2QatkH>e#d{*Bq z{r=A_YldC=xj8G=c{81MI@Te^6JY#515DBmDvl->i^a32CbAmGs7^??p1!>XK87xk`7>$wOSw7*Z)23tAD59 zFz?%4uh(s!U;oeY=I&c>uUxr;(uN0}++u2O4qCo)$$8p(<+~SxZ#+3U`L4*}<@2ge ziRnhA{Qdp?`}&kAuR?s)E-&}@|F#a~g^orc#ryUD_x`Tj`}NxC4z`C3yY@emIKIv0 zndz>(E39&E7)To?wXEIwY*yYGg~(Y~qZsaN&4o9VGnuSVzZP4)Hl zy|y}B|2L=rI4)D{v#EUjZP4=G<*cl%C-0#zf6eF*f8(%Kreorl3A4{Np9LM_)Nl7| z#oix}y7fAz&YzzT>YCr}YN>v^b^34Fx$F1rxignf&Su78Zcyd!!Eq0KjtWcXGt+|S z)yg1a$~f2f+x`|r zA1X9Ucq(UJXU?9TyKUp`{QY;YMI`fXKlR|w&f;9qx`Iod>K_xgcTbrz1ud*E{mn?N z6xFc#@t}F_InZe1-JkFGeD+(ez9Go4)3oMC!S|ZUuKjCkPb_&Z{ zVSk%M(6SF+34;Sh2SF>TGnd)KAL)|-r4i85Nyf(>DNjwGetXk@{?-)M;2hV-T-xV! zx9PIwCbF+7ZuqMG>iSxy7ob*rY{^B}ZP%i*OJDspGcnn5dC#6betYkie1E(Bevwa7 z$3)O+&!8nAyCai4*4!zH)m)^l8S($ear;|0)91exikSEF^Yh!F&RKlT$JX6Goq8b8 zcucuqd%j^CH zH+nqwY?KWv(OdIVL$ zXZ?USjNDRLZ(~(|h+p{46?4DR>;9tl|Nm^BTls9}ws*T;M+F8>1T9J1QTX`HDed(o zo1>LDuQO{G{F=9KI(W6fzN=}^e!X5_Ze0H4^LhL2wcqbvw_Wz@IcR3YEd88J_zHoD z$i+;ock@6a58CTi^PXMc*!<=IGyj&8lhwCZ<-F~di~g?s>*npI-|nFyAvbNE!Vl+ zLvuitdUo^X&*!Xn|D9`FU3SHGL&)5v*ONhK`+a2RlXBh=M;76#_lqCQkrbL?OyTa^75_BL7V)}CxZ@%n|}S;HPAYg=Y1bL1eMop*>XiT zTUX}$lga+at}ttV__69n>g%=Jx6QMyj(UG@@89czJy~wo*X@3n1zJ6G-m#MX?(!(f zg{DFgg+cNmyKyk2eq$V zIY3KZ-fp{{7Zx0R`Bhz9#Y5Ke-L2f>yZ(ZjjyY#duWxxiuln5E{DdHvPEk>-73P~> zq~}}zc+mX!`fT(3d7ycKZ|Cd(T~_s-qH(k2vhQ2ah$N^(Uv}Bo-1V=GeC?OO?=f5c zdwFPXT=wMj-12*wvvar21kKE>UAO+piNtoO`o_%B_8qTK(<+ZmI4AT^MonbrZMV2IF%Uhxht{2Dk1M@A&<0_ub@5 z&XX1WYtu?!?(z!jld-&{x_S?nz3OZ~yPqkbL$|z3UT*R=yLrU!-;ZSLM;*#BKBXyK zZ$QUy3oZKnW^=#yma5-{R|4H{PIQ-hDYT?&4rm2Y*qVrkLc4dr+2lQ2;%tT8k*BNI z@4FN~QD0yGe0X%U^z~ZE_}{u!t4^VGB!YC^X3d&a16mJx`%7_p^q!)P`IFntKj!{; z&=#1#YhT`UA5l@!egFRc-u>Rk{7!-M>}2E2ODgvdwQ}D*|M+-+`St1tjqFje&v!iT zD}L@j$718vpNHFci=VIG`E1rcN#nF1=l_4ZonOn!%DPX^w(3V4zx=!1pU+wUoqqM| z)t{hgvhv;4@AqE6e&fcA{W-U`WbOlvJe)1A_w(~n@3y|k` z|2d)DU()}!^8erOcmF+o^5n<9ACJ1r-WR{SvlBGpS^if%uHs<*zP{(65^0@%-klv` z+bf?;biea6d;Q*R@1M`F|2989F7Dm!l*zt#QbA{HUVT+&<^Nm2yO+Ls^TzDBcFdi3TQ2*(`*Y}!(|zmrdoDlQ2p)_42_K8Bv7J8I z&+24s*~3=xUz65q9^0rpv65G7!=sYZy4!aIPt`0dnR>Wn@&73q%%C7*lnKS zqW9-czn)%RQT=GQ`XN7Q9{20l-#)6m^I+BVJ|A|_%^kn@fxBRvHb>X9-c6gG`)J;) zl`9igE%}%cHA5@Xgf;ub1jVvfE0_P$4;DQWnLhVv-8H8eUtiyUr$J-4(#B~%vww%1 zo>y#_Nit49w`KkQe^#&l2BqHo|L?oKd2Zm<^s1cm-)`r>|K{EQe(TcA_ZF+9o?me0 zFTLs^Cwm@rVMA!w$}A7j^m)7A?K)jwQzByn8aR^9+i@_d@bg*o-KP{ng;$=^oe*~$ zbi0VJaP7~h({<&-<7>CB*89BT(&_5IOxk-M*>0v z+jisJ(yhCf-+jBSuj>1Q^0g}KkIYx#sPT(4^18hJOY8mD>Q8H5UN1G7>kV2F`Twnp z{p)>9@68QnitJ#T<39cMMke`a6WMc*@2(f(Ta?+nt2a*k{no($YJqQF>|>fgSq?NM zQ@VGVh`Ck#zF)7j%YXg-et);ibfM~lzs3K|+0)W3ln^Jwx-M&ZW~%wUip9I<<%!R^ z!@Vc|{XUbYXKu&8x71AIw|b#4{mX?CU*GbOJK0gQ;>7d4k{`TYqSE`#vtB>0N##=U zr)BlnFLeGom53a}mex%y%5^T*JU;lRUuVtOf z8mrd-XP2*eaPIOJkH5TZ$2!bp)n%h)`yU*?_V}ggM;3Yi^~Yxl&G|KF(Y}aV{Oix( z09{z|%98bX`iJ66hw=}e&wO=drQW_TRx7@TK6w4!_V`)z`*&1XOifF!tO)$~_~l-| zg?;HC?q_~@{p4uegN<45OF#W%+w=QEo%=7p6@R&F{>|-V31ipn=(GEk@%@oT_1mw9 zPOb5G#~t6#b1200RCux|+^Oz;(QPxyJ=9VtLh$vPD zE9Pa-m$N;&XFsiZ<-*-U5f?x7bx!}o?S8VSf+ei0at}-BgZrDxZEjg_yZ4b}$&u0> z=NEdVtloYD)XLQ~d?5S0;CL|Sy>E8HuV-jAvI<4WF0yBu>ZupG>B!m#52h|~)4s#S z8<#q5`dsn9>Y4>pnQCY7%PnZ0{^m-3SJQgoJ#W@*S{ipOUNQ%`Xm{xW?n^S2l8$&VKNlx73FDJolPSAM5z{`F{BOYGdiVu*<rFPpvk`(2HpR*n6#5le;E{W`V#{)5-szTa5*PCrJc z>U!^&IeS#*&${Bi>1tSXYt7%=x9WVv2K6$-TA97gzS9kyP9{a{=&YE=GB@XEGv%(cWQ>7ab5IL>qFhTZPF=>aw?Pzpq%40!FVlau&uQxt&VBk{ zi-I;eUbUXZB)*F4^yj&t4R zTh9bcO?!3y8)#9$t-odECWZZt&yHnlp3mR+^Vn3;d&TE%InU}X)B0O}=Cv~`tkVn{ zF}|DRa$nl(v$ypg*^U1Mr_Gj){@b{2J!rW2W8M9aQgy2(OSL|&@;2G6c1Of4_S-S( z{FXg?!#4`uP}kTnbH|G1)2ddmR)4wZe)lDx^_vUt>Z-0+KI&Az6|+p`bp8L|_rtCS zf66+oyS>D7SNit8!D-=X+L$&pNf#rB%o} zZgO7W*GbES+q{h`raG+Z<65TKk@aBhJkKm^;TxO%eIJFsT>5@W`kX?y5bc|qimOFm zGll=U9Ae^|A98fztU7i-_s?PPcY{{-e{H%{Z2AAsXI-)9bIa#d*Q`~M)KXmb{xoc{ z-7cqex!Vp|66;m21^e4RtqZTo*!^% zSZ6?jb$>He!BE*H zZg-x~DelXDR(B(@edp9y*CNwpw^zlQ_?{8=t!^4kb2azWyDw zc+T$0+b=eIu73V9H;{98w_a53o&TTb|KA}hC|~y@@q10FZ0ORL)l0*+?)mrYb?#(e zv(8n5JKlM7t_F3V?*2QW+`r}GV)xydwan~%U&3W8w+P*5WS4oc>|f@pSyETBw>s%Z zZvT2MdiQJB&v(PN2MV?ex$fe(6}K(7oiAH{=c2Fnm5*K9JF9i9Uf*E*^*a9lE5ED! zzURGQ^rL zS6u)a9c0w0czw$LT1rr7+6p6I*icP4Xn@_&jjNdZ?YX<}w=`e3wRltFGvm}^)E04DRLeQ%*YZ`esytIf zDqpYN{^sxZ`{kSyHG`M6#J+uZ#`ydeZ~eVjOsngk%}jr@@Atdn&>*?53A1b}H?2+x zQtj_j1g$8V{-Nsa*6Vi`C0q>J`%0D2g4UT@omXn& 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