summaryrefslogtreecommitdiff
path: root/arch/arm64/Makefile
blob: 3c353b4715dc462ef26bc3bb1ad00af684cd3bc5 (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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#
# arch/arm64/Makefile
#
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies.
#
# This file is subject to the terms and conditions of the GNU General Public
# License.  See the file "COPYING" in the main directory of this archive
# for more details.
#
# Copyright (C) 1995-2001 by Russell King

LDFLAGS_vmlinux	:=-p --no-undefined -X
CPPFLAGS_vmlinux.lds = -DTEXT_OFFSET=$(TEXT_OFFSET)
GZFLAGS		:=-9

ifeq ($(CONFIG_RELOCATABLE), y)
# Pass --no-apply-dynamic-relocs to restore pre-binutils-2.27 behaviour
# for relative relocs, since this leads to better Image compression
# with the relocation offsets always being zero.
LDFLAGS_vmlinux		+= -pie -shared -Bsymbolic \
			$(call ld-option, --no-apply-dynamic-relocs)
endif

ifeq ($(CONFIG_ARM64_ERRATUM_843419),y)
  ifeq ($(call ld-option, --fix-cortex-a53-843419),)
$(warning ld does not support --fix-cortex-a53-843419; kernel may be susceptible to erratum)
  else
LDFLAGS_vmlinux	+= --fix-cortex-a53-843419
  endif
endif

KBUILD_DEFCONFIG := defconfig

# Check for binutils support for specific extensions
lseinstr := $(call as-instr,.arch_extension lse,-DCONFIG_AS_LSE=1)

ifeq ($(CONFIG_ARM64_LSE_ATOMICS), y)
  ifeq ($(lseinstr),)
$(warning LSE atomics not supported by binutils)
  endif
endif

ifeq ($(CONFIG_ARM64), y)
brokengasinst := $(call as-instr,1:\n.inst 0\n.rept . - 1b\n\nnop\n.endr\n,,-DCONFIG_BROKEN_GAS_INST=1)

  ifneq ($(brokengasinst),)
$(warning Detected assembler with broken .inst; disassembly will be unreliable)
  endif
endif

KBUILD_CFLAGS	+= -mgeneral-regs-only $(lseinstr) $(brokengasinst)
KBUILD_CFLAGS	+= -fno-asynchronous-unwind-tables
KBUILD_AFLAGS	+= $(lseinstr) $(brokengasinst)

KBUILD_CFLAGS	+= $(call cc-option,-mabi=lp64)
KBUILD_AFLAGS	+= $(call cc-option,-mabi=lp64)

ifeq ($(cc-name),clang)
KBUILD_CFLAGS	+= -DCONFIG_ARCH_SUPPORTS_INT128
else
KBUILD_CFLAGS	+= $(call cc-ifversion, -ge, 0500, -DCONFIG_ARCH_SUPPORTS_INT128)
endif

ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
KBUILD_CPPFLAGS	+= -mbig-endian
CHECKFLAGS	+= -D__AARCH64EB__
AS		+= -EB
LD		+= -EB
LDFLAGS		+= -maarch64linuxb
UTS_MACHINE	:= aarch64_be
else
KBUILD_CPPFLAGS	+= -mlittle-endian
CHECKFLAGS	+= -D__AARCH64EL__
AS		+= -EL
LD		+= -EL
LDFLAGS		+= -maarch64linux
UTS_MACHINE	:= aarch64
endif

CHECKFLAGS	+= -D__aarch64__

ifeq ($(CONFIG_ARM64_MODULE_PLTS),y)
KBUILD_LDFLAGS_MODULE	+= -T $(srctree)/arch/arm64/kernel/module.lds
endif

# Default value
head-y		:= arch/arm64/kernel/head.o

# The byte offset of the kernel image in RAM from the start of RAM.
ifeq ($(CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET), y)
TEXT_OFFSET := $(shell awk "BEGIN {srand(); printf \"0x%06x\n\", \
		 int(2 * 1024 * 1024 / (2 ^ $(CONFIG_ARM64_PAGE_SHIFT)) * \
		 rand()) * (2 ^ $(CONFIG_ARM64_PAGE_SHIFT))}")
else
TEXT_OFFSET := 0x00080000
endif

# KASAN_SHADOW_OFFSET = VA_START + (1 << (VA_BITS - KASAN_SHADOW_SCALE_SHIFT))
#				 - (1 << (64 - KASAN_SHADOW_SCALE_SHIFT))
# in 32-bit arithmetic
KASAN_SHADOW_SCALE_SHIFT := 3
KASAN_SHADOW_OFFSET := $(shell printf "0x%08x00000000\n" $$(( \
	(0xffffffff & (-1 << ($(CONFIG_ARM64_VA_BITS) - 32))) \
	+ (1 << ($(CONFIG_ARM64_VA_BITS) - 32 - $(KASAN_SHADOW_SCALE_SHIFT))) \
	- (1 << (64 - 32 - $(KASAN_SHADOW_SCALE_SHIFT))) )) )

export	TEXT_OFFSET GZFLAGS

core-y		+= arch/arm64/kernel/ arch/arm64/mm/
core-$(CONFIG_NET) += arch/arm64/net/
core-$(CONFIG_KVM) += arch/arm64/kvm/
core-$(CONFIG_XEN) += arch/arm64/xen/
core-$(CONFIG_CRYPTO) += arch/arm64/crypto/
libs-y		:= arch/arm64/lib/ $(libs-y)
core-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a

# Default target when executing plain make
boot		:= arch/arm64/boot
KBUILD_IMAGE	:= $(boot)/Image.gz
KBUILD_DTBS	:= dtbs

all:	Image.gz $(KBUILD_DTBS)


Image: vmlinux
	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@

Image.%: Image
	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@

zinstall install:
	$(Q)$(MAKE) $(build)=$(boot) $@

%.dtb: scripts
	$(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@

PHONY += dtbs dtbs_install

dtbs: prepare scripts
	$(Q)$(MAKE) $(build)=$(boot)/dts

dtbs_install:
	$(Q)$(MAKE) $(dtbinst)=$(boot)/dts

PHONY += vdso_install
vdso_install:
	$(Q)$(MAKE) $(build)=arch/arm64/kernel/vdso $@

# We use MRPROPER_FILES and CLEAN_FILES now
archclean:
	$(Q)$(MAKE) $(clean)=$(boot)
	$(Q)$(MAKE) $(clean)=$(boot)/dts

# We need to generate vdso-offsets.h before compiling certain files in kernel/.
# In order to do that, we should use the archprepare target, but we can't since
# asm-offsets.h is included in some files used to generate vdso-offsets.h, and
# asm-offsets.h is built in prepare0, for which archprepare is a dependency.
# Therefore we need to generate the header after prepare0 has been made, hence
# this hack.
prepare: vdso_prepare
vdso_prepare: prepare0
	$(Q)$(MAKE) $(build)=arch/arm64/kernel/vdso include/generated/vdso-offsets.h

define archhelp
  echo  '* Image.gz      - Compressed kernel image (arch/$(ARCH)/boot/Image.gz)'
  echo  '  Image         - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
  echo  '* dtbs          - Build device tree blobs for enabled boards'
  echo  '  dtbs_install  - Install dtbs to $(INSTALL_DTBS_PATH)'
  echo  '  install       - Install uncompressed kernel'
  echo  '  zinstall      - Install compressed kernel'
  echo  '                  Install using (your) ~/bin/installkernel or'
  echo  '                  (distribution) /sbin/installkernel or'
  echo  '                  install to $$(INSTALL_PATH) and run lilo'
endef
v=_WmyjGG3~ޔ}( h{w-j5?~|OƣMq_ȗ{_? >?o}je%$da cI&Ǯ`m~]&x)fJ&L߭ݢ%|/86If-wK\Nc  Y nG\}E$m`` lZ;_nF8$zI2݄TX R<=.Hz`U*OC\S웒Cʯ\-1C]n~}oo?j7WMt~҃x,<+ܴ.h#1ט@(^=c|eÔǧe4l_x.K+ͽ]j7K*WnqhFԑJdpJ$K% mB" ,f . +f_w BJ~MtÇ~9ln?l,s\>S`1 DӺD=[C;?q=>Un/)ƾ25g7quc[=6lʜLarTHO=p5J`_zΣr~ ͠6o_tlXw_k뚢jmnvӃ{z!͝%qB|je,=DvG= ]#vJ ]F16Υe:N;'\ΐq!DDG/kXp 5i bNF/MA%Hnyt-cU( }) ~pCpcRE70QV(*lB=9:`N=>d$#.bjg3Cn5 *415*:_oL5NKl1 H Al|p#G p-3&ͷZ5HJA>.mJcblwѣg4\YxFW \H;4ir-AQ@B9`i o uݩND*Ͳbc ؃>-#zDtF%1&h96kJxlߕT!3NdBHTn+rX}<[9D G?5GK8$s/;H7An 1il14"cjRR}t2iׯy/t0wNsyo%=㪯X[,?_v~xX|b@@F9Š?xQðv^FMSuyTƪ7C/wh';[^.8.h5\x|9pw;aZ7e"2vS=1bzH?YQZ!P]6(?:Ųim w7t a߼yGmDB8!$T b[jCsB.B~EdmkOwrw`3)ly-&Rcd<*6)x9;(91fwkvK:u%}.z`ϟ'ӽ#Q/.kBQprKV\b5/ٳd2 cKGVwsNX9ubW8C:|qfd|!GgpwWzQRq=Зk}z8cmppKM~oVezJpv;rn|?T& bF~MWok0?<:cjӣW=|v{b-DZ9/枥t:[c-s:mu͘KhvJ%Զ"Ü-}ş Ը :  jy oryCntA;3a_H`aa˛:ui1ь)aSagQWcOcezit]tnZc'[.6lr/Jc:هd)[~bKRm{7 PD XAv ]v8iu7%+d{ekKɱVߓ_U|P[ }'ozW._G\\ u?%BބeGkD L%h'!+.0鎏 Eك[\f\膺8B@~O,j߁6$r hd|nJ m'~>j"  H\5u w\5Њ A+ 8PAxY #^9⁃# &wZ&MTx?io!RA~l؃ $CvIً^6]f1eEMŷ1Fxj 7 ҷc$ȧAD[O vI3x8GD^@F_,s@35<0#1ft |z c%0DFk28oQؓ|/~/avY ϙ Ł,PheܟPwU3:}Jo{qig0 i#z,"yL֟>ϥ|y$~-QWݲA=YX ՄͶh,'tG_6aѦws5ҿz;%IN>s^sd ;i7 ;]:3e-GtffQ ̩M0b3:ZOY'7; PFZmuQZt}׵V(#d]:=E2~ݎa1z Dܞt|uJU^F"3Cu]D` AP u?t^.Law(Ru[v%ֽb2UӼ#z"O2 T K/Jo D/}ᬠc%]{'6ה9B')_t͍Dy-HnoW~=AW/e5T5QdB۾wB 7CpQ eifq'.˺^mbx" t^ s '||^5Qb8o()ڢqQ =:Tbku2]dLp̾ !v2>\|ls=0K'NXݷRs?6˛H |8lK59g|9yBk@޸5ZY[XS2QJLڸtƒ)@!ts{&(jv,po=p,WskZ Xy=GH>L#,ycp^ԿHV۽].y+fIE!2l4RDNmd獘( }џ}QuBCC+G1'ٛ>)H2{ܐL}鼉\ڹ?ks`TB%] B3/3#i%,(tKhpV:}\$d)jz`(oT>_WA=g^&Ceu_gxSAު`uVzdP,u5.`"6H_aLg CڲZrnn[od1 CQm9a6:tCHRzwެ<@ PB/|տP!x Q#R^F Q. ǍJ~DuVX: :y]dH a1abCN.a,P''@Əf@t8hzxnh̿krӺ4wYآc4k Gm=Ou8Ʀ!99u%׵ǯ}VAhKѻvB-SH?>1/5u,{g>]sF3g?l5[UsOay^@u{ r]Lv!ê퇏I xz@!QunL0! 60wSG;w=p`/vIGz^r7߾ٮQȉxޭ[1hա Ʃ5Q\!8[ٙmV63dZ}7׮8!EQ7ofSRaqU>,BqՍ ac] [-7WI tXߺ=o]0]F/|ϟc@m󹈮ਐتfR!VWu=гD6/Ag{pWuX_ }\)o.S.YJLud)^ 㠥XN[jH.P}on_G@I9qvGs|FC "%yrt<03`NvNk-UꬓFӯ( <CSicr 7c qr~jXngUc<#2_ʹkٰc *<[_m=dKvA Fp-[LVQ:N: G5U% tvh-$6@5E(s*EUHtr[Z0tpr E!5! m-a&ʯ'09AH0sTMh֊q ёU@ifA"SHG7A8NlL8_e~:!#Zns?Y:e,/תrxk}:{ط (("AQ*%Ȗ*xTmmku>;?-.IkԙR%ݩ'$,|}6%l<@9n!gEOCݸ/2oUk0}}DIyGu$5r^/Sl cEo6a~5͌|kTʁ@DbSXfa]fL˒)ծ_p~!ډÄsҖlƒc}7Uloj; kګf*["0٭?V]#ph<6 KHk V~y*X /@Ѕu]Iþ%2\U>nD 8Z:޸bHIa Df7쨜+5Ago XZwο_u'_27Bzu!D7̡/ڦ47nDJ OӀA 9Z%`0$ DdqSL\́QQAt㤅j+Z*W~rk d0AM]PDOjnan~&!UnkU^g{)6dCBe]%a/箸=|v5  }b(Wj?Gm6i_RƂJ=xq{U$ %NjӯN~"pBW)F7 Gjo0K~}y`|y\^g`4QqKd;jФ7Q 6`F,@F!7KxxDq6lv!>PSaש|CygŘ}@qjB gɞA3P~qb2kk|54V!O<2#2(Rۭ=ށt햑VqL7n}n7Gf /=lo0b-p])ϵlD}zZ}8(]$YA7Gupz$(x֔nT_&n|+v/=!8$\;z?e^16Wv1t`6sH"2!-ֈ9nܣ i #lDAߢ^$1p]o2LHbeIjH)`:̾nlLSWNCɔzp /pO`0zHe#+)*,wD5,Q9":,t#ds}~9ɉp=]Q _  Xs\^B3)z]"f x{2 `bZ|xA͌x;rJ n"W*a7LlsUS(xrnI~&`E H\]@ MNDާg!=kWPˊe(mv/vaJ5}ݍ퍆6?pB=^3 󏰺É=]D`kȰ9s8u_e~CEBCܤ)TaP puUT}v~ϭ~q~#J `p/2ﷇ1 `Wm|yɃff316$f`=L𶞰ٚ3U͉A{ 9Ao$" .U;h+|\65 9^~"mCMtu|2tMȥ7E,|}XRq^+wի"\@Wǿ1׆YDz?=nY c)xoza/ hP[+b`m=$[lr1fUWNgO-Z?]W|fEO /Iu6!:"0&^ңٲjNߩ̣X-)0$A Lj B G~{"+Xo/H}1",В9'{oPoH `AA}dD})}{!D6a zÞLs!ʹJ\$(#\@%;Z<{ X] BG呂Baي|/}Lo+-%*{,jf Gqغ !@Yzڻpk. qDm"n=v\&,|)}Hk!MVGQoVaފY:x~\ڱ*iv"GLmw Hm DjWUQ~U*\5xF):u?#]nN/[w&]m|mgٙP\k-m[,rd̈{w)=aG޴ʧr(>[vZr~4#my`Prftsot 0zbl.g]` vK;x9 Nt;6>Fƙ6}hn(qQ&VDBJhDEWg?ven{ IsDt`SN/L$#.F{e;^,AI|&A$sHu3J`DmX]V" KuX@ku4#~\<G 4rnEWY(% g(sUxaGq x)|j"9Va B-b60Wg{ˇt4EKjLw^p1(iPDMY,2ȚC%9ڙz]~(Ay?X w!D"H|x(55 ZAkh.F'^B?4~Ýnn1/e7skB,;ܞ~ ZC 9}WQmsxdNDW1C\ 4Wub]M|B$|}Hȇ"fD}! T6 ٳNUm(bWʗE_NyvF3l*dlٶrYYeqvlR3YMR.1-)uXQ/mI[ Rxқ¬o*n ]%x!4=}_}%~47 (5(-m5KdLr+%ァJ j@Þ6D(7TkYg~/x\ȅV9>& Tp\ddA0ajg;cd#gC@6.P_+o}v[+N#}tOm jQzKž߱m~?M[oz: }X3&Qn_kT3/#t,뱥x'܃,g87G(t#2M1%h0٩?0Efdewߟp[ `uSj @Ǎ hpC&i|ZQ*K0Vuƍq0?lUee *P/ݥ:3T?9_V`w2a.(N{KuBya/^vcH^QQ}m9NeJd%6n% ! !ڝA'@rx,i5TUGע;"/L*\ж4g"G;E pVx #E޲ ~)5!)Pt1t"f2a ^6 PDXc֌H!thUP^#g}I,giGuLC<eCkD8~ @"97-b_'6%!ʪ[СNTӶJmq[YFSB=q#?) dDF#\PD?#UC&۔\>R<>j [L jmP rn{7N#tPx9E_@ 5%IȔZm. RYv o󭽜+w&,p4i+5arJik qsz9ڗ E=k$2.c2WVšɌd˧GP4Fǖ$5C[e"J3z76Ffō{3[7wtÀt*7nH?jf鍺ZHy [ #5nk.\Ҭ 'o'S6)wC8Y[PP `eT dye۰كPU i{Lޞ C؆13P0Q]΋XX<l nˌTaR3TwŪ+2 ߓW70 Zr]]B^f cҡP,G7 5e ).2l7C.h(جrw#P*`G% ώ9FfOנ0hpbV`I+X,fңeac .r柋+=YBOcߨ^_Fpla~Ƿba'1t*~ƀnH`k>npabœ0*Y͇LuAPtQ@[¬K?jk SäYuC芓 hnrW*Tᕢ\.6}G=wShaϗ|WQQ*P-Db{ 9q-IHnٙ`|)aVVU I[On.~O,zռ7~t" "0,l828VFmnzA c"1?tdz ޾FԱsu9iPqp$(tDfy5Jo*yb^rNP] Nl[MA@pd~‚C:b@ 8Zbx˪j"yl rX:qErq }]$?Σ"h@"b1#Btϼ3k/uY yY.6 ȗ: oNWgܾ+d=/pta1}ϯײL\}װ{,?]jJΪkQw?2O4);fd&sa1!qZ:Z_bl"wêB.aV%*DT:uh =bBvmp:%TVB|,2☜*Lĥ;H=r!8-VCa*` A}[`/QlWa$q@]VCVC4~iKݑ6|8;uk8;D g9>fLϝcT譞p3 @Y厀 I>d<#Iz~Fh@@}]y L_z Y G}势\^\`sf_"(&%\kn 8_וyzi)ʪ4jխt}Q4$m<ruyY?#^H>>6օ&=pk}ӰjU!gdj\OPS*m AMq"$ISSeHsv ~~oDfJ˗\~Y?B4?1$Eɵ=(dlDDfxNkrm'v_A d:/`Ӟx^M,ѧih4 h`P mjkt,;58Mlʡᤷzhes4]!(?i#i`hwj198yej:,/4l뽮igF]k7Moa9Y8@؆YB('njp ypwbyk@u%3STe.[7*8okeUI_ΎHtl f&h)\X7>UH1v}QQ*Lr$GEm8%wH-S$Tkݮw R,~cZ[]%M$Uw$;qbPL(e9>Q>JdQ!pF3"V "[U(\=ć[{8Ubu$MceRt\U&a44٨CkMb5\E:݃d7߯ u_v?(ϖ«_Amyʗ nHu4i-&~} OWu~k8UΖ{_tn[< P=+Fe7X ܁J%B3Y :\ 0Y6NIoo< 4vrP;; B!j2%!mNW}znZj`b/'f,S@2)Bql#o0s[gxuשhhk3; 9y%7WpRrj,+ %W0XԗX݇x-;-}^ P@0O5uz\=R ,D+I|\{v WCZ'v;92=S*trD'N6H,d|,""۾Z𶠉M׽~6PV}\j/kM#ME[Y*L@~1Ϯc*(6=BQ=<{ 5Cz16Cm "N$ǸVIEmؒ1u@:q}75iJ7gOivRT<Џj)n1E4{9mDir<Dzvna0axWGBe? T }C ADVxlʨP92Vպj;09׭eGY0^- >7؟`Z@dbCC>ȍo<:R⾑CCC[e>7w6+Nen ;Z3ýC-`P Ą]FD(ݖ->bqXSt>n˗:0(ڑDY50Os;ԯgZ|bM]׺ᇟDߌވP5d-HP $FY@C jЪ )/ ==%0vhΕJsd;=!},G5Zu*P[{6 46Xa[1򬲹O0;ot=oRvS>)8Ë5f̝5,#S!~x$G$H+ <<h x O"@f/x4D(! k<{`⺖մ-aH?1p" ]Pp~3Tj,cT}UWUdfx(=u};8}G %jʍrxZ|X&]f76߷ҒO9ͅ-(2UӚtik/)Af'*c3÷xQBUj #N7CLP\sv߃ R @yٚiO8wb>Gr ;Ɵ cHdU-P֡fX`G4̝G"vˮ![I:o|f/7DW@e U{x7=l JXA>/{ MV= 3Iy V,W-*v3h^~by29¾9/_>pw];q C$GBn,YDeg>UVzHbQZv]aÏ2> 5?Кsbx[@=8-0[oI#Yh>e`v8fh(RU2~Pacc!N ȉdќ~r,J n5C{׈DP@KGYɔ ɮ0Ku^"?=}:6 ?} бaF PKa,j_fWl!E5oQD** Zk鲙$7ns|be : zl>u?` |SZnQ(d3cY()(maA6)\4WF!O[1 h_#Q`[l"BDnũPS袈I^<tjna*>:OĨOAFAQA"<#z"̾\[- o}`8iDK%xXu9}ghmLgQr7w>[ϒXfm0WW'G8HgEwB[wN",^4~:a~q3DD)snԖvMx螞d,G˼5!%n!㚕U"5] `W=GTPEYRAMKQw*ƜX]0>N:i 0t$dڞ^0:B%mex>mk+/((3ʬ]UD#'Qx$1TĮ-|Thg!E.֕$ͫT|c5U9z#"Uw|]aÔi'*}!ҞnͣF'G \Uq{!b}p_p ¥:}<ωj}\ ź)0 m٠콜Z0m@vBR9єc_ bkF(=j#vJYRD&0~X AK @ db4~_4·;NlWv~Id#Val/q%bVa!G q6tł,`ɝһDRpwTDJj|^z dGa?*ˤilpe -.uﵻ8 \|x3)>b#$g=5srZ>~( ^@LqQVW#2;#.W?,˾,MW)M1VUSxQ7"#M9M? G|Sr_#בme'_o3M1bu/0?UW":ϵ~L@UVt=8ȇh /} Cz^~̌uqTt@~HL]L0Ǭβ*b!ƳF|[37-8rjqs,s2ԬB[Q3(:G_ZM.f/P[pD}opG>+zwS2votǚrnf qƑԲ}LJVWd=E:upŤqz_E8 \I%EH˪N},-ʀSHUc}DLd˪Z.yWѦa/BCaW?f4Fe Gwv``5_N̐d״b_>fqkqhv}/ÇGYsܱoz}=NL7_Jv>}g[Т&yGax%n120#4fhbƖT{Hm6ZM}qQU6{U,wx[DLqSnY msub\r@cTMwtks5} _;/w ec޼W1߯<]g ?@E,:Q^Hl#t#8k8wtfKrkֽCfr#٭4c+GP0 Xl6|L˒D{8\K?;|F$CVQAb4o O-7 aK=ݖ40[ק=i캴y+ilf޷:{ {vedcJԏJ.DLD:u7FVQB^xPlg8 e r8iR:]fi7' ̠Q$ڧv;w_O-?5o]f -* (S5kԯAJ{M=̈ oX=5I =n_g3aAUդ~yZBU zЪ\,}9(aLa-0!э3"!1 i84# Ng?l #CuCdj>l`S9)>n6a5*n1t5:*w!lFKW[|ZTؔe)Z` _ka'ȔЫ^g"zu`f1i)*\pQPJK쿖Yhf1ф r?Bx~YE}R^13P@fkE6AK4UT7XToCÿjByx$2X4l뀼v\K!Lḳ8H])7a1ch7$^uQ8İ829brh>=⩘ YA0 |vK9`DwwTFN-5u0D1L}"RUl 5``P|Bųn~Y 8i,8:8botqy<̀BV1A-պ( ܜzR0~8| }yð 9-/[,lgFq۱qL9>MC[5ռݠqg"P}W30 _{P#h 1ˠ Ξ?]?4RXJ<=mt+[`j:Prr"~#]ps3dK |6l04fZmn+'~fCM/Pe2F7֢5w\7ںSFjf۞ŢnDڭ-3nm0Rh,nW1, -?FjcšuݖU]9HHT Uxb6̗vR}%bSGh3Tѱd9EqEQT!j4;' Xxy݁>/m֎*PyL3T~wKєTqWIhLRc*-53Y9}Hˇ(7 XlCvw7'dKEDXEQB;"=S@ϬoUʖ zh푥~X۬ǏtCpc:*/.~;8'av\"`ǘ;ndK ^r êЏů)֩'mE֊y<;oFqln !1V=>EoGb \&R S<_ψ)9m3FY say]~ٙPӂ S+_ݦ/lB9iw*se1"TZO)fIeb6 vS'$Nq r)}rcŃCJ:9*"@ ,G8Bx8n7@xkX~*[pYv̥`i 4:`י2m8WG@կw,<~,!u (Ġwa נY$k-dfrhi QMuc'IbS{`L nZ;D.ДtEC"?q7B_!>e~FT }isܺ]5;-3=ߩly+0 v6;奯}7s0._.[V mP:gձ_y\{rF$zav|-4o!w(_Mоݠ!8/({8 s/I} gמTAPha ø ē ђΠ]DgN@9Rrӏ/.gc=?VW>bR6Z 0![\1^-[v̋7ŵ~׺#B43 3IHޢ#m{[m_H,Dm ԐOΐa9џLCK ?%/íwj bGUgh͇-,Ջh_/1+۹F:nISב7sF#q ZldvufgLd;=&2,p#2yȆ ,?~V]3vk~9v $ź@D"*:SccsSFB$&ڲ_"-`1.w[ \\r>y>3SSdD|8A@TGf R^oV -@qxW(`tw}& LA~go^ J޼gӂQXAFEW#PP6753t_|=/ى`=vaIRB;8QmÝK]&u6@KIw23yY UsmxpsNbř.g CHV?D6t HVcSjd>Ѹ`zר "^{8q2K | ώdJ!>(kҿ5Kƶ1<Ő:݅4ƪSG_fuN4|C: ["!cX\Ume`KC(9.U= `$2f :˧t|6{C1lb@/Vp oک'B3GSAFrEX?C=wAqyu0Bҏ|eOK3\vP='hjyv ҇UJCtiiU ZM/3_RcnA٘NCX.^O}|{px dRtr >K n]ơDlLk`,8‘<é=J(œh=X(*`Z{9/۪aAH#TAwʬ Yk$12Fa##^֨YQؙN8(IamF~]#kZ6! P˖J-+Qo/Zr.7)&@s> 3 /qm:}=sxB='Bb0I>Pl,V^ 2Hmpl!hU6I ɂDp8 $r ǚxYwLNe2%t6.dYJġ( !{X->WO-.1MLd;Uy W `2(Nz]HYfcF0Bb#mkH+ 9{ߧYH^ypBAPdR:NׅCo=Z0qA2Hr|wn@t5!9 f3F>K6 yb±mHBLdnc\q޺%!vv>3B0C΢c^=o.$EUQM RG")zꁉ;ÅF$ǚ>1|H֕F>P%ġ =`oE  zҀ@.mND$}[gv=ǝO3sՈ;ɗ9 qjM\hR@ⷔdr'#TG(8x625plp7\HБ|DIL!qb:ų/Pk#h%I5Z8FJBz¹%pTFj 7 Tx2]p89>xXvٞuU@!~mT'eEX3H~p ˈ"&Å&C97 ހ}ζ2~G.G߃Բ3+q5X2&Jo93My"p_ 3BMG!&vyNfY}lpB4F(q1Xh/;Eo!h^BLFvpznd049l"`SuY[ Gr\)WObؗЮk <h a*G;sJ4n)]e LT%N* R2K@mx RrG$2*J&~q|R'ĴC8 ;>o&Y lQ#txe96u;,k7NcUj8 % ^GR숂!ŻGp xDsbx{ Yh,o~ΰ(- QW%-f9}B,VdU}H[6 cpG \s#O=E]hZ[Iv^S{ 27-z0öHO*^K8r_Oe?4GC7G'^rXGe kaJU<0d+$9q +#@xjwxww̟%p< `d *88wWZmFƵ% [)r[CL ü\ 0>ֳ|b3`F diA>A5xިA|͹;kԴgX#^e\^>o<5 mN#\jr8*CnVgSO$pCH" mc9cZACRAY=pZj|^PSinG75fd>v 2 4]. WcSxM 'ΞEsOu5Cqӎ8fueh~F~j9 eZ慙CC63Y67]:{6[8sXZS̶zuL 8;>RJUA W|ޯƜn`@#L#&[(S}fH&B[ B}1zyxumzwZzj <17gvfoYL34ZVY ~^.pNB0s8EHqvsˌ0×c#ljUsfQ Oqb5U_jc D6i-~[Y`6-a1 "ʘ[;M>^I.F0F۷`pGZ>L>@ /}| ~ΧnB *= Uԁ -ad g2JB-9ؖ1ɃaM[Zd @ Bh*:ij8v]#ږ724'H@,־ |0>ùe2w(u;*2Ӌ|-Ûa[D }Ndl775USysFo42Z05`|9t/T=Z^Q Fx}\7x;:Db^^HC #;QT0&?N`&M3(Y~>m cڎihí;@D.P<}=x^:=#* zonpϑd37q⥣gdl^Y@YaCG#K痤r Y s1W5u.8P_RP.ZǍ V,VXH꾻B+$`N๡q :Ҷ-@~F0Xy'GLNC/_%7x&$zb)Lp0}Cc*`|?3`ھa&}yx?(ZR>hÍ'}g{cŽzԩVxpex9ҙb1=_*>cۇu.!:0NE*M #{'\aX G` zH \ʤF0HRPY?=r-Gw!f0DȠMJcZkR\B?M1q 0o] ,[Iy+y+VZ@q5$9?nX%Kю)~sf~Wï}5풁d6^ ui"d3B-jla/-Ҁgo"mjܥZ(KsFԤwWэ'+`ؠgD fEd 4lAZ 녶iIZ ~,'*1aDtINԡzvXfmv9z" ,׀ #aД7L F:-{ (P5:d? οGjUc&*Ɨ!^.]SjA J庈 ; ~gt$oBDЌꈰ; zO/Ks~K]tm3˦Pi2zgvB5**_'#^F9ݸfep]\''uZka웶U3;6O6vzr+|B1ɋƚd+R6nvi+1먕RQE ϣeOSu6ifg[$VI:wd;UU,_mnwR"iA-.t캺V "`n'W0|C}8]oe쟜$;θbx1͆TIQ,dF)eؐ(Bj\t0]3uoz6KGLL@v.fټLkOBt~' D )6oM\NH,0Y=֧Aj(,hL Ɋ:b g ژmXqƢ;Uiw _^X@;2A7P翶Ŏ"qqrF(A Et. 1E+ cba{O,P ^+݊1B>`8zfa35Pj̨c ,mjsk.-Z$‹(sRB1RC3{*LUf}]/א[wG ,U~!(/CG2a^o/ b]`ܸȫ%7x\QрΊ)s(\UC( TQ;Q0H[甤^` %~ uS6`fJ< jdS(Wj"A!P(2:;-n!`\ m`3?RA睨P|ͦHp"Oj:p'SՋ#YŘ0QVXB^S3^7Sڏį)ϲoX*kP+]!o򣤒/ro:JcQ<\xLj) rżS:`ҘAن/ٝ\f*|boqwgȱE V5T!,@hffY ŷN(8#|EqFK8H:~h}RmB[@ΤE,e˦jY=[p3-R5ĪPFvV*[>|5qqo<>l`1$ar a08113;GWٯsn%  -˦p 9MaޮA-ˑ3c L{Rq S;aUTƩ{rvw[QNEhi_q@82֣TP^.7 B'Bm!ntT\ qT z|_@ZNЖm*:vBMh Cz!ھ?jv#;Fw%E5.Dxϥ, ک[&,E LM3p&s0&vV6D4g.{ɖgr"M)OS w߃c?fS'_ʆQ6Bu'g!j]HV|vB"2ltۚG0>-Wͼ~m:rsh-/WW|"HS /ʪo_7q6MTnhdXBDry7w`.7Jz s}lIn'e }Sz"߻+3Y`J GzZPH$Q(7J*+Dm˼:w шwEK3TU8䐾"Ղ|_Q4t08D>1gV}.-n5PkE!7|w\9O.;I:)1-;G7G'·FK.ve8 lF珅w{u/,/K3^vlTfc|u罅ߗ ?E،~]oՊP* _vwS Ie#M  ";$(OQe۳!] 9 G(bG]ÙTl. 'ӟT:83:n?3 B9n녎0Է_` *L^'*?YV齯Qu+9ř$}$O΂AHDx}'-ߺ~#Mq GRVb#5?`2iP"BF!1}vG@iVsH)J.M"NZQJ$9tP,4P?PP;!LZDIc'ɭvss}Gwq _C_9?]IAt4Hv$vCe-bN'cy+q3@Yv-ow>|(?GN@a?res?x瓣_姛:QX,p+}=Yj8ON_oO#Z!@ث)CDł-Cm#B(Fg35Lc?٣AAoa!4aB~kh%ZÐA@J1 Rn [tO1Ol<Ûŵz?v3v߯ sg\07%;{z|l4;æ\ĵC`w&x BO394KfvüJ,&ūɓb9A=,[Ϟ.ǯoBa;6;`~|Frzx(~E_d$@yxt/_GO8 _ۆ23sYw]Щk.q ?W^i\˺{=US< xI3 1ai6%|E}-/N7餛j=.^s~ ˩aƊX+1V$/~2m뇗鴾x{>}Zl3~Nk(P?e 䩷܃tF`~#p2]GZ׽Q?ϙn\ SϞ@Rl:5g$b dG-/ƭۧ_{'P{_r`1R& #h1D^?K8US.E VЈ:Xc;ZǺpFw~/_[iQFiP~l-U~6?1wdd_\&KlKO:[j( O56N1/Տ۝ic{?<>LxΜ>{tQeՏοzG 坮;?Lj۳}FAvps|]JIv=bAgKgѺ߅ ^c}h'- 鼝du8MD8&>8>rOQwDaMAPkƛtã|<0^lm˳,>E7H}W߂ f-{?S`wv2Kψ* 9 @X{Ñ׷|>/~ ބ}dz3{F5QFgO`QQ%M 0g2n.}z3a5Հ:b|HMOr埿q"pr;Œ |<{]XF뵽3?XpDGG;]$:DL} Kg/@xR98)Mu,1CM'ys/? _KӱgfS; lΣ(;jAm3+ȷGg0{dhVOx;8![%Tk\{Yt[na(}ܾF/a]Ryh!H濃+˳z1aj1z *ƛnxA]294ꔢ\pld]b䄘ER "4Kkqfy+-/\oޢ7KW~ޕE,#O LK)b Bl(}g_=Lxml8I$f "q;ttyp 1r7aEKK;ǵ0]:w+0kK,k} ,͇ɑތQ눖^6sB:luŵ:a3 }càxJ6أ/#Xd c#'߳=YsB[4 V OdE(JTa1 "i*b+L4: MQG#";SAKr:0촒{`R )n*ٕIWdQJz}M@K D%[j 9AȨ)!aL>گa&LxJ<co ] ٤H6nW(:n  yWKq#uAwW*N*:Y?2^R9[77D>_HnVW W~zv ym׼_DZzPvCSaAn @jr|vnA4UV!V߰?&wxS]I ,0 c/-6WPzAtU=wK@`7!D$L~?uӛgwIBpDOF(G;wf=cO`N=*+y ս4Cm([˛RC%P ;.vqk["{2%1r83b/+'Eym׿Ȳ[{Jo,. +B?hz{=0ryͩU Z"y}*@-@r^Ab?Gw'`OT9ud)wk:nt(g&J?Uyy?ie}:N%k!!bn.n`\ArZqNDJ;/uQjh%‘X`@Qb2"F?P$eڷ:4Z!~@JD<oQz&ž@(k`]SK~jqι !B̚Ȍނq%D|v8Z@;#dcfxy|DӀj߷zf\w.۲ Mn;/m1D^ @jnNJ s{Z5H۩( c:ӕMjk0@(SՋ^K%LmAhQ31XlKǐ:WF]-շl+s<F$HE ~ 0S+v^<'f%`?tTm^z=BbQ5"* HiuQ D)Dw6N\_jִtkNWQ| k-sȓ:McA}į&/dxmtՍ:J2qQTWr.ۤRZ!ָY }X}I)xYO#ۿ{Cpd*dٟ}jXv8J25/\5܀¿CQX) F8V~[GTq%֬ȅ ̢Vp뮇)p\XB2ܞGɅa Ec5S7xV!vduJ@r R ]g}o36"%xLH:RNp#~9u,x $rv2u4BBq6UMqϫurKPu֗ppڸ@m?tTPA;zφ3z95Qe 'bp>aq!! ĉ7#_Ӽm8.{u0u5+nG(E'ЖZ+0@G~Oڒ;m[:̦UV4pݮ8E^!C pMDe[cn1kZ$o] r,^!`uY0 dUI;`etj]7KFVuY}'i m7C}sڢ&SZ*XB^Fu$R!׵ღiȯW(#@BطbGfꃡѐ?ekL.p7bvKTZb4Tslb(ݣNTW80QWq=*ej]qVX^TӍK<}F?ZFK/ (FXK\׋(4_\aě"=XtRI<CSYDx}AHt_n=!z}OK镞: zjKjٓ;^BZ\Q"Xj'ae]d#ӳ,sj (nAyE h=Og&Ω(]"%Ʊ"Za*:x 臜'Q3LX!o0l}n70@mS d>K)R` ?UC1!*6-(Wot[QiN[Lu4J̿guΙ|iHgKEc783ǴQx1eGq6ޅN8ҝ[K\?b1-d8H^}-hë"VΒhyD6(|FY- hZ"V0)8GHzӨ$l9`u {RTL!֗s[_Bel}6xˬ:訤OGXQF}/Sq$;(fqSW47jYQX_J TSp)'@ɻJ-=H[Wòb޿7HuJiyyDqp1/oEV.slCPRn??0BJէE`{cn-vS]+-skt<1Ĵ\FQ6=YZ*(12B2OoG>(D\ CXǵܽ4sf~^ );ʄ'I?YLTA6A {0gOKG~YJM.$%ЈP|#)/zo0}/"Vo(X))[Pz ߙD8eKb63zudE8^fo+T"* YB!?ť^GxJ(u:>+l^scIrsDt!=a'@iPV!'D쒼sڞ\8A7!N yGwWF 8RYdyQ{y9nyaA~hkEr#K2*fv٧m‚#2F~^3u"(A!1pQ7cͳr_O&X{\;SdLb_Z@ p &e#ӧI.U=șԜU*$ |Rp6Hj2b5hזcI vj*I}Ho;X`Iѯpuf} @hİPT8Pá=|]N+N,3m"AB8pϟq>m YZDu"Ouaghr. |y~fԶTAO_jMvv` qM{3Y{f#:cȉDOI{ߦ9Z^$bzAIuSr爐$z~monPi^uTG0s}+rfH}٫!.v>sqGUZ)?0?v4fmPB@:ImRW7Pu6n2hj2#s 0Z`"6ZG QbS}3%"B.0@R0 W@`0hNyNΉT"~^ ZnTEҲZT`# _egj2Klc׍=kR~o#:Õ˼ovDy"i,tM!j];`lQy'~;[\nr #@EZHm#r?€G +Kd״~ ?=?7~u]d`~5uucOwcj 2Bmv DKrip?o{F?@:X#|9Y.<ą% n&6ja@uOu /-Qfhv5sÜ *TS\p[X웂zRk"IiqH{* su>c|_~QuW7*#M֐|!s⹻R/AiS+<@򣵝s ǀkk>S f4 dsύy^OQYϬ/{gr~ZRJMsfRgVvQ#:\+"L\˕͕г#t87L6Ɂ 7z Y9\u'88~+o|_<]lZqg~`>@{AxxbZO"Dn ;k kg^SE}Q#H|髀}` ì ')!njn3` :r5c*ZH[9$V#Bs!RnU4]b+,0m LL3j@SjNu@L$PbhK_u|T : ((%CcVD_F0;2(#}܎E(襖ie}"0B̈́Yvs|O 0r5_hZJ巇7Z?S~瀬2uf)% @m繩0~ N5кOFq; _'\sS\@qdAy@ mǃ 8>' MQ@ ^՝K=W Y 'Vu5=Hw CS0Lɦ3&VuiHt'P7|ߑt\LahCvHä_.h5YdFW`o{;`T]@zqd_aU ӎnbopo )Y.5u?w6Qt8zCK-+ Ӂ4kYRʈԶ[͎tZAv+j Ƥչd{n0cw.r[yq HsC9݌H3 ցtA@+9O[i=cI/N+yPDVo2[36X{nlch;}MKx@"1|/OE&#m(H YBC)w`?$|yCIel8QD`}lUQuYa/pǍSf(4JR-m"S\U2\U:=uNP"#~ːkL!OF` O`Ȏ;OV|w{4޼mzÇ_=yH Yҁ7 s6'j/obY ԕo[iW |m(iPyQ8Ss.ARCåAϩ>U%A7_ vr3'?>']n](V[|tR#zE*>x/.{] opr#(JO#-x@ q!w ē1n1;(PHa֠]Ob; -vN?ny8'A@I$tf\tP3aj ܄i\vY?:_@2 ^Hs${AρǦÜ\QCTCw{gӌ}`7r0ab4߫T#>yZ=Y#/|}yAcd2n8z9ÃI$b v ,?Pdn Atljwf7deR[@Z[Fݰ[Kp_-ȥ@8-UY pc;4Z1`'$Vh*PXP}pmmwAZJ&J&J@*(j(j(Bh(h(*)j`")Se;6!4 6ެ]|5#Y=)j)2:Wn) D(B{==a$jQ̑$MCpZse͑4佱v8 j]Xx*҂9l>:(x6u;̗׭A# @B3*Р@ \ d szk\{Coտ.AI`|T Ț\;:o﬌i%,Co3 ;9zt 0>>;OR(u.v{7} ?En9K4Xran||=I@Ü(z&' \>`HfA ZLϯNP$7 1FQx)(H~>wh9wƻ%2#;^.8AZ* &'ϩvߺ'u$Co륱LbDZ P$ ox"wK0Yz櫜HK~Gw'`EB%DB j2$D@O8hD)PB2!ӂW H)%E' B4UUUDUxTUfUUTQTU$@]DRRgXTۆ4e j&BhG * Ȓ(`$=LUMr֘ fk.aϷ8#HU3H,Z<ݞ𵽞ȭ7|aysHCFaW唅6kX\'hJQ lYc{d`*}sK`u\ӧ3]\s$eH|Htjpi""oDA`[pʯQ 8:7/O::`A;@5Ï`P %`IdJ{_>l 7 XH㾳8Q I2?i :oɗ=*?Stw Όzh^ rI]S<&^_qO @~oFNuI̛ TM 7 eAT/N^ګLQvj?-S6V3Ȱ y\M}MhÏW )M$ HBf(&#qz~/]-5r@E"+`5sܗZpR34S}Rcq6x R>@P]5al(/-,t>ձS9Vpsku++k'hT2ݓF{Oco/v0zB jV@GV3{2{ゾ Vxi 2kJ舗M70qGޭ M=YHρuV19RV (x)c\WTM&  kVõD].w9qDKh ER Q߂'C@?Dΰ80,f:\/\ jxAR où˽@Y06>Zlqd䆬 0F[͑X; ڨM5%Tq2 |B(I)Xs(2ۃsO/%Qf!|/M7 8"D1&\8qZd/e,i 5x筒r>=|dD)9+-/Kqi(0jW2YO?чj[~%\kvw3o+,(t !.inta/qbmzZBf.KVo-_ߗp8tpf)da~seu5J?p(q1N^$~fYlƗã?|Û~'H?f~q~D(AUEe Pl?UR? [83!f0HW\$pЍ4y4yiORvR1ȫl/! Y ʵә?ܣ79)d*`=SLr+Ls6m^zTُ7bD "gBtBKrT(p~X8bb#T|3懮1Hi RX-Hv"ڒY 4.oM"" m\z5ϸiz0~pPD~9|;܆bӒf#6dbvۨEE@s66oH)¨lmsD ,O$G@A T7fx ,gbAq#Hsk\91e.d>pIOUQX:_))}KDQξ}v. _Uǐ%{(mO0` `% tO`mX9Y2;,D^lpݟ*IA< |އqkGس@%&$ͪ-ٵE ᲣG C.@?/A@΂ SEG>cEMhZ 60Uez%([@W3~}c[4_@ՀCZ KE+J\z;ѧwK»ݫh<(ļT=T7|ZM_)9[?{U3D:*y7|aR1(`,T%%x:)S|_kUu4gZ  pmu%991p8RRP'Jqn’low*U,{]զ4*h s'z:5_"]K 5/nL-gҤB K^׿[ ,,G_nF7lx@&WR_f+5uG˕(Eu0cgU1j!]@28 .}A(":cʌ0@s5SpJ@Ä́jfvĮ WVqt p`2us_|iph`B>Wz)O1V7ʚu3p|5 ф&b1G4'8v!?w׳FA E=*izN|rvZ}A}<_@b_;[evqwst@HDd@PH~|F(un,Ф)?굦CՖ/zض=X\! 9\'!0p lojPy:XGl`z۟1D`FΨ"  U! =k=G9Zk++cʪ G$**=??g+ܮqMs€@Qg*B(񳻣ۏ|Wm6dzdW>iæ>{9۝8VrThA~\I*V.AH$,AbG#KIUai@"T'R (!y!i- nA! xsߺ蕒RH"VegG[Ig`BoNiVL.Ϯ?4vftF̬l9*);3pܹq+#5e?H4A`N}aASRBݪ00g>%= 4AO`YgﭱL*BP3r_SvR%$F©/LC$QRڡSw Da}Ay@Kx|@;xb>mN{xeO rs+1*^ MȂMq s&{=<^`2 CA DR2îRp۸u/r!A^ /5}khBg=f?9