new version of thread section

Marc Snir (snir@watson.ibm.com)
Sun, 23 Feb 1997 23:21:10 -0500

%!PS-Adobe-2.0
%%Creator: dvips 5.58 Copyright 1986, 1994 Radical Eye Software
%%Title: threads.dvi
%%CreationDate: Sat Feb 22 17:08:45 1997
%%Pages: 5
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%EndComments
%DVIPSCommandLine: C:\UNIX\TEX\MIKTEX\BIN\DVIPS.EXE threads
%DVIPSParameters: dpi=300, compressed, comments removed
%DVIPSSource: TeX output 1997.02.22:1708
%%BeginProcSet: texc.pro
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}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{dup dup 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 /IE 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 IE N
end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /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 dup definefont setfont}B /ch-width{ch-data dup
length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
.1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N
/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id
gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp
add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add
/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{
dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1
adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2
idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string
putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval
adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}
{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{
adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2
chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{]
}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
length 1 sub dup 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 dup 1 get dup mul exch 0 get dup 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
/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
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 /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
{dup /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
TeXDict begin 39158280 55380996 1000 300 300 (C:\EDIT\MPI/threads.dvi)
@start /Fa 18 91 df<12E0A312601240A312C003087C820C>44
D<131C133EA2132E1367A2EBE78013C713C300017F1383138100037F1301486C7EA21206
000E1378380FFFF8A2381C003CA2121800387FA248131F80126000E0EB0780191D7F9C1C
>65 D<EAFFFC13FF38F00F80EB03E01301EB00F014781438143CA2141C141EA8143CA314
7814F0A2EB03E0EB0FC0B5120013FC171D7C9C1E>68 D<B512C0A200F0C7FCABB51280A2
00F0C7FCACB512C0A2121D7C9C19>I<EB3FC0EBFFF83803E07C3807801C380F000C001E
1300121C123C12381278A25AA6EB03FCA2EB001C1278A21238123C121C121E7EEA078038
03E07C3800FFF8EB3FC0161F7E9D1C>71 D<00F013F0ADB5FCA2EAF000AE141D7C9C1D>
I<12F0B3AB041D7C9C0C>I<12F0B3A9B5FCA2101D7D9C16>76 D<00FCEB07E0A300EE13
0DA300E71319A3EB803900E31331EBC071A200E11361A2EBE0E1A200E013C113F1EB7181
A3EB3B01A3131EA313001B1D7C9C24>I<00FC1370A27E12EE12EF12E7A2138012E313C0
A2EAE1E0A212E013F013701378A2133CA2131C131E130EA2130F130714F01303A2141D7C
9C1D>I<133F3801FFE0487F3807C0F8380F807C381E001E003E131F003C7F48EB0780A3
48EB03C0A86C130700781480A2007C130F003C1400003E5B6C133E6C6C5A6C6C5A6CB45A
6C5BD8003FC7FC1A1F7E9D1F>I<EAFFFC13FF38F00F80EB03C0EB01E0EB00F0A6EB01E0
1303EB0FC0B51280EBFE0000F0C7FCAD141D7C9C1B>I<EAFFF813FF38F00F80EB03C0EB
01E0EB00F0A5EB01E01303EB0FC0B51280140013F8EAF03C131C131E7FA2EB0780A2EB03
C0A2EB01E0EB00F0A21478151D7C9C1B>82 D<EA03F8EA0FFEEA1C0F487E487E0060C7FC
12E0A47E1278127FEA3FE0EA1FFCEA07FEEA01FF38001F801307EB03C0A21301A400C013
80EAE00338F00700EA7C0EEA1FFCEA07F0121F7E9D17>I<B61280A2D8001EC7FCB3A919
1D7F9C1C>I<00F01370B3A5007813E0A2383C01C0381E0380EA0F073807FE00EA01F814
1E7C9C1D>I<00F0EB0380A2007814005CA26C130EA2123E001E5BA26C5BA36C6C5AA238
03C06014E0A26C6C5A13E1A23800F18013F30173C7FCA2137B133EA2131C191D7F9C1C>
I<387FFFF0A2380001E0130314C013071480EB0F005B131E133E133C5B13F85B12015B48
5A12075B120F90C7FC121E123E123C127C1278B512F0A2141D7E9C19>90
D E /Fb 29 122 df<137013F0EA01E0EA03C0EA0780EA0F00121E121C5AA25AA45AA812
70A47EA27E121E7EEA0780EA03C0EA01F0120013700C24799F18>40
D<126012F012787E7E7EEA07801203EA01C0A2EA00E0A41370A813E0A4EA01C0A2EA0380
1207EA0F00121E5A5A5A12600C247C9F18>I<EA01C0A4EA41C138F1C780EAFDDF387FFF
00EA1FFCEA07F0A2EA1FFCEA7FFF38FDDF80EAF1C73841C100EA01C0A411147D9718>I<
121C123E127E127F123F121F1207120E121E127C12F81260080C788518>44
D<137013F8A213D8A2EA01DCA3138CEA038EA4EA0707A5380FFF80A3EA0E03381C01C0A3
387F07F000FF13F8007F13F0151C7F9B18>65 D<EA7FF8EAFFFE6C7E381C0F80EB03C0A2
EB01E01300A214F01470A814F014E0A2130114C01303EB0F80387FFF00485AEA7FF8141C
7F9B18>68 D<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA21438A5
B512F8A3151C7F9B18>I<3801F1C0EA03FDEA0FFFEA1F0FEA1C03123813011270A290C7
FC5AA5EB0FF0131F130F387001C0A213031238A2EA1C07EA1F0FEA0FFFEA03FDEA01F114
1C7E9B18>71 D<387F07F038FF8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F0
38FF8FF8387F07F0151C7F9B18>I<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C
1300111C7D9B18>I<38FC01F8EAFE03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A2
13F81370A21300A638FE03F8A3151C7F9B18>77 D<387E07F038FF0FF8387F07F0381D81
C0A313C1121CA213E1A313611371A213311339A31319A2131D130DA3EA7F07EAFF87EA7F
03151C7F9B18>I<EA0FFE383FFF804813C0EA7803EA700100F013E0EAE000B0EAF00100
7013C0EA7C07EA7FFF6C1380380FFE00131C7E9B18>I<EAFFFEEBFF8014C0EA1C03EB01
E013001470A514E01301EB03C0EA1FFF1480EBFE00001CC7FCA8B47EA3141C7F9B18>I<
EA7FF8EAFFFE6C7E381C0F80130314C01301A313031480130F381FFF005BA2EA1C0F7FEB
0380A5149CA3387F01F8EAFF81387F00F0161C7F9B18>82 D<387FFFF8B5FCA238E07038
A400001300B2EA07FFA3151C7F9B18>84 D<38FE03F8EAFF07EAFE03383C01E0001C13C0
A3EA1E03000E1380A438070700A4EA038EA4EA018C13DCA3EA00D813F8A21370151C7F9B
18>86 D<EA0FF0EA1FFC487EEA3C0FEA180738000380A213FF1207121FEA7F03127812E0
A3EAF007EA780F383FFFF8EA1FFDEA07F015147E9318>97 D<EB1F80133F131F1303A5EA
03E3EA0FFBEA1FFFEA3C1FEA380FEA7007130312E0A6EA7007A2EA380FEA3C1F381FFFF0
380FFBF83803E3F0151C7E9B18>100 D<EA01F0EA07FCEA1FFEEA3E0F38380780EA7003
A238E001C0A2B5FCA300E0C7FC1270EB01C01238EA3E07381FFF8000071300EA01F81214
7D9318>I<127E12FE127E120EA5133EEBFF80000F13C013C1EB80E01300120EAB387FC7
FC38FFE7FE387FC7FC171C809B18>104 D<EA0380EA07C0A3EA0380C7FCA4EA7FC012FF
127F1201AEB5FCA3101D7C9C18>I<EA7E3E38FEFF80007F13C0EA0FC1EB80E01300120E
AB387FC7FC38FFE7FE387FC7FC1714809318>110 D<3801F380EA07FBEA1FFFEA3E1FEA
380FEA7007A2EAE003A6EA7007A2EA380FEA3C1FEA1FFFEA0FFBEA03E3EA0003A7EB1FF0
EB3FF8EB1FF0151E7E9318>113 D<38FF0FC0EB3FE0EB7FF0EA07F0EBE060EBC0005BA2
90C7FCA9EAFFFC7F5B14147E9318>I<487E1203A4387FFFC0B5FCA238038000A9144014
E0A33801C1C013FF6C1380EB3E0013197F9818>116 D<387E07E0EAFE0FEA7E07EA0E00
AC1301EA0F033807FFFC6C13FE3801FCFC1714809318>I<387F8FF000FF13F8007F13F0
381C01C0380E0380A338070700A3138FEA038EA3EA01DCA3EA00F8A2137015147F9318>
I<387F8FF000FF13F8007F13F0380E01C0EB0380A21207EB0700A2EA0387A2138EEA01CE
A213CC120013DC1378A31370A313F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>
121 D E /Fc 22 119 df<EA7FF0EAFFE0127F0C037D8A10>45 D<127012F8A212F012E0
05057B840E>I<14021406A2140E141EA2143F142F144F14CF148FEB010FA21302A21304
1308A20110138014071320EB3FFFEB40071380A2EA0100A2120212061204001E14C039FF
807FF81D207E9F22>65 D<48B512FE39001E001C150C1504A25BA490387804081500A214
0C495AEBFFF8EBF018A23801E010A3EC001048481320A21540A248481380140115001407
380F001FB512FE1F1F7D9E1F>69 D<90B5FC90381E03C0EC00E0157015785BA44913F0A2
EC01E015C09038F00700141EEBFFF0EBF01C48487E140F8015803903C00F00A43807801E
1508A21510000F130ED8FFF01320C7EA03C01D207D9E21>82 D<EBF180380389C0380707
80EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2EA703C135C38308C80380F
070013147C9317>97 D<137EEA01C138030080EA0E07121E001C1300EA3C0248C7FCA35A
A5EA70011302EA3004EA1838EA07C011147C9315>99 D<1478EB03F8EB0070A414E0A4EB
01C0A213F1EA038938070780EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2
EA703C135C38308C80380F070015207C9F17>I<137CEA01C2EA0701120E121C123CEA38
02EA780CEA7BF0EA7C0012F0A4127013011302EA3804EA1838EA07C010147C9315>I<14
78EB019CEB033CA2EB07181400A2130EA5EBFFE0EB1C00A45BA55BA55BA5485AA35B1231
007BC7FC12F31266123C1629829F0E>I<EA01E0120FEA01C0A4485AA448C7FCA2131E13
63380E8180380F01C0120EA2381C0380A438380700A3EB0E1000701320A2131CEB0C4000
E013803860070014207D9F17>104 D<13C0EA01E0A213C0C7FCA7120E12131223EA4380
EA4700A21287120EA35AA3EA38401380A21270EA31001232121C0B1F7C9E0E>I<EA03C0
121FEA0380A4EA0700A4120EA45AA45AA45AA3127112E2A4126412380A207C9F0C>108
D<391C0F80F0392630C318394740640C903880680EEB0070A2008E495A120EA34848485A
A3ED70803A3803807100A215E115623970070064D83003133821147C9325>I<381C0F80
382630C0384740601380EB0070A2008E13E0120EA3381C01C0A3EB038400381388A2EB07
08EB031000701330383001C016147C931A>I<137CEA01C338030180000E13C0121E001C
13E0123C1278A338F003C0A3EB07801400EA700F130EEA3018EA1870EA07C013147C9317
>I<3801C1E0380262183804741C1378EB701EA2EA08E01200A33801C03CA31438380380
78147014E0EBC1C038072380EB1E0090C7FCA2120EA45AA2B47E171D809317>I<EA1C1E
EA266138278380EA47871307EB0300008EC7FC120EA35AA45AA45A123011147C9313>
114 D<13FCEA0302EA0601EA0C03130713061300EA0F8013F0EA07F8EA03FCEA003E130E
1270EAF00CA2EAE008EA4010EA2060EA1F8010147D9313>I<EA018013C0EA0380A4EA07
00A2EAFFF0EA0700120EA45AA45AA31320EA7040A21380A2EA3100121E0C1C7C9B0F>I<
000E13C0001313E0382301C0EA4381EA4701A238870380120EA3381C0700A31410EB0E20
1218A2381C1E40EA0C263807C38014147C9318>I<380E0380EA1307002313C0EA4383EA
4701130000871380120EA3381C0100A31302A25BA25BEA0E30EA03C012147C9315>I
E /Fd 25 123 df<1478137C13FC12013803C0005B1207A838FFFC78A3EA0780B3152480
A31A>12 D<12F0A404047B830E>46 D<EA01F0EA07FC487EEA1F1F383C0780A2387803C0
A3EA700100F013E0AF387803C0A4383C0780A2381F1F00EA0FFE6C5AEA01F013237EA118
>48 D<1340EA01C0120712FFA212FB1203B3A7B5FCA310227CA118>I<EA03F0EA0FFC48
7EEA3C1F38300780387003C0126000E013E0EAC0011240A21200A3EB03C0A2EB0780A2EB
0F00131E5B5B5B485A5B485A48C7FC120E5A5A5AB512E0A313227EA118>I<EA03F0EA07
FCEA1FFFEA3E0F38380780387003C01220A21200A3EB0780A2EB0F00133EEA03FC5B13FE
EA000FEB0780EB03C0A2EB01E0A5128038C003C012E038700780EA3C0F381FFF00EA0FFC
EA03F013237EA118>I<131FA2132FA2136F13EF13CF1201A2EA038FA21207130F120F12
0E121E123CA21278A212F0B512F8A338000F00A915217FA018>I<387FFF80A30078C7FC
A9EA79F8EA7BFCEA7FFFEB0F80EA7E07387C03C01278380001E0A7384003C0A212E03870
0780387C1F00EA3FFEEA0FFCEA03F013227EA018>I<12F0A41200AE12F0A404167B950E>
58 D<EB0F80A2497EA2131DEB3DE013391338EB78F0A2EB7070EBF078A213E000017FA2
13C000037FA2138000077FA290B5FC481480A2380E0007001EEB03C0A24814E01401A248
14F01400A24814F81D237FA220>65 D<EB0FF0EB7FFC90B5FC3801F01F3807C00749C7FC
48C8FC121E123E123CA25AA35AA91278A37EA2123E121E7E6C6C1380EBC0033801F00F6C
B51200EB7FFCEB0FF019257DA31F>67 D<EB0FF0EB3FFE90B512803801F80F3803E003D8
0780C7FC48C8FC121EA25AA25AA35AA6ECFFC0A300781303A37EA27EA27EEA0780EA03E0
3801F8076CB5FC013F1300EB0FF81A257DA321>71 D<12F0B3B104237CA20D>73
D<EA07F0EA3FFC487EEA781FEA400F38000780A4137FEA07FF121FEA3E07127812F0A313
0FEA7C1FEA7FFFEA3FF7EA1F8711167E9517>97 D<EA01FCEA07FF481380EA1F03EA3C01
48C7FCA2127012F0A61278A36C1340381F03C0EA0FFF6C13803801FC0012167E9516>99
D<EA01F8EA07FE487E381F0780383C03C0EA7801A2387000E0B5FCA300F0C7FCA3127012
78127C6C1340381F03C0EA0FFF6C13803800FC0013167F9516>101
D<12F0A41200A912F0B3A404237DA20B>105 D<12F0B3B104237DA20B>108
D<EAF1F8EAF3FCEAF7FEEAFE1EEAF80FA212F0B010167C9519>110
D<EA01FCEA07FF481380381F07C0383C01E0387800F0A20070137000F01378A6007813F0
A2EA7C01383E03E0381F07C0380FFF806C1300EA01FC15167F9518>I<EAF0E012F312F7
EAFF005A5A5AA25AAE0B167C9511>114 D<EA07F0EA1FFCEA3FFEEA3C0EEA78061300A2
127C123F13F0EA1FF8EA0FFCEA01FEEA001F130FA312C0EAF81EEAFFFEEA3FFCEA0FF010
167F9513>I<121EA6EAFFFCA3EA1E00AE1308EA1F1CEA0FFC13F8EA07C00E1C7F9B12>I<
38F001E0A212F8387803C0A2003C13801307A2001E13005BA2EA0E0EEA0F1EA2EA071C13
9C13BCEA03B8A213F86C5AA213167F9516>118 D<387FFFC0A338000F801400131E133E
5B13785B1201485A5B485A120F48C7FC121E5A127CB512C0A312167F9515>122
D E /Fe 34 124 df<EAFFF0A40C047F8B11>45 D<1238127C12FEA3127C123807077C86
0F>I<EA01FCEA07FF381F07C0EA1E03003E13E0387C01F0A300FC13F8AD007C13F0A338
3E03E0001E13C0EA1F8F3807FF00EA01FC151D7E9C1A>48 D<137013F0120712FF12F912
01B3A4387FFFC0A2121D7D9C1A>I<14E0A2497EA3497EA2EB06FCA2EB0EFEEB0C7EA249
7EA201307F141F01707FEB600FA2496C7E90B5FC4880EB8003000380EB0001A200066D7E
A2000E803AFFE00FFFE0A2231F7E9E28>65 D<B512FEECFFC03907E007F0EC01F86E7E15
7E81A2ED1F80A316C0A91680A3ED3F00A2157E5D4A5AEC07F0B612C04AC7FC221F7E9E28
>68 D<B612E0A23807E00714011400156015701530A21430A21500147014F013FFA213E0
14701430150CA214001518A31538157815F8EC03F0B6FCA21E1F7E9E22>I<903807FC02
90383FFF0E9038FE03DE3903F000FE4848133E4848131E485A48C7120EA2481406127EA2
00FE91C7FCA591381FFFE0A2007E9038007E00A2127F7EA26C7E6C7E6C7E6C6C13FE3800
FE0190383FFF8E903807FC06231F7D9E29>71 D<B5380FFFF0A23A07E0007E00AC90B512
FEA29038E0007EADB5380FFFF0A2241F7E9E29>I<B5FCA2EA07E0B3A9B5FCA2101F7E9E
14>I<B57EA2D807E0C7FCB115C0A31401A3EC0380A2140F141FB6FCA21A1F7E9E1F>76
D<D8FFE0EC3FF86D147F00071600D806F814DFA3017CEB019FA26DEB031FA26D1306A290
380F800CA2903807C018A3903803E030A2903801F060A2903800F8C0A2EC7D80A2EC3F00
A3141ED8FFF0903803FFF8140C2D1F7E9E32>I<D8FFE0EBFFF07F0007EC06007FEA06FC
137E7F1480131FEB0FC0EB07E0EB03F0EB01F814FC1300147E143FEC1F8615C6EC0FE614
07EC03F6EC01FE1400A2157E153E151E150ED8FFF01306A2241F7E9E29>I<EB1FF890B5
FC3901F81F803907E007E0390FC003F0391F8001F890C7FC4814FC4814FE007E147EA200
FE147FA9007E147E007F14FEA26C14FCEB8001001F14F8390FC003F03907E007E03901F8
1F806CB51200EB1FF8201F7D9E27>I<B512FEECFF803907E00FE0EC03F0EC01F8A215FC
A515F8A2EC03F0EC0FE090B51280ECFE0001E0C7FCACB5FCA21E1F7E9E24>I<B512FCEC
FF803907E00FE0EC03F081140181A45D14035DEC0FE090B5128002FCC7FCEBE03FEC0F80
81140781A381A31630EC03F802011360B53800FFC0ED3F80241F7E9E27>82
D<3803FC08380FFF38381E03F8EA3800481378143812F01418A26C13007EEA7FC013FE38
3FFF806C13C06C13E06C13F0C613F81307EB00FC147C143C12C0A36C1338147800F81370
38FE01E038EFFFC000811300161F7D9E1D>I<007FB512FCA2397C07E07C0070141C0060
140CA200E0140E00C01406A400001400B10003B512C0A21F1E7E9D24>I<B53801FFE0A2
3A07E0000C00B3A400035C6C7E5D6C6C5B90387E03C090381FFF80D903FCC7FC231F7E9E
28>I<EA07FC381FFF80383F07C0EB03E0EB01F0A2120C1200133FEA07FDEA1F81EA3E01
127C12F8A3EAFC02EA7E0C383FF87E380FE03E17147F9319>97 D<EA01FE3807FF80381F
0FC0123EA2127CEB030000FCC7FCA6127C127E003E1360003F13C0EA1F813807FF00EA01
FC13147E9317>99 D<EB07F8A21300AAEA01F8EA07FEEA1F83EA3E01EA7E00127CA212FC
A6127CA2127EEA3E01EA1F07380FFEFFEA03F818207E9F1D>I<EA01FE3807FF80380F83
C0381E01E0383E00F05A14F812FCB5FCA200FCC7FCA3127CA26C1318121E380F80703807
FFE0C6138015147F9318>I<B4FCA2121FAAEB0FC0EB3FE0EB61F0EBC0F813801300AD38
FFE7FFA218207D9F1D>104 D<121C123E127FA3123E121CC7FCA6B4FCA2121FB0EAFFE0
A20B217EA00E>I<B4FCA2121FB3AAEAFFE0A20B207E9F0E>108 D<3AFE0FE03F8090391F
F07FC03A1E70F9C3E09039407D01F0EB807E121FEB007CAC3AFFE3FF8FFEA227147D932C
>I<38FE0FC0EB3FE0381E61F0EBC0F81380EA1F00AD38FFE7FFA218147D931D>I<48B4FC
000713C0381F83F0383E00F8A248137CA200FC137EA6007C137CA26C13F8A2381F83F038
07FFC00001130017147F931A>I<38FF1FC0EB7FF0381FE1F8EB80FCEB007EA2143E143F
A6143E147E147CEB80FCEBC1F8EB7FE0EB1F8090C7FCA7EAFFE0A2181D7E931D>I<EAFE
3EEB7F80381ECFC0138FA2121FEB030090C7FCABEAFFF0A212147E9316>114
D<1203A45AA25AA2123FEAFFFCA2EA1F00AA1306A5EA0F8CEA07F8EA03F00F1D7F9C14>
116 D<38FFC0FFA2380F80703807C0606D5A3803E180EA01F36CB4C7FC137E133E133F49
7E136FEBC7C0380183E0380381F048C67E000E7F39FF81FF80A219147F931C>120
D<B61280A21902808C1A>123 D E /Ff 17 115 df<120412081210123012201260A212
4012C0AA12401260A212201230121012081204061A7D920C>40 D<128012401220123012
101218A21208120CAA12081218A212101230122012401280061A7F920C>I<121FEA3180
EA60C0EA4040EAC060A8EA4040EA60C0EA3180EA1F000B107F8F0F>48
D<1218127812981218AC12FF08107D8F0F>I<121FEA6180EA40C0EA806012C01200A213
C0EA0180EA030012065AEA10201220EA7FC012FF0B107F8F0F>I<121FEA2180EA60C0A2
12001380EA0100121FEA00801340136012C0A2EA8040EA6080EA1F000B107F8F0F>I<EA
0180A212031205120D121912111221124112C1EAFFE0EA0180A4EA0FE00B107F8F0F>I<
EA20C0EA3F80EA2E001220A3122FEA3080EA2040EA0060A312C0EA80C0EA6180EA1F000B
107F8F0F>I<EA0780EA1840EA30C0126013005A12CFEAF080EAE040EAC060A31240EA60
C0EA3080EA1F000B107F8F0F>I<1240EA7FF013E0EA8040A2EA0080EA01001202A21206
1204A2120CA50C117F900F>I<121FEA3180EA60C0A3EA3180EA3F00120EEA3380EA61C0
EAC060A31340EA60C0EA1F000B107F8F0F>I<121FEA3180EA60C0EAC0401360A3EA40E0
1221EA1E6012001340EA60C01380EA6300121E0B107F8F0F>I<00FC137E001C13700016
13B0A338130130A2EA1182A3EA10C4A21368A3133038FE31FE17117F901B>77
D<123E1263EA0180A2120F12311241EAC190A21263EA3DE00C0B7F8A0F>97
D<EA1F80EA30C0EA60005AA5EA6040EA3080EA1F000A0B7F8A0E>99
D<12F01230A5EA33C0EA3C601230A8EAFCF80D117F9011>104 D<12F7EA3980EA380012
30A712FC090B7F8A0C>114 D E /Fg 6 107 df<EA03F0EA0FFC487E487E481380A2B512
C0A66C1380A26C13006C5A6C5AEA03F012127E9317>15 D<B612F8A2D80006C7FCB3A913
021D1E7D9D23>62 D<13021306B3A9B612F8A21D1E7D9D23>I<130F1338136013E0EA01
C0AFEA0380EA0700121E12F8121E1207EA0380EA01C0AFEA00E013601338130F102D7DA1
17>102 D<12F8121E1207EA0380EA01C0AFEA00E013601338130F1338136013E0EA01C0
AFEA0380EA0700121E12F8102D7DA117>I<12C0B3B3A9022D7BA10D>106
D E /Fh 33 123 df<137E3801C180EA0301380703C0120EEB018090C7FCA5B512C0EA0E
01B0387F87F8151D809C17>12 D<1380EA0100120212065AA25AA25AA35AA412E0AC1260
A47EA37EA27EA27E12027EEA0080092A7C9E10>40 D<7E12407E12307EA27EA27EA37EA4
1380AC1300A41206A35AA25AA25A12205A5A092A7E9E10>I<EA0FE0EA3038EA401CEAE0
0E12F0A3EA000C131C1330136013C0138012011300A6C7FCA51203EA0780A2EA03000F1D
7E9C14>63 D<B512C0380F00F0143C140E80A2EC038015C01401A215E0A815C0A2140315
8014071500140E5C1470B512C01B1C7E9B20>68 D<EAFFF0EA0F00B3A8EAFFF00C1C7F9B
0F>73 D<B4EB1FF0390F8003809038C00100120BEA09E0EA08F0A21378133C133E131E13
0F14811307EB03C1EB01E114F113001479147D143D141FA2808080121CB46C7E1C1C7F9B
1F>78 D<EB3F80EBE0E03803803848487E000E7F487F003C148000381303007814C0A200
70130100F014E0A8007014C000781303A200381480003C1307001C14006C130E6C5B6C6C
5A3800E0E0EB3F801B1E7E9C20>I<007FB512C038700F010060130000401440A200C014
201280A300001400B1497E3803FFFC1B1C7F9B1E>84 D<39FFF01FF0390F000380EC0100
B3A26C1302138000035BEA01C03800E018EB7060EB0F801C1D7F9B1F>I<EA1FC0EA3070
EA78387F12301200A2EA01FCEA0F1C12381270126000E01340A3EA603C38304E80381F87
0012127E9115>97 D<EA03F8EA0C0CEA181E1230EA700CEA600012E0A61260EA70021230
EA1804EA0C18EA03E00F127F9112>99 D<EB1F801303AAEA03F3EA0E0BEA1807EA300312
70126012E0A6126012701230EA1807EA0E1B3803E3F0141D7F9C17>I<EA07E0EA0C30EA
1818EA300CEA700EEA600612E0EAFFFEEAE000A41260EA70021230EA1804EA0C18EA03E0
0F127F9112>I<13F8EA018CEA071E1206EA0E0C1300A6EAFFE0EA0E00B0EA7FE00F1D80
9C0D>I<EB03803807C4C0EA1C783838388038301800EA701CA4EA3018EA38386C5AEA27
C00020C7FCA21230EA3FF86CB4FC1480EA2003386001C0EAC000A33860018038300300EA
1C0EEA07F8121C7F9215>I<12FC121CAA137C1387EA1D03001E1380121CAD38FF9FF014
1D7F9C17>I<1218123CA21218C7FCA712FC121CB0EAFF80091D7F9C0C>I<12FC121CB3A9
EAFF80091D7F9C0C>108 D<39FC7E07E0391C838838391D019018001EEBE01C001C13C0
AD3AFF8FF8FF8021127F9124>I<EAFC7CEA1C87EA1D03001E1380121CAD38FF9FF01412
7F9117>I<EA03F0EA0E1CEA1806487E00701380EA600100E013C0A600601380EA700300
301300EA1806EA0E1CEA03F012127F9115>I<EAFC7CEA1D87381E0180001C13C0EB00E0
A21470A614E0A2EB01C0001E1380381D0700EA1CFC90C7FCA7B47E141A7F9117>I<3803
E080EA0E19EA1805EA3807EA7003A212E0A61270A2EA38071218EA0E1BEA03E3EA0003A7
EB1FF0141A7F9116>I<EAFCE0EA1D38EA1E78A2EA1C301300ACEAFFC00D127F9110>I<EA
1F90EA2070EA4030EAC010A212E0EAF800EA7F80EA3FE0EA0FF0EA00F8EA8038131812C0
A2EAE010EAD060EA8FC00D127F9110>I<1204A4120CA2121C123CEAFFE0EA1C00A91310
A5120CEA0E20EA03C00C1A7F9910>I<38FC1F80EA1C03AD1307120CEA0E1B3803E3F014
127F9117>I<38FF07E0383C0380381C0100A2EA0E02A2EA0F06EA0704A2EA0388A213C8
EA01D0A2EA00E0A3134013127F9116>I<39FF3FC7E0393C0703C0001CEB01801500130B
000E1382A21311000713C4A213203803A0E8A2EBC06800011370A2EB8030000013201B12
7F911E>I<38FF0FE0381E0700EA1C06EA0E046C5AEA039013B0EA01E012007F12011338
EA021C1204EA0C0E487E003C138038FE1FF014127F9116>I<38FF07E0383C0380381C01
00A2EA0E02A2EA0F06EA0704A2EA0388A213C8EA01D0A2EA00E0A31340A25BA212F000F1
C7FC12F312661238131A7F9116>I<EA7FFCEA70381260EA407013F013E0EA41C0120313
80EA0700EA0F04120E121CEA3C0CEA380812701338EAFFF80E127F9112>I
E /Fi 14 118 df<127812FCA412781200A6127812FCA4127806127D910D>58
D<90381FE0209038FFF8E03803F80F3807C003380F800148C7FC123E1560127E127C00FC
1400A8007C1460127E123E15C07E390F8001803907C003003803F80E3800FFFCEB1FE01B
1C7D9B22>67 D<B512F814FF390FC01FC0EC07E0EC01F015F8140015FC157CA2157EA815
7CA315F8A2EC01F0EC07E0EC1FC0B6120014F81F1C7E9B25>I<3807F820381FFEE0EA3C
07EA7801EA700012F01460A26C130012FEEAFFE0EA7FFE6C7E1480000F13C06C13E0EA00
7FEB03F01301130012C0A214E07E38F001C0EAFC0338EFFF00EA83FC141C7D9B1B>83
D<EA0FF8EA1C1E383E0F80130714C0121C1200137FEA07E7EA1F07123C127C12F8A3EA78
0B383E13F8EA0FE115127F9117>97 D<EA03FCEA0E0EEA1C1F123C1278130E00F8C7FCA6
1278EB0180123C381C0300EA0E0EEA03F811127E9115>99 D<EA03FCEA0F07381C038038
3C01C0127814E012F8A2B5FC00F8C7FCA3127814607E6C13C0380F03803801FC0013127F
9116>101 D<121E123FA4121EC7FCA6127FA2121FAEEAFFC0A20A1E7F9D0E>105
D<38FF0FC0EB31E0381F40F0EB80F8A21300AB38FFE7FFA218127F911B>110
D<EA01FC380F0780381C01C0003C13E0387800F0A200F813F8A6007813F0A2383C01E038
1E03C0380F07803801FC0015127F9118>I<EAFE3E1347381E8F80A3381F070090C7FCAA
EAFFE0A211127F9114>114 D<EA1FD8EA3078EA601812E0A2EAF000EAFF80EA7FE013F0
EA1FF8EA07FCEA007CEAC01CA212E01318EAF830EACFC00E127E9113>I<1203A45AA25A
A2EA3FFC12FFEA1F00A9130CA4EA0F08EA0798EA03F00E1A7F9913>I<38FF07F8A2EA1F
00AC1301120F380786FFEA01F818127F911B>I E /Fj 14 116 df<12F8A505057B8410>
46 D<137E3801FF80000713E04813F0381FC3F81300003E137CA2003C133C007C133EA2
0078131EA200F8131FAF0078131E007C133EA46C137C003F13FC6C13F813C3380FFFF06C
13E00001138038007E0018297EA71D>48 D<13301370EA01F0120F12FFA212F11201B3AC
B512E0A313287BA71D>I<12F8B3B3A6052A7BA910>73 D<00FE15FFA36C5C00FB15DF6D
1303A3D8F9C0EB079FA36D130F00F8151FA26D131F0170131EA20178133E0138133C013C
137CA2011C1378011E13F8A2010E13F0EB0F01A2010713E01483A2010313C014C7A20101
138014EFA20100130014FF147EA391C7FC282A7BA933>77 D<B512C014F814FE38F8007F
EC1F80EC07C0140315E0140115F0A615E01403A2EC07C0EC1F80EC7F00B512FE5C14F000
F8C8FCB21C2A7BA925>80 D<B712E0A4260001F0C7FCB3B3A2232A7EA928>84
D<EA01FC380FFF80003F13C014E0383C03F0EA3001000013F81300A4130113FF1207121F
EA3FC0EA7E005A5AA3EAFC01EA7E07EA7FFF7EEA1FFCEA0FE0151B7E9A1C>97
D<143EAFEA01FCEA03FF000F13BE4813FE13C1383F007E003E133E5AA212FC5AA77E127C
A2007E137E6C13FEEA1FC113FF6C13BE3803FE3EEA01F8172A7EA91E>100
D<13FCEA03FF4813804813C0381F87E0EA3F01383E00F05A1470481378B512F8A400F8C7
FCA31278127CA27E003F1318381FC0F8EA0FFF7E000113E038007F00151B7E9A1A>I<12
F8AF133FEBFFC000FB13E0B512F0138338FE01F8EAFC00A35AB2152A7CA91E>104
D<EAF83FEBFFC000FB13E0B512F0138338FE01F8EAFC00A35AB2151B7C9A1E>110
D<EAF83C13FC12F912FBEAFFE0138013005A5AA35AB00E1B7C9A14>114
D<EA07F8EA1FFF4813805AEA7C0738F8010090C7FCA37E127F13F0EA3FFC6C7EEA07FFC6
1380EB1FC0130F1307A2124012E038FC1F80B5FC6C1300EA1FFEEA07F8121B7E9A16>I
E /Fk 56 123 df<90387E03F03801FE0F0003131F3907803C00EB0038481378A739FFF0
7F80A3390F007800B11C20809F1B>11 D<EBF8F012011203EA078013005AA7EAFFF8A3EA
0F00B11420809F18>13 D<13E0EA01C0EA0380120713005A121EA2121C123CA212381278
A3127012F0AE12701278A31238123CA2121C121EA27E7E13801203EA01C0EA00E00B2E7C
A112>40 D<12E012707E123C121C121E7EA27E1380A2120313C0A3120113E0AE13C01203
A313801207A213005AA2121E121C123C12385A5A0B2E7EA112>I<1278A412181230A212
60A212E0050A7D830D>44 D<12F0A404047C830D>46 D<EA03F0487EEA1FFEEA1E1E487E
EA380700781380A2EA700300F013C0AE38780780A300381300EA3C0FEA1E1EEA1FFE6C5A
EA03F012207E9E17>48 D<13C01201120712FFA212FB1203B3A4EAFFFEA30F1F7C9E17>
I<EA03F0EA0FFC487EEA383FEA700F3860078012E0EB03C01240A21200A3EB0780A2EB0F
00130E5B133C5B13E0485A485A48C7FC120E5A5A5AB512C0A3121F7E9E17>I<12F0A412
00AC12F0A404147C930D>58 D<B612FCA2C9FCA8B612FCA21E0C7E9023>61
D<131FA2497E133BA2EB7BC013731371EBF1E013E113E000017FA213C000031378A21380
00077FA21300380FFFFEA2487F381E000FA24814801407A24814C01403A248EB01E01B20
7F9F1E>65 D<EAFFFCEBFF8014C038F007E0EB01F013001478A514F0EB01E0EB0FC0B512
80A214E038F003F0EB00F8143C141C141EA5143C14FCEB03F8B512F014C0EBFE0017207C
9F1E>I<EB1FC0EBFFF84813FC3803E03C3807800C48C7FC121E123E123C127C1278A35A
A81278A3127C123C123E121E6C13023807800E3803E03E3801FFFC6C13F0EB1FC017227D
A01D>I<B5FC14C08038F003F8EB00FC143E141E80A2EC0780A3EC03C0A815801407A2EC
0F00A2141E143E5CEB03F8B55A14C091C7FC1A207C9F21>I<B512F0A300F0C7FCABB512
C0A300F0C7FCACB512F0A314207C9F1B>I<B512E0A300F0C7FCABB51280A300F0C7FCAF
13207C9F1A>I<EB1FE0EBFFF84813FE3803E03E3807800E48C7FC121E123E123C5AA35A
A7EB03FEA33878001EA37E123E121E7EEA07803803E03E3801FFFE6C13F8EB1FC017227D
A01E>I<00F0131EAEB512FEA338F0001EAF17207C9F20>I<12F0B3AE04207C9F0D>I<12
F0B3ABB512C0A312207C9F19>76 D<00F8147E6C14FEA200F414DE00F61301A300F3EB03
9EA2EB8007A200F1141EEBC00FA200F0130EEBE01EA2EB601CEB703CA2EB3038EB3878A2
EB1870EB1CF0A2EB0CE0A2EB07C0A390C7FC1F207C9F28>I<00FC131E7EA212F7A21380
12F3A2EAF1C0A213E012F013F013701378A2133CA2131C131E130E130F1307A2EB039EA2
14DE1301A2EB00FEA2147E17207C9F20>I<EB1F80EBFFF0487F3803E07C3807801E4848
7E001EEB078048EB03C0A248EB01E0A30070130000F014F0A86C1301007814E0A2007C13
03003C14C0003E1307001E14806CEB0F00EBC03F3807E07E3801FFF86C5BEB1F801C227E
A021>I<EAFFFEEBFF8014E038F003F0130014781438143CA51438147814F01303B512E0
1480EBFE0000F0C7FCAD16207C9F1D>I<EB1F80EBFFF0487F3803E07C3807801E48487E
001EEB0780003E14C0003C130348EB01E0A30070130000F014F0A90078EB01E0A2130F39
3C0783C0003E13C7D81E031380390F01EF00EB81FF3807E0FE3801FFF86C7FEB1FBCEB00
3E80801580EC07C01C277EA021>I<EAFFFEEBFF8014E038F003F0EB00F81478143CA514
7814F8EB03F0B512E01480EBFE00EAF01E130E130FEB0780A2EB03C0A2EB01E0A2EB00F0
14701478143CA2141E17207C9F1D>I<EA01FC3807FF80001F13C0EA3E03EA7C00007813
005AA57E127C127EEA3FE0EA1FFCEA07FF0001138038003FC0EB07E01303EB01F01300A5
EB01E012C038F003C0EAFC0F387FFF80381FFE00EA03F814227EA019>I<B612C0A3D800
1EC7FCB3AB1A207E9F1F>I<00F0133CB3A700781378A26C13F0EA3E01381F03E0380FFF
C000031300EA00FC16217C9F1F>I<00F814F8007CEB01F0003C14E0003E13036C14C06C
EB0780EB800FD807C0130000035BEBE01E6C6C5A0000137CEB78785C133CEB1CE0131F6D
5A6D5AAE1D20809F1E>89 D<387FFFFEA3C7127C147814F8EB01F014E0130314C0EB0780
130F1400131E133E133C5B13F85B485A12035B485A120F90C7FC5A123E123C127CB512FE
A317207E9F1C>I<EA07E0EA3FF8EA7FFCEA701EEA401FEA000FA3133FEA07FF121FEA7E
0F12F812F0A3EAF83FEA7FFFEA3FEFEA1F8F10147E9316>97 D<12F0ACEAF1F0EAF7FCB4
7EEAFC1F38F80F80EAF007A2EB03C0A6EB0780A238F80F00EAFC3FEAFFFEEAF7FCEAF1F0
12207D9F17>I<EA01FCEA07FF001F1380EA3E07EA3C0148C7FCA25AA61278A26C1380EA
3E07EA1FFF00071300EA01F811147F9314>I<EB03C0ACEA03E3EA0FFBEA1FFFEA3F0FEA
7C031278A212F0A61278A2EA7C07EA3E0FEA1FFFEA0FFBEA03E312207F9F17>I<EA03F0
EA0FFC487EEA3E1FEA7C07127838700380B5FCA300F0C7FCA3127012786C1380EA3E07EA
1FFF00071300EA01F811147F9314>I<137EEA01FE1203EA078013005AA7EAFFF0A3EA0F
00B10F20809F0E>I<3803E0F0EA0FFF5A383E3E00EA3C1E487EA5EA3C1EEA3E3EEA1FFC
485AEA33E00030C7FC1238EA3FFEEBFF806C13C0007F13E0387803F0EAF000A3EAF80138
7E07E0383FFFC0000F1300EA03FC141E7F9317>I<12F0ACEAF1F8EAF3FCEAF7FEEAFC1F
EAF80FA212F0AE10207D9F17>I<12F0A41200A812F0B3A204207D9F0B>I<12F0B3AE0420
7D9F0B>108 D<39F0FC07E039F3FE1FF039F7FF3FF839FE0FF07C39F807C03CA200F013
80AE1E147D9325>I<EAF1F8EAF3FCEAF7FEEAFC1FEAF80FA212F0AE10147D9317>I<EA01
F8EA07FE381FFF80383F0FC0EA3C03387801E0A238F000F0A6387801E0A2383C03C0EA3F
0F381FFF803807FE00EA01F814147F9317>I<EAF1F0EAF7FCB47EEAFC3F38F80F80EAF0
07A2EB03C0A6EB0780A238F80F00EAFC3FEAFFFEEAF7FCEAF1F000F0C7FCA9121D7D9317
>I<3803E3C0EA0FFBEA1FFFEA3F0FEA3C07EA7803A212F0A61278A2EA7C07EA3F0FEA1F
FFEA0FFBEA03E3EA0003A9121D7F9317>I<EAF0E012F312F7EAFF0012FCA25AA25AAC0B
147D9310>I<EA0FF0EA3FFC127FEA780CEAF000A312FCEA7FE0EA3FF0EA1FF8EA03FCEA
003E131EA212C0EAF03CEAFFFCEA7FF8EA0FE00F147F9311>I<121EA6EAFFF0A3EA1E00
AD1310EA0FF8A2EA07E00D1A7F9910>I<EAF00FAF131F133FB5FCEA7FEFEA3F0F10147D
9317>I<38F003C0A212F838780780A2383C0F00A3EA1E0E131EA2EA0F1C133CA2EA0738
A213B8EA03F0A26C5A12147F9315>I<D8F01F13F01480A239781B81E0133B14C1133939
3C31C3C0137114E3D81C701380EA1E6014E713E0000EEB770013C0A20007137E143E1380
1C147F931F>I<387801E0387C03C0383E0780EA1E0F000F1300EA079EEA03FC5B12016C
5A12017F487EEA079EEA0F0F120E381E0780383C03C0387801E000F813F01414809315>
I<38F003C0A238780780A2127C383C0F00A2121E131EA2EA0F1CA2EA073C133813B81203
13B0EA01F05B1200A2485AA212035B1207B4C7FC5A5A121D7F9315>I<EA7FFFA3EA003E
133C137813F813F0EA01E01203EA07C01380EA0F005A121E5A127CB5FCA310147F9314>
I E /Fl 11 85 df<1230127812F81278127005057C840D>46 D<137EEA01C338030180
000713C0EA0E0014E05AA2EA3C0112381278A538F003C0A51480130712E01400A2130E12
60EA701CEA3038EA3870EA0FC0131F7C9D17>48 D<13181338EA01F8EA0E701200A513E0
A6EA01C0A6EA0380A6EA07001380EAFFFC0E1E7B9D17>I<1408140C141C143CA2147C14
7E149EA2EB011EA21302801304A21308A20110138014071320A2EB7FFF90384007C0EB80
03A2EA0100A21202EC01E01206001F130339FF801FFE1F207F9F22>65
D<0007B57E3900F801E0903878007081497F151E150E150FA348481480A6484814005DA3
151E153E4848133C5DA25D4A5A4A5A260F000FC7FC143CB512F0211F7E9E23>68
D<0007B512FC3900F8007C0178131C150C5B1504A414043901E00800A31438EBFFF8EBE0
383803C010A4EC00081510485AA21520A2156015C0380F00011407B612801E1F7E9E1F>
I<3A07FF83FFC03A00F8007C000178133CA2495BA648485BA490B5FCEBE0004848485AA6
4848485AA64848485A01807F39FFF07FF8221F7E9E22>72 D<D807F8EB7FC0D8007CEB1F
00150C015E1304019E5B138FA2EB8780A2EB83C0D801035BEB01E0A2EB00F0A214780002
5C143CA2141EA2140F485CEC07C0A21403A21401000C5C001E1300B47E221F7E9E22>78
D<3807FFFE3900F8078090387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780
EC1E00EBFFF03803C03880141E140EA2140F48485AA51502D80F001304EB800F39FFF007
88C7EA01F01F207E9E21>82 D<EB1F82EB7066EBC01E3801800EEA030048130C00061304
120EA3000F1300A27FEA07F013FF6C13C06C13E038003FF0EB03F813001478143CA20040
1338A3143000601370146000F013C038E8018038C60300EA81FC17217E9F19>I<003FB5
12F0383C078000301430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F38
3FFFE01C1F7A9E21>I E /Fm 65 123 df<90381F83E09038F06E303901C07878380380
F8903800F03048EB7000A7B612803907007000B2383FE3FF1D20809F1B>11
D<133FEBE0C0EA01C0380381E0EA0701A290C7FCA6B512E0EA0700B2383FC3FC1620809F
19>I<EB3FE013E0EA01C1EA0381EA0700A8B5FCEA0700B2383FE7FC1620809F19>I<EA70
38EAF87CEAFC7EA2EA743AEA0402A3EA0804A2EA1008A2EA2010EA40200F0E7F9F17>34
D<127012F812FCA212741204A31208A21210A212201240060E7C9F0D>39
D<13401380EA01005A12061204120C5AA212381230A212701260A412E0AC1260A4127012
30A212381218A27E120412067E7EEA008013400A2E7BA112>I<7E12407E12307E120812
0C7EA212077EA213801201A413C0AC1380A412031300A25A1206A25A120812185A12205A
5A0A2E7EA112>I<1303AFB612FCA2D80003C7FCAF1E207E9A23>43
D<127012F012F8A212781208A31210A31220A21240050E7C840D>I<EAFFF0A20C02808A
0F>I<127012F8A3127005057C840D>I<144014C0EB0180A3EB0300A31306A25BA35BA35B
A25BA35BA3485AA348C7FCA21206A35AA35AA25AA35AA35AA2122D7EA117>I<EA03F0EA
0E1C487EEA1806EA380738700380A400F013C0AD00701380A3EA780700381300EA1806EA
1C0E6C5AEA03F0121F7E9D17>I<13801203120F12F31203B3A6EA07C0EAFFFE0F1E7C9D
17>I<EA03F0EA0C1CEA100E487E00401380128000F013C0EAF803A3EA200712001480A2
EB0F00130E5B5B5B13605B485A48C7FC000613405A5A00101380EA3FFF5AB5FC121E7E9D
17>I<EA03F0EA0C1CEA100EEA200F007813801307A2EA380F12001400A2131E131C1370
EA07F0EA003C130E130FEB0780A214C0122012F8A300F013801240EB0F00EA200EEA183C
EA07F0121F7E9D17>I<1306A2130EA2131E132EA2134E138EA2EA010E1202A212041208
A212101220A2124012C0B512F038000E00A7EBFFE0141E7F9D17>I<EA1803EA1FFE5B5B
13E00010C7FCA6EA11F0EA161CEA180EEA10071480EA0003A214C0A3127012F0A200E013
801240EB0700EA20066C5AEA0838EA07E0121F7E9D17>I<127012F8A312701200AA1270
12F8A3127005147C930D>58 D<127012F8A312701200AA127012F012F8A212781208A312
10A31220A21240051D7C930D>I<5B497EA3497EA3EB09E0A3EB10F0A3EB2078A3497EA2
EBC03EEB801EA248B5FCEB000FA20002EB0780A348EB03C0A2120C001E14E039FF801FFE
1F207F9F22>65 D<B512E0380F0078141EA2801580A515005C141E147CEBFFF0EB007C14
1FEC0F80EC07C0140315E0A515C014071580EC0F00143EB512F01B1F7E9E20>I<90380F
E0109038381C309038E002703803C00139078000F048C71270121E15305A1510127C1278
00F81400A91278007C1410123CA26C1420A27E6C6C13406C6C13803900E00300EB380CEB
0FF01C217E9F21>I<B61280380F000F14031401140015C01540A314401500A214C01301
13FF130113001440A3EC0020A31540A315C01401EC0380140FB6FC1B1F7E9E1F>69
D<B61280380780071401A2140015C01540A4EC2000A3146014E013FF138014601420A391
C7FCA87FEAFFFE1A1F7F9E1E>I<39FFF07FF8390F000780AD90B5FCEB0007AF39FFF07F
F81D1F7E9E22>72 D<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>I<EAFFF8EA0F8090C7FC
B21402A414061404A2140C141C147CB512FC171F7E9E1C>76 D<B46CEB07FE000715C0A2
D805C0130BA2D804E01313A301701323A26D1343A36D1383A290380E0103A3EB0702A3EB
0384A2EB01C8A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E2A>I<B4EB0FF8390F8003
E0EC0080EA0BC0EA09E0A2EA08F01378A27F7FA27FEB0780A2EB03C0EB01E0A2EB00F014
78A2143C141EA2140F1407A214031401123E38FF80001D1F7E9E22>I<EB1FE0EB703838
01C00E48487E39070003804814C0001EEB01E048EB00F0A2007C14F8A20078147800F814
7CA900781478007C14F8A2003C14F0003E1301001E14E06CEB03C06C1480390380070038
01E01E38007038EB1FE01E217E9F23>I<B512E0380F007C141E80EC0780A215C0A41580
A2EC0F00141E147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<B57E380F00F0143C8080A2
1580A41500A2141E5C14F0EBFF80EB01C0EB0070A280143CA3143EA31504143F141FEC0F
0839FFF00788C7EA01F01E207E9E21>82 D<3803F040380C0CC0EA1803EA3001EA6000A2
12E01440A36C13007E127CEA7F80EA3FF86CB4FC00071380C613C0EB1FE013031301EB00
F014707EA46C136014E06C13C038F8018038C60300EA81FC14217E9F19>I<007FB512E0
38780F010060EB006000401420A200C0143000801410A400001400B3497E3803FFFC1C1F
7E9E21>I<39FFF00FF8390F0003E0EC0080B3A46CEB01001380120314026C6C5A6C6C5A
EB3830EB0FC01D207E9E22>I<39FFF003FE391F8000F86CC7126015206C6C1340A36C6C
1380A2EBE00100011400A23800F002A213F8EB7804A26D5AA36D5AA2131F6D5AA2EB07C0
A36D5AA36DC7FC1F207F9E22>I<3BFFF07FF81FF03B1F000FC007C06C90390780018017
0015C001805C00071502EC09E013C000035DEC19F01410D801E05CA2EC2078D800F05CA2
EC403C01785CA2EC801E017C1460013C144090383D000F133F6D5CA2011E1307010E91C7
FCA2010C7F010413022C207F9E2F>I<397FF81FF8390FE007C03907C0030000031302EB
E0063801F00400005BEBF818EB78106D5AEB3E60EB1E406D5AA213076D7E497E1305EB08
F0EB18F8EB1078EB207CEB603EEB401EEB801F3901000F801407000214C000061303001F
EB07E039FFC01FFE1F1F7F9E22>I<EA0804EA1008EA2010A2EA4020A2EA8040A3EAB85C
EAFC7EA2EA7C3EEA381C0F0E7A9F17>92 D<EA1FE0EA3030EA7818131CEA300E1200A313
FEEA078EEA1E0E1238127800F01310A3131E127838386720380F83C014147E9317>97
D<121C12FC121CAA137CEA1D87381E0180EB00C0001C13E01470A21478A6147014F014E0
001E13C0381A018038198700EA107C15207E9F19>I<EA01FCEA0706EA1C0F1238130600
78C7FC127012F0A61270127800381380A2381C0100EA0706EA01F811147F9314>I<EB01
C0130F1301AAEA01F1EA070DEA0C03EA180112381278127012F0A61270A21238EA180312
0CEA070D3801F1F815207F9F19>I<EA03F0EA0E1C487E487EA21270EB038012F0A2B5FC
00F0C7FCA31270A26C1380A2381C0100EA0706EA01F811147F9314>I<137CEA01C6EA03
0F1207EA0E061300A7EAFFF0EA0E00B2EA7FE01020809F0E>I<14E03803E330EA0E3CEA
1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33E00020C7FCA21230A2EA3FFE381FFF80
14C0383001E038600070481330A4006013606C13C0381C03803803FC00141F7F9417>I<
121C12FC121CAA137C1386EA1D03001E1380A2121CAE38FF8FF014207E9F19>I<123812
7CA31238C7FCA6121C12FC121CB1EAFF80091F7F9E0C>I<121C12FC121CAAEB1FE0EB07
80EB060013045B5B5B136013E0EA1DF0EA1E70EA1C38133C131C7F130F7F148014C038FF
9FF014207E9F18>107 D<121C12FC121CB3ABEAFF8009207F9F0C>I<391C3E03E039FCC3
0C30391D039038391E01E01CA2001C13C0AE3AFF8FF8FF8021147E9326>I<EA1C7CEAFC
86EA1D03001E1380A2121CAE38FF8FF014147E9319>I<EA01F8EA070E381C0380383801
C0A2387000E0A200F013F0A6007013E0A2383801C0A2381C038038070E00EA01F814147F
9317>I<EA1C7CEAFD87381E018014C0381C00E014F014701478A6147014F014E0381E01
C0EB0380381D8700EA1C7C90C7FCA8B47E151D7E9319>I<3801F04038070CC0EA0E02EA
1C03EA38011278127012F0A6127012781238EA1C03EA0C05EA0709EA01F1EA0001A8EB0F
F8151D7F9318>I<EA1CF0EAFD18EA1E3CA21318EA1C00AEEAFFC00E147E9312>I<EA0FC8
EA3038EA6018EAC008A3EAE000127CEA3FE0EA1FF0EA07F8EA003CEA800E130612C0A213
04EAE00CEAD818EA87E00F147F9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB13
04A5EA07081203EA01F00E1C7F9B12>I<381C0380EAFC1FEA1C03AE1307120CEA061B38
03E3F014147E9319>I<38FF83F8383E00E0001C13C06C1380A338070100A21383EA0382
A2EA01C4A213E4EA00E8A21370A3132015147F9318>I<39FF9FE1FC393C078070391C03
0060EC8020000E1440A214C0D80704138014E0A239038861001471A23801D032143A143E
3800E01CA2EB6018EB40081E147F9321>I<38FF87F8381E03C0380E0180EB0300EA0702
EA0384EA01C813D8EA00F01370137813F8139CEA010E1202EA060738040380000C13C000
3C13E038FE07FC16147F9318>I<38FF83F8383E00E0001C13C06C1380A338070100A213
83EA0382A2EA01C4A213E4EA00E8A21370A31320A25BA3EAF080A200F1C7FC1262123C15
1D7F9318>I<EA7FFFEA700E1260EA401C133813781370EA00E0120113C0EA0380120713
01120E121EEA1C03EA3802EA7006130EEAFFFE10147F9314>I E
/Fn 46 122 df<132013401380EA01005A12061204120CA25AA25AA312701260A312E0AE
1260A312701230A37EA27EA2120412067E7EEA0080134013200B327CA413>40
D<7E12407E7E12187E12041206A27EA2EA0180A313C01200A313E0AE13C0A312011380A3
EA0300A21206A21204120C5A12105A5A5A0B327DA413>I<127012F812FCA212741204A4
1208A21210A212201240060F7C840E>44 D<EAFFF8A20D02808B10>I<127012F8A31270
05057C840E>I<13801203120F12F31203B3A9EA07C0EAFFFE0F217CA018>49
D<EA03F0EA0C1CEA100700201380384003C0A2008013E012F0EAF801A3EA2003120014C0
A2EB07801400130E5B13185B5B5B485A90C7FC000213205A5A00181360481340383FFFC0
5AB5FC13217EA018>I<1303A25BA25B1317A21327136713471387120113071202120612
041208A212101220A2124012C0B512F838000700A7EB0F80EB7FF015217FA018>52
D<00101380381E0700EA1FFF5B13F8EA17E00010C7FCA6EA11F8EA120CEA1C0738180380
1210380001C0A214E0A4127012F0A200E013C01280EA4003148038200700EA1006EA0C1C
EA03F013227EA018>I<12401260387FFFE014C0A23840008038C0010012801302A2485A
5BA25B5BA21360134013C0A21201A25B1203A41207A76CC7FC13237DA118>55
D<EA01F8EA060EEA0803381001801220386000C0A31270A238780180003E1300EA3F02EA
1FC4EA0FF812036C7EEA067EEA083F38100F80383007C0EA6003EB00E05A1460A4006013
4014C06C138038180300EA0E0EEA03F013227EA018>I<EA01F0EA060C487EEA18073838
03801270A238F001C0A314E0A5127013031238EA1805120CEA0619EA03E1380001C0A3EB
0380A21230387807001306EA700CEA20186C5AEA0FC013227EA018>I<497EA3497EA3EB
05E0A2EB09F01308A2EB1078A3497EA3497EA2EBC01F497EA248B51280EB0007A20002EB
03C0A348EB01E0A348EB00F0121C003EEB01F839FF800FFF20237EA225>65
D<903807E0109038381830EBE0063901C0017039038000F048C7FC000E1470121E001C14
30123CA2007C14101278A200F81400A812781510127C123CA2001C1420121E000E14407E
6C6C13803901C001003800E002EB381CEB07E01C247DA223>67 D<B512F0380F801E0007
1307EC0380EC01C0EC00E015F01578A2157C153CA3153EA9153CA2157C1578A215F015E0
1401EC03C0EC0700000F131EB512F01F227EA125>I<B612C0380F800700071301140015
40A215601520A314201500A3146014E013FF138014601420A315081400A21510A31530A2
157015E0000F1303B6FC1D227EA121>I<B612C0380F80070007130114001540A2156015
20A314201500A3146014E013FF138014601420A491C7FCA9487EEAFFFE1B227EA120>I<
39FFFC3FFF390FC003F039078001E0AE90B5FCEB8001AF390FC003F039FFFC3FFF20227E
A125>72 D<EAFFFCEA0FC0EA0780B3ACEA0FC0EAFFFC0E227EA112>I<D8FFC0EB03FF00
0F15F0000715E0D805E01305A2D804F01309A301781311A36D1321A36D1341A26D1381A3
9038078101A3EB03C2A2EB01E4A3EB00F8A31470120E001FEC03F03AFFE0203FFF28227E
A12D>77 D<39FF8007FF3907C000F81570D805E01320EA04F0A21378137C133C7F131F7F
EB0780A2EB03C0EB01E0A2EB00F014F81478143C143E141E140FA2EC07A0EC03E0A21401
A21400000E1460121FD8FFE0132020227EA125>I<B512F0380F803C0007130FEC078015
C0140315E0A615C014071580EC0F00143CEBFFF00180C7FCAE487EEAFFFC1B227EA121>
80 D<B512E0380F803C0007130E6E7E81140381A55D14075D020EC7FC143CEBFFE0EB80
708080141E140E140FA481A3168015C014073A0FC003C10039FFFC01E2C8127C21237EA1
24>82 D<3803F020380C0C60EA1802383001E0EA70000060136012E0A21420A36C1300A2
1278127FEA3FF0EA1FFE6C7E0003138038003FC0EB07E01301EB00F0A214707EA46C1360
A26C13C07E38C8018038C60700EA81FC14247DA21B>I<007FB512F83978078078006014
1800401408A300C0140C00801404A400001400B3A3497E3801FFFE1E227EA123>I<EA1F
E0EA3038EA780C130EEA30071200A313FFEA07C7EA1E07123C1278127000F01308A3130F
EA7817383C2390380FC1E015157E9418>97 D<120E12FE121E120EAB131FEB61C0EB8060
380F0030000E1338143C141C141EA7141C143C1438000F1370380C8060EB41C038083F00
17237FA21B>I<EA01FEEA0703380C0780121C383803000078C7FC127012F0A712700078
134012386C1380380C0100EA0706EA01F812157E9416>I<14E0130F13011300ABEA01F8
EA0704EA0C02EA1C01EA38001278127012F0A7127012781238EA1801EA0C0238070CF038
01F0FE17237EA21B>I<EA01FCEA0707380C0380381C01C01238007813E0EA700012F0B5
FC00F0C7FCA512700078132012386C13406C138038070300EA00FC13157F9416>I<133E
13E33801C780EA0387130748C7FCA9EAFFF80007C7FCB27FEA7FF0112380A20F>I<1470
3803F198380E1E18EA1C0E38380700A200781380A400381300A2EA1C0EEA1E1CEA33F000
20C7FCA212301238EA3FFE381FFFC06C13E0383000F0481330481318A400601330A20038
13E0380E03803803FE0015217F9518>I<120E12FE121E120EABEB1F80EB60C0EB80E038
0F0070A2120EAF38FFE7FF18237FA21B>I<121C123EA3121CC7FCA8120E127E121E120E
B1EAFFC00A227FA10E>I<13E0EA01F0A3EA00E01300A81370EA07F012001370B3A51260
EAF0E013C0EA6180EA3F000C2C83A10F>I<120E12FE121E120EABEB03FCEB01F014C014
80EB02005B5B5B133813F8EA0F1CEA0E1E130E7F1480EB03C0130114E0EB00F014F838FF
E3FE17237FA21A>I<390E1FC07F3AFE60E183803A1E807201C03A0F003C00E0A2000E13
38AF3AFFE3FF8FFE27157F942A>109 D<380E1F8038FE60C0381E80E0380F0070A2120E
AF38FFE7FF18157F941B>I<EA01FCEA0707380C0180381800C0003813E0481370A200F0
1378A700701370007813F0003813E0381C01C0380E038038070700EA01FC15157F9418>
I<EA0E1F38FE61C0380E8060380F0070000E1338143CA2141EA7143CA21438000F137038
0E80E0EB41C0EB3F0090C7FCA9EAFFE0171F7F941B>I<EA0E3CEAFE46EA1E8FEA0F0F13
061300120EAD120FEAFFF010157F9413>114 D<EA0F88EA3078EA601812C01308A212E0
EAF000127FEA3FE0EA0FF0EA01F8EA003CEA801C130CA212C01308EAE018EAD030EA8FC0
0E157E9413>I<1202A41206A3120E121E123EEAFFFCEA0E00AB1304A6EA07081203EA01
F00E1F7F9E13>I<000E137038FE07F0EA1E00000E1370AD14F0A2380601703803827838
00FC7F18157F941B>I<39FF8FF87F393E01E03C001CEBC01814E0000E1410EB02601470
00071420EB04301438D803841340EB8818141CD801C81380EBD00C140E3900F00F00497E
A2EB6006EB400220157F9423>119 D<38FF80FE381E00781430000E1320A26C1340A2EB
80C000031380A23801C100A2EA00E2A31374A21338A31310A25BA35B12F05B12F10043C7
FC123C171F7F941A>121 D E /Fo 20 118 df<B51280A311037F9016>45
D<B612E015FC3907E0007F0003EC0F80ED03C06F7E6F7E16788282A282A21780160717C0
A21603A217E0AB17C0A21607A21780A2160F17005E161E5E5E16F84B5A4B5AED0F800007
023FC7FCB612FC15E02B317CB033>68 D<B51280A23807F0006C5AB3B3A7487EB51280A2
11317DB017>73 D<D8FFF0ED7FF8A200071700D802F815BEA3017CEC013EA26D1402A36D
1404A36D6C1308A36D6C1310A36D6C1320A26D6C1340A36D6C1380A391387C0100A3EC3E
02A36E5AA2EC0F88A3EC07D0A3EC03E0A300076D5AD80F80157FD8FFF891380FFFF8EC00
8035317CB03D>77 D<B612E015FC3907E0003F0003EC0F80ED03C0ED01E016F0ED00F8A2
1678167CA6167816F816F0150116E0ED03C0ED0F80ED3E0090B512F801E0C8FCB3A3487E
B57EA226317DB02D>80 D<90387F80203801FFE03907C07860380F001C001EEB06E04813
0300381301007813001270156012F0A21520A37E1500127C127E7E13C0EA1FF86CB47E6C
13F06C13FCC613FF010F1380010013C0EC1FE01407EC03F01401140015F8A26C1478A57E
15706C14F015E07E6CEB01C000ECEB038000C7EB070038C1F01E38807FFCEB0FF01D337C
B125>83 D<13FE380303C0380C00E00010137080003C133C003E131C141EA21208C7FCA3
EB0FFEEBFC1EEA03E0EA0F80EA1F00123E123C127C481404A3143EA21278007C135E6CEB
8F08390F0307F03903FC03E01E1F7D9E21>97 D<EB1FC0EBF0303801C00C38078002EA0F
00000E130F001E5B5AA2007C1304007890C7FC12F8A91278127C123C15807E000EEB0100
120F380780023801C00C3800F030EB1FC0191F7E9E1D>99 D<15F0141FA214011400AFEB
0FC0EB70303801C00C3803800238070001120E001E13005AA2127C1278A212F8A71278A2
127C123CA27E000E13016C1302380380046C6C487E3A00F030FF80EB1FC021327EB125>
I<EB3F80EBE0E0380380383807003C000E7F121E001C7F123C127C00781480140712F8A2
B6FC00F8C8FCA61278127C123C15807E000EEB0100000F13027E3801C00C3800F030EB1F
C0191F7E9E1D>I<EB07E0EB1C10EB3838EB707C13E01201EBC03800031300ACB512C0A2
3803C000B3A8487EEA7FFFA216327FB114>I<15F090387F03083901C1C41C380380E839
0700700848EB7800001E7FA2003E133EA6001E133CA26C5B6C13706D5A3809C1C0D8087F
C7FC0018C8FCA5121C7E380FFFF86C13FF6C1480390E000FC00018EB01E048EB00F00070
1470481438A500701470A26C14E06CEB01C00007EB07003801C01C38003FE01E2F7E9F21
>I<120FEA1F80A4EA0F00C7FCABEA0780127FA2120F1207B3A6EA0FC0EAFFF8A20D307E
AF12>105 D<260780FEEB1FC03BFF83078060F0903A8C03C180783B0F9001E2003CD807
A013E4DA00F47F01C013F8A2495BB3A2486C486C133F3CFFFC1FFF83FFF0A2341F7E9E38
>109 D<380780FE39FF83078090388C03C0390F9001E0EA07A06E7E13C0A25BB3A2486C
487E3AFFFC1FFF80A2211F7E9E25>I<EB1FC0EBF0783801C01C38070007481480001EEB
03C0001C1301003C14E0A248EB00F0A300F814F8A8007814F0007C1301003C14E0A26CEB
03C0A26CEB07803907800F003801C01C3800F078EB1FC01D1F7E9E21>I<380783E038FF
8418EB887CEA0F90EA07A01438EBC000A35BB3487EEAFFFEA2161F7E9E19>114
D<3801FC10380E0330381800F048137048133012E01410A37E6C1300127EEA3FF06CB4FC
6C13C0000313E038003FF0EB01F813006C133CA2141C7EA27E14186C1338143000CC1360
38C301C03880FE00161F7E9E1A>I<1340A513C0A31201A212031207120F381FFFE0B5FC
3803C000B01410A80001132013E000001340EB78C0EB1F00142C7FAB19>I<D8078013F0
00FF131FA2000F130100071300B31401A300031302EBC0040001497E3A007030FF80EB1F
C0211F7E9E25>I E /Fp 5 85 df<166016E0A215011503A2150782150DA21519153915
311561A215C1A2EC0181140315011406A2020C7F15005C143814305CA25CA249B5FCA249
C7FC1306A25B8249147CA25B137013605BA212011203D80FE014FED8FFF890381FFFE0A2
2B327CB134>65 D<010FB512FCEEFF80903A007E000FE0027CEB03F0EE00F8177CA24A80
171E171FA2495AEF0F80A3495AA3171F495AA4494815005FA349C8127EA3177C013E15FC
5F16015F494A5AA24C5A4C5A4992C7FC161E5E5E4848495A4B5AED0F800003027FC8FCB6
12FC15C031317BB035>68 D<010FB612F8A29039007E0003027C13001778A217305CA449
5AA31760903903E001801700A3494848C7FCA25D151F90380FFFFEA2EC801E150E90381F
000CA4013E5BA292C8FCA25BA45BA4485AA31203B512E0A22D317BB02E>70
D<010FB512E016FC9039007E003F027CEB0F80EE07C0EE03E0A24AEB01F0A31603495AA3
17E04948130717C0160F17804948EB1F00163E1678ED01E090390F800F80DAFFFCC7FCEC
800E8149486C7E826F7EA2013E80A4491303A25EA2491307A3171848481530A217200003
02031360B5D8800113C0923800F180C9EA3E002D327BB033>82 D<0007B712F0A23A0FE0
07E0070180EBC001D80E00EC00E0120C121C0018495AA24816C0A24AC7FC5AA348013EEB
0180C791C7FCA35CA45CA4495AA4495AA4495AA4495AA449C9FCA35B003FB5FCA22C3174
B032>84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin
%%PaperSize: A4

%%EndSetup
%%Page: 1 1
1 2 bop 75 -100 a Fl(0.1.)34 b Fk(MPI)15 b Fl(AND)g(THREADS)1231
b Fm(1)75 49 y Fj(0.1)59 b(MPI)20 b(and)f(Threads)75
198 y Fi(Curren)o(t)14 b(Status:)j Fh(no)c(v)o(ote)1875
245 y Fg(>)j Ff(\(Marc)o(h\))166 302 y Fm(This)22 b(section)g(sp)q
(eci\014es)h(the)f(in)o(teraction)g(b)q(et)o(w)o(een)f
Fk(MPI)g Fm(calls)i(and)e(threads.)39 b Fk(MPI)21 b Fm(ma)o(y)f(b)q(e)
1875 304 y Fg(?)c Ff(\(Marc)o(h\))75 358 y Fm(implemen)o(ted)h(in)g(en)
o(vironmen)o(ts)f(where)g(threads)f(are)h(not)f(supp)q(orted,)h(or)f(p)
q(erform)g(p)q(o)q(orly)l(.)23 b(There-)75 415 y(fore,)13
b(it)g(is)g(not)f(required)i(that)e(all)i Fk(MPI)e Fm(implemen)o
(tations)j(b)q(eha)o(v)o(e)e(as)f(sp)q(eci\014ed)j(in)f(this)f
(section.)20 b(The)75 471 y(requiremen)o(ts)12 b(here)g(apply)g(to)f
Fe(thread-complian)o(t)j Fm(implemen)o(tations,)f(unless)f(sp)q
(eci\014ed)i(otherwise.)75 593 y Fd(0.1.1)49 b(General)75
679 y Fm(In)18 b(a)f(thread-complian)o(t)h(implemen)o(tation,)h(an)f
Fk(MPI)e Fm(pro)q(cess)i(is)g(a)f(pro)q(cess,)h(whic)o(h)g(ma)o(y)f(b)q
(e)h(m)o(ulti-)75 735 y(threaded.)h(Eac)o(h)13 b(thread)f(can)g(issue)i
Fk(MPI)e Fm(calls;)i(ho)o(w)o(ev)o(er,)d(threads)i(are)f(not)g
(separately)g(addressable:)q Fg(>)k Ff(\(Marc)o(h\))1875
794 y Fg(?)g Ff(\(Marc)o(h\))75 791 y Fm(a)11 b(rank)h(in)h(a)e(send)i
(or)e(receiv)o(e)i(call)f(iden)o(ti\014es)i(a)d(pro)q(cess,)i(not)e(a)h
(thread.)18 b(A)12 b(message)g(sen)o(t)f(to)g(a)h(pro)q(cess)75
848 y(can)j(b)q(e)h(receiv)o(ed)h(b)o(y)e(an)o(y)g(thread)g(in)h(this)f
(pro)q(cess.)189 954 y Fc(R)n(ationale.)66 b Fm(This)21
b(mo)q(del)f(corresp)q(onds)g(to)f(the)h(P)o(osix)f(mo)q(del)i(of)e(in)
o(terpro)q(cess)h(comm)o(uni-)189 1011 y(cation:)27 b(the)18
b(fact)g(that)g(a)h(pro)q(cess)g(is)g(m)o(ulti-threaded,)h(rather)e
(than)h(single-threaded,)i(do)q(es)189 1067 y(not)f(a\013ect)h(the)g
(external)g(in)o(terface)h(of)e(this)i(pro)q(cess.)38
b Fk(MPI)20 b Fm(implemen)o(tations)i(where)g Fk(MPI)189
1124 y Fm(pro)q(cesses)15 b(are)f(P)o(osix)h(threads)g(are)g(not)f
(thread-complian)o(t)i(b)o(y)e(this)i(de\014nition)g(\(indeed,)g(their)
189 1180 y(\\pro)q(cesses")f(are)g(single-threaded\).)21
b(\()p Fc(End)16 b(of)g(r)n(ationale.)p Fm(\))189 1286
y Fc(A)n(dvic)n(e)g(to)h(users.)43 b Fm(It)16 b(is)h(the)f(user's)f
(resp)q(onsibilit)o(y)j(to)e(prev)o(en)o(t)f(races)h(when)g(threads)g
(within)189 1343 y(the)h(same)h(application)h(p)q(ost)e(con\015icting)i
(comm)o(unication)f(calls.)29 b(The)17 b(user)h(can)g(mak)o(e)f(sure)
189 1399 y(that)12 b(t)o(w)o(o)g(threads)h(in)h(the)g(same)f(pro)q
(cess)g(will)i(not)e(issue)h(con\015icting)h(comm)o(unication)f(calls)g
(b)o(y)189 1456 y(using)i(distinct)g(comm)o(unicators)f(at)f(eac)o(h)i
(thread.)j(\()p Fc(End)d(of)g(advic)n(e)g(to)h(users.)p
Fm(\))166 1562 y(The)e(t)o(w)o(o)f(main)i(requiremen)o(ts)g(for)e(a)h
(thread-complian)o(t)h(implemen)o(tation)g(are)f(listed)i(b)q(elo)o(w.)
131 1656 y(1.)22 b(All)c Fk(MPI)e Fm(calls)i(are)f Fc(thr)n(e)n
(ad-safe)p Fm(.)25 b(I.e.,)16 b(t)o(w)o(o)g(concurren)o(tly)h(running)h
(threads)f(ma)o(y)f(mak)o(e)h Fk(MPI)189 1712 y Fm(calls)k(and)g(the)g
(outcome)f(will)i(b)q(e)f(as)f(if)h(the)g(calls)g(executed)h(in)f(some)
f(order,)i(ev)o(en)e(if)h(their)189 1769 y(execution)16
b(is)g(in)o(terlea)o(v)o(ed.)131 1862 y(2.)22 b(Blo)q(c)o(king)i
Fk(MPI)e Fm(calls)h(will)i(blo)q(c)o(k)e(the)g(calling)h(thread)f(only)
l(,)h(allo)o(wing)g(another)e(thread)h(to)189 1919 y(execute,)18
b(if)h(a)o(v)m(ailable.)29 b(The)18 b(calling)i(thread)d(will)j(b)q(e)e
(blo)q(c)o(k)o(ed)h(un)o(til)g(the)f(ev)o(en)o(t)f(on)h(whic)o(h)h(it)
189 1975 y(is)c(w)o(aiting)g(o)q(ccurs.)20 b(Once)15
b(the)g(blo)q(c)o(k)o(ed)g(comm)o(unication)h(is)f(enabled)h(and)f(can)
f(pro)q(ceed,)i(then)189 2032 y(the)h(call)h(will)h(complete)f(and)f
(the)h(thread)f(will)h(b)q(e)g(mark)o(ed)f(runnable,)i(within)f(a)f
(\014nite)h(time.)189 2088 y(A)h(blo)q(c)o(k)o(ed)i(thread)f(will)h
(not)f(prev)o(en)o(t)f(progress)g(of)h(other)f(runnable)i(threads)f(on)
f(the)h(same)189 2145 y(pro)q(cess,)15 b(and)g(will)i(not)e(prev)o(en)o
(t)g(them)g(from)f(executing)j Fk(MPI)d Fm(calls.)75
2251 y Fe(Example)k(0.1)k Fm(Pro)q(cess)h(0)f(consists)g(of)g(t)o(w)o
(o)f(threads.)41 b(The)23 b(\014rst)e(thread)i(executes)g(a)f(blo)q(c)o
(king)75 2307 y(send)c(call)g Fk(MPI)p 351 2307 14 2
v 16 w(Send\(bu\0131,)h(count,)g(t)o(yp)q(e,)g(0,)e(0,)g(comm\))p
Fm(,)e(whereas)j(the)f(second)h(thread)f(executes)h(a)75
2364 y(blo)q(c)o(king)e(receiv)o(e)g(call)g Fk(MPI)p
572 2364 V 16 w(Recv\(bu\0132,)f(count,)h(t)o(yp)q(e,)g(0,)e(0,)g
(comm\))p Fm(.)k(I.e.,)c(the)h(\014rst)g(thread)g(sends)g(a)75
2420 y(message)e(that)h(is)g(receiv)o(ed)h(b)o(y)f(the)g(second)g
(thread.)19 b(This)c(comm)o(unication)f(should)h(alw)o(a)o(ys)e
(succeed.)75 2477 y(According)19 b(to)f(the)h(\014rst)f(requiremen)o
(t,)h(the)g(execution)g(will)h(corresp)q(ond)f(to)f(some)g(in)o(terlea)
o(ving)h(of)75 2533 y(the)13 b(t)o(w)o(o)e(calls.)21
b(According)13 b(to)g(the)f(second)i(requiremen)o(t,)f(a)g(call)h(can)f
(only)g(blo)q(c)o(k)h(the)f(calling)h(thread,)75 2590
y(and)h(cannot)g(prev)o(en)o(t)g(progress)f(of)h(the)g(other)f(thread.)
20 b(If)15 b(the)g(send)h(call)g(w)o(en)o(t)e(ahead)h(of)g(the)g
(receiv)o(e)75 2646 y(call,)g(then)e(the)h(sending)h(thread)e(ma)o(y)g
(blo)q(c)o(k,)h(but)g(this)g(will)h(not)e(prev)o(en)o(t)h(the)f
(receiving)i(thread)f(from)75 2703 y(executing.)34 b(Th)o(us,)21
b(the)f(receiv)o(e)g(call)h(will)h(o)q(ccur.)33 b(Once)21
b(b)q(oth)f(calls)h(o)q(ccur,)f(the)g(comm)o(unication)-32
46 y Ff(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 2 2
2 3 bop 75 -100 a Fm(2)75 49 y(is)18 b(enabled,)h(and)e(b)q(oth)h
(calls)g(will)h(complete.)28 b(Note)17 b(that,)f(on)i(the)f(other)g
(hand,)h(a)f(single-threaded)75 106 y(pro)q(cess)j(that)g(p)q(osts)f(a)
h(send,)h(follo)o(w)o(ed)g(b)o(y)f(a)f(matc)o(hing)h(receiv)o(e,)i(ma)o
(y)d(deadlo)q(c)o(k.)35 b(The)21 b(progress)75 162 y(requiremen)o(t)13
b(for)e(m)o(ultithreaded)j(implemen)o(tations)f(is)g(stronger,)e(as)h
(a)g(blo)q(c)o(k)o(ed)h(call)g(cannot)f(prev)o(en)o(t)75
219 y(progress)j(in)h(other)e(threads.)189 325 y Fc(A)n(dvic)n(e)f(to)i
(implementors.)39 b Fk(MPI)13 b Fm(calls)h(can)g(b)q(e)g(made)f
(thread-safe)g(b)o(y)h(executing)g(only)g(one)g(at)189
381 y(a)i(time,)g(e.g.,)g(b)o(y)g(protecting)g Fk(MPI)g
Fm(co)q(de)h(with)g(one)f(pro)q(cess)h(global)g(lo)q(c)o(k.)24
b(Ho)o(w)o(ev)o(er,)15 b(blo)q(c)o(k)o(ed)189 438 y(op)q(erations)j
(cannot)g(hold)h(the)g(lo)q(c)o(k,)g(as)f(this)h(w)o(ould)f(prev)o(en)o
(t)h(progress)e(of)h(other)g(threads)g(in)189 494 y(the)f(pro)q(cess.)
26 b(The)17 b(lo)q(c)o(k)h(is)g(held)g(only)g(for)e(the)i(duration)f
(of)g(an)g(atomic,)g(lo)q(cally-completing)189 551 y(sub)q(op)q
(eration)h(suc)o(h)h(as)e(p)q(osting)h(a)g(send)g(or)g(completing)h(a)e
(send,)i(and)f(is)g(freed)g(in)h(b)q(et)o(w)o(een.)189
607 y(Finer)c(lo)q(c)o(ks)g(can)h(pro)o(vide)f(more)g(concurren)o(y)l
(,)g(at)f(the)h(exp)q(ense)h(of)f(higher)h(lo)q(c)o(king)g(o)o(v)o
(erheads.)189 664 y(Concurrency)i(can)g(also)g(b)q(e)h(ac)o(hiev)o(ed)g
(b)o(y)e(ha)o(ving)i(some)e(of)h(the)g Fk(MPI)f Fm(proto)q(col)h
(executed)h(b)o(y)189 720 y(separate)14 b(serv)o(er)h(threads.)20
b(\()p Fc(End)15 b(of)i(advic)n(e)f(to)g(implementors.)p
Fm(\))75 842 y Fd(0.1.2)49 b(Cla)o(ri\014cations)-117
871 y Fg(>)15 b Ff(\(Marc)o(h\))75 928 y Fk(Initialization)i(and)g
(Completion)45 b Fm(The)17 b(call)h(to)e Fk(MPI)p 993
928 14 2 v 16 w(FINALIZE)g Fm(should)i(o)q(ccur)f(on)g(the)g(same)f
(thread)75 984 y(that)e(in)o(v)o(ok)o(ed)i Fk(MPI)p 424
984 V 15 w(INIT)p Fm(.)e(W)l(e)i(call)g(this)f(thread)g(the)g
Fc(main)h(pr)n(o)n(c)n(ess)f(thr)n(e)n(ad)p Fm(.)20 b(The)15
b(call)i(should)f(o)q(ccur)75 1041 y(only)g(after)e(all)i(the)g(pro)q
(cess)f(threads)g(ha)o(v)o(e)g(completed)h(their)g Fk(MPI)e
Fm(calls.)189 1147 y Fc(R)n(ationale.)40 b Fm(This)15
b(constrain)o(t)g(simpli\014es)j(implemen)o(tation.)j(\()p
Fc(End)15 b(of)i(r)n(ationale.)p Fm(\))-117 1208 y Fg(?)e
Ff(\(Marc)o(h\))75 1317 y Fk(Multiple)21 b(threads)h(w)o(ait)e(on)h
(same)e(request.)47 b Fm(A)21 b(program)e(where)h(t)o(w)o(o)f(threads)i
(blo)q(c)o(k,)h(w)o(aiting)e(on)75 1373 y(the)e(same)f(request,)h(is)g
(erroneous.)27 b(Similarly)19 b(the)f(same)f(request)h(cannot)f(app)q
(ear)h(in)g(the)g(arra)o(y)e(of)75 1430 y(requests)f(of)g(t)o(w)o(o)f
(concurren)o(t)h(w)o(ait)p Fg(f)p Fm(an)o(y)f Fg(j)h
Fm(some)g Fg(j)g Fm(all)h Fg(g)f Fm(calls.)189 1536 y
Fc(R)n(ationale.)58 b Fm(This)19 b(is)g(consisten)o(t)f(with)h(the)f
(view)h(that)e(a)h(m)o(ultithreaded)i(execution)f(corre-)189
1592 y(sp)q(onds)14 b(to)g(an)g(in)o(terlea)o(ving)i(of)e(the)g
Fk(MPI)g Fm(calls.)20 b(In)15 b(a)f(single)i(threaded)e(implemen)o
(tation,)i(once)189 1649 y(a)c(w)o(ait)g(is)h(p)q(osted)g(on)g(a)f
(request)g(the)h(request)g(handle)h(will)g(b)q(e)f(n)o(ulli\014ed)i(b)q
(efore)e(it)g(is)g(p)q(ossible)i(to)189 1705 y(p)q(ost)h(a)h(second)g
(w)o(ait)g(on)g(the)g(same)f(handle.)27 b(With)17 b(threads,)g(an)f
(MPI)p 1462 1705 V 17 w(W)-5 b(AIT\(an)o(y)l(,some,all\))189
1762 y(ma)o(y)19 b(b)q(e)h(blo)q(c)o(k)o(ed)h(without)e(ha)o(ving)h(n)o
(ulli\014ed)j(its)c(request\(s\))g(so)h(it)f(b)q(ecomes)i(the)e(user's)
h(re-)189 1818 y(sp)q(onsibilit)o(y)c(to)d(a)o(v)o(oid)h(using)g(the)g
(same)g(request)g(in)g(a)g(MPI)p 1246 1818 V 16 w(W)-5
b(AIT)14 b(on)g(another)f(thread.)19 b(This)189 1875
y(constrain)o(t)d(also)h(simpli\014es)h(implemen)o(tation,)g(as)f(only)
g(one)g(thread)f(will)j(b)q(e)e(blo)q(c)o(k)o(ed)h(on)e(an)o(y)189
1931 y(comm)o(unication)g(ev)o(en)o(t.)j(\()p Fc(End)d(of)g(r)n
(ationale.)p Fm(\))75 2051 y Fk(Prob)q(e)46 b Fm(A)23
b(receiv)o(e)h(call)g(that)e(uses)i(source)f(and)g(tag)f(v)m(alues)j
(returned)e(b)o(y)g(a)g(preceding)h(call)h(to)75 2108
y Fk(MPI)p 160 2108 V 16 w(PROBE)c Fm(or)e Fk(MPI)p 487
2108 V 16 w(IPROBE)h Fm(will)h(receiv)o(e)g(the)f(message)f(matc)o(hed)
g(b)o(y)h(the)f(prob)q(e)i(call)f(only)g(if)75 2164 y(there)e(w)o(as)f
(no)h(other)g(matc)o(hing)g(receiv)o(e)h(after)f(the)g(prob)q(e)g(and)g
(b)q(efore)h(that)e(receiv)o(e.)30 b(In)18 b(a)g(m)o(ulti-)75
2220 y(threaded)f(en)o(vironmen)o(t,)g(it)g(is)g(up)g(to)g(the)f(user)h
(to)f(enforce)h(this)g(condition)h(using)g(suitable)g(m)o(utual)75
2277 y(exclusion)h(logic.)28 b(This)18 b(can)f(b)q(e)h(enforced)g(b)o
(y)g(making)f(sure)h(that)e(eac)o(h)i(comm)o(unicator)f(is)h(used)g(b)o
(y)75 2333 y(only)e(one)f(thread)g(on)g(eac)o(h)h(pro)q(cess.)75
2453 y Fk(Collective)k(calls)45 b Fm(Matc)o(hing)19 b(of)g(collectiv)o
(e)i(calls)f(on)f(a)g(comm)o(unicator)g(is)h(done)g(according)f(to)g
(the)75 2510 y(order)14 b(in)g(whic)o(h)h(the)f(calls)h(are)e(issued)j
(at)d(eac)o(h)h(pro)q(cess.)19 b(If)c(concurren)o(t)e(threads)h(issue)h
(suc)o(h)f(calls)h(on)75 2566 y(the)i(same)g(comm)o(unicator,)h(it)f
(is)h(up)g(to)f(the)g(user)h(to)e(mak)o(e)h(sure)h(the)f(calls)i(are)e
(correctly)g(ordered,)75 2623 y(using)f(in)o(terthread)f(sync)o
(hronization.)1967 46 y Ff(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 3 3
3 4 bop 75 -100 a Fl(0.1.)34 b Fk(MPI)15 b Fl(AND)g(THREADS)1231
b Fm(3)75 49 y Fk(Exception)15 b(handlers)46 b Fm(An)14
b(exception)g(handler)g(do)q(es)g(not)e(necessarily)j(execute)f(in)f
(the)h(con)o(text)e(of)h(the)75 106 y(thread)18 b(that)f(made)h(the)h
(exception-raising)h Fk(MPI)d Fm(call;)j(the)f(exception)g(handler)g
(ma)o(y)e(b)q(e)i(executed)75 162 y(b)o(y)c(a)g(thread)g(that)g(is)g
(distinct)i(from)d(the)h(thread)g(that)g(will)i(return)e(the)g(error)g
(co)q(de.)189 268 y Fc(R)n(ationale.)75 b Fm(The)21 b
Fk(MPI)f Fm(implemen)o(tation)j(ma)o(y)d(b)q(e)i(m)o(ultithreaded,)h
(so)e(that)f(part)g(of)h(the)189 325 y(comm)o(unication)13
b(proto)q(col)f(ma)o(y)g(execute)h(on)f(a)g(thread)g(that)g(is)h
(distinct)g(from)f(the)g(thread)h(that)189 381 y(made)k(the)g
Fk(MPI)f Fm(call.)27 b(The)17 b(curren)o(t)g(design)h(allo)o(ws)f(the)g
(exception)h(handler)g(to)e(b)q(e)i(executed)189 438
y(on)d(the)g(thread)g(where)h(the)f(exception)h(o)q(ccurred.)21
b(\()p Fc(End)15 b(of)i(r)n(ationale.)p Fm(\))75 560
y Fd(0.1.3)49 b(Initialization)1875 589 y Fg(>)16 b Ff(\(Marc)o(h\))75
740 y Fk(MPI)p 160 740 14 2 v 16 w(THREAD)p 358 740 V
17 w(QUERY\(env\))117 817 y Fh(OUT)108 b Fk(env)523 b
Fh(curren)o(t)16 b(thread)e(en)o(vironmen)o(t)f(\(c)o(hoice\))75
941 y Fb(int)23 b(MPI)p 245 941 15 2 v 17 w(Thread)p
406 941 V 17 w(query\(int*)f(env\))75 1028 y(MPI)p 150
1028 V 17 w(THREAD)p 311 1028 V 16 w(INIT\(ENV,)h(IERROR\))170
1084 y(INTEGER)g(ENV,)h(IERROR)166 1171 y Fm(This)19
b(call)h(queries)f(the)g(curren)o(t)g(thread)f(en)o(vironmen)o(t.)31
b(The)18 b(call)i(will)g(return)f(in)g Fk(env)h Fm(one)e(of)75
1227 y(four)d(p)q(ossible)i(v)m(alues)75 1321 y Fe(MPI)p
184 1321 16 2 v 18 w(THREADS)p 461 1321 V 19 w(NOT)p
596 1321 V 20 w(SUPPOR)l(TED)23 b Fm(The)15 b Fk(MPI)g
Fm(library)h(is)g(not)f(thread)g(complian)o(t.)75 1415
y Fe(MPI)p 184 1415 V 18 w(THREADS)p 461 1415 V 19 w(SUPPOR)l(TED)24
b Fm(The)15 b Fk(MPI)g Fm(library)h(is)f(thread)g(complian)o(t)h(and)g
(has)f(not)f(y)o(et)189 1471 y(b)q(een)i(initialized)j(for)14
b(threads.)75 1565 y Fe(MPI)p 184 1565 V 18 w(SINGLE)p
398 1565 V 19 w(THREAD)24 b Fm(The)15 b Fk(MPI)f Fm(library)i(is)f
(thread)g(complian)o(t)h(and)f(has)g(b)q(een)h(initialized)189
1622 y(for)e(a)h(single)i(mpi)f(thread)f(execution.)75
1715 y Fe(MPI)p 184 1715 V 18 w(MUL)l(TIPLE)p 476 1715
V 19 w(THREADS)24 b Fm(The)17 b Fk(MPI)g Fm(library)h(is)g(thread)f
(complian)o(t)h(and)g(has)f(b)q(een)h(ini-)189 1772 y(tialized)f(for)d
(m)o(ultiple)j(threads)e(calling)i Fk(MPI)p Fm(.)166
1866 y(V)l(endors)d(ma)o(y)f(pro)o(vide)i(implemen)o(tation)g(dep)q
(enden)o(t)g(mec)o(hanisms)g(for)e(setting)h(up)g(the)g(thread)75
1922 y(en)o(vironmen)o(t)g(externally)l(,)h(at)f(load)g(time.)20
b(In)15 b(addition,)g(the)f(follo)o(wing)g(function)h(can)f(b)q(e)h
(used)g(to)e(set)75 1979 y(this)j(en)o(vironmen)o(t)f(and)h(run)f
(time.)75 2130 y Fk(MPI)p 160 2130 14 2 v 16 w(THREAD)p
358 2130 V 17 w(INIT\(env\))117 2207 y Fh(IN)155 b Fk(env)523
b Fh(sets)15 b(the)g(t)o(yp)q(e)f(of)g(thread)g(en)o(vironmen)o(t)f
(\(c)o(hoice\))75 2331 y Fb(int)23 b(MPI)p 245 2331 15
2 v 17 w(Thread)p 406 2331 V 17 w(init\(int)f(env\))75
2418 y(MPI)p 150 2418 V 17 w(THREAD)p 311 2418 V 16 w(INIT\(ENV,)h
(IERROR\))170 2474 y(INTEGER)g(ENV,)h(IERROR)166 2561
y Fm(This)13 b(call)h(initializes)i(the)c Fk(MPI)g Fm(library)i(for)e
(execution)i(in)f(a)f(m)o(ultithreaded)i(en)o(vironmen)o(t.)19
b(This)75 2617 y(call)12 b(should)f(b)q(e)h(in)o(v)o(ok)o(ed)f(at)f
(most)g(once,)h(after)f Fk(MPI)p 970 2617 14 2 v 16 w(INIT)g
Fm(and)h(m)o(ust)f(b)q(e)h(in)o(v)o(ok)o(ed)g(on)g(the)f(main)h
(thread.)75 2674 y(There)k(should)i(b)q(e)f(no)f(p)q(ending,)h(non)o
(blo)q(c)o(king)h Fk(MPI)d Fm(call)j(when)e Fk(MPI)p
1297 2674 V 16 w(THREAD)p 1495 2674 V 17 w(INIT)g Fm(is)h(in)o(v)o(ok)o
(ed.)-32 46 y Ff(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 4 4
4 5 bop 75 -100 a Fm(4)166 49 y(The)11 b(call)h(can)e(sp)q(ecify)i
Fk(env)f(=)g(MPI)p 764 49 14 2 v 16 w(MUL)l(TIPLE)p 997
49 V 16 w(THREADS)p Fm(,)g(or)f Fk(env)h(=)g(MPI)p 1498
49 V 16 w(SINGLE)p 1666 49 V 17 w(THREAD)p Fm(.)75 106
y(The)f(call)i(is)e(erroneous)g(if)h(the)f(curren)o(t)g(thread)g(en)o
(vironmen)o(t)h(is)f(other)g(than)g Fa(MPI)p 1473 106
13 2 v 14 w(THREADS)p 1677 106 V 15 w(SUPPORTED)p Fm(.)166
162 y(These)16 b(t)o(w)o(o)e(calls)i(should)h(b)q(e)f(supp)q(orted)g(b)
o(y)f(all)i Fk(MPI)e Fm(implemen)o(tations,)h(ev)o(en)g(if)g(they)f
(are)g(not)75 219 y(thread)g(complian)o(t.)166 275 y(The)g(follo)o
(wing)h(initialization)i(scenarios)e(are)f(supp)q(orted)h(with)f(these)
h(t)o(w)o(o)d(calls.)143 369 y Fg(\017)23 b Fk(MPI)14
b Fm(library)i(is)g(not)f(thread)g(complian)o(t:)189
425 y(The)g(call)h Fk(MPI)p 450 425 14 2 v 16 w(THREAD)p
648 425 V 17 w(QUERY)h Fm(returns)e Fa(MPI)p 1063 425
13 2 v 14 w(THREADS)p 1267 425 V 15 w(NOT)p 1370 425
V 15 w(SUPPORTED)p Fm(,)e(and)189 482 y Fk(MPI)p 274
482 14 2 v 15 w(THREAD)p 471 482 V 18 w(INIT)h Fm(should)i(not)f(b)q(e)
h(in)o(v)o(ok)o(ed.)143 576 y Fg(\017)23 b Fk(MPI)14
b Fm(library)i(is)g(thread)f(complian)o(t:)189 632 y(User)h(has)h(to)f
(initialize)k(the)d(thread)f(library)i(and)f(sp)q(ecify)h(whether)f(he)
g(or)f(she)h(in)o(tend)h(to)e(use)189 689 y Fk(MPI)d
Fm(calls)j(on)e(the)h(main)f(thread)h(only)l(,)g(or)f(on)g(sev)o(eral)g
(threads.)20 b(The)14 b(user)h(can)f(do)h(this)g(in)g(one)189
745 y(of)f(t)o(w)o(o)g(w)o(a)o(ys.)240 839 y Fe({)23
b Fm(A)17 b(\(nonstandard\))f(mec)o(hanism)h(is)g(used)h(to)e
(initialize)k(the)d(thread)g(en)o(vironmen)o(t)g(exter-)289
895 y(nally)l(,)f(e.g.,)e(with)h(an)g(argumen)o(t)g(in)h(\\mpiexec":)
289 952 y(In)d(suc)o(h)g(a)g(case)g(the)g(call)h(to)e
Fk(MPI)p 868 952 V 16 w(THREAD)p 1066 952 V 17 w(QUERY)i
Fm(will)h(return)e Fa(MPI)p 1542 952 13 2 v 14 w(SINGLE)p
1695 952 V 15 w(THREAD)289 1008 y Fm(or)c Fa(MPI)p 416
1008 V 15 w(MUL)m(TIPLE)p 629 1008 V 14 w(THREADS)p Fm(,)h(and)g(the)g
(program)f(should)i(not)f(in)o(v)o(ok)o(e)g Fk(MPI)p
1622 1008 14 2 v 16 w(THREAD)p 1820 1008 V 17 w(INIT)p
Fm(.)240 1081 y Fe({)23 b Fm(The)15 b(thread)g(en)o(vironmen)o(t)h(is)f
(not)g(initialized)k(externally:)289 1138 y(In)i(suc)o(h)g(a)f(case,)i
Fk(MPI)p 703 1138 V 16 w(THREAD)p 901 1138 V 17 w(QUERY)g
Fm(will)g(return)f Fa(MPI)p 1400 1138 13 2 v 14 w(THREADS)p
1604 1138 V 15 w(SUPPORTED)p Fm(,)289 1194 y(and)15 b(the)g(program)f
(m)o(ust)h(in)o(v)o(ok)o(e)g Fk(MPI)p 975 1194 14 2 v
16 w(THREAD)p 1173 1194 V 17 w(INIT)p Fm(.)166 1288 y
Fk(MPI)g Fm(calls)h(other)f(than)g Fk(MPI)p 674 1288
V 15 w(THREAD)p 871 1288 V 18 w(QUERY,)h(MPI)p 1150 1288
V 16 w(THREAD)p 1348 1288 V 17 w(INIT,)e(MPI)p 1563 1288
V 16 w(INIT)g Fm(and)75 1344 y Fk(MPI)p 160 1344 V 16
w(INITIALIZED)22 b Fm(should)j(b)q(e)g(used)g(on)f(the)g(main)g(thread)
g(\(the)g(thread)g(that)f(returned)i(from)75 1401 y Fk(MPI)p
160 1401 V 16 w(INIT)f Fm(only)h(if)g(no)g(other)f(thread)g(is)i(spa)o
(wned)e(or)h(if)g(the)f(curren)o(t)h(thread)f(en)o(vironmen)o(t)h(is)75
1457 y Fa(MPI)p 152 1457 13 2 v 14 w(SINGLE)p 305 1457
V 15 w(THREAD)12 b Fm(or)f Fa(MPI)p 626 1457 V 14 w(MUL)m(TIPLE)p
838 1457 V 14 w(THREADS)p Fm(.)g Fk(MPI)g Fm(calls)i(should)f(b)q(e)g
(used)h(on)e(threads)g(other)75 1514 y(than)k(the)g(main)h(thread)f
(only)h(if)f(the)h(curren)o(t)f(thread)g(en)o(vironmen)o(t)g(is)h
Fa(MPI)p 1423 1514 V 14 w(MUL)m(TIPLE)p 1635 1514 V 15
w(THREADS)p Fm(.)166 1617 y Fi(Discussion:)f Fh(Need)g(to)f(reconcile)h
(with)e(text)i(in)e(generalized)i(requests)189 1771 y
Fc(R)n(ationale.)67 b Fm(V)l(arious)21 b(optimizations)f(are)g(p)q
(ossible)h(when)g Fk(MPI)e Fm(co)q(de)h(is)h(executed)f(single-)189
1827 y(threaded:)27 b(m)o(utual)19 b(exclusion)h(co)q(de)g(ma)o(y)e(b)q
(e)h(omitted.)31 b(Also,)19 b(the)g(mo)q(del)h(of)e(one)h(comm)o(u-)189
1884 y(nication)h(threads,)g(m)o(ultiple)i(computation)d(thread)h
(\014ts)f(w)o(ell)i(man)o(y)e(applications.)34 b(E.g.,)19
b(if)189 1940 y(the)g(pro)q(cess)h(co)q(de)h(is)f(a)f(sequen)o(tial)i
(F)l(ortran/C/C++)e(program)f(with)i Fk(MPI)f Fm(calls)i(that)e(has)189
1997 y(b)q(een)d(parallelized)i(b)o(y)d(a)g(compiler)i(for)d(execution)
j(on)e(an)g(SMP)g(no)q(de,)h(in)g(a)f(cluster)h(of)f(SMPs,)189
2053 y(then)e(the)h(pro)q(cess)g(computation)f(is)h(m)o(ulti-threaded,)
h(but)e Fk(MPI)g Fm(calls)i(will)g(lik)o(ely)g(execute)f(on)f(a)189
2110 y(single)j(thread.)21 b(Hence)16 b(the)g(requiremen)o(t)g(that)e
(the)i(user)g(sp)q(ecify)g(whether)g Fk(MPI)f Fm(calls)h(will)h(b)q(e)
189 2166 y(in)o(v)o(ok)o(ed)f(on)g(one,)g(or)g(on)g(m)o(ultiple)i
(threads.)k(Note,)16 b(ho)o(w)o(ev)o(er,)f(that)h(if)g
Fk(MPI)g Fm(co)q(de)g(is)h(executed)189 2223 y(within)d(signal)g(or)f
(in)o(terrupt)g(handlers,)i(then)e Fk(MPI)g Fm(co)q(de)h(ma)o(y)e(end)i
(up)g(executing)g(on)f(m)o(ultiple,)189 2279 y(concurren)o(t)g
(threads,)f(ev)o(en)i(if)f Fk(MPI)f Fm(calls)i(are)f(issued)h(only)g(b)
o(y)f(a)f(single)i(thread.)19 b(Implemen)o(tors)189 2336
y(will)f(still)h(need)e(to)g(enforce)g(m)o(utual)g(exclusion,)i(or)d
(to)g(funel)i(the)f(execution)h(of)f(suc)o(h)g(co)q(de)h(to)189
2392 y(the)d(main)h(thread.)j(\()p Fc(End)d(of)g(r)n(ationale.)p
Fm(\))189 2498 y Fc(A)n(dvic)n(e)e(to)i(users.)40 b Fm(It)15
b(is)g(p)q(ossible)h(to)e(spa)o(wn)g(threads)h(b)q(efore)g
Fk(MPI)e Fm(is)j(initialized)i(for)c(threads,)189 2555
y(if)22 b(no)g Fk(MPI)g Fm(call,)i(other)e(than)g Fk(MPI)p
839 2555 14 2 v 16 w(THREAD)p 1037 2555 V 17 w(QUERY,)h(MPI)p
1322 2555 V 16 w(INIT)p Fm(,)e(or)h Fk(MPI)p 1606 2555
V 16 w(INITIALIZED)189 2611 y Fm(is)e(in)o(v)o(ok)o(ed)g(b)q(efore)f
Fk(MPI)p 634 2611 V 16 w(THREAD)p 832 2611 V 17 w(INIT)p
Fm(.)g(In)h(particular,)h(it)f(is)g(p)q(ossible)h(to)e(en)o(ter)h(the)g
Fk(MPI)189 2668 y Fm(execution)c(with)f(a)g(m)o(ulti-threaded)i(pro)q
(cess.)1967 46 y Ff(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 5 5
5 6 bop 75 -100 a Fl(0.1.)34 b Fk(MPI)15 b Fl(AND)g(THREADS)1231
b Fm(5)189 49 y(It)15 b(is)h(p)q(ossible)h(to)d(execute)i
Fk(MPI)f Fm(calls)h(on)f(the)g(main)h(thread)f(b)q(efore)g(the)h
(thread)f(en)o(vironmen)o(t)189 106 y(is)g(initialize)q(d,)j(if)d(no)g
(other)g(thread)g(is)h(spa)o(wned.)k(In)c(particular,)f
Fk(MPI)g Fm(co)q(des)g(that)g(do)g(not)g(use)189 162
y(threads)g(do)g(not)g(need)h(to)e(initialize)19 b(the)c(thread)g(en)o
(vironmen)o(t.)21 b(No)15 b(c)o(hanges)g(are)g(required)h(in)189
219 y(co)q(des)d(that)e(do)h(not)g(use)h(threads,)f(in)i(order)e(to)f
(accomo)q(date)h(a)g(thread)h(complian)o(t)g Fk(MPI)e
Fm(library)l(.)189 294 y(It)g(is)h(often)f(exp)q(ensiv)o(e)i(for)e(a)g
(thread)g(to)g(inquire)i(ab)q(out)e(its)h(iden)o(tit)o(y)l(.)19
b(The)12 b(thread)f(initialization)189 350 y(will)18
b(b)q(e)f(more)g(easily)h(done,)f(if)g(done)g(b)q(efore)g(m)o(ultiple)i
(threads)d(where)h(spa)o(wned,)g(while)h(only)189 407
y(the)d(main)h(thread)f(executes.)20 b(\()p Fc(End)c(of)g(advic)n(e)g
(to)h(users.)p Fm(\))166 560 y Fi(Discussion:)34 b Fh(Do)13
b(w)o(e)h(w)o(an)o(t)g(to)f(pro)o(vide)h(an)g(inquiry)f(function)g
(that)h(iden)o(ti\014es)h(the)f(main)e(thread?)75 727
y Fk(Alternative)k(1:)75 813 y Fm(If)k(the)f(optimizations)h(ac)o(hiev)
o(ed)g(when)g(only)g(one)f(thread)g(executes)h(are)f(not)g(deemed)h
(signi\014can)o(t,)75 870 y(then)c(w)o(e)e(can)i(c)o(ho)q(ose)f(not)g
(pro)o(vide)h(this)f(information)h(to)e Fk(MPI)p Fm(:)166
926 y Fk(MPI)p 251 926 14 2 v 16 w(THREAD)p 449 926 V
17 w(QUERY)j Fm(returns)e(only)g(three)h(v)m(alues:)21
b Fa(MPI)p 1233 926 13 2 v 14 w(THREADS)p 1437 926 V
15 w(NOT)p 1540 926 V 15 w(SUPPORTED)p Fm(,)75 983 y
Fa(MPI)p 152 983 V 14 w(THREADS)p 356 983 V 15 w(SUPPORTED)13
b Fm(and)j Fa(MPI)p 795 983 V 14 w(THREADS)p 999 983
V 15 w(INITIALIZED)p Fm(.)166 1039 y(The)f(function)h
Fk(MPI)p 522 1039 14 2 v 16 w(THREAD)p 720 1039 V 17
w(INIT)f Fm(is)h(parameterless.)75 1161 y Fd(0.1.4)49
b(Alternative)16 b(2:)75 1247 y Fm(W)l(e)11 b(ma)o(y)f(w)o(an)o(t)f(to)
h(distinguish)j(b)q(et)o(w)o(een)e(a)g(single-threaded)h(pro)q(cess,)g
(and)e(a)h(m)o(ulti-threaded)h(pro)q(cess)75 1303 y(where)j(all)g
Fk(MPI)f Fm(calls)h(execute)h(on)e(the)h(same)f(thread)g(\(this,)g(b)q
(ecause,)i Fk(MPI)d Fm(co)q(de)i(executed)h(in)f(signal)75
1360 y(handlers)f(ma)o(y)e(still)j(execute)e(on)g(other)g(threads,)g
(ev)o(en)g(if)g(all)h(calls)g(are)f(on)g(one)g(thread;)g(also,)g(b)q
(ecause)75 1416 y(P)o(osix)e(do)q(es)g(not)f(require)i(some)e(library)i
(calls)g(that)e(are)g(lik)o(ely)j(used)e(b)o(y)g Fk(MPI)f
Fm(co)q(de)i(and)f(user)g(co)q(de,)h(suc)o(h)75 1472
y(as)k Fk(mallo)q(c\(\))p Fm(,)e(to)h(b)q(e)i(thread-safe.)23
b(In)17 b(suc)o(h)f(a)g(case,)g Fk(MPI)p 1089 1472 V
16 w(THREAD)p 1287 1472 V 17 w(QUERY)h Fm(returns)f(\014v)o(e)h
(di\013eren)o(t)75 1529 y(v)m(alues:)j Fa(MPI)p 304 1529
13 2 v 14 w(THREADS)p 508 1529 V 15 w(NOT)p 611 1529
V 15 w(SUPPORTED,)9 b(MPI)p 969 1529 V 14 w(THREADS)p
1173 1529 V 15 w(SUPPORTED,)f(MPI)p 1530 1529 V 15 w(SINGLE)p
1684 1529 V 15 w(THREAD,)75 1585 y(MPI)p 152 1585 V 14
w(SINGLE)p 305 1585 V 15 w(MPI)p 395 1585 V 15 w(THREAD)p
Fm(,)23 b(and)i Fa(MPI)p 786 1585 V 14 w(MUL)m(TIPLE)p
998 1585 V 15 w(THREADS)p Fm(;)f Fk(MPI)p 1323 1585 14
2 v 15 w(THREAD)p 1520 1585 V 17 w(INIT)g Fm(can)h(sp)q(ecify)75
1642 y(three)15 b(di\013eren)o(t)h(en)o(vironmen)o(ts:)k
Fa(MPI)p 745 1642 13 2 v 14 w(SINGLE)p 898 1642 V 15
w(THREAD,)13 b(MPI)p 1180 1642 V 15 w(SINGLE)p 1334 1642
V 14 w(MPI)p 1423 1642 V 15 w(THREAD)p Fm(,)i(and)75
1698 y Fa(MPI)p 152 1698 V 14 w(MUL)m(TIPLE)p 364 1698
V 15 w(THREADS)p Fm(.)75 1820 y Fd(0.1.5)49 b(Alternative)16
b(3:)75 1906 y Fm(W)l(e)23 b(ma)o(y)f(w)o(an)o(t)g(to)g(mo)o(v)o(e)g
(all)i(the)f(information)g(ab)q(out)g(thread)f(en)o(vironmen)o(t)i(to)e
(an)h Fk(info)f Fm(argu-)75 1962 y(men)o(t.)g(Then)16
b Fk(MPI)p 414 1962 14 2 v 16 w(THREAD)p 612 1962 V 17
w(QUERY\(\015ag,)h(info\))e Fm(returns)h Fk(\015ag)g(=)g(true)g
Fm(if)h(threads)e(are)h(supp)q(orted,)75 2019 y Fk(\015ag)j(=)g(false)g
Fm(if)h(threads)f(are)f(not)h(supp)q(orted;)i Fk(info)e
Fm(optionally)h(returns)f(information)g(on)g(ho)o(w)g(the)75
2075 y(thread)i(en)o(vironmen)o(t)h(w)o(as)e(set)h(outside)h
Fk(MPI)p Fm(.)e Fk(MPI)p 1026 2075 V 16 w(THREAD)p 1224
2075 V 17 w(INIT\(info\))g Fm(pro)o(vides)h(optional)h(in-)75
2132 y(formation)g(on)h(ho)o(w)f(to)g(set)g(the)h(thread)g(en)o
(vironmen)o(t.)43 b Fk(info)22 b Fm(has)h(a)f(reserv)o(ed)h(\014led)h
(name)f(\014eld)75 2188 y Fa(MPI)p 152 2188 13 2 v 14
w(THREAD)p 333 2188 V 15 w(ENVIRONMENT)10 b Fm(with)h(p)q(ossible)h(v)m
(alues)f Fa(MPI)p 1127 2188 V 14 w(SINGLE)p 1280 2188
V 15 w(THREAD,)e(MPI)p 1558 2188 V 14 w(MUL)m(TIPLE)p
1770 2188 V 15 w(THREADS)75 2245 y Fm(and,)15 b(p)q(erhaps,)g
Fa(MPI)p 436 2245 V 15 w(SINGLE)p 590 2245 V 15 w(MPI)p
680 2245 V 14 w(THREADS)p Fm(.)980 b Fg(?)16 b Ff(\(Marc)o(h\))-32
46 y(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836
y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062
y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288
y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514
y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966
y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191
y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417
y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF