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 1/3] 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 @@ +
+
+## Description
+Schedule group meetings with friends, colleagues and teams. Create meeting polls to find the best date and time to organize an event based on your participants' availability. Save time and avoid back-and-forth emails.
+
+Built with [Next.js](https://github.com/vercel/next.js/), [Prisma](https://github.com/prisma/prisma), [tRPC](https://github.com/trpc/trpc) & [TailwindCSS](https://github.com/tailwindlabs/tailwindcss)
+
+## Runtipi configuration variables
+
+| Label | Tipi ENV name | Type | Description | Required |
+|-----------------|-------------------------|----------|--------------------------------------------------------------------------------------------------------------------------------------------------|----------|
+| NoReply Email | RALLLY_NOREPLY_EMAIL | email | The email address that will be used to send emails. If not set, SUPPORT_EMAIL will be used instead. | NO |
+| Support Email | RALLLY_SUPPORT_EMAIL | email | The email of whoever is managing this instance in case a user needs support. | YES |
+| Allowed Emails | RALLLY_ALLOWED_EMAILS | text | 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. | NO |
+| SMTP Host | RALLLY_SMTP_HOST | text | The host address of your SMTP server | YES |
+| SMTP Port | RALLLY_SMTP_PORT | number | The port of your SMTP server | YES |
+| SMTP Secure | RALLLY_SMTP_SECURE | boolean | Set to "true" if SSL is enabled for your SMTP connection | - |
+| SMTP Enable TLS | RALLLY_SMTP_TLS_ENABLED | boolean | Enable TLS for your SMTP connection | - |
+| SMTP User | RALLLY_SMTP_USER | text | The username (if auth is enabled on your SMTP server) | NO |
+| SMTP Password | RALLLY_SMTP_PWD | password | The password (if auth is enabled on your SMTP server) | NO |
+
diff --git a/apps/rallly/metadata/logo.jpg b/apps/rallly/metadata/logo.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..85db1e1faea7ee669279ec6809284cfc38e05bea
GIT binary patch
literal 87796
zcmbTdWmFtpw=UXP@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