/Min{2 copy gt{exch}if pop}bind def/NumSteps{sub 3 1 roll sub dtransform
matrix defaultmatrix idtransform dup mul exch dup mul add sqrt currentscreen
pop pop 72 exch div div}bind def/S_eoclip{currentflat{{eoclip}stopped{dup
currentflat exch sub 20 gt{([Error: PathTooComplex; OffendingCommand: eoclip
]\n) print flush exit}{currentflat 2 add setflat}ifelse}{exit}ifelse}loop
setflat}bind def/S_clip{currentflat{{clip}stopped{dup currentflat exch sub
20 gt{([Error: PathTooComplex; OffendingCommand: clip]\n) print flush exit}
{currentflat 2 add setflat}ifelse}{exit}ifelse}loop setflat}bind def
/S_eofill{currentflat{{eofill}stopped{dup currentflat exch sub 20 gt{(
[Error: PathTooComplex; OffendingCommand: eofill]\n) print flush exit}
{currentflat 2 add setflat}ifelse}{exit}ifelse}loop setflat}bind def
/linearfill{pathbbox/ury exch def/urx exch def/lly exch def/llx exch def
{S_eoclip}{S_clip}ifelse/eB exch def/eG exch def/eR exch def/sB exch def/sG
exch def/sR exch def/endY exch def/endX exch def/startY exch def/startX exch
def startX endX eq startY endY eq and sB eB eq sR eR eq and sG eG eq and or
{sR sG sB C newpath llx lly urx ury Bx S_eofill}{endX startX sub dup mul
endY startY sub dup mul add sqrt/distance exch def endY startY sub endX
startX sub atan newpath llx lly urx ury Bx startX startY translate rotate
pathbbox/ury exch def/urx exch def/lly exch def/llx exch def eR eG eB C
newpath llx lly urx ury Bx S_eofill sR sG sB C newpath llx lly 0 ury Bx
S_eofill eR sR sub abs eG sG sub abs Max eB sB sub abs Max endY startY endX
startX NumSteps Min 256 Min ceiling 1 Max/Steps exch def/incR eR sR sub
Steps div def/incG eG sG sub Steps div def/incB eB sB sub Steps div def/incD
distance Steps div def/startX 0 def 0 1 Steps 1 sub{sR sG sB C/sR sR incR
add def/sG sG incG add def/sB sB incB add def newpath startX lly startX incD
add dup/startX exch def ury Bx S_eofill pop}for}ifelse}bind def/radialfill
{pathbbox/ury exch def/urx exch def/lly exch def/llx exch def{S_eoclip}
{S_clip}ifelse/eB exch def/eG exch def/eR exch def/sB exch def/sG exch def
/sR exch def/endY exch def/endX exch def/startY exch def/startX exch def
startX endX eq startY endY eq and sB eB eq sR eR eq and sG eG eq and or{eR
eG eB C newpath llx lly urx ury Bx S_eofill}{endX startX sub dup mul endY
startY sub dup mul add sqrt/distance exch def eR eG eB C newpath llx lly urx
ury Bx S_eofill eR sR sub abs eG sG sub abs Max eB sB sub abs Max endY
startY endX startX NumSteps Min 256 Min ceiling 1 Max/Steps exch def/incR eR
sR sub Steps div def/incG eG sG sub Steps div def/incB eB sB sub Steps div
def/incD distance Steps div def/distance 0 def 0 1 Steps 1 sub{sR sG sB C/sR
sR incR add def/sG sG incG add def/sB sB incB add def newpath startX startY
distance 0 360 arc closepath distance incD add dup/distance exch def 0
rmoveto startX startY distance 0 360 arc closepath S_eofill pop}for}ifelse
}bind def
