[comp.protocols.appletalk] Mac PostScript Question

jeffc@leda (Jeff Currier) (02/16/89)

I don't have a LaserWriter connected to my SE and we don't
have the money for FastPath right now, but we have a LaserWriter on our
Sun.  What I am trying to do is:

Create PostScript on my SE using command-K or command-F

use NCSA Telnet to transfer the file to my sun

use lpr to print the file

When I do this, th efile sits in the LaserWriter for a few
seconds and then nothing.  I am not a PostScript expert.  I
know we have Transcript on the sun and I have printed many a Postascript
file.  If anyone know what the problem is, let me know.
Thanks.
----------------------------------------------------------
Jeff Currier  (602)621-4948
Computational Fluid Mechanics Lab
University of Arizona
Tucson, AZ 85721
Internet: currier@prandtl.nas.nasa.gov
----------------------------------------------------------

zben@umd5.umd.edu (Ben Cranston) (02/17/89)

In article <914@amethyst.ma.arizona.edu> currier@prandtl.nas.nasa.gov (Jeff Currier) writes:

>Create PostScript on my SE using command-K or command-F
>use NCSA Telnet to transfer the file to my sun
>use lpr to print the file
>When I do this, th efile sits in the LaserWriter for a few
>seconds and then nothing...

Yes, the command-K version of the preload doesn't do an "exitserver",
and you don't want it to muck about with the setsccinteractive and the
timeouts and things, because they are probably already set correctly for
the way the spooling system wants them.  By hacking away at a command-K file
until it stopped failing I produced the prolog embedded in the following
shell script.  I use this with a Dec Postscript printer, and have yet to find
a Mac command-F file that won't work with it.  Enjoy.  Some or all features
may work.  The University of Maryland still thinks I program dinosaurs.
Please don't disabuse them of this fantasy...

#! /bin/sh

# print postscript file transfered from Macintosh

# mppr <opts> <file>

# <opts> can be  -q <queuename>

# this shell script prepends an edited version of the Macintosh preload and
# queues the file for printing on an MDQS-connected Postscript printer.

QNAME=lps40

case $1 in
-q|-Q) shift ; QNAME=$1 ; shift ;;
esac

