[clean-list] File Reader Combinators

Erik Zuurbier F.S.A.Zuurbier@inter.nl.net
Sun, 26 Aug 2001 11:42:14 +0100


--============_-1213299856==_============
Content-Type: text/plain; charset="us-ascii"

Fabien,

I dug up my File Reader Combinators. The file TryFileCombinators contains
some start-rules to experiment. I hope that the comments in the sources are
clear enough.

The sources refer to parser combinators. I have parser combinators that do
extensive error reporting. I think Pieter Koopman is/was working on those
to, but I guess he'll base them on his continuation passing parsers, for
greater speed and smaller memory usage.

You said you usually read in a file as a lazy list and then apply parsers.
I once had a problem with that. I tried to read a file with sfopen, and
then later wanted to open the same file for writing the updated version of
what I had read. That did not work - rightfully so - because the file was
still open and sfopen has no sfclose. The Clean-team pointed that out to
me. Since then I usually open for reading with fopen and skip the lazy list
idea.

Regards Erik Zuurbier

--============_-1213299856==_============
Content-Type: application/mac-binhex40; name="DerivedReaders.dcl"
Content-Disposition: attachment; filename="DerivedReaders.dcl"

(This file must be converted with BinHex 4.0)

:%N4PFQPfC@45C@&NCA*c,Q4ME!"849K8-e"563%!!!!#`!!!!!!qKQ4PCQPZDA4
TEfiJE@pNG@aP)%4PFQPfC@45C@&NCA*c$@PYF'pbG#"6G'4&ERBX)%CTE'9$Efe
LD@jKG'pbF`d0CR*PB@46D'pbG%PZG#!k1L!S4A*b4L"PFR*[FLNJ,6iJ4QPXC9*
PB@4PFL"*ER3JCA*bEh)0$@CbC@&N9Q&b5@jd)$Sk)#K&FR*')'9bFQpb+5!Y2L"
'D@aP8Q9KC'9b)%PZG#"PFR*[FJd01MSJ8h4bD@jR4A*bEh)JCA*bEh)*23PlFfK
[FR4*ER4&FR*[FJNk1L"&FR*')'9bFQpb$3N*#3N*#3NXE@&i6'9ZCh4S#3Nk1L"
*ER30#3N*#3N*#5aXC@jRG'K&FR*[FJNk1L"*ER3J5@jd)#dq)%9bFNBJCA*bEh)
0#3N*#3N*#5abC@&N4A*bEh)*#6Sk)%9bFNBJCA*bEh*p$3eQFQ9KC&CKFP0dFQP
ZCb!k1L!K+&0dFQPZCd9bFQpb)'9bFQpb+5!Y2L"'D@aP8Q9KC'9b)&0dFQPZCb"
PFR*[FJd0CR*PB@4-DA0d)$Sk)#%S3fpZFd9bFQpb)%0SBA)JCA*bEh)T)#K'D@a
P8Q9KC'9b)'PdC@dJCA*bEh)T)#dq)%CTE'95C@&NCA)J@fPdC@eG)'9bFQpb$3N
*#3N[,b"bC@&N)'%JE'PcG#"[CL"PE'9YC@jdFb`JBQ&cC@3JEfiJ*f0[ER0dFR9
MG'pbFbFJ*d-R)#KMEfjc+5"KEQ3J*diR)#KZD@`T$3eQGh*TG'9-DA0d)$Sk)#&
EB9dJ+'%J+NCTE'8J,6iJ+NCTE'8T)#T'D@aP)#dq)#T'D@aP$3eQGh*TG'9@BA*
*ER3J1MSJ)8PZG#!U4QPXC5!Y2L!U4QPXC3d*#3eQGh*TG'9@BA*6G(*TEQFJ1MS
J)90dFQPZCb!U4QPXC5!Y2L!U4QPXC3d0#,`!!!:
--============_-1213299856==_============
Content-Type: application/mac-binhex40; name="DerivedReaders.icl"
Content-Disposition: attachment; filename="DerivedReaders.icl"

(This file must be converted with BinHex 4.0)

