aboutsummaryrefslogtreecommitdiff
path: root/build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java
blob: eb92acb6308b6a5fee440a54ee944ddd1782e2af (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
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
package net.minetest.minetest;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.Vector;
import java.util.Iterator;
import java.lang.Object;

import android.app.Activity;
import android.content.res.AssetFileDescriptor;

import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Display;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.graphics.Rect;
import android.graphics.Paint;
import android.text.TextPaint;

public class MinetestAssetCopy extends Activity
{
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.assetcopy);
		
		m_ProgressBar = (ProgressBar) findViewById(R.id.progressBar1);
		m_Filename = (TextView) findViewById(R.id.textView1);
		
		Display display = getWindowManager().getDefaultDisplay();
		m_ProgressBar.getLayoutParams().width = (int) (display.getWidth() * 0.8);
		m_ProgressBar.invalidate();
		
		/* check if there's already a copy in progress and reuse in case it is*/
		MinetestAssetCopy prevActivity = 
				(MinetestAssetCopy) getLastNonConfigurationInstance();
		if(prevActivity!= null) {
			m_AssetCopy = prevActivity.m_AssetCopy;
		}
		else {
			m_AssetCopy = new copyAssetTask();
			m_AssetCopy.execute();
		}
	}
	
	/* preserve asset copy background task to prevent restart of copying */
	/* this way of doing it is not recommended for latest android version */
	/* but the recommended way isn't available on android 2.x */
	public Object onRetainNonConfigurationInstance()
	{
		return this;
	}
	
	ProgressBar m_ProgressBar;
	TextView m_Filename;
	
	copyAssetTask m_AssetCopy;
	
	private class copyAssetTask extends AsyncTask<String, Integer, String>
	{
		private long getFullSize(String filename)
		{
			long size = 0;
			try {
				InputStream src = getAssets().open(filename);
				byte[] buf = new byte[4096];
				
				int len = 0;
				while ((len = src.read(buf)) > 0)
				{
					size += len;
				}
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
			return size;
		}

		@Override
		protected String doInBackground(String... files)
		{
			m_foldernames  = new Vector<String>();
			m_filenames    = new Vector<String>();
			m_tocopy       = new Vector<String>();
			m_asset_size_unknown = new Vector<String>();
			String baseDir = 
					Environment.getExternalStorageDirectory().getAbsolutePath()
					+ "/";
			
			
			// prepare temp folder
			File TempFolder = new File(baseDir + "Minetest/tmp/");
			
			if (!TempFolder.exists())
			{
				TempFolder.mkdir();
			}
			else {
				File[] todel = TempFolder.listFiles();
				
				for(int i=0; i < todel.length; i++)
				{
					Log.v("MinetestAssetCopy","deleting: " + todel[i].getAbsolutePath());
					todel[i].delete();
				}
			}
			
			// add a .nomedia file
			try {
				OutputStream dst = new FileOutputStream(baseDir + "Minetest/.nomedia");
				dst.close();
			} catch (IOException e) {
				Log.e("MinetestAssetCopy","Failed to create .nomedia file");
				e.printStackTrace();
			}
			
			
			// build lists from prepared data
			BuildFolderList();
			BuildFileList();
			
			// scan filelist
			ProcessFileList();
			
			// doing work
			m_copy_started = true;
			m_ProgressBar.setMax(m_tocopy.size());
			
			for (int i = 0; i < m_tocopy.size(); i++)
			{
				try
				{
					String filename = m_tocopy.get(i);
					publishProgress(i);
					
					boolean asset_size_unknown = false;
					long filesize = -1;
					
					if (m_asset_size_unknown.contains(filename))
					{
						File testme = new File(baseDir + "/" + filename);
						
						if(testme.exists())
						{
							filesize = testme.length();
						}
						asset_size_unknown = true;
					}
					
					InputStream src;
					try
					{
						src = getAssets().open(filename);
					} catch (IOException e) {
						Log.e("MinetestAssetCopy","Copying file: " + filename + " FAILED (not in assets)");
						e.printStackTrace();
						continue;
					}
					
					// Transfer bytes from in to out
					byte[] buf = new byte[1*1024];
					int len = src.read(buf, 0, 1024);
					
					/* following handling is crazy but we need to deal with    */
					/* compressed assets.Flash chips limited livetime due to   */
					/* write operations, we can't allow large files to destroy */
					/* users flash.                                            */
					if (asset_size_unknown)
					{
						if ( (len > 0) && (len < buf.length) && (len == filesize))
						{
							src.close();
							continue;
						}
						
						if (len == buf.length)
						{
							src.close();
							long size = getFullSize(filename);
							if ( size == filesize)
							{
								continue;
							}
							src = getAssets().open(filename);
							len = src.read(buf, 0, 1024);
						}
					}
					if (len > 0)
					{
						int total_filesize = 0;
						OutputStream dst;
						try
						{
							dst = new FileOutputStream(baseDir + "/" + filename);
						} catch (IOException e) {
							Log.e("MinetestAssetCopy","Copying file: " + baseDir +
							"/" + filename + " FAILED (couldn't open output file)");
							e.printStackTrace();
							src.close();
							continue;
						}
						dst.write(buf, 0, len);
						total_filesize += len;
						
						while ((len = src.read(buf)) > 0)
						{
							dst.write(buf, 0, len);
							total_filesize += len;
						}
						
						dst.close();
						Log.v("MinetestAssetCopy","Copied file: " +
									m_tocopy.get(i) + " (" + total_filesize +
									" bytes)");
					}
					else if (len < 0)
					{
						Log.e("MinetestAssetCopy","Copying file: " +
								m_tocopy.get(i) + " failed, size < 0");
					}
					src.close();
				} 
				catch (IOException e)
				{
					Log.e("MinetestAssetCopy","Copying file: " +
							m_tocopy.get(i) + " failed");
					e.printStackTrace();
				}
			}
			return "";
		}
		
		
		/**
		 * update progress bar
		 */
		protected void onProgressUpdate(Integer... progress)
		{
			
			if (m_copy_started)
			{
				boolean shortened = false;
				String todisplay = m_tocopy.get(progress[0]);
				m_ProgressBar.setProgress(progress[0]);
				m_Filename.setText(todisplay);
			}
			else
			{
				boolean shortened = false;
				String todisplay = m_Foldername;
				String full_text = "scanning " + todisplay + " ...";
				m_Filename.setText(full_text);
			}
		}
		
		/**
		 * check al files and folders in filelist
		 */
		protected void ProcessFileList()
		{
			String FlashBaseDir = 
					Environment.getExternalStorageDirectory().getAbsolutePath();
			
			Iterator itr = m_filenames.iterator();
			
			while (itr.hasNext())
			{
				String current_path = (String) itr.next();
				String FlashPath = FlashBaseDir + "/" + current_path;
				
				if (isAssetFolder(current_path))
				{
					/* store information and update gui */
					m_Foldername = current_path;
					publishProgress(0);
					
					/* open file in order to check if it's a folder */
					File current_folder = new File(FlashPath);
					if (!current_folder.exists())
					 {
						if (!current_folder.mkdirs())
						{
							Log.e("MinetestAssetCopy","\t failed create folder: " +
									FlashPath);
						}
						else
						{
							Log.v("MinetestAssetCopy","\t created folder: " +
									FlashPath);
						}
					}
					
					continue;
				}
				
				/* if it's not a folder it's most likely a file */
				boolean refresh = true;
				
				File testme = new File(FlashPath);
				
				long asset_filesize = -1;
				long stored_filesize = -1;
				
				if (testme.exists())
				{
					try
					{
						AssetFileDescriptor fd = getAssets().openFd(current_path);
						asset_filesize         = fd.getLength();
						fd.close();
					} 
					catch (IOException e)
					{
						refresh = true;
						m_asset_size_unknown.add(current_path);
						Log.e("MinetestAssetCopy","Failed to open asset file \"" +
								FlashPath + "\" for size check");
					}
					
					stored_filesize = testme.length();
					
					if (asset_filesize == stored_filesize)
					{
						refresh = false;
					}
					
				}
				
				if (refresh)
				{
					m_tocopy.add(current_path);
				}
			}
		}
		
		/**
		 * read list of folders prepared on package build
		 */
		protected void BuildFolderList()
		{
			try
			{
				InputStream is = getAssets().open("index.txt");
				BufferedReader reader = new BufferedReader(new InputStreamReader(is));
		
				String line = reader.readLine();
				while (line != null)
				{
					m_foldernames.add(line);
					line = reader.readLine();
				}
				is.close();
			} catch (IOException e1)
			{
				Log.e("MinetestAssetCopy","Error on processing index.txt");
				e1.printStackTrace();
			}
		}
		
		/**
		 * read list of asset files prepared on package build
		 */
		protected void BuildFileList()
		{
			long entrycount = 0;
			try
			{
				InputStream is = getAssets().open("filelist.txt");
				BufferedReader reader = new BufferedReader(new InputStreamReader(is));
		
				String line = reader.readLine();
				while (line != null)
				{
					m_filenames.add(line);
					line = reader.readLine();
					entrycount ++;
				}
				is.close();
			}
			catch (IOException e1)
			{
				Log.e("MinetestAssetCopy","Error on processing filelist.txt");
				e1.printStackTrace();
			}
		}
		
		protected void onPostExecute (String result)
		{
			finish();
		}
		
		protected boolean isAssetFolder(String path)
		{
			return m_foldernames.contains(path);
		}
		
		boolean m_copy_started = false;
		String m_Foldername = "media";
		Vector<String> m_foldernames;
		Vector<String> m_filenames;
		Vector<String> m_tocopy;
		Vector<String> m_asset_size_unknown;
	}
}
;S#edѵlzӒ$D͝nN-l63tIŊlak.Np j݋eEa⋊g WG@v_ tb4}P0Tc(ӷN *W~7flx~h=X pwɱ jh 4(0q/`zržlHvޫۛFyb o@RۭU;H 9IJfʐڃeq"nW ~ 3;[jɾr6c4's= ';yx7$gA"HsOA6Y=O _X?;mƘX\0<9,ddE-hu.K axݙ kx?]{m(fi>(:9,QwwqUWi{( @i~P IFRf<ˏ9&{AᎥ[p㧦Kd>~@Ҏ:6R돏:A7Cu&7q~̟j~I~yQ`|Êy>jON?BYc-MGr[?;M磦[؇aBlBr}UYeYIdds"ϵdž=y6 =ԭZYR7q2˱":upiM@{0:UUrG XS^aÌ &ٕ( 3vAycKqh=ކcݭ,A^po7/( @ZvHN&hed yNp%$EqӆuFπpl )NHO5;NdSTdf ' G6FsAJ}  ߍM4ƚ\,ɮA3:@aMݺ]q>:0ˣ&e<4Zn^3ܵW1,=Wᝐnջ u |?P]7ak b`bMb$Y5b4 NcМ7"89;AM_鈇m]w嚃m6-5w2:8RtR=1>w2"%.`]  Ǘ r,8N:LUP4[/mj,C k/)/p)S(AT*S&*T0]F,$AUXM5eY4xaӞPX`c)6fl7ɚbfK=8y#tg'p8J/)%P]הv]u/f|Ŝ/Bkp|?Pq1D;uޭpϚ'AϜA5zya+!AAhGߎ;b%4NY lLT4u"?m2/뻥 KiJR0eUW 3Fc^Z2)ٷ 7IɄopv]W /sw}S<~/6m.|)yNM2|gK1o[EbqP2=6J?>l2M}\NE4X׵o@o|>_>dHn|01@  H^A=+Eh{"&bmߒ @˨u,>L2=PO^G#J2 J8B4a.7#u@9'AǸVȉBꁇ+TL^[n݃hޭ6l&G>mPC}3׷69Cۚo<xlDŽ >P%<]=] +!-``nq nM)<*k _ް}`>P;P,hW44Z)n/h/hL^HZ|J*f DC_q𪗵{knu{{`"pwI;˧.mT '0ol*R7$LJx Tώɘf:1) ç>9 T0 :>R/ng ٖ()&4^&7DgG6ٮ*.=8|2캎1uE6f{1L $IHH"&fd@PkxIV MW) &m 9YR6\Ft 詃h8`C_!$)N31D(x@n?0#<1UvVեk+>~&c3c2l8rC,m*Sx`<?a8Ji]gsQ+/*3IoqǓD 53Y5R}Ca N5l5qC'4n 1b[C_sR5!4F7Dt2u58w- &S68n]VnGJ'pΠ9Ͷnf8ROwk6*!8KXY7E(4R>0.깊Zăr@]b 7dĶrJjc0ki? 7⁲ H3"D VYŏ0m\\BNsgpiJ2VXiH?8&6#D-jfSP6h#a܃iƷ9?@7gcfUN84s]ŝUma~<%`0)ϫ1mn̲F6f:A̷Wr<*!DpEA4lV @}p;N6O`kSv'8q#n 썓OI<,zJkzq'Np}Ϝm=x'W-۵y9GY57(_4cCL&ׯH6,,_z_M#̇Fy]gô&"/bR<Ĕ3;Rբp ] fۇw44$DzwfdńRsf0m !m>_ JjS.f9wSKZ`pE3^~_ߡRao倂r}mkl:(UCp"]ޓR6iś\曫}%UJZ"1L R$L)ď|7~m=~Ԫdem߽iN齓ڧy}̔O@>yb9Ş]iqʥPohDe1 l,70amR"4&hȔ f./j͵81Mv^׾hF_'uIbK4ܞQD\X3sblDOk LdfaB$,F,( KMdR\B,װtmADd4Ȓ`IIfM)KF4AIc0M%chش&CS"fb6Cmcm[Vk A}n,Y1si_Yb"`jG0ze,=eqa HLu'YqL$Q¬i$\ m#J!! Җ2mkmYjZJC Е2 ~ScbvF'B>e7Gyg$:lu81:N:rQnj*S(DF>sYjze@ܕms1]/D͵736N,N^ [4 ]'w?8_OjS^*!ÕCK US,̀9 5iM_6.y"&CVC4Ԇ).ݡ\7w4&@f0p8`a,9j 'XbkK3\L|*s:)w!8GXLwi,b:L|DŽ>$p&qPp N0$Ffp  RlȆ8պ.N YHټ.<͛62?_x޸?Iv'zg՜^mfifGq<7ǎ&.:y `c@!CMRs-pJ[F460lmYN+_-VY*7??J[s-RͭgM:fapJAbȶoW.P 8cn["X~5~#_DԿ͎`6ktWS\yyASdz@`- 㸜{?e{?gVM #gfSaRzWӼ¦?bR|B|i,'? d GLPohGv 1^Y"ÉPh`+"V HڶomE)i[$ !oK31UfxbX<0U D f)h9Kѡ?'vhMZكyZpMe*"QWr$g<q9X{cqW\m}[vQ=HV`' eͰ$|" (cB;tK1ԼT7zlDm~'ݔ~zPp"x@յa Èqm߸zŸY2I0ި*d*O0+I\2rsʝ{@!tLm3c ÕFi#9^}}]&EI 4T?teҁYZ/_JRDwpK ]b%^%gowяxiB$$$f%_궬O)]*+ …]XUaオ8dY}nUTL{k-0cc:v""bRR'tBFDddPˢ /.2_/Q~u 㯊Օ ^bܬ-okGK|R%骪>Sn4Ha-i6 Eߍ??]bF$WU|?_DZe&di @+ɾpՋ{S՝)-W|ww>?1^I2|tΊwyQmפ_čTB Q È֧J/O)SLe5Zޛ-RtcYctݼOL&r;wݧ'b;7Iӭ<_!~I܇>ž߰.ԭ2~L"#r3 yK_ڭڭe ]Wv+TRk%Z_5P]*햱ց>NiNs>9GQ:Ի&u}GD!?IboP&v6uhMiO5L>3!u/8jEU>vٯQicMf@ gZnPJuי9Vj͌1WSA֋/ RI%LA #]$+6ߦ+?D\pߜjlJ3tp⇴V zo\PL|ʚlmn;7m"E$٫XIֹ4% n piY4 P~E+J{q4gjVp5WU߭ZY{Um۵xlIbq=hMDSCONoP%;${nW# \ZWɬ;]/___ vj] 0LUE׋X\{:K؇PnYIrSAi0\- Dpw8pۓ!|>vj̓_GGq3k9~]~$#7ߔ >Ыŷ4CsD҇b'%X_ 1y;-7%ӁZ~h"^zk.zk^ޯEz+VMwd_҉M(dOP Cr0, 4r$얆 )7Y@ʬt9xo[yBre S3$QEYf^^Tp3nwMyxIADBP_Ok̚_VW0$6 cR:iv -4L{e Lqb| 41̛ M7Vd9n ɫzȨaL|nH'@ PPIm5TG|JRpu'I0 -TZi7]wzI*t6 !30󲍢Th9;\U+2 80+ Lc ʕ3nXtۜbkooV›jN^s A}xbE]LbŖ-(V5AlƓs93mhہtmCbdamDZ+ fLY۟!lm@7 dC:E;9i"k4 h>j 4Yɪ'}Hkх.SODɥL46 !;[[*:pm+ f~'¦Υ>[FЎ4NDB4Asxxސv,eYdVRٸk 6:@(2|i$+Xi%8Wpۿ؆xⵄ48F:]ܬ' pE^ڈq?O4K67 $A2cI<"IFVd\[hKyd0*r""mM]oǵV&i&i)YVm/nn''6g7:\N`!73VsHbYt-P7Iُt`y=QQt۞fGJ7sUs ˸,&w 87+p@RB uM:-d5q%:BŒxN g&`PUZB'A(WV5@- mNk_1fz;JOb إbmy8Y CYl՚ū jT[b7GrLeK,eEliQ6cbA BRMq!N;I(yI ԡ &^F;%RqɄID3fxAEh!eM6yđA()›H#wS|Mǔ3hxq\hrQJJ$AخC\tw`Z\x+VqwO;I >*>wx,k^2W:gXKp# 4xF׆#FZ^@r@ 8x-fx_KIXamEmsuqRDօaъjTKiJU0)-D LP-S pbŌdf*iL\k.2ԭu\q(PYLX0E0Gav6]J2KR:THf k5m5L*`S*ƥ,m)垮rGEx˭G p֞*Ǒy%u[׈tx?r=ys#,Kc,Rb2,2(RZeINRS)-4ׅ굢Dq°BMM0 $Hd$(q\/&ry&fj59Ewr@Š`-1d I5  PPi<."JGjM$O2f3x@vbؐNnv]Y-5u)en;G׵3~QED'K4Ƣj`pSC^: L&'C8ơ5 =yd:vǏtp0-USRY*e%S(P)&J.* Z$%QZ[ \B,Q%XƼt@8"*@pp8۟'<.1ު^wۓ14hzjR5B:',Qm.8lqGfORRRIIaatV ͦrBzՌc,&jn/ZR#`F4{-6C/AdhT1若 'fUm.?3?>_ˢ=,b(?sGmt3qq Տ=߱ arz-V6BKxT@y8RZ6{LITi=S s!̹qƲC0Q4%I))))9w7T_JDIĉm#H mH @:Y 9e\''(HqddI>' 2hy43H#ΝrTNH]Ymm My!5`bLs To^ P9;˝FȄx!<:ޓXnTƎr8T*m5gf>Y ]7LiIx @FNsUƒ>D7P) % >w qsDnM Ú&Y-*TbQ4ry0ci/tn7MFZ>I;<恎ۇv^d LKp_]N{18%NP mquud~ a<^c&dfr@9#pk f6hoK6kn6_z(+׺FcϔOl_So+@V]zr]m^F}i+#eD ]`b mA6 Qȏphk8xᡢh7[˝F'jw25acR#)f/<@FAlsCm _j/#8"6 j Mm̎PcwVM&9t[z=MKu$ عl,h- _ƙoW]~{aaڇ4yѪt%8e@<,95ŖSi,I$ -w;|W1Ž.)NHmzfƢ0Rll:P ,`:BX[U%<p3e9N|NLG,U|5эMRՍQh]PfLy_ę4jDB¬\<#27W0i{X.c\,7<@G[ucI7:8㑘d',:Bc*\ dFr!¨u$RW 'yl>FEDBЅP`">c7Zkmgo=qnI9ZIR{7Ͼt }?W#859mRB> /h.z8qLvcSn<ʞXiSTߦTTo .rt+ 0l ac*̮K/EΛoLۮ|Q܋9~k?v^R8C@޶ C,2v6 /*;:\ #Wm͌##PvV܍h7Yu'F67wnO'V2/7yg9]D>JA11 hAQꫠ_ j߉ܛ;-50a.;do8N3!8e)GT8I W6`rljOXJV%&) yC avNl܍Xzܓmeu;â[jXJ)M$d24Z,$&fSPbUV͹-ZҷðggeƀS59cofkLNɢg{q$#VdH<I #MAH&u#uێJn'vF>ou_}$K4B &ߏ-"3}&|qB(lt(*& ^\ `hDw0sT FcLY $ce5C嗧{7AN< P:Z$kUqp8 xsZnF WsiRuZjpyA=FG*?QgfN3QʎO(r(h:(r^(O$۟ZqFwMiPgH!K' 4֦ٜE,tfXW>Hk*[V[n(4ʡ f hokD%Y+H{l`cuG6+:b*znC ;q4 mڰߣ; Ϯlgfj +3bޝKDyjVRi&5%2jeS&S&wATV7yHFx]+]Qu Ʃ)6& Xj BE"IYRdsvGHx#D  9g Ye^7]p . mKJcZY¥[+RX2L2ۅAt80 g$RT]Ogt}jHeb܅_cO[]纪'&C)lbPi1F^>Vpy{6;UP7 jJ"o7[9uVe|Vy=x ZB P Yݻ]4۽Zzzv@MFvF"d ӎ(Q!t 5D; !Q ܕW9pm-z\̍?jߏK'`_~{JaئŔa7r?t; Dxf4򌬫^A懔v}J~/XsZ oAbxvdZ ^_Ko%m$[h{ 'Hy1zP43|pi*iAv˯QgN*oў8'6o|'Y7Xr#%pnӉ9Jf+-px/<3C4[aWpE=x2pJ4OwyTǢFpCqPOq򣑸U邚r7{=)tWHՐLxA)tt楴߉3ϖYgx+UZmp$U)+Wytd8Y#c {762"h݈;\ iӣw"۠7NY#^~ݦUHFv۵g܂w>nJI[ױa8;@vFL؈``YE0ל-&D--ݻQ²mqif+rȬJRr\7ŝNgh ɷpJ] oIɼN`HOMiUS&q o(j,}p-T eFw qN( EXzh$@AyKba|;њfS6RRIHR-6di% Vmmmc3fǰlfd XEB:,/u/Ӏu;V09碏,o-L?nFkTM VDalm⨽*{@tvC馒m a/?Э=Vv|ۣ t12GNކ6իma5w=N1lalӡ`lfa.yߺ!Y4XXrN"wTh ci߬cmiቌf"CH9ʗr M[;l WEwU*=j56)AAly+@Q"'! ǧZzD~5AZ \6jق^v #r,}e>YL&2*dg$HmRVYlS$I_}k X]k@tٕ *ݠ4tU{s8$lg hhCCC獩HFCۤwn^o<|]h Xh46L"+jJJjުͯ ~X u|/ֹ%P:`2cJ?^QXa;U;eb ̩[8CnZa6cFtn=-%%%!QJRRRT]x]zDp#2:e&DE9:EW6x~^,ͅ,7M{m`NO{w>0D=faUu[q"-ŭuCnou/yo>CQ.ef2TmcCC-uOe]ۍtΖ TULf oT o7m,8wlZ–"Bk# O}_'{)))!0Wau#R׃ W.B!ة9I=ٻ nLcF!ݰ`h\`nDzZ2̱˂*[cfZZ$i)u~,yy}K͂I,4EUk:F'ᡮeVшtA @821bnKeXm[~,0 t +x[%k*ȩX499f1 y%hz@&M9`--@r MQ G6 ١%$Dӹ|R^s *̛|/`j:ʳR4XzE&DDDa/Jb6k @, [_\6Vm!l7Wnݐl7Fsoua s34*% N& 05=Cq%@V[ڈ` g^K4dHh<\#ILUu5"FKˇ{'(<`(,NhJJdV&m~"rZDq$Z-!(`J4ğ)oCpS{*vX9f\0/n \3Gy {Y6 rN$7-c<3#J*` GAL0`KO43BfCJ$O;!Gs텛W,xbX?Qd0Q=lq&29 TMQ)5)Z4I2; JL͏RMMbro,cؗ d[-ENGEuK#Ew[. w=2;H`@Fª*f0aUUaJ`N91ga[T1RHUbūt#25%̌3`UMQJQTUhϝfqR2dmu4BjC %&КMB*aIg|dfMsS0к1ٶt ֏X6'84 pNzr<9QM/fypsBk09N|"ka[o(R rאDm-PU*`Rխ5)X&je4m,0jCT(҉Mbh:5= Ԇ2jYnk0V);Ad2U*V4ddHPvb'HhvI'znDqvOPG:I$GORI=Nz= - X. 9bzof= nB<;<?py1n|#TMXx7=SԼyCm.Q =J"+隸ݒxx\ۈvGȟO %t}H`S.Z?v_/GL Oט$ǝ9#poRtC;އz=NDgu]_g_ DD)(=:s$5Zʋ;FJ܏Gfp!PGrw!OR1z\Mv6;}a݃>8s$!G'hI?Ȝѷ սi?sC)DAYVڕW k3 0Z,QLhtҳvǺ&HLzI=fa4h+9#`yg9 r~THYcL?ğJ<k_$Jj'</sf)c0Ye$qzݠ7kW+6ܒ*Zs*W8sg59e3Q4'Xw\{Qɳ3tij#o4蟀TD8AO5^F$GS? )R*yX9S3Bs}*,XvpޣVzǩtOS. SG>~YScҎ88\Ӂ [95- )mȌ`2= ~tf\5eh!z2 .)3~FPʒm|$$wC*pGj$OL; 8CpG,&IM0TPiם!+!,ٗ9t[>Fg46^;XNTY4$Ќ& >|I{VJI6̳,\*I~ Et)iSNttgXf=Khdsgea]Au`aiXdEz@1 Aq~"cX"4џ͐tګ2;)*t1.BwVv4vU#aw;ii77)ʔeKA!!ż*} 60`N<#|j5,Uvc c7a+ b11+ ݤx>tw[LED[қExu@?Lpކȏ~ sϞzQhMYeLS&ޝi`fβbq*ҒI)J0L%E*ţCF-444YT,,]m& ZMhťQSXzk5]Q7 |CCbZ&Y?IJeTtĢT΋c_iOLWwQphܽ9]-]fF kVN220}=y^Ώ~9|sCIΓ:鋆~{Db 90v$S9PDg S9ݤ\QQ&#ѵ ъ1hb &VF,,[0ыk 6a0٣,4CClF ThA040*`FCQ 00sFa:X3CJٳEa !Jd`P'400b4M UFJ9%0%00TNfIw|7͸7B |p;žC[)Iomꫪ^J70*>dG,h}?k&`6%Xh 6jm;Ƚ6i?p,1NbDD,A}ڍ2 OG'p\"p̰,ɹnd) JJJJK.|247ƃAmBqȞDY"f:&NTycnoN~ll~Hڟ0~z({@=kq?x1ψ>Gw210yC'psL]q#|jUó3y\[-V x wƵWGGm>Z%&6u0[1''p3S&JI̽[Le7C)79sK.(23'aa64p:&lj'>c&ijf[1&ӔM{"o' 36 Y`ƻˢF!DMJ߼Ƹ̖}|hMLɽ|#},S)Ozӕ)NB}ɇ(8w &GvAդCHpjL3VV9z>Ъ5)BW.KKW3tMYUĺ>hi hxWJxSOz] i/" E ȳ4!faU4ؘ-(!9gլ @Kh\ I+!f10tˠLS31:VI6Fӻ }_{Y*3<=g9WrT""GO'L?qgNu ͜&>k+׹oY{))ӺY\ 3&V)P++CaEm,u+fOЅg,9#KC:L&.s}"$!Wj 2Hd$4{P(  . ""DBՕm$OY"RuYIryMrveZ-vkHK4EY6M8_0Cs$"0 GPoXdk+l/o [S֣ʜ.5,Fm.1'uwl0MVFzfvۗF/Snd`T1FWm{DH'i;CvmM&CG2j'1$Nh~ϟ$Ow|̒:G1$'673f5vȊx 34SJ̪t3%~~O^/ŒdͷWUi׷aә,>pG~{QIr=C?q XdUKei$3[uG i:Э PBWX[QPgI-e,Mٶ?#Ѳ><ǧjm9abI'9'@=r+9tbb#Hvzt&sgH9CJD#&ue) W͙}n3y4hٚ0pjJ< z6â$UۛnՇON=KO/_MSܪocHnYNpbI&h\I 0}eN8c2ܻNs[,^cս) u*&7+u BKE,66| N9Ϗ:SQ4KeOGocZFY2Nv O tjC:S3@St\LQbjOo% K&gdVL͝Lco,<N@k2'19(Տ ?M{pӛ1(nTdI{]c&c̞i3gFvG,Nyhw1M[m J'.W[xīiJSFZz!XㇽYD+68`>2?%JJ(DYaY s#T5G3`9`G 9AN`Fds)2ed MnH``J^FfX aMɚc0#9,3oG 44 DAgԝ 5< x"`P:"t4N'>`123ܑBn'D6dq\v?QMCĹGbl)ݼ^FDMhM~:>ȞjE~yqotNU3 &ѨdL& 0ꞈh+>+'Gm^؏<ا3H9C㙦Ptu LMƿm^G 4׾'7Cf9#F3 @YQZ͆W5_291FKEJ]&3 ~粧5 H@g\ XSamlǔgimlF~4#Toʵm0XPrS 6 `R6pc0ωYfSHfN:f~q >S'%GBzN!iI!yAkrÆ=ҟ,|"rIڦ!a"z'r12dv,;.< y@Pu%x@W:l ( Zi9LWvnz;xSMM/&Q 0++*N.p?d*}2Xغ5W#!UiT<984)^Yq-'`'bVQO9ds'51 .,5Q3N5 ækI邌'Qs)J=dyMağ%=TRJkK- Fo'28'Fޞ!g4e|¡6⹋m0I&i%5f ^T Q|}Xbܰh{3ƟiNYZ)mqS>d4F ߤoBQM.-W b5$+9bS#9`v>zk[jZlI6IIANDE} jGwHO})Ϭ9NkmO';~j̞(Z~=\b=w?}ґT'mN&b~m$e5e$Tēty^$òGkqTr#ףmygMh#l`6#ZZ-9xG~挧599s^}f줒OImĉܫrnbdUɂbrr =I 7Y`=qKVo$O/̘H7'g5EFT,_dv?9ShqP ڽQiN1G>q=| $I }tʌ-6Fq0*[${ힷƭWk4s$ _+WWcȦuimJujqW<ОIǷ4ng)8=M5Mb=@4#PSLLO|8 &n\r G6)(201WC5ZUmZ7*T?gC9mVX7*`6GjJL?t57EJª#31TUU)~yӖ\4sS4r̔揙83;dz.K=BzJ+Y3!3 pf9sP}׷;z4Muo9|+dKnGu#ީxꃗ}!g"A *L1& 7C מo$1ejQ͛|R p=!@\Hf0aW ڷD73hWGm 7 IM3$& ffGy[m#9)wra.f4%*SL2bY{3S^k<>ܜ;5{!~dsc(f}0TeХ'D Fb2D݁J0YJC 0/PB*{Ï&𑿜q$̙ifQ?Y0`KRe9ssdr:L͕L9FqΘJa)3 O4o eg=gjO^p8>Zr`'7(ajo^dAǦH 0p,'DMEh2hμCDA+ʃH @;,+=CC#.ً DŽIar{_1%;Ǔm:=wH4`aE4 ʩ KS޽ x$<0zu;v imPY, hܮF=G0cI-[m[m6dO:Y"rm;## D Gu(Xm{yZGmy DڤI$'OL*ЉS1cޞ5ӹϣum.x .Tp/!C!>΢֑ s4MOCAj[ pߍLŢliG~7uW"!jmMm>m'ОVmLsnK*YMdضʲ{Ǝ:)vku5P`ȕ)>13VwdA0T7|wwX`e2dTX|,FRYaL `deYVL0ҴX5V`64\45nhi2pSF8_]lՖ5VYa,YVnnaƖ2f͛M-e\M6nqV5hlժj\W Z5apjWS+V0VE S{\2qLXa 0QS),(!f$0ln00L%ۭ)Jm6ҙMX`vc+XrѪLaѥZVVXq0Ѥln5V 02&Xar5dZX2]KS-K LsE F hbXaKXapb4h`v6hS%j2E655hmhÆɤ`f,RXR2LGcCKF(2RYbȲ%PÏ;>ۡҳ(zAѶhhL[3/1F#S}mKNRbYeba'u2y'Tz!LoU(v%'~ZD曹F(eb2!f1 #0, a@f1444,4ffQ,b0114O?c+[0a>u3]ЖM1-RRRYaKdWDAB!ADtdPXAJnnN>+U&у2,ӕTVzXX3g\˴DПZ | ԎUU'S9?b6qnAp97M6D7[sD^ fm 5dwxe>0`y| jիVxvGrg:V[>w(Da FDn>:3ll?WV/;Fs:RGFqtl4 N8LģUmn J5EQVf3J، SS#m՚ce+3a}|;YQ $bA,_ԷPfj72-sy&Ef-\ɂNdR3T.*lmsn|-'m=rI܌Ȕ43իWA1Ռij5 5 \;E5gmdigVkHD$B$,C!3Cݍ8SelKV>ʕ+|1,f КJX˱004 7LIח?2fsX}GuM;VZek⟓_/9|Bd22ji#B)M7l6<*iՎjto'NF:WC<gc-Ul")-E+mb1T(iYZPRбaUb6Tm-wvwY:I;D"Paw.s9ns;~sۍR>El*O u@::S*WHNҦiQ[sN[vD*[L(&xS4$N2p)"oʼ;'qnw!'ȍVtOSO-+}I]vH|_B6IFzM?}CLa=v19|Fg>ѓ30'[3OCz~s?eMGqCQ fˎ?0Y5 F94 Í210{jStn@ښY b6 \f%3 pc at٦[|5ÚF2olqeSVHmYlՍXFL9L6-G}a9!'Ѹfs;p8Tб jJCo|lL%$[?CVAXՌ-q¨HJpwF!kn &)G#R!(O6IwΜBWnA4Lwp94$2V8ٶf5aQNМV yR`Qvj5ZR͘Y-d ;?9@7:ܟ5;;,' 2+\vP_LLT`>rOTjAض/4G\u)+?Nxyk5IW76_MDԌf&ENPM%XvP*(a^h4./!l4 M9vh6 JJRRa2*?8%O SU*T&fB 05Ta5L5+0`nAU_g)`na%ƶ@ ,̒7'5$i5=}O8zb̓WsƓ&[ ɕapg(py>ҷiKE%2V7L2TUV1d{CI `q#p r 0& QE&lŤXF1|eXၤ`'uOsU)$=9& # O g24v)Xۇ'D۟J6-y¥*QEΑ++,#ౕ;߼@ig,6M;Ckxb1F66!5ɔۿhSgy#5'RGNT* 3$>t%?f&dɑNoTP{CIjA682Jj9[)'ZCN4^M&i 'Jx‹ߛfpBcyuGT<kDQY&5mt]\(kwf̏r9I)|&-AYDƒlC\UlK`JC,LSl}R6ѿOFlș55.Z:O$=$3"Rd!aPM }Sg )ݛ3!&1:Mo{N̠D; 5JCi5_L%a y7TKn[+-i4b̫2"$P z8uOB߯"R Y';>Gzg̚b7k 2h1|^L23"3eXo.  +U-%mR e  >yyP %Eh0`7(BDd\.jO"'&'Ghxc (>]ObdMkv(Lp407jn6 /ireocI3Ѓ"k0q'L$v0.\C.K#=@8;?EE1>g]#$MЖIu"Mmjᖆ&zoZ#$:8MO|>!H&:2IjbCSQLsdjF%ywƅFsK|aZYi0]Óa?Ή,eմbXY-IBm) g#H$b}D|+_MF)A{ʶLpiO (GSârv |g.)h;pc1"ޠm̌y. t( m׃c@wAԤ[^Hk\d$#hgLlʼmޮυ ao БDHy<[;*[r!)JSz2220h ?Y%qM>8#IXӢ&&5XPVGcFY} &:3k{#6hU;vxeV}LG_@?| ~X 1:,`S?lJpK,Yf~bI`{Xչ龌FkrpDDD2Mw^U{:iB~FlɑM%uWK].3K]3\-%VealY{X&G\OZ~r` dfF7`(܌ QF&;4hޖltn7XrgRByIh4am1B)mlO4~h}KD?m | 1\%;죜uW\bYvY۩2eL۲ۛ-uA\vAwd3&9fFnEx55eIT3%hn]2&>wzAtLF TYe/蘻SƛtO5N1Ƹ>Ȃ*X4 UjnJgnKUewk&[L3Hצٓ\V{5ͦm^gj[7' {qIm͸} {oΝJSlErb$ƚctZ[rҋV{=E6ALబŕ:r}l WV95,:`HZZSHr5&7l%euɅt?\ .;˸Ša!ٵ6JJ:YX95 1Y\}K,F2Ls! 84:NHdx˅eVy{)ow|{}+0eP54}PY`#w@&ۯ.49S>MU-7_ءG "/x$S*XyJ*`t(Tǃ l3kHg*5斪ekf !ƒ4͆vg4ݸܝ&FFFG'+;nd禶 S`Qqm&bO!$0f yPMCouZf),pM_e uv ih?s.vIVv2!0ʲajhbaC8YwtK6xYocFbxEk|Nf^4Z8ΚGEb-Co6Λin!+a\4R@j_q<+kΥ0l6܆pԗ an+<ƴM@E2RVUTu4pq7g4|W_r6B '-3ժV,%\8Hxwfns[g#}]ֲL;rhPn23D)r+ 1k կ\a4TʮtQ`BXneX] όAr$~ Њ붌kV 5Ι<1:FAH :rEZ}F(-Eyeq?Y H:=i5Vy&EC8{pݒD*h[Sٮc5!h{{FW/Z8v{aТŽ.[D'{ Řj2C9%3a^*"tn|uVD'yC^oci=s0jd!ǫ \n9oq+ q`0VF!EDaIQtSOGn34*YQN$74)eb-Ph`(d|~9($cYn$"lw>Ew,ZXՒM|(F YjayڮA {\'i &u0aw29Mpk c000|h3 S#vIFcَN0'va9T? ?M=ip'7=z$(mn<ߚgdUsNF@-mJ7k2Ko+].&UW"5XOF $m7Xc9t*-z53LO jb%MC r2 : [Kc?R=:(Db6"pQJShR7m!3ll RJI(,XjB;Pb"HT 1~&S ҐRUD lsW8iP4fv!Y$ۆ Z4ۯ& 5keaײn&[њ?a/JЮWPm:Ь4d K+L3YfXسDfKFI5**j$@"@1+=ku~]LG XQ퓌(tΝjlla0eV*~ϡjjttV),rJR75 %7C I{5s=jRS9h XXYe`­A'B,+qys'@> G/c͆NǏʔs9E)1m5rg0m[3\flН@ A'Gbd?hS/{ 0/-@JEI44,yi. L$"u T6WYgp+kxHwzlpθn*Z&7`]m6)n7̩eSmk7bxn }X`f8 )مՃFƎ (9˧3UD|&Nl/$~]2#eY!?QK F)!12Vv`ҕU{riE|:_jJ")OsRٛ5qskNJ3bf HHnN 6 S n4ΙW<0c~јjZC8) % @`X3!F@:WVysu,;.7sj4,*N౑Ŝn:C%(lm4EcV|UzO~9QZR÷=@qms9#9:xOхQ1xC+w&LEfm›[CKSm*`$Eb:DɌS@@6…Beu0&@Q6ی99tcwNB/$jWWLL0Ƀ ̙ɞfjNf ;]85 ]PȟI?gE)A,eZƺr;N+X1ҍ}r"ZAĕBfigӟ7KNFz7<JqԪnƕ^|zaj-G˨&[uӺH)A,[BN)+.Nܹ"b۶>ãYGZPI M=h`jl9!7;9N̖2.iLS'٧{c3Ns9J;=L'n9Bs"GM*(ލ8+;9CBë ʙ;ަZ1K$&)>45S4-&9n)RY=݄SyldXچ8-Xl=׼8`a2sb{f'!DIEFi<L/(Cxc?"MW rL+Bv}"hn@fd&24T( 0x*X̓q6LyPE=(Nc>m{rQEsdO_CaVRBOyԞ@svȖ=˙b66V]`Ŝx=Vsi" f-ֶ 0>0 EcW w֚2f2DnjX@&S60yX&twdPejUo&U8BI!.a0\ͧ)zPg! B:^@;DV6Ƣƭ,[,ГN L$Α&9\pFelRMt@edXmB·l .7غ=!rAo¦&޼F;"OFKvh1]雄e;*T2M˹/bN7uPL[8 ɼav 5fwjZ˅DM6hЧA;Jxqmh&BڨIㆬڕQe4S9Aћ# IFE)df)LöQL 8>xLt5%Lbڊs3*Ru[ё220`f)NNl'TwfIɇt'v!6)3Eze*UMydnW~Rtnw~Lg~_ɶ]ؑ$6rBg'S;P"1d5ΫڮΝYqDW ,YIIԭ#!dƦkگ**jP(@BPJ;Swo*( J +*U*ʩTS 5lXfYjtFVcYEI[VZ02(,=?n?=:Ȝu[U<&5U^T_uf"3#@L!Ad'tm'U:ѣE0h   -%6M|o=Ri]ii$#" JI̩WU0"Ĕx3MT%zW̔&ꬥH:L2D^TѢ!RVU*U*J-2 ;I\#5Qsa0,zUzT{ "M(Ϋc%,S.d72Fa]UeL@Rj+Jn$(abIT-sH6CO?=maYbfE)QT3 %Suens2M1TT)dhp *h4RD}3,wk#U8wRwaf0V 7 < 7d2O jxLgAAAF@,`c1 أ~Xv⏼4F.QGR )L0`d(KS rTЌ)LBTЦrT*P0c{O`^8`fm!d;"$F|F6 ;d0x;˨dO~j2W '$i0O݂',$IONzdrR`v16ebպGiKeݭo}ߕN6yhtBa ٦>PN%keUUUpAt!H 2)6-l+,c.1Y7ojQ,0J/)ǚc79%儺Ss{n!^y t/C#-ڲ& &.]k1L}*Y@BiĚ1(f[pkI$BI) Hp&KVګh03pvWAqn6n5 TQE%=ϔi)Jlo+#-KVXi1Uvue6LS~QJ3)\YVW?zn)$d5u f'8#  y$ *B3h&Ʊqnĺ}JVi):_|F_*1EЃbŅ,h`E$HE!&œ05dP ,Am7]a2Jēkv7Md+4*cx1CQ(gBju6ZTp*:CM 7}I˹='grn=1ɶY̨SJ3$MpHvb # &$0V\ "qMI*d ) 6|g^dbhɐ #X7kSB+g/%e *{l$+!݇4zpx켅$CpЙLnDRН{!=^{D8tqW9ˆz P 2aѽ%) __Џ JQu>|/Ȥʨ"RPJ5-j jX#J ܊"3"B&jlcmpkZJ3DNƶ0וmd>)KwHODza *5E N"ѡ'("<"b`0׹ЅRE0#ąUcv(.Fl{ߕw&s-Yx#76@̶IfN`A &m =q@>')D+mmFty3:E&qz)1XȏnEn|&Jgc>v!"Aj k9ov:/g=Yퟪ3DTaъt/' >O;n&i̟,jIvD.y5ϖaUU*dM&)JRV;5'_>(Ra5vnЪs$S -U9e29dnO}ξjCX5Sš)ҏ_;zZхbqi~R0ɇ)UNڏ&`h\ae\"?T! 4˹tj3[("IeQ]cU-kXlbEP%,Pg yIxwiR~]~7G콆;@toq4ԅTf\\=V6ƃ96 Gk@L")M<ӄ7i SI4fM!W) Wwv9e4˕fj$xȠ`(m(VWљƞ 9B@YaI0eB'BCbkUS#`S f0Rֶj5jpy0r[m8?żحy͇d)_.d{t]EX,Bt4"ȞE;y6@sھzo'SW ?}J%)J^*/(S )0k:3oDJ6337UV6E@I( C+nj|Q3^po=XKx+"mlb^ut5;4lbtЙJM K&n|JYg,4|&%$FE7kY8r3GzFùoÃn-C.(ۓ%)cQ.Ţ38+{v"=(;7;=KqR^vuQ3kAI䥝!!n#*PtwE, A-$@) LUf\[3a0Lxq<v;qb52cjֽ T!' cؑۻxRX Y524Fv?lb)  L 8'~5L0kjkVq3 8[mFQh~|??Cdљ"άS^æ^p1]l2&!n׌ce$61iY)E2X $ӴK$#p "#23L&9q\f6bL:it&Tf"" hY 8F 3ċ 'i<p=d.jP#Bd4I&ԩB1[mT*)&Q^Sӣ(h"ygvT~G]SXRi,ac od m3 ESd'X3 F0Ͱ$d,K ")Df[)f2B,QEI$DU@>"|Bf>u:\:o9 BΙd`S3:na֯Sh:K*]Kbd'>v̬]>>8p0aYjژ)I#"L4aF4aKꯡ!Pt0W:8ac 5XN0~"oj1qaчt?Ʉju5s3gs ]7'$ N=|Q#^TY(wSd2N9EѝJ`DvEb9S$ij-z0k5gW-۝˷;=%o;]p^/aՅh,+}]}a˭ܰ!ص0c%#l!)2q&$=i S 8u7{X1-O[ *Zm1iL4mp0S`5`3B[k(0CvȠAϋ'LV!d,RMܝH&Ѿߺ`A*Ա-d<%! $=hc;&DJ" FӜSorz *uاv iS!B0YeJ) INGRHd#IymuoUhj`LgMkq`3!$'H~<<:SI8JJS^k,RsZF=xȦ'v0?R\ l\1;=HxfKv>ZAzZqݻivjOq3TI;fdC:=omXYIwRdsNmͱFܦ 0zqI)`0`9̦a@ـX>j5$*_Oˑ$8(gEl~n2fAJjQOz(llڶWGGͷ⒎tq&L0$\ s.8hpR4,gef8tĞ:TNɴܱl+zlͳ3k4WA0* \ժwp`1,katA„YdcjfƓx8 };zhV -Ռ :z/ ViۄݡwHDŨ9hYp) +e& &daϜR^聄vLY 5?$`s#xT[X5e=j&K57 ٻbh_x4C4BTI3!u\$X⫽oRc(e"°10фw+Em06\dh%&&Q̘ =v}@S Э@"f4e!?WEMw% A54MG5TC~Gwb~ПKb&LKͦ-*U6uQJ^+ ֫J@R$3SeQ%))3UIOkUy9'I$s$5GF.j<'~0ɓ^IkqS ;,YB>v`⠑4"\+o㒪""xjY\'=f2z_BzFcYOdꙎ3 /&# b$T&~ih h0?(eᴱ94CכbLpu?pfy\V:)ANjPN=1TLz{ŴԚ29=0u K7"iYVX*#2YfIUU{/ CCjKt=]XT4a dѥ7Җ*ȦL\wQVzBͰCcВ-A-OlBPHi"m]dBjE*)bUd +,qmdxhH#>.kbT\?"jذ w;A2,D?'{CiYb**TU%Fz^Uq/ApnwǢrJ&.) j$6l8d~=(SȒ#ldgit`4,]B%$,v P{K%$dOp*VնINVhM"0$~H*a c0! cMpܠՍF]Hi޶ WtIY,JL6/MAWƧ]zz$tMvr@Q!usŚBL)C]ukchc[:#e #[*~ "qNc݀##D9>t>a. ;(ppy;,YjEEމčtÿ Ne2!D3[o{1=dif4q5I&Um[Yb;\, H. ĥ Jxoy<:Wk&&&ߟB3DK:h)46Mf"~_u]kuvL6AVۤ_\NnS0󙿏N[&kbSW1)hVY5COxJT(:oZ}$!]+m1sKThWcg& DI Ir$"!U"CT7l,0&+G#W&=5Զy$|i[Np= ʧԝYS j8gŋy瘒o/ ؼ}b|ye|&DyL!3ٰ]uVW< KXyN9ZRJɊU? xGo"c]5%jάW5 t:,NS6 R ? J1mX8ΙLHNҦ!e3(+̱ahZ[Ad 'W αEJwʳyLwY vsOY8[OOTC?{GOp k(5QE5]-gLOnOjF\i#{܍#6lz|r۞x o ޜ6xnѠo>XnGDqo0}/>bnC 9E\0#P=(J>IC{7MӌΜV3شOrdl(_J3b$C,D%XdlKr1% lhs\߲ AjOgO:?` v64XZWc8I7<'EDKHy~-ap˰]3lu^d;F8LS$@;sf}7fJdw_ %4Z ADD9vv40UWhvɚΛ8!Icre?C03$Hh8Ld4A )0%",!LWIܾgI*@8MoNJ*6Sa-&8~"f,Zz׌?c~5!HL; /3a.$l(I70k&v|$tqYѥC0oŚ Ns;nTܚχ;D;)~Pޏf$ܵ=sQE_%9NDfbپGe1G;MGon/zFmBXsA*Std9|(f6ٰ 5Й xLvIExT>jRy4)&My`S"=WHg߅ ` {`#vhAIӿ0xc"vc0s;(tD˝I _MY,LVۆ_[u4δ^Pp)X7VU[ent4‘a6ݿKJJ$Hodțrc:NI -N%7`mӳM*:LH]:=<@YRDS4wP9D!g2vnZ716 $,>+is?z547IF03}Y8\|SG6p2{C c#8e@&36-K9! P3>VUN N)NVƈė-6Q6"8Tq{Ba,x_HKvotש5Ji,DS$11|GXb:tQɐ:ॻS hd|n[CL6Z9;wcl ]!$mdC5R1&R2'BƤEmT6s!D4C:Bf#xPAU0"6Oog$L;SxavnОd#va؃̳nˆ_߫I !UflQ &*8 36}u?>a 65L|ij%ڤޓAk{H^&QՎu,3 EI-Ddd]8h-, a)ꪭ]gb&6Ƭoƍ֎9EX֌mtuZ(53}SቴHIǞJp͕Q˵Udܰ 3%@8< A]`ɼCC7[8AiXFCfP|1l9*Y 0 ! E8L0!R8hή0[\,x (vLŕ `IUŋb9j#S7c-P};L51zM vkUⓟ w4#$D0BP`R 0UVDN"iCQLCѥ#lT II44*ac9ۭ6I6gtA8ԴYǾߨcG'qsmcV9>@$|;;uqRWN4#i 2*$wonDָMs'a8-[J_ci+聴CghNIf0Q5J1*c j׵fUTtӛSXbY!Y:ՎbcO1*d̪ mrkr?JݑefẌQܺTrh=)gNSqOQG" > 46.2ƃd8iCK;y۾c @?XTD RT( J((∢ID4`${"N=nj-ldR3S~RĔP#-ek)$|%0YS2BPuv ШOȌ\ wM=t4Ոl C{8 $D8S+`B``zj6I1 d#)b> Y@J$ rutԆamnޙTӴ$^.]Ry әaO76Z!6EлeԅB*͡♩GL-VZZ1"3 DFQ1k΋y7>Rд2N0]L\n31P¾ByQb榛ojS- , )Q<|uD1Lc7vΞ &w}IKjf+2m|ґ؇Zjpa)4J¨]UԒYlDO?ᙟ0aa$M8YAŝ]ȮWKb;D))$C,?va?S#Ʉ ʜ^lܸ&az v2oֶ_ ܥcv*A`Pv*5۱To|Hώ Âe7BJᙚS;x@"x3%68`\e~3dɧUXpQDoԪT {0ZVeKQ,c ]Hn7=)Iʏ7,a9s9L*NJX0R&f q-aUe CɊR9eh⟄dykjRM!ifmdA$Çmw1=iAaTneGQEM>4{_ i.X>\鑇6ңBTLK>E`&(J0UQ`WՖ@[[.8R.#"4S/U'Iy m.xj9:H8p#hT4;1ӳ%]Gr݁Rс%q7y2CG뱯NTÀ\:h,XЗ3,9}4:RU6OLV] bjLL'>sssllQ_Zvo8b4QE?Ǔ锣rk˂r0y2I&x7ڵiUa nK ]ogV6T[ ;!P`~Q#C7$i +^aj8dUKlfn J*jQ'&T^x?t?}P')I\n4-b^ f= 桩\RXGitQqA,X%DJ,E,*˗LMyLygj/(tIOFiqPd#?m#Ւ6lRj DCҰܣR\1NkMRƑZeSY<[?Ass] |IF^X-ÇYU.Pfcÿd_,c[eXK%;q'$6dMyc kN9>AO?0(j  &9q/b0Hq2i0o&πn0lpY,E0[%ZV6 xjQ5Uc){O=E6Pc E>JynA)#h0>pjgQ{1g}=H? TN{G'¥*mHY8sx<xǫ|% y0X65U#aڙ '"2Cӝ9ȼ_׬?Aڲ Up.^4Ԗ;i@o;SIi6)+f$aELr㣐WRѣ̽F>?xt*TV2OiyFI'dv,I5IZ7LH=?: O'{ KR%L%Te$?=z%h4~+$pR>p$wgM4EzzDveWfLTԴfI%UO#|o&!5{ag7&ٹ܆(I=˪qrʿANRD_dO爛<ԚTb1_x;Ztڶa/KSeIfBr ll1k c:-6L,C ~Ɇ14c LtaDKTU͈4Җ,!0ba Ս]uϟp5lߘ;QsN)4R=$sVbX~,3FrUJinM̟6sI"9TYy',\m[2a!^u:cٚlX¯ȫyy~4p4Ŗ*i29&݌i a *;}JI%7U>5dTJB)Bz!R ?zv10x:xD?a+tەMe|f ,/dsyqUuЩ4c cA8'( dݡ B @IeAQ51)S"s:p%,df ON ́*gIJJRop PӀ̔0YCt6ٶ&tf3݌sBAfq 0٣w(H? ;;rR[xi]SAliUzUjSJ^dlaJFR/ϰ|~W֏`=eĞL~?8vxT}9O ^j}7}s*>~>OT ̉ OK;_}7ΔG, !`hp<\sH?0`CD(x5ޏ`~J}DuI $MSG{N2XSnYp-SXS`t`Ύ臗F'  י )MVd6&_lWg70dtq̒!uR4b F]P? ~cӧX{d73Ԙmn&0bjs#gSXqg q#U #9fق܈D)" )>pYI˙g42rYnDs[:V]q艘*TD`Iy;pRPBPm! mA C R?5 R:]ӔPV]MI®o9wAR;vp5khYV ؍e+RHiIA"Ll$ZAZެJrwn`)w.t'ZHPa]2d˧[4LjPa'>~9?W!f٪ u\Boӎqo)有hIM?nc3B[Md[%r /f}r⺃yG8/~C\k``S%Ya yQ?S bSܖt=*_ٗJp,I~Zض_;_[<#wj\£I}b4(3X7lS}!՝r'E릜.E,ѝf&YԃǏD248i1.1,jLUꎌ̙z3mM7q16YleM4ZKUlO E t5 Xjbd0]-M0ʋS#C [-֦,4Z+ˋU 'ãu5IJ`Hr7dH㟳=qeS֥`e[mDF-J ekk&Lhi)I]U&$$$ 2l֓U.MI,ҚSfQ3sq4 ʗfuԺݙ۹:tAteݻ˝29sqMvĻD7fp;JIBvNKJ3mj櫷nݙ72Y+TrvR[Lh]-4ɌJ5RY,EF; \]t3sdw ܦ_kdɺpNs8O{WX>ne2S,O#YɄT稷AE,ZZQM/1Fpʼn u$cy][(M7rv{ 3OYg,dߤ#n?)df0n7?fTj9# ߇~'D)Lz#чF;Q_P~ TGPHR #~7K:9fy9c8V\JrO 4 ӋaT2lNdug@hzc\bj'8vN 7"kMYL&pͰ#<ޘXzRj#˙ fFaGO|I 6CXՒ@`fwe28RHϰ; "% B$M H۰$ѡcD,W!e2 19}VqqSSsve CpMR#! R)L ٙOh|izt9o>8BJ 31bXbYlTES̎AFHk$ 8ud`Y!Myw#KA)QLb%F1^JLۮjK5)6fSPٶRHM:qDL$XOOG' yj$mZL`JiAU !T[LN791A?I2"p{10ʟ$9b:i4O:SGÐS(8o6?<N:͂؁3$@pMgEF]4ODw _@s)[UoxםM)6 J$Lnse;I6OO?{ӷ$(F`b;!wz{ԟ}5g׻~+h4yoN'xҥpӣRdKRLK1,K*y:â>B`3#69#9ä7!Y(> ̣c9IjjBBOAa),}{jnm~xҕ?HvD7 )/2щQH܏~x3L ړMrħ 01$~J70ȥ>ë!(ғ1ɔV,3:֜G8t^s0csFOlJRRb4K%dcK3QY,-,-saij*po9ٶNd9sJ5VKET[nd)8 G/4JTHB`g;y3ra?J%獰^Ry4JR2q]iι-'?mF?{Cڏ$k jQ䓒"7)AG @`ӱo0~pFsGzG/2:S辚ڟ*/ҵlP\"fOP6RzSYdxO<՞A_~OI#0I>訃9A%$D#LsSrTU#񎀎bf&22A>p`2'?vǿH}tc@98'8Mܜ)JdSE&E)JRf)L>yY;i>18ӭgJ?LzRDIS)7RVe7ZՕud@Ɂ AP!N b|1Fsǥt[yVH2`n aR_n,gXd4. ;V&&W> 2OTbp<@Opd88:N &覉0RJJFC/r4l١ -4`d`ݛ1JL 3 SEF& ; .6plFh FƆaa`phe٠hh8::0Æ sgqhAJUT>?ƟlYٛǒ},ЪЖ_2c&͛5HB7 H~*ڿ6Ybt:PR b~'#5{vZnOEQH)JRY,K%*RQOzΞ|a'8T3-5wt͌CI;ubBMuDd!X$dU) 9ûKәa+*2dKN(O?e9 N!öf+!ٌN,$'f5;!&s*TQL)h5 QILNp$`Rߧ=$V#~Fɾ(aQǎGz4'↩r%ʰ,Ͱ |oJpE%3NI6nIB0SFS)E) 9]9𪥫j!f0E0j&Y-VK0e5wBN\$&t~ =ݏzD7BqON(=#ǭp`rf JJE#Uѿ9?oh#tf8RMI7URSBCwDwq A?b0CύmI2S)SwzǛUu|>Lٮ6!DD'^Nۓ'ڌø4C@Odp8hos ([y>#*jЭݓu$ ( Ϛ7J}ރoww+&L4C(~Lg_Y k4B40af}f= ?8t=!'Ox_%eœxbd 9QВZg'02f%2,( M*0R;rH.ȧO?nr1Y>9,9S1܍xE9iIr#h:s7τd3:QQ՝ҌFafI!#937iƮz9dAΊgr-k'OSΪ{v񖆣QSLdGUm)3UV{k%@&kIH`if XO&-K}J>,S?#;Smڵ]ՠ&1}`3, ˉ>Af$}",{+iU# +BհKVX"W&["TJbc3 deUyL'O|NSsT8UUJUJy雳2d+IUaӘhttۣN8qņ6Ӧ4p S p) %$ 򪴔24 fvvr *faZS3$R\T[=>?ޭZK4˓ll66J@#f;VH[ Dx4N`⠀S C#<4sr cޜ!Jg'<7MSpNq=sL5),悥I͔9q3f2\c4OPDfYsTiA w/nKIyEH!S|?=[o.UɕZd?D}T]xqިg4'Ar'}`k%d#!fdc \ώ;d0!kU)J{Að8Gg'OLҚLǨ(rPprnLh3rNJp't/8I\8U6!K)!ث cLF3$}@50J 5N`x(O0g>َ>~叠DuxNm8cH6>}1Oe[94EAÝuuHЪ dbg6t4_&a0iY K X̛a\vo MRI;QFQHߣ\ߛߦwwa*lJݟ8G) (\#Bb< mq%1G<-mzݻލ/JlDOD= 8`D#m$9sџLA 79'pr~lF-Ģ0Դr=|aBIy^kj((-*i''''Ô&ke,yc$V짪fG9b㜱 Õ(TߤI0IXyC}Ó(4MhQ#О3Fw6Nx>{fp̓H+_Ix8I=[>L:iGՙi<ݞ|k7S48gUT!NB{_Bi_?)W˙3,֪9Rcomi{իYdl0V`ۜeJRSN`Շ.f0w 8.LDI)9Q6N ˜ba,S(d0%c),f%#ѫQ>y_nC>GRC.8vA}TO d}~U7z~x9Rf;8}CH2>jJz%hxyr:`ޠgInbI,i民K$L9a-_QJ?VUP7 /IhhwV*=Rlf9)K:ESU%ͶUXj(ljNzSc7989ǰcb|UUUN߃:"",F+ Jעω\d΀g`i2;|:2{~a9ϻٟ{s39%݋8m,QgHr댲2,U` x)G4q\`Mh3r< Q$#V6HūδdR23АLV!h[hSf!Sxi < MƥN<1;LpI_O?,!GG^G%J>0} h4n[ qCQx*%B(^ֵZ)PhwuO6*Rk;XV,EYݜDHYTՈ֨rb`1Fa33rƆ4)Li8 vnJS0)G$} 9#44?pmMa0K,1}=۫sn݁OS{7z鈳ЉX5TK}fsYśZgN=کэA)i*۠MFZ>C[iVյw-+u$e B`k"'> Q}Dh(zLRi5MZ;_W1OG^>? 쑒r$!=ɭ5IfS&cU:NygM72;G0&q몾YF`A,m"gt]s e}ēOR6K&pSW^6YHف=l(D)D3'tT3jv*bAyjk\Sʗ/6Œa8$09qxq5fL#zH5LN 8?&BToɘd(N*}t5RU_7|+|ԓ}$I,ﭶg^1GYx^vISRVܭPYL%(ȘK%Si&6M2#RFZW:pf# <19Ra=QT BvS7sV]8g̲0|XU2szj7UDymiqqq=0NiO%6 n$g*oH7mI3[i|H |LsI` fry"D@P%6J,Nk3Y҇x!bazgI䍲jMdbI$(e,w!_[_P# O2NctZrLs\{ɞa<4viO:;F l[-DcWjKW*g/b',UXŖ,q%O8dLz3qڇ.*D壗E>4v郞u4R7鑠S9ƉX*"ugB 5LK,e-WO-RC*dx .OE9h03 N&-r<2=f#;4ۛg?45SY pQ114 0Gj5]xyIGPri3"<< sfs #P][5)ϻq;xx?HI#'oI&qR& As&Ȑl7*3="TuNQDAchcIw{YJ3)oAtmGqGjOΖYe^=fmga>ߧGh(nTg a5ߒN~ODqÐ;齞^xڏ'y|6 >Ԟjd{CȚ#h0d18i͜aOrڶA#:˖]fet1r̹˴)$`9˜Ξ5:ՏYd?0ÆYSa9w2}!̎ddd`Eu@l0lMd. )49eA6U,Ӳw-(WTR*FKt\tqt`l&'yŪ36۔SZJ0N`3 &f-x{5[u4I)Frk RQ3&ܦaSR`dfXp lwhw64%IRL4 9@B$vׂ"ޞ`BAQPEj EX(AX֊(ĦJ7^7c ?rbx8Xk8g 2nքGڜ#M"dSpSx0|cP\ݏG 6u‘<'/IB~/U/Q5d'bO$z!<)ԲȘT0S9 A"{<@ |GNc3Mou G}Hӟğtd \#Іsֵm8h[mJ{n뜝!rvL$?=_}? r5ɂM(4')$ ſr α$jn'YfLYc1t)b )MqV8{mO0}|ᑼ7!R'*SwsȥJS nTE(Q*R1Ƚ+00#\(ffe&&U.qp8& )a'LpRFCo<,siL{8mf+ Vڵob4x)C_zMcVw$u<9 r>a0Pnnond۷IC _}RpvG#zC;(?8}ȟr?"6' 겸˞Q?Q2?jNMYŒљCbhK46&Revܚ'ݔ5(2Y4Bsێ͞n+AR_VB-hDH_J<`μIN)J| HYڏKmN `֞jUfV0Őȇ0jR j:1NtcsFH]imJYXSCTнe:)gwaE8JnV .smHr0Bq4Hcd}2U\`7qӻ]p)`"1bA\PSՀ<6O!1 㿑 f7 V"RRRTvt?pߛEUUU*U)Q0*Nu0Ody=Ը4Uy3ōQ߄q S5qcXp&,ҵFlI2S2y>UzRiƺl20d1qS8f~1ues`lqG`:510`WM Tݳx3'tDGڈ! "tO^t b$H2IF9O~pq(_A od~SdZSR*e&_y^k֛oì33Df 2VRk,6YMMQieS߽Z626iK/,QRliM&i&Lf[ixĢ dDg'& 6J%ԍ+6[1e<MqTUU*)R*S"$TQJac8:Xb|aFKvlٵLF0ml{q---:-KfM0ŋblw8ph:6hуF-& )*h6bbËÅцeB0lыiàw;hإ7fZȞRpf5уmYjI*1, A$(e03̤{38G8Êu'ěc4+ vِe 3@w:[mme"~!>}k>T} xD1M+X~qDSiufm%7(cF nG)nCOXsI!ړ=L cVl>}z+kJ%T 2zSsO 1Ol<^fTb~Ztߔy'Kv"WWժ[LIleܕsf $TYS#,oaNHBlys! &ԒYc$OC9&VViy\cSR5LJj4̪cP4JgrzCf~G"nۉtߊ7qjߚ9kll;Y/d)P22PP=VIl rS!h*hɪIJ~E7F 8&4JHٷd0%JcoN M#P8z\5kR{0&tݝ+z%erаc1 CO4O Ȧ :X5'# icO8FFERbcsU$Y2ŏLJ?bZaH9/1/s>)KW,Ij)O0s'2n|nQ5O44Nf[WMf9k*-Xӆ=QI$rTg:9*Z[mRhQ4<3s>s;zy'_(O:y6%'̦xFJqi2J=qsCЊQ7 \< :j;m 7&৲7$܊Qwa VhS  ,P`j.P㤇'FWZMrs! [o{~쒽psffcZF_6~RZ??_O%8 t/4~?VK "fYb4|tv]]UCJhҦ$e<_QKuUJ]5mFTRT:F'2`jC["1-Y)K9*?ܡC=&xαbؿff䘓Po 2ڢ ֟y@~# ȈRf̴GL0A0լ4iy/%众_/璦 cT0}pOLy $*(1c y/%}e'Y~1SobEөXT ?xif9bRtdVf: ,10{aG`LK}[ C +pCğҝۿU~RUe,wY7ff3Yٻvfhζ0Sl3B 59Ǡ&S,`2GߦC(RNxsG8r~ @4>Jd~@wh5CT6TA! ':r͇6lYzȟ)7S8t9cbBMV$ '&&?P{ qr 66|˲=5'ݗ͜WEիvbջ'bƹM񸍡dS27IͼΎ;!99G43XO= 7f&2Of8#PS* g9ssPO%&&Õn${3m%9: C;C1Ssҹ;wכ9ENlϪ=7 Up\6'^r'PSH_X4"~`s_n~YFTQ &'04d&z9t͐G*hL5LJ'H$p}{5U6ƕbҾl¹~h5|EMɧ,lΧ dؚ FL'd5[=}VXLnNa3uAdO ƃD(# qW)0w!a,L8 UG~*F[FLtį:4QFؚIؕ r P~,,\\dҞx3W-3½BP~ˍ"YR&07FM3wOCS_"r5 QQKlEMAd~!8BzrybyRf'ړY5ә6<ߦL$iOgTgl5L_*L: H,!?pf?S ɄuFqʖQe;!H֖-'l4qa~HRbTXTxsC)DzQG(ALdWY&ɽa6Fǔ6~Dp2c&LX. |I?\C'B֦9IC7G&a0>Le*eev7ftEL0̏pB #XRzfL؝;,04=NȵmlI>8boLxϚJpEl0Mha #yxG)3LL&q(vLIlTOc1HT;^u'<!|N*24pH늓 δuɅI#PN;W +8*Y,q٧iJcZIJQ*OR0(|FtH?scΌs/fg#rCn=+|'?]zc ?wýi̻w9iOD壣PO}3-6@YB셍pC8<?t&XYJk۝m#N=o? t#ϛٚj AO;?Ge7Sh ?qC]V2_!~!fVgWWڏv_&}#9Fnm>=,dOh8fxS:bnI ΰו1<7VYWɜ_jp;߄ _z.k}(`  <)JhK~epS~oµ(~9l>Bu7_9Q4 Aiz#釧ޑ|3to<_C)YVct#ŏ?P>}A6G%9;N{3=1 dya;A8ꇦ9Qs90?yOzW>n~"?sc>$$jxqO*}MTƝeN̜c3Nm;H/N͎~DsDxYV`~ј3 dLv9z~Ok!Oa!}E /\H_ lgpW@a~#sp'0L&]E߾iI''C<}8ӧYΞ{72v㽠Um6M=d u~C[q٪)N?8q?v? ;63'8s)X|aƓ;#M=Q.K߼Ǡ)=L~Q#Rh$gF9L?>?SG7Ƹo,2s8HON `0?4jmG[Aq%#dFe n :R?u:Aԏ|vgx;4h;A$z9ese[gMdaN|Y󈜹Ɣey:Slc1 =a›tmxAΚkGOwɝ;NΌӯ< ;3l#ŎPSv<*`-;a5g6QƟ: ᦓCՕMB {VEK u0Rim?~/[{@ABlwY49PmКtUT)Dm7$h/xrx/AQ,OUԔ\`ֳ6)p5UJo֥-ߦH ' >Y֦vl{xg=̞$?fgLӦ>֞'n0y&GXlrO=GNǹ>ǒ7'='==a'N;C?u7蟒~'Xsq;➸;cٛ,NsV|ѝlx쎢t3ܞg>~՝)>zϤ}I#Gƞ{)A->~q<ی'6j6cƽ, Cē+N=L|!ܘSdyvg2o6rVS>4xwI팗2wBhM/uhӺvFZQL?dX$5BB䆥`?IXj]F5jBVI#єyGҗ:YVRT)cHUUeeUAݯ JK eaB/W]U&ҰuecM]AqN H*01ߵ)h=DmR6۶To!̖ Jl6@QKܠlZ>Aj9p ;4*o]6Kdf5-kf,O- FLL8ɷdl5q [3bjg^VLU ʬ_ʱ(TjS]R* ʪ FT»~ILx3xi~?dbdd/Ž2ҟA=qߎ >9ntߜf:$'`~r&#1ݓ2H8#ܘG=Ry'=8ΔMg<=|Z;1fn{[Cz؟o@1DtAeuCB'%K1#9CP5 Gib hM8 _K jCN$sý Ձ0j `O)t=dž(ul?Dx' t03,hx?T5F:/*նk[ N= Κּ?~}xz~27r-ySH'~~0Þ;pc(əJZu&C͏|3|{|?sќ5G쟪9OuZ>cdm,'M/@OvcTšNtcP;YG''J?yG;xފ{QO? ~l0<[w0qǨ8C}#t>('vSLBV&S,O>_}u(@\wVkUx?#v8hhI3nRL儮S].ɮׄDD.x哜:wC9G?0Gh~XGS2<(?u| yX>?T xqGJ}1Gǝd@QG.p\>(7# Q?twQN\}OQGzs'=rwnVU'4Ox:qصJ2}şA=qp{Rx%}~>J|v)C4ʲZyg?>dt?,,&ae+˹\mJ,\C֜!<99w^=C-sqq·v*^paǢzJpG>U:RNx9PO`N;|)GxtguG=`:I<ާ[b'Rrys%tucŎUx;1ހCDžvC-b'|xSG?hUS̏=7`b<>lyqF:!4'{DQB>lEShOOˋ:< <?nG}"QLaE3 ّٜTSȔટx2xD:cOzC diXDZߞtg>ucCGǸ=0 ՜ܒwMټOT=I39;y9$T922%;S&T`P*R*`T@6Frh=QBy#9ose)0?lwGΔ'S08uMYQ꼾1~wsz,ͨ,s=nGF|1SyuoȞ%??=a*a2O8'9ɍcE)>A)03c'yߌ°ۏhMDqp䝚~o%,Z§3 J;:>Zz1'c~iO~{|c❉0?.wSNp's18_=\g>aGk?z{C?Μ#<ht=(}'z0z~~,ȳÝӥ:4S?GB}OJ{3՝D>uٝ;#δ䟍? RzsT/OPx<2Ιͪ{wĪM_M=i~_-f>Ѿ[Q~nd*}I~|؞wo Z+=!?P&N>3lzVߞʣ:t'JתҭɚI˞70Gޏ=؝85H'Oo\4 `xhCղcpW}] qbc7sߓ5诔sgt̔'jS4\~gDlh{D0nMAG{S'pnM{㟤 se냧#ևg,~{c|6D߹F}Oыۚ0 ' LFQFh)qL˜+Qkv@|90 v~g0{b" a'GEJN<1ГLxr\\UņǸqgų nnupt:3GBT(W1c63/mK?MdyD_ qYeYm=㻟C !o_6ěj!3y`h߰vj'J#aEV\`5`4gG8e|v9ޔlXS󱋌~{¤ά0c#)>s'zҧ>a?S$<|'`3L'8u 푤1d*'*̨)GX i'*eUGtpPQsoG,!xx,o^tё>0tcRLþ2Nvfwcj}pgu8q[4@*YK/KׯTme!v帷:MLI}1Lz*S94<@Y+}$1ua' 鐞|m~5qF)`HK/-y_t˚_.t\ kQ)""#rO d'u7z&%dv'49߇OḍdAk_`y;`2:iVWXž]:Y[%֮oe.9#vnxg5$<:HOVG"H(GS=Mzͯ="Y&sIb扯l&2kr  9rl"?Ai*PBb+pBf,%ūھ|>z /[H1u ^ 1 B]Bٲ;VnYȷ}K,*RfydždZT3Xؙ?4fW*wG(Gm%MI%ܯl:Jis8F|~2;s+Yc^nvxWvc<+2Wd7nSr:9D&bGCXxq6'37RjsSbV 9ú;x ;rOS9ffα7\^_KY49D`K*t ;6:N{>mq-[~-Ÿo'q+9GٍCwW=qP+h߬GK(d6!X +Q㆛RRk" 0Q9bUYDDKn֫(a+u٬iE>v @β|^_dMI|yH(IU:e59 ϑF};9#:twODL3qN1XV״f̠'*g9}\~O,9i0d~ŜB,, 17JbV Nf2L%YgY13=(r~(ǘdG i䦁5Z;Sc7;߫/i4*3%C& Mt讫] stzqhJ;Ч{ 9 ʞwsG(7vRRryAГ ̜q0<8 lpɴu Mq&'n8c`'4؇BMQq9J5TU=(S1. Nf;HqFFc~}t «汪oc7$ 㕝j9HsTj zNOnnO44虜ވ RtdS`qNLØttԳ~Ji&mOz͊a)n*#88ÚA!3؛`DzM1,< `)kdlcp@܍P:SdnRD`͸Fa3C`&Yl߆0=tw/YCuf]eGzD1lΙy"32㳲..ewG6t[mIxmKeTI! yimNW-m, LSAM[ann7oFh +P*rIÜC`Vrk% iF M",*#C)ʳ#f(SHdLՌPیP3 M;`@Xҟ+J9(݇ VVnsn2 cYbS:pl&)rl--rkhTq>97c0Q&͸Ɯb0ʍb27:-YJgY9 cHS`t#&s&8GD6B[\p(:0O)JsCL Ǔwrܧ&?))ΌS\9j⇉)G&:"nӒ (Cp(Z tB{ 3Jq&%)5&skܣӧFq MZ2NRӝL [r(H]92;g}˫37f{ḛ5ޏm‘;֞}nEV@fyD$&x pe >pT~6$5hV.b NA"dZເ0lN`=G s5ޜ; ;i;(wQpZLwRq1<˜HnG(v=cF:}ARdiLsD0;?IbJbPX3CrnڐN}jđ+;ILh4pw#C[-%G f!P::>*I%@=ګFY0Ɋ,r*ݸzSVw#<_?>\2b_d YYea@t㜞xt qY0U46Q}|ƗmDɹ՚|lIuF|~uSf85ĸ}GrK@N[̭WOiحYt}?km_p\ Jm~x=}?M4\ MEG~@CEN"L05{-Z]7þ1x':WTG=4x駕4My5 Ӱ!)lTZu{QNP]"R!w'rc.IY0oe풔N}S|15At31 gVb"]'$kocd 1x+n?@wtEf(H'XgXcEP1s>y` VnsӸFCu%;?7ݹ/g}9cti΍‡*->u12dYF8$xK gj4mczlpC=j9IL[qScrx:{sxt-i0Ū L7){y5%JD\uged[\V}qO \W &>a嗂GZF/Ȣ?L@k{jk"Pr{h=Y]fpn{Wy>}*#`付1#3HELfӔ۞xdϜSz$Mh/p V6mOO 4)(OPLL@9|@va; $VeVL\,IUers[s:Cqdɓ 0ɲ|N 3@ (\;=5ި|Pw'%3## Н٘#xmb7Gj߸Į5p'4rnL2n25[*SCX=ѾNT4qYdq:8%9pqMЛOϐ&,@r`=<}N,=oeҔMsw!m)-5qR%8(<x|SܐJa#ל9;;qdγTVvLϼ B,fb48wlPC{/ߦ[e%C^\}O:Ϸ jHw¼3+X n17ۮ囷Jw %feUq &΅9'~}clowܱA3TB#&H&X@S p߰iO~("µ^UNt|n⼶3178u^6HN(ڒurHuCđ~ ]_@}aLWpIDDI]#bdVS,eUV;mJx(=K?E=y;%8ZYVU ڪlGv fLѠIzoޔ *IY6QٲLY ЁPTDRQbƊZLcb(% &fc&RZUUUw=<tIG<g$g }T$]&W}5ș}vP_^>ְ[q ~/ &M0@ꇛ4V_6 %Q2ģJc$НIoC#Stir]"sLE5C\ؘUH锪{ToMMR A0AM~AD>SP*W152yJʽ8CѧFt)m՝J(ރP0*t$eo'<4na>:s0#LR?S38%;YK )ͧK(tQAee9T1(j!;F?E'F4=فJ;竟̧֟?rT5gE4s%25L!R;WBR)J)J()J(IJRR(RR2(uU=,K56fv6'ZC:XPȤ>!PdTI>z̵V*2K%&1jdH"fB$ ɳfe!$I),%M~7 'I;9xIl絓+oOA?|4F/ZҰ"LVefaq3G=GvR~(|G8ӜNpx:t#CvNjIA0#.Nk3ank&&Lie\?T?#0SϞ{f)J&76:OrrHM\*d3*alg&Da'7>a h2Mज़Bv11uݙeJLf|L$d3R5M'qbr$o82űjePOTK4& hUa-,5)2C#B^F0ihA0 c&nMI"iK36L%5 *FR4Y: DL”_-p7%. x@bןR3Ϻؐˇg|6V*g#ʑS ªRSJ=ith*`{:G0ELHRR1t wBǚfWqqڶ+1R/jRPovͻkLRAHdf*BB` (P@2D8 IE)IE)E(F "&F&`S9pYZX:\[4hݳwG Öe0كJR S"F h0dK3`R$h)eRQL)d)ehȣ"%`ӁB 1D#"( 0RȲY]5hUVGsG+VѳutѣC-ZYL2YuhCkgǏop9ݦ`(_-~׿`@ْF(($ _ƯƮ<Bd<@'ٌ0'="w%~v$BNC?aR| $EǶq;auN$h'+;[!Q?sW aVM&rwL;)^H6S=;'DdC Úy6ַGHCv`3H z~|u(UUBDJ|fBM1':&63\?{;ÓI'J3=Rq8G  t4Cچț;©6͓݅9 m)W?4Cas1`^ir+av/KݷJ(;uO+kR*? w<~?̛G߽)GdkQ`ag,|ok ȥ8haeYeK)m2W%' a~8Q㽜X83(f3qcYInɿ 'NdP0PvJWypuVR:ET XV%@!iMY夐n5ݩU蒾IPy7,)!RnSTSz7cxLM ٴ6&16s>"z^m-ΩG~I}'|}{"-AE;p1/9 y)""D&|a9Hjk4]9Cvnwa&uɏ2O?$Bdv`~0AHs3OOkM*d`S&7xoJ89އ1STº|ij\/{ڴ*jpAA:ȶ.33V)eȻ$N#w^s2:3 41DAC0#$Qod6fQfc#+)N)ݓrg|Mцi#+nH팒E pA OtmkF؃E-sÎ7aϯ?*sÞ\wS:׮b#γf,zۡ+^ڤ#);Z 0ȟ%~I'? zqGOsm=cۃ͕ڽG'TߓHz~)$1B|T&ܞe=d3[w&$%k}8RvX ͯ7V4xsC8>IC PRk3&nMѾ*+& 1߲ffdΞjHך(5Ӟ Ude9ŝXr\n95<0䜡8S7^!w%ޣ&ees#9') gyosmdF0ݱadwp{C>qRGeյőkJ]hhVRݑǡ^F-L%D $HY'C[[]،aj.KKnU,Uqc,I}l=`e?w~M2;>)'c2l#'>M;b^֛tJ$3̚έuHO4L9~^_OPM#͏8˛C'9tbNYjsFF C'D3p[DqDC +#Oƛ񊱺7p{l`o2n M&RI&Mg4|F&Okë5䪽ФԔK|tfܚ3ixn4͒OO>KjV+%ȿX$imS8!S#"Iֻv'`F~{Ǟ\zC Is37INm#3&3OH3 tg' :=9GHO`Z͙pyTˇn|19s7F'93jp1Ndw!h5sm8 J'=GR{+ KKLd±VAOՙNf=]k鲫,h6l#]sJf}țɒ[yc>|EUTUs@O:|; `,eɑ<,5 &RLĉd:̚MtI,ȒI~ RIII-'KK+zR*_4k}3fus[VyPo[BwL#.MӖnz! cCÜ#8mjVKV\Q˜a6MG*|a'~1 ˑ7r!ڤLs3I *4j$Н!1KWZ8I;ޛ⛲c7Rj˷[)nu슙2K%vܤɦYF1,Īc&0MCP7{m|чi]^m"H>tVVe110b2imSI_g& БO'ʍͶyW5ۉٰ1q6ywCCkzӪo:00e308xSnÓg/ˆ[YɧكZ[J A# @NYc12M8L>>x=T_BթF-ZY'=@H?н 'I58XƲ')(C911XL#K1UUUJZu└2&B0G~aFCOu73ۋ7%L78j2339",Zyܻt ٱCD3vmH19[ruL W9sMZ/\˹nmNJ4N9 MI+<%9ImШ"JQ"sYoӦQDDD/ Jtt;hZ:R/[!8u8ah݌6H(0m/1ef0œ`= [E iZ6IyEzm9m[EU뭑^8\1XU^衉1zr9OW֎OZxAYm‡$D@sIBDQR QĘ0A- 4X TlT&O2b}'=!14,ߥ$NTs:'ĝ~!G (HG ۉ$~F|ĝ~Į3OԻ.)Jf*ZTLQ%5y]s:bu`M:ůBu莐Mmj[mԆT5fgLtbi&#A~OrxHFP|"4wiyҍnYO? SC7,}ȏU,=F,#Cx|fiTgmRm8 $7Xt3FH\WD (70rp[m $'fbI78 new] gppL4L6)?7<O?F,kش2SC%$C>\E#OovLRざX3F)YΗ+t^GVڜ8fR҇EN)MxSJM`R&Qģ4c[eMz:H T<@S̳ S$ˈ &;SUQ#AQ4ǣXhM2"(*:Ԥ6Ŵ 2,5sIÊ0S "G=%LG6Nk{=I&jNtG'߁Mw\SP)Ұ<+ǟ}<ԕ?Y'N'2>߱ef1M) G~a `)2LɨjL#z6ō 3c@9͙VdRd4S)=N< xx 0z,-/ |rfnifQQ7S 2L5 XUcrNWRGuvUON䦓## qfc97d< (|W2a2wigM.E= ըTud!T:쏢5i }DUX[dZY4-.QnusssMpܛhֶQȄ)XjrfSK]-iXҢ[m~\3I䝾sR'_Y[NKN6 vf6lfSF 7"T6?!tj{%@"Ku{V&I5Jg1Zma0Q'U16NPv%E+ٜ/) ľ yS 0*R0oL`|f8%i޽Iz#8fnMf5 CP3='Z<) YzG=rR8&vJB߽fWr,7hi5j{iٓ8Nk qF͌Hymڙړ?]U<9*fu=)20&PI 1q[@Z3OM Lr<4Mb0ZےO>jlz"!x )|"}b)<#'f>GX:4in}uG zte2:TZF W1+(0L$S"7Frs/^ +1XťєSjkÆ8rU1n嵼Pm95EK+TjZDA(jSV D)B)1ees)HemƈP.^5ˆ.2򔖖y͹^,T}>CF rGXP$(ȑ2J%C>t87&>*pL<-4 SU4UQ'cEgBi@WcXµQ(LeÙ FDbahm2rdL.\ ũ*Yo"rCc0i6)\ 9EsG!dYdQGuND颺&c) Eq ~xu4WWM7m&$d$`pӆpǁVfd n\RT&w=E:S&l6f?Hg!';D /f̰aCד2xxqu$QQecjffl21Y&5RC2M3e#pm}O>ݙ)qԦ$8dh)ydujrxISIJ1,%:S}QѹQ;Ytv32U\!bj8caOa Δp 0q5ulXu<$Fqn:c:gu+Y͙jsdJk$$k46S#ʍ}#KHoDS퍦f|Th9BЀBP,ᾢSm;L4c#ֈSb٤Ш, [dާZ–?t 8O`7Шj`L2f6tcpfhK1bDՖ,^Kmj/_6<gqloǧ ' [ۑJ2)${!M:Y^=]ϸ%? '$^m-:BTJYԽ UJ"d&TpOBR}ng&ݷ`m٘o{5/SnTnBlz/-mYae3 4M P]my8w)J=Km8dLj;Kb81L{}P=X*щ5Myf0,eцj% Y9ndSFQD:i':_f]