[comp.sources.amiga] v91i065: MP 1.0 - the MIDI Playground, Part02/02

amiga-request@ab20.larc.nasa.gov (Amiga Sources/Binaries Moderator) (03/16/91)

Submitted-by: barrett@server.cs.jhu.edu
Posting-number: Volume 91, Issue 065
Archive-name: midi/mp-1.0/part02

#!/bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 2 (of 2)."
# Contents:  MP.DOC MP.uu
# Wrapped by tadguy@ab20 on Fri Mar 15 14:25:14 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'MP.DOC' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'MP.DOC'\"
else
echo shar: Extracting \"'MP.DOC'\" \(16064 characters\)
sed "s/^X//" >'MP.DOC' <<'END_OF_FILE'
XMP:		A MIDI Playground
XAuthor:		Daniel J. Barrett, barrett@cs.jhu.edu.
XNo Copyright:	100% Public Domain.
X		Please share this program with others.
X
XRequirements:	A Commodore Amiga.
XOptional:	A MIDI Interface on your serial port.
X		1 or more MIDI instruments.
X		(Without MIDI, this program is not very useful, except
X		 perhaps as a source code example for serial port
X		 programming and parsing input.)
X
XLegal stuff:	Use this program entirely at your own risk.  The author
X		bears no responsibility for any damage or data loss you
X		may incur through the use or misuse of this program.
X
X	
XGETTING QUICK HELP
X
X	At the command line, type:
X
X		1>  mp ?
X
XTABLE OF CONTENTS
X
XLine	Section
X===========================================================================
X 18	Getting quick help
X 24	Table of contents
X 46	What is MP?
X 77	What is MP not?
X 84	MP concepts
X118	A first exercise
X132	Formal usage instructions for MP
X162	The input text language
X237	Practicing with the text language
X264	Using the file input/output options to make new windows
X277	Using redirection
X306	Translating binary data to/from text
X318	Using an alternate MIDI interface
X359	Problems you may have with MP
X425	Notes about the source code
X457	Notes about the program's internals (and limitations)
X	
X	
XWHAT IS MP?
X
X	Have you ever wanted to see what MIDI data your instrument is
Xtransmitting?  Have you ever wanted to send your own MIDI data to your
XMIDI instrument?  Then MP is for you!!
X
X	MP (MIDI Playground) is a versatile tool for sending, receiving,
Xand storing MIDI data.  It has many uses:
X
X	o	Learning about MIDI.
X
X	o	Discovering your instrument's system exclusive data
X		format.
X
X	o	Testing your instrument's MIDI capabilities.
X
X	o	Acting as a patch librarian.  (VERY VERY basic, though.)
X
X	o	Helping you write MIDI software.
X
X	Essentially, MP is a "translator" program that understands 3
Xdata formats and translates between any pair:
X
X		(1)	English text
X		(2)	Binary data
X		(3)	MIDI data
X
XFormats (2) and (3) are really the same, but (2) is stored in files on your
XAmiga, and (3) is transmitted via your MIDI interface.
X
X	
XWHAT IS MP NOT?
X
X	MP is not a sequencer.  It does not store any kind of timing
Xinformation.  MP simply sends and receives bytes in the order they are
Xgiven.
X
X	
XMP CONCEPTS
X
X	Like I said, MP translates between text, binary data, and MIDI
Xdata.  All you need to do is:
X
X	(1)	Choose a format for the input.
X	(2)	Choose a format for the output.
X		(The input and output formats can be the same if you like.)
X	(3)	Run MP.
X
XFor example, you can ask MP to use "text" as input and "MIDI" as output.
XThis lets you type text in a very easy-to-learn language, and it immediately
Xgets sent out as MIDI data.  If you reverse these choices (input=MIDI,
Xoutput=text), you can watch MIDI data appear on your screen in a simple
Xbut readable format.
X
X	Another use would be to use "MIDI" as input and "binary" as output.
XThis lets you press keys and buttons on your instrument, and have all
Xthe data stored in binary format in an Amiga file.  To send the data back
Xto the instrument, just use "binary" for input and "MIDI" for output!
X
X	Yet another use is for MP to translate between binary data and
Xreadable text.  This can help you to understand the contents of a binary
XMIDI file, or to create binary MIDI files by typing simple text commands.
X(Note:  this facility will work with ANY binary files, not just those
Xcontaining MIDI data.)
X
X	You can also ask MP to translate from one format to the same
Xformat!  For example, it can read MIDI data and "echo" it back to the
Xsending instrument (translating MIDI to MIDI), copy binary files (translating
Xbinary to binary), or let you practice with its text language (text to
Xtext).
X
X	
XA FIRST EXERCISE
X
X	Let's ask MP to translate from MIDI into text.  Make sure your
XMIDI synthesizer is hooked up properly to your Amiga.  Type:
X
X		1>  mp  -im  -ot
X
X(This asks MP to use MIDI input (-im) and text output (-ot).)
X
X	Now go to your instrument and play notes, press buttons, turn
Xdials, etc.  You should see things appearing on your Amiga screen!  To
Xexit the program, type ^C (control-C) on the Amiga.
X
X
XFORMAL USAGE INSTRUCTIONS FOR MP
X
X	MP's syntax is:
X
X		1>  mp  -i{tbm}  -o{tbm}  [-g infile]  [-p outfile]
X
XThe flags "-i" and "-o" are mandatory (they MUST appear, in any order).
XThe flag "-i" represents input, and "-o" represents output.  You also
Xmust fill in the "[choice]" specifying text, binary, or MIDI.  The syntax
Xis:
X
X		t	Text
X		b	Binary data
X		m	MIDI
X
XFor example, to read text from the keyboard and send to MIDI:
X
X		1>  mp -it -om
X
XTo read MIDI data and convert it to text:
X
X		1>  mp -ot -im
X
XIf you would like to GET your input from a file (not the keyboard), you may
Xspecify a file name with the -g option.  Similarly, the -p option allows
Xyou to PUT the output into a file (rather than the screen).  The -g and -p
Xoptions have no meaning, obviously, if your input and output are MIDI,
Xrespectively.
X
X	
XTHE INPUT TEXT LANGUAGE
X
X	If you do not already know what MIDI code looks like (for
Xexample, hexadecimal 90 means "Note On, MIDI channel 0"), then this
Xsection might not be useful to you yet.  But feel free to try!
X
X	MP understands many different kinds of text input.  To use the
Xtext input feature, you must learn a very simple syntax.  If you are a
XC programmer, you will recognize some of this language and feel right
Xat home.  (Don't worry... you don't have to be a C programmer to use MP!
XIt will take a little practice, though.)
X
X	MP understands NUMBERS (between 0 and 255) in:
X
X	-	Base 10 (decimal or "normal" numbers)
X		Just type the number normally.
X		Example:	123
X
X	-	Base 8 (octal)
X		Precede the number with a zero.
X		Example:	024
X
X	-	Base 16 (hexadecimal)
X		Precede the number with an "H" or the symbol "0x".
X		If the number begins with A through F, you can skip the
X		 above symbols.
X		Examples:	0x2A     H44    F7
X
X	-	Base 2 (binary)
X		Precede the number with a "#".
X		Example:	#10010110
X
X	All special symbols (such as "H", "0x", and the hexadecimal numbers
X	from A...F) are case-insensitive.  That means capital and small
X	letters are equivalent.
X
XMP understands CHARACTERS as:
X
X	-	Individual characters.
X		Enclose in single quotes, like 'x'.
X
X	-	Character strings.
X		Enclose in double quotes, like "this is a string".
X
X	C special characters (like '\n') are recognized both as individual
X	characters and in strings.
X
X	If you type a RETURN in the middle of a string, it is interpreted
X	as a space character.  (If you want a real newline character, use
X	\n.)  If a string is too long to fit on your screen, break it into
X	2 strings (or more), each surrounded by double-quotes.
X
X
X	All of these numbers/characters are automatically converted into
Xbytes.  As a result, you cannot specify a number with value greater than 
X255 (base 10) or less than 0.  If you do, you will get an error message.
X
X	MP also has a "comment" symbol.  This lets you type text that is
Xignored by MP.  Any text following a semicolon (";") is ignored until
Xthe end of the line.  (This is just like the Amiga CLI comment symbol.)
X(Of course, this does not occur if the semicolon is part of a character
Xconstant or string.)
X	Why is a comment symbol useful?  You can put text language commands
Xin a file and send it to your MIDI instrument.  Comments allow you to 
Xdocument the meaning of the contents of the file.  For example:
X
X		; Send a C major chord on MIDI channel 0
X		0x90 60 127 64 127 67 127
X
X
X	EVERY INDIVIDUAL NUMBER/CHARACTER/STRING/COMMENT THAT YOU TYPE
XMUST BE SEPARATED FROM ITS NEIGHBORS BY WHITESPACE (blanks, tabs, newlines).
XYes, even comments.  This may change in a later version of the program.
X
X
XPRACTICING WITH THE TEXT LANGUAGE
X
X	Type the command:
X
X		1>  mp  -it  -ot
X
XThis tells MP to translate from text into text, totally bypassing MIDI.
XAs you type in the text language, you will see your data interpreted by
XMP.  To end MP, type control-C (^C).
X
X	When you feel comfortable with the text language, try sending some
Xdata to your synthesizer.  Type:
X
X		1>  mp  -it  -om
X
XHere is some data:
X
X		H90 60 100
X
XThis tells the instrument to play Middle C (note 60) at volume (velocity)
X100, assuming the instrument is on MIDI channel 0.  To turn off the note:
X
X		H80 60 0
X
XTo end MP, type control-C (^C).
X
X	
XUSING THE FILE INPUT/OUTPUT OPTIONS TO MAKE NEW WINDOWS
X
X	On the Amiga, you can specify a NEW WINDOW as a file, rather than
Xan actual disk file.  The syntax is found in your AmigaDOS manual, under
Xthe NewCLI or NewShell command.  For example, to print your output in
Xa 640x100 window, positioned at screen location (20,25), with window name
X"MP-IN", you would use:
X
X		1>  mp ... -g "CON:20/25/640/100/MP-IN" ...
X
XDo similarly for output windows, but use -p instead of -g.
X
X
XUSING REDIRECTION
X
X	You can use the CLI's INPUT REDIRECTION symbol to get input from a
Xfile instead of from the keyboard.  See your AmigaDOS manual for more details.
XThe syntax is:
X			< filename
X	
Xand it must appear immediately after the command name (MP).  For example:
X
X		1>  mp  < infile  -it -om
X
Xto send text data (translated to MIDI) from the file "infile" to the 
XMIDI instrument.
X
X	Some sample input files are included with this program.
X
X	You may also use the CLI's OUTPUT REDIRECTION symbol to send output 
Xto a file instead of to the screen.  See your AmigaDOS manual for more 
Xdetails.  The syntax is:
X
X			> filename
X
Xand it must appear immediately after the command name (MP).  For example:
X
X		1>  mp  > outfile  -im -ot
X
Xto capture MIDI data (translated to text) into the file "outfile".
X
X		
XTRANSLATING BINARY DATA TO/FROM TEXT
X
X	Suppose you have a binary file that you want to translate to
Xtext.  (It does not even have to be a MIDI data file!!)  Just type:
X
X		1>  mp  < binaryFile  -ib -ot
X
XIf you prefer to save your text results in a file, type:
X
X		1>  mp  < binaryFile > textFile  -ib -ot
X
X
XUSING AN ALTERNATE MIDI INTERFACE
X
X	By default, the MP assumes that your MIDI interface
Xis connected to your Amiga's internal serial port.  If this is
Xnot the case, you can override this by using an Amiga environment
Xvariable and the SetEnv command.  (See your Amiga documentation for
Xfull details about SetEnv.)
X
X	The name of the environment variable is MP_MIDI_DEVICE, and its
Xvalue must be of the following format:
X
X	1)	The name of the MIDI device driver, located in the
X		DEVS: directory of your system disk.  It should be
X		something like "midi.device" or "serial2.device".
X
X	2)	One colon character (':').
X
X	3)	The unit number for the device.  If you have only
X		1 port using the device, your unit number is probably
X		zero.
X
X	Example:	midi.device:2
X
X	Suppose you want to set up MP to use unit 3 the device
X"AltMidi.device".  Type:
X
X		1>  SetEnv MP_MIDI_DEVICE AltMidi.device:3
X
XTo check that the value was set correctly, type:
X
X		1>  GetEnv MP_MIDI_DEVICE
X
X	If you are using a MIDI interface attached to your internal
Xserial, port, YOU MAY IGNORE ALL OF THIS STUFF.  By default, MP uses
Xunit 0 of the device "serial.device".
X
X	I cannot guarantee that MP will work with whatever alternate device
Xdriver you choose.  But I have tested the environment variable mechanism
Xitself, and it works.
X
X	
XPROBLEMS YOU MAY HAVE WITH MP
X
X	I have tested these programs fairly well on my own equipment:
XAmiga 1000, Golden Hawk MIDI Gold interface, and an Oberheim Matrix-12.
XIf the program doesn't work for you, first check:
X
X(?)	Is the file "serial.device" in the DEVS: directory of your system
X	disk?  If not, MP will refuse to run, and you will see an error
X	message like one of these:
X
X		Cannot create a message port.
X		Cannot create an extended I/O request.
X		Cannot open the MIDI device.
X		Cannot set the serial parameters.
X
X	Boot your Amiga with an original Workbench disk and try again.
X
X(?)	Are you running a version of the Amiga operating system that is
X	older than 1.3?  MP should work with some or all earlier
X	versions, but I have not tested this.
X
X(?)	Are your MIDI cables connected properly?  Remember that MIDI OUT
X	must always be connected to MIDI IN, and vice-versa.
X
X		SYNTHESIZER			COMPUTER
X		-----------			--------
X		MIDI IN	 <------------------->	MIDI OUT
X		MIDI OUT <------------------->	MIDI IN
X
X(?)	Are you using the program correctly?  Double-check the instructions
X	above.
X
X(?)	Are you running another program that uses the serial port, such as
X	a communications program, printing program, or another MIDI program?
X	If so, this other program may be using the serial port.  (MP
X	uses the serial port in "shared" mode so it doesn't hog the
X	serial port.) Exit your other programs and try again.  If it
X	still doesn't work, reboot to make sure that your other programs
X	didn't accidently leave the serial port "locked".
X
X	Some programs allow you to "release" their hold on the serial port
X	without exiting.  (Example:  Music-X.)  This may be enough to allow
X	MP to run.
X
X	If you run MP with the "-im" format (input from MIDI), you cannot
X	run MP a second time simultaneously.  This is because the Amiga
X	serial port initialization routines will fail if there is another
X	program reading the serial port.
X
X(?)	Are you running any other programs simultaneously with MP?
X	It is possible that a badly-written program could
X	interfere with the operation of other programs.  Boot your Amiga
X	with an original Workbench disk and try again.
X
X(?)	Is your synthesizer turned on?  Seriously.  This has happened
X	to me.  :-)
X
XIf you are doing everything right, then there may be a bug in the
Xprogram.  For example, MP should NEVER crash your Amiga.  If you
Xbelieve that there is a bug, please contact me (electronic mail is
Xpreferred).  But first, try to reproduce the bug consistently.  Can
Xyou find a particular set of actions, keystrokes, etc., that ALWAYS
Xmake the program crash?  If you can, then I will be able to find the
Xbug faster. 
X
X		
XNOTES ABOUT THE SOURCE CODE
X
X	The file "text.c" contains a good example of using a finite
Xautomaton to read the text language and translate it into bytes.  The
Xcode is fairly robust and easy to modify.  For example, I was able to
Xadd "binary number" support in about 3 minutes, and "string" support in
Xabout 10 minutes.
X	The theory of finite automata is extremely important for programmers,
Xbut it can seem very "theoretical" at first.  Believe me, it helps you
Xwrite correct programs that are easy to modify later.
X
X	The file "serial.c" contains serial port code that you are welcome
Xto use.  The function "DoTheIO()" implements asynchronous I/O in a very
Xmultitasking-friendly way.  The function "FastSerialRead()" is patterned
Xafter Commodore's recommended method for reading the serial port quickly.
XThe method is documented in the AMIGA ROM KERNEL REFERENCE MANUAL:  
XLIBRARIES AND DEVICES, for version 1.3 of the Amiga Operating System.
X
X	The file "main.c" contains examples of using pointers to functions
Xand pointers-to-pointers to functions.  (The functions themselves are
Xdefined in "iofunctions.c".)
X
X	The file "getopt.c" contains my version of the powerful and useful
XUNIX "getopt()" function.  This gives the programmer a standard interface
Xfor reading command-line options (flags) from the user.  I have used this
Xfile (unchanged) in a dozen programs.
X
X	The "Makefile" is pretty generic.  If you want to add a new
Xfile to the program, just append its name (and its object file's name)
Xto the SRC and OBJ macros, and type "make".
X
X
XNOTES ABOUT THE PROGRAM'S INTERNALS (AND LIMITATIONS)
X
X	MP uses a very inefficient method for sending MIDI data and
Xreading/writing files:  one byte at a time.  This could definitely be
Xmade faster, but takes some cleverness (and some internal buffering).
XMP does read MIDI data very efficiently, though.
X
X	This limitation is due to the byte-oriented nature of this program.
XAlso, when the user is typing text, he/she wants immediate feedback from
Xa MIDI device.  I'm sure there is a better way to do this than my method.
X
X	I did not build this program for large data transfers.  It is
Xmainly for transmitting small amounts of data for diagnostic purposes.
XThis is why I have released the program before its I/O routines are
Ximproved.
END_OF_FILE
if test 16064 -ne `wc -c <'MP.DOC'`; then
    echo shar: \"'MP.DOC'\" unpacked with wrong size!
fi
# end of 'MP.DOC'
fi
if test -f 'MP.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'MP.uu'\"
else
echo shar: Extracting \"'MP.uu'\" \(22805 characters\)
sed "s/^X//" >'MP.uu' <<'END_OF_FILE'
Xbegin 644 MP
XM```#\P`````````#``````````(```\&```"&P````$```/I```/!D[Z(=Q(\
XMYS`@)"\`$!8O`!0D;P`62FR``F<>2&R``B\*'P,O`DZZ!=@"@````/]/[P`.-
XM3-\$#$YU#((````_9@I.N@9*<``0`V#H#`,`!&82#((````B9@HY?``!@`)PQ
XM!&#0+PH?`R\"80P"@````/]/[P`*8+Q(YS`@)"\`$!8O`!0D;P`6<``0`V``9
XM`18O"B\"3KH!(@*`````_U!/3-\$#$YU+P).N@7,`H````#_6$]@ZB\*+P).^
XMN@'(`H````#_4$]@V"\*+P).N@(,`H````#_4$]@QB\*+P).N@)0`H````#_F
XM4$]@M"\*+P).N@*0`H````#_4$]@HB\*+P).N@.``H````#_4$]@D"\*+P).6
XMN@0D`H````#_4$]@`/]^+PHO`DZZ`M("@````/]03V``_VHO"B\"3KH"\`*`T
XM````_U!/8`#_5B\*+P).N@0*`H````#_4$]@`/]"'SP`#R\*+P).N@0*`H```
XM``#_3^\`"F``_RAP`!`#8`#_(``"_\C_R/_(_M[^]/\$_TS_%O\H_SK_<O^&N
XM``+_7O^:_ZX,0``19`K00#`[`-1.^P``8`#^ZDCG("`D+P`,)&\`$$'L@#\0]
XM,"@`2(`(```$9PAP!$S?!`1.=0R"````.V8$<`5@[@R"````(V8$<`M@X@R"A
XM````)V8$<`Y@U@R"````,&8$<`=@RB\"3KH>D@R`````2%A/9@1P"6"V0>R`8
XM/Q`P*`!(@`@```)G#B`"!(`````P%(!P!F"80>R`/Q`P*`!(@`@```-G,$'LQ
XM@#\0,"@`2(`(```"9PH@`@2`````,&`.+P).NAXV!(`````W6$\4@'`*8`#_*
XM6G`"8`#_5$CG(``D+P`(0>R`/Q`P*`!(@`@```)G)A\\``9(>``*($)(:/_0H
XM+R\`%DZZ`BX"@````/]/[P`.3-\`!$YU0>R`/Q`P*`!(@`@```1G!'`!8.9PE
XM`F#B2.<@`"0O``@,@@```#!M+@R"````-VXF'SP`"$AX``@@0DAH_]`O+P`6@
XM3KH!V`*`````_T_O``Y,WP`$3G5![(`_$#`H`$B`"```!&<$<`%@YG`"8.)(F
XMYR``)"\`"$'L@#\0,"@`2(`(```#9S9![(`_$#`H`$B`"````F<*(`($@```C
XM`#!@#B\"3KH=/`2`````-UA/(&\`#!"`<`I,WP`$3G5P`F#V2.<@`"0O``A!<
XM[(`_$#`H`$B`"````V=*'SP`"DAX`!!![(`_$#`H`$B`"````F<*(`($@```)
XM`#!@#B\"3KH<XEA/!(`````W+P`O+P`63KH!#`*`````_T_O``Y,WP`$3G5!O
XM[(`_$#`H`$B`"```!&<$<`%@YG`"8.)(YR``)"\`"`R"````,&<(#((````Q3
XM9A8@`@2`````,"!O``P0@'`,3-\`!$YU<`)@]DCG(``D+P`(#((````P9P@,6
XM@@```#%F)A\\``Q(>``"($)(:/_0+R\`%DZZ`(0"@````/]/[P`.3-\`!$YU(
XM0>R`/Q`P*`!(@`@```1G!'`!8.9P`F#B2.<@`"0O``@O`DZZ'!(,@````%A8+
XM3V8(<`E,WP`$3G4,@@```#!M&@R"````-VX2(`($@````#`@;P`,$(!P"&#8C
XM0>R`/Q`P*`!(@`@```1G!'`!8,1P`F#`2.<P("1O`!`D+P`4)B\`&"(#(#P`Q
XM``#_3KHQ/G(`$A*P@6P(<`-,WP0,3G4B`W``$!).NB>4%(!P`!`2(CP```#_?
XMDH*P@6\$<`-@VG``$!+0@A2`<``0+P`<8,I(YR``)"\`"`R"````7&8(<!!,@
XMWP`$3G4@;P`,$()P#V#P#*\````G``1F!'`!8`)P`@*`````_TYU2.<@("0O]
XM``PD;P`0(`)@.D(28'`4O``'8&H4O``(8&04O``,8%X4O``*8%@4O``-8%(4;
XMO``)8$P4O``+8$84@F!"<`),WP0$3G4$@````")G[%N`9^@$@`````EGL@2`?
XM````+&?86X!GJE.`9ZQ9@&>N48!GL%F`9[)5@&>T58!GMF"^<``0+P`48+A(H
XMYR`@)"\`#"1O`!)P`!`O`!!@5@R"````(F8.(&\`%D)0<`1,WP0$3G4,@@``S
XM`%QF!'`18.Y![(`_$#`H`$B`"```!&<$<"!@`B`"%(!P`6#2'SP``2\*+P).'
XMNO\8`H````#_3^\`"F"Z64!GI@1```UGWF"N#*\````*``1F!'`$8`)P!0*`^
XM````_TYU2'@`_TAZ`!!(;(%L3KH:A$_O``Q.=4E.4%54"4U%04Y)3D<*,2TY@
XM+BXN"41E8VEM86P@;G5M8F5R+@HP+BXN"4]C=&%L(&YU;6)E<BX*,'@N+BX)U
XM2&5X861E8VEM86P@;G5M8F5R("AC87-E+6EN<V5N<VET:79E*2X*2"XN+@E($
XM97AA9&5C:6UA;"!N=6UB97(@*&-A<V4M:6YS96YS:71I=F4I+@I!+48N+BX)@
XM2&5X861E8VEM86P@;G5M8F5R("AC87-E+6EN<V5N<VET:79E*2X*(RXN+@E"9
XM:6YA<GD@;G5M8F5R+@HG>"<)5&AE(&-H87)A8W1E<B`G>"<N("!#(&-H87)AW
XM8W1E<B!S>6YT87@@;&EK92!<;B!A;F0@7'0@:7,@=F%L:60N"B(N+BXB"4$@#
XM=&5X="!S=')I;F<N("`H3F5W;&EN97,@='5R;B!I;G1O('-P86-E(&-H87)AE
XM8W1E<G,N*0I,87)G97-T(&QE9V%L(&EN<'5T('9A;'5E(&ES("5L9"`H8F%S5
XM92`Q,"DN"D%L;"!V86QU97,@;75S="!B92!S97!A<F%T960@8GD@=VAI=&5SH
XM<&%C92X*"@!(YR`@%"\`#"1O``YP`!`"+P!P`!`"+P!P`!`"+P!(>@!B+PI.X
XMNABH+PH?`F%^$`)(@$'L@#\0,```2(`"0`#'3^\`&F<4<``0`B\`2'H`42\*:
XM3KH8>D_O``P@4K'J``1D#B!24I(0O``*<`!P"F`,2'@`"B\*3KHK&E!/3-\$'
XM!$YU1&5C("4S;&0L($]C="`E,VQO+"!(97@@)3-L6``L($-H87(@)R5C)P``-
XM3E7_]DCG,`!T`'``$"T`"'(!Y:$F`,:!2H-G!'`!8`)P``8``#!R")*"0>W_R
XM]Q&`&/]2@@R"````"&W.0BW__TAM__=(>@`6+RT`"DZZ%]1/[P`,3-\`#$Y=Y
XM3G4L($)I;B`E<P``2.<P("8O`!`D;P`42H-F#"\*3KH43C0`6$]@#"\*+P-.-
XMNA1$-`!03TI"9P1P`&`"<!0O`$ZZ,)983TS?!`Q.=4CG(`!T`"!O``A","@`(
XM4H(,@@````-M[D'L@4`B;P`,(HA![(%6(F\`$"*((&\`%$*0(&\`&$*03-\`=
XM!$YU2.<`("1O``@,$@!M9P@,*@!M``%F&A\J``).N@)<2D!43V8(<`!,WP0`Z
XM3G5.N@2X+R\`$"\O`!`O"F$:#!(`;4_O``QG"`PJ`&T``68$3KH$0G`!8-!.F
XM5?_R2.<@,"1M``PF;0`0+RT`"$AM__)(;?_V2&W_^DZZ`.!/[P`02&W__R\*)
XM(&W_^DZ0%``,```$4$]G?A`"2(!(P&!D'RW__R\+(&W_]DZ07$]@8DAZ`&PO@
XM"TZZ%HH?+?__+PH@;?_R3I!/[P`.8$9(>@!7+PM.NA9N'RW__R\*(&W_\DZ0"
XM3^\`#F`J'RW__R\*(&W_\DZ02'H`22\+3KH61D_O``Y@#E-`9YA30&>D4T!G"
XMO&#68`#_;DS?#`1.74YU15)23U(*`%9!3%5%(%1/3R!"24<@*&]V97)F;&]WY
XM*0H`06X@=6YK;F]W;B!E<G)O<B!O8V-U<G)E9"X*``!(YS`P)&\`%"9O`!@D2
XM+P`<)B\`("!#$!!(@$C`8$!!^@D0)(A!^@I6(D(BB&!"0?H)S"2(0?H*NB)"=
XM(HA@,D'Z"'(DB$'Z"J0B0B*(8")!^@C@)(A!^@HF(D(BB&`2!$``8F?*!$``K
XM"V?47T!GL&#>($,0*``!2(!(P&`@0?H)1B:(8"I!^@FT)HA@(D'Z"(`FB&`:[
XM0?H)+B:(8!($0`!B9^($0``+9^1?0&?08.9,WPP,3G4@+P`&(&\`"A&O``0(W
XM`!\O``1A!%1/3G5(YR``%"\`"`P"`'1G#`P"`&)G!@P"`&UF!'`!8`)P`$S?<
XM``1.=4CG`"`D;P`(2A)G"DHJ``%G!'`!8`)P`$S?!`!.=4ZZ`BA(>``43KHM.
XMW%A/3G5.5?O\2.<`($AZ`7!(;?P`3KHKJD*M^_Q(>@%N3KH3W"1`2H!/[P`,V
XM9R!(;?O\2&W\`"\*3KH#C$I`3^\`#&8*<`!,WP0`3EU.=4*G0J=.NB`@*4"`(
XM!%!/9A9(>@$[2&R!;$ZZ%&).N@&R<`!03V#2".P``(`/2'@`4B\L@`1.NB#DX
XM*4"`"%!/9A9(>@$?2&R!;$ZZ%#).N@&"<`!03V"B".P``8`/(&R`"!%\`"``^
XM3W(`(FR`""`M^_Q![?P`+&R(#$ZN_D1*@&<B+RW[_$AM_`!(>@#]2&R!;$ZZN
XM$^I.N@$Z<`!/[P`08`#_6`CL``*`#R!L@`@1?``0`$]*+0`(9R8@;(`((7SWN
XM]_?W`$0@;(`((7SW]_?W`$@@;(`(T?P```!/"-``!B!L@`@A?```>A(`/"!L1
XM@`A"J``X(&R`"#%\``L`'")L@`@L;(@,3J[^.$J`9QA(>@"C2&R!;$ZZ$V9.D
XMN@"V<`!03V``_M8([``#@`]P`6``_LIS97)I86PN9&5V:6-E`$U07TU)1$E?N
XM1$5624-%`$-A;FYO="!C<F5A=&4@<&]R=`H`0V%N;F]T(&-R96%T92!E>'1EC
XM;F1E9"!)+T\@<W1R=6-T=7)E"@!#86YN;W0@;W!E;B!S97)I86P@9&5V:6-E"
XM("(E<R(L('5N:70@)60N"@!#86YN;W0@<V5T('-E<FEA;"!P87)A;65T97)SL
XM+@H`""P``H`/9R9A2B)L@`@L;(@,3J[^(")L@`@L;(@,3J[^)B)L@`@L;(@,U
XM3J[^/@@L``&`#V<*+RR`"$ZZ'U983P@L``"`#V<*+RR`!$ZZ'JI83TYU(&R`-
XM"#%\``4`'")L@`@L;(@,3J[^.$YU(&R`"#%\``D`'")L@`@L;(@,3J[^."!LS
XM@`@@*``@3G4@;(`(,7P``@`<(&R`""%O``0`*"!L@`@A;P`(`"1.=2!L@`@QZ
XM?``#`!P@;(`((6\`!``H(&R`""%O``@`)$YU2.<X`'0`(&R`!'``$"@`#W(!3
XMX:$H`0C$``PB;(`(+&R(#$ZN_C(@!"QLB`Q.KO[")@`(`P`,9P1T_V`H(FR`N
XM""QLB`Q.KOXL2H!G%B)L@`@L;(@,3J[^)B!L@`@D*``@8`)@PB)L@`@L;(@,)
XM3J[^(")L@`@L;(@,3J[^)B`"3-\`'$YU2.<@("1O``Q.NO\2)`!O-@R"```$J
XM`&P$(`)@!B`\```$`"\`+PI.NO\4(FR`""QLB`Q.KOXX(&R`""`H`"!03TS?5
XM!`1.=4AX``$O"DZZ_NY.NO\J4$]@Z$CG`#`D;P`,)F\`$"`*9PY*$F<*#!(`^
XM.F<$%MI@[D(3#!(`.F8&2BH``6862'H`1DAL@6Q.NA#.<`!03TS?#`!.=5**A
XM+PI.N@#:2D!83V822'H`?$AL@6Q.NA"J<`!03V#:+PI.NA98(&\`&""`<`%8M
XM3V#(66]U<B!-241)(&1E=FEC92!N86UE("AV87)I86)L92!-4%]-241)7T1%O
XM5DE#12D@:7,@;6ES<VEN9R!A(&-O;&]N"F%N9"]O<B!A('5N:70@;G5M8F5RY
XM+@H`66]U<B!-241)(&1E=FEC92!U;FET(&YU;6)E<B`H=F%R:6%B;&4@35!?M
XM34E$25]$159)0T4I(&UU<W0@8F4*82!P;W-I=&EV92!I;G1E9V5R+@H`2.<`>
XM("1O``@@"F<$2A)F"'``3-\$`$YU2A)G'!`22(!![(`_$#```$B`"````F8$M
XM<`!@WE**8.!P`6#60JR`$"`L@!2PKP`$;`XO+P`,+R\`#&$(4$].=7#_8/I(<
XMYP`@)&\`""`L@!3E@"!R"``,$``M9DP@+(`<(BR`%.6!('(8`!`P"`%(@$C`O
XM*4"($&<P#*P````MB!!F#%*L@!1P_TS?!`!.=2\LB!!(;(`42&R`'"\O`!@OJ
XM"F$*3^\`%&#@</]@W$CG.#`F;P`8)&\`("0O`"0F+P`H4I(O`R\O`"!.N@^8@
XM*`!03V<L($0,*``Z``%F#"\*+P(O"V$T3^\`#"\*+P(O"TZZ`6`@`T_O``Q,H
XMWPP<3G4O`TAX``%A>"\*+P(O"TZZ`4)P/T_O`!1@X$CG(#`F;P`0)&\`%"0OD
XM`!@@0B!0(!+E@")S"`!*,8@!9Q0@0B`2Y8`@4-'S"`!2B"E(@!!@)"`2Y8!*2
XMLP@$9PX@$N6`*7,(!(`04I)@#"\LB!!(>``"80Y03R!"0I!2DDS?#`1.=4CG;
XM,``F+P`,)"\`$$JL@!AG4@R#`````688+RR`("\"2'H`@$AL@6Q.N@XB3^\`.
XM$&`R#(,````"9A@O+(`D+P)(>@!H2&R!;$ZZ#@)/[P`08!(O`DAZ`%Q(;(%LT
XM3KH-[D_O``Q,WP`,3G5);&QE9V%L(&]P=&EO;BX*`$%N(&%R9W5M96YT(&ES@
XM(')E<75I<F5D+"!B=70@;6ES<VEN9RX*`"TE8SH@)7,`+25C.B`E<P`M)6,ZG
XM(&%N('5N:VYO=VX@97)R;W(@;V-C=7)R960*`$CG(#`F;P`0)&\`%"0O`!@@`
XM$N6`2K,(`&<F(!+E@"!S"``,$``M9A@@0B!0(!+E@")S"`!*,8@!9@92DB!"^
XM0I!,WPP$3G4@+(`LL*R`*&T22&R#`DZZ^\@I0(`H0JR`+%A/#*S_____@"AFC
XM#$*L@"Q"K(`H<`1.=4JL@"AN#$*L@"Q"K(`H<`)@["`L@"Q2K(`L0>R#`B)O>
XM``@2L`@`<`%@U$AX``%(;P`,3KKZSDZZ^NH,@`````%03V8$<`%@`G``3G5(;
XMYS`P)&\`%"9O`!AT!$(3#`(``6="#`(``F<\#`(``V<V(%*QZ@`$9`H@4E*26
XM<``0$&`(+PI.NA-66$\F``R`_____V<2+PL?`B\#3KKK3A0`3^\`"F"X#`(``
XM`68(<`%,WPP,3G4,@_____]F"@P"``1F!'`$8.@,@_____]F!'`"8-P,`@`#-
XM9@1P`V#2%H-P`F#,2.<`("1O``A2K(`P+RR`,$AZ`!PO"DZZ#`HO"A\O`!Q./
XMNO,R3^\`$DS?!`!.=3PE-FQD/B`@(`!(YR`@)&\`#"!2L>H`!&0*(%)2DG``Y
XM$!!@""\*3KH2I%A/)``,@/____]G#B!O`!`0@G`!3-\$!$YU<`1@]DCG("`D\
XM;P`,%"\`$"!2L>H`!&0,(%)2DA""<``0`F`.<``0`B\`+PI.NAY&4$\,@/__F
XM__]G!'`!8`)P`$S?!`1.=4CG("`D;P`,<``0+P`00>R`/Q`P``!(@`@```1G6
XM!DS?!`1.=2!2L>H`!&0*(%)2DG``$!!@""\*3KH2"%A/)``,@/____]G$D'L=
XM@#\0,"@`2(`(```$9@)@R@R"_____V<*+PHO`DZZ"RA03V"P3KKXHDYU3G5(,
XMYP`P)F\`#$'L@6PD2$AZ`:`O"TAZ`4XO"DZZ"MA(>`!P2'@`9TAX`&](>`!I^
XM+PM(>@&"+PI.N@J\2'H!MB\*3KH*LD_O`#1(>@'B+PI.N@JD2'@`:4AZ`?DO6
XM"DZZ"I9(>`!O2'H"&2\*3KH*B$AX`&](>`!I2'H"-2\*3KH*=DAZ`E8O"DZZ^
XM"FQ/[P`X2'@`=$AZ`E8O"DZZ"EI(>`!B2'H":B\*3KH*3$AX`&U(>@)\+PI.Z
XMN@H^2'@`9TAZ`HTO"DZZ"C!(>`!P2'H"M"\*3KH*(D_O`#Q(>@+9+PI.N@H4`
XM2'H"^$AX`'!(>`!B2'@`;TAX`&U(>`!I+PM(>@+!+PI.N@GP2'@`;4AX`&](P
XM>`!T2'@`:2\+2'H"[B\*3KH)U$_O`$A(>`!T2'@`:2\+2'H##B\*3KH)O$AZ7
XM`S$O"DZZ";)(>`!T2'@`:4AX`#](>@,^+PI.N@F<3^\`,$S?#`!.=4U)1$D@@
XM4&QA>6=R;W5N9"`H)7,I+"!V97)S:6]N("5S+"!B>2!$86YI96P@0F%R<F5T,
XM="X@(#$P,"4E(%!U8FQI8R!$;VUA:6XA"@`Q+C``57-A9V4Z("5S("TE8SQ&L
XM3U)-050^("TE8SQ&3U)-050^(%LM)6,@:6YF:6QE72!;+25C(&]U=&9I;&5=B
XM"@!4:&4@<')O9W)A;2!Q=6ET<R!A="!E;F0M;V8M9FEL92P@;W(@=VAE;B!>Q
XM0R!I<R!P<F5S<V5D+@H`"E1H92!F;&%G<R!M87D@87!P96%R(&EN(&%N>2!O3
XM<F1E<CH*``DM)6,)4W!E8VEF>2!T:&4@:6YP=70@9F]R;6%T+B`@(%M-04Y$N
XM051/4EE="@`)+25C"5-P96-I9GD@=&AE(&]U='!U="!F;W)M870N("!;34%.0
XM1$%43U)970H`"0DB+25C(B!A;F0@(BTE8R(@;75S="!%04-((&)E(&9O;&QON
XM=V5D(&)Y`"!E>&%C=&QY(&]N92!O9CH*``D)"25C"51E>'0@*')E861A8FQEY
XM(&)Y(&AU;6%N<RDN"@`)"0DE8PE":6YA<GD@9&%T82`H9F]R(&9I;&5S*2X*V
XM``D)"25C"4U)1$D@*'5S:6YG($U)1$D@<&]R="DN"@`)+25C"4=E="!D871AG
XM(&9R;VT@=&AI<R!F:6QE+B`@("!;1&5F875L=#UK97EB;V%R9%T*``DM)6,)V
XM4'5T(&1A=&$@:6YT;R!T:&ES(&9I;&4N("`@(%M$969A=6QT/7-C<F5E;ET*7
XM``I%>&%M<&QE<SH*``DE<R`M)6,E8R`M)6,E8R`M)6,@9&%T80DE<PH`4F5AZ
XM9"!-241)("8@<'5T(&ET(&EN=&\@8FEN87)Y(&9I;&4@(F1A=&$B+@`))7,@/
XM+25C)6,@+25C)6,)"5)E860@='EP960@=&5X="P@<V5N9"!T;R!-241)("AF]
XM=6XA*2X*``HB)7,@+25C)6,B('5N9&5R<W1A;F1S(&1E8VEM86PL(&]C=&%L!
XM+"!H97@L`"!B:6YA<GDL(&-H87)A8W1E<G,L(&%N9"!S=')I;F=S+@H`1F]R6
XM(&1E=&%I;',L('1Y<&4@)6,@=VAI;&4@:6X@(BTE8R5C(B!M;V1E+@H``"\OH
XM``1(>@`02&R!;$ZZ!BA/[P`,3G50;&5A<V4@='EP92`B)7,@/R(@9F]R(&ENO
XM<W1R=6-T:6]N<RX*`$CG`#`F;P`,+R\`$"\+3KH-FB1`2H!03V86+PLO+P`8F
XM2'H`%DAL@6Q.N@703^\`$"`*3-\,`$YU0V%N;F]T("5S('1H92!F:6QE("(EK
XM<R(L"@!(YR`@)&\`#"\"=/XB"BQLB!1.KO^L)!\D`&<2(@(L;(@43J[_IG`!-
XM3-\$!$YU<`!@]DY5_`!(YR`@)&T`"'0!+PIAO$I`6$]G6$AZ`*<O"DAZ`')(\
XM;(%L3KH%3DAL@6Q.NA>&2&R!0$AX`_](;?P`3KH$U$J`3^\`(&<B$"W\`$B`T
XM2,`O`$ZZ!*(,@````%E83V<$<`%@`G``-`!@`G0!8`)T`$I"9Q(O"DAZ`%E(A
XM;(%L3KH$]$_O``PP`DS?!`1.74YU1FEL92`B)7,B(&%L<F5A9'D@97AI<W1ST
XM+@I/5D525U))5$4@:70_(%LE<UTZ(`!997,O3F\L(%)%5%523CU.;P`E<R!NN
XM;W0@;W9E<G=R:71T96XN"@H``$CG,#`F;P`4)&\`&"0O`!PF+P`@(`IG!$H2&
XM9@I![(%6(D,BB&`P+PI.NO[L2D!83V<(<`!,WPP,3G5(>@!.2'H`2"\*3KK^M
XM3"!#((!/[P`,9@1P`&#>(`MG!$H39@I![(%`(D(BB&`<2'H`*$AZ`"(O"TZZ<
XM_AX@0B"`3^\`#&8$<`!@L'`!8*QW`'=R:71E`'(`<F5A9```2.<P,"1O`!0F;
XM;P`8)"\`'"8O`"`@"F<00>R!0+7(9P@O"DZZ&!183R`+9Q!![(%6M\AG""\+(
XM3KH8`%A/2H)G""\"3KH9Y%A/2H-G""\#3KH9V%A/3-\,#$YU2.<`,"9O``PD7
XM;P`0(`IG&DH29Q8O"DZZ%9Y83U*`+P!.NAHD)H!83V8(<`!,WPP`3G4O"B\3%
XM3KH:6'`!4$]@['``3G5.5?_L2.<@("0M``@D;0`,2&W_\$AM__1(;?_X2&W_H
XM_$AM_^U.NNNT#((````!3^\`%&<:#((````"9AY(>@#"+RH`!$ZZ`ZQ*@%!/[
XM9@PO$DZZ^!!83V```(A(;?_P2&W_]$AM_^TO"B\"3KH`XDI`3^\`%&882'H`O
XMBDAL@6Q.N@+6+Q).NOR:3^\`#&!22&W_^$AM__PO+?_P+RW_]$ZZ_BI*0$_O4
XM`!!F`F`T("R`%+"";!A(>@!V2&R!;$ZZ`I@O$DZZ_%Q/[P`,8!0O+?_X+RW_J
XM_$AM_^U.NNL^3^\`#"\M__`O+?_T+RW_^"\M__Q.NOYP3^\`$$S?!`1.74YU!
XM/P!4:&5R92!I<R!A;B!E<G)O<B!I;B!Y;W5R(&]P=&EO;G,O9FQA9W,N"@!9+
XM;W4@9V%V92!M92!T;V\@;6%N>2!A<F=U;65N=',N"@``2.<^,"@O`"`F;P`D;
XM)&\`*"HO`"PL+P`P=`%(;(`T+PLO!$ZZ\CXF``R`_____T_O``QG``#L(`-@;
XM``#$,`)(P$H29@1R`6`"<@#`@30`+PI"IR!L@!`?$$ZZ['S$0$_O``I@``"X!
XM,`)(P$HJ``%F!'(!8`)R`,"!-``O"DAX``$@;(`0'Q!.NNQ.Q$!/[P`*8```(
XMBC`"2,`@;(`02A!G!'(!8`)R`,"!-``O+(`0+P5.NOV\Q$!03V!B,`)(P"!LL
XM@!!*$&<$<@%@`G(`P($T`"\L@!`O!DZZ_9;$0%!/8#PP`DC`2BH``F8$<@%@X
XM`G(`P($T`%(J``)@(G0`8!X$@````&=GCE6`9P#_,EV`9P#_5E.`9Z11@&?&=
XM8-Y@`/[\2D)G$"\*3KKK[$I`6$]G!'`!8`)P`$S?#'Q.=4CG`"!A%B\O``A."
XMN@;\)$!A,"`*6$],WP0`3G63R2QLB`Q.KO[:*4"'`B!LAP(I:`"XAP8@;(<""
XM(7S_____`+A.=2!LAP(A;(<&`+A.=2`O``0,@````&!C#@R`````>F(&!(``@
XM```@3G5(YS`R+&\`&"8O`!PD;P`@)DY3@V]&(%*QZ@`$9`H@4E*2<``0$&`(7
XM+PI.N@<.6$\D``R`_____V<.%H)2BPR"````"F;,8!2WSF<(""H``0`-9@APC
XM`$S?3`Q.=4(3(`Y@]$CG("!![P`4)$@O"B\O`!0O+P`43KH-#B0`(`)/[P`,,
XM3-\$!$YU2.<@("0O``PD;P`0#(+_____9Q(@"F<.2FH`#&<(""H``@`,9PAP7
XM_TS?!`1.=4JJ``AF""\*3KH58%A/(%*QZ@`(9A`@:@`$L>H`"&+84I(E4@`$1
XM0>H`#`BH``$``4'J``P(T``$4Y(@4A""<``0`F"V3OH$%DSO`P``!+/(9PQP_
XM`!`8L!E6R/_Z9@1P`$YU8P1P`4YU</].=6%P0^R#`D7L@P*UR68.,CP!6FL(;
XM=``BPE')__PI3X@8+'@`!"E.B`Q(YX"`""X`!`$I9Q!+^@`(3J[_XF`&0J?SN
XM7TYS0_H`($ZN_F@I0(@49@PN/``#@`=.KO^48`1.N@`:4$].=61O<RYL:6)R>
XM87)Y`$GY``!__DYU2.<`,"9O`!`O#B(\``$``#`L@O@O`4C`(@#CB-"!XX@BG
XM'RQLB`Q.KO\Z+%\I0(@<9AY(YP$&F\TN/``!```L;(@,3J[_E$S?8(`N;(@8E
XM3G4@;(@<0F@`!"!LB!PQ?``!`!`@;(@<,7P``0`*(&R(&"`LB!B0J``$4(`I$
XM0(@@(&R((""\34%.6"\.D\DL;(@,3J[^VBQ?)$!*J@"L9S(O"R\O`!`O"DZZ6
XM`.PI?`````&()"!LB!Q8B`!0@``@;(@<T?P````*`%"``$_O``Q@5B\.0>H`=
XM7"QLB`Q.KOZ`+%\O#D'J`%PL;(@,3J[^C"Q?*4"(*"!LB"A*J``D9R(O#B!L+
XMB"@@:``D(A`L;(@43J[_@BQ?+RR(*"\*3KH">%!/*6R(*(@L+PXL;(@43J[_4
XMRBQ?(&R('""`+PXL;(@43J[_Q"Q?(&R('"%```9*J@"D9R1(YR`")#P```/M[
XM0?H`-"((+&R(%$ZN_^),WT`$(&R('"%```PO+(@L+RR(,$ZZY8I03R\`3KH6[
XM3EA/3-\,`$YU*@!(YS@R)B\`'"@O`"`F;P`D($-*J`"L9Q0@0R`H`*SE@"Q`W
XM("X`$.6`)$!@!"1L@OH0$DB`2,#0A%2`*4"(-"\.<@`@+(@T+&R(#$ZN_SHL:
XM7RE`B#AF!DS?3!Q.=1`22(!(P"0`+P)!Z@`!+P@O+(@X3KH%LDAZ`48@0M'LV
XMB#@O"$ZZ$Z8O!"\++RR(.$ZZ`3`@;(@X0C`H`"E\`````8@P)$+5[(@X4HHFF
XM2D_O`"`0$DB`2,`D``R`````(&<@#((````)9Q@,@@````QG$`R"````#6<(B
XM#((````*9@12BF#,#!(`(&UV#!(`(F8J4HH0&DB`2,`D`&<<%L(,@@```")FF
XM$`P2`")F!%**8`9"*___8`)@VF`X$!I(@$C`)`!G+`R"````(&<D#((````)<
XM9QP,@@````QG%`R"````#6<,#((````*9P06PF#*0AM*@F8"4XI2K(@P8`#_N
XM4D(3+PYR`"`LB##E@%B`+&R(#$ZN_SHL7RE`B"QF"$*LB#!@`/[4=``D;(@XJ
XM8!H@`N6`(&R(+"&*"``O"DZZ#;+5P%**6$]2@K2LB#!MX"`"Y8`@;(@L0K`(&
XM`&``_IP@`$SO`P``!"`((B\`#$H89OQ3B!#95\G__`2!``$``&KR0B!.=2!O:
XM``1P`!(O``L0&+`!5\C_^F<$<`!.=5-((`A.=4CG.#(F;P`<*"\`("\.<`!#&
XM^@#$+&R(#$ZN_=@L7RE`B#QF!DS?3!Q.=2\.($0@:``D(&@`!"QLB#Q.KO^R7
XM+%\D0$J`9W@O#D/Z`)D@:@`V+&R(/$ZN_Z`L7RQ`2H!G4$CG(`(D/````^TB=
XM+P`$+&R(%$ZN_^),WT`$)@!G,B`#Y8`D`"!")V@`"`"D)T,`G$CG(`(D/```R
XM`^U!^@!.(@@L;(@43J[_XDS?0`0G0`"@+PX@2BQLB#Q.KO^F+%\O#B)LB#PL4
XM;(@,3J[^8BQ?0JR(/&``_U!I8V]N+FQI8G)A<GD`5TE.1$]7`"H`2.<P("1OH
XM`!`0$DB`#$``(&<*$!)(@`Q```EF!%**8.AV`!`22(`,0``M9@9V`5**8`P0X
XM$DB`#$``*V8"4HIT`&`:(`(B`.6(T('CB!(:2(%(P="!)``$@@```#`0$DB`#
XM0>R`/Q`P``!(@`@```)FTDJ#9P8@`D2`8`(@`DS?!`Q.=4CG`#(L;P`0+PY.O
XMN@O4#(````#\6$]C"'``3-],`$YU2'H`<DALAPI.NA"0+PY(;(<*3KH";DAZZ
XM`&%(;(<*3KH!-"1`2H!/[P`89@1P`&#*0>R'"B9((%*QZ@`$9`H@4E*2<``0L
XM$&`(+PI.N@`P6$\6@`P``/]G"E*+0>R("K?(9=0O"DZZ#8)"$T'LAPH@"%A/H
XM8(9%3E8Z`'(``$CG,#`D;P`4(`IG%G``,"H`#"8`9PP(`P`*9@8(`P`#9PAPU
XM_TS?#`Q.=2!2L>H`!&4``)I*J@`(9@@O"DZZ#JA83S`J``P"0`"@9S!![(%`J
XM)DAP`#`K``P"@```0"`,@```0"!F""\+3KH*_EA/U_P````60>R"^+?(9=9!]
XMZ@`,`E"O_R\J`!`O*@`($"H`#DB`2,`O`$ZZ`WPD`$_O``QN'$J"9@1P`F`"0
XM<`1!Z@`,<@`R$("!,(!P_V``_V@DJ@`(($+1Z@`()4@`!"!24I)P`!`08`#_W
XM3DAX__].N@#N+P`O+P`0+R\`$$ZZ``A/[P`03G5(YSPR+&\`("1O`"0F;P`HZ
XM*"\`+"8\```$`!`22(!(P"H`#(````!R9@XD/```$``F/````@!@*`R%````D
XM=V8()#P``!,!8!@,A0```&%F""0\```9`6`(<`!,WTP\3G52BA`22(`,0``KV
XM9@P0*@`!2(`,0`!B9PP0$DB`#$``8F8*4HH(PP`$"((`#!`22(`,0``K9AH@@
XM`@B````D``C"``$@`P*`___Y_R8`",,`"R`.9PPO`B\.3KH`L"@`4$]*A&V4M
XM#(0````4;(P71``.-T,`#"`+8()(YP`@0>R!0"1(2FH`#&<8U?P````60>R"6
XM^+7(9@AP`$S?!`!.=6#B0FH`%$*20JH`!$*J``@@"F#F3.\#```$(`A*&&;\=
XM4T@0V6;\3G5,[P,```0@""(O``Q@`A#95\G__&<,!($``0``:O!.=4(84<G_?
XM_`2!``$``&KR3G4O+P`(2'@#`2\O``QA!D_O``Q.=4CG/C(F;P`D*B\`*$ZZ*
XM#Y8D;(@<=@!@$B`#(@#CB-"!XXA*L@@`9Q!2@S!L@OBQPV[F>`A@``$J"`4`S
XM"6=02.<@`G3_(@LL;(@43J[_K$S?0`0L`&<X+PXB!BQLB!1.KO^F+%\O#B(+U
XM+&R(%$ZN_[@L7TJ`9A@O#BQLB!1.KO]\+%\H``R`````S68``-1(YR`")#P`9
XM``/M(@LL;(@43J[_XDS?0`0D`$J"9@``E`@%``AF!G@!8```J$CG(`(D/```Z
XM`^XB"RQLB!1.KO_B3-]`!"0`9A`O#BQLB!1.KO]\+%\H`&!Z+PYP(4/Z`+PL@
XM;(@,3J[]V"Q?+$!*@&<0+PXB5RQLB`Q.KOYB+%]@,$CG,`)V`4'Z`)XD""(7X
XM+&R(%$ZN_]!,WT`,2.<P`G;_=``B%RQLB!1.KO^^3-]`#&`L(`4"@```!0`,A
XM@```!0!F'"\.(@(L;(@43J[_W"Q?>`4I1(A`</],WTQ\3G4@`R(`XXC0@>.(!
XM)8((`"`#(@#CB-"!XX@UA0@$"`4`"V<62.<P`G8!=``B%RQLB!1.KO^^3-]`3
XM#"`#8+YD;W,N;&EB<F%R>0```$CG,#`D+P`4)F\`&$ZZ#>`@`B(`XXC0@>.(Y
XM)$#5[(@<2H)M##!L@OBQPF\$2I)F$"E\`````XA`</],WPP,3G4P*@`$2,`"I
XM@`````,,@`````%F#"E\````!HA`</]@VDCG,`(F+P`H)`LB$BQLB!1.KO_6D
XM3-]`#"8`#(#_____9A0O#BQLB!1.KO]\+%\I0(A`</]@I"`#8*!(YW``-`'$Q
XMP"8!2$/&P$A#0D/4@TA`P,%(0$)`T(),WP`.3G5(YR`P)F\`$"\.</\L;(@,\
XM3J[^MBQ?)``,@/____]F"'``3-\,!$YU+PXB/``!``%P(BQLB`Q.KO\Z+%\D"
XM0$J`9A(O#B`"+&R(#$ZN_K`L7W``8,XE2P`*%6\`%P`)%7P`!``(0BH`#A5"L
XM``\O#I/)+&R(#$ZN_MHL7R5``!`@"V<0+PXB2BQLB`Q.KOZ>+%]@#$'J`!0O<
XM"$ZZ!>I83R`*8(!(YP`@)&\`"$JJ``IG#B\.(DHL;(@,3J[^F"Q?%7P`_P`(7
XM)7S_____`!0O#G``$"H`#RQLB`Q.KOZP+%\O#G`B(DHL;(@,3J[_+BQ?3-\$2
XM`$YU2.<@,"9O`!`D+P`4(`MF"'``3-\,!$YU+PXB/``!``$@`BQLB`Q.KO\ZU
XM+%\D0$J`9@1P`&#<%7P`!0`(-4(`$B5+``X@"F#*2.<`("1O``@@"F8&3-\$W
XM`$YU%7P`_P`()7S_____`!0E?/____\`&"\.<``P*@`2(DHL;(@,3J[_+BQ?F
XM8,Y.5?WT2.<_,B9M``@L;0`0?@`D;0`,%A)F"B`'3-],_$Y=3G52B@P#`"5G8
XM0B0'(%.QZP`$9`P@4U*3$(-P`!`#8`YP`!`#+P`O"TZZ!5103PR`_____V<`G
XM!'A2@A829@0@`F"X4HH,`P`E9L(N`G@`*WP````@__P6&G``$`-@:`C$``!@E
XM\@C$``%@[`C$``)@Y@C$``-@X$WN``0D+O_\2H)L!@C$``!$@A8:8%8K?```7
XM`##__'0`8!@@`N>`<@`2`]"!T(+0@B0`!((````P%AIP`!`#0>R`/Q`P``!(=
XM@`@```)FU&`<!$``(&>>5T!GH%]`9Z)30&>,54!G@E=`9ZQ@LBM"__@D/```S
XM?<8,`P`N9EX6&@P#`"IF%DWN``0D+O_\2H)L!B0\``!]QA8:8#!T`&`8(`+G+
XM@'(`$@/0@=""T((D``2"````,!8:<``0`T'L@#\0,```2(`(```"9M0,@@``/
XM?<9G""M\````(/_\*@(,`P!H9@8(Q``'8!8,`P!L9@8(Q``&8`H,`P!,9@8(^
XMQ``(%AHK2@`,<``0`V```9Y@``,J"`0`!V<,3>X`!"!N__PPAV`<"`0`!F<,2
XM3>X`!"!N__P@AV`*3>X`!"!N__P@AW0`8``!LDWN``0D;O_\+PI.N@,0)``,?
XMA0``?<983V<&M(5O`B0%8``!CDWN``06+O__0>W]^"1($(-T`6```7AT"&`0[
XM`$0`2'9X=!!@!@C$``1T"@P#`%AF"$'Z`J0@"&`&0?H"K2`(*T#]]`@$``9G=
XM"DWN``0L+O_\8!@(!``$9PI-[@`$+"[__&`(3>X`!"PN__P(!``$9PI*AFP&J
XM1(8(Q``%0>W_^"1(#(4``'W&9@)Z`4J&9@1*A6<<(`8B`DZZ!9P@;?WT%3`(M
XM`"`&(@).N@68+`!FY$'M__B1RB0("`0``V=N#`,`;V842H)G"@P2`#!G"+2%@
XM;00J`E*%8%0,`P!X9P8,`P!89DA*@F=$#!(`,&<^M(5L$$'M_?JQRF0(%3P`M
XM,%*"8.P(!```9AP,K0```##__&82(`)4@+"M__AL""HM__A5A6#*%0,5/``PC
XM5(*TA6P00>W]^+'*9`@5/``P4H)@[&!,!$``)6<`_L($0``S9P#^T@1```MG6
XM`/ZJ4T!G`/[(6T!G`/["6T!G`/Y`4T!G`/ZH4T!G`/ZF5T!G`/YB54!G`/ZHH
XM5T!G`/Z:8`#^&@@$``1G*`@$``5G!A4\`"U@&@@$``%G!A4\`"M@#@@$``)G\
XM!A4\`"!@`E."4H+>@@@$``!F``"0#*T````P__QF0@@$``1G/#`$`D``)F<T:
XM(%.QZP`$9`X@4U*3$)IP`!`J__]@#G``$!HO`"\+3KH!I%!/#(#_____9P``;
XMR%.M__A3@F`T(%.QZP`$9!`@4U*3$*W__W``$"W__V`0<``0+?__+P`O"TZZY
XM`6I03PR`_____V<``(Y2AR`M__A3K?_XL()NP"H"(`)3@DJ`9RX@4['K``1DT
XM#B!34I,0FG``$"K__V`.<``0&B\`+PM.N@$D4$\,@/____]G2&#*"`0``&<\%
XM)`5@+"!3L>L`!&0.(%-2DQ"\`"!P`'`@8`Q(>``@+PM.N@#N4$\,@/____]G(
XM$E*'("W_^%.M__BP@F[(8`#[1'#_8`#[2#`Q,C,T-38W.#E!0D-$148`,#$RT
XM,S0U-C<X.6%B8V1E9@`@;P`$(`A*&&;\4TB1P"`(3G4@;P`$((A8D$*H``0A7
XM2``(3G5(YP`@)&\`""`*9D1![(%`)$A*:@`,9R8P*@`,`D`""&8<2'C__R\*C
XM3KH`6@R`_____U!/9@AP_TS?!`!.==7\````%D'L@OBUR&7&<`!@Z$AX__\OS
XM"DZZ`"Q03V#:2.<`($'L@4`D2"\*3KH!F%A/U?P````60>R"^+7(9>I,WP0`*
XM3G5(YSP@)&\`&"@O`!P@"F<``6HT*@`,9P`!8@@"``EF``%:"`(``V8``5)!W
XMZ@`,`E#O_4JJ``AF'`R$_____V8(<`!,WP0\3G4O"DZZ`JXT*@`,6$\(`@`.D
XM9C0@4K'J``AC'DAX``$@$I"J``0O`!`J``Y(@$C`+P!.N@0H3^\`#"2J``@@+
XM:@`0T=(E2``$#(3_____9@1V`&`"%@0@$I"J``@J`#`"`D``H&=&#(3_____A
XM9QH@4E*2$(-!Z@`,"-``!C000?K_%"E(B$12A0R$_____V<,#`,`"F<&NJH`.
XM$&4$>/]@#"52``1P`!`#8`#_4@@"``YG*$J%9QPO!2\J``@0*@`.2(!(P"\`@
XM3KH$6K"%3^\`#&9.0>H`#`B0``8,A/____]F$B2J``@E:@`(``1P`!`#8`#_%
XM"D'Z_IXI2(A$0>H`#`C0``8DJ@`((&H`$-'2)4@`!"!24I(0@W``$`-@`/[>?
XM0>H`#`CH``(``25J``@`!"2J``AP_V``_L1.5?_V2.<X("1M``AT`"`*9P9*Y
XM:@`,9@IP_TS?!!Q.74YU""H``0`,9@HO"DZZ_<Z$@%A/$"H`#DB`2,`O`$ZZ#
XM!AZ$@`@J````#5A/9PHO*@`(3KH!G%A/2FH`%&=22'H`;DAM__=.N@)*."H`^
XM%'8`4$]P`#`$<@I.N@"`!H`````P<@>2@T'M__<1@!@`2$1"1$A$B/P`"E*#C
XM#(,````%;=!"+?__2&W_]TZZ`P983T*20JH`!$*J``A":@`,2H)G!G#_8`#_8
XM5'``8`#_3E1-4`!(YT@`0H1*@&H$1(!21$J!:@9$@0I$``%A/DI$9P)$@$S?%
XM`!)*@$YU2.=(`$*$2H!J!$2`4D1*@6H"1(%A&B`!8-@O`6$2(`$B'TJ`3G4O_
XM`6$&(A]*@$YU2.<P`$A!2D%F($A!-@$T`$)`2$"`PR(`2$`R`H+#,`%"04A!0
XM3-\`#$YU2$$F`2(`0D%(04A`0D!T#]"`TX&V@6($DH-20%'*__),WP`,3G5(;
XMYR`@)&\`#'1!$"H`#DB`2,`O`$ZZ`3!*@%A/9P1T(6`(0>R!;+7(9Q@E?```+
XM!```$$AX!`!.N@"V)4``"%A/9A0E?`````$`$$'J``\E2``(-#P`@$'J``QP<
XM`#`0,@)(P8"!,(`E:@`(``0DJ@`(3-\$!$YU2.<`,BQO`!"7RR1LB$A@#$'JZ
XM``B]R&<.)DHD4B`*9O!,WTP`3G4@"V<$)I)@!"E2B$@O#B`J``10@")*+&R(&
XM#$ZN_RXL7V#82.<`,"1LB$A@&"92+PX@*@`$4(`B2BQLB`Q.KO\N+%\D2R`*G
XM9N1"K(A(3-\,`$YU2.<@("0O``Q*@F8(<`!,WP0$3G4O#G(`(`)0@"QLB`Q.+
XMKO\Z+%\D0$J`9@1P`&#>0?K_GBE(B$PDK(A()4(`!"E*B$@@"E"`8,1,[P,`_
XM``0@"!#99OQ.=4CG("`D+P`,(`(B`..(T('CB"1`U>R('$J";0PP;(+XL<)OY
XM!$J29A`I?`````.(0'#_3-\$!$YU+PX@`B(`XXC0@>.((&R('"(P"``L;(@41
XM3J[_*"Q?2H!G!'`!8`)P`&#02.<P("0O`!!.N@%J(`(B`..(T('CB"1`U>R(#
XM'$J";0PP;(+XL<)O!$J29A`I?`````.(0'#_3-\$#$YU2.<P`B`O`"13@"8`9
XM)"\`("(2+&R(%$ZN_[Y,WT`,)@`,@/____]F%"\.+&R(%$ZN_WPL7RE`B$!P'
XM_V"^2.<P`G8`=``B$BQLB!1.KO^^3-]`#&"F2.<`("1O``@O#B(*+&R(%$ZN)
XM_[@L7TJ`9A@O#BQLB!1.KO]\+%\I0(A`</],WP0`3G5P`&#V2.<P,"0O`!0FQ
XM;P`83KH`H"`"(@#CB-"!XX@D0-7LB!Q*@FT,,&R"^+'";P1*DF80*7P````#>
XMB$!P_TS?#`Q.=3`J``0"0``#9@PI?`````:(0'#_8.0(*@`#``1G%DCG,`)V%
XM`70`(A(L;(@43J[_ODS?0`Q(YS`")B\`*"0+(A(L;(@43J[_T$S?0`PF``R`V
XM_____V84+PXL;(@43J[_?"Q?*4"(0'#_8)`@`V",2.<@`"\.(CP``!``<``L>
XM;(@,3J[^SBQ?)``(```,9Q)*K(@D9@@@`DS?``1.=4ZZTB!P`&#R2JR(4&<4M
XM(&R(4"!H``1.D"!LB%`I4(A08.9*K(A$9P8@;(A$3I`O+P`$3KH`!EA/3G5(0
XMYS``)B\`#$JLB!QG-'0`8`HO`DZZ`4I83U*",&R"^+'";NXO#C`L@OA(P"(`L
XMXXC0@>.((FR('"QLB`Q.KO\N+%]*K(A,9P8@;(A,3I!*K(+^9Q`O#B(L@OXL2
XM;(@43J[_IBQ?2JR(5&<((&R(5""LB%A*K(A<9Q`O#B)LB%PL;(@,3J[^8BQ?<
XM2JR(8&<0+PXB;(A@+&R(#$ZN_F(L7TJLB&1G$"\.(FR(9"QLB`Q.KOYB+%]*(
XMK(AH9Q`O#B)LB&@L;(@,3J[^8BQ?2.<`!BQX``0(+@`$`2EG$$OZ``A.KO_B#
XM8`9"I_-?3G,J7TJLB"AF-$JLB#AG+"\.("R(-")LB#@L;(@,3J[_+BQ?+PX@$
XM+(@PY8!8@")LB"PL;(@,3J[_+BQ?8!PO#BQLB`Q.KO]\+%\O#B)LB"@L;(@,1
XM3J[^ABQ?+PXB;(@4+&R(#$ZN_F(L7R`#+FR(&$YU3-\`#$YU2.<@("0O``P@-
XM`B(`XXC0@>.()$#5[(@<2H)M##!L@OBQPF\$2I)F$"E\`````XA`</],WP0$Y
XM3G4P*@`$`D"``&8.+PXB$BQLB!1.KO_<+%]"DG``8-P``````^P````!````.
XM`0``(E(````````#\@```^H```#``````````````````````````````0``8
XM``$````````3/```$TT```````````````!I.F\Z9SIP.G@``"`@("`@("`@_
XM(#`P,#`P("`@("`@("`@("`@("`@("`@D$!`0$!`0$!`0$!`0$!`0`P,#`P,<
XM#`P,#`Q`0$!`0$!`"0D)"0D)`0$!`0$!`0$!`0$!`0$!`0$!`0%`0$!`0$`*0
XM"@H*"@H"`@("`@("`@("`@("`@("`@("`D!`0$`@````````````````````Z
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````@````````$`#
XM``````````````````0``0`````!```````````````````$``(``````0``-
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM````````````````````%``````````````#[`````(`````````'@```"(`%
X3```````#\@```^L````!```#\@``9
X``
Xend
Xsize 16264
END_OF_FILE
if test 22805 -ne `wc -c <'MP.uu'`; then
    echo shar: \"'MP.uu'\" unpacked with wrong size!
fi
# end of 'MP.uu'
fi
echo shar: End of archive 2 \(of 2\).
cp /dev/null ark2isdone
MISSING=""
for I in 1 2 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked both archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
Mail comments to the moderator at <amiga-request@uunet.uu.net>.
Post requests for sources, and general discussion to comp.sys.amiga.misc.