Article View: comp.protocols.appletalk
Article #5522Re: Mac PostScript Question (*LONG*)
From: Ben Cranston
Date: Fri, 17 Feb 1989 02:38
Date: Fri, 17 Feb 1989 02:38
2222 lines
44839 bytes
44839 bytes
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"
Technical Details
Message-ID:
<4536@umd5.umd.edu>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!purdue!haven!umd5!zbenReferences:
<914@amethyst.ma.arizona.edu>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!purdue!haven!umd5!zben From: zben@umd5.umd.edu (Ben Cranston) Newsgroups: comp.protocols.appletalk Subject: Re: Mac PostScript Question (*LONG*) Summary: Enclosed find hacked Mac Postscript Prolog Message-ID: <4536@umd5.umd.edu> Date: 17 Feb 89 02:38:33 GMT References: <914@amethyst.ma.arizona.edu> Reply-To: zben@umd5.umd.edu (Ben Cranston) Distribution: usa Organization: University of Maryland, College Park Lines: 2166