[comp.sys.mac.programmer] How to animate clock faces

sdh@flash.bellcore.com (Stephen D Hawley) (05/04/90)

A couple days ago someone posted a question on how to make clocks
that could animate nicely and weren't too slow.

Here is a binhex'ed stuffit archive of a Think C project that I
whipped up this afternoon to do just that.  I found that I could
get 12 40x40 clocks going at once at about 3x read time and 6
80x80 clocks going at about 5x real time.  All drawing is done to
an offscreen bitmap, and stamped to the current grafport.

Routines are provided to:
	* Initialize a table of cosine and sines
	* Dynamically allocate space for a new clock of
		any reasonable radius
	* Set clock to any time (h:m:s where h, s, and m are in
		units that step from 0 to the number of entries in
		the table.  Sorry, you have to do the divide by 4
		on the hours).
	* Draw an exisiting clock to the current GrafPort with
		triangular overlapping hands and a bounding circle.

Things you might want to do with it:

	* Throw it away.  I wrote it in two and a half hours.  It works
		pretty well, and is fairly efficient in spite of the fact
		that it is also general.  It could be better, no doubt.
	* Have it draw the hands in the current grafport's pattern and
		line width.
	* Give it a more decorative face.
	* Add color support.
	* Change the hands to be more decorative.

This stuff is all freely distributable.  Just do me the kind favor of not
stripping my name out of the comments, and if you use it in a program, put
my name in the about box or something.

Steve Hawley
sdh@flash.bellcore.com

(This file must be converted with BinHex 4.0)

