From ed59d17c0599163c89e9b8afdb3a48940618437b Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Fri, 25 Aug 2023 13:28:28 +0300 Subject: [PATCH 1/7] Refactor the processing logic out of parseGeneratedSpecs() for reuse We'll need this on other paths than specpartsdir in the next commits. No functional changes. --- build/parseSpec.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/build/parseSpec.c b/build/parseSpec.c index d61c477439..5148af54ec 100644 --- a/build/parseSpec.c +++ b/build/parseSpec.c @@ -1184,17 +1184,15 @@ rpmSpec rpmSpecParse(const char *specFile, rpmSpecFlags flags, return spec; } -rpmRC parseGeneratedSpecs(rpmSpec spec) +static rpmRC parseSpecParts(rpmSpec spec, const char *pattern) { ARGV_t argv = NULL; int argc = 0; - int i; rpmRC rc = RPMRC_OK; - char * specPattern = rpmGenPath("%{specpartsdir}", NULL, "*.specpart"); /* rpmGlob returns files sorted */ - if (rpmGlob(specPattern, &argc, &argv) == 0) { - for (i = 0; i < argc; i++) { + if (rpmGlob(pattern, &argc, &argv) == 0) { + for (int i = 0; i < argc; i++) { rpmlog(RPMLOG_NOTICE, "Reading %s\n", argv[i]); pushOFI(spec, argv[i]); snprintf(spec->fileStack->readBuf, spec->fileStack->readBufLen, @@ -1207,6 +1205,13 @@ rpmRC parseGeneratedSpecs(rpmSpec spec) } argvFree(argv); } + return rc; +} + +rpmRC parseGeneratedSpecs(rpmSpec spec) +{ + char * specPattern = rpmGenPath("%{specpartsdir}", NULL, "*.specpart"); + rpmRC rc = parseSpecParts(spec, specPattern); free(specPattern); if (!rc) { rc = finalizeSpec(spec); From 8ab9805b2275bfd0e1481b416b00d0fd35f846d6 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Thu, 17 Aug 2023 11:39:46 +0300 Subject: [PATCH 2/7] Implement autobuild "template" system (prototype) Remove endless boilerplate to perform the same steps in each package by just declaring which kind of buildsystem the package uses using the new Autobuild: spec tag. Autobuild macros are just regular parametric macros which can be invoked manually from specs too, which should help with reuse and handling complicated cases. As such , this will only work for simple and/or "perfect" upstream projects of course. In reality many/most packages need further tweaking, but this can now be easily done with the new append/prepend modes of the build scriptlets. The implementation looks more complicated than one might expect because we want the full spec processing to take place on these parts, rather than just macro expansion. That covers things like the special facilities of %prep and their side-effects, %if-conditionals, possible error handling and so on. Add automake upstream amhello-1.0.tar.gz as an test-case of a rather hands-free autobuild with added distro specific doc. Fixes: #1087 --- build/parsePreamble.c | 9 ++++ build/parseSpec.c | 67 ++++++++++++++++++++++++++ include/rpm/rpmtag.h | 1 + macros.in | 9 ++++ tests/data/SOURCES/amhello-1.0.tar.gz | Bin 0 -> 86877 bytes tests/data/SPECS/amhello.spec | 20 ++++++++ tests/rpmbuild.at | 21 ++++++++ 7 files changed, 127 insertions(+) create mode 100644 tests/data/SOURCES/amhello-1.0.tar.gz create mode 100644 tests/data/SPECS/amhello.spec diff --git a/build/parsePreamble.c b/build/parsePreamble.c index 8d1d85464b..8a6e7522b1 100644 --- a/build/parsePreamble.c +++ b/build/parsePreamble.c @@ -820,6 +820,14 @@ static rpmRC handlePreambleTag(rpmSpec spec, Package pkg, rpmTagVal tag, multiToken = 1; switch (tag) { + case RPMTAG_AUTOBUILD: + SINGLE_TOKEN_ONLY; + if (rpmCharCheck(spec, field, + ALLOWED_CHARS_NAME, ALLOWED_FIRSTCHARS_NAME)) + { + goto exit; + } + break; case RPMTAG_NAME: SINGLE_TOKEN_ONLY; if (rpmCharCheck(spec, field, @@ -1080,6 +1088,7 @@ static struct PreambleRec_s const preambleList[] = { {RPMTAG_BUILDPREREQ, 0, 1, 0, LEN_AND_STR("buildprereq")}, {RPMTAG_BUILDREQUIRES, 0, 0, 0, LEN_AND_STR("buildrequires")}, {RPMTAG_AUTOREQPROV, 0, 0, 0, LEN_AND_STR("autoreqprov")}, + {RPMTAG_AUTOBUILD, 0, 0, 1, LEN_AND_STR("autobuild")}, {RPMTAG_AUTOREQ, 0, 0, 0, LEN_AND_STR("autoreq")}, {RPMTAG_AUTOPROV, 0, 0, 0, LEN_AND_STR("autoprov")}, {RPMTAG_DOCDIR, 0, 0, 0, LEN_AND_STR("docdir")}, diff --git a/build/parseSpec.c b/build/parseSpec.c index 5148af54ec..b1910af5e3 100644 --- a/build/parseSpec.c +++ b/build/parseSpec.c @@ -25,6 +25,8 @@ #define ISMACRO(s,m,len) (rstreqn((s), (m), len) && !risalpha((s)[len])) #define ISMACROWITHARG(s,m,len) (rstreqn((s), (m), len) && (risblank((s)[len]) || !(s)[len])) +static rpmRC parseSpecParts(rpmSpec spec, const char *pattern); + typedef struct OpenFileInfo { char * fileName; FILE *fp; @@ -891,6 +893,68 @@ static int parseEmpty(rpmSpec spec, int prevParsePart) return res; } +static rpmRC parseAutosect(rpmSpec spec, + const char *prefix, const char *section, StringBuf sb) +{ + rpmRC rc = RPMRC_OK; + + if (sb == NULL) { + char *mn = rstrscat(NULL, "autobuild_", prefix, "_", section, NULL); + if (rpmMacroIsParametric(NULL, mn)) { + char *path = NULL; + FD_t fd = rpmMkTempFile(NULL, &path); + if (fd) { + char *buf = rstrscat(NULL, "%", section, "\n", + "%{", mn, "}", NULL); + size_t blen = strlen(buf); + if (Fwrite(buf, blen, 1, fd) < blen) + rc = RPMRC_FAIL; + Fclose(fd); + } + if (fd == NULL || rc) { + rpmlog(RPMLOG_ERR, _("failed to write autobuild %%%s %s: %s\n"), + section, path, strerror(errno)); + } else { + rc = parseSpecParts(spec, path); + } + unlink(path); + free(path); + } + free(mn); + } + return rc; +} + +struct autosect_s { + const char *name; + StringBuf sb; +}; + +static rpmRC parseAutobuild(rpmSpec spec) +{ + rpmRC rc = RPMRC_OK; + char *autobuild = rpmExpand("%{?autobuild}", NULL); + if (*autobuild) { + /* XXX we should have APIs for this stuff */ + struct autosect_s autosectList[] = { + { "prep", spec->prep }, + { "conf", spec->conf }, + { "generate_depends", spec->buildrequires }, + { "build", spec->build }, + { "install", spec->install }, + { "check", spec->check }, + { "clean", spec->clean }, + { NULL, NULL } + }; + + for (struct autosect_s *as = autosectList; !rc && as->name; as++) { + rc = parseAutosect(spec, autobuild, as->name, as->sb); + } + } + free(autobuild); + return rc; +} + static rpmSpec parseSpec(const char *specFile, rpmSpecFlags flags, const char *buildRoot, int recursing); @@ -1048,6 +1112,9 @@ static rpmRC parseSpecSection(rpmSpec *specptr, int secondary) } } + if (!secondary && parseAutobuild(spec)) + goto errxit; + /* Add arch for each package */ addArch(spec); diff --git a/include/rpm/rpmtag.h b/include/rpm/rpmtag.h index dec9c9244c..aae604f681 100644 --- a/include/rpm/rpmtag.h +++ b/include/rpm/rpmtag.h @@ -386,6 +386,7 @@ typedef enum rpmTag_e { RPMTAG_PREUNTRANSFLAGS = 5107, /* i */ RPMTAG_POSTUNTRANSFLAGS = 5108, /* i */ RPMTAG_SYSUSERS = 5109, /* s[] extension */ + RPMTAG_AUTOBUILD = 5110, /* internal */ RPMTAG_FIRSTFREE_TAG /*!< internal */ } rpmTag; diff --git a/macros.in b/macros.in index a047d1e388..374d338413 100644 --- a/macros.in +++ b/macros.in @@ -1349,5 +1349,14 @@ end end } +# example autobuild macros for autotools +%autobuild_autotools_prep() %autosetup -p1 +%autobuild_autotools_conf() %configure +%autobuild_autotools_build() %make_build +%autobuild_autotools_install()\ +%make_install\ +test -d po && %find_lang %{name} ||: + # \endverbatim #*/ + diff --git a/tests/data/SOURCES/amhello-1.0.tar.gz b/tests/data/SOURCES/amhello-1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..cd40d02ad8ec2f5367f710e9ec8cb84dcd616a59 GIT binary patch literal 86877 zcmV(qK<~dFiwFP!000021MEA0ciP6X`PcdsTSAL*kuZ*(yxJi(!Pue2;0L%)YWor) z7EmoDu2$HgalZSVncWojtQt(`p*tE!Y_pnYJD?78 zXM3l_jzi8_Cm2R|cF5UrF!Kj?S%y)m z_Ug@gck@yi^L2q;f<5C`e>O7hSrkm{8-6(QXI2o7uJcCalxFlQ=iSz6<>%VwrFmg{ z9y2d^7zQC51|fGxK0;P|XYJNWuUf^&YO8r%Kk2=xRgP-y&gP}$-Wp3lHF{ic)L_hD zr?BYI^|--A=oI6Y1a6&o&(6EXf0zGHra<7|9REwtpY0{%Kl*>^8F%=KyQaWDn)$AA(Tx^p4O^*NgfKAd?4zyPr9qTYQ2;fPh5 z@7P79-L5pd?+ySq8V4}SZ@I+ePNtp1msCVBX{m1og zv)1Xb<5rth*jc6Btyj+*l{Py&Z=ba~HH)zhN1`~)e?*u=QU^$Ez$4rBgyi`h=uZG; z-hhqmTMl}3IP4z-X46jbc_pDZy}%z4hXA_}ArMv{qL~+%00Li*qi8Dji^aRUJ4%v^U{gOH9{dYtwMr47k0=pkV70B=>HtdAB#{=diw*+77H7*?meMe169~Agq9dO~Hg* z!M(X;CkR0(U<&^`3nCZH#1&FPV2D5?0E0tB@ECX)TOc4|sPuqM1h)I=GY~Q(PD_H+ z>=Cz&`f;b6VVTTE*7q`offDM0T5iio7Y1dse*srg*)Thb_hKi@-yVL6Cw}X@K%MZ&sPi zx#$B<7NMz{zq3p>UN1u#sc&pNMFG1Ym6&Z1$DK?%mBjnfoQ1JLG`*ks=qILlkA!V7 zc3N+qTx{j>Q8FOa3b;mhvh&~ozpL*~F6zxK;NrCNuCqD;wy`^jQO{U~0RX;$;KFtk zn?qMUEaXNriiPY>fe76yEP4wPGvXjJi?U79fA35NtXQlv?u-K^GnN6W1!&#mEGLSY zt4(X`Di6I|+2U2Hn0v3WNgj&GkVu%ZeR$w8Mqh$F*|3D$Gjl8p(y9M{m>3w2sdEsje7Ivqk7v& z&(>C(w&hH=lrfep50Lec0d06lnC>fQmA!IL@bt)H;(_GSP^w0{dDw&eKoC&eVrHZM z`mEA@v#%zsFzqSMFsvK};4!KR3bsRMY?7Q&3bU!q13e=>U2zT5q^k}wohkbPJPO#4 zdl>1m@CVxXm^;W3PzZZVNO4K?#Iisuj12c5VBdYGq&Wm>0-_>f zu?C)J!FN)snw~j$tZWmZ%Tv@?Kjij}k?^2cYpHeq;2M7fKfux)`wJI{;n%M)2z+iV z%Q9h&;4O$b!@emqz@9e8a)NrmmNK0?bu<7MvBQyNVP0Mt{5BJjJ}Jn(00J>YPcef% zC}BBzwz3^eo5T#lD5Pxm)b7J%fyYoIVf$!Kr2F#zlEEu;0x}lH6U)^H7P%dzr3oEn zdW>C6N6HcfM>C*cvq+~no6tc80!$!iqYY<%%qZk$xtM7@0|7ns-*VtIv?13k;e%Xc zhv~q+Wd#r$x2(&cb$!`?eSP`cPuD8SuZbf&89gL;#6CdJVTPH;avWSJC zC?svHML>kUmDAGlc?5AnRFc7z^h>L<-?G3-(d(*J`f@&ekj=Mmr87F!>+io`Z+fL= z{hHnBLk0(!CI0DD;y*j1Z!ie@hTTqnt9I-4PxKx1e~W{{LsYD_{Rav860s~LN@{>tzIqGaIucqpP{v6W$^SKsX@JhYl(pTuB}LHaO%ORnU=3Gn61 zt6J;WILD*gejN5McTH^95BN5DTM8_PAae5c9`a#!5fr+MHA&P)9{tZxqp z>sTJoSgzjebSsSpmI~W+=Ksuz-!f4AvAVK98VhaRlD2M@wxn5T4P{e>$jo{Skimer zT^6sduIbV7EU?W)pK4yA{U?Csv%3VY+mf8+e246vKA3EC;pZX{Pc#dC%%BuWZOE^QfI1A4RQ(kUPPV2Q`?N&iW0dri{$&-B zieTuxULeqqbr_?n`4}RM$918UP~^Ziq@%C!fH7to27O5J=d@7(z63##ut*fajg{OY z43IFKFPa#}f}z6ARSa9ugJl{BHW9ZBM;g$3wM{rm2UNAliTi(9TbEZ?#q0a~0|u>2 z+x)#^{(8Mn?c$Z?WQ$gSg$%5h5lSTh=LV0huxb#_@yOE*BG?hI5}HHz-?z-`9Mh#i z?hEuUl3%O`gpJFq7?`P;C?QZhGm^2ctAb-7=^&#D$fm&hwwg{MJ&=WX9m@fe^fM_T z1Sv2;=jehzZanZkAu|zj>#(t|Ymn%Vo_{V4a|8W^yn zVFfar@dKt~)CAFBq974w*sJ1z-xmFu=dqnv-<1+kOCMXMD|wtxAq603ddiOLZ%=Fc zEX3+5M6H2KR!KsJML?b*yKy~FfLla&Xl-&`I(kCfwG8~rGT{V!bDEmmf!g~a8(=%E zw1>KG&!j|^Nm&M2A4KRf>=;Jsu&$&M^PrB?T3F?j=TB}ELwdmAUJBz!3Gk`^+X~ji z&^pY?;TSvmjO2Nt0YmP7zz}lV2pn+rU+mDuBe&Rxu1PQed#1y;DK}5(6l2qc9L0|) z9_+In=;ODxx6d~1!N442i7eOW_#?TA`Mm0h+zH2H$z+PZSS?y6Wd{2!lm3}7lLnIM z8bE!!KR3VK-kIQ^fdzlwEJ4!a?_etceBP~YFAZ~l00ZiGM;xm`hwl+G| zJ^9mr8h`Bm&$Hdq()}M8{(ArCA94RDVKaaGy`Rqc>!W(R0})b$j)8!^LE!X`D%}e7 zwQH55)7n?Z|8oDwTT1^G_diS9d(WSLz5n_Dq5r>P5BO~S-&?u=xd&$OHU58%|BuH1 zzU%i?SqwJ;GGv4P_ByTecD07RSR}KYuiL;M^?%p@oBV%w2h45h{^!o#Ug@j<|2_Vn z(0Kahm@dn*l2v+c?a9JZ!rw6l9L8nEp6gF%(c#*Qp1WTZQC30<5cC&>6n)V%b^8;q zLQ;7I2K2>83N@}nn6b1j7~LAQg)E`@LF77gCu$mU!NXfBuK$&HG7I`zA^#BJ6*S^4 zQrhzDyZFu~o!1|}wfWgQn=pUPtxdx??9{qFyf42-&Htp0;}^Uk1AD_EM7)6;9vb$f z*KUkSZJdfZKe3ho5i{GD!N#w2<&V2mcsE5|lQ|0F}fyy#{ z_G4s+BOa+S^Apl3Nb5nZ5^JEmb#Iy={&+@G@a9%Mzsz;64!*Zo4X;owroerv>nrxe<)<-^9v+5oKHsq z{z|ig=jIFWOm9Z8Z`oLwF9WoC&KD2QD%GDWC$N_Sgu0WjffmgrIM3~C82Pw5j=!QM zU{o^+hXgwV0H_|}Mpy<%{rGF=jox*>w?1VzaiG_!K^jo$w%Yj&`k6B@Twg@C=k>%` zm)Ve5-Ir&0pJBov*-t|1s|%~ZNvKY>T|eut15(!q)N6MHp}UZXJpSP03%Uf4V=DLR z#l1cJWh`$rTkX?Iqo<|<=)Q5*uBF?sQ>QxAob%@Ltfd~Dm+o43IL&U>-qvbwyLm&* zlpe8iS*bQ!RaoV8m*|gzX-_65`J(N3_@j+A*(I&1W^c0F8}O-E0Z+b-Db*aO=P~>m zJbCDrFE5@0Ye%)STJxyZtk!EC4DuV<%>{*d^uZ%l5K zRsmS7YI$I!-mQ!|qu(eKyjf!nSZ&lQP5H7VE2ldtzl(=xBTucJ$!;FiI$cbqvYVhN z#Gf$|+M?cAeH061U7_{*r&_fe*A=px*ntXN9wrH-IyFq=sB&~f5cEVZqyEx6i*<9` zJL?@{-=T~_*j^btsvTF(8{HJpHbBWcfV!tdmPq(dYRv=^Xf3UQJ!=3~*TE57=}_i< zj3H)9-B|YUAOVDn%eCz&f!U6hR)&t%;nj6vfR(-%6-a_XP zT1$pxfW_nQy|ifOO|8+$FL{vyP&>f950RbA?SxP1T@aY69|=e|2yTGK2djuCc7_&K zBuhC9B)VHPom*xO!D3I(z(R?PY87b!UOMVK#Z#UF-r^bLQ$0JQlu!BRqA5q?hI*2E zs8$n#u2z@y03EBtt9pQel==bbiuwVDlvAxXjx>J;zC)oJjiZMMmEDb_xD`K|0W6^T zP-yjPjiVJ_plcn-I(}eii6cP2!Vy3bPm9W8b~9CLRFUzKaSF(`k9mR)NO(;#ef9z( z&(C06!;R^<1u?X}NSOS4Ke%r~`Y2C#Ixm8(Ne5Gt5XSct^D9>{7Dpo@C$dK)F5fki zL0P@pj-uCe!($gzAmb_Nq~1BhpZMF{9?%OU@?Aim-{C8DX8bl7<(B?Py(LGNVDQ$X z9bzG5I-{Zs9?j|4z_{&<)yta`7WnwKp030UW>XIfF|ZTUg8l`O&_ zV>93V_Y4mFvMfccRW5$cvmCPjx^_};!m+`JG;%VH<}kbshXr+@aU(v#!_xLO^p_5j zP$dlo8ze#w*`^-NLmLk=n=a~$aO4$dE*(U0Votwlq%I2aSa>3sg$}2SSwyJ4Wiw7VXh5G=@k9V8O-V#r`T6(8QZ}+aZ$ZM=?gKbeB@-B(6IqRJCS9fW z79E$KAv0)KXyLq0@-Wb-M~r6ON}GD{fudU+pla>ctqvCFXn3_BpwGK4OnV4IJ{>SmpzwD#f$Z8f5Bmr@55T#&@9a`J?3pjCV99c*U z=xw1@w330^{2u#nUNduUs};sh(xz?P2JN0bXU=`j%$&K*LfuA-bN4sz8qfIlc&ZhtF zzB=}1vykNSSmtIkO!0CY(t8=K;KOF52O@IlBc<)$BO+7M&-Ner-|5wTQdd51Wx!r>(1VoLdSNAN+UuDoDwEvw~}S_NiO*-A{A5LKrTEa&+6>i4cgJ=2^w! z>MZ~t+^c*Wh^BwLmrcxfFG=$JGR-EoG{0;rqwwKB;n~|_*NR%f^Ve|OT zpx?ktF(#eIO$(9@#tPR zBbd~?2D&%;GC3b8Abs470@=@|d&8HL%qH{WrYA9xWb?KeS=rF0JaLMX25q{x&4}55 zQ>A^;beNU}-%P@01hX6YAWxJ6Mbq|(ljLzT%BW*Or-FpdXw*B=5AsAQb|B3dmP>IY zN7)xDksF{n!z41>?}_)i8Rc$S)vDB=t2b@h8a;Q zg|r^ek@zU(70R1x(ZVKEnCXbgzP~ETXDnlr(n5(aJPRryrZm1FQA^atxZ5krh9I1j zn=@q~?UhK4h~IjhhLgC1v)BU@%f*35coMUxR3|QxR+Q!x2{e-Y*_HqoaRm^ z>91}^mVzv9UOswG%n&+I#i1)eREbR^Y%DrB6?u4d)5_#aL^r~d+}P${TZ43o*F+TE zIK=Do#J5%+O9ao>;j@EKCL1k$^l+O7&D6L)cL#rbU4h)#R#22Z|GFB=Ag-H3vQDVo z2yxeEgt`lx)y42m0BMGq4f5i`-5TIoi81UkI6F^xV5G+kZpB_1FBnTj^hzk|8nEAt z6gsJFnB8sjl}fAG|A`T-b&zVHjz(a z-UCZcf;U=aKt8S{XxvPnQLhO6;29`%-Eip(Vb!oK8g1mujiu)D^2TuEEHOJ%Y>paB z?;7udw9&?;&0lEu2CX1N57h9n>b{#!aetp|;D7n@(Qr9lKGiQqIAjDvypdm28Wo6u zDj2l>*uJl_C}#npqF$?7{d|MvK%ArZ5{@-iAqx`GPo-B`j(b|Z7nEkH$6~d*7Pne7 zpm%FpE9bJ06|9-+szq8nq89oIL8lhPl_qlCU6!oZrV5c#u~dq6j|4yYg?r1cs_WUg zXRl8nFgTMty?uuwRW|i%#SL8xFeTHO$77Q-*d<_Z^4Ttu4cK#D%x}HJ)ohglJKf%S z@h zTnjJoVJ9~nH3-_D{Jl26KDj?+f&4u*^qd&Y!Ikt|EgI2hscFf(tYll6x%noYV`3Jf z&8^4O==S0Mvz^U=_4ir%l6x-iD;%}aX{`n8=biEEbR6laUAQ!>$)2#MUUhNvJ~o7q zgLmTI^!)rPiNC9E)+a(9$bA~+L`roticpt0*!8)()HobvtoDHWskr*>jgUK&n%C|klpx`0Hai0j z>VvIE2SI~H{!f_W+eD3m>3K7OKP7l7Yz?zmz}?&0{`pmS*C%g9vwaZOXL^)`K<1a)Rkm$=>6lvPJxw9;y4;Q{>Xv2F8ouf;p;f5ht-!M9&3$f2MXfB*ZdS_Ox z^5r5`d8y=usi#`K6W34qOm$2Kh#RiDW*+=&^)SI}qC42B5%AEXEivK^+tyzVzW~{= zE&Zq~bJ{hND)&X25OqIdUT-sf-i&SgGiD}&8~F~`irc2w+r?go3EL&Tw(B-}$el7P zttjCM*k3F|fnX22Sy_wWtC&}#tACTglg-MpKPQV?S_qV}1`Ie4A3M{mC1 z73VG$D`KixX%YL}fH%;;uFGRBhG@3s=k)|Y{LK@ym`t%JQ88TZ>^<_r+-qcCuvGEj zbB>u6Zm8v){W-ckJ`eldceAoH9><0fpN_!db#19DzJ?@J#6yu^qR^&8QRL8HPp({ZfvmlE0%`y>>R= zz1x^n0{%tvgxzVrE6ys4y>g2jOrL3;lZiH$YQDV2jER@GA`M(vh^385^QhVUq_;tB zpel8~P+Pv-eDO1FlxlT(Iq?g@X;yvus%$H`0df_V?g<$&=b5Ny$50seR>Sb^ExRZ@ z#@#|fxn46Ut0U{Vk7hy&GNnD3HP+b3N zWreDRPoeJFdDe@kpN%grPsfCZ%vj-2zail9Mkj1scSPen+MfmB zHMk%+Sl##+^v$-*&f6_oRiF}9JWgamz?gQTZ zuefV=U-5>oR#3DaJDCyCxqG(b!JKmGIZ&u`rWONDN7R4wo5<*JJ)mj{S+fFzXMHAe z>e6-;WNA3^OBGsbc0tS<4BS*GOh=`ydhT|T0uy9u*YO{+v6T{OWQ%hmq2-3X67-5_ zW?$aJmb?A#x{-UicSnlYv_K9vt4<$E!%Dsz01eTlcjvzE^KNmTO8yPt{ajIG!$*wk z#SW;lu7;ozztd2b98S_<4^Hyn2hn2Nu&ii|K}BW@GZ(E4Q3JfUM8v^@5w%#dmd&dn1xxFHzJ6v@pud(Z0^ zb?u60qT_m)B=ja`+y8H_NXCVMP%Sq!~ava2PNh zC^JC*spy}P!E$H-t@~$k92{ws;pz8#PkvgDMITl8F#d!1Z(76`Bn#1DNe|gw%n-b1 zs|Sp=$T6&VBiMGg+Na?rHRVCr(09yV5UAyU^cug)Qi9GQSWnp>QPxq)(9!^2)NwSaDCx-6SaJ zt@7LM0<3@C1Ast{mlpF}n>Axsd_W%}|Gd5Mbbn`ickkJOBa|cdP>~W0wGheU7oRu2 z_-6U@#+RShV2FT_RqO*{BHpUgOLo|dYOUb_oH*v78QvCuRQy+Yae>^8keN|W|JIlXf9Iv)fXt9Y#MOjJ zpLp?2*6&Fan$dKU$BUKkvHs&9v+oJ{a?>N?focyfggVAUMLr9&&pkMxbW&YBfI4Mg^Qk&Rz3^UBbeOQ+Kg z<`bb@CRxKoZeoB4t1?K>a~IcnDB0*BHcjHSA(5SwMW+?jAE$#WI>s|xd?Ch&iBLii zyJ-*BC%vr80i|To@i!p{mZ1@@_#r|2$0>S{G&L`x5IzFJ4Y^<@&`dKti z9O-lYhJPq+D5mF)pAf^On`(9Eo$fgELd&=l8h+9^E>PrSaO-G;GKloD(}mcnGvqj5 zem#)kEGio7zrkXW$~3e(Rv+OjOf}*N5l7VTdGW~`aA*Lh1kaw(=9%q0ZO<2MnltLR zO~8)?$4C;uzx;1H`|N0 z)YA+`4(v=s5vr_9?qx&w|BLD>@PwRijJB55GaWF(gRR4@M~g4+iy#a`5m#4azfgmB zpX?smRx_kp!(bQL3~lX}k5z8FDzGff@msngc-#!R%^1h@-Rvc%>ch#MWEl<3GY&Z< zxDO$(b3Q&!`l$vwrzL;dhXmKOU|9p$ApjI-CJy{`n2mKoFc^-~!{aJY3`qw@BnRNO6IMdvh)88-hB4e>@00Pdya#-z4QF()|313ZU4QW zSftZo^?&1ZcmSiEaR$xqTmybNnn=fY@x@7&f#$G-mZuYJ$ZDtC?o2P+xa*3LfJ+xE|+RLP}HYZ-B84+YO z<~UQqD9~_U5Yt*S+c@p>0CbM?Y=F6=HWH0Plk|o?CH2x#I^>9y2qTtVc%cxf+VOPg zxmu!mn@q4Ch8a#w4W~vx`V+nt$%BT_0YueJhtr&gf)J+YmU0*SDc||>08FwG;%bSH zCOZZQ*LfAQ-%92WK>h)*r%D4B!STqNp2ZwO9W)q0H`y{RC=v#@}eJ} zQY!n0?hkUFJafiNTtUA|j_K(47sI911GdxoY`&+SSvY30mOrRDbRxy#yj!SR>`MV4 z|2l4Xy!sS@uuWqwv^Sq}92SqO*0mr@(DSQ+b0h%7A^VPL!^PsGK`3NhwXz%eezLA} zEzL9`7pM6Yq%(mz>x|EdJj;zoFT3z5SAxBX1wh5%JxzGWarRm^8|Zy3CJwh64hJoK zz@iq|yT9cVRDH`<{@2vV^I{Jx=D2a2(nItHq;hEfYPEP}*-R@znj#SKWI7}w zjL4=?eIGRZFpJOA4j4-;Z|A_3ihiG6FlJ>e$SY5INOKRn91r@mDz>)`fyQ}GCNvb& zoFx&_9luo=D4BhSSUDnbu9RGbmvkkVI$k+j%D(cd;**&x0F-6kIa%Bp5OL0dh6}rf zKcXdeQDVvJ0ni(FE{;36f!FOP$D_>(EXQd14TK>bzds1~n5K&S5I(tQ&uL*xkxL># zM@4SMCux{Kv*eyHt}yx3`I-<@cjBEnT?|{zuJg?Le#M5X{$f@WkI2$lROkKOLn6Mm z9>pK9zNB7M8!bFKDFW!jR%RBUnmaeY%dG?(fi2 zT70qA_+m{~OdK$qFxjJDpTk60a}9~$s#=f1Qd)*I*5Yi9r}X|UigN=f>%p^o2Zv|^ zn+%pD3tY=C@Q3!3y+gy@dgaQ$djJYdAjYWu!`7o`J8kJhRR;!S!J3VIs&%yFk-@c+ zJ4vLWt<7g7c{vdG)a_XKWuz^AfLU0KUIa#YZxzCI#YNRH=?v@I#bG6gj}IQUclP)9 zh%$fS%|8c*X2GA3z0y%yf6wG_S2mqcdM=U}X1tMKqGW3nXAk1ws_~Mrz)8Pch(_D@ zoBxIFD>RxObe;Gly#S?5#P}H<4!ZEMZ!C7k7j;5p*(2J7~=9F zpQc2YjF<6b!`KZ2PG&@xHxek{RFYBRd<+N@F-@6A@}eS-`FbIRKsZ-sDjjyOL?sdd zy%851P8dNzY;RYV>F@LB_}RPnw{7z)DbJoFftp--NS{#hM~GprbiyZT_l!*?a~@@( zOAw7bV|KO!cI*_P>1jw)O9#o)|ItL;c4xWvVoa-SlnD#yjgyI#Z8?DpCKF}xiYQ%n z>+CRYZ`U>)wJ8GrxZ59hr$j_smJ_2S%LRMO3#`sDtd)Q?!Ms^=&*7+zln?6=936O? zEAXza?fxNDY}^bvBjPF147P~h|Gf9?@aeNd2jnMURgc?&|k`Y585I_RQ+37Se{J1c<ew>24AkYu8F@s@kTObeI>~6G~vDslTpT%Z$d$SGuQIAxW zXdH{slxN#pTp|hzghPhq<}sPTv(AY5(q2lZ3Z!YB5qpt`q|RI2gznj`JY=+HUKs{U zc@D?ZFYhLKOtXk4>~6bb9bQHVyv#({xDG^hfWen$>B$Kike%p(sx%uUJb=f&HS=2N zBLm?>Y&vES?XJ7xrHk7afH*g_f(#u)2qr}q1Pxsj2`+fg&TYZNedK%mDk6}II!V*b zT83g?u?_Grev#zOpYJRkExzc~|G8EF$4dR1mrF;rTD5t!+8iY><8R}J@w@(t!;wiN z;lKg+Tb)5mLY%~4szA^A=L%Q;LfjE3wu;#s!JWlOL$1a3&bWJaI2(E>S4W{SA`0JH;k*hhXF;$~LAP97K#@(|lW19ejTevSm zezUFK@Ps8t$HFKz1c-v7z3-G5x22lA<@9S#gOa$i!$U#PPPhDMIiJQm$VKYB#1PyC0=^?e$OlB+MtUbXI)_cZV z&tcegEU)Yn>^kVk)6D-=A>jCQeiFF_A@(^u=t;esFd9zkS;Au~;V)jB8ICKxPJVWt zPkMxvD+&V(P*iN7t(^m5J4*auI($m(`Sxd@xn(L0NX3P5BCqSE8IF_R>dJAx4KVc`F#U>Ra*T zR?n_&rt|)Anse3)+%RdmiWhv(Ar?*~%A{tOz@gmZO9sXmIg7n?NN`V%rdb3gqpHQ- zvEVRV#RQ{bzW^FuQS&R_8)i5j<#co{**ck|ddE2FoGugL)1`s$=jS;K23RlUiVxPh z6kRsA`pIBmq41g)eY>7)d*ZX`^zTmwV&a?Prp$D}9&MM^bO-{$9fwzNGtO)-dUVNA z3Hh8`D0GUYR154bIx^lI!v3D;Z@OQ_@8tJ9zslvg54llyG}15lP?#4x4MK>Wj}8TrI=2ChoXR5=Sx8`P0s{>?*gB zG1a?Th(L{>HM37#cD4I#74TF%IUkjNI((YB!c~d=U`ZH5Akbu0gU%K3xgWSSh}dMa zq~kHMNha4RaU4aIUTpApaTxmPhT>m-L~%QEA5gIR7P5mn7`f}Xo`c^Ld_PmjCniD9 z(-;CRWBJno1B4G`1a57pv4TbKfhl1Yn)LI03I$Ep*>oF$bpzmtGLIKoeU_1L{YMT= zT%)}qccd~xlOBd$By7YfAPCcGYC-WX$Z_Y@F^ynuP*kJ%HWph!`31KT=vV_n5}8o_ z@zZ7Q-dBwkK2g4Etn!8*ba)$1^TE}+Ef^!~Ix%mKS}|Q*mwH*vL4zmPA18=jMf>}d z)j5sIT+c%<;Mh8+K*g|h?hH>wff+6Oy0LO|%`%YdUVTrKu*(j=F7k*bg*GN}u)yEF z^F#|$AOII;pABvnc-OO_Zo}gkwBf=q&mwaE5vRV)x;Ex9-CFytc`E|^vKHLNsGCL= zI|*XDjgW-{{rOj5FFaR{!Y7%Sx$imaKB2>ID45MiXDYX80!~TDqo^rhX`G^;$RCTM zXNb5h$6$F|j`X3tkl{v{1F))ka;s9%)1!4;6o!`Q>8T*JTuS>gF1L=POS4Q@U;CpoLzCZF165Y0}pI!}iXTt$UAld?{SrObxFIH0+>F zXU$W!Nd)itqF$F7t(O)l9PoLjz-LoNv)8Xf;Gs2#l^p>g--)3m+u5gG&E{BLLsv~Rrr zc(1BJ;TqYiaOpv^%?{|HZ5~8;$9MPm}u{_ zzMmNb0YbC=D4itK(?N$ArOt_1PBTX&>s!o=2)M{fS(nRluPHZ)ul1Nh*t@^Cj{8W| z&niGXo{TE^X4WWSijcg=kvl~>tTPtrqfi~j{=gW=tYG%Qb+F`wu+8??0Tc=JBAC(mX4AoY*w_KSNkO$Nq+W9AwM!pz7Q(dD|Xx)i3mmb_me^Alt)UW`SEdj1C2l`M>*6T)Q$qx*8q#uNMX?2rq5gP8i<)PNNCDh=`xEub_29G4({J{)Q>N02$4kD8s~nz?_^f*1)CjBUov!2RUn48Ov(BaY6OCkQ z{7XxVMJwjP*6yQcAes)W{^$kRi;Ho_muvpMIXA2BWZXGr)Mf>u*4%W?nYHUVqhWm; z(Nyd$V`3lx8Z)SIS|3k`L$eBzU3`47O3RsnR5$6UmZ=$v?4YDzI!2`l- z4`>Z?71mDh>TvMQj^^^ojl@x6cqHhrm{kjvZN|o#&`1o&Gq#HtJA>o2Ke71T+&sN^ z@L-5!E>CC)K6^r>Et3(ty!dPI!K|LyFXtz-Y2z-ZiEA;#`k>!=mjzXf=G*;@(LSFhYz&c&o#%;PuLk?& z{{~U(?F(Y(L@SXmH6~dWpHI7IEap1byA_fD^5P$|cP=^w2*_179a~JqrMu~PB0?!h z)Ck5su~7ic0l^$Cebm&6kNc;zSfMJ*hMN1Ss^fdQSHOdTw*gPnO7pb0+k1gMp({>n z%(q@MskP`up}fVn>y-Iw&+t#@Wb@xint7Q$Vdj$7j^Nzw~W6*_5+gU1@JUf?K7ZxU99~Jn2k2 z11N5*xdaXM`E)Spk3bIe&xtC3X&3kmkXp^cv0BzM6+u0MVFU5BiC*r$R%LK(Njta~ z9gHAuFNt^=KpsThWEKS*{KwS4HskMHoQG}t7MsxNq>_3Uf`-SFx**=mxD3j%ft$AOY51m zqJ~OrerO0#`hTR&Hf$;_8s_A>SEsO(i2}7i8#%~L6>bkSFJWH2K`#jZ?X%Y_3#yga z;unw%+S>t_18NJl!EU~61|?7A9Al3wJ-E^kPb(hH-r)Ulzt1Wr(|&$NICgT8(xM{N zQWs51Q7pXBH@2Boe*|wBDXb}Gxxc&h@W~#8A{p$8(n(rWy=2Re$wgLI#79I)JrE)3 zr8%KNnoF$7hH%MjWd%Up;Gdn0TNcA@GAm zTTI4@ubxtGaLg&hJIRfbZ$OXl#({(Af%Q-FbRw8R?c%|4qZ!%jm$miM99~aFaqeR0;N}rbyyhHku{b|gh2ix4n6|qQN!xly z$WL*tZjXMpWp2zI4qG(#KZ#m$>0yBT67_kj-ygTtNR!i%iK7ssZEEFFmm3_!6B^}sp693cV`)Z=(kNX3{h|n*|W+cLPmRB3! zG%jHx0S#9$IUo>Ev#h5&xaTmc0p!y$xGJ`Vfw}OvXOqb&UvD;9EwOProHnxYX%qUD z#Bep?M!IRnzPYxtx>jHLs(GHDvX8k2K7aS?pse0iC~j}EDs6kjd((vqNtj14x{RHR z*OmsZFvCUXBvdUY?BsxG2jUHn2jXVwaO)`%qfnu$iJA@!y~T4=g#cBU(C;uo%c^Cg zL1)5fzEL`LTR;B&hIs`pCDc5ZB%8SlEua|cMSTh}zd1x0EFrSR7m|zvK;v<|C@DMY zT+Wt6B9~iOa0T7xH($LJ?_g!<&fQ5Hq(=pR*u76j#)F+l2Rj885;e?N&n!ZbxMsf2 z<33I6O1aQ^Fr6{x+-9+Y@w|4?#~T}_h3B;l#pi;3f7`^8W?tj?>rJh*#pg6n0L+Jc zy9VAge)|1=jl6jj4Un7QJ0DPY;vbBuzTg13bDvItCi_q%1Qp*oZz8#Y;5z{!jGzRL z21^ShvclU3+j~!UysG)VCGiXjmGdXH9}4it?jvw> z`_K5k&Cq*?##o2_rU;@7T-SN#Hxd$=nXgWdxq1eX;82xsiEl&;EgC8J^Cv@;%D@d+g6r;T}*#^@jx)M%W&A5Mcbs=%s`TU0|4+=hJh!z@Qo-7_{*OAV}%~6<1Ujm3rK(7%vOmZaSK%9S_yRzA|99Y7XxBczSwgb>-`| zuURgyJ%I|JCFl ztfu05XVN|6;SwWHk>m2df@2UEfwD)n38oV!3uEhJ5AxsBvj#S%+_ISX=410TJ~8TU zJdMiJ5|bBy_vu>v?Y9Y`rXXh#|J?p&bqj|(9ATkCz zr;Rka`l<0+;VLEBP z>8BTs(b?#){a)*fyKCP?(NmEKPEs~MJFT1bw5epGVkVZ13sttPH{#~E*_@XBkHv~yod&RisX%jILM^G;>vp9ZdxAz3(R_PS zAKcz-Z|^)kBr^ZO&i?M+etZA1;geXEy>gWRmOyF0=DyLE*m`XHepA%241PgV?!-ms zN?l?(N2Kg$>?}>N?mR&AYj?iGXbo^H3T5TRN@h<{)uaaQ)n+>A{iBQc_Uul$m#uHHw#uA4Y7vn$z4` zj;uR|eP+5efD7yV z4Bzy}*^qA@?Ig^fsL0IEvR(?{65MxDq-(AyK%B)k!nWWrACIpZo@~%k1>;ViFEoeg z1?v{~eM|Vn_c6)tmeWE1nDttgL0B=Ea&A;4W0?rAT{Q`nNQ?xI@EI#607^&APi9?w z@)ecb#WhNfn=ikNf(W{b21$Re=6An-wEQ*(#ZdLUZ+Dfr-du{pdv_$d5sqwdv2FdHtxcr z<_Ry#Z#`_&`o=RhXbMB*Kwp&<*U7a60N4KgX2&d{jSEohttdmkyzRPi%(8 zVC+1QZs*SA|3&y>*~JBQoY%v|Q-Pl0~u%og+6{hD%2=qS`MVEiB0rb8vj$ zf{E{3&<3A7ODeL+ZY*0~v|`p~z=b;qbKS6i{=c!fiu$msE;?ZE=jc>jrK!qcN>3S2 zn?`i3Gs|8!DfoqmA0O23?;RKhuf({-mzmOXRO_I|gw~sPNg0U`hM8n91UbI>CJ?^0 zNvq+R7zH2NSQz8;QsCh&v{%Y58e!1oav46L5{>PHBPMsczYBl5d7g{feBVfmrK&2r7H=$Q(e$QVM2Nw$qhZWe%`V$+;*{H6ww`l!n zu1UT#5D@glgl{#Om<92i4YVqEDv@<5(4v95cW__En3dQFta!a(=M%!JHUh^B($)&J zJH(JPv2F<(1j~fJ6qq3sn8%C6GA?@#6_%m%UW22evWiW;-Vl}5N-&w0qQy2HOj^T? z=_saW!J$&4lxXrb%0pXQV`$r`<`5uZX1q}~8op|R@z?cNg$zC-dF9+xB`fPUOq}Ni z%fZe=8x3kZ-+Ou!Xs08I-8?3h(79DuqO1Vlj2GS3m?EMQbjKHecmoWcH(sQXV*aou zJ`{{WD413dhEDkzW3*((cPY}%v%hoj>=BGP-#WmV%vtM0xu@?$Z-a{!{*VHF0DOD~K+~7$^9H#M3pwAK^0CvUW zp?ZA)%e<>!mc`p*&`L}agxfSD&O6w$MhQM+d$H2-F#~Wr;@oB7&#>28e4(wFCEvA< zIkbC;x9_CH-FH#}(IonSY+44{p?Y}cVyKcoRIESodcB|52iQUvDgIV`Qq3E*mMc>6 zXf{8Gb2j_q);_SNfv2or!;UI~Hm+4maWHV3ayf9CFpDGI(Ps(D*Y($1N;D zA8$Q*_-Mx{72NDAwP^bpl*MWni%@=TL!0+_L{#+jIG@lCrz7vh&(;H4`z7l^7-V12 z$GfQ+eDO6glZ~8E`<6==Rw-e3go7(}A1FdpcG$<(jwdFXhX5#g6?KhxDG|_A0605T ztks7=O67exSk&K}kSqu*$t97C@=>Qt{2I)XSeq6aJ2>^MCXxF6nBVFHZ8mOLI^DDO zg<9!yIaOht)qiwZYJP8=vWfiAx_?loVg!I5p6nggS(oO+tOMAYeA>lg7HB}u0$)S8 za5W0u;oV}NZR51ZqV70Q6)woM>=6GzR z^dkh$;(X4P;*dB6lNYh5V0Iv!O|Pb3b8M<#4x8iA7RZ%n2j4Hg*tUtj(^n`bSWXX) zq^+rK4i82+5$lK{cFI{qnL%8FfD&zYyX|f}QymAb4#MQa9rl%A8X)A>;tQqE@31aG z%y)ILbj?oTQQNRnw9wTe51)ng%X2Mz1~#T%K{6NpL$^On`=wqYq#&urQnC&H7}C9!b64=K-~ZdvBQyAt#VBJ07- zcbVh2eV9c>$2iU(jxz<-`w3LIM9I^k5|Vx2{YP~MJQHuuw;G#-Kgx0uSI8vst%g;S zu-5cKBsHYSgWczkch=$R57ArL8kt>5%7nsgHfMv~ntDB8hib-R2*L)wvontQ=(NcY z9}iL&b^^r+SfOk&ib==y385_-j7uBc#$E;48$wo#A*PPz)Ld*rvb-#i0;?s4p`%9m zLA?f%adbRlO5WZU-W0if!q#MgZ*7$n%hua_%3EJ~%51I%uf<30y(inA#<0Oj@ryEr z((UcJ;^+Sz0ifBxsvb6n9-!2HVyQF}E$z-5%im98z1rjWi*0$48~8zXN)2|AJ53DG zxYO&5Z2V6{(I;}zs4ddKmxZ{U`jOp}7~h?pynUXoS0C*@*?F>uFd~)syHAOWd%SaS z0Mi4?-+sXN{@_*1zQL11X#v|G@j5W4#-r+A;}(b4k<9b!=izc0Ya8)(L6&`P4;QO> zCZ45zT?mj`ouOD5|7l1ZtY_c+qJ%sOFF<@#jhn>Cb7z3*=Y8=`MP~msl11^DV;5!?0txs@ptpi(ARu>d@LQrkz*u-M-qCarBrol-oiIRwK{n%ho z@B3c7I66A29Njsp9({V09KEV?-j^@+3NKWD(T2}&8@KFbZDS+iyF9sLH1XeVsP8B~ zTDZAR1;T1*>n`x4t4nO`6FOfK>q1@BK163g4#e&tJ3iJ6G~;=kb8%!7Yu!YH`xr_X z@Q_h|BzAusb_E>@f-G9i&JG(ioDcfL*BfHOAQy7#t>_}{(_sY1qq#fcY4NgAERJI> zi)JjQr@VV0-yf&q+qamVDFi8!i0)yB8Q{qCiC$wZOLpE3Z3DtZ`G6LTQannnO(goD zPp`!V)d0fcD7Vg6w-$`?Y0NYnYs`vMQaa$D$FBxNSU;M$uy%IPDq$f)sLnyAc#rV} z+b@=0vJ3X-MhvxZ2lLVE_b{1QevN3stML{UY8}RfZJ{m*&!5LLFhUS;M6=+02YLm= zuFW<@dx383p2R~9@5$P<@cv>*B@Mg6kr9XSAU9g3tT)MCy8)qpvMlbm^$vGARs|Pv z)ykS_`I)HwVf9i~(8lVZtOXr+2K`R%0-AcL%hbv@c)H9{R$9PnLkClY<}-#o-5|cU zda{A4GZ0{fW-8p-GGPGL8M6)|JW*lic?Vl6y9_YRcz^-nHus03ALuptWo_>4uJK9= zC+OWf=M;#ydiqPe7O)V$w@d@{PW-p2LkH^nl(s}VidSur0JqzOH?n@jZ)gub*CNL! z?7e2->qfp>z>H8Ryi(SzXHVjcy|58UF!T;j`J8_e3H9LV`2r($UyIPSaKCc}Z%QIN z2mX{j$NgLuH)wt1+r{amGJ0a9kxN(zU!zMR-+D3Kt*RN?$zHXnPkLZ+MeR|)*8&m~ zm#K<|hFMaW$nWO(*j+U964&BSg>!XqtDoEyVNF>5@RVmltE~OpY#DUB*<~$S#fPDA zhqn44s>Gf6d*=Prr?0AGk5hK?{dD)fx+S9weOav*OrQv17inQ8vG$mQ3H=($qMO6m zeDl9U2znMhaE7W8F>jQ2LcA#!1{~{_nD=8?dkgu;Ugb92F>eejByM%AHQ=CU9b|QI z;saWaE5odU?xp9W$(82NkF}z9j&G4P>uEKI9?+!Djk=AC)i6Ikm2^>c{1<61vvqZs z@I!00QhT3&)miAb0lZRire{J_sy|Z!*A_p1gpoJ@vc4HFE}~Kz+M4*P<>7{1`MtdZ zBI8>tqDDE)=6qi@YL;`p2T{MSWK>sP$|ZpzN3A~+j{c_lMl(7UY2&o996!m12a{|R z?;Y@A{Up7d98A(tjRB}*TcaW~WcU6~$KC2y=i;DYMt%F6Z`QtMuwpv2_W4(gUh%!< zYf{X_$+GfN&F!>e3T;ru2NjqiYg@CnC1<;s69Pfw4)R69j#XP0uO^Ym?&~tK7=r+!ci<$n^Z=Uh4Fz=Ma zo#!w$u?o^Td0Av9_72M=y!be%v3@ z7D{u^2ruPQ8j8L%9A;N0{P;M_^Sa27k>oKA`Lfy{SP@#1OATU6iZOqkicyP3%3+&? zEQc>*+XxXn+j!_swOOuE&axpG?wCgn<7n}xS~Z}-5@?*2QC#u9@keCS&^9$)V$&hw zhyIE34z{H|SYToV2K?Qf9g84Hj<0Os&f1My=XRq+WIf|#6zOTopz zHP`VbXs*m4+k*07B;{6TdesJ!MD~*|UUi@(_cAyd*x-Vj({}5Uj{+Cm3}JM+W7H`k zBCd|pq~TpR6-u)h!gDZ>BOQl%`*3gX(c%l8!uSOb89l5s+ZW8Rxy9t$8K-_OT@d2$(Vu_?{1^z)^BBlN86k-IuGWB}MY3t0H?gLT z&3dChoQ)#^^=M}sC-g!=uf%V#)zJHxZlD*_<3Yb0=g{V4)90BQitI~JyU|(+Dz9z^ ziu`91E?Y09J5b6!re)grbzW3yk>33u(+z>+nFo9OkGBqQP{X=$%(41lv`%NY0ODhi zpFFQ(xM~LZ`sS--IZoJxPQtOWlTqg~kr6$B0$G1DW#|@}Ru@6oQ~sJYTkIG!eT|6T zm%DHYjYnUl_PS}H6O9Wm?p>o)DG$A)$?Tw--&*c6_%^JyM4g5vQOp>(gnBS8X&=)EK4a!Ov-&CJ z&{9n8;D7^l72SzF#}x5;eUbHkbS^nkZbyy4W2#QV1F8=`oK}d>?$g=aIyjN4zNJUZ z%5|dlu;;N4L|mk6`OaC z*>N#pwPOhXB^rV8+VyPrzERPLAMW0VXL{Psv{skBP++O-QuXe0rI!#0bTx!Or4XNg@%7g=FM8g2=dwNR_gZT!-+Z4d3)5h7mgK5Fs{F%T*dQH7yrBP8{J!6t(g&^VcLPm z3u|_r^bx-c_Rkg!JJnGSm2BP*mS8#*Zz*X{od1a7zEZonu}?!hR|{uRu^u7!H(9@D z0=JD*wMNQ@{y1U`Us1056jvL3i>IOFUb#%CCe!J>OmlCyF~qEBK1Gjlvu)kk5P8At zRhO%|hza5@Oi}9~jlC%hFI#2=*K!5ng`u36k;50+j}9LUP4reTXyx4QJv7}r{iyDp z7P@!(@!h+rcXK+Yc!pii34U>yN8Nos)3AbmKO{Qy%#ak1`|7HXfu+!$_#rJ~7_p11 z98o+wGYUV#d0G#<9b9pW5@|2P@;5Bbg{Ul={ise?q_}gkohUBWr~?+`CT^=^Be=m~ zTNI;6=!H^4P zY^IF${7c6YksN+}zMh+5a~4&+ax#gbJX(DZj8(_23!JH z&O{F|PQ*$W{nVVvE;1}@UgWR)BR2e^PwQ&fW5XBQK=r1f<}0gs@S3&IWZN2&OK#i^ z%3KVFeD?Ct3O?OD`!2p<8IF z+#nR%P)ro?eySgVS3@}Mo_GiiZubP4(IJjo8$zjq);KsTTpW2WQ?%m95kR(9U^-cd z?t*w0XI)nuPEaWHp(zkL8ok`IEFu%+W~mo9ZS=|_aTT)FSK9$-7 z2c5DxS?@qQKa;BrU(8n`FZN93bA09YgL+F0=U(lH!^D<7jl{OOV3Ruwq^3?RJquhJ zi!f~}j8Q~LJ(Lhc(f|98{MR{$USC#UZLBms0oiX_2V5|JdG{`USHJpV#sB3mUw-w~ z|69Ggy7uMWuU6^z|E;V-6#D<-|EPhK&aBwq|B!!oe6gsfwL_$Q$GPlY{j%|e$Y5-4 zi0bden^uvh-5-volg(0f>Dx&Rjlj@v(0^+5CC~AluV1FD@L4ueeRLDD{FvF>lj#5r zfpOW7yNBQJJv)rIp8OR5xV68(_2lrUWy5!;mlKGFt5RmInGCe zKExrN@t96s4p{McXMg*9g1B{W_tEa*Pw4c6-NPq42M3S~##<0jZ|xuMZa;gpwI4ry zwoi=y4s~u5W|ELKZ~mIwi^43+DE-#6yzI{}j&`2SD>k2qeqhI(t$0&ZPdCMZNZuxf zMD!tA@mn^h^86yh!8`T*(asM$k7|kfUKNuoCX6=tB^`LGY+9uK{ocW0p$N1!ZYZJQ z6l#gHLp&-U-{?%x25_^_Eao%Hd0&7EWo3-xo`#%gJ+?Qn~;3L{s2D-JyLTm2gA z)>xPQwMN9BeOs!j8uU%T*I`waj^R*{ouJ~K=$wAfk5wuED(dsagp{9cOX3{T!Y*WO z!-v84AgkIw5U274HPeh$y5$|3w%l4+K@$_qQ8GC|(T16J5ifgdq85z#ECjE(Hw`+V z7QR1{OGig9Sfzi-x7|C=TSrHJrwUcQVt(KxPX3Y~4H5g(0S|{$!p2teX0>{pPtyyn_(~_o9YQ=BJYGbKd zZ8oW9E_SVT68@o_EL^CD-GyAhEOVA1Rc*uM5*QogZK1V>8{IG!*m=-e>f~WVgMkJ!Y@6t{3wOCGfy7$dj%LEhTHhVY=S< z3d#{JmSMPRTEh+9;PX&ct>%EdPSeq8CTa%-IInL3XY~4%&aDm@ycXrw=UQ`9WA1Ds zhx!3BncQn3-=KeN^2p=t_w+LDdU^EK&xZzgdz4}OJ`TbbZPd5_IQZV2I-fPJtBV}= z>R^Y+fUU#5{TlPv-CpE$9oqM|4!5+iq5i{pOvJvQ)A)U!&Ftqo*xuiLdRUgp=un7D zQqEzL(1=>Zu>~RI;%`cOwQXt}_Exp%39dXJ87&;jx*k2<-wEI8qz)3a%(ExOQiT+h z3zPDx&J=F?IQ~%k@m+48Z_TUmh#Kd2c~|_jBx1XofOuYS<&7mw<^{&Fgb~~j!H@JX3rlKZbpBe`7;Nm=D}#_%8RJn?|g zTcHl5lw_E#2VYQ=c;&0aF(5Nx7FRbnyiBNE>h4TD$el@{W=fd-JXYbG5ALS*vXHtrz#a1*n^uBM=cEB4YPMoh;|az z#t;QWGA#OIbi+-B#}~*tLrlnar}uyDJe^EO)D*#JOcJ$Tsd2hNfQFDw@^=mT-)Zt{ zBZLAhA>A0cRy+Jj4Lz|yt0PAjzx%mb^(t<@d*@N+T#B;$JPlVXbekM81} z{JF72&`d)OhCAvZbUYiu5&%0p_v&OA2NG{GRS4NBejk9*BJ-(a=&Fx;zG^wyNyZ` zH{-_AQM36;jtBa$N#ynN(IQf7%@;p6UlKvPe6+fpC@?x%fBbtbPVVhI+uWeejx`s6Gr2?E=T{Q~6e^_|sPyw%ACmT2a$(u*RW=yNb zn}FoTjFCv%jzy`D3M42?P~NCG~24RbqFjMJ)4r?QdQsS7KL{CLz|CBw$j3yNm^;zjdN} z@yLJbxF+W@!2ue{b)Beeo2>iLHg5)qq2GQZFnQbx|)m*Ens1HvMgmPAZatO0| zxmHasK|a8C=4;I$BX*g^Fbpc{^DaTbB)Sut#M{A>aMrols8G{W&k$yqB8*OFd}Z`( zFmPgSXd{JaIBdSkv{nZBSqC=zopam>Si00I*$|WyzG5(;K#Z&2CUN9rwS-|~JXTiZ zF)c123epm4?=g}1_t)cR^q9V@xem%w5AYDpFTU?hQh zHX40ffAVXulrDdEk5G~9HhmVt{=K|p-;1{1^!7lESoV*1WM_ysD`F(^=-d3LGgNMb zVH627dQ7Ex^*7+oa}byOyz~5Ue~VjLi_CTh2o;so>eWRfijTnY`g!!ZrnnBVZoTip z?Ey|1o4*p?9f-Dv`x@6LS3o{Eb8xK@*Vk57V&)f!r-5^m>1P-5+v_;lNbHGXW5R`? z%x6BR#K!-NIeG1I!|P!k)6X3n(FrlzJA+jHWHS)37kUGQTNwoUveIH-IveJAZ?mVE zR+2COe6+|^6H!kMLpr%^gm)wt=V>l2`yU4#{YZqEg)#%;csel|n@fg3GZ`+Bot9?j&mMV7B%qBsbVFw~?#@c&FqO6;1+)vZzna-AUx1=7di?EtPa}^AYXR~BT z3}W*J$P7)>YuZs%%-A#-DrFpn!}Q4MKiLp-2OcYPac?ETE7fIUkH*Ye`ivJXvCZTTQ~BnYVg%MutaYO5YI3&STu^#CFN2VLmgD~UsL^}} z(Jmbum$l|QFbk}8RDXkeQ84~|gwUUAHHj>>dfWD@02Cr9ecX)1HUuen*o?|-sO9r) zI_1{b@ti}SCDqClH{F|j;V^TWF4yctS#iRTf8UI@xAC~Wji>uNPap5y-;o4;p>(-p zL?S;?%G0MVO`j>1!}f9-KT*n|$#f_=etO7K%pW<;ylh6)QO<^6ygh}8hTrkD8NpjY zo7*W*n)1Y^JkgXxn{r4gruH4FU1QiGfuA-bCt2UrN1J9YA~yYZ_tjlKY!;GS9((n$ z8K!KOTYUx@{STYbqx*Ka^^wwc@9o|Do21Djr`3cfkT6>(1V zoVVHJU8tW;|6RVS<30Um)k^3YWMi?cpXPFfFkA}d=(f9)w(NiNyy-{1;ScUrzIh>@ z%y%zo(?!WKU-@NInc1;PrN_<4>56J9zidXwgiWQ*@Z7EMvuxs}>nnZB%s9ytrM&5z6n@%_KrXlCwBXwe_qrLuC4p<8d!sLt^ML}=$IU3X zncZ}6_`-*dB=h5@cb_TA=4~^wH@BPe#3}BscGJDl7hK+%D(#D=b4*VEn@QM=pu;R5 zMjZ<}6(np%quz;rkS9v918K&v{Ek&}lzpKRxdECp%<**S_r!bM zjB>ZEa+aHVLG;4FvTC?4K3i(xomUh!4xT-Du={-HV4ZesoxYq9 z6?(Sr!nH4Ku1BS8_5`u=h#1)r3xC${1N@f61voTABsq1zYy#(7uY z^D8n#C@uBdSSZdF-V7r$59@P9DE`{Bf)u&(rm507`Kz0Nr67x&2JL5ckx$23+z4U0 zai5pN4B-q&J9M_0GI-@+;_9Z=thqW)A!=ZKo^<5NzZm>)3s;&iw`|dk!@53K3Bu@F z5IMAU`0OCmx4>GM(=_Z?5hq7;K(Ei;jW=!rG^Z8?S{@csQB&k5P*S|+9@|@@_6Xo* zz}BP4ps;llpLvzmqmf9`WW0N)*B)~}&qIB-KxCfQ=g1P@w>^pt_`oG)v2)U9M))7ifx=^a4K8fj2y39KkJRxqlLN`nU0#^%2=HQJ#ld0tk2#S!E0Qo zDupy7i4HSE5!s5*>_rr2jq~$n3VeIAc-qN*7K|5V%(Cz@H5?u@ms?3?!(d9Auk;d( zt+fT2qkxEP7Rv5`8C)nHADNc*S}GXtwcM?Dvtoqew%K%uNhv)mteo6lhSvC2b3sIn z;>tp9_e=|H{{xjadvW-l!6+|u^T%w0KR40hHsO z3eFb##^_T0sz}f%jBXMh+{+B3n5w>17HN5Q)dQQDn**q=OeKlq)R_md3o?w08-Usd z+O$^lqXUjQd9Kb~S=MO#t1cm=&&K)^cbtuA&V_9aOA@}XEmrX~Z>@@M%||WBO|V-D z7rRQ8d{JSspFuE2;-d^=k=uEi4psksL7HI{Z8mj{=1oU_H=D9ZncAvUH!GIfawr;M z!)LC|iB>YZ%D+w{dfB6*97SH-;q&7&7$8w^8y6wSL8Wf0+?P{w! z;UR7B_1JWa`#j8oPS2|{=xE9Ds3!6KA^OZc!0)hY(L85AyT1G`k;yFe&Ue%3#kgp?N+pUfJ3ULVw|)g`lj zDrKGW=rzrS-l(!cwQ2{sfHJDpJ8}J#8EYR`*af2xW~*W!g$Z60-Pp;vnU<7bl3xkG z0NGHC{irKjtDqnp$z6%2OQsLpUbmS=Z{oK7i8J$I5SxCknFqh~VZwGv=PeeA9&)G5 zhA%QE0VBk5aTtPi{Wi?=#2L^s15Jj z1W|4Ia?|M~`GweR)AUu@PILq0DlFZSGGaD*53Lz9hAQG{SQ&?16rO;?Q(mL0nn78^ z1Q7nv?(6r8&$|1adu5q~a-}#^KCEC?JDenWZ78=bIm-4TuRXnz)f*I?D|4%vd=xo@^zcHVB$q8XC5ep1>v&GPOYS2LPZ zNlEsgHV?adGNq9F{Vj=fPgWo{!5#tV?U1ks2CAPkls~>Fb79I^Ys}=_P#v{0ARA$` zola%Vei^10=2Re%qE+_3iaZV0+HLFb%FNbdY#$&nzXfyd!=gzmfUm@bZ#Mnts8X!b zcqR+a$CgAmVQch3Iy{}6wfREDPpAEpGK07t&yK|$X@hsySl%<6A%1Tsy{vQlOUFQI z=gfz)4hG-6PR`a>o4-bbZCUpux-*bjyLf@h-$H@;t1rIb=FOn6<tHoisa0`|OJAymnQ$_(5Ugg}vT5ZLv7{ua<-RzK6OIF=>~ z^=;=Qbfc{jE9ic7;2i0@_^(i?b`+~0+-3wW|M@|6KmP}+L;vNeUQe&% z%YT;j{_-}}|C8Q6r~xRTo&U$d;eD7z{jl?>ZeF=btKVGDjs_LHMSCdcKfLyc)%TBE z`%iYCJY0_}2kJre#CMkkzdY*UHfLw)<229J-?rc`$T%&bamS z;3P03_WKM9x5FEf4?->|d^_wCZfxbLJxI_{U*OF={-u!ao723vB5Q!RKA*={TGHAN z&VkrUHrJDzYt(B)y)a?5N4?TQQ<&~$=kRia7>jE$bJx%Q%Glm4g;^h+w5QV!+_0r- z?gEkrON4Lm1}Alm$RN($&gI^wGvvFqh`pQ2g`%}Vl%ZG7)zH$$u)wNbE$Lxl)N^iJ z2)*vCIf7>i#v5v5!$KweZ@}sqF$;k5+yG%<+a*YUw*26x23*?WK+&^>FK;UR4^wtJ z^if0+L(GAoyW}H=RZGT@uk%J#h*ZqADBL2vW4xvlt~XibyqN7erI)sxeIYD3+NFLG zY(-~q=BJ9R$zxnZgfg4bBoaDE1tn#m7VC2CcoD9lQbl2}*R@vf(6R`H)nQdCtqz0| zKfm~S9l}u&kuEov6DQ0j(7n{sFO&oScuYo1JqSRyugA)n>&O;EFGLazj=s z6E7PPldsWeHX5P#9APp7gB<6$CuBBci{G55UKhzki>snn(OqTpqi`52Uh8k*ac;VL zU7TY_^!}oZz}}lnn|s@Qw*zVwM&6sV#9GN%a+MCHb1YC8?xZ<;>H}p*vYFc68aKt|nMqz+I5=wzqx^XUSq1jxX^zB-# zVy!8xUvk58#n*1}mgc_9H0%GqKii6yhptSu)s%Bwx(TMUbRcL8b z2}Mz)`HA+_(F>$?j=~UeUB6s--xtY!tsuHzJ>$Q5v(aodPx*Poe=iwZSF58$A1;#; zL&SBfEXv+d%U1=_K0MP-4JP5x@asggU1?Y>Xfahc#RG6>C|U%Gx9F$=^P#H~(uLTU zrCb;EzCWUQT}0-b5SkGA=Ol|it`R&!dP?4Ga``U4=*IQID;o1(;uY<`=jB8jCKn=u z^kfouP7uG&LR_!J8~$DmbU&@y-i(yr7wj#{8rQrgh=nJk6Jd8)&--jigUohsGj|m3 zt#!B8XlaXg^6gDc92H6xB>x*4=7zTlf0XtaIqSz=N=%Rily(+U~ zEuX3zXNtC^P*W~)n@paqqcC|l)$ZpDhf^Gi;W`s4rJeIghqd5nERwIzG6hJHby%%7 zwde6>JuY=h=4SygxggWqf>Iq=cX{AxWtr=cK(t@Aa(EVon)N;FNiFg{y1DP6f49hY z6X!C8PUD;^?s};QH4DTWU1;gvNCinl;A7jb6IagxBAw$8E(!w5t_Lbb(5HgQr00$L z1}(XQ?Jce&N=;~M_NbYB`3ap?^_J?e2rBFM##+Hp)+;YQS33^3% z!}sRIs=ECyEHDc1PFKRF8BxEe8_hVl6b%C-&nfwC05rrkmD3D(7taIiImx^Myq_zI zW)x>#2h?9Bi)xHIFvQ^J_B zhRo(b$+?8YV|?1E$Ox|&-Da7Q$8HUp8+hF^N+1fO#Lbo`N}KN?wPtf!qcI1{wLo21 zh0O^JNa9eHCW3A4dgv6B(-_~f!R&g$Nv5RAci6?Q7rbUls`(xuB@Z)twg_G}w58Ow zW{@X@tq9Odkye+x+zfMtCWWC&dXOJfZG0MF%d1;Y6C}Gdx z*=@6aljF7zS!~S81m27xd%inK#WC;flANg*Q|_`@Z}N;uu00T%Pd;`#%cxtpXmY0F?O-%1j5an;>`8)aP{?7L9-m?SG zdY*5CQi7m{4tf0I^Trq7EPvkk^79((v=EAsFW)8^hhR)E`7#iddI31^#Cyg>iWtKD zDxak18gqCNgv!BH{zFXU2Xzq!grGu>5%i~(Or-|I4#l{TIgn zT3KEFa78_2_kJEAaQZV`d-=F{fsPP}| zUjH3X<5ypNQI7xbe)Yvyv-tl@`ur#U|5wC+{3LE3_lM2=jL4FQQ=nuornt~1b!!Xn zs2IkC8u;8Aii5Oy=!cL5Jp_d$tgLvg@zp9r)ioE>nxhiz?wZLYIt5s=@-02oP4vml z)8Vv{jZeShtYy(9*Xs1=%Vj)%U09bhp)Nw#4A z8;M3foD17b^z!7{qet71@3+=Dvi;L>TEE*^bEGw$BLAQs_cBCf?#20N(4Vjq1RBih z+ttrtVSl|Gv+DweATu}_!<{#cHg!0j=6rg^_xm}!N8m&4gcdCb8Y(3Izv`!PVj(82 z1iuM85S}2W*pt2X!$*7fBn)uG(&MU(i3wctY7qv$^{htSwOxOOTZlW0lxK;f!7tT# z2*en;p2eI93m?g2z9O_XYvr8uBW5`EQxtF;&q^jabasD81Qf5e$vB%L1IPfgg^7ZL zvKT^!4&U_0+3*|`6rk=tIEaVDPZ;M8R0oF_&FSP$>8W!pQL@$b{4zQN-9+M9;93@K zU`O%T@{7ACaeM2aElxtW9{oMO08!T^wnz0sxw`3)D?!LpCg`~R)HZ^U_j}aDlasV7 zF56R?X_TTi@pUXbvQL?>r(wXya8)#F1m^#nW?Zh%y`tv60nUQsi)@@5diH!YATE>D z>5gH}$33o7ha0@o2dyMZBEz^LA);oqDsiQiO$ zfD_&!JE5ogd;RW&7v6D7z3sz%3yqjg`qXSF4D#TJhd&R?QnN-=nx{wG?X5?TTHB^M z@*X|fdh+lY(O}*OO+oEHrsn4Oiq_2-(?vU`!lPfoxFE>+G6$KxNO=ul67n?gUN4J+ z%hc{6%A}v3j@Gi1?t&+cYSEaBqt+9-J`a zzsFmvf-ZF0XAgq57gm>@MnRuaD$wtBvUKrQki66k0=He{F z#-wSa9q}m3UYn@Vh%*I^iVF^T2T@r(%)IM-jSiBH8Ihe|L5;W-i6!fb97cT7sF`>z zcDd*~9XosqQDRPrxecUOr9T@nKZOl9yTe%K=?)+WoY{k6V|%&W)Qm+QjwGomkXEB9 z4S-CcW*_ZmEv=dOcyxA((0P;Z)fJAT?6*Vcobw_8K_{`6Ht%-1UD>| zRk^I%j=-|<(yncP-Xhs+e&`}s%9hZ;ycGoIt@v5iO+;orGPtYqX@gKK`ec-%I>&i7 z0M*Ls8jx3rd4bUYF^l*aOEqbDMr@E^0zW(Y!+ER1*)Euj28O03nIO2^K&ZK)oHTu+ z$%*Jq>6FYy%O+B9HqD_{ld@=hDrBLVpoSNEUmDVGW5d=c<~M@Y!YjjPdcXA;t%1j3jd$yExt9%8VD57U6S3+a#w7V(TDOK)}<1 zmV2tfe&ARipzD`LHZ)F&aO$S#wiAuWoQf@r?xOHb4?L6ahGWh@U=?T88Ck@Of-aWc zEM3C41^s=a$cu>cyj6d5skp0$o6**!1Te*RKmtc6U$u5#Q5jn`I>I6b06 z227wzRH0v{Sg%0FL!w-0uKUAo%9j8bN1`owh17T<6ihpY1%t%pX;bs+&i@A?q1H zCH7MvZ{|Rc3M}YRDGz$|8!(|2nIhGL>G8~*V2-ILLxh2U3req#30kdfAY2`P&!=6i z9LW$AS#g=L)`9+KGp)KzloCRlg@Y^sEFTJQfo|4ITPuaOiNd7$3ONXrfx1{L;QSUV?dzC>ga8@!Yg|^!udH?z znkh@IL&6cG6+C&xg+#oJn=VZkbUr;jrH@$A{4SB9+pDe0M)0-jzf~XYKG}J)cSDYf z5355hmlBa*$J%dL$68Pav!IFK%gQBBkZDW8Z$!}%f&qzB_`Vi=|MXK6K@-{NEEl^hbfO7o&5ZYIw#i}=K|v|zQE z1?z<%$w6WpiI14-7B7~UcO1YWXGpgGOQCCUFDPRllay|j{OA#N_! zSbJ6b1^Xp@ql1)%ERd|^XJ0`5S~YTs!5?3Va=cHZGEpjmNRY;PO6M}o%L$0uh89Ji zQN(h0TA_ZX>3-{ZurawkZB#$GL6i!Ibfpz9mg}-&Tb-aRvGx2qL#R~3^;^DtecGpG zp_Z>|ZUpt=W18V1h|+d22OO_qTfod9*1%*NhPEqCx2)B2ei>32lX2eGC`^UYe!)C& zS}+N5T$lwd_FGPYQ1_+dFJluG!}OK$h#r9{{GgvD3M~8ou%%o z#$8;CfZZH(LxB?KL3j!cKSUsfLl3?4#wE15^F}KouBzlhT(7UZfmv4X$l@yEic7M1 z57co3;2>Ly&9i!MQ}cj9M^9(ZZFn^DN~;h+@>4hr)G zS)zHD@4=n@0T0E4>97mbo!@k6FXfaUlj?ui+K*;310~aNu>9F(Yeasz#ai^1gKmrK z^HnRPsjhBZN6bg^d&?`t@>^wp!3;`#6A5Dz&1o?=<^XX2ilLXxF2Fb_H(bv~GhnrW z%BfdZqw9FKa@QbUF7ulru}>!sg~-&K=HMn62M5s;bc~MTl?qmKg{2^Ag@rfi<;1j- z>(cfi%V()lML`Fs$-0Vz#v{eH8g!7?T6(_En!#t-qsLPsb)hWsI*lvqm1P@g-Gzq0 zlCA#Lw2Pn>hwZO2l@OJ=8g2C&^Q|~w(4rC59dmO6juO;}xlHm=2_Z~6-E(Ya8!z3o z$i$c9R+Tdcaa>>WxDWm4vlq_$qG^ov*pKs7tAMN|QqmAgl1E1SZLK6#&7GLG<&_{$ z>y@UnCMaP7e>5UIGZX&YC9lWH^P|NEhqXScH6^~ahRUuc@sXI?&lG4jk7~$ubB>z; z9M$+^!>6>-$Z$lxa_>~+2v@j2du={y9(k>%=W6q!J zx6Xb`z_s^*%$t;>(cFlCNnYvn&8}YWu2F9rUA}+Xe7RfZ74@j&EsX2XEvdIL6wC0r zPB^z>+yuymcGtnC3?X%goD4$n&?*Q;oS(GCVBJK0V{m5C5^XfG?M!UjnAo;$n-hCt z+qP}-MzYZRiEy)T!^#zg##fGeiQ3WA{apc0UHXa4(+9t zgLUuGjeJ(AR%XV9*>^&OEub}BUPk4T1n&R)@_MlLbrKAg(*3QZ@Aey%&d43Zds3E# z4{n<&pvm!H3&%GflBlpt9&i^s-kbBdc-jdyuNmU-uJ$Wakyg0SINct69C^YQzY>)7 zpM6KJX}S|>Az@n(u}r0LY?`?u?^T4C0h?~@$BsrW-!xax8^mDb|OzopZrnRBt$%sFtmfNVP zp>ZqQq`zSzO<_+pW52?;UaRsnuj>LKGMnX`C!HN9SzT`h>^SSSL|iWl2~i%y<}>I# z`=9?BZORJ&Q6k1&>qj?2;B^)PS=!FtH!T1p+;is~6@tioppkHE>Sk`G!i7+=oaK2J6 zYk6!{f-T>qSDD~zf&38(0XKblJ6EykZcX=i3o?A_ zQ1u5<7ocV53>WM4Xgm?0()1VBO_O@B_NG{+RskoWmvK{nzZBm*f{?G7ipkXzB)Y95 zO&{q+n@7ruUpLEgD1m9)=L11IiehZvfBK!ZgWi(l{I5fpAuIdw`}%Pw^X8I%-$&;*n#cX+^J@F+>*O|}tK@t8t8ce~z}Ne0p5IzESQCz_ z4BVc@s>W|ENB)z#!YXI`b8n)i`)e5J6gFhu33N{ZNC>)4c)RDY3cK@Sdns9OY1&lh zzQNP2I={i}T72q~Tn__md#Tgzs=CRM(mfv)@&stL$q9%wM5G&K8%JM^M{?f11d0EO z?TX{1y>W}hTaiX)Y1!yg2SG7sWq}4~3S^K>vV1F%+-46XCZw?-tgKMS zr_r_1v++pfG_Z^Su1w@E?xqPB1g=caR8X7A*VRH6@>87=y3=mkDK@B69f(-DBr4|$ z?}9JpQ8Om1#X~Hnv`U}IP3}OblpNp8HujueY1lZkT!{2IbTTQ=8GLU(Ch+(#@=iu^ z{@I~$Vu~jgpQ~)19&G;5{Aea%goW!JF(X5AI@J;5$pVaL?z+Bz-e!@at@_ei624irZMbh0Nxh<=JadZKSdkEm_#K zp(IKD$D{=LX}eiM<6PS)Y${_CCJe}TK2(cogL3nn0NZ~Sl~de>g8b?9u;4<5hD!Og%QcLs9pc?RTozmYb{0!=7Vf$D-`}j7<;Y>% zMYNtKhR-TqI#wJEJO|FzYVu_~cTBCs65bdXTO#D2N|3n8ke~CJuae;KCRNOlqP<); z)cYVfQbnzu2DnNsQo;x~gqa=(sPr3+r=)PspCmky8vZ4vFU*q!f^(P`1V_?Sd7>$M zP)e8in)5^P`Q!Daj|dTj{l-LVL>7tejgl~~c$`Dg?4#rGXe#G#{bY~1Fdc}TDjdUg z7L^bo0O4c#%$HThUhRmB0x^i&}HT??i6E*!2Sc1222xm`;~;h+%2CLN*>e zL0V2Biwk5|47E>ST{b3yo@0ulS^U~=s#!JUHSluVCpS2Qhq8^^6W`vZm`rX|9($r_ zudy+EXVvubwT;i`gY5^SRMHVuZjo`Uc8n`;@@JRS(|i|w#}F2k?@8DTeC0}h?Qb-N z6ySskk$1%(G8kXaLBI4<7|@nBfbN(3ZMRqv|gQV-*`tDWGuX!V^>D z7QG+RoeI@buNfI_be!&~u(k@hk7oNT9EiFpdHOgD>FS%@NFg(X6k?Eb(9(Kda?oPZ z-H6H7O{_pQn9{tMu;!~C^$yt21KSbAZ*}yCIq|qz4z&A2>Ycts;_#1_VU_&H(Scd; zlJ`>z;G~#~_;~y2Yy0Z@%1WP=NWJ^*X+CLXbs?N+EM-=zB!sW-if^ZtIP{kN8#<3E zYBfU5_VM2Rb|>_62FGf`n}o;vuJW~%KT~%}87u_PD>DljEsiS!U1_o>i)&c_kkvZXQP+h_0~3g81!G`#HNlnhWlXj60p7e`j}OI@=t8FELt{` zkSUsfQ~AsBqi*Ly+7+#M;`sseN%8dM@N<%?IMj41ooy=@4mW_eTnkc@HEg>5pMJrr zpnpQxkeC&+zyCtW`E1!<^K7qr_^$ZYKAz~4-yy?4=UfWMz`I0EsyqBkfESJ~xU{KB zl-dtiAN1$<>2%ZMgFpQs5YdXEyu@!h*#Ru|J>Qih9;8VT^@vvdqlim(6Gl^tB(lJi zJ1Xqz!UHrPL51UQrfl1M{v>3Zp8TiJEC{U`d_2RbYa|rs7p2&+6au2~X&i@6)9@DD z)lsxK@cW-?ivNe`Im}$7D}9DA1b67gIP2Qm?R8w+mEuUZLfN0Cux+B_{-ovQs{{xy zz*56N*R@;o)%C@FL2nTRgDzm{si5np+8B3hZIp>;^Zg)CvupBk=dipqQ9Wc$++4Oc zP`Y!)ifra*(~J;a%ljDD6@A8B^%pd+0O9aBTyc>_1_7Sv22S`POox;Iu`V!QVcO4& z{N)r0N`n6eFI2BJeBanL2^Xmxkd_kj6n6tDFKtO(Yj<;(^0aZT@-KRtfji;fE1ub^ za0Xb^C}+(3hVCc8T_NZn_WPrB7; z>7oIhtEUEw>XUvwxGf?mbc839R%(yU)UI@fKNhzh*cIoH17ZUA!I=D~Lemfs9N%n& zJqi=uWxI*U$e6)|O)T7adq+y5Mr5pVP=8b1JI><@B7mcvrpZQQ#Vy@$i(Drqt0$0uC}n; z2xI}9U2>tq5H2gv4%6NLMmV>XRMolkc?jPM=6J^Hq3NbWcq@`LZ@A_RsPh376DA8W zN~O;wmAR+a6Wr?TA;dfOCWFqATe*`OKgIsCj7^qj`fiO?3i8p|%fAXbAt+gWj+wIU zaE}mx%VOfA^y$@i$Yj9ZKnIgnx0y{MLj+P&q&^IQ>#*WgAe2k|%2lU=QsKO0xm_2& zc7scgpfodq)7KfpiZu9V;tM818VykH_~4F+_brnyIsVmy6abOr7tOgJSvn<@Lj8AA zG1F}vd-t!jnv7T?uhK30sxk?8x<+KOhYK-I?ubnbMMo5T91w4>tW;t%GX6OfCx%-n!-z~jlljC}CC6gCJ5s>D^AR&C3>JhKbJW4#lp8&%3$ONwuOBtS z;5HiP!i(O6cCSS^1ZPNP6Md{B;LmwN?qDh~!0g$_yXs=%yeqDXPS@3mJMo&MC2tON z;Q7O&G!$A%(--t5n`|Ll+WGe}9l>^Z*Gt=@V;O0{^FdPiY>TC033_yv{FGGiRFV?V zLxzE9?Mfk+o-6|__bBu)J(C>d3dJ0cM!6$FKdZhIb4uI90CQT8n-7fZRo=CdrFelQ zN0oJ}b=7c-kjcITkJ)XZ_YDU->~K^itKFX!#}?^KN8of|q__{qNi4_xd4#0!CA@Iy%_u^VcV7!pAl$ z&c@ViaBaXvgBPsW#6e;n6Zv>N0;&7Gp0u5G_iD8}31Jxdh9?lF^{ckoXT2++19#evvbCnJ zKi9q7A!sC()Y6v9Ld%3ZT3Ju3Htnwd28$ZZW|c6E1J*jAPNAVDe+b)1F4dRoQMPAYZG`L>t zZs(PLtHG;LuDMFlwz-O_x1D=x0>WCB7UVH-X@bAy*l+l0LE@d)^;lsH`A-zM0gZ7I zr|3ZUvefqFm~lb?`}fd~%LF~{b9;9G-LI3ZPg^Bjk?E1tDqFuwN4Qn54GISY~ zI(CEn-PpBlyMOgZl^YuCb+hJU!FlAWFIt03g8esY9s(jIVZ()FXVdAF8Qt$|L(H$h zuf5|*_@m-fuWVw*&+6BjNk9;g(k7gD>$W?M>!PK@AY!_sHgZb^J6uZ zzylR^Hd&f40Mn4!vw6azgqxbaP)%p zoM@6Ltq0J5u*@RDoYX9A5?d^NYISqevl5=<_VX3fHv_6#A4Z|sA|aFrsNmnD0L@f zt~j{nzXwc-3bOgjj;)&A$+A8h-?&QRcVuJ9sI|-M4Yw6=+XR<}XM}X-*thp%Erd5} z{@qq{4J<@7RC*8j&;N$=PsnlQ9-3+K@gPwRer^e`8_!F88XqXIlM~0Z;hMUrsG5ow z*?mPmTbo7eU83NJ%>8y7I#N*jgTumz^D~oz0)6e96p#87UjM_I&(+q9m7)DepNXw3 zCE1E;d*gpG(s_&+_J4N}4~s)h&D`0nk$$Nxv1T3LqN4NvHXO0j8FTd?6gTkqAI;dJ z#4J3(U?UPS)D;xfU50WWo;|HQ^|7FL@9xFquTDUJ-^ZIOnqtfRceyuMQ@1^sikp5}p@~U2 zDRJ1tY9;dz5cVJ~v+l)aEm;;sq-H@?UzDv4Zal71G9soVa`XyWTy&q}8}EKr8nBU| z)d$rao)amfQC7y-o5Lh<+}{qz_2k`5i5#PMmaSw8-A5*(r>1m~I5AQqo7JPCM0Dil zHY?TRsE-N!Mg7l7X1Dt*r6{vZ6g1TTf5cuYRu@*a+34LE<3F^_c5hheUa^+m{O9C0 z^155uda>6j7W`;JOy2)>s;Q`mUBrCEf6}Wsj`I9?!68pH#x&PAuXj_$c;U3#3qi3y6FDqcywbi>Tvl_~D;?``;U2z+oJ8 zGm2++gu?4yuhXo??6q#f*fVivaTyY=x^TrSURy@jk}>ZGrPBg8KMQ_f{*nKtg*jXM z$W@)ExvD6^KY{$I@HqEBUr7EA*7$E~f%jiQaE%}MN}P1ro{W5!$K>?}FrIh#{)%bl zD@voHD|cjK}{;KpWmS9sk=b46n{{p%ORrZ$OYvu=4KR=XMXZ~eS7&?Xjzi2S{_VKaB1D2Run(TJ}&zdxd zc?beu3Hq(yEmTxaeXIXD4Ok<u`UenpKa&9Ldh7zPAad=bF$DHC zGrzu=Z69TX5BYDZ_#!dYxR5z^sLQSeY)ea+LMOt2wGd^kN5=&&S!>9&@sp^ zTJ-c}cXWF?6_9r4P!{ywO7G{ihoSqke(uXx`lrSYXZF#L|0EuFAkKYMUSI7g&*Vut ziq6oQEnx4{ZG64)&pIF1n4`(N3lr0pOOs9P8S^%e>)ncFOo`k7`C;;p!;bcl=|QH> zjAEU`e~_);N%FtD@F!TE15eW#xYPFz*aWb?=;UF*0~rr!!x2{l6;+jaNezyFUsT|z zo$Wg{8zMInJ<>Gc>dJ)L?NmGBYc_?toU;p*q92PF`M2zl%pgpZK$FFLjpoFX+YAg`S=;Ud>-I&!LpOSwfeC5R z*kV}st4o@xeAZ$MsVIEnDOYuOmdc+w1d|{JzSoIFaw(ykE$alM$d)q~2V$eU*87^x z%JWqMPf*Iq56=fMs(ov#P5d#%UM=GlFh#egB zhFz=z^s5`7Y1g9jIDOgNFn6Y_+L~Yvf?5NcftFDr107N+nb3#!Zljgs^tzLT%umu} z@1}*?&}W*t0KPlM_1))n47i<&DXLE&ihJw|EXqh9_``p zO1*pko3z@(^ZX+;Civ`tT#2ucytusKzOH+F-AE6MrE|^sb_=(mkXJtA5rMrV*sH*K zYZh@%fkwC~K-a(}G1Dg7=;DR_B8@S2p73ce^JNoLI(T*s}SiKXa- z+_}5GBtXRzxOo`dkZQsOb;-IY7?Kn4C8z)GJ5Xqwf#|i9j?Rd3xub>umN^aABkF$J zFGK42Nc=ig4Blg%MSMOC-X|i77|>Q=%P#B#28jrq8kRK2RJl!Ec?wsJRe+)cmY(kT%+6>s$^N+LfPb2}%bECWl>bYZ*gP5C z6QEwWIYoXeENxekr4X8!o+kQHA4Fm*#EU_Xk7VzUx~c4J=&JNJ@I7H3fwkY4Rsp}e zkkkI@;BL7b2}9R`1vKmYw+Yo#4qv_kMYQONOQkWdq`(A1r9hlC6c56_IS!Ss8X`dn zpfu51onN`rx|c_nWAx7BJPJ`)_Qz|L2T&Xxf2&qL(&P{wdDp0 znEP0hmZ96|1&p;|%g*MYr;~_!w__aK%Z6~SDg3`sEV`c-XL9U29+L5xpQ)$6=k`xe z%Njqy48C`o7_GE25*XJiC|{jFrB)SbS{Kmg-a(noKP zH|0t3Rt8?Lu!s#W6wL_~F}$>O5AS6et%~8k-Qw(Q_Q&6=HMwDplsBQmV}Xrxx!_{l zk_As)|KbFpCGJKiP}b#Pf1=C?=U01NH2mCoWJMOeU%h|1AEvsc5#pBHv+J?3v$?+D z4Kt^&59dPKlCUPQ*yh?c`@44PB8pi9Fd(zE4)@cNKazECgtAc zeLJw^8);Ox!x{n4ynh!k+`~T|ax4fr?#^hF$(Fo-Y4aB2gP~BiR*!$>&5?uhcT~t` z@K!KgF$XF1S7cqvIFgM}=e>KyH!o3)TrnvBj)}9LeIY|kHU!b_Un6noC}N(KPFZq_ z#;Srruu-mceAuAQCm|X&A+8%UDB!sq3MJ#o_7%wr`O!vUEdXnGNHi=z*sk2?6oYX z-cP+E@Wa_JRGns>Wq+%T`6~O7TsdH8sm%0|p?FGoQ;{J`1?R&{A?x;Pv;bQ@_-f@% z%8IVc?f4T-3Le|vYbj-cDLUf1hYIOfu~|`Ps5n{NxZ2=+wPD^-`wi;r?;t?=Ly67A zPb0!G{~ug5C37B;f0T~BllnYUSa^tjAM$*n2_G&N`d&{vz4N4Z&$Bx@p>%(B-s(4{ z6ZXD!?WCbP0Scq-AKe#_9O*O+g`lM#hq2Q9gcgch1a_6|fo&e&Jf)!9c&r&IDd_T& zz`vM%jzDd}J6JXz0?IHAoweuybdG448lH{mWzu*KueWNHV5blTf9L5+VvZTb-+9Qf zAY3z^K{BKq^PM^Q$|GC(rNW(; zY}$VGyWx{Dc#~6Cd$RYXrVn3a)+S)hQ)KHw*t*gP*|Sfwbh=z!U*ah`Fmo6pVfP!& zFX%31t-V+YD!7^*(I)M!l!LYS{<%C0m;PI-qi*19P~`dt=cEB%Vu_X#FFA4dA#xxv zL(vyxSe-xAeubrDC8EoQ+xIM|K>ao2OD0$u&?XNVvBZuxE;T+_;H`^QZH$~v zq zCX$hI)t-(AFR=cdY-A4gD(%Bg)&Eb}lv`bas1>qN9`fv@bU4?SVHZ)o2U;x#nQ6?7 zpkXq8SO-cL?tX&Uzp-{wY9m8Bdr&-WHY@@{89+CKnHA7U-}KUM!)I3P3G*8I(LPZ} z28rjKCmw*liV)`*EkUob`H7%A%50}I*EkGM@69C0xVoW1Jr^buNEAU%dzA9FjRWtg z-o@qi^*^kWFrLW$ZE!(JlC$o|dCj)G3)AE~&ZWbS+&O_LPCzHM5Rmy&{eZ7psxXc~ zt_SC!(Y;5BZ|x2g5r}@d9K?6NAg^`DZe%G_ul2t5exZoHkm(flE7;*r@4Ogip`)|>1r#nVfl`;}Eq`8q z8j5~6;=KYHZzYR=7Na{_WA4Fs!w?MP^jC~F0_*kYcI++u?@>spvDg}U>>b6IH%U8AdI$EJNrYt8_c@@E*E)YaK0qc7zDV$JST^4fTLyHVA_l19IuX zk&kn+A%uCi=ri6C-vTO32JT>-Wqeg0SU;kH-RI%lrzUa8bt>nx=n zoB`jxbwAnYAX}w5UeWowXV#tXyKK#}m1Qd*z&3ziBeLQ+u1eK}fQt*5p?KF+m72HE z85A9_xU=K8lKQoCq{Ya4(J~xO6%){ikCu+qJn@pA9cMhkNQ;x+L|{Ta6?TtfdZ_{E z>;`RgD^kJ*PMC6Dors{8#>ZEohh&8_2TptUgJMNqs*ynuGcBl8xZ|$D>sElAq5)e# z1nx{zvKmuQZa(lSKuPZMh)vfe{zN-CgoZ&+C&IWVj3;_H*x!OHDL~Szu*^JxD8rA% z#efsqaTbWW9}5wednHTu)ldtlD~Agdwu3(TQR0ORBXMiA(ga3|HW7!-j|3iJXHrF+ zj@k>yc-xQ_VKz_nV=na{t&Gr48bI8TcNIOOPWK3WR{5w)nyzAyvnyL3aw4H) zxxhs7nc(n^2?;BV3R6_Q!rAtuPK;X5w)J7ZcALfhauGld9v6iD_F6m_CObPsO1GPH zn?!Y7h>iR{EU*=4>0li4_t<~nfnB}m$&rX~m$ke#yozERZ{9ZL1-3Lcaq)`CJVmri z_p`NhnXW(8hD6vs1trBb({);8cc+TR)iSBA|F~Esu~741-Q!JD;rmJqZOMYqlayb~ zkjG!vfux6c%Jv`fcgFi5P8kIb-jzKiqKW5GY^$sU_K0{pfGZ z23k(3#+@^*Xm=VFJC+T0oI3W@_{Oi*H`Y9MbNdx~)skSvDGpT|xVRv%oXt}@XRN$+ zS2OSQmXRzNoO9sxx5_1bN*7GUlMty)e^4=H3XR7^+n2wRThi%cabHsLM;3=FJQddE z0ey3(LrEM8rQr$`O>opd%x4E0xUJ1cSqY82c#gBg6D;apHH3a&X4D?fr^7AVv`ghR z{~#Ma9z`-qV8Ru|fL3Q(KuO-f!n%C^^xgb2qcUO2_sJa8iXI- zvXxaUTBxn+L>eL)_X&k;g0+a`C55&9r;5ceUtkMUMG7s+!QGBddS55Hg8Hxk6D!}p zNxSD|8i$rkEE;~ij~Ra8a2`~WfQPggoMaESs~0Q)&TJ)upQbs_m;X56s3`U|D|UE( z_uRmhvC(AMH|_Rv{J=Nu!_{Q##bm3qM0zmA>PP-o2_~xbLHf+A_r>E-F(B`yj1cUD z+5#4OrX4)@Qn;FF*?V$ee-23;3SYyQfkeNZ^~ll zBA^Zv$U)clC z_`bZ-iGb+nlq&l(VrugYJq5%bAk_r?vr!yTJDrZaYwS&2TI@4r#6%Fw_e_LZbqY`1 z0zk#BSM7n>uaLe+9g`C%A*la;fdbhO_T%J~d-Lrr+%#PdCExR8IiIm5bEkMsw#Q*O z0u!-AWcdTW3I@;uGPj&rPUa~}T&#cs&0Vo+TN$Ocn@kf_CFfK*FTK;{)@m$T*Z<^e z$>^Kp!M&=6B(GU^l1PZd&=%lG;WgGn(Q8?yc*^QHs!Ez}`c}eJ$2j++&9L+W zdU~=!o|-f881QsuwX3>9xpbk#jX<4gS&p;R+*u1NRDcf#>r8g3e#3HL$tfLjU>sE< z6D1KuG~FeNbBhnud56XZT41^*mC>T6jDoDoN|~1%PEvlPp(KZ0a>puTWBj6L^9-nD zJGWRtqpdD0S{>?_SPG7!=Gw0tB1wK(NA!A3S2t|M$zP>R0`&I8!&W4b+HLKPE8#iR22{#sOOcJCLNA_x2S(5iRT!U;*rdTn&jQ8je& z4OgKukj7WP_2$9z-x?uZHt~ypNH+Sn&Wi`w<0CL>O z7NI7k&+u0xZaCDfXtu)IWPRqp49U6RxDjo>n14M2%Cj4Fba!YDzzeh_zq5=}r4k>MQ+veBb%JlmWcMQr z=~4PVR{bQnOnIwS{4SpQ_ZwTPb`hI!zXHxFb(+~Tn-Pf(pCDP?nFUvSJ)ztj+*;=k zO`m+w^lA$M382BM1}Cbss&DMqqp7e7f|cnWIsvXGf#|=GeFVi~Cn+eh?1MBnW{`!@@ItlX5f);N z+A%BYXQfL#T$(megRJ0ej$#2edU>=-M>8#D#fJm+1!k~}4YwraJ`8IN?nZJfLtBv? zk_;o2Dyf6=p%SUX>GxeAiC0^WD1Ky&7O;o)0lX-QvndyWy?~UjsE~$nkghadMQDdf zrPA43bwD<(VDPPaD6!5$;Y0su=yGjKDl#`E!b>$)>{~(^1;bR2Yy--^%+$x&Ev=@x zFZy_iX&whPOwVT!WM9(_;XDI3(wE}}hNDGmMN3u%~q5?w~^Mpx076ZfB1m`51i>tN&t4bAX# zhCE-^k6$N?gE%mRjXGsX6nDprSDj;TT|8UdkRls{dzr}LqwGg#_Ge%4cySCElJpKL z8)3GXpy{W3XdLVP3=ulfSd*}NOu9_=lDCj<52 z1h7}DU&I86UDE-%V?K${2>sQ;A~qCw0v6aGlYeaj$U{nxW`gS8h~xruD+tf`N$^HG zK?o1dqE8lK!dEMzh8@%g3+mk=U3CbkmtwS@5 z_@|%&pit=PZYr5Eg0Q#hrv9CwvASbUrZ~?%&Qo{$ff3ABGU`E1u1YiSI8dlN7u;O> zn^V(hKY(+lIcr(YjkVzaI>?l{m1-PR^AFUoMwVI_lFpu86?_@vZsCjK#WKcIO*n{C z)X5jBVz(!5q53==ZgTo%X!k))+Voq^=x9R0xCUm+SN~ca2}Jf_LE6a~Ahl$70oXtu z6cQ0pLoVN77<2!96e9#y;cTRd5VCzAy&@H^hjU;az|w*2M|fu0NCu;O%y3DU-dQ6$ z9fDAvGn{-ilJy}yX$%l&QOG)K^-2{{r71~Rob{CVOO^H~(KpT!44N?`#B1)~b0dr9 z=>BdAmCG4EeRZBS(12&530uc4DM=&(_k**;>Ui669kc7!nkIL8d#sDpus4-orbTzK zplonAneVXs_lr{L%LbL}psj-Tb6NkGw1E_rl;fL$fDPX}_+}T>(TNc&?z&U?al|dG z%~%5)y=A^g%I6(xqZ3gfdt_bD4~0G(zTQalZ&#y~l$bPwr8i)X4NSS?{gK^fEV(5< zOuYCV>-}9CZ&Ef!^{Y@01uT~WigT?tqduf`{KLISM%|bx^)5?2V>I}E{qm_kNx2?# zy39a;hmehw8fZ`xD=|f;8qflxyn0&HBW*zrTdh6SD3hEHz*_^!!MvMN7TqU#DX6ze zx8vQKyc8pCPk{IOM8P&O;<>lsJ4Lz}UUf6jH1m#V^k&L-)tKd6?ak#4X<+YyaAxA^ zmO-6JkO;}Za}{dn@j>(hyg(n}d5g0-?%B)|{_^ArJ|p~K*GA4?yGcmd8!B>OpAkK+ z6@3|cuf_F}>8DPr$)h=m$4v3ORm7(McM=HAPhw+H=mqik$gX~@*u*ME|3=TAe~vgT z(Mf@@5I>*p0eDNMoi*XeM1+%-7+09ekj?O^>;z!Mq5QPR;4j94Tt+L|68j9O!1@5M zq??A`_}#+wSfDsHBJB6L-TeJEn))zJ@6ZAhtfOnIuP}r$!a1ejb3WEbmuQ!$?>|08 z!gtOQ2rA<;%qB0aw)Qvm1OWQ?gD8NZYR?&Gi2H0BSHcL1R7y zJ{SAXfu((Kg};2G#l7v5cL^Prbad|W_b}+Dh|1`Hm=1c7&)e~r)hxOUSueJ{q&aS- zZ10z@obaROPE#Z<8v=PS>w3Yexrc3@TbK1g%Pe0(|D@0=%C z!X_<2iW0cv?tP!qN4#O+=J|zUnD7Em%N{Zy~LcYSJ_G9tL;LdrZ?yAD{a)% zb_o0~W8ceW$EV*ziCb$Dnt6AB$>zzL@MP2ZHpRYOS;^OasPHmn^RIuO24`nOioTEi z9t2Cq0ukNg^?W?f;h_iS7Udw;h;Vd?`PCR|dS){5ZjN(7uHE?w>CIw4Xdoyr$Hf6seT^`hww>FaPc0QzFV`{i-GgNOYTCJzs z>v^K)YD?$!?7l{|`*kmJkzTFmubMjj^0C$JW|Q5O@BN{g)%Gm=x02WO^=&?orKPHn z5ZklbUXV`3TjWHYVgfDg?_Sh1{4Sy=MpPli<-zyb%>;_FU)K}^cZ5SO-J7lY=s$Ad z1C$R==i8N4K3}hDR@6Cuua6jRJ#S}`HEP|S52Nw1^Mr$KjkNuHN?O?+lJ5#~Q2qGj z3OhrKTn)IX$A#qu)9I!r6Upi^pDZ<7TD8&l7|1+@AX8@@NpgvqvH zyK`aLm#@Z3cc7>~79a9V7nhjT=kBwA!teWnV#Xgwp@}qNTAjI6Srqxz*QQ7UHZc!} zrF{Uhuu4#dZS{>|PrggXO8>@+(Aug$FPKTct2j%Di`Dusjb;tCfelCtlbv<_s7`gF?Qj%$N3K2$&G7v+z)1 z)(VO?PK4)RVhuYfWYF&4Fa2mjbFT3=5b(cOqSJORdT}o0_2#%pXU2wlJ51Ry@I);i z^czTM40+B4E;roN5>bZQSV8gZ-j4TXsxxeu9B{Tl#am|~rp}F?`=&!$RrC5zf&P$_u^Y^M=70!gnXIg1@@Ykw|In z>B_eo`ln7+IJORf?3Ln%IZWpwpfZ#$px)kl*0a`w7aYdeoEmugPZ(+rX#H^rB!{U$ zW)pnY8L+x7sp8m(M_beA%np07nZ?pj5TCeB(W4p3*|wQAm~K$@e8G70W)i1=-y4CG zUh#++OL&_=^6eBZttJie#s`SbH*u5*(|%1J0?@GNhbpLvfKS}cw$lbc3&SqVa|ICY zAH%;MnLR0HNP13s3OjuSY#BKB-4bT-%>LlG0=N@HO66jO2W%^6uIa2IR>pbCZ}PkC zH;hD>Pq2PLpIseC&s@)a-yEjnFkf)T>UmE|c-!kDt#t3=+Z3mGKm6KOofSOvKKX9I z(uR9{usVVe@#Ovh;n;^qy^zYsU#79 zI7R#LqASGsa5>E8+aLWQu4?1*=vujUb_P*vSy9oGt)iu+p`)YIL0f^obfV7M;km8_ zy3sa(#9ABS;nGpYtgo2|w+|(|MsY;aj3t`w=mI$U_-#XjGrY>n;NzVUysK+3K7~rb z#>s6VOexcnhpaQy$RUI7-(>BmpENo1Z0KTgNNQ%vRL4WWw-2AA+QSnlhTN53vxuZJ(ipf%85N4!X z+4eogXt8oJw1t^Du5@cd&2}9Uk%P7`u-ySfYL7d^RV9v!Fh=6lg+GdG z4&k@@QeL;D9_=PfCm0%=w)D?`s9_A~Aq)U(ry@DS|2>id%B-hn*J=x^Kj2$O2oYHs ziQif`FSSB#aUdj&;&bWo6mtwQJpl<^DD! zgRfobEWKzDDMWjyN4QQ?kd6X~yn9R+hpx1e639X4=`sVS`_x*Gn~C2G&a?Y2?&0Gj zu2A&@ocOf{w^EPyx863#&*LiKd(MaP{%gPg)WmPLC4?sNFvY@;M)WFy$&PCyWBOsP z6bmbdo=iB$Q?}~ZjK@AE>Rlj{%TRiTiZCrqoXg-5or6c)Wp}X!LIfH%fkU&sx*Kjv zyXG>*w7_A1giNTVmyX$l+1$Zg1-l1QcK(rX1zs#KZvw3J3}LVy7nx$9xS2}Z&_TSZ zQE66To!6l`_aXzSyscWsyYHwH9YpU+89u<8<$&lhljv@W$G&qqlq-!bTFWr+QgNqt z=3Ht;m=AUrK3qoA;F(n5^Yxg41$F_=x=M_oI6c1ZkERad+`*&0w+Q9FYx0b|2nfsp zPA1o%lez4#3EBc1oaF)p=Rg#>VKq!zBjKtw1Kk#|+MqMTZ|zRv^;eAv=7u7NC((gY z&c`UhdGv?mC}dP{f1_}f&P_O>HR~7?jq z{?FmCe{D)G2#N69VDV7ZM;7N2Flh3wHLQ(@;i6>|KoWnnv)2eZ-ZTf}o0b*_YezsaHJ)CViDKJbrzspCANM2v&I~&J^m63^j4h z6D7Th(hW+QC!U+o;kj0)Qgwbsi*EI2;C=XAi?{#t-4M8oS=$a4oc*vhSLUp#q7$q5 zA%C}DWZa1lRFP%*{)kO!kI-* zhr5JsPG|Ij;v%7Iw;<07E&i4e+LPJ&?kw2@Eya8s&Wg-?0jTO>En&=a1S_Jv-*5!! z!Q%>)_omi&CpHuo15U%}H=HvML?PS*lAji(T8iQYOtSjeKcMJBHH58CnIJVwI7oS~ zae{43O5QaeGv!JwvLQ^t?((Jx%oV~S0k1#ogrWCTV3PV32te6?X3(ZkWzJsX}B^qASk~j+tpB zcW1vy_#TKg+79)GNzq*njO{0`ShDg4Elty7x(z~9H^=yY^Le7W9Rd#o&F^fIwV)>o zgsuW5{D0Luc?*D-#`?2FHsp3c06G#bl=&}E8f`aCRlCA2DhJ=RzB_+!lMU)+|k zvWsiQ1#9c}c53`~w6~Cnj-2wmnF@Y67~ki0&A)fLK<)S2l5cECBsiK?3`BpX(tS5C zo^VWtv@ZWbq@6vjy?FwKlG!LPGU9|h;TUM`6*SnyCrLfI3I(_Jh8O{DsKVceb)EP!JOg?X=G%C4A{PR44) ziE@IWS8V|LjF8gNQIX7S8Ah9d5IWfx_jVc7GHheT6P!o&b*e|%_a!GKO04m3XMxN5 zX;RZ5_xVd);65xG4&{7k08P>R@2O|e_nNrknE{BclRzm<;`$=<S=qr`3dSJiVOk+FX#P8JN%^!IaCaW9Pm8?_B4NDlXEx zS}_NpjS3vwsBP*bQH=U(DySmEQG%7K0^er*JHsmW>C}Erk&9iLG^EyPs~B&AeHTP? z%+ly_B8ZRS%@e4&0VT&&V+LC1p;&msJbIy+d#hQu0Yi?9^H!U+Hp*idg#Y*{2i^>P zIE2G{Q`-JYhP)hV+A8$Xdf!_5P^1iMR~3BP(D_HnQ|%RjQA^aSA=$_kI)Wpc3~IG_ zpbPYM?=U#i&+pkodlK$E*_80K({Bwp%tkFvJN?88p0suB_V;=BG?L-Iacs1xn)>vn zw%}HDRgWUAbLKNFCIv|CzQhS|sTe2r^c&?!BS;X$n*X$fZ``{)EaY}5TJ#g?WuY=% z$!tI%!BZ3P{FOu9$zad{Q=FC$P|3bES3tJb@j;=S&tmHq^2swME;k62hbb#q@5 zsga<{z+*ahOdoYgsm(vY{bgwj4wP zUn1y(=sD<=qKq?NTh5ONc+XXpL=|ywu3uikv1$>biFTCozSYRa0Q1*XLg2s;&l7B( zO%{81l8&_fbkyI6h6=0WyDh6eBBNvnTiJQXg`+J$ww%tG#K2U__=e@4?(A(o^w77op zkERPl3Wq&IoPLj7c&_Wg=T}`6uT4UtRXv7RRJuHVhtg;pR{shl8x;fhqwMYhnhOEg z%d%A$5B7lq;O1RiGYhB})nlbdNz%Q$VG*@q2w_Sh=NZzzOl%BJwiybx`nB@r+_S#N zR^{ziO7=#RxPg)!XpKGvHqX}+9{w&Y%L~rXkP0?6m>OkF@v~eUtCiG!N3V5)YMBMK zFPtFXAU!?0nYG=kqeGu5Je?@;L6wh)qqWv*GRvF{UcNdFgCx_B_YzI4fcrCS=ye*{ z1`bthF9%Wkk9CX}zGnKc!6tnpPQq0{NYhZYe#XeVG16OeIu~#i4&!wf zqn?AkimPtJ2q=CO$#zE}hzADXEUnb|Z0(o}3VSEvd^5=T)aTYP(&P~q^~zDF`67{`B13J~x-V(>gyJX|()8L7j=;C!u zP)V>isLQ{<JswR0@a3slxXi<>R_h*ce&w2~+hdQKv{N=zW4o{lO< zcaEw@pB^QUr6B7|69%Xteb9!_ZyUEP^l_y4ZZ?i*dDTbp(ZYMGS0E}=OcZERT5SZ< zEl%=ulE^hER=J?A%;~Gq#yCD!B}gN(?61K-vxR;@h)*tDn>Pv7)Pq`47 zMI9^=E+kg|>Kvkq4Rr(}F(VPJ^om*l8{<=^I@#d_T5wKWK1aKTq(#c28H?$uby6+b zkNHe?M$b|t@gpllcibG+_)3>K3>xt>oIL|tMyjB|B<48+W2q-bM}A67cT`1K@qDx# zb2%utd0;9&xxrq8)Whv0ejdLf%DDb$V#5vlu_l8;L~uEeQm>-$KB&6Hah9KZH$OBR zy?)O~1Bkxz>bpgCT7x;ZgPL%M^E{q`5CVYrvIRrPc*Vj_Rp&+KL>G2X;$hlnbaLLA zfB{|Rk65M5rF4vZXCO`mpwLS6u~;MkLjPphu`WZz;W94#_zoL}*zgtxM8T{IRRtH9 z9h9}8p}yYnlq@}@W@=@^To*XXN()jrN;#Nz;ayz?9bI<%4uQfkj~CpRj9G9Ftcu&W z!UmV=0=UjNHy3r-b&zI2n5{vy`)ZP;%?4M_t)>;r2IyX+Low%^X+tlF%6}Z#BAeKXd42D}y^cpR3IJY(USc^>E#LBX9H!%=~ zUMmhHe1bc9kT^2S;|%H{pp=GQ&`v@i=4o@IA@|dEH1EM-%6uHW29#zSJWQ$ zdo5r_W)Ks_ZNn@nER1rlFpd|^Jjb;d-fjc9)lXPeq!9L#r#8}ASBA3fIoE`5O>v!T zK2FA+VUBCQHV)cWCI9s2PYWeK-Kdu5t|(dAF%AlQ|~K(4Lwigm(vE=NY2SJi{qIm^(|NZ_z| zl^HF$S0d%8?1LsVIN=fb5o4BB{MBrUede&FW zoik}pAJ*Kw-dMK0XvN5YMLlg-K0qGTA9ncOf|V9?AyI)4>BQ|RSDo;C0^UZL2-<15 zP{Pe)MX-gb2pQoI?)&V5HPlT}3236{KAWB(fncx-vfi2Cj2vfqUYBb%iHG7H-1)K` z_9vO@M51o!F5)OS%ZAD)CGZ9PGzpk5%hFO+xau5F@eI<%+`vWd?B_=4-5#$2n%rS# zr?%+OA6+mw+H=ghbBP#i6OY-xKoqphs55%Su4UZV^=f}&?r}Qy7LYYEB}@%_Rsbp6 zo1ULv#pRGTAizRxt?JsZxuK~ln4528Os>)!7%P6FuCSBtryqC65)3-S3H3Am8d@et z>|AYQ$;!;bObiM=VJu^Jbdqw_+tjkB>tW_)F0sT6&!u28a*p-$2T>@ zYSW9@Z_QIUnJX_9xtuh$T5NoD(^C3KS)MMpvUA6N;%)I!&U{TZ!>qIlNoMe@mhLMz zo58{80~c|B0`Db9@yH_8$;Q1zWJZ z-O>A3*GHnQVC|I>&0&Ur6$&eAdb>8X;Cb54vrg-J#lNRgf9)X+w{8hFX#BF_MRb+s z>$T`3SrMU(xfZ5jb9JeV!;ru;4n)9bXazxw=XOlV$3W%q1VQH@MDoH)m~rw)GH@;L zqoUxTkl+~o$X?JO)!y(B)3NAykQ(lR>v@G))?cL+gv+S<2@I9wO1eIJpGMGZiTT<< zkNQ9%)bwB8&wn;*i-%yC6bR*J#muBTdSTx z@M@e8F#x%-dXG{Dy>xyaMIxU2T5eK9C~r1>AL>ur}6k4E%p-M zx8gnYs$0cj2AdCi^7qpX(0czPbOVAh@~rpky~?ju5HOgk^yKh9ih@8((u1I4KIUh*5)6Id`Hu& zVN;{|3+5vc0WYgEB%mMuWs-%s&@mh^a^)%Es(z)qO<==9m?e*i!bDQ-{rWcZ%Lb?c z`06sq%#MHPVfNx@&D`-MdGoX8s7a_TZ@&213r5{+H&2sS_O^rv=P1BBfGh^iTp6s; zJ`M{Zbm({XnvjL=-+p`4-rC;Tdl1QOeoO2v^0SD}p!H~BleIIF&CSif{N*n#9gUW} zCXp7s6F+?NOs@Pm`UzAyq*b}d_Ft^NT#t9)1{}jpgIO`=1{%Pf+JuuBW_LoE1ykW) zZgMSa?zYq@9BB*xx}=TM`we3-e#2OT)A6rFZc}8K8P=$9_sX{kB0Te_^JZ`b=NG@< zO*pY>JBMwIZ0q;l>t0nA{_D?Z#a>&FPvXXehRB=INT|b^WQ!7e{LQ~RY{LQ@SA)H5 z(rS2DhQWt6YE@dc2;90`Fu0&zPlq^d>Jqi6j?12$FOK2uYuNAz1j*QzjBU;s>`(a) zcLmjwtQ$NQa_*LV=0iA^Q<$c*7H>Un-`{z#_3Y6hTz^skI`f@GzV6ebt@P zbHDR)#x*MtS%BSsElO6P&imhx2F`Q5oZkX9zZb?l>g^mmk2jqbZA;0vE&0(TT{tSq z;r=sP=8N~X_N$9O)M^nutf+$xdR%S6C3^HjYn4s>dRZU7=Qpd1C{~LaPru)L^3!^3 zz9n>S*iIuV@LUa%TlA1Mg50inZ}wpp{VJ~G7In;#W!l`wpx~_2&z02NWRDIdt2LoKX|lt@I8W%JH>zs^f-({t7>qF+8?Xe z`j^8{y{PY27bSB|Vb4a>3Byp8w^242u+kQ@W#e=t8eWz9 zZlj`@v`-*giC8sS|V3>_!&G!2fBIK$zjKe;lhx+=72L?)(mE9sm=c#;ut z_0JBw;uV+`-yDtFi$q-#g?dg|FG%;?;M^K?Rs_^W4}*2_5S4su`_bO^)+0KG^r>E9 zRPLz&U3Z{I*csIMgKsi@UAd;VZ9O~OgQ6;6=wlfW^@?SSD6L{1=M+I>Z>sqFovr&j z`wB;1=0G~5Rh*8wAnMzF@?cL7Up$r+Le>4@NmgNljt8_qj#H@P$Hz457oBl0Him8e z0j&vW*RoeIl}Zto=sLxhc(w6O%!$$BD=4Cq794k8XS&@z>3m0qExnDF63@QXPwDIdE%K+Auy2RTn==QNKY zJMT~WIMs3Vbk3VdZgkEI==yN$;ekWd{MzawYoL$Ed3VCR{Mt&(^KKt(?>+Ux+{=5b zn|Eny1V>Z5pVEo{Ty)Fw&Q;)#&&b!sE$np2ew8cCPFCa?9%j}?B;u2L@9!I|W`BWD zCBuoj`!gzOyq_6bC(oznBi4LV(`#tDvsy5u)7?Je#Sw!h8gtMpJv}AbEyqm5_aB4n zhTi9tpxU$1@5 zJ_)raP~Ii9H%$cxz3F3@rpvLB*{62UobiMi5N=H5n?@T!d@?>ytRR{iJLOQe;_-p) zBY3#d%Mp+FH!>4MslP=}x_HKGgia@5|4*V2gEgcR8xFe~X1HdvSQfQ|#2Vnh&!y9-(yd1IJP zns55)MPqa}`fI<}`r_`|cTx0|{aDhTr0Jk+b+eu}^&G)MKomu1dVrW>i27-+a>Q34 z^@Q`VWL%tT(%KW+)1D4OGgJRrag-nVhkDst+uJ)&58HI?@9gjH?YH+IJKIS3UxpyZBOXOCx2PwZ6=TB5*=0|qlIIROqSnO!m+$?uBi*JO^0p~a#Up3~iP4?e^vqz@iK~wv*+x<=S zv-t`!~2K-QF&}C*9s|@wY#3Nq_TOQXbl}<@$%ZFr`*jgGNVlm(52CFtNJI z?@tu;J1JXZnE!Bi$L+I{ z_D1hnNxw?HdLBOVzy2E)tI>c^s~Yq7r$+V78r5bY@#^t)sV$CixV}UHwOyGB?Qttw z^+T!E--uZKlUDunp!of1)jvtqe-o){gaUJM)Qw2z<8aKMDCIUNB{nME?J@faOF3xN zpNQsWMC1AXzX30_;)-<*OKUhhkY|Qn{qit5WNcAYrYS5(GCl<3GYh|W#b=$_C zhR~1gZ3u<`j~%<6IZzwcriJ5V@!gHH1Tnpw-SCAOeY^Tu5+~QyO=ltUKQ0^bdv+^2 zxM1wk9W-c<_yIoOW8~ri{k1kPC7}L1+5RM!e`{iS&Z7O3VE*?I%yHN+X9%N1bQ6Xv zh!y)5Araoj09(T zI?mnz#j<5tpUoyjeO&Aq)Ru#5Y(yV@N_ovzYXlh}32jn!O3}W4G)_iEpP4l*az4W9 zZ{qq7as3zfE)R-AF^yO-<13wf(}1djM@^`R7lg{R>*?Ku2I?Hb=z7QCL|YoRY6vObS!bG3MUr2FO^vv-afeS`1&u2qI$nkNRu zaXtR_TX9F@bw!o_qvjF5hJs%Jv| zF2lxsoSwq4R3J)tHgROHc1XQ`=X5C1**Fl7S&X@uh`^i_c!67mJw2KB**fM9){$6O zG=8o758y2i>97Im`yGCil?q5^wF_yhf#0m_CC%VDV8YlfnZ@zq=lJDPvzfdC>OI62 zwU~OPX5;Xbt)m{DO_@En&M#fGCY{Jm8}neN)a6~Ou#wF8TtFFIDiL&syvAh(F}_q1 z*nSuC)|#*o4s2X@vy&5kn)Gu1?eX7H?^wQLb>ZRoSbt9W_q;RWUpii-l*yOL-{b#_ z9YGy4E;Wtj5!Dylx{4#Qd0Pr%@N%;9K=Ajymqs^<&^1phnYNXswYVOxJJ z#QIue^>YoLrAC0to~Rj>Z|C=Fm?dndn`smuVyDH4B_RfUTownJ7yVqVA;psy{4H_$ zo##6{&kth+y-38Sy<@GA8@@?9=uOLA2JNAR)0bF1!su%Jde0=;Smd5%<4L{SA9o3T zsX;D=1-r~*ym&ekTlYy8xj|{n-HOB;%5F3+ODcBF2hL>w?b|h4(Ea+NbNrIgP7UGH ztR@bI%2+|W^JFXo1;DgB2P}sGumZ5J;b0 zUB@n7o&UuIK#3M)X>Pa>#eTNdtMqa-_Q!fXPG0=nc)4`6c+_Yt9n}b7BM`3i5bHQt zGwkZcIdu7NFQAV5HxUFfR^bVl0T{^;grd=it2U+%-S~H%WOs>{_g``gJ zO=mcP5q@^UbsOt@jh0!QCQOn`a2UFDZZI{NxL_)x8L!kbC$wD3gm^q%4)Oe6eEJ+l z4k7($;El+Su*SOKYxwN{x%n<`CZ#r}@HzR1;WNMbDz12R51}`B}O&Q7z$7e$7NE<`Y)HEWDeCzO+bD)Lljn{`ZoB|7P-U_ar_hQZ0VvGcF0U ze>N%M$ZfCG{YMfnUZjHoQFzBhVZFf=)`(>4vU`*ejCzSOp7(%bHm)HUOHM(GL@9aY4PW)XJWD#w2Nn3Itm!}=nv zafuX9;grI7qw$M!x?R60$quFDH$^%_qHn);RmFL}vD2 z_t8$gbV9i2gtj$(s95ljYc0o>i%N}_p9G3TT9?(rE5X0 z)}gOu7cEUd*rzw`QUPx@fqDlkIi3!w=Lnje5mhgNv*8}nFAv`+EKcJH4=Ct!5WiYp zMgW10eW1mFq@@zG@^You%;n)JLm$+C9?`$=5zX>_JIG0+S&DHIos0j*kw-uN^#jlU zw>Kz-eE`ci?`HRg{n7%nf1E0)g(4hd>Lo&sKNx?h2PeEkSysui&UwQ)wmMIZXDc7S zNl>1nSM@sXg^3LNh~w7Uy!|RK(=&5YHa;bpZaQ1%uv`Ao@~`8%h#pM4dJ%D3w#zSb zqlytSUjB+e693A(x58Xy-sAEAm2s51R{yJSl>e=K{p;a=IxA9 zZi|?##?hj(T7KlUo7t=Xa+&3gESryziagtI!m2f@{&vmuvIMPJd2(L>n9XVA-nVeF8F(1*zZ4t{Jlx*)W0~MpwO3KP zEq*{-)wlA1^@$@4x~}Gv{Ql~YHrv~(3Yf?BTkz&#{`aeXcf0M=kBl6v{q43d7&*63 z2AxwGbw4H2d)FYBGA)I62u~F209NXvx%{st0Y7Ya`pqxdou)4p#S(wi&Xi%5nR%U^ z?r0&Ht%d)v$@*;(Tl`i>Pj_|oqYs}D411a~OG8Y#egj-2ra`3-uB^#789omQ>rP!wM{mT;Fl=rss*DD$gB|y-e zHWt2r`J3s_l=bKR7+JG@X{4vIS`3$gi&(T8rZWzk&FeXbGntSYy7K$i2eRzy24Y%&%{OG6O{TwT~)0!@SRUl#nB#wfa^E`0@Lv&z`pr z_MYu;@6ZI+pLdbi-g$nw^8_(358Ca@?}s_R{=G5h*S|03{Q5rvbAJ6_hB?2!9p?P{ zmYDPF55SyXmtxMZ4d(o>jv*CE*Z*t#_Zvvlr^8-4=171!dJbhy>c}KJh z#sKklnYOe443!9|c0abhlvzP~{5ls^Z`Q)*D~F-FaL76OUEJ+9xZs0qFvu=2d|TTb zJ&y2od%L~23?;%|W}UpmlMBS)Gxk()Ou*%xvD7#{VN0uwZTK$6ePg%W=Ln8*BNLko zZbdy?mXP5bEfcj|iMg_xx2Q|znHkZG2|lsU+kKqZtMS@~@zl%u9~_C$t~*(4?DGgK zVP=JUdt}W!8?6JC#Sbi4LqVgCQPjtn)3$l47x5yEp09jSgBHktW_P&JfBnqaMg=-`>`2_ol}E zcaLoq7>Cdsf>2UtXjhH1DchHya3tj%VIHxhhipl!P`2U$RgjMBlaz)XIuv49D?xcV zf~Sop%F%nz+aM{~%{t<>cJg#tAa%s{liT2|ekFgaa#UTMWTSRI?)LiQTGJ4ol)SxN z<9jioTF={^=_PwpGFhtXv*o|~z`nop^#1OCOTw?WVbzTI>%DAp-AhNgSo4e8N?YUW z8in*Q5y81de=qvgrzA&(uVdz~oz4aaM^z<#nk86~zDaL!T;3j7aBgyNSBWV)>^9C{ z(=iuIm{*KbFY8a%qlHaIcoPjF%*Lzw(L`SV&Om@ZW#j4hdry8^x0yIhDPFWGt;(GW zzyC7LCTT08t#)u<0tp~=GY-E&|FxK*HzEmV+c4dzxVFNnnHaP8679tKNrPY!#62Dr zh8YHm&Ev&~Po6Eu2ic%ArrxZsEXP~B&ucg)%PKbYdP7uJE5YO#>VgMZJp^i;*vHVq zp+;HXIde`ne**O+Ah^{W$Ack8bcDTQ?E^~v?q`}+_WSGlt3usWZL^oYX%44@!7K3s zN4b-g^&1vdQe%qE0L^VN8cg%aUsZOENCl$!fei|2Ze5oF+ z#Nx)_n0j5LOLfA5MDM1c(ir!eJeRiq#UsWl&h7r;r9YW z)W@}e!M6|hpY62l+k>q~2Rp6gPGYXQy-Y|A^J#=;G`XwJWrg%J=iGou^wvk8O0E;K zHbK=?xw83(&-^ks@@B-F*pmG;cRiR~jnZG~9233^+%Q&r+M2hinei~h4WAPoIyaBu zq!NUd$22i=8pFxSp7oHT)@9)OrXz+zATT5ni$?6%*iy}skL*7}Jinm=36(QW&xu$S zt6K(REpOFR$~YBKmjKI#@%K;b&z^JJPP<*{8?#)qP3fplRBI#OiV*;c4!0!9grKc*V#XWA#?S@f85nQd=5 zifbEbwA5#sE@LubXIvbPzL!p*3f&)eMx#N$%aV6*Pn;9x$O{(L41<~a!}0XXy9rVF zBG}j^!dU6Hn5Km}aO3dJYaA_!4#UX7-=rreXh3$N{0~z&;t2-uxVL6r3w>0^o!0Sm z%yE@mcg04V+ZTX1H^HA|=omsUDY77F=pxJY-?-OXL*Yk5me0p$9FZ#s!!?8PUO~CO zK4ks+J4;84FFN&qZq@&>Qvc@V(owBeZ62*QM@jr`+%V|=mGOE9^gbQ-;oOkUo|BGX zVKFgLL>5;p*#VP+qqyD~ch8Rer&dy+s-H+fSmFdCMrb0EGjmbo)6=%SK>vk=BUPg z*JxJX{cj}EODkq*(E=Bc7e3{Of3 zp4Y*0tS)k_M*Df^N&z{k6!$wjk%f7I69Z+L6hT+A^z_J*cM!1U;)Con~>9VOcNi6$H5*|My@-Qgr1C=B(Gie=Tak|9}%g2ri$$f2UE z5Tiqgv=t0n^{p6_)U#`w>AXLj=A5-s&lq#yrQ)$h4zX||5e7B81bC^N42&^o#k(OP zdX*89MPD+iTHIrAYzClYMwJCO8_FBuXPDu1lEcZhWb1@Icd<9O&gnAI9bFpuetw>_ zojc}*a0g1(rKpM0ca;nV77DNVW0sZmWZS2gIDGpP_%};`nNpL}p6S3XiFKmYomg?9 z&?zzbb&^yY-qH5=Jb%;uDt;%w=lNAG&;5Mb8FWV@{elmLdGXv~f(|+zXRomrWEJ8R z@9<*7dgfJ-NpH?NxrJj4f3MOBEzU#6sXE;PObOuhHH(V3&R}LgG=G zFQAC9I#2VwbDCOEybJQq6_^8~TLWfH#eS#?TfyofG;GNqfsn+lVEysaW$xZrjTJso zzG|%Uh97iz8&31V)w(ShBkMZxPL5hJU0j!X*{`p(g$}A@10Md2zd}ZQM2Yu2^pYB9 z!N4&k#%RsJs^*v3(E<60X$RnB*+F0;L{qCI?)m{n&;KJ;+aI2U_ zW1UPIK(}Er4BD`TN)Wlb8xzj4F^}gp@t1GQ+NdY|Uv-ssV>LHjuD!P)3um^s@9#W) zymx=6WfAQyibs%xdAdgLmxM7Q^jwMFrim?(GN1cWy!J^4dv`bskK()mAz{?R!uRtASdYwol$b{G>rK?P2o&2l= zw04|MF4A-ufRGABN@CLilCW}~rYUH8+nN@LGmg5wIYWprVzETe(!#C}djMy0CewofA zT+~tn`GUP>!%gcobq{A1RyeWk8Q)9FT%E9U78$1{F1lpuVE6`1C(jA_vWO5fc4Bow z*uOJz8%D)M{i3@J7c_jdWWY~Lt!6aN`?>H$G;8Svv(7j>1R&ftgEpnZlx3P3oNKYV zN@uJNiaR{vqNK7M1I3GrVyq&f?TK2aIS_Z$tfKN7U2)^3s{m~>)g$w>!DQUOq}9q7 z-z)`SF`S;}yhJ-7B#yBoL^4IgA`gQrv>SP-uQajj*n2fGj zEYwD7%A#|aK?x}SYLRD_sUmStuM#OMk7~bkf~htnQ?165h^Agyd4cggf}4<|YE{5{ ze4c#r1X4?Uf(!@OOEqixYBP>~$yL0Bb+c59KQda4jE(guZfdamwPR-Lc42Bh2;ADn zwUwti*5HP|wrLJ_9~{tM9-W%K#lydQTL<5_xAq_YK%ef3&3BD=L&YDF@45pys3N zA7~#=usJ_k~B{@;K>pjf_6k3UG9$CoxyN={*qT_G3|&p$Ps&HIjS{}j#gU)Xf0`uDwcP& zV^ZwDbkFrW=4%w8k0D`rx_7YqoCl+qS;yc~sL+W@^XJ>NwdFU<&bv-Aw1T1_k6tWJqs%Nxy6_RuBv-OZ@-ad(*Bq&TMVCzrD-#D=I=sAuN>;o;o5*hXA%YZ5toJiThX% z6jA|dYl=!TrVao7-Phjx9;zfTw!8a0eOA1dkyLfh!=8sGRe(&=5+qRFb$ch!o$+rC zoZ|?VPtoaCFL$1A!s7xx5slvmo2uK^b1Hz(gkiIBH(~rHL(cVb1FX8a+Qap$f{5uG z(J}hPXftH?XA5V4#~4ZITIS05!Y9MJXks#3CPjr-S}nuaC7&?JJ02bXJ!|pzsr~iJCahuAMU(C6c7Oh_ z{dLxRJJ*RG_uph=A}17G3L9~_CuBE>BAa4SkVE+ud%;Lz1W|nU`ywO(+G2*HMYK`7 z{Hh(-4*om7Kbk<%u$9irLCPkWG4Ys z5{WTq4ON57A6t#MvFb_&A`h{YHD^^3!q3-^A|-_`nA0L7O~tI&XB$(ArN!!{Zs@il zEQRgzN88&K&xKaOH&|X&dwNs-QbY~(N0FEg>9AU5*J}_wJIFnr+81AHE5Zc+X*x_N z2?%V>g#{UYdd?#L#AA-GHy`<|W^xuKVKE)*;4teGS9mz?b#tgvX^|Em-@_2W`X?Y)|1NB{WnZ5 zXkx?)+V>AO4qolIB*3s0aa@%E$7_>OUpJT{+ij>2o0l6xF!ug=TKT(Kpn2 zC~*pNlVk~6z9_ru?88;(k~u)Hd?Q%;Ms+!ajh|T9Lu`Tc4>`l$Z0IB~MUw?8VmE3e`bz08E*lpuMt`;oAQ;8n=^N83@u?V56M6(53uQr}-(pXx=b?Erbqi~6r z_xWGW$mad#wX&9ia8H|29pe0BL_<8G<^Q|YQI1~g(>CW5a?B1t1@ z!gN-WQP6`^m*aaGMMS&UT0 zWQbty^s|h^-1h)95NnSnvKm%_ z$hMJ8%i*svqy#p#b|shm}~NzN1p&o&P?2_9x)slJ``N1 zRzq8?IaYcehP&7jh~&?b$$&+@eB@B}yeb(56ZmXWH>V7ZM{u`-3I^Kc_%z1q)b7Qr z;j3SFUWD%mYOwW%+~I6GnRTE)fcb_rl!cnX8N@!jIZGdt<7pR zY{-3GV+H_eN7#>G89Z-z@5k>}bFe8dXJW=UT>Zg&Ed-&h-S}kf#*f$6UaN%OzeTmz z3bj?!!U-**z3ZPt^`zMssp;}ZhBf=!FE{o!4tDqMGM2tVqe_3~-!qO`#x9jPd-0KBv)4lNvs$p~`@*oIb>NvRf%Qw_W7u(@pN%wi3EhZi zqtQE~ULnMNrVf=V=ZD_NG1gf+PKcTsO&E|3E(lVev?Snrc~y`RW12VZcKt2qQnID! zy$$Uygzh1LUYY)^hx{!+aC19gt_*8jy#dq$7xvl+JR!Z7reTOQEQ%`H2od8p>UcdD zfLvZ{Z7pOaW5SJ0g!ZNP~lzB36Nm*r4W$GI*-;YF)LoBJrWQ9cQCHLYe214z6K87=~Gb#b^DL z?A_km+uaM_2wxLE+kJBQc^NOLhD(@^HD#EaMz@H)wStLl8w zkZh)jxT37axghb&h-bi?Y5WKw{+AG;=2=)ve-BsnOlz@5&fx#PFRrmHWXoqKOXYi| zEB6lV5UW%CT`oM}2EQPlet8YYqI}=@2;3Y?UrMhzfq{5Mn#l%NVeUNn2aJ%TStVKZ z>(5ibP63cZ(AJtQGWp|AOuE>)W_5=&*hIPEjmDMoPCUkb{ZN3m_0Xs>O76t4$sN1S zl%{YxAW%k!q{PgEsEnqZeBSFz$A=9nmvJet zqPcKoH&=w&MMLWnLJ0F4?QQ%7XMbbwNgT%uHyuYWozUGJgj{xzV#(0Uj2A^LvQjjW zsZM=5nxvjJmts|F=(JC$y04UUUrs=N|CKFJv#_D^E`SUf!+UEe3f^b{R)}!7G0O=P z$p=+lUanNcMCZeJ;%}Pr1k1~W5$@7|D%J{bw?n*6-a5-1T4<|GG+gDTO}eJ8$>Z{q zQ?L?b1g2>m&Fvf72w23;wGt$KX)h=3O0kH|0(|fL@n1Qe>-0ONyL~V+-%oneJ`z}8QrAUwH zkL}>d>sm=po@M-Bc!nm5>FdLH}76usq9x^}778ZgnQ|3=%L@4Zdk z*FSQ0`!K7+ZcD!Zj*lz+ssHvGb?83^blb8On&yo~vpSWC>+9j~(GkGU2H$KEwXhO< zOn_wbj2Nd5yleJg=bbT%>r4*&>2wP7)hIdc5KcKg>;3&*e?WKa_enOLy+8kO@sCK0 zKHEMx*xuW3MH@eFZf!q)@^t6F{`&0si`|$1y|;hx>X%<%|LuQlQEj!H>!h4(M~ilQ zr@bllzuH*4cmKh|M}Pj_G{UAcrio{{CZrNmN?R$S=CCci#vtfTqYR?QtamK3dDf;! za88SaRvQ3j$BKmOA?nFnL z?5snKr8X1YiPqQeEa^`%x*VQjWs+l9{mZd{sQAN0B@A^i5jAG`Wp(V6e%@tgfBrLM zUO-Rqf_xY^j(ismV+G=OuN*CX;bH4UquMYs+$cl?v|`6ZmY*k+?xLlGaBF(jn{;dA zWI_*FPnNN9sIogM2o^HOZ6t#ZjGavn^v5BRzP?D$si&@WVuc4cU7-C#jBxo)NxeQw zZw2Y;i^CVWS74#Cu>{WPU+~4^tZ&6F0E7cP#-_*TUA zBK41i{{C3l)QLzDrst#ZbTp+?nl-ghqY~~8!{_^dBZfkfoJ-%_Da}LEoYO=11j;Al z*Sl5;xBlzN%a`E~kc-}jqa1E|b}>Noscc=_i>wE2!XDCN0s$^}uxV^(C}Y4ql#?hD ze>jA)S&t+*ABVN^UL=*STdCq6SbY19w{XaXlOt32Eq5Meka&R0-lAIGJHpqgw&y65IfRivv4M zJGj7;3&ZPa2g2f8q@x)>VG0^RP zyz^}PMmgO9I-+5tAgg|c9%dn0;&j$eCXBtDD9meL#ZfL~QNuG^`oO<)f-qMVt#N4d z53NXx3ti%sX)UP6vPEI}31+H)6B4T?VKx>Smfsl~6`aJsSgabvE_;m2S zx%hS^&lY_9GS3)%yPkdf=C`~7{kMnTo<^n59f@@w@rRS06-IOS+wu6OJ_FX@J%p9V z(yiqA#+n7{tK(6Z9jFRMG8%032IH0mZK~Cc6`(uI8szF_3*588s2kq>Q0xwut&_LJ zxxsj6(-`j*s?g%AJwphSBc*_=#@`MqIF?e4z#71wjW*xeC-p)9g_I4)7d05G# zKE4!<-;aWla|yIQR5^E5I@>FyphUz2MByLi3P4rdJDIMBMbFprisku=EgQet8`{<) z3tBghxL*6$o$;HF_+uBBE$<(SV>F;Hz}d&a&Ca}~;M3m0w#<#eWOMuQxffQf{MbUQ zRcZ(ABRTSsh8mmpn88t_YUmbNev-3V#9hS|3)re>n!>b*xuQ;IG!aMC(G50_Vfaei zB&X^&nFR@(tjoOxj|bMdchZAiAqx*SSk_HP5wE;q@^w_EDh`5Im{Sv{`_1mlgPq+M zZ^1miq3Za8dssWG5?n>A=2DS&iung`p@ zUq0J7*nYcc9^Te!94~)a8E!KnW!jZX^YtxDJJNQrIoD~{49fmRE|$@|>q_Z^VmWht zT|x6C2=)XCve_72o*(E-&A6NVbUK{Hqsi%yvAg(ki=~-`&Mww27^z{hyyr`Dk{-^6 z?7CPw$~ASEW}Rf5b{98kN_kx5Z(*I-g$3N?=Y!eYl%n#YVMSU|W(w}jqkh>W~eTWS48J%iy~#RtJ?4qt<-5+Q-{iB&dP ziqb`!E6N4cbpT{Qo4?i-W;&%M(o2@Bpx>|P_1bplroyHXepS|4dzJaGYrw>zv{ab} zv(P}GPnE_t+J3z`kZM}=ap|EF_uYN9-^>^Nln*-r&t0Ku7R{jIOZ(k@wcpGa{ge;< z{Uxj{w)XL1Ole&#Nwi1B-;i^iyKsmnvmv|L_#SgD9YVXjB5~-${Od^G zv${@PTm08%xrxU5={8Gs17*eSJdjWw;w8v}V<>e^q>;1rtRB~E^;7!%jTqMwACL{Ws`Wh@S0Q45J|(K^NTkg(X)15>>Sjr zbZaT_av|g+`XkUJ^7y!blV2r93G&2`HI$1@h=knjl-S+HE9(=W3u^FPF4@FEm7;hL z*>2KU>&fmy!)PS1I5WSKA;NThvyz5$7s7{OhU;I=01Z#ay_$n=9vv7J;1uq`jet z@6AFp6fG`Vl=Fag1gtn+ znodqQFmlGGK?oj-2yR1m9UNuqxumWTv3OgU?qO0Cvf-zRV{P~!2_?qyI&Ct96VVV& zC+Q&VUm&tt?;pv8gGsOv&i-t;yC2?<8}Yr^0P!43upm-hTm3!JfIzuj%S%9t)$|DE zE1H8=6pIuqo70=GZBO}}utXfCo^lE_Pk7~YgJNbie4h?`>97NTBF>QLBDP5;2UwWrzYmAvDV(1;Ks=%_LPnSLO=LOi`i+7wM$^=WUY?kMkAsA5 z?1$aaxpTuQ#3DhU5{=5tUi)dc3B@JrPtdDOgQgDCo8$C^sSVEc_#ob-5%`9Hl@?HCt%ss>HVS#?(dSR#W8bpaa5& zB@_1yX%RWh4GjLh#)F7>eAB7tKhTIc>VD&1*mw|JIct#wfz}ZGzk+cW&J&)fX`Y?g z(eiANWbeY&M~^Uo!8;sA9V^#HpanE{C17OvrxB_mRKsjCfa^Fp^vD&+ISEh z!NY18b}mlo!c@gGmJ{^Qooe$i;GunVl#@HzXz>WJ++kPnpXcIQYMfGWc#*kd7%q#W zxDqF#eSmk?i10^MBC7KkIIANMsh17JfQiWXKCB_*VnXdn-c!y5grsS=%WYyjC+$d6 zH4>4WoWJ7*fxs?|e%^kv^TGtEA%3qtIWC1)MBDim-0t}Lc{aV)*vdSS?C_JTW6#>$ z?-C<%p=SIyG7ARnV!5iriV)sRPGucF&W)HVz_!7XZkB$~SQcI|0uLAzw0?V_~epBN?Iz2cA{`Kh-(4cg1hZ*iHR&5oCU;FL^PD9jOykQt=-r-nm(3MtbNHSWCR30=T5bR@x&sRN^k3cS}(wI*V{v?cojtR zCt$(G&mA8qT0Z;u$oaVW6uC1bL5r8)r3_Q{E8+fOFN4438+!DXE+cdbk6~?6`u~Wh zzG8^X<}Y+lnFJ$jo%XvK{pP?W%Mx0JA6CQCPbG-j7}n7ewYUbPb1nQmot`ao!8eV! z6*H6`{K(eBUigD)ntt59TTv5QjI<@qzv;a-k8(}Y?}`Z{x}2MjX(SY@BC4{_&-J0s zi$^=ri8QKcwi1>~T8F;m3ZUz|W(;@3dnWWO|FmP`x)pk#oA%wiy|<>kTO(29T={W6 zwXufniJjVv^o0jbdt>(gizP_C6C=_VoL#TeY4MVET${KfSF2qXy|K2Dqb2I6B|{_7 z@ZgsBL%4_t_%Z)f9|+a-}l;-7{6qd93?6vW>Pfv3BdPb+MiZLpzlujc7=z)-&*{aKp_A&0YSjm zCO-IiS-v;hb_tvGSZS7oGd*Kk$ZvLWqxZR`b<_=TAzK@@usA*qDC zpG;tq3^SH=p?|8G#b*)?94^R&E7dsS$ZIsJ(s4XayInR3qed|GT6ffuJT@-woy?`G zxp+)aa?N)k`P+=SD7thRAI{?5P|i7r-*b-xUqZm>y$3Og+7@#^))Ij|`OIi!W^4+Z zChSCZ=1GiM-lsVVKAV^~q&rsMrLrv59pj>OwT$7YnCh16mHst!vpFaKWWrgU0a;RO z&qy`gQY~CEnMhU&iIk~ZOo&j7eIU331V(~OP9po#B@K`o2qH9q-zd8RCBut2L~uTV zd0@ITT9PwrLcK%jlKwt}co7mIfPvAZdpJp3Hp;ttr@k$QeRssTM>>9&Be4mB5$%nT z5l#M^Dd=3{zj7_`Rp4hRbmvLX1p#~lsMZ!D{Wu%;^F%C~3fs%ln+~}YwJYuAo1*fWW|uL1b;`_Q?W?XWA;xtU?|#&#@YQ(i;isNpjTOdI%>c2KIH z-j2=qe3l~5By3f}t(%yHEAT<>DIaP6Se8S5IUCZK3O~E+?bkA%EWf>Mmn-$qV=vmm zU-(=_GC3ulB4nO|0~btAiFF8D)bUcu5ckvx_e4$L{hCns1PB`X~dUW|DTX zxlzl*EI9}!q#!52Mc_y3V!~N>OadQToY>~qm9@UJEHVDJPl)|w2IPcR! zPo5S@0?rk(Ip>p73dEE`X`X3vT2PGB6H$jZ-#mW$Z1XJ}Uun)ce!Fhd4ET<>wmyo^ zxAS(Txl-Zs&1Xn}(cHv?YZcF^EGlREwm{L0Hs97NI)hfNS#yt9>|?Fp)K8*0{SmWq zwikp@0}D3QlI4S04I6N<;|Clx1}XHEE$-RYQyvyqLzm$hk4y8RmK$!s*7gYv9kNfB zdL-*6ov8O`F{RRpv0Dg3S&NgFW74MtZA#XUm=SrWYq|o9faGyk2OAE~NUg<22mb-LGZS3&0#SW%R%@8>2?kz>`N! zVvg>3ewHZ2F3fl4Rsl~CbFz%>H@10qWa6#?VO#6k5F*~mn&qBrMM)1Nefh_jy)G%%342-@6UUQ<){Q5h@FUN=i06#fyaQ#d8c)=q(WJWq$R^@B z%817TWF~kDM?KcxXW@}c9cbXc@3^$wi_^HOx&NfCS!O&}Dg>O<(HN2&qlP0qNE6IV zj`^f(VoD&}(u(5(!+g~D9Jd)Ge5Y89S}QW1Vk>f$Shy1%Ve^VBy5clYm%qLFtw}Wf z<>h*I+0^gV@bWYY?i@wAknnMo%Y*bmcE%(@`cTWIJ}M5(7N)V63olDwlrG7|-?ziK zRkVJuv`LPnd4HC|7wK#|LD+Zo2qT1JgVSVUZ^MU!w$dwHt7|0C}Zh_1Lw= zaS-E*9)rVdc7n81O#Y0(KKnv%Y9h@_F4jbOp@Lf^qIAh#R)J*9B|2a3r5voqXM!7pd+I(mz37seHx4P_E-Y z9^;-b@m=+JM}B5&s2`%#Pi2Vr@Vg4SOP>CFZ$fTDQV+Vf_?UJQ(lrJf9 zz{C}AWU`ra^SMYfAS*l2mCF?~PJA`P#CJDJ{L(=(n)|}U%7rl_sk$1epAJnx;9AWa zvI$FYyF|-h)%@D})ffA8gyEv|#A%7XvkU!QS-*XEsxM^K={bKfkIfEzSJrRlh1-tr z%J#c?sk`%CS-$9FBHGIzy@6fHAoSOFr;!DYPSfe}FQRxyzV`6Qcw2|9@FS|863A zcw|}m#XbCEVGm!0ZJg3Pu{lCg6Ya-FR%;)5KW_Wu*VzDJ)9h14jlMqN6|b4 zQ6otw0&^~oUo8bQ!dK06?-iNr>$+h0pD$!}=Llh7I%f#me)AoXXv-m$L z53ciO*3ODYAW%>3=4Rz{VVH!G^>sfsGTM!h>=X4Eo_U&xBI?bHo_xo8%)#I<_DSF z78wt`3_StQh)siu%pu}v%1wwJ4VK&wl(vctU63(x)Dv0coau*60L)tCrc0D0MhpeB z==og0YU_||^ZJCr&hTL=e5H!qlYVllmOv6$kBGetj=*Df$R;L~a0%-L=~z!XtyQ&O zqhEuQz#29XW6oCh&mXI0Kh)5(vDh+U!5Nxq>??^p#&T4&vOsl!$3|sPOQ92N#xOV6 zcwU4_I7n7*yTrP6Lqh?25$ue$wpD^7puI+KTnbH6-OfdgrrklNH=8!llR~2Ep$_UE?y1f?q7hMPfq#*t`cU(cofFRsEBvoF#ifh)UO+15mCQD&A zcuntVUR2g40fOKjZc_6oIA>?PBG8wHt3DI`xulk48zp=!c3_D4*}R#^x~>MK97XZO$ifY00D7fx%KIljKw~30f;c#%V}z=#W)tkQHL8pKyp)MtkQ;W@7bp ztDGvmX9Ctu(wd35!`mNEA?(w+UoZWM;%a`pD7bHFb|zZtyV& zg}p-NnJY!4koSIY;@;5V_ufo8{Kk1W<0fD&vv}|>xC;F6b+|6!Qs`L>2Y!awRXTMa2sO8%S-R> z7hhjC2N&*%W2+@>Qch@TrjE6t4QnaG^~8TRt9#A~mP-4vJQ0dDb2)ZOW#P{?Jn|t& zp=511ZS!zsclis|FAJiGW+K{MFs9omOg^(gAb(D7^r!qkjlEuL#H)1;>iegE_CMs( zee~b~J{yl7toon$`rzKZhkt6^Z>&AM|ENKqe_Cxc?ycSbQ~0OzP@ApEATweltc-XK^uw34<3161&w8D7h-hHcGoEB;Z1Jv{O|P5%dPt-rsUQ*_}>-GsWv4d;x|sd&IMkxF#JF~>+lf+r9PgyMhQ zIe5DJ>LA>B@i%~#x-BUv@6jc`-B z3>q%mF^)aLqbTcbkGDy_3*n3%3r~WNJa>w^Gu;tQV?ULZPNsJC0*j5yOPsUavBk`c zHwa0EC4|(DJ`qt{h#iCD126ppM=I}SwLU=1d5XU#d^*dOX~wuWi4lcMu3@GM3v%1k zqX8A-X+tjW2XqmWVMrK%c6uh#PUT%xxXr^Mrqhh!XCgssVrlIJ&|npm`h5=|I~qz- zYK)cD6()&{%2WO94xA9_vL^pi{?nJgW9d`G9POZxQR(I0?vuTZ=i!@;y(h1pZ@)N@ z^h$fPVHhoZ7a<$+bT(o3IWbW0LX4nj14m>u!qlk4 zU8P$VBzB^+#yS+6*@>AelUM0|KChE9Bj$m3R$Q%MUs!KiS~D^UF(H&X+Yo~MHfMvs zsX|tM4DQn$6VG12_4p7bhu(-o$@&} zLrWlJN4_i*_9T@e5kZ<7?FK$0W;lcBG?KJhY}eV9?J(r4)p5{j??d;2(5|9Vxj9Xd zJIydO2u-wg(?=Vm|jg1bKDH9B+~Z`4M@YC7^Iv+3|u@{HN1YQ{8MS2enB=U zrrmf6P9^O^0Cp}e5|Dz#D!u@p0!F@!Uyqf8Q*OyAIQWK)iW&*C=1)Y0YLR&nJ!z0^zd##oYoP9M^eL@+3$CJizm$a2sd_6D8eoZ@|w8j5zfk=r0{8GMsAYaaz9o zK+E~%zIk*qj0NKZJo(bm8IzDW8GPmNFpA>f1i*gz%IW6CgZp1II2lELYzAU27@K&{ zFf(t*q5(U_NhY1>+46CEesF+kk?F%hJ+T#^q)^>`;w*B-{BknQzj6tJ{|lEi38VNT z60@Vy{KOOI5X1p8h#fG%`Df-gZVj1vsP!VgAWXh;34Hz)!|#9g@E=2x|BR>-@LLDXGwq2lJFf}v?vEO2%5(2*JCOb ziufHAOE#WOddOpE7Kddg+Bs7g$2K>x3GGNj&o?y7M1+APEQBZ-Ooq!FJFlzZ)~jl` zv$ylQQgvBZ7;j#fDdw9h&ezyF+=70gQghewb6}qUJR^hEtTrw_Y61EY>mx?3C$kA} zx{YFrIJCqrh}9xP$-V83t>@e3-1G`l7DjBELc5Js5vOF9F)(8bzK|hs*5e%HCS)y( zxQZ~DiB3KiYOjHt#rrr;(|0hkz%j+DCX>z?I2yEy&B?dKd&J8kN7~q4SXn4{Wf&}< z?u|c5D|#dz?2{S@~ z8`Gbsg_8XBAERMPg2GzoWjr&In_JSTwp_w3EC2-uoo{VT6yLx}8ou8xof{7{|wxALE>&ma~d` ziXkX+UW|-47{va!(AdN!R_}Ovn{~%R)g&4HnNrp8*8bs#HY`eCAvbl?0=qZT#an#Q z+xIr7Al-i}no)hWAL5x<5*i>W#PT&DGAMvZT8Zu9``%(Spb+DY=kPKRdrS7 znWk_JmoMl-4@VU!xYd_zc6yWYGr%cXpo4_^lMmHk|_p$ zk79Ss;4=v$Vp(jwPA}v)V$vTo9EyW1opPiwHuqet+TmbY98~&Z#p7G&CMWpIEZ`C94N;SX3k#FEH9)EDRGZ}lto|x~gaDxn1z&XDsmdxa(Ww%aXct(r>KQ^Pu zY%sVmx6Zf2g~@y7d>odX$6?9f3A1eR%l@cDIOZ&csQ~W7Avb$yE~qYrEW#4Mll)Cu zpd{0MoZzU1?CJoHydx%s<54!P5h{V9u4Yf+O|r;LTY;(Ho>3FA0BZK3*Y5!=%x{?k zACWT2w0m)o^gbM-zeDY>I0YMM%`UXv2|_-E8@hfHnWVUPRc^wckj9v|#>OX-*VQbH z=lw%$DWX_PDkn>Daw47RWHgFLO|Lgjjw-dbh~hXOiK;$>(LW!6zt5;Qi3fppkkx8r zLm!s~-sc#xtAzu0~G z-+TK9uYURU_22#{;FW77#~rGBde-~_d(JhpCzsGM{fJ7{E?fua+Z7?ph#&JcC&X+g+eJjl-(}n4gU-RZHB*CTqd=v zhG@ZoHKfsCCVp3R*Dd|$SpzOPlB1^*NW@S*PA2gv^nV=xJv<#r(keWQp|#>SFGq2p zn@&^LZ#4t{bqeeTs)1uQZfyB7Dt{D$sm85cMfL9x1iT%?MKp$cX!$aJ*>2$BOKPZ0 ze+lDV1@075kM4)<)ErTl=GJes9v`$Db+i*KI@UOkd{HI4y@XWCoOed*h|xGW?R4OI z-wL})b~fOzob-$pZnXRvTl)y;fwho|T=|vQpnz;cL>=@qWjB8I#9{j(lb{JIcS*pG z8iLjkPeHT{+>J>e&^r}k;y9(l2Rvw8bp%GmgZoI$)f3|Z_EXAHK!i0{B(naBrep4C zA}{IQri?ed8Ds~nS}_R&04PPmJS9vetK{5)?BQ>PXJgOQ=jls_UZ{gCtUc#bJRE8G zhGfFFKW4pa&mHyOqKABz7j}b=nZhlVn9JHtCD`Y1HbPmyO% z0IfvC_%B9zu#}z1VXsxViN{(qt7@NagMnW|1Gthom{xX1lrY3Gs0!d zs)+VptyfPYZ*9C$U%yqD|D)S1K(XuAlUWe#e{c&d<-o&HCouyBuQ)*C9iR z`iK6eTs7f7>BQIM&^ltv=k)!X@;k0SmBTfu)}B9JaB(!Axg8a;A@u5AC0JTQJK;SR zccl{TWr6dpmlH7kkg#49&c>*Ip0b`38mr{u8v!*^b5W$@3^3)F|%Wx^4xq~*1krD;B!NzjqN za~F2F#97QHutP>0TwTN-7OIMs2z#g--*Q47-#*^hKOpS+E#!ZbX$K)|0hMDD*JX0* zqPl2Upoz_yQ0r7U=FG{ErWC^XmKO5BL)T`xvAj9-2-i9Uf3iy0u-H((fK8dehWPMc zM#YMi_|s9Sy}UJY0;(^2OmUla)F zffW9M#m*4R9A_h%Ioq1o?!_O%C!3oVhh=;YB?t`s=|MQvfH-Xdfn__-f40|KouPpW zT|?Z?a+X>}eV2*Y1eWeu?^Hx$)O=a5J2cGi(+XERu*p)v1i}#DJh{juujlc;8t@%=sH6uILbE4*nni2noyL(}iT`4sUGM%^Zg)`;)IIvG7b=8JP=h=%ht z>dLf*1@g#FBn*XvGMK5^7)Lz;mD%k!+0J{mgRogGNwqI=SZ0{fLzB+jM>cA)Z981k9 zkQqP{%(L){ZrAhY;^s?4%rX&YV|as~o15Pqb%T#XHslFvU)~kgjQ)=%7t*#N0=R-)%FKk85oecf*EXp7GlkNL zfaSE`r>4)wmd|HIL)CQixN6m*AnOr@rZ_Y^k3^g18-exU$O4IID*%lqw1}cDRR+^& zBNnZMV6RuN!^Ud7w#p};Xx508Vl4QR2nAM5i$>Izr;p^rKO;mZCqS8spaDWWNpfYX zNO(AAsuRxU$$F7V7=?&=H0;mG#q^^2A?SYNB()-fuK!j>xFi;tUB)X48_JiLA|Dimo?2{fIsE~_)ILp*G4*h z-dqj;$T?{FEHGB$Ye*1+Bi+DWlb=Y;8o_BcgyGO&vVlObMEt)#Q2F7E9rx&zdHLv; z@2`IU(C`#X()h!8E##P0e{Ouw&TabifdSg$+JXR_CONM3ysoWa&Rhp{72ugkp)0gw zwA3X2C^DdnSO3Jur1IlHa_%QiYG2w$FF($0 zGoOVY7wo=AY(QCI6+D?$Q_;ks<6VTl{)IC$K(6UgD#h`CQuu!pI3%X$KO7z=y$=;j zFm7@|L9V3}k5j z>A!Vn*S@@Lxr9SAG9#<}0ICzC`pHa@9}7RHkRZS#p0jOq{ie*t zm-ctmP!Umv6h$wa%Saaw(kSC~&W3zw91_8bDluf;CP|MS7@~H>bU<&|vGH#G;~48Fk~?);VNMGXv$p)5V9nEij^uc$)T^IHO|=j zQ({LN@GJxY{Qd8Jf4`HQJmPjr+jyj{VTI`+lvrM2NX&Uz=D$nspk@ri(Xb|VL)RNL zU=!F+m1Q|t^hk~YQBKy7MNAmvEZ9)o$RYj?$*`$}1@BtjS_Ke`)4a4a>E%4dFeeV# z7|wY&9K1eD!4_UnHu)9O{?W&$gHWi|Syf~qmoO;l3yn?cL zVmwN>*XnI~3}{Bf3~4>2zw!ZX+u=q#P9p*uqyy1i=92_ulqmmn)aWNEdLXUxf6*}RdW zd6^4yA7QM9;$8}|AS~gKt+l2=7E+FyY#|{q)O?fpjTQ_FGzYwvYb8+7AzyvcRb`*73s0^K zjmIcnK*p(+OU{;6$*^u9hSZ3>nCi;d(T@-J zn3~pWC@YRvE7IhOo*;V!p>JggrEI%EB|cg(%;@*izKjj_8n4(^qCXOKD5616)6)wF z=IC|~#uBe2Fib8_#{)}jpi3=qf>~LU8h*2ci;j!OOGYpNr?GLO#NO!;xi>h>FS?kG z5rHZ+rrwhQl2t}!Z92-w?J0$ga4l@y3mXXBO->z@oRMTN ztesAQA#L6WPL?gwIR=o&TDC@KzQ%@znm$SjmdtocekA!^qA2Il!NS9&!*-5x6i_*~ zx!?rB8xuH-(xs6-A+hGF$-204_<4egd7`WhBno4a5~PbjK7(A}QbdPKI5Fu>ZS~oZ zh)YQ_(G%s1HHOTX2nNn47!4P_(QInQ=q-7z>#vy!!#cMSyaN3+9cxr3UUZYyhzf^| zBYm!xJ9(vQNb8>8lOcXQ=nb-UN#6?)5jXqb?n@9gx~k%@qLfn`z#CA zrSNFZd=*1jV7PkZy>D9D5ayzybgEk7uzCyP@ar`IEWG$9r~t&w&&(neGO=83H>&GK z;J?nY{&f}Ue_BoO1tR`6ClM;0jY|MU!+#_qKyqXTTLcPowz(NDZ{EFI;hlQ=5?R!e zhxc_=Ecqr{Hzu%QlXxm7;NwZEt2&xwEZ=gT(L%imrcuujwQA4!@ZJTx+FfTaxCy(S z7uE5JBannSW&WfanbGu_;A6dGPKl(xJxtoY7miMFv57{;a%(x{&u4}r78@@*qeRtB zOoPNRKfKQr_&U3wSvfE(4Cknvf3^ImyHKR#%Za*qIgu>#r)5Rm8)QXZleW3fk_p{L zC?o~HUJUg4a-UoH0NlzL{zf>(Y;3p7EUANiLU{X0mm~tg$6|y6f*;{Zy*~dqY_}mf zpML?ldGYBu|KKY61lRgy()IZbVeuI*k^@Z#a<2-4>Mb!068*!R&vL>pdEA7!%18xBOm;35bPFsO5eESgx&9kQvO~P=28s;@|TD4 zTJ6E=eV4MC@eN=dW3~U5JQLRk zpF|{D702XVdfv;@_>(${uIXpNy(y|Mw*DD7X|evI8x%M)K_vh8H5dd;z|I#P_axRp zX2Ps>t)9?$CVxWn!N%jaw7Z}?b-ttd4O_g^{u6)C^Cb(VoWWk%f5TYyI^j8|BCNd+ zqu<27Tihi%sR@;BhS6Nz{};^sL};EdEiFL>*lR{SPCAOlJR?62Aj`f3qPg|`2e7Z| z4xqHS3dsHDeLb*l@{-7!7(`7(@!?r*C7sS}0M|M6-tXIR1tvJ8m64u}Ac>ek2$2g9 zs`vnLt0Xs%(PpI*Hh?AG!~TV4mw`^*8jV<+e+A?caUn65kOX`u#D_|!*3_}cS0R^W zP`~C_7u{y011OIJB9<=0vURoqmj)Bw+RX54=!0N8)d{HzRhL$y z5}Y1OQM*BBpgyJ-vFZ=deuId#r$Je}j#q4P4B?6Cc#bZcGv$En3(7y0tGmQ+R%f0L zyT+r)9+?|CN$UvnA8sSDG#r6!6pGQGi`xANV{8HsK#*o45`zVVKE(?J5frR@T#$zp zB9UG;P$#{NIRwxoh#ld1WyuJ3i~td|KB?6ilO*u+=1saqU5#)T z#Ce6_SP>1$Al*XCdzwsOJj_Cp+Q_OUFE4G#gFs}JY!_wn9H0%Q6yw|B08e08dJW(E zZ(3pWx>jR%ADu|#2@73%1S<|Sj|7j}F-1h?D@tKv|4E3}mKIP43otWB zmH8J574t&Ef0|(NpJH45PqZWU-C2v+LDHrRidf{aC|H5r1>SpM93=7iY*>}-84CGW zASbb$`p5=qlc(t^CV-a=j{EaKU)>F<%gO>U=Rp)i@iKfcpxyrlgu`%Nhi=GTZguc_ zM6tKvf=qPoaCAMW)1n644M#q}Dj~6j2h>cv$YEG?lCxAXjP8pw58XJp9Y49Z>TuMN zlO6C3?A=e8a5S44F%Aj^|=DYjxIpe_j&`F3a?e zo|l`==yqh{Ed)3VDak^aMdAp#mCy-?_4+#NaLWAUvk5UTqQxKg?^E~hQ`f9OvV7e| zE7hJ1N|&WN|E)dg@pt^K{m%}*)8C4-mC0R3_t$gJ$UqJF8}+Z`}h8c z|Nrla|L?;8n>;o(`z>*)P6a5jjb}HRCamq7i}k;@T5B|Fjr;Lx!;AGVN;!!gJ~fdC zUpE?i55na^Z(5&Cd;PjJm6<~rXJ-{-nkN}dB|g6KF9S7-CLV^%A3AmMPLYPZ2K>;s zCnGxM=aOjIq#lrfSRArF4we>WCAc5L19k{HqcOUxcTKnGX{T z&PJe4<)<2qcX$zwX^G%de~gfVl7I-qpyn*HH2DKCs3glqot^~79d%|_XQ_HpcB3zu zj02?#y5aNZ#g`5?P*~WhE*1BDex|}7I~xR5K^CK- zq+o!b1aS`|?o~x|YVhKATSH6%k4yMeRnxh1K>Q8-E+k+TEcD$L>#OW6k=zP4e<6|f zORT~+v*OUAkQ{Qv18_&a1jx)l&e_4!?Qnnh@xiYfd)wj8K0?d?va_|l6_z&k>36AW zvo@HF4dL!%&fxIZoflixaQpSkJ>+26-9v=w=P#e_Y}3=77n{#sZSA~x68=mzU+f-) z&vu^g98j|dyWFKVwzIvD<_ftT5L@$8xgBT-Th#E2ofnVysGn`52M1C3f*yw3ztFF6 z|LMlFXXq_}AbNB6#r`g}^6Gi`^EM4<5Fh<6FJN=dTRM#kA7BZa(f51@~=Dl+tqMmZ)YFt@OW>RI>0(o zja@W@dM~y&YuE&|gmunu2NlEbSNq#;L|fY%k9G~gGO-Q4EP5Rmq2%uvtYP0mks z&Iii}D|))9sDxynDSS)1i1pYrY15s+S;A8fM#@rW2`rRh)MZLBD5x<=Kh5k|=3v5j z(u0?VrgBJT^mNkuhe8@7cr_!fG5I(f@SJg0_8+V1ekQlh`t);_24VIkEk<_)mth65 zn(p4?5JE?IXlm(`lp_eT$()1dRhc;a-vW_^QPI5fI|Sq)C@Rkije=0x_C)4UXhko=Ij_79flD z_?-zSwGM2gXblN1(gbja5W{l3U1Gtuc6SbtkpZ(VfvqWt6+t%5u~$LR9rdQI@<&s? zcEwK)!5$%iF@0~=@PmU_znpRCqvSXn^^ujtGY8Tng58mgi@;_!J5L8Gn9ro!t%pISTXDcLCeXi}_DEv(Q(eO14hwT+=0V!+ znU@uH=i^4HZXCGCu^cr9$!8+%Dgx*M%|VPNNT4kIb9`?tTn0T>iDgX=XM-er*IHW( z0+{T~#;OsLJ?jj*E!iM^E8DG-ec`u*_xwuMkd_UWpsNMG(x8v!zvPo8&F!)$q;k zOF;0q@D_bjJ9r!J?`=NbA@s7fe}GTOp+=LrqFQPn-|2j8ZxZ_W+cjltQ&+^VcwOZQ~#TVPeVv5d{QAXgfM1gf?}TS;%mqDm;pbw;2b_FNr>ZHwxlAlDh^oGTDJ zi5?*ks(?8zllf)J7EBe}<+A(X{;S82cV2T@bxCAjCA$3xCdx8DyFOL5l4PKuHMtr8 z2H5>$4WxGtsoa4-w27qINrsYw1Y51=Ty&J46Z_&+NR0U>Ci_7*JxON$sfl6C$JwHn z(BhKNB92h;L@1acw3r|i$WQeJ+=mvt2f@!5rlTrEsOr`SNhB{#?POiE5y{ZH2rG&g z(o!|(!F_zjdj>2Dtp==3PA(vgRn*FnWckwUoM4NDK-7Xg@Q*{;A%f3LN9o4Fdn4E; zA_^Ybr@Fr4dbS{gQ5H3bQZV?t^Z&Cf(LWTnHHiYxwPQkVd0qUneVLL;dLG}7&wg%JX0=#gF!6t`;+b%^%WQrJz1zCk*>~rLy2` zi2)Oxu15Z7*<)qnn48Az?4&Qzt}jXKLbwM2#xnPKVxpt~*J9NPtWQU$9E_>)y|7VBnvPParn6GS>M~Eg=cr5UZy);8iByBxDx%u95cz zy8Fb7P3RSS?Mz)ef(U`Kg(?Cf?Zd(1!l4hTx@+VFRcBgcBmVcYVoTP}4f;3cQ_DXs z47&fR4PlqJpA1gpz)(%J>2g{c8{@JjKUt`1HZ5OkK%%CB=7ljLvGBz__*&?44P?13 zRPj~d#Uqve?s*60lPMLifq&442)oab?SY`(wl6-%64;E0lHI@Z>B32jJW)#x5sOq3 zXxTDdL7D57V4RsX@AYt)@x}!tXYemZf<0t8~V&FY}k8I2v`q65veZNlQ zkt!wb%X@im)qlB`e|f)=t9h^R_FnGo12Lb0Fp1fJPV^y@cliTBV45U>qfw0=c#&Iy z(=f?-cuJ7;Jy1Zz6hmaZ|1$BQ<)ot=35u@5S1hMR#vjYmeRS`EOqOfe+Ix1S){8I;7 zo!y`fx*-!}jw)5Yi-6 zGCw$`6n%O=tqKEd=p*@l2#QQ`+yZNpET#XqZfrl$8ig*734pSgM`Z5S>m38PwTZtogfry|cHJ_+e zpBe|6)VV(#C)QW~M0#2l?HA2V`>Z&`O)OAcgt)LUqIxcJlR{xUyAA@Q9~(7BmiT(W z8_ZphPXKsMv+4+>Md)!Jxa-N%rp;avcV48m9I~i#z6iBaclemypYns&6PX{dGgrJ8 z(+OjdhXU6iGH+aq*nuKADBc`?BI#{y0$tfd6IIJnLAcL%R_YbIU}ddJ_xKLj4fDM2 zy_jRJ@|SY87?(`PcSL`5ELcA?mc{q{nwxHLci_!|Bf6QC#1*Z_?yD_*?WKWQ@V1_V zS;&}#$P0%mVJA9W#o58NVB?!S+>nuZDg{SpngrqH#=W z_VioFeAAN09!yfCejO6Zaw-B>^iv>N{z+99wbTZTWZV(-@l>v)eQNGG3q3u>iY((D zQP-FEHePJ)K6iPFl*O=N`Igi8G_JC9V?|>Z_NJ)KioG+TUWAHOl|m|^$6)NpzO|hZ zafg}ab0tnT4(`Bw5?AHp!E;XOS*HhAurATz)XL?6N`d%_f;$j;a_oRRE)buzP*3W| zCGVH}o{JQSik4gq?nE#}q#69I!9hxLI%=7C^ zvNpg-i3!faQzE;^wQw}?YBPbw`^DRJ++*w7agq;?uR@NgMxi14#vg%67x*x4%y(+E zmi91tvU$@4R_0KzgLjVY`+j!V@0tQf{Vc5Y0i(TY1i|m*?-X2AS^3;gPjFw)5MUc| z3J_U|j+Ek{e4vcj^-7excgNy7Ef)Q$T?f)IV1bYX&wROv(n$*Ya|n=@df9O|3!#Kn zfmu6;PeFk^y&#B{*SP5@5G%xzaackX#)SxqNyvilebp9(YHMo3f*NIY*qx;kaBzaW zHC9?eh-uT}Zrg;r!zPI)vV>K`Y?_X-G5D;CO}t?qCL9tT<|S!(I*NlLp_Zc}!mv&k zLXu^*qI%?syx-K6Df0@%xe}m)%$q1r&FS|MOjpYEM}OmI-IMIqPUggXI>ZI;E+}*N z#A~UH=1o^7;aAH%z*=-|>{mNzzId-`%W>Ua<2YHzVn=Goq{{MH?#|OZxYP1>p5$>O zxrWjKPvsryxdy`P&|l6^?XypJ#Si1;hw2iR7w42Gcs>$=IHv*U7;&0Ekrql5ukcv*bZXoBFN*4?r6ccz+H?AQ zeoG5Qa@w8T7MlK2dh6kT$@ zraZg0CY-|NW@9__+H47F;a1Dd285`q8!YWs@#e%NE3dHyTVv;bwMEIISAT*bGAX% zHNzj>n&jdX5E6UG#+hNnVHdz2g@$a?b7bN%Xan@dL82@9Vo!7qYp5hq1$DLo;0dz< z2}g9BdZ95g*m{I~bVYY4Mz>;}MMY=5F8B}?)h{`T88>0mfzYx@;?Lue=BqzH8}&I+ z$M6(3<0mGSy2SiuStJ{diP4Z+^7@Tdg=u%(swy(1nzrFro?2V~lDUyL$X5LceI77E zD_;zcZm66)&sy0$yG75p14v#IZZB(_RkZ^?78$=pb7HGK#Mo9g(~I5i1vmlulQ#wO zkkY8%Z5=(^JluHpthE_}f9m$1DQM&Z9s_aY)f=Yg*VW@qysn;5p@j#p!!qIv5>Uc$ zn&q`-`F^wfpjm!6Ul39@Dv17XD0tWJ!XTA?S6Du(Tk>9))u7qT+D)P;pD=8S&G3+e zt_zbolzsahme-`ys?EjDU{-QHSffE(JE#1}s@7^SQJWx}uJe2}nV6%1i=H`_NF;H{ zit*lpRTC_rb`mclj{E^Tb%L2_kz~@7%;w0hkbD%H@>$WMxDgz&pc}I)igzY(qVmln zf*bl(9LFQbIk#U1Ue1ry)H1TRo%#Lv=uxCEhy~Sjrqqi_4G^_ZKyhD#HYC%WhNQ1SXnaBQuc_p9 zWnI@fXTQ$W)0+;mOn5egvQ8cFRwUJ#A13bv=`Sttcafl}D7-2gzNh`|m%4>o) z6#itAiE?T@(W|=gFk)azhX@^M>qM+9r$)r?H6>;j66slz>sikaPbliv;A4@d{>D48 zIf`3P7n{{zbD&(|kJn!UrMCR41-9~Iv9I|m>tS=<5Ee>Z6#DlPnj}LBo5lMG>4Y3% z8Bo#mQH&!R#xla^9bJD875NA9vo34lx)$$h;CFe_^T=_Jqy?4A5X0EZNmzjQeprA% ay#4?9_s73K{{83v`~Ly|=arHG*aQFpA#3IU literal 0 HcmV?d00001 diff --git a/tests/data/SPECS/amhello.spec b/tests/data/SPECS/amhello.spec new file mode 100644 index 0000000000..ac281d1caf --- /dev/null +++ b/tests/data/SPECS/amhello.spec @@ -0,0 +1,20 @@ +Name: amhello +Version: 1.0 +Release: 1 +Source: %{name}-%{version}.tar.gz +License: GPLv2 +Summary: Autotools example +Autobuild: autotools + +%description +%{summary} + +%build -a +cat << EOF > README.distro +Add some distro specific notes. +EOF + +%files +%doc README.distro +%{_bindir}/hello +%{_docdir}/%{name} diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at index 03fcd1bb7e..09bd083b39 100644 --- a/tests/rpmbuild.at +++ b/tests/rpmbuild.at @@ -44,6 +44,27 @@ GPL []) RPMTEST_CLEANUP +AT_SETUP([rpmbuild -b autobuild]) +AT_KEYWORDS([build]) +RPMDB_INIT + +runroot rpmbuild -bb \ + --define "_prefix /usr" \ + --define "_docdir_fmt %%{NAME}" \ + --quiet /data/SPECS/amhello.spec + +RPMTEST_CHECK([ +runroot rpm -qpl --noartifact /build/RPMS/*/amhello-1.0-1.*.rpm +], +[0], +[/usr/bin/hello +/usr/share/doc/amhello +/usr/share/doc/amhello/README +/usr/share/doc/amhello/README.distro +], +[ignore]) +RPMTEST_CLEANUP + AT_SETUP([rpmbuild -b steps]) AT_KEYWORDS([build]) RPMDB_INIT From c0c1e763be3474b296e745fea016f59b169da119 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Wed, 1 Nov 2023 10:19:45 +0200 Subject: [PATCH 3/7] fixup! Implement autobuild "template" system (prototype) --- build/parseSpec.c | 2 ++ macros.in | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/build/parseSpec.c b/build/parseSpec.c index b1910af5e3..4324eb2726 100644 --- a/build/parseSpec.c +++ b/build/parseSpec.c @@ -949,6 +949,8 @@ static rpmRC parseAutobuild(rpmSpec spec) for (struct autosect_s *as = autosectList; !rc && as->name; as++) { rc = parseAutosect(spec, autobuild, as->name, as->sb); + if (!rc && as->sb == NULL) + rc = parseAutosect(spec, "default", as->name, as->sb); } } free(autobuild); diff --git a/macros.in b/macros.in index 374d338413..9f87f0c49e 100644 --- a/macros.in +++ b/macros.in @@ -1349,8 +1349,10 @@ end end } +# autobuild defaults +%autobuild_default_prep() %autosetup -p1 + # example autobuild macros for autotools -%autobuild_autotools_prep() %autosetup -p1 %autobuild_autotools_conf() %configure %autobuild_autotools_build() %make_build %autobuild_autotools_install()\ From 6035a58c853fabc3785a2aaf5fa99374dcec5177 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Wed, 1 Nov 2023 11:13:24 +0200 Subject: [PATCH 4/7] Autobuild WIP documentation --- docs/manual/autobuild.md | 39 +++++++++++++++++++++++++++++++++++++++ docs/manual/index.md | 1 + docs/manual/spec.md | 6 ++++++ 3 files changed, 46 insertions(+) create mode 100644 docs/manual/autobuild.md diff --git a/docs/manual/autobuild.md b/docs/manual/autobuild.md new file mode 100644 index 0000000000..14cd3183f3 --- /dev/null +++ b/docs/manual/autobuild.md @@ -0,0 +1,39 @@ +--- +layout: default +title: rpm.org - Declarative builds +--- + +# Declarative builds + +Most software follows common patterns as to how it should be prepared and +built, such as the classic `./configure && make && make install` case. +In a spec, these all go to their own sections and when combined with +the steps to unpack sources, it creates a lot of boilerplate that is +practically identical across a lot of specs. With the odd tweak to +this or that detail for distro preferences and the like. To reduce +the repetitive boilerplate, rpm >= 4.20 adds support for a declarative +build system mechanism where these common steps can be defined centrally +per each build system, and specs need to just declare which build system +they use. + +## Spec usage + +In the most simple case, a spec will have an autobuild declaration such +as `Autobuild: cmake` and no manually specified build scripts at all. +However it's common to have to manually tweak a thing or two. There are +several ways how to accomplish this, what's appropriate depends on the +case. + +1) Use append and/or prepend as necessary. Need to delete a file after +the install step? Add a `%install -a` section with the appropriate `rm`. +Need to `sed` something just before the build step? Add a `%build -p` +section with the necessary steps. + +2) Another very common need is to to override the build configuration, and +this is why `%conf` is a separate section from the rest of the build, eg: + +``` +%conf +%autobuild_conf --enable-experimental +``` + diff --git a/docs/manual/index.md b/docs/manual/index.md index f5abb3f02e..12d1ddfd3c 100644 --- a/docs/manual/index.md +++ b/docs/manual/index.md @@ -18,6 +18,7 @@ title: rpm.org - RPM Reference Manual ## Package Building * [Build Process](buildprocess.md) * [Spec Syntax](spec.md) + * [Autobuild](autobuild.md) * [Autosetup](autosetup.md) * Dependencies * [Dependencies Basics](dependencies.md) diff --git a/docs/manual/spec.md b/docs/manual/spec.md index aedf495b11..ea4310378f 100644 --- a/docs/manual/spec.md +++ b/docs/manual/spec.md @@ -206,6 +206,12 @@ with old packages that might still depend on it. Do not use in new packages. +#### Autobuild + +Automatically populate the spec build scripts for the given build system, +such as `Autobuild: autotools". See [autobuild](autobuild.md) documentation +for more details. + #### AutoReqProv #### AutoReq #### AutoProv From 11769ba976ba64ba90bc39609aae577f6498fe4b Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Wed, 1 Nov 2023 14:02:32 +0200 Subject: [PATCH 5/7] fixup! Implement autobuild "template" system (prototype) --- build/parseSpec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/parseSpec.c b/build/parseSpec.c index 4324eb2726..ea8d30028a 100644 --- a/build/parseSpec.c +++ b/build/parseSpec.c @@ -939,7 +939,7 @@ static rpmRC parseAutobuild(rpmSpec spec) struct autosect_s autosectList[] = { { "prep", spec->prep }, { "conf", spec->conf }, - { "generate_depends", spec->buildrequires }, + { "generate_buildrequires", spec->buildrequires }, { "build", spec->build }, { "install", spec->install }, { "check", spec->check }, From 15d6f9ed3b756099db8b690b0935806f21bca6e5 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Wed, 1 Nov 2023 14:21:32 +0200 Subject: [PATCH 6/7] fixup! Autobuild WIP documentation --- docs/manual/autobuild.md | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/docs/manual/autobuild.md b/docs/manual/autobuild.md index 14cd3183f3..72ab2a5eb9 100644 --- a/docs/manual/autobuild.md +++ b/docs/manual/autobuild.md @@ -34,6 +34,33 @@ this is why `%conf` is a separate section from the rest of the build, eg: ``` %conf -%autobuild_conf --enable-experimental +%configure --enable-experimental ``` +3) Complex packages can have things like multiple build systems, in +which case you might want to invoke the macros manually, eg. + +``` +%autobuild_autotools_build +cd python +%autobuild_python_build +``` + +## Supporting new build systems + +Supporting new build system types is just a matter of declaring a handful +of macros, one for any relevant build scriptlets: + +Scriptlet | Autobuild macro +------------------------------------------- +`%prep` | `%autobuild_name_prep` +`%conf` | `%autobuild_name_conf` +`%generate_buildrequires` | `%autobuild_name_generate_buildrequires` +`%build` | `%autobuild_name_build` +`%install` | `%autobuild_name_install` +`%check` | `%autobuild_name_install` +`%clean` | `%autobuiod_name_clean` + +Replace "name" with the buildsystem name, eg `%autobuild_cmake_build`. +When Autobuild: tag is set, these automatically populate the corresponding +spec section, unless the spec manually overrides it. From 52342d4f56c3429d374f1c5612877fef46fb349e Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Wed, 1 Nov 2023 14:39:20 +0200 Subject: [PATCH 7/7] fixup! Autobuild WIP documentation --- build/parseSpec.c | 2 +- docs/manual/autobuild.md | 16 ++++++++++++++++ macros.in | 8 ++++---- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/build/parseSpec.c b/build/parseSpec.c index ea8d30028a..a9d100768a 100644 --- a/build/parseSpec.c +++ b/build/parseSpec.c @@ -900,7 +900,7 @@ static rpmRC parseAutosect(rpmSpec spec, if (sb == NULL) { char *mn = rstrscat(NULL, "autobuild_", prefix, "_", section, NULL); - if (rpmMacroIsParametric(NULL, mn)) { + if (rpmMacroIsDefined(NULL, mn)) { char *path = NULL; FD_t fd = rpmMkTempFile(NULL, &path); if (fd) { diff --git a/docs/manual/autobuild.md b/docs/manual/autobuild.md index 72ab2a5eb9..31376bbcf4 100644 --- a/docs/manual/autobuild.md +++ b/docs/manual/autobuild.md @@ -37,6 +37,14 @@ this is why `%conf` is a separate section from the rest of the build, eg: %configure --enable-experimental ``` +However as the autobuild macros could rely on state from a previous step, +it's better to use the corresponding macro alias instead (XXX not yet +implemented in this draft): +``` +%conf +%autobuild_conf --enable-experimental +``` + 3) Complex packages can have things like multiple build systems, in which case you might want to invoke the macros manually, eg. @@ -64,3 +72,11 @@ Scriptlet | Autobuild macro Replace "name" with the buildsystem name, eg `%autobuild_cmake_build`. When Autobuild: tag is set, these automatically populate the corresponding spec section, unless the spec manually overrides it. + +For example, supporting the classic autotools case could be built on top +of existing helper macros: +``` +%autobuild_autotools_conf %configure +%autobuild_autotools_build %make_build +%autobuild_autotools_install %make_install +``` diff --git a/macros.in b/macros.in index 9f87f0c49e..8b54826d0c 100644 --- a/macros.in +++ b/macros.in @@ -1350,12 +1350,12 @@ end } # autobuild defaults -%autobuild_default_prep() %autosetup -p1 +%autobuild_default_prep %autosetup -p1 # example autobuild macros for autotools -%autobuild_autotools_conf() %configure -%autobuild_autotools_build() %make_build -%autobuild_autotools_install()\ +%autobuild_autotools_conf %configure +%autobuild_autotools_build %make_build +%autobuild_autotools_install\ %make_install\ test -d po && %find_lang %{name} ||: