summaryrefslogtreecommitdiff
path: root/arch/sparc/include/asm/pgalloc_32.h
blob: 4f73e87b22a32b6cb45a0c821bd4f84876bdeb30 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SPARC_PGALLOC_H
#define _SPARC_PGALLOC_H

#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/pgtable.h>

#include <asm/pgtsrmmu.h>
#include <asm/vaddrs.h>
#include <asm/page.h>

struct page;

void *srmmu_get_nocache(int size, int align);
void srmmu_free_nocache(void *addr, int size);

extern struct resource sparc_iomap;

pgd_t *get_pgd_fast(void);
static inline void free_pgd_fast(pgd_t *pgd)
{
	srmmu_free_nocache(pgd, SRMMU_PGD_TABLE_SIZE);
}

#define pgd_free(mm, pgd)	free_pgd_fast(pgd)
#define pgd_alloc(mm)	get_pgd_fast()

static inline void pud_set(pud_t * pudp, pmd_t * pmdp)
{
	unsigned long pa = __nocache_pa(pmdp);

	set_pte((pte_t *)pudp, __pte((SRMMU_ET_PTD | (pa >> 4))));
}

#define pud_populate(MM, PGD, PMD)      pud_set(PGD, PMD)

static inline pmd_t *pmd_alloc_one(struct mm_struct *mm,
				   unsigned long address)
{
	return srmmu_get_nocache(SRMMU_PMD_TABLE_SIZE,
				 SRMMU_PMD_TABLE_SIZE);
}

static inline void free_pmd_fast(pmd_t * pmd)
{
	srmmu_free_nocache(pmd, SRMMU_PMD_TABLE_SIZE);
}

#define pmd_free(mm, pmd)		free_pmd_fast(pmd)
#define __pmd_free_tlb(tlb, pmd, addr)	pmd_free((tlb)->mm, pmd)

#define pmd_populate(mm, pmd, pte)	pmd_set(pmd, pte)

void pmd_set(pmd_t *pmdp, pte_t *ptep);
#define pmd_populate_kernel		pmd_populate

pgtable_t pte_alloc_one(struct mm_struct *mm);

static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm)
{
	return srmmu_get_nocache(SRMMU_PTE_TABLE_SIZE,
				 SRMMU_PTE_TABLE_SIZE);
}


static inline void free_pte_fast(pte_t *pte)
{
	srmmu_free_nocache(pte, SRMMU_PTE_TABLE_SIZE);
}

#define pte_free_kernel(mm, pte)	free_pte_fast(pte)

void pte_free(struct mm_struct * mm, pgtable_t pte);
#define __pte_free_tlb(tlb, pte, addr)	pte_free((tlb)->mm, pte)