:%N4PFQPfC@45C@&NCA*c,QPME!"849K8-e"563%!!!!)R!!!!!#bTfPYF'aPE@9
ZG'&dD@pZ)'e[C(9XC5"%CA*TGQ9N8Q9KC'9bF`eTEA"[FR3J8h4N4@jf,#"'D@a
P3fpYBQPZBA4[FR-0$@CbC@&N8fK[FR4*ER3J1MSJ+%9bFNBJCA*bEh)T)#dq)%C
TE'95C@&NCA)J5@jd)'9bFQpb$@CbC@&N8fK[FR4*ER3JCA*bEh)J25"QFQ9KC%0
SBA)JCA*bEh)J3$iq)'CbEfe$D'&b$3d[,b"cC@8JG'KP)'0[E@ePER3JBA3JCRG
bDA4P9Q&b5@jd)'*PE'ph$@CbC@&N9Q&b5@jd)$Sk)#K&FR*')'9bFQpb+5!Y2L"
'D@aP8Q9KC'9b)%PZG#"PFR*[FJeQFQ9KC&CKFNPZG#"P)$dJ+'CbC@&N8fK[FR4
*ER3JC5NJ26iq)#KQFQ9KC&*PFh4*ER3JC5N0GfKPFQ8*CR*PB@45CA0d5@jd)$S
k)#K&FR*')'9bFQpb+5"*ER3J,6iJ4QPXC9*PB@4PFL"*ER3JCA*bEh)0#3PQFQ9
KC&*PFh4*ER3JC5"T)!d*#3N*#A`JD5!m)$)e03Np)(TPFQp5C@&NCA)JD3d*#3N
*#6dJ-b!U2MiJCR*PB@46D'pbG%PZG#"P)%!q2L"KBf0e5@jd)$!0$@&MBh9*ER3
JB@0MG5"EA3N*25"KBf0e$@&MBh9*ER3JB@0MG5"EB6TKFed*25"KBf0e5@jd)#K
KBf0e)$`m)$JJ+b"K+5"KFb!0$6Sk)&0dFQPZCd9bFQpb)'9bFQpb#6d*Hh0SEh*
d5@jd4A*bEh)*1MSJ4A*b4L"PFR*[FJd*#3N*#3N*,'eKH%aPEQGdD!N*1MSJ5@j
d$3N*#3N*#3NXE'9ZCh4S4A*bEh)*1MSJ5@jd)%PZG#!Y2L"&FR*')'9bFQpb$3N
*#3N*#3NXFQ9KC%9bFQpb#3Nk1L"&FR*')'9bFQpbI3d0,bmJFf9P)'&XFfmJCRG
bDA4P9Q&cG&0dFQPZCb"LC@a[G`eQFQ9KC&CKFP0dFQPZCb!k1L!K+&0dFQPZCd9
bFQpb)'9bFQpb+5!Y2L"'D@aP8Q9KC'9b)&0dFQPZCb"PFR*[FJeQFQ9KC&CKFP0
dFQPZCb"lFfK[FR4*ER4&FR*[FLaYBAK-C@jRG'JXE'9ZCh4S4A*bEh)XFQ9KC%9
bFQpbI3d*25!S+'CbC@&N9Q&b5@jd)(0SEh*d5@jd4A*bEh)T)$mq2Jd*#5KFD5!
Y2L"T2$eYBAK-C@jRG'JXA'NJ,6iJE'9ZCh4S4A*bEh)JD5"YBAK-C@jRG'JT+3d
*)#!p2MiJCR*PB@46G(*TEQFJFQ9KC%9bFQpb$3N*#3N*$@CbC@&N6'PcG#!k1L!
K+%0[ER0&FR*[FL"$D'&b)'9bFQpb+5!S4QPXC9*PB@4PFL"TG'9Y)'9bFQpb+5!
Y2L"'D@aP8Q9KC'9b)&YTG'9YA5"PFR*[FJeQFQ9KC%aTFh3JBf8JCR*PB@4&E'9
YC@jd$3Np)#KQFQ9KC%0SBA)XBf8T)(`q2JPE+#G$*baQFQ9KC%9XC@ePER3J1Mi
q)'CbC@&N6'PcG#"MC5"QFQ9KC%9XC@ePER3T$3N*#3N*#3NX+#G1*bakCA*[8Q9
KC'9b)&YG+9d0$5m[)(4SDA-JDA-JG'KP)'&MBfpYF'&ZH@PZCb"hFQPdCA)JCQp
b)(4SC5"KBQpfC5"QFQ9KC%aTFh3JBfpYBQPZBA4[FLi0CRGbDA4P6'PcG#!k1L!
K@f&G)#KK)#T'D@aP)#dq)#T'D@aP+5!U4QPXC5!Y2L!U4QPXC3eQGh*TG'9-DA0
d)&YK1Q&cA5"hFQPdC5"Q$3NM)'BJ25"Q)$`m2#!R3bF0#5-JCL!p)(GbDA4P)'%
JCJd*25"QGh*TG'9-DA0d)'&c)(GbDA4P)'B0CRGbDA4P6'PcG#"EA5"I)'BJ25"
Q)$`m2#!R6LFJ$3d[+JPdD'Pc)'Pc)(4SC5"KBf0[EA"KERPTEQFJGh*TG'9b)'C
[FL"dD'8JB@*[GQ8JCR*PB@4@BA**ER3JBfpYBQPZBA4[FLiJ$3PdD'8JD@4PB5"
TFb"dD'&d)'e[Fh3JD@jdC@GPFR-JBA*P)(0YB@aX)'&ZC#"hD@aX)(4KDf8JGA!
JEfjXH5"[EQ8JBRPdC5"[EL"dD'8JCQPXC5`0#@*TCb"ZG@eLCA*c)(GTE'`JG'&
VC5"eF#"dD(*PC5"LHA4PFbiJG'KTFb"QG@jMG'P[EL"dD'9bC@C[FQ8JF(*[GQP
NCA-JCQpb)'%JFfPYF'aP$3NSB@jN)'e[C'9cG#NJBfpYF(*PFh0TEfiJEfBJER9
YBQ9bFb!U,`eQGh*TG'9@BA**ER3J1MSJ)8PZG#!U4QPXC5!Y2L!U4QPXC3eQGh*
TG'9@BA**ER3JD5"Q$3Pm)'NJ2#!`#3N*25"KBQpbG#!LCRGbDA4P9Q&b5@jd)'0
KE'aPC#"hDA4S)'jPCf&dDACP)'jeE@*PFL)0#A`JD5!m)$)e03N*25"Q)$`m2#"
dEd0SBA)JD3d*I#"T)$`J+$%J2$`J-M3T#6dJCL!m2$`J+(4[3fKKFL!b068T)$`
m2#"M-b!m2$`JBc)J2$`m)'-a$3N*#3N*25"KBQpbG#!LCRGbDA4P9Q&b5@jd)'0
KE'aPC#"hDA4S)'jeE@*PFL"PFA9KE#"dEb"[FL"RFQ9KG'9b)(4SB@iJ-Pib0#i
L$AGSCA*P#9YM-5aM-LaM-cTIA6dJBfpZGL"T$3N*BfpZGL"T#3Np)&YdEd0SBA)
J+'NJBQPdB@jN)$)e05NkBfpZGL!SD6iq1#PG$3N*$@ChFQPdC9CKFP0dFQPZCb!
k1L!K8h4bD@jR)#T'D@aP)#dq)#T'D@aP$@ChFQPdC9CKFP0dFQPZCb"c)'BJ25"
QGh*TG'9@BA**ER3J+(0THQ8JFbNJCL!m2$`JF`d0$3N*#3N06ii!!!:
--============_-1213299856==_============
Content-Type: application/mac-binhex40; name="ErrorMessages.dcl"
Content-Disposition: attachment; filename="ErrorMessages.dcl"

(This file must be converted with BinHex 4.0)

