home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!hela.iti.org!cs.widener.edu!icf.hrb.com!els
- From: els@icf.hrb.com (Eric L. Schott)
- Newsgroups: comp.lang.c
- Subject: <None>
- Message-ID: <1992Nov13.082435.19755@icf.hrb.com>
- Date: 13 Nov 92 08:24:35 EST
- References: <1992Nov10.220743.4479@quintro.uucp>
- Organization: HRB Systems, Inc.
- Lines: 493
-
- In article <1992Nov10.220743.4479@quintro.uucp>, reb@quintro.uucp (Roger E. Benz) writes:
- > I would like to setup a Makefile that would allow me to create two
- > different targets from the same source files. Our primary target is
- > a 68k embedded system for which we use a cross compiler. During
- > development, however, we find it useful to build test version using
- > the native compiler. Currently, I have to edit my Makefile to switch
- > compilers and then run: make clean. If anyone knows of an easier way to
- > accomplish this, I would be most thankful.
-
- Attached is a tar save set which does just that. It contains
- five files:
- MakeInit: Only file user creates. This contains directives
- to build executables/libraries for sun, 040, and
- 860 from one set of source files. This is the only
- file users copy to their source director(ies)
- Makefile Standard make file. Store in $JPRR/lib/
- make.part-1 ditto
- make.part-2 ditto
- make.c Enhanced "make" to process above. Put in path BEFORE
- standard make. This program chases links in an interesting
- manner. See the source for details.
-
- Also, attached are two COMPLEX MakeInit's (the only file users create).
- Actually, if there was ever an obfuscated Make contest, this would be my
- entry. (You will see why when you try to understand make.part-2.) This
- is still work inprogress.
-
- In the code, you should use structures such as
- #if defined(CPU_SUN)
- ....
- #elif defined(CPU_68K)
- ....
- #elif defined(CPU_860)
- ....
- #else
- #error Undefined CPU
- #endif
-
- ------------------------- Begin sample MakeInit --------------------------
- #
- ###############################################################################
- # #
- # GLOBAL TARGET DEFINITIONS #
- # #
- ###############################################################################
- #
- # This file specifies the information for the JPRR makefiles to
- # build one or more targets. These targets can include both
- # libraries and executables (i.e. processes or programs).
-
- # Define the libraries and/or executables (programs, processes, or
- # tasks) to build. For libraries, the make procedures automatically
- # add the ".cpu.a" extensions. For executables, the make procecudures
- # automatically add the ".cpu" extensions. If you are building both
- # libraries and executables which use those libraries, define the
- # libraries first.
- TARGETS = liba prgma prgmd subdir/test
-
- # Define the additional CPP flags used to compile all source files.
- CPPFLAGS = -DOUR_TEST
-
- # Define the additional C flags used to compile all source files.
- CFLAGS = -g
-
- # Define the libraries to link with all executables. This does
- # not apply to libraries as targets.
- LIBRARIES =
-
- # Define files to remove with the "clean" target
- CLEAN_EXTRA = subdir/*~ subdir/core subdir/a.out subdir/b.out
-
-
- ###############################################################################
- # #
- # SPECIFIC TARGET DEFINITIONS #
- # #
- ###############################################################################
-
- # Define source files (without trailing ".c" or ".s" extensions) which
- # comprise the target.
- OBJS_liba = b c
- # Define the target type with the "library" or "executable" string.
- TYPE_liba = library
- # Define the target CPU with either "68k," "sun," or "860."
- CPU_liba = 68k sun
- b.68k.o := CPPFLAGS += -DSPECIAL_CASE
-
-
- # OBJS_libd = b c
- # TYPE_libd = library
- # CPU_libd = sun
-
-
- OBJS_prgma = a
- TYPE_prgma = executable
- CPU_prgma = 68k
- # Even additonal compile flags when building target "prgma"
- # prgma := CPPFLAGS += -DPRGMA
- # prgma := CFLAGS += -O
- # Define additional libraries used to build target.
- prgma.68k := LIBRARIES_prgma = liba.68k.a
-
-
- OBJS_prgmd = d
- TYPE_prgmd = executable
- CPU_prgmd = sun
- prgmd.sun := LIBRARIES_prgmd = liba.sun.a
-
- OBJS_subdir/test = subdir/e
- TYPE_subdir/test = executable
- CPU_subdir/test = sun
- LIBRARIES_subdir/test = libd.sun.a
- ------------------------- Begin sample MakeInit --------------------------
- #
- ###############################################################################
- # #
- # GLOBAL TARGET DEFINITIONS #
- # #
- ###############################################################################
- #
- # This file specifies the information for the JPRR makefiles to
- # build one or more targets. These targets can include both
- # libraries and executables (i.e. processes or programs).
-
- # Define the libraries and/or executables (programs, processes, or
- # tasks) to build. For libraries, the make procedures automatically
- # add the ".cpu.a" extensions. For executables, the make procecudures
- # automatically add the ".cpu" extensions. If you are building both
- # libraries and executables which use those libraries, define the
- # libraries first.
- TARGETS = libJP_JCOMLIB libJP_JCOM68K libJP_JCOM860 \
- JPxxCM_Init JPxxCM_Close \
- JPxxCM_Remote_Receive JPxxCM_Remote_Send \
- JPxxCM_860_Receive JPxxCM_860_Comm_ISR
-
-
- # Define the additional CPP flags used to compile all source files.
- CPPFLAGS = -I. -Iinc -I$(JPRR)/inc -I$(PROJINC)
-
- # Define library search path for the shared object library, so the
- # shared object library can be found by executables.
- MakeCWD = $(JPRR)/JPx/JPxx/JPxxC/tmp
- #MakeCWD = $(JPRR)/kls/JPxxC/tmp --- FOR KLS TESTING
-
- libJP_JCOM860 := CPPFLAGS += -I/usr/mc860/os/include \
- -I/usr/mc860/c/include -I/usr/vw/h
-
- JPxxCM_860_Receive := CPPFLAGS += -I/usr/mc860/os/include \
- -I/usr/mc860/c/include -I/usr/vw/h
-
- JPxxCM_860_Comm_ISR := CPPFLAGS += -I/usr/mc860/os/include \
- -I/usr/mc860/c/include -I/usr/vw/h
-
- # Define the additional C flags used to compile all source files.
- CFLAGS = -g
- JPxxCM_Init.sun := SYSLIBS.sun += -ldl
- JPxxCM_Remote_Send.sun := SYSLIBS.sun += -dc -dp -ldl
- JPxxCM_Remote_Receive.sun := SYSLIBS.sun += -dc -dp -ldl
-
- # Define the libraries to link with all executables. This does
- # not apply to libraries as targets.
- LIBRARIES =
- SYSLIBS.68k = $(JPRR)/JPx/JPxx/JPxxC/JPxxCT/tmp/JPxxCT.68k.a
- # Define files to remove with the "clean" target
- CLEAN_EXTRA =
-
-
- ###############################################################################
- # #
- # SPECIFIC TARGET DEFINITIONS #
- # #
- ###############################################################################
-
- DATA_libJP_JCOMLIB = JPxxC_JEXTVAR_External_Variables
- OBJS_libJP_JCOMLIB = ../JPxxCM/tmp/JPxxCM \
- ../JPxxCM/tmp/JPxxCM_Util \
- ../JPxxCM/tmp/JPxxCM_List \
- ../JPxxCM/tmp/JPxxCM_VQ \
- ../JPxxCM/tmp/JPxxCM_Get_Local_Inet_Adrs \
- ../JPxxCD/tmp/JPxxCD \
- ../JPxxCD/tmp/JPxxCD_Util
- TYPE_libJP_JCOMLIB = shared-library
- CPU_libJP_JCOMLIB = sun
- ../JPxxCM/tmp/JPxxCM_Get_Local_Inet_Adrs.sun.o := CC.sun = cc
- ../JPxxCM/tmp/JPxxCM_Get_Local_Inet_Adrs.sun.o := PROJ.sun.CFLAGS =
- ../JPxxCM/tmp/JPxxCM_Get_Local_Inet_Adrs.sun.o := PROJ.sun.CPPFLAGS = \
- -DJP_PROJECT_$(PROJ_SYSTEM) -DCPU_SUN -DSRC_FILE=$(@:%.sun.o=%) -DE_32="enum"
-
-
- DATA_libJP_JCOM68K = JPxxC_JEXTVAR_External_Variables
- OBJS_libJP_JCOM68K = ../JPxxCM/tmp/JPxxCM \
- ../JPxxCM/tmp/JPxxCM_Util \
- ../JPxxCM/tmp/JPxxCM_List \
- ../JPxxCM/tmp/JPxxCM_VQ \
- ../JPxxCM/tmp/qsort \
- ../JPxxCM/tmp/JPxxCM_040_860_Receive \
- ../JPxxCM/tmp/bsearch \
- ../JPxxCD/tmp/JPxxCD \
- ../JPxxCD/tmp/JPxxCD_Util \
- ../JPxxCM/tmp/JPxxCM_Init \
- ../JPxxCM/tmp/JPxxCM_Close \
- ../JPxxCM/tmp/JPxxCM_Remote_Receive \
- ../JPxxCM/tmp/JPxxCM_Remote_Send \
- ../JPxxCM/tmp/JPxxCM_Get_Local_Inet_Adrs \
- ../JPxxCM/tmp/JPxxCM_860_Comm_Util \
- ../JPxxCM/tmp/JPxxCM_860_Process_Table
- TYPE_libJP_JCOM68K = executable
- CPU_libJP_JCOM68K = 68k
- libJP_JCOM68K.68k := CPPFLAGS += -I/usr/vw/h/68k -I/usr/vw/h \
- -I/usr/vw/h/drv -I/usr/mc860/os/include
-
-
- OBJS_libJP_JCOM860 = ../JPxxCM/tmp/JPxxCM_860_Comm_Util \
- ../JPxxCM/tmp/JPxxCM_860_Process_Table \
- ../JPxxCM/tmp/JPxxCM_860_Map_Ext_Mem \
- ../JPxxCM/tmp/JPxxCM_860 \
- ../JPxxCD/tmp/JPxxCD_860_Create_Pool \
- ../JPxxCD/tmp/JPxxCD \
- ../JPxxCD/tmp/JPxxCD_Util \
- ../JPxxCM/tmp/JPxxCM \
- ../JPxxCM/tmp/JPxxCM_Util \
- ../JPxxCM/tmp/JPxxCM_List \
- ../JPxxCM/tmp/JPxxCM_VQ
- TYPE_libJP_JCOM860 = library
- CPU_libJP_JCOM860 = 860
-
-
- OBJS_JPxxCM_Init = ../JPxxCM/tmp/JPxxCM_Init
- TYPE_JPxxCM_Init = executable
- CPU_JPxxCM_Init = sun
- JPxxCM_Init.sun := LIBRARIES_JPxxCM_Init += \
- $(MakeCWD)/libJP_JCOMLIB.sun.sa.1.1 $(MakeCWD)/libJP_JCOMLIB.sun.so.1.1
-
- OBJS_JPxxCM_Close = ../JPxxCM/tmp/JPxxCM_Close
- TYPE_JPxxCM_Close = executable
- CPU_JPxxCM_Close = sun
- JPxxCM_Close.sun := LIBRARIES_JPxxCM_Close += \
- $(MakeCWD)/libJP_JCOMLIB.sun.sa.1.1 $(MakeCWD)/libJP_JCOMLIB.sun.so.1.1
-
- OBJS_JPxxCM_Remote_Receive = ../JPxxCM/tmp/JPxxCM_Remote_Receive
- TYPE_JPxxCM_Remote_Receive = executable
- CPU_JPxxCM_Remote_Receive = sun
- JPxxCM_Remote_Receive.sun := LIBRARIES_JPxxCM_Remote_Receive += \
- $(JPRR)/JPx/JPxx/JPxxC/JPxxCT/tmp/JPxxCT.sun.a \
- $(JPRR)/JPx/JPxx/JPxxS/JPxxST/tmp/JPxxST.sun.a \
- $(MakeCWD)/libJP_JCOMLIB.sun.so.1.1 $(MakeCWD)/libJP_JCOMLIB.sun.sa.1.1
-
- OBJS_JPxxCM_Remote_Send = ../JPxxCM/tmp/JPxxCM_Remote_Send
- TYPE_JPxxCM_Remote_Send = executable
- CPU_JPxxCM_Remote_Send = sun
- JPxxCM_Remote_Send.sun := LIBRARIES_JPxxCM_Remote_Send += \
- $(JPRR)/JPx/JPxx/JPxxC/JPxxCT/tmp/JPxxCT.sun.a \
- $(JPRR)/JPx/JPxx/JPxxS/JPxxST/tmp/JPxxST.sun.a \
- $(MakeCWD)/libJP_JCOMLIB.sun.so.1.1 $(MakeCWD)/libJP_JCOMLIB.sun.sa.1.1
-
-
- OBJS_JPxxCM_860_Receive = ../JPxxCM/tmp/JPxxCM_860_Receive
- TYPE_JPxxCM_860_Receive = executable
- CPU_JPxxCM_860_Receive = 860
- JPxxCM_860_Receive.860 := LIBRARIES_JPxxCM_860_Receive += \
- $(MakeCWD)/libJP_JCOM860.860.a
-
- OBJS_JPxxCM_860_Comm_ISR = ../JPxxCM/tmp/JPxxCM_860_Comm_ISR
- TYPE_JPxxCM_860_Comm_ISR = executable
- CPU_JPxxCM_860_Comm_ISR = 860
- JPxxCM_860_Comm_ISR.860 := LIBRARIES_JPxxCM_860_Comm_ISR += \
- $(MakeCWD)/libJP_JCOM860.860.a
- --------------------------- End Sample ------------------------------------
-
- --
-
- Eric L. Schott, HRB Systems, Inc. 814/238-4311 els@icf.hrb.com
- "As we acquire more knowledge, things do not become more comprehensible
- but more mysterious." Albert Schweitzer, "Paris Notes"
-
- begin 664 make.tar.Z
- M'YV0;-*(>0&@H,"!,J7,BPH<.'$!&"F'CC1@T0 $#$F'$#!@V,$T/" !FR
- MY,21(&K,@ 'CAHP9-F*&I&$CAHV,$7/JW,FSI\^?0(,*'4JTJ-&C#P,.;!)F
- M39DD;M+004JUZ$P:'S-N[)C5Y,B,)E/:D"%CHDJ6+F74@!$CI(T9&W%6G4NW
- MKMV[>//JI3I"P8B_@ ,+'DRXL.'#B!/W'9&@L6/'81>'G4QYXA$F3X0$80*"
- M2A I1XI0 4&DB)$D3I)02?+$R93*L&$O?DP[LE_%N'/KW@W8K]_.:-+, 6$F
- M#9LR(.; *3,F3?$RP^F@09[&C9DW<MJ$H9/FC1OBV$%(1ZX$BA0I(+0[+7X\
- M^AL08NH8)_/;._+P;; CIQ-&SIDR= QWG1P@V%<@@?G)@5Q_8P1'!W-TU*'@
- M'"Y,1,5T<^S7WW\!_C9&&-]5-P8;=9"!G!AO2 >"4G+TEP9T((!(!@AEX,%<
- M'?R)T1X(**3A0AD5PB''&V- E^%PV/TFY!MGM-C&'"FXX-L(I)51G!O[3;>B
- M0"W*\>)P,KX07HTWYK@C"DLV&<:3+("P9)%S'-EF>+_Q-\<:4(KW7GSS50B"
- M$>&QZ")T;8Z77E/(O5D&&1+"& :.;VC'W8=LL)'';V&0,:.A(K@P!AQUN!"&
- M"#3B\: ;<W2'JI^ $DCFB&H2.AXFFI7J)#%@DKHQ-B"JFD:5!J:8R:UHI<
- MIY_606J-IZ;J'843)6$&"'F\44>,"L(G'QMD5'<&?"FB\9N@7CKJQHROQCKK
- M<'<$UR (=618ZQORDOMEFR9>F649XW(YJ(!IR#$''5)Z!IIHK_6PI1AAN.F?
- M=@Z?T<:,<]0A1K=RO/#@P K\1H25U>U+;+?<>1<&&R , 044Q+$1QAG#Q;NH
- MGB",$2D<QBU8:7+6RE$D<3E3J(#*4!C!1!!') Q""T0\48447U!1Q!2CM9 $
- M"2B8]X02J V10L=4?JROL2-+I>K)*;?\<LP9;OJ>S6W@?%R,.\_1\\_L02?E
- M$$8CK70+9X!=Y=B&V@LC'>\%Y,8:(-PA%1ITHYRNF7I;&-QP9+P!HQLI8@H'
- M',,BOG"77\88W88 0@L<=,@9#F:VRC'GW(LSAC'';V;4L3,<VT'NQIHPH@#D
- M&16*@+762C"1A! IO* 4'B[8@,,:HH)PO!1;*\^\\P+E$?WTHHH0Y6],^%ON
- M<+$W]]R,8N11JW"'NH$E@?U1Y\:()<Y<'=DF+G<NB&.X%)4:Q!P\@8= AIJ<
- MK-HC)>U)X3-)F)H+*O8=A2G @1"4H/08IS J72][RVO>\[Y'O89],'DAY%[[
- M2"BJ"R[O@5*(X!1<@ ,;C,2"'@,9ELI6LM^A; YY&%@9VC"Z_@219HICG..D
- MXZ<+L:Z(Y\,6OZC$.3J 8'^&ZE\9_G<_]P5D8%*:0A:FH+T94A $'5P:$[#V
- M!"@4P0E70 T2GM"$(HA0($MC Q9B$ ,%B)&,RYOA!M$( C^.L8PTM"$A!1>$
- M8HF."410&\PN2 06]BUI(%A!&EO0!,&)+60\/!O*\N8>$"@H/W9 SA(AQZD1
- ME0%$I.*/?P T-"84(0A.^$(1L$"%!Q)R8W1X@0K\(![H!--FV0+F"\+@ FM9
- M49EB:":..G8;WECSFM?T"VT>8QLJQ08V4W#C$))PFB%TYC.A&4UI3I.:U;3F
- M-=^,YT1FL\W&=!.;^,QG8CRI0^3834)X"QJ/5NE,\;3(.-X" ;)(%9Y.S6%9
- MIMJBLU"5@L:Y2UP#O)F7Y&4H67)(2M_,C!*F\ 6E-$QA8JA9#@FG)8\"2#QY
- M6$[C'D<V$9 K#RP@E0@4.*N<'N@W(I@#&NI'AA;<E%0#\Y(;B#>1H Y5044]
- M:HP^%Q 8>2=T[QG/;Z90A^]LT0X!\TX;MDBPB2C@FU3(@AM+*I"30E& @P-E
- M1U%G19558:8J*L/CRD @$6S0IT'MJD\;6D,8N$ $9_VF7=G*,$(.DH)GC>8&
- MFPD"'2B,:)=\C2:71H1P%F&<F_G"$((PA2)0,S8B):F0).;6,"2V,FE=ZVHA
- MIC">'N>UE5GL;-VZP96",E,D$R442R<SMVEK/N*A*TA-@L$83NT+NR6D25GH
- MVHZA5@@CA>[#9J0P^L0FMD70KL2X6ZHR+9!?BH5"%<0[,4)"-BS-E2%[R3M=
- M"K;0NB5)[1<J=K& :<R8[K48QEZ WI* =[\"]B\P"6G; I=DL?P=\((5!MGX
- M/C?""@:PPNK;U1:RP2 ( $9!P"$( $ .@P[E S P4(Z$&)D8Q&=AP!Q!C
- MHR XV$*,!Z"&.XP!Q.0H"!:"L&,R3 S$\"@().*PXS;080T@Y@< ! )0NQ8
- M#640@T$2@ ! 4MBQ4E[ E/7D;"]HELA$L-*5K7B$)"*!LTEL<(./I&0E
- M+7E)36S@EAG(( 9R2;.@!TWH0AOZT%59C#X7S>C>,*:>">BF/&'3-! XX0FC
- M*0(15-,9)"3A-:>QY:1'#0)ZUO.>C4XU/J<TD2*0K*9E?DI4Z$"JO%WQ.]*!
- M'\8@A!WO=:P\Y_E"K*$B%4*Z@,R((C8=%" B$IG(>B@ MA3N.)!;N8!W<J!#
- M"_K8[/Q!6]K"3O:LO];M9V--VM1^@;6QK6T9*,!<Z+(1K"@WG![]*$BY,I)5
- MY:"D(:GI2>.3S"=W6#B$5AM1U^Z/M@&-:+I<I<T<>3-8XCSQDL"D!F6Y,UK(
- MLI:+3"0F' ETPT=.\I*;_.15^0T4%%Z@';YA6H:"6WZ^<RN@S6U(. K9[:C0
- M!"A\(=3A=4(5FJ #H?: .6AX#PE(@-_<#H&$A!S#&'H[$>2QD&]'PZ3"6@"B
- M5"WM"B=C@P*L/EG,9OUO1"C/%Y#W62I\X81?^*/4FE!1IBU6>DO@K%U[T(0A
- M2,\C(V':%*0PA)\GP98]P!H0=% "%KZA!R6H>VF^X.<>[-0-=6@#J:SV@GAE
- MS YW>(&X8D-:J"O,=E2'#21-OR(RI#XDJY]L9@G9 GZ37@JL[\_K)_(92YZ=
- MD#ZK VY#\D G:(_U+7*#4J1W6M@,X>EG/+W4$VMU^V+=;[3'0L-:8(<QC!U[
- M2IA@A\V._:VGW>=L'X+;X2[W(M!=[^J->Q6<P-G!%Q[HB4?!XAMOW\='GK/A
- M57F7EWF;EP2=-P<9XS)+]0)3, 0QX (PL$RHD@9?4&[(P7F>YSP@<@8,Z( 0
- M^ (6.'QA47K19SHBR%R55()A,'TH*'YNX *S9T&WYX*$U!_#UWOV%8.F!"LG
- M6'S'5X+)IQ0G&!)D!'U=)5W>181,8(0OJ(,M0 9PL#1D, 9+8SL9DFUNTB@M
- M\""F,H03048I>(2G9WM*&(9-^'L*$WQ-1QF%M6GHH3 'F#%M, :%Y843\7R)
- M=$,@@ 9T:$/4!WYYZ +7IW5+@P1=EP9+8P:ILE1STP)S0$!)2#1?4%AQ)TY)
- ML!FT1P1C4('WXVQET ,6R%F5^!GFQ#3R1W^F^ 6>=@1(4'A?L#17@P)MF 33
- M]@)C (*=Z&U6@S6S6(OT@HOX\VR[*(LVY(;-DR%I (R>"(N\6(RT>(PGHXRZ
- M:( 9&()65UB"N#).>'YK!WYM]W99 WYQ-T9S)WF+55CU1WB&AWB*QWB!Z'^2
- M%X R8'ELX!W?LD4$"(MQJ&Y]&(&W&(*D-T/H>'IS4(>QL7H#N8?].'P(:4,P
- MB(:%-(,)V1\&61*]AXTZZ#,]B$O'EY!!*!#4Y )34 5&<!I8,#4ZH B29(F
- MB9(@X'@OV7\OB8U*AP(C69))<))3\#4J22&3]08IF0!84WH;5'=*!P36PP,=
- M,T$NV$Q!.91FU%5&:3U(20)*V9/O^)0H4'J%-94D4)57Z2F.IY5X6)301GY)
- M4U$G='7:>'9J&8Y;<W69]9:#N)-+0X4M<)1)N91CT)1 J0!"B0)X2$%TV99^
- M\Y;5-WZ&F9;0EI@O6)=T.9=WN31Z:95\F96 B35XV)5GN9AVN9;8B):?"9?A
- M%YJ2J9F2V0)X69E*F0!(N8^@]P(41 ,DI$(O< 92IYJ?TYD^1XF>!5I,4)A%
- MXY:-"8BAZ9EJR0,@X ,O8")V\ *85RD= T^D5AFFMDVHIFJ",6;KIG M( ,H
- M9Q0/!Q)NUA4E\163$1,N819XEA8=YQ8V0 ,PAA'A69_V>9_X:7*2$6LVMQ][
- MLBTSXCHQ<B[E-6_G=47:\1]"TQ<-U@,*<%,]T$)"151&93YY$*%VXP(/V$<C
- M,*%05:%BT"5YH)IO8"(8^@8:JJ%^X:&+ J(B^H3;$088RDP;NI1+4 1%X'-4
- M$P12DY(*$'8Z$)@&DTX[V3$F$A]G$*0H0 )#BC \B35-2@4[&:1+)YCQMW3[
- MEWA?Z0(E4*55>F!8F@)BVC%0BDX(PWB0UY09NJ$595DI,WN;U0(XXWT*4*8'
- M(Z5HRG\=MJ8:F@(Z8#U80P0\&@1OUXYZ^H)\&@.0YZ<ED*;]5U%< )CV-!%5
- MJE]5NG]JBJ(;NJAYZI=?$YA@Z()O&:HY2)R&FJDIJJB'.D$TVJ?0)JB> 8Z8
- M:E^)RJF-NJIO\*E8XX/+(ZK0-JM[JJD:ZJA[VJHQH*LVN82^BC5%V)2I69DH
- M8*GZYXZT*JRJRJC$^H*Y2J8H$*53T*F3%09^"JC1BETD=:GN&*ZVFJ8_B:R]
- M9Y9#B7NR9ZI56:[9=:KJ&GG@"C[;6J?=:J9X>JM-*:Y_6JGF6JC3NJHRJJ\"
- M^ZB9N96X1YC0AH,==IKU*JW ^H(+BZVXBJR\*@3+"@3<ZJV=BHT$2ZZ6>JHF
- MNZZ-1Y/NBGN<&:^!:+'0AK'NN+(,FZ8N*SA88V%V"3]O( 9V<QP/HBU6=!QF
- M8$7[,R#PL8)K< ?],2-PPSO<(08(10>7XJ\D*[!%6;!L=+#HVG@;Q+*.]Y8^
- M:[8OE$&"-#UJV;-IZUSGBJ_3LZC(&GML"VUV2SW/2I4U"[8)2T)DVZYX^[8R
- MA+9" $,R1$*&B[C/);=K0+?0]D>(5)0C"[#?VK!2Z;7V&K=_2T%D^ZB#>[AJ
- MN[AJNZQN*[IPB[ 92[</NWH2V[-F^)"'29E\^[7WVKE=];D=EJNAR[BCZ;/+
- MB@(^*ZO4FKN1-ZJ'%$BB6KEW>KDZ:T/C:K#WJK(V1+8NV[NCB[UPFX=M*[R$
- MV[C4"P.L&Y@-"0-F6TD829QY6;N;2[PM6[TY^[Z&Q;NGZ[NDN[TQZ[VH*U_A
- M"[G,FKQ"()#02TW5,3! *J26^ZE(B73O005T!0)<( (%S!^5$L$@4$4U(R$*
- MX@9T,"SY$C)DP 4[ ,&2VF"O8S\9+ <;;$6[-@:((P>^I@"N!")4^J_-BZ9#
- M8$NX%'F F1V)&"/29$715%#(A!S#! (J4 (O:6T&7+0N@"IE\ 7]4QW7<98Z
- MG$N[U$M!\*0V3*0X?,7Z2JF:>:7MF,.WY 2WBJUFC$M<Z@+HNL9H/+X^W +3
- M,L;K5<9@O*YX?,9IS*58 Z5J%5Y[O,-T.Z9::[E??,8LI*\]3$1T#&V#[ 2+
- MW /Z%;]ER[Q>W*APW)2,G !S7,=+.JV;;%^-6LD<ZZF0+,I7S,D] *N$:LD.
- M>\@WK,FKC(V=_,FIO'B;;,N4?+"6O+._<01;Q%?;L2!;XG+38C//9C-=13 /
- M2B0UO+4] '13P,.NV0(U4X]4" 8?8D4:$S<O *4]MXY!-W0I0,<"Q0<&I5#L
- M? )<P!8R< (@H,YV@X5/N#1U : "038C,O?# ?AW*WC#'1?('1TA\[M(3C"
- M/#_%O"4#4R#3@G/<@27#L3]=)16V>#/VP<%2(M$A4Z$#4[!=?*:-2LW6S,\.
- MK6T>3=$@P,W; 0+_'- \YW,$;=#G3$KSO,XZ!0+N#,_R3,_8847WW +YO,_]
- M[,C3$M/B3-.'5\X'34H*/<PM4K0-\R!Q@QU&U)]X!3D-\T56]'(\ U#(@=/%
- M=6L@$&MY(R54XD2F!!VZ8T6VIAWN,U2I! *, CK!TM"_,U9"8Z>9/,U-7<U^
- M:M0TTB UV8XFW<O99<EC\):('=B-ZLI?P-@5Y0,^ --T ,Y+3<X%;<X(#1W4
- M]$\^4P8M$*)O< =7*-+2;-(*C,W=C-F:+=!,;4N=_=3IK-/M_,XQ$,\Y7<]"
- M/2-$W=LSTP+(<0)S0 %>P 4HX (JP 4IL'04X!P@L 4_S 5MT04C/![?L8)X
- M^1KKJ]2RS=DV_=D4,AR.F%)C/)RSNY9EAYR1*P2B67?:MS3=!\$Q,,+%00$_
- M#=-6ZP:RB5'77#,O#=XS+=Z>34K;EM/G9AZU.&;<?=Z3^=V9#=#0\QX0GMZG
- M29ILJ=Z,R:SPC9R$[<,_3. #W=2U?=,"1>*S[=0HWAX)KN(&;ML,=#MP$ @[
- M)@8/8A /ZF7P, E%%@9JH.-XX&68\ 8[1@<Q$ 8Z;F4 @ FQL&-W<&0%H0"0
- M,&5P0 DW7AT$D9]5$1(5<1%:$7'F27&P@1)GD6<7UQ9K5A/@29]<_N9P'N=R
- M+A3]K6X(]V-S[A/C&>9<(6<@@)XFL1%DD7%G[I[R&1(U\.4BE^>,WNB.#N?"
- M=%8J !SP S^&(FTOX, "(QPO\!GAU-:@LX)#1%8'I%#61BJ4/AQIXB22GAQ)
- MISOL@QS",C,B<"ND(B/P@<*&0K60(P96HA_3'8==\ )U;FVM[D3?T2Y;%"/P
- M<H57%"=U<#A:(G.X7NN(XE.&<AV5<MH)I6OVD9)('!(/&"TP-QW9 C\-(P)T
- MC%1+]"ZB8R@U1^WG4BC3\1URT%6M'A;[6.R(LM5D,P?MCB%N8H4S\^Z7<RA.
- M 5*3/A$RX"=%P ;(6.Y\11U@TM9GH#O]<2#)D0=M@"(!085)=,' @RY[12"2
- M'FE!%2D $AQ+Y0*:I_$B,&RS1BI8-.T:3.HM_,(X92QN</*F=(3[KN4UMTID
- MHRAQDE!5-#.^7H]WH/ A,0,.#_'(<>_?$?3^/?0T92@ +Q4$I.H$;URY-AS&
- MCL2MWBH"+B\H( ,5)2MOD$KT#C]8OS,ULB9RI25V,U:YUO)$%!XR+Q6M;FLU
- M/]9OL.V.LU3Q,S_@OO :X0*1=B%PW^]"8B5\54HRP^RV=O<K[RTN7R"I1#]:
- MW??.'.X,S_@@("WO S!S@^X;W_'RS'O 9O+_;]+@)C0 ;&'4M9-1T^G_.]
- MEAS+H3ZT Q_N4W"+ R\<;!S,KB 7[S($ OBW@\21IB!F,/'W,S,H0+3#(2RG
- MKU#*WP*W4AU2(3Y./Q%0W_@'7W/:_?.H M,9R.].X>^&\@9PT$//KP(H_\@D
- M@.ECAM8Y P+@!OH]H/M]OYDWH+R+XBL)AN*4A 'P9_CD'_T;>'&BX.6^QY?P
- M)-VQ.WCH;F>8B%1Q!K $Q7@/,D-@0#2R(6T0WE@3*!_B._ );K'5G$FKHVL)
- M)=WQO^-PZPA4"C2!Q&%($)&&T2W,P/1;878M8/ :&%8K0(2Q:'6P0H7A/"'H
- MPGJ-GY@"94!DY#\&]P)<@!5\ >4!#^"!NT('%(3@<Q5X8$V #KTAZ5Z 7PA%
- M/&!@S!B!X +0@ \X@[GHV:3!+JCYW" <#$;((0T&$8T14_2&'1P!:!"(S '9
- MQ!\(QA\,A'L08[3!-P@(XV >%(2=)RJHP45X!LW N; 29RT(W"B_\,%V2!/0
- MA$5 H5@].^<4$,L(V"(]D!/V$__'X!2*M#&%G9 \,+A/>*-$X?Y#%'D#%JY"
- M6E@$4 .GB7GB)ORIPK'Q_T"A+QP-(N#_!4,Z8'F&(2CAA;J$ER@4EZ<+QP8Z
- ML0)3( EH@5 8 V" #* !SG"'$+3?] 5L"?V1 1X!!U 3[; _4,"&& ,L8$/8
- M 1;P5> N>%@V (W[0 9]E20F J0ARQ !:B >K@/]T!BJ0Y6Q&>P@#2P [B)
- M,$D.A3!>M(GJ8"+P !(S@Q,!(1(',^ RSD /@ $-$3(\Q)$@W3B'0EEW&J\M
- M2#<)9@9(A0K B+?&B@Q J? 10V*D&8E79%J81-"G$7+B65N&%_$@XL-N00:^
- M0(/ 3)$XZE9C,T #&L&L&XB4*Q:\V_^1 39R*;H)>7,6)T" RG@J _3"
- M*#Z5?3@1DDH=<&$0\:7%!Q](%M/BI*@9_5 -" DY, /+P!88A^*D'+X1[)98
- MFICKZXH$0BZJ,-!W%TT<.32'?+$L%L*_V ]5 ): 6O[!#FR!:Y@-MV%BA(L9
- MC_?!L,)(VP[C7FR+@#$]4*"\L=?L(E[\+'K1"5Q&-X3$H%!;-(MH,>>UQH"Q
- M#Q/+0ZQ';X!Q,*U'MO7HP+OP#F1#^QD\"@@D@N)$8%H]H@?<MRO" ][A"$L#
- M*V %?(V28!!+@G1# 4GE?L0-%* "W&%D7 %I( 7DE'7' M0>&E$8YDL$54>3
- MX ,[HG)LBR4A1+V2-0 ?0T(?P"WW\2!."Q00 MKCRT@!W 2W/$0GDBV@UG P
- MB>JN)2:'@-=R!-S.&(ZR+^%9CHDW(,H "SA!N)%Q- P@POH^WNO3>+:&Z$'#
- M+%8JFH6J,&M:93(D02"H&;V'<0P)ZU$Q^@PXX#Y00!L8C3FC-+( 7G@,4T!#
- MA&F33FP\"C:@M+[#AY 7.Q$41L/18&NDHG7<CQQB#-P!,H "6B0+.(V%QQQ6
- ME!Z@,(0.$PA.ZE$$+0<5%AY0@ B U-2?-3'B5 CB@T*.%9K$@3<QR?)(ZID
- M%%(8\@\5!HPJR01UGI@ZCY:F"GS)Z6@28F1(&)-#@D"8R3QY+@*&FA1!;=**
- MO$D?*8+F9$@H U(O3(:%=M'_4 "?)!!IZ)5HBCT)A?YD".B2@A),)@"#F "N
- M(\9H 3Z@*%:']W J_]RGF@BL,B/NQT\)*XOB7CL.W\$'4)@N""Q1P(CD)7_2
- M!)@ P!06L&,7' /;T03PRECY!4KC%GB5U/)7+CMLEE2*Y;&D BF@"XA'2642
- MON661(]C*M+ 2&89$AXBH.@JM2,3WJ@EV9^>8!BH:U+A0 */ E@JB@UNC$)2
- M45W*R$^1!VPDC@26P(,%8$M?"3PHI<"$#PJB*>S#AWD?U67%M)0E8430BT5!
- M*NUAG,R/)>$A!H%G<O# (D)L$W< .= U?_)2;N07((W[4G3HE?& 0+1$:1R!
- MKF4RV!H]:?A$I)(DD>'!X"&'?#$DX5J.W)?&TABVDR@1D<*"$SAM- )5-(HB
- M:#3G1IL<&&"BXBD_C-?\<H:?,'W%1O5Q2(\7+#!D=8!]/ \$G('W@.LR9*E+
- M@&5@^64\6R/]J%^18!_#3TLDD0KA)$,"IYP;-A)1@#\KPB5MI:8T"3Y#NC0Q
- M@_DRC^9880$F8"V: 4H9%JYCXJR5YJN0)("'. 2L!0O$8!"O$+:U'[A%[F:]
- M;#5XP%^^ ?G'+S,'L[L5[+(%XHAFEU PG:9+%8/0T[&,N@@M J9\E)B04NKY
- M1)OT!3Z-%"@"1P %2,X)0@>^0'XP$>F25;K+_J?ZMB;STVJX+F7NH7MY+&H?
- M[@N.V$%!H,505R2DA,"$"MVBFZD2E<D]7Z?@G#78DT!%RA6Q.J.0Z'"=#</:
- M!,4$,!,)IT:8F+^3/@(FC'DIA>=U)"F?A@DX@26@/.N #V2>SK-$E8'HV<.H
- M4*C,%$F$<<+,QVDEL61J=)B6DPKQ '3)+@/HQ,24&8)=YDJ(.",+ILO<H!:R
- M1?I(( D"@@"T&RL?<J@<R/?0(O?G1&B16\!G=(&D>!,GG1/0'2CC062'ZM#0
- MM!X=;'D^M-0E1Y^Q;9ZCL 2)5Z0%M 24.G@"RQ(B\-%?)+M\FT B9UC)W#
- M$XBF@2X *$_ "S@!M[)0HM&!22,UJ..TD-)2C:Z &" N'698T*-\E)" Q#FZ
- M@Z*.4R25?;+7^,@B^A.=@K)Y=J_O3]4^8Y$MS*A)"*'+B80V!E:9 (BB6'R*
- M"N.^V9.'B#[S6M$BBC5C1@3,!% QPP(*Y1>;5%(A2NQ@)CLGK+M@*2*5T@R>
- MV"(?96-0$!%"#KB!23DQ62DA-:%*$004@=19).<'_62=EK0DM%+[R"XO9O!,
- MH:L2,$W/U+=#K<C8;'T@[VQJ/.LY-[TFZE2=K!/7Q4[\B0,)RNR,%[63"MY.
- M3J<[&RG(8"#[TX0.4!%4*?%C\WF(4-"*U($H5',V1.8A=5XM*":6QR@/MX #
- ME /1D8TJ#&M7"D,B#34" >.A&=2Q@@_AQZI;$R(/A_;-Z]@?.>++ '*T@0.
- M3@#)2$T?@D2)V5/PP4L:4?)BA*2"#"&!)X:'S=<D82*NQ"W7,4I.R4\Y!'&*
- M!]62(*!6>DDP&18,Y400$@AQ/P+#][<_2@"[H"E6E0NX 1%P(1_F#TVD,(P%
- MO- [2CE- @%EJ)'1H5;%B$I($J0(L*@/$;C\L-[X+OHF'2V8@I$NXL*<P0(X
- MQ%>)-@Q.3-7'I-+-4$!>K8LL0-KPPK(Z$=#J&9",#Y6M*HS#NE>/PX^,J\5B
- M"IX'9&-FYH9=9:$$T[#.1="76!F<L%&:JH&Q@M;M(%H'XS(4JP=SBS3,^NA8
- M(>M:70$2%0105D<Z:R[KI).KRI"WTL2>ZD^/8YE, ^^1.3K'*Q(=62H-M1DT
- MLJVQPZA@^#8J61D.G[6VJM4N&%%[0'>4A^"QK&K7R(I;>\!2K8T3(7'6%GEC
- M!W@$+V0!M761,E(BD/N00\V1BO<QTH4[)D DT(8=<!'G90XDOIIQ,W(&B6H#
- MVN%<_"G:AY>^Q?JJ.=9F#""6<%<$%&P9?#><,;QX1M78%EFC"G"-?;$+GD46
- MUB=GHQQ KS24C(8'WL@@@6/,"3LT(^R90+X)$Y$C<EV.:: Y^H<Q\!R;*VXQ
- ME-<Q.T)+., =O>-C#:_CL266QW-I.)NJ"/*/'O&^B2!]&A8(*,@<GB6U([)4
- M>R(@)QV!5"6V Y>>1 5)5R$'<!2.$S!"%L?5(?WTPX6<#&YS0W(\LAE.BU]X
- M")$TY5N6R#+PZ/JLG_VS@#;0"MI!2V@+K:$]M'FNSB':AN#E+ )Y$G-^#M!1
- M!C/7GO1,#5!S(( F[+9%MV@[K:==M.X/2."Y3KOG- *DK3A_SL^9VD''GC:.
- M6CAT9D'1N;E/2VMKK:#5KUX6 T8'+6$[^P/N['12X-,I"/(YZO ATZ*H0 +5
- M.3Y5YV]87;@3*IXSUCG(XS CD&T-E+:!;^"I"%]7(8.=YQEVH=;I(3N+LNP:
- M1@A\=A5#VLFZ2)%@J^VMP'9:0MLQO6Z'.;Y=OEM\Y(Z24CQFYU87)-=C)?45
- M!\H[,D#OEAW5N[<AL_T)O7Y']+1>P(,1O","@KWSAW#N;<-K-5)/NM',?=LP
- MR"F!" _?U$.&O-)(\FAF1+)_"@7SY3WB\?(:"NBC>;C&YBG!H0A6=YYV\WE4
- MC_TA(&*W<-]?P]421F\1?8ND%^N8WO@# 5 /X\J+G#L*L9Z*<+C_%N)^O1A+
- M<2L@V0MW9N]((H>TM_90A-O;?G%/<H3!&TEP[)[*6[F;C^\MP[]'/6.NX"-\
- M"27!(KY[^X#,'W%T&))/!(J.RM<P+M_997DLE_/Q%<O7_T#?T6UXD<;TR5CG
- MQ^Q"KNM+(K$/!](^V_=0J"YZ0;D]-'W,#J67-UN'.&UFR*_CQDVNJ=6$ \[-
- MNZ73^F&_:;O]1( ?)_A;WR(/J1+^I8M#DQ_5&\X-%V&F_6TA -4%?7O_M4Q
- M_2<0..L]E87!!@"^7J<P.*\MP@T)<'.Z)I3?^RP@8-N@NL11X5W 2@<F-"!T
- M2 ,=<&;8C68W^4;@I6N%-0>GW< 5."/<Z;()=S"PNBJ4NGAM!1S-Z7=F0 <R
- MNQY(.FFN^-1Y1=#M(L&;YW^+ZA.,@F1#LTJ!*G@%L^ 6-"@(F&G-O;C!0"YL
- M(\2#(& .KL%H<@@=809.*G60$2+"08BUE@.%Z, 86 \.PB9&"2_P,E+!S2E@
- MM. 1' F% QT@ S/8$N8+>6E:1D LY,&B4.%>/41A"O6D&0B'R!<])$,&5PU!
- MB6(%A;:P^-)?),R#C^'\789->(<4PQMEA9=P\EV&S= '[\*?*0T[A>:API11
- M&W)#;P@.Q?#8.*IO! 2@0QJ@#CO&=.41[S >1D9ZZ ;L@#UD-OC0.?)#K_@/
- M][! )(@*8#UJ1(7($!WBI&MB$O'65,07J1&A+!$=I9..).K$]]!OPP-35"C.
- MP27"1(W8/R\Q#=7$8I8G?F*>.%)I;E$\B@'#%#_$3PR+"43FV"&MF"IVP:T8
- M$[/B'.#%H?$KAD7 ^!I%+%IL8MJ"+8;8[< 8,]YN/;X9MA*A1L18C)DQ%0J-
- MSUC91.,->QG]XC5NC-HU#5M&T-@/@2@<YK"))32.580Y5K9Q7J3&B<7#@E@9
- M.6*#X/\UL2CV-JY.W;ABIT69;9 O]D&FV1G[(FUL<LVQRQ4Z2L<?"U3WHY#=
- MCM_U.X;'),M5S6/A3(].-BQ88BD;%JBL6?6G^I%'9-G_&"!#9JZ=>(TCS+Y4
- M,MMBC22,A9 $F<W^.@7Q9L-"G%U]=/9#WMG^YS/G)8ED%A+E1 :^$[0BE^#_
- M=8(O\J>6!,(:7>TH.[:0/')I^M;!433-FM9-Q6282?:_SQI4 824I)(=U#"^
- MXS?"9)<JH3RC86&6*LHSF295*YMDICP"3O93.NDIH1 A8908@Z@V01CV)PNG
- M63Z<)4$M\P@1@)<=I5ONEY)2+E=9W/)* ;/?# Z \U,"'U&9ETME15&JJ?)3
- ML4I7&3!Z)2>BE9KTIZK+ZS@M&68; ):9E(5ZRZR<+)>E5^41A#5:EN9J"3RN
- M96?.EFL"-7-+8KE%DJ9/1I;BLJMZ57,)*,U7'!7-)OE/6 L"U3#T;%K[0NTS
- M7X;4!2$_X?*_C*)WU2G+5@YZFTWS!)V8\3%B"E"*64WW:5C0F&VC8Q[F*SL1
- M1";)]*AOX&0V#O99US*$3(RM-U-FUE1#<3/!6L[4R/V/9WZ+GAQ>@"8"";A$
- M\ZWUIYOIFWOATJP0)^AIWH&H63&2R5"IFLCA:@8(TY'\1N_U?,ZE;UJ$S8KG
- E>+T/G#V;!?<[K,TQNH_?II;PN%JM;FXPT]D^R,;>3,H6I5-J!\ZE
-
- end
-