home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / games / volume16 / nethack31 / patch3q < prev    next >
Text File  |  1993-07-22  |  62KB  |  1,570 lines

  1. Path: uunet!news.tek.com!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v18i050:  nethack31 - display oriented dungeons & dragons (Ver. 3.1), Patch3q/18
  5. Date: 20 Jul 1993 22:33:43 GMT
  6. Organization: Tektronix, Inc, Redmond, OR, USA
  7. Lines: 1557
  8. Approved: billr@saab.CNA.TEK.COM
  9. Message-ID: <22hrs7$9qd@ying.cna.tek.com>
  10. NNTP-Posting-Host: saab.cna.tek.com
  11. Xref: uunet comp.sources.games:1850
  12.  
  13. Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller)
  14. Posting-number: Volume 18, Issue 50
  15. Archive-name: nethack31/patch3q
  16. Patch-To: nethack31: Volume 16, Issue 1-116
  17. Environment: Amiga, Atari, Mac, MS-DOS, Windows-NT, OS2, Unix, VMS, X11
  18.  
  19.  
  20.  
  21. #! /bin/sh
  22. # This is a shell archive.  Remove anything before this line, then unpack
  23. # it by saving it into a file and typing "sh file".  To overwrite existing
  24. # files, type "sh file -c".  You can also feed this as standard input via
  25. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  26. # will see the following message at the end:
  27. #        "End of archive 17 (of 18)."
  28. # Contents:  sys/mac/NHrsrc.hqx sys/unix/snd86unx.shr
  29. # Wrapped by billr@saab on Tue Jul 20 14:57:23 1993
  30. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  31. if test -f 'sys/mac/NHrsrc.hqx' -a "${1}" != "-c" ; then 
  32.   echo shar: Renaming existing file \"'sys/mac/NHrsrc.hqx'\" to \"'sys/mac/NHrsrc.hqx.orig'\"
  33.   mv -f 'sys/mac/NHrsrc.hqx' 'sys/mac/NHrsrc.hqx.orig'
  34. fi
  35. echo shar: Extracting \"'sys/mac/NHrsrc.hqx'\" \(28405 characters\)
  36. sed "s/^X//" >'sys/mac/NHrsrc.hqx' <<'END_OF_FILE'
  37. X(This file must be converted with BinHex 4.0)
  38. X
  39. X:$%jPG%KKBfXZFR0bB`"bFh*M8P0&4!#3#&kSiX`!N!3"!*!$9[d!!&Ap!!!(U`#
  40. X3"!d!%!!Y!$#J!J#S!*!&&J!i!#F!iBJB8h4[$%jPG%KKBfXZFR0bBcN#!*!$FR0
  41. XbBe*6483"!2q3"!!!FR0bBe*6483"!2q3"!#3%UKHkei!N!CHU!!!b!%`!!%!N!J
  42. X,Z3#3""8!N!AQ!9`!!3#3#!Zi!*!%&3"3!'i!qJ'i!!%!N!J(e!#3""8!8!"Z!2S
  43. X"Z!!"!*!)"p-!N!39!&!!EJ$k!EJ!!3#3#!I5!*!%&3"3!'i!qJ'i!*!$(!%)!!J
  44. X"5J$`!*!+"dePFh0KCf8i#J#3!a`",J!%!9)"bJ#3#JC6G'&dGA0V1!S!N!-@!(`
  45. X!fJ$i!BS!N!3"!*!'66J+!*!$'J#q!!B"8!%b!*!%!3#3"34*EQC[)$J+!*!$)J!
  46. XS!#J!M!#L!*!%!3#3"3e1G@aX)>EQ4[Gb!K1!S!N!-m$NjeE@*PFL"[CL"VCAP
  47. Xc6d019!8UN!9-8e4$"dYPH@0[C'9)3PP8"%0SBA*$5%&5"5U3"8a69%8!N!-J!#J
  48. X!+!&+!Hi!N!S,4(9ZCf9[EL"0BA!i#J#3!b!!+!!S!+`"c!#3"!%!N!8,4'PKCfj
  49. X[Fh4TBh-i#J#3!aB!!400B@-J6Q9d5'&MDb")C@a`b5mr!*!$J!#3#`rr!*!%r`$
  50. Xa!I!!N!2lm!m3(`#3!`qr$`%"m!#3!r[r%"$`!!$`$lrrmI!!$`rrqr!2!!!2%"$
  51. Xr[`#3!`m"!I$lm!#3!r!3m!qr!*!$$`%2!2[`!*!$rr!!$lm!N!Ilm!#3"Jqr!*!
  52. X(r`#3!i!2rj!&!!!2$*!%$r!!$m#3"-r2!!m-$!rr$rr`$mr`ca$``2!2$lm2!3m
  53. X-m!r!qrm3(m$`$``2[rrr$2!2rrrlm-$!m!ra!Iqr$!c`$r!3m2[``2!2$`(m$lm
  54. X-m!r!rr$!qr$`$`b3"!qrm!r!N!Alm!rrN!E`!*!$3!!!!F!ci#R`&IJ,q#AiIT!
  55. X!Id"qS$j3(bJ1&!!+!!8!!`(!Fq"rm(ri2r`rr(rmrrMrm2r`IrJrr"mq$Km!$`!
  56. X(!*!$3(r`3"K!&%(H@H*9mN[b4I*qJRp#IU*H8NiU3"C!#RrqIr"rq(rmIrjrrRr
  57. XqIrjrrRrqIrjrrRrqIrjrrRrqIri!!!%!N!B2J!!!2q!!%$r`!"`Iq!!+(rJ!#4r
  58. Xm!!5Ir!!#Ir`!!6rm!!#Ir!!`cr`!IqBB!(rb!!"rq3!!Irb!!(rb3!"rm5!!2r#
  59. X3!!!rm%J!(rJN!!ri%J!$i!N!N!-%J!!!!N!!!!%J!*!$N!!!N!0)!*!$*!#3!a)
  60. X!N!-+!*!$"!!2J!!!2q!!%(r`!$arq!!q2r`!(crm!"qrrJ!2rri!"rrq!!2rrJ!
  61. Xarri!Irrq!2rrr!$rraJ!rrq!!2rr`!$rrq!!rr[`!(rjq!"rq2`!2raq!"rm2`!
  62. X2q"q!!q!2`!!!"q!!!!2`!!!"q!#3!r`!N!0q!*!$2`#3!am!N!-1!!!"!"rrrJ!
  63. X3!!-!%!!#J"!!!N!3!!)J%!!#%"!$iJJ3"r[i%BIm#"&$r!J4)ri)%*2q#""2rJJ
  64. X3*ri)%"2q#"-CM!JAr)!)&rj!#"Ir)!JAr*!!#"Im5!J6r#3)%ri5#"(q#3J3I!5
  65. X)%!!#5"!!!5J3!!#B%!!!5"!!!#J3!!!B(rrrq"rrrJ!Irrm!(rrrJ"rrrm!Irrr
  66. XJ(rrrm"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrr
  67. Xi(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrr
  68. Xi(rrrq"rrrrJIrrri!!!#!*!Arrr`!*!-ra!3(r!!N!F2!*!$m3'3!`m!N!F2r`!
  69. X!$a#3"2!!N!Ilm!!2!C!%m!#3"rZr!!m3N!3I!*!($l[`$`'3"!m!N!Ml[rm3N!3
  70. XI!*!)$l[a!C!%$`#3#IZr%*!%(`#3"[m!!2qlmIrrm3m!N!82%2rr%2Zrm!!2m!#
  71. X3"3m"N!32Zr!!N!J2%*!&qlm!N!J2!C!&rl[`!*!($a#3""m!qlm!N!F2!C!%$`!
  72. X2Zr!!N!I`%*!$(`!!qlm!N!Ia!C!$$`!!$l[`!*!'$a#3"2!!!2Zr!*!(r`%"$r!
  73. X!!!qlm!#3"rrrm!#3"2Zr!*!1$l[`!*!1qlm!N!i2Zr!!N!ll[`#3$Jqlm!#3$[Z
  74. Xr!*!1$l[`!*!1qr!!N!i2!*!$!J!!$rq3#I!!N!82$*!*r`#3"3r!N!Rmm!#3"!m
  75. X-N!Rmc`#3"!r!N!Rmc2!!N!-2$*!*r-c2!*!$$m#3"Irrm-$mc-c`!!!2$*!%$`%
  76. X"$rcrN!2`!!!2`-r``-m3N!2r`*!$m!!!$``2[``-m3%"$`b3!r!!!!r!cl[``2!
  77. X3N!2``-$`!!!2$!cl[`ca!C!$r!`-m!!!$m$!cl[rm"#3!r$!`2!!!!m-N!2l[`'
  78. X3"2`-$2!!!!r!N!22Zr$rra$``-$`!!!2$2m-$rZrr!cr$*!$m!!!$mm3rrmIZr$
  79. X!N!A`!!!2$`'3"2Zr$*!&m!!!$mm3N!-Irl[``*!%m!!!$`m"N!-2$2Zr$*!%m!!
  80. X!$mm3N!-I`-qlm-#3!r!!!!m-m3%"$``-qlm-N!2`!!!2`2!3N!2``-qlm-$!m!!
  81. X!$``2m3%"r!`-qlm-$2!!!!r!`-rrrm#3!mqlm-$`!!!2$*!*qlm-m!!!$m#3#Fq
  82. Xlm2!!!!m-N!Vl[r!!!!r!N!V2Zr!!!!m-N![lm!!!$m#3#mr`!!!2rj!-m!#3"!`
  83. X!@J"Z!1i"NJ#"4%3!N!0-!!)!N!9i!-B!LJ%3"!*25`#3"3S!4J"c!4#)(%0[G@a
  84. XN)'j[G#"H-L"LC@0KGA0P)&i`,L!JAM%!N!8+!"3!+J!dS!)!N!3"!*!*2rrrm#!
  85. X!!"JJ"m!B)!r`'#-2q"JLKrJB)NIm'#%Rr"JJRr`B)%rm'#!Rr"JQ-aJB,rN!'#r
  86. XmJ"J[rN!B,rNJ'#riN!!B*rK)'#Im*"JMr")B)2J*'#!!"*JJ!!*B)!!"1#!!!*J
  87. XJ!!"B)!!!1$rrrrJIrrri!*!-2rrrm$rrrrJrrrri2rrrq$rrrrJrrrri2rrrq$r
  88. XrrrJrrrri2rrrq$rrrrJrrrri2rrrq$rrrrJrrrri2rrrq$rrrrJrrrri2rrrq$r
  89. XrrrJrrrri2rrrq$rrrrJrrrri2rrrq$rrrrJrrrri2rrrq"rrrrJ!N!G!!!"rr%1
  90. X'@mCIjNrQIqCrKRr'AZC1GN!q3"j!$Rrq2ri!!(rmIrjrrRrqIrjrrRrqIrjrrRr
  91. XqIrjrrRrqIrirrJ!!!J#3)[q3$3#3!rc-N![2m!!!r-b3"-rrrmb3"-r`!!$mc*!
  92. X%m3%"rmb3!mr`!!$mc2r-c2!3N!2mc-c2m!!!r-clr-c2!C!$r-c-cr!!!2c-qlr
  93. X-ca#3!ar-c-r`!!$mc-qlr-m"N!-2c-c2m!!!r-c-qlr`%*!$(mc-cr!!!2c-c-q
  94. Xlm3'3!`r-c-r`!!$mc*!$qlm3rr!Ic-c2m!!!r-rmc2qlrmc2r-c-cr!!!2c`(rm
  95. X3qlr-N!A2m!!!r2%"N!-2Zrc-N!62m!!!r2!3N!-Iqlr-N!62m!!!r2%"N!2mcl[
  96. Xmc*!$cr!!!2c`%*!$r-cl[mb3!mr`!!$mc`'3!rc-cl[mc-c2m!!!r-m3N!-Ic-c
  97. Xl[mc-cr!!!2c-r`%"$mc-cl[mc-r`!!$mc-crrrc-N!2l[mc2m!!!r-b3#-qlr-r
  98. X`!!$mc*!*qlr2m!!!r-b3#Fqlrr!!!2c-N!Vl[r!!!2c-N!V2[r!!!2c-N![rm!!
  99. X!rj!0m!!!$rq3$2!!N"3L!!%!N!93!83!C!&q"!*25`#3"3B!1!"'!Ab)!Pi`!*!
  100. X$'!"D!&i!k!'R!!8!N!Q#!!&`#J#3!aJ!3J"F!--"e`!&!*!*K`!!F!S!N!-B!%)
  101. X!A!$$!GF!"3#3#BB!!(!+!*!$'!"#!&`!``(A!!8!N!Q&!!"`#J#3!e)!"!#3"@-
  102. X",3"h!@F%!ePPF`#3"Q-!j`"h!5%%!Nj[!*!&#`"-!&3"CSJ#AM!!N!8-!"3!,!!
  103. XdS!)!!3#3"9d"+!"p!8L!!*!%C!!&!*!&B`%Y!(F"C`3$@@9c!*!'B`$R!(F")33
  104. X#6Qm!N!9M!+%!G`$E"!44G@Pd!*!&#`"-!&3"CSJ#AM!!N!8-!"3!,!!dS!)!!3#
  105. X3"9d"+!"p!8L!!*!%GJ!'!*!&B`%Y!(F"C`3$@@9c!*!'B`$R!(F")33#6Qm!N!9
  106. XM!+%!G`$E"!0"E'`!N!CM!&X!G`#9"!44G@Pd!*!&#`"-!&3"CSJ#AM!!N!8-!"3
  107. X!,!!dS!)!!3#3"9m"+3"r!8Q!!*!%'!"#!&`!``(A!!8!N!Q)!!"`#J#3!i3!"`#
  108. X3"@-",3"h!@F%!ePPF`#3"Q-!j`"h!5%%!Nj[!*!&B`#K!(F!fj!!!*!'B`"E!(F
  109. X!P33$3@aXG!#3"@-!&3"h!%m%"&&eDA3!N!8,!%`!9!&QL!*H-!#3"3`!&!!X!$5
  110. XJ!J!"!*!&AJ%S!(i"5)!!N!4L!!8!N!9U!2N!IJ%c"!*25`#3"@S!T3"q!0m%"N0
  111. XKEQ0PE!#3"3S!93!k!6Z)!Pi`!*!&4!"A!&3"0K!!N!B+!"`!+J!mS!)!!3#3"@3
  112. X!p!#%!45!!*!%'!#m!*S"'`&c!!8!N!Q*!!"S#J#3!f`!"3#3"8)!63"@!)F%!Np
  113. X,!*!&3J!,!&B!433'3f&ZBf9X!*!&"`!d!$F!e)J#AM!!N!9%!*J!9!$-%!P&C'P
  114. Xd)&4PH(3!N!B)!!S!+!!US!)!!3#3"6d!53"G!'Q!!*!%J!#3#!rrN!B!$mc-rrc
  115. X-cr!2crca$mc2m!r2[r!3r-r`$mclm3(mcr!2rrqrrrc2m!ra!I[mc-r`$r!3rlr
  116. X-cr!2c`(mqrc2m!r-rrc2[mr`$mb3"2[rm!r-N!62[r!2c*!&rr!2rj!'m!$rN!E
  117. X`!!!*L*!!!*!%rJ!'!!$rp`!'!!X$Z`!*!!)!N!-r!*!cf!#3"K4"!*!&+8!!!$!
  118. X!!"S!!!)B3!9V@)P!"q!j4##!3!59`(!F!F)8!"8!&##2`2r`!IJ!N!0cJ#!!N!8
  119. XJ!!!1B!%!%!#3,h!!8)J#'!3"!S#L!!3##)!!!'!!35)6E!!!!LL!!!(iL8!&S#P
  120. X%))"!"*9!8"3"3K3!&3!8))r!rr!0#!#3!b4!8!,c`!!%)!-!#C!!"Y8jl%`J!!A
  121. X,R#qllR!!$R1mlhrZM`aK',[1mlmBaM(r'J)%!"!B)6$!!*!$!J#3"+QZq45K*!T
  122. X3V9c[JHT4&%8k)*4m3N3PSZa!!NNJ"@YBL8!&S#P%))"!"*9!8"3"3K3!&3!8))r
  123. X!rr!6!$i!0R4F3!Am)")D)!5!#5$dhpDbNUN!"MaLD%!aL##4M'-B`K'+$+'maM'
  124. X-54M&83d0!33!%#!J%%!!N!-#!*!%UY(i!!!B!*!$)aJ#J!#3!dBNJU*!!!!c-J!
  125. X#UJ!!!IL*3!@J+83JJ%!%P8"3&!&#&!!9!"3JMm$rm#-!%J!*V')J2I`rN5SN$,J
  126. Xj3*@&8Y3KF3!+D%+[H$'0Ad(XB`M#%)S0)9V'-B`*'-54&)J!IjchFrdbI@GjpRr
  127. X'0BaqU""6R[HpcR15BaJkMR1M'-BZjq,RcSfV-N!"9@!&DeMj3IfrkA`JJ%!%pAr
  128. XIprprPIJ9q"AiMm$rpf8(b2b)Vq,Ybr`JI-JJFh`TrTH2Z8JKVmq+U)dJa%k)J#+
  129. X[r3MldrS1)4R(dI1*'-5+*)J!M'-BT'-dDjM'1B*'094&"""8BaM'-Ba5IrpAdBa
  130. XM'-BeJ6a)dBjQl)rq'@Q3!!(rMhiaXBr(rj!%Pc---``JIJIr*riRrj!$q+8#K45
  131. X)V'-Dbr`rN5JrL(a!$T!!K4@e)5%!%bN$m-54H&p%p'-)`K'+M5%BaK')54M8K%4
  132. X)!)aK(k4M2'XBaM"b4M8N5+J3Gq-BaKrrdQ-BIT'-BaM'0)IN50'-BJ%)"#(b6@Y
  133. XBq8[p[IJm3!*!"2AhrhIrIi(j3Id9q%rrr!LM!SN8L(4M(G2m)")B)("r3!k3!!"
  134. X@XK)"!")U)LM%N3JJJ)4M'-)4LSbK'-B4M%N9E85%5!#FB4JNBc*V'-B`#Ne99&#
  135. XS%53R1Fi3K"*M'&+4M'FiaM@*,NR4R'2r'!4!FNJ"q)P+*D8!!%!#3!58&!&8!8!
  136. X!)8!P&#"2rr`)S`+6&)JN94"6r$q!##5!1)!!N!#!1Nd-!""Kcp`R1)je!!4dI1p
  137. Xq$SpdIaLk$SZ)iNBNrMMmEjlhSq-aDaGjm2'dLS[qU!iMfYDelh[5BarHlR1DelR
  138. X1m54'cQaL!1!!F'Q9DeL*5L@P!!"!!N!%P"3"9!&!!#&!*43J6rrm"fd#[ZG)FlE
  139. XJ2I`JIrNJ!!#!!2!!%!#3!a!J!*!&!3#3$!%!N!BJ!*!&3#!!!%!J!*!%3(!#F!#
  140. X3!i!!N!Q!"!!'3!#3#3(iL8SPT3!!3!*!"*38!93"3!!K3#88)%rrr!!J!!!%!*!
  141. X%)IrJ!!NJ!*!+)!#3"J)!N"J$J-!!!%!J!*!$!i!!"!#3!`%!N!N(!*!$!B!!N!J
  142. X&DeL*5LIR!!"!!N!%P"`"h!(!!#&!*43J6rrm!*!%"!#3"%!!N!-)`!#35J%!"!!
  143. X*!!i!%`!B!"S!(3!J!#8!+J!X!$%!-J!f!$X!23"#!%F!6!"4!&B!@`"J!'8!CJ"
  144. XS!'X!F!"c!(J!I3##!)F!M!#4!*B!Q`#J!+8!U!#Y!,)!Y`#m!-%!aJ$,!0!!e3$
  145. XD!0m!j!$T!1i!m`$i!2d!r`%$!38"#!%1!4!"&3%D!4m"*!%T!5d"-J%h!6J"1`&
  146. X!!8)"4`&-!9%"9J&E!@!"C3&T!@i"F`&i!Ad"JJ'(!BS"L`'1!C-"N`'B!Cd"SJ'
  147. XR!D`"X3'f!EX"`!(&!FS"c3(3!G)"e`(F!H%"jJ(V!I!"p3(k!Im#"!)*!Ji#%`)
  148. XB!Kd#)J)R!L`#-3)c!MJ#23*#!NF#5`*2!P3#@3*H!Q3#DJ*V!R!#G3*k!Rm#K!+
  149. X&!SN#M3+5!TF#Q`+J!U-#U!+Y!V)#YJ+k!Vd#``,*!X`#dJ,B!YX#h`,M!ZF#l3,
  150. Xc![F#r313!`N$$`-9!aX$(`-L!b8$+3-[!c8$13-m!d)$5!0,!di$9!0D!em$C30
  151. XU!fm$G30k!i!$K31+!im$P!1C!jm$T31V!l%$YJ1j!l`$[`2$!mJ$c324!pB$e`2
  152. XF!q!$j!2R!qd!"J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!
  153. X'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!'N!-#"J%'!!B!"J!'!!B#"J%'!JB!"J!
  154. X'!3B!"J)'!3B!"J)'!!B!"J!'!!B!"J!'!!B!"J)'!3B""J!'!3B!"J!'!!B!"J!
  155. X'!!B!"J!'!!B!"J%'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J)
  156. X'!3B#"J%'!!B""J!'!!B!"J!'!!B""J!'!!B#"J!'!!B""J!'!!B!"J!'!!B!"J!
  157. X'!3B!"J!'!!B!"J!'!!B#"J)'!3B!"J#3!`B!"J!'!!B!"J!'!!B!"J!'!!B!"J%
  158. X'!3B""J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!'!JB!"J!
  159. X'!!B!"J%'!3B!"J!'!!B!"J!'!`B!"J!'!!B!"J!'!`B!"J!'!!B!"J!'!!B#"J!
  160. X'!!B!"J!'!!B$"J!'!!B$"J!'!!B$"J)'!JB#"J!'!!B#"J!'!!B!"J!'!!B!"J)
  161. X'!`B$"J)'!!B!"J!'!`B!"J!'!!B$"J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!
  162. X'!!B!"J!'!!B!"J!'!3B""J-'!!B!"J!'!3B!"J)'!!B!"J!'!3B!"[rr!!!,hT!
  163. X!!*!%r`!(!!$rr3!(!!m%j3!-!!-!N!0#!*!m1!#3$!D!!*!&9DY@)P!"q!j4#"!
  164. X#!!L+F!F!F!(""3!!T!!+#"$q!rri!*!0)!#33!9%3!#3"!T3!!!-!!!,!*!$))!
  165. X!!!(q)P!"D!T4#"!#!!L+8!8!8!&""3!!T!!+#"$q!rri!*!*!m!!!#!!!!TJ!!!
  166. X3!!`!N"a`F!#3%"`!N!3'!*!%4)!!N!J3!*!'))!!9DY@)P!"D!T4#"!#!!L+8!8
  167. X!8!&""3!!T!!+#"$q!rri!*!&1!!B!23J!!!J!!!0N!!!e6NX8L!!!ZA1&mhh1!!
  168. X"`$[1prlSm-B4Llc[1r'-Bar)%J#"!!3'#%`!N!NUDi!L!)N"!)#R1q"l!))J$SJ
  169. X0(a")K0Lpa!!LLJ!!!IiL8!&S#P%)%!)!#)T3"3"3!8%&!!#N!!S)%2i$rrJ1q$i
  170. X!!"(1)!(m)!!J)!-!15"phpDb8UJ!!aia0"!Ba!JL)%BaM#%BS-SEM'-Ba*'-Ba$
  171. X)&3""!!3)#%``!*!%J!#3!bUd9%8S53+85eM'!+5844&4L"#SN!#4#@M'*!!NNJ"
  172. X9UeBL8!&S#P%)%!)!#)T3"3"3!8%&!!#N!!S)%2i$rrJ45#)!'j)a)!Am)!4-)!5
  173. X!+8p%e9,5BA%!"43K9#!Ba"!3,dBaM#%)S0)9c'-B`*'-Ba$%')!"!!3)#!33!*!
  174. X%J!#3!bS%3!!!"J#3!`M'!+!!N!-4L4(iN!!!!!c')!!))!!!!IiL8!&S#P%)%!)
  175. X!#)T3"3"3!8%&!!#N!!S)%2i$rrYa3"!!*$Sa%!Am2b+5*!5!+Ip%K6(8)A%!"63
  176. XQPl`R4UI)8-I3M#%)S1)4V'-B`*'-94&%%!!IjchFrdbIHGjpRG'0BaqU"#,R[Hp
  177. XcR15BaJkMR1M'-BZ3!%Ljmk0UaL3!&NTD9DY@2P"rErTI#"!#!!MkArhrhrprj6q
  178. X!TrJ+Ia$q!rrmNNI)r%4'-AJGr#!K8L",1#!24)qBL#'[`!P83IKL5-E!"*Eq-)q
  179. Xp2k$#%Cap(cL4M%LL3K!!)aM'+4M0'XBaMQ+4M984533M'-BaM'-8Q-I9r'-BaM'
  180. X0HIm50'1C[F6rkCUP!!(ripq-E'2arj!&LmB`B-B-%"r!Ira(riMrN!6mNN+&*%4
  181. X(mBlVr$rk-$q`I#!24)899#%K$iQ8J4"L5,`Rb*E'-)`K'+$L%BaK')54M&4%3K!
  182. X!)aK(k4M1'XBaM&b4M8N5+J3Mq-BaKrrdRriAT'-BaM'0%%J50'-BJ!L!35Y#eDY
  183. X@2P,rEhi2%!!L!!MkI[rlhrpri$q8"rd+I`Mrrr`$F8+**%4'-BeVr#!N%5")IL!
  184. X24!!9XU%"!"%9!4"L5)33%"I'-)`K'+M5%BaK')54M@*)34!!)aK'#4M0'XBaM!+
  185. X4M8N8+J3M#-BaK#%%Q-B8T'-BaM'0%NN50'-Brr#!3Rp#J!(q)P+*D8!!%!!L!!L
  186. X+!S!+8!&!!!38!%8+#!Mrrr`!%8+4*%4'+SlVr$mJm55`ID!24)"@X4)!%&%@%44
  187. XL5)U))*!!4M'-)4LSbK'-B4M%N9EL5%%3!#FBaLNBc*V'-B`LNe99'#S%CaR1Fia
  188. XK&*M'&D4M'FiaM9*,NR4R')!4!!3+T9@V9L*5L@P!!"!!)J!)LJ+!#P!"3!!%&!"
  189. X&#JJ)rrrm!"&#Sb6%1LU)+r`J"a$!!$KJ!%5!1Nk5!""Jjqi6R%FbJ!#24mlhi1M
  190. Xh4r',S1LiML4L6m#3!(mEjch)q-aDaGjm('dLS[qU!jVQYDecRZ5BaqklR1DelR1
  191. Xm54'cQaL!$J!2#PS!!IiL8SPT3!!3!#)!#)S#J!T3!8!!""3!43S)#2rrr!!@3Vl
  192. X(3K(EF"hri2J3!*!$)!"p!"!!$!!3)!#3"S!!N!a!!*!&F2!!N!83#!!!%!J!N!3
  193. X3(!%!N!3J!*!*)!%!!4!!N!P9UeBL8SPT3!!3!#)!#)S#J!T3!8!!""3!43S)#2r
  194. Xrr!!3!!!%!"!!!"(i!!!3!*!,)!#3"J%!N!dJ!*!,!4!)!!!3#!#3!`%3!!%!N!3
  195. XJ!*!*)!!!!H!!N!S"rL*5L@P!!"!!)J!)LJ+!#P!"3!!%&!"&#JJ)rrrm!*!%"!!
  196. Xi!!!3!*!$%!#3,H!`!*!)i!!#!*!%3!#3#!(!!*!09DY@)P+*qF!!%!!L!!L+!i!
  197. X1F!(!!!38!%8+#!Mrrr`!N!d3!*",!3!%!!N!$J!6!"N!'J!G!#!!*3!U!#`!-3!
  198. Xb!$F!2!!q!%-!5!"0!&)!9`"F!'%!CJ"R!'N!E3"b!(B!H`#"!)B!L`#3!!#9!*S
  199. X!R`#N!+N!V!#a!,B!Z`$!!-8!bJ$2!03!f3$H!1-!k!$Y!2)!p`$m!C!$"!%*!3`
  200. X"%3%B!4S"(`%N!5N",J%c!6F"2!&"!8)"43&+!8`"83&@!9X"B!&P!@S"E`&c!AJ
  201. X"I3'#!BF"M!'4!C3"P3'B!Cd"R3'L!DF"V!'a!EB"Z`(!!F8"bJ(2!G3"e`(D!G`
  202. X"i3(Q!HX"m!(e!IS"r`)%!JN#$J)6!KJ#(3)L!LF#,!)a!MB#1`)p!N)#4`*-!P%
  203. X#9J*E!Q!#C3*U!R!#GJ*h!R`#J3+)!Sm#PJ+A!TX#R`+N!UN#V3+b!V8#ZJ+r!X3
  204. X#b!,-!Y!#e`,H!Z)#k3,`![3#q3,q!j!$#J-4!aB$(3-N!bX$-J-j!d!$430*!dd
  205. X$8J0C!f!$C!0S!fm$GJ0k!hi$K31,!j!!!j8$QJ1I!k8$UJ1a!lB$Z`2!!m8$bJ2
  206. X2!p8$f`2J!q8$k!2V!qm$m`2i!rd%!33'"!F%$!33""3%'!3B""m!"`!(!!F!"`!
  207. X(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!
  208. X(!!F!"`!(!!F$"`)(!3F""`%(!!F$"`)(!JF""`%(!JF""`-(!3F""`)(!3F""`%
  209. X(!3F""`%(!3F""`-(!JF""`%(!JF""`!(!3F""`%(!3F""`%(!3F""`)(!3F""`%
  210. X(!3F""`%(!3F""`%(!3F""`%(!3F""`%(!3F""`)(!3F#"`%(!!F$"`%(!3F""`%
  211. X(!3F#"`%(!3F$"`%(!3F#"`%(!3F""`%(!3F""`%(!3F""`%(!3F""`%(!3F#"`-
  212. X(!JF""`!!!3F""`%(!3F""`%(!3F""`%(!3F""`)(!JF#"`%(!3F""`%(!3F""`%
  213. X(!3F""`%(!3F""`%(!3F""`%(!3F""`%(!`F""`%(!3F""`%(!3F""`%(!3F""`%
  214. X(!`F""`%(!!F!"`!(!`F!"`!(!!F!"`!(!!F#"`!(!!F!"`!(!!F$"`!(!!F$"`!
  215. X(!!F$"`)(!JF#"`!(!!F#"`!(!!F!"`!(!!F!"`)(!`F$"`)(!!F!"`!(!`F!"`!
  216. X(!!F$"`!(!3F""`%(!3F""`%(!3F!"`%(!3F""`%(!3F""`%(!3F""`%(!JF#"`-
  217. X(!!F""`%(!3F""`-(!3F!"`!(!3F!!3!(rrm!N!0#!2!!P`#3,`%!!3!*!!",L3!
  218. X-!!",M!#3!aB!#PPj@fYFG9CS9fpBE&0L9'T9EP)X!*!$&J!+@9PE5ea99NKAEeK
  219. X-8d*85P918L`!N!0#B!!!Q!#3,`%!!3!*!!!i#3!-!!!i$!!!#-+3!!#3"1m!#J!
  220. X!rrB!#J!-!fF!#J!#!*!$0!#3-31!63#3(4q"`!#3"R!F"`"`!*!k9%#@8S!!!B!
  221. X!N")#S!#3""D"3!#3")!!8"3&!&!!N!N&%!$!`!!!J!#3&`('!*!1!i!$J!!!#3J
  222. X@3*%"N!"54!8N3%`!1!!"iH!!N!N@J8i!N!-0!!"3&!8!8!!"98!!!!mm!0qjr58
  223. XP!!#jGmAcIFi!!Bi6cZIlS`aL$PhRHGq-B-Br3S##!%$#%aJ!N!-%!*!$"8dK(IP
  224. Xd8*9TJ3UQED3UQN+TmN0%$h)5&iY!2RDJ!)JcrjEj83!!S!N!!&H8"3"3!!+@3#*
  225. X!(m2ie9C*4K)3!8H)M33'-33584)aP%4M$+-HBaM'*)aJaL-M3%)!33)"#!#3!`3
  226. X!N!-&9L%M'Ba!!*!,8Z4"eBh-bY`%8)J%*&5*+AE2B)!d!"%%J&cf"B(B!!+UL&!
  227. X2Rm-)Mp*3JKq3!!&AS#M'Vk'DU-)a%)`dLV@-BaJ5-95P&)J!EQGZIYbpZERY
  228. Xr-B-Cp8"bS4@-AGhGfCQEpZCQCTQC693lpBdY#UJq8*UN3[b8L8EXB,j)S"1iK-h
  229. X$r2m,B!#3!iS`Am-)K6Qj8K*mmN86T"m*ca!%UU[3Mh6r$L*0BqMja)U9%)N5!!C
  230. XQC5C66*QCR)8U9+NS)(+KeBaQN!9P8TQ3"8&14r@ec3U)#2bS(i%NT%PfVq$*@6q
  231. XK48PpI`h$h*!!!!!r"M$r``L!&'BL&4!#45"q'*)K#qNUrM#-4'10)JcM#0!NLSS
  232. XSN4)!(Q*p*P1-QCQBC5T8589!rq%6M'D3!f2rr9+CN!8"9$[[M5c)!$k3!-UN3[b
  233. XNL4DS%8pU)U%j8J8"hAj8rr`!!)S`Im-)!&5Q8K!3"%9%44L5)J33*dBaP%4MM+)
  234. X-i`V+*)N+4*%+!#CQB5C66*QCQ"8N++Q&3)aM%iaQN!3L)9+CN!8!j)A&LK)3!"%
  235. X3L!3N*+8T&UJ+5%TL38)T"3"9!&5!!!!)8LqI``L!14Q*)!%-1IZ%ja(-S!%34ml
  236. XR`k0dIJaG"dA%F3T%R`Sr(jRC(P-XQ@jiiZ3T&r9!M&haFjhGhGRCR9+@CQChG`"
  237. X24!@aiH!!!4pb[rmR@qN@Z"XqXD""!q5(!&8!8q!!N!-Kk*r$q!!3!!$!!3#3"b!
  238. X!$J#3#3%!N!8"KJ#3"!3#!!!)%!#3!`%$J!!)!*!&#!#3#MJ!N!S%!!!IJ!#3"!%
  239. X!N!4A!(!!N!8J(ri!N!B#!*!(3!#3&aJ-!!!)%!#3!`B!N!-3!*!&%!#3&33!N!J
  240. X#!*!%F!#3"J(!!*")!3!%!!N!$J!@!"d!(J!K!#3!+3!Z!$!!0!!e!$N!2J"!!%8
  241. X!5J"2!&3!@3"H!'-!D!"T!'X!EJ"c!(B!HJ#"!)B!L`#3!!#9!*N!R3#L!+F!U!#
  242. XY!,)!YJ#p!-)!a`$-!0%!eJ$E!1!!j3$U!2%!pJ$l!2m"N!-&!3F"#J%3!4)"&J%
  243. XD!4i")J%Q!5S",J%b!63"0`%l!6d"4!&)!8`"8!&8!9J"A!&I!@-"D!&[!A3"H!&
  244. Xm!Am"J!'$!BJ"L!'0!C)"P`'E!D!"T3'U!Di"XJ'f!ES"[J(#!FB"bJ(1!G)"eJ(
  245. XB!GS"h3(J!H3"k!(X!I!"p!(i!I`#!!)%!JJ##`)2!K3#'3)H!L-#+!)Y!M8#23*
  246. X&!NF#5J*2!PF#AJ*M!QJ#E!*`!R8#HJ*q!S-#L3+1!T%#P3+D!U%#U!+Z!V)#X`+
  247. Xh!Vi#`3,'!XX#d3,9!YN#h`,P!ZN#l`,e![`$!!-'!`S$$J-3!a)$&`-H!b-$+`-
  248. XV!bX$+`-V!bX$+`-V!bX$+`-V!bX$+`-V!bX$+`-V!bX$+`-V!bX$-3-h!ci!N!c
  249. XrN!B'"[q3"J!!rj!F!!IrN!B$!`%$!38""`!'!!N!#!%$!!3!"!%(!!B""!!&!3-
  250. X""J!'!3B!"J!'!!B!"J!'!!B!"J!'!J3""!%&!!B""3%'!!J""`!'!!B!"J!&!!8
  251. X!"J!'!3-!"J!'!!8!#!!'!!B!"J!'!!B!"J!'!!B!"J!)!!B!"J!&!33""J%%!!3
  252. X!"J!$!!8!"3!&!!8!"3!%!!8!"3!$!!3!"3!$!!J!"3!&!!8!"3!&!!8!"!!&!!B
  253. X!#!!'!!B!"3!%!!)!"!!'!*!$"J%(!!B!"3!'!!B!"J!&!!8!"3!&!!8!"3!&!!8
  254. X!"3!&!!8!!`!$!!3!"!!&!!8!"3!&!!8!"3!&!!8!"3!&!!3!"3!'!!B!"J!'!!B
  255. X!"J!*!!N!#3%%!!3!"J!*!!F"#J!'!!8!"3!'!!B!"3!'!!F$#!)&!38!"3!)!3N
  256. X!"J%'!3-!"3!)!38!"J%(!!J!#!%)!!B!"`-(!!B!#3!)!!8!"`%(!JF""!%%!!B
  257. X!#!!'!!RrN#J!"J!'!!F!N!3,*T!!!*!%l`!2!!$rp!!2!!m%Q3!-!!-!!3!q!*!
  258. XlF!%b!*!%"J#3&J&8!*!&(i$J!*!+$J!i!*!,"3#31LL)!Nb53!!!#3#3(4D!S!#
  259. X3"`jmi!S!+!#3#2!!!!8!"!!!-!!!"!#3(3F-!*!4"`!!L!#3!`3K!0N!L#!C"SN
  260. X%!d5#!3#3#`&8!*!&&[bJ!*!%$!!!#N5J#J!S!!!*5S!!!`(l`!!&d8jqB8NJ!!6
  261. X%lm&qGqmm!!$`!)qHmrpk'$$#$LpmpmprKJ`'-Id&!%#!!J-%%``!N!3#!*!%#TN
  262. X3FHrLp#J5P@B""&+Qfa#+9BK&+l!-H!21!!"d@J"qHJ!!%3$2rjE%Ti!!")!)J!!
  263. X+A+!+!#J!!"*-J!4'!I`[m!AApC+45-!!#5d3Jd#!--)!!3RJL''+%)BB-8-H---
  264. X--)L'$!Ba$)D!))!#"!3""!#3"!)!N!3+TK!L''--)!#3$3&*%S3&84iH*Z!!S)9
  265. X8!!S!*&%@p+K!!*!$%3!J#P#J#J!S!!!5P3"!$!(m+"!&JT58S)Ib!!S@%39"!&$
  266. X#""%+%8KJKK##'$*#V6$$$$!)KJa&845%!!lcRZjpYaE0ChRhGdBa'-IUJ#K5#&-
  267. X-,R1FjcR1Fk8V1FjcSaM&5j!!JHP4)5%P3!#JM!#%Rd35%4D8X#lMT)!4!#!+8+I
  268. Xk!#MZ!*!$%+4IpI`S%!@2c'K!K-)!%K36#Ah`6d0)#"6T6k#'%))B0%*0-----!L
  269. X&%NP+&%3!%BaM&)j6*c1BaML+4M%Ba#U!+&))8``aM'-BaM'-C5c'-BaM'-8e8([
  270. Xj8Pc-T%!4)*98L%4%F4&fPl!a&%5!)l*3#P#N'i$[%3#3!`%8Irhm+"!&K3B3S)8
  271. X[Ra)8)*%$#*!!`K2N*5SSB)IHRrJi3Jb`r3r2#)85U)SN4!!2M#-8M&0')aM'-)*
  272. X'+U9%8N"%LJp,$#plh[I#-BaP+-BaM'-Ba!8iKrP48Y#!!IRmT!2`2d53!*&'PM!
  273. X[&-Mm)8a3Qp1rH2q$%3#3!hi-IrRm+"!&J!8Y&)3#!#)83'%$#*!![L!#45SSB)B
  274. X3KKJd3Jb``3d!L)5LU84%*!!4M#2dM&1')aM'-(*&5U*%LS"%LJK,$$'-BaM$rrr
  275. XP+-BaM'-Ba!83Kr93h0#!!#)Ja95)4%84%ADAk&(e8)C"!)NSdJP,`HmIrq!!!Ja
  276. X$qI`S%!@!"9-)K!)!)K5!Ii-*%))3"%6hq'#'%)BF-N)-F-%-J)L%S4&%4#3!%B`
  277. XM")a64L-BaM!+484&43U!rri)4``aM'-B`K#%*5M'-BaM'-3&%([cd0,-J!"#))3
  278. X!K)4&%K%@P!K4"P'&36++6r2j5RmT%!#3!a%84Krm+"!&!"@6&%J!!%%P#)&$#4#
  279. X%#qJ#""KKLK#'($&#$($",&#)K%%5*)38!"'-Ba5-8bBM'-B`LNb%5-B+J)-''%F
  280. X--BaM'-BaM'8SaM'-CcR-"9%&i9%K)3!"r#'&9!!%4544&T`%N444J)&0"5!!!8S
  281. X!+4%!N!5N5!(m+"!&J!k-iNJ!)-$(p`%mm3mj4"""a"qHmr"k'p$q$#p!p#m)H%%
  282. X5*2`8IircRZ4m8aBM&hR`FE5%5,rUJ)-&lm,cch[HplR1Fk8SZFjcQYDd!lk%!AB
  283. XH(J!!K$ji!rrNHXr4&S!-cZZ1J)%"r*!!!!&+!#MZ!*!%3m!"r#r`"3!%!!!`!#!
  284. X!N!K!!*!1#!#3"JB-!*!&#!)!N!0!)!#3"!3(!*!$3!#3"K!!N!S"!(J!N!J"9!!
  285. X!3!!!&S!!N!8"!*!%!8S!+!#3"N!!"q!!"3#3"N!!N!L!!*!FL!)!N!0!)!#3"%3
  286. X!N!3J!*!')!#3'B!!!"D!!*!&!3#3"!(+!#J!N!8%3!#3"!8!N#a`$!#3#6J!N!4
  287. X!!*!F!93!N!8IJ!#3"3)!N!81!$J!N!8$J!#3"!8!N%8"!!3!#`!3!"F!(`!J!#-
  288. X!*J!X!$%!-`!i!$N!2J"%!%B!6!"5!&N!A`"P!'X!F3"h!(J!HJ"q!)-!K`#0!*8
  289. X!R!#L!+J!VJ#c!,J![J$%!-8!b`$4!0B!h3$M!1N!l`$e!2X"N!-)!3i"&3%H!5-
  290. X"+!%Y!5m"0!%f!6N"33&$!8J"63&5!9F"A!&J!@8"DJ&X!@m"G!&f!Am"K!'*!Bi
  291. X"N`'B!Cd"S3'Q!DX"Y!'j!Ei"``('!FF"bJ(3!G!"e`(H!H3"k3([!I8"q`)!!J8
  292. X##J)2!K3#'3)H!L-#+!)Y!M)#0!)f!MN#2!*"!NB#5`*3!P8#@J*I!Q3#D3*Z!R%
  293. X#G3*k!S!#KJ+-!T)#Q3+K!UN#XJ+d!VF#[3,(!Xm#eJ,E!Ym#i`,S!Zm#p!,k!`%
  294. X$"J-*!`i$%`-E!b3$+`-`!c%$0J-q!d%$4`01!e3$@30H!f8$E!0a!hJ$I`1)!i`
  295. X$N`1B!jd$R`1K!kB$V31b!lm$[`1r!lm$[`1r!lm$[`1r!lm$[`1r!lm$[`1r!lm
  296. X$[`1r!lm$[`1r!m8$b`29!!$rr`#3#2q3"JJ)rj!'!!$rN#3%"!%$!38"#3%(!3N
  297. X!#3%$!38""3%)!3F""!%(!3-""`%)!`J"#!%)!3J"#!%)!3J"#!%)!3-""!%'!3F
  298. X""J%)!3S"#3%)!3J"#!%(!3F"#!%)!J8!"`%)!3F"#3%)!3J"#!%)!3J"#!!)!3J
  299. X"#3%,!3F""`%(!33""`%%!33!#!%%!3F""`%(!3F""`%'!3F""`%&!3B""`%&!3X
  300. X""`%(!3F""`%'!3F""J%(!3F"#`%(!3F""`%&!3-""3%)!!!"#3%*!3J""`%)!3J
  301. X"#!%(!3F""`%(!3F""`%(!3F""`%(!3F#"3%&!38""3%(!3F""`%(!3F""`%(!3F
  302. X""`%(!38""J%(!3J"#!%)!3J"#3%+!3S"#`%%!38"#!%-!!J!#`%(!3B""J%(!3N
  303. X""`%)!3N##J%&!!B!"J%+!3X!"`%)!J3""`%+!38"#!%*!3J"#!)+!!J"#3)*!3J
  304. X$$!%,!3B"#3%(!3F""!%%!3F"#3%)!3rrN#J##3)*!!Uff`#3!d3!N!N)!!`!HJ"
  305. X"!(S!$!!)!*!6#!!-!(i!I`"q!!`!#!#3#`F!#3#3!d3!N")"`!&!!8!(F!)J!8!
  306. X!J!#3%J(!!F!"`!I`!q!"`!#!!!N!#!#3!d3!N!S3!$!!AJ##!&i!-!!3!*!6%!!
  307. X`!(i!rJ"q!$!!%!#3#JJ!"J#3!d3!N"83!#N!&`!*!!N!(`#3&4!!13!I!!m!$`!
  308. XI!!X!#`#3!d3!N"3)!*3!k!#3!!#3!!$i!*!9#!#F!2J!m!$`!2J!!!X!"!#3!d6
  309. Xi!*!!!*!!!1J!P!!)!*!9q!$`!2!!q!#F!!J!N"B%!!3!N!0%!*!%$r!)%!J3#"!
  310. X)%!J3#"!)%!J3#"!2m!#3#!r`(rJBN")Iq!r`!*!&"`!(!*!$4!%!!S!%3!lJ!S!
  311. X#J!1!!*!5!3!$J!I!$q!$J!1!!i!!N"-'!!F!N!0%!"m!#3!*!"F!+3!3!*!9(`!
  312. X2!!m!(`!j!"!!N"8%!!X!N!-3$djPG%KKBfXJ9fPZC'phF`#3!b!!-!!3!8)"l3!
  313. X%!*!)#d4eEQGPEfiJ6@&`+!S!N!-k18jPG%KKBfXJGM-Z-5iJ5@0[ER-JBRNJ4'p
  314. XZB@aN)%`Z)%jKFfJJ,5"%,NjKFfK!GA4PH'&c,Q9NG3#3!i!2rj!&!!!2$*!%$r!
  315. X!$mrr`2rrc`!2$!`2r`rrm!r2m-m3m-$`$`qr$`%2$2!2`2[r%"r!m!m-$lrrr`c
  316. X`$rrrqr$!`2!2m3(r[`rmm!r`%2$lm-$`$`m"r!qr$2!2`2r``2[`m!m2$!rr$lr
  317. X`$m#3"I[`$rq3"[!!N!1!$rq3"3!!$``-$``2m!!2cm$lm-r2!!rar2[mrrr`$r!
  318. XIqrm3m2!2m3(lm3(mm!r`(r[r%2$`$r(mqrcar2!2cm$lm-r!m!m-$2[m$!c`$m$
  319. X`qr$``2!2$!rlr``-m!r!`2[``-$`$``2qrm-$2!2`2$lm2$!m!rrN!E`!*!$3(r
  320. X`3"KFp%(H@H*GmNrb4r*rJRrDIZ*HFNik8Gj!$RrqIr"rq(rmIrjrrRrqIrjrrRr
  321. XqIrjrrRrqIrjrrRrqIri!N!0!Ir"!'&18HVjqqRlkI[TkZP+53S*+SNE#3S*'`NU
  322. XLIrjrm(riIrarrRrqIrjrrRrqIrjrrRrqIrjrrRrqIrjrrJ!!!3!Irri!%!!$!"!
  323. X!!S!A2I*!%!!#)"!!!K!AZq))%!Ilq"'(r!JAIrq)%52q#"#6rJJAcrr)%#Iq#"!
  324. X6rJJ6'Bc)&rb!#"Iq3!JArc[)&rb3!!JAr%J)%rrRD"2q%JJ4rJN)&(hFL"!!!NJ
  325. X3!!%S&mrJQ"!!!%J3!!!S%!!!'"rrrrJIrri!(rrr!"rrri!Irrr!(rrri"rrrr!
  326. XIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJ
  327. XIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJ
  328. XIrrri(rrrq!!!!3!Irri!%!!$!"%"!S!6!S*!%i+#)"H#JK!A`SIi&r+Ib"rqrqJ
  329. XIr[rS(rlrk"rqrqJIr[rS&r+Ib"I#KmJAJS2)%i+$L"-kZBJ4HVd)%(lm#""qr!J
  330. X3([!)%!lJ#"!'`!J3$Z!)%"l`#""qr!J3I[`)%(Um#"!kZ!J3!S!)(rrrq"rrrJ!
  331. XIrrm!(rrrJ"rrrm!IrrrJ(rrrm"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJ
  332. XIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJ
  333. XIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri!!!#!!!2rj!*m!#3"3m-N!Rr!*!
  334. X&$m#3#Ic`!*!%$`rr$2rr$rrr$2c2!*!%$m#3#Ic-m!#3!`m-N!Rmc-m!N!-2crr
  335. X`rr$rrr$!r-c-m!!!$`b3"!m"!3rmrj!$m!!!$m$2m-$2%*!$(m#3!r!!!!m2rlr
  336. Xrrr%"!3rrr!c`!!!2`-qlm-$`%*!$m-$!m!!!$``-qlm-m3'3!r`-$2!!!!r2rrq
  337. Xlra#3"2rr`2!!!!m-N!2l[`'3"2`-$2!!!!r!N!22Zr!Ira$``-$`!!!2$2m-$rZ
  338. Xrr!cr$2m-m!!!$mm3rr!IZr$!N!A`!!!2$`'3"2Zr$*!&m!!!$mm3N!6rZrr`rrr
  339. X!m!!!$`m"N!-2$2Zr$*!%m!!!$mm3N!-I`-qlm-#3!r!!!!m-m3%"$rrrqlrr$rc
  340. X`!!!2`2!3N!2``-qlm-$!m!!!$``2m3%"r!`-qlm-$2!!!!r2`-rrrmrrcrqlm-$
  341. X`!!!2$*!*qlm-m!!!$m#3#Fqlm2!!!!m2rrm-rj!$r!`-qlr`!!!2`*!+cl[`!!!
  342. X2$*!,qr!!!!r!N![2m!!!$rq3$2!!N!-#!!!2rj!*m!#3"3m-N!Rr!*!&$m$2`*!
  343. X$cm#3!rc`!*!%$`cr$*!$qr`-$2c2!*!%$m$`m-$!qr$!`2c-m!#3!`m2!I`-$2[
  344. Xm$!cmc-m!N!-2ca!I`-$lm-$2rj!$m!!!$`m"!Im-qr`2m3%2$2!!!!r`%*!$rr[
  345. Xrm"#3!r$`!!!2m3'3"2[a!C!%r2!!!!r`%*!%qr!3N!6`m!!!$r%"N!6lm3'3"2c
  346. X`!!!2m"#3!rrlrr!3N!2`m!!!$`m"!Im-qr`2m3%2$2!!!!r2%"r!`2[``-m3(m$
  347. X`!!!2$`(m$!clr!`-m3m-m!!!$m$`m-$!qr$!`2$``2!!!!m-r`crr2[mrr`2r!c
  348. X`!!!2`-r2m2$lm2$rcm$!m!!!$``-$`!Iqrm!(`b3!r!!!!r!`-r`!2[`!2r!N!2
  349. X`!!!2$*!$$`$lm"m-N!6`!!!2`*!%m2[`m-#3"2!!!!m-N!32qrm-N!A`!!!2`*!
  350. X%m2[`m-#3"2!!!!m-N!-2!2[`(`b3"2!!!!r!`-r`!2[`!2r!N!2`!!!2$!`2!"r
  351. Xlr`!I$*!$m!!!$m$!cr$`qr$`rm#3!r!!!!m-N!2rr2[mrr`-N!2`!!!2`*!&qr$
  352. X!N!A`!!!2rj!-m!#3"!G"8&"-!*!'"e0"9N8!!3#3"!G38N9'!!)!N!3(9%9B9!!
  353. X$!*!%"d*26N8!"!#3"$aZD$-a!*!$!8C548B!"!#3!i!!!3#"!!)!JJ!$!)-!"!#
  354. X%5801)`!%!!!$k!!"!qN!!J2U!!-$k`!%!q`!N!-1!$i!6J#k!E)6L3!%-!S!N!-
  355. X9!%)!,J$D!E)!"3#3#"G`!*!%X`#"!*!)rrr9234'D@aP#%p`C@iJ6@&`!%m!!!T
  356. X5C@4bBAFJ6@&`!&)4!!a3FQ9fD@peFb"0FfF!8"%!#P*PF'pcDA4TEfi!6J!!"80
  357. XXEh0P!&F!!!%Y!*!%"e*PCh9XBA)!'mJ!$89ZG'9b)%9iF'a[FQ8!!&J!!5d!N!3
  358. X-6h"dD@pZ)%9NDA6*!%8!!!%Y!*!%"&0KGQ8!8e-!!5d!N!3%8A9TG!"483#3"8J
  359. X!JJ#3#2q3!rX%4@4TG!49EQ4[!&S!!!%Y!*!%!d0eG!"B!!!%3fp`H3"$!!!&8'&
  360. XcG'8!9J!!"80XC@&b!*!)V!#$!*!)rrrpr`0,BQ3-3fpZG(*[E#",CAPc!"[*!!Y
  361. X3G@jMG(9KG'P[EJ!EbJ!)3R*KBfYPG(-!'mX!"@%J,5"Y!"[-!!9Z)#dJHJ!Ec3!
  362. X&35!Y)%d!'mi!"8iJ,5"D!"[2!!8`)#dJ13!Ed!!",3#3"!JSCA0MBA"P+3#3"!F
  363. XSFh"KBf8T!*!%##KNC@aPG'8T!*!%##KbCA4eFQiT!*!)F`#%!*!)rj!$f`4)C@a
  364. X`"dp`G'P[ER-!!%m!!5d!N!3%5'9XF!!!2`!-4'9cBh*TBQ8J5f9j!!!Q!!%Y!*!
  365. X%"eCPFR0TEfi!!(B!"dKTFh4[FRN!!&B!%&CPFR0TEfiJ4Q9KG(9bCA-!!#-!N!8
  366. XU!)!!N!MrN!2l!4313@*[GA3J6Q9d5'&MDmN!N!3",3#3#-B!K3#3#2rrrHm%5@j
  367. XQE`e*ERCPER4[FRNJ3@aX!!"T!""*ERCPER4[FRNJ8f9XC@0d!!"*!!C"C'TeFh3
  368. X!!#-!!5d!N!3*6'p[Db"%EhGZ!!!k!!a%CA0MFQPLC5"2EQ8!!$X!$84PFf0bD@*
  369. XP)%eKERN!!#m!$84PFf0bD@*P)&4bBA!!!&i!!5d!N!3-3f&XE#"0EfjcG'9b!!"
  370. X$!!Y1B@eP)%pLDQ9MG!!!)`!,4'PcBfpfCA*TCA-!!&`!N!@5!)B!N!MrrrZl"89
  371. XaG@P`"d0eFR*PER3!'p%!!5d!N!3&9fPPE'3!!(F!"94SFQph!!"d!!9"F("XH3!
  372. X!B3!",3#3"!TAC@&b)%&bE@pb!!"A!!K8B@YP)%pQCJ!!9!!+3A0V)&*PE@pfC3!
  373. X!33!",3#3"!C3GA3J6fi!!&!!"P*PE@pfC3!!8J#3"C-!K`#3#2q3!hX$3@0d"&G
  374. XKDA3!!#i!!5d!N!3)9'9XCA"[FR3!9"%!"%TeEA!!!#-!"de[ER0dCA)!!#-!"&G
  375. XTF'8!!#-!!5d!N!3&3A"`E(N!!'%!!e"KH3!!F!!%5fPMD`"%%3!%3fKKG!!!)`!
  376. X&6fCQCA)!!#-!"&"bBAN!!#-!"&4eFQi!!#-!N!@j!)J!N!Mrrr[I"8eKCfPM#84
  377. XbEh!J5A4PE3!!C!!,4(*[F#"6C@aPBh3!!%3!"P"TBfYeF!!!,!!09'pRCfaP)("
  378. XTBfYeF!!!3!!",3#3"!0&BA3!!'8!"&*PB@3!!()!"9&eB@CQ!!"a!!0%DA!!!#-
  379. X!!5d!N!3,6'PcG#"6F'9XE(-!!(J!#N0KFh3J8h"PE'`!!&S!!eTKF!!!HJ!'5@j
  380. XfEfYP!!!M!!05G@)!!#-!N!@h!)N!N!MrrlZr"%*TG(-'8f9KFQ0S!!"c!!T$E'p
  381. XcC5"%Efpb!!"M!!P2F'9Z)%4[Eh)!!'m!"8&`F'aj!!"K!!4,D@0V!%34!!%Y!*!
  382. X%"P9ZG(*KF!!!)`!&4QpbBf8!!#-!"%a[Eh3!!#-!!5d!N!3(4@jRFQ&fC3!!43!
  383. X$4'P`!!!M!!06DA3!!#-!!5d!!#-##%0XD@e`)&9`!!!m!!T$E'PYBL"%EhGZ!!!
  384. Xq!*!&L`$+!*!)rj!%#h"eEQ0dG@&dD@pZ!L!Z!*!%!L!X!*!%!L!l!*!%!L!k!*!
  385. X%!L!K!*!%!L!r!*!%!L!V!*!%!L!Y!*!%!L!p!*!%!L!M!*!%!L!N!*!%!L"!!*!
  386. X%!L!Q!*!%!L!U!*!%!L"q!*!%!L"I!*!)H!$,!*!)rj!%#'*bB@0VCA4c!9X!N!3
  387. X"A3#3"!%S!*!%!5N!N!3"H`#3"!&p!*!%!6`!N!3"2J#3"!&H!*!%!@!!N!3"*`#
  388. X3"!%L!*!%!9`!N!3",`#3"!&m!*!%!58!N!KM!-`!N!MrN!3&B5!Y)'d"B3#3"!&
  389. XL!*!%!@-!N!3"C!#3"!&P!*!%!@B!N!3"C`#3"!&S!*!%!@N!N!3"DJ#3"!&V!*!
  390. X%!@`!N!3"E3#3#'-!c3#3#2q3"!9Z)#dJHJ&Z!*!%!@m!N!3"F!#3"!&a!*!%!A)
  391. X!N!3"F`#3"!&d!*!%!A8!N!3"GJ#3"!&h!*!%!AJ!N!3"H3#3"!&k!*!)B`$1!*!
  392. X)rj!%"8%J,5"0!8%!N!3"3J#3"!&$!*!%!83!N!3"43#3"!&'!*!%!8F!N!3"5!#
  393. X3"!&*!*!%!8S!N!3"5`#3"!&-!*!%!8d!N!KM!-m!N!MrN!3&6L!Y)&S"6J#3"!&
  394. X2!*!%!9!!N!3"83#3"!&5!*!%!9-!N!3"9!#3"!&9!*!%!9B!N!3"9`#3"!&B!*!
  395. X%!9N!N!3"@J#3#'S!b3#3#2rrrIm-BfpZG(*[E#"VCAPc!@)!-3!!!@S!-J!!!@i
  396. X!-`!!!@J!0!!!!@`!0J!!!AN!0`!!!@X!1!!!!A8!13!!!5d!N!3"C!"%!!!"F!"
  397. X3!!!"FJ"5!!!"G!"8!*!'83$3!*!)rj!%"6!J,5!j!6!!N!3"-3#3"!%b!*!%!6-
  398. X!N!3"0!#3"!%e!*!%!6B!N!3"0`#3"!%i!*!%!6N!N!L4!-J!N!MrN!3'GfPkBA*
  399. XN#N&dG(*TBR9dCA-!!(J!$84PG'9MG#"9ER0PC@i!!'8!#8CXEfpb)%eKF!!!CJ!
  400. X34f9ZCA*KG'8J6@pZFh4PFJ!!C`!)5@4PER4TCRN!!'N!#8a[Bf&dD@pZF`!!E`!
  401. X16'9fC@`J9'9XCA"[FR3!!(B!">FfJ!!(F!N!9I!0%!N!MrN!3(Bh9bFQ9ZG!C
  402. XAC@&`Efi!!#N!"8&bE@pb!!"E!!95D@jRF`!!23!'3@eeE'9d!!!L!!98EfpXF`!
  403. X!+!!%4fpXC!!!*!!'8h"PE'ac!!!V!*!&,!#!!!S!J!#3!i%!N!1#!*!$J`#3!i3
  404. X!N!1&!*!$KJ#3!iF!N!1)!*!$L3#3"5`!b!!+!-J!N!2*!*!$bJ#3!mX!N!2-!*!
  405. X$c3#3!mi!N!22!*!$d!#3!p%!N!@3!!!0%D8b-$%J3fpZG(*[E#",CAPc%+8b-$)
  406. XJ8(9ZBh4eBA4TEfi0T6)`-b"#FQ&MDf9dF`UP-M!d)'%J,5"Y#U8b-$8JEL!Y)(S
  407. X+T6)`0L"")#dJ63UP-M!h)%iJ,5"D#U8b-$JJ-#!Y)$N#T5d)'k9PFf0KF'8()+9
  408. XcF'&MC3J)T@4PE'9dC3J0TA*PG(9bEJ#3!bJ!$!bP-M!j)%0eFR*PER3#T5d"G`&
  409. Xd!@%#T5d"9`&8!8%#T5d"8!&5!*!$C3!0"`+PBh4X,@)(#U9MG'`YDJF1T@0dE#e
  410. XZ"`LPBh4X,@J($+9MG'`YE!FCT@0dE#ej"`ZPBh4X,@X(&D9MG'`YG3+P,3F%T@0
  411. XdE#eN"a#PBh4X,A!(%U9MG'`YFJF8T@0dE#ed!*!$)J!3!5i",!%l!6S")3%r!5X
  412. X",3%p!5-"*!&!!5B"+J&q!9m!N!-L!"!"@`&G!5J"+3&l!Ad"2!%q!9i"B!%R!5)
  413. X"A!%[!A`"*3#3!a`!$3&K!@)"B`&N!@8"CJ&R!@J"D3&U!@X"E!&Y!*!$(!!0!@i
  414. X"E`&`!A%"FJ&c!A3"G3&f!AF"H!&j!AS!N!-F!!d"33&#!8-"4!&&!8B"4`&)!8N
  415. X"5J&,!8`"63#3!a`!$3&1!8m"8!&4!9)"8`&8!98"9J&A!9J"@3&D!*!$&J!+!6!
  416. X"-3%b!6-"0!%e!6B"0`%i!6N!N!0#!!J('+9MG'`YH!F&T@0dE#eP"`DPBh4X,@B
  417. X("k9MG'`YC`F*T@0dE#eT"`qPBh4X,@m(&U9MG'`YGJFAT@0dE#eh!*!$%!!(!5N
  418. X"@`%p!5)"+!%N!5X!N!0,#c&cG#"YC@je)%P%4&G54!SM)'pQ)%e&6P9c6d019!8
  419. XUN!9-8e4$"P*PFb"*4%4A8N3)8Q9cCA*fC@4'9e*%"5U3"8a69%8!N!-V!a1!!*!
  420. X$"6-Z-5ic(P0dD@0SG'PZCb"0BA4SC@eKG'PcBfJJ3f9ZG(*eE3#3!bX$%i!!N!-
  421. X&-bia,M-H-bia,M-0U6%j1$8Y-6Nj-b"0,L"6G'9`D'9ZFfpZ!*!$e!!,!*!&G!$
  422. Xq!)J"BJ3%8'aKH3#3"A3!9J#)!,S%"&&eDA3!N!9`!2S!M!&QJ!#3"Ni!H3"I!*S
  423. X!N!G1!0S!A`$l!*!(6J&&!&m"CJ#3"di!93"H!(Q)"9*[E'8k"!#3"8i!ZJ"H!0U
  424. X)"&0PH$S!N!91!4N!AJ&&L!90Ef4P1J#3"K-!93!N!@@)$&GSEb"KFQ8JH@pe2`#
  425. X3"5N!@3!j!@-3"%jKE@8!N!82!"J!,`!iS!)!!3#3!aX!#!&2!U8Y!6m"*J+P,3&
  426. Xf!9B))hCPFR0TEfi!N!-Q!!`"D3&*"b0KC'TeFh3#T5d"1J%l!5m"AJ+P,3&$"50
  427. XZB@eP!9`!N!00!!i",J+P,3J8T5"MG'`YG!8MDR9YF!JME@pZFh4PFJ8MGfP`C3+
  428. XP,3&K!A!("+9MG'`YC!8MBfKKG!BMEfCQCA)&)h"bBAN&)h4eFQi!N!-Z!!m"C!&
  429. X%!5`"3!+P,3&P!A)"F33MC'P`!U8Y!AJ"@J&k"b0TERC[Df8%)h*eBJ#3!c3!!J#
  430. X3"@F""!"l!93%!Np,!*!&#`"4!&J"B)J%AM"H-3#3"3S!'!!U!$LJ!J!"!*!$4!!
  431. X$!*!&A3%1!(%"5J3#6Qm!N!9G!&d!F3#C"!0CCA-!N!B+!%m!8!&6L!*H-!#3"3S
  432. X!&J!U!$DJ!J#3"3i!4!"%!,)"e3#!4%3`#J#3!`i!5J"U!0-"ea1)!!3`#J#3!d!
  433. X!%!&c!@-"E`&K"`5PBh4X,@3#T5d()h9ZG(*KF!BMCQpbBf8&)fa[Eh3#T5d"433
  434. XMC'P`"#0cDA3#T5d"2!%q!!!"!*!$9[d!!&Ap!!!(U`!d2Q`%b!#3!a`'@J!89dP
  435. X14!!(!+T869"-!!%"#NjeEA!!!3%L38a59!!$!6T%594-!!S"DP088L-!%3(ZD@0
  436. Xc0!!%!XCTBh-M!!3$!NP$6L-!"!-qD@0X0!!%!hT%6%p(!!B$YNC26P3!!`3+4Np
  437. X14!!""$T$99*6!!J%8P088L!!!!5qEQJc-3!!"-T'8N9'!!3%eN*14%`!!!85689
  438. X193!6"4j06P8M!!%'$RCPFR-!!3BQ!)!!,3#3!hJ!0$ZS!)%!N!Fd1k3!JJ!)!*!
  439. X$)!!d1k!!J`!2!*!$hJ!d1j`!K!!A!*!$3!!d1jJ!K3!F!*!$@J!d1j3!KJ!K!!!
  440. X"!J!d1j!!!)F!Z3!!25i!0$Z-!)!!-J#3!ji!0$Zi!)%"4J!!8X3!0$ci!)!!0`!
  441. X!*LJ!0$`8!)%!33!!*N)!0$`3!)(rrb!!#1!!0$U%!)$rr`!!9C8!0$V-%iMrr`!
  442. X!9DF!0$Q!%iRrr`!!4DF!0$TJ!)(rrb!!#2!!-d#!!)$rr`!!$)`!0$f)!),rr`!
  443. X!$[i!0$dd!)Mrr`!!$RB!0$d`!)Arr`!!$5)!0$dX!)Err`!!$AJ!0$dS!)Irr`!
  444. X!$H!!0$dN!)Rrr`!!$i!!0$dJ%iMrr`!!948!0$eX%iRrr`!!98d!0$SS&h$rr`!
  445. X!8h%!0$YJ!)!!Ub!!!5B!0$`)!)-!e!!!8&X!0$`%!)3!f!!!9%N!0$`!!)8!h3!
  446. X!9'J!0$[m!)B!iJ!!81m!0$[i!)F!k!!!9*)!0$[d!)J!l!!!91-!0$[`!)N!mJ!
  447. X!9EN!0$[X!-N!p`!!84X!0$[S!-S""!!!8B3!0$[N!-X"%!!!8DS!0$[B!-`"'3!
  448. X!8G!!0$[8!-d"(`!!8I!!0$[3!-i"*3!!8K!!0$[-!-m"+`!!8M!!0$[)!0!"-3!
  449. X!8P!!0$[%!-J"0`!!8QS!0$[!!0%"2J!!8V!!0$Zm!qMrr`!!!8!!0$b%!qRrr`!
  450. X!!F3!0$b!!qVrr`!!$r!!0$am!q[rrb!!2C!!!$3mH!2XrrmJ!$i8!$3mG!2Srrm
  451. X!!!*)!$3mQ!2Trrm!!!+-!$3mP!2Urrm!!!T%!$3mN!!$krrr)!!qQ!!d2)`$l2r
  452. Xr)!!qh!!d2)J$k2rr!!!#d!!d2+`$kIrr!!!$e!!d2+J$k[rr!!!*3!!d2+3$krr
  453. Xr)!!r)!!d2+!$l2rr)!"!*!!d2*`$k2rr!!!%f!!d2-!$kIrr!!!'h!!d2,`$k[r
  454. Xr!!!+L!!d2,J$krrr)!""+!!d2,3$l2rr)!"$,!!d2,!!L!"*!!!1@J!d24!!K`"
  455. X@!!!-cJ!d23`!KJ"5!!!-kJ!d23J!K3"2!!!0"J!d233!L3"E!!!2C!!d23!!JJ"
  456. XT!!!-XJ!d22`AF!&,!!"&Z3!d26a,LIrr)!!3G!!d21a,M2rr!!!D!!!d21"-#3#
  457. X%)!!QSJ!d20a-$!#4)!![D!!d20J!P`"`"!!PiJ!d223!Q!"j"!!QA!!d22!#!2r
  458. Xr)!!m3J!d2@!#!rrr)!!mLJ!d29`#"2rr)!!mdJ!d29J#"Irr)!!kNJ!d293#"rr
  459. Xr)!!kfJ!d29!#!Irr)!!l)J!d28`#"[rr)!!lDJ!d28J##2rr)!!lXJ!d283#![r
  460. Xr)!!lqJ!d28!!J!#F!!!p'J!d2!`!!2rr)!!p8J!d1Q3!J2rr)!"&-!!d203!JIr
  461. Xr)!"&1`!d20!!J[rr)!"&4J!d2-`!Jrrr)!"&83!d2-J!K2rr)!"&A!!d2-3!J2r
  462. Xr)!"&C`!d2@3!JIrr!!"&dJ!d2(!!J[rr!!"'L3!d2'`!Jrrr!!"'e3!d2'J!K2r
  463. Xr!!"(K3!d2'3!J2rr!!"(r!!d2'!!KIrr!!")+J!d2&`!K[rr!!")p!!d2&J!Krr
  464. Xr!!"*LJ!d2&3!L2rr!!"+)3!d2&!!LIrr!!"+hJ!d2%`!b[rr!!",Q3!d2%J!brr
  465. Xr!!"-+!!d2%3!c2rr!!"-T!!d2%!!cIrr!!"0#`!d2$`!c[rr!!"0FJ!d2$J!crr
  466. Xr!!"0f3!d2$3!bIrr!!"13!!d2$!!d2rr!!"1VJ!d2#`!b2rr!!"2!`!d2#J!dIr
  467. Xr!!"2Q!!d2#3!J!$%&!"2q`!d24`!J3$-&!"3+`!d19`!!Irr)!"63J!d1l!!![r
  468. Xr)!"6%`!d1k`(6@9cFf&RC3C6G'&dGA-(4(9ZCf9[EJ40C@je"&4PH(3,4'PKCfj
  469. X[Fh4TBh-%6P9-6!41G@e`#99ZFfKTCR4PC!G6D'PQG'9N"APZ6Q&a!RPZ!hPZF34
  470. XjEQ&a$90YB@aX)%GPG'aTEQ8'8(*[EA"d#%KKBfY'Efjd#P"65'&MDdC[ER3-8&0
  471. X)B@0V4QpZG#!j#P"65'&MDdC[ER318(*PCL"'D@aP)%jKE@806@PcBbiJ8h4bD@j
  472. XRF`T89&NJ9fPZC'ph"fePER9LBA)(Fh9LE@9ZG30,BQ3%5'9XF!4*EQC["89aG@P
  473. X`!d&MG!90B@GTB`4#DA4c$'0[ER4bEf`JDf9jF`Y`G@jMG(9KG'P[EJKLFQ&MDf9
  474. XdF`9K)#dJE39Z)#dJHJ9")#dJ6391)#dJ@J8`)#dJ13ChDATKFQ3(Bh9bFQ9ZG!4
  475. X06P8M"90dBA*d1MB:
  476. END_OF_FILE
  477. if test 28405 -ne `wc -c <'sys/mac/NHrsrc.hqx'`; then
  478.     echo shar: \"'sys/mac/NHrsrc.hqx'\" unpacked with wrong size!
  479. fi
  480. # end of 'sys/mac/NHrsrc.hqx'
  481. if test -f 'sys/unix/snd86unx.shr' -a "${1}" != "-c" ; then 
  482.   echo shar: Renaming existing file \"'sys/unix/snd86unx.shr'\" to \"'sys/unix/snd86unx.shr.orig'\"
  483.   mv -f 'sys/unix/snd86unx.shr' 'sys/unix/snd86unx.shr.orig'
  484. fi
  485. echo shar: Extracting \"'sys/unix/snd86unx.shr'\" \(28922 characters\)
  486. sed "s/^X//" >'sys/unix/snd86unx.shr' <<'END_OF_FILE'
  487. X# This is a shell archive.  Save it in a file, remove anything before
  488. X# this line, and then unpack it by entering "sh file".  Note, it may
  489. X# create directories; files and directories will be owned by you and
  490. X# have default permissions.
  491. X#
  492. X# This archive contains:
  493. X#
  494. X#    READ.ME
  495. X#    install.bsd
  496. X#    spkr.7
  497. X#    Makefile
  498. X#    spkr.c
  499. X#    spkr.h
  500. X#    interp.c
  501. X#    Files
  502. X#    Install
  503. X#    Master
  504. X#    Name
  505. X#    Node
  506. X#    Remove
  507. X#    Size
  508. X#    System
  509. X#    playtest
  510. X#
  511. Xecho x - READ.ME
  512. Xsed 's/^X//' >READ.ME << 'END-of-READ.ME'
  513. XX        Console Speaker Driver Package (v1.1)
  514. XX
  515. XX        by Eric S. Raymond (esr@snark.thyrsus.com)
  516. XX
  517. XXThis package gives 80386 machines running SVr3.2 or later the ability to play
  518. XXtunes on the console speaker.  It has been extended to 386BSD (and possibly
  519. XXBSDI) by Andrew A. Chernov, and to SCO UNIX 3.2.4 (and possibly other VPIX
  520. XXsystems) by Andreas Arens.
  521. XX
  522. XXThe following files are contained in the kit:
  523. XX
  524. XXDocumentation and examples:
  525. XXREAD.ME        -- this file
  526. XXspeaker.7    -- man page for the driver
  527. XXplaytest    -- test script exercising familiar tunes
  528. XX
  529. XXInstallable driver kit parts, for SVr3.2 or later:
  530. XXFiles        -- list of driver package file locations
  531. XXInstall        -- installation script for driver kit
  532. XXMaster        -- mdevice entry for speaker driver
  533. XXName        -- name entry foe speaker driver
  534. XXNode        -- /dev node specification file
  535. XXRemove        -- Driver removal script
  536. XXSize        -- installation size data
  537. XXSystem        -- sdevice entry for speaker driver
  538. XX
  539. XXDriver source code, for SVr3.2 or later and 386BSD:
  540. XXMakefile    -- Makefile for driver code
  541. XXspkr.c        -- the driver source
  542. XXspeaker.h    -- ioctl interface file
  543. XX
  544. XXCommon source code:
  545. XXinterp.c    -- play string interpretation code
  546. XX
  547. XXFor SVr3.2 or later, simply type `make' and wait. Then type ./Install
  548. XXand follow its instructions. You will have to install the man pages by hand.
  549. XXBe aware that the speaker.7 man page uses tbl(1) constructs.
  550. XX
  551. XXFor 386BSD, follow the installation instructions in install.bsd.
  552. XX
  553. XXFor SCO UNIX 3.2.4, no new kernel drivers are needed, and you need only
  554. XXcopy interp.c to your src directory and proceed with making NetHack, with
  555. XXVPIX_MUSIC set in unixconf.h.
  556. XX
  557. XXInteresting tunes mailed to the author will be periodically posted in batches
  558. XXand added to the test script for future versions.
  559. XX
  560. XX            Revision notes
  561. XX
  562. XX1.1 -- fixed minor bug in M[LSN] interpretation, added octave-tracking.
  563. XX       Tweaked the playtest examples.
  564. XEND-of-READ.ME
  565. Xecho x - install.bsd
  566. Xsed 's/^X//' >install.bsd << 'END-of-install.bsd'
  567. XXCopy spkr.c and interp.c to /sys/i386/isa
  568. XXCopy spkr.h to /sys/sys
  569. XX
  570. XX-----------------------------------------------------------------------------
  571. XX
  572. XXFile /sys/i386/conf/YOUR_MACHINE_NAME
  573. XXadd following line:
  574. XX
  575. XXpseudo-device   speaker
  576. XX
  577. XX-----------------------------------------------------------------------------
  578. XX
  579. XXFile /sys/i386/conf/files.i386
  580. XXadd following line:
  581. XX
  582. XXi386/isa/spkr.c         optional speaker
  583. XX
  584. XX-----------------------------------------------------------------------------
  585. XX
  586. XXFile /sys/i386/i386/conf.c
  587. XX[major number 20 (hex) is registered for spkr driver, don't change it]
  588. XXadd following code:
  589. XX
  590. XX#include "speaker.h"
  591. XX#if NSPEAKER > 0
  592. XXint     spkropen(),spkrclose(),spkrwrite(),spkrioctl();
  593. XX#else
  594. XX#define spkropen  enxio
  595. XX#define spkrclose enxio
  596. XX#define spkrwrite enxio
  597. XX#define spkrioctl enxio
  598. XX#endif
  599. XX    ...
  600. XX
  601. XXstruct cdevsw    cdevsw[] =
  602. XX{
  603. XX    ...
  604. XX
  605. XX    { spkropen,     spkrclose,      enxio,          spkrwrite,      /*20*/
  606. XX      spkrioctl,    enxio,          enxio,          NULL,
  607. XX      enxio,        enxio,          enxio },
  608. XX    ...
  609. XX
  610. XX-----------------------------------------------------------------------------
  611. XX
  612. XXMake corresponding device:
  613. XX
  614. XX    mknod /dev/speaker c 32 0
  615. XX
  616. XX[major number 32 (20 hex) is registered for spkr driver, don't change it]
  617. XX
  618. XX-----------------------------------------------------------------------------
  619. XX
  620. XXGo to /sys/i386/conf and type
  621. XX    config YOUR_MACHINE_NAME
  622. XXthen go to /sys/compile/YOUR_MACHINE_NAME and type
  623. XX    make depend
  624. XX    make
  625. XX
  626. XEND-of-install.bsd
  627. Xecho x - spkr.7
  628. Xsed 's/^X//' >spkr.7 << 'END-of-spkr.7'
  629. XX.TH SPKR 7
  630. XX.SH NAME
  631. XXspkr \- console speaker device driver
  632. XX.SH DESCRIPTION
  633. XXThe speaker device driver allows applications to control the PC console
  634. XXspeaker on an IBM-PC-compatible machine running UNIX.
  635. XX.PP
  636. XXOnly one process may have this device open at any given time; open() and
  637. XXclose() are used to lock and relinquish it. An attempt to open() when
  638. XXanother process has the device locked will return -1 with an EBUSY error
  639. XXindication. Writes to the device are interpreted as 'play strings' in a
  640. XXsimple ASCII melody notation. An ioctl() for tone generation at arbitrary
  641. XXfrequencies is also supported.
  642. XX.PP
  643. XXSound-generation does \fInot\fR monopolize the processor; in fact, the driver
  644. XXspends most of its time sleeping while the PC hardware is emitting
  645. XXtones. Other processes may emit beeps while the driver is running.
  646. XX.PP
  647. XXApplications may call ioctl() on a speaker file descriptor to control the
  648. XXspeaker driver directly; definitions for the ioctl() interface are in
  649. XXsys/spkr.h. The tone_t structure used in these calls has two fields,
  650. XXspecifying a frequency (in hz) and a duration (in 1/100ths of a second).
  651. XXA frequency of zero is interpreted as a rest.
  652. XX.PP
  653. XXAt present there are two such ioctls. SPKRTONE accepts a pointer to a
  654. XXsingle tone structure as third argument and plays it. SPKRTUNE accepts a
  655. XXpointer to the first of an array of tone structures and plays them in
  656. XXcontinuous sequence; this array must be terminated by a final member with
  657. XXa zero duration.
  658. XX.PP
  659. XXThe play-string language is modelled on the PLAY statement conventions of
  660. XXIBM BASIC 2.0. The MB, MF and X primitives of PLAY are not useful in a UNIX 
  661. XXenvironment and are omitted. The `octave-tracking' feature is also new.
  662. XX.PP
  663. XXThere are 84 accessible notes numbered 1-83 in 7 octaves, each running from
  664. XXC to B, numbered 0-6; the scale is equal-tempered A440 and octave 3 starts
  665. XXwith middle C. By default, the play function emits half-second notes with the
  666. XXlast 1/16th second being `rest time'.
  667. XX.PP
  668. XXPlay strings are interpreted left to right as a series of play command groups;
  669. XXletter case is ignored. Play command groups are as follows:
  670. XX.PP
  671. XXCDEFGAB -- letters A through G cause the corresponding note to be played in the
  672. XXcurrent octave. A note letter may optionally be followed by an \fIaccidental
  673. XXsign\fR, one of # + or -; the first two of these cause it to be sharped one
  674. XXhalf-tone, the last causes it to be flatted one half-tone. It may also be
  675. XXfollowed by a time value number and by sustain dots (see below). Time values
  676. XXare interpreted as for the L command below;.
  677. XX.PP
  678. XXO <n> -- if <n> is numeric, this sets the current octave. <n> may also be one
  679. XXof 'L' or 'N' to enable or disable octave-tracking (it is disabled by default).
  680. XXWhen octave-tracking is on, interpretation of a pair of letter notes will
  681. XXchange octaves if necessary in order to make the smallest possible jump between
  682. XXnotes. Thus "olbc" will be played as "olb>c", and "olcb" as "olc<b". Octave
  683. XXlocking is disabled for one letter note following by >, < and O[0123456].
  684. XX.PP
  685. XX> -- bump the current octave up one.
  686. XX.PP
  687. XX< -- drop the current octave down one.
  688. XX.PP
  689. XXN <n> -- play note n, n being 1 to 84 or 0 for a rest of current time value.
  690. XXMay be followedv by sustain dots.
  691. XX.PP
  692. XXL <n> -- sets the current time value for notes. The default is L4, quarter
  693. XXnotes. The lowest possible value is 1; values up to 64 are accepted. L1 sets
  694. XXwhole notes, L2 sets half notes, L4 sets quarter notes, etc..
  695. XX.PP
  696. XXP <n> -- pause (rest), with <n> interpreted as for L. May be followed by
  697. XXsustain dots. May also be written '~'.
  698. XX.PP
  699. XXT <n> -- Sets the number of quarter notes per minute; default is 120. Musical
  700. XXnames for common tempi are:
  701. XX
  702. XX.TS
  703. XXa a a.
  704. XX            Tempo        Beats Per Minute
  705. XXvery slow    Larghissimo    
  706. XX            Largo        40-60
  707. XX             Larghetto        60-66
  708. XX            Grave           
  709. XX            Lento           
  710. XX            Adagio           66-76
  711. XXslow        Adagietto        
  712. XX            Andante       76-108
  713. XXmedium       Andantino    
  714. XX            Moderato    108-120
  715. XXfast        Allegretto    
  716. XX            Allegro       120-168
  717. XX            Vivace        
  718. XX            Veloce        
  719. XX            Presto        168-208
  720. XXvery fast    Prestissimo    
  721. XX.TE
  722. XX.PP
  723. XXM[LNS] -- set articulation. MN (N for normal) is the default; the last 1/8th of
  724. XXthe note's value is rest time. You can set ML for legato (no rest space) or
  725. XXMS (staccato) 1/4 rest space.
  726. XX.PP
  727. XXNotes (that is, CDEFGAB or N command character groups) may be followed by
  728. XXsustain dots. Each dot causes the note's value to be lengthened by one-half
  729. XXfor each one. Thus, a note dotted once is held for 3/2 of its undotted value;
  730. XXdotted twice, it is held 9/4, and three times would give 27/8. 
  731. XX.PP
  732. XXWhitespace in play strings is simply skipped and may be used to separate
  733. XXmelody sections.
  734. XX.SH BUGS
  735. XXDue to roundoff in the pitch tables and slop in the tone-generation and timer
  736. XXhardware (neither of which was designed for precision), neither pitch accuracy
  737. XXnor timings will be mathematically exact. There is no volume control.
  738. XX.PP
  739. XXIn play strings which are very long (longer than your system's physical I/O
  740. XXblocks) note suffixes or numbers may occasionally be parsed incorrectly due
  741. XXto crossing a block boundary.
  742. XX.SH FILES
  743. XX/dev/speaker -- speaker device file
  744. XX.SH AUTHOR
  745. XXEric S. Raymond (esr@snark.thyrsus.com) Feb 1990
  746. XEND-of-spkr.7
  747. Xecho x - Makefile
  748. Xsed 's/^X//' >Makefile << 'END-of-Makefile'
  749. XX#
  750. XX# Speaker driver package makefile
  751. XX#
  752. XXCFLAGS = -I. -O # -DDEBUG
  753. XXLDFLAGS = -s
  754. XX
  755. XXall: Driver.o
  756. XX
  757. XXinstall:
  758. XX    ./Install
  759. XX
  760. XXDriver.o: spkr.c
  761. XX    $(CC) $(CFLAGS) -c spkr.c
  762. XX    mv spkr.o Driver.o
  763. XX
  764. XXclean:
  765. XX    rm -f Driver.o *~ speaker.shar
  766. XX
  767. XXDSP =  Files Install Master Name Node Remove Size System 
  768. XXshar:
  769. XX    shar READ.ME install.bsd spkr.7 Makefile spkr.[ch] \
  770. XX        interp.c $(DSP) playtest >speaker.shar
  771. XEND-of-Makefile
  772. Xecho x - spkr.c
  773. Xsed 's/^X//' >spkr.c << 'END-of-spkr.c'
  774. XX/*
  775. XX * spkr.c -- device driver for console speaker on 80386
  776. XX *
  777. XX * v1.1 by Eric S. Raymond (esr@snark.thyrsus.com) Feb 1990
  778. XX *      modified for 386bsd by Andrew A. Chernov <ache@astral.msk.su>
  779. XX */
  780. XX
  781. XX#ifdef __386BSD__
  782. XX#include "speaker.h"
  783. XX#endif
  784. XX#if !defined(__386BSD__) || (NSPEAKER > 0)
  785. XX
  786. XX#ifdef __386BSD__
  787. XX#include "types.h"
  788. XX#include "param.h"
  789. XX#include "errno.h"
  790. XX#include "buf.h"
  791. XX#include "uio.h"
  792. XX
  793. XX#define CADDR caddr_t
  794. XX#define err_ret(x) return(x)
  795. XX#else /* SYSV */
  796. XX#include <sys/types.h>
  797. XX#include <sys/param.h>
  798. XX#include <sys/dir.h>
  799. XX#include <sys/signal.h>
  800. XX#include <sys/errno.h>
  801. XX#include <sys/ioctl.h>
  802. XX#include <sys/user.h>
  803. XX#include <sys/sysmacros.h> 
  804. XX#include <limits.h>
  805. XX
  806. XX#define CADDR char *
  807. XX#define err_ret(x) u.u_error = (x)
  808. XX#endif
  809. XX
  810. XX#include "spkr.h"
  811. XX
  812. XX/**************** MACHINE DEPENDENT PART STARTS HERE *************************
  813. XX *
  814. XX * This section defines a function tone() which causes a tone of given
  815. XX * frequency and duration from the 80x86's console speaker.
  816. XX * Another function endtone() is defined to force sound off, and there is
  817. XX * also a rest() entry point to do pauses.
  818. XX *
  819. XX * Audible sound is generated using the Programmable Interval Timer (PIT) and
  820. XX * Programmable Peripheral Interface (PPI) attached to the 80x86's speaker. The
  821. XX * PPI controls whether sound is passed through at all; the PIT's channel 2 is
  822. XX * used to generate clicks (a square wave) of whatever frequency is desired.
  823. XX *
  824. XX * The non-BSD code requires SVr3.2-compatible inb(), outb(), timeout(),
  825. XX * sleep(), and wakeup().
  826. XX */
  827. XX
  828. XX/*
  829. XX * PIT and PPI port addresses and control values
  830. XX *
  831. XX * Most of the magic is hidden in the TIMER_PREP value, which selects PIT
  832. XX * channel 2, frequency LSB first, square-wave mode and binary encoding.
  833. XX * The encoding is as follows:
  834. XX *
  835. XX * +----------+----------+---------------+-----+
  836. XX * |  1    0  |  1    1  |  0    1    1  |  0  |
  837. XX * | SC1  SC0 | RW1  RW0 | M2   M1   M0  | BCD |
  838. XX * +----------+----------+---------------+-----+
  839. XX *   Counter     Write        Mode 3      Binary
  840. XX *  Channel 2  LSB first,  (Square Wave) Encoding 
  841. XX *             MSB second
  842. XX */
  843. XX#define PPI        0x61    /* port of Programmable Peripheral Interface */
  844. XX#define PPI_SPKR    0x03    /* turn these PPI bits on to pass sound */
  845. XX#define PIT_CTRL    0x43    /* PIT control address */
  846. XX#define PIT_COUNT    0x42    /* PIT count address */
  847. XX#define PIT_MODE    0xB6    /* set timer mode for sound generation */
  848. XX
  849. XX/*
  850. XX * Magic numbers for timer control. 
  851. XX */
  852. XX#define TIMER_CLK    1193180L    /* corresponds to 18.2 MHz tick rate */
  853. XX
  854. XXstatic int endtone()
  855. XX/* turn off the speaker, ending current tone */
  856. XX{
  857. XX    wakeup((CADDR)endtone);
  858. XX    outb(PPI, inb(PPI) & ~PPI_SPKR);
  859. XX}
  860. XX
  861. XXstatic void tone(hz, ticks)
  862. XX/* emit tone of frequency hz for given number of ticks */
  863. XXunsigned int hz, ticks;
  864. XX{
  865. XX    unsigned int divisor = TIMER_CLK / hz;
  866. XX    int sps;
  867. XX
  868. XX#ifdef DEBUG
  869. XX    printf("tone: hz=%d ticks=%d\n", hz, ticks);
  870. XX#endif /* DEBUG */
  871. XX
  872. XX    /* set timer to generate clicks at given frequency in Hertz */
  873. XX#ifdef __386BSD__
  874. XX    sps = spltty();
  875. XX#else
  876. XX    sps = spl5();
  877. XX#endif
  878. XX    outb(PIT_CTRL, PIT_MODE);        /* prepare timer */
  879. XX    outb(PIT_COUNT, (unsigned char) divisor);  /* send lo byte */
  880. XX    outb(PIT_COUNT, (divisor >> 8));    /* send hi byte */
  881. XX    splx(sps);
  882. XX
  883. XX    /* turn the speaker on */
  884. XX    outb(PPI, inb(PPI) | PPI_SPKR);
  885. XX
  886. XX    /*
  887. XX     * Set timeout to endtone function, then give up the timeslice.
  888. XX     * This is so other processes can execute while the tone is being
  889. XX     * emitted.
  890. XX     */
  891. XX    timeout((CADDR)endtone, (CADDR)NULL, ticks);
  892. XX    sleep((CADDR)endtone, PZERO - 1);
  893. XX}
  894. XX
  895. XXstatic int endrest()
  896. XX/* end a rest */
  897. XX{
  898. XX    wakeup((CADDR)endrest);
  899. XX}
  900. XX
  901. XXstatic void rest(ticks)
  902. XX/* rest for given number of ticks */
  903. XXint    ticks;
  904. XX{
  905. XX    /*
  906. XX     * Set timeout to endrest function, then give up the timeslice.
  907. XX     * This is so other processes can execute while the rest is being
  908. XX     * waited out.
  909. XX     */
  910. XX#ifdef DEBUG
  911. XX    printf("rest: %d\n", ticks);
  912. XX#endif /* DEBUG */
  913. XX    timeout((CADDR)endrest, (CADDR)NULL, ticks);
  914. XX    sleep((CADDR)endrest, PZERO - 1);
  915. XX}
  916. XX
  917. XX#include "interp.c"    /* playinit() and playstring() */
  918. XX
  919. XX/******************* UNIX DRIVER HOOKS BEGIN HERE **************************
  920. XX *
  921. XX * This section implements driver hooks to run playstring() and the tone(),
  922. XX * endtone(), and rest() functions defined above.  For non-BSD systems,
  923. XX * SVr3.2-compatible copyin() is also required.
  924. XX */
  925. XX
  926. XXstatic int spkr_active;    /* exclusion flag */
  927. XX#ifdef __386BSD__
  928. XXstatic struct  buf *spkr_inbuf; /* incoming buf */
  929. XX#endif
  930. XX
  931. XXint spkropen(dev)
  932. XXdev_t    dev;
  933. XX{
  934. XX#ifdef DEBUG
  935. XX    printf("spkropen: entering with dev = %x\n", dev);
  936. XX#endif /* DEBUG */
  937. XX
  938. XX    if (minor(dev) != 0)
  939. XX    err_ret(ENXIO);
  940. XX    else if (spkr_active)
  941. XX    err_ret(EBUSY);
  942. XX    else
  943. XX    {
  944. XX    playinit();
  945. XX#ifdef __386BSD__
  946. XX    spkr_inbuf = geteblk(DEV_BSIZE);
  947. XX#endif
  948. XX    spkr_active = 1;
  949. XX    }
  950. XX#ifdef __386BSD__
  951. XX    return(0);
  952. XX#endif
  953. XX}
  954. XX
  955. XX#ifdef __386BSD__
  956. XXint spkrwrite(dev, uio)
  957. XXstruct uio *uio;
  958. XX#else
  959. XXint spkrwrite(dev)
  960. XX#endif
  961. XXdev_t    dev;
  962. XX{
  963. XX#ifdef __386BSD__
  964. XX    register unsigned n;
  965. XX    char *cp;
  966. XX    int error;
  967. XX#endif
  968. XX#ifdef DEBUG
  969. XX#ifdef __386BSD__
  970. XX    printf("spkrwrite: entering with dev = %x, count = %d\n",
  971. XX        dev, uio->uio_resid);
  972. XX#else
  973. XX    printf("spkrwrite: entering with dev = %x, u.u_count = %d\n",
  974. XX        dev, u.u_count);
  975. XX#endif
  976. XX#endif /* DEBUG */
  977. XX
  978. XX    if (minor(dev) != 0)
  979. XX    err_ret(ENXIO);
  980. XX    else
  981. XX    {
  982. XX#ifdef __386BSD__
  983. XX    n = MIN(DEV_BSIZE, uio->uio_resid);
  984. XX    cp = spkr_inbuf->b_un.b_addr;
  985. XX    error = uiomove(cp, n, uio);
  986. XX    if (!error)
  987. XX        playstring(cp, n);
  988. XX    return(error);
  989. XX#else
  990. XX    char    bfr[STD_BLK];
  991. XX
  992. XX    copyin(u.u_base, bfr, u.u_count);
  993. XX    playstring(bfr, u.u_count);
  994. XX    u.u_base += u.u_count;
  995. XX    u.u_count = 0;
  996. XX#endif
  997. XX    }
  998. XX}
  999. XX
  1000. XXint spkrclose(dev)
  1001. XXdev_t    dev;
  1002. XX{
  1003. XX#ifdef DEBUG
  1004. XX    printf("spkrclose: entering with dev = %x\n", dev);
  1005. XX#endif /* DEBUG */
  1006. XX
  1007. XX    if (minor(dev) != 0)
  1008. XX    err_ret(ENXIO);
  1009. XX    else
  1010. XX    {
  1011. XX    endtone();
  1012. XX#ifdef __386BSD__
  1013. XX    brelse(spkr_inbuf);
  1014. XX#endif
  1015. XX    spkr_active = 0;
  1016. XX    }
  1017. XX#ifdef __386BSD__
  1018. XX    return(0);
  1019. XX#endif
  1020. XX}
  1021. XX
  1022. XXint spkrioctl(dev, cmd, cmdarg)
  1023. XXdev_t    dev;
  1024. XXint    cmd;
  1025. XXCADDR   cmdarg;
  1026. XX{
  1027. XX#ifdef DEBUG
  1028. XX    printf("spkrioctl: entering with dev = %x, cmd = %x\n", dev, cmd);
  1029. XX#endif /* DEBUG */
  1030. XX
  1031. XX    if (minor(dev) != 0)
  1032. XX    err_ret(ENXIO);
  1033. XX    else if (cmd == SPKRTONE)
  1034. XX    {
  1035. XX    tone_t    *tp = (tone_t *)cmdarg;
  1036. XX
  1037. XX    if (tp->frequency == 0)
  1038. XX        rest(tp->duration);
  1039. XX    else
  1040. XX        tone(tp->frequency, tp->duration);
  1041. XX    }
  1042. XX    else if (cmd == SPKRTUNE)
  1043. XX    {
  1044. XX#ifdef __386BSD__
  1045. XX    tone_t  *tp = (tone_t *)(*(caddr_t *)cmdarg);
  1046. XX    tone_t ttp;
  1047. XX    int error;
  1048. XX
  1049. XX    for (; ; tp++) {
  1050. XX        error = copyin(tp, &ttp, sizeof(tone_t));
  1051. XX        if (error)
  1052. XX            return(error);
  1053. XX        if (ttp.duration == 0)
  1054. XX            break;
  1055. XX        if (ttp.frequency == 0)
  1056. XX        rest(ttp.duration);
  1057. XX        else
  1058. XX        tone(ttp.frequency, ttp.duration);
  1059. XX    }
  1060. XX#else
  1061. XX    tone_t    *tp = (tone_t *)cmdarg;
  1062. XX
  1063. XX    for (; tp->duration; tp++)
  1064. XX        if (tp->frequency == 0)
  1065. XX        rest(tp->duration);
  1066. XX        else
  1067. XX        tone(tp->frequency, tp->duration);
  1068. XX#endif
  1069. XX    }
  1070. XX    else
  1071. XX    err_ret(EINVAL);
  1072. XX#ifdef __386BSD__
  1073. XX    return(0);
  1074. XX#endif
  1075. XX}
  1076. XX
  1077. XX#endif  /* !defined(__386BSD__) || (NSPEAKER > 0) */
  1078. XX/* spkr.c ends here */
  1079. XEND-of-spkr.c
  1080. Xecho x - spkr.h
  1081. Xsed 's/^X//' >spkr.h << 'END-of-spkr.h'
  1082. XX/*
  1083. XX * spkr.h -- interface definitions for speaker ioctl()
  1084. XX *
  1085. XX * v1.1 by Eric S. Raymond (esr@snark.thyrsus.com) Feb 1990
  1086. XX *      modified for 386bsd by Andrew A. Chernov <ache@astral.msk.su>
  1087. XX */
  1088. XX
  1089. XX#ifndef _SPKR_H_
  1090. XX#define _SPKR_H_
  1091. XX
  1092. XX#ifdef __386BSD__
  1093. XX#ifndef KERNEL
  1094. XX#include <sys/ioctl.h>
  1095. XX#else
  1096. XX#include "ioctl.h"
  1097. XX#endif
  1098. XX
  1099. XX#define SPKRTONE        _IOW('S', 1, tone_t)    /* emit tone */
  1100. XX#define SPKRTUNE        _IO('S', 2)             /* emit tone sequence*/
  1101. XX#else /* SYSV */
  1102. XX#define    SPKRIOC        ('S'<<8)
  1103. XX#define    SPKRTONE    (SPKRIOC|1)    /* emit tone */
  1104. XX#define    SPKRTUNE    (SPKRIOC|2)    /* emit tone sequence*/
  1105. XX#endif
  1106. XX
  1107. XXtypedef struct
  1108. XX{
  1109. XX    int    frequency;    /* in hertz */
  1110. XX    int duration;    /* in 1/100ths of a second */
  1111. XX}
  1112. XXtone_t;
  1113. XX
  1114. XX#endif /* _SPKR_H_ */
  1115. XX/* spkr.h ends here */
  1116. XEND-of-spkr.h
  1117. Xecho x - interp.c
  1118. Xsed 's/^X//' >interp.c << 'END-of-interp.c'
  1119. XX/*
  1120. XX * interp.c -- device driver for console speaker on 80386
  1121. XX *
  1122. XX * v1.1 by Eric S. Raymond (esr@snark.thyrsus.com) Feb 1990
  1123. XX *
  1124. XX * this is the part of the code common to all 386 UNIX OSes
  1125. XX *
  1126. XX * playinit() and playstring() are called from the appropriate driver
  1127. XX */
  1128. XX
  1129. XX#ifdef __386BSD__
  1130. XX#include "param.h"
  1131. XX#else
  1132. XX#include <sys/param.h>
  1133. XX#endif
  1134. XX
  1135. XX#ifndef HZ
  1136. XX#define HZ 60
  1137. XX#endif
  1138. XX
  1139. XX
  1140. XX/**************** PLAY STRING INTERPRETER BEGINS HERE **********************
  1141. XX *
  1142. XX * Play string interpretation is modelled on IBM BASIC 2.0's PLAY statement;
  1143. XX * M[LNS] are missing and the ~ synonym and octave-tracking facility is added.
  1144. XX * Requires tone(), rest(), and endtone(). String play is not interruptible
  1145. XX * except possibly at physical block boundaries.
  1146. XX */
  1147. XX
  1148. XXtypedef int    bool;
  1149. XX#define TRUE    1
  1150. XX#define FALSE    0
  1151. XX
  1152. XX#define toupper(c)    ((c) - ' ' * (((c) >= 'a') && ((c) <= 'z')))
  1153. XX#define isdigit(c)    (((c) >= '0') && ((c) <= '9'))
  1154. XX#define dtoi(c)        ((c) - '0')
  1155. XX
  1156. XXstatic int octave;    /* currently selected octave */
  1157. XXstatic int whole;    /* whole-note time at current tempo, in ticks */
  1158. XXstatic int value;    /* whole divisor for note time, quarter note = 1 */
  1159. XXstatic int fill;    /* controls spacing of notes */
  1160. XXstatic bool octtrack;    /* octave-tracking on? */
  1161. XXstatic bool octprefix;    /* override current octave-tracking state? */
  1162. XX
  1163. XX/*
  1164. XX * Magic number avoidance...
  1165. XX */
  1166. XX#define SECS_PER_MIN    60    /* seconds per minute */
  1167. XX#define WHOLE_NOTE    4    /* quarter notes per whole note */
  1168. XX#define MIN_VALUE    64    /* the most we can divide a note by */
  1169. XX#define DFLT_VALUE    4    /* default value (quarter-note) */
  1170. XX#define FILLTIME    8    /* for articulation, break note in parts */
  1171. XX#define STACCATO    6    /* 6/8 = 3/4 of note is filled */
  1172. XX#define NORMAL        7    /* 7/8ths of note interval is filled */
  1173. XX#define LEGATO        8    /* all of note interval is filled */
  1174. XX#define DFLT_OCTAVE    4    /* default octave */
  1175. XX#define MIN_TEMPO    32    /* minimum tempo */
  1176. XX#define DFLT_TEMPO    120    /* default tempo */
  1177. XX#define MAX_TEMPO    255    /* max tempo */
  1178. XX#define NUM_MULT    3    /* numerator of dot multiplier */
  1179. XX#define DENOM_MULT    2    /* denominator of dot multiplier */
  1180. XX
  1181. XX/* letter to half-tone:  A   B  C  D  E  F  G */
  1182. XXstatic int notetab[8] = {9, 11, 0, 2, 4, 5, 7};
  1183. XX
  1184. XX/*
  1185. XX * This is the American Standard A440 Equal-Tempered scale with frequencies
  1186. XX * rounded to nearest integer. Thank Goddess for the good ol' CRC Handbook...
  1187. XX * our octave 0 is standard octave 2.
  1188. XX */
  1189. XX#define OCTAVE_NOTES    12    /* semitones per octave */
  1190. XXstatic int pitchtab[] =
  1191. XX{
  1192. XX/*        C     C#    D     D#    E     F     F#    G     G#    A     A#    B*/
  1193. XX/* 0 */   65,   69,   73,   78,   82,   87,   93,   98,  103,  110,  117,  123,
  1194. XX/* 1 */  131,  139,  147,  156,  165,  175,  185,  196,  208,  220,  233,  247,
  1195. XX/* 2 */  262,  277,  294,  311,  330,  349,  370,  392,  415,  440,  466,  494,
  1196. XX/* 3 */  523,  554,  587,  622,  659,  698,  740,  784,  831,  880,  932,  988,
  1197. XX/* 4 */ 1047, 1109, 1175, 1245, 1319, 1397, 1480, 1568, 1661, 1760, 1865, 1975,
  1198. XX/* 5 */ 2093, 2217, 2349, 2489, 2637, 2794, 2960, 3136, 3322, 3520, 3729, 3951,
  1199. XX/* 6 */ 4186, 4435, 4698, 4978, 5274, 5588, 5920, 6272, 6644, 7040, 7459, 7902,
  1200. XX};
  1201. XX
  1202. XXstatic void playinit()
  1203. XX{
  1204. XX    octave = DFLT_OCTAVE;
  1205. XX    whole = (HZ * SECS_PER_MIN * WHOLE_NOTE) / DFLT_TEMPO;
  1206. XX    fill = NORMAL;
  1207. XX    value = DFLT_VALUE;
  1208. XX    octtrack = FALSE;
  1209. XX    octprefix = TRUE;    /* act as though there was an initial O(n) */
  1210. XX}
  1211. XX
  1212. XXstatic void playtone(pitch, value, sustain)
  1213. XX/* play tone of proper duration for current rhythm signature */
  1214. XXint    pitch, value, sustain;
  1215. XX{
  1216. XX    register int    sound, silence, snum = 1, sdenom = 1;
  1217. XX
  1218. XX    /* this weirdness avoids floating-point arithmetic */
  1219. XX    for (; sustain; sustain--)
  1220. XX    {
  1221. XX    snum *= NUM_MULT;
  1222. XX    sdenom *= DENOM_MULT;
  1223. XX    }
  1224. XX
  1225. XX    if (pitch == -1)
  1226. XX    rest(whole * snum / (value * sdenom));
  1227. XX    else
  1228. XX    {
  1229. XX    sound = (whole * snum) / (value * sdenom)
  1230. XX        - (whole * (FILLTIME - fill)) / (value * FILLTIME);
  1231. XX    silence = whole * (FILLTIME-fill) * snum / (FILLTIME * value * sdenom);
  1232. XX
  1233. XX#ifdef DEBUG
  1234. XX    printf("playtone: pitch %d for %d ticks, rest for %d ticks\n",
  1235. XX            pitch, sound, silence);
  1236. XX#endif /* DEBUG */
  1237. XX
  1238. XX    tone(pitchtab[pitch], sound);
  1239. XX    if (fill != LEGATO)
  1240. XX        rest(silence);
  1241. XX    }
  1242. XX}
  1243. XX
  1244. XXstatic int abs(n)
  1245. XXint n;
  1246. XX{
  1247. XX    if (n < 0)
  1248. XX    return(-n);
  1249. XX    else
  1250. XX    return(n);
  1251. XX}
  1252. XX
  1253. XXstatic void playstring(cp, slen)
  1254. XX/* interpret and play an item from a notation string */
  1255. XXchar    *cp;
  1256. XXsize_t    slen;
  1257. XX{
  1258. XX    int        pitch, lastpitch = OCTAVE_NOTES * DFLT_OCTAVE;
  1259. XX
  1260. XX#define GETNUM(cp, v)    for(v=0; isdigit(cp[1]) && slen > 0; ) \
  1261. XX                {v = v * 10 + (*++cp - '0'); slen--;}
  1262. XX    for (; slen--; cp++)
  1263. XX    {
  1264. XX    int        sustain, timeval, tempo;
  1265. XX    register char    c = toupper(*cp);
  1266. XX
  1267. XX#ifdef DEBUG
  1268. XX    printf("playstring: %c (%x)\n", c, c);
  1269. XX#endif /* DEBUG */
  1270. XX
  1271. XX    switch (c)
  1272. XX    {
  1273. XX    case 'A':  case 'B': case 'C': case 'D': case 'E': case 'F': case 'G':
  1274. XX
  1275. XX        /* compute pitch */
  1276. XX        pitch = notetab[c - 'A'] + octave * OCTAVE_NOTES;
  1277. XX
  1278. XX        /* this may be followed by an accidental sign */
  1279. XX        if (cp[1] == '#' || cp[1] == '+')
  1280. XX        {
  1281. XX        ++pitch;
  1282. XX        ++cp;
  1283. XX        slen--;
  1284. XX        }
  1285. XX        else if (cp[1] == '-')
  1286. XX        {
  1287. XX        --pitch;
  1288. XX        ++cp;
  1289. XX        slen--;
  1290. XX        }
  1291. XX
  1292. XX        /*
  1293. XX         * If octave-tracking mode is on, and there has been no octave-
  1294. XX         * setting prefix, find the version of the current letter note
  1295. XX         * closest to the last regardless of octave.
  1296. XX         */
  1297. XX        if (octtrack && !octprefix)
  1298. XX        {
  1299. XX        if (abs(pitch-lastpitch) > abs(pitch+OCTAVE_NOTES-lastpitch))
  1300. XX        {
  1301. XX            ++octave;
  1302. XX            pitch += OCTAVE_NOTES;
  1303. XX        }
  1304. XX
  1305. XX        if (abs(pitch-lastpitch) > abs((pitch-OCTAVE_NOTES)-lastpitch))
  1306. XX        {
  1307. XX            --octave;
  1308. XX            pitch -= OCTAVE_NOTES;
  1309. XX        }
  1310. XX        }
  1311. XX        octprefix = FALSE;
  1312. XX        lastpitch = pitch;
  1313. XX
  1314. XX        /* ...which may in turn be followed by an override time value */
  1315. XX        GETNUM(cp, timeval);
  1316. XX        if (timeval <= 0 || timeval > MIN_VALUE)
  1317. XX        timeval = value;
  1318. XX
  1319. XX        /* ...and/or sustain dots */
  1320. XX        for (sustain = 0; cp[1] == '.'; cp++)
  1321. XX        {
  1322. XX        slen--;
  1323. XX        sustain++;
  1324. XX        }
  1325. XX
  1326. XX        /* time to emit the actual tone */
  1327. XX        playtone(pitch, timeval, sustain);
  1328. XX        break;
  1329. XX
  1330. XX    case 'O':
  1331. XX        if (cp[1] == 'N' || cp[1] == 'n')
  1332. XX        {
  1333. XX        octprefix = octtrack = FALSE;
  1334. XX        ++cp;
  1335. XX        slen--;
  1336. XX        }
  1337. XX        else if (cp[1] == 'L' || cp[1] == 'l')
  1338. XX        {
  1339. XX        octtrack = TRUE;
  1340. XX        ++cp;
  1341. XX        slen--;
  1342. XX        }
  1343. XX        else
  1344. XX        {
  1345. XX        GETNUM(cp, octave);
  1346. XX        if (octave >= sizeof(pitchtab) / OCTAVE_NOTES)
  1347. XX            octave = DFLT_OCTAVE;
  1348. XX        octprefix = TRUE;
  1349. XX        }
  1350. XX        break;
  1351. XX
  1352. XX    case '>':
  1353. XX        if (octave < sizeof(pitchtab) / OCTAVE_NOTES - 1)
  1354. XX        octave++;
  1355. XX        octprefix = TRUE;
  1356. XX        break;
  1357. XX
  1358. XX    case '<':
  1359. XX        if (octave > 0)
  1360. XX        octave--;
  1361. XX        octprefix = TRUE;
  1362. XX        break;
  1363. XX
  1364. XX    case 'N':
  1365. XX        GETNUM(cp, pitch);
  1366. XX        for (sustain = 0; cp[1] == '.'; cp++)
  1367. XX        {
  1368. XX        slen--;
  1369. XX        sustain++;
  1370. XX        }
  1371. XX        playtone(pitch - 1, value, sustain);
  1372. XX        break;
  1373. XX
  1374. XX    case 'L':
  1375. XX        GETNUM(cp, value);
  1376. XX        if (value <= 0 || value > MIN_VALUE)
  1377. XX        value = DFLT_VALUE;
  1378. XX        break;
  1379. XX
  1380. XX    case 'P':
  1381. XX    case '~':
  1382. XX        /* this may be followed by an override time value */
  1383. XX        GETNUM(cp, timeval);
  1384. XX        if (timeval <= 0 || timeval > MIN_VALUE)
  1385. XX        timeval = value;
  1386. XX        for (sustain = 0; cp[1] == '.'; cp++)
  1387. XX        {
  1388. XX        slen--;
  1389. XX        sustain++;
  1390. XX        }
  1391. XX        playtone(-1, timeval, sustain);
  1392. XX        break;
  1393. XX
  1394. XX    case 'T':
  1395. XX        GETNUM(cp, tempo);
  1396. XX        if (tempo < MIN_TEMPO || tempo > MAX_TEMPO)
  1397. XX        tempo = DFLT_TEMPO;
  1398. XX        whole = (HZ * SECS_PER_MIN * WHOLE_NOTE) / tempo;
  1399. XX        break;
  1400. XX
  1401. XX    case 'M':
  1402. XX        if (cp[1] == 'N' || cp[1] == 'n')
  1403. XX        {
  1404. XX        fill = NORMAL;
  1405. XX        ++cp;
  1406. XX        slen--;
  1407. XX        }
  1408. XX        else if (cp[1] == 'L' || cp[1] == 'l')
  1409. XX        {
  1410. XX        fill = LEGATO;
  1411. XX        ++cp;
  1412. XX        slen--;
  1413. XX        }
  1414. XX        else if (cp[1] == 'S' || cp[1] == 's')
  1415. XX        {
  1416. XX        fill = STACCATO;
  1417. XX        ++cp;
  1418. XX        slen--;
  1419. XX        }
  1420. XX        break;
  1421. XX    }
  1422. XX    }
  1423. XX}
  1424. XEND-of-interp.c
  1425. Xecho x - Files
  1426. Xsed 's/^X//' >Files << 'END-of-Files'
  1427. XX/usr/include/sys/spkr.h
  1428. XEND-of-Files
  1429. Xecho x - Install
  1430. Xsed 's/^X//' >Install << 'END-of-Install'
  1431. XX#
  1432. XX# Speaker driver installation script
  1433. XX#
  1434. XXTMP=/tmp/speaker.err
  1435. XXERR1=" Errors have been written to the file $TMP."
  1436. XXERR2=" The Speaker Driver software was not installed."
  1437. XX
  1438. XXecho "Installing Speaker Driver Software Package"
  1439. XX
  1440. XX/etc/conf/bin/idcheck -p speaker 2>$TMP
  1441. XXif [ $? != 0 ]
  1442. XXthen
  1443. XX    echo "The speaker package is already at least partly installed.
  1444. XX    Removing the old version now..."
  1445. XX    /etc/conf/bin/idinstall -d speaker
  1446. XXfi
  1447. XX
  1448. XX/etc/conf/bin/idinstall -a -k speaker 2>>$TMP
  1449. XXif [ $? != 0 ]
  1450. XXthen
  1451. XX    message "There was an error during package installation. $ERR1 $ERR2"
  1452. XX    exit 1
  1453. XXfi
  1454. XX
  1455. XX/etc/conf/bin/idbuild 2>>$TMP
  1456. XXif [ $? != 0 ]
  1457. XXthen
  1458. XX    message "There was an error during kernel reconfiguration. $ERR1 $ERR2"
  1459. XX    exit 1
  1460. XXfi
  1461. XX
  1462. XXrm -f $TMP
  1463. XX
  1464. XXcp spkr.h /usr/include/sys/spkr.h
  1465. XX
  1466. XXecho "Performing shutdown..."
  1467. XXcd /; exec /etc/shutdown -g0 -y
  1468. XEND-of-Install
  1469. Xecho x - Master
  1470. Xsed 's/^X//' >Master << 'END-of-Master'
  1471. XXspeaker    ocwi    iocH    spkr    0    0    1    1    -1
  1472. XEND-of-Master
  1473. Xecho x - Name
  1474. Xsed 's/^X//' >Name << 'END-of-Name'
  1475. XX386 UNIX Speaker Device Driver Package
  1476. XEND-of-Name
  1477. Xecho x - Node
  1478. Xsed 's/^X//' >Node << 'END-of-Node'
  1479. XXspeaker    speaker    c    0
  1480. XEND-of-Node
  1481. Xecho x - Remove
  1482. Xsed 's/^X//' >Remove << 'END-of-Remove'
  1483. XX#
  1484. XX# Speaker driver remove script
  1485. XX#
  1486. XXTMP=/tmp/speaker.err
  1487. XXRERR="Errors have been written to the file $TMP."
  1488. XX
  1489. XXecho "Removing Speaker Driver Software Package"
  1490. XX
  1491. XX/etc/conf/bin/idinstall -d speaker 2>$TMP
  1492. XXif [ $? != 0 ]
  1493. XXthen
  1494. XX    message "There was an error during package removal. $RERR"
  1495. XX    exit 1
  1496. XXfi
  1497. XX
  1498. XX/etc/conf/bin/idbuild 2>>$TMP
  1499. XXif [ $? != 0 ]
  1500. XXthen
  1501. XX    message "There was an error during kernel reconfiguration. $RERR"
  1502. XX    exit 1
  1503. XXfi
  1504. XX
  1505. XXrm -f /dev/speaker $TMP /usr/include/sys/spkr.h
  1506. XX
  1507. XXexit 0
  1508. XEND-of-Remove
  1509. Xecho x - Size
  1510. Xsed 's/^X//' >Size << 'END-of-Size'
  1511. XXROOT=1400
  1512. XXUSR=100
  1513. XEND-of-Size
  1514. Xecho x - System
  1515. Xsed 's/^X//' >System << 'END-of-System'
  1516. XXspeaker    Y    1    0    0    0    0    0    0    0
  1517. XEND-of-System
  1518. Xecho x - playtest
  1519. Xsed 's/^X//' >playtest << 'END-of-playtest'
  1520. XX:
  1521. XX# Test script for the speaker driver
  1522. XX#
  1523. XX# v1.0 by Eric S. Raymond (Feb 1990)
  1524. XX#      modified for 386bsd by Andrew A. Chernov <ache@astral.msk.su>
  1525. XX#
  1526. XXreveille="t255l8c.f.afc~c.f.afc~c.f.afc.f.a..f.~c.f.afc~c.f.afc~c.f.afc~c.f.."
  1527. XXcontact="<cd<a#~<a#>f"
  1528. XXdance="t240<cfcfgagaa#b#>dc<a#a.~fg.gaa#.agagegc.~cfcfgagaa#b#>dc<a#a.~fg.gga.agfgfgf."
  1529. XXloony="t255cf8f8edc<a.>~cf8f8edd#e.~ce8cdce8cd.<a>c8c8c#def8af8."
  1530. XX
  1531. XXcase $1 in
  1532. XXreveille) echo  $reveille >/dev/speaker;;
  1533. XXcontact)  echo  $contact >/dev/speaker;;
  1534. XXdance)  echo  $dance >/dev/speaker;;
  1535. XXloony)  echo  $loony >/dev/speaker;;
  1536. XX*)
  1537. XX    echo "No such tune. Available tunes are:"
  1538. XX    echo
  1539. XX    echo "reveille -- Reveille"
  1540. XX    echo "contact -- Contact theme from Close Encounters"
  1541. XX    echo "dance -- Lord of the Dance (aka Simple Gifts)"
  1542. XX    echo "loony -- Loony Toons theme"
  1543. XX    ;;
  1544. XXesac
  1545. XEND-of-playtest
  1546. Xexit
  1547. END_OF_FILE
  1548. if test 28922 -ne `wc -c <'sys/unix/snd86unx.shr'`; then
  1549.     echo shar: \"'sys/unix/snd86unx.shr'\" unpacked with wrong size!
  1550. fi
  1551. # end of 'sys/unix/snd86unx.shr'
  1552. echo shar: End of archive 17 \(of 18\).
  1553. cp /dev/null ark17isdone
  1554. MISSING=""
  1555. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do
  1556.     if test ! -f ark${I}isdone ; then
  1557.     MISSING="${MISSING} ${I}"
  1558.     fi
  1559. done
  1560. if test "${MISSING}" = "" ; then
  1561.     echo You have unpacked all 18 archives.
  1562.     echo "Now execute ./patchit3.sh"
  1563.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1564. else
  1565.     echo You still need to unpack the following archives:
  1566.     echo "        " ${MISSING}
  1567. fi
  1568. ##  End of shell archive.
  1569. exit 0
  1570.