#endif /* _SPARC_PGALLOC_H */
'|'l׽mt>K!~oX /ڕBD,,ݒgUSvkc[ ,!VGZ>WG/Vև۠)j-!X>u[լp@'6T$w)TP}FK (R&:2x͔vÖC5;L^?I!)샿uyAD?~g\Ńn!z;ܔxz;v8CTP#* '4L9Z;C' ?,8ai^6δx0^U G};2G8f~7}:k2FyIrv\9Hp&m[M eP?`oVqT0IMew*}"yPԘXTh I@,C1 + ]B|.}8w_0lHgLo-)M%L;@<pVkoA @dGTFAL4Iwy+>cufA.*v}! |zqⳌF4/9FJY6t?}yQcjM Ʉr޶9܍Zy8{=$-<@ksƚFI|!S40x6_7o5?r/եrwo? p{",K+RL4AffamѤ\ f4XLkkb Qs!7pzs{B5@HhfcvX 0h$[׉ˆ"#.qL I! SRРE Jь⮇cjk֛BC.$Mg}Z#kA9@$4pq6;FMF9KAsmz^ kbgHZ cI'؍D&NZ08ʸ}H9y4l-EQqRҴ'!DJ*4fp,9Ej\L92g, ]M!6N3JeZj 1 IE>Q[j3wPbR4wQYJPsGdHZJ sgo:b ^x{0dD3vq :HٌZpDKķF{qO368zd^-}ֿ{?v}U!~ i ג:y}|0f^|n+z&77lYXgE^s Brd3"ۆhbaX1 mua냡)xO[]7os!TVh XurXCu-|_Ai8Kşe ݭ5hz)kl)86N3?Z Ԧ3@H-,{>W^:BءnrJBʹ~o|Y6zWWnʱ}GBFeP_N/V`RYYݻIϪ9uo3} g>V}[̡Kki+U;L].3W`ϓվqPxwzۣX[lQ| v8?{F%I{,O;?&W}x8 {59EP [ B.]Q1(-j*3){V.n/{gb`1A>oG)FW({2/gE[=(mN$5ӪlW}thā{a0,P7,Q1)ZU|0Aǽ0۩evmnZޘN|X#z>%z#zeH=x-N ڡ욊 Hǹs5[;o3zMr' 9[εz] %m:pkU.mnD(lomΊ7iO\*bFClL ,J 7ab (URsMA`GJ$Lo R Kg80տ]ܭBemYe\l{UtwI yӡ捐"sTVG X.1zt5>7Dg3L|~ׄK׵k9 zhT0Z CSӪ8n[,4zU}>4;["%7󖜳JXapmkbyظ1W3j;kH˨ųXutм+1tu Up J5C%|X8VC5 z6?삡nC^>"I =,! !8n&!0C陉̰)q͋y&y.遉Lrw(1j()*$ hJ`h&Bg6ѝ3 "f?&!( 9$"oќB`RAJҍLz?/&%X"OXECΐ8 Ӣ i&V}0q"b 8ݙ>8Е$$_0 YHFz|Ø*`tQ2 ޓKB'‰ӧpP:h!úwyS<͆ާv͇mP^ ,yFeFX>NRVzYb+eVyҥӮ1ܹ܄j]$}tMMUڣ'﨣A cuKH>r/6ss%~.F~s&:qeRs&{VX m|cz bdb퓍3ug Hj| `71=k(Z9YYetc1ֱn?[+zzy[zUt9BM׾X[m}lUn&zL=G/noX.x+?u~;6M\q ODGDϜoiۃ3lkgPGH$y. /1BsW X8 x}yJM ~ =pl X6]^FT4p#V5l1w8>}. ^q@/L8mm<폧Ze,N|}Xsڕ]!&n0=U6EfCŁMWa4O5-!ӁTpFUk$ |,SnA=*83=hz4IW@PD\ߏ"]<<|?ԏa]{1m rfySUWt'$tR"~;}0Vy۵ײv矗/'0B̠2Xl' q_gg!f]{񄜸b*tgYNEk}pu;CkCه^aϺ]ٵ^/G۾nZsvS]X?|#}^2WX~vu׾}<5(]A~|x.v,\Y9e4V>[$vz0iS8z/j9NoajSe`]k6Kсb; n<^ʨYy c %䝮^<vpG'vQuv|V֩x|WEW?$-|Ўs%TWԪޞMgs=]M`Ϛ9`N*V|(z}"j?i?mÿ\#C@b93U6vN/7|5Bo~WƷ>?pV\¾2r%7"vI=;q7G)X*X-b8q2G̾gB-줳n2iO}u?v;>|_]SͻkNOn^EBS?mۉUycG5}ncmf9lxIx~8٩,Zn(mzOs]y[n7tՔsz˺ʫ2nPLMm0?'[#C'IFd3O*  &.8qO[>ӥD?2Bhu}`a@Ck`d iY@( 7wuH=}k"gX;\\G&]w!ҕJu0Z'W9Z]qʑ$ /oW8>|Y.ȇ߲jmFB?OK*}бf2v1IQ!ɜg䜄ϥj =qmʁJT8mrs*mtf ݒ4Hw8#W8@XYǍ1  0YP\Rb ߅#F"-t;,~lD'^X=+0͒O+x/Y Z>8+[V9qGk:T6ȂD4߉o{Bbrj.2K_`O-]^>&CM۰ ٳCѰ.evn3\ޖx=$'z[  Dk -w=ba 2c~!+1'0B"RxT5B@B 0p>1/-~|+ a s.2΀fWR2a fK\۶!I##d᧨"k(Jۢ`2Ul _'KnnOE$ eP{)g[۩od~Ssg?׀Mt!Aü]fenZMc4>ט@(^n>20V/$kuc9{bY[+Ck/k䍤2Sc+~ B^ d"!dn1H1QLm >MR>l֫z'L7!t='GWǹ)i[yknޯqΎ!NN52 F;:eu /<\;0K~bl )k;wiq?/C rP@4tp#C.{nc' Ą&Wد._i"bI*<.Z$Ɩ.@K!!oˬ1*|#+eg#dA!0gT'G=q'#fA!h ThErStQ!4ẖEcP$ܮk@L $Hb \0~t(=^f= ``Km3bY``\mH9 <&TaE0 C @ci0͖1& 眑Q |5- t3\B9'GI`9Y@$b +qplP_pK؎9f'c0 N4n)QXɓL yݧ4,r7 G?RXeg6 0K .wR5-<|#it MÍh|G>B:TSiٯy/tK ZK{U_X=p3)<Ž{MSuTƪ7C/wh';[^.8.h5\x|9pw;a5yGѳ( owE}=d0F{.' zeDhAw\0g{gE )8@÷yGuA9Rw! ʀ!'ͻgfjNmԊ~Q|Fow3DͶ<xtúmuiY< 9;(91fQcc:䒿Ɨ gޑfˠr@ܼ:/;2fl>:{/;9XyqtZLtyg<} 0m*;#qlSoM.kLd~=YEͮWL{kϮ;aMK=XrkߤysPJ&MjĒŬ !5nCaܔA.xo&M[~N5}Vʖg7}=;Ҿb닏N䶨_ҌP7MD^Ƃ1>@"tP\.G Np^@ pS9 ֻjLaeqxa }N8f,DF\5MtA\5"#FH2]P`†Pb ƈ*X%5飐]42F6 LƆ_YaIC0ǁں iٱd?MgnZ.F0vc6ݾm I1Dx?̓9$sFdY肢 Ƭ|〬qbE'y1f|<z8Ys350#Czs9Z _#XI5{=^j~ĸam@|= 館=}S ӲfT*-Ł,PuܟHs4毥zR!߽ ~-,M0oE{?_|~Z_Gǘ|Ŷ<,E^[#vfc|P/7V6٠PTa z~mmM.ѿz;#<9n~ӣ\ dy`Q ̩MH_1N]?v1֪"Ah"1W]^g ZL#k"(\n{/ܞ 9^F"3Cu.]CXTj>i14lx]V]hX)Lv7kDexARD4/Ҕ+].G^ @%_{)Fה8)  2/z@"SE_t͍Dy-̍DoGduvk7]E_`!PEBn],A áD3;x 8ebkפ6 ㎱h<EQT}}Y_R_/ŸƘE]οUÐIG[ nkd& Q Y[|)GzFm\0P.Ann[=~=\g_{5\;A[u7v+gi߭<ׇވ$[&Nl\EZl:1 k Zf+8llՕיiK@<ꏙvЏTMOI)4XvVc>qtc}{m'v6}B{>۽~J%.NX:޿31RO%.o~~y 6lNWͦT÷&<,,P)8o9YT?W!rJ@o0 y$DOkόL>a dd eP`IO'Df?űƎ#4*aEE5%C]=Ol8Ʀ!8s{8J?˱hKѼ=vB-SH?H(׍hu,|ZSVTY {N빣9c t/;K^Go胖仱 W\T>$ ' j6jRm>,;kLN^anl_Sz1o鏑{Dqǹ:ݼJ%Ay:rDKjG"ѫChOGD^0~A>d]YrKx|QiW8!5Q7ofSRB0e=\_nz18zjhͭ{@hycc y$îpH%pÖ;7~[@b?dvQ1mf=/< w09r~D$eҿ~l~;Xw5Mf!cK\ ϵ xzWK pTHlU3A)r!VWu=ҳDXݠԸJ+|v__ jl˖o蒮dm W@AK|xUimI7Wv'Hb@Jl휸;cG5%C`,z ̓;Ye:Md<6X>?e;ir˜@Hǧk@W^dT21RYscakw_>HYW -u|£յ\6 F,gbCⴡǰD~$BI%3|G:hPTi ۾9o{!M=>/ntCΏ>kT˧X+DrU"4 H@~h[o BQW⚈ N$sTMUQkOh6~Ͻ'6sebn$*t>m5= Dx\3vjՒM\WKLD$tKSns?:e,ղbxzxVwm᱑U1QUK,T27v8V'O۝-z$bkwRI kHr֋v8&J(6㸅/"ޫ'*+0}J"&zuZԐztyll#-1- GCլ%Zt:3x0^ 32}KxqTVpuqĐh>nA8#" Wj i~kMeN= ,V{ө68PɪhO~D}8ú/9L>YlB"4<- WRHF} j}=;fɵ?`=u>m兹G1 6`09ȼ^ xAȏ\c㤸 lk|0uu~p~i&N@Hp7H@JkN{!,(ߟ[ģRv 0^fz|k'm~ oϾ4!c/7=\:Vv,.#-I㶭 HCxsJp_-UًsMՊvImj1<{勇Y--}l`dɲt+ s3î= @cHր 2(Bti5_z/[Rw: ״[[6 {qP"$P I.i@`h Gd׫/pbqӼI0s,Q;9,=.c=WqAA m)bh} i.CT @A/ sB}!í|hfu+vPsc ouubR!a?[)_c|.,W:9 @"e'>s>.Loh)ژT]c!u) GFpqlD}zZ]8(?1 Ned4@|~% x@"5nT_&n|+v?ãU9<`}3o0U1AN2cwuvRf:Kk$ S~H}DG`1M_*@砹@P5PPCWu٥[ӭjuB6e+@FOJ:#W7ns9R%qnkH"w*c7\lr LWtp&sC=ɻR@D6X̯ъBwsZh@-x[u&M5tx/Lamv/v5aJ=>ž޶{aMj"ժ1WM.q'фO>KA߻.wg:~vZ%4(yf_bЙL'w?r^}n w{A2J `pd1oKt1 >K"^Q3DD0c1Cwn?-$KlǼIFāD ׽vpcAo$Xx !=1pZ?Eq 6^~"lCM:l4^S;)=>uML^ǽᯘ/qCPvXIiG 5>BXs?4%z@ hPo;k"݆d37~43XoĠ \m>M;CuDaL "G`\ܼl )rkX7#_ 0dU%pzM%\M&hCT}2{ƀ=@[:pW 1CSY"> _]^Q. hÞLs CzV= *(u\RMx8Vm1pM4~AxY'n\xצ=Kb =?\& !c N@}ݯcF Ob`V,FM8T}]FxI:6k}+QRٮƫd&ۈTw(9l p}~,}F*ːs!A&rMKco\>Ly5!äLp;s(*.ڿS<`>"nﳿb pr{?ϗQ>2N> U2[RZ H,}Sӧz Ҁ0g,6Fp7V@;3qbVs]T={ d{j}>ٍVM;yWEɹ=ŗEYdv xK $B:Ҧ˯#@|U8拖HA:۲ӓanΛ){C ܮ٪󴅠)#oVoonO8pؐ8W!}sFzyP헅U+Y_ZZX"ѭb^"lԜcR(suA~tD5XWeT5 j݉#Ln.o]Aw+5`p3kdRNt廵D \ЌPsq;,;.b/ ᜰC2ZQHEhKW*o,>&Sƨ˗:j!e5Xg<I7ؑMVqq\{{6d2Oo1>j$KaqYs81f,b󸢹S&֟M6mk̷6[SLWEMFB'6=6v0d|hB mO'ɎZ(4Ʊ, .r`~uSa+Fp.0(e﹣EE<3{f?zdEDD'4:Jj|M=~gyYrϲ?5?znrC--fawp{yx5]8E:%x?|G 4rnJ4`ڏ _(L|Ġw4y \nt sRժENs搸e%.{MŽQFw䲃{"3gY:lŐэI9UhF9I6ÔLk,cBcC_f09=z7Tv`g)bYzT n:Z) Cٺ\3l v,3C\ׇd"r@\"G9ܦO72ՈȡJ WCHܒPpAѭ}ESwVZ۲$}c(QGouj4}3Q('t]9 SdX [ȓğzBo]aנʷE_n{H6\gnwež!X;,v,x3c##6a4!2F,!_%yvwLF3ljݻ ]ڵb1ksR3YgZfkstRV€pқ­/*n}i\_T-QURl r_ƍ+,ưMJ8 tJ?nj4m^U'9/v_lO3>;rʹ!飛g#G㭛]DRqô,~?{exAvZWpwS(e{iRX-}Ho'u#!ĿeDS5)m‘E- Fpse,nW7x"s_W3vѿ8 05畠qF'm_x0}~q_Կǜi6;Y~=l`nylfOİr:CdӼ/9=%R d\;lja O%YW_+V[F})8~6 L~0ol֐U$Ɂj>5aXWmqId8S_IcMD_./!z$ $CS-)xIMlxH0%yNi z=4VX|7ӒCTIy3Y H}7%J~slMv`2 هl, Qr>{x}Gg9[ 6W0Ŏz`x]pJ5_sZC޷j4gd{Q/A$/cڮ/AЗdBtr^HCQ'I$l^Su^wFґ X" דOEU@ 2=$DUqhq^xJeрZ;iPr6:qxasf1\6*^РYo.n_%qڭm. ii\wZuznc-7[B=pL\\5  ̰ӘL,JqweSlj\&o=k$2Ra[+RaMd3.=j=Lhh4زe4" M( ҲeQ{kttHt0 -H?kVzZH`HjSӹ2jSJs5aɇsp3N HJ`aT Fɤ0 ՠыLU1^ EP  \_&q(ylGn͌Taɔ%B*0eQӴ|;˱*yMa30%d%n=J }ռQ(Tg4?1It8X~gUp L\.P1+]P*`G% ϟ1]Y?^b͡UYP$kYb#t@a55X: ]:JOsOBCW;eN}KB7`/]>ˆ?IQ֨j>)u|:^Ḫ(1E隕l>x%@ywliUx9cT*'sKELv<" V0?'Q۬EÛ*f~7hC:b@ Z9tӲ@beByeh+v <^ s"12r'ѬMT#ĭXڗV:>5SSsV |L?ލ7't=mG# 8R̄8~%!: ؏gd[jO ,*չDf@WJ*0Fa']88+UʬGLi0/(>ϾNJËe VG[#uAm9@TqWH,B,Tp!7`W]_FO!O3()4Owm>·,Y{p]3bȯq' PhD#O U23@n_uiY$z8 dOeٽш}}dzet@7`2-ZMcҺ.\>btYR4o.{OYXad`B6:f_=Z<\uo0 !|ji̧7dpBf#A" s81B d>_/T'}f벿[T4A2{fBnW>Vz2 ;e\_jތ"I HsU.gabρ tƫ@-Ef9}/,,k= QW)(a t0/"LNżďB%iy4;^ 5)JAɏqi^׋o ޮ2;^7+<;xz}a总5F/ש~W܊Q=aC[cͮJ~.SYDM{o8e^uY:A 6#LÈ>:L&"8K7y)f/quk_Ax֓bkߪpuXI37l|OiO75ӮI1Ѱ\22QTF wx&eHEIP^{ J Y '\m߾s6q.}Y *~<7aGb.0oКg{!0Ʊ UJ ;ePi^dZ2|i kʓPQqr }qo*#ZP@oG/N1>nWA7Z\ȹs4 '8΀,MlC 1 I"IeHHڈ`$q43Fb|bm=eCJ ,%~,Wd LWk?AhOܱWK͌~l[ -~c\LҮ5P92 4c~ewކ f?;I[hIu_w>n(R BW- 'Xo]}9bcܐZAאU٧akbVpF.w)6 lO>;qּWŒ .,M ~I2.PڰK,S[*qȥ+!DAC]'Xܶ,iuB QC doFRXw Z8Jy C:wz:K7CUrݱ@ 7\9}W0n)9"Q>B"^MNgfF~]W4϶}yZ˞`Y F  k~b!oA;sVl}DO&W6ߒk<>i ] vQ6}(.h´=, JRǩ\ha18Bυq,uX<g)PsD>"^lw/ERX*XPP/!"5*F;X[K$KTNgܒvb(P,ʌ'%IL.2.R"< UBp0Ǿ lV'T%kjzbUOE⒝.ebnTU9敕#d &By aٲQyRp׋=u! NZV{vkT]ީ>sqayએsQ\PO l(rr@ J=>r7(nS_P|)3$Jƭ2} 5L!Ypզ#Y0OyHr]~eaB~ h!er6:QB6lWN,z,!TUv%$C7&%K p1U*/x׆i žbX-x+ Y55_{xspi*EJN3,T}~꽡* \uu,*<]xLI'DwN݀ZV3KDџ CZ\PZ:35RSx>J$_&AW#ʲV=:-g1>쨝Ζv[,4Wk^ض te|Hu4i-&~} OW2s?9KfM[^ P=+Fe7Y/9 Bjft<~8SFS<}T,s-M\Po@<`+E?LȗM:u_wt^tԠiybypx6Z!2OPȦMԅl#om믯S[.ttDcic5ӕEPK sOi)=%7a c#ƶKMa[ cvUp|܏(+X5| _^C8?KjFëSிH֪ 4Xguz%s= 3Z# Y5! |ߊl*-nwC㥦dxYx GIHBq7%|ZAMMnRb羹}v_yP@yA*TkG>ǭ@Jd; *`O=ɧv[z=$CuD!h?-u}*/߄\DZ͂ -׸<<"#R7H%[oXC jgE V#OMHIo T Z xfz:hΎn$iPsr\H8T Ǝ\RmφN0$;.= >g$>en ;Z\3ùC-`PWQn;$|aMӐD@y^X;𛯝0{aIQpك5 lvJ{.I7!G~=sD7&#,z A1+W}ʓrKރ/2 ?{d 7\/&O R?d כPNonS)kr+m˵TIU$F tV1$Np5ǹS,W>8P2BEJLkjHD'B0pR#`~|od}/TMCRB/~*TYNjJ"/ӔdAIOpp[! ]`#ф@Yjf 4*wAjQSxx-b֖P 2e>T BgQ0a;_#ڜe]76bhM&q Ih@\Td[f("ྊwa bqNUp׺7o?.9ԼNq%3 /t^\a`UD4W"~bҔoBg[l &G%Lc`6( Ǧ6h À-#M̲@.s9 [ { Z>#S<͚%?j'~ rhኁM̼h,]FG[&v؇jRΊu*PK{6Y-nR*t2&pғ)(pfܡI3e{YY9߈ʐdY19x('.<^7zi |-\6pt,G3t4v`޶' E\)Q O~ƮŤV^d"P7mUZeJ Q qKiְ .Vr`آBY>붭t`(_@^׿˿K$#UTp~Gsm=IT6\+c=6||E&Dx Db.wz*O'ÄHb(M3̘D_c3>d5SI|hDcEjD3ޒ%ĩ-וNP g(9 d.(n!޻2V*!(TKGAQ̏A_7C}q`*%;_łH9ٖT'XRDѿK,r| >HW0%9 =W xXW ʦ\t7Y܋tX/(:iϔ8zGgP%ڗsPGmgھ d&T Vrtc]5pڍ=V/ߧ>[19e jy>ԫm:Ǯ- j^zswO1ug/spфP9QX OKd˵RXӜ]ݏ?zۃ\2:8/V{LnvELijEw1g{50t}}l%WT\9#GUUn(UIIICܻ7*c3÷پbJm]z݃^}=Gpn ^3s"öEϷ7mK"%Qky0[tJu֩xCbJ:Z!QVyB#ErR{fD3X!2뿀t{(nVM =1_n 0xD:FX@uνDE~?wkxmd,XHwqAHgjQWl3EqzN.6,aM2Lq8kj "ӌ>J`5 XU!uzta 0JnE#͵_^ULL V\[K(羬z PV%װEc+ m)K,h^;>;X汅K ڱHB%eTyzqų_ƋgBbfl[)x+s׉iE~8^1'Wr1覻ɩ2fL9#,8>0 } (cE.<\÷_Dc0P(0xfh`AA!2 be 1,<ļGI #͐/۫kc_3%M34tz0(L"9|DHBqв>0aS\AWlH*UU;F:02?6D}=$vu_3n;]fIGϯ=z]dUvz?zbvA}hEhboIPQ5jNaTVOP]ɧ=%:H`!T(.p>ypff R&,I"aT^9׹TP/8Cݱڣ`avCEZ!VEyV=}GF68 "%j޵I.qC I(n0>" |\S[ a߂xC!$QAHAGkl Hᢸj1 [1 h_#QZzɏe"7bԨ)DxڃtQD$GGK=3;zo@P'.h(<B DEtaQ{W_.T[- aG2@Kk<:*)჏;lQ^63}Fj?2+!m%,B`ǦN߾2gdS,+貮ۂDj][g r!Dw9;~馯n9xvV0<8a&*Oppk!+pRͩ]*= Ce 5.Clj<QUe;U nrbwP83 *.2pkUF(Ы4+@1 Ad$p{ǽ aՂQkVl )ӊgܫ+׋đ0 ( Y`!n>4FQyB}쏨Ebk?1B<J͓OlcI)T^* tH_dFq:kӴKT15HvЀROP /*MRkoa@棪C,r(s-x28~&VI,mN!D>uᔱަQAࢇ lb8Yӵ]@$*QC!T^쀆@&V9+TLAΑ:)tl~UHM!/c{ۣcwNVnnnTF@}ć+J=8BQLR4{OGCh?wEV"=&mhV6 qh&\Ax.up S!$BaAH2Yո G Ul QeX<"$s2ZmJO >j(`ŕI\)a 0>YٚXp]zQ3%IkTãP!`HX~q*Vg3BáE2֝uϥh/l+b$ٯoǺRr%JÒ fbv I?l/>d^}d 4VFY#.-#䛘gwϢOr(T(1whA(T ?̈P6sҍF )ďS(5{#6m_J]`KPwV ># 5?^{{ *_>Qkp>VٳW cetx=o{5߅Juu4pb<4ɋ=ZXֲCEK$c%l+/23뵋C[zFVnBTn12 MqC0YF`.BXY7S4tSvD L1H*GйR7MXj7a;_^iloJ4ʂ7?ǥ[3%E¸,:PBClG[@y`hϘÒ!<~2NL:]3oxIZ?z{:]4Ҋ\(Yި7 f [._*i xs`y;U!\{yN2R:1+Br@WcYLs^-ЁoufШB"D]ÿKup}݈7TC"w}j y>ҹo$S ɕc88q LnnJp5apdst.7,~6OvdߩIofjM(AJSwIkK8u)6c@t)ʮaXiFɤ*ۣ~EBN๻( %'CBtR,W8bwF^>VV+gVrl E$? #G`/_|AS<mFR48E %`q8Ë=VԎwk愈w8tP۝Ý&l+r;zKv1Zx|ͻ0V,t>}#䇃 @-\ֶbH z<PC!&s5б Bc |詖c)r Y9G==up.sP̏pe|b }~2/XTYaQ l,%%BĞyᘒv-OXn#YAxÔk ɟVet=lNH O'(soIC⨩F<43,& 许G FYvH&x)36?9KWVvf9O XƇZ&&Bnrzs:zi q<C%UxPZ6?F uHJ&p0v"?p_fz9m%˭z?gSdbE9"QM 40bʈvm[:0xmR@GߍO>5f~ 6'zk7&ok@AeG[dԣ1` (GGvɱ[_zk4 D뤟ï ql-hfo$Gw**"m}L$7Oir6}sz}z\fj-tY&(y)nd?5M0_z(slW_7e y7(7(#P8|\"`Lj2v k=yבM_JH*}f[alxju@y<;wNBbٹ=DFCm|pޏҶ \I%bTjgO<8;͐\Wd"[fY:^g<.C< 8NxrwܴJ(w<(B룕"nh*s"*`kxʳj$a[D>$I!%7;hwcs> 룮?iGiIܱ{[0ҘGh_0opY;Q1u|6M ]Lsy$ 0wf-\.kB)kZ{la>7x*Ortkw=sLܣ=mjHgձ_z:!yhP8?$ӂ]v\ -&A@5z5UT2(W ȸ#xg;cw~^3D[A*we_;_b9ޓpolF4D=!<>/lʒ# Vbh2>|{==}EףҺW:|n4 B0- EÂߌSW?hϷSdZUqSν><bq%Pw:_Ndw:(bɱ R][N9:;<5:/,1!Pa zf`O cx[2$}fKaI_l[U@C_!LC;fQ"K\C}:.!39sU/eVHR> $ -Tj*&Nr"O3ty|{y<vjY 5`UjeSlyqMͱ~z'g7ӫMxas&fE~"NtWѴ~DRMtuE!On2<}:F4a6|'{AH?:/Sjz;=/\4DA{p0Ͳ:KYA; 鵠[K@ f˩*UM.%c6fE­$&@y/K򾜞eIoxQ)&׷`O.^-feتG4'xJ(ʲK ۏ_8t}/,rp,u0Tu\E!3G3qNxqQS2(彳^[KPm)!pچ<&#lih݃@D:w b-[xs:4%gcdDzS#7'|NOWb~ɏ:`p4 >ic?9R~KT84476҃HLe߻~ V^.?Z$X "MiS6M5{f]bsd  P_s:ڰ'GHpd( ysGź@cUɂL0/#/]dN_Xࡦ8d4Qﬨ1lŸGV?(qzh=E  w\o2P0_N)7|.Opi4||T ?4GH^YG:|fOehV? Zk*;q*ے;4svD|>kòmh?q A+ תoo9٦5UQ>'IC'`/|}s6qQvcl|攸'PQW{G<$lfyEqTDd/y4'0DME1X LV~6v{ ڏua4A4T{?Uw#벩 2Jai<ow>@گU.PlĀX=RE}c 7>D -s/Kjxpځ_ 7|P ){,9o锍A]>7&&pVyņ._'OY|\a1wLq*b/]eI)9< %uTjO.= C{!}.fO,9ZԬ_Y=Էt93XIV;]R0zjwo!zFeTD]V%dH Mo!cNL8B%Ʊ(z \~;7=!pO6 A+87Tl(u49p"h=wA$%f(2W̝1MsoH'mX<*1 qT,tdU6MIavnOȢt7z|Ahz! ngᬊN y^ec o].&OQe-^Ì+:WE@0$S]FV]N.UaNkD!GݹS6zC,۳4Jst;ل&<_Zx:s>]OoW;%@AB.{e7FJi+WMyFo ϻ(&eK8]gk7Ci ̡U;]794+^`(D6Cw?MGd{EW{(hP/Jɣ%L㲰j5A4V)bT/Wy-ցH;$vG6_b=Kef1gNW2xQupQ(cr|D 2Er e-쾹\Wr3P c_=RBF6({ !cG ~+_M/Tv^BC9 {vRWCNp:XØy(~KM|l\dY+J(8xmbHc?3ŸO#מ-.i&sjβS:yNx/[Wbx5ijfIxĢsnwv>J뭏wgF42M&㮍{sșET&DnYg Ku۟8!Ws 3 @Nd7þ5_4 =>i pBA3D|&^i*,H4ݙ)q=SX-1&&uؾ7z%vpַn[ߵ_W6 jγY !Wfg<:҇O7JߎE~a/n7r#rixa @%`s`Jp9Ոvi~Ke 8q Ki8]Ҵpz}/v|KvvL%\vJ!pt;~k^6IL~ 5WN6T϶pP_uf)h"}q]W9"=a`iIF1W{R XYC]J^gTj:aV샅uиhwW 8cη0>qQû"4-,/X:{ތp͘p3Eoƕ*s0gi mWi$DB10ھ/y-r#:R)/ ;@s?,A:%gN,CC}" $qhPћ9걦6kh4>o)WkWB}u,ГV~l&zgV^\[uz:+N?ʛΗHqoF`yo: <{ߩx3V%L&kqbD9~f%\ܑ$*dk") њœN;06е$|qq4}ckU͜Wv9h^7dh=zױ<,RY8N[aS>#9.XlС>/y/Gw'g 8>Mtx:T&mnXT82;Mpe;;mr:y%rot 8b9MC<5DKR/xsyh"L>UDƎ"W6FGV"5oݩY$<҉ tsx#Igb07|q`6p?&όUwh~Gŷ%לBcqe B&NaIXO1{ʭ^N#R.W)xr>o|yV)Gu=:#\A ۊ3 ,ہ <FP2#Gq{DQ}gu82t]1$lhLu>)7,4$s,^q.4lE%#Du֧Ɩx+幒ɑ;W<fE!! VN$S:æO"^|.x,T(ee]xVA*?+ 6sk3gCDJm[_N(0[33L*vD[Tt6D],qQ̡mo3K#c>6-0LYjCVWyQ4p`WU6pٜfx!6'ð7Wt"Sox-IoZN4a]MIsT,&.;` !R) GTaI%Xkiry*x5lBZ,45sK`P91|y;}SFqN; E bw#(0B,W< l/GICm+g(_ϩOCF_~I/$G ںQw_HfEْds2;}!{YBL5}H8WВfit|䜵6 E"-0$i[ţ2 Щ;]0S_1; c`*( )cG# >~? edq9d?9S%OW8(Wwj2<80i7a~ "|2WPMZ+|7CrY0Z}egi{tx6quAx3៩ɍ>?Bvq۝}xK%'/q$ʈsܝqCBTH %.*F/@>hehvہj7Գ 0'U8Z3WGd=.^k7Ŷ3Ǝ+{ٸUC("3"P[zz\jq"lwL'٩L/2%|*MHR*DB%:VD A>U\Yo3|5xC1JȉYl"[KnK[hsݳLw}ǐ,-tαR쾇Yi?1(&.0Eg yu }O1xȚeeDm*{DHZi „-^ V4H6mz- &b$ a2PCEeaSRNʲR 0\HLgF9#v,u6s-k$BagD2dXԁ{A,&POLUj*<5H=szo戈KS=e I|̸ۖRb [ LHhR?mM (] C*?hתzbP޼c+̭Ul*3v *3)?-Z$G UIJ P wv0_OKu0]=켑°E·,7,M!C PXR!ؙo<ܶ9ßːSv{"S#(<MBsG"px,#8`8nMۢMC*KbШ)ag;RU! [-ϴ<_k#dSE/dO^>F|QeCh U2 LVjB '<"!(K}_,WȖ|p*:ңBO$eEaU4E4Ϯl&Q|`FJ sz1.BpxdM\QʔKCm Sk1[ap(%{Nu>z lcY[f̺M+_Njw-{|p, @1P^LyڟFoTG*D*sz/!fUnUMf$co[pyE3!9Pl"=XP8R+Dߣ_GI$(_8mݬnGK-8Z%cbԲ' q?:#98cmqwpq`&M'03 $\Sz*ricDZܤl`p殌UHMm~BO\R+(WTFJ|͸|f%R'V3l-jP>u.aaWJ7I\te6`Gΐֻ3TVbsA T=(SqK 7=е0ʩ>J1QZ2xyP*T^l 3t^$ĹxI)ˎbj An,fV=.ze{ F"!feQY&  l)8N_ 9w\&prrZE {>oEh"Ϭ$D*:b!U&g`"};7G6^-6tWGLqE2}jղkR ci{73R:&q=os}Lmc;p2iLzl/}>hzv0e1*>ru,|vDxx:Om-[ #}ޟ' ]Edѻ;6{녅qu?O}w}Vۧ+gTshK_t|okrLx7=s xzU0jur^QR5DK!&nE)E!C_La. `m/w|/|! BŠ0>A?Qqu9O-OKc;&hJ؟緞o=m^3~ /AHDw'eObz9lm8\>-0M4#K\{@.?4 ҠDHB%:@DT`&t(ТPP +IJO Mh(~Hr?7!r4vi6dEo!!E;[>~?uZg_ǷȟJDx\/ SL?!gx;|l%^S F.f>ng5G <5}nen C;W }j[c?g^ldǝGL~LRf3?__az>ٺC_3-VSxi+|S ҃& bH![vئ* :B_{x}lX>Q 81(O P#Df]d:?2<^kt;]6su%"y;9ÏzW~X w pLݷkzvZ7.Tte,ʰo@/mwQ.%(v>͝B{'! ~jGg${G_üԧJ!صvaSAlz ]}v z|s>?ͦP3 }|%=Wة/~^.b,G96iWJ8kw,pZdޟu8Jan¹tvzUj`A[ apdAp"+7lI7MVƎaYzv]߮tVjX+1V$-ۣ=/0Y~_6v/v}9~Nk(B?] 䩷!M~o'Y`H>ѵ T.@Hr͐"⽆CBLG p8~?@4ԁt#4M{K@?mFCE,)fxaܚL ͦOokڪͧJ+hDXc=|B~w^ [Bz7EiM 5  ? UFߜ5S(QS#=aUW16*lb䊘a"\2"9ܼ>լ4s=d mw3v~[o4HRìB`|Jm _.>;4nF=5̘G}AG(VЈy]}*-$@(-Pg7`w0~26ǞLLLD!)z!_0҃u2]aV]o]^yܮ.7/O쇶c 7ɥҿ؟rr-u-?81Ed>Uz:{:7<>LyN>/(2LJhogggPc4Xo7mҾ+[A8F9>m.:R{]XPYߚگ}h'|5:o'pt0Q8g񮉏S]Ss>;AcNxtoG vehf}7z f-{?S`vN@fUψ*G%yC׷|}?w!u#ƹaV{9x j1u5Zeݖ\IlRz+2&4_^Fˎ^ĉk,ߓ# U[op?z+oL08"#ʍ"'s$$-CBUJRYABfyϒ}/NE*733(a]sT6#&Aw ^ݛn,IzUۨ#$X4E "}\7V\=߈pE9@BwH+Sp P$:Up9?}np yigHϭma6T^{͑Y=h]dcAVoۘ~TI_W|s]ck/kөCv(p"A>>{ŬeX^)c7ЎH*kQAZ_\F=Pl]pfG)ഇxdKfifyHox=Z<19HA 8| ɠ[' ~~79n=bRy̿i1s^g/҈u|)_դ49\gIs~^SߦK*0 !Q5—xOO+`sumk7sye?Bxzۀ×(k )hՁ{ΰO6~o؊IGY#Ya }\`?~=מ70&wӾ%J (a1& ""e(u)"h"<, ݆ .9K?vp?MKG ! $b$f"y4U)hu! Q [dP;SE!ơ?u|#&UC JI;Y%ͿXo~F nI=% [:.O= ϋ[ Q/~ǪqQwmeR8o`3<=c7y~#s"'6ܬۯx+X?c teeG"?X((h#UVL nf]L=QCQpC!V' ?}w>e|tz ?OL {Iñ߾.> L8j0_0Dl⏻h{Q#r K i 靑P_Ӵ_O;+nm/k@07n~'nn\%ox<62wT B"N wd-[{Jo Y耮pkUiGѐt.mJW/M`O k  Y) Ǜo(|SCQ. s2=:R?~Qbe]B-gqOiEK3Ӵ$SFɞE8a.U/.qnM-&B<. C>+X3bPݎ*4@4=@w=" C3Z#jNV. X=Tie碀nQY8q=#[% VN`!(ǜCmTtUW\um4x}᫚q˓kǧػSO{e5W y S@~2ZΖ>4H]N"vf N74T8I1IYL0AMs~ +Jh+N2t$;>yg_"D9 $uHiYUj})*DPQ-Z x9|X.;fv*)UaGju=L]IvQkV棣W47jYQXl¶[ll=Y.7t?oLgb'C!~ 0 jwC"I 0PiX#&ϖwVmٱleg>_#XsD9OJYlPP(΋D2!U z,r>5\J" Cj.c7nwoVٚƢcj<#ļ|)m@3Psz ?a5ڔYMX+.61B _Z{dut`wdOeǡ%czVؕ3;0$>S:D\ CwPG|s&m?S]l#mx26/GCb8`έnG+*LIr `A!Vsi*?G {T-ޒy+f, yGf8$u;ȑGid_fuZ3qaz]%LpX"5{-k|IZ"H'NA]0MZ^%:[91IrAIFZX,`*i'|~ϹuE8<f#ml6VjbnU $}N&p*B Ho(x}qګQds٪|PIf<Wv0$mV>F3G>ׅ W{ Vi9('t48.W;>:6Q{6sPDŬOHwW#McKKy!NԶQ30yCO}Z;Q~fԶTAO_jY6ܚ* gfk|)V<*peql }Bs4l2&٤~tT=/OA˞"@Տto uJcIo2CsګْOg+$!?V V"ӈ }>5AÆYH@u`G=&[&m&c>x6Dq9/"gh:N \ˤ>i՞))w|et 2ԩ&,h  UiO/gD[ r;iieZ8N^=xxTHDWbx$vJ(ʢ\݃]9 0iC]5!<>:]hH%Ci]NL oxs7^g(DI߇k|DVD (sRzUb(γ!:dy@~?o>?~u]d`~5muoH=؁e/ɥ| ݾ:0uwT>=U>i[<Ǘ`bB/zi7M_K'jk_gZ.<9`Ψ5I4~v ksp~E=)sHFov"q/eBVWk=S͓[Ds\}cc|=?d\x <&fV<҅ם/6lZ":}Irzsc2vny&uikT 5vʱ.e2nZ*z8{wf,!<^0%HF,*)]:L-ą'GO,; ƈz%N+Bagl\^0w6bHp#չClI`GY߈>苞O~|oy2td=vc]sP)O9]z'Qn`Ak'yb8RkN7gǓ+fjJTz6~Mvۏ;c<.1I=uMN/ ®9#[{~8|{R7f5_7wk-gxv"h6#b :-3o1<]cKU`W\L]8f 'rwܠK7XyS[x]+; Qs8CK-Y<{Vcɮdž޽&63<-k,]IJY@TDljHom[@h`|;rG%QWE p1nئǽA08j9*gPڪ>w한v]Z3S(.Srl[ai A zw `/H5-8[n& 5V7 M-VC=McͥuwpJU휶 qBnk*G!:#C<'ao% _xH'ĎƑ$$6՜:@a yJ aPC'@@!2G&گ%@ VŠاOUY~~LcSþ]O;7wuoVN> (Q[ ay}Fʩ}?*}N uJ~)Pz LֽvrN#.\P!c\2I҉uv?};.uthƍuAeCJJ_ ?Pae @32X&>`6tNl !i/b/'B,QO`;OV{®3w7-^o{+<|h<~zD'A@0ERUmjY[pqaZ|H *y?4EDs0֒H\1'3옏pcɁ}o{t{N@ Tb@%)7Ðj)@9}(a"j`7c1,.D3d9*Rp a /']"3.鲠;m*-P_Bs7Vb fa\'e-P2I1$;#?fmd-DwŒm{a*B~?J#` JD$Tzksō8YoldbV#VCBq½ܮ^%CաM\XZGӣ줁xBL\^لew͜HfCe4]hdϷ /VԔ!ƺ.Oo ޳yB&aohUGB#]qCpцf,C{ i~PyLFcD \'+7CI<; n@ܺ a q4BxdN8p-ӸL7;--Ռ( 2BPR U"3 %@TEUUM P#0DH % AI@ݱqq` ``!b)X_ )&iqD!@Rd1%% UHR!HR-D4L T"""|᫞,Z۸*HfXy^)jAQLLuD9Lj3T &g$&ޱJyI+FV%@gųp',9TK^P}]JZpl~q"p0LB7wM72]ycZ,i@*!h^R`)abPKxQW%T&rDlJeѫfyRt"$u5)iSs\;S~,Zf^ԀaY^ALq);% Uc~>ӱ8[[n-W,da43mMR ,8-֜Ze|@@׌CE ROĠ̍9[Ӆ)DDFJ[ܐA-YUw[7i>8O̜a;$i;+6֣AyQ/׎y֨z Ee؏luk}js >~:%Ro  =]8{<~3b]\#ŝuF^X|"g5Qͯ낕 x 7Hh0g5tC#~Zɋ{}"21! xHdA ZL>c crt2 ֎f2Qќ6[  @Sla Kb"FV<[f#ȼ" = ǂK# zqWPvA6z\ }0=5GUUBNX{t[k՞*sݻ -Ut![:4eB"OT"T@҈̉rG-Ҕ(Pj&AӠ4UB"e)8E{ h%B B~x*A¨UUTQTU/@](DP%RgXTۆ4Pbhjj&pHi$P=0@BEnqy 0t}U3 HSDdgDݺkyxl3OCb>[ N fBi3= h|$/!<<9^yztzvc.{'@3bϥ˓]@8@O6"KjxN+ooǖ܉$hIzrcEI˿N@[U=s .13bPy:vyѿ?t i&Ep= Q%hIpۿV ;,8_K{=y(%܄DδkN~MФ8[{؃':0Ξ翤ќsbVZqrvUE~߳Wwx DR^A\8v1wU/7 (fv`a|-UMSL0#x89"*xqSLK@$,؛4A0P'W)k)aʳ(Eи1 o=uE S3HU*:uuƾD&cm!~ Bl$ul%Yq7|! >2>S末WDMgf89ҋPRP4'XTr }ȣE3~p. z''w>6=ٽ! חttFQ3'}JjExvf ^,Vy@G }iqC]cogP]f/f =&ArC`V`wVϮF~u3T$ߦN6n^v4 1LpsJ-{W2Aȕ=%ӊz 5eF^\8e( _,?0!tV(?tpj^~y¨BygW}'ߍ>x۱/٠Tjx3zVCeM¼ϿueHN/R!S0{{B1c vwyy36lSTRNy^ڏCHkSz(Zҋr2fޢjd82I.m"#y I^&eNJTZ]n)BA d8@FNxLl#>:}6Re[2.íJ@~UTK ~o+鱣m꯻yF'7p4&â7}0&@:CDz(G= Ng*@P3* Do@1`-pPSL6ßa׍AC*JC@xÆXl;(օ`_ [?C~hݸ ԉ4سyJ'_g'Ā߮Dw7g&<͇ IcoEۇ4D >&c.昄\7 €z}t/\G+ȮB~:ܼuPFƙVݝXoG9Oi@ C(3=!xѭt]]y HI aiꦞ>;"MN/ˍ}:rkO!RDu+We^mg[Ӯ9 0f9l% 0ҐtDߞӦlxjx$Uai~aD8Fu)k?< \ÙV|}YVII HYC ߧ=7.d@ WD]WHK0ݛ@$Y I\3N4u}ZpmNۏ8M~wyQ2L&v jæB>UݭNyY1o&oмdp y7N Ҹf(TBH(߫Sv2%34Z e=ZTjBۮTټnӿ>}!T{K7F>nnG CujZB Ќ],<+uBk*A~rfw;Mh Y$Ji`u9P&C|Cvzڪ\Ey^n"H`|(+m^6zNCW յ +940\8;Bu|J y}||F;wB6tx[evu|!,,? N<[uڢ=x /:~*E١hb f:hȰu:@*^P&םӐIgRP