#!/usr/bin/env python3 # Sends an error report (if the report-error class was enabled) to a # remote server. # # Copyright (C) 2013 Intel Corporation # Author: Andreea Proca # Author: Michael Wood import urllib.request, urllib.error import sys import json import os import subprocess import argparse import logging scripts_lib_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib') sys.path.insert(0, scripts_lib_path) import argparse_oe version = "0.3" log = logging.getLogger("send-error-report") logging.basicConfig(format='%(levelname)s: %(message)s') def getPayloadLimit(url): req = urllib.request.Request(url, None) try: response = urllib.request.urlopen(req) except urllib.error.URLError as e: # Use this opportunity to bail out if we can't even contact the server log.error("Could not contact server: " + url) log.error(e.reason) sys.exit(1) try: ret = json.loads(response.read()) max_log_size = ret.get('max_log_size', 0) return int(max_log_size) except: pass return 0 def ask_for_contactdetails(): print("Please enter your name and your email (optionally), they'll be saved in the file you send.") username = input("Name (required): ") email = input("E-mail (not required): ") return username, email def edit_content(json_file_path): edit = input("Review information before sending? (y/n): ") if 'y' in edit or 'Y' in edit: editor = os.environ.get('EDITOR', None) if editor: subprocess.check_call([editor, json_file_path]) else: log.error("Please set your EDITOR value") sys.exit(1) return True return False def prepare_data(args): # attempt to get the max_log_size from the server's settings max_log_size = getPayloadLimit("http://"+args.server+"/ClientPost/JSON") if not os.path.isfile(args.error_file): log.error("No data file found.") sys.exit(1) home = os.path.expanduser("~") userfile = os.path.join(home, ".oe-send-error") try: with open(userfile, 'r') as userfile_fp: if len(args.name) == 0: args.name = userfile_fp.readline() else: #use empty readline to increment the fp userfile_fp.readline() if len(args.email) == 0: args.email = userfile_fp.readline() except: pass if args.assume_yes == True and len(args.name) == 0: log.error("Name needs to be provided either via "+userfile+" or as an argument (-n).") sys.exit(1) while len(args.name) <= 0 and len(args.name) < 50: print("\nName needs to be given and must not more than 50 characters.") args.name, args.email = ask_for_contactdetails() with open(userfile, 'w') as userfile_fp: userfile_fp.write(args.name.strip() + "\n") userfile_fp.write(args.email.strip() + "\n") with open(args.error_file, 'r') as json_fp: data = json_fp.read() jsondata = json.loads(data) jsondata['username'] = args.name.strip() jsondata['email'] = args.email.strip() jsondata['link_back'] = args.link_back.strip() # If we got a max_log_size then use this to truncate to get the last # max_log_size bytes from the end if max_log_size != 0: for fail in jsondata['failures']: if len(fail['log']) > max_log_size: print("Truncating log to allow for upload") fail['log'] = fail['log'][-max_log_size:] data = json.dumps(jsondata, indent=4, sort_keys=True) # Write back the result which will contain all fields filled in and # any post processing done on the log data with open(args.error_file, "w") as json_fp: if data: json_fp.write(data) if args.assume_yes == False and edit_content(args.error_file): #We'll need to re-read the content if we edited it with open(args.error_file, 'r') as json_fp: data = json_fp.read() return data.encode('utf-8') def send_data(data, args): headers={'Content-type': 'application/json', 'User-Agent': "send-error-report/"+version} if args.json: url = "http://"+args.server+"/ClientPost/JSON/" else: url = "http://"+args.server+"/ClientPost/" req = urllib.request.Request(url, data=data, headers=headers) try: response = urllib.request.urlopen(req) except urllib.error.HTTPError as e: logging.error(e.reason) sys.exit(1) print(response.read()) if __name__ == '__main__': arg_parse = argparse_oe.ArgumentParser(description="This scripts will send an error report to your specified error-report-web server.") arg_parse.add_argument("error_file", help="Generated error report file location", type=str) arg_parse.add_argument("-y", "--assume-yes", help="Assume yes to all queries and do not prompt", action="store_true") arg_parse.add_argument("-s", "--server", help="Server to send error report to", type=str, default="errors.yoctoproject.org") arg_parse.add_argument("-e", "--email", help="Email address to be used for contact", type=str, default="") arg_parse.add_argument("-n", "--name", help="Submitter name used to identify your error report", type=str, default="") arg_parse.add_argument("-l", "--link-back", help="A url to link back to this build from the error report server", type=str, default="") arg_parse.add_argument("-j", "--json", help="Return the result in json format, silences all other output", action="store_true") args = arg_parse.parse_args() if (args.json == False): print("Preparing to send errors to: "+args.server) data = prepare_data(args) send_data(data, args) sys.exit(0) Eg?9enZ8)#5(ֵA@ tIɔ N뼁 `"UFZI|(OGfwGod9aay{2i֮?%k]KqxCW-Z~~ A2c_؍iÃ#mZ'Z껹T.+$ 隀KP_`|0(.z:E3}/f7|>@xB'}W>o^;i1/+֝Nϗ.hg ĥ9 T"RK,O*?Wòf^AXqu4o{AoN(KA Խ<5I*bcyU^ǢQF $>ySCda T(Cp_;znae¼=)T@F(<\$Dy1pc=w[DFt S5@P~|H 5cWkLCH>Rz=!徦Q=N?#OpV կoA[rl'~Jőj|~:VG>Ï/l"sr͠F?z@iz;Y8N@=۟z0[?n:aGܨ`F/ލ&PeoP X]_ZF]a2/bY g7[>zP`}:ٹx:w} ޴pNҚ\fۈ(m"!=eNI\IHm\N+5G_E'\<^ (jЬ=dbk_Uv" ?7W~ jg G+( az#lGd#K P@6[HC1mK(JKb xr}9U-e,jV+(b-o@PwV(SbdbqAW(5:?9qqJ kvOHtWR4NvGiR$;8*KIv`#LTjU$aYhewdtqً"{__l ?K V,#D),+wTm!j |ZN-_( jH>3nIL p96l}w@σ^kLAOL8nM[!e!Bf6ꉌ`wȳ:O]>u50$:=jD#f>>p|=MsDn&nC&׏&ZS YYXC7u TӚ.PJ`bFSD$ ;@fv `Nm= }g(F6̷tllb榷7JD1 N J*ܗkSxzngrK. 0A"2Þ1@T>`5 | Fj]~!Ϝvt$fq~8%jR{:D<2Lb?G5:fY{S0`<;hJ`_z`\A*|̘l 8vXd̅TT;ezYdcE'K4Ceer:.uG\8Ǒtז TPF9 %kN)L.KpصhP6>d`CxG04`o8ޔ%%X2և i?qs,P3ȹt2ohHQI)(g5xu/d*`c]  l)Ad,OF܆_n"o If['imдɐ^8ѰHN2 z)C; H%,ZŜ[ h)7:^zIWjakI:b;߶7h#+Pq,KLzA; ilۍP ˧{; ;Uv0(S;QUÛm:( L9[.zHP:HDr H۩)ǦX_(SYɈm@qʒr~_]o FcYJvIL9C-#2 8?6J7OOC$oru&Gαĭ&rQNM2n=љmKtWmݣIa6$_`=8q'5PzHqB!83Q-# Jz@F`dIp~lˠ,ƿJq$nYxp1W0YIXykPsv*8BwnuFLK)-%72s=taۢ&_"Q KB"D/Y D!ΈuZ;z3M8{7OJhgOV-rDq- mN9pݪp8ps/NptrnS+-1KȊ :>1) *eGuMyk8HGͣ;\@)qU"RO"X~R(:hSUΥp˕0Ebf&GziewCt#0ʘх1aߋ;hbZ[=nvC05S8>(Ґ];\ppa:4 C f'G'%@d&og»0'hqD@c8z..1l=!dHTm`"`[wf2Xv@a\W68 |'b8 }Eӧ.݇z|Dt +/Hc'2&6 'T&Cbۅ3#w] @g[|\\k~"(ƃK1K~Ӿk>(_S0B@S8=RZ=&_JBd|އś9opBV U2"oAǽa=(Ҟ8v 'Pse:*֧rx7(  /-Cg'P>U C9'w !0=/X<}n+7:QVlX[;qcֆxe섙1MEgPEK[mpO{hݞuH?Wu A)Q  ]8P/䢣**[(j  oP<.]]ԦҿҪmJ:$m|=>DP|n( V\H;s^={[\@#ơCP+QXG)(DP8(Hf`D'8+ꬰ|=(ەf< Xr ѷ0Bi.>poe`|0frֻznHI;5ph̉;=Ӷs7S{BĤ"O: !42&AdKr *Օ7FFh,G'z+c4qfbZyxYo۷ yAč rߎ_>6 : ~+A$lHAtC.}/~,l qv?ݐ$.Fx&n'L<[G]/2wRe 9Ƶ!-;?O:k+5܂AvǥHq#/_X7 7?[K==Z}Ι-zPPsy0k_-5VkM[PGE)cFA$]$-t% ` N#L,3xtĦ_/"+IܯYsxm?S.F0؜=3qvҌb`4/{9/E2yH#td4?i VNu\xF_$=ӎl$@I&OE~՟Av=]W*5?궜oOCw㜄t%BL1#o$䡾}15!0R1ӎv3b˭d#:MIt,AW?pG*d_#.VOh{PE$ N55W.4dd l֏pgE"yb%vu?~]YdM7_'{a}O٫DNd^}} l j敽;w.$J( FPf~5 ,8A(|/a(bc}&by \rSǹ)BV M8Y)z:?t|‡W@xEpٳF+kaWf}}l)u] |c'F~w|ix.Z3<}hh"u25x^) b2l /8Rћl0K¨Ҩ 83_aCZ2 Bz9('gXaH4"9eLmT=!pѲx­=%2LUHX6|\:J8i!{qO 0 ܂ l=0=">* ށ;ppPdH\VɦĹDOH/w΢(n z 6:8r"@&8%_=}'NȆ21zzb dl>OF}jQ]:]0](9!.1]8 X$\%*x\<=]}~4\te}m/<1v NdoGv2K9i"'=,FIHADER2uBzpQ6ZW^eV軨 @}Ke#pqYT_1~c5Lwwu֪fChӒtMDwNBBʓG&?{t,h`gg NLXc0fm CwUŨ1JaQ+ĄOIE.%Nz= <ƚqȏ'Q8iێ',bE]y02FW:-yHH4^{b~ipBa9ሿR"ɤM@۲ltv'pT]an|4W[~ӈʕ2 YߛV=;R(`Ĕ!]K DP}5=㴹Z,qv,(H8O C^g;2PcoSQ ~7؀:x_ɳI"y[T2l|\*X˓Ah2].j2(ws7"tJնMn*_C㋉WDEkrޕ,Aۥ(lč9a8ّ9vtCTg`v+X~>1F哷UfH /nuk_S ㅮ^E R/)^c 2k-0KXߖ%HsʻL Yzp]*lQj+{g Qk.x w!Q'%--WfXV:&mpck%uU=xz!USnh 3H4*~>{_oU^͹D2^};$TQƉ olu'n LC}߱lyIptU1rj~]42@"4T5aEah+PVѼ+GX(w(q 5\Ꝛ5vqc|(X"cl`xDG@;4UbiALSYbQi@8EeN^}"9+VDOm:'ISS=N&CʓɟTn rdډ Nw_!J(QUcDDJ`Sd<ٗ $#E*!@Ȝ(5(A*83ۢG;D_d~Ͽq.J~cGc`_z0(1F Eb#%u'5APwirqRȬr}ƍuq>~3wt0aIR[= w E\˦,(8zIʕBcCSET]- }rZ(_3U?[8 BS֣H@T(s YE#K:4?{ώ(fC;Ab50 uCgw.i ]`"6Fa2)hl\6AYTvyAuv QAU܊k;2Isv~RXZ*ȠVؠP]xP-H;9؃eIHQo%G޶ƺ֪e1Y01n̹y;!HF Vcu2ɨ]Ϭ.,~ @碋HI WQ. b "і5CQ+4Ņ !H|v }gbz2v25uVER =y#qE#ԁ([doM#7zW|cj/p?Fᬇs V[: V\N~}'rpkی9Cm(#҄sӅbm CV aC[<XP1'S⅃)VqV5}vTg _FZu5z4\#Z޺3z[AK]Эrr.цt+5̡FhcZo1$|샠; %K8s& ^lwf["S$4=M?{]vv[VHذD@r4*At^ gqFr/ksPXtP i BL|vrH!& Bh{AG)@Zt)U4@  pZJ@IM (YHiJQi*+"?TT#m{Z_TBSChȶ8)L31s'0P :$ևxKҨ=˄'CN% P@TFEd@Sp艡?FZ-lE(2Ӎxw4$h_v ,*4/!huH{#   O$@DJ@$X|F)I  O'Sb^S,^ 4W*QrgKg4M)i,8?}{5uƈȗuzSzd'&i-5`ciC8g@fDD_戌00j0_*s'׊R$QlAr>IF=LGQ0'ۥ;-KoSVPٌ@Rzۜb%Ee}~#%QDV)T,eJ 1- B/EKypK'փ(\!Pa{p])Xw )\ TXg,ke6{ٟ8i.F!PCХ(CRh&'V5C!oay6^v*:ْ(@1CF"d>G5W ">=*b>1yҝB=X]W+f uqPZn67^qg!E,@>]~lh@ H+8Ex1pAƝ!6(e;m ] _ +Ff|zRNta~)H.8izپYE @)}M ` E:*k(;/|We9ՀPď8 l|EPpTIU t/P6*H4|Z|5i mAx14杳cnF 9{Ot=@Ć4JHF֬'eI)(T4`ݺx*0  acfyP8B]qpQ'2̉r0L!D)D%ҍlc*"#m"&!C۱S8#3dis f~Dbrs2 v\!tU -G5 x.Ti0~.sK$BnЙnҀCȜ4N n@~\̥vmjW!lCJM3)Ff ٳn`quNy0"Y*$Qvl\XTp25;vx cE^z^$b.PY8;4WUlLb5:Da+J=Yf(B"ܶd8QPp_~ +Ѩw4dߗ[`EB s;:a&-e]tyX4/ᇿF;!3ǭpa˭0uJ.jabj)ej**> X[Ik'a@(_ӺX${*iJ#{q LAAqda=/Im!0Z׈K 6>0(zPo7E 'S;k'k&A7UHw6| Qu)Qpil50>(|wCg  g19u)4;1iG65Z#PH"Ls רwNDN_5If681h _W@x%SxDlk{Fމ06|l_o Sktp]@qR˚-W'>Aph1Hho c\k j@4CW%S FXp`Lu_I>[:V Ս#5V"YuAPLUvW7磄wnX[ F_bó1A\<W%0SWgf҈֏4*4! IA9VNEw_?L(e*}ı-Ul*oʍY\—$R$L4U-D 0Q D,@Q%TM0%E * (*L!()VY>n!GZ &()3"$TDDL)3UPҔL1R  ;hd:'oŷ| Iq< ds$勠Ⱥ LpuGxb3(S[36.x^] >i R-2@lzZW[>~_}p i N1>f">283ÏT< 7={-iv†0Kī99VᏍ_ q~`:jf,T<9adCşM?ɚ*lqJ,#OC"6E!ΈPv H`(+[ܶk ǔR!Y?zRj*uL(vF@9 KwNU|W\`NݥHQHZt?q[܏L@ lz-0N°ҁpWOwHJR]0b5;~lP`eRPD c~w|ѺiSsE-g&X.>ʄ9ƻ&9x*&xzZbX:L! H-bK* ܥ}8B>-7A)UL1|ޒ n({ЌWSo ?eE8A3sFh=a$F`s~i "R/tXn!ʯXX5EF8JnQqF!2'-ljPlSG'0ƣ +P"/62q8Jpl'!|xUDێACCm[Rzo25;nWYT98> 2.5D'q*oV =/wY;[ύP:{Ɇ,R+7m:M} QџF0ذ،^ԚD @DhqsoTÇߛ}UȒʎëw0$; cB-"XR~W#@snZ=?WRu"yHyBAÚ6vԢSlA( {&@Nx}lUep%os(}Qin\kjrfg msU6uk7P$IՑvVM/٤; U_A4Š(M~7>n"nYS mLs)H2mp4(RE#m(tNQPHd]3^L;&r kpaE!*X,gN#* 4(U(d|z49 ccM}|4߷3C?&Dۂ{""!޿Oe"K?fh^cpONSQj!I1#qS!LEL3vޟ=smaB,(4KhdVRwX._Vlt|9q霨9(ȈCz"e1)~R;oBX w;L|fwUP+dGg! ZVaK+~!u5ʠAHT]SUZ<}X8-UU0پ `:}T& ຾g(9Pd8b`yR0ps4~ׯRI?E-AtA#tFI$/E۩ݽ|yߜ`ߐ4_ :?vAd* P|uk~t˱@"#?[o>ۭOSh>ӑ`o)뇢:>ҷ_8zUȳ~Ao/٢N⏘ ax)Ph/y˱HvacO]qkr\p #ȪB&Î_:|T (w݀JON;FdFôU3a2)ec\Q2]sip~/>t~co ,mzC8= |0Xiɔ@ycOq^VNssC#ik;  $A%DiX5?Samvv)OwAps28G혮COYX/\,q.=|x;:Y=kUA #Nbi< BgCG?b݆p[}u҃}x!.*8Y7E5TYϏk̘Jdw0UŰ~'%W˳{ی%>A%hPZjq?ON?ެ5 rvMZ+!(/w倖Ɋwؖ^|yajw '\qr~7. 7/6_[U:R s4[0윙\:5p!"inb8&+Z~Na^j,aFI$_98c@2k=\:_P;ġ~#+thGPrIղ5yr! 5s+&QXTI4I$rH?x÷֪P5\ðr~A e_>_wcz]懀ZzyS 8 ^ {7l}Hא)*ެbKݟ%ר$,8 k2rsfI$?l$s{$r{RT):8\{Da!GxcakkYv塬Aɽ>C=!<(P"(AzUcB "X9(~].B/Ղ7:`-wk_Q_̓b`k~RdDO \=6yo:yz ٷoԣxx!sZӐsc}o,cl!̬/`'W]4:?!Ex`Ȣ)Q7BSXC,5 n5*N>_'T V,^W3eך9B| eLƯy~O4,e,gXG7է:4:>2FMѽڹpon!.ZQl˷o9oCDYUsaή^ REb˭3tMRwOJ9/X pgܴ>7h]PCJZūӬiq團F8 )Nuf { !q :&Cj;φ ^L aY%,=?-Os32W8*hx 4*|V5vo_9 WB>Y=S<;^`0I j-Q}X<.lpAw5O\k tZ.0jI^Z]PY(5cd]R^Ƕ@q,fljLϾډ聻ZϭaA^{=u3@qNaY3㞁 3H{Lpve}3Wr̈(ף%G#aQ` LfQ 9.]=޺8 - Ap}DLnʢ!L8D|e0GlDI{+T!1+ Z``P4Tc9D0ŧˊо Cewվ=8ܶ%rs&r}anyޕUO;UoT*No)[.!vCx;0/5|W*K*8O䈶_T)nWxm\ݫ%yVcuV9ۛcfRDi )Hڿ|Bry?;G\ss= S/38n@{.nrk fTB+FcdF/D WW5oɮP+U{ lZ\o67^9V)MR`jvi^e$ ODZ1{4ko"vb&?}n;I_'<ǭy#T/OĽw1 @gG^eZd-焑LlHg@$l,#"fQNgbH4)=ͱHJe k_Dd@)o>VL['uj;=)X8+o 2#A>_%D})/*T BW{鯉cU#`A>&~̬ Vs{k> irB.VAQ2QV{?ˆE\3zW(~ޞZ?ataIpDмxzzwlD3΢趨B2=ƀpd|Ny~Y >*3L7؛p;4ˆL D$8s“ EsY-ogE@JOB0(*‚P@0@U.ѻ=V٪[{=i%M7hI$RAЁ?U[pǺ`AEOִŋ) /~VΉM?(8&z# prBFuX-6?}Ѡ8Ӝ UjVGʯn2e<u~lw򀦱5|uqs&v&P$7LyG)  S^6PGsg]8K\fl;Dox )XnHmGΪ/}aGC&4c:4D<C9z4#;.m 'mHe4#IdYܮCzB#+#hIX$@9w.`C9.Li]?,2@#_ƒmTgNjzBqZC3@s`Sv&C,rM LLX˰? ej'?e׬ų5\58z}'.&SkSA_pwX =)aA#{A+¯ PYVNl*GN[ fOge߾㬳` ٶ;K-Q(X'^qnEе c;FE oVW-0]#yW qeӄРP|R&9X%OKw ϦN;&W+JXfpeF+ͧ# NYbp5s{P eg}m{qT)mro{vyIT;3 ͍ B x:ޓ}ywW_/o(U{{Oٷx&twD4<]])O4XOnFV8m8i}H6Uم~rEF㭱Ph^;_{H &#:caՈ9xQ[u׺AO=z\E?okv#H7 ~ZYDq@5?@@I-h.:+9x>:oer:AJ2CW*ƷTsEE̽CXZYYcp5zFb*N 0v%QJ"VV=aFH1Tѹ/l$ zQ1Mg9D <\2f] Vq wYCӜcnsynKl_06i8 CSB7Zz1Uq 〕+L`"'les6H<&&1?5280n/V{fAl.Qz՗+Kr\p`2(!C퀣z6KLV+KFSig+q5j9 *곱ؓ~M5KN>N-"Ou)=EB#q( 29sJ nȡe<Z8'Pŷ7A$@JପdO>,LD^riɧld{m2^Hc]UÖ acϨ{[R$_Χeh_ "1ȽmP`p|5Pr˴[3sdhݏkJvE?'յefME ^Θpqѱd/x>1QGDC~/"yۊ9kO 65m%a#<"c%v㰞vyrwI,"ú$)}QQΫ?Ki^oSuJP}ӖLi5 Ǔ)} I 7j3gC#voڋ5NBh&1UmN 2E3x! $A$H=5iu_o FzW:bQwFy$1ش . kV0*e&⥨F3p'8>yU0p `zQ7/ndddtF)r%*}JW?JY\:/Cgr4ݙI ~)=.XI?>UcAc"cNTYu9WAK43 Ju\hbxoyF N_$򻟡QQ*ǝ`XA"g'&0?PÓO <ΜvdS md\+uqoFJt8MFQO0#MGyiT"37Zkz[ߴz䶀Gw@n|Iwi];c?78(3!/C!|i<"~Ȣ*d{Bur8RdS A@M&1P[bTAsl2oDI ?Pg HwCa|_QlPvOoG5#;Z<EzDe'A- PDaOVLNN߲["xiGˏ(m ˠFZ>l kiҲܩ-2 Æ/铮x舴gkVބwVVi -P:ogA-C8qh4z mS?ϼZyq$,((_MrV1 FP$!چ V! EASe1"P*NذIF?^,yIГ,KDi垑yLV"6o}*"'^^W8%ևXjIQsw3GIFs ŽOYTNhoG`z!ǚwɮvv誫#r2z+hlz(i[(j8*?5*a"D(@0?,h^Lm*+ ר=jٓpU.ˬ"Ë. Ŵ3CXhb *;r8Th)(f$ s6DD!(MRFϥG&$:<.xdݥҚW-qe"(biۭ.S=zntBJK5ĥAmR[/pqJ+1qDu)*֮]̒/T^.Α,! h@` F*PQvs Wgi ņ ь@ 07߁pbsd2}1a"DYB;_xRM8|c:|^p*+R16YP$XRJ Nb= K7Ú@`2 G4 Df߄r@ .ؘDܬ׼aؖ[@Q,Z!dXN:6 *u\DG]-+u]7#]l#h,u?yꞦPAAX.ZEkk 9}#9 >J*s]5@D  1S;WyNz?P-(n%- @>b9J0PQX@p H_骧`*͢A8,s"!.r"Fm5ٛ9<ԸIEr{u~Q"fn`m?|NwC0, Xv˕F6ɎIeuӸUY+m!}J<=g ũ# j}Te_) *7XS*|X5̈.;tHrύjMάN*{MJ{IݍL^"E 3Zzq *1M8Q,*9D4)yJvdajZ[0!P9A/FɛS#Ma)@aLhhLD` Ln zZHV@b5ZQ0bd^Fr1˜JTiG283S yTX;C/5z L~=δ1#2?̄^ܼs۰5׈0E=O_(jjʃHyFҙhsP 2`3<`!+y[K2GTA\oOISxʪ>w e+iOʑTcQSY80&9ـiyT];]ÊCaG_L\fᱚ0tQ`.~([W,|PzER@cm:X4&YV>cպ\=ҩ!UHxC/`_g !ZkQJʫ+{4RBa*[!ϩ\nWw+w33s K2 λ7Tu$&t7mSjDA}Cͮt_׌vV! zy>%Ps|zQGw;H7b]~Q`;-!hڈjCMz[qMN/9[P8㥨 [%J$wdA}ӆEBzq[7!aӲdݭXsv<>7C#ɣ1LȇطGa|OauNVv_ w )ڦ,uqΊX$RjI>RF/$)ⓟBK-NO.ȩ"7P>= & 7S ,@ԇu3=xNԿ+/+ָ6ȸxی÷(x5|кl"]''?:{) MP:&Ljqe_YY&sCcgRƸc ^(>OxjB-nA~Qf;W~eHjY]I91D1E{ơoپpLw}W1nR:vaCDܺTA+ dC $1c$p|'`ۣCEO0%ړסd4}6¾s"(bmKW$ddR uH@Ă6LF KV*)J=AdO`kz ЂB~b9"ii7.Xl-;:s04 mv^iM$a27A7 })ӹeغK(:¿ F|Vnt,skyw6Do)}4FF 8R/r*iΟ ztT-|0 7ԩyeujh>e9H7X"89[2n`h2c.uPmTG$uhf n+GsjԿc='Je|LŊT iV:'Tϒ?ˣXҦVZVq{XBWtlqQE'>0u=P:g{qCPec9i8OXv)G;l^=*-,b=4:)X0EA`/%G.M9bʇԠ+YR* JD 3ů3ode|vvٕBmi$"wvDKLMW:F:-WT&`%Sؔ "Ŏdz $+A/o`yQQWf} k /P$pKc; {u@`ŷ$e/^Ns=ΉgcCH,T|Q$F 6p{b+ISF*όT7Jz+Df1Bx!j9Q۟%|$]=bB2k1ȻB*.T+hA`~u kBRaL]R}c6-kwS.SV :!O qnӹU֙:p::ܕHoW[~c 4FBn>;$HF\q4jGs_W޼ G/Ν;,e#$8_aKZĻduʣEpT'1:n0GǬ%č}}s*% PAHQA.7(>GpY DR7*qzꛄ&DAEvޔ(˪ޕ&`jXXQs:GYH;x}Ξ`Xy[fo>S/=&fBFFG:.qpkٴZQlxb.Ӌd9(Y=a-k'ј< {txzХ^ɉT~UTJ ;9+ ,lo5'DpMBK!Y|Us*U5;q azfbBH{4C2Mvov"-AVy#lN31(BحnJd0[)Vίoq.9قzp\5au+kʝ'2y+,"܈hB7c <e!}O"qHۉ#g ևޔ+M@1oxat``%Du7ͦJ{(`KP21"Cs9zdYhCe߼|%~|{8^A>'3~zv@,ȯOG8gvg!qr^ǧAB(DdC^T M vkp"Ϻ9W\DP`Q֚] ֛QU|6<͚Ѻ'uw]s+ȭՆc~>`amNPb-xnrVa:TAVvW +cw:H{F-CaBdw`s‡:=ЎEݵ3dyAseՆ3S V˥+ЇHT"`$Ќ\lm#Ox.}h>EZ8p/"[7˦wcd7Οx ]WmWTҳbg-`~tE xY;rl<:y40&ݭT,&zϤ,'r)'bI%\ns{1gqhg3&​EKKb̵-&i[><@ Q85v9e[i (dOiT3D]-Ո1É%`o )T{kG HQJ896\\$oF MGȅGkya8Z@ bˈ>|P,WS(6~\~t*H 0#M s|1z;".Yˬ%[ dm<ˑܗǛIC -[&RQ2Z,4C2o)ŤCӠMyG-{A<(+},M5o?LrʌoQ̒{wvB Wq3Oiig{9a▃ 腫и9q-J[U|lWOV*6`(*o6UQMb(zQzMxVC)4e]Lv N+=_ ? 5xǞϕ {bilsZ$|;6L(;!2f (*2˱TL0t9i@0, CذQUs iq+HRTs m-E RP`f 9sUbm=GT0zf2vb3Mb8VSLp[`i,##Y|@A(cX]ovUAb(@k9zPvA0Hk"g\uP·ztDnIQr <-1]!Cʝ~gtI?qrcZo|p,I4Pt_[DD"+P:]wX|pQ"99SƔ-օ[Ǝ;2N/Q #=F g %jB%ɒdLGz8Mm$䄐d 5̋b/_U鿄>IZgqZw: \8wıHde?6SO|x|ɻ”΢xHUgH_ l%)ZcLitbØڼ/!S\Y>Yl,4:P.2(kD c?No" C ^>vCI#u$ǧ<5CU)co|B|57KW ׁ oL潧f-CV ':x@FDL%/Vr@,s`,e <$O{N0LJ2\<'CC.=:ȀPF Mr6mr2N\w xta?.>PϹB%ْBl#ةǷB}K\|⣵`hg4zP28q`[yDw i JK{Iv'੆G)[ mPkg|u\&9*y"=/v;~8* "ĝ(lcyVud ơ2/5HUv[eHV+{*Ӧ`p4yX(ҷzE\2"-@y:B NpQCIA4].%t^ȵM pQM|=R( 9WEy=nhxN85B^~mtv$r+07Z=0gjIOL%sWlvw3g3H2齑򸇹r!l5;vߢxiOtLL 0>3Cх(iYmZ(ԩ"&Pyun 85Mz'm *;*I2'?о+ae] D|kٺ+7(n)Bk "s'kub"J[6g"zHEP4=QՕ !fgYd㭩9F8+"VRNlZV:5zIR,\B.gB p)|rȹ6B:9߃-ݓZD]v p(  9YGN|˂:^,oTRT1EOQ7h Ӂ7.l}?RjN\sKŵLU5d$i{ (,t'}lm('4DRPA%&6^\M ނ;HpnڎھN=0eg@Y$m0AA1h jz DIނd {ͳwyjW)#8ir1` ^s;(*p0TEQbh.T `!z,zDtrBgT8dףLȉ 1#= Tbeq+c iJMdP1'A*~otEV )Baso{mv # sӜ\BӔh=4~Bo1plX{NPzqQ!!iq]_O |/ ҳFr11Xt φ8nou5 ]07p?v $Ch ;h"ZS,S9Ps #U#a#>ʂQ}gF&v˅}01y^M?e= h؇v[2PIB[ȯ+"L! /eU#X!~pyv}}Behi\ ¸؊ gkd,t,=KļH![ ^I]v2H,gMJ2@#búb*Ae%!M:tkm|#u}9bڋ/L68>bIkue*cO]^B"krb yPXzmvxzLk*]ЉMv*V±޽P=C:dlEORlJk3$3^j:>/R Cei}wAj4tuL`M21g`jׄӞb^ eP+rLALhREUX;_||P&4 hPኞha39c49ŔP@gA7I,5P9+xEXj$!ar8sŊA 2,⠯oXd/kyM@N4:.P?b!LT?~ {3{N͖\!1?sLHhZu͢VjEv8p%ds0t~{ >|e;qO^(H.U퀔x e[]^ѢZyYy0le32v's/S;rՒ", v IoQZȼV/^ł2<SguO9%f^ݹ %¾BWw3Ͻ8y?k)rJuncbb+WQUcx[tvԗqNY>߻/#A2 ʰ&!cAkR` ]NK[7VBݒ[ _fit}b+X0:q-ו%2)3摧3sHs/ApX<d)z iy|l>z1Z."@ܞ8QC^VQ "-)tҦ%7I` 2Q&fݕ^/\dR͐¸N.A <[2F7žx) Bsy5:?l &ūm&{Wc=g;SDR̄yi^^5P/h•l+DŽ5"&78S`ryX{qӛ< PN*U!4?@|:@k"-#Qrd.xiJ\Y>Q|8qT;geG*~@,.F!QA?Ҿ񖶿(r9X8tBK<txXbcG9|iWEidflzL01ӳn- p^ٌ#86z47>ޏC@D39c)4 `*: 9hQ~ߋu7`}v $|j~oUR5( Nf23ٶszL88*sxQyeBHȎsXaݧ-3W^0qm a#w)!^H(4,w_z:O>yZ1Zlaf ֹaaOK%MAeRWԢ⯃b(B8_by RA(, ,6,ip31$<  d\,IZ!K\,w$㠯|]ʮ:Isw`es 'QDb^Sg|Z%R0yÖVR ?.Pݲ wP;^5 2H>N"$$ik0QAƌ0MLwC~;vGAs۳kx`]pfoA[*!z"^>[~R;A5ԭ%*`9 ?gmDD7_!crށFB; YMB%j $-ʞ%;D/|z9 X9a7oFSӜ,2bFYSr(oGa.d:X9BN/e, t6l)Y]\ieajPZf`]Yw @w-a Ti4A@@+ژ, v?Gvksc lHߏח{挃 1;; oְHf'p8,Cl3 |X[.:!ߝ4bnF:Ó7uC0@܅q!똶7C_˦8ܗ0'^l#t3k72T\ XaDҀ}@n`/Ȅ^kBq#v]ߵ6Ԃ)ݝGZ9YqVw6!J5$9wֿ#hwv3RcihVzZqÑYxlAyC]Dm-m ه(T'|oW3V(>_(ms3أӃl\C06&Iy]&*,jHj7mؙ;O=qJf#^hWS}gE9Dx-O{Chp鲌c@>cA}uQXOx{McQCN;0v }oaHYnc2LeD7oxN! ł-,qf*Xq.xzp#mxqQG?{ u8q6a2(*>cټzPwEc%k(\bݪSSˉ(|# Ǽv>Gᓷ=#F݇AL_(_AcRj^E4 T7яJXV Qz-T GlPz.$, Z G{e]P, 0#x::ťd}h6nJt=但ed,s4)|Fŋ[|90#W5@"ÉBAks$Ŧ^  7K M1U$4}`M'suo d`\jLdT"MPDi&*8ǿ3M@ m~r=;zb$ oxU6T3N&w5?4$ AorTA)s‰ <:gI@)ui"Z|ݒ|i8Wd\*k]{ ֘M \!/Xi[<EX#T֚xCl;#Ι(a F=[pF~"GѩPӍE7 H]o'kՋ!A@u.%L-͓+ qpT-76VILa@G~uX+2|<{J1P anϮyG:#XRmǘP}b'(sC#ξ[C vؖivWCv}cO_hņ1qh Ä j+UHк!eO4Z^F!a]BćSQ ~|^_긋*TD9!1#$0kFcmBC͠NzzةvsAS2mKDҡ5>7&"}3 NјMɚNv0@^ ( T3yU ҂t-S7][%3lT4B1!_ѡ!-$?+ ^{i.k-ky`IBnBOXDX6Oc$!M(P Cg9͗*Q󩂇) _ʱ H1 [Qsc*>.0 ]N^'i(zsCILt`'qITes0]1]U%WW{!# 7Ghx;L-`# r!_p~7cA֊~C@ѣA!@I}yhp3W0@!n3DTCz0GHw 4>ƈp57{;Q`.'W\jhjU0DR_EWh4?u0Fۏ~}y@RfˊM9)ZH(8YBA[R]/KV~Ӌ7COgчɃ{Jx~'죸(HEAW |.Fmb""ڨRF'|Ki'['t?2d@H [ݛ? *_NԝKzHmKp܉D}^-UUFUl~dPg a@vbX~%mr~uۃ:n< ';_f% [@)FlӖ FZk.:VN\S93x70.-/ne{SgAm LrOú0m_pӔ8$-\Q|vNߥ{2]QnXl#.+l2ﮃZ^z(FfXm1ͣF݀y+]7:0brVQlѷplE(v38vC]t[(850d$GEK-6ofrfs|#"l1 F.PKUM3$OJ@" @>5]6,V3ݦljL1\Jl{~oOt!78כMztxY{hŧOMEx6%*8 !b+TzjR=D 4]T86< 4'O]G kE^P0D}_C~z8Qc V}Ut\)uwRda'E|(mg^pEG Ψ{s2RvՂ@ٶ 5&kLT$K{.?دR~$4h~=ADVGϖs1Rpi&i_YM{4 9B4Kju['zg,exV_2\ mNȞS|KDI.*XƐV#(-6Ѫ DC*w_ϴM76>1_aUίs RA3FߣG6ڙǻ]; /` *z ARaH)$au{s{IBUtY1P*SS+/dn,H YPLVS6d߻ޡL_+ cF7TN԰̩׍z.0> ^->ʋTd/?rKBg落 G woϏVoW]KmAA4<(\O;V0x c%вUBxoӑI+0:3ݷgw:PcکE-xOL"L}"vILh˭[=P}qr ^Waȑh(@.)kתmy75pc?Cٹ}oUbDM%S{d,l Wݞn;OU|թ<}wQ*g!3«ZK8Ia~'A) o4 N_bvaxhf0 Ja|H櫍4 l'Mh*T0D  he\饷M ,6?7qڷik@ MT/y=}|3t9m` a3GT5rb4N5zF6^k(A G攨A\[-ȡB/C?˥Je&b'rV@gbwmTR%*6w[gGʟGv وwIaKYk6>q"Nϗb0=?ݯRZ_iPpĀ|Q`HQXxU}M!˺CY쫳A9Yh Ԫ<CН)nu2Kg LD8A3 5n^ls 2 ߵðN[v DhQʜ|>Q;|nj!{p` +" `{g QCYiUAOӚ$夗%K HCuq"Ύ~n\ ~^x8_9^^9|7\Do6*mݝwx]_!͗t{WݜN^R">]=zٝxx4_Ԋݱh~# b~`A\%0~kvcԐEbDB4YmpMD B%*hJ*  Ԫaf;=|̣$?4G4S϶WC(oŰ#) ?9f?7f%_m{قDCRj1fhc[} <k8#J҂Wzy}~ݰ΢XG)G8(uuND5qR_·FΫ1Bd'cqG2_T^psSbۧQ%`7-nTD 5| ˟Gj:BEnd6]h ѩT %pj}GxUǾϳo:_U0_:[|߱zJϻuRd=8\=J)*׃"RONN\ J B8۳vcO#tՍ[ 7߷mr˷A\7x9'wb9L93_paoX-T|=& ׭G#-iZxa{to눮~L>^k Y?:'n3.gγ'_\"=M'_cڏOe<<=[aqV5~;l+i8.DW~x7,z-{CgΚi/zAGno9# p_?xPh3Q?MEu}S2hcL(D顿yG`[U8 /mr91P?3~?qX G '[F^Q賾G͟xpkHH }@4NÀHA%10A,"ąQ)R1wͿx 5i?!gzjH~q |_`Ca(#a^U?1.& 8`j)Q"PBi/7b 4y‡z@2dGawԤ!}^8z<'!rL,B 7gݢTvRm+SA %zCC zEk1}et!TY\׫[wWaYyލvCOz,H'Qxi"ʪH<Ɂ"dN$Z0A0]*:2j$&B!QG"qDR4Ph FUU @ULGwgHh9cIpE2Mݥ׍C$;ItSrC%Aܱ;l:32Ф$M0M1hIQylZ|+4@`F4HНGA'F Oc]ŧ"(.XvTY (X!JFj ) e%-4Gѝ gp[sH?"vm6___ >/>>>WX$5ȟݴFEd@ogB DB"(rCҾj05?ͽ*XTo,5*)XOPr5"PGjp D ivƚI/D(wa\'Bp.t/Rǖ)cA"ee,KQii$\7bB}&uZ_wƪj&xr@MPP 4$LPƞzzX^À:vŶ!+Q XClLN`smp=q¦wA΢[пJې%h19wHf6-lb1vƉ?ٻ,DVRĈ#qT[Z =O1o4ݦ-[!ӧOA@+ ` ln8;IΫ5q1dlV1֮CUNY:5Vܴd+bX+Zv>\gVGYZG7`c퓁DEi&9945j h-)|V3:Ibi6 u>fFi7YvjՑSʍBf2_ `XQc%#oC\Joi>tLތzd&QV ZyS:5;&\psj*Ml m22]i=*Q$h"ƽcQFF4FQ`ݲ  s1BҹIj9eD4L2Baqhtf:sfane"\Tgf-"ݲiwem_jEŃH7%qjwO-dof/=.6~N!ƷcedNCrvpSXxk~pjkwIǟM)H}zÀNՈS$T*| ||hqˏնQrXe0 C1 Tbt#͢{d%QLH*(UA'i@(on4 i|5`1oPQtRic+l'tK y!gԀ5=ž5Tlc 7Ue?=4~)^|gt(ڢiv,PHßÄ)Z|NyN8S0w/JbQR(x_/JRB!&DR۵58RRv0 (d+)2nX4mD{y#.Jogi4Zqt f=eB,b4j5Ǐ}L+0a&Z@f3$ B b)Hrg*1Kx($`T jiϵ6/" bogwIrMe#Kpox]A L0xk09(s1{QFuٳ[u<`sȉ *RQzL/XG: q:dUP¬GOR^jn^prv6|ҁE;e.܌oONfkIrZMX8=tsOC3YKX6D00&‘Y 0( Z {–=$ScDDr{vL3-j7i#4ؔjW{HyC)^oA),CԦ5(c7-F"%a2ѱ p`iNy8Xc4k̹ erd,m5i] u\t$cas#ЦGFZs,D8|a ] j.4v3g18XB4 b[#1  snAk>8)^@FGL*0Q\@ø.Ύ]#sw⬝#0:=/}k6'M(z끳9uZ DF~ }0WPP_aD|O)?_dt@P7DAHB <o 7BoBn1G(ApBh⇉+ӭƢ [sE<ƲROK/e+clD,pc`kJ&"hZ(l ynKOV )K1 (0 Y5VF=D蓏 jXӺajJ(C(b)]jo,mdMmGUA#֡ޤ;r5k6Zi; xK&frD.:M+:j#)ظxR.EalcSsDɌgp3%)6d熓58MY,HՐi6iРonL2 DWeFP:m)CӠ>27#wcOt"i~d&j5iDq:nv>Bs-BͦH>q f|9_W T0H HmG掲wݛU~JrM|P߃CV քǾU Yu8Iq?,]2ZU~9ȎL #dgju\*X4X Lˠ:'ME1@XOcNM 3vO႞ ?0 r*IN=9w.!J2io7G<N"sͱP/- ,D1Qe`PXZzrovZh#6jvQǃ9P;BnO˿ BfFUr hUA=Ē/"f=,!BFJ 9"}8Hz^4c; B NaASM 3pX&"S?O/_G<gQa\DA,>4'Lr~% ~jʴӔ|/5bcI_G_H|{uG?W@=}i 8{{G܂ {|!MaO#<'QXG5bA{wܴhv.pQt~;zvՊ#@K!;wof>_P?7TxG`AbҺȝMm8@?PMvvVp3US8]v MŸ}Q 7N;: RfA";,xdj[Cp:<<1M„&#D8s]:i#[g "2Қ,Ã3,<d@^V3A<%'/hA|p47C7A66<!bT|ABTVe eK㞷wbFӮ:\6IZ0Qͷ< #&N =d v~"OcH֠Hrn:?9I}W1؉n⥞L9u,F|Yb'TUsYׯlbd8x3j4uH2-w{y(:F7nx1%I2(q`xDe*p$=@^h91S!Pw`5Y? Z@ Ac*vv")Nxhқ0* KUf_Wr0G~_I& RH; TDRO~^2~~x^GǜUaT[_< v@d"BEjaJ %6Ɯ@D-D[o'!BH(&$iį背T Ī*%#a ]"HG ED%4RURCM҄$R3@JSHA12/@BBB?Vkw2VBM@@J5uæGAZ;/~'g_e1+N/^o> Jh}Z1F`Hn~X)yQX}(y剌g?%? o*U\Q(skϵ &:)6(<s<4E@]KKdmsĸIa(Tw6rN cٵT6Dt-Ճ7 \xG3 b"bCfB2hlu?=J o+j9E+!c!SĆϱ<~?Z~9?nR _=زG0(Z}W0f@EZ47lӻޒ" S[gnu{*vP=KA" Al?'/[xrruڐ{;@VCRt-%c? _YFg#èmTэ[E-UQA&b3 8hA{5Ҷ, bWbvI lr le@JtXal}FVǝ*m Z'@7[A4*Pĭo FQ6C4i1F){O,cPb!H].11#ZH261̧k<H"884x1ʍ{<]:=iC0h!o{q(FaZN'1 ڠvPݰ(`=Ч O!v BIWT`]LC;Bbht[fk\nIǫ@4͹yryrBQ|لp$+ci{8[30ポE/ =+vY]YO ˽N.=dʘ!*Ɠ!lcqQ-jUdy.!3""ޤ!VJ(-!cN$R?JrcXW!ta, ]&`K:0EZǕm 4 1@%6-uAK@H\![QHLyn|!z;zxÀhhwnݐǍ 7RK%Y5>~.c|˜`b"s3+Hy< *pH$-!D?228X [ o֮_=YrT @a0ྡkgȟoAvwÕz$֟ff9<.-X{1 é|e7-..~VFYFXgb# O[*pph:#nuΗ\C A_ȹ7ja2rgT&4;1!?_-/גLf<2:5ߧK'0ՉቦvLO-nji5J.qt `㯕tN auy Fؠ);)Xj%zvLi^Zm3'-:F*y@ YN,ԅl4,4k#hlAog֙<.gi/[UD 9l`)2Ŭa#:ϰ9#X+~ipfs:π+,Jo?3cG`i5!jA=B7ZYB 0[';C|yč] 1yڇn>\[:V3ABPxV"v0E+,gbɲ֦ωW0x}G~s~7D~Q| G#n+@w "'%3,;_WzaHDE Qrc~̍CmD ښƢQB>Fy쬇LJB&{Y/GwK1{M7IсȑB>Cx{)nv˳[HhP@ 1FP Ձ|q   0Qo#Li=%`]x܋$|n=iN6.. @@9w*.*Aq `XNqN(ېZzLƯ ?A![5V2->z%A,>X…9/q9#S"aC3l"Ő'Y}m\775 $B`3=7O#F,uI_VüM21arC⏘/Æ DN%a8 E6f%8vxek9\W5aȏ_{c d.ژQRk(>Jcw "`٦hۂEe0pf }%dNB%' APj4݋g,p>oRFCW`_VSnhl޵%$gi8e96c} aC\WӉjkaT7k%ܺ/$RR84I&+#^A >9YRI̜7m\1ON SjHs)۔G O-q\D,_1(B\/{. Hq\b!wq/"xXcQbBڹŗ/x:c.[=e.@7⭿=N"ŽcԶAWl~5X?QVfB,0e'VH\EQ=-qGVla[w`ΔBг(i7`ddȍ%z ‹1U?*0&+V̾"T~SG+I2blHĚ=`~lDzc*'@#k80]7ڤw(sh[`텕C{WoT)hOzNZ eNǼ!$wY aK5vMBAD\F/l`bHD1UEwa|&GS>#qRd-RNPSeUZcT/6Ъċ,⁇TA>OCNd&v|6'PNe:#Cv F]|D)YU+ש*pK"0?vHρסKowY\ݙQ6(fDn.d1ۮ2-{_Hx! 汵7CIe>! gT':%@(Lv/lۊtJ02l"CK͚MQ޴"\<-[c#~|`v#-,=J_"эd>|^tz)B\CU${ҸMӡȪy?\ֱS}@@yOGƝqu[P=2OvyЖs^8W۠1/).F=7"r@^^+ȰDDHkؼK K.HFь:SR4Q+HȒ#Z7>=۞\j"_*0W,c<ݙV\:mBۇx HBў7!ъBә0CM nB w>!&I,"=vtOHF+N!HkQ@CwdmG++lٓ5D4V>ߠW!|@ HFT*HoƏbhQcj}/E+2B>{r߫ޭ1i!㧱BˎN!2GsVGu=.h)^Gg'$QO$@"`z1WCd׮Aj:dE m+dih\$pgv(r.:U#XGԧö W(*11V-%"h` yj1 43oTgŵ5O &yVs᱌%Kzq->oPJ ńDSop;m·W¼(* g"D !UƘX#ڵkTHmMz7ZWwͩ k~ѾN[~=܉ZHzn4";.I.7N48˛9>2VqMԗ}Ԓ0z0hmMv[lfpd+t65Ej?՛8}5`}Bo3 d9.f rx1NNGkpbw0OqZ;t"m-!BwK5 mx:='n;I;i[vҼbzbl'$ {\SD It !H<"\( 8tĝA0uMhA r\tǕS~v͘Z/) H'ttcqVIҥ44懝?YOo$~Di5?597V6Oԧ (RyucV? 4j(ؙfs7/Swy{Oq"GΡ̩&6VQC;ha0H {ؐ)(L-,TEtj/K@Ѧ,: $`i):N#.) )~YtEX\XZ 6I:-ɉM*`h 2S3ԓ*cNMLf]P`bi?c/A$9 n!9T)IKICȗE={'ʱ[NWCHltDҾ瞊X5ΰB[`B{+{UA(ag_IogC}:^ۓ5Ly=nb߷fŰaÊhpδYNkr<γ$[*"M9CB H&4T#H@R 'n.oe=!y]d Dja Gqڒ-?}>{yqn[a b =0<\bbb n v"R8_oN\nAt<(m b$#TRlIEiqnN@LX]L>]z-vߪVg1X^SfkEXY,nA <~;lT$}0oˆʦ QKHk-e9im Bƚyg]3岅ٕ B`&7Uil°kS['04 6XÓ@ l$Rp `3)4  !)lgXP8BoQdGZXmF