summaryrefslogtreecommitdiff
path: root/meta/classes/module.bbclass
blob: 391776db227b8c6cc6572e8cd0c628db453be710 (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
inherit module-base kernel-module-split pkgconfig

addtask make_scripts after do_prepare_recipe_sysroot before do_compile
do_make_scripts[lockfiles] = "${TMPDIR}/kernel-scripts.lock"
do_make_scripts[depends] += "virtual/kernel:do_shared_workdir"

EXTRA_OEMAKE += "KERNEL_SRC=${STAGING_KERNEL_DIR}"

MODULES_INSTALL_TARGET ?= "modules_install"
MODULES_MODULE_SYMVERS_LOCATION ?= ""

python __anonymous () {
    depends = d.getVar('DEPENDS')
    extra_symbols = []
    for dep in depends.split():
        if dep.startswith("kernel-module-"):
            extra_symbols.append("${STAGING_INCDIR}/" + dep + "/Module.symvers")
    d.setVar('KBUILD_EXTRA_SYMBOLS', " ".join(extra_symbols))
}

python do_devshell_prepend () {
    os.environ['CFLAGS'] = ''
    os.environ['CPPFLAGS'] = ''
    os.environ['CXXFLAGS'] = ''
    os.environ['LDFLAGS'] = ''

    os.environ['KERNEL_PATH'] = d.getVar('STAGING_KERNEL_DIR')
    os.environ['KERNEL_SRC'] = d.getVar('STAGING_KERNEL_DIR')
    os.environ['KERNEL_VERSION'] = d.getVar('KERNEL_VERSION')
    os.environ['CC'] = d.getVar('KERNEL_CC')
    os.environ['LD'] = d.getVar('KERNEL_LD')
    os.environ['AR'] = d.getVar('KERNEL_AR')
    os.environ['O'] = d.getVar('STAGING_KERNEL_BUILDDIR')
    kbuild_extra_symbols = d.getVar('KBUILD_EXTRA_SYMBOLS')
    if kbuild_extra_symbols:
        os.environ['KBUILD_EXTRA_SYMBOLS'] = kbuild_extra_symbols
    else:
        os.environ['KBUILD_EXTRA_SYMBOLS'] = ''
}

module_do_compile() {
	unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
	oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR}   \
		   KERNEL_VERSION=${KERNEL_VERSION}    \
		   CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
		   AR="${KERNEL_AR}" \
	           O=${STAGING_KERNEL_BUILDDIR} \
		   KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" \
		   ${MAKE_TARGETS}
}

module_do_install() {
	unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
	oe_runmake DEPMOD=echo MODLIB="${D}${nonarch_base_libdir}/modules/${KERNEL_VERSION}" \
	           CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
	           O=${STAGING_KERNEL_BUILDDIR} \
	           ${MODULES_INSTALL_TARGET}

	if [ ! -e "${B}/${MODULES_MODULE_SYMVERS_LOCATION}/Module.symvers" ] ; then
		bbwarn "Module.symvers not found in ${B}/${MODULES_MODULE_SYMVERS_LOCATION}"
		bbwarn "Please consider setting MODULES_MODULE_SYMVERS_LOCATION to a"
		bbwarn "directory below B to get correct inter-module dependencies"
	else
		install -Dm0644 "${B}/${MODULES_MODULE_SYMVERS_LOCATION}"/Module.symvers ${D}${includedir}/${BPN}/Module.symvers
		# Module.symvers contains absolute path to the build directory.
		# While it doesn't actually seem to matter which path is specified,
		# clear them out to avoid confusion
		sed -e 's:${B}/::g' -i ${D}${includedir}/${BPN}/Module.symvers
	fi
}

EXPORT_FUNCTIONS do_compile do_install

