Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 1344 → Rev 1084

/demos/branches/pj/mpeg2/readme
File deleted
/demos/branches/pj/mpeg2/gvideo.c
File deleted
/demos/branches/pj/mpeg2/gethdr.c
File deleted
/demos/branches/pj/mpeg2/idctref.c
File deleted
/demos/branches/pj/mpeg2/spatial.doc
File deleted
/demos/branches/pj/mpeg2/idct.c
File deleted
/demos/branches/pj/mpeg2/todo
File deleted
/demos/branches/pj/mpeg2/makefile.ori
File deleted
/demos/branches/pj/mpeg2/getvlc.c
File deleted
/demos/branches/pj/mpeg2/mpeg2dec.c
File deleted
/demos/branches/pj/mpeg2/getvlc.h
File deleted
/demos/branches/pj/mpeg2/mpeg2dec.h
File deleted
/demos/branches/pj/mpeg2/makefile
File deleted
/demos/branches/pj/mpeg2/examples
File deleted
/demos/branches/pj/mpeg2/ieee1180
File deleted
/demos/branches/pj/mpeg2/makefile.lib
File deleted
/demos/branches/pj/mpeg2/getbits.c
File deleted
/demos/branches/pj/mpeg2/store.ori
File deleted
/demos/branches/pj/mpeg2/recon.c
File deleted
/demos/branches/pj/mpeg2/systems.c
File deleted
/demos/branches/pj/mpeg2/subspic.c
File deleted
/demos/branches/pj/mpeg2/config.h
File deleted
/demos/branches/pj/mpeg2/getpic.c
File deleted
/demos/branches/pj/mpeg2/m.bat
File deleted
/demos/branches/pj/mpeg2/changes
File deleted
/demos/branches/pj/mpeg2/const.h
File deleted
/demos/branches/pj/mpeg2/store.c
File deleted
/demos/branches/pj/mpeg2/test.m2v
File deleted
\ No newline at end of file
/demos/branches/pj/mpeg2/initfile.c
File deleted
/demos/branches/pj/mpeg2/verify.c
File deleted
/demos/branches/pj/mpeg2/motion.c
File deleted
/demos/branches/pj/mpeg2/global.h
File deleted
/demos/branches/pj/mpeg2/jetctrl.c
File deleted
/demos/branches/pj/mpeg2/getblk.c
File deleted
/demos/branches/pj/mpeg2/spatscal.c
File deleted
/demos/branches/pj/base/cabs.dat
File deleted
/demos/branches/pj/base/initfile.c
File deleted
/demos/branches/pj/base/cabs.c
File deleted
/demos/branches/pj/base/fly.c
File deleted
/demos/branches/pj/base/ego.c
File deleted
/demos/branches/pj/base/makefile
File deleted
/demos/branches/pj/readme.txt
File deleted
/demos/branches/pj/fsdemo/gvideo.h
File deleted
/demos/branches/pj/fsdemo/mplay.c
File deleted
/demos/branches/pj/fsdemo/gbuffer.h
File deleted
/demos/branches/pj/fsdemo/gload.c
File deleted
/demos/branches/pj/fsdemo/gphoto.ok
File deleted
/demos/branches/pj/fsdemo/oldmakefile
File deleted
/demos/branches/pj/fsdemo/gload.h
File deleted
/demos/branches/pj/fsdemo/makefile
File deleted
/demos/branches/pj/fsdemo/gphoto.c
File deleted
/demos/branches/pj/fsdemo/gclock.c
File deleted
/demos/branches/pj/fsdemo/initfile.c
File deleted
/demos/branches/pj/fsdemo/xread.c
File deleted
/demos/branches/pj/fsdemo/gphoto.h
File deleted
/demos/branches/pj/fsdemo/gclock.h
File deleted
/demos/branches/pj/fsdemo/mutex.h
File deleted
/demos/branches/pj/fsdemo/xread.h
File deleted
/demos/branches/pj/fsdemo/config.h
File deleted
/demos/branches/pj/fsdemo/readme
File deleted
/demos/branches/pj/fsdemo/gvideo.c
File deleted
/demos/branches/pj/fsdemo/gbuffer.c
File deleted
/demos/branches/pj/oldexamples/fs/test0.c
File deleted
/demos/branches/pj/oldexamples/fs/tree1.c
File deleted
/demos/branches/pj/oldexamples/fs/test1.c
File deleted
/demos/branches/pj/oldexamples/fs/test2.c
File deleted
/demos/branches/pj/oldexamples/fs/tree2.c
File deleted
/demos/branches/pj/oldexamples/fs/hello.c
File deleted
/demos/branches/pj/oldexamples/fs/testu.c
File deleted
/demos/branches/pj/oldexamples/fs/testw0.c
File deleted
/demos/branches/pj/oldexamples/fs/testw1.c
File deleted
/demos/branches/pj/oldexamples/fs/common.c
File deleted
/demos/branches/pj/oldexamples/fs/makefile
File deleted
/demos/branches/pj/oldexamples/fs/common.h
File deleted
/demos/branches/pj/oldexamples/mpeg/common.c
File deleted
/demos/branches/pj/oldexamples/mpeg/mpg123.c
File deleted
/demos/branches/pj/oldexamples/mpeg/makefile
File deleted
/demos/branches/pj/oldexamples/mpeg/mplay.c
File deleted
/demos/branches/pj/oldexamples/mpeg/mplay2.c
File deleted
/demos/branches/pj/oldexamples/block/idetest2.c
File deleted
/demos/branches/pj/oldexamples/block/idelin.c
File deleted
/demos/branches/pj/oldexamples/block/idetest3.c
File deleted
/demos/branches/pj/oldexamples/block/idetx430.c
File deleted
/demos/branches/pj/oldexamples/block/idernd.c
File deleted
/demos/branches/pj/oldexamples/block/common.c
File deleted
/demos/branches/pj/oldexamples/block/makefile
File deleted
/demos/branches/pj/oldexamples/block/common.h
File deleted
/demos/branches/pj/oldexamples/block/idetest0.c
File deleted
/demos/branches/pj/oldexamples/block/idetest1.c
File deleted
/demos/branches/pj/oldexamples/kernel/makefile
File deleted
/demos/branches/pj/oldexamples/kernel/perf1.c
File deleted
/demos/branches/pj/oldexamples/kernel/test7.ori
File deleted
/demos/branches/pj/oldexamples/kernel/perf2.c
File deleted
/demos/branches/pj/oldexamples/kernel/perf3.c
File deleted
/demos/branches/pj/oldexamples/kernel/perf4.c
File deleted
/demos/branches/pj/oldexamples/kernel/testa.c
File deleted
/demos/branches/pj/oldexamples/kernel/testb.c
File deleted
/demos/branches/pj/oldexamples/kernel/testc.c
File deleted
/demos/branches/pj/oldexamples/kernel/testd.c
File deleted
/demos/branches/pj/oldexamples/kernel/teste.c
File deleted
/demos/branches/pj/oldexamples/kernel/testf.c
File deleted
/demos/branches/pj/oldexamples/kernel/testg.c
File deleted
/demos/branches/pj/oldexamples/kernel/testh.c
File deleted
/demos/branches/pj/oldexamples/kernel/testi.c
File deleted
/demos/branches/pj/oldexamples/kernel/testj.c
File deleted
/demos/branches/pj/oldexamples/kernel/testk.c
File deleted
/demos/branches/pj/oldexamples/kernel/testl.c
File deleted
/demos/branches/pj/oldexamples/kernel/testm.c
File deleted
/demos/branches/pj/oldexamples/kernel/testn.c
File deleted
/demos/branches/pj/oldexamples/kernel/testo.c
File deleted
/demos/branches/pj/oldexamples/kernel/testp.c
File deleted
/demos/branches/pj/oldexamples/kernel/testq.c
File deleted
/demos/branches/pj/oldexamples/kernel/test1.c
File deleted
/demos/branches/pj/oldexamples/kernel/testr.c
File deleted
/demos/branches/pj/oldexamples/kernel/test2.c
File deleted
/demos/branches/pj/oldexamples/kernel/tests.c
File deleted
/demos/branches/pj/oldexamples/kernel/test3.c
File deleted
/demos/branches/pj/oldexamples/kernel/test4.c
File deleted
/demos/branches/pj/oldexamples/kernel/testu.c
File deleted
/demos/branches/pj/oldexamples/kernel/test5.c
File deleted
/demos/branches/pj/oldexamples/kernel/test6.c
File deleted
/demos/branches/pj/oldexamples/kernel/sysend.c
File deleted
/demos/branches/pj/oldexamples/kernel/testw.c
File deleted
/demos/branches/pj/oldexamples/kernel/test7.c
File deleted
/demos/branches/pj/oldexamples/kernel/test8.c
File deleted
/demos/branches/pj/oldexamples/kernel/test9.c
File deleted
/demos/branches/pj/oldexamples/kernel/testz.c
File deleted
/demos/branches/pj/oldexamples/kernel/testss.c
File deleted
/demos/branches/pj/oldexamples/tracer/tdump.c
File deleted
/demos/branches/pj/oldexamples/tracer/simple.c
File deleted
/demos/branches/pj/oldexamples/tracer/makefile
File deleted
/demos/branches/pj/oldexamples/tracer/common.h
File deleted
/demos/branches/pj/oldexamples/tracer/test0.c
File deleted
/demos/branches/pj/oldexamples/tracer/sa.c
File deleted
/demos/branches/pj/oldexamples/tracer/hello.c
File deleted
/demos/branches/pj/oldexamples/tracer/wait.c
File deleted
/demos/branches/pj/oldexamples/tracer/types.h
File deleted
/demos/branches/pj/oldexamples/tracer/util.c
File deleted
/demos/branches/pj/oldexamples/tracer/jdump.c
File deleted
/demos/branches/pj/oldexamples/tracer/util.h
File deleted
/demos/branches/pj/oldexamples/tracer/treec1.c
File deleted
/demos/branches/pj/oldexamples/tracer/hello1.c
File deleted
/demos/branches/pj/oldexamples/tracer/treec2.c
File deleted
/demos/branches/pj/oldexamples/tracer/road.c
File deleted
/demos/branches/pj/oldexamples/tracer/hello2.c
File deleted
/demos/branches/pj/oldexamples/tracer/distr.c
File deleted
/demos/branches/pj/oldexamples/tracer/treef1.c
File deleted
/demos/branches/pj/oldexamples/tracer/common.c
File deleted
/demos/branches/pj/oldexamples/stdio/common.c
File deleted
/demos/branches/pj/oldexamples/stdio/makefile
File deleted
/demos/branches/pj/oldexamples/stdio/test0.c
File deleted
/demos/branches/pj/oldexamples/stdio/test1.c
File deleted
/demos/branches/pj/oldexamples/stdio/test2.c
File deleted
/demos/branches/pj/oldexamples/stdio/test3.c
File deleted
/demos/branches/pj/oldexamples/stdio/test4.c
File deleted
/demos/branches/pj/dosfs/readme.txt
File deleted
/demos/branches/pj/dosfs/makefile
File deleted
/demos/branches/pj/dosfs/dosfs.c
File deleted
/demos/branches/pj/dosfs/myfile.txt
File deleted
/demos/branches/pj/dosfs/initfile.c
File deleted
/demos/branches/pj/soccer/calc.h
File deleted
/demos/branches/pj/soccer/stadio.h
File deleted
/demos/branches/pj/soccer/calc2.h
File deleted
/demos/branches/pj/soccer/position.h
File deleted
/demos/branches/pj/soccer/images.h
File deleted
/demos/branches/pj/soccer/readme
File deleted
/demos/branches/pj/soccer/makefile
File deleted
/demos/branches/pj/soccer/iniziali.h
File deleted
/demos/branches/pj/soccer/soccer.c
File deleted
/demos/branches/pj/soccer/initfile.c
File deleted
/demos/branches/pj/cash/readme.txt
File deleted
/demos/branches/pj/cash/makefile
File deleted
/demos/branches/pj/cash/testcash.c
File deleted
/demos/branches/pj/cash/cash.c
File deleted
/demos/branches/pj/cash/initcash.c
File deleted
/demos/branches/pj/cash/cash.h
File deleted
/demos/branches/pj/orbit/makefile
File deleted
/demos/branches/pj/orbit/orbit.c
File deleted
/demos/branches/pj/orbit/initfile.c
File deleted
/demos/branches/pj/orbit/orbit.dat
File deleted
/demos/branches/pj/thdemo/jetctrl.c
File deleted
/demos/branches/pj/thdemo/camera.c
File deleted
/demos/branches/pj/thdemo/demo.h
File deleted
/demos/branches/pj/thdemo/readme.txt
File deleted
/demos/branches/pj/thdemo/camera2.c
File deleted
/demos/branches/pj/thdemo/ball.c
File deleted
/demos/branches/pj/thdemo/camera4.c
File deleted
/demos/branches/pj/thdemo/ball2.c
File deleted
/demos/branches/pj/thdemo/makefile
File deleted
/demos/branches/pj/thdemo/fft.c
File deleted
/demos/branches/pj/thdemo/initfile.c
File deleted
/demos/branches/pj/thdemo/demo.c
File deleted
/demos/branches/pj/thdemo/fftplay.c
File deleted
/demos/branches/pj/simcity/keyboard.c
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/include/simcity.h
File deleted
/demos/branches/pj/simcity/include/proc.h
File deleted
/demos/branches/pj/simcity/include/states.h
File deleted
/demos/branches/pj/simcity/include/car.h
File deleted
/demos/branches/pj/simcity/include/keyfunct.h
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/include/constant.h
File deleted
/demos/branches/pj/simcity/include/misc.h
File deleted
/demos/branches/pj/simcity/include/draw.h
File deleted
/demos/branches/pj/simcity/proc.c
File deleted
/demos/branches/pj/simcity/initfile.c
File deleted
/demos/branches/pj/simcity/sem/red_l.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sem/yellow_l.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sem/red_r.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sem/green_l.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sem/yellow_r.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sem/red_d.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sem/red_u.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sem/yellow_d.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sem/yellow_u.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sem/green_r.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sem/green_d.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sem/green_u.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/car.c
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/reading.c
File deleted
/demos/branches/pj/simcity/simcity.c
File deleted
/demos/branches/pj/simcity/tasks.c
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sprite/sp_2.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sprite/sp_3.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sprite/sp_4.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sprite/sp_5.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sprite/sp_6.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sprite/sp_7.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sprite/sp_0.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sprite/sp_1.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/keyfunct.c
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_000n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/Bb0.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/bb1.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_210n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_120n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_030n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_300n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/street.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_240n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_015n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_150n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_060n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_105n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_330n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_045n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/old_sk.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_180n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_090n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_270n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_135n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_225n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_315n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_075n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_165n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_255n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_345n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/old.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_195n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/img/car_285n.raw
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/misc.c
File deleted
\ No newline at end of file
/demos/branches/pj/simcity/sem.raw
File deleted
/demos/branches/pj/simcity/makefile
File deleted
/demos/branches/pj/simcity/draw.c
File deleted
/demos/branches/pj/edfact/edfact.h
File deleted
/demos/branches/pj/edfact/readme
File deleted
/demos/branches/pj/edfact/makefile
File deleted
/demos/branches/pj/edfact/initfile.c
File deleted
/demos/branches/pj/edfact/edfact.c
File deleted
/demos/branches/pj/edfact/testact.c
File deleted
/demos/branches/pj/myapp/makefile
File deleted
/demos/branches/pj/myapp/initfile.c
File deleted
/demos/branches/pj/myapp/mymod.c
File deleted
/demos/branches/pj/myapp/myapp.c
File deleted
/demos/branches/pj/myapp/readme.txt
File deleted
/demos/branches/pj/myapp/mymod.h
File deleted
/demos/branches/pj/static/static.h
File deleted
/demos/branches/pj/static/readme
File deleted
/demos/branches/pj/static/makefile
File deleted
/demos/branches/pj/static/initfile.c
File deleted
/demos/branches/pj/static/static.c
File deleted
/demos/branches/pj/static/test1st.c
File deleted
/demos/branches/pj/lights/readme.txt
File deleted
/demos/branches/pj/lights/makefile
File deleted
/demos/branches/pj/lights/simlight.c
File deleted
/demos/branches/pj/lights/blaster.h
File deleted
/demos/branches/pj/lights/initfile.c
File deleted
/demos/branches/pj/lights/param.dat
File deleted
/demos/branches/pj/pse51/ptest1
File deleted
\ No newline at end of file
Property changes:
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: pj/pse51/ptest2
===================================================================
--- pj/pse51/ptest2 (revision 1344)
+++ pj/pse51/ptest2 (nonexistent)
@@ -1,437 +0,0 @@
-ELF"4`d4 ( €""È@È@ HAÈP#ÈP# Pî 덶°­üORäe‹Ká€uU¿€ Ç–eÆG1GeÆGGeÆG2GeÆG¸Ôæ"fe£èP#Áèfe£îP#ÈX#¿€ Ç’eÆG0GeÆGf¸0ŽØŽÀŽÐŽàŽè¼àƒ#Ç°¹%àc#Ç´¹%àƒ#£ÔX#‰ØX#ÈX#êµ"8ÎX#üèâÒê U‰å‹Eê ‰öU‰åƒì0ÆEéxÆEê-ÆEèh0"ƒì‹Eèf‰$ÆD$-èiÇ$’-#èaæƒÄh@"hLÞ#èã>ƒÄÿ5LÞ#h¬-#è<æÇ$À-#è0æh†h°"jEäPèMƒÄ …Àtƒì hÓ-#èæƒÄƒìÿuähæ-#èôåÇ$û-#èèåhE h°"jEàPèGMƒÄ …Àtƒì h.#è¿åƒÄƒìÿuàh!.#è¬åÇ$6.#è åƒÄƒì jèn<ƒÄ=vìƒì hM.#è{åƒÄÿuäè˜NƒÄÿuàèNÇ$c.#èY布ÄÉÍvU‰åƒìÿ5lÞ#hp-#è6åƒÄÉÐU‰åSƒì‹]Sÿ5lÞ#h€.#è庅ëQ‰Ø÷êÁúÁû)ڃÄRÿ5LÞ#è9>ƒÄ‹]üÉÐU‰åƒìÿ5LÞ#èû=ƒÄ Pÿ5lÞ#hÀ.#èÇäƒÄÉÉöU‰åSƒì ‹]h$"hÜX#è¯OƒÄÿ5lÞ#hà.#è”äƒÄSÿ5LÞ#èÉ=ƒÄÿ5LÞ#è—=ƒÄ Pÿ5lÞ#hÀ.#ècäƒÄÿ5lÞ#h€-#èP七Ä‹]üÉÍvU‰åƒìèÁ:ÉÍvU‰åƒìj ÿujh'èMè‰è‡¬è¶²è1™ƒÄ jjjèÿLèîv¸èƒÄÉÃU‰åWVSƒìX‹]}¨¾àX#ü¹ó¥E¸‰E¨fÇE¸ÇE¼ÇEÀfÇEÄÇEÐÇEÔÇEÜÇEà‰]ÈÇEØÇEÌjè8L‰EÐÇEÜÇEàƒMÌ
-è֜E¨‰$ècƒÄ…Àyƒì h /#è»ãƒÄƒì SèoE¸ƒÄeô[^_]ÍvU‰åƒìŠU€=ðY#„¶€ú*t€úªt
-€ú6t€ú¶uÆðY#¸é›„Òy,ÆðY#€ú¸uÆüY#ÆòY#ëՀúuÐÆüY#ëljöÆðY#€ú8u€ -üY#ÆòY#멀úu € -üY#뛉ö€ú5uf¾•„#·Àé)v€ú…•f¾|„#·Àé -v€úàuÆðY#éTÿÿÿv€ú*t€ú6u2ÆñY#€ú*u€ -üY#é/ÿÿÿ‰ö€ú6…$ÿÿÿ€ -üY# éÿÿÿv€úªt€ú¶u"ÆñY#€úªt €ú¶…öþÿÿÆüY#éêþÿÿ€úFu€=õY#•õY#ë.v€ú:u€=óY#•óY#ëv€úEu;€=ôY#•ôY#ƒì¶õY#P¶óY#P¶ôY#Pèõ¸ƒÄé€úu€ -üY#éhþÿÿv€ú8u€ -üY#éTþÿÿv€út€ú¸uÆüY#é;þÿÿ‰ö¸„҈рúRt2€úOt-€úSt(€úPt#€úQt€úKt€úLt€úMt€úGt
-€úHt€úIu€=ôY#uT€=ñY#uK·Â -ÿë~€=óY#t/Bð< vBâ<vBÔ<w€=ñY#t¶Âf¾€`„#·ÀëG€=ñY#t¶Âf¾€…#·Àë-v€=òY#t¶Âf¾€ …#·Àëv¶Âf¾€`„#·ÀÉÃU‰åWVSƒì,}؃ìjE×PèòƒÄ…À„¡ƒì ¶E×Pèöüÿÿ‰ÂƒÄf…Ò„†÷Âÿt  üY#ƒÈ@ë‰ö üY#ˆE؈UيE׈EÚ±»;X„#}8¾àƒ#v݊D2:EÚuŠ2:EØuƒì Wÿ’äƒ#±ƒÄC;X„#|ЄÉuƒìjW¿"†#Pèý¡ƒÄè-é<ÿÿÿU‰å‹E£ìY#Šˆb„#ŠPˆc„#ŠPˆd„#ŠPˆe„#ŠPˆf„#ŠPˆg„#ŠPˆh„#ŠPˆi„#ŠPˆj„#ŠP ˆk„#ŠP
-ˆ…#ŠP ˆ…#ŠP ˆ…#ŠP -ˆ…#ŠPˆ…#ŠPˆ…#ŠPˆ…#ŠPˆ …#ŠPˆ
-…#ŠPˆ …#ŠPˆl„#ŠPˆ …#ŠPˆm„#ŠPˆ -…#ŠPˆz„#ŠPˆ…#ŠPˆ{„#ŠPˆ…#ŠPˆ‡„#ŠPˆ'…#ŠPˆˆ„#ŠPˆ(…#ŠP ˆ‰„#ŠP!ˆ)…#ŠP"ˆ•„#ŠP#ˆ5…#ŠP$ˆ“„#ŠP%ˆ3…#ŠP&ˆ”„#ŠP'ˆ4…#ŠP(ˆ‹„#ŠP)ˆ+…#ŠP*ˆ™„#ŠP+ˆ9…#ŠP,ˆn„#ŠP-ˆ…#ŠP.ˆo„#ŠÖˆ…#ŠP0ˆa„#ŠP1ˆ…#ŠP2ˆ|„#ŠP3ˆ…#ŠP4ˆd…#ŠP5ˆO…#ŠP6ˆP…#ŠP7ˆQ…#ŠP8ˆK…#ŠP9ˆL…#ŠP:ˆM…#ŠP;ˆG…#ŠP<ˆH…#ŠP=ˆI…#ŠP>ˆR…#ŠP?ˆS…#ŠP@ˆ®„#ŠPAˆ—„#ŠPBˆ•„#ŠPCˆª„#ŠPDˆN…#ŠPEˆ7…#ŠPFˆJ…#ŠPGˆ~„#ŠPHˆ…#ŠPIˆ„#ŠPJˆ0…#ŠPKˆŽ„#ŠPLˆ.…#ŠPMˆ€„#ŠPNˆ …#ŠPOˆr„#ŠPPˆ…#ŠPQˆ„#ŠPRˆ!…#ŠPSˆ‚„#ŠPTˆ"…#ŠPUˆƒ„#ŠPVˆ#…#ŠPWˆw„#ŠPXˆ…#ŠPYˆ„„#ŠPZˆ$…#ŠP[ˆ…„#ŠPRˆ%…#ŠP]ˆ†„#ŠP^ˆ&…#ŠP_ˆ’„#ŠP`ˆ2…#ŠPaˆ‘„#ŠPbˆ1…#ŠPcˆx„#ŠPdˆ…#ŠPeˆy„#ŠPfˆ…#ŠPgˆp„#ŠPhˆ…#ŠPiˆs„#ŠPjˆ…#ŠPkˆ„#ŠPlˆ…#ŠPmˆt„#ŠPnˆ…#ŠPoˆv„#ŠPpˆ…#ŠPqˆ„#ŠPrˆ/…#ŠPsˆq„#ŠPtˆ…#ŠPuˆ„#ŠPvˆ-…#ŠPwˆu„#ŠPxˆ…#ŠPyˆŒ„#ŠPzˆ,…#ŠP{ˆº…#ŠP|ˆ»…#ŠP}ˆDž#Š@~¢È…#]ÍvU‰åWVSƒì\‹]}ؾZ#ü¹󥿸ƒ=øY#…Qº¾`„#¹…#‰ö·ÂÆ0ÆBfúví…Ûu]؃{ÿuÇCìX#ƒì ÿsèûÿÿÇ$jjjhY/#èϔf£"†#ƒÄ fƒøÿu ¸þÿÿÿéÞ‰öjjjhY/#è0˜f£$†#ƒÄfƒøÿuƒì ¿"†#P蕛¸ýÿÿÿ頍vÇX„#ƒ{ÿuÇC "ƒ{tIÆE™cÆEš.ÆE˜ƒìÿsƒì‹E˜f‰$ÆD$.èÅÆE˜ƒÄÿsƒì‹E˜f‰$ŠEšˆD$襃ă;ÿuQfÇE¨ÇE¬ÇE°fÇE´ÇE¸ÇEÐÇEÈÐÇEÄ ÇEÀ¨aÇE¼
-ÇE̍E¨ë‹ƒì jjPh("hb/#èÿ‰ÃƒÄ ‰(†#ƒøÿu'ƒì ¿"†#P蓚¿$†#‰$脚‰Ø钐ƒ=Z#uWƒì ÿ5(†#艉ǃąÿt4ƒì ¿"†#PèLš¿$†#‰$è=šƒÄÿ5(†#èg5¸üÿÿÿë=ÇZ#ëèƒì¶õY#P¶óY#P¶ôY#PèûÇøY#‰øƒÄeô[^_]ÃU‰åƒì¶EPEèP¿$†#Pè0œƒÄ„Àt÷Eè@u¶Eéë‰ö¸ÉÐU‰åƒì ¶E Pÿu¿$†#Pèõ›·ÀƒÄÉÐU‰åSƒ=X„#0‹ -X„#Í»àƒ#‹Ef‰ŠE
-ˆD‹E ‰‚äƒ#A‰ -X„#‹$ÉÉöU‰åƒìèÉÍvU‰åƒìè±ÉÍvU‰åƒì¸ÿÿÿÿƒ=øY#t9蓃ì ÿ5(†#è-4¿"†#‰$è昿$†#‰$èט¸ƒÄÉÐU‰åƒìjèoÔÇ$è+ÔÇ$H/#èóÓè²-ƒÄÉÐU‰åWVSƒìŠEˆEó¿1¾d»`‰ö¹v‰òì©t"‰ÈA=þÿÿvì¸ÿÿÿÿ…Àu‰ÚŠEóî¸ë‰ö¸ë搸ÿÿÿÿÇEì¹d…Àt¸ÿÿÿÿët¸ë‰Êì©uî‹EìÿEì=þÿÿvé¸ÿÿÿÿ…Àu‰Úì¶Àë¸ÿÿÿÿƒøÿu
-¸þÿÿÿë3v=úu ¸ë"‰ö=þt ¸ýÿÿÿë‰ö‰øO…À9ÿÿÿ¸üÿÿÿƒÄ[^_]ÃU‰åVSƒìŠEˆE÷³Ô¾¹d‰ö‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë -¸ë搸ÿÿÿÿ…Àt¸ÿÿÿÿëL¸ë&»¹d‰ö‰Êì©tâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àuº`ŠE÷î¸ëv¸ÿÿÿÿ…Àt¸ÿÿÿÿëj¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àuºdì© tº`ì¶Ðëvºÿÿÿÿ‰Ð…Òx¸úú”ÀDþƒÄ[^]ÃU‰åWVSƒì »¾`‰ØK…À~^ƒì hÿè¼ýÿÿ‰ÂƒÄ…Òu{¿¹d‰Êì©u‰øG=þÿÿvì¸ÿÿÿÿ…Àu‰òì¶Ðëv¸ëꐺÿÿÿÿúªu›¸üÿÿÿúª…ƃì hõèMýÿÿ‰ÂƒÄ…Òt(¸ûÿÿÿ馉ö¸ýÿÿÿ隉ö¸ë.¸ëZ³`¾¹d‰Êì©tډðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî³e¾¹dv‰Êì©t®‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØîƒì hôèªüÿÿ‰ÂƒÄ¸…Ò•ÀHƒàƒèeô[^_]ÃU‰åWVSƒì ¾»d¹`‰Úì©t -‰Êì‰ðF=þÿvé³­¾¹d‰Êì©„‚‰ðF=þÿÿvè¸ÿÿÿÿ…ÀuºdˆØî¾»d¹`‰Úì©t -‰Êì‰ðF=þÿv鳪¾¹d‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ë搸놐¸ÿÿÿÿ…Àt¸÷ÿÿÿéݐ¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àu º`ì¶Àë¸ÿÿÿÿƒøUt¸ÿÿÿÿ錸ë&³«¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸öÿÿÿé9¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àu º`ì¶Àë¸ÿÿÿÿ…Àt¸þÿÿÿé鐸ë&³®¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…À…<èzüÿÿ…À…Žƒì hóèIúÿÿƒÄ…Àt
-¸ùÿÿÿépƒì jè.úÿÿƒÄ…Àt¸øÿÿÿéU¸ë.ÆZ#³©¾¹d‰Êì©tډðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸ôÿÿÿéù¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àu º`ì¶Àë¸ÿÿÿÿ…Àt¸óÿÿÿ驐¸ë&³¨¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸õÿÿÿéU¸ë&³Ó¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸ðÿÿÿ鐸ë&³Z¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî¸ë¸ÿÿÿÿ…Àt¸ïÿÿÿ魐ÆZ#ëBv¸ë^¹þÿ¾d»`‰òì¶ø÷Çt‰Úì¶À÷Ç tƒøZt»IƒùÿuÙ³§¾¹d‰Êì©tª‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àté»þÿÿ‰ö¸ë:€=Z#„þÆZ#³¨¾¹d‰Êì©tΉðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸îÿÿÿ鱐¸ëvƒì hóèWøÿÿ‰ÃÇ$dèIøÿÿÃÇ$èè;øÿÿÃÇ$è-øÿÿÃÇ$çèøÿÿþ§ƒÄ¿¹dv‰Êì©t’‰øG=þÿÿvì¸ÿÿÿÿ…Àuºd‰ðî¸ë¸ÿÿÿÿ…Àt¸íÿÿÿë…ÛuÆZ#¸eô[^_]ÃU‰åVS¡$Z#…Àt¡$Z#H£$Z#¸é²¸ë6ƒ=Z#uKŠ Z#¾¹dv‰Êì©t҉ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØîÿZ#뤍v¸ë:ƒ=Z#uGÇZ#³ô¾¹d‰Êì©tΉðF=þÿÿvì¸ÿÿÿÿ…À…Xÿÿÿº`ˆØîéKÿÿÿ‰ö¸[^]ÍvU‰åWVSƒì ¡(Z#@£(Z#¾õ³Ô¿¹dv‰Êì©t"‰øG=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ë搸ë.¸ÿÿÿÿ…Àu0»¹d‰Êì©tډØC=þÿÿvì¸ÿÿÿÿ…Àuº`‰ðîœúX‰Çƒì hõè5õÿÿ‰ÃƒÄ…Ût¸ûÿÿÿéù‰ö¸ë1¾§ÇEð¹dv‰Êì©tڋEðÿEð=þÿÿvé¸ÿÿÿÿ…Àu ºd‰ðî¸ë¸ë=¸ëq¸ÿÿÿÿþ`ÇEð¹d‰Êì©t΋EðÿEð=þÿÿvé¸ÿÿÿÿ…Àuºd‰ðî¾eÇEð¹dv‰Êì©tš‹EðÿEð=þÿÿvé¸ÿÿÿÿ…Àuº`‰ðîƒì hôè;ôÿÿÃĉøPÆZ#‰Øeô[^_]ÐU‰åWVSƒì ¸ÿÿÿÿ€=Z#„ºœúX‰Æƒì hõèóóÿÿƒÄ…Àt(¸ûÿÿÿé—‰ö¸ë:¸ëf¸é“‰ö³`¿¹d‰Êì©tΉøG=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî³G¿¹dv‰Êì©t¢‰øG=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØ¿¹dv‰Êì©„rÿÿÿ‰øG=þÿÿvè¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt ¸îÿÿÿ鐃ì hôèÿòÿÿƒÄ…Àt¸Ûÿÿÿ飉ö¸ë:‰ðP¡(Z#@£(Z#¾ô³Ô¿¹d‰Êì©tΉøG=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë -¸ë.¸ÿÿÿÿ…Àu0»¹d‰Êì©tډØC=þÿÿvì¸ÿÿÿÿ…Àuº`‰ðîÆZ#¸eô[^_]ÍvU‰åƒìÇD‡#Ç@‡#ƒ=Z#t!úè‹õÿÿ£Z#ÇZ#û…Àtúèôÿÿû¡Z#…Àuƒìÿuh ""jèQ¸ƒÄÉÍvU‰åVS¡$Z#@£$Z#³õ¾¹d‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî¸ë -¸ë搸ÿÿÿÿ[^]ÍvU‰åVS¡$Z#@£$Z#³ô¾¹d‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî¸ë -¸ë搸ÿÿÿÿ[^]ÍvU‰åƒì‹MœúX‰Â¡@‡#@%ÿ£@‡#Š€@†#ˆ‰ÐP€9úu è(úÿÿë‰ö¸ÉÐU‰åƒìƒ=0Z#t(Ǥ‡#Ç ‡#Ǩ‡#Ç0Z#‹E£,Z#ƒ=Z#t!úèôÿÿ£Z#ÇZ#û…Àtúèòÿÿû¡Z#…Àu.¸ìÿÿÿ€=Z#t ƒìjÿhH""j èOÆZ#¸ƒÄÉÉöU‰åS‹MœúX‰Ã¡ ‡#@ƒà?£ ‡#º`‡#ŠˆA¡ ‡#@ƒà?£ ‡#Šˆ¡ ‡#@ƒà?£ ‡#ŠˆA‰ØP¸‹$ÉÉöU‰åƒì€=Z#tèäùÿÿƒì j èŽOÆZ#¸ƒÄÉÐU‰åƒìƒ=Z#t!úè óÿÿ£Z#ÇZ#û…Àtúè™ñÿÿû¡Z#…Àt¸ë¶Z#ÉÍvU‰åVSŠEŠU€} t ƒ - Z#ë ‰öƒ% Z#„Àt ƒ - Z#ëƒ% Z#„Òtƒ - Z#ë¸ë6¸ëbƒ% Z#³õ¾¹d‰Êì©t҉ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî³í¾¹dv‰Êì©t¦‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØîÿZ#[^]ÐU‰åSƒìœúX‰Ã€=Z#tè–øÿÿè‘ðÿÿƒì hóèhîÿÿƒÄ…Àuƒì jèWîÿÿƒÄ…Àu‰ØP‹]üÉÍvU‰åº`ì¶ÈœúX‰Â¡@‡#;D‡#t¡D‡#ˆˆ@†#@%ÿ£D‡#‰ÐP]ÉöU‰åƒìº`ì¶Ðƒ=¨‡#u €úúu¡(Z#H£(Z#郍v÷ÂÀuxÿ¨‡#œúX‰Á¡ ‡#;¤‡#t¡¤‡#ˆ`‡#@ƒà?£¤‡#ë"‰ö¡¤‡#+¨‡#ƒÀAƒà?£¤‡#Ǩ‡#‰ÈPƒ=¨‡#uǨ‡#ƒì ÿ5,Z#èƒÄÉÉöU‰åSƒì}™w‹UÑâU‰ÐÁà)Ðfƒ<Åhß#uèùÝNj¸ÿÿÿÿ鏐ƒ=@Þ#tcœúX‰Ã‹UÑâU‰ÐÁà)ЍÅ0ö€Aß# t ÿ€Dß#ë-v‹EÑàE‰ÂÁâ)‹ÕDß#ƒì‹• Þ#ÿuRÿP@ƒÄ‰ØPéèƒ¡…ÀtgœúX‰Ã‹UÑâU‰ÐÁà)ЍÅ0ö€Aß# t ÿ€Dß#ë2v‹EÑàE‰ÂÁâ)‹ÕDß#ƒì‹• Þ#ÿuRÿP@蔃ĉØPé­úèJ²‹lÞ#R‰ÑÁá)Ñ»@ß#f‰DË‹UÑâU‰ÐÁà)ЍÅ0öD t ÿ€Dß#ë?vƒìU‰ÐPjÿlZ#‹MI‰ÐÁà)ЋÅDß#ƒÄ‹• Þ#QRÿP@è/ƒÄ¡lÞ#@‰ÂÁâ)ƒì ¿ÕHß#P踱èƒÄû¸‹]üÉÐU‰åWVSƒì ‹]f…Ûuè>Ünj¸ÿÿÿÿé"‰öƒ=@Þ#„“œúX‰ÇÇEð}ð™s¾@ß#‹UðÑâUð‰ÐÁà)ÐÁàf9\,uHƒÀ0öD0 t ÿ€Dß#ë6ƒìEðPjÿlZ#‹MðI‰ÐÁà)ЋÅDß#ƒÄ‹• Þ#QRÿP@ƒÄÿEð}ð™~“‰øPé}‰ö蓟…À„›œúX‰ÇÇEð}ð™w¾@ß#‹Eð@‰ÂÁâ)Õf9\,uJƒÀ0öD0 t ÿ€Dß#ë8vƒìEðPjÿlZ#‹MðI‰ÐÁà)ЋÅDß#ƒÄ‹• Þ#QRÿP@ƒÄÿEð}ð™~èj‰øPéԐúè"°‹lÞ#R‰ÑÁá)Ñf‰ÍHß#ÇEð}ð™w¾@ß#‹Eð@‰ÂÁâ)Õf9\,uJƒÀ0öD0 t ÿ€Dß#ë8v‹MðI‰ÐÁà)ЋÅDß#ƒì‹• Þ#QRÿP@ƒÄEðPjÿlZ#ƒÄÿEð}ð™~èÞ ¡lÞ#@‰ÂÁâ)ƒì ¿ÕHß#Pèj¯èÁƒÄû¸eô[^_]ÃU‰åSƒìúè;¯‹lÞ#R‰ÑÁá)Ñf‰ÍHß#ƒìh$ß#jèl–ƒÄUð¡(ß#;xÞ#|¡$ß#+tÞ#‰Eð¡(ß#+xÞ#ë!‰ö¡$ß#+tÞ#H‰Eð¡(ß#+xÞ#ʚ;‰B‹Mð ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ôºÓMb‰Ø÷êÁú‰ØÁø)ÂыlÞ#R‰ÐÁà)Ð) Ōß#ƒì Qè. ƒÄƒ=|Þ#ÿtƒì ÿ5|Þ#ÿHÞ#Ç|Þ#ÿÿÿÿƒÄ‹ -lÞ#I‰ÐÁà)ЋÅDß#ƒì‹… Þ#QPÿRLè{ ƒÄhlÞ#jÿlZ#ÇlÞ#ÿÿÿÿÇ€Þ#ÿÿÿÿèV ¡lÞ#@‰ÂÁâ)¿ÕHß#‰$èã­è:ƒÄû‹]üÉÐU‰åƒìhÌ("è( ƒÄÉÍvU‰åƒìjè ƒÄÉÉöU‰åƒìƒ=8Z#u(èè
-ƒì ¡lÞ#@‰ÂÁâ)¿ÕHß#Pèt­ƒÄÉÍvU‰åWVSƒìhj/#è]$ƒÄ»@ß#ëv‹Eð@‰ÐÁà)ЁLÃ0€ƒì häÞ#èÊ+‰EðƒÄƒøÿ„“@‰ÐÁà)ÐöDÃ1@u¾‹UðR‰ÃÁã)ÃÁã¾@ß#¡4Z#‰3@£4Z#‹E ‰DƒìjÿuƒTß#Pè ¾ÆD'ƒÃ fÇD3‹Mf‹%ÿf‰D3
-f‹A f‰D3 ƒÄ‰Ø‰ñº‹]ƒ{tf‹Sf‰T‹UðR‰ÁÁá)ÁÁáY0‹U‹B -‰ƒ@ß#¿Dß#Ç;¾Hß#¡lÞ#@‰ÂÁâ)‹DÖ0‰3ºLß#ǍAP‹]ð‰˜@ß#Ç8ÇÿÿÿÿÇ0ÿÿÿÿǁ ß#°Ç8Ç0ǁÁÀǁ@ß#Ç9ºۍƒ€ 
-Ç…¤ß#Bƒúvì‹Eð@‰ÐÁà)ÐÁàÀǂHß#ÿÿÿÿǂLß#”ß#‰à#º‹Mðɍ€ ‰ö
-Ç…à#Bƒú~ì»ëC;pÞ#sƒì‹ Þ#ÿuSÿPƒÄ…Àxß;pÞ#u7‹]ð[‰ÂÁâ)ÂfÇÕhß#ƒìhäÞ#SèÚ)è¡ÕDŽ鄉ö‹Eð@‰ÐÁà)Ѝ4ʼnžDß#ƒì‹ Þ#ÿuÿuðSÿP,ƒÄ…ÀyWfdžhß#ƒìhäÞ#ÿuðèz)èAÕDžë'è3Õǃ釃ì ÿuðè9èÕdž¸ÿÿÿÿƒÄëjƒE‹U‹zü…ÿtY‰ö¾ëF;5dÞ#s0ƒìµ‹ƒß#WVÿP ƒÄ…Àxۃ싃ß#WÿuðVÿP$ƒÄ;5dÞ#t‡ƒE‹M‹yü…ÿu©‹Eðeô[^_]ÉöU‰åƒìEPÿuÿu ÿuè`üÿÿƒÄÉÍvU‰åWVSƒì ‹} ƒt6‹EÑàE‰ÂÁâ)‹G‰ÕLß#‰Æ‹UÑâU‰ÐÁà)Ѓ Åpß#@ën‰öƒì ‹UÑâU‰ÐÁà)зÅnß#Pè@‹UÑâU‰ÑÁá)Ñ»Lß#‰ˉƋEÑàE‰ÂÁâ)ƒÄƒ<Óuƒì ÿuèìèËÓLjëtv‹EÑàE‰ÂÁâ)»@ß#·DÓ.ƃì ·GPjÿwVh¸/"è-‰ÁƒÄ f…Éu?ƒì‹UÑâU‰ÐÁà)зDÃ.PVèƒÄÿuèvèUÓlj¸ÿÿÿÿƒÄëN‹EÑàE‰ÂÁâ)Âf‰ ÕHß#ƒìU‰ÐPjÿlZ#ƒÄöGu ÿ`Þ#ëvöGuÿ ß#¸eô[^_]ÍvU‰åWVSƒì ‹M‹U ‹]œúX‰ÇEPSRQè­úÿÿ‰ÆƒÄƒþÿ„ɍv‰ÐÁà)ЋÅDß#‹… Þ#ƒx(„èà…À‰€»;dÞ#svƒì‹ß#VSÿP(ƒÄC;dÞ#råv‰ÃÁã)ÃÁ㋃Dß#ƒì‹… Þ#VPÿR0fǃhß#ƒÄhäÞ#Vè\&ƒÄè ÒLJ‰øP¸ÿÿÿÿë#vƒìSVèŽýÿÿƒÄº…À”ÂJ ։øP‰ðeô[^_]ÃU‰åVS‹u»;dÞ#svƒì‹ß#VSÿP(ƒÄC;dÞ#råv‰ÃÁã)ÃÁ㋃Dß#ƒì‹… Þ#VPÿR0fǃhß#ƒÄhäÞ#Vè¬%ƒÄeø[^]ÉöU‰åVS‹]è ƒì ¡lÞ#@‰ÂÁâ)¾@ß#SÿTÖú‰$èn¡lÞ#@‰ÂÁâ)¿DÖ‰$èn¦ƒÄeø[^]ÃU‰åWVSƒì‹]‹}úû™w! [‰ÈÁà)ÈÁàº@ß#öD0tfƒ|(u û¸ÿÿÿÿéDžÿy$[‰ÁÁá)Á Í°¸Dß#‹<Çë ‰öƒÿv¿[‰ÁÁá)Á Í°‰Mä¹Hß#‰Mì‹Uä‹
-‰Â)úƒÂ‰Ð¾º÷ö‰Eð‹uä;tMۍƒ€4‹MðىÈÁà)ȍ Å°‰ö2‹…¤ß#‹] ‰ƒÃ‰] B»‰Ðº÷ó‹]ì;uÔû‰øƒÄ[^_]ÐU‰åSƒì‹]‹ -lÞ#I‰ÐÁà)ЍÅö‚pß#tɍ€È‚øß#…¤ß#¡$ß#;tÞ#|;tÞ#uA¡(ß#;xÞ#}4ƒìSÿ5lÞ#ÿ5xÞ#ÿ5tÞ#ÿ5(ß#ÿ5$ß#h€/#è8¶ƒÄ è@ ‹]üÉÍvU‰åWVS‹ -lÞ#I‰ÐÁà)ЍÅöƒpß#„›ɍ€ȍ‹°Hß#ºDß#‹t‚`‹”À¸Lß#94s‰4‹lÞ#[‰ÁÁá)ÁÁፁÀ°@ß#¿Dß#B‰8±°‹†Hß#@º‰Ñº÷ñ‰–Hß#ۍƒ€ØÐÇD‡`ƒ<>wÿ>[^_]ÉöU‰åWVS‹M‹] ‹u‹}úù™w!I‰ÐÁà)ÐÁàº@ß#öD0tfƒ|(uû¸ÿÿÿÿëy…ÛtI‰ÂÁâ)‹Õà#‰…ötI‰ÂÁâ)‹Õüß#‰…ÿtI‰ÂÁâ)‹Õà#‰ƒ}t(ɍ€ȍ I‰ÊÁâ)ÊÕøß#‹…¤ß#‹U‰û¸[^_]ÉöU‰å‹Múù™w!I‰ÐÁà)ÐÁàº@ß#öD0tfƒ|(uû¸ÿÿÿÿë7I‰ÂÁâ)ÂÁ⍂Àǀ@ß#ǀDß#ǂüß#û¸]ÍvU‰åWVSƒì ƒ=lÞ#ÿt¡lÞ#@‰ÂÁâ)ÂöÕpß#…3ƒ=lÞ#ÿ„ƒìh$ß#j證ƒÄUè¡(ß#;xÞ#|¡$ß#+tÞ#‰Eè¡(ß#+xÞ#ë"v¡$ß#+tÞ#H‰Eè¡(ß#+xÞ#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыlÞ#R‰ÐÁà)Ð) Ōß#ƒì QènüÿÿƒÄƒ=|Þ#ÿtƒì ÿ5|Þ#ÿHÞ#Ç|Þ#ÿÿÿÿƒÄ‹ -lÞ#I‰ÐÁà)Ћ<ÅDß#ƒì‹½ Þ#QWÿP<ƒÄ¿4½ƒì ‹† Þ#WÿP$‰ÃƒÄƒûÿt%ƒì[‰ÐÁà)ЋÅDß#‹… Þ#SPÿR4ƒÄ븅Àx»ƒûÿuG뫍v‹5lÞ#‰€Þ#‰lÞ#[‰ÐÁà)Ð;Őß#t0»@ß#‰ö¡lÞ#@‰ÂÁâ)‹TÓP‰lÞ# R‰ÈÁà)È;TÃPu×;5lÞ#tƒìhlÞ#jÿlZ#ƒÄ‹ -lÞ#I‰ÐÁà)ÐÁà¾@ß#fÇD(‹¸Dß#ƒì‹½ Þ#‹€Þ#¸;lÞ#•ÀPQWÿS8¡lÞ#@‰ÂÁâ)ƒÄöDÖ1„Ü¡€Þ#;lÞ#…Ë¡$ß#‰EèMè¡lÞ#@‰ÂÁâ)»Lß#‹DÓ@º@B‰Ö™÷þ’’’Áâ‰Ö5(ß#‰q¿¡/¸D‰ø÷î‰×Áÿ‰ð™‰þ)Ö¡lÞ#@‰ÂÁâ)‹\Ó@ºƒÞC‰Ø÷êÁú‰ØÁø)2Eè‹AºÊš;‰Ó™÷û‰Qjhä="ÿuìÿuèÿDÞ#‰ÃƒÄƒûÿuƒìÿ5lÞ#jèû7ƒÄ‰|Þ#¡$ß#£tÞ#¡(ß#£xÞ#eô[^_]ÉöU‰åWVSƒìÇО%úÿuèD»ƒÄ¿Dß#¾@ß#‰ö[‰ÂÁâ)ÂÁâÇ:ÿÿÿÿǂLß#ÆDB fÇD0fÇD0
-fÇD0 fÇD0B0Ç0Ç8ǀHß#ǀLß#‚„ß#Ç@ÇǂŒß#BP‰0Ç8ÇD`DŽÐ‚â#Ç@Ǎ‚àÇ0ÿÿÿÿÇ8ÿÿÿÿ‚°Ç8ǀHß#ǀLß#ÂÀÇ2Ç:ºۍƒ€ v
-ÇD‡`Bƒúvï[‰ÐÁà)ЍÅÀǀHß#ÿÿÿÿǀLß#ºۍƒ€ 
-DŽ†ÐBƒú~ìCû™Žƒþÿÿ»¹Hß#[‰ÂÁâ)C‰DÑP‰Ãû˜~åÇ@œ%ÿÿÿÿ»™¹Lß#[‰ÂÁâ)Cÿ‰DÑP‰Ã…ÛéÇœß#ÿÿÿÿÇäÞ#ÇhÞ#Ç`Þ#Ç ß#Ç€Þ#ÿÿÿÿÇlÞ#ÿÿÿÿÇ|Þ#ÿÿÿÿÇxÞ#ÇtÞ#ÇpÞ#ÇdÞ#Ç@Þ#èÚè}è42ƒì ÿuèqÉÿÿ£èÞ#ƒÄ=×Övƒì hà/#èÇ$è »ƒÄ¸ƒ=èÞ#”À‰Eè]è¡èÞ#‰CÇО%躂ƒì S豌Ç$x>"èÇÇ$¸("聎Ç$Ð="蕎ƒÄjjèEÿtZ#ƒÄh$ß#jèLƒèOùÿÿèê›f£àÞ#¡lÞ#@‰ÂÁâ)¾@ß#¿DÖ‰$èϛÇ$è7ŽÿpZ#ÇО%ƒÄ»ƒ=hÞ#ŸÃSjèɃă= ß#teè„ Ç8Z#ƒìh$ß#j軂è^›f£àÞ#è³øÿÿÇ$Ð="èǍ¡lÞ#@‰ÂÁâ)¿DÖ‰$è7›Ç$蟍ƒÄÇО%ƒìSjèCèÇО%ƒÄjjè(ƒÄúƒ=hÞ#t"ƒìÿ5hÞ#h 0#èP¬Ç$ÿÿÿÿèX¹ƒÄƒì jèK¹ƒÄeô[^_]ÃU‰åSƒìƒ=8Z#…•èW‰…Àuú腚‹lÞ#R‰ÑÁá)Ñf‰ÍHß#‹E£hÞ#Ç8Z#ƒ=lÞ#ÿ„ƒìh$ß#j藁ƒÄUð¡(ß#;xÞ#|¡$ß#+tÞ#‰Eð¡(ß#+xÞ#ë ¡$ß#+tÞ#H‰Eð¡(ß#+xÞ#ʚ;‰B‹Mð ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ôºÓMb‰Ø÷êÁú‰ØÁø)ÂыlÞ#R‰ÐÁà)Ð) Ōß#ƒì QèZôÿÿƒÄƒ=|Þ#ÿtƒì ÿ5|Þ#ÿHÞ#Ç|Þ#ÿÿÿÿƒÄ‹ -lÞ#I‰ÐÁà)ЋÅDß#ƒì‹… Þ#QPÿR<Ç€Þ#ÿÿÿÿÇlÞ#ÿÿÿÿƒÄèü‡…Àtƒì ¿àÞ#Pè,™ƒÄëvƒì ¿àÞ#Pè™èkƒÄû‹]üÉÉöU‰åSƒìÇEøÿÿÿÿ»º Þ#¡ Þ#ƒx(t1ƒì‹šUøRSÿP(ƒÄ…Àu¸ÿÿÿÿëCƒûwº Þ#‹šƒx(uи‹]üÉÉöU‰åƒìè è+ÉÉöU‰åƒìÇ|Þ#ÿÿÿÿè§êÿÿÉÐU‰åSƒìœúX‰Ãƒ=О%tƒ= ß#t‰ØPëƒì jè–ýÿÿƒÄ‰ØP‹]üÉÉöU‰åƒìÿuèzýÿÿƒÄÉÐU‰åSƒì‹UœúX‰ÃƒìRjèZ‰ÂƒÄ‰ØP‰Ð‹]üÉÉöU‰å¸hÞ#ƒ=lÞ#ÿt‹lÞ#R‰ÐÁà)ЍÅ ß#]ÉöU‰åSƒìœúX‰Ãƒ=О%tƒ= ß#t‰ØPëƒì ÿuèíüÿÿƒÄ‰ØP‹]üÉÐU‰å]ÍvU‰åWVSƒì ÇEðÇE컍[ …ƒ¹È‡#t[¿À‡#ƒ<9tP‹lÞ#ҍ‚€Ð؍…о@ß#ƒ<0t+ûƒì ÿ40ÿ9ƒÄú‹lÞ#ҍ‚€Ð؋´†Ð uìCƒû~Œƒ}ìt -ÿEðƒ}ðŽmÿÿÿeô[^_]ÐU‰åVSº¾À‡#»Ä‡#¹È‡#vRÁàÇ0B‰Çƒú~ãǸ#ÿÿÿÿÇÀ#Çȇ#ÇÀ‡#Çć#ÿÿÿÿ[^]ÐU‰åS‹Múƒ=À#ÿu û¸ ënv¡À#@Ǖȇ#‰¡À#@‹…ć#£À#‹@‹U ‰…À‡#º»@ß#‰öҍ‚€ÐDŽƒÐBú™~ßû¸‹$ÉÃU‰åú¡lÞ#À’ÂU‹•à#û]ÍvU‰å‹Múƒùw -Iƒ<…ȇ#u û¸ë%v¡lÞ#À’ÂʋE ‰•à#û¸]ÃU‰åS‹]œúX‰Áƒûw -[ƒ<…ȇ#u‰ÈP¸ë.v[Áà‹À#‰Ä‡#ǀȇ#‰À#‰ÈP¸‹$ÉÃU‰åWVSƒì ¡lÞ#‰Eð‰ÂÑâ‰ÐÁà)ЍÅ¿@ß#öD0 tm‹E‰‚ à#‹UðÑâUð‰ÐÁà)ЁLÇ0@‹UðÑâUð‰ÐÁà)ЍÅÀºHß#ƒ<ÿt,‹4v‰ÃÁã)ÃÁ㋃Dß#ƒì‹… Þ#VPÿRD‰tPƒÄ¹»@ß#;MðtI‰ÐÁà)ЋUð9TÃP„ˆAù™~ۋUðÑâUð‰ÐÁà)Ѓ<Ŕß#t[»Dß#ûƒì ‹UðÑâUð‰ÐÁà)ЋDÃPÿpÿƒÄú‹EðÑàEð‰ÂÁâ)ÕP‹‹@‰‹UðÑâUð‰ÐÁà)Ѓ|ÃPu«èJüÿÿƒì ‹EðÑàEð‰ÂÁâ)»@ß#¿DÓPèÔyƒÄEðPjÿlZ#‹Eð@‰ÂÁâ)ՃÄöD0@u%ƒì·D.P‹Eð@‰ÂÁâ)Âÿ4ÕLß#èÁ ƒÄ»;dÞ#sƒì‹ß#ÿuðSÿP(ƒÄC;dÞ#rã‹MðI‰ÐÁà)ЋÅDß#ƒì‹… Þ#QPÿRPÇlÞ#ÿÿÿÿÇ€Þ#ÿÿÿÿ‹Eð@‰ÂÁâ)ƒÄöÕpß#u&ÿ -`Þ#ƒ=`Þ#uBèZúÿÿë;ƒìRjèY+ƒÄëg‹Eð@‰ÂÁâ)ÂöÕpß#uÿ - ß#ƒ= ß#uèúÿÿƒìh$ß#jèÒyƒÄƒ=|Þ#ÿtƒì ÿ5|Þ#ÿHÞ#Ç|Þ#ÿÿÿÿƒÄè­ïÿÿeô[^_]ÐU‰åVS‹uúv‰ÐÁà)ÐÁàº@ß#öD0ufƒ|(uèѼNJû¸ÿÿÿÿ麍v‰ÐÁà)ÐöÅqß#tû雉ö;5lÞ#uJv‰ÐÁà)л@ß#‹DÃ0©t0©u)ƒì jè¥üÿÿ¡lÞ#@‰ÂÁâ)¿DÓ‰$襑ƒÄ»ëvC;<Z#}ƒìÝÿ°ä#Vÿà#ƒÄ…Àtٍv‰ÐÁà)Ё Åpß#û¸eø[^]ÍvU‰åWVSƒì ‹Ef‰Eòf…Àuèâ»ÇŒ¸ÿÿÿÿé‰öú¡€Þ#@‰ÂÁâ)Âf‹Mòf; Õlß#”Eñ¾¿@ß#‰öv‰ÐÁà)ÐÁà‹T0÷Â…ˆƒÀ fƒ|8t}÷Âuuf‹Mòf9L8 uj;5lÞ#u!÷Ât÷Âuƒì jè{ûÿÿƒÄëC‰ö»ëC;<Z#}ƒìÝÿ°ä#Vÿà#ƒÄ…Àtٍv‰ÐÁà)ЁLÇ0Fþ™ŽNÿÿÿ€}ñt(ƒì ¡€Þ#@‰ÂÁâ)¿ÕHß#P萃Äëvû¸eô[^_]ÉöU‰åWVSƒì ¾¿@ß#v‰ÐÁà)ÐÁàfƒ|(tL÷D0
-uB»ë‰öC;<Z#}ƒìÝÿ°ä#Vÿà#ƒÄ…Àtٍv‰ÐÁà)ЁLÇ0Fþ™~–eô[^_]ÉöU‰åSƒì¡lÞ#@‰ÂÁâ)»@ß#‹DÓ0©t7©u0©t)ƒì jè"úÿÿ¡lÞ#@‰ÂÁâ)¿DÓ‰$è"ƒÄ‹]üÉÉöU‰åS‹M‹] ¡<Z#ʼnŠà#‰šä#@£<Z#‹$ÉÍvU‰åƒìúÿuè½ùÿÿ¡lÞ#@‰ÂÁâ)¿ÕHß#‰$躎ƒÄÉÐU‰åVS¶uœúX‰Ãƒ=‘#ÿuèH¹Ç‚‰ØP¸ÿÿÿÿéۋ -‘#‰ÊÁâ‹‚ŒŽ#£‘#‹E‰‚€Ž#‹E ‰‚„Ž#‰ðƒà‰‚ˆŽ#‰ðƒàƒøtOƒø
-ƒøt -ësvƒøtSëi‰ÈÁàǀŒŽ#ÿÿÿÿƒ=‘#ÿu‰ -‘#ë¡‘#Áà‰ˆŒŽ#‰ -‘#ëH‰ö‰ÊÁâ¡‘#‰‚ŒŽ#‰ -‘#ë.‰ÊÁâ¡ ‘#‰‚ŒŽ#‰ - ‘#ë‰ÊÁâ¡‘#‰‚ŒŽ#‰ -‘#‰ØP¸[^]ÐU‰åƒìƒ=pÞ#uƒì h@0#èŒÇ$謃ġpÞ#P‰pÞ#ÉÐU‰åƒìƒ=dÞ#uƒì h_0#èPÇ$èÌ«ƒÄ¡dÞ#P‰dÞ#ÉÐU‰åWVS‹E‹u ‹}»‹HÇöt<€9t5‹ ‰‡€: t€:t‰öC€< t€< uó€< uÆ Cÿ€< uÌÿ[^_]ÐU‰åWVSì¬‹EµTþÿÿ½Xþÿÿ»‹HDžTþÿÿöt<€9t5‹ ‰‡€: t€:t‰öC€< t€< uó€< uÆ Cÿ€< uÌÿƒì…XþÿÿPÿµTþÿÿ詶ÿÿƒÄeô[^_]ÉöU‰å¸¹ŒŽ#v‰ÂÁâ@‰
-ƒø&~òÇü#ÿÿÿÿÇ‘#ÿÿÿÿÇ‘#ÿÿÿÿÇ‘#ÿÿÿÿÇ ‘#ÿÿÿÿÇ‘#ÿÿÿÿÇ‘#]ÉöU‰åWVSƒì ‹E‹} ƒøt4ƒø ƒøtéЃøt3ƒøtB鳐‹‘#Ç‘#ÿÿÿÿë:‰ö‹‘#Ç‘#ÿÿÿÿë&‰ö‹ ‘#Ç ‘#ÿÿÿÿë‰ö‹‘#Ç‘#ÿÿÿÿÇ@Þ#ƒûÿtM¾ŒŽ#…ÿt‰ØÁàƒ¸ˆŽ#uƒì ‰ØÁàÿ°„Ž#ÿ€Ž#ƒÄ‰Ù‰ØÁà‹0‰Â¡‘#‰2‰ -‘#ƒûÿu¸Ç@Þ#eô[^_]ÉöU‰åƒìEüPEøPEôPEðPèI‡Ç$ ‘#èÅӃÄjjhÿÿjh$‘#h ‘#èðɃÄjjhÿÿÿhh@‘#h ‘#èÐɃÄjjhÿÿÿþhh\‘#h ‘#è°ÉƒÄ ƒ}ütƒì‹EüHPÿuøh ‘#èzȃă}ôtƒìÿuôÿuðh ‘#è^ȃÄÉÐU‰åƒì‹E…Àu¸ëƒìjPh ‘#èʃÄÉÍvU‰åƒìÿuÿuÿu ÿuh ‘#è¸ËƒÄ ÉÍvU‰åƒì ÿuÿuÿuÿuÿu ÿuh ‘#è²ËƒÄ ÉÐU‰åƒì ÿu ÿuh ‘#èfЃÄÉÐU‰åƒìÿuh ‘#èM΃ÄÉÃU‰åƒìÿuh ‘#èM҃ÄÉÃU‰åƒì jÿuh ‘#èSɃÄÉÉöU‰åƒì ÿu ÿuh ‘#èþσÄÉÐU‰åƒìh ‘#è ÎÇ$ ‘#è ҃ÄÉÍvU‰åWVSƒì} ‹uEðPh´0#VèÖ¥‰ÃƒÄƒûuƒ}ðvÇEðƒÆë ‰öÇEð‹Eðº;@Z#~hƒìWVh€‘#蜃Äj
-VèK›ƒÄ»…À•ÃœúX‰Æƒìh€‘#‹Eðÿ4…DZ#h¹0#è]™ƒÄ…Ûuƒì h\1#èI™ƒÄ‰ðPº‰Ðeô[^_]ÍvU‰åVSƒìu ‹]EôPh´0#S襃ăøuƒ}ôvÇEôƒÃëÇEô‹Eôº;@Z#~JƒìVSh€‘#èB›ƒÄj
-S臚ƒÄœúX‰Ãƒìh€‘#‹Eôÿ4…DZ#h¹0#裘ƒÄ‰ØPº‰Ðeø[^]ÉöU‰åVSƒì@‹u‹] ‹EfÇEÈÇEÌÇEÐfÇEÔÇEàÇEäÇEìÇEð‰EØÇEÜÇEè…ÛtT‹C‰E̋C‰EЃ{u
-ÇEÜ1됃eÜߋC ‰EàÇEÀƒì ÿ5€•#è)7ƒÄ+C ‰EċC‰Eì‹C‰EðëD‰öÇEÌÇEЃMÜ ÇEàÇEÀƒì ÿ5€•#èâ6ƒÄ‰EÄÇEìÇEðèI±‹ƒì jEÀPEÈPÿuhÁ0#èAÞÿÿ‰ƒÄ ƒøÿt ƒì PèòÒÿÿƒÄ豉¸ƒ>ÿ”ÀHƒàêƒÀeø[^]ÍvU‰åƒìÿ5€•#èc6ƒÄÉÉöU‰åƒìÿ5€•#èc6ƒÄÉÉöU‰åƒìÿ5€•#è{5ƒÄÉÉöU‰å‹E‹U ‹M£€•#‰„•#‰ -ˆ•#]ÐU‰åVS‹]è°‹0ƒì Sètóÿÿ‰Ãèm°‰0ƒÄ¸…Û•À@eø[^]ÃU‰åƒìúÿuÿu ÿuÿ5€•#èé5ƒÄûÉÍvU‰åWVSƒì ‹}‹uúÿ6ÿu Wÿ5€•#è3‰ÃƒÄ…Ûu#ƒìÿ5€•#èx5ƒÄ+PWÿ5ˆ•#èffƒÄû‰Øeô[^_]ÃU‰åSƒì ‹] Sÿuè¡eƒÄÿ5€•#è75ƒÄ+‰¸‹]üÉÉöU‰åVSƒì‹u‹] …Ûtƒ;uÇEôƒìEôPë7ƒ;uÇEðƒìEðPë!vÇEèƒì jè_þÿÿ+CUè‰BƒÄRVèT*ƒÄeø[^]ÉöU‰åWVSƒì‹u ‹}ÇEðÿ5€•#è“4‰ÃƒÄ9Þƒþ} ¸ëG‰öƒì ÿuèµ*ƒÄ W‰Ø)ðPÿuè eƒÄ…ÀtÇEð…ÿt‰Ø+‰ƒì ÿuèÙ*‹EðƒÄeô[^_]ÍvU‰åƒì‹Eúƒ8u -ÇûÿU ëû¸ÉÃU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)ÐÁà‹â#‰U苀â#‰Eìƒùÿtw ‰ÆȉÂÁâ)‹Eè‰Ã;Õâ#|[‰Eäv1‰ÐÁà)ЍÅ;šâ#u ‹Eì;‚â#|1‰Ï‰ÐÁà)Ћ Řß#ƒùÿt4 1‰ÐÁà)Ћ]ä;Åâ#}«ƒÿÿt‰ÐÁà)ЋU‰Řß#ë‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰Ŝß#‹E@‰ÐÁà)ЍÅP‰ˆHß#‰¸Lß#ƒÄ[^_]ÍvU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)лDß#‰]ð‹´ÃЃùÿtCI‰ÐÁà)Ð;´ÃÐr0»Hß#‰Ï‰ÐÁà)ЋLÃPƒùÿtI‰ÐÁà)ЋUð;´ÂÐsՃÿÿt‰ÐÁà)ЋU‰Řß#ë
-‰ö‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰Ŝß#‹E@‰ÐÁà)ЍÅP‰ˆHß#‰¸Lß#ƒÄ[^_]ÍvU‰åWVS‹}‰ÐÁà)ЍÅP‹Lß#‹°Hß#ƒúÿu ‹E ‰0ë#‰öR‰ÁÁá)Á»Hß#‰ÐÁà)ЋDÃP‰DËPƒþÿt!v‰ÁÁá)Á»Lß#‰ÐÁà)ЋDÃP‰DËP[^_]ÃU‰åS‹]‹ ‰Èƒùÿt/I‰ÐÁà)ЋŘß#‰ƒøÿt@‰ÐÁà)ÐÇŜß#ÿÿÿÿ‰È‹$ÉÃU‰åS‹]‹M ƒ9ÿt‹@‰ÂÁâ)‰՜ß#[‰ÂÁâ)ÕP‹‰‚Hß#ǂLß#ÿÿÿÿ‰‹$ÉÃU‰åWVSƒì ‹M‹] ‹}ÇEðú¡lÞ#@‰ÂÁâ)4Õ@ß#…ÿt‹F8‰…ÛtBƒùt"ƒù ƒùt ë*‰öƒùtë!‹F8 ‰F8ë‰ö‹÷Ð!F8ëv‹‰F8ëÇEð‹F8‰Ã÷Ћ —#‰Ñ…ÂtB‰ö‰Ø÷л!Ètv‰Ú©u
-CÑøuòºƒì R范ċ^8‰Ø÷Ћ - —#…ÁuÀ‹F8‰Ã÷ЋV<‰Ñ…Ât=‰Ø÷л!Ètv‰Ú©u
-CÑøuòºƒì Rè|ƒÄ‹^8‰Ø÷ЋN<…ÁuÃû‹Eðeô[^_]ÍvU‰åVS‹u‹M ¸…É„¸ƒù‡òv‰ÐÁà)Ðfƒ<Åhß#u -¸éӍvú‰ÈÁàö€¨•#uƒ¸ •#uû魉öv‰ÐÁà)ЍÅ|ß#ƒùvèÍ©Çë
-¸Óà »ëC;hZ#}ƒìÝÿ°d˜#Vÿ`˜#ƒÄ…Àtٍv‰ÐÁà)ЍÅfƒ»hß#u&ƒìh¤—#VèÔüÿÿ‹ƒDß#ƒÄ‹… Þ#VPÿRDƒÄèSm…Àuèû¸eø[^]ÐU‰åWVSƒì‹]‹U ƒûvè©Ç¸ÿÿÿÿévœúX‰Á‰Mðƒ}t‰ÞÁæÆ •#ü¹‹}ó¥…Òt‰ßÁçÇ •#ü¹‰Öó¥…Ò„ºöB…°ƒ:‡§ƒ<À—#ÿtq4‰uìºÀ—#‹@Áà‰Eè‰ÇƒÇ‹ -à¤%¸àž%‹U苉E䋇äž%©t -ƒàý‰‡äž%ë‰ö¾À—#‹Uì‹2@‰ Õàž%‰Áƒ}äÿu»‰ -à¤%ǝÀ—#ÿÿÿÿƒûv -è¨Çë¸þÿÿÿˆÙÓÀ! —#‹uð‰ðP¸ƒÄ[^_]ÐU‰åWVSƒì,‹] ¸…Û„~¸ƒû‡pœúX‰Â‰UԉÞÁæ}؁Ơ•#ü¹ó¥÷Eàuƒ}Øu ‰ÐPé5vƒûv膧Ǹÿÿÿÿ됸ˆÙÓà# —#…Àt -‹UԉÐPéûƒûvèN§Çë‰ö¸ˆÙÓà  —#‹5¤—#ƒþÿ„ô¸‰ÇˆÙÓçvv‰ÐÁà)Ѝŀß#ƒûvèý¦Ç¸ÿÿÿÿë‰ú#‰Ð…À„–v‰ÐÁà)ÐÁàfƒ¸hß#u|ß#ƒûv -輦Çë 8ƒìh¤—#Vèúÿÿv‰ÃÁã)ÃÁ㋃Dß#ƒÄ‹… Þ#VPÿRDÃà¾@ß#ƒÄƒ<3ÿtƒì ÿ43ÿHÞ#Ç3ÿÿÿÿƒÄ‹MԉÈPéîv‰ÐÁà)Ћ4Řß#ƒþÿ…ÿÿÿ¾¸‰ÇˆÙÓç‰öv‰ÐÁà)ÐÁàfƒ¸hß#„…xß#ƒûvèö¥Ç¸ÿÿÿÿ됉ú#‰Ð…Àu^v‰ÐÁà)ЍÅ|ß#ƒûvèÃ¥Çëv 8»ëvC;hZ#}0ƒìÝÿ°d˜#Vÿ`˜#ƒÄ…ÀtÙëvFþ™ŽSÿÿÿèzi…Àuè9 -‹MԉÈP¸eô[^_]ÐU‰åWVSƒì,¸ƒ} „T¸ƒ} ‡EœúX‰Â‰Uԋu Áæ}؁Ơ•#ü¹ó¥÷Eàuƒ}Øu ‰ÐPé ‰ö÷Eàu;ƒ} vèܤǸÿÿÿÿëv¸ŠM Óà# —#…Àt ‹UԉÐPéÃ=à¤%ÿu‹MԉÈP¸ 鮉ö‹5à¤%vÁà¹àž%‹‰à¤%‹U ‰äž%‹U‰èž%‹U‰ìž%‹lÞ#‰ðž%Çÿÿÿÿ‹E ÁàºÀ—#ƒ<ÿu‰4ë>‰ö‹M ‹À—#‰ÁЃ<Åàž%ÿt»àž%
-‹Í 
-ƒ<ÃÿuîR‰4Åàž%ƒ} vèé£Ç됸ŠM Óà  —#‹5¤—#ƒþÿ„û¸‰ÃŠM Ó㐍v‰ÐÁà)Ѝŀß#ƒ} v蘣Ǹÿÿÿÿë v‰Ú#‰Ð…À„šv‰ÐÁà)ÐÁàfƒ¸hß#u|ß#ƒ} vèS£Çëv ƒìh¤—#Vè¨öÿÿv‰ÃÁã)ÃÁ㋃Dß#ƒÄ‹… Þ#VPÿRDÃà¾@ß#ƒÄƒ<3ÿtƒì ÿ43ÿHÞ#Ç3ÿÿÿÿƒÄ‹MԉÈPé÷v‰ÐÁà)Ћ4Řß#ƒþÿ…ÿÿÿ¾¸‰ÃŠM Ó㐍v‰ÐÁà)ÐÁàfƒ¸hß#„…xß#ƒ} v艢Ǹÿÿÿÿë‰Ú#‰Ð…Àu^v‰ÐÁà)ЍÅ|ß#ƒ} vèV¢Çë‰ö »ëvC;hZ#}0ƒìÝÿ°d˜#Vÿ`˜#ƒÄ…ÀtÙëvFþ™ŽSÿÿÿèf…Àuƒ=dZ#uèÄ ‹MԉÈP¸eô[^_]ÃU‰åWVSƒì‹u‹]¡lÞ#@‰ÂÁâ)<Õ@ß#èŠú¡ —##„Hºv©u=BÑøuô¾ƒ<µÀ—#ÿue‹E ‰0Ç@Ç@W<ƒþvèa¡Ç됉Öëɸþÿÿÿ‰ñÓÀ!ƒþvè?¡Çëv¸þÿÿÿ‰ñÓÀ! —#ûév µºÀ—#‹[‹Åàž%‰ƒøÿu"ƒþvèñ Ç됸þÿÿÿ‰ñÓÀ! —#W<ƒþv -èÌ Çë ¸þÿÿÿ‰ñÓÀ![Áâ¹äž%‹
-‹u ‰‹‚èž%‰F‹‚ìž%‰FƒÂ‹
-©t ƒàý‰
-ëv[¡à¤%‰Õàž%‰à¤%ûéI‰Öë‹G<#tUº©uéBÑøuô¾‹E ‰0Ç@Ç@W<ƒþvè Çëv¸þÿÿÿ‰ñÓÀ!ûéëv…Ûtƒ;uƒ{u -û¸ éÓ‰ö‹‰G@úèu‹lÞ#R‰ÑÁá)Ñf‰ÍHß#ƒìh$ß#jèN\ƒÄUè¡(ß#;xÞ#|¡$ß#+tÞ#‰Eè¡(ß#+xÞ#ë¡$ß#+tÞ#H‰Eè¡(ß#+xÞ#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰ÁáºÓMb‹Eì÷êÁú‹EìÁø)ÂыlÞ#R‰ÐÁà)Ð) Ōß#ƒì QèÏÿÿƒÄƒ=|Þ#ÿtƒì ÿ5|Þ#ÿHÞ#Ç|Þ#ÿÿÿÿƒÄ‹ -lÞ#I‰ÐÁà)ЋÅDß#ƒì‹… Þ#QPÿRHƒÄh¤—#ÿ5lÞ#èæòÿÿ¡lÞ#@‰ÂÁâ)ÂfÇÕhß#ƒÄ…Û„’ƒìEàPjè[U؃Ä‹Eà‰E؋EäC‰B…Ày -ÿM؁Bʚ;됁zÿɚ;~ ÿjʚ;ÿ5lÞ#hdp"ÿuÜÿuØÿDÞ#‰ÃƒÄƒûÿuƒìÿ5lÞ#jèù ƒÄ¡lÞ#@‰ÂÁâ)‰Õ â#ÇlÞ#ÿÿÿÿÇ€Þ#ÿÿÿÿè‡Ðÿÿƒì ¡lÞ#@‰ÂÁâ)»@ß#¿DÓPèsè”ÇG@¡lÞ#@‰ÂÁâ)ƒÄöDÓ2tû¸ é~‰Öë%¡ —##„ûº‰ö©uáBÑøuô¾ƒ<µÀ—#ÿu=‹M ‰1ÇAÇAƒþv -è@Çë¸þÿÿÿ‰ñÓÀ! —#ûé vƒì µƒÀ—#Pèúðÿÿ‰ÇƒÄƒ»À—#ÿu#ƒþvèòœÇë‰ö¸þÿÿÿ‰ñÓÀ! —#Áâ¹äž%‹
-‹] ‰‹‚èž%‰C‹‚ìž%‰CƒÂ‹
-©t ƒàý‰
-ëv¡à¤%‰Õàž%‰=à¤%ûël‹G<#…Àuû¸ë`v‰Öë‹G<º#t ©uéBÑøuô¾‹E ‰0Ç@Ç@W<ƒþvè/œÇëv¸þÿÿÿ‰ñÓÀ!û¸eô[^_]ÍvU‰åWVSƒì ‹}¡lÞ#@‰ÂÁâ)4Õ@ß#è¹ú‹F<#…Àt è¦û颋‰F@úèq‹lÞ#R‰ÑÁá)Ñf‰ÍHß#ƒìh$ß#jè6XƒÄUè¡(ß#;xÞ#|¡$ß#+tÞ#‰Eè¡(ß#+xÞ#ë¡$ß#+tÞ#H‰Eè¡(ß#+xÞ#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыlÞ#R‰ÐÁà)Ð) Ōß#ƒì QèúÊÿÿƒÄƒ=|Þ#ÿtƒì ÿ5|Þ#ÿHÞ#Ç|Þ#ÿÿÿÿƒÄ‹ -lÞ#I‰ÐÁà)ЋÅDß#ƒì‹… Þ#QPÿRHƒÄh¤—#ÿ5lÞ#èÍîÿÿ¡lÞ#@‰ÂÁâ)»@ß#fÇDÓ(ÇlÞ#ÿÿÿÿÇ€Þ#ÿÿÿÿè Íÿÿ¡lÞ#@‰ÂÁâ)¿DÓ‰$è™oè‹F<#ƒÄ…Àuû¸ë èÿû¸eô[^_]ÐU‰åSƒì‹]úEðPjè¢VƒÄƒ=H˜#ÿu
-ÇEèëWMèUð¡D˜#;B|¡@˜#+Eð‰Eè¡D˜#+Bëv¡@˜#+EðH‰Eè¡D˜#+Eôʚ;‰Aƒì ÿ5H˜#ÿHÞ#ƒÄ…ÛtN]ð‹Eð£@˜#‹Eô£D˜#jhÄp"ÿuôÿuðÿDÞ#‰ÃƒÄƒûÿuƒìÿ5lÞ#jè:ƒÄ‰H˜#ë -vÇH˜#ÿÿÿÿû‹Eè‹]üÉÐU‰åVSƒì‹uƒ<µÀ—#ÿuC‰uèÇEìÇEð¡lÞ#‰Eôƒþvèü˜Ç鮐¸þÿÿÿ‰ñÓÀ! —#降 µºÀ—#‹[‹Åàž%‰ƒøÿu"ƒþv豘Ç됸þÿÿÿ‰ñÓÀ! —#[Áà¹äž%‹‰U苐èž%‰U싐ìž%‰Uð‹ðž%‰UôP‹
-©tƒàý‰
-ë[¡à¤%‰Õàž%‰à¤%ƒìEèPVè
-ƒÄeø[^]ÃU‰åVSƒì¡lÞ#@‰ÂÁâ)4Õ@ß#‹F0©…Í -‰F0‹F8‰Ã÷Ћ —#‰Ñ…ÂtA‰Ø÷л!Ètv‰Ú©u
-CÑøuòºƒì Rè„þÿÿƒÄ‹^8‰Ø÷Ћ - —#…ÁuÀ‹F8‰Ã÷ЋV<‰Ñ…ÂtZ‰Ø÷л!Ètv‰Ú©u
-CÑøuòº‰UèÇEìÇEð¡lÞ#‰EôƒìEèPRèƒÄ‹^8‰Ø÷ЋN<…Áu¦f0ÿïÿÿeø[^]ÃU‰åWVSƒì,‹]œúX‰Â‰UÌ¡lÞ#@‰ÂÁâ)Õ@ß#‰UЉÞÁæ}؁Ơ•#ü¹ó¥÷Eàuƒ}Ø„îƒ}Øÿ„ä÷EàuCƒ}Øu=ƒìShÌ0#èw}ƒÄ÷Eàtƒì‹M ÿqhâ0#èX}ƒÄƒì jè—ÓÿÿƒÄ‹UЋB8‰EԉƍUԃûv -èh–Çë ¸ˆÙÓà ‹EÔ E܉EԋUЃÂ<ƒûv -è<–Çë ¸þÿÿÿˆÙÓÀ!‹EԋUЉB8û÷Eàtƒìjÿu SÿUäëƒìj‹M ÿqSÿU؃Äú‹EЉp8‹ỦÐPeô[^_]ÃU‰åWVSƒì ‹}‰ÐÁà)ÐÁà¾@ß#fƒ|(uF˜àƒ<3ÿtƒì ÿ43ÿHÞ#Ç3ÿÿÿÿƒÄƒìh¤—#Wèúèÿÿ‰ÂÁâ)‹ÕDß#ƒÄë ‰ÐÁà)ÐÁàfƒ¸hß#u!‹Dß#ƒì‹• Þ#WRÿPD¸ƒÄë‰ö¸eô[^_]ÍvU‰åWVSƒì º¿¨•#¾¤•#»¬•#¹À—#‰ö‰ÐÁàǀ •#Ç8Ç0ÇÇ‘ÿÿÿÿBƒúvϺ»àž%¹äž%RÁàB‰ÇDƒú>~éÇȤ%ÿÿÿÿÇܤ%Çà¤%Ç —#Ǥ—#ÿÿÿÿÇH˜#ÿÿÿÿº¹™#»™#‰öRÁàÇÇÿÿÿÿÆDBƒú~áƒìjhDk"ènÚÿÿƒÄeô[^_]ÍvU‰å‹EǸ]ÐU‰å‹EÇÿÿÿÿ¸]ÐU‰åƒì‹U‹M ƒùvèê“Ǹÿÿÿÿ됸Óà ¸ÉÃU‰åƒì‹U‹M ƒùv趓Ǹÿÿÿÿ됸þÿÿÿÓÀ!¸ÉÃU‰åƒì‹M ƒùv腓Ǹÿÿÿÿë ¸Óà‹U#ÉÉöU‰åƒì ÿuÿu ÿuèÔçÿÿƒÄÉÍvU‰åWƒì$‹UEè‰E丹‹}äüó«ƒìjÿuäRèBñÿÿƒÄ…Àu -‹Uè‹E ‰¸‹}üÉÐU‰åƒì jÿu ÿuèñÿÿƒÄÉÃU‰åƒì‹E…Àu¸ëƒìPÿu ÿuèíðÿÿƒÄÉÃU‰åƒìÿuÿ5lÞ#è`èÿÿƒÄÉÍvU‰åVSƒì ‹]‹E ‰EèÇEìÇEð脒‹0ƒìEØPEèPSèAéÿÿƒÄ»ÿÿÿÿ…Àu ÷Eàu‹]ØèT’‰0‰Øeø[^]ÐU‰å‹M¡lÞ#@‰ÂÁâ)¡ —# Õ|ß#‰¸]ÉöU‰åSƒì‹E‹U ú‹lÞ#‰lÞ#ÇdZ#jPj jèœìÿÿƒÄÇdZ#‰lÞ#û‹]üÉÍvU‰åS‹M‹] ¡hZ#ʼnŠ`˜#‰šd˜#@£hZ#‹$ÉÍvU‰åVS‹]Cÿƒøv苑Ç~¸ÿÿÿÿëp‰öœúX‰Æ[€<…™#u‰ðPèa‘ǸÿÿÿÿëF[Áâ¹™#‹E ‰
-‹E‰‚™#ÆD
-ƒìjhq"Sè¹T·Ã‰$èÒeƒÄ‰ðP¸eø[^]ÍvU‰åƒì¸ÉÍvU‰åƒì ‹E‰EèÇEìÇEð‹lÞ#‰UôUèRPè›ùÿÿƒÄÉÉöU‰åVS‹uv‰ÃÁã)ÃÁã¸@ß#DŽàÿÿÿÿL0ƒìh¤—#Vèõãÿÿ‹ƒDß#ƒÄ‹… Þ#VPÿRDèç·ÿÿƒÄeø[^]ÐU‰åƒìÇH˜#ÿÿÿÿjjèWèÿÿè¾·ÿÿƒÄÉÐU‰åƒìEüÇEüÿÿÿÿPèôÿÿƒÄÉÐU‰åƒì‹E‹‰EüEüPjÿlZ#‹UüRÁ๙#ƒÄƒ<t ûƒì RÿƒÄú‹Eü@ƒì ÿ4…™#覱ÿÿƒÄÉÐU‰åWVSƒì ‹u ‹]ƒ}t讏Ǹÿÿÿÿén‰öúƒ=À #ÿt ƒ=à¤%ÿuûèƒÇ ¸ÿÿÿÿéCv¡À #‰‹À #Õ)пę#‹DÇ0£À #‹Õ)йÀ™#ÇDÁ0…öu8‹Õ)ÐÇÁ‹Õ)ÐÇÇ‹Õ)ЉÅș#닍<Å)Ǎ<ýÀ™#ü¹ó¥‹Õ)ЍŃºÀ™#u#¡à¤%‰‚è™#@Áàƒˆôž%‹€àž%£à¤%‹Õ)ÐÇÅԙ#ÿÿÿÿ‹Õ)ЍÅؙ#Ç@NjÕ)ЍÅà™#Ç@NjÕ)ÐÇÅì™#û¸ƒÄ [^_]ÃU‰åSƒì‹]ƒûwúÝ)؃<Åð™#uûèÿÇ¸ÿÿÿÿ閍vÝ)ØÁàǀð™#ƒÀºÄ™#ƒ<ÿtƒì ÿ4ÿHÞ#ƒÄÝ)ØÁàƒ¸À™#uE‹è™#R Åöôž%u¡à¤%‰àž%‰à¤%Ý)؋Åè™#@ƒ$Åôž%üû¸‹]üÉÃU‰åWVSƒìL‹E‰E´Áà+E´Áàƒ¸À™#…‹P ‹‚È™#@öÅôž%t¸Ì™#ƒ< „ôÿéì‰ö‹M´Áá+M´Ááy LJ̙#¾È™#‹7@‹à¤%‰Ýàž%£à¤%jÿ41ÿ±Ä™#jèhçÿÿ‹7@ƒ Åôž%錐‹E´Áà+E´Áà¹À™#ƒ<uwPƒ<
-tÿ°È™#ÿ°Ì™#ÿ4
-ëQvÇEÈÇEÌÇEÐÇEÔÇEØÇEÜÇEà‹E´Áà+E´ÁàÈ™#Rÿ°Ì™#EÈPEÄPèÙÙÿÿƒÄ‹E´Áà+E´Åƒ¸È™#u -ƒ¸Ì™#„Àºà™#‹E´Áà+E´ŋ‰E¸M¸‹D‰A‹E¸ƒØ™#‰ƒà™#‹AƒÜ™#‰B…Àyÿ‹à™#Bʚ;ë‰özÿɚ;~ ÿjʚ;‹E´Áà+E´ÿu´hÐs"ÿ4Åä™#ÿ4Åà™#ÿDÞ#‰ÃƒÄƒûÿuƒìÿ5lÞ#jè+ùÿÿƒÄ‹E´Áà+E´‰Åԙ#ë‰ö‹E´Áà+E´ÇÅԙ#ÿÿÿÿeô[^_]ÃU‰åWVSƒì‹u‹}ÇEäƒþw3ƒ}t-‹Exÿɚ;w!‹]{ ÿɚ;wúõ)ðƒ<Åð™#uûèÁŠÇ¸ÿÿÿÿ鐅ÿ„·õ)ðƒ<Åԙ#ÿuÇG ÇGëwƒìEèPjèGÇEäƒÄ¹à™#õ)ðō]è‹D;C|‹+Eè‰G‹D+Cë(¹à™#õ)òÁâ‹+EèH‰G‹D+Eìʚ;‰G ¹Ø™#õ)ðÁà‹‰‹D‰Gõ)ðÅºÄ™#ƒ<ÿtƒì ÿ4ÿHÞ#ƒÄ‹Eƒxu
-ƒx „þºØ™#õ)ð ŋ]‹‰
-‹C‰D
-÷E t¸à™#‹S‰‹S ‰Tëmvƒ}äuƒìEèPjèøEƒÄõ)ð ō‘à™#‹Eè‹]C‰à™#‹EìC ‰B…Àyÿ‰à™#Bʚ;ëzÿɚ;~ ÿjʚ;õ)ðVhÐs"ÿ4Åä™#ÿ4Åà™#ÿDÞ#‰ÃƒÄƒûÿuƒìÿ5lÞ#jè­öÿÿƒÄõ)ð‰Åԙ#û¸eô[^_]ÃU‰åWVSƒì ‹]‹} ƒûwúÝ)؃<Åð™#uûèzˆÇ¸ÿÿÿÿ鷉öÝ)؃<Åԙ#ÿuÇG ÇGëoƒìEèPjèÒDƒÄ¹à™#Ý)؍ōuè‹D;F|‹+Eè‰G‹D+Fë'¹à™#Ý)ÚÁâ‹+EèH‰G‹D+Eìʚ;‰G ¹Ø™#Ý)ØÁà‹‰‹D‰Gû¸eô[^_]ÍvU‰åƒìƒ}t藇Çëv臇ǸÿÿÿÿÉÉöU‰åƒìƒ}tèg‡Ç¸ÿÿÿÿë‰öƒì ÿu èuÄÿÿ¸ƒÄÉÍvU‰åƒì‹E ƒ}tè,‡Ç¸ÿÿÿÿëv…Àt -ÇÇ@è¸ÉÃU‰åƒì‹UƒúwúÕ)Ѓ<Åð™#uûè܆ǸÿÿÿÿëvÕ)ЋÅì™#ûÉÐU‰åWVS¹»Ä™#¿À™#¾Ì™#‰öÍ)ÈÁàÇDÿÿÿÿØ™#ÇBǍP0Ç:ÇD A‰‰Áƒù~ºÇ¼ #ÿÿÿÿÇÀ #[^_]ÐU‰å]ÍvU‰å¸]ÉöU‰åVSœúX‰Ã¡lÞ#@‰ÂÁâ)¾@ß#‹DÖ0©t0©t)ƒì jè"Æÿÿ¡lÞ#@‰ÂÁâ)¿DÖ‰$è"[ƒÄ‰ØPeø[^]ÃU‰åS‹]úût ¸ÿÿÿÿ…ÛuL¡lÞ#@‰ÂÁâ)¹@ß#‹DÑ0Áèƒà‹U ‰¡lÞ#@‰ÂÁâ)Õ0‹
-%ÿþÿÿ ؉
-û¸‹$ÉÉöU‰åS‹]úût ¸ÿÿÿÿ…ÛuL¡lÞ#@‰ÂÁâ)¹@ß#‹DÑ0Áè ƒà‹U ‰¡lÞ#@‰ÂÁâ)Õ0‹
-%ÿýÿÿ ؉
-û¸‹$ÉÉöU‰åWVSƒì ‹} ÇEðú‹EÇÿÿÿÿÇ@¾;5dÞ#s9v‹µß#ƒ{u ƒìWVÿS,ƒÄ…ÀxƒìWÿuVÿS0‰EðƒÄF;5dÞ#rÊû‹Eðeô[^_]ÉöU‰åƒì‹U¸ƒ:ÿt ¸ƒzu‹‹…ß#ƒìRÿ2ÿP4ƒÄÉÍvU‰åƒì‹U¸ƒ:ÿt‹‹…ß#ƒìRÿ2ÿP8ƒÄÉÉöU‰åƒì‹U¸ƒ:ÿt‹‹…ß#ƒìRÿ2ÿP<ƒÄÉÉöU‰åƒì‹U¸ƒ:ÿt‹‹…ß#ƒìRÿ2ÿP@ƒÄÉÉöU‰åVS‹u‹µ Þ#ƒìÿ°ôh1#è^j»ƒÄ‰ö[‰ÐÁà)ÐÁà9°Dß#……ƒÀ º@ß#f|€ttfƒ|tlƒì f‹Dfƒøwƒì ·ÀP訃Äë%v·Ð¸ó0#ú€t¸ÿ0#út¸ 1#P[‰ÐÁà)ÐÁàÿ°â#Tß#PSh€1#è¹iƒÄ Cû™ŽUÿÿÿeø[^]ÉöU‰åWVSƒì ‹E‹… Þ#‰Eð‹¸üƒì ‹Uð‹‚ðøPèk§‰ÆƒÄƒþÿu -¸ÿÿÿÿ…ÿtrOëՐv‰ÐÁà)Ѝ Åöqß#tRQ@»Lß#ƒ<D‹$â#‰ƒìý‰Ø‹Uð‚ðPVèX¥ƒÄ‹Eð˜ðSV聦ƒÄéiÿÿÿ‰ðeô[^_]ÉöU‰åWVSƒì‹E‹… Þ#‰Eð‹Mƒy(…©‹=lÞ#‰ÐÁà)ЍžDß#‹U93…‹M I‰ÂÁâ)ÂÁ⋄Љ„йLß#‹D@‰D@‹„à‰„àƒÂ0¹@ß#‹
-%ÿ÷ÿÿ‹\0ã ؉
-‹UðƒÂ¸ƒ¼º€ÿ•ÀH‹] ‰„š€é¢v‹U R‰ÂÁâ)ÂÁâ»Dß#‹A‰„Ѓyt‹A‰‚Œß#‹A‰„àë-‰ö‹] [‰ÐÁà)ÐÁà‹]ð‹“ô‰Œß#‹“ô‰$â#ƒy$u‹E @‰ÐÁà)Ё Åpß#¸ƒy ”ÀH‹U ‹Mð‰„‘ˆ¸ƒÄ[^_]ÃU‰åWVSƒì ‹U‹<• Þ#ƒ¿t8LJƒì‹E @‰ÐÁà)ЋÅâ#‹—ðÂPÿu 襤酋E @‰ÐÁà)ЍÅöƒqß#t?K@¾Lß#ƒ<11ºDß#‹1„à‰1ƒì‹„Ћ—ðÂPÿu èG¤ë*ƒì‹E @‰ÐÁà)ЋÅâ#‹—ðÂPÿu 诣ƒÄ‹E @‰ÐÁà)ÐfÇÅhß#€eô[^_]ÐU‰åWVSƒìH‹]ÇE¼ÇEÀfÇEÄÇEÈÇEÌÇEÐÇEÔÇEØÇEÜÇEà¶Ã -f‰E¸‹ Þ#‹€ø‰EÈÇE̍E¸jjPhˆ"h%1#è-¬ÿÿ‰ÆƒÄ ƒþÿuƒì hÀ1#èVËÿÿƒÄ‹< Þ#v‰ÐÁà)Ðfƒ<Åhß#tµ€Gƒ<ÿtJÿëE‰öƒìv‰ÃÁã)ÃÁ㍃„ß#PjèJ;fǃhß#€ƒÄ‹ƒâ#‹—ðÂPVèࢃčeô[^_]ÐU‰åWVSƒì‹}h*1#è¾ÊÿÿèÆÿÿ‰EðƒÄ hPh@1#è£ÊÿÿÇ$èwÉÿÿ‰ÃƒÄSh^1#è‡Êÿÿ‹Eð‰… Þ#ƒÄ jhj1#Sè=efÇCÆCÇCx‡"ÇC¤‡"ÇC l}"ÇC$L~"ÇC(°‡"ÇC, "ÇC0¼‡"ÇC4ć"ÇC8Ї"ÇC<„€"ÇC@ˆ"ÇCDœˆ"ÇCHäˆ"ÇCLìˆ"ÇCP„‰"ÇCT̉"ÇCXŠ"ÇC\äŠ"ÇC`‹"ÇCd‹"ÇCh4‹"ÇClL‹"ÇCpd‹"ÇCt|‹"ÇCx”‹"ÇC|¬‹"ǃ€Ä‹"ǃ„Ü‹"¸ƒÄS‰öDŽ‚€ÿÿÿÿ@=™~í‹EH‰ƒüƒì ‹EÁàPè@Èÿÿ‰ƒð¾ƒÄ;u}ƒì ‹ƒððPè柃ÄF;u|åÿçw¿èÿ ¡v¿ ¡‰»ô‹E‰ƒøƒ} tƒìjÿuðh€"è8ÃÿÿƒÄeô[^_]ÐU‰åWVSƒì ‹M‹u ‹]‹ Þ#‰Eð…Éx[; -pÞ#sS‹ Þ#‹@%ÿÿÿ=u=þ™wv‰ÐÁà)Ðfƒ<Åhß#u -¸éèvv‰ÐÁà)Ð9 ÅDß#t -¸&éȍv…Ûuv‰ÐÁà)Ё Åpß#ë)ƒûuv‰ÐÁà)Ё$Åpß#ÿ÷ÿÿë ¸郉öv‰ÐÁà)ÐÁà˜Ð¿Dß#‹U9;t\f¸hß#€u=ƒì‹;‹Mð‹‘ðÂPV蘞‹E‰;ƒÄ‹Uð‹‚ð‹MÈPV赟ƒÄëv‰ÐÁà)ЋU‰Åâ#¸eô[^_]ÍvU‰åVS‹M‹4 Þ#…Éx; -pÞ#s‹ Þ#‹@%ÿÿÿ=t¸ÿÿÿÿëw¡lÞ#@‰ÂÁâ)¸ÿÿÿÿ9 ÕDß#uZúè!P‹lÞ#R‰ÑÁá)Ñ»@ß#f‰DËdžèX­ÿÿ¡lÞ#@‰ÂÁâ)ƒì ¿DÓPèçOè>·ÿÿƒÄû¸eø[^]ÉöU‰å‹E‹… Þ#‹€ü]ÍvU‰å‹E‹… Þ#‹€ô]ÍvU‰åS‹]‹M …ÛxU;pÞ#sM‹ Þ#‹@%ÿÿÿ=u7ù™wI‰ÐÁà)Ðfƒ<Åhß#u¸ëMI‰ÐÁà)Ð9ÅDß#t ¸&ë3‰öI‰ÁÁá)ÁÁá¸öqß#”À‹U‰‹‘â#‹E‰¸‹$ÉÉöU‰å‹E f8t·‹E -9Âu¸ë¸ÿÿÿÿ]ÐU‰å¸ÿÿÿÿ]ÉöU‰å¸]ÉöU‰å]ÍvU‰å¸]ÉöU‰åSƒì ‹E‹M ‹… Þ#I‰ÐÁà)ЋÅâ#‹“ðÂPQè7œƒÄ‹]üÉÍvU‰åWVSƒì ‹E‹u ‹<… Þ#v‰ÐÁà)Ðfƒ<Åhß#tµ€Gƒ<ÿtHÿëCƒìv‰ÃÁã)ÃÁ㍃„ß#PjèR5fǃhß#€ƒÄ‹ƒâ#‹—ðÂPVè蜃čeô[^_]ÐU‰åSƒì ‹E‹M ‹… Þ#I‰ÐÁà)ÐÁàfǀhß#€‹€â#‹“ðÂPQ蜜ƒÄ‹]üÉÃU‰å]ÍvU‰åWVSƒì ‹U‹• Þ#‰Eð‹U <•€‰ÆƒÆƒ<7~MƒìR‰ÃÁã)ÃÁ㍃„ß#Pjè‹4ÿ 7ƒÄ‹ƒâ#‹Mð‹‘ðÂPÿu 趛fǃhß#€ƒÄë‹E @‰ÐÁà)ÐfÇÅhß#eô[^_]ÐU‰åƒì‹E‹M ‹… Þ#ƒÀDŽˆ€ÿÿÿÿI‰ÐÁà)ÐfÇÅhß#häÞ#QèðÉÿÿƒÄÉÍvU‰å‹E‹U ‹… Þ#ƒÀDŽ€R‰ÐÁà)ÐfÇÅhß#]ÃU‰åWVSƒì4‹u v‰EäÁà+EäfÇÅhß#EèPjè“3Mè»@B‹Eº÷ó‰Uà’€€‰E܋A‹U܍ЉE؉A»¡/¸D÷ë‰ÓÁû‹EØÁø)ÿƒÞC‹E÷ç‰×‰øÁèEè‹A»Êš;™÷û‰Ó‰YƒÄVhô‹"ÿuìÿuèÿDÞ#‰ÃƒÄƒûÿuƒìÿ5lÞ#jèAäÿÿƒÄ v‰ÈÁà)ȉÅ â#eô[^_]ÐU‰åƒìÿ5lÞ#jèäÿÿ¸ƒÄÉÍvU‰åƒìÿ5lÞ#jèñãÿÿƒÄÉÃU‰åƒìÿ5lÞ#jèÙãÿÿƒÄÉÃU‰åƒìÿ5lÞ#jèÁãÿÿƒÄÉÃU‰åƒìÿ5lÞ#jè©ãÿÿƒÄÉÃU‰åƒìÿ5lÞ#jè‘ãÿÿƒÄÉÃU‰åƒìÿ5lÞ#jèyãÿÿƒÄÉÃU‰åƒìÿ5lÞ#jèaãÿÿƒÄÉÃU‰åƒìÿ5lÞ#jèIãÿÿƒÄÉÃU‰åƒìÿ5lÞ#jè1ãÿÿƒÄÉÃU‰åƒìÿ5lÞ#jèãÿÿƒÄÉÃU‰åWVSƒì‹MI‰ÃÁã)ÃÁãºDß#‹‹4… Þ#¿@ß#fÇD(€‹„Ћ–ðÂPQè9™Ç„àÿÿÿÿèQœÿÿƒÄeô[^_]ÉöU‰åVSƒì hà2#è
-Áÿÿè]¼ÿÿ‰ÆÇ$Œè׿ÿÿ‰Ã‰µ Þ#ƒÄ jhx2#Sè®[fÇCÆCÇC "ÇCԍ"ÇC à"ÇC$Ž"ÇC(ÇC, Ž"ÇC0,Ž"ÇC44Ž"ÇC8@Ž"ÇC<HŽ"ÇC@dŽ"ÇCDŒŽ"ÇCH´Ž"ÇCL܎"ÇCP"ÇCT,"ÇCXT"ÇC\|"ÇC`¨"ÇCdЏ"ÇChø"ÇCl "ÇCpH"ÇCtp"ÇCx˜"ÇC|À"ǃ€è"ǃ„‘"ǃˆÿÿÿÿÇ$ƒ2#èô¿ÿÿƒÄ jVh8‘"è,ºÿÿƒÄeø[^]ÉöU‰å‹M‹E ‹ Þ#fƒ8t·9Èu¸ƒºˆÿt¸ÿÿÿÿ]ÉöU‰å¸ÿÿÿÿ]ÉöU‰åƒì‹E‹… Þ#ÿ°ˆhå1#èìYƒÄÉÍvU‰å‹E‹… Þ#‹€ˆ]ÍvU‰å¸]ÉöU‰å]ÍvU‰å¸]ÉöU‰å]ÍvU‰å‹E @‰ÂÁâ)ÂfÇÕhß#]ÃU‰åƒìhô1#èxYƒÄÿ5lÞ#j è„àÿÿƒÄÉÍvU‰åƒìhû1#èPYƒÄÿ5lÞ#j è\àÿÿƒÄÉÍvU‰åƒìh2#è(YƒÄÿ5lÞ#j è4àÿÿƒÄÉÍvU‰åƒìh 2#èYƒÄÿ5lÞ#j è àÿÿƒÄÉÍvU‰åƒìh2#èØXƒÄÿ5lÞ#j èäßÿÿƒÄÉÍvU‰åƒìh2#è°XƒÄÿ5lÞ#j è¼ßÿÿƒÄÉÍvU‰åƒìh2#èˆXƒÄÿ5lÞ#j è”ßÿÿƒÄÉÍvU‰åƒìh%2#è`XƒÄÿ5lÞ#jèlßÿÿ¸ƒÄÉÉöU‰åƒìh,2#è4XƒÄÿ5lÞ#jè@ßÿÿƒÄÉÍvU‰åƒìh32#è XƒÄÿ5lÞ#jèßÿÿƒÄÉÍvU‰åƒìh:2#èäWƒÄÿ5lÞ#jèðÞÿÿƒÄÉÍvU‰åƒìhA2#è¼WƒÄÿ5lÞ#jèÈÞÿÿƒÄÉÍvU‰åƒìhH2#è”WƒÄÿ5lÞ#jè ÞÿÿƒÄÉÍvU‰åƒìhO2#èlWƒÄÿ5lÞ#jèxÞÿÿƒÄÉÍvU‰åƒìhV2#èDWƒÄÿ5lÞ#jèPÞÿÿƒÄÉÍvU‰åƒìh]2#èWƒÄÿ5lÞ#jè(ÞÿÿƒÄÉÍvU‰åƒìhd2#èôVƒÄÿ5lÞ#jèÞÿÿƒÄÉÍvU‰åƒìhk2#èÌVƒÄÿ5lÞ#jèØÝÿÿƒÄÉÍvU‰åSƒì0‹]ÇEÜÇEàfÇEäÇEè¶Ãf‰EØÇEìEØjjPhđ"hr2#趜ÿÿƒÄ ‹ Þ#‰Ã‰šˆƒûÿuƒì h 2#èÒ»ÿÿƒÄ[‰ÐÁà)ÐÇÅxß#ÿÿÿÿ‹]üÉÐU‰åôëýU‰åWVSƒì ‹} ¾ú»ëvCûÿ2Ý)ØÁàºà #€|t߃ìÿ4ÿuèaVƒÄ…Àuʾ…öt1ÿÀuèðnÇûéÜûÝ)؍…ä #éˉö÷Ç@uè¿nÇû髍v‹E‰Eð=ÿ~èžnÇû銉ö‹°Á#ƒúÿtqÕ)Ѝ<…w‹†ä #£°Á#ƒì ÿuèV@‰$臹ÿÿ»à #‰ƒÄÿuPè7U‹Eð‰‡è #‡ì #‰$è(‘ÆDƒÄû‡ä #ëvènÇû¸eô[^_]ÍvU‰åWVSƒì ¾ú¿»à #vý)øÁà€|tƒìÿ4ÿuèUƒÄ…Àu¾Gÿÿ~ʅötJƒì ÿuèOUƒÄ@Pý)ûÁã¾à #ÿ43è%¹ÿÿƒÃÆD3¡°Á#‰ƒä #‰=°Á#ƒÄûë‰öèSmÇû¸eô[^_]ÍvU‰åWVSƒì ‹}?ÿw‹Õ)Ѐ<…ø #uèmǸÿÿÿÿé‰öèÏæÿÿúè5B‹lÞ#R‰ÑÁá)Ñf‰ÍHß#‹Õ)Ѝ4…à #ƒ~ ÿu
-ƒ~…“ƒìWjÿlZ#ƒÄh$ß#jè8)ƒÄUè¡(ß#;xÞ#|¡$ß#+tÞ#‰Eè¡(ß#+xÞ#ë!‰ö¡$ß#+tÞ#H‰Eè¡(ß#+xÞ#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыlÞ#R‰ÐÁà)Ð) Ōß#ƒì Qèú›ÿÿƒÄƒ=|Þ#ÿtƒì ÿ5|Þ#ÿHÞ#Ç|Þ#ÿÿÿÿƒÄ‹ -lÞ#I‰ÐÁà)ЋÅDß#ƒì‹… Þ#QPÿRH‹ -lÞ#I‰ÐÁà)л@ß#fÇDÃ(Íǂà¼#‹‰‚ä¼#ƒÄF PQ辏ÇlÞ#ÿÿÿÿÇ€Þ#ÿÿÿÿèõÿÿ¡lÞ#@‰ÂÁâ)¿DÓ‰$è…@èܧÿÿƒÄûèÿäÿÿë8ÿNƒìWjÿlZ#¡lÞ#@‰ÂÁâ)¿ÕHß#‰$èF@蝧ÿÿƒÄû¸eô[^_]ÃU‰åWVSƒì ‹}‹]?ÿw‹Õ)Ѐ<…ø #uè¯jǸÿÿÿÿéVv…ÛuúëúèÒ?‹lÞ#R‰ÑÁá)Ñf‰ÍHß#‹Õ)Ѝ4…à #…Ûu0ƒ~ ÿu‹E 9F}èMjÇ û¸ÿÿÿÿéó‹E )Fûéâèäÿÿƒ~ ÿu ‹E 9F‘ƒìWjÿlZ#ƒÄh$ß#jèš&ƒÄUè¡(ß#;xÞ#|¡$ß#+tÞ#‰Eè¡(ß#+xÞ#ë¡$ß#+tÞ#H‰Eè¡(ß#+xÞ#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыlÞ#R‰ÐÁà)Ð) Ōß#ƒì Qè^™ÿÿƒÄƒ=|Þ#ÿtƒì ÿ5|Þ#ÿHÞ#Ç|Þ#ÿÿÿÿƒÄ‹ -lÞ#I‰ÐÁà)ЋÅDß#ƒì‹… Þ#QPÿRH‹ -lÞ#I‰ÐÁà)л@ß#fÇDÃ(͋E ‰‚à¼#‹‰‚ä¼#ƒÄF PQè#ÇlÞ#ÿÿÿÿÇ€Þ#ÿÿÿÿèZ›ÿÿ¡lÞ#@‰ÂÁâ)¿DÓ‰$èê=èA¥ÿÿƒÄûèdâÿÿë<‰ö‹E )FƒìWjÿlZ#¡lÞ#@‰ÂÁâ)¿ÕHß#‰$è§=èþ¤ÿÿƒÄû¸eô[^_]ÐU‰åWVSƒì ‹}?ÿw‹Õ)Ѐ<…ø #uèhǸÿÿÿÿéU‰öè,…À„‡œúX‰Æ‹Õ)Ѝ…à #‹JA‰J‹Z ƒûÿtG‹Ýà¼#9È<)Á‰È‰BƒìB PSèƊ[‰ÐÁà)ЋÅDß#ƒÄ‹• Þ#SRÿPDèÿÿƒÄƒìWjÿlZ#ƒÄ‰ðPé¼‰öúèª<‹€Þ#R‰ÑÁá)Ñf‰ÍHß#‹Õ)Ѝ…à #‹JA‰J‹Z ƒûÿtG‹Ýà¼#9È<)Á‰È‰BƒìB PSè&Š[‰ÐÁà)ЋÅDß#ƒÄ‹• Þ#SRÿPD荙ÿÿƒÄƒìWjÿlZ#¡lÞ#@‰ÂÁâ)¿ÕHß#‰$è <èb£ÿÿƒÄû¸eô[^_]ÐU‰åWVSƒì ‹] ÇEð‹E8ÿw‹Õ)Ѐ<…ø #uèlfǸÿÿÿÿéÊèc*…À„ÃœúX‰Â‰Uì‹E‹Õ)Ѝ4…à #^‹^ ƒûÿts݉‹€à¼#;F_¿à¼#ÇEðv‹F+:‰FƒìF PS艍[‰ÐÁà)ЋÅDß#ƒÄ‹• Þ#SRÿPD‹^ ƒÄƒûÿt݋:;F~°ƒìÿujÿlZ#ƒÄƒ}ðtèÿÿ‹Uì‰ÐPéõúèÊ:‹€Þ#R‰ÑÁá)Ñf‰ÍHß#‹E‹Õ)Ѝ4…à #^‹^ ƒûÿtr݉‹€à¼#;F^¿à¼#ÇEð‰ö‹F+:‰FƒìF PSè.ˆ[‰ÐÁà)ЋÅDß#ƒÄ‹• Þ#SRÿPD‹^ ƒÄƒûÿt݋:;F~°ƒìÿujÿlZ#ƒÄƒ}ðtèd—ÿÿ¡lÞ#@‰ÂÁâ)ƒì ¿ÕHß#Pèð9èG¡ÿÿƒÄû¸eô[^_]ÉöU‰åWVSƒì ¾¿ä #õ)óÁãǃà #‰4;ǃè #ƒì ƒì #PèB‡ƒÃF‰;ƃè #ƒÄ‰Æþÿ~±Çؼ#ÿÿÿÿÇ°Á#ƒìjhx "è:ªÿÿƒÄeô[^_]ÍvU‰åVS‹uú>ÿw‹Õ)Ѐ<…ø #uèÉcÇû¸ÿÿÿÿënvƒì ‹Õ)лà #ÿ4ƒèUKƒÄ@P‹Õ)Ðÿ4ƒè1¯ÿÿ‹Õ)ÐÆDƒ‹Õ)Ћ°Á#‰…ô #‹£°Á#ƒÄû¸eø[^]ÉöU‰åƒì‹Mú9ÿw‹Õ)Ѐ<…ø #uècÇû¸ÿÿÿÿëb‰ö‹Õ)Ѓ<…ì #ÿtèîbÇû¸ÿÿÿÿë8‹Õ)ÐÆ…ø #‹Õ)Ћ°Á#‰…ô #‹£°Á#û¸ÉÉöU‰åSƒì‹M‹] 9ÿw‹Õ)Ѐ<…ø #uèubǸÿÿÿÿë_ú‹Õ)ÐÁàƒ¸ì #ÿu ‹€è #‰ë7‰öÇ‹Õ)Ћ…ì #¹Hß#vÿ @‰ÐÁà)ЋDÁPƒøÿuëû¸‹]üÉÃU‰åVS‹u‹M¸ùÿ‡–ú‹°Á#‰ƒúÿtnÕ)Ћ…ô #£°Á#‹Õ)лà #ǃ‹Õ)Љ …è #ƒì ‹Õ)Ѝ…ì #P聄‹Õ)ÐÆDƒƒÄëègaÇû¸ÿÿÿÿëû¸eø[^]ÍvU‰åƒì‹M9ÿw‹Õ)Ѐ<…ø #uèaǸÿÿÿÿë=ú‹Õ)Ѝ…à #ƒx ÿuƒxuèì`Ç û¸ÿÿÿÿë ‰öÿHû¸ÉÐU‰å‹E@‰ÂÁâ)¸fƒ<Õhß#”À]ÐU‰åVS‹][‰ÐÁà)Ѝ4Åfƒ¾hß#uAƒì‹Ýä¼#Õ)Ѝ…ì #PS考‹†Dß#ƒÄ‹… Þ#SPÿRD¸ƒÄ됸eø[^]ÃU‰åVSƒ=xZ#…ÚÇxZ#¹»¥%¾¥%‰ÁàP ÆÇ2ÿÿÿÿÆDAƒùváƒìjjhÀÁ#èÜýÿÿ¹ƒÄ¾d§%»`§%‰ö‰ÁàQ‰0Ɖуù -véÇ”©%ÿÿÿÿƐ©%ÇX§%¹¾Ä©%»À©%vÍ)ÈÁàQ‰0ƉуùvãÇð¬%ÿÿÿÿÆì¬%Ç­%eø[^]ÐU‰åWVSƒìŠEˆEóŠUˆUòfÇEæ¾<u€út €}óu€}òuè_Ǐ¸ÿÿÿÿé7‰öúƒ=X§%ÿuèí^ǍûÇEìÿÿÿÿ됡X§%€‹Õd§%‰X§%û‰Eìƒ}ìÿu -¸ÿÿÿÿéìvƒì hÀÁ#ègñÿÿƒÄ‹]¾¹º÷ñ‰×ëf‰ö¿€<Å ¥%t0ƒìÿu¿ōƒ¥%Pè³EƒÄ…Àu€»¥%„Ÿ¾ëG¹‰øº÷ñ‰×fÿEæfƒ}懜‰ó„Ût–¿Áãƃ ¥%ƒìÿuƒ¥%Pè÷D‹E쉃¥%ƒÄ€}óu‰Â’‹] f‰Åh§%ëv‹E썀‹E ¯Ef‰Õh§%úƒì ‹U썒Áã·ƒh§%Pèݨÿÿºl§%‰ƒÄû…Àu%è”]ǒƒì hÀÁ#èAõÿÿ¸ÿÿÿÿ魍v‹E썀ÁãS‰Uà¾`§%‹ƒl§%‰‚d§%‰2ƒìjjƒ|§%Pè:ûÿÿƒÄ ·D3Pjƒ€§%Pè#ûÿÿƒÄ jjÃ„§%SèûÿÿŠ]ó‹Eàˆ\0ƒÄúƒ=­%ÿuèø\ǎûÇEèÿÿÿÿë¡­%Å)‹•Ä©%‰­%û‰Eèƒ}èÿu_ƒì hÀÁ#èvôÿÿ‹Eèéä‰öè§\ǐƒì hÀÁ#èTôÿÿ¸ÿÿÿÿéÀ‰öèƒ\Ǒƒì hÀÁ#è0ôÿÿ¸ÿÿÿÿ霉ö‹EèÁà+EèÁà¹À©%ŠUòˆT P‹]ì‰
-‹] f‰\
-ǀĩ%ÿÿÿÿ‰ºÈ©%‹]썛ÆÕ`§%ƍ¿ōr¿¥%€|>t%ƒì¶D>Pš¥%SèGõÿÿÆD>‰$èšøÿÿƒÄƒì hÀÁ#èŽóÿÿ¿EèƒÄeô[^_]ÍvU‰åWVSƒìŠEˆEóŠ]ÇEè¿ÆEç<u„Ût €}óu€ûuè‚[Ǐ¸ÿÿÿÿé0‰öúƒ=­%ÿuèa[ǎûÇEìÿÿÿÿë ¡­%Å)‹•Ä©%‰­%û‰Eìƒ}ìÿu ¸ÿÿÿÿéߐ‹EìÁà+EìÁàºÀ©%ˆ\ ‹M f‰Lǀĩ%ÿÿÿÿƒì hÀÁ#è°íÿÿƒÄ‹U¾¹º÷ñ‰Öë]v¶€<Å ¥%u ¿ÆEçë8ƒìÿu¶Å¥%PèöAƒÄ…Àu¿ëF¹‰ðº÷ñ‰ÖÿEèƒ}è‡Ò‰ù„Ét €}çuR¶Á㸥%ÆD ÆDƒìÿuPè>AƒÄ jjÃ¥%Sè/øÿÿÇ$ÀÁ#èçñÿÿƒÄ jjSè:ïÿÿëM¶ōCº¥%€|t'þDƒì hÀÁ#è®ñÿÿƒÄ jjƒ¥%Pèûîÿÿ됃ì hÀÁ#è‹ñÿÿƒÄ¶‹<Å¥%¿ŠUó:Åx§%tèªYǓ¸ÿÿÿÿéX‰ö€}óu¿·Åh§%9E u€}ót(¿·Åh§%™÷} …ÒtèdYǔ¸ÿÿÿÿéƒì hÀÁ#è ìÿÿ¶‹Å$¥%ƒÄƒúÿ„­€}óu#è&YǕƒì hÀÁ#èÓðÿÿ¸ÿÿÿÿéЍÕ)з…Ô©%9E t"èíXǔƒì hÀÁ#èšðÿÿ¸ÿÿÿÿ鋋MìÁá+M썶Å »¥%‹‰Ä©%‹Mì‰ ë/‰öèŸXǑƒì hÀÁ#èLðÿÿ¸ÿÿÿÿë@¶‹Uì‰Å$¥%ƒì hÀÁ#è*ðÿÿ‹EìÁà+EìÁàH‰±È©%ºÀ©%‰<Æ¿EìƒÄeô[^_]ÉöU‰åWVSƒì¿E‰Eì‰ÇÁç)ÇÁ獗À©%‰UðhÀÁ#èÏêÿÿ‹Mð‹Y›ÁãC‰E躥%‹€Áà°`§%ƀ`§%F‰$èôÿÿF ‰$è„ôÿÿF$‰$èyôÿÿƒÄú·FPÿv èX£ÿÿû¹¥%‹Eè‹ú ’¡X§%‰Íd§%‰X§%ûƇÀ©%ƒÃ ‹Uð‹B‰ƒ¥%ú¡­%‰‡Ä©%‹Mì‰ -­%ûƃ¥%Ç$ÀÁ#è
-ïÿÿƒÄeô[^_]ÍvU‰åWVSƒì ‹u ŠM¿UÕ)Ѝ…À©%‰Eð‹@€Å`§%‹Eð€x uèûVǔ¸ÿÿév€;uèÞVǖ¸ÿÿéù‰ö€{tQ€{u,ƒì¶ÁP‹Uð·BPC PèÈëÿÿƒÄ…Àt;¸évƒì¶ÁP‹Uð·BPC PèœëÿÿƒÄ…ÀuÔƒì CPè-éÿÿƒÄ‹Uð·B‹{‰ÁÁéüó¥¨tf¥¨t¤·B‰ÁK‰K·S‰ÐC 9Ár‰È)ЉC€{u ƒì CPë8‰ö€{uƒì‹Uð·BPC$PèZïÿÿëƒì‹Uð·BPC$PèDïÿÿC‰$èíÿÿƒÄ¸eô[^_]ÐU‰åWVSƒì ‹} ŠM¿UÕ)Ѝ…À©%‰Eð‹@€Å`§%‹Eð€x uè‹Uǔ¸ÿÿév€;uènUǖ¸ÿÿéù‰ö€{tQ€{u,ƒì¶ÁP‹Uð·BPC$PèXêÿÿƒÄ…Àt;¸évƒì¶ÁP‹Uð·BPC$Pè,êÿÿƒÄ…ÀuÔƒì CPè½çÿÿƒÄ‹Uð·B‹s‰ÁÁéüó¥¨tf¥¨t¤·B‰ÁK‰K·S‰ÐC 9Ár‰È)ЉC€{u ƒì CPë8‰ö€{uƒì‹Uð·BPC Pèêíÿÿëƒì‹Uð·BPC PèÔíÿÿC‰$è-ìÿÿƒÄ¸eô[^_]ÐU‰åSƒìhÿ2#è;ƒÄÿ5X§%h 3#è;»ƒÄÝ)ØÁà€¸À©%t8À©%‹B€Å`§%ƒì ÿp ÿp$‹B€Å¥%PSh3#è®:ƒÄ Cƒûv­‹]üÉÃU‰åƒì`¿MÍ)ȋ…Щ%’Å`§%ÿp ÿp$RQh@3#E¨Pèf:ƒÄ ÉÐU‰åSƒì‹]hÀÁ#èHæÿÿ¿ÓÕ)Ѝ …‹Ø©%€Å ƒÄ€º¥%u ‹Ä©%‰‚¥%¿ÃÅ)ÂÁâƂÀ©%ú‹ -­%‰ŠÄ©%£­%ûƒì hÀÁ#èÓêÿÿƒÄ‹]üÉÍvU‰åWVSƒì ‹u ‹E‹<…ß#ú‹^…Ûu-ƒì j èžÿÿƒÄ…ÀtÇÿÿÿÿÇ@Ç@ÿÿÿÿ‹U‰‰F‹;lÞ#u û¸#é~ƒ;ÿtc¾@ß#‰ö‹ -lÞ#I‰ÐÁà)Ћ‰TÆP‹C‰„¬¡lÞ#‰CÿCè…ÿÿ¡lÞ#@‰ÂÁâ)ƒì ¿DÖPèŸ'èöŽÿÿƒÄûúƒ;ÿu¤¡lÞ#ÿD‡D¡lÞ#‰û¸eô[^_]ÉöU‰åWVSƒì ‹E ‹x¸…ÿ„À‹;lÞ#tû¸髍vúè*'‹lÞ# [‰ÊÁâ)Êf‰ÕHß#‹E‹…ß#ÿL˜DÇÿÿÿÿ‹_ÇGÿÿÿÿƒûÿt-p ‰Ù[‰ÐÁà)ЉŐß#‹œž DŽŽ ÿÿÿÿƒûÿuÖÇGè„ÿÿ¡lÞ#@‰ÂÁâ)ƒì ¿ÕHß#Pè¢&èùÿÿƒÄû¸eô[^_]ÃU‰åVSƒì h¤3#è~ÿÿè -™ÿÿ‰ÆÇ$èKœÿÿ‰Ã‰µß#ƒÄ jh¸3#Sè"8fÇCÍÆCÇCÇC¸°"ÇC ±"ÇC$±"ÇC(±"ÇC,H±"ÇC0t±"ÇC4¼±"ÇC8®"ÇC<²"ÇC@¯"ºƒÄsK •ÇD@DŽ ÿÿÿÿBú™~ݍeø[^]ÉöU‰åVS‹E‹…ß#ƒì h€3#è7¾ƒÄƒÃƒìÿt³@hŸ3#èû6ƒÄFþ™~ãeø[^]ÃU‰å¸ÿÿÿÿ]ÉöU‰å]ÍvU‰åƒì‹E‹U ‹…ß#ƒÀƒ|@tƒìRj
-èȽÿÿƒÄÉÍvU‰å‹U :t ‹E -9u
-¸ëv¸ÿÿÿÿ]ÐU‰åSƒì‹] j èӚÿÿ‰ÂƒÄ¸ …Òt!ÇÿÿÿÿÇBÇBÿÿÿÿ‹E‰‰S¸‹]üÉÍvU‰åSƒì‹] ‹Cƒxt ¸ë&‰öúƒ{tƒìj ÿsèäšÿÿÇCƒÄû¸‹]üÉÍvU‰åWVSƒì ‹}‹u ú‹^…Ûu*ƒì j è3šÿÿƒÄ…ÀtÇÿÿÿÿÇ@Ç@ÿÿÿÿ‰>‰Fƒ;ÿt
-û¸ë"‰ö¡lÞ#‹½ß#ƒÂÿD‚@¡lÞ#‰û¸eô[^_]ÃU‰åWVSƒì ‹E ‹U‹•ß#ú‹p¸…ö„V‹;lÞ#u û¸#éA‹lÞ#‹F ¿@ß#;„“°v -¸é v¡lÞ#‹Œƒ°‹“¬…Òt‰ö‹;lÞ#…Š‹R…Òu븅À…†‹ -lÞ#I‰ÂÁâ)‹ƒ¬‹‰D×P‹ƒ¬‹@‰„‹‹“¬¡lÞ#‰B‹ƒ¬ÿ@èj€ÿÿ¡lÞ#@‰ÂÁâ)ƒì ¿D×Pèù"èPŠÿÿƒÄûúéRÿÿÿ‰ö¸;J ’Àérÿÿÿ‹E‹…ß#¡lÞ#ÿDƒD¡lÞ#‰¹‹ƒ¬‹V ë‰ö‰Á‹A…Àt;P sò…Ét‰q됉³¬…Àt‰p‰F‰Nû¸eô[^_]ÍvU‰åWVS‹}‹E ‹ ½ß#ú‹X¸…Û„Ù‹;lÞ#uû¸#éčv‹lÞ#‹C ;„‘°s
-¸饡lÞ#‹´°‹‘¬…Òt‰ö‹;lÞ#u‹R…Òu︅Àuû¸ëk‰ö¸;r ’Àëåv‹ ½ß#¡lÞ#ÿDD¡lÞ#‰¾‹¬‹S 됉ƋF…Àt;P sò…öt‰^됉™¬…Àt‰X‰C‰sû¸[^_]ÉöU‰åWVSƒì ‹E ‹x¸…ÿ„ï‹;lÞ#tû¸éڍvúè&!‹lÞ# [‰ÊÁâ)Êf‰ÕHß#‹E‹…ß#‰EðÿL˜DÇÿÿÿÿ‹_ÇGÿÿÿÿƒûÿt2‰ÆƒÆv‰Ù[‰ÐÁà)ЉŐß#‹œžDŽŽÿÿÿÿƒûÿuÖÇG‹O‹W…Éu -‹Eð‰¬ë‰ö‹G‰A…Òt‹G‰Bèã}ÿÿ¡lÞ#@‰ÂÁâ)ƒì ¿ÕHß#Pèo èƇÿÿƒÄû¸eô[^_]ÐU‰åVSƒì hä3#èJ—ÿÿèْÿÿ‰ÃÇ$€è–ÿÿ‰Æ‰4ß#ƒÄ jhø3#Vèî1fÇFÌÆFÇFÇFÀ·"ÇF D¸"ÇF$p¸"ÇF( ¸"ÇF,è¸"ÇF0¹"ÇF4l¹"ÇF8|²"ÇF<´"ÇF@µ"ºƒÄ^N•ÇD@DŽ°ÿÿÿÿDŽÿÿÿÿBú™~Òdž¬eø[^]ÐU‰å‹U‹M ¸ÿÿÿÿ…Òt;‹‹…ß#ƒxu‹@%ÿÿÿ=Ìu…Ét ‹B‹@ ‰ë
-‰ö¸ÿÿÿÿ됸]ÐU‰å‹U‹M¸ÿÿÿÿ…Òt@‹‹…ß#ƒxu‹@%ÿÿÿ=Ìt¸ÿÿÿÿ됅Ét‹B‹@ ‰‹R‹E ‰B ¸]ÃU‰å‹E‹M ‹U‹…ß#‰”ˆ°]ÃU‰åWVSƒì‹E‹<…ß#h€3#è0»ƒÄwƒìÿtž@hŸ3#èó/ƒÄCû™~ãƒì hÂ3#èÚ/»ƒÄ‰öƒìÿ´Ÿ°hÞ3#è¼/ƒÄCû™~àeô[^_]ÃU‰å‹U :t ‹E -9u
-¸ëv¸ÿÿÿÿ]ÐU‰åS‹E‹U ‹]‹ …ß#Áâ‹C‰„°ÇD
-D‹$ÉÉöU‰åVS‹E‹u ‹…ß#ƒ|³DtƒìVj
-èD¶ÿÿƒÄë vÇD³DDŽ³°ÿÿÿÿeø[^]ÉöU‰å‹U :t ‹E -9u
-¸ëv¸ÿÿÿÿ]ÐU‰åSƒì‹] jè3“ÿÿ‰ÂƒÄ¸ …Òt1ÇÿÿÿÿÇBÇBÿÿÿÿ‹E‹@‰B ÇB‹E‰‰S¸‹]üÉÍvU‰åSƒì‹] ‹Cƒxt ¸ë&‰öúƒ{tƒìjÿsè4“ÿÿÇCƒÄû¸‹]üÉÍvU‰åWVSƒì$·]Sh4#è .‰Ø-yƒÀÁèƒÄ ·À‰Eè@ÛÁã¿À¹%ÿt8CP‰Eä·8Ph 4#èá-ƒÄ ÿt;·D;Ph4#èÊ-ƒÄ ÿt; s·>Ph(4#è±-ƒÄ ÿt>·D>Ph94#èš-ƒÄ ‹Uä·D:P·DLPhJ4#è~-‹UèÕƒÄ·ØSh[4#èc-EóPEòPEìPS蹃ĶUóR¶UòRÿuìPh 4#è6-ƒÄ eô[^_]ÍvU‰åWVSƒì ‹E‹U‹]¹‹u ƒî‰ƒî‰º <&fƒ= <&yA¿Áfƒ<Byfù™~îfù™~ƒì hp4#èÎ,¸ƒÄé ¿Á<¹ <&‰Úf Ê€f‰Ǎ<ÿÁçºÀ¹%‰tÇD _ÇDfŒÙf‰LfÇfÇDÇD _ ‹M‰ ÇDÇDO0ÇDÇD Ǎ_@ÇÇD‰t‰t fŒÉf‰L fŒÙf‰LfŒÛOPf‰\fŒÛf‰fÇD 0fÇD0O`fÇfÇDfÇDÇ,º%¾à=&¹üó¥Å˜eô[^_]ÐU‰åVS‹u ¿E-‰Â…ÀyP‰ÐÁø@ÀÁà¹À¹%f‰tX@Vf‰T f‰t ƒÀPf‰tf‰4[^]ÉöU‰å¿E-‰Â…ÀyP‰ÐÁøfDŽ <&]ÉöU‰åSƒì‹]¿E Phˆ4#Sè~3‰ØƒÄ‹]üÉÃU‰åVS趉Æès»‰öƒìh¬Ã"SèƒÄh8½"SèìƒÄCƒû~ۉðeø[^]ÉöU‰åƒìèaÉÍvU‰åSƒì‹]‹|Z#€82uºð°îƒìShâ5#èˆ*ƒÄÁ㋃|Z#@Ph=@#èp*ƒÄÿ³ÀZ#ènƒÄ‹]üÉÉöU‰åƒìÿuhù5#èE*èèûÇ$èG7ƒÄÉÉöU‰åWVSƒì‹E‹} ƒ=¸%„à…ÿ„Ø¡€®%€€€ źm¶‰È÷â‰È)ÐÑ草ÁÁé
-‰O¡„®%ÀP‰ÐÁà)кè‰Ó™÷û’’’щW¡„®%ÀP‰ÑÁá)ѾÓMb‰È÷îÁú‰ÈÁø‰Ó)øƒÞC÷o‰ÑÁù‹GÁø)Á‰È؉‹OÁú‰ÈÁø)’’’’’’Áâ)э ‰ ‰ ‰Áá‰O‹éԉö]血®%€€€ źm¶‰È÷â‰È)ÐÑ草ÁÁé
-¡„®%ÀP‰ÐÁà)кè‰Ö™÷þ’’’щS¡„®%ÀP‰ÑÁá)ѾÓMb‰È÷îÁú‰ÈÁø)‰Uè‹{¸ƒÞC÷ï‰ÑÁù‰øÁø)Á‰ÈEè‰ùÁú‰ÈÁø)’’’’’’Áâ)э ‰ ‰ ‰Áá‰K‹E荀€€€€€‰ÃÁã‰È÷îÁúÁù)ʍéèvƒøuc¸ƒ=t®%…Ρx®%€€€€€€‰ÃÁã‹ -|®%ºÓMb‰È÷êÁúÁù)ÊӅÿ„…¡x®%‰¡|®%éqvƒø…ç¶d®%ƒøtƒø…Àt
-ë,ƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹ -p®%f)Ù·É -€®%º×®¬]‰È÷êÁú‰ÈÁø)„®%’BÁà)Ѝ‚‰ÂÁâ Ð)Á‰È£€®%f‰p®%…ÿ„̍€€€ źm¶‰È÷â‰È)ÐÑ草ÁÁé
-‰O¡„®%ÀP‰ÐÁà)кè‰Ó™÷û’’’щW¡„®%ÀP‰ÑÁá)ѺÓMb‰È÷êÁú‰ÈÁø‰Ó)Ëw¸ƒÞC÷î‰ÑÁù‰ðÁø)Á‰È؉‰óÁú‰ÙÁù)ʍ’’’’’’Áâ‰Ø)Ѝ€€€Áà‰G‹€®%’’’4Õ¹Á6ۉð÷é‰Ó3‰ÁÁù
-‰ð™‰È)Ћ -„®%ɍ‘ÑÁâ)ʉÑÁá)эÈ鍃ø…ƒ=t®%…rUè¡x®%‰¡|®%‰B»@¹C°Ò‰Êî‰Úì¶ÈìÁàf¶Ñ зð·¸%9Æv%h6#j_h6#h6#èm%Ç$èmƒÄ·¸%)ó¯h®%·¸%‰Ø‰Ñº÷ñ‰Ãº °
-îì©t‹ -h®%;ÍÌÌ̉ð÷âÁê9Ós‰Ëu荛€€‹V‰Eä‰F¸¡/¸D÷mä‰ÑÁù‹EäÁø)Á‰ÈEè‹N¸¡/¸D÷éÁú‰ÈÁø)’’’’’’’’’Áâ )щN¡x®%€€€€€€Áà‰Eä‹ -|®%ºÓMb‰È÷êÁúÁù)ʋEäÐÅÿt ‰ð‹‰‹@‰G‰Øëv¸eô[^_]ÍvU‰åVSƒìŠEˆE÷ÿ([#ƒ=([#uƒ=[#tÿ[#¶E÷€Áàº,­%ƒ<uIÇö€0­%tûƒì ¶]÷›Áã¾ ­%ÿ43ÿ“$­%ƒÄöDtú¶E÷€Ç…,­%ÿ [#ƒ=([#uƒ=[#tÿ[#ÿ -([#eø[^]ÍvU‰åWVSº¿,­%¾(­%»$­%¹ ­%’ÁàÇ8‰0ÇÇBƒú~ÜÇ([#[^_]ÐU‰åVS‹U‹] ‹uú’ƒ<…,­%t÷Æu¸ÿÿÿÿëH’ …ǁ,­%û…Ût‰™$­%º ­%(­%‰‰t
-됍’Ç…,­%¸[^]ÐU‰å¡([#]ÉöU‰åSƒì¶d®%ƒøt!ƒø…Àt ë.‰öƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹ -p®%f)Ù·É -€®%º×®¬]‰È÷êÁú‰ÈÁø)„®%’BÁà)Ѝ‚‰ÂÁâ Ð)Á‰ -€®%f‰p®%ÿ([#ƒ=([#uƒ=[#tÿ[#¡|®%‰ÃÄÁ#º¡/¸D‰Ø÷êÁú‰ÙÁù)Êx®%’’’’’’’’’Á⠉Ø)У|®%‹`®%ë$‹¡l®%‰‰l®%‰`®%ƒì ÿrÿRƒÄ‰Ú…Òt‹B ;x®%;x®%uƋB;|®%~»ƒ=([#uƒ=[#tÿ[#ÿ -([#‹]üÉÃU‰åWVSƒì‹uhÒ"j@èØ -ƒÄƒ>t,ƒì h96#èß »ÿÿƒÄ¿@¹C°8‰ÊîˆØ‰úîëaƒì hU6#è³ ‹N‰ -h®%ɍA‰ÂÁâ‰Ñ)ÁºÓMb‰È÷âƒÄ‰ÑÁéu¹f‰ -¸%‰Ë¿@¹C°4‰Êî‰úˆØî‰ØfÁèî‹£t®%ƒ=d>&~»A¹C°p‰ÊÚîîÆd®%ë%Æd®%»B¹C°°‰ÊÚîîºa°îº!ì%þî¹¾ ®%»¤®%ƒùbIÁà¸®%‰0I‰LÃAƒùc~ßÇè·%Çl®% ®%Ç[#Ç[#¡h®%€€€Áà£ÄÁ#Ç|®%Çx®%Ç€®%Ç„®%fÇp®%ƒ=t®%uÇDÞ#øÈ"ÇHÞ#É"ëÇDÞ#àÉ"ÇHÞ#lÐ"eô[^_]ÃU‰å‹E£[#]ÍvU‰å‹E£[#]ÍvU‰å‹E£[#]ÍvU‰åWVSƒì ‹E‹U ‰Eè‰Uì¸ÿÿÿÿƒ=l®%tl‹ -l®%‹£l®%‹E‰A‹Eè‰A ‹Eì‰A‹E‰A»‹`®%}è‹uè됋…Òt‰ð;B  -;B u‹G;B~‰Óëâ‰ö…Ût‰ ë‰ -`®%‰‹AƒÄ [^_]ÐU‰å‹E¹‹`®%됉ы…Òt;Buó¸ÿÿÿÿ…Òt$…Éu
-‹£`®%됋‰¡l®%‰‰l®%¸]ÃU‰åWVSƒì,‹E‹U ‰Eè‰Uì¸ÿÿÿÿƒ=l®%„q‹5l®%‹£l®%‹E‰F‹Eè‰F ‹Eì‰F‹E‰Fº‹`®%}è‹Mè됋…Ût‰È;C  -;C u‹G;C~‰Úëâ‰ö…Òt‰2鐉5`®%ƒ=¸%…ôƒìEàPjè3óÿÿ‹`®%ƒÄ‹Eà;B  -;B u‹Eä;B~ÇEÜÇEØëK}؋`®%Mà‹B;A|‹B +Eà‰E؉Ћ@+Aë ¡`®%‹@ +EàH‰EØ¡`®%‹@+Eäʚ;‰G‹E؍€€€€€€Áà‰EԋMÜ¿ÓMb‰È÷ïÁúÁù)ÊUԍҍB‰ÂÁâ)‰Ð÷çÁê¸ðúðw¸ÈúÇv‰Ðº@îfÁèFeô[^_]ÃU‰åWVSƒì¶d®%ƒøtƒø…Àt
-ë,ƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹p®%f)Ú·Ò‰Ö5€®%¹×®¬]‰È÷î‰ÑÁù‰ðÁø)Á -„®%‰AÁà)ȍÁ‰ÁÁá ȉò)‰€®%f‰p®%]荒’’ Õ¾m¶‰ð÷á‰Ö‰Ê)òÑê2‰ÁÁé
-¡„®%ÀP‰ÐÁà)кè‰Ö™÷þ’’’щS¡„®%ÀP‰ÑÁá)ѺÓMb‰È÷êÁú‰ÈÁø)‰Uè‹s¿ƒÞC‰ð÷ï‰ÑÁù‰ðÁø)Á‰ÈEè‰ðÁú‰ñÁù)ʍ’’’’’’Áâ)Ѝ€€€Áà‰Cƒ=`®%„/Ǹ%‹`®%‹Eè;B ;B …Œ‹C;BŽ€ƒ=([#uƒ=[#tÿ[#ÿ([#‹`®%ë#‹¡l®%‰‰l®%‰`®%ƒì ÿrÿRƒÄ‰Ú…Òt‹B ;Eè -;EèűB;Eì~ă=([#uƒ=[#tÿ[#ÿ -([#¶d®%ƒøt"ƒø …Àt -ë/vƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹p®%f)Ú·Ò‰Ö5€®%¹×®¬]‰È÷î‰ÑÁù‰ðÁø)Á -„®%‰AÁà)ȍÁ‰ÁÁá ȉò)‰€®%f‰p®%]荒’’ Õ¾m¶‰ð÷á‰Ö‰Ê)òÑê2‰ÁÁé
-¡„®%ÀP‰ÐÁà)кè‰Ö™÷þ’’’щS¡„®%ÀP‰ÑÁá)ѺÓMb‰È÷êÁú‰ÈÁø)‰Uè‹s¿ƒÞC‰ð÷ï‰ÑÁù‰ðÁø)Á‰ÈEè‰ðÁú‰ñÁù)ʍ’’’’’’Áâ)Ѝ€€€Áà‰C‹`®%‹Mè;J 
-;J u;B~ÇEäÇEàëJ]à‹`®%Mè‹B;A|‹B +Eè‰Eà‰Ð‹@+Aë ¡`®%‹@ +EèH‰Eà¡`®%‹@+Eìʚ;‰C‹Eà€€€€€€‰ÆÁæ‹Mä»ÓMb‰È÷ëÁúÁù)ʍ2ҍB‰ÂÁâ)‰Ð÷ãÁê¸ðúðw¸ÈúÇv‰Ðº@îfÁèîǸ%ë -‰öº@°î°ðîeô[^_]ÐU‰åVSƒì‹E»¹‹`®%ëv‰Ñ‹…Òt;Buó¸ÿÿÿÿ…Ò„I…Éu‹£`®%»ë‹‰¡l®%‰‰l®%ƒ=¸%…ƒ=`®%uº@°î°ðéû‰ö…Û„òƒìEðPjèºìÿÿ‹`®%ƒÄ‹Eð;B  -;B u‹Eô;B~ÇEìÇEèëJ]è‹`®%Mð‹B;A|‹B +Eð‰Eè‰Ð‹@+Aë ¡`®%‹@ +EðH‰Eè¡`®%‹@+Eôʚ;‰C‹E荀€€€€€‰ÆÁæ‹Mì»ÓMb‰È÷ëÁúÁù)ʍ2ҍB‰ÂÁâ)‰Ð÷ãÁê¸ðúðw¸ÈúÇv‰Ðº@îfÁèeø[^]Éöú‹D$¼ÈÑ#PèŒëÿÿ`fff f¨f¸0ŽØŽÀ° º î¡[#@£[#1ÛfŒÓü¡t®%ƒøtèùòÿÿëè6ùÿÿ°
-º îì¨t ¸@Pè–ÿÿÿf¡[#f9[#t f£[#ÿ-[#ƒ=[#t‹[#ÿÓf©f¡ffaωöU‰å‹EØf£[#f£[#]Ã1ÀÈÃU‰åf¸0ŽØŽÀ‹Ef;[#t f£[#ÿ-[#]ÉöU‰åƒìjjjj@èaƒÄÉÃU‰åWVSƒì ‹]‹u ‹}聉€:y"…Ût‹B8‰…öt‹BÁà
-‰…ÿt)‹B4‰ë"‰ö…ÛtÇ…öt‹BÁà
-‰…ÿtÇ@ƒ}t ‹BÁà
-‹U‰ƒÄ [^_]ÍvU‰åƒìjjjj@è̓Ä·@0ÉÃU‰å¡ØX#]ÉöU‰å]ÍvU‰åSƒì‹ØX#誃ì Sèucÿÿè ƒÄ‹]üÉÃU‰åWVS‹M ‹u‹}Š]‰ÈÁàeèÿÿ Eè‰ÈÁèUèˆBáÿbÿÿÿ J‰ðˆB‹Ef‰Eè‹EÁè‰EäŠEäƒà ÃË@¶ÃÁàbÿÿÿ Bçüÿ=ÊX#‹‰‹B‰G[^_]ÐU‰åWVSƒì ‹] ‹u‹}·EMèÊX#‹‰‹@‰A‰Ê¶JÁá¶B ÁÁá·B Á…ÛtŠBƒà¶ÐÁâ·Eè Љ…ötŠE툅ÿt
-ŠEî%ðˆ‰ÈƒÄ [^_]ÉöU‰å‹E ¶UÁâ¹à[#fÇD
-8Ƃå[#îƂä[#f‰
-Áèf‰D
-]ÍvU‰åº °îº!°@î°î°î°ÿ°°pî°î°î°ÿî]ÐU‰åº °îº!°î°î°î°ÿ°°pî°î°î°ÿî]ÐU‰å‹Mf…ÉtWfƒùw¸Óà
-$[#ë7fƒùw<·Éƒé¸Óà
-%[#¢%[#º¡î<ÿu $[#©uƒÈ¢$[#º!î]ÃU‰å‹Mf…ÉtUfƒùw¸þÿÿÿÓÀ"$[#ë5fƒùw:·Éƒé¸þÿÿÿÓÀ"%[#¢%[#º¡î $[#©t%û¢$[#º!î]ÉöU‰å¿[#]ÃU‰åƒì‹Ef£[#˜PèWüÿÿƒÄÉÐU‰å¿[#]ÃU‰åƒì‹E‰Âf£[#ƒ=([#uƒì ¿ÂPèüÿÿƒÄÉÐU‰åWVì¾¹0[#ºp[#‰öµÇ(Ú"Ç(Ú"Fƒþ~åƒì EÈPèÅèºÇ`>&¡6#‹EÈ£d>&¶,[#£h>&ƒÄ‹EУp>&‹EÔ£t>&‹EØ£x>&hÑÛ"jè£ýÿÿƒÄhÛÛ"jè”ýÿÿƒÄhåÛ"jè…ýÿÿƒÄhìÛ"jèvýÿÿƒÄhóÛ"jègýÿÿƒÄhúÛ"jèXýÿÿƒÄhÜ"jèIýÿÿƒÄhGÜ"jè:ýÿÿƒÄhÜ"jè+ýÿÿƒÄhÜ"j èýÿÿƒÄhÜ"j
-è -ýÿÿƒÄhÜ"j èþüÿÿƒÄh$Ü"j èïüÿÿƒÄh+Ü"j -èàüÿÿƒÄh2Ü"jèÑüÿÿƒÄh9Ü"jèÂüÿÿƒÄh@Ü"jè³üÿÿƒÄhÛ"jAè¤üÿÿƒÄhÛ"jBè•üÿÿƒÄhÛ"jCè†üÿÿƒÄhÛ"jDèwüÿÿƒÄh Û"jEèhüÿÿƒÄh(Û"jFèYüÿÿƒÄh0Û"jGèJüÿÿƒÄh8Û"jpè;üÿÿƒÄh@Û"jqè,üÿÿƒÄhHÛ"jrèüÿÿƒÄhPÛ"jsèüÿÿƒÄhXÛ"jtèÿûÿÿƒÄh`Û"juèðûÿÿƒÄhhÛ"jvèáûÿÿƒÄhpÛ"jwèÒûÿÿf -Ô=&€¾ƒÄvÀÅÀ¹%ƒì jh‰hØPõ·ÀPèúÿÿƒÄ Fþš~ǃì hÐèFùÿÿƒÄÛãݵTÿÿÿ›¿à=&µTÿÿÿ¹üó¥ ÀƒÈ""ÀÛãèƒûÿÿèúÿÿeø^_]ÍvU‰åSƒìº!°ÿîè’ûÿÿ¹@ºC°6Êîîƒ=d>&~¹AºC°tî°‰Êî°ë»B¹C°°‰ÊÚîîºaî‹]üÉÃU‰å‹U‹E ‰•p[#]ÉöU‰å‹U‹E ‰•0[#]ÉöU‰åƒìh€6#è
-è— ƒÄÉÉöœX‰Á5PœX9ÈtQ¸Ã¸ÜX‰Á5 PœX1ÈtQ¸øÃf1Àžf¸f»öóŸ€üu¸øÃÆ,[#Ûã¹âþfÇ.[#ZZÝ=.[#¹âþf¡.[#<u+Ù=.[#¹âþf¡.[#f%?fƒø?uÆ,[#Æ,[#Éö`¸ëp`¸ëh`¸ë``¸ëX`¸ëP`¸ëH`¸ë@`¸ë8`¸ ë0`¸
-ë(`¸ ë `¸ ë`¸ -ë`¸ë`¸ë ¨Pf¸0ŽÀŽØüX1ÛfŒÓP‹…0[#ÿÓ[° ƒûrº îº îf¡[#f;[#t f£[#ÿ-[#©¡aϸ鋸選ëz¸ës¸ël¸ëe¸ë^¸ëW¸ ëP¸
-ëI¸ ëB¸ ë;¸ -ë4¸ë-¸ë&¸ë` ¨f¸0ŽÀŽØüèש¡aÏPf¸0ŽØŽÀXfŒÓ‹=ÊX#ß1ۊŠ_Áãf‹_ÜfŒÒfŒÛŽÓSRPÿ…p[#ƒÄX[ŽÐ)ÜÏU‰åWVSƒì ‹u¸¹ ‰÷üó«è|ýÿÿ…ÀtÇëUèŠýÿÿ…Àt7ÇFǸ¢‰^‰N‰V …Àt+¸¢‰F‰^‰N‰V ëÇècýÿÿ…ÀtÇ ƒÄ [^_]ÍvU‰åWV¿°[#È·À-yƒÀÁø9ÂtU¿°[#@ÀÝ4Å,º%›È·À-yƒÀÁøf£°[#¿5°[#¿ >&4v4ö4õ,º%¹üó¥Ý% >&^_]ÉöU‰å¿°[#]ÃU‰åWVSƒì(ŠM¡´[#Áà ˜€ f¶?&f£ÊÑ#f¶ -?&f£ÌÑ#€ù t%€ù €ù„óé‰ö€ù
-„#é‰öfƒÊÑ#·ÊÑ#;?&Œ½fÇÊÑ#·ÌÑ#¡?&H9Â…¿¡?&H‰Eì‰Uèf¾ ?&Áâf‰Uò¡´[#Áà °€ ¿;}è:¹;Mì*_ÿv‰ø¯?&È·F‰Ø¯?&Èf‰FA;Mì~ÜG;}è~ƹ;MìKWÿ‰Ð¯?&Èf‹]òf‰FA;Mì~çé)‰öfÇÈÑ#·ÊÑ#‰Áƒø~ºƒÂ·ÂƒÀ9È|óf‰ÈÑ#f¡ÈÑ#f£ÊÑ#éævfÇÊÑ#·ÌÑ#¡?&H9Â…¾¡?&H‰Eà‰UÜf¾ ?&Áâf‰Uæ¡´[#Áà °€ ¿;}Ü=v¹;Mà*_ÿv‰ø¯?&È·F‰Ø¯?&Èf‰FA;Mà~ÜG;}Ü~ƹ;MàGWÿ‰Ð¯?&Èf‹]æf‰FA;Mà~çé%‰öfÿ -ÊÑ#·ÊÑ#·ÌÑ#¯?&ÂÆS fÿÊÑ#éõ‰ö·ÊÑ#·ÌÑ#¯?&Ј CfÿÊÑ#·ÊÑ#;?&Ž¿fÇÊÑ#·ÌÑ#¡?&H9Â…š¡?&H‰EԉUÐf¾ ?&Áâf‰UÚ¡´[#Áà °€ ¿;}Ð=v¹;MÔ*_ÿv‰ø¯?&È·F‰Ø¯?&Èf‰FA;MÔ~ÜG;}Ð~ƹ;MÔ'Wÿ‰Ð¯?&Èf‹]Úf‰FA;MÔ~çëfÿÌÑ#·5ÊÑ#·=ÌÑ#‰øf¯?&f‰EΡ´[#Áà fEÎfuλÔ°‰Úî¹Õ‰ÊŠEÎî°‰Úîf‹EÎfÁè‰Êî‰óˆ?&‰ø¢ -?&ƒÄ([^_]ÐU‰åWVSƒì‹u‹} ‰øf¯?&f‰Eò¡´[#Áà fEòfuò»Ô°‰Úî¹Õ‰ÊŠEòî°‰Úîf‹EòfÁè‰Êî‰ð¢?&‰úˆ -?&ƒÄ[^_]ÍvU‰åS¹Ô°
-‰Êî»Õ‰ÚŠEî° ‰Êî‰ÚŠE î‹$ÉÍvU‰åWVSƒìf¾EÁàf‰Eò¡´[#Áà ¸€ ‹]ë0‹M ;M(sÿ‰Ø¯?&È·G‰ð¯?&Èf‰GA;M~ÜC;]~ʋM ;MSÿv‰Ð¯?&Èf‹]òf‰GA;M~çƒÄ[^_]ÍvU‰åWVSƒì ¡?&H‰Eð‹?&K‰]ìf¾ ?&Áàf‰Eê¡´[#Áà °€ ¿9ß<‰ö¹;Mð*_ÿv‰ø¯?&È·F‰Ø¯?&Èf‰FA;Mð~ÜG;}ì~ƹ;MðWÿ‰Ð¯?&Èf‹]êf‰FA;Mð~çƒÄ [^_]ÍvU‰å·J‰?&¶„@£?&¶„ÿ ¢ ?&¶P¢?&¶Q¢ -?&¶`¢ÏÑ#¶a¢ÎÑ#Ǹ[#Ç´[#]ÃU‰åWVSƒì ?&¢P  -?&¢Q¶ÀP¶?&PèŠýÿÿ¶ÎÑ#¶5ÏÑ#ƒÄ¹Ô°
-‰Êî¿Õ‰úˆØî° ‰Êî‰ú‰ðîeô[^_]ÍvU‰åSƒì‹]€;tŠCƒì ¾ÀPèiùÿÿƒÄ€;ué‹]üÉÃU‰åVS‹E‰ÃÁã £¸[#¹Ô° -‰Êî¾Õ‰òˆØî° ‰Êî‰ØfÁè‰òî[^]ÃU‰åVS‹u‹´[#Áâ»àÑ#¶?&‰¹Ò#¶ -?&‰
-µŠ¢?&Š
-¢ -?&‰5´[#[^]ÃU‰å¡¸[#]ÉöU‰å¡´[#]ÉöU‰åWVSƒì ‹}f¾u Áæf¾E Ƌ]‹E9Ã3v‹M9ù#‰Ê¯?&¡´[#Áà ÐØf‰´€ A9ù~ÞC;]~ЃìÿuÿuèüÿÿŠE¢ -?&ŠE¢?&ƒÄeô[^_]ÍvU‰åWVSƒì ¡?&H‰Eð‹=?&Of¾ ?&ÁãƒË ¾9Æ4¹9ù%v‰Ê¯?&¡´[#Áà Ððf‰œ€ A9ù~ÞF;uð~̃ìjjèûÿÿÆ -?&Æ?&ƒÄeô[^_]ÍvU‰åS‹U ‹]‹M¯?&¡´[#Áà ÂU”€ ˆ
-ˆZ‹$ÉÉöU‰åS‹E ‹]‹M‰Â¯?&¡´[#Áà ÂU”€ ¶B…Étˆ¶‰Â…Ûtˆ¾Â‹$ÉÐU‰åS‹E ‹MŠ]‰Â¯?&¡´[#Áà ÂU”€ €9tŠˆABˆB€9uò‹$ÉÐU‰åƒìh¼6#èTýÿÿôƒÄÉÉöU‰åƒìjèƒÄÉÉöU‰åƒìh4èƒÄÉÍvU‰åVS‹Ef£r¹d»þ¾v‰Êì©t Fþÿÿ~í¸@=Ÿ†~ø‰ÚˆÈö@=Ÿ†~øë‰öU‰åSƒìE Pÿuh Ò#èX‰ÃÇ$ Ò#è¢üÿÿ‰ØƒÄ‹]üÉÃU‰åWVSìð‹} ŠEˆ…ÿÿÿEPÿuÿÿÿSè‰ÆS¾…ÿÿÿPWÿuè±þÿÿ‰ðƒÄ eô[^_]ÃU‰åSƒìE Pÿuh Ô#謉ÃÇ$ Ô#è&üÿÿ‰ØƒÄ‹]üÉÃU‰åS‹M‹U ‰Ë€:tvŠˆBA€:uõƉ؋$ÉÍvU‰åVS‹]‹U ‹M‰Þë‰öŠˆBC€:t‰ÈI…ÀîƉð[^]ÐU‰å‹U‹M ë -¸€:tBAŠ:t)Ð]ÃU‰åS‹U‹] ‹M…Éëv¶¶Sÿ)Ð됊C8uíŠB„ÀtIu︋$ÉÐU‰å‹U¸€:tB@€:uù]ÍvU‰åS‹E‹] €8t‰Ú€:tŠv:
-tB€:uö@€8u下$ÉÉöU‰å‹E‹U €8t ‰ö8t @€8uö¸]ÍvU‰åS‹]‰Ú€;t‰öŠ
-AŸ<wAàˆB€:uì‰Ø‹$ÉÐU‰åS‹]‰Ú€;t‰öŠ
-A¿<wA ˆB€:uì‰Ø‹$ÉÐU‰åS‹U‹M ‰Ó€;tvB€:uú늈AB€9uõƉ؋$ÉÍvU‰åWVSƒì<‹u‹]ÇEèÇEäÇEàÇEÜÇEØÇEÔÇEпÇEÌÙîÝ]À‰uì‹E €8„D‹U €:%t…ÿuŠˆB‰U FÿEèév‹E €8%u%@‰E ¿ÇEä
-ÇEàÇEØÇE̋U ¾ƒè%ƒøS‡Ñÿ$… '#‰öÆ%FÿEè鼃ÉòFŠCüˆÿEè驐ƒ}Øt"ƒ}؃}Øtëƒ}ØuƒÃ‹Cü‰EÔë -vƒÃ¿Sü‰Uԃì ÿuÌÿuäj
-VÿuÔè¾ éœƒ}Øt"ƒ}؃}Øtëƒ}ØuƒÃ‹Cü‰EÐë -vƒÃ·Sü‰UЃì ÿuÌÿuäj
-VÿuÐè.éPƒ}Øt"ƒ}؃}Øtëƒ}ØuƒÃ‹Cü‰EÐë -vƒÃ·Sü‰UЃì ÿuÌÿuäjVÿuÐèâ鐃ËCü‰EЃì jÿuäjVPèÂé䐃ËSü€:tŠˆBFÿE܀:uò‹UÜUèévƒ}Øtƒ}؃}Øtëƒ}Øu ƒÃÝCøÝ]ÀƒìÿuÌÿuàÿuäVÿuÄÿuÀèYë~vƒ}Øtƒ}؃}Øtëƒ}Øu ƒÃÝCøÝ]ÀƒìÿuÌÿuàÿuäVÿuÄÿuÀè} -ë>vƒ}Øtƒ}؃}Øtëƒ}Øu ƒÃÝCøÝ]ÀƒìÿuÌÿuàÿuäVÿuÄÿuÀèa‰EÜEèÆ¿ƒÄ é±ÇEØé¥ÇEØ陃MÌ鐍vƒMÌ鄍v¿ƒMÌëvƒÿu?ƒìEìPj
-ÿu èb
-‰EäƒÄ‹E €80u ÷EÌtƒMÌ됃MÌ‹UìJ‰U ë4vƒÿu,ƒìEìPj
-ÿu è
-‰Eà‹EìH‰E ¿ƒÄë‰ö¿ÿE ‹U €:…¼üÿÿÆ‹Eèeô[^_]ÉöU‰åƒì EPÿu ÿuè7üÿÿƒÄÉÉöU‰åWVSƒì,‹u‹} ‹]ÇEìÇEèÇEäÇEàÇEÜÇEØÇEÔÇEЉuð€?„>€?%tƒ}Ôu ŠˆGFÿEìëá€?%uGÇEÔÇEè
-ÇEàÇEоƒè%ƒøS‡çÿ$…p(#Æ%FÿEìéԃÉòFŠCüˆÿEìéÁƒ}àt&ƒ}àƒ}àt
-ë"ƒ}àt
-ëƒÃ‹CüëƒÃ‹CüëƒÃ¿Cü‰E܃ì ÿuÐÿuèj
-VÿuÜè鏐ƒ}àt&ƒ}àƒ}àt
-ë"ƒ}àt
-ëƒÃ‹CüëƒÃ‹CüëƒÃ·Cü‰E؃ì ÿuÐÿuèj
-ëBƒ}àt&ƒ}àƒ}àt
-ë"ƒ}àt
-ëƒÃ‹CüëƒÃ‹CüëƒÃ·Cü‰E؃ì ÿuÐÿuèjVÿuØè6‰EäEìÆÇEÔƒÄ éҍvƒÃ‹Sü€:tŠˆBFÿEä€:uò‹EäEì飍vÇEàé›ÇEà鏃MÐ醍vƒMÐë}‰öÇEÔƒMÐënvƒ}Ôu6ƒìEðPj
-W蓉EèƒÄ€?0u ÷EÐtƒMÐ됃MЋ}ðOë1‰öƒ}Ôu)ƒìEðPj
-WèW‹}ðOÇEÔƒÄë
-vÇEÔGé¼ýÿÿvÆ‹Eìeô[^_]ÉöU‰åƒì EPÿu ÿuèGýÿÿƒÄÉÉöU‰åWVSƒì,‹}‹uÇEèÇEäÇEàÇEÜÇEØ»‰}ì饐‹U €:%t…Ûu B‰U 鏍v‹E €8%u%@‰E »ÇEäÇEàÇEÜÇE؋U ¾ƒè*ƒøN‡Eÿ$…À)#‰öƒû…8ƒìEìPj
-ÿu èN‰E܃MØ‹EìH‰E ƒÄéŠGƒÆ‹^üˆëÝØÿEèéõƒÆ‹^üëG€?tƒì ¾PèBƒÄ…ÀuçÇEÔë#‰ö÷EØuŠˆCë‹UÜ9UÔ}ŠˆCÿEÔG€?tƒì ¾PèþƒÄ…ÀtÇÆ덉öƒìhÈ6#Wè&÷ÿÿ‰ÇƒÄ EìPj
-WèՉ‹}ìƒÄƒ}à…Wƒ}ät)ƒ}ä ƒ}ätéCÿÿÿƒ}ä…9ÿÿÿƒÆ‹Fü‰é,ÿÿÿƒÆ‹Füf‰éÿÿÿ‰öƒìhÕ6#Wè¶öÿÿ‰ÇƒÄ EìPj
-됃ìhà6#Wèšöÿÿ‰ÇƒÄ EìPjWè ‹}ìƒÄƒ}à…̓}ät+ƒ}ä -ƒ}äté¹þÿÿ‰öƒ}ä…­þÿÿƒÆ‹Vü‰é þÿÿƒÆ‹Vüf‰é‘þÿÿ‰öƒìhø6#Wè*öÿÿ‰ÇƒÄEìPWè;‹}ìƒÄƒ}àu`ƒ}ät)ƒ}ä ƒ}ätéMþÿÿƒ}ä…CþÿÿƒÆ‹FüÝé8þÿÿƒÆ‹FüÙé*þÿÿvÇEäë vÇEäëvÇEàëÝؐ»ÿE ‹E €8…Pýÿÿ‹Eèeô[^_]ÐU‰åƒì EPÿu ÿuèïüÿÿƒÄÉÉöU‰åWVSƒì,‹u ÇEп‹Eƒð‰EԋU‰U̅Òy‰Ñ÷ىM̃}y ‹E…Ày÷Ø됋E÷EÔu ƒ}yƒ}yGƒ}u‹EÐÆD(Ø0@‰EÐë8v…Àt1U؉Uȉöƒì º÷ủÃRèI‹MȋUЈ
-B‰UЉ؃Ä…Àu×}ЋEԃàƒøu‰ú;}} -‰öÆ FGB;U|õƒ}y ƒ}yÆ-ë ÷EÔtÆ+F‹Eԃàƒøu‰ú;}} Æ0FGB;U|õ‹UÐJx M؊
-ˆFJy÷‹Eԃàƒøu‰ú;}} Æ FGB;U|õƉøeô[^_]ÃU‰åƒì‹Eÿuÿu÷ØPÿu ÿuèŸþÿÿƒÄ ÉÉöU‰å‹E…Ày÷Ø]ÉöU‰åSƒì‹]èÁîÿÿƒì Sè± ÿÿU‰åWVSƒì‹M‹} ÙîÙÀÙ軀9-u ¾ÿÿÿÿë
-‰ö¾ëA€90túŠƒè0< w(Ý+#ëÙˍv¾ƒè0AÜËÙËPÚ$XŠƒè0< vâÝۀ9.u9AŠƒè0< w/Ý+#ëÙÉÙʉö¾ƒè0AÜÊÙÊPÚ$ÙÉXØʊƒè0< vÝÝÚÙÉÞùÞÁVÚ $^€9et €9E…“A€9-u
-¾ÿÿÿÿAë‰ö€9+u ¾Aëv¾Šƒè0< weÝ+#¾ƒê0A·ÃÙÀPÚ $Ù}ð‹]ðÆEñ Ùmð‰]ðÛ]ìÙmð‹Eì·À‰$Û$‰$Ú$ZÙ}ð‹UðÆEñ Ùmð‰UðÛ]ìÙmð‹Eì‰ÃŠƒè0< v£Ý؅ö~!ºf…Ût4Ý+#·Ã‰öÜÉB9Â|ùëvº·Ã‰Ã9Â}Ý+#ÜùB9Ú|ùÝ؅ÿt‰ƒÄ[^_]ÐU‰åWVSƒì ‹]‹} ÇE쾀;-u ÇEðÿÿÿÿCë‰ö€;+u ÇEðCëÇEð€;0u>C€;0túë6ƒì ¾PCè‰ÂƒÄ9ú…Òy
-¸ëEv‰ð¯÷Ö9ð~ÇEìƒìW¾P聃ąÀu¶ƒ}t‹E‰ƒ}ìt¾ÿÿÿ¯uð‰ðeô[^_]ÉöU‰åWVSƒì ‹]‹} ÇEð¾€;0uC€;0tú€;xuKƒÿuFC€;0u@‰öC€;0túë6ƒì ¾PCè_‰ÂƒÄ9ú…Òy
-¸ëAv‰ð¯÷Ö9ðvÇEðƒìW¾PèуÄ…Àu¶ƒ}t‹E‰ƒ}ðt¾ÿÿÿ‰ðeô[^_]ÉöU‰åŠUBÐ< w ¾Âƒè0ë&vB¿<w ¾Âƒè7됍BŸ<w ¾ÂƒèW됾Â]ÍvU‰å‹Uƒú w B0¾À됍BöƒøwB7¾Àë¾Â]ÍvU‰åŠUƒê0¸€ú –À]ÉöU‰åŠUBÐ<vBŸ<w¸ë¸]ÐU‰åŠU€ú/~‹E ¼[#:Pÿ¸ë¸]ÐU‰åŠUBŸ<w Bà¾Àëv¾Â]ÍvU‰åŠUB¿<w B ¾Àëv¾Â]ÍvU‰åVS¾ƒì ¾]Sè%ƒÄ…Àuƒì Sè5ÿÿÿƒÄ…Àt¾‰ðeø[^]ÃU‰åŠUƒêA¸€ú9–À]ÉöU‰å¸€}/žÀ]ÍvU‰åŠUƒêa¸€ú–À]ÉöU‰åŠUB÷<v
-¸€ú u¸]ÉöU‰åŠUƒêA¸€ú–À]ÉöU‰åWVSƒì ÝEÝUè‹]‹}ÇEäSd$øÝ$èoƒÄ…Àtƒì Sè·îÿÿƒÄéPvÙîÝEèÚéßà€äE€üu Æ-C€uï€ë÷EtÆ+CÿEäÝ+#ÝEèÚéßà€äE€üuÆ0ÆC¸éû‰öÙèÝEèÝáßà€äE€üu3¾Ýéßà€äE€üuHÝ7#ÝEèØÉÝUèNÝêßà€äE€ütëÝØë)vÝØÝؾÝ7#ÝEèë ÝEèØñÝUèFÝéßàöÄtîÝ؃ì Vè÷ùÿÿƒÄƒøc~ƒïë‰öƒø ~ƒïë‰ö…ö~Oƒì‹EƒÈPÿuWSÿuìÿuèèUEäƒÄ …öu‹Eäë;‰ö]äÆeCƒì jºgfff‰ð÷êÁú‰ðÁø)ƒÂRj
-SVè\ùÿÿ‹UäD‰EäƒÄ eô[^_]ÍvU‰åWVSìŒÝEݝþÿÿ‹]Dž€þÿÿ½¸þÿÿ¹K¸üó«ƒìSÿµ”þÿÿÿµþÿÿ貃ąÀtƒì SèúìÿÿƒÄé‰öÙî݅þÿÿÚéßà€äE€üuÆ-C€µ—þÿÿ€ëv÷Et
-Æ+Cÿ…€þÿÿƒì…˜þÿÿPÿµ”þÿÿÿµþÿÿèþݝpþÿÿ‹…pþÿÿ‹•tþÿÿ‰Æ‰×DžŒþÿÿƒÄ݅˜þÿÿÙèÙÉÝáßàöÄ…ø重vh$@jÿµœþÿÿÿµ˜þÿÿè$݅˜þÿÿÜ5+#ݝ˜þÿÿÙ½´þÿÿ‹´þÿÿƅµþÿÿ Ù­´þÿÿ‰´þÿÿß½¨þÿÿÙ­´þÿÿ‹…¨þÿÿ‰$èûÿÿ‹•Œþÿÿˆ„*¸þÿÿB‰•ŒþÿÿƒÄ݅˜þÿÿÙèÙÉÚéßàöÄ„oÿÿÿ‹•Œþÿÿ•€þÿÿ‰ÑI…¸þÿÿ‰…|þÿÿë‰ö‹•|þÿÿŠˆCI‹•Œþÿÿƒê‰ÐÁèH!Â9Ñ}ޅÉx‹Œþÿÿƒéx
-vÆ0CIyùÆëÝØÝØÆ0Cÿ…€þÿÿÝ 7#‰µpþÿÿ‰½tþÿÿ݅pþÿÿÚéßàöÄE…\‹E@9…€þÿÿLÆ.Cÿ…€þÿÿ‹Eƒà‰…ˆþÿÿDž„þÿÿDžŒþÿÿv‰µpþÿÿ‰½tþÿÿ݅pþÿÿÜ(7#Ü -+#ݝpþÿÿ‹µpþÿÿ‹½tþÿÿƒì…˜þÿÿPWVèݝpþÿÿ‹•pþÿÿ‹tþÿÿ‰Ö‰Ï݅˜þÿÿÙ½´þÿÿ‹´þÿÿƅµþÿÿ Ù­´þÿÿ‰´þÿÿ۝¤þÿÿÙ­´þÿÿ‹…¤þÿÿƒÄ…Àtƒ½ˆþÿÿu
-Džˆþÿÿƒì PèÓùÿÿˆCÿ…€þÿÿÿ…ŒþÿÿƒÄƒ½ˆþÿÿt‹E9…Œþÿÿ~
-Dž„þÿÿ‹•€þÿÿ9U}
-Dž„þÿÿƒ½„þÿÿ„ýþÿÿKë
-‰öÿ€þÿÿ‰Ã€;0u Cÿ€{ÿ.uêCÆ‹…€þÿÿeô[^_]ÃU‰åWVSƒì‹]‹u ‹}WVSèZƒÄ…Àtƒì Wè¢éÿÿƒÄéñ‰öÙî‰]è‰uìÝEèÝáßàÝـäE€üuÙàëvÝ؉]è‰uìÝEèÝ+#ÙÉÝáßàÝـäE€üuÝØÆ0ÆG¸雺ÙèÙÉÝáßà€äE€üu/Ýáßà€äE€üu?Ý7#ëÙɐÜÉÙÉJÝâßà€äE€ütìÝØëvÝÙÝ7#ë‰öØñÙÉBÙÉÝáßàöÄtðÝØÝ؍BƒøvƒìÿuÿuÿuWVSèÔùÿÿë‰öƒìÿuÿuÿuWVSèXûÿÿƒÄ eô[^_]ÐU‰åƒìSÙ}ü›f‹Eüf -? f‰EøÙmø›ÝEÙüÝ]ð›‹Uð‹Mô‹]‰‰KÝEÜeðeì›ÛâÙmü›[ÉÍvU‰åƒì‹E‹U ‰Eø‰Uü‹MUøf‹BfÁè%ÿ=ÿt¸ëk÷Bÿÿuƒ:t…Étƒìh07#QèDçÿÿƒÄ¸ë@‰ö€zy…Étƒìh47#Qè çÿÿƒÄ¸ë‰ö…Étƒìh97#QèçÿÿƒÄ¸ÉÃU‰åƒì¸ Ö#ƒ=È[#tÿÈ[#ÉÃU‰å‹E£È[#]ÍvU‰åƒì‹E‹U ‰Eø‰UüUø¹f‹BfÁè%ÿ=ÿu÷Bÿÿuƒ}øt¹‰ÈÉÉöU‰åSƒì‹E ‹]ÆPè‰âÿÿ‰ØƒÄ‹]üÉÍvU‰åVSƒì ÝEÝUð‹]‹uVSd$øÝ$èrÝ]èƒÄƒ=Ì[#ÿtWƒìVSèYÿÿÿƒÄ…ÀuFƒìÿuôÿuðèDÿÿÿƒÄ…Àu1Ùî‰]à‰uäÝEàÚéßà€äE€ô@uƒì jVSÿuôÿuðè4ƒÄ ëvÝEèeø[^]ÉöÝD$ ÝD$Ùø›ßàžzøÝÙͶ¼'U‰åVSƒì0ÝE‹]‹u‹EÝUà‰]è‰uìPÿú‡Èÿ$•0+#ÝØÇEغ>7#ƒøc~ºC7#‰UÜÇEðÇEôƒ=Ì[#„}ƒì EØP誃ąÀ…uƒ=Ì[#…YƒìjhI7#éëvÝØÇEغ]7#ƒøc~ºb7#‰UÜÇEðÇEôƒ=Ì[#„ƒì EØPè>ƒÄ…À… ƒ=Ì[#…íƒìjhh7#év‰]à‰uäÝ]èÇEغ|7#ƒøc~º‚7#‰UÜÇEðÇEôƒ=Ì[#„žƒì EØPè˃ąÀ…–ƒ=Ì[#…zƒìjh‰7#é ÝØÇEغž7#ƒøc~º¤7#‰U܃=Ì[#uÇEðàÇEôÿÿïGé¸ -¡À[#‹Ä[#‰Eð‰Uôé¡ -‰öÝØÇEغ29#ƒøc~º89#‰U܃=Ì[#uÇEðàÇEôÿÿïGéh -¡À[#‹Ä[#‰Eð‰UôéQ -‰öÝØÇEغ«7#ƒøc~º¯7#‰U܃=Ì[#uÇEðàÇEôÿÿïGé -¡À[#‹Ä[#‰Eð‰Uôé -‰öÝØÇEغ«7#ƒøc~º¯7#‰UÜÇEðÇEôéÑ ‰öÝØÇEغ72#ƒøc~º´7#‰U܃=Ì[#uÇEðàÇEôÿÿïÇë¡À[#‹Ä[#ò€‰Eð‰Uôƒ=Ì[#„óƒì EØPè ƒÄ…À…ëƒ=Ì[#…σìjh¸7#éaÝØÇEغ72#ƒøc~º´7#‰U܃=Ì[#uÇEðàÇEôÿÿïÇë¡À[#‹Ä[#ò€‰Eð‰Uôƒ=Ì[#„gƒì EØP蔃ąÀ…_ƒ=Ì[#…Cƒìjh¸7#éÕ -ÝØÇEغø1#ƒøc~ºÊ7#‰U܃=Ì[#uÇEðàÇEôÿÿïÇë¡À[#‹Ä[#ò€‰Eð‰Uôƒ=Ì[#„Û -ƒì EØPèƒÄ…À…Ó -ƒ=Ì[#…· -ƒìjhÎ7#éI -ÝØÇEغø1#ƒøc~ºÊ7#‰U܃=Ì[#uÇEðàÇEôÿÿïÇë¡À[#‹Ä[#ò€‰Eð‰Uôƒ=Ì[#„O -ƒì EØPè| -ƒÄ…À…G -ƒ=Ì[#…+ -ƒìjhÎ7#é½ ÝØÇEغà7#ƒøc~ºã7#‰U܃=Ì[#uÇEðàÇEôÿÿïÇë¡À[#‹Ä[#ò€‰Eð‰Uôƒ=Ì[#„à ƒì EØPèð ƒÄ…À…» ƒ=Ì[#…Ÿ ƒìjhç7#é1 ÝØÇEغà7#ƒøc~ºã7#‰U܃=Ì[#uÇEðàÇEôÿÿïÇë¡À[#‹Ä[#ò€‰Eð‰Uôƒ=Ì[#„7 ƒì EØPèd ƒÄ…À…/ ƒ=Ì[#… ƒìjhç7#é¥ ÝØÇEغù7#ƒøc~º8#‰U܃=Ì[#uÇEðàÇEôÿÿïGéP ¡À[#‹Ä[#‰Eð‰Uôé9 ‰öÝØÇEغù7#ƒøc~º8#‰U܃=Ì[#uÇEðàÇEôÿÿïGë¡À[#‹Ä[#‰Eð‰Uôƒ=Ì[#„a ƒì EØPèŽ ƒÄ…À…Y ƒ=Ì[#…= ƒìjh8#éÏ
-vÝØÇEغ8#ƒøc~º 8#‰U܃=Ì[#uÇEðàÇEôÿÿïÇë¡À[#‹Ä[#ò€‰Eð‰Uôƒ=Ì[#„å ƒì EØPè ƒÄ…À…Ë
-ƒ=Ì[#…¯
-ƒìjh%8#éA
-ÝØÇEغ8#ƒøc~º 8#‰U܃=Ì[#uÇEðàÇEôÿÿïÇë¡À[#‹Ä[#ò€‰Eð‰Uôƒ=Ì[#„G
-ƒì EØPèt
-ƒÄ…À…?
-ƒ=Ì[#…#
-ƒìjh68#éµ ÝØÇEغI8#ƒøc~ºO8#‰U܃=Ì[#uÇEðàÇEôÿÿïÇë¡À[#‹Ä[#ò€‰Eð‰Uôƒ=Ì[#„Íƒì EØPèè ƒÄ…À…³ ƒ=Ì[#…— ƒìjhV8#é) ÝØÇEغI8#ƒøc~ºO8#‰U܃=Ì[#uÇEðàÇEôÿÿïÇë¡À[#‹Ä[#ò€‰Eð‰Uôƒ=Ì[#„/ ƒì EØPè\ ƒÄ…À…' ƒ=Ì[#… ƒìjhi8#靐ÝØÇEغ~8#ƒøc~º‚8#‰UÜÇEðÇEôƒ=Ì[#… ƒì EØPèòƒÄ…À…½ƒìjh‡8#jèÞõÿÿèeõÿÿÇ!ƒÄ降vÇEغ~8#ƒøc~º‚8#‰U܃=Ì[#uvÇEðàÇEôÿÿïG‰]ЉuÔÝEÐÜ -è9#Ý]Ћ]ЋuÔÙîÙÉÚéßà€äE€ü…¯ƒìVSèjƒÄ‰]ЉuÔÝEÐÙÉÚéßà€äE€ü@„‡ÇEðàÇEôÿÿïÇét¡À[#‹Ä[#‰Eð‰Uô‰]ЉuÔÝEÐÜ -è9#Ý]Ћ]ЋuÔÙîÙÉÚéßà€äE€ü…6ƒìVSèñƒÄ‰]ЉuÔÝEÐÙÉÚéßà€äE€ü@„¡À[#‹Ä[#ò€‰Eð‰UôéòvÝØÇEغ~8#ƒøc~º‚8#‰UÜÇEðÇEôéÁ‰öÝØÇEغ~8#ƒøc~º‚8#‰U܃=Ì[#uÇEðÇEôë¡À[#‹Ä[#ò€‰Eð‰Uôƒ=Ì[#„ãƒì EØPèƒÄ…À…Ûƒ=Ì[#…¿ƒìjhŸ8#éQÝØÇEغ~8#ƒøc~º‚8#‰U܃=Ì[#uÇEðÇEôëÇEðÇEôøƒ=Ì[#„`ƒì EØP荃ąÀ…Xƒ=Ì[#…<ƒìj hÀ9#éΉöÇEغ¹8#ƒøc~º¾8#‰U܃=Ì[#u6ÙîÙÉÚéßàöÄEuÇEðàÇEôÿÿïGém‰öÇEðàÇEôÿÿïÇéX‹ -À[#‹Ä[#‰Mð‰]ôÙîÙÉÚéßàöÄE„4‰È‰Úò€‰Eð‰UôéÝØÇEغÄ8#ƒøc~ºÉ8#‰U܃=Ì[#uÇEðÇEôëÇEðÇEôøƒ=Ì[#„Lƒì EØPèyƒÄ…À…Dƒ=Ì[#…(ƒìjhÏ8#麉öÇEغã8#ƒøc~ºè8#‰U܃=Ì[#uÝ]ðëÝØÇEðÇEôøƒ=Ì[#„Òƒì EØPèÿƒÄ…À…ʃ=Ì[#…®ƒìjhî8#é@ÝØÇEغ9#ƒøc~º -9#‰UÜÇEðÇEôøƒ=Ì[#„iƒì EØP薃ąÀ…aƒ=Ì[#…Eƒìjh9#é׍vÝØÇEغ19#ƒøc~º79#‰UÜÇEðÇEôøƒ=Ì[#„ýƒì EØPè*ƒÄ…À…õƒ=Ì[#…Ùƒìjh>9#ékvÝØÇEغS9#ƒøc~ºY9#‰UÜÇEðÇEôøƒ=Ì[#„‘ƒì EØP较ąÀ…‰ƒ=Ì[#…mƒìjh`9#éÿvÇEغS9#ƒøc~ºY9#‰UÜÜ5ð9#Ý]ðƒ=Ì[#„,ƒì EØPèYƒÄ…À…$ƒ=Ì[#…ƒìjhu9#隉öÇEغˆ9#ƒøc~ºŽ9#‰U܋ -À[#‹Ä[#‰Mð‰]ôÙîÙÉÚéßàöÄEtC‰È‰Úò€‰Eð‰Uôë1‰öÇEغˆ9#ƒøc~ºŽ9#‰U܍d$øÝ$jjè›Ý]ðƒÄƒ=Ì[#…jé|vÝØÇEغ•9#ƒøcŽ•º˜9#鋍vÝØÇEغ72#ƒøc~uº´7#ën‰öÝØÇEغ«9#ƒøc~Yº®9#ëR‰öÝØÇEغø1#ƒøc~=ºÊ7#ë6‰öÝØÇEغ²9#ƒøc~!ºµ9#ë‰öÝØÇEغà7#ƒøc~ºã7#‰UÜÇEðÇEôƒ=Ì[#„¯ƒì EØPèʃąÀ…•ƒ=Ì[#…‹ƒìjÿuÜjè«îÿÿƒÄ jhœ9#jèšîÿÿƒÄëfÝØÇEغú7#ƒøc~º8#‰U܃=Ì[#uÇEðàÇEôÿÿïGë¡À[#‹Ä[#‰Eð‰Uôƒ=Ì[#tƒì EØPè2ƒÄ…À…ýè¶íÿÿÇ"éívÝØÇEغú7#ƒøc~º8#‰U܃=Ì[#uÇEðàÇEôÿÿïGë¡À[#‹Ä[#‰Eð‰Uôƒ=Ì[#„‰ƒì EØP趃Ä…À…ƒ=Ì[#uiƒìjh 8#jè™íÿÿƒÄëSÇEغ~8#ƒøc~º‚8#‰UÜÝ]ðƒ=Ì[#ÿt ƒ=Ì[#uÇEðÇEôð?ë$‰öƒì EØPè@ƒÄ…ÀuèÈìÿÿÇ!ëÝØÝEðeø[^]ËT$â€‹D$%ÿÿÿ ЉD$ÝD$ÉöU‰å¸]ÉöÝD$ÙüÉö¼'U‰åWVSƒì ‹E ‰EðEƒEðƒeðøƒàø‰Eì‹Eð9EìsƒìjUhø9#h:#è˜ ƒÄ‹Eð9Eì„Ä‹E‹…Û„·‹C;C rƒìj`hø9#h -:#è` ƒÄöCtƒìjahø9#h@:#èC ƒÄöC tƒìjbhø9#h€:#è& ƒÄ‹Eì;CvL‹Eð;C sD‰Æ‹}ì;ss‹s;{ v‹{ 9÷wƒìjnhø9#h!:#èæ ƒÄƒì‰ø)ðPVÿu蚃ċ…Û…Iÿÿÿeô[^_]ÐU‰åWVSƒì ‹u ‹E‹}‰ÂUƒÀƒàøƒâø9†ŒÇF‰F‰V ‹E‰F‰~ÇF‹MëF‰ö9óuƒìjlh°:#h»:#èX ƒÄ‹F ;Cv‹F;C sƒìjmh°:#hà:#è1 ƒÄ‰Ù‹…Ût9{±9{u‹S +S‹F +F9Âwœ‰‰1eô[^_]ÃU‰åWVSƒì ‹]‹} …ÛuƒìjLh -;#h;#èÙ
-ƒÄ…ÿuƒìjMh -;#h;#è¾
-ƒÄƒÇƒçø‹3…ö„rvƒ~uƒ~t‹F;FsƒìjUh -;#h`;#è€
-ƒÄƒ~t‹F;F rƒìjUh -;#hÀ;#è[
-ƒÄ‹F +F9FvƒìjUh -;#h<#è9
-ƒÄ‹F÷ЅE…åF‰Eð‹^…Û„ԍv÷Ãtƒìj^h -;#h@<#èø ƒÄöCtƒìj_h -;#h€<#èÛ ƒÄƒ;t9wƒìj`h -;#hÀ<#è» ƒÄ;^ rƒìjah -;#h6;#èŸ ƒÄ9{rGv‹‰‹C)ø‰B‹Eð‰ë
-v‹‹Uð‰9~sƒìjwh -;#hM;#è\ ƒÄ)~‰Øë‰ö‰]ð‹…Û…/ÿÿÿ‹6…ö…‘þÿÿ¸eô[^_]ÃU‰åƒì jÿjÿuÿuÿuÿu ÿuèƒÄ ÉÐU‰åWVSƒì‹]‹EE ‰Eð…ÛuƒìjThé<#h;#èۃă} uƒìjUhé<#h;#较ċ;…ÿ„lƒuƒt‹G;Gsƒìj[hé<#h`;#舃ăt‹G;G rƒìj[hé<#hÀ;#ècƒÄ‹G +G9Gvƒìj[hé<#h<#èAƒÄ‹G÷ЅE…á‹Uð9WƒÕ‹M9O †ÉG‰Eì‹_…Û„¸v÷Ãtƒìjkhé<#h@<#èèƒÄöCtƒìjlhé<#h€<#è˃ă;t9wƒìjmhé<#hÀ<#諃Ä;_ rƒìjnhé<#h6;#菃ċU 9S‚$‰Þ;]s‹u¹;M}ºÓâ‹E1ð…ÂtÖA;M|è‰ð)ØE ;C‡è‹M 1;Eð‡æ‰ðƒàø‰Eè9Øsƒìh‘hé<#hô<#èƒÄ9]èvC‹Uè)ډUä÷Âtƒìh–hé<#h =#èãƒÄ‹‹M艋C+Eä‰A‹Eä‰C‰]ì‰ðƒà‹U Tƒâø‰U ‹Mè9Qv‰ÊU ‹‰‹A+E ‰B‹Eì‰ë
-‹Uè‹‹M쉋E 9Gsƒìh´hé<#hM;#èkƒÄ‹U )W‰ðë‰ö‰]ì‹…Û…Kþÿÿ‹?…ÿ…•ýÿÿ¸eô[^_]ÃU‰åƒì jÿjjj ÿu hÿuèýÿÿƒÄ ÉÐU‰åWVSƒì‹]ShR=#èeÌÿÿ‹3ƒÄ…ö„ƒìÿvÿvÿv‹F +FPÿv ÿvhà=#è5ÌÿÿƒÄ ƒ~uƒ~t‹F;Fsƒìjahd=#h`;#袃ă~t‹F;F rƒìjahd=#hÀ;#è}ƒÄ‹F +F9Fvƒìjahd=#h<#è[ƒÄ¿‹^…Û„¾ƒì ÿ3ÿs‰ØCPSh >#è—ËÿÿƒÄ ÷Ãtƒìjihd=#h@<#èƒÄöCtƒìjjhd=#h`>#èóƒÄƒ{wƒìjkhd=#hk=#èփă;t9wƒìjlhd=#hÀ<#趃Ä;^ rƒìjmhd=#h6;#蚃Ä{‹…Û…BÿÿÿƒìWh‡=#èäÊÿÿƒÄ9~tƒìjshd=#hš=#è`ƒÄ‹6…ö…cþÿÿƒì h²=#è®ÊÿÿƒÄeô[^_]ÍvU‰åWVSƒì ‹u‹] ‰ßƒçø…öuƒìjNhû9#h;#è ƒÄ…ÛuƒìjOhû9#h’>#èñƒÄƒ}uƒìjPhû9#h;#èԃĉ؃à‹UTƒâø‰U‹ëv‹…ÛuƒìjXhû9#h>#螃ă{uƒ{t‹C;CsƒìjYhû9#h`;#èsƒÄƒ{t‹C;C rƒìjYhû9#hÀ;#èNƒÄ‹C +C9CvƒìjYhû9#h<#è,ƒÄ;{‚hÿÿÿ;{ ƒ_ÿÿÿ‹EC‹C +C9Cvƒìjbhû9#h<#èòƒÄÇEð‹sëv‰uð‹6…öt9þróƒ}ðtm‹Eð@9ørc9øtƒìjnhû9#hÀ>#諃ąöt8‹U:9ðr.9ðtƒìjuhû9#h?#肃ċEF‹UðB‹‰ëE‹E‹UðBë9ƒ}ðt
-‹Eð‰8ëv‰{…öt‹U:9ðr‰ÐF‰G‹‰ë ‹E‰G‰7eô[^_]ÃU‰åƒì hÿu ÿuèÒýÿÿƒÄÉÐU‰å‹EÇ]ÉöU‰åWVSƒì ÇEèÇEìÇEð‹E‹0…ö„Zƒ~uƒ~t‹F;Fsƒìj]h&?#h`;#蠃ă~t‹F;F rƒìj]h&?#hÀ;#è{ƒÄ‹F +F9Fvƒìj]h&?#h<#èYƒÄÿEð¿‹^…Û„¨v÷Ãtƒìjdh&?#h@<#è$ƒÄöCtƒìjeh&?#h`>#èƒÄƒ{wƒìjfh&?#hk=#èêƒÄƒ;t9wƒìjgh&?#hÀ<#èʃÄ;^ rƒìjhh&?#h6;#讃ÄÿEì{‹…Û…[ÿÿÿ9~tƒìjnh&?#hš=#肃Ä‹FEè‹6…ö…§þÿÿƒì ÿuìÿuðÿuèÿuh@?#è¾ÆÿÿƒÄ eô[^_]ÍvU‰åVS‹u‹] EƒìPÿuh@Ö#è…ÈÿÿƒÄh@Ö#ÿ5€Þ#jSVhÀ?#è5ƒÄ eø[^]ÍvU‰åƒìÿ5lÞ#jÿuÿu ÿuh€?#èƒÄ ÉÉöU‰åƒì E Pÿuh@Ú#èÈÿÿƒÄ jjhø!#èì%ÿÿƒÄh@Ú#h#@#èŠÅÿÿÇ$MèFÿÿƒÄÉÐU‰åƒìh@Ú#h@#ècÅÿÿƒÄÉÉöU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)лDß#‰]ð‹´ÃЃùÿtCI‰ÐÁà)Ð;´ÃÐr0»Hß#‰Ï‰ÐÁà)ЋLÃPƒùÿtI‰ÐÁà)ЋUð;´ÂÐsՃÿÿt‰ÐÁà)ЋU‰Řß#ë
-‰ö‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰Ŝß#ë
-‹E‹U ‰B‹E@‰ÐÁà)ЍÅP‰ˆHß#‰¸Lß#ƒÄ[^_]ÍvU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)ÐÁà‹â#‰U苀â#‰Eìƒùÿtw ‰ÆȉÂÁâ)‹Eè‰Ã;Õâ#|[‰Eäv1‰ÐÁà)ЍÅ;šâ#u ‹Eì;‚â#|1‰Ï‰ÐÁà)Ћ Řß#ƒùÿt4 1‰ÐÁà)Ћ]ä;Åâ#}«ƒÿÿt‰ÐÁà)ЋU‰Řß#ë‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰Ŝß#ë
-‹E‹U ‰B‹E@‰ÐÁà)ЍÅP‰ˆHß#‰¸Lß#ƒÄ[^_]ÍvU‰å‹EÇÿÿÿÿÇ@ÿÿÿÿ]ÍvU‰åWVS‹uv‰ÐÁà)ЍÅP‹˜Lß#¿Hß#‹ 8ƒûÿt[‰ÐÁà)ЉLÇPëv‹E ‰ƒùÿt&I‰ÁÁá)Á»Lß#v‰ÐÁà)ЋDÃP‰DËPë v‹E ‰X[^_]ÐU‰åS‹M‹‰Øƒûÿt=‹@‰ÂÁâ)‹՘ß#‰ƒøÿt@‰ÐÁà)ÐÇŜß#ÿÿÿÿë
-vÇAÿÿÿÿ‰Ø‹$ÉÉöU‰åS‹M‹] ƒ;ÿt)I‰ÐÁà)Ћ‰Řß#‹@‰ÂÁâ)‰ ՜ß#됉KI‰ÐÁà)ÐÇŘß#ÿÿÿÿI‰ÐÁà)ÐÇŜß#ÿÿÿÿ‰ ‹$ÉÃU‰åS‹M‹] ƒ{ÿt,I‰ÐÁà)ЋS‰Ŝß#‹C@‰ÂÁâ)‰ ՘ß#ë‰ö‰ I‰ÐÁà)ÐÇŜß#ÿÿÿÿI‰ÐÁà)ÐÇŘß#ÿÿÿÿ‰K‹$ÉÃU‰å‹E‹]ÉöU‰å‹E‹@]ÐU‰å·Eƒøt ƒø…Àtë-ƒøtƒøtë ¸A@#됸F@#됸J@#됸P@#됸1#]ÐU‰åWVSƒìœúX‰Â‰Uä÷Et$ƒìEèPjèL—ÿÿƒÄ ÿuìÿuèh`@#èeÁÿÿƒÄ÷EtN¾;5pÞ#sA¿ Þ#vƒì µ‹;¶BP·BPRVh @#è!ÁÿÿƒÄ‹;VÿP ƒÄF;5pÞ#rÇ÷Etƒì h{@#èõÀÿÿèX&ÿÿƒÄ‹Uä‰ÐPeô[^_]Éö¨ê"pí"pí"pí"pí"pí"Üì"pí"èì"ôì"pí"í"í"í"í"í"í"í"í"í"í"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"pí"´ê"Èê"4ì"ôë"tì"Ðì"Èê"pí"pí"Äì"pí"Ðì"pí"¬ë"pí"pí"Ìë"pí"ë"pí"pí"`ë"Tî"4ð"4ð"4ð"4ð"4ð"¬ï"4ð"¸ï"Àï"4ð"Ðï"Ðï"Ðï"Ðï"Ðï"Ðï"Ðï"Ðï"Ðï"Ðï"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"4ð"`î"tî"4ð"4ð"4ð" ï"tî"4ð"4ð"”ï"4ð" ï"4ð"4ð"4ð"4ð"lï"4ð"Äî"4ð"4ð"ï"@ó"Ló"Ló"Ló"Ló"Ló"ñ"ñ"ñ"ñ"ñ"ñ"ñ"ñ"ñ"ñ"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"Ló"@ñ"Äñ"Àò"Àò"Àò"4ó"Äñ"Ló"Ló"(ó"Ló"4ó"Ló"Ló"Ló"Ló"Xñ"Ló"4ò"Ló"Ló"Pò"$@$@¤##|#ì#<#Œ#Ü# #˜#$#°#<#È#T#¤#, #¸ #D
-#Ð
-#\ #Ð #ì # -#¨ -#,#¼#@#¸#$##ü#`#¬#ð##0#L#h#„##|##d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#¤##|#ì#<#Œ#Ü# #˜#$#°#<#È#T#¤#, #¸ #D
-#Ð
-#\ #Ð #ì # -#¨ -#,#¼#@#¸#$##ü#`#¬#ð##0#L#h#„##|##ONCE: (pid=%d)
-J (pid=%d) exits
-main: creating prova_key
-main: provakey =%d
-main: creating J1
-Error creating J1
-main: J1 has PID %d
-main: creating J2
-Error creating J2
-main: J2 has PID %d
-main: waiting 0.4 sec
-main: kill J1 and J2
-main: ending...
-J (pid=%d) destructor called with value %d
-J (pid=%d) printtest value=%d
-J (pid=%d) starts and call setspecific
-Error during Keyboard Initialization!!!Ctrl-C pressed!
-KeybPortKeyTasktask_create
-scheduletime %lus %luns * caplasttime %lus %luns * exec=%d TIME = %lu
-The system tick must be less than 55 mSec!Abort detected
-Code : %u
-Too many scheduling levels!!!
-Too many resource levels!!!
-debug info noticewarn err crit alert emerg <%i>[%s] %sPosix task
-Signal number %d...
-with value : %d
-POSIX_ReadyPOSIX_DelayPOSIX_UnknownSlice: %d
-MainPOSIX_register_level
- alloco descrittore %d %d
- lev=%d
-POSIX schedulerPid: %d Name: %20s Prio: %3ld Status: %s
-
-Panic!!! can't create main task...
-dummy PID: %d
-Dummy1Dummy2Dummy3Dummy4Dummy5Dummy6Dummy7Dummy8Dummy9Dummy0DummyaDummybDummycDummydDummyeDummyfDummygDummyhDummyDummy (RR) Posto dummy_create
-
-Panic!!! can't create dummy task...
-Entro in dummy_register_level
-Port des :
-Free port des : %d
-%d %s vt: %d pn: %d
-%d pd: %d vt: %d pn: %d Resources owned by the tasks:
-%-4dPI_register_module
-PI module
-PC priority of the tasks:
-%-4ldPC_register_module
-PC moduleTR %x
-SS:SP %x:%lx
-Stack0 : %x:%lx
-Stack1 : %x:%lx
-Stack2 : %x:%lx
-CS : %x DS : %x
-Descriptor [%x] InfoNo more Descriptors...
-%x (Hex)Base : %lx Lim : %lx Acc : %x Gran %x
-2Coprocessor error#Page fault*General protection fault*Stack exception*Segment not present*Unvalid TSS#INTEL reserved*Double defect1FPU context switch*Unvalid opcode#BOUND limit exceeded#Overflow detected on INTO#Breakpoint trap#NMI detected#Debug fault#Division by 0Exception %d occurred
-ABORT %d !!!LL Time Panic!!!
-time.cError! File:%s Line:%d %sOne-shot timer selected...
-Periodic timer selected...
-Unhandled Exc or Int occured!!!
-32/LINUX CrossCompiled/ELFHalt called1234567890-+12345678901234567890xabcdefABCDEF1234567890.e+-0123456789ABCDEF$@ -Æ@,ú1°<NaN+Inf-Infacosacosfacos: DOMAIN error
-asinasinfasin: DOMAIN error
-atan2atan2fatan2: DOMAIN error
-hypothypotfexpexpfy0fy0: DOMAIN error
-y1fy1: DOMAIN error
-ynynfyn: DOMAIN error
-lgammalgammaflgamma: SING error
-loglogflog: SING error
-log: DOMAIN error
-log10log10flog10: SING error
-log10: DOMAIN error
-powpowfpow(0,0): DOMAIN error
-pow(0,neg): DOMAIN error
-sinhsinhfsqrtsqrtfsqrt: DOMAIN error
-fmodfmodffmod: DOMAIN error
-remainderremainderfremainder: DOMAIN error
-acoshacoshfacosh: DOMAIN error
-atanhatanhfatanh: DOMAIN error
-atanh: SING error
-scalbscalbfj0j0f: TLOSS error
-j1j1fjnjnfneg**non-integral: DOMAIN error
-à?addfree.cmax >= minreg->min < reg->maxnew_max > new_min(reg->min & (sizeof(struct lmm_node) - 1)) == 0(reg->max & (sizeof(struct lmm_node) - 1)) == 0addregio.cr != reg(reg->max <= r->min) || (reg->min >= r->max)alloc.clmm != 0size > 0reg->free >= 0(DWORD)node < reg->maxreg->free >= size(reg->nodes == 0 && reg->free == 0) || (DWORD)reg->nodes >= reg->minreg->nodes == 0 || (DWORD)reg->nodes < reg->maxreg->free <= reg->max - reg->min((DWORD)node & (sizeof(struct lmm_node) - 1)) == 0((DWORD)node->size & (sizeof(struct lmm_node) - 1)) == 0(node->next == 0) || (node->next > node)alloc_ge.canode >= node(split_size & (sizeof(struct lmm_node) - 1)) == 0lmm_dump(lmm=%p)
-dump.cnode->size >= sizeof(*node) free_check=%08lx
-reg->free == free_checklmm_dump done
- region %08lx-%08lx size=%08lx flags=%08lx pri=%d free=%08lx
- node %p-%08lx size=%08lx next=%p
-(node->size & (sizeof(struct lmm_node) - 1)) == 0block != 0reg != 0(DWORD)prevnode + prevnode->size == (DWORD)node(DWORD)node + size == (DWORD)nextnodestats.cLMM=%p: %u bytes in %u regions, %d nodes
-assertion %s failed in %s at line %i (task:%i_%i)
-MAGIC assertion failed in %s at line %i (task:%i_%i): %s
-KERNEL PANIC (sys_panic_stub): %s
-KERNEL PANIC (sys_panic): %s
-FreeExeSleepWaiting on joinTime (EXACT) : %lus %luns
-< Memory Dump >
-< Level %d : %s Code: %d Version: %d >
-8Œÿÿ’ÏÿÿšÏÿÈP#ÿà[#ÿÿÿÿÿÿÿÿÿÿÿÿ1234567890!@#$%^&*()-_=+[{]};:'"`~/?,<.>\|   - -1234567890.+*/-+*-aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ 1234567890!"œ$%&/()='?^Š‚+*•‡…ø\|<_,:.;—õ   - -1234567890.+*/-+*-aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ[]@#ìX#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ­0#¦0#Ÿ0#˜0#‘0#Š0#ƒ0#|0#èz"ðz"ðz"Ó5#Æ5#¸5#§5#Œ5#v5#f5#R5#C5#35#&5#5#5#æ4#Ú4#35#Ç4#þþAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAš7#ðÿÿÿÿGCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)01.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.01.symtab.strtab.shstrtab.text.rodata.data.sbss.bss.comment.note"€'! '# '¨ )ÈP#HA /Ð[#`L5à[#`L8ã :`LLC¬]hdI
\ No newline at end of file
/pj/pse51/ptest2
Property changes:
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: pj/pse51/ptest1.c
===================================================================
--- pj/pse51/ptest1.c (revision 1344)
+++ pj/pse51/ptest1.c (nonexistent)
@@ -1,221 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: ptest1.c,v 1.1.1.1 2002-09-02 09:37:47 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:47 $
- ------------
-
- Posix test 1:
-
- the main task create 4 tasks, J1, J2, J3, J4
- at t = 0.2 sec. it raise a signal to J1
- at t = 0.4 sec. it raise a signal to J2
- at t = 0.8 sec. it kill J4
-
- J1: it simply calls sigwait
-
- J2: it simply calls sigwaitinfo
-
- J3: it simply calls sigtimedwait with a timeout of 0.5 sec.
-
- J4: it simply calls sigtimedwait with a -long- timeout
- (J4 will be killed by main)
-
- non standard function used:
- cprintf
- sys_gettime
- keyboard stuffs
- sys_end
-
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <sys/types.h>
-#include <pthread.h>
-#include <signal.h>
-
-#include <kernel/kern.h>
-#include <drivers/keyb.h>
-
-void *J1(void *arg)
-{
- int sig, err;
- sigset_t mask;
-
- cprintf("J1 starts and call sigwait(31)\n");
-
- sigemptyset(&mask);
- sigaddset(&mask,31);
- err = sigwait(&mask,&sig);
-
- cprintf("J1 exit from sigwait(), err=%d, sig=%d\n", err, sig);
-
- return 0;
-}
-
-void *J2(void *arg)
-{
- int err;
- siginfo_t info;
- sigset_t mask;
-
- cprintf("J2 starts and call sigwaitinfo(30)\n");
-
- sigemptyset(&mask);
- sigaddset(&mask,30);
- err = sigwaitinfo(&mask,&info);
-
- cprintf("J2 exit from sigwaitinfo(), err=%d, signo=%d code=%d value=%d\n",
- err, info.si_signo, info.si_code, info.si_value.sival_int);
-
- return 0;
-}
-
-void *J3(void *arg)
-{
- int err;
- siginfo_t info;
- sigset_t mask;
- struct timespec t;
-
- cprintf("J3 starts and call sigtimedwait(29)\n");
-
- sigemptyset(&mask);
- sigaddset(&mask,29);
- t.tv_sec = 0;
- t.tv_nsec = 300000000;
- err = sigtimedwait(&mask,&info,&t);
-
- cprintf("J3 exit from sigtimedwait(), err=%d, signo=%d code=%d value=%d\n",
- err, info.si_signo, info.si_code, info.si_value.sival_int);
-
- return 0;
-}
-
-void uscitaJ4(void *arg)
-{
- cprintf("J4: AAAARRRRGGGHHH!!! killed by someone...\n");
-}
-
-void *J4(void *arg)
-{
- int err;
- siginfo_t info;
- sigset_t mask;
- struct timespec t;
-
- cprintf("J4 starts and call sigtimedwait(28)\n");
-
- sigemptyset(&mask);
- sigaddset(&mask,28);
- t.tv_sec = 10;
- t.tv_nsec = 0;
-
- pthread_cleanup_push(uscitaJ4,NULL);
- err = sigtimedwait(&mask,&info,&t);
- pthread_cleanup_pop(0);
-
- cprintf("J4 exit from sigtimedwait(), err=%d, signo=%d code=%d value=%d\n",
- err, info.si_signo, info.si_code, info.si_value.sival_int);
-
- return 0;
-}
-
-void fine(KEY_EVT *e)
-{
- sys_end();
-}
-
-
-int main(int argc, char **argv)
-{
- int err;
- sigset_t mask;
- pthread_t j1, j2, j3, j4;
- union sigval value;
-
- KEY_EVT emerg;
- //keyb_set_map(itaMap);
- emerg.ascii = 'x';
- emerg.scan = KEY_X;
- emerg.flag = ALTL_BIT;
- keyb_hook(emerg,fine);
-
-
- /* main blocks signals for all the tasks */
- sigfillset(&mask);
- pthread_sigmask(SIG_BLOCK, &mask, NULL);
-
- cprintf("main: creating J1\n");
- err = pthread_create(&j1, NULL, J1, NULL);
- if (err) cprintf("Error creating J1\n");
-
- cprintf("main: creating J2\n");
- err = pthread_create(&j2, NULL, J2, NULL);
- if (err) cprintf("Error creating J2\n");
-
- cprintf("main: creating J3\n");
- err = pthread_create(&j3, NULL, J3, NULL);
- if (err) cprintf("Error creating J3\n");
-
- cprintf("main: creating J4\n");
- err = pthread_create(&j4, NULL, J4, NULL);
- if (err) cprintf("Error creating J4\n");
-
- cprintf("main: waiting 0.2 sec\n");
- while (sys_gettime(NULL) < 200000);
-
- cprintf("main: kill(31), then wait until t=0.4 sec \n");
- kill(0, 31);
-
- while (sys_gettime(NULL) < 400000);
- cprintf("main: sigqueue(30), then wait until t=0.8 sec \n");
- value.sival_int = 300;
- sigqueue(0, 30, value);
-
- while (sys_gettime(NULL) < 800000);
- cprintf("main: kill(J4)\n");
- pthread_cancel(j4);
-
- cprintf("main: ending...\n");
-
- return 0;
-}
Index: pj/pse51/ptest3
===================================================================
--- pj/pse51/ptest3 (revision 1344)
+++ pj/pse51/ptest3 (nonexistent)
@@ -1,423 +0,0 @@
-ELF"4Àg4 ( €""(D(D ¨D(T#(T# Pî 덶°­üORäe‹Ká€uU¿€ Ç–eÆG1GeÆGGeÆG2GeÆG¸@é"fe£HT#Áèfe£NT#(\#¿€ Ç’eÆG0GeÆGf¸0ŽØŽÀŽÐŽàŽè¼@‡#ǽ%@g#ǽ%@‡#£4\#‰8\#(\#êµ"8.\#üèNÕê U‰å‹Eê ‰öU‰åSìüƅÿÿÿxƅÿÿÿ-ƅÿÿÿht"ƒì‹…ÿÿÿf‰$ÆD$-èÅÇE´"ÇE°]¨E¬‰$è9nƒÄ jSjè$YƒÄ jSjèYÇEˆÇEŒÇE+DžhÿÿÿDžlÿÿÿDžpÿÿÿšDžHÿÿÿDžPÿÿÿ DžTÿÿÿ„"…(ÿÿÿ‰…XÿÿÿƒÄ Dž(ÿÿÿDž,ÿÿÿDž8ÿÿÿDž<ÿÿÿDž@ÿÿÿDž0ÿÿÿDž4ÿÿÿ
-ÇEèÇEìeÍÇEðÇEôÇEØÇEÜÂë ÇEàÇEäÇEÈÇEÌ£áÇEÐÇEÔÇEÄÇEÀÇE¼ÇE¸…ÿÿÿPEˆPjèWqƒÄƒøÿuƒì h`1#èVçƒÄƒì…ÿÿÿP…hÿÿÿPjè'qƒÄƒøÿuƒì h€1#è&çƒÄƒì… ÿÿÿP…HÿÿÿPjè÷pƒÄƒøÿuƒì h 1#èöæƒÄjEèPjÿµÿÿÿè€uƒÄƒøÿuƒì hÜ/#èËæƒÄjEØPjÿµÿÿÿèUuƒÄƒøÿuƒì hù/#è æƒÄjEÈPjÿµ ÿÿÿè*uƒÄƒøÿuƒì h0#èuæƒÄƒì h30#èeæƒÄ‰öƒì jè2=ƒÄ=³vìƒì hM0#è?æEØPE¸PjÿµÿÿÿèÊtƒÄ ƒøÿuƒì hÀ1#èæƒÄƒì‹MäºÓMb‰È÷êÁú‰ÈÁø)ÂRÿuàhà1#èëåƒÄƒì jèº<ƒÄ=–˜vìƒì hf0#èÇåEèPE¸PjÿµÿÿÿèRtƒÄ ƒøÿuƒì h 2#èåƒÄƒì‹MôºÓMb‰È÷êÁú‰ÈÁø)ÂRÿuðh@2#èsåƒÄƒì jèB<ƒÄ=ÿ·vìƒì h0#èOåÇEèÇEìÇEð -ÇEôjEèPjÿµÿÿÿèÀsƒÄ ƒøÿuƒì h‘0#è åƒÄƒì jèÚ;ƒÄ=ŸÕvìƒì h®0#èç七Ä‹]üÉÉöU‰åSƒì‹E‹] ƒøt
-ƒøt -ëvÿ<\#ëÿ@\#ƒì jè€;ƒÄPÿ5@\#ÿ5<\#ÿs ÿs¸Ð/#ƒ{t¸Ö/#Pÿ3hÀ0#èqäƒÄ ‹]üÉÐU‰åƒìèé:ÉÍvU‰åSƒì‹]jè#;ƒÄ PSh 1#è8äƒÄ‹]üÉÃU‰åƒìj ÿujh'èMè‰è‡¬è¶²è1™ƒÄ jjjèÿLèîv¸èƒÄÉÃU‰åWVSƒìX‹]}¨¾D\#ü¹ó¥E¸‰E¨fÇE¸ÇE¼ÇEÀfÇEÄÇEÐÇEÔÇEÜÇEà‰]ÈÇEØÇEÌjè8L‰EÐÇEÜÇEàƒMÌ
-è֜E¨‰$ècƒÄ…Àyƒì h€2#è»ãƒÄƒì SèoE¸ƒÄeô[^_]ÍvU‰åƒìŠU€=T]#„¶€ú*t€úªt
-€ú6t€ú¶uÆT]#¸é›„Òy,ÆT]#€ú¸uÆ`]#ÆV]#ëՀúuÐÆ`]#ëljöÆT]#€ú8u€ -`]#ÆV]#멀úu € -`]#뛉ö€ú5uf¾õ‡#·Àé)v€ú…•f¾܇#·Àé -v€úàuÆT]#éTÿÿÿv€ú*t€ú6u2ÆU]#€ú*u€ -`]#é/ÿÿÿ‰ö€ú6…$ÿÿÿ€ -`]# éÿÿÿv€úªt€ú¶u"ÆU]#€úªt €ú¶…öþÿÿÆ`]#éêþÿÿ€úFu€=Y]#•Y]#ë.v€ú:u€=W]#•W]#ëv€úEu;€=X]#•X]#ƒì¶Y]#P¶W]#P¶X]#Pèõ¸ƒÄé€úu€ -`]#éhþÿÿv€ú8u€ -`]#éTþÿÿv€út€ú¸uÆ`]#é;þÿÿ‰ö¸„҈рúRt2€úOt-€úSt(€úPt#€úQt€úKt€úLt€úMt€úGt
-€úHt€úIu€=X]#uT€=U]#uK·Â -ÿë~€=W]#t/Bð< vBâ<vBÔ<w€=U]#t¶Âf¾€À‡#·ÀëG€=U]#t¶Âf¾€`ˆ#·Àë-v€=V]#t¶Âf¾€‰#·Àëv¶Âf¾€À‡#·ÀÉÃU‰åWVSƒì,}؃ìjE×PèòƒÄ…À„¡ƒì ¶E×Pèöüÿÿ‰ÂƒÄf…Ò„†÷Âÿt  `]#ƒÈ@ë‰ö `]#ˆE؈UيE׈EÚ±»;¸‡#}8¾@‡#v݊D2:EÚuŠ2:EØuƒì Wÿ’D‡#±ƒÄC;¸‡#|ЄÉuƒìjW¿‚‰#Pèý¡ƒÄè-é<ÿÿÿU‰å‹E£P]#Šˆ‡#ŠPˆÇ#ŠPˆć#ŠPˆŇ#ŠPˆƇ#ŠPˆLJ#ŠPˆȇ#ŠPˆɇ#ŠPˆʇ#ŠP ˆˇ#ŠP
-ˆbˆ#ŠP ˆcˆ#ŠP ˆdˆ#ŠP -ˆeˆ#ŠPˆfˆ#ŠPˆgˆ#ŠPˆhˆ#ŠPˆiˆ#ŠPˆjˆ#ŠPˆkˆ#ŠPˆ̇#ŠPˆlˆ#ŠPˆ͇#ŠPˆmˆ#ŠPˆڇ#ŠPˆzˆ#ŠPˆۇ#ŠPˆ{ˆ#ŠPˆç‡#ŠPˆ‡ˆ#ŠPˆè‡#ŠPˆˆˆ#ŠP ˆé‡#ŠP!ˆ‰ˆ#ŠP"ˆõ‡#ŠP#ˆ•ˆ#ŠP$ˆó‡#ŠP%ˆ“ˆ#ŠP&ˆô‡#ŠP'ˆ”ˆ#ŠP(ˆë‡#ŠP)ˆ‹ˆ#ŠP*ˆù‡#ŠP+ˆ™ˆ#ŠP,ˆ·#ŠP-ˆnˆ#ŠP.ˆχ#ŠÖˆoˆ#ŠP0ˆÁ‡#ŠP1ˆaˆ#ŠP2ˆ܇#ŠP3ˆ|ˆ#ŠP4ˆĈ#ŠP5ˆ¯ˆ#ŠP6ˆ°ˆ#ŠP7ˆ±ˆ#ŠP8ˆ«ˆ#ŠP9ˆ¬ˆ#ŠP:ˆ­ˆ#ŠP;ˆ§ˆ#ŠP<ˆ¨ˆ#ŠP=ˆ©ˆ#ŠP>ˆ²ˆ#ŠP?ˆ³ˆ#ŠP@ˆˆ#ŠPAˆ÷‡#ŠPBˆõ‡#ŠPCˆ
-ˆ#ŠPDˆ®ˆ#ŠPEˆ—ˆ#ŠPFˆªˆ#ŠPGˆއ#ŠPHˆ~ˆ#ŠPIˆð‡#ŠPJˆˆ#ŠPKˆî‡#ŠPLˆŽˆ#ŠPMˆà‡#ŠPNˆ€ˆ#ŠPOˆ҇#ŠPPˆrˆ#ŠPQˆá‡#ŠPRˆˆ#ŠPSˆâ‡#ŠPTˆ‚ˆ#ŠPUˆã‡#ŠPVˆƒˆ#ŠPWˆׇ#ŠPXˆwˆ#ŠPYˆä‡#ŠPZˆ„ˆ#ŠP[ˆå‡#ŠPRˆ…ˆ#ŠP]ˆæ‡#ŠP^ˆ†ˆ#ŠP_ˆò‡#ŠP`ˆ’ˆ#ŠPaˆñ‡#ŠPbˆ‘ˆ#ŠPcˆ؇#ŠPdˆxˆ#ŠPeˆه#ŠPfˆyˆ#ŠPgˆЇ#ŠPhˆpˆ#ŠPiˆӇ#ŠPjˆsˆ#ŠPkˆ߇#ŠPlˆˆ#ŠPmˆԇ#ŠPnˆtˆ#ŠPoˆև#ŠPpˆvˆ#ŠPqˆï‡#ŠPrˆˆ#ŠPsˆч#ŠPtˆqˆ#ŠPuˆí‡#ŠPvˆˆ#ŠPwˆՇ#ŠPxˆuˆ#ŠPyˆì‡#ŠPzˆŒˆ#ŠP{ˆ‰#ŠP|ˆ‰#ŠP}ˆ'‰#Š@~¢(‰#]ÍvU‰åWVSƒì\‹]}ؾh]#ü¹󥿸ƒ=\]#…Qº¾À‡#¹`ˆ#‰ö·ÂÆ0ÆBfúví…Ûu]؃{ÿuÇCP\#ƒì ÿsèûÿÿÇ$jjjh¹2#èϔf£‚‰#ƒÄ fƒøÿu ¸þÿÿÿéÞ‰öjjjh¹2#è0˜f£„‰#ƒÄfƒøÿuƒì ¿‚‰#P蕛¸ýÿÿÿ頍vǸ‡#ƒ{ÿuÇCŒ"ƒ{tIÆE™cÆEš.ÆE˜ƒìÿsƒì‹E˜f‰$ÆD$.èÅÆE˜ƒÄÿsƒì‹E˜f‰$ŠEšˆD$襃ă;ÿuQfÇE¨ÇE¬ÇE°fÇE´ÇE¸ÇEÐÇEÈÐÇEÄ ÇEÀ¨aÇE¼
-ÇE̍E¨ë‹ƒì jjPh” "hÂ2#èÿ‰ÃƒÄ ‰ˆ‰#ƒøÿu'ƒì ¿‚‰#P蓚¿„‰#‰$脚‰Ø钐ƒ=d]#uWƒì ÿ5ˆ‰#艉ǃąÿt4ƒì ¿‚‰#PèLš¿„‰#‰$è=šƒÄÿ5ˆ‰#èg5¸üÿÿÿë=Çd]#ëèƒì¶Y]#P¶W]#P¶X]#PèûÇ\]#‰øƒÄeô[^_]ÃU‰åƒì¶EPEèP¿„‰#Pè0œƒÄ„Àt÷Eè@u¶Eéë‰ö¸ÉÐU‰åƒì ¶E Pÿu¿„‰#Pèõ›·ÀƒÄÉÐU‰åSƒ=¸‡#0‹ -¸‡#Í»@‡#‹Ef‰ŠE
-ˆD‹E ‰‚D‡#A‰ -¸‡#‹$ÉÉöU‰åƒìèÉÍvU‰åƒìè±ÉÍvU‰åƒì¸ÿÿÿÿƒ=\]#t9蓃ì ÿ5ˆ‰#è-4¿‚‰#‰$è昿„‰#‰$èט¸ƒÄÉÐU‰åƒìjèoÔÇ$è+ÔÇ$¨2#èóÓè²-ƒÄÉÐU‰åWVSƒìŠEˆEó¿1¾d»`‰ö¹v‰òì©t"‰ÈA=þÿÿvì¸ÿÿÿÿ…Àu‰ÚŠEóî¸ë‰ö¸ë搸ÿÿÿÿÇEì¹d…Àt¸ÿÿÿÿët¸ë‰Êì©uî‹EìÿEì=þÿÿvé¸ÿÿÿÿ…Àu‰Úì¶Àë¸ÿÿÿÿƒøÿu
-¸þÿÿÿë3v=úu ¸ë"‰ö=þt ¸ýÿÿÿë‰ö‰øO…À9ÿÿÿ¸üÿÿÿƒÄ[^_]ÃU‰åVSƒìŠEˆE÷³Ô¾¹d‰ö‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë -¸ë搸ÿÿÿÿ…Àt¸ÿÿÿÿëL¸ë&»¹d‰ö‰Êì©tâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àuº`ŠE÷î¸ëv¸ÿÿÿÿ…Àt¸ÿÿÿÿëj¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àuºdì© tº`ì¶Ðëvºÿÿÿÿ‰Ð…Òx¸úú”ÀDþƒÄ[^]ÃU‰åWVSƒì »¾`‰ØK…À~^ƒì hÿè¼ýÿÿ‰ÂƒÄ…Òu{¿¹d‰Êì©u‰øG=þÿÿvì¸ÿÿÿÿ…Àu‰òì¶Ðëv¸ëꐺÿÿÿÿúªu›¸üÿÿÿúª…ƃì hõèMýÿÿ‰ÂƒÄ…Òt(¸ûÿÿÿ馉ö¸ýÿÿÿ隉ö¸ë.¸ëZ³`¾¹d‰Êì©tډðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî³e¾¹dv‰Êì©t®‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØîƒì hôèªüÿÿ‰ÂƒÄ¸…Ò•ÀHƒàƒèeô[^_]ÃU‰åWVSƒì ¾»d¹`‰Úì©t -‰Êì‰ðF=þÿvé³­¾¹d‰Êì©„‚‰ðF=þÿÿvè¸ÿÿÿÿ…ÀuºdˆØî¾»d¹`‰Úì©t -‰Êì‰ðF=þÿv鳪¾¹d‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ë搸놐¸ÿÿÿÿ…Àt¸÷ÿÿÿéݐ¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àu º`ì¶Àë¸ÿÿÿÿƒøUt¸ÿÿÿÿ錸ë&³«¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸öÿÿÿé9¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àu º`ì¶Àë¸ÿÿÿÿ…Àt¸þÿÿÿé鐸ë&³®¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…À…<èzüÿÿ…À…Žƒì hóèIúÿÿƒÄ…Àt
-¸ùÿÿÿépƒì jè.úÿÿƒÄ…Àt¸øÿÿÿéU¸ë.Æt]#³©¾¹d‰Êì©tډðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸ôÿÿÿéù¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àu º`ì¶Àë¸ÿÿÿÿ…Àt¸óÿÿÿ驐¸ë&³¨¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸õÿÿÿéU¸ë&³Ó¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸ðÿÿÿ鐸ë&³Z¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî¸ë¸ÿÿÿÿ…Àt¸ïÿÿÿ魐Æt]#ëBv¸ë^¹þÿ¾d»`‰òì¶ø÷Çt‰Úì¶À÷Ç tƒøZt»IƒùÿuÙ³§¾¹d‰Êì©tª‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àté»þÿÿ‰ö¸ë:€=t]#„þÆt]#³¨¾¹d‰Êì©tΉðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸îÿÿÿ鱐¸ëvƒì hóèWøÿÿ‰ÃÇ$dèIøÿÿÃÇ$èè;øÿÿÃÇ$è-øÿÿÃÇ$çèøÿÿþ§ƒÄ¿¹dv‰Êì©t’‰øG=þÿÿvì¸ÿÿÿÿ…Àuºd‰ðî¸ë¸ÿÿÿÿ…Àt¸íÿÿÿë…ÛuÆt]#¸eô[^_]ÃU‰åVS¡ˆ]#…Àt¡ˆ]#H£ˆ]#¸é²¸ë6ƒ=€]#uKŠ„]#¾¹dv‰Êì©t҉ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØîÿ€]#뤍v¸ë:ƒ=€]#uGÇ€]#³ô¾¹d‰Êì©tΉðF=þÿÿvì¸ÿÿÿÿ…À…Xÿÿÿº`ˆØîéKÿÿÿ‰ö¸[^]ÍvU‰åWVSƒì ¡Œ]#@£Œ]#¾õ³Ô¿¹dv‰Êì©t"‰øG=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ë搸ë.¸ÿÿÿÿ…Àu0»¹d‰Êì©tډØC=þÿÿvì¸ÿÿÿÿ…Àuº`‰ðîœúX‰Çƒì hõè5õÿÿ‰ÃƒÄ…Ût¸ûÿÿÿéù‰ö¸ë1¾§ÇEð¹dv‰Êì©tڋEðÿEð=þÿÿvé¸ÿÿÿÿ…Àu ºd‰ðî¸ë¸ë=¸ëq¸ÿÿÿÿþ`ÇEð¹d‰Êì©t΋EðÿEð=þÿÿvé¸ÿÿÿÿ…Àuºd‰ðî¾eÇEð¹dv‰Êì©tš‹EðÿEð=þÿÿvé¸ÿÿÿÿ…Àuº`‰ðîƒì hôè;ôÿÿÃĉøPÆu]#‰Øeô[^_]ÐU‰åWVSƒì ¸ÿÿÿÿ€=t]#„ºœúX‰Æƒì hõèóóÿÿƒÄ…Àt(¸ûÿÿÿé—‰ö¸ë:¸ëf¸é“‰ö³`¿¹d‰Êì©tΉøG=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî³G¿¹dv‰Êì©t¢‰øG=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØ¿¹dv‰Êì©„rÿÿÿ‰øG=þÿÿvè¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt ¸îÿÿÿ鐃ì hôèÿòÿÿƒÄ…Àt¸Ûÿÿÿ飉ö¸ë:‰ðP¡Œ]#@£Œ]#¾ô³Ô¿¹d‰Êì©tΉøG=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë -¸ë.¸ÿÿÿÿ…Àu0»¹d‰Êì©tډØC=þÿÿvì¸ÿÿÿÿ…Àuº`‰ðîÆu]#¸eô[^_]ÍvU‰åƒìǤŠ#Ç Š#ƒ=|]#t!úè‹õÿÿ£x]#Ç|]#û…Àtúèôÿÿû¡x]#…Àuƒìÿuhx$"jèQ¸ƒÄÉÍvU‰åVS¡ˆ]#@£ˆ]#³õ¾¹d‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî¸ë -¸ë搸ÿÿÿÿ[^]ÍvU‰åVS¡ˆ]#@£ˆ]#³ô¾¹d‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî¸ë -¸ë搸ÿÿÿÿ[^]ÍvU‰åƒì‹MœúX‰Â¡ Š#@%ÿ£ Š#Š€ ‰#ˆ‰ÐP€9úu è(úÿÿë‰ö¸ÉÐU‰åƒìƒ=”]#t(Ç‹#Ç‹#Ç‹#Ç”]#‹E£]#ƒ=|]#t!úèôÿÿ£x]#Ç|]#û…Àtúèòÿÿû¡x]#…Àu.¸ìÿÿÿ€=t]#t ƒìjÿh´$"j èOÆu]#¸ƒÄÉÉöU‰åS‹MœúX‰Ã¡‹#@ƒà?£‹#ºÀŠ#ŠˆA¡‹#@ƒà?£‹#Šˆ¡‹#@ƒà?£‹#ŠˆA‰ØP¸‹$ÉÉöU‰åƒì€=u]#tèäùÿÿƒì j èŽOÆu]#¸ƒÄÉÐU‰åƒìƒ=|]#t!úè óÿÿ£x]#Ç|]#û…Àtúè™ñÿÿû¡x]#…Àt¸ë¶t]#ÉÍvU‰åVSŠEŠU€} t ƒ -„]#ë ‰öƒ%„]#„Àt ƒ -„]#ëƒ%„]#„Òtƒ -„]#ë¸ë6¸ëbƒ%„]#³õ¾¹d‰Êì©t҉ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî³í¾¹dv‰Êì©t¦‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØîÿ€]#[^]ÐU‰åSƒìœúX‰Ã€=u]#tè–øÿÿè‘ðÿÿƒì hóèhîÿÿƒÄ…Àuƒì jèWîÿÿƒÄ…Àu‰ØP‹]üÉÍvU‰åº`ì¶ÈœúX‰Â¡ Š#;¤Š#t¡¤Š#ˆˆ ‰#@%ÿ£¤Š#‰ÐP]ÉöU‰åƒìº`ì¶Ðƒ=‹#u €úúu¡Œ]#H£Œ]#郍v÷ÂÀuxÿ‹#œúX‰Á¡‹#;‹#t¡‹#ˆÀŠ#@ƒà?£‹#ë"‰ö¡‹#+‹#ƒÀAƒà?£‹#Ç‹#‰ÈPƒ=‹#uÇ‹#ƒì ÿ5]#èƒÄÉÉöU‰åSƒì}™w‹UÑâU‰ÐÁà)Ðfƒ<ÅÈâ#uèùÝNj¸ÿÿÿÿ鏐ƒ= á#tcœúX‰Ã‹UÑâU‰ÐÁà)ЍÅ0ö€¡â# t ÿ€¤â#ë-v‹EÑàE‰ÂÁâ)‹Õ¤â#ƒì‹•â#ÿuRÿP@ƒÄ‰ØPéèƒ¡…ÀtgœúX‰Ã‹UÑâU‰ÐÁà)ЍÅ0ö€¡â# t ÿ€¤â#ë2v‹EÑàE‰ÂÁâ)‹Õ¤â#ƒì‹•â#ÿuRÿP@蔃ĉØPé­úèJ²‹Ìá#R‰ÑÁá)Ñ» â#f‰DË‹UÑâU‰ÐÁà)ЍÅ0öD t ÿ€¤â#ë?vƒìU‰ÐPjÿÐ]#‹MI‰ÐÁà)ЋŤâ#ƒÄ‹•â#QRÿP@è/ƒÄ¡Ìá#@‰ÂÁâ)ƒì ¿Õ¨â#P踱èƒÄû¸‹]üÉÐU‰åWVSƒì ‹]f…Ûuè>Ünj¸ÿÿÿÿé"‰öƒ= á#„“œúX‰ÇÇEð}ð™s¾ â#‹UðÑâUð‰ÐÁà)ÐÁàf9\,uHƒÀ0öD0 t ÿ€¤â#ë6ƒìEðPjÿÐ]#‹MðI‰ÐÁà)ЋŤâ#ƒÄ‹•â#QRÿP@ƒÄÿEð}ð™~“‰øPé}‰ö蓟…À„›œúX‰ÇÇEð}ð™w¾ â#‹Eð@‰ÂÁâ)Õf9\,uJƒÀ0öD0 t ÿ€¤â#ë8vƒìEðPjÿÐ]#‹MðI‰ÐÁà)ЋŤâ#ƒÄ‹•â#QRÿP@ƒÄÿEð}ð™~èj‰øPéԐúè"°‹Ìá#R‰ÑÁá)Ñf‰ͨâ#ÇEð}ð™w¾ â#‹Eð@‰ÂÁâ)Õf9\,uJƒÀ0öD0 t ÿ€¤â#ë8v‹MðI‰ÐÁà)ЋŤâ#ƒì‹•â#QRÿP@ƒÄEðPjÿÐ]#ƒÄÿEð}ð™~èÞ ¡Ìá#@‰ÂÁâ)ƒì ¿Õ¨â#Pèj¯èÁƒÄû¸eô[^_]ÃU‰åSƒìúè;¯‹Ìá#R‰ÑÁá)Ñf‰ͨâ#ƒìh„â#jèl–ƒÄUð¡ˆâ#;Øá#|¡„â#+Ôá#‰Eð¡ˆâ#+Øá#ë!‰ö¡„â#+Ôá#H‰Eð¡ˆâ#+Øá#ʚ;‰B‹Mð ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ôºÓMb‰Ø÷êÁú‰ØÁø)ÂыÌá#R‰ÐÁà)Ð) Åìâ#ƒì Qè. ƒÄƒ=Üá#ÿtƒì ÿ5Üá#ÿ¨á#ÇÜá#ÿÿÿÿƒÄ‹ -Ìá#I‰ÐÁà)ЋŤâ#ƒì‹…â#QPÿRLè{ ƒÄhÌá#jÿÐ]#ÇÌá#ÿÿÿÿÇàá#ÿÿÿÿèV ¡Ìá#@‰ÂÁâ)¿ըâ#‰$èã­è:ƒÄû‹]üÉÐU‰åƒìh8+"è( ƒÄÉÍvU‰åƒìjè ƒÄÉÉöU‰åƒìƒ=œ]#u(èè
-ƒì ¡Ìá#@‰ÂÁâ)¿ըâ#Pèt­ƒÄÉÍvU‰åWVSƒìhÊ2#è]$ƒÄ» â#ëv‹Eð@‰ÐÁà)ЁLÃ0€ƒì hDâ#èÊ+‰EðƒÄƒøÿ„“@‰ÐÁà)ÐöDÃ1@u¾‹UðR‰ÃÁã)ÃÁã¾ â#¡˜]#‰3@£˜]#‹E ‰Dƒìjÿuƒ´â#Pè ¾ÆD'ƒÃ fÇD3‹Mf‹%ÿf‰D3
-f‹A f‰D3 ƒÄ‰Ø‰ñº‹]ƒ{tf‹Sf‰T‹UðR‰ÁÁá)ÁÁáY0‹U‹B -‰ƒ â#¿¤â#Ç;¾¨â#¡Ìá#@‰ÂÁâ)‹DÖ0‰3º¬â#ǍAP‹]ð‰˜ â#Ç8ÇÿÿÿÿÇ0ÿÿÿÿǁã#°Ç8Ç0ǁÁÀǁ â#Ç9ºۍƒ€ 
-Ç…ã#Bƒúvì‹Eð@‰ÐÁà)ÐÁàÀǂ¨â#ÿÿÿÿǂ¬â#ôâ#‰pã#º‹Mðɍ€ ‰ö
-Ç…pã#Bƒú~ì»ëC;Ðá#sƒì‹â#ÿuSÿPƒÄ…Àxß;Ðá#u7‹]ð[‰ÂÁâ)ÂfÇÕÈâ#ƒìhDâ#SèÚ)è¡ÕDŽ鄉ö‹Eð@‰ÐÁà)Ѝ4ʼnž¤â#ƒì‹â#ÿuÿuðSÿP,ƒÄ…ÀyWfdžÈâ#ƒìhDâ#ÿuðèz)èAÕDžë'è3Õǃ釃ì ÿuðè9èÕdž¸ÿÿÿÿƒÄëjƒE‹U‹zü…ÿtY‰ö¾ëF;5Äá#s0ƒìµ‹ƒ`â#WVÿP ƒÄ…Àxۃ싃`â#WÿuðVÿP$ƒÄ;5Äá#t‡ƒE‹M‹yü…ÿu©‹Eðeô[^_]ÉöU‰åƒìEPÿuÿu ÿuè`üÿÿƒÄÉÍvU‰åWVSƒì ‹} ƒt6‹EÑàE‰ÂÁâ)‹G‰Õ¬â#‰Æ‹UÑâU‰ÐÁà)Ѓ ÅÐâ#@ën‰öƒì ‹UÑâU‰ÐÁà)зÅÎâ#Pè@‹UÑâU‰ÑÁá)Ñ»¬â#‰ˉƋEÑàE‰ÂÁâ)ƒÄƒ<Óuƒì ÿuèìèËÓLjëtv‹EÑàE‰ÂÁâ)» â#·DÓ.ƃì ·GPjÿwVh$2"è-‰ÁƒÄ f…Éu?ƒì‹UÑâU‰ÐÁà)зDÃ.PVèƒÄÿuèvèUÓlj¸ÿÿÿÿƒÄëN‹EÑàE‰ÂÁâ)Âf‰ Õ¨â#ƒìU‰ÐPjÿÐ]#ƒÄöGu ÿÀá#ëvöGuÿ€â#¸eô[^_]ÍvU‰åWVSƒì ‹M‹U ‹]œúX‰ÇEPSRQè­úÿÿ‰ÆƒÄƒþÿ„ɍv‰ÐÁà)ЋŤâ#‹…â#ƒx(„èà…À‰€»;Äá#svƒì‹`â#VSÿP(ƒÄC;Äá#råv‰ÃÁã)ÃÁ㋃¤â#ƒì‹…â#VPÿR0fǃÈâ#ƒÄhDâ#Vè\&ƒÄè ÒLJ‰øP¸ÿÿÿÿë#vƒìSVèŽýÿÿƒÄº…À”ÂJ ։øP‰ðeô[^_]ÃU‰åVS‹u»;Äá#svƒì‹`â#VSÿP(ƒÄC;Äá#råv‰ÃÁã)ÃÁ㋃¤â#ƒì‹…â#VPÿR0fǃÈâ#ƒÄhDâ#Vè¬%ƒÄeø[^]ÉöU‰åVS‹]è ƒì ¡Ìá#@‰ÂÁâ)¾ â#SÿTÖú‰$èn¡Ìá#@‰ÂÁâ)¿DÖ‰$èn¦ƒÄeø[^]ÃU‰åWVSƒì‹]‹}úû™w! [‰ÈÁà)ÈÁຠâ#öD0tfƒ|(u û¸ÿÿÿÿéDžÿy$[‰ÁÁá)Á Í°¸¤â#‹<Çë ‰öƒÿv¿[‰ÁÁá)Á Í°‰M乨â#‰Mì‹Uä‹
-‰Â)úƒÂ‰Ð¾º÷ö‰Eð‹uä;tMۍƒ€4‹MðىÈÁà)ȍ Å°‰ö2‹…ã#‹] ‰ƒÃ‰] B»‰Ðº÷ó‹]ì;uÔû‰øƒÄ[^_]ÐU‰åSƒì‹]‹ -Ìá#I‰ÐÁà)ЍÅö‚Ðâ#tɍ€È‚Xã#…ã#¡„â#;Ôá#|;Ôá#uA¡ˆâ#;Øá#}4ƒìSÿ5Ìá#ÿ5Øá#ÿ5Ôá#ÿ5ˆâ#ÿ5„â#hà2#è8¶ƒÄ è@ ‹]üÉÍvU‰åWVS‹ -Ìá#I‰ÐÁà)ЍÅöƒÐâ#„›ɍ€ȍ‹°¨â#º¤â#‹t‚`‹”À¸¬â#94s‰4‹Ìá#[‰ÁÁá)ÁÁፁÀ° â#¿¤â#B‰8±°‹†¨â#@º‰Ñº÷ñ‰–¨â#ۍƒ€ØÐÇD‡`ƒ<>wÿ>[^_]ÉöU‰åWVS‹M‹] ‹u‹}úù™w!I‰ÐÁà)ÐÁຠâ#öD0tfƒ|(uû¸ÿÿÿÿëy…ÛtI‰ÂÁâ)‹Õ`ã#‰…ötI‰ÂÁâ)‹Õ\ã#‰…ÿtI‰ÂÁâ)‹Õdã#‰ƒ}t(ɍ€ȍ I‰ÊÁâ)ÊÕXã#‹…ã#‹U‰û¸[^_]ÉöU‰å‹Múù™w!I‰ÐÁà)ÐÁຠâ#öD0tfƒ|(uû¸ÿÿÿÿë7I‰ÂÁâ)ÂÁ⍂Àǀ â#ǀ¤â#ǂ\ã#û¸]ÍvU‰åWVSƒì ƒ=Ìá#ÿt¡Ìá#@‰ÂÁâ)ÂöÕÐâ#…3ƒ=Ìá#ÿ„ƒìh„â#j證ƒÄU衈â#;Øá#|¡„â#+Ôá#‰E衈â#+Øá#ë"v¡„â#+Ôá#H‰E衈â#+Øá#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыÌá#R‰ÐÁà)Ð) Åìâ#ƒì QènüÿÿƒÄƒ=Üá#ÿtƒì ÿ5Üá#ÿ¨á#ÇÜá#ÿÿÿÿƒÄ‹ -Ìá#I‰ÐÁà)Ћ<Ťâ#ƒì‹½â#QWÿP<ƒÄ¿4½ƒì ‹†â#WÿP$‰ÃƒÄƒûÿt%ƒì[‰ÐÁà)ЋŤâ#‹…â#SPÿR4ƒÄ븅Àx»ƒûÿuG뫍v‹5Ìá#‰àá#‰Ìá#[‰ÐÁà)Ð;Åðâ#t0» â#‰ö¡Ìá#@‰ÂÁâ)‹TÓP‰Ìá# R‰ÈÁà)È;TÃPu×;5Ìá#tƒìhÌá#jÿÐ]#ƒÄ‹ -Ìá#I‰ÐÁà)ÐÁྠâ#fÇD(‹¸¤â#ƒì‹½â#‹àá#¸;Ìá#•ÀPQWÿS8¡Ìá#@‰ÂÁâ)ƒÄöDÖ1„Ü¡àá#;Ìá#…Ë¡„â#‰EèMè¡Ìá#@‰ÂÁâ)»¬â#‹DÓ@º@B‰Ö™÷þ’’’Áâ‰Ö5ˆâ#‰q¿¡/¸D‰ø÷î‰×Áÿ‰ð™‰þ)Ö¡Ìá#@‰ÂÁâ)‹\Ó@ºƒÞC‰Ø÷êÁú‰ØÁø)2Eè‹AºÊš;‰Ó™÷û‰QjhP@"ÿuìÿuèÿ¤á#‰ÃƒÄƒûÿuƒìÿ5Ìá#jèû7ƒÄ‰Üá#¡„â#£Ôá#¡ˆâ#£Øá#eô[^_]ÉöU‰åWVSƒìÇ0¢%úÿuèD»ƒÄ¿¤â#¾ â#‰ö[‰ÂÁâ)ÂÁâÇ:ÿÿÿÿǂ¬â#ÆDB fÇD0fÇD0
-fÇD0 fÇD0B0Ç0Ç8ǀ¨â#ǀ¬â#‚äâ#Ç@Çǂìâ#BP‰0Ç8ÇD`DŽÐ‚xå#Ç@Ǎ‚àÇ0ÿÿÿÿÇ8ÿÿÿÿ‚°Ç8ǀ¨â#ǀ¬â#ÂÀÇ2Ç:ºۍƒ€ v
-ÇD‡`Bƒúvï[‰ÐÁà)ЍÅÀǀ¨â#ÿÿÿÿǀ¬â#ºۍƒ€ 
-DŽ†ÐBƒú~ìCû™Žƒþÿÿ»¹¨â#[‰ÂÁâ)C‰DÑP‰Ãû˜~åÇ Ÿ%ÿÿÿÿ»™¹¬â#[‰ÂÁâ)Cÿ‰DÑP‰Ã…ÛéÇüâ#ÿÿÿÿÇDâ#ÇÈá#ÇÀá#Ç€â#Çàá#ÿÿÿÿÇÌá#ÿÿÿÿÇÜá#ÿÿÿÿÇØá#ÇÔá#ÇÐá#ÇÄá#Ç á#èÚè}è42ƒì ÿuèqÉÿÿ£Hâ#ƒÄ=×Övƒì h@3#èÇ$è »ƒÄ¸ƒ=Hâ#”À‰Eè]è¡Hâ#‰CÇ0¢%躂ƒì S豌Ç$ä@"èÇÇ$$+"聎Ç$<@"蕎ƒÄjjèEÿØ]#ƒÄh„â#jèLƒèOùÿÿèê›f£@â#¡Ìá#@‰ÂÁâ)¾ â#¿DÖ‰$èϛÇ$è7ŽÿÔ]#Ç0¢%ƒÄ»ƒ=Èá#ŸÃSjèɃă=€â#teè„ Çœ]#ƒìh„â#j軂è^›f£@â#è³øÿÿÇ$<@"èǍ¡Ìá#@‰ÂÁâ)¿DÖ‰$è7›Ç$蟍ƒÄÇ0¢%ƒìSjèCèÇ0¢%ƒÄjjè(ƒÄúƒ=Èá#t"ƒìÿ5Èá#hk3#èP¬Ç$ÿÿÿÿèX¹ƒÄƒì jèK¹ƒÄeô[^_]ÃU‰åSƒìƒ=œ]#…•èW‰…Àuú腚‹Ìá#R‰ÑÁá)Ñf‰ͨâ#‹E£Èá#Çœ]#ƒ=Ìá#ÿ„ƒìh„â#j藁ƒÄUð¡ˆâ#;Øá#|¡„â#+Ôá#‰Eð¡ˆâ#+Øá#ë ¡„â#+Ôá#H‰Eð¡ˆâ#+Øá#ʚ;‰B‹Mð ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ôºÓMb‰Ø÷êÁú‰ØÁø)ÂыÌá#R‰ÐÁà)Ð) Åìâ#ƒì QèZôÿÿƒÄƒ=Üá#ÿtƒì ÿ5Üá#ÿ¨á#ÇÜá#ÿÿÿÿƒÄ‹ -Ìá#I‰ÐÁà)ЋŤâ#ƒì‹…â#QPÿR<Çàá#ÿÿÿÿÇÌá#ÿÿÿÿƒÄèü‡…Àtƒì ¿@â#Pè,™ƒÄëvƒì ¿@â#Pè™èkƒÄû‹]üÉÉöU‰åSƒìÇEøÿÿÿÿ»ºâ#¡â#ƒx(t1ƒì‹šUøRSÿP(ƒÄ…Àu¸ÿÿÿÿëCƒûwºâ#‹šƒx(uи‹]üÉÉöU‰åƒìè è+ÉÉöU‰åƒìÇÜá#ÿÿÿÿè§êÿÿÉÐU‰åSƒìœúX‰Ãƒ=0¢%tƒ=€â#t‰ØPëƒì jè–ýÿÿƒÄ‰ØP‹]üÉÉöU‰åƒìÿuèzýÿÿƒÄÉÐU‰åSƒì‹UœúX‰ÃƒìRjèZ‰ÂƒÄ‰ØP‰Ð‹]üÉÉöU‰å¸Èá#ƒ=Ìá#ÿt‹Ìá#R‰ÐÁà)ЍÅã#]ÉöU‰åSƒìœúX‰Ãƒ=0¢%tƒ=€â#t‰ØPëƒì ÿuèíüÿÿƒÄ‰ØP‹]üÉÐU‰å]ÍvU‰åWVSƒì ÇEðÇE컍[ …ƒ¹(‹#t[¿ ‹#ƒ<9tP‹Ìá#ҍ‚€Ð؍…о â#ƒ<0t+ûƒì ÿ40ÿ9ƒÄú‹Ìá#ҍ‚€Ð؋´†Ð uìCƒû~Œƒ}ìt -ÿEðƒ}ðŽmÿÿÿeô[^_]ÐU‰åVSº¾ ‹#»$‹#¹(‹#vRÁàÇ0B‰Çƒú~ãÇ‘#ÿÿÿÿÇ ‘#Ç(‹#Ç ‹#Ç$‹#ÿÿÿÿ[^]ÐU‰åS‹Múƒ= ‘#ÿu û¸ ënv¡ ‘#@Ç•(‹#‰¡ ‘#@‹…$‹#£ ‘#‹@‹U ‰… ‹#º» â#‰öҍ‚€ÐDŽƒÐBú™~ßû¸‹$ÉÃU‰åú¡Ìá#À’ÂU‹•pã#û]ÍvU‰å‹Múƒùw -Iƒ<…(‹#u û¸ë%v¡Ìá#À’ÂʋE ‰•pã#û¸]ÃU‰åS‹]œúX‰Áƒûw -[ƒ<…(‹#u‰ÈP¸ë.v[Áà‹ ‘#‰$‹#ǀ(‹#‰ ‘#‰ÈP¸‹$ÉÃU‰åWVSƒì ¡Ìá#‰Eð‰ÂÑâ‰ÐÁà)ЍÅ¿ â#öD0 tm‹E‰‚lã#‹UðÑâUð‰ÐÁà)ЁLÇ0@‹UðÑâUð‰ÐÁà)ЍÅÀº¨â#ƒ<ÿt,‹4v‰ÃÁã)ÃÁ㋃¤â#ƒì‹…â#VPÿRD‰tPƒÄ¹» â#;MðtI‰ÐÁà)ЋUð9TÃP„ˆAù™~ۋUðÑâUð‰ÐÁà)Ѓ<Åôâ#t[»¤â#ûƒì ‹UðÑâUð‰ÐÁà)ЋDÃPÿpÿƒÄú‹EðÑàEð‰ÂÁâ)ÕP‹‹@‰‹UðÑâUð‰ÐÁà)Ѓ|ÃPu«èJüÿÿƒì ‹EðÑàEð‰ÂÁâ)» â#¿DÓPèÔyƒÄEðPjÿÐ]#‹Eð@‰ÂÁâ)ՃÄöD0@u%ƒì·D.P‹Eð@‰ÂÁâ)Âÿ4Õ¬â#èÁ ƒÄ»;Äá#sƒì‹`â#ÿuðSÿP(ƒÄC;Äá#rã‹MðI‰ÐÁà)ЋŤâ#ƒì‹…â#QPÿRPÇÌá#ÿÿÿÿÇàá#ÿÿÿÿ‹Eð@‰ÂÁâ)ƒÄöÕÐâ#u&ÿ -Àá#ƒ=Àá#uBèZúÿÿë;ƒìRjèY+ƒÄëg‹Eð@‰ÂÁâ)ÂöÕÐâ#uÿ -€â#ƒ=€â#uèúÿÿƒìh„â#jèÒyƒÄƒ=Üá#ÿtƒì ÿ5Üá#ÿ¨á#ÇÜá#ÿÿÿÿƒÄè­ïÿÿeô[^_]ÐU‰åVS‹uúv‰ÐÁà)ÐÁຠâ#öD0ufƒ|(uèѼNJû¸ÿÿÿÿ麍v‰ÐÁà)ÐöÅÑâ#tû雉ö;5Ìá#uJv‰ÐÁà)л â#‹DÃ0©t0©u)ƒì jè¥üÿÿ¡Ìá#@‰ÂÁâ)¿DÓ‰$襑ƒÄ»ëvC; ]#}ƒìÝÿ°D‘#Vÿ@‘#ƒÄ…Àtٍv‰ÐÁà)Ё ÅÐâ#û¸eø[^]ÍvU‰åWVSƒì ‹Ef‰Eòf…Àuèâ»ÇŒ¸ÿÿÿÿé‰öú¡àá#@‰ÂÁâ)Âf‹Mòf; ÕÌâ#”Eñ¾¿ â#‰öv‰ÐÁà)ÐÁà‹T0÷Â…ˆƒÀ fƒ|8t}÷Âuuf‹Mòf9L8 uj;5Ìá#u!÷Ât÷Âuƒì jè{ûÿÿƒÄëC‰ö»ëC; ]#}ƒìÝÿ°D‘#Vÿ@‘#ƒÄ…Àtٍv‰ÐÁà)ЁLÇ0Fþ™ŽNÿÿÿ€}ñt(ƒì ¡àá#@‰ÂÁâ)¿ըâ#P萃Äëvû¸eô[^_]ÉöU‰åWVSƒì ¾¿ â#v‰ÐÁà)ÐÁàfƒ|(tL÷D0
-uB»ë‰öC; ]#}ƒìÝÿ°D‘#Vÿ@‘#ƒÄ…Àtٍv‰ÐÁà)ЁLÇ0Fþ™~–eô[^_]ÉöU‰åSƒì¡Ìá#@‰ÂÁâ)» â#‹DÓ0©t7©u0©t)ƒì jè"úÿÿ¡Ìá#@‰ÂÁâ)¿DÓ‰$è"ƒÄ‹]üÉÉöU‰åS‹M‹] ¡ ]#ʼnŠ@‘#‰šD‘#@£ ]#‹$ÉÍvU‰åƒìúÿuè½ùÿÿ¡Ìá#@‰ÂÁâ)¿ըâ#‰$躎ƒÄÉÐU‰åVS¶uœúX‰Ãƒ=t”#ÿuèH¹Ç‚‰ØP¸ÿÿÿÿéۋ -t”#‰ÊÁâ‹‚ì‘#£t”#‹E‰‚à‘#‹E ‰‚ä‘#‰ðƒà‰‚è‘#‰ðƒàƒøtOƒø
-ƒøt -ësvƒøtSëi‰ÈÁàǀì‘#ÿÿÿÿƒ=`”#ÿu‰ -`”#ë¡d”#Áà‰ˆì‘#‰ -d”#ëH‰ö‰ÊÁâ¡h”#‰‚ì‘#‰ -h”#ë.‰ÊÁâ¡l”#‰‚ì‘#‰ -l”#ë‰ÊÁâ¡p”#‰‚ì‘#‰ -p”#‰ØP¸[^]ÐU‰åƒìƒ=Ðá#uƒì h 3#èŒÇ$謃ġÐá#P‰Ðá#ÉÐU‰åƒìƒ=Äá#uƒì h¿3#èPÇ$èÌ«ƒÄ¡Äá#P‰Äá#ÉÐU‰åWVS‹E‹u ‹}»‹HÇöt<€9t5‹ ‰‡€: t€:t‰öC€< t€< uó€< uÆ Cÿ€< uÌÿ[^_]ÐU‰åWVSì¬‹EµTþÿÿ½Xþÿÿ»‹HDžTþÿÿöt<€9t5‹ ‰‡€: t€:t‰öC€< t€< uó€< uÆ Cÿ€< uÌÿƒì…XþÿÿPÿµTþÿÿè=´ÿÿƒÄeô[^_]ÉöU‰å¸¹ì‘#v‰ÂÁâ@‰
-ƒø&~òÇ\”#ÿÿÿÿÇ`”#ÿÿÿÿÇd”#ÿÿÿÿÇh”#ÿÿÿÿÇl”#ÿÿÿÿÇp”#ÿÿÿÿÇt”#]ÉöU‰åWVSƒì ‹E‹} ƒøt4ƒø ƒøtéЃøt3ƒøtB鳐‹`”#Ç`”#ÿÿÿÿë:‰ö‹h”#Çh”#ÿÿÿÿë&‰ö‹l”#Çl”#ÿÿÿÿë‰ö‹p”#Çp”#ÿÿÿÿÇ á#ƒûÿtM¾ì‘#…ÿt‰ØÁàƒ¸è‘#uƒì ‰ØÁàÿ°ä‘#ÿà‘#ƒÄ‰Ù‰ØÁà‹0‰Â¡t”#‰2‰ -t”#ƒûÿu¸Ç á#eô[^_]ÉöU‰åƒìEüPEøPEôPEðPèI‡Ç$€”#èÉӃÄjjhÿÿjh„”#h€”#èôɃÄjjhÿÿÿhh ”#h€”#èÔɃÄjjhÿÿÿþhh¼”#h€”#è´ÉƒÄ ƒ}ütƒì‹EüHPÿuøh€”#è~ȃă}ôtƒìÿuôÿuðh€”#èbȃÄÉÐU‰åƒì‹E…Àu¸ëƒìjPh€”#è ʃÄÉÍvU‰åƒìÿuÿuÿu ÿuh€”#è¼ËƒÄ ÉÍvU‰åƒì ÿuÿuÿuÿuÿu ÿuh€”#è¶ËƒÄ ÉÐU‰åƒì ÿu ÿuh€”#èjЃÄÉÐU‰åƒìÿuh€”#èQ΃ÄÉÃU‰åƒìÿuh€”#èQ҃ÄÉÃU‰åƒì jÿuh€”#èWɃÄÉÉöU‰åƒì ÿu ÿuh€”#èЃÄÉÐU‰åƒìh€”#èÎÇ$€”#è$҃ÄÉÍvU‰åWVSƒì} ‹uEðPh4#VèÖ¥‰ÃƒÄƒûuƒ}ðvÇEðƒÆë ‰öÇEð‹Eðº;¤]#~hƒìWVhà”#蜃Äj
-VèK›ƒÄ»…À•ÃœúX‰Æƒìhà”#‹Eðÿ4…¨]#h4#è]™ƒÄ…Ûuƒì h¼4#èI™ƒÄ‰ðPº‰Ðeô[^_]ÍvU‰åVSƒìu ‹]EôPh4#S襃ăøuƒ}ôvÇEôƒÃëÇEô‹Eôº;¤]#~JƒìVShà”#èB›ƒÄj
-S臚ƒÄœúX‰Ãƒìhà”#‹Eôÿ4…¨]#h4#裘ƒÄ‰ØPº‰Ðeø[^]ÉöU‰åVSƒì@‹u‹] ‹EfÇEÈÇEÌÇEÐfÇEÔÇEàÇEäÇEìÇEð‰EØÇEÜÇEè…ÛtT‹C‰E̋C‰EЃ{u
-ÇEÜ1됃eÜߋC ‰EàÇEÀƒì ÿ5à˜#è)7ƒÄ+C ‰EċC‰Eì‹C‰EðëD‰öÇEÌÇEЃMÜ ÇEàÇEÀƒì ÿ5à˜#èâ6ƒÄ‰EÄÇEìÇEðèI±‹ƒì jEÀPEÈPÿuh!4#èAÞÿÿ‰ƒÄ ƒøÿt ƒì PèòÒÿÿƒÄ豉¸ƒ>ÿ”ÀHƒàêƒÀeø[^]ÍvU‰åƒìÿ5à˜#èc6ƒÄÉÉöU‰åƒìÿ5à˜#èc6ƒÄÉÉöU‰åƒìÿ5à˜#è{5ƒÄÉÉöU‰å‹E‹U ‹M£à˜#‰ä˜#‰ -è˜#]ÐU‰åVS‹]è°‹0ƒì Sètóÿÿ‰Ãèm°‰0ƒÄ¸…Û•À@eø[^]ÃU‰åƒìúÿuÿu ÿuÿ5à˜#èé5ƒÄûÉÍvU‰åWVSƒì ‹}‹uúÿ6ÿu Wÿ5à˜#è3‰ÃƒÄ…Ûu#ƒìÿ5à˜#èx5ƒÄ+PWÿ5è˜#èffƒÄû‰Øeô[^_]ÃU‰åSƒì ‹] Sÿuè¡eƒÄÿ5à˜#è75ƒÄ+‰¸‹]üÉÉöU‰åVSƒì‹u‹] …Ûtƒ;uÇEôƒìEôPë7ƒ;uÇEðƒìEðPë!vÇEèƒì jè_þÿÿ+CUè‰BƒÄRVèT*ƒÄeø[^]ÉöU‰åWVSƒì‹u ‹}ÇEðÿ5à˜#è“4‰ÃƒÄ9Þƒþ} ¸ëG‰öƒì ÿuèµ*ƒÄ W‰Ø)ðPÿuè eƒÄ…ÀtÇEð…ÿt‰Ø+‰ƒì ÿuèÙ*‹EðƒÄeô[^_]ÍvU‰åƒì‹Eúƒ8u -ÇûÿU ëû¸ÉÃU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)ÐÁà‹xå#‰U苀|å#‰Eìƒùÿtw ‰ÆȉÂÁâ)‹Eè‰Ã;Õxå#|[‰Eäv1‰ÐÁà)ЍÅ;šxå#u ‹Eì;‚|å#|1‰Ï‰ÐÁà)Ћ Åøâ#ƒùÿt4 1‰ÐÁà)Ћ]ä;Åxå#}«ƒÿÿt‰ÐÁà)ЋU‰Åøâ#ë‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰Åüâ#‹E@‰ÐÁà)ЍÅP‰ˆ¨â#‰¸¬â#ƒÄ[^_]ÍvU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)л¤â#‰]ð‹´ÃЃùÿtCI‰ÐÁà)Ð;´ÃÐr0»¨â#‰Ï‰ÐÁà)ЋLÃPƒùÿtI‰ÐÁà)ЋUð;´ÂÐsՃÿÿt‰ÐÁà)ЋU‰Åøâ#ë
-‰ö‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰Åüâ#‹E@‰ÐÁà)ЍÅP‰ˆ¨â#‰¸¬â#ƒÄ[^_]ÍvU‰åWVS‹}‰ÐÁà)ЍÅP‹¬â#‹°¨â#ƒúÿu ‹E ‰0ë#‰öR‰ÁÁá)Á»¨â#‰ÐÁà)ЋDÃP‰DËPƒþÿt!v‰ÁÁá)Á»¬â#‰ÐÁà)ЋDÃP‰DËP[^_]ÃU‰åS‹]‹ ‰Èƒùÿt/I‰ÐÁà)ЋÅøâ#‰ƒøÿt@‰ÐÁà)ÐÇÅüâ#ÿÿÿÿ‰È‹$ÉÃU‰åS‹]‹M ƒ9ÿt‹@‰ÂÁâ)‰Õüâ#[‰ÂÁâ)ÕP‹‰‚¨â#ǂ¬â#ÿÿÿÿ‰‹$ÉÃU‰åWVSƒì ‹M‹] ‹}ÇEðú¡Ìá#@‰ÂÁâ)4Õ â#…ÿt‹F8‰…ÛtBƒùt"ƒù ƒùt ë*‰öƒùtë!‹F8 ‰F8ë‰ö‹÷Ð!F8ëv‹‰F8ëÇEð‹F8‰Ã÷Ћ›#‰Ñ…ÂtB‰ö‰Ø÷л!Ètv‰Ú©u
-CÑøuòºƒì R范ċ^8‰Ø÷Ћ -›#…ÁuÀ‹F8‰Ã÷ЋV<‰Ñ…Ât=‰Ø÷л!Ètv‰Ú©u
-CÑøuòºƒì Rè|ƒÄ‹^8‰Ø÷ЋN<…ÁuÃû‹Eðeô[^_]ÍvU‰åVS‹u‹M ¸…É„¸ƒù‡òv‰ÐÁà)Ðfƒ<ÅÈâ#u -¸éӍvú‰ÈÁàö€™#uƒ¸™#uû魉öv‰ÐÁà)ЍÅÜâ#ƒùvèÍ©Çë
-¸Óà »ëC;Ì]#}ƒìÝÿ°Ä›#VÿÀ›#ƒÄ…Àtٍv‰ÐÁà)ЍÅfƒ»Èâ#u&ƒìh›#VèÔüÿÿ‹ƒ¤â#ƒÄ‹…â#VPÿRDƒÄèSm…Àuèû¸eø[^]ÐU‰åWVSƒì‹]‹U ƒûvè©Ç¸ÿÿÿÿévœúX‰Á‰Mðƒ}t‰ÞÁæÆ™#ü¹‹}ó¥…Òt‰ßÁçÇ™#ü¹‰Öó¥…Ò„ºöB…°ƒ:‡§ƒ< ›#ÿtq4‰uìº ›#‹@Áà‰Eè‰ÇƒÇ‹ -@¨%¸@¢%‹U苉E䋇D¢%©t -ƒàý‰‡D¢%ë‰ö¾ ›#‹Uì‹2@‰ Õ@¢%‰Áƒ}äÿu»‰ -@¨%ǝ ›#ÿÿÿÿƒûv -è¨Çë¸þÿÿÿˆÙÓÀ!›#‹uð‰ðP¸ƒÄ[^_]ÐU‰åWVSƒì,‹] ¸…Û„~¸ƒû‡pœúX‰Â‰UԉÞÁæ}؁ƙ#ü¹ó¥÷Eàuƒ}Øu ‰ÐPé5vƒûv膧Ǹÿÿÿÿ됸ˆÙÓà#›#…Àt -‹UԉÐPéûƒûvèN§Çë‰ö¸ˆÙÓà ›#‹5›#ƒþÿ„ô¸‰ÇˆÙÓçvv‰ÐÁà)ЍÅàâ#ƒûvèý¦Ç¸ÿÿÿÿë‰ú#‰Ð…À„–v‰ÐÁà)ÐÁàfƒ¸Èâ#uÜâ#ƒûv -輦Çë 8ƒìh›#Vèúÿÿv‰ÃÁã)ÃÁ㋃¤â#ƒÄ‹…â#VPÿRDÃྠâ#ƒÄƒ<3ÿtƒì ÿ43ÿ¨á#Ç3ÿÿÿÿƒÄ‹MԉÈPéîv‰ÐÁà)Ћ4Åøâ#ƒþÿ…ÿÿÿ¾¸‰ÇˆÙÓç‰öv‰ÐÁà)ÐÁàfƒ¸Èâ#„…Øâ#ƒûvèö¥Ç¸ÿÿÿÿ됉ú#‰Ð…Àu^v‰ÐÁà)ЍÅÜâ#ƒûvèÃ¥Çëv 8»ëvC;Ì]#}0ƒìÝÿ°Ä›#VÿÀ›#ƒÄ…ÀtÙëvFþ™ŽSÿÿÿèzi…Àuè9 -‹MԉÈP¸eô[^_]ÐU‰åWVSƒì,¸ƒ} „T¸ƒ} ‡EœúX‰Â‰Uԋu Áæ}؁ƙ#ü¹ó¥÷Eàuƒ}Øu ‰ÐPé ‰ö÷Eàu;ƒ} vèܤǸÿÿÿÿëv¸ŠM Óà#›#…Àt ‹UԉÐPéÃ=@¨%ÿu‹MԉÈP¸ 鮉ö‹5@¨%vÁà¹@¢%‹‰@¨%‹U ‰D¢%‹U‰H¢%‹U‰L¢%‹Ìá#‰P¢%Çÿÿÿÿ‹E Áຠ›#ƒ<ÿu‰4ë>‰ö‹M ‹ ›#‰ÁЃ<Å@¢%ÿt»@¢%
-‹Í 
-ƒ<ÃÿuîR‰4Å@¢%ƒ} vèé£Ç됸ŠM Óà ›#‹5›#ƒþÿ„û¸‰ÃŠM Ó㐍v‰ÐÁà)ЍÅàâ#ƒ} v蘣Ǹÿÿÿÿë v‰Ú#‰Ð…À„šv‰ÐÁà)ÐÁàfƒ¸Èâ#uÜâ#ƒ} vèS£Çëv ƒìh›#Vè¨öÿÿv‰ÃÁã)ÃÁ㋃¤â#ƒÄ‹…â#VPÿRDÃྠâ#ƒÄƒ<3ÿtƒì ÿ43ÿ¨á#Ç3ÿÿÿÿƒÄ‹MԉÈPé÷v‰ÐÁà)Ћ4Åøâ#ƒþÿ…ÿÿÿ¾¸‰ÃŠM Ó㐍v‰ÐÁà)ÐÁàfƒ¸Èâ#„…Øâ#ƒ} v艢Ǹÿÿÿÿë‰Ú#‰Ð…Àu^v‰ÐÁà)ЍÅÜâ#ƒ} vèV¢Çë‰ö »ëvC;Ì]#}0ƒìÝÿ°Ä›#VÿÀ›#ƒÄ…ÀtÙëvFþ™ŽSÿÿÿèf…Àuƒ=È]#uèÄ ‹MԉÈP¸eô[^_]ÃU‰åWVSƒì‹u‹]¡Ìá#@‰ÂÁâ)<Õ â#èŠú¡›##„Hºv©u=BÑøuô¾ƒ<µ ›#ÿue‹E ‰0Ç@Ç@W<ƒþvèa¡Ç됉Öëɸþÿÿÿ‰ñÓÀ!ƒþvè?¡Çëv¸þÿÿÿ‰ñÓÀ!›#ûév µº ›#‹[‹Å@¢%‰ƒøÿu"ƒþvèñ Ç됸þÿÿÿ‰ñÓÀ!›#W<ƒþv -èÌ Çë ¸þÿÿÿ‰ñÓÀ![Áâ¹D¢%‹
-‹u ‰‹‚H¢%‰F‹‚L¢%‰FƒÂ‹
-©t ƒàý‰
-ëv[¡@¨%‰Õ@¢%‰@¨%ûéI‰Öë‹G<#tUº©uéBÑøuô¾‹E ‰0Ç@Ç@W<ƒþvè Çëv¸þÿÿÿ‰ñÓÀ!ûéëv…Ûtƒ;uƒ{u -û¸ éÓ‰ö‹‰G@úèu‹Ìá#R‰ÑÁá)Ñf‰ͨâ#ƒìh„â#jèN\ƒÄU衈â#;Øá#|¡„â#+Ôá#‰E衈â#+Øá#ë¡„â#+Ôá#H‰E衈â#+Øá#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰ÁáºÓMb‹Eì÷êÁú‹EìÁø)ÂыÌá#R‰ÐÁà)Ð) Åìâ#ƒì QèÏÿÿƒÄƒ=Üá#ÿtƒì ÿ5Üá#ÿ¨á#ÇÜá#ÿÿÿÿƒÄ‹ -Ìá#I‰ÐÁà)ЋŤâ#ƒì‹…â#QPÿRHƒÄh›#ÿ5Ìá#èæòÿÿ¡Ìá#@‰ÂÁâ)ÂfÇÕÈâ#ƒÄ…Û„’ƒìEàPjè[U؃Ä‹Eà‰E؋EäC‰B…Ày -ÿM؁Bʚ;됁zÿɚ;~ ÿjʚ;ÿ5Ìá#hÐr"ÿuÜÿuØÿ¤á#‰ÃƒÄƒûÿuƒìÿ5Ìá#jèù ƒÄ¡Ìá#@‰ÂÁâ)‰Հå#ÇÌá#ÿÿÿÿÇàá#ÿÿÿÿè‡Ðÿÿƒì ¡Ìá#@‰ÂÁâ)» â#¿DÓPèsè”ÇG@¡Ìá#@‰ÂÁâ)ƒÄöDÓ2tû¸ é~‰Öë%¡›##„ûº‰ö©uáBÑøuô¾ƒ<µ ›#ÿu=‹M ‰1ÇAÇAƒþv -è@Çë¸þÿÿÿ‰ñÓÀ!›#ûé vƒì µƒ ›#Pèúðÿÿ‰ÇƒÄƒ» ›#ÿu#ƒþvèòœÇë‰ö¸þÿÿÿ‰ñÓÀ!›#Áâ¹D¢%‹
-‹] ‰‹‚H¢%‰C‹‚L¢%‰CƒÂ‹
-©t ƒàý‰
-ëv¡@¨%‰Õ@¢%‰=@¨%ûël‹G<#…Àuû¸ë`v‰Öë‹G<º#t ©uéBÑøuô¾‹E ‰0Ç@Ç@W<ƒþvè/œÇëv¸þÿÿÿ‰ñÓÀ!û¸eô[^_]ÍvU‰åWVSƒì ‹}¡Ìá#@‰ÂÁâ)4Õ â#è¹ú‹F<#…Àt è¦û颋‰F@úèq‹Ìá#R‰ÑÁá)Ñf‰ͨâ#ƒìh„â#jè6XƒÄU衈â#;Øá#|¡„â#+Ôá#‰E衈â#+Øá#ë¡„â#+Ôá#H‰E衈â#+Øá#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыÌá#R‰ÐÁà)Ð) Åìâ#ƒì QèúÊÿÿƒÄƒ=Üá#ÿtƒì ÿ5Üá#ÿ¨á#ÇÜá#ÿÿÿÿƒÄ‹ -Ìá#I‰ÐÁà)ЋŤâ#ƒì‹…â#QPÿRHƒÄh›#ÿ5Ìá#èÍîÿÿ¡Ìá#@‰ÂÁâ)» â#fÇDÓ(ÇÌá#ÿÿÿÿÇàá#ÿÿÿÿè Íÿÿ¡Ìá#@‰ÂÁâ)¿DÓ‰$è™oè‹F<#ƒÄ…Àuû¸ë èÿû¸eô[^_]ÐU‰åSƒì‹]úEðPjè¢VƒÄƒ=¨›#ÿu
-ÇEèëWMèU𡤛#;B|¡ ›#+Eð‰E衤›#+Bëv¡ ›#+EðH‰E衤›#+Eôʚ;‰Aƒì ÿ5¨›#ÿ¨á#ƒÄ…ÛtN]ð‹E𣠛#‹Eô£¤›#jh0s"ÿuôÿuðÿ¤á#‰ÃƒÄƒûÿuƒìÿ5Ìá#jè:ƒÄ‰¨›#ë -vǨ›#ÿÿÿÿû‹Eè‹]üÉÐU‰åVSƒì‹uƒ<µ ›#ÿuC‰uèÇEìÇEð¡Ìá#‰Eôƒþvèü˜Ç鮐¸þÿÿÿ‰ñÓÀ!›#降 µº ›#‹[‹Å@¢%‰ƒøÿu"ƒþv豘Ç됸þÿÿÿ‰ñÓÀ!›#[Áà¹D¢%‹‰U苐H¢%‰U싐L¢%‰Uð‹P¢%‰UôP‹
-©tƒàý‰
-ë[¡@¨%‰Õ@¢%‰@¨%ƒìEèPVè
-ƒÄeø[^]ÃU‰åVSƒì¡Ìá#@‰ÂÁâ)4Õ â#‹F0©…Í -‰F0‹F8‰Ã÷Ћ›#‰Ñ…ÂtA‰Ø÷л!Ètv‰Ú©u
-CÑøuòºƒì Rè„þÿÿƒÄ‹^8‰Ø÷Ћ -›#…ÁuÀ‹F8‰Ã÷ЋV<‰Ñ…ÂtZ‰Ø÷л!Ètv‰Ú©u
-CÑøuòº‰UèÇEìÇEð¡Ìá#‰EôƒìEèPRèƒÄ‹^8‰Ø÷ЋN<…Áu¦f0ÿïÿÿeø[^]ÃU‰åWVSƒì,‹]œúX‰Â‰UÌ¡Ìá#@‰ÂÁâ)Õ â#‰UЉÞÁæ}؁ƙ#ü¹ó¥÷Eàuƒ}Ø„îƒ}Øÿ„ä÷EàuCƒ}Øu=ƒìSh,4#èw}ƒÄ÷Eàtƒì‹M ÿqhB4#èX}ƒÄƒì jè—ÓÿÿƒÄ‹UЋB8‰EԉƍUԃûv -èh–Çë ¸ˆÙÓà ‹EÔ E܉EԋUЃÂ<ƒûv -è<–Çë ¸þÿÿÿˆÙÓÀ!‹EԋUЉB8û÷Eàtƒìjÿu SÿUäëƒìj‹M ÿqSÿU؃Äú‹EЉp8‹ỦÐPeô[^_]ÃU‰åWVSƒì ‹}‰ÐÁà)ÐÁྠâ#fƒ|(uF˜àƒ<3ÿtƒì ÿ43ÿ¨á#Ç3ÿÿÿÿƒÄƒìh›#Wèúèÿÿ‰ÂÁâ)‹Õ¤â#ƒÄë ‰ÐÁà)ÐÁàfƒ¸Èâ#u!‹¤â#ƒì‹•â#WRÿPD¸ƒÄë‰ö¸eô[^_]ÍvU‰åWVSƒì º¿™#¾™#» ™#¹ ›#‰ö‰ÐÁàǀ™#Ç8Ç0ÇÇ‘ÿÿÿÿBƒúvϺ»@¢%¹D¢%RÁàB‰ÇDƒú>~éÇ(¨%ÿÿÿÿÇ<¨%Ç@¨%Ç›#Ç›#ÿÿÿÿǨ›#ÿÿÿÿº¹`œ#»dœ#‰öRÁàÇÇÿÿÿÿÆDBƒú~áƒìjh°m"ènÚÿÿƒÄeô[^_]ÍvU‰å‹EǸ]ÐU‰å‹EÇÿÿÿÿ¸]ÐU‰åƒì‹U‹M ƒùvèê“Ǹÿÿÿÿ됸Óà ¸ÉÃU‰åƒì‹U‹M ƒùv趓Ǹÿÿÿÿ됸þÿÿÿÓÀ!¸ÉÃU‰åƒì‹M ƒùv腓Ǹÿÿÿÿë ¸Óà‹U#ÉÉöU‰åƒì ÿuÿu ÿuèÔçÿÿƒÄÉÍvU‰åWƒì$‹UEè‰E丹‹}äüó«ƒìjÿuäRèBñÿÿƒÄ…Àu -‹Uè‹E ‰¸‹}üÉÐU‰åƒì jÿu ÿuèñÿÿƒÄÉÃU‰åƒì‹E…Àu¸ëƒìPÿu ÿuèíðÿÿƒÄÉÃU‰åƒìÿuÿ5Ìá#è`èÿÿƒÄÉÍvU‰åVSƒì ‹]‹E ‰EèÇEìÇEð脒‹0ƒìEØPEèPSèAéÿÿƒÄ»ÿÿÿÿ…Àu ÷Eàu‹]ØèT’‰0‰Øeø[^]ÐU‰å‹M¡Ìá#@‰ÂÁâ)¡›# ÕÜâ#‰¸]ÉöU‰åSƒì‹E‹U ú‹Ìá#‰Ìá#ÇÈ]#jPj jèœìÿÿƒÄÇÈ]#‰Ìá#û‹]üÉÍvU‰åS‹M‹] ¡Ì]#ʼnŠÀ›#‰šÄ›#@£Ì]#‹$ÉÍvU‰åVS‹]Cÿƒøv苑Ç~¸ÿÿÿÿëp‰öœúX‰Æ[€<…hœ#u‰ðPèa‘ǸÿÿÿÿëF[Áâ¹`œ#‹E ‰
-‹E‰‚dœ#ÆD
-ƒìjhps"Sè¹T·Ã‰$èÒeƒÄ‰ðP¸eø[^]ÍvU‰åƒì¸ÉÍvU‰åƒì ‹E‰EèÇEìÇEð‹Ìá#‰UôUèRPè›ùÿÿƒÄÉÉöU‰åVS‹uv‰ÃÁã)ÃÁ㸠â#DŽàÿÿÿÿL0ƒìh›#Vèõãÿÿ‹ƒ¤â#ƒÄ‹…â#VPÿRDèç·ÿÿƒÄeø[^]ÐU‰åƒìǨ›#ÿÿÿÿjjèWèÿÿè¾·ÿÿƒÄÉÐU‰åƒìEüÇEüÿÿÿÿPèôÿÿƒÄÉÐU‰åƒì‹E‹‰EüEüPjÿÐ]#‹UüRÁà¹`œ#ƒÄƒ<t ûƒì RÿƒÄú‹Eü@ƒì ÿ4…dœ#覱ÿÿƒÄÉÐU‰åWVSƒì ‹u ‹]ƒ}t讏Ǹÿÿÿÿén‰öúƒ= ¤#ÿt ƒ=@¨%ÿuûèƒÇ ¸ÿÿÿÿéCv¡ ¤#‰‹ ¤#Õ)п$#‹DÇ0£ ¤#‹Õ)й #ÇDÁ0…öu8‹Õ)ÐÇÁ‹Õ)ÐÇÇ‹Õ)ЉÅ(#닍<Å)Ǎ<ý #ü¹ó¥‹Õ)ЍŃº #u#¡@¨%‰‚H#@ÁàƒˆT¢%‹€@¢%£@¨%‹Õ)ÐÇÅ4#ÿÿÿÿ‹Õ)ЍÅ8#Ç@NjÕ)ЍÅ@#Ç@NjÕ)ÐÇÅL#û¸ƒÄ [^_]ÃU‰åSƒì‹]ƒûwúÝ)؃<ÅP#uûèÿÇ¸ÿÿÿÿ閍vÝ)ØÁàǀP#ƒÀº$#ƒ<ÿtƒì ÿ4ÿ¨á#ƒÄÝ)ØÁàƒ¸ #uE‹H#R ÅöT¢%u¡@¨%‰@¢%‰@¨%Ý)؋ÅH#@ƒ$ÅT¢%üû¸‹]üÉÃU‰åWVSƒìL‹E‰E´Áà+E´Áàƒ¸ #…‹P ‹‚(#@öÅT¢%t¸,#ƒ< „ôÿéì‰ö‹M´Áá+M´Ááy LJ,#¾(#‹7@‹@¨%‰Ý@¢%£@¨%jÿ41ÿ±$#jèhçÿÿ‹7@ƒ ÅT¢%錐‹E´Áà+E´Á๠#ƒ<uwPƒ<
-tÿ°(#ÿ°,#ÿ4
-ëQvÇEÈÇEÌÇEÐÇEÔÇEØÇEÜÇEà‹E´Áà+E´Áà(#Rÿ°,#EÈPEÄPèÙÙÿÿƒÄ‹E´Áà+E´Åƒ¸(#u -ƒ¸,#„Àº@#‹E´Áà+E´ŋ‰E¸M¸‹D‰A‹E¸ƒ8#‰ƒ@#‹Aƒ<#‰B…Àyÿ‹@#Bʚ;ë‰özÿɚ;~ ÿjʚ;‹E´Áà+E´ÿu´h<v"ÿ4ÅD#ÿ4Å@#ÿ¤á#‰ÃƒÄƒûÿuƒìÿ5Ìá#jè+ùÿÿƒÄ‹E´Áà+E´‰Å4#ë‰ö‹E´Áà+E´ÇÅ4#ÿÿÿÿeô[^_]ÃU‰åWVSƒì‹u‹}ÇEäƒþw3ƒ}t-‹Exÿɚ;w!‹]{ ÿɚ;wúõ)ðƒ<ÅP#uûèÁŠÇ¸ÿÿÿÿ鐅ÿ„·õ)ðƒ<Å4#ÿuÇG ÇGëwƒìEèPjèGÇEäƒÄ¹@#õ)ðō]è‹D;C|‹+Eè‰G‹D+Cë(¹@#õ)òÁâ‹+EèH‰G‹D+Eìʚ;‰G ¹8#õ)ðÁà‹‰‹D‰Gõ)ðÅº$#ƒ<ÿtƒì ÿ4ÿ¨á#ƒÄ‹Eƒxu
-ƒx „þº8#õ)ð ŋ]‹‰
-‹C‰D
-÷E t¸@#‹S‰‹S ‰Tëmvƒ}äuƒìEèPjèøEƒÄõ)ð ō‘@#‹Eè‹]C‰@#‹EìC ‰B…Àyÿ‰@#Bʚ;ëzÿɚ;~ ÿjʚ;õ)ðVh<v"ÿ4ÅD#ÿ4Å@#ÿ¤á#‰ÃƒÄƒûÿuƒìÿ5Ìá#jè­öÿÿƒÄõ)ð‰Å4#û¸eô[^_]ÃU‰åWVSƒì ‹]‹} ƒûwúÝ)؃<ÅP#uûèzˆÇ¸ÿÿÿÿ鷉öÝ)؃<Å4#ÿuÇG ÇGëoƒìEèPjèÒDƒÄ¹@#Ý)؍ōuè‹D;F|‹+Eè‰G‹D+Fë'¹@#Ý)ÚÁâ‹+EèH‰G‹D+Eìʚ;‰G ¹8#Ý)ØÁà‹‰‹D‰Gû¸eô[^_]ÍvU‰åƒìƒ}t藇Çëv臇ǸÿÿÿÿÉÉöU‰åƒìƒ}tèg‡Ç¸ÿÿÿÿë‰öƒì ÿu èuÄÿÿ¸ƒÄÉÍvU‰åƒì‹E ƒ}tè,‡Ç¸ÿÿÿÿëv…Àt -ÇÇ@è¸ÉÃU‰åƒì‹UƒúwúÕ)Ѓ<ÅP#uûè܆ǸÿÿÿÿëvÕ)ЋÅL#ûÉÐU‰åWVS¹»$#¿ #¾,#‰öÍ)ÈÁàÇDÿÿÿÿ8#ÇBǍP0Ç:ÇD A‰‰Áƒù~ºÇ¤#ÿÿÿÿÇ ¤#[^_]ÐU‰å]ÍvU‰å¸]ÉöU‰åVSœúX‰Ã¡Ìá#@‰ÂÁâ)¾ â#‹DÖ0©t0©t)ƒì jè"Æÿÿ¡Ìá#@‰ÂÁâ)¿DÖ‰$è"[ƒÄ‰ØPeø[^]ÃU‰åS‹]úût ¸ÿÿÿÿ…ÛuL¡Ìá#@‰ÂÁâ)¹ â#‹DÑ0Áèƒà‹U ‰¡Ìá#@‰ÂÁâ)Õ0‹
-%ÿþÿÿ ؉
-û¸‹$ÉÉöU‰åS‹]úût ¸ÿÿÿÿ…ÛuL¡Ìá#@‰ÂÁâ)¹ â#‹DÑ0Áè ƒà‹U ‰¡Ìá#@‰ÂÁâ)Õ0‹
-%ÿýÿÿ ؉
-û¸‹$ÉÉöU‰åWVSƒì ‹} ÇEðú‹EÇÿÿÿÿÇ@¾;5Äá#s9v‹µ`â#ƒ{u ƒìWVÿS,ƒÄ…ÀxƒìWÿuVÿS0‰EðƒÄF;5Äá#rÊû‹Eðeô[^_]ÉöU‰åƒì‹U¸ƒ:ÿt ¸ƒzu‹‹…`â#ƒìRÿ2ÿP4ƒÄÉÍvU‰åƒì‹U¸ƒ:ÿt‹‹…`â#ƒìRÿ2ÿP8ƒÄÉÉöU‰åƒì‹U¸ƒ:ÿt‹‹…`â#ƒìRÿ2ÿP<ƒÄÉÉöU‰åƒì‹U¸ƒ:ÿt‹‹…`â#ƒìRÿ2ÿP@ƒÄÉÉöU‰åVS‹u‹µâ#ƒìÿ°ôhy4#è^j»ƒÄ‰ö[‰ÐÁà)ÐÁà9°¤â#……ƒÀ º â#f|€ttfƒ|tlƒì f‹Dfƒøwƒì ·ÀPè ¨ƒÄë%v·Ð¸S4#ú€t¸_4#út¸k4#P[‰ÐÁà)ÐÁàÿ°tå#´â#PShà4#è¹iƒÄ Cû™ŽUÿÿÿeø[^]ÉöU‰åWVSƒì ‹E‹…â#‰Eð‹¸üƒì ‹Uð‹‚ðøPèo§‰ÆƒÄƒþÿu -¸ÿÿÿÿ…ÿtrOëՐv‰ÐÁà)Ѝ ÅöÑâ#tRQ@»¬â#ƒ<D‹„å#‰ƒìý‰Ø‹Uð‚ðPVè\¥ƒÄ‹Eð˜ðSV腦ƒÄéiÿÿÿ‰ðeô[^_]ÉöU‰åWVSƒì‹E‹…â#‰Eð‹Mƒy(…©‹=Ìá#‰ÐÁà)Ѝž¤â#‹U93…‹M I‰ÂÁâ)ÂÁ⋄Љ„й¬â#‹D@‰D@‹„à‰„àƒÂ0¹ â#‹
-%ÿ÷ÿÿ‹\0ã ؉
-‹UðƒÂ¸ƒ¼º€ÿ•ÀH‹] ‰„š€é¢v‹U R‰ÂÁâ)ÂÁ⻤â#‹A‰„Ѓyt‹A‰‚ìâ#‹A‰„àë-‰ö‹] [‰ÐÁà)ÐÁà‹]ð‹“ô‰ìâ#‹“ô‰„å#ƒy$u‹E @‰ÐÁà)Ё ÅÐâ#¸ƒy ”ÀH‹U ‹Mð‰„‘ˆ¸ƒÄ[^_]ÃU‰åWVSƒì ‹U‹<•â#ƒ¿t8LJƒì‹E @‰ÐÁà)ЋÅtå#‹—ðÂPÿu 詤酋E @‰ÐÁà)ЍÅöƒÑâ#t?K@¾¬â#ƒ<11º¤â#‹1„à‰1ƒì‹„Ћ—ðÂPÿu èK¤ë*ƒì‹E @‰ÐÁà)ЋÅtå#‹—ðÂPÿu è³£ƒÄ‹E @‰ÐÁà)ÐfÇÅÈâ#€eô[^_]ÐU‰åWVSƒìH‹]ÇE¼ÇEÀfÇEÄÇEÈÇEÌÇEÐÇEÔÇEØÇEÜÇEà¶Ã -f‰E¸‹â#‹€ø‰EÈÇE̍E¸jjPhô"h…4#è-¬ÿÿ‰ÆƒÄ ƒþÿuƒì h 5#èVËÿÿƒÄ‹<â#v‰ÐÁà)Ðfƒ<ÅÈâ#tµ€Gƒ<ÿtJÿëE‰öƒìv‰ÃÁã)ÃÁ㍃äâ#PjèJ;fǃÈâ#€ƒÄ‹ƒtå#‹—ðÂPVè䢃čeô[^_]ÐU‰åWVSƒì‹}hŠ4#è¾ÊÿÿèÆÿÿ‰EðƒÄ hPh 4#è£ÊÿÿÇ$èwÉÿÿ‰ÃƒÄSh¾4#è‡Êÿÿ‹Eð‰…â#ƒÄ jhÊ4#Sè=efÇCÆCÇCä‰"ÇCŠ"ÇC Ø"ÇC$¸€"ÇC(Š"ÇC,x"ÇC0(Š"ÇC40Š"ÇC8<Š"ÇC<ð‚"ÇC@|Š"ÇCD‹"ÇCHP‹"ÇCLX‹"ÇCPð‹"ÇCT8Œ"ÇCXlŒ"ÇC\P"ÇC`p"ÇCdˆ"ÇCh "ÇCl¸"ÇCpЍ"ÇCtè"ÇCxŽ"ÇC|Ž"ǃ€0Ž"ǃ„HŽ"¸ƒÄS‰öDŽ‚€ÿÿÿÿ@=™~í‹EH‰ƒüƒì ‹EÁàPè@Èÿÿ‰ƒð¾ƒÄ;u}ƒì ‹ƒððPèꟃÄF;u|åÿçw¿èÿ ¡v¿ ¡‰»ô‹E‰ƒøƒ} tƒìjÿuðhìƒ"è8ÃÿÿƒÄeô[^_]ÐU‰åWVSƒì ‹M‹u ‹]‹â#‰Eð…Éx[; -Ðá#sS‹â#‹@%ÿÿÿ=u=þ™wv‰ÐÁà)Ðfƒ<ÅÈâ#u -¸éèvv‰ÐÁà)Ð9 Ťâ#t -¸&éȍv…Ûuv‰ÐÁà)Ё ÅÐâ#ë)ƒûuv‰ÐÁà)Ё$ÅÐâ#ÿ÷ÿÿë ¸郉öv‰ÐÁà)ÐÁà˜Ð¿¤â#‹U9;t\f¸Èâ#€u=ƒì‹;‹Mð‹‘ðÂPV蜞‹E‰;ƒÄ‹Uð‹‚ð‹MÈPV蹟ƒÄëv‰ÐÁà)ЋU‰Åtå#¸eô[^_]ÍvU‰åVS‹M‹4â#…Éx; -Ðá#s‹â#‹@%ÿÿÿ=t¸ÿÿÿÿëw¡Ìá#@‰ÂÁâ)¸ÿÿÿÿ9 Õ¤â#uZúè!P‹Ìá#R‰ÑÁá)Ñ» â#f‰DËdžèX­ÿÿ¡Ìá#@‰ÂÁâ)ƒì ¿DÓPèçOè>·ÿÿƒÄû¸eø[^]ÉöU‰å‹E‹…â#‹€ü]ÍvU‰å‹E‹…â#‹€ô]ÍvU‰åS‹]‹M …ÛxU;Ðá#sM‹â#‹@%ÿÿÿ=u7ù™wI‰ÐÁà)Ðfƒ<ÅÈâ#u¸ëMI‰ÐÁà)Ð9Ťâ#t ¸&ë3‰öI‰ÁÁá)ÁÁá¸öÑâ#”À‹U‰‹‘tå#‹E‰¸‹$ÉÉöU‰å‹E f8t·‹E -9Âu¸ë¸ÿÿÿÿ]ÐU‰å¸ÿÿÿÿ]ÉöU‰å¸]ÉöU‰å]ÍvU‰å¸]ÉöU‰åSƒì ‹E‹M ‹…â#I‰ÐÁà)ЋÅtå#‹“ðÂPQè;œƒÄ‹]üÉÍvU‰åWVSƒì ‹E‹u ‹<…â#v‰ÐÁà)Ðfƒ<ÅÈâ#tµ€Gƒ<ÿtHÿëCƒìv‰ÃÁã)ÃÁ㍃äâ#PjèR5fǃÈâ#€ƒÄ‹ƒtå#‹—ðÂPVè윃čeô[^_]ÐU‰åSƒì ‹E‹M ‹…â#I‰ÐÁà)ÐÁàfǀÈâ#€‹€tå#‹“ðÂPQ蠜ƒÄ‹]üÉÃU‰å]ÍvU‰åWVSƒì ‹U‹•â#‰Eð‹U <•€‰ÆƒÆƒ<7~MƒìR‰ÃÁã)ÃÁ㍃äâ#Pjè‹4ÿ 7ƒÄ‹ƒtå#‹Mð‹‘ðÂPÿu 躛fǃÈâ#€ƒÄë‹E @‰ÐÁà)ÐfÇÅÈâ#eô[^_]ÐU‰åƒì‹E‹M ‹…â#ƒÀDŽˆ€ÿÿÿÿI‰ÐÁà)ÐfÇÅÈâ#hDâ#QèðÉÿÿƒÄÉÍvU‰å‹E‹U ‹…â#ƒÀDŽ€R‰ÐÁà)ÐfÇÅÈâ#]ÃU‰åWVSƒì4‹u v‰EäÁà+EäfÇÅÈâ#EèPjè“3Mè»@B‹Eº÷ó‰Uà’€€‰E܋A‹U܍ЉE؉A»¡/¸D÷ë‰ÓÁû‹EØÁø)ÿƒÞC‹E÷ç‰×‰øÁèEè‹A»Êš;™÷û‰Ó‰YƒÄVh`Ž"ÿuìÿuèÿ¤á#‰ÃƒÄƒûÿuƒìÿ5Ìá#jèAäÿÿƒÄ v‰ÈÁà)ȉŀå#eô[^_]ÐU‰åƒìÿ5Ìá#jèäÿÿ¸ƒÄÉÍvU‰åƒìÿ5Ìá#jèñãÿÿƒÄÉÃU‰åƒìÿ5Ìá#jèÙãÿÿƒÄÉÃU‰åƒìÿ5Ìá#jèÁãÿÿƒÄÉÃU‰åƒìÿ5Ìá#jè©ãÿÿƒÄÉÃU‰åƒìÿ5Ìá#jè‘ãÿÿƒÄÉÃU‰åƒìÿ5Ìá#jèyãÿÿƒÄÉÃU‰åƒìÿ5Ìá#jèaãÿÿƒÄÉÃU‰åƒìÿ5Ìá#jèIãÿÿƒÄÉÃU‰åƒìÿ5Ìá#jè1ãÿÿƒÄÉÃU‰åƒìÿ5Ìá#jèãÿÿƒÄÉÃU‰åWVSƒì‹MI‰ÃÁã)ÃÁ㺤â#‹‹4…â#¿ â#fÇD(€‹„Ћ–ðÂPQè=™Ç„àÿÿÿÿèQœÿÿƒÄeô[^_]ÉöU‰åVSƒì h@6#è
-Áÿÿè]¼ÿÿ‰ÆÇ$Œè׿ÿÿ‰Ã‰µâ#ƒÄ jhØ5#Sè®[fÇCÆCÇC "ÇC@"ÇC L"ÇC$t"ÇC(ÇC,Œ"ÇC0˜"ÇC4 "ÇC8¬"ÇC<´"ÇC@А"ÇCDø"ÇCH ‘"ÇCLH‘"ÇCPp‘"ÇCT˜‘"ÇCXÀ‘"ÇC\è‘"ÇC`’"ÇCd<’"ÇChd’"ÇClŒ’"ÇCp´’"ÇCtܒ"ÇCx“"ÇC|,“"ǃ€T“"ǃ„|“"ǃˆÿÿÿÿÇ$ã5#èô¿ÿÿƒÄ jVh¤“"è,ºÿÿƒÄeø[^]ÉöU‰å‹M‹E ‹â#fƒ8t·9Èu¸ƒºˆÿt¸ÿÿÿÿ]ÉöU‰å¸ÿÿÿÿ]ÉöU‰åƒì‹E‹…â#ÿ°ˆhE5#èìYƒÄÉÍvU‰å‹E‹…â#‹€ˆ]ÍvU‰å¸]ÉöU‰å]ÍvU‰å¸]ÉöU‰å]ÍvU‰å‹E @‰ÂÁâ)ÂfÇÕÈâ#]ÃU‰åƒìhT5#èxYƒÄÿ5Ìá#j è„àÿÿƒÄÉÍvU‰åƒìh[5#èPYƒÄÿ5Ìá#j è\àÿÿƒÄÉÍvU‰åƒìhb5#è(YƒÄÿ5Ìá#j è4àÿÿƒÄÉÍvU‰åƒìhi5#èYƒÄÿ5Ìá#j è àÿÿƒÄÉÍvU‰åƒìhp5#èØXƒÄÿ5Ìá#j èäßÿÿƒÄÉÍvU‰åƒìhw5#è°XƒÄÿ5Ìá#j è¼ßÿÿƒÄÉÍvU‰åƒìh~5#èˆXƒÄÿ5Ìá#j è”ßÿÿƒÄÉÍvU‰åƒìh…5#è`XƒÄÿ5Ìá#jèlßÿÿ¸ƒÄÉÉöU‰åƒìhŒ5#è4XƒÄÿ5Ìá#jè@ßÿÿƒÄÉÍvU‰åƒìh“5#è XƒÄÿ5Ìá#jèßÿÿƒÄÉÍvU‰åƒìhš5#èäWƒÄÿ5Ìá#jèðÞÿÿƒÄÉÍvU‰åƒìh¡5#è¼WƒÄÿ5Ìá#jèÈÞÿÿƒÄÉÍvU‰åƒìh¨5#è”WƒÄÿ5Ìá#jè ÞÿÿƒÄÉÍvU‰åƒìh¯5#èlWƒÄÿ5Ìá#jèxÞÿÿƒÄÉÍvU‰åƒìh¶5#èDWƒÄÿ5Ìá#jèPÞÿÿƒÄÉÍvU‰åƒìh½5#èWƒÄÿ5Ìá#jè(ÞÿÿƒÄÉÍvU‰åƒìhÄ5#èôVƒÄÿ5Ìá#jèÞÿÿƒÄÉÍvU‰åƒìhË5#èÌVƒÄÿ5Ìá#jèØÝÿÿƒÄÉÍvU‰åSƒì0‹]ÇEÜÇEàfÇEäÇEè¶Ãf‰EØÇEìEØjjPh0”"hÒ5#趜ÿÿƒÄ ‹â#‰Ã‰šˆƒûÿuƒì h6#èÒ»ÿÿƒÄ[‰ÐÁà)ÐÇÅØâ#ÿÿÿÿ‹]üÉÐU‰åôëýU‰åWVSƒì ‹} ¾ú»ëvCûÿ2Ý)ØÁàº@¤#€|t߃ìÿ4ÿuèaVƒÄ…Àuʾ…öt1ÿÀuèðnÇûéÜûÝ)؍…D¤#éˉö÷Ç@uè¿nÇû髍v‹E‰Eð=ÿ~èžnÇû銉ö‹Å#ƒúÿtqÕ)Ѝ<…w‹†D¤#£Å#ƒì ÿuèV@‰$臹ÿÿ»@¤#‰ƒÄÿuPè7U‹Eð‰‡H¤#‡L¤#‰$è,‘ÆDƒÄû‡D¤#ëvènÇû¸eô[^_]ÍvU‰åWVSƒì ¾ú¿»@¤#vý)øÁà€|tƒìÿ4ÿuèUƒÄ…Àu¾Gÿÿ~ʅötJƒì ÿuèOUƒÄ@Pý)ûÁã¾@¤#ÿ43è%¹ÿÿƒÃÆD3¡Å#‰ƒD¤#‰=Å#ƒÄûë‰öèSmÇû¸eô[^_]ÍvU‰åWVSƒì ‹}?ÿw‹Õ)Ѐ<…X¤#uèmǸÿÿÿÿé‰öèÏæÿÿúè5B‹Ìá#R‰ÑÁá)Ñf‰ͨâ#‹Õ)Ѝ4…@¤#ƒ~ ÿu
-ƒ~…“ƒìWjÿÐ]#ƒÄh„â#jè8)ƒÄU衈â#;Øá#|¡„â#+Ôá#‰E衈â#+Øá#ë!‰ö¡„â#+Ôá#H‰E衈â#+Øá#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыÌá#R‰ÐÁà)Ð) Åìâ#ƒì Qèú›ÿÿƒÄƒ=Üá#ÿtƒì ÿ5Üá#ÿ¨á#ÇÜá#ÿÿÿÿƒÄ‹ -Ìá#I‰ÐÁà)ЋŤâ#ƒì‹…â#QPÿRH‹ -Ìá#I‰ÐÁà)л â#fÇDÃ(Íǂ@À#‹‰‚DÀ#ƒÄF PQèÇÌá#ÿÿÿÿÇàá#ÿÿÿÿèõÿÿ¡Ìá#@‰ÂÁâ)¿DÓ‰$è…@èܧÿÿƒÄûèÿäÿÿë8ÿNƒìWjÿÐ]#¡Ìá#@‰ÂÁâ)¿ըâ#‰$èF@蝧ÿÿƒÄû¸eô[^_]ÃU‰åWVSƒì ‹}‹]?ÿw‹Õ)Ѐ<…X¤#uè¯jǸÿÿÿÿéVv…ÛuúëúèÒ?‹Ìá#R‰ÑÁá)Ñf‰ͨâ#‹Õ)Ѝ4…@¤#…Ûu0ƒ~ ÿu‹E 9F}èMjÇ û¸ÿÿÿÿéó‹E )Fûéâèäÿÿƒ~ ÿu ‹E 9F‘ƒìWjÿÐ]#ƒÄh„â#jèš&ƒÄU衈â#;Øá#|¡„â#+Ôá#‰E衈â#+Øá#ë¡„â#+Ôá#H‰E衈â#+Øá#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыÌá#R‰ÐÁà)Ð) Åìâ#ƒì Qè^™ÿÿƒÄƒ=Üá#ÿtƒì ÿ5Üá#ÿ¨á#ÇÜá#ÿÿÿÿƒÄ‹ -Ìá#I‰ÐÁà)ЋŤâ#ƒì‹…â#QPÿRH‹ -Ìá#I‰ÐÁà)л â#fÇDÃ(͋E ‰‚@À#‹‰‚DÀ#ƒÄF PQè'ÇÌá#ÿÿÿÿÇàá#ÿÿÿÿèZ›ÿÿ¡Ìá#@‰ÂÁâ)¿DÓ‰$èê=èA¥ÿÿƒÄûèdâÿÿë<‰ö‹E )FƒìWjÿÐ]#¡Ìá#@‰ÂÁâ)¿ըâ#‰$è§=èþ¤ÿÿƒÄû¸eô[^_]ÐU‰åWVSƒì ‹}?ÿw‹Õ)Ѐ<…X¤#uèhǸÿÿÿÿéU‰öè,…À„‡œúX‰Æ‹Õ)Ѝ…@¤#‹JA‰J‹Z ƒûÿtG‹Ý@À#9È<)Á‰È‰BƒìB PSèʊ[‰ÐÁà)ЋŤâ#ƒÄ‹•â#SRÿPDèÿÿƒÄƒìWjÿÐ]#ƒÄ‰ðPé¼‰öúèª<‹àá#R‰ÑÁá)Ñf‰ͨâ#‹Õ)Ѝ…@¤#‹JA‰J‹Z ƒûÿtG‹Ý@À#9È<)Á‰È‰BƒìB PSè*Š[‰ÐÁà)ЋŤâ#ƒÄ‹•â#SRÿPD荙ÿÿƒÄƒìWjÿÐ]#¡Ìá#@‰ÂÁâ)¿ըâ#‰$è <èb£ÿÿƒÄû¸eô[^_]ÐU‰åWVSƒì ‹] ÇEð‹E8ÿw‹Õ)Ѐ<…X¤#uèlfǸÿÿÿÿéÊèc*…À„ÃœúX‰Â‰Uì‹E‹Õ)Ѝ4…@¤#^‹^ ƒûÿts݉‹€@À#;F_¿@À#ÇEðv‹F+:‰FƒìF PSè
-‰[‰ÐÁà)ЋŤâ#ƒÄ‹•â#SRÿPD‹^ ƒÄƒûÿt݋:;F~°ƒìÿujÿÐ]#ƒÄƒ}ðtèÿÿ‹Uì‰ÐPéõúèÊ:‹àá#R‰ÑÁá)Ñf‰ͨâ#‹E‹Õ)Ѝ4…@¤#^‹^ ƒûÿtr݉‹€@À#;F^¿@À#ÇEð‰ö‹F+:‰FƒìF PSè2ˆ[‰ÐÁà)ЋŤâ#ƒÄ‹•â#SRÿPD‹^ ƒÄƒûÿt݋:;F~°ƒìÿujÿÐ]#ƒÄƒ}ðtèd—ÿÿ¡Ìá#@‰ÂÁâ)ƒì ¿Õ¨â#Pèð9èG¡ÿÿƒÄû¸eô[^_]ÉöU‰åWVSƒì ¾¿D¤#õ)óÁãǃ@¤#‰4;ǃH¤#ƒì ƒL¤#PèF‡ƒÃF‰;ƃH¤#ƒÄ‰Æþÿ~±Ç8À#ÿÿÿÿÇÅ#ƒìjhä¢"è:ªÿÿƒÄeô[^_]ÍvU‰åVS‹uú>ÿw‹Õ)Ѐ<…X¤#uèÉcÇû¸ÿÿÿÿënvƒì ‹Õ)л@¤#ÿ4ƒèUKƒÄ@P‹Õ)Ðÿ4ƒè1¯ÿÿ‹Õ)ÐÆDƒ‹Õ)ЋÅ#‰…T¤#‹£Å#ƒÄû¸eø[^]ÉöU‰åƒì‹Mú9ÿw‹Õ)Ѐ<…X¤#uècÇû¸ÿÿÿÿëb‰ö‹Õ)Ѓ<…L¤#ÿtèîbÇû¸ÿÿÿÿë8‹Õ)ÐÆ…X¤#‹Õ)ЋÅ#‰…T¤#‹£Å#û¸ÉÉöU‰åSƒì‹M‹] 9ÿw‹Õ)Ѐ<…X¤#uèubǸÿÿÿÿë_ú‹Õ)ÐÁàƒ¸L¤#ÿu ‹€H¤#‰ë7‰öÇ‹Õ)Ћ…L¤#¹¨â#vÿ @‰ÐÁà)ЋDÁPƒøÿuëû¸‹]üÉÃU‰åVS‹u‹M¸ùÿ‡–ú‹Å#‰ƒúÿtnÕ)Ћ…T¤#£Å#‹Õ)л@¤#ǃ‹Õ)Љ …H¤#ƒì ‹Õ)Ѝ…L¤#P腄‹Õ)ÐÆDƒƒÄëègaÇû¸ÿÿÿÿëû¸eø[^]ÍvU‰åƒì‹M9ÿw‹Õ)Ѐ<…X¤#uèaǸÿÿÿÿë=ú‹Õ)Ѝ…@¤#ƒx ÿuƒxuèì`Ç û¸ÿÿÿÿë ‰öÿHû¸ÉÐU‰å‹E@‰ÂÁâ)¸fƒ<ÕÈâ#”À]ÐU‰åVS‹][‰ÐÁà)Ѝ4Åfƒ¾Èâ#uAƒì‹ÝDÀ#Õ)Ѝ…L¤#PS脃‹†¤â#ƒÄ‹…â#SPÿRD¸ƒÄ됸eø[^]ÃU‰åVSƒ=Ü]#…ÚÇÜ]#¹»`¨%¾d¨%‰ÁàP ÆÇ2ÿÿÿÿÆDAƒùváƒìjjh Å#èÜýÿÿ¹ƒÄ¾Äª%»Àª%‰ö‰ÁàQ‰0Ɖуù -véÇô¬%ÿÿÿÿÆð¬%Ǹª%¹¾$­%» ­%vÍ)ÈÁàQ‰0ƉуùvãÇP°%ÿÿÿÿÆL°%Çh°%eø[^]ÐU‰åWVSƒìŠEˆEóŠUˆUòfÇEæ¾<u€út €}óu€}òuè_Ǐ¸ÿÿÿÿé7‰öúƒ=¸ª%ÿuèí^ǍûÇEìÿÿÿÿ됡¸ª%€‹ÕĪ%‰¸ª%û‰Eìƒ}ìÿu -¸ÿÿÿÿéìvƒì h Å#ègñÿÿƒÄ‹]¾¹º÷ñ‰×ëf‰ö¿€<ŀ¨%t0ƒìÿu¿ōƒ`¨%Pè³EƒÄ…Àu€»x¨%„Ÿ¾ëG¹‰øº÷ñ‰×fÿEæfƒ}懜‰ó„Ût–¿Áãƃ€¨%ƒìÿuƒ`¨%Pè÷D‹E쉃t¨%ƒÄ€}óu‰Â’‹] f‰ÅȪ%ëv‹E썀‹E ¯Ef‰ÕȪ%úƒì ‹U썒Á㷃Ȫ%PèݨÿÿºÌª%‰ƒÄû…Àu%è”]ǒƒì h Å#èAõÿÿ¸ÿÿÿÿ魍v‹E썀ÁãS‰Uà¾Àª%‹ƒÌª%‰‚Ī%‰2ƒìjjƒÜª%Pè:ûÿÿƒÄ ·D3Pjƒàª%Pè#ûÿÿƒÄ jjÃäª%SèûÿÿŠ]ó‹Eàˆ\0ƒÄúƒ=h°%ÿuèø\ǎûÇEèÿÿÿÿë¡h°%Å)‹•$­%‰h°%û‰Eèƒ}èÿu_ƒì h Å#èvôÿÿ‹Eèéä‰öè§\ǐƒì h Å#èTôÿÿ¸ÿÿÿÿéÀ‰öèƒ\Ǒƒì h Å#è0ôÿÿ¸ÿÿÿÿ霉ö‹EèÁà+EèÁ๠­%ŠUòˆT P‹]ì‰
-‹] f‰\
-ǀ$­%ÿÿÿÿ‰º(­%‹]썛ÆÕÀª%ƍ¿ōr¿`¨%€|>t%ƒì¶D>Pš|¨%SèGõÿÿÆD>‰$èšøÿÿƒÄƒì h Å#èŽóÿÿ¿EèƒÄeô[^_]ÍvU‰åWVSƒìŠEˆEóŠ]ÇEè¿ÆEç<u„Ût €}óu€ûuè‚[Ǐ¸ÿÿÿÿé0‰öúƒ=h°%ÿuèa[ǎûÇEìÿÿÿÿë ¡h°%Å)‹•$­%‰h°%û‰Eìƒ}ìÿu ¸ÿÿÿÿéߐ‹EìÁà+EìÁຠ­%ˆ\ ‹M f‰Lǀ$­%ÿÿÿÿƒì h Å#è°íÿÿƒÄ‹U¾¹º÷ñ‰Öë]v¶€<ŀ¨%u ¿ÆEçë8ƒìÿu¶Å`¨%PèöAƒÄ…Àu¿ëF¹‰ðº÷ñ‰ÖÿEèƒ}è‡Ò‰ù„Ét €}çuR¶Áã¸`¨%ÆD ÆDƒìÿuPè>AƒÄ jjÃ|¨%Sè/øÿÿÇ$ Å#èçñÿÿƒÄ jjSè:ïÿÿëM¶ōCº`¨%€|t'þDƒì h Å#è®ñÿÿƒÄ jjƒ|¨%Pèûîÿÿ됃ì h Å#è‹ñÿÿƒÄ¶‹<Åt¨%¿ŠUó:Åت%tèªYǓ¸ÿÿÿÿéX‰ö€}óu¿·ÅȪ%9E u€}ót(¿·ÅȪ%™÷} …ÒtèdYǔ¸ÿÿÿÿéƒì h Å#è ìÿÿ¶‹ń¨%ƒÄƒúÿ„­€}óu#è&YǕƒì h Å#èÓðÿÿ¸ÿÿÿÿéЍÕ)з…4­%9E t"èíXǔƒì h Å#èšðÿÿ¸ÿÿÿÿ鋋MìÁá+M썶Å »d¨%‹‰$­%‹Mì‰ ë/‰öèŸXǑƒì h Å#èLðÿÿ¸ÿÿÿÿë@¶‹Uì‰ń¨%ƒì h Å#è*ðÿÿ‹EìÁà+EìÁàH‰±(­%º ­%‰<Æ¿EìƒÄeô[^_]ÉöU‰åWVSƒì¿E‰Eì‰ÇÁç)ÇÁ獗 ­%‰Uðh Å#èÏêÿÿ‹Mð‹Y›ÁãC‰Eèºd¨%‹€Áà°Àª%ƀÀª%F‰$èôÿÿF ‰$è„ôÿÿF$‰$èyôÿÿƒÄú·FPÿv èX£ÿÿû¹d¨%‹Eè‹ú ’¡¸ª%‰ÍĪ%‰¸ª%ûƇ ­%ƒÃ ‹Uð‹B‰ƒd¨%ú¡h°%‰‡$­%‹Mì‰ -h°%ûƃ`¨%Ç$ Å#è
-ïÿÿƒÄeô[^_]ÍvU‰åWVSƒì ‹u ŠM¿UÕ)Ѝ… ­%‰Eð‹@€ÅÀª%‹Eð€x uèûVǔ¸ÿÿév€;uèÞVǖ¸ÿÿéù‰ö€{tQ€{u,ƒì¶ÁP‹Uð·BPC PèÈëÿÿƒÄ…Àt;¸évƒì¶ÁP‹Uð·BPC PèœëÿÿƒÄ…ÀuÔƒì CPè-éÿÿƒÄ‹Uð·B‹{‰ÁÁéüó¥¨tf¥¨t¤·B‰ÁK‰K·S‰ÐC 9Ár‰È)ЉC€{u ƒì CPë8‰ö€{uƒì‹Uð·BPC$PèZïÿÿëƒì‹Uð·BPC$PèDïÿÿC‰$èíÿÿƒÄ¸eô[^_]ÐU‰åWVSƒì ‹} ŠM¿UÕ)Ѝ… ­%‰Eð‹@€ÅÀª%‹Eð€x uè‹Uǔ¸ÿÿév€;uènUǖ¸ÿÿéù‰ö€{tQ€{u,ƒì¶ÁP‹Uð·BPC$PèXêÿÿƒÄ…Àt;¸évƒì¶ÁP‹Uð·BPC$Pè,êÿÿƒÄ…ÀuÔƒì CPè½çÿÿƒÄ‹Uð·B‹s‰ÁÁéüó¥¨tf¥¨t¤·B‰ÁK‰K·S‰ÐC 9Ár‰È)ЉC€{u ƒì CPë8‰ö€{uƒì‹Uð·BPC Pèêíÿÿëƒì‹Uð·BPC PèÔíÿÿC‰$è-ìÿÿƒÄ¸eô[^_]ÐU‰åSƒìh_6#è;ƒÄÿ5¸ª%hk6#è;»ƒÄÝ)ØÁà€¸ ­%t8 ­%‹B€ÅÀª%ƒì ÿp ÿp$‹B€Å`¨%PSh6#è®:ƒÄ Cƒûv­‹]üÉÃU‰åƒì`¿MÍ)ȋ…0­%’ÅÀª%ÿp ÿp$RQh 6#E¨Pèf:ƒÄ ÉÐU‰åSƒì‹]h Å#èHæÿÿ¿ÓÕ)Ѝ …‹8­%€Å ƒÄ€º`¨%u ‹$­%‰‚d¨%¿ÃÅ)ÂÁâƂ ­%ú‹ -h°%‰Š$­%£h°%ûƒì h Å#èÓêÿÿƒÄ‹]üÉÍvU‰åWVSƒì ‹u ‹E‹<…`â#ú‹^…Ûu-ƒì j èžÿÿƒÄ…ÀtÇÿÿÿÿÇ@Ç@ÿÿÿÿ‹U‰‰F‹;Ìá#u û¸#é~ƒ;ÿtc¾ â#‰ö‹ -Ìá#I‰ÐÁà)Ћ‰TÆP‹C‰„¬¡Ìá#‰CÿCè…ÿÿ¡Ìá#@‰ÂÁâ)ƒì ¿DÖPèŸ'èöŽÿÿƒÄûúƒ;ÿu¤¡Ìá#ÿD‡D¡Ìá#‰û¸eô[^_]ÉöU‰åWVSƒì ‹E ‹x¸…ÿ„À‹;Ìá#tû¸髍vúè*'‹Ìá# [‰ÊÁâ)Êf‰Õ¨â#‹E‹…`â#ÿL˜DÇÿÿÿÿ‹_ÇGÿÿÿÿƒûÿt-p ‰Ù[‰ÐÁà)ЉÅðâ#‹œž DŽŽ ÿÿÿÿƒûÿuÖÇGè„ÿÿ¡Ìá#@‰ÂÁâ)ƒì ¿Õ¨â#Pè¢&èùÿÿƒÄû¸eô[^_]ÃU‰åVSƒì h7#è~ÿÿè -™ÿÿ‰ÆÇ$èKœÿÿ‰Ã‰µ`â#ƒÄ jh7#Sè"8fÇCÍÆCÇCÇC$³"ÇC p³"ÇC$|³"ÇC(„³"ÇC,´³"ÇC0à³"ÇC4(´"ÇC8ˆ°"ÇC<p´"ÇC@p±"ºƒÄsK •ÇD@DŽ ÿÿÿÿBú™~ݍeø[^]ÉöU‰åVS‹E‹…`â#ƒì hà6#è7¾ƒÄƒÃƒìÿt³@hÿ6#èû6ƒÄFþ™~ãeø[^]ÃU‰å¸ÿÿÿÿ]ÉöU‰å]ÍvU‰åƒì‹E‹U ‹…`â#ƒÀƒ|@tƒìRj
-èȽÿÿƒÄÉÍvU‰å‹U :t ‹E -9u
-¸ëv¸ÿÿÿÿ]ÐU‰åSƒì‹] j èӚÿÿ‰ÂƒÄ¸ …Òt!ÇÿÿÿÿÇBÇBÿÿÿÿ‹E‰‰S¸‹]üÉÍvU‰åSƒì‹] ‹Cƒxt ¸ë&‰öúƒ{tƒìj ÿsèäšÿÿÇCƒÄû¸‹]üÉÍvU‰åWVSƒì ‹}‹u ú‹^…Ûu*ƒì j è3šÿÿƒÄ…ÀtÇÿÿÿÿÇ@Ç@ÿÿÿÿ‰>‰Fƒ;ÿt
-û¸ë"‰ö¡Ìá#‹½`â#ƒÂÿD‚@¡Ìá#‰û¸eô[^_]ÃU‰åWVSƒì ‹E ‹U‹•`â#ú‹p¸…ö„V‹;Ìá#u û¸#éA‹Ìá#‹F ¿ â#;„“°v -¸é v¡Ìá#‹Œƒ°‹“¬…Òt‰ö‹;Ìá#…Š‹R…Òu븅À…†‹ -Ìá#I‰ÂÁâ)‹ƒ¬‹‰D×P‹ƒ¬‹@‰„‹‹“¬¡Ìá#‰B‹ƒ¬ÿ@èj€ÿÿ¡Ìá#@‰ÂÁâ)ƒì ¿D×Pèù"èPŠÿÿƒÄûúéRÿÿÿ‰ö¸;J ’Àérÿÿÿ‹E‹…`â#¡Ìá#ÿDƒD¡Ìá#‰¹‹ƒ¬‹V ë‰ö‰Á‹A…Àt;P sò…Ét‰q됉³¬…Àt‰p‰F‰Nû¸eô[^_]ÍvU‰åWVS‹}‹E ‹ ½`â#ú‹X¸…Û„Ù‹;Ìá#uû¸#éčv‹Ìá#‹C ;„‘°s
-¸饡Ìá#‹´°‹‘¬…Òt‰ö‹;Ìá#u‹R…Òu︅Àuû¸ëk‰ö¸;r ’Àëåv‹ ½`â#¡Ìá#ÿDD¡Ìá#‰¾‹¬‹S 됉ƋF…Àt;P sò…öt‰^됉™¬…Àt‰X‰C‰sû¸[^_]ÉöU‰åWVSƒì ‹E ‹x¸…ÿ„ï‹;Ìá#tû¸éڍvúè&!‹Ìá# [‰ÊÁâ)Êf‰Õ¨â#‹E‹…`â#‰EðÿL˜DÇÿÿÿÿ‹_ÇGÿÿÿÿƒûÿt2‰ÆƒÆv‰Ù[‰ÐÁà)ЉÅðâ#‹œžDŽŽÿÿÿÿƒûÿuÖÇG‹O‹W…Éu -‹Eð‰¬ë‰ö‹G‰A…Òt‹G‰Bèã}ÿÿ¡Ìá#@‰ÂÁâ)ƒì ¿Õ¨â#Pèo èƇÿÿƒÄû¸eô[^_]ÐU‰åVSƒì hD7#èJ—ÿÿèْÿÿ‰ÃÇ$€è–ÿÿ‰Æ‰4`â#ƒÄ jhX7#Vèî1fÇFÌÆFÇFÇF,º"ÇF °º"ÇF$ܺ"ÇF( »"ÇF,T»"ÇF0€»"ÇF4Ø»"ÇF8è´"ÇF<p¶"ÇF@t·"ºƒÄ^N•ÇD@DŽ°ÿÿÿÿDŽÿÿÿÿBú™~Òdž¬eø[^]ÐU‰å‹U‹M ¸ÿÿÿÿ…Òt;‹‹…`â#ƒxu‹@%ÿÿÿ=Ìu…Ét ‹B‹@ ‰ë
-‰ö¸ÿÿÿÿ됸]ÐU‰å‹U‹M¸ÿÿÿÿ…Òt@‹‹…`â#ƒxu‹@%ÿÿÿ=Ìt¸ÿÿÿÿ됅Ét‹B‹@ ‰‹R‹E ‰B ¸]ÃU‰å‹E‹M ‹U‹…`â#‰”ˆ°]ÃU‰åWVSƒì‹E‹<…`â#hà6#è0»ƒÄwƒìÿtž@hÿ6#èó/ƒÄCû™~ãƒì h"7#èÚ/»ƒÄ‰öƒìÿ´Ÿ°h>7#è¼/ƒÄCû™~àeô[^_]ÃU‰å‹U :t ‹E -9u
-¸ëv¸ÿÿÿÿ]ÐU‰åS‹E‹U ‹]‹ …`â#Áâ‹C‰„°ÇD
-D‹$ÉÉöU‰åVS‹E‹u ‹…`â#ƒ|³DtƒìVj
-èD¶ÿÿƒÄë vÇD³DDŽ³°ÿÿÿÿeø[^]ÉöU‰å‹U :t ‹E -9u
-¸ëv¸ÿÿÿÿ]ÐU‰åSƒì‹] jè3“ÿÿ‰ÂƒÄ¸ …Òt1ÇÿÿÿÿÇBÇBÿÿÿÿ‹E‹@‰B ÇB‹E‰‰S¸‹]üÉÍvU‰åSƒì‹] ‹Cƒxt ¸ë&‰öúƒ{tƒìjÿsè4“ÿÿÇCƒÄû¸‹]üÉÍvU‰åWVSƒì$·]Shb7#è .‰Ø-yƒÀÁèƒÄ ·À‰Eè@ÛÁã¿ ½%ÿt8CP‰Eä·8Phi7#èá-ƒÄ ÿt;·D;Phw7#èÊ-ƒÄ ÿt; s·>Phˆ7#è±-ƒÄ ÿt>·D>Ph™7#èš-ƒÄ ‹Uä·D:P·DLPhª7#è~-‹UèÕƒÄ·ØSh»7#èc-EóPEòPEìPS蹃ĶUóR¶UòRÿuìPh8#è6-ƒÄ eô[^_]ÍvU‰åWVSƒì ‹E‹U‹]¹‹u ƒî‰ƒî‰º@&fƒ=@&yA¿Áfƒ<Byfù™~îfù™~ƒì hÐ7#èÎ,¸ƒÄé ¿Á<¹@&‰Úf Ê€f‰Ǎ<ÿÁçº ½%‰tÇD _ÇDfŒÙf‰LfÇfÇDÇD _ ‹M‰ ÇDÇDO0ÇDÇD Ǎ_@ÇÇD‰t‰t fŒÉf‰L fŒÙf‰LfŒÛOPf‰\fŒÛf‰fÇD 0fÇD0O`fÇfÇDfÇDÇŒ½%¾@A&¹üó¥Å˜eô[^_]ÐU‰åVS‹u ¿E-‰Â…ÀyP‰ÐÁø@ÀÁ๠½%f‰tX@Vf‰T f‰t ƒÀPf‰tf‰4[^]ÉöU‰å¿E-‰Â…ÀyP‰ÐÁøfDŽ@&]ÉöU‰åSƒì‹]¿E Phè7#Sè~3‰ØƒÄ‹]üÉÃU‰åVS趉Æès»‰öƒìhÆ"SèƒÄh¤¿"SèìƒÄCƒû~ۉðeø[^]ÉöU‰åƒìèaÉÍvU‰åSƒì‹]‹à]#€82uºð°îƒìShB9#èˆ*ƒÄÁ㋃à]#@PhC#èp*ƒÄÿ³$^#ènƒÄ‹]üÉÉöU‰åƒìÿuhY9#èE*èèûÇ$èG7ƒÄÉÉöU‰åWVSƒì‹E‹} ƒ=d»%„à…ÿ„Ø¡à±%€€€ źm¶‰È÷â‰È)ÐÑ草ÁÁé
-‰O¡ä±%ÀP‰ÐÁà)кè‰Ó™÷û’’’щW¡ä±%ÀP‰ÑÁá)ѾÓMb‰È÷îÁú‰ÈÁø‰Ó)øƒÞC÷o‰ÑÁù‹GÁø)Á‰È؉‹OÁú‰ÈÁø)’’’’’’Áâ)э ‰ ‰ ‰Áá‰O‹éԉö]è¡à±%€€€ źm¶‰È÷â‰È)ÐÑ草ÁÁé
-¡ä±%ÀP‰ÐÁà)кè‰Ö™÷þ’’’щS¡ä±%ÀP‰ÑÁá)ѾÓMb‰È÷îÁú‰ÈÁø)‰Uè‹{¸ƒÞC÷ï‰ÑÁù‰øÁø)Á‰ÈEè‰ùÁú‰ÈÁø)’’’’’’Áâ)э ‰ ‰ ‰Áá‰K‹E荀€€€€€‰ÃÁã‰È÷îÁúÁù)ʍéèvƒøuc¸ƒ=Ô±%…Ρر%€€€€€€‰ÃÁã‹ -ܱ%ºÓMb‰È÷êÁúÁù)ÊӅÿ„…¡Ø±%‰¡Ü±%éqvƒø…ç¶ı%ƒøtƒø…Àt
-ë,ƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹ -б%f)Ù·É -à±%º×®¬]‰È÷êÁú‰ÈÁø)Âä±%’BÁà)Ѝ‚‰ÂÁâ Ð)Á‰È£à±%f‰б%…ÿ„̍€€€ źm¶‰È÷â‰È)ÐÑ草ÁÁé
-‰O¡ä±%ÀP‰ÐÁà)кè‰Ó™÷û’’’щW¡ä±%ÀP‰ÑÁá)ѺÓMb‰È÷êÁú‰ÈÁø‰Ó)Ëw¸ƒÞC÷î‰ÑÁù‰ðÁø)Á‰È؉‰óÁú‰ÙÁù)ʍ’’’’’’Áâ‰Ø)Ѝ€€€Áà‰G‹à±%’’’4Õ¹Á6ۉð÷é‰Ó3‰ÁÁù
-‰ð™‰È)Ћ -ä±%ɍ‘ÑÁâ)ʉÑÁá)эÈ鍃ø…ƒ=Ô±%…rUè¡Ø±%‰¡Ü±%‰B»@¹C°Ò‰Êî‰Úì¶ÈìÁàf¶Ñ зð·`»%9Æv%hf9#j_hx9#h9#èm%Ç$èmƒÄ·`»%)ó¯ȱ%·`»%‰Ø‰Ñº÷ñ‰Ãº °
-îì©t‹ -ȱ%;ÍÌÌ̉ð÷âÁê9Ós‰Ëu荛€€‹V‰Eä‰F¸¡/¸D÷mä‰ÑÁù‹EäÁø)Á‰ÈEè‹N¸¡/¸D÷éÁú‰ÈÁø)’’’’’’’’’Áâ )щN¡Ø±%€€€€€€Áà‰Eä‹ -ܱ%ºÓMb‰È÷êÁúÁù)ʋEäÐÅÿt ‰ð‹‰‹@‰G‰Øëv¸eô[^_]ÍvU‰åVSƒìŠEˆE÷ÿŒ^#ƒ=Œ^#uƒ=h^#tÿh^#¶E÷€Áຌ°%ƒ<uIÇö€°%tûƒì ¶]÷›Áã¾€°%ÿ43ÿ“„°%ƒÄöDtú¶E÷€Ç…Œ°%ÿp^#ƒ=Œ^#uƒ=l^#tÿl^#ÿ -Œ^#eø[^]ÍvU‰åWVSº¿Œ°%¾ˆ°%»„°%¹€°%’ÁàÇ8‰0ÇÇBƒú~ÜÇŒ^#[^_]ÐU‰åVS‹U‹] ‹uú’ƒ<…Œ°%t÷Æu¸ÿÿÿÿëH’ …ǁŒ°%û…Ût‰™„°%º€°%ˆ°%‰‰t
-됍’Ç…Œ°%¸[^]ÐU‰å¡Œ^#]ÉöU‰åSƒì¶ı%ƒøt!ƒø…Àt ë.‰öƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹ -б%f)Ù·É -à±%º×®¬]‰È÷êÁú‰ÈÁø)Âä±%’BÁà)Ѝ‚‰ÂÁâ Ð)Á‰ -à±%f‰б%ÿŒ^#ƒ=Œ^#uƒ=h^#tÿh^#¡Ü±%‰Ã$Å#º¡/¸D‰Ø÷êÁú‰ÙÁù)Êر%’’’’’’’’’Á⠉Ø)Уܱ%‹À±%ë$‹¡Ì±%‰‰̱%‰À±%ƒì ÿrÿRƒÄ‰Ú…Òt‹B ;ر%;ر%uƋB;ܱ%~»ƒ=Œ^#uƒ=l^#tÿl^#ÿ -Œ^#‹]üÉÃU‰åWVSƒì‹uhtÔ"j@èØ -ƒÄƒ>t,ƒì h™9#èß »ÿÿƒÄ¿@¹C°8‰ÊîˆØ‰úîëaƒì hµ9#è³ ‹N‰ -ȱ%ɍA‰ÂÁâ‰Ñ)ÁºÓMb‰È÷âƒÄ‰ÑÁéu¹f‰ -`»%‰Ë¿@¹C°4‰Êî‰úˆØî‰ØfÁèî‹£Ô±%ƒ=ÄA&~»A¹C°p‰ÊÚîîÆı%ë%Æı%»B¹C°°‰ÊÚîîºa°îº!ì%þî¹¾²%»²%ƒùbIÁà²%‰0I‰LÃAƒùc~ßÇH»%Ç̱%²%Çh^#Çl^#¡È±%€€€Áà£$Å#Çܱ%Çر%Çà±%Çä±%fÇб%ƒ=Ô±%uǤá#dË"Ǩá#üË"ëÇ¤á#LÌ"Ǩá#ØÒ"eô[^_]ÃU‰å‹E£h^#]ÍvU‰å‹E£l^#]ÍvU‰å‹E£x^#]ÍvU‰åWVSƒì ‹E‹U ‰Eè‰Uì¸ÿÿÿÿƒ=̱%tl‹ -̱%‹£Ì±%‹E‰A‹Eè‰A ‹Eì‰A‹E‰A»‹À±%}è‹uè됋…Òt‰ð;B  -;B u‹G;B~‰Óëâ‰ö…Ût‰ ë‰ -À±%‰‹AƒÄ [^_]ÐU‰å‹E¹‹À±%됉ы…Òt;Buó¸ÿÿÿÿ…Òt$…Éu
-‹£À±%됋‰¡Ì±%‰‰̱%¸]ÃU‰åWVSƒì,‹E‹U ‰Eè‰Uì¸ÿÿÿÿƒ=̱%„q‹5̱%‹£Ì±%‹E‰F‹Eè‰F ‹Eì‰F‹E‰Fº‹À±%}è‹Mè됋…Ût‰È;C  -;C u‹G;C~‰Úëâ‰ö…Òt‰2鐉5À±%ƒ=d»%…ôƒìEàPjè3óÿÿ‹À±%ƒÄ‹Eà;B  -;B u‹Eä;B~ÇEÜÇEØëK}؋À±%Mà‹B;A|‹B +Eà‰E؉Ћ@+Aë ¡À±%‹@ +EàH‰EØ¡À±%‹@+Eäʚ;‰G‹E؍€€€€€€Áà‰EԋMÜ¿ÓMb‰È÷ïÁúÁù)ÊUԍҍB‰ÂÁâ)‰Ð÷çÁê¸ðúðw¸ÈúÇv‰Ðº@îfÁèFeô[^_]ÃU‰åWVSƒì¶ı%ƒøtƒø…Àt
-ë,ƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹б%f)Ú·Ò‰Ö5à±%¹×®¬]‰È÷î‰ÑÁù‰ðÁø)Á -ä±%‰AÁà)ȍÁ‰ÁÁá ȉò)‰à±%f‰б%]荒’’ Õ¾m¶‰ð÷á‰Ö‰Ê)òÑê2‰ÁÁé
-¡ä±%ÀP‰ÐÁà)кè‰Ö™÷þ’’’щS¡ä±%ÀP‰ÑÁá)ѺÓMb‰È÷êÁú‰ÈÁø)‰Uè‹s¿ƒÞC‰ð÷ï‰ÑÁù‰ðÁø)Á‰ÈEè‰ðÁú‰ñÁù)ʍ’’’’’’Áâ)Ѝ€€€Áà‰Cƒ=À±%„/Çd»%‹À±%‹Eè;B ;B …Œ‹C;BŽ€ƒ=Œ^#uƒ=h^#tÿh^#ÿŒ^#‹À±%ë#‹¡Ì±%‰‰̱%‰À±%ƒì ÿrÿRƒÄ‰Ú…Òt‹B ;Eè -;EèűB;Eì~ă=Œ^#uƒ=l^#tÿl^#ÿ -Œ^#¶ı%ƒøt"ƒø …Àt -ë/vƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹б%f)Ú·Ò‰Ö5à±%¹×®¬]‰È÷î‰ÑÁù‰ðÁø)Á -ä±%‰AÁà)ȍÁ‰ÁÁá ȉò)‰à±%f‰б%]荒’’ Õ¾m¶‰ð÷á‰Ö‰Ê)òÑê2‰ÁÁé
-¡ä±%ÀP‰ÐÁà)кè‰Ö™÷þ’’’щS¡ä±%ÀP‰ÑÁá)ѺÓMb‰È÷êÁú‰ÈÁø)‰Uè‹s¿ƒÞC‰ð÷ï‰ÑÁù‰ðÁø)Á‰ÈEè‰ðÁú‰ñÁù)ʍ’’’’’’Áâ)Ѝ€€€Áà‰C‹À±%‹Mè;J 
-;J u;B~ÇEäÇEàëJ]à‹À±%Mè‹B;A|‹B +Eè‰Eà‰Ð‹@+Aë ¡À±%‹@ +EèH‰Eà¡À±%‹@+Eìʚ;‰C‹Eà€€€€€€‰ÆÁæ‹Mä»ÓMb‰È÷ëÁúÁù)ʍ2ҍB‰ÂÁâ)‰Ð÷ãÁê¸ðúðw¸ÈúÇv‰Ðº@îfÁèîÇd»%ë -‰öº@°î°ðîeô[^_]ÐU‰åVSƒì‹E»¹‹À±%ëv‰Ñ‹…Òt;Buó¸ÿÿÿÿ…Ò„I…Éu‹£À±%»ë‹‰¡Ì±%‰‰̱%ƒ=d»%…ƒ=À±%uº@°î°ðéû‰ö…Û„òƒìEðPjèºìÿÿ‹À±%ƒÄ‹Eð;B  -;B u‹Eô;B~ÇEìÇEèëJ]è‹À±%Mð‹B;A|‹B +Eð‰Eè‰Ð‹@+Aë ¡À±%‹@ +EðH‰Eè¡À±%‹@+Eôʚ;‰C‹E荀€€€€€‰ÆÁæ‹Mì»ÓMb‰È÷ëÁúÁù)ʍ2ҍB‰ÂÁâ)‰Ð÷ãÁê¸ðúðw¸ÈúÇv‰Ðº@îfÁèeø[^]Éöú‹D$¼(Õ#PèŒëÿÿ`fff f¨f¸0ŽØŽÀ° º î¡t^#@£t^#1ÛfŒÓü¡Ô±%ƒøtèùòÿÿëè6ùÿÿ°
-º îì¨t ¸@Pè–ÿÿÿf¡|^#f9‚^#t f£‚^#ÿ-~^#ƒ=x^#t‹x^#ÿÓf©f¡ffaωöU‰å‹EØf£‚^#f£|^#]Ã1ÀÈÃU‰åf¸0ŽØŽÀ‹Ef;‚^#t f£‚^#ÿ-~^#]ÉöU‰åƒìjjjj@èaƒÄÉÃU‰åWVSƒì ‹]‹u ‹}聉€:y"…Ût‹B8‰…öt‹BÁà
-‰…ÿt)‹B4‰ë"‰ö…ÛtÇ…öt‹BÁà
-‰…ÿtÇ@ƒ}t ‹BÁà
-‹U‰ƒÄ [^_]ÍvU‰åƒìjjjj@è̓Ä·@0ÉÃU‰å¡8\#]ÉöU‰å]ÍvU‰åSƒì‹8\#誃ì Sèucÿÿè ƒÄ‹]üÉÃU‰åWVS‹M ‹u‹}Š]‰ÈÁàeèÿÿ Eè‰ÈÁèUèˆBáÿbÿÿÿ J‰ðˆB‹Ef‰Eè‹EÁè‰EäŠEäƒà ÃË@¶ÃÁàbÿÿÿ Bçüÿ=*\#‹‰‹B‰G[^_]ÐU‰åWVSƒì ‹] ‹u‹}·EMè*\#‹‰‹@‰A‰Ê¶JÁá¶B ÁÁá·B Á…ÛtŠBƒà¶ÐÁâ·Eè Љ…ötŠE툅ÿt
-ŠEî%ðˆ‰ÈƒÄ [^_]ÉöU‰å‹E ¶UÁâ¹@_#fÇD
-8ƂE_#îƂD_#f‰
-Áèf‰D
-]ÍvU‰åº °îº!°@î°î°î°ÿ°°pî°î°î°ÿî]ÐU‰åº °îº!°î°î°î°ÿ°°pî°î°î°ÿî]ÐU‰å‹Mf…ÉtWfƒùw¸Óà
-ˆ^#ë7fƒùw<·Éƒé¸Óà
-‰^#¢‰^#º¡î<ÿu ˆ^#©uƒÈ¢ˆ^#º!î]ÃU‰å‹Mf…ÉtUfƒùw¸þÿÿÿÓÀ"ˆ^#ë5fƒùw:·Éƒé¸þÿÿÿÓÀ"‰^#¢‰^#º¡î ˆ^#©t%û¢ˆ^#º!î]ÉöU‰å¿|^#]ÃU‰åƒì‹Ef£|^#˜PèWüÿÿƒÄÉÐU‰å¿|^#]ÃU‰åƒì‹E‰Âf£|^#ƒ=Œ^#uƒì ¿ÂPèüÿÿƒÄÉÐU‰åWVì¾¹”^#ºÔ^#‰öµÇ”Ü"Ç”Ü"Fƒþ~åƒì EÈPèÅèºÇÀA&:#‹EÈ£ÄA&¶^#£ÈA&ƒÄ‹EУÐA&‹EÔ£ÔA&‹EØ£ØA&h=Þ"jè£ýÿÿƒÄhGÞ"jè”ýÿÿƒÄhQÞ"jè…ýÿÿƒÄhXÞ"jèvýÿÿƒÄh_Þ"jègýÿÿƒÄhfÞ"jèXýÿÿƒÄhmÞ"jèIýÿÿƒÄh³Þ"jè:ýÿÿƒÄhtÞ"jè+ýÿÿƒÄh{Þ"j èýÿÿƒÄh‚Þ"j
-è -ýÿÿƒÄh‰Þ"j èþüÿÿƒÄhÞ"j èïüÿÿƒÄh—Þ"j -èàüÿÿƒÄhžÞ"jèÑüÿÿƒÄh¥Þ"jèÂüÿÿƒÄh¬Þ"jè³üÿÿƒÄhlÝ"jAè¤üÿÿƒÄhtÝ"jBè•üÿÿƒÄh|Ý"jCè†üÿÿƒÄh„Ý"jDèwüÿÿƒÄhŒÝ"jEèhüÿÿƒÄh”Ý"jFèYüÿÿƒÄhœÝ"jGèJüÿÿƒÄh¤Ý"jpè;üÿÿƒÄh¬Ý"jqè,üÿÿƒÄh´Ý"jrèüÿÿƒÄh¼Ý"jsèüÿÿƒÄhÄÝ"jtèÿûÿÿƒÄhÌÝ"juèðûÿÿƒÄhÔÝ"jvèáûÿÿƒÄhÜÝ"jwèÒûÿÿf -4A&€¾ƒÄvÀÅ ½%ƒì jh‰hØPõ·ÀPèúÿÿƒÄ Fþš~ǃì hÐèFùÿÿƒÄÛãݵTÿÿÿ›¿@A&µTÿÿÿ¹üó¥ ÀƒÈ""ÀÛãèƒûÿÿèúÿÿeø^_]ÍvU‰åSƒìº!°ÿîè’ûÿÿ¹@ºC°6Êîîƒ=ÄA&~¹AºC°tî°‰Êî°ë»B¹C°°‰ÊÚîîºaî‹]üÉÃU‰å‹U‹E ‰•Ô^#]ÉöU‰å‹U‹E ‰•”^#]ÉöU‰åƒìhà9#è
-è— ƒÄÉÉöœX‰Á5PœX9ÈtQ¸Ã¸ÜX‰Á5 PœX1ÈtQ¸øÃf1Àžf¸f»öóŸ€üu¸øÃƐ^#Ûã¹âþfÇ’^#ZZÝ=’^#¹âþf¡’^#<u+Ù=’^#¹âþf¡’^#f%?fƒø?uƐ^#Ɛ^#Éö`¸ëp`¸ëh`¸ë``¸ëX`¸ëP`¸ëH`¸ë@`¸ë8`¸ ë0`¸
-ë(`¸ ë `¸ ë`¸ -ë`¸ë`¸ë ¨Pf¸0ŽÀŽØüX1ÛfŒÓP‹…”^#ÿÓ[° ƒûrº îº îf¡|^#f;‚^#t f£‚^#ÿ-~^#©¡aϸ鋸選ëz¸ës¸ël¸ëe¸ë^¸ëW¸ ëP¸
-ëI¸ ëB¸ ë;¸ -ë4¸ë-¸ë&¸ë` ¨f¸0ŽÀŽØüèש¡aÏPf¸0ŽØŽÀXfŒÓ‹=*\#ß1ۊŠ_Áãf‹_ÜfŒÒfŒÛŽÓSRPÿ…Ô^#ƒÄX[ŽÐ)ÜÏU‰åWVSƒì ‹u¸¹ ‰÷üó«è|ýÿÿ…ÀtÇëUèŠýÿÿ…Àt7ÇFǸ¢‰^‰N‰V …Àt+¸¢‰F‰^‰N‰V ëÇècýÿÿ…ÀtÇ ƒÄ [^_]ÍvU‰åWV¿_#È·À-yƒÀÁø9ÂtU¿_#@ÀÝ4Ō½%›È·À-yƒÀÁøf£_#¿5_#¿B&4v4ö4õŒ½%¹üó¥Ý%B&^_]ÉöU‰å¿_#]ÃU‰åWVSƒì(ŠM¡_#Áà ˜€ f¶nB&f£*Õ#f¶mB&f£,Õ#€ù t%€ù €ù„óé‰ö€ù
-„#é‰öfƒ*Õ#·*Õ#;pB&Œ½fÇ*Õ#·,Õ#¡tB&H9Â…¿¡pB&H‰Eì‰Uèf¾lB&Áâf‰Uò¡_#Áà °€ ¿;}è:¹;Mì*_ÿv‰ø¯pB&È·F‰Ø¯pB&Èf‰FA;Mì~ÜG;}è~ƹ;MìKWÿ‰Ð¯pB&Èf‹]òf‰FA;Mì~çé)‰öfÇ(Õ#·*Õ#‰Áƒø~ºƒÂ·ÂƒÀ9È|óf‰(Õ#f¡(Õ#f£*Õ#éævfÇ*Õ#·,Õ#¡tB&H9Â…¾¡pB&H‰Eà‰UÜf¾lB&Áâf‰Uæ¡_#Áà °€ ¿;}Ü=v¹;Mà*_ÿv‰ø¯pB&È·F‰Ø¯pB&Èf‰FA;Mà~ÜG;}Ü~ƹ;MàGWÿ‰Ð¯pB&Èf‹]æf‰FA;Mà~çé%‰öfÿ -*Õ#·*Õ#·,Õ#¯pB&ÂÆS fÿ*Õ#éõ‰ö·*Õ#·,Õ#¯pB&Ј Cfÿ*Õ#·*Õ#;pB&Ž¿fÇ*Õ#·,Õ#¡tB&H9Â…š¡pB&H‰EԉUÐf¾lB&Áâf‰UÚ¡_#Áà °€ ¿;}Ð=v¹;MÔ*_ÿv‰ø¯pB&È·F‰Ø¯pB&Èf‰FA;MÔ~ÜG;}Ð~ƹ;MÔ'Wÿ‰Ð¯pB&Èf‹]Úf‰FA;MÔ~çëfÿ,Õ#·5*Õ#·=,Õ#‰øf¯pB&f‰EΡ_#Áà fEÎfuλÔ°‰Úî¹Õ‰ÊŠEÎî°‰Úîf‹EÎfÁè‰Êî‰óˆnB&‰ø¢mB&ƒÄ([^_]ÐU‰åWVSƒì‹u‹} ‰øf¯pB&f‰Eò¡_#Áà fEòfuò»Ô°‰Úî¹Õ‰ÊŠEòî°‰Úîf‹EòfÁè‰Êî‰ð¢nB&‰úˆmB&ƒÄ[^_]ÍvU‰åS¹Ô°
-‰Êî»Õ‰ÚŠEî° ‰Êî‰ÚŠE î‹$ÉÍvU‰åWVSƒìf¾EÁàf‰Eò¡_#Áà ¸€ ‹]ë0‹M ;M(sÿ‰Ø¯pB&È·G‰ð¯pB&Èf‰GA;M~ÜC;]~ʋM ;MSÿv‰Ð¯pB&Èf‹]òf‰GA;M~çƒÄ[^_]ÍvU‰åWVSƒì ¡pB&H‰Eð‹tB&K‰]ìf¾lB&Áàf‰Eê¡_#Áà °€ ¿9ß<‰ö¹;Mð*_ÿv‰ø¯pB&È·F‰Ø¯pB&Èf‰FA;Mð~ÜG;}ì~ƹ;MðWÿ‰Ð¯pB&Èf‹]êf‰FA;Mð~çƒÄ [^_]ÍvU‰å·J‰pB&¶„@£tB&¶„ÿ ¢lB&¶P¢nB&¶Q¢mB&¶`¢/Õ#¶a¢.Õ#Ç_#Ç_#]ÃU‰åWVSƒì nB&¢P mB&¢Q¶ÀP¶nB&PèŠýÿÿ¶.Õ#¶5/Õ#ƒÄ¹Ô°
-‰Êî¿Õ‰úˆØî° ‰Êî‰ú‰ðîeô[^_]ÍvU‰åSƒì‹]€;tŠCƒì ¾ÀPèiùÿÿƒÄ€;ué‹]üÉÃU‰åVS‹E‰ÃÁã £_#¹Ô° -‰Êî¾Õ‰òˆØî° ‰Êî‰ØfÁè‰òî[^]ÃU‰åVS‹u‹_#Áâ»@Õ#¶nB&‰¹`Õ#¶mB&‰
-µŠ¢nB&Š
-¢mB&‰5_#[^]ÃU‰å¡_#]ÉöU‰å¡_#]ÉöU‰åWVSƒì ‹}f¾u Áæf¾E Ƌ]‹E9Ã3v‹M9ù#‰Ê¯pB&¡_#Áà ÐØf‰´€ A9ù~ÞC;]~ЃìÿuÿuèüÿÿŠE¢mB&ŠE¢nB&ƒÄeô[^_]ÍvU‰åWVSƒì ¡pB&H‰Eð‹=tB&Of¾lB&ÁãƒË ¾9Æ4¹9ù%v‰Ê¯pB&¡_#Áà Ððf‰œ€ A9ù~ÞF;uð~̃ìjjèûÿÿÆmB&ÆnB&ƒÄeô[^_]ÍvU‰åS‹U ‹]‹M¯pB&¡_#Áà ÂU”€ ˆ
-ˆZ‹$ÉÉöU‰åS‹E ‹]‹M‰Â¯pB&¡_#Áà ÂU”€ ¶B…Étˆ¶‰Â…Ûtˆ¾Â‹$ÉÐU‰åS‹E ‹MŠ]‰Â¯pB&¡_#Áà ÂU”€ €9tŠˆABˆB€9uò‹$ÉÐU‰åƒìh:#èTýÿÿôƒÄÉÉöU‰åƒìjèƒÄÉÉöU‰åƒìh4èƒÄÉÍvU‰åVS‹Ef£r¹d»þ¾v‰Êì©t Fþÿÿ~í¸@=Ÿ†~ø‰ÚˆÈö@=Ÿ†~øë‰öU‰åSƒìE Pÿuh€Õ#èX‰ÃÇ$€Õ#è¢üÿÿ‰ØƒÄ‹]üÉÃU‰åWVSìð‹} ŠEˆ…ÿÿÿEPÿuÿÿÿSè‰ÆS¾…ÿÿÿPWÿuè±þÿÿ‰ðƒÄ eô[^_]ÃU‰åSƒìE Pÿuh€×#謉ÃÇ$€×#è&üÿÿ‰ØƒÄ‹]üÉÃU‰åS‹M‹U ‰Ë€:tvŠˆBA€:uõƉ؋$ÉÍvU‰åVS‹]‹U ‹M‰Þë‰öŠˆBC€:t‰ÈI…ÀîƉð[^]ÐU‰å‹U‹M ë -¸€:tBAŠ:t)Ð]ÃU‰åS‹U‹] ‹M…Éëv¶¶Sÿ)Ð됊C8uíŠB„ÀtIu︋$ÉÐU‰å‹U¸€:tB@€:uù]ÍvU‰åS‹E‹] €8t‰Ú€:tŠv:
-tB€:uö@€8u下$ÉÉöU‰å‹E‹U €8t ‰ö8t @€8uö¸]ÍvU‰åS‹]‰Ú€;t‰öŠ
-AŸ<wAàˆB€:uì‰Ø‹$ÉÐU‰åS‹]‰Ú€;t‰öŠ
-A¿<wA ˆB€:uì‰Ø‹$ÉÐU‰åS‹U‹M ‰Ó€;tvB€:uú늈AB€9uõƉ؋$ÉÍvU‰åWVSƒì<‹u‹]ÇEèÇEäÇEàÇEÜÇEØÇEÔÇEпÇEÌÙîÝ]À‰uì‹E €8„D‹U €:%t…ÿuŠˆB‰U FÿEèév‹E €8%u%@‰E ¿ÇEä
-ÇEàÇEØÇE̋U ¾ƒè%ƒøS‡Ñÿ$…€)#‰öÆ%FÿEè鼃ÉòFŠCüˆÿEè驐ƒ}Øt"ƒ}؃}Øtëƒ}ØuƒÃ‹Cü‰EÔë -vƒÃ¿Sü‰Uԃì ÿuÌÿuäj
-VÿuÔè¾ éœƒ}Øt"ƒ}؃}Øtëƒ}ØuƒÃ‹Cü‰EÐë -vƒÃ·Sü‰UЃì ÿuÌÿuäj
-VÿuÐè.éPƒ}Øt"ƒ}؃}Øtëƒ}ØuƒÃ‹Cü‰EÐë -vƒÃ·Sü‰UЃì ÿuÌÿuäjVÿuÐèâ鐃ËCü‰EЃì jÿuäjVPèÂé䐃ËSü€:tŠˆBFÿE܀:uò‹UÜUèévƒ}Øtƒ}؃}Øtëƒ}Øu ƒÃÝCøÝ]ÀƒìÿuÌÿuàÿuäVÿuÄÿuÀèYë~vƒ}Øtƒ}؃}Øtëƒ}Øu ƒÃÝCøÝ]ÀƒìÿuÌÿuàÿuäVÿuÄÿuÀè} -ë>vƒ}Øtƒ}؃}Øtëƒ}Øu ƒÃÝCøÝ]ÀƒìÿuÌÿuàÿuäVÿuÄÿuÀèa‰EÜEèÆ¿ƒÄ é±ÇEØé¥ÇEØ陃MÌ鐍vƒMÌ鄍v¿ƒMÌëvƒÿu?ƒìEìPj
-ÿu èb
-‰EäƒÄ‹E €80u ÷EÌtƒMÌ됃MÌ‹UìJ‰U ë4vƒÿu,ƒìEìPj
-ÿu è
-‰Eà‹EìH‰E ¿ƒÄë‰ö¿ÿE ‹U €:…¼üÿÿÆ‹Eèeô[^_]ÉöU‰åƒì EPÿu ÿuè7üÿÿƒÄÉÉöU‰åWVSƒì,‹u‹} ‹]ÇEìÇEèÇEäÇEàÇEÜÇEØÇEÔÇEЉuð€?„>€?%tƒ}Ôu ŠˆGFÿEìëá€?%uGÇEÔÇEè
-ÇEàÇEоƒè%ƒøS‡çÿ$…Ð*#Æ%FÿEìéԃÉòFŠCüˆÿEìéÁƒ}àt&ƒ}àƒ}àt
-ë"ƒ}àt
-ëƒÃ‹CüëƒÃ‹CüëƒÃ¿Cü‰E܃ì ÿuÐÿuèj
-VÿuÜè鏐ƒ}àt&ƒ}àƒ}àt
-ë"ƒ}àt
-ëƒÃ‹CüëƒÃ‹CüëƒÃ·Cü‰E؃ì ÿuÐÿuèj
-ëBƒ}àt&ƒ}àƒ}àt
-ë"ƒ}àt
-ëƒÃ‹CüëƒÃ‹CüëƒÃ·Cü‰E؃ì ÿuÐÿuèjVÿuØè6‰EäEìÆÇEÔƒÄ éҍvƒÃ‹Sü€:tŠˆBFÿEä€:uò‹EäEì飍vÇEàé›ÇEà鏃MÐ醍vƒMÐë}‰öÇEÔƒMÐënvƒ}Ôu6ƒìEðPj
-W蓉EèƒÄ€?0u ÷EÐtƒMÐ됃MЋ}ðOë1‰öƒ}Ôu)ƒìEðPj
-WèW‹}ðOÇEÔƒÄë
-vÇEÔGé¼ýÿÿvÆ‹Eìeô[^_]ÉöU‰åƒì EPÿu ÿuèGýÿÿƒÄÉÉöU‰åWVSƒì,‹}‹uÇEèÇEäÇEàÇEÜÇEØ»‰}ì饐‹U €:%t…Ûu B‰U 鏍v‹E €8%u%@‰E »ÇEäÇEàÇEÜÇE؋U ¾ƒè*ƒøN‡Eÿ$… ,#‰öƒû…8ƒìEìPj
-ÿu èN‰E܃MØ‹EìH‰E ƒÄéŠGƒÆ‹^üˆëÝØÿEèéõƒÆ‹^üëG€?tƒì ¾PèBƒÄ…ÀuçÇEÔë#‰ö÷EØuŠˆCë‹UÜ9UÔ}ŠˆCÿEÔG€?tƒì ¾PèþƒÄ…ÀtÇÆ덉öƒìh(:#Wè&÷ÿÿ‰ÇƒÄ EìPj
-WèՉ‹}ìƒÄƒ}à…Wƒ}ät)ƒ}ä ƒ}ätéCÿÿÿƒ}ä…9ÿÿÿƒÆ‹Fü‰é,ÿÿÿƒÆ‹Füf‰éÿÿÿ‰öƒìh5:#Wè¶öÿÿ‰ÇƒÄ EìPj
-됃ìh@:#Wèšöÿÿ‰ÇƒÄ EìPjWè ‹}ìƒÄƒ}à…̓}ät+ƒ}ä -ƒ}äté¹þÿÿ‰öƒ}ä…­þÿÿƒÆ‹Vü‰é þÿÿƒÆ‹Vüf‰é‘þÿÿ‰öƒìhX:#Wè*öÿÿ‰ÇƒÄEìPWè;‹}ìƒÄƒ}àu`ƒ}ät)ƒ}ä ƒ}ätéMþÿÿƒ}ä…CþÿÿƒÆ‹FüÝé8þÿÿƒÆ‹FüÙé*þÿÿvÇEäë vÇEäëvÇEàëÝؐ»ÿE ‹E €8…Pýÿÿ‹Eèeô[^_]ÐU‰åƒì EPÿu ÿuèïüÿÿƒÄÉÉöU‰åWVSƒì,‹u ÇEп‹Eƒð‰EԋU‰U̅Òy‰Ñ÷ىM̃}y ‹E…Ày÷Ø됋E÷EÔu ƒ}yƒ}yGƒ}u‹EÐÆD(Ø0@‰EÐë8v…Àt1U؉Uȉöƒì º÷ủÃRèI‹MȋUЈ
-B‰UЉ؃Ä…Àu×}ЋEԃàƒøu‰ú;}} -‰öÆ FGB;U|õƒ}y ƒ}yÆ-ë ÷EÔtÆ+F‹Eԃàƒøu‰ú;}} Æ0FGB;U|õ‹UÐJx M؊
-ˆFJy÷‹Eԃàƒøu‰ú;}} Æ FGB;U|õƉøeô[^_]ÃU‰åƒì‹Eÿuÿu÷ØPÿu ÿuèŸþÿÿƒÄ ÉÉöU‰å‹E…Ày÷Ø]ÉöU‰åSƒì‹]èÁîÿÿƒì SèE ÿÿU‰åWVSƒì‹M‹} ÙîÙÀÙ軀9-u ¾ÿÿÿÿë
-‰ö¾ëA€90túŠƒè0< w(Ý`-#ëÙˍv¾ƒè0AÜËÙËPÚ$XŠƒè0< vâÝۀ9.u9AŠƒè0< w/Ý`-#ëÙÉÙʉö¾ƒè0AÜÊÙÊPÚ$ÙÉXØʊƒè0< vÝÝÚÙÉÞùÞÁVÚ $^€9et €9E…“A€9-u
-¾ÿÿÿÿAë‰ö€9+u ¾Aëv¾Šƒè0< weÝ`-#¾ƒê0A·ÃÙÀPÚ $Ù}ð‹]ðÆEñ Ùmð‰]ðÛ]ìÙmð‹Eì·À‰$Û$‰$Ú$ZÙ}ð‹UðÆEñ Ùmð‰UðÛ]ìÙmð‹Eì‰ÃŠƒè0< v£Ý؅ö~!ºf…Ût4Ý`-#·Ã‰öÜÉB9Â|ùëvº·Ã‰Ã9Â}Ý`-#ÜùB9Ú|ùÝ؅ÿt‰ƒÄ[^_]ÐU‰åWVSƒì ‹]‹} ÇE쾀;-u ÇEðÿÿÿÿCë‰ö€;+u ÇEðCëÇEð€;0u>C€;0túë6ƒì ¾PCè‰ÂƒÄ9ú…Òy
-¸ëEv‰ð¯÷Ö9ð~ÇEìƒìW¾P聃ąÀu¶ƒ}t‹E‰ƒ}ìt¾ÿÿÿ¯uð‰ðeô[^_]ÉöU‰åWVSƒì ‹]‹} ÇEð¾€;0uC€;0tú€;xuKƒÿuFC€;0u@‰öC€;0túë6ƒì ¾PCè_‰ÂƒÄ9ú…Òy
-¸ëAv‰ð¯÷Ö9ðvÇEðƒìW¾PèуÄ…Àu¶ƒ}t‹E‰ƒ}ðt¾ÿÿÿ‰ðeô[^_]ÉöU‰åŠUBÐ< w ¾Âƒè0ë&vB¿<w ¾Âƒè7됍BŸ<w ¾ÂƒèW됾Â]ÍvU‰å‹Uƒú w B0¾À됍BöƒøwB7¾Àë¾Â]ÍvU‰åŠUƒê0¸€ú –À]ÉöU‰åŠUBÐ<vBŸ<w¸ë¸]ÐU‰åŠU€ú/~‹E  _#:Pÿ¸ë¸]ÐU‰åŠUBŸ<w Bà¾Àëv¾Â]ÍvU‰åŠUB¿<w B ¾Àëv¾Â]ÍvU‰åVS¾ƒì ¾]Sè%ƒÄ…Àuƒì Sè5ÿÿÿƒÄ…Àt¾‰ðeø[^]ÃU‰åŠUƒêA¸€ú9–À]ÉöU‰å¸€}/žÀ]ÍvU‰åŠUƒêa¸€ú–À]ÉöU‰åŠUB÷<v
-¸€ú u¸]ÉöU‰åŠUƒêA¸€ú–À]ÉöU‰åWVSƒì ÝEÝUè‹]‹}ÇEäSd$øÝ$èoƒÄ…Àtƒì Sè·îÿÿƒÄéPvÙîÝEèÚéßà€äE€üu Æ-C€uï€ë÷EtÆ+CÿEäÝh-#ÝEèÚéßà€äE€üuÆ0ÆC¸éû‰öÙèÝEèÝáßà€äE€üu3¾Ýéßà€äE€üuHÝx:#ÝEèØÉÝUèNÝêßà€äE€ütëÝØë)vÝØÝؾÝx:#ÝEèë ÝEèØñÝUèFÝéßàöÄtîÝ؃ì Vè÷ùÿÿƒÄƒøc~ƒïë‰öƒø ~ƒïë‰ö…ö~Oƒì‹EƒÈPÿuWSÿuìÿuèèUEäƒÄ …öu‹Eäë;‰ö]äÆeCƒì jºgfff‰ð÷êÁú‰ðÁø)ƒÂRj
-SVè\ùÿÿ‹UäD‰EäƒÄ eô[^_]ÍvU‰åWVSìŒÝEݝþÿÿ‹]Dž€þÿÿ½¸þÿÿ¹K¸üó«ƒìSÿµ”þÿÿÿµþÿÿ貃ąÀtƒì SèúìÿÿƒÄé‰öÙî݅þÿÿÚéßà€äE€üuÆ-C€µ—þÿÿ€ëv÷Et
-Æ+Cÿ…€þÿÿƒì…˜þÿÿPÿµ”þÿÿÿµþÿÿèþݝpþÿÿ‹…pþÿÿ‹•tþÿÿ‰Æ‰×DžŒþÿÿƒÄ݅˜þÿÿÙèÙÉÝáßàöÄ…ø重vh$@jÿµœþÿÿÿµ˜þÿÿè$݅˜þÿÿÜ5p-#ݝ˜þÿÿÙ½´þÿÿ‹´þÿÿƅµþÿÿ Ù­´þÿÿ‰´þÿÿß½¨þÿÿÙ­´þÿÿ‹…¨þÿÿ‰$èûÿÿ‹•Œþÿÿˆ„*¸þÿÿB‰•ŒþÿÿƒÄ݅˜þÿÿÙèÙÉÚéßàöÄ„oÿÿÿ‹•Œþÿÿ•€þÿÿ‰ÑI…¸þÿÿ‰…|þÿÿë‰ö‹•|þÿÿŠˆCI‹•Œþÿÿƒê‰ÐÁèH!Â9Ñ}ޅÉx‹Œþÿÿƒéx
-vÆ0CIyùÆëÝØÝØÆ0Cÿ…€þÿÿÝ€:#‰µpþÿÿ‰½tþÿÿ݅pþÿÿÚéßàöÄE…\‹E@9…€þÿÿLÆ.Cÿ…€þÿÿ‹Eƒà‰…ˆþÿÿDž„þÿÿDžŒþÿÿv‰µpþÿÿ‰½tþÿÿ݅pþÿÿ܈:#Ü -p-#ݝpþÿÿ‹µpþÿÿ‹½tþÿÿƒì…˜þÿÿPWVèݝpþÿÿ‹•pþÿÿ‹tþÿÿ‰Ö‰Ï݅˜þÿÿÙ½´þÿÿ‹´þÿÿƅµþÿÿ Ù­´þÿÿ‰´þÿÿ۝¤þÿÿÙ­´þÿÿ‹…¤þÿÿƒÄ…Àtƒ½ˆþÿÿu
-Džˆþÿÿƒì PèÓùÿÿˆCÿ…€þÿÿÿ…ŒþÿÿƒÄƒ½ˆþÿÿt‹E9…Œþÿÿ~
-Dž„þÿÿ‹•€þÿÿ9U}
-Dž„þÿÿƒ½„þÿÿ„ýþÿÿKë
-‰öÿ€þÿÿ‰Ã€;0u Cÿ€{ÿ.uêCÆ‹…€þÿÿeô[^_]ÃU‰åWVSƒì‹]‹u ‹}WVSèZƒÄ…Àtƒì Wè¢éÿÿƒÄéñ‰öÙî‰]è‰uìÝEèÝáßàÝـäE€üuÙàëvÝ؉]è‰uìÝEèÝx-#ÙÉÝáßàÝـäE€üuÝØÆ0ÆG¸雺ÙèÙÉÝáßà€äE€üu/Ýáßà€äE€üu?Ýx:#ëÙɐÜÉÙÉJÝâßà€äE€ütìÝØëvÝÙÝx:#ë‰öØñÙÉBÙÉÝáßàöÄtðÝØÝ؍BƒøvƒìÿuÿuÿuWVSèÔùÿÿë‰öƒìÿuÿuÿuWVSèXûÿÿƒÄ eô[^_]ÐU‰åƒìSÙ}ü›f‹Eüf -? f‰EøÙmø›ÝEÙüÝ]ð›‹Uð‹Mô‹]‰‰KÝEÜeðeì›ÛâÙmü›[ÉÍvU‰åƒì‹E‹U ‰Eø‰Uü‹MUøf‹BfÁè%ÿ=ÿt¸ëk÷Bÿÿuƒ:t…Étƒìh:#QèDçÿÿƒÄ¸ë@‰ö€zy…Étƒìh”:#Qè çÿÿƒÄ¸ë‰ö…Étƒìh™:#QèçÿÿƒÄ¸ÉÃU‰åƒì¸€Ù#ƒ=,_#tÿ,_#ÉÃU‰å‹E£,_#]ÍvU‰åƒì‹E‹U ‰Eø‰UüUø¹f‹BfÁè%ÿ=ÿu÷Bÿÿuƒ}øt¹‰ÈÉÉöU‰åSƒì‹E ‹]ÆPè‰âÿÿ‰ØƒÄ‹]üÉÍvU‰åVSƒì ÝEÝUð‹]‹uVSd$øÝ$èvÝ]èƒÄƒ=0_#ÿtWƒìVSèYÿÿÿƒÄ…ÀuFƒìÿuôÿuðèDÿÿÿƒÄ…Àu1Ùî‰]à‰uäÝEàÚéßà€äE€ô@uƒì jVSÿuôÿuðè8ƒÄ ëvÝEèeø[^]ÉöÝD$ ÝD$Ùø›ßàžzøÝÙͶ¼'U‰åVSƒì0ÝE‹]‹u‹EÝUà‰]è‰uìPÿú‡Èÿ$•-#ÝØÇEغž:#ƒøc~º£:#‰UÜÇEðÇEôƒ=0_#„}ƒì EØP誃ąÀ…uƒ=0_#…Yƒìjh©:#éëvÝØÇEغ½:#ƒøc~ºÂ:#‰UÜÇEðÇEôƒ=0_#„ƒì EØPè>ƒÄ…À… ƒ=0_#…íƒìjhÈ:#év‰]à‰uäÝ]èÇEغÜ:#ƒøc~ºâ:#‰UÜÇEðÇEôƒ=0_#„žƒì EØPè˃ąÀ…–ƒ=0_#…zƒìjhé:#é ÝØÇEغþ:#ƒøc~º;#‰U܃=0_#uÇEðàÇEôÿÿïGé¸ -¡$_#‹(_#‰Eð‰Uôé¡ -‰öÝØÇEغ’<#ƒøc~º˜<#‰U܃=0_#uÇEðàÇEôÿÿïGéh -¡$_#‹(_#‰Eð‰UôéQ -‰öÝØÇEغ ;#ƒøc~º;#‰U܃=0_#uÇEðàÇEôÿÿïGé -¡$_#‹(_#‰Eð‰Uôé -‰öÝØÇEغ ;#ƒøc~º;#‰UÜÇEðÇEôéÑ ‰öÝØÇEغ—5#ƒøc~º;#‰U܃=0_#uÇEðàÇEôÿÿïÇë¡$_#‹(_#ò€‰Eð‰Uôƒ=0_#„óƒì EØPè ƒÄ…À…ëƒ=0_#…σìjh;#éaÝØÇEغ—5#ƒøc~º;#‰U܃=0_#uÇEðàÇEôÿÿïÇë¡$_#‹(_#ò€‰Eð‰Uôƒ=0_#„gƒì EØP蔃ąÀ…_ƒ=0_#…Cƒìjh;#éÕ -ÝØÇEغX5#ƒøc~º*;#‰U܃=0_#uÇEðàÇEôÿÿïÇë¡$_#‹(_#ò€‰Eð‰Uôƒ=0_#„Û -ƒì EØPèƒÄ…À…Ó -ƒ=0_#…· -ƒìjh.;#éI -ÝØÇEغX5#ƒøc~º*;#‰U܃=0_#uÇEðàÇEôÿÿïÇë¡$_#‹(_#ò€‰Eð‰Uôƒ=0_#„O -ƒì EØPè| -ƒÄ…À…G -ƒ=0_#…+ -ƒìjh.;#é½ ÝØÇEغ@;#ƒøc~ºC;#‰U܃=0_#uÇEðàÇEôÿÿïÇë¡$_#‹(_#ò€‰Eð‰Uôƒ=0_#„à ƒì EØPèð ƒÄ…À…» ƒ=0_#…Ÿ ƒìjhG;#é1 ÝØÇEغ@;#ƒøc~ºC;#‰U܃=0_#uÇEðàÇEôÿÿïÇë¡$_#‹(_#ò€‰Eð‰Uôƒ=0_#„7 ƒì EØPèd ƒÄ…À…/ ƒ=0_#… ƒìjhG;#é¥ ÝØÇEغY;#ƒøc~º`;#‰U܃=0_#uÇEðàÇEôÿÿïGéP ¡$_#‹(_#‰Eð‰Uôé9 ‰öÝØÇEغY;#ƒøc~º`;#‰U܃=0_#uÇEðàÇEôÿÿïGë¡$_#‹(_#‰Eð‰Uôƒ=0_#„a ƒì EØPèŽ ƒÄ…À…Y ƒ=0_#…= ƒìjhh;#éÏ
-vÝØÇEغ|;#ƒøc~º€;#‰U܃=0_#uÇEðàÇEôÿÿïÇë¡$_#‹(_#ò€‰Eð‰Uôƒ=0_#„å ƒì EØPè ƒÄ…À…Ë
-ƒ=0_#…¯
-ƒìjh…;#éA
-ÝØÇEغ|;#ƒøc~º€;#‰U܃=0_#uÇEðàÇEôÿÿïÇë¡$_#‹(_#ò€‰Eð‰Uôƒ=0_#„G
-ƒì EØPèt
-ƒÄ…À…?
-ƒ=0_#…#
-ƒìjh–;#éµ ÝØÇEغ©;#ƒøc~º¯;#‰U܃=0_#uÇEðàÇEôÿÿïÇë¡$_#‹(_#ò€‰Eð‰Uôƒ=0_#„Íƒì EØPèè ƒÄ…À…³ ƒ=0_#…— ƒìjh¶;#é) ÝØÇEغ©;#ƒøc~º¯;#‰U܃=0_#uÇEðàÇEôÿÿïÇë¡$_#‹(_#ò€‰Eð‰Uôƒ=0_#„/ ƒì EØPè\ ƒÄ…À…' ƒ=0_#… ƒìjhÉ;#靐ÝØÇEغÞ;#ƒøc~ºâ;#‰UÜÇEðÇEôƒ=0_#… ƒì EØPèòƒÄ…À…½ƒìjhç;#jèÚõÿÿèaõÿÿÇ!ƒÄ降vÇEغÞ;#ƒøc~ºâ;#‰U܃=0_#uvÇEðàÇEôÿÿïG‰]ЉuÔÝEÐÜ -H=#Ý]Ћ]ЋuÔÙîÙÉÚéßà€äE€ü…¯ƒìVSèjƒÄ‰]ЉuÔÝEÐÙÉÚéßà€äE€ü@„‡ÇEðàÇEôÿÿïÇét¡$_#‹(_#‰Eð‰Uô‰]ЉuÔÝEÐÜ -H=#Ý]Ћ]ЋuÔÙîÙÉÚéßà€äE€ü…6ƒìVSèñƒÄ‰]ЉuÔÝEÐÙÉÚéßà€äE€ü@„¡$_#‹(_#ò€‰Eð‰UôéòvÝØÇEغÞ;#ƒøc~ºâ;#‰UÜÇEðÇEôéÁ‰öÝØÇEغÞ;#ƒøc~ºâ;#‰U܃=0_#uÇEðÇEôë¡$_#‹(_#ò€‰Eð‰Uôƒ=0_#„ãƒì EØPèƒÄ…À…Ûƒ=0_#…¿ƒìjhÿ;#éQÝØÇEغÞ;#ƒøc~ºâ;#‰U܃=0_#uÇEðÇEôëÇEðÇEôøƒ=0_#„`ƒì EØP荃ąÀ…Xƒ=0_#…<ƒìj h =#éΉöÇEغ<#ƒøc~º<#‰U܃=0_#u6ÙîÙÉÚéßàöÄEuÇEðàÇEôÿÿïGém‰öÇEðàÇEôÿÿïÇéX‹ -$_#‹(_#‰Mð‰]ôÙîÙÉÚéßàöÄE„4‰È‰Úò€‰Eð‰UôéÝØÇEغ$<#ƒøc~º)<#‰U܃=0_#uÇEðÇEôëÇEðÇEôøƒ=0_#„Lƒì EØPèyƒÄ…À…Dƒ=0_#…(ƒìjh/<#麉öÇEغC<#ƒøc~ºH<#‰U܃=0_#uÝ]ðëÝØÇEðÇEôøƒ=0_#„Òƒì EØPèÿƒÄ…À…ʃ=0_#…®ƒìjhN<#é@ÝØÇEغc<#ƒøc~ºm<#‰UÜÇEðÇEôøƒ=0_#„iƒì EØP薃ąÀ…aƒ=0_#…Eƒìjhx<#é׍vÝØÇEغ‘<#ƒøc~º—<#‰UÜÇEðÇEôøƒ=0_#„ýƒì EØPè*ƒÄ…À…õƒ=0_#…Ùƒìjhž<#ékvÝØÇEغ³<#ƒøc~º¹<#‰UÜÇEðÇEôøƒ=0_#„‘ƒì EØP较ąÀ…‰ƒ=0_#…mƒìjhÀ<#éÿvÇEغ³<#ƒøc~º¹<#‰UÜÜ5P=#Ý]ðƒ=0_#„,ƒì EØPèYƒÄ…À…$ƒ=0_#…ƒìjhÕ<#隉öÇEغè<#ƒøc~ºî<#‰U܋ -$_#‹(_#‰Mð‰]ôÙîÙÉÚéßàöÄEtC‰È‰Úò€‰Eð‰Uôë1‰öÇEغè<#ƒøc~ºî<#‰U܍d$øÝ$jjè›Ý]ðƒÄƒ=0_#…jé|vÝØÇEغõ<#ƒøcŽ•ºø<#鋍vÝØÇEغ—5#ƒøc~uº;#ën‰öÝØÇEغ =#ƒøc~Yº=#ëR‰öÝØÇEغX5#ƒøc~=º*;#ë6‰öÝØÇEغ=#ƒøc~!º=#ë‰öÝØÇEغ@;#ƒøc~ºC;#‰UÜÇEðÇEôƒ=0_#„¯ƒì EØPèʃąÀ…•ƒ=0_#…‹ƒìjÿuÜjè§îÿÿƒÄ jhü<#jè–îÿÿƒÄëfÝØÇEغZ;#ƒøc~ºa;#‰U܃=0_#uÇEðàÇEôÿÿïGë¡$_#‹(_#‰Eð‰Uôƒ=0_#tƒì EØPè2ƒÄ…À…ýè²íÿÿÇ"éívÝØÇEغZ;#ƒøc~ºa;#‰U܃=0_#uÇEðàÇEôÿÿïGë¡$_#‹(_#‰Eð‰Uôƒ=0_#„‰ƒì EØP趃Ä…À…ƒ=0_#uiƒìjhi;#jè•íÿÿƒÄëSÇEغÞ;#ƒøc~ºâ;#‰UÜÝ]ðƒ=0_#ÿt ƒ=0_#uÇEðÇEôð?ë$‰öƒì EØPè@ƒÄ…ÀuèÄìÿÿÇ!ëÝØÝEðeø[^]ËT$â€‹D$%ÿÿÿ ЉD$ÝD$ÉöU‰å¸]ÉöÝD$ÙüÉö¼'U‰åWVSƒì ‹E ‰EðEƒEðƒeðøƒàø‰Eì‹Eð9EìsƒìjUhX=#hb=#è˜ ƒÄ‹Eð9Eì„Ä‹E‹…Û„·‹C;C rƒìj`hX=#hm=#è` ƒÄöCtƒìjahX=#h =#èC ƒÄöC tƒìjbhX=#hà=#è& ƒÄ‹Eì;CvL‹Eð;C sD‰Æ‹}ì;ss‹s;{ v‹{ 9÷wƒìjnhX=#h=#èæ ƒÄƒì‰ø)ðPVÿu蚃ċ…Û…Iÿÿÿeô[^_]ÐU‰åWVSƒì ‹u ‹E‹}‰ÂUƒÀƒàøƒâø9†ŒÇF‰F‰V ‹E‰F‰~ÇF‹MëF‰ö9óuƒìjlh>#h>#èX ƒÄ‹F ;Cv‹F;C sƒìjmh>#h@>#è1 ƒÄ‰Ù‹…Ût9{±9{u‹S +S‹F +F9Âwœ‰‰1eô[^_]ÃU‰åWVSƒì ‹]‹} …ÛuƒìjLhm>#hu>#èÙ
-ƒÄ…ÿuƒìjMhm>#h~>#è¾
-ƒÄƒÇƒçø‹3…ö„rvƒ~uƒ~t‹F;FsƒìjUhm>#hÀ>#è€
-ƒÄƒ~t‹F;F rƒìjUhm>#h ?#è[
-ƒÄ‹F +F9FvƒìjUhm>#h`?#è9
-ƒÄ‹F÷ЅE…åF‰Eð‹^…Û„ԍv÷Ãtƒìj^hm>#h ?#èø ƒÄöCtƒìj_hm>#hà?#èÛ ƒÄƒ;t9wƒìj`hm>#h @#è» ƒÄ;^ rƒìjahm>#h–>#èŸ ƒÄ9{rGv‹‰‹C)ø‰B‹Eð‰ë
-v‹‹Uð‰9~sƒìjwhm>#h­>#è\ ƒÄ)~‰Øë‰ö‰]ð‹…Û…/ÿÿÿ‹6…ö…‘þÿÿ¸eô[^_]ÃU‰åƒì jÿjÿuÿuÿuÿu ÿuèƒÄ ÉÐU‰åWVSƒì‹]‹EE ‰Eð…ÛuƒìjThI@#hu>#èۃă} uƒìjUhI@#h~>#较ċ;…ÿ„lƒuƒt‹G;Gsƒìj[hI@#hÀ>#舃ăt‹G;G rƒìj[hI@#h ?#ècƒÄ‹G +G9Gvƒìj[hI@#h`?#èAƒÄ‹G÷ЅE…á‹Uð9WƒÕ‹M9O †ÉG‰Eì‹_…Û„¸v÷ÃtƒìjkhI@#h ?#èèƒÄöCtƒìjlhI@#hà?#è˃ă;t9wƒìjmhI@#h @#諃Ä;_ rƒìjnhI@#h–>#菃ċU 9S‚$‰Þ;]s‹u¹;M}ºÓâ‹E1ð…ÂtÖA;M|è‰ð)ØE ;C‡è‹M 1;Eð‡æ‰ðƒàø‰Eè9Øsƒìh‘hI@#hT@#èƒÄ9]èvC‹Uè)ډUä÷Âtƒìh–hI@#h€@#èãƒÄ‹‹M艋C+Eä‰A‹Eä‰C‰]ì‰ðƒà‹U Tƒâø‰U ‹Mè9Qv‰ÊU ‹‰‹A+E ‰B‹Eì‰ë
-‹Uè‹‹M쉋E 9Gsƒìh´hI@#h­>#èkƒÄ‹U )W‰ðë‰ö‰]ì‹…Û…Kþÿÿ‹?…ÿ…•ýÿÿ¸eô[^_]ÃU‰åƒì jÿjjj ÿu hÿuèýÿÿƒÄ ÉÐU‰åWVSƒì‹]Sh²@#èaÌÿÿ‹3ƒÄ…ö„ƒìÿvÿvÿv‹F +FPÿv ÿvh@A#è1ÌÿÿƒÄ ƒ~uƒ~t‹F;FsƒìjahÄ@#hÀ>#袃ă~t‹F;F rƒìjahÄ@#h ?#è}ƒÄ‹F +F9FvƒìjahÄ@#h`?#è[ƒÄ¿‹^…Û„¾ƒì ÿ3ÿs‰ØCPSh€A#è“ËÿÿƒÄ ÷ÃtƒìjihÄ@#h ?#èƒÄöCtƒìjjhÄ@#hÀA#èóƒÄƒ{wƒìjkhÄ@#hË@#èփă;t9wƒìjlhÄ@#h @#趃Ä;^ rƒìjmhÄ@#h–>#蚃Ä{‹…Û…BÿÿÿƒìWhç@#èàÊÿÿƒÄ9~tƒìjshÄ@#hú@#è`ƒÄ‹6…ö…cþÿÿƒì hA#èªÊÿÿƒÄeô[^_]ÍvU‰åWVSƒì ‹u‹] ‰ßƒçø…öuƒìjNh[=#hu>#è ƒÄ…ÛuƒìjOh[=#hòA#èñƒÄƒ}uƒìjPh[=#h~>#èԃĉ؃à‹UTƒâø‰U‹ëv‹…ÛuƒìjXh[=#hýA#螃ă{uƒ{t‹C;CsƒìjYh[=#hÀ>#èsƒÄƒ{t‹C;C rƒìjYh[=#h ?#èNƒÄ‹C +C9CvƒìjYh[=#h`?#è,ƒÄ;{‚hÿÿÿ;{ ƒ_ÿÿÿ‹EC‹C +C9Cvƒìjbh[=#h`?#èòƒÄÇEð‹sëv‰uð‹6…öt9þróƒ}ðtm‹Eð@9ørc9øtƒìjnh[=#h B#諃ąöt8‹U:9ðr.9ðtƒìjuh[=#h`B#肃ċEF‹UðB‹‰ëE‹E‹UðBë9ƒ}ðt
-‹Eð‰8ëv‰{…öt‹U:9ðr‰ÐF‰G‹‰ë ‹E‰G‰7eô[^_]ÃU‰åƒì hÿu ÿuèÒýÿÿƒÄÉÐU‰å‹EÇ]ÉöU‰åWVSƒì ÇEèÇEìÇEð‹E‹0…ö„Zƒ~uƒ~t‹F;Fsƒìj]h†B#hÀ>#蠃ă~t‹F;F rƒìj]h†B#h ?#è{ƒÄ‹F +F9Fvƒìj]h†B#h`?#èYƒÄÿEð¿‹^…Û„¨v÷Ãtƒìjdh†B#h ?#è$ƒÄöCtƒìjeh†B#hÀA#èƒÄƒ{wƒìjfh†B#hË@#èêƒÄƒ;t9wƒìjgh†B#h @#èʃÄ;^ rƒìjhh†B#h–>#讃ÄÿEì{‹…Û…[ÿÿÿ9~tƒìjnh†B#hú@#肃Ä‹FEè‹6…ö…§þÿÿƒì ÿuìÿuðÿuèÿuh B#èºÆÿÿƒÄ eô[^_]ÍvU‰åVS‹u‹] EƒìPÿuh Ù#èÈÿÿƒÄh Ù#ÿ5àá#jSVh C#è5ƒÄ eø[^]ÍvU‰åƒìÿ5Ìá#jÿuÿu ÿuhàB#èƒÄ ÉÉöU‰åƒì E Pÿuh Ý#èÈÿÿƒÄ jjhh$#èè%ÿÿƒÄh Ý#hƒC#è†ÅÿÿÇ$MèBÿÿƒÄÉÐU‰åƒìh Ý#h`C#è_ÅÿÿƒÄÉÉöU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)л¤â#‰]ð‹´ÃЃùÿtCI‰ÐÁà)Ð;´ÃÐr0»¨â#‰Ï‰ÐÁà)ЋLÃPƒùÿtI‰ÐÁà)ЋUð;´ÂÐsՃÿÿt‰ÐÁà)ЋU‰Åøâ#ë
-‰ö‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰Åüâ#ë
-‹E‹U ‰B‹E@‰ÐÁà)ЍÅP‰ˆ¨â#‰¸¬â#ƒÄ[^_]ÍvU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)ÐÁà‹xå#‰U苀|å#‰Eìƒùÿtw ‰ÆȉÂÁâ)‹Eè‰Ã;Õxå#|[‰Eäv1‰ÐÁà)ЍÅ;šxå#u ‹Eì;‚|å#|1‰Ï‰ÐÁà)Ћ Åøâ#ƒùÿt4 1‰ÐÁà)Ћ]ä;Åxå#}«ƒÿÿt‰ÐÁà)ЋU‰Åøâ#ë‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰Åüâ#ë
-‹E‹U ‰B‹E@‰ÐÁà)ЍÅP‰ˆ¨â#‰¸¬â#ƒÄ[^_]ÍvU‰å‹EÇÿÿÿÿÇ@ÿÿÿÿ]ÍvU‰åWVS‹uv‰ÐÁà)ЍÅP‹˜¬â#¿¨â#‹ 8ƒûÿt[‰ÐÁà)ЉLÇPëv‹E ‰ƒùÿt&I‰ÁÁá)Á»¬â#v‰ÐÁà)ЋDÃP‰DËPë v‹E ‰X[^_]ÐU‰åS‹M‹‰Øƒûÿt=‹@‰ÂÁâ)‹Õøâ#‰ƒøÿt@‰ÐÁà)ÐÇÅüâ#ÿÿÿÿë
-vÇAÿÿÿÿ‰Ø‹$ÉÉöU‰åS‹M‹] ƒ;ÿt)I‰ÐÁà)Ћ‰Åøâ#‹@‰ÂÁâ)‰ Õüâ#됉KI‰ÐÁà)ÐÇÅøâ#ÿÿÿÿI‰ÐÁà)ÐÇÅüâ#ÿÿÿÿ‰ ‹$ÉÃU‰åS‹M‹] ƒ{ÿt,I‰ÐÁà)ЋS‰Åüâ#‹C@‰ÂÁâ)‰ Õøâ#ë‰ö‰ I‰ÐÁà)ÐÇÅüâ#ÿÿÿÿI‰ÐÁà)ÐÇÅøâ#ÿÿÿÿ‰K‹$ÉÃU‰å‹E‹]ÉöU‰å‹E‹@]ÐU‰å·Eƒøt ƒø…Àtë-ƒøtƒøtë ¸¡C#됸¦C#됸ªC#됸°C#됸q4#]ÐU‰åWVSƒìœúX‰Â‰Uä÷Et$ƒìEèPjèH—ÿÿƒÄ ÿuìÿuèhÀC#èaÁÿÿƒÄ÷EtN¾;5Ðá#sA¿â#vƒì µ‹;¶BP·BPRVhD#èÁÿÿƒÄ‹;VÿP ƒÄF;5Ðá#rÇ÷Etƒì hÛC#èñÀÿÿèT&ÿÿƒÄ‹Uä‰ÐPeô[^_]Éöí"Üï"Üï"Üï"Üï"Üï"Hï"Üï"Tï"`ï"Üï"lï"lï"lï"lï"lï"lï"lï"lï"lï"lï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï"Üï" í"4í" î"`î"àî"<ï"4í"Üï"Üï"0ï"Üï"<ï"Üï"î"Üï"Üï"8î"Üï"€í"Üï"Üï"Ìí"Àð" ò" ò" ò" ò" ò"ò" ò"$ò",ò" ò"<ò"<ò"<ò"<ò"<ò"<ò"<ò"<ò"<ò"<ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò" ò"Ìð"àð" ò" ò" ò" ò"àð" ò" ò"ò" ò" ò" ò" ò" ò" ò"Øñ" ò"0ñ" ò" ò"tñ"¬õ"¸õ"¸õ"¸õ"¸õ"¸õ"|ó"|ó"|ó"|ó"|ó"|ó"|ó"|ó"|ó"|ó"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¸õ"¬ó"0ô",õ",õ",õ" õ"0ô"¸õ"¸õ"”õ"¸õ" õ"¸õ"¸õ"¸õ"¸õ"Äó"¸õ" ô"¸õ"¸õ"¼ô"$@$@#€#ì#\#¬#ü#L#|##”# #¬ #8
-#Ä
-# #œ #( #´ #@ -#Ì -#@#\#Œ##œ#,#°#(#”##l#Ð##`#„# #¼#Ø#ô#t#ì#t#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô#Ô##€#ì#\#¬#ü#L#|##”# #¬ #8
-#Ä
-# #œ #( #´ #@ -#Ì -#@#\#Œ##œ#,#°#(#”##l#Ð##`#„# #¼#Ø#ô#t#ì#t#TimerOthermain: unable to set timer 1
-main: unable to set timer 2
-main: unable to set timer 3
-main: waiting signals...
-main: disarm the timer2
-main: disarm the timer1
-main: arm timer1
-main: unable to arm timer 1
-main: ending...
-Signal %d code=%s value=%d task=%d count25=%d count26=%d time=%ldusec
-task_timer: value = %d, time = %ldusec
-main: unable to create timer 1
-main: unable to create timer 2
-main: unable to create timer 3
-main: unable to disarm timer 2
-main: timer2 disarmed, itvalue=%ld.%ld
-main: unable to disarm timer 1
-main: timer1 disarmed, itvalue=%ld.%ld
-Error during Keyboard Initialization!!!Ctrl-C pressed!
-KeybPortKeyTasktask_create
-scheduletime %lus %luns * caplasttime %lus %luns * exec=%d TIME = %lu
-The system tick must be less than 55 mSec!Abort detected
-Code : %u
-Too many scheduling levels!!!
-Too many resource levels!!!
-debug info noticewarn err crit alert emerg <%i>[%s] %sPosix task
-Signal number %d...
-with value : %d
-POSIX_ReadyPOSIX_DelayPOSIX_UnknownSlice: %d
-MainPOSIX_register_level
- alloco descrittore %d %d
- lev=%d
-POSIX schedulerPid: %d Name: %20s Prio: %3ld Status: %s
-
-Panic!!! can't create main task...
-dummy PID: %d
-Dummy1Dummy2Dummy3Dummy4Dummy5Dummy6Dummy7Dummy8Dummy9Dummy0DummyaDummybDummycDummydDummyeDummyfDummygDummyhDummyDummy (RR) Posto dummy_create
-
-Panic!!! can't create dummy task...
-Entro in dummy_register_level
-Port des :
-Free port des : %d
-%d %s vt: %d pn: %d
-%d pd: %d vt: %d pn: %d Resources owned by the tasks:
-%-4dPI_register_module
-PI module
-PC priority of the tasks:
-%-4ldPC_register_module
-PC moduleTR %x
-SS:SP %x:%lx
-Stack0 : %x:%lx
-Stack1 : %x:%lx
-Stack2 : %x:%lx
-CS : %x DS : %x
-Descriptor [%x] InfoNo more Descriptors...
-%x (Hex)Base : %lx Lim : %lx Acc : %x Gran %x
-2Coprocessor error#Page fault*General protection fault*Stack exception*Segment not present*Unvalid TSS#INTEL reserved*Double defect1FPU context switch*Unvalid opcode#BOUND limit exceeded#Overflow detected on INTO#Breakpoint trap#NMI detected#Debug fault#Division by 0Exception %d occurred
-ABORT %d !!!LL Time Panic!!!
-time.cError! File:%s Line:%d %sOne-shot timer selected...
-Periodic timer selected...
-Unhandled Exc or Int occured!!!
-32/LINUX CrossCompiled/ELFHalt called1234567890-+12345678901234567890xabcdefABCDEF1234567890.e+-0123456789ABCDEF$@ -Æ@,ú1°<NaN+Inf-Infacosacosfacos: DOMAIN error
-asinasinfasin: DOMAIN error
-atan2atan2fatan2: DOMAIN error
-hypothypotfexpexpfy0fy0: DOMAIN error
-y1fy1: DOMAIN error
-ynynfyn: DOMAIN error
-lgammalgammaflgamma: SING error
-loglogflog: SING error
-log: DOMAIN error
-log10log10flog10: SING error
-log10: DOMAIN error
-powpowfpow(0,0): DOMAIN error
-pow(0,neg): DOMAIN error
-sinhsinhfsqrtsqrtfsqrt: DOMAIN error
-fmodfmodffmod: DOMAIN error
-remainderremainderfremainder: DOMAIN error
-acoshacoshfacosh: DOMAIN error
-atanhatanhfatanh: DOMAIN error
-atanh: SING error
-scalbscalbfj0j0f: TLOSS error
-j1j1fjnjnfneg**non-integral: DOMAIN error
-à?addfree.cmax >= minreg->min < reg->maxnew_max > new_min(reg->min & (sizeof(struct lmm_node) - 1)) == 0(reg->max & (sizeof(struct lmm_node) - 1)) == 0addregio.cr != reg(reg->max <= r->min) || (reg->min >= r->max)alloc.clmm != 0size > 0reg->free >= 0(DWORD)node < reg->maxreg->free >= size(reg->nodes == 0 && reg->free == 0) || (DWORD)reg->nodes >= reg->minreg->nodes == 0 || (DWORD)reg->nodes < reg->maxreg->free <= reg->max - reg->min((DWORD)node & (sizeof(struct lmm_node) - 1)) == 0((DWORD)node->size & (sizeof(struct lmm_node) - 1)) == 0(node->next == 0) || (node->next > node)alloc_ge.canode >= node(split_size & (sizeof(struct lmm_node) - 1)) == 0lmm_dump(lmm=%p)
-dump.cnode->size >= sizeof(*node) free_check=%08lx
-reg->free == free_checklmm_dump done
- region %08lx-%08lx size=%08lx flags=%08lx pri=%d free=%08lx
- node %p-%08lx size=%08lx next=%p
-(node->size & (sizeof(struct lmm_node) - 1)) == 0block != 0reg != 0(DWORD)prevnode + prevnode->size == (DWORD)node(DWORD)node + size == (DWORD)nextnodestats.cLMM=%p: %u bytes in %u regions, %d nodes
-assertion %s failed in %s at line %i (task:%i_%i)
-MAGIC assertion failed in %s at line %i (task:%i_%i): %s
-KERNEL PANIC (sys_panic_stub): %s
-KERNEL PANIC (sys_panic): %s
-FreeExeSleepWaiting on joinTime (EXACT) : %lus %luns
-< Memory Dump >
-< Level %d : %s Code: %d Version: %d >
-8Œÿÿ’ÏÿÿšÏÿ(T#ÿ@_#ÿÿÿÿÿÿÿÿÿÿÿÿ1234567890!@#$%^&*()-_=+[{]};:'"`~/?,<.>\|   - -1234567890.+*/-+*-aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ 1234567890!"œ$%&/()='?^Š‚+*•‡…ø\|<_,:.;—õ   - -1234567890.+*/-+*-aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ[]@#P\#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ -4#4#ÿ3#ø3#ñ3#ê3#ã3#Ü3#T}"\}"\}"39#&9#9#9#ì8#Ö8#Æ8#²8#£8#“8#†8#q8#`8#F8#:8#“8#'8#þþAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAšg:#ðÿÿÿÿGCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)01.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.01.symtab.strtab.shstrtab.text.rodata.data.sbss.bss.comment.note"€€)!€)#*¨ )(T#¨D /4_#ÀO5@_#ÀO8ã :ÀOLC ahtgI
\ No newline at end of file
/pj/pse51/ptest3
Property changes:
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: pj/pse51/ptest2.c
===================================================================
--- pj/pse51/ptest2.c (revision 1344)
+++ pj/pse51/ptest2.c (nonexistent)
@@ -1,152 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: ptest2.c,v 1.1.1.1 2002-09-02 09:37:47 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:47 $
- ------------
-
- Posix test 2:
-
- pthread_once + thread_specific_data
-
- the main task:
- creates a key
- creates 2 tasks, J1, J2
- at t = 0.4 sec. it kills J1 and J2
-
- J1 and J2 will set and check the thread specific data
- and when the die, a destructor is called (twice, because the value
- is not set to null...)
-
- non standard function used:
- cprintf
- sys_gettime
- keyboard stuffs
- sys_end
-
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <sys/types.h>
-#include <pthread.h>
-
-#include <kernel/kern.h>
-#include <drivers/keyb.h>
-
-pthread_key_t prova_key;
-
-pthread_once_t once = PTHREAD_ONCE_INIT;
-
-void once_init()
-{
- cprintf("ONCE: (pid=%d)\n", exec_shadow);
-}
-
-void destr_key(void *arg)
-{
- cprintf("J (pid=%d) destructor called with value %d\n", exec_shadow,(int)arg);
- pthread_setspecific(prova_key,(void *)((int)arg/100));
-}
-
-void print_test()
-{
- int val;
-
- val = (int)pthread_getspecific(prova_key);
- cprintf("J (pid=%d) printtest value=%d\n", exec_shadow, val);
-}
-
-void *J(void *arg)
-{
- pthread_once(&once, once_init);
- cprintf("J (pid=%d) starts and call setspecific\n", exec_shadow);
- pthread_setspecific(prova_key,arg);
- print_test();
- cprintf("J (pid=%d) exits\n", exec_shadow);
-
- return 0;
-}
-
-void fine(KEY_EVT *e)
-{
- sys_end();
-}
-
-
-int main(int argc, char **argv)
-{
- int err;
- pthread_t j1, j2;
-
- KEY_EVT emerg;
- //keyb_set_map(itaMap);
- emerg.ascii = 'x';
- emerg.scan = KEY_X;
- emerg.flag = ALTL_BIT;
- keyb_hook(emerg,fine);
-
-
- cprintf("main: creating prova_key\n");
- pthread_key_create(&prova_key, destr_key);
-
- cprintf("main: provakey =%d\n", prova_key);
-
- cprintf("main: creating J1\n");
- err = pthread_create(&j1, NULL, J, (void *)1414);
- if (err) cprintf("Error creating J1\n");
- cprintf("main: J1 has PID %d\n",j1);
-
- cprintf("main: creating J2\n");
- err = pthread_create(&j2, NULL, J, (void *)3141);
- if (err) cprintf("Error creating J2\n");
- cprintf("main: J2 has PID %d\n",j2);
-
- cprintf("main: waiting 0.4 sec\n");
- while (sys_gettime(NULL) < 400000);
-
- cprintf("main: kill J1 and J2\n");
- pthread_cancel(j1);
- pthread_cancel(j2);
-
- cprintf("main: ending...\n");
-
- return 0;
-}
Index: pj/pse51/ptest4
===================================================================
--- pj/pse51/ptest4 (revision 1344)
+++ pj/pse51/ptest4 (nonexistent)
@@ -1,418 +0,0 @@
-ELF"4ˆi4 ( €""¨E¨E (F¨U#¨U# 0ó 덶°­üORäe‹Ká€uU¿€ Ç–eÆG1GeÆGGeÆG2GeÆG¸ë"fe£ÈU#Áèfe£ÎU#¨]#¿€ Ç’eÆG0GeÆGf¸0ŽØŽÀŽÐŽàŽè¼Àˆ#ÇpÃ%Àh#ÇtÃ%Àˆ#£´]#‰¸]#¨]#êµ"8®]#üèž×ê U‰å‹Eê ‰öU‰åSƒì<ÆEÙxÆEÚ-ÆEØhD"ƒì‹EØf‰$ÆD$-è|ÇEô("ÇEð]èEì‰$è˜pƒÄ jSjèƒ[Ç$L3#èóêjhx"jEÔPèURƒÄ …Àtƒì h_3#èÍêƒÄƒì hr3#è½êjhx"jEÐPèRƒÄ …Àtƒì h…3#è—êƒÄƒì h˜3#è‡êjhx"jEÌPèéQƒÄ …Àtƒì h«3#èaêƒÄƒì h¾3#èQêƒÄ‰öƒì jèv<ƒÄ=?Bvìƒì h3#è+êƒÄjÿuÔè‚YƒÄvƒì jèB<ƒÄ=„vìƒì hÓ3#è÷éƒÄÿuÐèSÇ$í3#èà鸃Ä‹]üÉÍvU‰åƒìÿ5Lã#h@2#èºéƒÄÉÐU‰åWVSƒì4ÿ5Lã#h€2#è›éÇEЍ}ÐÇGuÈÇFÇEÈÇEØ\"ÇEÜÇ$è×=‰Ã‹‰EàE؉ƒÄVWèK‰Ç‹Uà‰‹NºÓMb‰È÷êÁúÁù)ʉ$ÿuÈWÿ5Lã#hÀ2#èé¸ƒÄ eô[^_]ÍvU‰åƒìÿ5Lã#h43#èîèƒÄÉÐU‰åƒìèÁ:ÉÍvU‰åƒìj ÿujh'èõƒè¨è/±è^·èٝƒÄ jjjè§Qè–{¸èƒÄÉÃU‰åWVSƒìX‹]}¨¾¼]#ü¹ó¥E¸‰E¨fÇE¸ÇE¼ÇEÀfÇEÄÇEÐÇEÔÇEÜÇEà‰]ÈÇEØÇEÌjèàP‰EÐÇEÜÇEàƒMÌ
-è~¡E¨‰$ècƒÄ…Àyƒì h4#ècèƒÄƒì SèoE¸ƒÄeô[^_]ÍvU‰åƒìŠU€=Ì^#„¶€ú*t€úªt
-€ú6t€ú¶uÆÌ^#¸é›„Òy,ÆÌ^#€ú¸uÆØ^#ÆÎ^#ëՀúuÐÆØ^#ëljöÆÌ^#€ú8u€ -Ø^#ÆÎ^#멀úu € -Ø^#뛉ö€ú5uf¾u‰#·Àé)v€ú…•f¾\‰#·Àé -v€úàuÆÌ^#éTÿÿÿv€ú*t€ú6u2ÆÍ^#€ú*u€ -Ø^#é/ÿÿÿ‰ö€ú6…$ÿÿÿ€ -Ø^# éÿÿÿv€úªt€ú¶u"ÆÍ^#€úªt €ú¶…öþÿÿÆØ^#éêþÿÿ€úFu€=Ñ^#•Ñ^#ë.v€ú:u€=Ï^#•Ï^#ëv€úEu;€=Ð^#•Ð^#ƒì¶Ñ^#P¶Ï^#P¶Ð^#Pèõ¸ƒÄé€úu€ -Ø^#éhþÿÿv€ú8u€ -Ø^#éTþÿÿv€út€ú¸uÆØ^#é;þÿÿ‰ö¸„҈рúRt2€úOt-€úSt(€úPt#€úQt€úKt€úLt€úMt€úGt
-€úHt€úIu€=Ð^#uT€=Í^#uK·Â -ÿë~€=Ï^#t/Bð< vBâ<vBÔ<w€=Í^#t¶Âf¾€@‰#·ÀëG€=Í^#t¶Âf¾€à‰#·Àë-v€=Î^#t¶Âf¾€€Š#·Àëv¶Âf¾€@‰#·ÀÉÃU‰åWVSƒì,}؃ìjE×PèòƒÄ…À„¡ƒì ¶E×Pèöüÿÿ‰ÂƒÄf…Ò„†÷Âÿt  Ø^#ƒÈ@ë‰ö Ø^#ˆE؈UيE׈EÚ±»;8‰#}8¾Àˆ#v݊D2:EÚuŠ2:EØuƒì Wÿ’Ĉ#±ƒÄC;8‰#|ЄÉuƒìjW¿‹#P襦ƒÄè-é<ÿÿÿU‰å‹E£È^#ŠˆB‰#ŠPˆC‰#ŠPˆD‰#ŠPˆE‰#ŠPˆF‰#ŠPˆG‰#ŠPˆH‰#ŠPˆI‰#ŠPˆJ‰#ŠP ˆK‰#ŠP
-ˆâ‰#ŠP ˆã‰#ŠP ˆä‰#ŠP -ˆå‰#ŠPˆæ‰#ŠPˆç‰#ŠPˆè‰#ŠPˆé‰#ŠPˆê‰#ŠPˆë‰#ŠPˆL‰#ŠPˆì‰#ŠPˆM‰#ŠPˆí‰#ŠPˆZ‰#ŠPˆú‰#ŠPˆ[‰#ŠPˆû‰#ŠPˆg‰#ŠPˆŠ#ŠPˆh‰#ŠPˆŠ#ŠP ˆi‰#ŠP!ˆ Š#ŠP"ˆu‰#ŠP#ˆŠ#ŠP$ˆs‰#ŠP%ˆŠ#ŠP&ˆt‰#ŠP'ˆŠ#ŠP(ˆk‰#ŠP)ˆ Š#ŠP*ˆy‰#ŠP+ˆŠ#ŠP,ˆN‰#ŠP-ˆî‰#ŠP.ˆO‰#ŠÖˆï‰#ŠP0ˆA‰#ŠP1ˆá‰#ŠP2ˆ\‰#ŠP3ˆü‰#ŠP4ˆDŠ#ŠP5ˆ/Š#ŠP6ˆ0Š#ŠP7ˆ1Š#ŠP8ˆ+Š#ŠP9ˆ,Š#ŠP:ˆ-Š#ŠP;ˆ'Š#ŠP<ˆ(Š#ŠP=ˆ)Š#ŠP>ˆ2Š#ŠP?ˆ3Š#ŠP@ˆŽ‰#ŠPAˆw‰#ŠPBˆu‰#ŠPCˆŠ‰#ŠPDˆ.Š#ŠPEˆŠ#ŠPFˆ*Š#ŠPGˆ^‰#ŠPHˆþ‰#ŠPIˆp‰#ŠPJˆŠ#ŠPKˆn‰#ŠPLˆŠ#ŠPMˆ`‰#ŠPNˆŠ#ŠPOˆR‰#ŠPPˆò‰#ŠPQˆa‰#ŠPRˆŠ#ŠPSˆb‰#ŠPTˆŠ#ŠPUˆc‰#ŠPVˆŠ#ŠPWˆW‰#ŠPXˆ÷‰#ŠPYˆd‰#ŠPZˆŠ#ŠP[ˆe‰#ŠPRˆŠ#ŠP]ˆf‰#ŠP^ˆŠ#ŠP_ˆr‰#ŠP`ˆŠ#ŠPaˆq‰#ŠPbˆŠ#ŠPcˆX‰#ŠPdˆø‰#ŠPeˆY‰#ŠPfˆù‰#ŠPgˆP‰#ŠPhˆð‰#ŠPiˆS‰#ŠPjˆó‰#ŠPkˆ_‰#ŠPlˆÿ‰#ŠPmˆT‰#ŠPnˆô‰#ŠPoˆV‰#ŠPpˆö‰#ŠPqˆo‰#ŠPrˆŠ#ŠPsˆQ‰#ŠPtˆñ‰#ŠPuˆm‰#ŠPvˆ -Š#ŠPwˆU‰#ŠPxˆõ‰#ŠPyˆl‰#ŠPzˆ Š#ŠP{ˆšŠ#ŠP|ˆ›Š#ŠP}ˆ§Š#Š@~¢¨Š#]ÍvU‰åWVSƒì\‹]}ؾà^#ü¹󥿸ƒ=Ô^#…Qº¾@‰#¹à‰#‰ö·ÂÆ0ÆBfúví…Ûu]؃{ÿuÇCÈ]#ƒì ÿsèûÿÿÇ$jjjh94#èw™f£‹#ƒÄ fƒøÿu ¸þÿÿÿéÞ‰öjjjh94#è؜f£‹#ƒÄfƒøÿuƒì ¿‹#Pè= ¸ýÿÿÿ頍vÇ8‰#ƒ{ÿuÇC4"ƒ{tIÆE™cÆEš.ÆE˜ƒìÿsƒì‹E˜f‰$ÆD$.èÅÆE˜ƒÄÿsƒì‹E˜f‰$ŠEšˆD$襃ă;ÿuQfÇE¨ÇE¬ÇE°fÇE´ÇE¸ÇEÐÇEÈÐÇEÄ ÇEÀ¨aÇE¼
-ÇE̍E¨ë‹ƒì jjPh<"hB4#èÿ‰ÃƒÄ ‰‹#ƒøÿu'ƒì ¿‹#Pè;Ÿ¿‹#‰$è,Ÿ‰Ø钐ƒ=Ü^#uWƒì ÿ5‹#艉ǃąÿt4ƒì ¿‹#Pèôž¿‹#‰$è垃Äÿ5‹#èg5¸üÿÿÿë=ÇÜ^#ëèƒì¶Ñ^#P¶Ï^#P¶Ð^#PèûÇÔ^#‰øƒÄeô[^_]ÃU‰åƒì¶EPEèP¿‹#PèØ ƒÄ„Àt÷Eè@u¶Eéë‰ö¸ÉÐU‰åƒì ¶E Pÿu¿‹#P蝠·ÀƒÄÉÐU‰åSƒ=8‰#0‹ -8‰#Í»Àˆ#‹Ef‰ŠE
-ˆD‹E ‰‚Ĉ#A‰ -8‰#‹$ÉÉöU‰åƒìèÉÍvU‰åƒìè±ÉÍvU‰åƒì¸ÿÿÿÿƒ=Ô^#t9蓃ì ÿ5‹#è-4¿‹#‰$莝¿‹#‰$蝸ƒÄÉÐU‰åƒìjèÙÇ$èÓØÇ$(4#è›Øè²-ƒÄÉÐU‰åWVSƒìŠEˆEó¿1¾d»`‰ö¹v‰òì©t"‰ÈA=þÿÿvì¸ÿÿÿÿ…Àu‰ÚŠEóî¸ë‰ö¸ë搸ÿÿÿÿÇEì¹d…Àt¸ÿÿÿÿët¸ë‰Êì©uî‹EìÿEì=þÿÿvé¸ÿÿÿÿ…Àu‰Úì¶Àë¸ÿÿÿÿƒøÿu
-¸þÿÿÿë3v=úu ¸ë"‰ö=þt ¸ýÿÿÿë‰ö‰øO…À9ÿÿÿ¸üÿÿÿƒÄ[^_]ÃU‰åVSƒìŠEˆE÷³Ô¾¹d‰ö‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë -¸ë搸ÿÿÿÿ…Àt¸ÿÿÿÿëL¸ë&»¹d‰ö‰Êì©tâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àuº`ŠE÷î¸ëv¸ÿÿÿÿ…Àt¸ÿÿÿÿëj¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àuºdì© tº`ì¶Ðëvºÿÿÿÿ‰Ð…Òx¸úú”ÀDþƒÄ[^]ÃU‰åWVSƒì »¾`‰ØK…À~^ƒì hÿè¼ýÿÿ‰ÂƒÄ…Òu{¿¹d‰Êì©u‰øG=þÿÿvì¸ÿÿÿÿ…Àu‰òì¶Ðëv¸ëꐺÿÿÿÿúªu›¸üÿÿÿúª…ƃì hõèMýÿÿ‰ÂƒÄ…Òt(¸ûÿÿÿ馉ö¸ýÿÿÿ隉ö¸ë.¸ëZ³`¾¹d‰Êì©tډðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî³e¾¹dv‰Êì©t®‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØîƒì hôèªüÿÿ‰ÂƒÄ¸…Ò•ÀHƒàƒèeô[^_]ÃU‰åWVSƒì ¾»d¹`‰Úì©t -‰Êì‰ðF=þÿvé³­¾¹d‰Êì©„‚‰ðF=þÿÿvè¸ÿÿÿÿ…ÀuºdˆØî¾»d¹`‰Úì©t -‰Êì‰ðF=þÿv鳪¾¹d‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ë搸놐¸ÿÿÿÿ…Àt¸÷ÿÿÿéݐ¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àu º`ì¶Àë¸ÿÿÿÿƒøUt¸ÿÿÿÿ錸ë&³«¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸öÿÿÿé9¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àu º`ì¶Àë¸ÿÿÿÿ…Àt¸þÿÿÿé鐸ë&³®¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…À…<èzüÿÿ…À…Žƒì hóèIúÿÿƒÄ…Àt
-¸ùÿÿÿépƒì jè.úÿÿƒÄ…Àt¸øÿÿÿéU¸ë.Æì^#³©¾¹d‰Êì©tډðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸ôÿÿÿéù¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àu º`ì¶Àë¸ÿÿÿÿ…Àt¸óÿÿÿ驐¸ë&³¨¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸õÿÿÿéU¸ë&³Ó¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸ðÿÿÿ鐸ë&³Z¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî¸ë¸ÿÿÿÿ…Àt¸ïÿÿÿ魐Æì^#ëBv¸ë^¹þÿ¾d»`‰òì¶ø÷Çt‰Úì¶À÷Ç tƒøZt»IƒùÿuÙ³§¾¹d‰Êì©tª‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àté»þÿÿ‰ö¸ë:€=ì^#„þÆì^#³¨¾¹d‰Êì©tΉðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸îÿÿÿ鱐¸ëvƒì hóèWøÿÿ‰ÃÇ$dèIøÿÿÃÇ$èè;øÿÿÃÇ$è-øÿÿÃÇ$çèøÿÿþ§ƒÄ¿¹dv‰Êì©t’‰øG=þÿÿvì¸ÿÿÿÿ…Àuºd‰ðî¸ë¸ÿÿÿÿ…Àt¸íÿÿÿë…ÛuÆì^#¸eô[^_]ÃU‰åVS¡_#…Àt¡_#H£_#¸é²¸ë6ƒ=ø^#uKŠü^#¾¹dv‰Êì©t҉ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØîÿø^#뤍v¸ë:ƒ=ø^#uGÇø^#³ô¾¹d‰Êì©tΉðF=þÿÿvì¸ÿÿÿÿ…À…Xÿÿÿº`ˆØîéKÿÿÿ‰ö¸[^]ÍvU‰åWVSƒì ¡_#@£_#¾õ³Ô¿¹dv‰Êì©t"‰øG=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ë搸ë.¸ÿÿÿÿ…Àu0»¹d‰Êì©tډØC=þÿÿvì¸ÿÿÿÿ…Àuº`‰ðîœúX‰Çƒì hõè5õÿÿ‰ÃƒÄ…Ût¸ûÿÿÿéù‰ö¸ë1¾§ÇEð¹dv‰Êì©tڋEðÿEð=þÿÿvé¸ÿÿÿÿ…Àu ºd‰ðî¸ë¸ë=¸ëq¸ÿÿÿÿþ`ÇEð¹d‰Êì©t΋EðÿEð=þÿÿvé¸ÿÿÿÿ…Àuºd‰ðî¾eÇEð¹dv‰Êì©tš‹EðÿEð=þÿÿvé¸ÿÿÿÿ…Àuº`‰ðîƒì hôè;ôÿÿÃĉøPÆí^#‰Øeô[^_]ÐU‰åWVSƒì ¸ÿÿÿÿ€=ì^#„ºœúX‰Æƒì hõèóóÿÿƒÄ…Àt(¸ûÿÿÿé—‰ö¸ë:¸ëf¸é“‰ö³`¿¹d‰Êì©tΉøG=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî³G¿¹dv‰Êì©t¢‰øG=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØ¿¹dv‰Êì©„rÿÿÿ‰øG=þÿÿvè¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt ¸îÿÿÿ鐃ì hôèÿòÿÿƒÄ…Àt¸Ûÿÿÿ飉ö¸ë:‰ðP¡_#@£_#¾ô³Ô¿¹d‰Êì©tΉøG=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë -¸ë.¸ÿÿÿÿ…Àu0»¹d‰Êì©tډØC=þÿÿvì¸ÿÿÿÿ…Àuº`‰ðîÆí^#¸eô[^_]ÍvU‰åƒìÇ$Œ#Ç Œ#ƒ=ô^#t!úè‹õÿÿ£ð^#Çô^#û…Àtúèôÿÿû¡ð^#…Àuƒìÿuh ""jè½U¸ƒÄÉÍvU‰åVS¡_#@£_#³õ¾¹d‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî¸ë -¸ë搸ÿÿÿÿ[^]ÍvU‰åVS¡_#@£_#³ô¾¹d‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî¸ë -¸ë搸ÿÿÿÿ[^]ÍvU‰åƒì‹MœúX‰Â¡ Œ#@%ÿ£ Œ#Š€ ‹#ˆ‰ÐP€9úu è(úÿÿë‰ö¸ÉÐU‰åƒìƒ= _#t(Ç„Œ#Ç€Œ#LjŒ#Ç _#‹E£_#ƒ=ô^#t!úèôÿÿ£ð^#Çô^#û…Àtúèòÿÿû¡ð^#…Àu.¸ìÿÿÿ€=ì^#t ƒìjÿh\""j è'TÆí^#¸ƒÄÉÉöU‰åS‹MœúX‰Ã¡€Œ#@ƒà?£€Œ#º@Œ#ŠˆA¡€Œ#@ƒà?£€Œ#Šˆ¡€Œ#@ƒà?£€Œ#ŠˆA‰ØP¸‹$ÉÉöU‰åƒì€=í^#tèäùÿÿƒì j è6TÆí^#¸ƒÄÉÐU‰åƒìƒ=ô^#t!úè óÿÿ£ð^#Çô^#û…Àtúè™ñÿÿû¡ð^#…Àt¸ë¶ì^#ÉÍvU‰åVSŠEŠU€} t ƒ -ü^#ë ‰öƒ%ü^#„Àt ƒ -ü^#ëƒ%ü^#„Òtƒ -ü^#ë¸ë6¸ëbƒ%ü^#³õ¾¹d‰Êì©t҉ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî³í¾¹dv‰Êì©t¦‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØîÿø^#[^]ÐU‰åSƒìœúX‰Ã€=í^#tè–øÿÿè‘ðÿÿƒì hóèhîÿÿƒÄ…Àuƒì jèWîÿÿƒÄ…Àu‰ØP‹]üÉÍvU‰åº`ì¶ÈœúX‰Â¡ Œ#;$Œ#t¡$Œ#ˆˆ ‹#@%ÿ£$Œ#‰ÐP]ÉöU‰åƒìº`ì¶Ðƒ=ˆŒ#u €úúu¡_#H£_#郍v÷ÂÀuxÿˆŒ#œúX‰Á¡€Œ#;„Œ#t¡„Œ#ˆ@Œ#@ƒà?£„Œ#ë"‰ö¡„Œ#+ˆŒ#ƒÀAƒà?£„Œ#LjŒ#‰ÈPƒ=ˆŒ#uLjŒ#ƒì ÿ5_#èƒÄÉÉöU‰åSƒì}™w‹UÑâU‰ÐÁà)Ðfƒ<ÅHä#uè¡âNj¸ÿÿÿÿ鏐ƒ= ã#tcœúX‰Ã‹UÑâU‰ÐÁà)ЍÅ0ö€!ä# t ÿ€$ä#ë-v‹EÑàE‰ÂÁâ)‹Õ$ä#ƒì‹•€ã#ÿuRÿP@ƒÄ‰ØPéè+¦…ÀtgœúX‰Ã‹UÑâU‰ÐÁà)ЍÅ0ö€!ä# t ÿ€$ä#ë2v‹EÑàE‰ÂÁâ)‹Õ$ä#ƒì‹•€ã#ÿuRÿP@蔃ĉØPé­úèò¶‹Lã#R‰ÑÁá)Ñ» ä#f‰DË‹UÑâU‰ÐÁà)ЍÅ0öD t ÿ€$ä#ë?vƒìU‰ÐPjÿL_#‹MI‰ÐÁà)ЋÅ$ä#ƒÄ‹•€ã#QRÿP@è/ƒÄ¡Lã#@‰ÂÁâ)ƒì ¿Õ(ä#Pè`¶èƒÄû¸‹]üÉÐU‰åWVSƒì ‹]f…Ûuèæànj¸ÿÿÿÿé"‰öƒ= ã#„“œúX‰ÇÇEð}ð™s¾ ä#‹UðÑâUð‰ÐÁà)ÐÁàf9\,uHƒÀ0öD0 t ÿ€$ä#ë6ƒìEðPjÿL_#‹MðI‰ÐÁà)ЋÅ$ä#ƒÄ‹•€ã#QRÿP@ƒÄÿEð}ð™~“‰øPé}‰öè;¤…À„›œúX‰ÇÇEð}ð™w¾ ä#‹Eð@‰ÂÁâ)Õf9\,uJƒÀ0öD0 t ÿ€$ä#ë8vƒìEðPjÿL_#‹MðI‰ÐÁà)ЋÅ$ä#ƒÄ‹•€ã#QRÿP@ƒÄÿEð}ð™~èj‰øPéԐúèÊ´‹Lã#R‰ÑÁá)Ñf‰Í(ä#ÇEð}ð™w¾ ä#‹Eð@‰ÂÁâ)Õf9\,uJƒÀ0öD0 t ÿ€$ä#ë8v‹MðI‰ÐÁà)ЋÅ$ä#ƒì‹•€ã#QRÿP@ƒÄEðPjÿL_#ƒÄÿEð}ð™~èÞ ¡Lã#@‰ÂÁâ)ƒì ¿Õ(ä#Pè´èÁƒÄû¸eô[^_]ÃU‰åSƒìúè㳋Lã#R‰ÑÁá)Ñf‰Í(ä#ƒìhä#j蛃čUð¡ä#;Xã#|¡ä#+Tã#‰Eð¡ä#+Xã#ë!‰ö¡ä#+Tã#H‰Eð¡ä#+Xã#ʚ;‰B‹Mð ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ôºÓMb‰Ø÷êÁú‰ØÁø)ÂыLã#R‰ÐÁà)Ð) Ålä#ƒì Qè. ƒÄƒ=\ã#ÿtƒì ÿ5\ã#ÿ(ã#Ç\ã#ÿÿÿÿƒÄ‹ -Lã#I‰ÐÁà)ЋÅ$ä#ƒì‹…€ã#QPÿRLè{ ƒÄhLã#jÿL_#ÇLã#ÿÿÿÿÇ`ã#ÿÿÿÿèV ¡Lã#@‰ÂÁâ)¿Õ(ä#‰$苲è:ƒÄû‹]üÉÐU‰åƒìhà("èФƒÄÉÍvU‰åƒìj軤ƒÄÉÉöU‰åƒìƒ=_#u(èè
-ƒì ¡Lã#@‰ÂÁâ)¿Õ(ä#P貃ÄÉÍvU‰åWVSƒìhJ4#è)ƒÄ» ä#ëv‹Eð@‰ÐÁà)ЁLÃ0€ƒì hÄã#èr0‰EðƒÄƒøÿ„“@‰ÐÁà)ÐöDÃ1@u¾‹UðR‰ÃÁã)ÃÁã¾ ä#¡_#‰3@£_#‹E ‰Dƒìjÿuƒ4ä#PèHÃÆD'ƒÃ fÇD3‹Mf‹%ÿf‰D3
-f‹A f‰D3 ƒÄ‰Ø‰ñº‹]ƒ{tf‹Sf‰T‹UðR‰ÁÁá)ÁÁáY0‹U‹B -‰ƒ ä#¿$ä#Ç;¾(ä#¡Lã#@‰ÂÁâ)‹DÖ0‰3º,ä#ǍAP‹]ð‰˜ ä#Ç8ÇÿÿÿÿÇ0ÿÿÿÿǁ€ä#°Ç8Ç0ǁÁÀǁ ä#Ç9ºۍƒ€ 
-Ç…„ä#Bƒúvì‹Eð@‰ÐÁà)ÐÁàÀǂ(ä#ÿÿÿÿǂ,ä#tä#‰ðä#º‹Mðɍ€ ‰ö
-Ç…ðä#Bƒú~ì»ëC;Pã#sƒì‹€ã#ÿuSÿPƒÄ…Àxß;Pã#u7‹]ð[‰ÂÁâ)ÂfÇÕHä#ƒìhÄã#Sè‚.èIÚDŽ鄉ö‹Eð@‰ÐÁà)Ѝ4ʼnž$ä#ƒì‹€ã#ÿuÿuðSÿP,ƒÄ…ÀyWfdžHä#ƒìhÄã#ÿuðè".èéÙDžë'èÛÙǃ釃ì ÿuðè9èÀÙdž¸ÿÿÿÿƒÄëjƒE‹U‹zü…ÿtY‰ö¾ëF;5Dã#s0ƒìµ‹ƒàã#WVÿP ƒÄ…Àxۃ싃àã#WÿuðVÿP$ƒÄ;5Dã#t‡ƒE‹M‹yü…ÿu©‹Eðeô[^_]ÉöU‰åƒìEPÿuÿu ÿuè`üÿÿƒÄÉÍvU‰åWVSƒì ‹} ƒt6‹EÑàE‰ÂÁâ)‹G‰Õ,ä#‰Æ‹UÑâU‰ÐÁà)Ѓ ÅPä#@ën‰öƒì ‹UÑâU‰ÐÁà)зÅNä#Pè@‹UÑâU‰ÑÁá)Ñ»,ä#‰ˉƋEÑàE‰ÂÁâ)ƒÄƒ<Óuƒì ÿuèìèsØLjëtv‹EÑàE‰ÂÁâ)» ä#·DÓ.ƃì ·GPjÿwVhÌ/"èՑ‰ÁƒÄ f…Éu?ƒì‹UÑâU‰ÐÁà)зDÃ.PVèƒÄÿuèvèý×lj¸ÿÿÿÿƒÄëN‹EÑàE‰ÂÁâ)Âf‰ Õ(ä#ƒìU‰ÐPjÿL_#ƒÄöGu ÿ@ã#ëvöGuÿä#¸eô[^_]ÍvU‰åWVSƒì ‹M‹U ‹]œúX‰ÇEPSRQè­úÿÿ‰ÆƒÄƒþÿ„ɍv‰ÐÁà)ЋÅ$ä#‹…€ã#ƒx(„èà…À‰€»;Dã#svƒì‹àã#VSÿP(ƒÄC;Dã#råv‰ÃÁã)ÃÁ㋃$ä#ƒì‹…€ã#VPÿR0fǃHä#ƒÄhÄã#Vè+ƒÄèÈÖLJ‰øP¸ÿÿÿÿë#vƒìSVèŽýÿÿƒÄº…À”ÂJ ։øP‰ðeô[^_]ÃU‰åVS‹u»;Dã#svƒì‹àã#VSÿP(ƒÄC;Dã#råv‰ÃÁã)ÃÁ㋃$ä#ƒì‹…€ã#VPÿR0fǃHä#ƒÄhÄã#VèT*ƒÄeø[^]ÉöU‰åVS‹]è ƒì ¡Lã#@‰ÂÁâ)¾ ä#SÿTÖú‰$èn¡Lã#@‰ÂÁâ)¿DÖ‰$諃čeø[^]ÃU‰åWVSƒì‹]‹}úû™w! [‰ÈÁà)ÈÁຠä#öD0tfƒ|(u û¸ÿÿÿÿéDžÿy$[‰ÁÁá)Á Í°¸$ä#‹<Çë ‰öƒÿv¿[‰ÁÁá)Á Í°‰Mä¹(ä#‰Mì‹Uä‹
-‰Â)úƒÂ‰Ð¾º÷ö‰Eð‹uä;tMۍƒ€4‹MðىÈÁà)ȍ Å°‰ö2‹…„ä#‹] ‰ƒÃ‰] B»‰Ðº÷ó‹]ì;uÔû‰øƒÄ[^_]ÐU‰åSƒì‹]‹ -Lã#I‰ÐÁà)ЍÅö‚Pä#tɍ€È‚Øä#…„ä#¡ä#;Tã#|;Tã#uA¡ä#;Xã#}4ƒìSÿ5Lã#ÿ5Xã#ÿ5Tã#ÿ5ä#ÿ5ä#h`4#èàºƒÄ è@ ‹]üÉÍvU‰åWVS‹ -Lã#I‰ÐÁà)ЍÅöƒPä#„›ɍ€ȍ‹°(ä#º$ä#‹t‚`‹”À¸,ä#94s‰4‹Lã#[‰ÁÁá)ÁÁፁÀ° ä#¿$ä#B‰8±°‹†(ä#@º‰Ñº÷ñ‰–(ä#ۍƒ€ØÐÇD‡`ƒ<>wÿ>[^_]ÉöU‰åWVS‹M‹] ‹u‹}úù™w!I‰ÐÁà)ÐÁຠä#öD0tfƒ|(uû¸ÿÿÿÿëy…ÛtI‰ÂÁâ)‹Õàä#‰…ötI‰ÂÁâ)‹ÕÜä#‰…ÿtI‰ÂÁâ)‹Õää#‰ƒ}t(ɍ€ȍ I‰ÊÁâ)ÊÕØä#‹…„ä#‹U‰û¸[^_]ÉöU‰å‹Múù™w!I‰ÐÁà)ÐÁຠä#öD0tfƒ|(uû¸ÿÿÿÿë7I‰ÂÁâ)ÂÁ⍂Àǀ ä#ǀ$ä#ǂÜä#û¸]ÍvU‰åWVSƒì ƒ=Lã#ÿt¡Lã#@‰ÂÁâ)ÂöÕPä#…3ƒ=Lã#ÿ„ƒìhä#jèUŽƒÄUè¡ä#;Xã#|¡ä#+Tã#‰Eè¡ä#+Xã#ë"v¡ä#+Tã#H‰Eè¡ä#+Xã#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыLã#R‰ÐÁà)Ð) Ålä#ƒì QènüÿÿƒÄƒ=\ã#ÿtƒì ÿ5\ã#ÿ(ã#Ç\ã#ÿÿÿÿƒÄ‹ -Lã#I‰ÐÁà)Ћ<Å$ä#ƒì‹½€ã#QWÿP<ƒÄ¿4½ƒì ‹†€ã#WÿP$‰ÃƒÄƒûÿt%ƒì[‰ÐÁà)ЋÅ$ä#‹…€ã#SPÿR4ƒÄ븅Àx»ƒûÿuG뫍v‹5Lã#‰`ã#‰Lã#[‰ÐÁà)Ð;Åpä#t0» ä#‰ö¡Lã#@‰ÂÁâ)‹TÓP‰Lã# R‰ÈÁà)È;TÃPu×;5Lã#tƒìhLã#jÿL_#ƒÄ‹ -Lã#I‰ÐÁà)ÐÁྠä#fÇD(‹¸$ä#ƒì‹½€ã#‹`ã#¸;Lã#•ÀPQWÿS8¡Lã#@‰ÂÁâ)ƒÄöDÖ1„Ü¡`ã#;Lã#…Ë¡ä#‰EèMè¡Lã#@‰ÂÁâ)»,ä#‹DÓ@º@B‰Ö™÷þ’’’Áâ‰Ö5ä#‰q¿¡/¸D‰ø÷î‰×Áÿ‰ð™‰þ)Ö¡Lã#@‰ÂÁâ)‹\Ó@ºƒÞC‰Ø÷êÁú‰ØÁø)2Eè‹AºÊš;‰Ó™÷û‰Qjhø="ÿuìÿuèÿ$ã#‰ÃƒÄƒûÿuƒìÿ5Lã#jè£<ƒÄ‰\ã#¡ä#£Tã#¡ä#£Xã#eô[^_]ÉöU‰åWVSƒìÇ°£%úÿuèD»ƒÄ¿$ä#¾ ä#‰ö[‰ÂÁâ)ÂÁâÇ:ÿÿÿÿǂ,ä#ÆDB fÇD0fÇD0
-fÇD0 fÇD0B0Ç0Ç8ǀ(ä#ǀ,ä#‚dä#Ç@Çǂlä#BP‰0Ç8ÇD`DŽÐ‚øæ#Ç@Ǎ‚àÇ0ÿÿÿÿÇ8ÿÿÿÿ‚°Ç8ǀ(ä#ǀ,ä#ÂÀÇ2Ç:ºۍƒ€ v
-ÇD‡`Bƒúvï[‰ÐÁà)ЍÅÀǀ(ä#ÿÿÿÿǀ,ä#ºۍƒ€ 
-DŽ†ÐBƒú~ìCû™Žƒþÿÿ»¹(ä#[‰ÂÁâ)C‰DÑP‰Ãû˜~åÇ ¡%ÿÿÿÿ»™¹,ä#[‰ÂÁâ)Cÿ‰DÑP‰Ã…ÛéÇ|ä#ÿÿÿÿÇÄã#ÇHã#Ç@ã#Çä#Ç`ã#ÿÿÿÿÇLã#ÿÿÿÿÇ\ã#ÿÿÿÿÇXã#ÇTã#ÇPã#ÇDã#Ç ã#èÚè}èÜ6ƒì ÿuèqÉÿÿ£Èã#ƒÄ=×Övƒì hÀ4#è5Ç$豿ƒÄ¸ƒ=Èã#”À‰Eè]è¡Èã#‰CÇ°£%èb‡ƒì SèY‘Ç$Œ>"è­ËÇ$Ì("è)“Ç$ä="è=“ƒÄjjèEÿT_#ƒÄhä#jèô‡èOùÿÿ蒠f£Àã#¡Lã#@‰ÂÁâ)¾ ä#¿DÖ‰$èw Ç$èߒÿP_#Ç°£%ƒÄ»ƒ=Hã#ŸÃSjèɃă=ä#teè„ Ç_#ƒìhä#jèc‡è f£Àã#è³øÿÿÇ$ä="èo’¡Lã#@‰ÂÁâ)¿DÖ‰$èߟÇ$èG’ƒÄÇ°£%ƒìSjèCèj†Ç°£%ƒÄjjè(ƒÄúƒ=Hã#t"ƒìÿ5Hã#hë4#èø°Ç$ÿÿÿÿ较ăì jèó½ƒÄeô[^_]ÃU‰åSƒìƒ=_#…•èÿ…Àuúè-Ÿ‹Lã#R‰ÑÁá)Ñf‰Í(ä#‹E£Hã#Ç_#ƒ=Lã#ÿ„ƒìhä#jè?†ƒÄUð¡ä#;Xã#|¡ä#+Tã#‰Eð¡ä#+Xã#ë ¡ä#+Tã#H‰Eð¡ä#+Xã#ʚ;‰B‹Mð ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ôºÓMb‰Ø÷êÁú‰ØÁø)ÂыLã#R‰ÐÁà)Ð) Ålä#ƒì QèZôÿÿƒÄƒ=\ã#ÿtƒì ÿ5\ã#ÿ(ã#Ç\ã#ÿÿÿÿƒÄ‹ -Lã#I‰ÐÁà)ЋÅ$ä#ƒì‹…€ã#QPÿR<Ç`ã#ÿÿÿÿÇLã#ÿÿÿÿƒÄ褌…Àtƒì ¿Àã#PèԝƒÄëvƒì ¿Àã#P輝èkƒÄû‹]üÉÉöU‰åSƒìÇEøÿÿÿÿ»º€ã#¡€ã#ƒx(t1ƒì‹šUøRSÿP(ƒÄ…Àu¸ÿÿÿÿëCƒûwº€ã#‹šƒx(uи‹]üÉÉöU‰åƒìè èÀ/ÉÉöU‰åƒìÇ\ã#ÿÿÿÿè§êÿÿÉÐU‰åSƒìœúX‰Ãƒ=°£%tƒ=ä#t‰ØPëƒì jè–ýÿÿƒÄ‰ØP‹]üÉÉöU‰åƒìÿuèzýÿÿƒÄÉÐU‰åSƒì‹UœúX‰ÃƒìRj脉ƒĉØP‰Ð‹]üÉÉöU‰å¸Hã#ƒ=Lã#ÿt‹Lã#R‰ÐÁà)Ѝŀä#]ÉöU‰åSƒìœúX‰Ãƒ=°£%tƒ=ä#t‰ØPëƒì ÿuèíüÿÿƒÄ‰ØP‹]üÉÐU‰å]ÍvU‰åWVSƒì ÇEðÇE컍[ …ƒ¹¨Œ#t[¿ Œ#ƒ<9tP‹Lã#ҍ‚€Ð؍…о ä#ƒ<0t+ûƒì ÿ40ÿ9ƒÄú‹Lã#ҍ‚€Ð؋´†Ð uìCƒû~Œƒ}ìt -ÿEðƒ}ðŽmÿÿÿeô[^_]ÐU‰åVSº¾ Œ#»¤Œ#¹¨Œ#vRÁàÇ0B‰Çƒú~ãǘ’#ÿÿÿÿÇ ’#ǨŒ#Ç Œ#ǤŒ#ÿÿÿÿ[^]ÐU‰åS‹Múƒ= ’#ÿu û¸ ënv¡ ’#@Ç•¨Œ#‰¡ ’#@‹…¤Œ#£ ’#‹@‹U ‰… Œ#º» ä#‰öҍ‚€ÐDŽƒÐBú™~ßû¸‹$ÉÃU‰åú¡Lã#À’ÂU‹•ðä#û]ÍvU‰å‹Múƒùw -Iƒ<…¨Œ#u û¸ë%v¡Lã#À’ÂʋE ‰•ðä#û¸]ÃU‰åS‹]œúX‰Áƒûw -[ƒ<…¨Œ#u‰ÈP¸ë.v[Áà‹ ’#‰¤Œ#ǀ¨Œ#‰ ’#‰ÈP¸‹$ÉÃU‰åWVSƒì ¡Lã#‰Eð‰ÂÑâ‰ÐÁà)ЍÅ¿ ä#öD0 tm‹E‰‚ìä#‹UðÑâUð‰ÐÁà)ЁLÇ0@‹UðÑâUð‰ÐÁà)ЍÅÀº(ä#ƒ<ÿt,‹4v‰ÃÁã)ÃÁ㋃$ä#ƒì‹…€ã#VPÿRD‰tPƒÄ¹» ä#;MðtI‰ÐÁà)ЋUð9TÃP„ˆAù™~ۋUðÑâUð‰ÐÁà)Ѓ<Åtä#t[»$ä#ûƒì ‹UðÑâUð‰ÐÁà)ЋDÃPÿpÿƒÄú‹EðÑàEð‰ÂÁâ)ÕP‹‹@‰‹UðÑâUð‰ÐÁà)Ѓ|ÃPu«èJüÿÿƒì ‹EðÑàEð‰ÂÁâ)» ä#¿DÓPè|~ƒÄEðPjÿL_#‹Eð@‰ÂÁâ)ՃÄöD0@u%ƒì·D.P‹Eð@‰ÂÁâ)Âÿ4Õ,ä#èÁ ƒÄ»;Dã#sƒì‹àã#ÿuðSÿP(ƒÄC;Dã#rã‹MðI‰ÐÁà)ЋÅ$ä#ƒì‹…€ã#QPÿRPÇLã#ÿÿÿÿÇ`ã#ÿÿÿÿ‹Eð@‰ÂÁâ)ƒÄöÕPä#u&ÿ -@ã#ƒ=@ã#uBèZúÿÿë;ƒìRjè0ƒÄëg‹Eð@‰ÂÁâ)ÂöÕPä#uÿ -ä#ƒ=ä#uèúÿÿƒìhä#jèz~ƒÄƒ=\ã#ÿtƒì ÿ5\ã#ÿ(ã#Ç\ã#ÿÿÿÿƒÄè­ïÿÿeô[^_]ÐU‰åVS‹uúv‰ÐÁà)ÐÁຠä#öD0ufƒ|(uèyÁNJû¸ÿÿÿÿ麍v‰ÐÁà)ÐöÅQä#tû雉ö;5Lã#uJv‰ÐÁà)л ä#‹DÃ0©t0©u)ƒì jè¥üÿÿ¡Lã#@‰ÂÁâ)¿DÓ‰$èM–ƒÄ»ëvC;_#}ƒìÝÿ°Ä’#VÿÀ’#ƒÄ…Àtٍv‰ÐÁà)Ё ÅPä#û¸eø[^]ÍvU‰åWVSƒì ‹Ef‰Eòf…ÀuèŠÀnj¸ÿÿÿÿé‰öú¡`ã#@‰ÂÁâ)Âf‹Mòf; ÕLä#”Eñ¾¿ ä#‰öv‰ÐÁà)ÐÁà‹T0÷Â…ˆƒÀ fƒ|8t}÷Âuuf‹Mòf9L8 uj;5Lã#u!÷Ât÷Âuƒì jè{ûÿÿƒÄëC‰ö»ëC;_#}ƒìÝÿ°Ä’#VÿÀ’#ƒÄ…Àtٍv‰ÐÁà)ЁLÇ0Fþ™ŽNÿÿÿ€}ñt(ƒì ¡`ã#@‰ÂÁâ)¿Õ(ä#PèĔƒÄëvû¸eô[^_]ÉöU‰åWVSƒì ¾¿ ä#v‰ÐÁà)ÐÁàfƒ|(tL÷D0
-uB»ë‰öC;_#}ƒìÝÿ°Ä’#VÿÀ’#ƒÄ…Àtٍv‰ÐÁà)ЁLÇ0Fþ™~–eô[^_]ÉöU‰åSƒì¡Lã#@‰ÂÁâ)» ä#‹DÓ0©t7©u0©t)ƒì jè"úÿÿ¡Lã#@‰ÂÁâ)¿DÓ‰$èʓƒÄ‹]üÉÉöU‰åS‹M‹] ¡_#ʼnŠÀ’#‰šÄ’#@£_#‹$ÉÍvU‰åƒìúÿuè½ùÿÿ¡Lã#@‰ÂÁâ)¿Õ(ä#‰$èb“ƒÄÉÐU‰åVS¶uœúX‰Ãƒ=ô•#ÿuèð½Ç‚‰ØP¸ÿÿÿÿéۋ -ô•#‰ÊÁâ‹‚l“#£ô•#‹E‰‚`“#‹E ‰‚d“#‰ðƒà‰‚h“#‰ðƒàƒøtOƒø
-ƒøt -ësvƒøtSëi‰ÈÁàǀl“#ÿÿÿÿƒ=à•#ÿu‰ -à•#ë¡ä•#Áà‰ˆl“#‰ -ä•#ëH‰ö‰ÊÁâ¡è•#‰‚l“#‰ -è•#ë.‰ÊÁâ¡ì•#‰‚l“#‰ -ì•#ë‰ÊÁâ¡ð•#‰‚l“#‰ -ð•#‰ØP¸[^]ÐU‰åƒìƒ=Pã#uƒì h 5#è4 Ç$è°°ƒÄ¡Pã#P‰Pã#ÉÐU‰åƒìƒ=Dã#uƒì h?5#èøÇ$èt°ƒÄ¡Dã#P‰Dã#ÉÐU‰åWVS‹E‹u ‹}»‹HÇöt<€9t5‹ ‰‡€: t€:t‰öC€< t€< uó€< uÆ Cÿ€< uÌÿ[^_]ÐU‰åWVSì¬‹EµTþÿÿ½Xþÿÿ»‹HDžTþÿÿöt<€9t5‹ ‰‡€: t€:t‰öC€< t€< uó€< uÆ Cÿ€< uÌÿƒì…XþÿÿPÿµTþÿÿ蕶ÿÿƒÄeô[^_]ÉöU‰å¸¹l“#v‰ÂÁâ@‰
-ƒø&~òÇܕ#ÿÿÿÿÇà•#ÿÿÿÿÇä•#ÿÿÿÿÇè•#ÿÿÿÿÇì•#ÿÿÿÿÇð•#ÿÿÿÿÇô•#]ÉöU‰åWVSƒì ‹E‹} ƒøt4ƒø ƒøtéЃøt3ƒøtB鳐‹à•#Çà•#ÿÿÿÿë:‰ö‹è•#Çè•#ÿÿÿÿë&‰ö‹ì•#Çì•#ÿÿÿÿë‰ö‹ð•#Çð•#ÿÿÿÿÇ ã#ƒûÿtM¾l“#…ÿt‰ØÁàƒ¸h“#uƒì ‰ØÁàÿ°d“#ÿ`“#ƒÄ‰Ù‰ØÁà‹0‰Â¡ô•#‰2‰ -ô•#ƒûÿu¸Ç ã#eô[^_]ÉöU‰åƒìEüPEøPEôPEðPèñ‹Ç$–#èq؃Äjjhÿÿjh–#h–#èœÎƒÄjjhÿÿÿhh –#h–#è|΃Äjjhÿÿÿþhh<–#h–#è\ÎƒÄ ƒ}ütƒì‹EüHPÿuøh–#è&̓ă}ôtƒìÿuôÿuðh–#è
-̓ÄÉÐU‰åƒì‹E…Àu¸ëƒìjPh–#è´ÎƒÄÉÍvU‰åƒìÿuÿuÿu ÿuh–#èdÐƒÄ ÉÍvU‰åƒì ÿuÿuÿuÿuÿu ÿuh–#è^ÐƒÄ ÉÐU‰åƒì ÿu ÿuh–#èՃÄÉÐU‰åƒìÿuh–#èù҃ÄÉÃU‰åƒìÿuh–#èùփÄÉÃU‰åƒì jÿuh–#èÿ̓ÄÉÉöU‰åƒì ÿu ÿuh–#èªÔƒÄÉÐU‰åƒìh–#è¸ÒÇ$–#èÌփÄÉÍvU‰åWVSƒì‹E@‰ÐÁà)Ðfƒ<ÅHä#…¿ƒìEèPjè½tƒÄ]àºÀ£%Mè‹u‹Dò;A|‹ò+Eè‰Eà‹Dò+A됸À£%‹M‹È+UèJ‰Uà‹DÈ+Eìʚ;‰CºÀ£%‹Eà‹u‰ò‹Eä‰Dòƒì v‰ÃÁã)ÃÁ㍻ྠä#ÿ47ÿ(ã#Ç7ÿÿÿÿ‹ƒ$ä#ƒÄ‹…€ã#ÿuPÿRD¸ƒÄë‰ö¸eô[^_]ÍvU‰åWVSƒì ‹u‹} ƒ>x ~ʚ;~ ¸é–úèvŒ‹Lã#R‰ÑÁá)Ñf‰Í(ä#ƒ=_#t+Ç_#ƒìjhHQ"èˆøÿÿƒÄjhŒM"è%ƒÄƒìhä#jèssƒÄUè¡ä#;Xã#|¡ä#+Tã#‰Eè¡ä#+Xã#ë ¡ä#+Tã#H‰Eè¡ä#+Xã#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыLã#R‰ÐÁà)Ð) Ålä#ƒì QèŽáÿÿƒÄƒ=\ã#ÿtƒì ÿ5\ã#ÿ(ã#Ç\ã#ÿÿÿÿƒÄ‹ -Lã#I‰ÐÁà)ЋÅ$ä#ƒì‹…€ã#QPÿRH‹Lã# R‰ÈÁà)ÈfÇÅHä#ÕÀ£%ƒÄ¡ä#‰Ã‰¡ä#‰ÁN‰J…ÉyCÿ‰Êš;‰Bëzÿɚ;~ ÿjʚ;¡Lã#Ph¼Q"ÿ4ÅÄ£%ÿ4ÅÀ£%ÿ$ã#‰ÆƒÄƒþÿuƒìÿ5Lã#jè1#ƒÄ¡Lã#@‰ÂÁâ)» ä#‰´ÓàÇLã#ÿÿÿÿÇ`ã#ÿÿÿÿèãÿÿ¡Lã#@‰ÂÁâ)ƒì ¿DÓPèIŠèøìÿÿƒÄûèÃ.¡Lã#Áàƒ¸À£%u ƒ¸Ä£%t)…ÿt¡Lã#ºÀ£%‹‰¡Lã#‹D‰G¸ëv¸eô[^_]ÍvU‰åWVSƒì ‹E@‰ÐÁà)Ѝ4Å¿ ä#fƒ|7(u:ƒì žàÿ4;ÿ(ã#Ç;ÿÿÿÿ‹†$ä#ƒÄ‹…€ã#ÿuPÿRD¸ƒÄ븍eô[^_]ÍvU‰åƒì‹M¸À£%ÇDÈÇȍI‰ÐÁà)ÐÁàǀç#ÿÿÿÿ‹€$ä#‹…€ã#QPÿRDè­ÖÿÿƒÄÉÃU‰åƒì ‹E‰EøUøÇBEðPRèTüÿÿ‹EðƒÄÉÃU‰åWVSƒì} ‹uEðPh”5#VèÖ¥‰ÃƒÄƒûuƒ}ðvÇEðƒÆë ‰öÇEð‹Eðº; _#~hƒìWVh`–#蜃Äj
-VèK›ƒÄ»…À•ÃœúX‰Æƒìh`–#‹Eðÿ4…$_#h™5#è]™ƒÄ…Ûuƒì h<6#èI™ƒÄ‰ðPº‰Ðeô[^_]ÍvU‰åVSƒìu ‹]EôPh”5#S襃ăøuƒ}ôvÇEôƒÃëÇEô‹Eôº; _#~JƒìVSh`–#èB›ƒÄj
-S臚ƒÄœúX‰Ãƒìh`–#‹Eôÿ4…$_#h™5#裘ƒÄ‰ØPº‰Ðeø[^]ÉöU‰åVSƒì@‹u‹] ‹EfÇEÈÇEÌÇEÐfÇEÔÇEàÇEäÇEìÇEð‰EØÇEÜÇEè…ÛtT‹C‰E̋C‰EЃ{u
-ÇEÜ1됃eÜߋC ‰EàÇEÀƒì ÿ5`š#è)7ƒÄ+C ‰EċC‰Eì‹C‰EðëD‰öÇEÌÇEЃMÜ ÇEàÇEÀƒì ÿ5`š#èâ6ƒÄ‰EÄÇEìÇEðèI±‹ƒì jEÀPEÈPÿuh¡5#è™Ùÿÿ‰ƒÄ ƒøÿt ƒì PèJÎÿÿƒÄ豉¸ƒ>ÿ”ÀHƒàêƒÀeø[^]ÍvU‰åƒìÿ5`š#èc6ƒÄÉÉöU‰åƒìÿ5`š#èc6ƒÄÉÉöU‰åƒìÿ5`š#è{5ƒÄÉÉöU‰å‹E‹U ‹M£`š#‰dš#‰ -hš#]ÐU‰åVS‹]è°‹0ƒì SèÌîÿÿ‰Ãèm°‰0ƒÄ¸…Û•À@eø[^]ÃU‰åƒìúÿuÿu ÿuÿ5`š#èé5ƒÄûÉÍvU‰åWVSƒì ‹}‹uúÿ6ÿu Wÿ5`š#è3‰ÃƒÄ…Ûu#ƒìÿ5`š#èx5ƒÄ+PWÿ5hš#èffƒÄû‰Øeô[^_]ÃU‰åSƒì ‹] Sÿuè¡eƒÄÿ5`š#è75ƒÄ+‰¸‹]üÉÉöU‰åVSƒì‹u‹] …Ûtƒ;uÇEôƒìEôPë7ƒ;uÇEðƒìEðPë!vÇEèƒì jè_þÿÿ+CUè‰BƒÄRVèT*ƒÄeø[^]ÉöU‰åWVSƒì‹u ‹}ÇEðÿ5`š#è“4‰ÃƒÄ9Þƒþ} ¸ëG‰öƒì ÿuèµ*ƒÄ W‰Ø)ðPÿuè eƒÄ…ÀtÇEð…ÿt‰Ø+‰ƒì ÿuèÙ*‹EðƒÄeô[^_]ÍvU‰åƒì‹Eúƒ8u -ÇûÿU ëû¸ÉÃU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)ÐÁà‹øæ#‰U苀üæ#‰Eìƒùÿtw ‰ÆȉÂÁâ)‹Eè‰Ã;Õøæ#|[‰Eäv1‰ÐÁà)ЍÅ;šøæ#u ‹Eì;‚üæ#|1‰Ï‰ÐÁà)Ћ Åxä#ƒùÿt4 1‰ÐÁà)Ћ]ä;Åøæ#}«ƒÿÿt‰ÐÁà)ЋU‰Åxä#ë‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰Å|ä#‹E@‰ÐÁà)ЍÅP‰ˆ(ä#‰¸,ä#ƒÄ[^_]ÍvU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)л$ä#‰]ð‹´ÃЃùÿtCI‰ÐÁà)Ð;´ÃÐr0»(ä#‰Ï‰ÐÁà)ЋLÃPƒùÿtI‰ÐÁà)ЋUð;´ÂÐsՃÿÿt‰ÐÁà)ЋU‰Åxä#ë
-‰ö‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰Å|ä#‹E@‰ÐÁà)ЍÅP‰ˆ(ä#‰¸,ä#ƒÄ[^_]ÍvU‰åWVS‹}‰ÐÁà)ЍÅP‹,ä#‹°(ä#ƒúÿu ‹E ‰0ë#‰öR‰ÁÁá)Á»(ä#‰ÐÁà)ЋDÃP‰DËPƒþÿt!v‰ÁÁá)Á»,ä#‰ÐÁà)ЋDÃP‰DËP[^_]ÃU‰åS‹]‹ ‰Èƒùÿt/I‰ÐÁà)ЋÅxä#‰ƒøÿt@‰ÐÁà)ÐÇÅ|ä#ÿÿÿÿ‰È‹$ÉÃU‰åS‹]‹M ƒ9ÿt‹@‰ÂÁâ)‰Õ|ä#[‰ÂÁâ)ÕP‹‰‚(ä#ǂ,ä#ÿÿÿÿ‰‹$ÉÃU‰åWVSƒì ‹M‹] ‹}ÇEðú¡Lã#@‰ÂÁâ)4Õ ä#…ÿt‹F8‰…ÛtBƒùt"ƒù ƒùt ë*‰öƒùtë!‹F8 ‰F8ë‰ö‹÷Ð!F8ëv‹‰F8ëÇEð‹F8‰Ã÷Ћ€œ#‰Ñ…ÂtB‰ö‰Ø÷л!Ètv‰Ú©u
-CÑøuòºƒì R范ċ^8‰Ø÷Ћ -€œ#…ÁuÀ‹F8‰Ã÷ЋV<‰Ñ…Ât=‰Ø÷л!Ètv‰Ú©u
-CÑøuòºƒì Rè|ƒÄ‹^8‰Ø÷ЋN<…ÁuÃû‹Eðeô[^_]ÍvU‰åVS‹u‹M ¸…É„¸ƒù‡òv‰ÐÁà)Ðfƒ<ÅHä#u -¸éӍvú‰ÈÁàö€ˆš#uƒ¸€š#uû魉öv‰ÐÁà)ЍÅ\ä#ƒùvèÍ©Çë
-¸Óà »ëC;H_#}ƒìÝÿ°D#Vÿ@#ƒÄ…Àtٍv‰ÐÁà)ЍÅfƒ»Hä#u&ƒìh„œ#VèÔüÿÿ‹ƒ$ä#ƒÄ‹…€ã#VPÿRDƒÄèSm…Àuèû¸eø[^]ÐU‰åWVSƒì‹]‹U ƒûvè©Ç¸ÿÿÿÿévœúX‰Á‰Mðƒ}t‰ÞÁæÆ€š#ü¹‹}ó¥…Òt‰ßÁçÇ€š#ü¹‰Öó¥…Ò„ºöB…°ƒ:‡§ƒ< œ#ÿtq4‰u캠œ#‹@Áà‰Eè‰ÇƒÇ‹ - ®%¸ ¨%‹U苉E䋇¤¨%©t -ƒàý‰‡¤¨%ë‰ö¾ œ#‹Uì‹2@‰ Õ ¨%‰Áƒ}äÿu»‰ - ®%ǝ œ#ÿÿÿÿƒûv -è¨Çë¸þÿÿÿˆÙÓÀ!€œ#‹uð‰ðP¸ƒÄ[^_]ÐU‰åWVSƒì,‹] ¸…Û„~¸ƒû‡pœúX‰Â‰UԉÞÁæ}؁ƀš#ü¹ó¥÷Eàuƒ}Øu ‰ÐPé5vƒûv膧Ǹÿÿÿÿ됸ˆÙÓà#€œ#…Àt -‹UԉÐPéûƒûvèN§Çë‰ö¸ˆÙÓà €œ#‹5„œ#ƒþÿ„ô¸‰ÇˆÙÓçvv‰ÐÁà)ЍÅ`ä#ƒûvèý¦Ç¸ÿÿÿÿë‰ú#‰Ð…À„–v‰ÐÁà)ÐÁàfƒ¸Hä#u\ä#ƒûv -輦Çë 8ƒìh„œ#Vèúÿÿv‰ÃÁã)ÃÁ㋃$ä#ƒÄ‹…€ã#VPÿRDÃྠä#ƒÄƒ<3ÿtƒì ÿ43ÿ(ã#Ç3ÿÿÿÿƒÄ‹MԉÈPéîv‰ÐÁà)Ћ4Åxä#ƒþÿ…ÿÿÿ¾¸‰ÇˆÙÓç‰öv‰ÐÁà)ÐÁàfƒ¸Hä#„…Xä#ƒûvèö¥Ç¸ÿÿÿÿ됉ú#‰Ð…Àu^v‰ÐÁà)ЍÅ\ä#ƒûvèÃ¥Çëv 8»ëvC;H_#}0ƒìÝÿ°D#Vÿ@#ƒÄ…ÀtÙëvFþ™ŽSÿÿÿèzi…Àuè9 -‹MԉÈP¸eô[^_]ÐU‰åWVSƒì,¸ƒ} „T¸ƒ} ‡EœúX‰Â‰Uԋu Áæ}؁ƀš#ü¹ó¥÷Eàuƒ}Øu ‰ÐPé ‰ö÷Eàu;ƒ} vèܤǸÿÿÿÿëv¸ŠM Óà#€œ#…Àt ‹UԉÐPéÃ= ®%ÿu‹MԉÈP¸ 鮉ö‹5 ®%vÁ๠¨%‹‰ ®%‹U ‰¤¨%‹U‰¨¨%‹U‰¬¨%‹Lã#‰°¨%Çÿÿÿÿ‹E Áຠœ#ƒ<ÿu‰4ë>‰ö‹M ‹ œ#‰ÁЃ<Å ¨%ÿt» ¨%
-‹Í 
-ƒ<ÃÿuîR‰4Å ¨%ƒ} vèé£Ç됸ŠM Óà €œ#‹5„œ#ƒþÿ„û¸‰ÃŠM Ó㐍v‰ÐÁà)ЍÅ`ä#ƒ} v蘣Ǹÿÿÿÿë v‰Ú#‰Ð…À„šv‰ÐÁà)ÐÁàfƒ¸Hä#u\ä#ƒ} vèS£Çëv ƒìh„œ#Vè¨öÿÿv‰ÃÁã)ÃÁ㋃$ä#ƒÄ‹…€ã#VPÿRDÃྠä#ƒÄƒ<3ÿtƒì ÿ43ÿ(ã#Ç3ÿÿÿÿƒÄ‹MԉÈPé÷v‰ÐÁà)Ћ4Åxä#ƒþÿ…ÿÿÿ¾¸‰ÃŠM Ó㐍v‰ÐÁà)ÐÁàfƒ¸Hä#„…Xä#ƒ} v艢Ǹÿÿÿÿë‰Ú#‰Ð…Àu^v‰ÐÁà)ЍÅ\ä#ƒ} vèV¢Çë‰ö »ëvC;H_#}0ƒìÝÿ°D#Vÿ@#ƒÄ…ÀtÙëvFþ™ŽSÿÿÿèf…Àuƒ=D_#uèÄ ‹MԉÈP¸eô[^_]ÃU‰åWVSƒì‹u‹]¡Lã#@‰ÂÁâ)<Õ ä#èŠú¡€œ##„Hºv©u=BÑøuô¾ƒ<µ œ#ÿue‹E ‰0Ç@Ç@W<ƒþvèa¡Ç됉Öëɸþÿÿÿ‰ñÓÀ!ƒþvè?¡Çëv¸þÿÿÿ‰ñÓÀ!€œ#ûév µº œ#‹[‹Å ¨%‰ƒøÿu"ƒþvèñ Ç됸þÿÿÿ‰ñÓÀ!€œ#W<ƒþv -èÌ Çë ¸þÿÿÿ‰ñÓÀ![Á⹤¨%‹
-‹u ‰‹‚¨¨%‰F‹‚¬¨%‰FƒÂ‹
-©t ƒàý‰
-ëv[¡ ®%‰Õ ¨%‰ ®%ûéI‰Öë‹G<#tUº©uéBÑøuô¾‹E ‰0Ç@Ç@W<ƒþvè Çëv¸þÿÿÿ‰ñÓÀ!ûéëv…Ûtƒ;uƒ{u -û¸ éÓ‰ö‹‰G@úèu‹Lã#R‰ÑÁá)Ñf‰Í(ä#ƒìhä#jèN\ƒÄUè¡ä#;Xã#|¡ä#+Tã#‰Eè¡ä#+Xã#ë¡ä#+Tã#H‰Eè¡ä#+Xã#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰ÁáºÓMb‹Eì÷êÁú‹EìÁø)ÂыLã#R‰ÐÁà)Ð) Ålä#ƒì QèkÊÿÿƒÄƒ=\ã#ÿtƒì ÿ5\ã#ÿ(ã#Ç\ã#ÿÿÿÿƒÄ‹ -Lã#I‰ÐÁà)ЋÅ$ä#ƒì‹…€ã#QPÿRHƒÄh„œ#ÿ5Lã#èæòÿÿ¡Lã#@‰ÂÁâ)ÂfÇÕHä#ƒÄ…Û„’ƒìEàPjè[U؃Ä‹Eà‰E؋EäC‰B…Ày -ÿM؁Bʚ;됁zÿɚ;~ ÿjʚ;ÿ5Lã#h u"ÿuÜÿuØÿ$ã#‰ÃƒÄƒûÿuƒìÿ5Lã#jèù ƒÄ¡Lã#@‰ÂÁâ)‰Õç#ÇLã#ÿÿÿÿÇ`ã#ÿÿÿÿèßËÿÿƒì ¡Lã#@‰ÂÁâ)» ä#¿DÓPèsè”ÇG@¡Lã#@‰ÂÁâ)ƒÄöDÓ2tû¸ é~‰Öë%¡€œ##„ûº‰ö©uáBÑøuô¾ƒ<µ œ#ÿu=‹M ‰1ÇAÇAƒþv -è@Çë¸þÿÿÿ‰ñÓÀ!€œ#ûé vƒì µƒ œ#Pèúðÿÿ‰ÇƒÄƒ» œ#ÿu#ƒþvèòœÇë‰ö¸þÿÿÿ‰ñÓÀ!€œ#Á⹤¨%‹
-‹] ‰‹‚¨¨%‰C‹‚¬¨%‰CƒÂ‹
-©t ƒàý‰
-ëv¡ ®%‰Õ ¨%‰= ®%ûël‹G<#…Àuû¸ë`v‰Öë‹G<º#t ©uéBÑøuô¾‹E ‰0Ç@Ç@W<ƒþvè/œÇëv¸þÿÿÿ‰ñÓÀ!û¸eô[^_]ÍvU‰åWVSƒì ‹}¡Lã#@‰ÂÁâ)4Õ ä#è¹ú‹F<#…Àt è¦û颋‰F@úèq‹Lã#R‰ÑÁá)Ñf‰Í(ä#ƒìhä#jè6XƒÄUè¡ä#;Xã#|¡ä#+Tã#‰Eè¡ä#+Xã#ë¡ä#+Tã#H‰Eè¡ä#+Xã#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыLã#R‰ÐÁà)Ð) Ålä#ƒì QèRÆÿÿƒÄƒ=\ã#ÿtƒì ÿ5\ã#ÿ(ã#Ç\ã#ÿÿÿÿƒÄ‹ -Lã#I‰ÐÁà)ЋÅ$ä#ƒì‹…€ã#QPÿRHƒÄh„œ#ÿ5Lã#èÍîÿÿ¡Lã#@‰ÂÁâ)» ä#fÇDÓ(ÇLã#ÿÿÿÿÇ`ã#ÿÿÿÿèaÈÿÿ¡Lã#@‰ÂÁâ)¿DÓ‰$è™oè‹F<#ƒÄ…Àuû¸ë èÿû¸eô[^_]ÐU‰åSƒì‹]úEðPjè¢VƒÄƒ=(#ÿu
-ÇEèëWMèUð¡$#;B|¡ #+Eð‰Eè¡$#+Bëv¡ #+EðH‰Eè¡$#+Eôʚ;‰Aƒì ÿ5(#ÿ(ã#ƒÄ…ÛtN]ð‹E𣠝#‹Eô£$#jh€u"ÿuôÿuðÿ$ã#‰ÃƒÄƒûÿuƒìÿ5Lã#jè:ƒÄ‰(#ë -vÇ(#ÿÿÿÿû‹Eè‹]üÉÐU‰åVSƒì‹uƒ<µ œ#ÿuC‰uèÇEìÇEð¡Lã#‰Eôƒþvèü˜Ç鮐¸þÿÿÿ‰ñÓÀ!€œ#降 µº œ#‹[‹Å ¨%‰ƒøÿu"ƒþv豘Ç됸þÿÿÿ‰ñÓÀ!€œ#[Á๤¨%‹‰U苐¨¨%‰U싐¬¨%‰Uð‹°¨%‰UôP‹
-©tƒàý‰
-ë[¡ ®%‰Õ ¨%‰ ®%ƒìEèPVè
-ƒÄeø[^]ÃU‰åVSƒì¡Lã#@‰ÂÁâ)4Õ ä#‹F0©…Í -‰F0‹F8‰Ã÷Ћ€œ#‰Ñ…ÂtA‰Ø÷л!Ètv‰Ú©u
-CÑøuòºƒì Rè„þÿÿƒÄ‹^8‰Ø÷Ћ -€œ#…ÁuÀ‹F8‰Ã÷ЋV<‰Ñ…ÂtZ‰Ø÷л!Ètv‰Ú©u
-CÑøuòº‰UèÇEìÇEð¡Lã#‰EôƒìEèPRèƒÄ‹^8‰Ø÷ЋN<…Áu¦f0ÿïÿÿeø[^]ÃU‰åWVSƒì,‹]œúX‰Â‰UÌ¡Lã#@‰ÂÁâ)Õ ä#‰UЉÞÁæ}؁ƀš#ü¹ó¥÷Eàuƒ}Ø„îƒ}Øÿ„ä÷EàuCƒ}Øu=ƒìSh¬5#èw}ƒÄ÷Eàtƒì‹M ÿqhÂ5#èX}ƒÄƒì jèïÎÿÿƒÄ‹UЋB8‰EԉƍUԃûv -èh–Çë ¸ˆÙÓà ‹EÔ E܉EԋUЃÂ<ƒûv -è<–Çë ¸þÿÿÿˆÙÓÀ!‹EԋUЉB8û÷Eàtƒìjÿu SÿUäëƒìj‹M ÿqSÿU؃Äú‹EЉp8‹ỦÐPeô[^_]ÃU‰åWVSƒì ‹}‰ÐÁà)ÐÁྠä#fƒ|(uF˜àƒ<3ÿtƒì ÿ43ÿ(ã#Ç3ÿÿÿÿƒÄƒìh„œ#Wèúèÿÿ‰ÂÁâ)‹Õ$ä#ƒÄë ‰ÐÁà)ÐÁàfƒ¸Hä#u!‹$ä#ƒì‹•€ã#WRÿPD¸ƒÄë‰ö¸eô[^_]ÍvU‰åWVSƒì º¿ˆš#¾„š#»Œš#¹ œ#‰ö‰ÐÁàǀ€š#Ç8Ç0ÇÇ‘ÿÿÿÿBƒúvϺ» ¨%¹¤¨%RÁàB‰ÇDƒú>~éLj®%ÿÿÿÿÇœ®%Ç ®%Ç€œ#Ç„œ#ÿÿÿÿÇ(#ÿÿÿÿº¹à#»ä#‰öRÁàÇÇÿÿÿÿÆDBƒú~áƒìjhp"èÆÕÿÿƒÄeô[^_]ÍvU‰å‹EǸ]ÐU‰å‹EÇÿÿÿÿ¸]ÐU‰åƒì‹U‹M ƒùvèê“Ǹÿÿÿÿ됸Óà ¸ÉÃU‰åƒì‹U‹M ƒùv趓Ǹÿÿÿÿ됸þÿÿÿÓÀ!¸ÉÃU‰åƒì‹M ƒùv腓Ǹÿÿÿÿë ¸Óà‹U#ÉÉöU‰åƒì ÿuÿu ÿuèÔçÿÿƒÄÉÍvU‰åWƒì$‹UEè‰E丹‹}äüó«ƒìjÿuäRèBñÿÿƒÄ…Àu -‹Uè‹E ‰¸‹}üÉÐU‰åƒì jÿu ÿuèñÿÿƒÄÉÃU‰åƒì‹E…Àu¸ëƒìPÿu ÿuèíðÿÿƒÄÉÃU‰åƒìÿuÿ5Lã#è`èÿÿƒÄÉÍvU‰åVSƒì ‹]‹E ‰EèÇEìÇEð脒‹0ƒìEØPEèPSèAéÿÿƒÄ»ÿÿÿÿ…Àu ÷Eàu‹]ØèT’‰0‰Øeø[^]ÐU‰å‹M¡Lã#@‰ÂÁâ)¡€œ# Õ\ä#‰¸]ÉöU‰åSƒì‹E‹U ú‹Lã#‰Lã#ÇD_#jPj jèœìÿÿƒÄÇD_#‰Lã#û‹]üÉÍvU‰åS‹M‹] ¡H_#ʼnŠ@#‰šD#@£H_#‹$ÉÍvU‰åVS‹]Cÿƒøv苑Ç~¸ÿÿÿÿëp‰öœúX‰Æ[€<…è#u‰ðPèa‘ǸÿÿÿÿëF[Áâ¹à#‹E ‰
-‹E‰‚ä#ÆD
-ƒìjhÀu"Sè¹T·Ã‰$èÒeƒÄ‰ðP¸eø[^]ÍvU‰åƒì¸ÉÍvU‰åƒì ‹E‰EèÇEìÇEð‹Lã#‰UôUèRPè›ùÿÿƒÄÉÉöU‰åVS‹uv‰ÃÁã)ÃÁ㸠ä#DŽàÿÿÿÿL0ƒìh„œ#Vèõãÿÿ‹ƒ$ä#ƒÄ‹…€ã#VPÿRDè?³ÿÿƒÄeø[^]ÐU‰åƒìÇ(#ÿÿÿÿjjèWèÿÿè³ÿÿƒÄÉÐU‰åƒìEüÇEüÿÿÿÿPèôÿÿƒÄÉÐU‰åƒì‹E‹‰EüEüPjÿL_#‹UüRÁà¹à#ƒÄƒ<t ûƒì RÿƒÄú‹Eü@ƒì ÿ4…ä#èþ¬ÿÿƒÄÉÐU‰åWVSƒì ‹u ‹]ƒ}t讏Ǹÿÿÿÿén‰öúƒ= ¥#ÿt ƒ= ®%ÿuûèƒÇ ¸ÿÿÿÿéCv¡ ¥#‰‹ ¥#Õ)п¤ž#‹DÇ0£ ¥#‹Õ)й ž#ÇDÁ0…öu8‹Õ)ÐÇÁ‹Õ)ÐÇÇ‹Õ)ЉŨž#닍<Å)Ǎ<ý ž#ü¹ó¥‹Õ)ЍŃº ž#u#¡ ®%‰‚Èž#@Áàƒˆ´¨%‹€ ¨%£ ®%‹Õ)ÐÇÅ´ž#ÿÿÿÿ‹Õ)ЍŸž#Ç@NjÕ)ЍÅÀž#Ç@NjÕ)ÐÇÅ̞#û¸ƒÄ [^_]ÃU‰åSƒì‹]ƒûwúÝ)؃<ÅО#uûèÿÇ¸ÿÿÿÿ閍vÝ)ØÁàǀО#ƒÀº¤ž#ƒ<ÿtƒì ÿ4ÿ(ã#ƒÄÝ)ØÁàƒ¸ ž#uE‹Èž#R Åö´¨%u¡ ®%‰ ¨%‰ ®%Ý)؋ÅȞ#@ƒ$Å´¨%üû¸‹]üÉÃU‰åWVSƒìL‹E‰E´Áà+E´Áàƒ¸ ž#…‹P ‹‚¨ž#@öÅ´¨%t¸¬ž#ƒ< „ôÿéì‰ö‹M´Áá+M´Ááy LJ¬ž#¾¨ž#‹7@‹ ®%‰Ý ¨%£ ®%jÿ41ÿ±¤ž#jèhçÿÿ‹7@ƒ Å´¨%錐‹E´Áà+E´Á๠ž#ƒ<uwPƒ<
-tÿ°¨ž#ÿ°¬ž#ÿ4
-ëQvÇEÈÇEÌÇEÐÇEÔÇEØÇEÜÇEà‹E´Áà+E´Áà¨ž#Rÿ°¬ž#EÈPEÄPèÙÙÿÿƒÄ‹E´Áà+E´Åƒ¸¨ž#u -ƒ¸¬ž#„ÀºÀž#‹E´Áà+E´ŋ‰E¸M¸‹D‰A‹E¸ƒ¸ž#‰ƒÀž#‹Aƒ¼ž#‰B…Àyÿ‹Àž#Bʚ;ë‰özÿɚ;~ ÿjʚ;‹E´Áà+E´ÿu´hŒx"ÿ4ÅĞ#ÿ4ÅÀž#ÿ$ã#‰ÃƒÄƒûÿuƒìÿ5Lã#jè+ùÿÿƒÄ‹E´Áà+E´‰Å´ž#ë‰ö‹E´Áà+E´ÇÅ´ž#ÿÿÿÿeô[^_]ÃU‰åWVSƒì‹u‹}ÇEäƒþw3ƒ}t-‹Exÿɚ;w!‹]{ ÿɚ;wúõ)ðƒ<ÅО#uûèÁŠÇ¸ÿÿÿÿ鐅ÿ„·õ)ðƒ<Å´ž#ÿuÇG ÇGëwƒìEèPjèGÇEäƒÄ¹Àž#õ)ðō]è‹D;C|‹+Eè‰G‹D+Cë(¹Àž#õ)òÁâ‹+EèH‰G‹D+Eìʚ;‰G ¹¸ž#õ)ðÁà‹‰‹D‰Gõ)ðÅº¤ž#ƒ<ÿtƒì ÿ4ÿ(ã#ƒÄ‹Eƒxu
-ƒx „þº¸ž#õ)ð ŋ]‹‰
-‹C‰D
-÷E t¸Àž#‹S‰‹S ‰Tëmvƒ}äuƒìEèPjèøEƒÄõ)ð ō‘Àž#‹Eè‹]C‰Àž#‹EìC ‰B…Àyÿ‰Àž#Bʚ;ëzÿɚ;~ ÿjʚ;õ)ðVhŒx"ÿ4ÅĞ#ÿ4ÅÀž#ÿ$ã#‰ÃƒÄƒûÿuƒìÿ5Lã#jè­öÿÿƒÄõ)ð‰Å´ž#û¸eô[^_]ÃU‰åWVSƒì ‹]‹} ƒûwúÝ)؃<ÅО#uûèzˆÇ¸ÿÿÿÿ鷉öÝ)؃<Å´ž#ÿuÇG ÇGëoƒìEèPjèÒDƒÄ¹Àž#Ý)؍ōuè‹D;F|‹+Eè‰G‹D+Fë'¹Àž#Ý)ÚÁâ‹+EèH‰G‹D+Eìʚ;‰G ¹¸ž#Ý)ØÁà‹‰‹D‰Gû¸eô[^_]ÍvU‰åƒìƒ}t藇Çëv臇ǸÿÿÿÿÉÉöU‰åƒìƒ}tèg‡Ç¸ÿÿÿÿë‰öƒì ÿu èÍ¿ÿÿ¸ƒÄÉÍvU‰åƒì‹E ƒ}tè,‡Ç¸ÿÿÿÿëv…Àt -ÇÇ@è¸ÉÃU‰åƒì‹UƒúwúÕ)Ѓ<ÅО#uûè܆ǸÿÿÿÿëvÕ)ЋÅ̞#ûÉÐU‰åWVS¹»¤ž#¿ ž#¾¬ž#‰öÍ)ÈÁàÇDÿÿÿÿ¸ž#ÇBǍP0Ç:ÇD A‰‰Áƒù~ºÇœ¥#ÿÿÿÿÇ ¥#[^_]ÐU‰å]ÍvU‰å¸]ÉöU‰åVSœúX‰Ã¡Lã#@‰ÂÁâ)¾ ä#‹DÖ0©t0©t)ƒì jèzÁÿÿ¡Lã#@‰ÂÁâ)¿DÖ‰$è"[ƒÄ‰ØPeø[^]ÃU‰åS‹]úût ¸ÿÿÿÿ…ÛuL¡Lã#@‰ÂÁâ)¹ ä#‹DÑ0Áèƒà‹U ‰¡Lã#@‰ÂÁâ)Õ0‹
-%ÿþÿÿ ؉
-û¸‹$ÉÉöU‰åS‹]úût ¸ÿÿÿÿ…ÛuL¡Lã#@‰ÂÁâ)¹ ä#‹DÑ0Áè ƒà‹U ‰¡Lã#@‰ÂÁâ)Õ0‹
-%ÿýÿÿ ؉
-û¸‹$ÉÉöU‰åWVSƒì ‹} ÇEðú‹EÇÿÿÿÿÇ@¾;5Dã#s9v‹µàã#ƒ{u ƒìWVÿS,ƒÄ…ÀxƒìWÿuVÿS0‰EðƒÄF;5Dã#rÊû‹Eðeô[^_]ÉöU‰åƒì‹U¸ƒ:ÿt ¸ƒzu‹‹…àã#ƒìRÿ2ÿP4ƒÄÉÍvU‰åƒì‹U¸ƒ:ÿt‹‹…àã#ƒìRÿ2ÿP8ƒÄÉÉöU‰åƒì‹U¸ƒ:ÿt‹‹…àã#ƒìRÿ2ÿP<ƒÄÉÉöU‰åƒì‹U¸ƒ:ÿt‹‹…àã#ƒìRÿ2ÿP@ƒÄÉÉöU‰åVS‹u‹µ€ã#ƒìÿ°ôhù5#è^j»ƒÄ‰ö[‰ÐÁà)ÐÁà9°$ä#……ƒÀ º ä#f|€ttfƒ|tlƒì f‹Dfƒøwƒì ·ÀPè ¨ƒÄë%v·Ð¸Ó5#ú€t¸ß5#út¸ë5#P[‰ÐÁà)ÐÁàÿ°ôæ#4ä#PSh`6#è¹iƒÄ Cû™ŽUÿÿÿeø[^]ÉöU‰åWVSƒì ‹E‹…€ã#‰Eð‹¸üƒì ‹Uð‹‚ðøPèo§‰ÆƒÄƒþÿu -¸ÿÿÿÿ…ÿtrOëՐv‰ÐÁà)Ѝ ÅöQä#tRQ@»,ä#ƒ<D‹ç#‰ƒìý‰Ø‹Uð‚ðPVè\¥ƒÄ‹Eð˜ðSV腦ƒÄéiÿÿÿ‰ðeô[^_]ÉöU‰åWVSƒì‹E‹…€ã#‰Eð‹Mƒy(…©‹=Lã#‰ÐÁà)Ѝž$ä#‹U93…‹M I‰ÂÁâ)ÂÁ⋄Љ„й,ä#‹D@‰D@‹„à‰„àƒÂ0¹ ä#‹
-%ÿ÷ÿÿ‹\0ã ؉
-‹UðƒÂ¸ƒ¼º€ÿ•ÀH‹] ‰„š€é¢v‹U R‰ÂÁâ)ÂÁâ»$ä#‹A‰„Ѓyt‹A‰‚lä#‹A‰„àë-‰ö‹] [‰ÐÁà)ÐÁà‹]ð‹“ô‰lä#‹“ô‰ç#ƒy$u‹E @‰ÐÁà)Ё ÅPä#¸ƒy ”ÀH‹U ‹Mð‰„‘ˆ¸ƒÄ[^_]ÃU‰åWVSƒì ‹U‹<•€ã#ƒ¿t8LJƒì‹E @‰ÐÁà)ЋÅôæ#‹—ðÂPÿu 詤酋E @‰ÐÁà)ЍÅöƒQä#t?K@¾,ä#ƒ<11º$ä#‹1„à‰1ƒì‹„Ћ—ðÂPÿu èK¤ë*ƒì‹E @‰ÐÁà)ЋÅôæ#‹—ðÂPÿu è³£ƒÄ‹E @‰ÐÁà)ÐfÇÅHä#€eô[^_]ÐU‰åWVSƒìH‹]ÇE¼ÇEÀfÇEÄÇEÈÇEÌÇEÐÇEÔÇEØÇEÜÇEà¶Ã -f‰E¸‹€ã#‹€ø‰EÈÇE̍E¸jjPhœ"h6#腧ÿÿ‰ÆƒÄ ƒþÿuƒì h 6#èVËÿÿƒÄ‹<€ã#v‰ÐÁà)Ðfƒ<ÅHä#tµ€Gƒ<ÿtJÿëE‰öƒìv‰ÃÁã)ÃÁ㍃dä#PjèJ;fǃHä#€ƒÄ‹ƒôæ#‹—ðÂPVè䢃čeô[^_]ÐU‰åWVSƒì‹}h
-6#è¾ÊÿÿèiÁÿÿ‰EðƒÄ hPh 6#è£ÊÿÿÇ$èÏÄÿÿ‰ÃƒÄSh>6#è‡Êÿÿ‹Eð‰…€ã#ƒÄ jhJ6#Sè=efÇCÆCÇC4Œ"ÇC`Œ"ÇC (‚"ÇC$ƒ"ÇC(lŒ"ÇC,ȃ"ÇC0xŒ"ÇC4€Œ"ÇC8ŒŒ"ÇC<@…"ÇC@̌"ÇCDX"ÇCH "ÇCL¨"ÇCP@Ž"ÇCTˆŽ"ÇCX¼Ž"ÇC\ "ÇC`À"ÇCd؏"ÇChð"ÇCl"ÇCp "ÇCt8"ÇCxP"ÇC|h"ǃ€€"ǃ„˜"¸ƒÄS‰öDŽ‚€ÿÿÿÿ@=™~í‹EH‰ƒüƒì ‹EÁàPè˜Ãÿÿ‰ƒð¾ƒÄ;u}ƒì ‹ƒððPèꟃÄF;u|åÿçw¿èÿ ¡v¿ ¡‰»ô‹E‰ƒøƒ} tƒìjÿuðh<†"萾ÿÿƒÄeô[^_]ÐU‰åWVSƒì ‹M‹u ‹]‹€ã#‰Eð…Éx[; -Pã#sS‹€ã#‹@%ÿÿÿ=u=þ™wv‰ÐÁà)Ðfƒ<ÅHä#u -¸éèvv‰ÐÁà)Ð9 Å$ä#t -¸&éȍv…Ûuv‰ÐÁà)Ё ÅPä#ë)ƒûuv‰ÐÁà)Ё$ÅPä#ÿ÷ÿÿë ¸郉öv‰ÐÁà)ÐÁà˜Ð¿$ä#‹U9;t\f¸Hä#€u=ƒì‹;‹Mð‹‘ðÂPV蜞‹E‰;ƒÄ‹Uð‹‚ð‹MÈPV蹟ƒÄëv‰ÐÁà)ЋU‰Åôæ#¸eô[^_]ÍvU‰åVS‹M‹4€ã#…Éx; -Pã#s‹€ã#‹@%ÿÿÿ=t¸ÿÿÿÿëw¡Lã#@‰ÂÁâ)¸ÿÿÿÿ9 Õ$ä#uZúè!P‹Lã#R‰ÑÁá)Ñ» ä#f‰DËdžè°¨ÿÿ¡Lã#@‰ÂÁâ)ƒì ¿DÓPèçO薲ÿÿƒÄû¸eø[^]ÉöU‰å‹E‹…€ã#‹€ü]ÍvU‰å‹E‹…€ã#‹€ô]ÍvU‰åS‹]‹M …ÛxU;Pã#sM‹€ã#‹@%ÿÿÿ=u7ù™wI‰ÐÁà)Ðfƒ<ÅHä#u¸ëMI‰ÐÁà)Ð9Å$ä#t ¸&ë3‰öI‰ÁÁá)ÁÁá¸öQä#”À‹U‰‹‘ôæ#‹E‰¸‹$ÉÉöU‰å‹E f8t·‹E -9Âu¸ë¸ÿÿÿÿ]ÐU‰å¸ÿÿÿÿ]ÉöU‰å¸]ÉöU‰å]ÍvU‰å¸]ÉöU‰åSƒì ‹E‹M ‹…€ã#I‰ÐÁà)ЋÅôæ#‹“ðÂPQè;œƒÄ‹]üÉÍvU‰åWVSƒì ‹E‹u ‹<…€ã#v‰ÐÁà)Ðfƒ<ÅHä#tµ€Gƒ<ÿtHÿëCƒìv‰ÃÁã)ÃÁ㍃dä#PjèR5fǃHä#€ƒÄ‹ƒôæ#‹—ðÂPVè윃čeô[^_]ÐU‰åSƒì ‹E‹M ‹…€ã#I‰ÐÁà)ÐÁàfǀHä#€‹€ôæ#‹“ðÂPQ蠜ƒÄ‹]üÉÃU‰å]ÍvU‰åWVSƒì ‹U‹•€ã#‰Eð‹U <•€‰ÆƒÆƒ<7~MƒìR‰ÃÁã)ÃÁ㍃dä#Pjè‹4ÿ 7ƒÄ‹ƒôæ#‹Mð‹‘ðÂPÿu 躛fǃHä#€ƒÄë‹E @‰ÐÁà)ÐfÇÅHä#eô[^_]ÐU‰åƒì‹E‹M ‹…€ã#ƒÀDŽˆ€ÿÿÿÿI‰ÐÁà)ÐfÇÅHä#hÄã#QèðÉÿÿƒÄÉÍvU‰å‹E‹U ‹…€ã#ƒÀDŽ€R‰ÐÁà)ÐfÇÅHä#]ÃU‰åWVSƒì4‹u v‰EäÁà+EäfÇÅHä#EèPjè“3Mè»@B‹Eº÷ó‰Uà’€€‰E܋A‹U܍ЉE؉A»¡/¸D÷ë‰ÓÁû‹EØÁø)ÿƒÞC‹E÷ç‰×‰øÁèEè‹A»Êš;™÷û‰Ó‰YƒÄVh°"ÿuìÿuèÿ$ã#‰ÃƒÄƒûÿuƒìÿ5Lã#jèAäÿÿƒÄ v‰ÈÁà)ȉÅç#eô[^_]ÐU‰åƒìÿ5Lã#jèäÿÿ¸ƒÄÉÍvU‰åƒìÿ5Lã#jèñãÿÿƒÄÉÃU‰åƒìÿ5Lã#jèÙãÿÿƒÄÉÃU‰åƒìÿ5Lã#jèÁãÿÿƒÄÉÃU‰åƒìÿ5Lã#jè©ãÿÿƒÄÉÃU‰åƒìÿ5Lã#jè‘ãÿÿƒÄÉÃU‰åƒìÿ5Lã#jèyãÿÿƒÄÉÃU‰åƒìÿ5Lã#jèaãÿÿƒÄÉÃU‰åƒìÿ5Lã#jèIãÿÿƒÄÉÃU‰åƒìÿ5Lã#jè1ãÿÿƒÄÉÃU‰åƒìÿ5Lã#jèãÿÿƒÄÉÃU‰åWVSƒì‹MI‰ÃÁã)ÃÁãº$ä#‹‹4…€ã#¿ ä#fÇD(€‹„Ћ–ðÂPQè=™Ç„àÿÿÿÿ詗ÿÿƒÄeô[^_]ÉöU‰åVSƒì hÀ7#è
-Áÿÿèµ·ÿÿ‰ÆÇ$Œè/»ÿÿ‰Ã‰µ€ã#ƒÄ jhX7#Sè®[fÇCÆCÇC\’"ÇC’"ÇC œ’"ÇC$Ē"ÇC(ÇC,ܒ"ÇC0è’"ÇC4ð’"ÇC8ü’"ÇC<“"ÇC@ “"ÇCDH“"ÇCHp“"ÇCL˜“"ÇCPÀ“"ÇCTè“"ÇCX”"ÇC\8”"ÇC`d”"ÇCdŒ”"ÇCh´”"ÇClܔ"ÇCp•"ÇCt,•"ÇCxT•"ÇC||•"ǃ€¤•"ǃ„Ì•"ǃˆÿÿÿÿÇ$c7#èô¿ÿÿƒÄ jVhô•"脵ÿÿƒÄeø[^]ÉöU‰å‹M‹E ‹€ã#fƒ8t·9Èu¸ƒºˆÿt¸ÿÿÿÿ]ÉöU‰å¸ÿÿÿÿ]ÉöU‰åƒì‹E‹…€ã#ÿ°ˆhÅ6#èìYƒÄÉÍvU‰å‹E‹…€ã#‹€ˆ]ÍvU‰å¸]ÉöU‰å]ÍvU‰å¸]ÉöU‰å]ÍvU‰å‹E @‰ÂÁâ)ÂfÇÕHä#]ÃU‰åƒìhÔ6#èxYƒÄÿ5Lã#j è„àÿÿƒÄÉÍvU‰åƒìhÛ6#èPYƒÄÿ5Lã#j è\àÿÿƒÄÉÍvU‰åƒìhâ6#è(YƒÄÿ5Lã#j è4àÿÿƒÄÉÍvU‰åƒìhé6#èYƒÄÿ5Lã#j è àÿÿƒÄÉÍvU‰åƒìhð6#èØXƒÄÿ5Lã#j èäßÿÿƒÄÉÍvU‰åƒìh÷6#è°XƒÄÿ5Lã#j è¼ßÿÿƒÄÉÍvU‰åƒìhþ6#èˆXƒÄÿ5Lã#j è”ßÿÿƒÄÉÍvU‰åƒìh7#è`XƒÄÿ5Lã#jèlßÿÿ¸ƒÄÉÉöU‰åƒìh 7#è4XƒÄÿ5Lã#jè@ßÿÿƒÄÉÍvU‰åƒìh7#è XƒÄÿ5Lã#jèßÿÿƒÄÉÍvU‰åƒìh7#èäWƒÄÿ5Lã#jèðÞÿÿƒÄÉÍvU‰åƒìh!7#è¼WƒÄÿ5Lã#jèÈÞÿÿƒÄÉÍvU‰åƒìh(7#è”WƒÄÿ5Lã#jè ÞÿÿƒÄÉÍvU‰åƒìh/7#èlWƒÄÿ5Lã#jèxÞÿÿƒÄÉÍvU‰åƒìh67#èDWƒÄÿ5Lã#jèPÞÿÿƒÄÉÍvU‰åƒìh=7#èWƒÄÿ5Lã#jè(ÞÿÿƒÄÉÍvU‰åƒìhD7#èôVƒÄÿ5Lã#jèÞÿÿƒÄÉÍvU‰åƒìhK7#èÌVƒÄÿ5Lã#jèØÝÿÿƒÄÉÍvU‰åSƒì0‹]ÇEÜÇEàfÇEäÇEè¶Ãf‰EØÇEìEØjjPh€–"hR7#è˜ÿÿƒÄ ‹€ã#‰Ã‰šˆƒûÿuƒì h€7#èÒ»ÿÿƒÄ[‰ÐÁà)ÐÇÅXä#ÿÿÿÿ‹]üÉÐU‰åôëýU‰åWVSƒì ‹} ¾ú»ëvCûÿ2Ý)ØÁàºÀ¥#€|t߃ìÿ4ÿuèaVƒÄ…Àuʾ…öt1ÿÀuèðnÇûéÜûÝ)؍…Ä¥#éˉö÷Ç@uè¿nÇû髍v‹E‰Eð=ÿ~èžnÇû銉ö‹Æ#ƒúÿtqÕ)Ѝ<…w‹†Ä¥#£Æ#ƒì ÿuèV@‰$èß´ÿÿ»À¥#‰ƒÄÿuPè7U‹Eð‰‡È¥#‡Ì¥#‰$è,‘ÆDƒÄû‡Ä¥#ëvènÇû¸eô[^_]ÍvU‰åWVSƒì ¾ú¿»À¥#vý)øÁà€|tƒìÿ4ÿuèUƒÄ…Àu¾Gÿÿ~ʅötJƒì ÿuèOUƒÄ@Pý)ûÁã¾À¥#ÿ43è}´ÿÿƒÃÆD3¡Æ#‰ƒÄ¥#‰=Æ#ƒÄûë‰öèSmÇû¸eô[^_]ÍvU‰åWVSƒì ‹}?ÿw‹Õ)Ѐ<…Ø¥#uèmǸÿÿÿÿé‰öèÏæÿÿúè5B‹Lã#R‰ÑÁá)Ñf‰Í(ä#‹Õ)Ѝ4…À¥#ƒ~ ÿu
-ƒ~…“ƒìWjÿL_#ƒÄhä#jè8)ƒÄUè¡ä#;Xã#|¡ä#+Tã#‰Eè¡ä#+Xã#ë!‰ö¡ä#+Tã#H‰Eè¡ä#+Xã#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыLã#R‰ÐÁà)Ð) Ålä#ƒì QèR—ÿÿƒÄƒ=\ã#ÿtƒì ÿ5\ã#ÿ(ã#Ç\ã#ÿÿÿÿƒÄ‹ -Lã#I‰ÐÁà)ЋÅ$ä#ƒì‹…€ã#QPÿRH‹ -Lã#I‰ÐÁà)л ä#fÇDÃ(ÍǂÀÁ#‹‰‚ÄÁ#ƒÄF PQèÇLã#ÿÿÿÿÇ`ã#ÿÿÿÿèM™ÿÿ¡Lã#@‰ÂÁâ)¿DÓ‰$è…@è4£ÿÿƒÄûèÿäÿÿë8ÿNƒìWjÿL_#¡Lã#@‰ÂÁâ)¿Õ(ä#‰$èF@èõ¢ÿÿƒÄû¸eô[^_]ÃU‰åWVSƒì ‹}‹]?ÿw‹Õ)Ѐ<…Ø¥#uè¯jǸÿÿÿÿéVv…ÛuúëúèÒ?‹Lã#R‰ÑÁá)Ñf‰Í(ä#‹Õ)Ѝ4…À¥#…Ûu0ƒ~ ÿu‹E 9F}èMjÇ û¸ÿÿÿÿéó‹E )Fûéâèäÿÿƒ~ ÿu ‹E 9F‘ƒìWjÿL_#ƒÄhä#jèš&ƒÄUè¡ä#;Xã#|¡ä#+Tã#‰Eè¡ä#+Xã#ë¡ä#+Tã#H‰Eè¡ä#+Xã#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыLã#R‰ÐÁà)Ð) Ålä#ƒì Q趔ÿÿƒÄƒ=\ã#ÿtƒì ÿ5\ã#ÿ(ã#Ç\ã#ÿÿÿÿƒÄ‹ -Lã#I‰ÐÁà)ЋÅ$ä#ƒì‹…€ã#QPÿRH‹ -Lã#I‰ÐÁà)л ä#fÇDÃ(͋E ‰‚ÀÁ#‹‰‚ÄÁ#ƒÄF PQè'ÇLã#ÿÿÿÿÇ`ã#ÿÿÿÿ貖ÿÿ¡Lã#@‰ÂÁâ)¿DÓ‰$èê=虠ÿÿƒÄûèdâÿÿë<‰ö‹E )FƒìWjÿL_#¡Lã#@‰ÂÁâ)¿Õ(ä#‰$è§=èV ÿÿƒÄû¸eô[^_]ÐU‰åWVSƒì ‹}?ÿw‹Õ)Ѐ<…Ø¥#uèhǸÿÿÿÿéU‰öè,…À„‡œúX‰Æ‹Õ)Ѝ…À¥#‹JA‰J‹Z ƒûÿtG‹ÝÀÁ#9È<)Á‰È‰BƒìB PSèʊ[‰ÐÁà)ЋÅ$ä#ƒÄ‹•€ã#SRÿPDè]ŠÿÿƒÄƒìWjÿL_#ƒÄ‰ðPé¼‰öúèª<‹`ã#R‰ÑÁá)Ñf‰Í(ä#‹Õ)Ѝ…À¥#‹JA‰J‹Z ƒûÿtG‹ÝÀÁ#9È<)Á‰È‰BƒìB PSè*Š[‰ÐÁà)ЋÅ$ä#ƒÄ‹•€ã#SRÿPDèå”ÿÿƒÄƒìWjÿL_#¡Lã#@‰ÂÁâ)¿Õ(ä#‰$è <躞ÿÿƒÄû¸eô[^_]ÐU‰åWVSƒì ‹] ÇEð‹E8ÿw‹Õ)Ѐ<…Ø¥#uèlfǸÿÿÿÿéÊèc*…À„ÃœúX‰Â‰Uì‹E‹Õ)Ѝ4…À¥#^‹^ ƒûÿts݉‹€ÀÁ#;F_¿ÀÁ#ÇEðv‹F+:‰FƒìF PSè
-‰[‰ÐÁà)ЋÅ$ä#ƒÄ‹•€ã#SRÿPD‹^ ƒÄƒûÿt݋:;F~°ƒìÿujÿL_#ƒÄƒ}ðtèlˆÿÿ‹Uì‰ÐPéõúèÊ:‹`ã#R‰ÑÁá)Ñf‰Í(ä#‹E‹Õ)Ѝ4…À¥#^‹^ ƒûÿtr݉‹€ÀÁ#;F^¿ÀÁ#ÇEð‰ö‹F+:‰FƒìF PSè2ˆ[‰ÐÁà)ЋÅ$ä#ƒÄ‹•€ã#SRÿPD‹^ ƒÄƒûÿt݋:;F~°ƒìÿujÿL_#ƒÄƒ}ðt輒ÿÿ¡Lã#@‰ÂÁâ)ƒì ¿Õ(ä#Pèð9蟜ÿÿƒÄû¸eô[^_]ÉöU‰åWVSƒì ¾¿Ä¥#õ)óÁãǃÀ¥#‰4;ǃȥ#ƒì ƒÌ¥#PèF‡ƒÃF‰;ƃȥ#ƒÄ‰Æþÿ~±Ç¸Á#ÿÿÿÿǐÆ#ƒìjh4¥"蒥ÿÿƒÄeô[^_]ÍvU‰åVS‹uú>ÿw‹Õ)Ѐ<…Ø¥#uèÉcÇû¸ÿÿÿÿënvƒì ‹Õ)лÀ¥#ÿ4ƒèUKƒÄ@P‹Õ)Ðÿ4ƒè‰ªÿÿ‹Õ)ÐÆDƒ‹Õ)ЋÆ#‰…Ô¥#‹£Æ#ƒÄû¸eø[^]ÉöU‰åƒì‹Mú9ÿw‹Õ)Ѐ<…Ø¥#uècÇû¸ÿÿÿÿëb‰ö‹Õ)Ѓ<…Ì¥#ÿtèîbÇû¸ÿÿÿÿë8‹Õ)ÐÆ…Ø¥#‹Õ)ЋÆ#‰…Ô¥#‹£Æ#û¸ÉÉöU‰åSƒì‹M‹] 9ÿw‹Õ)Ѐ<…Ø¥#uèubǸÿÿÿÿë_ú‹Õ)ÐÁàƒ¸Ì¥#ÿu ‹€È¥#‰ë7‰öÇ‹Õ)Ћ…Ì¥#¹(ä#vÿ @‰ÐÁà)ЋDÁPƒøÿuëû¸‹]üÉÃU‰åVS‹u‹M¸ùÿ‡–ú‹Æ#‰ƒúÿtnÕ)Ћ…Ô¥#£Æ#‹Õ)лÀ¥#ǃ‹Õ)Љ …È¥#ƒì ‹Õ)Ѝ…Ì¥#P腄‹Õ)ÐÆDƒƒÄëègaÇû¸ÿÿÿÿëû¸eø[^]ÍvU‰åƒì‹M9ÿw‹Õ)Ѐ<…Ø¥#uèaǸÿÿÿÿë=ú‹Õ)Ѝ…À¥#ƒx ÿuƒxuèì`Ç û¸ÿÿÿÿë ‰öÿHû¸ÉÐU‰å‹E@‰ÂÁâ)¸fƒ<ÕHä#”À]ÐU‰åVS‹][‰ÐÁà)Ѝ4Åfƒ¾Hä#uAƒì‹ÝÄÁ#Õ)Ѝ…Ì¥#PS脃‹†$ä#ƒÄ‹…€ã#SPÿRD¸ƒÄ됸eø[^]ÃU‰åVSƒ=X_#…ÚÇX_#¹»À®%¾Ä®%‰ÁàP ÆÇ2ÿÿÿÿÆDAƒùváƒìjjh Æ#èÜýÿÿ¹ƒÄ¾$±%» ±%‰ö‰ÁàQ‰0Ɖуù -véÇT³%ÿÿÿÿÆP³%DZ%¹¾„³%»€³%vÍ)ÈÁàQ‰0ƉуùvãÇ°¶%ÿÿÿÿƬ¶%Çȶ%eø[^]ÐU‰åWVSƒìŠEˆEóŠUˆUòfÇEæ¾<u€út €}óu€}òuè_Ǐ¸ÿÿÿÿé7‰öúƒ=±%ÿuèí^ǍûÇEìÿÿÿÿ됡±%€‹Õ$±%‰±%û‰Eìƒ}ìÿu -¸ÿÿÿÿéìvƒì h Æ#ègñÿÿƒÄ‹]¾¹º÷ñ‰×ëf‰ö¿€<Åà®%t0ƒìÿu¿ōƒÀ®%Pè³EƒÄ…Àu€»Ø®%„Ÿ¾ëG¹‰øº÷ñ‰×fÿEæfƒ}懜‰ó„Ût–¿Áãƃà®%ƒìÿuƒÀ®%Pè÷D‹E쉃Ԯ%ƒÄ€}óu‰Â’‹] f‰Å(±%ëv‹E썀‹E ¯Ef‰Õ(±%úƒì ‹U썒Áã·ƒ(±%Pè5¤ÿÿº,±%‰ƒÄû…Àu%è”]ǒƒì h Æ#èAõÿÿ¸ÿÿÿÿ魍v‹E썀ÁãS‰Uྠ±%‹ƒ,±%‰‚$±%‰2ƒìjjƒ<±%Pè:ûÿÿƒÄ ·D3Pjƒ@±%Pè#ûÿÿƒÄ jjÃD±%SèûÿÿŠ]ó‹Eàˆ\0ƒÄúƒ=ȶ%ÿuèø\ǎûÇEèÿÿÿÿë¡È¶%Å)‹•„³%‰ȶ%û‰Eèƒ}èÿu_ƒì h Æ#èvôÿÿ‹Eèéä‰öè§\ǐƒì h Æ#èTôÿÿ¸ÿÿÿÿéÀ‰öèƒ\Ǒƒì h Æ#è0ôÿÿ¸ÿÿÿÿ霉ö‹EèÁà+EèÁเ³%ŠUòˆT P‹]ì‰
-‹] f‰\
-ǀ„³%ÿÿÿÿ‰ºˆ³%‹]썛ÆÕ ±%ƍ¿ōr¿À®%€|>t%ƒì¶D>PšÜ®%SèGõÿÿÆD>‰$èšøÿÿƒÄƒì h Æ#èŽóÿÿ¿EèƒÄeô[^_]ÍvU‰åWVSƒìŠEˆEóŠ]ÇEè¿ÆEç<u„Ût €}óu€ûuè‚[Ǐ¸ÿÿÿÿé0‰öúƒ=ȶ%ÿuèa[ǎûÇEìÿÿÿÿë ¡È¶%Å)‹•„³%‰ȶ%û‰Eìƒ}ìÿu ¸ÿÿÿÿéߐ‹EìÁà+EìÁ຀³%ˆ\ ‹M f‰Lǀ„³%ÿÿÿÿƒì h Æ#è°íÿÿƒÄ‹U¾¹º÷ñ‰Öë]v¶€<Åà®%u ¿ÆEçë8ƒìÿu¶ÅÀ®%PèöAƒÄ…Àu¿ëF¹‰ðº÷ñ‰ÖÿEèƒ}è‡Ò‰ù„Ét €}çuR¶Áã¸À®%ÆD ÆDƒìÿuPè>AƒÄ jjÃÜ®%Sè/øÿÿÇ$ Æ#èçñÿÿƒÄ jjSè:ïÿÿëM¶ōCºÀ®%€|t'þDƒì h Æ#è®ñÿÿƒÄ jjƒÜ®%Pèûîÿÿ됃ì h Æ#è‹ñÿÿƒÄ¶‹<ÅÔ®%¿ŠUó:Å8±%tèªYǓ¸ÿÿÿÿéX‰ö€}óu¿·Å(±%9E u€}ót(¿·Å(±%™÷} …ÒtèdYǔ¸ÿÿÿÿéƒì h Æ#è ìÿÿ¶‹Åä®%ƒÄƒúÿ„­€}óu#è&YǕƒì h Æ#èÓðÿÿ¸ÿÿÿÿéЍÕ)з…”³%9E t"èíXǔƒì h Æ#èšðÿÿ¸ÿÿÿÿ鋋MìÁá+M썶Å »Ä®%‹‰„³%‹Mì‰ ë/‰öèŸXǑƒì h Æ#èLðÿÿ¸ÿÿÿÿë@¶‹Uì‰Åä®%ƒì h Æ#è*ðÿÿ‹EìÁà+EìÁàH‰±ˆ³%º€³%‰<Æ¿EìƒÄeô[^_]ÉöU‰åWVSƒì¿E‰Eì‰ÇÁç)ÇÁ獗€³%‰Uðh Æ#èÏêÿÿ‹Mð‹Y›ÁãC‰EèºÄ®%‹€Áà° ±%ƀ ±%F‰$èôÿÿF ‰$è„ôÿÿF$‰$èyôÿÿƒÄú·FPÿv 谞ÿÿû¹Ä®%‹Eè‹ú ’¡±%‰Í$±%‰±%ûƇ€³%ƒÃ ‹Uð‹B‰ƒÄ®%ú¡È¶%‰‡„³%‹Mì‰ -ȶ%ûƃÀ®%Ç$ Æ#è
-ïÿÿƒÄeô[^_]ÍvU‰åWVSƒì ‹u ŠM¿UÕ)Ѝ…€³%‰Eð‹@€Å ±%‹Eð€x uèûVǔ¸ÿÿév€;uèÞVǖ¸ÿÿéù‰ö€{tQ€{u,ƒì¶ÁP‹Uð·BPC PèÈëÿÿƒÄ…Àt;¸évƒì¶ÁP‹Uð·BPC PèœëÿÿƒÄ…ÀuÔƒì CPè-éÿÿƒÄ‹Uð·B‹{‰ÁÁéüó¥¨tf¥¨t¤·B‰ÁK‰K·S‰ÐC 9Ár‰È)ЉC€{u ƒì CPë8‰ö€{uƒì‹Uð·BPC$PèZïÿÿëƒì‹Uð·BPC$PèDïÿÿC‰$èíÿÿƒÄ¸eô[^_]ÐU‰åWVSƒì ‹} ŠM¿UÕ)Ѝ…€³%‰Eð‹@€Å ±%‹Eð€x uè‹Uǔ¸ÿÿév€;uènUǖ¸ÿÿéù‰ö€{tQ€{u,ƒì¶ÁP‹Uð·BPC$PèXêÿÿƒÄ…Àt;¸évƒì¶ÁP‹Uð·BPC$Pè,êÿÿƒÄ…ÀuÔƒì CPè½çÿÿƒÄ‹Uð·B‹s‰ÁÁéüó¥¨tf¥¨t¤·B‰ÁK‰K·S‰ÐC 9Ár‰È)ЉC€{u ƒì CPë8‰ö€{uƒì‹Uð·BPC Pèêíÿÿëƒì‹Uð·BPC PèÔíÿÿC‰$è-ìÿÿƒÄ¸eô[^_]ÐU‰åSƒìhß7#è;ƒÄÿ5±%hë7#è;»ƒÄÝ)ØÁà€¸€³%t8€³%‹B€Å ±%ƒì ÿp ÿp$‹B€ÅÀ®%PShÿ7#è®:ƒÄ Cƒûv­‹]üÉÃU‰åƒì`¿MÍ)ȋ…³%’Å ±%ÿp ÿp$RQh 8#E¨Pèf:ƒÄ ÉÐU‰åSƒì‹]h Æ#èHæÿÿ¿ÓÕ)Ѝ …‹˜³%€Å ƒÄ€ºÀ®%u ‹„³%‰‚Ä®%¿ÃÅ)ÂÁâƂ€³%ú‹ -ȶ%‰Š„³%£È¶%ûƒì h Æ#èÓêÿÿƒÄ‹]üÉÍvU‰åWVSƒì ‹u ‹E‹<…àã#ú‹^…Ûu-ƒì j èl™ÿÿƒÄ…ÀtÇÿÿÿÿÇ@Ç@ÿÿÿÿ‹U‰‰F‹;Lã#u û¸#é~ƒ;ÿtc¾ ä#‰ö‹ -Lã#I‰ÐÁà)Ћ‰TÆP‹C‰„¬¡Lã#‰CÿCèh€ÿÿ¡Lã#@‰ÂÁâ)ƒì ¿DÖPèŸ'èNŠÿÿƒÄûúƒ;ÿu¤¡Lã#ÿD‡D¡Lã#‰û¸eô[^_]ÉöU‰åWVSƒì ‹E ‹x¸…ÿ„À‹;Lã#tû¸髍vúè*'‹Lã# [‰ÊÁâ)Êf‰Õ(ä#‹E‹…àã#ÿL˜DÇÿÿÿÿ‹_ÇGÿÿÿÿƒûÿt-p ‰Ù[‰ÐÁà)ЉÅpä#‹œž DŽŽ ÿÿÿÿƒûÿuÖÇGènÿÿ¡Lã#@‰ÂÁâ)ƒì ¿Õ(ä#Pè¢&èQ‰ÿÿƒÄû¸eô[^_]ÃU‰åVSƒì h„8#è~ÿÿèe”ÿÿ‰ÆÇ$裗ÿÿ‰Ã‰µàã#ƒÄ jh˜8#Sè"8fÇCÍÆCÇCÇCtµ"ÇC Àµ"ÇC$̵"ÇC(Ôµ"ÇC,¶"ÇC00¶"ÇC4x¶"ÇC8ز"ÇC<À¶"ÇC@À³"ºƒÄsK •ÇD@DŽ ÿÿÿÿBú™~ݍeø[^]ÉöU‰åVS‹E‹…àã#ƒì h`8#è7¾ƒÄƒÃƒìÿt³@h8#èû6ƒÄFþ™~ãeø[^]ÃU‰å¸ÿÿÿÿ]ÉöU‰å]ÍvU‰åƒì‹E‹U ‹…àã#ƒÀƒ|@tƒìRj
-èȽÿÿƒÄÉÍvU‰å‹U :t ‹E -9u
-¸ëv¸ÿÿÿÿ]ÐU‰åSƒì‹] j è+–ÿÿ‰ÂƒÄ¸ …Òt!ÇÿÿÿÿÇBÇBÿÿÿÿ‹E‰‰S¸‹]üÉÍvU‰åSƒì‹] ‹Cƒxt ¸ë&‰öúƒ{tƒìj ÿsè<–ÿÿÇCƒÄû¸‹]üÉÍvU‰åWVSƒì ‹}‹u ú‹^…Ûu*ƒì j 苕ÿÿƒÄ…ÀtÇÿÿÿÿÇ@Ç@ÿÿÿÿ‰>‰Fƒ;ÿt
-û¸ë"‰ö¡Lã#‹½àã#ƒÂÿD‚@¡Lã#‰û¸eô[^_]ÃU‰åWVSƒì ‹E ‹U‹•àã#ú‹p¸…ö„V‹;Lã#u û¸#éA‹Lã#‹F ¿ ä#;„“°v -¸é v¡Lã#‹Œƒ°‹“¬…Òt‰ö‹;Lã#…Š‹R…Òu븅À…†‹ -Lã#I‰ÂÁâ)‹ƒ¬‹‰D×P‹ƒ¬‹@‰„‹‹“¬¡Lã#‰B‹ƒ¬ÿ@èÂ{ÿÿ¡Lã#@‰ÂÁâ)ƒì ¿D×Pèù"訅ÿÿƒÄûúéRÿÿÿ‰ö¸;J ’Àérÿÿÿ‹E‹…àã#¡Lã#ÿDƒD¡Lã#‰¹‹ƒ¬‹V ë‰ö‰Á‹A…Àt;P sò…Ét‰q됉³¬…Àt‰p‰F‰Nû¸eô[^_]ÍvU‰åWVS‹}‹E ‹ ½àã#ú‹X¸…Û„Ù‹;Lã#uû¸#éčv‹Lã#‹C ;„‘°s
-¸饡Lã#‹´°‹‘¬…Òt‰ö‹;Lã#u‹R…Òu︅Àuû¸ëk‰ö¸;r ’Àëåv‹ ½àã#¡Lã#ÿDD¡Lã#‰¾‹¬‹S 됉ƋF…Àt;P sò…öt‰^됉™¬…Àt‰X‰C‰sû¸[^_]ÉöU‰åWVSƒì ‹E ‹x¸…ÿ„ï‹;Lã#tû¸éڍvúè&!‹Lã# [‰ÊÁâ)Êf‰Õ(ä#‹E‹…àã#‰EðÿL˜DÇÿÿÿÿ‹_ÇGÿÿÿÿƒûÿt2‰ÆƒÆv‰Ù[‰ÐÁà)ЉÅpä#‹œžDŽŽÿÿÿÿƒûÿuÖÇG‹O‹W…Éu -‹Eð‰¬ë‰ö‹G‰A…Òt‹G‰Bè;yÿÿ¡Lã#@‰ÂÁâ)ƒì ¿Õ(ä#Pèo èƒÿÿƒÄû¸eô[^_]ÐU‰åVSƒì hÄ8#èJ—ÿÿè1Žÿÿ‰ÃÇ$€èo‘ÿÿ‰Æ‰4àã#ƒÄ jhØ8#Vèî1fÇFÌÆFÇFÇF|¼"ÇF ½"ÇF$,½"ÇF(\½"ÇF,¤½"ÇF0н"ÇF4(¾"ÇF88·"ÇF<À¸"ÇF@Ĺ"ºƒÄ^N•ÇD@DŽ°ÿÿÿÿDŽÿÿÿÿBú™~Òdž¬eø[^]ÐU‰å‹U‹M ¸ÿÿÿÿ…Òt;‹‹…àã#ƒxu‹@%ÿÿÿ=Ìu…Ét ‹B‹@ ‰ë
-‰ö¸ÿÿÿÿ됸]ÐU‰å‹U‹M¸ÿÿÿÿ…Òt@‹‹…àã#ƒxu‹@%ÿÿÿ=Ìt¸ÿÿÿÿ됅Ét‹B‹@ ‰‹R‹E ‰B ¸]ÃU‰å‹E‹M ‹U‹…àã#‰”ˆ°]ÃU‰åWVSƒì‹E‹<…àã#h`8#è0»ƒÄwƒìÿtž@h8#èó/ƒÄCû™~ãƒì h¢8#èÚ/»ƒÄ‰öƒìÿ´Ÿ°h¾8#è¼/ƒÄCû™~àeô[^_]ÃU‰å‹U :t ‹E -9u
-¸ëv¸ÿÿÿÿ]ÐU‰åS‹E‹U ‹]‹ …àã#Áâ‹C‰„°ÇD
-D‹$ÉÉöU‰åVS‹E‹u ‹…àã#ƒ|³DtƒìVj
-èD¶ÿÿƒÄë vÇD³DDŽ³°ÿÿÿÿeø[^]ÉöU‰å‹U :t ‹E -9u
-¸ëv¸ÿÿÿÿ]ÐU‰åSƒì‹] j苎ÿÿ‰ÂƒÄ¸ …Òt1ÇÿÿÿÿÇBÇBÿÿÿÿ‹E‹@‰B ÇB‹E‰‰S¸‹]üÉÍvU‰åSƒì‹] ‹Cƒxt ¸ë&‰öúƒ{tƒìjÿs茎ÿÿÇCƒÄû¸‹]üÉÍvU‰åWVSƒì$·]Shâ8#è .‰Ø-yƒÀÁèƒÄ ·À‰Eè@ÛÁã¿€Ã%ÿt8CP‰Eä·8Phé8#èá-ƒÄ ÿt;·D;Ph÷8#èÊ-ƒÄ ÿt; s·>Ph9#è±-ƒÄ ÿt>·D>Ph9#èš-ƒÄ ‹Uä·D:P·DLPh*9#è~-‹UèÕƒÄ·ØSh;9#èc-EóPEòPEìPS蹃ĶUóR¶UòRÿuìPh€9#è6-ƒÄ eô[^_]ÍvU‰åWVSƒì ‹E‹U‹]¹‹u ƒî‰ƒî‰º`F&fƒ=`F&yA¿Áfƒ<Byfù™~îfù™~ƒì hP9#èÎ,¸ƒÄé ¿Á<¹`F&‰Úf Ê€f‰Ǎ<ÿÁ纀Ã%‰tÇD _ÇDfŒÙf‰LfÇfÇDÇD _ ‹M‰ ÇDÇDO0ÇDÇD Ǎ_@ÇÇD‰t‰t fŒÉf‰L fŒÙf‰LfŒÛOPf‰\fŒÛf‰fÇD 0fÇD0O`fÇfÇDfÇDÇìÃ%¾ G&¹üó¥Å˜eô[^_]ÐU‰åVS‹u ¿E-‰Â…ÀyP‰ÐÁø@ÀÁเÃ%f‰tX@Vf‰T f‰t ƒÀPf‰tf‰4[^]ÉöU‰å¿E-‰Â…ÀyP‰ÐÁøfDŽ`F&]ÉöU‰åSƒì‹]¿E Phh9#Sè~3‰ØƒÄ‹]üÉÃU‰åVS趉Æès»‰öƒìhhÈ"SèƒÄhôÁ"SèìƒÄCƒû~ۉðeø[^]ÉöU‰åƒìèaÉÍvU‰åSƒì‹]‹\_#€82uºð°îƒìShÂ:#èˆ*ƒÄÁ㋃\_#@PhE#èp*ƒÄÿ³ _#ènƒÄ‹]üÉÉöU‰åƒìÿuhÙ:#èE*èèûÇ$èG7ƒÄÉÉöU‰åWVSƒì‹E‹} ƒ=ÄÁ%„à…ÿ„Ø¡@¸%€€€ źm¶‰È÷â‰È)ÐÑ草ÁÁé
-‰O¡D¸%ÀP‰ÐÁà)кè‰Ó™÷û’’’щW¡D¸%ÀP‰ÑÁá)ѾÓMb‰È÷îÁú‰ÈÁø‰Ó)øƒÞC÷o‰ÑÁù‹GÁø)Á‰È؉‹OÁú‰ÈÁø)’’’’’’Áâ)э ‰ ‰ ‰Áá‰O‹éԉö]è¡@¸%€€€ źm¶‰È÷â‰È)ÐÑ草ÁÁé
-¡D¸%ÀP‰ÐÁà)кè‰Ö™÷þ’’’щS¡D¸%ÀP‰ÑÁá)ѾÓMb‰È÷îÁú‰ÈÁø)‰Uè‹{¸ƒÞC÷ï‰ÑÁù‰øÁø)Á‰ÈEè‰ùÁú‰ÈÁø)’’’’’’Áâ)э ‰ ‰ ‰Áá‰K‹E荀€€€€€‰ÃÁã‰È÷îÁúÁù)ʍéèvƒøuc¸ƒ=4¸%…Ρ8¸%€€€€€€‰ÃÁã‹ -<¸%ºÓMb‰È÷êÁúÁù)ÊӅÿ„…¡8¸%‰¡<¸%éqvƒø…ç¶$¸%ƒøtƒø…Àt
-ë,ƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹ -0¸%f)Ù·É -@¸%º×®¬]‰È÷êÁú‰ÈÁø)ÂD¸%’BÁà)Ѝ‚‰ÂÁâ Ð)Á‰È£@¸%f‰0¸%…ÿ„̍€€€ źm¶‰È÷â‰È)ÐÑ草ÁÁé
-‰O¡D¸%ÀP‰ÐÁà)кè‰Ó™÷û’’’щW¡D¸%ÀP‰ÑÁá)ѺÓMb‰È÷êÁú‰ÈÁø‰Ó)Ëw¸ƒÞC÷î‰ÑÁù‰ðÁø)Á‰È؉‰óÁú‰ÙÁù)ʍ’’’’’’Áâ‰Ø)Ѝ€€€Áà‰G‹@¸%’’’4Õ¹Á6ۉð÷é‰Ó3‰ÁÁù
-‰ð™‰È)Ћ -D¸%ɍ‘ÑÁâ)ʉÑÁá)эÈ鍃ø…ƒ=4¸%…rUè¡8¸%‰¡<¸%‰B»@¹C°Ò‰Êî‰Úì¶ÈìÁàf¶Ñ зð·ÀÁ%9Æv%hæ:#j_hø:#hÿ:#èm%Ç$èmƒÄ·ÀÁ%)ó¯(¸%·ÀÁ%‰Ø‰Ñº÷ñ‰Ãº °
-îì©t‹ -(¸%;ÍÌÌ̉ð÷âÁê9Ós‰Ëu荛€€‹V‰Eä‰F¸¡/¸D÷mä‰ÑÁù‹EäÁø)Á‰ÈEè‹N¸¡/¸D÷éÁú‰ÈÁø)’’’’’’’’’Áâ )щN¡8¸%€€€€€€Áà‰Eä‹ -<¸%ºÓMb‰È÷êÁúÁù)ʋEäÐÅÿt ‰ð‹‰‹@‰G‰Øëv¸eô[^_]ÍvU‰åVSƒìŠEˆE÷ÿ`#ƒ=`#uƒ=ä_#tÿä_#¶E÷€Áàºì¶%ƒ<uIÇö€ð¶%tûƒì ¶]÷›Áã¾à¶%ÿ43ÿ“ä¶%ƒÄöDtú¶E÷€Ç…ì¶%ÿì_#ƒ=`#uƒ=è_#tÿè_#ÿ -`#eø[^]ÍvU‰åWVSº¿ì¶%¾è¶%»ä¶%¹à¶%’ÁàÇ8‰0ÇÇBƒú~ÜÇ`#[^_]ÐU‰åVS‹U‹] ‹uú’ƒ<…ì¶%t÷Æu¸ÿÿÿÿëH’ …ǁì¶%û…Ût‰™ä¶%ºà¶%è¶%‰‰t
-됍’Ç…ì¶%¸[^]ÐU‰å¡`#]ÉöU‰åSƒì¶$¸%ƒøt!ƒø…Àt ë.‰öƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹ -0¸%f)Ù·É -@¸%º×®¬]‰È÷êÁú‰ÈÁø)ÂD¸%’BÁà)Ѝ‚‰ÂÁâ Ð)Á‰ -@¸%f‰0¸%ÿ`#ƒ=`#uƒ=ä_#tÿä_#¡<¸%‰Ã¤Æ#º¡/¸D‰Ø÷êÁú‰ÙÁù)Ê8¸%’’’’’’’’’Á⠉Ø)У<¸%‹ ¸%ë$‹¡,¸%‰‰,¸%‰ ¸%ƒì ÿrÿRƒÄ‰Ú…Òt‹B ;8¸%;8¸%uƋB;<¸%~»ƒ=`#uƒ=è_#tÿè_#ÿ -`#‹]üÉÃU‰åWVSƒì‹uhÄÖ"j@èØ -ƒÄƒ>t,ƒì h;#èß »ÿÿƒÄ¿@¹C°8‰ÊîˆØ‰úîëaƒì h5;#è³ ‹N‰ -(¸%ɍA‰ÂÁâ‰Ñ)ÁºÓMb‰È÷âƒÄ‰ÑÁéu¹f‰ -ÀÁ%‰Ë¿@¹C°4‰Êî‰úˆØî‰ØfÁèî‹£4¸%ƒ=$H&~»A¹C°p‰ÊÚîîÆ$¸%ë%Æ$¸%»B¹C°°‰ÊÚîîºa°îº!ì%þî¹¾`¸%»d¸%ƒùbIÁàx¸%‰0I‰LÃAƒùc~ßǨÁ%Ç,¸%`¸%Çä_#Çè_#¡(¸%€€€ÁࣤÆ#Ç<¸%Ç8¸%Ç@¸%ÇD¸%fÇ0¸%ƒ=4¸%uÇ$ã#´Í"Ç(ã#LÎ"ëÇ$ã#œÎ"Ç(ã#(Õ"eô[^_]ÃU‰å‹E£ä_#]ÍvU‰å‹E£è_#]ÍvU‰å‹E£ô_#]ÍvU‰åWVSƒì ‹E‹U ‰Eè‰Uì¸ÿÿÿÿƒ=,¸%tl‹ -,¸%‹£,¸%‹E‰A‹Eè‰A ‹Eì‰A‹E‰A»‹ ¸%}è‹uè됋…Òt‰ð;B  -;B u‹G;B~‰Óëâ‰ö…Ût‰ ë‰ - ¸%‰‹AƒÄ [^_]ÐU‰å‹E¹‹ ¸%됉ы…Òt;Buó¸ÿÿÿÿ…Òt$…Éu
-‹£ ¸%됋‰¡,¸%‰‰,¸%¸]ÃU‰åWVSƒì,‹E‹U ‰Eè‰Uì¸ÿÿÿÿƒ=,¸%„q‹5,¸%‹£,¸%‹E‰F‹Eè‰F ‹Eì‰F‹E‰Fº‹ ¸%}è‹Mè됋…Ût‰È;C  -;C u‹G;C~‰Úëâ‰ö…Òt‰2鐉5 ¸%ƒ=ÄÁ%…ôƒìEàPjè3óÿÿ‹ ¸%ƒÄ‹Eà;B  -;B u‹Eä;B~ÇEÜÇEØëK}؋ ¸%Mà‹B;A|‹B +Eà‰E؉Ћ@+Aë ¡ ¸%‹@ +EàH‰EØ¡ ¸%‹@+Eäʚ;‰G‹E؍€€€€€€Áà‰EԋMÜ¿ÓMb‰È÷ïÁúÁù)ÊUԍҍB‰ÂÁâ)‰Ð÷çÁê¸ðúðw¸ÈúÇv‰Ðº@îfÁèFeô[^_]ÃU‰åWVSƒì¶$¸%ƒøtƒø…Àt
-ë,ƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹0¸%f)Ú·Ò‰Ö5@¸%¹×®¬]‰È÷î‰ÑÁù‰ðÁø)Á -D¸%‰AÁà)ȍÁ‰ÁÁá ȉò)‰@¸%f‰0¸%]荒’’ Õ¾m¶‰ð÷á‰Ö‰Ê)òÑê2‰ÁÁé
-¡D¸%ÀP‰ÐÁà)кè‰Ö™÷þ’’’щS¡D¸%ÀP‰ÑÁá)ѺÓMb‰È÷êÁú‰ÈÁø)‰Uè‹s¿ƒÞC‰ð÷ï‰ÑÁù‰ðÁø)Á‰ÈEè‰ðÁú‰ñÁù)ʍ’’’’’’Áâ)Ѝ€€€Áà‰Cƒ= ¸%„/ÇÄÁ%‹ ¸%‹Eè;B ;B …Œ‹C;BŽ€ƒ=`#uƒ=ä_#tÿä_#ÿ`#‹ ¸%ë#‹¡,¸%‰‰,¸%‰ ¸%ƒì ÿrÿRƒÄ‰Ú…Òt‹B ;Eè -;EèűB;Eì~ă=`#uƒ=è_#tÿè_#ÿ -`#¶$¸%ƒøt"ƒø …Àt -ë/vƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹0¸%f)Ú·Ò‰Ö5@¸%¹×®¬]‰È÷î‰ÑÁù‰ðÁø)Á -D¸%‰AÁà)ȍÁ‰ÁÁá ȉò)‰@¸%f‰0¸%]荒’’ Õ¾m¶‰ð÷á‰Ö‰Ê)òÑê2‰ÁÁé
-¡D¸%ÀP‰ÐÁà)кè‰Ö™÷þ’’’щS¡D¸%ÀP‰ÑÁá)ѺÓMb‰È÷êÁú‰ÈÁø)‰Uè‹s¿ƒÞC‰ð÷ï‰ÑÁù‰ðÁø)Á‰ÈEè‰ðÁú‰ñÁù)ʍ’’’’’’Áâ)Ѝ€€€Áà‰C‹ ¸%‹Mè;J 
-;J u;B~ÇEäÇEàëJ]à‹ ¸%Mè‹B;A|‹B +Eè‰Eà‰Ð‹@+Aë ¡ ¸%‹@ +EèH‰Eà¡ ¸%‹@+Eìʚ;‰C‹Eà€€€€€€‰ÆÁæ‹Mä»ÓMb‰È÷ëÁúÁù)ʍ2ҍB‰ÂÁâ)‰Ð÷ãÁê¸ðúðw¸ÈúÇv‰Ðº@îfÁèîÇÄÁ%ë -‰öº@°î°ðîeô[^_]ÐU‰åVSƒì‹E»¹‹ ¸%ëv‰Ñ‹…Òt;Buó¸ÿÿÿÿ…Ò„I…Éu‹£ ¸%»ë‹‰¡,¸%‰‰,¸%ƒ=ÄÁ%…ƒ= ¸%uº@°î°ðéû‰ö…Û„òƒìEðPjèºìÿÿ‹ ¸%ƒÄ‹Eð;B  -;B u‹Eô;B~ÇEìÇEèëJ]è‹ ¸%Mð‹B;A|‹B +Eð‰Eè‰Ð‹@+Aë ¡ ¸%‹@ +EðH‰Eè¡ ¸%‹@+Eôʚ;‰C‹E荀€€€€€‰ÆÁæ‹Mì»ÓMb‰È÷ëÁúÁù)ʍ2ҍB‰ÂÁâ)‰Ð÷ãÁê¸ðúðw¸ÈúÇv‰Ðº@îfÁèeø[^]Éöú‹D$¼¨Ö#PèŒëÿÿ`fff f¨f¸0ŽØŽÀ° º î¡ð_#@£ð_#1ÛfŒÓü¡4¸%ƒøtèùòÿÿëè6ùÿÿ°
-º îì¨t ¸@Pè–ÿÿÿf¡ø_#f9þ_#t f£þ_#ÿ-ú_#ƒ=ô_#t‹ô_#ÿÓf©f¡ffaωöU‰å‹EØf£þ_#f£ø_#]Ã1ÀÈÃU‰åf¸0ŽØŽÀ‹Ef;þ_#t f£þ_#ÿ-ú_#]ÉöU‰åƒìjjjj@èaƒÄÉÃU‰åWVSƒì ‹]‹u ‹}聉€:y"…Ût‹B8‰…öt‹BÁà
-‰…ÿt)‹B4‰ë"‰ö…ÛtÇ…öt‹BÁà
-‰…ÿtÇ@ƒ}t ‹BÁà
-‹U‰ƒÄ [^_]ÍvU‰åƒìjjjj@è̓Ä·@0ÉÃU‰å¡¸]#]ÉöU‰å]ÍvU‰åSƒì‹¸]#誃ì SèÍ^ÿÿè ƒÄ‹]üÉÃU‰åWVS‹M ‹u‹}Š]‰ÈÁàeèÿÿ Eè‰ÈÁèUèˆBáÿbÿÿÿ J‰ðˆB‹Ef‰Eè‹EÁè‰EäŠEäƒà ÃË@¶ÃÁàbÿÿÿ Bçüÿ=ª]#‹‰‹B‰G[^_]ÐU‰åWVSƒì ‹] ‹u‹}·EMèª]#‹‰‹@‰A‰Ê¶JÁá¶B ÁÁá·B Á…ÛtŠBƒà¶ÐÁâ·Eè Љ…ötŠE툅ÿt
-ŠEî%ðˆ‰ÈƒÄ [^_]ÉöU‰å‹E ¶UÁâ¹À`#fÇD
-8ƂÅ`#îƂÄ`#f‰
-Áèf‰D
-]ÍvU‰åº °îº!°@î°î°î°ÿ°°pî°î°î°ÿî]ÐU‰åº °îº!°î°î°î°ÿ°°pî°î°î°ÿî]ÐU‰å‹Mf…ÉtWfƒùw¸Óà
-`#ë7fƒùw<·Éƒé¸Óà
-`#¢`#º¡î<ÿu `#©uƒÈ¢`#º!î]ÃU‰å‹Mf…ÉtUfƒùw¸þÿÿÿÓÀ"`#ë5fƒùw:·Éƒé¸þÿÿÿÓÀ"`#¢`#º¡î `#©t%û¢`#º!î]ÉöU‰å¿ø_#]ÃU‰åƒì‹Ef£ø_#˜PèWüÿÿƒÄÉÐU‰å¿ø_#]ÃU‰åƒì‹E‰Âf£ø_#ƒ=`#uƒì ¿ÂPèüÿÿƒÄÉÐU‰åWVì¾¹`#ºP`#‰öµÇäÞ"ÇäÞ"Fƒþ~åƒì EÈPèÅèºÇ H&;#‹EÈ£$H&¶ `#£(H&ƒÄ‹EУ0H&‹EÔ£4H&‹EØ£8H&hà"jè£ýÿÿƒÄh—à"jè”ýÿÿƒÄh¡à"jè…ýÿÿƒÄh¨à"jèvýÿÿƒÄh¯à"jègýÿÿƒÄh¶à"jèXýÿÿƒÄh½à"jèIýÿÿƒÄhá"jè:ýÿÿƒÄhÄà"jè+ýÿÿƒÄhËà"j èýÿÿƒÄhÒà"j
-è -ýÿÿƒÄhÙà"j èþüÿÿƒÄhàà"j èïüÿÿƒÄhçà"j -èàüÿÿƒÄhîà"jèÑüÿÿƒÄhõà"jèÂüÿÿƒÄhüà"jè³üÿÿƒÄh¼ß"jAè¤üÿÿƒÄhÄß"jBè•üÿÿƒÄhÌß"jCè†üÿÿƒÄhÔß"jDèwüÿÿƒÄhÜß"jEèhüÿÿƒÄhäß"jFèYüÿÿƒÄhìß"jGèJüÿÿƒÄhôß"jpè;üÿÿƒÄhüß"jqè,üÿÿƒÄhà"jrèüÿÿƒÄh à"jsèüÿÿƒÄhà"jtèÿûÿÿƒÄhà"juèðûÿÿƒÄh$à"jvèáûÿÿƒÄh,à"jwèÒûÿÿf -”G&€¾ƒÄvÀŀÃ%ƒì jh‰hØPõ·ÀPèúÿÿƒÄ Fþš~ǃì hÐèFùÿÿƒÄÛãݵTÿÿÿ›¿ G&µTÿÿÿ¹üó¥ ÀƒÈ""ÀÛãèƒûÿÿèúÿÿeø^_]ÍvU‰åSƒìº!°ÿîè’ûÿÿ¹@ºC°6Êîîƒ=$H&~¹AºC°tî°‰Êî°ë»B¹C°°‰ÊÚîîºaî‹]üÉÃU‰å‹U‹E ‰•P`#]ÉöU‰å‹U‹E ‰•`#]ÉöU‰åƒìh`;#è
-è— ƒÄÉÉöœX‰Á5PœX9ÈtQ¸Ã¸ÜX‰Á5 PœX1ÈtQ¸øÃf1Àžf¸f»öóŸ€üu¸øÃÆ `#Ûã¹âþfÇ`#ZZÝ=`#¹âþf¡`#<u+Ù=`#¹âþf¡`#f%?fƒø?uÆ `#Æ `#Éö`¸ëp`¸ëh`¸ë``¸ëX`¸ëP`¸ëH`¸ë@`¸ë8`¸ ë0`¸
-ë(`¸ ë `¸ ë`¸ -ë`¸ë`¸ë ¨Pf¸0ŽÀŽØüX1ÛfŒÓP‹…`#ÿÓ[° ƒûrº îº îf¡ø_#f;þ_#t f£þ_#ÿ-ú_#©¡aϸ鋸選ëz¸ës¸ël¸ëe¸ë^¸ëW¸ ëP¸
-ëI¸ ëB¸ ë;¸ -ë4¸ë-¸ë&¸ë` ¨f¸0ŽÀŽØüèש¡aÏPf¸0ŽØŽÀXfŒÓ‹=ª]#ß1ۊŠ_Áãf‹_ÜfŒÒfŒÛŽÓSRPÿ…P`#ƒÄX[ŽÐ)ÜÏU‰åWVSƒì ‹u¸¹ ‰÷üó«è|ýÿÿ…ÀtÇëUèŠýÿÿ…Àt7ÇFǸ¢‰^‰N‰V …Àt+¸¢‰F‰^‰N‰V ëÇècýÿÿ…ÀtÇ ƒÄ [^_]ÍvU‰åWV¿`#È·À-yƒÀÁø9ÂtU¿`#@ÀÝ4ÅìÃ%›È·À-yƒÀÁøf£`#¿5`#¿`H&4v4ö4õìÃ%¹üó¥Ý%`H&^_]ÉöU‰å¿`#]ÃU‰åWVSƒì(ŠM¡”`#Áà ˜€ f¶ÎH&f£ªÖ#f¶ÍH&f£¬Ö#€ù t%€ù €ù„óé‰ö€ù
-„#é‰öfƒªÖ#·ªÖ#;ÐH&Œ½fǪÖ#·¬Ö#¡ÔH&H9Â…¿¡ÐH&H‰Eì‰Uèf¾ÌH&Áâf‰Uò¡”`#Áà °€ ¿;}è:¹;Mì*_ÿv‰ø¯ÐH&È·F‰Ø¯ÐH&Èf‰FA;Mì~ÜG;}è~ƹ;MìKWÿ‰Ð¯ÐH&Èf‹]òf‰FA;Mì~çé)‰öfǨÖ#·ªÖ#‰Áƒø~ºƒÂ·ÂƒÀ9È|óf‰¨Ö#f¡¨Ö#f£ªÖ#éævfǪÖ#·¬Ö#¡ÔH&H9Â…¾¡ÐH&H‰Eà‰UÜf¾ÌH&Áâf‰U桔`#Áà °€ ¿;}Ü=v¹;Mà*_ÿv‰ø¯ÐH&È·F‰Ø¯ÐH&Èf‰FA;Mà~ÜG;}Ü~ƹ;MàGWÿ‰Ð¯ÐH&Èf‹]æf‰FA;Mà~çé%‰öfÿ -ªÖ#·ªÖ#·¬Ö#¯ÐH&ÂÆS fÿªÖ#éõ‰ö·ªÖ#·¬Ö#¯ÐH&Ј CfÿªÖ#·ªÖ#;ÐH&Ž¿fǪÖ#·¬Ö#¡ÔH&H9Â…š¡ÐH&H‰EԉUÐf¾ÌH&Áâf‰UÚ¡”`#Áà °€ ¿;}Ð=v¹;MÔ*_ÿv‰ø¯ÐH&È·F‰Ø¯ÐH&Èf‰FA;MÔ~ÜG;}Ð~ƹ;MÔ'Wÿ‰Ð¯ÐH&Èf‹]Úf‰FA;MÔ~çëfÿ¬Ö#·5ªÖ#·=¬Ö#‰øf¯ÐH&f‰EΡ”`#Áà fEÎfuλÔ°‰Úî¹Õ‰ÊŠEÎî°‰Úîf‹EÎfÁè‰Êî‰óˆÎH&‰ø¢ÍH&ƒÄ([^_]ÐU‰åWVSƒì‹u‹} ‰øf¯ÐH&f‰Eò¡”`#Áà fEòfuò»Ô°‰Úî¹Õ‰ÊŠEòî°‰Úîf‹EòfÁè‰Êî‰ð¢ÎH&‰úˆÍH&ƒÄ[^_]ÍvU‰åS¹Ô°
-‰Êî»Õ‰ÚŠEî° ‰Êî‰ÚŠE î‹$ÉÍvU‰åWVSƒìf¾EÁàf‰Eò¡”`#Áà ¸€ ‹]ë0‹M ;M(sÿ‰Ø¯ÐH&È·G‰ð¯ÐH&Èf‰GA;M~ÜC;]~ʋM ;MSÿv‰Ð¯ÐH&Èf‹]òf‰GA;M~çƒÄ[^_]ÍvU‰åWVSƒì ¡ÐH&H‰Eð‹ÔH&K‰]ìf¾ÌH&Áàf‰Eꡔ`#Áà °€ ¿9ß<‰ö¹;Mð*_ÿv‰ø¯ÐH&È·F‰Ø¯ÐH&Èf‰FA;Mð~ÜG;}ì~ƹ;MðWÿ‰Ð¯ÐH&Èf‹]êf‰FA;Mð~çƒÄ [^_]ÍvU‰å·J‰ÐH&¶„@£ÔH&¶„ÿ ¢ÌH&¶P¢ÎH&¶Q¢ÍH&¶`¢¯Ö#¶a¢®Ö#ǘ`#Ç”`#]ÃU‰åWVSƒì ÎH&¢P ÍH&¢Q¶ÀP¶ÎH&PèŠýÿÿ¶®Ö#¶5¯Ö#ƒÄ¹Ô°
-‰Êî¿Õ‰úˆØî° ‰Êî‰ú‰ðîeô[^_]ÍvU‰åSƒì‹]€;tŠCƒì ¾ÀPèiùÿÿƒÄ€;ué‹]üÉÃU‰åVS‹E‰ÃÁã £˜`#¹Ô° -‰Êî¾Õ‰òˆØî° ‰Êî‰ØfÁè‰òî[^]ÃU‰åVS‹u‹”`#Áâ»ÀÖ#¶ÎH&‰¹àÖ#¶ÍH&‰
-µŠ¢ÎH&Š
-¢ÍH&‰5”`#[^]ÃU‰å¡˜`#]ÉöU‰å¡”`#]ÉöU‰åWVSƒì ‹}f¾u Áæf¾E Ƌ]‹E9Ã3v‹M9ù#‰Ê¯ÐH&¡”`#Áà ÐØf‰´€ A9ù~ÞC;]~ЃìÿuÿuèüÿÿŠE¢ÍH&ŠE¢ÎH&ƒÄeô[^_]ÍvU‰åWVSƒì ¡ÐH&H‰Eð‹=ÔH&Of¾ÌH&ÁãƒË ¾9Æ4¹9ù%v‰Ê¯ÐH&¡”`#Áà Ððf‰œ€ A9ù~ÞF;uð~̃ìjjèûÿÿÆÍH&ÆÎH&ƒÄeô[^_]ÍvU‰åS‹U ‹]‹M¯ÐH&¡”`#Áà ÂU”€ ˆ
-ˆZ‹$ÉÉöU‰åS‹E ‹]‹M‰Â¯ÐH&¡”`#Áà ÂU”€ ¶B…Étˆ¶‰Â…Ûtˆ¾Â‹$ÉÐU‰åS‹E ‹MŠ]‰Â¯ÐH&¡”`#Áà ÂU”€ €9tŠˆABˆB€9uò‹$ÉÐU‰åƒìhœ;#èTýÿÿôƒÄÉÉöU‰åƒìjèƒÄÉÉöU‰åƒìh4èƒÄÉÍvU‰åVS‹Ef£r¹d»þ¾v‰Êì©t Fþÿÿ~í¸@=Ÿ†~ø‰ÚˆÈö@=Ÿ†~øë‰öU‰åSƒìE Pÿuh×#èX‰ÃÇ$×#è¢üÿÿ‰ØƒÄ‹]üÉÃU‰åWVSìð‹} ŠEˆ…ÿÿÿEPÿuÿÿÿSè‰ÆS¾…ÿÿÿPWÿuè±þÿÿ‰ðƒÄ eô[^_]ÃU‰åSƒìE PÿuhÙ#謉ÃÇ$Ù#è&üÿÿ‰ØƒÄ‹]üÉÃU‰åS‹M‹U ‰Ë€:tvŠˆBA€:uõƉ؋$ÉÍvU‰åVS‹]‹U ‹M‰Þë‰öŠˆBC€:t‰ÈI…ÀîƉð[^]ÐU‰å‹U‹M ë -¸€:tBAŠ:t)Ð]ÃU‰åS‹U‹] ‹M…Éëv¶¶Sÿ)Ð됊C8uíŠB„ÀtIu︋$ÉÐU‰å‹U¸€:tB@€:uù]ÍvU‰åS‹E‹] €8t‰Ú€:tŠv:
-tB€:uö@€8u下$ÉÉöU‰å‹E‹U €8t ‰ö8t @€8uö¸]ÍvU‰åS‹]‰Ú€;t‰öŠ
-AŸ<wAàˆB€:uì‰Ø‹$ÉÐU‰åS‹]‰Ú€;t‰öŠ
-A¿<wA ˆB€:uì‰Ø‹$ÉÐU‰åS‹U‹M ‰Ó€;tvB€:uú늈AB€9uõƉ؋$ÉÍvU‰åWVSƒì<‹u‹]ÇEèÇEäÇEàÇEÜÇEØÇEÔÇEпÇEÌÙîÝ]À‰uì‹E €8„D‹U €:%t…ÿuŠˆB‰U FÿEèév‹E €8%u%@‰E ¿ÇEä
-ÇEàÇEØÇE̋U ¾ƒè%ƒøS‡Ñÿ$…à+#‰öÆ%FÿEè鼃ÉòFŠCüˆÿEè驐ƒ}Øt"ƒ}؃}Øtëƒ}ØuƒÃ‹Cü‰EÔë -vƒÃ¿Sü‰Uԃì ÿuÌÿuäj
-VÿuÔè¾ éœƒ}Øt"ƒ}؃}Øtëƒ}ØuƒÃ‹Cü‰EÐë -vƒÃ·Sü‰UЃì ÿuÌÿuäj
-VÿuÐè.éPƒ}Øt"ƒ}؃}Øtëƒ}ØuƒÃ‹Cü‰EÐë -vƒÃ·Sü‰UЃì ÿuÌÿuäjVÿuÐèâ鐃ËCü‰EЃì jÿuäjVPèÂé䐃ËSü€:tŠˆBFÿE܀:uò‹UÜUèévƒ}Øtƒ}؃}Øtëƒ}Øu ƒÃÝCøÝ]ÀƒìÿuÌÿuàÿuäVÿuÄÿuÀèYë~vƒ}Øtƒ}؃}Øtëƒ}Øu ƒÃÝCøÝ]ÀƒìÿuÌÿuàÿuäVÿuÄÿuÀè} -ë>vƒ}Øtƒ}؃}Øtëƒ}Øu ƒÃÝCøÝ]ÀƒìÿuÌÿuàÿuäVÿuÄÿuÀèa‰EÜEèÆ¿ƒÄ é±ÇEØé¥ÇEØ陃MÌ鐍vƒMÌ鄍v¿ƒMÌëvƒÿu?ƒìEìPj
-ÿu èb
-‰EäƒÄ‹E €80u ÷EÌtƒMÌ됃MÌ‹UìJ‰U ë4vƒÿu,ƒìEìPj
-ÿu è
-‰Eà‹EìH‰E ¿ƒÄë‰ö¿ÿE ‹U €:…¼üÿÿÆ‹Eèeô[^_]ÉöU‰åƒì EPÿu ÿuè7üÿÿƒÄÉÉöU‰åWVSƒì,‹u‹} ‹]ÇEìÇEèÇEäÇEàÇEÜÇEØÇEÔÇEЉuð€?„>€?%tƒ}Ôu ŠˆGFÿEìëá€?%uGÇEÔÇEè
-ÇEàÇEоƒè%ƒøS‡çÿ$…0-#Æ%FÿEìéԃÉòFŠCüˆÿEìéÁƒ}àt&ƒ}àƒ}àt
-ë"ƒ}àt
-ëƒÃ‹CüëƒÃ‹CüëƒÃ¿Cü‰E܃ì ÿuÐÿuèj
-VÿuÜè鏐ƒ}àt&ƒ}àƒ}àt
-ë"ƒ}àt
-ëƒÃ‹CüëƒÃ‹CüëƒÃ·Cü‰E؃ì ÿuÐÿuèj
-ëBƒ}àt&ƒ}àƒ}àt
-ë"ƒ}àt
-ëƒÃ‹CüëƒÃ‹CüëƒÃ·Cü‰E؃ì ÿuÐÿuèjVÿuØè6‰EäEìÆÇEÔƒÄ éҍvƒÃ‹Sü€:tŠˆBFÿEä€:uò‹EäEì飍vÇEàé›ÇEà鏃MÐ醍vƒMÐë}‰öÇEÔƒMÐënvƒ}Ôu6ƒìEðPj
-W蓉EèƒÄ€?0u ÷EÐtƒMÐ됃MЋ}ðOë1‰öƒ}Ôu)ƒìEðPj
-WèW‹}ðOÇEÔƒÄë
-vÇEÔGé¼ýÿÿvÆ‹Eìeô[^_]ÉöU‰åƒì EPÿu ÿuèGýÿÿƒÄÉÉöU‰åWVSƒì,‹}‹uÇEèÇEäÇEàÇEÜÇEØ»‰}ì饐‹U €:%t…Ûu B‰U 鏍v‹E €8%u%@‰E »ÇEäÇEàÇEÜÇE؋U ¾ƒè*ƒøN‡Eÿ$…€.#‰öƒû…8ƒìEìPj
-ÿu èN‰E܃MØ‹EìH‰E ƒÄéŠGƒÆ‹^üˆëÝØÿEèéõƒÆ‹^üëG€?tƒì ¾PèBƒÄ…ÀuçÇEÔë#‰ö÷EØuŠˆCë‹UÜ9UÔ}ŠˆCÿEÔG€?tƒì ¾PèþƒÄ…ÀtÇÆ덉öƒìh¨;#Wè&÷ÿÿ‰ÇƒÄ EìPj
-WèՉ‹}ìƒÄƒ}à…Wƒ}ät)ƒ}ä ƒ}ätéCÿÿÿƒ}ä…9ÿÿÿƒÆ‹Fü‰é,ÿÿÿƒÆ‹Füf‰éÿÿÿ‰öƒìhµ;#Wè¶öÿÿ‰ÇƒÄ EìPj
-됃ìhÀ;#Wèšöÿÿ‰ÇƒÄ EìPjWè ‹}ìƒÄƒ}à…̓}ät+ƒ}ä -ƒ}äté¹þÿÿ‰öƒ}ä…­þÿÿƒÆ‹Vü‰é þÿÿƒÆ‹Vüf‰é‘þÿÿ‰öƒìhØ;#Wè*öÿÿ‰ÇƒÄEìPWè;‹}ìƒÄƒ}àu`ƒ}ät)ƒ}ä ƒ}ätéMþÿÿƒ}ä…CþÿÿƒÆ‹FüÝé8þÿÿƒÆ‹FüÙé*þÿÿvÇEäë vÇEäëvÇEàëÝؐ»ÿE ‹E €8…Pýÿÿ‹Eèeô[^_]ÐU‰åƒì EPÿu ÿuèïüÿÿƒÄÉÉöU‰åWVSƒì,‹u ÇEп‹Eƒð‰EԋU‰U̅Òy‰Ñ÷ىM̃}y ‹E…Ày÷Ø됋E÷EÔu ƒ}yƒ}yGƒ}u‹EÐÆD(Ø0@‰EÐë8v…Àt1U؉Uȉöƒì º÷ủÃRèI‹MȋUЈ
-B‰UЉ؃Ä…Àu×}ЋEԃàƒøu‰ú;}} -‰öÆ FGB;U|õƒ}y ƒ}yÆ-ë ÷EÔtÆ+F‹Eԃàƒøu‰ú;}} Æ0FGB;U|õ‹UÐJx M؊
-ˆFJy÷‹Eԃàƒøu‰ú;}} Æ FGB;U|õƉøeô[^_]ÃU‰åƒì‹Eÿuÿu÷ØPÿu ÿuèŸþÿÿƒÄ ÉÉöU‰å‹E…Ày÷Ø]ÉöU‰åSƒì‹]èÁîÿÿƒì SèõÿÿU‰åWVSƒì‹M‹} ÙîÙÀÙ軀9-u ¾ÿÿÿÿë
-‰ö¾ëA€90túŠƒè0< w(ÝÀ/#ëÙˍv¾ƒè0AÜËÙËPÚ$XŠƒè0< vâÝۀ9.u9AŠƒè0< w/ÝÀ/#ëÙÉÙʉö¾ƒè0AÜÊÙÊPÚ$ÙÉXØʊƒè0< vÝÝÚÙÉÞùÞÁVÚ $^€9et €9E…“A€9-u
-¾ÿÿÿÿAë‰ö€9+u ¾Aëv¾Šƒè0< weÝÀ/#¾ƒê0A·ÃÙÀPÚ $Ù}ð‹]ðÆEñ Ùmð‰]ðÛ]ìÙmð‹Eì·À‰$Û$‰$Ú$ZÙ}ð‹UðÆEñ Ùmð‰UðÛ]ìÙmð‹Eì‰ÃŠƒè0< v£Ý؅ö~!ºf…Ût4ÝÀ/#·Ã‰öÜÉB9Â|ùëvº·Ã‰Ã9Â}ÝÀ/#ÜùB9Ú|ùÝ؅ÿt‰ƒÄ[^_]ÐU‰åWVSƒì ‹]‹} ÇE쾀;-u ÇEðÿÿÿÿCë‰ö€;+u ÇEðCëÇEð€;0u>C€;0túë6ƒì ¾PCè‰ÂƒÄ9ú…Òy
-¸ëEv‰ð¯÷Ö9ð~ÇEìƒìW¾P聃ąÀu¶ƒ}t‹E‰ƒ}ìt¾ÿÿÿ¯uð‰ðeô[^_]ÉöU‰åWVSƒì ‹]‹} ÇEð¾€;0uC€;0tú€;xuKƒÿuFC€;0u@‰öC€;0túë6ƒì ¾PCè_‰ÂƒÄ9ú…Òy
-¸ëAv‰ð¯÷Ö9ðvÇEðƒìW¾PèуÄ…Àu¶ƒ}t‹E‰ƒ}ðt¾ÿÿÿ‰ðeô[^_]ÉöU‰åŠUBÐ< w ¾Âƒè0ë&vB¿<w ¾Âƒè7됍BŸ<w ¾ÂƒèW됾Â]ÍvU‰å‹Uƒú w B0¾À됍BöƒøwB7¾Àë¾Â]ÍvU‰åŠUƒê0¸€ú –À]ÉöU‰åŠUBÐ<vBŸ<w¸ë¸]ÐU‰åŠU€ú/~‹E œ`#:Pÿ¸ë¸]ÐU‰åŠUBŸ<w Bà¾Àëv¾Â]ÍvU‰åŠUB¿<w B ¾Àëv¾Â]ÍvU‰åVS¾ƒì ¾]Sè%ƒÄ…Àuƒì Sè5ÿÿÿƒÄ…Àt¾‰ðeø[^]ÃU‰åŠUƒêA¸€ú9–À]ÉöU‰å¸€}/žÀ]ÍvU‰åŠUƒêa¸€ú–À]ÉöU‰åŠUB÷<v
-¸€ú u¸]ÉöU‰åŠUƒêA¸€ú–À]ÉöU‰åWVSƒì ÝEÝUè‹]‹}ÇEäSd$øÝ$èoƒÄ…Àtƒì Sè·îÿÿƒÄéPvÙîÝEèÚéßà€äE€üu Æ-C€uï€ë÷EtÆ+CÿEäÝÈ/#ÝEèÚéßà€äE€üuÆ0ÆC¸éû‰öÙèÝEèÝáßà€äE€üu3¾Ýéßà€äE€üuHÝø;#ÝEèØÉÝUèNÝêßà€äE€ütëÝØë)vÝØÝؾÝø;#ÝEèë ÝEèØñÝUèFÝéßàöÄtîÝ؃ì Vè÷ùÿÿƒÄƒøc~ƒïë‰öƒø ~ƒïë‰ö…ö~Oƒì‹EƒÈPÿuWSÿuìÿuèèUEäƒÄ …öu‹Eäë;‰ö]äÆeCƒì jºgfff‰ð÷êÁú‰ðÁø)ƒÂRj
-SVè\ùÿÿ‹UäD‰EäƒÄ eô[^_]ÍvU‰åWVSìŒÝEݝþÿÿ‹]Dž€þÿÿ½¸þÿÿ¹K¸üó«ƒìSÿµ”þÿÿÿµþÿÿ貃ąÀtƒì SèúìÿÿƒÄé‰öÙî݅þÿÿÚéßà€äE€üuÆ-C€µ—þÿÿ€ëv÷Et
-Æ+Cÿ…€þÿÿƒì…˜þÿÿPÿµ”þÿÿÿµþÿÿèþݝpþÿÿ‹…pþÿÿ‹•tþÿÿ‰Æ‰×DžŒþÿÿƒÄ݅˜þÿÿÙèÙÉÝáßàöÄ…ø重vh$@jÿµœþÿÿÿµ˜þÿÿè$݅˜þÿÿÜ5Ð/#ݝ˜þÿÿÙ½´þÿÿ‹´þÿÿƅµþÿÿ Ù­´þÿÿ‰´þÿÿß½¨þÿÿÙ­´þÿÿ‹…¨þÿÿ‰$èûÿÿ‹•Œþÿÿˆ„*¸þÿÿB‰•ŒþÿÿƒÄ݅˜þÿÿÙèÙÉÚéßàöÄ„oÿÿÿ‹•Œþÿÿ•€þÿÿ‰ÑI…¸þÿÿ‰…|þÿÿë‰ö‹•|þÿÿŠˆCI‹•Œþÿÿƒê‰ÐÁèH!Â9Ñ}ޅÉx‹Œþÿÿƒéx
-vÆ0CIyùÆëÝØÝØÆ0Cÿ…€þÿÿÝ<#‰µpþÿÿ‰½tþÿÿ݅pþÿÿÚéßàöÄE…\‹E@9…€þÿÿLÆ.Cÿ…€þÿÿ‹Eƒà‰…ˆþÿÿDž„þÿÿDžŒþÿÿv‰µpþÿÿ‰½tþÿÿ݅pþÿÿÜ<#Ü -Ð/#ݝpþÿÿ‹µpþÿÿ‹½tþÿÿƒì…˜þÿÿPWVèݝpþÿÿ‹•pþÿÿ‹tþÿÿ‰Ö‰Ï݅˜þÿÿÙ½´þÿÿ‹´þÿÿƅµþÿÿ Ù­´þÿÿ‰´þÿÿ۝¤þÿÿÙ­´þÿÿ‹…¤þÿÿƒÄ…Àtƒ½ˆþÿÿu
-Džˆþÿÿƒì PèÓùÿÿˆCÿ…€þÿÿÿ…ŒþÿÿƒÄƒ½ˆþÿÿt‹E9…Œþÿÿ~
-Dž„þÿÿ‹•€þÿÿ9U}
-Dž„þÿÿƒ½„þÿÿ„ýþÿÿKë
-‰öÿ€þÿÿ‰Ã€;0u Cÿ€{ÿ.uêCÆ‹…€þÿÿeô[^_]ÃU‰åWVSƒì‹]‹u ‹}WVSèZƒÄ…Àtƒì Wè¢éÿÿƒÄéñ‰öÙî‰]è‰uìÝEèÝáßàÝـäE€üuÙàëvÝ؉]è‰uìÝEèÝØ/#ÙÉÝáßàÝـäE€üuÝØÆ0ÆG¸雺ÙèÙÉÝáßà€äE€üu/Ýáßà€äE€üu?Ýø;#ëÙɐÜÉÙÉJÝâßà€äE€ütìÝØëvÝÙÝø;#ë‰öØñÙÉBÙÉÝáßàöÄtðÝØÝ؍BƒøvƒìÿuÿuÿuWVSèÔùÿÿë‰öƒìÿuÿuÿuWVSèXûÿÿƒÄ eô[^_]ÐU‰åƒìSÙ}ü›f‹Eüf -? f‰EøÙmø›ÝEÙüÝ]ð›‹Uð‹Mô‹]‰‰KÝEÜeðeì›ÛâÙmü›[ÉÍvU‰åƒì‹E‹U ‰Eø‰Uü‹MUøf‹BfÁè%ÿ=ÿt¸ëk÷Bÿÿuƒ:t…Étƒìh<#QèDçÿÿƒÄ¸ë@‰ö€zy…Étƒìh<#Qè çÿÿƒÄ¸ë‰ö…Étƒìh<#QèçÿÿƒÄ¸ÉÃU‰åƒì¸Û#ƒ=¨`#tÿ¨`#ÉÃU‰å‹E£¨`#]ÍvU‰åƒì‹E‹U ‰Eø‰UüUø¹f‹BfÁè%ÿ=ÿu÷Bÿÿuƒ}øt¹‰ÈÉÉöU‰åSƒì‹E ‹]ÆPè‰âÿÿ‰ØƒÄ‹]üÉÍvU‰åVSƒì ÝEÝUð‹]‹uVSd$øÝ$èvÝ]èƒÄƒ=¬`#ÿtWƒìVSèYÿÿÿƒÄ…ÀuFƒìÿuôÿuðèDÿÿÿƒÄ…Àu1Ùî‰]à‰uäÝEàÚéßà€äE€ô@uƒì jVSÿuôÿuðè8ƒÄ ëvÝEèeø[^]ÉöÝD$ ÝD$Ùø›ßàžzøÝÙͶ¼'U‰åVSƒì0ÝE‹]‹u‹EÝUà‰]è‰uìPÿú‡Èÿ$•ð/#ÝØÇEغ<#ƒøc~º#<#‰UÜÇEðÇEôƒ=¬`#„}ƒì EØP誃ąÀ…uƒ=¬`#…Yƒìjh)<#éëvÝØÇEغ=<#ƒøc~ºB<#‰UÜÇEðÇEôƒ=¬`#„ƒì EØPè>ƒÄ…À… ƒ=¬`#…íƒìjhH<#év‰]à‰uäÝ]èÇEغ\<#ƒøc~ºb<#‰UÜÇEðÇEôƒ=¬`#„žƒì EØPè˃ąÀ…–ƒ=¬`#…zƒìjhi<#é ÝØÇEغ~<#ƒøc~º„<#‰U܃=¬`#uÇEðàÇEôÿÿïGé¸ -¡ `#‹¤`#‰Eð‰Uôé¡ -‰öÝØÇEغ>#ƒøc~º>#‰U܃=¬`#uÇEðàÇEôÿÿïGéh -¡ `#‹¤`#‰Eð‰UôéQ -‰öÝØÇEغ‹<#ƒøc~º<#‰U܃=¬`#uÇEðàÇEôÿÿïGé -¡ `#‹¤`#‰Eð‰Uôé -‰öÝØÇEغ‹<#ƒøc~º<#‰UÜÇEðÇEôéÑ ‰öÝØÇEغ7#ƒøc~º”<#‰U܃=¬`#uÇEðàÇEôÿÿïÇë¡ `#‹¤`#ò€‰Eð‰Uôƒ=¬`#„óƒì EØPè ƒÄ…À…ëƒ=¬`#…σìjh˜<#éaÝØÇEغ7#ƒøc~º”<#‰U܃=¬`#uÇEðàÇEôÿÿïÇë¡ `#‹¤`#ò€‰Eð‰Uôƒ=¬`#„gƒì EØP蔃ąÀ…_ƒ=¬`#…Cƒìjh˜<#éÕ -ÝØÇEغØ6#ƒøc~ºª<#‰U܃=¬`#uÇEðàÇEôÿÿïÇë¡ `#‹¤`#ò€‰Eð‰Uôƒ=¬`#„Û -ƒì EØPèƒÄ…À…Ó -ƒ=¬`#…· -ƒìjh®<#éI -ÝØÇEغØ6#ƒøc~ºª<#‰U܃=¬`#uÇEðàÇEôÿÿïÇë¡ `#‹¤`#ò€‰Eð‰Uôƒ=¬`#„O -ƒì EØPè| -ƒÄ…À…G -ƒ=¬`#…+ -ƒìjh®<#é½ ÝØÇEغÀ<#ƒøc~ºÃ<#‰U܃=¬`#uÇEðàÇEôÿÿïÇë¡ `#‹¤`#ò€‰Eð‰Uôƒ=¬`#„à ƒì EØPèð ƒÄ…À…» ƒ=¬`#…Ÿ ƒìjhÇ<#é1 ÝØÇEغÀ<#ƒøc~ºÃ<#‰U܃=¬`#uÇEðàÇEôÿÿïÇë¡ `#‹¤`#ò€‰Eð‰Uôƒ=¬`#„7 ƒì EØPèd ƒÄ…À…/ ƒ=¬`#… ƒìjhÇ<#é¥ ÝØÇEغÙ<#ƒøc~ºà<#‰U܃=¬`#uÇEðàÇEôÿÿïGéP ¡ `#‹¤`#‰Eð‰Uôé9 ‰öÝØÇEغÙ<#ƒøc~ºà<#‰U܃=¬`#uÇEðàÇEôÿÿïGë¡ `#‹¤`#‰Eð‰Uôƒ=¬`#„a ƒì EØPèŽ ƒÄ…À…Y ƒ=¬`#…= ƒìjhè<#éÏ
-vÝØÇEغü<#ƒøc~º=#‰U܃=¬`#uÇEðàÇEôÿÿïÇë¡ `#‹¤`#ò€‰Eð‰Uôƒ=¬`#„å ƒì EØPè ƒÄ…À…Ë
-ƒ=¬`#…¯
-ƒìjh=#éA
-ÝØÇEغü<#ƒøc~º=#‰U܃=¬`#uÇEðàÇEôÿÿïÇë¡ `#‹¤`#ò€‰Eð‰Uôƒ=¬`#„G
-ƒì EØPèt
-ƒÄ…À…?
-ƒ=¬`#…#
-ƒìjh=#éµ ÝØÇEغ)=#ƒøc~º/=#‰U܃=¬`#uÇEðàÇEôÿÿïÇë¡ `#‹¤`#ò€‰Eð‰Uôƒ=¬`#„Íƒì EØPèè ƒÄ…À…³ ƒ=¬`#…— ƒìjh6=#é) ÝØÇEغ)=#ƒøc~º/=#‰U܃=¬`#uÇEðàÇEôÿÿïÇë¡ `#‹¤`#ò€‰Eð‰Uôƒ=¬`#„/ ƒì EØPè\ ƒÄ…À…' ƒ=¬`#… ƒìjhI=#靐ÝØÇEغ^=#ƒøc~ºb=#‰UÜÇEðÇEôƒ=¬`#… ƒì EØPèòƒÄ…À…½ƒìjhg=#jèÚõÿÿèaõÿÿÇ!ƒÄ降vÇEغ^=#ƒøc~ºb=#‰U܃=¬`#uvÇEðàÇEôÿÿïG‰]ЉuÔÝEÐÜ -È>#Ý]Ћ]ЋuÔÙîÙÉÚéßà€äE€ü…¯ƒìVSèjƒÄ‰]ЉuÔÝEÐÙÉÚéßà€äE€ü@„‡ÇEðàÇEôÿÿïÇét¡ `#‹¤`#‰Eð‰Uô‰]ЉuÔÝEÐÜ -È>#Ý]Ћ]ЋuÔÙîÙÉÚéßà€äE€ü…6ƒìVSèñƒÄ‰]ЉuÔÝEÐÙÉÚéßà€äE€ü@„¡ `#‹¤`#ò€‰Eð‰UôéòvÝØÇEغ^=#ƒøc~ºb=#‰UÜÇEðÇEôéÁ‰öÝØÇEغ^=#ƒøc~ºb=#‰U܃=¬`#uÇEðÇEôë¡ `#‹¤`#ò€‰Eð‰Uôƒ=¬`#„ãƒì EØPèƒÄ…À…Ûƒ=¬`#…¿ƒìjh=#éQÝØÇEغ^=#ƒøc~ºb=#‰U܃=¬`#uÇEðÇEôëÇEðÇEôøƒ=¬`#„`ƒì EØP荃ąÀ…Xƒ=¬`#…<ƒìj h >#éΉöÇEغ™=#ƒøc~ºž=#‰U܃=¬`#u6ÙîÙÉÚéßàöÄEuÇEðàÇEôÿÿïGém‰öÇEðàÇEôÿÿïÇéX‹ - `#‹¤`#‰Mð‰]ôÙîÙÉÚéßàöÄE„4‰È‰Úò€‰Eð‰UôéÝØÇEغ¤=#ƒøc~º©=#‰U܃=¬`#uÇEðÇEôëÇEðÇEôøƒ=¬`#„Lƒì EØPèyƒÄ…À…Dƒ=¬`#…(ƒìjh¯=#麉öÇEغÃ=#ƒøc~ºÈ=#‰U܃=¬`#uÝ]ðëÝØÇEðÇEôøƒ=¬`#„Òƒì EØPèÿƒÄ…À…ʃ=¬`#…®ƒìjhÎ=#é@ÝØÇEغã=#ƒøc~ºí=#‰UÜÇEðÇEôøƒ=¬`#„iƒì EØP薃ąÀ…aƒ=¬`#…Eƒìjhø=#é׍vÝØÇEغ>#ƒøc~º>#‰UÜÇEðÇEôøƒ=¬`#„ýƒì EØPè*ƒÄ…À…õƒ=¬`#…Ùƒìjh>#ékvÝØÇEغ3>#ƒøc~º9>#‰UÜÇEðÇEôøƒ=¬`#„‘ƒì EØP较ąÀ…‰ƒ=¬`#…mƒìjh@>#éÿvÇEغ3>#ƒøc~º9>#‰UÜÜ5Ð>#Ý]ðƒ=¬`#„,ƒì EØPèYƒÄ…À…$ƒ=¬`#…ƒìjhU>#隉öÇEغh>#ƒøc~ºn>#‰U܋ - `#‹¤`#‰Mð‰]ôÙîÙÉÚéßàöÄEtC‰È‰Úò€‰Eð‰Uôë1‰öÇEغh>#ƒøc~ºn>#‰U܍d$øÝ$jjè›Ý]ðƒÄƒ=¬`#…jé|vÝØÇEغu>#ƒøcŽ•ºx>#鋍vÝØÇEغ7#ƒøc~uº”<#ën‰öÝØÇEغ‹>#ƒøc~YºŽ>#ëR‰öÝØÇEغØ6#ƒøc~=ºª<#ë6‰öÝØÇEغ’>#ƒøc~!º•>#ë‰öÝØÇEغÀ<#ƒøc~ºÃ<#‰UÜÇEðÇEôƒ=¬`#„¯ƒì EØPèʃąÀ…•ƒ=¬`#…‹ƒìjÿuÜjè§îÿÿƒÄ jh|>#jè–îÿÿƒÄëfÝØÇEغÚ<#ƒøc~ºá<#‰U܃=¬`#uÇEðàÇEôÿÿïGë¡ `#‹¤`#‰Eð‰Uôƒ=¬`#tƒì EØPè2ƒÄ…À…ýè²íÿÿÇ"éívÝØÇEغÚ<#ƒøc~ºá<#‰U܃=¬`#uÇEðàÇEôÿÿïGë¡ `#‹¤`#‰Eð‰Uôƒ=¬`#„‰ƒì EØP趃Ä…À…ƒ=¬`#uiƒìjhé<#jè•íÿÿƒÄëSÇEغ^=#ƒøc~ºb=#‰UÜÝ]ðƒ=¬`#ÿt ƒ=¬`#uÇEðÇEôð?ë$‰öƒì EØPè@ƒÄ…ÀuèÄìÿÿÇ!ëÝØÝEðeø[^]ËT$â€‹D$%ÿÿÿ ЉD$ÝD$ÉöU‰å¸]ÉöÝD$ÙüÉö¼'U‰åWVSƒì ‹E ‰EðEƒEðƒeðøƒàø‰Eì‹Eð9EìsƒìjUhØ>#hâ>#è˜ ƒÄ‹Eð9Eì„Ä‹E‹…Û„·‹C;C rƒìj`hØ>#hí>#è` ƒÄöCtƒìjahØ>#h ?#èC ƒÄöC tƒìjbhØ>#h`?#è& ƒÄ‹Eì;CvL‹Eð;C sD‰Æ‹}ì;ss‹s;{ v‹{ 9÷wƒìjnhØ>#h?#èæ ƒÄƒì‰ø)ðPVÿu蚃ċ…Û…Iÿÿÿeô[^_]ÐU‰åWVSƒì ‹u ‹E‹}‰ÂUƒÀƒàøƒâø9†ŒÇF‰F‰V ‹E‰F‰~ÇF‹MëF‰ö9óuƒìjlh?#h›?#èX ƒÄ‹F ;Cv‹F;C sƒìjmh?#hÀ?#è1 ƒÄ‰Ù‹…Ût9{±9{u‹S +S‹F +F9Âwœ‰‰1eô[^_]ÃU‰åWVSƒì ‹]‹} …ÛuƒìjLhí?#hõ?#èÙ
-ƒÄ…ÿuƒìjMhí?#hþ?#è¾
-ƒÄƒÇƒçø‹3…ö„rvƒ~uƒ~t‹F;FsƒìjUhí?#h@@#è€
-ƒÄƒ~t‹F;F rƒìjUhí?#h @#è[
-ƒÄ‹F +F9FvƒìjUhí?#hà@#è9
-ƒÄ‹F÷ЅE…åF‰Eð‹^…Û„ԍv÷Ãtƒìj^hí?#h A#èø ƒÄöCtƒìj_hí?#h`A#èÛ ƒÄƒ;t9wƒìj`hí?#h A#è» ƒÄ;^ rƒìjahí?#h@#èŸ ƒÄ9{rGv‹‰‹C)ø‰B‹Eð‰ë
-v‹‹Uð‰9~sƒìjwhí?#h-@#è\ ƒÄ)~‰Øë‰ö‰]ð‹…Û…/ÿÿÿ‹6…ö…‘þÿÿ¸eô[^_]ÃU‰åƒì jÿjÿuÿuÿuÿu ÿuèƒÄ ÉÐU‰åWVSƒì‹]‹EE ‰Eð…ÛuƒìjThÉA#hõ?#èۃă} uƒìjUhÉA#hþ?#较ċ;…ÿ„lƒuƒt‹G;Gsƒìj[hÉA#h@@#舃ăt‹G;G rƒìj[hÉA#h @#ècƒÄ‹G +G9Gvƒìj[hÉA#hà@#èAƒÄ‹G÷ЅE…á‹Uð9WƒÕ‹M9O †ÉG‰Eì‹_…Û„¸v÷ÃtƒìjkhÉA#h A#èèƒÄöCtƒìjlhÉA#h`A#è˃ă;t9wƒìjmhÉA#h A#諃Ä;_ rƒìjnhÉA#h@#菃ċU 9S‚$‰Þ;]s‹u¹;M}ºÓâ‹E1ð…ÂtÖA;M|è‰ð)ØE ;C‡è‹M 1;Eð‡æ‰ðƒàø‰Eè9Øsƒìh‘hÉA#hÔA#èƒÄ9]èvC‹Uè)ډUä÷Âtƒìh–hÉA#hB#èãƒÄ‹‹M艋C+Eä‰A‹Eä‰C‰]ì‰ðƒà‹U Tƒâø‰U ‹Mè9Qv‰ÊU ‹‰‹A+E ‰B‹Eì‰ë
-‹Uè‹‹M쉋E 9Gsƒìh´hÉA#h-@#èkƒÄ‹U )W‰ðë‰ö‰]ì‹…Û…Kþÿÿ‹?…ÿ…•ýÿÿ¸eô[^_]ÃU‰åƒì jÿjjj ÿu hÿuèýÿÿƒÄ ÉÐU‰åWVSƒì‹]Sh2B#èaÌÿÿ‹3ƒÄ…ö„ƒìÿvÿvÿv‹F +FPÿv ÿvhÀB#è1ÌÿÿƒÄ ƒ~uƒ~t‹F;FsƒìjahDB#h@@#袃ă~t‹F;F rƒìjahDB#h @#è}ƒÄ‹F +F9FvƒìjahDB#hà@#è[ƒÄ¿‹^…Û„¾ƒì ÿ3ÿs‰ØCPShC#è“ËÿÿƒÄ ÷ÃtƒìjihDB#h A#èƒÄöCtƒìjjhDB#h@C#èóƒÄƒ{wƒìjkhDB#hKB#èփă;t9wƒìjlhDB#h A#趃Ä;^ rƒìjmhDB#h@#蚃Ä{‹…Û…BÿÿÿƒìWhgB#èàÊÿÿƒÄ9~tƒìjshDB#hzB#è`ƒÄ‹6…ö…cþÿÿƒì h’B#èªÊÿÿƒÄeô[^_]ÍvU‰åWVSƒì ‹u‹] ‰ßƒçø…öuƒìjNhÛ>#hõ?#è ƒÄ…ÛuƒìjOhÛ>#hrC#èñƒÄƒ}uƒìjPhÛ>#hþ?#èԃĉ؃à‹UTƒâø‰U‹ëv‹…ÛuƒìjXhÛ>#h}C#螃ă{uƒ{t‹C;CsƒìjYhÛ>#h@@#èsƒÄƒ{t‹C;C rƒìjYhÛ>#h @#èNƒÄ‹C +C9CvƒìjYhÛ>#hà@#è,ƒÄ;{‚hÿÿÿ;{ ƒ_ÿÿÿ‹EC‹C +C9CvƒìjbhÛ>#hà@#èòƒÄÇEð‹sëv‰uð‹6…öt9þróƒ}ðtm‹Eð@9ørc9øtƒìjnhÛ>#h C#諃ąöt8‹U:9ðr.9ðtƒìjuhÛ>#hàC#肃ċEF‹UðB‹‰ëE‹E‹UðBë9ƒ}ðt
-‹Eð‰8ëv‰{…öt‹U:9ðr‰ÐF‰G‹‰ë ‹E‰G‰7eô[^_]ÃU‰åƒì hÿu ÿuèÒýÿÿƒÄÉÐU‰å‹EÇ]ÉöU‰åWVSƒì ÇEèÇEìÇEð‹E‹0…ö„Zƒ~uƒ~t‹F;Fsƒìj]hD#h@@#蠃ă~t‹F;F rƒìj]hD#h @#è{ƒÄ‹F +F9Fvƒìj]hD#hà@#èYƒÄÿEð¿‹^…Û„¨v÷ÃtƒìjdhD#h A#è$ƒÄöCtƒìjehD#h@C#èƒÄƒ{wƒìjfhD#hKB#èêƒÄƒ;t9wƒìjghD#h A#èʃÄ;^ rƒìjhhD#h@#讃ÄÿEì{‹…Û…[ÿÿÿ9~tƒìjnhD#hzB#肃Ä‹FEè‹6…ö…§þÿÿƒì ÿuìÿuðÿuèÿuh D#èºÆÿÿƒÄ eô[^_]ÍvU‰åVS‹u‹] EƒìPÿuh Û#èÈÿÿƒÄh Û#ÿ5`ã#jSVh D#è5ƒÄ eø[^]ÍvU‰åƒìÿ5Lã#jÿuÿu ÿuh`D#èƒÄ ÉÉöU‰åƒì E Pÿuh ß#èÈÿÿƒÄ jjh¸&#è@!ÿÿƒÄh ß#hE#è†ÅÿÿÇ$MèšÿÿƒÄÉÐU‰åƒìh ß#hàD#è_ÅÿÿƒÄÉÉöU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)л$ä#‰]ð‹´ÃЃùÿtCI‰ÐÁà)Ð;´ÃÐr0»(ä#‰Ï‰ÐÁà)ЋLÃPƒùÿtI‰ÐÁà)ЋUð;´ÂÐsՃÿÿt‰ÐÁà)ЋU‰Åxä#ë
-‰ö‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰Å|ä#ë
-‹E‹U ‰B‹E@‰ÐÁà)ЍÅP‰ˆ(ä#‰¸,ä#ƒÄ[^_]ÍvU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)ÐÁà‹øæ#‰U苀üæ#‰Eìƒùÿtw ‰ÆȉÂÁâ)‹Eè‰Ã;Õøæ#|[‰Eäv1‰ÐÁà)ЍÅ;šøæ#u ‹Eì;‚üæ#|1‰Ï‰ÐÁà)Ћ Åxä#ƒùÿt4 1‰ÐÁà)Ћ]ä;Åøæ#}«ƒÿÿt‰ÐÁà)ЋU‰Åxä#ë‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰Å|ä#ë
-‹E‹U ‰B‹E@‰ÐÁà)ЍÅP‰ˆ(ä#‰¸,ä#ƒÄ[^_]ÍvU‰å‹EÇÿÿÿÿÇ@ÿÿÿÿ]ÍvU‰åWVS‹uv‰ÐÁà)ЍÅP‹˜,ä#¿(ä#‹ 8ƒûÿt[‰ÐÁà)ЉLÇPëv‹E ‰ƒùÿt&I‰ÁÁá)Á»,ä#v‰ÐÁà)ЋDÃP‰DËPë v‹E ‰X[^_]ÐU‰åS‹M‹‰Øƒûÿt=‹@‰ÂÁâ)‹Õxä#‰ƒøÿt@‰ÐÁà)ÐÇÅ|ä#ÿÿÿÿë
-vÇAÿÿÿÿ‰Ø‹$ÉÉöU‰åS‹M‹] ƒ;ÿt)I‰ÐÁà)Ћ‰Åxä#‹@‰ÂÁâ)‰ Õ|ä#됉KI‰ÐÁà)ÐÇÅxä#ÿÿÿÿI‰ÐÁà)ÐÇÅ|ä#ÿÿÿÿ‰ ‹$ÉÃU‰åS‹M‹] ƒ{ÿt,I‰ÐÁà)ЋS‰Å|ä#‹C@‰ÂÁâ)‰ Õxä#ë‰ö‰ I‰ÐÁà)ÐÇÅ|ä#ÿÿÿÿI‰ÐÁà)ÐÇÅxä#ÿÿÿÿ‰K‹$ÉÃU‰å‹E‹]ÉöU‰å‹E‹@]ÐU‰å·Eƒøt ƒø…Àtë-ƒøtƒøtë ¸!E#됸&E#됸*E#됸0E#됸ñ5#]ÐU‰åWVSƒìœúX‰Â‰Uä÷Et$ƒìEèPjèH—ÿÿƒÄ ÿuìÿuèh@E#èaÁÿÿƒÄ÷EtN¾;5Pã#sA¿€ã#vƒì µ‹;¶BP·BPRVh€E#èÁÿÿƒÄ‹;VÿP ƒÄF;5Pã#rÇ÷Etƒì h[E#èñÀÿÿè¬!ÿÿƒÄ‹Uä‰ÐPeô[^_]Éödï",ò",ò",ò",ò",ò"˜ñ",ò"¤ñ"°ñ",ò"¼ñ"¼ñ"¼ñ"¼ñ"¼ñ"¼ñ"¼ñ"¼ñ"¼ñ"¼ñ",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò",ò"pï"„ï"ðð"°ð"0ñ"Œñ"„ï",ò",ò"€ñ",ò"Œñ",ò"hð",ò",ò"ˆð",ò"Ðï",ò",ò"ð"ó"ðô"ðô"ðô"ðô"ðô"hô"ðô"tô"|ô"ðô"Œô"Œô"Œô"Œô"Œô"Œô"Œô"Œô"Œô"Œô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ðô"ó"0ó"ðô"ðô"ðô"\ô"0ó"ðô"ðô"Pô"ðô"\ô"ðô"ðô"ðô"ðô"(ô"ðô"€ó"ðô"ðô"Äó"ü÷"ø"ø"ø"ø"ø"Ìõ"Ìõ"Ìõ"Ìõ"Ìõ"Ìõ"Ìõ"Ìõ"Ìõ"Ìõ"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"ø"üõ"€ö"|÷"|÷"|÷"ð÷"€ö"ø"ø"ä÷"ø"ð÷"ø"ø"ø"ø"ö"ø"ðö"ø"ø" ÷"$@$@d#Ð#<#¬#ü#L #œ #Ì #X
-#ä
-#p #ü #ˆ # -#d -#ì -#x#####¬#Ü#h#ì#|##x#ä#P#¼# #l#°#Ô#ð# #(#D#Ä#<#Ä#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#d#Ð#<#¬#ü#L #œ #Ì #X
-#ä
-#p #ü #ˆ # -#d -#ì -#x#####¬#Ü#h#ì#|##x#ä#P#¼# #l#°#Ô#ð# #(#D#Ä#<#Ä#J: (pid=%d) AAAARRRRGGGHHH!!! killed by someone...
-J (pid=%d) starts and call nanosleep
-J (pid=%d) ending, nanosleep returns errno=%d, t2=%ld.%ld
-main: pthread_kill on j1, then wait until t=2 sec
-SIGNAL HANDLER: pid=%d
-main: creating J1
-Error creating J1
-main: creating J2
-Error creating J2
-main: creating J3
-Error creating J3
-main: waiting 1 sec
-main: pthread_cancel(J2)
-main: ending...
-Error during Keyboard Initialization!!!Ctrl-C pressed!
-KeybPortKeyTasktask_create
-scheduletime %lus %luns * caplasttime %lus %luns * exec=%d TIME = %lu
-The system tick must be less than 55 mSec!Abort detected
-Code : %u
-Too many scheduling levels!!!
-Too many resource levels!!!
-debug info noticewarn err crit alert emerg <%i>[%s] %sPosix task
-Signal number %d...
-with value : %d
-POSIX_ReadyPOSIX_DelayPOSIX_UnknownSlice: %d
-MainPOSIX_register_level
- alloco descrittore %d %d
- lev=%d
-POSIX schedulerPid: %d Name: %20s Prio: %3ld Status: %s
-
-Panic!!! can't create main task...
-dummy PID: %d
-Dummy1Dummy2Dummy3Dummy4Dummy5Dummy6Dummy7Dummy8Dummy9Dummy0DummyaDummybDummycDummydDummyeDummyfDummygDummyhDummyDummy (RR) Posto dummy_create
-
-Panic!!! can't create dummy task...
-Entro in dummy_register_level
-Port des :
-Free port des : %d
-%d %s vt: %d pn: %d
-%d pd: %d vt: %d pn: %d Resources owned by the tasks:
-%-4dPI_register_module
-PI module
-PC priority of the tasks:
-%-4ldPC_register_module
-PC moduleTR %x
-SS:SP %x:%lx
-Stack0 : %x:%lx
-Stack1 : %x:%lx
-Stack2 : %x:%lx
-CS : %x DS : %x
-Descriptor [%x] InfoNo more Descriptors...
-%x (Hex)Base : %lx Lim : %lx Acc : %x Gran %x
-2Coprocessor error#Page fault*General protection fault*Stack exception*Segment not present*Unvalid TSS#INTEL reserved*Double defect1FPU context switch*Unvalid opcode#BOUND limit exceeded#Overflow detected on INTO#Breakpoint trap#NMI detected#Debug fault#Division by 0Exception %d occurred
-ABORT %d !!!LL Time Panic!!!
-time.cError! File:%s Line:%d %sOne-shot timer selected...
-Periodic timer selected...
-Unhandled Exc or Int occured!!!
-32/LINUX CrossCompiled/ELFHalt called1234567890-+12345678901234567890xabcdefABCDEF1234567890.e+-0123456789ABCDEF$@ -Æ@,ú1°<NaN+Inf-Infacosacosfacos: DOMAIN error
-asinasinfasin: DOMAIN error
-atan2atan2fatan2: DOMAIN error
-hypothypotfexpexpfy0fy0: DOMAIN error
-y1fy1: DOMAIN error
-ynynfyn: DOMAIN error
-lgammalgammaflgamma: SING error
-loglogflog: SING error
-log: DOMAIN error
-log10log10flog10: SING error
-log10: DOMAIN error
-powpowfpow(0,0): DOMAIN error
-pow(0,neg): DOMAIN error
-sinhsinhfsqrtsqrtfsqrt: DOMAIN error
-fmodfmodffmod: DOMAIN error
-remainderremainderfremainder: DOMAIN error
-acoshacoshfacosh: DOMAIN error
-atanhatanhfatanh: DOMAIN error
-atanh: SING error
-scalbscalbfj0j0f: TLOSS error
-j1j1fjnjnfneg**non-integral: DOMAIN error
-à?addfree.cmax >= minreg->min < reg->maxnew_max > new_min(reg->min & (sizeof(struct lmm_node) - 1)) == 0(reg->max & (sizeof(struct lmm_node) - 1)) == 0addregio.cr != reg(reg->max <= r->min) || (reg->min >= r->max)alloc.clmm != 0size > 0reg->free >= 0(DWORD)node < reg->maxreg->free >= size(reg->nodes == 0 && reg->free == 0) || (DWORD)reg->nodes >= reg->minreg->nodes == 0 || (DWORD)reg->nodes < reg->maxreg->free <= reg->max - reg->min((DWORD)node & (sizeof(struct lmm_node) - 1)) == 0((DWORD)node->size & (sizeof(struct lmm_node) - 1)) == 0(node->next == 0) || (node->next > node)alloc_ge.canode >= node(split_size & (sizeof(struct lmm_node) - 1)) == 0lmm_dump(lmm=%p)
-dump.cnode->size >= sizeof(*node) free_check=%08lx
-reg->free == free_checklmm_dump done
- region %08lx-%08lx size=%08lx flags=%08lx pri=%d free=%08lx
- node %p-%08lx size=%08lx next=%p
-(node->size & (sizeof(struct lmm_node) - 1)) == 0block != 0reg != 0(DWORD)prevnode + prevnode->size == (DWORD)node(DWORD)node + size == (DWORD)nextnodestats.cLMM=%p: %u bytes in %u regions, %d nodes
-assertion %s failed in %s at line %i (task:%i_%i)
-MAGIC assertion failed in %s at line %i (task:%i_%i): %s
-KERNEL PANIC (sys_panic_stub): %s
-KERNEL PANIC (sys_panic): %s
-FreeExeSleepWaiting on joinTime (EXACT) : %lus %luns
-< Memory Dump >
-< Level %d : %s Code: %d Version: %d >
-8Œÿÿ’ÏÿÿšÏÿ¨U#ÿÀ`#ÿÿÿÿÿÿÿÿÿÿÿÿ1234567890!@#$%^&*()-_=+[{]};:'"`~/?,<.>\|   - -1234567890.+*/-+*-aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ 1234567890!"œ$%&/()='?^Š‚+*•‡…ø\|<_,:.;—õ   - -1234567890.+*/-+*-aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ[]@#È]#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5#†5#5#x5#q5#j5#c5#\5#¤"¬"¬"³:#¦:#˜:#‡:#l:#V:#F:#2:##:#:#:#ñ9#à9#Æ9#º9#:#§9#þþAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAšç;#ðÿÿÿÿGCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)01.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.01.symtab.strtab.shstrtab.text.rodata.data.sbss.bss.comment.note"€Ð+!à+#`,È )¨U#(F /°`#@Q5À`#@Qè :@Q‚CÂb|>iI
\ No newline at end of file
/pj/pse51/ptest4
Property changes:
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: pj/pse51/ptest3.c
===================================================================
--- pj/pse51/ptest3.c (revision 1344)
+++ pj/pse51/ptest3.c (nonexistent)
@@ -1,229 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: ptest3.c,v 1.1.1.1 2002-09-02 09:37:47 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:47 $
- ------------
-
- Posix test 3:
-
- timers...
- it creates two periodic timers that queues signals, a periodic timer
- that create tasks and an one-shot timer.
-
- non standard function used:
- cprintf
- sys_gettime
- keyboard stuffs
- sys_end
-
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <sys/types.h>
-#include <pthread.h>
-#include <time.h>
-
-#include <kernel/kern.h>
-#include <drivers/keyb.h>
-
-int count25 = 0, count26 = 0;
-
-void signal_handler(int signo, siginfo_t *info, void *extra)
-{
- switch (signo) {
- case 25:
- count25++;
- break;
- case 26:
- count26++;
- break;
- }
-
- cprintf("Signal %d code=%s value=%d task=%d count25=%d count26=%d time=%ldusec\n",
- info->si_signo,
- (info->si_code == SI_TIMER) ? "Timer" : "Other",
- info->si_value.sival_int,
- info->si_task,
- count25,
- count26,
- sys_gettime(NULL));
-}
-
-void fine(KEY_EVT *e)
-{
- sys_end();
-}
-
-void task_timer(union sigval value)
-{
- cprintf("task_timer: value = %d, time = %ldusec\n",
- value.sival_int, sys_gettime(NULL));
-}
-
-int main(int argc, char **argv)
-{
- int err;
- timer_t timer1, timer2, timer3;
- struct itimerspec timeout1, timeout2, timeout3, nulltimeout;
- struct sigaction sig_act;
- struct sigevent ev25, ev26, evtask;
- pthread_attr_t task_attr;
- struct sched_param task_param;
-
- KEY_EVT emerg;
- //keyb_set_map(itaMap);
- emerg.ascii = 'x';
- emerg.scan = KEY_X;
- emerg.flag = ALTL_BIT;
- keyb_hook(emerg,fine);
-
- sig_act.sa_sigaction = (void *) signal_handler;
- sig_act.sa_flags = SA_SIGINFO;
- sigemptyset(&sig_act.sa_mask);
-
- sigaction(25, &sig_act, NULL);
- sigaction(26, &sig_act, NULL);
-
- // set ev25, ev26, evtask
- ev25.sigev_notify = SIGEV_SIGNAL;
- ev25.sigev_signo = 25;
- ev25.sigev_value.sival_int = 555;
-
- ev26.sigev_notify = SIGEV_SIGNAL;
- ev26.sigev_signo = 26;
- ev26.sigev_value.sival_int = 666;
-
- evtask.sigev_notify = SIGEV_THREAD;
- evtask.sigev_value.sival_int = 777;
- evtask.sigev_notify_function = task_timer;
- evtask.sigev_notify_attributes = &task_attr;
-
- pthread_attr_init(&task_attr);
- pthread_attr_setdetachstate(&task_attr, PTHREAD_CREATE_DETACHED);
- pthread_attr_setschedpolicy(&task_attr, SCHED_FIFO);
- task_param.sched_priority = 10;
- pthread_attr_setschedparam(&task_attr, &task_param);
-
- // set timeout1, timeout2, nulltimeout
- timeout1.it_interval.tv_sec = 0;
- timeout1.it_interval.tv_nsec = 500000000;
- timeout1.it_value.tv_sec = 3;
- timeout1.it_value.tv_nsec = 0;
-
- timeout2.it_interval.tv_sec = 0;
- timeout2.it_interval.tv_nsec = 200000000;
- timeout2.it_value.tv_sec = 7;
- timeout2.it_value.tv_nsec = 0;
-
- timeout3.it_interval.tv_sec = 0;
- timeout3.it_interval.tv_nsec = 300000000;
- timeout3.it_value.tv_sec = 5;
- timeout3.it_value.tv_nsec = 0;
-
- NULL_TIMESPEC(&nulltimeout.it_value);
- NULL_TIMESPEC(&nulltimeout.it_interval);
-
- // create the timers
- err = timer_create(CLOCK_REALTIME, &ev25, &timer1);
- if (err == -1) { cprintf("main: unable to create timer 1\n"); }
-
- err = timer_create(CLOCK_REALTIME, &ev26, &timer2);
- if (err == -1) { cprintf("main: unable to create timer 2\n"); }
-
- err = timer_create(CLOCK_REALTIME, &evtask, &timer3);
- if (err == -1) { cprintf("main: unable to create timer 3\n"); }
-
- // arm the timers
- err = timer_settime(timer1, TIMER_ABSTIME, &timeout1, NULL);
- if (err == -1) { cprintf("main: unable to set timer 1\n"); }
-
- err = timer_settime(timer2, 0, &timeout2, NULL);
- if (err == -1) { cprintf("main: unable to set timer 2\n"); }
-
- err = timer_settime(timer3, TIMER_ABSTIME, &timeout3, NULL);
- if (err == -1) { cprintf("main: unable to set timer 3\n"); }
-
- cprintf("main: waiting signals...\n");
- while (sys_gettime(NULL) < 8500000) {
- //kern_deliver_pending_signals();
- }
-
- cprintf("main: disarm the timer2\n");
- err = timer_settime(timer2, 0, &nulltimeout, &timeout2);
- if (err == -1) { cprintf("main: unable to disarm timer 2\n"); }
-
- cprintf("main: timer2 disarmed, itvalue=%ld.%ld\n",
- timeout2.it_value.tv_sec,timeout2.it_value.tv_nsec/1000);
-
- while (sys_gettime(NULL) < 10000000) {
- //kern_deliver_pending_signals();
- }
-
- cprintf("main: disarm the timer1\n");
- err = timer_settime(timer1, TIMER_ABSTIME, &nulltimeout, &timeout1);
- if (err == -1) { cprintf("main: unable to disarm timer 1\n"); }
-
- cprintf("main: timer1 disarmed, itvalue=%ld.%ld\n",
- timeout1.it_value.tv_sec,timeout1.it_value.tv_nsec/1000);
-
- while (sys_gettime(NULL) < 12000000) {
- //kern_deliver_pending_signals();
- }
-
- cprintf("main: arm timer1\n");
- timeout1.it_interval.tv_sec = 0;
- timeout1.it_interval.tv_nsec = 0;
- timeout1.it_value.tv_sec = 13;
- timeout1.it_value.tv_nsec = 0;
- err = timer_settime(timer1, TIMER_ABSTIME, &timeout1, NULL);
- if (err == -1) { cprintf("main: unable to arm timer 1\n"); }
-
- while (sys_gettime(NULL) < 14000000) {
- //kern_deliver_pending_signals();
- }
-
-
-
- cprintf("main: ending...\n");
-
- return 0;
-}
Index: pj/pse51/ptest5
===================================================================
--- pj/pse51/ptest5 (revision 1344)
+++ pj/pse51/ptest5 (nonexistent)
@@ -1,403 +0,0 @@
-ELF"4àa4 ( €""H>H> È>HN#HN# Pî 덶°­üORäe‹Ká€uU¿€ Ç–eÆG1GeÆGGeÆG2GeÆG¸Tå"fe£hN#Áèfe£nN#HV#¿€ Ç’eÆG0GeÆGf¸0ŽØŽÀŽÐŽàŽè¼`#Ç0·%`a#Ç4·%`#£TV#‰XV#HV#êµ"8NV#üèbÑê U‰å‹Eê ‰öU‰åƒìÿ5ìÛ#hð+#èåƒÄÉÐU‰åƒìè};ÉÍvU‰åSƒì,ÆEÙxÆEÚ-ÆEØhô"ƒì‹EØf‰$ÆD$-è¼ ÇEôØ"ÇEð]èEì‰$è0jƒÄ jSjèUÇ$ ,#è‹äÇ$èdƒÄƒì jèN;ƒÄ=„vìƒì jèöcƒÄPh`,#èPäèÃmÇ$,#è?七Ä‹]üÉÉöU‰åƒìj ÿujh'èMè‰è‡¬è¶²è1™ƒÄ jjjèÿLèîv¸èƒÄÉÃU‰åWVSƒìX‹]}¨¾\V#ü¹ó¥E¸‰E¨fÇE¸ÇE¼ÇEÀfÇEÄÇEÐÇEÔÇEÜÇEà‰]ÈÇEØÇEÌjè8L‰EÐÇEÜÇEàƒMÌ
-è֜E¨‰$ècƒÄ…Àyƒì h ,#è»ãƒÄƒì SèoE¸ƒÄeô[^_]ÍvU‰åƒìŠU€=lW#„¶€ú*t€úªt
-€ú6t€ú¶uÆlW#¸é›„Òy,ÆlW#€ú¸uÆxW#ÆnW#ëՀúuÐÆxW#ëljöÆlW#€ú8u€ -xW#ÆnW#멀úu € -xW#뛉ö€ú5uf¾‚#·Àé)v€ú…•f¾ü#·Àé -v€úàuÆlW#éTÿÿÿv€ú*t€ú6u2ÆmW#€ú*u€ -xW#é/ÿÿÿ‰ö€ú6…$ÿÿÿ€ -xW# éÿÿÿv€úªt€ú¶u"ÆmW#€úªt €ú¶…öþÿÿÆxW#éêþÿÿ€úFu€=qW#•qW#ë.v€ú:u€=oW#•oW#ëv€úEu;€=pW#•pW#ƒì¶qW#P¶oW#P¶pW#Pèõ¸ƒÄé€úu€ -xW#éhþÿÿv€ú8u€ -xW#éTþÿÿv€út€ú¸uÆxW#é;þÿÿ‰ö¸„҈рúRt2€úOt-€úSt(€úPt#€úQt€úKt€úLt€úMt€úGt
-€úHt€úIu€=pW#uT€=mW#uK·Â -ÿë~€=oW#t/Bð< vBâ<vBÔ<w€=mW#t¶Âf¾€à#·ÀëG€=mW#t¶Âf¾€€‚#·Àë-v€=nW#t¶Âf¾€ ƒ#·Àëv¶Âf¾€à#·ÀÉÃU‰åWVSƒì,}؃ìjE×PèòƒÄ…À„¡ƒì ¶E×Pèöüÿÿ‰ÂƒÄf…Ò„†÷Âÿt  xW#ƒÈ@ë‰ö xW#ˆE؈UيE׈EÚ±»;؁#}8¾`#v݊D2:EÚuŠ2:EØuƒì Wÿ’d#±ƒÄC;؁#|ЄÉuƒìjW¿¢ƒ#Pèý¡ƒÄè-é<ÿÿÿU‰å‹E£hW#Šˆâ#ŠPˆã#ŠPˆä#ŠPˆå#ŠPˆæ#ŠPˆç#ŠPˆè#ŠPˆé#ŠPˆê#ŠP ˆë#ŠP
-ˆ‚‚#ŠP ˆƒ‚#ŠP ˆ„‚#ŠP -ˆ…‚#ŠPˆ†‚#ŠPˆ‡‚#ŠPˆˆ‚#ŠPˆ‰‚#ŠPˆŠ‚#ŠPˆ‹‚#ŠPˆì#ŠPˆŒ‚#ŠPˆí#ŠPˆ‚#ŠPˆú#ŠPˆš‚#ŠPˆû#ŠPˆ›‚#ŠPˆ‚#ŠPˆ§‚#ŠPˆ‚#ŠPˆ¨‚#ŠP ˆ ‚#ŠP!ˆ©‚#ŠP"ˆ‚#ŠP#ˆµ‚#ŠP$ˆ‚#ŠP%ˆ³‚#ŠP&ˆ‚#ŠP'ˆ´‚#ŠP(ˆ ‚#ŠP)ˆ«‚#ŠP*ˆ‚#ŠP+ˆ¹‚#ŠP,ˆî#ŠP-ˆŽ‚#ŠP.ˆï#ŠÖˆ‚#ŠP0ˆá#ŠP1ˆ‚#ŠP2ˆü#ŠP3ˆœ‚#ŠP4ˆä‚#ŠP5ˆς#ŠP6ˆЂ#ŠP7ˆт#ŠP8ˆ˂#ŠP9ˆ̂#ŠP:ˆ͂#ŠP;ˆǂ#ŠP<ˆȂ#ŠP=ˆɂ#ŠP>ˆ҂#ŠP?ˆӂ#ŠP@ˆ.‚#ŠPAˆ‚#ŠPBˆ‚#ŠPCˆ*‚#ŠPDˆ΂#ŠPEˆ·‚#ŠPFˆʂ#ŠPGˆþ#ŠPHˆž‚#ŠPIˆ‚#ŠPJˆ°‚#ŠPKˆ‚#ŠPLˆ®‚#ŠPMˆ‚#ŠPNˆ ‚#ŠPOˆò#ŠPPˆ’‚#ŠPQˆ‚#ŠPRˆ¡‚#ŠPSˆ‚#ŠPTˆ¢‚#ŠPUˆ‚#ŠPVˆ£‚#ŠPWˆ÷#ŠPXˆ—‚#ŠPYˆ‚#ŠPZˆ¤‚#ŠP[ˆ‚#ŠPRˆ¥‚#ŠP]ˆ‚#ŠP^ˆ¦‚#ŠP_ˆ‚#ŠP`ˆ²‚#ŠPaˆ‚#ŠPbˆ±‚#ŠPcˆø#ŠPdˆ˜‚#ŠPeˆù#ŠPfˆ™‚#ŠPgˆð#ŠPhˆ‚#ŠPiˆó#ŠPjˆ“‚#ŠPkˆÿ#ŠPlˆŸ‚#ŠPmˆô#ŠPnˆ”‚#ŠPoˆö#ŠPpˆ–‚#ŠPqˆ‚#ŠPrˆ¯‚#ŠPsˆñ#ŠPtˆ‘‚#ŠPuˆ -‚#ŠPvˆ­‚#ŠPwˆõ#ŠPxˆ•‚#ŠPyˆ ‚#ŠPzˆ¬‚#ŠP{ˆ:ƒ#ŠP|ˆ;ƒ#ŠP}ˆGƒ#Š@~¢Hƒ#]ÍvU‰åWVSƒì\‹]}ؾ€W#ü¹󥿸ƒ=tW#…Qº¾à#¹€‚#‰ö·ÂÆ0ÆBfúví…Ûu]؃{ÿuÇChV#ƒì ÿsèûÿÿÇ$jjjhÙ,#èϔf£¢ƒ#ƒÄ fƒøÿu ¸þÿÿÿéÞ‰öjjjhÙ,#è0˜f£¤ƒ#ƒÄfƒøÿuƒì ¿¢ƒ#P蕛¸ýÿÿÿ頍vÇ؁#ƒ{ÿuÇC "ƒ{tIÆE™cÆEš.ÆE˜ƒìÿsƒì‹E˜f‰$ÆD$.èÅÆE˜ƒÄÿsƒì‹E˜f‰$ŠEšˆD$襃ă;ÿuQfÇE¨ÇE¬ÇE°fÇE´ÇE¸ÇEÐÇEÈÐÇEÄ ÇEÀ¨aÇE¼
-ÇE̍E¨ë‹ƒì jjPh¨"hâ,#èÿ‰ÃƒÄ ‰¨ƒ#ƒøÿu'ƒì ¿¢ƒ#P蓚¿¤ƒ#‰$脚‰Ø钐ƒ=|W#uWƒì ÿ5¨ƒ#艉ǃąÿt4ƒì ¿¢ƒ#PèLš¿¤ƒ#‰$è=šƒÄÿ5¨ƒ#èg5¸üÿÿÿë=Ç|W#ëèƒì¶qW#P¶oW#P¶pW#PèûÇtW#‰øƒÄeô[^_]ÃU‰åƒì¶EPEèP¿¤ƒ#Pè0œƒÄ„Àt÷Eè@u¶Eéë‰ö¸ÉÐU‰åƒì ¶E Pÿu¿¤ƒ#Pèõ›·ÀƒÄÉÐU‰åSƒ=؁#0‹ -؁#Í»`#‹Ef‰ŠE
-ˆD‹E ‰‚d#A‰ -؁#‹$ÉÉöU‰åƒìèÉÍvU‰åƒìè±ÉÍvU‰åƒì¸ÿÿÿÿƒ=tW#t9蓃ì ÿ5¨ƒ#è-4¿¢ƒ#‰$è昿¤ƒ#‰$èט¸ƒÄÉÐU‰åƒìjèoÔÇ$è+ÔÇ$È,#èóÓè²-ƒÄÉÐU‰åWVSƒìŠEˆEó¿1¾d»`‰ö¹v‰òì©t"‰ÈA=þÿÿvì¸ÿÿÿÿ…Àu‰ÚŠEóî¸ë‰ö¸ë搸ÿÿÿÿÇEì¹d…Àt¸ÿÿÿÿët¸ë‰Êì©uî‹EìÿEì=þÿÿvé¸ÿÿÿÿ…Àu‰Úì¶Àë¸ÿÿÿÿƒøÿu
-¸þÿÿÿë3v=úu ¸ë"‰ö=þt ¸ýÿÿÿë‰ö‰øO…À9ÿÿÿ¸üÿÿÿƒÄ[^_]ÃU‰åVSƒìŠEˆE÷³Ô¾¹d‰ö‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë -¸ë搸ÿÿÿÿ…Àt¸ÿÿÿÿëL¸ë&»¹d‰ö‰Êì©tâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àuº`ŠE÷î¸ëv¸ÿÿÿÿ…Àt¸ÿÿÿÿëj¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àuºdì© tº`ì¶Ðëvºÿÿÿÿ‰Ð…Òx¸úú”ÀDþƒÄ[^]ÃU‰åWVSƒì »¾`‰ØK…À~^ƒì hÿè¼ýÿÿ‰ÂƒÄ…Òu{¿¹d‰Êì©u‰øG=þÿÿvì¸ÿÿÿÿ…Àu‰òì¶Ðëv¸ëꐺÿÿÿÿúªu›¸üÿÿÿúª…ƃì hõèMýÿÿ‰ÂƒÄ…Òt(¸ûÿÿÿ馉ö¸ýÿÿÿ隉ö¸ë.¸ëZ³`¾¹d‰Êì©tډðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî³e¾¹dv‰Êì©t®‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØîƒì hôèªüÿÿ‰ÂƒÄ¸…Ò•ÀHƒàƒèeô[^_]ÃU‰åWVSƒì ¾»d¹`‰Úì©t -‰Êì‰ðF=þÿvé³­¾¹d‰Êì©„‚‰ðF=þÿÿvè¸ÿÿÿÿ…ÀuºdˆØî¾»d¹`‰Úì©t -‰Êì‰ðF=þÿv鳪¾¹d‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ë搸놐¸ÿÿÿÿ…Àt¸÷ÿÿÿéݐ¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àu º`ì¶Àë¸ÿÿÿÿƒøUt¸ÿÿÿÿ錸ë&³«¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸öÿÿÿé9¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àu º`ì¶Àë¸ÿÿÿÿ…Àt¸þÿÿÿé鐸ë&³®¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…À…<èzüÿÿ…À…Žƒì hóèIúÿÿƒÄ…Àt
-¸ùÿÿÿépƒì jè.úÿÿƒÄ…Àt¸øÿÿÿéU¸ë.ÆŒW#³©¾¹d‰Êì©tډðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸ôÿÿÿéù¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àu º`ì¶Àë¸ÿÿÿÿ…Àt¸óÿÿÿ驐¸ë&³¨¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸õÿÿÿéU¸ë&³Ó¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸ðÿÿÿ鐸ë&³Z¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî¸ë¸ÿÿÿÿ…Àt¸ïÿÿÿ魐ƌW#ëBv¸ë^¹þÿ¾d»`‰òì¶ø÷Çt‰Úì¶À÷Ç tƒøZt»IƒùÿuÙ³§¾¹d‰Êì©tª‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àté»þÿÿ‰ö¸ë:€=ŒW#„þÆŒW#³¨¾¹d‰Êì©tΉðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸îÿÿÿ鱐¸ëvƒì hóèWøÿÿ‰ÃÇ$dèIøÿÿÃÇ$èè;øÿÿÃÇ$è-øÿÿÃÇ$çèøÿÿþ§ƒÄ¿¹dv‰Êì©t’‰øG=þÿÿvì¸ÿÿÿÿ…Àuºd‰ðî¸ë¸ÿÿÿÿ…Àt¸íÿÿÿë…ÛuÆŒW#¸eô[^_]ÃU‰åVS¡ W#…Àt¡ W#H£ W#¸é²¸ë6ƒ=˜W#uKŠœW#¾¹dv‰Êì©t҉ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØîÿ˜W#뤍v¸ë:ƒ=˜W#uGǘW#³ô¾¹d‰Êì©tΉðF=þÿÿvì¸ÿÿÿÿ…À…Xÿÿÿº`ˆØîéKÿÿÿ‰ö¸[^]ÍvU‰åWVSƒì ¡¤W#@£¤W#¾õ³Ô¿¹dv‰Êì©t"‰øG=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ë搸ë.¸ÿÿÿÿ…Àu0»¹d‰Êì©tډØC=þÿÿvì¸ÿÿÿÿ…Àuº`‰ðîœúX‰Çƒì hõè5õÿÿ‰ÃƒÄ…Ût¸ûÿÿÿéù‰ö¸ë1¾§ÇEð¹dv‰Êì©tڋEðÿEð=þÿÿvé¸ÿÿÿÿ…Àu ºd‰ðî¸ë¸ë=¸ëq¸ÿÿÿÿþ`ÇEð¹d‰Êì©t΋EðÿEð=þÿÿvé¸ÿÿÿÿ…Àuºd‰ðî¾eÇEð¹dv‰Êì©tš‹EðÿEð=þÿÿvé¸ÿÿÿÿ…Àuº`‰ðîƒì hôè;ôÿÿÃĉøPÆW#‰Øeô[^_]ÐU‰åWVSƒì ¸ÿÿÿÿ€=ŒW#„ºœúX‰Æƒì hõèóóÿÿƒÄ…Àt(¸ûÿÿÿé—‰ö¸ë:¸ëf¸é“‰ö³`¿¹d‰Êì©tΉøG=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî³G¿¹dv‰Êì©t¢‰øG=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØ¿¹dv‰Êì©„rÿÿÿ‰øG=þÿÿvè¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt ¸îÿÿÿ鐃ì hôèÿòÿÿƒÄ…Àt¸Ûÿÿÿ飉ö¸ë:‰ðP¡¤W#@£¤W#¾ô³Ô¿¹d‰Êì©tΉøG=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë -¸ë.¸ÿÿÿÿ…Àu0»¹d‰Êì©tډØC=þÿÿvì¸ÿÿÿÿ…Àuº`‰ðîƍW#¸eô[^_]ÍvU‰åƒìÇĄ#ÇÀ„#ƒ=”W#t!úè‹õÿÿ£W#Ç”W#û…Àtúèôÿÿû¡W#…ÀuƒìÿuhŒ "jèQ¸ƒÄÉÍvU‰åVS¡ W#@£ W#³õ¾¹d‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî¸ë -¸ë搸ÿÿÿÿ[^]ÍvU‰åVS¡ W#@£ W#³ô¾¹d‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî¸ë -¸ë搸ÿÿÿÿ[^]ÍvU‰åƒì‹MœúX‰Â¡À„#@%ÿ£À„#Š€Àƒ#ˆ‰ÐP€9úu è(úÿÿë‰ö¸ÉÐU‰åƒìƒ=¬W#t(Ç$…#Ç …#Ç(…#ǬW#‹E£¨W#ƒ=”W#t!úèôÿÿ£W#Ç”W#û…Àtúèòÿÿû¡W#…Àu.¸ìÿÿÿ€=ŒW#t ƒìjÿhÈ "j èOƍW#¸ƒÄÉÉöU‰åS‹MœúX‰Ã¡ …#@ƒà?£ …#ºà„#ŠˆA¡ …#@ƒà?£ …#Šˆ¡ …#@ƒà?£ …#ŠˆA‰ØP¸‹$ÉÉöU‰åƒì€=W#tèäùÿÿƒì j èŽOƍW#¸ƒÄÉÐU‰åƒìƒ=”W#t!úè óÿÿ£W#Ç”W#û…Àtúè™ñÿÿû¡W#…Àt¸ë¶ŒW#ÉÍvU‰åVSŠEŠU€} t ƒ -œW#ë ‰öƒ%œW#„Àt ƒ -œW#ëƒ%œW#„Òtƒ -œW#ë¸ë6¸ëbƒ%œW#³õ¾¹d‰Êì©t҉ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî³í¾¹dv‰Êì©t¦‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØîÿ˜W#[^]ÐU‰åSƒìœúX‰Ã€=W#tè–øÿÿè‘ðÿÿƒì hóèhîÿÿƒÄ…Àuƒì jèWîÿÿƒÄ…Àu‰ØP‹]üÉÍvU‰åº`ì¶ÈœúX‰Â¡À„#;Ą#t¡Ä„#ˆˆÀƒ#@%ÿ£Ä„#‰ÐP]ÉöU‰åƒìº`ì¶Ðƒ=(…#u €úúu¡¤W#H£¤W#郍v÷ÂÀuxÿ(…#œúX‰Á¡ …#;$…#t¡$…#ˆà„#@ƒà?£$…#ë"‰ö¡$…#+(…#ƒÀAƒà?£$…#Ç(…#‰ÈPƒ=(…#uÇ(…#ƒì ÿ5¨W#èƒÄÉÉöU‰åSƒì}™w‹UÑâU‰ÐÁà)Ðfƒ<ÅèÜ#uèùÝNj¸ÿÿÿÿ鏐ƒ=ÀÛ#tcœúX‰Ã‹UÑâU‰ÐÁà)ЍÅ0ö€ÁÜ# t ÿ€ÄÜ#ë-v‹EÑàE‰ÂÁâ)‹ÕÄÜ#ƒì‹• Ü#ÿuRÿP@ƒÄ‰ØPéèƒ¡…ÀtgœúX‰Ã‹UÑâU‰ÐÁà)ЍÅ0ö€ÁÜ# t ÿ€ÄÜ#ë2v‹EÑàE‰ÂÁâ)‹ÕÄÜ#ƒì‹• Ü#ÿuRÿP@蔃ĉØPé­úèJ²‹ìÛ#R‰ÑÁá)Ñ»ÀÜ#f‰DË‹UÑâU‰ÐÁà)ЍÅ0öD t ÿ€ÄÜ#ë?vƒìU‰ÐPjÿèW#‹MI‰ÐÁà)ЋÅÄÜ#ƒÄ‹• Ü#QRÿP@è/ƒÄ¡ìÛ#@‰ÂÁâ)ƒì ¿ÕÈÜ#P踱èƒÄû¸‹]üÉÐU‰åWVSƒì ‹]f…Ûuè>Ünj¸ÿÿÿÿé"‰öƒ=ÀÛ#„“œúX‰ÇÇEð}ð™s¾ÀÜ#‹UðÑâUð‰ÐÁà)ÐÁàf9\,uHƒÀ0öD0 t ÿ€ÄÜ#ë6ƒìEðPjÿèW#‹MðI‰ÐÁà)ЋÅÄÜ#ƒÄ‹• Ü#QRÿP@ƒÄÿEð}ð™~“‰øPé}‰ö蓟…À„›œúX‰ÇÇEð}ð™w¾ÀÜ#‹Eð@‰ÂÁâ)Õf9\,uJƒÀ0öD0 t ÿ€ÄÜ#ë8vƒìEðPjÿèW#‹MðI‰ÐÁà)ЋÅÄÜ#ƒÄ‹• Ü#QRÿP@ƒÄÿEð}ð™~èj‰øPéԐúè"°‹ìÛ#R‰ÑÁá)Ñf‰ÍÈÜ#ÇEð}ð™w¾ÀÜ#‹Eð@‰ÂÁâ)Õf9\,uJƒÀ0öD0 t ÿ€ÄÜ#ë8v‹MðI‰ÐÁà)ЋÅÄÜ#ƒì‹• Ü#QRÿP@ƒÄEðPjÿèW#ƒÄÿEð}ð™~èÞ ¡ìÛ#@‰ÂÁâ)ƒì ¿ÕÈÜ#Pèj¯èÁƒÄû¸eô[^_]ÃU‰åSƒìúè;¯‹ìÛ#R‰ÑÁá)Ñf‰ÍÈÜ#ƒìh¤Ü#jèl–ƒÄUð¡¨Ü#;øÛ#|¡¤Ü#+ôÛ#‰Eð¡¨Ü#+øÛ#ë!‰ö¡¤Ü#+ôÛ#H‰Eð¡¨Ü#+øÛ#ʚ;‰B‹Mð ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ôºÓMb‰Ø÷êÁú‰ØÁø)ÂыìÛ#R‰ÐÁà)Ð) Å Ý#ƒì Qè. ƒÄƒ=üÛ#ÿtƒì ÿ5üÛ#ÿÈÛ#ÇüÛ#ÿÿÿÿƒÄ‹ -ìÛ#I‰ÐÁà)ЋÅÄÜ#ƒì‹… Ü#QPÿRLè{ ƒÄhìÛ#jÿèW#ÇìÛ#ÿÿÿÿÇÜ#ÿÿÿÿèV ¡ìÛ#@‰ÂÁâ)¿ÕÈÜ#‰$èã­è:ƒÄû‹]üÉÐU‰åƒìhL'"è( ƒÄÉÍvU‰åƒìjè ƒÄÉÉöU‰åƒìƒ=´W#u(èè
-ƒì ¡ìÛ#@‰ÂÁâ)¿ÕÈÜ#Pèt­ƒÄÉÍvU‰åWVSƒìhê,#è]$ƒÄ»ÀÜ#ëv‹Eð@‰ÐÁà)ЁLÃ0€ƒì hdÜ#èÊ+‰EðƒÄƒøÿ„“@‰ÐÁà)ÐöDÃ1@u¾‹UðR‰ÃÁã)ÃÁã¾ÀÜ#¡°W#‰3@£°W#‹E ‰DƒìjÿuƒÔÜ#Pè ¾ÆD'ƒÃ fÇD3‹Mf‹%ÿf‰D3
-f‹A f‰D3 ƒÄ‰Ø‰ñº‹]ƒ{tf‹Sf‰T‹UðR‰ÁÁá)ÁÁáY0‹U‹B -‰ƒÀÜ#¿ÄÜ#Ç;¾ÈÜ#¡ìÛ#@‰ÂÁâ)‹DÖ0‰3ºÌÜ#ǍAP‹]ð‰˜ÀÜ#Ç8ÇÿÿÿÿÇ0ÿÿÿÿǁ Ý#°Ç8Ç0ǁÁÀǁÀÜ#Ç9ºۍƒ€ 
-Ç…$Ý#Bƒúvì‹Eð@‰ÐÁà)ÐÁàÀǂÈÜ#ÿÿÿÿǂÌÜ#Ý#‰Ý#º‹Mðɍ€ ‰ö
-Ç…Ý#Bƒú~ì»ëC;ðÛ#sƒì‹ Ü#ÿuSÿPƒÄ…Àxß;ðÛ#u7‹]ð[‰ÂÁâ)ÂfÇÕèÜ#ƒìhdÜ#SèÚ)è¡ÕDŽ鄉ö‹Eð@‰ÐÁà)Ѝ4ʼnžÄÜ#ƒì‹ Ü#ÿuÿuðSÿP,ƒÄ…ÀyWfdžèÜ#ƒìhdÜ#ÿuðèz)èAÕDžë'è3Õǃ釃ì ÿuðè9èÕdž¸ÿÿÿÿƒÄëjƒE‹U‹zü…ÿtY‰ö¾ëF;5äÛ#s0ƒìµ‹ƒ€Ü#WVÿP ƒÄ…Àxۃ싃€Ü#WÿuðVÿP$ƒÄ;5äÛ#t‡ƒE‹M‹yü…ÿu©‹Eðeô[^_]ÉöU‰åƒìEPÿuÿu ÿuè`üÿÿƒÄÉÍvU‰åWVSƒì ‹} ƒt6‹EÑàE‰ÂÁâ)‹G‰ÕÌÜ#‰Æ‹UÑâU‰ÐÁà)Ѓ ÅðÜ#@ën‰öƒì ‹UÑâU‰ÐÁà)зÅîÜ#Pè@‹UÑâU‰ÑÁá)Ñ»ÌÜ#‰ˉƋEÑàE‰ÂÁâ)ƒÄƒ<Óuƒì ÿuèìèËÓLjëtv‹EÑàE‰ÂÁâ)»ÀÜ#·DÓ.ƃì ·GPjÿwVh8."è-‰ÁƒÄ f…Éu?ƒì‹UÑâU‰ÐÁà)зDÃ.PVèƒÄÿuèvèUÓlj¸ÿÿÿÿƒÄëN‹EÑàE‰ÂÁâ)Âf‰ ÕÈÜ#ƒìU‰ÐPjÿèW#ƒÄöGu ÿàÛ#ëvöGuÿ Ü#¸eô[^_]ÍvU‰åWVSƒì ‹M‹U ‹]œúX‰ÇEPSRQè­úÿÿ‰ÆƒÄƒþÿ„ɍv‰ÐÁà)ЋÅÄÜ#‹… Ü#ƒx(„èà…À‰€»;äÛ#svƒì‹€Ü#VSÿP(ƒÄC;äÛ#råv‰ÃÁã)ÃÁ㋃ÄÜ#ƒì‹… Ü#VPÿR0fǃèÜ#ƒÄhdÜ#Vè\&ƒÄè ÒLJ‰øP¸ÿÿÿÿë#vƒìSVèŽýÿÿƒÄº…À”ÂJ ։øP‰ðeô[^_]ÃU‰åVS‹u»;äÛ#svƒì‹€Ü#VSÿP(ƒÄC;äÛ#råv‰ÃÁã)ÃÁ㋃ÄÜ#ƒì‹… Ü#VPÿR0fǃèÜ#ƒÄhdÜ#Vè¬%ƒÄeø[^]ÉöU‰åVS‹]è ƒì ¡ìÛ#@‰ÂÁâ)¾ÀÜ#SÿTÖú‰$èn¡ìÛ#@‰ÂÁâ)¿DÖ‰$èn¦ƒÄeø[^]ÃU‰åWVSƒì‹]‹}úû™w! [‰ÈÁà)ÈÁàºÀÜ#öD0tfƒ|(u û¸ÿÿÿÿéDžÿy$[‰ÁÁá)Á Í°¸ÄÜ#‹<Çë ‰öƒÿv¿[‰ÁÁá)Á Í°‰Mä¹ÈÜ#‰Mì‹Uä‹
-‰Â)úƒÂ‰Ð¾º÷ö‰Eð‹uä;tMۍƒ€4‹MðىÈÁà)ȍ Å°‰ö2‹…$Ý#‹] ‰ƒÃ‰] B»‰Ðº÷ó‹]ì;uÔû‰øƒÄ[^_]ÐU‰åSƒì‹]‹ -ìÛ#I‰ÐÁà)ЍÅö‚ðÜ#tɍ€È‚xÝ#…$Ý#¡¤Ü#;ôÛ#|;ôÛ#uA¡¨Ü#;øÛ#}4ƒìSÿ5ìÛ#ÿ5øÛ#ÿ5ôÛ#ÿ5¨Ü#ÿ5¤Ü#h-#è8¶ƒÄ è@ ‹]üÉÍvU‰åWVS‹ -ìÛ#I‰ÐÁà)ЍÅöƒðÜ#„›ɍ€ȍ‹°ÈÜ#ºÄÜ#‹t‚`‹”À¸ÌÜ#94s‰4‹ìÛ#[‰ÁÁá)ÁÁፁÀ°ÀÜ#¿ÄÜ#B‰8±°‹†ÈÜ#@º‰Ñº÷ñ‰–ÈÜ#ۍƒ€ØÐÇD‡`ƒ<>wÿ>[^_]ÉöU‰åWVS‹M‹] ‹u‹}úù™w!I‰ÐÁà)ÐÁàºÀÜ#öD0tfƒ|(uû¸ÿÿÿÿëy…ÛtI‰ÂÁâ)‹ՀÝ#‰…ötI‰ÂÁâ)‹Õ|Ý#‰…ÿtI‰ÂÁâ)‹ՄÝ#‰ƒ}t(ɍ€ȍ I‰ÊÁâ)ÊÕxÝ#‹…$Ý#‹U‰û¸[^_]ÉöU‰å‹Múù™w!I‰ÐÁà)ÐÁàºÀÜ#öD0tfƒ|(uû¸ÿÿÿÿë7I‰ÂÁâ)ÂÁ⍂ÀǀÀÜ#ǀÄÜ#ǂ|Ý#û¸]ÍvU‰åWVSƒì ƒ=ìÛ#ÿt¡ìÛ#@‰ÂÁâ)ÂöÕðÜ#…3ƒ=ìÛ#ÿ„ƒìh¤Ü#j證ƒÄU表Ü#;øÛ#|¡¤Ü#+ôÛ#‰E表Ü#+øÛ#ë"v¡¤Ü#+ôÛ#H‰E表Ü#+øÛ#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыìÛ#R‰ÐÁà)Ð) Å Ý#ƒì QènüÿÿƒÄƒ=üÛ#ÿtƒì ÿ5üÛ#ÿÈÛ#ÇüÛ#ÿÿÿÿƒÄ‹ -ìÛ#I‰ÐÁà)Ћ<ÅÄÜ#ƒì‹½ Ü#QWÿP<ƒÄ¿4½ƒì ‹† Ü#WÿP$‰ÃƒÄƒûÿt%ƒì[‰ÐÁà)ЋÅÄÜ#‹… Ü#SPÿR4ƒÄ븅Àx»ƒûÿuG뫍v‹5ìÛ#‰Ü#‰ìÛ#[‰ÐÁà)Ð;ÅÝ#t0»ÀÜ#‰ö¡ìÛ#@‰ÂÁâ)‹TÓP‰ìÛ# R‰ÈÁà)È;TÃPu×;5ìÛ#tƒìhìÛ#jÿèW#ƒÄ‹ -ìÛ#I‰ÐÁà)ÐÁà¾ÀÜ#fÇD(‹¸ÄÜ#ƒì‹½ Ü#‹Ü#¸;ìÛ#•ÀPQWÿS8¡ìÛ#@‰ÂÁâ)ƒÄöDÖ1„Ü¡Ü#;ìÛ#…Ë¡¤Ü#‰EèMè¡ìÛ#@‰ÂÁâ)»ÌÜ#‹DÓ@º@B‰Ö™÷þ’’’Áâ‰Ö5¨Ü#‰q¿¡/¸D‰ø÷î‰×Áÿ‰ð™‰þ)Ö¡ìÛ#@‰ÂÁâ)‹\Ó@ºƒÞC‰Ø÷êÁú‰ØÁø)2Eè‹AºÊš;‰Ó™÷û‰Qjhd<"ÿuìÿuèÿÄÛ#‰ÃƒÄƒûÿuƒìÿ5ìÛ#jèû7ƒÄ‰üÛ#¡¤Ü#£ôÛ#¡¨Ü#£øÛ#eô[^_]ÉöU‰åWVSƒìÇPœ%úÿuèD»ƒÄ¿ÄÜ#¾ÀÜ#‰ö[‰ÂÁâ)ÂÁâÇ:ÿÿÿÿǂÌÜ#ÆDB fÇD0fÇD0
-fÇD0 fÇD0B0Ç0Ç8ǀÈÜ#ǀÌÜ#‚Ý#Ç@Çǂ Ý#BP‰0Ç8ÇD`DŽÐ‚˜ß#Ç@Ǎ‚àÇ0ÿÿÿÿÇ8ÿÿÿÿ‚°Ç8ǀÈÜ#ǀÌÜ#ÂÀÇ2Ç:ºۍƒ€ v
-ÇD‡`Bƒúvï[‰ÐÁà)ЍÅÀǀÈÜ#ÿÿÿÿǀÌÜ#ºۍƒ€ 
-DŽ†ÐBƒú~ìCû™Žƒþÿÿ»¹ÈÜ#[‰ÂÁâ)C‰DÑP‰Ãû˜~åÇÀ™%ÿÿÿÿ»™¹ÌÜ#[‰ÂÁâ)Cÿ‰DÑP‰Ã…ÛéÇÝ#ÿÿÿÿÇdÜ#ÇèÛ#ÇàÛ#Ç Ü#ÇÜ#ÿÿÿÿÇìÛ#ÿÿÿÿÇüÛ#ÿÿÿÿÇøÛ#ÇôÛ#ÇðÛ#ÇäÛ#ÇÀÛ#èÚè}è42ƒì ÿuèqÉÿÿ£hÜ#ƒÄ=×Övƒì h`-#èÇ$è »ƒÄ¸ƒ=hÜ#”À‰Eè]è¡hÜ#‰CÇPœ%躂ƒì S豌Ç$ø<"èÇÇ$8'"聎Ç$P<"蕎ƒÄjjèEÿðW#ƒÄh¤Ü#jèLƒèOùÿÿèê›f£`Ü#¡ìÛ#@‰ÂÁâ)¾ÀÜ#¿DÖ‰$èϛÇ$è7ŽÿìW#ÇPœ%ƒÄ»ƒ=èÛ#ŸÃSjèɃă= Ü#teè„ Ç´W#ƒìh¤Ü#j軂è^›f£`Ü#è³øÿÿÇ$P<"èǍ¡ìÛ#@‰ÂÁâ)¿DÖ‰$è7›Ç$蟍ƒÄÇPœ%ƒìSjèCèÇPœ%ƒÄjjè(ƒÄúƒ=èÛ#t"ƒìÿ5èÛ#h‹-#èP¬Ç$ÿÿÿÿèX¹ƒÄƒì jèK¹ƒÄeô[^_]ÃU‰åSƒìƒ=´W#…•èW‰…Àuú腚‹ìÛ#R‰ÑÁá)Ñf‰ÍÈÜ#‹E£èÛ#Ç´W#ƒ=ìÛ#ÿ„ƒìh¤Ü#j藁ƒÄUð¡¨Ü#;øÛ#|¡¤Ü#+ôÛ#‰Eð¡¨Ü#+øÛ#ë ¡¤Ü#+ôÛ#H‰Eð¡¨Ü#+øÛ#ʚ;‰B‹Mð ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ôºÓMb‰Ø÷êÁú‰ØÁø)ÂыìÛ#R‰ÐÁà)Ð) Å Ý#ƒì QèZôÿÿƒÄƒ=üÛ#ÿtƒì ÿ5üÛ#ÿÈÛ#ÇüÛ#ÿÿÿÿƒÄ‹ -ìÛ#I‰ÐÁà)ЋÅÄÜ#ƒì‹… Ü#QPÿR<ÇÜ#ÿÿÿÿÇìÛ#ÿÿÿÿƒÄèü‡…Àtƒì ¿`Ü#Pè,™ƒÄëvƒì ¿`Ü#Pè™èkƒÄû‹]üÉÉöU‰åSƒìÇEøÿÿÿÿ»º Ü#¡ Ü#ƒx(t1ƒì‹šUøRSÿP(ƒÄ…Àu¸ÿÿÿÿëCƒûwº Ü#‹šƒx(uи‹]üÉÉöU‰åƒìè è+ÉÉöU‰åƒìÇüÛ#ÿÿÿÿè§êÿÿÉÐU‰åSƒìœúX‰Ãƒ=Pœ%tƒ= Ü#t‰ØPëƒì jè–ýÿÿƒÄ‰ØP‹]üÉÉöU‰åƒìÿuèzýÿÿƒÄÉÐU‰åSƒì‹UœúX‰ÃƒìRjèZ‰ÂƒÄ‰ØP‰Ð‹]üÉÉöU‰å¸èÛ#ƒ=ìÛ#ÿt‹ìÛ#R‰ÐÁà)ЍÅ Ý#]ÉöU‰åSƒìœúX‰Ãƒ=Pœ%tƒ= Ü#t‰ØPëƒì ÿuèíüÿÿƒÄ‰ØP‹]üÉÐU‰å]ÍvU‰åWVSƒì ÇEðÇE컍[ …ƒ¹H…#t[¿@…#ƒ<9tP‹ìÛ#ҍ‚€Ð؍…оÀÜ#ƒ<0t+ûƒì ÿ40ÿ9ƒÄú‹ìÛ#ҍ‚€Ð؋´†Ð uìCƒû~Œƒ}ìt -ÿEðƒ}ðŽmÿÿÿeô[^_]ÐU‰åVSº¾@…#»D…#¹H…#vRÁàÇ0B‰Çƒú~ãÇ8‹#ÿÿÿÿÇ@‹#ÇH…#Ç@…#ÇD…#ÿÿÿÿ[^]ÐU‰åS‹Múƒ=@‹#ÿu û¸ ënv¡@‹#@Ç•H…#‰¡@‹#@‹…D…#£@‹#‹@‹U ‰…@…#º»ÀÜ#‰öҍ‚€ÐDŽƒÐBú™~ßû¸‹$ÉÃU‰åú¡ìÛ#À’ÂU‹•Ý#û]ÍvU‰å‹Múƒùw -Iƒ<…H…#u û¸ë%v¡ìÛ#À’ÂʋE ‰•Ý#û¸]ÃU‰åS‹]œúX‰Áƒûw -[ƒ<…H…#u‰ÈP¸ë.v[Áà‹@‹#‰D…#ǀH…#‰@‹#‰ÈP¸‹$ÉÃU‰åWVSƒì ¡ìÛ#‰Eð‰ÂÑâ‰ÐÁà)ЍÅ¿ÀÜ#öD0 tm‹E‰‚ŒÝ#‹UðÑâUð‰ÐÁà)ЁLÇ0@‹UðÑâUð‰ÐÁà)ЍÅÀºÈÜ#ƒ<ÿt,‹4v‰ÃÁã)ÃÁ㋃ÄÜ#ƒì‹… Ü#VPÿRD‰tPƒÄ¹»ÀÜ#;MðtI‰ÐÁà)ЋUð9TÃP„ˆAù™~ۋUðÑâUð‰ÐÁà)Ѓ<ÅÝ#t[»ÄÜ#ûƒì ‹UðÑâUð‰ÐÁà)ЋDÃPÿpÿƒÄú‹EðÑàEð‰ÂÁâ)ÕP‹‹@‰‹UðÑâUð‰ÐÁà)Ѓ|ÃPu«èJüÿÿƒì ‹EðÑàEð‰ÂÁâ)»ÀÜ#¿DÓPèÔyƒÄEðPjÿèW#‹Eð@‰ÂÁâ)ՃÄöD0@u%ƒì·D.P‹Eð@‰ÂÁâ)Âÿ4ÕÌÜ#èÁ ƒÄ»;äÛ#sƒì‹€Ü#ÿuðSÿP(ƒÄC;äÛ#rã‹MðI‰ÐÁà)ЋÅÄÜ#ƒì‹… Ü#QPÿRPÇìÛ#ÿÿÿÿÇÜ#ÿÿÿÿ‹Eð@‰ÂÁâ)ƒÄöÕðÜ#u&ÿ -àÛ#ƒ=àÛ#uBèZúÿÿë;ƒìRjèY+ƒÄëg‹Eð@‰ÂÁâ)ÂöÕðÜ#uÿ - Ü#ƒ= Ü#uèúÿÿƒìh¤Ü#jèÒyƒÄƒ=üÛ#ÿtƒì ÿ5üÛ#ÿÈÛ#ÇüÛ#ÿÿÿÿƒÄè­ïÿÿeô[^_]ÐU‰åVS‹uúv‰ÐÁà)ÐÁàºÀÜ#öD0ufƒ|(uèѼNJû¸ÿÿÿÿ麍v‰ÐÁà)ÐöÅñÜ#tû雉ö;5ìÛ#uJv‰ÐÁà)лÀÜ#‹DÃ0©t0©u)ƒì jè¥üÿÿ¡ìÛ#@‰ÂÁâ)¿DÓ‰$襑ƒÄ»ëvC;¸W#}ƒìÝÿ°d‹#Vÿ`‹#ƒÄ…Àtٍv‰ÐÁà)Ё ÅðÜ#û¸eø[^]ÍvU‰åWVSƒì ‹Ef‰Eòf…Àuèâ»ÇŒ¸ÿÿÿÿé‰öú¡Ü#@‰ÂÁâ)Âf‹Mòf; ÕìÜ#”Eñ¾¿ÀÜ#‰öv‰ÐÁà)ÐÁà‹T0÷Â…ˆƒÀ fƒ|8t}÷Âuuf‹Mòf9L8 uj;5ìÛ#u!÷Ât÷Âuƒì jè{ûÿÿƒÄëC‰ö»ëC;¸W#}ƒìÝÿ°d‹#Vÿ`‹#ƒÄ…Àtٍv‰ÐÁà)ЁLÇ0Fþ™ŽNÿÿÿ€}ñt(ƒì ¡Ü#@‰ÂÁâ)¿ÕÈÜ#P萃Äëvû¸eô[^_]ÉöU‰åWVSƒì ¾¿ÀÜ#v‰ÐÁà)ÐÁàfƒ|(tL÷D0
-uB»ë‰öC;¸W#}ƒìÝÿ°d‹#Vÿ`‹#ƒÄ…Àtٍv‰ÐÁà)ЁLÇ0Fþ™~–eô[^_]ÉöU‰åSƒì¡ìÛ#@‰ÂÁâ)»ÀÜ#‹DÓ0©t7©u0©t)ƒì jè"úÿÿ¡ìÛ#@‰ÂÁâ)¿DÓ‰$è"ƒÄ‹]üÉÉöU‰åS‹M‹] ¡¸W#ʼnŠ`‹#‰šd‹#@£¸W#‹$ÉÍvU‰åƒìúÿuè½ùÿÿ¡ìÛ#@‰ÂÁâ)¿ÕÈÜ#‰$躎ƒÄÉÐU‰åVS¶uœúX‰Ãƒ=”Ž#ÿuèH¹Ç‚‰ØP¸ÿÿÿÿéۋ -”Ž#‰ÊÁâ‹‚ Œ#£”Ž#‹E‰‚Œ#‹E ‰‚Œ#‰ðƒà‰‚Œ#‰ðƒàƒøtOƒø
-ƒøt -ësvƒøtSëi‰ÈÁàǀ Œ#ÿÿÿÿƒ=€Ž#ÿu‰ -€Ž#ë¡„Ž#Áà‰ˆ Œ#‰ -„Ž#ëH‰ö‰ÊÁ⡈Ž#‰‚ Œ#‰ -ˆŽ#ë.‰ÊÁâ¡ŒŽ#‰‚ Œ#‰ -ŒŽ#ë‰ÊÁ⡐Ž#‰‚ Œ#‰ -Ž#‰ØP¸[^]ÐU‰åƒìƒ=ðÛ#uƒì hÀ-#èŒÇ$謃ġðÛ#P‰ðÛ#ÉÐU‰åƒìƒ=äÛ#uƒì hß-#èPÇ$èÌ«ƒÄ¡äÛ#P‰äÛ#ÉÐU‰åWVS‹E‹u ‹}»‹HÇöt<€9t5‹ ‰‡€: t€:t‰öC€< t€< uó€< uÆ Cÿ€< uÌÿ[^_]ÐU‰åWVSì¬‹EµTþÿÿ½Xþÿÿ»‹HDžTþÿÿöt<€9t5‹ ‰‡€: t€:t‰öC€< t€< uó€< uÆ Cÿ€< uÌÿƒì…XþÿÿPÿµTþÿÿèU¸ÿÿƒÄeô[^_]ÉöU‰å¸¹ Œ#v‰ÂÁâ@‰
-ƒø&~òÇ|Ž#ÿÿÿÿÇ€Ž#ÿÿÿÿÇ„Ž#ÿÿÿÿLjŽ#ÿÿÿÿÇŒŽ#ÿÿÿÿǐŽ#ÿÿÿÿÇ”Ž#]ÉöU‰åWVSƒì ‹E‹} ƒøt4ƒø ƒøtéЃøt3ƒøtB鳐‹€Ž#Ç€Ž#ÿÿÿÿë:‰ö‹ˆŽ#LjŽ#ÿÿÿÿë&‰ö‹ŒŽ#ÇŒŽ#ÿÿÿÿë‰ö‹Ž#ǐŽ#ÿÿÿÿÇÀÛ#ƒûÿtM¾ Œ#…ÿt‰ØÁàƒ¸Œ#uƒì ‰ØÁàÿ°Œ#ÿŒ#ƒÄ‰Ù‰ØÁà‹0‰Â¡”Ž#‰2‰ -”Ž#ƒûÿu¸ÇÀÛ#eô[^_]ÉöU‰åƒìEüPEøPEôPEðPèI‡Ç$ Ž#èÅӃÄjjhÿÿjh¤Ž#h Ž#èðɃÄjjhÿÿÿhhÀŽ#h Ž#èÐɃÄjjhÿÿÿþhh܎#h Ž#è°ÉƒÄ ƒ}ütƒì‹EüHPÿuøh Ž#èzȃă}ôtƒìÿuôÿuðh Ž#è^ȃÄÉÐU‰åƒì‹E…Àu¸ëƒìjPh Ž#èʃÄÉÍvU‰åƒìÿuÿuÿu ÿuh Ž#è¸ËƒÄ ÉÍvU‰åƒì ÿuÿuÿuÿuÿu ÿuh Ž#è²ËƒÄ ÉÐU‰åƒì ÿu ÿuh Ž#èfЃÄÉÐU‰åƒìÿuh Ž#èM΃ÄÉÃU‰åƒìÿuh Ž#èM҃ÄÉÃU‰åƒì jÿuh Ž#èSɃÄÉÉöU‰åƒì ÿu ÿuh Ž#èþσÄÉÐU‰åƒìh Ž#è ÎÇ$ Ž#è ҃ÄÉÍvU‰åWVSƒì} ‹uEðPh4.#VèÖ¥‰ÃƒÄƒûuƒ}ðvÇEðƒÆë ‰öÇEð‹Eðº;¼W#~hƒìWVh#蜃Äj
-VèK›ƒÄ»…À•ÃœúX‰Æƒìh#‹Eðÿ4…ÀW#h9.#è]™ƒÄ…Ûuƒì hÜ.#èI™ƒÄ‰ðPº‰Ðeô[^_]ÍvU‰åVSƒìu ‹]EôPh4.#S襃ăøuƒ}ôvÇEôƒÃëÇEô‹Eôº;¼W#~JƒìVSh#èB›ƒÄj
-S臚ƒÄœúX‰Ãƒìh#‹Eôÿ4…ÀW#h9.#裘ƒÄ‰ØPº‰Ðeø[^]ÉöU‰åVSƒì@‹u‹] ‹EfÇEÈÇEÌÇEÐfÇEÔÇEàÇEäÇEìÇEð‰EØÇEÜÇEè…ÛtT‹C‰E̋C‰EЃ{u
-ÇEÜ1됃eÜߋC ‰EàÇEÀƒì ÿ5“#è)7ƒÄ+C ‰EċC‰Eì‹C‰EðëD‰öÇEÌÇEЃMÜ ÇEàÇEÀƒì ÿ5“#èâ6ƒÄ‰EÄÇEìÇEðèI±‹ƒì jEÀPEÈPÿuhA.#èAÞÿÿ‰ƒÄ ƒøÿt ƒì PèòÒÿÿƒÄ豉¸ƒ>ÿ”ÀHƒàêƒÀeø[^]ÍvU‰åƒìÿ5“#èc6ƒÄÉÉöU‰åƒìÿ5“#èc6ƒÄÉÉöU‰åƒìÿ5“#è{5ƒÄÉÉöU‰å‹E‹U ‹M£“#‰“#‰ -“#]ÐU‰åVS‹]è°‹0ƒì Sètóÿÿ‰Ãèm°‰0ƒÄ¸…Û•À@eø[^]ÃU‰åƒìúÿuÿu ÿuÿ5“#èé5ƒÄûÉÍvU‰åWVSƒì ‹}‹uúÿ6ÿu Wÿ5“#è3‰ÃƒÄ…Ûu#ƒìÿ5“#èx5ƒÄ+PWÿ5“#èffƒÄû‰Øeô[^_]ÃU‰åSƒì ‹] Sÿuè¡eƒÄÿ5“#è75ƒÄ+‰¸‹]üÉÉöU‰åVSƒì‹u‹] …Ûtƒ;uÇEôƒìEôPë7ƒ;uÇEðƒìEðPë!vÇEèƒì jè_þÿÿ+CUè‰BƒÄRVèT*ƒÄeø[^]ÉöU‰åWVSƒì‹u ‹}ÇEðÿ5“#è“4‰ÃƒÄ9Þƒþ} ¸ëG‰öƒì ÿuèµ*ƒÄ W‰Ø)ðPÿuè eƒÄ…ÀtÇEð…ÿt‰Ø+‰ƒì ÿuèÙ*‹EðƒÄeô[^_]ÍvU‰åƒì‹Eúƒ8u -ÇûÿU ëû¸ÉÃU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)ÐÁà‹˜ß#‰U苀œß#‰Eìƒùÿtw ‰ÆȉÂÁâ)‹Eè‰Ã;՘ß#|[‰Eäv1‰ÐÁà)ЍÅ;š˜ß#u ‹Eì;‚œß#|1‰Ï‰ÐÁà)Ћ ÅÝ#ƒùÿt4 1‰ÐÁà)Ћ]ä;Řß#}«ƒÿÿt‰ÐÁà)ЋU‰ÅÝ#ë‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰ÅÝ#‹E@‰ÐÁà)ЍÅP‰ˆÈÜ#‰¸ÌÜ#ƒÄ[^_]ÍvU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)лÄÜ#‰]ð‹´ÃЃùÿtCI‰ÐÁà)Ð;´ÃÐr0»ÈÜ#‰Ï‰ÐÁà)ЋLÃPƒùÿtI‰ÐÁà)ЋUð;´ÂÐsՃÿÿt‰ÐÁà)ЋU‰ÅÝ#ë
-‰ö‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰ÅÝ#‹E@‰ÐÁà)ЍÅP‰ˆÈÜ#‰¸ÌÜ#ƒÄ[^_]ÍvU‰åWVS‹}‰ÐÁà)ЍÅP‹ÌÜ#‹°ÈÜ#ƒúÿu ‹E ‰0ë#‰öR‰ÁÁá)Á»ÈÜ#‰ÐÁà)ЋDÃP‰DËPƒþÿt!v‰ÁÁá)Á»ÌÜ#‰ÐÁà)ЋDÃP‰DËP[^_]ÃU‰åS‹]‹ ‰Èƒùÿt/I‰ÐÁà)ЋÅÝ#‰ƒøÿt@‰ÐÁà)ÐÇÅÝ#ÿÿÿÿ‰È‹$ÉÃU‰åS‹]‹M ƒ9ÿt‹@‰ÂÁâ)‰ÕÝ#[‰ÂÁâ)ÕP‹‰‚ÈÜ#ǂÌÜ#ÿÿÿÿ‰‹$ÉÃU‰åWVSƒì ‹M‹] ‹}ÇEðú¡ìÛ#@‰ÂÁâ)4ÕÀÜ#…ÿt‹F8‰…ÛtBƒùt"ƒù ƒùt ë*‰öƒùtë!‹F8 ‰F8ë‰ö‹÷Ð!F8ëv‹‰F8ëÇEð‹F8‰Ã÷Ћ •#‰Ñ…ÂtB‰ö‰Ø÷л!Ètv‰Ú©u
-CÑøuòºƒì R范ċ^8‰Ø÷Ћ - •#…ÁuÀ‹F8‰Ã÷ЋV<‰Ñ…Ât=‰Ø÷л!Ètv‰Ú©u
-CÑøuòºƒì Rè|ƒÄ‹^8‰Ø÷ЋN<…ÁuÃû‹Eðeô[^_]ÍvU‰åVS‹u‹M ¸…É„¸ƒù‡òv‰ÐÁà)Ðfƒ<ÅèÜ#u -¸éӍvú‰ÈÁàö€(“#uƒ¸ “#uû魉öv‰ÐÁà)ЍÅüÜ#ƒùvèÍ©Çë
-¸Óà »ëC;äW#}ƒìÝÿ°ä•#Vÿà•#ƒÄ…Àtٍv‰ÐÁà)ЍÅfƒ»èÜ#u&ƒìh$•#VèÔüÿÿ‹ƒÄÜ#ƒÄ‹… Ü#VPÿRDƒÄèSm…Àuèû¸eø[^]ÐU‰åWVSƒì‹]‹U ƒûvè©Ç¸ÿÿÿÿévœúX‰Á‰Mðƒ}t‰ÞÁæÆ “#ü¹‹}ó¥…Òt‰ßÁçÇ “#ü¹‰Öó¥…Ò„ºöB…°ƒ:‡§ƒ<@•#ÿtq4‰uìº@•#‹@Áà‰Eè‰ÇƒÇ‹ -`¢%¸`œ%‹U苉E䋇dœ%©t -ƒàý‰‡dœ%ë‰ö¾@•#‹Uì‹2@‰ Õ`œ%‰Áƒ}äÿu»‰ -`¢%ǝ@•#ÿÿÿÿƒûv -è¨Çë¸þÿÿÿˆÙÓÀ! •#‹uð‰ðP¸ƒÄ[^_]ÐU‰åWVSƒì,‹] ¸…Û„~¸ƒû‡pœúX‰Â‰UԉÞÁæ}ØÆ “#ü¹ó¥÷Eàuƒ}Øu ‰ÐPé5vƒûv膧Ǹÿÿÿÿ됸ˆÙÓà# •#…Àt -‹UԉÐPéûƒûvèN§Çë‰ö¸ˆÙÓà  •#‹5$•#ƒþÿ„ô¸‰ÇˆÙÓçvv‰ÐÁà)ЍÅÝ#ƒûvèý¦Ç¸ÿÿÿÿë‰ú#‰Ð…À„–v‰ÐÁà)ÐÁàfƒ¸èÜ#uüÜ#ƒûv -輦Çë 8ƒìh$•#Vèúÿÿv‰ÃÁã)ÃÁ㋃ÄÜ#ƒÄ‹… Ü#VPÿRDÃà¾ÀÜ#ƒÄƒ<3ÿtƒì ÿ43ÿÈÛ#Ç3ÿÿÿÿƒÄ‹MԉÈPéîv‰ÐÁà)Ћ4ÅÝ#ƒþÿ…ÿÿÿ¾¸‰ÇˆÙÓç‰öv‰ÐÁà)ÐÁàfƒ¸èÜ#„…øÜ#ƒûvèö¥Ç¸ÿÿÿÿ됉ú#‰Ð…Àu^v‰ÐÁà)ЍÅüÜ#ƒûvèÃ¥Çëv 8»ëvC;äW#}0ƒìÝÿ°ä•#Vÿà•#ƒÄ…ÀtÙëvFþ™ŽSÿÿÿèzi…Àuè9 -‹MԉÈP¸eô[^_]ÐU‰åWVSƒì,¸ƒ} „T¸ƒ} ‡EœúX‰Â‰Uԋu Áæ}ØÆ “#ü¹ó¥÷Eàuƒ}Øu ‰ÐPé ‰ö÷Eàu;ƒ} vèܤǸÿÿÿÿëv¸ŠM Óà# •#…Àt ‹UԉÐPéÃ=`¢%ÿu‹MԉÈP¸ 鮉ö‹5`¢%vÁà¹`œ%‹‰`¢%‹U ‰dœ%‹U‰hœ%‹U‰lœ%‹ìÛ#‰pœ%Çÿÿÿÿ‹E Áàº@•#ƒ<ÿu‰4ë>‰ö‹M ‹@•#‰ÁЃ<Å`œ%ÿt»`œ%
-‹Í 
-ƒ<ÃÿuîR‰4Å`œ%ƒ} vèé£Ç됸ŠM Óà  •#‹5$•#ƒþÿ„û¸‰ÃŠM Ó㐍v‰ÐÁà)ЍÅÝ#ƒ} v蘣Ǹÿÿÿÿë v‰Ú#‰Ð…À„šv‰ÐÁà)ÐÁàfƒ¸èÜ#uüÜ#ƒ} vèS£Çëv ƒìh$•#Vè¨öÿÿv‰ÃÁã)ÃÁ㋃ÄÜ#ƒÄ‹… Ü#VPÿRDÃà¾ÀÜ#ƒÄƒ<3ÿtƒì ÿ43ÿÈÛ#Ç3ÿÿÿÿƒÄ‹MԉÈPé÷v‰ÐÁà)Ћ4ÅÝ#ƒþÿ…ÿÿÿ¾¸‰ÃŠM Ó㐍v‰ÐÁà)ÐÁàfƒ¸èÜ#„…øÜ#ƒ} v艢Ǹÿÿÿÿë‰Ú#‰Ð…Àu^v‰ÐÁà)ЍÅüÜ#ƒ} vèV¢Çë‰ö »ëvC;äW#}0ƒìÝÿ°ä•#Vÿà•#ƒÄ…ÀtÙëvFþ™ŽSÿÿÿèf…Àuƒ=àW#uèÄ ‹MԉÈP¸eô[^_]ÃU‰åWVSƒì‹u‹]¡ìÛ#@‰ÂÁâ)<ÕÀÜ#èŠú¡ •##„Hºv©u=BÑøuô¾ƒ<µ@•#ÿue‹E ‰0Ç@Ç@W<ƒþvèa¡Ç됉Öëɸþÿÿÿ‰ñÓÀ!ƒþvè?¡Çëv¸þÿÿÿ‰ñÓÀ! •#ûév µº@•#‹[‹Å`œ%‰ƒøÿu"ƒþvèñ Ç됸þÿÿÿ‰ñÓÀ! •#W<ƒþv -èÌ Çë ¸þÿÿÿ‰ñÓÀ![Áâ¹dœ%‹
-‹u ‰‹‚hœ%‰F‹‚lœ%‰FƒÂ‹
-©t ƒàý‰
-ëv[¡`¢%‰Õ`œ%‰`¢%ûéI‰Öë‹G<#tUº©uéBÑøuô¾‹E ‰0Ç@Ç@W<ƒþvè Çëv¸þÿÿÿ‰ñÓÀ!ûéëv…Ûtƒ;uƒ{u -û¸ éÓ‰ö‹‰G@úèu‹ìÛ#R‰ÑÁá)Ñf‰ÍÈÜ#ƒìh¤Ü#jèN\ƒÄU表Ü#;øÛ#|¡¤Ü#+ôÛ#‰E表Ü#+øÛ#롤Ü#+ôÛ#H‰E表Ü#+øÛ#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰ÁáºÓMb‹Eì÷êÁú‹EìÁø)ÂыìÛ#R‰ÐÁà)Ð) Å Ý#ƒì QèÏÿÿƒÄƒ=üÛ#ÿtƒì ÿ5üÛ#ÿÈÛ#ÇüÛ#ÿÿÿÿƒÄ‹ -ìÛ#I‰ÐÁà)ЋÅÄÜ#ƒì‹… Ü#QPÿRHƒÄh$•#ÿ5ìÛ#èæòÿÿ¡ìÛ#@‰ÂÁâ)ÂfÇÕèÜ#ƒÄ…Û„’ƒìEàPjè[U؃Ä‹Eà‰E؋EäC‰B…Ày -ÿM؁Bʚ;됁zÿɚ;~ ÿjʚ;ÿ5ìÛ#hän"ÿuÜÿuØÿÄÛ#‰ÃƒÄƒûÿuƒìÿ5ìÛ#jèù ƒÄ¡ìÛ#@‰ÂÁâ)‰Õ ß#ÇìÛ#ÿÿÿÿÇÜ#ÿÿÿÿè‡Ðÿÿƒì ¡ìÛ#@‰ÂÁâ)»ÀÜ#¿DÓPèsè”ÇG@¡ìÛ#@‰ÂÁâ)ƒÄöDÓ2tû¸ é~‰Öë%¡ •##„ûº‰ö©uáBÑøuô¾ƒ<µ@•#ÿu=‹M ‰1ÇAÇAƒþv -è@Çë¸þÿÿÿ‰ñÓÀ! •#ûé vƒì µƒ@•#Pèúðÿÿ‰ÇƒÄƒ»@•#ÿu#ƒþvèòœÇë‰ö¸þÿÿÿ‰ñÓÀ! •#Áâ¹dœ%‹
-‹] ‰‹‚hœ%‰C‹‚lœ%‰CƒÂ‹
-©t ƒàý‰
-ëv¡`¢%‰Õ`œ%‰=`¢%ûël‹G<#…Àuû¸ë`v‰Öë‹G<º#t ©uéBÑøuô¾‹E ‰0Ç@Ç@W<ƒþvè/œÇëv¸þÿÿÿ‰ñÓÀ!û¸eô[^_]ÍvU‰åWVSƒì ‹}¡ìÛ#@‰ÂÁâ)4ÕÀÜ#è¹ú‹F<#…Àt è¦û颋‰F@úèq‹ìÛ#R‰ÑÁá)Ñf‰ÍÈÜ#ƒìh¤Ü#jè6XƒÄU表Ü#;øÛ#|¡¤Ü#+ôÛ#‰E表Ü#+øÛ#롤Ü#+ôÛ#H‰E表Ü#+øÛ#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыìÛ#R‰ÐÁà)Ð) Å Ý#ƒì QèúÊÿÿƒÄƒ=üÛ#ÿtƒì ÿ5üÛ#ÿÈÛ#ÇüÛ#ÿÿÿÿƒÄ‹ -ìÛ#I‰ÐÁà)ЋÅÄÜ#ƒì‹… Ü#QPÿRHƒÄh$•#ÿ5ìÛ#èÍîÿÿ¡ìÛ#@‰ÂÁâ)»ÀÜ#fÇDÓ(ÇìÛ#ÿÿÿÿÇÜ#ÿÿÿÿè Íÿÿ¡ìÛ#@‰ÂÁâ)¿DÓ‰$è™oè‹F<#ƒÄ…Àuû¸ë èÿû¸eô[^_]ÐU‰åSƒì‹]úEðPjè¢VƒÄƒ=ȕ#ÿu
-ÇEèëWMèUð¡Ä•#;B|¡À•#+Eð‰Eè¡Ä•#+Bëv¡À•#+EðH‰Eè¡Ä•#+Eôʚ;‰Aƒì ÿ5ȕ#ÿÈÛ#ƒÄ…ÛtN]ð‹Eð£À•#‹Eô£Ä•#jhDo"ÿuôÿuðÿÄÛ#‰ÃƒÄƒûÿuƒìÿ5ìÛ#jè:ƒÄ‰ȕ#ë -vÇȕ#ÿÿÿÿû‹Eè‹]üÉÐU‰åVSƒì‹uƒ<µ@•#ÿuC‰uèÇEìÇEð¡ìÛ#‰Eôƒþvèü˜Ç鮐¸þÿÿÿ‰ñÓÀ! •#降 µº@•#‹[‹Å`œ%‰ƒøÿu"ƒþv豘Ç됸þÿÿÿ‰ñÓÀ! •#[Áà¹dœ%‹‰U苐hœ%‰U싐lœ%‰Uð‹pœ%‰UôP‹
-©tƒàý‰
-ë[¡`¢%‰Õ`œ%‰`¢%ƒìEèPVè
-ƒÄeø[^]ÃU‰åVSƒì¡ìÛ#@‰ÂÁâ)4ÕÀÜ#‹F0©…Í -‰F0‹F8‰Ã÷Ћ •#‰Ñ…ÂtA‰Ø÷л!Ètv‰Ú©u
-CÑøuòºƒì Rè„þÿÿƒÄ‹^8‰Ø÷Ћ - •#…ÁuÀ‹F8‰Ã÷ЋV<‰Ñ…ÂtZ‰Ø÷л!Ètv‰Ú©u
-CÑøuòº‰UèÇEìÇEð¡ìÛ#‰EôƒìEèPRèƒÄ‹^8‰Ø÷ЋN<…Áu¦f0ÿïÿÿeø[^]ÃU‰åWVSƒì,‹]œúX‰Â‰UÌ¡ìÛ#@‰ÂÁâ)ÕÀÜ#‰UЉÞÁæ}ØÆ “#ü¹ó¥÷Eàuƒ}Ø„îƒ}Øÿ„ä÷EàuCƒ}Øu=ƒìShL.#èw}ƒÄ÷Eàtƒì‹M ÿqhb.#èX}ƒÄƒì jè—ÓÿÿƒÄ‹UЋB8‰EԉƍUԃûv -èh–Çë ¸ˆÙÓà ‹EÔ E܉EԋUЃÂ<ƒûv -è<–Çë ¸þÿÿÿˆÙÓÀ!‹EԋUЉB8û÷Eàtƒìjÿu SÿUäëƒìj‹M ÿqSÿU؃Äú‹EЉp8‹ỦÐPeô[^_]ÃU‰åWVSƒì ‹}‰ÐÁà)ÐÁà¾ÀÜ#fƒ|(uF˜àƒ<3ÿtƒì ÿ43ÿÈÛ#Ç3ÿÿÿÿƒÄƒìh$•#Wèúèÿÿ‰ÂÁâ)‹ÕÄÜ#ƒÄë ‰ÐÁà)ÐÁàfƒ¸èÜ#u!‹ÄÜ#ƒì‹• Ü#WRÿPD¸ƒÄë‰ö¸eô[^_]ÍvU‰åWVSƒì º¿(“#¾$“#»,“#¹@•#‰ö‰ÐÁàǀ “#Ç8Ç0ÇÇ‘ÿÿÿÿBƒúvϺ»`œ%¹dœ%RÁàB‰ÇDƒú>~éÇH¢%ÿÿÿÿÇ\¢%Ç`¢%Ç •#Ç$•#ÿÿÿÿÇȕ#ÿÿÿÿº¹€–#»„–#‰öRÁàÇÇÿÿÿÿÆDBƒú~áƒìjhÄi"ènÚÿÿƒÄeô[^_]ÍvU‰å‹EǸ]ÐU‰å‹EÇÿÿÿÿ¸]ÐU‰åƒì‹U‹M ƒùvèê“Ǹÿÿÿÿ됸Óà ¸ÉÃU‰åƒì‹U‹M ƒùv趓Ǹÿÿÿÿ됸þÿÿÿÓÀ!¸ÉÃU‰åƒì‹M ƒùv腓Ǹÿÿÿÿë ¸Óà‹U#ÉÉöU‰åƒì ÿuÿu ÿuèÔçÿÿƒÄÉÍvU‰åWƒì$‹UEè‰E丹‹}äüó«ƒìjÿuäRèBñÿÿƒÄ…Àu -‹Uè‹E ‰¸‹}üÉÐU‰åƒì jÿu ÿuèñÿÿƒÄÉÃU‰åƒì‹E…Àu¸ëƒìPÿu ÿuèíðÿÿƒÄÉÃU‰åƒìÿuÿ5ìÛ#è`èÿÿƒÄÉÍvU‰åVSƒì ‹]‹E ‰EèÇEìÇEð脒‹0ƒìEØPEèPSèAéÿÿƒÄ»ÿÿÿÿ…Àu ÷Eàu‹]ØèT’‰0‰Øeø[^]ÐU‰å‹M¡ìÛ#@‰ÂÁâ)¡ •# ÕüÜ#‰¸]ÉöU‰åSƒì‹E‹U ú‹ìÛ#‰ìÛ#ÇàW#jPj jèœìÿÿƒÄÇàW#‰ìÛ#û‹]üÉÍvU‰åS‹M‹] ¡äW#ʼnŠà•#‰šä•#@£äW#‹$ÉÍvU‰åVS‹]Cÿƒøv苑Ç~¸ÿÿÿÿëp‰öœúX‰Æ[€<…ˆ–#u‰ðPèa‘ǸÿÿÿÿëF[Áâ¹€–#‹E ‰
-‹E‰‚„–#ÆD
-ƒìjh„o"Sè¹T·Ã‰$èÒeƒÄ‰ðP¸eø[^]ÍvU‰åƒì¸ÉÍvU‰åƒì ‹E‰EèÇEìÇEð‹ìÛ#‰UôUèRPè›ùÿÿƒÄÉÉöU‰åVS‹uv‰ÃÁã)ÃÁã¸ÀÜ#DŽàÿÿÿÿL0ƒìh$•#Vèõãÿÿ‹ƒÄÜ#ƒÄ‹… Ü#VPÿRDèç·ÿÿƒÄeø[^]ÐU‰åƒìÇȕ#ÿÿÿÿjjèWèÿÿè¾·ÿÿƒÄÉÐU‰åƒìEüÇEüÿÿÿÿPèôÿÿƒÄÉÐU‰åƒì‹E‹‰EüEüPjÿèW#‹UüRÁเ–#ƒÄƒ<t ûƒì RÿƒÄú‹Eü@ƒì ÿ4…„–#覱ÿÿƒÄÉÐU‰åWVSƒì ‹u ‹]ƒ}t讏Ǹÿÿÿÿén‰öúƒ=@ž#ÿt ƒ=`¢%ÿuûèƒÇ ¸ÿÿÿÿéCv¡@ž#‰‹@ž#Õ)пD—#‹DÇ0£@ž#‹Õ)й@—#ÇDÁ0…öu8‹Õ)ÐÇÁ‹Õ)ÐÇÇ‹Õ)ЉÅH—#닍<Å)Ǎ<ý@—#ü¹ó¥‹Õ)ЍŃº@—#u#¡`¢%‰‚h—#@Áàƒˆtœ%‹€`œ%£`¢%‹Õ)ÐÇÅT—#ÿÿÿÿ‹Õ)ЍÅX—#Ç@NjÕ)ЍÅ`—#Ç@NjÕ)ÐÇÅl—#û¸ƒÄ [^_]ÃU‰åSƒì‹]ƒûwúÝ)؃<Åp—#uûèÿÇ¸ÿÿÿÿ閍vÝ)ØÁàǀp—#ƒÀºD—#ƒ<ÿtƒì ÿ4ÿÈÛ#ƒÄÝ)ØÁàƒ¸@—#uE‹h—#R Åötœ%u¡`¢%‰`œ%‰`¢%Ý)؋Åh—#@ƒ$Åtœ%üû¸‹]üÉÃU‰åWVSƒìL‹E‰E´Áà+E´Áàƒ¸@—#…‹P ‹‚H—#@öÅtœ%t¸L—#ƒ< „ôÿéì‰ö‹M´Áá+M´Ááy LJL—#¾H—#‹7@‹`¢%‰Ý`œ%£`¢%jÿ41ÿ±D—#jèhçÿÿ‹7@ƒ Åtœ%錐‹E´Áà+E´Áà¹@—#ƒ<uwPƒ<
-tÿ°H—#ÿ°L—#ÿ4
-ëQvÇEÈÇEÌÇEÐÇEÔÇEØÇEÜÇEà‹E´Áà+E´ÁàH—#Rÿ°L—#EÈPEÄPèÙÙÿÿƒÄ‹E´Áà+E´Åƒ¸H—#u -ƒ¸L—#„Àº`—#‹E´Áà+E´ŋ‰E¸M¸‹D‰A‹E¸ƒX—#‰ƒ`—#‹Aƒ\—#‰B…Àyÿ‹`—#Bʚ;ë‰özÿɚ;~ ÿjʚ;‹E´Áà+E´ÿu´hPr"ÿ4Åd—#ÿ4Å`—#ÿÄÛ#‰ÃƒÄƒûÿuƒìÿ5ìÛ#jè+ùÿÿƒÄ‹E´Áà+E´‰ÅT—#ë‰ö‹E´Áà+E´ÇÅT—#ÿÿÿÿeô[^_]ÃU‰åWVSƒì‹u‹}ÇEäƒþw3ƒ}t-‹Exÿɚ;w!‹]{ ÿɚ;wúõ)ðƒ<Åp—#uûèÁŠÇ¸ÿÿÿÿ鐅ÿ„·õ)ðƒ<ÅT—#ÿuÇG ÇGëwƒìEèPjèGÇEäƒÄ¹`—#õ)ðō]è‹D;C|‹+Eè‰G‹D+Cë(¹`—#õ)òÁâ‹+EèH‰G‹D+Eìʚ;‰G ¹X—#õ)ðÁà‹‰‹D‰Gõ)ðÅºD—#ƒ<ÿtƒì ÿ4ÿÈÛ#ƒÄ‹Eƒxu
-ƒx „þºX—#õ)ð ŋ]‹‰
-‹C‰D
-÷E t¸`—#‹S‰‹S ‰Tëmvƒ}äuƒìEèPjèøEƒÄõ)ð ō‘`—#‹Eè‹]C‰`—#‹EìC ‰B…Àyÿ‰`—#Bʚ;ëzÿɚ;~ ÿjʚ;õ)ðVhPr"ÿ4Åd—#ÿ4Å`—#ÿÄÛ#‰ÃƒÄƒûÿuƒìÿ5ìÛ#jè­öÿÿƒÄõ)ð‰ÅT—#û¸eô[^_]ÃU‰åWVSƒì ‹]‹} ƒûwúÝ)؃<Åp—#uûèzˆÇ¸ÿÿÿÿ鷉öÝ)؃<ÅT—#ÿuÇG ÇGëoƒìEèPjèÒDƒÄ¹`—#Ý)؍ōuè‹D;F|‹+Eè‰G‹D+Fë'¹`—#Ý)ÚÁâ‹+EèH‰G‹D+Eìʚ;‰G ¹X—#Ý)ØÁà‹‰‹D‰Gû¸eô[^_]ÍvU‰åƒìƒ}t藇Çëv臇ǸÿÿÿÿÉÉöU‰åƒìƒ}tèg‡Ç¸ÿÿÿÿë‰öƒì ÿu èuÄÿÿ¸ƒÄÉÍvU‰åƒì‹E ƒ}tè,‡Ç¸ÿÿÿÿëv…Àt -ÇÇ@è¸ÉÃU‰åƒì‹UƒúwúÕ)Ѓ<Åp—#uûè܆ǸÿÿÿÿëvÕ)ЋÅl—#ûÉÐU‰åWVS¹»D—#¿@—#¾L—#‰öÍ)ÈÁàÇDÿÿÿÿX—#ÇBǍP0Ç:ÇD A‰‰Áƒù~ºÇ<ž#ÿÿÿÿÇ@ž#[^_]ÐU‰å]ÍvU‰å¸]ÉöU‰åVSœúX‰Ã¡ìÛ#@‰ÂÁâ)¾ÀÜ#‹DÖ0©t0©t)ƒì jè"Æÿÿ¡ìÛ#@‰ÂÁâ)¿DÖ‰$è"[ƒÄ‰ØPeø[^]ÃU‰åS‹]úût ¸ÿÿÿÿ…ÛuL¡ìÛ#@‰ÂÁâ)¹ÀÜ#‹DÑ0Áèƒà‹U ‰¡ìÛ#@‰ÂÁâ)Õ0‹
-%ÿþÿÿ ؉
-û¸‹$ÉÉöU‰åS‹]úût ¸ÿÿÿÿ…ÛuL¡ìÛ#@‰ÂÁâ)¹ÀÜ#‹DÑ0Áè ƒà‹U ‰¡ìÛ#@‰ÂÁâ)Õ0‹
-%ÿýÿÿ ؉
-û¸‹$ÉÉöU‰åWVSƒì ‹} ÇEðú‹EÇÿÿÿÿÇ@¾;5äÛ#s9v‹µ€Ü#ƒ{u ƒìWVÿS,ƒÄ…ÀxƒìWÿuVÿS0‰EðƒÄF;5äÛ#rÊû‹Eðeô[^_]ÉöU‰åƒì‹U¸ƒ:ÿt ¸ƒzu‹‹…€Ü#ƒìRÿ2ÿP4ƒÄÉÍvU‰åƒì‹U¸ƒ:ÿt‹‹…€Ü#ƒìRÿ2ÿP8ƒÄÉÉöU‰åƒì‹U¸ƒ:ÿt‹‹…€Ü#ƒìRÿ2ÿP<ƒÄÉÉöU‰åƒì‹U¸ƒ:ÿt‹‹…€Ü#ƒìRÿ2ÿP@ƒÄÉÉöU‰åVS‹u‹µ Ü#ƒìÿ°ôh™.#è^j»ƒÄ‰ö[‰ÐÁà)ÐÁà9°ÄÜ#……ƒÀ ºÀÜ#f|€ttfƒ|tlƒì f‹Dfƒøwƒì ·ÀP訃Äë%v·Ð¸s.#ú€t¸.#út¸‹.#P[‰ÐÁà)ÐÁàÿ°”ß#ÔÜ#PSh/#è¹iƒÄ Cû™ŽUÿÿÿeø[^]ÉöU‰åWVSƒì ‹E‹… Ü#‰Eð‹¸üƒì ‹Uð‹‚ðøPèk§‰ÆƒÄƒþÿu -¸ÿÿÿÿ…ÿtrOëՐv‰ÐÁà)Ѝ ÅöñÜ#tRQ@»ÌÜ#ƒ<D‹¤ß#‰ƒìý‰Ø‹Uð‚ðPVèX¥ƒÄ‹Eð˜ðSV聦ƒÄéiÿÿÿ‰ðeô[^_]ÉöU‰åWVSƒì‹E‹… Ü#‰Eð‹Mƒy(…©‹=ìÛ#‰ÐÁà)ЍžÄÜ#‹U93…‹M I‰ÂÁâ)ÂÁ⋄Љ„йÌÜ#‹D@‰D@‹„à‰„àƒÂ0¹ÀÜ#‹
-%ÿ÷ÿÿ‹\0ã ؉
-‹UðƒÂ¸ƒ¼º€ÿ•ÀH‹] ‰„š€é¢v‹U R‰ÂÁâ)ÂÁâ»ÄÜ#‹A‰„Ѓyt‹A‰‚ Ý#‹A‰„àë-‰ö‹] [‰ÐÁà)ÐÁà‹]ð‹“ô‰ Ý#‹“ô‰¤ß#ƒy$u‹E @‰ÐÁà)Ё ÅðÜ#¸ƒy ”ÀH‹U ‹Mð‰„‘ˆ¸ƒÄ[^_]ÃU‰åWVSƒì ‹U‹<• Ü#ƒ¿t8LJƒì‹E @‰ÐÁà)ЋŔß#‹—ðÂPÿu 襤酋E @‰ÐÁà)ЍÅöƒñÜ#t?K@¾ÌÜ#ƒ<11ºÄÜ#‹1„à‰1ƒì‹„Ћ—ðÂPÿu èG¤ë*ƒì‹E @‰ÐÁà)ЋŔß#‹—ðÂPÿu 诣ƒÄ‹E @‰ÐÁà)ÐfÇÅèÜ#€eô[^_]ÐU‰åWVSƒìH‹]ÇE¼ÇEÀfÇEÄÇEÈÇEÌÇEÐÇEÔÇEØÇEÜÇEà¶Ã -f‰E¸‹ Ü#‹€ø‰EÈÇE̍E¸jjPh"h¥.#è-¬ÿÿ‰ÆƒÄ ƒþÿuƒì h@/#èVËÿÿƒÄ‹< Ü#v‰ÐÁà)Ðfƒ<ÅèÜ#tµ€Gƒ<ÿtJÿëE‰öƒìv‰ÃÁã)ÃÁ㍃Ý#PjèJ;fǃèÜ#€ƒÄ‹ƒ”ß#‹—ðÂPVèࢃčeô[^_]ÐU‰åWVSƒì‹}hª.#è¾ÊÿÿèÆÿÿ‰EðƒÄ hPhÀ.#è£ÊÿÿÇ$èwÉÿÿ‰ÃƒÄShÞ.#è‡Êÿÿ‹Eð‰… Ü#ƒÄ jhê.#Sè=efÇCÆCÇCø…"ÇC$†"ÇC ì{"ÇC$Ì|"ÇC(0†"ÇC,Œ}"ÇC0<†"ÇC4D†"ÇC8P†"ÇC<"ÇC@†"ÇCD‡"ÇCHd‡"ÇCLl‡"ÇCPˆ"ÇCTLˆ"ÇCX€ˆ"ÇC\d‰"ÇC`„‰"ÇCdœ‰"ÇCh´‰"ÇCl̉"ÇCpä‰"ÇCtü‰"ÇCxŠ"ÇC|,Š"ǃ€DŠ"ǃ„\Š"¸ƒÄS‰öDŽ‚€ÿÿÿÿ@=™~í‹EH‰ƒüƒì ‹EÁàPè@Èÿÿ‰ƒð¾ƒÄ;u}ƒì ‹ƒððPè柃ÄF;u|åÿçw¿èÿ ¡v¿ ¡‰»ô‹E‰ƒøƒ} tƒìjÿuðh€"è8ÃÿÿƒÄeô[^_]ÐU‰åWVSƒì ‹M‹u ‹]‹ Ü#‰Eð…Éx[; -ðÛ#sS‹ Ü#‹@%ÿÿÿ=u=þ™wv‰ÐÁà)Ðfƒ<ÅèÜ#u -¸éèvv‰ÐÁà)Ð9 ÅÄÜ#t -¸&éȍv…Ûuv‰ÐÁà)Ё ÅðÜ#ë)ƒûuv‰ÐÁà)Ё$ÅðÜ#ÿ÷ÿÿë ¸郉öv‰ÐÁà)ÐÁà˜Ð¿ÄÜ#‹U9;t\f¸èÜ#€u=ƒì‹;‹Mð‹‘ðÂPV蘞‹E‰;ƒÄ‹Uð‹‚ð‹MÈPV赟ƒÄëv‰ÐÁà)ЋU‰Ŕß#¸eô[^_]ÍvU‰åVS‹M‹4 Ü#…Éx; -ðÛ#s‹ Ü#‹@%ÿÿÿ=t¸ÿÿÿÿëw¡ìÛ#@‰ÂÁâ)¸ÿÿÿÿ9 ÕÄÜ#uZúè!P‹ìÛ#R‰ÑÁá)Ñ»ÀÜ#f‰DËdžèX­ÿÿ¡ìÛ#@‰ÂÁâ)ƒì ¿DÓPèçOè>·ÿÿƒÄû¸eø[^]ÉöU‰å‹E‹… Ü#‹€ü]ÍvU‰å‹E‹… Ü#‹€ô]ÍvU‰åS‹]‹M …ÛxU;ðÛ#sM‹ Ü#‹@%ÿÿÿ=u7ù™wI‰ÐÁà)Ðfƒ<ÅèÜ#u¸ëMI‰ÐÁà)Ð9ÅÄÜ#t ¸&ë3‰öI‰ÁÁá)ÁÁá¸öñÜ#”À‹U‰‹‘”ß#‹E‰¸‹$ÉÉöU‰å‹E f8t·‹E -9Âu¸ë¸ÿÿÿÿ]ÐU‰å¸ÿÿÿÿ]ÉöU‰å¸]ÉöU‰å]ÍvU‰å¸]ÉöU‰åSƒì ‹E‹M ‹… Ü#I‰ÐÁà)ЋŔß#‹“ðÂPQè7œƒÄ‹]üÉÍvU‰åWVSƒì ‹E‹u ‹<… Ü#v‰ÐÁà)Ðfƒ<ÅèÜ#tµ€Gƒ<ÿtHÿëCƒìv‰ÃÁã)ÃÁ㍃Ý#PjèR5fǃèÜ#€ƒÄ‹ƒ”ß#‹—ðÂPVè蜃čeô[^_]ÐU‰åSƒì ‹E‹M ‹… Ü#I‰ÐÁà)ÐÁàfǀèÜ#€‹€”ß#‹“ðÂPQ蜜ƒÄ‹]üÉÃU‰å]ÍvU‰åWVSƒì ‹U‹• Ü#‰Eð‹U <•€‰ÆƒÆƒ<7~MƒìR‰ÃÁã)ÃÁ㍃Ý#Pjè‹4ÿ 7ƒÄ‹ƒ”ß#‹Mð‹‘ðÂPÿu 趛fǃèÜ#€ƒÄë‹E @‰ÐÁà)ÐfÇÅèÜ#eô[^_]ÐU‰åƒì‹E‹M ‹… Ü#ƒÀDŽˆ€ÿÿÿÿI‰ÐÁà)ÐfÇÅèÜ#hdÜ#QèðÉÿÿƒÄÉÍvU‰å‹E‹U ‹… Ü#ƒÀDŽ€R‰ÐÁà)ÐfÇÅèÜ#]ÃU‰åWVSƒì4‹u v‰EäÁà+EäfÇÅèÜ#EèPjè“3Mè»@B‹Eº÷ó‰Uà’€€‰E܋A‹U܍ЉE؉A»¡/¸D÷ë‰ÓÁû‹EØÁø)ÿƒÞC‹E÷ç‰×‰øÁèEè‹A»Êš;™÷û‰Ó‰YƒÄVhtŠ"ÿuìÿuèÿÄÛ#‰ÃƒÄƒûÿuƒìÿ5ìÛ#jèAäÿÿƒÄ v‰ÈÁà)ȉÅ ß#eô[^_]ÐU‰åƒìÿ5ìÛ#jèäÿÿ¸ƒÄÉÍvU‰åƒìÿ5ìÛ#jèñãÿÿƒÄÉÃU‰åƒìÿ5ìÛ#jèÙãÿÿƒÄÉÃU‰åƒìÿ5ìÛ#jèÁãÿÿƒÄÉÃU‰åƒìÿ5ìÛ#jè©ãÿÿƒÄÉÃU‰åƒìÿ5ìÛ#jè‘ãÿÿƒÄÉÃU‰åƒìÿ5ìÛ#jèyãÿÿƒÄÉÃU‰åƒìÿ5ìÛ#jèaãÿÿƒÄÉÃU‰åƒìÿ5ìÛ#jèIãÿÿƒÄÉÃU‰åƒìÿ5ìÛ#jè1ãÿÿƒÄÉÃU‰åƒìÿ5ìÛ#jèãÿÿƒÄÉÃU‰åWVSƒì‹MI‰ÃÁã)ÃÁãºÄÜ#‹‹4… Ü#¿ÀÜ#fÇD(€‹„Ћ–ðÂPQè9™Ç„àÿÿÿÿèQœÿÿƒÄeô[^_]ÉöU‰åVSƒì h`0#è
-Áÿÿè]¼ÿÿ‰ÆÇ$Œè׿ÿÿ‰Ã‰µ Ü#ƒÄ jhø/#Sè®[fÇCÆCÇC Œ"ÇCTŒ"ÇC `Œ"ÇC$ˆŒ"ÇC(ÇC, Œ"ÇC0¬Œ"ÇC4´Œ"ÇC8ÀŒ"ÇC<Ȍ"ÇC@äŒ"ÇCD "ÇCH4"ÇCL\"ÇCP„"ÇCT¬"ÇCXԍ"ÇC\ü"ÇC`(Ž"ÇCdPŽ"ÇChxŽ"ÇCl Ž"ÇCpȎ"ÇCtðŽ"ÇCx"ÇC|@"ǃ€h"ǃ„"ǃˆÿÿÿÿÇ$0#èô¿ÿÿƒÄ jVh¸"è,ºÿÿƒÄeø[^]ÉöU‰å‹M‹E ‹ Ü#fƒ8t·9Èu¸ƒºˆÿt¸ÿÿÿÿ]ÉöU‰å¸ÿÿÿÿ]ÉöU‰åƒì‹E‹… Ü#ÿ°ˆhe/#èìYƒÄÉÍvU‰å‹E‹… Ü#‹€ˆ]ÍvU‰å¸]ÉöU‰å]ÍvU‰å¸]ÉöU‰å]ÍvU‰å‹E @‰ÂÁâ)ÂfÇÕèÜ#]ÃU‰åƒìht/#èxYƒÄÿ5ìÛ#j è„àÿÿƒÄÉÍvU‰åƒìh{/#èPYƒÄÿ5ìÛ#j è\àÿÿƒÄÉÍvU‰åƒìh‚/#è(YƒÄÿ5ìÛ#j è4àÿÿƒÄÉÍvU‰åƒìh‰/#èYƒÄÿ5ìÛ#j è àÿÿƒÄÉÍvU‰åƒìh/#èØXƒÄÿ5ìÛ#j èäßÿÿƒÄÉÍvU‰åƒìh—/#è°XƒÄÿ5ìÛ#j è¼ßÿÿƒÄÉÍvU‰åƒìhž/#èˆXƒÄÿ5ìÛ#j è”ßÿÿƒÄÉÍvU‰åƒìh¥/#è`XƒÄÿ5ìÛ#jèlßÿÿ¸ƒÄÉÉöU‰åƒìh¬/#è4XƒÄÿ5ìÛ#jè@ßÿÿƒÄÉÍvU‰åƒìh³/#è XƒÄÿ5ìÛ#jèßÿÿƒÄÉÍvU‰åƒìhº/#èäWƒÄÿ5ìÛ#jèðÞÿÿƒÄÉÍvU‰åƒìhÁ/#è¼WƒÄÿ5ìÛ#jèÈÞÿÿƒÄÉÍvU‰åƒìhÈ/#è”WƒÄÿ5ìÛ#jè ÞÿÿƒÄÉÍvU‰åƒìhÏ/#èlWƒÄÿ5ìÛ#jèxÞÿÿƒÄÉÍvU‰åƒìhÖ/#èDWƒÄÿ5ìÛ#jèPÞÿÿƒÄÉÍvU‰åƒìhÝ/#èWƒÄÿ5ìÛ#jè(ÞÿÿƒÄÉÍvU‰åƒìhä/#èôVƒÄÿ5ìÛ#jèÞÿÿƒÄÉÍvU‰åƒìhë/#èÌVƒÄÿ5ìÛ#jèØÝÿÿƒÄÉÍvU‰åSƒì0‹]ÇEÜÇEàfÇEäÇEè¶Ãf‰EØÇEìEØjjPhD"hò/#趜ÿÿƒÄ ‹ Ü#‰Ã‰šˆƒûÿuƒì h 0#èÒ»ÿÿƒÄ[‰ÐÁà)ÐÇÅøÜ#ÿÿÿÿ‹]üÉÐU‰åôëýU‰åWVSƒì ‹} ¾ú»ëvCûÿ2Ý)ØÁàº`ž#€|t߃ìÿ4ÿuèaVƒÄ…Àuʾ…öt1ÿÀuèðnÇûéÜûÝ)؍…dž#éˉö÷Ç@uè¿nÇû髍v‹E‰Eð=ÿ~èžnÇû銉ö‹0¿#ƒúÿtqÕ)Ѝ<…w‹†dž#£0¿#ƒì ÿuèV@‰$臹ÿÿ»`ž#‰ƒÄÿuPè7U‹Eð‰‡hž#‡lž#‰$è(‘ÆDƒÄû‡dž#ëvènÇû¸eô[^_]ÍvU‰åWVSƒì ¾ú¿»`ž#vý)øÁà€|tƒìÿ4ÿuèUƒÄ…Àu¾Gÿÿ~ʅötJƒì ÿuèOUƒÄ@Pý)ûÁã¾`ž#ÿ43è%¹ÿÿƒÃÆD3¡0¿#‰ƒdž#‰=0¿#ƒÄûë‰öèSmÇû¸eô[^_]ÍvU‰åWVSƒì ‹}?ÿw‹Õ)Ѐ<…xž#uèmǸÿÿÿÿé‰öèÏæÿÿúè5B‹ìÛ#R‰ÑÁá)Ñf‰ÍÈÜ#‹Õ)Ѝ4…`ž#ƒ~ ÿu
-ƒ~…“ƒìWjÿèW#ƒÄh¤Ü#jè8)ƒÄU表Ü#;øÛ#|¡¤Ü#+ôÛ#‰E表Ü#+øÛ#ë!‰ö¡¤Ü#+ôÛ#H‰E表Ü#+øÛ#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыìÛ#R‰ÐÁà)Ð) Å Ý#ƒì Qèú›ÿÿƒÄƒ=üÛ#ÿtƒì ÿ5üÛ#ÿÈÛ#ÇüÛ#ÿÿÿÿƒÄ‹ -ìÛ#I‰ÐÁà)ЋÅÄÜ#ƒì‹… Ü#QPÿRH‹ -ìÛ#I‰ÐÁà)лÀÜ#fÇDÃ(Íǂ`º#‹‰‚dº#ƒÄF PQ辏ÇìÛ#ÿÿÿÿÇÜ#ÿÿÿÿèõÿÿ¡ìÛ#@‰ÂÁâ)¿DÓ‰$è…@èܧÿÿƒÄûèÿäÿÿë8ÿNƒìWjÿèW#¡ìÛ#@‰ÂÁâ)¿ÕÈÜ#‰$èF@蝧ÿÿƒÄû¸eô[^_]ÃU‰åWVSƒì ‹}‹]?ÿw‹Õ)Ѐ<…xž#uè¯jǸÿÿÿÿéVv…ÛuúëúèÒ?‹ìÛ#R‰ÑÁá)Ñf‰ÍÈÜ#‹Õ)Ѝ4…`ž#…Ûu0ƒ~ ÿu‹E 9F}èMjÇ û¸ÿÿÿÿéó‹E )Fûéâèäÿÿƒ~ ÿu ‹E 9F‘ƒìWjÿèW#ƒÄh¤Ü#jèš&ƒÄU表Ü#;øÛ#|¡¤Ü#+ôÛ#‰E表Ü#+øÛ#롤Ü#+ôÛ#H‰E表Ü#+øÛ#ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыìÛ#R‰ÐÁà)Ð) Å Ý#ƒì Qè^™ÿÿƒÄƒ=üÛ#ÿtƒì ÿ5üÛ#ÿÈÛ#ÇüÛ#ÿÿÿÿƒÄ‹ -ìÛ#I‰ÐÁà)ЋÅÄÜ#ƒì‹… Ü#QPÿRH‹ -ìÛ#I‰ÐÁà)лÀÜ#fÇDÃ(͋E ‰‚`º#‹‰‚dº#ƒÄF PQè#ÇìÛ#ÿÿÿÿÇÜ#ÿÿÿÿèZ›ÿÿ¡ìÛ#@‰ÂÁâ)¿DÓ‰$èê=èA¥ÿÿƒÄûèdâÿÿë<‰ö‹E )FƒìWjÿèW#¡ìÛ#@‰ÂÁâ)¿ÕÈÜ#‰$è§=èþ¤ÿÿƒÄû¸eô[^_]ÐU‰åWVSƒì ‹}?ÿw‹Õ)Ѐ<…xž#uèhǸÿÿÿÿéU‰öè,…À„‡œúX‰Æ‹Õ)Ѝ…`ž#‹JA‰J‹Z ƒûÿtG‹Ý`º#9È<)Á‰È‰BƒìB PSèƊ[‰ÐÁà)ЋÅÄÜ#ƒÄ‹• Ü#SRÿPDèÿÿƒÄƒìWjÿèW#ƒÄ‰ðPé¼‰öúèª<‹Ü#R‰ÑÁá)Ñf‰ÍÈÜ#‹Õ)Ѝ…`ž#‹JA‰J‹Z ƒûÿtG‹Ý`º#9È<)Á‰È‰BƒìB PSè&Š[‰ÐÁà)ЋÅÄÜ#ƒÄ‹• Ü#SRÿPD荙ÿÿƒÄƒìWjÿèW#¡ìÛ#@‰ÂÁâ)¿ÕÈÜ#‰$è <èb£ÿÿƒÄû¸eô[^_]ÐU‰åWVSƒì ‹] ÇEð‹E8ÿw‹Õ)Ѐ<…xž#uèlfǸÿÿÿÿéÊèc*…À„ÃœúX‰Â‰Uì‹E‹Õ)Ѝ4…`ž#^‹^ ƒûÿts݉‹€`º#;F_¿`º#ÇEðv‹F+:‰FƒìF PS艍[‰ÐÁà)ЋÅÄÜ#ƒÄ‹• Ü#SRÿPD‹^ ƒÄƒûÿt݋:;F~°ƒìÿujÿèW#ƒÄƒ}ðtèÿÿ‹Uì‰ÐPéõúèÊ:‹Ü#R‰ÑÁá)Ñf‰ÍÈÜ#‹E‹Õ)Ѝ4…`ž#^‹^ ƒûÿtr݉‹€`º#;F^¿`º#ÇEð‰ö‹F+:‰FƒìF PSè.ˆ[‰ÐÁà)ЋÅÄÜ#ƒÄ‹• Ü#SRÿPD‹^ ƒÄƒûÿt݋:;F~°ƒìÿujÿèW#ƒÄƒ}ðtèd—ÿÿ¡ìÛ#@‰ÂÁâ)ƒì ¿ÕÈÜ#Pèð9èG¡ÿÿƒÄû¸eô[^_]ÉöU‰åWVSƒì ¾¿dž#õ)óÁãǃ`ž#‰4;ǃhž#ƒì ƒlž#PèB‡ƒÃF‰;ƃhž#ƒÄ‰Æþÿ~±ÇXº#ÿÿÿÿÇ0¿#ƒìjhøž"è:ªÿÿƒÄeô[^_]ÍvU‰åVS‹uú>ÿw‹Õ)Ѐ<…xž#uèÉcÇû¸ÿÿÿÿënvƒì ‹Õ)л`ž#ÿ4ƒèUKƒÄ@P‹Õ)Ðÿ4ƒè1¯ÿÿ‹Õ)ÐÆDƒ‹Õ)Ћ0¿#‰…tž#‹£0¿#ƒÄû¸eø[^]ÉöU‰åƒì‹Mú9ÿw‹Õ)Ѐ<…xž#uècÇû¸ÿÿÿÿëb‰ö‹Õ)Ѓ<…lž#ÿtèîbÇû¸ÿÿÿÿë8‹Õ)ÐÆ…xž#‹Õ)Ћ0¿#‰…tž#‹£0¿#û¸ÉÉöU‰åSƒì‹M‹] 9ÿw‹Õ)Ѐ<…xž#uèubǸÿÿÿÿë_ú‹Õ)ÐÁàƒ¸lž#ÿu ‹€hž#‰ë7‰öÇ‹Õ)Ћ…lž#¹ÈÜ#vÿ @‰ÐÁà)ЋDÁPƒøÿuëû¸‹]üÉÃU‰åVS‹u‹M¸ùÿ‡–ú‹0¿#‰ƒúÿtnÕ)Ћ…tž#£0¿#‹Õ)л`ž#ǃ‹Õ)Љ …hž#ƒì ‹Õ)Ѝ…lž#P聄‹Õ)ÐÆDƒƒÄëègaÇû¸ÿÿÿÿëû¸eø[^]ÍvU‰åƒì‹M9ÿw‹Õ)Ѐ<…xž#uèaǸÿÿÿÿë=ú‹Õ)Ѝ…`ž#ƒx ÿuƒxuèì`Ç û¸ÿÿÿÿë ‰öÿHû¸ÉÐU‰å‹E@‰ÂÁâ)¸fƒ<ÕèÜ#”À]ÐU‰åVS‹][‰ÐÁà)Ѝ4Åfƒ¾èÜ#uAƒì‹Ýdº#Õ)Ѝ…lž#PS考‹†ÄÜ#ƒÄ‹… Ü#SPÿRD¸ƒÄ됸eø[^]ÃU‰åVSƒ=ôW#…ÚÇôW#¹»€¢%¾„¢%‰ÁàP ÆÇ2ÿÿÿÿÆDAƒùváƒìjjh@¿#èÜýÿÿ¹ƒÄ¾ä¤%»à¤%‰ö‰ÁàQ‰0Ɖуù -véǧ%ÿÿÿÿƧ%Çؤ%¹¾D§%»@§%vÍ)ÈÁàQ‰0ƉуùvãÇpª%ÿÿÿÿÆlª%Ljª%eø[^]ÐU‰åWVSƒìŠEˆEóŠUˆUòfÇEæ¾<u€út €}óu€}òuè_Ǐ¸ÿÿÿÿé7‰öúƒ=ؤ%ÿuèí^ǍûÇEìÿÿÿÿ됡ؤ%€‹Õä¤%‰ؤ%û‰Eìƒ}ìÿu -¸ÿÿÿÿéìvƒì h@¿#ègñÿÿƒÄ‹]¾¹º÷ñ‰×ëf‰ö¿€<Å ¢%t0ƒìÿu¿ōƒ€¢%Pè³EƒÄ…Àu€»˜¢%„Ÿ¾ëG¹‰øº÷ñ‰×fÿEæfƒ}懜‰ó„Ût–¿Áãƃ ¢%ƒìÿuƒ€¢%Pè÷D‹E쉃”¢%ƒÄ€}óu‰Â’‹] f‰Åè¤%ëv‹E썀‹E ¯Ef‰Õè¤%úƒì ‹U썒Áã·ƒè¤%Pèݨÿÿºì¤%‰ƒÄû…Àu%è”]ǒƒì h@¿#èAõÿÿ¸ÿÿÿÿ魍v‹E썀ÁãS‰Uà¾à¤%‹ƒì¤%‰‚ä¤%‰2ƒìjjƒü¤%Pè:ûÿÿƒÄ ·D3Pjƒ¥%Pè#ûÿÿƒÄ jjÃ¥%SèûÿÿŠ]ó‹Eàˆ\0ƒÄúƒ=ˆª%ÿuèø\ǎûÇEèÿÿÿÿ롈ª%Å)‹•D§%‰ˆª%û‰Eèƒ}èÿu_ƒì h@¿#èvôÿÿ‹Eèéä‰öè§\ǐƒì h@¿#èTôÿÿ¸ÿÿÿÿéÀ‰öèƒ\Ǒƒì h@¿#è0ôÿÿ¸ÿÿÿÿ霉ö‹EèÁà+EèÁà¹@§%ŠUòˆT P‹]ì‰
-‹] f‰\
-ǀD§%ÿÿÿÿ‰ºH§%‹]썛ÆÕà¤%ƍ¿ōr¿€¢%€|>t%ƒì¶D>Pšœ¢%SèGõÿÿÆD>‰$èšøÿÿƒÄƒì h@¿#èŽóÿÿ¿EèƒÄeô[^_]ÍvU‰åWVSƒìŠEˆEóŠ]ÇEè¿ÆEç<u„Ût €}óu€ûuè‚[Ǐ¸ÿÿÿÿé0‰öúƒ=ˆª%ÿuèa[ǎûÇEìÿÿÿÿë ¡ˆª%Å)‹•D§%‰ˆª%û‰Eìƒ}ìÿu ¸ÿÿÿÿéߐ‹EìÁà+EìÁàº@§%ˆ\ ‹M f‰LǀD§%ÿÿÿÿƒì h@¿#è°íÿÿƒÄ‹U¾¹º÷ñ‰Öë]v¶€<Å ¢%u ¿ÆEçë8ƒìÿu¶ŀ¢%PèöAƒÄ…Àu¿ëF¹‰ðº÷ñ‰ÖÿEèƒ}è‡Ò‰ù„Ét €}çuR¶Á㸀¢%ÆD ÆDƒìÿuPè>AƒÄ jjÃœ¢%Sè/øÿÿÇ$@¿#èçñÿÿƒÄ jjSè:ïÿÿëM¶ōCº€¢%€|t'þDƒì h@¿#è®ñÿÿƒÄ jjƒœ¢%Pèûîÿÿ됃ì h@¿#è‹ñÿÿƒÄ¶‹<Ŕ¢%¿ŠUó:Åø¤%tèªYǓ¸ÿÿÿÿéX‰ö€}óu¿·Åè¤%9E u€}ót(¿·Åè¤%™÷} …ÒtèdYǔ¸ÿÿÿÿéƒì h@¿#è ìÿÿ¶‹Ť¢%ƒÄƒúÿ„­€}óu#è&YǕƒì h@¿#èÓðÿÿ¸ÿÿÿÿéЍÕ)з…T§%9E t"èíXǔƒì h@¿#èšðÿÿ¸ÿÿÿÿ鋋MìÁá+M썶Å »„¢%‹‰D§%‹Mì‰ ë/‰öèŸXǑƒì h@¿#èLðÿÿ¸ÿÿÿÿë@¶‹Uì‰Ť¢%ƒì h@¿#è*ðÿÿ‹EìÁà+EìÁàH‰±H§%º@§%‰<Æ¿EìƒÄeô[^_]ÉöU‰åWVSƒì¿E‰Eì‰ÇÁç)ÇÁ獗@§%‰Uðh@¿#èÏêÿÿ‹Mð‹Y›ÁãC‰E躄¢%‹€Áà°à¤%ƀà¤%F‰$èôÿÿF ‰$è„ôÿÿF$‰$èyôÿÿƒÄú·FPÿv èX£ÿÿû¹„¢%‹Eè‹ú ’¡Ø¤%‰Íä¤%‰ؤ%ûƇ@§%ƒÃ ‹Uð‹B‰ƒ„¢%ú¡ˆª%‰‡D§%‹Mì‰ -ˆª%ûƃ€¢%Ç$@¿#è
-ïÿÿƒÄeô[^_]ÍvU‰åWVSƒì ‹u ŠM¿UÕ)Ѝ…@§%‰Eð‹@€Åà¤%‹Eð€x uèûVǔ¸ÿÿév€;uèÞVǖ¸ÿÿéù‰ö€{tQ€{u,ƒì¶ÁP‹Uð·BPC PèÈëÿÿƒÄ…Àt;¸évƒì¶ÁP‹Uð·BPC PèœëÿÿƒÄ…ÀuÔƒì CPè-éÿÿƒÄ‹Uð·B‹{‰ÁÁéüó¥¨tf¥¨t¤·B‰ÁK‰K·S‰ÐC 9Ár‰È)ЉC€{u ƒì CPë8‰ö€{uƒì‹Uð·BPC$PèZïÿÿëƒì‹Uð·BPC$PèDïÿÿC‰$èíÿÿƒÄ¸eô[^_]ÐU‰åWVSƒì ‹} ŠM¿UÕ)Ѝ…@§%‰Eð‹@€Åà¤%‹Eð€x uè‹Uǔ¸ÿÿév€;uènUǖ¸ÿÿéù‰ö€{tQ€{u,ƒì¶ÁP‹Uð·BPC$PèXêÿÿƒÄ…Àt;¸évƒì¶ÁP‹Uð·BPC$Pè,êÿÿƒÄ…ÀuÔƒì CPè½çÿÿƒÄ‹Uð·B‹s‰ÁÁéüó¥¨tf¥¨t¤·B‰ÁK‰K·S‰ÐC 9Ár‰È)ЉC€{u ƒì CPë8‰ö€{uƒì‹Uð·BPC Pèêíÿÿëƒì‹Uð·BPC PèÔíÿÿC‰$è-ìÿÿƒÄ¸eô[^_]ÐU‰åSƒìh0#è;ƒÄÿ5ؤ%h‹0#è;»ƒÄÝ)ØÁà€¸@§%t8@§%‹B€Åà¤%ƒì ÿp ÿp$‹B€ŀ¢%PShŸ0#è®:ƒÄ Cƒûv­‹]üÉÃU‰åƒì`¿MÍ)ȋ…P§%’Åà¤%ÿp ÿp$RQhÀ0#E¨Pèf:ƒÄ ÉÐU‰åSƒì‹]h@¿#èHæÿÿ¿ÓÕ)Ѝ …‹X§%€Å ƒÄ€º€¢%u ‹D§%‰‚„¢%¿ÃÅ)ÂÁâƂ@§%ú‹ -ˆª%‰ŠD§%£ˆª%ûƒì h@¿#èÓêÿÿƒÄ‹]üÉÍvU‰åWVSƒì ‹u ‹E‹<…€Ü#ú‹^…Ûu-ƒì j èžÿÿƒÄ…ÀtÇÿÿÿÿÇ@Ç@ÿÿÿÿ‹U‰‰F‹;ìÛ#u û¸#é~ƒ;ÿtc¾ÀÜ#‰ö‹ -ìÛ#I‰ÐÁà)Ћ‰TÆP‹C‰„¬¡ìÛ#‰CÿCè…ÿÿ¡ìÛ#@‰ÂÁâ)ƒì ¿DÖPèŸ'èöŽÿÿƒÄûúƒ;ÿu¤¡ìÛ#ÿD‡D¡ìÛ#‰û¸eô[^_]ÉöU‰åWVSƒì ‹E ‹x¸…ÿ„À‹;ìÛ#tû¸髍vúè*'‹ìÛ# [‰ÊÁâ)Êf‰ÕÈÜ#‹E‹…€Ü#ÿL˜DÇÿÿÿÿ‹_ÇGÿÿÿÿƒûÿt-p ‰Ù[‰ÐÁà)ЉÅÝ#‹œž DŽŽ ÿÿÿÿƒûÿuÖÇGè„ÿÿ¡ìÛ#@‰ÂÁâ)ƒì ¿ÕÈÜ#Pè¢&èùÿÿƒÄû¸eô[^_]ÃU‰åVSƒì h$1#è~ÿÿè -™ÿÿ‰ÆÇ$èKœÿÿ‰Ã‰µ€Ü#ƒÄ jh81#Sè"8fÇCÍÆCÇCÇC8¯"ÇC „¯"ÇC$¯"ÇC(˜¯"ÇC,ȯ"ÇC0ô¯"ÇC4<°"ÇC8œ¬"ÇC<„°"ÇC@„­"ºƒÄsK •ÇD@DŽ ÿÿÿÿBú™~ݍeø[^]ÉöU‰åVS‹E‹…€Ü#ƒì h1#è7¾ƒÄƒÃƒìÿt³@h1#èû6ƒÄFþ™~ãeø[^]ÃU‰å¸ÿÿÿÿ]ÉöU‰å]ÍvU‰åƒì‹E‹U ‹…€Ü#ƒÀƒ|@tƒìRj
-èȽÿÿƒÄÉÍvU‰å‹U :t ‹E -9u
-¸ëv¸ÿÿÿÿ]ÐU‰åSƒì‹] j èӚÿÿ‰ÂƒÄ¸ …Òt!ÇÿÿÿÿÇBÇBÿÿÿÿ‹E‰‰S¸‹]üÉÍvU‰åSƒì‹] ‹Cƒxt ¸ë&‰öúƒ{tƒìj ÿsèäšÿÿÇCƒÄû¸‹]üÉÍvU‰åWVSƒì ‹}‹u ú‹^…Ûu*ƒì j è3šÿÿƒÄ…ÀtÇÿÿÿÿÇ@Ç@ÿÿÿÿ‰>‰Fƒ;ÿt
-û¸ë"‰ö¡ìÛ#‹½€Ü#ƒÂÿD‚@¡ìÛ#‰û¸eô[^_]ÃU‰åWVSƒì ‹E ‹U‹•€Ü#ú‹p¸…ö„V‹;ìÛ#u û¸#éA‹ìÛ#‹F ¿ÀÜ#;„“°v -¸é v¡ìÛ#‹Œƒ°‹“¬…Òt‰ö‹;ìÛ#…Š‹R…Òu븅À…†‹ -ìÛ#I‰ÂÁâ)‹ƒ¬‹‰D×P‹ƒ¬‹@‰„‹‹“¬¡ìÛ#‰B‹ƒ¬ÿ@èj€ÿÿ¡ìÛ#@‰ÂÁâ)ƒì ¿D×Pèù"èPŠÿÿƒÄûúéRÿÿÿ‰ö¸;J ’Àérÿÿÿ‹E‹…€Ü#¡ìÛ#ÿDƒD¡ìÛ#‰¹‹ƒ¬‹V ë‰ö‰Á‹A…Àt;P sò…Ét‰q됉³¬…Àt‰p‰F‰Nû¸eô[^_]ÍvU‰åWVS‹}‹E ‹ ½€Ü#ú‹X¸…Û„Ù‹;ìÛ#uû¸#éčv‹ìÛ#‹C ;„‘°s
-¸饡ìÛ#‹´°‹‘¬…Òt‰ö‹;ìÛ#u‹R…Òu︅Àuû¸ëk‰ö¸;r ’Àëåv‹ ½€Ü#¡ìÛ#ÿDD¡ìÛ#‰¾‹¬‹S 됉ƋF…Àt;P sò…öt‰^됉™¬…Àt‰X‰C‰sû¸[^_]ÉöU‰åWVSƒì ‹E ‹x¸…ÿ„ï‹;ìÛ#tû¸éڍvúè&!‹ìÛ# [‰ÊÁâ)Êf‰ÕÈÜ#‹E‹…€Ü#‰EðÿL˜DÇÿÿÿÿ‹_ÇGÿÿÿÿƒûÿt2‰ÆƒÆv‰Ù[‰ÐÁà)ЉÅÝ#‹œžDŽŽÿÿÿÿƒûÿuÖÇG‹O‹W…Éu -‹Eð‰¬ë‰ö‹G‰A…Òt‹G‰Bèã}ÿÿ¡ìÛ#@‰ÂÁâ)ƒì ¿ÕÈÜ#Pèo èƇÿÿƒÄû¸eô[^_]ÐU‰åVSƒì hd1#èJ—ÿÿèْÿÿ‰ÃÇ$€è–ÿÿ‰Æ‰4€Ü#ƒÄ jhx1#Vèî1fÇFÌÆFÇFÇF@¶"ÇF Ķ"ÇF$ð¶"ÇF( ·"ÇF,h·"ÇF0”·"ÇF4ì·"ÇF8ü°"ÇF<„²"ÇF@ˆ³"ºƒÄ^N•ÇD@DŽ°ÿÿÿÿDŽÿÿÿÿBú™~Òdž¬eø[^]ÐU‰å‹U‹M ¸ÿÿÿÿ…Òt;‹‹…€Ü#ƒxu‹@%ÿÿÿ=Ìu…Ét ‹B‹@ ‰ë
-‰ö¸ÿÿÿÿ됸]ÐU‰å‹U‹M¸ÿÿÿÿ…Òt@‹‹…€Ü#ƒxu‹@%ÿÿÿ=Ìt¸ÿÿÿÿ됅Ét‹B‹@ ‰‹R‹E ‰B ¸]ÃU‰å‹E‹M ‹U‹…€Ü#‰”ˆ°]ÃU‰åWVSƒì‹E‹<…€Ü#h1#è0»ƒÄwƒìÿtž@h1#èó/ƒÄCû™~ãƒì hB1#èÚ/»ƒÄ‰öƒìÿ´Ÿ°h^1#è¼/ƒÄCû™~àeô[^_]ÃU‰å‹U :t ‹E -9u
-¸ëv¸ÿÿÿÿ]ÐU‰åS‹E‹U ‹]‹ …€Ü#Áâ‹C‰„°ÇD
-D‹$ÉÉöU‰åVS‹E‹u ‹…€Ü#ƒ|³DtƒìVj
-èD¶ÿÿƒÄë vÇD³DDŽ³°ÿÿÿÿeø[^]ÉöU‰å‹U :t ‹E -9u
-¸ëv¸ÿÿÿÿ]ÐU‰åSƒì‹] jè3“ÿÿ‰ÂƒÄ¸ …Òt1ÇÿÿÿÿÇBÇBÿÿÿÿ‹E‹@‰B ÇB‹E‰‰S¸‹]üÉÍvU‰åSƒì‹] ‹Cƒxt ¸ë&‰öúƒ{tƒìjÿsè4“ÿÿÇCƒÄû¸‹]üÉÍvU‰åWVSƒì$·]Sh‚1#è .‰Ø-yƒÀÁèƒÄ ·À‰Eè@ÛÁã¿@·%ÿt8CP‰Eä·8Ph‰1#èá-ƒÄ ÿt;·D;Ph—1#èÊ-ƒÄ ÿt; s·>Ph¨1#è±-ƒÄ ÿt>·D>Ph¹1#èš-ƒÄ ‹Uä·D:P·DLPhÊ1#è~-‹UèÕƒÄ·ØShÛ1#èc-EóPEòPEìPS蹃ĶUóR¶UòRÿuìPh 2#è6-ƒÄ eô[^_]ÍvU‰åWVSƒì ‹E‹U‹]¹‹u ƒî‰ƒî‰º :&fƒ= :&yA¿Áfƒ<Byfù™~îfù™~ƒì hð1#èÎ,¸ƒÄé ¿Á<¹ :&‰Úf Ê€f‰Ǎ<ÿÁçº@·%‰tÇD _ÇDfŒÙf‰LfÇfÇDÇD _ ‹M‰ ÇDÇDO0ÇDÇD Ǎ_@ÇÇD‰t‰t fŒÉf‰L fŒÙf‰LfŒÛOPf‰\fŒÛf‰fÇD 0fÇD0O`fÇfÇDfÇDÇ¬·%¾`;&¹üó¥Å˜eô[^_]ÐU‰åVS‹u ¿E-‰Â…ÀyP‰ÐÁø@ÀÁà¹@·%f‰tX@Vf‰T f‰t ƒÀPf‰tf‰4[^]ÉöU‰å¿E-‰Â…ÀyP‰ÐÁøfDŽ :&]ÉöU‰åSƒì‹]¿E Ph2#Sè~3‰ØƒÄ‹]üÉÃU‰åVS趉Æès»‰öƒìh,Â"SèƒÄh¸»"SèìƒÄCƒû~ۉðeø[^]ÉöU‰åƒìèaÉÍvU‰åSƒì‹]‹øW#€82uºð°îƒìShb3#èˆ*ƒÄÁ㋃øW#@Ph½=#èp*ƒÄÿ³<X#ènƒÄ‹]üÉÉöU‰åƒìÿuhy3#èE*èèûÇ$èG7ƒÄÉÉöU‰åWVSƒì‹E‹} ƒ=„µ%„à…ÿ„Ø¡¬%€€€ źm¶‰È÷â‰È)ÐÑ草ÁÁé
-‰O¡¬%ÀP‰ÐÁà)кè‰Ó™÷û’’’щW¡¬%ÀP‰ÑÁá)ѾÓMb‰È÷îÁú‰ÈÁø‰Ó)øƒÞC÷o‰ÑÁù‹GÁø)Á‰È؉‹OÁú‰ÈÁø)’’’’’’Áâ)э ‰ ‰ ‰Áá‰O‹éԉö]衬%€€€ źm¶‰È÷â‰È)ÐÑ草ÁÁé
-¡¬%ÀP‰ÐÁà)кè‰Ö™÷þ’’’щS¡¬%ÀP‰ÑÁá)ѾÓMb‰È÷îÁú‰ÈÁø)‰Uè‹{¸ƒÞC÷ï‰ÑÁù‰øÁø)Á‰ÈEè‰ùÁú‰ÈÁø)’’’’’’Áâ)э ‰ ‰ ‰Áá‰K‹E荀€€€€€‰ÃÁã‰È÷îÁúÁù)ʍéèvƒøuc¸ƒ=ô«%…Ρø«%€€€€€€‰ÃÁã‹ -ü«%ºÓMb‰È÷êÁúÁù)ÊӅÿ„…¡ø«%‰¡ü«%éqvƒø…ç¶ä«%ƒøtƒø…Àt
-ë,ƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹ -ð«%f)Ù·É -¬%º×®¬]‰È÷êÁú‰ÈÁø)¬%’BÁà)Ѝ‚‰ÂÁâ Ð)Á‰È£¬%f‰ð«%…ÿ„̍€€€ źm¶‰È÷â‰È)ÐÑ草ÁÁé
-‰O¡¬%ÀP‰ÐÁà)кè‰Ó™÷û’’’щW¡¬%ÀP‰ÑÁá)ѺÓMb‰È÷êÁú‰ÈÁø‰Ó)Ëw¸ƒÞC÷î‰ÑÁù‰ðÁø)Á‰È؉‰óÁú‰ÙÁù)ʍ’’’’’’Áâ‰Ø)Ѝ€€€Áà‰G‹¬%’’’4Õ¹Á6ۉð÷é‰Ó3‰ÁÁù
-‰ð™‰È)Ћ -¬%ɍ‘ÑÁâ)ʉÑÁá)эÈ鍃ø…ƒ=ô«%…rUè¡ø«%‰¡ü«%‰B»@¹C°Ò‰Êî‰Úì¶ÈìÁàf¶Ñ з𷀵%9Æv%h†3#j_h˜3#hŸ3#èm%Ç$èmƒÄ·€µ%)ó¯è«%·€µ%‰Ø‰Ñº÷ñ‰Ãº °
-îì©t‹ -è«%;ÍÌÌ̉ð÷âÁê9Ós‰Ëu荛€€‹V‰Eä‰F¸¡/¸D÷mä‰ÑÁù‹EäÁø)Á‰ÈEè‹N¸¡/¸D÷éÁú‰ÈÁø)’’’’’’’’’Áâ )щN¡ø«%€€€€€€Áà‰Eä‹ -ü«%ºÓMb‰È÷êÁúÁù)ʋEäÐÅÿt ‰ð‹‰‹@‰G‰Øëv¸eô[^_]ÍvU‰åVSƒìŠEˆE÷ÿ¤X#ƒ=¤X#uƒ=€X#tÿ€X#¶E÷€Áຬª%ƒ<uIÇö€°ª%tûƒì ¶]÷›Áã¾ ª%ÿ43ÿ“¤ª%ƒÄöDtú¶E÷€Ç…¬ª%ÿˆX#ƒ=¤X#uƒ=„X#tÿ„X#ÿ -¤X#eø[^]ÍvU‰åWVSº¿¬ª%¾¨ª%»¤ª%¹ ª%’ÁàÇ8‰0ÇÇBƒú~ÜǤX#[^_]ÐU‰åVS‹U‹] ‹uú’ƒ<…¬ª%t÷Æu¸ÿÿÿÿëH’ …ǁ¬ª%û…Ût‰™¤ª%º ª%¨ª%‰‰t
-됍’Ç…¬ª%¸[^]ÐU‰å¡¤X#]ÉöU‰åSƒì¶ä«%ƒøt!ƒø…Àt ë.‰öƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹ -ð«%f)Ù·É -¬%º×®¬]‰È÷êÁú‰ÈÁø)¬%’BÁà)Ѝ‚‰ÂÁâ Ð)Á‰ -¬%f‰ð«%ÿ¤X#ƒ=¤X#uƒ=€X#tÿ€X#¡ü«%‰ÃD¿#º¡/¸D‰Ø÷êÁú‰ÙÁù)Êø«%’’’’’’’’’Á⠉Ø)Уü«%‹à«%ë$‹¡ì«%‰‰ì«%‰à«%ƒì ÿrÿRƒÄ‰Ú…Òt‹B ;ø«%;ø«%uƋB;ü«%~»ƒ=¤X#uƒ=„X#tÿ„X#ÿ -¤X#‹]üÉÃU‰åWVSƒì‹uhˆÐ"j@èØ -ƒÄƒ>t,ƒì h¹3#èß »ÿÿƒÄ¿@¹C°8‰ÊîˆØ‰úîëaƒì hÕ3#è³ ‹N‰ -è«%ɍA‰ÂÁâ‰Ñ)ÁºÓMb‰È÷âƒÄ‰ÑÁéu¹f‰ -€µ%‰Ë¿@¹C°4‰Êî‰úˆØî‰ØfÁèî‹£ô«%ƒ=ä;&~»A¹C°p‰ÊÚîîÆä«%ë%Æä«%»B¹C°°‰ÊÚîîºa°îº!ì%þî¹¾ ¬%»$¬%ƒùbIÁà8¬%‰0I‰LÃAƒùc~ßÇhµ%Çì«% ¬%Ç€X#Ç„X#¡è«%€€€Áà£D¿#Çü«%Çø«%Ǭ%Ǭ%fÇð«%ƒ=ô«%uÇÄÛ#xÇ"ÇÈÛ#È"ëÇÄÛ#`È"ÇÈÛ#ìÎ"eô[^_]ÃU‰å‹E£€X#]ÍvU‰å‹E£„X#]ÍvU‰å‹E£X#]ÍvU‰åWVSƒì ‹E‹U ‰Eè‰Uì¸ÿÿÿÿƒ=ì«%tl‹ -ì«%‹£ì«%‹E‰A‹Eè‰A ‹Eì‰A‹E‰A»‹à«%}è‹uè됋…Òt‰ð;B  -;B u‹G;B~‰Óëâ‰ö…Ût‰ ë‰ -à«%‰‹AƒÄ [^_]ÐU‰å‹E¹‹à«%됉ы…Òt;Buó¸ÿÿÿÿ…Òt$…Éu
-‹£à«%됋‰¡ì«%‰‰ì«%¸]ÃU‰åWVSƒì,‹E‹U ‰Eè‰Uì¸ÿÿÿÿƒ=ì«%„q‹5ì«%‹£ì«%‹E‰F‹Eè‰F ‹Eì‰F‹E‰Fº‹à«%}è‹Mè됋…Ût‰È;C  -;C u‹G;C~‰Úëâ‰ö…Òt‰2鐉5à«%ƒ=„µ%…ôƒìEàPjè3óÿÿ‹à«%ƒÄ‹Eà;B  -;B u‹Eä;B~ÇEÜÇEØëK}؋à«%Mà‹B;A|‹B +Eà‰E؉Ћ@+Aë ¡à«%‹@ +EàH‰EØ¡à«%‹@+Eäʚ;‰G‹E؍€€€€€€Áà‰EԋMÜ¿ÓMb‰È÷ïÁúÁù)ÊUԍҍB‰ÂÁâ)‰Ð÷çÁê¸ðúðw¸ÈúÇv‰Ðº@îfÁèFeô[^_]ÃU‰åWVSƒì¶ä«%ƒøtƒø…Àt
-ë,ƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹ð«%f)Ú·Ò‰Ö5¬%¹×®¬]‰È÷î‰ÑÁù‰ðÁø)Á -¬%‰AÁà)ȍÁ‰ÁÁá ȉò)‰¬%f‰ð«%]荒’’ Õ¾m¶‰ð÷á‰Ö‰Ê)òÑê2‰ÁÁé
-¡¬%ÀP‰ÐÁà)кè‰Ö™÷þ’’’щS¡¬%ÀP‰ÑÁá)ѺÓMb‰È÷êÁú‰ÈÁø)‰Uè‹s¿ƒÞC‰ð÷ï‰ÑÁù‰ðÁø)Á‰ÈEè‰ðÁú‰ñÁù)ʍ’’’’’’Áâ)Ѝ€€€Áà‰Cƒ=à«%„/Ç„µ%‹à«%‹Eè;B ;B …Œ‹C;BŽ€ƒ=¤X#uƒ=€X#tÿ€X#ÿ¤X#‹à«%ë#‹¡ì«%‰‰ì«%‰à«%ƒì ÿrÿRƒÄ‰Ú…Òt‹B ;Eè -;EèűB;Eì~ă=¤X#uƒ=„X#tÿ„X#ÿ -¤X#¶ä«%ƒøt"ƒø …Àt -ë/vƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹ð«%f)Ú·Ò‰Ö5¬%¹×®¬]‰È÷î‰ÑÁù‰ðÁø)Á -¬%‰AÁà)ȍÁ‰ÁÁá ȉò)‰¬%f‰ð«%]荒’’ Õ¾m¶‰ð÷á‰Ö‰Ê)òÑê2‰ÁÁé
-¡¬%ÀP‰ÐÁà)кè‰Ö™÷þ’’’щS¡¬%ÀP‰ÑÁá)ѺÓMb‰È÷êÁú‰ÈÁø)‰Uè‹s¿ƒÞC‰ð÷ï‰ÑÁù‰ðÁø)Á‰ÈEè‰ðÁú‰ñÁù)ʍ’’’’’’Áâ)Ѝ€€€Áà‰C‹à«%‹Mè;J 
-;J u;B~ÇEäÇEàëJ]à‹à«%Mè‹B;A|‹B +Eè‰Eà‰Ð‹@+Aë ¡à«%‹@ +EèH‰Eà¡à«%‹@+Eìʚ;‰C‹Eà€€€€€€‰ÆÁæ‹Mä»ÓMb‰È÷ëÁúÁù)ʍ2ҍB‰ÂÁâ)‰Ð÷ãÁê¸ðúðw¸ÈúÇv‰Ðº@îfÁèîÇ„µ%ë -‰öº@°î°ðîeô[^_]ÐU‰åVSƒì‹E»¹‹à«%ëv‰Ñ‹…Òt;Buó¸ÿÿÿÿ…Ò„I…Éu‹£à«%»ë‹‰¡ì«%‰‰ì«%ƒ=„µ%…ƒ=à«%uº@°î°ðéû‰ö…Û„òƒìEðPjèºìÿÿ‹à«%ƒÄ‹Eð;B  -;B u‹Eô;B~ÇEìÇEèëJ]è‹à«%Mð‹B;A|‹B +Eð‰Eè‰Ð‹@+Aë ¡à«%‹@ +EðH‰Eè¡à«%‹@+Eôʚ;‰C‹E荀€€€€€‰ÆÁæ‹Mì»ÓMb‰È÷ëÁúÁù)ʍ2ҍB‰ÂÁâ)‰Ð÷ãÁê¸ðúðw¸ÈúÇv‰Ðº@îfÁèeø[^]Éöú‹D$¼HÏ#PèŒëÿÿ`fff f¨f¸0ŽØŽÀ° º X#@£ŒX#1ÛfŒÓü¡ô«%ƒøtèùòÿÿëè6ùÿÿ°
-º îì¨t ¸@Pè–ÿÿÿf¡”X#f9šX#t f£šX#ÿ-–X#ƒ=X#t‹X#ÿÓf©f¡ffaωöU‰å‹EØf£šX#f£”X#]Ã1ÀÈÃU‰åf¸0ŽØŽÀ‹Ef;šX#t f£šX#ÿ-–X#]ÉöU‰åƒìjjjj@èaƒÄÉÃU‰åWVSƒì ‹]‹u ‹}聉€:y"…Ût‹B8‰…öt‹BÁà
-‰…ÿt)‹B4‰ë"‰ö…ÛtÇ…öt‹BÁà
-‰…ÿtÇ@ƒ}t ‹BÁà
-‹U‰ƒÄ [^_]ÍvU‰åƒìjjjj@è̓Ä·@0ÉÃU‰å¡XV#]ÉöU‰å]ÍvU‰åSƒì‹XV#誃ì Sèucÿÿè ƒÄ‹]üÉÃU‰åWVS‹M ‹u‹}Š]‰ÈÁàeèÿÿ Eè‰ÈÁèUèˆBáÿbÿÿÿ J‰ðˆB‹Ef‰Eè‹EÁè‰EäŠEäƒà ÃË@¶ÃÁàbÿÿÿ Bçüÿ=JV#‹‰‹B‰G[^_]ÐU‰åWVSƒì ‹] ‹u‹}·EMèJV#‹‰‹@‰A‰Ê¶JÁá¶B ÁÁá·B Á…ÛtŠBƒà¶ÐÁâ·Eè Љ…ötŠE툅ÿt
-ŠEî%ðˆ‰ÈƒÄ [^_]ÉöU‰å‹E ¶UÁâ¹`Y#fÇD
-8ƂeY#îƂdY#f‰
-Áèf‰D
-]ÍvU‰åº °îº!°@î°î°î°ÿ°°pî°î°î°ÿî]ÐU‰åº °îº!°î°î°î°ÿ°°pî°î°î°ÿî]ÐU‰å‹Mf…ÉtWfƒùw¸Óà
- X#ë7fƒùw<·Éƒé¸Óà
-¡X#¢¡X#º¡î<ÿu  X#©uƒÈ¢ X#º!î]ÃU‰å‹Mf…ÉtUfƒùw¸þÿÿÿÓÀ" X#ë5fƒùw:·Éƒé¸þÿÿÿÓÀ"¡X#¢¡X#º¡î  X#©t%û¢ X#º!î]ÉöU‰å¿”X#]ÃU‰åƒì‹Ef£”X#˜PèWüÿÿƒÄÉÐU‰å¿”X#]ÃU‰åƒì‹E‰Âf£”X#ƒ=¤X#uƒì ¿ÂPèüÿÿƒÄÉÐU‰åWVì¾¹¬X#ºìX#‰öµÇ¨Ø"ǨØ"Fƒþ~åƒì EÈPèÅèºÇà;&!4#‹EÈ£ä;&¶¨X#£è;&ƒÄ‹EУð;&‹EÔ£ô;&‹EØ£ø;&hQÚ"jè£ýÿÿƒÄh[Ú"jè”ýÿÿƒÄheÚ"jè…ýÿÿƒÄhlÚ"jèvýÿÿƒÄhsÚ"jègýÿÿƒÄhzÚ"jèXýÿÿƒÄhÚ"jèIýÿÿƒÄhÇÚ"jè:ýÿÿƒÄhˆÚ"jè+ýÿÿƒÄhÚ"j èýÿÿƒÄh–Ú"j
-è -ýÿÿƒÄhÚ"j èþüÿÿƒÄh¤Ú"j èïüÿÿƒÄh«Ú"j -èàüÿÿƒÄh²Ú"jèÑüÿÿƒÄh¹Ú"jèÂüÿÿƒÄhÀÚ"jè³üÿÿƒÄh€Ù"jAè¤üÿÿƒÄhˆÙ"jBè•üÿÿƒÄhÙ"jCè†üÿÿƒÄh˜Ù"jDèwüÿÿƒÄh Ù"jEèhüÿÿƒÄh¨Ù"jFèYüÿÿƒÄh°Ù"jGèJüÿÿƒÄh¸Ù"jpè;üÿÿƒÄhÀÙ"jqè,üÿÿƒÄhÈÙ"jrèüÿÿƒÄhÐÙ"jsèüÿÿƒÄhØÙ"jtèÿûÿÿƒÄhàÙ"juèðûÿÿƒÄhèÙ"jvèáûÿÿƒÄhðÙ"jwèÒûÿÿf -T;&€¾ƒÄvÀÅ@·%ƒì jh‰hØPõ·ÀPèúÿÿƒÄ Fþš~ǃì hÐèFùÿÿƒÄÛãݵTÿÿÿ›¿`;&µTÿÿÿ¹üó¥ ÀƒÈ""ÀÛãèƒûÿÿèúÿÿeø^_]ÍvU‰åSƒìº!°ÿîè’ûÿÿ¹@ºC°6Êîîƒ=ä;&~¹AºC°tî°‰Êî°ë»B¹C°°‰ÊÚîîºaî‹]üÉÃU‰å‹U‹E ‰•ìX#]ÉöU‰å‹U‹E ‰•¬X#]ÉöU‰åƒìh4#è
-è— ƒÄÉÉöœX‰Á5PœX9ÈtQ¸Ã¸ÜX‰Á5 PœX1ÈtQ¸øÃf1Àžf¸f»öóŸ€üu¸øÃƨX#Ûã¹âþfǪX#ZZÝ=ªX#¹âþf¡ªX#<u+Ù=ªX#¹âþf¡ªX#f%?fƒø?uƨX#ƨX#Éö`¸ëp`¸ëh`¸ë``¸ëX`¸ëP`¸ëH`¸ë@`¸ë8`¸ ë0`¸
-ë(`¸ ë `¸ ë`¸ -ë`¸ë`¸ë ¨Pf¸0ŽÀŽØüX1ÛfŒÓP‹…¬X#ÿÓ[° ƒûrº îº îf¡”X#f;šX#t f£šX#ÿ-–X#©¡aϸ鋸選ëz¸ës¸ël¸ëe¸ë^¸ëW¸ ëP¸
-ëI¸ ëB¸ ë;¸ -ë4¸ë-¸ë&¸ë` ¨f¸0ŽÀŽØüèש¡aÏPf¸0ŽØŽÀXfŒÓ‹=JV#ß1ۊŠ_Áãf‹_ÜfŒÒfŒÛŽÓSRPÿ…ìX#ƒÄX[ŽÐ)ÜÏU‰åWVSƒì ‹u¸¹ ‰÷üó«è|ýÿÿ…ÀtÇëUèŠýÿÿ…Àt7ÇFǸ¢‰^‰N‰V …Àt+¸¢‰F‰^‰N‰V ëÇècýÿÿ…ÀtÇ ƒÄ [^_]ÍvU‰åWV¿,Y#È·À-yƒÀÁø9ÂtU¿,Y#@ÀÝ4Ŭ·%›È·À-yƒÀÁøf£,Y#¿5,Y#¿ <&4v4ö4õ¬·%¹üó¥Ý% <&^_]ÉöU‰å¿,Y#]ÃU‰åWVSƒì(ŠM¡0Y#Áà ˜€ f¶Ž<&f£JÏ#f¶<&f£LÏ#€ù t%€ù €ù„óé‰ö€ù
-„#é‰öfƒJÏ#·JÏ#;<&Œ½fÇJÏ#·LÏ#¡”<&H9Â…¿¡<&H‰Eì‰Uèf¾Œ<&Áâf‰Uò¡0Y#Áà °€ ¿;}è:¹;Mì*_ÿv‰ø¯<&È·F‰Ø¯<&Èf‰FA;Mì~ÜG;}è~ƹ;MìKWÿ‰Ð¯<&Èf‹]òf‰FA;Mì~çé)‰öfÇHÏ#·JÏ#‰Áƒø~ºƒÂ·ÂƒÀ9È|óf‰HÏ#f¡HÏ#f£JÏ#éævfÇJÏ#·LÏ#¡”<&H9Â…¾¡<&H‰Eà‰UÜf¾Œ<&Áâf‰Uæ¡0Y#Áà °€ ¿;}Ü=v¹;Mà*_ÿv‰ø¯<&È·F‰Ø¯<&Èf‰FA;Mà~ÜG;}Ü~ƹ;MàGWÿ‰Ð¯<&Èf‹]æf‰FA;Mà~çé%‰öfÿ -JÏ#·JÏ#·LÏ#¯<&ÂÆS fÿJÏ#éõ‰ö·JÏ#·LÏ#¯<&Ј CfÿJÏ#·JÏ#;<&Ž¿fÇJÏ#·LÏ#¡”<&H9Â…š¡<&H‰EԉUÐf¾Œ<&Áâf‰UÚ¡0Y#Áà °€ ¿;}Ð=v¹;MÔ*_ÿv‰ø¯<&È·F‰Ø¯<&Èf‰FA;MÔ~ÜG;}Ð~ƹ;MÔ'Wÿ‰Ð¯<&Èf‹]Úf‰FA;MÔ~çëfÿLÏ#·5JÏ#·=LÏ#‰øf¯<&f‰EΡ0Y#Áà fEÎfuλÔ°‰Úî¹Õ‰ÊŠEÎî°‰Úîf‹EÎfÁè‰Êî‰óˆŽ<&‰ø¢<&ƒÄ([^_]ÐU‰åWVSƒì‹u‹} ‰øf¯<&f‰Eò¡0Y#Áà fEòfuò»Ô°‰Úî¹Õ‰ÊŠEòî°‰Úîf‹EòfÁè‰Êî‰ð¢Ž<&‰úˆ<&ƒÄ[^_]ÍvU‰åS¹Ô°
-‰Êî»Õ‰ÚŠEî° ‰Êî‰ÚŠE î‹$ÉÍvU‰åWVSƒìf¾EÁàf‰Eò¡0Y#Áà ¸€ ‹]ë0‹M ;M(sÿ‰Ø¯<&È·G‰ð¯<&Èf‰GA;M~ÜC;]~ʋM ;MSÿv‰Ð¯<&Èf‹]òf‰GA;M~çƒÄ[^_]ÍvU‰åWVSƒì ¡<&H‰Eð‹”<&K‰]ìf¾Œ<&Áàf‰Eê¡0Y#Áà °€ ¿9ß<‰ö¹;Mð*_ÿv‰ø¯<&È·F‰Ø¯<&Èf‰FA;Mð~ÜG;}ì~ƹ;MðWÿ‰Ð¯<&Èf‹]êf‰FA;Mð~çƒÄ [^_]ÍvU‰å·J‰<&¶„@£”<&¶„ÿ ¢Œ<&¶P¢Ž<&¶Q¢<&¶`¢OÏ#¶a¢NÏ#Ç4Y#Ç0Y#]ÃU‰åWVSƒì Ž<&¢P <&¢Q¶ÀP¶Ž<&PèŠýÿÿ¶NÏ#¶5OÏ#ƒÄ¹Ô°
-‰Êî¿Õ‰úˆØî° ‰Êî‰ú‰ðîeô[^_]ÍvU‰åSƒì‹]€;tŠCƒì ¾ÀPèiùÿÿƒÄ€;ué‹]üÉÃU‰åVS‹E‰ÃÁã £4Y#¹Ô° -‰Êî¾Õ‰òˆØî° ‰Êî‰ØfÁè‰òî[^]ÃU‰åVS‹u‹0Y#Áâ»`Ï#¶Ž<&‰¹€Ï#¶<&‰
-µŠ¢Ž<&Š
-¢<&‰50Y#[^]ÃU‰å¡4Y#]ÉöU‰å¡0Y#]ÉöU‰åWVSƒì ‹}f¾u Áæf¾E Ƌ]‹E9Ã3v‹M9ù#‰Ê¯<&¡0Y#Áà ÐØf‰´€ A9ù~ÞC;]~ЃìÿuÿuèüÿÿŠE¢<&ŠE¢Ž<&ƒÄeô[^_]ÍvU‰åWVSƒì ¡<&H‰Eð‹=”<&Of¾Œ<&ÁãƒË ¾9Æ4¹9ù%v‰Ê¯<&¡0Y#Áà Ððf‰œ€ A9ù~ÞF;uð~̃ìjjèûÿÿƍ<&ÆŽ<&ƒÄeô[^_]ÍvU‰åS‹U ‹]‹M¯<&¡0Y#Áà ÂU”€ ˆ
-ˆZ‹$ÉÉöU‰åS‹E ‹]‹M‰Â¯<&¡0Y#Áà ÂU”€ ¶B…Étˆ¶‰Â…Ûtˆ¾Â‹$ÉÐU‰åS‹E ‹MŠ]‰Â¯<&¡0Y#Áà ÂU”€ €9tŠˆABˆB€9uò‹$ÉÐU‰åƒìh<4#èTýÿÿôƒÄÉÉöU‰åƒìjèƒÄÉÉöU‰åƒìh4èƒÄÉÍvU‰åVS‹Ef£r¹d»þ¾v‰Êì©t Fþÿÿ~í¸@=Ÿ†~ø‰ÚˆÈö@=Ÿ†~øë‰öU‰åSƒìE Pÿuh Ï#èX‰ÃÇ$ Ï#è¢üÿÿ‰ØƒÄ‹]üÉÃU‰åWVSìð‹} ŠEˆ…ÿÿÿEPÿuÿÿÿSè‰ÆS¾…ÿÿÿPWÿuè±þÿÿ‰ðƒÄ eô[^_]ÃU‰åSƒìE Pÿuh Ñ#謉ÃÇ$ Ñ#è&üÿÿ‰ØƒÄ‹]üÉÃU‰åS‹M‹U ‰Ë€:tvŠˆBA€:uõƉ؋$ÉÍvU‰åVS‹]‹U ‹M‰Þë‰öŠˆBC€:t‰ÈI…ÀîƉð[^]ÐU‰å‹U‹M ë -¸€:tBAŠ:t)Ð]ÃU‰åS‹U‹] ‹M…Éëv¶¶Sÿ)Ð됊C8uíŠB„ÀtIu︋$ÉÐU‰å‹U¸€:tB@€:uù]ÍvU‰åS‹E‹] €8t‰Ú€:tŠv:
-tB€:uö@€8u下$ÉÉöU‰å‹E‹U €8t ‰ö8t @€8uö¸]ÍvU‰åS‹]‰Ú€;t‰öŠ
-AŸ<wAàˆB€:uì‰Ø‹$ÉÐU‰åS‹]‰Ú€;t‰öŠ
-A¿<wA ˆB€:uì‰Ø‹$ÉÐU‰åS‹U‹M ‰Ó€;tvB€:uú늈AB€9uõƉ؋$ÉÍvU‰åWVSƒì<‹u‹]ÇEèÇEäÇEàÇEÜÇEØÇEÔÇEпÇEÌÙîÝ]À‰uì‹E €8„D‹U €:%t…ÿuŠˆB‰U FÿEèév‹E €8%u%@‰E ¿ÇEä
-ÇEàÇEØÇE̋U ¾ƒè%ƒøS‡Ñÿ$… %#‰öÆ%FÿEè鼃ÉòFŠCüˆÿEè驐ƒ}Øt"ƒ}؃}Øtëƒ}ØuƒÃ‹Cü‰EÔë -vƒÃ¿Sü‰Uԃì ÿuÌÿuäj
-VÿuÔè¾ éœƒ}Øt"ƒ}؃}Øtëƒ}ØuƒÃ‹Cü‰EÐë -vƒÃ·Sü‰UЃì ÿuÌÿuäj
-VÿuÐè.éPƒ}Øt"ƒ}؃}Øtëƒ}ØuƒÃ‹Cü‰EÐë -vƒÃ·Sü‰UЃì ÿuÌÿuäjVÿuÐèâ鐃ËCü‰EЃì jÿuäjVPèÂé䐃ËSü€:tŠˆBFÿE܀:uò‹UÜUèévƒ}Øtƒ}؃}Øtëƒ}Øu ƒÃÝCøÝ]ÀƒìÿuÌÿuàÿuäVÿuÄÿuÀèYë~vƒ}Øtƒ}؃}Øtëƒ}Øu ƒÃÝCøÝ]ÀƒìÿuÌÿuàÿuäVÿuÄÿuÀè} -ë>vƒ}Øtƒ}؃}Øtëƒ}Øu ƒÃÝCøÝ]ÀƒìÿuÌÿuàÿuäVÿuÄÿuÀèa‰EÜEèÆ¿ƒÄ é±ÇEØé¥ÇEØ陃MÌ鐍vƒMÌ鄍v¿ƒMÌëvƒÿu?ƒìEìPj
-ÿu èb
-‰EäƒÄ‹E €80u ÷EÌtƒMÌ됃MÌ‹UìJ‰U ë4vƒÿu,ƒìEìPj
-ÿu è
-‰Eà‹EìH‰E ¿ƒÄë‰ö¿ÿE ‹U €:…¼üÿÿÆ‹Eèeô[^_]ÉöU‰åƒì EPÿu ÿuè7üÿÿƒÄÉÉöU‰åWVSƒì,‹u‹} ‹]ÇEìÇEèÇEäÇEàÇEÜÇEØÇEÔÇEЉuð€?„>€?%tƒ}Ôu ŠˆGFÿEìëá€?%uGÇEÔÇEè
-ÇEàÇEоƒè%ƒøS‡çÿ$…ð&#Æ%FÿEìéԃÉòFŠCüˆÿEìéÁƒ}àt&ƒ}àƒ}àt
-ë"ƒ}àt
-ëƒÃ‹CüëƒÃ‹CüëƒÃ¿Cü‰E܃ì ÿuÐÿuèj
-VÿuÜè鏐ƒ}àt&ƒ}àƒ}àt
-ë"ƒ}àt
-ëƒÃ‹CüëƒÃ‹CüëƒÃ·Cü‰E؃ì ÿuÐÿuèj
-ëBƒ}àt&ƒ}àƒ}àt
-ë"ƒ}àt
-ëƒÃ‹CüëƒÃ‹CüëƒÃ·Cü‰E؃ì ÿuÐÿuèjVÿuØè6‰EäEìÆÇEÔƒÄ éҍvƒÃ‹Sü€:tŠˆBFÿEä€:uò‹EäEì飍vÇEàé›ÇEà鏃MÐ醍vƒMÐë}‰öÇEÔƒMÐënvƒ}Ôu6ƒìEðPj
-W蓉EèƒÄ€?0u ÷EÐtƒMÐ됃MЋ}ðOë1‰öƒ}Ôu)ƒìEðPj
-WèW‹}ðOÇEÔƒÄë
-vÇEÔGé¼ýÿÿvÆ‹Eìeô[^_]ÉöU‰åƒì EPÿu ÿuèGýÿÿƒÄÉÉöU‰åWVSƒì,‹}‹uÇEèÇEäÇEàÇEÜÇEØ»‰}ì饐‹U €:%t…Ûu B‰U 鏍v‹E €8%u%@‰E »ÇEäÇEàÇEÜÇE؋U ¾ƒè*ƒøN‡Eÿ$…@(#‰öƒû…8ƒìEìPj
-ÿu èN‰E܃MØ‹EìH‰E ƒÄéŠGƒÆ‹^üˆëÝØÿEèéõƒÆ‹^üëG€?tƒì ¾PèBƒÄ…ÀuçÇEÔë#‰ö÷EØuŠˆCë‹UÜ9UÔ}ŠˆCÿEÔG€?tƒì ¾PèþƒÄ…ÀtÇÆ덉öƒìhH4#Wè&÷ÿÿ‰ÇƒÄ EìPj
-WèՉ‹}ìƒÄƒ}à…Wƒ}ät)ƒ}ä ƒ}ätéCÿÿÿƒ}ä…9ÿÿÿƒÆ‹Fü‰é,ÿÿÿƒÆ‹Füf‰éÿÿÿ‰öƒìhU4#Wè¶öÿÿ‰ÇƒÄ EìPj
-됃ìh`4#Wèšöÿÿ‰ÇƒÄ EìPjWè ‹}ìƒÄƒ}à…̓}ät+ƒ}ä -ƒ}äté¹þÿÿ‰öƒ}ä…­þÿÿƒÆ‹Vü‰é þÿÿƒÆ‹Vüf‰é‘þÿÿ‰öƒìhx4#Wè*öÿÿ‰ÇƒÄEìPWè;‹}ìƒÄƒ}àu`ƒ}ät)ƒ}ä ƒ}ätéMþÿÿƒ}ä…CþÿÿƒÆ‹FüÝé8þÿÿƒÆ‹FüÙé*þÿÿvÇEäë vÇEäëvÇEàëÝؐ»ÿE ‹E €8…Pýÿÿ‹Eèeô[^_]ÐU‰åƒì EPÿu ÿuèïüÿÿƒÄÉÉöU‰åWVSƒì,‹u ÇEп‹Eƒð‰EԋU‰U̅Òy‰Ñ÷ىM̃}y ‹E…Ày÷Ø됋E÷EÔu ƒ}yƒ}yGƒ}u‹EÐÆD(Ø0@‰EÐë8v…Àt1U؉Uȉöƒì º÷ủÃRèI‹MȋUЈ
-B‰UЉ؃Ä…Àu×}ЋEԃàƒøu‰ú;}} -‰öÆ FGB;U|õƒ}y ƒ}yÆ-ë ÷EÔtÆ+F‹Eԃàƒøu‰ú;}} Æ0FGB;U|õ‹UÐJx M؊
-ˆFJy÷‹Eԃàƒøu‰ú;}} Æ FGB;U|õƉøeô[^_]ÃU‰åƒì‹Eÿuÿu÷ØPÿu ÿuèŸþÿÿƒÄ ÉÉöU‰å‹E…Ày÷Ø]ÉöU‰åSƒì‹]èÁîÿÿƒì Sè1 -ÿÿU‰åWVSƒì‹M‹} ÙîÙÀÙ軀9-u ¾ÿÿÿÿë
-‰ö¾ëA€90túŠƒè0< w(Ý€)#ëÙˍv¾ƒè0AÜËÙËPÚ$XŠƒè0< vâÝۀ9.u9AŠƒè0< w/Ý€)#ëÙÉÙʉö¾ƒè0AÜÊÙÊPÚ$ÙÉXØʊƒè0< vÝÝÚÙÉÞùÞÁVÚ $^€9et €9E…“A€9-u
-¾ÿÿÿÿAë‰ö€9+u ¾Aëv¾Šƒè0< weÝ€)#¾ƒê0A·ÃÙÀPÚ $Ù}ð‹]ðÆEñ Ùmð‰]ðÛ]ìÙmð‹Eì·À‰$Û$‰$Ú$ZÙ}ð‹UðÆEñ Ùmð‰UðÛ]ìÙmð‹Eì‰ÃŠƒè0< v£Ý؅ö~!ºf…Ût4Ý€)#·Ã‰öÜÉB9Â|ùëvº·Ã‰Ã9Â}Ý€)#ÜùB9Ú|ùÝ؅ÿt‰ƒÄ[^_]ÐU‰åWVSƒì ‹]‹} ÇE쾀;-u ÇEðÿÿÿÿCë‰ö€;+u ÇEðCëÇEð€;0u>C€;0túë6ƒì ¾PCè‰ÂƒÄ9ú…Òy
-¸ëEv‰ð¯÷Ö9ð~ÇEìƒìW¾P聃ąÀu¶ƒ}t‹E‰ƒ}ìt¾ÿÿÿ¯uð‰ðeô[^_]ÉöU‰åWVSƒì ‹]‹} ÇEð¾€;0uC€;0tú€;xuKƒÿuFC€;0u@‰öC€;0túë6ƒì ¾PCè_‰ÂƒÄ9ú…Òy
-¸ëAv‰ð¯÷Ö9ðvÇEðƒìW¾PèуÄ…Àu¶ƒ}t‹E‰ƒ}ðt¾ÿÿÿ‰ðeô[^_]ÉöU‰åŠUBÐ< w ¾Âƒè0ë&vB¿<w ¾Âƒè7됍BŸ<w ¾ÂƒèW됾Â]ÍvU‰å‹Uƒú w B0¾À됍BöƒøwB7¾Àë¾Â]ÍvU‰åŠUƒê0¸€ú –À]ÉöU‰åŠUBÐ<vBŸ<w¸ë¸]ÐU‰åŠU€ú/~‹E 8Y#:Pÿ¸ë¸]ÐU‰åŠUBŸ<w Bà¾Àëv¾Â]ÍvU‰åŠUB¿<w B ¾Àëv¾Â]ÍvU‰åVS¾ƒì ¾]Sè%ƒÄ…Àuƒì Sè5ÿÿÿƒÄ…Àt¾‰ðeø[^]ÃU‰åŠUƒêA¸€ú9–À]ÉöU‰å¸€}/žÀ]ÍvU‰åŠUƒêa¸€ú–À]ÉöU‰åŠUB÷<v
-¸€ú u¸]ÉöU‰åŠUƒêA¸€ú–À]ÉöU‰åWVSƒì ÝEÝUè‹]‹}ÇEäSd$øÝ$èoƒÄ…Àtƒì Sè·îÿÿƒÄéPvÙîÝEèÚéßà€äE€üu Æ-C€uï€ë÷EtÆ+CÿEä݈)#ÝEèÚéßà€äE€üuÆ0ÆC¸éû‰öÙèÝEèÝáßà€äE€üu3¾Ýéßà€äE€üuHݘ4#ÝEèØÉÝUèNÝêßà€äE€ütëÝØë)vÝØÝؾݘ4#ÝEèë ÝEèØñÝUèFÝéßàöÄtîÝ؃ì Vè÷ùÿÿƒÄƒøc~ƒïë‰öƒø ~ƒïë‰ö…ö~Oƒì‹EƒÈPÿuWSÿuìÿuèèUEäƒÄ …öu‹Eäë;‰ö]äÆeCƒì jºgfff‰ð÷êÁú‰ðÁø)ƒÂRj
-SVè\ùÿÿ‹UäD‰EäƒÄ eô[^_]ÍvU‰åWVSìŒÝEݝþÿÿ‹]Dž€þÿÿ½¸þÿÿ¹K¸üó«ƒìSÿµ”þÿÿÿµþÿÿ貃ąÀtƒì SèúìÿÿƒÄé‰öÙî݅þÿÿÚéßà€äE€üuÆ-C€µ—þÿÿ€ëv÷Et
-Æ+Cÿ…€þÿÿƒì…˜þÿÿPÿµ”þÿÿÿµþÿÿèþݝpþÿÿ‹…pþÿÿ‹•tþÿÿ‰Æ‰×DžŒþÿÿƒÄ݅˜þÿÿÙèÙÉÝáßàöÄ…ø重vh$@jÿµœþÿÿÿµ˜þÿÿè$݅˜þÿÿÜ5)#ݝ˜þÿÿÙ½´þÿÿ‹´þÿÿƅµþÿÿ Ù­´þÿÿ‰´þÿÿß½¨þÿÿÙ­´þÿÿ‹…¨þÿÿ‰$èûÿÿ‹•Œþÿÿˆ„*¸þÿÿB‰•ŒþÿÿƒÄ݅˜þÿÿÙèÙÉÚéßàöÄ„oÿÿÿ‹•Œþÿÿ•€þÿÿ‰ÑI…¸þÿÿ‰…|þÿÿë‰ö‹•|þÿÿŠˆCI‹•Œþÿÿƒê‰ÐÁèH!Â9Ñ}ޅÉx‹Œþÿÿƒéx
-vÆ0CIyùÆëÝØÝØÆ0Cÿ…€þÿÿÝ 4#‰µpþÿÿ‰½tþÿÿ݅pþÿÿÚéßàöÄE…\‹E@9…€þÿÿLÆ.Cÿ…€þÿÿ‹Eƒà‰…ˆþÿÿDž„þÿÿDžŒþÿÿv‰µpþÿÿ‰½tþÿÿ݅pþÿÿܨ4#Ü -)#ݝpþÿÿ‹µpþÿÿ‹½tþÿÿƒì…˜þÿÿPWVèݝpþÿÿ‹•pþÿÿ‹tþÿÿ‰Ö‰Ï݅˜þÿÿÙ½´þÿÿ‹´þÿÿƅµþÿÿ Ù­´þÿÿ‰´þÿÿ۝¤þÿÿÙ­´þÿÿ‹…¤þÿÿƒÄ…Àtƒ½ˆþÿÿu
-Džˆþÿÿƒì PèÓùÿÿˆCÿ…€þÿÿÿ…ŒþÿÿƒÄƒ½ˆþÿÿt‹E9…Œþÿÿ~
-Dž„þÿÿ‹•€þÿÿ9U}
-Dž„þÿÿƒ½„þÿÿ„ýþÿÿKë
-‰öÿ€þÿÿ‰Ã€;0u Cÿ€{ÿ.uêCÆ‹…€þÿÿeô[^_]ÃU‰åWVSƒì‹]‹u ‹}WVSèZƒÄ…Àtƒì Wè¢éÿÿƒÄéñ‰öÙî‰]è‰uìÝEèÝáßàÝـäE€üuÙàëvÝ؉]è‰uìÝEèݘ)#ÙÉÝáßàÝـäE€üuÝØÆ0ÆG¸雺ÙèÙÉÝáßà€äE€üu/Ýáßà€äE€üu?ݘ4#ëÙɐÜÉÙÉJÝâßà€äE€ütìÝØëvÝÙݘ4#ë‰öØñÙÉBÙÉÝáßàöÄtðÝØÝ؍BƒøvƒìÿuÿuÿuWVSèÔùÿÿë‰öƒìÿuÿuÿuWVSèXûÿÿƒÄ eô[^_]ÐU‰åƒìSÙ}ü›f‹Eüf -? f‰EøÙmø›ÝEÙüÝ]ð›‹Uð‹Mô‹]‰‰KÝEÜeðeì›ÛâÙmü›[ÉÍvU‰åƒì‹E‹U ‰Eø‰Uü‹MUøf‹BfÁè%ÿ=ÿt¸ëk÷Bÿÿuƒ:t…Étƒìh°4#QèDçÿÿƒÄ¸ë@‰ö€zy…Étƒìh´4#Qè çÿÿƒÄ¸ë‰ö…Étƒìh¹4#QèçÿÿƒÄ¸ÉÃU‰åƒì¸ Ó#ƒ=DY#tÿDY#ÉÃU‰å‹E£DY#]ÍvU‰åƒì‹E‹U ‰Eø‰UüUø¹f‹BfÁè%ÿ=ÿu÷Bÿÿuƒ}øt¹‰ÈÉÉöU‰åSƒì‹E ‹]ÆPè‰âÿÿ‰ØƒÄ‹]üÉÍvU‰åVSƒì ÝEÝUð‹]‹uVSd$øÝ$èrÝ]èƒÄƒ=HY#ÿtWƒìVSèYÿÿÿƒÄ…ÀuFƒìÿuôÿuðèDÿÿÿƒÄ…Àu1Ùî‰]à‰uäÝEàÚéßà€äE€ô@uƒì jVSÿuôÿuðè4ƒÄ ëvÝEèeø[^]ÉöÝD$ ÝD$Ùø›ßàžzøÝÙͶ¼'U‰åVSƒì0ÝE‹]‹u‹EÝUà‰]è‰uìPÿú‡Èÿ$•°)#ÝØÇEغ¾4#ƒøc~ºÃ4#‰UÜÇEðÇEôƒ=HY#„}ƒì EØP誃ąÀ…uƒ=HY#…YƒìjhÉ4#éëvÝØÇEغÝ4#ƒøc~ºâ4#‰UÜÇEðÇEôƒ=HY#„ƒì EØPè>ƒÄ…À… ƒ=HY#…íƒìjhè4#év‰]à‰uäÝ]èÇEغü4#ƒøc~º5#‰UÜÇEðÇEôƒ=HY#„žƒì EØPè˃ąÀ…–ƒ=HY#…zƒìjh 5#é ÝØÇEغ5#ƒøc~º$5#‰U܃=HY#uÇEðàÇEôÿÿïGé¸ -¡<Y#‹@Y#‰Eð‰Uôé¡ -‰öÝØÇEغ²6#ƒøc~º¸6#‰U܃=HY#uÇEðàÇEôÿÿïGéh -¡<Y#‹@Y#‰Eð‰UôéQ -‰öÝØÇEغ+5#ƒøc~º/5#‰U܃=HY#uÇEðàÇEôÿÿïGé -¡<Y#‹@Y#‰Eð‰Uôé -‰öÝØÇEغ+5#ƒøc~º/5#‰UÜÇEðÇEôéÑ ‰öÝØÇEغ·/#ƒøc~º45#‰U܃=HY#uÇEðàÇEôÿÿïÇë¡<Y#‹@Y#ò€‰Eð‰Uôƒ=HY#„óƒì EØPè ƒÄ…À…ëƒ=HY#…σìjh85#éaÝØÇEغ·/#ƒøc~º45#‰U܃=HY#uÇEðàÇEôÿÿïÇë¡<Y#‹@Y#ò€‰Eð‰Uôƒ=HY#„gƒì EØP蔃ąÀ…_ƒ=HY#…Cƒìjh85#éÕ -ÝØÇEغx/#ƒøc~ºJ5#‰U܃=HY#uÇEðàÇEôÿÿïÇë¡<Y#‹@Y#ò€‰Eð‰Uôƒ=HY#„Û -ƒì EØPèƒÄ…À…Ó -ƒ=HY#…· -ƒìjhN5#éI -ÝØÇEغx/#ƒøc~ºJ5#‰U܃=HY#uÇEðàÇEôÿÿïÇë¡<Y#‹@Y#ò€‰Eð‰Uôƒ=HY#„O -ƒì EØPè| -ƒÄ…À…G -ƒ=HY#…+ -ƒìjhN5#é½ ÝØÇEغ`5#ƒøc~ºc5#‰U܃=HY#uÇEðàÇEôÿÿïÇë¡<Y#‹@Y#ò€‰Eð‰Uôƒ=HY#„à ƒì EØPèð ƒÄ…À…» ƒ=HY#…Ÿ ƒìjhg5#é1 ÝØÇEغ`5#ƒøc~ºc5#‰U܃=HY#uÇEðàÇEôÿÿïÇë¡<Y#‹@Y#ò€‰Eð‰Uôƒ=HY#„7 ƒì EØPèd ƒÄ…À…/ ƒ=HY#… ƒìjhg5#é¥ ÝØÇEغy5#ƒøc~º€5#‰U܃=HY#uÇEðàÇEôÿÿïGéP ¡<Y#‹@Y#‰Eð‰Uôé9 ‰öÝØÇEغy5#ƒøc~º€5#‰U܃=HY#uÇEðàÇEôÿÿïGë¡<Y#‹@Y#‰Eð‰Uôƒ=HY#„a ƒì EØPèŽ ƒÄ…À…Y ƒ=HY#…= ƒìjhˆ5#éÏ
-vÝØÇEغœ5#ƒøc~º 5#‰U܃=HY#uÇEðàÇEôÿÿïÇë¡<Y#‹@Y#ò€‰Eð‰Uôƒ=HY#„å ƒì EØPè ƒÄ…À…Ë
-ƒ=HY#…¯
-ƒìjh¥5#éA
-ÝØÇEغœ5#ƒøc~º 5#‰U܃=HY#uÇEðàÇEôÿÿïÇë¡<Y#‹@Y#ò€‰Eð‰Uôƒ=HY#„G
-ƒì EØPèt
-ƒÄ…À…?
-ƒ=HY#…#
-ƒìjh¶5#éµ ÝØÇEغÉ5#ƒøc~ºÏ5#‰U܃=HY#uÇEðàÇEôÿÿïÇë¡<Y#‹@Y#ò€‰Eð‰Uôƒ=HY#„Íƒì EØPèè ƒÄ…À…³ ƒ=HY#…— ƒìjhÖ5#é) ÝØÇEغÉ5#ƒøc~ºÏ5#‰U܃=HY#uÇEðàÇEôÿÿïÇë¡<Y#‹@Y#ò€‰Eð‰Uôƒ=HY#„/ ƒì EØPè\ ƒÄ…À…' ƒ=HY#… ƒìjhé5#靐ÝØÇEغþ5#ƒøc~º6#‰UÜÇEðÇEôƒ=HY#… ƒì EØPèòƒÄ…À…½ƒìjh6#jèÞõÿÿèeõÿÿÇ!ƒÄ降vÇEغþ5#ƒøc~º6#‰U܃=HY#uvÇEðàÇEôÿÿïG‰]ЉuÔÝEÐÜ -h7#Ý]Ћ]ЋuÔÙîÙÉÚéßà€äE€ü…¯ƒìVSèjƒÄ‰]ЉuÔÝEÐÙÉÚéßà€äE€ü@„‡ÇEðàÇEôÿÿïÇét¡<Y#‹@Y#‰Eð‰Uô‰]ЉuÔÝEÐÜ -h7#Ý]Ћ]ЋuÔÙîÙÉÚéßà€äE€ü…6ƒìVSèñƒÄ‰]ЉuÔÝEÐÙÉÚéßà€äE€ü@„¡<Y#‹@Y#ò€‰Eð‰UôéòvÝØÇEغþ5#ƒøc~º6#‰UÜÇEðÇEôéÁ‰öÝØÇEغþ5#ƒøc~º6#‰U܃=HY#uÇEðÇEôë¡<Y#‹@Y#ò€‰Eð‰Uôƒ=HY#„ãƒì EØPèƒÄ…À…Ûƒ=HY#…¿ƒìjh6#éQÝØÇEغþ5#ƒøc~º6#‰U܃=HY#uÇEðÇEôëÇEðÇEôøƒ=HY#„`ƒì EØP荃ąÀ…Xƒ=HY#…<ƒìj h@7#éΉöÇEغ96#ƒøc~º>6#‰U܃=HY#u6ÙîÙÉÚéßàöÄEuÇEðàÇEôÿÿïGém‰öÇEðàÇEôÿÿïÇéX‹ -<Y#‹@Y#‰Mð‰]ôÙîÙÉÚéßàöÄE„4‰È‰Úò€‰Eð‰UôéÝØÇEغD6#ƒøc~ºI6#‰U܃=HY#uÇEðÇEôëÇEðÇEôøƒ=HY#„Lƒì EØPèyƒÄ…À…Dƒ=HY#…(ƒìjhO6#麉öÇEغc6#ƒøc~ºh6#‰U܃=HY#uÝ]ðëÝØÇEðÇEôøƒ=HY#„Òƒì EØPèÿƒÄ…À…ʃ=HY#…®ƒìjhn6#é@ÝØÇEغƒ6#ƒøc~º6#‰UÜÇEðÇEôøƒ=HY#„iƒì EØP薃ąÀ…aƒ=HY#…Eƒìjh˜6#é׍vÝØÇEغ±6#ƒøc~º·6#‰UÜÇEðÇEôøƒ=HY#„ýƒì EØPè*ƒÄ…À…õƒ=HY#…Ùƒìjh¾6#ékvÝØÇEغÓ6#ƒøc~ºÙ6#‰UÜÇEðÇEôøƒ=HY#„‘ƒì EØP较ąÀ…‰ƒ=HY#…mƒìjhà6#éÿvÇEغÓ6#ƒøc~ºÙ6#‰UÜÜ5p7#Ý]ðƒ=HY#„,ƒì EØPèYƒÄ…À…$ƒ=HY#…ƒìjhõ6#隉öÇEغ7#ƒøc~º7#‰U܋ -<Y#‹@Y#‰Mð‰]ôÙîÙÉÚéßàöÄEtC‰È‰Úò€‰Eð‰Uôë1‰öÇEغ7#ƒøc~º7#‰U܍d$øÝ$jjè›Ý]ðƒÄƒ=HY#…jé|vÝØÇEغ7#ƒøcŽ•º7#鋍vÝØÇEغ·/#ƒøc~uº45#ën‰öÝØÇEغ+7#ƒøc~Yº.7#ëR‰öÝØÇEغx/#ƒøc~=ºJ5#ë6‰öÝØÇEغ27#ƒøc~!º57#ë‰öÝØÇEغ`5#ƒøc~ºc5#‰UÜÇEðÇEôƒ=HY#„¯ƒì EØPèʃąÀ…•ƒ=HY#…‹ƒìjÿuÜjè«îÿÿƒÄ jh7#jèšîÿÿƒÄëfÝØÇEغz5#ƒøc~º5#‰U܃=HY#uÇEðàÇEôÿÿïGë¡<Y#‹@Y#‰Eð‰Uôƒ=HY#tƒì EØPè2ƒÄ…À…ýè¶íÿÿÇ"éívÝØÇEغz5#ƒøc~º5#‰U܃=HY#uÇEðàÇEôÿÿïGë¡<Y#‹@Y#‰Eð‰Uôƒ=HY#„‰ƒì EØP趃Ä…À…ƒ=HY#uiƒìjh‰5#jè™íÿÿƒÄëSÇEغþ5#ƒøc~º6#‰UÜÝ]ðƒ=HY#ÿt ƒ=HY#uÇEðÇEôð?ë$‰öƒì EØPè@ƒÄ…ÀuèÈìÿÿÇ!ëÝØÝEðeø[^]ËT$â€‹D$%ÿÿÿ ЉD$ÝD$ÉöU‰å¸]ÉöÝD$ÙüÉö¼'U‰åWVSƒì ‹E ‰EðEƒEðƒeðøƒàø‰Eì‹Eð9EìsƒìjUhx7#h‚7#è˜ ƒÄ‹Eð9Eì„Ä‹E‹…Û„·‹C;C rƒìj`hx7#h7#è` ƒÄöCtƒìjahx7#hÀ7#èC ƒÄöC tƒìjbhx7#h8#è& ƒÄ‹Eì;CvL‹Eð;C sD‰Æ‹}ì;ss‹s;{ v‹{ 9÷wƒìjnhx7#h¡7#èæ ƒÄƒì‰ø)ðPVÿu蚃ċ…Û…Iÿÿÿeô[^_]ÐU‰åWVSƒì ‹u ‹E‹}‰ÂUƒÀƒàøƒâø9†ŒÇF‰F‰V ‹E‰F‰~ÇF‹MëF‰ö9óuƒìjlh08#h;8#èX ƒÄ‹F ;Cv‹F;C sƒìjmh08#h`8#è1 ƒÄ‰Ù‹…Ût9{±9{u‹S +S‹F +F9Âwœ‰‰1eô[^_]ÃU‰åWVSƒì ‹]‹} …ÛuƒìjLh8#h•8#èÙ
-ƒÄ…ÿuƒìjMh8#hž8#è¾
-ƒÄƒÇƒçø‹3…ö„rvƒ~uƒ~t‹F;FsƒìjUh8#hà8#è€
-ƒÄƒ~t‹F;F rƒìjUh8#h@9#è[
-ƒÄ‹F +F9FvƒìjUh8#h€9#è9
-ƒÄ‹F÷ЅE…åF‰Eð‹^…Û„ԍv÷Ãtƒìj^h8#hÀ9#èø ƒÄöCtƒìj_h8#h:#èÛ ƒÄƒ;t9wƒìj`h8#h@:#è» ƒÄ;^ rƒìjah8#h¶8#èŸ ƒÄ9{rGv‹‰‹C)ø‰B‹Eð‰ë
-v‹‹Uð‰9~sƒìjwh8#hÍ8#è\ ƒÄ)~‰Øë‰ö‰]ð‹…Û…/ÿÿÿ‹6…ö…‘þÿÿ¸eô[^_]ÃU‰åƒì jÿjÿuÿuÿuÿu ÿuèƒÄ ÉÐU‰åWVSƒì‹]‹EE ‰Eð…ÛuƒìjThi:#h•8#èۃă} uƒìjUhi:#hž8#较ċ;…ÿ„lƒuƒt‹G;Gsƒìj[hi:#hà8#舃ăt‹G;G rƒìj[hi:#h@9#ècƒÄ‹G +G9Gvƒìj[hi:#h€9#èAƒÄ‹G÷ЅE…á‹Uð9WƒÕ‹M9O †ÉG‰Eì‹_…Û„¸v÷Ãtƒìjkhi:#hÀ9#èèƒÄöCtƒìjlhi:#h:#è˃ă;t9wƒìjmhi:#h@:#諃Ä;_ rƒìjnhi:#h¶8#菃ċU 9S‚$‰Þ;]s‹u¹;M}ºÓâ‹E1ð…ÂtÖA;M|è‰ð)ØE ;C‡è‹M 1;Eð‡æ‰ðƒàø‰Eè9Øsƒìh‘hi:#ht:#èƒÄ9]èvC‹Uè)ډUä÷Âtƒìh–hi:#h :#èãƒÄ‹‹M艋C+Eä‰A‹Eä‰C‰]ì‰ðƒà‹U Tƒâø‰U ‹Mè9Qv‰ÊU ‹‰‹A+E ‰B‹Eì‰ë
-‹Uè‹‹M쉋E 9Gsƒìh´hi:#hÍ8#èkƒÄ‹U )W‰ðë‰ö‰]ì‹…Û…Kþÿÿ‹?…ÿ…•ýÿÿ¸eô[^_]ÃU‰åƒì jÿjjj ÿu hÿuèýÿÿƒÄ ÉÐU‰åWVSƒì‹]ShÒ:#èeÌÿÿ‹3ƒÄ…ö„ƒìÿvÿvÿv‹F +FPÿv ÿvh`;#è5ÌÿÿƒÄ ƒ~uƒ~t‹F;Fsƒìjahä:#hà8#袃ă~t‹F;F rƒìjahä:#h@9#è}ƒÄ‹F +F9Fvƒìjahä:#h€9#è[ƒÄ¿‹^…Û„¾ƒì ÿ3ÿs‰ØCPSh ;#è—ËÿÿƒÄ ÷Ãtƒìjihä:#hÀ9#èƒÄöCtƒìjjhä:#hà;#èóƒÄƒ{wƒìjkhä:#hë:#èփă;t9wƒìjlhä:#h@:#趃Ä;^ rƒìjmhä:#h¶8#蚃Ä{‹…Û…BÿÿÿƒìWh;#èäÊÿÿƒÄ9~tƒìjshä:#h;#è`ƒÄ‹6…ö…cþÿÿƒì h2;#è®ÊÿÿƒÄeô[^_]ÍvU‰åWVSƒì ‹u‹] ‰ßƒçø…öuƒìjNh{7#h•8#è ƒÄ…ÛuƒìjOh{7#h<#èñƒÄƒ}uƒìjPh{7#hž8#èԃĉ؃à‹UTƒâø‰U‹ëv‹…ÛuƒìjXh{7#h<#螃ă{uƒ{t‹C;CsƒìjYh{7#hà8#èsƒÄƒ{t‹C;C rƒìjYh{7#h@9#èNƒÄ‹C +C9CvƒìjYh{7#h€9#è,ƒÄ;{‚hÿÿÿ;{ ƒ_ÿÿÿ‹EC‹C +C9Cvƒìjbh{7#h€9#èòƒÄÇEð‹sëv‰uð‹6…öt9þróƒ}ðtm‹Eð@9ørc9øtƒìjnh{7#h@<#諃ąöt8‹U:9ðr.9ðtƒìjuh{7#h€<#肃ċEF‹UðB‹‰ëE‹E‹UðBë9ƒ}ðt
-‹Eð‰8ëv‰{…öt‹U:9ðr‰ÐF‰G‹‰ë ‹E‰G‰7eô[^_]ÃU‰åƒì hÿu ÿuèÒýÿÿƒÄÉÐU‰å‹EÇ]ÉöU‰åWVSƒì ÇEèÇEìÇEð‹E‹0…ö„Zƒ~uƒ~t‹F;Fsƒìj]h¦<#hà8#蠃ă~t‹F;F rƒìj]h¦<#h@9#è{ƒÄ‹F +F9Fvƒìj]h¦<#h€9#èYƒÄÿEð¿‹^…Û„¨v÷Ãtƒìjdh¦<#hÀ9#è$ƒÄöCtƒìjeh¦<#hà;#èƒÄƒ{wƒìjfh¦<#hë:#èêƒÄƒ;t9wƒìjgh¦<#h@:#èʃÄ;^ rƒìjhh¦<#h¶8#讃ÄÿEì{‹…Û…[ÿÿÿ9~tƒìjnh¦<#h;#肃Ä‹FEè‹6…ö…§þÿÿƒì ÿuìÿuðÿuèÿuhÀ<#è¾ÆÿÿƒÄ eô[^_]ÍvU‰åVS‹u‹] EƒìPÿuhÀÓ#è…ÈÿÿƒÄhÀÓ#ÿ5Ü#jSVh@=#è5ƒÄ eø[^]ÍvU‰åƒìÿ5ìÛ#jÿuÿu ÿuh=#èƒÄ ÉÉöU‰åƒì E PÿuhÀ×#èÈÿÿƒÄ jjhx #èì%ÿÿƒÄhÀ×#h£=#èŠÅÿÿÇ$MèFÿÿƒÄÉÐU‰åƒìhÀ×#h€=#ècÅÿÿƒÄÉÉöU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)лÄÜ#‰]ð‹´ÃЃùÿtCI‰ÐÁà)Ð;´ÃÐr0»ÈÜ#‰Ï‰ÐÁà)ЋLÃPƒùÿtI‰ÐÁà)ЋUð;´ÂÐsՃÿÿt‰ÐÁà)ЋU‰ÅÝ#ë
-‰ö‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰ÅÝ#ë
-‹E‹U ‰B‹E@‰ÐÁà)ЍÅP‰ˆÈÜ#‰¸ÌÜ#ƒÄ[^_]ÍvU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)ÐÁà‹˜ß#‰U苀œß#‰Eìƒùÿtw ‰ÆȉÂÁâ)‹Eè‰Ã;՘ß#|[‰Eäv1‰ÐÁà)ЍÅ;š˜ß#u ‹Eì;‚œß#|1‰Ï‰ÐÁà)Ћ ÅÝ#ƒùÿt4 1‰ÐÁà)Ћ]ä;Řß#}«ƒÿÿt‰ÐÁà)ЋU‰ÅÝ#ë‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰ÅÝ#ë
-‹E‹U ‰B‹E@‰ÐÁà)ЍÅP‰ˆÈÜ#‰¸ÌÜ#ƒÄ[^_]ÍvU‰å‹EÇÿÿÿÿÇ@ÿÿÿÿ]ÍvU‰åWVS‹uv‰ÐÁà)ЍÅP‹˜ÌÜ#¿ÈÜ#‹ 8ƒûÿt[‰ÐÁà)ЉLÇPëv‹E ‰ƒùÿt&I‰ÁÁá)Á»ÌÜ#v‰ÐÁà)ЋDÃP‰DËPë v‹E ‰X[^_]ÐU‰åS‹M‹‰Øƒûÿt=‹@‰ÂÁâ)‹ÕÝ#‰ƒøÿt@‰ÐÁà)ÐÇÅÝ#ÿÿÿÿë
-vÇAÿÿÿÿ‰Ø‹$ÉÉöU‰åS‹M‹] ƒ;ÿt)I‰ÐÁà)Ћ‰ÅÝ#‹@‰ÂÁâ)‰ ÕÝ#됉KI‰ÐÁà)ÐÇÅÝ#ÿÿÿÿI‰ÐÁà)ÐÇÅÝ#ÿÿÿÿ‰ ‹$ÉÃU‰åS‹M‹] ƒ{ÿt,I‰ÐÁà)ЋS‰ÅÝ#‹C@‰ÂÁâ)‰ ÕÝ#ë‰ö‰ I‰ÐÁà)ÐÇÅÝ#ÿÿÿÿI‰ÐÁà)ÐÇÅÝ#ÿÿÿÿ‰K‹$ÉÃU‰å‹E‹]ÉöU‰å‹E‹@]ÐU‰å·Eƒøt ƒø…Àtë-ƒøtƒøtë ¸Á=#됸Æ=#됸Ê=#됸Ð=#됸‘.#]ÐU‰åWVSƒìœúX‰Â‰Uä÷Et$ƒìEèPjèL—ÿÿƒÄ ÿuìÿuèhà=#èeÁÿÿƒÄ÷EtN¾;5ðÛ#sA¿ Ü#vƒì µ‹;¶BP·BPRVh >#è!ÁÿÿƒÄ‹;VÿP ƒÄF;5ðÛ#rÇ÷Etƒì hû=#èõÀÿÿèX&ÿÿƒÄ‹Uä‰ÐPeô[^_]Éö(é"ðë"ðë"ðë"ðë"ðë"\ë"ðë"hë"të"ðë"€ë"€ë"€ë"€ë"€ë"€ë"€ë"€ë"€ë"€ë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"ðë"4é"Hé"´ê"tê"ôê"Pë"Hé"ðë"ðë"Dë"ðë"Pë"ðë",ê"ðë"ðë"Lê"ðë"”é"ðë"ðë"àé"Ôì"´î"´î"´î"´î"´î",î"´î"8î"@î"´î"Pî"Pî"Pî"Pî"Pî"Pî"Pî"Pî"Pî"Pî"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"´î"àì"ôì"´î"´î"´î" î"ôì"´î"´î"î"´î" î"´î"´î"´î"´î"ìí"´î"Dí"´î"´î"ˆí"Àñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"ï"ï"ï"ï"ï"ï"ï"ï"ï"ï"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Ìñ"Àï"Dð"@ñ"@ñ"@ñ"´ñ"Dð"Ìñ"Ìñ"¨ñ"Ìñ"´ñ"Ìñ"Ìñ"Ìñ"Ìñ"Øï"Ìñ"´ð"Ìñ"Ìñ"Ðð"$@$@$##ü#l#¼# #\#Œ##¤#0#¼#H#Ô#$#¬#8#Ä#P #Ü #P
-#l #œ #( #¬ #< -#À -#8#¤##|#à#,#p#”#°#Ì#è##„#ü#„#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#ä#$##ü#l#¼# #\#Œ##¤#0#¼#H#Ô#$#¬#8#Ä#P #Ü #P
-#l #œ #( #¬ #< -#À -#8#¤##|#à#,#p#”#°#Ì#è##„#ü#„#SIGNAL HANDLER: pid=%d
-main: ending...
-main: alarm(5), waiting t=2 sec
-main: alarm(3) return %d, waiting t=6 sec
-Error during Keyboard Initialization!!!Ctrl-C pressed!
-KeybPortKeyTasktask_create
-scheduletime %lus %luns * caplasttime %lus %luns * exec=%d TIME = %lu
-The system tick must be less than 55 mSec!Abort detected
-Code : %u
-Too many scheduling levels!!!
-Too many resource levels!!!
-debug info noticewarn err crit alert emerg <%i>[%s] %sPosix task
-Signal number %d...
-with value : %d
-POSIX_ReadyPOSIX_DelayPOSIX_UnknownSlice: %d
-MainPOSIX_register_level
- alloco descrittore %d %d
- lev=%d
-POSIX schedulerPid: %d Name: %20s Prio: %3ld Status: %s
-
-Panic!!! can't create main task...
-dummy PID: %d
-Dummy1Dummy2Dummy3Dummy4Dummy5Dummy6Dummy7Dummy8Dummy9Dummy0DummyaDummybDummycDummydDummyeDummyfDummygDummyhDummyDummy (RR) Posto dummy_create
-
-Panic!!! can't create dummy task...
-Entro in dummy_register_level
-Port des :
-Free port des : %d
-%d %s vt: %d pn: %d
-%d pd: %d vt: %d pn: %d Resources owned by the tasks:
-%-4dPI_register_module
-PI module
-PC priority of the tasks:
-%-4ldPC_register_module
-PC moduleTR %x
-SS:SP %x:%lx
-Stack0 : %x:%lx
-Stack1 : %x:%lx
-Stack2 : %x:%lx
-CS : %x DS : %x
-Descriptor [%x] InfoNo more Descriptors...
-%x (Hex)Base : %lx Lim : %lx Acc : %x Gran %x
-2Coprocessor error#Page fault*General protection fault*Stack exception*Segment not present*Unvalid TSS#INTEL reserved*Double defect1FPU context switch*Unvalid opcode#BOUND limit exceeded#Overflow detected on INTO#Breakpoint trap#NMI detected#Debug fault#Division by 0Exception %d occurred
-ABORT %d !!!LL Time Panic!!!
-time.cError! File:%s Line:%d %sOne-shot timer selected...
-Periodic timer selected...
-Unhandled Exc or Int occured!!!
-32/LINUX CrossCompiled/ELFHalt called1234567890-+12345678901234567890xabcdefABCDEF1234567890.e+-0123456789ABCDEF$@ -Æ@,ú1°<NaN+Inf-Infacosacosfacos: DOMAIN error
-asinasinfasin: DOMAIN error
-atan2atan2fatan2: DOMAIN error
-hypothypotfexpexpfy0fy0: DOMAIN error
-y1fy1: DOMAIN error
-ynynfyn: DOMAIN error
-lgammalgammaflgamma: SING error
-loglogflog: SING error
-log: DOMAIN error
-log10log10flog10: SING error
-log10: DOMAIN error
-powpowfpow(0,0): DOMAIN error
-pow(0,neg): DOMAIN error
-sinhsinhfsqrtsqrtfsqrt: DOMAIN error
-fmodfmodffmod: DOMAIN error
-remainderremainderfremainder: DOMAIN error
-acoshacoshfacosh: DOMAIN error
-atanhatanhfatanh: DOMAIN error
-atanh: SING error
-scalbscalbfj0j0f: TLOSS error
-j1j1fjnjnfneg**non-integral: DOMAIN error
-à?addfree.cmax >= minreg->min < reg->maxnew_max > new_min(reg->min & (sizeof(struct lmm_node) - 1)) == 0(reg->max & (sizeof(struct lmm_node) - 1)) == 0addregio.cr != reg(reg->max <= r->min) || (reg->min >= r->max)alloc.clmm != 0size > 0reg->free >= 0(DWORD)node < reg->maxreg->free >= size(reg->nodes == 0 && reg->free == 0) || (DWORD)reg->nodes >= reg->minreg->nodes == 0 || (DWORD)reg->nodes < reg->maxreg->free <= reg->max - reg->min((DWORD)node & (sizeof(struct lmm_node) - 1)) == 0((DWORD)node->size & (sizeof(struct lmm_node) - 1)) == 0(node->next == 0) || (node->next > node)alloc_ge.canode >= node(split_size & (sizeof(struct lmm_node) - 1)) == 0lmm_dump(lmm=%p)
-dump.cnode->size >= sizeof(*node) free_check=%08lx
-reg->free == free_checklmm_dump done
- region %08lx-%08lx size=%08lx flags=%08lx pri=%d free=%08lx
- node %p-%08lx size=%08lx next=%p
-(node->size & (sizeof(struct lmm_node) - 1)) == 0block != 0reg != 0(DWORD)prevnode + prevnode->size == (DWORD)node(DWORD)node + size == (DWORD)nextnodestats.cLMM=%p: %u bytes in %u regions, %d nodes
-assertion %s failed in %s at line %i (task:%i_%i)
-MAGIC assertion failed in %s at line %i (task:%i_%i): %s
-KERNEL PANIC (sys_panic_stub): %s
-KERNEL PANIC (sys_panic): %s
-FreeExeSleepWaiting on joinTime (EXACT) : %lus %luns
-< Memory Dump >
-< Level %d : %s Code: %d Version: %d >
-8Œÿÿ’ÏÿÿšÏÿHN#ÿ`Y#ÿÿÿÿÿÿÿÿÿÿÿÿ1234567890!@#$%^&*()-_=+[{]};:'"`~/?,<.>\|   - -1234567890.+*/-+*-aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ 1234567890!"œ$%&/()='?^Š‚+*•‡…ø\|<_,:.;—õ   - -1234567890.+*/-+*-aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ[]@#hV#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-.#&.#.#.#.#
-.#.#ü-#hy"py"py"S3#F3#83#'3# 3#ö2#æ2#Ò2#Ã2#³2#¦2#‘2#€2#f2#Z2#³2#G2#þþAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAš‡4#ðÿÿÿÿGCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)01.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.01.symtab.strtab.shstrtab.text.rodata.data.sbss.bss.comment.note"€%! %# &¨ )HN#È> /LY#àI5`Y#àI8ã :àILC,[h”aI
\ No newline at end of file
/pj/pse51/ptest5
Property changes:
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: pj/pse51/pinit.c
===================================================================
--- pj/pse51/pinit.c (revision 1344)
+++ pj/pse51/pinit.c (nonexistent)
@@ -1,126 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: pinit.c,v 1.1.1.1 2002-09-02 09:37:47 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:47 $
- ------------
-
- This is a minimal initialization file for the PSE51 profile.
-
- It initializes the POSIX scheduler, the Hartik Ports and the Keyboard driver.
-
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-
-#include "kernel/kern.h"
-#include "modules/posix.h"
-#include "modules/dummy.h"
-
-#include "modules/pi.h"
-#include "modules/pc.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-
-#include "drivers/keyb.h"
-
-#include "pthread.h"
-#include "time.h"
-
-
-/*+ sysyem tick in us +*/
-#define TICK 1000
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- POSIX_register_level(RRTICK, POSIX_MAIN_YES, mb, 32);
- dummy_register_level();
-
- PI_register_module();
- PC_register_module();
-
- SEM_register_module();
-
- /* for the Pthread library */
- PTHREAD_register_module(1, 0, 1);
-
- /* for the real time clock extensions */
- TIMER_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
- NRT_TASK_MODEL m; // the scheduling model for the Keyboard
-
- KEYB_PARMS k = BASE_KEYB;
- keyb_def_task(k, &m);
-
- nrt_task_default_model(m);
- nrt_task_def_arg(m,arg);
- nrt_task_def_usemath(m);
- nrt_task_def_ctrl_jet(m);
- nrt_task_def_save_arrivals(m);
- nrt_task_def_unjoinable(m);
- nrt_task_def_weight(m, sched_get_priority_max(SCHED_RR));
- nrt_task_def_policy(m,SCHED_RR);
- nrt_task_def_inherit(m,PTHREAD_EXPLICIT_SCHED);
- nrt_task_def_nokill(m);
- nrt_task_def_system(m);
-
- HARTPORT_init();
-
- if (KEYB_init(&k) < 0)
- kern_printf("Error during Keyboard Initialization!!!");
-
- __call_main__(mb);
-
- return (void *)0;
-}
Index: pj/pse51/ptest4.c
===================================================================
--- pj/pse51/ptest4.c (revision 1344)
+++ pj/pse51/ptest4.c (nonexistent)
@@ -1,151 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: ptest4.c,v 1.1.1.1 2002-09-02 09:37:47 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:47 $
- ------------
-
- Posix test 4:
-
- the main task create 3 tasks, J1, J2, J3
- at t = 1 sec. it raise a signal to J1
- at t = 2 sec. it kills J2
-
- J1,J2,J3: it simply calls nanosleep
-
- non standard function used:
- cprintf
- sys_gettime
- keyboard stuffs
- sys_end
-
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <sys/types.h>
-#include <pthread.h>
-#include <signal.h>
-#include <time.h>
-
-#include <kernel/kern.h>
-#include <drivers/keyb.h>
-
-void uscitaJ(void *arg)
-{
- cprintf("J: (pid=%d) AAAARRRRGGGHHH!!! killed by someone...\n", exec_shadow);
-}
-
-void *J(void *arg)
-{
- struct timespec t1, t2;
- int err;
-
- cprintf("J (pid=%d) starts and call nanosleep\n",exec_shadow);
-
- t1.tv_sec = 3;
- t1.tv_nsec = 0;
- NULL_TIMESPEC(&t2);
- pthread_cleanup_push(uscitaJ,NULL);
- err = nanosleep(&t1, &t2);
- pthread_cleanup_pop(0);
-
- cprintf("J (pid=%d) ending, nanosleep returns errno=%d, t2=%ld.%ld\n",
- exec_shadow, err, t2.tv_sec, t2.tv_nsec/1000);
-
- return 0;
-}
-
-void signal_handler(int signo, siginfo_t *info, void *extra)
-{
- cprintf("SIGNAL HANDLER: pid=%d\n",exec_shadow);
-}
-
-void fine(KEY_EVT *e)
-{
- sys_end();
-}
-
-
-int main(int argc, char **argv)
-{
- int err;
- pthread_t j1, j2, j3;
- struct sigaction sig_act;
-
- KEY_EVT emerg;
- //keyb_set_map(itaMap);
- emerg.ascii = 'x';
- emerg.scan = KEY_X;
- emerg.flag = ALTL_BIT;
- keyb_hook(emerg,fine);
-
- sig_act.sa_sigaction = (void *) signal_handler;
- sig_act.sa_flags = SA_SIGINFO;
- sigemptyset(&sig_act.sa_mask);
-
- sigaction(31, &sig_act, NULL);
-
- cprintf("main: creating J1\n");
- err = pthread_create(&j1, NULL, J, NULL);
- if (err) cprintf("Error creating J1\n");
-
- cprintf("main: creating J2\n");
- err = pthread_create(&j2, NULL, J, NULL);
- if (err) cprintf("Error creating J2\n");
-
- cprintf("main: creating J3\n");
- err = pthread_create(&j3, NULL, J, NULL);
- if (err) cprintf("Error creating J3\n");
-
- cprintf("main: waiting 1 sec\n");
- while (sys_gettime(NULL) < 1000000);
-
- cprintf("main: pthread_kill on j1, then wait until t=2 sec \n");
- pthread_kill(j1, 31);
-
- while (sys_gettime(NULL) < 2000000);
- cprintf("main: pthread_cancel(J2)\n");
- pthread_cancel(j2);
-
- cprintf("main: ending...\n");
-
- return 0;
-}
Index: pj/pse51/ptest6
===================================================================
--- pj/pse51/ptest6 (revision 1344)
+++ pj/pse51/ptest6 (nonexistent)
@@ -1,527 +0,0 @@
-ELF"4(4 ( €""H[H[ È[Hk#Hk# ðõ 덶°­üORäe‹Ká€uU¿€ Ç–eÆG1GeÆGGeÆG2GeÆG¸”#fe£hk#Áèfe£nk#Hs#¿€ Ç’eÆG0GeÆGf¸0ŽØŽÀŽÐŽàŽè¼`ž#ÇÐÛ%`~#ÇÔÛ%`ž#£Ts#‰Xs#Hs#êµ"8Ns#üè¢íê U‰å‹Eê ‰öU‰åSìŒÿuh€D#èAE„Pjd]ˆSÿ5L$èœ]ƒÄ Sÿu„PhÀD#èƒÄh,$ÿ5L$è_aƒÄ…Àtƒì謃Äÿ0h E#èéèÀAƒÄƒì h…H#èԃĐƒì jèòAƒÄ=?Bvìƒì h@E#è¯jj -hH#ÿ5L$è;XƒÄ …Àtƒìè@ƒÄÿ0hªH#è}èTAƒÄjhø"jhH$èêcjhä"jh$$è×cƒÄhÈH#èBƒÄ‹]üÉÉöU‰åSìh×H#è$E„Pjd]ˆSÿ5L$è\ƒÄ Sÿu„Ph E#èýÿÇ$ñH#èñÿƒÄ‰öƒì jèAƒÄ=_ãvìƒì hàE#èËÿjjh I#ÿ5L$èWWƒÄ …Àtƒìè\ƒÄÿ0h F#è™ÿèp@ƒÄƒì hI#è„ÿjjhI#ÿ5L$èWƒÄ …ÀtƒìèƒÄÿ0h@F#èRÿè)@ƒÄƒì hI#è=ÿjjhI#ÿ5L$èÉVƒÄ …Àtƒìè΃Äÿ0h`F#è ÿèâ?ƒÄƒì hI#èöþjj h I#ÿ5L$è‚VƒÄ …Àtƒì臃Äÿ0h€F#èÄþè›?ƒÄƒì hI#è¯þjjh,I#ÿ5L$è;VƒÄ …Àtƒìè@ƒÄÿ0h F#è}þèT?ƒÄƒì hI#èhþÇ$;I#è\þ¸ƒÄ‹]üÉÍvU‰åVSìœhJI#è7þƒÄƒì jèV?ƒÄ=¿‘!v썅tÿÿÿPjd]ˆSÿ5L$èxZSÿµtÿÿÿPhG#èöýƒÄ vƒì jè?ƒÄ=ÿž$v썅tÿÿÿPjd]ˆSÿ5L$è4ZSÿµtÿÿÿPhG#è²ýƒÄ vƒì jèÎ>ƒÄ=?¬'v썅tÿÿÿPjd]ˆSÿ5L$èðYSÿµtÿÿÿPhG#ènýƒÄ vƒì jèŠ>ƒÄ=¹*v썅tÿÿÿPjd]ˆSÿ5L$è¬YSÿµtÿÿÿPhG#è*ýƒÄ vƒì jèF>ƒÄ=¿Æ-v썅tÿÿÿPjduˆVÿ5L$èhYVÿµtÿÿÿPhG#èæüDžxÿÿÿè"Dž|ÿÿÿƒÄjè8@‰Ã‹‰E€…xÿÿÿ‰…tÿÿÿPjdVÿ5L$èYƒÄ VÿµtÿÿÿPhG#èü‹E€‰ƒÄ¸eø[^]ÍvU‰åSƒì<ÆEÉxÆEÊ-ÆEÈh@"ƒì‹EÈf‰$ÆD$-è˜ÇEô"ÇEð]èEì‰$輁ƒÄ jSjè§lÇ,$Ç0$Ç4$+ÇT$Ç\$ Ç`$Ø"Çd$$ƒÄÇ$Ç $Ç$Ç$Ç $Ç$ÇD$
-Ç$
-ÇEØÇEÜÇEàdEØPjjBhpI#è»K£L$ƒÄƒøÿuƒìèƒÄÿ0h€G#錍vƒìhT$ÿ5L$è[ƒÄ…Àtƒìè΃Äÿ0h G#ë[‰öƒì hàG#èÿújh"jhP$èt^ƒÄh H#èßúƒÄƒì jèþ;ƒÄ=ßg5vìƒì ÿ5$$èö_Ç$sI#è®ú¸ƒÄ‹]üÉÐU‰åƒìh`D#èújj hLH#ÿ5L$èRƒÄ …Àtƒìè!ƒÄÿ0hXH#ë ƒì hvH#èSú¸ƒÄÉÐU‰åƒìhÀF#è8úƒÄÉÍvU‰åSƒì‹] jèK;ƒÄPÿs ÿs¸dI#ƒ{t¸jI#Pÿ3h@G#èøùƒÄ ‹]üÉÃU‰åƒìèÁ:ÉÍvU‰åƒìj ÿujh'èý”è°žè7ÂèfÈèá®ƒÄ jjjèÃ^螌¸èƒÄÉÃU‰åWVSƒìX‹]}¨¾\s#ü¹ó¥E¸‰E¨fÇE¸ÇE¼ÇEÀfÇEÄÇEÐÇEÔÇEÜÇEà‰]ÈÇEØÇEÌjèü]‰EÐÇEÜÇEàƒMÌ
-膲E¨‰$ècƒÄ…Àyƒì h I#èkùƒÄƒì SèoE¸ƒÄeô[^_]ÍvU‰åƒìŠU€=lt#„¶€ú*t€úªt
-€ú6t€ú¶uÆlt#¸é›„Òy,Ælt#€ú¸uÆxt#Ænt#ëՀúuÐÆxt#ëljöÆlt#€ú8u€ -xt#Ænt#멀úu € -xt#뛉ö€ú5uf¾Ÿ#·Àé)v€ú…•f¾üž#·Àé -v€úàuÆlt#éTÿÿÿv€ú*t€ú6u2Æmt#€ú*u€ -xt#é/ÿÿÿ‰ö€ú6…$ÿÿÿ€ -xt# éÿÿÿv€úªt€ú¶u"Æmt#€úªt €ú¶…öþÿÿÆxt#éêþÿÿ€úFu€=qt#•qt#ë.v€ú:u€=ot#•ot#ëv€úEu;€=pt#•pt#ƒì¶qt#P¶ot#P¶pt#Pèõ¸ƒÄé€úu€ -xt#éhþÿÿv€ú8u€ -xt#éTþÿÿv€út€ú¸uÆxt#é;þÿÿ‰ö¸„҈рúRt2€úOt-€úSt(€úPt#€úQt€úKt€úLt€úMt€úGt
-€úHt€úIu€=pt#uT€=mt#uK·Â -ÿë~€=ot#t/Bð< vBâ<vBÔ<w€=mt#t¶Âf¾€àž#·ÀëG€=mt#t¶Âf¾€€Ÿ#·Àë-v€=nt#t¶Âf¾€  #·Àëv¶Âf¾€àž#·ÀÉÃU‰åWVSƒì,}؃ìjE×PèòƒÄ…À„¡ƒì ¶E×Pèöüÿÿ‰ÂƒÄf…Ò„†÷Âÿt  xt#ƒÈ@ë‰ö xt#ˆE؈UيE׈EÚ±»;؞#}8¾`ž#v݊D2:EÚuŠ2:EØuƒì Wÿ’dž#±ƒÄC;؞#|ЄÉuƒìjW¿¢ #Pè­·ƒÄè-é<ÿÿÿU‰å‹E£ht#Šˆâž#ŠPˆãž#ŠPˆäž#ŠPˆåž#ŠPˆæž#ŠPˆçž#ŠPˆèž#ŠPˆéž#ŠPˆêž#ŠP ˆëž#ŠP
-ˆ‚Ÿ#ŠP ˆƒŸ#ŠP ˆ„Ÿ#ŠP -ˆ…Ÿ#ŠPˆ†Ÿ#ŠPˆ‡Ÿ#ŠPˆˆŸ#ŠPˆ‰Ÿ#ŠPˆŠŸ#ŠPˆ‹Ÿ#ŠPˆìž#ŠPˆŒŸ#ŠPˆíž#ŠPˆŸ#ŠPˆúž#ŠPˆšŸ#ŠPˆûž#ŠPˆ›Ÿ#ŠPˆŸ#ŠPˆ§Ÿ#ŠPˆŸ#ŠPˆ¨Ÿ#ŠP ˆ Ÿ#ŠP!ˆ©Ÿ#ŠP"ˆŸ#ŠP#ˆµŸ#ŠP$ˆŸ#ŠP%ˆ³Ÿ#ŠP&ˆŸ#ŠP'ˆ´Ÿ#ŠP(ˆ Ÿ#ŠP)ˆ«Ÿ#ŠP*ˆŸ#ŠP+ˆ¹Ÿ#ŠP,ˆîž#ŠP-ˆŽŸ#ŠP.ˆïž#ŠÖˆŸ#ŠP0ˆáž#ŠP1ˆŸ#ŠP2ˆüž#ŠP3ˆœŸ#ŠP4ˆäŸ#ŠP5ˆϟ#ŠP6ˆП#ŠP7ˆџ#ŠP8ˆ˟#ŠP9ˆ̟#ŠP:ˆ͟#ŠP;ˆǟ#ŠP<ˆȟ#ŠP=ˆɟ#ŠP>ˆҟ#ŠP?ˆӟ#ŠP@ˆ.Ÿ#ŠPAˆŸ#ŠPBˆŸ#ŠPCˆ*Ÿ#ŠPDˆΟ#ŠPEˆ·Ÿ#ŠPFˆʟ#ŠPGˆþž#ŠPHˆžŸ#ŠPIˆŸ#ŠPJˆ°Ÿ#ŠPKˆŸ#ŠPLˆ®Ÿ#ŠPMˆŸ#ŠPNˆ Ÿ#ŠPOˆòž#ŠPPˆ’Ÿ#ŠPQˆŸ#ŠPRˆ¡Ÿ#ŠPSˆŸ#ŠPTˆ¢Ÿ#ŠPUˆŸ#ŠPVˆ£Ÿ#ŠPWˆ÷ž#ŠPXˆ—Ÿ#ŠPYˆŸ#ŠPZˆ¤Ÿ#ŠP[ˆŸ#ŠPRˆ¥Ÿ#ŠP]ˆŸ#ŠP^ˆ¦Ÿ#ŠP_ˆŸ#ŠP`ˆ²Ÿ#ŠPaˆŸ#ŠPbˆ±Ÿ#ŠPcˆøž#ŠPdˆ˜Ÿ#ŠPeˆùž#ŠPfˆ™Ÿ#ŠPgˆðž#ŠPhˆŸ#ŠPiˆóž#ŠPjˆ“Ÿ#ŠPkˆÿž#ŠPlˆŸŸ#ŠPmˆôž#ŠPnˆ”Ÿ#ŠPoˆöž#ŠPpˆ–Ÿ#ŠPqˆŸ#ŠPrˆ¯Ÿ#ŠPsˆñž#ŠPtˆ‘Ÿ#ŠPuˆ -Ÿ#ŠPvˆ­Ÿ#ŠPwˆõž#ŠPxˆ•Ÿ#ŠPyˆ Ÿ#ŠPzˆ¬Ÿ#ŠP{ˆ: #ŠP|ˆ; #ŠP}ˆG #Š@~¢H #]ÍvU‰åWVSƒì\‹]}ؾ€t#ü¹󥿸ƒ=tt#…Qº¾àž#¹€Ÿ#‰ö·ÂÆ0ÆBfúví…Ûu]؃{ÿuÇChs#ƒì ÿsèûÿÿÇ$jjjhÙI#èªf£¢ #ƒÄ fƒøÿu ¸þÿÿÿéÞ‰öjjjhÙI#èà­f£¤ #ƒÄfƒøÿuƒì ¿¢ #PèE±¸ýÿÿÿ頍vÇ؞#ƒ{ÿuÇC0"ƒ{tIÆE™cÆEš.ÆE˜ƒìÿsƒì‹E˜f‰$ÆD$.èÅÆE˜ƒÄÿsƒì‹E˜f‰$ŠEšˆD$襃ă;ÿuQfÇE¨ÇE¬ÇE°fÇE´ÇE¸ÇEÐÇEÈÐÇEÄ ÇEÀ¨aÇE¼
-ÇE̍E¨ë‹ƒì jjPh8 "hâI#èÿ‰ÃƒÄ ‰¨ #ƒøÿu'ƒì ¿¢ #PèC°¿¤ #‰$è4°‰Ø钐ƒ=|t#uWƒì ÿ5¨ #艉ǃąÿt4ƒì ¿¢ #Pèü¯¿¤ #‰$èí¯ƒÄÿ5¨ #èg5¸üÿÿÿë=Ç|t#ëèƒì¶qt#P¶ot#P¶pt#PèûÇtt#‰øƒÄeô[^_]ÃU‰åƒì¶EPEèP¿¤ #PèృÄ„Àt÷Eè@u¶Eéë‰ö¸ÉÐU‰åƒì ¶E Pÿu¿¤ #P襱·ÀƒÄÉÐU‰åSƒ=؞#0‹ -؞#Í»`ž#‹Ef‰ŠE
-ˆD‹E ‰‚dž#A‰ -؞#‹$ÉÉöU‰åƒìèÉÍvU‰åƒìè±ÉÍvU‰åƒì¸ÿÿÿÿƒ=tt#t9蓃ì ÿ5¨ #è-4¿¢ #‰$薮¿¤ #‰$臮¸ƒÄÉÐU‰åƒìjèêÇ$èÛéÇ$ÈI#è£éè²-ƒÄÉÐU‰åWVSƒìŠEˆEó¿1¾d»`‰ö¹v‰òì©t"‰ÈA=þÿÿvì¸ÿÿÿÿ…Àu‰ÚŠEóî¸ë‰ö¸ë搸ÿÿÿÿÇEì¹d…Àt¸ÿÿÿÿët¸ë‰Êì©uî‹EìÿEì=þÿÿvé¸ÿÿÿÿ…Àu‰Úì¶Àë¸ÿÿÿÿƒøÿu
-¸þÿÿÿë3v=úu ¸ë"‰ö=þt ¸ýÿÿÿë‰ö‰øO…À9ÿÿÿ¸üÿÿÿƒÄ[^_]ÃU‰åVSƒìŠEˆE÷³Ô¾¹d‰ö‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë -¸ë搸ÿÿÿÿ…Àt¸ÿÿÿÿëL¸ë&»¹d‰ö‰Êì©tâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àuº`ŠE÷î¸ëv¸ÿÿÿÿ…Àt¸ÿÿÿÿëj¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àuºdì© tº`ì¶Ðëvºÿÿÿÿ‰Ð…Òx¸úú”ÀDþƒÄ[^]ÃU‰åWVSƒì »¾`‰ØK…À~^ƒì hÿè¼ýÿÿ‰ÂƒÄ…Òu{¿¹d‰Êì©u‰øG=þÿÿvì¸ÿÿÿÿ…Àu‰òì¶Ðëv¸ëꐺÿÿÿÿúªu›¸üÿÿÿúª…ƃì hõèMýÿÿ‰ÂƒÄ…Òt(¸ûÿÿÿ馉ö¸ýÿÿÿ隉ö¸ë.¸ëZ³`¾¹d‰Êì©tډðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî³e¾¹dv‰Êì©t®‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØîƒì hôèªüÿÿ‰ÂƒÄ¸…Ò•ÀHƒàƒèeô[^_]ÃU‰åWVSƒì ¾»d¹`‰Úì©t -‰Êì‰ðF=þÿvé³­¾¹d‰Êì©„‚‰ðF=þÿÿvè¸ÿÿÿÿ…ÀuºdˆØî¾»d¹`‰Úì©t -‰Êì‰ðF=þÿv鳪¾¹d‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ë搸놐¸ÿÿÿÿ…Àt¸÷ÿÿÿéݐ¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àu º`ì¶Àë¸ÿÿÿÿƒøUt¸ÿÿÿÿ錸ë&³«¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸öÿÿÿé9¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àu º`ì¶Àë¸ÿÿÿÿ…Àt¸þÿÿÿé鐸ë&³®¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…À…<èzüÿÿ…À…Žƒì hóèIúÿÿƒÄ…Àt
-¸ùÿÿÿépƒì jè.úÿÿƒÄ…Àt¸øÿÿÿéU¸ë.ÆŒt#³©¾¹d‰Êì©tډðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸ôÿÿÿéù¸ë&»¹d‰ö‰Êì©uâ‰ØC=þÿÿvì¸ÿÿÿÿ…Àu º`ì¶Àë¸ÿÿÿÿ…Àt¸óÿÿÿ驐¸ë&³¨¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸õÿÿÿéU¸ë&³Ó¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸ðÿÿÿ鐸ë&³Z¾¹d‰Êì©tâ‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî¸ë¸ÿÿÿÿ…Àt¸ïÿÿÿ魐ƌt#ëBv¸ë^¹þÿ¾d»`‰òì¶ø÷Çt‰Úì¶À÷Ç tƒøZt»IƒùÿuÙ³§¾¹d‰Êì©tª‰ðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àté»þÿÿ‰ö¸ë:€=Œt#„þÆŒt#³¨¾¹d‰Êì©tΉðF=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt¸îÿÿÿ鱐¸ëvƒì hóèWøÿÿ‰ÃÇ$dèIøÿÿÃÇ$èè;øÿÿÃÇ$è-øÿÿÃÇ$çèøÿÿþ§ƒÄ¿¹dv‰Êì©t’‰øG=þÿÿvì¸ÿÿÿÿ…Àuºd‰ðî¸ë¸ÿÿÿÿ…Àt¸íÿÿÿë…ÛuÆŒt#¸eô[^_]ÃU‰åVS¡ t#…Àt¡ t#H£ t#¸é²¸ë6ƒ=˜t#uKŠœt#¾¹dv‰Êì©t҉ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØîÿ˜t#뤍v¸ë:ƒ=˜t#uGǘt#³ô¾¹d‰Êì©tΉðF=þÿÿvì¸ÿÿÿÿ…À…Xÿÿÿº`ˆØîéKÿÿÿ‰ö¸[^]ÍvU‰åWVSƒì ¡¤t#@£¤t#¾õ³Ô¿¹dv‰Êì©t"‰øG=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ë搸ë.¸ÿÿÿÿ…Àu0»¹d‰Êì©tډØC=þÿÿvì¸ÿÿÿÿ…Àuº`‰ðîœúX‰Çƒì hõè5õÿÿ‰ÃƒÄ…Ût¸ûÿÿÿéù‰ö¸ë1¾§ÇEð¹dv‰Êì©tڋEðÿEð=þÿÿvé¸ÿÿÿÿ…Àu ºd‰ðî¸ë¸ë=¸ëq¸ÿÿÿÿþ`ÇEð¹d‰Êì©t΋EðÿEð=þÿÿvé¸ÿÿÿÿ…Àuºd‰ðî¾eÇEð¹dv‰Êì©tš‹EðÿEð=þÿÿvé¸ÿÿÿÿ…Àuº`‰ðîƒì hôè;ôÿÿÃĉøPÆt#‰Øeô[^_]ÐU‰åWVSƒì ¸ÿÿÿÿ€=Œt#„ºœúX‰Æƒì hõèóóÿÿƒÄ…Àt(¸ûÿÿÿé—‰ö¸ë:¸ëf¸é“‰ö³`¿¹d‰Êì©tΉøG=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî³G¿¹dv‰Êì©t¢‰øG=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØ¿¹dv‰Êì©„rÿÿÿ‰øG=þÿÿvè¸ÿÿÿÿ…ÀuºdˆØî¸ë¸ÿÿÿÿ…Àt ¸îÿÿÿ鐃ì hôèÿòÿÿƒÄ…Àt¸Ûÿÿÿ飉ö¸ë:‰ðP¡¤t#@£¤t#¾ô³Ô¿¹d‰Êì©tΉøG=þÿÿvì¸ÿÿÿÿ…ÀuºdˆØî¸ë -¸ë.¸ÿÿÿÿ…Àu0»¹d‰Êì©tډØC=þÿÿvì¸ÿÿÿÿ…Àuº`‰ðîƍt#¸eô[^_]ÍvU‰åƒìÇÄ¡#ÇÀ¡#ƒ=”t#t!úè‹õÿÿ£t#Ç”t#û…Àtúèôÿÿû¡t#…Àuƒìÿuh'"jèÅf¸ƒÄÉÍvU‰åVS¡ t#@£ t#³õ¾¹d‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî¸ë -¸ë搸ÿÿÿÿ[^]ÍvU‰åVS¡ t#@£ t#³ô¾¹d‰Êì©t"‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî¸ë -¸ë搸ÿÿÿÿ[^]ÍvU‰åƒì‹MœúX‰Â¡À¡#@%ÿ£À¡#Š€À #ˆ‰ÐP€9úu è(úÿÿë‰ö¸ÉÐU‰åƒìƒ=¬t#t(Ç$¢#Ç ¢#Ç(¢#Ǭt#‹E£¨t#ƒ=”t#t!úèôÿÿ£t#Ç”t#û…Àtúèòÿÿû¡t#…Àu.¸ìÿÿÿ€=Œt#t ƒìjÿhX'"j è/eƍt#¸ƒÄÉÉöU‰åS‹MœúX‰Ã¡ ¢#@ƒà?£ ¢#ºà¡#ŠˆA¡ ¢#@ƒà?£ ¢#Šˆ¡ ¢#@ƒà?£ ¢#ŠˆA‰ØP¸‹$ÉÉöU‰åƒì€=t#tèäùÿÿƒì j è>eƍt#¸ƒÄÉÐU‰åƒìƒ=”t#t!úè óÿÿ£t#Ç”t#û…Àtúè™ñÿÿû¡t#…Àt¸ë¶Œt#ÉÍvU‰åVSŠEŠU€} t ƒ -œt#ë ‰öƒ%œt#„Àt ƒ -œt#ëƒ%œt#„Òtƒ -œt#ë¸ë6¸ëbƒ%œt#³õ¾¹d‰Êì©t҉ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØî³í¾¹dv‰Êì©t¦‰ðF=þÿÿvì¸ÿÿÿÿ…Àuº`ˆØîÿ˜t#[^]ÐU‰åSƒìœúX‰Ã€=t#tè–øÿÿè‘ðÿÿƒì hóèhîÿÿƒÄ…Àuƒì jèWîÿÿƒÄ…Àu‰ØP‹]üÉÍvU‰åº`ì¶ÈœúX‰Â¡À¡#;Ä¡#t¡Ä¡#ˆˆÀ #@%ÿ£Ä¡#‰ÐP]ÉöU‰åƒìº`ì¶Ðƒ=(¢#u €úúu¡¤t#H£¤t#郍v÷ÂÀuxÿ(¢#œúX‰Á¡ ¢#;$¢#t¡$¢#ˆà¡#@ƒà?£$¢#ë"‰ö¡$¢#+(¢#ƒÀAƒà?£$¢#Ç(¢#‰ÈPƒ=(¢#uÇ(¢#ƒì ÿ5¨t#èƒÄÉÉöU‰åSƒì}™w‹UÑâU‰ÐÁà)Ðfƒ<ň$uè©óNj¸ÿÿÿÿ鏐ƒ=$tcœúX‰Ã‹UÑâU‰ÐÁà)ЍÅ0ö€a$ t ÿ€d$ë-v‹EÑàE‰ÂÁâ)‹Õd$ƒì‹•À$ÿuRÿP@ƒÄ‰ØPéè3·…ÀtgœúX‰Ã‹UÑâU‰ÐÁà)ЍÅ0ö€a$ t ÿ€d$ë2v‹EÑàE‰ÂÁâ)‹Õd$ƒì‹•À$ÿuRÿP@蔃ĉØPé­úèúNjŒ$R‰ÑÁá)Ñ»`$f‰DË‹UÑâU‰ÐÁà)ЍÅ0öD t ÿ€d$ë?vƒìU‰ÐPjÿìt#‹MI‰ÐÁà)ЋÅd$ƒÄ‹•À$QRÿP@è/ƒÄ¡Œ$@‰ÂÁâ)ƒì ¿Õh$PèhÇèƒÄû¸‹]üÉÐU‰åWVSƒì ‹]f…Ûuèîñnj¸ÿÿÿÿé"‰öƒ=$„“œúX‰ÇÇEð}ð™s¾`$‹UðÑâUð‰ÐÁà)ÐÁàf9\,uHƒÀ0öD0 t ÿ€d$ë6ƒìEðPjÿìt#‹MðI‰ÐÁà)ЋÅd$ƒÄ‹•À$QRÿP@ƒÄÿEð}ð™~“‰øPé}‰öèCµ…À„›œúX‰ÇÇEð}ð™w¾`$‹Eð@‰ÂÁâ)Õf9\,uJƒÀ0öD0 t ÿ€d$ë8vƒìEðPjÿìt#‹MðI‰ÐÁà)ЋÅd$ƒÄ‹•À$QRÿP@ƒÄÿEð}ð™~èj‰øPéԐúèÒŋŒ$R‰ÑÁá)Ñf‰Íh$ÇEð}ð™w¾`$‹Eð@‰ÂÁâ)Õf9\,uJƒÀ0öD0 t ÿ€d$ë8v‹MðI‰ÐÁà)ЋÅd$ƒì‹•À$QRÿP@ƒÄEðPjÿìt#ƒÄÿEð}ð™~èÞ ¡Œ$@‰ÂÁâ)ƒì ¿Õh$PèÅèÁƒÄû¸eô[^_]ÃU‰åSƒìúèëċŒ$R‰ÑÁá)Ñf‰Íh$ƒìhD$j謃čUð¡H$;˜$|¡D$+”$‰Eð¡H$+˜$ë!‰ö¡D$+”$H‰Eð¡H$+˜$ʚ;‰B‹Mð ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ôºÓMb‰Ø÷êÁú‰ØÁø)ÂыŒ$R‰ÐÁà)Ð) Ŭ$ƒì Qè. ƒÄƒ=œ$ÿtƒì ÿ5œ$ÿh$Çœ$ÿÿÿÿƒÄ‹ -Œ$I‰ÐÁà)ЋÅd$ƒì‹…À$QPÿRLè{ ƒÄhŒ$jÿìt#ÇŒ$ÿÿÿÿÇ $ÿÿÿÿèV ¡Œ$@‰ÂÁâ)¿Õh$‰$è“Ãè:ƒÄû‹]üÉÐU‰åƒìhÜ-"èصƒÄÉÍvU‰åƒìjèõƒÄÉÉöU‰åƒìƒ=´t#u(èè
-ƒì ¡Œ$@‰ÂÁâ)¿Õh$Pè$ÃÄÉÍvU‰åWVSƒìhêI#è!6ƒÄ»`$ëv‹Eð@‰ÐÁà)ЁLÃ0€ƒì h$èzA‰EðƒÄƒøÿ„“@‰ÐÁà)ÐöDÃ1@u¾‹UðR‰ÃÁã)ÃÁã¾`$¡°t#‰3@£°t#‹E ‰Dƒìjÿuƒt$PèPÔÆD'ƒÃ fÇD3‹Mf‹%ÿf‰D3
-f‹A f‰D3 ƒÄ‰Ø‰ñº‹]ƒ{tf‹Sf‰T‹UðR‰ÁÁá)ÁÁáY0‹U‹B -‰ƒ`$¿d$Ç;¾h$¡Œ$@‰ÂÁâ)‹DÖ0‰3ºl$ǍAP‹]ð‰˜`$Ç8ÇÿÿÿÿÇ0ÿÿÿÿǁÀ$°Ç8Ç0ǁÁÀǁ`$Ç9ºۍƒ€ 
-Ç…Ä$Bƒúvì‹Eð@‰ÐÁà)ÐÁàÀǂh$ÿÿÿÿǂl$´$‰0$º‹Mðɍ€ ‰ö
-Ç…0$Bƒú~ì»ëC;$sƒì‹À$ÿuSÿPƒÄ…Àxß;$u7‹]ð[‰ÂÁâ)ÂfÇՈ$ƒìh$SèŠ?èQëDŽ鄉ö‹Eð@‰ÐÁà)Ѝ4ʼnžd$ƒì‹À$ÿuÿuðSÿP,ƒÄ…ÀyWfdžˆ$ƒìh$ÿuðè*?èñêDžë'èãêǃ釃ì ÿuðè9èÈêdž¸ÿÿÿÿƒÄëjƒE‹U‹zü…ÿtY‰ö¾ëF;5„$s0ƒìµ‹ƒ $WVÿP ƒÄ…Àxۃ싃 $WÿuðVÿP$ƒÄ;5„$t‡ƒE‹M‹yü…ÿu©‹Eðeô[^_]ÉöU‰åƒìEPÿuÿu ÿuè`üÿÿƒÄÉÍvU‰åWVSƒì ‹} ƒt6‹EÑàE‰ÂÁâ)‹G‰Õl$‰Æ‹UÑâU‰ÐÁà)Ѓ Ő$@ën‰öƒì ‹UÑâU‰ÐÁà)зŎ$Pè@‹UÑâU‰ÑÁá)Ñ»l$‰ˉƋEÑàE‰ÂÁâ)ƒÄƒ<Óuƒì ÿuèìè{éLjëtv‹EÑàE‰ÂÁâ)»`$·DÓ.ƃì ·GPjÿwVhÈ4"èÝ¢‰ÁƒÄ f…Éu?ƒì‹UÑâU‰ÐÁà)зDÃ.PVèƒÄÿuèvèélj¸ÿÿÿÿƒÄëN‹EÑàE‰ÂÁâ)Âf‰ Õh$ƒìU‰ÐPjÿìt#ƒÄöGu ÿ€$ëvöGuÿ@$¸eô[^_]ÍvU‰åWVSƒì ‹M‹U ‹]œúX‰ÇEPSRQè­úÿÿ‰ÆƒÄƒþÿ„ɍv‰ÐÁà)ЋÅd$‹…À$ƒx(„èà…À‰€»;„$svƒì‹ $VSÿP(ƒÄC;„$råv‰ÃÁã)ÃÁ㋃d$ƒì‹…À$VPÿR0fǃˆ$ƒÄh$Vè <ƒÄèÐçLJ‰øP¸ÿÿÿÿë#vƒìSVèŽýÿÿƒÄº…À”ÂJ ։øP‰ðeô[^_]ÃU‰åVS‹u»;„$svƒì‹ $VSÿP(ƒÄC;„$råv‰ÃÁã)ÃÁ㋃d$ƒì‹…À$VPÿR0fǃˆ$ƒÄh$Vè\;ƒÄeø[^]ÉöU‰åVS‹]è ƒì ¡Œ$@‰ÂÁâ)¾`$SÿTÖú‰$èn¡Œ$@‰ÂÁâ)¿DÖ‰$較čeø[^]ÃU‰åWVSƒì‹]‹}úû™w! [‰ÈÁà)ÈÁàº`$öD0tfƒ|(u û¸ÿÿÿÿéDžÿy$[‰ÁÁá)Á Í°¸d$‹<Çë ‰öƒÿv¿[‰ÁÁá)Á Í°‰Mä¹h$‰Mì‹Uä‹
-‰Â)úƒÂ‰Ð¾º÷ö‰Eð‹uä;tMۍƒ€4‹MðىÈÁà)ȍ Å°‰ö2‹…Ä$‹] ‰ƒÃ‰] B»‰Ðº÷ó‹]ì;uÔû‰øƒÄ[^_]ÐU‰åSƒì‹]‹ -Œ$I‰ÐÁà)ЍÅö‚$tɍ€È‚$…Ä$¡D$;”$|;”$uA¡H$;˜$}4ƒìSÿ5Œ$ÿ5˜$ÿ5”$ÿ5H$ÿ5D$hJ#èèËƒÄ è@ ‹]üÉÍvU‰åWVS‹ -Œ$I‰ÐÁà)ЍÅöƒ$„›ɍ€ȍ‹°h$ºd$‹t‚`‹”À¸l$94s‰4‹Œ$[‰ÁÁá)ÁÁፁÀ°`$¿d$B‰8±°‹†h$@º‰Ñº÷ñ‰–h$ۍƒ€ØÐÇD‡`ƒ<>wÿ>[^_]ÉöU‰åWVS‹M‹] ‹u‹}úù™w!I‰ÐÁà)ÐÁàº`$öD0tfƒ|(uû¸ÿÿÿÿëy…ÛtI‰ÂÁâ)‹Õ $‰…ötI‰ÂÁâ)‹Õ$‰…ÿtI‰ÂÁâ)‹Õ$$‰ƒ}t(ɍ€ȍ I‰ÊÁâ)ÊÕ$‹…Ä$‹U‰û¸[^_]ÉöU‰å‹Múù™w!I‰ÐÁà)ÐÁàº`$öD0tfƒ|(uû¸ÿÿÿÿë7I‰ÂÁâ)ÂÁ⍂Àǀ`$ǀd$ǂ$û¸]ÍvU‰åWVSƒì ƒ=Œ$ÿt¡Œ$@‰ÂÁâ)ÂöՐ$…3ƒ=Œ$ÿ„ƒìhD$jè]ŸƒÄUè¡H$;˜$|¡D$+”$‰Eè¡H$+˜$ë"v¡D$+”$H‰Eè¡H$+˜$ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыŒ$R‰ÐÁà)Ð) Ŭ$ƒì QènüÿÿƒÄƒ=œ$ÿtƒì ÿ5œ$ÿh$Çœ$ÿÿÿÿƒÄ‹ -Œ$I‰ÐÁà)Ћ<Åd$ƒì‹½À$QWÿP<ƒÄ¿4½ƒì ‹†À$WÿP$‰ÃƒÄƒûÿt%ƒì[‰ÐÁà)ЋÅd$‹…À$SPÿR4ƒÄ븅Àx»ƒûÿuG뫍v‹5Œ$‰ $‰Œ$[‰ÐÁà)Ð;Å°$t0»`$‰ö¡Œ$@‰ÂÁâ)‹TÓP‰Œ$ R‰ÈÁà)È;TÃPu×;5Œ$tƒìhŒ$jÿìt#ƒÄ‹ -Œ$I‰ÐÁà)ÐÁà¾`$fÇD(‹¸d$ƒì‹½À$‹ $¸;Œ$•ÀPQWÿS8¡Œ$@‰ÂÁâ)ƒÄöDÖ1„Ü¡ $;Œ$…Ë¡D$‰EèM行$@‰ÂÁâ)»l$‹DÓ@º@B‰Ö™÷þ’’’Áâ‰Ö5H$‰q¿¡/¸D‰ø÷î‰×Áÿ‰ð™‰þ)Ö¡Œ$@‰ÂÁâ)‹\Ó@ºƒÞC‰Ø÷êÁú‰ØÁø)2Eè‹AºÊš;‰Ó™÷û‰QjhôB"ÿuìÿuèÿ($‰ÃƒÄƒûÿuƒìÿ5Œ$jè«MƒÄ‰œ$¡D$£”$¡H$£˜$eô[^_]ÉöU‰åWVSƒìÇðÀ%úÿuèD»ƒÄ¿d$¾`$‰ö[‰ÂÁâ)ÂÁâÇ:ÿÿÿÿǂl$ÆDB fÇD0fÇD0
-fÇD0 fÇD0B0Ç0Ç8ǀh$ǀl$‚¤$Ç@Çǂ¬$BP‰0Ç8ÇD`DŽÐ‚8$Ç@Ǎ‚àÇ0ÿÿÿÿÇ8ÿÿÿÿ‚°Ç8ǀh$ǀl$ÂÀÇ2Ç:ºۍƒ€ v
-ÇD‡`Bƒúvï[‰ÐÁà)ЍÅÀǀh$ÿÿÿÿǀl$ºۍƒ€ 
-DŽ†ÐBƒú~ìCû™Žƒþÿÿ»¹h$[‰ÂÁâ)C‰DÑP‰Ãû˜~åÇ`¾%ÿÿÿÿ»™¹l$[‰ÂÁâ)Cÿ‰DÑP‰Ã…ÛéǼ$ÿÿÿÿÇ$Lj$Ç€$Ç@$Ç $ÿÿÿÿÇŒ$ÿÿÿÿÇœ$ÿÿÿÿǘ$Ç”$ǐ$Ç„$Ç$èÚè}èäGƒì ÿuèqÉÿÿ£$ƒÄ=×Övƒì h`J#èQ%Ç$è¹ÐƒÄ¸ƒ=$”À‰Eè]è¡$‰CÇðÀ%èj˜ƒì Sèa¢Ç$ˆC"èµÜÇ$È-"è1¤Ç$àB"èE¤ƒÄjjèEÿôt#ƒÄhD$jèü˜èOùÿÿ蚱f£$¡Œ$@‰ÂÁâ)¾`$¿DÖ‰$è±Ç$èç£ÿðt#ÇðÀ%ƒÄ»ƒ=ˆ$ŸÃSjèɃă=@$teè„ Ç´t#ƒìhD$jèk˜è±f£$è³øÿÿÇ$àB"èw£¡Œ$@‰ÂÁâ)¿DÖ‰$èç°Ç$èO£ƒÄÇðÀ%ƒìSjèCèr—ÇðÀ%ƒÄjjè(ƒÄúƒ=ˆ$t"ƒìÿ5ˆ$h‹J#èÂÇ$ÿÿÿÿèσăì jèû΃čeô[^_]ÃU‰åSƒìƒ=´t#…•èŸ…Àuúè5°‹Œ$R‰ÑÁá)Ñf‰Íh$‹E£ˆ$Ç´t#ƒ=Œ$ÿ„ƒìhD$jèG—ƒÄUð¡H$;˜$|¡D$+”$‰Eð¡H$+˜$ë ¡D$+”$H‰Eð¡H$+˜$ʚ;‰B‹Mð ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ôºÓMb‰Ø÷êÁú‰ØÁø)ÂыŒ$R‰ÐÁà)Ð) Ŭ$ƒì QèZôÿÿƒÄƒ=œ$ÿtƒì ÿ5œ$ÿh$Çœ$ÿÿÿÿƒÄ‹ -Œ$I‰ÐÁà)ЋÅd$ƒì‹…À$QPÿR<Ç $ÿÿÿÿÇŒ$ÿÿÿÿƒÄ謝…Àtƒì ¿$PèÜ®ƒÄëvƒì ¿$PèÄ®èkƒÄû‹]üÉÉöU‰åSƒìÇEøÿÿÿÿ»ºÀ$¡À$ƒx(t1ƒì‹šUøRSÿP(ƒÄ…Àu¸ÿÿÿÿëCƒûwºÀ$‹šƒx(uи‹]üÉÉöU‰åƒìè èÈ@ÉÉöU‰åƒìÇœ$ÿÿÿÿè§êÿÿÉÐU‰åSƒìœúX‰Ãƒ=ðÀ%tƒ=@$t‰ØPëƒì jè–ýÿÿƒÄ‰ØP‹]üÉÉöU‰åƒìÿuèzýÿÿƒÄÉÐU‰åSƒì‹UœúX‰ÃƒìRjè
-•‰ÂƒÄ‰ØP‰Ð‹]üÉÉöU‰å¸ˆ$ƒ=Œ$ÿt‹Œ$R‰ÐÁà)ЍÅÀ$]ÉöU‰åSƒìœúX‰Ãƒ=ðÀ%tƒ=@$t‰ØPëƒì ÿuèíüÿÿƒÄ‰ØP‹]üÉÐU‰å]ÍvU‰åWVSƒì ÇEðÇE컍[ …ƒ¹H¢#t[¿@¢#ƒ<9tP‹Œ$ҍ‚€Ð؍…о`$ƒ<0t+ûƒì ÿ40ÿ9ƒÄú‹Œ$ҍ‚€Ð؋´†Ð uìCƒû~Œƒ}ìt -ÿEðƒ}ðŽmÿÿÿeô[^_]ÐU‰åVSº¾@¢#»D¢#¹H¢#vRÁàÇ0B‰Çƒú~ãÇ8¨#ÿÿÿÿÇ@¨#ÇH¢#Ç@¢#ÇD¢#ÿÿÿÿ[^]ÐU‰åS‹Múƒ=@¨#ÿu û¸ ënv¡@¨#@Ç•H¢#‰¡@¨#@‹…D¢#£@¨#‹@‹U ‰…@¢#º»`$‰öҍ‚€ÐDŽƒÐBú™~ßû¸‹$ÉÃU‰åú¡Œ$À’ÂU‹•0$û]ÍvU‰å‹Múƒùw -Iƒ<…H¢#u û¸ë%v¡Œ$À’ÂʋE ‰•0$û¸]ÃU‰åS‹]œúX‰Áƒûw -[ƒ<…H¢#u‰ÈP¸ë.v[Áà‹@¨#‰D¢#ǀH¢#‰@¨#‰ÈP¸‹$ÉÃU‰åWVSƒì ¡Œ$‰Eð‰ÂÑâ‰ÐÁà)ЍÅ¿`$öD0 tm‹E‰‚,$‹UðÑâUð‰ÐÁà)ЁLÇ0@‹UðÑâUð‰ÐÁà)ЍÅÀºh$ƒ<ÿt,‹4v‰ÃÁã)ÃÁ㋃d$ƒì‹…À$VPÿRD‰tPƒÄ¹»`$;MðtI‰ÐÁà)ЋUð9TÃP„ˆAù™~ۋUðÑâUð‰ÐÁà)Ѓ<Å´$t[»d$ûƒì ‹UðÑâUð‰ÐÁà)ЋDÃPÿpÿƒÄú‹EðÑàEð‰ÂÁâ)ÕP‹‹@‰‹UðÑâUð‰ÐÁà)Ѓ|ÃPu«èJüÿÿƒì ‹EðÑàEð‰ÂÁâ)»`$¿DÓP脏ƒÄEðPjÿìt#‹Eð@‰ÂÁâ)ՃÄöD0@u%ƒì·D.P‹Eð@‰ÂÁâ)Âÿ4Õl$èÁ ƒÄ»;„$sƒì‹ $ÿuðSÿP(ƒÄC;„$rã‹MðI‰ÐÁà)ЋÅd$ƒì‹…À$QPÿRPÇŒ$ÿÿÿÿÇ $ÿÿÿÿ‹Eð@‰ÂÁâ)ƒÄöՐ$u&ÿ -€$ƒ=€$uBèZúÿÿë;ƒìRjè AƒÄëg‹Eð@‰ÂÁâ)ÂöՐ$uÿ -@$ƒ=@$uèúÿÿƒìhD$j肏ƒÄƒ=œ$ÿtƒì ÿ5œ$ÿh$Çœ$ÿÿÿÿƒÄè­ïÿÿeô[^_]ÐU‰åVS‹uúv‰ÐÁà)ÐÁàº`$öD0ufƒ|(uèÒNJû¸ÿÿÿÿ麍v‰ÐÁà)Ðöő$tû雉ö;5Œ$uJv‰ÐÁà)л`$‹DÃ0©t0©u)ƒì jè¥üÿÿ¡Œ$@‰ÂÁâ)¿DÓ‰$èU§ƒÄ»ëvC;¸t#}ƒìÝÿ°d¨#Vÿ`¨#ƒÄ…Àtٍv‰ÐÁà)Ё Ő$û¸eø[^]ÍvU‰åWVSƒì ‹Ef‰Eòf…Àuè’Ñnj¸ÿÿÿÿé‰öú¡ $@‰ÂÁâ)Âf‹Mòf; Ռ$”Eñ¾¿`$‰öv‰ÐÁà)ÐÁà‹T0÷Â…ˆƒÀ fƒ|8t}÷Âuuf‹Mòf9L8 uj;5Œ$u!÷Ât÷Âuƒì jè{ûÿÿƒÄëC‰ö»ëC;¸t#}ƒìÝÿ°d¨#Vÿ`¨#ƒÄ…Àtٍv‰ÐÁà)ЁLÇ0Fþ™ŽNÿÿÿ€}ñt(ƒì ¡ $@‰ÂÁâ)¿Õh$PèÌ¥ƒÄëvû¸eô[^_]ÉöU‰åWVSƒì ¾¿`$v‰ÐÁà)ÐÁàfƒ|(tL÷D0
-uB»ë‰öC;¸t#}ƒìÝÿ°d¨#Vÿ`¨#ƒÄ…Àtٍv‰ÐÁà)ЁLÇ0Fþ™~–eô[^_]ÉöU‰åSƒì¡Œ$@‰ÂÁâ)»`$‹DÓ0©t7©u0©t)ƒì jè"úÿÿ¡Œ$@‰ÂÁâ)¿DÓ‰$èÒ¤ƒÄ‹]üÉÉöU‰åS‹M‹] ¡¸t#ʼnŠ`¨#‰šd¨#@£¸t#‹$ÉÍvU‰åƒìúÿuè½ùÿÿ¡Œ$@‰ÂÁâ)¿Õh$‰$èj¤ƒÄÉÐU‰åVS¶uœúX‰Ãƒ=”«#ÿuèøÎǂ‰ØP¸ÿÿÿÿéۋ -”«#‰ÊÁâ‹‚ ©#£”«#‹E‰‚©#‹E ‰‚©#‰ðƒà‰‚©#‰ðƒàƒøtOƒø
-ƒøt -ësvƒøtSëi‰ÈÁàǀ ©#ÿÿÿÿƒ=€«#ÿu‰ -€«#ë¡„«#Áà‰ˆ ©#‰ -„«#ëH‰ö‰ÊÁ⡈«#‰‚ ©#‰ -ˆ«#ë.‰ÊÁâ¡Œ«#‰‚ ©#‰ -Œ«#ë‰ÊÁ⡐«#‰‚ ©#‰ -«#‰ØP¸[^]ÐU‰åƒìƒ=$uƒì hÀJ#èPÇ$è¸ÁƒÄ¡$P‰$ÉÐU‰åƒìƒ=„$uƒì hßJ#èÇ$è|ÁƒÄ¡„$P‰„$ÉÐU‰åWVS‹E‹u ‹}»‹HÇöt<€9t5‹ ‰‡€: t€:t‰öC€< t€< uó€< uÆ Cÿ€< uÌÿ[^_]ÐU‰åWVSì¬‹EµTþÿÿ½Xþÿÿ»‹HDžTþÿÿöt<€9t5‹ ‰‡€: t€:t‰öC€< t€< uó€< uÆ Cÿ€< uÌÿƒì…XþÿÿPÿµTþÿÿèy¶ÿÿƒÄeô[^_]ÉöU‰å¸¹ ©#v‰ÂÁâ@‰
-ƒø&~òÇ|«#ÿÿÿÿÇ€«#ÿÿÿÿÇ„«#ÿÿÿÿLj«#ÿÿÿÿÇŒ«#ÿÿÿÿǐ«#ÿÿÿÿÇ”«#]ÉöU‰åWVSƒì ‹E‹} ƒøt4ƒø ƒøtéЃøt3ƒøtB鳐‹€«#Ç€«#ÿÿÿÿë:‰ö‹ˆ«#Lj«#ÿÿÿÿë&‰ö‹Œ«#ÇŒ«#ÿÿÿÿë‰ö‹«#ǐ«#ÿÿÿÿÇ$ƒûÿtM¾ ©#…ÿt‰ØÁàƒ¸©#uƒì ‰ØÁàÿ°©#ÿ©#ƒÄ‰Ù‰ØÁà‹0‰Â¡”«#‰2‰ -”«#ƒûÿu¸Ç$eô[^_]ÉöU‰åƒìEüPEøPEôPEðPèùœÇ$ «#èuéƒÄjjhÿÿjh¤«#h «#è ßƒÄjjhÿÿÿhhÀ«#h «#è€ßƒÄjjhÿÿÿþhhÜ«#h «#è`៎ ƒ}ütƒì‹EüHPÿuøh «#è*ރă}ôtƒìÿuôÿuðh «#èރÄÉÐU‰åƒì‹E…Àu¸ëƒìjPh «#è¸ßƒÄÉÍvU‰åƒìÿuÿuÿu ÿuh «#èháƒÄ ÉÍvU‰åƒì ÿuÿuÿuÿuÿu ÿuh «#èbáƒÄ ÉÐU‰åƒì ÿu ÿuh «#èæƒÄÉÐU‰åƒìÿuh «#èýãƒÄÉÃU‰åƒìÿuh «#èýçƒÄÉÃU‰åƒì jÿuh «#è߃ÄÉÉöU‰åƒì ÿu ÿuh «#è®åƒÄÉÐU‰åƒìh «#è¼ãÇ$ «#èÐçƒÄÉÍvU‰åWVSƒì ¾ú»ë‰öCƒû/ۍCÁàö€¬#tèƒìÿ°¬#ÿuèo°ƒÄ…Àuо…öt#} ÀuèýÈÇûéِû‰ØéÕ÷E @uèÚÈÇû鶉ö÷E uè¾ÈÇ -û隉ö‹u‹=0³#ƒÿÿ„zƒì ÿuèK°@‰$èþÿÿÿWÁ⹬#‰
-ƒÄ…ÀuèmÈÇûéIƒìÿuÿG…ÿ³¬#è:¯ƒÄ…öt‹F‰ƒ¬#‹F‰ƒ ¬#ë vÿGÁàǀ¬#
-ǀ ¬#€ƒì ÿG…ƒ8¬#P臍ƒ@¬#‰$èyCº¬#ǹ¬#ÇÿÿÿÿÇD ƒÄ÷E t
-Ç ëÿGÇ…¬#ƒì ÿG4…‹†¬#¯† ¬#PèôüÿÿV‰‚¬#ƒÄ…Àu0ƒì ÿuè -¯ƒÄ@Pÿ¶¬#èAýÿÿè@ÇǃÄûéƒì ÿG…‹ƒ¬#@ÁàPè’üÿÿs‰† ¬#ƒÄ…ÀuNƒì ÿuè«®ƒÄ@Pÿ³¬#èßüÿÿƒÄ‹ƒ¬#¯ƒ ¬#Pÿ¶¬#èÃüÿÿèÂÆǃÄû雍v»ý‰ÁøGº¬#‰Uð‹‚ë+‰Î7WÁâ‹‚¬#‰Eì [C‹]ì‰D‹‰Ã‰ñ‹uð‹2H9Ã|ЍÿWÁ⾬#‹2@‹Š¬#ÇDüÿÿÿÿǂ ¬#‹D@£0³#û‰øë‰öèÆÇû¸ÿÿÿÿeô[^_]ÍvU‰åWVSƒì úƒ}w‹UҍBö…¬#uèàÅÇ û¸ÿÿÿÿ重vƒì ‹EÀXÁ㾬#ÿ43èh­ƒÄ@Pÿ43èŸûÿÿƒÄ¾¬#‹3¯ƒ ¬#P{ÿ47èûÿÿƒÄ‹3@ÁàPÿ· ¬#èiûÿÿǃ¬#¡0³#‰D@‹U‰0³#ƒÄû¸eô[^_]ÃU‰åWVSƒì ‹}»ú¾öFÁàö€¬#tƒìÿ°¬#Wè[¬ƒÄ…Àu»Fƒþ~ͅÛ„…ƒì W蜬ƒÄ@Pö^Áãÿ³¬#èÇúÿÿƒÄ‹ƒ¬#¯ƒ ¬#P{ÿ·¬#è¨úÿÿƒÄ‹ƒ¬#@ÁàPÿ· ¬#èúÿÿǃ¬#¡0³#‰ƒH¬#‰50³#ƒÄû¸ëvècÄÇû¸ÿÿÿÿeô[^_]ÍvU‰åWVSƒì‹}ÇEìÿÿÿÿÿG…‹ˆ¬#‹€ ¬#‰Eä‹U R‹]䋃‰EðƒùÿtBý‰Eà ‰ÆÈë'‰ö‰Mì‹UàG‹…¬#1‹Lƒƒùÿt4 1‹Uð;ƒvӃ}ìÿtÿG‹…¬#‹]ì[‹] ‰\‚됍ÿG‹U ‰…¬#ÿG‹…¬#‹] [‰L‚ƒÄ[^_]ÐU‰åVS‹][‰ÐÁà)Ѝ4Åfƒ¾ˆ$ uƒì‹Ýd®#ÀP•8¬#ë2[‰ÐÁà)Ѝ4Åfƒ¾ˆ$
-u=ƒì‹Ýd®#ÀP•@¬#RS賋–d$ƒÄ‹•À$SRÿPD¸ƒÄ븍eø[^]ÃU‰åVS‹][‰ÐÁà)Ѝ4Åfƒ¾ˆ$ u)¡Œ$ÇÅ`®#ƒì‹Ýd®#ÀP•8¬#ëB[‰ÐÁà)Ѝ4Åfƒ¾ˆ$
-uM¡Œ$ÇÅ`®#ƒì‹Ýd®#ÀP•@¬#RSèó‹–d$ƒÄ‹•À$SRÿPD¸ƒÄ븍eø[^]ÃU‰åWVSƒìLèÞ;úƒ=¼t#t+Ǽt#ƒìjhpX"èkòÿÿƒÄjhY"è0ƒÄƒ}w‹UҍBö…¬#uè³ÁÇ û¸ÿÿÿÿéV‰ö‹MɍA‹U;… ¬#vè†ÁÇZû¸ÿÿÿÿé)ƒ} vèiÁÇû¸ÿÿÿÿé ‹MɍAÁàƒ¸ ¬#ÿ…Ïö€¬#tè1ÁÇ û¸ÿÿÿÿéÔ¡Œ$ÇÅ`®#ƒìhD$jè}ƒÄUÀ¡H$;˜$|¡D$+”$‰EÀ¡H$+˜$ë"v¡D$+”$H‰EÀ¡H$+˜$ʚ;‰B‹MÀ ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ĺÓMb‰Ø÷êÁú‰ØÁø)ÂыŒ$R‰ÐÁà)Ð) Ŭ$ƒì Qè®ÚÿÿƒÄƒ=œ$ÿtƒì ÿ5œ$ÿh$Çœ$ÿÿÿÿƒÄ‹ -Œ$I‰ÐÁà)ЋÅd$ƒì‹…À$QPÿRH‹ -Œ$I‰ÐÁà)л`$fÇDÃ( ƒÄ‹UҍB…8¬#PQèf -ÇŒ$ÿÿÿÿÇ $ÿÿÿÿèµÜÿÿ¡Œ$@‰ÂÁâ)¿DÓ‰$èõ”èt'ès9¡Œ$ƒÄƒ<Å`®#t脿Çû¸ÿÿÿÿé'v‹MɍA…z ¹¬#‹‰E´B‹˜ ¬#‹u´v‹T“‰ÿ‹UҍB‰÷¯<… ¬#<…¬#‹MÁé‹u ‹Eüó¥¨tf¥¨t¤ҍB<…_¹ ¬#‹ ‹u´vÁà‹u‰4‹ ‹M‰Lƒìÿu´ÿuèzúÿÿƒÄƒ»¬#…dƒì ‡@¬#Pè׉ƃăþÿtqèܓ‹Œ$R‰ÑÁá)Ñ»`$f‰Dˍv‰ÐÁà)ЋÅd$ƒì‹…À$VPÿRDèMÛÿÿ¡Œ$@‰ÂÁâ)¿DÓ‰$荓è4åÿÿƒÄûéލv‹uöF…¹¬#‹
-©„·ƒàû‰
-B ƒ<ujÿ° ¬#ÿ°¬#jè•鋋UҍBÁàP ¹¬#ƒ<
-utƒÀ0ƒ<tÿ² ¬#ÿ²¬#ÿ4ëNÇEÈÇEÌÇEÐÇEÔÇEØÇEÜÇEà‹MɍAÁà,¬#Rÿ°0¬#EÈPE¼Pè)ƒÄû¸eô[^_]ÃU‰åWVSƒì,‹} è 7úƒ=¼t#t+Ǽt#ƒìjhpX"è˜íÿÿƒÄjhY"è1+ƒÄƒ}w‹UҍBö…¬#uèà¼Ç û¸ÿÿÿÿékv‹UҍB‹U;… ¬#vè²¼ÇZû¸ÿÿÿÿé=‹UҍBÁຬ#ƒ|ÿ…ÐöDtèx¼Ç û¸ÿÿÿÿév¡Œ$ÇÅ`®#ƒìhD$jèáxƒÄUè¡H$;˜$|¡D$+”$‰Eè¡H$+˜$ë"v¡D$+”$H‰Eè¡H$+˜$ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыŒ$R‰ÐÁà)Ð) Ŭ$ƒì QèòÕÿÿƒÄƒ=œ$ÿtƒì ÿ5œ$ÿh$Çœ$ÿÿÿÿƒÄ‹ -Œ$I‰ÐÁà)ЋÅd$ƒì‹…À$QPÿRH‹ -Œ$I‰ÐÁà)о`$fÇDÆ(
-ƒÄ‹UҍB…@¬#PQèªÇŒ$ÿÿÿÿÇ $ÿÿÿÿèù×ÿÿ¡Œ$@‰ÂÁâ)¿DÖ‰$è9è¸"è·4¡Œ$ƒÄƒ<Å`®#tèȺÇû¸ÿÿÿÿéSv‹UҍB‹…¬#ҍBÁຠ¬#‰Þ¯4°¬#‹‰ÁÁéüó¥¨tf¥¨t¤‹UҍBÁà‰E܉ƃƹ¬#ÿ‹† ¬#‰Eà[<•‹T8‰–¬#‹U܃ ‰U܋
-‹Uà‰D:‹E܉ƒ}t‹† ¬#‹8‹U‰‹UҍB<…‹¬#[‹D‘‰Eäƒì ‡8¬#Pè
-‰ÆƒÄƒþÿtm菋Œ$R‰ÑÁá)Ñ¿`$f‰Dύv‰ÐÁà)ЋÅd$ƒì‹…À$VPÿRDè…Öÿÿ¡Œ$@‰ÂÁâ)¿D׉$èŎèlàÿÿƒÄûë‰öû‹Eäeô[^_]ÃU‰åVS‹U‹] úƒúwҍBö…¬#uè6¹Ç û¸ÿÿÿÿëwҍB …¾¬#‹1©t$…Ûu ƒàû‰1ûëIvè÷¸Çû¸ÿÿÿÿë8ҍBÁàƒˆ¬#$¬#‹‰‹S‰P‹S‰P‹S ‰P ‹S‰Pû¸[^]ÐU‰åSƒì‹]‹MúƒûwۍCö…¬#uè„¸Ç û¸ÿÿÿÿëd‰ö…Ét2ۍCÁà‹¬#â‰‹¬#‰Q‹ ¬#‰Q‹€¬#‰A  ۍ KÁỬ#‹%ÿ÷ÿÿ‹U ‹â Љû¸‹]üÉÐU‰åƒì‹U‹M úƒúwҍBö…¬#uèå·Ç û¸ÿÿÿÿë;vҍBÁà‹¬#â‰‹¬#‰Q‹ ¬#‰Q‹€¬#‰A û¸ÉÉöU‰åWVSƒì} ‹uEðPh4K#V詉Ãăûuƒ}ðvÇEðƒÆë ‰öÇEð‹Eðº;Àt#~hƒìWVh@³#èòŸƒÄj
-Vè7ŸƒÄ»…À•ÃœúX‰Æƒìh@³#‹Eðÿ4…Ät#h9K#èIƒÄ…Ûuƒì hÜK#è5ƒÄ‰ðPº‰Ðeô[^_]ÍvU‰åVSƒìu ‹]EôPh4K#Sèû¨ƒÄƒøuƒ}ôvÇEôƒÃëÇEô‹Eôº;Àt#~JƒìVSh@³#è.ŸƒÄj
-SèsžƒÄœúX‰Ãƒìh@³#‹Eôÿ4…Ät#h9K#菜ƒÄ‰ØPº‰Ðeø[^]ÉöU‰åVSƒì@‹u‹] ‹EfÇEÈÇEÌÇEÐfÇEÔÇEàÇEäÇEìÇEð‰EØÇEÜÇEè…ÛtT‹C‰E̋C‰EЃ{u
-ÇEÜ1됃eÜߋC ‰EàÇEÀƒì ÿ5@·#è;ƒÄ+C ‰EċC‰Eì‹C‰EðëD‰öÇEÌÇEЃMÜ ÇEàÇEÀƒì ÿ5@·#èÎ:ƒÄ‰EÄÇEìÇEðè5µ‹ƒì jEÀPEÈPÿuhAK#è}Ìÿÿ‰ƒÄ ƒøÿt ƒì Pè.ÁÿÿƒÄèþ´‰¸ƒ>ÿ”ÀHƒàêƒÀeø[^]ÍvU‰åƒìÿ5@·#èO:ƒÄÉÉöU‰åƒìÿ5@·#èO:ƒÄÉÉöU‰åƒìÿ5@·#èg9ƒÄÉÉöU‰å‹E‹U ‹M£@·#‰D·#‰ -H·#]ÐU‰åVS‹]èk´‹0ƒì Sè°áÿÿ‰ÃèY´‰0ƒÄ¸…Û•À@eø[^]ÃU‰åƒìúÿuÿu ÿuÿ5@·#èÕ9ƒÄûÉÍvU‰åWVSƒì ‹}‹uúÿ6ÿu Wÿ5@·#èk7‰ÃƒÄ…Ûu#ƒìÿ5@·#èd9ƒÄ+PWÿ5H·#èRjƒÄû‰Øeô[^_]ÃU‰åSƒì ‹] SÿuèiƒÄÿ5@·#è#9ƒÄ+‰¸‹]üÉÉöU‰åVSƒì‹u‹] …Ûtƒ;uÇEôƒìEôPë7ƒ;uÇEðƒìEðPë!vÇEèƒì jè_þÿÿ+CUè‰BƒÄRVè@.ƒÄeø[^]ÉöU‰åWVSƒì‹u ‹}ÇEðÿ5@·#è8‰ÃƒÄ9Þƒþ} ¸ëG‰öƒì ÿuè¡.ƒÄ W‰Ø)ðPÿuèøhƒÄ…ÀtÇEð…ÿt‰Ø+‰ƒì ÿuèÅ.‹EðƒÄeô[^_]ÍvU‰åƒì‹Eúƒ8u -ÇûÿU ëû¸ÉÃU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)лd$‰]ð‹´ÃЃùÿtCI‰ÐÁà)Ð;´ÃÐr0»h$‰Ï‰ÐÁà)ЋLÃPƒùÿtI‰ÐÁà)ЋUð;´ÂÐsՃÿÿt‰ÐÁà)ЋU‰Ÿ$ë
-‰ö‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰ż$ë
-‹E‹U ‰B‹E@‰ÐÁà)ЍÅP‰ˆh$‰¸l$ƒÄ[^_]ÍvU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)ÐÁà‹8$‰U苀<$‰Eìƒùÿtw ‰ÆȉÂÁâ)‹Eè‰Ã;Õ8$|[‰Eäv1‰ÐÁà)ЍÅ;š8$u ‹Eì;‚<$|1‰Ï‰ÐÁà)Ћ Ÿ$ƒùÿt4 1‰ÐÁà)Ћ]ä;Å8$}«ƒÿÿt‰ÐÁà)ЋU‰Ÿ$ë‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰ż$ë
-‹E‹U ‰B‹E@‰ÐÁà)ЍÅP‰ˆh$‰¸l$ƒÄ[^_]ÍvU‰å‹EÇÿÿÿÿÇ@ÿÿÿÿ]ÍvU‰åWVS‹uv‰ÐÁà)ЍÅP‹˜l$¿h$‹ 8ƒûÿt[‰ÐÁà)ЉLÇPëv‹E ‰ƒùÿt&I‰ÁÁá)Á»l$v‰ÐÁà)ЋDÃP‰DËPë v‹E ‰X[^_]ÐU‰åS‹M‹‰Øƒûÿt=‹@‰ÂÁâ)‹Õ¸$‰ƒøÿt@‰ÐÁà)ÐÇż$ÿÿÿÿë
-vÇAÿÿÿÿ‰Ø‹$ÉÉöU‰åS‹M‹] ƒ;ÿt)I‰ÐÁà)Ћ‰Ÿ$‹@‰ÂÁâ)‰ Õ¼$됉KI‰ÐÁà)ÐÇŸ$ÿÿÿÿI‰ÐÁà)ÐÇż$ÿÿÿÿ‰ ‹$ÉÃU‰åS‹M‹] ƒ{ÿt,I‰ÐÁà)ЋS‰ż$‹C@‰ÂÁâ)‰ Õ¸$ë‰ö‰ I‰ÐÁà)ÐÇż$ÿÿÿÿI‰ÐÁà)ÐÇŸ$ÿÿÿÿ‰K‹$ÉÃU‰å‹E‹]ÉöU‰å‹E‹@]ÐU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)ÐÁà‹8$‰U苀<$‰Eìƒùÿtw ‰ÆȉÂÁâ)‹Eè‰Ã;Õ8$|[‰Eäv1‰ÐÁà)ЍÅ;š8$u ‹Eì;‚<$|1‰Ï‰ÐÁà)Ћ Ÿ$ƒùÿt4 1‰ÐÁà)Ћ]ä;Å8$}«ƒÿÿt‰ÐÁà)ЋU‰Ÿ$ë‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰ż$‹E@‰ÐÁà)ЍÅP‰ˆh$‰¸l$ƒÄ[^_]ÍvU‰åWVSƒì¿ÿÿÿÿ‹E ‹‹E@‰ÐÁà)лd$‰]ð‹´ÃЃùÿtCI‰ÐÁà)Ð;´ÃÐr0»h$‰Ï‰ÐÁà)ЋLÃPƒùÿtI‰ÐÁà)ЋUð;´ÂÐsՃÿÿt‰ÐÁà)ЋU‰Ÿ$ë
-‰ö‹E‹U ‰ƒùÿtI‰ÐÁà)ЋU‰ż$‹E@‰ÐÁà)ЍÅP‰ˆh$‰¸l$ƒÄ[^_]ÍvU‰åWVS‹}‰ÐÁà)ЍÅP‹l$‹°h$ƒúÿu ‹E ‰0ë#‰öR‰ÁÁá)Á»h$‰ÐÁà)ЋDÃP‰DËPƒþÿt!v‰ÁÁá)Á»l$‰ÐÁà)ЋDÃP‰DËP[^_]ÃU‰åS‹]‹ ‰Èƒùÿt/I‰ÐÁà)ЋŸ$‰ƒøÿt@‰ÐÁà)ÐÇż$ÿÿÿÿ‰È‹$ÉÃU‰åS‹]‹M ƒ9ÿt‹@‰ÂÁâ)‰Õ¼$[‰ÂÁâ)ÕP‹‰‚h$ǂl$ÿÿÿÿ‰‹$ÉÃU‰åWVSƒì ‹M‹] ‹}ÇEðú¡Œ$@‰ÂÁâ)4Õ`$…ÿt‹F8‰…ÛtBƒùt"ƒù ƒùt ë*‰öƒùtë!‹F8 ‰F8ë‰ö‹÷Ð!F8ëv‹‰F8ëÇEð‹F8‰Ã÷Ћ`¹#‰Ñ…ÂtB‰ö‰Ø÷л!Ètv‰Ú©u
-CÑøuòºƒì R范ċ^8‰Ø÷Ћ -`¹#…ÁuÀ‹F8‰Ã÷ЋV<‰Ñ…Ât=‰Ø÷л!Ètv‰Ú©u
-CÑøuòºƒì Rè|ƒÄ‹^8‰Ø÷ЋN<…ÁuÃû‹Eðeô[^_]ÍvU‰åVS‹u‹M ¸…É„¸ƒù‡òv‰ÐÁà)Ðfƒ<ň$u -¸éӍvú‰ÈÁàö€h·#uƒ¸`·#uû魉öv‰ÐÁà)ЍŜ$ƒùvèÍ©Çë
-¸Óà »ëC;èt#}ƒìÝÿ°$º#Vÿ º#ƒÄ…Àtٍv‰ÐÁà)ЍÅfƒ»ˆ$u&ƒìhd¹#VèÔüÿÿ‹ƒd$ƒÄ‹…À$VPÿRDƒÄèSm…Àuèû¸eø[^]ÐU‰åWVSƒì‹]‹U ƒûvè©Ç¸ÿÿÿÿévœúX‰Á‰Mðƒ}t‰ÞÁæÆ`·#ü¹‹}ó¥…Òt‰ßÁçÇ`·#ü¹‰Öó¥…Ò„ºöB…°ƒ:‡§ƒ<€¹#ÿtq4‰u캀¹#‹@Áà‰Eè‰ÇƒÇ‹ -Ç%¸Á%‹U苉E䋇Á%©t -ƒàý‰‡Á%ë‰ö¾€¹#‹Uì‹2@‰ ÕÁ%‰Áƒ}äÿu»‰ -Ç%ǝ€¹#ÿÿÿÿƒûv -è¨Çë¸þÿÿÿˆÙÓÀ!`¹#‹uð‰ðP¸ƒÄ[^_]ÐU‰åWVSƒì,‹] ¸…Û„~¸ƒû‡pœúX‰Â‰UԉÞÁæ}؁Æ`·#ü¹ó¥÷Eàuƒ}Øu ‰ÐPé5vƒûv膧Ǹÿÿÿÿ됸ˆÙÓà#`¹#…Àt -‹UԉÐPéûƒûvèN§Çë‰ö¸ˆÙÓà `¹#‹5d¹#ƒþÿ„ô¸‰ÇˆÙÓçvv‰ÐÁà)ЍÅ $ƒûvèý¦Ç¸ÿÿÿÿë‰ú#‰Ð…À„–v‰ÐÁà)ÐÁàfƒ¸ˆ$uœ$ƒûv -輦Çë 8ƒìhd¹#Vèúÿÿv‰ÃÁã)ÃÁ㋃d$ƒÄ‹…À$VPÿRDÃà¾`$ƒÄƒ<3ÿtƒì ÿ43ÿh$Ç3ÿÿÿÿƒÄ‹MԉÈPéîv‰ÐÁà)Ћ4Ÿ$ƒþÿ…ÿÿÿ¾¸‰ÇˆÙÓç‰öv‰ÐÁà)ÐÁàfƒ¸ˆ$„…˜$ƒûvèö¥Ç¸ÿÿÿÿ됉ú#‰Ð…Àu^v‰ÐÁà)ЍŜ$ƒûvèÃ¥Çëv 8»ëvC;èt#}0ƒìÝÿ°$º#Vÿ º#ƒÄ…ÀtÙëvFþ™ŽSÿÿÿèzi…Àuè9 -‹MԉÈP¸eô[^_]ÐU‰åWVSƒì,¸ƒ} „T¸ƒ} ‡EœúX‰Â‰Uԋu Áæ}؁Æ`·#ü¹ó¥÷Eàuƒ}Øu ‰ÐPé ‰ö÷Eàu;ƒ} vèܤǸÿÿÿÿëv¸ŠM Óà#`¹#…Àt ‹UԉÐPéÃ=Ç%ÿu‹MԉÈP¸ 鮉ö‹5Ç%vÁà¹Á%‹‰Ç%‹U ‰Á%‹U‰Á%‹U‰ Á%‹Œ$‰Á%Çÿÿÿÿ‹E Á຀¹#ƒ<ÿu‰4ë>‰ö‹M ‹€¹#‰ÁЃ<ÅÁ%ÿt»Á%
-‹Í 
-ƒ<ÃÿuîR‰4ÅÁ%ƒ} vèé£Ç됸ŠM Óà `¹#‹5d¹#ƒþÿ„û¸‰ÃŠM Ó㐍v‰ÐÁà)ЍÅ $ƒ} v蘣Ǹÿÿÿÿë v‰Ú#‰Ð…À„šv‰ÐÁà)ÐÁàfƒ¸ˆ$uœ$ƒ} vèS£Çëv ƒìhd¹#Vè¨öÿÿv‰ÃÁã)ÃÁ㋃d$ƒÄ‹…À$VPÿRDÃà¾`$ƒÄƒ<3ÿtƒì ÿ43ÿh$Ç3ÿÿÿÿƒÄ‹MԉÈPé÷v‰ÐÁà)Ћ4Ÿ$ƒþÿ…ÿÿÿ¾¸‰ÃŠM Ó㐍v‰ÐÁà)ÐÁàfƒ¸ˆ$„…˜$ƒ} v艢Ǹÿÿÿÿë‰Ú#‰Ð…Àu^v‰ÐÁà)ЍŜ$ƒ} vèV¢Çë‰ö »ëvC;èt#}0ƒìÝÿ°$º#Vÿ º#ƒÄ…ÀtÙëvFþ™ŽSÿÿÿèf…Àuƒ=ät#uèÄ ‹MԉÈP¸eô[^_]ÃU‰åWVSƒì‹u‹]¡Œ$@‰ÂÁâ)<Õ`$èŠú¡`¹##„Hºv©u=BÑøuô¾ƒ<µ€¹#ÿue‹E ‰0Ç@Ç@W<ƒþvèa¡Ç됉Öëɸþÿÿÿ‰ñÓÀ!ƒþvè?¡Çëv¸þÿÿÿ‰ñÓÀ!`¹#ûév µº€¹#‹[‹ÅÁ%‰ƒøÿu"ƒþvèñ Ç됸þÿÿÿ‰ñÓÀ!`¹#W<ƒþv -èÌ Çë ¸þÿÿÿ‰ñÓÀ![Áâ¹Á%‹
-‹u ‰‹‚Á%‰F‹‚ Á%‰FƒÂ‹
-©t ƒàý‰
-ëv[¡Ç%‰ÕÁ%‰Ç%ûéI‰Öë‹G<#tUº©uéBÑøuô¾‹E ‰0Ç@Ç@W<ƒþvè Çëv¸þÿÿÿ‰ñÓÀ!ûéëv…Ûtƒ;uƒ{u -û¸ éÓ‰ö‹‰G@úèu‹Œ$R‰ÑÁá)Ñf‰Íh$ƒìhD$jèN\ƒÄUè¡H$;˜$|¡D$+”$‰Eè¡H$+˜$ë¡D$+”$H‰Eè¡H$+˜$ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰ÁáºÓMb‹Eì÷êÁú‹EìÁø)ÂыŒ$R‰ÐÁà)Ð) Ŭ$ƒì Qèc¹ÿÿƒÄƒ=œ$ÿtƒì ÿ5œ$ÿh$Çœ$ÿÿÿÿƒÄ‹ -Œ$I‰ÐÁà)ЋÅd$ƒì‹…À$QPÿRHƒÄhd¹#ÿ5Œ$èæòÿÿ¡Œ$@‰ÂÁâ)ÂfÇՈ$ƒÄ…Û„’ƒìEàPjè[U؃Ä‹Eà‰E؋EäC‰B…Ày -ÿM؁Bʚ;됁zÿɚ;~ ÿjʚ;ÿ5Œ$h$‹"ÿuÜÿuØÿ($‰ÃƒÄƒûÿuƒìÿ5Œ$jèù ƒÄ¡Œ$@‰ÂÁâ)‰Õ@$ÇŒ$ÿÿÿÿÇ $ÿÿÿÿè׺ÿÿƒì ¡Œ$@‰ÂÁâ)»`$¿DÓPèsè”ÇG@¡Œ$@‰ÂÁâ)ƒÄöDÓ2tû¸ é~‰Öë%¡`¹##„ûº‰ö©uáBÑøuô¾ƒ<µ€¹#ÿu=‹M ‰1ÇAÇAƒþv -è@Çë¸þÿÿÿ‰ñÓÀ!`¹#ûé vƒì µƒ€¹#Pèúðÿÿ‰ÇƒÄƒ»€¹#ÿu#ƒþvèòœÇë‰ö¸þÿÿÿ‰ñÓÀ!`¹#Áâ¹Á%‹
-‹] ‰‹‚Á%‰C‹‚ Á%‰CƒÂ‹
-©t ƒàý‰
-ëv¡Ç%‰ÕÁ%‰=Ç%ûël‹G<#…Àuû¸ë`v‰Öë‹G<º#t ©uéBÑøuô¾‹E ‰0Ç@Ç@W<ƒþvè/œÇëv¸þÿÿÿ‰ñÓÀ!û¸eô[^_]ÍvU‰åWVSƒì ‹}¡Œ$@‰ÂÁâ)4Õ`$è¹ú‹F<#…Àt è¦û颋‰F@úèq‹Œ$R‰ÑÁá)Ñf‰Íh$ƒìhD$jè6XƒÄUè¡H$;˜$|¡D$+”$‰Eè¡H$+˜$ë¡D$+”$H‰Eè¡H$+˜$ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыŒ$R‰ÐÁà)Ð) Ŭ$ƒì QèJµÿÿƒÄƒ=œ$ÿtƒì ÿ5œ$ÿh$Çœ$ÿÿÿÿƒÄ‹ -Œ$I‰ÐÁà)ЋÅd$ƒì‹…À$QPÿRHƒÄhd¹#ÿ5Œ$èÍîÿÿ¡Œ$@‰ÂÁâ)»`$fÇDÓ(ÇŒ$ÿÿÿÿÇ $ÿÿÿÿèY·ÿÿ¡Œ$@‰ÂÁâ)¿DÓ‰$è™oè‹F<#ƒÄ…Àuû¸ë èÿû¸eô[^_]ÐU‰åSƒì‹]úEðPjè¢VƒÄƒ=º#ÿu
-ÇEèëWMèUð¡º#;B|¡º#+Eð‰E衺#+Bëv¡º#+EðH‰E衺#+Eôʚ;‰Aƒì ÿ5º#ÿh$ƒÄ…ÛtN]ð‹Eð£º#‹Eô£º#jh„‹"ÿuôÿuðÿ($‰ÃƒÄƒûÿuƒìÿ5Œ$jè:ƒÄ‰º#ë -vǺ#ÿÿÿÿû‹Eè‹]üÉÐU‰åVSƒì‹uƒ<µ€¹#ÿuC‰uèÇEìÇEð¡Œ$‰Eôƒþvèü˜Ç鮐¸þÿÿÿ‰ñÓÀ!`¹#降 µº€¹#‹[‹ÅÁ%‰ƒøÿu"ƒþv豘Ç됸þÿÿÿ‰ñÓÀ!`¹#[Áà¹Á%‹‰U苐Á%‰U싐 Á%‰Uð‹Á%‰UôP‹
-©tƒàý‰
-ë[¡Ç%‰ÕÁ%‰Ç%ƒìEèPVè
-ƒÄeø[^]ÃU‰åVSƒì¡Œ$@‰ÂÁâ)4Õ`$‹F0©…Í -‰F0‹F8‰Ã÷Ћ`¹#‰Ñ…ÂtA‰Ø÷л!Ètv‰Ú©u
-CÑøuòºƒì Rè„þÿÿƒÄ‹^8‰Ø÷Ћ -`¹#…ÁuÀ‹F8‰Ã÷ЋV<‰Ñ…ÂtZ‰Ø÷л!Ètv‰Ú©u
-CÑøuòº‰UèÇEìÇEð¡Œ$‰EôƒìEèPRèƒÄ‹^8‰Ø÷ЋN<…Áu¦f0ÿïÿÿeø[^]ÃU‰åWVSƒì,‹]œúX‰Â‰UÌ¡Œ$@‰ÂÁâ)Õ`$‰UЉÞÁæ}؁Æ`·#ü¹ó¥÷Eàuƒ}Ø„îƒ}Øÿ„ä÷EàuCƒ}Øu=ƒìShLK#èw}ƒÄ÷Eàtƒì‹M ÿqhbK#èX}ƒÄƒì jèç½ÿÿƒÄ‹UЋB8‰EԉƍUԃûv -èh–Çë ¸ˆÙÓà ‹EÔ E܉EԋUЃÂ<ƒûv -è<–Çë ¸þÿÿÿˆÙÓÀ!‹EԋUЉB8û÷Eàtƒìjÿu SÿUäëƒìj‹M ÿqSÿU؃Äú‹EЉp8‹ỦÐPeô[^_]ÃU‰åWVSƒì ‹}‰ÐÁà)ÐÁà¾`$fƒ|(uF˜àƒ<3ÿtƒì ÿ43ÿh$Ç3ÿÿÿÿƒÄƒìhd¹#Wèúèÿÿ‰ÂÁâ)‹Õd$ƒÄë ‰ÐÁà)ÐÁàfƒ¸ˆ$u!‹d$ƒì‹•À$WRÿPD¸ƒÄë‰ö¸eô[^_]ÍvU‰åWVSƒì º¿h·#¾d·#»l·#¹€¹#‰ö‰ÐÁàǀ`·#Ç8Ç0ÇÇ‘ÿÿÿÿBƒúvϺ»Á%¹Á%RÁàB‰ÇDƒú>~éÇèÆ%ÿÿÿÿÇüÆ%ÇÇ%Ç`¹#Çd¹#ÿÿÿÿǺ#ÿÿÿÿº¹Àº#»Äº#‰öRÁàÇÇÿÿÿÿÆDBƒú~áƒìjh†"è¾ÄÿÿƒÄeô[^_]ÍvU‰å‹EǸ]ÐU‰å‹EÇÿÿÿÿ¸]ÐU‰åƒì‹U‹M ƒùvèê“Ǹÿÿÿÿ됸Óà ¸ÉÃU‰åƒì‹U‹M ƒùv趓Ǹÿÿÿÿ됸þÿÿÿÓÀ!¸ÉÃU‰åƒì‹M ƒùv腓Ǹÿÿÿÿë ¸Óà‹U#ÉÉöU‰åƒì ÿuÿu ÿuèÔçÿÿƒÄÉÍvU‰åWƒì$‹UEè‰E丹‹}äüó«ƒìjÿuäRèBñÿÿƒÄ…Àu -‹Uè‹E ‰¸‹}üÉÐU‰åƒì jÿu ÿuèñÿÿƒÄÉÃU‰åƒì‹E…Àu¸ëƒìPÿu ÿuèíðÿÿƒÄÉÃU‰åƒìÿuÿ5Œ$è`èÿÿƒÄÉÍvU‰åVSƒì ‹]‹E ‰EèÇEìÇEð脒‹0ƒìEØPEèPSèAéÿÿƒÄ»ÿÿÿÿ…Àu ÷Eàu‹]ØèT’‰0‰Øeø[^]ÐU‰å‹M¡Œ$@‰ÂÁâ)¡`¹# ՜$‰¸]ÉöU‰åSƒì‹E‹U ú‹Œ$‰Œ$Çät#jPj jèœìÿÿƒÄÇät#‰Œ$û‹]üÉÍvU‰åS‹M‹] ¡èt#ʼnŠ º#‰š$º#@£èt#‹$ÉÍvU‰åVS‹]Cÿƒøv苑Ç~¸ÿÿÿÿëp‰öœúX‰Æ[€<…Ⱥ#u‰ðPèa‘ǸÿÿÿÿëF[Áâ¹Àº#‹E ‰
-‹E‰‚ĺ#ÆD
-ƒìjhċ"Sè¹T·Ã‰$èÒeƒÄ‰ðP¸eø[^]ÍvU‰åƒì¸ÉÍvU‰åƒì ‹E‰EèÇEìÇEð‹Œ$‰UôUèRPè›ùÿÿƒÄÉÉöU‰åVS‹uv‰ÃÁã)ÃÁã¸`$DŽàÿÿÿÿL0ƒìhd¹#Vèõãÿÿ‹ƒd$ƒÄ‹…À$VPÿRDè7¢ÿÿƒÄeø[^]ÐU‰åƒìǺ#ÿÿÿÿjjèWèÿÿè¢ÿÿƒÄÉÐU‰åƒìEüÇEüÿÿÿÿPèôÿÿƒÄÉÐU‰åƒì‹E‹‰EüEüPjÿìt#‹UüRÁà¹Àº#ƒÄƒ<t ûƒì RÿƒÄú‹Eü@ƒì ÿ4…ĺ#èö›ÿÿƒÄÉÐU‰åWVSƒì ‹u ‹]ƒ}t讏Ǹÿÿÿÿén‰öúƒ=€Â#ÿt ƒ=Ç%ÿuûèƒÇ ¸ÿÿÿÿéCv¡€Â#‰‹€Â#Õ)п„»#‹DÇ0£€Â#‹Õ)й€»#ÇDÁ0…öu8‹Õ)ÐÇÁ‹Õ)ÐÇÇ‹Õ)Љň»#닍<Å)Ǎ<ý€»#ü¹ó¥‹Õ)ЍŃº€»#u#¡Ç%‰‚¨»#@ÁàƒˆÁ%‹€Á%£Ç%‹Õ)ÐÇŔ»#ÿÿÿÿ‹Õ)ЍŘ»#Ç@NjÕ)ЍÅ »#Ç@NjÕ)ÐÇŬ»#û¸ƒÄ [^_]ÃU‰åSƒì‹]ƒûwúÝ)؃<Å°»#uûèÿÇ¸ÿÿÿÿ閍vÝ)ØÁàǀ°»#ƒÀº„»#ƒ<ÿtƒì ÿ4ÿh$ƒÄÝ)ØÁàƒ¸€»#uE‹¨»#R ÅöÁ%u¡Ç%‰Á%‰Ç%Ý)؋Ũ»#@ƒ$ÅÁ%üû¸‹]üÉÃU‰åWVSƒìL‹E‰E´Áà+E´Áàƒ¸€»#…‹P ‹‚ˆ»#@öÅÁ%t¸Œ»#ƒ< „ôÿéì‰ö‹M´Áá+M´Ááy LJŒ»#¾ˆ»#‹7@‹Ç%‰ÝÁ%£Ç%jÿ41ÿ±„»#jèhçÿÿ‹7@ƒ ÅÁ%錐‹E´Áà+E´Áเ»#ƒ<uwPƒ<
-tÿ°ˆ»#ÿ°Œ»#ÿ4
-ëQvÇEÈÇEÌÇEÐÇEÔÇEØÇEÜÇEà‹E´Áà+E´Áàˆ»#Rÿ°Œ»#EÈPEÄPèíÕÿÿƒÄ‹E´Áà+E´Åƒ¸ˆ»#u -ƒ¸Œ»#„Àº »#‹E´Áà+E´ŋ‰E¸M¸‹D‰A‹E¸ƒ˜»#‰ƒ »#‹Aƒœ»#‰B…Àyÿ‹ »#Bʚ;ë‰özÿɚ;~ ÿjʚ;‹E´Áà+E´ÿu´hŽ"ÿ4Ť»#ÿ4Å »#ÿ($‰ÃƒÄƒûÿuƒìÿ5Œ$jè+ùÿÿƒÄ‹E´Áà+E´‰Ŕ»#ë‰ö‹E´Áà+E´ÇŔ»#ÿÿÿÿeô[^_]ÃU‰åWVSƒì‹u‹}ÇEäƒþw3ƒ}t-‹Exÿɚ;w!‹]{ ÿɚ;wúõ)ðƒ<Å°»#uûèÁŠÇ¸ÿÿÿÿ鐅ÿ„·õ)ðƒ<Ŕ»#ÿuÇG ÇGëwƒìEèPjèGÇEäƒÄ¹ »#õ)ðō]è‹D;C|‹+Eè‰G‹D+Cë(¹ »#õ)òÁâ‹+EèH‰G‹D+Eìʚ;‰G ¹˜»#õ)ðÁà‹‰‹D‰Gõ)ðÅº„»#ƒ<ÿtƒì ÿ4ÿh$ƒÄ‹Eƒxu
-ƒx „þº˜»#õ)ð ŋ]‹‰
-‹C‰D
-÷E t¸ »#‹S‰‹S ‰Tëmvƒ}äuƒìEèPjèøEƒÄõ)ð ō‘ »#‹Eè‹]C‰ »#‹EìC ‰B…Àyÿ‰ »#Bʚ;ëzÿɚ;~ ÿjʚ;õ)ðVhŽ"ÿ4Ť»#ÿ4Å »#ÿ($‰ÃƒÄƒûÿuƒìÿ5Œ$jè­öÿÿƒÄõ)ð‰Ŕ»#û¸eô[^_]ÃU‰åWVSƒì ‹]‹} ƒûwúÝ)؃<Å°»#uûèzˆÇ¸ÿÿÿÿ鷉öÝ)؃<Ŕ»#ÿuÇG ÇGëoƒìEèPjèÒDƒÄ¹ »#Ý)؍ōuè‹D;F|‹+Eè‰G‹D+Fë'¹ »#Ý)ÚÁâ‹+EèH‰G‹D+Eìʚ;‰G ¹˜»#Ý)ØÁà‹‰‹D‰Gû¸eô[^_]ÍvU‰åƒìƒ}t藇Çëv臇ǸÿÿÿÿÉÉöU‰åƒìƒ}tèg‡Ç¸ÿÿÿÿë‰öƒì ÿu èÅ®ÿÿ¸ƒÄÉÍvU‰åƒì‹E ƒ}tè,‡Ç¸ÿÿÿÿëv…Àt -ÇÇ@è¸ÉÃU‰åƒì‹UƒúwúÕ)Ѓ<Å°»#uûè܆ǸÿÿÿÿëvÕ)ЋŬ»#ûÉÐU‰åWVS¹»„»#¿€»#¾Œ»#‰öÍ)ÈÁàÇDÿÿÿÿ˜»#ÇBǍP0Ç:ÇD A‰‰Áƒù~ºÇ|Â#ÿÿÿÿÇ€Â#[^_]ÐU‰å]ÍvU‰å¸]ÉöU‰åVSœúX‰Ã¡Œ$@‰ÂÁâ)¾`$‹DÖ0©t0©t)ƒì jèr°ÿÿ¡Œ$@‰ÂÁâ)¿DÖ‰$è"[ƒÄ‰ØPeø[^]ÃU‰åS‹]úût ¸ÿÿÿÿ…ÛuL¡Œ$@‰ÂÁâ)¹`$‹DÑ0Áèƒà‹U ‰¡Œ$@‰ÂÁâ)Õ0‹
-%ÿþÿÿ ؉
-û¸‹$ÉÉöU‰åS‹]úût ¸ÿÿÿÿ…ÛuL¡Œ$@‰ÂÁâ)¹`$‹DÑ0Áè ƒà‹U ‰¡Œ$@‰ÂÁâ)Õ0‹
-%ÿýÿÿ ؉
-û¸‹$ÉÉöU‰åWVSƒì ‹} ÇEðú‹EÇÿÿÿÿÇ@¾;5„$s9v‹µ $ƒ{u ƒìWVÿS,ƒÄ…ÀxƒìWÿuVÿS0‰EðƒÄF;5„$rÊû‹Eðeô[^_]ÉöU‰åƒì‹U¸ƒ:ÿt ¸ƒzu‹‹… $ƒìRÿ2ÿP4ƒÄÉÍvU‰åƒì‹U¸ƒ:ÿt‹‹… $ƒìRÿ2ÿP8ƒÄÉÉöU‰åƒì‹U¸ƒ:ÿt‹‹… $ƒìRÿ2ÿP<ƒÄÉÉöU‰åƒì‹U¸ƒ:ÿt‹‹… $ƒìRÿ2ÿP@ƒÄÉÉöU‰åVS‹u‹µÀ$ƒìÿ°ôh™K#è^j»ƒÄ‰ö[‰ÐÁà)ÐÁà9°d$……ƒÀ º`$f|€ttfƒ|tlƒì f‹Dfƒøwƒì ·ÀPè0¤ƒÄë%v·Ð¸sK#ú€t¸K#út¸‹K#P[‰ÐÁà)ÐÁàÿ°4$t$PShL#è¹iƒÄ Cû™ŽUÿÿÿeø[^]ÉöU‰åWVSƒì ‹E‹…À$‰Eð‹¸üƒì ‹Uð‹‚ðøPèÔÿÿ‰ÆƒÄƒþÿu -¸ÿÿÿÿ…ÿtrOëՐv‰ÐÁà)Ѝ Åö‘$tRQ@»l$ƒ<D‹D$‰ƒìý‰Ø‹Uð‚ðPVèôÑÿÿƒÄ‹Eð˜ðSVèÓÿÿƒÄéiÿÿÿ‰ðeô[^_]ÉöU‰åWVSƒì‹E‹…À$‰Eð‹Mƒy(…©‹=Œ$‰ÐÁà)Ѝžd$‹U93…‹M I‰ÂÁâ)ÂÁ⋄Љ„йl$‹D@‰D@‹„à‰„àƒÂ0¹`$‹
-%ÿ÷ÿÿ‹\0ã ؉
-‹UðƒÂ¸ƒ¼º€ÿ•ÀH‹] ‰„š€é¢v‹U R‰ÂÁâ)ÂÁâ»d$‹A‰„Ѓyt‹A‰‚¬$‹A‰„àë-‰ö‹] [‰ÐÁà)ÐÁà‹]ð‹“ô‰¬$‹“ô‰D$ƒy$u‹E @‰ÐÁà)Ё Ő$¸ƒy ”ÀH‹U ‹Mð‰„‘ˆ¸ƒÄ[^_]ÃU‰åWVSƒì ‹U‹<•À$ƒ¿t8LJƒì‹E @‰ÐÁà)ЋÅ4$‹—ðÂPÿu èAÑÿÿ酋E @‰ÐÁà)ЍÅöƒ‘$t?K@¾l$ƒ<11ºd$‹1„à‰1ƒì‹„Ћ—ðÂPÿu èãÐÿÿë*ƒì‹E @‰ÐÁà)ЋÅ4$‹—ðÂPÿu èKÐÿÿƒÄ‹E @‰ÐÁà)ÐfÇň$€eô[^_]ÐU‰åWVSƒìH‹]ÇE¼ÇEÀfÇEÄÇEÈÇEÌÇEÐÇEÔÇEØÇEÜÇEà¶Ã -f‰E¸‹À$‹€ø‰EÈÇE̍E¸jjPh˜"h¥K#è}–ÿÿ‰ÆƒÄ ƒþÿuƒì h@L#èjÇÿÿƒÄ‹<À$v‰ÐÁà)Ðfƒ<ň$tµ€Gƒ<ÿtJÿëE‰öƒìv‰ÃÁã)ÃÁ㍃¤$PjèJ;fǃˆ$€ƒÄ‹ƒ4$‹—ðÂPVè|ÏÿÿƒÄeô[^_]ÐU‰åWVSƒì‹}hªK#èÒÆÿÿèa°ÿÿ‰EðƒÄ hPhÀK#è·ÆÿÿÇ$èdzÿÿ‰ÃƒÄShÞK#è›Æÿÿ‹Eð‰…À$ƒÄ jhêK#Sè=efÇCÆCÇC8¢"ÇCd¢"ÇC ,˜"ÇC$ ™"ÇC(p¢"ÇC,̙"ÇC0|¢"ÇC4„¢"ÇC8¢"ÇC<D›"ÇC@Т"ÇCD\£"ÇCH¤£"ÇCL¬£"ÇCPD¤"ÇCTŒ¤"ÇCXÀ¤"ÇC\¤¥"ÇC`Ä¥"ÇCdÜ¥"ÇChô¥"ÇCl ¦"ÇCp$¦"ÇCt<¦"ÇCxT¦"ÇC|l¦"ǃ€„¦"ǃ„œ¦"¸ƒÄS‰öDŽ‚€ÿÿÿÿ@=™~í‹EH‰ƒüƒì ‹EÁàP萲ÿÿ‰ƒð¾ƒÄ;u}ƒì ‹ƒððPè‚ÌÿÿƒÄF;u|åÿçw¿èÿ ¡v¿ ¡‰»ô‹E‰ƒøƒ} tƒìjÿuðh@œ"舭ÿÿƒÄeô[^_]ÐU‰åWVSƒì ‹M‹u ‹]‹À$‰Eð…Éx[; -$sS‹À$‹@%ÿÿÿ=u=þ™wv‰ÐÁà)Ðfƒ<ň$u -¸éèvv‰ÐÁà)Ð9 Åd$t -¸&éȍv…Ûuv‰ÐÁà)Ё Ő$ë)ƒûuv‰ÐÁà)Ё$Ő$ÿ÷ÿÿë ¸郉öv‰ÐÁà)ÐÁà˜Ð¿d$‹U9;t\f¸ˆ$€u=ƒì‹;‹Mð‹‘ðÂPVè4Ëÿÿ‹E‰;ƒÄ‹Uð‹‚ð‹MÈPVèQÌÿÿƒÄëv‰ÐÁà)ЋU‰Å4$¸eô[^_]ÍvU‰åVS‹M‹4À$…Éx; -$s‹À$‹@%ÿÿÿ=t¸ÿÿÿÿëw¡Œ$@‰ÂÁâ)¸ÿÿÿÿ9 Õd$uZúè!P‹Œ$R‰ÑÁá)Ñ»`$f‰DËdž託ÿÿ¡Œ$@‰ÂÁâ)ƒì ¿DÓPèçO莡ÿÿƒÄû¸eø[^]ÉöU‰å‹E‹…À$‹€ü]ÍvU‰å‹E‹…À$‹€ô]ÍvU‰åS‹]‹M …ÛxU;$sM‹À$‹@%ÿÿÿ=u7ù™wI‰ÐÁà)Ðfƒ<ň$u¸ëMI‰ÐÁà)Ð9Åd$t ¸&ë3‰öI‰ÁÁá)ÁÁá¸ö‘$”À‹U‰‹‘4$‹E‰¸‹$ÉÉöU‰å‹E f8t·‹E -9Âu¸ë¸ÿÿÿÿ]ÐU‰å¸ÿÿÿÿ]ÉöU‰å¸]ÉöU‰å]ÍvU‰å¸]ÉöU‰åSƒì ‹E‹M ‹…À$I‰ÐÁà)ЋÅ4$‹“ðÂPQèÓÈÿÿƒÄ‹]üÉÍvU‰åWVSƒì ‹E‹u ‹<…À$v‰ÐÁà)Ðfƒ<ň$tµ€Gƒ<ÿtHÿëCƒìv‰ÃÁã)ÃÁ㍃¤$PjèR5fǃˆ$€ƒÄ‹ƒ4$‹—ðÂPVè„ÉÿÿƒÄeô[^_]ÐU‰åSƒì ‹E‹M ‹…À$I‰ÐÁà)ÐÁàfǀˆ$€‹€4$‹“ðÂPQè8ÉÿÿƒÄ‹]üÉÃU‰å]ÍvU‰åWVSƒì ‹U‹•À$‰Eð‹U <•€‰ÆƒÆƒ<7~MƒìR‰ÃÁã)ÃÁ㍃¤$Pjè‹4ÿ 7ƒÄ‹ƒ4$‹Mð‹‘ðÂPÿu èRÈÿÿfǃˆ$€ƒÄë‹E @‰ÐÁà)ÐfÇň$eô[^_]ÐU‰åƒì‹E‹M ‹…À$ƒÀDŽˆ€ÿÿÿÿI‰ÐÁà)ÐfÇň$h$QèðÉÿÿƒÄÉÍvU‰å‹E‹U ‹…À$ƒÀDŽ€R‰ÐÁà)ÐfÇň$]ÃU‰åWVSƒì4‹u v‰EäÁà+EäfÇň$EèPjè“3Mè»@B‹Eº÷ó‰Uà’€€‰E܋A‹U܍ЉE؉A»¡/¸D÷ë‰ÓÁû‹EØÁø)ÿƒÞC‹E÷ç‰×‰øÁèEè‹A»Êš;™÷û‰Ó‰YƒÄVh´¦"ÿuìÿuèÿ($‰ÃƒÄƒûÿuƒìÿ5Œ$jèAäÿÿƒÄ v‰ÈÁà)ȉÅ@$eô[^_]ÐU‰åƒìÿ5Œ$jèäÿÿ¸ƒÄÉÍvU‰åƒìÿ5Œ$jèñãÿÿƒÄÉÃU‰åƒìÿ5Œ$jèÙãÿÿƒÄÉÃU‰åƒìÿ5Œ$jèÁãÿÿƒÄÉÃU‰åƒìÿ5Œ$jè©ãÿÿƒÄÉÃU‰åƒìÿ5Œ$jè‘ãÿÿƒÄÉÃU‰åƒìÿ5Œ$jèyãÿÿƒÄÉÃU‰åƒìÿ5Œ$jèaãÿÿƒÄÉÃU‰åƒìÿ5Œ$jèIãÿÿƒÄÉÃU‰åƒìÿ5Œ$jè1ãÿÿƒÄÉÃU‰åƒìÿ5Œ$jèãÿÿƒÄÉÃU‰åWVSƒì‹MI‰ÃÁã)ÃÁãºd$‹‹4…À$¿`$fÇD(€‹„Ћ–ðÂPQèÕÅÿÿDŽàÿÿÿÿ衆ÿÿƒÄeô[^_]ÉöU‰åVSƒì h`M#è½ÿÿè­¦ÿÿ‰ÆÇ$Œè'ªÿÿ‰Ã‰µÀ$ƒÄ jhøL#Sè®[fÇCÆCÇC`¨"ÇC”¨"ÇC  ¨"ÇC$Ȩ"ÇC(ÇC,à¨"ÇC0ì¨"ÇC4ô¨"ÇC8©"ÇC<©"ÇC@$©"ÇCDL©"ÇCHt©"ÇCLœ©"ÇCPÄ©"ÇCTì©"ÇCXª"ÇC\<ª"ÇC`hª"ÇCdª"ÇCh¸ª"ÇClàª"ÇCp«"ÇCt0«"ÇCxX«"ÇC|€«"ǃ€¨«"ǃ„Ы"ǃˆÿÿÿÿÇ$M#è¼ÿÿƒÄ jVhø«"è|¤ÿÿƒÄeø[^]ÉöU‰å‹M‹E ‹À$fƒ8t·9Èu¸ƒºˆÿt¸ÿÿÿÿ]ÉöU‰å¸ÿÿÿÿ]ÉöU‰åƒì‹E‹…À$ÿ°ˆheL#èìYƒÄÉÍvU‰å‹E‹…À$‹€ˆ]ÍvU‰å¸]ÉöU‰å]ÍvU‰å¸]ÉöU‰å]ÍvU‰å‹E @‰ÂÁâ)ÂfÇՈ$]ÃU‰åƒìhtL#èxYƒÄÿ5Œ$j è„àÿÿƒÄÉÍvU‰åƒìh{L#èPYƒÄÿ5Œ$j è\àÿÿƒÄÉÍvU‰åƒìh‚L#è(YƒÄÿ5Œ$j è4àÿÿƒÄÉÍvU‰åƒìh‰L#èYƒÄÿ5Œ$j è àÿÿƒÄÉÍvU‰åƒìhL#èØXƒÄÿ5Œ$j èäßÿÿƒÄÉÍvU‰åƒìh—L#è°XƒÄÿ5Œ$j è¼ßÿÿƒÄÉÍvU‰åƒìhžL#èˆXƒÄÿ5Œ$j è”ßÿÿƒÄÉÍvU‰åƒìh¥L#è`XƒÄÿ5Œ$jèlßÿÿ¸ƒÄÉÉöU‰åƒìh¬L#è4XƒÄÿ5Œ$jè@ßÿÿƒÄÉÍvU‰åƒìh³L#è XƒÄÿ5Œ$jèßÿÿƒÄÉÍvU‰åƒìhºL#èäWƒÄÿ5Œ$jèðÞÿÿƒÄÉÍvU‰åƒìhÁL#è¼WƒÄÿ5Œ$jèÈÞÿÿƒÄÉÍvU‰åƒìhÈL#è”WƒÄÿ5Œ$jè ÞÿÿƒÄÉÍvU‰åƒìhÏL#èlWƒÄÿ5Œ$jèxÞÿÿƒÄÉÍvU‰åƒìhÖL#èDWƒÄÿ5Œ$jèPÞÿÿƒÄÉÍvU‰åƒìhÝL#èWƒÄÿ5Œ$jè(ÞÿÿƒÄÉÍvU‰åƒìhäL#èôVƒÄÿ5Œ$jèÞÿÿƒÄÉÍvU‰åƒìhëL#èÌVƒÄÿ5Œ$jèØÝÿÿƒÄÉÍvU‰åSƒì0‹]ÇEÜÇEàfÇEäÇEè¶Ãf‰EØÇEìEØjjPh„¬"hòL#è‡ÿÿƒÄ ‹À$‰Ã‰šˆƒûÿuƒì h M#èæ·ÿÿƒÄ[‰ÐÁà)ÐÇŘ$ÿÿÿÿ‹]üÉÐU‰åôëýU‰åWVSƒì ‹} ¾ú»ëvCûÿ2Ý)ØÁຠÂ#€|t߃ìÿ4ÿuèaVƒÄ…Àuʾ…öt1ÿÀuèðnÇûéÜûÝ)؍…¤Â#éˉö÷Ç@uè¿nÇû髍v‹E‰Eð=ÿ~èžnÇû銉ö‹pã#ƒúÿtqÕ)Ѝ<…w‹†¤Â#£pã#ƒì ÿuèV@‰$è×£ÿÿ» Â#‰ƒÄÿuPè7U‹Eð‰‡¨Â#‡¬Â#‰$èĽÿÿÆDƒÄû‡¤Â#ëvènÇû¸eô[^_]ÍvU‰åWVSƒì ¾ú¿» Â#vý)øÁà€|tƒìÿ4ÿuèUƒÄ…Àu¾Gÿÿ~ʅötJƒì ÿuèOUƒÄ@Pý)ûÁã¾ Â#ÿ43èu£ÿÿƒÃÆD3¡pã#‰ƒ¤Â#‰=pã#ƒÄûë‰öèSmÇû¸eô[^_]ÍvU‰åWVSƒì ‹}?ÿw‹Õ)Ѐ<…¸Â#uèmǸÿÿÿÿé‰öèÏæÿÿúè5B‹Œ$R‰ÑÁá)Ñf‰Íh$‹Õ)Ѝ4… Â#ƒ~ ÿu
-ƒ~…“ƒìWjÿìt#ƒÄhD$jè8)ƒÄUè¡H$;˜$|¡D$+”$‰Eè¡H$+˜$ë!‰ö¡D$+”$H‰Eè¡H$+˜$ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыŒ$R‰ÐÁà)Ð) Ŭ$ƒì QèJ†ÿÿƒÄƒ=œ$ÿtƒì ÿ5œ$ÿh$Çœ$ÿÿÿÿƒÄ‹ -Œ$I‰ÐÁà)ЋÅd$ƒì‹…À$QPÿRH‹ -Œ$I‰ÐÁà)л`$fÇDÃ(Íǂ Þ#‹‰‚¤Þ#ƒÄF PQèZ¼ÿÿÇŒ$ÿÿÿÿÇ $ÿÿÿÿèEˆÿÿ¡Œ$@‰ÂÁâ)¿DÓ‰$è…@è,’ÿÿƒÄûèÿäÿÿë8ÿNƒìWjÿìt#¡Œ$@‰ÂÁâ)¿Õh$‰$èF@èí‘ÿÿƒÄû¸eô[^_]ÃU‰åWVSƒì ‹}‹]?ÿw‹Õ)Ѐ<…¸Â#uè¯jǸÿÿÿÿéVv…ÛuúëúèÒ?‹Œ$R‰ÑÁá)Ñf‰Íh$‹Õ)Ѝ4… Â#…Ûu0ƒ~ ÿu‹E 9F}èMjÇ û¸ÿÿÿÿéó‹E )Fûéâèäÿÿƒ~ ÿu ‹E 9F‘ƒìWjÿìt#ƒÄhD$jèš&ƒÄUè¡H$;˜$|¡D$+”$‰Eè¡H$+˜$ë¡D$+”$H‰Eè¡H$+˜$ʚ;‰B‹Mè ‰ ‰ ‰ ‰ ‰ ‰Áá‹]ìºÓMb‰Ø÷êÁú‰ØÁø)ÂыŒ$R‰ÐÁà)Ð) Ŭ$ƒì Q讃ÿÿƒÄƒ=œ$ÿtƒì ÿ5œ$ÿh$Çœ$ÿÿÿÿƒÄ‹ -Œ$I‰ÐÁà)ЋÅd$ƒì‹…À$QPÿRH‹ -Œ$I‰ÐÁà)л`$fÇDÃ(͋E ‰‚ Þ#‹‰‚¤Þ#ƒÄF PQ迹ÿÿÇŒ$ÿÿÿÿÇ $ÿÿÿÿ誅ÿÿ¡Œ$@‰ÂÁâ)¿DÓ‰$èê=葏ÿÿƒÄûèdâÿÿë<‰ö‹E )FƒìWjÿìt#¡Œ$@‰ÂÁâ)¿Õh$‰$è§=èNÿÿƒÄû¸eô[^_]ÐU‰åWVSƒì ‹}?ÿw‹Õ)Ѐ<…¸Â#uèhǸÿÿÿÿéU‰öè,…À„‡œúX‰Æ‹Õ)Ѝ… Â#‹JA‰J‹Z ƒûÿtG‹Ý Þ#9È<)Á‰È‰BƒìB PSèb·ÿÿ[‰ÐÁà)ЋÅd$ƒÄ‹•À$SRÿPDèUyÿÿƒÄƒìWjÿìt#ƒÄ‰ðPé¼‰öúèª<‹ $R‰ÑÁá)Ñf‰Íh$‹Õ)Ѝ… Â#‹JA‰J‹Z ƒûÿtG‹Ý Þ#9È<)Á‰È‰BƒìB PSè¶ÿÿ[‰ÐÁà)ЋÅd$ƒÄ‹•À$SRÿPDè݃ÿÿƒÄƒìWjÿìt#¡Œ$@‰ÂÁâ)¿Õh$‰$è <貍ÿÿƒÄû¸eô[^_]ÐU‰åWVSƒì ‹] ÇEð‹E8ÿw‹Õ)Ѐ<…¸Â#uèlfǸÿÿÿÿéÊèc*…À„ÃœúX‰Â‰Uì‹E‹Õ)Ѝ4… Â#^‹^ ƒûÿts݉‹€ Þ#;F_¿ Þ#ÇEðv‹F+:‰FƒìF PS袵ÿÿ[‰ÐÁà)ЋÅd$ƒÄ‹•À$SRÿPD‹^ ƒÄƒûÿt݋:;F~°ƒìÿujÿìt#ƒÄƒ}ðtèdwÿÿ‹Uì‰ÐPéõúèÊ:‹ $R‰ÑÁá)Ñf‰Íh$‹E‹Õ)Ѝ4… Â#^‹^ ƒûÿtr݉‹€ Þ#;F^¿ Þ#ÇEð‰ö‹F+:‰FƒìF PSèÊ´ÿÿ[‰ÐÁà)ЋÅd$ƒÄ‹•À$SRÿPD‹^ ƒÄƒûÿt݋:;F~°ƒìÿujÿìt#ƒÄƒ}ðt贁ÿÿ¡Œ$@‰ÂÁâ)ƒì ¿Õh$Pèð9藋ÿÿƒÄû¸eô[^_]ÉöU‰åWVSƒì ¾¿¤Â#õ)óÁãǃ Â#‰4;ǃ¨Â#ƒì ƒ¬Â#PèÞ³ÿÿƒÃF‰;ƃ¨Â#ƒÄ‰Æþÿ~±Ç˜Þ#ÿÿÿÿÇpã#ƒìjh8»"芔ÿÿƒÄeô[^_]ÍvU‰åVS‹uú>ÿw‹Õ)Ѐ<…¸Â#uèÉcÇû¸ÿÿÿÿënvƒì ‹Õ)л Â#ÿ4ƒèUKƒÄ@P‹Õ)Ðÿ4ƒè™ÿÿ‹Õ)ÐÆDƒ‹Õ)Ћpã#‰…´Â#‹£pã#ƒÄû¸eø[^]ÉöU‰åƒì‹Mú9ÿw‹Õ)Ѐ<…¸Â#uècÇû¸ÿÿÿÿëb‰ö‹Õ)Ѓ<…¬Â#ÿtèîbÇû¸ÿÿÿÿë8‹Õ)ÐÆ…¸Â#‹Õ)Ћpã#‰…´Â#‹£pã#û¸ÉÉöU‰åSƒì‹M‹] 9ÿw‹Õ)Ѐ<…¸Â#uèubǸÿÿÿÿë_ú‹Õ)ÐÁàƒ¸¬Â#ÿu ‹€¨Â#‰ë7‰öÇ‹Õ)Ћ…¬Â#¹h$vÿ @‰ÐÁà)ЋDÁPƒøÿuëû¸‹]üÉÃU‰åVS‹u‹M¸ùÿ‡–ú‹pã#‰ƒúÿtnÕ)Ћ…´Â#£pã#‹Õ)л Â#ǃ‹Õ)Љ …¨Â#ƒì ‹Õ)Ѝ…¬Â#Pè±ÿÿ‹Õ)ÐÆDƒƒÄëègaÇû¸ÿÿÿÿëû¸eø[^]ÍvU‰åƒì‹M9ÿw‹Õ)Ѐ<…¸Â#uèaǸÿÿÿÿë=ú‹Õ)Ѝ… Â#ƒx ÿuƒxuèì`Ç û¸ÿÿÿÿë ‰öÿHû¸ÉÐU‰å‹E@‰ÂÁâ)¸fƒ<Ո$”À]ÐU‰åVS‹][‰ÐÁà)Ѝ4Åfƒ¾ˆ$uAƒì‹ݤÞ#Õ)Ѝ…¬Â#PSè°ÿÿ‹†d$ƒÄ‹…À$SPÿRD¸ƒÄ됸eø[^]ÃU‰åVSƒ=øt#…ÚÇøt#¹» Ç%¾$Ç%‰ÁàP ÆÇ2ÿÿÿÿÆDAƒùváƒìjjh€ã#èÜýÿÿ¹ƒÄ¾„É%»€É%‰ö‰ÁàQ‰0Ɖуù -véÇ´Ë%ÿÿÿÿÆ°Ë%ÇxÉ%¹¾äË%»àË%vÍ)ÈÁàQ‰0ƉуùvãÇÏ%ÿÿÿÿÆ Ï%Ç(Ï%eø[^]ÐU‰åWVSƒìŠEˆEóŠUˆUòfÇEæ¾<u€út €}óu€}òuè_Ǐ¸ÿÿÿÿé7‰öúƒ=xÉ%ÿuèí^ǍûÇEìÿÿÿÿ됡xÉ%€‹ՄÉ%‰xÉ%û‰Eìƒ}ìÿu -¸ÿÿÿÿéìvƒì h€ã#ègñÿÿƒÄ‹]¾¹º÷ñ‰×ëf‰ö¿€<Å@Ç%t0ƒìÿu¿ōƒ Ç%Pè³EƒÄ…Àu€»8Ç%„Ÿ¾ëG¹‰øº÷ñ‰×fÿEæfƒ}懜‰ó„Ût–¿Áãƃ@Ç%ƒìÿuƒ Ç%Pè÷D‹E쉃4Ç%ƒÄ€}óu‰Â’‹] f‰ňÉ%ëv‹E썀‹E ¯Ef‰ՈÉ%úƒì ‹U썒Áã·ƒˆÉ%Pè-“ÿÿºŒÉ%‰ƒÄû…Àu%è”]ǒƒì h€ã#èAõÿÿ¸ÿÿÿÿ魍v‹E썀ÁãS‰UྀÉ%‹ƒŒÉ%‰‚„É%‰2ƒìjjƒœÉ%Pè:ûÿÿƒÄ ·D3Pjƒ É%Pè#ûÿÿƒÄ jjÃ¤É%SèûÿÿŠ]ó‹Eàˆ\0ƒÄúƒ=(Ï%ÿuèø\ǎûÇEèÿÿÿÿë¡(Ï%Å)‹•äË%‰(Ï%û‰Eèƒ}èÿu_ƒì h€ã#èvôÿÿ‹Eèéä‰öè§\ǐƒì h€ã#èTôÿÿ¸ÿÿÿÿéÀ‰öèƒ\Ǒƒì h€ã#è0ôÿÿ¸ÿÿÿÿ霉ö‹EèÁà+EèÁà¹àË%ŠUòˆT P‹]ì‰
-‹] f‰\
-ǀäË%ÿÿÿÿ‰ºèË%‹]썛ÆՀÉ%ƍ¿ōr¿ Ç%€|>t%ƒì¶D>Pš<Ç%SèGõÿÿÆD>‰$èšøÿÿƒÄƒì h€ã#èŽóÿÿ¿EèƒÄeô[^_]ÍvU‰åWVSƒìŠEˆEóŠ]ÇEè¿ÆEç<u„Ût €}óu€ûuè‚[Ǐ¸ÿÿÿÿé0‰öúƒ=(Ï%ÿuèa[ǎûÇEìÿÿÿÿë ¡(Ï%Å)‹•äË%‰(Ï%û‰Eìƒ}ìÿu ¸ÿÿÿÿéߐ‹EìÁà+EìÁàºàË%ˆ\ ‹M f‰LǀäË%ÿÿÿÿƒì h€ã#è°íÿÿƒÄ‹U¾¹º÷ñ‰Öë]v¶€<Å@Ç%u ¿ÆEçë8ƒìÿu¶Å Ç%PèöAƒÄ…Àu¿ëF¹‰ðº÷ñ‰ÖÿEèƒ}è‡Ò‰ù„Ét €}çuR¶Á㸠Ç%ÆD ÆDƒìÿuPè>AƒÄ jjÃ<Ç%Sè/øÿÿÇ$€ã#èçñÿÿƒÄ jjSè:ïÿÿëM¶ōCº Ç%€|t'þDƒì h€ã#è®ñÿÿƒÄ jjƒ<Ç%Pèûîÿÿ됃ì h€ã#è‹ñÿÿƒÄ¶‹<Å4Ç%¿ŠUó:ŘÉ%tèªYǓ¸ÿÿÿÿéX‰ö€}óu¿·ňÉ%9E u€}ót(¿·ňÉ%™÷} …ÒtèdYǔ¸ÿÿÿÿéƒì h€ã#è ìÿÿ¶‹ÅDÇ%ƒÄƒúÿ„­€}óu#è&YǕƒì h€ã#èÓðÿÿ¸ÿÿÿÿéЍÕ)з…ôË%9E t"èíXǔƒì h€ã#èšðÿÿ¸ÿÿÿÿ鋋MìÁá+M썶Å »$Ç%‹‰äË%‹Mì‰ ë/‰öèŸXǑƒì h€ã#èLðÿÿ¸ÿÿÿÿë@¶‹Uì‰ÅDÇ%ƒì h€ã#è*ðÿÿ‹EìÁà+EìÁàH‰±èË%ºàË%‰<Æ¿EìƒÄeô[^_]ÉöU‰åWVSƒì¿E‰Eì‰ÇÁç)ÇÁ獗àË%‰Uðh€ã#èÏêÿÿ‹Mð‹Y›ÁãC‰Eèº$Ç%‹€Áà°€É%ƀ€É%F‰$èôÿÿF ‰$è„ôÿÿF$‰$èyôÿÿƒÄú·FPÿv 訍ÿÿû¹$Ç%‹Eè‹ú ’¡xÉ%‰̈́É%‰xÉ%ûƇàË%ƒÃ ‹Uð‹B‰ƒ$Ç%ú¡(Ï%‰‡äË%‹Mì‰ -(Ï%ûƃ Ç%Ç$€ã#è
-ïÿÿƒÄeô[^_]ÍvU‰åWVSƒì ‹u ŠM¿UÕ)Ѝ…àË%‰Eð‹@€ŀÉ%‹Eð€x uèûVǔ¸ÿÿév€;uèÞVǖ¸ÿÿéù‰ö€{tQ€{u,ƒì¶ÁP‹Uð·BPC PèÈëÿÿƒÄ…Àt;¸évƒì¶ÁP‹Uð·BPC PèœëÿÿƒÄ…ÀuÔƒì CPè-éÿÿƒÄ‹Uð·B‹{‰ÁÁéüó¥¨tf¥¨t¤·B‰ÁK‰K·S‰ÐC 9Ár‰È)ЉC€{u ƒì CPë8‰ö€{uƒì‹Uð·BPC$PèZïÿÿëƒì‹Uð·BPC$PèDïÿÿC‰$èíÿÿƒÄ¸eô[^_]ÐU‰åWVSƒì ‹} ŠM¿UÕ)Ѝ…àË%‰Eð‹@€ŀÉ%‹Eð€x uè‹Uǔ¸ÿÿév€;uènUǖ¸ÿÿéù‰ö€{tQ€{u,ƒì¶ÁP‹Uð·BPC$PèXêÿÿƒÄ…Àt;¸évƒì¶ÁP‹Uð·BPC$Pè,êÿÿƒÄ…ÀuÔƒì CPè½çÿÿƒÄ‹Uð·B‹s‰ÁÁéüó¥¨tf¥¨t¤·B‰ÁK‰K·S‰ÐC 9Ár‰È)ЉC€{u ƒì CPë8‰ö€{uƒì‹Uð·BPC Pèêíÿÿëƒì‹Uð·BPC PèÔíÿÿC‰$è-ìÿÿƒÄ¸eô[^_]ÐU‰åSƒìhM#è;ƒÄÿ5xÉ%h‹M#è;»ƒÄÝ)ØÁà€¸àË%t8àË%‹B€ŀÉ%ƒì ÿp ÿp$‹B€Å Ç%PShŸM#è®:ƒÄ Cƒûv­‹]üÉÃU‰åƒì`¿MÍ)ȋ…ðË%’ŀÉ%ÿp ÿp$RQhÀM#E¨Pèf:ƒÄ ÉÐU‰åSƒì‹]h€ã#èHæÿÿ¿ÓÕ)Ѝ …‹øË%€Å ƒÄ€º Ç%u ‹äË%‰‚$Ç%¿ÃÅ)ÂÁâƂàË%ú‹ -(Ï%‰ŠäË%£(Ï%ûƒì h€ã#èÓêÿÿƒÄ‹]üÉÍvU‰åWVSƒì ‹u ‹E‹<… $ú‹^…Ûu-ƒì j èdˆÿÿƒÄ…ÀtÇÿÿÿÿÇ@Ç@ÿÿÿÿ‹U‰‰F‹;Œ$u û¸#é~ƒ;ÿtc¾`$‰ö‹ -Œ$I‰ÐÁà)Ћ‰TÆP‹C‰„¬¡Œ$‰CÿCè`oÿÿ¡Œ$@‰ÂÁâ)ƒì ¿DÖPèŸ'èFyÿÿƒÄûúƒ;ÿu¤¡Œ$ÿD‡D¡Œ$‰û¸eô[^_]ÉöU‰åWVSƒì ‹E ‹x¸…ÿ„À‹;Œ$tû¸髍vúè*'‹Œ$ [‰ÊÁâ)Êf‰Õh$‹E‹… $ÿL˜DÇÿÿÿÿ‹_ÇGÿÿÿÿƒûÿt-p ‰Ù[‰ÐÁà)ЉÅ°$‹œž DŽŽ ÿÿÿÿƒûÿuÖÇGèfnÿÿ¡Œ$@‰ÂÁâ)ƒì ¿Õh$Pè¢&èIxÿÿƒÄû¸eô[^_]ÃU‰åVSƒì h$N#蒙ÿÿè]ƒÿÿ‰ÆÇ$蛆ÿÿ‰Ã‰µ $ƒÄ jh8N#Sè"8fÇCÍÆCÇCÇCxË"ÇC ÄË"ÇC$ÐË"ÇC(ØË"ÇC,Ì"ÇC04Ì"ÇC4|Ì"ÇC8ÜÈ"ÇC<ÄÌ"ÇC@ÄÉ"ºƒÄsK •ÇD@DŽ ÿÿÿÿBú™~ݍeø[^]ÉöU‰åVS‹E‹… $ƒì hN#è7¾ƒÄƒÃƒìÿt³@hN#èû6ƒÄFþ™~ãeø[^]ÃU‰å¸ÿÿÿÿ]ÉöU‰å]ÍvU‰åƒì‹E‹U ‹… $ƒÀƒ|@tƒìRj
-èȽÿÿƒÄÉÍvU‰å‹U :t ‹E -9u
-¸ëv¸ÿÿÿÿ]ÐU‰åSƒì‹] j è#…ÿÿ‰ÂƒÄ¸ …Òt!ÇÿÿÿÿÇBÇBÿÿÿÿ‹E‰‰S¸‹]üÉÍvU‰åSƒì‹] ‹Cƒxt ¸ë&‰öúƒ{tƒìj ÿsè4…ÿÿÇCƒÄû¸‹]üÉÍvU‰åWVSƒì ‹}‹u ú‹^…Ûu*ƒì j 胄ÿÿƒÄ…ÀtÇÿÿÿÿÇ@Ç@ÿÿÿÿ‰>‰Fƒ;ÿt
-û¸ë"‰ö¡Œ$‹½ $ƒÂÿD‚@¡Œ$‰û¸eô[^_]ÃU‰åWVSƒì ‹E ‹U‹• $ú‹p¸…ö„V‹;Œ$u û¸#éA‹Œ$‹F ¿`$;„“°v -¸é v¡Œ$‹Œƒ°‹“¬…Òt‰ö‹;Œ$…Š‹R…Òu븅À…†‹ -Œ$I‰ÂÁâ)‹ƒ¬‹‰D×P‹ƒ¬‹@‰„‹‹“¬¡Œ$‰B‹ƒ¬ÿ@èºjÿÿ¡Œ$@‰ÂÁâ)ƒì ¿D×Pèù"è tÿÿƒÄûúéRÿÿÿ‰ö¸;J ’Àérÿÿÿ‹E‹… $¡Œ$ÿDƒD¡Œ$‰¹‹ƒ¬‹V ë‰ö‰Á‹A…Àt;P sò…Ét‰q됉³¬…Àt‰p‰F‰Nû¸eô[^_]ÍvU‰åWVS‹}‹E ‹ ½ $ú‹X¸…Û„Ù‹;Œ$uû¸#éčv‹Œ$‹C ;„‘°s
-¸饡Œ$‹´°‹‘¬…Òt‰ö‹;Œ$u‹R…Òu︅Àuû¸ëk‰ö¸;r ’Àëåv‹ ½ $¡Œ$ÿDD¡Œ$‰¾‹¬‹S 됉ƋF…Àt;P sò…öt‰^됉™¬…Àt‰X‰C‰sû¸[^_]ÉöU‰åWVSƒì ‹E ‹x¸…ÿ„ï‹;Œ$tû¸éڍvúè&!‹Œ$ [‰ÊÁâ)Êf‰Õh$‹E‹… $‰EðÿL˜DÇÿÿÿÿ‹_ÇGÿÿÿÿƒûÿt2‰ÆƒÆv‰Ù[‰ÐÁà)ЉÅ°$‹œžDŽŽÿÿÿÿƒûÿuÖÇG‹O‹W…Éu -‹Eð‰¬ë‰ö‹G‰A…Òt‹G‰Bè3hÿÿ¡Œ$@‰ÂÁâ)ƒì ¿Õh$Pèo èrÿÿƒÄû¸eô[^_]ÐU‰åVSƒì hdN#è^“ÿÿè)}ÿÿ‰ÃÇ$€èg€ÿÿ‰Æ‰4 $ƒÄ jhxN#Vèî1fÇFÌÆFÇFÇF€Ò"ÇF Ó"ÇF$0Ó"ÇF(`Ó"ÇF,¨Ó"ÇF0ÔÓ"ÇF4,Ô"ÇF8<Í"ÇF<ÄÎ"ÇF@ÈÏ"ºƒÄ^N•ÇD@DŽ°ÿÿÿÿDŽÿÿÿÿBú™~Òdž¬eø[^]ÐU‰å‹U‹M ¸ÿÿÿÿ…Òt;‹‹… $ƒxu‹@%ÿÿÿ=Ìu…Ét ‹B‹@ ‰ë
-‰ö¸ÿÿÿÿ됸]ÐU‰å‹U‹M¸ÿÿÿÿ…Òt@‹‹… $ƒxu‹@%ÿÿÿ=Ìt¸ÿÿÿÿ됅Ét‹B‹@ ‰‹R‹E ‰B ¸]ÃU‰å‹E‹M ‹U‹… $‰”ˆ°]ÃU‰åWVSƒì‹E‹<… $hN#è0»ƒÄwƒìÿtž@hN#èó/ƒÄCû™~ãƒì hBN#èÚ/»ƒÄ‰öƒìÿ´Ÿ°h^N#è¼/ƒÄCû™~àeô[^_]ÃU‰å‹U :t ‹E -9u
-¸ëv¸ÿÿÿÿ]ÐU‰åS‹E‹U ‹]‹ … $Áâ‹C‰„°ÇD
-D‹$ÉÉöU‰åVS‹E‹u ‹… $ƒ|³DtƒìVj
-èD¶ÿÿƒÄë vÇD³DDŽ³°ÿÿÿÿeø[^]ÉöU‰å‹U :t ‹E -9u
-¸ëv¸ÿÿÿÿ]ÐU‰åSƒì‹] jèƒ}ÿÿ‰ÂƒÄ¸ …Òt1ÇÿÿÿÿÇBÇBÿÿÿÿ‹E‹@‰B ÇB‹E‰‰S¸‹]üÉÍvU‰åSƒì‹] ‹Cƒxt ¸ë&‰öúƒ{tƒìjÿsè„}ÿÿÇCƒÄû¸‹]üÉÍvU‰åWVSƒì$·]Sh‚N#è .‰Ø-yƒÀÁèƒÄ ·À‰Eè@ÛÁã¿àÛ%ÿt8CP‰Eä·8Ph‰N#èá-ƒÄ ÿt;·D;Ph—N#èÊ-ƒÄ ÿt; s·>Ph¨N#è±-ƒÄ ÿt>·D>Ph¹N#èš-ƒÄ ‹Uä·D:P·DLPhÊN#è~-‹UèÕƒÄ·ØShÛN#èc-EóPEòPEìPS蹃ĶUóR¶UòRÿuìPh O#è6-ƒÄ eô[^_]ÍvU‰åWVSƒì ‹E‹U‹]¹‹u ƒî‰ƒî‰ºÀ^&fƒ=À^&yA¿Áfƒ<Byfù™~îfù™~ƒì hðN#èÎ,¸ƒÄé ¿Á<¹À^&‰Úf Ê€f‰Ǎ<ÿÁçºàÛ%‰tÇD _ÇDfŒÙf‰LfÇfÇDÇD _ ‹M‰ ÇDÇDO0ÇDÇD Ǎ_@ÇÇD‰t‰t fŒÉf‰L fŒÙf‰LfŒÛOPf‰\fŒÛf‰fÇD 0fÇD0O`fÇfÇDfÇDÇLÜ%¾`&¹üó¥Å˜eô[^_]ÐU‰åVS‹u ¿E-‰Â…ÀyP‰ÐÁø@ÀÁà¹àÛ%f‰tX@Vf‰T f‰t ƒÀPf‰tf‰4[^]ÉöU‰å¿E-‰Â…ÀyP‰ÐÁøfDŽÀ^&]ÉöU‰åSƒì‹]¿E PhO#Sè~3‰ØƒÄ‹]üÉÃU‰åVS趉Æès»‰öƒìhlÞ"SèƒÄhø×"SèìƒÄCƒû~ۉðeø[^]ÉöU‰åƒìèaÉÍvU‰åSƒì‹]‹üt#€82uºð°îƒìShbP#èˆ*ƒÄÁ㋃üt#@Ph½Z#èp*ƒÄÿ³@u#ènƒÄ‹]üÉÉöU‰åƒìÿuhyP#èE*èèûÇ$èG7ƒÄÉÉöU‰åWVSƒì‹E‹} ƒ=$Ú%„à…ÿ„Ø¡ Ð%€€€ źm¶‰È÷â‰È)ÐÑ草ÁÁé
-‰O¡¤Ð%ÀP‰ÐÁà)кè‰Ó™÷û’’’щW¡¤Ð%ÀP‰ÑÁá)ѾÓMb‰È÷îÁú‰ÈÁø‰Ó)øƒÞC÷o‰ÑÁù‹GÁø)Á‰È؉‹OÁú‰ÈÁø)’’’’’’Áâ)э ‰ ‰ ‰Áá‰O‹éԉö]è¡ Ð%€€€ źm¶‰È÷â‰È)ÐÑ草ÁÁé
-¡¤Ð%ÀP‰ÐÁà)кè‰Ö™÷þ’’’щS¡¤Ð%ÀP‰ÑÁá)ѾÓMb‰È÷îÁú‰ÈÁø)‰Uè‹{¸ƒÞC÷ï‰ÑÁù‰øÁø)Á‰ÈEè‰ùÁú‰ÈÁø)’’’’’’Áâ)э ‰ ‰ ‰Áá‰K‹E荀€€€€€‰ÃÁã‰È÷îÁúÁù)ʍéèvƒøuc¸ƒ=”Ð%…Ρ˜Ð%€€€€€€‰ÃÁã‹ -œÐ%ºÓMb‰È÷êÁúÁù)ÊӅÿ„…¡˜Ð%‰¡œÐ%éqvƒø…綄Ð%ƒøtƒø…Àt
-ë,ƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹ -Ð%f)Ù·É - Ð%º×®¬]‰È÷êÁú‰ÈÁø)¤Ð%’BÁà)Ѝ‚‰ÂÁâ Ð)Á‰È£ Ð%f‰Ð%…ÿ„̍€€€ źm¶‰È÷â‰È)ÐÑ草ÁÁé
-‰O¡¤Ð%ÀP‰ÐÁà)кè‰Ó™÷û’’’щW¡¤Ð%ÀP‰ÑÁá)ѺÓMb‰È÷êÁú‰ÈÁø‰Ó)Ëw¸ƒÞC÷î‰ÑÁù‰ðÁø)Á‰È؉‰óÁú‰ÙÁù)ʍ’’’’’’Áâ‰Ø)Ѝ€€€Áà‰G‹ Ð%’’’4Õ¹Á6ۉð÷é‰Ó3‰ÁÁù
-‰ð™‰È)Ћ -¤Ð%ɍ‘ÑÁâ)ʉÑÁá)эÈ鍃ø…ƒ=”Ð%…rU衘Ð%‰¡œÐ%‰B»@¹C°Ò‰Êî‰Úì¶ÈìÁàf¶Ñ зð· Ú%9Æv%h†P#j_h˜P#hŸP#èm%Ç$èmƒÄ· Ú%)ó¯ˆÐ%· Ú%‰Ø‰Ñº÷ñ‰Ãº °
-îì©t‹ -ˆÐ%;ÍÌÌ̉ð÷âÁê9Ós‰Ëu荛€€‹V‰Eä‰F¸¡/¸D÷mä‰ÑÁù‹EäÁø)Á‰ÈEè‹N¸¡/¸D÷éÁú‰ÈÁø)’’’’’’’’’Áâ )щN¡˜Ð%€€€€€€Áà‰Eä‹ -œÐ%ºÓMb‰È÷êÁúÁù)ʋEäÐÅÿt ‰ð‹‰‹@‰G‰Øëv¸eô[^_]ÍvU‰åVSƒìŠEˆE÷ÿ¨u#ƒ=¨u#uƒ=„u#tÿ„u#¶E÷€ÁàºLÏ%ƒ<uIÇö€PÏ%tûƒì ¶]÷›Áã¾@Ï%ÿ43ÿ“DÏ%ƒÄöDtú¶E÷€Ç…LÏ%ÿŒu#ƒ=¨u#uƒ=ˆu#tÿˆu#ÿ -¨u#eø[^]ÍvU‰åWVSº¿LÏ%¾HÏ%»DÏ%¹@Ï%’ÁàÇ8‰0ÇÇBƒú~ÜǨu#[^_]ÐU‰åVS‹U‹] ‹uú’ƒ<…LÏ%t÷Æu¸ÿÿÿÿëH’ …ǁLÏ%û…Ût‰™DÏ%º@Ï%HÏ%‰‰t
-됍’Ç…LÏ%¸[^]ÐU‰å¡¨u#]ÉöU‰åSƒì¶„Ð%ƒøt!ƒø…Àt ë.‰öƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹ -Ð%f)Ù·É - Ð%º×®¬]‰È÷êÁú‰ÈÁø)¤Ð%’BÁà)Ѝ‚‰ÂÁâ Ð)Á‰ - Ð%f‰Ð%ÿ¨u#ƒ=¨u#uƒ=„u#tÿ„u#¡œÐ%‰Ã„ã#º¡/¸D‰Ø÷êÁú‰ÙÁù)ʘÐ%’’’’’’’’’Á⠉Ø)УœÐ%‹€Ð%ë$‹¡ŒÐ%‰‰ŒÐ%‰€Ð%ƒì ÿrÿRƒÄ‰Ú…Òt‹B ;˜Ð%;˜Ð%uƋB;œÐ%~»ƒ=¨u#uƒ=ˆu#tÿˆu#ÿ -¨u#‹]üÉÃU‰åWVSƒì‹uhÈì"j@èØ -ƒÄƒ>t,ƒì h¹P#èß »ÿÿƒÄ¿@¹C°8‰ÊîˆØ‰úîëaƒì hÕP#è³ ‹N‰ -ˆÐ%ɍA‰ÂÁâ‰Ñ)ÁºÓMb‰È÷âƒÄ‰ÑÁéu¹f‰ - Ú%‰Ë¿@¹C°4‰Êî‰úˆØî‰ØfÁèî‹£”Ð%ƒ=„`&~»A¹C°p‰ÊÚîîÆ„Ð%ë%Æ„Ð%»B¹C°°‰ÊÚîîºa°îº!ì%þî¹¾ÀÐ%»ÄÐ%ƒùbIÁàØÐ%‰0I‰LÃAƒùc~ßÇÚ%ÇŒÐ%ÀÐ%Ç„u#Lju#¡ˆÐ%€€€Áࣄã#ÇœÐ%ǘÐ%Ç Ð%ǤÐ%fǐÐ%ƒ=”Ð%uÇ($¸ã"Çh$Pä"ëÇ($ ä"Çh$,ë"eô[^_]ÃU‰å‹E£„u#]ÍvU‰å‹E£ˆu#]ÍvU‰å‹E£”u#]ÍvU‰åWVSƒì ‹E‹U ‰Eè‰Uì¸ÿÿÿÿƒ=ŒÐ%tl‹ -ŒÐ%‹£ŒÐ%‹E‰A‹Eè‰A ‹Eì‰A‹E‰A»‹€Ð%}è‹uè됋…Òt‰ð;B  -;B u‹G;B~‰Óëâ‰ö…Ût‰ ë‰ -€Ð%‰‹AƒÄ [^_]ÐU‰å‹E¹‹€Ð%됉ы…Òt;Buó¸ÿÿÿÿ…Òt$…Éu
-‹£€Ð%됋‰¡ŒÐ%‰‰ŒÐ%¸]ÃU‰åWVSƒì,‹E‹U ‰Eè‰Uì¸ÿÿÿÿƒ=ŒÐ%„q‹5ŒÐ%‹£ŒÐ%‹E‰F‹Eè‰F ‹Eì‰F‹E‰Fº‹€Ð%}è‹Mè됋…Ût‰È;C  -;C u‹G;C~‰Úëâ‰ö…Òt‰2鐉5€Ð%ƒ=$Ú%…ôƒìEàPjè3óÿÿ‹€Ð%ƒÄ‹Eà;B  -;B u‹Eä;B~ÇEÜÇEØëK}؋€Ð%Mà‹B;A|‹B +Eà‰E؉Ћ@+Aë ¡€Ð%‹@ +EàH‰EØ¡€Ð%‹@+Eäʚ;‰G‹E؍€€€€€€Áà‰EԋMÜ¿ÓMb‰È÷ïÁúÁù)ÊUԍҍB‰ÂÁâ)‰Ð÷çÁê¸ðúðw¸ÈúÇv‰Ðº@îfÁèFeô[^_]ÃU‰åWVSƒì¶„Ð%ƒøtƒø…Àt
-ë,ƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹Ð%f)Ú·Ò‰Ö5 Ð%¹×®¬]‰È÷î‰ÑÁù‰ðÁø)Á -¤Ð%‰AÁà)ȍÁ‰ÁÁá ȉò)‰ Ð%f‰Ð%]荒’’ Õ¾m¶‰ð÷á‰Ö‰Ê)òÑê2‰ÁÁé
-¡¤Ð%ÀP‰ÐÁà)кè‰Ö™÷þ’’’щS¡¤Ð%ÀP‰ÑÁá)ѺÓMb‰È÷êÁú‰ÈÁø)‰Uè‹s¿ƒÞC‰ð÷ï‰ÑÁù‰ðÁø)Á‰ÈEè‰ðÁú‰ñÁù)ʍ’’’’’’Áâ)Ѝ€€€Áà‰Cƒ=€Ð%„/Ç$Ú%‹€Ð%‹Eè;B ;B …Œ‹C;BŽ€ƒ=¨u#uƒ=„u#tÿ„u#ÿ¨u#‹€Ð%ë#‹¡ŒÐ%‰‰ŒÐ%‰€Ð%ƒì ÿrÿRƒÄ‰Ú…Òt‹B ;Eè -;EèűB;Eì~ă=¨u#uƒ=ˆu#tÿˆu#ÿ -¨u#¶„Ð%ƒøt"ƒø …Àt -ë/vƒøtë%¹@°ë#v¹A°ëv¹B°ë v»ë"ºCÐî‰Êì¶ØìˆÁ‰ÊÁâf¶Ã‰Ó Ãf‹Ð%f)Ú·Ò‰Ö5 Ð%¹×®¬]‰È÷î‰ÑÁù‰ðÁø)Á -¤Ð%‰AÁà)ȍÁ‰ÁÁá ȉò)‰ Ð%f‰Ð%]荒’’ Õ¾m¶‰ð÷á‰Ö‰Ê)òÑê2‰ÁÁé
-¡¤Ð%ÀP‰ÐÁà)кè‰Ö™÷þ’’’щS¡¤Ð%ÀP‰ÑÁá)ѺÓMb‰È÷êÁú‰ÈÁø)‰Uè‹s¿ƒÞC‰ð÷ï‰ÑÁù‰ðÁø)Á‰ÈEè‰ðÁú‰ñÁù)ʍ’’’’’’Áâ)Ѝ€€€Áà‰C‹€Ð%‹Mè;J 
-;J u;B~ÇEäÇEàëJ]à‹€Ð%Mè‹B;A|‹B +Eè‰Eà‰Ð‹@+Aë ¡€Ð%‹@ +EèH‰EࡀÐ%‹@+Eìʚ;‰C‹Eà€€€€€€‰ÆÁæ‹Mä»ÓMb‰È÷ëÁúÁù)ʍ2ҍB‰ÂÁâ)‰Ð÷ãÁê¸ðúðw¸ÈúÇv‰Ðº@îfÁèîÇ$Ú%ë -‰öº@°î°ðîeô[^_]ÐU‰åVSƒì‹E»¹‹€Ð%ëv‰Ñ‹…Òt;Buó¸ÿÿÿÿ…Ò„I…Éu‹£€Ð%»ë‹‰¡ŒÐ%‰‰ŒÐ%ƒ=$Ú%…ƒ=€Ð%uº@°î°ðéû‰ö…Û„òƒìEðPjèºìÿÿ‹€Ð%ƒÄ‹Eð;B  -;B u‹Eô;B~ÇEìÇEèëJ]è‹€Ð%Mð‹B;A|‹B +Eð‰Eè‰Ð‹@+Aë ¡€Ð%‹@ +EðH‰E血Ð%‹@+Eôʚ;‰C‹E荀€€€€€‰ÆÁæ‹Mì»ÓMb‰È÷ëÁúÁù)ʍ2ҍB‰ÂÁâ)‰Ð÷ãÁê¸ðúðw¸ÈúÇv‰Ðº@îfÁèeø[^]Éöú‹D$¼ˆó#PèŒëÿÿ`fff f¨f¸0ŽØŽÀ° º u#@£u#1ÛfŒÓü¡”Ð%ƒøtèùòÿÿëè6ùÿÿ°
-º îì¨t ¸@Pè–ÿÿÿf¡˜u#f9žu#t f£žu#ÿ-šu#ƒ=”u#t‹”u#ÿÓf©f¡ffaωöU‰å‹EØf£žu#f£˜u#]Ã1ÀÈÃU‰åf¸0ŽØŽÀ‹Ef;žu#t f£žu#ÿ-šu#]ÉöU‰åƒìjjjj@èaƒÄÉÃU‰åWVSƒì ‹]‹u ‹}聉€:y"…Ût‹B8‰…öt‹BÁà
-‰…ÿt)‹B4‰ë"‰ö…ÛtÇ…öt‹BÁà
-‰…ÿtÇ@ƒ}t ‹BÁà
-‹U‰ƒÄ [^_]ÍvU‰åƒìjjjj@è̓Ä·@0ÉÃU‰å¡Xs#]ÉöU‰å]ÍvU‰åSƒì‹Xs#誃ì SèÅMÿÿè ƒÄ‹]üÉÃU‰åWVS‹M ‹u‹}Š]‰ÈÁàeèÿÿ Eè‰ÈÁèUèˆBáÿbÿÿÿ J‰ðˆB‹Ef‰Eè‹EÁè‰EäŠEäƒà ÃË@¶ÃÁàbÿÿÿ Bçüÿ=Js#‹‰‹B‰G[^_]ÐU‰åWVSƒì ‹] ‹u‹}·EMèJs#‹‰‹@‰A‰Ê¶JÁá¶B ÁÁá·B Á…ÛtŠBƒà¶ÐÁâ·Eè Љ…ötŠE툅ÿt
-ŠEî%ðˆ‰ÈƒÄ [^_]ÉöU‰å‹E ¶UÁâ¹`v#fÇD
-8Ƃev#îƂdv#f‰
-Áèf‰D
-]ÍvU‰åº °îº!°@î°î°î°ÿ°°pî°î°î°ÿî]ÐU‰åº °îº!°î°î°î°ÿ°°pî°î°î°ÿî]ÐU‰å‹Mf…ÉtWfƒùw¸Óà
-¤u#ë7fƒùw<·Éƒé¸Óà
-¥u#¢¥u#º¡î<ÿu ¤u#©uƒÈ¢¤u#º!î]ÃU‰å‹Mf…ÉtUfƒùw¸þÿÿÿÓÀ"¤u#ë5fƒùw:·Éƒé¸þÿÿÿÓÀ"¥u#¢¥u#º¡î ¤u#©t%û¢¤u#º!î]ÉöU‰å¿˜u#]ÃU‰åƒì‹Ef£˜u#˜PèWüÿÿƒÄÉÐU‰å¿˜u#]ÃU‰åƒì‹E‰Âf£˜u#ƒ=¨u#uƒì ¿ÂPèüÿÿƒÄÉÐU‰åWVì¾¹°u#ºðu#‰öµÇèô"Çèô"Fƒþ~åƒì EÈPèÅèºÇ€`&!Q#‹EÈ£„`&¶¬u#£ˆ`&ƒÄ‹EУ`&‹EÔ£”`&‹EØ£˜`&h‘ö"jè£ýÿÿƒÄh›ö"jè”ýÿÿƒÄh¥ö"jè…ýÿÿƒÄh¬ö"jèvýÿÿƒÄh³ö"jègýÿÿƒÄhºö"jèXýÿÿƒÄhÁö"jèIýÿÿƒÄh÷"jè:ýÿÿƒÄhÈö"jè+ýÿÿƒÄhÏö"j èýÿÿƒÄhÖö"j
-è -ýÿÿƒÄhÝö"j èþüÿÿƒÄhäö"j èïüÿÿƒÄhëö"j -èàüÿÿƒÄhòö"jèÑüÿÿƒÄhùö"jèÂüÿÿƒÄh÷"jè³üÿÿƒÄhÀõ"jAè¤üÿÿƒÄhÈõ"jBè•üÿÿƒÄhÐõ"jCè†üÿÿƒÄhØõ"jDèwüÿÿƒÄhàõ"jEèhüÿÿƒÄhèõ"jFèYüÿÿƒÄhðõ"jGèJüÿÿƒÄhøõ"jpè;üÿÿƒÄhö"jqè,üÿÿƒÄhö"jrèüÿÿƒÄhö"jsèüÿÿƒÄhö"jtèÿûÿÿƒÄh ö"juèðûÿÿƒÄh(ö"jvèáûÿÿƒÄh0ö"jwèÒûÿÿf -ô_&€¾ƒÄvÀÅàÛ%ƒì jh‰hØPõ·ÀPèúÿÿƒÄ Fþš~ǃì hÐèFùÿÿƒÄÛãݵTÿÿÿ›¿`&µTÿÿÿ¹üó¥ ÀƒÈ""ÀÛãèƒûÿÿèúÿÿeø^_]ÍvU‰åSƒìº!°ÿîè’ûÿÿ¹@ºC°6Êîîƒ=„`&~¹AºC°tî°‰Êî°ë»B¹C°°‰ÊÚîîºaî‹]üÉÃU‰å‹U‹E ‰•ðu#]ÉöU‰å‹U‹E ‰•°u#]ÉöU‰åƒìhQ#è
-è— ƒÄÉÉöœX‰Á5PœX9ÈtQ¸Ã¸ÜX‰Á5 PœX1ÈtQ¸øÃf1Àžf¸f»öóŸ€üu¸øÃƬu#Ûã¹âþfÇ®u#ZZÝ=®u#¹âþf¡®u#<u+Ù=®u#¹âþf¡®u#f%?fƒø?uƬu#Ƭu#Éö`¸ëp`¸ëh`¸ë``¸ëX`¸ëP`¸ëH`¸ë@`¸ë8`¸ ë0`¸
-ë(`¸ ë `¸ ë`¸ -ë`¸ë`¸ë ¨Pf¸0ŽÀŽØüX1ÛfŒÓP‹…°u#ÿÓ[° ƒûrº îº îf¡˜u#f;žu#t f£žu#ÿ-šu#©¡aϸ鋸選ëz¸ës¸ël¸ëe¸ë^¸ëW¸ ëP¸
-ëI¸ ëB¸ ë;¸ -ë4¸ë-¸ë&¸ë` ¨f¸0ŽÀŽØüèש¡aÏPf¸0ŽØŽÀXfŒÓ‹=Js#ß1ۊŠ_Áãf‹_ÜfŒÒfŒÛŽÓSRPÿ…ðu#ƒÄX[ŽÐ)ÜÏU‰åWVSƒì ‹u¸¹ ‰÷üó«è|ýÿÿ…ÀtÇëUèŠýÿÿ…Àt7ÇFǸ¢‰^‰N‰V …Àt+¸¢‰F‰^‰N‰V ëÇècýÿÿ…ÀtÇ ƒÄ [^_]ÍvU‰åWV¿0v#È·À-yƒÀÁø9ÂtU¿0v#@ÀÝ4ÅLÜ%›È·À-yƒÀÁøf£0v#¿50v#¿À`&4v4ö4õLÜ%¹üó¥Ý%À`&^_]ÉöU‰å¿0v#]ÃU‰åWVSƒì(ŠM¡4v#Áà ˜€ f¶.a&f£Šó#f¶-a&f£Œó#€ù t%€ù €ù„óé‰ö€ù
-„#é‰öfƒŠó#·Šó#;0a&Œ½fÇŠó#·Œó#¡4a&H9Â…¿¡0a&H‰Eì‰Uèf¾,a&Áâf‰Uò¡4v#Áà °€ ¿;}è:¹;Mì*_ÿv‰ø¯0a&È·F‰Ø¯0a&Èf‰FA;Mì~ÜG;}è~ƹ;MìKWÿ‰Ð¯0a&Èf‹]òf‰FA;Mì~çé)‰öfLjó#·Šó#‰Áƒø~ºƒÂ·ÂƒÀ9È|óf‰ˆó#f¡ˆó#f£Šó#éævfÇŠó#·Œó#¡4a&H9Â…¾¡0a&H‰Eà‰UÜf¾,a&Áâf‰Uæ¡4v#Áà °€ ¿;}Ü=v¹;Mà*_ÿv‰ø¯0a&È·F‰Ø¯0a&Èf‰FA;Mà~ÜG;}Ü~ƹ;MàGWÿ‰Ð¯0a&Èf‹]æf‰FA;Mà~çé%‰öfÿ -Šó#·Šó#·Œó#¯0a&ÂÆS fÿŠó#éõ‰ö·Šó#·Œó#¯0a&Ј CfÿŠó#·Šó#;0a&Ž¿fÇŠó#·Œó#¡4a&H9Â…š¡0a&H‰EԉUÐf¾,a&Áâf‰UÚ¡4v#Áà °€ ¿;}Ð=v¹;MÔ*_ÿv‰ø¯0a&È·F‰Ø¯0a&Èf‰FA;MÔ~ÜG;}Ð~ƹ;MÔ'Wÿ‰Ð¯0a&Èf‹]Úf‰FA;MÔ~çëfÿŒó#·5Šó#·=Œó#‰øf¯0a&f‰EΡ4v#Áà fEÎfuλÔ°‰Úî¹Õ‰ÊŠEÎî°‰Úîf‹EÎfÁè‰Êî‰óˆ.a&‰ø¢-a&ƒÄ([^_]ÐU‰åWVSƒì‹u‹} ‰øf¯0a&f‰Eò¡4v#Áà fEòfuò»Ô°‰Úî¹Õ‰ÊŠEòî°‰Úîf‹EòfÁè‰Êî‰ð¢.a&‰úˆ-a&ƒÄ[^_]ÍvU‰åS¹Ô°
-‰Êî»Õ‰ÚŠEî° ‰Êî‰ÚŠE î‹$ÉÍvU‰åWVSƒìf¾EÁàf‰Eò¡4v#Áà ¸€ ‹]ë0‹M ;M(sÿ‰Ø¯0a&È·G‰ð¯0a&Èf‰GA;M~ÜC;]~ʋM ;MSÿv‰Ð¯0a&Èf‹]òf‰GA;M~çƒÄ[^_]ÍvU‰åWVSƒì ¡0a&H‰Eð‹4a&K‰]ìf¾,a&Áàf‰Eê¡4v#Áà °€ ¿9ß<‰ö¹;Mð*_ÿv‰ø¯0a&È·F‰Ø¯0a&Èf‰FA;Mð~ÜG;}ì~ƹ;MðWÿ‰Ð¯0a&Èf‹]êf‰FA;Mð~çƒÄ [^_]ÍvU‰å·J‰0a&¶„@£4a&¶„ÿ ¢,a&¶P¢.a&¶Q¢-a&¶`¢ó#¶a¢Žó#Ç8v#Ç4v#]ÃU‰åWVSƒì .a&¢P -a&¢Q¶ÀP¶.a&PèŠýÿÿ¶Žó#¶5ó#ƒÄ¹Ô°
-‰Êî¿Õ‰úˆØî° ‰Êî‰ú‰ðîeô[^_]ÍvU‰åSƒì‹]€;tŠCƒì ¾ÀPèiùÿÿƒÄ€;ué‹]üÉÃU‰åVS‹E‰ÃÁã £8v#¹Ô° -‰Êî¾Õ‰òˆØî° ‰Êî‰ØfÁè‰òî[^]ÃU‰åVS‹u‹4v#Áâ» ó#¶.a&‰¹Àó#¶-a&‰
-µŠ¢.a&Š
-¢-a&‰54v#[^]ÃU‰å¡8v#]ÉöU‰å¡4v#]ÉöU‰åWVSƒì ‹}f¾u Áæf¾E Ƌ]‹E9Ã3v‹M9ù#‰Ê¯0a&¡4v#Áà ÐØf‰´€ A9ù~ÞC;]~ЃìÿuÿuèüÿÿŠE¢-a&ŠE¢.a&ƒÄeô[^_]ÍvU‰åWVSƒì ¡0a&H‰Eð‹=4a&Of¾,a&ÁãƒË ¾9Æ4¹9ù%v‰Ê¯0a&¡4v#Áà Ððf‰œ€ A9ù~ÞF;uð~̃ìjjèûÿÿÆ-a&Æ.a&ƒÄeô[^_]ÍvU‰åS‹U ‹]‹M¯0a&¡4v#Áà ÂU”€ ˆ
-ˆZ‹$ÉÉöU‰åS‹E ‹]‹M‰Â¯0a&¡4v#Áà ÂU”€ ¶B…Étˆ¶‰Â…Ûtˆ¾Â‹$ÉÐU‰åS‹E ‹MŠ]‰Â¯0a&¡4v#Áà ÂU”€ €9tŠˆABˆB€9uò‹$ÉÐU‰åƒìh<Q#èTýÿÿôƒÄÉÉöU‰åƒìjèƒÄÉÉöU‰åƒìh4èƒÄÉÍvU‰åVS‹Ef£r¹d»þ¾v‰Êì©t Fþÿÿ~í¸@=Ÿ†~ø‰ÚˆÈö@=Ÿ†~øë‰öU‰åSƒìE Pÿuhàó#èX‰ÃÇ$àó#è¢üÿÿ‰ØƒÄ‹]üÉÃU‰åWVSìð‹} ŠEˆ…ÿÿÿEPÿuÿÿÿSè‰ÆS¾…ÿÿÿPWÿuè±þÿÿ‰ðƒÄ eô[^_]ÃU‰åSƒìE Pÿuhàõ#謉ÃÇ$àõ#è&üÿÿ‰ØƒÄ‹]üÉÃU‰åS‹M‹U ‰Ë€:tvŠˆBA€:uõƉ؋$ÉÍvU‰åVS‹]‹U ‹M‰Þë‰öŠˆBC€:t‰ÈI…ÀîƉð[^]ÐU‰å‹U‹M ë -¸€:tBAŠ:t)Ð]ÃU‰åS‹U‹] ‹M…Éëv¶¶Sÿ)Ð됊C8uíŠB„ÀtIu︋$ÉÐU‰å‹U¸€:tB@€:uù]ÍvU‰åS‹E‹] €8t‰Ú€:tŠv:
-tB€:uö@€8u下$ÉÉöU‰å‹E‹U €8t ‰ö8t @€8uö¸]ÍvU‰åS‹]‰Ú€;t‰öŠ
-AŸ<wAàˆB€:uì‰Ø‹$ÉÐU‰åS‹]‰Ú€;t‰öŠ
-A¿<wA ˆB€:uì‰Ø‹$ÉÐU‰åS‹U‹M ‰Ó€;tvB€:uú늈AB€9uõƉ؋$ÉÍvU‰åWVSƒì<‹u‹]ÇEèÇEäÇEàÇEÜÇEØÇEÔÇEпÇEÌÙîÝ]À‰uì‹E €8„D‹U €:%t…ÿuŠˆB‰U FÿEèév‹E €8%u%@‰E ¿ÇEä
-ÇEàÇEØÇE̋U ¾ƒè%ƒøS‡Ñÿ$…>#‰öÆ%FÿEè鼃ÉòFŠCüˆÿEè驐ƒ}Øt"ƒ}؃}Øtëƒ}ØuƒÃ‹Cü‰EÔë -vƒÃ¿Sü‰Uԃì ÿuÌÿuäj
-VÿuÔè¾ éœƒ}Øt"ƒ}؃}Øtëƒ}ØuƒÃ‹Cü‰EÐë -vƒÃ·Sü‰UЃì ÿuÌÿuäj
-VÿuÐè.éPƒ}Øt"ƒ}؃}Øtëƒ}ØuƒÃ‹Cü‰EÐë -vƒÃ·Sü‰UЃì ÿuÌÿuäjVÿuÐèâ鐃ËCü‰EЃì jÿuäjVPèÂé䐃ËSü€:tŠˆBFÿE܀:uò‹UÜUèévƒ}Øtƒ}؃}Øtëƒ}Øu ƒÃÝCøÝ]ÀƒìÿuÌÿuàÿuäVÿuÄÿuÀèYë~vƒ}Øtƒ}؃}Øtëƒ}Øu ƒÃÝCøÝ]ÀƒìÿuÌÿuàÿuäVÿuÄÿuÀè} -ë>vƒ}Øtƒ}؃}Øtëƒ}Øu ƒÃÝCøÝ]ÀƒìÿuÌÿuàÿuäVÿuÄÿuÀèa‰EÜEèÆ¿ƒÄ é±ÇEØé¥ÇEØ陃MÌ鐍vƒMÌ鄍v¿ƒMÌëvƒÿu?ƒìEìPj
-ÿu èb
-‰EäƒÄ‹E €80u ÷EÌtƒMÌ됃MÌ‹UìJ‰U ë4vƒÿu,ƒìEìPj
-ÿu è
-‰Eà‹EìH‰E ¿ƒÄë‰ö¿ÿE ‹U €:…¼üÿÿÆ‹Eèeô[^_]ÉöU‰åƒì EPÿu ÿuè7üÿÿƒÄÉÉöU‰åWVSƒì,‹u‹} ‹]ÇEìÇEèÇEäÇEàÇEÜÇEØÇEÔÇEЉuð€?„>€?%tƒ}Ôu ŠˆGFÿEìëá€?%uGÇEÔÇEè
-ÇEàÇEоƒè%ƒøS‡çÿ$…P?#Æ%FÿEìéԃÉòFŠCüˆÿEìéÁƒ}àt&ƒ}àƒ}àt
-ë"ƒ}àt
-ëƒÃ‹CüëƒÃ‹CüëƒÃ¿Cü‰E܃ì ÿuÐÿuèj
-VÿuÜè鏐ƒ}àt&ƒ}àƒ}àt
-ë"ƒ}àt
-ëƒÃ‹CüëƒÃ‹CüëƒÃ·Cü‰E؃ì ÿuÐÿuèj
-ëBƒ}àt&ƒ}àƒ}àt
-ë"ƒ}àt
-ëƒÃ‹CüëƒÃ‹CüëƒÃ·Cü‰E؃ì ÿuÐÿuèjVÿuØè6‰EäEìÆÇEÔƒÄ éҍvƒÃ‹Sü€:tŠˆBFÿEä€:uò‹EäEì飍vÇEàé›ÇEà鏃MÐ醍vƒMÐë}‰öÇEÔƒMÐënvƒ}Ôu6ƒìEðPj
-W蓉EèƒÄ€?0u ÷EÐtƒMÐ됃MЋ}ðOë1‰öƒ}Ôu)ƒìEðPj
-WèW‹}ðOÇEÔƒÄë
-vÇEÔGé¼ýÿÿvÆ‹Eìeô[^_]ÉöU‰åƒì EPÿu ÿuèGýÿÿƒÄÉÉöU‰åWVSƒì,‹}‹uÇEèÇEäÇEàÇEÜÇEØ»‰}ì饐‹U €:%t…Ûu B‰U 鏍v‹E €8%u%@‰E »ÇEäÇEàÇEÜÇE؋U ¾ƒè*ƒøN‡Eÿ$… @#‰öƒû…8ƒìEìPj
-ÿu èN‰E܃MØ‹EìH‰E ƒÄéŠGƒÆ‹^üˆëÝØÿEèéõƒÆ‹^üëG€?tƒì ¾PèBƒÄ…ÀuçÇEÔë#‰ö÷EØuŠˆCë‹UÜ9UÔ}ŠˆCÿEÔG€?tƒì ¾PèþƒÄ…ÀtÇÆ덉öƒìhHQ#Wè&÷ÿÿ‰ÇƒÄ EìPj
-WèՉ‹}ìƒÄƒ}à…Wƒ}ät)ƒ}ä ƒ}ätéCÿÿÿƒ}ä…9ÿÿÿƒÆ‹Fü‰é,ÿÿÿƒÆ‹Füf‰éÿÿÿ‰öƒìhUQ#Wè¶öÿÿ‰ÇƒÄ EìPj
-됃ìh`Q#Wèšöÿÿ‰ÇƒÄ EìPjWè ‹}ìƒÄƒ}à…̓}ät+ƒ}ä -ƒ}äté¹þÿÿ‰öƒ}ä…­þÿÿƒÆ‹Vü‰é þÿÿƒÆ‹Vüf‰é‘þÿÿ‰öƒìhxQ#Wè*öÿÿ‰ÇƒÄEìPWè;‹}ìƒÄƒ}àu`ƒ}ät)ƒ}ä ƒ}ätéMþÿÿƒ}ä…CþÿÿƒÆ‹FüÝé8þÿÿƒÆ‹FüÙé*þÿÿvÇEäë vÇEäëvÇEàëÝؐ»ÿE ‹E €8…Pýÿÿ‹Eèeô[^_]ÐU‰åƒì EPÿu ÿuèïüÿÿƒÄÉÉöU‰åWVSƒì,‹u ÇEп‹Eƒð‰EԋU‰U̅Òy‰Ñ÷ىM̃}y ‹E…Ày÷Ø됋E÷EÔu ƒ}yƒ}yGƒ}u‹EÐÆD(Ø0@‰EÐë8v…Àt1U؉Uȉöƒì º÷ủÃRèI‹MȋUЈ
-B‰UЉ؃Ä…Àu×}ЋEԃàƒøu‰ú;}} -‰öÆ FGB;U|õƒ}y ƒ}yÆ-ë ÷EÔtÆ+F‹Eԃàƒøu‰ú;}} Æ0FGB;U|õ‹UÐJx M؊
-ˆFJy÷‹Eԃàƒøu‰ú;}} Æ FGB;U|õƉøeô[^_]ÃU‰åƒì‹Eÿuÿu÷ØPÿu ÿuèŸþÿÿƒÄ ÉÉöU‰å‹E…Ày÷Ø]ÉöU‰åSƒì‹]èÁîÿÿƒì SèñðþÿU‰åWVSƒì‹M‹} ÙîÙÀÙ軀9-u ¾ÿÿÿÿë
-‰ö¾ëA€90túŠƒè0< w(ÝàA#ëÙˍv¾ƒè0AÜËÙËPÚ$XŠƒè0< vâÝۀ9.u9AŠƒè0< w/ÝàA#ëÙÉÙʉö¾ƒè0AÜÊÙÊPÚ$ÙÉXØʊƒè0< vÝÝÚÙÉÞùÞÁVÚ $^€9et €9E…“A€9-u
-¾ÿÿÿÿAë‰ö€9+u ¾Aëv¾Šƒè0< weÝàA#¾ƒê0A·ÃÙÀPÚ $Ù}ð‹]ðÆEñ Ùmð‰]ðÛ]ìÙmð‹Eì·À‰$Û$‰$Ú$ZÙ}ð‹UðÆEñ Ùmð‰UðÛ]ìÙmð‹Eì‰ÃŠƒè0< v£Ý؅ö~!ºf…Ût4ÝàA#·Ã‰öÜÉB9Â|ùëvº·Ã‰Ã9Â}ÝàA#ÜùB9Ú|ùÝ؅ÿt‰ƒÄ[^_]ÐU‰åWVSƒì ‹]‹} ÇE쾀;-u ÇEðÿÿÿÿCë‰ö€;+u ÇEðCëÇEð€;0u>C€;0túë6ƒì ¾PCè‰ÂƒÄ9ú…Òy
-¸ëEv‰ð¯÷Ö9ð~ÇEìƒìW¾P聃ąÀu¶ƒ}t‹E‰ƒ}ìt¾ÿÿÿ¯uð‰ðeô[^_]ÉöU‰åWVSƒì ‹]‹} ÇEð¾€;0uC€;0tú€;xuKƒÿuFC€;0u@‰öC€;0túë6ƒì ¾PCè_‰ÂƒÄ9ú…Òy
-¸ëAv‰ð¯÷Ö9ðvÇEðƒìW¾PèуÄ…Àu¶ƒ}t‹E‰ƒ}ðt¾ÿÿÿ‰ðeô[^_]ÉöU‰åŠUBÐ< w ¾Âƒè0ë&vB¿<w ¾Âƒè7됍BŸ<w ¾ÂƒèW됾Â]ÍvU‰å‹Uƒú w B0¾À됍BöƒøwB7¾Àë¾Â]ÍvU‰åŠUƒê0¸€ú –À]ÉöU‰åŠUBÐ<vBŸ<w¸ë¸]ÐU‰åŠU€ú/~‹E <v#:Pÿ¸ë¸]ÐU‰åŠUBŸ<w Bà¾Àëv¾Â]ÍvU‰åŠUB¿<w B ¾Àëv¾Â]ÍvU‰åVS¾ƒì ¾]Sè%ƒÄ…Àuƒì Sè5ÿÿÿƒÄ…Àt¾‰ðeø[^]ÃU‰åŠUƒêA¸€ú9–À]ÉöU‰å¸€}/žÀ]ÍvU‰åŠUƒêa¸€ú–À]ÉöU‰åŠUB÷<v
-¸€ú u¸]ÉöU‰åŠUƒêA¸€ú–À]ÉöU‰åWVSƒì ÝEÝUè‹]‹}ÇEäSd$øÝ$èoƒÄ…Àtƒì Sè·îÿÿƒÄéPvÙîÝEèÚéßà€äE€üu Æ-C€uï€ë÷EtÆ+CÿEäÝèA#ÝEèÚéßà€äE€üuÆ0ÆC¸éû‰öÙèÝEèÝáßà€äE€üu3¾Ýéßà€äE€üuHݘQ#ÝEèØÉÝUèNÝêßà€äE€ütëÝØë)vÝØÝؾݘQ#ÝEèë ÝEèØñÝUèFÝéßàöÄtîÝ؃ì Vè÷ùÿÿƒÄƒøc~ƒïë‰öƒø ~ƒïë‰ö…ö~Oƒì‹EƒÈPÿuWSÿuìÿuèèUEäƒÄ …öu‹Eäë;‰ö]äÆeCƒì jºgfff‰ð÷êÁú‰ðÁø)ƒÂRj
-SVè\ùÿÿ‹UäD‰EäƒÄ eô[^_]ÍvU‰åWVSìŒÝEݝþÿÿ‹]Dž€þÿÿ½¸þÿÿ¹K¸üó«ƒìSÿµ”þÿÿÿµþÿÿ貃ąÀtƒì SèúìÿÿƒÄé‰öÙî݅þÿÿÚéßà€äE€üuÆ-C€µ—þÿÿ€ëv÷Et
-Æ+Cÿ…€þÿÿƒì…˜þÿÿPÿµ”þÿÿÿµþÿÿèþݝpþÿÿ‹…pþÿÿ‹•tþÿÿ‰Æ‰×DžŒþÿÿƒÄ݅˜þÿÿÙèÙÉÝáßàöÄ…ø重vh$@jÿµœþÿÿÿµ˜þÿÿè$݅˜þÿÿÜ5ðA#ݝ˜þÿÿÙ½´þÿÿ‹´þÿÿƅµþÿÿ Ù­´þÿÿ‰´þÿÿß½¨þÿÿÙ­´þÿÿ‹…¨þÿÿ‰$èûÿÿ‹•Œþÿÿˆ„*¸þÿÿB‰•ŒþÿÿƒÄ݅˜þÿÿÙèÙÉÚéßàöÄ„oÿÿÿ‹•Œþÿÿ•€þÿÿ‰ÑI…¸þÿÿ‰…|þÿÿë‰ö‹•|þÿÿŠˆCI‹•Œþÿÿƒê‰ÐÁèH!Â9Ñ}ޅÉx‹Œþÿÿƒéx
-vÆ0CIyùÆëÝØÝØÆ0Cÿ…€þÿÿÝ Q#‰µpþÿÿ‰½tþÿÿ݅pþÿÿÚéßàöÄE…\‹E@9…€þÿÿLÆ.Cÿ…€þÿÿ‹Eƒà‰…ˆþÿÿDž„þÿÿDžŒþÿÿv‰µpþÿÿ‰½tþÿÿ݅pþÿÿܨQ#Ü -ðA#ݝpþÿÿ‹µpþÿÿ‹½tþÿÿƒì…˜þÿÿPWVèݝpþÿÿ‹•pþÿÿ‹tþÿÿ‰Ö‰Ï݅˜þÿÿÙ½´þÿÿ‹´þÿÿƅµþÿÿ Ù­´þÿÿ‰´þÿÿ۝¤þÿÿÙ­´þÿÿ‹…¤þÿÿƒÄ…Àtƒ½ˆþÿÿu
-Džˆþÿÿƒì PèÓùÿÿˆCÿ…€þÿÿÿ…ŒþÿÿƒÄƒ½ˆþÿÿt‹E9…Œþÿÿ~
-Dž„þÿÿ‹•€þÿÿ9U}
-Dž„þÿÿƒ½„þÿÿ„ýþÿÿKë
-‰öÿ€þÿÿ‰Ã€;0u Cÿ€{ÿ.uêCÆ‹…€þÿÿeô[^_]ÃU‰åWVSƒì‹]‹u ‹}WVSèZƒÄ…Àtƒì Wè¢éÿÿƒÄéñ‰öÙî‰]è‰uìÝEèÝáßàÝـäE€üuÙàëvÝ؉]è‰uìÝEèÝøA#ÙÉÝáßàÝـäE€üuÝØÆ0ÆG¸雺ÙèÙÉÝáßà€äE€üu/Ýáßà€äE€üu?ݘQ#ëÙɐÜÉÙÉJÝâßà€äE€ütìÝØëvÝÙݘQ#ë‰öØñÙÉBÙÉÝáßàöÄtðÝØÝ؍BƒøvƒìÿuÿuÿuWVSèÔùÿÿë‰öƒìÿuÿuÿuWVSèXûÿÿƒÄ eô[^_]ÐU‰åƒìSÙ}ü›f‹Eüf -? f‰EøÙmø›ÝEÙüÝ]ð›‹Uð‹Mô‹]‰‰KÝEÜeðeì›ÛâÙmü›[ÉÍvU‰åƒì‹E‹U ‰Eø‰Uü‹MUøf‹BfÁè%ÿ=ÿt¸ëk÷Bÿÿuƒ:t…Étƒìh°Q#QèDçÿÿƒÄ¸ë@‰ö€zy…Étƒìh´Q#Qè çÿÿƒÄ¸ë‰ö…Étƒìh¹Q#QèçÿÿƒÄ¸ÉÃU‰åƒì¸à÷#ƒ=Hv#tÿHv#ÉÃU‰å‹E£Hv#]ÍvU‰åƒì‹E‹U ‰Eø‰UüUø¹f‹BfÁè%ÿ=ÿu÷Bÿÿuƒ}øt¹‰ÈÉÉöU‰åSƒì‹E ‹]ÆPè‰âÿÿ‰ØƒÄ‹]üÉÍvU‰åVSƒì ÝEÝUð‹]‹uVSd$øÝ$èrÝ]èƒÄƒ=Lv#ÿtWƒìVSèYÿÿÿƒÄ…ÀuFƒìÿuôÿuðèDÿÿÿƒÄ…Àu1Ùî‰]à‰uäÝEàÚéßà€äE€ô@uƒì jVSÿuôÿuðè4ƒÄ ëvÝEèeø[^]ÉöÝD$ ÝD$Ùø›ßàžzøÝÙͶ¼'U‰åVSƒì0ÝE‹]‹u‹EÝUà‰]è‰uìPÿú‡Èÿ$•B#ÝØÇEغ¾Q#ƒøc~ºÃQ#‰UÜÇEðÇEôƒ=Lv#„}ƒì EØP誃ąÀ…uƒ=Lv#…YƒìjhÉQ#éëvÝØÇEغÝQ#ƒøc~ºâQ#‰UÜÇEðÇEôƒ=Lv#„ƒì EØPè>ƒÄ…À… ƒ=Lv#…íƒìjhèQ#év‰]à‰uäÝ]èÇEغüQ#ƒøc~ºR#‰UÜÇEðÇEôƒ=Lv#„žƒì EØPè˃ąÀ…–ƒ=Lv#…zƒìjh R#é ÝØÇEغR#ƒøc~º$R#‰U܃=Lv#uÇEðàÇEôÿÿïGé¸ -¡@v#‹Dv#‰Eð‰Uôé¡ -‰öÝØÇEغ²S#ƒøc~º¸S#‰U܃=Lv#uÇEðàÇEôÿÿïGéh -¡@v#‹Dv#‰Eð‰UôéQ -‰öÝØÇEغ+R#ƒøc~º/R#‰U܃=Lv#uÇEðàÇEôÿÿïGé -¡@v#‹Dv#‰Eð‰Uôé -‰öÝØÇEغ+R#ƒøc~º/R#‰UÜÇEðÇEôéÑ ‰öÝØÇEغ·L#ƒøc~º4R#‰U܃=Lv#uÇEðàÇEôÿÿïÇë¡@v#‹Dv#ò€‰Eð‰Uôƒ=Lv#„óƒì EØPè ƒÄ…À…ëƒ=Lv#…σìjh8R#éaÝØÇEغ·L#ƒøc~º4R#‰U܃=Lv#uÇEðàÇEôÿÿïÇë¡@v#‹Dv#ò€‰Eð‰Uôƒ=Lv#„gƒì EØP蔃ąÀ…_ƒ=Lv#…Cƒìjh8R#éÕ -ÝØÇEغxL#ƒøc~ºJR#‰U܃=Lv#uÇEðàÇEôÿÿïÇë¡@v#‹Dv#ò€‰Eð‰Uôƒ=Lv#„Û -ƒì EØPèƒÄ…À…Ó -ƒ=Lv#…· -ƒìjhNR#éI -ÝØÇEغxL#ƒøc~ºJR#‰U܃=Lv#uÇEðàÇEôÿÿïÇë¡@v#‹Dv#ò€‰Eð‰Uôƒ=Lv#„O -ƒì EØPè| -ƒÄ…À…G -ƒ=Lv#…+ -ƒìjhNR#é½ ÝØÇEغ`R#ƒøc~ºcR#‰U܃=Lv#uÇEðàÇEôÿÿïÇë¡@v#‹Dv#ò€‰Eð‰Uôƒ=Lv#„à ƒì EØPèð ƒÄ…À…» ƒ=Lv#…Ÿ ƒìjhgR#é1 ÝØÇEغ`R#ƒøc~ºcR#‰U܃=Lv#uÇEðàÇEôÿÿïÇë¡@v#‹Dv#ò€‰Eð‰Uôƒ=Lv#„7 ƒì EØPèd ƒÄ…À…/ ƒ=Lv#… ƒìjhgR#é¥ ÝØÇEغyR#ƒøc~º€R#‰U܃=Lv#uÇEðàÇEôÿÿïGéP ¡@v#‹Dv#‰Eð‰Uôé9 ‰öÝØÇEغyR#ƒøc~º€R#‰U܃=Lv#uÇEðàÇEôÿÿïGë¡@v#‹Dv#‰Eð‰Uôƒ=Lv#„a ƒì EØPèŽ ƒÄ…À…Y ƒ=Lv#…= ƒìjhˆR#éÏ
-vÝØÇEغœR#ƒøc~º R#‰U܃=Lv#uÇEðàÇEôÿÿïÇë¡@v#‹Dv#ò€‰Eð‰Uôƒ=Lv#„å ƒì EØPè ƒÄ…À…Ë
-ƒ=Lv#…¯
-ƒìjh¥R#éA
-ÝØÇEغœR#ƒøc~º R#‰U܃=Lv#uÇEðàÇEôÿÿïÇë¡@v#‹Dv#ò€‰Eð‰Uôƒ=Lv#„G
-ƒì EØPèt
-ƒÄ…À…?
-ƒ=Lv#…#
-ƒìjh¶R#éµ ÝØÇEغÉR#ƒøc~ºÏR#‰U܃=Lv#uÇEðàÇEôÿÿïÇë¡@v#‹Dv#ò€‰Eð‰Uôƒ=Lv#„Íƒì EØPèè ƒÄ…À…³ ƒ=Lv#…— ƒìjhÖR#é) ÝØÇEغÉR#ƒøc~ºÏR#‰U܃=Lv#uÇEðàÇEôÿÿïÇë¡@v#‹Dv#ò€‰Eð‰Uôƒ=Lv#„/ ƒì EØPè\ ƒÄ…À…' ƒ=Lv#… ƒìjhéR#靐ÝØÇEغþR#ƒøc~ºS#‰UÜÇEðÇEôƒ=Lv#… ƒì EØPèòƒÄ…À…½ƒìjhS#jèÞõÿÿèeõÿÿÇ!ƒÄ降vÇEغþR#ƒøc~ºS#‰U܃=Lv#uvÇEðàÇEôÿÿïG‰]ЉuÔÝEÐÜ -hT#Ý]Ћ]ЋuÔÙîÙÉÚéßà€äE€ü…¯ƒìVSèjƒÄ‰]ЉuÔÝEÐÙÉÚéßà€äE€ü@„‡ÇEðàÇEôÿÿïÇét¡@v#‹Dv#‰Eð‰Uô‰]ЉuÔÝEÐÜ -hT#Ý]Ћ]ЋuÔÙîÙÉÚéßà€äE€ü…6ƒìVSèñƒÄ‰]ЉuÔÝEÐÙÉÚéßà€äE€ü@„¡@v#‹Dv#ò€‰Eð‰UôéòvÝØÇEغþR#ƒøc~ºS#‰UÜÇEðÇEôéÁ‰öÝØÇEغþR#ƒøc~ºS#‰U܃=Lv#uÇEðÇEôë¡@v#‹Dv#ò€‰Eð‰Uôƒ=Lv#„ãƒì EØPèƒÄ…À…Ûƒ=Lv#…¿ƒìjhS#éQÝØÇEغþR#ƒøc~ºS#‰U܃=Lv#uÇEðÇEôëÇEðÇEôøƒ=Lv#„`ƒì EØP荃ąÀ…Xƒ=Lv#…<ƒìj h@T#éΉöÇEغ9S#ƒøc~º>S#‰U܃=Lv#u6ÙîÙÉÚéßàöÄEuÇEðàÇEôÿÿïGém‰öÇEðàÇEôÿÿïÇéX‹ -@v#‹Dv#‰Mð‰]ôÙîÙÉÚéßàöÄE„4‰È‰Úò€‰Eð‰UôéÝØÇEغDS#ƒøc~ºIS#‰U܃=Lv#uÇEðÇEôëÇEðÇEôøƒ=Lv#„Lƒì EØPèyƒÄ…À…Dƒ=Lv#…(ƒìjhOS#麉öÇEغcS#ƒøc~ºhS#‰U܃=Lv#uÝ]ðëÝØÇEðÇEôøƒ=Lv#„Òƒì EØPèÿƒÄ…À…ʃ=Lv#…®ƒìjhnS#é@ÝØÇEغƒS#ƒøc~ºS#‰UÜÇEðÇEôøƒ=Lv#„iƒì EØP薃ąÀ…aƒ=Lv#…Eƒìjh˜S#é׍vÝØÇEغ±S#ƒøc~º·S#‰UÜÇEðÇEôøƒ=Lv#„ýƒì EØPè*ƒÄ…À…õƒ=Lv#…Ùƒìjh¾S#ékvÝØÇEغÓS#ƒøc~ºÙS#‰UÜÇEðÇEôøƒ=Lv#„‘ƒì EØP较ąÀ…‰ƒ=Lv#…mƒìjhàS#éÿvÇEغÓS#ƒøc~ºÙS#‰UÜÜ5pT#Ý]ðƒ=Lv#„,ƒì EØPèYƒÄ…À…$ƒ=Lv#…ƒìjhõS#隉öÇEغT#ƒøc~ºT#‰U܋ -@v#‹Dv#‰Mð‰]ôÙîÙÉÚéßàöÄEtC‰È‰Úò€‰Eð‰Uôë1‰öÇEغT#ƒøc~ºT#‰U܍d$øÝ$jjè›Ý]ðƒÄƒ=Lv#…jé|vÝØÇEغT#ƒøcŽ•ºT#鋍vÝØÇEغ·L#ƒøc~uº4R#ën‰öÝØÇEغ+T#ƒøc~Yº.T#ëR‰öÝØÇEغxL#ƒøc~=ºJR#ë6‰öÝØÇEغ2T#ƒøc~!º5T#ë‰öÝØÇEغ`R#ƒøc~ºcR#‰UÜÇEðÇEôƒ=Lv#„¯ƒì EØPèʃąÀ…•ƒ=Lv#…‹ƒìjÿuÜjè«îÿÿƒÄ jhT#jèšîÿÿƒÄëfÝØÇEغzR#ƒøc~ºR#‰U܃=Lv#uÇEðàÇEôÿÿïGë¡@v#‹Dv#‰Eð‰Uôƒ=Lv#tƒì EØPè2ƒÄ…À…ýè¶íÿÿÇ"éívÝØÇEغzR#ƒøc~ºR#‰U܃=Lv#uÇEðàÇEôÿÿïGë¡@v#‹Dv#‰Eð‰Uôƒ=Lv#„‰ƒì EØP趃Ä…À…ƒ=Lv#uiƒìjh‰R#jè™íÿÿƒÄëSÇEغþR#ƒøc~ºS#‰UÜÝ]ðƒ=Lv#ÿt ƒ=Lv#uÇEðÇEôð?ë$‰öƒì EØPè@ƒÄ…ÀuèÈìÿÿÇ!ëÝØÝEðeø[^]ËT$â€‹D$%ÿÿÿ ЉD$ÝD$ÉöU‰å¸]ÉöÝD$ÙüÉö¼'U‰åWVSƒì ‹E ‰EðEƒEðƒeðøƒàø‰Eì‹Eð9EìsƒìjUhxT#h‚T#è˜ ƒÄ‹Eð9Eì„Ä‹E‹…Û„·‹C;C rƒìj`hxT#hT#è` ƒÄöCtƒìjahxT#hÀT#èC ƒÄöC tƒìjbhxT#hU#è& ƒÄ‹Eì;CvL‹Eð;C sD‰Æ‹}ì;ss‹s;{ v‹{ 9÷wƒìjnhxT#h¡T#èæ ƒÄƒì‰ø)ðPVÿu蚃ċ…Û…Iÿÿÿeô[^_]ÐU‰åWVSƒì ‹u ‹E‹}‰ÂUƒÀƒàøƒâø9†ŒÇF‰F‰V ‹E‰F‰~ÇF‹MëF‰ö9óuƒìjlh0U#h;U#èX ƒÄ‹F ;Cv‹F;C sƒìjmh0U#h`U#è1 ƒÄ‰Ù‹…Ût9{±9{u‹S +S‹F +F9Âwœ‰‰1eô[^_]ÃU‰åWVSƒì ‹]‹} …ÛuƒìjLhU#h•U#èÙ
-ƒÄ…ÿuƒìjMhU#hžU#è¾
-ƒÄƒÇƒçø‹3…ö„rvƒ~uƒ~t‹F;FsƒìjUhU#hàU#è€
-ƒÄƒ~t‹F;F rƒìjUhU#h@V#è[
-ƒÄ‹F +F9FvƒìjUhU#h€V#è9
-ƒÄ‹F÷ЅE…åF‰Eð‹^…Û„ԍv÷Ãtƒìj^hU#hÀV#èø ƒÄöCtƒìj_hU#hW#èÛ ƒÄƒ;t9wƒìj`hU#h@W#è» ƒÄ;^ rƒìjahU#h¶U#èŸ ƒÄ9{rGv‹‰‹C)ø‰B‹Eð‰ë
-v‹‹Uð‰9~sƒìjwhU#hÍU#è\ ƒÄ)~‰Øë‰ö‰]ð‹…Û…/ÿÿÿ‹6…ö…‘þÿÿ¸eô[^_]ÃU‰åƒì jÿjÿuÿuÿuÿu ÿuèƒÄ ÉÐU‰åWVSƒì‹]‹EE ‰Eð…ÛuƒìjThiW#h•U#èۃă} uƒìjUhiW#hžU#较ċ;…ÿ„lƒuƒt‹G;Gsƒìj[hiW#hàU#舃ăt‹G;G rƒìj[hiW#h@V#ècƒÄ‹G +G9Gvƒìj[hiW#h€V#èAƒÄ‹G÷ЅE…á‹Uð9WƒÕ‹M9O †ÉG‰Eì‹_…Û„¸v÷ÃtƒìjkhiW#hÀV#èèƒÄöCtƒìjlhiW#hW#è˃ă;t9wƒìjmhiW#h@W#諃Ä;_ rƒìjnhiW#h¶U#菃ċU 9S‚$‰Þ;]s‹u¹;M}ºÓâ‹E1ð…ÂtÖA;M|è‰ð)ØE ;C‡è‹M 1;Eð‡æ‰ðƒàø‰Eè9Øsƒìh‘hiW#htW#èƒÄ9]èvC‹Uè)ډUä÷Âtƒìh–hiW#h W#èãƒÄ‹‹M艋C+Eä‰A‹Eä‰C‰]ì‰ðƒà‹U Tƒâø‰U ‹Mè9Qv‰ÊU ‹‰‹A+E ‰B‹Eì‰ë
-‹Uè‹‹M쉋E 9Gsƒìh´hiW#hÍU#èkƒÄ‹U )W‰ðë‰ö‰]ì‹…Û…Kþÿÿ‹?…ÿ…•ýÿÿ¸eô[^_]ÃU‰åƒì jÿjjj ÿu hÿuèýÿÿƒÄ ÉÐU‰åWVSƒì‹]ShÒW#èeÌÿÿ‹3ƒÄ…ö„ƒìÿvÿvÿv‹F +FPÿv ÿvh`X#è5ÌÿÿƒÄ ƒ~uƒ~t‹F;FsƒìjahäW#hàU#袃ă~t‹F;F rƒìjahäW#h@V#è}ƒÄ‹F +F9FvƒìjahäW#h€V#è[ƒÄ¿‹^…Û„¾ƒì ÿ3ÿs‰ØCPSh X#è—ËÿÿƒÄ ÷ÃtƒìjihäW#hÀV#èƒÄöCtƒìjjhäW#hàX#èóƒÄƒ{wƒìjkhäW#hëW#èփă;t9wƒìjlhäW#h@W#趃Ä;^ rƒìjmhäW#h¶U#蚃Ä{‹…Û…BÿÿÿƒìWhX#èäÊÿÿƒÄ9~tƒìjshäW#hX#è`ƒÄ‹6…ö…cþÿÿƒì h2X#è®ÊÿÿƒÄeô[^_]ÍvU‰åWVSƒì ‹u‹] ‰ßƒçø…öuƒìjNh{T#h•U#è ƒÄ…ÛuƒìjOh{T#hY#èñƒÄƒ}uƒìjPh{T#hžU#èԃĉ؃à‹UTƒâø‰U‹ëv‹…ÛuƒìjXh{T#hY#螃ă{uƒ{t‹C;CsƒìjYh{T#hàU#èsƒÄƒ{t‹C;C rƒìjYh{T#h@V#èNƒÄ‹C +C9CvƒìjYh{T#h€V#è,ƒÄ;{‚hÿÿÿ;{ ƒ_ÿÿÿ‹EC‹C +C9Cvƒìjbh{T#h€V#èòƒÄÇEð‹sëv‰uð‹6…öt9þróƒ}ðtm‹Eð@9ørc9øtƒìjnh{T#h@Y#諃ąöt8‹U:9ðr.9ðtƒìjuh{T#h€Y#肃ċEF‹UðB‹‰ëE‹E‹UðBë9ƒ}ðt
-‹Eð‰8ëv‰{…öt‹U:9ðr‰ÐF‰G‹‰ë ‹E‰G‰7eô[^_]ÃU‰åƒì hÿu ÿuèÒýÿÿƒÄÉÐU‰å‹EÇ]ÉöU‰åWVSƒì ÇEèÇEìÇEð‹E‹0…ö„Zƒ~uƒ~t‹F;Fsƒìj]h¦Y#hàU#蠃ă~t‹F;F rƒìj]h¦Y#h@V#è{ƒÄ‹F +F9Fvƒìj]h¦Y#h€V#èYƒÄÿEð¿‹^…Û„¨v÷Ãtƒìjdh¦Y#hÀV#è$ƒÄöCtƒìjeh¦Y#hàX#èƒÄƒ{wƒìjfh¦Y#hëW#èêƒÄƒ;t9wƒìjgh¦Y#h@W#èʃÄ;^ rƒìjhh¦Y#h¶U#讃ÄÿEì{‹…Û…[ÿÿÿ9~tƒìjnh¦Y#hX#肃Ä‹FEè‹6…ö…§þÿÿƒì ÿuìÿuðÿuèÿuhÀY#è¾ÆÿÿƒÄ eô[^_]ÍvU‰åVS‹u‹] EƒìPÿuhø#è…ÈÿÿƒÄhø#ÿ5 $jSVh@Z#è5ƒÄ eø[^]ÍvU‰åƒìÿ5Œ$jÿuÿu ÿuhZ#èƒÄ ÉÉöU‰åƒì E Pÿuhü#èÈÿÿƒÄ jjh¸<#è<ÿÿƒÄhü#h£Z#èŠÅÿÿÇ$Mè–ÿÿƒÄÉÐU‰åƒìhü#h€Z#ècÅÿÿƒÄÉÉöU‰å·Eƒøt ƒø…Àtë-ƒøtƒøtë ¸ÁZ#됸ÆZ#됸ÊZ#됸ÐZ#됸‘K#]ÐU‰åWVSƒìœúX‰Â‰Uä÷Et$ƒìEèPjè8›ÿÿƒÄ ÿuìÿuèhàZ#èQÅÿÿƒÄ÷EtN¾;5$sA¿À$vƒì µ‹;¶BP·BPRVh [#è -ÅÿÿƒÄ‹;VÿP ƒÄF;5$rÇ÷Etƒì hûZ#èáÄÿÿè”ÿÿƒÄ‹Uä‰ÐPeô[^_]Éöh#0#0#0#0#0#œ#0#¨#´#0#À#À#À#À#À#À#À#À#À#À#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#t#ˆ#ô#´#4##ˆ#0#0#„#0##0#l#0#0#Œ#0#Ô#0#0# # #ô
-#ô
-#ô
-#ô
-#ô
-#l
-#ô
-#x
-#€
-#ô
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-#ô
-# #4 #ô
-#ô
-#ô
-#`
-#4 #ô
-#ô
-#T
-#ô
-#`
-#ô
-#ô
-#ô
-#ô
-#,
-#ô
-#„ #ô
-#ô
-#È ## # # # # #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #„ #€ -#€ -#€ -#ô -#„ # # #è -# #ô -# # # # # # #ô # # # -#$@$@d#Ð#<#¬#ü#L#œ#Ì#X #ä #p!#ü!#ˆ"###d##ì##x$#%#%#&#&#¬'#Ü'#h(#ì(#|)#*#x*#ä*#P+#¼+# ,#l,#°,#Ô,#ð,# -#(-#D-#Ä-#<.#Ä.#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#$/#d#Ð#<#¬#ü#L#œ#Ì#X #ä #p!#ü!#ˆ"###d##ì##x$#%#%#&#&#¬'#Ü'#h(#ì(#|)#*#x*#ä*#P+#¼+# ,#l,#°,#Ô,#ð,# -#(-#D-#Ä-#<.#Ä.#T1: started, sending a message
-T2: value = %d, receiving a message
-T2: received message: length=%ld, prio=%d, text=°%s°, notify...
-T2: mq_notify returns errno %d
-T2: 1 sec. reached, sending another message and creating T3 and T4,
-T3: received message: length=%ld, prio=%d, text=°%s°
-T3: 2 sec. reached, sending 5 messages
-T3: mq_send1 returns errno %d
-T3: mq_send2 returns errno %d
-T3: mq_send3 returns errno %d
-T3: mq_send4 returns errno %d
-T3: mq_send5 returns errno %d
-T4: AAAARRRRGGGHHH!!! killed by someone...
-T4: received message: length=%ld, prio=%d, text=°%s°
-Signal %d code=%s value=%d task=%d time=%ldusec
-main: mq_open returns errno %d
-main: mq_notify returns errno %d
-main: created mq, creating T1...
-main: waiting t= 3.5 sec., then kill T4...
-Donald DuckT1: mq_send returns errno %d
-T1: ending...
-T2: waiting t = 1 sec.
-Mickey MouseT2: mq_send returns errno %d
-T2: ending...
-T3: waiting a message...
-T3: waiting t = 1.5 sec.
-GoofyÛMinniePlutoRocker DuckOncle ScroodgeT3: ending...
-T4: waiting t = 2.2 sec.
-TimerOthermqmain: ending...
-Error during Keyboard Initialization!!!Ctrl-C pressed!
-KeybPortKeyTasktask_create
-scheduletime %lus %luns * caplasttime %lus %luns * exec=%d TIME = %lu
-The system tick must be less than 55 mSec!Abort detected
-Code : %u
-Too many scheduling levels!!!
-Too many resource levels!!!
-debug info noticewarn err crit alert emerg <%i>[%s] %sPosix task
-Signal number %d...
-with value : %d
-POSIX_ReadyPOSIX_DelayPOSIX_UnknownSlice: %d
-MainPOSIX_register_level
- alloco descrittore %d %d
- lev=%d
-POSIX schedulerPid: %d Name: %20s Prio: %3ld Status: %s
-
-Panic!!! can't create main task...
-dummy PID: %d
-Dummy1Dummy2Dummy3Dummy4Dummy5Dummy6Dummy7Dummy8Dummy9Dummy0DummyaDummybDummycDummydDummyeDummyfDummygDummyhDummyDummy (RR) Posto dummy_create
-
-Panic!!! can't create dummy task...
-Entro in dummy_register_level
-Port des :
-Free port des : %d
-%d %s vt: %d pn: %d
-%d pd: %d vt: %d pn: %d Resources owned by the tasks:
-%-4dPI_register_module
-PI module
-PC priority of the tasks:
-%-4ldPC_register_module
-PC moduleTR %x
-SS:SP %x:%lx
-Stack0 : %x:%lx
-Stack1 : %x:%lx
-Stack2 : %x:%lx
-CS : %x DS : %x
-Descriptor [%x] InfoNo more Descriptors...
-%x (Hex)Base : %lx Lim : %lx Acc : %x Gran %x
-2Coprocessor error#Page fault*General protection fault*Stack exception*Segment not present*Unvalid TSS#INTEL reserved*Double defect1FPU context switch*Unvalid opcode#BOUND limit exceeded#Overflow detected on INTO#Breakpoint trap#NMI detected#Debug fault#Division by 0Exception %d occurred
-ABORT %d !!!LL Time Panic!!!
-time.cError! File:%s Line:%d %sOne-shot timer selected...
-Periodic timer selected...
-Unhandled Exc or Int occured!!!
-32/LINUX CrossCompiled/ELFHalt called1234567890-+12345678901234567890xabcdefABCDEF1234567890.e+-0123456789ABCDEF$@ -Æ@,ú1°<NaN+Inf-Infacosacosfacos: DOMAIN error
-asinasinfasin: DOMAIN error
-atan2atan2fatan2: DOMAIN error
-hypothypotfexpexpfy0fy0: DOMAIN error
-y1fy1: DOMAIN error
-ynynfyn: DOMAIN error
-lgammalgammaflgamma: SING error
-loglogflog: SING error
-log: DOMAIN error
-log10log10flog10: SING error
-log10: DOMAIN error
-powpowfpow(0,0): DOMAIN error
-pow(0,neg): DOMAIN error
-sinhsinhfsqrtsqrtfsqrt: DOMAIN error
-fmodfmodffmod: DOMAIN error
-remainderremainderfremainder: DOMAIN error
-acoshacoshfacosh: DOMAIN error
-atanhatanhfatanh: DOMAIN error
-atanh: SING error
-scalbscalbfj0j0f: TLOSS error
-j1j1fjnjnfneg**non-integral: DOMAIN error
-à?addfree.cmax >= minreg->min < reg->maxnew_max > new_min(reg->min & (sizeof(struct lmm_node) - 1)) == 0(reg->max & (sizeof(struct lmm_node) - 1)) == 0addregio.cr != reg(reg->max <= r->min) || (reg->min >= r->max)alloc.clmm != 0size > 0reg->free >= 0(DWORD)node < reg->maxreg->free >= size(reg->nodes == 0 && reg->free == 0) || (DWORD)reg->nodes >= reg->minreg->nodes == 0 || (DWORD)reg->nodes < reg->maxreg->free <= reg->max - reg->min((DWORD)node & (sizeof(struct lmm_node) - 1)) == 0((DWORD)node->size & (sizeof(struct lmm_node) - 1)) == 0(node->next == 0) || (node->next > node)alloc_ge.canode >= node(split_size & (sizeof(struct lmm_node) - 1)) == 0lmm_dump(lmm=%p)
-dump.cnode->size >= sizeof(*node) free_check=%08lx
-reg->free == free_checklmm_dump done
- region %08lx-%08lx size=%08lx flags=%08lx pri=%d free=%08lx
- node %p-%08lx size=%08lx next=%p
-(node->size & (sizeof(struct lmm_node) - 1)) == 0block != 0reg != 0(DWORD)prevnode + prevnode->size == (DWORD)node(DWORD)node + size == (DWORD)nextnodestats.cLMM=%p: %u bytes in %u regions, %d nodes
-assertion %s failed in %s at line %i (task:%i_%i)
-MAGIC assertion failed in %s at line %i (task:%i_%i): %s
-KERNEL PANIC (sys_panic_stub): %s
-KERNEL PANIC (sys_panic): %s
-FreeExeSleepWaiting on joinTime (EXACT) : %lus %luns
-< Memory Dump >
-< Level %d : %s Code: %d Version: %d >
-8Œÿÿ’ÏÿÿšÏÿHk#ÿ`v#ÿÿÿÿÿÿÿÿÿÿÿÿ1234567890!@#$%^&*()-_=+[{]};:'"`~/?,<.>\|   - -1234567890.+*/-+*-aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ 1234567890!"œ$%&/()='?^Š‚+*•‡…ø\|<_,:.;—õ   - -1234567890.+*/-+*-aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ[]@#hs#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-K#&K#K#K#K#
-K#K#üJ#¨•"°•"°•"SP#FP#8P#'P# P#öO#æO#ÒO#ÃO#³O#¦O#‘O#€O#fO#ZO#³O#GO#þþAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAš‡Q#ðÿÿÿÿGCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)01.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.0101.01.symtab.strtab.shstrtab.text.rodata.data.sbss.bss.comment.note"€ä=!>#€>H )Hk#È[ /Pv#àf5`v#àfØê :àf‚Cbx|Þ~I
\ No newline at end of file
/pj/pse51/ptest6
Property changes:
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: pj/pse51/ptest5.c
===================================================================
--- pj/pse51/ptest5.c (revision 1344)
+++ pj/pse51/ptest5.c (nonexistent)
@@ -1,109 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: ptest5.c,v 1.1.1.1 2002-09-02 09:37:47 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:47 $
- ------------
-
- Posix test 5:
- an alarm test
-
- non standard function used:
- cprintf
- sys_gettime
- keyboard stuffs
- sys_end
-
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <sys/types.h>
-#include <pthread.h>
-#include <signal.h>
-#include <unistd.h>
-
-#include <kernel/kern.h>
-#include <drivers/keyb.h>
-
-
-
-void signal_handler(int signo, siginfo_t *info, void *extra)
-{
- cprintf("SIGNAL HANDLER: pid=%d\n",exec_shadow);
-}
-
-void fine(KEY_EVT *e)
-{
- sys_end();
-}
-
-
-int main(int argc, char **argv)
-{
- struct sigaction sig_act;
-
- KEY_EVT emerg;
- //keyb_set_map(itaMap);
- emerg.ascii = 'x';
- emerg.scan = KEY_X;
- emerg.flag = ALTL_BIT;
- keyb_hook(emerg,fine);
-
- sig_act.sa_sigaction = (void *) signal_handler;
- sig_act.sa_flags = SA_SIGINFO;
- sigemptyset(&sig_act.sa_mask);
-
- sigaction(SIGALRM, &sig_act, NULL);
-
- cprintf("main: alarm(5), waiting t=2 sec\n");
- alarm(5);
-
- while (sys_gettime(NULL) < 2000000);
-
- cprintf("main: alarm(3) return %d, waiting t=6 sec\n",alarm(3));
-
- pause();
-// while (sys_gettime(NULL) < 6000000);
-
- cprintf("main: ending...\n");
-
- return 0;
-}
Index: pj/pse51/ptest6.c
===================================================================
--- pj/pse51/ptest6.c (revision 1344)
+++ pj/pse51/ptest6.c (nonexistent)
@@ -1,300 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: ptest6.c,v 1.1.1.1 2002-09-02 09:37:47 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:47 $
- ------------
-
- Posix test 6:
-
- message queues
-
- main thread:
- set a sigevent to sigev_thread on a mailbox (that creates thread 2)
- creates thread 1
- waits t=3.5 sec.
- pthread_cancel(T4)
-
- thread 1:
- send a msg to the mailbox (the event fires and thread 2 is created)
-
- thread 2:
- receive the msg sent by thread 1
- set the event to a signal
- creates thread 3 and 4
- waits t = 1 sec
- send another msg
-
- thread 3:
- receive the msg sent by 2 (it blocks!)
- waits t = 2 sec
- send 5 msgs (with different priorities!!!
-
- thread 4:
- receives 5 msgs every 0.5 sec.
- then receive another message that never will arrive...
-
- non standard function used:
- cprintf
- sys_gettime
- keyboard stuffs
- sys_end
-
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <sys/types.h>
-#include <pthread.h>
-#include <mqueue.h>
-
-#include <kernel/kern.h>
-#include <drivers/keyb.h>
-
-struct sigevent ev25, evtask;
-pthread_attr_t task_attr;
-struct sched_param task_param;
-mqd_t mq;
-pthread_t T1,T2,T3,T4,T5;
-
-#define MESSAGE_LENGTH 100
-
-void *t1(void *arg)
-{
- cprintf("T1: started, sending a message\n");
- if (mq_send(mq,"Donald Duck",12,1))
- { cprintf("T1: mq_send returns errno %d\n",errno); return 0; }
-
- cprintf("T1: ending...\n");
- return 0;
-}
-
-void *t4(void *arg);
-void *t3(void *arg);
-
-void t2(union sigval value)
-{
- ssize_t x;
- char buf[MESSAGE_LENGTH];
- int prio;
-
- cprintf("T2: value = %d, receiving a message\n", value.sival_int);
-
- x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
-
- cprintf("T2: received message: length=%ld, prio=%d, text=°%s°, notify...\n",
- x,prio,buf);
-
- if (mq_notify(mq, &ev25))
- { cprintf("T2: mq_notify returns errno %d\n",errno); sys_end(); }
-
- cprintf("T2: waiting t = 1 sec.\n");
- while (sys_gettime(NULL)<1000000);
- cprintf("T2: 1 sec. reached, sending another message and creating T3 and T4, \n");
-
- if (mq_send(mq,"Mickey Mouse",13,1))
- { cprintf("T2: mq_send returns errno %d\n",errno); sys_end(); }
-
- pthread_create(&T3, NULL, t3, NULL);
- pthread_create(&T4, NULL, t4, NULL);
-
- cprintf("T2: ending...\n");
-}
-
-void *t3(void *arg)
-{
- ssize_t x;
- char buf[MESSAGE_LENGTH];
- int prio;
-
- cprintf("T3: waiting a message...\n");
-
- x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
-
- // mickey mouse
- cprintf("T3: received message: length=%ld, prio=%d, text=°%s°\n",
- x,prio,buf);
-
- cprintf("T3: waiting t = 1.5 sec.\n");
- while (sys_gettime(NULL)<1500000);
- cprintf("T3: 2 sec. reached, sending 5 messages\n");
-
- if (mq_send(mq,"Goofy",6,1))
- { cprintf("T3: mq_send1 returns errno %d\n",errno); sys_end(); }
- cprintf("Û");
-
- if (mq_send(mq,"Minnie",7,1))
- { cprintf("T3: mq_send2 returns errno %d\n",errno); sys_end(); }
- cprintf("Û");
-
- if (mq_send(mq,"Pluto",6,2)) // NB: different priority!!!
- { cprintf("T3: mq_send3 returns errno %d\n",errno); sys_end(); }
- cprintf("Û");
-
- if (mq_send(mq,"Rocker Duck",12,2)) // NB: different priority!!!
- { cprintf("T3: mq_send4 returns errno %d\n",errno); sys_end(); }
- cprintf("Û");
-
- if (mq_send(mq,"Oncle Scroodge",15,2)) // NB: different priority!!!
- { cprintf("T3: mq_send5 returns errno %d\n",errno); sys_end(); }
- cprintf("Û");
-
- cprintf("T3: ending...\n");
-
- return 0;
-}
-
-void t4exit(void *arg)
-{
- cprintf("T4: AAAARRRRGGGHHH!!! killed by someone...\n");
-}
-
-void *t4(void *arg)
-{
- ssize_t x;
- char buf[MESSAGE_LENGTH];
- int prio;
-
- cprintf("T4: waiting t = 2.2 sec.\n");
-
- while (sys_gettime(NULL)<2200000);
- x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
- cprintf("T4: received message: length=%ld, prio=%d, text=°%s°\n",x,prio,buf);
-
- while (sys_gettime(NULL)<2400000);
- x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
- cprintf("T4: received message: length=%ld, prio=%d, text=°%s°\n",x,prio,buf);
- while (sys_gettime(NULL)<2600000);
-
- x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
- cprintf("T4: received message: length=%ld, prio=%d, text=°%s°\n",x,prio,buf);
- while (sys_gettime(NULL)<2800000);
-
- x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
- cprintf("T4: received message: length=%ld, prio=%d, text=°%s°\n",x,prio,buf);
- while (sys_gettime(NULL)<3000000);
-
- x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
- cprintf("T4: received message: length=%ld, prio=%d, text=°%s°\n",x,prio,buf);
-
- pthread_cleanup_push(t4exit,NULL);
- x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
- cprintf("T4: received message: length=%ld, prio=%d, text=°%s°\n",x,prio,buf);
- pthread_cleanup_pop(0);
-
- return 0;
-}
-
-void signal_handler(int signo, siginfo_t *info, void *extra)
-{
- cprintf("Signal %d code=%s value=%d task=%d time=%ldusec\n",
- info->si_signo,
- (info->si_code == SI_TIMER) ? "Timer" : "Other",
- info->si_value.sival_int,
- info->si_task,
- sys_gettime(NULL));
-}
-
-void fine(KEY_EVT *e)
-{
- sys_end();
-}
-
-int main(int argc, char **argv)
-{
-// int err;
- struct sigaction sig_act;
- struct mq_attr attr;
-
- KEY_EVT emerg;
- //keyb_set_map(itaMap);
- emerg.ascii = 'x';
- emerg.scan = KEY_X;
- emerg.flag = ALTL_BIT;
- keyb_hook(emerg,fine);
-
- sig_act.sa_sigaction = (void *) signal_handler;
- sig_act.sa_flags = SA_SIGINFO;
- sigemptyset(&sig_act.sa_mask);
- sigaction(25, &sig_act, NULL);
-
- // set ev25, evtask
- ev25.sigev_notify = SIGEV_SIGNAL;
- ev25.sigev_signo = 25;
- ev25.sigev_value.sival_int = 555;
-
- evtask.sigev_notify = SIGEV_THREAD;
- evtask.sigev_value.sival_int = 777;
- evtask.sigev_notify_function = t2;
- evtask.sigev_notify_attributes = &task_attr;
-
- // set pthread attributes
- pthread_attr_init(&task_attr);
- pthread_attr_setdetachstate(&task_attr, PTHREAD_CREATE_DETACHED);
- pthread_attr_setschedpolicy(&task_attr, SCHED_FIFO);
- task_param.sched_priority = 10;
- pthread_attr_setschedparam(&task_attr, &task_param);
-
- // set mqueue attributes
- attr.mq_flags = 0;
- attr.mq_maxmsg = 3;
- attr.mq_msgsize = MESSAGE_LENGTH;
-
- // create the message queue
- if ((mq = mq_open("mq", O_CREAT|O_RDWR, 0, &attr)) == -1)
- { cprintf("main: mq_open returns errno %d\n",errno); return 0; }
-
- if (mq_notify(mq, &evtask))
- { cprintf("main: mq_notify returns errno %d\n",errno); return 0; }
-
- cprintf("main: created mq, creating T1...\n");
-
- pthread_create(&T1, NULL, t1, NULL);
-
- cprintf("main: waiting t= 3.5 sec., then kill T4...\n");
-
- while (sys_gettime(NULL)<3500000);
-
- pthread_cancel(T4);
-
- cprintf("main: ending...\n");
-
- return 0;
-}
Index: pj/pse51/makefile
===================================================================
--- pj/pse51/makefile (revision 1344)
+++ pj/pse51/makefile (nonexistent)
@@ -1,25 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS+= ptest1 ptest2 ptest3 ptest4 ptest5 ptest6
-
-include $(BASE)/config/example.mk
-
-ptest1:
- make -f $(SUBMAKE) APP=ptest1 INIT= OTHEROBJS="pinit.o"
-ptest2:
- make -f $(SUBMAKE) APP=ptest2 INIT= OTHEROBJS="pinit.o"
-ptest3:
- make -f $(SUBMAKE) APP=ptest3 INIT= OTHEROBJS="pinit.o"
-ptest4:
- make -f $(SUBMAKE) APP=ptest4 INIT= OTHEROBJS="pinit.o"
-ptest5:
- make -f $(SUBMAKE) APP=ptest5 INIT= OTHEROBJS="pinit.o"
-ptest6:
- make -f $(SUBMAKE) APP=ptest6 INIT= OTHEROBJS="pinit.o"
Index: pj/pci6025e/test_dio.c
===================================================================
--- pj/pci6025e/test_dio.c (revision 1344)
+++ pj/pci6025e/test_dio.c (nonexistent)
@@ -1,184 +0,0 @@
-/*****************************************************************************
-* Filename: Test_dio.c *
-* Author: Marco Ziglioli (Doctor Stein) *
-* Date: 22/03/2001 *
-* Last update: 22/03/2001 *
-* Description: Test STC digital lines (8 lines) *
-*----------------------------------------------------------------------------*
-* Notes: Configure DIO 4 5 6 7 in input and DIO 0 1 2 3 in output *
-* Two way to test this 8 lines: *
-* 1) Connect 4 LEDs to output lines and check LEDs lights *
-* themselves in counting order. Connect input lines to Vcc *
-* or GND and check on video that STC has readed the right *
-* nibble *
-* 2) Connect 4 output lines with 4 input lines and check on *
-* video that the nibble readed by STC change in counting *
-* order *
-*****************************************************************************/
-
-/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
- *
- * Copyright (C) 2001 Marco Ziglioli
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <drivers/glib.h>
-#include <drivers/keyb.h>
-#include <drivers/pci6025e/dio_ppi.h>
-
-BYTE system = 0;
-
-void close_event(void *);
-TASK test_DIO(int dummy);
-void exit_fun(KEY_EVT *);
-void draw_screen(void);
-
-
-int main(int argc, char **argv)
-{
- HARD_TASK_MODEL m;
- KEY_EVT k;
- PID pid_m;
- int modenum;
-
- sys_atrunlevel(close_event, NULL, RUNLEVEL_BEFORE_EXIT);
-
- keyb_set_map(itaMap);
- k.flag = CNTL_BIT;
- k.scan = KEY_C;
- k.ascii = 'c';
- keyb_hook(k, exit_fun);
- k.flag = CNTR_BIT;
- k.scan = KEY_C;
- k.ascii = 'c';
- keyb_hook(k, exit_fun);
-
- hard_task_default_model(m);
- hard_task_def_wcet(m, 90000);
- hard_task_def_mit(m, 250000);
- pid_m = task_create("TEST DIO", test_DIO, &m, NULL);
- if(pid_m == NIL){
- system = 10;
- sys_end();
- }
-
- //Check if PCI bus is present
- if(pci_init() == -1){
- system = 20;
- sys_end();
- }
-
- //Look for a National board on PCI bus
- if(!reMap()){
- system = 21;
- sys_end();
- }
-
- //Start configuring DIO module
- DIO_init();
-
- grx_init();
- modenum = grx_getmode(640, 480, 16);
- if(modenum == -1){
- system = 30;
- sys_end();
- }
- grx_setmode(modenum);
-
- draw_screen();
-
- task_activate(pid_m);
-
- return 0;
-}
-
-void draw_screen(void)
-{
- grx_rect(5, 5, 405, 130, rgb16(255, 0, 0));
- grx_rect(4, 4, 406, 131, rgb16(0,255,255));
- grx_rect(3, 3, 407, 132, rgb16(255, 0, 0));
- grx_rect(15, 45, 195, 100, rgb16(255, 0, 0));
- grx_rect(215, 45, 395, 100, rgb16(0, 255, 0));
- grx_text("Test of PCI6025E DIO function",
- 9, 7, rgb16(0, 255, 0), rgb16(0, 0, 0));
- grx_text("DIO 4-5-6-7 are configured in input mode",
- 9, 20, rgb16(255, 70, 70), rgb16(0, 0, 0));
- grx_text("DIO 0-1-2-3 are configured in output mode",
- 9, 28, rgb16(255, 70, 70), rgb16(0, 0, 0));
- grx_text("Output bits", 35, 50, rgb16(200, 0, 0), rgb16(0, 0, 0));
- grx_text("input bits", 235, 50, rgb16(30,255,30), rgb16(0, 0, 0));
- grx_text("CTRL + C to exit", 9, 115, rgb16(255,255,0), rgb16(0,0,0));
-}
-
-/*
-* At each activation this task change output value of lowest digitals line
-* and read value on highest digital lines, showing them at video
-*/
-TASK test_DIO(int dummy)
-{
- BYTE out_val = 0x00,
- in_val = 0;
- int i;
- char buf[10];
-
- //DIO 0..3 configured as output
- //DIO 4..7 configured as input
- DIO_setup(0x0F);
-
- while(1){
- DIO_write(out_val); //sends out value
- in_val = DIO_read() >> 4; //reads value
-
- for(i=3; i>=0; i--){
- if( (out_val>>i)%2 )
- grx_text("1", 25+10*(3-i), 75, rgb16(255,0,0), rgb16(0,0,0));
- else
- grx_text("0", 25+10*(3-i), 75, rgb16(255,0,0), rgb16(0,0,0));
- if( (in_val>>i)%2 )
- grx_text("1", 225+10*(3-i), 75, rgb16(0,255,0), rgb16(0,0,0));
- else
- grx_text("0", 225+10*(3-i), 75, rgb16(0,255,0), rgb16(0,0,0));
- }
- sprintf(buf, "%03d", out_val);
- grx_text(buf, 80, 75, rgb16(255,0,0), rgb16(0,0,0));
- sprintf(buf, "%03d", in_val);
- grx_text(buf, 280, 75, rgb16(0,255,0), rgb16(0,0,0));
-
- out_val = (out_val+1)%16;
- task_endcycle();
- }
-}
-
-void close_event(void *arg)
-{
- grx_close();
- switch(system){
- case 0: kern_printf("Regular end\n"); break;
- case 10:kern_printf("Cannot create task TEST DIO\n"); break;
- case 20:kern_printf("Pci bus don't find\n"); break;
- case 21:kern_printf("No National board on PC\n"); break;
- case 30:kern_printf("Cannot start graphic envirorment\n"); break;
- default: kern_printf("Unknown exit\n"); break;
- }
-}
-
-void exit_fun(KEY_EVT *k)
-{
- system = 0;
- sys_end();
-}
-
Index: pj/pci6025e/readme
===================================================================
--- pj/pci6025e/readme (revision 1344)
+++ pj/pci6025e/readme (nonexistent)
@@ -1,7 +0,0 @@
-These are the demos available for the National Instruments PCI6025e boards.
-
-These demos and the PCI driver have been made by
-Marco Ziglioli (zi_mar@libero.it). Please send any comments to:
-zi_mar@libero.it or to shark-help@gandalf.sssup.it.
-
-Paolo
Index: pj/pci6025e/makefile
===================================================================
--- pj/pci6025e/makefile (revision 1344)
+++ pj/pci6025e/makefile (nonexistent)
@@ -1,32 +0,0 @@
-#
-#
-# PCI6025E Examples and Test programs
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS= test_dac wave test_dio test_ppi test_ec test_bec test_mes test_bms
-
-include $(BASE)/config/example.mk
-
-test_dac:
- make -f $(SUBMAKE) APP=test_dac INIT= OTHEROBJS=initfile.o
-wave:
- make -f $(SUBMAKE) APP=wave INIT= OTHEROBJS=initfile.o
-test_dio:
- make -f $(SUBMAKE) APP=test_dio INIT= OTHEROBJS=initfile.o
-test_ppi:
- make -f $(SUBMAKE) APP=test_ppi INIT= OTHEROBJS=initfile.o
-test_ec:
- make -f $(SUBMAKE) APP=test_ec INIT= OTHEROBJS=initfile.o
-test_bec:
- make -f $(SUBMAKE) APP=test_bec INIT= OTHEROBJS=initfile.o
-test_mes:
- make -f $(SUBMAKE) APP=test_mes INIT= OTHEROBJS=initfile.o
-test_bms:
- make -f $(SUBMAKE) APP=test_bms INIT= OTHEROBJS=initfile.o
-
Index: pj/pci6025e/test_bms.c
===================================================================
--- pj/pci6025e/test_bms.c (revision 1344)
+++ pj/pci6025e/test_bms.c (nonexistent)
@@ -1,279 +0,0 @@
-/*****************************************************************************
-* Filename: test_bms.c *
-* Author: Marco Ziglioli (Doctor Stein) *
-* Date: 27/06/2001 *
-* Description: Test program for buffered period and semiperiod measurement *
-* capacity of National PCI6025E board *
-*----------------------------------------------------------------------------*
-* Notes: FOUT are enable and avaiable on pin 50 to provide 1 Mhz frequency *
-* You should connect source 0 (PIN 41) and source 1 (pin 45) to this *
-* freq source. Gate 0 (pin 42) and gate 1 (pin 44) must be connected *
-* rispectivly to DIO7 (pin 32) and DIO6 (pin 30). *
-* Use 'g' button to activate gate_action_task which generate a square *
-* wave with a freq of 0.5 Hz and Duty cycle of 75%. *
-* 's' button should show counters countent but gate_action_task *
-* when active shows counters content automatically so 's' button isn't*
-* useful. *
-*****************************************************************************/
-
-/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
- *
- * Copyright (C) 2001 Marco Ziglioli
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <kernel/kern.h>
-#include <drivers/keyb.h>
-#include <drivers/glib.h>
-
-#include <drivers/pci6025e/timer.h>
-#include <drivers/pci6025e/dio_ppi.h>
-
-#define SHOW_MET 30000
-#define SHOW_WCET 50000
-#define SHOW_PERIOD 1000000
-
-#define GATE_MET 2000
-#define GATE_WCET 5000
-#define GATE_PERIOD 2000000
-
-#define GATE_ACTION_P 500000
-#define GATE_ACTION_W 10000
-
-#define black rgb16(0, 0, 0)
-
-void endFun(KEY_EVT *);
-void gateEvent(KEY_EVT *);
-void showEvent(KEY_EVT *);
-
-void closeEvent(void *);
-
-void drawInterface(void);
-
-TASK show_val_body(int);
-TASK gate_action_body(int);
-
-BYTE sys = 0;
-PID show_val_pid, gate_action_pid;
-
-int main(int argc, char **argv)
-{
- KEY_EVT k;
- int modenum;
- SOFT_TASK_MODEL show_val_mod;
- HARD_TASK_MODEL gate_action_model;
-
- sys_atrunlevel(closeEvent, NULL, RUNLEVEL_BEFORE_EXIT);
-
- k.flag = CNTL_BIT;
- k.scan = KEY_X;
- k.ascii = 'x';
- keyb_hook(k, endFun);
-
- k.flag = CNTR_BIT;
- keyb_hook(k, endFun);
-
- k.flag = 0;
- k.scan = KEY_G;
- k.ascii = 'g';
- keyb_hook(k, gateEvent);
-
- k.scan = KEY_S;
- k.ascii = 's';
- keyb_hook(k, showEvent);
-
- if(pci_init()==-1){
- sys = 10;
- sys_end();
- }
-
- if(!reMap()){
- sys = 11;
- sys_end();
- }
-
- soft_task_default_model(show_val_mod);
- soft_task_def_aperiodic(show_val_mod);
- soft_task_def_level(show_val_mod, 1);
- soft_task_def_met(show_val_mod, SHOW_MET);
- soft_task_def_wcet(show_val_mod, SHOW_WCET);
- soft_task_def_period(show_val_mod, SHOW_PERIOD);
- if( (show_val_pid = task_create("Show task", show_val_body, &show_val_mod, NULL))
- == NIL ){
- sys = 20;
- sys_end();
- }
-
- hard_task_default_model(gate_action_model);
- hard_task_def_mit(gate_action_model, GATE_ACTION_P);
- hard_task_def_wcet(gate_action_model, GATE_ACTION_W);
- if( (gate_action_pid = task_create("Gate Action", gate_action_body, &gate_action_model, NULL))
- == NIL ){
- sys = 22;
- sys_end();
- }
-
- if(grx_init()==-1){
- sys = 30;
- sys_end();
- }
-
- if( (modenum = grx_getmode(800, 600, 16)) == -1){
- sys = 31;
- sys_end();
- }
-
- if(grx_setmode(modenum) == -1){
- sys = 32;
- sys_end();
- }
-
- drawInterface();
-
- DIO_init();
- DIO_setup(0xFF);
- DIO_write(0x00);
-
- //All PFI configured as input
- PFIprogramming(0x0000);
-
- //Fout provide 1MHz: timebase = 20MHz; divided by 2; on FOUT pin also divided by 10
- setIntClock(0, 1, 10);
-
- //Reset both counters
- TIM_reset(2);
-
- //C0 measures period on PFI3 with gate from PFI 4 driven by DIO7
- TIM_bufferedTimeMeasurement(C0, 0x04, 0x45, 0, 0);
-
- //C1 measures semiperiod on PFI 6 with gate from PFI 5 driven by FIO6
- TIM_bufferedTimeMeasurement(C1, 0x87, 0x46, 1, 0);
-
- //arm both counters
- TIM_arm(2);
-
- return 0;
-}
-
-void endFun(KEY_EVT *k)
-{
- sys_end();
-}
-
-void showEvent(KEY_EVT *k)
-{
- task_activate(show_val_pid);
-}
-
-void gateEvent(KEY_EVT *k)
-{
- task_activate(gate_action_pid);
-}
-
-void drawInterface(void)
-{
- grx_rect(1, 1, 799, 129, rgb16(105, 0, 0));
- grx_rect(2, 2, 798, 128, rgb16(155, 0, 0));
- grx_rect(3, 3, 797, 127, rgb16(205, 0, 0));
- grx_rect(4, 4, 796, 126, rgb16(255, 0, 0));
-
- grx_text("Test program for Buffered Period and Semiperiod measure through PCI6025E timers",
- 7, 10, rgb16(50, 255, 50), black);
-
- grx_text("This program counting rise edges on counters source (PFI3 & PFI6) between two rising",
- 7, 25, rgb16(0, 255, 255), black);
- grx_text("edges on gate (PFI 42) and beetwen each gate edge (PFI44).FOUT is enabled and",
- 7, 33, rgb16(0, 255, 255), black);
- grx_text("provides a frequency of 1 MHz", 7, 41, rgb16(0, 255, 255), black);
- grx_text("Instruction:",7, 53, rgb16(255, 0, 0), black);
- grx_text("Use 's' to see counters value",
- 7, 61, rgb16(0, 255, 255), black);
- grx_text("Use 'g' to enbale automatic tasks which generate square wave with freq of 0.5Hz",
- 7, 68, rgb16(0, 255, 255), black);
-
- grx_text("And duty cycle of 75%. Counter 0 must be loaded with about 2E6 ticks and counter 1",
- 7, 75, rgb16(0, 255, 255), black);
- grx_text("must be loaded alternativly with about 1.5E6 and 0.5E6 ticks",
- 7, 83, rgb16(0, 255, 255), black);
-
- grx_text("Please connect DIO7 (pin 32) to PFI4 (pin 42) and DIO6 (pin 30) to PFI5 (pin 44)",
- 7, 95, rgb16(0, 255, 0), black);
- grx_text("CTRL-X for Exit", 7, 110, rgb16(200, 200, 0), black);
-
- grx_rect(1, 147, 355, 183, rgb16(0, 105, 0));
- grx_rect(2, 148, 354, 182, rgb16(0, 155, 0));
- grx_rect(3, 149, 353, 181, rgb16(0, 205, 0));
- grx_rect(4, 150, 352, 180, rgb16(0, 255, 0));
- grx_text("Period", 7, 155, rgb16(255, 255, 0), black);
-
- grx_rect(455, 147, 799, 183, rgb16(0, 105, 0));
- grx_rect(456, 148, 798, 182, rgb16(0, 155, 0));
- grx_rect(457, 149, 797, 181, rgb16(0, 205, 0));
- grx_rect(458, 150, 796, 180, rgb16(0, 255, 0));
- grx_text("Semiperiod", 461, 155, rgb16(255, 0, 255), black);
-}
-
-TASK show_val_body(int dummy)
-{
- DWORD val;
- char buf[40];
-
- while(1){
- val = TIM_readHWSaveReg(C0);
- sprintf(buf,"C0 %07ld", val);
- grx_text(buf, 7, 165, rgb16(255, 0, 0), rgb16(0, 0, 0));
- val = TIM_readHWSaveReg(C1);
- sprintf(buf,"C1 %07ld", val);
- grx_text(buf, 461, 165, rgb16(0, 255, 0), rgb16(0, 0, 0));
-
- task_endcycle();
- }
-}
-
-TASK gate_action_body(int dummy)
-{
- int i;
- i = 0;
-
- while(1){
- if( (i%4)==0 ) DIO_write(0xC0);
- if( (i%4)==3 ) DIO_write(0x00);
-
- i++;
-
- task_activate(show_val_pid);
-
- task_endcycle();
- }
-}
-
-void closeEvent(void *arg)
-{
- grx_close();
- TIM_disarm(2);
- switch(sys){
- case 0: cprintf("Ok\n"); break;
- case 10: cprintf("No PCI\n"); break;
- case 11: cprintf("No National Board\n"); break;
- case 20: cprintf("task <show val> down\n"); break;
- case 22: cprintf("task <gate action> down\n"); break;
- case 30: cprintf("Cannot initialize grx\n"); break;
- case 31: cprintf("Resolution 800x600x16 not supported\n"); break;
- case 32: cprintf("Cannot sets up graphic envirorment\n"); break;
- default: cprintf("????????????\n"); break;
- }
-}
Index: pj/pci6025e/wave.c
===================================================================
--- pj/pci6025e/wave.c (revision 1344)
+++ pj/pci6025e/wave.c (nonexistent)
@@ -1,328 +0,0 @@
-/*****************************************************************************
-* Filename: wave.c *
-* Author: Marco Ziglioli (Doctor Stein) *
-* Date: 12/06/2001 *
-* Description: Little test program for Analog Output section of PCI6025E *
-*----------------------------------------------------------------------------*
-* Notes: Connect an oscilloscope to DACs output pins (20 & 21) and *
-* watch the waveforms. *
-* and decrise voltage *
-*****************************************************************************/
-
-/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
- *
- * Copyright (C) 2001 Marco Ziglioli
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-
-#include <drivers/glib.h>
-#include <drivers/keyb.h>
-#include <modules/sem.h>
-
-#include <drivers/pci6025e/dac.h>
-
-#define MAX_VAL 500
-
-#define WAVE_PERIOD 1000
-#define WAVE_WCET 200
-#define GRAPH_PERIOD 1000
-#define GRAPH_WCET 550
-
-#define TASK_GROUP 1
-
-#define DAC0_CONV 0.1
-#define DAC1_CONV 0.05
-
-#define INC 40
-
-void createWaves(void);
-void drawInterface(void);
-
-void endfun(KEY_EVT *);
-void close_event(void *);
-
-TASK wave_body(int);
-TASK video_body(int);
-
-WORD wave0[MAX_VAL], wave1[MAX_VAL];
-int black = rgb16(0,0,0),
- white = rgb16(255, 255, 255);
-
-BYTE sys = 0;
-
-int main(int argc, char **argv)
-{
- KEY_EVT k;
- HARD_TASK_MODEL wave0, wave1;
- HARD_TASK_MODEL video;
- PID wave0_pid, wave1_pid, video_pid;
- int modenum;
-
- k.flag = CNTR_BIT;
- k.scan = KEY_X;
- k.ascii = 'x';
- keyb_hook(k, endfun);
-
- k.flag = CNTL_BIT;
- keyb_hook(k, endfun);
-
- sys_atrunlevel(close_event, NULL, RUNLEVEL_BEFORE_EXIT);
-
- hard_task_default_model(wave0);
- hard_task_def_wcet(wave0, WAVE_WCET);
- hard_task_def_mit(wave0, WAVE_PERIOD);
- hard_task_def_arg(wave0, 0);
- hard_task_def_group(wave0, TASK_GROUP);
- if( (wave0_pid = task_create("Wave 0", wave_body, &wave0, NULL)) == NIL ){
- sys = 10;
- sys_end();
- }
-
- hard_task_default_model(wave1);
- hard_task_def_wcet(wave1, WAVE_WCET);
- hard_task_def_mit(wave1, WAVE_PERIOD);
- hard_task_def_arg(wave1, (void *)1);
- hard_task_def_group(wave1, TASK_GROUP);
- if( (wave1_pid = task_create("Wave 1", wave_body, &wave1, NULL)) == NIL ){
- sys = 11;
- sys_end();
- }
-
- hard_task_default_model(video);
- hard_task_def_wcet(video, GRAPH_WCET);
- hard_task_def_mit(video, GRAPH_PERIOD);
- hard_task_def_group(video, TASK_GROUP);
- if( (video_pid = task_create("Video task", video_body, &video, NULL))
- == NIL ){
- sys = 12;
- sys_end();
- }
-
- if(pci_init() == -1){
- sys = 20;
- sys_end();
- }
-
- if(!reMap()){
- sys = 21;
- sys_end();
- }
-
- if(grx_init() == -1){
- sys = 30;
- sys_end();
- }
-
- if( (modenum = grx_getmode(800, 600, 16)) == -1 ){
- sys = 31;
- sys_end();
- }
-
- grx_setmode(modenum);
-
- createWaves();
- drawInterface();
- //Analog output section set up
- DAC_Init();
-
- /*
- *AI_TIMEBASE div by 2; OUT_TIMEBASE div by 2; single DAC mode
- *TMRDACWR = 3 OUT_TIMEBASE period; FIFO flags polarity active low
- *TMRDACWR disabled; DMA PIO control = FIFO DATA interface mode
- *UPDATE signal timebase = AO_UPDATE pulse width
- *UPDATE pulsewidth = 3-3.5 OUT_TIMEBASE period
- *UPDATE signal polarity = HIGH Z
- */
- DAC_boardInit(0x02, 0x4000);
-
- /*
- *LDAC0 source = UPDATE
- *DAC0 update immediately
- *LDAC1 source = UPDATE
- *DAC1 update immediately
- */
- DAC_LDACSourceUpdate(0x00);
- //End of Analog output section setup
-
-
- group_activate(TASK_GROUP);
-
- return 0;
-}
-
-void endfun(KEY_EVT *k)
-{
- sys_end();
-}
-
-void close_event(void *arg)
-{
- grx_close();
- switch(sys){
- case 0: cprintf("Regular End!\n"); break;
- case 10: cprintf("Cannot create <wave 0> task!\n"); break;
- case 11: cprintf("Cannot create <wave 1> task!\n"); break;
- case 12: cprintf("Cannot create <video> task!\n"); break;
- case 20: cprintf("No PCI bus found!\n"); break;
- case 21: cprintf("No NATIONAL PCI E-Series board found on PCI bus!\n");
- break;
- case 30: cprintf("Cannot start graphic envirorment!\n"); break;
- case 31: cprintf("800x600x16 video mode not supported!\n");
- default: cprintf("Unknown exit event!\n"); break;
- }
-}
-
-/*
-* Wave's samples generation
-*/
-void createWaves(void)
-{
- int i;
- WORD value0, value1;
- BYTE direction;
-
- /* Wave0
- * * * * * * * *
- ** ** ** ** ** ** ** **
- * ** * * ** ** ** ** ** *
- * * ** * * * * * *
- --------------------------...
-
- Wave 1
- * *
- * * * *
- * * * *
- * * * *
- -------*-------*-------*--...
- * * *
- * * *
- * *
- * */
-
- value0 = 0;
- value1 = 0;
- direction = 0;
- for(i=0; i<MAX_VAL; i++){
- wave0[i] = (value0 & 0x0FFF);
- wave1[i] = (value1 & 0x0FFF);
-
- value0 = (value0 + INC) % 2000;
- if(!direction) value1 += INC;
- else value1 -= INC;
-
- if(value1 >= 2000) direction = 1;
- if(value1 <= -2000) direction = 0;
- }
-}
-
-void drawInterface(void)
-{
- int i;
-
- grx_rect(1, 1, 799, 69, rgb16(105, 0, 105));
- grx_rect(2, 2, 798, 68, rgb16(155, 0, 155));
- grx_rect(3, 3, 797, 67, rgb16(205, 0, 205));
- grx_rect(4, 4, 796, 66, rgb16(255, 0, 255));
-
- grx_text("Test program for Analog output section of PCI6025E",
- 7, 10, rgb16(50, 255, 50), black);
- grx_text("DAC0 and DAC1 should generate saw-toothed wave and triangular wave",
- 7, 33, rgb16(0, 255, 255), black);
- grx_text("Use an oscilloscope to test this software",
- 7, 40, rgb16(0, 255, 255), black);
-
- grx_text("CTRL-X for Exit", 7, 55, rgb16(200, 200, 0), black);
-
- grx_text("DAC 0", 100, 92, rgb16(200, 200, 0), black);
- grx_rect(1, 100, 799, 325, rgb16(0, 105, 0));
- grx_rect(2, 101, 798, 324, rgb16(0, 155, 0));
- grx_rect(3, 102, 797, 323, rgb16(0, 205, 0));
- grx_rect(4, 103, 796, 322, rgb16(0, 255, 0));
- grx_line(19, 115, 19, 320, white);
- grx_line(14, 315, 530, 315, white);
-
- grx_text("DAC 1", 100, 362, rgb16(200, 200, 0), black);
- grx_rect(1, 370, 799, 595, rgb16(105, 0, 0));
- grx_rect(2, 371, 798, 594, rgb16(155, 0, 0));
- grx_rect(3, 372, 797, 593, rgb16(205, 0, 0));
- grx_rect(4, 373, 796, 592, rgb16(255, 0, 0));
- grx_line(19, 385, 19, 585, white);
- grx_line(14, 485, 530, 485, white);
-
- for(i=22; i<530; i+=2){
- //DAC0
- grx_plot(i, 115, white);
- grx_plot(i, 215, white);
- //DAC1
- grx_plot(i, 385, white);
- grx_plot(i, 435, white);
- grx_plot(i, 535, white);
- grx_plot(i, 585, white);
- }
-
- grx_text("5 V", 540, 211, rgb16(0, 255, 0), black);
- grx_text("10 V", 540, 111, rgb16(0, 255, 0), black);
- grx_text("+5 V", 540, 431, rgb16(0, 255, 0), black);
- grx_text("+10 V", 540, 381, rgb16(0, 255, 0), black);
- grx_text("-5 V", 540, 531, rgb16(255, 0, 0), black);
- grx_text("-10 V", 540, 581, rgb16(255, 0 , 0), black);
-}
-
-/*
-* Sends out waves' samples
-*/
-TASK wave_body(int wv)
-{
- int i = 0;
- while(1){
- if(wv)
- DAC_output(DAC1, wave1[i]);
- else
- DAC_output(DAC0, wave0[i]);
-
- i = (i + 1) % 500;
- task_endcycle();
- }
-}
-
-/*
-* Shows wave on screen
-*/
-TASK video_body(int dummy)
-{
- int i = 0;
- int n_tmp, o_tmp;
- //char buf[10];
-
- while(1){
- o_tmp = n_tmp;
- if( (wave1[i] & 0x0800) != 0 ) n_tmp = wave1[i]-0x0FFF;
- else n_tmp = wave1[i];
-
- if(i>0){
- grx_line(19+i, 314-wave0[i-1]*DAC0_CONV,
- 20+i, 314-wave0[i]*DAC0_CONV, rgb16(255, 255, 0));
- grx_line(19+i, 485-o_tmp*DAC1_CONV,
- 20+i, 485-n_tmp*DAC1_CONV, rgb16(0, 255, 255));
- }
-
- i = (i + 1) % 500;
- task_endcycle();
- }
-}
Index: pj/pci6025e/initfile.c
===================================================================
--- pj/pci6025e/initfile.c (revision 1344)
+++ pj/pci6025e/initfile.c (nonexistent)
@@ -1,63 +0,0 @@
-/*
-* Filename: Initfile.c
-* Author: Marco Ziglioli (Doctor Stein)
-* Date: (I don't remeber... I'm sorry)
-* Description: this file is the same for every examples in this section
-*/
-
-/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
- *
- * Copyright (C) 2001 Marco Ziglioli
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <kernel/kern.h>
-#include <modules/edf.h>
-#include <modules/cbs.h>
-#include <modules/rr.h>
-#include <modules/hartport.h>
-#include <modules/dummy.h>
-#include <modules/sem.h>
-
-#include <drivers/keyb.h>
-
-#define TICK 1000
-#define RRTICK 5000
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- EDF_register_level(EDF_ENABLE_ALL);
- CBS_register_level(CBS_ENABLE_ALL, 0);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
- KEYB_init(NULL);
-
- __call_main__(mb);
-
- return (void *)0;
-}
Index: pj/pci6025e/test_mes.c
===================================================================
--- pj/pci6025e/test_mes.c (revision 1344)
+++ pj/pci6025e/test_mes.c (nonexistent)
@@ -1,290 +0,0 @@
-/*****************************************************************************
-* Filename: test_mes.c *
-* Author: Marco Ziglioli (Doctor Stein) *
-* Date: 25/06/2001 *
-* Description: Test file for single period and pulsewidth measurement feature*
-* of PCI6025E timers/counters *
-*----------------------------------------------------------------------------*
-* Notes: board is configured to provide a frequency of 1 MHZ through its FOUT*
-* pin (50). PFI3 (41) and PFI6 (45) are configured like source pins *
-* counter 0 and counter 1. PFI4 (42) and PFI 5(44) are the gates for *
-* the two counters. Please connect DIO7(32) to PFI4 and DIO6(30) to *
-* PFI 5. *
-* With 'g' key a task is started which generate a square wave on DIO7 *
-* with a period of 2 secs. With 'h' key the same square wave is *
-* generated on DIO6. *
-* When measurement is performed data are stored into Hardware Save *
-* Registers: use key 's' to show this values *
-*****************************************************************************/
-
-
-/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
- *
- * Copyright (C) 2001 Marco Ziglioli
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-#include <kernel/kern.h>
-#include <drivers/keyb.h>
-#include <drivers/glib.h>
-
-#include <drivers/pci6025e/timer.h>
-#include <drivers/pci6025e/dio_ppi.h>
-
-#define TASK_MET 20000
-#define TASK_WCET 50000
-#define TASK_PERIOD 100000
-
-#define PERIOD 1000000
-
-void endFun(KEY_EVT *);
-void gateEvent(KEY_EVT *);
-
-void drawInterface(void);
-void closeEvent(void *);
-
-TASK show_body(int);
-TASK gate_body(int);
-
-BYTE sys = 0;
-PID c0_gate_pid, c1_gate_pid, show_pid;
-int black = rgb16(0, 0, 0);
-
-int main(int argc, char **argv)
-{
- KEY_EVT k;
- int modenum;
- SOFT_TASK_MODEL show_model;
- HARD_TASK_MODEL gating;
-
- sys_atrunlevel(closeEvent, NULL, RUNLEVEL_BEFORE_EXIT);
-
- k.flag = CNTL_BIT;
- k.scan = KEY_X;
- k.ascii = 'x';
- keyb_hook(k, endFun);
-
- k.flag = CNTR_BIT;
- keyb_hook(k, endFun);
-
- k.flag = 0;
- k.scan = KEY_G;
- k.ascii = 'g';
- keyb_hook(k, gateEvent);
-
- k.scan = KEY_H;
- k.ascii = 'h';
- keyb_hook(k, gateEvent);
-
- k.scan = KEY_S;
- k.ascii = 's';
- keyb_hook(k, gateEvent);
-
- if(pci_init()==-1){
- sys = 10;
- sys_end();
- }
-
- if(!reMap()){
- sys = 11;
- sys_end();
- }
-
- soft_task_default_model(show_model);
- soft_task_def_level(show_model, 1);
- soft_task_def_met(show_model, TASK_MET);
- soft_task_def_wcet(show_model, TASK_WCET);
- soft_task_def_aperiodic(show_model);
- soft_task_def_period(show_model, TASK_PERIOD);
- if( (show_pid = task_create("Show task", show_body, &show_model, NULL))
- == NIL ){
- sys = 20;
- sys_end();
- }
-
- hard_task_default_model(gating);
- hard_task_def_mit(gating, PERIOD);
- hard_task_def_wcet(gating, 20000);
- hard_task_def_arg(gating, C0);
- if( (c0_gate_pid = task_create("C0 Gate task", gate_body, &gating, NULL)) == NIL ){
- sys = 21;
- sys_end();
- }
-
- hard_task_def_arg(gating, (void *)C1);
- if( (c1_gate_pid = task_create("C1 Gate task", gate_body, &gating, NULL)) == NIL ){
- sys = 22;
- sys_end();
- }
-
- if(grx_init()==-1){
- sys = 30;
- sys_end();
- }
-
- if( (modenum = grx_getmode(800, 600, 16)) == 0 ){
- sys = 31;
- sys_end();
- }
-
- grx_setmode(modenum);
- drawInterface();
- //Enable DIO to manage gates
- DIO_init();
- DIO_setup(0xFF);
- DIO_write(0x00);
-
- //All PFI configured as input
- PFIprogramming(0x0000);
- //Fout provide 1MHz: timebase = 20MHz; divided by 2; on FOUT pin also divided by 10
- setIntClock(0, 1, 10);
-
- //Reset both counters
- TIM_reset(2);
-
- //Source PFI3(41); Gate PFI 4(42); Measure period
- TIM_timeMeasurement(C0, 0x04, 0x45, 0, 0x00, 0);
-
- //Source PFI6(45); Gate PFI 5(44); Measure pulsewidth
- TIM_timeMeasurement(C1, 0x87, 0x46, 1, 0x00, 0);
-
- //Arm both counter
- TIM_arm(2);
-
- return 0;
-}
-
-TASK show_body(int dummy)
-{
- DWORD val;
- char buf[20];
-
- while(1){
- val = TIM_readHWSaveReg(C0);
- sprintf(buf, "%ld", val);
- grx_text(buf, 600, 471, rgb16(0, 255, 0), black);
- val = TIM_readHWSaveReg(C1);
- sprintf(buf, "%ld", val);
- grx_text(buf, 200, 471, rgb16(255, 0, 0), black);
-
- task_endcycle();
- }
-}
-
-TASK gate_body(int counter)
-{
- BYTE out;
-
- if(counter == C0) out = 0x80;
- else out = 0x40;
-
- while(1){
- DIO_write(out);
- if(counter == C0){
- if(out) out = 0x00;
- else out = 0x80;
- } else {
- if(out) out = 0x40;
- else out = 0x00;
- }
-
- task_endcycle();
- }
-}
-
-void drawInterface(void)
-{
- grx_rect(1, 1, 799, 120, rgb16(105, 0, 0));
- grx_rect(2, 2, 798, 119, rgb16(155, 0, 0));
- grx_rect(3, 3, 797, 118, rgb16(205, 0, 0));
- grx_rect(4, 4, 796, 117, rgb16(255, 0, 0));
-
- grx_text("Test program for single period and pulsewidth measurement features",
- 7, 10, rgb16(200, 200, 0), black);
-
- grx_text("This program measures single period and pulsewidth of a square wave",
- 7, 20, rgb16(0, 255, 0), black);
- grx_text("with frequency of 0.5 Hz", 7, 28, rgb16(0, 255, 0), black);
- grx_text("Please connect PFI3 & PFI6 (41 & 45) to FOUT pin (50) or to 1Mhz frequency source",
- 7, 40, rgb16(255, 0, 0), black);
- grx_text("Connect also DIO7 (32) to PFI4 (42) and DIO6 to PFI5 (44)",
- 7, 48, rgb16(255, 0, 0), black);
- grx_text("Commands:", 7, 60, rgb16(0, 120, 0), black);
- grx_text("Use 'g' to start wave generation on DIO7",
- 7, 70, rgb16(0, 255, 255), black);
- grx_text("Use 'h' to start wave generation on DIO6",
- 7, 78, rgb16(0, 255, 255), black);
- grx_text("Use 's' to show Hardware Save Registers content",
- 7, 86, rgb16(0, 255, 255), black);
- grx_text("CTRL-X to exit", 7, 105, rgb16(255, 255, 0), black);
-
- grx_rect(197, 127, 603, 423, rgb16(0, 255, 0));
- grx_rect(198, 128, 602, 422, rgb16(0, 205, 0));
- grx_rect(199, 129, 601, 421, rgb16(0, 155, 0));
- grx_rect(200, 130, 600, 420, rgb16(0, 105, 0));
- grx_line(215, 405, 215, 150, rgb16(255, 255, 255));
- grx_line(210, 400, 580, 400, rgb16(255, 255, 255));
- grx_line(220, 395, 220, 170, rgb16(0, 0, 255));
- grx_line(220, 170, 390, 170, rgb16(0, 0, 255));
- grx_line(390, 170, 390, 395, rgb16(0, 0, 255));
- grx_line(390, 395, 560, 395, rgb16(0, 0, 255));
- grx_line(220, 150, 560, 150, rgb16(0, 255, 0));
- grx_line(220, 155, 390, 155, rgb16(255, 0, 0));
-
- grx_rect(1, 450, 390, 503, rgb16(105, 0, 0));
- grx_rect(2, 451, 389, 502, rgb16(155, 0, 0));
- grx_rect(3, 452, 388, 501, rgb16(205, 0, 0));
- grx_rect(4, 453, 387, 500, rgb16(255, 0, 0));
- grx_text("Pulsewidth: [us]", 7, 471, rgb16(255, 0, 0), black);
-
- grx_rect(410, 450, 799, 503, rgb16(105, 0, 0));
- grx_rect(411, 451, 798, 502, rgb16(155, 0, 0));
- grx_rect(412, 452, 797, 501, rgb16(205, 0, 0));
- grx_rect(413, 453, 796, 500, rgb16(255, 0, 0));
- grx_text("Period: [us]", 416, 471, rgb16(0, 255, 0), black);
-}
-
-void endFun(KEY_EVT *k)
-{
- sys_end();
-}
-
-void gateEvent(KEY_EVT *k)
-{
- if(k->scan == KEY_G) task_activate(c0_gate_pid);
- if(k->scan == KEY_H) task_activate(c1_gate_pid);
- if(k->scan == KEY_S) task_activate(show_pid);
-}
-
-void closeEvent(void *arg)
-{
- TIM_disarm(2);
- grx_close();
-
- switch(sys){
- case 0: cprintf("OK\n"); break;
- case 10: cprintf("No PCI bus found\n"); break;
- case 11: cprintf("No NATIONAL board found\n"); break;
- case 20: cprintf("task <show value> down!!\n"); break;
- case 21: cprintf("task <C0 gate manage> down!!!\n"); break;
- case 22: cprintf("task <C1 gate manage> down!!!\n"); break;
- case 30: cprintf("Cannot init graphic envirorment\n"); break;
- case 31: cprintf("graphic mode 800x600x16 not supported\n"); break;
- default: cprintf("???????????????\n"); break;
- }
-}
Index: pj/pci6025e/test_ec.c
===================================================================
--- pj/pci6025e/test_ec.c (revision 1344)
+++ pj/pci6025e/test_ec.c (nonexistent)
@@ -1,405 +0,0 @@
-/*****************************************************************************
-* Filename: test_ec.c *
-* Author: Marco Ziglioli (Doctor Stein) *
-* Date: 20/06/2001 *
-* Description: Test program for gated event counting using PCI6025E board *
-*----------------------------------------------------------------------------*
-* Notes: FOUT are enabled to provide a frequency of 6250 Hz. You could *
-* connect PFI3 (pin 41) and PFI6 (pin 45) to this source for counting *
-* edges. Gated counting are enabled and PFI4 (pin 42) is gate pin for *
-* counter 0 and PFI5 (pin 44) is gate pin for counter 0. DIO 7 and 6 *
-* are als configured to switch between 0 and 5 V. Connect DIO 7 to *
-* gate 0 and DIO 6 to gate 1. Use 'g' (counter 0) and 'h' (counter 1) *
-* to change DIO lines value. On left area of the screen you should *
-* see counter while counting and on the right area you should lock *
-* counter values by pressing 's' key. *
-* Notice that line parameters are enabled and accept inital value *
-* for the two counters. If they aren't specified or they are wrong *
-* counters start from 0x00FFFFFF (counter 0 which counts down) and *
-* 0x00000000 (counter 1 which counts up). *
-* Last time addiction: TC Interrupts and Gate interrupts are enabled *
-* Bottom squares indicates when an interrupt is *
-* raised *
-*****************************************************************************/
-
-/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
- *
- * Copyright (C) 2001 Marco Ziglioli
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <kernel/kern.h>
-#include <drivers/keyb.h>
-#include <drivers/glib.h>
-
-#include <drivers/pci6025e/timer.h>
-#include <drivers/pci6025e/dio_ppi.h>
-
-#ifndef INT_NO
- #define INT_NO NIDevice_info[0].InterruptLevel
-#endif
-
-BYTE sys = 0;
-
-PID show_aper_pid;
-BYTE out = 0x00;
-
-int black = rgb16(0, 0, 0),
- white = rgb16(255, 255, 255);
-
-void endfun(KEY_EVT *);
-void close_event(void *);
-void show_evt(KEY_EVT *k);
-void gate_change(KEY_EVT *k);
-
-void drawInterface(void);
-
-void int_evt(int intno);
-
-TASK show_per(int);
-TASK show_aper(int);
-
-int main(int argc, char **argv)
-{
- KEY_EVT k;
- SOFT_TASK_MODEL show_per_mod, show_aper_mod;
- PID show_per_pid;
- int result, modenum;
- DWORD init_val_c0, init_val_c1;
-
- if(argc >= 3){
- if( (result = sscanf(argv[1], "%ld", &init_val_c0)) != 1)
- init_val_c0 = 0x00FFFFFF;
- if( (result = sscanf(argv[2], "%ld", &init_val_c1)) != 1)
- init_val_c1 = 0x00000000;
- }
- if(argc == 2){
- if( (result = sscanf(argv[1], "%ld", &init_val_c0)) != 1)
- init_val_c0 = 0x00FFFFFF;
- init_val_c1 = 0x00000000;
- }
- if(argc == 1){
- init_val_c0 = 0x00FFFFFF;
- init_val_c1 = 0x00000000;
- }
-
- sys_atrunlevel(close_event, NULL, RUNLEVEL_BEFORE_EXIT);
-
- k.flag = CNTL_BIT;
- k.scan = KEY_X;
- k.ascii = 'x';
- keyb_hook(k, endfun);
-
- k.flag = CNTR_BIT;
- keyb_hook(k, endfun);
-
- soft_task_default_model(show_aper_mod);
- soft_task_def_aperiodic(show_aper_mod);
- soft_task_def_level(show_aper_mod, 1);
- soft_task_def_period(show_aper_mod, 250000);
- soft_task_def_met(show_aper_mod, 30000);
- soft_task_def_wcet(show_aper_mod, 60000);
- if( (show_aper_pid = task_create("Show aperiodic task", show_aper, &show_aper_mod, NULL)) == NIL ){
- sys = 10;
- sys_end();
- }
-
- k.flag = 0;
- k.scan = KEY_S;
- k.ascii = 's';
- keyb_hook(k, show_evt);
-
- k.flag = 0;
- k.scan = KEY_G;
- k.ascii = 'g';
- keyb_hook(k, gate_change);
-
- k.scan = KEY_H;
- k.ascii = 'h';
- keyb_hook(k, gate_change);
-
- soft_task_default_model(show_per_mod);
- soft_task_def_level(show_per_mod, 1);
- soft_task_def_met(show_per_mod, 1000);
- soft_task_def_period(show_per_mod, 10000);
- if( (show_per_pid = task_create("Show periodic task", show_per, &show_per_mod, NULL)) == NIL){
- sys = 11;
- sys_end();
- }
-
- if(pci_init()==-1){
- sys = 20;
- sys_end();
- }
-
- if(!reMap()){
- sys = 21;
- sys_end();
- }
-
- if(grx_init()==-1){
- sys = 30;
- sys_end();
- }
-
- if( (modenum = grx_getmode(800, 600, 16)) == -1){
- sys = 31;
- sys_end();
- }
-
- grx_setmode(modenum);
-
- drawInterface();
-
- //Init DIO lines used to manage counters gates
- DIO_init();
- DIO_setup(0xFF);
- DIO_write(out);
-
- //All PFI are configured as input
- PFIprogramming(0x0000);
- //FOUT enable; Slow TIMEBASE, divided by two; divided by 16 on FOUT pin
- setIntClock(1, 1, 0);
-
- TIM_reset(2); //Reset both two counters
-
- //Source PFI3(41); Gate PFI 4(42); Down counting; counts rising edge;
- TIM_eventCounting(C0, 0x04, 0x45, 0x03, init_val_c0);
-
- //Source PFI6(45); Gate PFI 5(44); Up counting; counts rising edge;
- TIM_eventCounting(C1, 0x87, 0x46, 0x03, init_val_c1);
-
- //Set up interrupt group A and B enabling and programming to assert a request
- //both on line 2 and 3 respectively
- INT_setup(0x0A, 0x0B);
- INT_personalize(0x03); //Interrupt request polarity low; IRQ driven on line 0 and 1
-
- handler_set(INT_NO, int_evt, show_aper_pid);
-
- TIM_arm(2); //Arm both two counters
-
- task_activate(show_per_pid);
-
- return 0;
-}
-
-void drawInterface(void)
-{
- grx_rect(1, 1, 799, 99, rgb16(105, 0, 0));
- grx_rect(2, 2, 798, 98, rgb16(155, 0, 0));
- grx_rect(3, 3, 797, 97, rgb16(205, 0, 0));
- grx_rect(4, 4, 796, 96, rgb16(255, 0, 0));
-
- grx_text("Test program for Gated Event Counting capacity of PCI6025E timers",
- 7, 10, rgb16(50, 255, 50), black);
-
- grx_text("This program counting rise edges on counters source (PFI3 & PFI6) when releted gates",
- 7, 25, rgb16(0, 255, 255), black);
- grx_text("(PFI 42 & 44) are enabled. Frequency Out (FOUT) is enabled and provides a frequency of 6250 Hz",
- 7, 33, rgb16(0, 255, 255), black);
-
- grx_text("Instruction:",7, 43, rgb16(255, 0, 0), black);
- grx_text("Use 's' to lock counters value in right squares",
- 7, 51, rgb16(0, 255, 255), black);
- grx_text("Use 'g' to block or to release alternativly counter 0 (see top-left square)",
- 7, 58, rgb16(0, 255, 255), black);
-
- grx_text("Use 'h' to block or to release alternativly counter 1 (see bottom-left square)",
- 7, 65, rgb16(0, 255, 255), black);
-
- grx_text("Please connect DIO7 (pin 32) to PFI4 (pin 42) and DIO6 (pin 30) to PFI5 (pin 44)",
- 7, 78, rgb16(0, 255, 0), black);
- grx_text("CTRL-X for Exit", 7, 88, rgb16(200, 200, 0), black);
-
- grx_rect(1, 110, 355, 170, rgb16(0, 105, 0));
- grx_rect(2, 111, 354, 169, rgb16(0, 155, 0));
- grx_rect(3, 112, 353, 168, rgb16(0, 205, 0));
- grx_rect(4, 113, 352, 167, rgb16(0, 255, 0));
- grx_text("Counter 0 evolution", 7, 120, rgb16(255, 255, 0), black);
-
- grx_rect(455, 110, 799, 170, rgb16(0, 105, 0));
- grx_rect(456, 111, 798, 169, rgb16(0, 155, 0));
- grx_rect(457, 112, 797, 168, rgb16(0, 205, 0));
- grx_rect(458, 113, 796, 167, rgb16(0, 255, 0));
- grx_text("Counter 0 locked value", 461, 120, rgb16(255, 0, 255), black);
-
- grx_rect(360, 110, 450, 170, rgb16(0, 105, 0));
- grx_rect(361, 111, 449, 169, rgb16(0, 155, 0));
- grx_rect(362, 112, 448, 168, rgb16(0, 205, 0));
- grx_rect(363, 113, 447, 167, rgb16(0, 255, 0));
- grx_text("Gate0", 367, 120, rgb16(200, 255, 200), black);
- grx_text("0 V", 367, 145, rgb16(255, 0, 0), black);
-
- grx_rect(1, 190, 355, 260, rgb16(85, 85, 255));
- grx_rect(2, 191, 354, 259, rgb16(135, 135, 255));
- grx_rect(3, 192, 353, 258, rgb16(190, 190, 255));
- grx_rect(4, 193, 352, 257, rgb16(230, 239, 255));
- grx_text("Counter 1 evolution", 7, 200, white, black);
-
- grx_rect(455, 190, 799, 260, rgb16(85, 85, 255));
- grx_rect(456, 191, 798, 259, rgb16(135, 135, 255));
- grx_rect(457, 192, 797, 258, rgb16(190, 190, 255));
- grx_rect(458, 193, 796, 257, rgb16(230, 230, 255));
- grx_text("Counter 1 locked value", 461, 200, white, black);
-
- grx_rect(360, 190, 450, 260, rgb16(85, 85, 255));
- grx_rect(361, 191, 449, 259, rgb16(135, 135, 255));
- grx_rect(362, 192, 448, 258, rgb16(190, 190, 255));
- grx_rect(363, 193, 447, 257, rgb16(230, 230, 255));
- grx_text("Gate1", 367, 200, rgb16(255, 200, 255), black);
- grx_text("0 V", 367, 225, rgb16(255, 0, 0), black);
-
- grx_text("Counter 0 Interrupt events", 7, 340, rgb16(255, 200, 100), black);
- grx_text("Counter 1 Interrupt events", 461, 340, rgb16(255, 200, 100), black);
- grx_rect(1, 350, 355, 400, rgb16(105, 0, 0));
- grx_rect(2, 351, 354, 399, rgb16(155, 0, 0));
- grx_rect(3, 352, 353, 398, rgb16(205, 0, 0));
- grx_rect(4, 353, 352, 397, rgb16(255, 0, 0));
- grx_rect(455, 350, 799, 400, rgb16(105, 0, 0));
- grx_rect(456, 351, 798, 399, rgb16(155, 0, 0));
- grx_rect(457, 352, 797, 398, rgb16(205, 0, 0));
- grx_rect(458, 353, 796, 397, rgb16(255, 0, 0));
-}
-
-
-TASK show_per(int none)
-{
- DWORD val;
- char buf[30];
-
- while(1){
- val = TIM_readCounter(C0); //Read counter 0 value
- sprintf(buf, "HEX: %08lx DEC: %08ld", val ,val);
- grx_text(buf, 7, 145, rgb16(255, 0, 0), black);
-
- val = TIM_readCounter(C1); //Read counter 1 value
- sprintf(buf, "HEX: %08lx DEC: %08ld", val ,val);
- grx_text(buf, 7, 225, rgb16(255, 0, 0), black);
-
- task_endcycle();
- }
-}
-
-TASK show_aper(int dummy)
-{
- DWORD val;
- char buf[30];
-
- while(1){
- val = TIM_readCounter(C0);
- sprintf(buf, "HEX: %08lx DEC: %08ld", val, val);
- grx_text(buf, 461, 145, rgb16(80, 80, 255), black);
-
- val = TIM_readCounter(C1);
- sprintf(buf, "HEX: %08lx DEC: %08ld", val, val);
- grx_text(buf, 461, 225, rgb16(80, 80, 255), black);
-
- task_endcycle();
- }
-}
-
-void endfun(KEY_EVT *k)
-{
- sys_end();
-}
-
-void show_evt(KEY_EVT *k)
-{
- task_activate(show_aper_pid);
-}
-
-void gate_change(KEY_EVT *k)
-{
- if(k->ascii == 'g'){
- if( (out & 0x80) != 0){
- out &= 0x7F;
- grx_text("0 V", 367, 145, rgb16(255, 0, 0), black);
- } else {
- out |= 0x80;
- grx_text("5 V", 367, 145, rgb16(0, 255, 0), black);
- }
- } else {
- if( (out & 0x40) != 0){
- out &= 0xBF;
- grx_text("0 V", 367, 225, rgb16(255, 0, 0), black);
- } else {
- out |= 0x40;
- grx_text("5 V", 367, 225, rgb16(0, 255, 0), black);
- }
- }
-
- DIO_write(out);
-}
-
-void close_event(void *arg)
-{
- TIM_disarm(2); //Disable both two counters
- grx_close();
- handler_remove(INT_NO);
-
-
- switch(sys){
- case 0: cprintf("OK\n"); break;
- case 10: cprintf("Task <show aperiodic> down\n"); break;
- case 11: cprintf("Task <show periodic> down\n"); break;
- case 20: cprintf("No PCI bus\n"); break;
- case 21: cprintf("No National board on PCI bus\n"); break;
- case 30: cprintf("No graphic can be initialized\n"); break;
- case 31: cprintf("This graphic mode cannot be supported\n"); break;
- default: cprintf("???????????\n"); break;
- }
-}
-
-void int_evt(int intno)
-{
- WORD status;
-
- status = DAQ_STC_Windowed_Mode_Read(AI_STATUS_1);
- if( (status & 0x8000) != 0){
- if( (status & 0x0008) != 0){
- grx_text("INT Group A raised! G0 Rolls over", 7, 360, rgb16(0, 255, 0), black);
- set(interrupt_a_ack, 14);
- DAQ_STC_Windowed_Mode_Write(INTERRUPT_A_ACK, interrupt_a_ack);
- clr(interrupt_a_ack, 14);
- }
- if( (status & 0x0004) != 0){
- grx_text("INT Group A raised! G0 gate pressed", 7, 380, rgb16(0, 255, 0), black);
- set(interrupt_a_ack, 15);
- DAQ_STC_Windowed_Mode_Write(INTERRUPT_A_ACK, interrupt_a_ack);
- clr(interrupt_a_ack, 15);
- }
- return;
- }
-
- status = DAQ_STC_Windowed_Mode_Read(AO_STATUS_1);
- if( (status & 0x8000) != 0){
- if( (status & 0x0008) != 0){
- grx_text("INT Group B raised! G1 Rolls over", 461, 360, rgb16(0, 255, 0), black);
- set(interrupt_b_ack, 14);
- DAQ_STC_Windowed_Mode_Write(INTERRUPT_B_ACK, interrupt_b_ack);
- clr(interrupt_b_ack, 14);
- }
- if( (status & 0x0004) != 0){
- grx_text("INT Group B raised! G1 gate pressed", 461, 380, rgb16(0, 255, 0), black);
- set(interrupt_b_ack, 15);
- DAQ_STC_Windowed_Mode_Write(INTERRUPT_B_ACK, interrupt_b_ack);
- clr(interrupt_b_ack, 15);
- }
- return;
- }
-}
-/* End of file: Test_ec.c */
Index: pj/pci6025e/test_dac.c
===================================================================
--- pj/pci6025e/test_dac.c (revision 1344)
+++ pj/pci6025e/test_dac.c (nonexistent)
@@ -1,364 +0,0 @@
-/*****************************************************************************
-* Filename: test_dac.c *
-* Author: Marco Ziglioli (Doctor Stein) *
-* Date: 12/06/2001 *
-* Description: Little test program for Analog Output section of PCI6025E *
-*----------------------------------------------------------------------------*
-* Notes: Connect a multimeter to DAC1 output (pin 21) and watch *
-* tension value. Use '+' and '-' on numeric pad to increase *
-* and decrise voltage *
-* With this program it's possible to point out possible *
-* offset errors. To correct them no software are written but *
-* in National board package there's the program to calibrate *
-* the board. Otherwise you can see how much is the offset *
-* and you can compensate it through software value *
-*****************************************************************************/
-
-/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
- *
- * Copyright (C) 2001 Marco Ziglioli
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <drivers/glib.h>
-#include <drivers/keyb.h>
-#include <drivers/pci6025e/dac.h>
-
-#define TASK_VOLT_PERIOD 150E3
-#define TASK_VOLT_WCET 080E3
-#define TASK_DAC_PERIOD 050E3
-#define TASK_DAC_WCET 020E3
-
-#define CONV 10/2048
-
-#define TASK_GROUP 1
-
-WORD dac0_value = 0,
- dac1_value = 0;
-
-BYTE sys = 0;
-BYTE dac = 0;
-
-//some colors
-int black = rgb16(0, 0, 0),
- white = rgb16(255, 255, 255);
-
-void drawInterface(void);
-void endfun(KEY_EVT *);
-void inc(KEY_EVT *);
-void dec(KEY_EVT *);
-void change_dac(KEY_EVT *);
-void close_event(void *);
-TASK Voltage_body(int);
-TASK DAC_Check_body(int);
-
-int main(int argc, char **argv)
-{
- int modenum;
- KEY_EVT k;
- HARD_TASK_MODEL m, d;
- PID pid_m, pid_d;
-
- sys_atrunlevel(close_event, NULL, RUNLEVEL_BEFORE_EXIT);
-
- keyb_set_map(itaMap);
- k.flag = CNTR_BIT;
- k.scan = KEY_X;
- k.ascii = 'x';
- keyb_hook(k, endfun);
-
- k.flag = CNTL_BIT;
- keyb_hook(k, endfun);
-
- k.flag = 0;
- k.scan = 78;
- k.ascii = 43;
- keyb_hook(k, inc);
-
- k.flag = 0;
- k.scan = 74;
- k.ascii = 45;
- keyb_hook(k, dec);
-
- k.flag = 0;
- k.scan = KEY_V;
- k.ascii = 'v';
- keyb_hook(k, change_dac);
-
- hard_task_default_model(m);
- hard_task_def_wcet(m, TASK_VOLT_WCET);
- hard_task_def_mit(m, TASK_VOLT_PERIOD);
- hard_task_def_group(m, TASK_GROUP);
- pid_m = task_create("Voltage", Voltage_body, &m, NULL);
- if(pid_m == NIL){
- sys = 30;
- sys_end();
- }
-
- hard_task_default_model(d);
- hard_task_def_wcet(d, TASK_DAC_WCET);
- hard_task_def_mit(d, TASK_DAC_PERIOD);
- hard_task_def_group(d, TASK_GROUP);
- pid_d = task_create("DAC Check", DAC_Check_body, &d, NULL);
- if(pid_d == NIL){
- sys = 31;
- sys_end();
- }
-
- //Check if PCI bus is present
- if(pci_init()==-1){
- sys = 10;
- sys_end();
- }
- //Check if a NI board is on PCI bus
- if(!reMap()){
- sys = 11;
- sys_end();
- }
-
- if(grx_init()==-1){
- sys = 20;
- sys_end();
- }
-
- modenum = grx_getmode(800, 600, 16);
- if(modenum == -1){
- sys = 21;
- sys_end();
- }
- grx_setmode(modenum);
-
- drawInterface();
-
- //Analog output section set up
- DAC_Init();
-
- /*
- *AI_TIMEBASE div by 2; OUT_TIMEBASE div by 2; single DAC mode
- *TMRDACWR = 3 OUT_TIMEBASE period; FIFO flags polarity active low
- *TMRDACWR disabled; DMA PIO control = FIFO DATA interface mode
- *UPDATE signal timebase = AO_UPDATE pulse width
- *UPDATE pulsewidth = 3-3.5 OUT_TIMEBASE period
- *UPDATE signal polarity = HIGH Z
- */
- DAC_boardInit(0x02, 0x4000);
- /*
- *LDAC0 source = UPDATE
- *DAC0 update immediately
- *LDAC1 source = UPDATE
- *DAC1 update immediately
- */
- DAC_LDACSourceUpdate(0x00);
- //End of Analog output section setup
-
- group_activate(TASK_GROUP);
-
- return 0;
-}
-
-/*
-* Every time operator select a new value to send to a DAc this TASK makes
-* actions needed to perform the operation
-*/
-TASK Voltage_body(int dac_work)
-{
- WORD old0_value, old1_value;
- char buf[6];
- float volt;
-
- old0_value = dac0_value;
- old1_value = dac1_value;
- while(1){
- if(dac){
- if(dac1_value != old1_value){
- DAC_output(DAC1, dac1_value);
- old1_value = dac1_value;
- sprintf(buf, "%04d", dac1_value);
- grx_text(buf, 70, 120, rgb16(180, 0, 0), rgb16(255,255,140));
- sprintf(buf, "%04x", dac1_value);
- grx_text(buf, 300, 120, rgb16(180, 0, 0), rgb16(255,255,140));
- if( (dac1_value & 0x0800) == 0 )
- volt = (float)dac1_value * (float)CONV;
- else
- volt = (float)(dac1_value-0x0FFF) * (float)CONV;
- sprintf(buf, "%05.2f", volt);
- grx_text(buf, 70, 177, rgb16(180, 40, 180), black);
- }
- } else {
- if(dac0_value != old0_value){
- DAC_output(DAC0, dac0_value);
- old0_value = dac0_value;
- sprintf(buf, "%04d", dac0_value);
- grx_text(buf, 521, 120, rgb16(180, 0, 0), rgb16(255,255,140));
- sprintf(buf, "%04x", dac0_value);
- grx_text(buf, 754, 120, rgb16(180, 0, 0), rgb16(255,255,140));
- if( (dac0_value & 0x0800) == 0 )
- volt = (float)dac0_value * (float)CONV;
- else
- volt = (float)(dac0_value-0x0FFF) * (float)CONV;
- sprintf(buf, "%05.2f", volt);
- grx_text(buf, 521, 177, rgb16(180, 40, 180), black);
- }
- }
- task_endcycle();
- }
-}
-
-/*
-* This TASK show which is the DAC active
-*/
-TASK DAC_Check_body(int dummy)
-{
- BYTE old = dac;
- char buf[8];
-
- while(1){
- if(dac != old){
- old = dac;
- sprintf(buf, "DAC %d", dac);
- grx_text(buf, 385, 90, rgb16(255*dac, 255*(1-dac), 0), black);
- }
- task_endcycle();
- }
-}
-
-void drawInterface(void)
-{
- grx_rect(1, 1, 799, 69, rgb16(105, 0, 0));
- grx_rect(2, 2, 798, 68, rgb16(155, 0, 0));
- grx_rect(3, 3, 797, 67, rgb16(205, 0, 0));
- grx_rect(4, 4, 796, 66, rgb16(255, 0, 0));
-
- grx_text("Test program for Analog output section of PCI6025E",
- 7, 10, rgb16(50, 255, 50), black);
- grx_text("Use '+' and '-' on numeric pad to change tension",
- 7, 25, rgb16(0, 255, 255), black);
- grx_text("Connect a tester to DAC1 output (pin21) or to DAC0 output (pin20)",
- 7, 33, rgb16(0, 255, 255), black);
- grx_text("Use 'v' to alternate change active DAC",
- 7, 40, rgb16(0, 255, 255), black);
-
- grx_text("CTRL-X for Exit", 7, 55, rgb16(200, 200, 0), black);
-
- grx_rect(1, 80, 355, 150, rgb16(0, 105, 0));
- grx_rect(2, 81, 354, 149, rgb16(0, 155, 0));
- grx_rect(3, 82, 353, 148, rgb16(0, 205, 0));
- grx_rect(4, 83, 352, 147, rgb16(0, 255, 0));
-
- grx_rect(1, 160, 355, 199, rgb16(0, 105, 0));
- grx_rect(2, 161, 354, 198, rgb16(0, 155, 0));
- grx_rect(3, 162, 353, 197, rgb16(0, 205, 0));
- grx_rect(4, 163, 352, 196, rgb16(0, 255, 0));
-
- grx_rect(455, 80, 799, 150, rgb16(105, 105, 0));
- grx_rect(456, 81, 798, 149, rgb16(155, 155, 0));
- grx_rect(457, 82, 797, 148, rgb16(205, 205, 0));
- grx_rect(458, 83, 796, 147, rgb16(255, 255, 0));
-
- grx_rect(455, 160, 799, 199, rgb16(105, 105, 0));
- grx_rect(456, 161, 798, 198, rgb16(155, 155, 0));
- grx_rect(457, 162, 797, 197, rgb16(205, 205, 0));
- grx_rect(458, 163, 796, 196, rgb16(255, 255, 0));
-
- grx_rect(360, 80, 450, 105, rgb16(85, 85, 255));
- grx_rect(361, 81, 449, 104, rgb16(125, 125, 255));
- grx_rect(362, 82, 448, 103, rgb16(175, 175, 255));
- grx_rect(363, 83, 447, 102, rgb16(225, 225, 255));
-
- grx_rect(153, 93, 195, 103, rgb16(255, 0, 0));
- grx_text("DAC 1", 155, 95, rgb16(255, 170, 170), black);
-
- grx_rect(607, 93, 649, 103, rgb16(255, 0, 0));
- grx_text("DAC 0", 609, 95, rgb16(255, 255, 210), black);
-
- grx_text("Decimal", 7, 120, rgb16(120, 120, 255), black);
- grx_text("Hexadecimal", 200, 120, rgb16(120, 120, 255), black);
- grx_text("Tension", 7, 177, rgb16(120, 120, 255), black);
-
- grx_text("Decimal", 461, 120, rgb16(255, 120, 120), black);
- grx_text("Hexadecimal", 654, 120, rgb16(255, 120, 120), black);
- grx_text("Tension", 461, 177, rgb16(255, 120, 120), black);
-}
-
-void close_event(void *arg)
-{
- grx_close();
- switch(sys){
- case 0 : cprintf("Regular End\n"); break;
- case 1 : cprintf("End fun invoked\n"); break;
- case 10: cprintf("Pci bus not found\n"); break;
- case 11: cprintf("No National board found\n"); break;
- case 20: cprintf("Cannot initialize graphic envirorment\n"); break;
- case 21: cprintf("Cannot start envirorment in 800x600x16\n"); break;
- case 30: cprintf("Cannot create task <voltage>\n"); break;
- case 31: cprintf("Canot create task <DAC Check>\n"); break;
- case 40: cprintf("Break on clock end event\n"); break;
- default: cprintf("Unkwon exit event\n"); break;
- }
-}
-
-void endfun(KEY_EVT *k)
-{
- sys = 1;
- sys_end();
-}
-
-/*
-* Capture correct key event and increase output tension of active DAC
-*/
-void inc(KEY_EVT *k)
-{
- if(dac){
- if( (dac1_value & 0x0800) == 0 && dac1_value > 0x07FF )
- dac1_value = 0;
- else
- dac1_value++;
- } else {
- if( (dac0_value & 0x0800) == 0 && dac0_value > 0x07FF )
- dac0_value = 0;
- else
- dac0_value++;
- }
-}
-
-/*
-* Same as above but decrease tension
-*/
-void dec(KEY_EVT *k)
-{
- if(dac){
- if(dac1_value < 1)
- dac1_value = 0x0FFF;
- else
- dac1_value -= 1;
- } else {
- if(dac0_value < 1)
- dac0_value = 0x0FFF;
- else
- dac0_value -= 1;
- }
-}
-
-/*
-* Capture correct key event and change active DAC
-*/
-void change_dac(KEY_EVT *k)
-{
- if(dac) dac = 0;
- else dac = 1;
-}
-
Index: pj/pci6025e/test_ppi.c
===================================================================
--- pj/pci6025e/test_ppi.c (revision 1344)
+++ pj/pci6025e/test_ppi.c (nonexistent)
@@ -1,190 +0,0 @@
-/*****************************************************************************
-* Filename: Test_ppi.c *
-* Author: Marco Ziglioli (Doctor Stein) *
-* Date: 22/05/2001 *
-* Description: Test PPI82C55MSM on NI DAQ PCI6025E *
-*----------------------------------------------------------------------------*
-* Notes: Configures port A and port C in input and port B in output *
-* Test 1: *
-* Now connect port B to port A and watch on video value changes *
-* in counting order. After connect port B to port C and watch *
-* the same events on port C *
-* Test 2: *
-* Connect 8 LEDs on port B and port A and port C lines to Vcc or*
-* GND. Now run this test and watch 8 diode changing in counting *
-* mode and on screen port A and port C values displayed *
-*****************************************************************************/
-
-/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
- *
- * Copyright (C) 2001 Marco Ziglioli
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-
-#include <drivers/keyb.h>
-#include <drivers/glib.h>
-#include <drivers/pci6025e/dio_ppi.h>
-
-void exit_fun(KEY_EVT *);
-TASK test_ppi(int);
-void close_event(void *);
-void draw_screen(void);
-
-BYTE system = 0;
-
-int main(int argc, char **argv)
-{
- HARD_TASK_MODEL m;
- KEY_EVT k;
- PID pid_m;
- int modenum;
-
- sys_atrunlevel(close_event, NULL, RUNLEVEL_BEFORE_EXIT);
-
- keyb_set_map(itaMap);
- k.flag = CNTL_BIT;
- k.scan = KEY_C;
- k.ascii = 'c';
- keyb_hook(k, exit_fun);
- k.flag = CNTR_BIT;
- k.scan = KEY_C;
- k.ascii = 'c';
- keyb_hook(k, exit_fun);
-
- hard_task_default_model(m);
- hard_task_def_wcet(m, 90000);
- hard_task_def_mit(m, 250000);
- pid_m = task_create("TEST PPI", test_ppi, &m, NULL);
- if(pid_m == NIL){
- system = 10;
- sys_end();
- }
-
- //Check if PCI bus is present
- if(pci_init() == -1){
- system = 20;
- sys_end();
- }
-
- //Look for a National board on PCI bus
- if(!reMap()){
- system = 21;
- sys_end();
- }
-
- //Start configuring DIO module
- PPI_init();
-
- grx_init();
- modenum = grx_getmode(640, 480, 16);
- if(modenum == -1){
- system = 30;
- sys_end();
- }
- grx_setmode(modenum);
-
- draw_screen();
-
- task_activate(pid_m);
-
- return 0;
-}
-
-void draw_screen(void)
-{
- grx_rect(5, 5, 610, 130, rgb16(255, 0, 0));
- grx_rect(4, 4, 611, 131, rgb16(0,255,255));
- grx_rect(3, 3, 612, 132, rgb16(255, 0, 0));
- grx_rect(15, 45, 195, 100, rgb16(255, 0, 0));
- grx_rect(215, 45, 395, 100, rgb16(0, 255, 0));
- grx_rect(415, 45, 595, 100, rgb16(200, 200, 255));
- grx_text("Test of PPI82C55MSM function (Hosted on PCI6025E)",
- 9, 7, rgb16(0, 255, 0), rgb16(0, 0, 0));
- grx_text("PORT A and PORT C are configured in input mode",
- 9, 20, rgb16(255, 70, 70), rgb16(0, 0, 0));
- grx_text("PORT B is configured in output mode",
- 9, 28, rgb16(255, 70, 70), rgb16(0, 0, 0));
- grx_text("PORT B (Output)", 35, 50, rgb16(200, 0, 0), rgb16(0, 0, 0));
- grx_text("PORT A (Input)", 235, 50, rgb16(30,255,30), rgb16(0, 0, 0));
- grx_text("PORT C (Input)", 435, 50, rgb16(200,200,255), rgb16(0, 0, 0));
- grx_text("CTRL + C to exit", 9, 115, rgb16(255,255,0), rgb16(0,0,0));
-}
-
-/*
-* At each activation this task sends out value on port B and reads values from
-* port A and C
-*/
-TASK test_ppi(int dummy)
-{
- BYTE val, pA, pC;
- int i;
- char buf[10];
-
- PPI_config(0x99); //Mode 0 for all; Port A, Port C input; Port B output
- val = 0;
- while(1){
- PPI_write(PPI_PORT_B, val); //sends out value
- pA = PPI_read(PPI_PORT_A); //reads from port A
- pC = PPI_read(PPI_PORT_C); //reads from port C
-
- for(i=7; i>=0; i--){
- if( (val>>i)%2 )
- grx_text("1", 25+10*(7-i), 75, rgb16(255,0,0), rgb16(0,0,0));
- else
- grx_text("0", 25+10*(7-i), 75, rgb16(255,0,0), rgb16(0,0,0));
- if( (pA>>i)%2 )
- grx_text("1", 225+10*(7-i), 75, rgb16(0,255,0), rgb16(0,0,0));
- else
- grx_text("0", 225+10*(7-i), 75, rgb16(0,255,0), rgb16(0,0,0));
- if( (pC>>i)%2 )
- grx_text("1", 425+10*(7-i), 75, rgb16(200,200,255), rgb16(0,0,0));
- else
- grx_text("0", 425+10*(7-i), 75, rgb16(200,200,255), rgb16(0,0,0));
- }
- sprintf(buf, "%03d", val);
- grx_text(buf, 140, 75, rgb16(255,0,0), rgb16(0,0,0));
- sprintf(buf, "%03d", pA);
- grx_text(buf, 340, 75, rgb16(0,255,0), rgb16(0,0,0));
- sprintf(buf, "%03d", pC);
- grx_text(buf, 540, 75, rgb16(200,200,255), rgb16(0,0,0));
- val++;
- task_endcycle();
- }
-}
-
-void close_event(void *arg)
-{
- grx_close();
- switch(system){
- case 0: kern_printf("Regular end\n"); break;
- case 10:kern_printf("Cannot create task 'TEST PPI'\n"); break;
- case 20:kern_printf("Pci bus don't find\n"); break;
- case 21:kern_printf("No National board on PC\n"); break;
- case 30:kern_printf("Cannot start graphic envirorment\n"); break;
- default: kern_printf("Unknown exit\n"); break;
- }
-}
-
-void exit_fun(KEY_EVT *k)
-{
- system = 0;
- sys_end();
-}
-
-/*end of file: test_ppi.c*/
Index: pj/pci6025e/test_bec.c
===================================================================
--- pj/pci6025e/test_bec.c (revision 1344)
+++ pj/pci6025e/test_bec.c (nonexistent)
@@ -1,336 +0,0 @@
-/*****************************************************************************
-* Filename: test_bec.c *
-* Author: Marco Ziglioli (Doctor Stein) *
-* Date: 20/06/2001 *
-* Description: Test program for buffered gated event counting using PCI6025E *
-* board *
-*----------------------------------------------------------------------------*
-* Notes: FOUT are enabled to provide a frequency of 6250 Hz. You could *
-* connect PFI3 (pin 41) and PFI6 (pin 45) to this source for counting *
-* edges. Gated counting are enabled and PFI4 (pin 42) is gate pin for *
-* counter 0 and PFI5 (pin 44) is gate pin for counter 0. DIO 7 and 6 *
-* are als configured to switch between 0 and 5 V. Connect DIO 7 to *
-* gate 0 and DIO 6 to gate 1. Use 'g' (counter 0) and 'h' (counter 1) *
-* to change DIO lines value. On left area of the screen you should *
-* see counter while counting and on the right area you should lock *
-* counter values by pressing 's' key. *
-* Notice that line parameters are enabled and accept inital value *
-* for the two counters. If they aren't specified or they are wrong *
-* counters start from 0x00FFFFFF (counter 0 which counts down) and *
-* 0x00000000 (counter 1 which counts up). *
-*****************************************************************************/
-
-/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
- *
- * Copyright (C) 2001 Marco Ziglioli
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <kernel/kern.h>
-#include <drivers/keyb.h>
-#include <drivers/glib.h>
-
-#include <drivers/pci6025e/timer.h>
-#include <drivers/pci6025e/dio_ppi.h>
-
-BYTE sys = 0;
-
-PID show_aper_pid;
-BYTE out = 0x00;
-
-int black = rgb16(0, 0, 0),
- white = rgb16(255, 255, 255);
-
-void endfun(KEY_EVT *);
-void close_event(void *);
-void show_evt(KEY_EVT *k);
-void gate_change(KEY_EVT *k);
-
-void drawInterface(void);
-
-TASK show_per(int);
-TASK show_aper(int);
-
-int main(int argc, char **argv)
-{
- KEY_EVT k;
- SOFT_TASK_MODEL show_per_mod, show_aper_mod;
- PID show_per_pid;
- int result, modenum;
- DWORD init_val_c0, init_val_c1;
-
- if(argc >= 3){
- if( (result = sscanf(argv[1], "%ld", &init_val_c0)) != 1)
- init_val_c0 = 0x00FFFFFF;
- if( (result = sscanf(argv[2], "%ld", &init_val_c1)) != 1)
- init_val_c1 = 0x00000000;
- }
- if(argc == 2){
- if( (result = sscanf(argv[1], "%ld", &init_val_c0)) != 1)
- init_val_c0 = 0x00FFFFFF;
- init_val_c1 = 0x00000000;
- }
- if(argc == 1){
- init_val_c0 = 0x00FFFFFF;
- init_val_c1 = 0x00000000;
- }
-
- sys_atrunlevel(close_event, NULL, RUNLEVEL_BEFORE_EXIT);
-
- k.flag = CNTL_BIT;
- k.scan = KEY_X;
- k.ascii = 'x';
- keyb_hook(k, endfun);
-
- k.flag = CNTR_BIT;
- keyb_hook(k, endfun);
-
- soft_task_default_model(show_aper_mod);
- soft_task_def_aperiodic(show_aper_mod);
- soft_task_def_level(show_aper_mod, 1);
- soft_task_def_period(show_aper_mod, 250000);
- soft_task_def_met(show_aper_mod, 30000);
- soft_task_def_wcet(show_aper_mod, 60000);
- if( (show_aper_pid = task_create("Show aperiodic task", show_aper, &show_aper_mod, NULL)) == NIL ){
- sys = 10;
- sys_end();
- }
-
- k.flag = 0;
- k.scan = KEY_S;
- k.ascii = 's';
- keyb_hook(k, show_evt);
-
- k.flag = 0;
- k.scan = KEY_G;
- k.ascii = 'g';
- keyb_hook(k, gate_change);
-
- k.scan = KEY_H;
- k.ascii = 'h';
- keyb_hook(k, gate_change);
-
- soft_task_default_model(show_per_mod);
- soft_task_def_level(show_per_mod, 1);
- soft_task_def_met(show_per_mod, 1000);
- soft_task_def_period(show_per_mod, 10000);
- if( (show_per_pid = task_create("Show periodic task", show_per, &show_per_mod, NULL)) == NIL){
- sys = 11;
- sys_end();
- }
-
- if(pci_init()==-1){
- sys = 20;
- sys_end();
- }
-
- if(!reMap()){
- sys = 21;
- sys_end();
- }
-
- if(grx_init()==-1){
- sys = 30;
- sys_end();
- }
-
- if( (modenum = grx_getmode(800, 600, 16)) == -1){
- sys = 31;
- sys_end();
- }
-
- grx_setmode(modenum);
-
- drawInterface();
-
- DIO_init();
- DIO_setup(0xFF);
- DIO_write(out);
-
- PFIprogramming(0x0000);
- setIntClock(1, 1, 0);
- TIM_reset(2); //Reset both two counters
-
-
- //Source PFI3(41); Gate PFI 4(42); Down counting; counts rising edge;
- TIM_bufferedEventCounting(C0, 0x04, 0x45, 0x01, init_val_c0);
-
- //Source PFI6(45); Gate PFI 5(44); Up counting; counts rising edge;
- TIM_bufferedEventCounting(C1, 0x87, 0x46, 0x00, init_val_c1);
-
- TIM_arm(2); //Arm both two counters
-
- task_activate(show_per_pid);
-
- return 0;
-}
-
-void drawInterface(void)
-{
- grx_rect(1, 1, 799, 99, rgb16(105, 0, 0));
- grx_rect(2, 2, 798, 98, rgb16(155, 0, 0));
- grx_rect(3, 3, 797, 97, rgb16(205, 0, 0));
- grx_rect(4, 4, 796, 96, rgb16(255, 0, 0));
-
- grx_text("Test program for Buffered Event Counting capacity of PCI6025E timers",
- 7, 10, rgb16(50, 255, 50), black);
-
- grx_text("This program counting rise edges on counters source (PFI3 & PFI6)",
- 7, 18, rgb16(0, 255, 255), black);
- grx_text("Counter 1 will be resetted every gate falling edge",
- 7, 26, rgb16(0, 255, 255), black);
- grx_text("(PFI 42 & 44) are enabled. Frequency Out (FOUT) is enabled and provides a frequency of 6250 Hz",
- 7, 34, rgb16(0, 255, 255), black);
-
- grx_text("Instruction:",7, 43, rgb16(255, 0, 0), black);
- grx_text("Use 's' to watch contents of Hardware save registers updated every time gate goes down",
- 7, 51, rgb16(0, 255, 255), black);
- grx_text("Use 'g' to generate an event on counter 0 gate (see top-left square)",
- 7, 58, rgb16(0, 255, 255), black);
-
- grx_text("Use 'h' to generate an event on counter 1 gate (see bottom-left square)",
- 7, 65, rgb16(0, 255, 255), black);
-
- grx_text("Please connect DIO7 (pin 32) to PFI4 (pin 42) and DIO6 (pin 30) to PFI5 (pin 44)",
- 7, 78, rgb16(0, 255, 0), black);
- grx_text("CTRL-X for Exit", 7, 88, rgb16(200, 200, 0), black);
-
- grx_rect(1, 110, 355, 170, rgb16(0, 105, 0));
- grx_rect(2, 111, 354, 169, rgb16(0, 155, 0));
- grx_rect(3, 112, 353, 168, rgb16(0, 205, 0));
- grx_rect(4, 113, 352, 167, rgb16(0, 255, 0));
- grx_text("Counter 0 evolution", 7, 120, rgb16(255, 255, 0), black);
-
- grx_rect(455, 110, 799, 170, rgb16(0, 105, 0));
- grx_rect(456, 111, 798, 169, rgb16(0, 155, 0));
- grx_rect(457, 112, 797, 168, rgb16(0, 205, 0));
- grx_rect(458, 113, 796, 167, rgb16(0, 255, 0));
- grx_text("Counter 0 locked value", 461, 120, rgb16(255, 0, 255), black);
-
- grx_rect(360, 110, 450, 170, rgb16(0, 105, 0));
- grx_rect(361, 111, 449, 169, rgb16(0, 155, 0));
- grx_rect(362, 112, 448, 168, rgb16(0, 205, 0));
- grx_rect(363, 113, 447, 167, rgb16(0, 255, 0));
- grx_text("Gate0", 367, 120, rgb16(200, 255, 200), black);
- grx_text("0 V", 367, 145, rgb16(255, 0, 0), black);
-
- grx_rect(1, 190, 355, 260, rgb16(85, 85, 255));
- grx_rect(2, 191, 354, 259, rgb16(135, 135, 255));
- grx_rect(3, 192, 353, 258, rgb16(190, 190, 255));
- grx_rect(4, 193, 352, 257, rgb16(230, 239, 255));
- grx_text("Counter 1 evolution", 7, 200, white, black);
-
- grx_rect(455, 190, 799, 260, rgb16(85, 85, 255));
- grx_rect(456, 191, 798, 259, rgb16(135, 135, 255));
- grx_rect(457, 192, 797, 258, rgb16(190, 190, 255));
- grx_rect(458, 193, 796, 257, rgb16(230, 230, 255));
- grx_text("Counter 1 locked value", 461, 200, white, black);
-
- grx_rect(360, 190, 450, 260, rgb16(85, 85, 255));
- grx_rect(361, 191, 449, 259, rgb16(135, 135, 255));
- grx_rect(362, 192, 448, 258, rgb16(190, 190, 255));
- grx_rect(363, 193, 447, 257, rgb16(230, 230, 255));
- grx_text("Gate1", 367, 200, rgb16(255, 200, 255), black);
- grx_text("0 V", 367, 225, rgb16(255, 0, 0), black);
-}
-
-TASK show_per(int none)
-{
- DWORD val;
- char buf[30];
-
- while(1){
- val = TIM_readCounter(C0); //Read from Hardware Save Register
- sprintf(buf, "HEX: %08lx DEC: %08ld", val ,val);
- grx_text(buf, 7, 145, rgb16(255, 0, 0), black);
-
- val = TIM_readCounter(C1); //Read from Hardware Save Register
- sprintf(buf, "HEX: %08lx DEC: %08ld", val ,val);
- grx_text(buf, 7, 225, rgb16(255, 0, 0), black);
-
- task_endcycle();
- }
-}
-
-TASK show_aper(int dummy)
-{
- DWORD val;
- char buf[30];
-
- while(1){
- val = TIM_readHWSaveReg(C0); //Read from Hardware Save Register
- sprintf(buf, "HEX: %08lx DEC: %08ld", val, val);
- grx_text(buf, 461, 145, rgb16(80, 80, 255), black);
-
- val = TIM_readHWSaveReg(C1); //Read from Hardware Save Register
- sprintf(buf, "HEX: %08lx DEC: %08ld", val, val);
- grx_text(buf, 461, 225, rgb16(80, 80, 255), black);
-
- task_endcycle();
- }
-}
-
-void endfun(KEY_EVT *k)
-{
- sys_end();
-}
-
-void show_evt(KEY_EVT *k)
-{
- task_activate(show_aper_pid);
-}
-
-void gate_change(KEY_EVT *k)
-{
- if(k->ascii == 'g'){
- if( (out & 0x80) != 0){
- out &= 0x7F;
- grx_text("0 V", 367, 145, rgb16(255, 0, 0), black);
- } else {
- out |= 0x80;
- grx_text("5 V", 367, 145, rgb16(0, 255, 0), black);
- }
- } else {
- if( (out & 0x40) != 0){
- out &= 0xBF;
- grx_text("0 V", 367, 225, rgb16(255, 0, 0), black);
- } else {
- out |= 0x40;
- grx_text("5 V", 367, 225, rgb16(0, 255, 0), black);
- }
- }
-
- DIO_write(out);
-}
-
-void close_event(void *arg)
-{
- TIM_disarm(2); //Disable both two counters
- grx_close();
-
- switch(sys){
- case 0: cprintf("OK\n"); break;
- case 10: cprintf("Task <show aperiodic> down\n"); break;
- case 11: cprintf("Task <show periodic> down\n"); break;
- case 20: cprintf("No PCI bus\n"); break;
- case 21: cprintf("No National board on PCI bus\n"); break;
- case 30: cprintf("No graphic can be initialized\n"); break;
- case 31: cprintf("This graphic mode cannot be supported\n"); break;
- default: cprintf("???????????\n"); break;
- }
-}
-/* End of file: Test_bec.c */
Index: pj/mix/readme
===================================================================
--- pj/mix/readme (revision 1344)
+++ pj/mix/readme (nonexistent)
@@ -1,7 +0,0 @@
-MIX
----
-
-This simple applications is a pout-pourri of simple graphic tasks
-that does different things with different timing constraints...
-
-Paolo
\ No newline at end of file
Index: pj/mix/makefile
===================================================================
--- pj/mix/makefile (revision 1344)
+++ pj/mix/makefile (nonexistent)
@@ -1,16 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS= mix
-
-include $(BASE)/config/example.mk
-
-mix:
- make -f $(SUBMAKE) APP=mix INIT= OTHEROBJS="initfile.o" OTHERINCL=
-
Index: pj/mix/mix.c
===================================================================
--- pj/mix/mix.c (revision 1344)
+++ pj/mix/mix.c (nonexistent)
@@ -1,762 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/*
- ------------
- CVS : $Id: mix.c,v 1.1.1.1 2002-09-02 09:37:45 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:45 $
- ------------
-*/
-
-/*
- * Copyright (C) 2000 Giorgio Buttazzo and Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-/*--------------------------------------------------------------*/
-/* DEMO with 9 INDEPENDENT TASKS */
-/*--------------------------------------------------------------*/
-
-#include <kernel/kern.h>
-#include <drivers/glib.h>
-#include <drivers/keyb.h>
-#include <semaphore.h>
-#include <stdlib.h>
-#include <math.h>
-
-#define PIG 3.1415
-#define ESC 27 /* ASCII code for ESCAPE */
-#define DURATA 10000 /* counter duration in tick */
-
-#define LW 200 /* window length */
-#define HW 150 /* window height */
-#define HLOAD 30 /* Y level for the max load */
-#define LLOAD (HW-HLOAD-5) /* length for the max load */
-
-#define XWL 10 /* left X of LEFT window */
-#define XWM 220 /* left X of MIDDLE window */
-#define XWR 430 /* left X RIGHT window */
-
-#define YWH 5 /* top Y of HIGH window */
-#define YWM 165 /* top Y of MIDDLE window */
-#define YWL 325 /* top Y of LOW window */
-
-char fbuf[1000]; /* buffer for reading a file */
-int flen; /* file length */
-int fine = 0; /* ending flag */
-
-sem_t mx_mat, mx_grf; /* mutex semaphores */
-
-int wcet[10]; /* array of task wcets */
-int period[10]; /* array of task periods */
-double load(long); /* load evaluation function */
-
-PID ptas;
-char talk[5][25] = {" SHARK Demonstration ",
- " RETIS Lab -- Scuola ",
- " Superiore S. Anna ",
- " HARD REAL-TIME DEMO ",
- " June 5, 2001 "};
-
-/*------------------------------------------------------*/
-/* file reading */
-/*------------------------------------------------------*/
-
-void read_file(void)
-{
- int err;
- DOS_FILE *fp;
-
- fp = DOS_fopen("mix.dat","r");
-
- if (!fp) {
- err = DOS_error();
- cprintf("Error %d opening myfile.txt...\n", err);
- flen = 0;
- return;
- }
-
- flen = DOS_fread(&fbuf, 1, 1000, fp);
- cprintf("Read %d bytes from file\n", flen);
- DOS_fclose(fp);
-}
-
-/*------------------------------------------------------*/
-/* get data from buffer */
-/*------------------------------------------------------*/
-
-void get_par(void)
-{
- int x = 0;
- int i;
-
- for (i=1; i<=8; i++) {
- while ((fbuf[x] != ':') && (x < flen)) x++;
- x++;
- sscanf(&fbuf[x], "%d %d", &period[i], &wcet[i]);
- cprintf("per[%d] = %d, wcet[%d] = %d\n",
- i, period[i], i, wcet[i]);
- }
-}
-
-/*--------------------------------------------------------------*/
-
-void byebye()
-{
- grx_close();
- kern_printf("Bye Bye!\n");
-}
-
-/*--------------------------------------------------------------*/
-
-void finish1()
-{
- sys_end();
-}
-
-/*--------------------------------------------------------------*/
-
-void finish2()
-{
- fine = 1;
-}
-
-/****************************************************************/
-/* PROCESSO OROLOGIO */
-/****************************************************************/
-
-#define LLAN 40 /* length of watch stick */
-
-TASK watch()
-{
- int x0 = XWL + LW/2;
- int y0 = YWH + HW/2;
- int grad;
- int xg, yg;
- int xt, yt, d;
- int sec, min;
- char s[5];
- double rad, x, y;
-
- xg = x0;
- yg = y0 - LLAN;
- xt = XWL + 78;
- yt = YWH + 12;
- sec = min = 0;
-
- while (1) {
- sec = (sec + 1) % 60;
- if (sec == 0) min++;
- grad = 90 - sec * 6;
- rad = (double)grad * PIG / 180.;
-
- sem_wait(&mx_mat);
- x = (double)x0 + (double)LLAN * cos(rad);
- y = (double)y0 - (double)LLAN * sin(rad);
- sem_post(&mx_mat);
-
- sem_wait(&mx_grf);
- grx_line(x0, y0, xg, yg, 0);
- sem_post(&mx_grf);
-
- xg = x;
- yg = y;
-
- sem_wait(&mx_grf);
- grx_line(x0, y0, xg, yg, 14);
- sem_post(&mx_grf);
-
- sem_wait(&mx_grf);
- grx_text("0 :0 ", xt, yt, 14, 0);
- sprintf(s, "%d", min);
- grx_text(s, xt+8, yt, 14, 0);
- sprintf(s, "%d", sec);
- if (sec > 9) d = 24; else d = 32;
- grx_text(s, xt+d, yt, 14, 0);
- sem_post(&mx_grf);
-
- task_endcycle();
- }
-}
-
-/****************************************************************/
-/* PROCESSO DI RIEMPIMENTO */
-/****************************************************************/
-
-#define CIMA (YWH+5) /* fondo del recipiente */
-#define FONDO (YWH+HW-5) /* cima del recipiente */
-#define LREC (XWM+75) /* lato sinistro recipiente */
-#define DREC 50 /* diametro del recipiente */
-
-TASK tasto()
-{
- int x, y;
- int x0; /* coord. sinistra recipiente */
- int col, cliq, bkg;
- int i;
- int liv; /* livello del liquido */
-
- cliq = 9;
- bkg = 14;
- x0 = LREC;
- x = x0 + DREC/2;
- y = CIMA;
- liv = FONDO;
-
- while (1) {
-
- col = cliq;
- for (i=0; i<2; i++) { /* disegna goccia */
- while (y < liv) {
- sem_wait(&mx_grf);
- grx_plot(x,y,col);
- sem_post(&mx_grf);
- y++;
- }
- y = CIMA;
- col = bkg;
- }
-
- liv--;
- sem_wait(&mx_grf);
- grx_line(x0+1, liv, x0+DREC-1, liv, cliq);
- sem_post(&mx_grf);
-
- if (liv <= CIMA+1) { /* swap colors */
- i = bkg; bkg = cliq; cliq = i;
- liv = FONDO;
- }
-
- task_endcycle();
- }
-}
-
-/****************************************************************/
-
-void kboar()
-{
- task_activate(ptas);
-}
-
-/****************************************************************/
-/* PROCESSO PALLA */
-/****************************************************************/
-
-#define VMIN 11. /* velocit… minima per suono */
-#define LP 3 /* lato della pallina */
-
-TASK palla()
-{
- int ox, oy; /* vecchia posizione pallina */
- int x0; /* posizione iniziale pallina */
- int xmin, xmax;
- int base, top;
- int xg, yg; /* coordinate grafiche pallina */
- double x, y; /* coordinate pallina */
- double G = 9.8;
- double vx, vy, v0; /* velocit… della pallina */
- double t, tx; /* variabile temporale */
- double dt; /* incremento temporale */
- double arg; /* variabile di appoggio */
-
- xmin = XWR+LP+1;
- xmax = XWR+LW-LP-1;
- base = YWH+HW-LP-1;
- top = HW-10-LP;
- x = ox = x0 = xmin;
- y = oy = top;
- arg = 2.*G*(double)top;
- vy = v0 = sqrt(arg);
- vx = 15.;
- tx = 0.0;
- t = vy / G;
- dt = .02;
-
- while (1) {
- x = x0 + vx*tx;
- y = base - vy*t + .5*G*t*t;
- if (y >= base) {
- t = 0.0;
- vy = v0;
- y = base - vy*t + .5*G*t*t;
- }
- if (x >= xmax) {
- tx = 0.0;
- x0 = xmax;
- vx = -vx;
- x = x0 + vx*tx;
- }
- if (x <= xmin) {
- tx = 0.0;
- x0 = xmin;
- vx = -vx;
- x = x0 + vx*tx;
- }
- xg = x; yg = y;
- sem_wait(&mx_grf);
- grx_disc(ox,oy,LP,0);
- grx_disc(xg,yg,LP,10);
- sem_post(&mx_grf);
- oy = yg; ox = xg;
- t += dt;
- tx += dt;
- task_endcycle();
- }
-}
-
-/****************************************************************/
-/* PROCESSO MOSCA */
-/****************************************************************/
-
-TASK mosca()
-{
- int x, y, Ax, Ay, h;
- int x0, y0, tet;
- int xmax,ymax;
- double A, B;
- double r;
- double rnd;
-
- xmax = LW/2-1; ymax = HW/2-1;
- x = 0; y = 0; tet = 0;
- x0 = XWL+LW/2; y0 = YWM+HW/2;
- A = 5.; B = 30.;
-
- while (1) {
-
- rnd = (rand()%100)/100.; /* rnd = [0,1] */
- h = (2. * B * rnd) - B; /* h = [-B,B] */
- tet = tet + h;
-
- if (tet > 360) tet = tet - 360;
- if (tet < 0) tet = tet + 360;
- r = tet * PIG / 180.;
-
- sem_wait(&mx_mat);
- Ax = (double)(A * cos(r));
- Ay = (double)(A * sin(r));
- sem_post(&mx_mat);
- x = x + Ax;
- y = y + Ay;
-
- if ((x >= xmax) || (x <= -xmax) ||
- (y >= ymax) || (y <= -ymax)) {
- x = x - Ax;
- y = y - Ay;
- tet = tet - 180;
- if (tet > 360) tet = tet - 360;
- if (tet < 0) tet = tet + 360;
- r = tet * PIG / 180.;
- sem_wait(&mx_mat);
- Ax = (double)(A * cos(r));
- Ay = (double)(A * sin(r));
- sem_post(&mx_mat);
- x = x + Ax;
- y = y + Ay;
- }
- sem_wait(&mx_grf);
- grx_plot(x+x0, y+y0, 10);
- sem_post(&mx_grf);
- task_endcycle();
- }
-}
-
-/****************************************************************/
-/* PROCESSO INFORMAZIONI */
-/****************************************************************/
-
-TASK infor()
-{
- char s[2];
- int x, y;
- int r;
- int i = 0;
- int leng;
- int col = 0;
-
- r = 0;
- x = XWM + 16;
- y = YWM + 40;
- s[1] = 0;
-
- leng = 0;
- while (talk[0][leng] != 0) leng++;
-
- while (1) {
- s[0] = talk[r][i];
- sem_wait(&mx_grf);
- grx_text(s,x+i*8,y+r*8,col+10,1);
- sem_post(&mx_grf);
- i++;
- if (i == leng) {
- i = 0;
- r = (r + 1) % 5;
- if (r == 0) col = (col + 1) % 6;
- }
- task_endcycle();
- }
-}
-
-/****************************************************************/
-/* PROCESSO RUOTA */
-/****************************************************************/
-
-TASK ruota()
-{
- int x0 = XWR + LW/2;
- int y0 = YWM + HW/2;
- int grad = 90;
- int xg, yg;
- double rad, x, y;
-
- xg = x0;
- yg = y0 + LLAN;
-
- while (1) {
-
- rad = (double)grad * PIG / 180.;
-
- sem_wait(&mx_mat);
- x = (double)x0 + (double)LLAN * cos(rad);
- y = (double)y0 + (double)LLAN * sin(rad);
- sem_post(&mx_mat);
-
- sem_wait(&mx_grf);
- grx_disc(xg, yg, 4, 0);
- sem_post(&mx_grf);
-
- xg = x; yg = y;
-
- sem_wait(&mx_grf);
- grx_disc(xg, yg, 4, 13);
- sem_post(&mx_grf);
-
- grad = (grad + 1) % 360;
-
- task_endcycle();
- }
-}
-
-/****************************************************************/
-/* PROCESSO COLORI */
-/****************************************************************/
-
-TASK color()
-{
- int xx0 = XWL+5;
- int yy0 = YWL+5;
- int n, col;
- int x, y;
-
- x = 0; y = 0;
-
- while (1) {
- n = 19. * ((rand()%100)/100.);
- x = xx0 + n * 10;
- n = 14. * ((rand()%100)/100.);
- y = yy0 + n * 10;
- col = 16. * ((rand()%100)/100.);
-
- /* xg = xx0 + x;
- yg = yy0 + y;
- x = (x + 10)%(LW-10);
- y = (y + 10)%(HW-10);
- */
- sem_wait(&mx_grf);
- grx_box(x, y, x+9, y+9, col);
- sem_post(&mx_grf);
-
- task_endcycle();
- }
-}
-
-/****************************************************************/
-/* PROCESSO PENDOLO */
-/****************************************************************/
-
-TASK pendo()
-{
- int x0 = XWM+LW/2;
- int y0 = YWL+10;
- int xg, yg;
- int col = 11;
- double x, y, teta;
- double v, a, dt;
- double g, l;
-
- g = 9.8;
- l = 80.;
- dt = 0.1;
- teta = 40. * PIG / 180.;
- v = 0.;
- sem_wait(&mx_mat);
- x = l * sin((double)teta);
- y = l * cos((double)teta);
- a = -(g/l) * sin((double)teta);
- sem_post(&mx_mat);
- xg = x0 + x;
- yg = y0 + y;
-
- while (1) {
-
- v += a * dt;
- teta += v * dt;
- sem_wait(&mx_mat);
- x = l * sin((double)teta);
- y = l * cos((double)teta);
- a = -(g/l) * sin((double)teta);
- sem_post(&mx_mat);
-
- sem_wait(&mx_grf);
- grx_line(x0, y0, xg, yg, 0);
- grx_circle(xg, yg, 5, 0);
- grx_disc(xg, yg, 4, 0);
- sem_post(&mx_grf);
-
- xg = x0+x; yg = y0+y;
-
- sem_wait(&mx_grf);
- grx_line(x0, y0, xg, yg, col);
- grx_circle(xg, yg, 5, col+2);
- grx_disc(xg, yg, 4, col+1);
- sem_post(&mx_grf);
-
- task_endcycle();
- }
-}
-
-/****************************** gener ******************************/
-
-TASK gener()
-{
- HARD_TASK_MODEL m;
- SOFT_TASK_MODEL am;
- PID pid;
-
- //---------------------------------------------
- hard_task_default_model(m);
- hard_task_def_wcet (m, wcet[1]);
- hard_task_def_mit (m, period[1]);
- hard_task_def_usemath (m);
- pid = task_create("watch", watch, &m, NULL);
- task_activate(pid);
- keyb_getch(BLOCK);
- //---------------------------------------------
- soft_task_default_model(am);
- soft_task_def_met (am, wcet[2]);
- soft_task_def_period (am, period[2]);
- soft_task_def_aperiodic(am);
- soft_task_def_usemath (am);
- ptas = task_create("tasto", tasto, &am, NULL);
- task_activate(ptas);
- keyb_getch(BLOCK);
- //---------------------------------------------
- hard_task_default_model(m);
- hard_task_def_wcet (m, wcet[3]);
- hard_task_def_mit (m, period[3]);
- hard_task_def_usemath (m);
- pid = task_create("palla", palla, &m, NULL);
- task_activate(pid);
- keyb_getch(BLOCK);
- //---------------------------------------------
- hard_task_default_model(m);
- hard_task_def_wcet (m, wcet[4]);
- hard_task_def_mit (m, period[4]);
- hard_task_def_usemath (m);
- pid = task_create("mosca", mosca, &m, NULL);
- task_activate(pid);
- keyb_getch(BLOCK);
- //---------------------------------------------
- hard_task_default_model(m);
- hard_task_def_wcet (m, wcet[5]);
- hard_task_def_mit (m, period[5]);
- hard_task_def_usemath (m);
- pid = task_create("infor", infor, &m, NULL);
- task_activate(pid);
- keyb_getch(BLOCK);
- //---------------------------------------------
- hard_task_default_model(m);
- hard_task_def_wcet (m, wcet[6]);
- hard_task_def_mit (m, period[6]);
- hard_task_def_usemath (m);
- pid = task_create("ruota", ruota, &m, NULL);
- task_activate(pid);
- keyb_getch(BLOCK);
- //---------------------------------------------
- hard_task_default_model(m);
- hard_task_def_wcet (m, wcet[7]);
- hard_task_def_mit (m, period[7]);
- hard_task_def_usemath (m);
- pid = task_create("color", color, &m, NULL);
- task_activate(pid);
- keyb_getch(BLOCK);
- //---------------------------------------------
- hard_task_default_model(m);
- hard_task_def_wcet (m, wcet[8]);
- hard_task_def_mit (m, period[8]);
- hard_task_def_usemath (m);
- pid = task_create("pendo", pendo, &m, NULL);
- task_activate(pid);
- //---------------------------------------------
-
- return NULL;
-}
-
-/****************************** MAIN ******************************/
-
-TASK main()
-{
- char s[20]; /* carattere letto da tastiera */
- int x0, y0;
- int x, y;
- TIME t1, count; /* contatori valutazione carico */
- double car; /* valore del carico corrente */
- TIME seme;
- PID pid;
- NRT_TASK_MODEL m2;
- KEY_EVT eva, evx, evs;
-
- set_exchandler_grx();
- sys_atrunlevel(byebye, NULL, RUNLEVEL_BEFORE_EXIT);
-
- /* set the keyboard handler */
- eva.ascii = 'a';
- eva.scan = KEY_A;
- eva.flag = 0;
- keyb_hook(eva,kboar);
-
- evx.ascii = 'x';
- evx.scan = KEY_X;
- evx.flag = ALTL_BIT;
- keyb_hook(evx,finish1);
-
- evs.ascii = ESC;
- evs.scan = KEY_ESC;
- evs.flag = 0;
- keyb_hook(evs,finish2);
-
- sem_init(&mx_mat,0,1);
- sem_init(&mx_grf,0,1);
-
- seme = sys_gettime(NULL);
- srand(seme);
-
- get_par();
- keyb_getch(BLOCK);
-
- grx_init();
- grx_open(640, 480, 8);
-
- grx_rect(XWL,YWH,XWL+LW,YWH+HW,14);
- grx_rect(XWM,YWH,XWM+LW,YWH+HW,14);
- grx_rect(XWR,YWH,XWR+LW,YWH+HW,14);
-
- grx_rect(XWL,YWM,XWL+LW,YWM+HW,14);
- grx_rect(XWM,YWM,XWM+LW,YWM+HW,14);
- grx_rect(XWR,YWM,XWR+LW,YWM+HW,14);
-
- grx_rect(XWL,YWL,XWL+LW,YWL+HW,14);
- grx_rect(XWM,YWL,XWM+LW,YWL+HW,14);
- grx_rect(XWR,YWL,XWR+LW,YWL+HW,14);
-
- x0 = XWL + LW/2;
- y0 = YWH + HW/2;
- grx_circle(x0, y0, LLAN+3, 12);
- grx_rect(XWL+74, YWH+7, XWL+120, YWH+22, 12);
-
- x0 = LREC;
- grx_line(x0, CIMA, x0, FONDO, 15);
- grx_line(x0+DREC, CIMA, x0+DREC, FONDO, 15);
- grx_line(x0, FONDO, x0+DREC, FONDO, 15);
- grx_box(x0+1, CIMA, x0+DREC-1, FONDO-1, 14);
- grx_text("Press A", XWM+16, YWH+48, 10, 0);
- grx_text("to fill", XWM+16, YWH+64, 10, 0);
-
- grx_text("Press:", XWM+18, YWM+HW-50, 10, 0);
- grx_text("ESC to exit", XWM+18, YWM+HW-40, 10, 0);
- grx_text("SPACE to create", XWM+18, YWM+HW-30, 10, 0);
-
- x0 = XWR + LW/2;
- y0 = YWM + HW/2;
- grx_circle(x0, y0, LLAN/3, 14);
- grx_disc(x0, y0, LLAN/3-1, 12);
-
- x0 = XWR+5;
- y0 = YWL+HW-5;
- grx_line(x0, YWL+HLOAD, x0+LW-10, YWL+HLOAD, 12);
- grx_text("SYSTEM WORKLOAD:", x0+5, YWL+HLOAD-10, 10, 0);
-
- count = 0;
- t1 = sys_gettime(NULL);
- do count++; while (sys_gettime(NULL) < (t1 + DURATA));
-
- nrt_task_default_model(m2);
- pid = task_create("gener", gener, &m2, NULL);
- task_activate(pid);
-
- x = 0;
- while (!fine) {
- car = load(count);
- y = (double)LLOAD*car;
- sem_wait(&mx_grf);
- grx_line(x0+x, y0-LLOAD+1, x0+x, y0, 0);
- grx_line(x0+x, y0-y, x0+x, y0, 15);
- grx_text(" ", x0+LW-60, YWL+HLOAD-10, 0, 0);
- sprintf(s, "%.3f", car);
- grx_text(s, x0+LW-50, YWL+HLOAD-10, 15, 0);
- sem_post(&mx_grf);
- x = (x + 1) % (LW-10);
- }
-
- sys_end();
-
- return NULL;
-}
-
-/****************************************************************/
-
-double load(long n)
-{
- TIME i, t1;
- double carico;
-
- i = 0;
- t1 = sys_gettime(NULL);
- do i++; while (sys_gettime(NULL) < (t1 + DURATA));
- carico = 1. - (double)i / (double)n;
- return(carico);
-}
-
-/****************************************************************/
Index: pj/mix/mix.dat
===================================================================
--- pj/mix/mix.dat (revision 1344)
+++ pj/mix/mix.dat (nonexistent)
@@ -1,12 +0,0 @@
-TASK NAME PERIOD WCET
-------------------------------------------
-task1 watch: 1000000 200
-task2 tasto: 2000 200
-task3 palla: 2000 200
-task4 mosca: 20000 200
-task5 infor: 20000 300
-task6 ruota: 5000 400
-task7 color: 2000 200
-task8 pendo: 5000 400
-------------------------------------------
-
Index: pj/mix/initfile.c
===================================================================
--- pj/mix/initfile.c (revision 1344)
+++ pj/mix/initfile.c (nonexistent)
@@ -1,124 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/*
- ------------
- CVS : $Id: initfile.c,v 1.1.1.1 2002-09-02 09:37:45 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:45 $
- ------------
-
- System initialization file
-
- This file contains the 2 functions needed to initialize the system.
-
- These functions register the following levels:
-
- an EDF (Earliest Deadline First) level
- a RR (Round Robin) level
- a CBS (Costant Bandwidth Server) level
- a Dummy level
-
- It can accept these task models:
-
- HARD_TASK_MODEL (wcet+mit) at level 0
- SOFT_TASK_MODEL (met, period) at level 1
- NRT_TASK_MODEL at level 2
-
- This file is similar to the configuration of kernel/init/hartik3.c
-
- TICK is set to 0 (one-shot timer is used)
-*/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-
-#include "drivers/keyb.h"
-
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-void read_file();
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- EDF_register_level(0);
- CBS_register_level(0, 0);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- CABS_register_module();
-
- read_file();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- KEYB_PARMS kparms = BASE_KEYB;
-
- HARTPORT_init();
-
- keyb_def_ctrlC(kparms, NULL);
- keyb_def_map(kparms,itaMap);
- KEYB_init(&kparms);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
Index: pj/cbs_ft/initfile.c
===================================================================
--- pj/cbs_ft/initfile.c (revision 1344)
+++ pj/cbs_ft/initfile.c (nonexistent)
@@ -1,112 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@hartik.sssup.it>
- *
- * Authors : Marco caccamo and Paolo Gai
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: initfile.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-
- This file contains the server CBS_FT
-
- Read CBS_FT.h for further details.
-
-**/
-
-/*
- * Copyright (C) 2000 Marco Caccamo and Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include "kernel/kern.h"
-#include <modules/edf.h>
-#include <modules/rr.h>
-#include "cbs_ft.h"
-#include <modules/cbs.h>
-#include <modules/dummy.h>
-#include <drivers/keyb.h>
-#include <modules/hartport.h>
-#include <modules/sem.h>
-#include <modules/cabs.h>
-
-/*+ system tick in us +*/
-#define TICK 300
-#define RRTICK 5000
-
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- EDF_register_level(EDF_ENABLE_ALL);
- CBS_FT_register_level(CBS_FT_ENABLE_ALL, 0);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- CBS_register_level(CBS_ENABLE_ALL, 0);
- dummy_register_level();
-
- SEM_register_module();
- CABS_register_module();
-
- // periodic timer
- return TICK;
- // one-shot timer
- // return 0
-}
-
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- KEYB_init(NULL);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Index: pj/cbs_ft/cbs_ft.h
===================================================================
--- pj/cbs_ft/cbs_ft.h (revision 1344)
+++ pj/cbs_ft/cbs_ft.h (nonexistent)
@@ -1,166 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@hartik.sssup.it>
- *
- * Authors : Marco Caccamo and Paolo Gai
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: cbs_ft.h,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-
- This file contains the server CBS_FT
-
- Read CBS_FT.h for further details.
-
-**/
-
-/*
- * Copyright (C) 2000 Marco Caccamo and Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#ifndef __CBS_FT__
-#define __CBS_FT__
-
-
-
-#include <ll/string.h>
-#include <kernel/model.h>
-#include <kernel/descr.h>
-#include <kernel/var.h>
-#include <kernel/func.h>
-
-
-
-
-
-
-/*+ flags... +*/
-#define CBS_FT_ENABLE_GUARANTEE 1 /*+ Task Guarantee enabled +*/
-#define CBS_FT_ENABLE_ALL 1
-
-#define CBS_FT_FAILED_GUARANTEE 8 /*+ used in the module, unsettable
- in EDF_register_level... +*/
-
-
-#define PRIMARY 1
-#define BACKUP 2
-#define FT_PCLASS 0x0700 // Nuova classe di task, quelli fault_tolerant
-
-#define CBS_FT_LEVELNAME "CBSFT base"
-#define CBS_FT_LEVEL_CODE 110
-#define CBS_FT_LEVEL_VERSION 1
-
-
-/* The Fault-Tolerant Task model extends the base task model
- This model cannot be APERIODIC, only PERIODIC tasks are allowed.
- A faut-tolerant application is composed by two different tasks (primary and
- backup). The backup task is characterized by its WCET and its type (BACKUP).
- The primary task must define the task period, its average execution time
- (used as sort of prediction in order to recharge the budget using the
- capacity cash queue!), the budget (budget / period = U that is, the
- bandwidth assigned to the fault-tolerant application), its type (PRIMARY)
- and finally the PID of the corresponding backup task. */
-
-typedef struct {
- TASK_MODEL t;
-
- TIME wcetB; // WCET of the backup job (BACKUP TASK ONLY)
-
- TIME execP; // average exec. time of the primary job (PRIMARY TASK ONLY)
-
- TIME period; // period of the fault-tolerant task (PRIMARY TASK ONLY)
-
- int budget; // amount of guaranteed capacity (PRIMARY TASK ONLY)
-
- char type; // PRIMARY or BACKUP
-
- PID backup; // (PRIMARY TASK ONLY)
-
-} FT_TASK_MODEL;
-
-
-#define ft_task_default_model(m) \
- task_default_model((m).t,FT_PCLASS), \
- (m).period = 0, \
- (m).wcetB = 0, \
- (m).execP = 0, \
- (m).budget = 0, \
- (m).type = BACKUP, \
- (m).backup = NIL
-
-#define ft_task_def_level(m,l) task_def_level((m).t,l)
-#define ft_task_def_arg(m,a) task_def_arg((m).t,a)
-#define ft_task_def_stack(m,s) task_def_stack((m).t,s)
-#define ft_task_def_stackaddr(m,s) task_def_stackaddr((m).t,s)
-#define ft_task_def_usemath(m) task_def_usemath((m).t)
-#define ft_task_def_ctrl_jet(m) task_def_ctrl_jet((m).t)
-#define ft_task_def_group(m,g) task_def_group((m).t,g)
-#define ft_task_def_period(m,o) (m).period = (o)
-#define ft_task_def_budget(m,o) (m).budget = (o)
-#define ft_task_def_backup(m) (m).type = BACKUP
-#define ft_task_def_primary(m) (m).type = PRIMARY
-#define ft_task_def_backup_task(m,b) (m).backup = b
-#define ft_task_def_backup_wcet(m,b) (m).wcetB = b
-#define ft_task_def_primary_exec(m,b) (m).execP = b
-
-/************************************************************************/
-void CBS_FT_register_level(int flags, LEVEL master);
-
-
-bandwidth_t CBS_FT_usedbandwidth(LEVEL l);
-
-
-
-/* This function notifies to a primary task that the task itself has to
- suspend its execution (the task has to suspend itself with a
- task_endcycle() */
-char CBS_FT_Checkpoint(void);
-
-
-
-/* This function sets the checkpoint flag! hence, at the next checkpoint,
- that is:
-
- if (CBS_FT_Checkpoint()) {
- task_endcycle();
- continue;
- }
-
- the primary task will suspend itself switching to the backup task */
-void CBS_FT_Primary_Abort(void);
-
-/***************************************************************************/
-
-
-
-
-#endif
Index: pj/cbs_ft/prova.c
===================================================================
--- pj/cbs_ft/prova.c (revision 1344)
+++ pj/cbs_ft/prova.c (nonexistent)
@@ -1,429 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@hartik.sssup.it>
- *
- * Authors : Marco Caccamo and Paolo Gai
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: prova.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-
- testcash.c
- test for the CASH Module, directly derived from Test Number 13 (D)
-
-**/
-
-/*
- * Copyright (C) 2000 Marco Caccamo and Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-#include <modules/edf.h>
-#include "cbs_ft.h"
-#include <math.h>
-#include <stdlib.h>
-
-#define ASTER_LIM 60
-#define DISPLAY_MAX 15
-
-#define STAT_Y 9
-
-#define INPUT 0.5
-
-
-
-#define MAX_STAT 10000
-#define RVAL 1
-#define XVAL 2
-#define DVAL 3
-
-
-struct statistic {
- TIME r_time;
- TIME ex_time;
- long dead_post;
-};
-
-
-
- struct statistic stat[MAX_STAT];
- TIME val[MAX_STAT];
-
-int n_stat = 0;
-
-TASK hard_aster1p(void)
-{
- int i;
- int y = 1;
- int load1,j;
-
- char s[2];
-
- s[0] = 'P'; s[1] = 0;
-
-
- for (;;) {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = 20000; //+ rand() % 25000;
- for (j=0; j<load1; j++) {
- if (CBS_FT_Checkpoint())
- break;
- puts_xy(i,y,rand()%15+1,s);
- }
- //kern_cli();
- //stat[n_stat].r_time = CBSGHD_get_response_time(1, exec_shadow);
- //jet_gettable(exec_shadow, &stat[n_stat].ex_time, 1);
- //kern_sti();
- //n_stat++;
- task_endcycle();
- puts_xy(i,y,WHITE," ");
- i++;
- }
- }
-}
-
-
-TASK hard_aster1b(void)
-{
- int i;
- int y = 1;
-
- int load1,j;
-
- char s[2];
-
- s[0] = 'B'; s[1] = 0;
-
- for (;;) {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = 20000;// + rand()%4000;
- for (j=0; j<load1; j++) {
- puts_xy(i,y,rand()%15+1,s);
- }
- //kern_cli();
- //stat[n_stat].r_time = CBSGHD_get_response_time(1, exec_shadow);
- //jet_gettable(exec_shadow, &stat[n_stat].ex_time, 1);
- //kern_sti();
- //n_stat++;
- task_endcycle();
- puts_xy(i,y,WHITE," ");
- i++;
- }
- }
-}
-
-
-TASK hard_aster2p(void)
-{
- int i;
- int y = 3;
-
- int load1,j;
-
- char s[2];
-
- s[0] = 'P'; s[1] = 0;
-
- for (;;) {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = 20000 + rand() % 20000;
- for (j=0; j<load1; j++) {
- if (CBS_FT_Checkpoint())
- break;
- puts_xy(i,y,rand()%15+1,s);
- }
- //kern_cli();
- //stat[n_stat].r_time = CBSGHD_get_response_time(5, exec_shadow);
- //jet_gettable(exec_shadow, &stat[n_stat].ex_time, 1);
- //kern_sti();
- //n_stat++;
- task_endcycle();
- puts_xy(i,y,WHITE," ");
- i++;
- }
- }
-}
-
-TASK hard_aster2b(void)
-{
- int i;
- int y = 3;
-
- int load1,j;
-
- char s[2];
-
- s[0] = 'T'; s[1] = 0;
-
- for (;;) {
- i = 1;
- while (i < ASTER_LIM) {
- load1 = 20000;
- for (j=0; j<load1; j++) {
- puts_xy(i,y,rand()%15+1,s);
- }
- //kern_cli();
- //stat[n_stat].r_time = CBSGHD_get_response_time(5, exec_shadow);
- //jet_gettable(exec_shadow, &stat[n_stat].ex_time, 1);
- //kern_sti();
- //n_stat++;
- task_endcycle();
- puts_xy(i,y,WHITE," ");
- i++;
- }
- }
-}
-
-
-TASK clock()
-{
- int s = 0, m = 0;
-
- while(1) {
- printf_xy(62,1,WHITE,"%2d:%2d",m,s);
- printf_xy(62,2,WHITE,"Utot=%12u",MAX_BANDWIDTH);
- printf_xy(62,3,WHITE,"Uedf=%12u",EDF_usedbandwidth(0));
- printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_FT_usedbandwidth(1));
- task_endcycle();
-
- if (++s > 59) {
- s = 0;
- m++;
- }
- printf_xy(62,1,WHITE,"%2d:%2d",m,s);
- printf_xy(62,2,WHITE,"Utot=%12u",MAX_BANDWIDTH);
- printf_xy(62,3,WHITE,"Uedf=%12u",EDF_usedbandwidth(0));
- printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_FT_usedbandwidth(1));
- task_endcycle();
- }
-}
-
-
-
-/* we consider the first ASTER_MAX + 2 tasks from the PID 2
- and plot on the screen the elapsed times... */
-TASK jetcontrol()
-{
- int i; /* a counter */
- TIME sum, max, curr, last[5];
- int nact;
- int j; /* the elements set by jet_gettable */
- PID p;
-
-
- kern_cli();
- printf_xy(0,STAT_Y,WHITE,"PID ³ Mean T.³ Max T. ³ N.A. ³ Curr. ³ Last1 ³ Last2 ³ Last3 ³ Last4 ³ Last5");
- kern_sti();
-
- for (;;) {
- for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
- if (jet_getstat(p, &sum, &max, &nact, &curr) == -1) continue;
-
- for (j=0; j<5; j++) last[j] = 0;
- jet_gettable(p, &last[0], 5);
- kern_cli();
- printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6ld ³ %-6ld ³ %-4d ³ %-7ld ³ %-5ld ³ %-5ld ³ %-5ld ³ %-5ld ³ %-5ld", p, sum/(nact==0 ? 1 : nact), max,
- nact, curr, last[0], last[1], last[2], last[3], last[4]);
- kern_sti();
- i++;
- }
- task_endcycle();
- }
-}
-
-
-void save_stat(struct statistic p[], int n, char *name, int type)
-{
- DOS_FILE *f;
- int i;
- char outstring[500];
-
-
- for(i = 0; i < 500; i++)
- outstring[i] = '0';
-
- f = DOS_fopen(name, "w");
- if (!f) {
- cprintf("Cannot open %s!!!", name);
- goto end1;
- }
-
- for(i = 0; i < n; i++) {
- if (type == RVAL)
- val[i] = p[i].r_time;
- if (type == XVAL)
- val[i] = p[i].ex_time;
- if (type == DVAL)
- val[i] = p[i].dead_post;
- }
-
- memset(outstring, 0, 300);
- sprintf(outstring, "%ld \n", (long int)n);
- cprintf("%s", outstring);
- DOS_fwrite(outstring, 1, strlen(outstring), f);
-
- for(i = 0; i < n; i++) {
- memset(outstring, 0, 300);
- sprintf(outstring, "%ld %lu\n", (long int)i, val[i]);
- //cprintf("%s", outstring);
- DOS_fwrite(outstring, 1, strlen(outstring), f);
- }
- DOS_fclose(f);
-end1:cprintf("OK?");
-}
-
-
-void result_save(void *p)
-{
- save_stat(stat, n_stat, "stat1.tim", RVAL);
-}
-
-
-void fine()
-{
- ll_abort(666);
-}
-
-int main(int argc, char **argv)
-{
- PID p1,p2,p3, p4, p5, p6;
-
- HARD_TASK_MODEL m;
- FT_TASK_MODEL ftb;
- FT_TASK_MODEL ftp;
-
- // int i;
- struct timespec fineprg;
-
-
- //sys_atrunlevel(result_save, NULL, RUNLEVEL_AFTER_EXIT);
- srand(7);
-
- hard_task_default_model(m);
- hard_task_def_wcet(m,500);
- hard_task_def_mit(m,500000);
- hard_task_def_periodic(m);
- hard_task_def_group(m,1);
- hard_task_def_ctrl_jet(m);
-
-
- p1 = task_create("Clock",clock,&m,NULL);
- if (p1 == -1) {
- perror("testhd.c(main): Could not create task <Clock> ...");
- sys_end();
- }
-
-
- hard_task_def_wcet(m,500);
- hard_task_def_periodic(m);
- hard_task_def_mit(m,100000);
-
-
- p2 = task_create("JetControl",jetcontrol,&m,NULL);
- if (p2 == -1) {
- perror("testhd.c(main): Could not create task <JetControl> ...");
- sys_end();
- }
-
-
- ft_task_default_model(ftb);
- ft_task_def_usemath(ftb);
- ft_task_def_backup(ftb);
- ft_task_def_ctrl_jet(ftb);
- ft_task_def_backup_wcet(ftb, 7000);
-
-
-
- p3 = task_create("Hard_aster1b", hard_aster1b, &ftb,NULL);
- if (p3 == -1) {
- perror("testhd.c(main): Could not create task <aster1b> ...");
- sys_end();
- }
-
- ft_task_default_model(ftp);
- ft_task_def_usemath(ftp);
- ft_task_def_ctrl_jet(ftp);
- ft_task_def_group(ftp, 1);
- ft_task_def_period(ftp, 50000);
- ft_task_def_budget(ftp, 15000);
- ft_task_def_primary_exec(ftp, 7300);
- ft_task_def_primary(ftp);
- ft_task_def_backup_task(ftp, p3);
-
-
- p4 = task_create("Hard_aster1p", hard_aster1p, &ftp, NULL);
- if (p4 == -1) {
- perror("testhd.c(main): Could not create task <aster1p> ...");
- sys_end();
- }
-
-
- ft_task_def_backup_wcet(ftb, 6700);
-
-
- p5 = task_create("Hard_aster2b", hard_aster2b, &ftb, NULL);
- if (p5 == -1) {
- perror("testhd.c(main): Could not create task <aster2b> ...");
- sys_end();
- }
-
-
- ft_task_def_period(ftp, 100000);
- ft_task_def_budget(ftp, 8000);
- ft_task_def_primary_exec(ftp, 11000);
- ft_task_def_backup_task(ftp, p5);
-
-
- p6 = task_create("Hard_aster2p", hard_aster2p, &ftp, NULL);
- if (p6 == -1) {
- perror("testhd.c(main): Could not create task <aster2p> ...");
- sys_end();
- }
-
-
- printf_xy(0,STAT_Y + 15,WHITE,"Hard asteroide PID= %-3d ",p3);
- printf_xy(0,STAT_Y + 17,WHITE,"Clock PID= %-3d ",p1);
- printf_xy(0,STAT_Y + 18,WHITE,"JetControl PID= %-3d ",p2);
-
-
-
- task_nopreempt();
- fineprg.tv_sec = 10;
- fineprg.tv_nsec = 0;
- kern_event_post(&fineprg,fine,NULL);
- group_activate(1);
- return 0;
-}
-
Index: pj/cbs_ft/readme.txt
===================================================================
--- pj/cbs_ft/readme.txt (revision 1344)
+++ pj/cbs_ft/readme.txt (nonexistent)
@@ -1,6 +0,0 @@
-This Example has been made by Marco Caccamo.
-
-There is not a lot of documentation available, so if you have problems please
-send an e-mail to Marco ( http://gandalf.sssup.it/~caccamo/ )
-
-Paolo
Index: pj/cbs_ft/makefile
===================================================================
--- pj/cbs_ft/makefile (revision 1344)
+++ pj/cbs_ft/makefile (nonexistent)
@@ -1,17 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS= prova
-
-include $(BASE)/config/example.mk
-
-prova:
- make -f $(SUBMAKE) APP=prova INIT= OTHEROBJS="initfile.o cbs_ft.o" OTHERINCL=
-
-
Index: pj/cbs_ft/cbs_ft.c
===================================================================
--- pj/cbs_ft/cbs_ft.c (revision 1344)
+++ pj/cbs_ft/cbs_ft.c (nonexistent)
@@ -1,1009 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@hartik.sssup.it>
- *
- * Authors : Marco Caccamo and Paolo Gai
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: cbs_ft.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-
- This file contains the server CBS_FT
-
- Read CBS_FT.h for further details.
-
-**/
-
-/*
- * Copyright (C) 2000 Marco Caccamo and Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-#include "cbs_ft.h"
-
-/*+ 4 debug purposes +*/
-#undef CBS_FT_TEST
-
-#ifdef TESTG
-#include "drivers/glib.h"
-TIME x,oldx;
-extern TIME starttime;
-#endif
-
-
-
-
-/*+ Status used in the level +*/
-#define CBS_FT_IDLE APER_STATUS_BASE /*+ waiting the activation +*/
-#define CBS_FT_ZOMBIE APER_STATUS_BASE+1 /*+ waiting the period end +*/
-#define CBS_FT_DELAY APER_STATUS_BASE+2 /*+ waiting the delay end +*/
-
-/* structure of an element of the capacity queue */
-struct cap_queue {
- int cap;
- struct timespec dead;
- struct cap_queue *next;
-};
-
-/*+ the level redefinition for the CBS_FT level +*/
-typedef struct {
- level_des l; /*+ the standard level descriptor +*/
-
- /* The wcet are stored in the task descriptor, but we need
- an array for the deadlines. We can't use the timespec_priority
- field because it is used by the master level!!!...
- Notice that however the use of the timespec_priority field
- does not cause any problem... */
-
- struct timespec cbs_ft_dline[MAX_PROC]; /*+ CBS_FT deadlines +*/
-
-
- TIME period[MAX_PROC]; /*+ CBS_FT activation period +*/
-
-
- int maxcap[MAX_PROC]; /* amount of capacity reserved to a primary+backup
- couple */
-
- PID backup[MAX_PROC]; /* Backup task pointers, defined for primary tasks */
-
- char CP[MAX_PROC]; /* checkpoint flag */
-
- char P_or_B[MAX_PROC]; /* Type of task: PRIMARY or BACKUP */
-
-
- struct timespec reactivation_time[MAX_PROC];
- /*+ the time at witch the reactivation timer is post +*/
-
- int reactivation_timer[MAX_PROC]; /*+ the recativation timer +*/
-
- struct cap_queue *queue; /* pointer to the spare capacity queue */
-
- int flags; /*+ the init flags... +*/
-
- bandwidth_t U; /*+ the used bandwidth by the server +*/
-
- int idle; /* the idle flag... */
-
- struct timespec start_idle; /*gives the start time of the last idle period */
-
- LEVEL scheduling_level;
-
-} CBS_FT_level_des;
-
-
-
-/* insert a capacity in the queue capacity ordering by deadline */
-
-static int c_insert(struct timespec dead, int cap, struct cap_queue **que,
- PID p)
-{
- struct cap_queue *prev, *n, *new;
-
- prev = NULL;
- n = *que;
-
- while ((n != NULL) &&
- !TIMESPEC_A_LT_B(&dead, &n->dead)) {
- prev = n;
- n = n->next;
- }
-
-
- new = (struct cap_queue *)kern_alloc(sizeof(struct cap_queue));
- if (new == NULL) {
- kern_printf("\nNew cash_queue element failed\n");
- kern_raise(XUNVALID_TASK, p);
- return -1;
- }
- new->next = NULL;
- new->cap = cap;
- new->dead = dead;
-
- if (prev != NULL)
- prev->next = new;
- else
- *que = new;
-
- if (n != NULL)
- new->next = n;
- return 0;
-
-}
-
-/* extract the first element from the capacity queue */
-
-int c_extractfirst(struct cap_queue **que)
-{
- struct cap_queue *p = *que;
-
-
- if (*que == NULL) return(-1);
-
- *que = (*que)->next;
-
- kern_free(p, sizeof(struct cap_queue));
- return(1);
-}
-
-/* read data of the first element from the capacity queue */
-
-static void c_readfirst(struct timespec *d, int *c, struct cap_queue *que)
-{
- *d = que->dead;
- *c = que->cap;
-}
-
-/* write data of the first element from the capacity queue */
-
-static void c_writefirst(struct timespec dead, int cap, struct cap_queue *que)
-{
- que->dead = dead;
- que->cap = cap;
-}
-
-
-static void CBS_FT_activation(CBS_FT_level_des *lev,
- PID p,
- struct timespec *acttime)
-{
- JOB_TASK_MODEL job;
- int capacity;
-
- /* This rule is used when we recharge the budget at initial task activation
- and each time a new task instance must be activated */
-
- if (TIMESPEC_A_GT_B(acttime, &lev->cbs_ft_dline[p])) {
- /* we modify the deadline ... */
- TIMESPEC_ASSIGN(&lev->cbs_ft_dline[p], acttime);
- }
-
-
- if (proc_table[p].avail_time > 0)
- proc_table[p].avail_time = 0;
-
-
-
- /* A spare capacity is inserted in the capacity queue!! */
- ADDUSEC2TIMESPEC(lev->period[p], &lev->cbs_ft_dline[p]);
- capacity = lev->maxcap[p] - proc_table[ lev->backup[p] ].wcet;
- c_insert(lev->cbs_ft_dline[p], capacity, &lev->queue, p);
-
-
- /* it exploits available capacities from the capacity queue */
- while (proc_table[p].avail_time < proc_table[p].wcet &&
- lev->queue != NULL) {
- struct timespec dead;
- int cap, delta;
- delta = proc_table[p].wcet - proc_table[p].avail_time;
- c_readfirst(&dead, &cap, lev->queue);
- if (!TIMESPEC_A_GT_B(&dead, &lev->cbs_ft_dline[p])) {
- if (cap > delta) {
- proc_table[p].avail_time += delta;
- c_writefirst(dead, cap - delta, lev->queue);
- }
- else {
- proc_table[p].avail_time += cap;
- c_extractfirst(&lev->queue);
- }
- }
- else
- break;
- }
-
- /* If the budget is still less than 0, an exception is raised */
- if (proc_table[p].avail_time <= 0) {
- kern_printf("\nnegative value for the budget!\n");
- kern_raise(XUNVALID_TASK, p);
- return;
- }
-
-
-
- /*if (p==6)
- kern_printf("(act_time:%d dead:%d av_time:%d)\n",
- acttime->tv_sec*1000000+
- acttime->tv_nsec/1000,
- lev->cbs_ft_dline[p].tv_sec*1000000+
- lev->cbs_ft_dline[p].tv_nsec/1000,
- proc_table[p].avail_time); */
-
-
-
-
-
-
-#ifdef TESTG
- if (starttime && p == 3) {
- oldx = x;
- x = ((lev->cbs_ft_dline[p].tv_sec*1000000+lev->cbs_ft_dline[p].tv_nsec/1000)/5000 - starttime) + 20;
- // kern_printf("(a%d)",lev->cbs_ft_dline[p].tv_sec*1000000+lev->cbs_ft_dline[p].tv_nsec/1000);
- if (oldx > x) sys_end();
- if (x<640)
- grx_plot(x, 15, 8);
- }
-#endif
-
- /* and, finally, we reinsert the task in the master level */
- job_task_default_model(job, lev->cbs_ft_dline[p]);
- job_task_def_yesexc(job);
- level_table[ lev->scheduling_level ]->
- guest_create(lev->scheduling_level, p, (TASK_MODEL *)&job);
- level_table[ lev->scheduling_level ]->
- guest_activate(lev->scheduling_level, p);
-}
-
-
-static char *CBS_FT_status_to_a(WORD status)
-{
- if (status < MODULE_STATUS_BASE)
- return status_to_a(status);
-
- switch (status) {
- case CBS_FT_IDLE : return "CBS_FT_Idle";
- case CBS_FT_ZOMBIE : return "CBS_FT_Zombie";
- case CBS_FT_DELAY : return "CBS_FT_Delay";
- default : return "CBS_FT_Unknown";
- }
-}
-
-
-
-
-/* this is the periodic reactivation of the task... */
-static void CBS_FT_timer_reactivate(void *par)
-{
- PID p = (PID) par;
- CBS_FT_level_des *lev;
-
- lev = (CBS_FT_level_des *)level_table[proc_table[p].task_level];
-
- if (proc_table[p].status == CBS_FT_IDLE) {
- /* the task has finished the current activation and must be
- reactivated */
-
- /* request_time represents the time of the last instance release!! */
- TIMESPEC_ASSIGN(&proc_table[p].request_time, &lev->reactivation_time[p]);
-
- /* If idle=1, then we have to discharge the capacities stored in
- the capacity queue up to the length of the idle interval */
- if (lev->idle == 1) {
- TIME interval;
- struct timespec delta;
- lev->idle = 0;
- SUBTIMESPEC(&proc_table[p].request_time, &lev->start_idle, &delta);
- /* length of the idle interval expressed in usec! */
- interval = TIMESPEC2NANOSEC(&delta) / 1000;
-
- /* it discharges the available capacities from the capacity queue */
- while (interval > 0 && lev->queue != NULL) {
- struct timespec dead;
- int cap;
- c_readfirst(&dead, &cap, lev->queue);
- if (cap > interval) {
- c_writefirst(dead, cap - interval, lev->queue);
- interval = 0;
- }
- else {
- interval -= cap;
- c_extractfirst(&lev->queue);
- }
- }
- }
-
- CBS_FT_activation(lev,p,&lev->reactivation_time[p]);
-
-
- /* Set the reactivation timer */
- TIMESPEC_ASSIGN(&lev->reactivation_time[p], &lev->cbs_ft_dline[p]);
- lev->reactivation_timer[p] = kern_event_post(&lev->reactivation_time[p],
- CBS_FT_timer_reactivate,
- (void *)p);
- event_need_reschedule();
- }
- else {
- /* this situation cannot occur */
- kern_printf("\nTrying to reactivate a primary task which is not IDLE!\n");
- kern_raise(XUNVALID_TASK,p);
- }
-}
-
-
-
-static void CBS_FT_avail_time_check(CBS_FT_level_des *lev, PID p)
-{
-
- /*+ if the capacity became negative the remaining computation time
- is diminuished.... +*/
- /* if (p==4)
- kern_printf("(old dead:%d av_time:%d)\n",
- lev->cbs_ft_dline[p].tv_sec*1000000+
- lev->cbs_ft_dline[p].tv_nsec/1000,
- proc_table[p].avail_time); */
-
-
- int newcap = proc_table[p].wcet / 100 * 30;
- if (newcap <= 0)
- newcap = proc_table[p].wcet;
- /* it exploits available capacities from the capacity queue */
- while (proc_table[p].avail_time < newcap
- && lev->queue != NULL) {
- struct timespec dead;
- int cap, delta;
- delta = newcap - proc_table[p].avail_time;
- c_readfirst(&dead, &cap, lev->queue);
- if (!TIMESPEC_A_GT_B(&dead, &lev->cbs_ft_dline[p])) {
- if (cap > delta) {
- proc_table[p].avail_time += delta;
- c_writefirst(dead, cap - delta, lev->queue);
- }
- else {
- proc_table[p].avail_time += cap;
- c_extractfirst(&lev->queue);
- }
- }
- else
- break;
- }
-
-
-
- /*if (p==6)
- kern_printf("(ATC dead:%d av_time:%d)\n",
- lev->cbs_ft_dline[p].tv_sec*1000000+
- lev->cbs_ft_dline[p].tv_nsec/1000,
- proc_table[p].avail_time); */
-
-
-
- /* if the budget is still empty, the backup task must be woken up.
- Remind that a short chunk of primary will go ahead executing
- before the task switch occurs */
- if (proc_table[p].avail_time <= 0) {
- lev->CP[p] = 1;
- proc_table[p].avail_time += proc_table[ lev->backup[p] ].wcet;
- }
-
-
- /*if (p==6)
- kern_printf("(ATC1 dead:%d av_time:%d)\n",
- lev->cbs_ft_dline[p].tv_sec*1000000+
- lev->cbs_ft_dline[p].tv_nsec/1000,
- proc_table[p].avail_time); */
-
-
-
-}
-
-
-/*+ this function is called when a killed or ended task reach the
- period end +*/
-static void CBS_FT_timer_zombie(void *par)
-{
- PID p = (PID) par;
- CBS_FT_level_des *lev;
-
- lev = (CBS_FT_level_des *)level_table[proc_table[p].task_level];
-
- /* we finally put the task in the FREE status */
- proc_table[p].status = FREE;
- q_insertfirst(p,&freedesc);
-
-
- /* and free the allocated bandwidth */
- lev->U -= (MAX_BANDWIDTH / lev->period[p]) * (TIME)lev->maxcap[p];
-}
-
-
-static int CBS_FT_level_accept_task_model(LEVEL l, TASK_MODEL *m)
-{
-
- if (m->pclass == FT_PCLASS || m->pclass ==
- (FT_PCLASS | l)) {
- FT_TASK_MODEL *f = (FT_TASK_MODEL *) m;
-
- //kern_printf("accept :FAULT TOLERANT TASK found!!!!!!\n"); */
- if (f->type == PRIMARY && f->execP > 0 && f->budget < (int)f->period
- && f->backup != NIL) return 0;
- if (f->type == BACKUP && f->wcetB > 0)
- return 0;
- }
- return -1;
-}
-
-
-
-static int CBS_FT_level_accept_guest_model(LEVEL l, TASK_MODEL *m)
-{
- return -1;
-}
-
-static char *onoff(int i)
-{
- if (i)
- return "On ";
- else
- return "Off";
-}
-
-static void CBS_FT_level_status(LEVEL l)
-{
- CBS_FT_level_des *lev = (CBS_FT_level_des *)(level_table[l]);
- PID p;
-
- kern_printf("On-line guarantee : %s\n",
- onoff(lev->flags & CBS_FT_ENABLE_GUARANTEE));
- kern_printf("Used Bandwidth : %u/%u\n",
- lev->U, MAX_BANDWIDTH);
-
- for (p=0; p<MAX_PROC; p++)
- if (proc_table[p].task_level == l && proc_table[p].status != FREE )
- kern_printf("Pid: %2d Name: %10s Period: %9ld Dline: %9ld.%6ld Stat: %s\n",
- p,
- proc_table[p].name,
- lev->period[p],
- lev->cbs_ft_dline[p].tv_sec,
- lev->cbs_ft_dline[p].tv_nsec/1000,
- CBS_FT_status_to_a(proc_table[p].status));
-}
-
-static PID CBS_FT_level_scheduler(LEVEL l)
-{
- CBS_FT_level_des *lev = (CBS_FT_level_des *)(level_table[l]);
-
- /* it stores the actual time and set the IDLE flag in order to handle
- the capacity queue discharging!!! */
- lev->idle = 1;
- ll_gettime(TIME_EXACT, &lev->start_idle);
-
-
- /* the CBS_FT don't schedule anything...
- it's an EDF level or similar that do it! */
- return NIL;
-}
-
-
-/* The on-line guarantee is enabled only if the appropriate flag is set... */
-static int CBS_FT_level_guarantee(LEVEL l, bandwidth_t *freebandwidth)
-{
- CBS_FT_level_des *lev = (CBS_FT_level_des *)(level_table[l]);
-
- if (lev->flags & CBS_FT_FAILED_GUARANTEE) {
- *freebandwidth = 0;
- kern_printf("guarantee :garanzia fallita!!!!!!\n");
- return 0;
- }
- else if (*freebandwidth >= lev->U) {
- *freebandwidth -= lev->U;
- return 1;
- }
- else {
- kern_printf("guarantee :garanzia fallita per mancanza di banda!!!!!!\n");
- kern_printf("freeband: %d request band: %d", *freebandwidth, lev->U);
- return 0;
- }
-}
-
-
-static int CBS_FT_task_create(LEVEL l, PID p, TASK_MODEL *m)
-
-{
- CBS_FT_level_des *lev = (CBS_FT_level_des *)(level_table[l]);
-
- /* if the CBS_FT_task_create is called, then the pclass must be a
- valid pclass. */
- FT_TASK_MODEL *s = (FT_TASK_MODEL *)m;
-
-
-
- /* Enable budget check */
- proc_table[p].control |= CONTROL_CAP;
-
- proc_table[p].avail_time = 0;
- NULL_TIMESPEC(&lev->cbs_ft_dline[p]);
-
-
- if (s->type == PRIMARY) {
- proc_table[p].wcet = (int)s->execP;
- lev->period[p] = s->period;
- lev->maxcap[p] = s->budget;
- lev->backup[p] = s->backup;
- lev->CP[p] = 0;
- lev->P_or_B[p] = PRIMARY;
-
- /* update the bandwidth... */
- if (lev->flags & CBS_FT_ENABLE_GUARANTEE) {
- bandwidth_t b;
- b = (MAX_BANDWIDTH / lev->period[p]) * (TIME)lev->maxcap[p];
-
- /* really update lev->U, checking an overflow... */
- if (MAX_BANDWIDTH - lev->U > b)
- lev->U += b;
- else
- /* The task can NOT be guaranteed (U>MAX_BANDWIDTH)...
- (see EDF.c) */
- lev->flags |= CBS_FT_FAILED_GUARANTEE;
- }
- }
- else {
- proc_table[p].wcet = (int)s->wcetB;
- lev->P_or_B[p] = BACKUP;
-
- /* Backup tasks are unkillable tasks! */
- proc_table[p].control |= NO_KILL;
- }
-
- return 0; /* OK, also if the task cannot be guaranteed... */
-}
-
-
-static void CBS_FT_task_detach(LEVEL l, PID p)
-{
- /* the CBS_FT level doesn't introduce any dynamic allocated new field.
- we have only to reset the NO_GUARANTEE FIELD and decrement the allocated
- bandwidth */
-
- CBS_FT_level_des *lev = (CBS_FT_level_des *)(level_table[l]);
-
- if (lev->flags & CBS_FT_FAILED_GUARANTEE)
- lev->flags &= ~CBS_FT_FAILED_GUARANTEE;
- else
- lev->U -= (MAX_BANDWIDTH / lev->period[p]) * (TIME)lev->maxcap[p];
-}
-
-
-static int CBS_FT_task_eligible(LEVEL l, PID p)
-{
- return 0; /* if the task p is chosen, it is always eligible */
-}
-
-#ifdef __TEST1__
- extern int testactive;
- extern struct timespec s_stime[];
- extern TIME s_curr[];
- extern TIME s_PID[];
- extern int useds;
-#endif
-
-static void CBS_FT_task_dispatch(LEVEL l, PID p, int nostop)
-{
- CBS_FT_level_des *lev = (CBS_FT_level_des *)(level_table[l]);
- level_table[ lev->scheduling_level ]->
- guest_dispatch(lev->scheduling_level,p,nostop);
-
-#ifdef __TEST1__
- if (testactive)
- {
- TIMESPEC_ASSIGN(&s_stime[useds], &schedule_time);
- s_curr[useds] = proc_table[p].avail_time;
- s_PID[useds] = p;
- useds++;
- }
-#endif
-}
-
-static void CBS_FT_task_epilogue(LEVEL l, PID p)
-{
- CBS_FT_level_des *lev = (CBS_FT_level_des *)(level_table[l]);
-
- /* check if the budget is finished... */
- if (proc_table[p].avail_time <= 0) {
-
- /* A backup task cannot ever exhaust its budget! */
- if (lev->P_or_B[p] == BACKUP) {
- kern_printf("\nBACKUP wcet violation!\n");
- kern_raise(XWCET_VIOLATION,p);
- /* we kill the current activation */
- level_table[ lev->scheduling_level ]->
- guest_end(lev->scheduling_level, p);
- return;
- }
-
- /* we try to recharge the budget */
- CBS_FT_avail_time_check(lev, p);
-
- /* The budget must be greater than 0! */
- if (proc_table[p].avail_time <= 0) {
- kern_printf("\nBackup task starting with exhausted budget\n");
- kern_raise(XUNVALID_TASK, p);
- lev->CP[p] = 0;
- /* we kill the current activation */
- level_table[ lev->scheduling_level ]->
- guest_end(lev->scheduling_level, p);
- return;
- }
- }
-
- /* the task returns into the ready queue by
- calling the guest_epilogue... */
- level_table[ lev->scheduling_level ]->
- guest_epilogue(lev->scheduling_level,p);
-}
-
-
-static void CBS_FT_task_activate(LEVEL l, PID p)
-{
- CBS_FT_level_des *lev = (CBS_FT_level_des *)(level_table[l]);
-
- ll_gettime(TIME_EXACT, &proc_table[p].request_time);
-
-
-
- if (lev->P_or_B[p] == BACKUP) {
- kern_printf("\nTrying to activate a BACKUP task!\n");
- kern_raise(XUNVALID_TASK, p);
- }
- else {
-
- /* If idle=1, then we have to discharge the capacities stored in
- the capacity queue up to the length of the idle interval */
- if (lev->idle == 1) {
- TIME interval;
- struct timespec delta;
- lev->idle = 0;
- SUBTIMESPEC(&proc_table[p].request_time, &lev->start_idle, &delta);
- /* length of the idle interval expressed in usec! */
- interval = TIMESPEC2NANOSEC(&delta) / 1000;
-
- /* it discharge the available capacities from the capacity queue */
- while (interval > 0 && lev->queue != NULL) {
- struct timespec dead;
- int cap;
- c_readfirst(&dead, &cap, lev->queue);
- if (cap > interval) {
- c_writefirst(dead, cap - interval, lev->queue);
- interval = 0;
- }
- else {
- interval -= cap;
- c_extractfirst(&lev->queue);
- }
- }
- }
-
- CBS_FT_activation(lev, p, &proc_table[p].request_time);
-
-
- /* Set the reactivation timer */
- TIMESPEC_ASSIGN(&lev->reactivation_time[p], &lev->cbs_ft_dline[p]);
- lev->reactivation_timer[p] = kern_event_post(&lev->reactivation_time[p],
- CBS_FT_timer_reactivate,
- (void *)p);
-
- // kern_printf("act : %d %d |",lev->cbs_ft_dline[p].tv_nsec/1000,p);
- }
-}
-
-
-static void CBS_FT_task_insert(LEVEL l, PID p)
-{
- printk("CBS_FT_task_insert\n");
- kern_raise(XUNVALID_TASK,p);
-}
-
-
-static void CBS_FT_task_extract(LEVEL l, PID p)
-{
- printk("CBS_FT_task_extract\n");
- kern_raise(XUNVALID_TASK,p);
-}
-
-
-static void CBS_FT_task_endcycle(LEVEL l, PID p)
-{
- CBS_FT_level_des *lev = (CBS_FT_level_des *)(level_table[l]);
-
-
- level_table[ lev->scheduling_level ]->
- guest_end(lev->scheduling_level,p);
-
-
- proc_table[p].status = CBS_FT_IDLE;
-
-
- if (lev->P_or_B[p] == PRIMARY) {
- if (lev->CP[p]) {
- JOB_TASK_MODEL job;
-
- /* We have to start the backup task */
- TIMESPEC_ASSIGN(&lev->cbs_ft_dline[ lev->backup[p] ],
- &lev->cbs_ft_dline[p]);
- proc_table[ lev->backup[p] ].avail_time = proc_table[p].avail_time;
- lev->CP[p] = 0;
-
- /* and, finally, we insert the backup task in the master level */
- job_task_default_model(job, lev->cbs_ft_dline[p]);
- job_task_def_yesexc(job);
- level_table[ lev->scheduling_level ]->
- guest_create(lev->scheduling_level, lev->backup[p],
- (TASK_MODEL *)&job);
- level_table[ lev->scheduling_level ]->
- guest_activate(lev->scheduling_level, lev->backup[p]);
- }
- else {
- /* A spare capacity is inserted in the capacity queue!! */
- proc_table[p].avail_time += proc_table[ lev->backup[p] ].wcet;
- if (proc_table[p].avail_time > 0) {
- c_insert(lev->cbs_ft_dline[p], proc_table[p].avail_time,
- &lev->queue, p);
- proc_table[p].avail_time = 0;
- }
- }
- }
- else {
- /* this branch is for backup tasks:
- A spare capacity is inserted in the capacity queue!! */
- if (proc_table[p].avail_time > 0) {
- c_insert(lev->cbs_ft_dline[p], proc_table[p].avail_time,
- &lev->queue, p);
- proc_table[p].avail_time = 0;
- }
- }
-}
-
-
-static void CBS_FT_task_end(LEVEL l, PID p)
-{
- CBS_FT_level_des *lev = (CBS_FT_level_des *)(level_table[l]);
-
- /* A backup task cannot be killed, this behaviour can be modified
- in a new release */
- if (lev->P_or_B[p] == BACKUP) {
- kern_printf("\nKilling a BACKUP task!\n");
- kern_raise(XUNVALID_TASK, p);
- return;
- }
-
- /* check if the capacity becomes negative... */
- /* there is a while because if the wcet is << than the system tick
- we need to postpone the deadline many times */
- while (proc_table[p].avail_time < 0) {
- /* the CBS_FT rule for recharging the capacity */
- proc_table[p].avail_time += lev->maxcap[p];
- ADDUSEC2TIMESPEC(lev->period[p], &lev->cbs_ft_dline[p]);
- }
-
- level_table[ lev->scheduling_level ]->
- guest_end(lev->scheduling_level,p);
-
-
- /* we delete the reactivation timer */
- event_delete(lev->reactivation_timer[p]);
- lev->reactivation_timer[p] = -1;
-
-
- /* Finally, we post the zombie event. when the end period is reached,
- the task descriptor and banwidth are freed */
- proc_table[p].status = CBS_FT_ZOMBIE;
- lev->reactivation_timer[p] = kern_event_post(&lev->cbs_ft_dline[p],
- CBS_FT_timer_zombie,
- (void *)p);
-}
-
-
-static void CBS_FT_task_sleep(LEVEL l, PID p)
-{
- printk("CBS_FT_task_sleep\n");
- kern_raise(XUNVALID_TASK,p);
-}
-
-
-static void CBS_FT_task_delay(LEVEL l, PID p, TIME usdelay)
-{
- printk("CBS_FT_task_delay\n");
- kern_raise(XUNVALID_TASK,p);
-}
-
-
-static int CBS_FT_guest_create(LEVEL l, PID p, TASK_MODEL *m)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); return 0; }
-
-static void CBS_FT_guest_detach(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void CBS_FT_guest_dispatch(LEVEL l, PID p, int nostop)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void CBS_FT_guest_epilogue(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void CBS_FT_guest_activate(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void CBS_FT_guest_insert(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void CBS_FT_guest_extract(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void CBS_FT_guest_endcycle(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void CBS_FT_guest_end(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void CBS_FT_guest_sleep(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void CBS_FT_guest_delay(LEVEL l, PID p,DWORD tickdelay)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-
-
-
-/* Registration functions */
-
-/*+ Registration function:
- int flags the init flags ... see CBS.h +*/
-void CBS_FT_register_level(int flags, LEVEL master)
-{
- LEVEL l; /* the level that we register */
- CBS_FT_level_des *lev; /* for readableness only */
- PID i; /* a counter */
-
- printk("CBS_FT_register_level\n");
-
- /* request an entry in the level_table */
- l = level_alloc_descriptor();
-
- printk(" alloco descrittore %d %d\n",l,sizeof(CBS_FT_level_des));
-
- /* alloc the space needed for the CBS_FT_level_des */
- lev = (CBS_FT_level_des *)kern_alloc(sizeof(CBS_FT_level_des));
-
- printk(" lev=%d\n",(int)lev);
-
- /* update the level_table with the new entry */
- level_table[l] = (level_des *)lev;
-
- /* fill the standard descriptor */
- strncpy(lev->l.level_name, CBS_FT_LEVELNAME, MAX_LEVELNAME);
- lev->l.level_code = CBS_FT_LEVEL_CODE;
- lev->l.level_version = CBS_FT_LEVEL_VERSION;
-
- lev->l.level_accept_task_model = CBS_FT_level_accept_task_model;
- lev->l.level_accept_guest_model = CBS_FT_level_accept_guest_model;
- lev->l.level_status = CBS_FT_level_status;
- lev->l.level_scheduler = CBS_FT_level_scheduler;
-
- if (flags & CBS_FT_ENABLE_GUARANTEE)
- lev->l.level_guarantee = CBS_FT_level_guarantee;
- else
- lev->l.level_guarantee = NULL;
-
- lev->l.task_create = CBS_FT_task_create;
- lev->l.task_detach = CBS_FT_task_detach;
- lev->l.task_eligible = CBS_FT_task_eligible;
- lev->l.task_dispatch = CBS_FT_task_dispatch;
- lev->l.task_epilogue = CBS_FT_task_epilogue;
- lev->l.task_activate = CBS_FT_task_activate;
- lev->l.task_insert = CBS_FT_task_insert;
- lev->l.task_extract = CBS_FT_task_extract;
- lev->l.task_endcycle = CBS_FT_task_endcycle;
- lev->l.task_end = CBS_FT_task_end;
- lev->l.task_sleep = CBS_FT_task_sleep;
- lev->l.task_delay = CBS_FT_task_delay;
-
- lev->l.guest_create = CBS_FT_guest_create;
- lev->l.guest_detach = CBS_FT_guest_detach;
- lev->l.guest_dispatch = CBS_FT_guest_dispatch;
- lev->l.guest_epilogue = CBS_FT_guest_epilogue;
- lev->l.guest_activate = CBS_FT_guest_activate;
- lev->l.guest_insert = CBS_FT_guest_insert;
- lev->l.guest_extract = CBS_FT_guest_extract;
- lev->l.guest_endcycle = CBS_FT_guest_endcycle;
- lev->l.guest_end = CBS_FT_guest_end;
- lev->l.guest_sleep = CBS_FT_guest_sleep;
- lev->l.guest_delay = CBS_FT_guest_delay;
-
- /* fill the CBS_FT descriptor part */
- for (i=0; i<MAX_PROC; i++) {
- NULL_TIMESPEC(&lev->cbs_ft_dline[i]);
- lev->period[i] = 0;
- NULL_TIMESPEC(&lev->reactivation_time[i]);
- lev->reactivation_timer[i] = -1;
- lev->maxcap[i] = 0;
- lev->backup[i] = NIL;
- lev->CP[i] = 0;
- lev->P_or_B[i] = PRIMARY;
- }
-
- lev->U = 0;
- lev->idle = 0;
- lev->queue = NULL;
-
- lev->scheduling_level = master;
-
- lev->flags = flags & 0x07;
-}
-
-
-
-bandwidth_t CBS_FT_usedbandwidth(LEVEL l)
-{
-
- CBS_FT_level_des *lev = (CBS_FT_level_des *)(level_table[l]);
- if (lev->l.level_code == CBS_FT_LEVEL_CODE &&
- lev->l.level_version == CBS_FT_LEVEL_VERSION)
- return lev->U;
- else
- return 0;
-}
-
-
-
-void CBS_FT_Primary_Abort()
-{
- PID p;
- CBS_FT_level_des *lev;
-
- kern_cli();
- p = exec_shadow;
- lev = (CBS_FT_level_des *)level_table[proc_table[p].task_level];
- lev->CP[p] = 1;
- kern_sti();
-}
-
-
-char CBS_FT_Checkpoint()
-{
- char f;
- PID p;
- CBS_FT_level_des *lev;
-
- kern_cli();
- p = exec_shadow;
- lev = (CBS_FT_level_des *)level_table[proc_table[p].task_level];
- f = lev->CP[p];
- kern_sti();
- return f;
-}
-
Index: pj/jumpball/initfile.c
===================================================================
--- pj/jumpball/initfile.c (revision 1344)
+++ pj/jumpball/initfile.c (nonexistent)
@@ -1,141 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: initfile.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#define PI
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-
-#ifndef PI
-#include "modules/rrsoft.h"
-#endif
-
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-#include "modules/pi.h"
-#include "modules/pc.h"
-#include "modules/srp.h"
-#include "modules/npp.h"
-#include "modules/nop.h"
-
-#include "drivers/keyb.h"
-
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-//#define RRTICK 10000
-#define RRTICK 2000
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
-#ifdef PI
- EDF_register_level(EDF_ENABLE_ALL);
- CBS_register_level(CBS_ENABLE_ALL, 0);
-#else
- RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_HARD|RRSOFT_ONLY_SOFT);
- RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_SOFT); //cbs
-#endif
-
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
-
- SEM_register_module();
-
- CABS_register_module();
-
- PI_register_module();
- NOP_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- kern_printf("TIME=%d\n",sys_gettime(NULL));
- KEYB_init(NULL);
- kern_printf("TIME=%d\n",sys_gettime(NULL));
-// KEYB_init(NULL);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-
-#ifdef PI
-void app_mutex_init(mutex_t *m)
-{
- PI_mutexattr_t attr;
-
- PI_mutexattr_default(attr);
-
- mutex_init(m, &attr);
-}
-#else
-void app_mutex_init(mutex_t *m)
-{
- NOP_mutexattr_t attr;
-
- NOP_mutexattr_default(attr);
-
- mutex_init(m, &attr);
-}
-#endif
Index: pj/jumpball/demo.c
===================================================================
--- pj/jumpball/demo.c (revision 1344)
+++ pj/jumpball/demo.c (nonexistent)
@@ -1,252 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: demo.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include "demo.h"
-#include <kernel/func.h>
-#include <string.h>
-#include <stdlib.h>
-#include <drivers/keyb.h>
-#include <drivers/glib.h>
-
-/* graphic mutex... */
-mutex_t mutex;
-
-/* useful colors... */
-int white;
-int black;
-int red;
-int gray;
-
-void app_mutex_init(mutex_t *m);
-
-static void version( void )
-{
- cprintf( "S.Ha.R.K. Pavia Demo 1.0\n" );
- cprintf( "------------------------\n" );
- cprintf( "by Paolo Gai 1999-2001\n" );
- cprintf( " <pj@sssup.it>\n" );
- cprintf( "------------------------\n" );
-}
-
-int myrand(int x)
-{
- return rand()%x;
-}
-
-void reverse(char s[])
-{
- int c, i, j;
-
- for (i = 0, j = strlen(s)-1; i<j; i++, j--)
- {
- c = s[i];
- s[i] = s[j];
- s[j] = c;
- }
-}
-
-char * itoa(int n, char *s)
-{
- int i, sign;
-
- if ((sign = n) < 0)
- n = -n;
-
- i = 0;
-
- do
- {
- s[i++] = n % 10 + '0';
- } while ((n /= 10) > 0);
-
- if (sign < 0)
- s[i++] = '-';
-
- s[i] = 0;
-
- reverse(s);
-
- return s;
-}
-
-
-void scenario()
-{
- grx_text("S.Ha.R.K. Pavia Demo 1.0", 0, 0, rgb16(0,255,0), black );
- grx_text("by Paolo Gai 1999-2001" , 0, 8, rgb16(0,255,0), black );
- grx_text(" pj@sssup.it" , 0,16, rgb16(0,255,0), black );
-
- grx_text("Ctrl-C, Ctrr-C, Enter: exit" ,320, 0, gray, black );
- grx_text("Alt-C : void stat." ,320, 8, gray, black );
- grx_text("Space : create noise ball",320,16, gray, black );
- grx_text("Backspace : kill noise balls" ,320,24, gray, black );
-
-
- #ifdef JET_ON
- scenario_jetcontrol();
- #endif
-
- #ifdef BALL_ON
- scenario_ball();
- #endif
-}
-
-
-void demo_exc_handler(int signo, siginfo_t *info, void *extra)
-{
- struct timespec t;
-
- grx_close();
-
- /* Default action for an kern exception is */
- kern_cli();
- ll_gettime(TIME_EXACT, &t),
- kern_printf("\nS.Ha.R.K. Exception raised!!!"
- "\nTime (s:ns) :%d:%d"
- "\nException number:%d"
- "\nPID :%d\n",
- t.tv_sec, t.tv_nsec, info->si_value.sival_int,
- info->si_task);
- sys_end();
-}
-
-void my_close(void *arg)
-{
- grx_close();
- kern_printf("my_close\n");
-}
-
-
-void endfun(KEY_EVT *k)
-{
- cprintf("Ctrl-Brk pressed! Ending...\n");
- sys_end();
-}
-
-void zerofun(KEY_EVT *k)
-{
- int i;
- for (i=0; i<MAX_PROC; i++) jet_delstat(i);
-}
-
-void printeventqueue(void *arg)
-{
- struct event *p;
- extern struct event *firstevent;
-
- kern_cli();
- grx_close();
- kern_cli();
- for (p = firstevent; p != NULL; p = p->next) {
- kern_printf("par:%d time:%d.%d p:%d handler:%d\n",
- p->par, p->time.tv_sec, p->time.tv_nsec/1000, p, p->handler);
- }
- kern_sti();
-}
-
-int main(int argc, char **argv)
-{
- int modenum;
-
- KEY_EVT k;
-
- srand(4);
-
- version();
-
- keyb_set_map(itaMap);
- k.flag = CNTR_BIT;
- k.scan = KEY_C;
- k.ascii = 'c';
- keyb_hook(k,endfun);
- k.flag = CNTL_BIT;
- k.scan = KEY_C;
- k.ascii = 'c';
- keyb_hook(k,endfun);
- k.flag = ALTL_BIT;
- k.scan = KEY_C;
- k.ascii = 'c';
- keyb_hook(k,zerofun);
- k.flag = 0;
- k.scan = KEY_ENT;
- k.ascii = 13;
- keyb_hook(k,endfun);
-
- set_exchandler_grx();
- sys_atrunlevel(my_close, NULL, RUNLEVEL_BEFORE_EXIT);
-
-
- grx_init();
- modenum = grx_getmode(640, 480, 16);
-
- grx_setmode(modenum);
-
- /* init the graphic mutex */
- app_mutex_init(&mutex);
-
- /* useful colors ... */
- white = rgb16(255,255,255);
- black = rgb16(0,0,0);
- red = rgb16(255,0,0);
- gray = rgb16(128,128,128);
-
- scenario();
-
- #ifdef JET_ON
- init_jetcontrol();
- #endif
-
- #ifdef BALL_ON
- init_ball();
- #endif
-
- group_activate(1);
-
- return 0;
-}
-
-
Index: pj/jumpball/jetctrl.c
===================================================================
--- pj/jumpball/jetctrl.c (revision 1344)
+++ pj/jumpball/jetctrl.c (nonexistent)
@@ -1,244 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: jetctrl.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-// JetControl
-
-#include "demo.h"
-#include "kernel/func.h"
-
-TASK jetdummy_task(void *arg)
-{
- TIME now_dummy, last_dummy, diff_dummy, slice;
- struct timespec now, last, diff;
- int x = 0;
- int height;
-
- NULL_TIMESPEC(&last);
- last_dummy = 0;
- for (;;) {
- task_nopreempt();
- jet_getstat(DUMMY_PID, NULL, NULL, NULL, &now_dummy);
- sys_gettime(&now);
- task_preempt();
-
- SUBTIMESPEC(&now, &last, &diff);
- slice = diff.tv_sec * 1000000 + diff.tv_nsec/1000;
- diff_dummy = now_dummy - last_dummy;
-
- height = (int)(JET_DUMMY_HEIGHT*((float)diff_dummy)/((float)slice));
-
- TIMESPEC_ASSIGN(&last, &now);
- last_dummy = now_dummy;
-
- mutex_lock(&mutex);
- grx_line(JET_DUMMY_X+x,JET_DUMMY_Y,
- JET_DUMMY_X+x,JET_DUMMY_Y+height ,black);
- grx_line(JET_DUMMY_X+x,JET_DUMMY_Y+height,
- JET_DUMMY_X+x,JET_DUMMY_Y+JET_DUMMY_HEIGHT,white);
- grx_line(JET_DUMMY_X+(x+1)%JET_DUMMY_WIDTH,JET_DUMMY_Y,
- JET_DUMMY_X+(x+1)%JET_DUMMY_WIDTH,JET_DUMMY_Y+JET_DUMMY_HEIGHT,255);
- mutex_unlock(&mutex);
-
- x = (x+1)%JET_DUMMY_WIDTH;
-
- task_endcycle();
- }
-}
-
-
-TASK jetctrl_task(void *arg)
-{
- char st[50];
- TIME sum, max;
- int n;
-
- PID i;
- int printed = 0;
-
- for (;;) {
- for (i=2, printed=0; i<MAX_PROC && printed<JET_NTASK; i++) {
- if (jet_getstat(i, &sum, &max, &n, NULL) != -1) {
- if (!n) n=1;
- sprintf(st, "%6d %6d %10s", (int)sum/n, (int)max, proc_table[i].name);
- mutex_lock(&mutex);
- grx_text(st, 384, JET_Y_NAME+16+printed*8, gray, black);
- mutex_unlock(&mutex);
- printed++;
- }
- }
- while (printed<JET_NTASK) {
- mutex_lock(&mutex);
- grx_text(" ",
- 384, JET_Y_NAME+16+printed*8, gray, black);
- mutex_unlock(&mutex);
- printed++;
- }
- task_endcycle();
- }
-}
-
-TASK jetslide_task(void *arg)
-{
- TIME sum, curr, max;
-
- TIME total[JET_NTASK];
- int slides[JET_NTASK];
-
- PID i;
- int printed = 0;
-
- for (;;) {
- // Fill the total array in a nonpreemptive section
- task_nopreempt();
- for (i=2, printed=0; i<MAX_PROC && printed<JET_NTASK; i++) {
- if (jet_getstat(i, &sum, NULL, NULL, &curr) != -1) {
- total[printed] = sum+curr;
- printed++;
- }
- }
- task_preempt();
-
- while (printed < JET_NTASK)
- total[printed++] = 0;
-
- // Compute the Max elapsed time
- max = 0;
- for (i=0; i<JET_NTASK; i++)
- if (total[i] > max) max = total[i];
- if (!max) max = 1;
-
- // Compute the slides width
- for (i=0; i<JET_NTASK; i++)
- slides[i] = (int)( (((float)total[i])/max) * JET_SLIDE_WIDTH);
-
- // print the data
- mutex_lock(&mutex);
- for (i=0; i<JET_NTASK; i++) {
- grx_box(JET_SLIDE_X, JET_Y_NAME+16+i*8,
- JET_SLIDE_X+slides[i], JET_Y_NAME+23+i*8, gray);
- grx_box(JET_SLIDE_X+slides[i], JET_Y_NAME+16+i*8,
- JET_SLIDE_X+JET_SLIDE_WIDTH, JET_Y_NAME+23+i*8, black);
- }
-
- while (i<JET_NTASK) {
- grx_box(JET_SLIDE_X, JET_Y_NAME+16+i*8,
- JET_SLIDE_X+JET_SLIDE_WIDTH, JET_Y_NAME+20+i*8, black);
- i++;
- }
- mutex_unlock(&mutex);
- task_endcycle();
- }
-}
-
-
-void scenario_jetcontrol(void)
-{
- grx_text("System load" , 384, 45, rgb16(0,0,255), black);
- grx_line(384,55,639,55,red);
-
- grx_text(" Mean Max Name Slide", 384, JET_Y_NAME, gray, black);
- grx_line(384,JET_Y_NAME+10,639,JET_Y_NAME+10,gray);
-
- grx_rect(JET_DUMMY_X-1, JET_DUMMY_Y-1,
- JET_DUMMY_X+JET_DUMMY_WIDTH, JET_DUMMY_Y+JET_DUMMY_HEIGHT+1, gray);
-
- grx_text("100%", JET_DUMMY_X-40, JET_DUMMY_Y, gray, black);
- grx_text(" 0%", JET_DUMMY_X-40, JET_DUMMY_Y+JET_DUMMY_HEIGHT-8, gray, black);
-
- grx_line(JET_DUMMY_X-1, JET_DUMMY_Y, JET_DUMMY_X-5, JET_DUMMY_Y, gray);
- grx_line(JET_DUMMY_X-1, JET_DUMMY_Y+JET_DUMMY_HEIGHT, JET_DUMMY_X-5, JET_DUMMY_Y+JET_DUMMY_HEIGHT, gray);
-}
-
-void init_jetcontrol(void)
-{
- SOFT_TASK_MODEL m3, m4, m5;
-
- PID p3, p4, p5;
-
- soft_task_default_model(m3);
- soft_task_def_level(m3,1);
- soft_task_def_period(m3, PERIOD_JETCTRL);
- soft_task_def_met(m3, WCET_JETCTRL);
- soft_task_def_ctrl_jet(m3);
- soft_task_def_group(m3, 1);
- p3 = task_create("jctrl", jetctrl_task, &m3, NULL);
- if (p3 == -1) {
- grx_close();
- perror("Could not create task <jetctrl>");
- sys_end();
- }
-
- soft_task_default_model(m4);
- soft_task_def_level(m4,1);
- soft_task_def_period(m4, PERIOD_JETDUMMY);
- soft_task_def_met(m4, WCET_JETDUMMY);
- soft_task_def_group(m4, 1);
- soft_task_def_usemath(m4);
- soft_task_def_ctrl_jet(m4);
- p4 = task_create("jdmy", jetdummy_task, &m4, NULL);
- if (p4 == -1) {
- grx_close();
- perror("Could not create task <jetdummy>");
- sys_end();
- }
-
- soft_task_default_model(m5);
- soft_task_def_level(m5,1);
- soft_task_def_period(m5, PERIOD_JETSLIDE);
- soft_task_def_met(m5, WCET_JETSLIDE);
- soft_task_def_group(m5, 1);
- soft_task_def_usemath(m5);
- soft_task_def_ctrl_jet(m5);
- p5 = task_create("jsli", jetslide_task, &m5, NULL);
- if (p5 == -1) {
- grx_close();
- perror("Could not create task <jetslide>");
- sys_end();
- }
-}
-
Index: pj/jumpball/demo.h
===================================================================
--- pj/jumpball/demo.h (revision 1344)
+++ pj/jumpball/demo.h (nonexistent)
@@ -1,147 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: demo.h,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-#include <ll/ll.h>
-#include <kernel/types.h>
-#include <kernel/descr.h>
-#include <math.h>
-#include <drivers/glib.h>
-#include <drivers/keyb.h>
-
-
-#define JET_ON
-#define BALL_ON
-
-/*
- *
- * WCET, Periods and Models
- *
- */
-
-
-/* define if you want NRT or SOFT... */
-#define TASK_TYPE SOFT
-//#define TASK_TYPE NRT
-
-#define WCET_JETCTRL 7500
-#define WCET_JETDUMMY 200
-#define WCET_JETSLIDE 2100
-
-#define PERIOD_JETCTRL 100000
-#define PERIOD_JETDUMMY 100000
-#define PERIOD_JETSLIDE 100000
-
-
-#define WCET_BALL 100
-
-#define PERIOD_BALL 10000
-
-/*
- *
- * Global Stuffs
- *
- */
-
-/* graphic mutex... */
-extern mutex_t mutex;
-
-/* useful colors... */
-extern int white;
-extern int black;
-extern int red;
-extern int gray;
-
-void init_jetcontrol();
-void init_ball(void);
-void scenario_jetcontrol();
-void scenario_ball();
-char *itoa(int n, char *s);
-int myrand(int x);
-
-
-
-/*
- *
- * JETCONTROL stuffs
- *
- */
-
-#define JET_NTASK 35
-#define JET_Y_NAME 170
-
-#define DUMMY_PID 1
-
-#define JET_DUMMY_WIDTH 210
-#define JET_DUMMY_HEIGHT 80
-
-/* the point (x, y) is the top left corner */
-#define JET_DUMMY_X 428
-#define JET_DUMMY_Y 65
-
-#define JET_SLIDE_WIDTH 50
-#define JET_SLIDE_X 576
-
-
-
-
-/*
- *
- * BALL stuffs
- *
- */
-
-// x and y corners are specified whithout consider a border of 3 pixels
-#define BALL_Y 450 /* position of the floor */
-#define BALL_HEIGHT 385 /* initial height of the ball */
-#define BALL_XMIN 10 /* min position X of the ball */
-#define BALL_XMAX 370 /* max position X of the ball */
-#define BALL_VELX 5. /* horizontal ball velocity */
-#define BALL_VYMIN 11. /* min ground speed */
-#define BALL_MAX_P 60 /* max number of balls */
-
-#define BALL_GROUP 2 /* task group of the balls */
Index: pj/jumpball/readme.txt
===================================================================
--- pj/jumpball/readme.txt (revision 1344)
+++ pj/jumpball/readme.txt (nonexistent)
@@ -1,75 +0,0 @@
-----------------------------------
-Jumping Balls demo
-
-by
-
-Paolo Gai 1999-2001 - pj@sssup.it
-
-----------------------------------
-
-This demo was created to show some S.Ha.R.K. functionalities in the course
-of Informatica Industriale , University of Pavia, Italy.
-
-The demo is composed by an application (derived by the template application
-distributed on the web site) and two init files.
-
-The demo is composed by:
-
-MAKEFILE The makefile used to compile the application;
- demo is the rule to compile the application with a CBS scheduler
- demo2 is the rule to compile the application with a RR scheduler
-README.TXT This file
-DEMO.H Some constants used into the demo
-INITFIL1.C The CBS initfile
-INITFIL2.C The EDF initfile
-INITFILE.C A makefile that cover either EDF+CBS and RR
-BALL.C The Jumping balls part of the demo
-DEMO.C The main() function and some other utility function
-JETCTRL.C The JET part of the demo
-
-
-The demo works as follows:
-- It works at 640x480 16 bit colors
-- on the left, there is the jumping ball arena, on the rigth there is the
- statistics about the tasks into the system.
-
-- the tasks are guaranteed using CBS and EDF. The wcet and mean execution
- time on my portable after a few minutes are (us):
-
- JetCtrl 7400 max 7500 CBS met
- JetDummy 135 max 200 CBS met
- JetSlide 2100 max 2100 CBS met
- Balls 276 max 380 EDF wcet for hard ball,100 CBS met for soft ones
-
- The system should go overloaded with 40 soft balls.
-
-- The idea is the following:
- - first, an edf guaranteed ball is created.
- - then, create a set of soft ball using space. since their met is < than the
- real met, they posticipate the deadlines.
- - if they are killed, they remain for some seconds in the zombie state
- - if a set of soft ball arde created (i.e., 10), and after a while all the
- others are created, the bandwidth is fully used, and the task posticipate
- their deadlines. the first set of tasks stops jumping when the bandwidth
- is full utilized by the newest balls until all the tasks have similar
- deadlines.
- - Note on the left the slides that represents the relative ratio
- between the tasks.
- - Note that in overload conditions the EDF task is still guaranteed
- - Note that PI is used with EDF, also if no theory says that it is good:
- - S.Ha.R.K. allows that, it is the user that have to choose if that is
- a non-sense
- - PI is independent from the implemnentation of the scheduling modules
- - if the second init file is used, RR is used instead of EDF+CBS.
- - In overload condition RR perform differently from EDF+CBS, giving to
- each task an equal fraction of bandwidth
-
- - note also:
- - the redefinition of the standard exception handler
- - the redefinition of the keys and the initialization of the keyboard
- - the myend exit function
- - the main() that terminates
- - the two parts (ball and jet) can be excluded using a #define
-
-If You have any question, please contact the author...
-
Index: pj/jumpball/ball.c
===================================================================
--- pj/jumpball/ball.c (revision 1344)
+++ pj/jumpball/ball.c (nonexistent)
@@ -1,239 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: ball.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-/*--------------------------------------------------------------*/
-/* SIMULATION OF JUMPING BALLS */
-/*--------------------------------------------------------------*/
-
-#include "demo.h"
-#include <kernel/func.h>
-#include <stdlib.h>
-
-#define R 8 /* dimension of a ball */
-#define G 9.8 /* acceleration of gravity */
-
-static int ballexit = 0;
-static int npc = 0; /* number of tasks created */
-
-/*--------------------------------------------------------------*/
-/* Periodic task for ball simulation */
-/*--------------------------------------------------------------*/
-
-TASK palla(int i)
-{
-int x, y; /* coordinate grafiche pallina */
-int ox, oy; /* vecchia posizione pallina */
-int x0, y0; /* posizione iniziale X pallina */
-float vx, vy; /* velocit… della pallina */
-float vy0; /* velocita' pallina al primo rimbalzo */
-float ty, tx; /* variabile temporale */
-float dt; /* incremento temporale */
-
- y = oy = y0 = BALL_HEIGHT;
- x = ox = x0 = BALL_XMIN;
-
- vy0= sqrt(2. * G * (float)BALL_HEIGHT);
- vy = 0;
- vx = BALL_VELX + myrand(9);
- tx = 0;
- ty = 0;
- dt = ((float)PERIOD_BALL)/100000;
-
- while (1) {
- y = y0 + vy*ty - .5*G*ty*ty;
- x = x0 + vx * tx;
-
- if (y < 0) {
- y = 0;
-
- if (vy == 0.0)
- vy = vy0;
- else if (vy < BALL_VYMIN)
- vy = vy0 * (1.0 - myrand(50)/100.0);
- else
- vy = 0.9 * vy;
-
- ty = 0.0;
- y0 = 0;
- }
-
- if (x > BALL_XMAX) {
- tx = 0.0;
- x0 = BALL_XMAX;
- vx = -vx;
- x = x0 + vx * tx;
- }
-
- if (x < BALL_XMIN) {
- tx = 0.0;
- x0 = BALL_XMIN;
- vx = -vx;
- x = x0 + vx * tx;
- }
-
- mutex_lock(&mutex);
- grx_disc(ox, oy, R, 0);
- ox = x;
- oy = BALL_Y - y;
- mutex_unlock(&mutex);
-
- if (ballexit && i!=0xFFFF) {
- npc--;
- return 0;
- }
-
- mutex_lock(&mutex);
- grx_disc(ox, oy, R, i);
- mutex_unlock(&mutex);
-
- {
- int xxx;
- for (xxx=0; xxx<10000; xxx++);
- }
- ty += dt;
- tx += dt;
- task_endcycle();
- }
-}
-
-void killball(KEY_EVT *k)
-{
- ballexit = 1;
-}
-
-void ballfun(KEY_EVT *k)
-{
- SOFT_TASK_MODEL mp;
- int r,g,b;
- PID pid;
- char palla_str[]="palla ";
-
- if (npc == BALL_MAX_P) return;
-
- ballexit = 0;
-
- r = 64 + myrand(190);
- g = 64 + myrand(190);
- b = 64 + myrand(190);
-
- itoa(npc,palla_str+5);
-
- soft_task_default_model(mp);
- soft_task_def_level(mp,1);
- soft_task_def_ctrl_jet(mp);
- soft_task_def_arg(mp, (void *)rgb16(r,g,b));
- soft_task_def_group(mp, BALL_GROUP);
- soft_task_def_met(mp, WCET_BALL);
- soft_task_def_period(mp,PERIOD_BALL);
- soft_task_def_usemath(mp);
- pid = task_create(palla_str, palla, &mp, NULL);
-
- if (pid != NIL) {
- task_activate(pid);
- npc++;
- }
-}
-
-void hardball()
-{
- HARD_TASK_MODEL mp;
- int r,g,b;
- PID pid;
-
- r = 255;
- g = 255;
- b = 255;
-
- hard_task_default_model(mp);
- hard_task_def_ctrl_jet(mp);
- hard_task_def_arg(mp, (void *)rgb16(r,g,b));
- hard_task_def_wcet(mp, 380);
- hard_task_def_mit(mp,PERIOD_BALL);
- hard_task_def_usemath(mp);
- pid = task_create("pallaEDF", palla, &mp, NULL);
- if (pid == NIL) {
- grx_close();
- perror("Could not create task <pallaEDF>");
- sys_end();
- }
- else
- task_activate(pid);
-}
-
-
-/*--------------------------------------------------------------*/
-/* MAIN process */
-/*--------------------------------------------------------------*/
-
-void scenario_ball()
-{
- grx_text("Noise", 0, 45 /*BALL_Y-BALL_HEIGHT-15*/, rgb16(0,0,255), black);
- grx_line(0,55,383,55,red);
-//grx_line(0,BALL_Y-BALL_HEIGHT-6,383,BALL_Y-BALL_HEIGHT-6,red);
-
- grx_rect(BALL_XMIN-R-1, BALL_Y-BALL_HEIGHT-R-1,
- BALL_XMAX+R+1, BALL_Y+R+1, rgb16(0,200,0));
-}
-
-void init_ball(void)
-{
- KEY_EVT k;
-
- hardball();
-
- k.flag = 0;
- k.scan = KEY_SPC;
- k.ascii = ' ';
- keyb_hook(k,ballfun);
-
- k.flag = 0;
- k.scan = KEY_BKS;
- k.ascii = ' ';
- keyb_hook(k,killball);
-}
-
-/*--------------------------------------------------------------*/
Index: pj/jumpball/makefile
===================================================================
--- pj/jumpball/makefile (revision 1344)
+++ pj/jumpball/makefile (nonexistent)
@@ -1,19 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS= demo
-
-include $(BASE)/config/example.mk
-
-demo:
- make -f $(SUBMAKE) APP=demo INIT= OTHEROBJS="initfil1.o ball.o jetctrl.o" OTHERINCL=
-
-demo2:
- make -f $(SUBMAKE) APP=demo INIT= OTHEROBJS="initfil2.o ball.o jetctrl.o" OTHERINCL=
-
Index: pj/jumpball/initfil1.c
===================================================================
--- pj/jumpball/initfil1.c (revision 1344)
+++ pj/jumpball/initfil1.c (nonexistent)
@@ -1,118 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: initfil1.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-#include "modules/pi.h"
-#include "modules/pc.h"
-#include "modules/srp.h"
-#include "modules/npp.h"
-#include "modules/nop.h"
-
-#include "drivers/keyb.h"
-
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-//#define RRTICK 10000
-#define RRTICK 2000
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- EDF_register_level(EDF_ENABLE_ALL);
- CBS_register_level(CBS_ENABLE_ALL, 0);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
-
- SEM_register_module();
-
- CABS_register_module();
-
- PI_register_module();
- NOP_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- KEYB_PARMS kparms = BASE_KEYB;
-
- HARTPORT_init();
-
- keyb_def_ctrlC(kparms, NULL);
- KEYB_init(&kparms);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-
-void app_mutex_init(mutex_t *m)
-{
- PI_mutexattr_t attr;
-
- PI_mutexattr_default(attr);
-
- mutex_init(m, &attr);
-}
-
Index: pj/jumpball/initfil2.c
===================================================================
--- pj/jumpball/initfil2.c (revision 1344)
+++ pj/jumpball/initfil2.c (nonexistent)
@@ -1,119 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: initfil2.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/rrsoft.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-#include "modules/pi.h"
-#include "modules/pc.h"
-#include "modules/srp.h"
-#include "modules/npp.h"
-#include "modules/nop.h"
-
-#include "drivers/keyb.h"
-
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-//#define RRTICK 10000
-#define RRTICK 2000
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_HARD|RRSOFT_ONLY_SOFT);
- RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_SOFT); //cbs
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
-
- SEM_register_module();
-
- CABS_register_module();
-
- PI_register_module();
- NOP_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- KEYB_PARMS kparms = BASE_KEYB;
-
- HARTPORT_init();
-
- keyb_def_ctrlC(kparms, NULL);
- KEYB_init(&kparms);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-
-
-void app_mutex_init(mutex_t *m)
-{
- NOP_mutexattr_t attr;
-
- NOP_mutexattr_default(attr);
-
- mutex_init(m, &attr);
-}
-
Index: pj/robots/lab1m.txt
===================================================================
--- pj/robots/lab1m.txt (revision 1344)
+++ pj/robots/lab1m.txt (nonexistent)
@@ -1,9 +0,0 @@
-1
-540 380 15 270
-380 300 400 5
-430 060 460 400 0
-350 100 430 130 0
-000 100 300 130 0
-150 200 430 230 0
-120 300 150 400 0
-
Index: pj/robots/mouse2.c
===================================================================
--- pj/robots/mouse2.c (revision 1344)
+++ pj/robots/mouse2.c (nonexistent)
@@ -1,935 +0,0 @@
-/*--------------------------------------------------------------*/
-/* Title: Mouse */
-/* Autor: João Capucho */
-/* Date: 9/12/2000 */
-/* Description: */
-/* Simulation of small automats based on the */
-/* "micro-rato" conteste */
-/*--------------------------------------------------------------*/
-
-/*
- * Copyright (C) 2001 João Capucho
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-// Includes
-#include <ll/i386/x-dos.h>
-#include <kernel/kern.h>
-#include <drivers/glib.h>
-#include <drivers/keyb.h>
-#include <math.h>
-#include <stdlib.h>
-#include <limits.h>
-
-#define sqr(x) (x*x)
-
-// Error Types
-#define OK 0
-#define MEMORY_ERROR -1
-#define ILEGAL_PARAMETER -2
-
-// Types of sensors and motors
-#define NONE 0
-#define OBSTACLE 1
-#define BEACON 2
-#define GROUND 3
-#define STEP 4
-
-// Maze limits
-#define LAB_XMIN 40
-#define LAB_XMAX 600
-#define LAB_YMIN 40
-#define LAB_YMAX 440
-
-#define MOTOR_RIGHT 1
-#define MOTOR_LEFT 0
-
-#define BACKCOLOR 0 // Background color
-#define OUTCOLOR 14 // Color of the outside walls
-#define FINISHCOLOR 7 // Finishin area color
-#define NONBLOCKCOLOR 14 // Non block boxs
-#define BLOCKCOLOR 13 // Block boxs
-
-#define BOX_BLOCK 1 // The box blocks the beacon
-#define BOX_NON_BLOCK 2 // The box doesn´t block the beacon
-
-#define MAX_MOUSES 5 // Maximum of mouses in the Maze
-#define MAX_BOXS 100 // Maximum of boxs in the Maze
-#define MAX_SENSORS 20 // Maximum of sensors in each mouse
-#define SENSOR_MIN_GROUND 0 // Minimum value of a ground sensor
-#define SENSOR_MAX_GROUND 255 // Maximum value of a ground sensor
-#define SENSOR_MIN_OBSTACLE 77 // Minimum value of a obstacle sensor
-#define SENSOR_MAX_OBSTACLE 128 // Maximum value of a obstacle sensor
-#define SENSOR_MIN_BEACON 77 // Minimum value of a beacon sensor
-#define SENSOR_MAX_BEACON 128 // Maximum value of a beacon sensor
-#define BEACON_INTENSITY 400 // Maximun intensity of the beacon
-
-#define MOUSE_PERIOD 20000 // Period
-#define CALC_PERIOD 2000 // Period
-#define REFEREE_PERIOD 1000 // Period of the referee
-#define REDRAW_MOUSE_PERIOD 25000 // Period for redraw mouse
-#define REDRAW_MAZE_PERIOD 100000 // Period for redraw maze
-#define MOUSEGROUP 511
-
-struct SENSOR
-{
- int Type; // Tipe of sensor ( None - Obstacle - Beacon - Ground)
- int Radius; // Distance from de center of the mouse
- int Pos_Angle; // Angle between the sensor and the front of the mouse
- int Dir; // Angle between the direction of the sensores and the front of the mouse
- int Angle; // Half angle of visual field (between (Dir-Angle) and (Dir+Angle))
- int Intensity; // Sensativity of the sensor
- float Value; // Last value readed
-};
-
-struct MOTOR
-{
- int Radius; // Distance from de center of the mouse
- int V; // Current velocity
- float Old_V; // Previews velocity
-};
-
-struct MOUSE
-{
- float X, Y; // Current position of the center
- float Old_X, Old_Y; // Previous position of the center
- int Radius; // Size of the mouse ( every mouse is considered round )
- float Dir; // Points to the front
- float Old_Dir; // Previous front
- int NSensors; // Number of sensors in the mouse
- struct SENSOR Sensors[MAX_SENSORS]; // Pointer to the structer that contains the information of the sensors
- struct MOTOR Motors[2]; // Pointer to the structer that contains the information of the motors
- WORD NColision; // Total of colisions
- WORD PColision; // Auxiliar for colisions
- char Flag; // Initialization flag
-};
-
-
-
-struct BOX // Structer that represents the obstacles
-{ //in this case all the obstacles are boxs
- int Type; // Type of the obstatcle
- int X1, Y1, X2, Y2; // position of the box
-};
-
-struct SBEACON // Beacon information
-{
- int Intensity; // Intensity of the beacon
- int X, Y; // position of the beacon
-};
-
-struct MAZE
-{
- int X1, Y1, X2, Y2; // limites of the maze
- int NBoxs; // Number of objstacles in the maze
- struct BOX Boxs[MAX_BOXS]; // Information about all thr obstacles
- struct SBEACON Beacon; // Beacon data
- int Radius; // Size of the finishing area
-};
-
-int Seno[360+90]; // Sine table
-int Tang[180]; // Tangente table
-int NMouses=0;
-struct MOUSE Mouse[MAX_MOUSES]; // Global variable that represents all the mouses
-struct MAZE Maze; // Global variable that represents the maze
-
-// Init_Maze - Initialize the Maze
-// Beacon_X - Coordinate X of the beacon
-// Beacon_Y - Coordinate Y of the beacon
-// Intensity - Intensity of the beacon
-// NBoxs - Number of boxs in the maze
-// Return: OK - Sucess
-
-int Init_Maze(int Beacon_X, int Beacon_Y, int Intensity, int NBoxs)
-{
- int i;
- Maze.X1=LAB_XMIN;
- Maze.Y1=LAB_YMIN;
- Maze.X2=LAB_XMAX;
- Maze.Y2=LAB_YMAX;
- Maze.Beacon.X=Beacon_X+LAB_XMIN;
- Maze.Beacon.Y=Beacon_Y+LAB_YMIN;
- if (Intensity<BEACON_INTENSITY)
- Maze.Beacon.Intensity=Intensity;
- else
- Maze.Beacon.Intensity=BEACON_INTENSITY;
- if (NBoxs<MAX_BOXS)
- Maze.NBoxs=NBoxs;
- else
- Maze.NBoxs=MAX_BOXS;
- Maze.Radius=50;
- for(i=0; i < Maze.NBoxs; i++)
- Maze.Boxs[i].Type=NONE;
- return OK;
-}
-
-// Init_Box - Initialize data of the NBox obstacle
-// NBox - Identifier of the obstacle
-// X1 - Coordinate X
-// Y1 - Coordinate Y
-// X2 - Coordinate X
-// Y2 - Coordinate Y
-// Type - Type of the obstacle
-// Return: OK - Sucess
-
-int Init_Box(int NBox, int X1, int Y1, int X2, int Y2, int Type)
-{
- Maze.Boxs[NBox].Type=Type;
- if (X1<X2)
- {
- Maze.Boxs[NBox].X1=X1+LAB_XMIN;
- Maze.Boxs[NBox].X2=X2+LAB_XMIN;
- }
- else
- {
- Maze.Boxs[NBox].X1=X2+LAB_XMIN;
- Maze.Boxs[NBox].X2=X1+LAB_XMIN;
- }
- if (Y1<Y2)
- {
- Maze.Boxs[NBox].Y1=Y1+LAB_YMIN;
- Maze.Boxs[NBox].Y2=Y2+LAB_YMIN;
- }
- else
- {
- Maze.Boxs[NBox].Y1=Y2+LAB_YMIN;
- Maze.Boxs[NBox].Y2=Y1+LAB_YMIN;
- }
- return OK;
-}
-
-// Draw_Maze - Draws the outline of the maze and the obstacles
-// Return: OK - Sucess
-int Draw_Maze(void)
-{
- int i;
- grx_rect( Maze.X1, Maze.Y1, Maze.X2, Maze.Y2, OUTCOLOR);
- grx_rect( Maze.X1-1, Maze.Y1+1, Maze.X2+1, Maze.Y2+1, OUTCOLOR);
- grx_rect( Maze.X1-2, Maze.Y1+2, Maze.X2+2, Maze.Y2+2, OUTCOLOR);
- grx_circle(Maze.Beacon.X, Maze.Beacon.Y, Maze.Radius, FINISHCOLOR);
- grx_disc(Maze.Beacon.X, Maze.Beacon.Y, 10, 7);
- for (i=0; i<Maze.NBoxs; i++)
- {
- if (Maze.Boxs[i].Type==BOX_NON_BLOCK)
- grx_box(Maze.Boxs[i].X1, Maze.Boxs[i].Y1,
- Maze.Boxs[i].X2, Maze.Boxs[i].Y2, NONBLOCKCOLOR);
- if (Maze.Boxs[i].Type==BOX_BLOCK)
- grx_box(Maze.Boxs[i].X1, Maze.Boxs[i].Y1,
- Maze.Boxs[i].X2, Maze.Boxs[i].Y2, BLOCKCOLOR);
- }
- return OK;
-}
-
-int Init_Motor(int NMouse, int Motor, int Radius)
-{
- if ((NMouse<0) || (NMouse>=MAX_MOUSES))
- return ILEGAL_PARAMETER;
- if ((Motor<0) || (Motor>=2))
- return ILEGAL_PARAMETER;
- Mouse[NMouse].Motors[Motor].Radius=Radius;
- Mouse[NMouse].Motors[Motor].V=0;
- Mouse[NMouse].Motors[Motor].Old_V=0.0;
- return OK;
-}
-
-// Init_Mouse - inicialize the parameters of each mouse
-// NMouse - Identifier of the mouse
-// X - Coordinate X of the center
-// Y - Coordinate Y of the center
-// Radius - Radius of the mouse (size)
-// Dir - Angle of direction in witch i will start
-// NSensors - Number of sensors in the mouse (all types)
-//
-// Return: OK - Sucess
-// ILEGAL_PARAMETER - If NMouse negative of greater than maximum number of mouses
-// Note: All the types of sensors and motors are initialize to NONE
-
-int Init_Mouse(int NMouse, int X, int Y, int Radius, int Dir, int NSensors)
-{
- int i;
- if ((NMouse<0) || (NMouse>=MAX_MOUSES))
- return ILEGAL_PARAMETER;
- if ((NSensors<0) || (NSensors>MAX_SENSORS))
- return ILEGAL_PARAMETER;
- Mouse[NMouse].X=(float)X+LAB_XMIN;
- Mouse[NMouse].Y=(float)Y+LAB_YMIN;
- Mouse[NMouse].Radius=Radius;
- Mouse[NMouse].Dir=Dir;
- Mouse[NMouse].Old_Dir=Mouse[NMouse].Dir;
- Mouse[NMouse].NSensors=NSensors;
- Mouse[NMouse].Old_X=Mouse[NMouse].X;
- Mouse[NMouse].Old_Y=Mouse[NMouse].Y;
- Mouse[NMouse].NColision=0;
- Mouse[NMouse].PColision=0;
- for(i=0; i < Mouse[NMouse].NSensors; i++)
- Mouse[NMouse].Sensors[i].Type=NONE;
-
- Init_Motor(NMouse, MOTOR_LEFT, 10);
- Init_Motor(NMouse, MOTOR_RIGHT, -10);
-
- return OK;
-}
-
-// Init_Sensor - Initializes the sensor information
-// NMouse - Identifier of the mouse
-// Sensor - Identifier of the sensor to be used
-// Type - Type of sensor ( Ground, obstacle or beacon sensor )
-// Radius and Pos_Angle - Polar coordinates to determen the sensor position
-// Dir - Diretion of the sensor ( angle between the front and the sensor )
-// Angle - Half of the visual range
-// Intensity - Maximun distance of detect
-int Init_Sensor(int NMouse, int Sensor, int Type, int Radius,
- int Pos_Angle, int Dir, int Angle, int Intensity)
-{
- if ((NMouse<0) || (NMouse>=MAX_MOUSES))
- return ILEGAL_PARAMETER;
- if ((Sensor<0) || (Sensor>=Mouse[NMouse].NSensors))
- return ILEGAL_PARAMETER;
- Mouse[NMouse].Sensors[Sensor].Type=Type;
- Mouse[NMouse].Sensors[Sensor].Radius=Radius;
- Mouse[NMouse].Sensors[Sensor].Pos_Angle=Pos_Angle;
- Mouse[NMouse].Sensors[Sensor].Dir=Dir;
- Mouse[NMouse].Sensors[Sensor].Angle=Angle;
- Mouse[NMouse].Sensors[Sensor].Intensity=Intensity;
- if (Type == GROUND)
- Mouse[NMouse].Sensors[Sensor].Value=(float)SENSOR_MIN_GROUND;
- if (Type == OBSTACLE)
- Mouse[NMouse].Sensors[Sensor].Value=(float)SENSOR_MIN_OBSTACLE;
- if (Type == BEACON)
- Mouse[NMouse].Sensors[Sensor].Value=(float)SENSOR_MIN_BEACON;
- return OK;
-}
-
-int Set_Motor_Vel(int NMouse, int NMotor, int Vel)
-{
- if ((NMouse<0) || (NMouse>=MAX_MOUSES))
- return ILEGAL_PARAMETER;
- if ((NMotor<0) || (NMotor>2))
- return ILEGAL_PARAMETER;
- Mouse[NMouse].Motors[NMotor].V=Vel;
- return OK;
-}
-
-int Read_Sensor(int NMouse, int NSensor)
-{
- int X, Y, Dir, cr, sr, AuxX, AuxY;
- int Count, AuxCount, AngCount, AuxAngCount, RetColor, Intensity;
- float Auxf;
-
- /* Inicial verifications */
- if ((NMouse<0) || (NMouse>=MAX_MOUSES))
- return ILEGAL_PARAMETER;
- if ((NSensor<0) || (NSensor>Mouse[NMouse].NSensors))
- return ILEGAL_PARAMETER;
-
- /* If Sensor Not define exit */
- if ( Mouse[NMouse].Sensors[NSensor].Type == NONE )
- return OK;
-
- /* Calculate de position of the sensor and is direction */
- Dir=(int)Mouse[NMouse].Old_Dir+Mouse[NMouse].Sensors[NSensor].Dir;
- if (Dir >= 360)
- Dir -= 360;
- if (Dir < 0)
- Dir += 360;
- X= Mouse[NMouse].Old_X*65536.0+((Mouse[NMouse].Sensors[NSensor].Radius*Seno[Dir+90]));
- Y= Mouse[NMouse].Old_Y*65536.0+((Mouse[NMouse].Sensors[NSensor].Radius*Seno[Dir]));
-
- /* if the Sensor type is OBSTACLE */
- if ( Mouse[NMouse].Sensors[NSensor].Type == OBSTACLE )
- {
- Intensity=Mouse[NMouse].Sensors[NSensor].Intensity;
- AuxCount=Intensity;
- /* Scan all the visual field */
- for (AngCount=(-Mouse[NMouse].Sensors[NSensor].Angle);
- AngCount<=Mouse[NMouse].Sensors[NSensor].Angle;
- AngCount++)
- {
- AuxAngCount=Dir+AngCount;
- if (AuxAngCount >= 360)
- AuxAngCount -= 360;
- if (AuxAngCount < 0)
- AuxAngCount += 360;
- sr=Seno[AuxAngCount];
- cr=Seno[AuxAngCount+90];
- Count=Mouse[NMouse].Radius-Mouse[NMouse].Sensors[NSensor].Radius+2;
- AuxX = X+cr*Count;
- AuxY = Y+sr*Count;
- for (; Count<=AuxCount; Count++)
- {
- AuxX += cr;
- AuxY += sr;
- RetColor = grx_getpixel(AuxX >> 16, AuxY >> 16);
- if ((RetColor != BACKCOLOR)&&(RetColor != FINISHCOLOR))
- AuxCount=Count;
- }
- }
- Count=Mouse[NMouse].Sensors[NSensor].Intensity;
- Count*=Count;
- AuxCount*=AuxCount;
- Count = SENSOR_MAX_OBSTACLE-((SENSOR_MAX_OBSTACLE-SENSOR_MIN_OBSTACLE)
- *AuxCount)/Count;
- Mouse[NMouse].Sensors[NSensor].Value=
- (0.5*Mouse[NMouse].Sensors[NSensor].Value+0.5*(float)Count);
- }
- if ( Mouse[NMouse].Sensors[NSensor].Type == GROUND )
- {
- Mouse[NMouse].Sensors[NSensor].Value=(float)SENSOR_MIN_GROUND;
- AuxX=abs((X>>16)-Maze.Beacon.X);
- AuxY=abs((Y>>16)-Maze.Beacon.Y);
- if ((AuxX>50) || (AuxY>50))
- return OK;
- if ((AuxX*AuxX+AuxY*AuxY)<Maze.Radius*Maze.Radius)
- Mouse[NMouse].Sensors[NSensor].Value=(float)SENSOR_MAX_GROUND;
- }
-
- if ( Mouse[NMouse].Sensors[NSensor].Type == BEACON )
- {
- AuxX=(X>>16)-Maze.Beacon.X;
- AuxY=(Y>>16)-Maze.Beacon.Y;
- AngCount=0;
- if (AuxX!=0)
- {
- AuxAngCount=(AuxY<<16)/AuxX;
- if (AuxAngCount<0)
- AngCount=90;
- for (Count=AngCount;Count<AngCount+90;Count++)
- {
- if ((Tang[Count]<=AuxAngCount) && (Tang[Count+1]>AuxAngCount))
- break;
- }
- }
- else
- Count=90;
- if (AuxY<0)
- Count+=180;
- AuxAngCount=abs(180-abs(Dir-Count));
- Count=SENSOR_MIN_BEACON;
- if (AuxAngCount<Mouse[NMouse].Sensors[NSensor].Angle)
- {
- Count=AuxX*AuxX+AuxY*AuxY;
- AuxCount=(int)((float)Maze.Beacon.Intensity*(1.0+(0.4*(float)AuxAngCount)/(float)Mouse[NMouse].Sensors[NSensor].Angle));
- AuxCount*=AuxCount;
- if (Count<AuxCount)
- Count = SENSOR_MAX_OBSTACLE-((SENSOR_MAX_OBSTACLE-SENSOR_MIN_OBSTACLE)*Count)/AuxCount;
- else
- Count=SENSOR_MIN_BEACON;
- }
- Auxf=0.5*((float)Count);
- Auxf+=0.5*((float)Mouse[NMouse].Sensors[NSensor].Value);
- Mouse[NMouse].Sensors[NSensor].Value=Auxf;
- }
- return OK;
-}
-
-int GetSensor(int NMouse, int NSensor)
-{
- if ((NMouse<0) || (NMouse>=MAX_MOUSES))
- return ILEGAL_PARAMETER;
- if ((NSensor<0) || (NSensor>Mouse[NMouse].NSensors))
- return ILEGAL_PARAMETER;
- return (int)Mouse[NMouse].Sensors[NSensor].Value;
-}
-
-int Draw_Mouse(int NMouse, int Flag)
-{
- int Color;
- if (!Flag)
- Color=BACKCOLOR;
- else
- {
- Mouse[NMouse].Old_X=Mouse[NMouse].X;
- Mouse[NMouse].Old_Y=Mouse[NMouse].Y;
- Mouse[NMouse].Old_Dir=Mouse[NMouse].Dir;
- Color=2;
- }
- grx_circle(Mouse[NMouse].Old_X, Mouse[NMouse].Old_Y, Mouse[NMouse].Radius, Color);
- grx_line(Mouse[NMouse].Old_X, Mouse[NMouse].Old_Y,
- Mouse[NMouse].Old_X+((Mouse[NMouse].Radius*Seno[(int)Mouse[NMouse].Old_Dir+90]) >> 16),
- Mouse[NMouse].Old_Y+((Mouse[NMouse].Radius*Seno[(int)Mouse[NMouse].Old_Dir]) >> 16), Color);
- return OK;
-}
-
-TASK Redraw_Mouse_Task(int NMouse)
-{
- char str[40];
- TIME dwTicks;
- while(1)
- {
- dwTicks=sys_gettime(NULL);
- Draw_Mouse(NMouse, FALSE);
- Draw_Mouse(NMouse, TRUE);
- sprintf(str,"Colision: %4d", (int)Mouse[NMouse].NColision);
- grx_text(str, NMouse*150, 21, 7, 0);
- sprintf(str,"Motor: %4d Sensor 0: %4d Sensor 1: %4d Sensor 2: %4d Sensor 3: %4d",
- (int)Mouse[NMouse].Motors[0].Old_V+(int)Mouse[NMouse].Motors[1].Old_V,
- (int)Mouse[NMouse].Sensors[0].Value, (int)Mouse[NMouse].Sensors[1].Value,
- (int)Mouse[NMouse].Sensors[2].Value, (int)Mouse[NMouse].Sensors[3].Value);
- if (NMouse==0)
- grx_text(str, 1, 1, 7, 0);
- sprintf(str,"Sensor 4: %4d Sensor 5: %4d Ticks: %4d",
- (int)Mouse[NMouse].Sensors[4].Value, (int)Mouse[NMouse].Sensors[5].Value,
- (int)(sys_gettime(NULL)-dwTicks)/1000);
- if (NMouse==0)
- grx_text(str, 1, 11, 7, 0);
- task_endcycle();
- }
-}
-
-TASK Redraw_Maze_Task(void)
-{
- while(1)
- {
- Draw_Maze();
- task_endcycle();
- }
-}
-
-TASK Referee(void)
-{
- int Counter, Box_Min_X, Box_Max_X ,Box_Min_Y, Box_Max_Y;
- int deltaX, deltaY, Radius;
- int Colision;
- int NMouse;
-
- while(1)
- {
- for(NMouse=0;NMouse<NMouses;NMouse++)
- {
- Colision=0;
- Radius=Mouse[NMouse].Radius;
- if(Mouse[NMouse].Y<(Maze.Y1+Radius))
- Colision++;
- if(Mouse[NMouse].Y>(Maze.Y2-Radius))
- Colision++;
- if(Mouse[NMouse].X<(Maze.X1+Radius))
- Colision++;
- if(Mouse[NMouse].X>(Maze.X2-Radius))
- Colision++;
- for(Counter=0; Counter<Maze.NBoxs; Counter++)
- {
- Box_Min_X=Maze.Boxs[Counter].X1-1;
- Box_Max_X=Maze.Boxs[Counter].X2+1;
- Box_Min_Y=Maze.Boxs[Counter].Y1-1;
- Box_Max_Y=Maze.Boxs[Counter].Y2+1;
- Radius=Mouse[NMouse].Radius;
- if(Mouse[NMouse].Y<(Box_Min_Y-Radius))
- continue;
- if(Mouse[NMouse].Y>(Box_Max_Y+Radius))
- continue;
- if(Mouse[NMouse].X<(Box_Min_X-Radius))
- continue;
- if(Mouse[NMouse].X>(Box_Max_X+Radius))
- continue;
- if((Mouse[NMouse].X>=Box_Min_X) && (Mouse[NMouse].X<=Box_Max_X))
- if((Mouse[NMouse].Y>=(Box_Min_Y-Radius))
- && (Mouse[NMouse].Y<=(Box_Max_Y+Radius)))
- Colision++;
- if((Mouse[NMouse].Y>=Box_Min_Y) && (Mouse[NMouse].Y<=Box_Max_Y))
- if((Mouse[NMouse].X>=(Box_Min_X-Radius))
- && (Mouse[NMouse].X<=(Box_Max_X+Radius)))
- Colision++;
- Radius=sqr(Radius);
- deltaX=sqr(Mouse[NMouse].X-Box_Min_X);
- deltaY=sqr(Mouse[NMouse].Y-Box_Min_Y);
- if(deltaX+deltaY<=Radius)
- Colision++;
- deltaY=sqr(Mouse[NMouse].Y-Box_Max_Y);
- if(deltaX+deltaY<=Radius)
- Colision++;
- deltaX=sqr(Mouse[NMouse].X-Box_Max_X);
- deltaY=sqr(Mouse[NMouse].Y-Box_Min_Y);
- if(deltaX+deltaY<=Radius)
- Colision++;
- deltaY=sqr(Mouse[NMouse].Y-Box_Max_Y);
- if(deltaX+deltaY<=Radius)
- Colision++;
- }
- if (Mouse[NMouse].PColision && !Colision)
- Mouse[NMouse].NColision++;
-
- Mouse[NMouse].PColision=Colision;
- }
- task_endcycle();
- }
- return (void *)0;
-}
-
-TASK Calculate_Position(int NMouse)
-{
- float w, v, dt;
- int b;
- while(1)
- {
- b=(Mouse[NMouse].Motors[MOTOR_LEFT].Radius-
- Mouse[NMouse].Motors[MOTOR_RIGHT].Radius);
- if (b<0)
- b=-b;
- w=(Mouse[NMouse].Motors[MOTOR_LEFT].Old_V-
- Mouse[NMouse].Motors[MOTOR_RIGHT].Old_V);
- w/=(float)b;
- v=(Mouse[NMouse].Motors[MOTOR_LEFT].Old_V+
- Mouse[NMouse].Motors[MOTOR_RIGHT].Old_V);
- v/=2.0;
- dt=CALC_PERIOD/1000000.0;
- Mouse[NMouse].Dir += (180.0*w/PI)*dt;
- if (Mouse[NMouse].Dir >= 360)
- Mouse[NMouse].Dir -= 360;
- if (Mouse[NMouse].Dir < 0)
- Mouse[NMouse].Dir += 360;
- v *= dt/65536.0;
- b=(float)Seno[(int)Mouse[NMouse].Dir+90];
- Mouse[NMouse].X += v*b;
- b=(float)Seno[(int)Mouse[NMouse].Dir];
- Mouse[NMouse].Y += v*b;
- Mouse[NMouse].Motors[0].Old_V=
- (0.8187*Mouse[NMouse].Motors[0].Old_V+
- 0.1813*(float)Mouse[NMouse].Motors[0].V);
- Mouse[NMouse].Motors[1].Old_V=
- (0.8187*Mouse[NMouse].Motors[1].Old_V+
- 0.1813*(float)Mouse[NMouse].Motors[1].V);
- task_endcycle();
- }
-}
-
-#define SENSOR_LEFT 0
-#define SENSOR_FRONT 1
-#define SENSOR_RIGTH 2
-#define SENSOR_GROUND 3
-#define SENSOR_B_LEFT 4
-#define SENSOR_B_RIGHT 5
-#define MAX_SPEED 50
-#define DIST_DIR GetSensor(NMouse, SENSOR_RIGTH)
-#define DIST_ESQ GetSensor(NMouse, SENSOR_LEFT)
-#define DIST_FRENTE GetSensor(NMouse, SENSOR_FRONT)
-#define FAROL_ESQ GetSensor(NMouse, SENSOR_B_LEFT)
-#define FAROL_DIR GetSensor(NMouse, SENSOR_B_RIGHT)
-#define FAROL_LIM_INF SENSOR_MIN_BEACON+5
-
-#define DIST0 88 //Distancia minima optima
-#define DIST1 DIST0 + 5 // 60%
-#define DIST2 DIST1 + 10 // PARADO
-#define DIST3 DIST2 + 10 // TRAS
-
-#define DISTMAX 120
-#define NENHUM 0
-#define ESQUERDA 1
-#define DIREITA 2
-#define contorno ContornoArr[NMouse]
-
-TASK MouseTask(int NMouse)
-{
- int i;
- //char str[100];
- unsigned char flag;
- static unsigned char ContornoArr[MAX_MOUSES];
- signed char modulo;
-
- Init_Sensor(NMouse, SENSOR_LEFT, OBSTACLE, 14, -45, -45, 25, 15); // Left
- Init_Sensor(NMouse, SENSOR_FRONT, OBSTACLE, 14, 0, 0, 25, 15); // Center
- Init_Sensor(NMouse, SENSOR_RIGTH, OBSTACLE, 14, 45, 45, 25, 15); // Rigth
- Init_Sensor(NMouse, SENSOR_GROUND, GROUND, 10, 180, 180, 0, 20); // Ground
- Init_Sensor(NMouse, SENSOR_B_LEFT, BEACON, 4, -45, -25, 30, 0); // Left
- Init_Sensor(NMouse, SENSOR_B_RIGHT, BEACON, 4, 45, 25, 30, 0); // Rigth
- contorno = NENHUM;
- Mouse[NMouse].Flag=1;
-
- while(1)
- {
- for(i=0; i<8; i++)
- Read_Sensor(NMouse, i);
- Set_Motor_Vel(NMouse, MOTOR_RIGHT, MAX_SPEED);
- Set_Motor_Vel(NMouse, MOTOR_LEFT, MAX_SPEED);
-
- flag = ((DIST_DIR>DIST3) && contorno==ESQUERDA) ||
- ((DIST_ESQ>DIST3) && contorno==DIREITA);
-
- if ( (DIST_FRENTE>DISTMAX) || flag) {
- Set_Motor_Vel(NMouse, MOTOR_RIGHT, MAX_SPEED/2);
- Set_Motor_Vel(NMouse, MOTOR_LEFT, MAX_SPEED/2);
- if (contorno == ESQUERDA)
- Set_Motor_Vel(NMouse, MOTOR_RIGHT, -MAX_SPEED/2);
- else
- Set_Motor_Vel(NMouse, MOTOR_LEFT, -MAX_SPEED/2);
- }
- else {
-
- // ---------------- Contorno da Esquerda ---------------
- if (contorno!=DIREITA){
- if (DIST_ESQ>DIST1) { // Sensor da esquerda
- contorno = ESQUERDA;
- if (DIST_ESQ>DIST3) {
- Set_Motor_Vel(NMouse, MOTOR_RIGHT, -MAX_SPEED/2);
- Set_Motor_Vel(NMouse, MOTOR_LEFT, MAX_SPEED/2);
- }
- else
- if (DIST_ESQ>DIST2)
- Set_Motor_Vel(NMouse, MOTOR_RIGHT, 10);
- else
- Set_Motor_Vel(NMouse, MOTOR_RIGHT, MAX_SPEED*3/4);
- }
- else
- if (contorno== ESQUERDA) {
- if(DIST_ESQ<DIST0)
- Set_Motor_Vel(NMouse, MOTOR_LEFT, MAX_SPEED*3/10);
- }
- }
-
- // ---------------- Contorno da Direita ---------------
- if (contorno!=ESQUERDA){
- if (DIST_DIR>DIST1) { // Sensor da direita
- contorno = DIREITA;
- if (DIST_DIR>DIST3) {
- Set_Motor_Vel(NMouse, MOTOR_RIGHT, MAX_SPEED/2);
- Set_Motor_Vel(NMouse, MOTOR_LEFT, -MAX_SPEED/2);
- }
- else
- if (DIST_DIR>DIST2)
- Set_Motor_Vel(NMouse, MOTOR_LEFT, 10);
- else
- Set_Motor_Vel(NMouse, MOTOR_LEFT, MAX_SPEED*3/4);
- }
- else
- if (contorno== DIREITA) {
- if (DIST_DIR<DIST0)
- Set_Motor_Vel(NMouse, MOTOR_RIGHT, MAX_SPEED*3/10);
- }
- }
-
- // --------------- Desempancar contornos com o farol ------------
-
- if ((contorno == ESQUERDA && FAROL_DIR > FAROL_ESQ && FAROL_DIR > FAROL_LIM_INF) ||
- (contorno == DIREITA && FAROL_ESQ > FAROL_DIR && FAROL_ESQ > FAROL_LIM_INF) )
- contorno = NENHUM;
-
-
-
- if (contorno == NENHUM)
- {
- modulo = FAROL_DIR - FAROL_ESQ;
- if (modulo < 0 )
- modulo = - modulo;
-
- // Se nao estiver na direçao certa, ajustar
- if (modulo > 10) {
- if (FAROL_DIR > FAROL_ESQ)
- Set_Motor_Vel(NMouse, MOTOR_RIGHT, 0);
- else
- Set_Motor_Vel(NMouse, MOTOR_LEFT, 0);
- }
- else //velocidade controlada
- if (modulo > 2) {
- if (FAROL_DIR > FAROL_ESQ)
- Set_Motor_Vel(NMouse, MOTOR_RIGHT, MAX_SPEED*6/10);
- else
- Set_Motor_Vel(NMouse, MOTOR_LEFT, MAX_SPEED*6/10);
- }
- }
- }
- if (GetSensor(NMouse, SENSOR_GROUND)==SENSOR_MAX_GROUND)
- {
- Set_Motor_Vel(NMouse, MOTOR_RIGHT, 0);
- Set_Motor_Vel(NMouse, MOTOR_LEFT, 0);
- }
-
- task_endcycle();
- }
- return (void *)0;
-}
-
-void my_end(void *arg)
-{
- grx_close();
-}
-
-/* --------------------------------- Main program -----------------------------*/
-
-int main(int argc, char *argv[])
-{
- int i;
- char c;
- int pid;
-
- HARD_TASK_MODEL mp;
- SOFT_TASK_MODEL ms;
-
- // char StrAux[15];
-
- set_exchandler_grx();
-
- for (i=0; i<NMouses; i++)
- Mouse[i].Flag=0;
- for (i=0; i<(360+90); i++) // Inicializar a tabela de senos
- Seno[i]=(int)(65536.0*sin((float)i/180.0*PI));
-
- for (i=0; i<180; i++) // Inicializar a tabela de tangente
- if (i!=90)
- Tang[i]=(int)(((float)Seno[i]/(float)Seno[i+90])*65536.0);
- else
- Tang[i]=INT_MAX;
-
- // Definir fun‡Æo de saida
- sys_atrunlevel(my_end, (void *)NULL, RUNLEVEL_BEFORE_EXIT);
-
- hard_task_default_model(mp);
- hard_task_def_usemath(mp);
- hard_task_def_group(mp, MOUSEGROUP);
- hard_task_def_wcet(mp, 1); // wcet ignored by the configuration file!
-
- soft_task_default_model(ms);
- soft_task_def_group(ms, MOUSEGROUP);
- soft_task_def_met(ms, 1000);
-
- for (i=0;i<NMouses;i++)
- {
- hard_task_def_arg(mp, (void *)i);
- soft_task_def_arg(ms, (void *)i);
-
- hard_task_def_mit(mp, MOUSE_PERIOD);
- pid = task_create("Mouse", MouseTask, &mp, NULL);
- if (pid == NIL)
- {
- perror("Creating Mouse:");
- sys_end();
- }
-
- hard_task_def_mit(mp, CALC_PERIOD);
- pid = task_create("Calc", Calculate_Position, &mp, NULL);
- if (pid == NIL)
- {
- perror("Creating Calc:");
- sys_end();
- }
-
- soft_task_def_period(ms, REDRAW_MOUSE_PERIOD);
- pid = task_create("Redraw_Mouse", Redraw_Mouse_Task, &ms, NULL);
- if (pid == NIL)
- {
- perror("Creating Redraw_Moude:");
- sys_end();
- }
- }
-
- hard_task_def_mit(mp, REFEREE_PERIOD);
- pid = task_create("Referee1", Referee, &mp, NULL);
-
- hard_task_def_mit(mp, REDRAW_MAZE_PERIOD);
- pid = task_create("Redraw_Maze", Redraw_Maze_Task, &mp, NULL);
-
- grx_open(640,480,8);
- group_activate(MOUSEGROUP);
- do
- {
- c = keyb_getch(BLOCK);
- } while (c != ESC);
-
- task_nopreempt();
- sys_end();
- return 0;
-}
-
-/* the buffer b is scannedc to search for numbers
- at the first non-number the function stops */
-void geti(char *b, int *pos, int *res)
-{
- // skip first chars
- while (!isdigit(b[*pos]))
- (*pos)++;
-
-
- // read the numbers
- *res = 0;
- do {
- *res = (*res * 10) + b[*pos] - '0';
- (*pos)++;
- } while (isdigit(b[*pos]));
-}
-
-void read_cfg_file(int argc, char **argv)
-{
- int i, err, Temp1, Temp2, Temp3, Temp4, Temp5;
- DOS_FILE *fp;
- char myfilebuf[1000];
- int myfilebuf_length;
-
- int pos = 0;
-
- if (argc==2) {
- fp = DOS_fopen(argv[1],"r");
-
- if (fp) {
- /* read up to 1000 chars */
- myfilebuf_length = DOS_fread(&myfilebuf,1,1000,fp);
-
- /* check for errors */
- err = DOS_error();
-
- cprintf("Read %d bytes...\n", myfilebuf_length);
-
- if (err) {
- cprintf("Error %d reading file...Using default values\n", err);
- }
- else
- {
- geti(myfilebuf, &pos, &NMouses); // Number of Mouses
- for (i=0;i<NMouses;i++) {
- geti(myfilebuf, &pos, &Temp1); // Mouse X coordinate
- geti(myfilebuf, &pos, &Temp2); // Mouse Y coordinate
- geti(myfilebuf, &pos, &Temp3); // Mouse radius
- geti(myfilebuf, &pos, &Temp4); // Mouse orientation
- Init_Mouse(i, Temp1, Temp2, Temp3, Temp4, 6);
- }
- geti(myfilebuf, &pos, &Temp1); // Beacon X coordinate
- geti(myfilebuf, &pos, &Temp2); // Beacon Y coordinate
- geti(myfilebuf, &pos, &Temp3); // Beacon intensity
- geti(myfilebuf, &pos, &i); // Number of boxs
- Init_Maze(Temp1, Temp2, Temp3, i);
- for(; i>0; i--) {
- geti(myfilebuf, &pos, &Temp1); // Box X1 Coordinate
- geti(myfilebuf, &pos, &Temp2); // Box Y1 Coordinate
- geti(myfilebuf, &pos, &Temp3); // Box X2 Coordinate
- geti(myfilebuf, &pos, &Temp4); // Box Y2 Coordinate
- geti(myfilebuf, &pos, &Temp5); // Type of Box
- if (Temp5)
- Init_Box(i-1, Temp1, Temp2, Temp3, Temp4, BOX_BLOCK);
- else
- Init_Box(i-1, Temp1, Temp2, Temp3, Temp4, BOX_NON_BLOCK);
- }
- DOS_fclose(fp);
- return;
- }
- }
- else {
- /* error!! */
- err = DOS_error();
- /* note that if you call DOS_error() here, it return 0!!! */
- cprintf("Error %d opening myfile.txt...Using default values\n", err);
- }
-
- // Default value if no file is passed
- NMouses=2;
- Init_Maze(500, 350, 400, 1);
- Init_Box(0, 200, 200, 300, 250, BOX_NON_BLOCK);
- Init_Mouse(0, 100, 100, 15, 45, 6);
- Init_Mouse(1, 100, 150, 15, 90, 6);
- }
- else {
- cprintf("Wrong number of arguments...\n");
- l1_exit(0);
- }
-}
Index: pj/robots/lab.txt
===================================================================
--- pj/robots/lab.txt (revision 1344)
+++ pj/robots/lab.txt (nonexistent)
@@ -1,10 +0,0 @@
-2
-530 380 15 270
-480 380 15 270
-380 300 400 5
-430 060 460 400 0
-350 100 430 130 0
-000 100 300 130 0
-150 200 430 230 0
-120 300 150 400 0
-
Index: pj/robots/readme
===================================================================
--- pj/robots/readme (revision 1344)
+++ pj/robots/readme (nonexistent)
@@ -1,9 +0,0 @@
-Robots demo
------------
-
-This demo has been developed in the University of Alveiro, Portugal.
-
-See the included PDF files for more informations.
-
-Paolo
-pj@sssup.it
Index: pj/robots/makefile
===================================================================
--- pj/robots/makefile (revision 1344)
+++ pj/robots/makefile (nonexistent)
@@ -1,16 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS = mouse2
-
-include $(BASE)/config/example.mk
-
-mouse2:
- make -f $(SUBMAKE) APP=mouse2 INIT= OTHEROBJS="initfile.o" OTHERINCL=
-
Index: pj/robots/lab3.txt
===================================================================
--- pj/robots/lab3.txt (revision 1344)
+++ pj/robots/lab3.txt (nonexistent)
@@ -1,11 +0,0 @@
-3
-540 380 15 270
-510 380 15 270
-480 380 15 270
-380 300 400 5
-430 060 460 400 0
-350 100 430 130 0
-000 100 300 130 0
-150 200 430 230 0
-120 300 150 400 0
-
Index: pj/robots/initfile.c
===================================================================
--- pj/robots/initfile.c (revision 1344)
+++ pj/robots/initfile.c (nonexistent)
@@ -1,104 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: initfile.c,v 1.1.1.1 2002-09-02 09:37:43 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:43 $
- ------------
-**/
-
-/*
- * Copyright (C) 2001 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-#include "drivers/keyb.h"
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 2000
-
-void read_cfgfile(int);
-
-int argc;
-char *argv[100];
-
-void read_cfg_file(int argc, char **argv);
-
-int main(int argc, char **argv);
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- EDF_register_level(0);
- CBS_register_level(0, 0);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- CABS_register_module();
-
- __compute_args__(mb, &argc, argv);
-
- read_cfg_file(argc, argv);
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- KEYB_PARMS kparms = BASE_KEYB;
-
- HARTPORT_init();
-
- keyb_def_ctrlC(kparms, NULL);
- KEYB_init(&kparms);
-
- return (void *)main(argc,argv);
-}
Index: pj/auto/sensor.c
===================================================================
--- pj/auto/sensor.c (revision 1344)
+++ pj/auto/sensor.c (nonexistent)
@@ -1,650 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * Massimiliano Giorgi <massy@gandalf.sssup.it>
- * Luca Abeni <luca@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-
-/**
- ------------
- CVS : $Id: sensor.c,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Marco Dallera and Marco Fiocca
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-/*
- * AUTO
- *
- * Another Unuseful Track simulatOr
- *
- * Authors: Marco Dallera
- * Marco Fiocca
- *
- */
-
-/* ------------ */
-/* Camera car */
-/* ------------ */
-
-#include "include/auto.h"
-#include "include/const.h"
-#include "include/utils.h"
-#include <drivers/glib.h>
-
-#define RADIUS 1
-#define TOLL_FACTOR 4.0
-#define MIN_DIFF 3
-#define ROAD_COLOR 27
-#define OFFROAD_COLOR 0
-#define DEBUG_COLOR GREEN
-#define OUT_OF_TRACK 230
-#define STRIP_DEFAULT TEL_WIDTH+1
-
-extern sem_t grx_mutex;
-extern car_params cars[MAX_CAR_NUMBER];
-
-void scanline(point_f *buffer, float x1, float y1, float x2, float y2, int factor);
-void get_camera_car(BYTE *buffer, car_status status);
-int find_track(BYTE *image, road_info *info);
-int find_opps(BYTE *image, road_info *info);
-void find_collision(BYTE *image, road_info *info, car_status status);
-
-/* ----------------------------------------------------------------- */
-
-TASK sensor(int index) {
- car_status actual_car_status; // the actual car state
- road_info actual_road_info; // the actual road informations
- BYTE image[TEL_WIDTH*TEL_HEIGHT]; // buffer contenente la visione della telecamera ruotata
-
- point sq1, sq2;
- point im1, im2;
-
- CAB road_status_cab = cars[index].road_status_cab;
- CAB car_status_cab = cars[index].car_status_cab;
-
- // Draws display squares
- sq1.x = TRACK_X1 + TRACK_WIDTH + TEL_HEIGHT;
- sq1.y = TEL_HEIGHT*index + 1 + index;
- sq2.x = sq1.x + TEL_WIDTH + 1;
- sq2.y = sq1.y + TEL_HEIGHT + 1;
-
- // Sets viewer coords
- im1.x = sq1.x + 1;
- im1.y = sq1.y + 1;
- im2.x = im1.x + TEL_WIDTH - 1;
- im2.y = im1.y + TEL_HEIGHT - 1;
-
- // Inizializza il cab della strada
- actual_road_info.left_border = TEL_WIDTH/2;
- actual_road_info.right_border = TEL_WIDTH/2;
- actual_road_info.distance = TEL_HEIGHT;
- actual_road_info.curve = 0.0;
- actual_road_info.opps_number = 0;
- actual_road_info.flag = ROAD_OK;
- actual_road_info.collision = NO_COLL;
- set_road_info(actual_road_info, road_status_cab);
-
- task_endcycle();
-
- while(1) {
- /* reads car informations */
- actual_car_status = get_car_status(car_status_cab);
-
- /* implementazione riconoscimento strada (sti cazzi!!!) */
- get_camera_car(image, actual_car_status);
- find_track(image, &actual_road_info);
- find_opps(image, &actual_road_info);
- find_collision(image, &actual_road_info, actual_car_status);
-
- sem_wait(&grx_mutex);
- grx_rect(sq1.x, sq1.y, sq2.x, sq2.y, cars[index].color);
- grx_putimage(im1.x, im1.y, im2.x, im2.y, image);
- sem_post(&grx_mutex);
-
- /* sends informations to control task */
- set_road_info(actual_road_info, road_status_cab);
- task_endcycle();
- }
-
-}
-
-/* ----------------------------------------------------------------- */
-
-void find_collision(BYTE *image, road_info *info, car_status status)
-{
- point_f lt,rt,lb,rb,ct;
- /* the lines used to scan the quadrilate */
- point_f height_line[CAR_HEIGHT];
- int i;
- BYTE pix;
-
- info->collision = NO_COLL;
-
- ct.x = status.pos.x + (float)(CAR_HEIGHT/2 + 1) * cos(degree_to_rad(status.orient));
- ct.y = status.pos.y - (float)(CAR_WIDTH/2 + 1) * sin(degree_to_rad(status.orient));
-
- lb.x = ct.x - (float)(CAR_WIDTH/2.0) * cos(degree_to_rad(90-status.orient));
- rb.x = ct.x + (float)(CAR_WIDTH/2.0) * cos(degree_to_rad(90-status.orient));
- lt.x = lb.x - (float)(CAR_HEIGHT) * cos(degree_to_rad(status.orient));
- rt.x = rb.x - (float)(CAR_HEIGHT) * cos(degree_to_rad(status.orient));
-
- lb.y = ct.y - (float)(CAR_WIDTH/2.0) * sin(degree_to_rad(90-status.orient));
- rb.y = ct.y + (float)(CAR_WIDTH/2.0) * sin(degree_to_rad(90-status.orient));
- lt.y = lb.y + (float)(CAR_HEIGHT) * sin(degree_to_rad(status.orient));
- rt.y = rb.y + (float)(CAR_HEIGHT) * sin(degree_to_rad(status.orient));
-
- sem_wait(&grx_mutex);
- scanline(height_line,rb.x,rb.y,rt.x,rt.y,CAR_HEIGHT);
- for (i=0; i < CAR_HEIGHT; i++) {
- pix = grx_getpixel(round(height_line[i].x),round(height_line[i].y));
- if (pix != OFFROAD_COLOR && pix != ROAD_COLOR)
- info->collision = COLLISION_RIGHT;
- }
- scanline(height_line,lb.x,lb.y,lt.x,lt.y,CAR_HEIGHT);
- for (i=0; i < CAR_HEIGHT; i++) {
- pix = grx_getpixel(round(height_line[i].x),round(height_line[i].y));
- if (pix != OFFROAD_COLOR && pix != ROAD_COLOR)
- info->collision = COLLISION_LEFT;
- }
- sem_post(&grx_mutex);
-
-}
-
-/* ----------------------------------------------------------------- */
-
-/* Puts in a buffer the image viewed from the camera according to the car status */
-void get_camera_car(BYTE *buffer, car_status status) {
- /*
- * lt ------ rt
- * | |
- * | |
- * lb --ct-- rb
- */
- point_f lt,rt,lb,rb,ct;
- /* the lines used to scan the quadrilate */
- point_f width_line[TEL_WIDTH];
- point_f height_line[TEL_HEIGHT];
- int i,j;
- int tmpx,tmpy,tx,ty;
- float x,y;
- BYTE *row;
-
- ct.x = status.pos.x + (float)(CAR_WIDTH/2 + 1) * cos(degree_to_rad(status.orient));
- ct.y = status.pos.y - (float)(CAR_WIDTH/2 + 1) * sin(degree_to_rad(status.orient));
-
- /* for now the visual starts from the center of the car */
- lb.x = ct.x - (float)(TEL_WIDTH/2.0) * cos(degree_to_rad(90-status.orient));
- rb.x = ct.x + (float)(TEL_WIDTH/2.0) * cos(degree_to_rad(90-status.orient));
- lt.x = lb.x + (float)(TEL_HEIGHT) * cos(degree_to_rad(status.orient));
- rt.x = rb.x + (float)(TEL_HEIGHT) * cos(degree_to_rad(status.orient));
-
- lb.y = ct.y - (float)(TEL_WIDTH/2.0) * sin(degree_to_rad(90-status.orient));
- rb.y = ct.y + (float)(TEL_WIDTH/2.0) * sin(degree_to_rad(90-status.orient));
- lt.y = lb.y - (float)(TEL_HEIGHT) * sin(degree_to_rad(status.orient));
- rt.y = rb.y - (float)(TEL_HEIGHT) * sin(degree_to_rad(status.orient));
-
- /* scan only 2 sense thanks to parallelism */
- /* ^ <-(height)
- * ! lt
- * ! |
- * ! |
- * ! lb ------ rb )
- * 0 -------------> <-(width
- */
- /* the width_line coordinates are relative, so in the for cycle
- they are summarized to absolute height_line values */
- scanline(width_line,0,0,rb.x - lb.x,rb.y - lb.y,TEL_WIDTH);
- scanline(height_line,lb.x,lb.y,lt.x,lt.y,TEL_HEIGHT);
-
- /* First fill row TEL_HEIGHT-1 of image and so on until row 0 */
- sem_wait(&grx_mutex);
- for (i=0; i < TEL_HEIGHT; i++) {
- x = height_line[i].x;
- y = height_line[i].y;
- row = &buffer[TEL_WIDTH * (TEL_HEIGHT-1-i)];
- for (j=0; j < TEL_WIDTH; j++) {
- tmpx = round(x + width_line[j].x);
- tmpy = round(y + width_line[j].y);
-
- // Test rispetto ai bordi
- if (tmpx >= 0 && tmpx < SCREEN_WIDTH && tmpy >= 0 && tmpy < SCREEN_HEIGHT) {
- tx = tmpx - TRACK_X1-1;
- ty = tmpy - TRACK_Y1-1;
- if (tx >= 0 && tx < TRACK_WIDTH && ty >= 0 && ty < TRACK_HEIGHT)
- row[j] = grx_getpixel(tmpx,tmpy);
- else
- row[j] = OUT_OF_TRACK;
- } else {
- row[j] = OUT_OF_TRACK;
- }
- }
- }
- sem_post(&grx_mutex);
-}
-
-/* ----------------------------------------------------------------- */
-
-void scanline(point_f *buffer, float x1, float y1, float x2, float y2, int factor) {
- int i;
- float x,y;
- float xstep,ystep;
-
- xstep = (x2 - x1) / factor;
- ystep = (y2 - y1) / factor;
-
- // Start scan at <x1, y1>
- x = x1;
- y = y1;
-
- for (i = 0; i < factor; i++) {
- buffer[i].x = x;
- buffer[i].y = y;
- x += xstep;
- y += ystep;
- }
-}
-
-/* ----------------------------------------------------------------- */
-
-/*
- * Approssima la curva quando non è più possibile farlo con la scansione
- * orizzontale
- * - image
- * - index l'indice da cui cominciare la ricerca della curva
- * - distance la distanza dalla curva
- */
-float approx_curve(BYTE *image, int index, int distance, int d_center, road_strip *strips) {
- BYTE *p,tmp;
- int i,j,k,ctrl=0;
- point ms_center,ct;
-
- // Decide se la curva e' verso sinistra o verso destra
- p = &image[(TEL_HEIGHT - index - 1) * TEL_WIDTH];
-
- ms_center.x = strips[index-1].left;
- for (i = 0; i < min(3,strips[index-1].left); i++) {
- // La curva è a destra
- tmp = *(p + round(ms_center.x) - i);
- if (tmp != ROAD_COLOR) {
- ms_center.x = strips[index-1].right;
- break;
- }
- }
-
- p += round(ms_center.x);
- // Scandisce la colonna fino alla fine della strada
- for (i = index; i < TEL_HEIGHT; i++, p -= TEL_WIDTH) {
- if (*p != ROAD_COLOR) break;
- }
-
- // Imposta il nuovo max_scost empirico
- ms_center.y = (i-1 + index) / 2;
-
- // i-1 è l'indice dell'ultima riga bianca
- p = &image[(TEL_HEIGHT - (i-1) - 1) * TEL_WIDTH + round(ms_center.x)];
- // scandisce da destra a sinistra
- if (round(ms_center.x) > 0) {
- for (j = 0; j < (round(ms_center.x) - strips[index-1].left); j++, p--) {
- if (*p != ROAD_COLOR) break;
- // scandisce dall'alto in basso finchè non trova nero
- for (k = i-1; k > index; k--) {
- tmp = *(p + (i-1-k)*TEL_WIDTH);
- if (tmp != ROAD_COLOR) {
- ms_center.y = (k + index) / 2;
- ctrl = 1;
- break;
- }
- }
- if (ctrl) break;
- }
- ct.x = ms_center.x - j/2;
- ct.y = ms_center.y;
- } else {
- // scandisce da sinistra a destra
- for (j = 0; j < (strips[index-1].right - round(ms_center.x)); j++, p++) {
- if (*p != ROAD_COLOR) break;
- // scandisce dall'alto in basso finchè non trova nero
- for (k = i-1; k > index; k--) {
- tmp = *(p + (i-1-k)*TEL_WIDTH);
- if (tmp != ROAD_COLOR) {
- ms_center.y = (k + index) / 2;
- ctrl = 1;
- break;
- }
- }
- if (ctrl) break;
- }
- ct.x = ms_center.x + j/2;
- ct.y = ms_center.y;
- }
-
- return rad_to_degree(atan2((double)(ct.y - distance),(double)(ct.x - d_center)));
-}
-
-/* ----------------------------------------------------------------- */
-
-int find_distance(road_strip *strips, int max_scost, int rett_tol) {
- int i, distance;
- int center_car = TEL_WIDTH/2;
-
- // La distanza non puo' essere maggiore del max_scost
- distance = max_scost;
-
- for (i=1; i < max_scost; i++) {
- // Calcola la distanza dalla curva
- if (abs(strips[i].center - center_car) > rett_tol) {
- distance = i;
- break;
- }
- }
- return distance;
-}
-
-/* ----------------------------------------------------------------- */
-
-/* Scandisce la linea row e inserisce nella strip index le informazioni.
- * Ritorna 1 se trova entrambi i bordi, altrimenti 0
- */
-int scan_strip(BYTE *row, int index, road_strip *strips) {
- // Tiene conto della posizione dei bordi precedenti per trattare
- // meglio il caso di curve molto strette, dove possono esistere
- // 2 bordi destri o sinistri
-
- // Per evitare problemi nei casi in cui siano possibili 2
- // bordi destri o sinistri
- int lfound = 0;
- int rfound = 0;
- int center_car = TEL_WIDTH/2;
- int i;
-
- // Parte dal secondo pixel e finisce al penultimo
- for(i=1; i < (TEL_WIDTH-1); i++) {
- // Se trova la strada controlla se si tratta di bordo
- // destro o sinistro
- if (row[i] == ROAD_COLOR) {
- // bordo sinistro
- if (row[i - 1] != ROAD_COLOR) {
- // Se ho già trovato questo tipo di bordo cerco
- // quello + plausibile ...
- if (lfound) {
- // Test sulla striscia precedente
- if (index > 0) {
- if (abs(i - strips[index-1].left) <
- abs(strips[index].left - strips[index-1].left))
- strips[index].left = i;
- } else {
- // Test sul centro della macchina
- if (abs(i - center_car) < abs(strips[0].left - center_car))
- strips[index].left = i;
- }
- lfound++;
- } else {
- // ... altrimenti lo inizializzo
- strips[index].left = i;
- lfound = 1;
- }
- // bordo destro
- } else if ((row[i + 1] != ROAD_COLOR) && lfound) {
- // Se ho già trovato questo tipo di bordo cerco
- // quello + plausibile ...
- if (rfound) {
- // Test sulla striscia precedente
- if (index > 0) {
- if (abs(i - strips[index-1].right) <
- abs(strips[index].right - strips[index-1].right))
- strips[index].right = i;
- } else {
- // Test sul centro della macchina
- if (abs(i - center_car) < abs(strips[0].right - center_car))
- strips[index].right = i;
- }
- rfound++;
- } else {
- // ... altrimenti lo inizializzo
- strips[index].right = i;
- rfound = 1;
- }
- }
- }
- }
-
- // Calcola il centro della strada se trova i bordi
- if (lfound && rfound)
- strips[index].center = (strips[index].left + strips[index].right) / 2;
-
- return (lfound && rfound);
-}
-
-/* ----------------------------------------------------------------- */
-
-void where_am_i(BYTE *row, road_strip strip, road_info *info) {
- int i;
- int lfound = 0;
- int rfound = 0;
- int car_center = TEL_WIDTH/2;
-
- for(i=1; i < (TEL_WIDTH-1); i++) {
- // Se trova la strada controlla se si tratta di bordo
- // destro o sinistro
- if (row[i] == ROAD_COLOR) {
- // bordo sinistro
- if (row[i - 1] != ROAD_COLOR) {
- strip.left = i;
- lfound = 1;
- break;
- } else if (row[i + 1] != ROAD_COLOR) {
- strip.right = i;
- rfound = 1;
- break;
- }
- }
- }
-
- if (lfound && rfound) {
- info->flag = ROAD_OK;
- }
- else if (lfound && !rfound) info->flag = LEFT_ONLY;
- else if (!lfound && rfound) info->flag = RIGHT_ONLY;
- else {
- if (row[car_center] == OFFROAD_COLOR) info->flag = NO_ROAD;
- else info->flag = ROAD_OK;
- }
- info->left_border = car_center - strip.left;
- info->right_border = strip.right - car_center;
-}
-
-/* ----------------------------------------------------------------- */
-
-/* Analizza l'immagine vista dalla telecamera inserendo le informazioni
- * necessarie in info, ovvero la distanza dai bordi destro e sinistro,
- * la distanza dalla prossima curva e il suo angolo di curvatura.
- * Per il momento ritorna -1 se non riesce a trovare entrambi i bordi della
- * strada; in futuro gestiremo anche questa situazione.
- */
-int find_track(BYTE *image, road_info *info) {
- // vettore contenente le informazioni su ogni striscia
- road_strip strips[TEL_HEIGHT];
- BYTE *row;
- int car_center = TEL_WIDTH/2;
- int max_scost=0;
- int once_scost=0;
- int j, rett_tol=0;
-
- info->flag = ROAD_OK;
-
- strips[0].left = STRIP_DEFAULT;
- strips[0].right = STRIP_DEFAULT;
- /* Tratta in modo personalizzato il primo tratto di strada per
- inizializzare alcune variabili e per capire situazioni particolari */
- row = &image[(TEL_HEIGHT - 1)*TEL_WIDTH];
- // Se trova i bordi ...
- if (scan_strip(row,0,strips)) {
- // ... calcola i bordi della strada e ...
- info->left_border = car_center - strips[0].left;
- info->right_border = strips[0].right - car_center;
- // ... inizializza la tolleranza per il rettilineo.
- rett_tol = (strips[0].right - strips[0].left) / TOLL_FACTOR;
- } else {
- // Se non trova il bordo ...
- // Mi sono perso, cercami la strada
- where_am_i(row,strips[0],info);
- return 1;
- }
-
- /* Ora controlla le altre strisce della strada */
-
- for(j=1; j < TEL_HEIGHT ; j++) {
- row = &image[(TEL_HEIGHT - j - 1)*TEL_WIDTH];
- // Se trova i bordi ...
- if (scan_strip(row, j, strips)) {
- // ... aggiorna l'indice di max scostamento.
- if (abs(strips[j].center - car_center) >
- abs(strips[max_scost].center - car_center)
- && abs(strips[j].center - car_center) > rett_tol) {
-
- max_scost = j;
- once_scost=1; // ha trovato almeno un max scost
- }
- } else {
- // Se max_scost non è mai stato settato, prendo il max
- if (!once_scost) {
- max_scost = j-1;
- once_scost = 1;
- }
-
- // se la distanza e il max_scost sono troppo vicini approssima la curva
- info->distance = find_distance(strips, max_scost, rett_tol);
- if ((max_scost - info->distance) < MIN_DIFF) {
- info->curve = approx_curve(image, j, info->distance,
- strips[info->distance].center,strips) - 90.0;
- return 1;
- }
- break;
- }
- }
-
- // Se max_scost non è mai stato settato, prendo il max
- if (!once_scost) max_scost = TEL_HEIGHT-1;
- max_scost = min(max_scost,TEL_HEIGHT-1);
-
- info->distance = find_distance(strips,max_scost,rett_tol);
-
- // calcola l'angolo di curvatura solo se il conto e' attendibile
- if ((info->distance < (TEL_HEIGHT*0.9)) &&
- ((max_scost - info->distance) >= MIN_DIFF))
- info->curve = rad_to_degree(atan2((double)(max_scost - info->distance),
- (double)(strips[max_scost].center - strips[info->distance].center)));
- else {
- // se i conti sono empirici, si guarda la posizione dei due centri
- if (strips[max_scost].center > strips[info->distance].center)
- info->curve = 88.0;
- else if (strips[max_scost].center < strips[info->distance].center)
- info->curve = 92.0;
- else
- info->curve = 90.0;
- }
- info->curve -= 90.0;
- return 0;
-}
-
-/* ----------------------------------------------------------------- */
-
-int find_opps(BYTE *image, road_info *info)
-{
- int i, j;
- int l_limit, r_limit; // the opposite empiric limits
- BYTE *row;
- int car_center = TEL_WIDTH/2;
- int opps_number = 0;
-
- // by default it needs to scan the entire row
- l_limit = TEL_WIDTH - 1;
- r_limit = 0;
-
- // Scans one row at a time
- for(j=1; j<TEL_HEIGHT; j++) {
- row = &image[(TEL_HEIGHT - j - 1) * TEL_WIDTH];
-
- // if some of the previous row has been identified as a car...
- if (opps_number > 0 &&
- j < (info->opps_list[opps_number - 1].y + CAR_HEIGHT + 1)) {
- // excludes CAR_HEIGHT lines from the bottom if the car
- l_limit = (car_center + info->opps_list[opps_number - 1].x) - CAR_WIDTH;
- r_limit = (car_center + info->opps_list[opps_number - 1].x) + CAR_WIDTH;
- }
- else {
- // it needs to scan the entire row
- l_limit = TEL_WIDTH - 1;
- r_limit = 0;
- }
-
- // Scans the current row
- for (i=0; i<TEL_WIDTH; i++) {
- if( (i < l_limit || i > r_limit) &&
- row[i] != ROAD_COLOR && row[i] != OFFROAD_COLOR &&
- row[i] != DEBUG_COLOR && row[i] != OUT_OF_TRACK) {
- // there is an opponent car!!
- // stores its position
- info->opps_list[opps_number].x = i - car_center; // left -, right +
- info->opps_list[opps_number].y = j;
-
- // increases number of opposites car in the sensor view range
- opps_number++;
- }
- }
- }
-
- info->opps_number = opps_number;
-
- return 0;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Index: pj/auto/readme
===================================================================
--- pj/auto/readme (revision 1344)
+++ pj/auto/readme (nonexistent)
@@ -1,51 +0,0 @@
-AUTO - Another Unuseful Track simulatOr
----------------------------------------
-
-by Marco Dallera and Marco Fiocca, 2001
-
----------------------------------------
-
-This project was done as a Lab assignment during the course of
-"Informatica Industriale" at the University of Pavia, Italy.
-
-It simulates a race between cars under a set of 4 tracks.
-
-The authors provided also some pages that describes the application
-(auto.ps, in italian, on the website).
-
-To run the application, just compile it and call "x auto th" where tn is
-the track number (0 to 4).
-
-Since the control algorithm is quite complex, you need a quite powerful
-machine. If you get an exception 8 (WCET violation), you need a faster PC.
-You can anyway run the application making "auto2", that uses RR instead of
-EDF or CBS, or "auto3", that uses the EDFACT Module (you need yo copy
-the edfact.c and edfact.h files in the application directory to do that).
-
-To be run, the application needs to be compiled with the
-#define MAX_CAB set to a number greater than 20 (see include/modules/cabs.h).
-
-The control algorithm of the cars is not yet perfect, and if you look to
-the race for a long time, sometimes some cars go in the wrong direction.
-If you find a better algorithm, send me a patch :-)
-
-The code you can find in this directory is the original code of the
-students except for the MAX_CAB test into main(), and for the idle time
-monitor (that I took from the jumpball example) that can be useful to know
-when the system is overloaded. For example, on my PC there is idle time until
-the system has 9 cars. The tenth make the PC overloaded until one of them
-crashes :-).
-
-Finally note that the WCET and PERIODS specified by the authors are not so
-correct, and with this setting you can run 8 cars maximum before crashing the
-system.
-
-Have a nice race...
-
-Paolo
-pj@sssup.it
-
-PS: Sometimes on my portable the demo crashes. I wonder why!... If someone
-finds why, please tell me, I will patch it...
-
-
Index: pj/auto/initfil1.c
===================================================================
--- pj/auto/initfil1.c (revision 1344)
+++ pj/auto/initfil1.c (nonexistent)
@@ -1,108 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: initfil1.c,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-#include "drivers/keyb.h"
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 2000
-
-void read_track(int);
-void read_sprites();
-
-int argc;
-char *argv[100];
-
-int main(int argc, char **argv);
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- EDF_register_level(EDF_ENABLE_ALL);
- CBS_register_level(CBS_ENABLE_ALL, 0);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- CABS_register_module();
-
- __compute_args__(mb, &argc, argv);
-
- if (argc == 2)
- read_track(strtoi(argv[1], 10, NULL));
- else
- read_track(2);
-
- read_sprites();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- KEYB_PARMS kparms = BASE_KEYB;
-
- HARTPORT_init();
-
- keyb_def_ctrlC(kparms, NULL);
- KEYB_init(&kparms);
-
- return (void *)main(argc,argv);
-}
Index: pj/auto/initfil2.c
===================================================================
--- pj/auto/initfil2.c (revision 1344)
+++ pj/auto/initfil2.c (nonexistent)
@@ -1,108 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: initfil2.c,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include "kernel/kern.h"
-#include "modules/rr.h"
-#include "modules/rrsoft.h"
-#include "modules/dummy.h"
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-#include "drivers/keyb.h"
-
-/*+ sysyem tick in us +*/
-#define TICK 1000
-
-/*+ RR tick in us +*/
-#define RRTICK 2000
-
-void read_track(int);
-void read_sprites();
-
-int argc;
-char *argv[100];
-int main(int argc, char **argv);
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_HARD|RRSOFT_ONLY_SOFT);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- CABS_register_module();
-
- __compute_args__(mb, &argc, argv);
-
- if (argc == 2)
- read_track(strtoi(argv[1], 10, NULL));
- else
- read_track(0);
-
- read_sprites();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- KEYB_PARMS kparms = BASE_KEYB;
-
- HARTPORT_init();
-
- keyb_def_ctrlC(kparms, NULL);
- KEYB_init(&kparms);
-
- return (void *)main(argc,argv);
-}
-
-
-
-
Index: pj/auto/control.c
===================================================================
--- pj/auto/control.c (revision 1344)
+++ pj/auto/control.c (nonexistent)
@@ -1,711 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * Massimiliano Giorgi <massy@gandalf.sssup.it>
- * Luca Abeni <luca@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-
-/**
- ------------
- CVS : $Id: control.c,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Marco Dallera and Marco Fiocca
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-/*
- * AUTO
- *
- * Another Unuseful Track simulatOr
- *
- * Authors: Marco Dallera
- * Marco Fiocca
- *
- */
-
-/* ------------- */
-/* Car control */
-/* ------------- */
-
-#include "include/auto.h"
-#include "include/const.h"
-#include "include/utils.h"
-
-#define TURN_QUANTUM 2
-#define KM 18.0 // pixel
-#define HOUR 3600.0 // seconds
-#define KPH (KM/HOUR) // 0.005 pixel/second
-#define HIGHWAY_LIMIT 6
-#define MAZE_LIMIT 45
-#define CURVE_LIMIT 25 // il limite della curva per cui imposta la traiettoria
-#define BORDER_LIMIT ((1.0 / params.rage) * 2.0)
-#define STEERING_LIMIT 3 // limite di sterzata
-
-/* Road state */
-#define HIGHWAY 1
-#define MIXED 2
-#define MAZE 3
-#define CENTER 10
-#define TOO_LEFT 11
-#define TOO_RIGHT 12
-
-/* Opponents relationship */
-#define ATTACK 20
-#define DEFENSE 21
-#define SUPERATTACK 22
-
-/* Car parameters */
-#define MAX_SPEED (300 * KPH)
-#define MIN_SPEED (10 * KPH)
-#define MIN_ACC (-0.1)
-#define MAX_ACC (0.02)
-
-extern sem_t grx_mutex;
-
-char track_img[TRACK_WIDTH*TRACK_HEIGHT];
-char sprite[18][CAR_WIDTH*CAR_HEIGHT];
-
-/* Display functions */
-void put_transimage(int x1, int y1, int x2, int y2, BYTE *img,int car_color, int color);
-void draw_car(point_f old_pos, car_status cs, int car_color, int fumo);
-void put_trackbox(int x1, int y1, int x2, int y2);
-void show_display(int, int, float, float, float, float);
-void car_crash(PID sp, PID cp, point_f old_pos, int free);
-
-/* ------------------------------------------------------------------ */
-
-TASK control(int index) {
- int i = 0; // general purpose counter
- car_status old_car_status; // the previous car state
- car_status actual_car_status; // the actual car state
- road_info actual_road_info; // the actual road informations
- int road_state; // the state of the road: HIGHWAY, MIXED; MAZE
- int car_align; // the car alignment with respect to road limits
- int opps_state; // the relationship with other cars
- float old_speed = 0; // the previous car speed value
- float actual_speed = 0; // the actual car speed value
- float old_acc = 0; // the previous acceleration value
- float acc = 0; // the new acceleration
- point polepos;
-
- // Variabili che dipendono dal tipo di macchina
- float max_speed; // maximum car speed
- float min_acc; // minimum acceleration
- float max_acc; // maximum acceleration
-
- int killed = 0; // flag for killed cars
- int crashed = 0; // flag for crashed cars
-
- /* Timing variables */
- float t = 0;
- float dt = (float)CONTROL_PERIOD/100000.0; // time quantum
- time ts = int2time(t);
- float crash_t = 0;
- time crash_ts = int2time(crash_t);
- float bestlap = 999999999.9;
- time bestlap_s = int2time(bestlap);
- int bestlap_done = 0;
- int laps = 0;
-
- /* Display vars */
- point spd_p, acc_p, time_p, drv_p;
- char *txt;
-
- /* Car data */
- car_params params; // car data structure
-
- /* ----------------------------------------------------- */
-
- txt = (char *)malloc(15*sizeof(char));
-
- params = cars[index];
-
- max_speed = params.max_speed * MAX_SPEED; // maximum car speed
- min_acc = params.min_acc * MIN_ACC; // minimum acceleration
- max_acc = params.max_acc * MAX_ACC; // maximum acceleration
-
- /* Get track data */
- while (track_list[i].selected == 0)
- i++;
-
- /* Same pole for all */
- polepos.x = track_list[i].pole_pos.x;
- polepos.y = track_list[i].pole_pos.y;
- actual_car_status.pos.x = polepos.x;
- actual_car_status.pos.y = polepos.y;
- actual_car_status.orient = track_list[i].pole_orient;
- set_car_status(actual_car_status, params.car_status_cab);
-
- /* Initialize old values */
- old_car_status = actual_car_status;
- old_acc = acc;
- old_speed = actual_speed;
-
- /* POWER IS NOTHING WITHOUT CONTROL */
- while(1) {
-
- if (crashed) {
- crash_t += dt;
- crash_ts = int2time(crash_t);
- if (crash_ts.sec > 2) {
- car_crash(params.sensor_pid,params.control_pid,
- old_car_status.pos, 1);
- killed=1;
- }
- }
-
- else {
-
- /* Reads road informations */
- actual_road_info = get_road_info(params.road_status_cab);
-
- /* Defines the state of the road */
- if (fabs(actual_road_info.curve) < HIGHWAY_LIMIT ||
- actual_road_info.distance > 0.9*TEL_HEIGHT) {
- road_state = HIGHWAY;
- } else if (fabs(actual_road_info.curve) > MAZE_LIMIT ||
- actual_road_info.distance < 0.1*TEL_HEIGHT) {
- road_state = MAZE;
- } else {
- road_state = MIXED;
- }
-
- /* Defines the car position whitin road borders */
- if (actual_road_info.left_border < BORDER_LIMIT)
- car_align = TOO_LEFT;
- else if (actual_road_info.right_border < BORDER_LIMIT)
- car_align = TOO_RIGHT;
- else car_align = CENTER;
-
- /* Sets the power percentage */
- switch (road_state)
- {
- case HIGHWAY:
- acc = max_acc; // tarella!!!!
- break;
- case MIXED:
- actual_speed = params.rage * (((float)actual_road_info.distance/(float)TEL_HEIGHT) /
- (fabs(actual_road_info.curve)/90.0)) * max_speed;
- acc = (actual_speed - old_speed) / dt;
- break;
- case MAZE:
- actual_speed = params.rage * (1.0 - (fabs(actual_road_info.curve)/90.0)) * max_speed;
- acc = (actual_speed - old_speed) / dt;
- break;
- default:
- acc = 0.0;
- }
-
- /* Can't go off road */
- /* When car is near a border, it steers to come in */
- switch (car_align)
- {
- case TOO_LEFT:
- actual_car_status.orient -= TURN_QUANTUM;
- break;
- case TOO_RIGHT:
- actual_car_status.orient += TURN_QUANTUM;
- break;
- }
-
- if (road_state != HIGHWAY) {
- // C'e' una curva vicina.
- // Se la curva e' a destra si tiene vicino al bordo di sinistra
- // per impostare la traiettoria migliore e viceversa
- if (actual_road_info.curve < 0 && actual_road_info.left_border > BORDER_LIMIT
- && fabs(actual_road_info.curve) > CURVE_LIMIT)
- actual_car_status.orient += TURN_QUANTUM;
- else if (actual_road_info.curve > 0 && actual_road_info.right_border > BORDER_LIMIT
- && fabs(actual_road_info.curve) > CURVE_LIMIT)
- actual_car_status.orient -= TURN_QUANTUM;
-
- // Fa la curva dolcemente
- if (actual_road_info.distance < ((1.0/params.rage) * (TEL_HEIGHT * 0.25))) {
- actual_car_status.orient += actual_road_info.curve * (params.rage/8.0);
- //actual_car_status.orient += actual_road_info.curve / 4.0;
- }
- }
-
- /* Defines the state of interactions with other cars */
- if (actual_road_info.opps_number > 0)
- {
- if (road_state == HIGHWAY && actual_road_info.opps_list[0].y > (TEL_HEIGHT/3.0))
- opps_state = ATTACK;
- else if (road_state == MAZE && actual_road_info.opps_list[0].y < (TEL_HEIGHT/3.0))
- opps_state = DEFENSE;
- else if (actual_road_info.opps_list[0].y < (TEL_HEIGHT/6.0) &&
- actual_road_info.opps_list[0].x != 0 &&
- (abs(actual_road_info.opps_list[0].x) < CAR_W/2)) {
- // Defends and steers to avoid opponents
- opps_state = DEFENSE;
- acc *= -((TEL_HEIGHT/6.0) / (actual_road_info.opps_list[0].y));
- actual_car_status.orient -= ((actual_road_info.opps_list[0].x) /
- abs(actual_road_info.opps_list[0].x)) * TURN_QUANTUM/2;
- }
- else if (actual_road_info.opps_list[0].y < (TEL_HEIGHT/3.0) &&
- actual_road_info.opps_list[0].x != 0 &&
- abs(actual_road_info.opps_list[0].x) < CAR_W/2) {
- // Attacks and steers to override the opponent
- opps_state = ATTACK;
- actual_car_status.orient -= ((actual_road_info.opps_list[0].x) /
- abs(actual_road_info.opps_list[0].x)) * TURN_QUANTUM;
- }
- else
- opps_state = DEFENSE;
-
- // Response to opponents positions
- if (opps_state == ATTACK)
- acc = max_acc;
- else if (opps_state == DEFENSE)
- acc *= 0.5;
- }
-
-
- /* Checking car position: road/offroad */
- if (actual_road_info.left_border * actual_road_info.right_border < 0)
- acc = 0.5 * min_acc;
-
- if (actual_road_info.flag != ROAD_OK) {
- switch (actual_road_info.flag) {
- case LEFT_ONLY:
- if (actual_road_info.left_border < 0)
- actual_car_status.orient -= TURN_QUANTUM;
- acc = 0.5 * max_acc;
- break;
- case RIGHT_ONLY:
- if (actual_road_info.right_border < 0)
- actual_car_status.orient += TURN_QUANTUM;
- acc = 0.5 * max_acc;
- break;
- case NO_ROAD:
- crashed = 1;
- car_crash(params.sensor_pid,params.control_pid,
- old_car_status.pos, 0);
- break;
- }
- }
-
- /* Checking collisions... */
- if (actual_road_info.collision != NO_COLL) {
- switch(actual_road_info.collision) {
- case COLLISION_LEFT:
- actual_car_status.orient -= TURN_QUANTUM;
- acc *= (0.5 * params.rage);
- break;
- case COLLISION_RIGHT:
- actual_car_status.orient += TURN_QUANTUM;
- acc *= (0.5 * params.rage);
- break;
- }
- }
-
- /* Checking acceleration range... */
- acc = max(min(max_acc,acc),min_acc);
- actual_speed = old_speed + acc*dt;
-
- /* Checking speed range... */
- actual_speed = min(max(actual_speed,MIN_SPEED),max_speed);
-
- /* Checking steering angle ... */
- if (fabs(actual_car_status.orient - old_car_status.orient) >
- STEERING_LIMIT) {
- if ((actual_car_status.orient - old_car_status.orient) > 0)
- actual_car_status.orient = old_car_status.orient + STEERING_LIMIT;
- else
- actual_car_status.orient = old_car_status.orient - STEERING_LIMIT;
- }
-
- /* Setting new car position... */
- actual_car_status.pos.x += actual_speed * cos(degree_to_rad(actual_car_status.orient));
- actual_car_status.pos.y -= actual_speed * sin(degree_to_rad(actual_car_status.orient));
-
- /* Checking track limits... */
- if (actual_car_status.pos.x < MIN_CAR_X)
- actual_car_status.pos.x = MIN_CAR_X;
- if (actual_car_status.pos.x > MAX_CAR_X)
- actual_car_status.pos.x = MAX_CAR_X;
- if (actual_car_status.pos.y < MIN_CAR_Y)
- actual_car_status.pos.y = MIN_CAR_Y;
- if (actual_car_status.pos.y > MAX_CAR_Y)
- actual_car_status.pos.y = MAX_CAR_Y;
-
- /* Sends new status to car_status_cab */
- set_car_status(actual_car_status, params.car_status_cab);
-
- if (!crashed) {
- /* Updates car */
- if (acc == min_acc)
- draw_car(old_car_status.pos,actual_car_status, params.color, 1);
- else
- draw_car(old_car_status.pos,actual_car_status, params.color, 0);
- }
-
- /* Sets display points */
- spd_p.x = TRACK_X1 + TRACK_WIDTH + TEL_HEIGHT + TEL_WIDTH + 9;
- spd_p.y = TEL_HEIGHT*index + 1 + index + 1;
- bar_display(spd_p, 70, 4, GREEN, actual_speed, max_speed, LIGHTGRAY, "Spd");
-
- acc_p.x = spd_p.x;
- acc_p.y = spd_p.y + 24;
- bidir_bar_display(acc_p, 70, 4, GREEN, acc, max(fabs(min_acc), max_acc), LIGHTGRAY, "Acc");
-
- sem_wait(&grx_mutex);
-
- /* Displays driver's name */
- drv_p.x = spd_p.x + 80;
- drv_p.y = spd_p.y;
- grx_text(params.driver, drv_p.x, drv_p.y, params.color, BLACK);
-
- /* Displays timer */
- time_p.x = spd_p.x + 80;
- time_p.y = spd_p.y + 8;
- if( (!bestlap_done) || (bestlap_done && t > 50))
- {
- /* Mins */
- txt = itoa(ts.min, txt);
- grx_text(txt, time_p.x, time_p.y, WHITE, BLACK);
- grx_text(":", time_p.x + 8, time_p.y, WHITE, BLACK);
- /* Secs */
- txt = itoa(ts.sec, txt);
- if (ts.sec < 10) {
- grx_text("0", time_p.x+16, time_p.y, WHITE, BLACK);
- grx_text(txt, time_p.x+24, time_p.y, WHITE, BLACK);
- }
- else
- grx_text(txt, time_p.x+16, time_p.y, WHITE, BLACK);
- /* Decs */
- grx_text(":", time_p.x+32, time_p.y, WHITE, BLACK);
- txt = itoa(ts.dec, txt);
- grx_text(txt, time_p.x+40, time_p.y, WHITE, BLACK);
- }
-
- /* Displays the best lap */
- if(bestlap_done == 1)
- {
- time_p.x = spd_p.x + 80;
- time_p.y = spd_p.y + 16;
- /* Mins */
- txt = itoa(bestlap_s.min, txt);
- grx_text(txt, time_p.x, time_p.y, YELLOW, BLACK);
- grx_text(":", time_p.x + 8, time_p.y, YELLOW, BLACK);
- /* Secs */
- txt = itoa(bestlap_s.sec, txt);
- if (bestlap_s.sec < 10) {
- grx_text("0", time_p.x+16, time_p.y, YELLOW, BLACK);
- grx_text(txt, time_p.x+24, time_p.y, YELLOW, BLACK);
- }
- else
- grx_text(txt, time_p.x+16, time_p.y, YELLOW, BLACK);
- /* Decs */
- grx_text(":", time_p.x+32, time_p.y, YELLOW, BLACK);
- txt = itoa(bestlap_s.dec, txt);
- grx_text(txt, time_p.x+40, time_p.y, YELLOW, BLACK);
- }
-
- /* Displays lap number */
- time_p.x = spd_p.x + 80;
- time_p.y = spd_p.y + 24;
- grx_text("Lap ", time_p.x, time_p.y, LIGHTGRAY, BLACK);
- txt = itoa(laps, txt);
- grx_text(txt, time_p.x+32, time_p.y, LIGHTGRAY, BLACK);
-
- sem_post(&grx_mutex);
-
- /* Control the best lap */
- t += dt;
- ts = int2time(t);
-
- /* Finish line */
- if ((track_list[i].lap == CLOCK &&
- (actual_car_status.pos.x >= polepos.x) && (old_car_status.pos.x < polepos.x)
- && (actual_car_status.pos.y > polepos.y-20) && (actual_car_status.pos.y < polepos.y+20)) ||
- (track_list[i].lap == ANTICLOCK &&
- (actual_car_status.pos.x <= polepos.x) && (old_car_status.pos.x > polepos.x)
- && (actual_car_status.pos.y > polepos.y-20) && (actual_car_status.pos.y < polepos.y+20))) {
- laps++; // increases lap number
-
- bestlap = min(bestlap,t);
- bestlap_s = int2time(bestlap);
- bestlap_done = 1;
- t = 0;
- ts = int2time(t);
- }
-
- /* Updates old values */
- old_car_status = actual_car_status;
- old_acc = acc;
- old_speed = actual_speed;
-
- } // end crashed
-
- task_endcycle();
-
- // Esce se e' morto
- if (killed) return 0;
- }
-}
-
-/* ------------------------------------------------------------------ */
-
-void car_crash(PID sp, PID cp, point_f old_pos, int free)
-{
- point p1, p2;
- p1.x = round(old_pos.x) - CAR_WIDTH/2 - 1;
- p1.y = round(old_pos.y) - CAR_HEIGHT/2 - 1;
- p2.x = p1.x + CAR_WIDTH + 1;
- p2.y = p1.y + CAR_HEIGHT + 1;
-
- sem_wait(&grx_mutex);
- /* Find the track box to redraw */
- put_trackbox(p1.x,p1.y,p2.x,p2.y);
-
- if (free == 0) {
- // Draw the explosion
- put_transimage(p1.x+1,p1.y+1,p2.x-1,p2.y-1,&sprite[16][0],0,0);
- }
- else if (free == 1) {
- // Delete the explosion
- put_trackbox(p1.x,p1.y,p2.x,p2.y);
- task_kill(sp);
- task_kill(cp);
- }
- sem_post(&grx_mutex);
-}
-
-/* ------------------------------------------------------------------ */
-
-void draw_car(point_f old_pos, car_status cs, int car_color, int fumo)
-{
- int index;
- point p1, p2;
- p1.x = round(old_pos.x) - CAR_WIDTH/2 - 1;
- p1.y = round(old_pos.y) - CAR_HEIGHT/2 - 1;
- p2.x = p1.x + CAR_WIDTH + 1;
- p2.y = p1.y + CAR_HEIGHT + 1;
-
- sem_wait(&grx_mutex);
- /* Find the track box to redraw */
- put_trackbox(p1.x,p1.y,p2.x,p2.y);
-
-
- p1.x = round(cs.pos.x) + (CAR_WIDTH/2 * cos(degree_to_rad(cs.orient)));
- p1.y = round(cs.pos.y) - (CAR_HEIGHT/2 * sin(degree_to_rad(cs.orient)));
- p2.x = round(cs.pos.x) - (CAR_WIDTH/2 * cos(degree_to_rad(cs.orient)));
- p2.y = round(cs.pos.y) + (CAR_HEIGHT/2 * sin(degree_to_rad(cs.orient)));
-
- index = ((((int)cs.orient%360)+360)%360);
- index = (int)(index + 11.25)%360;
- index /= 22.5;
-
- put_transimage(round(cs.pos.x) - CAR_WIDTH/2 + 1,round(cs.pos.y) - CAR_HEIGHT/2 + 1,
- round(cs.pos.x) + CAR_WIDTH/2 ,round(cs.pos.y) + CAR_HEIGHT/2,
- &sprite[index][0], car_color, 0);
- if (fumo)
- put_transimage(round(cs.pos.x) - CAR_WIDTH/2 + 1,round(cs.pos.y) - CAR_HEIGHT/2 + 1,
- round(cs.pos.x) + CAR_WIDTH/2 ,round(cs.pos.y) + CAR_HEIGHT/2,
- &sprite[17][0], car_color, 0);
- sem_post(&grx_mutex);
-}
-
-/* ------------------------------------------------------------------ */
-
-/* Copy a box of track_image to screen */
-void put_trackbox(int x1, int y1, int x2, int y2)
-{
- int y;
- int tx1,ty1,tx2,ty2;
- BYTE *addr;
-
- tx1 = x1-TRACK_X1+1;
- ty1 = y1-TRACK_Y1;
- tx2 = x2-TRACK_X1+1;
- ty2 = y2-TRACK_Y1;
-
- if (tx1 < 0) tx1 = 0;
- if (ty1 < 0) ty1 = 0;
- if (tx2 > TRACK_WIDTH-1) tx2 = TRACK_WIDTH-1;
- if (ty2 > TRACK_HEIGHT-1) ty2 = TRACK_HEIGHT-1;
-
- tx1 = max(tx1,0);
- ty1 = max(ty1,0);
- tx2 = min(tx2,TRACK_WIDTH-1);
- ty2 = min(ty2,TRACK_HEIGHT-1);
-
- addr = &track_img[0] + tx1 + TRACK_WIDTH * ty1;
-
- x1 = max(0,x1);
- y1 = max(0,y1);
-
- for (y = y1; y <= y2; y++) {
- grx_putimage(x1+1, y, x2, y, addr);
- addr += TRACK_WIDTH;
- }
-}
-
-/* ------------------------------------------------------------------ */
-
-void put_transimage(int x1, int y1, int x2, int y2, BYTE *img, int car_color,
- int color)
-{
- int x,y;
- BYTE *addr;
- addr = img;
-
-
- for (y = y1; y < y2; y++) {
- for ( x = x1; x < x2; x++, addr++) {
- if (*addr != color) {
- if (*addr == 26)
- grx_plot(x,y,car_color);
- else
- grx_plot(x,y,*addr);
-
- }
- }
- addr++;
- }
-}
-
-/* ------------------------------------------------------------------ */
-
-void show_display(int rs, int ca, float speed, float max_speed,
- float acc, float max_acc) {
- point hw, mx, mz; // three road states
- point tl, ct, tr; // three car alignments
- point sp1, sp2; // speed display coordinates
- point ap1, ap2; // acceleration display coordinates
- int s_amp = 0;
- int a_amp = 0;
-
- /* Leds coordinates */
- hw.x = 10;
- hw.y = SCREEN_HEIGHT-50;
- mx.x = 25;
- mx.y = SCREEN_HEIGHT-50;
- mz.x = 40;
- mz.y = SCREEN_HEIGHT-50;
- tl.x = 10;
- tl.y = SCREEN_HEIGHT-35;
- ct.x = 25;
- ct.y = SCREEN_HEIGHT-35;
- tr.x = 40;
- tr.y = SCREEN_HEIGHT-35;
- sp1.x = 10;
- sp1.y = SCREEN_HEIGHT-75;
- sp2.x = 110;
- sp2.y = SCREEN_HEIGHT-65;
- ap1.x = 10;
- ap1.y = SCREEN_HEIGHT-90;
- ap2.x = 110;
- ap2.y = SCREEN_HEIGHT-80;
-
- sem_wait(&grx_mutex);
-
- /* Writes out controller titles */
- grx_text("Road", mz.x+15, mz.y, YELLOW, BLACK);
- grx_text("Curve", tr.x+15, tr.y, YELLOW, BLACK);
- switch (rs)
- {
- case HIGHWAY:
- grx_box(hw.x, hw.y, hw.x+10, hw.y+10, GREEN);
- grx_box(mx.x, mx.y, mx.x+10, mx.y+10, BLACK);
- grx_box(mz.x, mz.y, mz.x+10, mz.y+10, BLACK);
- break;
- case MIXED:
- grx_box(hw.x, hw.y, hw.x+10, hw.y+10, BLACK);
- grx_box(mx.x, mx.y, mx.x+10, mx.y+10, YELLOW);
- grx_box(mz.x, mz.y, mz.x+10, mz.y+10, BLACK);
- break;
- case MAZE:
- grx_box(hw.x, hw.y, hw.x+10, hw.y+10, BLACK);
- grx_box(mx.x, mx.y, mx.x+10, mx.y+10, BLACK);
- grx_box(mz.x, mz.y, mz.x+10, mz.y+10, RED);
- break;
- }
-
- switch (ca)
- {
- case TOO_LEFT:
- grx_box(tl.x, tl.y, tl.x+10, tl.y+10, RED);
- grx_box(ct.x, ct.y, ct.x+10, ct.y+10, BLACK);
- grx_box(tr.x, tr.y, tr.x+10, tr.y+10, BLACK);
- break;
- case TOO_RIGHT:
- grx_box(tl.x, tl.y, tl.x+10, tl.y+10, BLACK);
- grx_box(ct.x, ct.y, ct.x+10, ct.y+10, BLACK);
- grx_box(tr.x, tr.y, tr.x+10, tr.y+10, BLUE);
- break;
- default:
- grx_box(tl.x, tl.y, tl.x+10, tl.y+10, BLACK);
- grx_box(ct.x, ct.y, ct.x+10, ct.y+10, WHITE);
- grx_box(tr.x, tr.y, tr.x+10, tr.y+10, BLACK);
- }
-
- /* Draws speed display */
- grx_text("Speed", sp1.x+120, sp1.y, YELLOW, BLACK);
- grx_rect(sp1.x-1, sp1.y-1, sp2.x+1, sp2.y+1, GREEN);
- /* Updates speed display */
- grx_box(sp1.x, sp1.y, sp2.x, sp2.y, BLACK);
- s_amp = round( (speed * (float)(sp2.x-sp1.x)) / max_speed );
- grx_box(sp1.x, sp1.y, sp1.x+s_amp, sp2.y, LIGHTGRAY);
-
- /* Draws acceleration display */
- grx_text("Acceleration", ap1.x+120, ap1.y, YELLOW, BLACK);
- grx_rect(ap1.x-1, ap1.y-1, ap2.x+1, ap2.y+1, GREEN);
- /* Updates acceleration display */
- grx_box(ap1.x, ap1.y, ap2.x, ap2.y, BLACK);
- a_amp = round( (float)acc * (float)((ap2.x-ap1.x)/2) / (float)max_acc );
- if (a_amp >= 0)
- grx_box((ap1.x+ap2.x)/2, ap1.y, ((ap1.x+ap2.x)/2)+a_amp, ap2.y, LIGHTGRAY);
- else
- grx_box((ap1.x+ap2.x)/2+a_amp, ap1.y, ((ap1.x+ap2.x)/2), ap2.y, LIGHTGRAY);
- grx_line((ap1.x+ap2.x)/2, ap1.y-2, (ap1.x+ap2.x)/2, ap2.y+2, WHITE);
- sem_post(&grx_mutex);
-}
-
-
-
-
-
-
-
-
-
-
-
-
Index: pj/auto/initfil3.c
===================================================================
--- pj/auto/initfil3.c (revision 1344)
+++ pj/auto/initfil3.c (nonexistent)
@@ -1,107 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: initfil3.c,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include "kernel/kern.h"
-#include "edfact.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-#include "drivers/keyb.h"
-
-/*+ sysyem tick in us +*/
-#define TICK 0
-
-/*+ RR tick in us +*/
-#define RRTICK 2000
-
-void read_track(int);
-void read_sprites();
-
-int argc;
-char *argv[100];
-int main(int argc, char **argv);
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- EDFACT_register_level(0);
- CBS_register_level(0, 0);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- CABS_register_module();
-
- __compute_args__(mb, &argc, argv);
-
- if (argc == 2)
- read_track(strtoi(argv[1], 10, NULL));
- else
- read_track(2);
-
- read_sprites();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- KEYB_PARMS kparms = BASE_KEYB;
-
- HARTPORT_init();
-
- keyb_def_ctrlC(kparms, NULL);
- KEYB_init(&kparms);
-
- return (void *) main(argc,argv);
-}
Index: pj/auto/edfact.c
===================================================================
--- pj/auto/edfact.c (revision 1344)
+++ pj/auto/edfact.c (nonexistent)
@@ -1,735 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: edfact.c,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-**/
-
-/*
- * Copyright (C) 2001 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include "edfact.h"
-#include <ll/stdio.h>
-#include <ll/string.h>
-#include <kernel/model.h>
-#include <kernel/descr.h>
-#include <kernel/var.h>
-#include <kernel/func.h>
-#include <kernel/trace.h>
-
-//#define edfact_printf kern_printf
-#define edfact_printf printk
-
-/*+ Status used in the level +*/
-#define EDFACT_READY MODULE_STATUS_BASE /*+ - Ready status +*/
-#define EDFACT_IDLE MODULE_STATUS_BASE+4 /*+ to wait the deadline +*/
-
-/*+ flags +*/
-#define EDFACT_FLAG_NORAISEEXC 2
-
-/*+ the level redefinition for the Earliest Deadline First level +*/
-typedef struct {
- level_des l; /*+ the standard level descriptor +*/
-
- TIME period[MAX_PROC]; /*+ The task periods; the deadlines are
- stored in the priority field +*/
- int deadline_timer[MAX_PROC];
- /*+ The task deadline timers +*/
-
- struct timespec deadline_timespec[MAX_PROC];
-
- int dline_miss[MAX_PROC]; /*+ Deadline miss counter +*/
- int wcet_miss[MAX_PROC]; /*+ Wcet miss counter +*/
-
- int nact[MAX_PROC]; /*+ Wcet miss counter +*/
-
- int flag[MAX_PROC];
- /*+ used to manage the JOB_TASK_MODEL and the
- periodicity +*/
-
- QUEUE ready; /*+ the ready queue +*/
-
- int flags; /*+ the init flags... +*/
-
- bandwidth_t U; /*+ the used bandwidth +*/
-
-} EDFACT_level_des;
-
-
-static void EDFACT_timer_deadline(void *par);
-
-static void EDFACT_internal_activate(EDFACT_level_des *lev, PID p)
-{
- TIMESPEC_ASSIGN(&proc_table[p].timespec_priority,
- &proc_table[p].request_time);
- ADDUSEC2TIMESPEC(lev->period[p], &proc_table[p].timespec_priority);
-
- TIMESPEC_ASSIGN(&lev->deadline_timespec[p],
- &proc_table[p].timespec_priority);
-
- /* Insert task in the correct position */
- proc_table[p].status = EDFACT_READY;
- q_timespec_insert(p,&lev->ready);
-
- /* needed because when there is a wcet miss I disable CONTROL_CAP */
- proc_table[p].control |= CONTROL_CAP;
-}
-
-static char *EDFACT_status_to_a(WORD status)
-{
- if (status < MODULE_STATUS_BASE)
- return status_to_a(status);
-
- switch (status) {
- case EDFACT_READY : return "EDFACT_Ready";
- case EDFACT_IDLE : return "EDFACT_Idle";
- default : return "EDFACT_Unknown";
- }
-}
-
-static void EDFACT_timer_deadline(void *par)
-{
- PID p = (PID) par;
- EDFACT_level_des *lev;
-
- lev = (EDFACT_level_des *)level_table[proc_table[p].task_level];
-
- switch (proc_table[p].status) {
- case EDFACT_IDLE:
- edfact_printf("I%d",p);
- TIMESPEC_ASSIGN(&proc_table[p].request_time,
- &proc_table[p].timespec_priority);
-
- EDFACT_internal_activate(lev,p);
-
- event_need_reschedule();
- break;
-
- default:
- edfact_printf("D%d",p);
- /* else, a deadline miss occurred!!! */
- lev->dline_miss[p]++;
-
- /* the task is into another state */
- lev->nact[p]++;
-
- /* Set the deadline timer */
- ADDUSEC2TIMESPEC(lev->period[p], &lev->deadline_timespec[p]);
- }
-
- /* Set the deadline timer */
- lev->deadline_timer[p] = kern_event_post(&lev->deadline_timespec[p],
- EDFACT_timer_deadline,
- (void *)p);
-
-}
-
-static void EDFACT_timer_guest_deadline(void *par)
-{
- PID p = (PID) par;
-
- edfact_printf("AAARRRGGGHHH!!!");
- kern_raise(XDEADLINE_MISS,p);
-}
-
-static int EDFACT_level_accept_task_model(LEVEL l, TASK_MODEL *m)
-{
- if (m->pclass == HARD_PCLASS || m->pclass == (HARD_PCLASS | l)) {
- HARD_TASK_MODEL *h = (HARD_TASK_MODEL *)m;
-
- if (h->wcet && h->mit && h->periodicity == PERIODIC)
- return 0;
- }
-
- return -1;
-}
-
-static int EDFACT_level_accept_guest_model(LEVEL l, TASK_MODEL *m)
-{
- if (m->pclass == JOB_PCLASS || m->pclass == (JOB_PCLASS | l))
- return 0;
- else
- return -1;
-}
-
-
-static char *onoff(int i)
-{
- if (i)
- return "On ";
- else
- return "Off";
-}
-
-static void EDFACT_level_status(LEVEL l)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
- PID p = lev->ready;
-
- kern_printf("On-line guarantee : %s\n",
- onoff(lev->flags & EDFACT_ENABLE_GUARANTEE));
- kern_printf("Used Bandwidth : %u/%u\n",
- lev->U, MAX_BANDWIDTH);
-
- while (p != NIL) {
- if ((proc_table[p].pclass) == JOB_PCLASS)
- kern_printf("Pid: %2d (GUEST)\n", p);
- else
- kern_printf("Pid: %2d Name: %10s %s: %9d Dline: %9d.%6d Stat: %s\n",
- p,
- proc_table[p].name,
- "Period ",
- lev->period[p],
- proc_table[p].timespec_priority.tv_sec,
- proc_table[p].timespec_priority.tv_nsec/1000,
- EDFACT_status_to_a(proc_table[p].status));
- p = proc_table[p].next;
- }
-
- for (p=0; p<MAX_PROC; p++)
- if (proc_table[p].task_level == l && proc_table[p].status != EDFACT_READY
- && proc_table[p].status != FREE )
- kern_printf("Pid: %2d Name: %10s %s: %9d Dline: %9d.%6d Stat: %s\n",
- p,
- proc_table[p].name,
- "Period ",
- lev->period[p],
- proc_table[p].timespec_priority.tv_sec,
- proc_table[p].timespec_priority.tv_nsec/1000,
- EDFACT_status_to_a(proc_table[p].status));
-}
-
-/* The scheduler only gets the first task in the queue */
-static PID EDFACT_level_scheduler(LEVEL l)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
-
-/* { // print 4 dbg the ready queue
- PID p= lev->ready;
- kern_printf("(s");
- while (p != NIL) {
- kern_printf("%d ",p);
- p = proc_table[p].next;
- }
- kern_printf(") ");
- }
- */
- return (PID)lev->ready;
-}
-
-/* The on-line guarantee is enabled only if the appropriate flag is set... */
-static int EDFACT_level_guarantee(LEVEL l, bandwidth_t *freebandwidth)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
-
- if (lev->flags & EDFACT_FAILED_GUARANTEE) {
- *freebandwidth = 0;
- return 0;
- }
- else
- if (*freebandwidth >= lev->U) {
- *freebandwidth -= lev->U;
- return 1;
- }
- else
- return 0;
-
-}
-
-static int EDFACT_task_create(LEVEL l, PID p, TASK_MODEL *m)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
-
- /* if the EDFACT_task_create is called, then the pclass must be a
- valid pclass. */
-
- HARD_TASK_MODEL *h = (HARD_TASK_MODEL *)m;
-
- lev->period[p] = h->mit;
-
- lev->flag[p] = 0;
- lev->deadline_timer[p] = -1;
- lev->dline_miss[p] = 0;
- lev->wcet_miss[p] = 0;
- lev->nact[p] = 0;
-
- /* Enable wcet check */
- proc_table[p].avail_time = h->wcet;
- proc_table[p].wcet = h->wcet;
- proc_table[p].control |= CONTROL_CAP;
-
- /* update the bandwidth... */
- if (lev->flags & EDFACT_ENABLE_GUARANTEE) {
- bandwidth_t b;
- b = (MAX_BANDWIDTH / h->mit) * h->wcet;
-
- /* really update lev->U, checking an overflow... */
- if (MAX_BANDWIDTH - lev->U > b)
- lev->U += b;
- else
- /* The task can NOT be guaranteed (U>MAX_BANDWIDTH)...
- in this case, we don't raise an exception... in fact, after the
- EDFACT_task_create the task_create will call level_guarantee that return
- -1... return -1 in EDFACT_task_create isn't correct, because:
- . generally, the guarantee must be done when also the resources
- are registered
- . returning -1 will cause the task_create to return with an errno
- ETASK_CREATE instead of ENO_GUARANTEE!!!
-
- Why I use the flag??? because if the lev->U overflows, if i.e. I set
- it to MAX_BANDWIDTH, I lose the correct allocated bandwidth...
- */
- lev->flags |= EDFACT_FAILED_GUARANTEE;
- }
-
- return 0; /* OK, also if the task cannot be guaranteed... */
-}
-
-static void EDFACT_task_detach(LEVEL l, PID p)
-{
- /* the EDFACT level doesn't introduce any dinamic allocated new field.
- we have only to reset the NO_GUARANTEE FIELD and decrement the allocated
- bandwidth */
-
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
-
- if (lev->flags & EDFACT_FAILED_GUARANTEE)
- lev->flags &= ~EDFACT_FAILED_GUARANTEE;
- else
- lev->U -= (MAX_BANDWIDTH / lev->period[p]) * proc_table[p].wcet;
-}
-
-static int EDFACT_task_eligible(LEVEL l, PID p)
-{
- return 0; /* if the task p is chosen, it is always eligible */
-}
-
-static void EDFACT_task_dispatch(LEVEL l, PID p, int nostop)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
-
- /* the task state is set EXE by the scheduler()
- we extract the task from the ready queue
- NB: we can't assume that p is the first task in the queue!!! */
- q_extract(p, &lev->ready);
-}
-
-static void EDFACT_task_epilogue(LEVEL l, PID p)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
-
- /* check if the wcet is finished... */
- if (proc_table[p].avail_time <= 0 && proc_table[p].control&CONTROL_CAP) {
- /* wcet finished: disable wcet event and count wcet miss */
- edfact_printf("W%d",p);
- proc_table[p].control &= ~CONTROL_CAP;
- lev->wcet_miss[p]++;
- }
-
- /* the task it returns into the ready queue... */
- q_timespec_insert(p,&lev->ready);
- proc_table[p].status = EDFACT_READY;
-}
-
-static void EDFACT_task_activate(LEVEL l, PID p)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
-
- /* Test if we are trying to activate a non sleeping task */
- /* save activation (only if needed... */
- if (proc_table[p].status != SLEEP) {
- /* a periodic task cannot be activated when it is already active */
- kern_raise(XACTIVATION,p);
- return;
- }
-
- ll_gettime(TIME_EXACT, &proc_table[p].request_time);
-
- EDFACT_internal_activate(lev,p);
-
- /* Set the deadline timer */
- lev->deadline_timer[p] = kern_event_post(&lev->deadline_timespec[p],
- EDFACT_timer_deadline,
- (void *)p);
-
-}
-
-static void EDFACT_task_insert(LEVEL l, PID p)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
-
- /* Insert task in the coEDFect position */
- proc_table[p].status = EDFACT_READY;
- q_timespec_insert(p,&lev->ready);
-}
-
-static void EDFACT_task_extract(LEVEL l, PID p)
-{
-}
-
-static void EDFACT_task_endcycle(LEVEL l, PID p)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
-
-
- /* we reset the capacity counters... */
- proc_table[p].avail_time = proc_table[p].wcet;
-
- if (lev->nact[p] > 0) {
- edfact_printf("E%d",p);
-
- /* Pending activation: reactivate the thread!!! */
- lev->nact[p]--;
-
- /* see also EDFACT_timer_deadline */
- ll_gettime(TIME_EXACT, &proc_table[p].request_time);
-
- EDFACT_internal_activate(lev,p);
-
- /* check if the deadline has already expired */
- if (TIMESPEC_A_LT_B(&proc_table[p].timespec_priority, &schedule_time)) {
- /* count the deadline miss */
- lev->dline_miss[p]++;
- event_delete(lev->deadline_timer[p]);
- }
-
- }
- else {
- edfact_printf("e%d",p);
-
- /* the task has terminated his job before it consume the wcet. All OK! */
- proc_table[p].status = EDFACT_IDLE;
-
- /* when the deadline timer fire, it recognize the situation and set
- correctly all the stuffs (like reactivation, request_time, etc... ) */
- }
-}
-
-static void EDFACT_task_end(LEVEL l, PID p)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
-
- edfact_printf("Û%d",p);
-
- /* we finally put the task in the ready queue */
- proc_table[p].status = FREE;
- q_insertfirst(p,&freedesc);
- /* and free the allocated bandwidth */
- lev->U -= (MAX_BANDWIDTH/lev->period[p]) * proc_table[p].wcet;
-
- if (lev->deadline_timer[p] != -1) {
- edfact_printf("²%d",p);
- event_delete(lev->deadline_timer[p]);
- }
-}
-
-static void EDFACT_task_sleep(LEVEL l, PID p)
-{ kern_raise(XUNVALID_TASK,exec_shadow); }
-
-static void EDFACT_task_delay(LEVEL l, PID p, TIME usdelay)
-{ kern_raise(XUNVALID_TASK,exec_shadow); }
-
-/* Guest Functions
- These functions manages a JOB_TASK_MODEL, that is used to put
- a guest task in the EDFACT ready queue. */
-
-static int EDFACT_guest_create(LEVEL l, PID p, TASK_MODEL *m)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
- JOB_TASK_MODEL *job = (JOB_TASK_MODEL *)m;
-
- /* if the EDFACT_guest_create is called, then the pclass must be a
- valid pclass. */
-
- TIMESPEC_ASSIGN(&proc_table[p].timespec_priority, &job->deadline);
-
- lev->deadline_timer[p] = -1;
- lev->dline_miss[p] = 0;
- lev->wcet_miss[p] = 0;
- lev->nact[p] = 0;
-
- if (job->noraiseexc)
- lev->flag[p] = EDFACT_FLAG_NORAISEEXC;
- else
- lev->flag[p] = 0;
-
- lev->period[p] = job->period;
-
- /* there is no bandwidth guarantee at this level, it is performed
- by the level that inserts guest tasks... */
-
- return 0; /* OK, also if the task cannot be guaranteed... */
-}
-
-static void EDFACT_guest_detach(LEVEL l, PID p)
-{
- /* the EDFACT level doesn't introduce any dinamic allocated new field.
- No guarantee is performed on guest tasks... so we don't have to reset
- the NO_GUARANTEE FIELD */
-}
-
-static void EDFACT_guest_dispatch(LEVEL l, PID p, int nostop)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
-
- /* the task state is set to EXE by the scheduler()
- we extract the task from the ready queue
- NB: we can't assume that p is the first task in the queue!!! */
- q_extract(p, &lev->ready);
-}
-
-static void EDFACT_guest_epilogue(LEVEL l, PID p)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
-
- /* the task has been preempted. it returns into the ready queue... */
- q_timespec_insert(p,&lev->ready);
- proc_table[p].status = EDFACT_READY;
-}
-
-static void EDFACT_guest_activate(LEVEL l, PID p)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
-
- /* Insert task in the correct position */
- q_timespec_insert(p,&lev->ready);
- proc_table[p].status = EDFACT_READY;
-
- /* Set the deadline timer */
- if (!(lev->flag[p] & EDFACT_FLAG_NORAISEEXC))
- lev->deadline_timer[p] = kern_event_post(&proc_table[p].timespec_priority,
- EDFACT_timer_guest_deadline,
- (void *)p);
-
-}
-
-static void EDFACT_guest_insert(LEVEL l, PID p)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
-
- /* Insert task in the correct position */
- q_timespec_insert(p,&lev->ready);
- proc_table[p].status = EDFACT_READY;
-}
-
-static void EDFACT_guest_extract(LEVEL l, PID p)
-{
-}
-
-static void EDFACT_guest_endcycle(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void EDFACT_guest_end(LEVEL l, PID p)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
-
- //kern_printf("EDFACT_guest_end: dline timer %d\n",lev->deadline_timer[p]);
- if (proc_table[p].status == EDFACT_READY)
- {
- q_extract(p, &lev->ready);
- //kern_printf("(g_end rdy extr)");
- }
-
- /* we remove the deadline timer, because the slice is finished */
- if (lev->deadline_timer[p] != NIL) {
-// kern_printf("EDFACT_guest_end: dline timer %d\n",lev->deadline_timer[p]);
- event_delete(lev->deadline_timer[p]);
- lev->deadline_timer[p] = NIL;
- }
-
-}
-
-static void EDFACT_guest_sleep(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void EDFACT_guest_delay(LEVEL l, PID p, TIME usdelay)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-/* Registration functions */
-
-/*+ Registration function:
- int flags the init flags ... see EDFACT.h +*/
-void EDFACT_register_level(int flags)
-{
- LEVEL l; /* the level that we register */
- EDFACT_level_des *lev; /* for readableness only */
- PID i; /* a counter */
-
- printk("EDFACT_register_level\n");
-
- /* request an entry in the level_table */
- l = level_alloc_descriptor();
-
- printk(" alloco descrittore %d %d\n",l,(int)sizeof(EDFACT_level_des));
-
- /* alloc the space needed for the EDFACT_level_des */
- lev = (EDFACT_level_des *)kern_alloc(sizeof(EDFACT_level_des));
-
- printk(" lev=%d\n",(int)lev);
-
- /* update the level_table with the new entry */
- level_table[l] = (level_des *)lev;
-
- /* fill the standard descriptor */
- strncpy(lev->l.level_name, EDFACT_LEVELNAME, MAX_LEVELNAME);
- lev->l.level_code = EDFACT_LEVEL_CODE;
- lev->l.level_version = EDFACT_LEVEL_VERSION;
-
- lev->l.level_accept_task_model = EDFACT_level_accept_task_model;
- lev->l.level_accept_guest_model = EDFACT_level_accept_guest_model;
- lev->l.level_status = EDFACT_level_status;
- lev->l.level_scheduler = EDFACT_level_scheduler;
-
- if (flags & EDFACT_ENABLE_GUARANTEE)
- lev->l.level_guarantee = EDFACT_level_guarantee;
- else
- lev->l.level_guarantee = NULL;
-
- lev->l.task_create = EDFACT_task_create;
- lev->l.task_detach = EDFACT_task_detach;
- lev->l.task_eligible = EDFACT_task_eligible;
- lev->l.task_dispatch = EDFACT_task_dispatch;
- lev->l.task_epilogue = EDFACT_task_epilogue;
- lev->l.task_activate = EDFACT_task_activate;
- lev->l.task_insert = EDFACT_task_insert;
- lev->l.task_extract = EDFACT_task_extract;
- lev->l.task_endcycle = EDFACT_task_endcycle;
- lev->l.task_end = EDFACT_task_end;
- lev->l.task_sleep = EDFACT_task_sleep;
- lev->l.task_delay = EDFACT_task_delay;
-
- lev->l.guest_create = EDFACT_guest_create;
- lev->l.guest_detach = EDFACT_guest_detach;
- lev->l.guest_dispatch = EDFACT_guest_dispatch;
- lev->l.guest_epilogue = EDFACT_guest_epilogue;
- lev->l.guest_activate = EDFACT_guest_activate;
- lev->l.guest_insert = EDFACT_guest_insert;
- lev->l.guest_extract = EDFACT_guest_extract;
- lev->l.guest_endcycle = EDFACT_guest_endcycle;
- lev->l.guest_end = EDFACT_guest_end;
- lev->l.guest_sleep = EDFACT_guest_sleep;
- lev->l.guest_delay = EDFACT_guest_delay;
-
- /* fill the EDFACT descriptor part */
- for(i=0; i<MAX_PROC; i++) {
- lev->period[i] = 0;
- lev->deadline_timer[i] = -1;
- lev->flag[i] = 0;
- lev->dline_miss[i] = 0;
- lev->wcet_miss[i] = 0;
- lev->nact[i] = 0;
- }
-
- lev->ready = NIL;
- lev->flags = flags & 0x07;
- lev->U = 0;
-}
-
-bandwidth_t EDFACT_usedbandwidth(LEVEL l)
-{
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
- if (lev->l.level_code == EDFACT_LEVEL_CODE &&
- lev->l.level_version == EDFACT_LEVEL_VERSION)
- return lev->U;
- else
- return 0;
-}
-
-int EDFACT_get_dline_miss(PID p)
-{
- LEVEL l = proc_table[p].task_level;
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
- if (lev->l.level_code == EDFACT_LEVEL_CODE &&
- lev->l.level_version == EDFACT_LEVEL_VERSION)
- return lev->dline_miss[p];
- else
- return -1;
-}
-
-int EDFACT_get_wcet_miss(PID p)
-{
- LEVEL l = proc_table[p].task_level;
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
- if (lev->l.level_code == EDFACT_LEVEL_CODE &&
- lev->l.level_version == EDFACT_LEVEL_VERSION)
- return lev->wcet_miss[p];
- else
- return -1;
-}
-
-int EDFACT_get_nact(PID p)
-{
- LEVEL l = proc_table[p].task_level;
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
- if (lev->l.level_code == EDFACT_LEVEL_CODE &&
- lev->l.level_version == EDFACT_LEVEL_VERSION)
- return lev->nact[p];
- else
- return -1;
-}
-
-int EDFACT_reset_dline_miss(PID p)
-{
- LEVEL l = proc_table[p].task_level;
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
- if (lev->l.level_code == EDFACT_LEVEL_CODE &&
- lev->l.level_version == EDFACT_LEVEL_VERSION)
- {
- lev->dline_miss[p] = 0;
- return 0;
- }
- else
- return -1;
-}
-
-int EDFACT_reset_wcet_miss(PID p)
-{
- LEVEL l = proc_table[p].task_level;
- EDFACT_level_des *lev = (EDFACT_level_des *)(level_table[l]);
- if (lev->l.level_code == EDFACT_LEVEL_CODE &&
- lev->l.level_version == EDFACT_LEVEL_VERSION)
- {
- lev->wcet_miss[p] = 0;
- return 0;
- }
- else
- return -1;
-}
-
Index: pj/auto/tracks.c
===================================================================
--- pj/auto/tracks.c (revision 1344)
+++ pj/auto/tracks.c (nonexistent)
@@ -1,111 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * Massimiliano Giorgi <massy@gandalf.sssup.it>
- * Luca Abeni <luca@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-
-/**
- ------------
- CVS : $Id: tracks.c,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Marco Dallera and Marco Fiocca
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-/*
- * AUTO
- *
- * Another Unuseful Track simulatOr
- *
- * Authors: Marco Dallera
- * Marco Fiocca
- *
- */
-
-/* -------------- */
-/* Track loader */
-/* -------------- */
-
-#include "include/auto.h"
-#include "include/const.h"
-
-track track_list[TRACK_NUMBER];
-
-int track_init()
-{
- track demo1;
- track demo2;
- track brazil;
- track monaco;
-
- strcpy(demo1.name, "demo1.raw");
- demo1.pole_pos.x = 150;
- demo1.pole_pos.y = 35;
- demo1.pole_orient = 0.0;
- demo1.lap = CLOCK;
- demo1.selected = 0;
-
- strcpy(demo2.name, "demo2.raw");
- demo2.pole_pos.x = 150;
- demo2.pole_pos.y = 30;
- demo2.pole_orient = 0.0;
- demo2.lap = CLOCK;
- demo2.selected = 0;
-
- strcpy(brazil.name, "brazil.raw");
- brazil.pole_pos.x = 140;
- brazil.pole_pos.y = 185;
- brazil.pole_orient = 225.0;
- brazil.lap = ANTICLOCK;
- brazil.selected = 0;
-
- strcpy(monaco.name, "monaco.raw");
- monaco.pole_pos.x = 35;
- monaco.pole_pos.y = 315;
- monaco.pole_orient = 85.0;
- monaco.lap = CLOCK;
- monaco.selected = 0;
-
- track_list[0] = demo1;
- track_list[1] = demo2;
- track_list[2] = brazil;
- track_list[3] = monaco;
-
- return 0;
-}
Index: pj/auto/keyb.c
===================================================================
--- pj/auto/keyb.c (revision 1344)
+++ pj/auto/keyb.c (nonexistent)
@@ -1,105 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * Massimiliano Giorgi <massy@gandalf.sssup.it>
- * Luca Abeni <luca@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-
-/**
- ------------
- CVS : $Id: keyb.c,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Marco Dallera and Marco Fiocca
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-/*
- * AUTO
- *
- * Another Unuseful Track simulatOr
- *
- * Authors: Marco Dallera
- * Marco Fiocca
- *
- */
-
-/* ------------------ */
-/* Keyboard handler */
-/* ------------------ */
-
-#include "include/auto.h"
-#include "include/const.h"
-
-
-void keyb_handler() {
- KEY_EVT k;
- keyb_set_map(itaMap);
-
- /* Exit keys: ENTER */
- k.flag = 0;
- k.scan = KEY_ENT;
- k.ascii = 13;
- keyb_hook(k, endfun);
-
- /* Creates a new HARD car */
- k.flag = 0;
- k.scan = KEY_H;
- k.ascii = 'h';
- keyb_hook(k, hard_car_create);
-
- /* Creates a new SOFT car */
- k.flag = 0;
- k.scan = KEY_S;
- k.ascii = 's';
- keyb_hook(k, soft_car_create);
-}
-
-
-void endfun(KEY_EVT *k)
-{
- grx_close();
- cprintf("Ctrl-Brk pressed! Ending...\n");
- sys_end();
-}
-
-
-void my_close(void *arg)
-{
- kern_printf("my_close\n");
-}
-
Index: pj/auto/edfact.h
===================================================================
--- pj/auto/edfact.h (revision 1344)
+++ pj/auto/edfact.h (nonexistent)
@@ -1,151 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * Massimiliano Giorgi <massy@gandalf.sssup.it>
- * Luca Abeni <luca@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: edfact.h,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-
- This file contains the server EDFACT (EDF with pending activations)
-
- Title:
- EDFACT
-
- Task Models Accepted:
- HARD_TASK_MODEL - Hard Tasks (only Periodic)
- wcet field and mit field must be != 0. They are used to set the wcet
- and period of the tasks.
- periodicity field can be only PERIODIC
- drel field is ignored
-
- Guest Models Accepted:
- JOB_TASK_MODEL - a single guest task activation
- Identified by an absolute deadline and a period.
- period field is ignored
-
- Description:
- This module schedule his tasks following the classic EDF scheme.
- The task guarantee is based on the factor utilization approach.
- The tasks scheduled are only periodic.
- All the task are put in a queue and the scheduling is based on the
- deadline value.
- NO GUARANTEE is performed on guest tasks. The guarantee must be performed
- by the level that inserts guest tasks in the EDF level.
- If a task miss a deadline a counter is incremented.
- If a task exausts the wcet a counter is incremented
- No ZOMBIE support!!!!!!
-
- Exceptions raised:
- XUNVALID_GUEST XUNVALID_TASK
- some primitives are not implemented:
- task_sleep, task_delay, guest_endcycle, guest_sleep, guest_delay
-
- XACTIVATION
- If a task is actiated through task_activate or guest_activate more than
- one time
-
- Restrictions & special features:
- - This level doesn't manage the main task.
- - At init time we have to specify:
- . guarantee check
- (when all task are created the system will check that the task_set
- will not use more than the available bandwidth)
- - A function to return the used bandwidth of the level is provided.
- - Functions to return and reset the nact, wcet and dline miss counters
-
-**/
-
-/*
- * Copyright (C) 2001 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-#ifndef __EDFACT_H__
-#define __EDFACT_H__
-
-#include <ll/ll.h>
-#include <kernel/config.h>
-#include <sys/types.h>
-#include <kernel/types.h>
-#include <modules/codes.h>
-
-
-
-
-
-
-
-
-/*+ flags... +*/
-#define EDFACT_ENABLE_GUARANTEE 1 /*+ Task Guarantee enabled +*/
-#define EDFACT_ENABLE_ALL 1
-
-#define EDFACT_FAILED_GUARANTEE 8 /*+ used in the module, unsettabl
- in EDF_register_level... +*/
-
-
-
-
-
-#define ELASTIC_HARD_PCLASS 0x0600
-
-#define EDFACT_LEVELNAME "EDFACT base"
-#define EDFACT_LEVEL_CODE 166
-#define EDFACT_LEVEL_VERSION 1
-
-
-/*+ Registration function:
- int flags Options to be used in this level instance...
-+*/
-void EDFACT_register_level(int flags);
-
-/*+ Returns the used bandwidth of a level +*/
-bandwidth_t EDFACT_usedbandwidth(LEVEL l);
-
-/*+ returns respectively the number of dline, wcet or nact; -1 if error +*/
-int EDFACT_get_dline_miss(PID p);
-int EDFACT_get_wcet_miss(PID p);
-int EDFACT_get_nact(PID p);
-
-/*+ resets respectively the number of dline, wcet miss; -1 if error +*/
-int EDFACT_reset_dline_miss(PID p);
-int EDFACT_reset_wcet_miss(PID p);
-
-#endif
-
Index: pj/auto/info.c
===================================================================
--- pj/auto/info.c (revision 1344)
+++ pj/auto/info.c (nonexistent)
@@ -1,154 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * Massimiliano Giorgi <massy@gandalf.sssup.it>
- * Luca Abeni <luca@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-
-/**
- ------------
- CVS : $Id: info.c,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Marco Dallera and Marco Fiocca
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-/*
- * AUTO
- *
- * Another Unuseful Track simulatOr
- *
- * Authors: Marco Dallera
- * Marco Fiocca
- *
- */
-
-/* ------------------- */
-/* Information panel */
-/* ------------------- */
-
-#include "include/auto.h"
-#include "include/const.h"
-#include "include/utils.h"
-
-extern sem_t grx_mutex;
-
-/* ------------------------------------------------------------------ */
-
-void bar_display(point p1, int width, int height, int border, float var, float max, int color, char *name)
-{
- int background = BLACK;
- int amp = 0;
- point p2;
-
- p2.x = p1.x + width;
- p2.y = p1.y + height;
-
- sem_wait(&grx_mutex);
-
- grx_text(name, p1.x, p1.y + height + 3, color, background);
- grx_rect(p1.x - 1, p1.y - 1, p2.x + 1, p2.y + 1, border);
-
- grx_box(p1.x, p1.y, p2.x, p2.y, BLACK);
- amp = abs(round( var * (float)(p2.x - p1.x) / max ));
- grx_box(p1.x, p1.y, p1.x + amp, p2.y, color);
-
- sem_post(&grx_mutex);
-}
-
-/* ------------------------------------------------------------------ */
-
-void bidir_bar_display(point p1, int width, int height, int border, float var, float max, int color, char *name)
-{
- int background = BLACK;
- int amp = 0;
- point p2;
-
- p2.x = p1.x + width;
- p2.y = p1.y + height;
-
- sem_wait(&grx_mutex);
-
- grx_text(name, p1.x, p1.y + height + 3, color, background);
- grx_rect(p1.x - 1, p1.y - 1, p2.x + 1, p2.y + 1, border);
-
- grx_box(p1.x, p1.y, p2.x, p2.y, BLACK);
- amp = round( var * (float)((p2.x - p1.x)/2) / max );
- if (amp >= 0)
- grx_box((p1.x+p2.x)/2, p1.y, ((p1.x+p2.x)/2)+amp, p2.y, color);
- else
- grx_box((p1.x+p2.x)/2+amp, p1.y, ((p1.x+p2.x)/2), p2.y, color);
- grx_line((p1.x+p2.x)/2, p1.y-2, (p1.x+p2.x)/2, p2.y+2, border);
-
- sem_post(&grx_mutex);
-}
-
-/* ------------------------------------------------------------------ */
-
-void cmd_display()
-{
- point p1;
-
- p1.x = TRACK_X1;
- p1.y = TRACK_Y2+3;
-
- sem_wait(&grx_mutex);
- grx_rect(p1.x, p1.y, p1.x+CMD_WIDTH, p1.y+CMD_HEIGHT, BLUE);
- grx_rect(p1.x+1, p1.y+1, p1.x+CMD_WIDTH-1, p1.y+CMD_HEIGHT-1, CYAN);
- grx_rect(p1.x+2, p1.y+2, p1.x+CMD_WIDTH-2, p1.y+CMD_HEIGHT-2, LIGHTBLUE);
- grx_text("## Another Unuseful Track simulatOr ##",
- p1.x+8, p1.y+8, YELLOW, BLACK);
- grx_text("## -------------------------------- ##",
- p1.x+8, p1.y+16, YELLOW, BLACK);
- grx_text("Marco Dallera", p1.x+8, p1.y+24, GREEN, BLACK);
- grx_text("marchicchio@libero.it", p1.x+120, p1.y+24, GREEN, BLACK);
- grx_text("Marco Fiocca", p1.x+8, p1.y+32, GREEN, BLACK);
- grx_text("marqinho@tiscalinet.it", p1.x+120, p1.y+32, GREEN, BLACK);
-
- grx_text("Command keys ", p1.x+8, p1.y+48, LIGHTBLUE, BLACK);
- grx_text("------------------------", p1.x+8, p1.y+56, LIGHTBLUE, BLACK);
- grx_text("h create a HARD car", p1.x+8, p1.y+64, CYAN, BLACK);
- grx_text("s create a SOFT car", p1.x+8, p1.y+72, CYAN, BLACK);
- grx_text("ENTER exit to DOS", p1.x+8, p1.y+80, CYAN, BLACK);
-
- sem_post(&grx_mutex);
-
-}
-
-/* ------------------------------------------------------------------ */
-
Index: pj/auto/makefile
===================================================================
--- pj/auto/makefile (revision 1344)
+++ pj/auto/makefile (nonexistent)
@@ -1,23 +0,0 @@
-#
-# Auto Makefile
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS= auto auto2 auto3
-
-include $(BASE)/config/example.mk
-
-auto:
- make -f $(SUBMAKE) APP=auto INIT= OTHEROBJS="initfil1.o sensor.o control.o keyb.o info.o utils.o tracks.o jetctrl.o"
-
-auto2:
- make -f $(SUBMAKE) APP=auto INIT= OTHEROBJS="initfil2.o sensor.o control.o keyb.o info.o utils.o tracks.o jetctrl.o"
-
-auto3:
- make -f $(SUBMAKE) APP=auto INIT= OTHEROBJS="initfil3.o sensor.o control.o keyb.o info.o utils.o tracks.o edfact.o jetctrl.o"
-
-
Index: pj/auto/utils.c
===================================================================
--- pj/auto/utils.c (revision 1344)
+++ pj/auto/utils.c (nonexistent)
@@ -1,131 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * Massimiliano Giorgi <massy@gandalf.sssup.it>
- * Luca Abeni <luca@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-
-/**
- ------------
- CVS : $Id: utils.c,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Marco Dallera and Marco Fiocca
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-/*
- * AUTO
- *
- * Another Unuseful Track simulatOr
- *
- * Authors: Marco Dallera
- * Marco Fiocca
- *
- */
-
-#include "include/auto.h"
-#include "include/utils.h"
-#include <string.h>
-#include <stdlib.h>
-
-float rand_01()
-{
- return (((float)(rand()%20) / 100.0) + 0.8);
-}
-
-int rand_color()
-{
- return (rand()%16);
-}
-
-int round(float value)
-{
- return ((int)(value + 0.5));
-}
-
-void reverse(char s[]) {
- int c, i, j;
-
- for (i = 0, j = strlen(s)-1; i<j; i++, j--) {
- c = s[i];
- s[i] = s[j];
- s[j] = c;
- }
-}
-
-char * itoa(int n, char *s) {
- int i, sign;
-
- if ((sign = n) < 0)
- n = -n;
- i = 0;
-
- do {
- s[i++] = n % 10 + '0';
- } while ((n /= 10) > 0);
-
- if (sign < 0)
- s[i++] = '-';
- s[i] = 0;
-
- reverse(s);
-
- return s;
-}
-
-time int2time(int t)
-{
- time ts;
-
- ts.dec = t % 10;
- ts.sec = (t/10) % 60;
- ts.min = (int)(t / 600);
-
- return ts;
-}
-
-
-
-
-
-
-
-
-
-
-
Index: pj/auto/include/auto.h
===================================================================
--- pj/auto/include/auto.h (revision 1344)
+++ pj/auto/include/auto.h (nonexistent)
@@ -1,188 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * Massimiliano Giorgi <massy@gandalf.sssup.it>
- * Luca Abeni <luca@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-
-/**
- ------------
- CVS : $Id: auto.h,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Marco Dallera and Marco Fiocca
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-/*
- * AUTO
- *
- * Another Unuseful Track simulatOr
- *
- * Authors: Marco Dallera
- * Marco Fiocca
- *
- */
-
-/* ------------------- */
-/* Useful structures */
-/* ------------------- */
-
-#ifndef __CAR_H_
-
-#define __CAR_H_
-
-#include <modules/cabs.h>
-#include <kernel/func.h>
-#include <kernel/model.h>
-#include <kernel/types.h>
-#include <drivers/keyb.h>
-#include <drivers/glib.h>
-#include <semaphore.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "const.h"
-
-#define degree_to_rad(a) ((M_PI/180.0)*(a))
-#define rad_to_degree(a) ((180.0/M_PI)*(a))
-
-typedef struct {
- int x;
- int y;
-} point;
-
-typedef struct {
- float x,y;
-} point_f;
-
-typedef struct {
- float mod;
- float phase;
-} vector;
-
-typedef struct {
- point_f pos;
- float orient;
-} car_status;
-
-typedef struct {
- int left_border;
- int right_border;
- int distance;
- float curve;
- point opps_list[MAX_CAR_NUMBER];
- int opps_number;
- int collision;
- int flag;
-} road_info;
-
-typedef struct {
- int left,center,right;
-} road_strip;
-
-typedef struct {
- PID sensor_pid,control_pid;
- int number;
- char driver[MAX_DRIVER_NAME_LENGTH];
- float max_speed, min_acc, max_acc;
- float rage;
- CAB road_status_cab;
- CAB car_status_cab;
- int color;
-} car_params;
-
-typedef struct {
- char name[MAX_TRACK_NAME_LENGTH]; // il nome del file
- point pole_pos; // la posizione di partenza
- float pole_orient; // la direzione di partenza
- int lap; // il senso di marcia: CLOCK, ANTICLOCK
- int selected; // it's a flag marking the actually selected track
-} track;
-
-typedef struct {
- int min;
- int sec;
- int dec;
-} time;
-
-extern car_params cars[MAX_CAR_NUMBER];
-extern char track_img[TRACK_WIDTH*TRACK_HEIGHT];
-extern track track_list[TRACK_NUMBER];
-
-/* ---------------------------------------- */
-/* Functions definition */
-/* ---------------------------------------- */
-
-/* CABs R/W functions */
-int set_car_status(car_status, CAB); // sends the new status according to the control law
-car_status get_car_status(CAB); // reads car status from a CAB
-int set_road_info(road_info, CAB); // sends the new road informations
-road_info get_road_info(CAB); // reads road status values from a CAB
-
-/* Keyboard functions */
-void keyb_handler();
-void endfun(KEY_EVT *);
-void my_close(void *);
-
-/* Display functions */
-void bar_display(point p1, int width, int height, int border, float var, float max, int color, char *name);
-void bidir_bar_display(point p1, int width, int height, int border, float var, float max, int color, char *name);
-void cmd_display();
-
-/* Closing function */
-void byebye();
-void error_msg();
-
-/* Tasks */
-TASK sensor(); // Camera car task
-TASK control(); // Car controller task
-TASK manual(); // Manual driving task
-TASK actuator(); // Graphic drawing task
-TASK info(); // Car informations display task
-
-/* Tasks management */
-void hard_car_create();
-void soft_car_create();
-void killcar();
-
-/* Tracks management */
-int track_init();
-
-#endif
-
Index: pj/auto/include/utils.h
===================================================================
--- pj/auto/include/utils.h (revision 1344)
+++ pj/auto/include/utils.h (nonexistent)
@@ -1,76 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * Massimiliano Giorgi <massy@gandalf.sssup.it>
- * Luca Abeni <luca@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-
-/**
- ------------
- CVS : $Id: utils.h,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Marco Dallera and Marco Fiocca
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-/*
- * AUTO
- *
- * Another Unuseful Track simulatOr
- *
- * Authors: Marco Dallera
- * Marco Fiocca
- *
- */
-
-/* ------------------ */
-/* Useful functions */
-/* ------------------ */
-
-#ifndef __UTILS_H_
-
-#define __UTILS_H_
-
-float rand_01();
-int rand_color();
-int round(float value);
-char * itoa(int n, char *s);
-void reverse(char s[]);
-time int2time(int t);
-
-#endif
Index: pj/auto/include/const.h
===================================================================
--- pj/auto/include/const.h (revision 1344)
+++ pj/auto/include/const.h (nonexistent)
@@ -1,141 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * Massimiliano Giorgi <massy@gandalf.sssup.it>
- * Luca Abeni <luca@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-
-/**
- ------------
- CVS : $Id: const.h,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Marco Dallera and Marco Fiocca
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-/*
- * AUTO
- *
- * Another Unuseful Track simulatOr
- *
- * Authors: Marco Dallera
- * Marco Fiocca
- *
- */
-
-/* ------------------ */
-/* Useful constants */
-/* ------------------ */
-
-#ifndef __CONST_H_
-
-#define __CONST_H_
-
-/* Screen dimensions */
-#define SCREEN_WIDTH 800
-#define SCREEN_HEIGHT 600
-#define SCREEN_BIT_COLORS 8
-
-/* Visible area */
-#define TEL_WIDTH 50
-#define TEL_HEIGHT 50
-
-/* Car dimensions */
-#define CAR_WIDTH 12
-#define CAR_HEIGHT 12
-#define CAR_W 8
-#define CAR_H 10
-
-/* Track dimensions */
-#define TRACK_WIDTH 500
-#define TRACK_HEIGHT 500
-
-/* Track position */
-#define TRACK_X1 0
-#define TRACK_Y1 0
-#define TRACK_X2 TRACK_X1+TRACK_WIDTH-1
-#define TRACK_Y2 TRACK_Y1+TRACK_HEIGHT-1
-
-/* Max number of car on track */
-#define MAX_CAR_NUMBER 10
-#define DRIVERS_NUMBER 20
-#define MAX_DRIVER_NAME_LENGTH 20
-#define MAX_TRACK_NAME_LENGTH 20
-#define TRACK_NUMBER 4
-
-/* Lap direction */
-#define CLOCK 0
-#define ANTICLOCK 1
-
-/* Information display coords */
-#define CMD_WIDTH TRACK_WIDTH
-#define CMD_HEIGHT (SCREEN_HEIGHT-TRACK_HEIGHT-3)
-
-/* Car position limits */
-#define MIN_CAR_X (TRACK_X1 + CAR_WIDTH/2 + 4)
-#define MIN_CAR_Y (TRACK_Y1 + CAR_HEIGHT/2 + 4)
-#define MAX_CAR_X (TRACK_X2 - CAR_WIDTH/2 - 4)
-#define MAX_CAR_Y (TRACK_Y2 - CAR_HEIGHT/2 - 4)
-
-/* Road constants */
-#define LEFT_ONLY 10
-#define RIGHT_ONLY 11
-#define ROAD_OK 12
-#define NO_ROAD 13
-
-/* Collision constants */
-#define COLLISION_LEFT 20
-#define COLLISION_RIGHT 21
-#define COLLISION_BACK 22
-#define NO_COLL 0
-
-/* CAB constants */
-#define ROAD_MSG_DIM sizeof(road_info)
-#define ROAD_MSG_READER 4
-
-#define CAR_MSG_DIM sizeof(car_status)
-#define CAR_MSG_READER 5
-
-/* Tasks parameters */
-#define SENSOR_WCET 3000
-#define SENSOR_PERIOD 40000
-#define CONTROL_WCET 1000
-#define CONTROL_PERIOD 40000
-
-#endif
-
Index: pj/auto/tracks/demo1.raw
===================================================================
--- pj/auto/tracks/demo1.raw (revision 1344)
+++ pj/auto/tracks/demo1.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/tracks/demo2.raw
===================================================================
--- pj/auto/tracks/demo2.raw (revision 1344)
+++ pj/auto/tracks/demo2.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/tracks/monaco.raw
===================================================================
--- pj/auto/tracks/monaco.raw (revision 1344)
+++ pj/auto/tracks/monaco.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/tracks/brazil.raw
===================================================================
--- pj/auto/tracks/brazil.raw (revision 1344)
+++ pj/auto/tracks/brazil.raw (nonexistent)
@@ -1,2 +0,0 @@
- -!"#
\ No newline at end of file
Index: pj/auto/jetctrl.c
===================================================================
--- pj/auto/jetctrl.c (revision 1344)
+++ pj/auto/jetctrl.c (nonexistent)
@@ -1,155 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: jetctrl.c,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-/*
- * this file is directly derived from the demos/jumpball/jetctrl.c .
- * I just added this controls to check when the system will become overloaded
- */
-
-#define WCET_JETDUMMY 200
-#define PERIOD_JETDUMMY 100000
-#define DUMMY_PID 1
-
-#define JET_DUMMY_WIDTH (CMD_WIDTH-370)
-#define JET_DUMMY_HEIGHT (CMD_HEIGHT-40)
-
-/* the point (x, y) is the top left corner */
-#define JET_DUMMY_X (TRACK_X1+360)
-#define JET_DUMMY_Y (TRACK_Y2+32)
-
-// JetControl
-
-#include "semaphore.h"
-#include "include/const.h"
-#include "kernel/func.h"
-#include "drivers/glib.h"
-
-extern sem_t grx_mutex;
-
-/* useful colors... */
-int white;
-int black;
-extern int red;
-extern int lightgray;
-
-TASK jetdummy_task(void *arg)
-{
- TIME now_dummy, last_dummy, diff_dummy, slice;
- struct timespec now, last, diff;
- int x = 0;
- int height;
-
- NULL_TIMESPEC(&last);
- last_dummy = 0;
- for (;;) {
- task_nopreempt();
- jet_getstat(DUMMY_PID, NULL, NULL, NULL, &now_dummy);
- sys_gettime(&now);
- task_preempt();
-
- SUBTIMESPEC(&now, &last, &diff);
- slice = diff.tv_sec * 1000000 + diff.tv_nsec/1000;
- diff_dummy = now_dummy - last_dummy;
-
- height = (int)(JET_DUMMY_HEIGHT*((float)diff_dummy)/((float)slice));
-
- TIMESPEC_ASSIGN(&last, &now);
- last_dummy = now_dummy;
-
- sem_wait(&grx_mutex);
- grx_line(JET_DUMMY_X+x,JET_DUMMY_Y,
- JET_DUMMY_X+x,JET_DUMMY_Y+height ,black);
- grx_line(JET_DUMMY_X+x,JET_DUMMY_Y+height,
- JET_DUMMY_X+x,JET_DUMMY_Y+JET_DUMMY_HEIGHT,white);
- grx_line(JET_DUMMY_X+(x+1)%JET_DUMMY_WIDTH,JET_DUMMY_Y,
- JET_DUMMY_X+(x+1)%JET_DUMMY_WIDTH,JET_DUMMY_Y+JET_DUMMY_HEIGHT,255);
- sem_post(&grx_mutex);
-
- x = (x+1)%JET_DUMMY_WIDTH;
-
- task_endcycle();
- }
-}
-
-void init_jetcontrol(void)
-{
- SOFT_TASK_MODEL m4;
-
- PID p4;
-
- /* useful colors ... */
- white = WHITE;
- black = BLACK;
-
- /* scenario */
- sem_wait(&grx_mutex);
- grx_text("System load",
- JET_DUMMY_X+8, JET_DUMMY_Y-10, lightgray, black);
- grx_rect(JET_DUMMY_X-1, JET_DUMMY_Y-1,
- JET_DUMMY_X+JET_DUMMY_WIDTH, JET_DUMMY_Y+JET_DUMMY_HEIGHT+1, lightgray);
-
- grx_text("100%", JET_DUMMY_X-40, JET_DUMMY_Y, lightgray, black);
- grx_text(" 0%", JET_DUMMY_X-40, JET_DUMMY_Y+JET_DUMMY_HEIGHT-8, lightgray, black);
-
- grx_line(JET_DUMMY_X-1, JET_DUMMY_Y, JET_DUMMY_X-5, JET_DUMMY_Y, lightgray);
- grx_line(JET_DUMMY_X-1, JET_DUMMY_Y+JET_DUMMY_HEIGHT, JET_DUMMY_X-5, JET_DUMMY_Y+JET_DUMMY_HEIGHT, lightgray);
- sem_post(&grx_mutex);
-
- /* jetdummy task */
- soft_task_default_model(m4);
- soft_task_def_period(m4, PERIOD_JETDUMMY);
- soft_task_def_met(m4, WCET_JETDUMMY);
- soft_task_def_usemath(m4);
- p4 = task_create("jdmy", jetdummy_task, &m4, NULL);
- if (p4 == -1) {
- grx_close();
- perror("Could not create task <jetdummy>");
- sys_end();
- }
- task_activate(p4);
-}
-
Index: pj/auto/cars/car10.raw
===================================================================
--- pj/auto/cars/car10.raw (revision 1344)
+++ pj/auto/cars/car10.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/cars/fumo.raw
===================================================================
--- pj/auto/cars/fumo.raw (revision 1344)
+++ pj/auto/cars/fumo.raw (nonexistent)
@@ -1 +0,0 @@
-!!!!!!!!!!!!!!!!!!!!!!
\ No newline at end of file
Index: pj/auto/cars/car11.raw
===================================================================
--- pj/auto/cars/car11.raw (revision 1344)
+++ pj/auto/cars/car11.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/cars/car12.raw
===================================================================
--- pj/auto/cars/car12.raw (revision 1344)
+++ pj/auto/cars/car12.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/cars/car13.raw
===================================================================
--- pj/auto/cars/car13.raw (revision 1344)
+++ pj/auto/cars/car13.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/cars/car14.raw
===================================================================
--- pj/auto/cars/car14.raw (revision 1344)
+++ pj/auto/cars/car14.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/cars/car15.raw
===================================================================
--- pj/auto/cars/car15.raw (revision 1344)
+++ pj/auto/cars/car15.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/cars/car0.raw
===================================================================
--- pj/auto/cars/car0.raw (revision 1344)
+++ pj/auto/cars/car0.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/cars/car1.raw
===================================================================
--- pj/auto/cars/car1.raw (revision 1344)
+++ pj/auto/cars/car1.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/cars/car2.raw
===================================================================
--- pj/auto/cars/car2.raw (revision 1344)
+++ pj/auto/cars/car2.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/cars/car3.raw
===================================================================
--- pj/auto/cars/car3.raw (revision 1344)
+++ pj/auto/cars/car3.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/cars/car4.raw
===================================================================
--- pj/auto/cars/car4.raw (revision 1344)
+++ pj/auto/cars/car4.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/cars/car5.raw
===================================================================
--- pj/auto/cars/car5.raw (revision 1344)
+++ pj/auto/cars/car5.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/cars/car6.raw
===================================================================
--- pj/auto/cars/car6.raw (revision 1344)
+++ pj/auto/cars/car6.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/cars/car7.raw
===================================================================
--- pj/auto/cars/car7.raw (revision 1344)
+++ pj/auto/cars/car7.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/cars/boom.raw
===================================================================
--- pj/auto/cars/boom.raw (revision 1344)
+++ pj/auto/cars/boom.raw (nonexistent)
@@ -1 +0,0 @@
-      
\ No newline at end of file
Index: pj/auto/cars/car8.raw
===================================================================
--- pj/auto/cars/car8.raw (revision 1344)
+++ pj/auto/cars/car8.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/cars/car9.raw
===================================================================
--- pj/auto/cars/car9.raw (revision 1344)
+++ pj/auto/cars/car9.raw (nonexistent)
@@ -1 +0,0 @@
-
\ No newline at end of file
Index: pj/auto/auto.c
===================================================================
--- pj/auto/auto.c (revision 1344)
+++ pj/auto/auto.c (nonexistent)
@@ -1,533 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * Massimiliano Giorgi <massy@gandalf.sssup.it>
- * Luca Abeni <luca@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-
-/**
- ------------
- CVS : $Id: auto.c,v 1.1.1.1 2002-09-02 09:37:42 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:42 $
- ------------
-**/
-
-/*
- * Copyright (C) 2000 Marco Dallera and Marco Fiocca
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-/*
- * AUTO
- *
- * Another Unuseful Track simulatOr
- *
- * Authors: Marco Dallera
- * Marco Fiocca
- *
- */
-
-#include "include/auto.h"
-#include "include/const.h"
-#include "include/utils.h"
-
-int car_number;
-car_params cars[MAX_CAR_NUMBER];
-char drivers[DRIVERS_NUMBER][MAX_DRIVER_NAME_LENGTH] = {
- "M.Schumacher",
- "D.Coulthard",
- "R.Schumacher",
- "M.Hakkinen",
- "R.Barrichello",
- "J.P.Montoya",
- "E.Irvine",
- "J.Trulli",
- "H.Frentzen",
- "J.Villeneuve",
- "J.Alesi",
- "G.Fisichella",
- "O.Panis",
- "O.Wurz",
- "J.Button",
- "P.P.Diniz",
- "P.De La Rosa",
- "T.Marques",
- "R.Zonta",
- "G.Mazzacane"
-};
-
-extern char sprite[18][CAR_WIDTH*CAR_HEIGHT];
-
-/* Semaphores */
-sem_t grx_mutex;
-
-/* Useful colors */
-int red = rgb16(255, 0, 0);
-int green = rgb16( 0, 255, 0);
-int blue = rgb16( 0, 0, 255);
-int lightgray = rgb16(192, 192, 192);
-
-/* JetCTRL Initialization */
-void init_jetcontrol(void);
-
-/* -------------------------------------------------------*/
-
-/* --------------------- */
-/* Handling car status */
-/* --------------------- */
-
-int set_car_status(car_status cs, CAB cab_id) {
- char *msg;
-
- msg = cab_reserve(cab_id);
- memcpy(msg, &cs, CAR_MSG_DIM);
- return(cab_putmes(cab_id, msg));
-}
-
-car_status get_car_status(CAB cab_id) {
- char *msg;
- car_status status;
-
- msg = cab_getmes(cab_id);
- memcpy(&status, msg, CAR_MSG_DIM);
- cab_unget(cab_id, msg);
-
- return (status);
-}
-
-/* ---------------------------- */
-/* Handling road informations */
-/* ---------------------------- */
-
-int set_road_info(road_info info, CAB road_status_cab) {
- char *msg;
-
- msg = cab_reserve(road_status_cab);
- memcpy(msg, &info, ROAD_MSG_DIM);
- return(cab_putmes(road_status_cab, msg));
-}
-
-road_info get_road_info(CAB road_status_cab) {
- char *msg;
- road_info info;
-
- msg = cab_getmes(road_status_cab);
- memcpy(&info, msg, ROAD_MSG_DIM);
- cab_unget(road_status_cab, msg);
-
- return (info);
-}
-
-/* -------------------------------------------------------*/
-
-/* Closing function */
-void byebye()
-{
- grx_close();
-
- // we need clear to reposition the cursor in the right place after
- // going back from the graphical mode.
- clear();
-
- kern_printf("Race is over!\n");
-}
-
-/* -------------------------------------------------------*/
-
-/* ------------------- */
-/* Hard car creation */
-/* ------------------- */
-
-void hard_car_create() {
- car_params cp;
- HARD_TASK_MODEL sensor_m, control_m;
- PID sensor_pid, control_pid;
- TIME seed; /* used to init the random seed */
- int drv_ind;
-
- if (car_number >= MAX_CAR_NUMBER) return;
-
- /* Randomize!!!! */
- seed = sys_gettime(NULL);
- srand(seed);
-
- /* CAB creation */
- cp.road_status_cab = cab_create("road_cab", ROAD_MSG_DIM, ROAD_MSG_READER);
- cp.car_status_cab = cab_create("car_cab", CAR_MSG_DIM, CAR_MSG_READER);
-
- /* Car parameters initialization */
- cp.max_speed = rand_01();
- cp.min_acc = cp.max_speed;
- cp.max_acc = cp.max_speed;
- cp.rage = cp.max_speed;
- cp.color = 3+car_number;
- cp.number = car_number;
- drv_ind = DRIVERS_NUMBER-1 - (int)(((cp.rage-0.8+0.005) * (float)DRIVERS_NUMBER) / 0.2);
-
- /* Sets driver's name without duplications */
- strcpy(cp.driver, drivers[drv_ind]);
- while (!strcmp(cp.driver,"***"))
- strcpy(cp.driver, drivers[++drv_ind%DRIVERS_NUMBER]);
- strcpy(drivers[drv_ind],"***");
-
- cars[car_number] = cp;
-
- /* ------------ */
- /* Task Calls */
- /* ------------ */
-
- /* sensor task creation */
- hard_task_default_model(sensor_m);
-
- hard_task_def_arg(sensor_m, (void *)car_number);
- hard_task_def_wcet(sensor_m, SENSOR_WCET);
- hard_task_def_mit(sensor_m, SENSOR_PERIOD);
- hard_task_def_usemath(sensor_m);
- sensor_pid = task_create("camera", sensor, &sensor_m, NULL);
- if(sensor_pid == -1)
- sys_end();
-
- /* control task creation */
- hard_task_default_model(control_m);
- hard_task_def_arg(control_m, (void *)car_number);
- hard_task_def_wcet(control_m, CONTROL_WCET);
- hard_task_def_mit(control_m, CONTROL_PERIOD);
- hard_task_def_usemath(control_m);
- control_pid = task_create("controller", control, &control_m, NULL);
- if(control_pid == -1)
- sys_end();
-
- cars[car_number].sensor_pid = sensor_pid;
- cars[car_number].control_pid = control_pid;
- car_number++; // increases cars number
-
- task_activate(sensor_pid);
- task_activate(control_pid);
-}
-
-/* -------------------------------------------------------*/
-
-/* ------------------- */
-/* Soft car creation */
-/* ------------------- */
-
-void soft_car_create() {
- car_params cp;
- SOFT_TASK_MODEL sensor_m, control_m;
- PID sensor_pid, control_pid;
- TIME seed; /* used to init the random seed */
- int drv_ind;
-
- if (car_number >= MAX_CAR_NUMBER) return;
-
- /* Randomize!!!! */
- seed = sys_gettime(NULL);
- srand(seed);
-
- /* CAB creation */
- cp.road_status_cab = cab_create("road_cab", ROAD_MSG_DIM, ROAD_MSG_READER);
- cp.car_status_cab = cab_create("car_cab", CAR_MSG_DIM, CAR_MSG_READER);
-
- /* Car parameters initialization */
- cp.max_speed = rand_01();
- cp.min_acc = cp.max_speed;
- cp.max_acc = cp.max_speed;
- cp.rage = cp.max_speed;
- cp.color = 8+car_number;
- cp.number = car_number;
- drv_ind = DRIVERS_NUMBER-1 - (int)(((cp.rage-0.8+0.005) * (float)DRIVERS_NUMBER) / 0.2);
-
- /* Sets driver's name without duplications */
- strcpy(cp.driver, drivers[drv_ind]);
- while (!strcmp(cp.driver,"***"))
- strcpy(cp.driver, drivers[++drv_ind%DRIVERS_NUMBER]);
- strcpy(drivers[drv_ind],"***");
- cars[car_number] = cp;
-
- /* ------------ */
- /* Task Calls */
- /* ------------ */
-
- /* sensor task creation */
- soft_task_default_model(sensor_m);
-
- soft_task_def_arg(sensor_m, (void *)car_number);
- soft_task_def_met(sensor_m, SENSOR_WCET);
- soft_task_def_period(sensor_m, SENSOR_PERIOD);
- soft_task_def_usemath(sensor_m);
- sensor_pid = task_create("camera", sensor, &sensor_m, NULL);
- if(sensor_pid == -1)
- sys_end();
-
- /* control task creation */
- soft_task_default_model(control_m);
- soft_task_def_arg(control_m, (void *)car_number);
- soft_task_def_met(control_m, CONTROL_WCET);
- soft_task_def_period(control_m, CONTROL_PERIOD);
- soft_task_def_usemath(control_m);
- control_pid = task_create("controller", control, &control_m, NULL);
- if(control_pid == -1)
- sys_end();
-
- cars[car_number].sensor_pid = sensor_pid;
- cars[car_number].control_pid = control_pid;
- car_number++; // increases cars number
-
- task_activate(sensor_pid);
- task_activate(control_pid);
-}
-
-/* -------------------------------------------------------*/
-
-/* ------------------- */
-/* The main function */
-/* ------------------- */
-
-int main(int argc, char **argv) {
- TIME seed; /* used to init the random seed */
-
- if (MAX_CAB < 30) {
- cprintf("The application needs at least 30 CABS.\n"
- "Please set the MAX_CAB #define to 30 or more...\n"
- "...(see include/modules/cabs.h)\n");
- sys_end();
- }
-
- /* Set the exception handler */
- set_exchandler_grx();
-
- /* Set the closing function */
- sys_atrunlevel(byebye, NULL, RUNLEVEL_BEFORE_EXIT);
-
- /* Keyboard handling */
- keyb_handler();
- kern_printf("KEYBOARD initialized...\n");
-
- /* Graphics mutex */
- sem_init(&grx_mutex, 0, 1);
-
- /* Graphics init */
- grx_init();
- grx_open(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BIT_COLORS);
-
- /* Track drawing */
- sem_wait(&grx_mutex);
- grx_setcolor(46,0,0,0);
- grx_setcolor(43,255,255,255);
- grx_setcolor(26,255,74,33);
- grx_setcolor(27,255,255,255);
- grx_setcolor(1,8,8,8);
- grx_setcolor(3,255,0,0);
- grx_setcolor(28,255,50,0);
- grx_setcolor(29,255,90,0);
- grx_setcolor(30,255,130,0);
- grx_setcolor(31,255,170,0);
- grx_setcolor(32,255,210,0);
- grx_setcolor(33,48,48,48);
-
- grx_putimage(TRACK_X1, TRACK_Y1, TRACK_X2, TRACK_Y2, track_img);
- sem_post(&grx_mutex);
-
- /* Command and info display */
- cmd_display();
-
- /* JetCTRL Initialization */
- init_jetcontrol();
-
- /* Randomize!!!! */
- seed = sys_gettime(NULL);
- srand(seed);
-
- car_number = 0;
-
- /* ------------ */
- /* Task Calls */
- /* ------------ */
-
- hard_car_create();
-
- return 0;
-}
-
-/* -------------------------------------------------------*/
-
-void read_track(int i)
-{
- DOS_FILE *f; // DOS file descriptor
- int file_length;
- int index;
- char filename[100];
- int err; // Error code
-
- /* Init track_list */
- track_init();
-
- /* Set the selected track from track_list */
- if (i < TRACK_NUMBER)
- index = i;
- else
- index = 0;
- cprintf("Selected index = %d\n", index);
-
- strcpy(filename, strcat("tracks/", track_list[index].name));
- cprintf("File to open = %s\n", filename);
- track_list[index].selected = 1;
-
- /* open the DOS file for reading (you can specify only "r" or "w") */
- f = DOS_fopen(filename,"r");
-
- /* check for open errors */
- if (!f) {
- err = DOS_error(); // error!!
-
- /* note that if you call DOS_error() here, it return 0!!! */
- cprintf("Error %d opening %s...\n", err, filename);
- file_length = 0;
- byebye();
- return;
- }
-
- /* read track file */
- file_length = DOS_fread(&track_img, 1, TRACK_WIDTH*TRACK_HEIGHT, f);
-
- /* check for errors */
- err = DOS_error();
-
- cprintf("Read %d bytes from %s...\n", file_length, filename);
-
- if (err) {
- cprintf("Error %d reading %s...\n", err, filename);
- file_length = 0;
- /* there is not return because I want to close the file! */
- }
-
- /* Close the file */
- cprintf("Closing file %s...\n", filename);
- DOS_fclose(f);
- cprintf("File %s closed successfully!\n", filename);
-
-}
-
-/* -------------------------------------------------------*/
-
-void read_sprites()
-{
- /* DOS file descriptor */
- DOS_FILE *f;
- int myfilebuf_length,i;
- char filename[100];
-
- /* Error code */
- int err;
- i=0;
-
- for ( i=0; i < 16; i++) {
- sprintf(filename,"cars/car%d.raw",i);
- f = DOS_fopen(filename,"r");
-
- // check for open errors
- if (!f) {
- // error!!
- err = DOS_error();
-
- // note that if you call DOS_error() here, it return 0!!!
- cprintf("Error %d opening %s...\n", err, filename);
- myfilebuf_length = 0;
- return;
- }
-
- // read from file
- myfilebuf_length = DOS_fread(&sprite[i][0],1,CAR_WIDTH*CAR_HEIGHT,f);
-
- // check for errors
- err = DOS_error();
-
- cprintf("Read %d bytes from %s...\n", myfilebuf_length, filename);
-
- if (err) {
- cprintf("Error %d reading %s...\n", err, filename);
- myfilebuf_length = 0;
- // there is not return because I want to close the file!
- }
-
- // Close the file
- DOS_fclose(f);
- }
-
- f = DOS_fopen("cars/boom.raw","r");
- if (!f) {
- err = DOS_error();
-
- cprintf("Error %d opening boom.raw...\n", err);
- myfilebuf_length = 0;
- return;
- }
-
- myfilebuf_length = DOS_fread(&sprite[16][0],1,CAR_WIDTH*CAR_HEIGHT,f);
-
- err = DOS_error();
-
- cprintf("Read %d bytes from boom.raw...\n", myfilebuf_length);
-
- if (err) {
- cprintf("Error %d reading boom.raw...\n", err);
- myfilebuf_length = 0;
- }
-
- DOS_fclose(f);
-
- f = DOS_fopen("cars/fumo.raw","r");
- if (!f) {
- err = DOS_error();
-
- cprintf("Error %d opening fumo.raw...\n", err);
- myfilebuf_length = 0;
- return;
- }
-
- myfilebuf_length = DOS_fread(&sprite[17][0],1,CAR_WIDTH*CAR_HEIGHT,f);
-
- err = DOS_error();
-
- cprintf("Read %d bytes from fumo.raw...\n", myfilebuf_length);
-
- if (err) {
- cprintf("Error %d reading fumo.raw...\n", err);
- myfilebuf_length = 0;
- }
-
- DOS_fclose(f);
-
-}
-
Index: pj/myapp2/myapp.c
===================================================================
--- pj/myapp2/myapp.c (revision 1344)
+++ pj/myapp2/myapp.c (nonexistent)
@@ -1,55 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
- *
- * Authors : Paolo Gai <pj@hartik.sssup.it>
- * (see authors.txt for full list of hartik's authors)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-// if you want to use some functions, types, task models provided
-// by your new module
-
-#include "mymod.h"
-
-// then, include any file you want here
-
-// then, the classic C-style function
-int main(int argc, char **argv)
-{
- // ... your stuff here
- return 0;
-}
-
-
-
-
-
-
-
-
Index: pj/myapp2/readme.txt
===================================================================
--- pj/myapp2/readme.txt (revision 1344)
+++ pj/myapp2/readme.txt (nonexistent)
@@ -1,7 +0,0 @@
-This is a template application, and it DOES NOTHING!!!
-
-This is only an example package.
-
-Please refer to the How To Compile reference guide for more informations.
-
-Paolo
Index: pj/myapp2/makefile
===================================================================
--- pj/myapp2/makefile (revision 1344)
+++ pj/myapp2/makefile (nonexistent)
@@ -1,16 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=..
-endif
-include $(BASE)/config/config.mk
-
-PROGS= $(APP)
-
-include $(BASE)/config/example.mk
-
-$(APP):
- make -f $(SUBMAKE) INIT=hartik3.o OTHEROBJS=
-
Index: pj/slsh/slshtest.c
===================================================================
--- pj/slsh/slshtest.c (revision 1344)
+++ pj/slsh/slshtest.c (nonexistent)
@@ -1,173 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * Massimiliano Giorgi <massy@gandalf.sssup.it>
- * Luca Abeni <luca@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: slshtest.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-
- Slot shifting test
-
-
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai and Tomas Lennvall
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <kernel/config.h>
-#include "kernel/kern.h"
-#include "slsh.h"
-#include "drivers/keyb.h"
-
-/* a slot length of 100 ms */
-#define SLOT_LENGTH 100000
-
-
-TASK static1(void)
-{
- int i = 0;
-
- kern_printf("Static1\n");
- while(sys_gettime(NULL) < 10000) i++;
-
- return 0;
-}
-
-TASK static2(void)
-{
- int i = 0;
-
- kern_printf("Static2\n");
- while(sys_gettime(NULL) < 10000) i++;
-
- return 0;
-}
-
-
-TASK static3(void)
-{
- kern_printf("Static3\n");
-
- return 0;
-}
-
-void my_end(KEY_EVT *e)
-{
- sys_end();
-}
-
-int main(int argc, char** argv)
-{
- STATIC_TASK_MODEL s;
- // HARD_TASK_MODEL h_aper;
- // SOFT_TASK_MODEL u;
- PID p1,p2,p3;
- struct timespec x;
-
- KEY_EVT emerg;
-
- kern_cli();
- x.tv_sec=5;
- kern_event_post(&x,(void (*)(void *))sys_end,NULL);
- kern_sti();
-
- //keyb_set_map(itaMap);
- emerg.ascii = 'x';
- emerg.scan = KEY_X;
- emerg.flag = ALTL_BIT;
- keyb_hook(emerg,my_end);
-
- /* set som variables in the scheduling level */
- SLSH_set_interval(0, 0, 8, 5);
- SLSH_set_interval(0, 8, 17, 7);
- SLSH_set_interval(0, 17, 20, 1);
-
- SLSH_set_variables(0, SLOT_LENGTH);
-
- static_task_default_model(s);
- static_task_def_group(s, 1);
-
- /* define time i ms */
- /* static1 task */
- static_task_def_est(s, 0);
- static_task_def_dabs(s, 800000);
- static_task_def_wcet(s, 500000);
- static_task_def_interval(s, 0);
-
- kern_printf("In main, before task creation\n");
-
- p1 = task_create("Static 1", static1, &s, NULL);
- if(p1 == NIL)
- kern_printf("Cannot create: Static1!\n");
-
- /* Static2 task */
- static_task_def_est(s, 800000);
- static_task_def_dabs(s, 1700000);
- static_task_def_wcet(s, 700000);
- static_task_def_interval(s, 1);
-
- p2 = task_create("Static 2", static2, &s, NULL);
- if(p2 == NIL)
- kern_printf("Cannot create: Static2!\n");
-
- /* Static3 task */
- static_task_def_est(s, 1700000);
- static_task_def_dabs(s, 2000000);
- static_task_def_wcet(s, 100000);
- static_task_def_interval(s, 2);
-
-
- p3 = task_create("Static3", static3, &s, NULL);
- if(p3 == NIL)
- kern_printf("Cannot create: Static3!\n");
-
-
- /* End task */
- /*hard_task_default_model(h_aper);
-
-
- hard_task_def_wcet(h_aper, 100000);
- */
- kern_printf("After task creation\n");
-
- group_activate(1);
-
- return 0;
-}
Index: pj/slsh/slsh.c
===================================================================
--- pj/slsh/slsh.c (revision 1344)
+++ pj/slsh/slsh.c (nonexistent)
@@ -1,842 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * Massimiliano Giorgi <massy@gandalf.sssup.it>
- * Luca Abeni <luca@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: slsh.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-
- This file contains the scheduling module for Slot-Shifting.
-
- Read slsh.h for further details.
-
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-#include "slsh.h"
-#include <ll/stdio.h>
-#include <ll/stdlib.h>
-#include <ll/string.h>
-#include <ll/math.h> /* for ceil(...) */
-#include <ll/ll.h> /* for memcpy(...) */
-#include <kernel/model.h>
-#include <kernel/descr.h>
-#include <kernel/var.h>
-#include <kernel/func.h>
-
-//#define eslsh_printf kern_printf
-#define slsh_printf printk
-
-/* Keeps information about static and guaranteed tasks */
-typedef struct {
- int est;
- int dabs;
- int interval;
-} SLSH_task;
-
-/*+ Status used in the level +*/
-#define SLSH_READY MODULE_STATUS_BASE
-#define SLSH_WAIT MODULE_STATUS_BASE + 1
-#define SLSH_IDLE MODULE_STATUS_BASE + 2
-#define SLSH_WCET_VIOLATED MODULE_STATUS_BASE + 3
-
-/*+ defines +*/
-#define MAX_INTERVALS 1000 /* 1000 intervals is max, for now */
-
-/******+ the level redefinition for the SLOT SHIFT level +*******/
-typedef struct {
- level_des l; /*+ the standard level descriptor+*/
-
- /* task lists */
- SLSH_task tasks[MAX_PROC]; /* est and dl's for static and guaranteed task */
-
- QUEUE idle_statics; /* finished static tasks */
-
- QQUEUE unspecified; /* tasks with only a wcet */
-
- /* the Intervals list */
- SLSH_interval intervals[MAX_INTERVALS];
- int current; /* current interval */
- int last; /* last interval */
-
- int slot; /* slot shifting time */
- TIME slot_length; /* slothlength in real system time*/
- int LCM; /* length (in slots) of ofline schedule */
-
- int slot_event; /* save the event */
-} SLSH_level_des;
-
-
-/* Which task models the Slot-Shifting module accepts */
-static int SLSH_level_accept_task_model(LEVEL l, TASK_MODEL* m)
-{
- HARD_TASK_MODEL* h;
- SOFT_TASK_MODEL* s;
-
- /* Check the models */
- switch(m->pclass)
- {
- case STATIC_PCLASS: /* offline scheduled tasks */
- return 0;
- case HARD_PCLASS: /* hard aperiodic tasks */
- h = (HARD_TASK_MODEL *) m;
- if(h->drel != 0 && h->wcet != 0) /* must be set */
- return 0;
- break;
- case SOFT_PCLASS: /* soft aperiodic tasks */
- s = (SOFT_TASK_MODEL *) m;
- if(s->wcet != 0) /* must be set */
- return 0;
- break;
- default:
- }
-
- return -1; /* Not accepted model */
-}
-
-
-static void SLSH_level_status(LEVEL l)
-{
- kern_printf("Level status not implemented\n");
-}
-
-/* check if some tasks are ready, return 0 if ready, -1 otherwise */
-static int SLSH_R(SLSH_task* tasks)
-{
- int s;
-
- /* for all static tasks */
- for(s = 0; tasks[s].est != -1; ++s)
- {
- if(proc_table[s].status == SLSH_READY)
- return 0;
- }
- return -1;
-}
-
-/* check if unspecified exists, return 0 if it exists, -1 otherwise */
-static int SLSH_T(QQUEUE unspecified)
-{
- if(unspecified.first != NIL)
- return 0;
- else
- return -1;
-}
-
-/* return the sc in an interval */
-static int SLSH_sc(SLSH_interval* intervals, int i)
-{
- return intervals[i].sc;
-}
-/* return a static task from current interval or a guaranted task */
-static PID SLSH_staticOrGuaranteed(SLSH_level_des* lev)
-{
- int lowest_dl = 0; /* lowest dl found */
- PID pid = 0; /* static or guaranteed task */
- int t;
-
- /* Decide according to EDF, go through all static & guaranteed tasks */
- for(t = 0; t < MAX_PROC; ++t)
- {
- /* static tasks */
- if(proc_table[t].pclass == STATIC_PCLASS)
- {
- /* static task must belong to current interval */
- if(lev->tasks[t].interval == lev->current)
- {
- /* only ready tasks */
- if(proc_table[t].status == SLSH_READY)
- {
- /* a new lower dl was found */
- if(lev->tasks[t].dabs < lowest_dl)
- {
- lowest_dl = lev->tasks[t].dabs;
- pid = t;
- }
- }
- }
- } /* guaranteed tasks */
- else if(proc_table[t].pclass == HARD_PCLASS)
- {
- /* only ready tasks */
- if(proc_table[t].status == SLSH_READY)
- {
- /* a new lower dl was found */
- if(lev->tasks[t].dabs < lowest_dl)
- {
- lowest_dl = lev->tasks[t].dabs;
- pid = t;
- }
- }
- }
- }/* for all tasks */
-
- return pid;
-}
-
-/* return a static task among the candidates, all ready statics */
-static PID SLSH_candidates(SLSH_task* tasks)
-{
- int lowest_dl = 0;
- PID pid;
- int t;
-
- /* Use the EDL algorithm again to decide which task to run */
- for(t = 0; t < MAX_PROC; ++t)
- {
- /* only static tasks */
- if(proc_table[t].pclass == STATIC_PCLASS)
- {
- /* only ready tasks */
- if(proc_table[t].status == SLSH_READY)
- {
- /* a new lower dl was found */
- if(tasks[t].dabs < lowest_dl)
- {
- lowest_dl = tasks[t].dabs;
- pid = t;
- }
- }/* all ready tasks */
- }/* all static tasks */
- }/* for all tasks */
-
- return pid;
-}
-
-/* decrease the sc in a interval by amount */
-void SLSH_decSc(SLSH_interval* intervals, int i, int amount)
-{
- intervals[i].sc -= amount;
-}
-
-void SLSH_incSc(SLSH_interval* intervals, int i, int amount)
-{
- intervals[i].sc += amount;
-}
-
-/* swap the sc between intervals, also consider intervals with negative sc */
-void SLSH_swapSc(SLSH_interval* intervals, int current, int task_interval)
-{
- /* decrease the sc in the current interval */
- SLSH_decSc(intervals, current, 1);
-
- /* update the other interval(s) */
- if(intervals[task_interval].sc < 0) /* negative sc */
- {
- /* special case, increase next interval sc by 1 and also current interval (borrowing) */
- if(task_interval == current + 1)
- {
- SLSH_incSc(intervals, task_interval, 1);
- SLSH_incSc(intervals, current, 1);
- }
- else /* increase every interval sc that is negative between current and task_interval */
- {
- while(task_interval > current && intervals[task_interval].sc < 0)
- {
- SLSH_incSc(intervals, task_interval, 1);
- task_interval--;
- }
- }
- }
- else /* ordinary swapping */
- SLSH_incSc(intervals, task_interval, 1);
-}
-
-/* The scheduler, decides which task to run. */
-static PID SLSH_level_scheduler(LEVEL l)
-{
- SLSH_level_des* lev = (SLSH_level_des *)(level_table[l]);
- PID pid;
-
- /* The scheduler choses among static, guaranteed (hard aperiodic) and
- unspecified (soft aperiodic) tasks */
- /* no ready tasks and no sc, execute idle task */
- if(SLSH_R(lev->tasks) == 0 && SLSH_sc(lev->intervals, lev->current) == 0)
- return NIL;
- /* must execute a static from current intervall or a guaranteed task */
- else if(SLSH_R(lev->tasks) > 0 && SLSH_sc(lev->intervals, lev->current) == 0)
- return SLSH_staticOrGuaranteed(lev);
- /* sc available... */
- else if(SLSH_R(lev->tasks) > 0 && SLSH_sc(lev->intervals, lev->current) > 0)
- {
- /* If unspecified exist, execute it according to FIFO order */
- if(SLSH_T(lev->unspecified) == 0)
- {
- SLSH_decSc(lev->intervals, lev->current, 1); /* decrease sc by 1 */
- return (PID)qq_getfirst(&lev->unspecified);
- }
- else /* No unspecified, execute task from candidates (statics) */
- {
- pid = SLSH_candidates(lev->tasks);
-
- /* sc needs to be swapped */
- if(lev->tasks[pid].interval != lev->current)
- SLSH_swapSc(lev->intervals, lev->tasks[pid].interval, lev->current);
-
- return pid;
- }
- }
-
- kern_printf("(SLSH s)");
- return NIL;
-}
-
-/* not used, slot-shifting handles all guarantees itself, it handles all bandwidth */
-static int SLSH_level_guarantee(LEVEL l, bandwidth_t *freebandwidth)
-{
- *freebandwidth = 0;
- return 1;
-}
-
-/* get the interval that x is in */
-static int SLSH_getInterval(SLSH_interval* intervals, int x, int last)
-{
- int i;
-
- /* search through the intervals */
- for(i = 0; i <= last; ++i)
- {
- /* I is in the interval where start is smaller or equal and end is bigger */
- if(intervals[i].start <= x && x < intervals[i].end)
- return i;
- }
- return -1;
-}
-
-/* get the start of the interval I */
-static int SLSH_intervalStart(SLSH_interval* intervals, int I)
-{
- return intervals[I].start;
-}
-
-/* split interval I into two parts, slow because of copying. OBS!!! no check if there is
- enough space in the intervals array */
-static void SLSH_splitInterval(SLSH_level_des* lev, int I, int dabs)
-{
- SLSH_interval left_interval;
- int i;
-
-
- lev->last++;
-
- /* move every interval above and including I */
- for(i = lev->last; i > I; --i)
- memcpy(&lev->intervals[i], &lev->intervals[i - 1], sizeof(SLSH_interval));
-
- /* Left interval start, end and length */
- left_interval.start = lev->intervals[I].start;
- left_interval.end = dabs;
- left_interval.length = left_interval.end - left_interval.start;
-
- /* Right interval (uses old interval struct) start and length end remains as the old value */
- lev->intervals[I + 1].start = dabs;
- lev->intervals[I + 1].length = lev->intervals[I + 1].end - lev->intervals[I + 1].start;
-
- /* check if sc still exists in the right interval */
- if(lev->intervals[I + 1].length - lev->intervals[I + 1].maxt > 0)
- {
- lev->intervals[I + 1].sc = lev->intervals[I + 1].length - lev->intervals[I + 1].maxt;
- left_interval.sc = left_interval.length; /* the whole interval is free, for now... */
- }
- else /* no sc in the right interval */
- {
- lev->intervals[I + 1].maxt = lev->intervals[I + 1].length;
- left_interval.sc = lev->intervals[I + 1].sc; /* all sc in left interval */
- lev->intervals[I + 1].sc = 0;
- }
-
- /* insert the new interval */
- memcpy(&lev->intervals[I], &left_interval, sizeof(SLSH_interval));
-}
-
-/* Reduce the sc from back to front by the wcet amount, interval splitting may be neccesary */
-static void SLSH_updateSc(SLSH_level_des* lev, HARD_TASK_MODEL* h)
-{
- int dabs = ceil((lev->slot + h->drel)/lev->slot_length); /* absolute deadline of request */
- int dabs_interval = SLSH_getInterval(lev->intervals, dabs, lev->last); /* interval where dabs is */
- int C = ceil(h->wcet/lev->slot_length); /* amount of sc to reduce */
- int sc = 0;
- int i;
-
- /* check if interval splitting is neccesary */
- if(lev->intervals[dabs_interval].end != dabs)
- SLSH_splitInterval(lev, dabs_interval, dabs);
-
- /* decrease sc in all intervals that are neccesary from dabs_interval o current */
- for(i = dabs_interval; i >= lev->current && C > 0; --i)
- {
- if((sc = SLSH_sc(lev->intervals, i)) >= 0) /* only decrease where sc exists */
- {
- if(sc > C) /* the last sc dec */
- {
- SLSH_decSc(lev->intervals, i, C);
- C = 0;
- }
- else /* to little sc in this interval, decrease it to 0 */
- {
- C -= SLSH_sc(lev->intervals, i);
- SLSH_decSc(lev->intervals, i, SLSH_sc(lev->intervals, i));
- }
- }
- }/* for all intervals */
-}
-
-/* the guarantee algorithm for hard aperiodic requests */
-static int SLSH_guarantee(SLSH_level_des* lev, HARD_TASK_MODEL* h)
-{
- int total_sc = 0;
- int temp, i;
- int dabs = ceil((lev->slot + h->drel)/lev->slot_length); /* absolute deadline of request */
- int dabs_interval = SLSH_getInterval(lev->intervals, dabs, lev->last); /* interval where dabs is */
-
- /* check if the sc up until request deadline is >= request wcet */
- /* 1. the sc of the current interal */
- total_sc = SLSH_sc(lev->intervals, lev->current);
-
- /* 2. the sc for all whole intervals between current and the interval
- with the request deadline */
- for(i = (lev->current) + 1; i < dabs_interval; ++i)
- {
- if((temp = SLSH_sc(lev->intervals, i)) > 0)
- total_sc += temp;
- }
-
- /* 3. the min of sc or the execution need in the last interval */
- total_sc += min(SLSH_sc(lev->intervals, dabs_interval),
- dabs - SLSH_intervalStart(lev->intervals,
- dabs_interval));
-
- if(total_sc >= h->wcet)
- { /* update the sc in the intervals from back to front */
- SLSH_updateSc(lev, h);
- return 0;
- }
- else
- return -1;
-}
-
-/* check if task model is accepted and store nessecary parameters */
-static int SLSH_task_create(LEVEL l, PID p, TASK_MODEL *m)
-{
- SLSH_level_des *lev = (SLSH_level_des *)(level_table[l]);
- STATIC_TASK_MODEL* s;
- HARD_TASK_MODEL* h;
- SOFT_TASK_MODEL* u;
-
- /* if the SLSH_task_create is called, then the pclass must be a
- valid pclass. Slot-shifting accepts STATIC_TASK, HARD_TASK
- and SOFT_TASK models with some restrictions */
-
- /* est, dl and wcet is saved in slotlengths */
- switch(m->pclass)
- {
- case STATIC_PCLASS: /* offline scheduled tasks */
- s = (STATIC_TASK_MODEL *) m;
- lev->tasks[p].est = ceil(s->est/lev->slot_length);
- lev->tasks[p].dabs = ceil(s->dabs/lev->slot_length);
- lev->tasks[p].interval = s->interval;
- proc_table[p].avail_time = s->wcet;
- proc_table[p].wcet = s->wcet;
- break;
- case HARD_PCLASS: /* hard aperiodic tasks */
- h = (HARD_TASK_MODEL *) m;
- if(SLSH_guarantee(lev, h) == 0)
- {
- /* convert drel to dabs */
- lev->tasks[p].dabs = ceil((lev->slot + h->drel)/lev->slot_length);
- proc_table[p].avail_time = h->wcet;
- proc_table[p].wcet = h->wcet;
- }
- else /* task not guaranteed */
- return -1;
- break;
- case SOFT_PCLASS:
- u = (SOFT_TASK_MODEL *) m;
- proc_table[p].avail_time = u->wcet;
- proc_table[p].wcet = u->wcet;
- qq_insertlast(p, &lev->unspecified); /* respect FIFO order */
- break;
- default: /* a task model not supported */
- return -1;
- }
- /* enable wcet check in the kernel */
- proc_table[p].control |= CONTROL_CAP;
-
- return 0;
-}
-
-static void SLSH_task_detach(LEVEL l, PID p)
-{
- /* do nothing */
-}
-
-/* check if a task chosen by scheduler is correct */
-static int SLSH_task_eligible(LEVEL l, PID p)
-{
- return 0; /* if the task p is chosen, it is always eligible */
-}
-
-/************* The slot end event handler *************/
-static void SLSH_slot_end(void* p)
-{
- SLSH_level_des* lev = (SLSH_level_des *) p;
- PID pid;
- int i;
-
- /* increase slot "time" by 1 */
- if(lev->slot < lev->LCM)
- {
- lev->slot++;
- /* check if new statics are ready */
- for(i = 0; lev->tasks[i].interval != -1; ++i)
- {
- if(lev->tasks[i].est <= lev->slot && proc_table[i].status == SLSH_WAIT)
- proc_table[i].status = SLSH_READY;
- }
-
- /* check if current (interval) needs updating */
- if(lev->current < SLSH_getInterval(lev->intervals, lev->slot, lev->last))
- lev->current++;
-
- }
- else /* restart from the beginning of the offline schedule */
- {
- lev->slot = 0;
-
- while((pid = q_getfirst(&lev->idle_statics)) != NIL)
- {
- if(lev->tasks[pid].est <= lev->slot)
- proc_table[pid].status = SLSH_READY;
- else
- proc_table[pid].status = SLSH_WAIT;
- }
- }
-
- /* call for a rescheduling, reset event flag and increase slot by 1 */
- lev->slot_event = -1;
- kern_printf("*");
- event_need_reschedule();
-}
-
-/* when a task becomes executing (EXE status) */
-static void SLSH_task_dispatch(LEVEL l, PID pid, int nostop)
-{
- SLSH_level_des *lev = (SLSH_level_des *)(level_table[l]);
- struct timespec t;
-
- /* the task state is set EXE by the scheduler()
- we extract the task from the unspecified queue.
- NB: we can't assume that p is the first task in the queue!!! */
-
- if(proc_table[pid].pclass == SOFT_PCLASS)
- qq_extract(pid, &lev->unspecified);
-
- /* also start the timer for one slot length */
- lev->slot_event = kern_event_post(&TIME2TIMESPEC(lev->slot_length, t),
- SLSH_slot_end, (void*) lev);
-}
-
-/* called when task is moved from EXE status */
-static void SLSH_task_epilogue(LEVEL l, PID pid)
-{
- SLSH_level_des *lev = (SLSH_level_des *)(level_table[l]);
-
- /* check if the wcet is finished... */
- if (proc_table[pid].avail_time <= 0)
- {
- /* if it is, raise a XWCET_VIOLATION exception */
- kern_raise(XWCET_VIOLATION, pid);
- proc_table[pid].status = SLSH_WCET_VIOLATED;
- }
- else /* the end of a slot. the task returns into the ready queue... */
- {
- if(proc_table[pid].pclass == SOFT_PCLASS)
- qq_insertfirst(pid,&lev->unspecified);
-
- proc_table[pid].status = SLSH_READY;
- }
-}
-
-/* when task go from SLEEP to SLSH_READY or SLSH_WAIT */
-static void SLSH_task_activate(LEVEL l, PID pid)
-{
- SLSH_level_des *lev = (SLSH_level_des *)(level_table[l]);
- WORD type = proc_table[pid].pclass;
-
- /* Test if we are trying to activate a non sleeping task */
- /* Ignore this; the task is already active */
- if (proc_table[pid].status != SLEEP && proc_table[pid].status != SLSH_WCET_VIOLATED)
- return;
-
- /* make task ready or waiting, dependong on slot (the time) for static tasks only*/
- if(type == STATIC_PCLASS && lev->tasks[pid].est <= lev->slot)
- proc_table[pid].status = SLSH_READY;
- else
- proc_table[pid].status = SLSH_WAIT;
-
- if(type == HARD_PCLASS)
- proc_table[pid].status = SLSH_READY;
-
- /* insert unspecified tasks in QQUEUE and make it ready */
- if(type == SOFT_PCLASS)
- {
- qq_insertlast(pid ,&lev->unspecified);
- proc_table[pid].status = SLSH_READY;
- }
-}
-
-/* when a task i returned to module from a semaphore, mutex ... */
-static void SLSH_task_insert(LEVEL l, PID pid)
-{
- SLSH_level_des *lev = (SLSH_level_des *)(level_table[l]);
-
- /* change staus of task */
- proc_table[pid].status = SLSH_READY;
-
- if(proc_table[pid].pclass == SOFT_PCLASS)
- qq_insertfirst(pid ,&lev->unspecified);
-}
-
-/* when a semaphore, mutex ... taskes a task from module */
-static void SLSH_task_extract(LEVEL l, PID pid)
-{
- /* Extract the running task from the level
- . we have already extract it from the ready queue at the dispatch time.
- . the capacity event have to be removed by the generic kernel
- . the wcet don't need modification...
- . the state of the task is set by the calling function
- . the deadline must remain...
-
- So, we do nothing!!!
- */
-}
-
-/* task has finished execution for this period */
-static void SLSH_task_endcycle(LEVEL l, PID pid)
-{
- /* do nothing */
-}
-
-/* the task has finihed its wcet, kill task (dont kill static tasks) */
-static void SLSH_task_end(LEVEL l, PID pid)
-{
- SLSH_level_des *lev = (SLSH_level_des *)(level_table[l]);
-
- if(proc_table[pid].pclass == SOFT_PCLASS)
- {
- if (proc_table[pid].status == SLSH_READY)
- qq_extract(pid, &lev->unspecified);
- }
- else if(proc_table[pid].pclass == HARD_PCLASS)
- {
- if (proc_table[pid].status == SLSH_READY)
- lev->tasks[pid].dabs = 0;
-
- }
- /* static tasks: put them in idle QUEUE, reset status and avail_time */
- else if(proc_table[pid].pclass == STATIC_PCLASS)
- {
- proc_table[pid].avail_time = proc_table[pid].wcet;
- proc_table[pid].status = SLSH_IDLE;
- q_insert(pid, &lev->idle_statics);
- }
-
- proc_table[pid].status = FREE;
-}
-
-/* called when a task should sleep but not execute for awhile, mabe a mode change */
-static void SLSH_task_sleep(LEVEL l, PID pid)
-{
-
- /* the task has terminated his job before it consume the wcet. All OK! */
- proc_table[pid].status = SLEEP;
-
- /* we reset the capacity counters... only for static tasks */
- if (proc_table[pid].pclass == STATIC_PCLASS)
- proc_table[pid].avail_time = proc_table[pid].wcet;
-
-}
-
-static void SLSH_task_delay(LEVEL l, PID p, TIME usdelay) { }
-
-/** Guest Functions, slot shifing accepts no guests, so all generates exceptions **/
-
-static int SLSH_level_accept_guest_model(LEVEL l, TASK_MODEL* m) { return -1; }
-
-static int SLSH_guest_create(LEVEL l, PID p, TASK_MODEL *m)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); return 0; }
-
-static void SLSH_guest_detach(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void SLSH_guest_dispatch(LEVEL l, PID p, int nostop)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void SLSH_guest_epilogue(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void SLSH_guest_activate(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void SLSH_guest_insert(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void SLSH_guest_extract(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void SLSH_guest_endcycle(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void SLSH_guest_end(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void SLSH_guest_sleep(LEVEL l, PID p)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-static void SLSH_guest_delay(LEVEL l, PID p, TIME usdelay)
-{ kern_raise(XUNVALID_GUEST,exec_shadow); }
-
-/******* Registration functions *******/
-
-/*+ Registration function: */
-void SLSH_register_level()
-{
- LEVEL l; /* the level that we register */
- SLSH_level_des *lev; /* for readableness only */
- PID i; /* a counter */
-
- kern_printf("SLSH_register_level\n");
-
- /* request an entry in the level_table */
- l = level_alloc_descriptor();
-
- /* alloc the space needed for the EDF_level_des */
- lev = (SLSH_level_des *)kern_alloc(sizeof(SLSH_level_des));
-
- /* update the level_table with the new entry */
- level_table[l] = (level_des *)lev;
-
- /* fill the standard descriptor */
- strncpy(lev->l.level_name, SLSH_LEVELNAME, MAX_LEVELNAME);
-
- lev->l.level_code = SLSH_LEVEL_CODE;
- lev->l.level_version = SLSH_LEVEL_VERSION;
-
- lev->l.level_accept_task_model = SLSH_level_accept_task_model;
- lev->l.level_accept_guest_model = SLSH_level_accept_guest_model;
- lev->l.level_status = SLSH_level_status;
- lev->l.level_scheduler = SLSH_level_scheduler;
-
- lev->l.level_guarantee = SLSH_level_guarantee;
-
- lev->l.task_create = SLSH_task_create;
- lev->l.task_detach = SLSH_task_detach;
- lev->l.task_eligible = SLSH_task_eligible;
- lev->l.task_dispatch = SLSH_task_dispatch;
- lev->l.task_epilogue = SLSH_task_epilogue;
- lev->l.task_activate = SLSH_task_activate;
- lev->l.task_insert = SLSH_task_insert;
- lev->l.task_extract = SLSH_task_extract;
- lev->l.task_endcycle = SLSH_task_endcycle;
- lev->l.task_end = SLSH_task_end;
- lev->l.task_sleep = SLSH_task_sleep;
- lev->l.task_delay = SLSH_task_delay;
-
- lev->l.guest_create = SLSH_guest_create;
- lev->l.guest_detach = SLSH_guest_detach;
- lev->l.guest_dispatch = SLSH_guest_dispatch;
- lev->l.guest_epilogue = SLSH_guest_epilogue;
- lev->l.guest_activate = SLSH_guest_activate;
- lev->l.guest_insert = SLSH_guest_insert;
- lev->l.guest_extract = SLSH_guest_extract;
- lev->l.guest_endcycle = SLSH_guest_endcycle;
- lev->l.guest_end = SLSH_guest_end;
- lev->l.guest_sleep = SLSH_guest_sleep;
- lev->l.guest_delay = SLSH_guest_delay;
-
- /* fill the SLSH descriptor part */
- for(i = 0; i < MAX_PROC; i++)
- {
- lev->tasks[i].est = -1;
- lev->tasks[i].dabs = 0;
- lev->tasks[i].interval = -1;
- }
-
- for(i = 0; i < MAX_INTERVALS; i++)
- {
- lev->intervals[i].start = -1;
- lev->intervals[i].end = -1;
- lev->intervals[i].length = 0;
- lev->intervals[i].maxt = 0;
- lev->intervals[i].sc = 0;
- }
-
- lev->current = 0;
- lev->last = NIL;
- lev->slot = 0;
- lev->slot_length = 0;
- lev->slot_event = -1;
-}
-
-
-void SLSH_set_interval(LEVEL l, int start, int end, int maxt)
-{
- SLSH_level_des* lev = (SLSH_level_des *)(level_table[l]);
- static int i = -1;
-
- i++;
- lev->intervals[i].start = start;
- lev->intervals[i].end = end;
- lev->intervals[i].length = end - start;
- lev->intervals[i].maxt = maxt;
- lev->intervals[i].sc = lev->intervals[i].length - maxt;
-
- lev->last = i;
-}
-
-void SLSH_set_variables(LEVEL l, TIME length)
-{
- SLSH_level_des* lev = (SLSH_level_des *)(level_table[l]);
-
- lev->slot_length = length;
-}
Index: pj/slsh/readme.txt
===================================================================
--- pj/slsh/readme.txt (revision 1344)
+++ pj/slsh/readme.txt (nonexistent)
@@ -1,6 +0,0 @@
-This Example has been made by Tomas Lenvall.
-
-There is not a lot of documentation available, so if you have problems please
-send an e-mail to Tomas ( mailto:tlv@mdh.se )
-
-Paolo
Index: pj/slsh/makefile
===================================================================
--- pj/slsh/makefile (revision 1344)
+++ pj/slsh/makefile (nonexistent)
@@ -1,16 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-
-include $(BASE)/config/config.mk
-
-PROGS=slshtest
-
-include $(BASE)/config/example.mk
-
-slshtest:
- make -f $(SUBMAKE) APP=slshtest INIT= OTHEROBJS="slshinit.o slsh.o" OTHERINCL=
Index: pj/slsh/slshinit.c
===================================================================
--- pj/slsh/slshinit.c (revision 1344)
+++ pj/slsh/slshinit.c (nonexistent)
@@ -1,117 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: slshinit.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
-
- System initialization file
-
- The tick is set to TICK ms.
-
- This file contains the 2 functions needed to initialize the system.
-
- These functions register the following levels:
-
- a Slot Shifting level
- a Dummy level
-
- It can accept these task models:
-
- STATIC_TASK_MODEL
- HARD_TASK_MODEL(aperiodic)
- SOFT_TASK_MODEL
-
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-
-#include "kernel/kern.h"
-#include "slsh.h"
-#include "modules/rr2.h"
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "drivers/keyb.h"
-#include "modules/dummy.h"
-
-/*+ sysyem tick in us +*/
-#define TICK 300
-
-/* define RR tick in us*/
-#define RRTICK 10000
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- SLSH_register_level();
- RR2_register_level(RRTICK, RR2_MAIN_YES, mb);
- dummy_register_level();
-
- SEM_register_module();
-
- return TICK;
-}
-
-NRT_TASK_MODEL nrt;
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- KEYB_PARMS k = BASE_KEYB;
-
- nrt_task_default_model(nrt);
- keyb_def_task(k,&nrt);
-
-
-
- HARTPORT_init();
-
- KEYB_init(NULL);
-
- __call_main__(mb);
-
- return 0;
-}
-
-
Index: pj/slsh/slsh.h
===================================================================
--- pj/slsh/slsh.h (revision 1344)
+++ pj/slsh/slsh.h (nonexistent)
@@ -1,205 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * Massimiliano Giorgi <massy@gandalf.sssup.it>
- * Luca Abeni <luca@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-
-/**
- ------------
- CVS : $Id: slsh.h,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:41 $
- ------------
- Author: Tomas Lennvall, Date: Feb 2000.
-
- This file contains the scheduling module for Slot shifting.
-
- Title:
- Slot Shifting
-
- Task Models Accepted:
- STATIC_TASK_MODEL - Periodic Hard tasks that are scheduled by
- an off-line scheduler, so that all guarantees regarding precedence, mutex
- deadline violation is taken care of. The tasks are in an executione schedule,
- that is the order in when they become ready. They have the following fields:
- est (earliest start time), wcet and absolute deadline.
-
- HARD_TASK_MODEL - Hard Tasks (Hard aperiodic requests)
- wcet field and drel field must be != 0. They are used to set the wcet
- and deadline of the tasks.
- periodicity field must be APERIODIC
- mit field is ignored.
-
- SOFT_TASK_MODEL - Soft Tasks (Unspecified tasks)
- wcet field must be != 0. periodicity filed must be APERIODIC
- period and met filed is ignored.
-
- Guest Models Accepted:
- NONE - Slot shifting handles all tasks by itself (at this moment).
-
- Description:
- This module schedules the offline scheduled tasks according to the slot-
- shifting paradigm, dividing time into slots of a fixed length and assigning
- tasks to execute in those slots. Slot-shifting also keeps track of the free
- bandwidth in the schedule by using disjoint intervals and sc (spare capacity).
- Each interval has a sc nr that represents the free bandwidth in that interval,
- the sc can be used by hard aperiodic tasks, static tasks from later interval or
- soft aperiodic tasks. Hard aperiodic tasks are guaranteed an incorporated in
- the schedule by reduction of sc before they execute. No guarantee is
- performed on the soft aperiodic tasks, they are run when no other task wants
- to execute and sc is available.
-
- Description:
- This module implements the Slot shifting algorithm, by Gerhard Fohler. Slot shifting
- schedules off-line scheduled tasks and also handles hard aperiodic requests by the
- guarantee alorithm. Slot shifting can also handle soft aperiodic tasks,
- called unspecified. That is tasks without a deadline.
-
- Exceptions raised:
- These exceptions are pclass-dependent...
- XDEADLINE_MISS
- If a task miss his deadline, the exception is raised.
-
- XWCET_VIOLATION
- If a task doesn't end the current cycle before if consume the wcet,
- an exception is raised, and the task is put in the EDF_WCET_VIOLATED
- state. To reactivate it, use EDF_task_activate via task_activate or
- manage directly the EDF data structure. Note that the exception is not
- handled properly, an XDEADLINE_MISS exeeption will also be raised at
- the period end...
-
- Restrictions & special features:
- - This level doesn't manage the main task.
- - At init time we can choose if the level have to activate
- . the wcet check
- (If a task require more time than declared, it is stopped and put in
- the state EDF_WCET_VIOLATED; a XWCET_VIOLATION exception is raised)
- . the task guarantee algorithm
- (when all task are created the system will check that the task_set
- will not use more than the available bandwidth)
- - The level use the priority and timespec_priority fields.
- - A function to return the used bandwidth of a level is provided.
- - The guest tasks don't provide the guest_endcycle function
-
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-#ifndef __SLSH_H__
-#define __SLSH_H__
-
-#include <ll/ll.h>
-#include <kernel/config.h>
-#include <sys/types.h>
-#include <kernel/types.h>
-#include <modules/codes.h>
-
-#define STATIC_PCLASS 0x0500
-
-#define SLSH_LEVELNAME "Slot Shifting"
-#define SLSH_LEVEL_CODE 5
-#define SLSH_LEVEL_VERSION 1
-
-
-
-/* -----------------------------------------------------------------------
- STATIC_TASK_MODEL: offline scheduled Tasks
- ----------------------------------------------------------------------- */
-/* Offline-scheduled tasks are hard periodic tasks that have been
- scheduled before runtime. All guarantees are made by the off-
- line scheduler so the tasks are already guaranteed.
-*/
-
-typedef struct {
- TASK_MODEL t;
- TIME est;
- TIME wcet;
- TIME dabs;
- int interval; /* used in slot shifting */
-} STATIC_TASK_MODEL;
-
-#define static_task_default_model(m) \
- task_default_model((m).t,STATIC_PCLASS), \
- (m).est = -1, \
- (m).dabs = 0, \
- (m).wcet = 0, \
- (m).interval = -1;
-#define static_task_def_level(m,l) task_def_level((m).t,l)
-#define static_task_def_arg(m,a) task_def_arg((m).t,a)
-#define static_task_def_stack(m,s) task_def_stack((m).t,s)
-#define static_task_def_group(m,g) task_def_group((m).t,g)
-#define static_task_def_usemath(m) task_def_usemath((m).t)
-#define static_task_def_system(m) task_def_system((m).t)
-#define static_task_def_nokill(m) task_def_nokill((m).t)
-#define static_task_def_ctrl_jet(m) task_def_ctrl_jet((m).t)
-#define static_task_def_est(m,p) (m).est = (p)
-#define static_task_def_dabs(m,d) (m).dabs = (d)
-#define static_task_def_wcet(m,w) (m).wcet = (w)
-#define static_task_def_interval(m,i) (m).interval = (i)
-#define static_task_def_trace(m) task_def_trace((m).t)
-#define static_task_def_notrace(m) task_def_notrace((m).t)
-
-
-
-
-/*#define min(a, b) ((a) < (b) ? (a) : (b))*/
-
-#define TIME2TIMESPEC(T, TS) \
-( \
- ((TS).tv_sec = ((T)/1000000)), \
- ((TS).tv_nsec = (((T)%1000000) * 1000)), \
- (TS) \
-)
-
-/* define the interval struct */
-typedef struct {
- int start; /* start of interval */
- int end; /* end of interval */
- int length; /* Length of interval */
- int maxt; /* maximum execution time in interval */
- int sc; /* spare capacity in interval */
-} SLSH_interval;
-
-/*+ Registration function: */
-void SLSH_register_level();
-
-void SLSH_set_interval(LEVEL l, int start, int end, int maxt);
-void SLSH_set_variables(LEVEL l, TIME length);
-
-#endif
-
Index: pj/eli/eli.c
===================================================================
--- pj/eli/eli.c (revision 1344)
+++ pj/eli/eli.c (nonexistent)
@@ -1,782 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: eli.c,v 1.1.1.1 2002-09-02 09:37:45 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:45 $
- ------------
-
- This file is similar to the configuration of Hartik 3.3.1
-
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai and ALLEN-DESTRO
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include "eli.h"
-
-
-//########################################
-// Definizione variabili globali
-//########################################
-char tastiera;
-long double Forza_x,Forza_y,Velocita_x,Velocita_y,Acc_x,Acc_y,Pos_x,Pos_y;
-long double Pos_pe_y[5];
-long double Pos_pe_x[5];
-long double T1=0;
-long double r;
-int n_peso=0;
-int peso_agganciato[5]={0,0,0,0,0};
-int pre_peso[5]={0,0,0,0,0};
-int libero_peso[5]={0,0,0,0,0};
-PID pid_peso[5];
-PID pid_ruspa[5];
-int x_r=200;
-int n_ruspa=5;
-int indietro;
-int eli_occ=0;
-int kill_p;
-
-//PID pid_r0,pid_r1,pid_r2,pid_r3,pid_r4;
-PID pid_kill_p,pid_pulisci_p,pid_kill_e,pid_pulisci_e;
-
-
-// Definizione del semaforo per l'utilizzo della modalita' grafica
-sem_t mutex;
-sem_t pu;
-
-
-
-
-//#######################################################################
-//############### DEFINIZIONE TASK ######################################
-//#######################################################################
-
-TASK kill_task(int i)
-{ int x,y,dim;
- while (1)
- {
-
- if(i==1)
- {
- x=Pos_pe_x[kill_p];
- y=Pos_pe_y[kill_p];
- dim=25;
- }
- else
- {
- x=Pos_x;
- y=Pos_y;
- dim=35;
- }
-
- PULISCI(x,y,dim);
- ESPLOSIONE(x,y);
-
- sem_wait(&pu);
-
- if(i==1) task_activate(pid_pulisci_p);
- else task_activate(pid_pulisci_e);
-
- task_endcycle();
-
- }
-
-
-}
-
-TASK pulisci(int i)
-{ int x,y,dim;
- while (1)
- {
-
- if(i==1)
- {
- x=Pos_pe_x[kill_p];
- y=Pos_pe_y[kill_p];
- dim=25;
- }
- else
- {
- x=Pos_x;
- y=Pos_y;
- dim=35;
- }
-
-
- task_delay(3000);
- PULISCI(x,y,dim);
-
- sem_post(&pu);
-
- task_endcycle();
- }
-}
-
-
-
-
-TASK elicottero(int i)
-{ long double x_old,x_new,y_old,y_new;
- TIME us_old,us_new;
- long double delta_T;
- long double Fx,Fy,Ax,Ay,Vx,Vy,m_el;
- int Destra_old,Destra_new;
- // int uccidi,colore;
- // int prova;
-
- m_el=1;
- Vx=0;Vy=0;
- Ax=0;Ay=0;
- Fx=0;Fy=0-m_el*G; // Fy=0;
- x_old=150;
- y_old=150;
- Destra_old=1;
- Destra_new=1;
-
- us_old=sys_gettime(NULL);
-
- while (1)
- {
-
- // prova=2;
-
-
- us_new=sys_gettime(NULL);
- delta_T=(us_new-us_old)/100000;
- // if(delta_T<0.9) prova=1;
- // if(delta_T<0) prova=4;
- // if(delta_T>1.1) prova=3;
-
-
- delta_T=1;
- Ax=(Fx-(r*Vx))/m_el;
- Ay=(Fy-(r*Vy)+m_el*G+T1)/m_el;
- x_new=x_old+Vx*delta_T+0.5*Ax*delta_T*delta_T;
- y_new=y_old+Vy*delta_T+0.5*Ay*delta_T*delta_T;
-
- // if(prova==1) {x_new=300; y_new=150;}
- // if(prova==3) {x_new=150; y_new=300;}
- // if(prova==2) {x_new=300; y_new=300;}
- // if(prova==4) {x_new=400; y_new=400;}
-
- Vx=Vx+Ax*delta_T;
- Vy=Vy+Ay*delta_T;
- if ((Vx>0)|| ((Vx==0) && (Destra_old==1))) Destra_new=1;
- else Destra_new=0;
-
- if ( ((y_new>=(Y0max-DIM_EL/2-2)) || ( (y_old<=400-DIM_EL/2-2) && (y_new>=400-DIM_EL/2-2) && (x_new>=X0min+151) && (x_new<=X0min+280) )) )
- {
- if ((x_new>=X0min+151) && (x_new<=X0min+280)) y_new=400-DIM_EL/2-2;
- else y_new=Y0max-DIM_EL/2-2;
- Vy=0;
- Vx=0;
- x_new=x_old;
- Ay=0;
- Ax=0;
- }
-
-
-
-
- sem_wait(&mutex);
-
- /*
- uccidi=0;
-
- colore=grx_getpixel(x_new-2*DIM_EL,y_new-DIM_EL);
- if ( (colore!=COL_SFONDO) && (colore!=YELLOW) && (colore!=RED)) uccidi=1;
- colore=grx_getpixel(x_new+2*DIM_EL,y_new-DIM_EL);
- if ( (colore!=COL_SFONDO) && (colore!=YELLOW) && (colore!=RED)) uccidi=1;
- colore=grx_getpixel(x_new-2*DIM_EL,y_new+DIM_EL/2);
- if ( (colore!=COL_SFONDO) && (colore!=YELLOW) && (colore!=RED)) uccidi=1;
- colore=grx_getpixel(x_new+2*DIM_EL,y_new+DIM_EL/2);
- if ( (colore!=COL_SFONDO) && (colore!=YELLOW) && (colore!=RED)) uccidi=1;
- colore=grx_getpixel(x_new,y_new);
- if ( (colore!=COL_SFONDO) && (colore!=YELLOW) && (colore!=RED)) uccidi=1;
- */
-
- if ((x_old>100) && (y_old>100) && (x_old<X0max) )
- {
- if (Destra_old==0) {ELICOTTERO_S(x_old,y_old,DIM_EL,COL_SFONDO,COL_SFONDO);}
- else {ELICOTTERO_D(x_old,y_old,DIM_EL,COL_SFONDO,COL_SFONDO);}
- }
-
- if ((x_new>100) && (y_new>100) && (x_new<X0max) )
- {
- /*
- if ( uccidi==1)
- {
- // grx_box(10,10,100,100,RED);
- // task_activate(pid_kill_e);
- // sem_post(&mutex);
- // eli_occ=0;
- sem_post(&mutex);
- task_abort();
- }
- */
-
-
- if (Destra_new==0) {ELICOTTERO_S(x_new,y_new,DIM_EL,COL_EL,COL_SFONDO);}
- else {ELICOTTERO_D(x_new,y_new,DIM_EL,COL_EL,COL_SFONDO);}
- }
- sem_post(&mutex);
-
- if (tastiera=='c') Fx=Fx+0.25;
- if (tastiera=='z') Fx=Fx-0.25;
- if (tastiera=='x') Fy=Fy+0.25;
- if (tastiera=='s') Fy=Fy-0.25;
-
- if (Fx>2) Fx=2;
- if (Fx<-2) Fx=-2;
- if (Fy>0) Fy=0;
- if (Fy<-17.5) Fy=-17.5;
-
- Forza_x=Fx;
- Forza_y=Fy;
- Acc_x=Ax;
- Acc_y=Ay;
- Velocita_x=Vx;
- Velocita_y=Vy;
- Pos_x=x_new;
- Pos_y=y_new;
-
-
- if ( (tastiera=='z') || (tastiera=='x') || (tastiera=='c') || (tastiera=='s') )
- tastiera='q';
-
-
- us_old=us_new;
- x_old=x_new;
- y_old=y_new;
- Destra_old=Destra_new;
-
- task_endcycle();
- }
-}
-
-
-
-TASK peso(int i)
-{
- long double delta_T;
- long double Ay,Vy;
- long double x_new,x_old,y_old,y_new;
- int scelta=0;
- int rit,colore,uccidi;
- double m_peso[5]={0.5,0.4,0.3,0.1,0.6};
- int delta_y1,delta_y2;
-
-
- // PID pid;
- // MODEL m = BASE_MODEL;
-
- Vy=0;
- Ay=0;
-
- x_old=700-DIM_PESO-1;
- y_old=Y0max-DIM_PESO*2-1;
- delta_T=1;
- x_new=700-DIM_PESO-1;
-
- libero_peso[i]=0;
-
- while (1 )
- {
- uccidi=0;
-
- if (scelta==0 )
- {
-
- y_new=y_old;
- if (x_new+DIM_PESO==x_r-1) x_new=x_new-1;
- else x_new=x_new;
- if (indietro==1) {scelta=1; libero_peso[i]=1;}
- }
-
- if (scelta==1 )
- {
- y_new=y_old;
- x_new=x_old;
- if (peso_agganciato[i]==1) scelta=2;
- }
- if (scelta==2)
- {
- eli_occ=1;
- Ay=(m_peso[i]*G-(r*Vy)-T1)/m_peso[i];
- if(peso_agganciato[i]==1) x_new=Pos_x;
- else x_new=x_old;
- y_new=y_old+Vy*delta_T+0.5*Ay*delta_T*delta_T;
- Vy=Vy+Ay*delta_T;
-
- delta_y1=Y0max-y_new;
- delta_y2=400-y_new;
-
- if ( (y_new>=(Y0max-2*DIM_PESO-1)) || ( (y_old<400-2*DIM_PESO-1) && (y_new>=400-2*DIM_PESO-1) && (x_new>=X0min+151-DIM_PESO) && (x_new<=X0min+280+DIM_PESO) ) )
- {
- if ((x_new>=X0min+151-DIM_PESO) && (x_new<=X0min+280+DIM_PESO))
- {
- if (delta_y2<6) uccidi=1;
- y_new=400-2*DIM_PESO-2;
- }
- else {
- if (delta_y1<6) uccidi=1;
- y_new=Y0max-2*DIM_PESO-2;
- }
- Vy=0;
- if(peso_agganciato[i]==0) {scelta=3; rit=0;}
- }
- }
- if (scelta==3)
- {
- x_new=x_new;
- y_new=y_new;
- eli_occ=0;
- if (y_new==400-2*DIM_PESO-2) rit++;
-
-
-
- if (rit==100) {
- peso_agganciato[i]=0;
- pre_peso[i]=0;
- sem_wait(&mutex);
- PESO(x_old,y_old,DIM_PESO,COL_SFONDO);
- sem_post(&mutex);
-
- return NULL;
- }
-
- if(peso_agganciato[i]==1) scelta=2;
- }
-
- sem_wait(&mutex);
-
-
- colore=grx_getpixel(x_new-DIM_PESO,y_new);
- if ( (colore!=COL_SFONDO) && (colore!=DELTA_COL+i*2) && (colore!=RED)) uccidi=1;
-
- colore=grx_getpixel(x_new+DIM_PESO,y_new);
- if ( (colore!=COL_SFONDO) && (colore!=DELTA_COL+i*2) && (colore!=RED)) uccidi=1;
-
- colore=grx_getpixel(x_new-DIM_PESO,y_new+2*DIM_PESO);
- if ( (colore!=COL_SFONDO) && (colore!=DELTA_COL+i*2) && (colore!=RED)) uccidi=1;
-
- colore=grx_getpixel(x_new+DIM_PESO,y_new+2*DIM_PESO);
- if ( (colore!=COL_SFONDO) && (colore!=DELTA_COL+i*2) && (colore!=RED)) uccidi=1;
-
- colore=grx_getpixel(x_new,y_new+DIM_PESO);
- if ( (colore!=COL_SFONDO) && (colore!=DELTA_COL+i*2) && (colore!=RED)) uccidi=1;
-
-
-
- if ((x_old>100) && (y_old>100) && (x_old<X0max) )
- {
- PESO(x_old,y_old,DIM_PESO,COL_SFONDO);
- }
-
- y_old=y_new;
- x_old=x_new;
- Pos_pe_y[i]=y_new;
- Pos_pe_x[i]=x_new;
-
-
- if ((x_new>100) && (y_new>100) && (x_new<X0max) )
- {
- if ( uccidi==1)
- {
- kill_p=i;
- task_activate(pid_kill_p);
- sem_post(&mutex);
- eli_occ=0;
- pre_peso[i]=0;
- peso_agganciato[i]=0;
- return NULL;
- }
-
- PESO(x_new,y_new,DIM_PESO,DELTA_COL+i*2);
- }
- sem_post(&mutex);
-
-
- task_endcycle();
- }
-
-
-}
-
-TASK ruspa(int i)
-{
- int x,y,ii;
- int end_peso[5]={370,420,470,520,570};
-
- PID pid;
- HARD_TASK_MODEL m_hard;
-
- pre_peso[i]=1;
-
- hard_task_default_model(m_hard);
- hard_task_def_wcet(m_hard,1); // wcet ignored!!!
- hard_task_def_mit(m_hard,PER_DISEGNA);
- hard_task_def_usemath(m_hard);
- hard_task_def_arg(m_hard,(void *)i);
- pid=task_create("peso2",peso,&m_hard,NULL);
- pid_peso[i]=pid;
- task_activate(pid_peso[i]);
-
-
- x=720;
- y=Y0max;
-
- indietro=0;
- while (x!=end_peso[i]+DIM_PESO)
- {
- sem_wait(&mutex);
- RUSPA_S(x+1,y,COL_SFONDO,COL_SFONDO);
- RUSPA_S(x,y,YELLOW-1,LIGHTBLUE);
- sem_post(&mutex);
- x_r=x;
- x--;
- task_endcycle();
- }
- sem_wait(&mutex);
- RUSPA_S(x+1,y,COL_SFONDO,COL_SFONDO);
- sem_post(&mutex);
- indietro=1;
- while (x!=730 )
- {
- sem_wait(&mutex);
- RUSPA_D(x-1+40,y,COL_SFONDO,COL_SFONDO);
- RUSPA_D(x+40,y,YELLOW-1,LIGHTBLUE);
- sem_post(&mutex);
- x++;
- task_endcycle();
- }
-
- ii=i+1;
-
- while(ii>4)
- {
- n_ruspa=5;
- if(pre_peso[4]==0){
- ii=4;
- if(pre_peso[3]==0){
- ii=3;
- if(pre_peso[2]==0){
- ii=2;
- if(pre_peso[1]==0){
- ii=1;
- if(pre_peso[0]==0){
- ii=0;
- }
- }
- }
- }
- }
- task_endcycle();
-
- }
-
- hard_task_def_arg(m_hard,(void *)ii);
- pid_ruspa[ii]=task_create("ruspa",ruspa,&m_hard,NULL);
- task_activate(pid_ruspa[ii]);
- n_ruspa=ii;
-
- return NULL;
-}
-
-
-
-
-TASK molla(int i)
-{
- double k=0.05;
- double x,x_old,y1_old,y2_old;
- double T1_old; //,T2_old;
-
- x_old=Pos_x;
- y1_old=Pos_y;
- y2_old=Pos_pe_y[n_peso];
-
- while (1)
- {
-
- sem_wait(&mutex);
- if ((x_old>100-DIM_EL) && (y1_old>100-DIM_EL) && (x_old<X0max) )
- {
- MOLLA(x_old,y1_old+DIM_EL,y2_old,COL_SFONDO)
- }
- else if( (y2_old>100) && (x_old<X0max) && (x_old>100) )
- {
- MOLLA(x_old,X0min+100,y2_old,COL_SFONDO)
- }
-
- x_old=Pos_x;
- y1_old=Pos_y;
-
- if(peso_agganciato[n_peso]==0) y2_old=y1_old+20;
- else y2_old=Pos_pe_y[n_peso];
-
- if ((x_old>100) && (y1_old>100-DIM_EL) && (x_old<X0max) )
- {
- MOLLA(x_old,y1_old+DIM_EL,y2_old,RED)
- }
- else if( (y2_old>100) && (x_old<X0max) && (x_old>100))
- {
- MOLLA(x_old,X0min+100,y2_old,RED)
- }
- sem_post(&mutex);
-
- x=y2_old-y1_old;
- x=x-20;
- T1=x*k;
- T1_old=T1;
-
- task_endcycle();
-
- }
-}
-
-TASK seleziona(int i)
-{ int w,deltax,deltay,disegna;
-
- eli_occ=0;
- disegna=0;
-
- while (1)
- {
- disegna=0;
- for (w=0;w<5;w++)
- {
- deltax=Pos_pe_x[w]-Pos_x;
- deltay=Pos_pe_y[w]-Pos_y-DIM_PESO-20+DIM_EL;
- if ( (pre_peso[w]==1) && (eli_occ==0) && (deltax<4) && (deltax>-4) && (deltay<3) && (deltay>-3) )
- {
- disegna=1;
- if ( (tastiera=='p') && (libero_peso[w]==1) )
- {
- eli_occ=1;
- peso_agganciato[w]=1;
- n_peso=w;
-
- }
- }
- }
-
- if(disegna==1)
- {
- sem_wait(&mutex);
- grx_box(X0max-90,Y0min+5,X0max-5,Y0min+95,RED);
- // grx_text("Ok", X0max-40, Y0min+50, COL_TESTO, RED);
- sem_post(&mutex);
- } else
- {
- sem_wait(&mutex);
- grx_box(X0max-95,Y0min+5,X0max-5,Y0min+95,COL_SFONDO);
- sem_post(&mutex);
- }
-
- if(eli_occ==1)
- {
- sem_wait(&mutex);
- grx_box(X0max-90-100,Y0min+5,X0max-5-100,Y0min+95,GREEN);
- // grx_text("Go", X0max-35-100, Y0min+50, COL_TESTO, GREEN);
- sem_post(&mutex);
- } else
- {
- sem_wait(&mutex);
- grx_box(X0max-90-100,Y0min+5,X0max-5-100,Y0min+95,COL_SFONDO);
- sem_post(&mutex);
- }
-
-
- if (tastiera=='l') peso_agganciato[n_peso]=0;
-
- task_endcycle();
-
- }
-}
-
-
-//###############################################################
-// ##
-// Funzione di uscita dal programma ##
-// ##
-//################################################################
-void my_end(KEY_EVT* e)
-{
- //####################################
- // Sezione esecutiva della funzione ##
- //####################################
-
- grx_close();
- cprintf("Ctrl-brk pressed!\n");
- sys_end();
-} // Fine della funzionemy_end
-
-//################################################################
-// ##
-// Funzione di uscita dal programma ##
-// ##
-//################################################################
-void end()
-{
- //####################################
- // Sezione esecutiva della funzione ##
- //####################################
-
- grx_close();
-} // Fine della funzione my_end
-
-
-
-//##############################################################
-// ##
-// Main ##
-// ##
-//##############################################################
-int main()
-{
- //########################################
- // Sezione dichiarativa delle variabili ##
- //########################################
- // Identficativi di task generici
- PID pid0, pid1, pid3, pid5; //, pid2,pid4,pid6;
-
- HARD_TASK_MODEL m_hard;
- NRT_TASK_MODEL m_nrt;
-
- // Ascoltatore di eventi
- KEY_EVT emerg;
- // Contatori
- int j;
-
-
- //####################################
- // Sezione esecutiva del main ##
- //####################################
-
- set_exchandler_grx();
-
- // Inizializzazione dei parametri hartik
- sem_init(&mutex,0,1);
- sem_init(&pu,0,1);
-
- emerg.ascii = 'x';
- emerg.scan = KEY_X;
- emerg.flag = ALTL_BIT;
- keyb_hook(emerg, my_end);
- sys_atrunlevel(end, NULL, RUNLEVEL_BEFORE_EXIT);
-
- if (grx_open(800, 600, 8) < 0)
- {
- cprintf("GRX Err\n");
- sys_abort(300);
- }
- cprintf("scheda ok\n");
-
- r=0.1;
-
- /* Disposizione degli elementi grafici statici */
- sem_wait(&mutex);
- draw_static();
- sem_post(&mutex);
-
- // Attivazione dei task
- hard_task_default_model(m_hard);
- hard_task_def_wcet(m_hard,1); // wcet ignored!!!
- hard_task_def_usemath(m_hard);
-
- hard_task_def_mit(m_hard,PER_DISEGNA);
- pid0=task_create("elicottero",elicottero,&m_hard,NULL);
- task_activate(pid0);
-
- hard_task_def_mit(m_hard,PER_DISEGNA);
- pid1=task_create("indicometro",disegna_stato,&m_hard,NULL);
- task_activate(pid1);
-
- hard_task_def_mit(m_hard,PER_MOLLA);
- pid3=task_create("molla",molla,&m_hard,NULL);
- task_activate(pid3);
-
- hard_task_def_mit(m_hard,PER_DISEGNA);
- pid5=task_create("seleziona",seleziona,&m_hard,NULL);
- task_activate(pid5);
-
-
- hard_task_def_mit(m_hard,PER_DISEGNA);
- hard_task_def_arg(m_hard,0);
- pid_ruspa[0]=task_create("ruspa",ruspa,&m_hard,NULL);
- task_activate(pid_ruspa[0]);
- n_ruspa=0;
-
- nrt_task_default_model(m_nrt);
- nrt_task_def_usemath(m_nrt);
- nrt_task_def_arg(m_nrt,0);
- pid_kill_e = task_create("kill_task",kill_task, &m_nrt, NULL);
- pid_pulisci_e = task_create("pulisci",pulisci, &m_nrt, NULL);
-
- nrt_task_def_arg(m_nrt,(void *)1);
- pid_kill_p = task_create("kill_task",kill_task, &m_nrt, NULL);
- pid_pulisci_p = task_create("pulisci",pulisci, &m_nrt, NULL);
-
-
-
-
- do {
- tastiera = keyb_getch(BLOCK);
-
- } while(tastiera!=ESC);
-
- task_kill(pid5);
- task_kill(pid3);
- task_kill(pid1);
- task_kill(pid0);
-
- task_kill(pid_kill_p);
- task_kill(pid_kill_e);
-
- if (n_ruspa!=5) task_kill(pid_ruspa[n_ruspa]);
- for(j=0;j<5;j++) { if (pre_peso[j]==1) task_kill(pid_peso[j]); }
-
- grx_close();
- sys_end();
-
- return 0;
-} // Fine del main
-
-/***************************<Fine del file>*******************************/
Index: pj/eli/makefile
===================================================================
--- pj/eli/makefile (revision 1344)
+++ pj/eli/makefile (nonexistent)
@@ -1,16 +0,0 @@
-#
-#
-#
-
-ifndef BASE
-BASE=../..
-endif
-include $(BASE)/config/config.mk
-
-PROGS= eli
-
-include $(BASE)/config/example.mk
-
-eli:
- make -f $(SUBMAKE) APP=eli INIT= OTHEROBJS="initfile.o draw.o" OTHERINCL=
-
Index: pj/eli/draw.c
===================================================================
--- pj/eli/draw.c (revision 1344)
+++ pj/eli/draw.c (nonexistent)
@@ -1,519 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: draw.c,v 1.1.1.1 2002-09-02 09:37:45 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:45 $
- ------------
-
- This file is similar to the configuration of Hartik 3.3.1
-
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai and ALLEN-DESTRO
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include "eli.h"
-
-void draw_static()
-{
- int i;
- /************************************/
- /* Sezione esecutiva della funzione */
- /************************************/
-
- grx_rect(X0min,Y0min,X0max,Y0max,COL_CORNICE);
- // grx_rect(X0min+100,Y0min+100,X0max,Y0max,COL_CORNICE);
- grx_line(X0min,Y0min+100,X0min+100,Y0min+100,COL_CORNICE);
- // grx_line(X0min,Y0min+350,X0min+100,Y0min+350,COL_CORNICE);
-
- grx_line(X0min+25,Y0min+100,X0min+25,Y0max,COL_CORNICE);
- grx_line(X0min+50,Y0min+100,X0min+50,Y0max,COL_CORNICE);
- grx_line(X0min+75,Y0min+100,X0min+75,Y0max,COL_CORNICE);
-
- grx_line(X0min,Y0min+100+127,X0min+25,Y0min+100+127,LIGHTBLUE);
- grx_line(X0min+50,Y0min+100+127,X0min+100,Y0min+100+127,LIGHTBLUE);
- grx_line(X0min+50,Y0min+100+127+250,X0min+100,Y0min+100+127+250,LIGHTBLUE);
-
-
- grx_box(X0min+101+50,400,X0min+230+50,Y0max-1,BROWN);
- for(i=1;i<6;i++){
- grx_box(X0min+101+50+38,400+35*i-10,X0min+101+50+48,400+35*i,CYAN);
- grx_box(X0min+101+50+81,400+35*i-10,X0min+101+50+91,400+35*i,CYAN);
- }
- grx_box(X0min+101+50+60,Y0max-30,X0min+101+50+70,Y0max-1,GREEN);
-
-
- grx_box(700,520,X0max-1,Y0max-1,CYAN);
-
-
-
- grx_text("Fx", X0min+5, Y0min+90, COL_TESTO, COL_SFONDO);
- grx_text("Fy", X0min+30, Y0min+90, COL_TESTO, COL_SFONDO);
- grx_text("Ax", X0min+55, Y0min+90, COL_TESTO, COL_SFONDO);
- grx_text("Ay", X0min+80, Y0min+90, COL_TESTO, COL_SFONDO);
- // grx_text("M", X0min+10, Y0min+351, COL_TESTO, COL_SFONDO);
- // grx_text("P", X0min+35, Y0min+351, COL_TESTO, COL_SFONDO);
- grx_text("Vx", X0min+55, Y0min+351, COL_TESTO, COL_SFONDO);
- grx_text("Vy", X0min+80, Y0min+351, COL_TESTO, COL_SFONDO);
-
- grx_text("S : Su", X0min+110, Y0min+15, COL_TESTO, COL_SFONDO);
- grx_text("Z : Sinistra", X0min+110, Y0min+25, COL_TESTO, COL_SFONDO);
- grx_text("X : Giu", X0min+110, Y0min+35, COL_TESTO, COL_SFONDO);
- grx_text("C : Destra", X0min+110, Y0min+45, COL_TESTO, COL_SFONDO);
- grx_text("P : aggancia Peso", X0min+110, Y0min+55, COL_TESTO, COL_SFONDO);
- grx_text("L : Libera peso", X0min+110, Y0min+65, COL_TESTO, COL_SFONDO);
- grx_text("Esc : Usita Programma", X0min+110, Y0min+75, COL_TESTO, COL_SFONDO);
-
-
-} // Fine della funzione draw_static
-
-TASK disegna_stato(int i)
-{ //double j;
-
- while (1)
- {
-
- sem_wait(&mutex);
-
- grx_rect(X0min+100,Y0min+100,X0max,Y0max,COL_CORNICE);
-
- grx_box(700,565,770,Y0max-1,LIGHTCYAN);
-
- grx_box(X0min+101+50,400,X0min+230+50,420,BROWN);
-
-
- //####################### FORZA X #############################
- if ( 0.25<=Forza_x) grx_box(7,Y0min+210,26,Y0min+220,GREEN);
- else grx_box(7,Y0min+210,26,Y0min+220,COL_SFONDO);
- if ( 0.5<=Forza_x) grx_box(7,Y0min+195,26,Y0min+205,GREEN);
- else grx_box(7,Y0min+195,26,Y0min+205,COL_SFONDO);
- if ( 0.75<=Forza_x) grx_box(7,Y0min+180,26,Y0min+190,GREEN);
- else grx_box(7,Y0min+180,26,Y0min+190,COL_SFONDO);
- if ( 1<=Forza_x) grx_box(7,Y0min+165,26,Y0min+175,GREEN);
- else grx_box(7,Y0min+165,26,Y0min+175,COL_SFONDO);
- if ( 1.25<=Forza_x) grx_box(7,Y0min+150,26,Y0min+160,GREEN);
- else grx_box(7,Y0min+150,26,Y0min+160,COL_SFONDO);
- if ( 1.50<=Forza_x) grx_box(7,Y0min+135,26,Y0min+145,YELLOW);
- else grx_box(7,Y0min+135,26,Y0min+145,COL_SFONDO);
- if ( 1.75<=Forza_x) grx_box(7,Y0min+120,26,Y0min+130,RED);
- else grx_box(7,Y0min+120,26,Y0min+130,COL_SFONDO);
- if ( 2<=Forza_x) grx_box(7,Y0min+105,26,Y0min+115,RED);
- else grx_box(7,Y0min+105,26,Y0min+115,COL_SFONDO);
- //########### ------
- if (-0.25>=Forza_x) grx_box(7,Y0min+230,26,Y0min+240,GREEN);
- else grx_box(7,Y0min+230,26,Y0min+240,COL_SFONDO);
- if ( -0.5>=Forza_x) grx_box(7,Y0min+245,26,Y0min+255,GREEN);
- else grx_box(7,Y0min+245,26,Y0min+255,COL_SFONDO);
- if ( -0.75>=Forza_x) grx_box(7,Y0min+260,26,Y0min+270,GREEN);
- else grx_box(7,Y0min+260,26,Y0min+270,COL_SFONDO);
- if ( -1>=Forza_x) grx_box(7,Y0min+275,26,Y0min+285,GREEN);
- else grx_box(7,Y0min+275,26,Y0min+285,COL_SFONDO);
- if ( -1.25>=Forza_x) grx_box(7,Y0min+290,26,Y0min+300,GREEN);
- else grx_box(7,Y0min+290,26,Y0min+300,COL_SFONDO);
- if ( -1.50>=Forza_x) grx_box(7,Y0min+305,26,Y0min+315,YELLOW);
- else grx_box(7,Y0min+305,26,Y0min+315,COL_SFONDO);
- if ( -1.75>=Forza_x) grx_box(7,Y0min+320,26,Y0min+330,RED);
- else grx_box(7,Y0min+320,26,Y0min+330,COL_SFONDO);
- if ( -2>=Forza_x) grx_box(7,Y0min+335,26,Y0min+345,RED);
- else grx_box(7,Y0min+335,26,Y0min+345,COL_SFONDO);
- //####################### FORZA Y #############################
- if ( -0.5>=Forza_y) grx_box(32,Y0min+340,51,Y0min+345,GREEN);
- else grx_box(32,Y0min+340,51,Y0min+345,COL_SFONDO);
- if ( -1>=Forza_y) grx_box(32,Y0min+333,51,Y0min+338,GREEN);
- else grx_box(32,Y0min+333,51,Y0min+338,COL_SFONDO);
- if ( -1.5>=Forza_y) grx_box(32,Y0min+326,51,Y0min+331,GREEN);
- else grx_box(32,Y0min+326,51,Y0min+331,COL_SFONDO);
- if ( -2>=Forza_y) grx_box(32,Y0min+319,51,Y0min+324,GREEN);
- else grx_box(32,Y0min+319,51,Y0min+324,COL_SFONDO);
- if ( -2.5>=Forza_y) grx_box(32,Y0min+312,51,Y0min+317,GREEN);
- else grx_box(32,Y0min+312,51,Y0min+317,COL_SFONDO);
- if ( -3>=Forza_y) grx_box(32,Y0min+305,51,Y0min+310,GREEN);
- else grx_box(32,Y0min+305,51,Y0min+310,COL_SFONDO);
- if ( -3.5>=Forza_y) grx_box(32,Y0min+298,51,Y0min+303,GREEN);
- else grx_box(32,Y0min+298,51,Y0min+303,COL_SFONDO);
- if ( -4>=Forza_y) grx_box(32,Y0min+291,51,Y0min+296,GREEN);
- else grx_box(32,Y0min+291,51,Y0min+296,COL_SFONDO);
- if ( -4.5>=Forza_y) grx_box(32,Y0min+284,51,Y0min+289,GREEN);
- else grx_box(32,Y0min+284,51,Y0min+289,COL_SFONDO);
- if ( -5>=Forza_y) grx_box(32,Y0min+277,51,Y0min+282,GREEN);
- else grx_box(32,Y0min+277,51,Y0min+282,COL_SFONDO);
- if ( -5.5>=Forza_y) grx_box(32,Y0min+270,51,Y0min+275,GREEN);
- else grx_box(32,Y0min+270,51,Y0min+275,COL_SFONDO);
- if ( -6>=Forza_y) grx_box(32,Y0min+263,51,Y0min+268,GREEN);
- else grx_box(32,Y0min+263,51,Y0min+268,COL_SFONDO);
- if ( -6.5>=Forza_y) grx_box(32,Y0min+256,51,Y0min+261,GREEN);
- else grx_box(32,Y0min+256,51,Y0min+261,COL_SFONDO);
- if ( -7>=Forza_y) grx_box(32,Y0min+249,51,Y0min+254,GREEN);
- else grx_box(32,Y0min+249,51,Y0min+254,COL_SFONDO);
- if ( -7.5>=Forza_y) grx_box(32,Y0min+242,51,Y0min+247,GREEN);
- else grx_box(32,Y0min+242,51,Y0min+247,COL_SFONDO);
- if ( -8>=Forza_y) grx_box(32,Y0min+235,51,Y0min+240,GREEN);
- else grx_box(32,Y0min+235,51,Y0min+240,COL_SFONDO);
- if ( -8.5>=Forza_y) grx_box(32,Y0min+228,51,Y0min+233,GREEN);
- else grx_box(32,Y0min+228,51,Y0min+233,COL_SFONDO);
- if ( -9>=Forza_y) grx_box(32,Y0min+221,51,Y0min+226,GREEN);
- else grx_box(32,Y0min+221,51,Y0min+226,COL_SFONDO);
- if ( -9.5>=Forza_y) grx_box(32,Y0min+214,51,Y0min+219,GREEN);
- else grx_box(32,Y0min+214,51,Y0min+219,COL_SFONDO);
- if ( -10>=Forza_y) grx_box(32,Y0min+207,51,Y0min+212,GREEN);
- else grx_box(32,Y0min+207,51,Y0min+212,COL_SFONDO);
- if ( -10.5>=Forza_y) grx_box(32,Y0min+200,51,Y0min+205,GREEN);
- else grx_box(32,Y0min+200,51,Y0min+205,COL_SFONDO);
- if ( -11>=Forza_y) grx_box(32,Y0min+193,51,Y0min+198,GREEN);
- else grx_box(32,Y0min+193,51,Y0min+198,COL_SFONDO);
- if ( -11.5>=Forza_y) grx_box(32,Y0min+186,51,Y0min+191,GREEN);
- else grx_box(32,Y0min+186,51,Y0min+191,COL_SFONDO);
- if ( -12>=Forza_y) grx_box(32,Y0min+179,51,Y0min+184,GREEN);
- else grx_box(32,Y0min+179,51,Y0min+184,COL_SFONDO);
- if ( -12.5>=Forza_y) grx_box(32,Y0min+172,51,Y0min+177,GREEN);
- else grx_box(32,Y0min+172,51,Y0min+177,COL_SFONDO);
- if ( -13>=Forza_y) grx_box(32,Y0min+165,51,Y0min+170,GREEN);
- else grx_box(32,Y0min+165,51,Y0min+170,COL_SFONDO);
- if ( -13.5>=Forza_y) grx_box(32,Y0min+158,51,Y0min+163,GREEN);
- else grx_box(32,Y0min+158,51,Y0min+163,COL_SFONDO);
- if ( -14>=Forza_y) grx_box(32,Y0min+151,51,Y0min+156,GREEN);
- else grx_box(32,Y0min+151,51,Y0min+156,COL_SFONDO);
- if ( -14.5>=Forza_y) grx_box(32,Y0min+144,51,Y0min+149,GREEN);
- else grx_box(32,Y0min+144,51,Y0min+149,COL_SFONDO);
- if ( -15>=Forza_y) grx_box(32,Y0min+137,51,Y0min+142,YELLOW);
- else grx_box(32,Y0min+137,51,Y0min+142,COL_SFONDO);
- if ( -15.5>=Forza_y) grx_box(32,Y0min+130,51,Y0min+135,YELLOW);
- else grx_box(32,Y0min+130,51,Y0min+135,COL_SFONDO);
- if ( -16>=Forza_y) grx_box(32,Y0min+123,51,Y0min+128,RED);
- else grx_box(32,Y0min+123,51,Y0min+128,COL_SFONDO);
- if ( -16.5>=Forza_y) grx_box(32,Y0min+116,51,Y0min+121,RED);
- else grx_box(32,Y0min+116,51,Y0min+121,COL_SFONDO);
- if ( -17>=Forza_y) grx_box(32,Y0min+109,51,Y0min+114,RED);
- else grx_box(32,Y0min+109,51,Y0min+114,COL_SFONDO);
- if ( -17.5>=Forza_y) grx_box(32,Y0min+102,51,Y0min+107,RED);
- else grx_box(32,Y0min+102,51,Y0min+107,COL_SFONDO);
-
- //####################### ACCELERAZIONE X #############################
- if ( -2.125>=Acc_x)grx_box(56,Y0min+340,75,Y0min+345,RED);
- else grx_box(55,Y0min+340,75,Y0min+345,COL_SFONDO);
- if ( -2>=Acc_x) grx_box(56,Y0min+333,75,Y0min+338,RED);
- else grx_box(56,Y0min+333,75,Y0min+338,COL_SFONDO);
- if ( -1.875>=Acc_x)grx_box(56,Y0min+326,75,Y0min+331,RED);
- else grx_box(56,Y0min+326,75,Y0min+331,COL_SFONDO);
- if ( -1.750>=Acc_x) grx_box(56,Y0min+319,75,Y0min+324,YELLOW);
- else grx_box(56,Y0min+319,75,Y0min+324,COL_SFONDO);
- if ( -1.625>=Acc_x)grx_box(56,Y0min+312,75,Y0min+317,YELLOW);
- else grx_box(56,Y0min+312,75,Y0min+317,COL_SFONDO);
- if ( -1.5>=Acc_x) grx_box(56,Y0min+305,75,Y0min+310,GREEN);
- else grx_box(56,Y0min+305,75,Y0min+310,COL_SFONDO);
- if ( -1.375>=Acc_x)grx_box(56,Y0min+298,75,Y0min+303,GREEN);
- else grx_box(56,Y0min+298,75,Y0min+303,COL_SFONDO);
- if ( -1.250>=Acc_x) grx_box(56,Y0min+291,75,Y0min+296,GREEN);
- else grx_box(56,Y0min+291,75,Y0min+296,COL_SFONDO);
- if ( -1.125>=Acc_x)grx_box(56,Y0min+284,75,Y0min+289,GREEN);
- else grx_box(56,Y0min+284,75,Y0min+289,COL_SFONDO);
- if ( -1>=Acc_x) grx_box(56,Y0min+277,75,Y0min+282,GREEN);
- else grx_box(56,Y0min+277,75,Y0min+282,COL_SFONDO);
- if ( -0.875>=Acc_x)grx_box(56,Y0min+270,75,Y0min+275,GREEN);
- else grx_box(56,Y0min+270,75,Y0min+275,COL_SFONDO);
- if ( -0.750>=Acc_x) grx_box(56,Y0min+263,75,Y0min+268,GREEN);
- else grx_box(56,Y0min+263,75,Y0min+268,COL_SFONDO);
- if ( -0.625>=Acc_x)grx_box(56,Y0min+256,75,Y0min+261,GREEN);
- else grx_box(56,Y0min+256,75,Y0min+261,COL_SFONDO);
- if ( -0.5>=Acc_x) grx_box(56,Y0min+249,75,Y0min+254,GREEN);
- else grx_box(56,Y0min+249,75,Y0min+254,COL_SFONDO);
- if ( -0.375>=Acc_x)grx_box(56,Y0min+242,75,Y0min+247,GREEN);
- else grx_box(56,Y0min+242,75,Y0min+247,COL_SFONDO);
- if ( -0.250>=Acc_x) grx_box(56,Y0min+235,75,Y0min+240,GREEN);
- else grx_box(56,Y0min+235,75,Y0min+240,COL_SFONDO);
- if ( -0.125>=Acc_x)grx_box(56,Y0min+228,75,Y0min+233,GREEN);
- else grx_box(56,Y0min+228,75,Y0min+233,COL_SFONDO);
- //############# ------
- if ( 0.125<=Acc_x) grx_box(56,Y0min+221,75,Y0min+226,GREEN);
- else grx_box(56,Y0min+221,75,Y0min+226,COL_SFONDO);
- if ( 0.250<=Acc_x)grx_box(56,Y0min+214,75,Y0min+219,GREEN);
- else grx_box(56,Y0min+214,75,Y0min+219,COL_SFONDO);
- if ( 0.375<=Acc_x) grx_box(56,Y0min+207,75,Y0min+212,GREEN);
- else grx_box(56,Y0min+207,75,Y0min+212,COL_SFONDO);
- if (0.5<=Acc_x)grx_box(56,Y0min+200,75,Y0min+205,GREEN);
- else grx_box(56,Y0min+200,75,Y0min+205,COL_SFONDO);
- if ( 0.625<=Acc_x) grx_box(56,Y0min+193,75,Y0min+198,GREEN);
- else grx_box(56,Y0min+193,75,Y0min+198,COL_SFONDO);
- if (0.750<=Acc_x)grx_box(56,Y0min+186,75,Y0min+191,GREEN);
- else grx_box(56,Y0min+186,75,Y0min+191,COL_SFONDO);
- if (0.875<=Acc_x) grx_box(56,Y0min+179,75,Y0min+184,GREEN);
- else grx_box(56,Y0min+179,75,Y0min+184,COL_SFONDO);
- if (1<=Acc_x)grx_box(56,Y0min+172,75,Y0min+177,GREEN);
- else grx_box(56,Y0min+172,75,Y0min+177,COL_SFONDO);
- if (1.125<=Acc_x) grx_box(56,Y0min+165,75,Y0min+170,GREEN);
- else grx_box(56,Y0min+165,75,Y0min+170,COL_SFONDO);
- if (1.250<=Acc_x)grx_box(56,Y0min+158,75,Y0min+163,GREEN);
- else grx_box(56,Y0min+158,75,Y0min+163,COL_SFONDO);
- if (1.375<=Acc_x) grx_box(56,Y0min+151,75,Y0min+156,GREEN);
- else grx_box(56,Y0min+151,75,Y0min+156,COL_SFONDO);
- if (1.5<=Acc_x)grx_box(56,Y0min+144,75,Y0min+149,GREEN);
- else grx_box(56,Y0min+144,75,Y0min+149,COL_SFONDO);
- if (1.625<=Acc_x) grx_box(56,Y0min+137,75,Y0min+142,YELLOW);
- else grx_box(56,Y0min+137,75,Y0min+142,COL_SFONDO);
- if (1.750<=Acc_x)grx_box(56,Y0min+130,75,Y0min+135,YELLOW);
- else grx_box(56,Y0min+130,75,Y0min+135,COL_SFONDO);
- if (1.875<=Acc_x) grx_box(56,Y0min+123,75,Y0min+128,RED);
- else grx_box(56,Y0min+123,75,Y0min+128,COL_SFONDO);
- if (2<=Acc_x)grx_box(56,Y0min+116,75,Y0min+121,RED);
- else grx_box(56,Y0min+116,75,Y0min+121,COL_SFONDO);
- if (2.125<=Acc_x) grx_box(56,Y0min+109,75,Y0min+114,RED);
- else grx_box(56,Y0min+109,75,Y0min+114,COL_SFONDO);
- //####################### ACCELERAZIONE Y #############################
- if ( 2.5<=Acc_y) { grx_box(81,Y0min+340,100,Y0min+345,RED);
- grx_box(81+5,Y0min+340+1,100-5,Y0min+345-1,BLUE);
- }
- else grx_box(81,Y0min+340,100,Y0min+345,COL_SFONDO);
- if ( 2.200<=Acc_y) grx_box(81,Y0min+333,100,Y0min+338,RED);
- else grx_box(81,Y0min+333,100,Y0min+338,COL_SFONDO);
- if ( 1.950<=Acc_y) grx_box(81,Y0min+326,100,Y0min+331,RED);
- else grx_box(81,Y0min+326,100,Y0min+331,COL_SFONDO);
- if ( 1.750<=Acc_y) grx_box(81,Y0min+319,100,Y0min+324,YELLOW);
- else grx_box(81,Y0min+319,100,Y0min+324,COL_SFONDO);
- if ( 1.625<=Acc_y) grx_box(81,Y0min+312,100,Y0min+317,YELLOW);
- else grx_box(81,Y0min+312,100,Y0min+317,COL_SFONDO);
- if ( 1.5<=Acc_y) grx_box(81,Y0min+305,100,Y0min+310,GREEN);
- else grx_box(81,Y0min+305,100,Y0min+310,COL_SFONDO);
- if ( 1.375<=Acc_y) grx_box(81,Y0min+298,100,Y0min+303,GREEN);
- else grx_box(81,Y0min+298,100,Y0min+303,COL_SFONDO);
- if ( 1.250<=Acc_y) grx_box(81,Y0min+291,100,Y0min+296,GREEN);
- else grx_box(81,Y0min+291,100,Y0min+296,COL_SFONDO);
- if ( 1.125<=Acc_y) grx_box(81,Y0min+284,100,Y0min+289,GREEN);
- else grx_box(81,Y0min+284,100,Y0min+289,COL_SFONDO);
- if ( 1<=Acc_y) grx_box(81,Y0min+277,100,Y0min+282,GREEN);
- else grx_box(81,Y0min+277,100,Y0min+282,COL_SFONDO);
- if ( 0.875<=Acc_y) grx_box(81,Y0min+270,100,Y0min+275,GREEN);
- else grx_box(81,Y0min+270,100,Y0min+275,COL_SFONDO);
- if ( 0.750<=Acc_y) grx_box(81,Y0min+263,100,Y0min+268,GREEN);
- else grx_box(81,Y0min+263,100,Y0min+268,COL_SFONDO);
- if ( 0.625<=Acc_y) grx_box(81,Y0min+256,100,Y0min+261,GREEN);
- else grx_box(81,Y0min+256,100,Y0min+261,COL_SFONDO);
- if ( 0.5<=Acc_y) grx_box(81,Y0min+249,100,Y0min+254,GREEN);
- else grx_box(81,Y0min+249,100,Y0min+254,COL_SFONDO);
- if ( 0.375<=Acc_y) grx_box(81,Y0min+242,100,Y0min+247,GREEN);
- else grx_box(81,Y0min+242,100,Y0min+247,COL_SFONDO);
- if ( 0.25<=Acc_y) grx_box(81,Y0min+235,100,Y0min+240,GREEN);
- else grx_box(81,Y0min+235,100,Y0min+240,COL_SFONDO);
- if ( 0.125<=Acc_y) grx_box(81,Y0min+228,100,Y0min+233,GREEN);
- else grx_box(81,Y0min+228,100,Y0min+233,COL_SFONDO);
- //############# ------
- if ( -0.125>=Acc_y) grx_box(81,Y0min+221,100,Y0min+226,GREEN);
- else grx_box(81,Y0min+221,100,Y0min+226,COL_SFONDO);
- if ( -0.250>=Acc_y) grx_box(81,Y0min+214,100,Y0min+219,GREEN);
- else grx_box(81,Y0min+214,100,Y0min+219,COL_SFONDO);
- if ( -0.375>=Acc_y) grx_box(81,Y0min+207,100,Y0min+212,GREEN);
- else grx_box(81,Y0min+207,100,Y0min+212,COL_SFONDO);
- if (-0.5>=Acc_y) grx_box(81,Y0min+200,100,Y0min+205,GREEN);
- else grx_box(81,Y0min+200,100,Y0min+205,COL_SFONDO);
- if ( -0.625>=Acc_y) grx_box(81,Y0min+193,100,Y0min+198,GREEN);
- else grx_box(81,Y0min+193,100,Y0min+198,COL_SFONDO);
- if (-0.750>=Acc_y) grx_box(81,Y0min+186,100,Y0min+191,GREEN);
- else grx_box(81,Y0min+186,100,Y0min+191,COL_SFONDO);
- if (-0.875>=Acc_y) grx_box(81,Y0min+179,100,Y0min+184,GREEN);
- else grx_box(81,Y0min+179,100,Y0min+184,COL_SFONDO);
- if (-1>=Acc_y) grx_box(81,Y0min+172,100,Y0min+177,GREEN);
- else grx_box(81,Y0min+172,100,Y0min+177,COL_SFONDO);
- if (-1.125>=Acc_y) grx_box(81,Y0min+165,100,Y0min+170,YELLOW);
- else grx_box(81,Y0min+165,100,Y0min+170,COL_SFONDO);
- if (-1.250>=Acc_y) grx_box(81,Y0min+158,100,Y0min+163,YELLOW);
- else grx_box(81,Y0min+158,100,Y0min+163,COL_SFONDO);
- if (-1.375>=Acc_y) grx_box(81,Y0min+151,100,Y0min+156,YELLOW);
- else grx_box(81,Y0min+151,100,Y0min+156,COL_SFONDO);
- if (-1.5>=Acc_y) grx_box(81,Y0min+144,100,Y0min+149,YELLOW);
- else grx_box(81,Y0min+144,100,Y0min+149,COL_SFONDO);
- if (-1.625>=Acc_y) grx_box(81,Y0min+137,100,Y0min+142,RED);
- else grx_box(81,Y0min+137,100,Y0min+142,COL_SFONDO);
- if (-1.750>=Acc_y) grx_box(81,Y0min+130,100,Y0min+135,RED);
- else grx_box(81,Y0min+130,100,Y0min+135,COL_SFONDO);
- if (-1.875>=Acc_y) grx_box(81,Y0min+123,100,Y0min+128,RED);
- else grx_box(81,Y0min+123,100,Y0min+128,COL_SFONDO);
- if (-2>=Acc_y) grx_box(81,Y0min+116,100,Y0min+121,RED);
- else grx_box(81,Y0min+116,100,Y0min+121,COL_SFONDO);
- if (-2.3>=Acc_y) grx_box(81,Y0min+109,100,Y0min+114,RED);
- else grx_box(81,Y0min+109,100,Y0min+114,COL_SFONDO);
- //####################### VELOCITA X #############################
- //if ( -21.25>=Velocita_x)grx_box(56,Y0min+340+250,75,Y0min+345+250,RED);
- //else grx_box(55,Y0min+340+250,75,Y0min+345+250,COL_SFONDO);
- if ( -20>=Velocita_x) grx_box(56,Y0min+333+250,75,Y0min+338+250,RED);
- else grx_box(56,Y0min+333+250,75,Y0min+338+250,COL_SFONDO);
- if ( -18.75>=Velocita_x)grx_box(56,Y0min+326+250,75,Y0min+331+250,RED);
- else grx_box(56,Y0min+326+250,75,Y0min+331+250,COL_SFONDO);
- if ( -17.50>=Velocita_x)grx_box(56,Y0min+319+250,75,Y0min+324+250,YELLOW);
- else grx_box(56,Y0min+319+250,75,Y0min+324+250,COL_SFONDO);
- if ( -16.25>=Velocita_x)grx_box(56,Y0min+312+250,75,Y0min+317+250,YELLOW);
- else grx_box(56,Y0min+312+250,75,Y0min+317+250,COL_SFONDO);
- if ( -15>=Velocita_x) grx_box(56,Y0min+305+250,75,Y0min+310+250,GREEN);
- else grx_box(56,Y0min+305+250,75,Y0min+310+250,COL_SFONDO);
- if ( -13.75>=Velocita_x)grx_box(56,Y0min+298+250,75,Y0min+303+250,GREEN);
- else grx_box(56,Y0min+298+250,75,Y0min+303+250,COL_SFONDO);
- if ( -12.50>=Velocita_x)grx_box(56,Y0min+291+250,75,Y0min+296+250,GREEN);
- else grx_box(56,Y0min+291+250,75,Y0min+296+250,COL_SFONDO);
- if ( -11.25>=Velocita_x)grx_box(56,Y0min+284+250,75,Y0min+289+250,GREEN);
- else grx_box(56,Y0min+284+250,75,Y0min+289+250,COL_SFONDO);
- if ( -10>=Velocita_x) grx_box(56,Y0min+277+250,75,Y0min+282+250,GREEN);
- else grx_box(56,Y0min+277+250,75,Y0min+282+250,COL_SFONDO);
- if ( -8.75>=Velocita_x)grx_box(56,Y0min+270+250,75,Y0min+275+250,GREEN);
- else grx_box(56,Y0min+270+250,75,Y0min+275+250,COL_SFONDO);
- if ( -7.50>=Velocita_x)grx_box(56,Y0min+263+250,75,Y0min+268+250,GREEN);
- else grx_box(56,Y0min+263+250,75,Y0min+268+250,COL_SFONDO);
- if ( -6.25>=Velocita_x)grx_box(56,Y0min+256+250,75,Y0min+261+250,GREEN);
- else grx_box(56,Y0min+256+250,75,Y0min+261+250,COL_SFONDO);
- if ( -5>=Velocita_x) grx_box(56,Y0min+249+250,75,Y0min+254+250,GREEN);
- else grx_box(56,Y0min+249+250,75,Y0min+254+250,COL_SFONDO);
- if ( -3.75>=Velocita_x)grx_box(56,Y0min+242+250,75,Y0min+247+250,GREEN);
- else grx_box(56,Y0min+242+250,75,Y0min+247+250,COL_SFONDO);
- if ( -2.50>=Velocita_x)grx_box(56,Y0min+235+250,75,Y0min+240+250,GREEN);
- else grx_box(56,Y0min+235+250,75,Y0min+240+250,COL_SFONDO);
- if ( -1.25>=Velocita_x)grx_box(56,Y0min+228+250,75,Y0min+233+250,GREEN);
- else grx_box(56,Y0min+228+250,75,Y0min+233+250,COL_SFONDO);
- //############# ------
- if ( 1.25<=Velocita_x) grx_box(56,Y0min+221+250,75,Y0min+226+250,GREEN);
- else grx_box(56,Y0min+221+250,75,Y0min+226+250,COL_SFONDO);
- if ( 2.50<=Velocita_x) grx_box(56,Y0min+214+250,75,Y0min+219+250,GREEN);
- else grx_box(56,Y0min+214+250,75,Y0min+219+250,COL_SFONDO);
- if ( 3.75<=Velocita_x) grx_box(56,Y0min+207+250,75,Y0min+212+250,GREEN);
- else grx_box(56,Y0min+207+250,75,Y0min+212+250,COL_SFONDO);
- if (5<=Velocita_x) grx_box(56,Y0min+200+250,75,Y0min+205+250,GREEN);
- else grx_box(56,Y0min+200+250,75,Y0min+205+250,COL_SFONDO);
- if ( 6.25<=Velocita_x) grx_box(56,Y0min+193+250,75,Y0min+198+250,GREEN);
- else grx_box(56,Y0min+193+250,75,Y0min+198+250,COL_SFONDO);
- if (7.50<=Velocita_x) grx_box(56,Y0min+186+250,75,Y0min+191+250,GREEN);
- else grx_box(56,Y0min+186+250,75,Y0min+191+250,COL_SFONDO);
- if (8.75<=Velocita_x) grx_box(56,Y0min+179+250,75,Y0min+184+250,GREEN);
- else grx_box(56,Y0min+179+250,75,Y0min+184+250,COL_SFONDO);
- if (10<=Velocita_x) grx_box(56,Y0min+172+250,75,Y0min+177+250,GREEN);
- else grx_box(56,Y0min+172+250,75,Y0min+177+250,COL_SFONDO);
- if (11.25<=Velocita_x) grx_box(56,Y0min+165+250,75,Y0min+170+250,GREEN);
- else grx_box(56,Y0min+165+250,75,Y0min+170+250,COL_SFONDO);
- if (12.50<=Velocita_x) grx_box(56,Y0min+158+250,75,Y0min+163+250,GREEN);
- else grx_box(56,Y0min+158+250,75,Y0min+163+250,COL_SFONDO);
- if (13.75<=Velocita_x) grx_box(56,Y0min+151+250,75,Y0min+156+250,GREEN);
- else grx_box(56,Y0min+151+250,75,Y0min+156+250,COL_SFONDO);
- if (15<=Velocita_x) grx_box(56,Y0min+144+250,75,Y0min+149+250,GREEN);
- else grx_box(56,Y0min+144+250,75,Y0min+149+250,COL_SFONDO);
- if (16.25<=Velocita_x) grx_box(56,Y0min+137+250,75,Y0min+142+250,YELLOW);
- else grx_box(56,Y0min+137+250,75,Y0min+142+250,COL_SFONDO);
- if (17.50<=Velocita_x) grx_box(56,Y0min+130+250,75,Y0min+135+250,YELLOW);
- else grx_box(56,Y0min+130+250,75,Y0min+135+250,COL_SFONDO);
- if (18.75<=Velocita_x) grx_box(56,Y0min+123+250,75,Y0min+128+250,RED);
- else grx_box(56,Y0min+123+250,75,Y0min+128+250,COL_SFONDO);
- if (20<=Velocita_x) grx_box(56,Y0min+116+250,75,Y0min+121+250,RED);
- else grx_box(56,Y0min+116+250,75,Y0min+121+250,COL_SFONDO);
- if (21.25<=Velocita_x) grx_box(56,Y0min+109+250,75,Y0min+114+250,RED);
- else grx_box(56,Y0min+109+250,75,Y0min+114+250,COL_SFONDO);
-
- //####################### VELOCITA Y #############################
- // if ( 160<=Velocita_y)grx_box(81,Y0min+340+250,100,Y0min+345+250,RED);
- // else grx_box(81,Y0min+340+250,100,Y0min+345+250,COL_SFONDO);
- if ( 40<=Velocita_y) grx_box(81,Y0min+333+250,100,Y0min+338+250,RED);
- else grx_box(81,Y0min+333+250,100,Y0min+338+250,COL_SFONDO);
- if ( 37.5<=Velocita_y)grx_box(81,Y0min+326+250,100,Y0min+331+250,RED);
- else grx_box(81,Y0min+326+250,100,Y0min+331+250,COL_SFONDO);
- if ( 35<=Velocita_y)grx_box(81,Y0min+319+250,100,Y0min+324+250,YELLOW);
- else grx_box(81,Y0min+319+250,100,Y0min+324+250,COL_SFONDO);
- if ( 32.5<=Velocita_y)grx_box(81,Y0min+312+250,100,Y0min+317+250,YELLOW);
- else grx_box(81,Y0min+312+250,100,Y0min+317+250,COL_SFONDO);
- if ( 30<=Velocita_y) grx_box(81,Y0min+305+250,100,Y0min+310+250,GREEN);
- else grx_box(81,Y0min+305+250,100,Y0min+310+250,COL_SFONDO);
- if ( 27.5<=Velocita_y)grx_box(81,Y0min+298+250,100,Y0min+303+250,GREEN);
- else grx_box(81,Y0min+298+250,100,Y0min+303+250,COL_SFONDO);
- if ( 25<=Velocita_y)grx_box(81,Y0min+291+250,100,Y0min+296+250,GREEN);
- else grx_box(81,Y0min+291+250,100,Y0min+296+250,COL_SFONDO);
- if ( 22.5<=Velocita_y)grx_box(81,Y0min+284+250,100,Y0min+289+250,GREEN);
- else grx_box(81,Y0min+284+250,100,Y0min+289+250,COL_SFONDO);
- if ( 20<=Velocita_y) grx_box(81,Y0min+277+250,100,Y0min+282+250,GREEN);
- else grx_box(81,Y0min+277+250,100,Y0min+282+250,COL_SFONDO);
- if ( 17.5<=Velocita_y) grx_box(81,Y0min+270+250,100,Y0min+275+250,GREEN);
- else grx_box(81,Y0min+270+250,100,Y0min+275+250,COL_SFONDO);
- if ( 15<=Velocita_y) grx_box(81,Y0min+263+250,100,Y0min+268+250,GREEN);
- else grx_box(81,Y0min+263+250,100,Y0min+268+250,COL_SFONDO);
- if ( 12.5<=Velocita_y) grx_box(81,Y0min+256+250,100,Y0min+261+250,GREEN);
- else grx_box(81,Y0min+256+250,100,Y0min+261+250,COL_SFONDO);
- if ( 10<=Velocita_y) grx_box(81,Y0min+249+250,100,Y0min+254+250,GREEN);
- else grx_box(81,Y0min+249+250,100,Y0min+254+250,COL_SFONDO);
- if ( 7.5<=Velocita_y) grx_box(81,Y0min+242+250,100,Y0min+247+250,GREEN);
- else grx_box(81,Y0min+242+250,100,Y0min+247+250,COL_SFONDO);
- if ( 5<=Velocita_y) grx_box(81,Y0min+235+250,100,Y0min+240+250,GREEN);
- else grx_box(81,Y0min+235+250,100,Y0min+240+250,COL_SFONDO);
- if ( 2.5<=Velocita_y) grx_box(81,Y0min+228+250,100,Y0min+233+250,GREEN);
- else grx_box(81,Y0min+228+250,100,Y0min+233+250,COL_SFONDO);
- //############# ------
- if (-2.5>=Velocita_y) grx_box(81,Y0min+221+250,100,Y0min+226+250,GREEN);
- else grx_box(81,Y0min+221+250,100,Y0min+226+250,COL_SFONDO);
- if (-5>=Velocita_y) grx_box(81,Y0min+214+250,100,Y0min+219+250,GREEN);
- else grx_box(81,Y0min+214+250,100,Y0min+219+250,COL_SFONDO);
- if (-7.5>=Velocita_y) grx_box(81,Y0min+207+250,100,Y0min+212+250,GREEN);
- else grx_box(81,Y0min+207+250,100,Y0min+212+250,COL_SFONDO);
- if (-10>=Velocita_y) grx_box(81,Y0min+200+250,100,Y0min+205+250,GREEN);
- else grx_box(81,Y0min+200+250,100,Y0min+205+250,COL_SFONDO);
- if (-12.5>=Velocita_y) grx_box(81,Y0min+193+250,100,Y0min+198+250,GREEN);
- else grx_box(81,Y0min+193+250,100,Y0min+198+250,COL_SFONDO);
- if (-15>=Velocita_y) grx_box(81,Y0min+186+250,100,Y0min+191+250,GREEN);
- else grx_box(81,Y0min+186+250,100,Y0min+191+250,COL_SFONDO);
- if (-17.5>=Velocita_y) grx_box(81,Y0min+179+250,100,Y0min+184+250,GREEN);
- else grx_box(81,Y0min+179+250,100,Y0min+184+250,COL_SFONDO);
- if (-20>=Velocita_y) grx_box(81,Y0min+172+250,100,Y0min+177+250,GREEN);
- else grx_box(81,Y0min+172+250,100,Y0min+177+250,COL_SFONDO);
- if (-22.5>=Velocita_y) grx_box(81,Y0min+165+250,100,Y0min+170+250,GREEN);
- else grx_box(81,Y0min+165+250,100,Y0min+170+250,COL_SFONDO);
- if (-25>=Velocita_y) grx_box(81,Y0min+158+250,100,Y0min+163+250,GREEN);
- else grx_box(81,Y0min+158+250,100,Y0min+163+250,COL_SFONDO);
- if (-27.5>=Velocita_y) grx_box(81,Y0min+151+250,100,Y0min+156+250,GREEN);
- else grx_box(81,Y0min+151+250,100,Y0min+156+250,COL_SFONDO);
- if (-30>=Velocita_y) grx_box(81,Y0min+144+250,100,Y0min+149+250,GREEN);
- else grx_box(81,Y0min+144+250,100,Y0min+149+250,COL_SFONDO);
- if (-32.5>=Velocita_y) grx_box(81,Y0min+137+250,100,Y0min+142+250,YELLOW);
- else grx_box(81,Y0min+137+250,100,Y0min+142+250,COL_SFONDO);
- if (-35>=Velocita_y) grx_box(81,Y0min+130+250,100,Y0min+135+250,YELLOW);
- else grx_box(81,Y0min+130+250,100,Y0min+135+250,COL_SFONDO);
- if (-37.5>=Velocita_y) grx_box(81,Y0min+123+250,100,Y0min+128+250,RED);
- else grx_box(81,Y0min+123+250,100,Y0min+128+250,COL_SFONDO);
- if (-40>=Velocita_y) grx_box(81,Y0min+116+250,100,Y0min+121+250,RED);
- else grx_box(81,Y0min+116+250,100,Y0min+121+250,COL_SFONDO);
- if (-42.5>=Velocita_y) grx_box(81,Y0min+109+250,100,Y0min+114+250,RED);
- else grx_box(81,Y0min+109+250,100,Y0min+114+250,COL_SFONDO);
-
-
- sem_post(&mutex);
-
-
- task_endcycle();
- }
-}
-
-
Index: pj/eli/eli.h
===================================================================
--- pj/eli/eli.h (revision 1344)
+++ pj/eli/eli.h (nonexistent)
@@ -1,173 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: eli.h,v 1.1.1.1 2002-09-02 09:37:45 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:45 $
- ------------
-
- This file is similar to the configuration of Hartik 3.3.1
-
-**/
-
-/*
- * Copyright (C) 2000 ALLEN-DESTRO and Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-/***************************************/
-/* Corso di Informatica Industriale */
-/* Libreria con le funzioni di disegno */
-/* Creata da ALLEN-DESTRO */
-/***************************************/
-
-//########################################
-// Librerie standard del linguaggio C
-//#######################################
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
-
-//########################################
-// Librerie Hartik
-//########################################
-#include <kernel/kern.h>
-#include <drivers/glib.h>
-#include <drivers/keyb.h>
-#include <ll/i386/cons.h>
-#include <semaphore.h>
-
-//########################################
-// Definizione delle costanti del programma
-//########################################
-
-#define PER_DISEGNA 100000
-#define PER_MOLLA 100000
-#define PER_KILL 200000
-#define G 10
-#define DIM_EL 12
-#define DIM_PESO 10
-#define COL_EL YELLOW
-
-
-#define X0min 4 // Ascissa minima della finestra grafica
-#define Y0min 4 // Ordinata minima della finestra grafica
-#define X0max 796 // Ascissa massima della finestra grafica
-#define Y0max 596 // Ordinata massima della finestra grafica
-#define TERRA 400 // Ordinata della pista di atteraggio
-#define COL_SFONDO 0 // Colore di sfondo della finestra grafica
-#define COL_TESTO 7 // Colore del testo della finestra grafica
-#define COL_CORNICE RED // Colore cornici della finestra grafica
-#define DELTA_COL 32
-
-
-// Valore di pigreco
-#define PIGRECO 3.14159
-
-#define ELICOTTERO_S(x,y,dim,col,sfo) grx_disc(x,y,dim,col); \
- grx_box(x-dim,y,x+dim,y+dim,sfo); \
- grx_line(x-dim*2,y-dim,x+dim*2,y-dim,col); \
- grx_box(x-dim,y,x+(dim*2),y+(dim/3),col); \
- grx_line(x-dim,y+dim/2,x+2*dim,y+dim/2,col); \
- grx_circle(x+dim*2,y,dim/2,col); \
- grx_box(x-dim/10,y,x+dim/10,y+dim/2,col)
-
-#define ELICOTTERO_D(x,y,dim,col,sfo) grx_disc(x,y,dim,col); \
- grx_box(x-dim,y,x+dim,y+dim,sfo); \
- grx_line(x-dim*2,y-dim,x+dim*2,y-dim,col); \
- grx_box(x-(dim*2),y,x+dim,y+(dim/3),col); \
- grx_line(x-2*dim,y+dim/2,x+dim,y+dim/2,col); \
- grx_circle(x-dim*2,y,dim/2,col); \
- grx_box(x-dim/10,y,x+dim/10,y+dim/2,col)
-
-#define PESO(x,y,dim,col) grx_box(x-dim,y,x+dim,y+2*dim,col)
-
-#define MOLLA(x,y1,y2,col) { \
- int w; \
- for (w=y1;w<y2;w=w+2) grx_line(x-3,w,x+3,w,col); \
- }
-
-#define RUSPA_S(x,y,col,colvet) grx_box(x,y-20,x+2,y,col); \
- grx_line(x,y-10,x+5,y-10,col); \
- grx_box(x+5,y-30,x+20,y-5,col); \
- grx_box(x+5,y-10,x+40,y-5,col); \
- grx_disc(x+10,y-5,5,col); \
- grx_disc(x+30,y-5,5,col); \
- grx_box(x+5,y-25,x+12,y-15,colvet)
-
-#define RUSPA_D(x,y,col,colvet) grx_box(x-2,y-20,x,y,col); \
- grx_line(x-5,y-10,x,y-10,col); \
- grx_box(x-20,y-30,x-5,y-5,col); \
- grx_box(x-40,y-10,x-5,y-5,col); \
- grx_disc(x-10,y-5,5,col); \
- grx_disc(x-30,y-5,5,col); \
- grx_box(x-12,y-25,x-5,y-15,colvet)
-
-#define ESPLOSIONE(x,y) grx_box(x-2,y-2,x+1,y+1,RED+1); \
- grx_box(x-5,y-5,x-4,y-3,RED+1); \
- grx_box(x-6,y-2,x-4,y,RED+1); \
- grx_box(x+3,y+4,x+4,y+7,RED+1); \
- grx_box(x+5,y-6,x+8,y-4,RED+1); \
- grx_box(x-10,y+10,x-8,y+8,RED+1); \
- grx_box(x-1,y-10,x+1,y-8,RED+1); \
- grx_box(x-13,y-1,x-10,y+1,RED+1); \
- grx_box(x+8,y-7,x+10,y-5,RED+1); \
- grx_box(x,y+6,x-1,y+8,RED+1); \
- grx_box(x-DIM_PESO-1,y-1,x-DIM_PESO+1,y+1,RED+1); \
- grx_box(x-DIM_PESO-1,y+2*DIM_PESO-1,x-DIM_PESO+1,y+2*DIM_PESO+1,RED+1); \
- grx_box(x+DIM_PESO-1,y-1,x+DIM_PESO+1,y+1,RED+1); \
- grx_box(x+DIM_PESO-1,y+2*DIM_PESO-1,x+DIM_PESO+1,y+2*DIM_PESO+1,RED+1); \
- grx_box(x-1,y+DIM_PESO-1,x+1,y+DIM_PESO+1,RED+1); \
- grx_box(x+4,y+DIM_PESO-1,x+6,y+DIM_PESO+1,RED+1); \
-
-//#define PULISCI(x,y) grx_box(x-14,y-11,x+DIM_PESO+2,y+2*DIM_PESO+2,COL_SFONDO)
-#define PULISCI(x,y,d) grx_disc(x,y,d,COL_SFONDO)
-
-/*********************************************************************/
-/* */
-/* Funzione per disegnare gli elementi statici */
-/* */
-/*********************************************************************/
-extern char tastiera;
-extern long double Forza_x,Forza_y,Velocita_x,Velocita_y,Acc_x,Acc_y,Massa;
-// Definizione del semaforo per l'utilizzo della modalità grafica
-extern sem_t mutex;
-
-TASK disegna_stato(int i);
-
-
-
Index: pj/eli/initfile.c
===================================================================
--- pj/eli/initfile.c (revision 1344)
+++ pj/eli/initfile.c (nonexistent)
@@ -1,100 +0,0 @@
-/*
- * Project: S.Ha.R.K.
- *
- * Coordinators:
- * Giorgio Buttazzo <giorgio@sssup.it>
- * Paolo Gai <pj@gandalf.sssup.it>
- *
- * Authors :
- * Paolo Gai <pj@gandalf.sssup.it>
- * (see the web pages for full authors list)
- *
- * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
- *
- * http://www.sssup.it
- * http://retis.sssup.it
- * http://shark.sssup.it
- */
-
-/**
- ------------
- CVS : $Id: initfile.c,v 1.1.1.1 2002-09-02 09:37:45 pj Exp $
-
- File: $File$
- Revision: $Revision: 1.1.1.1 $
- Last update: $Date: 2002-09-02 09:37:45 $
- ------------
-
- This file is similar to the configuration of Hartik 3.3.1
-
-**/
-
-/*
- * Copyright (C) 2000 Paolo Gai
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-
-#include "kernel/kern.h"
-#include "modules/edf.h"
-#include "modules/cbs.h"
-#include "modules/rr.h"
-#include "modules/dummy.h"
-
-#include "modules/sem.h"
-#include "modules/hartport.h"
-#include "modules/cabs.h"
-
-#include "drivers/keyb.h"
-
-
-/*+ sysyem tick in us +*/
-#define TICK 1000
-
-/*+ RR tick in us +*/
-#define RRTICK 10000
-
-TIME __kernel_register_levels__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- EDF_register_level(0);
- RR_register_level(RRTICK, RR_MAIN_YES, mb);
- CBS_register_level(CBS_ENABLE_ALL, 0);
- dummy_register_level();
-
- SEM_register_module();
-
- CABS_register_module();
-
- return TICK;
-}
-
-TASK __init__(void *arg)
-{
- struct multiboot_info *mb = (struct multiboot_info *)arg;
-
- HARTPORT_init();
-
- KEYB_init(NULL);
-
- __call_main__(mb);
-
- return (void *)0;
-}
-