:%89bFQpb6@9cFf&RCA-ZC'0X!&4&@&3c8&*0!3!!!!$4!!!!!%GRC'9QD@jTG'P
[EL"YEf4eE'8J4A*bEh*0CA0cB@GPF`eTEA"[FR3J4QPXC80[E@*TEQ&dEh*c,#"
6G'4&ERBX)%4PFQPfC@45C@&NCA*c$3e[F'9Z4A*bEh)J1MSJ4A*b4L"6G(*TEQF
0#3N0Bfa[Ff9&FR*[FL!k1L"&FR*')&0dFQPZC`d*#3eXDA0d4A*bEh)J1MSJ3fp
ZFd9bFQpb)%0SBA)J8h4bD@jR$3ecG(*TEQG&FR*[FL!k1L"6G(*TEQG&FR*[FL"
6G(*TEQF0$3e1XJ!!:
--============_-1213299856==_============
Content-Type: application/mac-binhex40; name="ErrorMessages.icl"
Content-Disposition: attachment; filename="ErrorMessages.icl"

(This file must be converted with BinHex 4.0)

:%89bFQpb6@9cFf&RCA-ZD@0X!&4&@&3c8&*0!3!!!!1f!!!!!'1eD@e`E'9YC@j
dBA4TEfiJE@pNG@aP)%9bFQpb6@9cFf&RCA-0D@e`Eh*d)%CTE'9$EfeLD@jKG'p
bFb`J8h4N4@jf,#"%CA*TGQ9N8Q9KC'9bF`d0Eh"PEN9bFQpb)$Sk)%9bFNBJ8h4
bD@jR$@p`C@j&FR*[FJNp)&aQEL!Y2L!L4QPXC5"F)L)V+bYQELXV+b*F)L"MEh9
XC#"ZEh3JBQ8JEh"PEQ9N)Jd*#3eME'pcC89bFQpb)$Sk)%9bFNBJ8h4bD@jR$@0
XEh0P4A*bEh)*25"FCQiJ,6iJ)NCTE'8JA#)L+bXVCQiV+bXLA#)JBfpeE'3JEQp
d)'*P)'0XEh0PC#)0$3N*$@aTFh4&FR*[FL!k1L"$Efjc4A*bEh)J3fKKFL"6G(*
TEQF0E'PcG%9bFQpb)$dJHh*PB@4&FR*[FJN*#6dJA'CZ)#dq$3N*#3NL6'PcG#e
MEfjcG(*eBh4[FL!S3b"[FL"1+5"MEh9XC#"ZEh3JBQ8JFQ9KC#"QFQpY)'CTE'8
JA#)L$3N*#3NV+bYQELXV+b*F)L)0#3N*,(GbEfjR3fpZFh4bG@0dEh)*25"FBfp
ZFb"QEL!Y2Jd*#3N*)P9ZDfj[GfiJE'PcG#eMEfjcG(*eBh4[FL"F*b)V+bYQFQp
Y3fKKFL"MEfjc$3N*#3NV+bXLA#FJFQ9KC#"QFQpY)'CTE'8JA#)L+bXVCQiV+bX
LA#)L$3N*#Ad0$A0dFQPZCd9bFQpb)$Sk)&0dFQPZCd9bFQpb)&0dFQPZC`ecG(*
TEQG&FR*[FL!p$3PlFfK[FR4*ER4&FR*[FJNp)&aQEL!Y2Jd*#5*6D'pbG#"TER4
PCf9b)'0[G@aN)'j[G#"LC5"bC@&N)'CbEfdJCQPXC5"F)L)V+bYQELXV+b*F)L)
0#5aYBAK-C@jRG'J*#6dJ06!`$3NXE'9ZCh4S4A*bEh)*25"FFQ9KC'`JE@&i)'C
Z)#dq$3N*)P0dFQPZCb"XC@jRG'JJ+#)V+bYdEe0dFQPZCb"bC@&NE#!V+bXL+5"
bC@&N)'CbEfdJCQPXC5"F)L)V+bYQELXV+`d*#5*F)L"RFQ9KG'9b)(4SB@iJE@&
iD@eeE5"KE'a[Gf9N)'aPEQGdD#!S)LXV+h4[8h4bD@jR)'eKH#!V+bXJ)LNL$3N
XFQ9KC%9bFQpb#3Np)&aQEL!Y2Jd*#5*6G(*TEQFJBfpeE'3JEQpd)'*P)(*PB@3
JCR*[E5"QD@aP)&`L)LXV+fCZ+bXV)P`L)Jd*I3f[l3!!:
--============_-1213299856==_============
Content-Type: application/mac-binhex40; name="FileCombinators.dcl"
Content-Disposition: attachment; filename="FileCombinators.dcl"

(This file must be converted with BinHex 4.0)

:%dCTE'9$EfeLD@jKG'pbFbjNBf`!9%9B9$038Nd"!!!!#3B!!!!!45GNC@CTEQP
dD@pZ)'e[C(9XC5"'D@aP3fpYBQPZBA4[FR-0D@e`Eh*d)&0dC%9ZGJd0,bmJ9&P
349-k$3dk1L"'D@aP8Q9KC'9b)'PdC@dJCA*bEh)0$6Sk)%9bFL"PFR*[FL"NBA4
K#6dJ4A*b)'9bFQpb)(`J4'&dB5"NBA4K$3dk1L"&FR*'#@9bFQpb)$Sp25"6G(*
TEQFJ,6iJCA*bEh)0$6Sk)%0[ER0&FR*[FL"MEfjc)'9bFQpb)$d0#3PlFQ9KC%9
bFQpb#3N*1MSJ4A*b4L"PFR*[FJd*#5ahFQpZCd0[ER0dFR9MG'pb#6Sk)'0[ER-
J,6iJ4A*b4L"PFR*[FRd0$6Sk)%0SEfPMC89bFQpb)'9bFQpb)$d*Hh*PB@4&FR*
[FJNk1L"&FR*')'9bFQpb$3N*#3N*#5aZEdeKG'0S#6Sk)%9bFNBJCA*bEh*p$3d
[,b""3e4*9N&845"")%CTE'95C@&NCA)k$3e5C@&N)$Sk)#&6G(*TEQFJ+%9bFNB
JCA*bEh)T)#K&FR*')'9bFQpb+5!S4QPXC9*PB@4PFL"NBA4K)'9bFQpb+5!K+NC
TE'9c$3N*,6iJ+%9bFL"PFR*[FL"NBA4K,#T'D@aPFbN0$6Sk)#T'D@aP9d30$@C
2F'9Z)$Sk)#&6G(*TEQFJ+%9bFNBJCA*bEh)T)#%U4QPXCA-J,6iJ+%9bFL"PFR*
[FL"'D@aP9d3X+NCTE'9c+3d*$@C5C@&N)$Sk)#%S4QPXC9*PB@4PFL"TG'9Y)'9
bFQpb+5!K4QPXC9G%)#dq)#K&FR)JCA*bEh)JDA4PE5`K4QPXC9G%+3d0CN0XEh0
P)$Sk)#&'D@aP9d3J+%9bFNBJCA*bEh)T)#%U4QPXCA-J,6iJ+%9bFL"PFR*[FL"
NBA4K,#!U4QPXCA-T$3d0,bmJ3dp03NP145"'D@aP8Q9KC'9bFcS0$5Jr2MiT)'P
ZCQPiE#!d)$Sk)#K'D@aP8Q9KC'9b)'PdC@dJCA*bEh)T)#%SDA4PE5!Y2L"#Efp
X,'PdC@dJ,6iJ4A*b4L"PFR*[FLN0#3N*#5dq)#K'D@aP8Q9KC'9b)'PdC@dJCA*
bEh)T$3d[,b"bC@&N)'%J*f0[ER0dFR9MG'pb*b"KEQ3JBQ&cC@3JEfiJG'KP)'p
eG'0[E@8X)(0PE'9MG#"K)(*PB@4PFL"QFQpY)(4SC5"XDA0d$5Km2MiT)'PZCQP
iE#!k1L!K+#K&FR*')'9bFQpb+5!Y2L"'D@aP8Q9KC'9b)'0[ER-JCA*bEh)X)80
[ER0&FR*[FL"MEfjc)'9bFQpb+3d*#3N*@bKMEfjc,%CTE'95C@&NCA)JDA4PE5"
PFR*[FLPG$3N*#3NY2L!S4QPXC9*PB@4PFL"TG'9Y)'9bFQpb+3Pm)$dp)'0[ER-
0$5m[)'eKDf8JB5"MD'pTBf8JEh9d)'pQ)'%JE'PcG#"[CL"'D@aP8Q9KC'9bFb`
JBQ&cC@3JEfiJB5"dCA0d)'pZ)'&Z)'PdC@dJFQ9KC$S0+#%q2LNJD@jQDAKX)$S
k)#%S+%9bFNBJCA*bEh)T)#dq)%CTE'95C@&NCA)JG'9cG#"PFR*[FL`K3fK[D@0
P4A*bEh)JCA*bEh)T$3N*#3PE+(4PFh3J,6iJ3Qp[E#adCA0d)#dq)%CTE'95C@&
NCA)JDA4PE5"PFR*[FLPG$3N*#3NY2L!S4QPXC9*PB@4PFL"TG'9Y)'9bFQpb+3d
0,bmJF(9dFb"dGfmJBfpZFf9MGA4TGQ8JDA4PEA-JFQ9KC#"TEL"K)(4eF'aP$5J
Q2MiT)'PZCQPiFL!e)$Sk)#K'D@aP8Q9KC'9b)'PdC@da)'9bFQpb+5!S4QPXC9*
PB@4PFL"TG'9Y-L"PFR*[FLN0#3N*#5dq)#K'D@aP8Q9KC'9b)#KTG'9Y-5aTG'9
Y-LNJCA*bEh)T$3N*#3d[,b"`GA4c)'%JER9YBQ9b)'pQ)'0[ER0PBh9dDACP)'P
dC@ec)(*PB@3JD@iJB5"XDA0d$5Jk2MiT)'PZCQPiFL!e)$Sk)#K'D@aP8Q9KC'9
b)'PdC@dJCA*bEh)T)#K'D@aP8Q9KC'9b)&YTG'9YA5"PFR*[FLN0#3N*#5dq)#K
'D@aP8Q9KC'9b)&YTG'9YA5"PFR*[FLN0$5m[)'e[EQ&ND@-JFQ9KC'9b#3N*$5J
p2MiT)'PZCQPiFL!e)$Sk)#K'D@aP8Q9KC'9b)'PdC@da)'9bFQpb+5!SDA4PE6%
J,6iJ+%CTE'95C@&NCA)JDA4PE6)JCA*bEh)T+3d*#3N*,6iJ+%CTE'95C@&NCA)
JDA4PE6)JCA*bEh)T$3N*#3d[,b"88N&18dC28NdJ4QPXC9*PB@4PFR-k$3d[,b"
bC@&N)'%JCfPfC@iJER9YBQ9b)'pQ)'PdC@ec$5JU2MiT)'PZCQPiE#!k1L!K5@j
d)#K'D@aP8Q9KC'9b)'PdC@dJCA*bEh)T)#dq)#K'D@aP8Q9KC'9b)&YTG'9YA5"
PFR*[FLN0#3N0,bmJBA"`E(NJB5"QG@jMG'P[EL"dEb"KEL"TG'9Y)(*PB@30+%!
q2LNJD@jQDAKX)$3J1MSJ+%CTE'95C@&NCA)JDA4PE6%JCA*bEh)T)#KTG'9Y-5!
Y2L"TG'9Y-LN0#3N*#5dq)#K'D@aP8Q9KC'9b)'PdC@db)'9bFQpb+3d*#3N0,bm
J3N&658-J4QPXC9*PB@4PFR-k$3eQFQ9KC%0SBA)J1MSJ+%9bFNBJCA*bEh)T)#d
q)%CTE'95C@&NCA)J3fKKFL"PFR*[FJd0CR*PB@4*ER3J1MSJ+%9bFNBJCA*bEh)
T)#dq)%CTE'95C@&NCA)J5@jd)'9bFQpb$3N*#3N*#3eQFQ9KC&*PB@`J1MSJ+%9
bFNBJCA*bEh)T)#dq)%CTE'95C@&NCA)J8Q9KE#"PFR*[FJd0CR*PB@46G(*TEQF
J1MSJ+%9bFNBJCA*bEh)T)%PZG#!Y2L"'D@aP8Q9KC'9b)&0dFQPZCb"PFR*[FJd
0HQ9bEe*PB@4PFL!k1L"TG'9Y)#dq)%CTE'95C@&NCA)JDA4PE5"PFR*[FJd0$3h
hF3!!:
--============_-1213299856==_============
Content-Type: application/mac-binhex40; name="FileCombinators.icl"
Content-Disposition: attachment; filename="FileCombinators.icl"

(This file must be converted with BinHex 4.0)

:%dCTE'9$EfeLD@jKG'pbFbjTBf`!9%9B9$038Nd"!!!!(`F!!!!!l#PTEA"XC@e
PER4KG'P[EL"YEf4eE'8J4QPXC80[E@*TEQ&dEh*c$@PYF'pbG#"6G'4&ERB0$5m
U#8TeFh3JBA-JD@iJEANJF'&bFf9b)'0[E@*TEQ&dEh*c,#"PFR*[FL"YCA0cB@G
PFb"SBACP)(4[)'GPG#"YG@adDA"XC5!RE'9fC@ac*bi0#94SC5"cEfaeG'P[EL"
hD@aX)'*P)(4SBA3JEQpd)(4SC5"PFR*[FL"TG(0PE'BJDA-JCAK`E'PMDA4XH5"
bCA"[FR4PC#`0#A*KG'KPFL"dD'8JFf9d)'pQ)'9iF'9MG'9N)#GREfpN*b"dD'P
ZCh-Z+Lm0$5mU#9GTE'`J55"SBACP)(4[)'0SB@jRC5"dD'8JG(P`C5`JD@iJEh*
NCA)JG'mJCf9d)(*TC#"[CL"KE'`JG'KP)(9ZC'9Q*h-0#@&c)'C[E'a[Gh-r$6S
k)%CTE'95C@&NCA*J)'PdC@dJCA*bEh)J1Mdp)#T'D@aP)#dq)#K&FR)J+%9bFNB
JCA*bEh)T)'PdC@dX+NCTE'8T$3NU,`d0#3d[+JP"FQ8JCP"[FfPdD@pZ)'9Z)'C
6C@9V)(*PB@aXH5"ZC@0PFh0KFRNr)%eKH@*P)'&XFfmJGfPdD'PZ)&*PB@3X)'j
[G#"UGA0d$3PhDA4SD@iJCP*PB@3Z)#S[$3N0CP"[FfPdD@pZ)$Sk)%CTE'95C@&
NCA)J5@jd)'9bFQpb$@C3Eh0TG'P[EL!p)(*PB@30GfKPFQ8*FQ9KC#"Q$3N*#5-
J+("[FbaQ+3Np)'C`Eh0TG'P[EL"Q$3N*#6dJ+%j[G'KTEQFXF'pc,'BT$3N*#3d
k1L"6C@9V6@pNC3Np)%CbEfe6G'&bG#"m)%CbEfe)CA*P)(`J4R*[E89ZC!d0CP0
PC@XJ1MSJ5@jd)&0PC@Y0Ef4P)#K&FR*')'9bFQpb+5!S4QPXC9*PB@4PFL"TG'9
Y)'9bFQpb+5!Y2L"'D@aP8Q9KC'9b)'PdC@dJCA*bEh)0CP0PC@XJD5"YEf4P)'9
bFL"bC@&N-5!p)(*PB@3b$AGSCA*P#A*PB@3b)'B0#3N*)b!SEfXXCLN*25"QFf9
PDb"Q)'NJ+'e[C'91Eb"YEf4P+3d*#3Pm)'j[G#"[D`Np)#K+GA0d)'9bFLaeEQ4
PCLaQ+3d*#3Np)(*PB@3a)'B0$3N*E@pNC8j[)%CbEfe6G'&bG!Np)%C6C@9V8f9
d$3N*E@pNC8j[)%CbEfe)CA*P#3Np)%C6C@9V3h9b$3N*E@pNC8j[)%CbEfe&EQ3
*#6dJ4P0PC@Y&EQ30$5m[)&4C8%961Jd01MSJ4QPXC9*PB@4PFL"TG'9Y)'9bFQp
b)$Sp25!S+NCTE'8J,6iJ+%eKH@*P)#K&FR*')'9bFQpb+5aTG'9Y,#T'D@aP+5N
0$6Sk)%9bFL"PFR*[FL"NBA4K#6dJ4A*b)'9bFQpb)(`J4'&dB5"NBA4K$3dk1L"
&FR*'#@9bFQpb)$Sp25"6G(*TEQFJ,6iJCA*bEh)0#5mU#94SC5"cG(*TEQFJDA-
JG'KP)'CTE'8JEQ&YC5iJ3R9d)(4SDA-JDA-JB5"fCA*j)'aTE@PdC@3JGf&j)'p
Q)'0[ERCPH@PZC`d*#A4SC5"MEfjdCAKd)'pQ)'&Z)'9bFQpb,L"*G#"hEh9XC#"
LC5"LCA4dCA)JD@BJB5"YEh*P)'GPEQ9bB@`JBA*RG@ePER30#3PhCA*P)(9cC@3
Z)&4SC5"KFQGeE@9ZG#"MEh9XC#"MEfjdB@PZ)(4SC5"QD@aP)'jKE@8X)'PdFb"
`BA4S,#"TG(-JCR9ZBh4TEfi0#3PhDA4SD@iJG'KP)("bEfGbB@dZ)%&XFfmX)(*
PB@4PFLeMEfeLD@jKG'pbFb"MEh9XC#"PH(4PEQ3JG'KP)'0[ER4PH(3JGfPdD!d
*#A"[FfPdD@pZD@jR)'PZCQpbE@&dD@pZ,L"8D'9bC@C[FQ8X)'aTDf8JGfPdD#"
`BA*cCA)YBfpYBQPZBA4[FR-JC'mJGfPdD#"bC@jKE@8X$3N*EfjP)'0[G@aN)'P
ZFf9bG#"K)'ePB@jTEQGQG@`JEQ&YC5"QEh)JB5"`BA*d)(4[)'*P)(*PB@3X)(0
eBfJJBA-J*h"PFR0[EL"NBA4K*`d*#@C[FL"K)("KFR3JG'KKG#"MEfjdB@PZFb"
K)("PFR0[ELGc)'jKE@8X)'&NC(*PFh-X)(0[BfPKE#"cC@0eFQPdH5"ZG@eLCA)
X$3N*E@&bDA4KE#"cG'&dGA-X)'*TFR4S)'4KG'8X)'*TFR4S)("XB@0P)'9dBbi
J5@BJF'9[F'aP)'KKGQ8JGQ&bD@peFb"bEfaPF`d*#@PZ)'%JCQPXC5`JEfjP)'0
[G@aN)'PZFf9bG#"bEfaP)'jKE@9c,#"cG@0S)'&c)#GNFQPfCA)R,#!RBf&b)'p
hEQ9b*b`0#3NRD@jcGA*KEQ0P)'0[ER4KBh3R,#!RF'pXD@0P)'pQCQPMCA)R,L"
$EfeLD@jKG'pbFb"dD'&d)'jKGQPRBA4P)(4SFQpeCfJ0#3PND@CQCA*PER3JF'p
cFfPLD@aTG'PPFb`JFh9MD#"KFb"m2MiJB@jN)#%q2L"MEh9XC#"YB@PZG'&TEL"
K)(4bB@0P)'pQ)(4SC@Pb$3N*BfK[D@0PFb"TEL"dD'8JBfpZG'9iG#iJ3fpYBQP
ZBA4[FR-JG'KKG#"`GA3JC'PQCQ9bC@jd)(*PFh9XG(-JG'pRCA4SCA)X$3N*Fh9
MD#"KFb!Q2MiX)$Sq2L`J26iq)'0[G@aN)'eKD@jdB@PZ)'aPGQ9XFb"TEL"dD'8
JBfpZG'9iG#iJ9'KP)("eFR"[Ff8k$3N*8f&j)(GP)'KKGQ8JB5"QD@aP)'jKE@9
N)%ej4QPXC5"MEfjdB@PZD@jR)'eKERNJG'KTEQGc,#"KE@pZCb"hD'PMD#"K)'a
TFh30#3PMB@aXC@3J6AP-DA0d,#"[CL"TG'9YFb"MEfjdB@PZD@jR)(4SFQ9P)'0
[ER0PBh9dDACP)(4SD@jRFb`JEfBJGfKTBfJJG'KP$3N*G'KTFQ3JDA-JB5"cG(*
TEQFZ)&4SC@iJFQ9KC'PZCb"dD'8JFh4bD@jR)'pQ)(4SC5"cDAKdD#"TG'9Y)'p
Q)(4SC5"XDA0d$3N*CQ&TE(-Z)&4SC@iJG'KP)'9bFQpb)'0[G@aN)(0KH6S0#3N
0#3P0H8CTE'8J6AP-DA0d)$BJ+&mX+&mX+LSU+5NJ#3NS+LSU)'PZC'PMBA4PFb"
dD'8JF'pcDA4TEfiJEfBJG'KP)'9bFQpb+5i0#3N0#3P*CL"dD'8JG'KTFQ3JC@a
PE@9ZG#"[CL"dD'8JE'PcG#"TG'9Y)'KKC#"LC@9Z)'GTGQ9Z)(4SC5"PH("XD@0
TG#"ZB@eP$3N**dej6Q&YC5FJG'KbEh9RD#"K)#GbC@jKE@8R)%CTE'95C@&NCA)
JG(*KER0QEh*Y,#"dD'8JCA*bEh)0#3PYCA0cB@GP)'0[G@aN)(0dBA*d)(GTG'J
k$3N*$3N*6AP'D@aP)%ej6'PcG#!f)%ej6Q&YC3d*#3d*#90[)(GSBA3JFfK[G@a
N)(4SC5"dHA"P)'pQ)(4SDA-JBfpZG'9iG#"LC6mJ5'ph)'0KEL"TG#"LC5"KGA4
[E@&dD@0KE'aj$3N*CAKdC@jNC@3JBRNJG'KP)'0[E@*TEQ&dEh*c,#"KEQ3JD'p
h)'0KEL"TG#"LC5"KGA4[E@&dD@0KE'aj)("bG@jPC#"LH3d*#A4SC5!RFQ9ZB@e
P*b"dFQ&ZFfC[FQePFMm0#3NU,b!0#3d01MSJ3fpZFd9bFQpb)'0[ER-JCA*bEh)
J23d*#AYbC@&N4A*bEh)*#3Nk1L"&FR*')'9bFQpb$3N*,(GbEfjR3fpZFh4bG@0
dEh)*1MSJBfpZFb!Y2L"&FR*')'9bFQpbI3d01MSJ3fK[D@0P4A*bEh)JCA*bEh)
J23PlFQ9KC%9bFQpb#6Sk)%9bFNBJCA*bEh)0#3N*#3N*,'j[6@&dBfJ*1MSJ4A*
b4L"PFR*[FRd0$5m[)%&$9%P@394&)%%J4QPXC9*PB@4PFMS0$9*PB@3J1MSJ)90
dFQPZCb!S4A*b4L"PFR*[FLNJ+%9bFNBJCA*bEh)T)#K'D@aP8Q9KC'9b)'4KG'%
JCA*bEh)T)#%U4QPXCA-0#3NY2L!S4A*b)'9bFQpb)'4KG'%X+NCTE'9c+3e5C@&
N)'CTE'91B@eP)'p`C@j&FR*[FL"ME'pcC89bFQpb)(*PB@3JCR-0#5-J+'pV,'B
XCR-T#3N*25"QEh"PEL"QD@aP6Q&YC5"'8Q9KC%4KG'%JCR-0#A`JEQpd)'pV#3N
*25!S4A*b)#K[F'9Z4A*bEh)JCQPXC8jKE@8T,'Cc+3d*)b!SCA*bEh)XC'&dB5a
Q+3Np)(*PB@3JCJd*)b!SEfXXCR-T#3N*25"QBfa[Ff8JCL"QF`d*25"MBA0P)'9
bFQpb)'pQ$3N*6QpdD'PZC`N*I#"ZEh3JEfX*,6iJ+%9bFL!SBfa[Ff9&FR*[FL"
QD@aP6Q&YC5NXCR-T$3N*#3N*#3N*,6iJ+%4KG'%JC'&dB5aQFbN0#3P+GA0d)'9
bFQpb#3N*#5dq)#K&FR)J+'9bFQpb)'CTE'91B@eP+5aQFbN0$6Sk)#T'D@aP9d3
*1Mdp)#K6G(*TEQFX)5T'D@aP+3d0CNp`C@iJ1MSJ)90dFQPZCb!S4A*b4L"PFR*
[FLNJ)5T'D@aPFb!Y2L!S4A*b)'9bFQpb)%CTE'9A4#`U4QPXCA-T$@C2F'9Z)'C
TE'91B@eP)'p`C@j&FR*[FL"QF`d*)b!SEfXXCLaQFbN*#3Np)'C[F'9Z)'CTE'9
1B@eP)%C5C@&N4'&dB5"QF`d*I#"ZEh3JEfX*#3Np)#K&FR)J+'p`C@j&FR*[FL"
QD@aP6Q&YC5NXCR-T$3Np)#K%BA4K)#KQD@aP6Q&YC5aQ+5aQFbN0#3eQ8Q9KC#!
k1L!K+%CTE'95C@&NCA)JDA4PE5"PFR*[FLNJ)8CTE'9A4#!Y2L!S4A*b)'9bFQp
b)'PdC@dX)8CTE'9A4#N0CP*PB@3JFQ9KC#!SCQPXC8jKE@8XCLN0#5-J+'8XDA4
PE5aQ+3Np)(*PB@3JCJd*)b"QGf3*#3Np)#KQD@aP6Q&YC5aQ+3d*25"MBA0P)'8
JEfB0#3P1Eh4SD@jR#3NY2L!S4'&dB5"TG'9Y,'ChC#N0#3P+GA0d)'9bFQpb#5d
q)#K&FR)J+'9bFQpb)'CTE'91B@eP+5aQGf3T$3eQ3fa[Ff8J1MSJ)8CTE'9A4#!
S4A*b4L"PFR*[FLNJ)5T'D@aPFb!Y2L!S4A*b)'9bFQpb)'4KG'%X)#T'D@aPFbN
0CN0XEh0P)#KQD@aP6Q&YC5aQ+5"ME'pcC89bFQpb)'Cc$3NM)#K[DbaQFbN*#3N
p)'CME'pcC5"Q)'Cc$3Pm)'j[G#"[D`N*#6dJ+%9bFL!SBfa[Ff9&FR*[FL"QD@a
P6Q&YC5NXCR-T$3Np)#K%BA4K)(9ZC'9Q,'Cc+3d01MSJ6@&jBQ8JB5!p)%TeFh3
JB5"m)%j[G'KTEQF0$@Pc6Np,)$Sk)#K0BAPLC5"K+5!Y2L"#EfpX$@Pc6Np,)%j
[G'KTEQF*25"'B@acC3eTFdj25b"I#3N*25"8FR9P$3d[,h*PB@3JB5"RDACPEL"
ZG@eLCA)JEfBJDA4PEA-0+#Sq2LNJD@jQDAKX)$Sk)#&*ER3J+%CTE'95C@&NCA)
JDA4PE5"PFR*[FLNJ,6iJ+%CTE'95C@&NCA)J@fPdC@eG)'9bFQpb+3dS+Miq+5"
T)(*PB@30#3Pm)'NJ2#!a)$dJHQ9bEe*PB@4PFL"EA3d*#6dJFQ9KC#!k2MiJ+#K
T,6%T)#Sq2L"bC@&N+3d*#3d[,b"bC@&N)'%J*f0[ER0dFR9MG'pb*b"KEQ3JBQ&
cC@3JEfiJG'KP)'peG'0[E@8X)(0PE'9MG#"K)(*PB@4PFL"QFQpY)(4SC5"XDA0
d$5Km2MiT)'PZCQPiE#!k1L!K+#K&FR*')'9bFQpb+5!Y2L"'D@aP8Q9KC'9b)'0
[ER-JCA*bEh)X)80[ER0&FR*[FL"MEfjc)'9bFQpb+3d*#3N*@bKMEfjc,%CTE'9
5C@&NCA)JDA4PE5"PFR*[FLPG$3N*#3NY2L!S4QPXC9*PB@4PFL"TG'9Y)'9bFQp
b+3Pm)$dp)'0[ER-0+(`q2LNJ+'0[ER-XHh*PB@4&FR*[FLahFQpZCd0[ER0dFR9
MG'pbI5NJE'PcG!d*#6dJBfpZFb"bC@&N4A*bEh)J26iq)(0PE'9MG#"hFQpZCd0
[ER0dFR9MG'pb)'aTFh30GfKPFQ8*Ff9XC@0d)$Sk)#KMEfjc)#dq)%9bFNBJCA*
bEh)T)&XSBfpZFba'D@aP8Q9KC'9b)'PdC@dJCA*bEh)TA5"MEfjc)#dq)%CTE'9
5C@&NCA)JDA4PE5"PFR*[FL"m)$dp)'0[ER-0#3PcC@aPBh3JC5"EA5"M#6dJA'B
J,6iJ+%TeFh3J+'8JBbNXG@jNC@BXCLN0#3PcC@aPBh3JC5"E+'0X,(*PB@3T1R*
PFh4G)'-0#3N*I#"ME#!p25"M#6dJFQ9KC!d*#3Np)(0PE'9MG#"P)(*PFh3JB`d
0,bmJG'9cG#"KEL"TG'9Y)(*PB@3X)'&ZC#"TER0PFR3JB@iJCA*bEh)JE@9cFf&
RC5"TCL"ZEh3JEfX0+$mq2LNJD@jQDAKX)$3J1MSJ+%CTE'95C@&NCA)JDA4PE5"
PFR*[FLNJ)5KTG'9Y)#dq)%*[Ef`XDA4PE5!Y2L"&FR*')'9bFQpb+3d*#3N*,6i
J+%CTE'95C@&NCA)JDA4PE5"PFR*[FLN0+$mq2LNJFQ9KC$%J+'0SC@0V,'9bFQp
b+5!p)(*PB@3b$AGSCA*P#A*PB@3b)'B0#3N*)b!SFQ9c26SSC5aTG'9Y,'BT+3N
*25"bC@&N-5"Q$3N*#A`JDA016dXJC5"mI#"MD'9MDb"TG'9Y#6dJFQ9c$3N*#6d
J+%TeFh3J+'9bFQpb)'PdC@dT,(9ZC'9Q,'BT$3N*#3d[+JPYB@YP)'%JBfK[D@0
P)'peG#"[CL"K)'aTFh3JEfBJ4QPXC9*PB@4PFR-X)'*KFf9N)'pZ)'%JG'9cG#"
[EL"KEL"TG'9Y)(*PB@3Z$3PdD'8JFf9MEfjN)'PdC@dJD@iJG'KP)(4eF'aP)&Y
dD'8JCQPbFh3JBA*RG@ePER3JEfBJ)6iqA5"`FQpfD@4PFb"QEh)JG'KP)'0KFf9
c$3PdD'&d)(*PB@4TEQFJG'KP)'CTFR0d)'PdC@dJE@&j)'G[)(GbEfjR,#"[FL"
dD'&d)'j[EQ8JEfBJG'KP)'aTFh3JDA4PEA-JE@&dBfKPFbi0#A4SDA-JE'&dG'9
b)'0[G@aN)'*P)'4bEh"`C@3JD@BJG'KP)'0[E@*TEQ&dEh)JDA-JFQ9NCA0TCfj
PC#"dEb"MEfjdB@PZ)'&Z$3PPH("XD@0TG#!REh4SCA*hDA0P*b"MBA0P,L!J+Lm
0+#%q2LNJD@jQDAKX)$Sk)#%S+%9bFNBJCA*bEh)T)#dq)%CTE'95C@&NCA)JG'9
cG#"PFR*[FL`K3fK[D@0P4A*bEh)JCA*bEh)T$3N*#3PE+(4PFh3J,6iJ3Qp[E#a
dCA0d)#dq)%CTE'95C@&NCA)JDA4PE5"PFR*[FLPG$3N*#3NY2L!S4QPXC9*PB@4
PFL"TG'9Y)'9bFQpb+3dS)6iq+5!SG'9cG#alFQ9KC%9bFQpb,'j[6@&dBfKp+5"
XDA0d$3N*25"dCA0d)(*PB@4&FR*[FL!p2MiJFf9XC@0d)'j[6@&dBfJJE'PcG!e
hD'9bC3PcC@aPBh3J1MSJ+%9bFNBJCA*bEh)T)&XSG'9cG#dq3Qp[E#adCA0d)#d
q)%CTE'95C@&NCA)JDA4PE5"PFR*[FLPG)(4PFh30#3N*#3NY2L"'D@aP8Q9KC'9
b)'PdC@dJCA*bEh)0#3PcC@aPBh3JEQp0BA4MD#"EA5"dCA0d#6dJA'BJ,6iJ+%T
eFh3JEQp0BA4MD#aeEQ4PCLaQ+3d*#A0PE'9MG#"ZEdeKG'0S)&XSBfKPBfXXFQ9
KC#NkFQ9cG&dJG'9cG!d*#3Pm)'0SC@0V)(4PFh3*25"bC@&N)(4PFh30#3N*25"
cC@aPBh3JEQp0BA4MD#"bCA0d)(4PFh30$5m[)'pbC'PZBA*j)#GKEQ3R)(GSCA*
P)(4SC5"bCA0eE(3JDA-JF(9d)'PZ)'%JG(9`E'8X)'9iF(*PFh0PC#"hDA4S)'e
[EQ&ND@-JFQ9KC'9b$5JQ2MiT)'PZCQPiFL!e)$Sk)#K'D@aP8Q9KC'9b)'PdC@d
a)'9bFQpb+5!S4QPXC9*PB@4PFL"TG'9Y-L"PFR*[FLN0#3N*#5dq)#K'D@aP8Q9
KC'9b)#KTG'9Y-5aTG'9Y-LNJCA*bEh)T$5JQ2MiT)(*PB@3a)(*PB@3b)$dJFQ9
KC$%J26iq)&aTG'9Y-5!Y2L"bC@&N-L"!2MiJA'PdC@db)#dq)#KTG'9Y-5aTG'9
Y-LN0$3N*#3d[,b"bC@&N)'%JE'PcG#"[CL"dD'PZCh-X)'9iF(*PFh0PC#"hDA4
S)'e[EQ&ND@-JFQ9KC'9b$5Jk2MiT)'PZCQPiFL!e)$Sk)#K'D@aP8Q9KC'9b)'P
dC@dJCA*bEh)T)#K'D@aP8Q9KC'9b)&YTG'9YA5"PFR*[FLN0#3N*#5dq)#K'D@a
P8Q9KC'9b)&YTG'9YA5"PFR*[FLN0+$Sq2LNJFQ9KC$%JFQ9KC$)J25"bC@&N-5!
p2MiJA'PdC@dJ,6iJFQ9KC$)J3$iq)&aTG'9YFb!Y2L"EDA4PE6TTG'9YFed0#3N
*$5m[)'e[EQ&ND@-JFQ9KC'9b$5Jp2MiT)'PZCQPiFL!e)$Sk)#K'D@aP8Q9KC'9
b)'PdC@da)'9bFQpb+5!SDA4PE6%J,6iJ+%CTE'95C@&NCA)JDA4PE6)JCA*bEh)
T+3d*#3N*,6iJ+%CTE'95C@&NCA)JDA4PE6)JCA*bEh)T$5Jp2MiT)(*PB@3a)(*
PB@3b)$dJFQ9KC$-0GfKPFQ8*FQ9KC$-JCJd*#3NM)#KP,'PdC@da,'BT#6dJFQ9
KC$%JCJd*#3Pm)'Pc6Np,)'8*#6dJ+'8XG@jNC@BXCLN0#3N*25"bC@&N-L"TG'9
Y-5"Q$3d[,b"KF("XH5"K)'CeEQ0dD@pZ)(4[)'&Z)'PdC@&Y)(*PB@30+%!q2LN
JD@jQDAKX)$3J1MSJ+%CTE'95C@&NCA)JDA4PE6%JCA*bEh)T)#KTG'9Y-5!Y2L"
TG'9Y-LN0#3N*#5dq)#K'D@aP8Q9KC'9b)'PdC@db)'9bFQpb+3dS3$iq+5"bC@&
N)'CeEL!p)(*PB@4J$AGSCA*P#A*PB@4J)'B0#3N*)b!SC5aTG'9Y,'BT#6dJFQ9
KC#"Q$3N*#A`JDA016dXJC3N*25!SC5aeEQ4PCLaQ+3d*#3Np)#KP,'CeEL"TG'9
Y,'BT$3d[,b"bC@&ND@jR)'*KFfPM)(4jF'9c)!eQFQ9KC%0SBA)J1MSJ+%9bFNB
JCA*bEh)T)#dq)%CTE'95C@&NCA)J3fKKFL"PFR*[FJeQFQ9KC%0SBA)JCA)J25"
bC@&N$AGSCA*P#A*PB@3JCJd*#3NM)#K[DbaM,'BT#6dJCR*PB@4M)'B0#3N*I#"
ZEh3JEfX*25!S5R9cG#"PFLaeEQ4PCLaQ+3d*#3Np)#K1Eh4SD@jR,'-XCLN0#3N
*#3N*$@CbC@&N5@jd)$Sk)#K&FR*')'9bFQpb+5!Y2L"'D@aP8Q9KC'9b)%PZG#"
PFR*[FJeQFQ9KC%PZG#"PFL!p)(*PB@30GfKPFQ8*FQ9KC#"Q$3N*#5-J+'pV,'N
XCLN*25"QFQ9KC'NJCJd*#3Pm)'j[G#"[D`Np)#K+GA0d)'9b,(9ZC'9Q,'BT$3N
*#6dJ+%j[G'KTEQFXD5aQ+3d*#3N*#3N0CR*PB@45C@&X)$Sk)#K&FR*')'9bFQp
b+5!Y2L"'D@aP8Q9KC'9b)&*PB@`JCA*bEh)0CR*PB@45C@&X)'9b)$dJFQ9KC!e
hD'9bC3PbC@&N)'B0#3N*)b!SEfXXFLaQ+3Np)'CbC@&NFL"Q$3N*#A`JEQpd)'p
V#6dJ+%TeFh3JCA)XG@jNC@BXCLN0#3N*25!S6QpdD'PZCbab,'BT$3d0CR*PB@4
6G(*TEQFJ1MSJ+%9bFNBJCA*bEh)T)%PZG#!Y2L"'D@aP8Q9KC'9b)&0dFQPZCb"
PFR*[FJeQFQ9KC&0dFQPZCb"P)'NJ25"bC@&N$AGSCA*P#A*PB@3JCJd*#3NM)#K
c,'BT#6dJCR*PB@4c)'BJD3d*#3Pm)(0THQ8JFb!p25"T#6dJ+%j[G'KTEQFXFba
Q+3d*#3Np)#K+GA0d)'8XG@jNC@BXCLN0$3ekCA*[8Q9KC'9b)$Sk)'PdC@dJ,6i
J4QPXC9*PB@4PFL"TG'9Y)'9bFQpb$ATPFQp5C@&NCA)JDA4PE5!p)&aQ)#dq)#K
1Eh4SD@jR,'PdC@dXCLN0$5KB!!!!:
--============_-1213299856==_============
Content-Type: application/mac-binhex40; name="TryFileCombinators.icl"
Content-Disposition: attachment; filename="TryFileCombinators.icl"

(This file must be converted with BinHex 4.0)

:&P4bH8CTE'9$EfeLD@jKG'pbFbjTBf`!9%9B9$038Nd"!!!!"[i!!!!!#rpYEf4
eE'8J9(*j4QPXC80[E@*TEQ&dEh*c$@PYF'pbG#"6G'4&ERBX)%CTE'9$EfeLD@j
KG'pbFb`J4'9bDACPC&*PB@4PFR-X)%9bFQpb6@9cFf&RCA-0$8ej4QPXC5!p)#*
0B@0TER4[FfJJ5%3k4'9cDh4[F#"'EfaNCA)k9'9cG%CTE'8L$3e6G'&bG#"h)$d
JFh4KFR3a)(F*,bmJG'mJGh*TG'8JB5"QD@aP,#"MD'&ZCf8JG'mJFh4KFR3b)'&
ZC#"bC@0[EA"TE'8JG'mJFQ9KC#"dD'8JCQPXC3d0Fh4KFR3a)(FJ25"KF("'D@a
PFb"hFQPdC5"h$AGSCA*P#AGbDA4P)'Cc$3N*#5-J+'pV,'BXCR-T#6dJCQp`C@i
J6AP'D@aP)%CAFQPdC84KG'%JCR-0#3N*)b"Q#3N*25"QGh*TG'9-DA0d)'ej6'P
cG#"QGh*TG'9@BA*6G(*TEQFJCJd*#3NM)#K[DbaQFbN*25"QBfa[Ff8JCL"QF`d
*#3Np)'Cc$3N*EAP-DA0d)$dJ@b*8D'Pc)'Pc)'%JE@9NDA9Y)(0dFQPZCb)X)P0
SEh*d)LafCA*j6'pZCb!e-#!P)#J`,$-j15PG$3efCA*j6'pZCb!`)$dJ)Nj[,#"
dD'Pc)'Pc)'9ZEh9RD#iL$ACPFRP-EfjR)'iJ25!L9'KTFb"TFb"K)(CPFRNJE'p
ZCb"cG(*TEQFZ)%NJFQ9`C@&d1L!L+bXVGQ9bH8a[EQFJ+'iY-5N0$A0dBA*d-L"
h$3NM)(*PB@4PFJNp)'CbC@&N6'PcG#"XDA0d4A*bEh)J+'CbC@&N9Q&b8h4bD@j
R)(0dFQPZCd9bFQpb+3d*)b!SEh9dF(9d,(FT25"KBf0'D@aPFb!S8Q9KC#"0H8C
TE'8JEh"PEN9bFQpb)'0XEh0P4A*bEh)JFQ9KC'9b+5"h$3Np)'0KFf8JEh9dF(9
d)'pQ$3N*4A*b)'ecC`N*,6iJ@b)q2MiJ)LXV+fecCed0#3P%BA4K)'peG(!*,6i
JEh9dF!d*#3d[+JP8D'8JCQpXE'phD@jR)'9iB@e`E'8JFfK[Gh-JB5"bC@&NCA)
JG'KKG#"QDA*cG#"bC@&NFb"KEL"TER4PCf9b,#"KEQ3JBQ&cC@30#@pZ)(4SC5"
[GA4MEfeP)'0[ER4TER9PFb"dEb"bC@&N)'%JFQ9KE#!SD@iJFQ9KC$%JEh)JB5"
MD'&bB@0dCA)J+'PZ)(*PB@3b+3d*9'KP)'PZDA4TB@`JD@jdC@GPFL"bC@&ND@j
R)'0[G@aN)'G[)(GbEfjR1L!L3f&Z*h3JFQ9KC#"dD'Pc)(0dG@CQ)Jd*6h)JG'K
P)'PZG'9RCA)JBfpeE'3JE@&dBfJJEQ9TG'KPFL"bC@&N-5"ZEh)JFQ9KC$)J+'P
ZG'9RCA)J2L!j16NT1L!L6QmJE@&dBfKTEQFJFQ9KC'9b)Jd*6h)JFQ9KC'PZCb"
dD'8JCQpXE'phD@jR)(*PB@`JBfpeE'3JCfmJGh*[EQFk)#*5C@&X)'0[G@aN)'j
[G#"LC5"bC@&N)Jd*6h)JFQ9KC'PZCb"dD'8JCQpXE'phD@jR)'0SBA*KBh4PFL"
MEh9XC#"REb"hFQpZCcSJ)N0SBA)JBfpeE'3JEQpd)'*P)(*PB@3L$3P$B@iJFQ9
KC'PZCb"[CL"cG@0S)("bD@eTG'PfC5"dHA"PFb"TEQ4PC@3JCfmJGh*[EQFr)&P
PFb`JG'KTEQXJEfBJG'KP$3PPEQ3YEfBYCQPXC5"MEfjNDA4TEfiZ)#S[$3eYH9*
PB@3J1MSJ4QPXC9*PB@4PFL!S8Q9KE#a*ER3T)&0dFQPZC`eYH9*PB@3J25!SCR*
PB@4*ER3XEAP$D'pTBf8T)#%q2L"E+&aT)#dq)'Nm-6!`,(*PB@3a+5`SA'NJ,6i
JD6`a-$!`,(*PB@3b+9d0GfKPFQ8*FQ9KC$%*25"FD5!Y2L"QFQ9KC&*PB@`J+&a
QEL!Y2L!L8Q9KE#"MEh9XC#"ZEh3JBQ8JFQ9KC#iL+3d*#3N*#3P!2MiJA'SJ,6i
J+'SXD5mb+3d*#A*PB@3b#6dJA'NJ,6iJCR*PB@4$D'&b)#KFCQiJ,6iJ)N0SBA)
JBfpeE'3JEQpd)'*P)(*PB@3Z)LN0#3N*#3N*3$iq)&aU)#dq)#JSG'p5C@&X)'m
JG'p*ER3T)'SXD5N0$3N*EAP$D'pTBf8J1MSJ3fK[D@0P4A*bEh)J8h4bD@jR$3N
*EAP$D'pTBf8J23PlFQ9KC%9bFQpb#6dJA'CZ)#dq)#*$B@jF*h3JFQ9KC#"dD'P
c)(0dG@CQ,L)0#3N*#3NXEQp0BA4MD!Np)&aQEL!Y2L!L6QmJE@&dBfKTEQFJFQ9
KC'9b,L*p$3N*$DX)!!!!:
--============_-1213299856==_============--