# add all splitted modules to PN RDEPENDS, PN can be empty now
KERNEL_MODULES_META_PACKAGE = "${PN}"
FILES_${PN} = ""
ALLOW_EMPTY_${PN} = "1"
Sq7̖ UW?M@GlTǵsD_i6N)P88-Xm@c;u}7:m) tœǨSb9^,Hע>\tR$KMdf)׏Cv%4={vBZ&߱3{,IT}-;gc]9:,늢+RegUUIQ}Ƨ+)QPx!Ӱz}E֔8Jt$AUV˃ѨWP9ʊ\$<9vtnj,䨜GoNǟ0| ˊ^I^RV-U*8zeH|XȽdŒ^2ɣJU z(0RU# bQ+(vX`*JAsՌo1FA4ODJ-DXw,e gR0tj߭s4QK=DYީ?S5K60>3^ZtIXf^huN;XHֆmMvi'=͜zXQCӧ {:6poy+{_6 L-0&ˌ z]t-ʠrQŤ5( 5 H8qq'/o.鑄?ĥFx3 %bRpG5wO;3FmeU9fR43pu%.3 B!4k^Q?:E| y?U`]-4-b 5֞-o ׈.R-V"{Mkv]=A \A&V$1mg|pڲ%_*U7Ik~qxlOOWSL#`t1JBPgA:騈|2R/_#0SnZ)há=#7pC 1\vYp-M#P&L#G޳6,9ص 6#v-ýئgBDl~{FB/lppa*101dO%~XF_meȽúz}h[ Y@QZ@WymgjnS-۫b)Љ a>%o$(,qыq dk>. Ez\.y/:~sU a!#{`B/n}7ߧ/[ &!je/Gִ? 1Kb&Yb&jm;A  ?l+[x]34']e䟾1ZBpAq"z+؂l7$}:f>PH7N6)ĝ{Wx \+e`Km7XXhiёy:7Jg +-ޯk>^G6R>{-dAtCƪ/H+U:r(ki9s/9\>{exIS Y U8JH[;g|f;)`QĤwRT1txb@tkvێ+wo{!J%냜,*7H>yIcI/̉$pi>KY{tABV>lgL=GKdq[>Wܮn^D׳OWMWS2a`0|˭T4SДJlRu 7dlFJC*Y%-]qn*$ka}؜L(7#į&QJ {B â#In \`1V^'AE@3]1J]epB1:FnjOr%;@W]B/ k'Sty+(P.o獄WY)_)l1PR1[Ywx+W Tܜ</WzdaYxfJ[HG/$]IJf^h/a9k0U-r( ;&# R:Xh"fOT Y/T J1jmf[CP^h:'nD/{ӥnyۮ$M+y̲yyɓIUiK/s"IXţoL:qꢜaaK5-rs~%tZhoF2o 8 w[1)r"SWVFvØ睸 R%+\.* fM3X(:, [H ct|&*17p]7y7 Z?B)"7?a'Z'OR @6 2ؙxf1#ʙPQ/8?=mL;L3“d9G 砸>H֐հNB |I(Y:Ѯ7_A?XЧvv#2E|bxt_ T)ȿd4I7z(kQH+FetE63nUaUy(w 2\P $s<4k%dG[wvp`+yibjZ GS2=H6Ppu9Dpi =[MEHP$cEܡ쭱!0ݬҼ u(d{"b /IXRW'F$D=wlkcS6ᕂ!{9P.7pzQ G;/G럯}.j]>gOH{0WDXe\7Ųͅ(4> 0\_" ƿ kM`M_1_)G? Iº}tq^dv Xdj.=.ގ-+R(YrT?Tc k0/Lrw?zZw){HX#;8DA#w-mI|yť|Κujρ ސtr0E}TJ0@nxap0Se{~Btϛ5iaB{2}% O"h";w`lkys~UлT+Q_ߜ /+*գR!^lCʕx^C(5ȡIP]۝?3weU/|jo.;'k2!1ohbɝ9dxD(b3GXI>W_Q;?3O pKA=S>*5p6ou-A۾G\xN;w`6yt\\ ۚ`"fR@VܣΫESk6e-CidFs;pYgbGãDK2$z*'|ugc60dzN6XG.?h//5KH71 Q'"QW7gq}J5Xq:RkI]1Dբpזf'd͛M{K*@B +B[*=IU4j@&NV%dOC7К}:Dhlg3֘  \#k"DQU^Ȕ>4!^=Ӝm߹f -wQDlz $͠c+YSh{K:bE 4=Q&0dlٛOԥݿ8x6vx#PZl7j1W3 L1Es*/vq~uO= 컈JּzʦP$K5ΰfM?Nro] NM>ZʿTe(te'@2n Q)~B? ḥ+3,wIɧKфy Pq-a^wU5D2փ |\q/2U|)0ǐj4tCIP%cVE8W8,[g2[" u_AhV32+ Qe"C_,=N܎dj'3d`/\6'2$HϗNɔƊhs=ߡ!Øh7$.'2#nB-'|X+Z)ڡ0ZRf*l?=/ rܿiBNQ``tN@{G1*̘̱NWGPY69w9tR߻}@i}[syn'|[zgsʏUUL.OJywANd-̝g8#ɜpѺPAV>Gn6Dwf_=rsD_?v,× ܢQZǹ@T!e9{ql#-*j!^ԵSH.D=KݳB"3f~#Is: ?hy6"He1iѽ"$cx/>->ủ/9sjf|&%bϑf]k7ޖ(Pp?eCNE=$W4C a`+"plO ƱWu Щwˎܼ950'NH&wRSfZI*a'UJMGNj^6Erzk({qΝeE"g ./R610;4{9/jI0-|Bo腀j"jBM/aHA,{qm♪Ifl܎ְR?KK|k_ŜeҮĮ#v~'3Ga"miD n3U)J`]έl :O30[Tvס;:jW&19/VFςO9{J0H6!38dDz-9g5ʚ Xc 1p{AGԀ0GBM>f05[HR7i팡h^A7Mh~h9/vؽn0d6nnvn׮'ר5o pUoYx^;7mVcZ8mڬuntY:\/hDgAnD ^!v/ӡe%5iLa*̤eFjY 2` {֚_`ܞĞ#>O]YN'v#8HJKWj\ש ,˜a2Fnhϻ:t靕?{׺6)iw7 !0WL^c/tzf2KKD4H`;y9f朗]`w|}jWmUwaB5>ZAX>TԹsPjg{G٦9eʼn d_"/>oܬ'IDf,PPYsnhY9g~<{|n8Wܝw#ENپsdHۮK7_Gйq7\<;?xCy_A26`NKLkw8fw6 w@Θ'v{$?y]Z]BskFP?<9O]wɑ$>w/vk ˌwM;>+ۈDg`:1ˠds+ ك11G D @h +ӷ M'``2N_@ XD.:e?LLe%pG3Vԟ%ݯ5z\ *DghA bP\ j-g.qMuz֗,Zmϝ/2l<ҐECHM,{w,?ùĤduH~^\oXN1n0Yf$#ϡ>bz{wAӧϒ"״d?,/XYSAr;Yi%_Ɔpxˁ6 B JGCwmbu0~w C$Zt[M|%L,i vq;4uW!VymPrڙSVe2,ge!P-zUU6 XVm`ܭ'_"#@|XF+vOqLpD;qi6!"wٽ@s@no^oI_7!Q#^h\ 5!EE.v lV@Gs<2'3H NC ;A`AL i Xzxz2䬬¡r~엙  1gQpF epl(İ;gJZ e*B< Z tIrGYӪ44C[J IsŹ' ䷵0Lބ<񧩮-ҍ-<E @cXq`3|ĐDž֤]L`9זc>+TԣIf#PVp a@:=K9]Cy,XqyDO cQ~$U3̾M깔Zuw*JoFI@9eC&j }‹|F'N)yDʿ^ОvQA96.P=VȢ{AGfQ>i!"2GLBspR P“B mNjΏ>We<`k^.IcQF<'o3yBBɏ 3* , H|UwauO99[\ȹaW, \:0)Su02ůOfwMC*ֹ['_p;̊益7澝 %!%>D;PSol/b C(~ݾy7w3ϻѰn8 K.^ nw=wwN>G.T)􀓟ID}pnsL:r.qz tF&!}6D 7Ѕ^/i u_; ѻoXn|c.P3I.oKCȅωt7r~$x;?ʝgzboG[%[&QMo,3b# Қ{tGWRz]{J7m%8We0=S꽪+{F]ѴʽW5*}1wCJRY?1:#$ g4 Q꠺6?Ti« w9r)H4o#J=gpd7wxI\' !?uUЙQıI.Q礠]CRwcO0'SL6!gW: kҲ9=FVuk{V h G19ԑ7zDJg'gm77"ɟv ($Mwٔ'C3 |z'"سLWl{^${]{RR.^8OSc<(5JWxyn[OINk''K4kv,Iœ(%aT?_8۟_鐫S 2 0f{. Uar35K"_YH_N0\w"s=.,Ƙ^>`t3nzMO":e*=ж=2tl+wDD }s{e]4=p/|'ezp˒_[ϱ nNQ õ!dܚ5r;qm^&׼EЇȍ zQʃ "%+ P2ɔ@Ԃg%2ԋoZm@ܯ9҉$ܐ2{ !#s32P"һ| ȝ<m5_BDz<,s<;UƬq/IŠ)p"%?Z_6B(]==駡׫IO߯2?k~*P! }dD.)sq[=U?KILX \?PI;bn,RBD,D)P.%mCsُb}\Ngq?>B%«WgW C=¡bJi:_3k5@f/gXXO 3[W\W_UeVx(wq"5)q$I @jTZry+t Jy)RlW(.JxQLfܥF2;)3v/I?P)ClDA&{ ;!W:,M(SwE)~(5 R|:|8PU-HяWumsdD,(cl3y&yomyI%9sS%Tt:1d m|cޗ q(x13J]cfX zM{/$nooDE¥ ^]szgA(*J˚Bmc~I<>PH?wqAWYeUTRiV'T5ejkMHv]Ԩե@D$^@BG"ɑӛreoNmz 5߀ $i qx{C|:{G=!o~?;gĸ`'k뿆bq8Ė54XIƢ0# sivMI|<[YɮZB{p{? 迬It͏jF:x@E89q;&s LilNÛJ)`w>6u?^/ E"s1'd8[U`@H1O{9OSט|{#^HXg8T~0E{+,WZzڥJ]g䤳[WCe^ @o*B~&݇|MAAF}r9O7u1*_f~L'|4&{x@T /d[P@%9UM]]m~ƃc·2Ft.?E&ڬT؞±hOK?o@?׊̩k߅}J l8 'd7i!o)䁈ٖ9D9zr M@M3.ن׬>1%xѱB\>+8{2ğz"7Z|<#C[rxݾ[v.VUmX i !Kdޚ|V{0zeZ~ڕnCVM`oXjRk3ZMFUVOm{J.7U.h|YR%yf=-N.FE<ԝՓ><:=gxwW!1+8AEH͸zMjBa:O}>V㟝4NtaL?#Xq}[}9L_4 r"YT`zSq$^9:uf/ s-F G2]sܛ˵急^z V2FBbAgXB,Y)PH:tP'n!y2 dEEkDi4ZSיXfn!TV ?}Sg{n#}HΩzl[4clG'+4܍h_% MbQ?Z"U`_Q* kw6($⓫D4+8,Jӫj`q+t $ eH'aIOm۲zcCXTGn J6!4py'xDr Ȁ66AWRoEӏ!"!MaG 'ZP,FӼ0!6)$JErh@=)܊ju?+q\o|.egY8(4cȮZ1Ӵjk}hꖡ{ϬhUf*j*rڵZRtnϲbS2R|!/CKgke0ZO]OtY?4do~ncg<EQOUVjkx?UtDq5DF@|ۑŠGrjN9FIaBŎo,9ou7ɇ),48AV0?8wq2BhZXX@jOzYl#=l#H5c`KLóE'2D k{tF_uY]T)< 6nmciBúTO%dOyfݻIiEMP6|H !"9$4G-=HcC4 7 ! *ZM|޳%3{"むvPGǹX:;Ιzn(_t՝q/}<ҝG%T*Ru8loCt5evjxUaO&Ʒq τmc&@XPuqkk[xY|̬5 xxpum1@Ew8:f›Y] 0z؉˙Ec&kqu:C2vH9@۳_cS& T5 Mi~J`woVn.o 9>_r~}*gهefw- 6N !\V, Wg hryu\>\ˋ,fEh4aX]oGXj5YǸCMMh25w18&ȍA/A( '=cvs-oGBv5ZmE-ät]sVZO~L޹ Z}$̳z<)c`(@0'Lˉ m "s"1"d1QI E8`szdH0EQgc{tO>'&o᭔ËZȗZ~yP KsXFjuXXUNN}HF<܇TJRZc.'J|5/[X zFn(ưm:voE:N>wazFF1D`QU`nb{:P#[#޽ωN*@ _0mh!y:EB)zr]@~Ay, >LWGM#U˃CЛ˛ªD5&AۻHٵ EήONv`B\u/2M;mtN4.Ǵ B4nͻC0&Z S;V Kc2&0Q׫c ɡ25Dj r()%RU$́q_ ol: 9Zb~M!&C~9 56ptXb= !'Eo4B7ōUqGWT] 3̖aQcSQbQoEEFȾz鉑g`b(z޳YAS z! B|{$('D@C4ѧ3L魭FׂmmWu |൨QM?VKnJL/Cy1nB:Edʫ>r_rbA%wefp_0 D,(󙭰޽cj9dRK"D-k#wG,˾dbyA1UL(qHA@|!4&0 ـP/N%Zsr|LG+"|!D2 !9X0@K9?_gƾ4po.ˊ p8Tf"j@4ul&$8j; ;(dz؃$hhVV"u91_○s%(k !%Q B.끼ܰ eU/3cYCJ)DO!=aNGo7D<I~"5qN,3Ѿ1a*|}obgXwU ұV<88m]Ր܉ 0i]q!xx䶐*JdBL@ 7}n]4HܾK/.N*O^[ v=@T]6rc۸X7wmY),/3Nee ^LTz4%|O!'5`;Db~Ot h`U vO$_{:)SM!s8Y%Q|FsE8D(F  >@('ShFZ#hQSGxpZ}$ Fw8ypM)ʱ ;_GՐǑˁ_Cg+P[AIFrTdY[0c;;,F1`ClOT ]ePPF%_0 Iy=!+|-ޞUr,|8 .yv AB   GS8n ]9 a_ >xcuV(qSWOW _S䗼 24=R@ʰcΏOFk$7:4ŕ30qKCoGdݎޖ)-'7!2]^XGMyR&W$LPbt6)YSeC7Iand2R!R!`^de2BJ `9x0a])/@ o }a~6^BN pruZğ|;wU]kn.q^orקLg֏C(l @-7F4ōZ/S~t yzOgxaz)qT\3(Tsla fbra{>0yQ0dYm4*Om^+/mi_6_W2M{y^_,n&l,< n<(7kq~NQnL,+|RL;ո3dc[x:f0].%3u*ٌp>6ЇV`K%ɐJI3eijP6Bt-?k *ޟpn=ڼ9qaFrXp+ [uS*t&=5qIrk96,n {y{ ʮePV6?af:/jd4s~iȝcư5feW\"ND%~~p 0:!~ N!obU7Ʃا`$hBpBSGq) !^$4Mwd0aa>ѻ~` *α$yF'o5 SZ0rq5V#쉟GhSSIvj  vR!2Qח,; \l874_ Z,A[1r^F|ZVzV,>#>.qG&ry[p/LO*i[{%tP1}-_~`=K{"~ ǟ3bXñ!$rvQx>!!1es48 5i)-.Z-axefQQE@Z*uyzq]עi$j֪ŝ?Zd)B$Z&h].lk%ҙ(K:llj4,e镦R__]\_?P;h>QSY?+H)o~LEosUcxZq[|bx.}s:|ʩtCR*g 3꺴GIoJS.\`@{*c:HaTvR.BX$-1 EAy`Հݵ&!lFʹ-Iy0[ƨ]*kmԧm c\z,ߊeZi,¤ubo~z?>C]b)т/K$6P)r/A} OB^|`=O&YB|I?OĞW4tnVL͐ V`Y=COhR켔*QZDdG{* vaCmhze0j+,O 1T`w3roMdώ GW?; uk|'}<Y7Oj?Y@4xvtK1%]FX~0qPWղc|vb &q,Re󅷨/[(ojyH@żⶶ @J[NJ[N9Q^kWUҡ堲p)Sms!wf5 Jҵma:j< "˩!/ůP_OOjisӏȟ3Ԩ^O*&bp*TdGggWM0OP:VEc܆*{'uJr|vc-ΒƴS,b:+ SDF'7$]~4&@"(*ޭиEOc> q3@^:C)wgO/ήҤuh:]gpudQ~;tFN;_¨'2j%Vж˥(?m$^ X>ٟCdf4–m d$[#fPK}TWWRwu5/pW^WPs=4:PQf 7Y?kvAw^:$Mw^D񛦷#&#Ep%m6 7xya8~u*7%rX"OUKUivYy*FJ4b+U=RX`j6Ïx4&%k8LnR 2(\P] Ck&m:'x<*0|lE)x<+DRFS9 :% ,3!!##FVzvNX•w>QɓZLFe|xMGboFTu`*'sO"S67{VeU+R{<$I6K9+P$dC[ftoV%نVt H=8gʵޱ9:Q`6nZT>((QptVTNBKMpj#Eӑ}Lgՠ%Vb?0DJ|ݝsь T[hGXnP 0a#Kswo&m,r5#$$t>Kۅvm0soGr2}FFz={^ky?OpgU,܈cƚSP)Spn9pnK@ ,P Zm# Ӂ]iݕFJU'G!=L30 eX;`~jq[.GOM 6wz6g|__|zhQW=d{`cfT ^e꘎i6\ 'GԨΦJ?Qo/zʍ JE\~+e:O# 9"T*둺6ECu0^̰Q0ʬFMp2hUg D'mU%0Smx=l/(xxt+88==>/wd _N~6cjT1'a͢6E؂)]3Tq*=ٙY"Nz@iÈ"@G,V?Vd+uaݎL `6@Y#ww(>E6F4JxMO't/7JKa;0ŗwNaxv~9L4-J4/EnA/9˽aBiX= ^Erq|3%$ȥB1ΓZ<{Z}=C3972MY\9MM!LkXJv]ۀY:7xQ޹/0f^.Tq!H WH+3T-T'z%vC*/WzΞK{\C0½y@;.IWׅy&ù }r:n#߲;\ j/VYho܋E*㧞 (> o|ʕB?`F9=^yf/yK_{gb٣nOً5ȃ/UEJʍjiK*%pZyV}E?.e-uk~{f_3{b3#)c;MlzKj!@`x` ̶W24Kn$!;0|Cj>b}Έ;C}\g8)DktǦ["j5C4LE7` 09ggxj1 7J4Nnկpۖk|J uT!a@yC-;yTARcS{x1Ǖ`S.@3̐R'~n ^OH[#Q<7j~H*!}C'GPqYB,b)[3_;VBeɴ ţ_?QӾS_Ԯ35k:Ѡs`a/W9㣟X8lszD>:>?;6wO:~tG>C?Ahw}yC}h'/ҳlQnظfc'T!駹hK Sȸ" F)g c t\=9 93 櫦KFES[ܚo:5곐.Y v(=ٞ^ڎ|Xv{}0CN:Is~|·.C'ӟO?g =rz6~#ɬ<[Wh Ru[yQVev@ NȺ_ T@\g4sj躆&r T3h>LFD c+cA]+T-P1zeM'[RoM%jL(C;Zkne6ܮІjod!KOd<M ;2 .V{tEUE y/ݝ=Koch$>%{) R0AR@7c6@6RǮ]GO)i}Zs?]ZO] c1F}71m6H,* O)@Gdk, d&Ԫib uasFfTNf'Ԭ^QY诇a)Q)PԘ".~!4<"Z-Q&Cޢ` Yd[dJ,vaT d!<1[XoTnw%1$Ԗy6禱U\S]d5M&%\bg7iNSPˈ:R]ZD f )8ЛR}C俐$8]o\ 8`\.:sB _wsNX }oiSU˃Qi5Ӟ^$ E'op XCW%sۄ|8&J59βq +E>(ߊ_IqĘhjQ 1Ҕ(#YAr1&:c$@AqXBA-D XrM l2BleBw}e Ge6!b#XNW^GR'ebe6x5PFr$@ׯ.}XCA䬒= M-q򉺏@v<9 S- hJl`vy:! M&c;}K˼R dPg_k4%/^4G!n71#kλrƏ, KQX[Ű8hH/S aM`hfmnBaPCN J9u\'i *ҦYzft`\VaN"/{&;.TKƐd 8fGd/_7>]kemNf  U" ֩~L('!^!-: jb  h,e”`pn 9VsAMxtiR>?i'4bw`>QS@4Kϣ$`VA{>}ԙ ;ȥvδP^HMdM( hMNq`S0lV/R}ilVZ6+9Y-8%5Ɓ-%9 rah '*9Um<(IoV~l=jn* qe7F͞ S8hUi9")w `N@lA#eTK /}秮{s$|~Vu~oި0%اH|g0Trnڵ*W*F,6)&?64X&pWyi3A~ TysA$Ao1,תRa*8>.ˇU?[%Zm,ר댱ub/3QOPp@q\S/&֋=F|l-^MƇM\WJf!tZ@=Օ#|QV*U _j5*WS/f;ҼS[ť6 #D @>{K:ݻ<_xRڃO"(OPja&z} &}]O"E-s:(xJHWEy,jN,' ]+-PɣfQjJ(l@l\5WXAa-Jqaŋ-D޺+—x>G/dOGM>lC8 fkBhS@m<$ݟd6$۽`,iF/h4a/,8E}BSy>Na1Mǃ]4eGQS5|1~&Aʩ>4fegE!g&i՝&c"wp2kg0וPTd^c{S'G;Dkl(WlࢽAˆ0Њb~ӵbY˗āR?Z&I!v vOd63 R=#u)e 6s 1&~kN;h(8~=rk~O3ߐL28DdҽÌY~+epX?#N]o5;d2V aɭ̾Ā@A:0y2ufa֤=o>;cĭSz[;nDktlxַ(=)P)*/`W.yDmp:/l,DP)/RNQү@^th)K.5?P*[ 72zF t(>KŢ3\&J_Ȝ" +[cz 0[e%I}\*#-["WEeJE,,J.0(oso'ȗG6P1 C"xER&&m*SN "+]Ȳ ""Qn.C@ GTb}+`M>4żДJVV\ !G)LTolgv|Q#McOL[+gPH@X> " 'UTb*QćT[f+ymֆ =i4jx9]>:E&h lZ#sr 2q9YBvU9½s8rzzUכI"$~nX>UEI '|X [x+zrx.kNqm]TLqb7.zi-m=Qb764^w}>r-uÄLp-Cg[h>YAvF9)dMĝ=MRI*ur3PdĀ}tlP+?xhIbVƖ_CY^b:H\dHgyT.k;H"XѭÄ)ǹy4%LA?tī#Kd+wj*Q-KL6* paWw>&9?/$Rd )ĺJ $I0T*+שBQL0`nǏ_W_ǜ/B̟VUƪi*9U[s:LBFa䦊ٟqd>fF!*YtP1ZVJ^W6Bj`P!FxHUna{6w#f.-e|{Y9|yNbAtVHMerfux$bJrŵsOѨ,j`7L n.4$n)4u沱)cŎT#-!ćgy呦O|TFQV[6 y6^WA~zgh.Z)F?cu#LML8ٮe]׾ > l#@ ajM 3ro0h@ܭE1ȚW$nj&4x^ȸmOzJô4qŭ4B2GWb Yk`-1t<ƞUqq[% v{ln2,ȥf.Q4B:dS8ӽxRxG&knql`S!9I΃;c[|K*Ў-`dmnnʃCE+n*;mC4 M^3q. O<<:Fvyy*wJV#}ӎ$8C_|d2>pxvCrsA"b9 aG*2":qnv`k2STd}^`tw!d6QA>>ar\'QS,RRZ|\5Ύ}" 2  Ո. R*WwY'r~huMR ѵuש}ީ#뻣)tɷR`ho?Cպ3At]`*{ը>ϲQCFrgY9^O~.?ˊP?KYgY=* /RDl8l4O90N67/O >. Ղ&#8"ݩD2r/?Zg^ٰOڡqc*Y~$b/!%Z?2X5~`s%Q ZALk מoMs.9=UHC1cTx6~ƾ)9o$d08rSYlA;GRtJ+H׽70 &7C}Ks%yuRou/pQٮ5ܺ2& . KZiXrJۏO_O:: `߭Q6tVwGg:|#N0XI3e=}%TML?"L = }ŞWDW7R2WF'X aG~|yzQGoRU0>vsj_C/;|Ьjt PVJ[%0+1:M+TŁX lw{/b/#f2|{T= 69 "KU~_Yp}ċmQhߎ!4)qe[ڎ!&Łr.Em7WA<tt(880 ]$BL/_ywIhy%TG V d~/3^6po+>1z7LAJAۏ6n}./yԱƸ?4!'Ta]#ysSX<8 ߾!]Qgp{׏M7>T[W[;{]5̐*Զݤ|Íã:ste+VwvfT+fߨVFW훦VՌt olc2q {b:cvg]z:nQ!oh(XdjQ~['`>@q` a2:m+/va(q`,r(UQ_G_Ȗ`[_) ߎMSpne0% ̼ק{?0ݵ;F-crLWMFPq(lخ@^chĕԜ0&S*[{ kLY72޷܂ޡ'{v&_\[ܗ?NhJ).ͯ0̬ ω2p?a&yP, a@93?Oqe+Az{\[zߤ+-g Ճ 44? ]zpb]7:%+W*t|Tӥ;łAs󊻬UG t oK5ὂ)+!ߴ/@7.mf'? 7OU#*lБSUE%u]ZVq–A ߈9ңgDv3mgg#ĩF+kbwt\1@\#yI݂ JG1$4x|4l42xB`aglu:Ę3MCu.d,jˋ cڗXr`h틳<}]ćDq ~W6j2 ū[,8qR_{]@0i鮊0Zs۞ ]4wҴE W>?i RAi_tqbyy;nOҼZ ?I? *___VߵﶗgW6{D=IZlk܂yt\o ݤ魳+NP* /]]̱g+-EM4#Xݘ4ɒNt{%)7(H!zbwqP0J Wf ?"V%oE[~A+9=5- ujIu:?`QO%RZt*,Nko`Y{gI4b_;rO?ŭ5 uأ8 JR$'֩fá1qhHPj*XS\ /tNL3WBcxjkiJseÖN30DHuA4n!-(=F)JF.>#!끸rk˙f-f䱩vc.UMPRy֐eF.']Ӑ$d0$.j(ϔCCOJM]C 1A"ʴܘ09łr9Mq-'p푬? l̀p6], j=p)^;\ު(Z^CtsܳQHuAG54`9nTeeq2ÌEGR'&:;$.# 6^v~2ә LXQɧya 6)H P Ay7Bβ1]&$ t6WکeT,`:l_H x*d-q@ ?:ߜD8@ZWNws625@{rɏ?3̌47E,)EaS.MN/3V\>d_{إ7Hie<^5jM(7#~V00hyRXqdQ4%ɱƐDo}k\9 r@ʝwɈx0ȊAVԯ 0vNdE(rz'9=y+ggr c _>6H䚺y vF굣fvhӻygG-Ci*oՒ0pbRX 7xW IU ݂)bop1 [qs$2d4 q L}; GJƵnMߘ ό!nx&K4f_da`o:#,Ήjv~‚)Lj+[^!?M!l|Ty` Az/)w2 eѱ.KN Jb;TTe+&[{]xkS_ o00!^~ wJZ` OB0Lct2ps|MV?.F~1_;wۻ{/&(x_ |"9Q|+#a3݃:cƣ',[$Ǔ'/'GCYP fj]g Ɇ#`W=Qx 1 : g-jn@V m,)KrgAC߂Fg@v@a&H. .fJQs&B5Jo64G2:屲=wV}^*.3<.AR5;BT&ux,K;TH"q+Z?{o޸,S`}ڔD\D-r3:UM܉K"P*.u9EDIU\%ZŰtG8?9j͓Ռu=-BS42U' WڢŅ0zZnT@%i BQ@ GB\kAJTH!sL#Ɣ#(T^)Fq>IxCT@ r^v"S:-*WPxT ΉYxWRh4xz</@\]+~eO-,{AhiX yhPIBypPdꀒ<dj+gs=/6L9"+K)I5}̪B]ϲ<в)Hc^t@FT9՞z06/͙GAޏ. ɺnGs\%iL| sjD djkԶxY6UVy$0>Ί7KyXL¡g|Ll樁jcspAa ߅å/'U튧ף.Q'†9 C d~ZL1)Q@ud7zT"emZG}kiQl#,jͲ>rkXV袗8ŐwKx8 )uq9<.t4p>zah~ wp6,}O&^2+ e,B̎oF~Eڗq+3cڜFhy7O>G;6&TQ*Gp_w!W4MEx(}?iD^,QB+ݵ(*\13yq*dk50G7"N(1(U#CnxacE{)J)SփdT#;i؇,zaI+.ӄ 1C0)2>2L)aP̄ \r@&MLUMIMT@.XGSyqzZ?JQ]^6i;JJ a@\y:&d"U/B:n n/oYv~DGv`YŁK/nK ENB4hⓈ~Sg~)} Zn Fp:40JϴM`@V]qHKnYAi ;o]ICkPw ӷ1z8-I+V1/ V]'§>cK.xLQ=afML>/؇$5eذӅDg@GAxZ$<+gWfawR}ULCyרN"r sDTa:^vIwT(p=ey~d{&T"$ 3̐;v)&AkkKP@Aҍct};qg ętNh'Dxezgsub> eډwW̶?USIֿƿ6 2*:+'O.oo!@j$>D#J W?nZr}HU a~S_zZak`sosdj]7CQ܀DqЧh.;Xeg88S]Bࠏ}AfѮ2W?k˂R!cȩJ`8ϩ;y %qw諩OÓb6 -vctz&5M6GYll[x(bvcR(|#G=W?O嚬SmŮr/gGux_[3}v # "C >;2}Vo&T. @%/'cwG -̰i~XIDb<'L0 *-H;k$(8E Nn`(ҳwL,2ZbKxBC9TRI*nK$~B &-Jwcm |~BkC©n" &+\kW2Aі"ȳ-$<<6!\77mn̶oAߐ>}p/s'SPɊV Y󜋻5Cb]evH*<9$ JQh^_Eh?, *:U/h]簊oq,R}9E{\sۯ: ߂Z=cIaeP?mjq- gGxkɟArQ,Ť%Vt4o_[[<"g^C=R.0a#c .(6., ؛N1T"`brP>SbXS.'2mF''}W >M\a^n| zST-N$;ӝodMsUW=O"~fR5S@3?". =Ad;C4@̈́@Jnd1 $F=>$=ܣ> 'h*U􊺱]!]6F#6$eb 8튜ng3X.r'8 {3X#JN/{:oBW 7cE>dr13HIZр]GqZ)S6[OȭNQp6|nr*vHP,i|^(xϥEV -) sD)L5PNZF+BKJt= [΂nCSR!Q%pB7Y"fLS<=Eұ@@9>ٸh6="zTSF22sZEˇB'RrAzT|`< %!\H #m/4R5I崰7\xJ8dk]]4|πcA5i]T2_:,߬9>d 3eY/mr|P(1\FḊhŋg]Ag>/`O@ g TP@2X,b֨;LN;@i&4bnmlw2b̵(kh<>:&z3 ۯk,b^c k׸BMB{Kn&n W݂$@ᄊVhr1 s6Fl.GU {&G'uT4і|T/V}m-&v@7I:4:ԴMW$ ׃5 6GZTZNSB0-ȕJȲ6Lnc0֙ z6 \4nɗI{}l.ruXa@@0m7`qbLd:nmدh>Y5rA:{#*.u4fͧeuДnU\v)bsi'dl;ĵ rѷD%B"rLR0ɿ"p3ql2T'-(ءk/H}oG3%O{aLZj(@#n/1^̧OXk t_5kS wcWț@ l64 wF[bM'kz/b|Ë)m]QDPڠn~Z'KGƐm57֧)m 2>>bО'0TwEf)dͯg ]Rp/IJA$üs%Z8/Mi=gr1Rǜ,+ΰ)=Ic%xV׹RD׫h^U8BFo Ldhܙ376>{p&`3ȼ( \Q5Otkt njgerpJ6HDmimxֿ!=Y?a[#Mν] {Huold4#ގ;(ʚ)~e4!>aB+ dX[=b 7ѲA)ϝ5UyƦ}+E#d0H7E-Y XF“1 Hӕ~X/GDUbY׺6KHl` )?)7z*۷觵z}84뭫ZjgXc,`k2Z@TZp=O\F#f[?ciZ62AtMƨshugc,\8֦cno,5(1Tt?19~i2מ80f,n/y#>.`#̾{|lSG{XFP^4Q|1-.eP&3/ PkޒEx?PpN>ߕU`MJJ~cE&~H}G<GY/3gj%˥7ϸ# 0[OO/4 Sflf_JٓTVz'Q($[^Z:%h]2h* j,ڔi,+@8APgdjX yNy^e1 9%.&^&)slE[s| Rϋ-7]s`/pokABo BK0ׯ|dgw=~:R\)߂;GOCLolzܜ_V?q?uh1)ԟGˣcֳ yOeR{ ~Xs$XN5@~.ՙYg`;h3khyhqyc?uō}4KQZLσ,nf[ԊmT__oTi*]#} kp5װVYHVR)WJZU/MN-D$H'Chb5:9?0nq a{ݱu f*^(i}kqY3R۫² ?S;eN/kF M\' xX^zD+|ΔY]K@Ĕy]z }''/u&O %0+ʈiW/À"i37m7gkVpNI_*J}Q[+\I^zDlJofd@# ;TR# 4o &U.ߙc.æPtΨYv"L BtPi6:ap?8?@ڇח-Upxzђ8PhǷXH o(T Vr8? | 5Xr%[`϶C/D8KvDva1nt-R0T -y㘦#bN gP?w'4TQtrquxj|DA6FB`M+FO`>}c=ME( Gr}WZSN̥4Em}dEz Zb1br}3RFڊ ECe_#.T,dU˱zZ'+fJu,!<ZaZRX>괏Tv౦xR!Z7o-XH!#d*v*16>/iL\+}+3oxI6EأgH߹>B8Ӑꌝǭhg+^*9L_;3/]w99}]Twg,Uaμ0갇/>vA)v0cb*5c9!BoWltl> _*l:"?|ɨ,`r151ȣ 0<ah!E"ޭ,t8b9wy%O`2KF2pF!X8oy WB؅I\ljq03ϰ_v⹦bO> “'yS9"V8?g&"lTԄ\80[s6%Lb?8 ?d}陡96wFJpc9 CyrQa,-F[뎖'XGڭ0($&bT9v3-Fn0XzOVѢlmJ`*9؝$ ?($[U NJ}7@' LWB;jRBmoy^LUHW_b\~r|%OzO/l1O"~_yKɅ/g,;q{,d rӲNAyS)cQ -zi{%}.;f=u`*]=р۵I~^{Z虝Mf|Ge#ӄ&WxAʸ1Sٳz Lkc?0?Vf`L4IohO۬?\VIW s yӼ+\ii56a_<7mYV_O-GݢU`؆"V@[X",Zxa,IRh]?S~7?eدmw2ێ5?Le/k?Ct+~v]=*?kZu`MoqS C-i]o]m7Q zc_/t饘T-#P^ ]{BTEviR$H%faz!=vvȣl Zx9(VJr<<F<3oYN*K,F4;̑ڦj@F;3]QPLu8dl%gd-1Lٳp`tMee ?7neΗ8׋߅_/B0?-w<4Fʜ6Fz̕e.I9Bg(dtʂ6a <+G"NLΤj Y;`WAu 巶X 6K.ѺD "hu7Ol3FWCgtC}-XϞ tuQdI1g To00o "C%ӛ8ygϤō5n;bJIgLDډL$ŧ `sM6+>x Nl'}+Nѫg]-̋3g/ToM&}>Fc6z[Pt A0n)"L.z: FRr-2xR1>z\oҳ>^~WrZ[ydU(RH,pr7$|լ/lVDXv^4|?jqr^Һ4OGfv5E/O9b;C9Ɗ_kEjOÖP\v0kb)2% ?q?'P&cS=W: ƀ*hxκz-O2oH(_*T oFY S;Y2j٭jBSIk][헁lüFyȉ44͗[g3otQ]0TA[2 ;JE7վV0Kݒ^rxχhwA2{Uvn)ݵ'PlwL{w`)%&?ɀpx0zp1xW yc79<͖`y&ޣZ(jow\̣# n#}c2/%. "0G7 I҃"/ kH@Hx?;*5y,TTzidd,8أeJ@㉛P`*zڽX &F+_bo6pO+k?LJ|gWYX+\axdB aufBI'~%[.>Sֿ.& gf"(.8ӷ_NXmnRaұF1/xxsV:N"T8dU>Քni[.>ҕh,^ְ=ef#¨ 16~ ,,hf֜!xbtv%*1MM|^L!`c>k-?Wj/ou_tˀs "v֕8HⒼ+͜ϟ?n ۉczfnJ{٦3ΤKI3 qq_NHkmٹ.>OO<7ܢHkΐ^w 41E*5tb(@%ۜ+2~#iyu<ԁ`$'nulE3~{B20oW_P}&_Pb9bWCPAn5M;L+{΂P3MmP5V+Jd^e aaY߇6'ݹP?-bn\g_&k~d;x4 Z'fu}z177S5r෱乾@2rh kD?<1^[5]˽irόL_/ay!sֿV*? o[խ.DL\v"#Zy_ep<0ȣ]TH`.ȿ ?toэ6.dT.1bPsDO#~' X#3ڧd_~7_{4F<`o&w:1V_ WG萄6J:Ͷ3 ;I yHhEԍd;t1`ي{'9`(^y_/oS mb%Z"Aޟ gWI}|ywȔa&,7+;F];քЀ Qtg^^GߗZ̓ I_HX@!SetRnQztkk\.tKL, BB2 dmdPoː!R.^tm#&duS#[~g_r_呃\O<"o,:/s8yةd+%/J~S-얊;fTt{F[WfGEsȆg.u[;VW.K@duh{W_\/V:Koxhid4*nP hQ kݍ>h}hcL/hy@mglЯ94aW&2{Pu)0IZ3>XӄYwe MvD%{ r>Q6ƿiN_wo}K=Y$w!A[э;m͉p΃>zs(G7)r!&_qO[ȧ0]V)22:^x#qZ{_?2Ti$,I ^v^Y%""QiZ9ΊfGH0R)Z4MX˿7Z_ͳ/ǐ r俊fM }i}WVmH+^G.5(ssh? J~1bm{mWJ dY-MOf rJHw Ӿ{L?_ 9%%ȈW5qIU}vN_dӿ&Rx*K4k8`P_4jWUBMK1F mFMm\o=L0KBzfjK75~n!cmudoaVe1]#lwwcԽ= '׌xu@YSh,'# Y`ܸ) O8? W|?׮g4 3,"2z=!ku׾Rч,0gdy_Z>ڼg0QDMqK dlGeH۳gIO  ʔs?\5`_7JH8]x).칎lY9q;^%rq;!t[1t}k_6:nK1?eU1rۯ;3rugai$8Tg*z,j=mJWznqW.̯sloW;^1*ŒQ*Bun;}M/]<.V]_]﯂s 1Kivw`Pϕ瑧r?6Y_ 2TY}r~-GqdgMHA(q;j koW\gg524xB򨉧q~xz}T%D{}s{gL2|_*|ge? _J6Y'[ gZ7<†3fpakMŸ+)vrRƬ+El,UQ^)'^~ywMOxQz /V}Ԓ4'V.ixW'+GY1ljYάM7F5+Gtd71D蚁φcG{B gag 2xqYG~1֚/ +ռ79,tc1<ej{ܸ:Zjּj^֚yyѪk0 @3ݱB]ׅ zчjZ8%ƏǏ{tC'곑egLy(4T> k +k -pln]+VjłƮ[?)?T%M'F_w,zz{_?iy 9 heKk-Gy)PQ1scʿz]d%V}Xi8^i0.nu<@(9sMSjRUtIo]LɄbhț]X^G() HXE8S6ȖPq>rO[Y1 xG !arce-1U >2YɌ48vLȜhdn2۸~`HjR@) yL;-D1=4Z#"D9RkXnqs"xA8lXb|ъ -Ч&b M -(PLd`5 BiuVf8Ykl *)џ`3_4k"sg_}x=(wzt|iACѽ=q,# gۜT@;!Ⱦ?ü0aŦ9>)̙YSFSZzk6yOmqR;glOxuc!d_Aa\9wof4^~UM&!F~W׊d%La,D(Km,\NR0:Lj~lU(e$ _z@n+@ida14xbu-I0%_¬Henu+ݔHȦobVoҦ9lqC -NWCueiT;*G5$E9X!*{P)dy`Pfb k}>pyYFjųgss0?Id7kϟ}%>;eo[r=}E>G9D`GUCZ]iR7Y|WC E{w =&R imHbEAGDoBmT>^~ik8C`|!CKAH -51=Lk^ Cm( |ܨ R&Rx_] `4mqڤڢtapU҉F &/94Zye.k*PH)L dj j%)T9$(P@xqķJL o͸7ͭ=ʉIl2(_?sq|/_|CͿɲv|ouJ&ˋK c_3w7pF#Ŀ׭I;ͣNl-Alс.^Z}&&cJ#\>^#ރcwGva"ltm1 .VI/ 6m%K Z[b,Fۯ '|<(ܗ{IOn֛Aʌ'LZsxVgC :֏%tJ:^p ED |11e#ajVkO\df墭X f.UB{6 +wIĺ@vl괁uv0+]27q1td8@N[{HfH RzDV+;1_&"wvpE:5Sc#]GH]}ͨ"J+G zPrs\כD\>z7}>)'Ʋ4I;^t՛I[€ߴv;_7^] |1E9_IKVnyVaMQy_pb|fBA5X(ꅭLkΚ&^a1L`OI  ů86U"H HrQGz8C/q]\Q+\1 .S<8"1 .z*-}LP;;Z-u<Ak2Ef|uTiFABʝ-tǻ)g,A,Mњ-4o?f+U`o :'/]ʜh lWb%h$EQM]WdƉJw72o^Ң-lbպQ I!s$iȚUDMPԴ+^ZuJ^mdz Pk\4U pt <],,ɰ0sow?jb=t#uv^&.֨u *!hDŽcۨ!6+-}:403k K?u{o>1[%MeU@$wMYr2ϡkf.N\[q cA lȅ`dg_ugzaz)_߭+˳JYxvZ+NAb5gI