From 1b16ed898ddc9a3f1c1d7b3605bfe6a5e8d9e292 Mon Sep 17 00:00:00 2001 From: thclaude <23203061+thclaude@users.noreply.github.com> Date: Fri, 22 Dec 2023 14:09:50 +0100 Subject: [PATCH] Add rallly --- README.md | 1 + apps/rallly/config.json | 101 ++++++++++++++++++++++++++++ apps/rallly/docker-compose.yml | 66 ++++++++++++++++++ apps/rallly/metadata/description.md | 28 ++++++++ apps/rallly/metadata/logo.jpg | Bin 0 -> 87796 bytes 5 files changed, 196 insertions(+) create mode 100644 apps/rallly/config.json create mode 100644 apps/rallly/docker-compose.yml create mode 100644 apps/rallly/metadata/description.md create mode 100644 apps/rallly/metadata/logo.jpg diff --git a/README.md b/README.md index 31bc7ee2..2b2d8187 100644 --- a/README.md +++ b/README.md @@ -136,6 +136,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Proxitok](https://github.com/pablouser1/ProxiTok) - Open source alternative frontend for TikTok made using PHP - [qBittorrent](https://github.com/qbittorrent/qBittorrent) - BitTorrent client - [Radarr](https://github.com/Radarr/Radarr) - Movie collection manager for Usenet and BitTorrent users +- [Rallly](https://github.com/lukevella/rallly) - Rallly is an open-source scheduling and collaboration tool designed to make organizing events and meetings easier - [Readarr](https://github.com/Readarr/Readarr) - Book Manager and Automation (Sonarr for Ebooks) - [Resilio Sync](https://github.com/bt-sync) - Fast, reliable, and simple file sync and share solution - [RSS](https://github.com/ssddanbrown/rss) - A simple, opinionated, RSS feed aggregator diff --git a/apps/rallly/config.json b/apps/rallly/config.json new file mode 100644 index 00000000..164b2b88 --- /dev/null +++ b/apps/rallly/config.json @@ -0,0 +1,101 @@ +{ + "$schema": "../schema.json", + "name": "Rallly", + "available": true, + "port": 8208, + "exposable": true, + "id": "rallly", + "description": "Rallly is an open-source scheduling and collaboration tool designed to make organizing events and meetings easier.", + "tipi_version": 1, + "version": "3.4.2", + "categories": ["utilities"], + "short_desc": "Scheduling and collaboration tool", + "author": "lukevella", + "source": "https://github.com/lukevella/rallly", + "website": "https://rallly.co", + "form_fields": [ + { + "type": "random", + "min": 32, + "max": 32, + "label": "Database Password", + "env_variable": "RALLLY_DB_PASSWORD" + }, + { + "type": "random", + "min": 32, + "max": 32, + "label": "Secret key for User session", + "env_variable": "RALLLY_SECRET_KEY" + }, + { + "type": "email", + "label": "NoReply Email", + "max": 50, + "min": 3, + "required": false, + "env_variable": "RALLLY_NOREPLY_EMAIL" + }, + { + "type": "email", + "label": "Support Email", + "max": 50, + "min": 3, + "required": true, + "env_variable": "RALLLY_SUPPORT_EMAIL" + }, + { + "type": "text", + "label": "Allowed Emails", + "hint": "Comma separated list of email addresses that are allowed to register and login. You can use wildcard syntax to match a range of email addresses.", + "max": 250, + "min": 3, + "required": false, + "env_variable": "RALLLY_ALLOWED_EMAILS" + }, + { + "type": "text", + "label": "SMTP Host", + "max": 50, + "min": 3, + "required": true, + "env_variable": "RALLLY_SMTP_HOST" + }, + { + "type": "number", + "label": "SMTP Port", + "max": 6, + "min": 3, + "required": true, + "env_variable": "RALLLY_SMTP_PORT" + }, + { + "type": "boolean", + "label": "SMTP Secure", + "required": true, + "env_variable": "RALLLY_SMTP_SECURE" + }, + { + "type": "boolean", + "label": "SMTP Enable TLS", + "required": true, + "env_variable": "RALLLY_SMTP_TLS_ENABLED" + }, + { + "type": "text", + "label": "SMTP User", + "max": 50, + "min": 3, + "required": false, + "env_variable": "RALLLY_SMTP_USER" + }, + { + "type": "password", + "label": "SMTP Password", + "max": 50, + "min": 3, + "required": false, + "env_variable": "RALLLY_SMTP_PWD" + } + ] +} \ No newline at end of file diff --git a/apps/rallly/docker-compose.yml b/apps/rallly/docker-compose.yml new file mode 100644 index 00000000..e2d8ebbd --- /dev/null +++ b/apps/rallly/docker-compose.yml @@ -0,0 +1,66 @@ +services: + rallly_db: + image: postgres:14 + restart: always + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + environment: + - POSTGRES_PASSWORD=${RALLLY_DB_PASSWORD} + - POSTGRES_DB=rallly + - POSTGRES_USER=tipi + networks: + - tipi_main_network + healthcheck: + test: ["CMD-SHELL", "pg_isready -U tipi"] + interval: 5s + timeout: 5s + retries: 5 + + rallly: + image: lukevella/rallly:3.4.2 + restart: always + depends_on: + rallly_db: + condition: service_healthy + ports: + - ${APP_PORT}:3000 + environment: + - DATABASE_URL=postgres://tipi:${RALLLY_DB_PASSWORD}@rallly_db:5432/rallly + - SECRET_PASSWORD=${RALLLY_SECRET_KEY} + - NEXT_PUBLIC_BASE_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN} + - NOREPLY_EMAIL=${RALLLY_NOREPLY_EMAIL} + - SUPPORT_EMAIL=${RALLLY_SUPPORT_EMAIL} + - SMTP_HOST=${RALLLY_SMTP_HOST} + - SMTP_PORT=${RALLLY_SMTP_PORT} + - SMTP_SECURE=${RALLLY_SMTP_SECURE} + - SMTP_USER=${RALLLY_SMTP_USER} + - SMTP_PWD=${RALLLY_SMTP_PWD} + - SMTP_TLS_ENABLED=${RALLLY_SMTP_TLS_ENABLED} + - ALLOWED_EMAILS=${RALLLY_ALLOWED_EMAILS} + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.rallly-web-redirect.redirectscheme.scheme: https + traefik.http.services.rallly.loadbalancer.server.port: 3000 + # Web + traefik.http.routers.rallly-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.rallly-insecure.entrypoints: web + traefik.http.routers.rallly-insecure.service: rallly + traefik.http.routers.rallly-insecure.middlewares: rallly-web-redirect + # Websecure + traefik.http.routers.rallly.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.rallly.entrypoints: websecure + traefik.http.routers.rallly.service: rallly + traefik.http.routers.rallly.tls.certresolver: myresolver + # Local domain + traefik.http.routers.rallly-local-insecure.rule: Host(`rallly.${LOCAL_DOMAIN}`) + traefik.http.routers.rallly-local-insecure.entrypoints: web + traefik.http.routers.rallly-local-insecure.service: rallly + traefik.http.routers.rallly-local-insecure.middlewares: rallly-web-redirect + # Local domain secure + traefik.http.routers.rallly-local.rule: Host(`rallly.${LOCAL_DOMAIN}`) + traefik.http.routers.rallly-local.entrypoints: websecure + traefik.http.routers.rallly-local.service: rallly + traefik.http.routers.rallly-local.tls: true diff --git a/apps/rallly/metadata/description.md b/apps/rallly/metadata/description.md new file mode 100644 index 00000000..4a202b2c --- /dev/null +++ b/apps/rallly/metadata/description.md @@ -0,0 +1,28 @@ +
@G9eqj zUsxGGi}QLq!QfLj3#NaTnn%lYv@}LY`65afG6k()@>HF5NZy;{#pCtKO@Hsb>z&E` zvNpWAaZ?S34IMi6KkgMN Cr%}552IndTk1v+lbIXX!8i6u0zW%(6&zaLKT28 zmSP0YQOK*}wRKx^>#@TI?~v> 6fWdQJ6HfCnq`{ILXq%O@*4gIxjM;BQGcf3C!oW=ktGHe100s?QRX(+29@B-dBEeeTPGRcx=OOu6crczfo2pX1(B z`hV@g044l+k73WWz+V^J9vWrLv8Y d7x^j(l0W&dn!xD6UzF21_! zzlI&tKMC8E=CptZHW8nnnI#kj^z&kO{seXp%Ql0ce+M}C9Y!ZJ1}$=31ff0>7)Zb@ z??$s5L5KIrKhIe%&oE(+M}N#E#3wTcV9@ O(~?C=P=s6Wy7vBN zijSG-p%_SBc#Xq3S%bb%EZuT(lB(9^_H_1lHbn$`vJzzC&72?a74#}xqwe6(!Vh;X zOzT2F`9E`AJLsPzY8yYt9HA2XJKWb@(xnk0at*hkfqZVZNLUOe*I#;TTi7=REXNI) zh(Fphyxv#|nys~FumJ&xE(+GND(m(3)}}>k8$W&2oz~7)*oo!jv?BoG2-N8%0km}% zxKr$xGtNmU?9Epgwn`YD{7-ZTw|BM *u6sIMZHs0kB12 =8LznMy{eKfP}$r8(~@isJi3qex0j@G2LC10kJ zam $7Hf|H4qKQY z7zU$p2VkP;3?5qZv&5xB1+4(g=`-xbJDP9%qQ~3AZvy_#-&*e4DSq}SIrNCzvqvoC zRVWq`luM4uu~5(?l}Sq&m&Jl@O-NX3mTK^?>&tU9lp~5GMc3KTw)#UkPZ34zM+OhG zKG2L1dk}d5!jc);;&W-8>7JupZj0lNO)=k({)um$_{~q}>$)luo>=m$2ojzG rPlgljd80VXWE*gdmk?dNm(Pv@As`|t!utm{ zjw$|e#No7wH*cropL~@lHgdKuZ&0dNQVVgEbf0tS+&1 $VDkc9qDAAC-n)L7+{8De(vXw5hQfn5&9IrwUTVFb~V`XX(&PeGYwlY!$9 z7Ygc3N`=#LUT}l$3am7>fTn9AUw$r9rS0wyHWqG8PN*tLv3TRHkHvXb@>`39J(Eig zldX5dbPV_8deg4J+=Y@XUhx1M7A+g@wBn7j)>W!tB|Z-=j56X9QJ1TnP*Ep#pKz0j zekcg^NT@_+X6@HtUUVd7IsfO^gO>u|5tGurOz2OsW|tG=)L_@{1aNO4>tJV#&OLtX z_Oss6ooat~ 6Mx>~15M#JAW+VRDZf;Uw))rM?k(#=$yLn_?QZ zr(c376bHN03dWIqnE9&jay9np=`Z1rqq^lOAkp_4VU>l8fxok@xqIecrw^w`mTLy^ zillPtyUa{GS4mYvMG7oUhHX%%Lo3#^1m)S^*T6TFT60_b%loBlB~3XegpIzpb~HLi z>W0mdg;4iC1V`&T%lFeOO^7k 8pA1j@~^+G_U6<^b2 `6D!61vUamH!Pj5EaAn zTcTp6A%E4MR$<*qdcNh?_ZzKlA7g*?lZOorbapdj!^Dp_N`kAMS;CEP^ISLbu_cjD z3G_ndcTCoapeGLK2P z_Q$#Lilg-4sa0ka9ZZvp*9mH2X)=honTM4deB!Df`X=!bcE>!pXxBff{iS6M=hnP& zpk3arQJhVW7`ge9$s5TVBOg+$+9wB|R!_y@Kqm@x%P#%F#^mSCZ(VYMmVCYwt+Q!& z_ST{+Wp8dtB1RCc69HF3NlT4SWqq5>)^T S6gYd~%RPDt+ZIgU!)4}LVrfSQ>BoW{0B{8uNyD*)IAL?J30G|4Kg%M755nbw zFk4Ye*f%72Ol2ZFZ9rH>_v4YtM=MoeY%x^P;w0&7W{%p!6(L$EY$?Q-;0|F?sB>@+ zTR>w(0_@oT1Jpn(zh`4`x@D!1cB0YKm3rw=dihef?d#01YmBdO%t6N`$%L`Wo_eOB zi{+6fnzmr|W^HmH{zTSgS_icY^=fmrqK` &Wh_HV8Wcbi&VF()*0&Vev8%bmB5P3at 2tV4XYSZDUHDLvi5JCR{s%57yEg_2qh_jZnpIj9- zn3e#CxrXVFnyCQL#DYY^$U}lCs8BL3*J!wm-XC>V10ru&?HMYG1V|!55(tn)f+P__ zgNwJvTtO{XcaVDFUbSFam|g*6c^jvObXX!(Zr#oD7k8?tkSVXDGfIKZ`fCL+v-dr2 zY2I*lFLN=ig; %{*ww4d&*bUO! zSS(chJjp_AiH2mr0i2SOl7Q6;Hhk~-zt+E|mi-U(XQ$}eEvd26b+(IbV`XU!Mhig^ zA_1^rh!-0`k}qsmZ>cm 0~RMh4*E1`?5%w0ss14S>SP!QkXe!(p)U z(=JSjC -7WMvy%;T{hLbXO%h_1{r-xdlrBe*-HWp%~07xc< z*{bF?*P(8i>D>(J-l)>_OH*fOrfF6h9k|*s!eO SBGun*$UZPUufV~6cvTW;-nO*2aV;;QVK{dMid}qeBFKNu+kyZ zv<(+YfWk$tk7XOeTzl4Vl3o7FlQP FP=jRp>DiBi=Zg#%bz*HSEU84(pGl${?OFmZI|Wh$)CEAM&Z z#)kP;`Lc_sh5!n++RPkNh<6d#@iuW$APk1~d) =?QfM8XwdK?gqAekWhfvD|LIs6QYG~q?y#-vB z?T4KB^(T`)&mlk=T>4zS0DEPfxwI8%OEtvL&D6TDoavA^BoY|u=pebQToM==mymi> zwwX*`Ra+`MiER-%l4UEI?#UXZk220cZ4b7?nZ3i`d6SUy^G?NJ*UY#5FDJO? 4q4^R*~xtxz=NK!FY@x!q}Dj7^mBM=<-AOr z+UhGQKmtHKL8yAjpmuhv=}0wRl+5AZ;vGaHhdFX51K)eJmoeOWZTu?}^A`0qsHJnM z2biJAbXxQQpjx>7C`ig>yDw(GL1eQZ&JCbQ6{(vKJF2*^7$muHKpBQDZ13BYWNDId zEyMvPr8lXw5_e|3ufk+GGs@}(iDVQCvlC4#lb%i(j(Nu-88h71;eoB)YbX QTyt8&Y=;sBT@aS}C %PDc@lmkbpZO4NrT-OY03GOOlD ziH8an7fN5Hfiyg)dbnXTGkK7??;)_djz#MkE$Yj!vq$ztm@{2Y <1glSk=KRUKWYYY$7>t}O_dPK&Gcg{7=OkTzqphRi}p`b3le0100&()(LGJxyy2 zfA^NQP(s%or+y9Aynt vb!mmei_MR!kr>Q5 ZRZ~I z)~s!M(aVzeYh(p$TJ}aj_xbZwP-#GWi}eFwTdD~DaY|>(+GpFO6oSRY$|84VTzov< zt|OG>cT2VV5+P$XG~q>39;6QQ=`205U|K+)L#R3KMToXRyIwMfyuSuT5h##Ef+P_j zi3Cuq8nq9`zZu3U?Fy3OtWIMO43wJ5n nSf{P zD BK+^AxuQ=-d+{`ae4g#?H86KAhfyFkLx&F?o}_}_J#ng_(Lp*yTE|0%#jEWO zk!B(5u1giUgjm{`z7c00)6up|zXjn>rtDVE$8>?bSe=@d!yIhk!dL?^Ojj8I27Wu* zrJB+G1#~XUNzwW{t88?#_P)Z&%gKxo?99&UQt?HjVzq`ldsytxxMPX40wZ(aPdUwg zEX?% gp&3 R*nyDR E~c5zF!H6ff`_0g@!=N97q{$%ExluBgE@(sjE$C=5HA2>Y* zM%v^o9_H1FQ4o};A{x2Wzbc*pi7WwXIS% @b?7Ho+Ax258E4!#ES5w0$xd|UNb9MfEsEkH zM={)V0O#L#?G?BJb#h6oF#uh{cydcH7_{VB?*z_w8@@_}+0^9OuKe?``*qC=xVYxb zKE{4LvkRCtWj6Uunop3MRFX@+wCnd!0&E5J&j %xU?vkujHK(2!k%JmC zvsLK&=k|MRK^WpC&1geSjEH{z6;uQOS)4Js>I*&Xe7hDkQ8lRyZ9p59GGOAiv|17l zRlJj&&pCLwV&%+%B3MpmmOz(S6wWRQKFw+dRUNT)cwL?Ir;N+gy?0iG)ZXuE8c>U0 zopW*siQ?CJXIBCDUTfJt!J5;qw+!T(UBhQ hLL-)J#&-wNn{X$*V1^2%N#f} zEJ*+=pa2LZ>a5F#9->VSkp?0NApMfBKE8H@vG;?C45rn0E*|!h^h@G*@R``#7IxC; z*Lg8$PA3?w4hMJ8xq$`d%pqt(R9Qt{YKl^j !x0LPCze8z=8o41Og8u zX!BWpikKon6;`y%N|v<*p$Ssfqd=6T5~UN601|mZv_ wV?2of*7S)zJ@(5^(ypPr|348{Xf&J&5Rb-R=ORPm9z#M zO_;&hju>JaO)yEJC6>AAez1c`FzWaQ)G!eliW!ZnXEDN+p $>41J>Uiy^uvxyMf*fdmJ(N?68Cum~!&*V)^-*P^_C49-oe=$RGlt&sUx3 zs}r>jBbp>ZiX3@Q#S$qeeY42E?=r~}Bo_TXaGyRmx+GXcF%QeN5+`aLN1omYkp?(% zetrn5NW0Kovo)nE55}=wqDWxQC0S-}BME%V5iVctr^mkWc|s>Hr#^1sL;#v9ngZ1@ z+J_LN0!v? (WKXktm0q^POT=Z5cHVmHHAWtqn@f)uC=Sz zlv)#uPDB@S^vStP87i~B7~bMcd>A~ZdcdH|1UU^#-zu}&-H00A_i{nR2bMJq;JrDd zB*P;q%Ht{Wx&BS`kHxjqKF;X3rp?~L?TlZ@wpQKR_!&67Ov#>3OtCI+5HnQZ1UUk( z8Nn8h%>J|e2+}%f&>dtnOCM{c=sF#wb`Sxz9@Hin#=v5Bo&fDvUH+!h#*L*x5tK2+ z(a=cBrGt trCCQ~q-ge$SzB2~2#N^cCK#b0;71y*i3~z0L{OIz071yD&M+xRB0(2Q zd^tLO-R^|?7~U!SLm4RJcIFQku`u{VOal-mV=%J vj7>iK!SKnd-L%# zx3-7NwvICq# ?JWQ zZoO(4EWn@ul41gdjnlqvX~YGw6HBwZJ5ufYix#{^p#+(dLGF|Aya`^;xiAR;Wxqc! zyERg#ql;y(ZfSFv0`E)59Q&@*GbcH?eZU%4bak3w5Kbogxiyms7a#!7N}PO7`5M~i zN49TKc5)3OUJx-H-k3`8CfHGx4{-&%*@a7R1&ARYjZ54Lm#Eg3^lK0*SOF#%9#{h+ z*Rqgm%q3PYApBZ{?#TsR{RN1vThrCbEIV>(=JciKBSkopU4)o1XP#p4X8lSX+bT7* ze}Z|@;NvM4+-csbVkY~%zgTSQ(=wMWts0?)T)(HEd`h$=oJ@sS&F_?_#kez8wVl2+ zar@w`_X ?doikCF0x3nJ2tkIBM<;fJ3 z O|VPQe&1Zz{2?!0=cm} pf0W1qlyz(4xyD|ddf{*C~I%~?6)41J>;O`+Iz%V!7 zMmVcMMqw%&fs}`la;vaO1Tns&Lgv+XvA0xZgicc;bCb=@B>XQb`{Z4(uXw*M3JZrc z&=#=t`dD)j$b>lq$;&P46hyldz!`bIb7B-1chDCu{MhE*j&cndz+g8wB~#&)zR#Ud zGlK5)7wurwuQ+viqM>=c!RIL(oE{XLX6nM%dV%}hsxt)M+_A(1&uaew5XNDyYnjTU z%BAo>ZHbMOkHF#*R03zo zP~mWu2S_b j>;Epe^q~XeI%P*vzr(y=4}bmS!7E zGDL6~Oe9^i+6!Ha(Rz*WD)Ff9cSyTGWbS85xXeE9?ffLU5;42OwefQB*gRatC5+S+ z%pd?j1XwXS*ULXmUa9*30Haz)m9F|FWfrp4*7mlRmU_2Evb46hv4Anz8!%O-#zy91 zzSC87iptzWW2GNwXagHahyo*7&wy(20exxMeKB-pyrlzR@1DcjzEp8bRtpx1=vcd@ zXmp dXHLYQ9@XYeG1+H2rcn!Z1u0Dv(hXrM%A6QoM49r7=f1O zb%Skm+0kC^ty1>Z`)o~~w3blBVt9B+yPg&eS96h!S{Fxk{;`Z%=sK5LX>mnCVW8 eu5?OpR4+oX0j8(Kb$MWj(eL9~Rp4<-!$c!lNTq%Hpd+nphA7SY~K zyNsEP$K$b6=S)<^DP<{}HA~ a{M)}-k*Iq!)mjw$XlS&Fbxq+W2u7s9`hE5^y!`4N!iJM;BSs37> zjA(rx_=RnQDo=l0logDJf5*BBvV4fY(x9xIho{&?AIk&Un+Gnx1sq*{g!@T}e1{?6 zr(ohb{1c1%L;Yjz1}AGMPXXM?uyGxJ2>S6K^}fh$VGJXJpJ$&RmHfho>$3{|mgN(+ za20xao@#amC#%6kL5P=~;MCoO)QCX3;wUf1US^<{_!)M;bHq6{Jl$9f2OzPMD{>20 zR??c%-s3w=%+h&I{xjo^_cmrrZz60O<4&>7Q;^p-9{$?r$UTH+`S6*3ExJ?5(`N7k z3&Csvl#3qfVFvZ=%s71kuYWAyVlh&WJBt}!XIb3%1|+IO{{TpHpwa2 b&?VUot|@(5m6?qN@}Gb2Ce999+cIoOuECEu!xhwj_lH$zQ8D(PcqFX z24{W@=6i+g79x;Iau^$DYPqv#a^a%eMiAgivy~(V7d)|&h}h2=3Ec86S mLRI-xkDOh6eDQeW(F &QDlRRed{6()EW-Ivorak=n;=r0H6^$_S&ix3si~5$xfD z88qC0KzE^G^}3&53o! rh#J``xaT`aj *0ku}zSOqXmKxVoYYhg{$|DS7-$k{60|_Ae#vPWGU44a} zwUww5L1_d)hYb)Xh<6K`V{!OBpNC#68;O;M!^;l2vlbGNI{nep+1XlJ#2~V>j?yw% zK?E^H5j6N=1lJ{ykSajmCDpE-JTST<=u>uadutuM`x9wxEI3g{#g~tioNT}nOQutW z66^pxAl9^vq0nDM9W&|Pv(fY&16667Hjix(5$V?YHL$UQ6M+y+{bL9fI4-+P*19H# z0Wn%b9Ap0O2%#}@e#c%={51SA_Sb~&`(knUV~g2)sU^NcvS+J^iSm^&d2&* dYcidE(|<=GiKfMxYwL zU^i}MqY M<`QQt z*~6A$d6d}59%=_BxzX#ZS%7NXjI*hC1dF8fYG2NK&_OeW!kw8*JMl&Z=o#)AjeUIY zdqK#(rXH^?_+gGr!wES7Iy=gwUVCS`3lXN22IlM?-TLC--yrq5h!O;v@By>DMe-N9 z05{fpzUKu1&8#(|b$Z^lJjXK<3*grrdG7*OyVNQ(@5b!hyIvl%>#%aekS5F-#Z9T$ z`9#nYE6 UCzN>lb%9Op3dSQMbxvR)XfF&C0>}jXdfeL{xf?Z=Pg`yeA3r%wIz}XHbEkxLqkd zaJwOaT*q<84&TFY)RfGqHK7!5U4(Ty^bfuEmwV8@)zxdmzWxm*dq3%CyzycQG^0DY zCO`_V7UAu1DE4sRy|T%@hb{G#>*uRHg0vHdCw{D}*@COM6hAwW)IBmachvHXu);%U zQCwTkjHV*PG7D5NkvwqCsG(FMmIcYq?ksy~PIRntV1`|Iw44)x0qJ%t887AgRdOvr z8jkfeJo{+X4S2g&VqJ9eIptP_1&V9{56qiWI=@vY;6y61o$gw6Y{fgv&782Rfv8>F z5tg*Eax0c_^G`lsg?3Kshz>z|v(SbUqqb`jsYZ9MdDkYhjGHHRg1CSR02sCtHLr`$ zdc;cuovE5{VS1is)q=Q$y~eCZG9K<&NYzp54e4ygrL(OLmJe8b{PlRLFoAyQOK~Fn z&B`2HTwO(&wyk%itEQ1*I+^d82f#a$a0LWAnr b`#cN@e?I2GbPPjr5cU}5ULtfHCvn4sw!ECiUAl8@c=`a64ehq z`~zVi7MmQ4OkLm3<@>(nct!NHxM@Va*xvoAvn9$;3VfWvpp=C0fCRv|p)aAaX!y-> z&>o0%hivPOO`>U0M-!721U>bHgIlk?S{*Y=uxM;8OdvaqPF-|vOE&d*Lv*LUXqb18 zd$yK8%6#Ctf?pGY6h{b6^*ouK%<7* 1?G=@An`05db50}?V455ZK# zTpi7Dml`{PUJ5wcjaG9)IR*iVcXxITYDO|2sP7|t)~21xL@pdPK%WPgFTmp|s&Ntt zW_+A8y&3xR>;@`m*GcMq- AjF_yab;XU|czjc6j z$Un=iPZ8q1N2Bd7`Mq^`s%AqAtJPXFWJq)iVMCi%jBeHMJ>7Nz$gU@M3D#2XP_7hQ z45&WX9g+=Rb(`;#dA$|5#&q _QWEBy$65TV2ZqI*VPj%-zitG z#T5#L$$XxtoKDTb-JOU6PS~hn=gl&rsaO`TquCbN&A1NYRL{xzDDs@WKV&_geP1+C zR&u9t_IqMP0{QbD{m7$@TKWgNCt@5r&x$7zH#F)WWHvycp7ZlXAdk*(^;^}~5JCDc z{{R#A?nPigrw}gWpG7harDCKLJ(2*BZgUbP@s~7Xg0qcBf5)S?D#ruM%kkifg@FvF zd$D@aiF4n`G(xzWJwT8lo))_khdJFtok^wjtJwOrtV;?!_%}D^tqv42l}ilo?xd=s zmvQgPAx_M)97q^A fZ$WI%HqlW`3iN0cWp&$a_Ox37H0_w=m5j *CYzpwerf12V+ux zkYEGENCz1M >ITTOGQbWJiVXEuf?OeP{tPRSRNLjhU3%Vn%Iy&M5&XkidYPGlN2 zWG2G?48LI7elTwey}g4N9jDU1+MR_7GR&SC2;u+$#Q8Eyid+(G(egSctM{TE2G`r@ zy%Er0wTSI)6KGi0Lu#Oq!hNeGTIX3>Z3Cpl%)m VxP~%%_?WF5J&+xVo6H?D9mGNYCetXUXR#|4O5_4Xm(Bx&6EHcu$)sY9~`fj zUmSLp(QVp9Vu*%w6Eus-%&Sqwet1?^OVx!7&{&r5w_92}_}XWi*88Nu0fW;QSj!0l zPB DHqYP@Cz(UU5_^;$qHR(akTb04~p7r-&>8 z7fM+1yqP`0@>wAaI^P*!F5XTuP$m%lY~icgZBG3|MiL&o!`;b`TFL-7j&nG8QSk}_ z%aCbSb3j>(UZm9WZrG`53&5!jyMQ1|I*{)o5n6)G1Cy9D=6Zo;B4dUx$adH_TMk#X z5P;<2QrF*FVna#l(nAXg7oSn>^1;fuS#am5GcYZ7bJlDKivTWcM~_|CWlE4Px!-*J z9{d(cISxouJ!zX%UqCv;n3foMHB>N(=erX=56cxGGvqq6)}*la45B4MaQPm1UaHX2 z;sy8OCw&=>FlU-lq&9Ct`3eAiCe?R^7 3y(a!P`#Kl0n}}5i5`(q;w&aZ*S4kHeC}e@DFgz{U5#>kjIT{wzP1pV zF%<;wp`Sadpwf;n-NORMvTDWnjVneWjkOgbobzpCECNA=CNiAdN-e> 9 UHZK0@hR7h260yH-5$ !f(`+<-AiB$^hcf4H+4 zv?6m8I8?NTQ^*a<36p1$tGi$vUCmVd=Oi1rdIqqq>yusSMjWAY3S9kFsLFfQct3_G zFBBlK0K3!%X7u&)(lQuJFr`3h9q%L6)>L5gozm~|+^b>@#&o0U*4Ffh#z7LjosGof z)tUn3g=H=NL)}FL)R94;=aq6Vs1Fr8v!l-HcCnJPO{FLK({j?OM1hqmUqNAP!EtxI zNb#=!04 HMgA9DWb)&CsSto( zkA>8_PCjjdg0dBRSm}|!W!mp^TMOUMXL^$Z;9Y@dn;s2Tt_F;pbSa>Ef@ d!GE^ zy8birGUltW0o_3I=QG58prS*PYgW6_$<(kGtpl($iRI?+JlRVDfV;27Tr4vO58qtL zB8Mu0=%rXYnaYlM$YR0Ty|s!L<(=0zhXGf;h A&xyUd8w xh;KJh%)lMT3%Hd-Gm528P~bHIYXBI~F(lHU z*v4TKgDMd$T+5Gp6$S!HGIQB=*H6u3j0f|WmJIG_DD)NQliN6`4kj}j #!`GTo%1Uo0kCdNJWB-yNdxCFH3iLE zuJy}G=M*!!{&GD?1$*2FrDb&=b14h3at6KN J1+pot2mi!6Z_% zkqkpuBb3yoVcp1T8s*zgueK^g&E?F*_z@|}ZJr4h$bIHO$Pp)_z4#nVp4>^Wt!m}S z0qDWH=tbHr0h3BnmLbVCb0%&eNmQ_@n{yWuZfqDyx2pvwCd#)L2G84f7Rn6~tC`Y4 znZ;>57=y(`x~J!>y_L9tIddR#dUoqyWB^D9ljg#2E#G1%5=k!2mod+%yLvgcVyF!| z143}gnva=9Qc^>(1e;dfjNO;!V$BdN IF;@N1OcLL=imC=K3Is=6^TQ1Wz~lzK9~0PJ_5aIK*>B zKFEU ;wmpiA8SkYhH;^y)L7pdJZE~=tI z9hG)_>1)%fuN4%imO!(R9KQ-b1!1u^0N+PFbL6V#?gP=7SF*r!ZANs6t5<9K{BKra zO1Bm}>hs5PsU?P0a$dj=w!QkxG(*?ARk~D{YL;f|^3*Kb>Z` kj~-S_3et7s=
DXFfsrR1l>YI z&Qhy5Yvhqa;|uuWdi;ePW6rCdyV3F)y>zvVO;{VLA&m|BjKZLU5NX$qZk8`y)iYdB z>zHmwunSmrLRSs^%XZA(R!xyCv7c`5A<(Q+wPI>+bADp_Gl~Ngie_N5iUZ7Dc^JDh z-CzW+uOKepK&j;cRm%q~G&Nww%^Ne@XrT-Pi^%ZC_ukx9z=eS~i|%FyuOdl)tWZo2 zD#IkcPip7u4g(0rK{r$YNG&Vnx$&yI2hH3(*|5vJi{z{n00qb{!t{Cy*f1vSE*i!x z-hA`kt0=AvM9Yaa 2Babi|(Cl@C$biR3>_N}Q39>8aJUNd~}P{6&?nIH#pE})et z{0htz4eA3{jhVJy!fi-DI+2HtSgNqagOCeW>dIKpwPi>pz&EHSppb4aeD2h(gbQ6d zNcHdPSfbAEQ!E45e(HqcaL&L`ICr~-s}5Oq!oG2)>+9UA4JHIFLL5sBa-6Ay-N6j> zV*2weY1e49F8!E1tJ^K?!CW+%gx}^j(d8#=l)V7GdwR}I+11YAW@tAGI1clZ7o?=E z!=2+AVRv$seBc!3hQ!c@abhgadphhXA&X0mB_TcmLl(K@?km{xzMGv3@jcW)s|IZ9 z$L$qnFBxC~iIxIXBMkB%WJ2yoT<2Z^q#G_=$8pE~e}@SG1tnzb=QC4GsBR2&+V}Ab zN1wj{5^55}w1^az92QF!_Mp_UtCzXKq^K@=02nS3!!ihAKwjAk3b$@RG;=SYXRGrp z-RTLD6PUO@JWS46 ;>ux zsW-V`_P<`a3in4Q5HQC*!zmf=6S-Ek8BS%noCW1$BoZ=w{{TA8pL4d1T!_g*iElVh zs(C1+jPorwn^ss(N~LyU1;#^=cWzZY#A7T=o-$%47!iE04rh|d2y;9itYOJwDkP99 ztidcevKk5s&~u7M?uThzpLv}tldPf}h4K_}JWTvKHl0O$E)NyKsdVH6^8`?5MzmHE zVtE-{&rb MdLIu5(l_xHxoID6A*sIlv##na?*r==b37Z zW@xL%pv8?#5NZc7Uc$#b;{L_|07SSCN$wyDo~l-Arp!z*CX58%313+Z70T4$03768 z5KgbHo}}rJgJTtTBH#(;CoZK1&KgSl+>QIG+~tje)I&KXfhrdU-MxoW1O<#h`~>gp zuiHuAh``i0Jlk~5#N8!6RcuKFg2WSQy$y(KTC4!HPp~3J11H9ObEZ?4IE)aU5|j6j zB;xAgY|u(b4#Ukg9YO3%fW_FFJtD%wBJB*FsOOBSnY=0(K)jZBl*Sx0%P_0u=2!~{ zENk&vuy>^xJ;sj{N(t_jT!DB5-#JpMtuPFp`@31QbTg(fV%a;8^k!!boierB14oPK zo3IT>-da-oBmm*uaCh;2#3}{MdYY1MdA7CgCr61kC8q&wa^_w8z(x*3oP$j8@!}K( z%&kaj)Y{z0%bSY3#SMv*Kv;ouhvmOFc?E5lMNFJZ?&;LM2H;T4T?@1KUb?q1D@cQ3 z74YA9VrFi`d2H~uz`f^*tZ~U(V%lRvCzF%|Sha(EFY;3qcl5x|i?8N3wioFmX-OopY3x zom!sr@uWxG*0(_yBj*(!$mT!cIWPcmM^>l2#C^|d?Xx^4quCqX_aBlv+z{kvbMGDE zC)h?A;XI^9;{4S6Bb)B-`Ktpmr1n$c`z_lO?4$Y>{^;&z8_VXN#MW}ePk^s#pFiLT zk7Xaw{{W!%PsKffz;Yfc8BbxYlj~@oWf#!@0HD`(Tg#~y5n=}q19FZPXgv{AXB9RN z2pb>o1CJ#35o70?a4Szp_r(pIO#2aj>A(IX*q+8OE#jOi)6zZhU5NgKU%Gr0dl-g1 zpRlT)A#{=5@2pR=kLaFCeT-f}@l|zc=pWyQvybSNKE&tDC_H^#-qK;Q9R1k29;{UR z9o$KmChC3ag-fV&Pg@q#n^qpqKcaaju_Ng9xozdAxnnDtN}o+VDh;buhEVoVPu#9v zder+Z)tD_Q<(70bGE`K_l&Kain`#`_yaFiU;=ax=plAKuF_t*1ixYDa4dQt3Bs7Lq zb&SnZpE$G77A$L*6Lr6P)+5;y`VnTp&Y2b)h*tI_&BhYu4NR#jwb!Z{%CJ#!M+9X@ zA@g%uo6@2nSj6*$<1oNqd(u_wDt& ;Tpt&LjFgTgO!m>ZZg^*Z^rNxGV#b)1Kx}l&XV^O v1%48+RMB z4kYMt6DgBbgV$0kYTLY4Bv`~x!r|~C$)n2h1N@bCGrN?lyO#MW`9#N{ce@e;HNziy zVUTFJ(aR5T%ga&w4ODE0GYrn+Z%XC^4o!NWluRz*Xb%ynV%nNo&EFRG5eaM^?bkf# zP8E3A276niXE5wJHSa}VFEOb{q108u4M!UHRK>lCpSikHJ^e|u4l~>wN_U2woVIeB zpDeaWHxA|4f;y yd39oWiT@Xh3>WK8V_mtHt3`DMAO0WL{33J&3%JL^tX zi1rbE6H{Bd#JJ+8V0|G_#_SIFy8D!gtGkd(Fs*wSW*mc vjNU2_dHB}+PhF3+D^mFlp8yN#qcdTWhI>pQi(&c2HJuyLr`bmK*U4tc$vfx zel5)JmP!SgFW~#B$CdS2gu(%3R2s9r388OTzc(xzJWl2s++;X7xNidNs$i@x2xffq z!;4Z+Ly;>XK`lZ+)~w?|;m&yi;0VNQnruMlPJB4EU1N$69I%w$;%M(y#0utQvhfk2 zB$1Pg0`0C{SJJSDdB{n_hnwGrIh(2l?!n&o6>eQ}21@P&3b7qsK)+?~Y0feU`Rngl z00o4dp0B}&SgrXhyMUK-=NBM?z`Jv5S2}4D2I;vXcMl1Rl}Kk|A0IwlK_$thfGk+l z*^R)pJvrJJFEerNk>9wE#f&`03^K@ympn%K1 Q6t@YsV25&HMg Vq#z=4pE=30{o`6_i-x%UE8^9-Y z%-zJzG6mLKC|t;7FqKDVBEMwl2cm3GO?@ct*GE`s%ac2JF(ycvD6+r>KR3-FIUoW> z@?#$z)83ZY^edve)1-FL2<-KBn2bXeA~SAHIrXyUXx1j)-p;^$QN>Vc46BiU885M8 z#KX5tu#=733N92Bgvu!_&QeHrBv72P$bKV>*PmBe+D8mJt}+24BlkIIh$KjhP~g-! z50d(OK8@Q4F WKdU^3neQ>hi8`sCqGJ`p7Q7&zdOvi<`yzUfs-9IDGUj<6gM8;qR)&HAG !|ukL1OreWWjo_zXFK-h8^1ZqXzZVW19@aJV^+kUVZCL01k!ZwI?r5to z{$($!kL0zZ0qr4`?>2X8dFBv!mv@DdK2^5@Q%2#C$2Tl{nxno4*V|SX{{Uph=6{OB zKmJa2=AX%E^LA1? zFKIvLA#x^3Gw|I`q#h;R;c$Lgw%9c|WVdsljI9sD*H*Fr0A&}u{>^CPFO8MIlJUFy zOEZ(1j3zJSt@jsqf#2nOYm=f;;eTG4)uH%$YTxRjF#iCvT6O#8xi;&NbY?J5zX8H! zfaNhxN=J!zZ?k-_Z9BX0$-iiB`b7R7nz#C>{{ZFU{{T|A@@hY&1z+Mm9aL8Pi`&8a zUfAxD?uh(6wQK%L{{ZdcetUh&f0J>wVSlYITRrOk0C9V7y>XjivmeD)ji byZWsE0LZle0Mt+9$^B$J;_y$nzqfx)+W!FT%Kq$6;pMBH{`H^yylu UVV)KUDIjE{~H#Qy-K_ca8S zhlzh}ex0^2`I3+P9*B>_%U6F@{{Z&!-Wq?-d973VGaY@bCBM9Jd3%AmiAX8?j2m j&@u0Qly4r`%uLm;Mpj&-7CLd>+V; z!^2kp09GITykF~6{Ft 7o7Tnv7+$ R hhOPdqKlymS)}P6^<^1Fs`^T%@SkH-TZvO!48(Xmm z_M#t$ey#qin7{6Lzt*40$o`nheqX6n_?C9*{{YN(u-EvsSFg<<4-xox>eF3TTIR5f za3gK8RvjFQ`$3r6H&TM_>k;uQ?f3j4wVJfxmtX9-)+_jTYVYc?Dj#7O=kK}aB|pj7 zhv|u75d^+%c71CZ@ha~D4g4du`uJtI {MRfDS)wQR~Ac`k#Zk1J}D(e^xd_N3`etAjwbielb0`Tz`5g `!yYjH@oTQ}l$B43 zLwLA~zF)P-$t@@Vb$$R`)4I_ghi0z+tmF4QePeBuoj_@{2ydihc(k`wQ23MgjfnYn z*Ce%CNFllK)L!*&aVOWeS6!OF*i>(9RS5%+-A;d3(45q&9#$wBcaZy|5`cGe7P z-b6e90I5R#ewdHLvsZssJ5&D86r27&S6^09_ktlq2k#b@D%6``@|vmfC+{^#$8Czx z1M+qs+3o8wBiFZAe^rnCynpKoKa M-kGP$@>>C}m+-CALtBwkTTfed` z_;+gAkG+MB-*d;??K`HR^l+cjgBqIW?$37Na*^Uu-eLa$`MYAlz%oEJyYLn~tl71v z@bA^X)pHa-bHyM)6!w65zWSbxllo9KDrLG-95^z4#XaZ!Gi#Ed&hlL%lyZ>Pq)7Gf z)uNiLhW`NR;?D7C{g-B|{F;cF#|HO3fKpfPYO9YDuJZtq^1ZOxpW>YA>EUkL+L1qp zj;@$GsI@@*o+{)0Dao7#U*ybA`%pVG?G`P<{n$QM`-=O_2>$@3ZH5Nl#FUHFd7zi| zYn$-#)xXtOf8pbv{{ZJY=QRFIMfBj45FRHIqp`mRpjI9wedP%+irWO*@?1F;N#QTm zK}dccI=1ar!v6sKJadzNvo#;dh@7-gPKD;-=S#~=B`3tMyrcjzn_w`h9!1FJIC)f7 zABTpm{;K}~{T844iTs$1x4#Iuv8 u{;K}~ z?c@Id)KBEhe@Yn&10$U!jq{yrBgCz|pufttv1eqHC8_|Yn&8tW2SF3~c ?RbyF!&d(QRhNJKJb(I~ z$^4p%=%L2Fre~Y0r^K_osi(^JxVw^MlUsr~D&?>0iTpfuZ}n8aVIK$g=jMt(lQA<0 zp>M254b|_tvm?a2yn^_>uENPaM6#HUAg0om4%LdEUkzG+_)ve?S_xL@ zNA!fGJ>oOFI*Y|h$UIB?#>_F>W!ME3iB4EBs0G+ky;&H8>*1?NVXB+|0N9SW{AK4k zu~i)zv~&FAGh**}kS0XSE%jLE_?Wi-8w-lW9iz4fk&`lM3-WAAQl%)8nSV3@>;Y_? zn5~zuUWIRMWo7rS8#rw(Ab`acj6e;dA%BWY?B?!k41E=}*^BwmWLb^{*yBGmUm&`2 z=&upb{{TpPZ*j3pT Z^Y0qt@P$k&&?@(Y%L7SsC5-t~(DM-(2VOu@4XL z;cu)n!7}TNi8KsWJypJsbv72)1&E2LcE#X+UQ3U)9W#{%hfw)kHR_H?Yn8!i=m1bY zSQ4eJAm$o#G6cjTv!dqANXxfr+WuzuciZ04 z4Ryy%#8iFAS$ZmsJjUQLK0K_>hRSC0AJQqwv@GPpV0bysK3I_8wYUwd?A#l&C-}1j z*JaL}BT@S8k@<=6&!2c4?kS+E(jHHgmLD!oa12n;TrVdHR=fI-P;V)}j!U$TdzY6M z3=E3P5?0Kuc4Vc;nt&d2Gezo4&@EkzWaJ78QW)) ro%drN($_wF>+!4pGne5$ Wp(IUJh)QSwB~9(ex*Gze{_9~r{o5;;(tnF_~X&!-(wm6hhMZ6w#jYe z%ax_bKq8F@Ms8(hgX|nrCEs&Ko|^qfV8ct@G4@4=VPSp9TTaU=_!+Dol{Y(ZBi%9< zB|8Xf6rsB?AAF0D>ifkS(Ff}+})!pxzXudke>y$Y2> ztDj<)EIjJyqq8%1S3?0hx^a+XOoL-<#mCW-_*?zc2f+|<%5RM66zSD)* S_B zxXst-nI;p& {(?*s)MfxP3vR&m6Tr2}rf=U(EF$|Jm7-+&V LS^hAzAAYv@GUG^?G4vQZp2HSW-#C-iq6)3615 zh}dJX?rj2$(Sc aVSc9LaL#hcFe+R3Vaicg;vo&P(Zqf zClq8q{RK|I?U8pl;V~vPZ#p^mJq>RaGa?HqJ|NruY{qN+EKaVKpLQ4 `E9JcxEj0KpL{Wcw@~T0&iDO!`khM%Q`W^(DW_7?^%69HN}p2 z*^d@ir`7<%syDhq8(TC-Gc4r{??}CT4E`hO^~_02tb)_r5MHn%U>YO4t*(p4pt@4F z{3}x#dVvzZ=aU7gmI5co?Nb4RY3tI)s*w VQl5{>dItzJZMQ|G~PriFr8YIAgIzf4> zPV6x&J|>l8!D|KJ;(nsnSYP69G!On*<1(@~LJrQAV^~6UuQyi35)R(sr&Nb9 !{_EO*em zZ=Z4AUE1|!ayqjMq+W+7W}jtxOE!CRct2J19(lTMoF~1{) NL%q)68}egSsnD_%ospJbxf1rIQZn(N=W zRK!JFpBPbdm=tU76L+GRbEuc-idtOd%b$z**B`y!79ae?z)UFpD(Ua76zbuWtRt-X zNo^*1-kupETFr=qGfWOQ@fH>w80OlgCOvm~TUai9fPoMfTn-RH0HHRLAr>}HZ{2EQ z#=#C<{V%N@At@*#a%-7Ux*@x>yVWD%cwubrdtLmYTa6I3Tkpd+_{lRgZthDa6w6?- zl=z>q$nT}T7E0wMZTZSJ(K7p92EI0^m_1H3TW8qO#`J{k%LXKWYc@dNyl;INkp#k$ zYvsDbRKpFHT_?+!=}%&_?v9e-H|%QY6k`boYCAX!-ZuWVgB*bm>1{Taa=}NgPD%(M zBz0wwvG+AfBq{8?yxY;2w4d~zyi6vI`Lh-F?ypr0kN4lDcf5LQvf~lAl1+IrkEZ9w zLW+1ZT)EY9w djdD0kV1?!4Uwr`A5B;k4j(cGg!t;?>;u zVZY?{^6}dtT+=;rg2a&kg)Y*Q>DFg6=JFX+1_JLAR+swno3N X$OWzKuS`Lej7 HP$A3sCxVK`JRQnGGE2P z6nx)*opVdBS1bSb7eIk;n5#gaO~By$m{O)BlDz?Qa|6+1|JT`T+QE`&l%8oxKPeiB zPa%kMWkK3bm(15I6+qN- r4isglftWWn7J!aN=?PSO`@760~*NPmEkc;kf`T$z|46#!I+y opw6H!MeD=-HIm*xEJw4?(*?>4%yG575^v5u`}eKv+5<^5L_ySH5G_#c!f z+y *p0S~@;k%yrE6Bte`rF2W08mLGH|iw z!u;`yKF~xIBuYn{vCctkJud|H5JU}rdn0qRHntaV<8!R%u`IN^)TW4oA98>aJ}fuy3o$jYaQMB&BvV@tySjSu{Co>7c*URDdQ_9!vo@!kfk~lkAw%L zO6HE^my#`4l~(slgSDxX4oZgeo a `HS@a|!>-GmI1z{&7-3=w^Po p8 z@01$(o0U!#yfYjAux3065mVufGrFZc0Dm*#JbugxyacqrsB~m>;7NAm)R6sLbn*Bs zXv~vt)6Y^ifOpu0*y3E-7{u~?!*br{BC}sus+J#s2jID0G&Z8g%Nk9b>h>Xgz2mNK zenQx1MnCqX>kCu{m`!bJmX1_9Q`|*BoKsqeyH#g(vS{wQVY_{2|GwfU_A(CM)7TW@ zgupn%3`vq@?&xJtAams{OBTj0$J_ZWzs*5Kh#a-I&Kqqs=T=rxdA1Hc``*9;teI2B z^j-}M6ogcMP%ewXj6v_Nt$QDHW7Tm;4 zO`b3JHVPDRTe7?HSfAJNq;;DHQU<6nf*C~w zy4BkH;xeujl& z7QX<_TeKznwHf@kgi!38R-r%k4As{Kj|c`bp6&yGEFe7?ZxEu6+zvhFU(p&@si^+n z*0+BpUd^`qZxBsAii7V{K%{yz8hBdP|AV3v4(%HcLyz Q8}A(MoX-r`nT(Om(g;h(7kr z8B76E>nhF94h-Xds`wAZ-3 %uO}Pil74gkUn(M8|Mn$0&-IE!TTERBg(epbDVI{21lP0 zHR1*x8geYQ&5r}CZb-+~g)5|Mm;}uiu}Osh1byqrJT?RH4cBXZ)bS_#E3njr9QhBr z9qfIg4MkIE lFd_g|K| XBFjAe7waK66&ALO!4l zRGO!N=!1pYj&w_buvv~9C6 g;#RnX0c?m;0>LH2rX5YP?5OE4nCU *_pbdnDt1E(tvU;)1a)wSXjA+lSzjrDm89c?$ zQN^0zHYsl=PI5NRT+VQRWt}kFlrFkDdaDn(sb|jAbtF0KvK%FJH{@5aqQ1%Y8$Ci8 zRQLrDa4u_OVW)Jm?G55P=e)_Yl~+E<)z?-Xv4I;GnslhhYAJ`J>)rk71GjxpSy@1) z#(g(4YmIFLKwZIcd&FfBPcwp4SGw3#V9~w4b@F4+#{C7*p#6E~SoqV}pLL5Cn9BwA zl4@P X0rK!NJt7`;Aa@g zGA{(;X}DbKPqOGT9%E8_Qib-Rj2sJ0tGhCOopW(ojnB98N3JhObPrezV#JUGA+$lR zSW_}Yk$qhP)f-0@;`!k6HwR2BYH9YGqx~N9-ZMEM+IKR-RY+*Z)+MF5EnJP9nWbQ? zY<2w3DMzs%J_lc?fdr}J|48N7v>*8HfB=f2ps+qW`*`~FyIVWF5HZoi fB)@C3bb1A`6%w@dfoMRO3*UR9V?Pl7dK(g<@rgtiN22yjcS4~el30$Ul z%1vBudL2I#r&n`gh09H!9lOtaXn3y75(;fMPnBtp(D5p?6soXb6if<;h}A;u;LxCA z=U{!UVC@mCWxhbs$chKCdNdV1J`sY8sLOt^&g>|cCDlw6n%V3%ecFz}&ab?KiU*(S zw&u?^SL8YD*w{aMv-V yH0Khoin_O_>S74tAexxhq_Y&r_c~u zz<{B*{f~xT<8KXp^8bT|ex{S?Ge^xiSKM0KKQW%jTlND8u(yNf ZHvY5 z?C|G+U1^44WyorN_Jvugi3iik*A|Z2kpw2jkT=%(tWd% I{_Tq1WF_Tpu}3!}KMu *lKLP#01P0@oo-1TNdnC*CIsN7@X`Jj zdOP%B*@oBG=q~E$0F19`YUX=1tn)Y=OOEKBO6!wmF{2QpCsvESUaIsvd2l=zoZn77 zufo!O2$HFrb&=;7)mpQ7QX8I-3PinlDR2Qh_^S>UNhqg9r&Wo1U6fOmB6cs>b&g z+3CdVwCBfsNNTRd%k5Ua?GUuL
MQG@shtW)DwgLgGg))GSZJBp3vzOx` zt7y!2Ev>S7j19^cGH#mNZ{lcI5$+8$5jLYV4|nxN(?4CFgX5J9Wfhs^nhe|2#!UJd zzq(;
uXvfhOy9lbcT^=Ov1X~i35Zk%%HUk4V3?x7Kk?j2d2H5>W}d1m&rJd{=;;Fwx(|m z !I9}U(I#!cGFtc& zwn0HUetC4sy|96WS4Z&GvrU;3xM{#Um2*>#*Gt?k8R_$_^@!v=(%5pY7Exj*;~980 zm2=F?TgWCpFX{&+8E3mI+S6DYRo)q^N_ep${otTOT0Ph(kf^SE?&X^mZ3%6fxz(r~ z9i|R1up1daR5$A)icoHuVQpoe=b&p;PJf9z_iW% M6_!e;ltoG@k0SLaO49+#h$R_?X4$&Tfwu}5A*48|=!_$NO=ERU#5k7gfEY#u z#^72Wkggg@Z4f+!g4_?5C n62Pq?(+h3#VASR%E`<(ZZRxja0o( tkHg9AJqY&tlD+qwoU)OxS*Q7)6&xdbgdt-Z<_-As *73ldC+S11DwzB YErH9yoA~v7E?clUSw&rbobn zMUaOfT{U`I7g@ARgcNF9wClzc#}#TwVq{mvR8m4;9t78gQX2sRFRnp=$zI?%ft0XY z2eC!}bdYTE{J&8y{S?LcK_OvFbQ^`Vq3MrLQ};#{W}!#%W&kvRWQD#(ch>vDlJajq zdIF_ScV3h?WQ@|snIm35en%qiB^N%_7w)BwUjP@oAYzAgMh 2xqDzKtHfrP6@O;G#aC2un^7UoImIrgkhW-BySViE0ty+?h|A z3c{Eb)~X@&TR62S8DIFdix1s*WcAr|Dcsc!UlR# $K8efN@lP(Np$a|yb0 zEm5XuZi2 |e(+{>?sRY0EHB%4+wpNe zhd&!N3KA>*6 9sKfg(JZ~Xf`abk#2Fto8N%vJGFX?&EE@U%HKM&|1rT9 zA89G@d=fad@iE)j@EGHw!$cHYn@Hz2gi%ivNl`|(z^5#ng`y1jqfB=FQ6~Sm(3XF@ z&_=Ob`^130Rqph!uyx|_$Z7e+B4CN?sXf>=(Vwgy!Wy6AB(ia?KD63~kXjvH;rn4B ztA+vtjAYU&?FdB{di@+AWF62YJ~N-6R3KGAM$Kj8NuH(3Jpk`=Q6uSs=$x&AMWaR@ zFocDdIdIX6Pr|ulziGOSqYe)abT$mUGXk>hz|VRgen~E)h{h Z9+cLG(~`O|viu YJJepuri6lu;7l0FTGZC*1Wp$292P+ z)SrX AS7hPFlXQ#(h3IYx3 |;@CB7G=FK>RO9yectvjM4 B_Uc63Y?M#qBTf58h%`&) zo8H-GoLe;WHB=K_+IOnvML@s*Pttz-)+bM!4J?g=(#_491CHY(XWfxELDJm#_9t8~ zF&AIrw`|MDz^>GXtR3Hr;J8ffcKy~77MkpnCbj9$7o0%XjInN*e(kU|>`<#)p&-7F zx5z-I6JhGJB!%|b%TEkdP1R8^n8$S*KWfuB{SY-SYxo*|12 lxCUImV z>~440(HTFQtqFN%dZkgOJTe|QXDchVMrQtnb05kZ+Aqkkvr|f