%!PS-Adobe-2.0 %%Creator: dvips(k) 5.96dev Copyright 2007 Radical Eye Software %%Title: C:/Dokumente und Einstellungen/Eibach/Desktop/Theo2/uebung2x.dvi %%CreationDate: Fri Apr 25 10:02:21 2008 %%Pages: 1 %%PageOrder: Ascend %%BoundingBox: 0 0 595 842 %%DocumentFonts: CMR12 CMTI12 CMBX12 CMMI12 CMR8 CMSY10 CMSY8 MSBM10 %%+ CMMI8 %%DocumentPaperSizes: a4 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: "C:\Programme\MiKTeX 2.7\miktex\bin\dvips.exe" -P pdf %+ "C:/Dokumente und Einstellungen/Eibach/Desktop/Theo2/uebung2x.dvi" %DVIPSParameters: dpi=8000 %DVIPSSource: TeX output 2008.04.25:1002 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: alt-rule.pro 0 0 %! % Patch by TVZ % Makes dvips files draw rules with stroke rather than fill. % Makes narrow rules more predictable at low resolutions % after distilling to PDF. % May have unknown consequences for very thick rules. % Tested only with dvips 5.85(k). TeXDict begin /QV { gsave newpath /ruleY X /ruleX X Rx Ry gt { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } ifelse setlinewidth 0 setlinecap stroke grestore } bind def end %%EndProcSet %%BeginProcSet: pstricks.pro 0 0 % $Id: pstricks.pro 10 2008-01-18 13:31:24Z herbert $ % % PostScript prologue for pstricks.tex. % Version 1.03, 2008/01/01 % For distribution and copyright, see pstricks.tex. % % systemdict /.setopacityalpha known not {/.setopacityalpha { pop } def } if systemdict /.setblendmode known not {/.setblendmode { pop } def } if systemdict /.setshapealpha known not {/.setshapealpha { pop } def } if % /tx@Dict 200 dict def tx@Dict begin /ADict 25 dict def /CM { matrix currentmatrix } bind def /SLW /setlinewidth load def /CLW /currentlinewidth load def /CP /currentpoint load def /ED { exch def } bind def /L /lineto load def /T /translate load def /TMatrix { } def /RAngle { 0 } def /Sqrt { dup 0 lt { pop 0 } { sqrt } ifelse } def % return 0 for negative arguments /Atan { /atan load stopped { pop pop 0 } if } def % return 0 if atan not known /ATAN1 {neg -1 atan 180 sub } def % atan(x) (only one parameter) /Div { dup 0 eq { pop } { div } ifelse } def % control the division /tan { dup cos abs 1.e-10 lt { pop 1.e10 } % return 1.e10 as infinit { dup sin exch cos div } ifelse % default sin/cos } def /Tan { dup sin exch cos Div } def % sin(x)/cos(x) x in degrees /Acos {dup dup mul neg 1 add dup 0 lt { % arc cos, returns 0 when negative root pop pop 0 }{ sqrt exch atan} ifelse } def /NET { neg exch neg exch T } def % change coordinate system to the negative one /Pyth { dup mul exch dup mul add sqrt } def % Pythagoras, expects 2 parameter /Pyth2 { % Pythagoras, xA yA xB yB 3 -1 roll % xA xB yB yA sub % xA xB yB-yA 3 1 roll % yB-yA xA xB sub % yB-yA xA-xB Pyth } def /PtoC { 2 copy cos mul 3 1 roll sin mul } def % Polar to Cartesian %----------------- hv added 20050516 --------------- /PiDiv2 1.57079632680 def /Pi 3.14159265359 def /TwoPi 6.28318530718 def /Euler 2.71828182846 def %/e Euler bind def /RadtoDeg { 180 mul Pi div } bind def % convert from radian to degrees /DegtoRad { Pi mul 180 div } bind def % viceversa %----------------- hv end--------------------------- /PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def } def /PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def }{ /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ } /pathforall load stopped { pop pop pop pop } if z } def /STP { .996264 dup scale } def /STV { SDict begin normalscale end STP } def % %%-------------- DG begin patch 15 ---------------%% %/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def %PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y %mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul %/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ] %0 } ifelse setdash stroke } def /DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def PathLength } ifelse /b ED /x1 ED /y1 ED /x ED /y ED /z y x add y1 add x1 add def /Coef b a .5 sub 2 mul y mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div def /y y Coef mul def /x x Coef mul def /y1 y1 Coef mul def /x1 x1 Coef mul def x1 0 gt y1 0 gt or x 0 gt or y 0 gt and { [ y x y1 x1 ] 1 a sub y mul } { [ 1 0 ] 0 } ifelse setdash stroke } def %%-------------- DG end patch 15 ---------------%% /DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt { /b b a div def }{ a 0 eq { /b b y sub def }{ a -3 eq { /b b y add def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if ] a 0 gt { 0 }{ y 2 div a -2 gt { neg }if } ifelse setdash 1 setlinecap stroke } def % /LineFill { % hv ------------ patch 7 ------------- gsave abs /hatchWidthInc ED abs /hatchSepInc ED abs CLW add /a ED a 0 dtransform round exch round exch 2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25 itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict /setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1 a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add hatchWidthInc 0 gt { CLW add } if def hatchSepInc 0 gt hatchWidthInc 0 gt or { /a a hatchSepInc add def CLW hatchWidthInc add SLW } if } repeat grestore pop pop } def % %gsave abs CLW add /a ED a 0 dtransform round exch round exch %2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25 %% DG/SR modification begin - Dec. 12, 1997 - Patch 2 %%itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a %itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a %% DG/SR modification end %Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict %/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1 %% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) %% a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore } %% def %a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore %pop pop } def %% DG/SR modification end % /BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg exch 3 index sub exch Atan rotate newpath } def % /EndArrow { @mtrx setmatrix CP grestore end } def % /Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1 scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill grestore } def % /ArrowD { % the sides are drawn as curves (hv 20071211) CLW mul add dup 2 div /w ED mul dup /h ED mul /Inset ED { 0 h T 1 -1 scale } if % changes the direction % we use y=w/h^2 * x^2 as equation for the control points % for the coordinates the arrow is seen from top to bottom % the bottom (tip) is (0;0) w neg h moveto % lower left of > w 9 div 4 mul neg h 3 div 2 mul w 9 div neg h 3 div 0 0 curveto % tip of > w 9 div h 3 div w 9 div 4 mul h 3 div 2 mul w h curveto % upper left of > w neg Inset neg rlineto % move to x=0 and inset gsave fill grestore } def % /Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0 CLW moveto } def % /Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2 div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0 CLW moveto } def % /RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW 2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0 curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto } def % /SD { 0 360 arc fill } def % /EndDot { % DS is the dot size { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def % /Shadow { [ { /moveto load } { /lineto load } { /curveto load } { /closepath load } /pathforall load stopped { pop pop pop pop CP /moveto load } if ] cvx newpath 3 1 roll T exec } def % %/NArray { % aload length 2 div dup dup cvi eq not { exch pop } if /n exch % cvi def %} def % /NArray { % holds the coordinates and on top of stack the showpoints boolean /showpoints ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if showpoints { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def /Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def /Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 } ifelse { pop } repeat a } def /CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq and { pop pop /n n 1 sub def } if } def /Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop } repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1 ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto Lineto pop pop closepath } ifelse } def /Diamond { /mtrx CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul neg /d ED /a w h Atan def /h d a sin Div h add def /w d a cos Div w add def } ifelse mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 div /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx setmatrix } def % DG modification begin - Jan. 15, 1997 %/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq { %pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 %div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0 %d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx %setmatrix } def /Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 div dup cos exch sin Div mul sub def mark 0 d w neg d 0 h w d 0 d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx % DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) % setmatrix } def setmatrix pop } def % DG/SR modification end /CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth def } def /CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth def } def /CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1 def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def /y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul m mul neg def } def /IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def } def /BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def /NC { CC x1 y1 x2 y2 x y curveto } def /EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def /BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def /NAC { x2 y2 x y curveto CC x1 y1 } def /EAC { x2 y2 x y ArrowB curveto pop pop } def /OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def n { NC } repeat EOC } ifelse } def /AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload /Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def /ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt { CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC } repeat closepath pop pop } ifelse } def /SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def /ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def /SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore } def /FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix rotate matrix concatmatrix exch findfont exch makefont setfont } def /Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto x1 y1 lineto closepath } def /OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1 y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse /b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath } ifelse } def /Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add /y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq { pop pop Rect } { OvalFrame } ifelse } def /BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def /OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6 2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto } ifelse } def /ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv { 6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def /BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1 sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore } def /Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1 sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0 y0 x0 2 mul x1 sub y1 ] def } def % /Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 } if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if /dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def % /Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def } if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def } { /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1 dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt { dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt { pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg}{z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i w add def } repeat grestore gsave n 0 gt % DG/SR modification begin - Nov. 7, 1997 - Patch 1 %{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash } { 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash } % DG/SR modification end { 2 setlinecap } ifelse /i y1 def /f x1 dx mul n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop 1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt {z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g exch t L stroke /i i h add def } repeat grestore } def % /ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0 1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c mul neg d } def % /Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def % /ArcAdjust { %%%% Vincent Guirardel % given a target length (targetLength) and an initial angle (angle0) [in the stack], % let M(angle0)=(rx*cos(angle0),ry*sin(angle0))=(x0,y0). % This computes an angle t such that (x0,y0) is at distance % targetLength from the point M(t)=(rx*cos(t),ry*sin(t)). % NOTE: this an absolute angle, it does not have to be added or substracted to angle0 % contrary to TvZ's code. % To achieve, this, one iterates the following process: start with some angle t, % compute the point M' at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]. % Now take t' (= new angle) so that (0,0) M(t') and M' are aligned. % % Another difference with TvZ's code is that we need d (=add/sub) to be defined. % the value of d = add/sub is used to know on which side we have to move. % It is only used in the initialisation of the angle before the iteration. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Input stack: 1: target length 2: initial angle % variables used : rx, ry, d (=add/sub) % /targetLength ED /angle0 ED /x0 rx angle0 cos mul def /y0 ry angle0 sin mul def % we are looking for an angle t such that (x0,y0) is at distance targetLength % from the point M(t)=(rx*cos(t),ry*sin(t))) %initialisation of angle (using 1st order approx = TvZ's code) targetLength 57.2958 mul angle0 sin rx mul dup mul angle0 cos ry mul dup mul add sqrt div % if initialisation angle is two large (more than 90 degrees) set it to 90 degrees % (if the ellipse is very curved at the point where we draw the arrow, % % the value can be much more than 360 degrees !) % this should avoid going on the wrong side (more than 180 degrees) or go near % a bad attractive point (at 180 degrees) dup 90 ge { pop 90 } if angle0 exch d % add or sub % maximum number of times to iterate the iterative procedure: % iterative procedure: takes an angle t on top of stack, computes a % better angle (and put it on top of stack) 30 { dup % compute distance D between (x0,y0) and M(t) dup cos rx mul x0 sub dup mul exch sin ry mul y0 sub dup mul add sqrt % if D almost equals targetLength, we stop dup targetLength sub abs 1e-5 le { pop exit } if % stack now contains D t % compute the point M(t') at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]: % M(t')= ( (x(t)-x0)*targetLength/d+x0 , (y(t)-y0)*targetLength/d+y0 ) exch dup cos rx mul x0 sub exch sin ry mul y0 sub % stack contains: y(t)-y0, x(t)-x0, d 2 index Div targetLength mul y0 add ry Div exch 2 index Div targetLength mul x0 add rx Div % stack contains x(t')/rx , y(t')/ry , d % now compute t', and remove D from stack atan exch pop } repeat % we don't look at what happened... in particular, if targetLength is greater % than the diameter of the ellipse... % the final angle will be around /angle0 + 180. maybe we should treat this pathological case... % after iteration, stack contains an angle t such that M(t) is the tail of the arrow % to give back the result as a an angle relative to angle0 we could add the following line: % angle0 sub 0 exch d % % begin bug fix 2006-01-11 % we want to adjust the new angle t' by a multiple of 360 so that | t'-angle0 | <= 180 %(we don't want to make the ellipse turn more or less than it should)... dup angle0 sub dup abs 180 gt { 180 add 360 div floor 360 mul sub } { pop } ifelse % end bug fix } def % /EllipticArcArrow { /d ED % is add or sub /b ED % arrow procedure /a1 ED % angle gsave newpath 0 -1000 moveto clip % Set clippath far from arrow. newpath 0 1 0 0 b % Draw arrow to determine length. grestore % Length of arrow is on top of stack. Next 3 numbers are junk. % a1 exch ArcAdjust % Angular position of base of arrow. /a2 ED pop pop pop a2 cos rx mul xOrig add % hv 2007-08-29 x->xOrig a2 sin ry mul yOrig add % hv 2007-08-29 y->yOrig a1 cos rx mul xOrig add % a1 sin ry mul yOrig add % % Now arrow tip coor and base coor are on stack. b pop pop pop pop % Draw arrow, and discard coordinates. a2 CLW 8 div % change value of d (test it by looking if `` 1 1 d '' gives 2 or not ) 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse ArcAdjust % resets original value of d 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse % Adjust angle to give overlap. } def %%------------------ tvz/DG/hv (2004-05-10) end -------------------%% % /Rot { CP CP translate 3 -1 roll neg rotate NET } def % /RotBegin { tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle dup a add ] cvx def } def % /RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ] cvx def } def % /PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def /PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def /PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def /Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse } def /UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q { x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add exch } def /BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible /IfVisible true def } if } { IfVisible { Invisible /IfVisible false def } if } ifelse } def /InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def /Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def /IfVisible true def } def end %-----------------------------------------------------------------------------% % END pstricks.pro %%EndProcSet %%BeginProcSet: pst-algparser.pro 0 0 % $Id: pst-algparser.pro 7 2007-12-29 22:21:13Z herbert $ % % PostScript prologue for PSTricks algorithm parser % Version 0.01, 2008/01/01 % For distribution and copyright, see pstricks.tex. hv@pstricks.de % %-----------------------------------------------------------------------------% /AlgParser { tx@AlgToPs begin AlgToPs end } def % Dominique Rodriguez % /tx@CoreAnalyzerDict 100 dict def tx@CoreAnalyzerDict begin % % PS ANALYZER FOR ALGEBRAIC EXPRESSION V1.12 % E->T|E+T % T->FS|T*FS % FS -> F | +FS | -FS % F->P|F^SF % P->(E)|literal % literal->number|var|var[E]|func(params) % params->E|E,param % number->TOBEFINISHED % %% E expression, T term, SF signed factor, F factor, P power % %% parser % %% str % %% C->EE %% STR index -> STR index+lenExpr /AnalyzeCond { AnalyzeExpr ReadCondOp AnalyzeExpr EvalCondOp } def % %% analyze Expression List (separator , or | ) %% STR index -> STR index+lenExpr %% /AnalyzeListOfE { %% { NextNonBlankChar pop AnalyzeExpr%%dup Strlen eq { exit } if NextNonBlankChar %% NextNonBlankChar dup 0 eq { pop exit } if %% dup 44 ne 1 index 124 ne and { dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse } if %% pop NextNonBlankChar dup 0 eq { exit } if 124 ne { PROBLEMCONTACTBILLOU } if 1 add NextNonBlankChar 0 eq {toto} if } loop %% AnalyzeListOfEPostHook %% } def /AnalyzeListOfE { /NotFirst false def { NextNonBlankChar pop AnalyzeExpr NotFirst { EvalListOfExpr } { /NotFirst true def } ifelse dup Strlen eq { exit } if NextNonBlankChar dup 44 ne 1 index 124 ne and { dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse } if pop 1 add } loop AnalyzeListOfEPostHook } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% E->T|E+T %% STR index -> STR index+lenExpr /AnalyzeExpr { AnalyzePreHook AnalyzeTerm IsEndingExpr { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } { { RollOp 1 add NextNonBlankChar pop AnalyzeTerm PreEvalHook EvalAddSub IsEndingExpr { pop exit } if } loop } ifelse AnalyzePostHook } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% T->FS|T*FS %% STR index /AnalyzeTerm { AnalyzePreHook AnalyzeSignedFactor IsEndingTerm { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } { { RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor PreEvalHook EvalMulDiv IsEndingTerm { pop exit } if} loop } ifelse AnalyzePostHook } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% FS -> F | +FS | -FS %% STR index /AnalyzeSignedFactor { AnalyzePreHook 2 copy get dup IsUnaryOp { RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor EvalUnaryOp } { pop AnalyzeFactor } ifelse AnalyzePostHook } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% F->P|F^P %% STR index /AnalyzeFactor { AnalyzePreHook AnalyzePower IsEndingFactor { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } { { RollOp 1 add NextNonBlankChar pop AnalyzePower PreEvalHook EvalPower IsEndingFactor { pop exit } if} loop } ifelse AnalyzePostHook } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% P->(E)|literal %% STR index /AnalyzePower { %% depending of first char either a number, or a literal 2 copy get dup 40 eq%%an open par { pop 1 add NextNonBlankChar pop AnalyzeExpr 1 add NextNonBlankChar pop } { AnalyzeLiteral } ifelse } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% STR index STR[index] -> STR index %/AnalyzeLiteral { IsNumber { EvalNumber } { EvalLiteral } ifelse } def /AnalyzeLiteral { dup IsUnaryOp exch IsNumber or { EvalNumber } { EvalLiteral } ifelse } def%%dr 09102006 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% recognize + or - %% chr -> T/F /IsUnaryOp { dup 43 eq exch 45 eq or } bind def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% a number can contain only : 0123456789. %% chr -> T/F /IsNumber { dup 48 ge exch dup 57 le 3 -1 roll and exch 46 eq or } bind def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% STR index -> STR index number %% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)? %% STR index -> STR index' number /ReadNumber { exch dup 3 -1 roll dup 3 1 roll %%read mantissa { 1 add 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsNumber not { exit } if pop } loop dup 101 eq exch 69 eq or %%% there is a "e" or "E" -> read exponant { 1 add 2 copy get dup IsUnaryOp { pop 1 add 2 copy get } if { IsNumber not { exit } if 1 add 2 copy get } loop } if dup 4 1 roll 3 -1 roll exch 1 index sub getinterval } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% a number can contain only : 0123456789. %% chr -> T/F /IsCondOp { dup 30 eq exch dup 60 ge exch 62 le and or } bind def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% STR index -> STR index number %% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)? %% STR index -> STR index' number /ReadCondOp { NextNonBlankChar 1 index 4 1 roll { IsCondOp not { exit } if 1 add 2 copy get } loop 2 copy 5 -1 roll exch 1 index sub getinterval 3 1 roll } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% a literal can contain only : 0123456789. %% chr -> T/F /IsLiteral {% dup 48 ge exch dup 57 le 3 -1 roll and exch dup 65 ge exch dup 90 le 3 -1 roll and 3 -1 roll or exch dup 97 ge exch 122 le and or } bind def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% a literal can be of the form [a-zA-Z][a-zA-Z0-9]*\(\((Expression)\)|\(\[Expression\]\)\)? %% STR index -> literal STR index' nextchr /ReadLiteral { exch dup 3 -1 roll dup 3 1 roll %%read literal core { 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsLiteral not { exit } if pop 1 add } loop 4 1 roll dup 5 1 roll 3 -1 roll exch 1 index sub getinterval 4 1 roll } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% expr is ended by end of str or a clpar %% STR index -> STR index STR[index] T/F /IsEndingExpr {% 2 copy dup Strlen eq %% if end of str is reached -> end ! { pop pop 0 true } %% ending chr -> clpar, comma, |, <, >, =, !, {get dup dup 41 eq exch dup 124 eq exch dup 93 eq exch dup 44 eq exch dup 30 eq exch dup 60 ge exch 62 le and or or or or or} ifelse } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% expr is ended by end of str or a +- %% STR index -> STR index STR[index] T/F /IsEndingTerm { IsEndingExpr { true } { dup dup 43 eq exch 45 eq or } ifelse } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% expr is ended by end of str or */ %% STR index -> STR index STR[index] T/F /IsEndingFactor { IsEndingTerm { true } { dup dup 42 eq exch 47 eq or } ifelse } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% expr is ended by end of str or ^ %% STR index -> STR index STR[index] T/F /IsEndingPower { IsEndingFactor { true } { dup 94 eq } ifelse } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% STR index -> STR index STR[index] /NextNonBlankChar { { dup Strlen eq { 0 exit } if 2 copy get dup neBlkChar { exit } if pop 1 add } loop } bind def /neBlkChar { dup 32 ne exch dup 10 ne exch 9 ne and and } bind def %%%%%%%%%%%%%%%%%%%%%%%% %% DEBUG /BRK {false} def /BRKtrue {/BRK true def} def /BRKStop {BRK {BRKtoto} if } def /BRKEvalStop {BRK exch if } def /BRKBRK2true {BRK {BRK2true} if } def /BRK2 {false} def /BRK2true {/BRK2 true def} def /BRK2Stop {BRK2 {BRK2toto} if } def/BRK {false} def end % %-------------------------------------------------------------------------------% % /tx@AlgToPs 12 dict def tx@AlgToPs begin % %% algExpr -> PSVector /AlgToPs { tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE pop pop EndingSequence end } def /EndingSequence { ExpressionVector aload length /end cvx exch 1 add array astore } def /InitParser { /ExpressionVector [ /tx@AddMathFunc cvx /begin cvx ] def dup length /Strlen exch def 0 } def /Strlen 0 def /EvalListOfExpr {} def% /EvalNumber {% ReadNumber cvr /ExpressionVector ExpressionVector aload length dup 3 add -1 roll cvx exch 1 add array astore def NextNonBlankChar pop } def /EvalAddSub {% /ExpressionVector ExpressionVector aload length dup 5 add -1 roll 43 eq { /add } { /sub } ifelse cvx exch 1 add array astore def } def /EvalMulDiv {% /ExpressionVector ExpressionVector aload length dup 5 add -1 roll 42 eq { /mul } { /div } ifelse cvx exch 1 add array astore def } def /EvalPower {% /ExpressionVector ExpressionVector aload length dup 5 add -1 roll pop /exp cvx exch 1 add array astore def } def /EvalLiteral {% ReadLiteral dup 40 eq%%% there is an open par -> function call { pop 2 index dup (Sum) eq { EvalSum } { dup (IfTE) eq { EvalCond } { dup (Derive) eq { pop EvalDerive } { pop 1 add NextNonBlankChar pop AnalyzeListOfE 2 index TrigoFunc /ExpressionVector ExpressionVector aload length dup 5 add -1 roll cvn cvx exch 1 add array astore def 1 add NextNonBlankChar pop } ifelse } ifelse} ifelse } { /ExpressionVector ExpressionVector aload length dup 6 add -1 roll cvn cvx exch 1 add array astore def dup 91 eq%%% there is an open bracket -> vector element { pop 1 add NextNonBlankChar pop AnalyzeExpr /ExpressionVector ExpressionVector aload length /cvi cvx exch /get cvx exch 2 add array astore def 1 add } { pop NextNonBlankChar pop } ifelse} ifelse } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% the derive function : Derive(n,f(x)) %% firstparindex lastparindex -> /EvalDerive { %% manage the function descripiton 1 add ReadNumber 3 1 roll NextNonBlankChar 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if 1 add NextNonBlankChar pop 3 -1 roll cvi dup 0 eq { pop AnalyzeExpr 3 -1 roll pop 1 add } { 1 sub 3 1 roll (x) exch tx@Derive begin DeriveIndexed end 4 -1 roll { (x) tx@Derive begin Derive end } repeat ExpressionVector exch /ExpressionVector [] def AlgToPs aload length /ExpressionVector 1 index 3 add -1 roll aload length dup 3 add -1 roll /l2 exch def /l1 exch def l1 l2 add 1 add l2 neg roll l1 l2 add array astore def 3 -1 roll pop 1 add 1 index length /Strlen exch def } ifelse } def /EvalSum {% pop 1 add NextNonBlankChar pop %% read the variable name ReadLiteral pop NextNonBlankChar 44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if %% read the initial value 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if %% read the increment value 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if %% read the limit value 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if /ExpressionVector ExpressionVector aload length dup 7 add -3 roll 0 4 1 roll 5 -1 roll 4 add array astore def %% keep ExpressionVector for later and create a new one for internal Sum computation ExpressionVector 3 1 roll /ExpressionVector [ 6 -1 roll cvn /exch cvx /def cvx ] def 1 add NextNonBlankChar pop AnalyzeExpr %% add each term /ExpressionVector ExpressionVector aload length 1 add /add cvx exch array astore def /ExpressionVector 4 -1 roll aload length ExpressionVector cvx /for cvx 3 -1 roll 2 add array astore def 3 -1 roll pop 1 add } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Convert to radians if trigo function call %% (name) -> /TrigoFunc { dup (cos) eq 1 index (sin) eq or exch (tan) eq or { /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add array astore def } if } def /EvalCond {% pop 1 add AnalyzeCond NextNonBlankChar 44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if ExpressionVector 3 1 roll /ExpressionVector [] def 1 add AnalyzeExpr ExpressionVector 3 1 roll /ExpressionVector [] def NextNonBlankChar 44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if 1 add AnalyzeExpr NextNonBlankChar 41 ne { ANALYZER_ERROR_missing_ending parenthesis_in_IfTE } if ExpressionVector /ExpressionVector 6 -1 roll aload length dup 6 add -1 roll cvx exch dup 4 add -1 roll cvx /ifelse cvx 3 -1 roll 3 add array astore def 1 add 3 -1 roll pop } def %% CondOp STR index /EvalCondOp {% 3 -1 roll dup (=) eq { /eq } {% dup (<) eq { /lt } {% dup (>) eq { /gt } {% dup (>=) eq { /ge } {% dup (<=) eq { /ge } {% dup (!=) eq { /ne } { ERROR_non_valid_conditional_operator } ifelse } ifelse } ifelse } ifelse } ifelse } ifelse cvx exch pop /ExpressionVector ExpressionVector aload length dup 3 add -1 roll exch 1 add array astore def } def /EvalUnaryOp { 3 -1 roll 45 eq { /ExpressionVector ExpressionVector aload length /neg cvx exch 1 add array astore def } if } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% H O O K S /AnalyzePreHook {} bind def /PreEvalHook {} bind def /AnalyzeListOfEPostHook {} bind def /AnalyzePostHook {} def /RollOp { 3 1 roll } bind def end %tx@CoreAnalyzerDict % %--------------------------------------------------------------------% % /tx@Derive 41 dict def tx@Derive begin %%increase ^^ for each function added %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% algExpr variable -> PSVector /Derive {% 10240 string 3 1 roll 0 3 1 roll /Variable exch def tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE end } def /Strlen 0 def /InitParser { dup length /Strlen exch def 0 } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% algExpr variable index -> PSVector /DeriveIndexed {% 3 1 roll 10240 string 3 1 roll 0 3 1 roll /Variable exch def tx@CoreAnalyzerDict begin InitParser pop 4 -1 roll AnalyzeExpr 4 -2 roll pop pop 4 -2 roll exch pop end } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% (u,v)'=-(u',v') /EvalListOfExpr {% 4 2 roll 2 copy 9 -1 roll dup length 4 1 roll putinterval add AddPipe 2 copy 7 -1 roll dup length 4 1 roll putinterval add 6 -2 roll pop pop 2 copy pop 0 6 2 roll GetIntervalNewStr 5 1 roll 2 copy 0 exch getinterval 6 1 roll } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% (-u)'=-(u') /EvalUnaryOp { 4 -2 roll 4 index (0) eq { (0) StrConcat 7 -1 roll pop } { 7 -1 roll 45 eq { AddSub AddOpPar true } { false } ifelse 3 1 roll 5 index StrConcat 3 -1 roll { AddClPar } if } ifelse 2 copy pop 0 6 2 roll GetIntervalNewStr 7 -2 roll pop pop 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% (number)'=0 /EvalNumber { ReadNumber (0) 6 2 roll } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% (u+v)'=u'+v' /EvalAddSub {% 7 index dup (0) eq { pop true }%% du=0 nothing added { dup length exch 5 index 5 index 3 -1 roll putinterval 4 -1 roll add 3 1 roll false } ifelse 5 index dup (0) eq { pop { (0) } { 4 -2 roll 2 copy pop 0 6 2 roll GetIntervalNewStr } ifelse }%%dv=0 { exch { 5 -2 roll 7 index 45 eq { AddSub } if false } %%nothing yet added { 5 -2 roll 7 index 43 eq%%something yet added { AddAdd false } { AddSub AddOpPar true } ifelse } ifelse 11 1 roll 3 -1 roll StrConcat 10 -1 roll { AddClPar } if 2 copy pop 0 6 2 roll GetIntervalNewStr } ifelse mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% (u*v)' or (u/v)' /EvalMulDiv { 6 index 42 eq {EvalMul} {EvalDiv} ifelse } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% (u*v)'=u'*v+u*v' /EvalMul {% 4 -2 roll 7 index dup (0) eq { pop false }%%du=0 { (1) eq%%du=1 { false } { AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse 3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if true }%%du!=0 ifelse 5 1 roll 5 index (0) eq { 5 -1 roll not { (0) StrConcat } if }%%dv=0 { 5 -1 roll { AddAdd } if 4 index (1) eq { 8 index StrConcat } { AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar } ifelse }%%dv!=0 ifelse 2 copy pop 0 6 2 roll GetIntervalNewStr mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% (u/v)'=(u'*v-u*v')/v^2 /EvalDiv {% 4 -2 roll 4 index (0) eq%%dv=0 -> u'/v { 7 index (0) eq { (0) StrConcat } { AddOpPar 7 index StrConcat AddClPar AddDiv 5 index StrConcat } ifelse } { 7 index dup (0) eq { pop }%%du=0 { (1) eq%%du=1 { false } { AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse 3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if}%%du!=0 ifelse AddSub 4 index (1) eq { 8 index StrConcat } { AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar } ifelse %}%%dv!=0 2 copy GetIntervalNewStr 3 1 roll pop 0 AddOpPar 3 -1 roll StrConcat AddClPar AddDiv AddOpPar 5 index StrConcat AddClPar 2 copy (^2) putinterval 2 add } ifelse 2 copy pop 0 6 2 roll GetIntervalNewStr mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% str1 index str2 -> str1 index /StrConcat { dup length 4 2 roll 2 copy 6 -1 roll putinterval 3 -1 roll add } bind def /GetIntervalNewStr { 0 exch getinterval dup length string copy } bind def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% (u^v)'=(u^v)'=u'vu^(v-1)+v'u^(v)ln(u) /EvalPower {% 4 -2 roll 7 index (0) eq {%%if du=0 then (u^v)'=v'ln(u)u^v 4 index (0) eq { (0) StrConcat }%%if dv=0 then (u^v)'=0 { 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if 8 index (e) ne { (ln\() StrConcat 8 index StrConcat (\)*) StrConcat } if AddOpPar 8 index StrConcat (\)^\() StrConcat 5 index StrConcat AddClPar } ifelse } {%%du!=0 4 index (0) eq {%%if dv=0 then (u^v)'=vu'u^(v-1) 5 index dup IsStrNumber { dup (0) eq { StrConcat } { dup dup (1) eq exch (1.0) eq or { StrConcat } { StrConcat 7 index dup (1) ne exch (1.0) ne and%%%dr 09102006 insert du if <> 1 { (*\() StrConcat 7 index StrConcat (\)) StrConcat } if%%%dr 09102006 (*\() StrConcat 8 index StrConcat (\)) StrConcat 5 index dup dup (2) eq exch (2.0) eq or { pop } { cvr 1 sub 20 string cvs 3 1 roll (^) StrConcat 3 -1 roll StrConcat } ifelse } ifelse } ifelse } { pop AddOpPar 5 index StrConcat (\)*\() StrConcat 8 index StrConcat (\)^\() StrConcat 5 index StrConcat (-1\)) StrConcat } ifelse } {%%if dv!=0 and du!=0 then (u^v)'=u'vu^(v-1)+v'u^(v)ln(u) 7 index (1) ne { AddOpPar 7 index StrConcat (\)*) StrConcat } if AddOpPar 5 index StrConcat (\)*\() StrConcat 8 index StrConcat (\)^\() StrConcat 5 index StrConcat (-1\)+\() StrConcat 4 index (1) ne { 4 index StrConcat (\)*\() StrConcat } if 8 index StrConcat (\)^\() StrConcat 5 index StrConcat (\)*ln\() StrConcat 8 index StrConcat AddClPar } ifelse } ifelse 2 copy pop 0 6 2 roll GetIntervalNewStr mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% str -> true/false /IsStrNumber {% true exch { dup 48 lt exch dup 57 gt 3 -1 roll or exch dup 46 ne%%. exch dup 43 ne%%+ exch 45 ne%%- and and and { pop false } if } forall } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% literal switch -> func call, vector, variables /EvalLiteral {% ReadLiteral dup 40 eq%%% there is an open par -> function call { pop (EvalFunc_ ) 9 4 index StrConcat 0 exch getinterval cvn cvx exec } { dup 91 eq%%% there is an open bracket -> vector element { ERROR_vector_not_yet_implemented } { pop EvalVariable } ifelse } ifelse } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% first last parpos Expr[first:parpos-1] -> /EvalVariable { 2 index Variable eq { (1) } { (0) } ifelse 4 -1 roll exch 6 2 roll } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% (f(u))'=u'f'(u) /EvalFunc { 4 2 roll 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if (Eval ) 4 8 index StrConcat 0 exch getinterval cvn cvx exec 2 copy pop 0 6 2 roll GetIntervalNewStr mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Func derivative -> Eval /EvalFunc_sin {% PreCommonFunc { (cos\() StrConcat 5 index StrConcat AddClPar } if PostCommonFunc } def /EvalFunc_cos {% PreCommonFunc { (\(-sin\() StrConcat 5 index StrConcat (\)\)) StrConcat } if PostCommonFunc } def /EvalFunc_tan {% PreCommonFunc { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/cos\() StrConcat 5 index StrConcat (\)^2) StrConcat } if PostCommonFunc } def /EvalFunc_asin {% PreCommonFunc { (1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if PostCommonFunc } def /EvalFunc_acos {% PreCommonFunc { (-1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if PostCommonFunc } def /EvalFunc_atg {% PreCommonFunc { (1/\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if PostCommonFunc } def /EvalFunc_ln {% PreCommonFunc { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\() StrConcat 5 index StrConcat AddClPar } if PostCommonFunc } def /EvalFunc_exp {% PreCommonFunc { (exp\() StrConcat 5 index StrConcat AddClPar } if PostCommonFunc } def /EvalFunc_sqrt {% PreCommonFunc { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\(2*sqrt\() StrConcat 5 index StrConcat (\)\)) StrConcat } if PostCommonFunc } def /EvalFunc_Fact {% PreCommonFunc { ERROR_no_variable_expression_in_Fact } if PostCommonFunc } def /EvalFunc_sh {% PreCommonFunc { (ch\() StrConcat 5 index StrConcat AddClPar } if PostCommonFunc } def /EvalFunc_ch {% PreCommonFunc { (sh\() StrConcat 5 index StrConcat AddClPar } if PostCommonFunc } def /EvalFunc_th {% PreCommonFunc { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/ch\() StrConcat 5 index StrConcat (\)^2) StrConcat } if PostCommonFunc } def /EvalFunc_Argsh {% PreCommonFunc { (1/sqrt\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if PostCommonFunc } def /EvalFunc_Argch {% PreCommonFunc { (1/sqrt\(\() StrConcat 5 index StrConcat (\)^2-1\)\)) StrConcat } if PostCommonFunc } def /EvalFunc_Argth {% PreCommonFunc { (1/\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if PostCommonFunc } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /PreCommonFunc { 1 add NextNonBlankChar pop 3 -1 roll 5 1 roll AnalyzeExpr 1 add NextNonBlankChar pop 4 2 roll 4 index (0) eq { (0) StrConcat false } { 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if true } ifelse } def /PostCommonFunc { 2 copy pop 0 6 2 roll GetIntervalNewStr mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll } def /EvalFunc_Derive {% 1 add ReadNumber cvi 1 add dup cvr log 1 add cvi string cvs 4 -1 roll pop 5 1 roll 1 add NextNonBlankChar pop AnalyzeExpr 1 add 4 -2 roll (Derive\() StrConcat 7 -1 roll StrConcat (,) StrConcat 6 -1 roll StrConcat AddClPar 2 copy pop 0 6 2 roll GetIntervalNewStr 6 -1 roll pop 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% literal switch -> func call, vector, variables /EvalFunc_Sum {% 1 add NextNonBlankChar pop %% read the variable name ReadLiteral pop 3 -1 roll pop NextNonBlankChar 44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if %% read the initial value 1 add NextNonBlankChar pop ReadNumber pop 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if %% read the increment value 1 add NextNonBlankChar pop ReadNumber pop 2 copy get 44 ne { ANALYZER_ERROR_missing_third_comma_in_Sum } if %% read the limit value 1 add NextNonBlankChar pop ReadNumber pop 2 copy get 44 ne { ANALYZER_ERROR_missing_fourth_comma_in_Sum } if 1 add NextNonBlankChar pop dup 6 1 roll 3 -1 roll pop AnalyzeExpr 1 add NextNonBlankChar pop 4 -2 roll 3 index 8 index dup 9 index exch sub getinterval StrConcat 4 index StrConcat AddClPar 2 copy pop 0 6 2 roll GetIntervalNewStr mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% literal switch -> func call, vector, variables /EvalFunc_IfTE {% 3 -1 roll pop 1 add NextNonBlankChar pop SkipCond NextNonBlankChar 44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if 1 add NextNonBlankChar pop dup 5 1 roll AnalyzeExpr NextNonBlankChar 44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if 1 add NextNonBlankChar pop AnalyzeExpr 1 add NextNonBlankChar pop 4 -2 roll 3 index 10 index dup 11 index exch sub getinterval StrConcat 6 index StrConcat (,) StrConcat 4 index StrConcat AddClPar 2 copy pop 0 6 2 roll GetIntervalNewStr mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% advance in str until a comma is found (no error detection!) %% str index -> str index' /SkipCond { { 1 add 2 copy get 44 eq {exit } if } loop } bind def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Convert to radians if trigo function call %% (name) -> /TrigoFunc { dup (cos) eq 1 index (sin) eq or exch (tan) eq or { /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add array astore def } if } def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% No derivative for condition.... /EvalCondOp { 3 -1 roll pop } bind def /PutIntervalOneAdd {putinterval 1 add} bind def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Add open parenthesis in string at the given index %% str index -> str index+1 /AddOpPar {2 copy (\() PutIntervalOneAdd} bind def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Add close parenthesis in string at the given index %% str index -> str index+1 /AddClPar {2 copy (\)) PutIntervalOneAdd} bind def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Add 0 in string at the given index %% str index -> str index+1 /AddZero {2 copy (0) PutIntervalOneAdd} bind def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Add open parenthesis in string at the given index %% str index -> str index+1 /AddMul {2 copy (*) PutIntervalOneAdd} bind def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Add open parenthesis in string at the given index %% str index -> str index+1 /AddDiv {2 copy (/) PutIntervalOneAdd} bind def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Add a plus sign in string at the given index %% str index -> str index+1 /AddAdd {2 copy (+) PutIntervalOneAdd} bind def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Add a minus sign in string at the given index %% str index -> str index+1 /AddSub {2 copy (-) PutIntervalOneAdd} bind def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Add a pipe sign in string at the given index %% str index -> str index+1 /AddPipe {2 copy (|) PutIntervalOneAdd} bind def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% H O O K S /AnalyzePreHook { dup 5 1 roll } bind def /PreEvalHook {} def /AnalyzePostHook { 7 -1 roll pop } bind def /AnalyzeListOfEPostHook { 6 -1 roll mark 6 1 roll cleartomark } bind def /RollOp { 5 1 roll } bind def end%%%tx@CoreAnalyzerDict /tx@AddMathFunc 12 dict def tx@AddMathFunc begin %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% NEW FUNC %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% function arcsine in radians asin(x)=atan(x/sqrt(1-x^2)) %% x -> theta /asin {% dup abs 1 gt { EQDFasinrangeerror } if dup dup dup mul 1 exch sub sqrt atan exch 0 lt { 360 sub } if DegtoRad } def %% function arccosine in radians acos(x)=atan(sqrt(1-x^2)/x) %% x -> theta /acos {% dup abs 1 gt { EQDFacosrangeerror } if dup dup mul 1 exch sub sqrt exch atan DegtoRad } def %% function arctangent in radians %% x -> theta /atg { 1 atan dup 90 gt { 360 sub } if DegtoRad } bind def %% HYPERBOLIC FUNCTIONS /sh { dup Ex exch neg Ex sub 2 div } def /ch { dup Ex exch neg Ex add 2 div } def /th { dup sh exch ch div } def /Argsh { dup dup mul 1 add sqrt add ln } def /Argch { dup dup mul 1 sub sqrt add ln } def /Argth { dup 1 add exch 1 exch sub div ln 2 div } def %% modified exponential funtion for 0 %% x n -> x^n /Exp { dup 0 eq { pop pop 1 } { exp } ifelse } bind def %% modified exponential funtion for 0 %% x -> e^x /Ex { Euler exch exp } bind def %% %% factorial function %% n -> n! /Fact { 1 exch 2 exch 1 exch { mul } for } bind def /fact { Fact } bind def end % END pstricks.pro %%EndProcSet %%BeginProcSet: pst-dots.pro 0 0 % $Id: pst-dots.pro 7 2007-12-29 22:21:13Z herbert $ % %% PostScript prologue for pstricks.tex. %% Version 2.00, 2006/12/19 %% For distribution, see pstricks.tex. %% %% Timothy Van Zandt %% %% Modified by Etienne Riga - Dec. 16, 1999 %% Modified by Herbert Voss (hv) - 2004/12/27 %% Modified by Etienne Riga - 2005/01/01 (er) %% to add /Diamond, /SolidDiamond and /BoldDiamond % 10 dict dup begin /FontType 3 def /FontMatrix [.001 0 0 .001 0 0] def /FontBBox [-571.5 -742.5 571.5 742.5] def % /FontBBox [-1000 -1000 1000 1000] def % See end of file in /BuildGlyph /Encoding 256 array def 0 1 255 {Encoding exch/.notdef put} for Encoding dup (b) 0 get /Bullet put dup (c) 0 get /Circle put dup (C) 0 get /BoldCircle put dup (u) 0 get /SolidTriangle put dup (t) 0 get /Triangle put dup (T) 0 get /BoldTriangle put dup (r) 0 get /SolidSquare put dup (s) 0 get /Square put dup (S) 0 get /BoldSquare put dup (q) 0 get /SolidPentagon put dup (p) 0 get /Pentagon put dup (P) 0 get /BoldPentagon put %%% dup (k) 0 get /Asterisk put dup (K) 0 get /BoldAsterisk put dup (J) 0 get /SolidAsterisk put dup (h) 0 get /Hexagon put dup (H) 0 get /BoldHexagon put dup (G) 0 get /SolidHexagon put dup (a) 0 get /Add put dup (A) 0 get /BoldAdd put dup (x) 0 get /Mul put dup (X) 0 get /BoldMul put dup (m) 0 get /Oplus put dup (M) 0 get /BOplus put dup (e) 0 get /SolidOplus put dup (n) 0 get /Otimes put dup (N) 0 get /BOtimes put dup (E) 0 get /SolidOtimes put dup (i) 0 get /Bar put dup (I) 0 get /BoldBar put dup (l) 0 get /SolidDiamond put dup (d) 0 get /Diamond put (D) 0 get /BoldDiamond put %%% /CharProcs 47 dict def CharProcs begin /CirclePath {0 0 500 0 360 arc closepath} def /Bullet {CirclePath fill} def /Circle {CirclePath .9 .9 scale CirclePath eofill} def /BoldCircle {CirclePath .8 .8 scale CirclePath eofill} def /TrianglePath {0 660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath} def /SolidTriangle {TrianglePath fill} def /Triangle {TrianglePath .85 .85 scale TrianglePath eofill} def /BoldTriangle {TrianglePath .7 .7 scale TrianglePath eofill} def /SquarePath {-450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto closepath} def /SolidSquare {SquarePath fill} def /Square {SquarePath .89 .89 scale SquarePath eofill} def /BoldSquare {SquarePath .78 .78 scale SquarePath eofill} def /PentagonPath {-337.8 -465 moveto 337.8 -465 lineto 546.6 177.6 lineto 0 574.7 lineto -546.6 177.6 lineto closepath} def /SolidPentagon {PentagonPath fill} def /Pentagon {PentagonPath .89 .89 scale PentagonPath eofill} def /BoldPentagon {PentagonPath .78 .78 scale PentagonPath eofill} def %-------------- hv begin 2004/07/25 from: er 2003/03/24 /HexagonPath {0 550 moveto -476 275 lineto -476 -275 lineto 0 -550 lineto 476 -275 lineto 476 275 lineto closepath} def /SolidHexagon {HexagonPath fill} def /Hexagon {HexagonPath .89 .89 scale HexagonPath eofill} def /BoldHexagon {HexagonPath .79 .79 scale HexagonPath eofill} def /AsteriskPath {20 0 moveto 10 250 180 500 0 500 curveto -180 500 -10 250 -20 0 curveto closepath} def /Asterisk {AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath fill} def /Basterp {50 250 220 500 0 500 curveto -220 500 -50 250 -50 30 cos 100 mul curveto} def /BoldAsteriskPath {50 30 cos 100 mul moveto Basterp 60 rotate Basterp 60 rotate Basterp 60 rotate Basterp 60 rotate Basterp 60 rotate Basterp closepath} def /BoldAsterisk {BoldAsteriskPath fill} def /SolidAsterisk {CirclePath .9 .9 scale BoldAsteriskPath eofill} def /CrossPath {40 550 moveto -40 550 lineto -40 40 lineto -550 40 lineto -550 -40 lineto -40 -40 lineto -40 -550 lineto 40 -550 lineto 40 -40 lineto 550 -40 lineto 550 40 lineto 40 40 lineto closepath} def /BoldCrossPath {80 550 moveto -80 550 lineto -80 80 lineto -550 80 lineto -550 -80 lineto -80 -80 lineto -80 -550 lineto 80 -550 lineto 80 -80 lineto 550 -80 lineto 550 80 lineto 80 80 lineto closepath} def /Add {CrossPath fill} def /Mul {45 rotate CrossPath fill} def /BoldAdd {BoldCrossPath fill} def /BoldMul {45 rotate BoldCrossPath fill} def /Oplus {CirclePath .9 .9 scale CirclePath eofill .775 .775 scale CrossPath fill} def /SolidOplus {CirclePath .775 .775 scale BoldCrossPath eofill} def /BOplus {CirclePath .8 .8 scale CirclePath eofill .775 .775 scale BoldCrossPath fill} def /Otimes {CirclePath .9 .9 scale CirclePath eofill 45 rotate .775 .775 scale CrossPath fill} def /BOtimes {CirclePath .8 .8 scale CirclePath eofill 45 rotate .775 .775 scale BoldCrossPath fill } def /SolidOtimes {CirclePath 45 rotate .775 .775 scale BoldCrossPath eofill} def /BarPath {40 660 moveto -40 660 lineto -40 -660 lineto 40 -660 lineto closepath} def /Bar {BarPath fill} def /BoldBarPath {80 660 moveto -80 660 lineto -80 -660 lineto 80 -660 lineto closepath} def /BoldBar {BoldBarPath fill} def /DiamondPath {0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto 428.5 0 lineto closepath} def /SolidDiamond {DiamondPath fill} def /Diamond {DiamondPath .865 .865 scale DiamondPath eofill} def /BoldDiamond {DiamondPath .73 .73 scale DiamondPath eofill} def %%% /.notdef { } def end /BuildGlyph { exch begin % Metrics 1 index get exec 0 0 0 % BBoxes 3 index get exec -1000 -1000 1000 1000 % -571.5 -742.5 571.5 742.5 setcachedevice CharProcs begin load exec end end } def /BuildChar { 1 index /Encoding get exch get 1 index /BuildGlyph get exec } bind def end /PSTricksDotFont exch definefont pop %%EndProcSet %%BeginProcSet: pst-text.pro 0 0 %! % PostScript header file pst-text.pro % Version 1.0, 2005-11-29 (hv) % For distribution, see pstricks.tex. /tx@TextPathDict 40 dict def tx@TextPathDict begin % Syntax: PathPosition - % Function: Searches for position of currentpath distance from % beginning. Sets (X,Y)=position, and Angle=tangent. /PathPosition { /targetdist exch def /pathdist 0 def /continue true def /X { newx } def /Y { newy } def /Angle 0 def gsave flattenpath { movetoproc } { linetoproc } { } { firstx firsty linetoproc } /pathforall load stopped { pop pop pop pop /X 0 def /Y 0 def } if grestore } def /movetoproc { continue { @movetoproc } { pop pop } ifelse } def /@movetoproc { /newy exch def /newx exch def /firstx newx def /firsty newy def } def /linetoproc { continue { @linetoproc } { pop pop } ifelse } def /@linetoproc { /oldx newx def /oldy newy def /newy exch def /newx exch def /dx newx oldx sub def /dy newy oldy sub def /dist dx dup mul dy dup mul add sqrt def /pathdist pathdist dist add def pathdist targetdist ge { pathdist targetdist sub dist div dup dy mul neg newy add /Y exch def dx mul neg newx add /X exch def /Angle dy dx atan def /continue false def } if } def /TextPathShow { /String exch def /CharCount 0 def % hv begin 2005-11-29 1.00 % String length % { String CharCount 1 getinterval ShowChar % /CharCount CharCount 1 add def /CharSize 1 def currentfont /FontType get 0 eq { currentfont /FMapType get dup 2 eq exch dup 5 eq exch 9 eq or or { /CharSize 2 def} if } if String length CharSize idiv { String CharCount CharSize getinterval ShowChar /CharCount CharCount CharSize add def % hv end 2005-11-29 1.00 } repeat } def % Syntax: InitTextPath - /InitTextPath { gsave currentpoint /Y exch def /X exch def exch X Hoffset sub sub mul Voffset Hoffset sub add neg X add /Hoffset exch def /Voffset Y def grestore } def /Transform { PathPosition dup Angle cos mul Y add exch Angle sin mul neg X add exch translate Angle rotate } def /ShowChar { /Char exch def gsave Char end stringwidth tx@TextPathDict begin 2 div /Sy exch def 2 div /Sx exch def %%% MV 10-09-99 00:36 /sc?currentpoint where {pop sc?currentpoint} {currentpoint} ifelse % currentpoint Voffset sub Sy add exch Hoffset sub Sx add Transform Sx neg Sy neg moveto Char end tx@TextPathSavedShow tx@TextPathDict begin grestore Sx 2 mul Sy 2 mul rmoveto } def % end % END pst-text.pro %%EndProcSet %%BeginProcSet: texps.pro 0 0 %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} def end %%EndProcSet %%BeginProcSet: special.pro 0 0 %! TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N /vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N /rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N /@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ /hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B /@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ /urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known {userdict/md get type/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ itransform lineto}}{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}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR 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 TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale }if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState save N userdict maxlength dict begin/magscale true def normalscale currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts /psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict begin/SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N /@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X /yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro 0 0 %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet %%BeginFont: CMMI8 %!PS-AdobeFont-1.1: CMMI8 1.100 %%CreationDate: 1996 Jul 23 07:53:54 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 105 /i put dup 110 /n put readonly def /FontBBox{-24 -250 1110 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC 4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120 788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62 C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32 617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1 D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63 532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B 5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8 4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6 DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2 A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89 8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817 AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04 AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748 A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827 AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011 85B385124DFAE11BA4AB27032F02AB84277DB8B54826CB75B5ECF9878D64D0D2 5AC4506D5C656629EACE8AE5685D415E22C59E84B89527286786C675B1AFA454 2837A67268F06EF698B0294A84F007116B2822424AE0CDC8F3D495E64302BAA4 E4C20BA2356BA1DF864C793A55D32F4310DFB4F23DE921399D432EECD8D03F52 ABFA21F4EBA4C418139A32C220A65D626D98A34BDAABDB371E848A7CD912531C D29DA90A905E4FAE9F504CC5B2A5EABD0E35F5B21D9FAF1366996091CA53E206 5728501386D3E0F7FFF4F43F1DB0FB3A72E51B920608C6167756F098DE6EE04B CC9697DC6F999B2CA4A7FA934CBC03FD200FF4D8D22635F254EC09E460EC0526 5029482FBD526753CBDF8F0768DF986359B433FF810C57BFB8407DB80E6EBD64 904D3660CD46E96162A1E64B21DEFEFD0E09C8FAFFFB82467C1DF41BA078171F 9F24E6CAEE32FC0CF25A5D8409B1E6541EF667E6B4E05D8D6289E5E7B8532013 6EC8C91D6DA1AA512D806CA8F21153F07C880212C3B5B38A2297CA4E33C2B61E C1A092945DB7391335455D783DD84D23DB4218F1233CE690759514E9939C3D45 C1E78123BAB987AA59FB83A9604B4031CC0FB047BB7A240D1B87C886CB8AAB27 5CF6F37DC9B5E5304144E406CC68B5D4F09A31C788C25D2ACAF85324BFF39451 FD72EC05EDF48BB887A6B467F030564C7E9C68C5376DE6FEFDBE9EE60B672372 BABB3E598FFDE699DEE9E5997E0FFC320DEB415DB90AE2AF2E598B569CE58E20 2ECF99BB0DDF4D3E5C6764074EC3A3CCC143DDE9A23370BCEBD689DF8C71EA62 FC6A73E3F75B4D4CEB8EA14EA7AF87E23F 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: MSBM10 %!PS-AdobeFont-1.1: MSBM10 2.1 %%CreationDate: 1993 Sep 17 11:10:37 % Math Symbol fonts were designed by the American Mathematical Society. % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (2.1) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (MSBM10) readonly def /FamilyName (Euler) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /MSBM10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 66 /B put readonly def /FontBBox{-55 -420 2343 920}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6A66A4000A13D5F68BFF326D 1D432B0D064B56C598F4338C319309181D78E1629A31ECA5DD8536379B03C383 D10F04E2C2822D3E73F25B81C424627D3D9A158EAB554233A25D3C6849ABA86F 1F25C1667CB57D2E79B7803083CB7CC0616467F68450D9A3FEAB534EB9721003 DBFEEFD050F3AC3492F5C74162A9A531ECEC0F47610B4940E946D21CAA771D30 A6C27ECBA11708CC46C62396BF9D1990D579D0C394899D24FE7A4382EA18E7E1 160E7283AF5BE17254790628E79FCC206F28B5566075B3A5697D5209062544FF D85FD89D6F43D6588B242AB2666B5D2861CD38A8CE676503EDFAE84D12A71E77 8405E468FE391F4F3F50D2C57ED55512036B0DB8E76A7EF413ED08673E56DE2C 16A3B65CD478433C0D2F9FEC4E662D54DAA43CFA6957D2A9AF8979BE06F70B68 ED4C8C493D6DAC4971A3F1D010A7726D084EC1074FECD7D12D72AE16C26194AF 21AF5774D9B860EEE8608D34F150092F09C19959BAA670022B9A9F263CD391E3 74DD1D1B4CD4D75273CAA4E37F68C631723E08FA35AD34C0AFB4621AE6689861 854D16CE1C375FD159A337E221A6FF1CFFB5693A0623E7EBB58C2969F590D081 AD92DD9E5322E26D6A15023664AC73A355998BCC48ADD0E7A4BC79790519606F A1FEF6075033BCD1A7DEEAF1DA604D5D2180D8C1981BCB70174FD46DFA68A83B 22B91FFC740DD398A08EECF8FA4A27354C1D5E7D607EA427EF5CB3D9BE5494F8 55213B5FA957C3CE225C0FD956C5E650DB86115D8925D9336D53A4901B1FF320 1D2A494A8CC7A4AFBB515C1256FB07FADC6DA3BEF0FA85C4F15E83015BED56A1 30FDC29FA731301915F64FBBD9B63477E629422A498892CE6941B16BB0012D51 524E0228494AE594FEC1855FAAE316E0BA82D2C8952D424F7EAB83B617EFAC4D 403595265F0306D9CB3B26CB5F05EC56612D95316D7B5C4F86F1DB7BD35DA951 CC34EEDB71B133F260EB79F09DFB78C7F372D5AFC3EBA7C8130091E3D575295A 6CA9847169D08CF2E58966E3F4D364A4DB645CD7634BF3BA13F8ABDB49BFFBC2 09CFB5872BE9275DDF23E1CF406C0B4E1A6D3401E0C4D02747917C2517B664BF 15BC1E2329832005FD43A7DF03B10896632CD258C5C407DAD63202F386B24EB6 4A8B9FDE89F2ED7F81178F4B001098EB38C2259CF2752D11BD5CA70EAA64CFF8 902E081FF847FBC0A293D4BC7CBA2420E338B22F3C6ED11073FBB30A32954FF5 65BC4BE5B9849DFBE5295EFA7B04DFA0D41E91F7BA2782BB73DB400593248CDA 3942E80F734C729EE3B39C5886B5BB6FA090846A2938F1F006FD0DCB8FE88FE1 89650A9221182EB9682AA4945D9D90D573619AE8581657F53D89A7322FFB815D CC34BCE46226BE977E995953251C6C04165E17818455161476A8508FA2D756FC BC91A8ED38E6F99201D9D0A61AD8CD070B2E239DD8FE506F25478F4EFC135C5B 03C3B9A94A7220CB09BC32B793B9DF957C74FBB47B7AB12D9B08BD06F63E54AA 8AEDA52666132DE1DA38E499EEC808E58F706BC306CC60103A20D844921E90E2 6F38BFA88759F07D9924D83A031E86A952D5BD299A234B863858730830E6BD9C 158FE59AFBDA56BF005927416564EBA8E622924C069FFB702B9E6C3C34D3C9D6 17C3E6F2B98EE024E1FAF3A15BFFBFD728824DFC24A46EA7C24E00AC50BD8DA7 C747D3023A19F36075F4 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY8 %!PS-AdobeFont-1.1: CMSY8 1.0 %%CreationDate: 1991 Aug 15 07:22:10 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 3 /asteriskmath put readonly def /FontBBox{-30 -955 1185 779}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A 221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0 5B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F 80F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107 1477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20 9C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1 CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA F83C7D393392BCBC227771CDCB976E93302531886DDA73EBC9178917EFD0C20B 133F1E59AA9B568B69ECCFC0900517036FE3D4C09BBFD937BC5A9C0B89894A8F 63BCCA3746BA056D1B408B16E976D7BAA7D0F7693814ECF52D90BDB3398CF007 CAD14DF246B4D1886070D41A28110F88C9D3EB1F30B1823E0EAA1A35733AD321 E6338D62C26AB6FCD4BBB703248CD7C5CEE83E0167A63F89ACC9D09117C4D017 E773665CB7FA79D22231C8F858735B554E2ED612A436D299491FD31F810F202C C865B87083F980C8DF6A3DD43D437617A69D3E58FFE85F106F7E7F6E50D4D25E 328F7A76B73078B3604C51CCDEAEFA74ADFB9A6C3A5A0EBDCFB578CCBC3553F8 44D4B2853DC7C8415AE3174A4C2209F4107C23000ECC343882C5E2ECA42D8B33 F4846EB85076770BD7E5AF795E1EEEFDC5F0229761DE6BA728FA78549D6E31AC 55ECFE0C64351DCC357F619E3771692B7DF8FFD7FAF48B4299C702F866374FDC 696E83BF09BDB1C40B 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY10 %!PS-AdobeFont-1.1: CMSY10 1.0 %%CreationDate: 1991 Aug 15 07:20:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 8 /circleplus put dup 20 /lessequal put dup 33 /arrowright put dup 36 /arrowboth put dup 40 /arrowdblleft put dup 41 /arrowdblright put dup 58 /logicalnot put dup 94 /logicaland put dup 95 /logicalor put dup 102 /braceleft put dup 103 /braceright put readonly def /FontBBox{-29 -960 1116 775}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A 221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A 27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF 5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A 71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C 515DB70A8D4F6146FE068DC1E5DE8BC57034F4D9A2152A6B38BAEF33DC201A05 C8314401DFB99909331C989C8FB9AA0E7CE25E3F16D46EF4BEB69F1ED72DCA57 41BB534C94AE50B74AAC9C0B94FDE9BA88A2A021F6C4BA209482C9D8E0720AD9 61575A83C28FC8F2C035F54BDAA63A20D6E787DC4B2D0A1A236FB968FF7362E9 BBA512203E934A83C55DD943F9E3339ED889465E21719709CFF66D548A521625 BC681E0390DF81A4B6F1FDFB04E11670B1A7F16D6C1C4FC46CFE2005513CB42A D0FDE9DFDDF9A53B178899375C51CFC74CCC98CE9FE881DD85E7B739129015AC FA6979C0C28FEE7A4EFAFD194A2EF92D0CBB43CCD3B0EBE449386B33D80FF967 417799B5F6178708F9ECD5635DC0A2A749F23381BE23ADE17AE6FF20968850B2 F1DC0200F5203B2D00DA5A28588F2C2E337C2E4506A1EBA6B2A9061DD11EE2B1 F97CE001EF07AD69BB808F6ACCB121E7534D0ABFF54812531F73B37E5BF32D8E 4F93362B69DE4070D45752356F62E820784A35C08E5608D99F358A8D9AC87906 B5BC140597A4A212DEF338C995C3B441DBBAA26A744C3921A87A78F1C539D56A 49F52D1F7C24F745BA724A078C5D9BCDA901621C15E28C3628A82BDB3D0B41A5 43C355DCC23A0C7853DEA57775A382F33A19A6AA2286BC7EE6BD286115D03664 4E59B09BAA8AA46FED75CEA0C8AEFC205A764648033CE880185058566F6C5585 CE9EC3A63FC9F7869D38AFA361D8D21A9BDA5A4A9A88A41868E6F6665CAEAB7B 843F85C315E82F306AB112A750BBBC085CD84A1DE61FF8D85D014870E23575B4 CAF42C9794F94303A29D012404668FC1EC365C5E429CDEEBFC0BA00B0CBFC385 CF96D3FA76ECFE8AD5829E15FF4F2B97056367D1D065B91D203F02ED3EF6714B DCCCC6B0DB2CFA10DDC1E1960272A82CA9AAB1FD3AD0624D17DAB7767A210ECF AAC59A94046039C2C16C849CDAA6014666CD3DD1086E673E9D6CB359768BB8E9 314B8BAE072FF5CBE76F4C98B8C316F8F53695D519442F3256261AB2A41D9C7B 5EE2416A26F72D1D4E76A2DE4B403C16DD0BB76DE0501BBF5A2C7E0E0503EF2F 7FD59449FD6F715737CBA4BEF42F8A362789FA661A5B1304895BE4513D267014 157993A54AD85D71332C1C3B849FB286644AB664A02989BD76EDB99A1072C8D2 5672E27E2B4F769EFE3A097D56277ACEBC78E62E174EC66B57B70DCEEE8F5541 341F16645AF7F8A4C82A8A0BF184E6783E73396625B4A6AE3C3C382CC65B741A CE7AD513C13FD65CDD649A26B936AEF3394931B3BC976027132B9E38AC22AFC4 CEF1BB7E1E3591CA4ECF11F261744975ED9EB39DB1ADFC1343F8E405183BF5D1 5E77C0DF24548A1742434C3C6B957E4BA97947D3278592F7E998378D1A2E5C68 15F0D59273DEBCE32204E1F5B6927434E2A2E80239783283F85D3E5AD7155C51 1F4C75344616B35C41F5A1D919BF5B94D6ADB0D42CE384C3FECC2042C2DA4B5C A2D550FC31590F56133CD27352605D627E4DA2E8A6F6FF7ED44D5FBD90BB6229 AA9D33BAC06B180BA9E0EC99A3F2B40CBDB095103EE6E6437A26B38D154A4912 CBA5D4B7354CDC005C9DF306046262D1B934E6202A248B2204FC3C873132C749 FAE8C6B690F77CE73047349680CC0ADAF12B84FD7DAE6BE5768B0343385C074A 0042A24C40823FD601CF56FE1E824C7FCD1848129891DCB2D1A23D3337E230B9 540D822B81D5A73D2B8D1B68ACE23FFFEDBB502C314157C81CABADD4741A1722 F0498BC2AC802B6E11E8582D9CBA311D73E6C6A9C99BF5A1CDA67660883D91D0 78A725412D154CB2132A1D8E26CBF1FB99CE3670D5E1DA428ED40C1405CBEEA0 A644594C860A9C4A87AA04FF69845062D284182B7CA8BA0D7291C7118093D92D DEFB940CB470B68EBD9273E7221D8E210F4378396EAF439C2BA7F1973E33ED00 0B6826BF7FF7A53FF4EF5DCB05C9033A1E9FD728B1BBE8486793E9E30F178D12 86BB2B592E8052B2327F374EED4BBE134F01CDF1302F54D9D7F7B6D85DBAEB32 14251C28D7FAD341DD966A9070B92046DBF29D55DB4FF6ACF76A6B4C9B533735 2F5C5D9048069F79B359CC6172CEC51E1D224CF3E78AC91D092AA4206AC53DA7 2EF41A85D68EA8D15C1F2DCAD1158ABB030F71C08DBA4548CC4208912F10A8E3 70BC781543F213CCFEC04B295D0EFFFD13B484FFB6D2796EEC8BB47388B136C8 6F1AE1C7EBFD72C0E0C46FCEC61B924660C4A449A06A0DCB8EA07ABD1ECC5B83 470C9687843431DA512FBC4A3663FA406A9D697D645B3FEBAA9B940D10E54965 EC75831D834E856C787B5D3C040B0C19FDB53CA5D6A45F61271619962A153AC4 4DC5A43666E08CDEA88EB9F1DE57F0089BF654D8CDF4C4D83187C420F5350AD0 1E76BDD381B93E60CD10FEA876BE760BD93B0CB9EF377CC7C794C1B61FD61AE6 E666D86EF49F7ACB2DEC0BFFDC85501D65930C20850AE3BC471BC6AB9D5AB3A2 59EFFBCA8356FEB4F8FE8BB282F4EAA7F1FF12919B23BD98E6F494B0BC052085 5728207456C422AB83305B8948150B8AFFFA100C7BC8A8B1C0322CC4DD053007 908368824A7ED3DA0DE96D50A60BDAD45F8BF105161CB7A781EB878013290033 CF1534409F892186D86069F6F86F820A23D6B6CDEB579391 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR8 %!PS-AdobeFont-1.1: CMR8 1.0 %%CreationDate: 1991 Aug 20 16:39:40 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put readonly def /FontBBox{-36 -250 1070 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C 68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65 48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3 9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB 0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB 8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466 FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3 9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62 D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8 9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5 ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6 10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582 83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493 2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA901C077A059F709F30 4384CB5FA748F2054FAD9A7A43D4EA427918BD414F766531136B60C3477C6632 BEFE3897B58C19276A301926C2AEF2756B367319772C9B201C49B4D935A8267B 041D6F1783B6AEA4DAC4F5B3507D7032AA640AAB12E343A4E9BDCF419C04A721 3888B25AF4E293AACED9A6BDC78E61DA1C424C6503CC1885F762BD779B0C3709 4DF9CB65F0648B72373A300B4D07500E16BDEEFEE7312CB5F85E657E7E68617E 344739E4AEC451EA237DC1393601496962E3AF4E835EA3C5D7F6C7D3E97B7A9B 81953E17962D3836E0C20B1A0B448BE5A0E1B36B40D46632EEA6CE2B50F0A5F4 42496B643703F1EF4100A57DF0C9FA5164064A74472CB66E0C107E527BE1D976 BA9AE2D05EC24BA3AFD5CC8D02214A95F8DCEBE6BF26B9B11F6A58084358509C 26C5D51B814C2833D013D8586AA739EC21B2E2BD26C5FB400EC27AFF31EB6C66 61A792D4F00510D1C3212DE7A33167CD8006A5931ABD1083A714A01846E20576 169C4F5B6E02746284E757EC1F8627216FA323C8A2EFB8433CF6744CB82D76C4 C238106160643DE29060A691BC2AAEC3A4F839C58CF2D22E90AAEC77762CB581 49CA7802FF456F8719E933A9838DF71FDA60D91EB5226095218C39696593700A 74B1AD1570F83C6E1337115149645FFC230DC82562021A2F3C7DA2A79F24A816 EE0BE0B7EEA7C8E8FF79897C2288580FCED124A3DE9D0FD626D71BAC6888F4D8 AF7D5551B047D4F042390C3CFF1FE3454F4FE1D319AABBC8B00E74AB46C3129E FFE37417DE94448CA038DF96018462E33B261697C01A49DEC10F902DCF556F81 253D2A4B42F0F66D8922957AE8FDB460B1329CC829F4A3B522E505C5EEE10B8C 97A4F63720E9B01EB080585DF86D151BCE513F3943409DB83DC9133C7068290B E8C4D5717EB5FD534F683E4F1068C2B85B3D37278F6D1A4D3457FC39F1EF787A 6BE797480B095B9C81EA3178AAF5EAC16C5874802E0EF77FF28F7A047378BAD0 B0F15E3FFBA057053294A3235AEB1920103DC0550208D2A83E4B8EBFCDE997A0 27308B5B9D5D5ED00DBBFD4A087AA7A028538E68B98C16571F3BBCF471B6DE05 91E9191E6EED6F2676FFA29FED7BC55075708735CAF4C0263952DE9757AB130C 6206375F07E0AE7FEC10F0DE01B6095F444233E9EA5F3C27E24DC990FEF020C2 118BADBD95930FBCE534E74D7AD8C771FD982BFA07AF157042F0CF4CEB7DD2C8 BE9DF8EE48A3DA41F85361469936EAD26C6B6E1AB25E69D6529CB4D94BC18393 B9831930328096DBA9CC5FF220D1429221B04E26AF13FB44D29E016C95053117 BC47663073B2419225F9EF40664CFAF55435F0FDFF086E8361694DB06DA84292 134A20D25C87526815DFE2900569EF994E4204110E51232D0C5B2A0057879377 97433DB37E8D489B43A30537CC8B31A9865ABE4D53288D233EB5E518FB9FCDAB 51A5211101B8A4F0E57F429B2B924A520E1F522125D2703BDA214C25C112B581 2583EE0778A43127716667 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI12 %!PS-AdobeFont-1.1: CMMI12 1.100 %%CreationDate: 1996 Jul 27 08:57:55 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put dup 59 /comma put dup 102 /f put dup 105 /i put dup 110 /n put dup 120 /x put dup 121 /y put readonly def /FontBBox{-30 -250 1026 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC 4391C9DF440285B8FC159D0E98D4258FC57892DCC57F7903449E07914FBE9E67 3C15C2153C061EB541F66C11E7EE77D5D77C0B11E1AC55101DA976CCACAB6993 EED1406FBB7FF30EAC9E90B90B2AF4EC7C273CA32F11A5C1426FF641B4A2FB2F 4E68635C93DB835737567FAF8471CBC05078DCD4E40E25A2F4E5AF46C234CF59 2A1CE8F39E1BA1B2A594355637E474167EAD4D97D51AF0A899B44387E1FD933A 323AFDA6BA740534A510B4705C0A15647AFBF3E53A82BF320DD96753639BE49C 2F79A1988863EF977B800C9DB5B42039C23EB86953713F730E03EA22FF7BB2C1 D97D33FD77B1BDCC2A60B12CF7805CFC90C5B914C0F30A673DF9587F93E47CEA 5932DD1930560C4F0D97547BCD805D6D854455B13A4D7382A22F562D7C55041F 0FD294BDAA1834820F894265A667E5C97D95FF152531EF97258F56374502865D A1E7C0C5FB7C6FB7D3C43FEB3431095A59FBF6F61CEC6D6DEE09F4EB0FD70D77 2A8B0A4984C6120293F6B947944BE23259F6EB64303D627353163B6505FC8A60 00681F7A3968B6CBB49E0420A691258F5E7B07B417157803FCBE9B9FB1F80FD8 CA0A265B570BA294792DD2FC75CE2C83DCC225B902551DBD11E687EAC6E85D2B 02C28359A40AE66A6A6A8862CB17815B41E280313F0EFAA9981755611F7F683D 35603984D60BB0C772054355A97A5E03C689E23B04DA79080CE4579CC90EF38B 1A64CDD92B907AE83192C3C46C5FC40BB412F6656DC6349E6D29B5936DCE94CB 98E3B465FFF7574095F57BB3750F1A55F20456933FCA64CC1B060E260782BEF6 721D38BF65DF1F1DA5439DBC802B4A9D803BD635C05B9ACA4D26C28195A1F4C4 CC623B30B076D4861E89B93E2CF26F6DF07199C03BA5466FA3EFBD7F77EFE068 E55B7186855063934C5716EDC3F5056BDA963B6B933B546475BCFF91C512F411 8D14B1C32C9735281E536F87ADBF1AD9AA04D7DE2096413AB8B3C9E8B1F6F338 3B80D637D761A7A992CF58188FB0A04FD6C6886A60F27EF31C45E92F4717D8FB D4A0844A8D9036D5F2BBCA2C170F3042F22DEB8D151C7135AB91DA289886604B 70B9F2A25A7D576FA1D70DC935CDD3E81915E9BE11CB03C9FDCFDE3700BDDAAE D61CD52A78B075FF4FB8BE949FCC4B04813776A3451FE65A47D57D7B66499E99 B97C5141D2E05BA86C59535C34BA975381F96A4EC47EA032C6BEEF9F2E6565A0 0712528976CD8FD94E2F8F2607FEE1B55382A62B35FA16C62707F8018B3FF765 2DFB5B836BFA9050042921C72B8D032BDF6C594CCBD796BB15E26398DD34FAB2 4DCA5FDEF42086BD24A6008E5CDA36E919D9CE1C4174A706D166CE490D7AAE60 48CD227FED7547ED1DA6E35253BE7A2FFFE59642F9605846074A63B80E60E46E 129F6B57DC84CB8BD753C017A0614101B04CBDDA982E68D06BEF3405EEEAF0EE B19C0B81390C67B61C835FBA29F185C0181148D2DA6C31A4A81BF6562ECE8758 6E03C99C4FEC726E5D5A7018B6AA337DD20645692979DD0C4595C6823D3E2996 C0F9720F1D0B15237D115DF8F719FD0B881C67CA8581FF82DE9E5AA140FAA4A8 556B1BB88096BDF3F9508B18C77D55B3F261955E15056B8D7E858D5C2D5ADC91 48BA6467ACCAFB4774029ECFDB546473CFC12424A55D0156EBAC4ECE9066641C C2D1F899AB0C9CABC6162BBD3CD9A714170A2C0322F794434138902878C473FB EB117CE48980B438463DD0B744D79A8C5A8C8072A3D4F3C089407852172859A1 EDB99AD2C971DD79AF32F310DB06A936C171D50CC2FB90897AFA94AA2F80F07A 1CFEA2A3AC72330856AAD18CD9B7FB44B3F9F21AC82B4E849F3327814E35812C 948DB4C4DA7CD96D1F6EA9C5E4C22535D6DC650152B22D59E6607221DDD95B19 FD0D21EAB06E2EE895C1CF568A8304EE76A34B07ECE88908DB773DB468A82105 B7AA421995AA6F89ADBB8CD23C78956CA916A1B65117F732B3C5AD0BEBAD2E55 4FB1A0C25C6E822333F280959F721A35A6D2437D855E594279BD8B0EEC6498E3 B8C610B79D94FDFFA9D40F761147881ACC75AFA12417E3E35A60BCCCE33C7CFB 634B59F4410CAAFB789E9BE791290F087DB6EBC78F254321DE4D08D0A0EDF63C D613DFDB1FDE288D1C9253468E1C8B4A45AE2262FCA500B01EF654788BE8815B AC2B12A07D97C93D2160D03A3BA7AE44AD2D94ECB46B0C3D77E42508728CF27E C7C89488FF3E9FA33C6CCBF3B865400DB5FC56087ADC39153442EC83984297E8 F88C90937497A59BA402E37BA77D55103615E110C3110FD0241DD2CFF3BFFABB 9FDF885DC48ADACBA4149E63C6A9DEC3A998917BB687FDE96307733B6C0CE626 E64F6B75EF2BC21FE083F4AEE57B6DB7C6CB35C6434B6ED3BD9793731BE14738 D70E6794C52CA95CE5A3B0F2FB00A6832F9364ED222EAB736BE1972841F800DD 807A8D222C5B7F3AEA5010D04647DC7F3352578FFB061C20A71B72ED01392663 644416A9DA121D7D1228A87F5025772F4DB310A7068D27F9410490E84E791FA6 E31EFBFDEDD840E95E8ECAD54235DB773E4560868AA983849AEA4ED88E8A99E9 25BC203768D6DC8CDC197A0780FB6EDDEDEA77499F30DEFFE0E2AB9E11DAF981 C4DB962FCC50F3B72D6191E1CBCFAAD21E8CD516D9D4449EB4EE7C9930420F01 860909E0371FB716C3DF15AD4E53228D5578540516650C1F794BC3A7631CB8D8 81AA0908A59AA832538DB185EF5E1DF3ED5C14D38B4854D7F3CF395CEEBA15AD DBF3BBC6365DCEE9D6BC9E1934416FC794679637240DCC0C3D05BE84A035C4F8 670C363C94151463CBE0E94BBF9BAE1EC2E3D063E5B3B835101B9D074372CF5D A8D284D17C3B626C93C6DD4A466E9F20772AFFFB6C952ABC6DCCAC0F332A8393 B18CAB42E1953D5E210DB0384505A928C947880121DAD5553ABDDE2F0EC57EBB 9EE635F71A1DB61A5E96D25A3A106F76BF2EECBBAE7C26F9C97EA9FA86037506 0774C192D37D61B109BF4814CF9A304DE527790A802C08BE90A2995CC9E1D3C4 418DD9A57E96776D3D4DB1D4A6569A5A59CA238956290337C5BA345AEAE973DD 4C49E0A006609792490A2B074AC08F75AA88F1C5B36D9EB381975CC0C9D9709C 6F6E5A6750E169C43896E248AD03E698B0F16BC3E11F2A1CE1B4108A40AE3282 BDBD703B4C46FA16CD444AB7E5AD25C383445A18914585DE82B9B6F25550274F 5B2F4C79E860844CE9BE432DA91D368358061F99B6DE965D53CE55262FBC9059 6577C55BEFF49C2B1F90060AC1F1FA55DB320865B907DB931FB52375CDF1480A B839B89F6C6D9CAE22F659F71010AF1F06D9DE96E2BCEB3BA8FA6F8D0E6C5B4B 75201274DEB19F0DC6C2DB2ABCE351785BF42CB6A465F57019FF1BC8C8B03C4C E3CB5729FDAA85444E7442B50888ECBD74B2C1B5FB2DDB9E2C6A0B5355133986 F866CC3FA683FD6E341F570797BB937F33E598B3E713E3ABA5A06F222D9CE85F 69311CA1A617C6585235E0257B331EDEAABA1ADBFA216E2E6F094E7CB862063C B7CE8EA4B6BBEAA51617180D4BB2FD5ED5042C0A980D7E3D6AE86ADB4EC1CD75 E60A4BB9D8F9EC0BD3091C72581A2693976B83FF4F4FB2143F34A4BD0019C2DE FAE797F0C23F11AC2E57 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMBX12 %!PS-AdobeFont-1.1: CMBX12 1.0 %%CreationDate: 1991 Aug 20 16:34:54 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMBX12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMBX12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 40 /parenleft put dup 41 /parenright put dup 46 /period put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 56 /eight put dup 65 /A put dup 97 /a put dup 98 /b put dup 101 /e put dup 102 /f put dup 103 /g put dup 108 /l put dup 110 /n put dup 116 /t put dup 117 /u put readonly def /FontBBox{-53 -251 1139 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26 7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF 20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390 B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D 68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809 D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E 26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26 77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299 BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8 30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5 148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7B00AD58FAF645 1297991B5D01701E82228D0313FC7C66B263BC79ACDDF9AAC48A3CBF42B96E38 583E1D059953076D68148DC8B6C9527B3A74CE7DEF788A11531F44120BDF0F61 0B2F3ED94EEBCDE4ACD23834C242AA4314B9EF98E4BE72DB76EBDD0A028CEA9D B4C38C1F2D24B8FDE686832FE96204552C820E45B6BAF0C3308742AE286F5899 FEBDAB31722A021A7D96ACC415AC8DF252980A2538F41393BEC158F1596AF00C 6EFC7B823A34F75E793EF2778D4F3361617F3536BE29D5CD1E7DC822FAEB3F1F FB43AEFD82206DD0DB4ACA9D7B5F547E192B75CF15D1BA55D74194F2A094123B A10411F3126D4001974E7A3B76587A71F5F3113674F7AE74482B6CF433AC4448 B0E760BCB1EF58672F3238D41574AE4814291B2B0E210FA5DD548C9287677285 56174FEC494674BCDE8FBB523BB6D34ADF6C3D0A858569A21DCF9F3B9AA5DE7C FA397EF3F0673B195CF6ABDA61FC467D8850D5AC8FA948AF940B3CE56D9202E2 F065571D8CD6C37B76E4304DDBA77F558F4E1F2715C2B994EF6754A23032A583 5C551A146DAB226AB1377A8179E4E7033730637DC47081F4E79A0A60EE10543E 8636CBA71DBC76CF034D891073AB1B09A937D3A388FE2416E03ACA5B4CFBC928 9692C20DF2AE97B435A4B015D2E9011654C6AF5929024BDAF8C3BDEC5BCC1D51 9C4BA1770F75F67BC0A52DDD8229706C10B9F8FB198B90257A37B23241D94A2F 490BA421322B087FCCD5AA9AB0F20B31C338699EB22374C1BE9A3726F8142BAD 65EBA26239D3DBC35D267C1A15AAF85C05BF8741DC50B8F8678AC6064357779C EAA9DD3787053EA8D1AF55C10E455A33448E9302754C1A55B464B8948C04A981 7CC82B59CC8008775BA3388BEE96C21AF21548D11F5AEB89B54F0A27C1E98CCC 51340B7717764FE5692C8C6B7C3E2BA8B50028D0BCE6F1AEBE46728DAB332518 EFD6372E09B0FD076186BD461F2999A75638A3A1074EDB09535387F695BA972A C1EE29F1A7B69FA3CE21D39EBA0E5BB9C7832A363D3598D1C5CD48125B189F0C A3BE679433976A34E66A09B59A028B10CAB4B960E3DCEDFBFA49E3771B7EAC05 76587C127E6250CD7125EB3D3216D6414A73928BB2ACB6A0B513DBF939D249B7 612D363C10A7333E72244A44351331950AD41C66ACCBA088346FC99A9E7D193A 710E90DD932165407C99EE7C3332EDEFD0F0CC8A6F885196257A2AA503631675 E911E2862BD62F6CE071EFE9105DDE918463FD2BFA10B05068A8657CCFF00B41 29ED8EC05EE51B0E8A7C3BAF427734FA662ABCD9E977DF2A7AFA2BA63652A1A3 FA03FA7CC0278FF356F0FE94DCA92F5005F7829A9A44F907C29ADE8977DB4971 3E94C1547246B18DEE252348D685DA6039E0DCF5C5CB0229CB2A14F168830488 BA11D90C4E1EB4DE27685BC422F184663CC269696020E322002775C48A832489 9A3CD3C8F9F243D4D8119AFCD9FD9E6415D8AF66A7BA3F918F2BC5C3FA17B15E F92924F124118124237C0EDEDCCFCCDAED3895CB58CE06C6B29A831A44781E27 CB13B6E0BE1B4700935A7569D8F46F829C3E786FB146A7F0A142D30F56F579AB 65A4C47383685BA8372CD1FF436D94BD20398D07C0DA656648F3AC3069186561 BCD3D67110229141EF2919819E4D1CC0167EFBEDB9FA24B6EC5786C6CFDD3CF2 1EA2580623B51BF8D760635C48E9B0D689D78BA554CBAB3867E97FAD7DE18A4E 400B7C9D06A08286E6624934F52689D7D1A8F9D9F651E018297F3A4DA7A39729 B6D3E37C1D94F2CCA8ECA43C2C5033B05DF4F66E058191AE2CC9094BFFD0C52D 014B5BA4313900FAF9FE3441D0980EFEC7E888BA95664EC811A8EF817E8FB1E8 0BD9D4E6D5B1145ECB4D36B300DF43E25BFD17ED63C81FB32FA74634D7A761E0 683876532F61C8263A6DB93D816A5B598B0DC7BABDF6177389F9B8B445C52CEC 15D56E3CCCE44387840FBF0E0310C23190B41632EF3C8E03DF0C13C7965E4F6A 35100039346FFEE23136E8C82580CB8D40F18670983DFECEDDC60CE3B416E880 01D150291113367922953725044C0D215AA6031E1ABDDCD0257A1CDE83E4BD45 C286065699D7731D366115796BD38236328031D63D609738F810086567FA2817 568BB4FCE765AE73318E3586EB9DE616BCB8C93F0A1747FB84C2093E922AC37A 05506C3DB346188DD6BA82CBAFCE78B0FF2D0D3A9D307CC036BC47C00693D7D9 75E5056AF8ECE9CAE16E65F4C562722BF452827CDFC9A0B2B09AB196A1A64034 45B86D5DEA989068934C49845F39357E459FB0E9AF1FCD5F69048A6E55BD566F B2364F1543053FB382297EF7AA35E42190BE47E6D7C7D2384A048835C4DF5157 E1CB06A50903D95CB3A7F7331AD32180A5BD1A04141855F0F73D182B14A3D4BC 5356E762B5BA04CC4666F9D45C489D79C89709BFA893DFD53E8883A0EF427C56 26E9E84A2D96BCD9062BBACAB41C6207C4E5DEFA325A5275BE45B7EA50F7A334 51F881C937301C5064C0F65BD5FB9DF533E987BB29AC9C971842EAD66FFD0B82 DD3030D2D294E042932C6079E243BC128CA0D891274A602389F564B695D4C8E5 AE55464F86A691534B1EFF23CE1FBF5586CECAA9565EF66C8C83697382AE0B92 3DA2627B89359AA0795F053C01EFD1819B3C49851949480AB3F5E8361203A56D 25C8BA4ECF5F1BCF3E3E34141431253D08DDBCDCF6C693E9479A2768881337B3 FED8031544218ACB725A822BB2CEA37CB42626F5058BA092CD3B5B64FEE028E4 2C4E1770382EF772455FBBB7BDD44D9FAE752273C8884C7E15DD9FA7AF8D6499 F9AF02C9DE0ECFF7E0636A9C46B2AF8C64BEE4C1CF5EA78A91D78AC0F78A80B7 6C930BF09CF53A12929FE1446D787BAE48AA6B3ED25FB148826A4760DA36E6A5 C52ACACEA1608536EBA39D00DC121F735BC87D366695AB5A1693AF929B8BC45D B803368FA6B43B0711A90CDC74313664EBAF951D5332986AA466A20CA1E5D4FB 13BF9887D9DF55A2C52F31CED3872C795AC8A16CE960CEC470960C40AE9A9433 9A2368334792E8B62C052B6A7FE623A48AA66A2F6D31CA5002E15687073EC741 20AC6F305BD78A0A5DC697BCEA3E8CB1F31D75576935CF870BA97822BD6A0A47 B42526B4E42D905EC7F4911CC865E4EAE9F55EF6910BDCA2E704C7E57B987649 9A4CBB2C68BF65128A1EBB659B797E43C08AD649A9292BEC8AD2DED0030A203A B956F74ABE489FCA0D5B2F7A01893E7F23BE0C4498CD62998ED75EE34533EF28 4BDD58B11435CBA0ED2A2BF6776C5D32C0CD73016B4990AA61584F9B586458E1 44555AB7DFC82047BB918CEBF1910E3038B6335DA5D5EFCA003EB6A635E54BCB FB0B583ABB907D4C6337F0B20929AFE5C4272B30118D05F216B00656E60B4090 64629B24AC7A1BE2CC011C870B5F7D48E0DEB9A52F4E58013D6B9BF19FD95553 A46F91FA8124CFF3797371B5C36F15D720C59D5ECB9A8D3CCAD3ABA25E360B17 DD8751ED04EC9DDE19C6CA7F0A3FEEABDDEDED8B220E2CF4F20333852EE7C103 D2C2E631F0CF8D8799009522CF1EE5399ABB5127BD571D10C616767A02753D4D AD1C6C4520B594E94501A4328B1FC02779710CD184D3B31DD1EC7003EA54F7FD 1AFCE757E00BCEBE57F6085C8093A684D08CFFB6700E92BC73D43F845F6485CB 8E0C599C01A711E4192C86442A1AD13215785F4ACF270B3999F5F575280F5DC0 2CDCA83C2BA183D23150323EDF51AE1FD8A24A4FF3B27B81232C3AAEE165F785 A53684EED8E901D92DB705D922A0C5BE3F46AA587F7DB4140FA282A536DABEE2 633625512DB91F8890367E86C648F14FBA3D0835FCA3FE6CEC0F1C639031C5E8 EA2555A92D3D38C86DBE6EE6715ECC60FECBB3E622F37A4E96AD0F2BF8BE3CEC D41E8DF501BD82E633AEB78F2FE84981B3DCAE0F0B029CF11F52F2AD995B4301 CBFA547D1D3D8B5A56C99AAA14D820A66E61B252B7692779A5B3D3D08FB960EC 4513D0654E3EEE3EC65D16AC6227918D1CA8B9BDFF7FB79712BEBAB3FDCB626B 9EC282EE9108BA42F8FB56EE7C460A5C77891895E7D2E80B9BE9BAEF130BD611 8CB05C502A90568D20245F96DEA85C53DC733E9CE3F1EF761699974692D80BFC 60BAC34773D65C411580BE4E6C578EA4B881CFB060882775035C19718457FE08 868AD15A39FAE1E275FA5E21F2514D9E62DD701C7927808658CC065A56568F6A 73990C00C34A09E45D5789F9824491EFB24BCBCBAA2BE1795C713D24F963A530 7BCB6A75505ACAB6725DDA1C945F80A2A3F474BD7A62FD16E62952EFC626FFC2 BFE24996649021EB2570D182EDC6175F78974FAC52F08DBC37041419B34EC8B4 06825D73040B4561A64714B400FD96070E28E1AAFFBDCBF0A76D7323C4CB6682 00BEC052847E5730121F91151AA2F4FB676CD623 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTI12 %!PS-AdobeFont-1.1: CMTI12 1.0 %%CreationDate: 1991 Aug 18 21:06:53 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTI12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMTI12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 45 /hyphen put dup 67 /C put dup 73 /I put dup 77 /M put dup 78 /N put dup 81 /Q put dup 84 /T put dup 97 /a put dup 99 /c put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 121 /y put readonly def /FontBBox{-36 -251 1103 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 525003F3DBE5BF07B2E83E66B7F97DDD7CE0EEB75A78BD9227BF359D002B6ADB 8AC57A33FED4EF021A7085B1E2B933DE602F0FF71467ECD501744AE338AF29A0 26F7D368AC6F25CCB882DB7B7343566192BD687E1349225982823027D3B66703 3B0DB7A7E680A682B98023D39C7FAE81A5D5B867A0A66C8AA0DBC83B1596A84F 0436AC6A7900B767BDCCE0060A4811003C79FDCC71D73F7F2D0A6675E93AD21A 56B4CD8EF75EED3DE8C0A18BEBF7B9D1BE72504872D56EDB272F1E97FC726CB6 68C85C713059DA19F6C2E0F3E12710A59B6FC4699AE883DE8C8615B7292AC25C D5714B6CFB14EF0EF11EB13009BEBA4F345A5D3D6D9926ABC2BAD7DB1328651E 437BFB3C46DA7B62219660FC368CF3D3704DAD3AB461C28F711665BF484BF61C 052093D231CA65618EA463D63E406ECE858D180A6C0589B2FEDC321371C28E77 DE974D655DF5FF7D41ED01FE717D928A885F6FA6CFE4D2C0807F8E7F937916E0 96EDD1A3BA67802B1F4A49100E75613BA0356D9DCBBAD4DAB3C59E70A47058F5 2163D1730F0EE4D1F87C3A4AE723A23CFD7986FC4FBD399347E9F5946354E013 D860FC446AFF0B0744F5DA27CC777C96ADB388D1E835DDCBE123FB517679B9B7 EF696E091A9D51510BE264701A41C04FA8125A48F306ACA7A83E35D5BA0C296A BC594ECA2CB27E92FED95B595C21E5BF0DA724D40761CB377BDE5FB98C9D152D 6C0DC98C4083E9656321BFC445CD6FCC142DEF16E27DD6FAD0B3185223B1A7D6 779F39C70793184F2C3B721FD0AE6D8E063BD47804785DAEA74AF8C75483B713 65061653E42CF060BC5CA17A205499A87EA62605EBE5947168E21B939DE5AE0E 1DB32EB8654DC7599D07D101AE38B2C20DDA9B6E48EE69C360A92BDA58EC1E22 AFF94FE753694E69711FF42E04936DE4994299A13F29F60ED5C7945D4C67A634 6734BCCE6F3CA77CAE38FF00F21D61A3394EF5187C967821E811F7F6D3D75A63 8CEC525A5EA7FBFB9A535D4555530AEF95F624A45159F3CCAC84E6D345CCA65E 75794B3DF832EB61701AE5737182FB2D169989C6D6F2544E2B1BC42A7C47F79D 3A8CA063F9AE8FFFC114E859433171B699172995E41260148F8451DA517EB557 732FCFA131B73FAF05852514754A4B73DBD0F4077C24E3B10E657D3CCA5C0955 6CE5CB07DF8EA90FB1F9C1830CBE3F448934C8E48DB312DBD94FF32CC5DF5518 AB0153EFF80D44F988DA0CADD8730BBF9E17A138654D9E5D12FD023A636B66D5 29102988072FD25763F3609541AF43E8244B12E9B33625CD4249FE4AC0E248F1 22A1B1C3E69EF241E8402B0D148D956C16C60C44AC3EFCCE7DB0CE7694F78BAB EDEA44C9E6C7330CBCDDFD7500FAF9BEAF1BFE24F386C3171013FDB7DC9308B8 4D3A0101FBFC53E8AAF0F3D320DEE11159346CBC5EF2C22E3C011945CE19BFBF 564A7BA5CFFB5A45B413E409B46ADF4B07BEEC44C98407F710F54E1801CF7943 05CC94C599AB5B468ED5AD4F11EA6F1C923BE83AA7836FD0DC18238B898337A1 94CC0F38DB7E1CC3CADD998633934093EA463B93251B1468555A54199EDC7674 9D7393C746902D609D72A7A3F57E4C14C80724698E859C04FE9C2B08AB8A5BB9 D1E282C61B303C801BBA187E4704593F5EB36612136249D3128EA324D1F47F5F 67EB02247F5A996BABCF8BF83C24BE291F9BE61DF32643C28A94E480C2AD873A E715DD60140BB8D25A8964718819B54A5BA6AA54975EF4D8EA98639ABAE4E61C EF896E8B9505DFEC14E86E946F827ABE0F88021A211728C9D525373543A2A5A7 02881471A9B11B6E3A5B69C2FB900D0FB07226783F5CF5608D03FDB3C87C654B E25003332928CB035D3DC629DFFCFB277B140212C22EDD81E09054A570708F10 D387B53B950AC54B1E94D7383F753B4DA66E25FF7BEEA9A8D6B588D702B7AE25 D1E2447521BD60C51656BD710CDC80BA2D3389B1072F75B0064472E89D0FE96F 43897F3158CE24AF9FF0B23B77AA7838BB66939B82AA5C789C455A9CCED0212D B3587EE22C3ABDC5D97D81F9C70FFD521FD703384F6634FD23569B80B3DFB636 1EFCCBAFA7DA5F5F7A7F4FE612F0FB31D8BE69AECBFE1F62ECF66D7F1660952E 65FD6BD7A6017B5DCA819416A667A59A0EE8C8257F83EFA5497A96749A6BCF25 6DC0B91A86C06B0633A95AA01A8F442A663D6B23EA7A141A63C063A8E49D818D C0000E3889856C14C704511BF7D033DA467EB1BCB5E2E3E6FF623E9262F762EA A89EF7D650408F825091AE68E74F8536AF9C8EDF6600C6F729A5EF13174CBB88 00CE86132E4C0982C695CE92D7441B3F77A699D1B941C7D8C66EF717B63E0BF7 F2E8D5B7410D503838598060FD48DF311D596ED867168CD236C7148051F2EB2D BD35F6E87810E393655464720B33CE68D48F664B49C7B70F9CBC994EC9897F48 7A6BDD927409DE80556BE5E6CCC05F1198ACEECF04974520F93C891749DD15A1 615516D43A55251FF0CC00C2AA40CA5FA677F5877506ECA41E9CAC0D842B9F25 7F7D50CBB7BB6B58621762B489BF0A4908C1A474205DACC3ED2939E9CC17A3E4 903606F8220937F06368C9D1A349C2CF2B30546B9E159ED4AAC307447792A1C2 AE0E3B1F2C807C919EA0F4243130C08DD7C4E56C4F571E549CE96D29DC566E40 B995783589AB92DA35D7A003690BB8856E5AE940DDACBB160A6426CF44BF8F6D 7690A009C5062182A01C6353972FADCA75400A0E27F4B8F0FC1FEA061FC7A7B0 82E8A9DBCBE320442401BDC775A537532AEB0A5F69AEBFC9FEB424A1F86AEEFE 279EF8055ED06FDFC52C3FE593B794955B75410C29135C00E1F46EF0F937D776 7E9FA34CEDDED00B7B00E67970EE93E72F15240E9DD95C21D543C171002A287B C4BBEB6818252FF7A9F75E0708E097B8A4DB664D13020055EBAA2BA4B91CCA37 E3C4855E54B5475E8B2EF074006176DCA26E1871CC91F61E25EF38D058265DB9 6D60A0B31442F2CED17F6F4244BE64A40774B9D79E90ED935AAFFE2ECFD9F1C5 3C137CBA575CFE12D9115041126B8C06B41FBF27DEE3B2EDA32EA29B7726CD9E EA72B7833E784D3C7D9F8F758C6AF1E1B4E320FE817C7D75C13E0C9A1DC94F1E B2FC5E3C0DDAB70F615130705A5DF33DC98F6D8793F5A0F3F0FADE4FC6FC92ED 35AA4EAABD3A8F7745488C76C681748F893540BDF3D173273FD2592E5D9B6F41 2E94B0686DA97E7629E29A31F5B95604048261DAE593E17633DDF3C504A7FA2F 0CE3D61C94FF74DE2295E4121270E269929BB0944EABC287A68236344034C1E6 810FABF504E2EFA8C7973DC54FDE098A74636B7BF4DE22C49BD4AA5C49B04345 08FA3D54933925A5BD1FD57B29F293D4E7AD8B5CCE02BDE2760B7E706F4C9E7F 8BA19AC29EB290A28CBD1F3531F6DAF40DE08295F2A1D3D360DB6ABCF0D9BCF5 108663DC3458BA9E93C9ED96AFFAC96F785AFFBE5FC6DE7B6A43FB16A4436B0C E0D04F8D94E3A6A8D3289AB956B8CAF35786C614CE3269E8AB06D073207558E5 0323204217496814782D7E5220AF1BC7B256A62161C70191DB3AF7E4EF4EE8EE 41B9655BA4946EE80C6A1BB7D9AEB6A3A02A1E0367C644723D2BCC62AC4E9296 9776EE116599F89A4EA834C21A3726C58CD6586FD97CB3EA318504E225EBDA50 262B706DA257AC24D7B0D33BE0EB6085A4824B27E61644741A4EC99379486C2D 41AAA994A99633EDB46CD8A69E7B6F2BC3829F089D801970D2A6E96CC37EDFD4 2A5B7B913EB3272AB011C819EC7EF4226D3E5CAC90845B6755AD41D50F02EBB9 AB981B7C3C23489B1BA6870610E7CB765DBB18E6B99161F4345FCAECA59F2E81 C2E61204AA679D5CD954E39A70D8F34B7CB9E8FB870BA04CA19C5F048A5A9090 667E47362ED11A5008032B15F4AD197DF4F5307AFCF2D5AA80B9A3777FFB13B7 067EBB733EE0C93EC2CF07E11977C2F88E11D4D381D8AD356E167565DA691B5E F18AFA9E84B320D2A22FAFACDB86FD169CB215DEA692640A56214A206F44F409 B8ECE687F620D22FB56F253CEBBB2A87E50E8057265592137FF88A3928CCC605 787D428019A5E9D88233591BF443999FA2AAFCD1C54437A334159ADE446925AC 071660F22F1FEEEF4EE55AE2C448EE590890BC77CC30AA14CD88636DF4A76288 AF2FFF6DC7A5816EF39503708DE2879FF1FBE931209CC1BA01D693CA92D3E083 853A5F662E9997E821BCF1A1CF3F6E3B07FFF2D60BD9346764E4E8774CD3891A 94116B4384E6E7881D4AE84824A562B2BAA943062C639CF079F89F5068DD196C 981339A5F359BDB382B3419D3DBB2941AF9BC3715CBEFB176A22E7C8467713EE 5B7DC4F462E8CACB76871E6C1CEC59C39135145CB44B10CB48AC129619D1FDD6 F6DE6533BE874037B17CC84818EAF805B54D2C9F7E090A6861DCEB6919509529 FB3E874CF8D3E56E39C59E44847E384FD872A2C96FE9B288FA792EE535EF9CDC 6488B3E432DE2CBCE916912282BEDA8FCB2C5F09D6B660A4053A66E555F8FF82 FB0C8C5899FE28E060441175C7F8478F390C1F4B2058FBF040E4727A9EE5C5EC 6DD97274E39BF4EBC3A80169129710E3A67FF1006830BDC8692555BD4C05A226 EB0C10E67C0264BD66D6C09FE58D6EC3D4BFB07711AC0D896A1259BC4578B71C 908BEC3EFE5617587EE48ED4CF497D80E479A3AC6EA83DC11B187BE750004BE1 AA76AE56373F53B209D64FC9F3B225B11E0D68EC1A426675A6EDE28DF3C9D2DE C79165AF0068DEBDF459F34656EA392BBEB6733182DA4D42EE6E7FB0983B70C2 F4CB5E68D3DB4CBE57CD11CA0A0164BC2CC6CAA6FD1EC6F233181F61E076C0B6 8E57890E4814EF7D8BFE35DE04A4E5E9630A71A73C6CFBC4377EE8AB8C6E1ADD 08E746BCBDD8EF5D49CE1BC9C43CF47DFAC3942BDD7D079E17E63278FA7C8793 C7A76303E984D451655F4F237D245B678770586207A940618DE4F412296A72A7 38AD32730B1CC4B68322997709FE463C8E6B656B399E4ED1566E18AEAB74BF8F E0A87CA904F102610E5CD31EF41440FB8CACC7F080A35E3D947F39DEFC7FE8B9 CE2219C7E8E763339AEFAF2A8D2E54B4EC777B31F207E00A8523263ECAABEBDC A17A6B144965C83D8365EF564E5793C2173E34244FC23A1042DC350BCA6CC66C 8F31E187280D26D6869A11FEA5F94D8E9F9F4A38F50C39C6BEF6751C50B588D8 0B7506C943F37FFA272E41DAB59E3DD84C91342880C797C6B8CD8B52ECF5BD86 8C64B5385E5406F3BC8625E0007F62BF2B0DF512EA314BF100A97A9092552BAA 5EA5EADCEEA827DD05E7EF4B8CC24D38E54B9A7F24CF4AA44CAF51BCDEA8A65D 6BCD14E6BAAA4EA59ACCBF2BDCBD197ED4651E265F917D2A63129032409DF273 19C5960D846EA5497F3548EAF2E3E71761AAB9F3469DA1B3973D3EA1CEB5E90C 5EE60133C27431CDAB03C5BD7349F9FBBB21B72503BA43BFD8106E41BFD99AD4 B457705D244C3389035D79877C3035B6DA0AEF7F8B9C67186FAECA94C46CA408 7E274E923CE73F8C3B77D5E2F6F051E113182DE3B0A1C2B81EF15849158F4091 8D29BC8A3B75ABB1A69F11630887BE2549C0A383C88614174FEB0973919C46E1 BE04C237328F6E35CB02F153923FC75B25465496B005B3EDDA234E523D37B6A4 8ABB52F98CBE88DD45F624D36C180B9466ADF92BBE888D7719ED32581F179FF3 A50D1F1DDF09CFC47EE763327FF72695D877EA03F5019857C267F029A21C8FDC FAA6B00A5A358CB26526DA8A46C642F4B65616CCBCDA14423178587DFF35FDF7 91A95E68A9E4E4151AF0DE9FFC61D6913827C8FAD85C08F96652C26EFEC78277 1E54254264367C786B83FB3CDC29708AB7FFC9AA3FF35D693D2F75100533AADB 7B60A34130D6AE1F63ED8EE23E7715B1AB30F6BAFC7CAA7D8BA591E17FC62E1E 512E67CEE83D0A5CB77A67A6B389E4BEF2984F2FF777E4032DFAE30EB25FE2A7 89630FADA2CFAB4D26782959EEB98FCA3C37D075CB5650637ED42C51A99D61B9 39BB5E3DD66E8F223C2CBFFF4113592D28238751407754A9B688F7AD13A84143 6ADC8EAD4F25385AC67B2951E78E11B23633AC330BB6DB3D4CBDACA610D77636 932D54BA75688A15BD43984233A0DB33FEABB94799460204E0B51D0251507BC6 3125489B55B42A46DD307155C81964512E13F466A1ABFFEB430A090903672450 BD7EEDBCE60039AED04056EE85C57072565AEF527416875DC8ACB212BEFD08D1 7819D810F5A717AFA357143E9C333BF6C3AC5215C059EBA5596D0F1E1A58CBA8 228ADC05340477BE0454184B211188D6879926755CC4B71AAC99FEC59828CE6D 7608992C1D565479CA518CAC5311B686D3AAAAFEF24B8373230A2340AF4FF9AE 2159C0539E554B9EFC6D522E9E22C5C9FC2EE017CC46FE587B6B8FCC6D9C7ABA 2FE8048563EDDCDBAFB8E31CA70CAB84043A7BFB44D10F1895D2E05FB826E115 0D1F1C8C004CC6FE17DAA439429AD7190E2A1CD600F41B453BC1BEE00C51C292 066D6F480657E91F9C02512211B5F9E8B72891651253B8084ACFEFAB536F5B6B 6A9C76E655487D10788F6F2DCA652B2E0F3308AAB0905ED2463254D3F079263E FFB402DB5915D384C3C4EE2825058BBC477BB22F07F065AEE8BBE576E3639C50 7B1A24C3113B48260033C5C0ED6A81E408CD7D23BFCC9DA9CE1A880C797B6434 923ED67377BEB21D2E8A04A3DDE3E4D7216D40F4E6DB3F9C77B60311DD0E727B C07FB09A4D9FF5570E9565402B1F4215D33BD50297A23255D3EDF3A8D3CDFAC3 807780618FDD92C1AA2087848A95261B5DC3ADFFB3AD20CF321AAE659AA66ABD 79E200CB50B7A2D3D8979B983B7630A17DBF262F33C2F020EED19BD06646A81A 739D4BD6A73CA963E9B292965F2F436F748D77A7613F21CA0DDB5DAC3670C475 48CDF23D73D685F2A679DFFAD1B6ED9975387033A86A07F32E0744D475C230F2 EFD78840897582AD99992A6C30749F1844F8F9C82E94BB4F3EDA3155B9DC2161 100BB0FC9660115E958C936099EB0757F527469C7CAD08F0FA5543C02636BD6B DD7BD626DEF1A1FC2CF17DE7D7989B8F3FF86496E0545D85A47967810E463DA4 7E60F79F1EC1FA1E6559A19553AADE82BC648CFA28C6F6DCAC6BD433CFA6B6B8 3726363A921DD66193FDDFB5661CB102E451CA340E7A288F72EE62C0A5BD2CC1 F27DE74EE14BAC4C4A52AC24AE81A346B379DC4EAFA0B0205725130549076A5B 7770958EDCA16150B98FBA71613FA34DE63A3401A769F0BB81319DA97A73A022 E523A537A5834A62D6FA65E1A4FF8A6A096D5A695A379F17050528FD054D28EB 1E741DEA1B3F5B32BF4FBEFBD3E94F106241B974DF1BE747152784019F06745C 7FBB1CC8D4A7E33C9CC8C47A98CC1A3318274ADB3FD59190DF9F80EC28F30F15 6BA50EA2FE77A8F40E9E7855A5E092ED9A3CF01AF12D721C84CAA49C18DFE6ED 7FB0643D7C4172461C0406B0B9177EC0E7CD073748FBA7A0EC9BA38BD93EE5B5 83BA317CA42AB1187C1B1AE7923B47B7BD0AF8614D40A5150EB67C3E8110EF0A 9A72A11D1E5490AE7224C8CD67801319E50271C4F9510D3D0F32B0681CE0B2C7 509D5B2CA15533 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR12 %!PS-AdobeFont-1.1: CMR12 1.0 %%CreationDate: 1991 Aug 20 16:38:05 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 10 /Omega put dup 25 /germandbls put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 56 /eight put dup 58 /colon put dup 61 /equal put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 75 /K put dup 77 /M put dup 78 /N put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 90 /Z put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 121 /y put dup 122 /z put dup 127 /dieresis put readonly def /FontBBox{-34 -251 988 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C 68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E 59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28 51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23 DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F 45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31 821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE 96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D 9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379 26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4 140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213 1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498 1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB 377D3061A20B1EB98796B8607EECBC699445EAA866C38E00420B0477533ADB13 FC3B396C065B09769DAF0871076FB7FD0DC228CF3EE115446C7159B03F19BC6B 8FDA91BAF28AD303E26F885EE238874B11FEE84C47AF37E871AB5A85B043190E E860B6443C43E27EA122F1E49241CA0D3B9F12495B0944DAB562A85D084312AC 8A5FB7C4DADB70C8D1D03870B38E61406C281CEEA4C2D60615E6132FAC2D7751 13837DDF2DED7689F4D0D4F5A7B638CDCB5044FDE2197CE8338DB0C1F59CF255 0208F901E11DA0656D64F725569A675DC6AB8B7A7152F8E5FDF3138148A780F1 39D73A618810FE78FEE76053F6735E830D1C76FBA12E12486E989C9874C2B53A 6B4531443FDB2A9481D805811D1E513454BB233D0A431B614C38EA8DD9E791DD F2F4D0043C9EA9B578112EC17388633DD0B2AC0C99597D72F9258A289467EC92 1DE7024168287E491B5B68B9CCE0DA4ACF3759C5DE43E3C89065CD7EA65F0E26 3FCC020A2939941DD9914CCCC1F16877F761761A3B1095CE84C24EFB5815EA98 C47AD3A166E7E30CB45D44558574A77E551E4EB2151608E46ACC4C51DD12F855 72CE4EB67D15B2B1F8390D5EFD7E25A74E9162D5AF5CFF7453721245A49D8131 D9FC4809C3D04914D185AC64BB50BF1F09A8F68D64EFF27BF86A5DBFA7A997F8 26CE050D42F4923C25D882663F36DA1DE4E9E7B0469E4F7419898225FF104D59 239C565841AEC03DA45F2EED041E3BFEE23D3BB7E790424A610A886276EAB970 30855468ACCB674DEAE3FD09BFBBBDCE7AB58E16F21FAC892A36BC23B2296F7C 7C1F3D1A8ACC89C537CEB0D405C13644071BA7DE8DE3ED810EAE235BB42E0989 712D650FFB184B381728C0FB35256FD265D9DA95B424CA32FC2CBCE44BBCDD7D C2A52416DCA24BC076804EB5F714523E267BA3D1671E03DD4A43D9C7B9AAD358 836172B7BE91652B0B4DF938AF76CCA42F683AF1BDB18245B68044C572C5783A A94B24C97045D3483167E95E3D50064AFA5B00D7C1EA7C0FB05FAEB122BB10A6 4C314FC280BFA4870F117684109D051878430957055D445415B0DB030C60C08E 79AFBB430FF8F855EC7B465DDE02F81A14815CFCE34DB3FC51D7AB4D6721B070 8EE75A5B5B7085ABE1F047704CB5FB12E09764BBAD364C0E58BDA72F0F9389F6 9F43E39C8064D51BAEDBCA8BECC55981D25C839A2065681D60BCFBAEEDB20EE4 03485AC3F25725780D018DB4E72F4917AF76A326195F41B406081D6D45A0650D 26A630EF4F653BADB59B7964480C76E7D34DCEA118B75206A5D13505A15413DC 15639C4DAAAE260F90F4C34A6AC2CCF32EB0408C4EAB164A989D150327FA1FDD 14C497253A40829F4FC73E1F9B3AC6008B03DA9C2A02669A4804F07CDCC972C7 8E73705C1D4617B9E625E33BE3A99EBCDAC8347F23C64D9FD8CB5BF2A2E70F29 41191567CF43581722CC948E79DFBE045473ABF7B88E158D68B7C397B3E09311 FA7761D3C1FF72E43723B7652B6F33CEF2A43264A37DB7B01AF0927A414F4032 13AF3BBCEA9698F695A728FCA5C472663BBA0A1A2ED38DCB2F04269C2D05DA00 B3A027D54AD628A36B56644C8BFA6888B5C5CDB9FD62F9D3C54F7E49B935B7ED 3C36AB1416B0CD9B4F37D005CE1FFBAC53E99418F091B5A4B32BCBF322AA2B8A F25189A767FE3F4488BD70D014C33482CB4285374EFA30DD4C4F876EC1467DC6 F92DFD656E46B9BAABA71A378790555DAC0576FE8E3A0E62433F8E90521B81F6 A128299251BF6D121506C8784F2A40F7426E5D275A3AB1E1B0A77600F44E3DC9 90D8DF8BDC6A4B6E3D47E2558B0711CD3B4EB29D6D585DD216E4A6245BF79D2E D6BAE38CA8B88B7D3C2A8DBA0B56D1A874DDE64BD1293AD40D7B44A0EE3EFDB8 5F7D639242E9BFB6249B684D552B166F0C94BB37246601E0F1FF89F10FA14FB9 0DC1D960DBD2B69B8B9B530BD60A448127ED461CD94FEBF91709BAB205E3CDEC 4E5921651A87764CCD1DFE2176B208F088040E20E8A3B0D89933EA9F0CE0D804 CEDCBCD8AF9A51D41A182690961F341CDCC5E037DBEC87FA6427930E67A220A5 819552E72BCC6327C1F99A449D7E257182AD9F261E03EA351BC6B2486B06AED3 1924EF8C1D237F1F975A9081F0D8320F207051CBEA0118050628DE8FDA58A812 0DAF83D27821123111F06AA9CA9BDBD523FE716AEA26470D8A8767DAA29B3F5F 8DFC473B7A7108B78B1243B435175BBDF414400329114675B8328520B58EDEF6 CBD51AF957E1D4D0E1985DE3B1C5942310BA2C0DFA5EEA9426EFD0C2D83EDEB0 83C7A9DB6EE7880964C9B283CEF1038E0AD63C92C7D159587D776DCD9A02E126 3D851C3CEFC5543A5ECA15C3153B26E2E1B35EA6DB8F308184FFFB7765C01DC6 7DDC4EF0A4C89D3E3F81211FCDF72B4083134EB664830D21127B2D2E9BDD0942 B970F84F2F8A6B8CEBA2987C241184FF8140ABD017A509A5CF0740EFA0D77533 B5B9A3318D5F9BA93FC097C0C0FA451117A51D4B577AF1AF5F7B23C4990603FC 3094919BB0535FBA20627F9BFA3608FC4681A252BCB413EC0452DB09CFE702AA 982C5F594A759E98BD8675E17D1602428FC017923E3E102E1CF84587DDAFF9DF B956AE6843D974E7E1063774796363C05866DED09D5BCAA889A0342D8A0E6BA3 3CD01B3E1F784D2B3CDE662771476908FDCD1E6793D26FB521EA2335F16CD584 5EC938F1C1EF1AACB7D6493006094A7183C7112E24DFA5CD9985B541657C084F A1FD28ED36411CBE7DD2B885A815018C9E1FE31371FB137D1960BF6AC35187D3 6FF34400025A323C8061E13259173378012FF9A68AAC03C5944D8A2E5D4D97F2 C910C5BF9851B85E6928133BA59BB6EFC35248F86554B2C824DA0D32A4F928B8 96D37785EEAAB845580F053AC5D06117A31163A9BA28A5943EA6B822081C861D B19EB747C88BF4027345D119142A188DCA88F4C12692476C2EC81E4E527E9700 5D099A2E397A1DAA1A77E67A9A8FD0F222FE7282C2893F1B03B2FF979C7A5CCD 5591BA57BFCBAF1D469409CC224C028C0E6C3F8507E54EEF8154CF199D1985FB CD3F0645EBD3CBD66D144F5AD00703D42ED75611C3D4D8315508B51703167095 95CAB85479226B0D8ABE915517CD83AA4EE432D932C91F6046DB423A5B4FA9D0 8C94F5980C2982C2B0DBFD068D80C5891CDAB0785A199B62B2437B5CE838ED70 AA220A4EED42FDFD2C6797DDBA83549C4A4C89BDA2ACF7F82ED98CE747150B7A 645D4F8631F6BBB675674BFC8FB020B8B54E153756B1271D9498335A1CDA53D2 01FA921AF55107A0FDB0878A1F966696FF2D7AFD9666B4F25EA15E08CBB9058D B4A1F6F5CCBF63C6E908842B624B97BE34403EEF6458DD0D2B6A5B14B303B8C2 37C4F80D7AB3789C2DE8A3001A19B9FDCD755B4E19492A7CE24717091DBB0894 72ECBBF42BA974056A3E17658C8B2B498618BF7E6DE335C93298A0ECE6689323 F9D6D0EE4FF7A89B876AF71DEDE7D6AAFCC37AD5381B7FA6BC993479D388EEB3 295106C97ED7B1FDCE50EABEF9B894965030EEA8DBF87834A50865B670C8B47D 6837803E517542DF5BFCAB6E18AEB7FB76BBA2447E04B434A11C179D40B0E71A 0E9CB62F995E6ECE007AD74B77888C2C28E0980E6EB72A6AEE22FAC682884E97 8CC1D6D0E8286B62B7150B5E338EB2D883516DDEFDFE805225387C4D2463E624 01FFE14938092C32CD07EE11025A80C042A938FDA86A30C1174B8D37D9A80952 BD4DF221E6286FF242C92E63D30750202E052D14E13C93C75AF3E20ED6C45B11 3678C507792E1B18696B7895974D9C3428B8E75B65E78187D7CBED1886D17FC6 ED735B2F76939A9CF47042E133AC070B1565D79461BEED098969B9CE196F04DC 2166D579286F8F8294B88DF2D197738E70A14E0026E50C171D5385031A938B84 A0D31D9FE3BB4E0F588E36DFA867002E7680DD6403C6F85C31ED850A7E41F5CB 4D4266981BD0076EC6DCDE830793DB52EE59106D6578266AAC574889ACC8213A 73E9F5294307E32662444EA228F14D376353D852F07702EB3C74626E79C8694B 878AB502BF47B833844A8A99421AF96FAEB4081A47F349418D0D8E0E5A8E55C8 E27B0D83619FC3C99ED03431B7F687BC3FB163FC42DE4B3B8939FFA0BF3DC1DC 6B215F5A26FA9C89406CCB0A3ABCE053BE2240C4056548FD4426E9278D695FD7 08F74A1F72DBF6C7537B7BAF514E2FAEDCD4910F9CCCB14B033B55B6C918E216 371E4E83C316E8C7132FDCB7F41E8C1C26B77C6B3E4C4E313EF12BB7DABBCC99 7ACB8E1CECCB6C99D6A78B7A82FB38E221308C3F6BDE5194AA4925A0914103F1 613AA3BBB2D332BFCCC57245543887B8DAC799B42B35A77586935902AB710AD7 CA8108573564F6A049F60E156982CD488EAFF6CA82815F2E11905B1C0C9C407D 46FA1012F05873B450651D2C1186C115F654FA8339155E759CCF9FAD06B69313 15D0084088183C206FD9895895B59BF2725A619D23915E7AC3D9852BAEF7D14B 50AE6AFD3500BD8A2EF8F56084481BEBE34865404DBDEE4695E9AADAD9CB03CC 364E52B936EF8AF2946B4EDBCB68E8AF49A0749FC7F6BAB7E6DFBBEA0DB27FC9 CF0A2A233EEF931667BCC504C944DC5B51D822F5C041955781697F9621DDFB5A FF96E241E492E6A680EE4D1D6F2DFDF25C8D31C0BE7532521965178CC0319B6A 18FB0F966623A9195B4C062C2F215ED6390DB30E6040B642E07DD67BA80025D8 8DECFDFA09147FEF314DE17D73B0E94B999C10E385C8700F4F429B74AAA75DF4 4604300155959AE8C29186093A6A6FC9E0B301D34018712B62302908ACBCF8E0 EEF2D7C67CF414B5161144FBE2BCF0D67748AA6CBD6696EE899E059261F680F5 82D76C2D0FDC71B600D07E1582CE728B5C7B4B45CD339022572E18F9D6AD3942 0A155DE3F07F618B3A43A578823F7F2281B5B3E3C47A25F3507D64BACD001302 2B56F5E3863E060D1AF9A2AC02F8040921CBB5A7DC7CD5F95B0E63EC219EE4C6 88D637A70A2BC11B031794294E2A67AE80649B6339269E12AB92ED21994124FD 07344339446D0622EC0C96C9834CEA9826A8B074CD59688151A1F2E633AC8AB8 B198F7E1D8542F773C7F662898F6860DF5B5B92A01DDF4251A7A7281EB42B4BC 846C4EC95FB00975DA9B0F618E15EF261B229C7E67C3FBCEED4ADCA71E3B228C 0E4BC898EAEA6D0555649FC4B4B6EBF637B05B4D9229463B29D1385307F5D3FA C8343E84BFFD4206284056571595AFAE7316EE803D3A64BA74D111EFBDDEEE50 A2C210A0E5AD0CBA827A6916952E633672394B9F5AD8D52D05757D8516647F79 74CDFB1B1A6D74F22A44E2610DEEDD5A28AC8286604F3B68407C867EDF093DC7 3A0D8422F9DCC508D65E6731D3931524CE6887069E01FC7EDDA9D70689CABD74 9BE68301C59ED51A3EEE94E5B4B16FDC5EFB5E02ED76E062A2D69ED91ECCD5CD 0DE720FBAB92E18943A2C147D64506E90258FB35A8A9C66BA622C387374F4C26 C6D2ABC472A088F394001F83826571315F8AD26CD8A4B5296BC96437455A1572 0E28E006A1A574283A4E4279F1B880E1A8EF797E9AAC0984D345F69A2F44EF95 648B7EC4D3E9BC1F41E3FDBF3FD135B10D4A3FF27DDA2AF47138459E24A3F3C0 E2431BA600E5BD2E63C63ADCFC21D464BF427C811B6F10BC7B3F244903B47CB5 F94E085F3D2E08C9E4CF94EE82F2E82C0974FD068B41ADC07D35989DB51D73E2 A46FAA0A13399FEB6D6F07DD9469107C8A2A3E495236B0E4C8309FF0DFC30210 63B9AEE71B295A00803CF76E174314CE8693A395F80B8540274F56DF2F458FBD D0CB2243BBF885349586E80B583EA19462E923679984E9BE699B004AF9B1AB98 6326F439C8303EBD086900840FFF4A490B5E547F8575BE27B9483A889E3FFA30 67A77B81E0BED8BE8B58B887B42E3F4B6E54DF130E274774086BBE9AD3773ABC 2403981E33907FE2ABDDD231378A1D445ED661C64BC6911CE29E46BB52517277 1D3FF0D2AF2E7C6655E564711A162039CDC83FDC99CC5D415EACEF4902943A4A 41F15736C0DBC11DA846EA20C0B28A73CB264D2D01441A79AF3A0D81B2617073 F6913690A4FFE6E8664ACE0EBDEDD8C962CE154FD5486A66B422AF54F7A15B8D 37489244A83FD2AAC43429648C378D2F2E69284FA38789746B1AE33191B142F3 682D78914835877B7A68B08D7D2BCB93CD92D516AD16590E167F988CD8737FB7 8E6ACC7231BB47C7BC5BE479E432F00ADCFA937C23762239EE6D139EF5ABAE86 1A6D45D4FC81499E5D0FF80B22DEB161DB3DD6B45BC76EAECA46971836558038 B039DA3B89A121EAC0A701DE496E7077D25E8DCF209E5EEE2B0DA8FF03823C4A BEDBEE655A9693AC862B9BB8873DA10793260C17C02AEB33C2E7E32927D92CE9 C374BE3DFDF37DFB962A75DBECED803447445F3BEA4192D7DC35B1D98CB01C7A 83ABABC4327ECE2750CBD8A4F3B49C5DC1194F7354D6E48C15E899BAD9428582 4962C1AEBC53EF2D5FD8A996FFAE0B6B392E7A2553E83095235F271007A6DE0F A324E7DDC9CF0C74E8FDD006E88AA05739B681661E0A06BCDEA37EDE4258D7CA 9C5716A75A8C1E39A3167A4B5C14BBE2ACD06B9D4AA6358FCCB1C9211577CDBF ACB831215718FFE9CDC839A11AA6EF404D6F0E47BC3674AE1B07FE3BFF847D97 2C5A7E858116AFE0E287C39B725BF5FEF37E8BCD425385B9DAC2BB1C7895C86D 59C3F51ECB0F8BE8F7EC10CFE6232C35C5A28DB027175465257A40EE73BFD295 867ADC57DC5CA64DE5E66BA32CF56E8F6C7AE544357046938757E36020FE96EE 8C81AAAF29BF2A8444FEA6E4C844A0E173A0E66E34E12A4D951A84ED3F877BED EB929BEFAEFDF8BCE77B5D631C03366CC1850E37E0FCF4917CA6CD64297ACF6B 91688DE9ED0434BD798945D7003D4EF1A717D32884D1AEF4A2900B16208D9981 9594BD7190E2979625055423DE7FD95B336B1155F3D0A6BCA688CEC1E12EDD98 0F1BDCC84B573D5DDEBABE0D12E143FB5719416D69B7D6E2667ECBCC6B7A49EF E34BBB02D851F20B6FAEE142A17BCA5697BABFD31B6E6B633F7F8F5A1BCFA62B 447BD9A86E6861DBE606AF54CD45A510E7713CF842976950CA389DAA7E5131B2 9890D5971030D0922022C60AD697DDD5EDCB6CED9C99A0370D68DF6C6BD49C13 A146D874BF27EA8CD43A9D17FF6F48E4F321B83BF3E1E90A98239F484E74DDAA 691D972CEE4D52B6AD3C03D511A9581554769FDDC7A39438FD9530624033786B D7CCC1D2726A3173E81F28EF7A9EFE49F3D41A3C6C833C80703ECE2DB17F1EB4 362BE1B5D05DF003217793D63EA7AECC6BC252385DAE80498514A0B6ED32404F DB9EE3F418D15EF86E41EA70FC1317F3ACE5DDD715DC454D79B16B9314E5F39E 288D495A545A4BF872B6390E32A899F78CDFE992E88B8EB4CEBF45F62603B378 2ACFDC6BFF630FA524E5B9638E246718A033FE72624ECD665D810D24B7029BA7 85FA3BE6237A19A0E1597254F080C1C9FC53724C331AA6B77CEEE4CA68CE7058 3D56418CEDE6294E9525D3A5D47F9379D07DCA036FA884525844339CBD166AE4 440BE781C80BEAB6C794ABB62F221D01730C073C0B32CE8E5F04AC3EB999B815 23CE8F027634AED3371A0BDB9AF87F1116B6A15617B08306F2A2A8416BD23EB8 D6C1DE438E750574FECD188F3DA452EDC3AE1400B4747E4C508D7B4B757A7BC1 148A2E644C8F0EF34E86E62CD29F90E568CB06D04DFA7B0883F5AC5105FE4223 E2CE6400C82E3FA2443363028C9607F3306CFEB89A2AA6929A1F04ED3CC522E9 368606A67E206A67462E1BFB6F34995ED42F3B56DB50CA1498571A12D623FF81 74039F1D555D20FDB828708144AEC676727EE21D1A519C8E7EC215713113475D 754435A4DEEACEB28DDDDE049F6B689FE3B0E9B10F5D04B8921980CED9803774 5E6EC6A67580C53FD4CA8269BFA3EF29A3DD6599002FFDBFC1309E7F0417B5E5 CB52B4783DE11CD82A8CC174C0C0FA74F4F1AE82A4653626EB8ECE860F06F4CB 1AA9DA67750D4BC3077FC8E0E5AC96E8117C539BE1B3B560524B9BE933209396 1374CA71ECEFF12B565A9A9CED8CEC605116BC10589B3226C4D34E39EE95876E 6C9774A03F27771ED1BCA773332F87637898B6916AD5F8E7078BA78A7B166117 1AEF47F28A7E61B61946FDC5DF32395E6D0950AABB8106620B877B100E2B3947 C06C87024061DF4ECA77C6138839DBE8EBE6045A7BA44D8980DA8BD2263DB7C8 EAAB1763852AB296D19763E1CEE0BFDAFBA148C79322B015AE49B913A8E751E0 5FD7972DD69659FAE1FCF13FDB2C354FD69ABE623DCE7542577740E74721BA33 DA7E3AFAA732063A53098A33AFFA6F431E34CB678A2FC8C7DF3358125AAE43E7 1BF442864344F474F5FFEFA4A923B9765D44F5BB59E779D676F356891ABBAB0A 7BFBDAE7918C3648660393D5896D40E516879CD8A5257E6C3D776AA8FE2CEF27 5F590346B490689766AF3CC6B2EB0AD63FD318E7CB60550680681F40F0321BE6 B62B0D197941F501EEC12217E017948AFE4C63D5C136B71166D4ABF5A617E9DB 331E233D2B7F86DC48194F0CD58383588478347551A5AC754121F3705F013071 D0974F55B6967EB3E2214E1B16BD06254E7455B883519B39125D986211D0E091 F451CC09947A91AD93F0B80ECFF3818A9C17DB95228F1FB1E24AAEE4798DAFAA 0BCAFFE851ECCDF47A2D898AFEB22046789524B063A55E7EC4BD73F333B4A89E 9909EE20B51881D696CCD3003E8A4E21B71AC14AD44405DC4C9B82C3E47F415A 157C3214C21734071BB1FD4BB1D9CC05943A4B4E1EE6E62860387D00E215C0DE 0A6392D953A4FB9AA85FF2D15070E04BAD70B7B4072322618A595D2E4BCE211D 91B6237BC9CF4FE104EF8239B8553C90B485FF718C37C6B2E8BCDF98B998129A 1CFFC5EB7E479AE6D34D8AE7C320D60F546CD9C3DB7EA167261C0DDC2F2BBFEF 5386323A3F9554B7F5DF25A15EA103C5D2869A34C52D37D78BF7087B8E1A8F20 C6904BA1B446F6C2DDCF1D288A146D8DA52E8A0D594E56230BF6673B59233F7C 77FADDC9DB2FC931E7F5BA9A0DA0D01A868E31B9895C5B812A4A773E4D1E23C5 747D7751B457E3D80FA49C676210FCE0BEDA25C5C7DE615635F1B981DA4B138B AC9B79217730D862833877BE34E54DDA38D5D8FB4621FBC15B59C606D72F11EC 8182AC37A9DDE2C07467F74E84AB5123F6ED82EBE74C0B447B1BCC26CDFB232D A20D387034F233954581F7DCDAF63326CB31F91AAE5EE0F8EE90A39DD1053848 4FEE06DB6BF1A6227ED13E1597F7AE437479116681EBFDF6E3DBDCA7FDF0F31C E0F24B65BF38A8AA8BF9373DB5318DB4D9C4B063D8118E3B8B75DC1FF262F4B6 006A7E63785355D8118FB14336CC54DDB3152E44FC0594A12A6EAD49954242DE 3D7B76DA8DE9F83C85AE9B1C11C011244799086DF3AC7F52CA8922E18525D028 BC01B93CE0FCD548ED0FC955AAEABA37B5345448900E6088E955ADB79F8A358B 0C525A415F9247A25449712970AEE4EBE32273409D134538A85F70A89797051B 7141FBC7A2FF3C2378F99D3A59666F34787400C96F6B9872D16F300B8162D346 6A161B70813F4B87267D2A711A99F4028E8072F5F353C3397DDF3F70CA8FE882 01EF11024890EC51A3F2AC279931B570678E79D53948DD8531000569B464D6D2 0CFA5D5A51F99538D41964E2C91FB75CF377CDCF9227C946DC6AD2C91AF487A3 EE2BD29D0EE5735B129C2283BDFD6D56A21B8798138078BD159233BEB9B66F93 A7CE8102BFD0C4B41BE3302EEC3F1DD5E71E5F166C72B7A5CEF478A6EB811FAF 6F4D2A679532FB497595E37FE72C52AA182AD019C385C5EF551699183C8A4EFB 77ADAABB3A310982B5A7DC0177FE26531B10D2AB93DAE4AEAAF1D6AF8627D426 8CC3624A5F587BD3DF2AC980F0A63F01A60D68CCE37ABD7C8F2153460F387248 5108B39C1E735D9CC59147ADDB0F06E73E4A5503F148E985572BE6F80B37C290 30388066381B78CA2DB829034258D87A18344F71A47788C5153414A6BB58A9CB D77647AEBD05AC82ED80C8109A68060AFE4651491EFC263CADDAB6963E5619D4 9C2FBEF84F0063382BE07C1834B55DFC2D7E8D7B92E32E2F3AA613205A7ABE8D 3B97545B85F1E4D750299E7FD46C1E5362B2A993F766AC1BC91BC2DEC299F88F 4C5CFCE900F2AA21BED24330629EDAC16F8A96F8FF2B3D08B2C30D223DEA2FCC 7938179E8D42AAAFFB85782A99FC015DE985BB1EA0D1BD94E54A24BC28E67274 B43F324B85878058367A180966A52A693702163AB8F9BEF08E329E48F7D5DA15 115A4DE85A6E08D47B93880BD253191399F9B43B6FCFA03A05D69C0955709A87 4FAE7E007FB0A12D75226CB52184CE5256ED82BF4946CE09C05A953F8467AEAB 9298A7BF047134A58C7C46757EA47745DDE7BA4F1296DBEAB84A1A5BBB90E919 BF33916296DD5A72DC27FEFB4C73140BFBF6F8B7367C7F0D257DC2BE01229B48 F4615B19AEBCED5BE4A177885CB5AC92CC9D7FABA1F2346E5A9379D9FD741ADC E3DA108445493E23C8A76D7559AA6573E79FBA202E1F63DF508CA62EADBFD926 2080321B7A74106775758ED41E6D41B54A61F6BBF633B62980F32328BB2557CD 7FE653DA1156E03E7638C86E156BA2BFB8B78F11F9087B0D8A5AEDDDDA6DF903 B0D3667117ECFEFD866B7DE45F02A47332A20423851624C094049D4C6D49E8F7 B9E5B8D854B10956943A1427930C5A10F8F8779FBBC38C2398D2C9115C668EE2 18C4677D8DC7F9B6B33051C98D25B2A242A6532C2C727C4405DE64AB6E9BC0C1 8A78DD8FE1FFD3E2DE19EAA46193318756191F75F07C3C1F816D0B5EA572940C 5D4AD612856CFC6C46937F8DF9FD1DA1A5727BD6D8CB6B62F3FA82E0333B9437 E001361EDEFC26661D9A5C4066BC5A9FCFB1777BF2765562D22EC1DA66405D0A F15A833E0217BB3003CE084FBF4BB08153CFCBB76A84F9311B8ABCECAAE81B07 9EB2DDE3D92BC609AA3D2EF39391320B8B82C9C53FA1D8961F587FFB20AEBFAB 9A79260F07C43B21EDBBEC1B815F7F41E46D1EC5226240A0C811BF0AA560240E 07E25F830B3C6BEA3CABCFA78C5E00A3FF06A59398FFCD160FAC99A305D8EE88 B4548BC9A9CCBD6C0A6D63E364A6723DFD392706F632B374B5B72776E9BD61C1 29E08DA2A818782F107FFB95D0B6E5197FA98B56AA3E5D9BEC2137F72F4F2E1C 2FCE1FE8A995C3A366E391AA7AB6B1D49FF43E21C79C1ADFB94F8FE205972E9B 99FA18AC0BB260C39196DD5674B0704D8ED30D6A3914571B4C4CC285FA9AD699 E284C8CE6CDC3767D984187789EA8D5FDF5C874B02AA21C812D79895E212FC87 D3F60DEFEBDDBED2244EC41DB486582579A29CAF1F5CC2EDF05131E76E2138D6 52963285DE3EE24FF4DE4DF124B9D20E0CB488310A2FCAAAE8B636ABD2B2AB4F 7DD9DCBBD23305C95625369666E5DDB6225336AE689997E129BF1E6FEFB7B92F 2BAC75A06A8059CCC7EDD31D4D95EB48F42E58176946E67FD79AE699655156EF 4DB9BBC5BF0FA3D34B730BE0BDAF1A2AAEE259D42DE25A85FCDF5EAA1B89A514 5ADD804011195F1394465B05974EDC3345CA720094DAADA1A7D5A5F5CB7DED2B FE348DB01A842C0838F090891144A936A08A47A94455F4C8A29918941D9CE594 B3B013CFA5BA73959DE452880EF4DD933AFF97FB65E52C33E6CCB28B70A9B74E 26866FBFEF7864E2A46C8D81AC879DCF0165FAE99DCE300482918275F125552C 263581A323167040BF210B99F4B214DEA303336951AC31A6D6CEEA1E8332E98B 4F164BE7D72614CF022CC7317587AE5C8D3C6E3F122ACBCD796E272D395D7078 F7BCEBF9D18FF2A10AE5A5F959EAFF6EFEF35262EFDAE3431E132F978DA18056 34DE65237A7148FCC96E1909F1839477F4ABDF15E90A50730BD201385C3580E0 81BF07F8B0A8CB2F452CE7460DF9533EEF4A3A17DF466620D9B89F852AFE9C53 19FB7B26EFAB1BBA4B168C70BD93050DEDEB013EA6B23CCA6FF72FADC18DEC96 1B1B2C3277B8C1FC752E7ED484A1813DB55120099982457EF0C10844690A8354 D897FFA7D052F06FBFEEBC0847813F3DCF934A20984EE25525577BF4A9583614 91607BF067413392E538F1FEFF94F4E016FBF4BE6BA77E427DE1CB4E58052E7D AA81AB3081774A3CEF969DDEFD8094FBBD4165ABA0656A6B9EF9F53E5D5EE33A 69234A8B72E4157D8A3203A4358DC74EF49C78F5F28E1987FA9A3A58E951DE38 E82BF8ADA87984EDCD1A13962AD2B01AED803C7D4E2EBF8DE67BC6E817CD366C 12982ED98199ECA57BED643EDA921E96443A806FB4EC82D8797B230E05721472 A93805A36E690D50A30B65990874AD1C019252E247CCB02C3E0506754C79208C 5B26177912CD9A2DCA4D62C316568FDD6A4CEA15519CF1A2752B21AB4284675C 812E230DEDE8F8475181C3077B642E8D171C889EC6024C732FCA81BE50EF8BC9 19B664E50795D633A17FF29DD7E8EFAB2B14C3A92B9D3846D933BDAA1A356E14 7F2D2C6E6266D786D51F926AB5E9854ABC08BBE2E8B926EBEA57E0D324315170 AAA21F724952A791B56CF7AC14785B6F9AD0902409AE84ECA5BB225AF544813D 5D0BAD9AD88B649E27A612D14502AD26B510DE6C027CA3306B029E92B6179EAB 82D72436C5C67F42933D8E5AAB237DE10B1CB4D719BFFCC3C551E3F0DA687D3F CB8541043FD993996E1675D2392D023A1EAF1AA23666D67069E8F231FBFF2FD6 DD660F56FFCD01614710895EB1762ACC7BE1C28534D3D2C192E3A46E500AC99F 407F23955123F11302A162C18302F3F0D72309BFBBDD1D9846A948770135557E 415879618999AFB38A41B613C224EAD7957E8552EF09E10B518072AD3B18D6B4 50EE45193809344906858E1649B56D807A7BAC3CCBE9C5F85076DA5B991D75BB 077E26A62D894FCD7EF20029D8A3436190AED844424BA5C464E7C5D359F2BD5F 64061C1617B1D7F133FBE2902CBEC35A9595114D49E64CE0D27B93C3882B26D0 5A33FBB564A85E34F82AEFABB62442249C226C2FF044EB674DB3E877613D4240 037564760133AB89371BAC9AFB157A911322162BE5BD8D7D31BA5A536A3733C8 7FDB65A8E6939A3774F70322D5DB2879D39D22BE915924E2BBEE54CE0E1C859C A1E214924E6CE1F2357E95235D412952293FC5FF98528E54D65B94E847E62E54 2990994DA28C49EA02BE6CF425742DD0832D6870E0E73EC32F4BE3382B0A1A37 F9238B3C027AC0BC4BC48113CB3B9C35154E61EEF0B15256ACA34EA5C93999CA E8ED1A31585AC306457D1A40B11927EFAE9EC54BB324D0656513FCA2DB278692 D0A28320DBE382987B9481C25A398DCDC0AB10F5CB59DC4B7AB6B40D04417110 A52A9E643283077EF5D595786216575B3392D40DAF064DD67B42C38C025B9C4E EA554A26DCB07F1E49A92F4E10DB57F7A6DD704740BD6ECE6E2A4665CDC140F3 AA992BAAED97CF0A029D51FE7F42ABDF51CC7143C8B8911A19AC989966A66666 E3495106A0470643CDD2D8396A4E1ACE89DB4083A3B19B10DC95AEC67CB53E66 F4BA4AD0CB089EF39F3B83D8656EDE143FA14A7EFF335EF128F460830BA030F0 FE22829ECD33E861EAD5D3D9A2697BEF15919E2985D207E15FA5E2B74AA627EE D3804B64E466334BF333AA64AA0744EBA25E150CCE1C66CFD61D3A958C4383E3 48527141A6E5CC905430ABA57F4BF3E3990C8A3F20B9A5181C2C71E8AC6D086A 3640E8CCE92E94FBA2D472E57E740E7A7D45495993F3EE37D14A752E82A8312D AA26790D718249C4721EFAA5D9206C479CCDDEF32E6CD654C72519ACB0B09421 94BD35EF99A0A6C2E82EE48BDFA95D429D2690E14B3C491F6C6281672CE8671C A0CE51303F9E6E012D3C822F46745E8F8A713F30E1F95E0065552AB400346AF6 16B133AA852F90022FB845DE681DBB1919D6B350817C7DBA37DC1D70F1D64991 559F1D9E18C28B75C157E8D714DD24C8B4E8CCED5D024D76C901F3B60C00896B 90813B2CBB673AE584FB21EEDEBEA89B5BEF1221021A0005F786A09B7E8C4C45 6B0360AFD5DEBEE40C8AA1BC8ECA3ABF0870F0300BB20DD65AEA79C81EC4D2B2 EE4CF5E33F55ED2B31FA7A2E39669A522DDAF7B1DE64B05B8969194F508EFF7E D2C6B6E1C95644C7339B1CA2DA9FC584CD9B66EF06890B7E7059543322F0E873 5A922B0F55B0DB31305DCD2C0133B66869ED3928C7BB8A5AA58EDB82454C8495 18745B23CC464D98A25B0917C5DE52253DAA3BD0C2BE8C0C64B1F8154A4387BF 322E3DC070C64A78A0C5C33A64A3EE710D0D5E7180AB4BB2CECC6D733F9BE06E F7A286AFA8D82099A9689E489404D034198182EF22E542AD84A774B526CC74F5 5E89D4CE2029DD2DECA2603B141CF011D373051C912F 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont TeXDict begin 39139632 55387786 1000 8000 8000 (C:/Dokumente und Einstellungen/Eibach/Desktop/Theo2/uebung2x.dvi) @start /Fa 145[571 4[320 105[{}2 885.568 /CMMI8 rf /Fb 189[886 66[{}1 1328.35 /MSBM10 rf /Fc 252[470 3[{}1 885.568 /CMSY8 rf /Fd 152[664 664 6[886 886 35[886 16[1328 1328 3[1328 2[1328 12[1033 11[1033 8[{}11 1328.35 /CMSY10 rf /Fe 202[470 470 470 470 470 49[{}5 885.568 /CMR8 rf /Ff 134[634 739 9[776 4[444 2[641 42[361 361 58[{}7 1328.35 /CMMI12 rf /Fg 138[830 13[747 457 682 2[830 726 31[1128 12[747 747 747 747 49[{}11 1328.35 /CMBX12 rf /Fh 138[1196 837 5[1196 1[598 4[1076 658 982 2[1196 1046 31[1625 8[1076 2[1076 2[1076 1[1076 1[598 4[837 837 40[{}17 1912.83 /CMBX12 rf /Fi 134[631 2[598 697 432 531 548 2[664 731 1063 332 598 1[399 664 598 399 598 1[598 1[664 12[930 2[996 2[966 1165 3[501 5[930 21[465 45[{}25 1328.35 /CMTI12 rf /Fj 128[650 4[578 686 1[939 686 723 506 513 506 686 1[650 723 1084 361 686 1[361 723 650 397 578 723 578 723 650 6[795 2[1336 975 975 939 723 957 1012 885 1[975 1192 1[1011 1[469 975 1021 849 885 993 939 921 975 3[1012 2[361 1[650 2[650 650 650 650 650 650 1[361 434 361 1012 1[506 506 361 13[650 14[939 10[{}63 1328.35 /CMR12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 8000dpi TeXDict begin %%PaperSize: A4 end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop Black Black 1771 253 a Fj(\177)1609 536 y(Ubungen)432 b(zur)h(V)-108 b(orlesung)434 b Fi(The)-66 b(or)g(etische)463 b(Informatik)f(II)6023 b Fj(H.)434 b(W)-108 b(underlic)-36 b(h,)433 b(T.)h(Eibac)-36 b(h)1609 2142 y(SS'08)37173 b(Univ)-36 b(ersit)47062 2194 y(\177)47062 2142 y(at)434 b(Ulm)30609 3747 y(Institut)f(f)35782 3799 y(\177)35746 3747 y(ur)g(Theoretisc)-36 b(he)434 b(Informatik)p Black Black 7958 8030 a Fh(Aufgab)60 b(en)-60 b(blatt)714 b(2)j(\(Abgab)60 b(e)716 b(02.05.08\))945 12385 y Fg(Aufgab)42 b(e)499 b(1)1928 b Fj(\(8+2)433 b(Punkte\))945 13990 y(Gegeb)36 b(en)433 b(sei)h(folgende)g(F)-108 b(ormel:)434 b Ff(f)511 b Fj(:=)369 b(\()p Ff(x)22099 14189 y Fe(4)22920 13990 y Fd(_)p 24100 13259 740 54 v 294 w Ff(x)24839 14189 y Fe(3)25660 13990 y Fd(_)295 b Ff(x)27580 14189 y Fe(2)28106 13990 y Fj(\))369 b Fd(!)g Fj(\()p Ff(x)31923 14189 y Fe(1)32449 13990 y Ff(x)33188 14189 y Fe(2)34083 13990 y Fd($)p 35780 13259 V 369 w Ff(x)36519 14189 y Fe(3)37045 13990 y Ff(x)37784 14189 y Fe(4)38310 13990 y Fj(\))p Black 2390 17017 a(a\))p Black 651 w(In)456 b(der)g(V)-108 b(orlesung)457 b(\(Absc)-36 b(hnitt)455 b(1.3)j Fi(Minimierung)483 b(von)j(Normalformen)99 b Fj(\))455 b(wurde)h(das)4197 18623 y(V)-108 b(erfahren)288 b(v)-36 b(on)289 b Fi(Quine-McCluskey)405 b Fj(v)-36 b(orgestellt.)291 b(F)-108 b(ormen)288 b(Sie)h Ff(f)431 b Fj(zun)38824 18675 y(\177)38824 18623 y(ac)-36 b(hst)288 b(in)h(\(v)-36 b(ollst)46966 18675 y(\177)46966 18623 y(andige\))4197 20228 y(DNF)481 b(um,)h(w)-36 b(enden)480 b(Sie)i(dann)e(das)i(Quine-McClusk)-36 b(ey)481 b(V)-108 b(erfahren)481 b(an.)h(Sie)f(erhalten)4197 21833 y(eine)433 b(F)-108 b(ormel)434 b Ff(f)12007 21351 y Fc(\003)12966 21885 y Fj(\177)12966 21833 y(aquiv)-72 b(alen)-36 b(t)434 b(zu)f Ff(f)142 b Fj(.)p Black 2318 24545 a(b\))p Black 650 w(Konstruieren)340 b(Sie)i(einen)f(Sc)-36 b(haltkreis)342 b(f)24147 24597 y(\177)24111 24545 y(ur)f Ff(f)26464 24063 y Fc(\003)27368 24597 y Fj(\177)27332 24545 y(ub)36 b(er)340 b(\012)370 b(=)e Fd(f^)p Ff(;)221 b Fd(_)p Ff(;)g Fd(:g)p Fj(.)343 b(Geb)36 b(en)340 b(Sie)i(Gr)46311 24597 y(\177)46311 24545 y(o\031e)4197 26150 y(und)432 b(Tiefe)j(des)e(Sc)-36 b(haltkreises)434 b(an.)945 30505 y Fg(Aufgab)42 b(e)499 b(2)1928 b Fj(\(4+4)433 b(Punkte\))945 32110 y(Sei)g Ff(f)576 b Fj(die)433 b(F)-108 b(ormel)434 b(aus)f(der)g(v)-36 b(orherigen)434 b(Aufgab)36 b(e.)p Black 2390 35137 a(a\))p Black 651 w(Berec)-36 b(hnen)432 b(Sie)h(die)h(Ringsummennormalform)g (v)-36 b(on)434 b Ff(f)142 b Fj(.)p Black 2318 37849 a(b\))p Black 650 w(Dr)5732 37901 y(\177)5696 37849 y(uc)-36 b(k)g(en)433 b(Sie)g Ff(f)576 b Fj(in)433 b(der)g(Basis)i Fd(f)p Fj(sel)p Fd(g)f Fj(aus.)945 42205 y Fg(Aufgab)42 b(e)499 b(3)1928 b Fj(\(2)433 b(Punkte\))945 43810 y(Es)g(sei)h Ff(f)576 b Fj(die)433 b(5-stellige)i(P)-36 b(arit)16273 43862 y(\177)16273 43810 y(atsfunktion,)434 b(also)11877 46743 y Ff(f)142 b Fj(\()p Ff(x)13905 46942 y Fe(1)14431 46743 y Ff(;)221 b(x)15752 46942 y Fe(2)16278 46743 y Ff(;)g(x)17599 46942 y Fe(3)18126 46743 y Ff(;)g(x)19447 46942 y Fe(4)19974 46743 y Ff(;)g(x)21295 46942 y Fe(5)21821 46743 y Fj(\))369 b(=)g Ff(x)24816 46942 y Fe(1)25637 46743 y Fd(\010)295 b Ff(x)27704 46942 y Fe(2)28525 46743 y Fd(\010)h Ff(x)30593 46942 y Fe(3)31414 46743 y Fd(\010)f Ff(x)33481 46942 y Fe(4)34302 46743 y Fd(\010)h Ff(x)36370 46942 y Fe(5)36895 46743 y Ff(:)945 49677 y Fj(Bew)-36 b(eisen)462 b(Sie:)g Ff(f)603 b Fj(nimm)-36 b(t)461 b(den)g(W)-108 b(ert)461 b(1)h(genau)f(dann)g(an,)g(w)-36 b(enn)461 b(die)h(Anzahl)f(der)g(Einsen)g(in)945 51282 y(der)433 b(Eingab)36 b(e)434 b(ungerade)f(ist.)945 54530 y Fg(Aufgab)42 b(e)499 b(4)1928 b Fj(\(8+2)433 b(Punkte\))945 56135 y(Eine)577 b(Bo)36 b(olesc)-36 b(he)578 b(F)-108 b(unktion)576 b Ff(f)755 b Fj(:)614 b Fb(B)19145 55653 y Fa(n)20384 56135 y Fd(!)f Fb(B)577 b Fj(hei\031t)g(monoton,)g(w)-36 b(enn)577 b(aus)g Ff(x)39813 56334 y Fa(i)40802 56135 y Fd(\024)613 b Ff(y)43082 56334 y Fa(i)44035 56135 y Fj(f)44468 56187 y(\177)44432 56135 y(ur)577 b(alle)945 57740 y Ff(i)369 b Fj(=)f(1)p Ff(;)221 b(:::;)g(n)437 b Fj(folgt:)e Ff(f)142 b Fj(\()p Ff(x)12636 57939 y Fe(1)13161 57740 y Ff(;)221 b(:::;)g(x)16147 57939 y Fa(n)16776 57740 y Fj(\))369 b Fd(\024)g Ff(f)142 b Fj(\()p Ff(y)20976 57939 y Fe(1)21502 57740 y Ff(;)221 b(:::;)g(y)24383 57939 y Fa(n)25012 57740 y Fj(\).)433 b(Zeigen)h(Sie:)p Black 2390 60767 a(a\))p Black 651 w Ff(f)578 b Fj(ist)438 b(monoton)811 b Fd(\()-221 b(\))813 b Ff(f)578 b Fj(k)-72 b(ann)437 b(durc)-36 b(h)436 b(eine)h(F)-108 b(ormel)437 b(dargestellt)g(w)-36 b(erden,)437 b(in)g(der)f(n)-36 b(ur)4197 62373 y Fd(^)433 b Fj(und)f Fd(_)h Fj(v)-36 b(ork)g(ommen.)p Black 2318 65085 a(b\))p Black 650 w(F)-108 b(olgern)433 b(Sie,)h(da\031)g Fd(f^)p Ff(;)221 b Fd(_g)433 b Fj(k)-36 b(eine)434 b(v)-36 b(ollst)24233 65137 y(\177)24233 65085 y(andige)435 b(Basis)f(ist.)p Black Black eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF