#ifndef __ASM_ALPHA_FPU_H #define __ASM_ALPHA_FPU_H /* * Alpha floating-point control register defines: */ #define FPCR_DNOD (1UL<<47) /* denorm INV trap disable */ #define FPCR_DNZ (1UL<<48) /* denorms to zero */ #define FPCR_INVD (1UL<<49) /* invalid op disable (opt.) */ #define FPCR_DZED (1UL<<50) /* division by zero disable (opt.) */ #define FPCR_OVFD (1UL<<51) /* overflow disable (optional) */ #define FPCR_INV (1UL<<52) /* invalid operation */ #define FPCR_DZE (1UL<<53) /* division by zero */ #define FPCR_OVF (1UL<<54) /* overflow */ #define FPCR_UNF (1UL<<55) /* underflow */ #define FPCR_INE (1UL<<56) /* inexact */ #define FPCR_IOV (1UL<<57) /* integer overflow */ #define FPCR_UNDZ (1UL<<60) /* underflow to zero (opt.) */ #define FPCR_UNFD (1UL<<61) /* underflow disable (opt.) */ #define FPCR_INED (1UL<<62) /* inexact disable (opt.) */ #define FPCR_SUM (1UL<<63) /* summary bit */ #define FPCR_DYN_SHIFT 58 /* first dynamic rounding mode bit */ #define FPCR_DYN_CHOPPED (0x0UL << FPCR_DYN_SHIFT) /* towards 0 */ #define FPCR_DYN_MINUS (0x1UL << FPCR_DYN_SHIFT) /* towards -INF */ #define FPCR_DYN_NORMAL (0x2UL << FPCR_DYN_SHIFT) /* towards nearest */ #define FPCR_DYN_PLUS (0x3UL << FPCR_DYN_SHIFT) /* towards +INF */ #define FPCR_DYN_MASK (0x3UL << FPCR_DYN_SHIFT) #define FPCR_MASK 0xffff800000000000L /* * IEEE trap enables are implemented in software. These per-thread * bits are stored in the "ieee_state" field of "struct thread_info". * Thus, the bits are defined so as not to conflict with the * floating-point enable bit (which is architected). On top of that, * we want to make these bits compatible with OSF/1 so * ieee_set_fp_control() etc. can be implemented easily and * compatibly. The corresponding definitions are in * /usr/include/machine/fpu.h under OSF/1. */ #define IEEE_TRAP_ENABLE_INV (1UL<<1) /* invalid op */ #define IEEE_TRAP_ENABLE_DZE (1UL<<2) /* division by zero */ #define IEEE_TRAP_ENABLE_OVF (1UL<<3) /* overflow */ #define IEEE_TRAP_ENABLE_UNF (1UL<<4) /* underflow */ #define IEEE_TRAP_ENABLE_INE (1UL<<5) /* inexact */ #define IEEE_TRAP_ENABLE_DNO (1UL<<6) /* denorm */ #define IEEE_TRAP_ENABLE_MASK (IEEE_TRAP_ENABLE_INV | IEEE_TRAP_ENABLE_DZE |\ IEEE_TRAP_ENABLE_OVF | IEEE_TRAP_ENABLE_UNF |\ IEEE_TRAP_ENABLE_INE | IEEE_TRAP_ENABLE_DNO) /* Denorm and Underflow flushing */ #define IEEE_MAP_DMZ (1UL<<12) /* Map denorm inputs to zero */ #define IEEE_MAP_UMZ (1UL<<13) /* Map underflowed outputs to zero */ #define IEEE_MAP_MASK (IEEE_MAP_DMZ | IEEE_MAP_UMZ) /* status bits coming from fpcr: */ #define IEEE_STATUS_INV (1UL<<17) #define IEEE_STATUS_DZE (1UL<<18) #define IEEE_STATUS_OVF (1UL<<19) #define IEEE_STATUS_UNF (1UL<<20) #define IEEE_STATUS_INE (1UL<<21) #define IEEE_STATUS_DNO (1UL<<22) #define IEEE_STATUS_MASK (IEEE_STATUS_INV | IEEE_STATUS_DZE | \ IEEE_STATUS_OVF | IEEE_STATUS_UNF | \ IEEE_STATUS_INE | IEEE_STATUS_DNO) #define IEEE_SW_MASK (IEEE_TRAP_ENABLE_MASK | \ IEEE_STATUS_MASK | IEEE_MAP_MASK) #define IEEE_CURRENT_RM_SHIFT 32 #define IEEE_CURRENT_RM_MASK (3UL<> 35) & IEEE_STATUS_MASK; sw |= (fp >> 36) & IEEE_MAP_DMZ; sw |= (~fp >> 48) & (IEEE_TRAP_ENABLE_INV | IEEE_TRAP_ENABLE_DZE | IEEE_TRAP_ENABLE_OVF); sw |= (~fp >> 57) & (IEEE_TRAP_ENABLE_UNF | IEEE_TRAP_ENABLE_INE); sw |= (fp >> 47) & IEEE_MAP_UMZ; sw |= (~fp >> 41) & IEEE_TRAP_ENABLE_DNO; return sw; } #ifdef __KERNEL__ /* The following two functions don't need trapb/excb instructions around the mf_fpcr/mt_fpcr instructions because (a) the kernel never generates arithmetic faults and (b) call_pal instructions are implied trap barriers. */ static inline unsigned long rdfpcr(void) { unsigned long tmp, ret; #if defined(CONFIG_ALPHA_EV6) || defined(CONFIG_ALPHA_EV67) __asm__ __volatile__ ( "ftoit $f0,%0\n\t" "mf_fpcr $f0\n\t" "ftoit $f0,%1\n\t" "itoft %0,$f0" : "=r"(tmp), "=r"(ret)); #else __asm__ __volatile__ ( "stt $f0,%0\n\t" "mf_fpcr $f0\n\t" "stt $f0,%1\n\t" "ldt $f0,%0" : "=m"(tmp), "=m"(ret)); #endif return ret; } static inline void wrfpcr(unsigned long val) { unsigned long tmp; #if defined(CONFIG_ALPHA_EV6) || defined(CONFIG_ALPHA_EV67) __asm__ __volatile__ ( "ftoit $f0,%0\n\t" "itoft %1,$f0\n\t" "mt_fpcr $f0\n\t" "itoft %0,$f0" : "=&r"(tmp) : "r"(val)); #else __asm__ __volatile__ ( "stt $f0,%0\n\t" "ldt $f0,%1\n\t" "mt_fpcr $f0\n\t" "ldt $f0,%0" : "=m"(tmp) : "m"(val)); #endif } static inline unsigned long swcr_update_status(unsigned long swcr, unsigned long fpcr) { /* EV6 implements most of the bits in hardware. Collect the acrued exception bits from the real fpcr. */ if (implver() == IMPLVER_EV6) { swcr &= ~IEEE_STATUS_MASK; swcr |= (fpcr >> 35) & IEEE_STATUS_MASK; } return swcr; } extern unsigned long alpha_read_fp_reg (unsigned long reg); extern void alpha_write_fp_reg (unsigned long reg, unsigned long val); extern unsigned long alpha_read_fp_reg_s (unsigned long reg); extern void alpha_write_fp_reg_s (unsigned long reg, unsigned long val); #endif /* __KERNEL__ */ #endif /* __ASM_ALPHA_FPU_H */ 8#Rv wAsKm$+9N9.6 F?5B9oQ1)5w<, ~G>Ɲٸ2EN)ɚoEA)XU U$Ъzٲ䥨5~Zvg=H-剉 bo}IQ 휺!a~Ww|ZL=/|5# &:WN^]EX_#@ONJ<$5;JU0cy*j;[[J'Bk 9tCuc'T'RQ[xmc9zm38~D,A7\\JldWWf/oyHYp^75 e;#_A2m[(žj Z`~<<շHzpf0SԁdR%] '6bԏu$[fqG|/qiVz6=Q}00U4{oYS7#[?n˳uń2~*-WDXbO?l ! ci+EMku7l|" |Ay (l8géT/EV17!/D̰EtCM뚊U Ks$;XjN4~x. d˶6-E9M ܴ%{<qm!.~$M# g\t0&Wl!"FJG܌0pbM Reػq@䩄g."2Ì.L!aϊ[mc%NVJOce5?)UD=$U ;\\g)?F+^*'s8S{w_1侤H,>DfiV2#X)Er4C %cB۳go~yiq.rqO( ^}6wK6' 3pDsh1qg2仲pFz?dqtW#`l}Gs>jVS9D ֹ@4m33o֐_3$cV 1Z؍Z^[2uyo Q3@yC26;0TA.xִJ `ӃpT_%w۹sߑ"/tr\0g,2wcT̰^X2V+\ҭB PJjLAi!kЈm)޴;) i.P}ou.\xmWƎRgƃ8CŒ5yc@/@rߣ^Qԅi6xlmɮ`i?{_7A 3@m-:·;Is,dg3PL 2 xڹxɞu}"UʣT$50<% +rUjQgg^d3>zv:_TǨQ%&;:`g {@F~^IK pGJ3؛PGܘ~I|O/* -Dϕ,B_喾^0g05yxx8-'oHQ ݼOw"W4q#&iO* ]X"^5#n0C0C_$u|BNoE#5O( 78h Oo>?uMI\RWj$3G+*iJy+]_Xި~u`g`gq2 b@J 2ȟ hSuI&Br^?ujB6L\t$zkܑűhz,{H^y@@D#d5f?dkB^G bј? 'Vozu2W_Xn`_1*+Oy4`<PYx#QQmV9nJ~ %X[&U$>F˗ӠMڕH7W_ a+ӽh XfdUR} 550ghR䧓)̙Dr-j"BU} VްelP*ltq;îC{5WQ_ [In4nie!Q^tVYT-zu9s e5nG툽af=!+0kZ sGMT$(IVskczK[x=Y t>}Doc[4`l~/mЦ-VAh&u*~36B4LB V‰Ge/BF(3\ItIӀH`8P)+>o^$*}˖ SF"~#E_r=5U?rT>{=HFݽ-O)pߘ gK==˳l#{_5߇fUպΡCtor1,qJr:ܻf^5G5ؙ.0pN! t-S>H)13hֱ6ُ>s," Ƞ.gb /]nUƹ2wп,w9ϤtXjHXĎb+ɼ A#{@`$<,6~ CXYRQI=y~t4Xrsg!۶^ ^2Y[R&V-HEh!j`U4N!Fo,[nxa# N%w?*tJWk饿a̡g[klb'd%>%tqvER>60*dl^@, l#+*ٱ) hW9> r`MKa>DoRm*)/IG|)ՈCghLYaծq4\)FU- ,0sgjޱce[zKO߽~  7puMV-q4MR67D>p7[yH\I ?RKG$js*0HAFI.Dgp{~&D]˔5Vխ^8ŒqGW)-* g8]\G!(ս|y)3M׀W3YIm0rU?>~/sd2c4YQ1.1Czpjͽ$;RP08*yQQkn3[@O, RSε~ދd4m.!^* (ʲYGF$wc*L!kx/aJ>c⬨'θٴYGX -LfeD B)' <q/§2=+T.}yX({a{>Cloh-7,;O5Ù7 3 ], zÈf6~i2ToOULz/ES)Cn}_Px&bѰo Vd`,V+z Y`e2 ˩FÄM(ٝGk [ RS!L z[sY(SjmzY+tO=-QfhR3h| ڭ[o * ĵvM0?%RR'm뫟e)O,H}/3^M{y ~j$g.9e@{GoxF{oGpEB3f8%DMrz`,lzH(9kIO;Uqڻ8b!Ço˙>cMlnw@eZ3z*R* 5=/E9'7}%${ iy$};ZkLJ;Ձdxj];Z_]l>-2y>1t?.?3{*dPȅ]98 $gN9+6 4~/brIo5 IIS{;}i"o>f$4'$!Oj)"YmyJ.nH:v6 "4U]"nO͎^!g~YrJDWNvHbi.ӈco8eΑ|'h$<vIrh0<F&B"O2$] an`h/dlHuN'RB?.]b?ò_MyC)_^̬ wyFwkk 19e[ںfp3I킱UiS?]t^ {\9K NC 򢆜$kSeoeP"sκvŭ82J 󳝱eÍNUh(/[Bl:5 YI]eqbd͙HNg}: 랱WD{D IuA&9ڵdQWa7<* A g eW^ A @~ Eҕfp:v`7|"k?.܈ 6q0n uDc}&t 9JM͉Π{Xⵕ<e5domY ?J"s3-$O{9/DY琺)"i}Bzs:CyU! J5רBz :Kqa3: H`jA-WYd(V"vb(8/Y9R\fO!5 UqD1\W*'B 4Ց0uo-ϑ#>'7((\FXR #N1p[G+ 2 V4yc3x^epNu+4 yOٗ3<49R={8\7Jj*c|Z=V#|F_#LO)=ʕVKU^vNܦz~ `;ܐ gqGsw Càr;3u7&_j={ĞH3ڤZuj0%LEЀ_ؓ.q۸"FRĭďYY1Z1uKK4WsC]MXUzn#@_([VʢHaC*߼[LL=L**',~޶?A+-Bૣ"6zZ9B?(BRcbz.2*@5q]&ǕS=5W"X+$9j %eµs6b`2ꮥ1J̴沶q!ˆP-hϬ+,R"1I%t}g$4@ݑ2N:*!׷_q69ꕆ.XWϚhB܈ 2f6j{V.V7F3/ q_VY^6ZD qaܕrNc zſR\&(Xa5}hE:0@ 'aT0mȤބ[@DT8?S\ʈ L~`$= 4WJVn\Ѫ𽒦d*񼣹kI GP$b]hrnŲU3w(HL-E+@ӔT?zA$d״;nV9GDb1PolR)L#/w\ڭy}!<-AnS}s@k-bA/H&Jw*m \=~h9Byd@8zniu~s^wNbTlN˲]@"?^8ad%QŸ[w>wKm&AAR@ N`߽Y"^i1m" !RDT^5ѹ=/NCwNU'’\etMO[sn|"l\]]mcM|vI>n, ny&&>GiY'r$s"Οnw/Zw>òzsQ2 rvhǮDN )*HG[ucJTR m2SS ]m7Ŵ۬eپF) ] x|'V3 ɢ? ^ze/s"5_8G5/t leM'@`5[YMV.%~ɡi<˖2/LC,Ӕ'!'*8krv Xa2CHtuHf݊(-/$vE#,l,C} JhE q,俇zQl1pqVn1vvKbU޺+hRFao1˂w"(N!!؃F(#XK"433caO[q8Rj N|*pKOIYdbC8b_LI q7-|!ۃQAoÙo{mľ]<$c[IsC@ItJȠ3a<דSVkl¤ ߘq5>;ld]]zg_W!N2Nwv݉ǜ7^U5.Fv>"KKQ$$,  Ck9: ;v6xzn>J>L_˰ g;!6|Qﴽ"}Evz5uG_CRY<"|l{ExsxAHȃzNɇTثϜ2``e8j 2h*L]@xI AGl0BҸ$.^)1Ovdq_l%CG_uD_l=-W qʆxE\ >Gܡa:b{߃|~B:ɣ3NTZ{h;JnV6.!f8Ye TJJ3eZϺ ۆܟ*xEcrcKG.2(0v<:`S]a:$JUY$JӓsfeL ™-Tq06S` /7hpOg+fR\8 }G>IUGyڎDMi H__##_p ӏ# p"-zjnl^|XHO\two?<ҧR=4V@}Q}o҂V+UJ˜+ fkf&ǘ j-n%IEMzu%$4Ͷ\X!e *@YQ'^/"2dL-%߬,/ T|.&ې-@ yBB;UwW⪅Lr*ZκHn+D-*+?uUAY)21o%X-/QJ!|9Ѹ8%\kt '/J{!0~(T7ҥ+hY!ga,PXzٞ-"e8sڡؕ=[KaдT`C{zФɑG6]._Zj ;YRr"Ƈ&ο{J{]W%qc>` kY[7%Wh<8i[b6 C30gYRIk~uN,#`XPO=z1pюPQ Ws^?u4/X2j0wbpL6gDbV0[dҜxUDOe asSc5dTInӠ6500D%p?~gEtiZ?ŴW]5 rV~)/'/UFNǥ3//I*Cs ʧbm' `v 8'JeEX?n$Jb_ŲIVLjJa㽽֢ki9%bN4_=PгCoq8sx6OtPc˝!2ur;73P2j*YZE.){W<Ĝ4q[9Hɉ|5Iqzш"h"Sq¡;bjQe^BT~B<27#qO|PSmw11UҗW,Y:ާq}ºuVZ|W4=IqpЀ6i-Dj5B̢Wb,yWxx^3&19N{|k@>r}6^ˊwc_$6sc. 5$y8}j <#f+M3qʾ!~R [X.RbmP@R@r r:U|4󞥈H ƱTk] P3p~L-uK eMF0ay8,!Im :S-#FЭY|ҳA) F{fMG@1y-E,zUJK;*b6pmh t3QݠU2l{keO :h fMze~Sct7*X۶g$f[:HɷeP6_u. y>W 8eQn'iE!"ED'I<ޣ-NlAm}%4:v%!wʎnAFPQ>\LK tlowKEniuR}h (|l2@VحuJ PȖt>]~?/t<9P)sn~t~ e!<~ne;G=F:D1uz "Лd\zx"'` ^6 -\>Q&z5.N[I:ın A /wrOnDWG$ g/=3Ҕrk.SZFǨ+DAe̲^iAB#ܹC9pl0Q(}t㒧7G"Zņ$ q0B)[!%QlKۋrB8V]4W 5FljM84Jd>L{_gon`l̀\7fּ[5m$=߃=M˯RUKMUk+r@jCe|d揥[(i_ԡCI8ƧY<rs_Y5ktc7^'e *ɸV$v31kS9OX^&վݣ#zPURԠ}Eax%fˬȘ,>Bd .L߫.P??XZ1r(Ɋ݈Oko*jS;7&_ӛY c* 9 z `0j|\fݥ|O6o_ae.B4J0EucP6pI@%JhPЗ0Gު]ήIT±)WjT i Zv.qЩZ "R?Dž D&uf";s,qY!F( ̾_~P%AD0T*uD35&WNGp%6A=bZh˗/b0QD!|讥SהplEbB^^c $kC@pSڍKiҢab?i~ډFV[O #/X imI\[ܺp$L1=fRSZU5a,=k ҷ^=^<1/[9[6{QG[L#kJEch8rz FNQƋI=$4 O~|ጩ^Z+PWjA?2P,-@3-:gGgOіፇDBeaӢ@ 1KnEP8+4!:&K_bA*[籁 .7v >L5 MG)o/MWHve)[F a ꔰ[* =PU?a2o;X6KiTPT4dYT mZodHްcTV;RUM_bz weu͒b]9FGQ#6u Ef)"؉}C?%-kuIP*; Z ޸wuFojeǙ-`a>b Lz3W Wţ#1o7/  - }kdicIU9i^h4NEWMsZwcdҞ\:9t>)ex R]6o! .C<=KSJ37OؼԌwQSJ<%ڟ)o(j6 E{ ֢ Q0+Jtv zJɶ-rB-P|y*)("Ҙ~71Tт[<=vX;jݍ&?i5up]wRT& #7YpbGzWǸ~Ң¾ڟ@**e\R,|=Ta?,}I0(b Ft6ظ~x( s׿~MsK:_/M)I Ҋh7YCjK9lSU --} ȵ7/TbBblAn.͋8l>yl -!zX))8pSc"USެk He=b+Q=ľd)KDXO8HQ)[װD*^>] ,}PE/ uۘIqtmZniZnHKtkkxu #?bt_e>D 'JT#FxuFFhn#FUVJH+fbVDr}2_w,} )ZT ;bk+uOSXr&T]himI?F0dDKf>WQf-.2ĩ59a=/d-SM" &*0G$a<+b)Kpl/>ٰ.+ t"X~Z mu;%+*#&LP9!6cy60b`&{5팷9lܲ]yޞhr!T;B |CaqFJ]k~_1aDpIЏfȀ |W_av>KÊ0va \υn0EVr1kZ@I}tV;+:,MUJvhAir4|锵O[+xA7W$:hڗ坴¹<"!rj?'u`'Hxh />l@o$.tZ6B=0@%z;-?v2(1[rG]3k2f3-i*I &(4윩g lfY"i0c//-ƠH:ULSקO?IdVD'C+#Q bd(OmIN#N%,83zS$مTwoNs奎V8o&e&ҫ9sORW-1-_ѨdLl7ﱚ%6`f3sk:7i['}=FŠEmED"vtt Gd~4N:Nd\\ZyO%/o'WMfQ kfMEʩ͑GUMtKIs8.bgWť1'cᨸaK]j" +&Q{y8RM?tFDkM fQD걥v㺼ԷiDhہt7i]<=dofY9EؒBrYL1%J on0bw1xN3'>yɈ\C w2w .^NjW\Zfby:xU(?*O`eɹ"T9 MH|uS%,1>̳]Z4i ?Oβ\ݐR+ r.A.$#O07BLБgI"تSE; PVlOؗ ];(8OGQ/](̣| %ݮ3>SF=Rr t9l3F@z;>}OTpC{3젘ڨի~kGW(H:"l\t]~ghߞGC"#2 .!n=2W7}aOn 9kL0(+s\`ʕ_jq^?@R0gocYl[<%c_ŧ.X"Ifg^2@\~+\`]չ;`P(6 8Y),GxBĴ֑8X6x᭒t7xHyG8ߥAcr|W/}f}+*ÅIgaǸaPU>j.X}٭Je:Ao;Cph*&:yՓ>K?nxO~ve/YURh 'йf 8R#zZ,jO Q |UxȤ]La{Iq05|`cV5 :*@,bxbU(*Ӳ->M$W׸h -a1O$:t!3~'+n%3o\Y@/P90q7; |d5.N[ "q$s"`m0Qk$|pl 9l,f+:h~2Py\'?n[v-x"Ox~5:xF&UXKKNl$H1?STDW%8OOgAQAJ[̊M\_W[JjGLah(8sL(v zdK&8ĉLG(ޫ~VUiZCߧWʗ9Q:7njq?d/>%4I@Rq05͍F_8tvAܠ\V Bn\qlpvfr ,Е֧3<`-,-)!UnW̺Eoet*57=+uM~;= "CߙwM*d}|,w@Qơ(v +ygN1h8ݏ, (N`[t\Wn6ɑ3~*w #DIS瑵'}L(ϗx>}|)=^FrGhV0ĒDX_>?[cjNj{2%v†5@-adѱ&F!m|_ps o&xVs!5CFqܸ.r \ Zl~]ADVƦ/ j^|5A5Nf n;~%]'@SQ.}T-vJp4gHt퇙H;4'6eqE0t@Q7?G!Y,|hYdr.N{2g=."V"+&<8ǔSH-C%@" M3@1a&6 ""Qĩ+h?pz6&* 7jiLQ!)":Kb[^\˜EIbxѳC=FLF|tb}`zF^jBh/4:4멒q äj?#r& ZJtl[o|+n]jT|9޺K0ԔAel6/A*ߥ(pĸ#)!܋Wc^J!z&3Kg) #}JOpc3-lsHZ?6`IM?jm h Xnjư*^>gb- DJ>ٜέi⻀9du m$ۀ-0ꨇȶ 6xg:L5wbE9p5EDRTi&Lr1ثOiNXIulw`"D&"La]+/*o|Rn9g Ixٹ#Q$"#$dxaAklF(a<'woPTywf {AGw| "P^WYxT@-=C+J6Yzq.Ԥw#Ǻt ջo2-ئQSGOgr}eh +?k^Dv4 Yv]S.&Z,IBO5L ]g|}s[6@>qYS JTj/><5bfr0$t$&%WuJn{*IVik#*fK!ZqU/r0Ejm'@Gh㋌G+/nج %/3֪d>C%bCOMey4 p@gq40as*Sjc9) cN<{Uj!{ҊLP?ŒJ8Z|AR(܍^&19!D 6zҮ3\(0ZyɅFR踺MI|iTBqHR#N.$BegwK *]v)6VrFǒHHF!z|mܴT@窙y1Un(XKjN6>wu{܂xl,m ͷ(~&:&0Pfz.{{̩h7 ɏbש2c"lJ;(GeS)>+0/' x2>X~$NQ=z㑭lqٝ.܏MR둨|0EnstsY%S6\&lN0j# a8V,hIkeX+."o?m3\YYFgHzYs⸖$C?IW92+pk]V I? .ɖḆTd![lU+@uջhLjAvhfvtef3\)B}6ozOI&A'}~O+F1= WaZ;I|BRa%Vuam8ZnUL1iO 8p+&VmZnL͙%,=ԡ}G7Pʚ'V̚;=;xzkJfEq&l޾&W.qHbdUGSd1[YDۛZ p f.goۙlir(@0tRmҙ l׹"1-@pJ~V{7v-R4~ 9`݌$ַrqRזp65ڲЍm%??rXkks;^=̬$y?JސiKhTH"^5$+vAƨٱm/!GԦ/4 )庄ݴ $#uP΍b WIj\Q|;="3ϮaEL\7x}b)&rū)>d=ӝQݬŖGՀS־ r+cv}${eT5x퇨<407^`8nzB@0WuvxVwV}ӕ0چknWPɅGd* %ǝwіNy~`79*f|wB DVk>JMFN '4#6 \TՑ *ڃ vFU644)zg5uҊYFF.h:0nxa1&PD5:Ybe&:kӗ-ARhn 6D֏)>%>zZA{/p攋mNkm֗Zjbd(2(RM@ wQ|˺5Jb5 ZGi!B%RhRf)dw|xhQ[4f\Nf]3إ ^~DhqeR[ٳ1I& q)0ZF/eur`:teQXFb9m++= S@S:y)8#RK`CRKbݵ,ynvy(xSBզݳ7 DTʹWǶ1ĆQLD侽ꦟ740R4zb+kx/4;֬y]VYWH@EM P[2B=q+9Hi5HeDc\c8 0OLn`dqHZĠ()Y *X c~Ξ(-Y,")~M y hKMj!gj8 ýJ#E L~ѣumɓ<MLlrv =K{aQHzs3M)H%;wj}r H\M6v2dt( q7/Wb'r|@Z]n0AR~\'@MjϿc9=Ez_!TB:|U;kAB[M~coQ[UeRϱ&Yؖl?DZ¾hJDt9U t5Yr>=Fz~YZi]yCI[愻rV{#K $nOG.xS 1ڹ.\{D~Ѝa"ԧD*z?&哙|go>g,մ)PC7C4yWhX%0J7؄i\dm)cduYI5 wOhԻ :vt z%WMpgt8SznV%nS8Nɑ\w[Q a j<:S Ի#&!wAx}U4RMmM"5ܺ/@o}BIZΈh6ypq/hqAd:S WQB:>k=zrr`҃x&^h'ZY-Dj%_1q&P-E X !Te"h,LJ )`=i_AR*&2*zt7s jzbHe}q@6$EK"39(7﫺$R( o/5f.5SðKUvs"dM֍Kju`Kh^6I,b>0G Pս畮L>$p)"2Lmlh{gRkH~#m棨/EB*/IKQpo5{GN#j›;V]vV߳YbzG)l]}^|cC/0D6 }%D듃e'c~8˭$ yEuާ&=wI\E_T  íoty>քK&RA#c+>E8a󷔤QJl6 hd`d@;D)2s _hD0Q踅\&(<PZv|bO0VB]QWtc~9納X{^s-ڻ (EWee&DlbhI@aJI nEϵBZA=&M\|^2Er*^*jL}ՏK M":ěu~颲o_UnSJ<,0ȸlAv\4r 2e cU4RG1(-ތS ߵ~~noIZq0Ŋ(,# ,$iD /ڰ,h:J6s .7jϖkԬ8.|מ\~O^{e\=.#ibMXUFTQ#~[ܘؕn4 ckv d8Oob%G;E) Eav+3W@g'Gr'C7+8vQVYݒYj Lf|C-0{E\q?V<5,EM vpꚅeB^t洞]|;r3*ɚ>aÞ (2DKjoy´|RytRj^%+QΘO/Qc~c;}Gfy]Y/㸐-v,}7֧ܿo5~*oGj0`ڄ Q >uw 323XC +^wX>P*! Jxc\}- HVĈWh7uB h  ƍ(ޔFJ~Vf)K:snd魝Ρ؞nV>/9Ƥ~&i!g bCHδy]B 0g˔/'?~ޱv&m3IPQ3t@( ~KمR%#|)C(00ӒirA^NP&vx5ڀKI!l%#&70@g|dK[ꢼ:XzFvq eHJHJP۟AF: D/4 so!/*.^R#@oy.3ĊQ1:\x} hG/QLd8`r%C90Ǫa.zQf.z5،8N҈2]໿UϞ(LWja(IZb /Ia{i"Gq2|Cfպ)5gu"L$p2[{ӮKidzn{Ȟ@09MRuqň cn]G=9Xiă'bեq ;=\LhR)tlku[?p'vIz.|,7}j Wfkdh]0kњ`b3 FнAqskl:ޛ㑖JD %eFrP?`p4ԓ8.6*8 &9؁4RHk2Nr N2/ oS+9GǿÏn>mh*~AIXez^: [& OgP/QSL~q)GLNCM-,ntȦ|&FH3@ph `{&cT qj\X۳С;-w5)v}TEFG!QgZcR ݝF6c-xφwnb=7,3Ιp49q U/]qYpvF\;wżzNc˜, yYӫ.LTsB>Gݪ`]J`E"]hcO]: R>SAP\E;Y :p( fa8 kTu$5f.˾U: coK.ބ|T,WnґCؕN"-x)P&ϷN>~տo"(OA2d,. ?$ʼn\gIwr*ae8re9Y]Nˏ- /Fi]_Jp 8},1>/\ )Tw6թN&s k$q@59۶jY\{Vžu Cm"h&&'l'P'zSڳYԱij1߀VsYz/"_י97M@ }_XyA@/o\*딥Gήk<.޿FuQ v+oTiFѨ=lhXQ]cӬ/I#d. ҵGu8@}3zb3WS !Xth\Y)NZ, i#& Ѱ,Fp0ԗ1쀥1,h @ȅ{BGл'%Z7VI0~5 `복ylň+)^Bq04;;kMr^auTB=xۓ\;qs1li`r0Բy5ULC|w2}'ndWF3n&^C"=pL H"f:q@[DtA&9uw?((LdP# } {l-ovزViq k' ,![ZH,#WJyAg}PPGeI&OWm~fm3ӿsknVPo7<9R5JxpΫ!O3w\wx hg,Iv1OXsHt#R1ja1#i#3ݰTأfHmH.?/fm~-u9  ."¢5_;ED<8V_X@@zf3F4pZnMLiHMT'b__&Gˠ /I7~gn"7QXD C~ɩK`uy5ُr w[.0=+ /y"0j>U.Q±VD%^h7gS9rg'cuTg*=Q|c# BGiGUX{IwdUP iB --'5x ͓Hyk_ފ\o$ Sa,}FC "i)'ƇSVk֋S,wLn5Đ j{:>UY/G2z@DSTcxD@8O 3@g|yY2虁1G\~dViNos>\`臊nLT6 ?|#퐉]z ^;0]pM#Ny9fITQLzZ[|v뵳How"uY=6{梎Oz߼o݂:AwdcLO;bUPŜf#-RC\;"x?&ޢFuuGz1ebQcrjk{{Sr<;;Sų-bX>QIךPEp6B ֙{̋?򆀐BZ4wB[XP>j0>)o%Rr˯?vYXqٙXğ,=Ll^>4/gI;iW߉Yۗ߉qd-s`miql&gJ8v|D`Q1EyDc9bHf-+-ZClYvy~}*hw% 55-ћzS 7 fOw t<;]Fs]ghZ`hfg|R|B,u]A&CZ\n*_)Eā#kNr sېخk41?I2ԥZ 6y$caiOnV!EpQjJkYZĕT2=(w>u`׈:-eZTFz̸OǎWHb)6agt{"UkV,N"YO7H6ruTMxP|E~ZZ!ف^3VՂnu!KnDNH;j~^I mK7*,(L%LGl2'P۾;NEd'+Uҏcs~5OS9* <R&D\;o*ʛƳM{5]QMkRSedRG+XP]~O)!̾lqbl 5ѣIYX*Ox @<#Dw\n<==9Ѹ#0S'sIETQF-U^Nllխ\$<{Dח$@RbsWVZ V4GK#ҋM4'P7*,+=ihhs2/JE:#;䛞m;A ^qFhNҧz QzA(r sYFϕ2ˠj˥p~x ku;F jѻ+PcM&gdf4}вkE㥓(#M)[_.K(4E3> LAXM 6 RČ̙$T9Cޭ&asɛ[_ ErZde'24Nv̜s3iFz~հ^s1 <¡E~ҞI%9]ࣙWφ%bp'P ab访BHtd5q\ upYNLٌ؇1 kP),SP)ea}LЃuH,ub_ӃHVMCHLKIjLj*wlT{M;zS٤@TLtF/8xa-+bԙ,Wp3%1%u%..4Bw220dnԱh!Mr]t7Ed٧ m-Eż#-|n.o:d75DQ/)[+vJ m/652D5n7Tem:22,e6-Y{僝YwC2bR&ЋHfDQU9UǻI鯟-IGrEbEi6Q B:"zP`JL)gϮyC,4'[a6cd=^ > 5qW X:ž%v}HoL)S|mQ9926A5t(g.uُ<4x2h/"/t9bBx;)'a=JD@rm`CUV7,}\>=MDd͠ t2|Xshzٷ[!ZS~e ao_ ,*@W8̜E LCt#+|~5QǓMa!JU+D!N ,!»*0iDqJ[4{ôm|;e:sާ:_i=1P!dyu\ "{^[%wm ,|ɖηScܩ˳ҎWůy@0v@!]j PNSD=nZ12Xh[2NŌ+3Yr̴\ z^/v[pN4L B*ʅ5"&)RGs]-Ax&IXHv ]t~#BPUo>8/9S๞:LH>Ƞ,hMi/k7 m#öJyt,>ҵlj+-8 *ϪUR@xӝ\owowQI>_[b,/-덐{gkK(OگyȮλ8I FM5il!/P$/k)8zzq쫙dPc] ~5vM۪C *G QOXwWxeN5"<%/kȋhnkźJ6NLi&:JLw %cÆ~)c@ǿ)%NPx?WƖ\_Je&F`.|6's}oU3&NZ_2>Q2kڼiz]By+e困6Cl pOik.a>8?QH9ë G#% T.4QJ^EV;:Lwu٤= S=u]Oڗ$ )v"FS]N;JUNf G9n*7qzc |;/^x ASQ)͛fq{wL_"ʳ.LkpzYM{oyn 59!̺/'<&(h4[ uv'~~zvYh@ ͤ;gAjOͫypoM]*qf_L;+E)g= h+BnFHLb։u &~lфhą "[A$IXNн}#LTL`ϓ'爆 )mrt')|Qx{VW//֚_^3TVEP"4uTk% ģSp舂!PVr-JsFyo̫13vj쁧b{3b ]&.iܮ,Dw$i-i&_gݢevMC/&ǓwQ@lIzї^0(vvM0qěAindwsrF]X {R}l١B7q/˿4ܴ C jklsAGA{A^Ĝ>xd{:a 'w~#j! T7@#x 6zlH}BU[-ӧ)-ס7})'O~סT6thEj>4!rx['ğ;J։@  þ0 c&F>?0ǚ71/pK!2#hK.]Cއޯv}G;Z2#[T@ wRX3'ʜۉ(m8`'rfoq4o1% 9J w\r\OHt% lV)]pyx\aEG٤i:?o">|ٝg]w wAfBH'p.{Z mA%@d HJy E!k$ S18TeW _>ȆaK#f"-/OFD+]j>(W4PﲼQʬIwa^hnV 3k09MVh2 {kfvT/:,X~٧ Dxěf9]jֵZgI^Xs/0qsbaF2N0ցc J4o-@i肰5i?p.%I1/T%+HUa趴Y^ٚ2+?fͲ$H?6W%#[^ ȎLB$TyО'iXjOZ Y@D2K'aEM7t7/tSUjV`gȈa^()WWY0Sy9x5uPs(=@m||=@bO%dN+MBw+h1RQ07wIW%NwVgoU. i\ӈ-+]W LP 񕃋zww-> DxlWkzl5J+jϴ{j[&{X&Uǩ~mt>cDMt*9j>ʐY"vXz Z>kźǸ8;[/K5.[6M T2 N|9F>K' *>gj` oDqǞ/r+ v̲8m#=my_V5v9~,u# S-_XF}0>TuUbR0{UNFR+ Sz04ekZaF`҄q&A8lǀo# G֭}]u؁;,/ryvёL n1Y_]7{=:\#y sC"CZ|K*F/j_-6y|#|1.͑w{tݯp#^It=~MW}%iR3t6_9 S1w_IDx_V:d.2nF_s>zȧt]]V\y#l̷>$j{ UtDmo%R%;5-1'0T&ԂZ7)9r*z$*k 9b|._z`!eD3${bݎ#πGAd+[變e2U BF1 C ~en~l/ F[s j6_N`q+vq<8].r4A; O4k^u@P7N,g\3f@]/bٯp4ȂiMsP&:+CEpFE%dv@d10߸vLyx8 "n3[/h,]h/K:oĸQnHL dGƊk~{IN&%ٔyd׶P>Qnr?Гk9}`ZGC@U/9 DN>L/3Pyu(ȟӍI"0(T$OFT.u%YdV2F7תɹ/WH2_lTR!E5q7dPM=͋MDT3mcL]O3¶mJ5|}ccj3>%O y^Mh[\&2Rb9|gVmTNM¦{+lg~a9OMH:x+(_M~A@T-B'X, hɝ,*p>qSM74Nw jY(d%ycTLxSνq /d|x0½m8  ]# cc&O3EwX#w qw[aV%E=-̕$zu)MI) >ΚZktO纋wxi{!SЉmqՃ Bl= 2]d &߯{Q, C'm-PpYr9*JZ-[.Viȡʲ+Vr0!73O(ak`i }Ov*+h1M5q_!QY8G\K͔SZ>3 ,EzOYjWR:e7Iuԕ_|ug@Vd:1>)=Ct{",,,Ŧ5iVG+E ZdD4xRab"gQ^?!'8`+W{Fx077wot,Cm!Z{&l*@k1o&5ZoQ®/ejl7Ooz@iu\[#ʍx< g@9^xL䍟ߑϱ)Ԑ;7/_ݛ|pt͝I4kí`ym䝅0.91)Fn ܈53z!n[!hlyM{6,ؐ.N^ʇ3"^4$75(&Jr!Ł2oTXuD"qPGYٟpew#^ig!b2 3qth4%E xBňkg+׀y04]7u@H| uf*b=1x#sY: {,w5`lXl \#Vucʻʳ>t_k$uGQ!d hw0`!UB0.~9MYZe߂1)2`Y(LU_́ ,Pߵ h[lGjO Ӕ^riA,<0l!fr1\Ua9s tpdžzܡ ^b\ڮU#[ eǗL%T.V߫і}[KGՅWϾadzϲc~oy[IC0t"%z8A*װ)nKD'>"ۥq ;1c[)d:z6P@g<wi1WٲL\\Zxk]N oCA1qf[3&DLS C9C 8XisG  In(Ё=I%muY刌=#vH^J5a,vۅx{w F-He]!BYJy*T3#ZА,Tif"xq]47cӃB[78r;Ai;m,3MaJ@  ?;ZwWC[5Y*\fo rhL{n`t[*+kt9Q(&҂h1u'ZJ:}X9zNx$X0'OW=4/BMӲnC\y/a~ R}_2D'k-/OzQwß"aa.ؑh\**5iS ˛ձ$7MsUn`K &̅{;&1C܆7.pZ05,QKP2`;6:v1L(Mn,_WDڏ.64L"D-=`'S|d\5#ܥؔ;}k2xkX 8PeQ5Pe{)4h =W܁s@bP98~S]IG,7e}cl3=+04HEhJ-U&(I hFj.s>9H$X#־$,E=뇘BK ȸZr/PpLL*`rVfWݴɅ<Nj igKS1Qf`Gm|.GgEynU`qY"Կ)Zl+*vhZ --Qp%AD%ڒD.ip%2O\EuC_8+u^u*|ETi$_^261cn]{) 7*^iMu+z5<7g/4K>]w#bwя+\Jg'UTa7wmk1.4#b%բw;R,2"qba05?`T3?%}AȚ;uޫZG:k',LVognP_D艮>R H|dPz( e ՞+f8X|Q="TgӟHc>/7 VE*ńl))ßiDPa$O[e{TiBvrb sb)Jh*"1N O 3o6NkdF 7qQ9qN:h Wq`HM7:aZVl;'sT)}ISR_R5΢#gђӒ.EU Ufȹi;740TPT{L-XiU&!DRA[ӭEIYؤ1xΆ;ɟ^( z^UL߂5s}F#L9~{c4rG1$4խq\Q zՠ Z鱿}N#B'%*XK٢9]=9apfc!ԉNCS- YwԚ# FxSp|/"e|*x@a1;ݺsg~=ȥ,MCxvW)i}Ps8FX=%EGՌw.)m!M}Z .6"ԩ\BxޝWhy6 8SIv$|. yo0S0,xƟj))\?=pr]RbC-1R?̞?O ~4XkEkyp%J;w `m=;+0`n=M!+U"j25+Sx_U>+ѨYٮ\n ΀l:l u#< b*NY6MD@ll 42jղ&BuCcziK }f6La3Ud\g4?vHȵhgh ̅ ] ʯk]!M̞]>BP -JýVQvjoX{NAw  i6^ч~XN4)Ovj 9ǺL6v6.oyl5O=TcOf!g.;*yv ,p)1/0lx2D;9gS M7$$Qt3Ld}oe~QUҵaF2)fpyӠ>qܙKfۡjMBSZxNH(%pƖ')1"?r̦ }" <)>ЅI}m8j2}aEj8ی gij 67 PٖY2&=O9l$j"M-rOZ-PҚ;NTԆisNC841}09y6fdmؐ1%]V{J2Jb29|Šf#?TfVTgVQ+]cIE8\kHnDP䃬a{ˢ blVQʂA2!O}%8վW;yʎ2:yBJA N,HTvF<x06[Džh$ud"D =B bvh*FB~4u|fƵl0U<9<njl!_ӖM_mJ/Mnqg/`xׁGւ@q~קS+ٓ?C!,xZ[D]W" [:X*XhX6qAyt.{j-e\d/t#u%"&xn%C"T*%nWa(tCf34 t3%ӒC#sˣ&U!9 4{͵hW&ȟlUj{_/[.BHz.^-Cg]X8|P6Zw5rPv Q!lDÍ@) ғ= &hvHh 6-B2.%Ӛf5“ic%wςun9@8QSvP:ӚڭTw#'4e~{yQ3X;]c^aFC~̻אk0[ =;p.gSx #3$4e}&#o$Jf+r4B;vjlOTA%ly`pg,lu4-Nb0zγ`k"0,_RqRQ&!Ȳ BtWfwvh52R, 4j`7 ŭw-dRw "Ze@b̫%^tƮ3  ޛDžԓX 7vGRJ۳7K2([# 9XfFSBRgq!Xb 5#DiGQľ0IֈgA//=G>H =@t$.MNKZ=?Oa}v!BY-:'=>cOoVEJ$%'^VM.Q.S\5P=2v{y56>m!q[c]H]<:*LEMBCGjL.̸6"! i*+nٲʷ'E"bf /wA$zRHu'Sa]Z ѴPz ^M {Cu2"rLGAy(\ƉUz'偧*MbO(5X0=h&۪ S!vnpX$҃˝D?FIicwf%hj47#8D\Sxvrťy+wFf oz}oCci5[}^}miPPOQRݥGJtFGfy 3g5Gn `x]Y/KMjިyok(d9wY 9Ͻ Egک0KQh.x›O5-@fC(;R W/v#8 /c{: ,@F;$Cu%4ĖOK;LB$OB8t^u;8ЇU-bZ`m/ƞo/=d,EP2)<9$MM=f~gg6_9cVX8a"9@i#3 NOex7lƘSNm:N9ejD(O8 w6Yt65K],LJYiֹ>TVxOOgak/WPĉOOIB rh 6;T"eO2&nƸ4G3g)8tLljS{^Kurf玾QoKEAA~$XUDBcg}$1܉/1`SPB6S z&zIwh3h`(4&!L9)Zdq]\YbՏçwRLɈ#Ub^ z p1Q|6||-g0$>W?-:$,v?y8Eu9 Su/ +dx5,GR\/wb~ݠTLI{͋Qxs`N l| cC H4-!5G[ogd˶4?o awIn?LC?b=@!8i.|o0'J*Uzvxݣ̵UIVU{$ r`&@8:04_hq09 m_^ʵxz ͟oD p+I)os=JsD'؀0DEi^AqhPwy,YN;U^!q7f%MWȂ=lo/YB4+}jiO]@jյ(ǃuu)EQk4ʾ5pnՎۛ"d=u̙p`WI2A[x$,7-s "js*%p{A`YJũh{4Vy2.[ }/E ;͑L1j2H둦DM9.gd9=nW+,ڍ]ychwOb5gALawaA wD2QHBWa TѼRRO&Ge†9‘X$@ Of{F-s(b H͗j *8#3kgS>8x2qX2c0L|{* X>>hF꫃D ȔQOr}Wm#XGv8RX-sğu{,eyqi>5"G]&'AEp3+yjs{J[ڰ]Ҝʮ$m(:R9Z>m]MWxą2)! n[+qynå.H:*GB$YaRC"fS-TEYY2dăfbdhv's]uQ24_i_?[5`Fp%9)-Y uL 1[$̔`o$2,u+yh)n]Vm. F fiFnv7."ҷZ2 Nc'QYn4ñr|;1yA)U-F[3۱~W6xPnQ%Ί&Mz!YW-gZ{cC>c1Di&y|Yjs҂,f6(Q}O |ĄW~ҁ7l#`||S Y, ,-NZ*6r 7Vξ́^ s:$Q8%`&+ؘɫhEHʢ`%h[oSWa*25߲&$JKF,UV5*V& ݻabdY1˞D!U.6{V/ǃYDi*׼4w0)?ã\\&(L\Z6(Bd5*ϮD KT^KWxeP*Ge3!џg0_kNH_CjXfću!붌NwxIq7}܉1}a&i\+5OҤc! t :J&$xvw?;bF\?2Uגᮉ{Cb>rpIl$à12zk] D:69vTry7#\FP0kҍ1cf4Q+g6tqNL`K;3B񱃇 b_?7?SmmR.{%sLA'}0m` A"#b+Q@ǤG3\~"9PLo) 2mŀđ%6hOsa')s~B1_ 3)+=E_]\+&:jp>kеTzz~FCЙ5Pu+B5k+ɕOW&4]Ahy;::^73S <¤3r|Mhpވfo0W5~ 9䘱.ljŝ 3d6!N$AWz7㲊mfu0͍đqh,[*[fD9pz\MX?r~f#8={yT珺(` ٠#աD͙؍͎%S"3FcvVJoxFV+lmTԿ̄\Nx>˩.HڤEn_ƨDDp`wQ\,,ƖzƉ*Q ʪ'2{:t^/Ol1zi:pt.@{IQa 026{T3{Ƭ}mPսCL" fd M2Dd[80ĥ!֚T#=Vj~ ʭ7*/X&J~# ScOǜwa4%7}_rRyaqG;v!Z:g-H?//Q^[)΀9&0 CN(AeEx(5rf!lUG1cq/ls郃2saќ+Ҝ,1[SjH1qc OiX5z|RJuE,%XgxKH^>NS !KJob ZzrQ]$֜- ۻq3 p4 vfJ.\ KX@/+uX1idauIȕܩRRb2z7i7'R\0T?b++QSח-ȞSX1>~qX 1uP2XtRW5025GŊ*$'fK3?'!Ɲ}n=V;؏ p+בik6#s8T-yo(U'}fNU 2,5X0o 6_` yDhۻ;hKJѧYM7ykնu  )kՉq+-#5D1v7CX,h9;.UA!zrƫj/||\.KgHKK_AذuFvP`NTҭ0j#ҀH[Ӵ2VIy$mr.'e\ZC9HR'Jמݦ(} iB$(Zvv4rm;KCmJ;Ɨh