From 9127ef73777997541e6fac3b2d3f4aecdf660c7d Mon Sep 17 00:00:00 2001
From: WilsonCodeSpace <123996129+WilsonCodeSpace@users.noreply.github.com>
Date: Mon, 27 Mar 2023 14:03:41 -0500
Subject: [PATCH 1/5] Initial Trello Integration
Initial Trello Integration.
---
.gitignore | 3 +-
app/data_sources/trello.py | 161 +++++++++++++++++++++++++++++++++++++
2 files changed, 163 insertions(+), 1 deletion(-)
create mode 100644 app/data_sources/trello.py
diff --git a/.gitignore b/.gitignore
index 8eac626..cf7b8aa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,4 +19,5 @@ venv
.*.sw?
-.env
\ No newline at end of file
+.env
+.DS_Store
diff --git a/app/data_sources/trello.py b/app/data_sources/trello.py
new file mode 100644
index 0000000..d2d35d4
--- /dev/null
+++ b/app/data_sources/trello.py
@@ -0,0 +1,161 @@
+import datetime
+import logging
+from typing import Dict, List
+import requests
+from dataclasses import dataclass
+import json
+
+from data_source_api.base_data_source import BaseDataSource, ConfigField, HTMLInputType
+from data_source_api.basic_document import DocumentType, BasicDocument
+from data_source_api.exception import InvalidDataSourceConfig
+from index_queue import IndexQueue
+from parsers.html import html_to_text
+from data_source_api.utils import parse_with_workers
+
+logger = logging.getLogger(__name__)
+
+@dataclass
+class TrelloConfig():
+ organization_name: str
+ api_key: str
+ api_token: str
+
+ def __post_init__(self):
+ self.organization_name = self.organization_name.lower().replace(' ','')
+
+class TrelloDataSource(BaseDataSource):
+ @staticmethod
+ def get_config_fields() -> List[ConfigField]:
+ return [
+ ConfigField(label="Trello Organization Name", name="organization_name", type="text"),
+ ConfigField(label="API Key", name="api_key", type=HTMLInputType.PASSWORD),
+ ConfigField(label="API Token", name="api_token", type=HTMLInputType.PASSWORD),
+ ]
+
+ @staticmethod
+ def validate_config(config: Dict) -> None:
+ try:
+ trello_config = TrelloConfig(**config)
+ url = f"https://api.trello.com/1/organizations/{trello_config.organization_name}/boards"
+
+ headers = {
+ "Accept": "application/json"
+ }
+
+ query = {
+ 'key': trello_config.api_key,
+ 'token': trello_config.api_token
+ }
+ response = requests.request("GET", url, headers=headers, params=query)
+ if response.status_code != 200:
+ raise Exception(f"None 200 status code returned. {response.status_code}")
+ except Exception as e:
+ raise InvalidDataSourceConfig from e
+
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self._trello_config = TrelloConfig(**self._config)
+ self._headers = {
+ "Accept": "application/json"
+ }
+
+ def _fetch_board_name(self, card_id) -> str:
+ url = f"https://api.trello.com/1/cards/{card_id}/board"
+ query = {
+ 'key': self._trello_config.api_key,
+ 'token': self._trello_config.api_token
+ }
+
+ response = requests.request(
+ "GET",
+ url,
+ params=query
+ )
+ return json.loads(response.text)['name']
+
+ def _fetch_card_comments(self, card_id) -> List[Dict]:
+ url = f"https://api.trello.com/1/cards/{card_id}/actions?filter=commentCard"
+ query = {
+ 'key': self._trello_config.api_key,
+ 'token': self._trello_config.api_token
+ }
+
+ response = requests.request(
+ "GET",
+ url,
+ params=query
+ )
+ return json.loads(response.text)
+
+ def _parse_documents_worker(self, raw_docs: List[Dict]):
+ logging.info(f'Worker parsing {len(raw_docs)} documents')
+ parsed_docs = []
+ total_fed = 0
+
+ for raw_page in raw_docs:
+ comments = self._fetch_card_comments(raw_page['id'])
+ if len(comments) >= 1:
+ for comment in comments:
+ last_modified = datetime.datetime.strptime(comment['date'], "%Y-%m-%dT%H:%M:%S.%fZ")
+ if last_modified < self._last_index_time:
+ continue
+
+ html_content = comment['data']['text']
+ plain_text = html_to_text(html_content)
+
+ parsed_docs.append(BasicDocument(title=raw_page['name'],
+ content=plain_text,
+ author=comment['memberCreator']['fullName'],
+ author_image_url=comment['memberCreator']['avatarUrl'],
+ timestamp=last_modified,
+ id=comment['id'],
+ data_source_id=self._data_source_id,
+ url=raw_page['shortUrl'],
+ type=DocumentType.DOCUMENT,
+ location=self._fetch_board_name(raw_page['id'])))
+ if len(parsed_docs) >= 50:
+ total_fed += len(parsed_docs)
+ IndexQueue.get_instance().put(docs=parsed_docs)
+ parsed_docs = []
+
+ IndexQueue.get_instance().put(docs=parsed_docs)
+ total_fed += len(parsed_docs)
+ if total_fed > 0:
+ logging.info(f'Worker fed {total_fed} documents')
+
+
+ def _list_boards(self) -> List[Dict]:
+ url = f"https://api.trello.com/1/organizations/{self._trello_config.organization_name}/boards"
+
+ headers = {
+ "Accept": "application/json"
+ }
+
+ query = {
+ 'key': self._trello_config.api_key,
+ 'token': self._trello_config.api_token
+ }
+ return json.loads(requests.request("GET", url, headers=headers, params=query).text)
+
+ def _feed_new_documents(self) -> None:
+ logger.info('Feeding new Trello Cards')
+ boards = self._list_boards()
+ raw_docs = []
+ for i in range(0, len(boards), 1):
+ url = f"https://api.trello.com/1/boards/{boards[i]['id']}/cards"
+ query = {
+ 'key': self._trello_config.api_key,
+ 'token': self._trello_config.api_token
+ }
+ response = requests.request(
+ "GET",
+ url,
+ params=query
+ )
+ card_results = json.loads(response.text)
+ for card in card_results:
+ raw_docs.append(card)
+ parse_with_workers(self._parse_documents_worker, raw_docs)
+
+
+
\ No newline at end of file
From 89f470508276e2e1830ea484666b89c974cc0231 Mon Sep 17 00:00:00 2001
From: WilsonCodeSpace <123996129+WilsonCodeSpace@users.noreply.github.com>
Date: Mon, 27 Mar 2023 14:17:56 -0500
Subject: [PATCH 2/5] Add Trello Icon and Update TSX
Add Trello icon and add instructions to data-source-panel.tsx
---
app/static/data_source_icons/trello.png | Bin 0 -> 8321 bytes
ui/src/components/data-source-panel.tsx | 11 +++++++++++
2 files changed, 11 insertions(+)
create mode 100644 app/static/data_source_icons/trello.png
diff --git a/app/static/data_source_icons/trello.png b/app/static/data_source_icons/trello.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0df984cfcea5ab1dc8d14965034792b3fe1e181
GIT binary patch
literal 8321
zcmZ`;2{@E%`+sH#WvNbIsYG>}lw>I(Sx-*O5c-HR3?qfcGM0uc!*n`vl&G*X96+2^plg7xr2MkQW7+%jw^$@w-*UH_+Q+EMDLW=JC__04dk-(*y(wDyYlc>
z
W)RH)fqZgwr+<$C_` ztjQjT7~W{h`JTK?zM0mKtHG^`i v?h$?8@OEf^@IV(40%|W;T!f za*s?Yay;Ydgb!`^t$x4JxOTD+Z$>Z8TsCvi%zUfXcR8TwP7v3HB)0pe>~i^}n~%U? z$GRq~2oLAPCc3dtcdP_%9EpeNF6b<;`2EKIIkz8@)N0MOEijy(AMolO$7KUr@-OMP zwF5^vWZ7jNnF-e154j=yiZ!}Laker*ER2tmDssgl@Yc*Hu|Quv zj(MJ$rq&O5)_Y_2wq!9B8?`9v)Xv775R^f*d2#Z44j` IbHyTMe;O&BsNd(BY#5U9IR6RaQG5g$lcY*uz1yJIJ z5m)|Oug*VIFtK2%i`WYwqQ2~}+(;TmZe{bhBwyhYbTjqR5!n@%Iht^a$epc+cjg+X zOSke^J3j5uc0QeZ!+v?u@6sm<%)OGAO=dvFX@OT4@Eg5;Q53U1fm&mD4DQaZWOIOW z=G)Jdo|$=6dRP75KWyPQzx0z@wDH)HMe3^Yc~iIVx2oX%Qn2xB$(JR_XvpAXMgijy z7g}dh(izX!q=Mhwr9;auoU06qU-!7ZPBEPJpwORzNMVBNz-;EEzf|&--iN9zy)=C0 zapkR}4WaAqudE+DAGt^R$sWR-`x?3|lYh5oCmi>=JzgdeIO5pXccLfzDus0XT?$We z;3#oEm1JO2dzg9Xo3NzD_#*e!*y}XV!uFD3;W-{vS~cpSD@V=9{)i~62gvH)YB(;W z4*Et` }ERTN{IEl#SKRhVQFh^r8kRh++4Jrd0*&5G{HsPv> zXr|AfljFZc`tvq%=9~BY2i#S?t)`r@WD9=kFQ}vav`m>sFIBu@G8G-Aq5uBUkvx%v z?z^QU(?noi4rv|H@if!^$J>|4((Vd9W)XOjf0?v}#OyZs8UNMyEq6Gc(SLb==?d9{ zYjNR`tT#F&UJ0s)tjbff=6u3FV|QjiKlS =fu_fJ#FmM#cg zOL|M2c5msbE0w w-(+B@YB+UW|`lLy_paiWfrAN zr5!HZyy$adrRkt3T u+d;M&qH)79K!m7?CAy4 zx1xS3H c{lNQKoMcfSqBx`6Ihk~7 z(zi9yf_h1IPj=Z9B0T5Nb6Il*b5>jToM~`^PyEg0H?w|wQNn?}Z+m|yQZUjxQna(P zbD`6?v$*rze08U7 &*YsR-Xp{Oa=-rok=_N+l@#2$7}7^%H{80KY1PXnskUacPBSuxL{as znQ;fPthF3G4E#o8(=YTC@Yr?^z&$dW>ts9|$EG-_FQ^-lqnBR&1Y5SiO8>Mpwb;gR z%x6q{?3R8w?aQvGAq7zdT7~5XdGdKC1{&ikl8WB(?oqn}YrIU#?fSt55qYJW)(yQ> zNoqB1HOfY?^}CZ^lUy~J9m<_^+xuRYUf$b _`TED;tr33O~9 $^#B3Ka(I)k?Zqz3n=S%T{ zr1@^MdDfGVCk o+yQI4~x|TV69j&=Kw6yJ E!}%qG%(=jyi&gTI7^PccuCOdZzax16?rY$DKDyRsgelcj x^f4VQp(IkG)sxu|<#<6H%al;xN}X 73FlWGBl9l z0jnSN?t{qu$ds >Fk8JE_4C4K>-3V&tNF!r8kFi6I8<^ohcbuk zbI;GdZ7-mQ3r_j^p!XTB*|8}nID*r^w@kcmXUkQYQI`1h^qG?Cc-(H_wVqrQWoGGM z-r!+1_xkH~3S%PRJ!lN33py>^v(fXl!y_7 N$Wp&MuRLsJP+)94T0U{)yP^YWEgkQ&S
ZUSJI}_c+qgKIYZ+{rN zX|N{ZZ$Cc{bD(p;j9sbBC?6@UaL@VKo8@MclvxOZ?;FK{NY@;`f%1`c3f5{k<074s zJshmeS9Dil6)4^)_5#wsY`Sx2EUn~XrkR&K#6sIbN8`E1B5I?Vr$?qII82NQ0Ulbl z85UTxPzu)wi(zDudg*FDow@W1ncJ-quFqCJAuYYTT|P285+-=Xx;KeR+`A?e;Xady zsm@re?_+^AR`q-QoHduP^*&5PPC{gdP(Ob<{=ljaT0*;ek}@R2O*R{xmtXe}m%>Nk zyvE@*Q=Y7wZ3PLlK=;X+NiTQFz1=*?K#&YF$vfN;x(Yiu?j(Im^ZKOd&_XRn0babG zy1pB{NrRD@k@4CT!*9kUe_ ;q2rAoJxSJ?(ea1UHT;B>9v6&{NBhP4kz%%{e8DEW5An@m;UB~8Q@+SbA4}~} zpu6Is?j{KhPkd@cV@1X8&%6^aF(IbZ7GgdB20l)lnoT6 vmb!{oDk?;TxPs^s5ee~CqVt3! zV!|I0F+CB<@5e+$&xslS?^vDq{-0&e5fKFgh%WqDMxXF|`uRlo5^DeXd;Uuh5h>xn ztAuYr>bd`vzSx_3{y)bT9uuw+J=Bm_R3!XrSU6i+I=I*XU1c5#I}=WjIX=^KAtIu^ zclsq(RR3**i0B*wpsDMstD-Dn0kr2edj&MN *%*Dy8*|{UpuP=p>oHC z3%x=Y{-O5&HT+U;T3PU4TDX0ggwVwKUrn4!?3XP5t0})^@kZe%pe}q|9bo0KU)L+0QU#r&Fun&JRE@#vtvbd{fZMu9U)(^xsU*Fm0@rU+HI7 zh1O)NS^3)i4>hjn>sIl(7E7bW@;1n+rBB0!uNGO)?k~2cQHU%tE7^*}W(4M2%kR>+ zuGeU{{G^!VpKR@)*3u8n-oG%}z}Di~J+SdHHzzI?v7M)D&31M-Hpy}cq`hrEq5#!W zAt?*`_?LIjE_|Dx^-`JVwB1CN6Jlk3qI&S-#zEBQe>DDo+>jhw|AJpB*)=vR()Ip_ zKtcPDXBReYyJCZF)H@j%&r e*a(Ki~i4# z>@U^rF4Ustb&wo47W{%!$mD~4uZZXaqxjobOM`esj0LxseioF$aw%rnl`n}RPhQ*< z1^dK`Ihj}O6b3gh{j?~Vj4}EK)OFsJ2@HOXg!wKBA99;bReJ~G7S?Wf?JgNt8D({E zVMmZwarfw`l(fWv$Mzw~vPb(As4WO`%v38!RWLB5Pg=tDon_2FDfl0eM$e7QVzz~& zLSrXoSYC?r%)YSiKT~|HOru5JSF1J#lSFNcz^`vLH|$F=f>&{Y3G?l|hI)K1t@Cs= zwRR1PqgGhA`0I~tSL?i2YdpoUqQOIw@`EX`lM!!J@`)Ply5sj-3IWtfk~az?6#qHr zK)@+B%5w0;HrH=uygS_9bMNUGq{me%rTdo-0QFndbjVBX$<9u?ZW;9!&~oCz1J^LM zGh6yv^QKX6_y |E*j=4rK{=y~Oo)+?+}1O3CL*cpAdSV~YV zIcgk &i^%_|Bc@M z0JQo%w;e}bH;piv_ItAg)0u$t6iMTznuSOB=8(L2lPWB%ec9Su^~}eKy+b0=`zh;$ z`9_UmeGgm16ddUzTX(YHZT22aQTe`+lZ)p@uN3-|L_58#*`s}r4QsRhL;q$9zJ@Cf zwTGWCn*%GKqvr(iS4Acrcly)nZ`$2s#r+w0{0$;Ee!O$rQ6y<4x4OPVJ$0=L>|Lpt zONSYk sPUn&_-bS>aR@Urz4uK9=XQ!kYfj>tgo?)43OkILZhvDE4R&2-x`wX7vj9b zK9J%tRC}6+d%ng34iozuJ?}mv7h{&nul%o=|D3xlk#Cr-2a9Wfbvu4drF`XccTuUn zAW9t*Zyo;~|6ocgH5u%4UEe56hWrHWTY`J5%)K)6{TmR{Bz2DuF($q_{0+2%CiMI6 zRjBAgF50!C^X?Qb-7-q310m%FE%@ZEi!hn{482 w3J{WQT>8Gm)$8+`6gr1Bt{whQQk%99n1XfjC=Bx z4o39(-Um3HW(1w_6@Sh14Eaj8G896|{HKn^4n?PbE;h$GjVDzg_!AxHU}*|Mc_{;% zAKs<|YQvZ$gCfAkr3bawW$?2mP%5bACH)hhzBTf_&u30?O t@DnWi}y zV&oCVBWfhsrAAzq?s_O49#m}6exo2h+cSix#uT;L9-eSnhC!mv(Wu}RHN%PJ= pN 0OvIOoNX*TSJk?yjRNjT)T2>@jbZ zb=o~A20lg3qu(l>Foj8=(`iXLkY0<;MZ*pa wX24 zfB1*R`mRdF@M9J*TL8Jnq _J6PQ38ZA|@xW zdLgmCcUdTW0%I|qU(P`yP9wX1^eJeeTcg%}t;yY>Fh$mWV-zAs`9bBL)>yW0@UGcP z&q!S7l=hkF;wJ?A`Gj*&46}Ziaw!AGvz}Jo%BFG7I`?K&kZm32drp%m>r>U)FRJ1` z67XOah{U}NJHSF*ZSXpYi+_~;10z~?)x?|LAB}D@d(BlhVfR)MJS%|cg$OP+jv~)j z6HxW=LOtuXE7S;Jj^ptS>p*W{jhNw;V2=rK-i~~5SSv6m#@JKx2#tY9rQBVu+PUbK z93xwePs`~{5z$p`cBOtN?@OB{tgR=~jj*jq*V;PERr=*#x^99_=~UIORGrQqXTC2b zhY4IDQ{tJ*>8&~NEAyF;6|iU~% r!aeU^$Y{a zcIi^0FmW!A=q-_>F8=AwnW;xl9+qUq=>EoCHZ2wSq-t|yCiMlXt)QcB<)poN7(S)7 zc`3@PRcj)RoQt=1Iok0D63Qo~v3$!NjR~j9D=c$G9T==LzKE3_RAy>M@=D#|F4;H= zT!HJ`;~W=&)EtI;J8;%!g1 !x~?(KeYBp3_oNNbn2=ckAqo!>5V 8`(r5_>*&}*l@FkNf#9%eJgm^_%p+ql*2o|=qR zL(!}VgEsfLfB4AS4Q&{~4{+<8l+8GQg9<_Qj<=h-fI~mxZF>>T`guHb%;42P2^?Ax zPuwTep>zua5&MnOYj3v6jpH)=na{#QM*xS_Mx}c`82>vc9C>{l=MJY5yCQM9=VBb| zsq4SEsO(o2eX)1odm$cqOcjP0`Y6Ocev6%HVyGvtWU`N1x}ew4e4br;`;Ad^-`+%p zRNnWkPihSGiwu( J3(@9woRz@txn_f`>#?6y_oFlM6s$X( zn*LC$c2o9F=Cp1W tIx!C9Uuyk8LTz2P+U06|@ zG3ZzvNk3k3Z>3Eww%@dpse+SwK^og+i&_Cbjjn)fzo%;kA%$08igs~JHyzkQHOG3- zO!xLbAeQdcUl>`fclc1>l&y8Jk)b9}UXowe^rc6p^&GZOt4i%~cTFCOuzv57xAOtN zK*^9_Z?5aT!y-J!Rk$H194YQR_tmij+DC@3U9Rgdwg^70I?f%4;}E1$LqtZt1#(>0 zha3)N6cGRg6?L(3S(5K=T=NFX1g<9vo(S0J&*%#(5H%3(Qj-^@&FT>~7VH*^sC51u zDs{%__A?Uej3;CaH`#0OWh7wi#IBoA(CAbd&<7P&`;|(&Pf8`?66DFl_k4SNHs>pw z#35A=7$Ge(fqYKu;?`W<7(}VT&Ha7hJ3XTCkz9*lY5}nd)v6g}rKs380mpEV^m6t9 zE7oXNgh$mbo&~o1eTe0SMUeRjZ>g<)3bWB7zJz)c7x&*SVU<(V;zQfsVyij(82xlL zk7M*ovvxv((Wa%L7lI0f(q(@FC=|Em>!e2dVC@+fHY1wc>_6)Ps@h1I!EDO0`~s(u zty#w>Gb&YKYs&3{>SbrDEz2`wpdPyZ*?gQ;&(tizX@0HhQv)Hm?aJ0UZ@}RuPA%{0 z0{9vjU&>1QY_`Ht-^KEgZ7T(1rjs-rvnG%e`z7XJO{vAo;2?rZa%GxvGi1KM!w8 Kp()g0gB*u z@*`4Y5eMzIef`bW3(#iPGsO3mgy3-ih7=i3!^uEXdmbpgfelCwGsLuXA*W{gBWsfk zDZX&S1HfF);x%nYFwU<;q`h5fViG~hqu@T1U?&TP-4+Ik?GVQnGP-~+KJn__jgXas za`UC18MZeC%r(!?hTz?eMop8n9ua0NLq1nu)m8&2pp>sBU5d-V*dofZ8Hsl^_dk-d zI4l^Up)=e{IRc;sdhE419Iay8u11iYrF^dm<6aS8w0V94+Zcfw2P)7xl>Io!6Xvps zrY>2hmnEO%y5KNS{Zv~_$BY=Z7{|pu&d2C7YJ9`Q5-$cBl`X8v>OD|RvLctAvI&*& z#6{?sKtxyZU4slvSFuTZGUPca5WW3_mCsZs! IvcRI=33C zuc^ThtTAer)68}8`QC(E$d(a3_a4D=>Y7!9skR0kBd)cn*?el~Sy&P2h U`} zsmxGrI)C0>W75SV5oFhB(RafEUT&~>vtKXQadPMZ14Y&3X+B{5n6w;bRO^mv5)8lO z(kpI&T49!SHx!$LF9rY=RM0o7mY*vH*Sn9GI37lN>M(k_9P`jnt^j>aM?EnX%@PS1 zI$9IU9LKS0{3Q+#y+~~n%ebQMFCnxA-y$mI1C6cSMB 0T-o1VMAv%0Kg)LUB93Dg)oyZ0UKU^CI7uU13MV9@ zLVBehl-Zh0gxdAjvIHX&H)A9SnUQKWU5_-+mAPTaR&Q!}(>1k*t5b)j&tk>Q%#Vk& z7VGKa*$od4EtL8g3`V`MZjXY)G$01ME443l(~(V~Oq~*EsHa?N+&PVgN67B;V?G}m z36Yi9ykdP8kEs0#e<SMe;7NX^41yfcUtR=~3#CJjl z1eqaTsf-gME*Y{u8N5EKElINPx`<(=M{-FM6Zr!wxbB+=QTZ9vldPxlGM9r}HwRrX zjqFKT8TdPHks4onP*=1T-NSNKV8>zHY=x@H9$# ouXGy22Aol?_Yztn%bAVbNoc3}O07OPnPg zMLnIJ&&?lCX-w~(HHBZ??_aMip5;{Q)vQvQjWh8TzB`@@XDk(hrIlZ>lJk3+(H`&+ z wJ31mTOkb-j76;L0;;_{Dm>)Bc_tDA)kwQ#F%TG46cKzrroeRap7< z%oeH%iN>zARmD`Ta{%T#6K4D&|4O%XQ!NW6wFy`p5IgvsRK;bCsi==SO1tY!l7c=5 z0kA%otG#BE+t_br5&%LnOw3KvOhRJ%EBnr=Oicxy85dzMjEMqW46fbgm%cD!;@#@F zbW*Dtt|7^O#+dDYCq#e8rr*XWl3tQjjK8jTM6@=LF-f||zBGC3d`1NCck5B(i%`MG z!W?rnim8N%KW* N`{Xlqft=Oc1GbBTpFsUO1 zdfn^#pvdrlDZ@$d!M}v_&*PQ)OE|wY=Wi1DHLZTxoWH@5Uk3UACvU}+=N!#4tw;z& zHfT1qynmd9iyHUzOi_UghcXRysqKip8n1e>fAQ_v dEd%odSA`#6CXEjUY z7k`?_Sjc-u{4WH?Z-f<8Z7R#fGtnzST|5asJ|23P A;Lk$wRYoC!} u}il;5Xzy3J;o-s9_~_4vSCsdZ%8u}*p$shC=;tZ z3DEL&UTJ)6de7fD5`u3UTi#zQwY@@Er^8Ub(0}p=1dbvJf^51i^{4s9S}rh0iIxP( zQ4qkb{w4UpBrm>i4Yl@=CEC3K(l}_=P+vh|n_ptb0X=CVP;F?F3A_RIT~@U^UHx7< ztE4RJB{(Q;BZ5i9e#7h~1aHE;A5k NlZF za%l784xmDe_Ri8&dD)S?zSv9)Mbj~jG!x&J>!m&!M@t)c;Uwkp76^%H;osPKXa@6K zpadC%eo`LmgD(ZLFd&-~Fg_k0tW%M-P0q(nJvu2YW0fgG7fGddeZ;n7T?B)WOc2vi zcdVPzZ=nTT_S@%;Jyw!vnpC}6637_qFsi6GzV7?PwnA%Jwi;APu|h(hHGKVU %~w9hAw{~tdpeWihn3@fYF`_?zV)$q>>~zF&|-k!!dT1? zwz{sE?QcMv`_oJUZYm|B1{XI~G231PmpIhdD5Q3Wl=S+!qqYNMrYQRwwx8zqXDEdK zSbi|PSm_jyxHU9dv$Y2P+GQ~lO7er}_|R&uQdTp_s@}o=+a0=yAU5Z3eEh8C&3Vvz z!AyonZ69wjoVYYk4!1kEVd@Ei&y74Wl8O%ljqs@-K@QydIvjjE{3|1F1R~q~xQ~RZ zhu9*G4ww%d5Y@oj^_Ry|mi2pY_B?VCZEeD1 uV;d@or3;|BFt?Wf8#al)*o8{g+@JTVAqQvR@oOFL0&h8gXZQLij)})_s zEOl5YyVOx?)u_{da2JB495J-VUG0p| Gh|M`{u|Zd{*VhaNNCO?S$)H9<5OSL5w<7Fx*RvVzj>{ROJG{( z?A4?Y7r!+bP0~YL&^;Rk~ax+-J|pK Iye>9#t(8~he28eJzsd?y_T)l9~mo{E>d+9SWTL%DD z#Lc#a(*WzS5BEJf`iq`naLr8=JuxbbCJ-o4A(T4TCu3$p)sz0pBKyHX!e_*wkPx^% zjA=_t1+1K5S%+O$Kw#ply?Wv&mvn`?!4{;90yE?MOUL2OIVn^$r9C1pK2+Es2r;C>EQUt+BGE#-gkE3D=PMp8xXqs%sn=T m&DsfgV z9d;jroKv>!)x}}Q?&`R%70I1%j4bdh_~eAU9{4Dmmu}dCbG++3vUkchgj))tO@}_W zG^FmbQgpJZKMotD`iW_?<;it8Xgf%OOo>}Csnk#GbbU^)T)?sqqiQ#?W*s>x)}nlw z&O =^Os72fmJ-M;lD>~mpGHs)Qqj>( !X9T?xW@ys9ryie13hQM zqa&w2%D%wkFyqfx#@l7@>YV&k-wgNHE0z6-H3o5b>@Gs4Zib0@?Cl2|!%s;TL3E@r ztuf5}&HDzRP!`KRR+Zgg9oPfk+=8;BFF1|xzql67m!>0n-lt5ZD+BkhYfvOkdLlE- zbQx=;vzVo8+Ct >2#@ruG^tUmn-fi#s*!AEn-zA?7pVW?*{CeQ JF&e=)AKcAM7b41^;?oUIy9YPX-@-)%xk()#bv5;X zq^>^=PriPkkD| GFK7maOQtFwE-;j5 z_mqvy_8u}*&>0`3Y%H%}7FvHWYnZ <=eixC%3i^ z2f;U}aXX031Jt J3 ^ zi7&}JJU4}ReD(|*HV;5#9azmmc^kIP-PTn(SzZeuD>%Z@AuF)p %667&pnJ|M z*!r;ORL^>iVxNwQXPlIzx6gd}!>mP?)>@Z=Br1Xd5)yG2eFjTX_)BVLO#AkZ1H$c4 zrPM#0;w>73ZySih*RvWVz169;t8}tR2pS)3Ey(EQHM-A(6eCemzirm%uli%Xo7W^J zdhjcq!K$-|$8W|qjD)vPBn_j_VF?7?O9^)PkPQO&H) 4UWd)Oajj^-h{gZl(Urv+So-79? zgAB*zxGfE}h#NY(cgN?lbf&1$h3n~&>tzkK_-lx72&=VQBYGBr16DlZK)_-ycUiV7 zc3BbB$#R{~>jVvi3p?T#5`fJt8Q$a~+Ryje
@X5&m`n|PrZ^^(D z)Ub|mMVSQ1zHTQ*1i14E3==4(o9v^J eHZczKn zc Q_D)%?Y4PmrRsI6N#_iJ9v;X5dJ_}p z*K&QtnM$QpV#U(7g?1J=)e3NlwmpQnno_Y|2m;;*{JyD $Fq7?u>A<6Zn*nODw7H*`oQcct UZ~JW_?Ow-oUWr<1odZXf^MF9hLrb;67pwrA;L3|CHC+O3 zIK15`omt^16Rg-3n?w@`n(e=grs+GS-n#d(Xj@~4>dS08-bpYBV}HbAU=(z%EWe?f zS=A0#VOqKlXc%sARe*|JJ()Iq@<79sPfcle uRPzQgwQ=$;p5#fD z&n)=i(Q;Y00u>O|2urq8c~o>S&Ej9)O5(>!v0A;dfa2Q>s&OSfYACFh&KDAQ)M&T~ zsA@S%$5$BS! e-7tEcB zSYI&1>}HDhX6T1tB|4ulvCXE9ZWpNKIQLH|$Q_F!>^-|OP;` &@siGksi)32$>K#BlGq9kC&eK&4A9EgxxU$TBSU7k;~;YKH3Gx9 zw9%MTDJ5{ROC~|x6iWa>WB`Y~S`6f_q2mw8z_L}=g3pOEIdh8E0i|AM-w{H}EtfH+ z#Y~Ci!%j+2ugb&14AmO`?pwjzTtImZu2BS?(MxjjoGE2VyZVPBoc)!>i+U0c@%pTK znaQ6Fjy={S 7@|nr7j38}Y?-uF`~C>fvSev%;C%aZ|d_ zHDWVU^` ^7Jp!Y_!Xq506*+baC+sqYn@f~ cgk@?N&-fL zD#$$@6Ogr-4Kit&Da}$X!S+*1R@Pck0i}WdB3D6?ruHIk `Wb!#bYBGQ2X6;Iv*4)z zKG={R>E(Cq(`V1%isl)ssP+Wd{MafRd95L%tA4USs#0^pbPXWp-= QTU-N`;S@{pTr$2E{tz beVM8p5AD6b!zQsz=N-^Y9V--|J_arqlW4^szv>#z zSdBq29fZqlnpX+!Uhb?^6kVRD(-|@FZWWswzmqk1Bt}hBp`D0-)m|Ug>mXA{$V4K1 z*wK&lYI6CqP6(Sa>{FgrK6Bw0WzS+b0lOVxN~e{__^1@{UH)KoiN^<%W#iPcy zFGqn40vq+{c{$WL`lEA35=CX7{ 4lj#MwYv*Xwqd_ihw|9mq+9-j-8@b*Q$oqB5dzBJOpEA^*a6kf@DjWoQA zuTY^A;}gfk+WC4JC+m-$bcVl#h*K>_J3R6w?88!O_>8qz_g4Bo%ANI-V^%mg*qo+p zYkDkoPlj4P82s6OAd#pu(_gg~4-d!mK~B(f19i@T&LB;i6}w^+!p`)5ZvMn<$g_v# zk@^O~1n omjj&Mg7^5nZYkwH*p%jX&{iSARf zB{j;@ %`{^?3_-#s$jJ7QintMvOkA`&U$M{49{JsI zamK?gJl73LU%I2a)H&5ZD@d(HoiiDj2SR7izWujb_uOlKWYp!jJ7ef_d=b+0S=&cS zQNT7E$2x7RvIUpIa!m79I+V#<34ct(Zsl?qwJ2I4MR<7_V$bVaid4@7rSK-qLB+{> zXJ3r0F$n96@Gda2iJ^+olaVq#P}X&8&1yby5}VxiO?Hrao!6-6Lb+9970zQ5Y;QmM zMFPXT=v1&>X;?GmGXdo5H8!Tdcm$ 3s7Of zdsGlgpp37)$NG23Fq-Ej%t$F_kP6}nEELu;D0DO~3$y@cyFfr5tr~M!y)3GeD}3Z5 zDYb0%g$>3YkDk>d)V)wqiuIrY=bGCUKQ89ww0>H!=U~}nozDu<1?@qkc!FS?yoXyM zQw8Ec_eOGjd4=i<%Py#W&4k@18j57!<({yc6)wp^o4dt_aH^rRhkTZ*3PcQQRr|S- zY(2T M)cObY ?YGG&&rO7arDy2+L=e~Dqz<5@MJkJ>6z!0{ z6?wwXiH|vnRRSq3c+S_4MC+OVlyHg3k^~xugGRGhygZ+SOrHH!nN9qtEE>&V9^Zwt z@(Sxqd!HOe#stxJd+W^8?P-8tdVO0BstX-4%IcNspC8XjSW*XuM5?PLy3QIu=a8Kg zPE?OSod0B!646ty&HSuGTQvjUsnGH4+F+%vC`XkR-Zh~GRYOQD>|c|bBuQb|UKX}J z-LAR=>PhaC8ShS0!{AEhg-F#rIWbS%6%x4$rLs^1TXJ2en;!IsX%~5z@~0l1c&WQ9 zEtgH9W{M1LNBTIW)fPNCSr%leT4Qsz#GAM3j+|Ocn1lGVsxH^Nua@g_sO0VHFmG_u z1W509Wa4@TURZdqN#v3m)#%FdtAak|5F$KrgG9pa5|o0|s~G)frLDWQ{pYaPY41@* z#O0)=sF4L!W>b%+`!25KTK75V(UjJGoDT r zm0xWK=-P`-IE vfJ3Hm{Xp{DmgWT?XLA><;k_0vK_ht>QyV z>C$+Yk3QoB>~(ZAR9a-=rOcQnd09@b0%3ZQ#J`P1n=F^>M$&sDc^SQZb0THn3Lo#U zw;H;3kIa>CyA<+F1$$NxQr+h$66et%Xq|9nKH%AqlamlMa)9dDpk#R_Q$?1U0URfL z;^vYIf_P!F8o{2gyLR=#hFyY%jhQBNf(|&_nmGV9G-qWpG=kg^zy5uQsa{GNx60)- zvB)87(+SU-mj_q4WPt2Okg$T}9Nq aTZH3I@s`}eO{T#;tk)) z6)iCQWepkcN|XrBp=!&GX=cACmut;GqTLoEO3k-9 DNv*ohXMuK;;zN5P@qV0cZXoXU5Y!jxVyW1pg?ge!8N!; za0~KJuYT|S-Pg~n=Vd;Tb9QF-%$l`k_Q@1%HSgs1!4Hvy&+IYOc>`OFMZP?NThzmP zA`6~ mUq_n{DgENI$g$zupQ(#Qk!iN1@e zsF*z4D0qKHoR()5#*=TDc?QYdyDf? a8jW_rZd8w z=~+2{-isVlqE{pilM&l2cuz0cFCvbXz6HWPgA9}Oy>lcUV;dc3HyNn@j$paB?jjA) ztB+TL#^>hH)Fr4sRsqwKij`8SuDa<8=ty_8RR3U+Jr7ACaR~=oMkcm|@ru5yjD=Rl z?>zG+mRqz>_flCgqf&d0mvHK7X#3HVMla%)Pp{~X8rf7yzB o{p zc=Tnv|KUo0epgzi&k#5pn)luYG~arP43+BPR^#gf>^$a;l}^Rg7nD@2Tr-{CSnr-F z)tu+>$PkU{>@F6a!KjcF&N uVWj^=vIRn6)r 3)C3!dg;l{@4y+Kg`#24`RcbT04czNUI_2dT%`PU_Nc30p`r6mE#_$Ys>F z3@FLh)NO25-Y%yBa`*YyHw(3GTh-KB#R)Sz@pxpO*Z!Hf an5018fGw4(_rE2dm z%;|2O32sMZh>wZ^-3<*VBADZ@CrRBdiw?7ZGyn*PUcP_j*Ja85;K29KIVoULFr7l; z%Q3xB5XISAqszQcT*)Jbz7NIP)G;-Seimj-vYvM;x7ir48M^P&?31+E34Dy2`_EZZ zW>0cqjx5mj<-WCg+}EX(p1Dk$D^DkJV8cJ>^MD;Dx)Dyf4Ih4LKCBRJ`K9L?Z@P;K zk*cAk7eKTD(Pf>wkDVvoGC;Gu a>nGG;NY?{z<~o$|Gg;2Vu; z`FZcS6A=`1KF;5J9}rVG)tjV04f@nTR~aBoq~;b~Vk#GLmBg%4l hp7BWU-(q&pA`Sd z6O9=EGP3ZhL(h)hroLvDr@?tE%W*5qR~(kmNjL-v5MNB(S@wR~SW~x;?rcx8yKOCD z8s~Sd;@MfyJnai&SoboIG4)&7gjbp#6c4cePFqxOf=rfl*kVtrK*fM2p$?fGj{~G6 zqt(vaYGLH5&XvGU3lI3#clY@C7z=d|=Y;|y9{doZ1T4f`-0*lOR9XZyv{01LPodHw z;Rqk-GT`QNU-k8I WBI52MRUDrjA0>`W1#gsb2 zz0qTeO|tJAp)Y13QXj6wriUYJ9#pINvqFNOF^q}!s3xKfv*`}S*Sh>rc&E?2mdo0b zW5VydhC?dgm5#RApl_I)M3S)+guYpLC$ClzWQ3m=OHS}8J@=Vp#>@_c^0aSRJzwk1 z;_P9Lw>6L%cA}$ElTWESw5cLsBxZ}R_9Z?`$i}kOZ7&>+J$eo=EeMtMIrUG( RWJeMIrs)QX*VE{1MMK}n^FEYs(jn#-xXb77Og{Gw%% zl0gLtu} mSyeIVuIY}LXO5VSW9$%O7E6z!1m_fW^F(|NoUvp zu2OC0Bb&hEr
)U8}6|KIp4g zbDW&3U&Ey@5omSRj}fI{Ub0libKRVyE7N{s*joFFz*`zzC{-d?5;w qZ|pmD*)q@1)D!R7R }B=p&p|UbO4QtgJQScH9+~&AF*c4u$Ia?SVg~iZok?C z55PIeK++(8NhY6ahJNklDz1yf*{Ei?JJv_Du3JECcrtKdY~5!*{&Q7eTei>E2UUKx zs~3K_2ECfABlkmos!3^0N0(o$cFeGdy)=|7u+3VfXMjsY6!_-F |kW0@>c*SIm(8Wt?tGpmulBfyzwYgHXRw-@5qu1oPUh$r>0^urAvI z2+S=w#?9P<`(7E^zRgDcS3^3N$91ZqWTA@b3KTts_+6Wv+2@JRyBt(aVV+KPPek5Q zZpJ;`IvNR|R{a%^_*KOj^?Ez2*k0Cbk5?!G{5XTqw-dvy)BDxz!NKsSt0@^qJ&WOk z1zAmlUPen-@w>nXk5^oIOhP$Kz8FVh&Mi))9Zu}$)SV~33}>bSc09Hh6eQV76@ax! zmBZ}|bCOxQ;ZL{A5g_^KgKV?XD%qM1dkn!(46p0AichkgT(ztnUzImqA$t%i6cx?+ zX3vB*k;R{Uy@DFUnDRll^?1RPHs2G1)Qt$Z>?qSlOc~~Nzf0#GI9q`H&B@%)v5@y4 z`uBiIEvXuF*-N|BGMRxsw*VZ|FIj!*vh=^p@yu ^4;xoQ+!y@m)+|o`?T2b zHEhjAjPTO0Jj9(JlS}yOt#U2|ckM{eMm7vroE|iWqCYl-hCxoFkg4gt`m>XdtB!Q3 z40KdDtCqGbM1Mm`@bt#O@Nco~-+}GjHrCHv?gr?Xbq-HJ@3)1#Jk>h$hf<3zw1P+{ z4Uv!_cQpi=XNSVi>FDB(lk o>=%>nD9~!f`nzQk?C!(gwH{Spk#h^HKO+8s-xib@ =c5S=2HeDjO{>r6MxPHgm}jk)WHll2PB15j#xS#P7=e*v8{IVEO@#bO~gC z>ke%B#(r+GYIIR-v$?Y9()l=lJlmQ^pj3_CSOscc nA~D#*nq)fr` !U-0~w7udW7kVY^+7-7ku%rUQ`V0)I6;x=|3^n30}I1uZ=aA%ziMk^u5#qM8Bf* z`!f3F3-J5|U$5Lw?@qM&nWFEF#>qCgZHYoWs(ygu{-NoW1+d<0jABgsy(wiQ4=R`N ze)hhwj|pZ>Y@OMdNSu(@c&KFSPF96Ye%BC~EJN#eGqzyyQ=84N(t=rw&rfm}^OB&F zo&y#IGaIVtA9U-Rb75bu8R#qJM$z`;WB#Plf4ko|)L-uqDgvj85T!E|H_V0{n=M1o zd42O^71B+IQ$JBJR|5zQeM#zm_8Prhvy?==I#*)%=$55de!!>KZAe*)(F{6}H1?;} zYX*Of30VI$n0ommZh(GdmMuoX+GOO7Ek=;)XpitcyEK7@|3!3lekcwd0 w|M82}9 z;d_ueS~2U#WJK~2)+sfkWn7 M9iCKN%wAA3X%gvOnVmK5gK+jZ{B z1YaI}u{6A8TT5*+j``6Tfn7f2uwb5kQvB{tCUa>m+*af9ij DNw)QZn1acG z>j|XJ$P=S-B`I}i^sGD~UYr?^gCr2ApAns)iuxW|J1p*Rp;0x zZ;R@>pZ#RCeRA2`+95dBPtef3`ouf097*G{UXP(zDg5g27z%WwCA!moncwpv{~B5D zyJq$HdVhCDxov~Fx|-}>mCNPE$u8ATYJrJiSWX*>nqO%`_6iwUS)5t~XyW7tCgiX+ z9*10=&AyWx6zw(kZ|L^N-^kPu#<`2X_6Vg*R0n@+ 5P 7$u7vfQ{D&v2%vkcv)O)VcS=1 $Tx9jUTqr3=Vq$N0u0j?%Hqwz4`Ny`nyevNTA?+vmmp#8!|#>Es()_3 zM0t^-@%+Zi8dy48kKXl_;VOWb8gJ)e#l43shHR~VoM+7s;t#-GNt!WHuhc1;cT60F zWYbuw=L?7e{6Ub!N-df!bmw4%x6G<}GDD#d&I^ixG9!Tp{SdS63j0s3PPe6pVs=f| zG;)2sMbI4G3 4wiRS^|;8-)?rkxW7dde)}f1?y0yPUpA5(O@5zi;aE;Nf z9s)jk`50=pe|016xqgXPx$;YjBv;4xjayr%uziln?)bwGWa)=S-C$xetW?lRyq)XY zmFtS3ZwHE|tJunSWvYU_jCZKj>x_3P=cG(121t8N=Sh-bQt_-g8s3@=(mXH!BhtcO zU~!-r PZ(r znKZAgfDtfLO4Lx?h@}`%=M(F@J!0q1oiG2=k+qARM!PZ6X@AO{caYt+i@sa`TCQp! zte2LE5n(meLS)=!3b;#2WTomW8{3B~-K{D;pO+9YSYFf9iv6e?IJk{VGd>Z&Cp;j` zlp Xosvx*Ys%Hd-T#CT Y9|>H5{NZK;;|xQcA}uW`$Js$Xh%zF#xWmek6bvxQkwfOUyHex)(jnht)+ z@}7&(!%1wo?mnK}(H|r9Tp{GVlH;I?aoEcr=h;&H!Z?@AS6QVpwA6wtVHJeW@i?N? zYVwJgx4Mp(Cx3SN7Z0lGZX@Z-{8;akm&$_2ArM;)ZXa&nAW0tP^hifJNDpm-J=X8` z!O6ZhwBa^G;|{z9%3Nc9A1-O y+I1FU>%` z&Izr-jeLx0!F$7OFtX<>Dly;vda1**Vjs*OdX05Sk$Ep&*_M9w fMxK9}{C=jZCUCT_1nRK3Xmx znj9`xEMWZlRNq-09d1b%N3ZJO0TO@Fk_t~MzdX3yS0rV1#&N=9l#CoyTa1*#45X&Y z2bJrc#&~L4JHDZDMcXA@U2eXgQaY>(fFUweqzTK2-8p}k<^e^T48|!mHKk7OkYBT1 z+4PyzYi92z)9b8?u_f|3qm5hqcncHqrMtO+&d+d+IbFtA+kT0oF2G*cY&r2Bk9;;6 z76&VJi6oy8mKBeS<5D$6&3Nw3zOTDaMg4YEC;Ozk@tN+5mnPhDfs4Kxe!I5UD!K7= zaf-0n%%ZJxn$I=ND&xWRcP&F@ sFrWWt^p6KzsVAWyL6>I~Y)|tiR;KBh_FL%amsiGJsiDnv#W?dnd1o9S$77CWu=) zH;>Gv$Csff!Q)WJw{^X6z3*D#kL!H{u5>n*PUAXzP}|C7ej}Vo5MC`pX*#sY={bbu zvDMp(NEp*9qIov`>v=aZ4OnSpN$5+R^$H>YkVxg|A;{l#rWmcAby0K;0c@O--R>*n z2Q}C{xl;7El0jqYoD}!$#g0DA32nr`EPbZ#%ppXwIl*Ew{rS49Bj|=H?Rxs9BBP`? zn_`T4J4 KJ= zu$jz_`IvAlobx4v!#m$A{pk@FQ%%D)XEL1nqt+bvp_{Yi;HYIS_V8w~E;s5}IZ>7< zQt)^C7AohM)D!xJ9;UGe&7Ul--{unVnw+1i#<=6d_nO|U#xvJ@)HXsPAsxJp7t~db zX5+GeAZ-n9#6)947TrW<8xB)hLc1Ss<7*$d#l!RCSzKRZ9;|*tcccr5`(t(;J)@Cs zAX>cHqqXTe*cisRoz+9L+iGW%t{YiE1b)dCa$u6~ct>{U#VU-e19H*T@LA3?5$#H2 z1mG;{_&vJJ6PSd58(s?tiH<<}7`EAj7XQ&NJdW!Z=-w2|0yMHG*8AHlOF^eU{*gG` ze1qK^PQ|1ECDQ%>v!eKC(hHS9Pz$fKXcvTp|Mdf_@2P)o3t-xBoab@;wGjE|*Z$7- z{p}r*U6f7wQ|n!{omg@nKVyE1>p{=egf+BgiJ!ja&6Ufs=tlolPXAYN^Y7nei+QG< z-rLT#M$GoVF6vf{Y5;LMyj`DJ`HJ~b*2nGdfzmA-aqh#O-}+7(hhH|z37PpP!wuR0 zuAu&Xk^gwdKI&PUWuz6;(0I>(BH{n`-G43^3-7sFI#N&+$N#*;e}3xUjOeeA2<1Ex z|NjO4>RkV2|Nk%kBGiqA7rpg6Exu2}t CnGJS7NNg;1Qrd-FZ5~U zz;Xk{wP(I~FJ#H+Kj<*yzH28q#ih)q48v6d=S$K0+$(g@uB+Zcg ~^gG;Kl#Lo&DbZ!J}X79!=UDcbJ#k-P4YP zm(OWAN33=U(F^@;9&QADfg@j2~U&Tb|tUPwTD)-mNK5lKKJ|7!O8;+ zkGg{jie8XXhBLfkL;DH}AsiC3haXJ)oGNrYnnULZQ|Hb9xP>=}H~Q(wXs+@nF`jCv zEyM9L#{b@ XFg2IqUxr3TW2&l2*P<8IF(R4c;n5fl%9Bc z6-%S8e*Ctkh$!OY^J=Mqr`Vd{o*dbq!9S4<_v}yC@ukxTCL0bHIvXce9wbdFD;BRN z5^X$7bW(D;3VxNZ!k4U1Y4{w)lzKC0$8vIR4W2dJo1Wb6%#PV(?5v5paN1A}*j}%w z4n&b~8!z?DMNxIo^BuJH2IIJ0EfriGPELE7uDRj*8O*1JquzlRlMf_1K}>xt)7Mpc zo!Cx-ym@W^SZWjUaS{Q1sTTiO>XReKXKQGhT9*+t;-;NYEY!lW<}Xn;R0shThw?it zRTo5ji|KLRltt2j8U&N%-p9usGT>s%!Eb(TA0(2Z6hx Rs=IoyxNfqP+|+agI@%c!y9Os}tr@>c4xDf*uTJEJ+5sRoXgxl)8uy zrBFot2$oM4k^P`huuf5b3kB6mtCBI0#+7cX>r(q(zWAC^BU1R_ TFs9Q>q^Yq $k)=_Xd^QU%f`x>Lq)yT8#fZlNmitImzRFtD$fQzA2ngUwO2%X)Iu9m( z%rng}vRr0jIB;0K(tR0;qi>;*CUF5Z(K$!O4GlwF@ouA1#W$AqM?5WY2vTCJ3D-Ng zfEJWFt#9(CY~Mv`>rM7e4}`dnM3vd>Z?+gY_?}#L^li4nCaLc+Rxzn|02=n&>F<;N zorwOD0N>5v45ZTuek@m~P@56vnq5Xc@qL}eT02{*Hpa7qOO2(B`YVDkrc~8~vQRDN zV2j2t#ChZrcU&xqk?T4H?r4w5p_%GY_~sKmDNuMk_^0^yk02N7jA(G_c&XK_4gMU4 z P?d1?&?bayaV**H&=O zE8^)*(H!mjKB_$#KYel}?SbRLsI;}j=XA=HgvaL_*qH!`U!K#=t`z-uVM6?oB)9|! ziL>$_%zPn<(w`f2rZmGyWL>8<{X9%QQ%LgVBQN!S{I@f-*SvM+uK`4jK@ljun4XR_ z@`+PibYN0G2Y)$KZa>Yy+6s-e_ShC1WF`b=wHPwtuP-r4i)4u=QElC6?TyACX1>2= zCa#Kjd~PfKyQxwK#LQxNn#L~9j*qXhtQ`87LZMAP6vvRJ7=8Pza(OJ{DXH;D;9cf> zCj5b<2n98#aLY2Qg%x$w-olu0c`#)dQ_H@y6AUy13lg@@=$O5$yWzWTf|NLvFD%a{ z`?*~l Yae<%3feFOBWDjzsLvj z{V{dUR|e$xhT~{~PsQt!&)Dl1CEuMv-zz|g!DG6fFH4nP8?(>Lu=XhYl?Al%K!~<} zC!q)F=uXjCI$ nEV98?QoN5{+KF!I|+iY zGNfkjS8x6fYL)Gbxe1#tU0&K%E* ^Cd*p z3$r`~2xW4nT^;fp1+G!ruLu4KjwSNfvnUL{qwE$_czGk23`L4p &8=sheI6GD#e_w=9P$;{4jTtK^a4c28&z6AzmKugX;zeo7j5{q zfUz)HGD%qcx#qs!WQ>Q2`u+mERd&|0^Kj3w+)7mWR{YgMmBtURsXS%$Qd8qgr?quc z58oT}`opA4GIw0cNO^Iz?VQK;l*@-`0w!%S(zck3;vUH2wQ`s=%V4#e=&idGOkSeB zs S7w!6Od zMW9#kRLLQJn}i3UT(&^PQfyU>q;w zZ=a&Gv_-hL*I3*V6LT0Qs`Qny+l|EX3O4v2xmzxl{vbPCaIZd8MM~dR-_js8_i0M@ zz`*Im7v+s(wxPeXzY1}%|Cx@&u$SSpwlPeIdp8khBril|cHGqg %1li$yckV1?uZZ73YD(k1sHMJ8`E=G(RCBIlbD3 zJ?H*?z~#OEY+?lh-rPG6I-?tD_AONzEO9 7;ER_}y zQdZQbbt_OV?dW%xo z-nLmR`>YptSBfnh4TfM7fe zVcG_*u&cD2-t+-kZ1d`o(#c|qhh_`s_;xtMI4o69aI{i{6rpbAUSWw%R8c2V+|+8U z>H~M`-9`7|JouHaSB3lcd_h9_yuy{;1tGiFnzxI{`zyfmBJiscan;VWPXE+!uAl-P zCzSFJ?O|1Jo6Z{`mp-mDR27(b@aN2V(CiPo@^SwI*EQ3 8oaStn%~n8vhjE%rsbCfmt+O$Y-`S!%A3fx} zbo{mFJUxzGH2m=Np`YkHId?@9O3|RFb#vQ-p7aYS{zNOy@vGYd&8EqEI!lq`j%fW5 zgxQJe16^nr3{-n;?Ggh7YcMi*eL$l1Lr5^_B)22)CFx`%{goRlPwflM;S@_PQwRQb z%TXX !&e`SqwLN2ZLpoSt`lr*BL9DScS>| zg3kW#r9Yqh6=EFx-mdU8K}8ShO>j3A{J>?sB4tidZeZ{UnNZ>TC5h|rMM234U(p&Q znH-5rtD%GgJDHoJP?#dEEbCso)wS?C`IZ= LIBkT-LvEvDU^75$EbEbc?upgpl zT&hKJ{qZ -#}))c2S@cnXK>#u?;IH;pQLLJ*v!U-n}@cU1)Z1l8uFH z_m&s3Uu)zQiAqFt9uGXU8aybvROhPM^l@}pri*a^DXeE3d%?N2XT}A)x5y18CN&7% z-rF{*Pv e0s=N}Y`oij|10{M21TKJVyySS=Ivt11sO zeE*;WN>x#8ud*A44MR!xcBp)R7u$2R3;LTb{bCa=keP#vcX-BqRqS6Ot}9rb&(|WP z9d-tcHqoi{H>lSU(O$McX%vHR<`=pxi`pX}FJrzMu?^7!1RE^owE!6=muVGA_@p~; zXcixU#VSH;KDTFPNst$BV%C&!JE>&UAEn5>`S^GDn@?B7*q)WpU#(l+TQl9JAs_VD zbT7QIC3znplq@Pg nYcs2kKNN`YBf*o7p^kBL`y$u0XS<{uWj=eoJq~fBZK)nn-)Xb7R9t= zEjs9zhNgW_eH{u;Q-z-h)MOk5!Nu&$Jfdrtd%KwzQyU2g%*QY!23mLth$nyla#jsv zUyXZ+R*i>TP^}Sh8t3?R7YcLtA)fg_;9#>oh3A`Fat3wLW(^NDyIoPq=*+?lQB)55 z{kQuIY)cu5KNR@w^Ilc(EKcs#`4&W|< zX^7SNXxx6GJS%_t8Q2KNckJSa5^v!d7Y=TW!Ue`#wv=oE&$>msg<6lqf^HmUx;4v^ z)MQyze<{ai!lRE0&H1>smY2a6is=dTdLk>BLzYx-uUXMQ`+HZ}V{*?UE1CO(kr$!m zLyaUH*>C++hek=(Y-L_v`^0I1bRe_{(vi|zG7|@)sIQaMmhZeM`$>HhIwU^99}qat zKMGW&BDz?{WZ2Dk+{gzrN?yrcEZ48a^P8)+ZR+&|xI+rP8bq|1atvrqw?}V&&h4NZ zW9XC;j0i{cA?GA_-5_;+cuv(D6rok-%B khjYHm2MR4I$uFrfcZ}Upb2@X z@r|Hip~AbFY%llP1I@e#uRCt^D5N(UcI<>3HFF0zN_6W@`QzWi5VuTN*S9@mf|w?S z_JD`lA-!Y mNW$0-ErzvY2<8n2kb&Sc9pNCb!A2VT09DPSS7i_q%?K>p
I)bWm!{R&PjxH?LFl1^m)Z8)AQB_s~$bA5J7HCcAF?GEEKluXQ zbAyPWU?QN&uQMO0+Vv8X{JNN+JhplqlTv+*5m6j#Ge)>c8l65}y-F#VugMd;h%A=t zEBzf@M5lN~V3C7U{`0j2AownF7ZP@5lPu%OJ#q@iGOg<^5d>olEb#3v$C|_MV6a0w zVQ@b$`QvS)HF{HQc&q|qvtqDni<+S@ #-or2{f+ zW(?#PIYHnq|1g_iM*kGoKwqj{V#2|!!*i<$=bSc`4cQPP*z4*6^9mPXCwvCJB($C7 zh`4dBVA%rq+uI^q0NCz8x;!=JE6$;3l(|z}#p1})p{t8A@=`_@8q%5dvL%@`$ECpB z%aR6-H_tvn{IwOhf6;js-Bx58R@ym-4|-@MY~s&2J9gf^vnU`M!rb;=Z1v7kY$!2u z;8q>N>uccKqb8tOZK93GLF;h2Ji6&ahyP;2YwxOzH%SF3Vp*N8pKBEXxv=7=!at&* z7@%<0ID2jf4Q7o@VcT&n26N_&H!Ech!=cLG{`!F_`~?wo`OZf~7x~h1Cx=t{((@<* zS>-xx=nN;E{*cO?YU1|cTd%^-xPI((u|@|X2 4V3 zwM?;KXzd9LZGx#;1&n^YjC50ey>%?f#yTklKJ7bFi5m65f zj4q`Y3=6J@s96HF^!-un 616X-`&Pk4W1G3Y=1ula1VZ>l$bM2t>twGq~C@ z!PF&vz=VyvSE5{$jn@6KDC4KiRITcP=>_tH`GK(JM` y(3vB7hHyln#~5bZTUVy{H9ROPF1S4 z*6OnA;s9`Ywq42H(Nqo?XOh06)3B=@s7( Wz+A zCGo#@K9(gyPcWu=uV(Rk$6Gjka6_q}+{`?b%vPZzXzen)yH{8ftvJ(i{sUJ=9Bu1k zcZFOy-VnTvIh3E_EJ)P;kNjJv4I>Q>ONGqZ;KK+XnBa$?=(jU6mRC-yo)+m~-@-fA z3+4-6(9n*Jg*~kQly9j8Pqrxr>t!ytq`!FuN&KueNf%VC>(ORM`&s?|DrxC@Z*>jV zN&Ilo;c@|EQ0~anD2aQ{4s^V$y^{Z>YryS7kby3lB}ujVl?;X2hz#}vMWd7g^dog7 z1=%!4V~)|b#2>?sg$ka %&t (tj800>8) zLG|)xIEmuC zU=mTDguUB82u?W2{}`^9NIw6TW&-worKub~Kl>G0=b_b>aOROZ=SDW=Spmwjt;RrV zQn+rDA$~EXul{{ra2!rL9p&D?c3r5-*lsGNy|PmVn-5TW)H^AH``Pdb2iSgJf0f6a z?OH*EO$JHBw@YQ^UXZEEnaP#yBsgDAicX0#4kk&4-${k3B$qB=MXT<88KuKpi>Ry0 zy#l+zCOH43-u)p@8-mH}T|MDDe7GP0|6jj7AFuc|3k;GjB44(U2epfgT>_u$JI`)h zvWYCS;CV|Y93Aa$bGWt1>%{y)c|b!Sq5p0?N&be8xH^Lo&JpS`+iW;&%jd}DrCKwe zDymQ9efSG7ltj~J!xT*>Z2Su@(=YH`UvG9kiE %N6ntd%nm zRl51b;hZ;O1|KOP>;rDvqwCEspwtkm8xc(wu|&h5Z)>Gz8*f;exK*&?6B3 nr*-}H7+uQonq8BfW}HnuT&kb_}~)85hH9VMTA&F~3kWBfX2 ze?ZNP=aJ9#Bqcj#(x?k2nE1j#B*XEHCOT>Iw#zLtQn)m^)|we@Ee?N-!YxcvNzSC3 zj1&Hl#bv!9{`BZ6-hM8&`?99U5KOt|`J}mJ&(Elx7#S>nF@}=#&E (cM>Rc<;BGgJONJGdAWa{DDvjgod_SFLs7f64q%# @qTC8-MFI=VG{UI@R zK*VI6PTT>WzgA2?{(98=+vEd<^mq}=W8c1}w`tYTGj4?>=AbcYjJP;o+a+dT5~DlL z-ByuQ{CjU=XU`23@$W3XDUazA5=SObKZ-LnTl?~3zc1WFzik1Ysqe+Kq`$KYEu*)| z!(P9o(y*iqC5Lc 5&1gXv>+$jcR1%2P* zn_=3^gz(3H#$Ir8jUWcU;* e{>CpEWW*!RcpF zID_^(cgt$)BUeEP{txB^hIn@7B$Om?7v|dP+MD}Z8Fm{fw)v8(?C}JOGR5F!%Y#v0 z=tpqiy2(bOE}qMECS$81C^Zp{>9FTHb;o8Bggg8J^kJEBZ;#t{*@kvS8ZUxxuMFI( z7)(FBh%H?!z16db<=M=nbroXjP;XV_Dyi6`?x9e}<=so^(Og#V>}$gTZUW2?@XX5l zJQ&CM06ZVzs#K%B8n)dhjkSq&b~H7@&Wd^K1X;ONW - z>{hRB9(uT-3nC1?o(Ta$I>g>IorIt|6|KjEChxcJ%tvGWlqlutuk+LSI#{R(cfQ{W zKS^iFX94BNzz4Mj5pTA7_A$_q>s}G_roab@0Iy%~-+{Ln6wg{lxrZ=hpQ95zn4yKW z-vgv>atQ)=rSUX!eg;weI_Ac=hl>RP0ai-v>)aR{HOu^tGVLtGYDh(Mk DD*J zX @AG}tKf3w#x}s)7V>+htws^T%pucUJu~%;9wfcDFE(WuRAk1f>JxJxF!QMPf z(#>hlTY}Q)sMN|%6hks!^p#QS#q`Uk7d&0wDbT~&c)PagoJAChVy_gVzLwixQS2k8 z3%UnK3waP8KD%AF_ v*A3dHk51hcDx>r NLPd*!Iu(!{_LbJL?vU*b?)%lPI>Ie9tj1oJhU&E!+K0zSyx4D*ahQEdvjFSI6R9 z@SH-3hBoQs5p>}JyffOCkKTVyl@t5%ps7ST#<=*#V~KLz2wtfR#8c6a%FC!tMgqHi zS=K(($d-I5_`nE?|9}x8$Q2s&-b}OFt-%Qdc >VN( zsZ``h$gG&8XKWE?2a6I{=#2=}mTaBKd~B~$q{qWv?Yl11ou9xbBg}l?s^Q*-*=Bhm z5wh{WFwVPYvn&mzi3O@<+{AI5cJiuaTD%lde17Z3e`(F<+>3ArZ|Q&iAzWv-7Jz>w z6WB05@Ax#t=$ut7Yc@<-t|XsK>sNo{@4qn}{i0+ZT|NjJLq$C&1art77gSd9_7^nL zk51=h$E8kJtC|;OTIiI&%qo|@?aj1VbRo@d5w83oi+0N}tX7d!R+i<{j rX}ZU?&Dwi@?j8jE6YUwQWd2R38adtVMs9N_w_y*{5~z{iBAId^R{&vFoz zd*P9nF}?3b8&eHGXnZIJXNjZxatq#AKP(8094W+=J@Lm}`Yfskn2pH 0o@>~C!$?)6w28EJhVa27G=0d+t4PZ#$Tk+26I29;8$>q@pC1+`}&%=3r( zqASjZ5MzF61eb5ViXlDi0x6DkhuY=g0!++b-1TzEG#}P8ZPgTdYL@Zi!uzy+PF*R9 zJ-6cx$@?moHzH35zh#>n8NVbk>nCii&pIaV59;y)PmKftUxOhE8d$~xeLyMRnlGDE zDd&MTZp-?M0Uhd2@UwnZ#*Uyb?=$OhY=T`e2;gg8CV&`|SOjT=eh{av?2p<#zHDNI zBgqpIA)9X4ndc6i5a;w9V>jG#OI^)*7o$K6KU?!9lWs%wsy~iWn+Gqw4r`NuYo6eP zyZ+WF rhr6p3%nWx$jCucG>Iy6lb2J0rh_&Ou&M+|X%6gCNA- zlvp_Tjzb+=fe0IseQa)0aqC)sf41kYnt5g#F%gKl^4_!}zq ap%D zO@m(ctqq}g+8+ r2v zepezQ5#V{v`MxHgF)PEJdf`2umXLMywf*x?V%)fN>1^4sL7V~4qj)&zvEshV5I(y2 zGT6;&f8lxIvD2j_6*y>dpF(BaSI>EV-lYctIFbQp|ImEU3foZ6B1f5p7TCLoGZ=Nr zJHVtVEmQKx)ar57Vx&q6b9o|B3gJg-*?}jzYaW&Bz+UA}G9XG)_n@l6Pf13s!9*sC z3_j<~)ee_qf7P=p&m#5wGgPGD)T&a>%uA%2>NQ+LKp+yD #wmp9`T4EM6ntm}cVP z;hD@-$;RDK5R2<^;DnZ8Ntke5JhSF^iPwkLh;4rhqJ0=la_K&uT6jc9f5TR!se8eP zr4xvOEdL3uM1CTQ=J2A6r#u&aV{U+;h$=v(hF%7;#)5S_I_FY@MJ-k6WG01=qN+%???M*UF*-+kAz~vz1;}B1cOUe7)iHgVrI)l^ySG! z?}CpNal*bC3@coQSFtH>m9ZvB1Z{*?hZ%c-wQbU{uKFjCm~(ztLgYv#;BEP3l8SH* zm8wo%uUy71pcq{(Az+?EUX{Zi*TSX@LAw+DO#;J5Tfi}2RIaxquc sj zd7++8m0$xUXlLs5VHc3I$q_LIpBjply99;ih4%+e*E#o|ht&wc_3;a(4I0&WeaVcF z6{za=%_&8~wAv|sMrXeW#EQmRk%k7^&}8ng0KI6O8Lv3jlx(l7F8;mzyTpl3nL6*P z+rjDf9yR!5Z1}nJ)S~hwP%uXMO75J2S *mr+osuK@c|Qqh_o_!V)9@-)Lhv# zb^LNC(Vh#MCauou%X~Wqy*=>MYFSm*x_IcX*G_+8b%c)<(9bk7QSLwE(sHgv|HBVCG^!P$(*p)Fxfqtjg&-K;9 %$h z3+4-KbT`EU*)@9x+TB|x@35wp>nibvYl=B2vaNN=!a{lLPd2+BW`6t&sxwmja)Jhp z5w?YHdJv)cDr1h~gBk&aND#E7qKWU?O9dhd<^F*vmbz =i~FoC1f<|z{&tI%-pDRIlwzo^JCl3Hde!U@mJ^_74-?#1!+Aaiop-*)d4 z`1yO~T33;Hge$2pO&BDiu+2lk@y>|ry}N6>_nOxee6I1=fHX=B#CRVzV?8HpU;w*o z+VV}xflCq;i}puTp{k5)mt!K#MU-@IR7hGTQv{rj1(OM$L{YNcoW@x?*y31WN5oCe zSDUiM>P8hEj+Ub*L;#X0oZx2TiRlRLLB?Cf)SjQq{Ir)hlBu* tr*;P&*EtTf{v9xdY%Dt>0 z8K0L}!^alJ#iay?v0^W^3LOH-G3nZ}Ts+4wnBFvey*(k%m(%QWD3&X%fMRUFO}0xO z8cP>_JKVnq_Z^0Awz>>(#X@T*y>?jS8XEb$P8pZmy)&we2lNkpwr%hACwYKOr+4Lr z3m+My6iW!#XJb5^UvvSAtCFUWcK;RPx58pFgtNVhV4JwnS6^)NEN5-MUf# ;P6@($KL9)~DzOOpkWH_Gh;l8sHMJ=eI+e07j5-DKzMB>6j*d{0oOpxtz+ z`$ntJ#L%&TinE${!O z&@IZh0gPE%duo<{*z*sije>uasme$Fnsi${nJx(LidqC1AGO~as>go7kZ0^rVMdzi zROz`l?m#OYxC29X*F!$gUZIOsVyZczGX^hRk<^yB0z>Blt4DVQQYOKgw69JGN=0EX z#C_B!;Gpbl#PX`i%X1jyLY1{(wPIx;yu1NOos9QLE(hY71tXFDJxl&%7%GuO3<&Xq z*_hI8d(*w2?HZD|^}MPR zlGHxKoUe64^=I~({|%D5{beKv2Z;Lbbo3v}%}RnJ7+s zoIi}-!;nxnlz=d@(itQ7^d#zc>lLZbs|SgTT-w#&QQqKr7>5%s1vJ4(q#kseB>8$) zEUv1fpI#JCCcb{C4qkuzmq|PYcm_h+EC2rt%aFv$lS8|FOSE4!Zl;@sP+aokco1Dv z2Au8y43%nLZ%G0S(5naKAyo?VU*^4Bs7GYbfLnFp8iMMa3_;u 5#JNv1C?K+nWF5@o&w{+oXC2qB_;e7NanY`2s4&PiFc2v(k1M4s%gIZ z8|-!CHYSNrDB;A%`kecQr?tLatC*_F??O?p#K~9EnhnbD`Sh%#!wGH;;?D?}J@~zn zIeczU$o}OBb6&OmrTYW0X6E0i{Q^>f6}JXb-gy49n`4z}=i6J@_V8lyZY1e!=|hU( z3lCM{m7}HT0ie`-)P%vl#QoI$EImz2Auc!%aTwq3#<)KkDK(HCN$%&;wfEl45nn8i z5w9eL>SZ;ct$lHe`pbjlb}=&Jd;0e@KG!_}D~gpoEQzH 0$j-kf{IRGt)?E zq1}Ip@;`k XZ=t6`)3IM^MfDZ*ku4$TrwM=V*3xY;s5zVx5#e}CLrvGis?V3!T%<| z{y{_j{|o#-$MP>Jw_S#i2rOh1`#*izBb={HNI+@oJ=Dd9t|a8F^){kAzSvRVzhCvo zy={>FjAvF(xrOkbe-%1>9mxvO98hO1Q&?;54rWJun(@}>r5O3)ia?VGcW5+~40e~r zk7>6tr2AVah}Yqe16bRSgw+C|qex$GDP0l%bT40zej~0{w!-D0|HH7lB@s$yZL-9R zxf8sBwg`2ePo;&t0a61XIf(Jf#{AI|JbX0UImg(TkbhVq0M*|&i%nK#@rvJms#<4B zL#pg)ighc>4ryS}haJ`NaYb2x453PJmuVIqglBJ1-?uD|D?}jMN6f8|ks-0S(cpXy zLuv_IURgKXsCGyrlSQzy$Io_&pcx3$$tZq}(9!dM*z#v8AFXF!CyOh&i^SIN znSa0V>u&B(zwwuj|9h}dr+?Ig=;tRx$rp>I(eq!Zq!Yh$g;N6a6D9Qf9y ^3${?-ecJ(V2xa`rvgJZE*Oo<)JB6ZA$EJhb_iZ%Sh7ea_FUctu)-*0R(0N(Z%Ap zz*_Rf_{0bE^+cHA6s6q#K5{azkx%JlL5_#wyf}Yc%@UcBvZKAppRR!XBSO>z{qw3v zBc|^^%Zylk|4-IQNSa!{%G^sbiGuKVbazSmPQ>TfO|?k7e+-l^rAm}lLA&aM`i`;^ zGW$5^GXc?5J{FvhaMrUE3D<|CNNIvBgnF_mjIU6$NBk2e{}bwX(zW!9!num)(M*;< zUczvHFKU2o^jbUBw{6gJGvQ%R*O9g0*w>bZTCH&ZO<&47D zEva7|AvJ)+_#FO{jWkFDPF?%yK+j+9_)oX#GbfvwDerr+J4I0kdOExM1fkNi!Tsn9 zBb`FFzb=!;@d`#xis2~p$J0#-CcKJ&K@pN6KT4C><=d9#X#wh(En@niGGVrC(REW- zzDO~@Qj(%e|Kd@-={E0|faM%w?k*+@#r%)5CmX$#{F7~n;(NcwW0Zx?FMO{Z#OPq1 zJ%crlqo7z02}63#cPx3bCf>FJ)it<0UdiFXJI~P3b5iHol>oSaR-Pb#->n>co8A$& zA6GKFbtGTW9kjfRNk3MH8ecXtxPO Ii}mB;+mdY4=?kKO~*aOj;@cZ8LwfKl-U6QWhLD=q3%joLA|q zE1h_qbS#Y;SA|KTpkG`5>S!<)8n5fU-a_5kBNJ?A#z>ZgmWWwmQPFgMNO(AkCGFvw ziu~qa5@q!#P}eF0r|KK2WYM;e`&fdH$@&e6gW@2N%jq)%E4tT=r2vI%CTr+H@^Q6> zsapz3n?sjiX2qPH>ZRJW2N}rA6O2{9ex4H}NJ9N%1dbdr5u~(3+y1iRbbExkSF+VJ z)rj%K^3=PCN+7_0dGWqo$tX?7``M^t%yEd>bg$) PBKZEPKwwKI4iBt=TmL2v{~<$ RnJWH3@?HA0*{ks3`%h(jS;an!Nw> zJAF2p2luSd4E}OVprOe8$J?_B(C&srHF&g*QtYKHHjV7ZQ9+%w8(=4_pQRr!oRk03 zq+E|DtjcWISeBxq1n3{ctlhwPxj-j^-bQMan{;_0$6>yS>jqy==-R80;X^g}hz?#k z2NUsRR`d5hRJxAFR^X3Gu= P) O|QPq9`eROl#8`Fjr+!!N9#QzWymL3UNl9gyNf(aA7b6|rv8i*SU z+Q) L(f3cc2TvEu zK@?S;8)g26choAy^3nO>P;uLK?&O*KTAAbV0<^(@Cl=gZv35L+cUORcD$MTbRv(PX z%lB$ZGc=-b@WCDO@pm!dIvmAD{oR`A(v85gI#5m-S<#HPV5ih5NCN1Y@y#=}qFqlC z^3 - %m_xwqxKRn;m4n5_aTOK9=i>-<9NWxvg8W9SbC-6kT
;VXXN&G12Smw79 zISIZLAf;TcDs>~*veOg1nP+lFt)9OjL=7m54vSeu{jXO~Un30uPn7Y(8cBao5nv|V zK(wvTzfNzc`brG-49*S|0^Km81dHlk#B>OVi76z%W{o8{^STMpba_e66gp&LWYUTa z*A6J6JjU$UH`dXAorwe^6!6Li B(i;PR_Ba_;$LIaup1VSBr3*;ky4e4K;IJ$yx2468@!h%e%Li zxtS_pM#yQqI9q9@aB>gSJGxFc!|IU-tN3G0zv4zzttYha#<{?E?|P(AP}MUzh&gS( z1Wr5)@Lz5f*BiPE(rlg2I9>` `QY_=>Kg54ZN?7Vbbi>8lcseFg^_jP9Sfz_Gw8OV$QhKzq*DHK(%}fP6962m58n zlgwW=(Q9NfIo~oyF6EP7FGCDS{9#8bQ3M-JDeFI=SuyvA{j+TqOAjokB+t+55v)%E z+yrSWrJMs%JTygqvktp`7N &oynq5(PUwjWPC}{nZDf z`57q(J7se3z}#mLPaTk2MN`yf0aZKk&NhyxoG(wV@G{Z1d7CN1xEK(#WMgoye*Mpl z{~udf6b@_kz~6OYhBkTiCv+hQa0&fyc3hnzX!yo ?-#o z{LX6ODwDyFejc?6VA+gTp+x=rpBojMn{12|n%v&1O;|BOJr8wI-jBAew?3X?v8#sx z1)J=?k4tIWZcL+`QaI1Mz_H>DNHtmpWdmLIKXQegZbwLxtM#ddZ)}1>iKdzb;^-CR z)4PWAl exL_dybkWZ~fNa& }3(9Xjhy1{8 s>dVwPo_fpUYDNm7pd k$QHgh29Oe>yjq0<@HNe|jr+ 4>j}lSEmKjXdII|=* z$@^%ZcVya0wIOw? 1zi=cOv^3~9C63Cbxz-7w)yjn5p4 zhaY9Ph(dVYf$N^VZA99R4hRGB(6P4rKdCzjK3G|QQ_m@#TV*MGRpG6EMQlA+BlV*h z4x(ufv^h7c&k$$9M3?_nUTDweT3$M}o0P09bLbZG0b|fxN3KNGHrA*I;9~|ZixsFQ zlC3v;C&TQs{~eF%*|FyF8oqP+Hngau&LhaM^1c;R;*PXPqwJ;EOE>8qxpA6O(Jr*r zef1Dg*+L@V^)&6BTlhU5KIFomjWC2{KtMB8vrRn$4MlCF8AgJQ|7p^MAHQ?x#tZdg ze_^2^PHRK7Fk`u}a<4ngg&hy I~%pJ{9pTKPlVAR)Vq7b04~*(f3X+ZxO4z}A^H3^xaNRYdi(vW%VCdZNW&nj zw$VCVWlgc
0#?_;{OdWuZk%)83Z@-_slSZE RR{4HU&=rA`I}%*13tE} >b`<5ZS2yE`o$l_T6!07uMRZHc>bV7vJe`b2+l&{ zMv7MTHP3VPd2D5=hS#DGeknqHJxTSvp6s@SOfO>gUeM+NnQ#fPVnOWe?@}QP=mGb4 zcR>2l%%8ru+|s2tl!;cyK$+ag*|R=;c+Z<8nNXud)l)R~p{C}z(Vf$?U5Jux9SP<) zje%5-r~snvjpcBs)-HN$*KJ(%H=wcQpEF?O>|es!@S}tp7f&+t{Bz2bE+QyO7%-e) z@~Iupd-o_XPXOjAaAOxFuU-9VWD+7p5b@+}G *0yMIe6q90MkR~ZO;~;T6?X7=TsBBQwJR|IhJ~;d6usW*oDpM>idF&6 zIOo0;L-Ytuu~S1gc^W%^+kJ2O@`1dv%CDK5%CDOuFuoJ77@Ial3nf6@FQK_#;F(H; zR GtYq&iOMboyJ@hz0W1;pokTM0Tw1Ku9(H> zM07ehujmK+QC 1Vm%CMZ#iEncDXy{a1?i{wKh#f88FCkmD z;%?P$c5ILepg5eQbKLZ$U~GBILhU=vjjt;FOR#GqCIFS679na-g;W{is_j2>BY)%$ zUl^h4v%&fo;*8+Sms)pyK$cZ(ijru0PTUroJ0Yz8Duxg3g7CVA 9WsGcRXi{AYex)!< zkt7gW2shQ-dvUeoqF-E0#KHGk3cA^3!X0>ppDW5al&-Vhb+@U$P}kebmc#Z-Q%v3i zXEJv49oN0vLNK|zK3gm2W{77IhPEx!OX9J%8C1|V FY?u>{Z zXMAn5jR%Tl;}eY=TON(qvxM>S!rS~Ex|m0^;{dzDCSL%M7-ggvf~W^%TNZdm<$qlJ zFzIT|V}D}WsIon<(0}s&aNkcI_Yx4tg^it1uCm6Oie YF;7}(pmnh Quvb@Gs%S-3v=3G z<++@^5c!+)qOC1J+Nxa1-^3&9e>yKfPh!7j+N=?0i My?!Jgstl!1A?hkVjdPnGX^K&nO;#;5=*YaoRgoY2Fljr_D;=F<{O|SE3PYjl*z6 z_NPJcLR1fxaPe7#TsF3u7S|8=A03cfv=FlA=lNbcYQ#qg>R9|%QHOS=v)m6nml;1b zJ_@db-}M6kpRd0{fxbSxo~qOLwevo%vTy@dZ48Ylp(K|%Gy(0*nURv(yX=iYCsM3{ zp~^!e`dTn`oGcyIT4#;C&l3II##h&S`;+iyIvYC;7TiV2Opd@>zc^rZSCzdq>LgR; zybo@NOs<~Z$?Vj~84U$oyhif4ZM_&lMsjsrx%_xqZ{w3IMYGbl#8a(l>Z7GawZkk* ze*-jduJA32x3dP*RQh(^;-aB$!^XnyUj>^fm}IlquGFdNcG3?@c7%Uyd0)BoqZwgP zU2kTx*z=qzlwA_wR3v@(a8$SE0^$hbZB-Fq MUz){qV%eAgPV9V0Y5JU2&+vA2a--*XF#HOxc7SV_oy%si9O)BrBMBG#=x4wPM;-63 W5)xiHtjvOl7~@#oppz`?d_D^$!^!k<*>Nmsrpj(dQm~IH?pTYi7Yq)4Sz5_ zN{>jH#a6eV3um^v>5Yys2nT;CW0EUxoGgl>N(zl2CMvjk9qX9549$m)0Ijq3fRcb) zJrA9lv2gW0?L+pS0OoemISd28&Em0irilTx7_S{p1%vT_x mE4wJeGMM4$$ O`6#1;F!uvhbl}*5XeD*$Bs?>B@7YyErWE^RO08TK|CKLd z2xK%a_-Zcm=jV3)`!bc7@hR(13C@|Q+UAO#Zdj)vO6_XoJ2vOw!=re*_q@q$l%CSP z@P}3>mA1f71jwORsmWaKzF*Gwej3o>eiVS@g^?Mg9WtbmlIb1R<^z023#{>$87ASp zn(2jEyNad<8Q=3L-zV%-SoKzD_a--C)M*TF3Wo4sR3Y?7)O4H&2|?Ff-0Ob?AzvKY z)M#Z&uW7oC71H?&Y*k)K9yxvyFrF46aG88bt0GH=2Gsb_pQtd${Lf5$(Tnn301wyf zMT2Fxt}Jo4AeGt37cJ++vO@jVOrZDq MZq)L z(I3yDvhQzPa^nnp_*DgrB68o0%MKj=+YuPpOP_^-13c&=uJmZW1!^Tl2ZUOl^_TIv z(iK&n1HCh1c<2`@a;mL81+;I=yY?^*te* AO-9W? z+6JaJh6gHugGF}7Nq36FUL?|} uMUTN$cP5pgA)c-sdr_uKXk?p;o7F2D_W z-Kzkk0KQlluF(y3vjchDUg|VP%mGr_7o|!C;ZQTRICD%Eoow>o#ikaPrQCRC1A*;M z1oOZM!GqjWp9fO0%O3gmoqKhcqzoN0IRL;i2)}g0aBZ+&A+^Zu@`~8%F-!(9p%<3{ zQZc+#M-MwMFNoRtKjNs#8t%W#I;%av!7N^W%heSC1C-d&4zr0smB46}y#ZS1*j@@E z$YA%8|9y-{Au1njyXLe7ht-uGGL@a`U%~-t@;aRFut(^>Hz?%PFKC&U@bMX<6I`GI zRt BMnQGm&^b_S!!=BIA8rxiIuxEiGi(eU{tF}cB`w?w3!~K zIe^=bQj&FoeEptwR4gn*IHiYF$d335j>+(>CrMXr>Szz>&a?BipT@n_&zhJ!9lCIl zA|l+VgCF+~rjkti!Dxb0y+;G+UPPBZmw=2Dn8cRn*c#?U@I^leUR8>8+we-zonBHI zXuT79V-NxQ7kgs+p7JdcjXbcWu=Z1qeBYs1{K<#b)u(p;RPR0%`}oaw3}y|s4^3vv zwXhe{MSBl|R^#K`ep?$Z8Dc5x&@wKWz4dlA^BI_w|Kfa-6U$*+jZoJ*3ZGhGhv56l zYtnIi8pa1_0Z!Y~8WV+=^%XkJV8R_S{mef$ugj2Z?vP0UKY4QZm9YC=kig6F?cWGZ z%jAkSPO|Oi9%{)IPq^FuB;45<{K^?!p7L#c2LG;oCphC% O`ufeB)j~<9a_5Lj-_^W#SuOd~V&?6iYKTsn5GAHSa zl3oJT`Y(|{Ywy^SfeT*Ma`|Av^sBIEniSgaTF0xhwnSg4@*9nkew1K!L+^=;2F$Bi z38?v3ocm;Yfv6}^3iDE`UpvV-AEzqx^4Q} `?;py;AFL`sO#+-TNZLT{7Gvy lvl2c9crM%X#ySL|TJUJ|JrkX+3HWKPB*~V%(J~8c}TYq^! zUAb|4N%qmvT~=nQZNCPSzBR~TVru^MxRRCY=gx9Q9dpY;M?y=CgYi3tjKGeD^jZ~l z*0bwED9(*rqHa>XxruxAL|VBp8=QYqb;ja$qkFH;R_+0hBhzJ-vZ6nqi7(gODc1A8 zqnhjcNdmZNH#X(=+~p}G{erzJGp@xe1LZuqZ}2RiX{6@ AZz z45#r%&3%JBqIZ#BheH1O5yC$Yjf{5oa*hOc>Zch|a!F)^oP}8*yoJtLj%0q8I^ #2xIr=F&>D5$@k%L& z Uk%J~zco(jn`#O1Z~=g_ zlXA1A^Xy|$_RONEe3!dsqvI-Y(z6lXJ-gxkI4j=wI_BvTIyapMluAq$Og*F?m#xZ^ zX{aj)_vwLpaZHPf^)Csn5cs_B+$i$$P;H!es^hBN!v$9z-rIuR*PR=trw-cHR%~zE ziC`NXgs0=P4qGx2{o)yr3`%E|sk|}?Jhf`EQ_ecit*35xjjxOL8!bl#8=>Q~hmDiu zo-tqgp*)Sw*7?PeNtwc-eSMpcR+}zTOm@m!i}2Amlf5p|Mh|aw&cf9OrEI;TEf#q@ zFy`E @xxt_o2*te38pAS*U8&saxT}6L$g2&y(P_Vs4xvR&LU(1bYyi`Nl0JZ5{r~+wP}U zl}p#Qa*Eqz3uai#+u^$JGx6VLL0>ufi>$e=m!m9N`}3#wxj}dF7VcgdkqJ;73xZwF zsDvFEy+PSQFPYhQrc1^iJRIzM>cmqeQL8K%`+7o1=Ju*WvTp)?{@u7xHfuiT2l6fE zW~ZFqYA10)+LqJuGkKepQk0u#$h-sF;r`k#U0qywqhk?m-{>+q;&h(Gh{!;LALeT^ z=fRqf!F%?y$S3VeI$CGAsF>Ad(H!P>U1@TI(+TMbOL_xMGN<=_wwoC;i%Lg)3^?b# z?WD`2v8dbOX4cm;J9RW$O$?(6>tLMKaU7R%e~0baYO&cpbm$$r1)_J(btP z-}EuqLg*KG-`{Q*YBeVxok=2k-Q={!7pn}UG+*)YrJ!9kcDZrS&mcEtUAKEvZ^<;3 z4aNR8&O@3UlbX>Y3l)aGZ6>}g7$Le9nFDbCjl%v^DMd&^MclXTK)YV%9P2bIFEU3# zPO99x%<-Rc6_#X?XTx5+sb0x468R85$Z1c6!?}6%@(>BPj!V_>_0S|4^Qy;%LF3K# zW3J)(TgtX5&V&1?a $0BbvY*2} zk6E&yZ*t!X1X)zeViz++v!-@f9QsVUdP~`T5!1M-j-K%PIL2XZ8g8BGIXI)kb~kw< zm@=h*^F8pUf0D&(mt9~iN=WB?DfH70>K 4qj4l88`l?>JV=6yoBmn}_$f-yggyKIu@3pcJ zRC4xvl9GE$+jox7v8v-