cat <<@eof - $1 | qpr -q $QNAME
%!PS-Adobe
%%Title: "(Rational) Laser Prep -- The Apple PostScript Dictionary (md)"
%%Creator: Ben Cranston U of Maryland
%%CreationDate: Friday, December 23, 1988
%{appledict version #68 0
% @ CopyRight Apple Computer, Inc. 1984,1985,1986,1987,1988 All Rights Reserved.
%%EndComments
%%BeginProcSet: "(AppleDict md)" 68 0
%
%
% Setup custom halftone screen
%
% - sc -
%   --
%
/sc {
	60 45 
	{ %setscreen
		abs exch abs 2 copy add 1 gt { %ifelse
			1.0 sub dup mul exch 1.0 sub dup mul add 1.0 sub
		}{
			dup mul exch dup mul add 1.0 exch sub
		} ifelse
	}
	setscreen
} bind def
%
%
% if laserwriter ][ then redefine all page setups to use this halftone screen.
%
statusdict begin
	product (LaserWriter II) anchorsearch
end
{ %ifelse
	pop pop
	/letter      [/letter      load /exec load /sc load /exec load] cvx def
	/legal       [/legal       load /exec load /sc load /exec load] cvx def
	/a4          [/a4          load /exec load /sc load /exec load] cvx def
	/b5          [/b5          load /exec load /sc load /exec load] cvx def
	/lettersmall [/lettersmall load /exec load /sc load /exec load] cvx def
	/a4small     [/a4small     load /exec load /sc load /exec load] cvx def
	/note        [/note        load /exec load /sc load /exec load] cvx def
}{
	pop
} ifelse
%
%
% if engine has packing, set packed mode, leave original packing mode on stack.
%
systemdict /currentpacking known
{currentpacking true setpacking} if
%
%
% Test what kind of LaserWriter (if any) this is.
%
% - LW prodcode
%   --
%
% product		returns
%
% (other)       	0
% LaserWriter  		1
% LaserWriter IINTX	2
%
% I wonder why this does a save/restore?
%
/LW {
	save
		statusdict /product get
		(LaserWriter) anchorsearch exch pop { %ifelse
		length 0 eq {1} {2} ifelse
	}{
		0
	} ifelse
	exch restore
} bind def
%
%
% Product is a LaserWriter Plus or later (LW returns exactly 2)
%
% - LW+ bool
%   ---
%
/LW+ {
	LW 2 eq
} bind def
%
%
% Test if "statusdict" dictionary is present and later than original LaserWriter.
%
% - ok bool
%   --
%
/ok {
	systemdict /statusdict known dup { %ifelse
		LW 0 gt and
	} if
} bind def
%
%
% dictionary "md" to hold local variables
%
/md 250 dict def md begin
%
%
% Local variables for the PostScript preload
%
/av 0 def
%
/T true def
%
/F false def
%
/mtx matrix def
%
/s75 75 string def
%
/s8 8 string def
%
/s1 ( ) def
%
/pxs 1 def
%
/pys 1 def
%
%
% Set "pa" name to arctangent of transformed unit vector.
%
1 0 mtx defaultmatrix dtransform exch atan /pa exch def
%
/nlw .24 def
%
/ppr [-32 -29.52 762 582.48] def
%
%
% Pages in document?
%
/pgs 1 def
%
/por true def
%
/xb 500 array def
%
/so true def
%
/tso true def
%
/fillflag false def
%
/pnm 1 def
%
/fmv true def
%
/sfl false def
%
%
% manual feed active flag (set by fm procedure)
%
/ma 0 def
%
/invertflag false def
%
/dbinvertflag false def
%
%
% flags for reversals in x and y directions, and flag no flipping is active.
%
/xflip false def
/yflip false def
/noflips true def
%
/scaleby96 false def
%
/fNote true def
%
/fBitStretch true def
%
%
% fg - Flag vector of some sort
%      5 - save sfl state in "bn/bu"
%      6 - flag used by "vrb", below
%
/fg (Rvd\001\001\000\000\177) def
%
% Bind procedure body and define by name
%
% name proc bdf -
%           ---
%
/bdf {
	bind def
} bind def
%
% Exchange and define by name
%
% value name xdf -
%            ---
%
/xdf {
	exch def
} bdf
%
%
% Translate (note negative and reversed arguments)
%
% nty ntx xl -
%         --
%
/xl {
	neg exch neg translate
} bdf
%
%
% Test for pen size not zero (fat pen?)
%
% - fp bool
%   --
%
/fp {
	pnsh 0 ne pnsv 0 ne and
} bdf
%
%
% No operation
%
% - nop -
%   ---
%
/nop {
} bdf
%
% Non-empty no-operation?
%
% - lnop -
%   ----
%
/lnop [
	/nop load
] cvx bdf
%
%
% Setup graphics verb array.  One of these routines is selected for execution
% by the "doop" word, below.
%
/vrb [
% 0 stroke
	{ 
		fp { %if
			fg 6 get 0 ne { %ifelse
				gsave stroke grestore
			}{
				gsave
					1 setlinewidth pnsh pnsv scale stroke
				grestore
			} ifelse
		} if
		newpath
	} bind
% 1 fill
	/eofill load
% 2 fill
	dup
% 3 newpath (no-operation)
	/newpath load
% 4 fill
	2 index
% 5 fill
	dup
% 6 set clipping path
	{clip newpath} bind
% 7 no-op
	{} bind
% 8 no-op
	dup
% 9,10 no-op
	2 copy
] def
%
%
% Save procedure (spot function), angle (rotation), and frequency
% of current halftone screen
%
currentscreen
/spf xdf
/rot xdf
/freq xdf
%
% Perform graphics operation from "vrb" array on current path
%
% index doop -
%       ----
%
/doop {
	vrb exch get exec
} bdf
%
%
% psu - page setup
%
% smooth por [ppr] f100 pxs pys pages invert xflip yflip scale96 fbstretch fNote tso psu -
%                                                                                    ---
%
% set global flags for various page setup options.
%
/psu {
	/tso xdf
	/fNote xdf
	/fBitStretch xdf
	/scaleby96 xdf
	/yflip xdf
	/xflip xdf
	/invertflag xdf
%
	/dbinvertflag
	invertflag statusdict begin
		version cvr 47.0 ge product (LaserWriter) eq not and
	end invertflag and {not} if def
%
	xflip yflip or {/noflips false def} if
	/pgs xdf
%
	2 index .72 mul exch div /pys xdf
	div .72 mul /pxs xdf
	ppr astore pop
	/por xdf
	sn and /so xdf
} bdf
%
%
% tab -
%
/tab {
	statusdict /11x17 known { %ifelse
		statusdict begin /11x17 load end
	}{
		statusdict /setpage known { %ifelse
			statusdict begin
				792 1224 1 setpage
			end
		}{
			statusdict /setpageparams known { %if
				statusdict begin
					792 1224 0 1 setpageparams
				end
			} if
		} ifelse
	} ifelse
} bdf
%
%
% txpose -
%
/txpose {
	fNote {smalls} {bigs} ifelse
	pgs get exec pxs pys scale ppr aload pop por { %ifelse
		noflips { %if
			pop exch neg exch translate pop 1 -1 scale
		} if
		xflip yflip and { %if
			pop exch neg exch translate 180 rotate
			1 -1 scale ppr 3 get ppr 1 get neg sub neg
			ppr 2 get ppr 0 get neg sub neg translate
		} if 
		xflip yflip not and { %if
			pop exch neg exch translate pop 180 rotate
			ppr 3 get ppr 1 get neg sub neg 0 translate
		} if
		yflip xflip not and { %if
			ppr 1 get neg ppr 0 get neg translate
		} if
	}{
		noflips { %if
			translate pop pop 270 rotate 1 -1 scale
		} if
		xflip yflip and { %if
			translate pop pop 90 rotate 1 -1 scale
			ppr 3 get ppr 1 get neg sub neg
			ppr 2 get ppr 0 get neg sub neg translate
		} if
		xflip yflip not and { %if
			translate pop pop 90 rotate ppr 3 get ppr 1 get 
			neg sub neg 0 translate
		} if
		yflip xflip not and { %if
			translate pop pop 270 rotate ppr 2 get ppr 0 get 
			neg sub neg 0 exch translate
		} if
	} ifelse
%
% !!!!!!!!!!!!!!!!
%
	statusdict begin
		waittimeout 300 lt { /waittimeout 300 def } if
	end
%
	scaleby96 { %if
		ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 
		2 copy translate .96 dup scale neg exch neg exch translate
	} if
} bdf
%
%
% fr -
%
/fr {
	4 copy ppr aload pop 3 -1 roll add 3 1 roll exch add 6 2 roll
	3 -1 roll sub 3 1 roll exch sub 3 -1 roll exch div 3 1 roll div
	exch scale pop pop xl
} bdf
%
%
% If bool true, scale, else replace by zero
%
% real bool obl real
%           ---
%
/obl {
	{ 0.212557 mul } { pop 0 } ifelse
} bdf
%
%
% Set Font Dimensions depending on ps (fz) and fg[int] and set as current font
%
% int bool font sfd -
%               ---
%
/sfd {
	ps fg 5 -1 roll get mul 100 div 0 ps 5 -1 roll obl
	ps neg 0 0
	6a astore makefont
	setfont
} bdf
%
%
% Set font by name
%
% int bool name fnt -
%               ---
/fnt {
	findfont sfd
} bdf
%
%
% Extract bit from style mask and set into element of "sa"
%
% style index mask bt style
%                  --
%
/bt {
	sa 3 1 roll 3 index and put
} bdf
%
%
% Style Array, 0-7 are bits, 8 is style code, 9 used by setTxMode below.
%
/sa (\000\000\000\000\000\000\000\000\000\000) def
%
%
% Set Font Style, unpack into bits and save original value too
%
% style fs -
%       --
%
/fs {
	0 1  bt 1 2  bt 2 4  bt 3  8  bt
	4 16 bt 5 32 bt 6 64 bt 7 128 bt 
	sa exch 8 exch put
} bdf
%
%
% Scratch matrices?
%
/mx1 matrix def
/mx2 matrix def
/mx3 matrix def
%
%
% Used in pairs with "bn", below
% Note op (open page) does "pm save def"
%
% - bu -
%   --
%
/bu {
	currentpoint currentgray currentlinewidth currentlinecap currentlinejoin
	currentdash exch aload length
	fg 5 sfl {1} {0} ifelse put
	pnsv pnsh
	2t aload pop 3a aload pop mx2 aload pop mx1 aload pop
	mtx currentmatrix aload pop
	mx3 aload pop
	ps pm restore /ps xdf
	mx3 astore pop
} bdf
%
%
% Used in pairs with "bu", above
%
% - bn -
%   --
%
/bn {
	/pm save def
	mx3 setmatrix
	newpath 0 0 moveto
	ct dup 39 get 0 exch getinterval cvx exec
	mtx astore setmatrix
	mx1 astore pop mx2 astore pop 3a astore pop 2t astore pop
	/pnsh xdf
	/pnsv xdf
	gw
	/sfl fg 5 get 0 ne def
	array astore exch setdash
	setlinejoin setlinecap setlinewidth setgray moveto
} bdf
%
%
% Write home if you get work
% Why does this do a save/restore?
%
% - fc -
%
/fc {
	save
		vmstatus exch sub 50000 lt { (%%[|0|]%%) = print flush } if
	pop restore
} bdf
%
%
% tc -
%
/tc { 32768 div add 3 1 roll 32768 div add 2t astore pop } bdf
%
%
% ?
%
/3a [0 0 0] def
/2t 2 array def
%
%
% tp -
%
/tp { 3a astore pop } bdf
%
%
% tt -
%
/tt {
	mx2 currentmatrix pop currentpoint 
	2 copy 2t aload pop qa 2 copy translate
	3a aload pop exch dup 0 eq { %ifelse
		pop
	}{
		1 eq {-1 1} {1 -1} ifelse scale
	} ifelse
	rotate pop neg exch neg exch translate moveto
} bdf
%
%
% te -
%
/te { mx2 setmatrix } bdf
%
%
% th -
%
/th {
	3 -1 roll div 3 1 roll exch div 2 copy mx1 scale pop scale 
	/sfl true def
} bdf
%
%
% tu -
%
/tu {
	1 1 mx1 itransform scale
	/sfl false def
} bdf
%
%
% ts -
%
/ts {
	1 1 mx1 transform scale
	/sfl true def
} bdf
%
%
% Set font size for succeding text into global "ps"
%
% size fz -
%      --
%
/fz {
	/ps xdf
} bdf
%
%
% Unless zero, divide by
%
% real real dv real
%           --
%
/dv {
	dup 0 ne { div } { pop } ifelse
} bdf
%
%
% pop away four stack members
%
% x1 x2 x3 x4 pop4 -
%             ----
%
/pop4 { pop pop pop pop } bdf
%
%
% If "sfl" flag set, do coordinate transform
%
% xx yy it xx yy
%       --
%
/it {
	sfl { % if
		mx1 itransform
	} if
} bdf
%
%
% Generalized Move
%
% yy xx gm -
%       --
%
/gm {
	exch it moveto
} bdf
%
%
% Relative Move
%
% xx yy rm -
%       --
%
/rm {
	it rmoveto
} bdf
%
%
% lm -
%
/lm {
	currentpoint sfl { %if
		mx1 transform
	} if
	exch pop sub 0 exch it rmoveto
} bdf
%
%
% Test if manualfeed known
%
% - fm bool
%   --
%
/fm {
	statusdict /manualfeed known
} bdf
%
%
% Set manualfeed variable
%
% bool se -
%      --
%
/se {
	statusdict exch /manualfeed exch put
} bdf
%
%
% Set manual feed for this document
%
% int mf -
%     --
%
% 0 mf	- no manual feed
% 1 mf	- manual feed requested
%
% sets global flag "ma" if manual feed requested
% st (below) may be doing some timing tests
%
/mf {
	dup /ma exch def
	0 gt { %if
		fm se
		/t1 5 st
		ok ma 1 gt and { %if
			/t2 0 st
			/t3 0 st
% !!!!!!!!!!!!!!!!!
			statusdict /manualfeedtimeout 3600 put
%
		} if
	}if
} bdf
%
%
% Set job name (for inclusion in status response).
% put string into "jobname" string in "statusdict" (if it exists).
%
% string jn
%        --
%
/jn {
	/statusdict where exch pop { %if
		statusdict exch /jobname exch put
	} if
} bdf
%
%
% Set pen size
% put pen size, scaled by pnm, into global variables
% set postscript drawing line width to (unscaled) horizontal pen size
%
% psvert pshorz pen
%               ---
%
/pen {
	pnm mul /pnsh xdf
	pnm mul /pnsv xdf
	pnsh setlinewidth
} bdf
%
%
% Minimum of two stacktop values
%
% num num min num
%         ---
%
/min {
	2 copy gt { %if
		exch
	} if
	pop
} bdf
%
%
% Maximum of two stacktop values
%
% num num max num
%         ---
%
/max {
	2 copy lt { %if
		exch
	} if
	pop
} bdf
%
%
% dh -
%
/dh {
	fg 6 1 put array astore dup
	{ %forall
		1 pxs div mul exch
	} forall
	astore exch pop exch pop exch setdash
} bdf
%
%
% ih -
%
/ih [
	currentdash
] def
%
%
% rh -
%
/rh { fg 6 0 put ih aload pop setdash } bdf
%
%
% dl -
%
/dl {
	gsave nlw pys div setlinewidth 0 setgray
} bdf
%
%
% dlin -
% (does this do restore for save in dl, above?)
%
/dlin {
	exch currentpoint currentlinewidth 2 div dup translate
	newpath moveto lineto
	currentpoint stroke grestore moveto
} bdf
%
%
% Draw line from current point to xx,yy
%
% yy xx lin -
%       ---
%
/lin {
	fg 6 get 0 ne { %ifelse
		exch lineto currentpoint 0 doop moveto
	}{
		exch currentpoint /pnlv xdf /pnlh xdf gsave
			newpath /@1 xdf /@2 xdf fp { %if
				pnlh @2 lt { %ifelse
					pnlv @1 ge { %ifelse
						pnlh pnlv moveto
						@2 @1 lineto
						pnsh 0 rlineto
						0 pnsv rlineto
						pnlh pnsh add pnlv pnsv add
						lineto pnsh neg 0 rlineto
					}{
						pnlh pnlv moveto pnsh 0 rlineto
						@2 pnsh add @1 lineto
						0 pnsv rlineto
						pnsh neg 0 rlineto
						pnlh pnlv pnsv add lineto
					} ifelse
				}{
					pnlv @1 gt { %ifelse
						@2 @1 moveto pnsh 0 rlineto
						pnlh pnsh add pnlv lineto
						0 pnsv rlineto
						pnsh neg 0 rlineto
						@2 @1 pnsv add lineto
					}{
						pnlh pnlv moveto
						pnsh 0 rlineto 0 pnsv rlineto
						@2 pnsh add @1 pnsv add lineto
						pnsh neg 0 rlineto
						0 pnsv neg rlineto
					} ifelse
				} ifelse
				closepath fill
			} if
			@2 @1
		grestore moveto
	} ifelse
} bdf
%
%
% gw -
%
/gw {
	/pnm fg 3 get fg 4 get div def
} bdf
%
%
% lw -
%
/lw {
	fg exch 4 exch put
	fg exch 3 exch put
	gw pnsv pnsh pen
} bdf
%
%
% barc -
%
/barc {
	/@1 xdf
	/@2 xdf
	/@3 xdf
	/@4 xdf
	/@5 xdf
	/@6 xdf
	/@7 xdf
	/@8 xdf
	gsave
		@5 @7 add 2 div @6 @8 add 2 div translate
		newpath 0 0 moveto
		@5 @7 sub @6 @8 sub mtx currentmatrix pop scale
		@1 {newpath} if
		0 0 0.5 @4 @3 arc @4 @3 sub abs 360 ge {closepath} if
		mtx setmatrix @2 doop
	grestore
} bdf
%
%
% ar -
%
/ar { dup 0 eq barc } bdf
%
%
% ov -
%
/ov { 0 exch 360 exch true barc } bdf
%
%
% Make rectangular path, then apply graphic verb to it
%
% top left bottom right verb rc -
%                            --
%
/rc {
	/@t xdf
	currentpoint
		6 2 roll newpath 4 copy 4 2 roll exch moveto
		6 -1 roll lineto lineto lineto closepath
		@t doop
	moveto
} bdf
%
%
% mup -
%
/mup {
	dup pnsh 2 div le exch pnsv 2 div le or
} bdf
%
%
% rr
%
/rr {
	/@1 xdf
	2. div /@2 xdf
	2. div /@3 xdf
	/@4 xdf
	/@5 xdf
	/@6 xdf
	/@7 xdf
	@7 @5 eq @6 @4 eq @2 mup or or { %ifelse
		@7 @6 @5 @4 @1 rc
	}{
		@4 @6 sub 2. div dup @2 lt {/@2 xdf} {pop} ifelse
		@5 @7 sub 2. div dup @2 lt {/@2 xdf} {pop} ifelse
		@1 0 eq { %if
			/@2 @2 pnsh 2 div 2 copy gt {sub def} {0 pop4} ifelse
		} if
		currentpoint newpath
		@4 @6 add 2. div @7 moveto
		@4 @7 @4 @5 @2 arcto pop4
		@4 @5 @6 @5 @2 arcto pop4
		@6 @5 @6 @7 @2 arcto pop4
		@6 @7 @4 @7 @2 arcto pop4
		closepath @1 doop moveto
	} ifelse
} bdf
%
%
% pr -
%
/pr {
	gsave newpath /pl { %def
		exch moveto
		/pl { exch lineto } def
	} def
} bdf
%
%
% pl -
%
/pl { exch lineto } bdf
%
%
% ep -
%
/ep {
	dup 0 eq { %ifelse
		{moveto}
		{exch lin}
		{}
		{(%%[|1|]%%)= flush}
		pathforall
		pop grestore
	}{
		doop grestore
	} ifelse
	currentpoint newpath moveto
} bdf
%
%
% Set gray level density based on 0-64 range
% 0 is black, 64 is white
%
% level gr -
%       --
%
/gr {
	64. div setgray
} bdf
%
%
% pat -
%
/pat {
	s8 copy pop 9.375 pa por not {90 add} if
	{1 add 4 mul cvi s8 exch get exch 1 add 4 mul cvi 7 sub bitshift 1 and}
	setscreen gr
} bdf
%
%
% sg -
%
/sg {
	freq rot /spf load setscreen gr
} bdf
%
%
% Round to Device Coordinates
%
% xx yy dc xx yy
%       --
%
/dc {
	transform
	round .5 sub exch
	round .5 sub exch
	itransform
} bdf
%
%
% Test if "smooth4" procedure known
%
% - sn bool
%
/sn {
	userdict /smooth4 known
} bdf
%
%
% Multiply by 8 (by shifting)
%
% int x8 int
%     --
%
/x8 {
	3 bitshift
} bdf
%
%
% Multiply by 4 (by shifting)
%
% int x4 int
%     --
%
/x4 {
	2 bitshift
} bdf
%
%
% Divide by 4 (by shifting)
%
% int d4 int
%     --
%
/d4 {
	-2 bitshift
} bdf
%
%
% Divide by 8 (by shifting)
%
% int d8 int
%     --
%
/d8 {
	-3 bitshift
} bdf
%
%
% Convert to bytes of 16 bit words?
% 2 * ( x+15 div 16 )
%
% int rb int
%     --
%
/rb {
	15 add -4 bitshift 1 bitshift
} bdf
%
%
% db - (bitmap?)
%
/db {
	/@7 save def
	/@1 xdf
	/@2 xdf
	/@3 xdf
	/@4 xdf
	/@5 xdf
	/@6 @5 @3 4 add mul def
	dc translate scale
	/xdbit 1 1 idtransform abs
	/ydbit exch def
	abs def { 0 0 1 ydbit add 1 10 rc clip } if
	@1 0 eq @1 4 eq or { 1 setgray ydbit 0 1 ydbit add 1 2 rc } if
	@1 3 eq @1 7 eq or {1} {0} ifelse setgray
	/@9 @1 0 eq @1 1 eq @1 3 eq or or dbinvertflag xor def
	/@13 @6 def
	@2 fBitStretch or { %if
		/@10 @4 x4 def
		/@11 @3 x4 def
		/@12 @10 rb def
		/@13 @12 @11 mul def
		/@15 1 1 dtransform abs /calcY 1 index def
		round cvi /@14 exch def
		abs /calcX 1 index def
		round cvi scaleby96 not {1 add} if def
		/@16 @15 rb def
		/@17 @16 @14 mul def
	} if
	sn @13 60000 lt and @2 fBitStretch or and { %ifelse
		mtx currentmatrix dup
		1 get exch 2 get 0. eq exch 0. eq and @17 60000 lt
		and fBitStretch and { %ifelse
			@16 3 bitshift @14 @9 [calcX 0 0 calcY 0 0]
			{ %imagemask
				@17 string @13 string
				currentfile @6 string readhexstring pop 1
				index @4 @3 @5 @12 @2 smooth4
				@10 @11 @12 dup string 5 index
				@15 @14 @16 dup string stretch
			} imagemask
		}{
			@12 x8 @11 @9 [@10 0 0 @11 0 0] { %imagemask
				@13 string
				currentfile @6 string readhexstring pop
				1 index @4 @3 @5 @12 @2 smooth4
			} imagemask
		} ifelse
	}{
		@5 3 bitshift @3 4 add @9 [@4 0 0 @3 0 2] { %imagemask
			currentfile @6 string readhexstring pop
		} imagemask
	} ifelse
	@7 restore
} bdf
%
%
% multibit -
%
/multibit {
	/mbdeep exch def
	/mbY exch def
	/mbX exch def
	save
		mbX mbY mbdeep [ mbX 0 0 mbY 0 0 ]
		{ currentfile picstr readhexstring pop } image
	restore
} bdf
%
%
% wd
%
/wd 16 dict def
%
%
% mfont
%
/mfont 14 dict def
%
%
% mdf
%
/mdf {
	mfont wcheck not { %if
		/mfont 14 dict def
	} if
%
	mfont begin
		xdf
	end
} bdf
%
%
% Copy all members of a font directory EXCEPT the FID entry
%
% font cf -
%
/cf {
	{ %forall
		1 index /FID ne {
			def
		}{ 
			pop pop
		} ifelse
	} forall
} bdf
%
%
% If font unknown, set it up
%
% proc mark bool string string int rf -
%                                  --
%
/rf {
	/@1 exch def
	/@2 exch def
	FontDirectory @2 known
	{ %ifelse
		cleartomark pop
	}{
		findfont dup begin
			dup length @1 add dict begin
				cf
				{ %ifelse
					/Encoding macvec def
				}{
					Encoding dup length array copy
					/Encoding exch def
					counttomark 2 idiv { %repeat
						 Encoding 3 1 roll put
					} repeat
				} ifelse
				pop exec currentdict
			end
		end
		@2 exch definefont pop
	} ifelse
} bdf
%
%
% bmbc -
%
/bmbc {
	exch begin wd begin
		/cr xdf
		save
			CharTable cr 6 mul 6 getinterval {} forall
			/bitheight xdf
			/bitwidth xdf
			.96 div /width xdf
			Gkernmax add /XOffset xdf
			Gdescent add /YOffset xdf
			/rowbytes xdf
			rowbytes 255 eq { %ifelse
				0 0 0 0 0 0 setcachedevice
			}{
				Gnormsize dup scale
				width 0 XOffset YOffset bitwidth
				XOffset add bitheight YOffset add
				setcachedevice
				rowbytes 0 ne { %if
					XOffset YOffset translate
					newpath 0 0 moveto
					bitwidth bitheight scale
					sn { %ifelse
						/xSmt bitwidth x4 def
						/ySmt bitheight x4 def
						/rSmt xSmt rb def
						rSmt x8 ySmt true
						[xSmt 0 0 ySmt neg 0 ySmt]
						{ %imagemask
							rSmt ySmt mul
							string CharData cr get
							1 index
							bitwidth bitheight
							rowbytes rSmt tso
							smooth4
						}
					}{
						rowbytes 3 bitshift bitheight
						4 add true
						[bitwidth 0 0 bitheight neg
						0 bitheight 2 add]
						{ %imagemask
							CharData cr get
						}
					} ifelse
					imagemask
				} if
			} ifelse
		restore
	end end
} bdf
%
%
% bb -
%
/bb {
	.96 exch div /Gnormsize mdf 2 index
	/Gkernmax mdf 1 index /Gdescent mdf
	3 index div 4 1 roll
	2 index div 1. 5 2 roll
	exch div 4 1 roll
	4 array astore /FontBBox mdf
} bdf
%
%
% cdf -
%
/cdf { mfont /CharData get 3 1 roll put } bdf
%
%
% bf -
%
/bf {
	mfont begin
		/FontType 3 def
		/FontMatrix [1 0 0 1 0 0] def
		/Encoding macvec def
		/BuildChar /bmbc load def
	end
	mfont definefont pop
} bdf
%
%
% wi -
%
/wi
	LW 1 eq { %ifelse
		{ %def
			gsave
				0 0 0 0 0 0 0 0 moveto lineto lineto lineto
				closepath clip stringwidth
			grestore
		} bind
	}{
		/stringwidth load
	} ifelse
def
%
%
% aps -
%
/aps { 0 get 124 eq } bdf
%
%
% xc -
%
/xc { s75 cvs dup } bdf
%
% xp -
%
/xp { put cvn } bdf
%
%
% scs -
%
/scs { xc 3 67 put dup 0 95 xp } bdf
%
%
% sos -
%
/sos { xc 3 79 xp } bdf
%
%
% sbs -
%
/sbs { xc 1 66 xp } bdf
%
%
% sis -
%
/sis { xc 2 73 xp } bdf
%
%
% sob -
%
/sob { xc 2 79 xp } bdf
%
%
% sss -
%
/sss { xc 4 83 xp } bdf
%
%
% dd -
%
/dd { exch 1 index add 3 1 roll add exch } bdf
%
%
% smc -
%
/smc { moveto dup show } bdf
%
%
% kwn -
%
/kwn {
	FontDirectory 1 index known { findfont exch pop }
} bdf
%
%
% gl
%
/gl { 1 currentgray sub setgray } bdf
%
%
% mm -
%
/mm {
	/mfont 10 dict def
	mfont begin
		/FontMatrix [1 0 0 1 0 0] def
		/FontType 3 def
		/Encoding macvec def
		/df 4 index findfont def
		/FontBBox [0 0 1 1] def
		/xda xdf
		/mbc xdf
		/BuildChar {
			wd begin
				/cr xdf
				/fd xdf
				/cs s1 dup 0 cr put def
				fd /mbc get exec
			end
		} def
		exec
	end
	mfont definefont
} bdf
%
%
% ac -
%
/ac {
	dup scs kwn { %ifelse?
		exch findfont dup length 1 add dict begin
		{ %forall
			1 index /FID ne 2 index /UniqueID ne and { %ifelse
				def
			}{
				pop pop
			} ifelse
		} forall
		fmv { %if
			/Encoding macvec def
		} if
		/StrokeWidth nlw 1000 mul pys div ps div dup
		12 lt { pop 12 } if def
		/PaintType 2 def
		currentdict end definefont
	} ifelse
} bdf
%
%
% mb -
%
/mb {
	dup sbs kwn { exch { pop } { bbc } {} mm } ifelse sfd
} bdf
%
%
% mo -
%
/mo {
	dup sos kwn { exch { pop } { boc } {} mm } ifelse sfd
} bdf
%
%
% ms -
%
/ms {
	dup sss kwn { exch { pop } { bsc } {} mm } ifelse sfd
} bdf
%
%
% ou -
%
/ou {
	dup sos kwn
	{ exch dup ac pop { scs findfont /df2 xdf } { aoc } {} mm } ifelse sfd
} bdf
%
%
% su
%
/su {
	dup sss kwn
	{ exch dup ac pop { scs findfont /df2 xdf } { asc } {} mm } ifelse sfd
} bdf
%
%
% ao -
%
/ao {
	/fmv true def
	ou
} bdf
%
%
% as -
%
/as {
	/fmv true def
	su
} bdf
%
%
% vo -
%
/vo {
	/fmv false def
	ou
} bdf
%
%
% vs -
%
/vs {
	/fmv false def
	su
} bdf
%
%
% bbc -
%
/bbc {
	/da .03 def
	fd /df get setfont
	gsave
		cs wi 1 index 0 ne { exch da add exch } if
	grestore setcharwidth
	cs 0 0 smc da 0 smc da da smc 0 da moveto show
} bdf
%
%
% boc -
%
/boc {
	/da 1 ps div def
	fd /df get setfont
	gsave
		cs wi 1 index 0 ne { exch da add exch } if
	grestore setcharwidth
	cs 0 0 smc da 0 smc da da smc 0 da smc gl da 2. div dup moveto show
} bdf
%
%
% bsc -
%
/bsc {
	/da 1 ps div def
	/ds .05 def
	/da2 da 2. div def
	fd /df get setfont
	gsave
		cs wi 1 index 0 ne { exch ds add da2 add exch } if
	grestore setcharwidth
	cs ds da2 add .01 add 0 smc 0 ds da2 sub translate 0 0 smc
	da 0 smc da da smc 0 da smc gl da 2. div dup moveto show
} bdf
%
%
% aoc -
%
/aoc {
	fd /df get setfont
	gsave
		cs wi
	grestore setcharwidth
	gl cs 0 0 smc fd/df2 get setfont gl 0 0 moveto show
} bdf
%
%
% asc -
%
/asc {
	/da .05 def
	fd /df get setfont
	gsave
		cs wi 1 index 0 ne { exch da add exch } if
	grestore setcharwidth
	cs da .01 add 0 smc 0 da translate
	gl 0 0 smc gl fd /df2 get setfont 0 0 moveto show
} bdf
%
%
% st -
%
/st {
	1000 mul usertime add dup 2147483647 gt { 2147483647 sub } if def
} bdf
%
%
% Time Has Expired?
%
% - the bool
%   ---
%
/the {
	usertime sub dup 0 lt exch -2147483648 gt and
} bdf
%
%
% arrays?
%
/6a 6 array def
/2a 2 array def
/3q 3 array def
%
%
% qs -
%
/qs {
	3 -1 roll sub exch 3 -1 roll sub exch
} bdf
%
%
% qa -
%
/qa {
	3 -1 roll add exch 3 -1 roll add exch
} bdf
%
%
% qm -
%
/qm {
	3 -1 roll 1 index mul 3 1 roll mul
} bdf
%
%
% qn
%
/qn {
	6a exch get mul
} bdf
%
%
% constants?
%
/qA .166667 def
/qB .833333 def
/qC .5 def
%
%
% qx -
%
/qx {
	6a astore pop
	qA 0 qn qB 2 qn add   qA 1 qn qB 3 qn add
	qB 2 qn qA 4 qn add   qB 3 qn qA 5 qn add
	qC 2 qn qC 4 qn add   qC 3 qn qC 5 qn add
} bdf
%
%
% qp -
%
/qp {
	6 copy 12 -2 roll pop pop
} bdf
%
%
% qc -
%
/qc {
	exch qp qx curveto
} bdf
%
%
% qi -
%
/qi {
	{ %ifelse
		exch 4 copy 2a astore aload pop qa .5 qm newpath moveto
	}{
		exch 2 copy 6 -2 roll 2 qm qs 4 2 roll
	} ifelse
} bdf
%
%
% qq -
%
/qq {
	{ %ifelse
		qc 2a aload pop qx curveto
	}{
		exch 4 copy qs qa qx curveto
	} ifelse
} bdf
%
%
% pt -
%
/pt {
	currentpoint newpath moveto
} bdf
%
%
% qf -
%
/qf {
	/fillflag true def
} bdf
%
%
% ec -
%
/ec {
	1 and 0 ne { %if
		0 doop
	} if
	grestore currentpoint newpath moveto
	/fillflag false def
} bdf
%
%
% eu -
%
/eu {
	currentpoint fp { %ifelse
		 0 ep 
	}{
		 grestore newpath
	} ifelse moveto
	/fillflag false def
} bdf
%
%
% bp -
%
/bp {
	currentpoint newpath 2 copy moveto
} bdf
%
%
% ef -
%
/ef {
	gsave fillflag { %if
		gsave eofill grestore
	} if
} bdf
%
%
% sm -
%
/sm {
	0 exch { % forall
		@1 eq { %if
			1 add
		} if
	} forall
} bdf
%
%
% lshow -
%
/lshow {
	4 1 roll exch /@1 exch def { %ifelse
		1 index wi pop sub 1 index sm dv 0 @1 4 -1 roll widthshow
	}{
		1 index wi pop sub 1 index dup sm 10 mul exch length
		1 sub add dv dup 10. mul 0 @1 4 -1 roll 0 6 -1 roll awidthshow
	} ifelse
} bdf
%
%
% Set Text Mode?
% Stash arg into sa[9], if 3 then white else black
%
% int setTxMode -
%
/setTxMode {
	sa 9 2 index put
	3 eq { %ifelse
		1
	}{
		0
	} ifelse setgray
} bdf
%
%
% SwToSym -
%
/SwToSym {
	{} mark false /Symbol /|______Symbol 0 rf
	0 sa 6 get 0 ne { %ifelse
		pop 1
	}{
		sa 7 get 0 eq { pop 2 } if
	} ifelse
	sa 1 get 0 ne /|______Symbol
	sa 4 get 0 ne { %ifelse
		vs
	}{
		 sa 3 get 0 ne { vo } { fnt } ifelse
	} ifelse
} bdf
%
%
% mc -
%
/mc {
	0 3 1 roll transform neg exch pop
} bdf
%
%
% Something about underlining???
%
% - ul -
%
/ul {
	dup 0 ne sa 2 get 0 ne and { %ifelse
		gsave 0 0
		/UnderlinePosition  kif { mc } { ps -10 div } ifelse
		/UnderlineThickness kif { mc } { ps  15 div } ifelse
		abs setlinewidth neg rmoveto
		sa 4 get 0 ne{ %if
			gsave currentlinewidth 2. div dup rmoveto
			currentpoint newpath moveto 2 copy rlineto
			stroke grestore
		} if
		sa 3 get sa 4 get or 0 ne { %ifelse
			gsave
				gl 2 copy rlineto stroke
			grestore
			rlineto strokepath nlw pys div setlinewidth
		}{
			rlineto
		} ifelse
		stroke grestore
	}{
		pop
	} ifelse
} bdf
%
%
% sgt -
%
/sgt {
	2 copy known { %ifelse
		get true
	}{
		pop pop false
	} ifelse
} bdf
%
%
% kif -
%
/kif {
	currentfont dup /FontMatrix get exch /FontInfo sgt { %ifelse
		true
	}{
		currentfont /df sgt { %ifelse
			dup /FontInfo sgt { %ifelse
				3 1 roll/FontMatrix get mtx
				concatmatrix exch true
			}{
				pop pop pop false
			} ifelse
		}{
			pop pop false
		} ifelse
	} ifelse
%
	{ %ifelse
		3 -1 roll sgt { %ifelse
			exch true
		}{
			pop false
		} ifelse
	}{
		false
	} ifelse
} bdf
%
%
% blank -
%
/blank /Times-Roman findfont /CharStrings get /space get def
%
%
% setup Macintosh characterset encoding.
%
/macvec 256 array def
%
/NUL /SOH /STX /ETX /EOT /ENQ /ACK /BEL /BS /HT /LF /VT /FF /CR /SO /SI
/DLE /DC1 /DC2 /DC3 /DC4 /NAK /SYN /ETB /CAN /EM /SUB /ESC /FS /GS /RS /US
macvec 0 32 getinterval astore pop
macvec 32 /Times-Roman findfont /Encoding get
32 96 getinterval putinterval macvec dup 39 /quotesingle put 96 /grave put
/Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute
/agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave
/ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde
/oacute /ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex 
/udieresis /dagger /degree /cent /sterling /section /bullet /paragraph
/germandbls /registered /copyright /trademark /acute /dieresis /notequal /AE
/Oslash /infinity /plusminus /lessequal /greaterequal /yen /mu /partialdiff
/summation /product /pi /integral /ordfeminine /ordmasculine /Omega /ae /oslash
/questiondown /exclamdown /logicalnot /radical /florin /approxequal /Delta
/guillemotleft /guillemotright /ellipsis /blank /Agrave /Atilde /Otilde /OE /oe
/endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /divide
/lozenge /ydieresis /Ydieresis /fraction /currency /guilsinglleft
/guilsinglright /fi /fl /daggerdbl /periodcentered /quotesinglbase
/quotedblbase /perthousand /Acircumflex /Ecircumflex /Aacute
/Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex
/apple /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde
/macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
macvec 128 128 getinterval astore pop
%
{} mark true /Courier /|______Courier 0 rf
{ %def
	/Metrics 21 dict begin
		/zero 600 def
		/one 600 def
		/two 600 def
		/three 600 def
		/four 600 def
		/five 600 def
		/six 600 def
		/seven 600 def
		/eight 600 def
		/nine 600 def
		/comma 600 def
		/period 600 def
		/dollar 600 def
		/numbersign 600 def
		/percent 600 def
		/plus 600 def
		/hyphen 600 def
		/E 600 def
		/parenleft 600 def
		/parenright 600 def
		/space 600 def
		currentdict
	end
	def
	currentdict /UniqueID known { /UniqueID 16#800000 def } if
	/FontBBox FontBBox 4 array astore def
} mark true /Helvetica /|______Seattle 1 rf
/oldsettransfer /settransfer load def
%
%
% concatprocs - concatenate two PostScript procedures.
%
/concatprocs {
	/proc2 exch cvlit def
	/proc1 exch cvlit def
	/newproc proc1 length proc2 length add array def
	newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval
	newproc cvx
} def
%
%
% settransfer
%
/settransfer { currenttransfer concatprocs oldsettransfer } def
%
%
% PaintBlack -
%
/PaintBlack {
	{1 exch sub} settransfer
	gsave
		newpath clippath 1 setgray fill
	grestore
} def
%
%
% od - Open Document (no arguments)
%
/od {
	(Rvd\001\001\000\000\177) fg copy pop txpose
	1 0 mtx defaultmatrix dtransform exch atan /pa exch def
	newpath clippath mark
		{ transform { itransform moveto } }
		{ transform { itransform lineto } }
		{ %pathforall
			6 -2 roll transform
			6 -2 roll transform
			6 -2 roll transform {
				itransform 6 2 roll itransform 6 2 roll 
				itransform 6 2 roll curveto
			}
		}
		{ { closepath } }
		pathforall
	newpath counttomark array astore /gc xdf pop ct 39 0 put
	10 fz 0 fs 2 F /|______Courier fnt invertflag { PaintBlack } if
} bdf
%
%
% cd - Close Document (no arguments)
%
/cd {} bdf
%
%
% op - Open Page (no arguments)
%
/op {
	/sfl false def
	/pm save def
} bdf
%
%
% cp - Close Page
%
% bool bool - cp
%
/cp {
	not { userdict /#copies 0 put } if
	ma 0 gt { %if
		{ %loop
			t1 the { exit } if
		} loop
	} if
	{ copypage }{ showpage } ifelse
	pm restore
} bdf
%
%
% px -
%
/px { 0 3 1 roll tp tt } bdf
%
%
% psb -
%
/psb { /us save def } bdf
%
%
% pse -
%
/pse { us restore } bdf
%
%
% ct
%
/ct 40 string def
%
%
% nc - something to do with path
%
/nc {
	currentpoint initclip newpath
	gc { %forall
		dup type dup /arraytype eq exch/packedarraytype eq or { %if
			 exec
		} if 
	} forall
	clip newpath moveto
} def
%
%
% kp - something to do with path...
%
/kp {
	ct 0
	2 index length
	2 index 39
	2 index put
	getinterval copy cvx exec
	mx3 currentmatrix pop
} bdf
%
%
% av
%
/av 68 def
%
% End for "md begin" above
%
end
%
%
% If not already known, define a4small procedure.
%
LW 1 eq userdict /a4small known not and { %if
	/a4small [
		[300 72 div 0 0 -300 72 div -120 3381]
		280 3255 { %framedevice
			statusdict /jobstate (printing) put 0 setblink margins
			exch 196 add exch 304 add 8 div round cvi frametoroket
			statusdict /jobstate (busy) put 1 setblink
		} /framedevice load
		60 45 { %def
			dup mul exch dup mul add 1.0 exch sub
		} /setscreen load
		{} /settransfer load /initgraphics load /erasepage load
	] cvx
	statusdict begin bind end readonly def
} if
%
%
%
%
md begin
%
/bigs [ lnop
	userdict /letter known { /letter load } { lnop } ifelse
	userdict /legal  known { /legal  load } { lnop } ifelse
	userdict /a4     known { /a4     load } { lnop } ifelse
	userdict /b5     known { /b5     load } { lnop } ifelse 
	lnop lnop lnop /tab load
] def
%
/smalls [ lnop
	userdict /lettersmall known { %ifelse
		/lettersmall load
	}{
		userdict /note known {/note load} {lnop} ifelse
	} ifelse
	userdict /legal   known { /legal   load } { lnop } ifelse
	userdict /a4small known { /a4small load } { lnop } ifelse 
	userdict /b5     known  { %ifelse
		/b5 load
	}{
		userdict /note known { /note load } { lnop } ifelse
	} ifelse
	lnop lnop lnop /tab load
] def
%
% end for md begin
%
end
%
%
% restore packing saved on stack above.
%
systemdict /currentpacking known { setpacking } if
%
%
%
% not sure i want to fool around with this...
%
currentfile ok userdict/stretch known not and{eexec}{2431{currentfile read pop pop}repeat}ifelse
373A767D4B7FD94FE5903B7014B1B8D3BED02632C855D56F458B118ACF3AF73FC4EF5E81F5749042B5F9CF1016D093B75F250B7D8280B2EACE05A37037F7BDF6E12226D7D4E2DF2C52FAFD5FD40FE72A0D3AC4BD485D8369D4C87636E920D1DAF222D92155A9CB1667E715F0B82799B37CC8F5B32B74B39CF494536DC39C7EF04A7BCB29E2CEC79073CADCCFB23B4AA1363F876F5121B618071B7B4EB1E5DE75FAA2368A3E5DB2B198623AFE92AE9484270FE7F57A850E88C0D3EEA156611C91D8E480D4370B025CCA6929A2BF40AD3D01B2CB7EE6DFB46E12A830542337F7819B67F9765210F76DB06F34DA5B13A11759305C582E16D2B854939F6D9121F2A



4F285282F5DCD3D15896D121E3D6F5BE79E087451BB0ED233CDBEF090D3B4AC2DC34B97E70C61D95FB072B8C12D2ABD843520949A39DCF99E2C1AA8FBCD025E47E0A82A8D96E75BAF40F52AD402495BBD4DE0F356C8B14E764874E639C9F045A0D1908EC6456EB6C5B8A6F826192F767EF2C55A21C58F5F9CC1F59247B55F2387828C7FE89D5E7D8484D1BC86CB6673BDBE4FE17DD9BDE95224FE645136F41330BF155A4DDE1B0A32233BF471CE58FBC660DC7E641B0A0D30018454E2191C414A3011FF3FED1C0D88FE1FF9F75DCC456D097947226FBEC92509146D3A4CFFC0471B31C53222ED9DD88566F60F6C0D705AD79DACF53B070026F083ED28B5CF75



7AAA0A169F6F320A75E9D2ED50ABD939AF85B6346C2ADB25D168F10508E1516D194C635E6B187FADEA0829DBF0390C0F003F0265E215BC96CA3CC13D4A8E01570BE193CA75A620728CD275ACF1986EFFB3A13419FE55EA7C4467B7E7EEDC1FC29C9F8C46A557D2CCDB914EF7B93E7530D555DFC2398AFC68CAD991F062EF85BAA1884EC166C7C5DF8543666D8C41BE267D706BD1588F1F662F705CAE4D29DC38EF66BFAA89470D8A099B6F1B4587F7B024412276106FCD3EB5AE17A5D1DF1781992DC40EA0A992F706F701304CEA9D9073E7A74F1E687D81C3E5841D31CF86855BAAAD9B5D30317C75150A857C6B114735315CDD1AEF36C26BBB0645499406D



EE2F24B3B1C72FEC97C7BA31AA2CDAB25418BB1DC4C7E4757F1D625087B0FD0300C03A65F2A72CE734925735277E034CDCF599129679F70CC8B66E03878851DB75041F275E1E5761F3EC753BE1359CA364A22047AE4886217F9259FE19FF5B116E8019B98B143114B313E8BEF87EC949D85C82E0812E6F50525E73890AF362CC8EE8A85F4197E6AC18638EF12E56A808D439AF1BFD363F140314BF4E534485C42F1856688CC35288E8D770120A420FB9F1FCF8AE8BD6D6156CC23E6C51119FE4DE1B68C9DF3487E9974BF9ED31F8D3CE93FF101867319F2FF492D5D398B4F09A66F2F55BCAB34B99173B7EE89039D00DD21A7B3A52E9F028F8301B5FC12D409



412E064513BC579AAC498F577EA8ECD1FE3E42DC3CC320786C7B00194FEDF344402C33FC492D4BA86992B01683F440220FFE756BC88A94223D316078D69D33560E8EAB76B24CB7AA4320CF435593D76F624324ABE00B5587A4F283C725EA24567133F25F472B5E2E4474DDB5A16AC5F2DF32350395D3E3892FE361F4D5C9A610C654C9227614FBBAFF3356A90A2266E00F66234061075491571A65616211257F160000000000000000000000000000000000000000000000000000000000000000
currentfile ok userdict/smooth4 known not and{eexec}{5455{currentfile read pop pop}repeat}ifelse
F94E00EE41A71C59E5CAEED1EDBCF23D1DBA1EE99B9BB356492923BD8B1BA83A87CEB0E07377A31FD6241E814681118E17DC7CACE570399506E6E441B871B6043831BD03EFC11DBBD8001EE2FF8CFBD485065D455A2E15AC36F1A84AD8789FA6461199C7CD14CB9FD64D4B06452B7FC0A8FC263F70F1CCB893295D4DE70ADAB771C0F84396FA98C60B11DA02ABA157298DF0A23621853BEF167443A985ADC09BEFFD51CB4D29179E2B34609EF38A49DA61F4BFC256A3DE0732D7D29754A194857B9C9E9971227AA1DD0611FBB10E44E5FF66C062D9C24ED3290529330BC317825E876929582DB0E39B9FC5EFD20CC1D4F94920EB9C534D0DA90DE70D25BC728



7319CF28602B3F46633C242CAFC8905E960317E3C2FA20AB8DB06ADBAF292FC7BA2CA14EE65DF28B99CC11666B70AD33E8E1D57D63D4B89ECC615AE5747C1CA752C833D8D6DE54CD4A0350B44310555CE3BD2C615ADD27B634CDB350AF3A432CE78AACD2909A5B586F666CD87919A36DB1CBE86B3CE281DFD01CD7E1B8A18A4B415CECBFF79A5C4390A15EA77D14D6BE12BAB5A8268C3F286D0590060647CABED674443CD258F11415E866AB330A251691B61F2422A61AFE59B6B4FBDCF85ED9BA0F8E483C034089E6877FF5923698D3A0DC0EED6B9CFD32DF0839BC4EA5F6D1FCB6DD0920391E57E84745131D02D100179F4E0A68EC0A5FF6680A6F463D038



B04AF63FFA13D743B995A26A743C26D387209023C91DE43DF047A16F328AC9DDC08573B38BE9EA341EA16C78EC32F3A1B36B90D95A50610F4D050EC1C33497F3F3A81A1B4C8BEF0BA84EE2FAA32DC112DAC490AF53E1749C4A0D866CAF7B893E52383B0D38065C333FB122B700D7246F7EE87D942AE3DB5C1DD77E9E76C80CC5AD63D28DFED0E229CE604673F78CD47F258FDF5BF3A3EAEC5C9BC8E482D8DBA9D268A35DA8C095A690679ED2123E8B8F5E4826FA3B199EAA5D482D4B6AA86572E387CECEB7149C8947F41D6339328A748A17F8C4AD3B0555F1E409450BA0C564F1F488BB5096EB003568D4D5EF6489897E27409547D0EE4487D30184793B0F2



7BD265A64BDB3EA6761569DA955620C612E718677B77D6D81B999C6298877AFE0D1D6F6F358377A8BD2402F669C64B972B3A065EF7DD4BDEFFFE17E63DB8898FA6E69166B710AAD6BA2EA9AF61E4B8C8701638D4D6E4DFFFC192AEF6BC027095C4C72D748979675BA29FAF61E75343E14E61034602E5A79CD2519796ED6A9CC4EDEA46A9B59D4A807E786B5EE46F25B0360BC8E7C12D723122CDEEF247C9776F4C99C8EBED6828AA19744B5ADF0D07D95D98B3072372388D41B0FAB1CCE2775170679575ECDCA13B22A17FE9C6605C3445F58F1A829512DAB6C528F83580C8AA53C35D605F626F5AD0B7FC1EA87D69A835E3F53A1F450FB0AF42A5772F89D92



A50D10F15BDBDA409F50C0B8AB93FE8A16D029DD8BB5C480D1466735ED4D9CAF637E5ECD6C2ECB6BF3B3EFBEE7AB936D2C568E3009D156B87CACB1FB3A48A70BC91B2EC35CC9147FFB1A524E2B2F2E4E2C1B12F1C1C63768BB95CD62FEC01CBA79B9FA282DD4DF49990F27FF8EE4E2DDE2F0ACD83BC9D4BE0090192C7A799967EC4DC2D63C0835E22D4C4B366D7FDCF3A05A4B53DF780F986EF25C79B665D5C00EFF7F17C0BB6D544F9D83A7FDAC47D9C5683A656011374253C918FF6EA64749DD971B2300DD5320033E01EC591F6318CCE94CE2B81C04322EC52B624E50643B52391CCD2AB56396A2AD8E2D3CA61B80D9D4CC363B2DF7863526958CDF3497E



36648406C317E58EC563E7C26149A2A3C643ADFB39A8DD92974C6D2A2A9D7B71CDF3FEBBF32BB02E7B45CF53AAEAD5E963A4AA4AF9A149A08A4EC303D5F2369977E93F54897EEAD31B06C5845D63F49D65F8E5573962241A57CCD717CE6CA8C784A11192943616EA059B51BC38429E18D0121FCBB6FBD5D909B0D89E616C66DEF6A0F165A7030BD911A1B120468329CBB006C8D37720E531CF31E878CB4AAAC137633675C3D546F5162487AB35F470C042BDEB945E0F2532BF92AA6FD53434440221ECD3533A7AA89900CB19EFE2CD872DF8B7969AF0D3B72BF31DC5DD69CA6460966F61AB17CB507964098DBA3AF122EEC3128A9BAFE1034493F372B36BD13



51205E9043A67C544402D8BCE24358C8A5CE33867A00794CF7097D59C88279A11EE9C854E7E7AAE881F9828C569D208F5F33375F59E9A3818CFA38AAD0CBFBA32F9F44A8BB79DE4C40E3886457C16DA4A27953AA1E99472E35F2323F0BAA5E37DC28CBA46FEFB73B190016055ADD4D27615D748499A0E1C4B8C7EC339C1C4D95A813A85918A8D01EEB485DDCDCEA6EA3F2C2A9D85C139CD90CCB352634F9AFE836BCAC0C274E352BA2071B5269D5DE4CCDE3FF990CBA974980C7332AE1545A9C60D5D1459D3AE95C1AC065733AF14FADB440A110DD539563B8D850CD0704C52F3F7CCCB53630D776560CBD22D8FF08F5B354487A171AEC15F5F54DE9CAB668B



CAC573E788D92762EF63E76087005F4AC2D02E0CAC173C11BE62ACE5DC4D3374F2F9746C9981E125FF9AB8CAE76D13039E2C54DFD708E028A619EA1ED78E6B46F06DF0D0B74BBEDD8C190C7C0CEBDE8F7A4888CC36575313478DD2CFE392E9BB7B2416955D44B7024A3BA43FBF37293B386D64746D7748895411D243FAEC50638F2AA33337D7FA018ADDAC5835A0DDFAE99AD6299DFB4CA6872C59853E3AC12FC9E3D26629C5B49CF844C87B3C4BFBE3074E3A1CE6984758C20C661084381CD6B4582D84F19C0000B5FC0DCB42B567E396031601C095D7016283EBE5F13CD8A3A374A74DDBBABD36081149F8BC242085F2F7297CC97FD3B8BAD206D8AC9707A



39ECCC7963B522E08DA391A1EF12DD4D746DBDDDCC0834F88160CF189A9645567CEC2F023A571AF0DFD15DB85B744C28C000DF53B05F8F210841F6E87A04F20C777B7C0BE6182BE2E90226E5301A12532A745F2FAAA81637CF11B78CD2B99A4D18B862D6C5DBD31793FB16A2D9AAD376D4484D75AA833D0068B1D34DB74E3302480854E3B5484D8A47E39A89A2FA927BC3641EA7F8E004FDE4C2F08D40D99F1ACB47CAF6887629BF6DFE12968D297596D28CE0CF148B12E7DCB49FB94F5ADBD214C3A6CE1E249831BA9EB8A189F2CE1ABE39A7B537253E369A508A2AF2ADB9463F9B56BBBFF31D535FF997F537C6675C196E7ECBD493F652FA7CC6D9C1CA337



9BFDB5AF7513C6E834054494296B91A6EE800114363D5D5D0759F41B4DECB653B9DE3E94583579EF549ED5F3FAFB12661ABC0C57A332406517ED3454EDED34B386C60F78DC976266E0EAF54FC245FB0E3EFC8016236436B599C1C97A8C5E0AC8F7836161873C71F01ED9CC25C236420F41FD8277993D3959205912FA0927B59E3DAE7377D82079447D6E41EE5AEC0DFFF79AF8F4ED47F17EE708FEA45877860D56F8CBCE65A061E8E1CA4A5FBAF0E13429A7F0ADB6F178FA449F46CC539BBC0107E3A53B1C362A04B20E6D721E7E6E1E4976A11DDC98C7614D22B53DFBB6DAE533AC9BE882021A735C30DAA4A44AED09F49A390E8CFF59BD9C30667AF21B03E



C5CEBD5C2C3AA2769E8D714191A48E7DDF50B13D1560E82EFB65FCE601AE9E8C351FBA1DED80B7351314E7F9F9A784BFE3759B7E322A84E7B51F9DC5F5D9C8050CD79B27C0A4B0DD68A3C27A948AD6858E35B960D2DEA838C479CAEA83B1A912174ACB2100E55E7A14892D7A9B3711FF0B20065C1995B49E1F23464A92DD140642E3A7B1973849E64D1A3CF60000000000000000000000000000000000000000000000000000000000000000
%%EndProcSet

%%EOF
@eof
-- 
Copyright 1987 Ben Cranston (you may redistribute ONLY if your recipients can).
       umd5.UUCP    <=      {seismo!mimsy,ihnp4!rlgvax}!cvl!umd5!zben
zben @ umd2.UMD.EDU         Kingdom of Merryland UniSys 1100/92
       umd2.BITNET          "via HASP with RSCS"