[comp.sys.mac.programmer] Quoted variable substitution

ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University) (12/31/90)

I thought the problem was one that could occur with any notation where
the value of a variable gets substituted literally into the program text,
instead of being examined after parsing is complete. What happens is that
funny symbols in the value of the variable play hell with the parsing of
the expression, leading to all kinds of odd behaviour.

Always putting variable substitutions in double quotes avoids most
problem situations, but not all of them. In particular, you're
still in trouble if the variable value itself contains a double
quote. The only cure is to catch and quote the special characters
*before* the variable substitution gets inserted into the command.
In other words, you have to write a tool to do the variable substitution.
Here's such a tool, which I call "Subst" (source included).
To use it, simply write

	`Subst VarName`

everywhere you would write

	"{VarName}"

and your problems are solved.

Lawrence D'Oliveiro                       fone: +64-71-562-889
Computer Services Dept                     fax: +64-71-384-066
University of Waikato            electric mail: ldo@waikato.ac.nz
Hamilton, New Zealand    37^ 47' 26" S, 175^ 19' 7" E, GMT+13:00
--------------------------------------------------------------------------------
(This file must be converted with BinHex 4.0)
:#90eBR0d,R0TG!"6593K8dP8)3!!!!![%3!!!!#LX90*9#%!!`!!,a&b6'&e!8`
!!!!@!#F#!!96G@*cG'PXC3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!#8p!!!!!!!!!!"08&0869"6)!%!SAYNNU(EJpN!!#mN!!!
!!!!!*,F!!!!!BhJ!!!!!!!!!!+%(!!!%#!M!"D#!,3i'*"9`J,D'fX#BB#F4RN4
k%[&*j!IQ")#1"$SL+$#PMTJjG!33E!*P#K@@8d!3$+J`i!*N-f'qE#PcCXfC3)1
'fN0'8Y!A*&3&*+!8!01PUMUbk!LM)if11$Vbk!LN)j'15$Sbk3LP)j@1@$Tbk3L
Q)jQ1D!LHJ&%L5)dd"+84`#A3LC@!523!3#(NP*0@!-3jmH+N6LBQ5B38N4+%5T%
[6S)d+I,%#C-XAji)85+Pb*!!+3(prS1(j&c!!0"HJ`YS!-KVB!4"#1$cJiI!92!
-k1Vp'pi"5F3$!$r!+MP`"%bF`d2J56S#Hp)6i-MZ+MXik3SXJ"F"RJ9i)1#MqeB
16`%@m',!b`&2#,`Pm+M!$em2A!%cm1L!aijd#mK!)"8%iN'J,!4U)ad$+%JAJ!r
%#3"F!(C8#&a!a!e`)5-G!MH!%L(#8`!8*4iJ3)N*c1HEKr"`k"X"'`*!A!%LUR#
ML-,X#!m"-2K)J#mq&Z#2M`F%k4Z1aKQ"T"C))Z)M!*33C`"`"EJ)`*8Q1ZJEP`A
!Bb9`"TMh*CPUM"NM!!c33G!(I[A$6fX$B)##'f`HiBir!!KaK!F8@-"0&-rm`mq
G!##JjcpprKRSS)AbikF(,[$C`a(pq+1%'jQD%C!!!N+i!!!%B!5N4"@2q1"#TNR
XfDF4(0!!"`!p'#&R"h`)*#F5R-lT"U01k%)!!MjmS-34C`6%!+i#M9SU!"+SQZN
84ebDU3Hq!A!'+NamJ`%`Li(`"4521!'0)N%iN388T8e4K"08%13ARkd&B#HH$#c
D++##%QSSUS%"S%M!K!6X"kpmGKLX!,JJ$!#[`1VbM`BHI*!!,!!`)!T"`&C!r,"
J6$LXX#i#++)RRj01J-%frR)8%!8Dkj[bbLehL`%JiBjE,M5,6*%%5d`8%8896eM
ffJN")0e!!!PXX!-I*U#3!%)b)pJL`JYFl0%('$m8Xd8A+Ua`$$)mq$$,,5$iYBm
rpGkEU-b1pKYT"i,*NbR!JU(MmF,Dp2#&2jUk!ELR!2$!DkDmmX2fV`#mi%#`rXL
$a51*,ljfKF%'S%bVQHUjpX`X4rUX()F[VML[DhZFR+U!8r[$!CPc-cRUrMJ1Z5H
cZh'kB')%c!AYa"'3!,NER2[MZ6qJYkckHMp8kNrXf!D8l$mq)*U[1jNQ(kR01([
K`LH0&6*dd88F(B!Y53I%3Ulb@J&iX!$SmV4!qJ$M3J[lX$2&)CIqimqcJ%!9#YU
`$hMiS!Ae3m)ab[%)&0!"$ieM!",DN!!2F,8L!#US'1%3X!("q+'#%`5KB13!2de
F6!8)BaX&`D8,Ic"LGQh3Kc"5+)3c(#B!)TLJ$'qSJ@GK3)Fc&)`0DRM$(-C3'$b
83Jb"J4F!1%"9r[2&%YN!J(rJ!Aii@%aM$$'&+JM"*9mJL!"1i*'C[#"E!TRJ2ZL
K4YB3N!!G,a#9m(34!$Bmi4d!S%"M#K1X!D#L-56iJ!Lq)+iA#%!)3""#%##!!3P
NJ!B!J%83hL!!'J4J#N*S!`*LN3!c'#!+b[L(2L6C'"Lm`#RP3)))hV!P+84'###
i`jB8+3%-R-%$e!J#!i43a6FiJ!#mr)FNK%!$hra$#8%i!`1Q%!3*B#-+b6"8&J"
J"QU)#`D#r))%"*&+Ei!,'Ri*#!M`*3)m33!'SN,!'eJJ!e%Ti!dQ%))3+!!"@J5
K$4i)!M`J!!"T!-'HE%!!$!3!#6`T3!T!N!!!-+D3!0"R)X03B$KN"(*',R1&%f2
TI)-2fJQ!Gq*JR'b5*chYf3B@j&#Ir26R%1,"ci&#)JKV-!!%XK'&Kr)$R4eP+#9
J5J!T#!%DX-3A",SRVSU#mbm2F`d-3)U!FSE8R)L%!!4S'B'AVJ%&c*4#)Nb3!!3
T)-+5*%$#,""JK9$b3`P#8)-#+Z'1429!#Fj#!!L8)))Pe23Ii1J@!`"!dCeGY$8
c`!!,4)@"'fS""'hJ"cK!i)T%`5%!5X$&!#a`"KE))3$#N!#X"Fa!!K$JBE)-J!4
,MY!%-f$!Xj09!LUFFJB(S0B#))J,!C3!K6-)B&BV!!)rM(%'-!5K(Ih3a"$`N3!
)`1%!)+#T6@'3!)hI"PF%LB@'#"#K"%1BJ3')j3FdAJ#"B"%!&*063Q-CF!DjiZZ
a)!#%H%G9AT!!3J!%VG$ZHLR3AMa4!,lmS-CMFl[E8J9JUCq&V@aKd!*q+!-@Y@A
!'@Z51G`piVF'&N'!4B!A!S`!#3$SE)"A)&YqZ11eXA8+K`%J!(i`!m5b(E%"Y)Y
L%FG&!IQYEQ90%&d`+(J#I86'j+c"$kFSB4*QJ!H0mf[M&q"B&`13!-@1HcaE)-0
M[H3e,j[`bice3U#qSm)[01D,jI['ejS"$[&X9`Z#hQEK%A$!`bRlk)`9I)%IkQJ
a!9!3&a$i!3"f+!!)$L!#!!#Macm-JM!!MB3J+")DJFLZ1N4`!"*JPY"#)!DNj5N
03HJ6!`!B!Md3!!!ik&QjKT,#)@aa#$Ii!VHk03B6h)%"C[`$(9UX`b'q)!8U*-%
0DA!6Aj(D'J#i$3&+L#mhc)#!hrUMc8MJ"cHb#iiMS-0C$[La*dh!L&Q"33)mGJU
cJr"X5-4L'@)`af0AMHPri#2@KJJ$(FU!Kebh6jc'r-FrJ0&B"+aC&dk-05(BlHl
8)28&#f#fX`(!#"[rq!`%!-%8R!!*(KZ+fGmZ!cZ#lH%c+##llJJ"RMJGl9EdJaT
QZ(KL&`X&KS2"!Bmpj36l`3[iqB*F*[J92f)pkeSASGfk[LM0[c#'0pbmheI6pLN
4!$rA"U!a38rid&YM!!#S!!"U%!!4!-'#!%5G#)'!(`H88)LV!f)AKVKk),Ve%D5
I8ZQ*DJd1-K`!*)a'#'EJJ!hk"!3N!!(KJ!J'*0d1J`(N(C)L1'6GZb)#%Y$GlQk
AT`N#)!F!i1%"e""%0!!KM8$!BK"Y)!!N"L'&!%6"eI!J1`FD!i+KQq'f!3!"+`R
!"'KiBqE4q1Xj"J#!`5D+iX-ZGMZ1[B*N,cZah""#A!6JK`#!J3$L-)5S(`X-3jc
"(R$!!+2$NBSA(,f&U*MFU[eXETV2)3eRq!)Cc%"&!*6H+E"i"CX3$Mmh[1#8$)!
I2l$3'5[m`aP"F-Ip0CiSD-8!6`i!!"BJ"#J!!"V!Irc%!D#`!$pJIZN%#ieeC3S
34k-#2rK!IpL8IrIR"2U!-I#60[D(IrVR$2c(D4,`IdiNJ!4SJ+#3!!!Fk%6[PbM
`!`RdeaJ0q!)&+!(`3`XBq!&)!#k-83FAK9iE&`YY49jLm!*%KfpL3(m8'(riKJA
dae41a3#c`NKf"`%C`'A4&S%)4`TE!3'JX"8-B'8)C`TE)3#L`!-hQ%l`i`41+#T
3#!"%d)-+m"T)!!Jr''[R4`"RS!)J!!3jT)@h*!%4S&!3%!"QJ!q6J!`JN!!!$-8
!0I%2Ef!!))"'rc"8I8KkChF'%K#)9dJU"!!"cqCj$k823["HCiGdK23"S-!%"Z%
%F6!V,j!!!$%!$!+3!$CeB'hf-%JJm!'K3#Q)`)(rX'L%p!@J!#IkJ&HqL)`KB""
UB!"#F!R%#%l,U!bqq!(L!JTTXic!N!#0S5!#,M#-bdJ,c3J+)d#-UL!#fTK0fqJ
#)T!!,XZS#B-%!GVi"@E`A4mK!!cK!cJ6$I9iMrN)#XE(Ma2bM`%T,J1*!"&&#X5
#N!"IB)m+q9d+d*!!#Z#26J#3!"%TN!$I*3%0'5hrU"SLH(mSb'NB3*!!2@!E#T!
!-e5`-e%3$"%&"F%JNKT)JKYRILM)6p+(,b%3"4NQI,8R"+[P!NUJL0mP!"%&#J1
3!*,38S8LX&SSX"L$p(SGPC%d1B)SZ&FB8))!S)!5`*52i`@$a!AP%RXK@*0Ck@Z
JJ!&Jk9400C45q39NDC9RLC8!k'YTb3*Fk3+J3!4-f9eLU6-CQC!!q%J!SN!"%@8
+&)#4'LQ4q'J!F)!!SY!@""#CTJ!'M%QBq5J+#C!!Q!R!Q+V"$'eM26%h+Lf`"2r
J$3$c+m``+ar!9a*M#X@#!kl`$q,!9)aP+*H54q3'#21@-e3CIp"`#%K`"%9!"9E
`"%cJErpJ#!"AQJM3!qEd$jc3![Mb$lC`Q[q!#D(b$k#`QXhTQV$j$hEJ0p!5Frm
J#-$CBbXjR%K!"%830%BM4Sf&$b4f85"eF39iCAE3!VEK!"RM4"b&!'U!!dS!"'X
3%,`!#A&"AKT`4J6"H!!J!id6!$*3J!*JI6HN"(FdC3B&P!`3!h`JEdld,)T`S'S
J!8S)2iL3!*mJ#T31`!"a%4!#B!CU!%6```Dr*8-J#JCB!!%&Z!"l*6ebP5d$!3D
@Q#d%!!!j&)`l!!6q!!%YJ'%1F''M-J-h'@daT!kFa3"iS4)#8&jHfL`e5J&+'$"
1F"K10cRc%`$k%'HBi3AL-TG(*8iET`4ai3"U-&F0HJBD-#X"UQ#0Xjm"QU&mG8%
bd+(a*kGI-$RQXU2#!!,lH3B'X+)5``XlDJf5bPk9ZS6r`!UcdKJAY3'jiUEX3+S
!d!$kd!i8L!"K%"#5`&3-!!8#d9S3!J#fX3#HC+P@P$11@UF!X+2Xi&5J!J33%!%
cG9FhP8k[QNF8k!$0bJ3jdk(YHD"[S!--B"Z8##6'4%X)a!i["8q@Y+2Y!!h"N!"
$d!!-%48"24P0r%#KaaF"[J%#d#4+e!!%'b!%qX!1SQTrNY)'85S%VH!2RlKaXeU
V$,!#l!-!#8#`cm)*3!S!3VS8FAH&hkTb-G31KETQL+USB%!(@I!%5YJEmKBXrH#
)Ac#PKZ+@%*!!!K)lT0TL!$$!!dI+V8XU!bl,!%23$[XU8KPJVR0R#8&J#d,!"J5
!!`-386JJ!*4!"0,`&3+3!+bZaJp-&30"`#Db!!4QB!'Y!3T!B+Rq!!AG)J!&S%M
M"&&)a+Lr'K!*3!m"`'N'S"TRe3TV4+P34Qa#B%iQfJ)%4!m2*h-JF'9a*SK#e8J
C)![84!-LG8QTL!&$'JCPS!"$5K3%X+6QjdJ--"#3!#Zj!d'j"$!3))#iRJ4+rf!
05)S&YFN4X(#f9!X&838"qL33EUN%'D")M+4-#N8C$(#erf"EB!!2ELN"JF!X!`'
B4H9ApSF2SlPaF2!2rQNS%$0c*+-)*J!%)+#VPIN2B-!$)##(8J!)0J!)3T!!S,F
&!#GJ'`3!F%L!"f3334"cEVTJ!2)J+T6k4Fd,"K#J"+[J&*jd!VpLR`RR!SE5Qrr
!Vd&)#'m!"f@!*ri''1F3!2PEEf`J!E3)!(*J!4UU#`A!#Fe,,Q"3GaZh-!T3[GF
l1IPi[b`!F##3!+!*&aG%"`QLmN9+F!L6F`B8!!-V3')rH%S[!$XDl!8Gr!J405Z
VKJ#qH@j"@!KM`!C[-!GPd-"*95I@BhX4R#J6A-%AR-%&)!*"h"Dm)S0d"!NN[!!
QR,eJ`!4`)!!,C3B8h$J@R!!C6!$3p`mH6!-RB!4XFJ,,#3%Uc-)KePd`$!!eI--
j,!!lh$Jq6!$)d-@@D!#3!,#r$%"Z`,!DX9B)Gb!(ZIE%Z`DpXbGBFVKH#-!'&)$
&'(ap"&"YG#c%!H%1Alb%!)!2Bfc#N!#T[3'"$5"J!!5J%'B3!'Y!!C)i%fl!!0!
!#$#`!`J3YrY!%$T!JAaFU3(Rah'K4i'XU*jNE3'K#6LX`m$!`iR-aDRm,)4JC9I
XaR)!akD-!&fX"Xd,#4(i[,jL+$Q+!YE,!'9m[b%6`P&)`Na39h#3!(#JaJm9[,k
lh-ID&Xd-*bSGHQ8$5!ACE-MEM-Kp*!TG(-!$c'U6E-$KN`C[-!Cd8(jbZlbhPeM
NN!#2QD-#"-B2j2#$FU"(L+%$SV)r5N!*Q3F#L*QpN!"!#Ei!#+*-bKNm!%3`+ai
F%0i3dfhJ!YPP$M4G$SM3CdU0D%F`(3#J"&0!1-#!aHEF4k--!08Ee!#J#NHpcT5
Je%b0#%i0e@!!E&2JTpPfAiQ&e!FJeJ$3e)'J6jcfE@4`QffpCh!Yeh30!(EY"#H
GdX!!$Ea!%-M!``9Q$Rh%!Hj-,Qb-a4L3!-%#B!P!,F4,"EK[[G4a6GD"m03)3!%
'd!B!J!`S[3)ba`p)RGF,!!Q)X0*UUJ-S!!MA5m$`%'Z+m!9R8!CdN!!%6`!&Eb!
(ZVCV!3&`md2D+3e"Lqc'#b-+r'81&1F1j()'5S"a10L9,j!!f($!!a`,!+*`e%F
!$@!`9fQ0!3'0"`2pc!@G4`bRU'Ype0`f'(C0$@#!!J(G"[h!VlU`$kL3!()2Bpr
`Z`mF(!!Bk`pcY!q3!0#K'2"E!5!%d+9B9MTE`NCXaSCXbSDH-aH%MI!&DB"VZph
EG"!'BX!'QLalY"IB+Xh5!+!$,!!!8f!)G`B'%qM$qk!+Nb0U[(!)E#!2&-GE`S-
B-V"pNic%ME%)22IECF$E2jGcrhB!GiC6#N!!32!2L*!!,'m,jHXA%-4Jj5p`-I$
!8"I$4AFA%+MJj3(K#'31!+a`jU*`jX4`jUT`jV43"@%1!+C`jT4`jSVJj5eaGeK
`jTcJj9*`jTVJj8cJjA`JjfF!"ei1!ei1"&l1!Be1k&j1!9i1!9BH!SN1"QlJ"iL
T"RlJ!'"J"Rl!!@!J"Ri3!@$J"AjJ!'#J"C`1"PEJ"am!"P,J"k6L"(k!P%VJ"je
T"(i3%N,J"`@!QAl!!'#J!kX1"ME`kM+3!1`Zi!FpT!*qB!%5i3F0!!BLi!FG!!B
H`1YJS!&qF!&JB!(*,J'fIR*qi!%`EZe)QZi4aHPljJ)#I1'0N3KId!CK!!G2-!9
P)!H0*pb)V#T1Y!0(%+@He,f*FYB+e-13!#-,Z8@`mJl236KVGG$[F[$Ec)N22@b
GSf*Z(-m!d2Zr!YdiETMI"#!U"cr[3r`2%8m2PF`'6P`'#EV*Fp,*YXF!G`E+C`!
#CpDUDLS),[!"[Q!)Em$(kI3#FBXBLS$`$+NZMi$dDLS(,I!&rj)UZ*!!LdU!fjA
j%65JmaKmp221m)JK#Mk2'(TJ!NG`$ITh+%D3!!eV(e&#X!'j!'lkd,d9r5d&('Z
2m!@iII&hB!4T)1*8!1)L$X@YF3#H2#V@3h&FUR[qB!'p"fH+pYd`VVqX"3(CGPU
*T3l[M3II*JEUi!)mB"YE-Zi8D+D9LPdXI0!!S+KX`!!1K`k+pQeM-06eePUc$fk
@Z(%JX!LA52TqGJMjZ'IFVJ-(B,3[MJ!#F!Lr)'rr)"P)8!`[8!!-hd*3%-6N"Jj
j(i5)J)pK-!CM8!Cc-!IY`mQ)EcdUN!"1Z#IKZdIKh("R,$$X&J!(%!!,T@D&N!!
2T44-b`!!#D+@I-c(qC!!!ld'")b0)hKUiJ6i!#S-*3)+J$!!"-3'$J`!GhCm@X!
8-"5jS-Hm"[EA*d`!)J!$5#!$%S3"B!CF#r!"!3A!#15Gi3-'C)!)$!J&`!bJJ1c
#$4E"m%PMX+!3Q)(hSJ!a"J4SJ!r3$-L$)P-!2Y$NL#M8aZlaJqchDY$0pcN$EL!
-P"q!GrJ`32Ul24(1mENrq$IX8%lp+c9Q6!Mm2d-3!-m!1b#!"K!"QTmH@+L!)#"
!10,'M-'-+F$ITKrN-!CfN!!5+#SQL0(U3#'3!!0K)!diXCN`!0""!&JlEHFFV!B
r%36d33"`!#)!!l!52k-#-%!q8J%03"-%!K03"&S$10KQ#m$k0#YId#d'3*,!!$i
!!c`,63""-)$d)3!#B#!m!!5`T2b3!!-)"md%!b#!3##a%%ii#!5eK!j813"`!-k
!"D!!ZP!3%-2@%JlQ56*d)Vj3%#"$2L!!i)FB3!#&!!!m!&pB#$3!"KJ#m`!,C*J
N3!X"3!(`8e8(IKL"h89L+*8Qf3D5!!b3!)"Y)!A#fcE`5"b!!I$#J#!$bJ!I-cm
"!"3BY3m3$B,"0)"*"X#Ce#Yq8!i0!-)a!3hJ'NL#Zf)'ZX8$q!H036!FRh$3#,a
K&(!'SU3aZ!PamBX'b4P!!6)J!3L!Uc8!bSX%%!C6!!)13HN$!-K")U"8)J!Q"J)
cS!m%J'e)@J,J*5SVFd%EJ&p!i#AD-!!-J)(!&!9#!"J)"%(H2)!!F!%'JNTJLNm
49`8%HD-8%`!%d`!$3!&-!3`6&3f&2j!!0rh!!1a$S)!@+p)!)"8$!$%0J1Y&!&J
!'5J$GN!(p"`h-!IHJ)KE!%IV,ZE&[GJArb)")!+#85qq!ElS&rdK%L!!9X!)6)%
XJ"S%JKKi$@VJ0Ibl!#!B"))J'!+GS6)'!(`M%)6"De!'Vd%D[!CY-"PG`QY3"+r
"+!J%6I!D4-&VL!S%3!XF(bp`I-6!m6%$adF0("mjF(cX`2(4!mI($a`I3A"m&-(
aF36(*ai5!%Y`I$3"&!!#"-!C%!5Nf#HfShFmLYqa1i,(m5JHbb0h2)rK83JF(fP
`I%`A!BJ)"-!E("paF(c-`I&4"mI((4bI)5M(MSmq1$lrS`!JT3,!kJU!!TJU"3!
#N!!SJ5!&AN1$C*!!$M*#3XJ*'3!HC)@8N!!ANN*Db!hT)-&!!I")"B$D&B!H8J$
8h4EcN!!Q`%1U!!rT!MbN$2#3!$E!3qS!$qN$2+4k6)%H8JPi5#H!)+A!&3J$FJ$
AZ)%c%!*!`"A!C(4J`qdm1[!'3!!G3!0P!!33aXB)!MBF#-KhF)!0T)%aS'id'Pq
XNR-JE430%$!(GK%Fq'hVKJb%J!B!!Dj!!F!%38$%!EFL+3A+3"JJ!dS5"*L"LpF
'R#58P*+,X6"'55Z**E8NPdb5J4*-LNNU3#E0**SX!fS5"2#m0e!(%%XBb!01-Jm
S-"!J"XS!%lX$1U!",)!`N4LRT)JlCK3J-EU"1X!'f%!#-!!H)$'L"$cT"K5!!8!
"XT)1N!!"5NN(E#80b*9hdGp&+!e3&qj#3$J!hL!!U#6CBbmd"R5kAR"`!K#EhaF
3U"dE3(J-)*F&K2De"KaA64!!EJ!#$,0LGXbF3$),#!QSpP",!I6"!-i,Q%05S)j
9-)#MTU5!$`!!(Na&@5%h4Lm4Ja+iPiVU@*b`Mk!!!08"!!5m!2J4-*FAK'kE'CJ
$4L!)J$ra4rkBdm!i"`r!E6!!k#3BhU@D%J-`B!,mS"@(+J,DVeJF)I'#+)!@`!5
S8hFL"E2LHCN#16!!K!%A#34NU9[U3c%5,LZ2$0J"'!#CmC2qSj1)ecmS"5H(@3L
!SiQNQ-8!1*UA#&hk'HFMMAi&+%"5dXPrH#Ikeh`m%AK5"1**63Q$BS'r[QEB4!b
US&J)c"QB,3V!e2aPjT!!QQ!!X`N!AT1DNJ9q!"USJ0%A%#*!5e)JF+!Df$mcJ!5
LCV2SQMk!EYT0a+!,F-!(-!-UJ'Xk(`QJ1!m9!"LEXii#9%ieP6CRR3$`!E2P#"!
134!cSa`bb&[r!"Xm,fH3!$9"`6q3!!CC8a6m!fS!RRK"irN!4qH#h"BeCJKDdLf
C@3-"'2`+F'!'0#IPq"9JXfjD6V`C!&T5#c5F+U&VdMF!)$1rjZh-R3"!'45,-`!
"0LGLN!!&,HPBH#+$qA383F)N#$IJ#*!!Q,2'G4$1q#)aA)G`3))c!`FF`(D6"#F
JM-L9"#9AS-$rq3Hf-4Ia6a!!"@"!B8Xpf8)QG-h2m!JJ!!A)3crSHfdh1E$#%J8
"$3&KC!+T2JX+"DVEJAbJHJJB5&$,fGd'U2mmQGV'K'SF8E)P8%Ac!+#2T3%e(Jf
&'24"5r+BL'&2&3$Y`fVJ`6mJ)4-2(mf"*k$!'"LcK!$3b8p8d2ij"D!!EA%$AJ"
9,&%#qJ-`P*U5"Y[6!+62pFN$CTB#6@Xd3)UDd#UD3MPSGE0%*Y5$hT!!6j4'#p"
+-RXh0)F4(F5J#36QeKYL#D#)(E&BdrdHjK"JBS13!$R92!J'R9T!JJ*jr%#-FP!
bDXKNcJ[)BGd&-@L$BJ%iXm(J2#4(3'"qSRNA#5#C%S`'qdX8E9%"B%HYc@dT!(V
d(c$-aM"V(QDG[*1#Y&iJ8HD&!"E+'5!"LV4r-Y)d*N-VP*V5"pX6!Ba51,$YK)!
KC409EiUL#!`9[4jT"8)-iU"BX$%Pf%QRc,`$TFk#!)c58VU22%dUAD9eS)r1J51
CbGj0&*ZP&P31D8YU!J$@!!L!Qe[#$@#!F@R-N!!C3G!!!)!@M!SrXdpaJMCiRlH
&fJ@%1'01!YFD)!(`&&ab!(TD,XpPrpNV%)!2'"m*`!H5PJ1JKM!1S-)"JCT2*5!
XX#kZaCbS&[i&6)k!4-LP9"4$rB$G0bUU@im$!-$8BJK6pAPEYKdHH#`IYEHiPeQ
4AP$U-L8alJ8*b"Be*3qF*rFbSI(56i!"'+"4UCd18+C1"3,)J0@#5FHG6f@Nc%a
0U31eL5bd+8hPTN2-!K5a53C1a@N5f'JGVIc92&qM-IME$'dlE@"fPMd!S!@8!#"
)D*6+QJ%!Gq"@+p3%58ecYDlH96abCG!CpBab(!'0#6J,jPIM+MS)V(B9Vk+c!%!
"kGYLIDYrP4j!eX(+AY#C!+#!CS`2-)$'!J$DerST8U52fUQ"QH8fJ3%9b&CZFeV
b63#!kMU'c,NK1L#@23,C5[SkN`q!!44JSG"-B3!%*+"VP56YCECH1a03hXjE"@e
KkJd5T!!@jK5QDrmaV(Z3!098%A"kfqC!(SLB%h2mQG03aIfqJ(IpSde-N`%mmXT
+c@XHH+@QpD)m*pkA`aJ!0M8ZjXXfl%X,adIG+cPG0qCd[QBCGDV,fUN*J+F"`!e
i!)CU6fN$Y*J9*J!3R#qRB'dJ8cHe!2be[(VAXmV4TL"Y`!8"!"*XLBrQ'M4Q)89
0r%"3Q!'U0Hr)cACeJR4!$S`"1*!!"maTVm%!d!N&,!%T`!L8`!CBXGF,%M!#&pY
pJT!!)8!*FN$%-6#DecENRH,$&bF@SJJ!3E%rf%$GDl'XaMI90L2E"XT!'jLa0CB
jJ3-"1i%B8$U"'1`!BS!$L%%18N%MB,0`J"mdS!D%#P)"a(!(U!!65-!j#`"3`5D
!Xa#!ck)#@("R88%Q3%rF)'G`JFi!$53"%NJ#N!$"-K#"*"!%Q-!61!*#S!T3!5V
3'FUI2'J0'6-*Y)0r)!(q+M1!8)TJ`8%S6a!!r!!U1!9rP4M!!3BJ3a(!$`J![5%
!E!)iB"lk,+b0UlaJeXT3&h"VFqfZl30dpK6)UY@b&GP%VF40$HVi`)"Fm3p!!,%
`2m`,!)3!rATQ&!LMN3D&M5E38!!J#8`!)G&9Xmbr`!'&Bd!"`&bNJpV@0Z5L+F!
&%-(1qJFR*KXN&i86!A,&NR)Y8k$INKKYb'pca42)-J%h9b`"fUVJC)%)Q!*@kK0
0JBFl"0+"!+Uh)J!EC&b&Xi)m!-FY30TS#QaEmk0`hKX*Z,I%B0rUfi6EIe)B&2)
(NM,JfSB@m#i9MP!Y##E,'bLF@6&bebdcH6Cdi0lb!T9EF2X2(q#hkV-2,$cNXR'
UfhXCLh("$d#1&%Hc8!%2m!eTXm"3!8q3!&LJ!!iS-&)!%b3@`(B!)%%R"!D"S-F
)J*5N5Q&!!B!'[i)HX&em!!-dMa(i3@RA+E"GH3!$$!$Fr3IbJ1hD!iLK$e!"b%)
cEJaLb)06FMeMD+Ij"kF%Gml,"C!!#[S!#L!N$!$"R6$Y43,HC5US!*lh!jK-rj%
+)J&12CPQ`"eihN%34d3*+TJ$j-D(DS0B``L)`"Z!!TM-$G#"10R[JYZm5'NB%`1
d#Rp!$hl,2l!#3i!Db!"XS!0S9V!DY9K!CFf*Z(TUI81U&3+VYY@qfPJVE#fBVF@
e0'[ApYVY#fblVa`JYZ"Aem)"C1YVF8!"k,BTP`!3YYG!#HkRZEeHeBb@"B#81`A
DlE[PZI*@iG6EHjY[pbh,rEG&9b8mJ+*lF*qZ`&fi%D$K2Yb)Uh!SVX@e!"KAipS
b6&+!2#i(VTX+Cq6'A*1,FSNZbq8d+@cH"3YqF&TN,[9X[93,kZ,Fr'C0i1h)033
PppNS!U&VJJ8Z2iP9(hJ5I&`UFA8$!#V`!9KA"fKG6G"e[bir#,YM9`B8!%P`Gi2
")&#l25!)q!0c)!--J$33(1BJ#rX$G5!$#)!N1!*)`!Sc'6&-$Q6!!IM#rS!FL''
p)6MBJH'PRiPAF*!!!mCE0`1!ifeHNGF2md[+f`HQRMq!"p3Xh3B%3K"($[(REF6
`)"@)hM`X5NV[k48PU4F5pl-'p,iJ"KX"YQkfp@T@"T!!#L$"&6*6$i1+T*kQZjq
#a6kJ!8cP&%1$eI*HM&9KD`#aH&43J1m9#9D,JUN8NCMe9JSl2%6a5#6VSIk!'F5
D4@"li5[["@j36-"19MjXIIiU,1LAG"@Z*,60#`B!%B(GPZh8Prf%B-CJc59"`#k
cPGU9V`cE''jEc`'[i8qm3M(f'Nk,((S0T!"2'LX"()!!jJ(hR#$m3"LJ!MH`Ma'
!2%!iU8!#S),DX3"-PS@G(1aBeK3jq"U0&`"d+XMqH'-N&S&-N!$jm8'Q%3UC)3H
,86)V)2*Y,DmpjlqU9rPUN3[U0kBQB3S#a%3EYNiE3$mS,rF,[pSBDi-!6%#iV5)
3pL3hKZlAFcKX@Td*8,%J+)5%3"!B!JjJ"*!!)!(!!),!!3"!C`50m'P,G*5Y@'f
$`QX3*`+"'J!&PD"RR-Kb)S355bC!!$ia%jE8*c*!pJ!SZ%d0)"-mJ$J!#Ne(8QS
eBY#@Qd!JG!-NJ3T-fLGJ!*)![(JA9Z!!&-YENfY)3K#!6eB!%J8"d1J%TS"b+J)
#!JG6G@*cG#j`C3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!"B!!#ci!!!!!!!!!!"849K869"6)!%!SAYM'D(EJm-!!!&q!!!*p!!!!5!
!!!BV!62MB`!!!!!!!*jj!!!%##L3!!P"J`&Pc#QcSd'#"&(U[+&6"S51(L#NP*P
6K`dGKb"!&(&$"X5HL!HQe"%cKii,1!))8LQ#K8S6+&0!%0a*F%'bJ$0VhXc*XkM
4SU(fM-N3-!'pJ!(mZ$'TNL@G2Jk0[*%$)SLF-dP)PX&M%@--%(6HG2dk"%3,%'I
*[('B))NC%%Q+(#P$Ck3G&&l2@2'b*A"B-Q1lH'%"JJUD0(1XK'&6Td`+Y'M+Z+'
Ei)UF0"6CZ%(aT!iG1+BC4jaB"S9Mb*)T@dlKN!!J%J!*QVaa%fE-Qk2!!k)4i##
!)S)'!"!!!!8!L!$G"24JlKbkp&$E"JeV5Sjl`!1b"N)P'!!K!2-b!0bJ!J+"0))
F!+3(-&3+338$f[hlaa2()Nj3j,`j)bG-'a"6kSLC3fG(Jcd0%P""NfB1L#C3VS#
JmqB0'a"bbY#T)mH046TSbS#`%iC0R6)@hjJ"mFD0bMGb3,6"UA*15MCX)V+8NbD
-'$B`@B#B8bF0(D0XmS#)8qF0R6*N0Vi"!5HNR6*Zk)")%lD-R+iL`p"*8j1QQBK
Kh%LG!kI-Q+)Iak!*8h$-96NRdEbCSj+P5jJk`dJG8r-T@4F0)PiK5ZHU'a!aFZ$
)!F,*QkpYa*J&B31%'+P-`Y`*k@D-5L)RRV"*mc@03"B4KlaT!kI1Ai4QlD4aEC&
)'6KdP&Ca3p[X(+G5CB+i%LE0'V9[P!DNV9DPN!!`Cd$-L!'M"Zi%5!bQBF24M9)
RCHk!d&+QC9`bN!!63%'M!m3+'c5dF%--,G4JJ``Yi,"C4%D%J8Grr`8iB!Xci"!
J$$EB%&%5CC8N8RpXN!$a"K"h9(FG4bk%-BB,EZJ484"``)%8%f5YdCm6@X!!J``
h4*C!%fq3!*'''@PJK9N11F!!JK*aeF'A9$(JS09899d&3KQmd6%A(85jFFBFN!"
&0&&&)$"'KNTNNV945P`T00XB))MB4R9Z30D(Me830NG%2f**44jecA&H!P%d0FB
D4"4dak"26-%K(@B-5N9(E$`D+Cq2&Z''(3ipp+)FCp64"PKL8@89@@FdF#H$GE5
f9PY"b"836+4'"!))+2!ja&k!+FAK&&bL#N*r`-SK3`def!T##X1#)!5PpERK8!+
hlJ'55#5C"!)9FV`dPKNca4AG6#LTT"GI+[jPNCUlmQ84AfA`L4CKBBeefDr"HZN
##+XQN!#!&Aca+4&&Fd!a@,12PR''@Ce5kkc#C2%jCX%(kp!$#%b!G3C++,3,@!V
6*L$&FI@*Y8HVDhf%P"Pdh1P[!NR-0,("&PfXC,PZ#(bV%"$Rr()#XHBa+leL@3a
#Jf`3&V+r'BIaPFiJD*V9(M(hXA6-)0$F-DpcE$(cB&hikNDaU$,,J`mJh*b5crl
Zh,2!3-XD%Y($AXcY5dXRd266,pmU03K8Qf'e`&pEC(6K),5!'Cr,T5``dS3TqrF
H33p0kZ#XZXV@CB9D&Dr$ZISE"+M0&RYXXJic5bbATdpElE8MP@64k1%aj4488TP
k99CK@'36FA-m1DA6Ek54&9PrSIA8Ufa,*kjEDkSda8pXR'!4AAEK95D[k6UhElm
*k'B5(3*2J5T5R9Yjm3RXRl"dqQA!KiGBkp[LI[PehG@5ac@$i$iI*N""#T)a!PZ
)i!9Ff%-I`2#$BQbK#bTB`6'3!('f@Gc#I`hl9m"H"MqD)D`X#j2$dNE'&2D8MRA
)bU!4@Z@Ac5%N$Ea"Aj8q"cU"dHk%aN)@RfkP1S5JX!BKHjhZ%(2$)Be&,)`*#jh
H*CHPj%pljqU,Z[B9K$N`C94lHTNEY[)F,b'&5Tjl9dLi-MG5IFp($Z2C'5,f-Ua
9VSaKk9K0aU!@&%cKLI[MQP*f*3F8j#!&Hd4$(f-`Ja3!%J5dBaE1i'Dq'*B"IR8
$JIMS5!FlRZq4-e3+lC4L2LpLdR-T%&JCNNC$Ic954TqdNY&SYm1SZ@&UTj5Kjc#
AaTi"$RiZ%aP-kQ"#Sl%[C#1VLeS!Kl,eJ'"P,40B"bYf-DeemJbb[)SQ338bJ@&
YQIe6'eLJTNBf[Sb%[#cDa5CC4h#bKj-`4#Am8*!!b'VqE'qPp0XV!9He%HkbPq1
FSeUJ&VT[hM-jM%aR0-XJ4cMNJCfJ8NS-P),0a'('N!#$mKImj!I3RcecS&"cTlq
-Jj5V)23-#QAS$'N@5RmeEMf2DiR5q!4*SjQ6I!kE(#il"C%Id@Nf0P'9M`!Q"cl
4MN0R`X-(Va,#N!"0$'#(`@(V)Z1f09jQ$`PC5$)6B!5F)"*83#f$8)d@JbR4EJJ
1lDU)P090YQ&YLf**3K'1)"*0fH'M9[$#&Rlk5Uef`3Y+1@T,AU,)Y4'1B%MePLr
GP`"VZB'A(f&)Pm*M"UZfkNa%XNP@KP+8Sb!QPeM6De,2jVm64)pY#CL-8dET"K3
m`6Hp53i)eUPC[TBd!D1-h-Y%Ha8fP2DdG%LY8YVA2QCC5`eeB!J)`X#9kZ4%1Pf
%TNU'D"'AbA0U9CA$RCi,Z+JbT!q3!!%#!JK0B@YPCQPXC3!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*6d!!!!!!!!!!!!!!!"849K869"
6)!%!SAYN6D&lC(8!!!&q!!!!N`!!!6)!!!"hJ-2fD3!!!!!!!!""!!!%##L3!!P
"J`&PZ(M6)!'60'l@J'Ma"X581Q,Qd*QiX3Q8+93QMJ&a`L1#*Q(@P$'6KNfC03)
)8LQ#KBV(+5!)-J!!K+"-QMBrjJbiXkI2SdJ$KYT$TJR"53%$q"%M*ibF0'AQp"'
4a!fG-R,-K"P6CQ'$-RK!k1J")JB)1K@$b$NcC'*E%'3B*NL3!-3-L#4&MT5K8m5
0(44bceMaXL9a9c*SZhKK!B)+QM4cV)4K8kG-LVGSbVKTZ2I+eDpXh+"i8SF1R0D
8Sp4jma@&CFbD1AY1dC!!)")!#CUmF62f$3!3)[BmT'S9UeDZAX'+*EX3J!%!"!,
-!6!L3$S"%`"!13l!Q!!)5mR8)CL![Fq"83N'3!L![J`!0q5"3@#")!F!p`&`Na3
%+6"!1rrmFe31*m!$8qU)Q8-("$&L)!)1T1-#MSXh$4)`5H0Q$BJ@Ea)+*(LaB"-
S8kKF(!2La-FT*8(BLTK!)F''$d')f%1P#4-S%mA)#5-R6CNjI868["PQ6XkB+a-
NQ*PcCmqI3DA8F8-R6CXb-CQQdFR6*e!45DL@N@-Qc"LX%!'GA3!!: