Gentlemen:
Attached is the latest version of the MPI-2 chapter on Real-time, Embedded
Extensions, and Profiles. It is currently 19 pages in length.
I strongly suggest that we change the chapter title to "Real-time and Embedded
Extensions," since we have removed profiles from the chapter.
This version includes the persistent real-time channels which we've been
discussing. The negotiation of the channel is a collective operation which
requires a quality of service handle, which we need to flesh out. The use of
tags to specify message priorities also needs to be integrated into the
priority-based model of the persistent channels.
The other prominent addition is the attribute caching of the global clock
synchronization parameters.
Finally, the overall document flow has been improved, and some background text
has been added.
Please send any comments or counter-proposals to the mpi-rt list in time for
inclusion into the document for next Wednesday's meeting.
Robert
-- Robert George Engineering Research Center (601) 325-4585 P.O. Box 6176 http://www.erc.msstate.edu/~robert Mississippi State, MS 39762 "Skill and confidence are an unconquered army." - George Herbert --465c_28e8-4f8b_50a0-47b_49a1 Content-Type: application/postscript Content-Transfer-Encoding: 7bit Content-MD5: 9+fapZYFdtRV/C303ORizg== Content-Description: rt-22may96.ps X-Sun-Data-Type: postscript-file%!PS (but not EPSF; comments have been disabled) %DVIPSCommandLine: dvips -o temp.ps temp %DVIPSParameters: dpi=600, compressed, comments removed %DVIPSSource: TeX output 1996.05.22:2109 /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 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 TeXDict begin 40258431 52099146 1000 600 600 (temp.dvi) @start /Fa 8 118 df<EA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA0F80C7FC ABEA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA0F800D2579A41B>58 D<B87E17F817FF18C028007FF8000713F09338007FF8EF1FFE717E050313807113C0A271 13E0F07FF0A2F03FF8A219FC181FA219FEA419FFAC19FEA419FC183FA219F8187F19F0F0 FFE0A24D13C04D13804D1300EF1FFEEF7FFC933807FFF0B912C095C7FC17FC178040397D B849>68 D<903801FFC0010F13FC017F13FFD9FF8013802603FE0013C048485AEA0FF812 1F13F0123F6E13804848EB7F00151C92C7FC12FFA9127FA27F123FED01E06C7E15036C6C EB07C06C6C14806C6C131FC69038C07E006DB45A010F13F00101138023257DA42A>99 D<EA01F0EA07FC487EA2487EA56C5AA26C5AEA01F0C8FCA913FF127FA412077EB3A9B512 F8A4153B7DBA1B>105 D<01FEEB7FC000FF903803FFF8020F13FE91381F03FFDA3C0113 80000713780003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FFA430257DA435> 110 D<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48486D7E4848 6D7EA2003F81491303007F81A300FF1680A9007F1600A3003F5D6D1307001F5DA26C6C49 5A6C6C495A6C6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA430>I<9038 3FF0383903FFFEF8000F13FF381FC00F383F0003007E1301007C130012FC15787E7E6D13 0013FCEBFFE06C13FCECFF806C14C06C14F06C14F81203C614FC131F9038007FFE140700 F0130114007E157E7E157C6C14FC6C14F8EB80019038F007F090B512C000F8140038E01F F81F257DA426>115 D<01FFEC3FC0B5EB3FFFA4000714016C80B3A35DA25DA26C5C6E48 13E06CD9C03E13FF90387FFFFC011F13F00103138030257DA435>117 D E /Fb 19 118 df<EC07F8A24A7EA24A7EA2157EEC3F7F143EA291387E3F80A2147C02 FC7F151FA2D901F87F150F01038014F0A201076D7E14E0A2010F6D7E14C0A2011F6D7E14 80013F808191C7FC4981167F137E01FE6E7E90B7FCA24882A3D803F8C7EA0FF05B000782 16075B000F8216035B001F8216015B003F6F7EA248C91380177F127E00FE17C0323A7EB9 37>65 D<913803FF80021F13F891B6FC4915C013075B4948C61380D97FF0130FD9FFC013 034A13014890C9FC485A485A5B120F5B485AA2485AA3485AA448CAFCAC6C7EA46C7EA36C 7EA26C7E7F12077F6C7E6C6C15206C6D14E06E1301D97FF0130FD91FFE137F6DB6FC6D15 C0010115006D5C021F13F0020313802B3E7BBB35>67 D<B712F0A690C9FCB390B612C0A5 90C9FCB3A390B612FCA7263A78B932>69 D<12FFB3B3B3A4083A79B917>73 D<D8FFC0ED07FFA36D5DA26D5D00FE177FA26D153F0178153EA2017C157EA26D15FCA301 3F14016D15F8A26E1303010F15F06E1307A2010715E06E130FA2010315C06E131FA20101 15806E133FA2010015006E5B027C137E027E13FEA2023E5BEC3F01A2021F5B1583A2020F 5B15C702075BA3913803EFC0A215FF6E5BA26E90C7FCA392C8FCA2383A78B949>77 D<D8FFE0EC1FC0A27FA27FA2487EA2137EA2137F7F80131FA26D7EA28013078013038013 0180130080A2147FA2EC3F80A2EC1FC0A2140F15E0140715F0140315F8140115FC1400A2 157EA2157F153F169F151FA2ED0FDFA2ED07FFA281A281A22A3A78B93B>I<EC07F89138 7FFF8049B512E04980010F14FC90391FFC0FFE90393FE001FF903A7F80007F8049C76C7E 48486E7E48486E7E49140700078248486E7E491401001F82491400A2003F824981007F17 80A390C9123FA24817C0AC6C6CED7F80A56C6CEDFF00A26D5C001F5EA26C6C4A5AA26C6C 4A5A6C6C4A5A6D141F00015E6C6C4A5AD97FC0EBFF806D6C4890C7FC90391FFC0FFE6DB5 5A6D5C010114E06D6C1380DA07F8C8FC323E7BBB3D>I<B612C015F815FF8216E090C77F ED1FF8ED07FC15036F7E150082821780A2163FA4167FA217005E5E15014B5A1507ED1FF8 EDFFF090B65A168093C7FC15F815C090CAFCB3A6293A79B935>I<B67E15F815FE6F7E82 90C77FED1FF06F7EED03FC150182150082A282A35EA25E15015E1503ED0FF84B5AEDFFE0 90B65A5E4BC7FC15F815E09038000FF01407811403811401816E7E8182153F826F7EA26F 7EA26F7E1503826F7EA26F7EA2EE7F80EE3FC0A2EE1FE02B3A78B936>82 D<EB03FF011F13F0017F13FE48B612804815C05A4848C6FCD81FF0EB1F80484813070180 1303007F140090C9FCA212FEA67E7E7F7FEA3FF013FC381FFFC06C13FC6CEBFF806C14E0 6C14F86C80013F7F01077FD9007F1380020713C0020013E0157FED1FF0150FA2ED07F8A2 1503A6ED07F0124012600078EC0FE0007C141FB4EC3FC001C0EBFF80EBFC036CB6120000 1F5C6C14F800015C6C6C13C0D907FEC7FC253E7CBB2E>I<B4ED1FC0B3B3A76CED3F807F A36C6CEC7F00A26C6C14FE6C6C13016D495A6C6C495A6C6CEB1FF03A01FFC07FE06C90B5 5A013F5C6D49C7FC010713F89038007FC02A3C79B939>85 D<B46CED07F0170F6C6CED1F E06C6C16C0173F6C6CED7F806D1600000F5E6C6C4A5A6D5D000315036C6C4A5A806C4B5A 6D6C495A80013F4A5A6D6C5C167F6D6C49C7FC6D6C5B15016D6C485A01015CECFF076DEB 87F091387F8FE015CF91383FDFC06EB45AA26E90C8FC5D14076E5AB3A6343A7FB937>89 D<EB1FF0EBFFFC000313FF000F14804814C09038E01FE09038000FF0001C13070018EB03 F81210C7FCEC01FCA7143FEB0FFF90B5FC1203120F381FFE01EA3FE0EA7F80130012FEA4 14037E387F800FEBE03F6CB5FC7E6C13F96C13E1D801FEC7FC1E287DA628>97 D<EB07F8EB1FFE90387FFF8048B512C04814E03907FC0FF0390FF003F8EBE001391FC000 FC49137C003F147E90C7123E5A127E151F12FEB7FCA500FCC8FCA27EA2127EA2127F7E7F 6C7E6D13026C6C130E6C6C133E3903FE01FE6CB5FC6C14FC6D13F0011F13C0903803FE00 20287EA625>101 D<903907F03F80EB3FFCEBFFFE48EBFFBF4814FF3807FE07380FF801 48487E5B4848137F5B007F143F90C7FCA312FEA97E7EA27F123F6D137F6C7E15FF380FF8 013807FE0790B6FC6C143FC613FEEB7FF8EB1FE090C7FCAF21367DA52B>113 D<14F0EAFC07130F133F137F13FF00FD130013FCEAFFF05B5BA25B90C7FCA35AB3A41426 7AA51C>I<EB7FE03801FFFC0007EBFF804814C05A383FC03F90380007801401007E90C7 FCA4127FA26C7E13F0EBFF806C13F06C13FC6C7F6C7FC61480131F010013C0143FEC0FE0 A21407A3124012600078EB0FC000FE131F39FFC07F8090B5FC6C1400001F5B000313F838 007FC01B287EA620>I<EA01FCAAB6FCA5D801FCC7FCB3A76D138014013900FF07C014FF A26D1300EB3FFCEB1FE01A307FAE1E>I<00FEEB01FCB3AA1403A214076C131F387F807F 90B5FC6C13F914F1000F13C1D803FCC7FC1E267AA42B>I E /Fc 44 123 df<DA0FF813FC91397FFF07FF903B01F807DF83C0903A07E001FF0F903B1F8007 FE1FE090393F000FFC137E16F85B9338F007804848010790C7FC1503ACB812F8A32801F8 0003F0C7FCB3AB486C497E267FFFE0B512F0A3333B7FBA30>11 D<EC0FF8EC7FFE903901 F80780903907E001C090391F8000E090383F0007017E497EA25BA2485A6F5AED018092C8 FCA9ED03F0B7FCA33901F8000F1503B3AA486C497E267FFFE0B512C0A32A3B7FBA2E>I< 121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E5A5A5A12 600A1979B917>39 D<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA2 12075B120F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F 1203A26C7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>I<12C0 7E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7FA21480 A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A25BA248 5A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<121C127FEAFF80A213C0A3127F 121C1200A412011380A2120313005A1206120E5A5A5A12600A19798817>44 D<B512FCA516057F941C>I<121C127FEAFF80A5EA7F00121C0909798817>I<150C151E15 3EA2153C157CA2157815F8A215F01401A215E01403A215C01407A21580140FA215005CA2 141E143EA2143C147CA2147814F8A25C1301A25C1303A2495AA25C130FA291C7FC5BA213 1E133EA2133C137CA2137813F8A25B1201A25B1203A25B1207A25B120FA290C8FC5AA212 1E123EA2123C127CA2127812F8A25A12601F537BBD2A>I<1538A3157CA315FEA34A7EA3 4A6C7EA202077FEC063FA2020E7FEC0C1FA2021C7FEC180FA202387FEC3007A202707FEC 6003A202C07F1501A2D901807F81A249C77F167FA20106810107B6FCA24981010CC7121F A2496E7EA3496E7EA3496E7EA213E0707E1201486C81D80FFC02071380B56C90B512FEA3 373C7DBB3E>65 D<B812F8A30001903880001F6C90C71201EE00FC177C173C171CA2170C A4170E1706A2ED0180A21700A41503A21507151F91B5FCA3EC001F15071503A21501A692 C8FCAD4813C0B612C0A32F397DB836>70 D<B612C0A3C6EBC0006D5AB3B3AD497EB612C0 A31A397EB81E>73 D<B5913807FFFE8080C69238007FE06EEC1F80D9DFF0EC0F001706EB CFF8EBC7FCA2EBC3FEEBC1FFA201C07F6E7EA26E7E6E7E81140F6E7E8114036E7E168080 ED7FC016E0153FED1FF0ED0FF8A2ED07FCED03FEA2ED01FF6F1386A2EE7FC6EE3FE6A2EE 1FF6EE0FFEA216071603A216011600A2177E486C153E487ED80FFC151EB500C0140EA217 0637397DB83E>78 D<EC03FF021F13E09138FE01FC903901F8007ED907E0EB1F8049486D 7ED93F80EB07F049C76C7E01FE6E7E48486E7E49157E0003167F4848ED3F80A24848ED1F C0A2001F17E049150F003F17F0A3007F17F8491507A300FF17FCAC007F17F86D150FA300 3F17F0A26C6CED1FE0A36C6CED3FC0000717806D157F000317006C6C15FEA26C6C4A5A01 7F4A5A6D6C495A6D6C495AD907E0EB1F80D903F8017FC7FC903900FE01FC91381FFFE002 0390C8FC363D7BBA41>I<B712C016F816FE000190398001FF806C90C7EA3FC0EE0FE0EE 07F0EE03F817FC17FE1601A217FFA717FEA2EE03FCA2EE07F817F0EE0FE0EE3FC0923801 FF0091B512FC16F091C9FCB3A5487FB6FCA330397DB839>I<B612FEEDFFE016F8000190 388007FE6C90C76C7EEE3FC0707E707E707EA2707EA283A65FA24C5AA24C5A4C5AEE3F80 04FFC8FCED07FC91B512E05E9138000FF0ED03F8ED00FE82707E707EA2161F83A583A6F0 0180A217F8160F1803486D01071400B66D6C5A04011306933800FE0ECAEA3FFCEF07F039 3B7DB83D>82 D<003FB812E0A3D9C003EB001F273E0001FE130348EE01F0007816000070 1770A300601730A400E01738481718A4C71600B3B0913807FF80011FB612E0A335397DB8 3C>84 D<B6903807FFFEA3000101809038007FE06C90C8EA1F80EF0F001706B3B2170E6D 150C80171C133F17186D6C14385F6D6C14F06D6C5C6D6C495A6D6CEB07806D6C49C7FC91 387F807E91381FFFF8020713E09138007F80373B7DB83E>I<EB1FE0EBFFFC3803E03F39 07000F80390F8007E0486C6C7E13E06E7EA26E7E6C5A6C5AC8FCA4147FEB07FFEB3FE0EB FE00EA03F8EA0FF0EA1FC0123F485A90C7FC160C12FEA31401A26C13036CEB077C903980 063E18383FC01E3A0FE0781FF03A03FFF00FE03A007F8007C026277DA52A>97 D<EA03F012FFA3120F1203B0EC1FE0EC7FF89038F1E03E9039F3801F809039F7000FC001 FEEB07E049EB03F049EB01F85BED00FCA216FEA2167E167FAA167E16FEA216FC15016D14 F8ED03F07F01EEEB07E001C6EB0FC09039C7801F00903881E07E903800FFF8C7EA1FC028 3B7EB92E>I<EB03FC90381FFF8090387E03E03901F80070484813F83907E001FC380FC0 03A2EA1F80123F90380001F848EB00F01500A2127E12FEAA127E127FA26C14067F001F14 0E6D130C000F141C6C6C13386C6C13706C6C13E039007C07C090381FFF00EB07F81F277D A525>I<ED0FC0EC03FFA3EC003F150FB0EB03F8EB1FFF90387E078F9038F801EF3903F0 007F4848133F4848131FA24848130F123F90C7FC5AA2127E12FEAA127E127FA27EA26C6C 131FA26C6C133F6C6C137F6C6CEBEFF03A01F801CFFF39007C078F90381FFE0FD907F813 C0283B7DB92E>I<EB07F8EB1FFF90387C0FC03901F803E03903F001F0D807E013F8380F C0004848137CA248C7127E153E5A153F127E12FEA3B7FCA248C8FCA5127EA2127FA26C14 037F001F14076C6C13060007140E6D131CD801F013386C6C137090387E03E090381FFF80 903803FC0020277EA525>I<147E903803FF8090380FC1E0EB1F8790383F0FF0137EA213 FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8A31C3B7FBA19>I< ED03F090390FF00FF890393FFC3C3C9039F81F707C3901F00FE03903E007C03A07C003E0 10000FECF000A248486C7EA86C6C485AA200075C6C6C485A6D485A6D48C7FC38073FFC38 060FF0000EC9FCA4120FA213C06CB512C015F86C14FE6CECFF804815C03A0F80007FE048 C7EA0FF0003E140348140116F8481400A56C1401007C15F06CEC03E0003F1407D80F80EB 0F80D807E0EB3F003901FC01FC39007FFFF0010790C7FC26387EA52A>I<EA03F012FFA3 120F1203B0EC0FF0EC3FFCECF03F9039F1C01F809039F3800FC0EBF70013FE496D7EA25B A35BB3A3486C497EB500C1B51280A3293A7EB92E>I<EA0380EA0FE0487EA56C5AEA0380 C8FCAAEA03F012FFA312071203B3AA487EB512C0A312387EB717>I<EB01C0EB07F0EB0F F8A5EB07F0EB01C090C7FCAAEB01F813FFA313071301B3B3A2123C127E00FF13F01303A2 14E038FE07C0127C383C0F00EA0FFEEA03F8154984B719>I<EA03F012FFA3120F1203B1 913801FFFCA39138007FC01600157C15705D4A5A4A5A4AC7FC141E1438147814FC13F1EB F3FEEBF73F01FE7FEBF81F496C7E8114076E7E6E7E811400157E157F811680ED1FC0486C EB3FF0B500C0B5FCA3283A7EB92C>I<EA03F012FFA3120F1203B3B3AD487EB512C0A312 3A7EB917>I<2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E07E903BF1C01F8380 3F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0FC0A2495CA3495CB3A348 6C496CEB1FE0B500C1B50083B5FCA340257EA445>I<3903F00FF000FFEB3FFCECF03F90 39F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3486C497EB500C1B51280 A329257EA42E>I<EB03FE90380FFF8090383E03E09038F800F84848137C48487F48487F 4848EB0F80001F15C090C712074815E0A2007EEC03F0A400FE15F8A9007E15F0A2007F14 076C15E0A26C6CEB0FC0000F15806D131F6C6CEB3F006C6C137EC66C13F890387E03F090 381FFFC0D903FEC7FC25277EA52A>I<3903F01FE000FFEB7FF89038F1E07E9039F3801F 803A07F7000FC0D803FEEB07E049EB03F04914F849130116FC150016FEA3167FAA16FEA3 ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F009038F1E07E9038F0FF F8EC1FC091C8FCAB487EB512C0A328357EA42E>I<D903F813C090381FFE0190387E0781 9038FC01C33903F000E3000714774848133749133F001F141F485A150F48C7FCA312FEAA 127FA37E6D131F121F6D133F120F6C6C137F6C6C13EF3901F801CF39007E078F90381FFE 0FEB07F890C7FCABED1FE00203B5FCA328357DA42C>I<3807E01F00FFEB7FC09038E1E3 E09038E387F0380FE707EA03E613EE9038EC03E09038FC0080491300A45BB3A2487EB512 F0A31C257EA421>I<EBFF03000313E7380F80FF381E003F487F487F00707F12F0A2807E A27EB490C7FCEA7FE013FF6C13E06C13F86C7F00037FC67F01071380EB007F141F00C0EB 0FC01407A26C1303A37E15806C13077EEC0F00B4131E38F3C07C38E1FFF038C03F801A27 7DA521>I<1318A51338A31378A313F8120112031207001FB5FCB6FCA2D801F8C7FCB215 C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347FB220>I<D803F0EB07E0 00FFEB01FFA3000FEB001F00031407B3A4150FA3151F12016D133F0000EC77F86D9038E7 FF8090383F03C790381FFF87903A03FC07E00029267EA42E>I<B538803FFEA33A0FF800 0FF06C48EB07E00003EC03C06D148000011500A26C6C1306A26D130E017E130CA26D5BA2 EC8038011F1330A26D6C5AA214E001075BA2903803F180A3D901FBC7FCA214FF6D5AA214 7CA31438A227257EA32C>I<B53A1FFFE03FFEA3260FF8009038000FF86C48017EEB03E0 18C00003023EEB0180A26C6C013FEB0300A36C6CEC8006156FA2017E9038EFC00C15C7A2 D93F016D5A15830281EBF038D91F831430150102C3EBF87090260FC6001360A2D907E66D 5A02EC137CA2D903FCEB7F804A133FA2010192C7FC4A7FA20100141E4A130E0260130C37 257EA33C>I<B538807FFFA33A03FE003FF00001EC1F80000092C7FC017E131C6D13186D 6C5AECC070010F5B6D6C5AECF180EB03FB6DB4C8FC6D5AA2147F804A7E8114CF903801C7 E090380383F090380703F8EB0601496C7E011C137E49137F01787F496D7E486C80000FEC 3FF0D8FFFE90B51280A329247FA32C>I<B538803FFEA33A0FF8000FF06C48EB07C00003 EC03806C7E16007F00001406A2017E5BA2137F6D5BA26D6C5AA2ECC070010F1360A26D6C 5AA214F101035BA2D901FBC7FCA214FF6D5AA2147CA31438A21430A214701460A25CA2EA 7C0100FE5B130391C8FC1306EAFC0EEA701C6C5AEA1FF0EA0FC027357EA32C>I<003FB5 12FCA2EB8003D83E0013F8003CEB07F00038EB0FE012300070EB1FC0EC3F800060137F15 0014FE495AA2C6485A495AA2495A495A495AA290387F000613FEA2485A485A0007140E5B 4848130C4848131CA24848133C48C7127C48EB03FC90B5FCA21F247EA325>I E /Fd 55 126 df<EB07E0EB1FF8497E137F497E803801FC7F497E810003131F13F0A614 3F92C8FC91387F0FFF9026F87E1F1380000113FEEBF9FC13FB4A6C1300D9FFF013C06C13 E0151F02C05BEB7F809038FF003F4892C7FC485C48EB807E5A15FE391FDFC0FC383F8FE0 14E1397F07F1F8EB03F300FEEBFBF0EB01FF5D7FEDC006027F130F91393F801F8015C06C 137F6CEBFFE049EBF83F018701FC1300263FFFFBB5FC6C01F15B14E06C9038C03FFC0003 9038001FF8D801FCEB07E0293A7DB830>38 D<141E147F14FF5BEB03FEEB07FCEB0FF0EB 1FE0EB3FC0EB7F80EBFF00485A5B12035B485A120F5BA2485AA2123F5BA2127F90C7FCA4 12FEAD127FA47F123FA27F121FA26C7EA27F12076C7E7F12017F6C7EEB7F80EB3FC0EB1F E0EB0FF0EB07FCEB03FEEB01FF7F147F141E184771BE30>40 D<127812FE7E7F6C7E6C7E EA0FF06C7E6C7E6C7E6C7EEB7F80133F14C0131FEB0FE014F01307A2EB03F8A214FC1301 A214FE1300A4147FAD14FEA4130114FCA2130314F8A2EB07F0A2130F14E0EB1FC0133F14 80137FEBFF00485A485A485A485AEA3FE0485A485A90C7FC5A1278184778BE30>I<EA03 E0EA0FF0EA1FF813FCEA3FFEA213FFA27EA27E1203EA007FA2137E13FEEA01FC1203EA07 F8EA3FF0127FEAFFE0EA7F801300123C1019708B30>44 D<120FEA3FC0EA7FE0A2EAFFF0 A4EA7FE0A2EA3FC0EA0F000C0C6E8B30>46 D<16F01501ED03F8A21507A2ED0FF0A2ED1F E0A2ED3FC0A2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA24A5AA24A5AA24A5AA2 4AC7FCA2495AA25C1303A2495AA2495AA2495AA2495AA2495AA249C8FCA2485AA25B1203 A2485AA2485AA2485AA2485AA2485AA248C9FCA25AA2127CA225477BBE30>I<14FE9038 07FFC0497F013F13F8497F90B57E48EB83FF4848C6138049137F4848EB3FC04848EB1FE0 49130F001F15F0491307A24848EB03F8A290C712014815FCA400FEEC00FEAD6C14016C15 FCA36D1303003F15F8A26D1307001F15F0A26D130F6C6CEB1FE0A26C6CEB3FC06C6CEB7F 806D13FF2601FF8313006CEBFFFE6D5B6D5B010F13E06D5BD900FEC7FC273A7CB830>I< EB03C0497EA2130FA2131FA2133F137F13FF1203123FB5FCA213EF138FEA7E0F1200B3B0 003FB512F84814FCB612FEA26C14FC6C14F81F3977B830>I<EB03FF013F13E090B512F8 4814FE4880481580260FFE0113C09038F0007F4848EB1FE0150F16F01507A26C5A6C5AC8 FC150F16E0A2151FED3FC0157FEDFF8002071300903807FFFE495B5D8115FF6D1480D900 0113C09138003FE0ED1FF0ED07F8150316FC150116FE1500A21218127EB4FCA2150116FC 4814036C15F86C6C13076DEB1FF0D83FF0133F3A1FFE01FFE06CB612C06C15806CECFE00 C65C013F13F001031380273A7CB830>51 D<EC03FC4A7E140F141FA2143F147F157E14FE A2EB01FCEB03F8A2EB07F0A2EB0FE0EB1FC0A2EB3F80A2EB7F0013FEA2485A485AA2485A A2485A485AA2485AA248C7FC12FEB8FC1780A46C1600C8007EC7FCAA91387FFFFE91B6FC A46E5B29397DB830>I<EA03C0EA0FF0EA1FF8A2EA3FFCA4EA1FF8A2EA0FF0EA03C0C7FC AFEA03C0EA0FF0121F13F8123F13FCA3121FA2120F12031200120113F8120313F01207EA 1FE0123FEA7FC0EAFF80EA7F00127E12380E3470A630>59 D<007FB7FCA2B81280A36C16 006C5DCBFCA7003FB612FE4881B81280A36C1600A229157DA530>61 D<147F4A7EA2497FA4497F14F7A401077F14E3A3010F7FA314C1A2011F7FA490383F80FE A590387F007FA4498049133F90B6FCA34881A39038FC001F00038149130FA40007814913 07A2D87FFFEB7FFFB56CB51280A46C496C130029397DB830>65 D<91387F803C903903FF F03E49EBFC7E011F13FE49EBFFFE5B9038FFE07F48EB801F3903FE000F484813075B4848 1303A2484813015B123F491300A2127F90C8FC167C16005A5AAC7E7EA2167C6D14FE123F A27F121F6D13016C6C14FCA26C6CEB03F86D13076C6CEB0FF03901FF801F6C9038E07FE0 6DB512C06D14806D1400010713FC6D13F09038007FC0273A7CB830>67 D<007FB7FCB81280A47ED803F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FCA6EBF800 A4157C92C8FCA5EE07C0EE0FE0A9007FB7FCB8FCA46C16C02B387EB730>69 D<003FB712804816C0B8FCA27E7ED801FCC7121FA8EE0F8093C7FCA5153E157FA490B6FC A69038FC007FA4153E92C8FCAE383FFFF8487FB5FCA27E6C5B2A387EB730>I<02FF13F0 0103EBC0F8010F13F1013F13FD4913FF90B6FC4813C1EC007F4848133F4848131F49130F 485A491307121F5B123F491303A2127F90C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C 7F6C6D1400ED03F8A27F003F1407A27F121F6D130F120F7F6C6C131FA2D803FE133F6C6C 137FECC1FF6C90B5FC7F6D13FB010F13F30103EBC1F0010090C8FC293A7DB830>I<007F B6FCB71280A46C1500260007F0C7FCB3B3A8007FB6FCB71280A46C1500213879B730>73 D<383FFFF8487FB57EA26C5B6C5BD801FCC9FCB3B0EE0F80EE1FC0A9003FB7FC5AB8FCA2 7E6C16802A387EB730>76 D<D83FF8ECFFE0486C4913F0486C4913F8A2007F16F06C6C49 13E00007160001EF14BFEC800FA39039E7C01F3FA4ECE03F01E3133EA2ECF07EA201E113 7CA2ECF8FCA201E013F8A214FDEC7DF0A3147FEC3FE0A3EC1FC0A2EC070091C7FCADD83F FC903801FFE0486C4913F0B54913F8A26C486D13F06C486D13E02D387FB730>I<D83FFC 90381FFF80486C4913C0B54913E0A26C6D6C13C06C6E13800003913801F800EBF7C0A3EB F3E0A314F013F1A214F8A213F014FCA2147C147EA2143E143FA2141FA21581A2140F15C1 A2140715E1A2140315F1A21401A215F91400A3157DA3153FEA3FFF481380B5EAC01FA26C EB800F6C496C5A2B387EB730>I<90383FFFE048B512FC000714FF4815804815C04815E0 EBF80001E0133FD87F80EB0FF0A290C71207A44815F8481403B3A96C1407A26C15F0A36D 130FA26D131F6C6CEB3FE001F813FF90B6FC6C15C06C15806C1500000114FCD8003F13E0 253A7BB830>I<007FB512F0B612FE6F7E16E0826C813903F8003FED0FFCED03FE15016F 7EA2821780163FA6167F17005EA24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15F0 01F8C9FCB0387FFFC0B57EA46C5B29387EB730>I<003FB57E4814F0B612FC15FF6C816C 812603F8017F9138003FF0151F6F7E15071503821501A515035E1507150F4B5A153F4AB4 5A90B65A5E93C7FC5D8182D9F8007FED3FE0151F150F821507A817F8EEF1FCA53A3FFF80 03FB4801C0EBFFF8B56C7E17F06C496C13E06C49EB7FC0C9EA1F002E397FB730>82 D<90390FF803C0D97FFF13E048B512C74814F74814FF5A381FF80F383FE001497E484813 7F90C7123F5A48141FA2150FA37EED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C 14E0000114F86C80011F13FF01031480D9003F13C014019138007FE0151FED0FF0A2ED07 F8A2007C140312FEA56C140716F07F6DEB0FE06D131F01F8EB3FC001FF13FF91B5128016 0000FD5CD8FC7F13F8D8F81F5BD878011380253A7BB830>I<003FB712C04816E0B8FCA4 3AFE003F800FA8007CED07C0C791C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>I< 3B7FFFC007FFFCB56C4813FEA46C496C13FCD803F8C7EA3F80B3B16D147F00011600A36C 6C14FE6D13016D5CEC800390393FE00FF890391FF83FF06DB55A6D5C6D5C6D91C7FC9038 007FFCEC1FF02F3980B730>I<D83FFC903801FFE0486C4913F000FF16F8A2007F16F06C 486D13E0D81FC09038001FC0000F1680A76D143F00071600A7000390380F803E9039F01F C07EEC3FE0A3EC7FF0A2147D0001157CA29039F8FDF8FCA314F8A300005D01F913FCA2EC F07CA201FD137DA2017D5CECE03DA3017F133FA2ECC01FA2013F5CA2EC800F6D486C5A2D 397FB730>87 D<D87FFF90381FFFC0B56C4813E0A46C496C13C0D803F8903803F8006D13 07A26C6C495AA26C6C5C151F6D5CEC803F013F5CECC07F011F91C7FCA290380FE0FEA214 F101075BA2903803FBF8A201015B14FF6D5BA26E5AA36E5AB1903803FFF8497F497FA26D 5B6D5B2B387EB730>89 D<007FB612F0A2B712F8A36C15F0A225077B7D30>95 D<EB3FFC48B57E4814E04880488048809038F00FFE9038E001FF806F7E6C48133F6C4880 C8121FA491B5FC130F137F48B6FC12075A48EBC01F383FFC00EA7FE0138048C7FC5AA46C 143FA26C6C137F9038C001FF263FF80FEBFFC06CB712E0A2000714F76C14C3C6020013C0 D93FF090C7FC2B2A7CA830>97 D<EA3FFC487E12FFA2127F123F1200AAEC03FE91381FFF 80027F13E091B57E90B612FC82ECFE079138F001FF4A6C13804A137F4AEB3FC091C7121F 4915E0160FA217F01607A8160FA217E07F161F6EEB3FC0A26EEB7F806E13FFDAF0031300 9138FC0FFE91B55A5E495CD97E7F13C0D93C1F90C7FC90380003FC2C3980B730>I<ECFF E0010713FC011F7F017F7F90B612804815C048EB807F3907FC003F485A485A49EB1F8048 48EB0F004990C7FC127F90C9FCA25A5AA87E7EA27F003FEC07C06DEB0FE06C7E6D131F6C 6C14C0D807FE133F9039FFC0FF806C90B5FCC615006D5B011F13F801075B01011380232A 7AA830>I<913801FFE04A7F5CA28080EC0007AAEB03FE90381FFF874913E790B6FC5A5A 481303380FFC00D81FF0133F49131F485A150F4848130790C7FCA25AA25AA87E6C140FA2 7F003F141F6D133F6C7E6D137F390FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D 01C713E0011F010313C0D907FCC8FC2C397DB730>I<49B4FC010713E0011F13F8017F7F 90B57E488048018113803A07FC007FC04848133FD81FE0EB1FE0150F484814F049130712 7F90C7FCED03F85A5AB7FCA516F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D13 07D807FEEB1FF03A03FFC07FE06C90B5FC6C15C0013F14806DEBFE00010713F8010013C0 252A7CA830>I<EDFF80020713E0021F13F05C4A13F891B5FC491387903803FE079138FC 03F0903907F800C04A1300A8003FB612C04815E0B7FCA36C15C0260007F0C7FCB3A9003F B512FE4880B71280A26C15006C5C25397DB830>I<D903FC13FF90261FFF8713C04913DF 90B712E05A5A2607FE07138F903AF801FE07C048486C6CC7FCA2497F001F8149133FA56D 137F000F92C7FC6D5BA26C6C485AEBFE0790B55A5D485C15C001DF5BD9C3FCC8FC01C0C9 FCA37F7F6CB512F015FF6C15C04815F0488148813A3FE0001FFE0180130148C8127F007E 8100FE168048151FA56C153F007FED7F006D5C6C6C495A01F013076CB4EB7FFC6C90B55A 6C5D000115C06C6C91C7FC011F13FC010113C02B3E7DA730>I<EA3FFC487E12FFA2127F 123F1200AAEC01FE91380FFF80023F13E091B57E90B67EA29138FE07FCECF8039138E001 FE14C0EC8000A291C7FCA25BB3A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14 FC6C496C13F82F3880B730>I<14E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8 487F5AA27E7EEA0001B3A9003FB612C04815E0B7FCA27E6C15C023397AB830>I<EC01C0 EC07F0A2EC0FF8A3EC07F0A2EC01C091C7FCA990B512F04814F8A47EEB0003B3B3A5EC07 F0A2123C007EEB0FE0B4131FEC3FC0147F90B512806C14005C6C5B000F13F0000313C01D 4E7CB830>I<387FFFF8B57EA47EEA0001B3B3A8007FB612F0B712F8A46C15F025387BB7 30>108 D<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F13 872607FE07EB03F801FC13FE9039F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF07 FF80B548018F13C0A46C486C01071380322881A730>I<EC01FE3A3FFC0FFF80267FFE3F 13E000FF90B57E90B67E7E6C9038FE07FCC6EBF8039138E001FE14C0EC8000A291C7FCA2 5BB3A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C496C13F82F2880A730 >I<49B4FC010F13E0013F13F8497F90B57E0003ECFF8014013A07FC007FC04848EB3FE0 D81FE0EB0FF0A24848EB07F8491303007F15FC90C71201A300FEEC00FEA86C14016C15FC A26D1303003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90B5 12806C15006C6C13FC6D5B010F13E0010190C7FC272A7CA830>I<EC03FE3A3FFC1FFF80 267FFE7F13E000FF90B57E90B612FC6C816CEBFE07C69038F001FF4A6C13804A137F4AEB 3FC091C7121F4915E0160FA217F01607A8160FA217E07F161F6EEB3FC0A26EEB7F806E13 FFDAF00313009138FC0FFE91B55A5E495C6E13C0021F90C7FCEC03FC91C9FCAD383FFFF8 487FB57EA26C5B6C5B2C3C80A730>I<49B413F8010FEBC1FC013F13F14913FD48B6FC5A 481381390FFC007F49131F4848130F491307485A491303127F90C7FC15015A5AA77E7E15 037FA26C6C1307150F6C6C131F6C6C133F01FC137F3907FF01FF6C90B5FC6C14FD6C14F9 013F13F1010F13C1903803FE0190C7FCAD92B512F84A14FCA46E14F82E3C7DA730>I<ED 07F83A3FFF803FFF486DB51280B512C302CF14C06C13DF6C9038FFFC3FD8001F13E09238 801F809238000F004A90C7FC5C5C5CA25CA45CAF003FB512FC4880B7FCA26C5C6C5C2A28 7EA730>I<90381FFC1E48B5129F000714FF5A5A5A387FF007EB800100FEC7FC4880A46C 143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F86C6C7F01037F9038000F FF02001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F806D137F9039FC03FF0090 B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830>I<EB0780497E131FA9003F B612E04815F0B7FCA36C15E026001FC0C7FCB216F8ED01FCA5ECE003010FEB07F814F091 38FC1FF06DB512E06D14C016806D14009038007FFCEC1FF026337EB130>I<D83FFCEB3F FC486C497E00FF14FFA2007F147F003F143F00001400B3A41501A2150315076D130F903A 7FC07FFFF891B612FC6D15FE7F6D4913FC6D9038F87FF8010001C0C7FC2F2880A630>I< 3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01F80003F000A26D130700 005DA26D130F017E5CA2017F131F6D5CA2EC803F011F91C7FCA26E5A010F137EA2ECE0FE 01075BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B277EA630>I<3B3FFFC0 1FFFE0486D4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F00A26D5C0003157EA56D 14FE00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2ECFDF9017C5C14F8A3017E 13FBA290393FF07FE0A3ECE03FA2011F5C90390F800F802D277FA630>I<3B3FFFC07FFF 80486DB512C0B515E0A26C16C06C496C13803B01FC0003F000A2000014076D5C137E150F 017F5C7F151FD91F805BA214C0010F49C7FCA214E00107137EA2EB03F0157C15FCEB01F8 5DA2EB00F9ECFDF0147D147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13FE48 6C5AEA3FC1EBC3F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630>121 D<ED3FF0913803FFF8140F5C147F16F09138FFF00092C7FC495A5CB3A21303495A133F38 3FFFF0B55A5C91C8FC14C080003F7F38003FF813076D7E1301B3A2806D7E15F091387FFF F016F8141F8014039138003FF025477BBE30>123 D<EA7FE0EAFFFE6D7E8014F07EC66C 7E13076D7E1301B3A2806D7E15E091387FFFE06E13F8801407141F5C4A13E09138FFE000 92C7FC495A5CB3A21303495A137F387FFFF0B5FC14C05C49C8FCEA7FE025477BBE30> 125 D E /Fe 1 15 df<EC01C0EC0FFF023F13E0027913F0ECE03F903801C00FEC8007ED 01E0010390C7FCA280130180A280A26D7E80A2147E147F6E7EA26E7E81140FEC7FF09038 01F7F8EB07C790381F83FCEB3E03EB7C0101F87F12013803F000485AA24848137E485AA2 123F90C7FCA25A127EA300FE147C5A15FCA25D1401A25D007C13035DA26C495A4A5A6C91 C7FC6C131E6C6C5A3803E0783800FFE0EB3F8024427CC028>14 D E /Ff 48 123 df<B612C0A61A067F9821>45 D<12FFA8080877871B>I<1618163C167C A2167816F8A216F01501A216E01503A216C01507A21680150FA2ED1F00A2151E153EA215 3C157CA2157815F8A25D1401A24A5AA25D1407A25D140FA292C7FC5CA2141E143EA2143C 147CA25CA25C1301A25C1303A25C1307A25C130FA291C8FC5BA2133EA2133C137CA21378 13F8A25B1201A25B1203A2485AA25B120FA290C9FC5AA2121E123EA2123C127CA2127812 F8A25A126026647BCA31>I<14FF010713E0011F13F8497F90B6FC48158014813A03FE00 7FC04848EB3FE049131F4848EB0FF0491307001F15F8491303003F15FCA2491301A2007F 15FEA390C8FCA34815FFB3A36C15FE6D1301A5003F15FC6D1303A36C6CEB07F8A26C6CEB 0FF0A26C6CEB1FE06D133F6C6CEB7FC03A01FF81FF8091B5FC6C1500013F13FC6D5B0107 13E0010090C7FC28457CC231>I<1418147814F81303130F137FB5FCA413F71387EA0007 B3B3AD007FB61280A6214378C231>I<EB03FE90381FFFE0017F13F890B57E4814FF4815 802607FC0713C0380FF000D81FC0EB7FE049EB3FF0003F141F90C7EA0FF8481407007E15 FCA200FE14034815FE127C123C0038140112181208C8FC1503A316FCA2150716F8150F16 F0ED1FE0A2ED3FC0ED7F80EDFF00A24A5A4A5A4A5A4A5A4A5A4A5A4A5A02FEC7FC495A49 5A495A495A495A495A49C8FC13FE5B485A485A485A485A485A48C9FC48B612FEA627437C C231>I<49B4FC010F13E0013F13F890B512FE48800007158048010113C03A1FF8007FE0 D83FE0133F49EB1FF048C7120F123E16F8001C140712181208C8FC150FA216F0A2151F16 E0153F16C0157FEDFF8002031300EC1FFE90380FFFFC5D15E08115FC15FFD90001138091 38007FC0ED1FE0ED0FF016F8ED07FCA2ED03FEA3ED01FFA80040EC03FE1260A200F0EC07 FC7E00FEEC0FF8127FD83FC0EB1FF0D81FF0EB7FE0390FFE01FF6CB612806C15006C5C6C 6C13F8011F13E0010190C7FC28457CC231>I<EDFF805C5CA2EC077FA2140FA2141E143E A2147E147C14FCA2EB01F8130314F01307A2EB0FE0A2EB1FC0133F1480137F14005B5B12 015B1203485AA2485A5B121F5B123F485AA248C7FC90B712C0A6C8387F8000B12A417DC0 31>I<000FB612F8A601F0C8FCB1EC3FC09038F1FFF001F313FC90B57EEDFF8016C002E0 13E0EC003F49EB1FF049EB0FF84913074914FC15034914FEC8FCA2150116FFAAED03FE12 101230003815FC007C1407007E15F800FE140FD87F80EB1FF06DEB3FE0D83FF0137F3A1F FE03FFC06CB61280000315006C14FC6C6C5B011F13C0D903FEC7FC28437DC031>I<EC07 FC91383FFF8091B512E013035B5B90381FFC0390393FE000604948130049C8FC485A5B12 03485A5B120F5B121FA25B123FA29038803FF8397F81FFFE01877F018F1480019F14C0D9 3FF713E039FF7F007F01FCEB1FF049EB0FF84913074914FC15035BED01FE5BA2150016FF A290C8FCA36C7E90C8FCA27FA3123F16FE6D1301A2121F6DEB03FC120F6DEB07F812076D EB0FF06C6CEB1FE06DEB3FC03901FF80FF6C90B512806D14006D13FC010F5B6D13E00100 90C7FC28457CC231>I<49B47E010F13F0013F13FC497F48B612804815C048010013E0D8 0FFCEB3FF001F0130F4848EB07F84913034848EB01FCA2007F15FE90C8FCA76C6CEB01FC A26C6CEB03F8A26C6CEB07F06C6CEB0FE0D803FCEB3FC03A01FF81FF806C90B51200013F 13FC010F13F0A2013F13FC90B6FC4801001380D803FCEB3FC04848EB1FE04848EB0FF048 48EB07F84848EB03FCA24848EB01FEA290C8FC4815FFA86C15FE6D1301A26D1303003F15 FC6D13076C6CEB0FF86C6CEB1FF06D133F3A07FF81FFE06C90B512C06C15806C6CEBFE00 6D5B010F13F0010090C7FC28457CC231>56 D<EDFF804A7FA34A7FA3913807EFF0A215E7 020F7F15C7A2021F7F15C391383F83FEA21581027F7F1501814A805CA201016E7E5CA201 036E7E5CA201076E7E5CA2010F6E7E5C011F8116075C013F8116035C017F818291B7FC90 B87EA34883A201FCC8127F0003707EA2484882171F5B000F83170F5B001F8317075B003F 8317035B007F838390C9FC48701380A239457DC440>65 D<B612F8EDFF8016E016F816FE 82902680003F13C003037F03007F163F707E707E16071603831601A516035F16075F160F 4C5AEE7FE04C5A03035B033F90C7FC90B612FC16F016C08216FC16FF902680003F13C003 037F9238007FF0EE1FF8707E707E707E82701380177F18C0A2173FA4177FA2188017FF5E 4C13004C5A160FEE3FFCEEFFF8030F5B90B75A178094C7FC16FC16E04BC8FC324577C441 >I<ED3FFE0203B512F0020F14FE023FECFF8091B7FC5B49D9E0071300010F90C7FCD91F FC141F49481407D97FE0804A91C7FC495A4890CAFC5A5B485AA2485AA2485AA2485AA348 5AA5485AAD6C7EA56C7EA36C7EA26C7EA26C7EA26C7E7F7E6C6D15806D6C14016E1403D9 3FF8140F6D6CEC1FC06DB4147F01039038E003FF6D90B612806DEDFE00023F5C020F14F0 020314C09126003FFCC7FC32497AC63E>I<B612FEEDFFE016F816FE707E839026800007 13F003007FEE3FFCEE0FFE1607707E7013807013C0177FEF3FE018F0171F170F18F8A2EF 07FCA2170318FEA31701A218FFAC18FEA21703A3EF07FCA3EF0FF8A2EF1FF0A2EF3FE017 7FEFFFC04C13805E4C13004C5AEE3FFCEEFFF803075B90B75A17804CC7FC16F816E04BC8 FC384578C446>I<B812F0A60180C9FCB3A690B71280A60180C9FCB3A890B712F8A72D45 78C43A>I<B812C0A60180C9FCB3A790B612FCA60180C9FCB3AE2A4578C437>I<B46CED3F E0B3AC90B8FCA60180C8123FB3AF334578C444>72 D<EAFF80B3B3B3AF094577C41B>I< D8FFF0933803FFC06D5EA36D5EA3017EEE1FBFA2017F163FA26D173F6E157FA2011F167E 6E15FEA26E1401010F16FCA26E1403010716F8A26E1407010316F0A26E140F010116E06E 141FA2010016C06E143FA26E15806F137FA2023F15006F5B021F5CA2EDE001020F5CA2ED F00302075CA2EDF80702035CA26E6C485AA36E6C485AA392387F3F80A3033F90C7FCA2ED 1FFEA36F5AA36F5A92C9FCA2424577C455>77 D<ED3FE0913803FFFE021FEBFFC04A8091 B612F8010315FE499038C01FFF49D900077FD91FFC01017FD93FF06D6C7E49486E7E4948 6E7E4A140F4890C86C7E48486F7E49150100078348486F1380A249167F001F18C049163F 003F18E0A249161F007F18F0A449160F00FF18F8AC6D161F007F18F0A46D163F003F18E0 A36C6CEE7FC0A26D16FF000F18806D5D000718006D5D6C6C4B5A6C5F6E140F6C6D4A5A6D 6C4A5AD93FF8ECFFE06D6C495B6DB401075B6DD9E03F90C7FC6D90B55A010015F86E5C02 1F14C0020349C8FC9138007FF03D497BC648>79 D<B612FCEDFFC016F016FC16FF178090 2680000F13C0030113E09238007FF0EE1FF8160FEE07FCA2EE03FE1601A217FFA282A45E A217FEA21603EE07FCA2EE0FF8161FEE7FF0923801FFE0030F13C090B71280170016FC16 F016C003FCC7FC0180C9FCB3AB304578C43E>I<B612F8EDFF8016F016FC82707E902680 000F7F03017F6F6C7EEE1FF8707E1607707EA2160183A282A35EA25F1603A24C5A160F4C 5AEE7FF04B485A030F5B90B75A4CC7FC5E16F0168093C8FCEB800082157F82153F826F7E A26F7E1507821503821501826F7FA2707E163F83161F83707EA2707EA2707E1601837013 80A2EF7FC0324577C43F>82 D<EC3FF80103B57E010F14E0013F14F84914FE90B7FC5A48 EBC00F4890380001FED80FFCEB007E49141E4848140E484814064991C7FCA2485AA77FA2 6C7E7F7F6C7E6CB4FC14E06C13FE6CEBFFC06C14FC6C14FF6D14C06D80010F14F8010380 D9003F7F02037FEC007F030F1380030313C01500167FEE3FE0A2161F17F0A2160FA7EE1F E012600070153F007816C0007E157F007FEDFF80D8FFE049130001F813079039FF803FFE 6C90B55A001F5D00075D000115C06C6C5C010F01FCC7FC010013E02C497CC636>I<BA12 F0A6C8D83FE0C8FCB3B3B3A93C457DC443>I<B46CEE1FE0A27F007FEF3FC0A27F003FEF 7F80A27F001FEFFF007F000F4C5AA27F00074C5AA27F00034C5AA26C6C4B5AA2806C4C5A A280017F4B5AA280013F4B5AA26D6C92C7FC5F80010F4A5AA28001074A5AA26D6C5C1607 A26D6C5C160FA26D01805B161FA2DA7FC05B163F023F5C15E0167F021F91C8FC15F05E02 0F5B15F8913807F9FCA3913803FDF8A215FF6E5BA26E5BA36F5A3B457EC440>86 D<EB07FE90387FFFC00003B57E000F14F84880819038F803FFEB8001001EC71380001814 7F0010EC3FC0C8FC16E0151FA8EC7FFF010FB5FC133F48B6FC5A000FEBF01F381FFE00EA 3FF8EA7FE05B485A90C7FCA4153F7F6C6C137F9038E001FFEBF80F6CB6FC7E15DF6C141F 000313F8C60180C7FC232F7CAD2F>97 D<B4FCB3A6EC3FC0903803FFF0010F13FC013F7F 497F90B61280D9FE0313C0D9F00013E049137F49EB1FF05B90C7EA0FF8150716FC1503A3 16FE1501AAED03FCA3150716F8150F16F06D131F6DEB3FE06D137F9039F001FFC0D9FC07 138090B612006D5B6D5B6D5B010713E0C790C7FC274679C432>I<EC7FE0903803FFFE01 0FEBFF80013F14E04914F090B6FC48EB801F3A03FE0003E0484813004848146049140048 5AA2485AA2485AA390C9FC5AAA6C7EA37F123FA26C6C14106D14306C6C14F06C6C13016C 6C13079038FF803F6C90B5FC6C6C14E06D14806D1400010713F8010013C0242F7DAD2B> I<ED01FEB3A6EB03FC90380FFFC1013F13F14913F948B6FC5AECC07F48EB001FD80FFC13 07484813035B48481301A25B127F5BA348C7FCAA7F127FA36C7EA26D13036C7E1507D80F FC130F6C6C133F9038FF80FF6C90B5FC6C14FD6C14F1013F13E16D1381D903FCC7FC2746 7DC432>I<EB01FE903807FFC0011F13F0017F7F90B57E488048EB03FF3807FC004848EB 7F8049133F4848EB1FC0150F484814E0491307127FA290C7FCED03F0B7FCA648C9FCA37E A27EA27F123F7FA26C7E6D14106C6C14706C6CEB01F06C6C13079038FF803F6C90B5FC6C 15E0013F14806DEBFE00010713F8010013C0242F7DAD2B>I<EC1FF0ECFFFE5B13075B5B 90383FF01EECC00290387F800091C7FC13FEA21201AEB61280A6D801FEC7FCB3B3A21F46 7EC51E>I<D901FCEB07E090390FFF80FF013F13E74990B512F090B7FC5A2603FE03EBC0 002607F80090C7FC497F000F8149133FA248486D7EA86C6C495AA26D137F000792C7FC6D 5B3903FE03FE90B55A485C485C5D018F1380261F81FCC8FC0180C9FCA47F7F6CB512F8ED FF806C15E016F86C81488148815A273FE0000F1380D87F80130090C8127F48ED3FC04815 1FA5007FED3F806D147F6C6CECFF0001F813076CB4EB3FFE6C90B55A6C5D000115E06C6C 1480011F49C7FC010113E02C427DAC31>I<B4FCB3A6EC7FC0903801FFF801077F011F7F 497F491480EBFE03D9F80013C049137F49133F4914E0151F5BA390C7FCB3AC234579C432 >I<EAFF80A9C7FCB0EA7F80B3B3A809457AC417>I<B4FCB3A7ED7FE0EDFFC04A13804A13 004A5A4A5A4A5A5D4A5A4A5A4A5A4990C7FC495A1307495A495A495A137F13FF8080A2EB FDFEEBF9FF13F0496C7E01C07F143F01807F496C7E140F8114076E7E8114016E7E168015 7FED3FC016E0151FED0FF016F8254579C42F>107 D<12FFB3B3B3AF084579C417>I<DA7F C0EB0FF827FF01FFF8EB3FFF01076D90B51280011FD9FE0314C0496D4814E049028F14F0 D9FE0390389FC07FD9F8009039FF001FF8496D48130F496D481307494A14FC031F140349 5CA390C75BB3AC3E2D79AC4D>I<EC7FC039FF01FFF801077F011F7F497F491480EBFE03 D9F80013C049137F49133F4914E0151F5BA390C7FCB3AC232D79AC32>I<EC7F80903803 FFF0010F13FC013F13FF498090B67E4801C07F3A03FE001FF048486D7E48486D7E491303 48486D7E491300003F814980007F1680A390C8123F4816C0AA6C6CEC7F80A36D14FF003F 16006D5B001F5D6D13036C6C495A6C6C495A6D131F3A03FFC0FFF06C90B55A6C5D013F91 C7FC6D5B010313F09038007F802A2F7DAD31>I<EC3FC039FF03FFF0010F13FC013F7F49 7F90B61280D9FE0713C0D9F00013E049137F49EB3FF049131F90C7EA0FF8A2ED07FCA215 03A216FE1501AAED03FCA3150716F8150FED1FF07F6DEB3FE06D13FF6D4813C0D9FC0F13 8090B612006D5B6D5B6D5B010713E0010090C7FC91C8FCB2274079AC32>I<141F00FE13 FF13035B131F5B5BEBFFF0148038FFFE005B5B5B5B5BA25BA390C7FCB3A8182D79AC21> 114 D<EB3FF848B5FC4814C0000F14F04814F85AEBE00F397F8001F090C7127000FE1430 1500A57E7FEA7FE013FC383FFFE06C13FC14FF000714806C14E06C14F06C7E010713F890 38003FFC14071403EC01FEA21400A412400070EB01FC1278007E130339FFE01FF890B512 F0A26C14E0001F14800003EBFE0038003FF01F2F7DAD25>I<EA01FEADB612F0A6D801FE C7FCB3AB7F150815386CEB81F8ECFFFC7FA26D13F06D138090380FF8001E3A7EB823>I< B4EC1FE0B3AE153FA2157FA26D13FF1403387FE00F90B6FC6C14DF151F6C13FC000713F0 000190C8FC232D79AB32>I<B415FFA27F007FEC01FEA27F003FEC03FCA27F001FEC07F8 A26C6C14F0150FA26C6CEB1FE0A36C6CEB3FC0A27F0001EC7F80A26C6C14005DA26D5B14 81A2013F5B14C114C3011F5B14E314E7010F5BA201075B14F7A26DB45AA36D5BA2282C7E AB2D>I<B415FFA27F007FEC01FE7F123FED03FC7F001FEC07F87F120FED0FF07F12076D EB1FE0120316C06C6C133FA216806C6C137FA26D14006E5A5D133F14C1011F5BA2ECE1F8 EB0FE3A201075B14F3A2903803F7E0A201015BA2EB00FF5DA2147F92C7FCA2147E14FEA2 5C1301A25C13035C13075CEA400F38781FC0EA7FFF5C91C8FC5B5BEA0FF028407EAB2D> 121 D<007FB612E0A516C0C8138016005C4A5A4A5AA24A5A4A5A4A5AA24A5A4A5A92C7FC 5B495A495AA2495A495A5C133F495A495AA24890C8FC485A485AA2485A485A5B123F48B6 12E0B7FCA5232C7DAB2A>I E /Fg 10 58 df<13FF000313C0380781E0380F00F0001E13 7848133CA248131EA400F8131FAD0078131EA2007C133E003C133CA26C13786C13F03807 81E03803FFC0C6130018227DA01E>48 D<13E01201120712FF12F91201B3A7487EB512C0 A212217AA01E>I<EA01FC3807FF80381C0FC0383003E0386001F0EB00F812F86C13FCA2 147C1278003013FCC7FC14F8A2EB01F0EB03E014C0EB0780EB0F00131E13385B5B3801C0 0CEA0380380600185A5A383FFFF85AB512F0A216217CA01E>I<13FF000313C0380F03E0 381C00F014F8003E13FC147CA2001E13FC120CC712F8A2EB01F0EB03E0EB0FC03801FF00 A2380003E0EB00F01478147C143E143F1230127812FCA2143E48137E0060137C003813F8 381E03F0380FFFC00001130018227DA01E>I<14E01301A213031307A2130D131D133913 31136113E113C1EA01811203EA07011206120C121C12181230127012E0B6FCA2380001E0 A6EB03F0EB3FFFA218227DA11E>I<00101330381E01F0381FFFE014C01480EBFE00EA1B F00018C7FCA513FE381BFF80381F03C0381C01E0381800F014F8C71278A2147CA2123012 7812F8A214784813F8006013F0387001E01238381E07803807FF00EA01F816227CA01E> I<EB0FC0EB7FF03801F0383803C0183807803C380F007C121E001C1338003C1300A2127C 1278EB7FC038F9FFE038FB80F038FE0038143C48131EA248131FA41278A36C131EA2001C 133C001E13386C1370380781E03801FFC038007F0018227DA01E>I<1230123C003FB5FC A24813FE14FC3860001C143814704813E014C0EA0001EB0380EB07001306130E5BA25BA2 1378A35BA41201A76C5A18237CA11E>I<137F3803FFC0380781E0380E00704813380018 131C1238A3123C003F1338381FC078EBE0F0380FF9E03807FF80120114C0000713F0380F 0FF8381C03FC383801FE3870007E141F48130F1407A314060070130E0078130C6C133800 1F13F03807FFC0C6130018227DA01E>I<13FE3803FFC0380781E0380E0070481378003C 133848133CA200F8131EA3141FA40078133FA26C137F121C380F01DF3807FF9F3803FE1E C7FCA2143E143C001C1338003E13781470003C13E0381801C0381C0780380FFE00EA03F8 18227DA01E>I E /Fh 33 90 df<007FB5FCA2B512FEA418067C961E>45 D<121EEA3F80EA7FC012FFA41380EA7F00123C0A0A788919>I<1703EF0780170FA2EF1F 00A2173EA25FA25FA24C5AA24C5AA24C5AA24C5AA24CC7FCA2163E167E167C5EA24B5AA2 4B5AA24B5AA24B5AA24BC8FCA2153EA25DA25DA24A5AA24A5AA24A5AA24A5AA24AC9FCA2 143EA25CA25CA2495AA2495AA2495AA2495A131F91CAFC133EA25BA25BA2485AA2485AA2 485AA2485AA248CBFCA2123EA25AA25AA21270315B7FC32D>I<EC07F8EC3FFF9138FC0F C0903903F003E0903907C001F0D90F8013F849C7FC013E14FC017E147C017C147E13FC48 5AA20003157F5B1207A2120F5BA2121F16FF5BA2123FA44848EB01FEA648C7EA03FCA5ED 07F8A25A16F0A2150F16E0A3ED1FC0A21680007E143F1600157E123E003F5C4A5AD81F80 5B000FEB07E06C6C485A2603F03FC7FC3800FFFCEB1FE0283F79BC2D>I<157015F01401 1407143F903803FFE0137FEBFFCFEBF80F1300141F15C0A5143F1580A5147F1500A55C5C A513015CA513035CA513075CA5130F5CA3131F497EB612F8A31D3D78BC2D>I<EC01FE91 380FFFE0023F13F89138FC07FC903901E001FE903907C000FF49C7EA7F80011E15C0163F 4915E05B0170141F13FF80A35A163FA26C90C7FC137E0118EC7FC090C8FCEEFF80A24B13 00A24B5A5E4B5A4B5A4B5A5E4B5A4BC7FC15FEEC01F84A5A4A5A4A5A4AC8FC143E5C5CEB 01E04948130E49485B49C7FC131E495C13705B48485C484814F0000FB6FC5A485D5AB7FC 5EA22B3D7CBC2D>I<EC07FC91383FFF809138F80FE0903903C007F09039078003FC9038 0F0001011C14FE013C14FF137F1480EBFFC0A31480A291380003FE137E90C7FCED07FC16 F8150F16F0ED1FE016C0ED3F80ED7E005DEC07F0903803FF8015F090380001FC6E7EED7F 80ED3FC0A2ED1FE016F0A316F8A4120EEA3F80486C133F16F012FFA216E0157F5B48C7EA FFC000F01580007049130012786C495A003EEB07F86C495A390FE03FE00003B51280C649 C7FCEB1FE0283F7ABC2D>I<161C163C167CA216FCED01F815031507150FA2151DED3BF0 157315E315C31401EC038391380707E0140E141CA2143814709138E00FC0EB01C0148013 03EB0700130E49EB1F805B133013705B485A4848EB3F0090C7FC5A120E5A5A48147E1260 B8FCA3C73801FE00A25DA41403A25DA314074A7E0107B512F8A3283E7BBD2D>I<010614 03D90780131F90390FF801FE91B512FC16F816F016E0168049EBFE0015F890381C7FC091 C8FCA3133C1338A513781370A2EC1FE0ECFFF8903873E03E9038FF001F01FCEB0F804914 C049EB07E04914F049130390C7FC16F8A61507A21206EA3F80487EA2150F00FF15F0A249 14E090C7121F00FC15C000F0143F00701580ED7F0012786C14FE4A5A6C495A390F800FE0 3907E03FC06CB5C7FCC613FCEB1FE0283F7ABC2D>I<ED7F80913803FFE091380FC0F091 383E003802FC131C495A494813FE903807E003EB0FC090381F8007133FD97F0013FC01FE 1303ED01F0484890C7FC1203A2485AA2120F5BA2001FEB3F809038E0FFE0393FE3C0F890 38E7007C01EE7F01FC133F4848EB1F80A24914C05B16E0A2485AA216F05BA2ED3FE0A290 C7FCA4157F16C0A316804814FF007E1500007F5C14016C5C4A5A6C6C485A4A5A6C6C485A 2607E07FC7FC3803FFFEC613F8EB3FC0273F78BC2D>I<EC03FC91381FFF8091387C07E0 903901F001F0903903C000F84948137C49C7123E131E013E141F133C137C137813F8A316 3F486C143E167E6D147C6C6C14FC6E13F89138C001F09138F003E090397FF807C09138FC 0F0090383FFF3E6D13F86D13E06D7F01017F8101077F90391F1FFF80D93E0F13C0EBF807 2601F00113E048486C13F04848137F4848131F001FEC0FF890C71207003E1403A2481401 A300FC15F05AA3ED03E0A26CEC07C0007C1580007E140F003EEC1F00003F143E6C6C5B6C 6C485A3907F00FE00001B512806C6C48C7FCEB0FF0283F7ABC2D>56 D<EC07F8EC3FFE9138FC0F80903901F007C0903907E003E0D90FC013F090381F8001013F 14F8EB7F004914FC48481300A24848EB01FEA21207A3485AA41503121F5BA31507A2000F 15FC150FA2151F1207153F000315F86C6C137F000014EF90387C01CF90393E078FF09038 0FFE1FEB03F890C713E0A2ED3FC0A3ED7F8016005D003F5C487E4A5A00FF495A5D4A5A49 485A48495A007049C7FC0078137E383E03FC381FFFF06C13C0D801FEC8FC273F79BC2D> I<17E016011603831607A2160FA2161F83163FA2167F167716F7EEE7FCED01E316C31503 16831507EE03FEED0F01150E151E151C153C03387FED7800157015F05D4A4880177F4A5A A24AC7FCA2020E81173F5C021FB6FC5CA20270C7EA3FE0171F5CA2495AA2494881170F49 C8FCA2130EA24982013C1507A2137CD801FE4B7E2607FF80EC3FFEB500F00107B512FC19 F85E3E417DC044>65 D<013FB7FC18E018FC903B007FE00007FE6E48903801FF80943800 7FC05DF03FE0F01FF0A3027F16F892C8FCA54A16F04A153F19E0187F19C0F0FF8001014B 13004A4A5A4D5AEF1FF04D5ADC03FFC7FC49B612F8EFFF8002F8C7EA3FE0EF0FF0EF07FC 717E010715014A81711380A319C0130F5CA5011F4B13805C19005F601707013F4B5A4A4A 5A4D5A4D5A017F913801FF8001FF020F90C7FCB812FC17F094C8FC3D3E7DBD40>I<DCFF C01338030F01F01378037F01FC13F0913A01FF803F01913A07FC000781DA1FE0EB03C3DA 7FC0EB01E74AC812FF4948ED7FE0D907FC153F495A4948151F495A4948150F494816C018 074890C9FC485AA2485A000F1880491603121FA248481607A295C7FC485AA412FF5BA75B A2181C183C1838A27F007F1778187018F0003F5F6D150160001F16036C6C4B5A95C7FC6C 6C5D6C6C151E6C6C5D6C6C15F86D6C495A6D6CEB07C0D91FF0EB1F80D907FE01FEC8FC01 01B512F86D6C13E0DA07FEC9FC3D4276BF42>I<013FB7FC18E018F8903B007FF0000FFE 6E48EB01FF9438007FC04B6E7E180F85727E727E147F4B6E7EA2727EA302FF178092C9FC A54918C05CA41A8013034A5DA41A0013074A5DA261A24E5A130F4A5E180F61181F61011F 4C5A5C4E5A4EC7FC4D5A4D5A013F4B5A4A4A5AEF3FE0EF7F80017F4A48C8FC01FFEC1FFC B812F0178004FCC9FC423E7DBD45>I<013FB812F8A39026007FF0C7127F6E48140F1803 4B14011800A31978147F4B1570A502FF143892C7FCA3190017784915704A14F016011603 160F91B6FC495DA29138FC001F16071603160101075D5CA2197019F019E0010F4A5A4A90 C7120119C0A218031980011F16075CF00F00A260181E013F163E4A157E4D5A1703017F15 0F01FFEDFFF8B9FCA2603D3E7DBD3E>I<4BB46C1370031F01F013F0037F9038FC01E091 3A03FF807E03913A0FF8000F83DA1FE0EB07C7DA7F80EB01EF4AC812FFD903FE16C04948 157F4948153F495A4948151F495A4948168091C9120F5A485AA2485A000F18004982121F A248485EA295C7FC485AA412FF5BA6043FB512E05BA29339001FFC00715AA2607F127FA2 171F123F6D5EA2121F7F000F163F6C7E6C6C4B5A7F6C6C15FF6C6DEB01EFD93FC0EB07C7 D91FF0EB1F87D907FE9038FE03800101B5EAF8016D6C01E0C8FCDA07FEC9FC3C4276BF47 >71 D<013FB5D8F807B6FC04F015FEA29026007FF0C7380FFE006E486E5AA24B5DA4180F 147F4B5DA4181F14FF92C85BA4183F5B4A5EA491B8FC5B6102FCC8127FA318FF13074A93 C7FCA45F130F4A5DA41703131F4A5DA41707133F4A5DA3017F150F496C4A7EB6D8E01FB5 12FC6115C0483E7DBD44>I<011FB512FC5BA29039003FF8006E5AA25DA5143F5DA5147F 5DA514FF92C7FCA55B5CA513035CA513075CA5130F5CA5131F5CA3133F497E007FB512F0 A2B6FC263E7EBD21>I<013FB512FEA25E9026007FF8C8FCEC3FE0A25DA5147F5DA514FF 92C9FCA55B5CA513035CA513075CA21838A21870130F5CA218E0A3011F15014A15C01703 A21707EF0F80013F151F4A143F177FEFFF00017F140301FF143FB9FC5FA2353E7DBD39> 76 D<90263FFFF0933807FFFE5013FC629026007FF8EFFC00023F4D5AA2023BEF77F0A2 DA39FC16E7A2F101CF0279EE038FDA70FE5FF1070FA2190E1A1FDAF07F151C02E0601938 19706F7EF1E03F130102C0DB01C05BA26F6CEB0380A2953807007F0103160E4A6C6C93C7 FC60A2606201076D6C5B02005F60A26F6C485A94380380015B010EDB07005BA2923801FC 0EA24D1303131E011C6D6C485C5FA25F1907013CEC7FC0013860013C5D137C01FE6EC712 0F2607FF80013E4A7EB500FC031FB512F8043C5E4A131C573E7DBD53>I<90263FFFE002 3FB5FC6F16FEA29026003FF8020313C0021F030013004A6C157C023B163C6F1538143981 0238167802787FDA707F157082153F82031F15F002F07FDAE00F5D821507820303140101 0180DAC0015D82811780047F1303010315C04A013F5C17E0161F17F0040F1307010715F8 91C7000791C7FC17FC160317FE04015B4915FF010E6E130E188E177F18CEEF3FDE011E16 FE011C6F5AA2170FA21707133C01386F5A133C017C150113FE2607FF801400B512FC1870 5C483E7DBD44>I<923803FF80031F13F09238FE01FE913903F0003FDA0FC0EB1FC0DA3F 80EB07E0027EC76C7E49486E7E49488149486E7E4948157F495A013F17804948ED3FC049 C9FCA24848EE1FE012035B000718F05B120FA2485A19F8123F5BA2127FA219F04848163F A5F07FE0A35BF0FFC0A219805F19007F4D5A127F4D5A60003F160F6D5E001F4C5A4D5A6C 6C4B5A95C7FC6C6C15FE00034B5A6C6C4A5A6C6C4A5A017FEC1FC06D6C495AD90FE001FE C8FC903903F807F80100B512C0DA0FFCC9FC3D4276BF47>I<013FB612FEEFFFE018F890 3B007FF0000FFC6E48EB01FF7113804BEC7FC0183F19E0F01FF0A2147F5D19F8A402FFED 3FF092C8FCA219E0A2F07FC05B4AEDFF8019004D5A4D5AEF0FF80103ED3FE04A903801FF 8091B648C7FC17F002FCCAFCA213075CA5130F5CA5131F5CA5133F5CA3137F497EB612E0 A25D3D3E7DBD3E>I<923803FF80031F13F09238FE01FE913903F8003FDA0FE0EB1FC0DA 3F806D7E4AC7EA03F0D901FC8149486E7E49486E7E010F82494881494816804948ED3FC0 13FF91C9FC484817E00003171F5B000718F0A2485AA2485A19F8123FA25B127FA219F048 48163FA519E0187F5BA219C018FF1980A24D1300A24D5A6C7E4D5A60003F160F037C5C6C 6C48B4495A913A0783803FC0000F90260E01C05B9026F00C0049C7FC0007011CEBE0FE26 03F818EB61FCD801FCEC73F8D800FEEC77F0017FEC7FC0D93F985CD90FFC01FEC8FC9027 03FE07F813030100B5FC91260FFC3C5B91C7FC180E163E181E043F137CEF81FC17FF60A2 60A2705B60705B7048C7FCEE01F83D5276BF47>I<013FB612F017FF18E0903B007FF000 3FF86E48EB07FCEF01FE4B6D7EF07F8019C0183F19E0147F4B15F0A502FFED7FE092C8FC A219C0F0FF80A2494B13004A5D4D5AEF0FF04D5AEF7F800103DA07FEC7FC91B612F01780 9139FC0007E0EE03F8EE00FC0107814A147F717EA284A2130F5CA484011F157F5CA41902 013F17075CA2F0F00F017F170E496C143FB600E0011F131C94380FF83C4B01071378CA38 01FFE09438003F8040407DBD43>I<9239FF8003800207EBF007021F9038FC0F0091387F 00FE02FCEB1F1FD903F0EB07BF49486DB4FC49487F4A6D5A49C8FC49157E133E137E173E 49153CA57F1738A26D92C7FC808080EB7FFEECFFE06D13FEEDFFC06D14F06D14FC010380 010080143F020380DA003F7F15031500707E163F161FA2160F121CA31607160F003C5EA3 5F003E151F94C7FC007E5D007F153E6D5C16FC01E0495AD87DF0495AD8FCFCEB0FC03AF8 7F803F8027F01FFFFEC8FCD8E00713F839C0007FC031427BBF33>I<0007B912F0A33C0F FE000FF8003F01F0160F01C04A13034848160190C7FC121EF000E048141F5E1238A21278 1270153F5E5AA3C81600157F5EA515FF93C9FCA55C5DA514035DA514075DA5140F5DA314 1FEC7FFC0003B7FCA33C3D76BC42>I<B600E090B512FC4B15F8A2000101C0C7000F1300 6C49EC03FCEF01F091C9FC60A317015A495EA417031203495EA4170712074993C7FCA45F 120F49150EA4171E121F49151CA4173C123F491538A31778177017F05F001F15015F1603 6D4A5A000F93C8FC5E6C6C141E6C6C5C000115F86C6C495A017FEB07C090393FC03F8090 260FFFFEC9FC010313F89038007FC03E4073BD44>I<B6020FB5FC19FEA2000301E00201 13E06C01809138007F8091C9EA7E006C173C18386E15781870017F16F0604D5A804D5A13 3F4DC7FCA26E140E171E011F151C173C17386E1478010F15705FA24C5A8001074A5AA24C C8FC5E6E130E0103141E161C163C16386E5B13015EA24B5A14FF6D495AA24BC9FC5D158E EC7F9E159C15B8A215F0143F5DA25DA26E5AA292CAFCA2140E404074BD44>I<010FB500 F090B512F85B5FD9003F902680003F1300DA0FFEC7EA1FF84BEC0FE00207168096C7FC6E 6C141E181C6E6C143C606E6D5B4D5ADB7FC05B4D5A92383FE0074DC8FC92381FF01E171C 6F6C5A5F923807FCF0EEFDE06FB45A5F6F90C9FCA26F7FA2707EA216FF4B7FED03DF9238 079FF0ED0F1F92380E0FF8151C92383C07FC15784B6C7EEC01E04B6C7EEC038002076D7F 4AC7FC021E6E7E5C02386E7E5C02F06E7E495A49486E7E130749486E7E497E017F4B7E26 03FFF091383FFF80007F01FC49B512FEB55CA2453E7EBD44>88 D<B66C0103B51280A300 0101F0C8EBF0006C49ED7FC06D486FC7FC6E153E013F163C606D6C5D606D6C4A5A17036D 6C4A5A95C8FC6E140E0103151E5F6D6C14385F6D6D13F04C5ADA7FC05B4C5AEDE007023F 49C9FC161E91381FF01C5E91380FF8785E6E6C5AEDFDC015FF6E5B93CAFC6E5AA35DA214 03A45DA21407A45DA2140FA4141F4A7E013FB512F0A3413E75BD44>I E /Fi 35 124 df<EC0780140F141FEC3E0014FE495A495A5C495A130F495A495AA249C7 FC5B5B1201485AA212075BA2120F5B121FA3485AA4127F5BA512FFB0127FA57F123FA46C 7EA3120F7F1207A27F1203A26C7E12007F7F6D7EA26D7E6D7E13076D7E806D7E6D7E143E EC1F80140F1407195A77C329>40 D<127012F8127C7EEA3F806C7E6C7E12076C7E7F6C7E 6C7EA2137F80133F806D7EA280130FA280130780A36D7EA4807FA51580B01500A55B5CA4 495AA35C130F5CA2131F5CA2495A5C137F91C7FC13FEA2485A485A5B485A120F485A485A 003EC8FC5A5A1270195A7AC329>I<EA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA6EA7FF8EA3F F0EA1FE0EA0FC0C7FCACEA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA6EA7FF8EA3FF0EA1FE0EA 0FC00E2879A71D>58 D<90381FFF8090B512F0000314FC000F14FF261FF8071380263FC0 0113C0018014E0486C7E486C14F07FA56C5A4A13E0EA3FC0260F000313C0C714804A1300 4A5A4A5A15F04A5A4A5A5D92C7FC14FE5C13015CA25CAA90C9FCA8EB03F0497E497E497E 497EA66D5A6D5A6D5A6D5A24407ABF31>63 D<16FCA24B7EA24B7EA34B7FA24B7FA34B7F A24B7FA34B7F157C03FC7FEDF87FA2020180EDF03F0203804B7E02078115C082020F814B 7E021F811500824A81023E7F027E81027C7FA202FC814A147F49B77EA34982A2D907E0C7 001F7F4A80010F835C83011F8391C87E4983133E83017E83017C81B500FC91B612FCA546 3F7CBE4F>65 D<B812F8EFFF8018F018FC18FF26003FFCC76C13C005077F05017F716C7E 727E727E727E721380A27213C0A27213E0A21AF084A21AF8A41AFCA5197FA319FFA51AF8 A41AF0A2601AE0A24E13C0A24E13804E1300604E5A4E5A4D485A050713E0057F5BBA5A4E C7FC18F818C005F8C8FC463E7DBD50>68 D<BAFCA4198026003FFEC7123F170717018318 3FA2181FF00FC0A31807EE07C0A3F003E0A3160F95C7FC161F163F16FF91B6FCA54AC6FC 163F161F040F147CA2160719F8A593C71201A219F01803A21807A2180FF01FE0183F18FF 1703173FBAFCA219C0A33E3D7DBC45>I<B71280A526003FFEC7FCB3B3B0B71280A5213E 7DBD28>73 D<B6051FB512C06F5EA26F5EA2D8003F97C7FC6F16F7A26E6CED01E7A26E6C ED03C7A36E6CED0787A26E6CED0F07A26E6C151EA36E6D143CA26E6D1478A26E6D14F0A2 6F6CEB01E0A36F6CEB03C0A26F6CEB0780A26F6CEB0F00A36F6C131EA26F6D5AA26F6D5A A26F6D5AA393387FF1E0A293383FFBC0A270B45AA37090C7FCA2705AA2705AB600C0031F B612C0A2705AA2705A5A3E7CBD63>77 D<B812F017FF18C018F018FC26003FFCC77FEF1F FF7113807113C07113E0A27113F0A319F8A819F0A34D13E019C05F4D1380053F1300EFFF FE91B712F860188005FCC7FC4ACAFCB3A4B77EA53D3E7DBD47>80 D<B87E17FCEFFF8018F08428003FFC000113FE9338003FFF050F7F717F717FA2858385A7 61A25F61614D5B4D90C8FCEF3FFE4CB45A91B712F018C04DC9FC717E9126FC000F7F0401 13F0707F717EA2717EA2717EA685A6F207C019C0A271140F07E01380B76DEBF01F719038 FC3F007190B5FC716C5B061F13F8CB000113E04A3F7DBD4E>82 D<903A03FFC001C0011F EBF803017FEBFE0748B6128F4815DF48010013FFD80FF8130F48481303497F4848EB007F 127F49143F161F12FF160FA27F1607A27F7F01FC91C7FCEBFF806C13F8ECFFC06C14FCED FF806C15E016F86C816C816C816C16806C6C15C07F010715E0EB007F020714F0EC003F15 03030013F8167F163F127800F8151FA2160FA27EA217F07E161F6C16E06D143F01E015C0 01F8EC7F8001FEEB01FF9026FFE00713004890B55A486C14F8D8F81F5CD8F00314C027E0 003FFEC7FC2D407ABE3A>I<003FB912FCA5903BFE003FFE003FD87FF0EE0FFE01C01603 49160190C71500197E127EA2007C183EA400FC183F48181FA5C81600B3AF010FB712F8A5 403D7CBC49>I<903807FFC0013F13F848B6FC48812607FE037F260FF8007F6DEB3FF048 6C806F7EA36F7EA26C5A6C5AEA01E0C8FC153F91B5FC130F137F3901FFFE0F4813E0000F 1380381FFE00485A5B485A12FF5BA4151F7F007F143F6D90387BFF806C6C01FB13FE391F FF07F36CEBFFE100031480C6EC003FD91FF890C7FC2F2B7DA933>97 D<13FFB5FCA512077EAFEDFFE0020713FC021FEBFF80027F80DAFF8113F09139FC003FF8 02F06D7E4A6D7E4A13074A80701380A218C082A318E0AA18C0A25E1880A218005E6E5C6E 495A6E495A02FCEB7FF0903AFCFF01FFE0496CB55AD9F01F91C7FCD9E00713FCC7000113 C033407DBE3A>I<EC7FF00107B5FC011F14C0017F14E09039FFF01FF0489038800FF848 EB001F4848EB3FFC120F485AA2485AA2007FEC1FF849EB0FF0ED03C000FF91C7FCAB127F 7FA3003F153E7F001F157E6C6C147C6C6C14FC91388001F86C9038C003F0C69038F81FE0 6DB512C0011F14800107EBFE009038007FF0272B7DA92E>I<ECFFF0010713FE011F6D7E 017F809039FFE07FE0489038801FF048496C7E48486D7E48486D7E121F491301003F81A2 485A6F1380A212FFA290B7FCA401F0C9FCA5127FA27F123FEE0F806C7E161F6C6C15006C 6C5C6C6D137E6C9038E001FC6C9038F80FF8013FB55A6D14C0010391C7FC9038007FF829 2B7DA930>101 D<EC07FE91387FFF8049B512C0010714E090390FFE3FF0EB1FF090393F E07FF8EB7FC013FF1480A2489038003FF0ED1FE0ED0FC092C7FCAAB612E0A500010180C7 FCB3AC007FEBFF80A525407DBF20>I<903A03FF8007F0013F9038F83FF8499038FCFFFC 48B712FE48018313F93A07FC007FC34848EB3FE1001FEDF1FC4990381FF0F81700003F81 A7001F5DA26D133F000F5D6C6C495A3A03FF83FF8091B5C7FC4814FC01BF5BD80F031380 90CAFCA2487EA27F13F06CB6FC16F016FC6C15FF17806C16C06C16E01207001F16F0393F E000034848EB003F49EC1FF800FF150F90C81207A56C6CEC0FF06D141F003F16E001F014 7FD81FFC903801FFC02707FF800F13006C90B55AC615F8013F14E0010101FCC7FC2F3D7D A834>I<EA01F8487E487E487E481380A66C13006C5A6C5A6C5AC8FCA913FFB5FCA51207 7EB3ABB512F8A515407CBF1D>105 D<EC0FC0EC1FE0EC3FF0EC7FF8ECFFFCA6EC7FF8EC 3FF0EC1FE0EC0FC091C7FCA9EC03FCEB07FFA5EB001F140FB3B3A2EA1F80EA3FC0EA7FE0 EAFFF0EC1FF8A3EC3FF015E0397FE07FC0393FC1FF806CB512006C5B6C13F8C613801E53 86BF20>I<13FFB5FCA512077EB092380FFFFEA5DB01FEC7FC4B5AED07F0ED1FE04B5A4B 5A4BC8FCEC03FC4A5A4A5A141FEC7FF84A7EA2818102E77F02C37F148102007F826F7E6F 7E151F6F7E826F7F6F7F816F7FB5D8FC07EBFFC0A5323F7DBE37>I<13FFB5FCA512077E B3B3AFB512FCA5163F7CBE1D>I<01FFD91FF8ECFFC0B590B5010713F80203DAC01F13FE 4A6E487FDA0FE09026F07F077F91261F003FEBF8010007013EDAF9F0806C0178ECFBC04A 6DB4486C7FA24A92C7FC4A5CA34A5CB3A4B5D8FE07B5D8F03FEBFF80A551297CA858>I< 01FFEB1FF8B5EBFFFE02036D7E4A80DA0FE07F91381F007F0007013C806C5B4A6D7E5CA2 5CA35CB3A4B5D8FE0FB512E0A533297CA83A>I<EC7FF0903803FFFE011FEBFFC0017F14 F09039FFE03FF8489038800FFC3A03FE0003FE48486D7E000F168048486D13C0A2003F16 E049147F007F16F0A400FF16F8AA007F16F0A46C6CECFFE0A2001F16C06C6C491380A26C 6C4913003A03FF800FFE6C9038E03FFC6C6CB512F0011F14C0010791C7FC9038007FF02D 2B7DA934>I<01FFEBFFE0B5000713FC021FEBFF80027F80DAFF8113F09139FC007FF800 0301F06D7E4A6D7E4A130F4A6D7E1880A27013C0A38218E0AA4C13C0A318805E18005E6E 5C6E495A6E495A02FCEBFFF0DAFF035B92B55A029F91C7FC028713FC028113C00280C9FC ACB512FEA5333B7DA83A>I<3901FE01FE00FF903807FF804A13E04A13F0EC3F1F91387C 3FF8000713F8000313F0EBFFE0A29138C01FF0ED0FE091388007C092C7FCA391C8FCB3A2 B6FCA525297DA82B>114 D<90383FFC1E48B512BE000714FE5A381FF00F383F800148C7 FC007E147EA200FE143EA27E7F6D90C7FC13F8EBFFE06C13FF15C06C14F06C806C806C80 6C80C61580131F1300020713C014000078147F00F8143F151F7EA27E16806C143F6D1400 01E013FF9038F803FE90B55A15F0D8F87F13C026E00FFEC7FC222B7DA929>I<EB07C0A5 130FA4131FA3133F137FA213FF5A1207001FEBFFFEB6FCA40001EBC000B3151FA96CEBE0 3EA2017F137EECF8FC90383FFFF86D13F0010713E001001380203B7EB929>I<D9FF80EB 0FF8B5EB0FFFA50007EC007F6C153FB3A5167FA316FF6C5C4B7F6C903AC007DFFFE09138 F01F9F6DB5121F6D13FE010F13F8010101E0EBE000332A7CA83A>I<B500FC90383FFFC0 A5000101C0903803E0006E1307A26C5E6E130F017F5D6E131F013F92C7FC6E5B011F143E 6E137E010F147C6E13FCA26D5C15816D5C15C36D5C15E76D5C15FF6E5BA36E90C8FCA26E 5AA26E5AA26E5AA26E5AA232287EA737>I<B53CFC3FFFFC03FFFEA50003D980009039C0 000F806E161F6C037F15006E496C5B6C183E836E48157E017F177C6E486D13FC013F02EF 5C83DAFC071401011F02C75CDAFE0FEBFE03010F02835C17FFDAFF1F14076D02015C03BF 148F6DD9BE005C18CF03FE14DF6D49017F90C7FC18FF6D496D5AA36E486D5AA26E486D5A A36E486D5AA26E486D5A47287EA74C>I<B500FC90383FFFC0A5000101C0903803E0006E 1307A26C5E6E130F017F5D6E131F013F92C7FC6E5B011F143E6E137E010F147C6E13FCA2 6D5C15816D5C15C36D5C15E76D5C15FF6E5BA36E90C8FCA26E5AA26E5AA26E5AA26E5AA3 5D14075D000E130FD83F805B387FC01FD8FFE090C9FC5C143E147E5CEBC1F8387FC3F038 7E0FE06CB45A6C5B6C48CAFCEA03F8323B7EA737>121 D<B912E0A43304809A34>123 D E /Fj 22 122 df<933807FF80043F13E09338FE00F8DB01F0133EDB07E0130E4B4813 1F4C137F031F14FF4BC7FCA218FE157E1878180015FE5DA31401A25DA414030103B712F0 A218E0903A0003F000070207140F4B14C0A3171F020F15805DA2173F1800141F5D5F177E A2143F92C712FE5FA34A1301027EECF81CA3160302FEECF03C4A1538A21878187013014A 010113F018E0933800F1C0EF7F804948EC1F0094C7FCA35C1307A2001E5B127F130F00FF 5BA249CAFC12FEEAF81EEA703CEA7878EA1FF0EA07C0385383BF33>12 D<120FEA3FC0127FA212FFA31380EA7F00123C0A0A77891C>46 D<147E49B47E903907C1 C38090391F80EFC090383F00FF017E137F4914804848133F485AA248481400120F5B001F 5C157E485AA215FE007F5C90C7FCA21401485C5AA21403EDF0385AA21407EDE078020F13 70127C021F13F0007E013F13E0003E137FECF3E1261F01E313C03A0F8781E3803A03FF00 FF00D800FC133E252977A72E>97 D<EB1FC0EA0FFF5CA2EA003FA291C7FCA25BA2137EA2 13FEA25BA21201A25BA21203A25B147E3907F1FF809038F783E09038EF01F013FE390FF8 00F8A24913FC49137C485A157E5B15FE123FA290C7FCA248130115FC127EA2140300FE14 F85AA2EC07F0A215E048130F15C0141F15800078EB3F00127C147E003C5B383E01F8381E 03E06C485A6CB4C7FCEA01F81F4076BE2A>I<EC1FE0ECFFF8903803F03E903807C00F90 381F8007D93F001380017E131F49137F485A485A000715005B000F147E484890C7FCA248 5AA3127F90C9FCA35A5AA6481403007E5C5D151E003E5C5D6C5CEC03E0390F800F802603 E07EC7FC3801FFF838003FC0212977A72A>I<EE3F80ED1FFF1700A2ED007FA2167EA216 FEA25EA21501A25EA21503A25EA21507A25E147E903801FF8F903807C1CF90391F80EFC0 90383F00FF017E137F5B48486D5A485AA2485A000F92C7FC5B001F5CA24848137EA215FE 127F90C75AA214015A485CA2140316384814F0A21407167891380FE070127C021F13F000 7E013F5B003E137FECF3E1261F01E35B3A0F8781E3802703FF00FFC7FCD800FC133E2940 77BE2E>I<EC3F80903801FFE0903807E0F890381F803CEB3E0001FC131E485A485A1207 4848133E49133C121F4848137C15F8EC03F0397F000FE0ECFF80B5EAFC0014C048C8FCA4 5AA61506150E151E007C143C15786C14F0EC01E06CEB07C0390F801F003807C0FC3801FF F038007F801F2976A72A>I<EC03F0EC0FFC91383E0E1C9138FC077E903901F003FE1303 903807E001D90FC013FCEB1F80A2EB3F004914F8137E01FE1303A2484814F0A215071203 4914E0A2150F12074914C0A2151FA216805B153F1203ED7F006D5BA200015B0000495A90 38F80F7E90387C1EFEEB1FF8903807E0FC90C7FC1401A25DA21403A25D001C1307007F5C 48130F5D4A5A4AC7FC48137E00F85B387C03F0381FFFC0D803FEC8FC273B7CA72A>103 D<EB01FC13FF5CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C8FCEC03 F890387F0FFE91383E0F80D97E7813C0ECE007D9FFC013E014801400A2485A5BA25B0003 140F16C05BA20007141F16805BA2000F143F16005B5D001F147EEDFE074913FCA2003F01 01130FEDF80E1300161E48ECF01CA2007E1538A200FE1570020013E048EC7FC00038EC1F 0028407ABE2E>I<1478EB01FCA21303A314F8EB00E01400AD137C48B4FC38038F80EA07 07000E13C0121E121CEA3C0F1238A2EA781F00701380A2EAF03F140012005B137E13FE5B A212015BA212035B1438120713E0000F1378EBC070A214F0EB80E0A2EB81C01383148038 078700EA03FEEA00F8163E79BC1C>I<EB01FC13FF5CA21303A25CA21307A25CA2130FA2 5CA2131FA25CA2133FA291C8FCED03E049EB0FF8ED3C3C017EEB707CEDE1FC9038FE01C1 EC03839038FC0703140E0001011C13F891383800E0494813001460000313E0EBF9C0EBF7 8001FEC8FC1207EBFFE0EBE7F8EBE0FE000F137F6E7EEBC01F6E7E121F16701380A2003F 15F0021F13E001001380A248148116C0007EEB0F83168000FE14879138078F0048EB03FE 0038EB00F826407ABE2A>107 D<EB07F0EA03FF14E0A2EA000FA214C0A2131FA21480A2 133FA21400A25BA2137EA213FEA25BA21201A25BA21203A25BA21207A25BA2120FA25BA2 121FA25BA2123FA290C7FCA25A1307127EA2EAFE0F130E12FCA2131E131CA2EA7C381378 EA3C70EA1FE0EA0780144079BE17>I<D801F0D93F80137F3D07FC01FFE003FFC03D0F3E 07C1F80F83F03D0E1F0F00FC1E01F8001E011C90387C3800001C49D97E707F003C01F05C 0038157F4A5C26783FC05C12704A91C7FC91C7127E00F003FE1301494A5CEA007EA20301 140301FE5F495CA203031407000160495C180F03075D0003051F13E0494A1480A2030FEC 3F810007F001C0495CA2031F91383E0380120F494AEC0700A2033F150E001FEF1E1C4991 C7EA0FF80007C7000EEC03E0432979A74A>I<D801F0EB3F803A07FC01FFE03A0F3E07C1 F83A0E1F0F00FC001E011C137C001C49137E003C13F012385C38783FC012705C91C7FC00 F015FE495CEA007EA2150101FE5C5BA2150300015D5B15075E0003020F13704914C0A203 1F13F00007ED80E05B1681EE01C0120F49EC0380A2EE0700001FEC0F0E49EB07FC0007C7 EA01F02C2979A733>I<EC1FC0ECFFF8903803F07C90380FC01FEB1F8090393F000F8001 7E14C0491307484814E0485A12075B000F15F0485AA2485AA2ED0FE0127F90C7FCA2151F 4815C05AA2ED3F80A2ED7F00A248147E007C5C007E13015D4A5A003E495A6C495A4A5A26 0F803EC7FC3807C0FC3801FFF038003F80242977A72E>I<903903E001F890390FF807FE 903A1E7C1E0F80903A1C3E3C07C0013C137801389038E003E0EB783F017001C013F0ED80 019038F07F0001E015F8147E1603000113FEA2C75AA20101140717F05CA20103140F17E0 5CA20107EC1FC0A24A1480163F010F15005E167E5E131F4B5A6E485A4B5A90393FB80F80 DA9C1FC7FCEC0FFCEC03E049C9FCA2137EA213FEA25BA21201A25BA21203A2387FFFE0B5 FCA22D3A80A72E>I<D801F013FC3A07FC07FF803A0F3E0F03C0260E1F1C13E0001EEB38 0F001C1370003CEBE01F123814C0D8783F14C00070903880070092C7FC91C8FC12F05BEA 007EA313FE5BA312015BA312035BA312075BA3120F5BA3121F5B0007C9FC232979A726> 114 D<EC7F80903801FFE0903807C0F890381F003C013E131C013C131E017C133E49137E 15FEA2000114FCA215706D13007FEBFFC014FC6C13FF15806D13C06D13E0010F13F01300 140F14071403120C123F387F80011403D8FF0013E0A300FCEB07C000F0EB0F8012700078 EB1F006C133C381F01F83807FFE0C690C7FC1F297AA725>I<EB01C0EB03F01307A25CA2 130FA25CA2131FA25CA2133FA291C7FCA2007FB51280B6FC1500D8007EC7FC13FEA25BA2 1201A25BA21203A25BA21207A25BA2120FA25BA2121F141C1380A2003F133C1438EB0078 147014F05C495AEA1F03495A6C48C7FCEA07FCEA01F0193A78B81E>I<137C48B4141C26 038F80137EEA0707000E7F001E15FE121CD83C0F5C12381501EA781F007001805BA2D8F0 3F1303140000005D5B017E1307A201FE5C5B150F1201495CA2151F0003EDC1C0491481A2 153F1683EE0380A2ED7F07000102FF13005C01F8EBDF0F00009038079F0E90397C0F0F1C 90391FFC07F8903907F001F02A2979A731>I<017CEB01C048B4EB07F038038F80EA0707 000E01C013F8121E001C1403EA3C0F0038EC01F0A2D8781F130000705BA2EAF03F91C712 E012005B017E130116C013FE5B1503000115805BA2ED07001203495B150EA25DA25D1578 000114706D5B0000495A6D485AD97E0FC7FCEB1FFEEB03F0252979A72A>I<137C48B414 3826038F8013FCEA0707000E7F001E1401001C15F8EA3C0F12381503D8781F14F0007013 80A2D8F03F1307020013E012005B017E130F16C013FE5B151F1201491480A2153F000315 005BA25D157EA315FE5D00011301EBF8030000130790387C1FF8EB3FF9EB07E1EB00035D A21407000E5CEA3F80007F495AA24A5AD8FF0090C7FC143E007C137E00705B387801F038 3803E0381E0FC06CB4C8FCEA03F8263B79A72C>121 D E /Fk 2 16 df<007FB812FEBAFCA26C17FE3804799847>0 D<EB0FFCEB3FFF90B512C0000314F0 4880488048804880A2481580A3B712C0AA6C1580A36C1500A26C5C6C5C6C5C6C5CC614C0 013F90C7FCEB0FFC22227BA72D>15 D E /Fl 53 122 df<14FCEB01F8EB03F0EB07E0EB 0FC0131F1480EB3F005B137E5B12015B1203A2485AA25B120FA25B121FA25B123FA448C7 FCA712FEB3A2127FA76C7EA4121F7FA2120F7FA212077FA26C7EA212017F1200137E137F 7FEB1F8014C0130FEB07E0EB03F0EB01F8EB00FC165A79C323>40 D<12FC127E7E6C7E6C7E7F12076C7E7F12016C7E7F137E137FA2EB3F80A2131F14C0A213 0F14E0A2130714F0A4EB03F8A7EB01FCB3A2EB03F8A7EB07F0A414E0130FA214C0131FA2 1480133FA2EB7F00A2137E13FE5B485A12035B485A120F5B485A48C7FC127E5A165A7BC3 23>I<EA7F80A8120FEA1F00A2121E123EA2123C127C1278A212F80913798719>44 D<B512FEA617067F961E>I<ED0180ED03C01507A21680150FA216005DA2151E153EA215 3C157CA2157815F8A25D1401A25D1403A25D1407A25D140FA24AC7FCA2141E143EA2143C 147CA2147814F8A25C1301A25C1303A25C1307A25C130FA291C8FC5BA2131E133EA25BA2 137813F8A25B1201A25B1203A25B1207A25B120FA290C9FC5AA2121E123EA2123C127CA2 127812F8A25A1260225B7BC32D>47 D<EB0FF8EB3FFF90B512C04814F048804880390FF0 1FFE391FC003FF4848C6138090C7127F48EC3FC0127EED1FE012FE48140F007C15F0123C 1238001814071208C8FCA2150FA216E0A2151F16C0153F1680ED7F005D5D4A5A4A5A4A5A 4A5A4A5A4A5A4AC7FC14FE495A495A495A495A495A495A49C8FC13FC485A485A485A485A 485A48C9FC48B612F0B7FCA6243E7CBD2D>50 D<EC01FE4A7EA34A7FA391380FDFC0159F 021F7F158FA291383F0FF0A21507027E7FA2150302FC7FA201016D7E14F8A201036D7E5C A201076E7E5C010F6E7EA25C011F6E7E5CA2013F6E7E91C7FC49811607137E90B77EA348 82A2D803F8C7EA01FF825B00071780177F5B000FEE3FC05B001F17E0171F5B003F17F017 0F90C9FC48EE07F8A200FE17FC17035A363F7DBE3D>65 D<B612E015FCEDFF8016E08248 C713FCED1FFEED03FF819238007F80EE3FC0161FA2EE0FE0A6EE1FC0163F1780167F9238 01FF004B5AED0FFCED7FF8B75A16C04BC7FC8116E016F848C713FEED0FFF030113806F13 C0EE3FE0EE1FF0160FEE07F8160317FCA21601A4160317F81607A2EE0FF0161FEE7FE0EE FFC003031380033F1300B75A16F816E0168003F8C7FC2E3F77BE3D>I<EDFFF0020FEBFF 80023F14F091B612FC5B1307499038803FF890391FFC0003D93FF01300D97FC014384948 14184890C9FC485A5B12075B485AA2485AA2485AA3485AA448CAFCAD6C7EA46C7EA36C7E A26C7EA26C7E7F12037F6C6C15046C6D140C6D6C143CD93FF0147CD91FFCEB01FE90390F FF801F6D90B5FC010115FC6D15F0023F14C0020F1400020013F02F437AC03A>I<B612F8 EDFF8016E016F88290C7EA1FFF03037F03007F707EEE1FF0707E707E1603707EA2707EEF 7F80A2173F18C0A2171F18E0A2170FA218F0AC18E0171FA318C0173FA2EF7F80A2EFFF00 A24C5A16034C5A4C5A4C5A4C5AEEFFC003035B031F90C7FC90B65A16F816E0168003F8C8 FC343F78BE42>I<B8FCA690CAFCB3A390B612FCA690CAFCB3A590B71280A7293F78BE36> I<B712FEA690C9FCB3A490B612E0A690C9FCB3AB273F78BE34>I<EDFFF0020713FF023F 14E091B612F84915FE130749EB803F903A1FFC0003FCD93FF013004948143CD9FF80141C 4890C8120C491500485A12075B485AA2485AA2485AA3485AA448CAFCAA0307B5FCA36C7E A392C7127F6C7EA36C7EA26C7EA26C7E7F12036C7E7F6C7FEB7FE06D7ED91FFCEB01FF90 390FFF801F6D90B6FC13016D15FC023F14F002071400020013F030437AC03D>I<B4ED01 FEB3A990B7FCA690C81201B3AC2F3F78BE40>I<12FFB3B3B3A9083F78BE19>I<B4EEFF80 4C13004C5A4C5A4C5A4C5A4C5A4C5A4C5A4B90C7FC4B5A4B5A4B5A4B5A4B5A4B5A4B5A4A 90C8FC4A5A4A5A4A5A5D4A5A4A5A4A5A14FF497F497F5B497F90381FEFF8133F90387FC7 FCEBFF83EC03FE496C7E497E4980496D7E49133F4980496D7E90C7120F826F7E1503826F 7E8183707E163F83707E160F83707E160383707E821880EF7FC0323F78BE3F>75 D<B4FCB3B3B3A390B612F0A6243F78BE31>I<D8FFE0EE3FF8A36D167FA26D16FFA200FE 17FB6D1501A2017EED03F3A36DED07E3A36D6CEC0FC3A26E141F010F1683A26E143F0107 1603A26E147F0103157E6E14FEA2010115FC6E1301A2010015F86E1303027E14F0027F13 07A26E14E0ED800FA2021F14C0EDC01F020F1480A2EDE03F02071400A26F5A0203137EA2 6E6C5AA3913800FDF8A215FF6F5AA26F5AA36F5A92C8FCA23D3F77BE50>I<D8FFF015FE A27FA27FA27F12FE137FA280133F80131F80130F80130780130380130180130080808114 3F81141F81140F81140781140381140181140081811680153F16C0151F16E0150F16F015 0716F8150316FC1501A2ED00FE16FF167FA2163FA2161FA22F3F78BE40>I<4AB47E020F 13F0027F13FE91B6FC010315C04981011F010013F8D93FF8EB1FFCD97FE0EB07FE4A1303 49486D7E4890C813804848ED7FC049153F4848ED1FE04848ED0FF0A24848ED07F8A24915 03003F17FCA2491501007F17FEA390CAFC4817FFAC6D5D007F17FEA46D1503003F17FCA2 6D1507001F17F86D150F000F17F06D151F6C6CED3FE0A26C6CED7FC06C6CEDFF806C6D49 13006E5BD97FF0EB0FFE6D6C495A6DB4EBFFF8010790B512E06D5D010092C7FC6E5B020F 13F00201138038437BC043>I<B612F015FEEDFFC08216F890C7EA3FFCED07FEED01FF6F 1380167FEE3FC0EE1FE0A2160F17F01607A6160F17E0161FA2EE3FC0167FEEFF804B1300 ED07FEED3FFC90B65A5E16C093C7FC15FC90CAFCB3A92C3F78BE3A>I<4AB47E020F13F0 027F13FE91B6FC010315C04981011F010013F8D93FF8EB1FFC49486D7E02C0130349486D 7E4890C813804848ED7FC049153F4848ED1FE0000F17F049150F001F17F8491507A24848 ED03FCA34848ED01FEA448CA12FFAD6C6CED01FEA56C6CED03FCA26D9038FF8007001F02 7F14F8ED3FC06C6C9138E00FF06D90381FF01F0007020F14E06DECF83F6C6C903907FC7F C06C6C903903FEFF806C6D6CB5120014C06D6C6C5BD93FF86D5A6DB4495A010790B512E0 6D8101008180020FEBF7FC0201EB83FE91C7EA03FF8270138018C0EF7FE0173FEF1FF018 F8EF0FFC384C7BC043>I<B612F015FF16C016F016FC90C7EA3FFEED03FF03001380EE3F C0EE1FE0160F17F0160717F81603A5160717F0160FA2EE1FE0EE3FC016FF03031380031F 130090B65A16F85E16C04BC7FC5DEB0001811400816F7E153F82151F826F7EA26F7E1503 826F7EA26F7EA2EE7F80163F17C0EE1FE0A2EE0FF0A2EE07F8EE03FCA2EE01FE2F3F78BE 3B>I<ECFFF0010713FF011F14C0017F14F890B67E5A48EB803F3A07FC0007F848481301 D81FE0EB0078491438003F15184991C7FCA248CAFCA67FA26C7E7F7F6C7EEA0FFEEBFFC0 6C13FC6CEBFFC06C14F86C14FE013F6D7E010F80010380D9003F7F02037F9138007FFC15 0F6F7E15018281821780163FA7EE7F0012601270007815FE007C1401007F4A5AD8FFC013 0701F0EB1FF801FFEB7FF06C90B55A001F5D000792C7FC00015CD8003F13F8010113C029 437CC033>I<B912FEA6C890C8FCB3B3B3A2373E7DBD3E>I<B4ED01FCB3B3AB6C6CEC03F8 A36C6CEC07F0A26C6CEC0FE0A26C6CEC1FC06D143F6C6CEC7F806C6CECFF003A01FF8003 FE6C9038E01FFC6DB55A011F14E001075C010149C7FC9038003FF02E4178BE3F>I<B46C EE1FC0007FEF3F807F003FEF7F00A27F001F17FE7F000F4C5AA27F00074C5AA26C6C4B5A A27F00014C5AA27F6C4C5A80017F4B5AA280013F4BC7FCA26D6C14FEA280010F4A5AA26D 6C5C1603A26D6C495AA26D6C5C160FA26D6C5C161FA2DA7F805B163FDA3FC090C8FC5EA2 91381FE07E16FE020F5B15F015F102075B15F902035B15FB15FF6E5BA26E5BA36F5A3A3F 7FBE3D>I<B4DB07FEED0FE06C6C1AC01B1F4C7E6C6C1A801B3F5EEFBF806C6C033F1600 63163F6C6C6F6C147E1BFE167E846C6C030F5D1A0116FC6C6C705C0507140316F8030180 6C6C03035D1A07ED03F0846C6C03015D1A0FED07E0D97F806F5C0500141F5E030F80D93F C06F5C1A3F5E011F011F038090C7FC02E0153F6293C7FC010F49EDC07E02F0151F033E16 FE010760037EEC0FE0A2DAF87C15E101036003FC14074B15F1D901FC5FF003F3A25DD900 FDEEFBE01801DAFFE015FF027F5F84A25D023F5F197F533F7FBE56>I<D87FC0ED0FF86C 6CED1FF06D16E0001FEE3FC06C6C157F6C6CEDFF806C6C16004C5A6C6C14036C6D5C6D6C 495A160F6D6C495A6D6C5C6D6C495A167F6D6C5C6D6C49C7FC0101495A903800FF03ED83 FC91387FC7F8EC3FCF91381FEFF0EDFFE06E5B806E5B93C8FC6E5A814A7F5C824A7F9138 1FEFF015CF91383FC7F891387F83FC9138FF03FE150149486C7E49486D7E0107814A6D7E 4948131F49486D7E8349486D7E4948130301FF8191C76C7E48486E13800003167F484816 C049ED3FE04848ED1FF0001F17F849150F4848ED07FC007FEE03FE484816FF90C97E383F 7EBE3D>I<B46CEE1FC06D163F007FEF7F806C6CEEFF007F001F4C5A6C6C4B5A7F00074C 5A6C6C4B5A7F6C4C5A6C6D4A5A6E5D017F157F6D6C4AC7FC6E5C011F14016D6C495A6D6C 5C16076D6C495A6D6C5C161F6D6D485ADA7FC05B167F6E6C48C8FC6E6C5AEDF1FCEC0FFB 6EB45A5E806E5B5E806F5AB3A83A3F7FBE3D>I<EB0FF890B5FC00031480000F14E04814 F0A29038F00FF890388003FC381E0001001814FE00101300C812FF157FA7EC7FFF010FB5 FC137F48B6FC120748EBF07F383FFC0013C048C7FC12FE5AA315FF7E5C387F8007EBE01F 6CB6FCA26C147F6C13FC6C13F0000190C7FC202B7CA92C>97 D<12FEB3A414FF010713E0 011F7F017F7FB67E819038F80FFFEBE001D98000138090C7EA7FC0153F48141F16E0150F A3ED07F0AAED0FE0A3151FED3FC07E6DEB7F8015FFD9E00313009038F81FFE90B55A485C 6D5B6D5B010F1380260001FEC7FC244079BE2F>I<49B47E010F13F0013F13FC4913FF90 B612805A481300D807FCEB1F00D80FF0130748487F4990C7FC123F5B127F90C9FCA312FE AA127FA36C7EA26C6C14406DEB01C06C6C13036C6C131F01FF13FF6C90B5FC7E6C6C1480 6DEBFE00010F13F001011380222B7DA928>I<ED07F0B3A4EB07F8EB3FFF4913C748B512 F74814FF5A1480390FFC003FD81FF0131F49130F48481307A2485A90C7FCA312FEAA127F A37F003F140F7F6C6C131F6D133F6C6C137F9038FF01FF6C90B5FC6C14F76C14E76C1487 90383FFE07D90FF0C7FC24407DBE2F>I<EB03F8EB1FFF017F13C090B57E488048803807 FE07390FF801FC9038E000FE4848137E003F143E49133F90C77E5A127EED0F80B7FCA600 FCC9FCA37E127EA2127FA26C7EA26C7E6D14806C6C1303D807FC131F01FF13FF6C90B5FC 7E6C6C14006D13FC010F13E0010190C7FC212B7DA928>I<EC1FF0ECFFFC5B13075BA290 381FE03C90383F800491C7FC5B137E13FEADB6FCA6C648C7FCB3B01E407FBF1C>I<D903 FC133F90390FFF03FF013F13DF4990B5128090B7FC5A9026FE07FCC7FC3803F80148486C 7E49137EA248487FA86C6C137EA26D13FE6C6C485A3901FE07F848B5FC5D485C5DD80FCF 90C8FCEBC3FC0180C9FC7FA37F6CB512F015FF6C15C0824881001F81823A3FE0001FFED8 7F80130390C8FC48814881A46C5D6C5D01C01303D83FF0EB0FFCD81FFEEB7FF86CB65A6C 5D6C5DC692C7FC011F13F8010313C0293D7EA82D>I<12FEB3A449B4FC010713C0011F13 F0017F13F890B512FCB6FC9038F80FFEEBE003EBC00190388000FFA290C7127FA35AB3A9 203F79BE2F>I<12FFA81200AF127FB3B3A4083F7ABE16>I<EB03FCA890C7FCAFEB01FCB3 B3AE384003F8EA7007387C1FF0B5FC14E014C06C1380001F1300EA01FC165286BE18>I< 12FEB3A5EDFF804A13004A5A4A5A4A5A4A5A4A5A4A5A4A5A4990C7FC495A495A495A5C49 5A495A497E13FFB57E8013FBEBF1FCEBE0FE497E497E496C7E488048131F6E7E8114076E 7E8114016E7E157F1680153FED1FC016E0233F79BE2C>I<12FEB3B3B3A9073F79BE16>I< 26FC01FFECFF800107D9C00313E0011FD9F00F13F8017FD9F83F7F90B56C487F00FD92B5 FC3CFFF80FFFFC07FFD9E003EBF001496C497E496C49EB7F80A290C76C48133FA34892C7 FCB3A9392979A848>I<38FC01FF010713C0011F13F0017F13F890B512FC12FD39FFF80F FEEBE003EBC00190388000FFA290C7127FA35AB3A9202979A82F>I<EB01FE90380FFFC0 013F13F0497F90B57E000314FF14033A07F8007F804848EB3FC04848EB1FE049130F4848 EB07F0A290C712034815F8A2007E140100FE15FCA96C14036C15F8A36C6CEB07F06D130F A26C6CEB1FE06C6CEB3FC001FC13FF2607FF0313806C90B512006C5C6C5C013F13F0010F 13C0D901FEC7FC262B7DA92D>I<14FFD8FE0713E0011F7F017F7FB67E819038F80FFFEB E003D98000138090C7EA7FC0153F5AED1FE0A2150FA216F01507A8150F16E0A2151FA2ED 3FC06C147F6DEBFF805CD9E00313009038F81FFE90B55A485C6D5B6D5B010F1380D901FE C7FC90C9FCB1243B79A82F>I<903903F807F0EB1FFF017F13C790B512E74814F74814FF 481381390FFC007F4848133F49131F4848130F5B48481307A290C7FCA25A5AA87E7EA27F A26C7E150F6C6C131F6D133FD80FFC137F9038FF01FF6C90B5FC6C14F76C14E76C148790 383FFE07EB0FF090C7FCB1243B7DA82F>I<00FC137CEB03FC130F131F133F137FEBFFC0 38FDFE00EAFFF85B5B5BA25BA290C7FCA25AB3A6162979A81F>I<EB1FF890B512800003 14E04814F85A5A393FE00FF0EB8000007F143090C8FCA57F6C7E13F06CB4FC14F06C13FE 6C7F000114C06C14E0011F13F013019038001FF81407EC03FCA21401A3124012700078EB 03F8007E130738FFE01F90B512F015E06C14C0001F14800003EBFE0038003FF01E2B7EA9 23>I<EA01F8ACB612E0A6D801F8C7FCB3A77F152015E03800FE0790B512F0A27F6D13C0 6D1300EB0FF01C357EB321>I<00FE147FB3AC15FFA25C6C5B6C130FEBC03F90B6FC6CEB FE7F6C13FC6C13E0000390C7FC202979A72F>I<00FEDA7F80EB0FE0007F6F14C0181F15 FF6C6C6E148003FB143F140101C013F3001F6FEB7F00140315F1D80FE06E137E03E114FE 1407D807F0D9E0FC5B170115C0140FD803F8027E5B1703EC1F8000015F01FC143F170700 00D93F005C161F01FE1587023E148F017E5E027E130F17CFD93E7C5D013FEC07DFA21478 D91FF86DB4C7FCA25C010F5D16013B287FA73E>119 D<B415FE6CEC01FC7F003FEC03F8 7F121FED07F07F000FEC0FE07F1207ED1FC06C7E16806C6C133FA2ED7F006C7E157E017F 13FEA26D5B14815D131F14C190380FC3F0A2903807E3E014E7A201035BA2903801F780A2 EB00FF92C7FCA2147EA3147CA214FC5C13015CA213035C13075CEA200F383C1F80D83FFF C8FCA25B5BEA07F0273B7FA72A>121 D E /Fm 43 122 df<B612FEA71F077F9D27>45 D<EAFFC0AA0A0A758921>I<1738177CA217FC17F8A2160117F0A2160317E0A2160717C0 A2160F1780161F1700A25E163EA2167E167CA216FC5EA215015E15035EA215075EA2150F 5EA2151F93C7FCA25D153E157E157CA215FC5DA214015DA214035DA214075D140F5DA214 1F92C8FCA25C143EA2147E147CA214FC5CA213015C13035CA213075CA2130F5CA2131F91 C9FCA25B133E137E137CA213FC5BA212015BA212035BA212075B120F5BA2121F90CAFCA2 5A123EA2127E127CA212FC5AA212702E787AD93B>I<EC1FF891B5FC010314C04980011F 14F8498049809039FFF81FFF48D9C00313804A7E4890C713C04848EC7FE049143F4848EC 1FF0A249140F001F16F8491407A2003F16FCA2491403A2007F16FEA3491401A300FF16FF B3A6007F16FE6D1403A66C6CEC07FCA46C6CEC0FF8A26C6CEC1FF0A26D143F000716E06D 147F6C6CECFFC06C6D481380ECE0076CD9F81F13006DB55A6D5C6D5C6D5C010314C00100 91C7FCEC1FF830527BCF3B>I<14075C5C147F5C1307133F0007B5FCB6FCA413F913C1EA F8011200B3B3B3A4B712FEA7275075CF3B>I<EC7FF0903803FFFE010FEBFFC0013F8049 14F890B67E4881488148D9807F1380270FFC000F13C049010313E0484813004848EC7FF0 49143F007F16F849141FEE0FFC48C8FC1607127E003E16FE121E121C000C15031204C9FC A21607A317FCA2160F17F8A2EE1FF0A2EE3FE0167F17C0EEFF804B13004B5AA24B5A4B5A 4B5A4B5A4B5A4B5A4A48C7FC4A5A4A5A4A5A4A5A4A5A4A5A4AC8FC495A495A495A495A49 5A495A495A49C9FC485A485A485A485A485A48B712FE5AA82F507BCF3B>I<EC1FF849B5 FC010714E0011F80017F14FC90B67E00038148D9E00F138048D9000313C0D81FFC010013 E04848147F01E0EC3FF0485A6C48141F90C813F87E000E150F120C1204C9FC161FA217F0 A2163F17E0167FEEFFC0A24B13804B1300150FED3FFE913807FFFC0103B55A16E05E5E16 E016F88290C7EA1FFF03031380030013C0EE7FE0EE3FF0161F17F8EE0FFCA2EE07FEA3EE 03FFA90040ED07FE1260A20070150F00F816FC6C151FB416F86D143FD87FE0EC7FF0D83F F814FF01FE010313E0271FFFE00F13C06C90B61280000316006C5D6C5D013F14F0010F14 C0010191C7FC9038003FF830527BCF3B>I<ED07FF5DA25DA2153EA2157E5DA214015D14 0314075D140F5D141F4A5AA24A5AA24A5AA2495A13035C13075C130F495AA2495AA2495A 5C13FF4890C7FCA2485AA2485A485AA2485AA2485A127F5B485A90B812F0A7C8000190C7 FCB3A3344E7DCD3B>I<0007B712E0A801F8C9FCB3A2EC07F8EC3FFF91B512C001FB14F0 90B67E8216FFECF80FDAE0031380DA800013C091C7EA7FE05B49EC3FF049141F17F85BC9 EA0FFCA3160717FEABEE0FFCA212080018151F001C16F8123E007EED3FF0007F157F486C ECFFE0D87FE05B6D4913C0D83FFC010F1380271FFF803F13006C90B55A6C5D6C5D6C5D6C 6C14C0011F91C7FC010713FC9038007FE02F507BCD3B>I<ED3FF80203B51280020F14E0 143F5C49B6FC5B49EBC0074990C71260D91FFC1400EB3FF0495A5C495A4890C9FC5B1203 485AA2485AA25B121FA25B123FEDFF80D9C00F13E0007F013F13F891B57E01C38001C780 49158027FF9FF80713C09026BFC00113E09039FF80007F49C7EA3FF05B49EC1FF8160F49 15FC16074915FE16035BA2160117FFA5127FA6123FA26D15FE1603121F7FEE07FC120F6D 140F17F86C6C141F6DEC3FF06C6CEC7FE06C6D13FF6E4813C06CD9F80F13806DB612006D 5C6D5C6D5C6D5C010114C06D6C90C7FCEC0FF830527BCF3B>I<B9FCA9C9EA01FEEE03FC EE07F8A2EE0FF0EE1FE0EE3FC0167F178016FF4B13005E15034B5AA24B5A5E151F4B5AA2 4B5AA24B5AA25C93C7FC5C5D14075DA2140F5DA2141F5D143FA25D147FA35D14FFA35D5B A54990C8FCA75C1307AA304F7BCD3B>I<EC1FF849B57E010714E0011F14F8498090B7FC 48168048D9F00F13C048D9800113E049C7127FD80FF8EC1FF04848EC0FF8A24848EC07FC 491403A2007F16FE491401A86C6CEC03FCA26C6CEC07F8A26C6CEC0FF06D141F6C6CEC3F E06CB4ECFFC06CD9C00313806C90B61200013F14FC010F14F0010314C0A2011F14F84980 9039FFFC3FFF48D9C00313804890C713C04848EC7FE04848EC3FF049141F4848EC0FF848 48EC07FCA24848EC03FEA34848EC01FFA96D5C007F16FEA36C6CEC07FC6D140F001F16F8 6D141F6C6CEC3FF06D147F3B07FF8001FFE06CD9F00F13C06C90B612806C16006D5C6D5C 010F14F06D5C010091C7FCEC1FF830527BCF3B>I<EC1FF891B5FC010314C04980011F14 F8498049809039FFF00FFF48EBC00348D90001138048489038007FC05B4848EC3FE0001F 151F4915F04848140F17F85B007F150717FCA249140312FF17FEA416011603A217FFA512 7F7FA25E7F003F5D7F001F5D7F6C6C5C5E6C6C49B5FC9039FF8003FD6C9038E01FF96C90 B5EAF3FE6C15E36D14C36D14036D13FC010701F013FC0101EB000790C8FCA2EE0FF8A3EE 1FF0A2EE3FE0A2EE7FC016FF17804B13005D00034A5A6DEB1FFCD807E0495A9038FC01FF 48B65A16C0485D6C92C7FC00035CC614F8013F13E0010790C8FC30527BCF3B>I<ED03FF 4B7FA34B7FA34B7FA292383FDFF0169FA2037F7F168F160F03FF7F160715FE020180A216 03DA03FC7FA202076D7F15F8A2020F6D7F5DA2021F6E7E5DA2023F6E7E5DA2027F6E7E5D 02FF81170F92C7FC498217075C01036F7EA25C01076F7F5CA2010F6F7F5C011F8391B8FC A24983A34983A20280C8121F01FF83180F91C9FC48717E5B000384845B00071980845B00 0F19C0845B001F19E0197F5B003F19F0193F484818F8191F5B00FF19FC46537DD24D>65 D<EEFFF8030FEBFFE0037F14FC4AB71280020716E0141F5C91B812C049EC001F4901F813 014901E0EB003F490180140F4990C81203D93FFCED01804A92C7FC495A495A485BA2485B 91CBFC5A5B120F5B121F5BA2485AA3127F5BA412FF5BAD7F127FA47F123FA36C7EA27F12 0F7F12077F7E806C7FA26C7F6D6C16206D6C16606EED01E06DB415036D6D14076D01E0EC 1FF06D01F814FF6D01FF13076D91B6FC023F16E06E168002071600020115FC6E6C14F003 0F1480030001F8C7FC3C5778D44B>67 D<B712F8EEFF8017E017F817FE717E8401C0C700 3F13F004077F04007FEF3FFE717E05077F83717F717F727E183F85181F727EA2727EA272 7EA2841A80A2841AC0A3197FA21AE0AE1AC0A219FFA31A8060A21A0060A24E5AA24E5A18 1F61183F4E5A4E5A5F4D5B4D5B051F90C7FC4D5AEFFFFC04075B043F5B90B85A18804DC8 FC5F17E0178004F8C9FC435376D254>I<B912F8A801C0CAFCB3AA90B81280A701C0CAFC B3AD90B812FCA9365376D246>I<D8FFC0EE1FF8B3B290B9FCA701C0C9121FB3B3A43D53 76D252>72 D<EAFFC0B3B3B3B3AB0A5375D220>I<D8FFFCF07FFEA36D18FFA26D5FA36E 5E01BF18FBA26E1607019F18F36E160FA2018F18E36E161FA3D987F8EE3FC3A26E167F01 831883A26E16FF01811803A26E5D018017FE6F1403A2027F16FC6F1407A2023F16F86F14 0F021F16F0A26F141F020F16E06F143FA2020716C06F147FA2020316806F14FF02011600 A26F5B6E5DEE8003A2037F5CEEC007A2033F5CEEE00F031F5CA2EEF01F030F5CA2EEF83F 03075CA26F6C485AA3030191C7FC705AA26F6C5AA2705AA3705AA3705A93C9FCA24F5375 D266>77 D<B712E016FEEEFFC017F08317FE8301C0C780040F7F04017F707FEF3FF8717E 170F717EA2717EA2831980A283A65FA219005FA24D5AA24D5A171F4D5AEFFFF04C5B040F 5B93B55A90B8C7FC5F17F85F17C04CC8FC16E001C0CBFCB3B1395376D24A>80 D<B712E016FEEEFFC017F017FC17FF8401C0C76C7F040713F004007F173F717E717E1707 717E711380A28319C0A2187FA518FFA219805FA24D13004D5A170F4D5A4D5A17FF04075B 047F13C090B85A95C7FC17FC17F017C04CC8FC5E9039C00007FE15038281836F7F167F83 163F83707EA2707E160783707EA2707F8284717EA2717E171F84717EA2717EA2717E7113 80A27113C0A2F07FE0F03FF0A2F01FF83D5376D24B>82 D<913803FFC0023F13FE49B612 C0010715F04915FC013F15FF49168090B8FC489038FC007F4801E0010713004801801301 91C87ED80FFC814848811707484815024992C7FCA3485AA67FA2123F7F7FA26C7E13FF6C 7F6C13E014FC6CEBFFC06C14FC6CECFFC06D14F86D14FE010F6E7E6D81010115F0D9003F 80020780DA007F7F03077FED007F041F1380040713C082040013E0A2EF7FF0173FA2171F 18F8170FA8EF1FF0A212200070EE3FE0127C007E167F007FEEFFC001C05C01F04A1380D8 FFFC020F1300D9FF80EB3FFE9139F801FFFC6C90B65A001F5E00075E00015E6C6C92C7FC 010F14FC010114F0D9000F90C8FC35577BD441>I<BB12FEA8C800010180C8FCB3B3B3B3 A247527CD150>I<903801FFC0011F13F8017F13FE0003B67E000F814881829138007FF8 01F0EB1FFCD80FC0130F90C76C7E000E1403000C81C87EA26F1380AA0207B5FC91B6FC13 07133F90B7FC5A000714004813E04848C7FCEA3FF813E0485A5B48C8FCA55D7F6C6C5B6D 130F6D5B263FFE01B5FC90B7FC7E6C5C6C14F86C14E06C140026007FE090C7FC29387BB6 38>97 D<B47EB3ABEC07FC91383FFF800181B512E0018780019F8001BF8090B67E9138C0 7FFF9026FE000F138001F81303496D13C0497F49EC7FE05BEE3FF0161FA217F8160FA317 FC1607ABEE0FF8A4161F17F0163F17E06D147FEEFFC06D5B6D4913806D5B6D011F130090 39FF80FFFE91B55A01BF5C019F5C01875C01831480018049C7FCC7EA0FF02E5477D23C> I<EC0FFF027F13F049B512FC010714FF4915C0013F15E05B9038FFF801489039E0003FC0 480180130F91C71203484814014848EC0040491500485AA2485AA3485AA4485AAB6C7EA4 6C7EA26C7EA26D15206C6C15600007ED01E001FF14036C6DEB0FF06C01E0133F6C9038F8 03FF6DB6FC6D15E06D15800107ECFE00010114F86D6C13E0DA0FFEC7FC2C387CB634>I< EE07FCB3ABEC7FC0903803FFF8010F13FF4914C74914E74914FF90B7FC48EBFC0748EBE0 00480180137F91C7121F485A4848140F491407485AA25B127F5BA312FF5BAB7F127FA37F 123FA26D140F6C7E161F6C6C143F6D147F6C6C6C13FF6C6D5AECF80F6C90B512F76C15E7 6D14C7011F14076D13FE010313F001000180C7FC2E547CD23C>I<EC1FF0ECFFFE01036D 7E010F14E04980017F8090B67E489038F01FFEECC0074890380001FF48487F4848EC7F80 49143F484815C0161F485AEE0FE05B127F49140717F090B7FCB8FCA690CAFCA47FA2127F A27FA2123F7F121F7F6C6C15406D15C00007150101FF14076C6DEB1FE06C01E0137F6C90 38F803FF6DB6FC6D15C06D150001075C010114F86D6C13C0DA0FFCC7FC2C387CB634>I< DA3FE0EB07F0902601FFFC13FF0107EBFF0F4914BF4991B512F85B5B9026FFE03FEBC000 489026800FFCC7FC9038FE000300038149130148486D7EA348486E7EA86C6C4AC7FCA36C 6C495A6D130300015D9038FF800F6C9038E03FF84890B55A485D5E485D01F791C8FC01E1 13FC390FE03FE091CAFCA47FA2EA07FC90B612E016FF6C16C017F06C16FC830007824817 804817C001F8C7121FD83FE0020313E04848EC007F49153FEF1FF048C9FC170FA56D151F 6C6CED3FE06D157F6C6CEDFFC0D81FFC0203138001FF140F6C01F090B512006C90B65A00 0116F86C5E013F15C0010F92C7FC010114F8D9001F1380354F7DB53B>103 D<B47EB3ABEC07FC91387FFF800181B512E0018380018F80019F8013BF9039FFC07FFE90 38FE000F496D7E497F497F17805B815BA45BB3B1295377D23C>I<EAFFC0AAC7FCB3EA7F C0B3B3B10A5278D11C>I<EAFF80B3B3B3B3AB095377D21C>108 D<B4D907FEEC03FF9126 3FFFC0011F13E091B56C017F7F0103DAF801B512FC010FDAFC0780496E4880495D902A7F C03FFF3FE01F13809026FF000790387F800301FC6D9026FE000113C0496D497F6F167F49 4B15E0495D047F153F495DA4495DB3B14B3677B55E>I<B4EB07FC91387FFF8049B512E0 4980010F8049805B90397FC07FFE9038FE000F496D7E497F497F17805B815BA45BB3B129 3677B53C>I<EC0FFC91387FFF8049B512E0010714F84980013F14FF49819026FFF8077F 48D9E0017F48903980007FF091C7123FD807FCEC0FF8000F8249140748486E7EA248486E 7EA24980007F1780A349157F00FF17C0AB6C6CEDFF80A36D5C003F1700A26D5C001F5E6D 14076C6C4A5A6C6C4A5A6D143F6C6D495A6C9039E001FFE06CD9F8075B6DB65A6D92C7FC 6D5C010714F8010114E06D6C1380DA0FFCC8FC32387CB63B>I<91393FC007FC903801FF F8010713FE011FEBFF874914C74914E790B612F7489038FC07FF48EBE001489038C0007F 91C7123F485A49141F485A160F485A16075B127F5BA3485AAB7F127FA27FA2123F7F160F 6C7E6D141F6C6C143F6D147F6C6D13FF6CEBE001ECF80F6C90B512F76C15E76D14C7011F 14076D13FE010313F00100138091C7FCB3A42E4D7CB53C>113 D<B4EB01F0140F147F14 FF13035B5B5B90383FFE00EB7FF0EBFFC05C91C7FC13FCA25B5BA25BA25BA35BB3AD1C36 77B528>I<903803FFC0013F13FC90B6FC4815E04815F05A5A3A1FFC007FE001F0130F48 481303491300162048481400A57FA26C7E7F13FC381FFFE06C13FEECFFE06C14F86C14FE 6C806C6C1480011F14C0010714E0D9003F13F014019138007FF8151F150FED07FCA21503 A512700078EC07F8127C007F140F01E0EB3FF0D8FFFC13FF90B612E016C06C1580001F15 00000314FCC66C13F00107138026387DB62D>I<EB3FC0AFB712C0A726003FC0C7FCB3B2 6E134016C090391FF003E0ECF81F91B5FC6D14F0A26D14C06D14006D13F86D138024457E C32A>I<B46CECFF80B3B3A35DA25DA25D6D5B007F5C6D137FD9FC01B5FC6CB55A6C5C6C 14F06C14C06C49C6FC26007FE090C7FC293677B43C>I<B46CEDFF80A26C6C4A1300A27F 003F4B5AA27F001F4B5AA27F000F4B5AA26C6C4A5AA27F00034B5AA27F6C4B5AA26C6D5C 16FFA26D6C91C7FC5DA26D6C485AA36D6C485AA2010F5C14F8150F01075C14FC151F0103 5C14FE0101495AA3D900FF5B157FA2027F90C8FC5D6E5AA36E5AA231357EB436>I<B46C EDFF807F007F4B1300A27F003F4B5A7F001F15076D5D120F4C5A7F12076D4A5A12034C5A 7F7E6E495A7E5F6D6C13FFA294C7FC6D6C5AA2D91FF05B15035EEB0FF8150701075C14FC 0103495AA214FE01015C151F130002FF5BA26E485AA2EC3FBF93C8FC141F15BE15FE140F 5D1407A25DA25DA2140F5DA24A5AA2143F5DA24AC9FCA25C5CEA3001383E03FCEA3FFF5C 5C5C6C5B5CD803FECAFC314D7EB436>121 D E /Fn 14 121 df[<C212F8A48DA5C70003 03C0C9123FF5007F1E0F0C0180787E1F1F8B8B1F018BA27A7E8C8CA28CA28CA28C8EA28C A38CA38EA2E21FF0157FA67B7EA40A3F93C8FCA41C7FA21CFFA26363631B1F1B7F0807B5 FC95B8FCA99538C00007F2007F1B1F1B07878787A21C7FA21C3FA3FA7FC01C1FA2FAFF80 A6571300A299CAFCA369A26AA22107A3210F6AA2211FA2213FA2575AA221FFA26868565B A26868207F9DB5FC555C1F071F1F1F7F0C03B6FC1E3F0B1FB7FCC35AA66AA3>138 141 120 268 153 69 D[<BD12FCF4FFFCF5FFE01EFCF6FFC01FF01FFE797E20E0C70003 0380C86C15F80A0181E2003F14FF0B07810B0115E0776C8078807880788078808A78818E 7881A28E8B8EA37980A48EAA6AA3676AA26AA29CB65AA26A545D9FCAFC66545C545C545C 545C9BB612C0535D0B074ACBFC0B3F5C52B612F00A7F15C095BBCCFC1FF81FC054CDFC66 F6FF801FE00680C7000315F8E1003F14FE0A0F800A0315C07681766C807780778077808C 7781898D898D898DA38A8DAD8DACA1EB1FC0A1EB3FE08D8AA37880A1137FA114C0788178 18FF7C1580785F786F1500BB00FE6F6F5B796E495A7902FEEB1FFC799139FFC07FF80D07 92B55A0D015F796C5E0E1F5E0E034BC7FCD4001F14F8E7003F13C0>163 144 120 269 173 82 D<93B512FC037FECFFF00207B8FC023F17E091B912F84918FE01 07727E499126C0007F14E04901E0C7000F80496D020380496D020014FE6F6F7F90B57080 6F6F8085486E6F807380A27380A28885886C5CA26D4982886D5B6D5B010713C0010190CA FC90CCFCA90603B7FC050FB8FC0403B9FC167F0307BAFC153F4AB7EA807F020FEDE00002 3F02FCC7FC91B612E0010392C8FC4914FC011F14F04914C0495C90B548C9FC485C485C48 5C485C5A5D485CA24891CAFCA3B6FC5CA397B6FCA461806C60F107EF6C6E150F6F16CF6C 183F6FDB7F8F806C6EDBFF0F14E06C02FCDA03FE15FE6C6E91260FFC0791B5FC6C6E6CD9 3FF817806C923AF803FFF003013F91B6487E010FEF8000010394C77E010004FC141F021F 03F0140702010380DA007F1400DA000701F8CDFC695F79DD71>97 D[<ED1FF0017FB5FCB7FCA9EA003F1307A27FB3B296383FFFC00607B512FE063FECFFE0 4DB712F8050716FF051F17C0057F17F094B5D8C00F8004F301FCC714FE04F701E0023F7F 93B50080020F804DC86C14E005F80301804D6F804D707F05808294CA804C717F4C7180A2 4C71808BA27680A28B88A28BA28BA3888BA52080B02000A56764A267A3676467A2525CA2 67647062704D91C7FC704D5BA2714C5B7193B55A05F04B5CDCBFF84B5CDC1FFC030F5C4B 6CB44B91C8FC7001C0027F5B4B6C01F00103B55A4BC601FF013F14F04B6D90B712C04B01 1F94C9FC4B6D16FC4B010316F092C86C15804A030F02F8CAFC90CB49CBFC>113 144 121 270 129 I[<F53FE098B6FC4FB7FCA996C77E1B0FA287B3B294383FFF80040F B512FC93B71280030716E0031F16F8037F16FE4AB9128702074AC66C13C7021F02E00107 13F74A91C890B6FC4A01FC153F49B548150F4902E081494A81494A814991CA7E495B8749 498390B548835A5D5AA2485CA25A5D5AA35AA25D5AA5B6FCB07EA57E81A37EA27EA2817E A26C80A26C626C6E5F636D7F6D6D94B6FC6D606D6D1607705D6D6E4B81010102F0157F6D 6E92B712FE6E01FE020301EF91B512806E6D6C011F13CF020FDAF801B5120F020391B612 FE6E17F86E6C16E0030F16800301EDFC00DB003F14E0040049C74AC8FC>113 144 120 270 129 100 D<94387FFFC0040FB6FC93B712E0030716FC031F16FF037F17C0 4AB912F00207DAF80380021F912680003F13FE4A49C7000F7F4A01F802038049B5486E80 4902C06E6C7F494A6F7F4991C9FC49727F4949707F4B84498490B548707F5A4B19804885 5D481CC086481CE05D5A871DF05AA25D5AA21DF887A2B6FCA392BBFCA51DF00380CDFCA7 7EA4817EA37EA2817EA26CF307F06FF00FF87E816C1B1F6F19F06C1B3F6D6DF07FE06D7F F4FFC06D6E4C13806D6E5E6D02F04C13006D6EEE1FFE6D6E4C5A6D6C01FFEEFFF86E02E0 02035B6E02FC021F5B02079126FFC003B55A6E92B7C7FC020060033F17F8030F17E00301 1780DB003F03FCC8FC040315C0DC000F01F8C9FC5D5F7ADD6A>I[<EC3FC0ECFFF0010313 FC497F497F498049804980A290B67EA24881A86C5DA26D5CA26D5C6D5C6D91C8FC6D5B6D 5B010013F0EC3FC091CAFCB3A3ED1FF0017FB5FCB7FCA9EA003F1307A27FB3B3B3B0B912 80A9>49 144 119 271 65 105 D[<ED1FF0017FB5FCB7FCA9EA003F1307A27FB3B3B3B3 B3B3ACB912C0A9>50 143 119 270 65 108 D<DB3FE0912601FFFC943801FFFC017FB5 031FD9FFE0041FEBFFE0B792B600FC93B612FC060303FF030315FF060F04C0020F16C006 3F04F0023F16F095B86C91B87E4DD9FC036E49D9FC03804DD9C0006E49D9C000804D48C7 003F6D4948C7003F7FDD0FF86EDB0FF880D8003F4B48714848830107DB3FC06E9126C03F C06E804D484E5A6D4BC86F48C881DCE1FE6FDAE1FE814D61DCE3F8DEF3F884DCE7F0F0F7 F04D6F4B81DCEFC0F0FFC0A2DCFF804F84A294C993C9FCA24C61A34C61A44C61B3B3AFB9 00E090B900E090B912E0A9B35D77DCC2>I<DB3FE0913803FFFC017FB5033FEBFFE0B792 B612F8060715FE061F6F7E4E16E095B87E4DD9FC03804DD9C000804D48C76C7FDD0FF880 D8003FDB1FE08201074B486E804D5A6D03FEC881DCE1FC815F04E385EEE7F04D81EEEFC0 A2DCFF8084A294C9FCA25EA35EA45EB3B3AFB9D8E001B912C0A9725D77DC81>I<94381F FFF00407B612C0047F15FC0303B87E030F17E0037F17FC4ABAFC4A9126FC007F80020F02 C0010714E04A49C880027F01F8033F13FC91B5486F7F4902C003077F494A6F804991C96C 80494970804949717F49874949717FA290B548717F48884B83481D80A2481DC04B83481D E0A2481DF0A3484A7114F8A4481DFCA5B61BFEAF6C1DFCA56C6E4D14F8A36C1DF0A36C1D E06F5F6C1DC0A26C6E4D1480A26C1D006F5F6C646D6D4D5B6F94B5FC6D636D6D4C5C6D6E 4B5C6D6E4B5C6D02F0031F5C6D6E4B91C7FC6D6C01FE92B512FC6ED9FFC001075C6E02FC 017F5C020791B812C0020196C8FC6E6C17FC031F17F003031780DB007F03FCC9FC040715 C0DC001F01F0CAFC675F7ADD74>I<92261FFFF814F80203B638C001FC023FEDFC0791B8 121F010317FF130F013F9038F8001F4990C8FCD9FFF8153F4801E0150F48491503484981 4890CAFC197F4848173F191F485AA2007F180FA31907487EA27FA28002E0705A6E93C8FC 14FC14FF15F06CECFF8016FCEEFFF06CEEFF8018F06C17FE727E6C18E0856C18FC6C846C 727E6C856D84011F846D841303010084023F83140F020183EC001FDB007F16801603DC00 0F15C01700183F060F14E0007F1703486C82727E857F85857FA2857F1BC07FA27F1B806D 5F7F1B006E5E6E5F6E163F6E4C5A02FC4C5A6E03035B6E6C4A5B03F0023F5B03FF0107B5 5A01F991B7C7FCD9F07F16FCD9E01F16F0D9800716C0D9000193C8FC48D9003F14F8007C 020349C9FC4B5F78DD5C>115 D[<ED03FEA81507A5150FA4151FA3153FA2157FA215FFA2 5CA25C5CA25C5C5C5C91B5FC13035B131F017F91B712F00007BAFCBBFCA7C74AC9FCB3B3 AAF101FFB1616E17FE82A219076E17FC836EEE0FF871131F6E6EEB3FF071137F6E6EEBFF E06EDAFF0313C06E92B512806E1700033F5D6F5D03075D030015E0041F1480040001FCC7 FC>72 132 124 258 90 I<007FB86C49B712FEA9C792C9000F02C0C7FC6E6E030101F0 C8FC715F6E6E4B5B6E6E4B5B6E4E90C9FC6E6E5E71151F6E6E4B5A6E6E4B5A6E4E5A6F6E 495B72495B6F6E495B6F806F6E4990CAFC6F4C5A72495A6F6E495A6F6E495A6F03815B70 5E7014C307E75B7091B5CBFC705D705D705D6282705D715C838671807180718083718086 4D814D815F4D81874D814D81DDFFF3804C13E14C01C1804C0180814E6C804C6E804C487F 4C48824C486D804C486D804B496D804B497F73804B49834B90C86C804B486F804B48814B 486F804B48844C6F804A71804A496F804A49814A90CA814A487180023F7280010FB500E0 7080B8031FB812E0A9735C7CDB7B>120 D E /Fo 8 117 df<93B57E031F14FC92B77E02 0316F0020F16FC023F16FF4A8349B5D8800314E04901F8C7003F7F4901C0020F7F4990C8 00037FD91FFC6F7F49486F6C7E137F4A7013804948827313C05A4A821BE05AA285487FA3 8080806E5E8003C017C08103F85D03FE17806F6C5C6C6F160004F05C04FC4A5A6C6F5D70 6C13FFDDE0015B6CDCF8035BDDFC0F13C06DDBFF1F5B6D93B5C7FC19FC6D17F06D5F6D17 806D17E06D836D6C16FC6E16FF020F836E17E06E83020F83023F8391B97E4984010701F0 178049D9C07F16C0013FD9801F16E049EB00074948010116F048497F4849023F15F84849 140F4A6E15FC48160148496E6C14FE4A151F488391C9120348050014FF193F49838500FF 84854983A28586A3861BFEA27FA2007F1AFC7F1A7F1BF86C7FF2FFF06C7F6E4C13E06C6D 4C13C06C6D5E6E4C13806C6D4C13006C6D6CED7FFE6C02E04A485A013F01FC020F13F06D 9026FFC001B55A010791B712806D95C7FC010017FC021F16F002071680DA007F02FCC8FC 030191C9FC507378F061>56 D<96267FFFE01670063FB6ED01F80503B700F01403053F04 FC14074CB96C130F040706E0131F043F72133F93BA00FC137F0303DC00076D13FF030F03 C09039003FFF814B02FCC8000713C3037F02E0030113F792B600806F6CB5FC02034ACA12 1F4A02F8834A02E0834A4A1701027F4A8391B548CC7E494A85495C4C854988494A85494A 85495C8A4991CDFC90B54886A2484A1B7FA2481E3F5D481E1F5D5A1F0FA2485CA3481E07 5DA2F703F0489BC7FCA45DA2B6FCB27EA281A47EA2F703F06FF307F87EA36C80A21F0F7E 6F1CF07E6F1B1F7E20E06C6E1B3F816DF57FC06D80F7FF806D806D6E4F13006D6E616D52 5A826D6E4F5A6D6E4F5A6E6D6C4E5A021F6EF0FFE06E6E4D5B6E02F84D5B6E02FE050F90 C7FC02006E6CEE3FFE6F02F0EEFFFC031F02FE03035B6FDAFFC0021F13E0030303FF0103 B55A030093B7C8FC043F18FC040718F0040118C0DC003F94C9FC050316F8DD003F1580DE 007F01F0CAFC757A75F78C>67 D<92383FFFF80207B612E0027F15FC49B87E010717E001 1F83499026F0007F13FC4948C7000F7F90B502036D7E486E6D806F6D80727F486E6E7F84 86727FA28684A26C5C72806C5C6D90C8FC6D5AEB0FF8EB03E090CAFCA70507B6FC041FB7 FC0303B8FC157F0203B9FC021FECFE0391B612800103ECF800010F14C04991C7FC017F13 FC90B512F04814C0485C4891C8FC485B5A485B5C5A5CA2B5FC5CA360A36E5DA26C5F6E5D 187E6C6D846E4A48806C6D4A4814FC6C6ED90FF0ECFFFC6C02E090263FE07F14FE000191 39FC03FFC06C91B6487E013F4B487E010F4B1307010303F01301D9003F0280D9003F13FC 020101F8CBFC57507ACE5E>97 D<93387FFF80030FB512FC037FECFF804AB712E0020716 F8021F16FE027FD9F8077F49B5D8C000804991C7003F13E04901FC020F7F49496E7F4949 8049496E7F49496E7F90B55A48727E92C914804884485B1BC048841BE0485BA27313F05A A25C5AA21BF885A2B5FCA391BAFCA41BF002F8CCFCA67EA3807EA47E806CF103F0F207F8 6C7F1A0F6C6E17F06C191F6F17E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13806D6D4B13 006D6D6CEC0FFE6D02E0EC3FFC6D02F8ECFFF86D9126FFC00F5B023F91B65A020F178002 034CC7FC020016F8031F15E0030392C8FCDB000F13E04D507BCE58>101 D<903801FFFCB6FCA8C67E131F7FB3AD95380FFFE095B512FE05036E7E050F15E0053F15 F84D81932701FFF01F7F4CD900077FDC07FC6D80DC0FF06D80DC1FC07F4C48824CC8FC04 7E6F7F5EEDFDF85E03FF707F5EA25EA25EA293C9FCA45DB3B3A6B8D8E003B81280A86178 79F76C>104 D<902601FFFCEC7FFEB6020FB512F0057F14FE4CB712C0040716F0041F82 047F16FE93B5C66C7F92B500F0010F14C0C66C0380010380011F4AC76C806D4A6E8004F0 6F7F4C6F7F4C6F7F4C8193C915804B7014C0861DE0A27414F0A27414F8A47513FCA57513 FEAF5113FCA598B512F8A31DF0621DE0621DC0621D806F5E701800704B5B505B704B5B70 92B55A04FC4A5C704A5C706C010F5C05E0013F49C7FC9227FE7FFC01B55A70B712F0040F 16C0040393C8FC040015F8053F14C0050301F0C9FC94CCFCB3A6B812E0A85F6F7ACD6C> 112 D<902601FFF8EB07FEB691383FFFC094B512F00403804C14FE4C8093261FFC3F1380 93263FE07F13C0DC7F80B5FCC66C5D011FDAFE0114E06DEBF9FC16F815FB16F016E015FF 16C07114C05E72138095381FFE0093C76C5AF001E095C8FCA25DA65DB3B3A2B812F8A843 4E7ACD4F>114 D<15FFA75CA55CA45CA25CA25CA25CA25C91B5FCA25B5B5B131F5B90B9 FC120FBAFCA6D8000791C9FCB3B3A3F01FE0AE183F7014C07F187F7014806D16FF826D4B 13006E6D485AEEFE0F6E90B55A020F5D6E5D020115C06E6C5C031F49C7FC030113F03B6E 7CEC4B>116 D E /Fp 82 125 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901 FC90383FF03FD907F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00 EF003E01FE6D91C7FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339 407FBF35>11 D<4AB4FC021F13C091387F01F0903901FC0078D907F0131C4948133E4948 13FF49485A137F1400A213FE6F5A163893C7FCAA167FB8FCA33900FE00018182B3AC486C ECFF80007FD9FC3F13FEA32F407FBF33>I<4AB47E021F13F791387F00FFEB01F8903807 F001EB0FE0EB1FC0EB3F80137F14008101FE80AEB8FCA3C648C77EB3AE486CECFF80007F D9FC3F13FEA32F407FBF33>I<4AB4ECFF80021FD9C00F13E0913B7F01F03F80F8903C01 F80078FE003CD907F0D93FF8130E49484948131F49484948EB7F804948484913FF137F02 005CA201FE92C7FC6FED7F0070141C96C7FCAAF13F80BBFCA3C648C76CC7FC197F193FB3 AC486C4A6CEB7FC0007FD9FC3FD9FE1FB5FCA348407FBF4C>I<001E130F397F803FC000 FF137F01C013E0A201E013F0A3007F133F391E600F3000001300A401E01370491360A300 0114E04913C00003130101001380481303000EEB070048130E0018130C0038131C003013 181C1C7DBE2D>34 D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312 011380120313005A120E5A1218123812300B1C79BE19>39 D<1430147014E0EB01C0EB03 801307EB0F00131E133E133C5B13F85B12015B1203A2485AA2120F5BA2121F90C7FCA25A A3123E127EA6127C12FCB2127C127EA6123E123FA37EA27F120FA27F1207A26C7EA21201 7F12007F13787F133E131E7FEB07801303EB01C0EB00E014701430145A77C323>I<12C0 7E12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA27FA2133F7FA21480130FA214 C0A3130714E0A6130314F0B214E01307A614C0130FA31480A2131F1400A25B133EA25BA2 137813F85B12015B485A12075B48C7FC121E121C5A5A5A5A145A7BC323>I<1506150FB3 A9007FB912E0BA12F0A26C18E0C8000FC9FCB3A915063C3C7BB447>43 D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A 120E5A1218123812300B1C798919>I<B512FEA617067F961E>I<121EEA7F80A2EAFFC0A4 EA7F80A2EA1E000A0A798919>I<ED0180ED03C01507A21680150FA216005DA2151E153E A2153C157CA2157815F8A25D1401A25D1403A25D1407A25D140FA24AC7FCA2141E143EA2 143C147CA2147814F8A25C1301A25C1303A25C1307A25C130FA291C8FC5BA2131E133EA2 5BA2137813F8A25B1201A25B1203A25B1207A25B120FA290C9FC5AA2121E123EA2123C12 7CA2127812F8A25A1260225B7BC32D>I<EB01FE90380FFFC090383F03F090387C00F849 137C48487F48487F4848EB0F80A2000F15C04848EB07E0A3003F15F0A290C712034815F8 A64815FCB3A26C15F8A56C6CEB07F0A3001F15E0A36C6CEB0FC0A26C6CEB1F8000031500 6C6C133E6C6C5B017C5B90383F03F090380FFFC0D901FEC7FC263F7DBC2D>I<EB01C013 031307131F137FEA07FFB5FC139FEAF81F1200B3B3ACEB7FF0B612F8A31D3D78BC2D>I< EB07FC90383FFF8090B512E03903F01FF83907C007FC390F0001FE001E6D7E001C158000 3CEC7FC05AED3FE01270B4FC6DEB1FF07FA56C5A6CC7FC120CC813E0153FA216C0157F16 8015FF16004A5A5D4A5A4A5A5D4A5A4A5A4AC7FC147E147C5C495A495A495A495A49C712 70133E133C5B4914E0485A485A485A48C7120148B6FCA25A4815C0B7FCA3243D7CBC2D> I<EB07FC90383FFF809038F80FE03901E003F839078001FCD80F007F000E6D7E001E1580 D81F80137F486C14C07FA27F5BA2121F6C5AC8138015FF1600A24A5AA24A5A5DEC07E04A 5A023FC7FCEB1FFCECFF809038000FE0EC07F86E7E6E7E6E7E1680ED7FC0A216E0153FA2 16F0A2120C123F487E487EA316E0A249137F6CC713C01278EDFF807E6C4913006C495A39 07C007FC3903F80FF0C6B55A013F1380D907F8C7FC243F7CBC2D>I<150E151E153EA215 7EA215FE1401A21403EC077E1406140E141CA214381470A214E0EB01C0A2EB0380EB0700 A2130E5BA25B5BA25B5B1201485A90C7FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00AC 4A7E49B6FCA3283E7EBD2D>I<00061403D80780131F01F813FE90B5FC5D5D5D15C092C7 FC14FCEB3FE090C9FCACEB01FE90380FFF8090383E03E090387001F8496C7E49137E497F 90C713800006141FC813C0A216E0150FA316F0A3120C127F7F12FFA416E090C7121F12FC 007015C012780038EC3F80123C6CEC7F00001F14FE6C6C485A6C6C485A3903F80FE0C6B5 5A013F90C7FCEB07F8243F7CBC2D>I<EC1FE0ECFFF8903803F03E90380FC00F90391F00 0780133E017EEB1FC049133F4848137F12035B12074848EB3F80ED1F00001F91C7FC5BA2 123FA3485AA214FE903887FF8039FF8F07E090389C01F09038B800FC01B0137E13F0497F 16804914C0A2ED1FE0A34914F0A5127FA6123F6D14E0A2121FED3FC0A26C6C1480A20007 EC7F006C6C137E6C6C5B6C6C485A90387E07F06DB45A010F1380D903FCC7FC243F7CBC2D >I<1238123C123F90B612FCA316F85A16F016E00078C712010070EC03C0ED078016005D 48141E151C153C5DC8127015F04A5A5D14034A5A92C7FC5C141EA25CA2147C147814F8A2 13015C1303A31307A3130F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D>I<EB03FC90 381FFF8090387C07E09038F001F83901E0007C48487F48487F48C7FCED0F80121E16C000 3E1407A4123FA26DEB0F807F6C6C131F6D140001FC133E6C6C5B9038FF80786C6D5A6CEB F3E06CEBFF806C91C7FC133F6D13C06D7F013F13F801787F48486C7E3903E01FFF48486C 1380260F800313C048487E489038007FE0003E143F007E141F007CEC0FF01507481403A3 1501A46C15E0007C1403A2007E15C06C14076CEC0F806DEB1F006C6C133ED807F05B3901 FC03F86CB512E0011F1380D903FCC7FC243F7CBC2D>I<EB03FCEB1FFF90387E07C09038 FC03F048486C7E48486C7E4848137C000F147E4848137F81003F15805B007F15C0A2151F 12FF16E0A516F0A5127F153FA36C7EA2001F147F120F6C6C13FF6D13DF000313013900F8 039F90387E0F1FD91FFE13E0EB07F090C7FCA2ED3FC0A41680157FD80F801400487E486C 13FEA24A5A5D49485AEB8007391E000FE0001F495A260FC07FC7FC3803FFFE6C13F83800 3FC0243F7CBC2D>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2EA FFC0A4EA7F80A2EA1E000A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FC B3121E127FEAFF80A213C0A4127F121E1200A412011380A3120313005A1206120E120C12 1C5A1230A20A3979A619>I<EB1FF890B5FC3903E01FC0390F0007F0001EEB03F848EB01 FC4814FE140000FE14FF7E7FA46CC7FC123EC7EA01FEA2EC03FCEC07F815F0EC0FC0EC1F 80EC3F00143E5C147814F85C13015CA2495AA25CAB91C7FC90C8FCA8EB0780EB1FE0A249 7EA46D5AA2EB078020407BBF2B>63 D<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A291 3801C7FC15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D 7EA349486D7E91B6FCA249819138800001A249C87EA24982010E157FA2011E82011C153F A2013C820138151FA2017882170F13FC00034C7ED80FFF4B7EB500F0010FB512F8A33D41 7DC044>65 D<B712FCEEFF8017F00001903980000FF86C6CC7EA03FE707E701380EF7FC0 EF3FE0A2EF1FF0A218F8A3170F171FA318F0A2EF3FE0177F18C0EFFF804C1300EE03FCEE 0FF8EE7FE091B6C7FC17E091C7EA07FCEE01FE933800FF80EF7FC0EF3FE0EF1FF018F817 0F18FC1707A218FEA718FC170FA2EF1FF818F0173FEF7FE0EFFFC00403138048486C9038 0FFE00B85A17E094C7FC373E7DBD40>I<DB3FF01306912603FFFE130E020F9038FF801E 913A3FF007E03E9139FF8000F8D903FEC7EA7C7ED907F8EC1EFE4948140FD93FE0140749 481403495A91C812014848150012034848167E5B000F173EA24848161EA2123F5B180E12 7FA349160012FFAC127F7F180EA2123FA27F001F171E181C6C7EA20007173C6D16386C6C 1678000117706C6C16F06EEC01E06D6C15C06D6C1403D90FF0EC07806D6CEC1F00D903FE 143E902600FF8013F891393FF007F0020FB512C0020391C7FC9138003FF037427BBF42> I<B712FCEEFF8017E000019039C0001FF86C6C48EB03FEEE00FF717E717EEF0FE084717E 717E170184717EA21980187F19C0A3F03FE0A519F0AB19E0A5F07FC0A21980A218FF1900 4D5AA24D5A6017074D5A4D5AEF7FC04DC7FCEE03FE48486CEB1FF8B85A178004FCC8FC3C 3E7DBD45>I<B912E0A300019038C000016C6C48EB001FEF0FF01703A217011700A31870 A41838161CA41800A2163CA2167C16FC150391B5FCA3EC80031500167C163CA2161CA218 07A3180E93C7FCA4181E181CA2183CA2187CA218F8170117031707171F48486CEB01FFB9 12F0A3383E7DBD3E>I<B91280A300019038C000036C6C48EB007FEF1FC0170F1707A217 03A31701A4EF00E0A21638A31800A31678A216F81501150791B5FCA3EC80071501150016 78A21638A693C8FCAF3801FFE0B612F0A3333E7DBD3B>I<DB3FE0130C912603FFFE131C 021F9038FF803C913A7FF00FC07C9139FF0001F0D903FC90380078FC4948143DD91FE014 1F4948140F4948140701FF15034890C8FC491501485A000716005B000F177C5B001F173C A2485AA2181C127FA25B95C7FC12FFAB041FB512F0127FA26D9139000FFE00EF03FC123F A27F121FA26C7EA212077F12036C7E7F6C7F6D6C14076D7E6D6C140FD907F8141ED903FE EC3C7C902600FF80EBF83C913A7FF007F01C021FB5EAC00C020391C8FC9138003FF03C42 7BBF47>I<B6D8C01FB512F8A3000101E0C7383FFC0026007F80EC0FF0B3A691B7FCA302 80C7120FB3A92601FFE0EC3FFCB6D8C01FB512F8A33D3E7DBD44>I<B612F0A3C6EBF000 EB3FC0B3B3B2EBFFF0B612F0A31C3E7EBD21>I<B600C090387FFFFCA3000101E0C7000F 138026007F80913807FE0018F818E0604D5A4DC7FC173E5F5F4C5A4C5A4C5A4C5A4CC8FC 163E5E5E4B5A4B5AED07804B7E151F4B7E4B7E15FF913881EFF8913883C7FCEC87879138 8F03FE91389E01FF14BCDAF8007F4A6D7E5C4A6D7E4A6D7EA2707E707EA2707E707EA270 7F717E84173F717E717EA2717E848419802601FFE04A13C0B600C090B6FCA3403E7DBD47 >75 D<B612F8A3000101E0C9FC38007F80B3B0EF0380A517071800A45FA35FA25F5F5F4C 5A160748486C133FB8FCA3313E7DBD39>I<B500C093383FFFF0A300016D93387FF800D8 007F18E0D977F016EFA3D973F8ED01CFA2D971FCED038FA3D970FEED070FA26E150E80A2 6E6C141CA36E6C1438A26E6C1470A36E6C14E0A26E6CEB01C0A36E6CEB0380A36E6CEB07 00A2037F130EA36F6C5AA26F6C5AA36F6C5AA25FED07F0A2923803F9C0A36FB45AA26F90 C7FCA213F8486C147ED807FFEF3FF8B500F8013C011FB512F0A34C3E7DBD53>I<B56C91 B512F88080D8007F030713006EEC01FC6E6E5A1870EB77FCEB73FEA2EB71FF01707FA26E 7E6E7EA26E7E6E7EA26E7E6E7EA26E7E6E7FA26F7E6F7EA26F7E6F7EA26F7E6F7EA26F7E 6F1380A2EE7FC0EE3FE0A2EE1FF0EE0FF8A2EE07FCEE03FEA2EE01FF7013F0A2177F173F A2171F170FA2170701F81503487ED807FF1501B500F81400A218703D3E7DBD44>I<ED7F E0913807FFFE91391FC03F8091397E0007E04948EB03F8D907F0EB00FE4948147F49486E 7E49486E7E49C86C7E01FE6F7E00018349150300038348486F7EA248486F7EA2001F1880 49167F003F18C0A3007F18E049163FA300FF18F0AC007F18E06D167FA4003F18C0A26C6C EEFF80A36C6C4B1300A26C6C4B5A00035F6D150700015F6C6C4B5A6D5E6D6C4A5A6D6C4A 5A6D6C4AC7FC6D6C14FED901FCEB03F8D9007FEB0FE091391FC03F80912607FFFEC8FC91 38007FE03C427BBF47>I<B712F8EEFF8017E000019039C0003FF86C6C48EB07FCEE01FE 707EEF7F80EF3FC018E0A2EF1FF0A218F8A818F0A2EF3FE0A218C0EF7F80EFFF004C5AEE 07FCEE3FF091B612C04CC7FC0280C9FCB3A73801FFE0B612C0A3353E7DBD3E>I<ED7FE0 913807FFFE91391FC03F8091397F000FE0D901FCEB03F8D907F0EB00FE4948147F49486E 7E49486E7E49C86C7E498248486F7E49150300038348486F7EA2000F834981001F1880A2 4848EE7FC0A3007F18E0A249163FA200FF18F0AC007F18E0A26D167FA3003F18C0A26C6C EEFF80A3000F18006D5D0007DA0F805B6C6C90393FE003FCED70706C6C496C485A6C6C48 486C485A017FD9800E5BD93F819038061FC0D91FC19038073F80D90FE14AC7FCD907F1EB 03FE902601FDC013F8903A007EE007E091271FF03FC013180207B5FC9139007FE1E0DB00 01143883711378A2706C13F0EFFF0318FFA27113E0A37113C0711380711300715AEF01F8 3D527BBF47>I<B712C016FCEEFF800001D9C00013E06C6C48EB1FF0EE07FCEE01FE707E 84717EA2717EA284A760177F606017FF95C7FCEE01FCEE07F8EE1FE0EEFF8091B500FCC8 FC16F091388001FCED003FEE1FC0707E707E83160383160183A383A484A4F0C004190EA2 8218E0057F131E2601FFE0161CB600C0EB3FF094381FF83805071370CA3801FFE0943800 3F803F407DBD43>I<D907FC130C90391FFF801C017FEBF03C3901FC03F83A03F0007E7C D807C0EB1FFC4848130F001F140748C71203003E1401007E1400A2007C157C12FCA2163C A36C151CA27EA26C6C14007F7FEA3FF8EBFF806C13F86CEBFF806C14F06C14FC6C14FF6C 15C0013F14E0010714F0EB007F020713F89138007FFC150FED07FE15031501ED00FFA200 E0157FA3163FA27EA3163E7E167E6C157C6C15FC6C15F86D13016DEB03F06DEB07E0D8F9 FCEB0FC03AF07F803F8090391FFFFE00D8E00713F839C0007FC028427BBF33>I<003FB9 1280A3903AF0007FE001018090393FC0003F48C7ED1FC0007E1707127C00781703A30070 1701A548EF00E0A5C81600B3B14B7E4B7E0107B612FEA33B3D7DBC42>I<B600C090B512 F8A3000101E0C70007130026007F80EC01FC715A1870B3B3A4013F16F06E5DA21701011F 5E80010F15036E4A5A010793C7FC6D6C5C6D6C141E6D6C5C027F14F86E6C485A91390FF0 0FE00203B51280020049C8FCED1FF03D407DBD44>I<B691380FFFFEA3000301E0020113 E06C01809138007F806CEF3F00017F163E181C6E153C013F1638A26E1578011F1670A26D 6C5DA26E140101075EA26E140301035EA26D6C4AC7FCA2806D150EA26F131E027F141CA2 6F133C023F1438A26E6C5BA26F13F0020F5CA2EDF80102075CA26E6C485AA2EDFE070201 91C8FCA26F5A6E130EA2ED7F9CA216DCED3FF8A36F5AA36F5AA26F5AA36F5A3F407EBD44 >I<B500FE017FB5D88007B5FCA3000301C0010101E0C713F86C90C849EC3FE07148EC0F 807E7215006E143F017F190E84A26D6C60A24D7E6D6C60A2EFE7F86D6C60A2933801C3FC 6E18F001076104037F6E0281140101036104077F17006D6C4D5AA2040EEB7F806D6C4DC7 FCA24CEB3FC0DA7F80160EA24CEB1FE003C0161E023F171C047814F0DBE070010F133C02 1F173804F014F84C1307DA0FF05EA2DBF1C0EB03FCDA07F95EA2DBFB80EB01FEDA03FF6F 5AA293C8FCA26E5FA24B157F020094C8FCA24B81037C153EA20378151E0338151C58407E BD5D>I<007FB5D8C003B512E0A3C649C7EBFC00D93FF8EC3FE06D48EC1F806D6C92C7FC 171E6D6C141C6D6C143C5F6D6C14706D6D13F04C5ADA7FC05B023F13036F485ADA1FF090 C8FC020F5BEDF81E913807FC1C163C6E6C5A913801FF7016F06E5B6F5AA26F7E6F7EA282 82153FED3BFEED71FF15F103E07F913801C07F0203804B6C7EEC07004A6D7E020E6D7E5C 023C6D7E02386D7E14784A6D7E4A6D7F130149486E7E4A6E7E130749C86C7E496F7E497E D9FFC04A7E00076DEC7FFFB500FC0103B512FEA33F3E7EBD44>I<B66C0103B51280A300 0101F0C8EBF8006C6C48ED3FC0725A013F041EC7FC6D7E606D6C15386D6C1578606D6C5D 6E14016D5E6D6D1303606E6C49C8FC6E6C5B170E6E6C131E171C6E6C5B6E6C137817706E 6C13F06F5B6E13016EEB83C05FED7FC7DB3FE7C9FC16EFED1FFE5E150F6F5AB3A4ED1FFC 020FB512FCA3413E7FBD44>I<003FB712F8A391C7EA1FF013F801E0EC3FE00180EC7FC0 90C8FC003EEDFF80A2003C4A1300007C4A5A12784B5A4B5AA200704A5AA24B5A4B5AA2C8 485A4A90C7FCA24A5A4A5AA24A5AA24A5A4A5AA24A5A4A5AA24990C8FCA2495A4948141C A2495A495AA2495A495A173C495AA24890C8FC485A1778485A484815F8A2484814011603 4848140F4848143FED01FFB8FCA32E3E7BBD38>I<EAFFFCA4EAF000B3B3B3B3ABEAFFFC A40E5B77C319>I<486C13C00003130101001380481303000EEB070048130E0018130C00 38131C003013180070133800601330A300E01370481360A400CFEB678039FFC07FE001E0 13F0A3007F133FA2003F131F01C013E0390F0007801C1C73BE2D>I<EAFFFCA4EA003CB3 B3B3B3ABEAFFFCA40E5B7FC319>I<EB0FF8EBFFFE3903F01F8039078007E0000F6D7E90 38E001F8D81FF07F6E7EA3157F6C5AEA0380C8FCA4EC1FFF0103B5FC90381FF87FEB7F80 3801FC00EA07F8EA0FE0485A485AA248C7FCEE038012FEA315FFA3007F5BEC03BF3B3F80 071F8700261FC00E13CF3A07F03C0FFE3A01FFF807FC3A003FC001F0292A7DA82D>97 D<EA01FC12FFA3120712031201B1EC03FC91381FFF8091387C07E09039FDE001F09039FF C000FC4A137E91C77E49158049141F17C0EE0FE0A217F0A2160717F8AA17F0A2160FA217 E0161F17C06D1580EE3F006D5C6E13FE9039F3C001F89039F1E003F09039E0780FC09026 C03FFFC7FCC7EA07F82D407EBE33>I<49B4FC010F13E090383F00F8017C131E4848131F 4848137F0007ECFF80485A5B121FA24848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3 003FEC01C07F001F140316806C6C13076C6C14000003140E6C6C131E6C6C137890383F01 F090380FFFC0D901FEC7FC222A7DA828>I<ED01FC15FFA3150715031501B114FF010713 E190381F80F990387E003D49131FD803F81307485A49130348481301121F123F5B127FA2 90C7FCA25AAA7E7FA2123FA26C7E000F14037F000714076C6C497E6C6C497ED8007C0179 13F890383F01F190380FFFC1903A01FE01FC002D407DBE33>I<EB01FE90380FFFC09038 3F03F09038FC01F848486C7E4848137E48487F000F158049131F001F15C04848130FA212 7F16E090C7FCA25AA290B6FCA290C9FCA67EA27F123F16E06C7E1501000F15C06C6C1303 6DEB07806C6C1400C66C131E017E5B90381F80F8903807FFE0010090C7FC232A7EA828> I<EC1FC0EC7FF8903801F83C903807E07E90380FC0FFEB1FC1EB3F811401137FEC00FE01 FE137C1500AEB6FCA3C648C7FCB3AE487E007F13FFA320407EBF1C>I<167C903903F801 FF903A1FFF078F8090397E0FDE1F9038F803F83803F001A23B07E000FC0600000F6EC7FC 49137E001F147FA8000F147E6D13FE00075C6C6C485AA23901F803E03903FE0FC026071F FFC8FCEB03F80006CAFC120EA3120FA27F7F6CB512E015FE6C6E7E6C15E06C810003813A 0FC0001FFC48C7EA01FE003E140048157E825A82A46C5D007C153E007E157E6C5D6C6C49 5A6C6C495AD803F0EB0FC0D800FE017FC7FC90383FFFFC010313C0293D7EA82D>I<EA01 FC12FFA3120712031201B1EC01FE913807FFC091381E07E091387803F09138E001F8D9FD C07F148001FF6D7E91C7FCA25BA25BB3A6486C497EB5D8F87F13FCA32E3F7DBE33>I<EA 01E0EA07F8A2487EA46C5AA2EA01E0C8FCACEA01FC127FA3120712031201B3AC487EB512 F0A3143E7DBD1A>I<1478EB01FEA2EB03FFA4EB01FEA2EB00781400AC147FEB7FFFA313 017F147FB3B3A5123E127F38FF807E14FEA214FCEB81F8EA7F01387C03F0381E07C0380F FF803801FC00185185BD1C>I<EA01FC12FFA3120712031201B292B51280A392383FFC00 16E0168093C7FC153C5D5D4A5AEC07C04A5A4AC8FC143E147F4A7E13FD9038FFDFC0EC9F E0140F496C7E01FC7F496C7E1401816E7E81826F7E151F826F7EA282486C14FEB539F07F FFE0A32B3F7EBE30>I<EA01FC12FFA3120712031201B3B3B1487EB512F8A3153F7DBE1A> I<2701F801FE14FF00FF902707FFC00313E0913B1E07E00F03F0913B7803F03C01F80007 903BE001F87000FC2603F9C06D487F000101805C01FBD900FF147F91C75B13FF4992C7FC A2495CB3A6486C496CECFF80B5D8F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF 903807FFC091381E07E091387803F000079038E001F82603F9C07F0001138001FB6D7E91 C7FC13FF5BA25BB3A6486C497EB5D8F87F13FCA32E287DA733>I<14FF010713E090381F 81F890387E007E01F8131F4848EB0F804848EB07C04848EB03E0000F15F04848EB01F8A2 003F15FCA248C812FEA44815FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6C EB07E06C6CEB0FC06C6CEB1F80D8007EEB7E0090383F81FC90380FFFF0010090C7FC282A 7EA82D>I<3901FC03FC00FF90381FFF8091387C0FE09039FDE003F03A03FFC001FC6C49 6C7E91C7127F49EC3F805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC0 6D1580EE7F007F6E13FE9138C001F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891 C9FCAD487EB512F8A32D3A7EA733>I<02FF131C0107EBC03C90381F80F090397F00387C 01FC131CD803F8130E4848EB0FFC150748481303121F485A1501485AA448C7FCAA6C7EA3 6C7EA2001F14036C7E15076C6C130F6C7E6C6C133DD8007E137990383F81F190380FFFC1 903801FE0190C7FCAD4B7E92B512F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787C ECE1FE3807F9C100031381EA01FB1401EC00FC01FF1330491300A35BB3A5487EB512FEA3 1F287EA724>I<90383FC0603901FFF8E03807C03F381F000F003E1307003C1303127C00 78130112F81400A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8 003F13E0010313F0EB001FEC0FF800E01303A214017E1400A27E15F07E14016C14E06CEB 03C0903880078039F3E01F0038E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA2 13FCA2120112031207001FB512C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB 7F03013F138090381F8700EB07FEEB01F81B397EB723>I<D801FC14FE00FF147FA30007 14030003140100011400B3A51501A31503120015076DEB06FF017E010E13806D4913FC90 381FC078903807FFE00100903880FE002E297DA733>I<B539E00FFFE0A32707FE000313 006C48EB00FC5E00015D7F00005DA26D13016D5CA26D6C485AA2ECC007011F91C7FCA290 380FE00EA2ECF01E0107131CA26D6C5AA2ECFC7801011370A2ECFEF001005BA2EC7FC0A3 6E5AA26EC8FCA3140E2B287EA630>I<B53BC3FFFE03FFF8A3290FFE003FE00013C06C48 6D48EB3F806C4817006D010F141E00016F131C15076D163C00004A6C1338A2017F5E4B7E 151DD93F805DED3DFC1538D91FC04A5AED78FE9238707E03D90FE0017F5BEDE03F02F014 0701070387C7FC9138F1C01F02F9148F010315CE9138FB800F02FF14DE6D15FCED00076D 5DA24A1303027E5CA2027C1301023C5C023813003D287EA642>I<B539F01FFFE0A30003 D9C00F1300C690388007F8D97F0013E002805BD93FC05B011F49C7FC90380FE00EECF01E 6D6C5A01035B6D6C5A6E5AEB00FF6E5A6E5A81141F814A7E81147BECF1FC903801E1FEEC C0FF01037F49486C7ED90F007F011E6D7E013E130F496D7E01FC80486C80000F4A7EB539 803FFFF8A32D277FA630>I<B539E00FFFE0A32707FE000313006C48EB01FC6F5A00015D 7F00005DA2017F495AA2EC8003013F5CA26D6C48C7FCA26E5A010F130EA26D6C5AA2ECF8 3C01031338A26D6C5AA2ECFEF001005BA2EC7FC0A36E5AA36EC8FCA2140EA2141E141C14 3C1438A2147800181370127EB45BA2495AA248485AD87E07C9FCEA780EEA3C3CEA1FF8EA 07E02B3A7EA630>I<001FB61280A2EBE0000180140049485A001E495A121C4A5A003C49 5A141F00385C4A5A147F5D4AC7FCC6485AA2495A495A130F5C495A90393FC00380A2EB7F 80EBFF005A5B484813071207491400485A48485BA248485B4848137F00FF495A90B6FCA2 21277EA628>I<B812F0A22C0280982D>I<BE12C0A25A0280985B>I E /Fq 46 122 df<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A31201 1380120313005A1206120E5A5A5A12600B1D78891B>44 D<B612C0A61A067F9721>I<12 1EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A78891B>I<14FF010713E090381F81F89038 3E007C01FC133F4848EB1F8049130F4848EB07C04848EB03E0A2000F15F0491301001F15 F8A2003F15FCA390C8FC4815FEA54815FFB3A46C15FEA56D1301003F15FCA3001F15F8A2 6C6CEB03F0A36C6CEB07E0000315C06D130F6C6CEB1F806C6CEB3F00013E137C90381F81 F8903807FFE0010090C7FC28447CC131>48 D<143014F013011303131F13FFB5FC13E713 071200B3B3B0497E497E007FB6FCA3204278C131>I<EB03FE90381FFFC0017F13F03901 F80FFC3903C001FE48486C7E000EC7EA7F8048EC3FC0ED1FE04815F00030140F007015F8 00601407126CB415FC7F7F1503A46C4813076CC7FCC8FC16F8A2150F16F0151F16E0A2ED 3FC0ED7F8016005D5D4A5A4A5A4A5A5D4A5A4A5A4AC7FC147C5C5C495A495A495A49C712 0C131E5B013814185B5B485A4848143848C81230000E1570001FB612F0A25A5AB712E0A3 26427BC131>I<49B4FC010F13E0013F13FC9038FE01FE3A01F0007F80D803C0EB3FC048 C7EA1FE0120EED0FF0EA0FE0486C14F8A215077F5BA26C48130FEA03C0C813F0A3ED1FE0 A2ED3FC01680ED7F0015FE4A5AEC03F0EC1FC0D90FFFC7FC15F090380001FCEC007FED3F 80ED1FC0ED0FE016F0ED07F816FC150316FEA2150116FFA3121EEA7F80487EA416FE4913 03A2007EC713FC00701407003015F80038140F6C15F06CEC1FE06C6CEB3FC0D803E0EB7F 803A01FE01FE0039007FFFF8010F13E0010190C7FC28447CC131>I<ED0380A21507150F A2151F153FA2157F15FFA25CEC03BF153F14071406140C141C141814301470146014C013 011480EB03005B13065B131C13185B1370136013E0485A5B120390C7FC1206120E120C5A 123812305A12E0B812C0A3C8383F8000ADEDFFE0027FEBFFC0A32A437DC231>I<000615 C0D807C0130701FCEB7F8090B612005D5D5D15E0158026063FFCC7FC90C9FCAE14FF0107 13C090381F01F090383800FC01F0137ED807C07F49EB1F8016C090C7120F000615E0C8EA 07F0A316F81503A216FCA5123E127F487EA416F890C712075A006015F0A20070140F0030 15E00038EC1FC07E001EEC3F806CEC7F006C6C13FE6C6C485A3901F807F039007FFFE001 1F90C7FCEB07F826447BC131>I<EC07FCEC3FFF91B512C0903903FC03E0903907E000F0 D91FC0133849C71258017EEB01FC01FE1303491307485A485AA24848EB03F8000FEC01F0 92C7FC485AA3485AA3127FA29038007F80903801FFF090380780FC39FF0E003E49EB1F80 49EB0FC049EB07E0136001E0EB03F04914F8150116FC5BED00FEA390C812FFA47EA57F12 3FA216FE121F15016D14FC120FED03F86C7EED07F06C6C14E06C6CEB0FC06C6CEB1F8001 7EEB3F0090383F80FE90380FFFF8010313E00100138028447CC131>I<14FF010713E001 1F13F890387F00FE01FC133FD801F0EB1F804848EB0FC049EB07E00007EC03F048481301 A290C713F8481400A47FA26D130116F07F6C6CEB03E013FC6C6CEB07C09039FF800F806C 9038C01F006CEBF03EECF87839007FFEF090383FFFC07F01077F6D13F8497F90381E7FFF D97C1F1380496C13C02601E00313E048486C13F000079038007FF84848EB3FFC48C7120F 003EEC07FE150148140016FF167F48153FA2161FA56C151E007C153EA2007E153C003E15 7C6C15F86DEB01F06C6CEB03E06C6CEB07C0D803F8EB1F80C6B4EBFF0090383FFFFC010F 13F00101138028447CC131>56 D<14FF010713E0011F13F890387F80FC9038FC007E4848 7F4848EB1F804848EB0FC0000FEC07E0485AED03F0485A16F8007F140190C713FCA25AA2 16FE1500A516FFA46C5CA36C7E5D121F7F000F5C6C6C1306150E6C6C5B6C6C5BD8007C5B 90383F01E090390FFF80FE903801FE0090C8FC150116FCA4ED03F8A216F0D80F80130748 6C14E0486C130F16C0ED1F80A249EB3F0049137E001EC75A001C495A000F495A3907E01F E06CB51280C649C7FCEB1FF028447CC131>I<16C04B7EA34B7EA34B7EA34B7EA3ED19FE A3ED30FFA203707FED607FA203E07FEDC03FA2020180ED801FA2DA03007F160FA2020680 1607A24A6D7EA34A6D7EA34A6D7EA20270810260147FA202E08191B7FCA249820280C712 1FA249C87F170FA20106821707A2496F7EA3496F7EA3496F7EA201788313F8486C83D80F FF03037FB500E0027FEBFFC0A342477DC649>65 D<DB0FFE146092B500C013E0020314F0 913A0FFC01FC0191393FC0003E02FFC7EA0F83D903FCEC03C74948EC01E74948EC00FF49 48157F4948153F4948151F49C9120F485A491607120348481603A248481601A248481600 A2123FA2491760127FA31900485AAE6C7EA21960A2123F7FA2001F18E07F000F18C0A26C 6C160119806C6C160312016DEE07006C6C16066D6C150E6D6C5D6D6C5D6D6C15786D6C5D 6D6C4A5AD900FFEC0780DA3FC0011FC7FCDA0FFC13FC0203B512F0020014C0DB0FFEC8FC 3B487BC546>67 D<B912F8A3000101C0C7127F6C6C48EC07FC17011700187C183C181CA2 84A31806A4180704067FA395C7FCA4160EA2161E163E16FE91B5FCA3EC8000163E161E16 0EA21606A319C0A3F0018093C7FCA41803A21900A260A260A2181EA2183E187EEF01FE17 0748486C147FB95AA33A447CC342>69 D<B912F0A3000101C0C7127F6C6C48EC0FF81703 1701170018781838A2181CA3180CA4180E1806160CA21800A5161CA2163C167CED01FC91 B5FCA3EC8001ED007C163C161CA2160CA793C8FCB08048487EB612F8A337447CC340>I< B612F0A3C6EBF0006D5A6D5AB3B3B3A4497E497EB612F0A31C447DC323>73 D<B56C933807FFFC6E5EA20001F1FE0026006FE0EE1BF8A3D967F01633A2D963F81663A3 D961FC16C3A3D960FEED0183A2027FED0303A36E6C1406A36E6C140CA26E6C1418A36E6C 1430A36E6C1460A26E6C14C0A36E6CEB0180A3037FEB0300A292383F8006A36F6C5AA36F 6C5AA26F6C5AA36F6C5AA36F6C5AA26FB45AA370C7FC13F0A2486C143ED80FFFEF0FFEB5 00F0011C0107B512FCA34E447BC359>77 D<B56C020FB5FC8080C6040013F06D6CED1F80 D96FF8ED0F00A2D967FC1506EB63FEA2EB61FF01607FA26E7E6E7EA26E7E6E7EA26E7E6E 7EA26E7E6E7FA26F7E6F7EA26F7E6F7EA26F7E6F7EA26F7E6F1380A2EE7FC0EE3FE0A2EE 1FF0EE0FF8A2EE07FCEE03FEA2EE01FF701386A2EF7FC6EF3FE6A2EF1FF6EF0FFEA21707 1703A217011700A201F0167E183E487ED80FFF161EB500F0150EA2180640447CC349>I< B712FCEEFFC017F800019039C0000FFC6C6C48EB01FF9338007F80EF1FE0170FEF07F018 F8EF03FCA218FE1701A218FFA718FEA2170318FCA2EF07F818F0EF0FE0EF1FC0EF7F8093 3801FE00EE0FFC91B612F017800280C9FCB3AA3801FFE0B612C0A338447CC342>80 D<B712E016FF17C000019039C0003FF86C6C48EB03FCEE00FF717E717E717E717E717EA2 84170384A760A21707604D5AA24D5A4D5A4DC8FCEE01FEEE07F8EE3FE091B6C9FC16FC91 3980007F80EE0FE0707EEE03FC707E160083717EA2717EA784A71A6084171FA21AE0716C 13C02601FFE002071301B600C01680943801FC03943900FE0700CBEA3FFEF007F843467C C348>82 D<49B41303010FEBE007013F13F89039FE00FE0FD801F8131FD807E0EB079F49 EB03DF48486DB4FC48C8FC4881003E81127E82127C00FC81A282A37E82A27EA26C6C91C7 FC7F7FEA3FF813FE381FFFE06C13FE6CEBFFE06C14FC6C14FF6C15C0013F14F0010F8001 0180D9001F7F14019138001FFF03031380816F13C0167F163F161F17E000C0150FA31607 A37EA36C16C0160F7E17806C151F6C16006C5D6D147ED8FBC05CD8F9F0495AD8F07C495A 90393FC00FE0D8E00FB51280010149C7FC39C0003FF02B487BC536>I<003FB912F8A390 3BF0001FF8001F01806D481303003EC7150048187C0078183CA20070181CA30060180CA5 481806A5C81600B3B3A54B7EED7FFE49B77EA33F447DC346>I<EB07FC90383FFF809038 F80FE03903C003F048C66C7E000E6D7ED80FC0137E486C137F6D6D7EA36F7EA26C5AEA03 80C8FCA4EC0FFF49B5FC90380FFE1FEB3FC0EBFF00EA03FC485A485A485A485A127F5B17 6048C7FCA3153FA36D137F007F14EF6D9038C7E0C0003F13013A1FE00783F13B07F81E03 FF802701FFFC0113003A001FE0007C2B2E7CAC31>97 D<EA01FC12FFA3120712031201B3 EC03FC91380FFF8091383C07E091387001F89039FDE0007E02807F01FFEC1F8091C713C0 49EC0FE049140717F0A2EE03F8A217FCA2160117FEAB17FC1603A217F8A2EE07F0A26DEC 0FE017C06D141F01FBEC3F80D9F380EB7E00D9E1C05B9039E0F001F89039C03C07E09039 801FFF80C7D803FCC7FC2F467DC436>I<EC7F80903803FFF090380FC07C90383F000F01 FCEB03804848EB01C00003140F4848EB1FE049133F120F485AA2485AED1FC0007FEC0700 92C7FCA290C9FC5AAB7E7FA2123F16307F001F15706C6C146016E06C6C14C06C6C130100 01EC03806C6CEB0700013F131E90381FC078903807FFF001001380242E7DAC2B>I<167F ED3FFFA315018182B3EC7F80903803FFF090380FC07C90383F000E017E1307496D5AD803 F87F48487F5B000F81485AA2485AA2127FA290C8FC5AAB7E7FA2123FA26C7EA2000F5D7F 6C6C5B00035C6C6C9038077F806C6C010E13C0013F011C13FE90380FC0F8903803FFE090 26007F0013002F467DC436>I<EB01FE903807FFC090381F03F090387E00FC49137E4848 7F485A4848EB1F80000F15C049130F121F484814E01507A2007F15F090C7FCA25AA390B6 FCA290C9FCA67EA27FA2123F16306C7E1670000F15606D14E06C6C14C0000314016C6CEB 03806C6CEB0700013E131E90381F80F8903803FFE0010090C7FC242E7DAC2B>I<EC0FE0 EC7FF8903801F81E903803F03F90390FE07F8090381FC0FF5C133F495AA2ED7F0001FE13 1C92C7FCAFB67EA3C648C8FCB3B2486C7E007F13FFA321467EC51E>I<EE0F80D901FCEB 7FE0903A0FFF81F0F090393F07E3819039FC01FF033A01F800FE014848017E13E0000702 7FC7FC497F000F8149131F001F81A9000F5D6D133F000792C7FC6D5B0003147E6C6C5B6D 485A3903BF07E090380FFF80260701FCC8FC90CAFCA25AA37F6C7E7F90B512F86C14FF16 E06C15F86C6C8048B67E3A07C0000FFF48481300003FC8EA3F80003E151F48ED0FC0A248 1507A56C150F007C1680007E151F003E16006C153E6C6C5CD807E0495AD801F8EB07E0D8 007FEB3F8090261FFFFEC7FC010113E02C427DAC31>I<EA01FC12FFA3120712031201B3 EC01FE913807FFC091381E07F091383801F802707FECE000D9FDC07F5C01FF147F91C7FC A25BA35BB3A8486CECFF80B5D8F83F13FEA32F457DC436>I<EA01E0EA07F8A2487EA46C 5AA2EA01E0C8FCADEA01FC12FFA3120712031201B3B0487EB512F8A315437DC21C>I<14 3C14FFA2491380A46D1300A2143C91C7FCADEC7F80EB3FFFA31300147F143FB3B3AA123E 127F39FF807F00A2147EA25C6C485A383C01F06C485A3807FF80D801FEC7FC195785C21E >I<EA01FC12FFA3120712031201B3A292381FFFE0A36F1300ED07F816E05E5E030EC7FC 5D5D5D5D4A5A4A5A4AC8FC5CEC3F804A7E14FF9038FDCFE09038FF8FF01407496C7E01FC 7F14016E7E81816F7E82151F6F7E821507826F7E8282486C491380B5D8F81F13F8A32D45 7DC433>I<EA01FC12FFA3120712031201B3B3B3A5487EB512F8A315457DC41C>I<D801FC 01FFEC1FE000FF010701E0EBFFFC913B0F03F801E07F913C3C01FC07803F800007903C70 00FE0E001FC0000349D97E1C130F2601FDC0D97F38804A143001FFDA3FF06D7E91C75BA2 495DA3495DB3A8486C4A6C497EB5D8F81FB50003B512E0A34B2C7DAB52>I<3901FC01FE 00FF903807FFC091381E07F091383801F8000701707F0003EBE0002601FDC07F5C01FF14 7F91C7FCA25BA35BB3A8486CECFF80B5D8F83F13FEA32F2C7DAB36>I<EC7F80903803FF F090380FC0FC90383E001F496D7E496D7E48486D7E48486D7E48486D7E000F81A2484814 7E003F157FA290C87E481680A44816C0AA6C1680A26D147F003F1600A2001F157E6D14FE 000F5D6D130100075D6C6C495A6C6C495A6C6C495A013E49C7FC90381FC0FE903807FFF8 9038007F802A2E7DAC31>I<3901FC03FC00FF90380FFF8091383C07E091387001F83A07 FDE000FE00010180137F01FFEC3F8091C7EA1FC04915E049140F17F0160717F8160317FC A3EE01FEABEE03FCA3EE07F8A217F0160F6D15E0EE1FC06D143F17806EEB7E00D9FDC05B 9039FCF003F891383C0FE091381FFF80DA03FCC7FC91C9FCAE487EB512F8A32F3F7DAB36 >I<3903F803F000FFEB1FFCEC3C3EEC707F0007EBE0FF3803F9C000015B13FBEC007E15 3C01FF13005BA45BB3A748B4FCB512FEA3202C7DAB26>114 D<90383FE0183901FFFC38 3907E01F78390F0003F8001E1301481300007C1478127800F81438A21518A27EA27E6C6C 13006C7E13FC383FFFE06C13FC6C13FF6C14C06C14E0C614F0011F13F81300EC0FFC1403 00C0EB01FE1400157E7E153EA27EA36C143C6C147C15786C14F86CEB01F039F38003E039 F1F00F8039E07FFE0038C00FF01F2E7DAC26>I<1306A5130EA4131EA3133E137EA213FE 12011207001FB512F0B6FCA2C648C7FCB3A4150CAA017E131C017F1318A26D133890381F 8030ECC070903807E0E0903801FFC09038007F001E3E7EBC26>I<D801FC147F00FFEC3F FFA300071401000380000181B3A85EA35DA212006D5B017E9038077F80017F010E13C06D 011C13FE90380FC078903803FFF09026007F8013002F2D7DAB36>I<B539F001FFFCA300 0790C7EA7FE06C48EC1F8000011600160E1200160C017F5CA280013F5CA26E1370011F14 6080010F5CA2ECF00101075CA26D6C48C7FCA26E5A01011306A26D6C5AA214FF6E5AA215 B8EC3FB015F06E5AA36E5AA26E5AA36EC8FC2E2C7EAA33>I<B500E0B539E03FFF80A300 07903C000FFE000FFC00D803FCD903F8EB03F8F001E0120103015D6D80000060A26D6E13 036DD9037E91C7FCA20280017F5B013FD9063F1306A2D91FC06E5AED0C1FA2D90FE06E5A ED180FA2D907F06E5AED3007A2D903F86E5AED6003A2902601FCE06D5AEDC00117FCD900 FFECFD80ED800017FF027F92C8FC92C77EA26E147E023E143EA2021E143C021C141CA241 2C7EAA46>I<B539F001FFFCA3000790C7EA7FE06C48EC1F8000011600160E0000150C6D 141C6D1418A26E1338013F1430A26D6C5BA26E13E0010F5CA26D6C485AA2ECF803010391 C7FCA2903801FC06A2ECFE0E0100130CA2EC7F18A215B8EC3FB0A2EC1FE0A36E5AA26E5A A36EC8FCA21406A35CA25CA2123C007E5BB4FC5CA25CEAFE01387C0380D87007C9FCEA3C 1EEA0FFCEA03F02E3F7EAA33>121 D E /Fr 20 118 df<B712F0A7240780A12B>45 D<B912F018FF19E019F8C601FCC8EA7FFED93FF892380FFF80011F04017F9538007FF0F1 1FF8737EF103FE737E737F747E747E747E1A0F87747E1A0387747EA2741380A2F37FC0A2 1CE01B3FA21CF0A21B1F1CF8A31CFCA21B0FA41CFEAF1CFCA51B1F1CF8A4F33FF0A21CE0 A21B7F1CC01BFF1C80A2501300A2505A505AA2505A505A505A505A1AFF4F5B4F90C7FCF1 07FCF11FF8F17FF0953801FFC0013F04075BD9FFFCDB7FFEC8FCBA12F819E096C9FC18F0 576279E165>68 D<B712C0A4C66CEB8000D91FFEC7FC6D5AB3B3B3B3AE497E90387FFF80 B712C0A422627AE12F>73 D<B500FC071FB51280A36E61C6F58000013F51C7FCD91DFFF1 77FCA2011C6D18E7A36E6CEF01C7A36E6CEF0387A36E6CEF0707A26E6C170EA36E6C171C A36E6C1738A36E6C1770A26E6D16E0A36F6CED01C0A36F6CED0380A36F6CED0700A26F6C 150EA36F6C5DA36F6C5DA36F6C5DA26F6D5CA3706C495AA3706C495AA3706C49C7FCA270 6C130EA3706C5BA3706C5BA3706C5BA3706D5AA294387FC1C0A394383FE380A3DD1FF7C8 FCA3EF0FFEA2013E6F5AA2137F715A2601FFC04F7E000701F896383FFF80B66C6D48023F B61280A3715A696278E17A>77 D<B912C018FEF0FFC019F0C601FCC813FCD93FF8ED0FFF 011F04037F06007FF13FF0737E737E1907737E86731380A27313C0A31BE01A7FA21BF0A9 1BE0A21AFF1BC0A34F13801B00614F5A624F5A4F5AF17FE04F5A060390C7FCF01FFE9438 01FFF891B812E096C8FC18F802F8CCFCB3B3A4497E90B5FCB7FCA44C6279E15A>80 D<DA07FF1403023F01F05B49B512FC010702FF5B90260FFC0013C0D93FE090380FF01FD9 7F80EB03F801FEC86C5A4848157E4848ED1F7F48486F5A4848815B001F824981003F8290 CAFC4883A2007E83A212FE84A384A27EA36D82A26C7EA26D93C7FC6C7E7F7F6C7E6D7E6C 13E06C13FCECFFC06C14F86CECFF806C15F86DECFF80011F15E06D15F8010315FE01006F 7E021F81020181DA003F80030380DB003F7F04037FEE007FEF1FFF71138017037113C083 A2F07FE0183FA2181F00E018F0180FA41807A27EA47E19E0180F7E19C07E6C171F19806D 163F6D17006D5E6D16FE486C5E6D4B5AD8FC7F1503D91F80EC0FF026F80FE04A5AD907FC EC7F8029F001FFE003FFC7FC6D6CB512FC48011F14F0020314C0489026001FFEC8FC3C66 7AE349>83 D<EC3FF0903803FFFE010F6D7E90393FC03FE090397E0007F801F86D7ED801 E06D7E48486D7E48486E7E48C86C7E7F01F06E7E487E6D6E7EA3707EA36C5AEA03E0C9FC A6167FED7FFF020FB5FC91387FF807903801FF80903807FC00EB1FF0EB7FC0495AD803FE C7FC485A120F5B485A485AA2484817E0A312FF5BA2160FA3161F6D141B007F153B16736D 913971FC01C06C6C14E1001FEC01C1D80FFC903A0780FE03806C6C903A0F00FF07002701 FF807E6DB4FC27007FFFF86D5A011F01E0EB1FF8010190C7EA07E03B417ABF42>97 D<4AB47E020F13F8023F13FE9139FF007F80D903FCEB07E0D907F0EB01F0D91FE0EB0078 49488049488049C87E48485D4915FF00034B138048485CA2485AA2485AA2003F6F130049 EC007C94C7FC127FA35B12FFAD127F7FA4123F7FA2001FEE01C07F000F16036D16801207 6C6C15076D160000015E6C6C151E6D6C5C6D6C5C6D6C5CD90FF8495AD903FCEB07C0903A 00FF803F8091263FFFFEC7FC020F13F80201138032417CBF3A>99 D<181EEF3FFEEE07FFA4EE000F1703A21701B3AAEDFF80020F13F8023F13FE9139FF803F 81903A03FC0007C14948EB01E1D91FE0EB00F94948147D4948143D49C8121F4848150F49 1507120348481503491501120F121F5BA2123F5B127FA45B12FFAD127F7FA3123FA27F12 1FA26C6C1503A26C6C150712036D150F6C6C151F0000163D137F6D6CECF9FF6D6CEB01F1 D90FF0D903C113C06D6CD90F81EBFF80D901FFEB7F019039007FFFFC021F13E002010100 91C7FC41657CE349>I<EC03FE91381FFFE091B512F8903901FE03FE903A07F0007F8049 486D7ED93FC06D7E49C76C7E496E7E49140348488148481401000782491400000F828348 5A1880123F49153FA2007F17C0A35BA212FF90B8FCA30180CAFCA9127F7FA3123FA27F12 1FEF01C06C7E17036C6C1680A26C6C15070001EE0F006D150E6C6C151E6D6C5C6D6C5C6D 6C5CD907F0EB03E0D903FC495A902700FF803FC7FC91383FFFFC020F13F0020113803241 7CBF3A>I<ED0FF0ED7FFC4AB5FC913907F81F8091390FE00FC091381FC03F91393F807F E0EC7F005C495A5C0103EC3FC0A24948EB0F0093C7FCA2495AB3A5B712F0A426000FF0C8 FCB3B3B0497EEB3FFE003FB6FCA42B657EE428>I<F03F80DA03FC903801FFE091273FFF C00713F091B539F01FC1F8903B03FC03FC3E03903A07F000FE784948EB7FE04948EB3FC0 4948011FEB01F049C76C6CC7FC01FE6E7EA248486E7EA2000382A2491401000782AA0003 5E6D1403A200015EA26C6C4A5AA2017F4A5A6D6C495A6D6C495A496C49C8FCD937F013FE 903973FC03FC0160B512F0D9E03F13C0DA03FCC9FC4848CBFCA57FA27FA27F6C7E13FF91 B512FE6DECFFF06D15FE6D6F7E6D16E084013F16FC01FEC700017FD803F8EC001FD807E0 ED03FF4848030013804848167F003FEF3FC090CA121F127EF00FE012FE481707A66C170F 007E18C0A2007F171F6C6CEE3F806C6CEE7F00000F177ED807F04B5A6C6C4B5A6C6C4B5A D8007FED1FC0D93FE0ECFF80D90FFED90FFEC7FC0101B612F0D9003F1480020101F0C8FC 3D5E7DBF42>I<133C13FF487F487FA66C5B6C90C7FC133C90C8FCB3A2EB03C0EA07FF12 7FA41201EA007FA2133FB3B3AC497E497EB612E0A41B5F7DDE23>105 D<D903C0D9FFC0EC07FED807FF010301F891381FFFC0B5010F01FE027F13F0923D3F00FF 8001F807FC0378903B3FC003C001FEDAC1E090261FE00FC77E0001D9C3C090260FF01E6E 7ED8007F49902607F81C6E7E02C7C75CD93FCE6E6C486E7E02CC166002DC16E002D85E02 F8DA01FF6F7E4A5EA24A93C8FCA44A5DB3B3496C4A6C4B7E496C4A6D4A7EB6D8F007B6D8 803FB512FCA4663F7CBE6F>109 D<D903C0EB7FE0D807FF903803FFFCB5010F13FFDB3F 0013C00378EB1FE04B6D7E0001D9C1C06D7E27007FC3808002C7C71203D93FCE81170114 DC14D802F86E7E5CA35CA35CB3B3496C4A7F496C4A7FB6D8F003B612C0A4423F7DBE49> I<EDFF80020F13F8023F13FE9139FF007F80D903FCEB1FE0D907F0EB07F0D90FC0EB01F8 D93F80EB00FE49C8127F017E81496F7E48486F7E00038349150700078348486F7EA2001F 83491501A2003F83A348486F7EA400FF1880AC007F1800A26D5DA2003F5FA36C6C4B5AA3 6C6C4B5A00075FA26C6C4B5A6C6C4B5AA26C6C4B5A017F4BC7FC6D6C14FE6D6C495AD90F F0EB07F8D903FCEB1FE0D900FFEB7F806EB5C8FC020F13F8020113C039417CBF42>I<90 39078003F8D807FFEB0FFFB5013F13C092387C0FE0913881F01F9238E03FF00001EB8380 39007F8700148FEB3F8E029CEB1FE0EE0FC00298EB030002B890C7FCA214B014F0A25CA5 5CB3B0497EEBFFF8B612FCA42C3F7CBE33>114 D<9139FFE00180010FEBFC03017FEBFF 073A01FF001FCFD803F8EB03EFD807E0EB01FF48487F4848147F48C8123F003E151F007E 150F127CA200FC1507A316037EA27E7F6C7E6D91C7FC13F8EA3FFE381FFFF06CEBFF806C 14F86C14FF6C15C06C6C14F0011F80010714FED9007F7F02031480DA003F13C015030300 13E0167F00E0ED1FF0160F17F86C15071603A36C1501A37EA26C16F016037E17E06D1407 6DEC0FC06D1580D8FDF0141FD8F8F8EC7F00013E14FC3AF01FC00FF80107B512E0D8E001 148027C0003FF8C7FC2D417DBF34>I<1438A71478A414F8A31301A31303A21307130F13 1FA2137F13FF1203000F90B6FCB8FCA3260007F8C8FCB3AE17E0AE6D6CEB01C0A316036D 6C148016076D6C14006E6C5A91383FC01E91381FF07C6EB45A020313E09138007F802B59 7FD733>I<D903C0150FD807FFED1FFFB50203B5FCA40001ED0007D8007F1501A2013F81 B3B25FA35FA35F011F15066E140E5F130F6E4A7F01075D6D6C494813E0D901FE4948EBFF C0903A00FFC01F8091393FFFFE00020F13F8020001C0EC800042407DBE49>I E /Fs 5 85 df<1A1E1A1F6262A262A261A26161A2618761A26161197B19FB19F3F001E3 A2F003C318071983180F1903061E80A2183C85187818F818F0EF01E0A2EF03C0A2EF0780 170F1800171E875FA24D7F17F85F4C5AA24C5AA24C5A160F94C8FC5E161E4C82A25E04F8 157F5E15015E4BB8FCA25DA24BC9127F5D151E4B83A25D1A3F5D14015D4A5AA24A5AA24A CAFC5C141E5C875C14F81A1F495A13031307010F183F131FD97FF84D7E2603FFFE0403B5 7E007FD9FFE092B7FC4E1680B61A006C5C596678E568>65 D<92B912F04A18FEF3FFC06E 19F0DB007F90C700017F70489138003FFE7048ED0FFF043F04037F757F4D6F7F767E047F 173F767E4D707EA204FF717EA24D707EA24B1A80885FA24B1AC0A25F885D1EE094CBFCA2 5D645EA2151FA25EA2153F645E1EC0157FA24C5FA215FF1E804C5FA25C1E004C5FA24A62 A24C173F655C525A93CBFCA24A4F5AA24B4D5BA2021F62515B5D5190C7FC023F611B0F4B 4D5A64027F183F515A4B60515A02FF4D5B5090C8FC4B4C5A1A0F49F01FF8505A4B4C5A50 5A494D5B070790C9FC4BED1FFC4F5A49933801FFE04904071380013FDC7FFECAFC007FB9 12F8BA12E096CBFC18F0636276E16A>68 D<92BB12FC5CA280DB007F90C8120F70481500 7048EE3FF8043F170F1C074D1603A2167F1C014D17F0A216FFA25FA25D1DE05FA25DA25F 1C034B19C0A294CAFC1AE04B4B6C14805090C7FC5EA2031F1503625E1907153F624C140F 191F157F077FC9FC4C5C180F92B8FC61A34A9038E0000FF001FC4C1300A25C19785E19F8 5C6193C8FCA24A1501615DA2021F5E95CBFC5DA2143FA25DA2147FA25DA214FFA25DA25B A25DA25BA25DA25B5B013F13F0007FB612FEB7FCA35E6276E15C>70 D<92B812FCF2FFC04A18F86E18FEDB007F90C7383FFF80704802037F7048020013F0043F EE3FF8757E4D6F7E1B07047F837513805F1DC016FFA25F1DE05DA25FA25D5113C05FA25D 51138094C9FC1D004B5F644C4C5AA2031F4D5A644C4C5A505B033F4C5B5048C7FC4C4B5A F23FF0037F4C5A963801FF804CDA0FFEC8FCF1FFF892B812C04FC9FC619339E00003FF4A 9238007FC0737E4C6E7E737E4A1607864C8119034A83A293C8FCA24A84A25DA2021F5EA2 4B94C8FCA2023F5EA25DA2027F5EA25DA202FF5E625DA2491BE01C015DA2491A031DC04B 18071D80491A0F49051F1500013F01E060007FB600F0020F143EB76F6C5B735C4C6EEB83 F0CD6CB45A081F1380E003FEC7FC5B6576E166>82 D<017FBB12FC1CFE90BCFCA292C727 7FFC000113FC4801F06E48EB001F0280027F150791C81603D803FC4C14015B4903FF16F8 49190000075F5B5E48481AF06090C8FC484B1601A2001E5F003E1BE0003C5DA2007C94C8 FC00781A034C17C012F8485EA2161F481B80C94992C7FCA2163FA25FA2167FA25FA216FF A25FA25DA25FA25DA25FA25DA294CBFCA25DA25EA2151FA25EA2153FA25EA2157FA25EA2 15FFA25EA25CA25EA25CA25EA25CA293CCFC5CA25C49B512E0001FB8FC5AA25F576166E0 64>84 D E end TeXDict begin
0 0 bop 1597 1821 a Fs(D)50 b(R)h(A)f(F)g(T)449 2004 y Fr(Do)t(cumen)l(t)44 b(for)f(a)g(Standard)h(Message-P)l(assing)f(In)l (terface)1242 2393 y Fq(Message)34 b(P)m(assing)f(In)m(terface)h(F)-8 b(orum)1664 2646 y(Ma)m(y)34 b(22,)e(1996)155 2762 y(This)h(w)m(ork)g (w)m(as)g(supp)s(orted)h(in)e(part)g(b)m(y)i(ARP)-8 b(A)32 b(and)h(NSF)g(under)g(gran)m(t)f(ASC-9310330,)g(the)384 2878 y(National)f(Science)i(F)-8 b(oundation)31 b(Science)j(and)e(T)-8 b(ec)m(hnology)34 b(Cen)m(ter)g(Co)s(op)s(erativ)m(e)152 2994 y(Agreemen)m(t)f(No.)43 b(CCR-8809615,)31 b(and)i(b)m(y)h(the)f (Commission)d(of)i(the)h(Europ)s(ean)g(Comm)m(unit)m(y)1308 3110 y(through)f(Esprit)h(pro)5 b(ject)33 b(P6643.)p eop 1 1 bop 332 99 a Fp(This)38 b(is)g(the)i(result)f(of)h(a)g(LaT)-8 b(eX)40 b(run)f(of)g(a)i(draft)e(of)h(a)g(single)e(c)m(hapter)i(of)g (the)g(MPIF)g(Final)150 211 y(Rep)s(ort)30 b(do)s(cumen)m(t.)1937 5656 y(i)p eop 1 2 bop 150 721 a Fo(Chapter)65 b(8)150 1136 y Fn(Realtime)77 b(and)h(Em)-6 b(b)6 b(edded)150 1385 y(Extensions)150 1867 y Fm(8.1)116 b(Intro)s(duction)150 2070 y Fp(The)44 b(goal)g(of)h(realtime)f Fl(MPI)g Fp(\()p Fl(MPI)p Fp(/R)-8 b(T\))45 b(is)e(to)i(pro)m(vide)e(the)i(to)s(ols)f(for)g(programmers)f (to)i(create)150 2183 y(realtime)32 b(applications)f(with)h(p)s (erformance)g(p)s(ortabilit)m(y)-8 b(.)47 b Fl(MPI)p Fp(/R)-8 b(T)33 b(is)f(to)i(pro)m(vide)e(a)h(consisten)m(t)g(set)150 2296 y(of)c(extensions)f(and,)g(in)g(some)h(cases,)h(restrictions)d(of) i Fl(MPI)p Fp(.)g(The)f(goal)h(of)g Fl(MPI)p Fp(/R)-8 b(T)29 b(is)e(to)j(add)e(greater)150 2409 y(predicabilit)m(y)g(and)h (sc)m(hedulabilit)m(y)f(to)j(message-passing)g(programming.)332 2521 y(The)f(design)f(philosoph)m(y)f(of)j Fl(MPI)p Fp(/R)-8 b(T)30 b(is)g(as)g(follo)m(ws:)286 2702 y Fk(\017)46 b Fl(MPI)p Fp(/R)-8 b(T)35 b(will)c Fj(not)k Fp(determine)f(implemen)m (tation)f(p)s(olicy)-8 b(,)34 b(but)g(will)d(instead)j(pro)m(vide)f(to) s(ols)h(to)377 2815 y(implemen)m(t)29 b(realtime)h(paradigms)f(suc)m(h) h(as:)480 3000 y Fi({)45 b Fp(Time-driv)m(en)480 3144 y Fi({)g Fp(Ev)m(en)m(t-driv)m(en)480 3287 y Fi({)g Fp(Priorit)m (y-based)480 3430 y Fi({)g Fp(Ad)30 b(ho)s(c)g(\(critical)g(cycle\))286 3615 y Fk(\017)46 b Fl(MPI)p Fp(/R)-8 b(T)37 b(will)d(mak)m(e)j (minimal)c(c)m(hanges)38 b(to)f Fl(MPI)p Fp(,)f(so)h(that)g Fl(MPI)p Fp(/R)-8 b(T)36 b(programs)g(can)h(b)s(ene\014t)377 3728 y(from)30 b(existing)g Fl(MPI)p Fp(libraries,)d(at)k(least)g(for)f (non-critical)f(parts)h(of)h(realtime)e(applications,)286 3913 y Fk(\017)46 b Fp(E\013orts)40 b(will)c(b)s(e)j(made)g(to)h(mak)m (e)g(existing)e Fl(MPI)h Fp(libraries)d(w)m(ork)j(as)h(seamlessly)e(as) h(p)s(ossible)377 4026 y(within)28 b(these)j(real-time)f(pro\014les.) 286 4211 y Fk(\017)46 b Fl(MPI)p Fp(/R)-8 b(T)33 b(m)m(ust)e(allo)m(w)h (not)g(only)f(p)s(ortabilit)m(y)f(but)i(also)f(p)s(erformance)h(p)s (ortabilit)m(y)-8 b(,)31 b(insofar)g(as)377 4324 y(p)s(ossible.)286 4509 y Fk(\017)46 b Fl(MPI)p Fp(/R)-8 b(T)35 b(will)d(not)j(replace)f (the)h(nativ)m(e)f(run)m(time)g(system)g(or)h(sc)m(heduler,)f(but)g (will)e(pro)m(vide)i(a)377 4622 y(p)s(ortable)c(means)g(to)h(comm)m (unicate)g(with)e(these)i(systems.)377 4771 y(Figure)f(8.1)i(sho)m(w)e (the)g(mo)s(del)g(of)g(soft)m(w)m(are)i(abstraction)e(la)m(y)m(ers)h (for)f(MPI/R)-8 b(T.)286 4956 y Fk(\017)46 b Fp(F)-8 b(or)31 b(em)m(b)s(edded)e(users,)h(the)g(adv)-5 b(an)m(tages)32 b(of)e(a)g(la)m(y)m(ered)h(approac)m(h)f(indicate)g(that)g(\\subset)g (pro-)377 5068 y(\014les")k(b)s(ear)f(consideration)g(as)i(part)f(of)g (this)f(e\013ort.)53 b(The)33 b(smallest)h(subsets)f(should)f(b)s(e)i (quite)377 5181 y(minimal)k(to)k(allo)m(w)f(the)g(widest)f(p)s(ossible) e(em)m(b)s(edding)h(of)i Fl(MPI)g Fp(with)f(and)g(without)g(sp)s (eci\014c)377 5294 y(realtime)33 b(features.)51 b(A)33 b(feature-driv)m(en)g(rather)h(than)f(call-driv)m(en)f(approac)m(h)i (to)g(suc)m(h)f(pro\014les)377 5407 y(is)g(indicated.)48 b(Some)34 b(realtime,)f(em)m(b)s(edded)g(k)m(ernels)g(migh)m(t)g(c)m (ho)s(ose)h(to)g(add)f(the)h(smallest)e(set)1927 5656 y(1)p eop 2 3 bop 150 -200 a Fp(2)998 b Fh(CHAPTER)30 b(8.)71 b(REAL)-8 b(TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)1050 1413 y @beginspecial 0 @llx 0 @lly 488 @urx 381 @ury 2160 @rwi @setspecial /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {} def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def
end save -143.0 456.0 translate 1 -1 scale
/clp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /l {lineto} bind def /m {moveto} bind def /n {newpath} bind def /s {stroke} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def
$F2psBegin 10 setmiterlimit 0.06000 0.06000 sc 7.500 slw % Polyline n 10500 1275 m 2400 1275 l gs col-1 s gr % Polyline n 2400 3375 m 2400 3375 l gs col-1 s gr % Polyline n 2400 3375 m 2400 3375 l gs col-1 s gr % Polyline n 9000 2475 m 4500 2475 l 4500 3375 l gs col-1 s gr % Polyline n 9000 2475 m 9000 4275 l gs col-1 s gr % Polyline n 2400 3375 m 6000 3375 l 6000 4275 l gs col-1 s gr % Polyline n 10500 5775 m 2400 5775 l gs col-1 s gr % Polyline n 4800 5775 m 4800 4275 l 10500 4275 l gs col-1 s gr % Polyline n 2400 1275 m 2400 7575 l 10500 7575 l 10500 1275 l gs col-1 s gr /Times-Roman findfont 450.00 scalefont setfont 4950 6825 m gs 1 -1 sc (HARDWARE) col-1 show gr /Times-Roman findfont 450.00 scalefont setfont 2850 4500 m gs 1 -1 sc (MPI/RT) col-1 show gr /Times-Roman findfont 450.00 scalefont setfont 5625 5100 m gs 1 -1 sc (RUNTIME SYSTEM) col-1 show gr /Times-Roman findfont 450.00 scalefont setfont 4575 3075 m gs 1 -1 sc (SYSTEM PROCESSES) col-1 show gr /Times-Roman findfont 450.00 scalefont setfont 4875 2025 m gs 1 -1 sc (APPLICATIONS) col-1 show gr $F2psEnd restore @endspecial 675 1608 a Fp(Figure)e(8.1:)42 b(Mo)s(del)29 b(of)i(Soft)m(w)m(are)g(Abstraction)g(La)m(y)m(ers)g(for)f(MPI/R)-8 b(T.)377 1882 y(of)33 b(features)f(to)h(the)g(k)m(ernel,)f(with)f(la)m (y)m(ering)h(of)h(additional)d(features)i(for)g(less)g(constrained)f (sit-)377 1995 y(uations.)286 2179 y Fk(\017)46 b Fp(The)c(results)f (of)h(the)g(real-time)g Fl(MPI)f Fp(e\013ort)i(will)d(b)s(e)h(a)h (single)f(set)i(of)f(realtime)f(extensions,)377 2292 y(restrictions,)28 b(and)g(recommendations,)h(suitable)e(for)i (realization)f(as)h(a)g Fl(MPI)p Fp(/R)-8 b(T)29 b(implemen)m(ta-)377 2405 y(tion.)40 b(It)30 b(is)f(exp)s(ected)h(that)h(users)d(will)g (select)i(op)s(erations)f(in)f(order)i(to)g(supp)s(ort)e(the)i (real-time)377 2518 y(paradigms)f(of)i(their)e(c)m(ho)s(osing.)286 2702 y Fk(\017)46 b Fp(W)-8 b(e)26 b(exp)s(ect)f(this)e(c)m(hapter)i (to)h(b)s(e)d(adopted)i(separately)g(from)f(the)g Fl(MPI-2)h Fp(standard,)g(but)f(related)377 2815 y(to)30 b(it)e(whereev)m(er)i(p)s (ossible.)37 b(That)29 b(is,)g(not)g(all)e Fl(MPI-2)j Fp(implemen)m(tations)d(will)f(need)j(to)h(supp)s(ort)377 2928 y(the)h(real-time)f(and)g(em)m(b)s(edded)f(features)i(describ)s (ed)d(here.)332 3107 y(Real-time)k Fl(MPI)g Fp(will)e(serv)m(e)i(as)h (an)f(op)s(en)g(standard)f(for)h(a)g(wide)f(v)-5 b(ariet)m(y)33 b(of)f(high-p)s(erformance,)150 3220 y(realtime,)27 b(em)m(b)s(edded,)g (and)g(heterogeneous)h(parallel)d(computing)i(systems)g(encompassing)f (a)i(div)m(erse)150 3333 y(mix)33 b(of)i(computational)f(paradigms.)51 b(W)-8 b(e)36 b(in)m(tend)d(that)i Fl(MPI)p Fp(/R)-8 b(T)35 b(will)c(mak)m(e)36 b Fl(MPI)e Fp(relev)-5 b(an)m(t)35 b(to)g(the)150 3445 y(real-time)30 b(comm)m(unit)m(y)g(as)g(w)m(ell)f (as)h(enable)g(dev)m(elopmen)m(t)h(of)f(v)m(endor-indep)s(enden)m(t)e (real-time)i(appli-)150 3558 y(cations.)63 b(It)38 b(should)e(also)i (assist)f(in)g(bridging)e(the)j(gap)g(b)s(et)m(w)m(een)h(theory)f(and)f (implemen)m(tation)f(in)150 3671 y(parallel)28 b(real-time)j(computing) e(and)h(comm)m(unications.)150 3956 y Fm(8.2)116 b(Real-time)37 b(Message-P)m(assing)g(Requirements)150 4159 y Fp(Although)42 b(dev)m(elop)s(ers)h(ha)m(v)m(e)h(an)f(in)m(tuitiv)m(e)f(sense)h(of)g (what)g(they)g(mean)g(b)m(y)g(a)h(real-time)f(system,)150 4272 y(de\014nitions)34 b(v)m(ery)j(widely)-8 b(.)58 b(The)36 b(distinction)e(b)s(et)m(w)m(een)j(real-time)f(computer)g (systems)h(and)f(general)150 4385 y(purp)s(ose)d(computer)h(systems)h (lies)e(not)i(in)f(their)f(p)s(erformance)h(sp)s(eci\014cations,)h(but) f(in)f(the)i(relativ)m(e)150 4498 y(imp)s(ortance)c(of)h(the)g (system's)h(timing)d(considerations.)44 b(In)32 b(real-time)f (computing,)h(the)g(correctness)150 4611 y(of)c(a)f(computation)h(dep)s (ends)e(not)h(only)g(on)g(the)h(results)e(of)i(a)g(computation,)g(but)f (also)g(on)g(the)h(time)f(at)150 4724 y(whic)m(h)i(the)i(results)e(of)h (the)h(computation)f(are)h(generated.)332 4836 y(The)f(measures)g(of)g (merit)g(in)f(a)i(real-time)f(system)g(include)f([]:)286 5039 y Fk(\017)46 b Fp(Timing)28 b(correctness)k(as)e(w)m(ell)g(as)g (program)g(correctness.)286 5223 y Fk(\017)46 b Fp(Deterministic)29 b(op)s(eration)h({)h(ev)m(en)g(at)g(the)g(cost)g(of)g(p)s(erformance.) 286 5407 y Fk(\017)46 b Fp(Predictably)29 b(fast)i(resp)s(onse)e(time)h (to)i(urgen)m(t)e(ev)m(en)m(ts.)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 3 4 bop 150 -200 a Fh(8.2.)72 b(REAL-TIME)30 b(MESSA)m(GE-P)-8 b(ASSING)31 b(REQUIREMENTS)1123 b Fp(3)286 99 y Fk(\017)46 b Fp(High)33 b(degree)h(of)g(sc)m(hedulabilit)m(y)-8 b(.)47 b(W)-8 b(e)35 b(de\014ne)d Fj(sche)-5 b(dulability)35 b Fp(as)f(the)f(degree)i(of)e(resource)h(uti-)377 211 y(lization)c(at)h(or)f(b)s(elo)m(w)g(whic)m(h)f(the)h(timing)f (requiremen)m(ts)h(of)g(all)f(tasks)i(can)g(b)s(e)f(guaran)m(teed)h ([].)286 395 y Fk(\017)46 b Fp(Stabilit)m(y)27 b(under)f(transien)m(t)i (load.)39 b(When)28 b(the)g(system)g(is)f(o)m(v)m(erloaded)i(b)m(y)f (ev)m(en)m(ts)h(and)f(meeting)377 508 y(all)35 b(deadlines)g(is)g(imp)s (ossible,)g(w)m(e)i(m)m(ust)f(still)e(guaran)m(tee)k(the)e(deadlines)f (of)h(selected)h(critical)377 621 y(tasks.)286 804 y Fk(\017)46 b Fp(Dep)s(endabilit)m(y)28 b({)j(rigid)e(fault)g (tolerance,)j(again)e(sometimes)g(at)i(the)e(cost)h(of)g(p)s (erformance.)286 988 y Fk(\017)46 b Fp(P)m(ortabilit)m(y)-8 b(,)31 b(in)e(the)h(case)i(of)e Fl(MPI)p Fp(R)-8 b(T,)31 b(with)e(minimal)e(impact)j(on)g(p)s(erformance.)150 1229 y Ff(8.2.1)97 b(Synchronized)33 b(Clo)s(cks)150 1401 y Fp(Designers)23 b(of)g(parallel)d(pro)s(cessing)i(systems)h(who) f(ha)m(v)m(e)i(though)m(t)g(ab)s(out)e(real-time)h(applications)e(ha)m (v)m(e)150 1514 y(included)34 b(tigh)m(tly)i(sync)m(hronized)g(system)h (clo)s(c)m(ks,)i(whic)m(h)d(are)h(dep)s(enden)m(t)f(up)s(on)f(sp)s (ecial)g(hardw)m(are)150 1627 y(supp)s(ort.)62 b(These)38 b(include)e(sev)m(eral)i(MPP)g(platforms,)h(suc)m(h)f(as)g(the)h(In)m (tel)e(P)m(aragon)j(and)d(the)h(Mer-)150 1740 y(cury)32 b(RA)m(CE)g(systems.)46 b(There)32 b(are)g(sev)m(eral)h(comp)s(elling)d (reasons)i(for)g(ha)m(ving)g(highly)e(sync)m(hronized)150 1853 y(clo)s(c)m(ks)h([)p Fi(?)p Fp(]:)261 2053 y(1.)46 b(Fine-grained,)22 b(accurate)g(instrumen)m(tation)c(is)i(needed)g(for) g(all)f(approac)m(hes)i(to)g(real-time)f(message-)377 2166 y(passing)29 b(systems,)i(and)f(ev)m(en)h(for)f(p)s(erformance)g (measuremen)m(ts)g(in)f(non)h(real-time)g(systems.)261 2349 y(2.)46 b(Time-driv)m(en)d(real-time)h(applications)f(require)g(v) m(ery)i(precise)e(timing)g(correctness.)84 b(These)377 2462 y(systems)42 b(also)h(require)e(demonstrations)g(of)h(this)g (correctness,)k(and)41 b(often)i(require)e(delicate)377 2575 y(tuning)36 b(for)g(optimal)g(p)s(erformance.)59 b(W)-8 b(ell-sync)m(hronized)36 b(clo)s(c)m(ks)h(are)g(necessary)g(to)h (supp)s(ort)377 2688 y(these)31 b(requiremen)m(ts)f(in)f(a)h(parallel)f (en)m(vironmen)m(t.)261 2872 y(3.)46 b(Applications)27 b(should)g(b)s(e)h(able)g(to)h(adjust)f(sc)m(heduled)g(times)g(for)h(p) s(ortabilit)m(y)-8 b(,)27 b(based)i(up)s(on)e(the)377 2985 y(qualit)m(y)d(of)h(the)f(sync)m(hronized)f(clo)s(c)m(ks.)39 b(F)-8 b(or)26 b(example,)f(time)f(padding)f(will)f(b)s(e)h(needed)i (to)g(adapt)377 3097 y(sc)m(heduled)k(message-passing)i(op)s(erations)f (on)g(heterogeneous)i(pro)s(cessing)d(no)s(des.)261 3281 y(4.)46 b(The)39 b(primary)e(goal)j(of)f(time-driv)m(en)f(real-time)h (MPI)g(is)f(to)i(supp)s(ort)d(application)g(sp)s(eci\014ca-)377 3394 y(tion)k(of)g(resource)g(usage.)73 b(F)-8 b(or)41 b(time-driv)m(en)f(MPI/R)-8 b(T,)41 b(all)f(resources)h(whic)m(h)f(are) h(used)f(for)377 3507 y(comm)m(unication)30 b(need)g(to)h(b)s(e)f(sc)m (heduled)f(in)g(order)h(to)h(ac)m(hiev)m(e)g(predictable)e(b)s(eha)m (vior.)40 b(These)377 3620 y(sc)m(heduled)29 b(resources)i(can)f (include:)416 3826 y(\(a\))46 b(Distributed)29 b(Memory)411 3968 y(\(b\))45 b(Shared)30 b(Memory)421 4110 y(\(c\))46 b(Comm)m(unication)29 b(Bandwidth)377 4317 y(as)j(w)m(ell)e(as)h (others,)h(suc)m(h)f(as)g(platform)g(sp)s(eci\014c)f(resources)h (related)g(to)h(in)m(ter-pro)s(cess)e(comm)m(u-)377 4429 y(nication.)150 4671 y Ff(8.2.2)97 b(Description)34 b(of)e(the)h(Clo)s (cks)150 4843 y Fp(The)23 b(pro)s(cessing)e(no)s(des)i(whic)m(h)e (comprise)h(a)i(real-time)f(parallel)e(pro)s(cessing)h(system)h(ma)m(y) g(ha)m(v)m(e)i(access)150 4956 y(to)36 b(sev)m(eral)f(clo)s(c)m(ks.)55 b(In)34 b(this)g(pap)s(er)g(w)m(e)h(designate)g(one)h(of)f(the)g(clo)s (c)m(ks)g(as)g(a)h(globally)d(sync)m(hronized)150 5068 y(clo)s(c)m(k.)80 b(F)-8 b(or)44 b(eac)m(h)g(pro)s(cess)f(in)f(a)i Fl(MPI)p Fp(/R)-8 b(T)43 b(program,)j(this)d(clo)s(c)m(k)g(will)e(the)i (b)s(e)g(one)g(read)h(b)m(y)f(the)150 5181 y(MPI)p 333 5181 28 4 v 33 w(WTIME)29 b(call.)40 b(There)28 b(is)h(an)g(underlying) d(assumption)h(that)j(eac)m(h)h(pro)s(cess)d(is)h(asso)s(ciated)g(with) 150 5294 y(a)37 b(\014xed)e(pro)s(cessing)h(no)s(de.)58 b(The)35 b(pro)s(cess)h(accesses)i(its)e(globally)f(sync)m(hronized)g (clo)s(c)m(k)i(through)f(its)150 5407 y(asso)s(ciated)31 b(CPU.)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 4 5 bop 150 -200 a Fp(4)998 b Fh(CHAPTER)30 b(8.)71 b(REAL)-8 b(TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)332 99 y Fp(F)-8 b(or)35 b(most)g(platforms,)g(eac)m(h)g(no)s(de)f(has)g(a)h(lo)s(cal)f (clo)s(c)m(k,)i(and)e(this)f(is)h(p)s(erio)s(dically)d(corrected)k(in) 150 211 y(order)c(for)g(it)f(to)i(serv)m(e)g(as)f(a)h(sync)m(hronized)e (clo)s(c)m(k)h(for)g(all)f(MPI/R)-8 b(T)31 b(pro)s(cesses)g(activ)m(e)i (at)f(that)f(no)s(de.)150 324 y(Ho)m(w)m(ev)m(er,)42 b(other)c(alternativ)m(es)g(are)g(not)g(precluded.)61 b(F)-8 b(or)38 b(example,)i(there)d(ma)m(y)i(ev)m(en)f(b)s(e)f(a)h (single)150 437 y(clo)s(c)m(k)24 b(at)g(one)g(of)g(the)g(no)s(des)f(or) g(ev)m(en)i(completely)e(outside)g(of)h(the)g(participating)d(no)s (des,)k(whic)m(h)d(all)h(the)150 550 y(pro)s(cessing)33 b(no)s(des)g(access)j(o)m(v)m(er)f(a)g(net)m(w)m(ork)g(\(whic)m(h)e(ma) m(y)i(also)f(b)s(e)g(used)f(for)h(regular)g(data)g(transfer)150 663 y(op)s(erations\))c(to)h(get)h(a)e(sync)m(hronized)g(clo)s(c)m(k)g (v)-5 b(alue.)150 906 y Ff(8.2.3)97 b(Clo)s(ck)33 b(Synchronization)g (P)m(a)m(rameters)150 1078 y Fp(In)k(this)g(section)g(w)m(e)h(presen)m (t)g(sev)m(eral)g(parameters)g(whic)m(h)f(describ)s(e)f(the)i(sync)m (hronized)e(clo)s(c)m(ks,)k(all)150 1191 y(of)33 b(whic)m(h)e(m)m(ust)h (b)s(e)g(accessible)g(at)h(run)e(time)h(and)g(compile)f(time.)47 b(The)32 b(v)-5 b(alues)31 b(of)i(all)e(these)i(param-)150 1304 y(eters)j(are)g(exp)s(ected)h(to)f(b)s(e)f(double)f(precision)g (\015oating-p)s(oin)m(t)h(v)-5 b(alues)35 b(measured)h(in)e(seconds,)j (with)150 1417 y(exception)31 b(of)f(the)h(drift,)e(whic)m(h)g(is)g (dimensionless.)150 1629 y Fi(Resolution)36 b(\(Tic)m(k\))45 b Fp(Resolution)21 b(represen)m(ts)h(the)g(time)g(b)s(et)m(w)m(een)g(t) m(w)m(o)i(successiv)m(e)e(clo)s(c)m(k)g(tic)m(ks.)38 b(The)377 1742 y(resolution)e(of)i(the)f(v)-5 b(arious)37 b(sync)m(hronized)f(clo)s(c)m(ks)i(in)e(a)i(heterogeneous)g(system)g (ma)m(y)g(di\013er.)377 1855 y(W)-8 b(e)31 b(ha)m(v)m(e)h(prop)s(osed)d (a)h(subtle)f(mo)s(di\014cation)f(to)j(MPI)p 2289 1855 28 4 v 33 w(WTICK,)e(so)h(that)h(the)f(call)g(will)d(return)377 1968 y(the)38 b(resolution)d(of)j(the)f(sync)m(hronized)f(clo)s(c)m(k)h (of)h(the)f(pro)s(cessing)f(no)s(de)g(asso)s(ciated)i(with)e(the)377 2081 y(calling)i(pro)s(cess.)66 b(In)39 b(order)f(to)i(supp)s(ort)d (tigh)m(tly)i(sync)m(hronized)f(system)h(clo)s(c)m(ks,)j(w)m(e)d(exp)s (ect)377 2194 y(clo)s(c)m(k)31 b(resolution)e(to)i(b)s(e)f(at)h(most)g (one)f(millisecond.)150 2382 y Fi(Drift)45 b Fp(Drift)30 b(indicates,)g(for)g(eac)m(h)i(sync)m(hronized)d(clo)s(c)m(k,)j(a)f (guaran)m(teed)g(upp)s(er)e(b)s(ound)f(on)j(the)f(error)377 2494 y(in)35 b(the)i(rate)g(of)f(the)h(clo)s(c)m(k.)59 b(That)36 b(is,)h(if)e(the)i(drift)e(is)g Fe(\016)s Fp(,)k(then)d(the)g (clo)s(c)m(k)h(rate)g(\(measured)f(in)377 2607 y(seconds)i(p)s(er)f (actually)h(elapsed)f(second\))i(is)e(guaran)m(teed)i(to)g(b)s(e)e(b)s (et)m(w)m(een)i(1)26 b Fk(\000)f Fe(\016)42 b Fp(and)37 b(1)26 b(+)f Fe(\016)s Fp(.)377 2720 y(Drift)30 b(is)f(dimensionless.) 377 2871 y(Drift)40 b(can)g(b)s(e)g(e\013ectiv)m(ely)h(used)e(to)i(b)s (ound)d(the)i(accuracy)h(of)g(measuremen)m(t)f(of)h(small)d(time)377 2983 y(in)m(terv)-5 b(als,)27 b(when)f(they)h(are)g(measured)g(b)m(y)f (the)h(di\013erence)g(b)s(et)m(w)m(een)g(t)m(w)m(o)i(readings)c(of)i (the)h(same)377 3096 y(sync)m(hronized)h(clo)s(c)m(k.)150 3284 y Fi(Sk)m(ew)45 b Fp(Sk)m(ew)31 b(is)e(a)i(maxim)m(um)e(b)s(ound)g (on)h(the)h(absolute)f(v)-5 b(alue)30 b(of)g(the)h(di\013erence)f(b)s (et)m(w)m(een)h(sim)m(ulta-)377 3397 y(neous)f(v)-5 b(alues)29 b(of)h(the)g(sync)m(hronized)f(clo)s(c)m(ks.)41 b(Note)31 b(that)g(this)e(refers)g(to)i(ideal)e(v)-5 b(alues,)30 b(not)g(the)377 3510 y(result)g(of)g(an)m(y)h(real)f(reading)f(op)s (erations.)150 3697 y Fi(Accuracy)47 b Fp(Accuracy)31 b(is)e(a)h(maxim)m(um)f(b)s(ound)e(on)j(the)g(absolute)g(v)-5 b(alue)29 b(of)h(the)g(di\013erence)f(b)s(et)m(w)m(een)377 3810 y(sim)m(ultaneous)j(v)-5 b(alues)32 b(of)i(the)f(sync)m(hronized)f (clo)s(c)m(k)i(and)e(an)h(ideal)f(clo)s(c)m(k)i(started)f(at)h(the)f (syn-)377 3923 y(c)m(hronized)d(clo)s(c)m(k)h(h)m(yp)s(othetical)f (starting)g(time)g(\(some)h(critical)e(instan)m(t)h(in)f(time\).)377 4074 y(If)e(sync)m(hronized)f(clo)s(c)m(ks)h(are)h(p)s(erio)s(dically) 23 b(corrected)28 b(in)e(order)h(to)g(deal)g(with)f(drifts)f(and)i (other)377 4186 y(inaccuracies,)45 b(the)e(calculation)f(of)h(the)f(in) m(terv)-5 b(al)42 b(accuracy)i(based)e(up)s(on)f(drift)g(will)e(b)s(e)j (to)s(o)377 4299 y(p)s(essimistic)28 b(for)i(large)g(in)m(terv)-5 b(als.)377 4450 y(This)29 b(v)-5 b(alue)30 b(can)g(also)h(b)s(e)e(used) h(for)g(cross-platform)g(sync)m(hronization.)150 4637 y Fi(Access)36 b(Time)44 b Fp(Access)22 b(Time)d(is)g(a)i(maxim)m(um)e (b)s(ound)f(on)j(the)f(time)g(to)h(execute)h(a)e(call)g(of)g(MPI)p 3484 4637 V 33 w(WTIME,)377 4750 y(This,)34 b(of)g(course,)h(assumes)f (that)g(the)g(execution)h(of)f(the)g(call)f(is)g(not)h(in)m(terrupted)f (b)m(y)h(the)g(op-)377 4863 y(erating)29 b(system.)41 b(This)27 b(undesirable)f(and)j(am)m(biguous)f(ca)m(v)m(eat)k(is)c (necessary)h(with)f(the)h(curren)m(t)377 4976 y(op)s(erating)k(systems) g(\(esp)s(ecially)f(those)h(with)f(virtual)f(memory\))j(b)s(ecause)f (an)g(absolute)g(guar-)377 5089 y(an)m(tee)f(w)m(ould)d(b)s(e)h(so)h (long)f(as)g(to)h(b)s(e)f(practically)f(un)m(usable.)377 5239 y(Implemen)m(tations)h(that)h(are)g(based)f(on)h(accessing)g(the)g (same)g(global)f(clo)s(c)m(k)h(instead)f(of)h(a)g(lo)s(cal)377 5352 y(sync)m(hronized)c(one)h(will)d(ha)m(v)m(e)k(the)f(same)g (resolution)f(for)g(all)g(no)s(des,)h(with)e(zero)j(sk)m(ew,)g(no)e (drift,)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 5 6 bop 150 -200 a Fh(8.3.)72 b(INSTR)m(UMENT)-8 b(A)g(TION)2424 b Fp(5)377 99 y(and)36 b(iden)m(tical)e(accuracy)k(\(sub)5 b(ject)36 b(to)g(the)h(propagation)f(dela)m(y)f(of)i(the)f(clo)s(c)m(k) g(signal\))f(for)h(all)377 211 y(pro)s(cessing)31 b(no)s(des.)44 b(Ho)m(w)m(ev)m(er,)34 b(the)e(access)h(times)e(could)g(still)e(v)-5 b(ary)32 b(at)g(eac)m(h)h(pro)s(cessing)e(no)s(de)377 324 y(and)f(across)h(all)e(the)i(pro)s(cessing)e(no)s(des.)40 b(A)30 b(b)s(ound)f(on)h(this)f(v)-5 b(ariabilit)m(y)28 b(is)i(needed.)150 568 y Ff(8.2.4)97 b(MPI/RT)31 b(Clo)s(ck)i(A)m (ttributes)150 739 y Fp(In)h(order)g(for)g(MPI/R)-8 b(T)34 b(to)i(allo)m(w)d(p)s(ortable)h(applications)e(across)j(a)g(wide)e(v)-5 b(ariet)m(y)35 b(of)f(parallel)f(real-)150 852 y(time)k(systems,)i(it)e (is)f(necessary)i(to)g(encapsulate)f(the)g(clo)s(c)m(k)h(sync)m (hronization)e(parameters)i(of)f(sec-)150 965 y(tion)j(8.2.3)j(in)c(a)j (system)f(indep)s(enden)m(t)d(w)m(a)m(y)-8 b(.)74 b Fl(MPI)40 b Fp(pro)m(vides)g(a)h(cac)m(hing)h(facilit)m(y)d(that)j(allo)m(ws)e (an)150 1078 y(application)i(to)j(attac)m(h)h(arbitrary)d(pieces)h(of)g (information,)j(called)c Fi(attributes)p Fp(,)k(to)e(b)s(oth)e(in)m (tra-)150 1191 y(and)h(in)m(tercomm)m(unicators.)84 b(This)43 b(information)g(is)h(retriev)m(ed)h(b)m(y)f(referencing)h(a)g Fj(key)p Fp(.)83 b(A)45 b(set)h(of)150 1304 y(attributes)j(that)h (describ)s(e)e(the)i(execution)f(en)m(vironmen)m(t)g(are)h(attac)m(hed) i(to)e(the)g(comm)m(unicator)150 1417 y(MPI)p 333 1417 28 4 v 33 w(COMM)p 669 1417 V 33 w(W)m(ORLD)39 b(when)f Fl(MPI)g Fp(is)g(initialized.)63 b(The)38 b(v)-5 b(alue)38 b(of)h(these)g(attributes)g(can)g(b)s(e)f(in-)150 1530 y(quired)d(b)m(y)i(using)f(the)h(function)e(MPI)p 1523 1530 V 33 w(A)-8 b(TTR)p 1815 1530 V 33 w(GET.)37 b(A)m(t)h (initialization)c(time,)k(MPI/R)-8 b(T)38 b(adds)e(the)150 1643 y(follo)m(wing)29 b(k)m(eys)i(to)g(MPI)p 1028 1643 V 33 w(COMM)p 1364 1643 V 32 w(W)m(ORLD:)286 1855 y Fk(\017)46 b Fp(MPI)p 560 1855 V 33 w(WTIME)p 930 1855 V 33 w(DRIFT)30 b(\(INT\))286 2043 y Fk(\017)46 b Fp(MPI)p 560 2043 V 33 w(WTIME)p 930 2043 V 33 w(SKEW)30 b(\(DOUBLE\))286 2230 y Fk(\017)46 b Fp(MPI)p 560 2230 V 33 w(WTIME)p 930 2230 V 33 w(A)m(CCURA)m(CY)31 b(\(DOUBLE\))286 2418 y Fk(\017)46 b Fp(MPI)p 560 2418 V 33 w(WTIME)p 930 2418 V 33 w(A)m(CCESS)p 1324 2418 V 31 w(TIME)30 b(\(DOUBLE\))332 2631 y(The)22 b(v)-5 b(alues)23 b(of)g(the)g(listed)f(parameters)h(do)g (not)g(dep)s(end)f(on)h(what)g(applications)e(are)i(running)e(but)150 2744 y(rather)29 b(on)f(the)h(parallel)e(en)m(vironmen)m(t.)40 b(These)29 b(parameters)g(represen)m(t)f(constrain)m(ts)h(on)g(the)g(c) m(hanges)150 2856 y(to)e(the)g(en)m(vironmen)m(t.)39 b(F)-8 b(or)27 b(example,)g(the)g(sk)m(ew)f(should)f(not)h(b)s(e)g (increased)g(when)f(new)h(pro)s(cesses)h(are)150 2969 y(added)j(while)e(an)i(application)f(is)g(running.)150 3213 y Ff(8.2.5)97 b(Comments)150 3384 y Fp(Q:)30 b(Can)g(clo)s(c)m(k)h (sync)m(hronization)e(b)s(e)h(message)h(based)g(using)d(the)j(net)m(w)m (ork)g(used)f(for)g(data)h(transfer?)150 3497 y(A:)g(Y)-8 b(es,)31 b(but)f(it)g(probably)e(will)g(not)j(ha)m(v)m(e)g(v)m(ery)g (go)s(o)s(d)f(p)s(erformance.)150 3610 y(Q:)g(Can)g(it)g(b)s(e)g (message)h(based?)150 3723 y(A:)26 b(It)g(probably)d(will)g(b)s(e)i (message)i(based,)f(but)f(will)e(use)i(a)h(separate)g(dedicated)g(net)m (w)m(ork.)39 b(This)24 b(is)h(the)150 3836 y(w)m(a)m(y)31 b(sev)m(eral)g(MPPs)f(already)g(do)h(it,)f(lik)m(e)f(the)i(Mercury)f (RA)m(CE)g(Systems)g(and)g(the)h(In)m(tel)f(P)m(aragon.)150 3949 y(Q:)f(Should)d(w)m(e)j(ha)m(v)m(e)h(a)f(maxim)m(um)f(allo)m(w)m (able)g(b)s(ound)f(on)h(the)h(sk)m(ew)g(and)f(if)g(y)m(es,)i(what)f (should)d(it)j(b)s(e?)150 4062 y(Q:)38 b(What)g(a\013ects)i(access)f (time)f(to)h(the)f(sync)m(hronized)e(clo)s(c)m(k?)64 b(Where)38 b(is)f(the)h(sync)m(hronized)f(time)150 4175 y(stored?)150 4461 y Fm(8.3)116 b(Instrumentation)150 4664 y Fp(Instrumen)m(tation)36 b(is)f(an)h(essen)m(tial)h(asp)s(ect)f (to)i(pro)m(viding)c(the)j(to)s(ols)f(needed)g(to)h(pro)m(vide)f (program-)150 4777 y(mers)c(with)f(qualit)m(y)h(of)g(service)g (assurances)h(and)e(for)h(tuning)f(on)i(sp)s(eci\014c)e(hardw)m(are)h (con\014gurations)150 4890 y(\(ac)m(hieving)h(the)g(p)s(erformance)f (part)h(of)h(p)s(erformance)e(p)s(ortabilit)m(y)f(without)h(resorting)g (to)i(rewriting)150 5003 y(applications)29 b(from)g(scratc)m(h\).)332 5116 y(F)-8 b(or)36 b(all)e(v)m(ersions)g(of)i(real-time)f(MPI)g(a)g (more)h(instrumen)m(tation)e(is)g(needed)h(than)g(is)f(curren)m(tly)150 5229 y(a)m(v)-5 b(ailable)33 b(in)g(existing)g(to)s(ols.)52 b(Ho)m(w)m(ev)m(er,)37 b(for)d(initial)d(implemen)m(tation)i(w)m(e)h (ha)m(v)m(e)i(c)m(hosen)e(a)h(minimal)150 5342 y(approac)m(h)30 b(to)g(instrumen)m(tation.)39 b(W)-8 b(e)31 b(ha)m(v)m(e)g(added)e(a)h (few)g(ev)m(en)m(ts)h(\(states\))g(whic)m(h)e(are)h(b)s(e)f(logged)h (for)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 6 7 bop 150 -200 a Fp(6)998 b Fh(CHAPTER)30 b(8.)71 b(REAL)-8 b(TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)150 99 y Fp(the)h(op)s (erations)g(presen)m(ted)g(ab)s(o)m(v)m(e.)49 b(An)33 b(initial)d(implemen)m(tation)i(can)h(c)m(ho)s(ose)h(either)f(to)h(add) e(them)150 211 y(directly)23 b(to)i(the)g(list)e(of)i(logged)f(ev)m(en) m(ts)i(\(states\))h(or)d(pro)m(vide)f(an)i(external)f(in)m(terface)h (for)f(them.)39 b(Notice)150 324 y(that)24 b(some)g(ev)m(en)m(ts,)j (suc)m(h)c(as)h(the)g(completion)f(of)g(sc)m(heduled)g(sends)f(and)h (receiv)m(es,)j(are)e(in)m(ternal)f(ev)m(en)m(ts)150 437 y(of)31 b(the)f(MPI)g(implemen)m(tation.)332 550 y(The)h(primary)f(goal)i(for)f(the)h(addition)e(of)i(real-time)f (instrumen)m(tation)g(is)f(to)j(enable)e(the)h(appli-)150 663 y(cation)c(to)h(get)g(a)g(clear)f(picture)f(of)h(when)f(and)g(for)h (what)g(op)s(eration)f(di\013eren)m(t)h(systems)g(resources)g(are)150 776 y(used.)39 b(Ideally)-8 b(,)26 b(w)m(e)g(w)m(ould)f(lik)m(e)h(to)g (record)g(the)h(information)d(for)i(eac)m(h)h(resource)g(individually) -8 b(.)34 b(Again,)150 889 y(there)c(is)e(a)i(distinction)d(b)s(et)m(w) m(een)j(global)f(and)g(lo)s(cal)g(resources.)40 b(As)29 b(stated)i(b)s(efore,)e(implemen)m(tation)150 1002 y(of)g(the)f (instrumen)m(tation)f(ma)m(y)i(b)s(e)f(handicapp)s(ed)d(b)m(y)k (inadequacies)e(of)i(op)s(erating)e(systems,)i(comm)m(u-)150 1115 y(nication)k(proto)s(cols)h(and)f(so)i(on.)51 b(The)34 b(MPI)g(implemen)m(tation)e(ma)m(y)j(not)f(ev)m(en)h(b)s(e)e(a)m(w)m (are)j(of)e(all)f(the)150 1228 y(resources)27 b(b)s(eing)f(used)g(b)m (y)i(the)f(host)g(comm)m(unication)g(facilities)e(that)j(are)g(called)e (b)m(y)h(MPI.)h(Ho)m(w)m(ev)m(er,)150 1341 y(it)f(should)f(b)s(e)h (clear)h(that)h(in)d(some)j(circumstances)e(where)g(timing)g(is)g (critical,)g(an)h(application)e(w)m(ould)150 1453 y(lik)m(e)h(to)i(kno) m(w)f(information)f(ab)s(out)g(times)h(of)g(resource)g(use)g(b)m(y)g (in)m(ternal)f(MPI)h(\(and)g(nativ)m(e\))g(comm)m(u-)150 1566 y(nication)f(ev)m(en)m(ts)h(\(and)g(states\).)41 b(Curren)m(tly)-8 b(,)27 b(there)g(is)g(v)m(ery)h(little)e(information) g(a)m(v)-5 b(ailable)27 b(concerning)150 1679 y(in)m(ternal)i(MPI)h(ev) m(en)m(ts,)i(with)e(the)g(notable)g(exception)h(of)f(the)h(arriv)-5 b(al)29 b(of)h(a)h(message.)332 1792 y(W)-8 b(e)29 b(defer)f(sp)s (eci\014cation)f(of)i(ho)m(w)f(the)g(data)h(is)e(recorded,)i(k)m(ept)g (and)f(stored)g(un)m(til)e(w)m(e)j(ha)m(v)m(e)h(some)150 1905 y(exp)s(erience)k(with)f(implemen)m(tations.)52 b(But)34 b(it)g(should)f(b)s(e)h(clear)g(that)h(one)g(w)m(ould)e(lik)m (e)h(to)h(minimize)150 2018 y(the)c(impact)f(of)g(instrumen)m(tation)f (on)h(the)h(timing)e(b)s(eha)m(vior)g(of)i(an)f(application.)150 2223 y Fi(Ev)m(en)m(ts:)525 2336 y Fp(Starting)g(time)g(of)h(a)g (message)g(transfer)525 2449 y(Execution)f(time)g(of)h(a)g(message)g (transfer)525 2562 y(Completion)e(time)h(of)h(a)g(message)g(transfer) 525 2674 y(Execution)f(time)g(of)h(timeout)f(handlers)525 2787 y(Starting)g(time)g(for)g(v)-5 b(arious)30 b(other)g(system)h (resources)525 2900 y(Execution)f(time)g(for)h(v)-5 b(arious)29 b(other)i(system)f(resources)525 3013 y(Completion)f(time)h(for)h(v)-5 b(arious)29 b(other)h(system)h(resources)150 3368 y Ff(8.3.1)97 b(Timing)32 b(Co)m(rrectness)150 3540 y Fp(Timing)c(correctness)j(has)f (these)h(prop)s(erties:)286 3745 y Fk(\017)46 b Fp(Program)28 b(can)f(pro)s(ceed,)h(in)e(a)i(meaningful)d(w)m(a)m(y)-8 b(,)30 b(only)c(if)g(all)h(previous)e(steps)j(are)f(time-correct.)286 3930 y Fk(\017)46 b Fp(Most)29 b(basic)f Fl(MPI)f Fp(\(curren)m(t\))i (functions)d(should)g(ha)m(v)m(e)j(analogous)g(functions)d(for)i (realtime)f(that)377 4043 y(guaran)m(tee)32 b(message)g(passing)d(in)g (a)i(timely)e(fashion.)332 4248 y(F)-8 b(or)23 b(practicalit)m(y)-8 b(,)24 b(the)f(w)m(ork)f(of)h(this)e(c)m(hapter)i(should)e(b)s(e)g(to)j (minimize)19 b(the)k(n)m(um)m(b)s(er)e(of)i(new)f(func-)150 4360 y(tions)h(in)m(tro)s(duced)f(in)m(to)i Fl(MPI)g Fp(pro\014les)e(to)j(pro)m(vide)e(these)h(features.)39 b(F)-8 b(or)24 b(instance,)h(w)m(e)g(should)c(not)k(add)150 4473 y(new)j(v)m(ersions)g(of)g(eac)m(h)i(send)e(and)f(receiv)m(e)j(mo) s(de,)e(increasing)f(the)i(n)m(um)m(b)s(er)e(of)i(calls)e(m)m (ultiplicitiv)m(ely)-8 b(,)150 4586 y(but)30 b(rather)g(seek)h (solutions)e(that)i(cause)g(additiv)m(e)e(additions)f(in)i(the)g(n)m (um)m(b)s(er)f(of)i(calls.)150 4829 y Ff(8.3.2)97 b(Virtual)33 b(Channels)150 5000 y Fp(The)k(idea)h(of)g(a)g(soft)m(w)m(are)i (virtual)c(c)m(hannel)h(\(V)m(C\))i(is)e(not)h(new)g(in)e(a)j(parallel) d(mac)m(hine.)63 b(Thinking)150 5113 y(Mac)m(hines)28 b(has)f(it)h(on)f(the)h(CM-5)g(via)g(CMMD)g(where)f(the)h(motiv)-5 b(ation)28 b(is)e(to)j(minimize)c(handshaking)150 5226 y(o)m(v)m(erhead.)42 b(Our)29 b(motiv)-5 b(ations)30 b(for)g(ha)m(ving)g(V)m(Cs)h(in)e Fl(MPI)p Fp(/R)-8 b(T)30 b(are)h(as)g(follo)m(ws:)286 5407 y Fk(\017)46 b Fp(Abilit)m(y)29 b(to)i(exploit)e(p)s(ersisten)m(t)h(comm)m(unication)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 7 8 bop 150 -200 a Fh(8.3.)72 b(INSTR)m(UMENT)-8 b(A)g(TION)2424 b Fp(7)286 99 y Fk(\017)46 b Fp(Deadlo)s(c)m(k)31 b(a)m(v)m(oidance)286 286 y Fk(\017)46 b Fp(Once)30 b(established,)f(V)m(C)h(should)e(guaran) m(tee)k(prop)s(erties)c(critical)h(for)h(timing)f(correctness)h(lik)m (e:)480 474 y Fi({)45 b Fp(Bounds)30 b(on)g(end-to-end)h(dela)m(y)480 620 y Fi({)45 b Fp(Minim)m(um)28 b(bandwidth)480 766 y Fi({)45 b Fp(Bu\013er)31 b(space)332 954 y(A)m(t)45 b(the)g(Marc)m(h)g(meeting,)j(the)c(group)g(agreed)h(that)g(V)m(C's)f (w)m(ould)f(an)i(excellen)m(t)f(v)m(ehicle)g(for)150 1067 y(implemen)m(tation,)29 b(but)h(w)m(ere)h(not)f(strongly)g (committed)h(to)g(their)e(use)h(as)h(an)f(in)m(terface.)150 1310 y Ff(8.3.3)97 b(Deadlo)s(ck)33 b(Avoidance/Recovery)150 1482 y Fp(It)j(is)f(imp)s(ortan)m(t)g(to)h(b)s(e)g(able)f(to)i(prev)m (en)m(t,)h(a)m(v)m(oid)e(or)g(in)e(the)i(w)m(orst)h(case)f(detect)i (and)d(reco)m(v)m(er)i(from)150 1595 y(deadlo)s(c)m(ks.)56 b(The)36 b(problem)e(of)i(deadlo)s(c)m(ks)f(is)g(di\016cult)f(in)g (distributed)f(realtime)i(systems)h(and)f(it)g(is)150 1707 y(exacerbated)d(with)d(prioritization.)332 1820 y(Tw)m(o)h(p)s(ossible)e(side)i(issues)f(are)h(as)h(follo)m(ws:)286 2008 y Fk(\017)46 b Fp(Liv)m(elo)s(c)m(k)37 b(|)g(it)f(happ)s(ens)g (when)f(t)m(w)m(o)k(in)m(teracting)e(tasks)g(miss)f(deadlines)f(due)h (to)i(one)f(doing)377 2121 y(some)31 b(secondary)g(activit)m(y)f(when)g (the)g(other)h(tries)f(to)h(rendezv)m(ous.)286 2309 y Fk(\017)46 b Fp(Orphan)38 b(pro)s(cesses)i(|)g(in)f(the)h(presence)g (of)g(spa)m(wn)f(capabilit)m(y)g(\(a)i(pro)s(cess)e(creating)i(other) 377 2421 y(pro)s(cesses\))31 b(and)f(failures.)332 2609 y Fl(MPI)p Fp(/R)-8 b(T)40 b(will)e(utilize)g(timeouts)i(to)h(help)e (applications)f(deal)i(with)f(deadlo)s(c)m(k)h(in)e(the)j(face)g(of)150 2722 y(p)s(ossible)h(remote)j(faults)f(or)g(remote)i(resource)e (exhaustion.)83 b(Both)45 b(sender-)f(and)f(receiv)m(er-based)150 2835 y(timeouts)30 b(are)h(to)g(b)s(e)f(considered.)332 2948 y(Sp)s(eci\014cally)-8 b(,)35 b(w)m(e)h(exp)s(ect)h(non-blo)s(c)m (king,)f(p)s(ersisten)m(t)f(comm)m(unication)g(to)h(b)s(e)g(used)f(to)h (reco)m(v)m(er)150 3061 y(from)d(deadlo)s(c)m(k.)50 b(The)33 b(follo)m(wing)f(allo)m(ws)h(one)h(to)h(async)m(hronously)d(start)i(a)g (receiv)m(e,)i(and)d(then)g(w)m(ait)150 3174 y(immediately)c(for)h(its) g(completion,)f(with)h(a)g(de\014ned)f(timeout.)150 3386 y Fd(MPI_Status)45 b(status;)150 3499 y(MPI_Request)g(request;)150 3612 y(MPI_Receive_init\(buf,)d(count,)k(datatype,)f(src,)i(tag,)g (comm,)f(&request\);)150 3725 y(...)150 3838 y(for\(;;\))150 3951 y({)293 4064 y(MPI_Start\(request\);)293 4176 y (MPI_Wait_timeout\(request,)41 b(&status\);)150 4289 y(})332 4502 y Fp(Alternativ)m(ely)-8 b(,)30 b(a)h(single)e(call,)150 4714 y Fd(MPI_Start_and_wait\(reque)o(st,)41 b(status,)46 b(timeout\);)332 4927 y Fp(could)33 b(b)s(e)h(considered,)g(and)g(migh) m(t)g(ha)m(v)m(e)h(v)-5 b(alue)34 b(in)f(that)i(it)e(is)h(atomic.)53 b(T)-8 b(o)34 b(b)s(e)g(complete,)i(this)150 5040 y(prop)s(osal)29 b(should)f(address)i(\\all")g(mo)s(des,)g(as)h(w)m(ell)e(as)i(single)e (p)s(ersisten)m(t)g(op)s(erations.)332 5153 y(A)e(similar)e(sequence)i (of)h(calls)e(w)m(ould)g(b)s(e)g(used)h(to)h(ac)m(hiev)m(e)g(send)f (with)f(timeout.)39 b(This)26 b(approac)m(h)150 5266 y(mak)m(es)31 b(only)f(an)g(additiv)m(e)f(addition)g(to)i(the)g(n)m(um) m(b)s(er)e(of)h(calls)g(in)f(MPI.)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 8 9 bop 150 -200 a Fp(8)998 b Fh(CHAPTER)30 b(8.)71 b(REAL)-8 b(TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)150 99 y Ff(8.3.4)97 b(F)m(ault)33 b(T)-8 b(olerance)150 270 y Fp(Issues)30 b(of)g(fault)g(tolerance)h(are)g(imp)s(ortan)m(t)e(for)h(realtime)g (and)g(em)m(b)s(edded)f(systems:)286 483 y Fk(\017)46 b Fp(Limit)29 b(failures)286 670 y Fk(\017)46 b Fp(F)-8 b(ault)31 b(detection)286 858 y Fk(\017)46 b Fp(Pro)s(cess)31 b(migration)e(\(extend)i(dynamic)e(pro)s(cesses)h(in)f Fl(MPI-2)p Fp(?\))286 1046 y Fk(\017)46 b Fp(Lo)s(cal)30 b(bu\013er)g(managemen)m(t)286 1233 y Fk(\017)46 b Fp(Replication)286 1421 y Fk(\017)g Fp(History)30 b(preserv)-5 b(ation)332 1633 y(Our)34 b(curren)m(t)i(idea)f(for)h(ho)m(w)f(fault)g(tolerance)i (is)e(to)h(b)s(e)f(accomplished)g(is)f(via)i Fd(MPI)p 3302 1633 29 4 v 33 w(SPAWN)f Fp(and)150 1746 y Fd(MPI)p 300 1746 V 34 w(NOTIFY)p Fp(,)28 b(b)s(oth)i(describ)s(ed)e(in)h(the)i (Dynamic)f(c)m(hapter)h(of)g Fl(MPI-2)p Fp(.)332 1859 y(Another)k(approac)m(h,)i(discussed)d(early)h(on)g(at)h(the)g Fl(MPI-2)g Fp(F)-8 b(orum,)37 b(and)d(expanded)h(here,)i(is)d(to)150 1972 y(pro)m(vide)29 b(a)i(reco)m(v)m(erable)h(comm)m(unicator.)41 b(This)29 b(w)m(ould)g(b)s(e)g(handled)g(as)i(follo)m(ws:)286 2185 y Fk(\017)46 b Fp(A)31 b(fault)e(o)s(ccurs)h(in)g(some)g(no)s(de)g (or)g(no)s(des)g(of)g(a)h(comm)m(unicator)286 2372 y Fk(\017)46 b Fp(The)30 b(paren)m(t)h(of)f(the)h(spa)m(wned)f(group)f (is)h(noti\014ed)f(of)i(the)f(fault)g(or)g(faults)286 2560 y Fk(\017)46 b Fp(The)28 b(paren)m(t,)h(at)g(its)e(option,)h (kills)e(the)i(fault)m(y)g(no)s(de)f(or)h(no)s(des)g(of)g(the)g(comm)m (unicator)h(through)377 2673 y(an)i(async)m(hronous)e(mec)m(hanism)h (\()p Fj(e.g.)p Fp(,)g Fd(MPI)p 1913 2673 V 34 w(SIGNAL)p Fp(\))286 2860 y Fk(\017)46 b Fp(The)28 b(paren)m(t)g(signals)f(the)i (remaining)d(pro)s(cesses)i(of)g(the)h(comm)m(unicator)f(async)m (hronously)-8 b(,)29 b(and)377 2973 y(they)i(execute)h(a)e(signal)f (handler)g(as)i(follo)m(ws:)377 3223 y Fd(MPI_COMM_RECREATE\(IN)43 b(oldcomm,)i(IN)i(newgroup,)f(OUT)g(newcomm,)g(OUT)h(status\);)377 3473 y Fp(where)31 b(the)h Fd(newgroup)d Fp(has)i(b)s(een)g(passed)g (as)h(part)f(of)h(the)f(fault)g(reco)m(v)m(ery)-8 b(,)34 b(through)d(a)h(mec)m(ha-)377 3586 y(nism)27 b(to)h(b)s(e)g(de\014ned.) 39 b(It)28 b(ma)m(y)h(b)s(e)e(necessary)h(for)g(a)h(single)e(no)s(de)g (to)i(execute)g(sev)m(eral)g(handlers,)377 3699 y(if)k(it)g(is)g(in)m (v)m(olv)m(ed)g(in)g(a)h(n)m(um)m(b)s(er)e(of)i(comm)m(unicators,)h (and)e(implemen)m(tations)g(should)e(b)s(e)i(able)377 3812 y(to)e(do)g(this)e(e\016cien)m(tly)-8 b(.)332 4024 y(The)30 b(seman)m(tics)g(of)h Fd(MPI)p 1185 4024 V 33 w(COMM)p 1410 4024 V 34 w(RECREATE)d Fp(are)j(that)g(it)e(sync)m (hronizes)h(o)m(v)m(er)i(the)e Fd(newgroup)p Fp(.)150 4311 y Fm(8.4)116 b(Real-time)37 b(P)m(ersistent)i(Channels)150 4514 y Fp(One)h(of)h(the)g(primary)e(goals)i(of)f Fl(MPI)p Fp(/R)-8 b(T)41 b(is)f(to)h(pro)m(vide)f(real-time)g(functionalit)m(y)f (with)h(minimal)150 4627 y(mo)s(di\014cation)31 b(of)i(the)g(existing)e (MPI)i(standard.)47 b(Th)m(us,)32 b(one)h(should)e(minimize)f Fj(additive)j Fp(new)g(func-)150 4740 y(tions)e(for)h(MPI)f(whic)m(h)g (mo)s(dify)f(the)i(man)m(y)f(send)g(and)g(receiv)m(e)i(calls)e(and)g (result)g(in)f(a)i(m)m(ultiplicativ)m(e)150 4852 y(c)m(hange)j(to)g (the)g(MPI)f(standard.)51 b(One)34 b(w)m(a)m(y)h(this)e(can)i(b)s(e)e (accomplished)g(is)g(with)g(the)i(mo)s(di\014cation)150 4965 y(of)c(the)f Fl(MPI)g Fp(p)s(ersisten)m(t)g(comm)m(unications)f (to)i(pro)m(vide)f(sc)m(heduled)f(sends)h(and)f(receiv)m(es.)332 5078 y(P)m(ersisten)m(t)23 b(c)m(hannels)f(are)h(prop)s(osed)e(in)g (the)i Fl(MPI-2)g Fp(collectiv)m(e)g(c)m(hapter.)39 b(The)22 b(real-time)g(v)-5 b(arian)m(ts)150 5191 y(pro)m(vide)29 b(the)i(follo)m(wing)e(features:)286 5404 y Fk(\017)46 b Fp(Negotiation)32 b(of)e(adv)-5 b(ance)31 b(reserv)-5 b(ations)30 b(on)g(net)m(w)m(ork)i(or)e(PV)m(Cs)g(...)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 9 10 bop 150 -200 a Fh(8.4.)72 b(REAL-TIME)30 b(PERSISTENT)e(CHANNELS) 1661 b Fp(9)286 99 y Fk(\017)46 b Fp(Addressing)29 b(an)m(y)h(sp)s (ecial)f(issues)g(of)i(alignmen)m(t/misalignmen)m(t)286 286 y Fk(\017)46 b Fp(Negotiation)32 b(for)e(who)g(do)s(es)g(an)m(y)h (needed)f(data)h(con)m(v)m(ersion)286 474 y Fk(\017)46 b Fp(Change)31 b(of)f(proto)s(col)g(as)h(function)e(of)i(length)e(of)i (data)332 686 y(with)e(the)h(addition)f(of)i(qualit)m(y)e(of)i(service) f(and)g(priorit)m(y)e(options.)332 799 y(W)-8 b(e)31 b(prop)s(ose:)150 1101 y Fl(MPI)p 318 1101 28 4 v 33 w(RTCHANNEL)p 886 1101 V 33 w(SEND)p 1154 1101 V 33 w(INIT\(buf,)g (count,)g(t)m(yp)s(e,)g(dest,)g(qosblo)s(ck,)g(comm,)h(request)f(\))233 1256 y Fc(IN)312 b Fl(buf)1051 b Fc(address)27 b(of)g(send)h(bu\013er)g (\(c)n(hoice\))233 1406 y(IN)312 b Fl(count)961 b Fc(in)n(teger)18 b(arra)n(y)e(\(of)j(length)f(group)g(size\))g(sp)r(ecifying)g(the)h(n)n (um-)1810 1519 y(b)r(er)28 b(of)g(elemen)n(ts)f(to)g(send)233 1669 y(IN)312 b Fl(t)m(yp)s(e)1011 b Fc(data)28 b(t)n(yp)r(e)f(of)h (send)f(bu\013er)h(\(handle\).)233 1819 y(IN)312 b Fl(dest)1018 b Fc(rank)27 b(of)h(destination)f(data)g(\(in)n(teger\).)233 1970 y(INOUT)125 b Fl(qosblo)s(ck)845 b Fc(opaque)27 b(qualit)n(y)g(of)h(service)e(parameters.)233 2120 y(IN)312 b Fl(comm)944 b Fc(comm)n(unicator)27 b(\(handle\).)233 2270 y(OUT)217 b Fl(request)900 b Fc(request)27 b(ob)5 b(ject)28 b(\(p)r(ersisten)n(t)f(request\))332 2519 y Fp(This)34 b(is)h(a)h(collectiv)m(e)h(op)s(eration)e(with)g(a)h(single) f(no)s(de)g(in)g(the)h(comm)m(unicator,)i(namely)d Fd(dest)p Fp(,)150 2632 y(whic)m(h)29 b(is)h(to)h(call)332 2745 y Fl(MPI)p 500 2745 V 32 w(CHANNEL)p 946 2745 V 35 w(RECV)p 1213 2745 V 32 w(INIT\(\))p Fp(,)332 2858 y(de\014ned)e(next.)150 3160 y Fl(MPI)p 318 3160 V 33 w(RTCHANNEL)p 886 3160 V 33 w(RECV)p 1151 3160 V 33 w(INIT\(buf,)i(count,)g(t)m(yp)s(e,)g (src,)g(qosblo)s(ck,)g(comm,)h(request)f(\))233 3314 y Fc(IN)312 b Fl(buf)1051 b Fc(address)27 b(of)g(send)h(bu\013er)g(\(c) n(hoice\))233 3464 y(IN)312 b Fl(count)961 b Fc(in)n(teger)18 b(arra)n(y)e(\(of)j(length)f(group)g(size\))g(sp)r(ecifying)g(the)h(n)n (um-)1810 3577 y(b)r(er)28 b(of)g(elemen)n(ts)f(to)g(send)233 3727 y(IN)312 b Fl(t)m(yp)s(e)1011 b Fc(data)28 b(t)n(yp)r(e)f(of)h (send)f(bu\013er)h(\(handle\).)233 3878 y(IN)312 b Fl(src)1067 b Fc(rank)27 b(of)h(source)e(data)h(\(in)n(teger\).)233 4028 y(INOUT)125 b Fl(qosblo)s(ck)845 b Fc(opaque)27 b(qualit)n(y)g(of)h(service)e(parameters.)233 4178 y(IN)312 b Fl(comm)944 b Fc(comm)n(unicator)27 b(\(handle\).)233 4329 y(OUT)217 b Fl(request)900 b Fc(request)27 b(ob)5 b(ject)28 b(\(p)r(ersisten)n(t)f(request\))332 4577 y Fp(A)k(full)f(c)m(hannel)h(can)h(b)s(e)e(constructed)i(b)m(y)g(the)f (use)h(of)f(t)m(w)m(o)i(half-c)m(hannel)d(initializations.)41 b(They)150 4690 y(are)31 b(logically)e(unrelated,)g(ev)m(en)i(if)f (they)g(share)g(the)h(same)g(comm)m(unicator.)332 4803 y(In)f(order)f(to)j(maximally)c(allo)m(w)i(for)g(sp)s(eci\014cation)f (of)i(desired)e(bu\013ering)g(sc)m(hemes)i(in)e(the)h(c)m(han-)150 4916 y(nels,)g(a)g(ready)h(v)-5 b(arian)m(t)30 b(and)g(a)g(sync)m (hronous)g(v)-5 b(arian)m(t)30 b(are)h(needed:)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 10 11 bop 150 -200 a Fp(10)953 b Fh(CHAPTER)30 b(8.)71 b(REAL)-8 b(TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)150 99 y Fl(MPI)p 318 99 28 4 v 33 w(RTCHANNEL)p 886 99 V 33 w(SSEND)p 1205 99 V 32 w(INIT\(buf,)g(count,)f(t)m(yp)s(e,)g(dest,)f (qosblo)s(ck,)i(comm,)f(request)g(\))233 253 y Fc(IN)312 b Fl(buf)1051 b Fc(address)27 b(of)g(send)h(bu\013er)g(\(c)n(hoice\)) 233 395 y(IN)312 b Fl(count)961 b Fc(in)n(teger)18 b(arra)n(y)e(\(of)j (length)f(group)g(size\))g(sp)r(ecifying)g(the)h(n)n(um-)1810 508 y(b)r(er)28 b(of)g(elemen)n(ts)f(to)g(send)233 650 y(IN)312 b Fl(t)m(yp)s(e)1011 b Fc(data)28 b(t)n(yp)r(e)f(of)h(send)f (bu\013er)h(\(handle\).)233 792 y(IN)312 b Fl(dest)1018 b Fc(rank)27 b(of)h(destination)f(data)g(\(in)n(teger\).)233 934 y(INOUT)125 b Fl(qosblo)s(ck)845 b Fc(opaque)27 b(qualit)n(y)g(of)h (service)e(parameters.)233 1076 y(IN)312 b Fl(comm)944 b Fc(comm)n(unicator)27 b(\(handle\).)233 1218 y(OUT)217 b Fl(request)900 b Fc(request)27 b(ob)5 b(ject)28 b(\(p)r(ersisten)n(t) f(request\))150 1656 y Fl(MPI)p 318 1656 V 33 w(RTCHANNEL)p 886 1656 V 33 w(SRECV)p 1202 1656 V 32 w(INIT\(buf,)32 b(count,)f(t)m(yp)s(e,)f(src,)h(qosblo)s(ck,)h(comm,)g(request)e(\))233 1810 y Fc(IN)312 b Fl(buf)1051 b Fc(address)27 b(of)g(send)h(bu\013er)g (\(c)n(hoice\))233 1952 y(IN)312 b Fl(count)961 b Fc(in)n(teger)18 b(arra)n(y)e(\(of)j(length)f(group)g(size\))g(sp)r(ecifying)g(the)h(n)n (um-)1810 2065 y(b)r(er)28 b(of)g(elemen)n(ts)f(to)g(send)233 2207 y(IN)312 b Fl(t)m(yp)s(e)1011 b Fc(data)28 b(t)n(yp)r(e)f(of)h (send)f(bu\013er)h(\(handle\).)233 2349 y(IN)312 b Fl(src)1067 b Fc(rank)27 b(of)h(source)e(data)h(\(in)n(teger\).)233 2491 y(INOUT)125 b Fl(qosblo)s(ck)845 b Fc(opaque)27 b(qualit)n(y)g(of)h(service)e(parameters.)233 2633 y(IN)312 b Fl(comm)944 b Fc(comm)n(unicator)27 b(\(handle\).)233 2775 y(OUT)217 b Fl(request)900 b Fc(request)27 b(ob)5 b(ject)28 b(\(p)r(ersisten)n(t)f(request\))150 3213 y Fl(MPI)p 318 3213 V 33 w(RTCHANNEL)p 886 3213 V 33 w(RSEND)p 1213 3213 V 33 w(INIT\(buf,)k(count,)g(t)m(yp)s(e,)g(dest,)f(qosblo)s (ck,)i(comm,)g(request)e(\))233 3367 y Fc(IN)312 b Fl(buf)1051 b Fc(address)27 b(of)g(send)h(bu\013er)g(\(c)n(hoice\))233 3509 y(IN)312 b Fl(count)961 b Fc(in)n(teger)18 b(arra)n(y)e(\(of)j (length)f(group)g(size\))g(sp)r(ecifying)g(the)h(n)n(um-)1810 3622 y(b)r(er)28 b(of)g(elemen)n(ts)f(to)g(send)233 3764 y(IN)312 b Fl(t)m(yp)s(e)1011 b Fc(data)28 b(t)n(yp)r(e)f(of)h(send)f (bu\013er)h(\(handle\).)233 3906 y(IN)312 b Fl(dest)1018 b Fc(rank)27 b(of)h(destination)f(data)g(\(in)n(teger\).)233 4048 y(INOUT)125 b Fl(qosblo)s(ck)845 b Fc(opaque)27 b(qualit)n(y)g(of)h(service)e(parameters.)233 4190 y(IN)312 b Fl(comm)944 b Fc(comm)n(unicator)27 b(\(handle\).)233 4332 y(OUT)217 b Fl(request)900 b Fc(request)27 b(ob)5 b(ject)28 b(\(p)r(ersisten)n(t)f(request\))150 4770 y Fl(MPI)p 318 4770 V 33 w(RTCHANNEL)p 886 4770 V 33 w(RRECV)p 1210 4770 V 32 w(INIT\(buf,)32 b(count,)f(t)m(yp)s(e,)g(src,)g(qosblo)s (ck,)g(comm,)h(request)f(\))233 4924 y Fc(IN)312 b Fl(buf)1051 b Fc(address)27 b(of)g(send)h(bu\013er)g(\(c)n(hoice\))233 5066 y(IN)312 b Fl(count)961 b Fc(in)n(teger)18 b(arra)n(y)e(\(of)j (length)f(group)g(size\))g(sp)r(ecifying)g(the)h(n)n(um-)1810 5179 y(b)r(er)28 b(of)g(elemen)n(ts)f(to)g(send)233 5321 y(IN)312 b Fl(t)m(yp)s(e)1011 b Fc(data)28 b(t)n(yp)r(e)f(of)h(send)f (bu\013er)h(\(handle\).)233 5463 y(IN)312 b Fl(src)1067 b Fc(rank)27 b(of)h(source)e(data)h(\(in)n(teger\).)233 5605 y(INOUT)125 b Fl(qosblo)s(ck)845 b Fc(opaque)27 b(qualit)n(y)g(of)h(service)e(parameters.)233 5747 y(IN)312 b Fl(comm)944 b Fc(comm)n(unicator)27 b(\(handle\).)233 5889 y(OUT)217 b Fl(request)900 b Fc(request)27 b(ob)5 b(ject)28 b(\(p)r(ersisten)n(t)f(request\))332 6138 y Fp(Unlik)m(e)g(send)h(and)f(receiv)m(e,)j(that)f(p)s(ermit)e(mixing)f (and)i(matc)m(hing)g(of)h(t)m(yp)s(es)f(of)h(op)s(erations,)f(only)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 11 12 bop 150 -200 a Fh(8.5.)72 b(TIME-DRIVEN)31 b Fl(MPI)p Fh(/R)-8 b(T)2292 b Fp(11)150 99 y(exactly)39 b(the)g(same)g(t)m(yp)s (e)g(of)g(c)m(hannel)f(calls)g(ma)m(y)h(b)s(e)f(matc)m(hed.)67 b Fl(MPI)p 2679 99 28 4 v 32 w(ANYSOURCE)37 b Fp(ma)m(y)j(not)f(b)s(e) 150 211 y(p)s(osed)e(as)h(a)f(source)h(for)f(the)h(completion)f(of)h(a) g(c)m(hannel)f(initialization.)59 b(Only)36 b(built-in)e(datat)m(yp)s (es)150 324 y(ma)m(y)d(b)s(e)f(sp)s(eci\014ed)e(in)h(c)m(hannels.)332 437 y(The)24 b(qualit)m(y)g(of)h(service)f(parameters)h(will)d(b)s(e)i (de\014ned)g(for)g(this)g(new)g(opaque)h(ob)5 b(ject,)27 b Fl(MPI)p 3513 437 V 32 w(QOS)p Fp(.)150 550 y(These)j(ma)m(y)h(not)g (all)e(b)s(e)h(supp)s(orted)e(on)j(all)e(comm)m(unicators.)150 837 y Fm(8.5)116 b(Time-driven)36 b(MPI/RT)150 1040 y Fp(The)e(primary)f(goal)i(of)f(the)h(time-driv)m(en)e(approac)m(h)i(to) g Fl(MPI)p Fp(/R)-8 b(T)35 b(is)f(to)h(allo)m(w)f(the)h(real-time)f (appli-)150 1152 y(cation)f(su\016cien)m(t)g(con)m(trol)g(of)g(the)h (en)m(vironmen)m(t)e(in)g(whic)m(h)g(it)g(is)g(running)f(so)i(that)h (it)e(can)h(explicitly)150 1265 y(sc)m(hedule)42 b(its)h (message-passing)g(activities)g(and)f(resource)i(usage.)79 b(Since)42 b(MPI)h(is)f(designed)g(as)i(a)150 1378 y(message-passing)30 b(library)-8 b(,)29 b(it)g(can)h(not)g(sc)m(hedule)g(b)m(y)g(itself,)f (but)g(m)m(ust)h(dep)s(end)e(up)s(on)g(the)i(op)s(erating)150 1491 y(system)h(and)e(comm)m(unication)h(and)g(net)m(w)m(ork)h(proto)s (cols)f(to)h(enforce)g(sp)s(eci\014ed)e(sc)m(hedules.)332 1604 y(An)43 b(application)f(using)h(time-driv)m(en)f Fl(MPI)p Fp(/R)-8 b(T)44 b(will)d(b)s(e)j(able)f(to)h(sp)s(ecify)f (time)g(in)m(terv)-5 b(als)43 b(to)150 1717 y(b)s(ound)34 b(the)j(resource)g(usage)g(of)f(comm)m(unication)g(op)s(erations)g (using)f(globally)g(sync)m(hronized)h(clo)s(c)m(k)150 1830 y(v)-5 b(alues,)31 b(and)g(the)h(implemen)m(tation)e(of)h (time-driv)m(en)g Fl(MPI)p Fp(/R)-8 b(T)31 b(will)e(ful\014ll)f(these)k (requiremen)m(ts)e(with)150 1943 y(minimal)e(c)m(hanges)j(to)g(the)g (MPI)f(standard.)332 2056 y(F)-8 b(or)46 b(practicalit)m(y)-8 b(,)49 b(the)d(w)m(ork)f(of)g(our)g(e\013orts)h(has)f(b)s(een)g(to)h (minimize)d(the)i(n)m(um)m(b)s(er)f(of)h(new)150 2169 y(functions)20 b(in)m(tro)s(duced)h(in)m(to)h Fl(MPI)p Fp(/R)-8 b(T)22 b(pro\014les)e(to)j(pro)m(vide)e(these)h(real-time)g (features.)38 b(MPI)22 b(supp)s(orts)150 2282 y(b)s(oth)h(blo)s(c)m (king)f(and)g(non-blo)s(c)m(king)g(sends)g(and)h(receiv)m(es,)j(as)d(w) m(ell)g(bu\013ered,)g(sync)m(hronous,)h(and)f(ready)150 2394 y(v)m(ersions)g(of)h(eac)m(h.)40 b(W)-8 b(e)25 b(decided)e(it)h(w) m(as)g(imp)s(ortan)m(t)f(not)h(add)g(new)f(v)m(ersions)g(of)h(eac)m(h)i (send)d(and)g(receiv)m(e)150 2507 y(mo)s(de,)j(increasing)e(the)h(n)m (um)m(b)s(er)f(of)h Fl(MPI)g Fp(calls)f(m)m(ultiplicativ)m(ely)-8 b(.)37 b(Rather,)27 b(w)m(e)e(sough)m(t)h(solutions)d(that)150 2620 y(w)m(ould)29 b(in)m(v)m(olv)m(e)i(additiv)m(e)e(additions)g(in)g (the)h(n)m(um)m(b)s(er)f(of)i(MPI)f(functions.)150 2864 y Ff(8.5.1)97 b(Scheduling)33 b(Message)g(T)-8 b(ransfers)150 3035 y Fp(The)22 b(existing)f Fl(MPI)h Fp(message)i(transfer)e(op)s (erations)f(lac)m(k)i(t)m(w)m(o)h(parameters)f(whic)m(h)e(w)m(e)i (consider)e(critical)150 3148 y(for)41 b(real-time)g(applications,)h (esp)s(ecially)e(for)h(the)g(time-driv)m(en)f(programming)g(paradigm.) 72 b(These)150 3261 y(are)37 b(a)g(starting)f(time)h(of)f(the)h(op)s (eration)f(and)g(a)h(timeout)g(for)f(completion)g(of)h(the)g(op)s (eration.)58 b(The)150 3374 y(starting)39 b(time)f(of)h(an)g(op)s (eration)f(should)f(b)s(e)h(considered)g(as)h(a)g(sp)s(ecial)f(case)i (of)f(an)f(ev)m(en)m(t.)68 b(While)150 3487 y(certain)31 b(applications)e(\(esp)s(ecially)g(em)m(b)s(edded)h(ones\))i(prefer)e (an)h(ev)m(en)g(\014ner)f(gran)m(ularit)m(y)g(of)h(con)m(trol,)150 3600 y(w)m(e)36 b(tried)f(to)i(strik)m(e)e(a)h(balance)g(b)s(et)m(w)m (een)h(the)f(feasibilit)m(y)d(of)j(an)g(implemen)m(tation)e(and)h(what) h(time-)150 3713 y(driv)m(en)29 b(application)f(designers)h(w)m(an)m(t) i(to)g(use.)40 b(F)-8 b(or)31 b(example,)f(there)h(is)e(a)h(hard)f(lo)m (w)m(er)i(b)s(ound)d(for)i(the)150 3826 y(starting)g(time,)g(but)g(no)g (hard)g(upp)s(er)e(b)s(ound)g(on)j(the)f(starting)g(time.)332 3939 y(One)25 b(distinctiv)m(e)f(c)m(haracteristic)i(of)g(the)g (time-driv)m(en)e(approac)m(h)i(to)g(real-time)g(message-passing)150 4052 y(is)37 b(its)h(lac)m(k)g(of)h(need)f(for)g(queues)f(and)h(system) g(bu\013ers.)63 b(Applications)36 b(use)i Fj(r)-5 b(e)g(ady)42 b(mo)-5 b(de)40 b Fp(message-)150 4164 y(passing)f(implicitly)-8 b(.)69 b(A)40 b(ready-mo)s(de)h(send)f(ma)m(y)h(b)s(e)f(started)h Fj(only)h Fp(if)d(the)i(matc)m(hing)g(receiv)m(e)g(has)150 4277 y(already)g(b)s(een)f(p)s(osted)g([].)73 b(On)40 b(man)m(y)h(systems,)j(this)c(allo)m(ws)g(the)h(remo)m(v)-5 b(al)41 b(of)h(a)f(hand-shak)m(e)g(op-)150 4390 y(eration)c(and)f (results)g(in)g(impro)m(v)m(ed)g(p)s(erformance.)60 b(Since)36 b(a)h(parallel)f(time-driv)m(en)f(program)i(m)m(ust)150 4503 y(globally)d(sc)m(hedule)h(all)g(message)i(transmissions,)e(the)h (message)h(receiv)m(er)f(alw)m(a)m(ys)g(kno)m(ws)g(to)g(exp)s(ect)150 4616 y(an)28 b(incoming)e(message.)41 b(Th)m(us,)28 b(for)f(reasons)h (of)g(e\016ciency)g(and)f(simplicit)m(y)-8 b(,)27 b(a)h(time-driv)m(en) f(MPI/R)-8 b(T)150 4729 y(implemen)m(tation)32 b(should)f(not)j(do)f (an)m(y)g(hand)g(shaking)f(\(as)i(man)m(y)f(of)h(the)f(existing)f (implemen)m(tation)150 4842 y(do\).)45 b(It)32 b(is)f(up)g(to)i(the)f (application)e(to)j(sp)s(ecify)d(times)i(\(for)g(start)g(and)f (timeout\))i(to)f(ensure)f(that)i(the)150 4955 y(sender/receiv)m(er)e (\(lo)s(cal/remote\))g(pairs)e(are)i(w)m(orking)f(in)f(sync)m(hron)m(y) -8 b(.)332 5068 y(Another)39 b(distinctiv)m(e)e(feature)i(is)f(a)h(p)s (oten)m(tially)e(more)i(e\016cien)m(t)g(w)m(a)m(y)h(of)f(using)e (noti\014cations,)150 5181 y(whic)m(h)21 b(can)h(b)s(e)g(more)g (minimal)d(than)j(with)f(other)h(approac)m(hes.)39 b(A)22 b(time-driv)m(en)f(MPI/R)-8 b(T)23 b(application)150 5294 y(do)s(es)g(not)h(need)g(to)h(b)s(e)e(noti\014ed)f(when)h(a)h (message)h(is)e(transmitted)g(successfully)f(and)h(on)h(time;)i (instead)150 5406 y(it)36 b(is)f(noti\014ed)g(only)h(when)f(an)h(error) g(o)s(ccurs)g(\(e.g.,)j(a)e(timeout)f(expires\).)58 b(A)36 b(matter)i(of)e(signi\014can)m(t)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 12 13 bop 150 -200 a Fp(12)953 b Fh(CHAPTER)30 b(8.)71 b(REAL)-8 b(TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)150 99 y Fp(discussion)i(in)h(the)h(MPI/R)-8 b(T)37 b(group)f(concerns)g (precisely)f(what)i(should)d(happ)s(en)h(to)i(messages)g(left)150 211 y(on)30 b(the)h(net)m(w)m(ork)g(when)e(a)i(timeout)g(expires.)150 455 y Ff(8.5.2)97 b(Time-driven)32 b(MPI/RT)150 626 y Fp(An)g(activit)m(y)h(in)m(terv)-5 b(al,)32 b(sp)s(eci\014ed)f(b)m(y)h (a)h(starting)f(time)g(and)g(a)h(timeout,)g(is)f(an)g(input)e (parameter)j(for)150 739 y(a)41 b(sc)m(heduled)e(message)j(send.)71 b(The)40 b(purp)s(ose)f(of)i(this)f(parameter)h(is)e(to)j(ensure)e (that)h(the)g(system)150 852 y(resources)d(required)f(to)i(satisfy)e (this)g(op)s(eration)h(will)e(not)i(b)s(e)g(used)f(outside)h(of)g(sp)s (eci\014ed)f(in)m(terv)-5 b(al.)150 965 y(These)37 b(resources)h(can)g (b)s(e)f(narro)m(wly)f(in)m(terpreted)h(to)h(refer)g(to)g(the)g(in)m (terpro)s(cess)f(comm)m(unications)150 1078 y(net)m(w)m(ork.)58 b(A)36 b(broader)f(in)m(terpretation)g(w)m(ould)g(include)e(memory)j (accesses,)j(no)s(de)c(busses,)h(net)m(w)m(ork)150 1191 y(in)m(terface)g(cards,)i(and)d(so)h(on.)57 b(Again,)37 b(while)d(w)m(e)i(prefer)f(a)i(\014ner)d(gran)m(ularit)m(y)i(of)g(con)m (trol,)h(w)m(e)g(ha)m(v)m(e)150 1304 y(tried)26 b(to)j(strik)m(e)e(a)h (balance)f(b)s(et)m(w)m(een)h(the)g(feasibilit)m(y)d(of)j(an)f (implemen)m(tation)f(and)h(what)g(time-driv)m(en)150 1417 y(sc)m(hedule)j(designers)f(w)m(an)m(t)i(to)g(use.)332 1530 y(The)37 b(starting)g(time)g(and)g(timeout)h(are)g(somewhat)g (symmetric.)61 b(The)37 b(starting)h(time)f(ensures)150 1643 y(that)i(the)g(resources)f(needed)h(for)f(a)h(data)g(transfer)f (op)s(eration)g(will)e(b)s(e)i(a)m(v)-5 b(ailable)38 b(at)h(the)g(sp)s(eci\014ed)150 1756 y(start)g(time.)63 b(The)37 b(timeout)h(parameter,)j(in)36 b(con)m(trast,)42 b(w)m(ould)37 b(ideally)f(sp)s(ecify)g(the)i(time)g(when)f(all)150 1868 y(resources)f(used)f(b)m(y)g(the)h(message)h(transfer)e(op)s (eration)g(are)h(no)g(longer)f(in)f(use.)57 b(That)35 b(is,)i(after)f(the)150 1981 y(time)31 b(sp)s(eci\014ed)f(in)g(the)h (timeout,)h(irresp)s(ectiv)m(e)e(of)i(whether)e(the)i(op)s(eration)f (completed)g(successfully)150 2094 y(or)25 b(not,)i(all)d(system)h (resources)g(\(ph)m(ysical)g(net)m(w)m(ork,)i(net)m(w)m(ork)f(in)m (terface)g(cards,)g(no)s(de)e(buses,)i(message)150 2207 y(bu\013ers,)d(etc.\))39 b(ha)m(v)m(e)23 b(b)s(een)f(released)g(and)f (can)h(b)s(e)g(used)f(for)h(subsequen)m(t)f(message-passing)h(op)s (erations.)332 2320 y(Unfortunately)-8 b(,)25 b(in)d(practice)j(these)f (guaran)m(tees)h(often)g(cannot)f(b)s(e)f(met.)39 b(The)24 b(MIP/R)-8 b(T)24 b(timeout)150 2433 y(therefore)32 b(sp)s(eci\014es)e (that)i(the)f(message)i(transfer)e(should)e(b)s(e)i(stopp)s(ed)f(and)h (the)h(calling)e(application)150 2546 y(should)20 b(b)s(e)h(noti\014ed) g(if)g(the)h(op)s(eration)f(has)h(not)g(completed)g(b)m(y)f(the)h (timeout)g(time.)38 b(Since)21 b(the)h(message)150 2659 y(ma)m(y)29 b(b)s(e)f(progressing)f(through)h(a)h(m)m(ulti-stage)g(net) m(w)m(ork,)g(a)g(time-driv)m(en)e(MPI/R)-8 b(T)29 b(implemen)m(tation) 150 2772 y(ma)m(y)43 b(need)f(to)h(send)f(a)h(message)g(from)f(the)h (receiv)m(er)g(no)s(de)f(to)h(the)f(sender)g(to)h(indicate)f(that)h (the)150 2885 y(timeout)37 b(has)g(o)s(ccurred.)60 b(The)37 b(resulting)e(error)i(messages)h(ma)m(y)f(not)h(b)s(e)e(receiv)m(ed)i (b)m(y)f(the)g(timeout)150 2998 y(deadline,)29 b(and)g(they)i(ma)m(y)g (use)f(resources)g(after)h(the)f(timeout.)41 b(Th)m(us)29 b(the)i(application)d(ma)m(y)j(need)f(to)150 3110 y(reserv)m(e)g (resources)g(to)g(handle)e(suc)m(h)h(ev)m(en)m(ts.)42 b(It)30 b(should)d(not)j(b)s(e)f(the)h(resp)s(onsibilit)m(y)25 b(of)30 b(the)g(MPI/R)-8 b(T)150 3223 y(implemen)m(tation)33 b(to)j(pro)m(vide)e(this)f(b)s(ound,)h(since)g(an)m(y)h(guaran)m(tees)h (whic)m(h)e(can)h(b)s(e)f(giv)m(en)h(from)f(the)150 3336 y(p)s(ersp)s(ectiv)m(e)j(of)g(a)h(user-lev)m(el)f(message-passing)h (library)d(w)m(ould)i(b)s(e)g(to)s(o)h(naiv)m(e)g(to)g(b)s(e)f(useful.) 60 b(The)150 3449 y(application)43 b(itself)g(is)h(in)f(a)j(m)m(uc)m(h) e(b)s(etter)h(p)s(osition)e(to)i(kno)m(w)g(timing)e(and)h(p)s (erformance)g(details)150 3562 y(relev)-5 b(an)m(t)35 b(to)h(establishing)c(suc)m(h)j(a)g(b)s(ound,)f(including)e(details)i (of)h(the)g(platform)f(and)g(kno)m(wledge)h(of)150 3675 y(the)k(run-time)e(patterns)i(of)f(comm)m(unication.)65 b(Ev)m(en)39 b(for)f(the)h(application,)h(it)e(ma)m(y)h(b)s(e)f (extremely)150 3788 y(di\016cult)29 b(to)k(establish)c(suc)m(h)i(b)s (ounds,)f(esp)s(ecially)g(if)g(the)i(real-time)f(p)s(erformance)g(c)m (haracteristics)h(of)150 3901 y(the)25 b(op)s(erating)f(system)g(or)h (the)g(underlying)c(run)m(time)i(system)i(are)g(p)s(o)s(orly)e(kno)m (wn)h(or)g(highly)f(v)-5 b(ariable.)150 4144 y Ff(8.5.3)97 b(MPI/RT)31 b(Time)h(Handle)150 4316 y Fp(The)c(starting)g(times)f(and) h(timeouts)g(in)f(time-driv)m(en)g(MPI/R)-8 b(T)28 b(message)i (transfers)d(are)i(sp)s(eci\014ed)d(b)m(y)150 4429 y(a)39 b(time)g Fj(hand)5 b(le)39 b Fp(called)f(an)h Fi(MPI)p 1365 4429 32 4 v 38 w(Timeob)6 b(j)p Fp(.)65 b(A)38 b Fi(MPI)p 2195 4429 V 38 w(Timeob)6 b(j)38 b Fp(has)h(three)f(\014elds,) i Fi(T)m(yp)s(e)f Fp(and)150 4542 y Fi(Start)p 390 4542 V 37 w(Time)30 b Fp(and)h Fi(Timeout)p Fp(.)43 b Fi(T)m(yp)s(e)31 b Fp(m)m(ust)h(ha)m(v)m(e)h(one)e(of)h(three)g(v)-5 b(alues,)31 b Fi(Ignorable)p Fp(,)h Fi(Absolute)p Fp(,)150 4655 y(or)44 b Fi(Relativ)m(e)p Fp(.)81 b(When)43 b(a)i(starting)e(time)h(is)e(giv)m (en)i(b)m(y)g(a)g Fi(MPI)p 2498 4655 V 38 w(Timeob)6 b(j)43 b Fp(of)h(t)m(yp)s(e)g Fi(Ignorable)p Fp(,)150 4768 y(there)33 b(is)f(no)h(hard)f(constrain)m(t)h(on)g(when)f(the)h (op)s(eration)g(should)e(start.)49 b(Implicitly)-8 b(,)31 b(it)h(should)f(start)150 4880 y(as)42 b(so)s(on)g(as)g(p)s(ossible,)g (just)f(as)i(with)d(the)i(curren)m(t)g Fl(MPI)f Fp(calls.)75 b(Similarly)-8 b(,)41 b(when)g(a)h Fi(Timeout)f Fp(is)150 4993 y(giv)m(en)e(b)m(y)g(a)g Fi(MPI)p 831 4993 V 38 w(Timeob)6 b(j)38 b Fp(of)h(t)m(yp)s(e)g Fi(Ignorable)p Fp(,)j(there)d(is)f(no)h(hard)f(constrain)m(t)h(on)g(when)f(the)150 5106 y(op)s(eration)28 b(should)e(end.)39 b(The)28 b(second)g(\014eld)f (of)i(a)f Fi(MPI)p 2109 5106 V 38 w(Timeob)6 b(j)28 b Fp(can)g(b)s(e)g(ignored)f(if)g(the)i(\014rst)e(\014eld)150 5219 y(is)i Fi(Ignorable)p Fp(.)332 5332 y(F)-8 b(or)28 b(a)h Fi(MPI)p 782 5332 V 38 w(Timeob)6 b(j)26 b Fp(whose)i(\014rst)f (\014eld)g(is)g Fi(Absolute)h Fp(or)g Fi(Relativ)m(e)p Fp(,)g(the)h(second)e(and)h(third)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 13 14 bop 150 -200 a Fh(8.6.)72 b(TIME-DRIVEN)31 b(CHANNEL)f(CALLS)1839 b Fp(13)150 99 y(\014elds,)35 b Fi(Start)p 654 99 32 4 v 36 w(Time)f Fp(and)g Fi(Timeout)p Fp(,)h(should)e(b)s(e)h(a)h (\014elds)e(con)m(taining)i(double)e(precision)g(\015oating)150 211 y(p)s(oin)m(t)i(n)m(um)m(b)s(ers.)57 b(In)36 b(either)f(case,)k Fi(Absolute)e Fp(or)f Fi(Relativ)m(e)p Fp(,)i Fi(Start)p 2660 211 V 37 w(Time)d Fp(and)g Fi(Timeout)g Fp(refer)150 324 y(to)42 b(the)g(global)f(sync)m(hronized)g(clo)s(c)m(k,)k(but)c(in) f(the)i(relativ)m(e)g(case,)k(an)41 b(actual)i(constrain)m(t)e(is)g(to) i(b)s(e)150 437 y(deriv)m(ed)30 b(at)h(run-time)f(b)m(y)g(adding)g Fi(Start)p 1620 437 V 36 w(Time)g Fp(or)h Fi(Timeout)e Fp(to)j(the)f(v)-5 b(alue)30 b(returned)f(b)m(y)i(as)g(fresh)150 550 y(as)g(p)s(ossible)d(a)j(read)f(of)h(the)f(global)g(sync)m (hronized)f(clo)s(c)m(k.)42 b(Note)31 b(that)g(ev)m(en)h(in)d(the)h Fi(Absolute)h Fp(form,)150 663 y(an)36 b(actual)h(time)f(requiremen)m (t)g(cannot)h(necessarily)f(b)s(e)g(constructed)g(un)m(til)f(the)i(v)-5 b(alue)36 b(of)h(the)f(time)150 776 y(ob)5 b(ject)31 b(at)g(the)g(time)f(of)h(the)f(execution)h(of)f(the)h(call)e(is)h(kno)m (wn.)150 1062 y Fm(8.6)116 b(Time-Driven)36 b(Channel)i(Calls)150 1265 y Fp(Using)f(p)s(ersisten)m(t)f(c)m(hannels)h(to)i(sc)m(hedule)e (a)g(time-driv)m(en)g(message)i(transaction)e(in)m(v)m(olv)m(es)h(the)g (ad-)150 1378 y(dition)32 b(of)i(a)h Fl(MPI)p 771 1378 28 4 v 32 w(Timeobj)g Fp(parameter)g(to)f(the)h Fl(MPI)p 2027 1378 V 32 w(ST)-8 b(ART\(\))34 b Fp(call,)g(whic)m(h)f(activ)-5 b(ates)36 b(a)e(p)s(ersisten)m(t)150 1491 y(comm)m(unications)40 b(handle.)70 b Fl(MPI)p 1357 1491 V 32 w(ST)-8 b(ART)p Fp(,)40 b Fl(MPI)p 1904 1491 V 33 w(ST)-8 b(ART)g(ALL)40 b Fp(and)f Fl(MPI)p 2764 1491 V 33 w(W)-8 b(AIT/TEST)41 b Fp(op)s(erate)g(as)150 1604 y(with)30 b(other)i(non-blo)s(c)m(king)d (op)s(erations)i(to)h(con)m(v)m(ert)h(a)f Fb(request)f Fp(in)m(to)g(a)h Fb(status)e Fp(and)h(mark)g(as)g(complete)150 1717 y(the)g(op)s(eration.)150 2019 y Fl(MPI)p 318 2019 V 33 w(ST)-8 b(ART)p 638 2019 V 31 w(A)g(T\(request,)32 b(timehandle,)e(requestout\))233 2173 y Fc(IN)312 b Fl(request)900 b Fc(primitiv)n(e)28 b(request)f(ob)5 b(ject)27 b(\(p)r(ersisten)n(t)h (request\))233 2324 y(INOUT)125 b Fl(timehandle)759 b Fc(message)27 b(timing)h(parameters.)233 2474 y(OUT)217 b Fl(requestout)775 b Fc(revised)27 b(request)g(ob)5 b(ject)28 b(\(non-p)r(ersisten)n(t)f(request\))332 2723 y Fp(As)37 b(an)g(example)g(of)g(this)f(approac)m(h,)k(the)d(follo)m (wing)f(co)s(de)h(sc)m(hedules)f(a)i(send)e(at)i(a)g(particular)150 2836 y(time:)150 3123 y Fd(MPI_Timeobject)44 b(timehandle;)150 3236 y(MPI_Comm)i(comm;)150 3349 y(MPI_Request)f(request;)150 3462 y(MPI_Rtchannel_Send_init\()o(buf,)c(count,)46 b(type,)245 3575 y(dest,)h(timehandle,)e(comm,)h(&request\);)150 3687 y(...)150 3800 y(for\(;;\))150 3913 y({)293 4026 y(timehandle.Type)e(=)j(Relative;)293 4139 y(timehandle.Start_Time)42 b(=)48 b(0.3)150 4252 y(//)f(Send)g(the)g(message)f(in)h(300)g(msecs) 293 4365 y(timehandle.Timeout)c(=)k(0.4;)150 4478 y(//)g(Message)f (must)h(complete)e(in)i(100)g(msecs)293 4591 y(MPI_Start_At\(request,) 42 b(timehandle,)j(requestout\);)293 4704 y(MPI_Wait_timeout\(request,) c(&status\);)150 4817 y(})332 5004 y Fp(F)-8 b(or)35 b(time-driv)m(en)e Fl(MPI)p Fp(/R)-8 b(T,)34 b(it)g(is)f(su\016cien)m (t)h(to)h(map)f(a)g(request)g(in)m(to)g(a)h(function)e(call)g(sp)s (eci\014-)150 5117 y(cation)g(\(p)s(er)f(in)m(v)m(o)s(cation\),)h(so)g (that)g(no)f(status)h(is)e(formed,)i(and)f(no)g(sp)s(ecial)f(action)i (is)e(tak)m(en,)k(unless)150 5230 y(a)30 b(timeout)g(o)s(ccurs.)40 b(Other)29 b(violations)f(could)h(o)s(ccur,)h(in)e(the)i(c)m(hannel)f (situation,)g(and)g(an)h(analogous)150 5343 y(mec)m(hanism)g(to)h(the)f (timeout)h(ev)m(en)m(t)h(m)m(ust)e(b)s(e)g(pro)m(vided.)39 b(W)-8 b(e)32 b(prop)s(ose:)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 14 15 bop 150 -200 a Fp(14)953 b Fh(CHAPTER)30 b(8.)71 b(REAL)-8 b(TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)150 99 y Fl(MPI)p 318 99 28 4 v 33 w(REQUEST)p 761 99 V 31 w(EVENT\(request,)g(f)6 b(\))233 253 y Fc(INOUT)125 b Fl(request)900 b Fc(primitiv)n(e)28 b(request)f(ob)5 b(ject)27 b(\(p)r(ersisten)n(t)h(request\))233 402 y(IN)312 b Fl(f)1145 b Fc(F)-7 b(unction)29 b(to)e(call)g(f\(comm,request,co)r (de\))h(if)g(failure)332 650 y Fp(The)g(request)i(is)e(subsumed)f(b)m (y)i(this)f(call,)h(and)g(nev)m(er)g(re-emerges)h(unless)e(the)h (function)f Fd(f)h Fp(m)m(ust)150 763 y(b)s(e)h(called)f(on)i(the)f (error.)150 1048 y Fm(8.7)116 b(Event-Driven)37 b(MPI/RT)150 1251 y Fp(The)31 b(functionalit)m(y)g(for)h(ev)m(en)m(t-driv)m(en)g (programming)f(is)g(in)m(tro)s(duced)f(in)h Fl(MPI-2)p Fp(.)46 b(In)31 b(particular,)g(the)150 1364 y(handler)24 b(concept)j(in)m(tro)s(duced)e(in)g(the)h(one-sided)f(comm)m (unications)h(c)m(hapter)h(is)e(an)h(ideal)f(mec)m(hanism)150 1477 y(for)33 b(implemen)m(ting)d(ev)m(en)m(t-driv)m(en)k(systems.)48 b(In)32 b(situations)f(where)i(fault-tolerance)g(is)f(required,)f(w)m (e)150 1590 y(recommend)f(the)h(fault-toleran)m(t)f(handler)f(mec)m (hanism)h(giv)m(en)g(ab)s(o)m(v)m(e.)332 1703 y(Ev)m(en)m(t-driv)m(en)f (applications)e(will)f(b)s(e)i(supp)s(orted)f(via)h(message)i(handlers) d(describ)s(ed)f(in)i(the)h(Ex-)150 1816 y(ternal)h(In)m(terfaces)h(c)m (hapter.)150 2101 y Fm(8.8)116 b(Prio)m(rit)m(y-based)37 b(MPI/RT)150 2307 y Ff(8.8.1)97 b(Prio)m(ritization)150 2478 y Fp(P)m(ossible)29 b(candidates)h(for)h(prioritization)d(in)h (MPI)h(include:)39 b(messages,)31 b(pro)s(cesses,)g(and/or)f(comm)m(u-) 150 2591 y(nicators.)332 2704 y(Issues)f(include:)286 2907 y Fk(\017)46 b Fp(Static)32 b(vs)f(Dynamic)g(priorities)e(|)i(It)g (is)f(con)m(v)m(enien)m(t)j(to)f(ha)m(v)m(e)g(static)g(priorities,)d (but)i(without)377 3020 y(the)41 b(preemption)d(capabilit)m(y)-8 b(,)42 b(priorities)c(need)i(to)g(b)s(e)g(dynamically)d(c)m(hanged)k (to)g(cop)s(e)f(with)377 3132 y(un)m(b)s(ounded)28 b(priorit)m(y)h(in)m (v)m(ersion.)286 3317 y Fk(\017)46 b Fp(Resource)32 b(Allo)s(cation)f (|)g(It's)h(ob)m(vious)f(that)h(if)f(an)g(en)m(tit)m(y)i(has)e(a)h (priorit)m(y)e(then)h(the)h(resource)377 3430 y(that)37 b(it)e(o)s(ccupies)g(should)f(inherit)f(that)k(priorit)m(y)-8 b(.)56 b(Then)35 b(w)m(e)h(should)e(outline)g(ho)m(w)i(resources)377 3543 y(are)31 b(allo)s(cated)f(and)g(freed)g(and)g(ho)m(w)g(con)m(ten)m (tions)i(are)e(resolv)m(ed.)286 3727 y Fk(\017)46 b Fp(E\013ect)24 b(on)e(Progress)h(Rule)e(|)i(In)f(the)g(presence)h(of)g(prioritized)d (comm)m(unication)i(and)g(deadlines,)377 3840 y(w)m(e)39 b(need)f(to)h(establish)d(deterministic)g(progress)i(rules)e(for)i(in)m (tra-comm)m(unicator)h(and)e(in)m(ter-)377 3953 y(comm)m(unicator)31 b(comm)m(unication.)150 4195 y Ff(8.8.2)97 b(Message)33 b(Preemption)150 4366 y Fp(In)42 b(addition)f(to)j(pro)m(viding)d (priorit)m(y)g(in)h(messaging,)k(a)e(mo)s(del)e(for)g(ho)m(w)h (messages)h(preempt)f(one)150 4479 y(another)31 b(ma)m(y)g(b)s(e)e (useful,)g(but)h(sp)s(eci\014c)f(prop)s(osals)g(are)i(needed)f(in)f (this)g(area.)150 4718 y Fl(Ho)m(w)j(p)m(rio)m(rit)m(y)f(messaging)g (in)f(MPI)g(should)h(w)m(o)m(rk)h(\(a)m(rea)f(of)f(lots)h(of)f (discussion\))150 4889 y Fp(Curren)m(tly)-8 b(,)26 b Fl(MPI)g Fp(do)s(es)f(not)h(p)s(ose)g(ordering)f(requiremen)m(ts)g(b)s (et)m(w)m(een)h(comm)m(unicators.)40 b(F)-8 b(urthermore,)150 5002 y(all)29 b(messaging)i(on)f(a)h(comm)m(unicator)f(is)g(at)h(a)g (single)e(lev)m(el)h(of)g(priorit)m(y)-8 b(.)332 5115 y Fl(MPI)30 b Fp(implemen)m(tations)f(m)m(ust)h(do)g(at)h(least)g(the)g (follo)m(wing:)286 5294 y Fk(\017)46 b Fp(When)41 b(it)g(is)f(p)s (ossible)f(to)j(handle)d(t)m(w)m(o)k(or)e(more)g(receiv)m(e)h(requests) f(at)h(the)f(same)h(time,)i(the)377 5407 y(highest)30 b(priorit)m(y)f(request)h(is)g(handled)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 15 16 bop 150 -200 a Fh(8.8.)72 b(PRIORITY-BASED)30 b Fl(MPI)p Fh(/R)-8 b(T)2123 b Fp(15)286 99 y Fk(\017)46 b Fp(When)32 b(t)m(w)m(o)i(or)e(more)h(send)e(requests)h(are)h(in)e (progress,)i(the)f(highest)g(priorit)m(y)f(request)h(should)377 211 y(b)s(e)e(handled.)286 399 y Fk(\017)46 b Fp(The)i(system)h(m)m (ust)f(accept)i(en)m(v)m(elop)s(es)e(from)g(remote)i(senders)d(in)g (order)h(to)h(supp)s(ort)e(the)377 512 y(progress)30 b(rule)286 700 y Fk(\017)46 b Fp(When)26 b(higher)f(priorit)m(y)g (transmissions)e(are)k(blo)s(c)m(k)m(ed,)g(lo)m(w)m(er)g(priorit)m(y)d (messages)k(m)m(ust)e(b)s(e)f(han-)377 812 y(dled)35 b(\(this)g(means)h(that)h(some)g(priorit)m(y)d(in)m(v)m(ersion)h (e\013ects)j(are)e(inevitable,)g(and)g(w)m(e)g(need)g(to)377 925 y(discuss)29 b(ho)m(w)h(w)m(e)h(w)m(an)m(t)g(MPI)g(to)g(b)s(eha)m (v)m(e\))150 1166 y Fl(Other)f(Comments)286 1337 y Fk(\017)46 b Fp(W)-8 b(e)46 b(m)m(ust)e(consider)f(whether)g(some)i(statemen)m(t)h (ab)s(out)d(fairness)g(is)g(useful)g(in)f(the)j(face)g(of)377 1450 y(priorit)m(y)29 b(comm)m(unication.)40 b(F)-8 b(airness)30 b(is)g(not)g(necessarily)g(go)s(o)s(d.)286 1638 y Fk(\017)46 b Fp(W)-8 b(e)27 b(need)f(a)g(mec)m(hanism)g(to)g(a)m(v)m(oid)h(deadlo) s(c)m(ks)f(due)f(to)h(priorit)m(y)f(messaging)h({)g(ceiling)e (priorities)377 1751 y(/)31 b(priorit)m(y)e(inheritance)150 1963 y(And)f(w)m(e)i(need)e(to)i(en)m(umerate)g(the)f(kinds)e(of)i (problems)e(that)j(can)f(arise)g(b)s(ecause)g(of)g(priorities)d(in)i (the)150 2076 y(lo)m(w)i(lev)m(els)g(of)h(the)f(implemen)m(tation.)150 2316 y Fl(Other)g(situations)150 2488 y Fp(The)f(follo)m(wing)f (conditions)g(will)f(b)s(e)i(addressed)g(in)f(the)i(next)f(v)m(ersion)g (of)h(the)g(priorit)m(y)e(sub-prop)s(osal:)286 2675 y Fk(\017)46 b Fp(Priorit)m(y)29 b(maps)h(when)g(comms)g(split)286 2863 y Fk(\017)46 b Fp(Priorit)m(y)29 b(maps)h(when)g(w)m(orlds)f (merge)150 3106 y Ff(8.8.3)97 b(Other)33 b(issues)150 3278 y Fp(Sev)m(eral)d(other)h(attributes)f(can)h(b)s(e)e(attac)m(hed)k (to)e(comm)m(unicators)f(in)f(a)i(similar)d(w)m(a)m(y)j(:)261 3466 y(1.)46 b(time-out)31 b(for)f(op)s(erations)261 3653 y(2.)46 b(guaran)m(teed)32 b(bandwidth)27 b(/)k (latency-for-zero-message)261 3841 y(3.)46 b(maxlength)30 b(for)g(message)i(/)f(guaran)m(teed)g(bu\013erspace)f(a)m(v)-5 b(ailable)150 4084 y Ff(8.8.4)97 b(Prio)m(rit)m(y-Based)33 b(Message)g(P)m(assing)150 4256 y Fp(In)f(the)h(priorit)m(y-based)e (real-time)h(programming)g(paradigm,)g(pro)s(cess)g(and)h(message)g (priorities)e(are)150 4369 y(used)f(to)h(meet)g(timing)e(sp)s (eci\014cations.)150 4612 y Ff(8.8.5)97 b(Pro)s(cess)34 b(Prio)m(rit)m(y)150 4784 y Fp(Because)i(pro)s(cess)f(priorities)d(can) j(b)s(e)g(handled)e(in)g(a)i(v)-5 b(ariet)m(y)36 b(of)f(w)m(a)m(ys,)i (it)d(is)g(extremely)h(di\016cult)e(to)150 4897 y(pro)m(vide)f(p)s (ortable)g(mec)m(hanisms)g(to)i(sp)s(ecify)e(them,)i(and)e Fl(MPI)p Fp(/R)-8 b(T)33 b(do)s(es)g(not)g(directly)f(address)g(this) 150 5010 y(issue.)38 b(The)24 b(one)i(circumstance)f(in)f(whic)m(h)g (pro)s(cess)h(priorit)m(y)e(is)h(undoubtedly)f(relev)-5 b(an)m(t)26 b(to)f Fl(MPI)p Fp(/R)-8 b(T)26 b(is)150 5123 y(in)f(the)i(transmission)c(of)k(priorit)m(y)e(information)f(to)j (the)g(run)m(time)e(system)h(in)f Fl(MPI-2)i Fp(dynamic)e(pro)s(cess) 150 5236 y(creation)c(calls.)37 b(W)-8 b(e)21 b(recommend)g(that)g(suc) m(h)f(information)f(b)s(e)h(sp)s(eci\014ed)f(in)g(a)i(system-sp)s (eci\014c)f(manner)150 5349 y(via)30 b(the)h Fl(info)f Fp(argumen)m(t.)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 16 17 bop 150 -200 a Fp(16)953 b Fh(CHAPTER)30 b(8.)71 b(REAL)-8 b(TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)332 99 y Fp(Arguably)-8 b(,)25 b Fl(MPI)p Fp(/R)-8 b(T)26 b(should)d(also)i(address)f(the)h(issue)f(of)h(priorit)m(y)e(in)m(v)m (ersion)h(\(a)h(phenomenon)f(in)150 211 y(whic)m(h)30 b(a)h(lo)m(w-priorit)m(y)e(pro)s(cess)i(susp)s(ends)d(a)k(high-priorit) m(y)c(pro)s(cess)i(b)m(y)h(preempting)f(lo)m(w)m(er-priorit)m(y)150 324 y(pro)s(cesses)38 b(whic)m(h)e(w)m(ould)h(send)g(messages)i(to)f (the)g(high-priorit)m(y)d(pro)s(cess\).)63 b(W)-8 b(e)39 b(put)e(forw)m(ard)h(t)m(w)m(o)150 437 y(prop)s(osals)29 b(on)h(that)h(fron)m(t.)332 702 y Fa(Discussion:)332 815 y Fc(Programmers)c(m)n(ust)j(a)n(v)n(oid)e(priorit)n(y)h(in)n(v)n (ersion)g(b)n(y)h(assigning)e(priorities)h(in)i(suc)n(h)e(a)h(w)n(a)n (y)f(that)h(priorit)n(y)150 928 y(in)n(v)n(ersion)22 b(do)r(es)h(not)g(happ)r(en.)36 b(In)23 b(short,)g(an)n(y)g(program)e (whic)n(h)i(has)g(a)g(lo)n(w-priorit)n(y)e(pro)r(cess)h(sending)h (messages)150 1041 y(to)33 b(a)g(high-priorit)n(y)e(pro)r(cess)h(is)h (asking)f(for)g(trouble.)53 b(Note,)35 b(to)r(o,)f(that)g(priorit)n(y)d (in)n(v)n(ersion)h(can)h(result)f(from)150 1154 y(a)j(n)n(um)n(b)r(er)g (of)g(resource)e(con)n(ten)n(tion)i(situations,)h(so)f(eliminating)g (it)h(in)f(message-passing)d(do)r(es)j(not)g(\014x)h(the)150 1267 y(problem.)f(Also,)24 b(the)g(priorit)n(y)e(inheritance)h(mec)n (hanisms)g(necessary)e(to)j(alleviate)e(priorit)n(y)h(in)n(v)n(ersion)e (ma)n(y)i(not)150 1380 y(b)r(e)28 b(univ)n(ersally)e(implemen)n(table.) 332 1810 y Fa(Discussion:)332 1923 y Fc(The)h Fb(MPI)p Fc(/R)-7 b(T)27 b(implemen)n(tation)g(m)n(ust)g(ensure)g(that)g(a)g (pro)r(cess)f(inherits)h(a)g(priorit)n(y)e(at)i(least)g(as)g(high)g(as) 150 2036 y(an)n(y)33 b(pro)r(cess)h(whic)n(h)g(is)g(blo)r(c)n(k)n(ed)f (receiving)g(a)h(message)f(from)h(it.)57 b(This)34 b(ma)n(y)g(mean)g (that)h(in)f(circumstances)150 2149 y(where)j(a)g(pro)r(cess)f(is)h (receiving)f(from)h Fb(MPI)p 1589 2149 25 4 v 29 w(ANY)p 1787 2149 V 31 w(SOURCE)f Fc(in)i(a)f(comm)n(unicator,)h(that)g(pro)r (cess's)d(priorit)n(y)150 2262 y(information)27 b(m)n(ust)h(b)r(e)g (broadcasted)e(to)h(all)g(of)h(the)g(p)r(oten)n(tial)f(senders.)150 2670 y Ff(8.8.6)97 b(Message)33 b(Prio)m(rities)150 2842 y Fp(With)25 b(regard)g(to)h(message)h(priorities,)d(ho)m(w)m(ev)m(er,) k Fl(MPI)p Fp(/R)-8 b(T)26 b(certainly)e(m)m(ust)h(pro)m(vide)g (explicit)f(mec)m(ha-)150 2955 y(nisms)c(for)i(their)e(sp)s (eci\014cation)h(and)g(main)m(tenance.)38 b(Message)24 b(priorit)m(y)c(w)m(orks)i(basically)e(as)i(one)g(w)m(ould)150 3068 y(exp)s(ect:)39 b(Giv)m(en)25 b(the)h(c)m(hoice)g(b)s(et)m(w)m (een)g(p)s(erforming)d(t)m(w)m(o)k(di\013eren)m(t)e(comm)m(unication)g (op)s(erations)g(\(suc)m(h)150 3181 y(as)k(receiving)f(one)h(message)g (or)g(another\),)h(the)e(higher)g(priorit)m(y)f(comm)m(unication)h(is)f (p)s(erformed)g(\014rst.)150 3294 y(If)34 b(the)h(high)e(priorit)m(y)g (comm)m(unication)h(blo)s(c)m(ks)g(or)h(stalls,)g(lo)m(w)m(er)f (priorit)m(y)f(comm)m(unication)h(ma)m(y)i(b)s(e)150 3407 y(initiated.)j(Notice)31 b(that)f(in)f(the)h(general)g(case,)i (this)c(implies)g(that)i(comm)m(unication)g(ma)m(y)g(need)g(to)h(b)s(e) 150 3520 y(preempted.)56 b(F)-8 b(or)36 b(example,)h(if)d(the)i(user)f (initiates)f(a)i(lo)m(w-priorit)m(y)e(non)m(blo)s(c)m(king)g(send,)j (the)e(b)s(egins)150 3632 y(a)41 b(high-priorit)m(y)d(send,)k(the)e(lo) m(w-priorit)m(y)f(send)h(w)m(ould)f(b)s(e)h(stalled)f(in)g(fa)m(v)m(or) i(of)g(the)f(high-priorit)m(y)150 3745 y(send.)70 b(Also,)43 b(as)e(with)e(priorities)f(in)h(other)i(situations,)h(it)e(is)g(p)s (ossible)e(that)j(deadlo)s(c)m(k)f(situations)150 3858 y(could)28 b(result.)39 b(Whether)29 b(or)g(not)g Fl(MPI)p Fp(/R)-8 b(T)29 b(systems)g(should)e(attempt)j(to)g(address)e(this)g (is)g(sub)5 b(ject)28 b(to)150 3971 y(debate.)41 b(Certainly)29 b(man)m(y)h(systems)g(pro)m(vide)f(no)h(supp)s(ort)f(for)h(deadlo)s(c)m (k)g(detection)h(and)e(resolution.)150 4084 y(In)c(some)g (circumstances)h(timeouts)f(pro)m(vide)f(a)i(w)m(a)m(y)h(to)f(break)f (out)h(of)f(deadlo)s(c)m(k)h(\(although)f(a)h(liv)m(elo)s(c)m(k)150 4197 y(situation)e(ma)m(y)i(just)f(as)g(easily)g(result,)g(unless)f (the)h(programmer)g(uses)g(the)h(opp)s(ortunit)m(y)d(to)j(explicitly) 150 4310 y(a)m(v)m(oid)36 b(the)g(recurrence)f(of)g(deadlo)s(c)m(k\).) 57 b(Finally)-8 b(,)35 b(message)i(priorit)m(y)c(ma)m(y)j(result)f(in)f (\\unfair")g(situa-)150 4423 y(tions.)49 b(Suc)m(h)32 b(circumstances)h(are)h(fully)d(the)j(programmer's)f(resp)s(onsibilit)m (y)c(to)34 b(a)m(v)m(oid,)h(if)d(necessary)-8 b(.)150 4536 y(W)g(e)32 b(put)d(forw)m(ard)h(t)m(w)m(o)i(prop)s(osals)d(for)h (sp)s(ecifying)e(message)j(priorit)m(y)-8 b(.)150 4776 y Fl(Message)30 b(Prio)m(rities)h(using)f(T)-8 b(ags)150 4947 y(MPI)21 b Fp(already)f(pro)m(vides)g(a)i(mec)m(hanism)e(to)h (allo)m(w)g(the)g(programmer)g(to)g(distinguish)c(b)s(et)m(w)m(een)22 b(messages)150 5060 y(sen)m(t)30 b(under)e(a)i(comm)m(unicator,)g (namely)e(message)j(tags.)41 b(T)-8 b(o)30 b(receiv)m(e)g(the)g (highest)f(priorit)m(y)f(message,)150 5173 y(a)38 b(pro)s(cess)g(w)m (ould)f(simply)e(receiv)m(e)k(using)d(a)j(new)e(prede\014ned)g(v)-5 b(alue,)39 b Fl(MPI)p 2843 5173 28 4 v 33 w(MAX)p 3078 5173 V 31 w(T)-8 b(A)m(G)p Fp(,)38 b(as)h(the)f(tag)150 5286 y(parameter.)47 b(\()p Fl(MPI)p Fp(/R)-8 b(T)34 b(w)m(ould)d(also)h(pro)m(vide)g(an)g(analogous)h(v)-5 b(alue,)33 b Fl(MPI)p 2786 5286 V 32 w(MIN)p 2987 5286 V 33 w(T)-8 b(A)m(G)p Fp(,)33 b(for)f(pro)s(cesses)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 17 18 bop 150 -200 a Fh(8.9.)72 b(AD)31 b(HOC)f Fl(MPI)p Fh(/R)-8 b(T)2561 b Fp(17)150 99 y(that)38 b(use)g(lo)m(w)m(er)g(n)m (um)m(b)s(ers)f(for)g(higher)g(logical)g(priorities.\))61 b(This)36 b(allo)m(ws)i(priorit)m(y)e(information)g(to)150 211 y(easily)30 b(b)s(e)f(sp)s(eci\014ed)g(on)h(a)h(message-b)m (y-message)i(basis,)d(unlik)m(e)e(the)j(next)f(prop)s(osal.)150 513 y Fl(MPI)p 318 513 28 4 v 33 w(COMM)p 636 513 V 31 w(GET)p 844 513 V 33 w(PRIORITY\(comm,)i(p)m(rio)m(rit)m(y\))233 668 y Fc(IN)312 b Fl(comm)944 b Fc(comm)n(unicator)27 b(for)g(whic)n(h)g(priorit)n(y)f(is)i(to)f(b)r(e)h(returned)233 818 y(OUT)217 b Fl(p)m(rio)m(rit)m(y)909 b Fc(priorit)n(y)27 b(of)g(the)h(comm)n(unicator)332 1067 y Fl(MPI)p Fp(/R)-8 b(T)26 b(priorit)m(y-based)d(message)k(passing)d(w)m(ould)g(op)s(erate) i(on)g(the)f(same)h(p)s(ersisten)m(t)f(c)m(hannels)150 1180 y(from)30 b(section)g(8.4:)150 1482 y Fl(MPI)p 318 1482 V 33 w(ST)-8 b(ART)p 638 1482 V 31 w(PRIORITY\(request,)31 b(p)m(rio)m(rit)m(y)-8 b(,)32 b(requestout\))233 1636 y Fc(IN)312 b Fl(request)900 b Fc(primitiv)n(e)28 b(request)f(ob)5 b(ject)27 b(\(p)r(ersisten)n(t)h(request\))233 1786 y(IN)312 b Fl(p)m(rio)m(rit)m(y)909 b Fc(in)n(teger)31 b(quan)n(tit)n(y)f(sp)r (ecifying)i(priorit)n(y)e(of)h(c)n(hannel)f(op)r(era-)1810 1899 y(tion)e(\(in)n(t\))233 2050 y(OUT)217 b Fl(requestout)775 b Fc(revised)27 b(request)g(ob)5 b(ject)28 b(\(non-p)r(ersisten)n(t)f (request\))332 2298 y Fp(The)j(in)m(ten)m(tion)g(of)g(this)f(formalism) g(is)g(as)i(follo)m(ws:)286 2511 y Fk(\017)46 b Fp(T)-8 b(o)36 b(p)s(ermit)d(sp)s(ecialized)h(requests)h(to)h(b)s(e)e(formed,)i (so)g(c)m(hannels)e(can)i(b)s(e)e(used)g(with)g(m)m(ultiple)377 2624 y(op)s(erations)22 b(sim)m(ultaneously)-8 b(.)37 b(The)22 b(priorities)e(therefore)j(\014gure)f(in)g(the)h(same)g(role)f (as)h(tags)h(in)d(an)377 2737 y(implemen)m(tation,)j(and)f(the)g(same)h (mec)m(hanism)e(migh)m(t)h(b)s(e)g(o)m(v)m(erloaded)h(to)g(pro)s(duce)e (this)g(feature)377 2850 y(for)42 b(c)m(hannels.)76 b(These)42 b(non-p)s(ersisten)m(t)f(requests)h(are)g(treated)h(in)e(the)i(same)f (w)m(a)m(y)h(as)g(other)377 2963 y(requests)29 b(in)f Fl(MPI)p Fp(.)h(If)g(a)g(mec)m(hanism)f(is)g(used)h(to)g(a)m(v)m(oid)h (con)m(v)m(erting)g(requests)f(in)m(to)g(statuses,)h(as)377 3076 y(for)g(timebased)g Fl(MPI)p Fp(,)h(it)f(ma)m(y)h(also)f(apply)f (here.)286 3263 y Fk(\017)46 b Fp(No)29 b(sp)s(eci\014c)f(meaning)g(is) f(attac)m(hed)k(to)e(the)g(priorities)d(b)m(y)j Fl(MPI)p Fp(.)f(This)f(is)h(strictly)f(a)i(function)f(of)377 3376 y(the)j(underlying)c(implemen)m(tation.)286 3564 y Fk(\017)46 b Fp(A)30 b(w)m(ait)g(op)s(eration)f(on)h(the)g(non-p)s(ersisten)m(t)f (request)g(of)h(the)g(call)f(is)g(supp)s(osed)f(for)i(completing)377 3677 y(the)36 b(call.)55 b(Ho)m(w)m(ev)m(er,)40 b(this)34 b(ma)m(y)i(b)s(e)f(skipp)s(ed,)f(as)i(noted)g(for)f(timebased)g(op)s (erations,)i(using)d(a)377 3790 y(call)c(to)h(b)s(e)f(de\014ned)f(b)s (elo)m(w.)286 3977 y Fk(\017)46 b Fp(The)40 b(primitiv)m(e)f(and)g (non-primitiv)m(e)g(forms)g(of)i(the)g(request)f(ma)m(y)i(b)s(e)d(used) h(sim)m(ultaneously)377 4090 y(for)29 b(transmission,)e(with)h(a)h (default)g(priorit)m(y)e(setting)i(from)g(the)g(qualit)m(y)f(of)i (service)e(parameter)377 4203 y(used)i(in)f(the)h(primitiv)m(e)f(form.) 150 4489 y Fm(8.9)116 b(Ad)39 b(Ho)s(c)g(MPI/RT)150 4692 y Fp(F)-8 b(or)43 b(ad)e(ho)s(c)h(real-time)g(programming)f(the)h(user) f(desires)g(particularly)e(fast)j(implemen)m(tations)f(of)150 4805 y Fl(MPI)d Fp(routines)f(but)g(do)s(es)h(not)h(ha)m(v)m(e)g(hard)e (deadlines.)62 b(\(This)37 b(migh)m(t)h(b)s(e)f(seen)i(as)f(a)h(soft)f (real-time)150 4918 y(system.\))77 b(Examples)41 b(of)h(suc)m(h)g (applications)f(include)f(in)m(teractiv)m(e)j(parallel)d (visualization,)j(whic)m(h)150 5031 y(ma)m(y)i(mak)m(e)g(great)h (demands)d(on)i(a)g(system)f(but)g(is)f(toleran)m(t)j(to)f(o)s (ccasional)f(dela)m(ys)h(or)f(dropp)s(ed)150 5144 y(frames.)49 b(What)34 b(exactly)g Fl(MPI)p Fp(/R)-8 b(T)33 b(w)m(ould)f(include)f (or)j(mandate)f(for)g(implemen)m(tations)f(to)i(supp)s(ort)150 5257 y(suc)m(h)c(a)h(programming)e(mo)s(del)g(remains)g(to)i(b)s(e)f (discussed.)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 18 19 bop 150 -200 a Fp(18)953 b Fh(CHAPTER)30 b(8.)71 b(REAL)-8 b(TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)150 99 y Fm(8.10)115 b(Issues)39 b(on)f(Emb)s(edded)g(Systems)150 301 y Fp(F)-8 b(or)35 b(em)m(b)s(edded)d(systems,)j(the)f(follo)m(wing) f(issues)f(b)s(ecome)i(more)g(imp)s(ortan)m(t)f(than)h(in)e(other)i (uses)g(of)150 414 y Fl(MPI)p Fp(:)286 602 y Fk(\017)46 b Fp(Small)29 b(amoun)m(ts)h(of)h(program)f(space)h(\(co)s(de)g(bloat)f (unacceptable\),)286 790 y Fk(\017)46 b Fp(Small)31 b(amoun)m(t)i(of)g (data)g(space)g(\(bu\013ering)e(limited,)g(maxim)m(um)g(message)j (sizes)e(ma)m(y)i(b)s(e)d(lim-)377 903 y(ited\),)286 1090 y Fk(\017)46 b Fp(Simpli\014ed)27 b(programming)i(en)m(vironmen)m (ts)g(as)i(compared)f(to)i(full-blo)m(wn)27 b(OS's,)286 1278 y Fk(\017)46 b Fp(Static)31 b(loading)e(en)m(vironmen)m(ts)h(more) g(nearly)g(compatible)g(with)f Fl(MPI-2)p Fp('s)i(view)e(of)i(the)f(w)m (orld.)150 1465 y(Suc)m(h)g(systems)g(ma)m(y)h(also)f(ha)m(v)m(e)i (realtime)e(requiremen)m(ts.)332 1578 y Fl(MPI)43 b Fp(is)g(already)g (migrating)g(in)m(to)h(em)m(b)s(edded)e(protot)m(yp)s(e)i(systems;)51 b(hence)44 b(it)f(is)g(in)m(teresting)150 1691 y(to)h(o\013er)f (suggestions,)j(and)c(p)s(ossibly)e(additional)h(pro\014le)g(language,) 47 b(to)c(address)f(this)g(particular)150 1804 y(space)32 b(of)f(applications)f(and)g(systems.)43 b(One)31 b(particular)f (approac)m(h)h(will)e(b)s(e)h(to)i(o\013er)g(a)f(set)h(of)g(subset)150 1917 y(implemen)m(tation)27 b(pro\014les)f(for)i(em)m(b)s(edded)e (systems,)j(so)f(that)h(if)e(subsetting)g(should)e(o)s(ccur,)k(it)e (can)i(b)s(e)150 2030 y(done)h(according)h(to)g(a)f(systematic)h(con)m (v)m(en)m(tion)h(do)s(cumen)m(ted)e(in)f(the)i Fl(MPI-2)g Fp(standard.)150 2273 y Ff(8.10.1)97 b(Emb)s(edded)33 b(MPI)150 2445 y Fp(There)28 b(are)h(users)f(within)e(the)i(em)m(b)s (edded)g(computing)f(arena)i(that)g(w)m(ould)f(lik)m(e)g(to)h(use)f (MPI,)h(but)f(are)150 2558 y(constrained)k(b)m(y)h(extreme)g (limitations)e(on)i(lo)s(cal)f(memory)h(and)f(storage)i(space.)49 b(These)32 b(users)h(often)150 2671 y(run)k(co)s(des)h(stored)g(in)f (non-v)m(olatile)h(memory)-8 b(,)41 b(suc)m(h)d(as)g(as)h(FLASH,)f(or)h (R)m(OM.)f(While)f(the)i(use)f(of)150 2784 y(an)c(e\016cien)m(t)g(link) m(er)f(can)h(dramatically)e(reduce)i(the)g(size)g(of)g(MPI)g (libraries,)e(the)i(resulting)e(binaries)150 2897 y(are)g(still)d(far)i (to)s(o)h(large)f(to)h(b)s(e)f(incorp)s(orated)f(in)m(to)h(\014rm)m(w)m (are.)43 b(There)31 b(are)h(three)f(particular)f(areas)i(of)150 3010 y(concern.)286 3222 y Fk(\017)46 b Fp(Large)38 b(executable)h (size)e(due)g(to)h(the)g(man)m(y)f(functions)f(in)h Fl(MPI)g Fp(and)g(their)f(in)m(terdep)s(endence)377 3335 y(in)j(man)m(y)i (cases.)71 b(\(I.e.,)44 b(em)m(b)s(edded)39 b Fl(MPI)p Fp(/R)-8 b(T)40 b(ma)m(y)h(only)f(b)s(e)f(able)h(to)h(supp)s(ort)d(a)j (subset)f(of)377 3448 y Fl(MPI)p Fp(/R)-8 b(T)31 b(functionalit)m(y)-8 b(.\))286 3636 y Fk(\017)46 b Fp(The)25 b(amoun)m(t)h(of)f(bu\013er)f (space)i(on)f(the)h(receiv)m(er)g(side.)38 b(\(I.e.,)27 b(the)f(illusion)21 b(of)26 b(in\014nite)d(slac)m(k)i(ma)m(y)377 3748 y(b)s(e)30 b(particularly)e(un)m(tenable.\))286 3936 y Fk(\017)46 b Fp(The)c(amoun)m(t)h(of)g(bu\013er)f(space)h(on)f (the)h(sender)f(side.)76 b(\(I.e.,)47 b(the)c(abilit)m(y)e(to)j(pac)m (k)f(deriv)m(ed)377 4049 y(datat)m(yp)s(es)31 b(ma)m(y)g(b)s(e)f (restricted.\))332 4262 y(As)24 b(a)h(result,)g(w)m(e)h(recommend)e (that)h(only)f(a)h(core)g(set)h(of)e Fl(MPI)p Fp(/R)-8 b(T)25 b(functionalit)m(y)e(b)s(e)h(required)f(for)150 4374 y(em)m(b)s(edded)28 b Fl(MPI)p Fp(/R)-8 b(T.)30 b(\(Exactly)f(whic)m(h)f(routines)g(should)f(b)s(e)h(preserv)m(ed)h (remains)f(to)i(b)s(e)e(discussed.\))150 4487 y(In)23 b(fact,)j(b)s(ecause)d(bu\013er)g(space)h(ma)m(y)g(b)s(e)f(limited)e (or)j(nonexisten)m(t,)h(the)e(user)g(should)f(only)g(exp)s(ect)i(that) 150 4600 y(the)29 b(sync)m(hronous)f(and)h(ready)g(send)f(op)s (erations)g(are)i(a)m(v)-5 b(ailable)28 b(\(these)i(routines)e(require) g(no)h(explicit)150 4713 y(bu\013er)e(space)j(at)f(the)f(receiv)m(er\)) i(and)e(that)h(only)e(the)i Fl(MPI)p 2171 4713 28 4 v 33 w(BYTE)f Fp(and)f Fl(MPI)p 2807 4713 V 33 w(P)-8 b(A)m(CKED)29 b Fp(datat)m(yp)s(es)h(are)150 4826 y(pro)m(vided)h(\(neither)h (requires)g(bu\013er)f(space)j(at)f(the)g(sender)f(or)h(the)g(receiv)m (er\).)48 b(The)33 b(com)m(bination)f(of)150 4939 y(these)27 b(t)m(w)m(o)g(restrictions)f(w)m(ould)f(seem)h(to)i(completely)e (eliminate)e(the)j(need)f(for)g(bu\013er)f(space)i(\(except,)150 5052 y(p)s(erhaps,)e(for)h(the)f(case)i(of)f(collectiv)m(e)g(comm)m (unication,)h(whic)m(h)d(ma)m(y)i(require)f(space)h(for)f(in)m (termediate)150 5165 y(v)-5 b(alues\).)71 b(Alternativ)m(ely)-8 b(,)43 b(the)e(user)f(could)g(b)s(e)f(exp)s(ected)i(to)h(pro)m(vide)d (bu\013er)h(space)h(explicitly)d(via)150 5278 y(routines)26 b(suc)m(h)g(as)h Fl(MPI)p 973 5278 V 33 w(BUFFER)p 1347 5278 V 31 w(A)-8 b(TT)g(A)m(CH)28 b Fp(and)e(b)s(e)g(restricted)g(to)i (using)d(bu\013ered)h(send)g(op)s(erations)150 5391 y(\(as)k(w)m(ell)e (as)i(sync)m(hronous)e(and)h(ready)g(ones\).)41 b(Also,)30 b(direct)f(memory)g(transfer)g(b)s(et)m(w)m(een)h(source)g(and)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 19 20 bop 150 -200 a Fh(8.10.)73 b(ISSUES)28 b(ON)i(EMBEDDED)i(SYSTEMS) 1734 b Fp(19)150 99 y(destination)33 b(bu\013ers)g(ma)m(y)i(b)s(e)e (implemen)m(table)f(only)i(when)f(the)h(source)g(of)h(a)f(message)h(is) e(explicitly)150 211 y(sp)s(eci\014ed)c(in)g(a)h(receiv)m(e)i(call,)e (so)g(the)h(use)f(of)g Fl(MPI)p 1885 211 28 4 v 33 w(ANY)p 2104 211 V 32 w(SOURCE)g Fp(ma)m(y)h(b)s(e)e(precluded.)332 324 y(As)g(a)h(result,)e(w)m(e)i(recommend)f(the)g(follo)m(wing)f (subset)g(of)i(MPI-1)f(functionalit)m(y)f(b)s(e)h(retained)f(for)150 437 y(an)i(em)m(b)s(edded)g Fj(pr)-5 b(o\014le)32 b Fp(of)e Fl(MPI)p Fp(/R)-8 b(T:)286 650 y Fk(\017)46 b Fp(MPI)p 560 650 V 33 w(INIT\(\))286 837 y Fk(\017)g Fp(MPI)p 560 837 V 33 w(FINALIZE\(\))286 1025 y Fk(\017)g Fp(MPI)p 560 1025 V 33 w(COMM)p 896 1025 V 33 w(RANK\(\))286 1213 y Fk(\017)g Fp(MPI)p 560 1213 V 33 w(COMM)p 896 1213 V 33 w(SIZE\(\))286 1400 y Fk(\017)g Fp(MPI)p 560 1400 V 33 w(SEND\(\))286 1588 y Fk(\017)g Fp(MPI)p 560 1588 V 33 w(ISEND\(\))286 1776 y Fk(\017)g Fp(MPI)p 560 1776 V 33 w(RECV\(\))286 1963 y Fk(\017)g Fp(MPI)p 560 1963 V 33 w(IRECV\(\))286 2151 y Fk(\017)g Fp(MPI)p 560 2151 V 33 w(BCAST\(\))286 2338 y Fk(\017)g Fp(MPI)p 560 2338 V 33 w(GA)-8 b(THER\(\))332 2551 y(These)32 b(ten)h(function)f(calls,)g (supp)s(orting)f(only)h(elemen)m(tal)h(MPI)f(datat)m(yp)s(es,)j(pro)m (vide)c(su\016cien)m(t)150 2664 y(co)m(v)m(er)k(for)e(a)h(wide)e(v)-5 b(ariet)m(y)34 b(of)f(parallel)f(programming)g(paradigms,)h(without)f (requiring)f(the)i(library)150 2777 y(o)m(v)m(erhead)f(of)e(deriv)m(ed) g(datat)m(yp)s(es)h(and)e(top)s(ologies.)332 2890 y(F)-8 b(rom)37 b(our)f(exp)s(erimen)m(ts)f(with)g(the)i(MSU)f(eMPI)h(pro)5 b(ject,)39 b(w)m(e)e(feel)f(that)h(w)m(e)g(can)f(incorp)s(orate)150 3003 y(all)28 b(of)i(this)e(functionalit)m(y)g(in)g(less)h(than)g(5K)g (b)m(ytes,)h(not)g(including)c(the)k(device)f(dep)s(enden)m(t)f(soft)m (w)m(are.)150 3116 y(Ev)m(en)40 b(with)e(a)i(lib)s(eral)c(allo)m(w)m (ance)41 b(of)e(co)s(de)h(for)f(device)h(driv)m(ers,)g(the)g(resulting) e(eMPI)h(library)f(will)150 3228 y(easily)30 b(\014t)g(within)d(a)k (standard)f(R)m(OM)h(or)f(FLASH)g(device.)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop end userdict /end-hook known{end-hook}if --465c_28e8-4f8b_50a0-47b_49a1--