:#@4TB@ac,R0TG!"6593K8dP8)3!!!!!X'!!!!!#(VP0*9#%!"3!!,"Kb6'&e!3!
!!!!!!!!!!JCND@&X,Q0TG(N`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K85d&)6!%!SQA[`+*Q$Q-!!!!!!!!
4'!!!!!!!!!Nl!!!)f`!!!!!!!%pf)p+i'F1Q$TNb)(K-#H1QM!Xd2KS%(&M`B-)
fBHLJH4Ka)N'$#%@3!%N6KXe$%3dD[&!"BQ4*&f0!Y!"aTNa$159TbURMTLB)-fr
NY-4j4q!C%$0!S'&iN!"-5j*XjM3!`A)+R6*f%#)*FiG0Q6`JjT!!332%$*X`FcD
++F1'cCLJ$YqfB3'LaSXF-+Db0&+'l8mjI8(3H3-#m-JjG15N%92R+Ph'G%$!mBS
@)4R#E4"U4,K'S&-cBH`%"I('$!M+GScU"G%'V*X`Q8%)&)`'iC`hGH5-FDMh48S
kHH#81@JDmFiaNIH!@!QLi4h*E`4'"LiF4&'0)-VJ54`'K*JdG1D3!$B0"r#B0(2
5[(&$eAF#0ZZ2SU&VCdH$2L#J2%RLK)Vp"SKPP%C-q[&(K9*-II&@8'6-XB863cc
aK"4%60'&I3(5-5!)4q"N"K4"4HB5'b$+3FGr5EJ"hK"[-$J(#LNdX%F$#3"f"RT
A#C9@L,,CPm"PGBMK&@ePd"''Maf'm@&L))44iSNT*F#F31!eb9iBFZ!%9QNJR+I
EN!!,bM(5DeH*9dGk26ATA4T(i665QB+p3509)+c4&aaU`KFCPq@9F9jkklN`*dY
8S)%HDfG'YPDA*ARPe&T!!@EPPTX*C3C2b+R(hQ`D(@T''Pi*QN"l0%B+!JTTp!!
$ACXC#8)2-P&aa403*2%#$6[)PK!)%%T)i45jTV(##Uc@jZS+X-T+UkdS!#PN'5R
d1Q'&+B!`B`)*,18''3Uf++D$DA6ad+ZRlQKL#LJ3d833@%J4""&d[[9LUf'NN!#
#MpNQ''D$@i6VJKhNSQ!Z(HLUbkklm,+%*JVdfZYM(c3H8H56+*MJC)Mhd[L%F'j
3E-+)6fDF`"36KeMaaHID"h%$),+4aeEEHY9!%f(B'36-C+"J4dPd"48''A5Pi@D
-!i1`-a[ffBKM'6UL`D223-[QTRhAY[`b8d0f1JI12LU0'01&P9(5&dIl@$3HG1A
aRj3XhCM9P8DA9%E2MB(YCKT`-L@E'cF9pM2HFp"&R%!)GCFB56h9FCBFJd,RmKR
VaHQGCV8KZ+fST0BS0KYNj`6Vd5#8`'Z%d`*,SpBiNlZa69E$k'-6Ef4&a4XSR)T
(`&$6U5fhqcS)f0K(LiY'#LqXfqkl+E"!B`)SJ!8V#VQcY(Zh,Qla1qI"rdZmm3J
l612eRE-4-1JVM1jVKEG@+lUd[rV)"1'ceikUQlVVkbfri'FrI2%([kXmY[2l@If
f4Ee[@@pci41A(EEA2b+),(qH1aAjN!#L![DKM`EU-erTh!FrfTe+D!+8R[fU"d%
f#)q"ab2#rjJ(3UH)N!#![6XJm%UL3"4fMi-0L4rD3*!!"j%0!6jc+%2V(PLNh,L
"BBED'P-bYM)L3!8+LCPCcFV`,ULJ`%edf@%2!H3d%rNYDPUNf[I+F+1[#F@**B'
L8,5'4U64U'KbH--GK*!!Kc,j#$jT'Sb4f%"(1dCT*BeVe"['N!!4fm!K$,[jb@L
kijbRj-3iG8"1EJUhVI'BB3jM!)a0eN3(M-!"FbV`cHQ5f-D!Y9'0d5V$(G5)!K6
Jm3`T5)mHbP#DG%(&H`P)JfQ3!)LH8[B!9M"J3V8!3`FMSL#B'4YP,k(5!Kq8aJa
6b'4If2-m)B#(CRK535TAQCK@[M+@DCKP,De*"fcL8THRBL-cR@N'D%TcNlm%!6+
YY6`RcJ%1EjJ$+e'!5R@@4'5D+kBFMSM-Kd@*C(53!)+Ik&!aAXkKMFemCM3ekBC
QLJ%hfjT$mZ4*Pe@"3!BU`1*(3rUc"mUaMf83$kcSp`)3i'Sj,*%"R9J+!KaN$Te
A2'NG8`S#%i!J"Y8D9KcRZ0-jj)SjKh6+B,,cYXcTX53S9HQT[MR8U0**TLbCQM)
IZNk*[V1L2UKU8FNP9MmQ`*pXL'Jl*cT0LeBQ#'3JJe"Jj349X[+TI#bUb(#+9V@
kNk*Z$5*FjISUB!U6RYLb*clef8eq*JCGI@ARAkH*b`3S0Trll#FTEiN[BKUcS$4
Df9Nh@j*QdQqP2r04C'm(+cbSPV4TpB(cH2MDCCE@"fJJ9f6ES&[B0P1U-1KD%3I
Ud$Bb-5@A&@`ELh[,"RJY4b!i*C23+NDfr58`GF$6CX*bb%5HD6MHf9*Z(#Qq80)
SZCPp,(0[keA!qN!-EifV((#*hXDLFVfaE5pP49CI1E45XlCP`h%EJ0!UPJ5rG*N
2DqLL8HH5F@PRI1*dBBZK,NC'`A-*5h@C%m6)G'G%4+**'TVUY2%'m5f9e&XE"&+
hZ"@%TqBGEB#EQ9YBSD'fA,dYEf(9"Ka$e!G50HTpN!",&!1c!F%Jd'+-RJXfkDk
4`M+LNG9`PV8NFLeL(P*MNjiNh$*#&ikTTC&#NG15P#CdS@YMMPbjSLB3,j8KPX3
N46RT59*&V'3Q1PR)I)43Mi%-Bhc'-ah)15rI5TDY0K(C34!cjXM!+V,kYBP&-GS
J(a8"*d&XG-8@I@EN*$-"4X"*CTj`Y%fEZG%LB`i4#(1(T83Q$lLa$N-LBkVZJ#D
4Y3'-#d!!JL5!3!f*!X&hV85DScfQ-6b-p9X8ja4J)bD3!1)4@hTF*KPNGqFlR3`
$RVM8K!(C#5b`'hDZ%B)#8fN(0T1"&LK&QB!RY,2$Q[lBU4GDV"RlB)H4lH&4@I*
GTj`&ZZDP%A1b%'Z-J+8SDC(F',6PNqeUTdpc!*3Ea$-i&H@aFVYl5QBQVUNjJ,,
A*mL+)RQL9&F6+BK0NP5Ik!!FQV5)$,X'!F((Zf,+q-6JFC0$(YBYF*CF*X3P&NV
'2b8(a'6ZY,5aYeCPV-4+`STQ0X-CIQP-&a68B+BPI3%1k1+Q&pa!C1kqC-PFjP#
FFIeRCbH$b#jGQGDKESNq#M9XK2J'XVpp@b*E!UK)92FmP"hZIr3jBEDlBMHd11-
0fBj6VDbhTdraCNbCZJmbM))EB&hY@Nrl#f)!!l#rHqaq[h[84$Sd5f1DlRCR20l
M,QV8KeleD[H4hY[LGYKr@Xf$Vpb*eq18M*r&k$%@2EQJ6N@T4cC`Ap5m$$V[Sl"
hZ2ES-A[b[lMfdd1rkE'RNG`cFhfFjAh[h3FmMITX-T34c%FF0P)EY%XBI(SaaLb
#3ai),IP)Zi%Z*N#"qC[TrN'$4k2i9hpVp9@64R)!Z$cbaQMd&KDk%Apjd&(#T$)
!!JCND@&X,QKTG(N`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!"849K85d&)6!%!SQA[U+*Q"5J!!!!!!!!"*J!!!!!
!!!$q!!#BC3!!!!!!!*Pm)mL8-C2'64N36B*JN4+%#)JD-'!d#$L`i%%L#4Ff")%
#"CNhGF5`+C-L)d-L+5B+*'J3"*8V6k!Ni5M$"3`3+N$-F"'$4S`D1@6BU%%M*8@
@"jd-HI*%#T%T)'a)E&$'6Cdf)2Bd5$#Pb&)R$RZ!J-&LDj-N6UT3+9)f!C)R9D3
dk,1MJ9dkHH#8@3PL$KdjGFE3bET95"Sk6F,!`IR'M*NTBq58U9Sh`4`dEq3-PK1
'$!X3D$khq6cR-jl2HHVf!8%N64JfG4[JeFZhp@ZFYYP!q4Zl$"ikCH5i!3(P$CX
m5-+i)6-5BCJeCB)NAiiL4GhFZq8iKpl30C[U1`!#!!KND@&XF(*[DRN`!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
38Np+5d&)6!%!SQAZLD*Q$jJ!!"LQ!!!!!!!!$VN!!!!!TfB!!!!!!!!!!,8D!!!
%#!MJ!Sq!&Ji+9%1`SF1(%#%L)*-Q$"XiFYkS!55!)"3T6j3X#B+%b8##J"jq$$Q
bj-Q!+3'iB4IaSDJblK)pa'!UQ,L'&3#3!"%+3&m!5!*I0J`fVU%)!*S!S!KJ+3#
DKNS"#!25B-JE0h3bXJ%"*BbE-Q`)"S8#J"'!9J(i*)8S,%M$#`!1iJ(J+8#PZ3r
4K4&JK'e!$&KG"+!*B!#mQT!!)dZH6,QbjFZB-f[Hc,QcjmqJ3iXH6EUdkG1S8kY
HcEUekpH`BmZH(I'a3)*+`@3Q3"U4`)i0q4(8MCRhk!#5!R4mL@riEY,)P6FQ5-p
jFG25J3-J$J!14--!3!$Jm10JJ&6`##JS,a!p!3rXckHA%GqpNrVT#H%R3'UrXIh
Qi(F!I1DK4j!!FGKK%4!-"34%K"4@51(3!3%&`!8!+Za#5N1!31#3!(ML4B3%35-
fa0Y!#!E8`Jj8e*4LH$#Dq#'-+f,aacrr`)2M2rMXb-q1rJ!T*)j"%MRN2d8LH@5
56#lTT*&3+KPPNe-q+5@50rl$6jE`!-)4!LQ"3S#A!JJ!5!!3Q-Q4Q@LU@@C+#9"
N%3KMT%&((M'C'C!!RJ$`+B!JUUJL5*kq!5!#S3%GZQHKL[E*D%T"3!%&%cp8qN1
&-3'!3%$r`!#!,3dGi'P!#S3'Ma"i++"%*miiS3X!9,J+J"NXm*!!K"0%B1&U!@i
FSFmrbTM!L+rr)'-#)E+DiDS!U,KUJ!QbFL-V+N+FJ33H1#,a"J!%)(&&I#,Sm)m
XVJiJL"1eH!K#'`#`i33NUG!6"6i+H1%(!-[UF`B#5N"b"J%)3!1!!8l8!3)1#Z"
K"J1eD['%%dAX5J!)$""VKJQ!&*c&)br`3%339!44E5UJJ(!&@5,JN3!#)$3!55,
%1S%a+#kN-NUY8e!Ka45Z%Z!-X6B)@qZ$46$4XbmJ-!%#!@F`i'S!YSa*%!0Qd11
%2J@SiB39rfJ6"$i*3#$#%h#!3$-F!8!6J4B45!0-%2S!)!%F"G"Fa52DpTR+*8j
i8E!,FX`KaaJ!q&U!1bEJSJ!I,b!-L"N#B2&)`8LF`k-2,q3eEleJ+,$a#`LN8JS
)(i!#a,)NR%'%VrlJBJ)L)%"`KMNL!+&%*'Di!)#(`03kK"4&pmc#'54JRPI55cF
Y+aj5"d5eeES3!-h6R$$ac3Ir&!c(!kNNXbXIXL,3Xp8'TmS1+#@JM)3)'(3H"$U
DdK%!)4K!)d`8bIa$$b5)3*-)j!9l#Xe!B$i3"!!8*"!"&*l`MRm!!`42%!)Uj"D
$0(!,!"B!43@%F!SN@*!!!4"-K6aNJ)'RHB)%@+K'-'L!!IDj33CRX)!8JR!'!mc
`$"SSQ!a3S,qRi@)D8Y!K$k%A!%3!8BJpe%8!($%095#TB%pcJJa5!!!'+-'##M!
$"kJJ"$8`!!jMk*i8K'!'I"ba$NqMJM45!3!(R2&TE&KM'mGS"J+FF3Me5*-[SQ!
'DM!J$18aJc2SD!!&-13#5**"#,!3""(SS4pmN!"'*#5KK$15m'N1+%)H!9!0E,$
`$$*`BHSF-%-c8'#(53b!"F#!!94#$`$S!)-$A#NVH)#"B%U%J$3D-3e*",#%5V4
M%!hf5!L!3!IpJ)!5*JL!-k"JKe)jJ`K)J!)!B#!,3KK#1hBh$IJ4S"TCN!!"2mS
MK!a)!(ip%#GkSK!%-l$MI3!!3[2LD3CM&!`%HZ!(-ikT6cRmJ`i!@'C!cS!"Ae5
c"fD3!)!0USQ#TP&M#,+B)!(+3!!49*-!m*4RTS"J"Q[JNaqU)!Y'G`H$B*K$#6!
3KXBiaS-K2)%)4IM"!8J'JLp!J9jH!)(ikS##I0T""(4!c#4SJS0T-+0J2H@(&i3
K(##)J)8B5+SCT%%*T1C6#8b0je-aJ!"*k))I6V!U2h#3!&@RXP#AAm@"@%e3eUd
5`!#")!J%S+L,IiKLLP@m)J#bL-Yri!)-"($92k`K4`IFm`XNC#%XX(#&r1P$#GA
bKa2J!3*qe$5a')!&*KVlMmG'GV)Jd-GP-D"B)EK"!C!!#%)E$!!0)!6K-3+!JH`
NDaX3C)i!,l",461(J"GmJ9Z91`J*!'##!#""#-3B4M99B0`L)+-Be#$#FB8J"'!
%!aU#X&jH42#"HpifYp`5!@pp#paca!"IVkVH0pV#AHpb#lble44jZf9Hp!+!$`E
8,L2DDl$[kPDmm[dYIFmV+aESPlqfIHprab[JbK(i95!-`)'l@`FP!%)0(&"#),a
)"%!3)4#b!X'(#pCK@9QJ`b1Zm)B9-1*A'D$%GA#"3R!N#d#-`3"2m8l"B(%)-6!
!%-&!!K"N!!!K!%()"C0&Mc@J1b-,'FK#4X)4I!!!+6XL'$!iJ*4PF)##$EHiiN#
%1"+KC$(J!mM!1)3-"L!-B,KJ!&*f"M#N,)e$P+'VJK!$!9)m"5#!J4chfT`A2QF
!QG,d!fF)L#Y-!)62,8"d*[J!#"D!JJ&)i3M[1-+PGA!!-&L!d)BZ'D)$JSK,'i!
3!IQ$2qk@Z95B!JBIf"3!#Q!'EYbdAXmSJLD1S%83$-"d,hLd+%!`J83$3!["6S8
N8$!&%#`"&#P!fcd*%!S2k06B3N!"%T)pl')(a!E1pM8V36e684YE"*F'!4"!S""
9J`jP6-J'-'KQXbJdSfZC))B*Q#"YJbe"#8@S)bK'8$"38&J'2%$2%25K$hZq#Jd
)&q(#pi%#@A%Ki[1B1!GN"B@)df2LiSXE%GkpVGjHT5-X`i-!6!%("N!$%V$!K3"
8B3B5b)S-%BH(V)J3FAR)LJFBPa802&lJQKB-"J%)K4&)J)5@+d(PMP!$!8VK!6!
)S0T)"m84B!$@A)!J'9ah3Mj!S)bM*pd))VJ+!Jb1G"!N3HX&DmJpaB@2IkPE#*!
!L$ZTAJ548JA%!!3"2%&NR3-mA#8(F*KJ$Z*!R!*``#&%hJ`3!1%1*`!!mDJ!3N!
%KRL!0J6aX,Jm('JKHPb)RKHL"iESL5&kC)LH'D,R2"bS)ATXL*iESJH(k-NKH[J
KRLD)I`cLUi2ijL"H1)X2b1*jXrK0,Ci"Piq$KaC2JHJMC['2Alai&MrFa9Gcm5b
)[UF@6i2Sib$k"eQmjKG2K1L2D2&-L$jE&YqLa5YSm4I+`4c#R`-jX1,bFL!ArIG
qF3!)JK!3VRFE(C%!#A!E!,!M%'KACZ!!K'-"$XJ!F8!%54!%m@F!FX)',N!i&3)
+R0!-E8##*SL#l+)"I8)3GY!%36!%5"!!#Y!%B6!'5&!'B8!'C4!i!$!&!N'#PI!
03NL%R$#%'05#!G%)8a!%%"-!"M!&CP%',R!9C4#%R0!0C%##@XL&3f'"fQ%0-%J
&-fJ!E4!'G)!'93J!9aJ!SQ!'"B!#EaL(FeK0&RJ5'+L"($J`(lL'9`J!-9&q!5%
F!-#!$KL"1`)+VL!-(B%BfZ%,-$J%,B)!0MJ'9#!(B3!(F`!6#d)3c9')$AJ5L)J
MS0!01[!,!&"pMpL%%--YV&J%!"!'"`L)e,'!SFJTSrL'$a!(5BL(F3#$Yc)`CjJ
'EK##Z+'#b&L#+kL%!2##-6L$0AL$1EL$2EL*31L'F#L(f9L([HJm'EL"(GL(9XL
*8N%3YN%3!d!3,6)3kCJSZ+%T"$#-EJ!#p"J3MNFEq*L2qVL2r%J36&"0!@&Y%A!
!mS!!8#!%4e!'G&!%6f!%p"JL!'"Y%L!q"LN%8k#3!!cTN!$e'*!!XB-!&U!!"aN
%E-!'Ec!'D&J'%'PY4B!!GJ#53Q!%E$!(D'!%DF!'+%N3+SN!LV!!"`Q6G5#60'Q
61'P!#1!*"h#3!%0!NR2`Ka&*-3IJ!LkCN!"dB!4*i!CQm!BTf6)))!`ZHC&6@C9
AQC9fX9F(kC9'`!3PZ3CC+33)S!iZ+39c-*9S13CU1C4$J!!kd*8+D34@8)eCZ3!
))!X9+39Pi!CKd!BSZC&0bB!Q8*&%J"B+QCJ3fBi&S!!*)*9'-!94J!4N)!H+fBi
*i!3+)*9@-!4#X*QG1CN"N3"L-*S+534bB!HSkCN%J3iJi!3'i!))%!4N3!D`Q3C
f)*Ni+3)(J!$@`*0#)'8+D39JZ5d"ZCUHS*Gd`*a@LCA$53%()!N*F*!!bMQGEc!
@+5N#&C!!!-D`RFRTP9E`RBVT!8pa!1*`P-P*0S8jR!U!!'*JRNJJRfiJ"4U*NkZ
T!mJjPfXJ"@Ca"NcT!D3L!3e`N!"9i!BN5CF%kJB'ZTiL!!([XD"#)*)2kK9JN3C
R3+%)S!!QJ*p$)!Fk5!H*kCplC3A)534T)!FPHU)(+J)*B%MiqCJfLD)8bJ!*)![
)fCe8@Ch$f3!+)!NrDTE01Ca"J!$qF+4l+D$$+33+S!Xr#TGbQCE$Z3!+i!Ii5CL
'LCMV55UQ`!!(+C9$J)E0qC!!+US!pN#Q&UQ3!'G+"fNDTRXP$ZBCTdh`"X&*T`&
4NITj"85JTXm*!!ZJ!hHUP'8!U(5k!!k!R&)*U%NkU![JBf@kPkBjTa"T+,IN$JZ
!"*RTSR-!"fJi"PG"%#$!!JCJ$!a3PAB5"(!!"fbJ"9mKR-jM-JIJ#`[JPDi+Ud)
3"NXC%!2!$L#3!!%,)!S)`+Td)+YR)DK9"!)Y-!#5`!#kqUTX`!4Td!Cf`UcYk$a
5ZD[9HUhCUTMK36JqX!!fL!IHUUa-'4ifJ!!'B+j[B+)f'*I9L)j6F`"5UDi93K!
'J4!+%3!-S3+m3!d#)!m%`3%")!CYK!4"-!8P!J"ki$#Y'"#'X!5hdRi")3PA`!4
2-!3%i3NAUb!"S3SZ"9-YD!XI%c)%S3djXc-%B3j%%hm")3p6N!!&63#%!H%23q!
%4R!%&D)!8j!!"&S!L`*K!Ep60"8L!N3J"&AJX`,K!PK3Xde3)6VJJ!ka)U#!L`(
K!1Hh)M'")rDB%LZ##9Sl-,Lh)Ta3YJ03(5XL&`ri$`&"!-fa)RXK!'!lDaI5!MS
3I`'!)p9R!2#c)N2aY[Bi&(UVHS3lDeHa)QQ4Z!@3!"CkQi"h@`$HX5)RGlF1m(J
V3JKJ+hJ1S!)!X#+qBEG`1fX!TEFM3VVfZ"GkDhUU1fYbSEHd8!"YX!CKJ!CX%!!
b!!!#"QeKD@iZBfpUH6!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&4,38K-!3#LCI@fSQB2F3!!!!!!!!Pf!!!
!!!!!"J3!!-ed!!!!!!!!hd)MdVJC`kB1Q6)J4*!!541'M3Xd)KSdH+%#""''E%!
XR!1(6CJm)1$)HA0'6TJf)&U!322Q$JJkEc5DG,Q`i4`3Epb!#!1L6CJa)1D-N91
QM-i`EXL!1&1'cNi34-2-b4P'$*Xb$8"82&Lb+%ic3H%89BT8kCNhEj316F0aTjX
d2ZQNbHNLU`Ul)+E3+3-(M9%35-,FZCU(49!bD)#Bm6J(M3XaCGL`'I1'U![+E3c
AH*%$KPfm90#`"6%D6KfVDB#5HH06S!X3))l%$1-h$0QN)1V-3CM'U8#h)#QlfB[
(DCihG8iSCC0Q64R$DR66`EZk*d)kIN'X%DM86"JlPEq#F22'k4`kFY,!J52`6%q
3!'j1)N6Zp!eBl!LReT%cTNaGV5"Fd4XD)-3JJdBBh@3I9,DPS4X)-X"!QP0be1(
'69A4"b%H8*A4d%Y`cAF8#%hm"%)55A$i'`iYL0%EAT5a%9iEDIQ(Pi$BJ@!$JMD
*Cp*#$p)!Jf'p3@8KKQ*S@!1(8@8N9aXfD[@#4#-FC)C!#$P"4"*"-$'&MJe8@FD
9EL"%K"4"%!'#N!!5#CK85e#JpjkE1c6JjQTh5&%'CA)Se8BHEZSj4Tf#1[@RQd)
JPp402B#`ajT$3QVB$%)D4S13!#$d8@F$VEQ"3JS0l0&!!KFe&+FFljA+aKaED-Q
PPeeXQN!5Ep&aK%PQS'!#IP"84NF+GFjDkjdYcI&TX,6feS44ZKdlDV*d'*%6(FB
#qfbYUT*N,!a-@*[!&%d0XGp8FZJDKK`Mh@(YU#BP"@iC5M9+4@TV$+%S(FjHfjZ
pPC&4EE#(rYDS%fAF3H`GZJEXKU#'QD"`SKEkDjJ)A%""d"YMV$'(#)C4)88944K
'hUdY%B%a&#10`F+S#E33!a1''G(P&#'$`+fhi0,4Uaci+VaZ!L8kTkUaI`jYQ+X
c!`X#46f&iGa6BPJi"S%,NZG'#`,Y*FGZBmMPKRXeV5UP4!RF)GT9+)3J4"ed`14
T#LNibR)9F*!!%FCH3k03G)*(EjPdX(dd%(J$94Q,"kK%RF'@eN'aa$-)H03TDJ*
%dE'ITacbB$-)2k6%S3k3!&XlH!0dfiehJLL%2BI)L*HKq(PPS+VUU9UTAQILLmI
HZ+rM5FkZklR,MK(YC-!K+d@M!PJG6cl0FC0!3j8"jA"Z+99(hAH,Z*0N2+kD[!T
6PRef'5KFh8,FNbG32!L0UQ!lbfQ!KF)++k314`Xqc"&h$`-2mF368L$#&0$(-[A
G,hrXXeQ`%T!!J2L"B(le+alqfV#rr[d[J!18'`-C+%%IS+44-&JJ!qPR2rbK`9X
-$&`+@8D%QD3*)rC$)IhHPi$!$5jSCFLEkPMAJ0R*5A9EL&8$'X-l0rL1FX#$(DU
)q,Jd"#YVN!!c6'&@BTM-"19i&I(*dhJ5YB&3$5aPFSR9X$DFf((0Df",d2HQ0#S
cK!F&DHK"#%N$!XdCN66d)b!(Bj+q"(#S8B9$J46+`TT2JD!%$a55K&3L!a@F+8e
`%b&)!#N'B`hb6@d`*#*4-!-B,"*#MN36%5,*XMk!`'aT3&X)RV!'9D@1Ek3a$"k
N5%U@%BL5PL4N*Z1'5#Ii$i!#41%(Ge**3HT5Nb$`j3@$Z8"'%61AQ%5Q-S%j3&Q
T,d&E5%-A%SM$&cB%"BmNJLaTD8d([Y)QfG`Qrfc@,8FYV5,NX3k0j*!!Ka#-EB0
6b--FK&!81($bCL)X!Kjk3i8h6-%[NR(@#PQ@-fqbiCbV5UGKd&"&`qK["qmN6Dd
`NJBp)+3X-K(-28RP3PF#8C[HXU&%@'P5@,TKR#$)!kKmL#SJ#K&h5YcGieiDaCJ
HX9$M+CKKbZ-A133,TiaMSQq`q$d36'e2DhK*6(E$QrZ)jLBF!LP)lT!!bSaN,AC
QL"e#Z*SMT)#%U,S,faT(PE0#k5U--*dLKeB!bR"+%34dE@3i[H9'9-&4MKK03ae
lKmF9k2&E6A'V#G!U"m1FY![iQfAh@+90r"@QJ)q0,&lV+NV(BV1b2J"*AN-*b3@
D%eaG8baF3E"Br$5@YBb&@iFX*`G2`5#P[k1YTf)J1J)!#@4TB@`JBfPdH3!k*IK
!JG%13)(4'%#"d5JJEJ!$X+i!#'BNU*i!1LB1!$G0'!!kMlS$ZJ%-!#F!!3!!!$S
Q+%&38%`r2cmr)3#LCJq,SQB2N!!!!!kU!!!!!!!!#Y`!!!!!@hd!!!!!!!!!!-E
J!!!%#!M!!B5!$3i'e26[(m'!!`LUqqF[i!%+!#)+C%E4)SD-#FLN#F-'a*JdG2)
))"J%#K3Q2f,q!2'`CX#@,fA1Y-QcCd"4CKiXXZP!eC-K"&8PF8)%#d&E3ji3+3*
JT6!L3DJ%)@KZ#K8T8`M+)b+P#"1#rUCND4*@S))K6S`F#4M!`T3N@UJ+&$'Nl&Q
",SJ)U6*AS!iXDT[305+3!'H,(D!#0U4CJ3q!ajB$03aB40"P(I`)%JN)"!!JJU@
62G!Q5T)+2dG+RbB03$9Vel!$rR%))29U85(3#+Y"%!8!&!'S"-"PB!bE0f2@c(R
)3)!5!!5`!f!'`!!!6cB9C)FL%!k!&`PL!"-!`NNGmf$XLIJ#iN-S$bi31G(h6pe
m%&q!mX&qri$MK"Arf)1%'`!`X#!!&LbBi!mm!'0"+Zb!`#!#3lL6)!MCJ!K$0Nj
iiGk"#6lS))-4ZM&KK44JU#%!((TS$iJLNQKL(3F'p'#,$9))#!3bEYKKJcKQ-f+
**eVK)iXU#LP"N63Hb8#55qlBihNZ"-N$!#"3bB!)'iU!MCNbB--NMdi#m'18Ac+
3!-Sk-i)!!b!ceSKNL%VUf156$6lS!)8!B$"RRNFkJ+@IE!B%3jF-Q#%!("8B!%4
THF,!cfi`!#-%*N*JXHD@J[i!kD&'ZP23SU1f@HUT'DDk+TpC0[Q205mFi-GPEIK
Ma$rSY0#V%[q`dd1[6[`$$a+p3L%K1S35-1HcK$B`C`q@%I#214*bkb+d2)"J`*a
"f0JKX)Z#!4J-"b!"c$Q!"0(12[T%!`bf!G#MV)6,ZQJ1K5!i-1F3Z)E`3JJr)2b
P"K*bd`)5rkLTbcp522%1!"!dh'fddrT,k)AVG#ZK03!65DH,f-MJSM8J*-+ZZr$
+5kqpq1VElliHKb[`1J3II($#K',3m--41k',2qCBM,('1@2AmEBI2qhYV5@M'V(
+YiD3!!4f8K`KV$pD!2Ze&m8HkimBqrC+"V9I5VX1YJ$`X+h),R)$m-j-!d[SZ#&
r+k%pK!)`*`0cmG!'!2ii)k%mU0$"E$rDS2,'iUM-iF+!1bk9""9425%&L[3JFFi
"!2M3T3)m3!V$KL!J%%KS2#!"K!i!#(%++XX!5$3r-"3!FlcceJZ-$%Hm!!&k6V4
51a*ij2X#!-N$S%8232bMM`bq"h01)$,A'`ca,aK(!(V8*aLp%-`l$lhbdeH2MkN
6!S$+*)r5D#N!$lMlHYbbdplllpfcP`b-B$cN+3ppcD2(mk+R"H`K3A[F#eid[NG
!mD'R"G@MarR5Tm$e53pqJ*0I*1U(J2Xp$"MlLphX!2#rG`&[CX-Mi2%5X-%%,T!
!I3k%B!!T'$lXA$#$093I!d(i!a(#6ar```FU)S%+CS$!"IrJ"a1q!3!$lDJ*39K
#%B+!K#!i!8AkH!%$E-FmM"PY(fS!%!U3!)#,d!$!$!D!6d"i38Bm&15-8&!M)T4
!#6-`3)aRG))F[d0#D!"""Pe#J$5#!!)U)!%0h4(#'54Ca"m%!"@R@"f0@VFr!T6
2(`MS%J!DFJB#5-&&rPJG49S($8"S%J%[J+8(KB""kc8b"UM%MZeH!%9p'%dIh!#
3!!LS)!*%0&)*N!!``r%Sm%YF-H#Ad)!2#(+`)Ha3%`!+D0!e'9!3)E!"QpkN86J
0!!)'S1!,Dm+L&S0!K#4iX8eL4!(VU'#mAc,L"Fc8K6i-!8Kp!Z+FDfVR&+$`K#P
XF8[ah0!fZh00"p$SQJG4!%"hC&#YY$-)6%$4XXi4!!6)NdB58U,MfJ#jbZ%6&A9
Sj,RJ`39%Q-P-r%,&+'*k#hlpJ!9"`UN$8)%+(q#8!1`+4QKmKm,3)!!'4a!"!JB
4QJ0BXT)i0B$4qJ%!,MbLP[cJC44ri03$S-)C@Z8(+T!!%9C8'+1Xc3KU8r9R9+3
UPDRBI#S!ENSMSr($&eE&DPLjbY@[PT@X8"6V@31,LV3HJC1KS8!PRBT6"GJ9%AQ
YAPB$beH[JT@`J)fL@G'U95A1!CmDqJFq(PQ94T,@!2b5T1e3`BiT3J!3!C9#%+l
!6RHL#"h-qJF181''9%`*"UM`Kqe5X3GQqB-CU)M#F&2kJ48!`4qkq+8Bb0L'IcL
bZXZU,Miqm+8!4)Yj$9(Y+9)a!3#Y!'*3H%%,rJ'&bZhY@8B$J#UX#SC"I3QehiS
[%+`Ub963!3)IZ-iCd*(1)#`&"!KZ$c`2B$SD+H%)E$MU!BJ!"(H"33$XZYbDJL#
%+53B`D6L+!BqLS!'-`!--$$"9pD!63D`q%X+-!-'K-"L"8L"a3K`FGaSC!B%d*K
'0ql1#aB`9A0Ji4&BB!5lTR!%*3$"$-LB)JCJZk-U3!%V9#K#1e%NMecY5Pd"S)!
N84%''(b!V3'S-"#+D,4rL)%+MrMNQ-YmjU)#J"ZbBr2%N!!!jr,a!hjrKU)rZ-V
,ZZS#!143QJ+FI!CCc0R-E1AIQU%h-3VdZAVkH(5G8jKR5[Y$(jF@VDBMV8)pq`-
FSEE(bi"4$N"!`a8d!M6m"[dP&045(QFdKP9$+`m3Z,*GV(BeV"%!!L!JXmH%mN!
UN!#4#RUXZY@[MM88!3I&pr@bf2A8"6miSHKR#hZ63-Jf2f"aj+ljJN%-1*`rd+(
K+fC4bql-+))fqJ!BQ$Ke"G&"Pc,QS[FCi!F&J)%"lJH&)[D1i%A%T"h9"3!m`)!
!lS,fX)[pm)Kr'`%L!%,&JaeY"*!!!!JNN!$#aL91)a-!`346i"F)#QkF+dAK"mC
a!!a8d##%Xh!&"E%j*L8C8Rl&9"8!&M!"i)-!+4!"&dGSJb(J%)!T-J!HDhV#%Ll
+"!3(4!#La#C"j#!%2#bk%mk),`PiRJI*r!-*Em!1%Uj!U!#)3!Irm)B6DR%3%"b
1$8k!4,1cm)JAm#![&HX[+%K`"Ell(FXF2N-U3!'#+kaF"(K)J-HP80mdQ8%"-Y$
!KB@3!)%S*#1+ZdL''Gb4LP'8h[!m))YC"0pi8*4JjH)!H32!B!!CB+!DG!G!&*!
!)GV5Z`G!YUF""XKpKFrV3`Q5p)F6i!%#IJ!I!m+("5D+EchNRd(jc0I(mk-["$F
S!"*"D)-"$"N%H&3&"K#ir[)$!S,RM@mV""$"mf$j"E@IidXN!)!*!S!%)4"M'-D
K![aA"-K3$04!"2dR"%)!$-%!$B)`4A%M!J158Zlh![!RIc6b![8(FHF3!j3'!*`
!JB`JJEpAJ4FiIaTSIaiBAh`!!Ne(45-iJHhR3bHBJ4XS1LYiD#`JJL4)J65)(4K
)IbViJ9IbJJ!3JqkK")#J"KbJ")'J"Ja!")"!")%3Ab"!KHiKKI&P!9+)KAAJK'U
J!&KiD!DJKAAJ!Pmb5[mJ#i!`"JBJ!J"J(Zi"#iFJ"J`!#-%J1c*31fVQ(V*3KaV
3*8+JCRJS1dK`"$lJ*NIJ#-(`-NFJ!`IJ([QhIq+!#1+3!!Kr+!EiJ)I!F!Jb-!$
#!!`Z-!#(k!c!F)M5F!KPJ!#5)!KL3!"H1!9!!!ENi"i%!8N"B8IBi4d"i46XKae
YP`VQ*`R"D(kQ8)`!S![)5$,G*B`"`!$&'!!X%)e1%)eZ8)`#J!,&H!!%3#J#))`
%N8d"`B[Gm4!$%4!'J4!+!3#DF"Nl!!N$3"i"`3(XL"f)4a!U!(K23"!fS(Tr86Y
4-499!6ehN4GEChE'd4-0J3!qBK-0NC!![NJ3!Y!31"!3A&!6!G!3p+J!C1#3!2r
3FTE`%!fa'3$3!#Y"%#&h!!!:
"I was sitting in the Hollywood Hawaiian Hotel, listening to the air
conditioner hum.  It went hmm hmmm hm hmm hm hmm hmm..." -Warren Zevon