Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 (Tek) 9/28/84 based on 9/17/84; site hercules.UUCP Path: utzoo!linus!decvax!bellcore!petrus!sabre!zeta!epsilon!gamma!ulysses!mhuxr!mhuxt!houxm!vax135!cornell!uw-beaver!tektronix!teklds!hercules!keithr From: keithr@hercules.UUCP Newsgroups: net.sources.mac Subject: An Object Oriented Preprocessor for Aztec C (1/2) Message-ID: <593@hercules.UUCP> Date: Tue, 8-Oct-85 02:50:28 EDT Article-I.D.: hercules.593 Posted: Tue Oct 8 02:50:28 1985 Date-Received: Fri, 11-Oct-85 06:56:41 EDT Organization: Tektronix, Inc. Lines: 670 This is the documentation and a demo program for an object oriented preprocessor for C call "obi". This is V1.0 for Obi so it is a little rough. I think it has the potential of being a very useful program. I hope you agree. Good Luck Keith Rule tektronix!teklds!keithr #!/bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #!/bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create the files: # obi.doc.hqx # demo.obi # makefile # This archive created: Mon Oct 7 23:17:32 1985 # By: Keith Rule tektronix!teklds!keithr (Tektronix, Inc.) export PATH; PATH=/bin:$PATH if test -f 'obi.doc.hqx' then echo shar: over-writing existing file "'obi.doc.hqx'" fi cat << \SHAR_EOF > 'obi.doc.hqx' (This file must be converted with BinHex 4.0) :"fpLD5jNEf-!9dp54%e"3d%!N!45,J!!![KkfJ!'!6`!"!!%!*!$rj!$!*!$!3! !8Bi!S!#J!!"4MJ#J!+!!!%4q!$!!!J#3!dJ!8!#3"!,`!S$rh2rX![3#P!%#"5J $r!!"!*!$5!"3!*!%![!#J!"3!#!#J!b!!"J!!C!$!*!$!Ad!!!'3!`!#iQ)!!Z, Urri!N#N$!*!$!`#3"3%!!$KU!%!!!#`S!!i!%`'prr)!l2rb!EVrN!3!rj!&!!- !N!-$!*!&!3!!1,J!3!!!1+S!$[rb!"lrmJ$Xrr)"Z[q3"!$rN!8"-`#S!6-!U!# 3!`%!!$h1%m!!!$Mi"0ErmJ!Hrr)!l2rb!EVrN!8!$!!!!`NY0#KK0J!+!H!!!3# 3!`S"D!D!@dGKU(!Qd%1q3'm#2J"`%p"$[N!!N!-'!!!-!!!$!!S"i!!"!*!$#J& S"S"f!M)%0E)3$"!+9%'m3@Ed8bS!"3#3!`B!!!`!!!-!#J(J!3%!N!-+!@J"i!( JE3$mhNK(H!!B+J!&$!3!#Q`!!#Idrd,dN!$bhbd236$drf,fSF)26dF6)C!!p33 H4F')92$3!!`!!!`"!!-!"!`!!!-!)p9!p"pk)F$d-&-#X3p"lU%26@ac*B[`d!! '!!!-!!!$!!%0"J!'!!!-!!!$!!B!!!`!!!-!!3d"!!B!!!`!!!-!!3d"!!B!!!` !!!-!!3d#!!B!!!`!!!-!!`!"$3B!"J!!$!!!!`!+!H!$!3#3!`S"D!(J!H"Y!2c H5%Gi!"JU!!8-"!!+E!!!$I56*&RhA#G6m0!!"J!!$!8!!`!"$3B!"J!!$!8!!`$ dp2pLF(J'-&pLpU(#"8F6)C!!j"j&`BK8$9323IHL(!p$mZ$dNJDUAhH!hh8m*e1 !mSDS8-DU'3pY%V@B"8$fdBK[CaMbN!!P$f)3EZTaN!!P#@*J3F9*J-DU"IB[DK` SmZ!26rBR"i$fhhN')KpYiJBJa"BR2fF'$@JJBj!!peJGpeS&pLpU(#"8F6)C#Q2 fIh9[Ca$93#X3p0E(-PLr,Jm0!$!!!!`"!!-!!``!!!-!93`"!!-!A!`!!!-!B!` "!!-!D!`!!!-!M3`"!!-!P!`!!!-!!3d"!!B!!!`!!!-"5r9,%-pe4"-J3D&S%2+ 29[-I,[-2+3YS#"pf&'S+IfebBR8i$hHhb`pYEhN%'IGF%(+!peJGpeSaL2,Jp8X B%+IfebBR8i"N%2-I+3+f)'UJAf,fSF)'13p$$&N3pYpeJJpL%(-&-3ek%')#4ML Q*e-#IfdI,!mbmT!!+a33C"$hB8pj$4ph$N'4ec'3!-TSJ#YL$2G836+[H3(hKi) 2-r+3!2E4+eN$EfdB$fhh@#$f)3pf&2H3!)Y8)2BKa[GB%&d#X3&rCl)-YNE#&!T rEA)!e8$dRd6bH!F`p"pk)F$d2bl`d!!5!!!-!!!$!0)-!3!$!0J-!!!$!!%0!!! '!!!-!!!$!,ldm`+a$UpeJ)H4mX$c(bN()'UPphJ09!pY@IGDC!j&pR4[EIEA2fF 2-[+3!()(J2GK6hN0D#$93'-&pLpU(#"8F6)C#Q2fIh9[Ca#(2"!V&""c!e"c)8j "*LG6#9-3BJ6h8`*rE4$c2bN()(J2GK6hN!!@MhN#8%(h@"$&NI,[$3!5!!!-!!! $!(N-!3!$!(X-!!!$!!%0!3!'!!!-!!!$!4cdN!#ei3+hJ(J'$h@"hh@Jj&pR4[E 3e8!V@""G$hPIG3+f),EhB3pL%6$hGR*cpR$Q*a-Upj!!e8"M"IB[DK`J9(%b'3N IGKTH(fd6))pjJKpYmZ$d)FEh@""G!V%+IfebBR8i"c!VH!3D&S%253Efd%'KD(2 fF()(-P!V%1pepLTm#9pYCcmZ$d'!hh8[G8%2GK5(8i$f)FAfd3pY9""&pLpeJJ+ apj!!pYEhN!$f)33D&S'3!'J24N%I9f3I,Jm0!!B!!!`!!!-!!3d"!!B!!!`!!!- !!3d'!!B!!!`!!!-0!!!'!!!-"3!$!!%0!3!'!!!-!!!$!$S!N"$e""TrEA0Npj! !p%A2GIE4-Q*e2`d!"J!!$!!!!`!"$3B!"J!!$!!!!`!-p8&2EA0DAfIhR`d!!!B !!!`&!!-!'#(fXN8hpimK)IDkQ2)IDaFV6`d!!!B!!!`!!!-!!3d"!!B!!!`!!!- !"J!!$!!!!`!&4@jUEhPj!!B!!!`!!!-!!3d'!!B!!!`!!!-!!3d'!!B!!!`&!!- !$r6c%26'JJp8YcpRm0!!!!B!!!`&!!--!!!$!!%0!3!'!!!-!!!$!+Id%23kD)" i$&UK`R8`A3p2pLpU(#J'13p0%V@B"8$ddBK[CaJ2GlI,$fe[H3pL%'lUFC!!*3+ apYmZ$d%`p2pLpU(#"i"X,h9UVhN'""a8N!"8##6hA#pe33Bj"Jp0%V@3!(J%&UV hN!"Jhh8m*e2bi2$3!!!f!!!-!!!$!!)-!3!$!!J-!!!$!"N-!3!$!#%-!!!$!#8 -!3!$!#`-!!!$!$!-!3!$!$J-!!!$!!%0!3!'!!!-!!!$!%Md9XX23kD)"i$feT% 2GH"G![Ge$fYcQ!A3p2pLpU(#Mbi29,'""N%23kD)"IB[DK`S$`d!!!`!!!`!!!- !13`"!!-"9[6P+h2fF25I*rGK#9-3F`p2pLF(J$(hF&3&4rCh0UmZ$dRbIhB3peJ C!KbcIh(h8B!VBJ8V&!Af,fSF)&4a-KN13H4F')9)$h@"mZ$dKIGapf&2,!p*#fp f%)i6)'$f*b"G!RpY%2GdFR2fF!+hJ14ICdEfd'13!2GepeU3!+IfX3*3pR%JKIE 4+h2fF04IE3Pi*(pLpe*cpR"b#&$U&S%)%j!!pY%2H9pe3&jcG6J2+2Ce@39!pLD I+I,!BrH3!23r623I8r8`NGFh*e1!pjAh8#YcpV"N%2GB(IGD"MN)pepRpR'#'3I fhNAhBIE4-SmZ$`d!"J!!$!!!!`!"$3B!"J!!$!!!!`!"$3!!"J!!$!!!!`!"$@m !"J!!$!8!!`!,p$8mVh@(8r$3!!!'!!!-"3!$$!%!!`%F$!!!!`!"$3%!"J!!$!! !!`$lp&E,$fYcN!"G"IB[DK`JYS"bJ&ph-2Dh13A3pfC(Ef+KmZ$e5a$d1QL!Af, fSF),D!p$TSJ29Q4fpLSB$hHhb`C"!VAhAfHb"G"S$hCNG[BU'!pRTIBQS#8'UJp *1#Bm%&pLpU(#J(-#X3p$TSMbi29,%256JQ2""IB[DK`JYS$dNi*M`3p@C(Ef+KJ 2GlI,"N%2G6Ih(h83*3&XX256JQ2"$drf,fSF,bl`d!!!(J!!$!!!!`"($!%!!`" A$!!!!`#q$!%!!`$3$!!!!`!"$3%!"J!!$!!!!`$rp&E,$fYcN!"G"IB[DK`JDS8 ,D!FS"IGc$fYcN!"G$dd5YC!!9!p0')EfFI,Jp8X3p$TSJ&pLpU(##fJ#X3p$TSJ 264+eQ!phYmX'33hh8m*e1!phYmX-B`8kpj!!pL%'lUFC!P$d1QL!p2pLpU(#Mbi 29,%256JQ2"$drf,fSF),D!p*1#Bm%264+eQ!phYmX2E@pj!!8kpj$f)3EZTaN!! P$dNi*M`3p2pLpU(#Mbl`d!!H!!!-!!!$!&N-!3!$!'F-!!!$!,m-!3!$!-m-!!! $!!%0!3!'!!!-!!!$!C!!p$TSJB"UK3Y[GK"JMhAK6+D)$hHhb`H!+a$+D)!V%-p e4"-Upj!!NGFaN!$+D)"cX8FS$8Afhbi23DS256JQ2""MN!$d1QL!pY%V@B"MN!$ hCNG[BU'!+f)'33EhCRTrBU%#8#X3p6pei8bQL!C""UK3EhCRTrBU%#8#X3p$TSM bi29,H!pY&MJ#YL"Jp$TSJ2924I9r5I6JphYB%)pei8bQL!F`pAp*p1p%p2pA$&- QFi"US#X3pfC(pLSB"G$eIdRdld6dreF'13pV0IGi"[BPpe)'UJA3FS$dd5YCMbi 29,H!H!YIG`aC%(J%(h@"N!"c!V%&pLpU(#"8F6)C!6pfG&2fd6,bl`d!!$B!!!` !!!-!&!`"!!-!(J`!!!-!k!`"!!-!lJ`!!!-"!J`"!!-"#3`!!!-"*J`"!!-",!` !!!-!!3d"!!B!!!`!!!-!%6%J+$8`-bNJ0M3c,68e-c!0!!!'!!!-!!!$!&2kA`R dd5YC!fpY%2EIGB)2BK$@G+pj#,9#$f)FEh@""G$d(hSK`23r*i!ApRXJm*bf4X) 8$dRd3+IfebmZm0!!!!B!!!`!!!-!+rTI#I4848$fdBK[CaJ+&[GK"U8J*3pL%*' (3CmZm0!!!!B!!!`!!!-!!3d!!!B!!!`!!!-!!3f)!!B!!!`!!!-!!3d"!!B!!!` !!!-!!3d"!!B!!!`&!!-!#dYZEhGZ)%*eCh-0!!!'!!!-"3!$!!%0!3!'!!!-!!! $!+6kA`Rd4IGIBU%2FIG9)C!!JNFrCi$fhh@#!e)-8bCc"M!BaZ'3!*AhAf+K$h( h95(bi29,H!m*a[GB%26rBR!P$f)FAfd3a6hh@"Rbi23DK3KcpRS3pape8KJ2EIG B)$8Ja6*R-'-2#4M'iC!!KcpRS3pape8KmZm0!!B!!!`!!!-!!3d!!!B!!!`!!!- !!3d"!!B!!!`&!!-!$d0[E@eKEQ3J8hPZG'&i$3`!"J!!$!8!!`!"$3%!"J!!$!! !!`!"$DN!"J!!$!!!!`!"$3!!"J!!$!!!!`!$!!%0!3!'!!!-!!!$!"Re-[GF,h9 ""G$drf*`p34ICdEff2$3!!B!!!`&!!-!!3d'!!B!!!`&!!-!GI33j&pR4[E3ph4 b)6"c$drf*`a6*R1!B)&('!A3p$TSJ*(A0bG6J0@UAhFC$f,hN!$d--@4mZ$d%23 kD)#4ecFR8`H!D!eDTIGim0!!!!B!!!`!!!-!!3d'!!B!!!`!!!-!8!(J!!)!N!0 3!(J"D!(J!H$mhNK(H!!B+J!&$!3!#Q`!!"J[+M`JBfaKFh-J3da"8e0138e&)$i U,`d!"J!!$!!!!J!B,bSm)(0eF'9b)&098%956N&045!q+Lm0!!B!!!`!!!)!%2, r+[2!NGFaJ22[+[,r$3!!"J!!$!!!!J!Um*p192E@S23`NGFaJ%(h(h9d'3e8!V% 23kD)mZm0!!B!!!`!!!)!!3d"!!B!!!`!!!)!&2,r+[2!pfC(Ef+KJ-TSM`d!"J! !$!!!!J!dm*p192E@S23`pfC(pLS3NGFh*e1!e8!V%23kD)$drf,fSF,bl`d!"J! !$!!!!J!%2LS[$3!'!!!-!!!#!!%0!3!'!!!-!!!#!"IbrbVc`2GQ4fpLSB"cJQ2 "m0!!"J!!$!!!!J!jm*p192E@S23`pfC(Ef+K#4ecFR8i$93#X3p*1#Bm%26rB[D K`SmZm0!!!!B!!!`!!!)!"$iU,`d!"J!!$!!!!J!"$3B!"J!!$!!!!J!@m[mUmm$ fd5YCJ-TSJ22[+[,r$3!!"J!!$!!!!J!Em*p$TSJ2E4+eN!#4ecFR8imZm0!!!!B !!!`!!!)!!3d'!!B!!!`!!!)!'I,r+[2!pY%V@B"cJQ2"$clbVbr`d!!!"J!!$!! !!J!Hm*p*1#Bm%2E4+eN*(A0bG6Mbl`d!"J!!$!!!!J!"$3B!"J!!$!!!!J!8!H! $!3#3!a3"D!(J!H!"i2cH5%Gi!"JU!!8-"!!+E!!!!3d'!!B!!!`!!!-!Pr56$fh hN!"2GBX#82Ca)29[-I,[-!Ah8Jp*#fpf%0Ah8j!!JIGK4U$f,hAfH!phYmX'36m R)0BQS2B[G5$hPIG3LepeU3pL%'phC""GmZ!29,'"$NAf+KpYJ2GhUJpL%0IhJC! !F`+a!api)%'KD"mZm0!!"J!!$!!!!`!(3Q9MEfeP$3d!"J!!$!!!!`!!$!!!!`! $#Ad0R!!'!!!-!!!$!!-*H`d!!!B!!!`!!!-!"d*PBfpYC3d0!!B!!!`!!!-!!3d '!!B!!!`!!!-!'[33p6EfhU%23kD)$d3GFh*e2`d!!!B!!!`&!!-!!3d'!!B!!!` &!!-!U25G$hPIG3C"##HU##pecfX&-2GlBJAf,fSF)14ICdEfhfecpR"i"US'pLA h8J*2H33@PcpR!'pLAh8Jp6pYDU*UpV"c$de[H3mime$d,hNK"8$f)5)8$hN5!V% '3RbK"6$e0G,hGN%25I3r*i"c$dVh8a$cMc823[H5(bi2$3!'!!!-!!!$!!8*)#S [$3!!"J!!$!!!!Y!!!!B!!!`!!!-!!3d'!!B!!!`!!!-!8!(J!!)!N!03!(J"D!( J!H$mhNK(H!!B+J!&$!3!#Q`!!!-[+Jd'!!B!!!`!!!)!,`mU$e5hJ(J#X3p2p#p +p&p$p8$d1QL2,Jp*)(J#X349)&h`d!!'!!!-!!!#!"!2+JDU"IB[DK`SmZm0!!! '!!!-!!!#!!3J+Lm0!!B!!!`!!!)!!3d'!!B!!!`!!!)!&5mU2#"ME'&cFb"23NT &3e3J2LS[$3!!"J!!$!!!!J!6,bSm)(0eF'9b)%j96%`J2LS[$3!!"J!!$!!!!J! "$3B!"J!!$!!!!J!3m[mUmm#4ec'!mqmUm[m0!!!'!!!-!!!#!!%0"J!'!!!-!!! #!"MbrbVc`2GQ4fpLSB$+D)$clbVbr`d!!!B!!!`!!!)!!3d'!!B!!!`!!!)!'r, r+[2!pfC(Ef+KJ(1#Bm%22[+[,r$3!!!'!!!-!!!#!!%0"J!'!!!-!!!#!"AbrbV c`2E4+eQ!bQL!mUm[m0!!"J!!$!!!!J!"$3B!"J!!$!!!!J!$,bS0%!!'!!!-!!! #!#82+J$d6hNfpYI'U[H3!-3@)3B$(hF&pLpU(#mZm0!!!!B!!!`!!!)!"#!U,`d !"J!!$!!!!J!4Af,fSF)24a-8I!mUm0!!"J!!$!!!!J!'EQ9h+#N0!!B!!!`!!!) !!RX0!!B!!!`!!!)!&[#9pLpU(#$dF6&(`2+Z*21r$3!'!!!-!!!#!!)*$3!'!!! -!!!#!#[`RbrbS2Ca)2E4pY92H3e8!V%%(h(h8B)C"IB[DK`JmUm[m0!!"J!!$!! !!J!Ym*iN$cd2+&pLpU(#$dF6&(`2+[+3!2E@UPcbL"VI,SIhSI+I1r$3!!B!!!` !!!)!!3d"!!B!!!`!!!)!+r#I,r+JpYEfX3+a$fdIE96hN!"c*33IFIG4JJAf,fS F)2+[,r$3!!!'!!!-!!!#!"R`PIB[DK`RhhN22I2JJDhbML6bRc[`d!!!"J!!$!! !!J!#I3d!"J!!$!!!!J!"$Im!"J!!$!!!!J!$,bS0"J!'!!!-!!!#!$32+J$d06p f&#$fdIE96hN(-P"J3IFIG4JKN!$dNi*M`3Af,fSF,`d!"J!!$!!!!J!%)#S[$3! '!!!-!!!#!!pIB[DK`RhhRbML6bR`d!!'!!!-!!!#!"9IB[DK`Jp(%a4m$bVL6c[ `d!!!"J!!$!!!!J!#H`d!"J!!$!!!!J!%#5mU$3!'!!!-!!!#!#[`N!$bS29'pV% (296feLG6$8Afd#X3p$TSJ&pLpU(#m0!!"J!!$!!!!J!`m*!!mU"MN!$AUJFJF`+ a$2G836)256JQ2""IB[DK`[,[$3!'!!!-!!!#!!8*)#S[$3!!"J!!$!!!!J!Lm*i NmYmqbQL292HH%223JDhbl+D)p8pjiI1r$3!'!!!-!!!#!#,`RL6bhck2GH&292H H%223JDhbk2GH&292HH(c[`d!"J!!$!!!!J!Bm*iNmYmqKrHK$cd)'YmZKrHKmlm 0!!!'!!!-!!!#!!%0"J!'!!!-!!!#!!3*,bS0!!B!!!`!!!)!,r#3!2+J$d'C$PF b&!*3*[BU%&d256JQ2"$dd5YCMbl`d!!'!!!-!!!#!!8*)#S[$3!!"J!!$!!!!J! C#A"dFLdqCR9ZBe4LE#!p)%PZFh48BQ`l$4`!"J!!$!!!!J!#I3d!"J!!$!!!!J! "$3B!"J!!$!!!!J!Cm[mUmm$fd5YCJ(1#Bm%22[+[,r$3!!!'!!!-!!!#!!%0"J! '!!!-!!!#!!X[+L"1EfjP,LS[$5)!"J!!$!!!!J!"$3B!"J!!$!!!!J!8!H!!!3# 3!a3"D!(J!H!"i2cH5%Gi!"JU!!8-"!!+E!!!'3P[BQTPBh3J3da"8e-J+R*PBf9 TGQ9b1`dl!!B!!!`!!!-!&!(J!`8!N!-8!#J!8!"i!+!"D!(J!H!B+J!&$!3!#Q` !!"N*Ef*UC@0d)%0-3906)#TbC@0PDACPFMX0!!!'!!!-!!!$!!*l$3!'!!!-!!! #!!%0"J!'!!!-!!!$!&!"i!!#!*!$8!"i!@J"i!(Jr0j)4hJ!'#S!"3`%!!TX!!! 6,bSm)'0XBA0c)&4&8e3J2LS[$4!!"J!!$!!!!J!9,bSm)(0eF'9b)%p#5N9$9#! q+Lm0!!!'!!!-!!!#!!%0"J!'!!!-!!!#!"$brbVc`*(A-B$clbVbr`d!!!B!!!` !!!)!!3d'!!B!!!`!!!)!'2,r+[2!pfC(Ef+KJ-TSJ22[+[,r$3!!"J!!$!!!!J! "$3B!"J!!$!!!!J!Bm[mUmm$hCNG[BU'!Fi*M`3m0!!B!!!`!!!)!$2#A-JpfD[G 4mlm0!!!'!!!-!!!#!!3q+Lm0!!B!!!`!!!)!!3d'!!B!!!`!!!)!&I,r+[2!pY% V@B$+D)$bVbr`d!!'!!!-!!!#!!%0"J!'!!!-!!!#!!`[+L"1EfjP,L!U,`d!"J! !$!!!!J!"$3B!"J!!$!!!!J!Cm[mUmm$fd5YCJ(1#Bm%22[+[,r$3!!!'!!!-!!! #!!%0"J!'!!!-!!!#!!-[+JdZ!!B!!!`!!!)!*3mU!28a)#X3p*1#Bm%2GQ4fpLS 3pfD[G4mZm0!!"J!!$!!!!J!%)#S[$3!'!!!-!!!#!!YcCA3SGQ&XG@8T$3!!"J! !$!!!!J!,Fb$hCUpe(c[`d!!'!!!-!!!#!!*l$3!'!!!-!!!#!"A`Q"VI,[GQVh8 3mp$hCUpe(c[`d!!'!!!-!!!#!!*p$3!'!!!-!!!#!!%0"J!'!!!-!!!#!!-[+Jd !!!B!!!`!!!)!+3mU!28K,h9$J#X3p*1#Bm%2GQ4fpLS3pfD[G4mZm0!!!!B!!!` !!!)!"#!U,`d!"J!!$!!!!J!(GQPPGbJT$3!!"J!!$!!!!J!#H`d!"J!!$!!!!J! 8m*35pe3`JDhblhCUpe(c[`d!!!B!!!`!!!)!!Rd0!!B!!!`!!!)!!3d'!!B!!!` !!!)!&!(J!`%!N!-8!@J"i!(J!H$mhNK(H!!B+J!&$!3!#Q`!!!%0"J!'!!!-!!! #!%le5aJ3pYEhN!!e)2BK!V%2E9JJNBa(iRpf%$EfdB$f,h8Jp*mRpY!P8+EhVhN #8-YMpR%#XIEI,Jm0!!!'!!!-!!!$!#A`N!$bS(1#Bm%&pLpU(#!&d#pji3mLp8p &p6p8mLmZm0!!"J!!$!!!!J!Zm*!!mU![HH%23kD)mX![G81!+a"'ph$fdIE96hN (-P"M$`d!"J!!$!!!!J!%#5mU$3!'!!!-!!!#!!-!!3d'!!B!!!`!!!-!N[6Pph# K+!lh8JpeJ3+a![Ge$+D)"c"Jj&pR4[EI,Jp)&""i#eph"IB[DK`S"N%-3@)C"MN -DU'3!04IE3B23`hh8m*e2bi256!VH!aS%#X3p$$IG6`R8`H!pYCcmSmTmZm0!!! '!!!-!!!$!!%0"J!'!!!-!!!$!&!"i!-%!*!$8!"i!+!!b!&S!H!"i(J!'#S!"3` %!!TX!!!(E@&TELJT$43!"J!!$!!!!J!"$3!!"J!!$!!!!`!Fm*Af,fSF)2924I8 r9!mU)B,c(b`#'#mbmlm0!!!'!!!-!!!#!!%0"J!'!!!-!!!#!,Me5a$dRfhP3Q- J+h2fH!*33IE4pYpL&!X8%'33+f)19c)8J#8&pLpU(#J2EIGB)2BK#43G&"2"N!$ hHa-'lUpjFrC`pY')EfFB!P"b"MN#YL"",h9$$hCUpe'!pYpeJJpL%-D#"c*3+a! IH1(#'335pe3`,hRKmZm0!"i!!!`!!!-!3``"!!-!4``!!!-!M!`"!!-!N!!-!!! $$!!!!J!"$3%!"J!!$!!!!J!bm*!!mU!#8,@T"M"cJQ2""IB[DK`JA3+a#1((eaN 2$3!'!!!-!!!#!$6`N!$bS!mLp8p&p6p8mL$hGbX'$PFb&!*3JP4[Ca#Q6fF3%ep epRX2$3!'!!!-!!!#$!!!!J!F#@pLDQ9MG'PQH5!p2L"84908+#CdCA0d-LNl$3! '!!!-!!!#!!%0!!!'!!!-!!!#!!3*,bS0!!B!!!`!!!)!,I#3!2+Jp"UJ3G&"2"J #8'-&pLpU(#"c"JpY')EfFI$3!!!'!!!-!!!#!$$`N!$bS2EIGB)%(43#8#X3Af, fSF)(+"VI,Jp68(-#X3m0!!!'!!!-!!!#!#r`N!$bS-D"$hHa33pjAh8,EhB3B19 c)8!P"M"IB[DK`[$3!!!'!!!-!!!#!#I`N!$bS!+a$PFb&!pYpeJJpL%*&"d8%m' I,[$3!!!'!!!-!!!#!!8*)#S[$3B!"J!!$!!!!J!Xm*J5$chci2+L'#mamSmambm Tml!2,r+JJ5!#'#ma!P$c(c)2+[,r$3!'!!!-!!!#!!%0!3!'!!!-!!!#!!8*,bS J$3!!"J!!$!!!!J!Zm*!!mU$e0c`3+a"i!V%&pLpU(#$bJe)'$PFb&!*I$3!'!!! -!!!#!#E`N!$bS&-I+303N8(436`3H!-F')C2HI,[$3!!"J!!$!!!!J!!U,`d !!!B!!!`!!!)!+I#B%Jmpmq!KJ[-[+2-I-r+I1`m[mU#")#'#mb!P$c(c-2+[,r$ 3!!B!!!`!!!)!!3d"!!B!!!`!!!)!22#H4c,I+2)L'#ma$cd2*CmX!KJ[-Jmp$b@ IA$mLmX$bKc,bN!$hCaph$chci2+L'#mamSmTmXm0!!!'!!!-!!!#!"S*#5KTER3 T)(CTCAFJ26iJG'9cG$)S+5Nl$3!'!!!-!!!#!!*p$3!'!!!-!!!#!!%0!3!'!!! -!!!#!"3"i!-&!*!$&!!S!&!!H!#J!@J"i!(J'#S!"3`%!!TX!!!Rp8Yi!IH'pYk K$hGkS14c)#X3eDTIGh2fIcV`d!!'!!!-!!!$!!3*N!-0!!B!!!`!!!-!(!Q3!b* dCA0d-5!p)$%b,#"dCA0d-L!p)$%c)Jd!"J!!$!!!!`!"$3%!"J!!$!!!!`!! U,`d!!!B!!!`!!!)!"3N[+L!0!!!'!!!-!!!#!"d*5@ePG'K[C%jKE@9I3da"8e- SFQ9MC@PfCA)T$@3!"J!!$!!!!`!"$3%!"J!!$!!!!`!$#Ad0!!!'!!!-!!!$!!- *H`fK!!B!!!`!!!-!$JPYCA4SEf41B@eP+#N0!!B!!!`!!!-!!3d"!!B!!!`!!!- -!!!$!!%0!!!'!!!-!!!$!6VdN`pR%a4U$dN,EhB3pL%6!KJR2fF26rBR$hGbX2) X9%(#mL$NAfG'pYJ)8253!-Br*b"X,h9UVhN)EhN2Gh+`mam`m`mP$&2AN6`3+f) ()2GhUJE##'-Dpj!!e8$b*ca83F,b)14ICdEff2,J$dN,EhB3pL%6$h@(2fF()#8 #4MLQ)3B`pqmim`m`#R-3j&pR4[E3Bj!!p*!!pL'R(hB3p*mRpf%0IhJC"US#X3e LDJ&%9)"MN!$feB)&d#X30S,hN!!e-3eLDJj&pLSIEBmZ$d,h8JphY3pV0IGimrm 0!!!'!!!-!!!$!-hkA`Rd3GFh*e1!A3+a$96fd&pLpU(#$d2dcd(e2e-'36mR)14 H&+pj!NBiTL'3!(-2#IBP+`+a$hCNG[BU'!Fi*M`3Bj!!pfC(Ef+K$+D)#"`R8im Z$e5a$hG8pVm*C&pe13e8!VH!H!*3peJ3NGFh*e1!A3+a$96fd)*2GF,`Rd2dcd( e2e2erf*CpjmZm0!!0J!!$!!!!`!D$!%!!`!R$!!!!`"2$!%!!`"K$!!!!`"Q$!% !!`"d$!!!!`#k$!%!!`$,$!!!!`!fm*!!mU!29,%2E4L'pR%2)PpLpU(#IIHI)JJ 6)#8#X3p$TSJ&pLpU(#m0!!!'!!!-!!!#!"l`N!$bS-D#!P!V%-9%(#![HH(bl`d !"J!!$!!!!J`!!!-!+256JQ2"$dd5YC!!NGFh*e1!A3+a$96fh`d!"J!!$!!!!`! $#Ad0!!!'!!!-!!!$!!-*H`d)!!B!!!`!!!-!"3NJ+Lm0!!!'!!!-!!!#!!3*,bS 0!!B!!!`!!!)!!`!G#8eYCA4SEf41B@ePAd0-3906+(*PBf9TGQ9b+3d!!!B!!!` !!!-!!3d'!!B!!!`!!!-!&!(J!`8!N!-8!#J!8!"i!+!"D!(J!H!B+J!&$!3!#Q` !!!%0!3!'!!!-!!!$!!!-!!!$!!%0!J!'!!!-!!!$!!-*I3d'!!B!!!`!!!-!!`P l$3B!"J!!$!!!!`!1#@ePG'K[C%jKE@8S+3d!"J!!$!!!!`!Pp$TSJ264+eN*(A0 bG6J&d#X3e8pYm0!!!!B!!!`!!!-!!3d0!!B!!!`!!!)!6!NS+R*PBf9TGQ9b+5j QG@jM9'*X@d0-3906490I8e9349*G@fePFh0KCf9I5@jNCAKG+#BS+R*PBf9TGQ9 b+5`J3b!*#@&bCh-T1`d!"J!!$!!!!`",p'FfU[H3!2E4L'pR%&d#X3e8pY$b,fd BK[Ca$chci)pei8mSp$"NpRMbRb)'33*'1+BKN!"c*I$3!!!'!!!-!!!$!!%0!3! '!!!-!!!$!&6`RbMbT"`Apf&2+I,Ype2292BUpEmSmU3F&rGK6bRbl+D)p8pjiIA I@rE4L'pR(erdNj(hMehbMbEbMbT"`Apf&2+I,!m*m*p$"NpRMbRc[`d!!!B!!!` !!!-!3[64L'pR%&d#X3e8pY$b,fdBK[Ca$chci)'YmSp$"NpRMbRb)'33*'1+BKN (-Pm0!!!'!!!-!!!$!%!*+'pLDLNZCR9ZBe4LE&XSEf*U+5jME'&cFe4jF'9G@fe PFh0KCf9I5@jNCAKG+#BSEf*U+5`J3b"KFQGc+6X0!!B!!!`!!!-!4[64L'pR'!A 3+a$96fd2)[E4L'pR(dj[E4$chci&pLpUmSp$"NpRMbRb)'33*'1+BKN(-Pm0!!! '!!!-!!!$!"3"i!!&!*!$&!!S!&!!H!#J!@J"i!(J'#S!"3`%!!TX!!!"$3%!"J! !$!!!!`!6#C!$I5"(C@jPFQPMAf*[C(Nl$3!!"J!!$!!!!`!6#C!%4P913b!UCR9 ZBe4LE$X0!!!'!!!-!!!$!!%0!!!'!!!-!!!$!!%0!3!'!!!-!!!$!)Re5a#4ecF R8i#"V3Bj#2GH&!C"!NBiTL'3!(-P$bMbT"`Apf&2+I,J$e2hAK3(J)iFGU!VAhA fH`pL('peJ3FJEG(#J,AhF'$fdBK[Ca"i!NBiTL'I,[$3!!!H!!!-!!!$!"!-!3! $!"3-!!!$!"N-!3!$!"i-!!!$!!%0!!!'!!!-!!!$!$M`N!$bS&pLpU(#$9323kD )$e6dAe2e6bi26P*m%#X335pe3aN2GQVh83H2$3!!"J!!$!!!!J!"$3%!"J!!$!8 !!`!$!2re5a##6hA#pe33H!E#peDUpj!!aUSC$dF6&(cerf*Cpj!!pL('peJ3DU# 4ecFR8i"G!V%092E3Af,fSF)26r3[5[4I3r926[3I6I43C"!NBiTL'3pLpj!!p2p LF(-P$drd,dVdAd2e6dld(dhdAerf*CpjmZ$d'U$dNi*M`3Af,fSF+!JNpe`[G8' !C"$'UKN26r3[5[4I3r926[3I6I4IArBPRhRbi23DS23kD)"IB[DK`S"N%&d#X3e 8pY$drd,dVdAd2e6dld(dhdAeqaDI,[$3!"i!!!`!!!-!8J`"!!-!B``!!!-!I`` "!!-!N!!-!!!$!!i*N!4TER3JFfPkC6X0!!B!!!`!!!-!%`Q3"'PZG#"cGA"PFP4 jF'8l$3!!"J!!$!!!!`!6m*m*m*m*Fb$+D)p8pjiI1r$3!!B!!!`!!!-!)I#I#I# 5pjiC(3JNpe`Jp(%a4mpIpL@IH3mSm0!!"J!!$!!!!`!"$3%!"J!!$!!!!`(6p)A Khh@Upj!!phFV!VH!Bj!!B*(fe3j&pR4[E3H!MhAGI(%b!P$fF5$hPIG3JQ3KN!$ hGbX26rBRmZ$dN!$UB`*3IfhNAhB3p2pLIbi29,&""N%)Afd3Af,hCepeJ(pYj&p f(fd6+!*3pL%2E@N3*3p2pLIbi25&ph(hB8mX$dN2GepeU3NGFh)Dpj!!TrDa!P# aC!MhAfIfFB*e1!e8"rEH4IGKpY%b!P$drf*r,Jp*"[E3DS8(-K3B)C!!F`E2FIG A4cpR"c)8'#FrC`p$p-p"p6p6#4ecFR8i$93#X3p0E(-PLr,Jp*d2H9pe$hG()3B `Fb&"JR2fF23r623I8r8`kKD"#"13!()#82E4mZ$dR3pjAh8*8r*b$hGM)()#82B KaIE4$Q3JA3+a$drf*`Pi*(pLpe*e-2BK#2G8%'13!#'U$fd3+f)#9I,Jm0!!!!B !!!`!!!-!!!`!!!-!&!(J!`8!N!-8!#J!8!"i!+!"D!(J!H!B+J!&$!3!#Q`!!!% 0!3!'!!!-!!!$!2$dN`+hJ)(#G6$dN!$hGkS2Chpf%'-&pf&2GR(hF&d2GlBJ+a$ d--@4#PAfZ!TrDa"Y)8!26rBR#fJ2EIG6pR'3!(,bi255mRJ%&UVhN!$@G+pj##4 RpRXJe8phC*!!pLpe)2H9pe$NAf*[BUpj#92bFJ-4N!!P$fXeph!VH!*3peJ3p2p LIbi29,AhAfH`FJphHU#aVJDP)2Gl%`pjAh8'33NIB[GICrCh2fF-@4mZ$`d!"J! !$!!!!`!8!H!!"3#3!a3!+!"3!(J!S!&S!H!"i"JU!!8-"!!+E!!!!3d"!!B!!!` &!!-!&25&ph$dNJp5&UVhN!$eG8pVM`d!"J!!$!8!!`!dm*!!mU$b,e6dAe2e6b) 2GlI,#IH6EfemDUpj$%&L'!B$(hF(1#Bm(`d!"J!!$!!!!J!bm*!!mU$e5a$fdBK [Ca$b)aphmL"i#"-J*3+a$d1QL!Af,fSF,`d!!!B!!!`!!!)!)I#3!2+JDUA')C! !Bj!!3@RhN!$932GB(bl`d!!!"J!!$!!!!J!,p,&bX28[GD(`d!!'!!!-!!!$!*! $!4!3!!%3%!!"%"!"'23DS#X3p$TSJ*(A0bG6J'33kQ`3BJ+a!Pi&d'-26rBR$NA fG'pYmZ$d%-TSJ2GlI,"i$h@"N!"S"JMhAK3#8'05X8$d1QL!pYpeJJpL%*(A-3p L(933FJH!peJCmZ$e5a$d--@4"i#"i8BKN!$8Afd#X3p$TSJ*(A0bG6J2B[H3!)( hB8DJmRmPmRmZ!236pj!!NGFh*e1!eDTIGh2fF2*r*I*`C""c)8j")C!!D!p$$IG 6`R8imZm0!!B!!!`!!!-#%I53!&4rCh0UVhN2Gd8K$drf*`8`B29[3I@!pe1432B SRc6blc,bi23Ka[GB%&d#Yi"b"i"JeR5[H3pR%a4m$e8hpi"ZkRaLG6$bJVAhAfH `p*mRpY!e)-pe4"-Upj!!Fb&"JKN(-19#FrC`FJ*3pYE,FaJ&+a3#YM!V%26@`2G 6N8$d(hSK`23r+I,Jp8X3MhNbEhJ&d#X3p2pLF-AfhfeMN!"imk$b*IBR$e[bhhE hcbd[A3pEmYRed0HK0[E4mZAf*r)[,Jp8X3fQpR$b,bhhEb))*MQ!e8$hB8pL@"$ hHhS3mLmY,b))*MQ!e8!K5"mZ$e5apj!!C"$fhh8[G@U[H3(hM+peKrGK$DEfH2, Jp8X3fQpR$b,bfI)JH!NIB[GIC`pY@4$93#X3*'1+BP6bi255$'peJB$dd5YCJ'1 3!2E4L'pR'!*3pR%a4L%)TrCl+[H3!*IG&"-JaC%#8'H3!(-#4XpVFrC`PIGc$b+ 9'26P,e)Bj6Rb)"4&52,Jm0!!"J!!$!!!!`(Lp'4IE3+a"[BPpf%*H-peL(8i"MN "piEfhU'!FJH!j&pLEf+[H3Af,hCepeJ#YL$dN!#R'3B2BR)(-#X3Fb4Cpe`R8`p hX6$dN!#'H3+a33H!03Fb&135BR8`P6%')%pe-#IfdI,Jp)AhFIGK3#X3Fb&135B R8`a6Ki+!A3Fj(hKcpR"c*3B`C%EhN!"G$IG6`R8`jA-K5!*3NFH4$hHf)#X3j&i 8$fd5YC!!H!*3(hJFpe)3e8!V%-pe4"-JAf,fSF,bi29,%&pf&,&T""papeG"N!! P#9!VH!H!eR5[H3MfeUS2Gl%`aIEHC(2fF()#8,AhF#Yi"i#f1D'3!(-&+a3&pLp U(#$NAfG'pYpYFrC`MhQ#(ff2,J$dN!#ei3pjAh8*8r*b$4'JpYH+'3Ef*IG5!VH 2,Jm0!!!5!!!-!!!$!(S-!3!$!(`-!!!$!D6e5a""D&-26rBR"i$PL(pLS3BJDU" i$f)FEh@"$d-'UPphJ2H9pe!P$'Mh9UVhN!$'JJ+h2fH!e&pY"6%#pji3*3Be+a6 bi29,H!pY&MJ#YL!V%23`JNpe`S$93'UJAf,fSF),EhB3+a#'pY%0G))0Ah9!NGF h*e12,Jp8XB%'33+a$+D)p8pjiI,!MhAK6e6hRKmX#(pk%'13!0pe2292BUmZ$e5 aJ3C""US#X3NGFh*e1!3IFIGA3C!!*3a"BK"MN!#"13pY')EfFB!P"M"IB[DK`[, Jp8X3NGFh*e-&d&pLpU(#$dF6&(`&1[H3!-8bCcJ#Yi"ce8pYBR8r,Jp8X3"X,h9 U$d-)*2GF,h9""i$bh`d!!")!!!`!!!-"@!`"!!-"C``!!!-!-[#3!2+JphYk%#' #mb#fJ)*8EfF3e8"M"IB[DK`JDN&Tpjm0!!B!!!`!!!)!0[#3!2+J+a3G9"#fJ$8 '`[G@S)*8EfF3DUA')C!!$93(,`d!"J!!$!!!!J!bm*!!mU$e)IE4pYpL&2,!)B, c%(J'$PFb&!*3B`Af,fSF)'1I$3!'!!!-!!!#!#N*G'9cG$%J25!SEf*UC@0d)&4 &8e3J+LNJEQ9h)$dq)&4&8e3S+6XJ$5S!"J!!$!!!!J$ip6Afd3+h2fF#8$8R`3H !+f)2E4+eQ!e8"JbQL!C"""d8%m'3!2GRB'#PAf[hAJ*[BU(bi29,H!pY&MJ#YL" JpLIhTN33,hRK"i"X,h9UVhN%%[G8-C!!e&pY"JpY%V@3!)8'2hN2GQVh83pYpeJ JpL%-D#"c*3+a$&4"`J,hRKmZ$e086hRb`(+!+a$f)B)253aIGDN*8(-'#,9#!Rp Y(bi2$3!'!!!-!!!$!*VdjIG`S5J*(A-3B-TSJ2GlI,#fJ26r3[5[4I3r9!D!FS# 2GH&-TSMbi29,H!-IG`Af,fSF)2GhUJpL%-DU'3p8p&p6p8"MN!"bJ&1[H3hh8bG 6$hGkS2BK!P$hCaph"MN)%JB`Fb(fF8$bl`d!!!B!!!`!!!-!j[9,%0@UAhGcpR" IB[DK`JH!+a$d1QL!p2pLpU(#mZ$d'U"IB[DK`S$fhh@#"cX8FJe&pY!VH!Af,fS F)"FV&!Pd(#VhN!"8"cPd(#VhN!!V4IGICl"bJ)pei8bQL2,Jp2pLpU(#$&-QFi! e$d1QL!9!p*1#Bm%2GQ4fpLSBmZ$dNS"6VhN0pe2#G6"i!P$%&L%$(hF&pLpU(#M bl`d!!!B!!!`!!!-!SI64L'pR%'33J6)#8&pLpU(#J2GBFrC`+a$9UPphFrC`MhN bEhJ21JmLpY')EfFI6QpY%22I2JAf,fVbKNpRpepY%bMbRb,bi!p8Yi$fd@12,!E ZVhN#X3p0%V@3!2)[E4L'pR(dj[E4mL!P!V%!+a"IB[DK`JmLAf,fVb,bi2$3!!! -!!!-!3!$!!F-!!!$!4Re5a33H!DS8&-3MKafS*(A0bG6mZ$dNJH!Af,fSF)24a- 8I2,Jp*)(J,AhF!8a""d8J#8'2hN2+2G6pV0IGcmT"IB[DK`[,Jp0')EfFB$fe[H 3!2BK#"-J*3B`Af,fSF)24a-8I!Bj#(2""M"cPrGRRh9U"IB[DK`JpV0IGi$hHf) ()(Mb`#X3a83F)2E4+eN2GhUJpL%"pi(2G5'3!"pf%`+epepRX#X8%(J$8'`[G@S 24a-8I!Af,fSF,bl`d!!!%J!!$!!!!`!X$!%!!`!k$!!!!`'Xp8X8%'33DS8#Y"% &+a3)iFGU$fXIHIGe5B!VBJC"$h@"N!"c$drf*r,Jp8XB%'33JDhb`)pei8mX"MN &pLpU(#mZ$e5a$hG8N!#"V3H!peJC$hHa-%(44cpR!P!V%-pe4"-Jp$TSJ2GlHK" c"Jp0%V@3!*(A0bG6mZ$e5a$hG8N)pei8"UK33G&)!#8#X3ch9%%b$d1QL!phYk% (-'$dd5YC#4ecFR8r,!YIGapf&!FJDS8-Eh@"J#X3MhAK6+D)'!pY%V@B!P$f)3( hJFpe)C!!4LX8!VB`+a"IB[DK`S$d1QL"J2E4+eQ2,J$e5a$hG8N&pLpU(#"i$h@ "N!$hHa-*(A0cpR"IB[DK`JpfC(Ef+KMbl`d!!%)!!!`!!!-!6!`"!!-!8!`!!!- !83`"!!-!9``!!!-!A!`"!!-!C3`!!!-!EJ`"!!-!FJ`!!!-!a3`"!!-!bJ`!!!- "R@13!256JQ2""IB[DK`SmZ$d%23kD)"IB[DK`JD[GfpjJ"piH#Mbi255#eUB$fe B)&d#X3pRTIBQS(296feLG6!V%23kD)!a'BmZ!256$fF6&'S(,bH!pUAf)(J#8*8 #YcpRJ+IfX3a"BR2fF$(hF256JQ2""IB[DK`SmZ$dNi*M`3Af,fSF+!C"!V%(1Ap fHIG@S&pLpU(#J-3@)C!!BJ6h8bIfdI,Jp'9!(hK[EHS3I3+a33ph&""Jp$TSJ29 r5I6[426r9`+f)2Dc(hF'pLAh8Jp0E(-PL`phFjAhIb`"E,"cPrGRRh9U$hGcPIG `8`+a#-34-2GepeU3!'`[G@U[H3a83Bj6N!!P"bJ&ph-256JQ2""IB[DK`[,Jm0! !(J!!$!!!!`!%$!%!!`!8$!!!!`%B$!%!!`%I$!!!!`$hp*!!pRpe')$f)G9"$dN *IhB3Fb8#Yi$dN!#,Ah@T#'pj!VBJp*!!Efd$8JB`(hMK3J8`Af,fSF)&4a-KN!$ NAfG'pYpYFrC`08#9$dN2DcAhF28rE@ULD[Dr,J$dN!#9$f)DFIGK$dN'pY$h@(2 fF#X3)8pYFeTICrH3!#X3K[E4$hG[H3FJH!EZTaN#828rE@ULD[D`pLpe)(d25I* rE305mX$hFDS253kKD3IfFe4M`I,Jm0!!"J!!$!!!!`!36f0dEf*PFL!h,#!a16J e$3!'!!!-!!!$!"4#C@&fCA*dEfiX)%p5)$Nh-$!e$3!'!!!-!!!$!")c0c8`)&0 A)$%a0h4S)#-c1!d!"J!!$!!!!`#3"3&93#!!!6!!)J#3!a!!N!-"99JJ!!(m!!` 6!3!3!"!!!99-+!!&q!!Z%`%!%!!J!!&91#!!!9)!#K-"!*!$!4!3!!%3%!!"%"! !N!8"953J!!&F!#)!N!-3!*!$!98X)!!&eJ!-%`%!%!!3!!&9+#!!"LB!$"-"!"! !)!!"94`J!!&q!!S6!3#3!`%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"! !!4!3!!%3%!!"%"!!!4!3!!%3%!!#%)3!!4!3!!)3K3!"%"!!!K#$!!%3%!!#%)3 !!4!3!!%3%!!"%"!!!K#%!!%3%!!#%)-!!4!3!!%3%!!#%)B!!4!3!!)3K!!"%"! !!K#%!!%3%!!#%)B!!4!3!!)3KJ!"%"!!!K#%!!%3%!!#%)-!!4!3!!%3%!!"%"! !!4!3!!)3JJ!"%"!!N!-"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!% 3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!N!-"%"! !!K#%!!%3%!!"%"!!!4!3!!)3K!!"%"!!N!-"%"!!!4!3!!%3%!!"%"!!!4!3!!% 3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!% 3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!% 3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!% 3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!% 3%!!"%"!!N!-#%)-!!4!3!*!$!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!% 3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!% 3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!% 3%!!"%"!!!4!3!*!$!4!3!!)3K!!"%"!!!K#$!!%3%!#3!`%3%!!"%"!!!4!3!!% 3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!% 3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!% 3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!% 3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!*!$!4!3!!%3%!!"%"!!!4!3!!)3J`!"%"! !!4!3!!%3%!!#%)3!!4!3!!)3KJ!"%"!!N!-"%"!!!4!3!!%3%!!"%"!!!4!3!!% 3%!!"%"!!N!-#%)3!!K##!!%3%!!#%))!N!-"%"!!!4!3!!%3%!!"%"!!!4!3!!) 3J`!"%"!!!K##!!)3JJ!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!% 3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!%3%!!"%"!!!4!3!!% 3%!!"%"!!!4!3!!%3%!#3!`%3%!!#%)F!!4!3!!%3%!!"%"!!!K#)!!%3%!!"%"! !!4!3!!)3J`!"%"!!!K#%!!%3%!!#%)-!!4!3!!%3%!!"%"!!!K##!!%3%!!#%)8 !!4!3!!%3%!!"%"!!!4!3!!)3K`!"%"!!!K#$!!%3%!!"%"!!!4!3!!)3K3!"%"! !!4!3!*!$-!!"9)3J!!')!#)!N!-3!$!!!958+!!"UJ!`%`!!%!"!!!&8M#J!!GS !)K-"!"!!8!!"9(JS!#`8!"36!3!3!'!!!96N)!!i6J!F%`%!%!"`!!&8C#!!1$! !(K-"!"!!J!!"9&JJ!!`-!"`6!3!3!*!!!!&89#J!"NJ!(K-"!"!!S!!"9%`J!!) 3!!`6!3!3!,!!!94%)!!i&J!D%`%!%!$!!!&82#!!!MB!$"-"!*!$d!!"9$3J!!* #!#)6!3!3!0!!!93X+!!#C!!8%`S!%!$J!!&8+#!!!RJ!$"-+!%!!m!!"9#!S!!+ %!0)6!!!3!6!!!93B!!!$9J!-%`%!8!&!!*!%#!!$BJ$f%`!!%!'3!!#3"J4B!!` 6!3!`!D!!N!3)!!4N!*36!!!3!G!!N!B%q!!-%`%!3!(J!*!%#!!&"!$'%`%!%!) J!*!'"FS!$"-"!"!#-!#3"!J!"M)!&K-+!"!#3!#3"JAX!!`6!3"!!P!!N!3)!$G F!,S6!3!3!T!!!*!'"Vi!$"-"!$!#S!#3"!J!"XS!UK-!!"!!3!%!N!8(G!!-%`% !%!"3!3#3!`J!"i!!4"-!!'!!B!%!N!-)!$BJ!6`6!!!3!-!"!*!!!$"-"!%! !d!%!N!-)!!N-!-i6!!!3!4!"!*!&#GS!$"-"!%!")!%!N!-)!!RQ!-i6!!!3!@! "!*!&#V3!$"-"!'!"F!%!N!-)!!V!!8!6!!!3!G!"!*!&$!!!$"-"!'!"i!%!N!- )!$6)!9J6!!!3!N!"!*!&$1)!$"-"!%!#8!%!N!-)!$2d!036!!!3!T!!!3#3"53 %!!`6!3!`!U!"!*!$#!!cC!#3!"-!!"!!3!)!N!8FJ!!-%`%!%!"3!J#3"3h'!!` 6!3!3!'!#!*!$#!!0dJ!J%`S!%!"`!J#3"3hb!!`6#J!J!)!#!*!$#!!0rJ"@%`% !%!#J!J#3"3j8!!`6!3#3!l!#!*!&$Q!!)K-"!"!!X!)!N!81JJ!L'`%!%!$!!J# 3"3kN!#)E!3!3!0!#!*!$#!!1aJ!D'`%!%!$J!J#3!`J!$Z!!+"X"!"!!m!)!N!8 2#!!-'`%!%!%!!J#3!`J!$a3!'KX"!"!"%!)!N!-)!!mZ!$!E!3!3!5!#!*!&$ei !$KX"!"!"-!)!N!82E!!-'`%!%!&!!J#3!`J!$hJ!("X"!"!"8!)!N!-)!!q8!$3 E!3!3!@!#!*!&$mJ!$KX"!"!"F!)!N!82eJ!-'`%!%!'!!J#3!`J!$q)!(KX"!"! "N!!#!*!$#!!3!!!H'`%!%!'J!J#3"4!H!!`E!3!3!E!#!*!$#!!3+J!J'`%!%!( !!J#3!`J!%%S!(KX"!"!"d!)!N!83D!!-'`%!!!(J!J#3"4"d!#)E!3!3!H!#!*! &%*B!$"-"!%!"m!)!N!-)!#`f!,i6!3!3!M!#!*!&%@)!$"-"!"!#3!)!N!-)!"& Z!"i6#J!3!P!#!*!&%B`!$"-+!%!#B!)!N!-)!$+q!+B6!3!3!U!#!*!&%MS!$"- "!!!#X!)"93JJ!"*'!#)6!3!3!V!#!983)!!5D!!1'`%!%!!`!`&9$#J!%RB!,KX "!"!!3!-"93!S!"+N!"JE!3!3!&!$!96`)!!5[!!1'`%!%!"J!`&8k#!!%XS!$"X "!"!!F!-"91!J!",@!#!E!3!3!)!$!96B)!!5pJ!H'`%!%!#3!!-"90!J!"-8!!` E!3!3!+!$!96)+!!6)!!D'`%!%!#`!`&8`#!!%cS!$"X"!"!!`!-"9,JS!"0'!#! E!3!3!0!$!95`)!!6CJ!-'`%!%!$J!`&8U#J!%h)!)KX"!"!!m!-"9+!!!"18!!` E!3!3!3!$!*!$#!!6S!!F'`%!%!%3!`#3"41m!!`E!3!3!5!$!*!&%mJ!$KX"!"! "-!-!N!-)!"2@!#JE!3!3!8!$!*!&%ri!$KX"!"!"8!-!N!-)!"3-!"JE!3!3!@! $!*!&!%"X"!"!"F!-!N!880!!-'`%!%!'!!`#3!`J!&%!!("X"!"!"N!!$!*! &&&`!$"X"!"!"S!-!N!-)!"4S!#iE!3!3!E!$!*!$#!!8PJ!`'`%!%!(!!`#3"46 '!!`E!3!3!G!$!*!$#!!8dJ!`'`%!%!(J!`#3!`J!&3)!)KX"!"!"m!-!N!89*!! -'`%!%!)!!`#3"48`!!`E!3!3!K!$!*!&&6`!$KX"!"!#)!-!N!-)!"9+!$!E!3! 3!M!$!*!&&AS!$KX"!"!#3!-!N!-)!"@)!"JE!3!3!P!$!*!$#!!9S!!F'`%!%!* J!`#3"4@m!!`E!3!3!R!$!*!&&FJ!$KX"!"!#J!-!N!-)!"A@!#SE!3!3!T!!!`# 3!`J!&J!!+KX"!"!#S!-!N!8@+J!3'`%!%!+`!`#3!`J!&MS!*KX"!"!!-!3!N!- )!"CJ!#JE!3!3!%!%!*!$#!!@L!!J'`%!%!"3"!#3"4DS!!`E!3!3!'!%!*!&&V3 !$KX"!"!!F!3!N!-)!"E#!#SE!3!3!)!%!*!&&Z`!%"X"!"!!N!!%!*!&&[`!*"X "!"!!S!3!N!8A)!!-'`%!%!#`"!#3"4FX!!`E!3!3!-!%!*!$#!!A1!!J'`%!%!$ 3"!#3"4GB!!`E!3!3!1!%!*!&&f3!&KX"!"!!m!3!N!8AHJ!-'`%!!!%!"!#3"4H '!#)E!3!`!3!%!*!$#!!b5!"f%`%!%!%`"!#3"4JH!!`6!3!!!8!%!*!&'#S!)K- "!"!"3!3!N!8B6!!H'`%!%!&3"!#3"4KU!#!E!3!3!@!%!*!&')S!$"X"!"!"F!3 !N!-)!"L@!"SE!3!3!B!%!*!&',!!$"X"!"!"N!!%!*!$#!!B[!!J'`%!%!'J"!# 3"4MF!!`E!3!3!E!%!*!$#!!Bk!!F'`%!%!(!"!#3!`J!'33!&KX"!"!"d!3!N!8 C'J!1'`%!%!(J"!#3"4NS!!`E!3!3!I!%!*!$#!!C0!!F'`%!%!)!"!#3"4P3!!` E!3!3!K!%!*!&'9`!&KX"!"!#)!3!N!8CFJ!-'`%!%!)`"!#3!`J!'Ai!)"X"!"! #3!3!N!8CRJ!-'`%!%!*3"!#3"4QU!!iE!3!3!Q!%!*!$#!!CZ!!Q'`%!%!*`"!# 3"4RH!!iE!3!3!S!%!*!&'H`!&KX"!"!#N!!%!*!$#!!D!J!8'`%!%!+J"!#3"4S @!!`E!3!3!V!%!*!$#!!D)J!H'`%!%!!`"3#3"4T!!!`E!3!3!%!&!*!&'N`!$"X "!"!!8!8!N!8D@!!1'`%!%!"J"3#3!`J!'QB!+KX"!"!!F!8!N!8DN!!!$KX"!"! !J!8!N!8DRJ!5'`%!%!#3!!8!N!8DX!!-'`%!%!#J"3#3!`J!'V`!("X"!"!!X!8 !N!8Df!!-'`%!%!$!"3#3"4VN!!`E!3#3!p!&!*!&'[!!)KX"!"!!d!8!N!8E%J! -'`%!3!$J"3#3!`J!-Ci!UK-"!"!")!8!N!8Eb!!-%`%!-!%`"3#3!`J!'p3!E"- "!"!"B!8!N!8F3!!-%`%!!!&`"3#3"4a-!#)6!3!3!A!&!*!&('i!%KX"!"!"J!8 !N!8B%J!-'`%!%!'3!!8!N!8MRJ!1'`%!%!'J"3#3!`J!-6`!,KX"!"!"X!8!N!- )!$%5!#SE!3!3!F!&!*!$#!!`jJ!X'`%!%!(3"3#3!`J!+r)!)KX"!"!"i!8!N!8 MMJ!3'`%!%!(`"3#3!`J!()`!*KX"!"!#!!8!N!8FXJ!-'`%!%!)3"3#3"5#k!"! E!3!3!L!&!*!$#!!V`J!`'`%!%!)`"3#3!`J!+j!!!$)E!3!3!N!&!*!$#!!R8!! f'`%!%!*3"3#3!`J!)bi!(KX"!"!#B!8!N!8JUJ!3'`%!%!*`"3#3"6&U!$3E!3! 3!S!&!*!&(9`!$"X"!"!#N!!&!*!&'lJ!$KX"!"!#S!8!N!-)!#,k!$3E!3!3!V! &!*!$#!!GN!!!-KX"!"!!-!B!N!-)!"eS!#JE!3!3!%!'!*!$#!!EM!!X'`%!%!" 3"J#3!`J!'f)!+KX"!"!!B!B!N!85)!!3'`%!%!"`"J#3"4h'!#BE!3!3!)!'!*! &(H`!$"X"!"!!N!!'!*!&(IJ!$KX"!"!!S!B!N!-)!"i'!#SE!3!3!,!'!*!$#!! H-!!X'`%!%!$!"J#3!`J!(P`!,"X"!"!!d!B!N!-)!"k)!#BE!3!3!1!'!*!&(Ui !%"X"!"!!m!B!N!-)!"kq!$)E!3!3!3!'!*!&([!!$"X"!"!"%!B!N!8Hr!!3'`% !%!%J"J#3!`J!(``!+"X"!"!"-!B!N!-)!"md!#3E!3!3!8!'!*!&(eJ!%"X"!"! "8!B!N!-)!"pS!$!E!3!3!@!'!*!&(jJ!$"X"!"!"F!B!N!-)!"qN!%)E!3!3!B! '!*!&(qB!*"X"!"!"N!!'!*!&)!S!$"X"!"!"S!B!N!8J&J!-'`%!!!'`"J#3"5! L!#)E!3!3!E!'!*!$#!!J4!!Q%`%!%!(!"J#3"5"U!!i6!3!3!G!'!*!&)(J!*K- "!"!"i!B!N!8JRJ!-%`%!-!(`"J#3!`J!(,i!QK-!!"!#)!B!N!8K3J!-%`%!%!) `"J#3!`J!+h3!("-+!"!#3!B!N!8RKJ!-%`S!3!*3"J#3!`J!+T!!!,B6!3!3!T! !"J#3"5U%!!`6!3"J!U!'!*!$#!![`!%Q%`%!%!"`"`#3"5Mq!!`6!3#3!i!(!*! &+dB!)K-"!"!!J!F!N!-)!#MB!#B6!3!3!*!!"`#3!`J!+,`!("-"!"!!S!F!N!8 SRJ!H%`%!%!#`"`#3"5L'!"J6!3!3!-!(!*!&*T3!(K-"!"!!d!F!N!8QGJ!H%`% !%!$J"`#3"5CU!!`6!3#3!r!(!*!&+Q)!)K-"!%!!m!F!N!-)!#H8!2)6!!!J!6! (!*!$#!!E(J"%%`%!%!&3"`#3"5G%!!`6!3!J!@!(!*!$#!!QbJ"k%`#3!`'!"`# 3"5C)!#)6!3!3!B!(!*!&*Vi!$"-"!"!"N!!(!*!$#!!Q#!"!%`%!%!'J"`#3"5@ q!%S6!3!3!E!(!*!&*V)!$"-"!"!"`!F!N!-)!#@%!$S6!3!`!G!(!*!$#!!P+!" F%`%!%!)!"`#3"58F!!`6!3!J!K!(!*!$#!!NfJ"#%`%!)!)`"`#3"55%!&B6!3! 3!P!(!*!&*(J!$"X"!"!#B!F!N!-)!#4@!#)6!3!3!R!(!*!&*$i!'"-"!"!#J!F !N!8N-!!1%`%!%!+3!!F!N!8N)J!1%`%!%!+J"`#3"53@!!`6!3!3!V!(!*!&%9! !%K-"!"!!-!J!N!8MeJ!-%`%!%!"!#!#3"51Z!#J6!3!3!&!)!*!&&qi!*"-"!"! !B!J!N!8MJ!!1%`%!%!"`#!#3"50b!!i6!3!3!)!)!*!&)6)!$"-"!"!!N!!)!*! $#!!M8!!L%`%!%!#J#!#3"5%D!"J6!3!3!,!)!*!&)3`!$K-"!"!!`!J!N!8JrJ! 1%`%!%!$3#!#3"5$b!!`6!3!3!1!)!*!&%4`!%K-"!"!!m!J!N!80Z!!-%`%!%!% !#!#3"5$+!#J6!3!3!4!)!*!&&kJ!*"-"!"!")!J!N!843J!1%`%!%!%`#!#3"4% d!!i6!3!!!8!)!95X)!!Ac!!L%`%!%!&!#!#3"3fX!!`6!3"`!9!)!*!$#!!ZH!& )%`!!%!(!#!#3"3fJ!!`6!3!3!G!)!*!&$BB!'K-+!"!"i!J!N!80HJ!-%`S!J!( `#!#3!`J!,23"K"-"!"!#F!J!N!80EJ!-%`%!%!+!#!#3"3c-!"B6#J!3!T!!#!# 3"3c!!!`6#J!`!U!)!*!$#!!3SJ"k%`%!%!"!#3#3"3bd!!`6!3"!!&!*!*!$#!! L-J$)%`!!%!#3!!N!N!8-U!!-%`%!-!#J#3#3!`J!$1i!J"-"!"!!d!N!N!8-R!! -%`%!%!$J#3&8R#J!$()!+K-"!"!!m!N"9+3J!!CQ!!`6!3!J!3!*!95m+!!-+!" +%`%!%!%J#3&8c#!!!LJ!$"-"!&!"-!N"90`S!#&1!136!3!3!B!*!96X)!!#(!! -%`%!!!'3!!N"933J!#2L!#)6!3!3!C!!#3&8Q#J!#1)!&"-+!"!"S!N"9*!!)!! )eJ!-%`S!F!'`#3&8L#J!+3S"8K-"!"!#)!N"9)!J!!M+!!`6!3!`!M!*!96%+!! 4Q!#)%`%!%!*J#3&8Y#!!#,i!$"-"!"!#F!N"9'`S!!DL!"J6#J!3!S!*!968)!! 'PJ!-%`S!8!+3!!N"9'JS!!I%!2S6!3!3!&!+!96m!!!'LJ!-%`%!%!"J#J#3"3C k!"!6!3!!!JJ!N!-)!!!#0!#3!`)!!!AL!*!$#J!!"R)!N!-)!!!'ZJ#3!`3!!!M f!*!$#J!!$F3!N!-#!!!4,J#3!`B!!")`!*!$#J!!'mB!N!-#!!!G@!#3!`3!!"h #!*!$"!!!)6i!N!-%!!!M6!#3!`3!!#1X!*!$!J!!*"!!N!-'!!!RNJ#3!`)!!#T F!*!$"J!!+fJ!N!--!!"5,J!"6!#[*!!!!3#3!`+D!!!"QJ#3!ei*C'-ZE!P*C'9 KBh4I9em0#@4M,Q`*5@PZ8f0bEfaI$3PNBbjX#8PNEe0MFQpXA`d*C'-ZE!PNEf9 c6Qpd8Pm0#@4M,Q`*C'pPFdj[G&*I$3PNBbjX#@4[CA01Eh45A`d*Bh0PC`d*C(0 PC`d*C(-*-!d*F(9LE'PM#8P849G*6Pp8A`e*9%9A58jI9&mk$3PNBbjX#@4[CA0 1Eh45A`d*C'-ZE!PNEf9c6Qpd8Pm0#@4M,Q`*5A"bD@jdAdpI$3PNBbjX#8PTEQP dAe4&A`d*C'-ZE!P*C(*KCepA59m0#@4M,Q`*5@eKG'0SAeGI$3N!N!-J,L`l*!! !d!!!,rpJ)%&0!#"363!k!*!+!3!!!8`'8h9ZC'&j!*!*"Ne[EQ4KH3#3#3G8G@9 cC'&j!*!)#9GPC'jPFf4KH3#3"JK8D(9bFf4KH3#3"`C'FQPNBAN!N!N)8f&dGA* NBAN!N!F(5Q&ZG@&bH3#3#!K'C@*bG@&bH3#3"`90BA*MD!#3#J9"F(*TE!#3#J0 0BAN!N!`%5R9ZC3#3#`4+G@aj!*!,"N&eCh9cG!#3#3P6CA"dC@eLCA)!N!B(6f0 dEf*PFJ#3#!K1EhCPE@*PFJ#3"`K%C@0PE@*PFJ#3"rrr!!-!N!3X)!!!)!#3!b` J!*!(!8je!*!$%!mJCA4ZFQpKDA0NE'KMCR!!N!-1!!3!N!-$!!)!"!3r&`8!!!% !N!-#QJ!!!CS!N!0H!!$-(!#B!*!$(!"H!!&*6P4-!!%!%P088L!!!3!U!!(rrb! !!#3!N!Errb!!N!F$)Irr!!!"L!!"9(!#[2rr!!!"G!#3"'l8!: SHAR_EOF if test -f 'demo.obi' then echo shar: over-writing existing file "'demo.obi'" fi cat << \SHAR_EOF > 'demo.obi' /* * This is the OBJECT class. Its the root of * all objects. */ /*< class OBJECT >*/ /*< super NULL >*/ /*< defines >*/ char *malloc(); /*< variables class >*/ /*< variables instance >*/ /*< methods class >*/ /* * Dynamically create a new object. */ object Generic * new() { object Generic *ptr; /* get memory for the requested object */ ptr = (object Generic *) malloc(self.size); /* make the memory into and object */ objectify => self(ptr); return ptr; } /* * Convert memory into a requested Instance object. */ objectify(ptr) object Generic *ptr; { ptr->classType = self.classType; ptr->superType = self.superType; ptr->size = self.size; ptr->funcTbl = InstTbl; } /*< methods instance >*/ /* None. */ /*< class TEST >*/ /*< super OBJECT >*/ /*< defines >*/ /*< variables class >*/ /*< variables instance int value; >*/ /*< methods instance >*/ /* * Print the value in the current instance object. */ print() { printf(" %d\n", self.value); } /* * Set the Instance variable value. */ set(value) int value; { self.value = value; } /* * Returns the Instance variable value in the * current instance object. */ view() { return self.value; } %%%% /* start C code */ main() { /* * Remember, test1 is a pointer to ans object and * therefore has no actual storage allocation for it * while test2 has storage for an object already * allocated and ready to use. */ object TEST *test1, test2; /* * The message "new" is sent to the Class object * "TEST" which dynamically creates a new instance * object for the Class TEST (it used the method * "new" from it's superclass OBJECT). Notice the * return value is cast into the desired type. */ test1 = (object TEST *) new => TEST(); /* * The message "objectify" sent to the Class object * "TEST" with a pointer to storage large enough to * hold an instance object of TEST Class, turns the * raw memory into an instance object of type TEST. */ objectify => TEST(&test2); /* * All references to an object in a message must refer * to the object itself. So in the case where you have * a pointer to an object the pointer must be dereferenced. */ set => *test1(12); /* * Since this is the object (not a pointer to one) * no dereference is necessary. */ set => test2(13); printf("test1 "); print => *test1(); printf("test2 "); print => test2(); /* * This is to show what happens when you send a message * to an object that it doesn't know about. In this case * I will send the Class method message "new" to an instance * object. */ new => *test1(); } /* * This function is executed when a message is sent * to an object that it doesn't know about. */ doesNotRespond(obj, meth) object Generic *obj; int meth; { /* DEBUG is set by the -d flag */ #ifdef DEBUG printf("object \"%s\" doesn't respond to \"%s\" commmand\n", className[obj->classType], methName[meth]); #else printf("object %x does not respond\n", obj->classType); #endif exit(); } SHAR_EOF if test -f 'makefile' then echo shar: over-writing existing file "'makefile'" fi cat << \SHAR_EOF > 'makefile' demo: demo.o ln -o demo demo.o -lc demo.c: demo.obi obi -d demo.obi demo.o: demo.c cc -a demo.c as -s -ZAP demo.asm SHAR_EOF # End of shell archive exit 0